From 4dd791398e6493e4810939eebdaf2b15ed9f91c2 Mon Sep 17 00:00:00 2001 From: tjwei Date: Wed, 9 Aug 2017 10:01:51 +0800 Subject: [PATCH] init --- .gitignore | 1 + buildall_asmjs | 25 + buildall_clang | 19 + buildall_wasm | 23 + gui/.deps/AboutDlg.Po | 1826 +++ gui/.deps/Cheat.Po | 1848 +++ gui/.deps/ConfDlg.Po | 1888 +++ gui/.deps/Config.Po | 232 + gui/.deps/DebugMemory.Po | 1839 +++ gui/.deps/Gtk2Gui.Po | 304 + gui/.deps/LnxMain.Po | 309 + gui/.deps/MemcardDlg.Po | 1950 +++ gui/.deps/Plugin.Po | 297 + gui/AboutDlg.c | 109 + gui/AboutDlg.h | 24 + gui/Cheat.c | 1176 ++ gui/Cheat.h | 25 + gui/ConfDlg.c | 889 + gui/ConfDlg.h | 50 + gui/Config.c | 180 + gui/DebugMemory.c | 312 + gui/DebugMemory.h | 24 + gui/Gtk2Gui.c | 66 + gui/Linux.h | 59 + gui/LnxMain.c | 165 + gui/MemcardDlg.c | 755 + gui/MemcardDlg.h | 24 + gui/Plugin.c | 122 + gui/nopic.h | 1345 ++ include/config.h | 123 + include/config.h.in | 122 + include/config.h.in~ | 122 + include/stamp-h1 | 1 + libpcsxcore/.deps/cdriso.Po | 255 + libpcsxcore/.deps/cdrom.Po | 256 + libpcsxcore/.deps/cheat.Po | 251 + libpcsxcore/.deps/debug.Po | 251 + libpcsxcore/.deps/decode_xa.Po | 225 + libpcsxcore/.deps/disr3000a.Po | 249 + libpcsxcore/.deps/gte.Po | 254 + libpcsxcore/.deps/iR3000A-64.Po | 282 + libpcsxcore/.deps/iR3000A.Po | 1 + libpcsxcore/.deps/ix86-64.Po | 228 + libpcsxcore/.deps/ix86.Po | 1 + libpcsxcore/.deps/ix86_3dnow.Po | 230 + libpcsxcore/.deps/ix86_cpudetect.Po | 247 + libpcsxcore/.deps/ix86_fpu.Po | 229 + libpcsxcore/.deps/ix86_mmx.Po | 229 + libpcsxcore/.deps/ix86_sse.Po | 229 + libpcsxcore/.deps/mdec.Po | 256 + libpcsxcore/.deps/misc.Po | 261 + libpcsxcore/.deps/pR3000A.Po | 1 + libpcsxcore/.deps/plugins.Po | 252 + libpcsxcore/.deps/ppc.Po | 1 + libpcsxcore/.deps/ppf.Po | 256 + libpcsxcore/.deps/psxbios.Po | 254 + libpcsxcore/.deps/psxcommon.Po | 253 + libpcsxcore/.deps/psxcounters.Po | 249 + libpcsxcore/.deps/psxdma.Po | 254 + libpcsxcore/.deps/psxhle.Po | 252 + libpcsxcore/.deps/psxhw.Po | 259 + libpcsxcore/.deps/psxinterpreter.Po | 254 + libpcsxcore/.deps/psxmem.Po | 260 + libpcsxcore/.deps/r3000a.Po | 261 + libpcsxcore/.deps/reguse.Po | 1 + libpcsxcore/.deps/sio.Po | 255 + libpcsxcore/.deps/socket.Po | 304 + libpcsxcore/.deps/spu.Po | 249 + libpcsxcore/cdriso.c | 894 + libpcsxcore/cdriso.h | 34 + libpcsxcore/cdrom.c | 1138 ++ libpcsxcore/cdrom.h | 110 + libpcsxcore/cheat.c | 1024 ++ libpcsxcore/cheat.h | 117 + libpcsxcore/coff.h | 38 + libpcsxcore/debug.c | 1145 ++ libpcsxcore/debug.h | 72 + libpcsxcore/decode_xa.c | 367 + libpcsxcore/decode_xa.h | 49 + libpcsxcore/disr3000a.c | 330 + libpcsxcore/gte.c | 904 ++ libpcsxcore/gte.h | 65 + libpcsxcore/gte_divider.h | 4133 +++++ libpcsxcore/mdec.c | 565 + libpcsxcore/mdec.h | 45 + libpcsxcore/misc.c | 736 + libpcsxcore/misc.h | 77 + libpcsxcore/plugins.c | 281 + libpcsxcore/plugins.h | 350 + libpcsxcore/ppf.c | 332 + libpcsxcore/ppf.h | 33 + libpcsxcore/psemu_plugin_defs.h | 285 + libpcsxcore/psxbios.c | 2802 ++++ libpcsxcore/psxbios.h | 51 + libpcsxcore/psxcommon.c | 80 + libpcsxcore/psxcommon.h | 173 + libpcsxcore/psxcounters.c | 475 + libpcsxcore/psxcounters.h | 50 + libpcsxcore/psxdma.c | 174 + libpcsxcore/psxdma.h | 60 + libpcsxcore/psxhle.c | 96 + libpcsxcore/psxhle.h | 36 + libpcsxcore/psxhw.c | 741 + libpcsxcore/psxhw.h | 78 + libpcsxcore/psxinterpreter.c | 822 + libpcsxcore/psxmem.c | 351 + libpcsxcore/psxmem.h | 144 + libpcsxcore/r3000a.c | 202 + libpcsxcore/r3000a.h | 246 + libpcsxcore/sio.c | 732 + libpcsxcore/sio.h | 76 + libpcsxcore/sjisfont.h | 13505 ++++++++++++++++ libpcsxcore/socket.c | 254 + libpcsxcore/socket.h | 43 + libpcsxcore/spu.c | 28 + libpcsxcore/spu.h | 47 + libpcsxcore/system.h | 44 + plugins/dfxvideo/.deps/cfg.Plo | 210 + plugins/dfxvideo/.deps/draw.Plo | 227 + plugins/dfxvideo/.deps/fps.Plo | 204 + plugins/dfxvideo/.deps/gpu.Plo | 214 + plugins/dfxvideo/.deps/key.Plo | 192 + plugins/dfxvideo/.deps/main.Po | 1854 +++ plugins/dfxvideo/.deps/menu.Plo | 191 + plugins/dfxvideo/.deps/prim.Plo | 193 + plugins/dfxvideo/.deps/soft.Plo | 196 + plugins/dfxvideo/.deps/zn.Plo | 184 + plugins/dfxvideo/Makefile | 826 + plugins/dfxvideo/Makefile.am | 36 + plugins/dfxvideo/Makefile.in | 826 + plugins/dfxvideo/cfg.c | 293 + plugins/dfxvideo/cfg.h | 28 + plugins/dfxvideo/draw.backup.c | 2047 +++ plugins/dfxvideo/draw.c | 275 + plugins/dfxvideo/draw.h | 46 + plugins/dfxvideo/externals.h | 307 + plugins/dfxvideo/fps.c | 357 + plugins/dfxvideo/fps.h | 31 + plugins/dfxvideo/gpu.c | 1560 ++ plugins/dfxvideo/gpu.h | 60 + plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2 | 625 + plugins/dfxvideo/gpucfg-0.1df/main.c | 464 + plugins/dfxvideo/hq2x.h | 1870 +++ plugins/dfxvideo/hq3x.h | 2970 ++++ plugins/dfxvideo/i386.asm | 67 + plugins/dfxvideo/interp.h | 298 + plugins/dfxvideo/key.c | 96 + plugins/dfxvideo/key.h | 24 + plugins/dfxvideo/macros.inc | 40 + plugins/dfxvideo/menu.c | 167 + plugins/dfxvideo/menu.h | 27 + plugins/dfxvideo/prim.c | 1658 ++ plugins/dfxvideo/prim.h | 24 + plugins/dfxvideo/soft.c | 8485 ++++++++++ plugins/dfxvideo/soft.h | 42 + plugins/dfxvideo/soft_modified.c | 8521 ++++++++++ plugins/dfxvideo/swap.h | 45 + plugins/dfxvideo/zn.c | 256 + plugins/nullspu/register.h | 121 + plugins/nullspu/spunull.c | 510 + plugins/nullspu/xa.h | 22 + plugins/sdlinput/analog.c | 183 + plugins/sdlinput/cfg-gtk2.c | 738 + plugins/sdlinput/cfg.c | 347 + plugins/sdlinput/pad.c | 355 + plugins/sdlinput/pad.h | 187 + plugins/sdlinput/sdljoy.c | 131 + plugins/sdlinput/xkb.c | 79 + shell.html | 280 + 169 files changed, 97226 insertions(+) create mode 100755 buildall_asmjs create mode 100755 buildall_clang create mode 100755 buildall_wasm create mode 100644 gui/.deps/AboutDlg.Po create mode 100644 gui/.deps/Cheat.Po create mode 100644 gui/.deps/ConfDlg.Po create mode 100644 gui/.deps/Config.Po create mode 100644 gui/.deps/DebugMemory.Po create mode 100644 gui/.deps/Gtk2Gui.Po create mode 100644 gui/.deps/LnxMain.Po create mode 100644 gui/.deps/MemcardDlg.Po create mode 100644 gui/.deps/Plugin.Po create mode 100644 gui/AboutDlg.c create mode 100644 gui/AboutDlg.h create mode 100644 gui/Cheat.c create mode 100644 gui/Cheat.h create mode 100644 gui/ConfDlg.c create mode 100644 gui/ConfDlg.h create mode 100644 gui/Config.c create mode 100644 gui/DebugMemory.c create mode 100644 gui/DebugMemory.h create mode 100644 gui/Gtk2Gui.c create mode 100644 gui/Linux.h create mode 100644 gui/LnxMain.c create mode 100644 gui/MemcardDlg.c create mode 100644 gui/MemcardDlg.h create mode 100644 gui/Plugin.c create mode 100644 gui/nopic.h create mode 100644 include/config.h create mode 100644 include/config.h.in create mode 100644 include/config.h.in~ create mode 100644 include/stamp-h1 create mode 100644 libpcsxcore/.deps/cdriso.Po create mode 100644 libpcsxcore/.deps/cdrom.Po create mode 100644 libpcsxcore/.deps/cheat.Po create mode 100644 libpcsxcore/.deps/debug.Po create mode 100644 libpcsxcore/.deps/decode_xa.Po create mode 100644 libpcsxcore/.deps/disr3000a.Po create mode 100644 libpcsxcore/.deps/gte.Po create mode 100644 libpcsxcore/.deps/iR3000A-64.Po create mode 100644 libpcsxcore/.deps/iR3000A.Po create mode 100644 libpcsxcore/.deps/ix86-64.Po create mode 100644 libpcsxcore/.deps/ix86.Po create mode 100644 libpcsxcore/.deps/ix86_3dnow.Po create mode 100644 libpcsxcore/.deps/ix86_cpudetect.Po create mode 100644 libpcsxcore/.deps/ix86_fpu.Po create mode 100644 libpcsxcore/.deps/ix86_mmx.Po create mode 100644 libpcsxcore/.deps/ix86_sse.Po create mode 100644 libpcsxcore/.deps/mdec.Po create mode 100644 libpcsxcore/.deps/misc.Po create mode 100644 libpcsxcore/.deps/pR3000A.Po create mode 100644 libpcsxcore/.deps/plugins.Po create mode 100644 libpcsxcore/.deps/ppc.Po create mode 100644 libpcsxcore/.deps/ppf.Po create mode 100644 libpcsxcore/.deps/psxbios.Po create mode 100644 libpcsxcore/.deps/psxcommon.Po create mode 100644 libpcsxcore/.deps/psxcounters.Po create mode 100644 libpcsxcore/.deps/psxdma.Po create mode 100644 libpcsxcore/.deps/psxhle.Po create mode 100644 libpcsxcore/.deps/psxhw.Po create mode 100644 libpcsxcore/.deps/psxinterpreter.Po create mode 100644 libpcsxcore/.deps/psxmem.Po create mode 100644 libpcsxcore/.deps/r3000a.Po create mode 100644 libpcsxcore/.deps/reguse.Po create mode 100644 libpcsxcore/.deps/sio.Po create mode 100644 libpcsxcore/.deps/socket.Po create mode 100644 libpcsxcore/.deps/spu.Po create mode 100644 libpcsxcore/cdriso.c create mode 100644 libpcsxcore/cdriso.h create mode 100644 libpcsxcore/cdrom.c create mode 100644 libpcsxcore/cdrom.h create mode 100644 libpcsxcore/cheat.c create mode 100644 libpcsxcore/cheat.h create mode 100644 libpcsxcore/coff.h create mode 100644 libpcsxcore/debug.c create mode 100644 libpcsxcore/debug.h create mode 100644 libpcsxcore/decode_xa.c create mode 100644 libpcsxcore/decode_xa.h create mode 100644 libpcsxcore/disr3000a.c create mode 100644 libpcsxcore/gte.c create mode 100644 libpcsxcore/gte.h create mode 100644 libpcsxcore/gte_divider.h create mode 100644 libpcsxcore/mdec.c create mode 100644 libpcsxcore/mdec.h create mode 100644 libpcsxcore/misc.c create mode 100644 libpcsxcore/misc.h create mode 100644 libpcsxcore/plugins.c create mode 100644 libpcsxcore/plugins.h create mode 100644 libpcsxcore/ppf.c create mode 100644 libpcsxcore/ppf.h create mode 100644 libpcsxcore/psemu_plugin_defs.h create mode 100644 libpcsxcore/psxbios.c create mode 100644 libpcsxcore/psxbios.h create mode 100644 libpcsxcore/psxcommon.c create mode 100644 libpcsxcore/psxcommon.h create mode 100644 libpcsxcore/psxcounters.c create mode 100644 libpcsxcore/psxcounters.h create mode 100644 libpcsxcore/psxdma.c create mode 100644 libpcsxcore/psxdma.h create mode 100644 libpcsxcore/psxhle.c create mode 100644 libpcsxcore/psxhle.h create mode 100644 libpcsxcore/psxhw.c create mode 100644 libpcsxcore/psxhw.h create mode 100644 libpcsxcore/psxinterpreter.c create mode 100644 libpcsxcore/psxmem.c create mode 100644 libpcsxcore/psxmem.h create mode 100644 libpcsxcore/r3000a.c create mode 100644 libpcsxcore/r3000a.h create mode 100644 libpcsxcore/sio.c create mode 100644 libpcsxcore/sio.h create mode 100644 libpcsxcore/sjisfont.h create mode 100644 libpcsxcore/socket.c create mode 100644 libpcsxcore/socket.h create mode 100644 libpcsxcore/spu.c create mode 100644 libpcsxcore/spu.h create mode 100644 libpcsxcore/system.h create mode 100644 plugins/dfxvideo/.deps/cfg.Plo create mode 100644 plugins/dfxvideo/.deps/draw.Plo create mode 100644 plugins/dfxvideo/.deps/fps.Plo create mode 100644 plugins/dfxvideo/.deps/gpu.Plo create mode 100644 plugins/dfxvideo/.deps/key.Plo create mode 100644 plugins/dfxvideo/.deps/main.Po create mode 100644 plugins/dfxvideo/.deps/menu.Plo create mode 100644 plugins/dfxvideo/.deps/prim.Plo create mode 100644 plugins/dfxvideo/.deps/soft.Plo create mode 100644 plugins/dfxvideo/.deps/zn.Plo create mode 100644 plugins/dfxvideo/Makefile create mode 100644 plugins/dfxvideo/Makefile.am create mode 100644 plugins/dfxvideo/Makefile.in create mode 100644 plugins/dfxvideo/cfg.c create mode 100644 plugins/dfxvideo/cfg.h create mode 100644 plugins/dfxvideo/draw.backup.c create mode 100644 plugins/dfxvideo/draw.c create mode 100644 plugins/dfxvideo/draw.h create mode 100644 plugins/dfxvideo/externals.h create mode 100644 plugins/dfxvideo/fps.c create mode 100644 plugins/dfxvideo/fps.h create mode 100644 plugins/dfxvideo/gpu.c create mode 100644 plugins/dfxvideo/gpu.h create mode 100644 plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2 create mode 100644 plugins/dfxvideo/gpucfg-0.1df/main.c create mode 100644 plugins/dfxvideo/hq2x.h create mode 100644 plugins/dfxvideo/hq3x.h create mode 100644 plugins/dfxvideo/i386.asm create mode 100644 plugins/dfxvideo/interp.h create mode 100644 plugins/dfxvideo/key.c create mode 100644 plugins/dfxvideo/key.h create mode 100644 plugins/dfxvideo/macros.inc create mode 100644 plugins/dfxvideo/menu.c create mode 100644 plugins/dfxvideo/menu.h create mode 100644 plugins/dfxvideo/prim.c create mode 100644 plugins/dfxvideo/prim.h create mode 100644 plugins/dfxvideo/soft.c create mode 100644 plugins/dfxvideo/soft.h create mode 100644 plugins/dfxvideo/soft_modified.c create mode 100644 plugins/dfxvideo/swap.h create mode 100644 plugins/dfxvideo/zn.c create mode 100644 plugins/nullspu/register.h create mode 100644 plugins/nullspu/spunull.c create mode 100644 plugins/nullspu/xa.h create mode 100644 plugins/sdlinput/analog.c create mode 100644 plugins/sdlinput/cfg-gtk2.c create mode 100644 plugins/sdlinput/cfg.c create mode 100644 plugins/sdlinput/pad.c create mode 100644 plugins/sdlinput/pad.h create mode 100644 plugins/sdlinput/sdljoy.c create mode 100644 plugins/sdlinput/xkb.c create mode 100644 shell.html diff --git a/.gitignore b/.gitignore index c6127b3..affa0a0 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,4 @@ modules.order Module.symvers Mkfile.old dkms.conf +/pcsx* diff --git a/buildall_asmjs b/buildall_asmjs new file mode 100755 index 0000000..7683d52 --- /dev/null +++ b/buildall_asmjs @@ -0,0 +1,25 @@ +# for debugging +emcc -O0 -g4 --js-opts 0 -Wpointer-sign -Wno-unused-result -o pcsx_asmjs.html \ +-s SAFE_HEAP=1 -s USE_ZLIB=1 -s ASSERTIONS=2 -D ASMJS_HACK \ +--shell-file shell.html \ +-s EXPORTED_FUNCTIONS="['_main', '_run']" \ +-s TOTAL_MEMORY=536870912 -s STACK_OVERFLOW_CHECK=1 \ +-I./include -I./libpcsxcore \ +gui/LnxMain.c gui/Plugin.c gui/Config.c \ +libpcsxcore/psxbios.c libpcsxcore/cdrom.c libpcsxcore/psxcounters.c \ +libpcsxcore/psxdma.c libpcsxcore/disr3000a.c libpcsxcore/spu.c libpcsxcore/sio.c \ +libpcsxcore/psxhw.c libpcsxcore/mdec.c libpcsxcore/psxmem.c libpcsxcore/misc.c \ +libpcsxcore/plugins.c libpcsxcore/decode_xa.c libpcsxcore/r3000a.c libpcsxcore/psxinterpreter.c \ +libpcsxcore/gte.c libpcsxcore/psxhle.c libpcsxcore/psxcommon.c \ +libpcsxcore/cdriso.c libpcsxcore/ppf.c \ +plugins/dfxvideo/cfg.c plugins/dfxvideo/fps.c plugins/dfxvideo/key.c \ +plugins/dfxvideo/prim.c plugins/dfxvideo/zn.c plugins/dfxvideo/draw.c \ +plugins/dfxvideo/gpu.c plugins/dfxvideo/soft_modified.c \ +plugins/nullspu/spunull.c \ +plugins/sdlinput/cfg.c plugins/sdlinput/pad.c plugins/sdlinput/xkb.c \ +plugins/sdlinput/sdljoy.c plugins/sdlinput/analog.c \ + -lm -lSDL + +# plugins/nullspu/spunull.c \ +#plugins/dfsound/sdl.c plugins/dfsound/dma.c plugins/dfsound/freeze.c plugins/dfsound/cfg.c \ +#plugins/dfsound/spu.c plugins/dfsound/xa.c plugins/dfsound/registers.c \ \ No newline at end of file diff --git a/buildall_clang b/buildall_clang new file mode 100755 index 0000000..373468b --- /dev/null +++ b/buildall_clang @@ -0,0 +1,19 @@ +clang -g -Wpointer-sign -Wno-unused-result -O2 -o pcsx_clang -I./include -I./libpcsxcore \ +gui/LnxMain.c gui/Plugin.c gui/Config.c \ +libpcsxcore/psxbios.c libpcsxcore/cdrom.c libpcsxcore/psxcounters.c \ +libpcsxcore/psxdma.c libpcsxcore/disr3000a.c libpcsxcore/spu.c libpcsxcore/sio.c \ +libpcsxcore/psxhw.c libpcsxcore/mdec.c libpcsxcore/psxmem.c libpcsxcore/misc.c \ +libpcsxcore/plugins.c libpcsxcore/decode_xa.c libpcsxcore/r3000a.c libpcsxcore/psxinterpreter.c \ +libpcsxcore/gte.c libpcsxcore/psxhle.c libpcsxcore/psxcommon.c \ +libpcsxcore/cdriso.c libpcsxcore/ppf.c \ +plugins/dfxvideo/cfg.c plugins/dfxvideo/fps.c plugins/dfxvideo/key.c \ +plugins/dfxvideo/prim.c plugins/dfxvideo/zn.c plugins/dfxvideo/draw.c \ +plugins/dfxvideo/gpu.c plugins/dfxvideo/soft_modified.c \ +plugins/nullspu/spunull.c \ +plugins/sdlinput/cfg.c plugins/sdlinput/pad.c plugins/sdlinput/xkb.c \ +plugins/sdlinput/sdljoy.c plugins/sdlinput/analog.c \ + -lm -lSDL + +# plugins/nullspu/spunull.c \ +#plugins/dfsound/sdl.c plugins/dfsound/dma.c plugins/dfsound/freeze.c plugins/dfsound/cfg.c \ +#plugins/dfsound/spu.c plugins/dfsound/xa.c plugins/dfsound/registers.c \ \ No newline at end of file diff --git a/buildall_wasm b/buildall_wasm new file mode 100755 index 0000000..b603402 --- /dev/null +++ b/buildall_wasm @@ -0,0 +1,23 @@ +emcc -O3 -Wno-unused-result -o pcsx.html \ + -s USE_ZLIB=1 -s AGGRESSIVE_VARIABLE_ELIMINATION=1 \ +-s TOTAL_MEMORY=536870912 --llvm-lto 1 -s WASM=1 --shell-file shell.html \ +-s EXPORTED_FUNCTIONS="['_main', '_run']" \ +-I./include -I./libpcsxcore \ +gui/LnxMain.c gui/Plugin.c gui/Config.c \ +libpcsxcore/psxbios.c libpcsxcore/cdrom.c libpcsxcore/psxcounters.c \ +libpcsxcore/psxdma.c libpcsxcore/disr3000a.c libpcsxcore/spu.c libpcsxcore/sio.c \ +libpcsxcore/psxhw.c libpcsxcore/mdec.c libpcsxcore/psxmem.c libpcsxcore/misc.c \ +libpcsxcore/plugins.c libpcsxcore/decode_xa.c libpcsxcore/r3000a.c libpcsxcore/psxinterpreter.c \ +libpcsxcore/gte.c libpcsxcore/psxhle.c libpcsxcore/psxcommon.c \ +libpcsxcore/cdriso.c libpcsxcore/ppf.c \ +plugins/dfxvideo/cfg.c plugins/dfxvideo/fps.c plugins/dfxvideo/key.c \ +plugins/dfxvideo/prim.c plugins/dfxvideo/zn.c plugins/dfxvideo/draw.c \ +plugins/dfxvideo/gpu.c plugins/dfxvideo/soft_modified.c \ +plugins/nullspu/spunull.c \ +plugins/sdlinput/cfg.c plugins/sdlinput/pad.c plugins/sdlinput/xkb.c \ +plugins/sdlinput/sdljoy.c plugins/sdlinput/analog.c \ + -lm -lSDL + +# plugins/nullspu/spunull.c \ +#plugins/dfsound/sdl.c plugins/dfsound/dma.c plugins/dfsound/freeze.c plugins/dfsound/cfg.c \ +#plugins/dfsound/spu.c plugins/dfsound/xa.c plugins/dfsound/registers.c \ \ No newline at end of file diff --git a/gui/.deps/AboutDlg.Po b/gui/.deps/AboutDlg.Po new file mode 100644 index 0000000..85b6030 --- /dev/null +++ b/gui/.deps/AboutDlg.Po @@ -0,0 +1,1826 @@ +AboutDlg.o: AboutDlg.c /usr/include/stdc-predef.h Linux.h \ + ../include/config.h ../libpcsxcore/psxcommon.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/bits/string.h /usr/include/bits/string2.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/stdlib.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h /usr/include/zconf.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/getopt.h \ + ../libpcsxcore/system.h ../libpcsxcore/debug.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/gtk-2.0/gtk/gtk.h /usr/include/gtk-2.0/gdk/gdk.h \ + /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h \ + /usr/include/glib-2.0/gio/gio.h /usr/include/glib-2.0/gio/giotypes.h \ + /usr/include/glib-2.0/gio/gioenums.h /usr/include/glib-2.0/glib-object.h \ + /usr/include/glib-2.0/gobject/gbinding.h /usr/include/glib-2.0/glib.h \ + /usr/include/glib-2.0/glib/galloca.h /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib64/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include/float.h \ + /usr/include/glib-2.0/glib/gversionmacros.h \ + /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gasyncqueue.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gatomic.h /usr/include/glib-2.0/glib/gerror.h \ + /usr/include/glib-2.0/glib/gquark.h \ + /usr/include/glib-2.0/glib/gbacktrace.h /usr/include/signal.h \ + /usr/include/bits/signum.h /usr/include/bits/siginfo.h \ + /usr/include/bits/sigaction.h /usr/include/bits/sigcontext.h \ + /usr/include/bits/sigstack.h /usr/include/sys/ucontext.h \ + /usr/include/bits/sigthread.h /usr/include/glib-2.0/glib/gbase64.h \ + /usr/include/glib-2.0/glib/gbitlock.h \ + /usr/include/glib-2.0/glib/gbookmarkfile.h \ + /usr/include/glib-2.0/glib/gbytes.h \ + /usr/include/glib-2.0/glib/gcharset.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ + /usr/include/glib-2.0/glib/gdatetime.h \ + /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ + /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/glib-2.0/glib/genviron.h \ + /usr/include/glib-2.0/glib/gfileutils.h \ + /usr/include/glib-2.0/glib/ggettext.h /usr/include/glib-2.0/glib/ghash.h \ + /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/ghmac.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/ghook.h \ + /usr/include/glib-2.0/glib/ghostutils.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ + /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gutils.h \ + /usr/include/glib-2.0/glib/gkeyfile.h \ + /usr/include/glib-2.0/glib/gmappedfile.h \ + /usr/include/glib-2.0/glib/gmarkup.h \ + /usr/include/glib-2.0/glib/gmessages.h \ + /usr/include/glib-2.0/glib/goption.h \ + /usr/include/glib-2.0/glib/gpattern.h \ + /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ + /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ + /usr/include/glib-2.0/glib/gregex.h \ + /usr/include/glib-2.0/glib/gscanner.h \ + /usr/include/glib-2.0/glib/gsequence.h \ + /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gslice.h \ + /usr/include/glib-2.0/glib/gspawn.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h \ + /usr/include/glib-2.0/glib/gstringchunk.h \ + /usr/include/glib-2.0/glib/gtestutils.h \ + /usr/include/glib-2.0/glib/gthreadpool.h \ + /usr/include/glib-2.0/glib/gtimer.h \ + /usr/include/glib-2.0/glib/gtrashstack.h \ + /usr/include/glib-2.0/glib/gtree.h \ + /usr/include/glib-2.0/glib/gurifuncs.h \ + /usr/include/glib-2.0/glib/gvarianttype.h \ + /usr/include/glib-2.0/glib/gvariant.h \ + /usr/include/glib-2.0/glib/gversion.h \ + /usr/include/glib-2.0/glib/deprecated/gallocator.h \ + /usr/include/glib-2.0/glib/deprecated/gcache.h \ + /usr/include/glib-2.0/glib/deprecated/gcompletion.h \ + /usr/include/glib-2.0/glib/deprecated/gmain.h \ + /usr/include/glib-2.0/glib/deprecated/grel.h \ + /usr/include/glib-2.0/glib/deprecated/gthread.h /usr/include/pthread.h \ + /usr/include/sched.h /usr/include/bits/sched.h \ + /usr/include/bits/setjmp.h /usr/include/glib-2.0/gobject/gobject.h \ + /usr/include/glib-2.0/gobject/gtype.h \ + /usr/include/glib-2.0/gobject/gvalue.h \ + /usr/include/glib-2.0/gobject/gparam.h \ + /usr/include/glib-2.0/gobject/gclosure.h \ + /usr/include/glib-2.0/gobject/gsignal.h \ + /usr/include/glib-2.0/gobject/gmarshal.h \ + /usr/include/glib-2.0/gobject/gboxed.h \ + /usr/include/glib-2.0/gobject/glib-types.h \ + /usr/include/glib-2.0/gobject/genums.h \ + /usr/include/glib-2.0/gobject/gparamspecs.h \ + /usr/include/glib-2.0/gobject/gsourceclosure.h \ + /usr/include/glib-2.0/gobject/gtypemodule.h \ + /usr/include/glib-2.0/gobject/gtypeplugin.h \ + /usr/include/glib-2.0/gobject/gvaluearray.h \ + /usr/include/glib-2.0/gobject/gvaluetypes.h \ + /usr/include/glib-2.0/gio/gaction.h \ + /usr/include/glib-2.0/gio/gactiongroup.h \ + /usr/include/glib-2.0/gio/gactiongroupexporter.h \ + /usr/include/glib-2.0/gio/gactionmap.h \ + /usr/include/glib-2.0/gio/gappinfo.h \ + /usr/include/glib-2.0/gio/gapplication.h \ + /usr/include/glib-2.0/gio/gapplicationcommandline.h \ + /usr/include/glib-2.0/gio/gasyncinitable.h \ + /usr/include/glib-2.0/gio/ginitable.h \ + /usr/include/glib-2.0/gio/gasyncresult.h \ + /usr/include/glib-2.0/gio/gbufferedinputstream.h \ + /usr/include/glib-2.0/gio/gfilterinputstream.h \ + /usr/include/glib-2.0/gio/ginputstream.h \ + /usr/include/glib-2.0/gio/gbufferedoutputstream.h \ + /usr/include/glib-2.0/gio/gfilteroutputstream.h \ + /usr/include/glib-2.0/gio/goutputstream.h \ + /usr/include/glib-2.0/gio/gbytesicon.h \ + /usr/include/glib-2.0/gio/gcancellable.h \ + /usr/include/glib-2.0/gio/gcharsetconverter.h \ + /usr/include/glib-2.0/gio/gconverter.h \ + /usr/include/glib-2.0/gio/gcontenttype.h \ + /usr/include/glib-2.0/gio/gconverterinputstream.h \ + /usr/include/glib-2.0/gio/gconverteroutputstream.h \ + /usr/include/glib-2.0/gio/gcredentials.h \ + /usr/include/glib-2.0/gio/gdatainputstream.h \ + /usr/include/glib-2.0/gio/gdataoutputstream.h \ + /usr/include/glib-2.0/gio/gdbusaddress.h \ + /usr/include/glib-2.0/gio/gdbusauthobserver.h \ + /usr/include/glib-2.0/gio/gdbusconnection.h \ + /usr/include/glib-2.0/gio/gdbuserror.h \ + /usr/include/glib-2.0/gio/gdbusintrospection.h \ + /usr/include/glib-2.0/gio/gdbusmessage.h \ + /usr/include/glib-2.0/gio/gdbusmethodinvocation.h \ + /usr/include/glib-2.0/gio/gdbusnameowning.h \ + /usr/include/glib-2.0/gio/gdbusnamewatching.h \ + /usr/include/glib-2.0/gio/gdbusproxy.h \ + /usr/include/glib-2.0/gio/gdbusserver.h \ + /usr/include/glib-2.0/gio/gdbusutils.h \ + /usr/include/glib-2.0/gio/gdrive.h \ + /usr/include/glib-2.0/gio/gemblemedicon.h \ + /usr/include/glib-2.0/gio/gicon.h /usr/include/glib-2.0/gio/gemblem.h \ + /usr/include/glib-2.0/gio/gfileattribute.h \ + /usr/include/glib-2.0/gio/gfileenumerator.h \ + /usr/include/glib-2.0/gio/gfile.h /usr/include/glib-2.0/gio/gfileicon.h \ + /usr/include/glib-2.0/gio/gfileinfo.h \ + /usr/include/glib-2.0/gio/gfileinputstream.h \ + /usr/include/glib-2.0/gio/gfileiostream.h \ + /usr/include/glib-2.0/gio/giostream.h \ + /usr/include/glib-2.0/gio/gioerror.h \ + /usr/include/glib-2.0/gio/gfilemonitor.h \ + /usr/include/glib-2.0/gio/gfilenamecompleter.h \ + /usr/include/glib-2.0/gio/gfileoutputstream.h \ + /usr/include/glib-2.0/gio/ginetaddress.h \ + /usr/include/glib-2.0/gio/ginetaddressmask.h \ + /usr/include/glib-2.0/gio/ginetsocketaddress.h \ + /usr/include/glib-2.0/gio/gsocketaddress.h \ + /usr/include/glib-2.0/gio/gioenumtypes.h \ + /usr/include/glib-2.0/gio/giomodule.h /usr/include/glib-2.0/gmodule.h \ + /usr/include/glib-2.0/gio/gioscheduler.h \ + /usr/include/glib-2.0/gio/gloadableicon.h \ + /usr/include/glib-2.0/gio/gmemoryinputstream.h \ + /usr/include/glib-2.0/gio/gmemoryoutputstream.h \ + /usr/include/glib-2.0/gio/gmount.h \ + /usr/include/glib-2.0/gio/gmountoperation.h \ + /usr/include/glib-2.0/gio/gnativevolumemonitor.h \ + /usr/include/glib-2.0/gio/gvolumemonitor.h \ + /usr/include/glib-2.0/gio/gnetworkaddress.h \ + /usr/include/glib-2.0/gio/gnetworkmonitor.h \ + /usr/include/glib-2.0/gio/gnetworkservice.h \ + /usr/include/glib-2.0/gio/gpermission.h \ + /usr/include/glib-2.0/gio/gpollableinputstream.h \ + /usr/include/glib-2.0/gio/gpollableoutputstream.h \ + /usr/include/glib-2.0/gio/gpollableutils.h \ + /usr/include/glib-2.0/gio/gpropertyaction.h \ + /usr/include/glib-2.0/gio/gproxy.h \ + /usr/include/glib-2.0/gio/gproxyaddress.h \ + /usr/include/glib-2.0/gio/gproxyaddressenumerator.h \ + /usr/include/glib-2.0/gio/gsocketaddressenumerator.h \ + /usr/include/glib-2.0/gio/gproxyresolver.h \ + /usr/include/glib-2.0/gio/gresolver.h \ + /usr/include/glib-2.0/gio/gresource.h \ + /usr/include/glib-2.0/gio/gseekable.h \ + /usr/include/glib-2.0/gio/gsettingsschema.h \ + /usr/include/glib-2.0/gio/gsettings.h \ + /usr/include/glib-2.0/gio/gsimpleaction.h \ + /usr/include/glib-2.0/gio/gsimpleactiongroup.h \ + /usr/include/glib-2.0/gio/gactiongroup.h \ + /usr/include/glib-2.0/gio/gactionmap.h \ + /usr/include/glib-2.0/gio/gsimpleasyncresult.h \ + /usr/include/glib-2.0/gio/gsimplepermission.h \ + /usr/include/glib-2.0/gio/gsocketclient.h \ + /usr/include/glib-2.0/gio/gsocketconnectable.h \ + /usr/include/glib-2.0/gio/gsocketconnection.h \ + /usr/include/glib-2.0/gio/gsocket.h \ + /usr/include/glib-2.0/gio/gsocketcontrolmessage.h \ + /usr/include/glib-2.0/gio/gsocketlistener.h \ + /usr/include/glib-2.0/gio/gsocketservice.h \ + /usr/include/glib-2.0/gio/gsrvtarget.h \ + /usr/include/glib-2.0/gio/gsimpleproxyresolver.h \ + /usr/include/glib-2.0/gio/gtask.h \ + /usr/include/glib-2.0/gio/gsubprocess.h \ + /usr/include/glib-2.0/gio/gsubprocesslauncher.h \ + /usr/include/glib-2.0/gio/gtcpconnection.h \ + /usr/include/glib-2.0/gio/gtcpwrapperconnection.h \ + /usr/include/glib-2.0/gio/gtestdbus.h \ + /usr/include/glib-2.0/gio/gthemedicon.h \ + /usr/include/glib-2.0/gio/gthreadedsocketservice.h \ + /usr/include/glib-2.0/gio/gtlsbackend.h \ + /usr/include/glib-2.0/gio/gtlscertificate.h \ + /usr/include/glib-2.0/gio/gtlsclientconnection.h \ + /usr/include/glib-2.0/gio/gtlsconnection.h \ + /usr/include/glib-2.0/gio/gtlsdatabase.h \ + /usr/include/glib-2.0/gio/gtlsfiledatabase.h \ + /usr/include/glib-2.0/gio/gtlsinteraction.h \ + /usr/include/glib-2.0/gio/gtlsserverconnection.h \ + /usr/include/glib-2.0/gio/gtlspassword.h \ + /usr/include/glib-2.0/gio/gvfs.h /usr/include/glib-2.0/gio/gvolume.h \ + /usr/include/glib-2.0/gio/gzlibcompressor.h \ + /usr/include/glib-2.0/gio/gzlibdecompressor.h \ + /usr/include/glib-2.0/gio/gdbusinterface.h \ + /usr/include/glib-2.0/gio/gdbusinterfaceskeleton.h \ + /usr/include/glib-2.0/gio/gdbusobject.h \ + /usr/include/glib-2.0/gio/gdbusobjectskeleton.h \ + /usr/include/glib-2.0/gio/gdbusobjectproxy.h \ + /usr/include/glib-2.0/gio/gdbusobjectmanager.h \ + /usr/include/glib-2.0/gio/gdbusobjectmanagerclient.h \ + /usr/include/glib-2.0/gio/gdbusobjectmanagerserver.h \ + /usr/include/glib-2.0/gio/gdbusactiongroup.h \ + /usr/include/glib-2.0/gio/giotypes.h \ + /usr/include/glib-2.0/gio/gremoteactiongroup.h \ + /usr/include/glib-2.0/gio/gmenumodel.h /usr/include/glib-2.0/gio/gmenu.h \ + /usr/include/glib-2.0/gio/gmenuexporter.h \ + /usr/include/glib-2.0/gio/gdbusmenumodel.h \ + /usr/include/glib-2.0/gio/gnotification.h \ + /usr/include/gtk-2.0/gdk/gdkscreen.h /usr/include/cairo/cairo.h \ + /usr/include/cairo/cairo-version.h /usr/include/cairo/cairo-features.h \ + /usr/include/cairo/cairo-deprecated.h \ + /usr/include/gtk-2.0/gdk/gdktypes.h /usr/include/pango-1.0/pango/pango.h \ + /usr/include/pango-1.0/pango/pango-attributes.h \ + /usr/include/pango-1.0/pango/pango-font.h \ + /usr/include/pango-1.0/pango/pango-coverage.h \ + /usr/include/pango-1.0/pango/pango-types.h \ + /usr/include/pango-1.0/pango/pango-gravity.h \ + /usr/include/pango-1.0/pango/pango-matrix.h \ + /usr/include/pango-1.0/pango/pango-script.h \ + /usr/include/pango-1.0/pango/pango-language.h \ + /usr/include/pango-1.0/pango/pango-bidi-type.h \ + /usr/include/pango-1.0/pango/pango-break.h \ + /usr/include/pango-1.0/pango/pango-item.h \ + /usr/include/pango-1.0/pango/pango-context.h \ + /usr/include/pango-1.0/pango/pango-fontmap.h \ + /usr/include/pango-1.0/pango/pango-fontset.h \ + /usr/include/pango-1.0/pango/pango-engine.h \ + /usr/include/pango-1.0/pango/pango-glyph.h \ + /usr/include/pango-1.0/pango/pango-enum-types.h \ + /usr/include/pango-1.0/pango/pango-features.h \ + /usr/include/pango-1.0/pango/pango-glyph-item.h \ + /usr/include/pango-1.0/pango/pango-layout.h \ + /usr/include/pango-1.0/pango/pango-tabs.h \ + /usr/include/pango-1.0/pango/pango-renderer.h \ + /usr/include/pango-1.0/pango/pango-utils.h \ + /usr/lib64/gtk-2.0/include/gdkconfig.h \ + /usr/include/gtk-2.0/gdk/gdkdisplay.h \ + /usr/include/gtk-2.0/gdk/gdkevents.h /usr/include/gtk-2.0/gdk/gdkcolor.h \ + /usr/include/gtk-2.0/gdk/gdkdnd.h /usr/include/gtk-2.0/gdk/gdkinput.h \ + /usr/include/gtk-2.0/gdk/gdkcairo.h /usr/include/gtk-2.0/gdk/gdkpixbuf.h \ + /usr/include/gtk-2.0/gdk/gdkrgb.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h \ + /usr/include/pango-1.0/pango/pangocairo.h \ + /usr/include/gtk-2.0/gdk/gdkcursor.h \ + /usr/include/gtk-2.0/gdk/gdkdisplaymanager.h \ + /usr/include/gtk-2.0/gdk/gdkdrawable.h /usr/include/gtk-2.0/gdk/gdkgc.h \ + /usr/include/gtk-2.0/gdk/gdkenumtypes.h \ + /usr/include/gtk-2.0/gdk/gdkfont.h /usr/include/gtk-2.0/gdk/gdkimage.h \ + /usr/include/gtk-2.0/gdk/gdkkeys.h /usr/include/gtk-2.0/gdk/gdkpango.h \ + /usr/include/gtk-2.0/gdk/gdkpixmap.h \ + /usr/include/gtk-2.0/gdk/gdkproperty.h \ + /usr/include/gtk-2.0/gdk/gdkregion.h \ + /usr/include/gtk-2.0/gdk/gdkselection.h \ + /usr/include/gtk-2.0/gdk/gdkspawn.h \ + /usr/include/gtk-2.0/gdk/gdktestutils.h \ + /usr/include/gtk-2.0/gdk/gdkwindow.h \ + /usr/include/gtk-2.0/gdk/gdkvisual.h \ + /usr/include/gtk-2.0/gtk/gtkaboutdialog.h \ + /usr/include/gtk-2.0/gtk/gtkdialog.h \ + /usr/include/gtk-2.0/gtk/gtkwindow.h \ + /usr/include/gtk-2.0/gtk/gtkaccelgroup.h \ + /usr/include/gtk-2.0/gtk/gtkenums.h /usr/include/gtk-2.0/gtk/gtkbin.h \ + /usr/include/gtk-2.0/gtk/gtkcontainer.h \ + /usr/include/gtk-2.0/gtk/gtkwidget.h \ + /usr/include/gtk-2.0/gtk/gtkobject.h \ + /usr/include/gtk-2.0/gtk/gtktypeutils.h \ + /usr/include/gtk-2.0/gtk/gtktypebuiltins.h \ + /usr/include/gtk-2.0/gtk/gtkdebug.h \ + /usr/include/gtk-2.0/gtk/gtkadjustment.h \ + /usr/include/gtk-2.0/gtk/gtkstyle.h \ + /usr/include/gtk-2.0/gtk/gtksettings.h /usr/include/gtk-2.0/gtk/gtkrc.h \ + /usr/include/atk-1.0/atk/atk.h /usr/include/atk-1.0/atk/atkobject.h \ + /usr/include/atk-1.0/atk/atkversion.h \ + /usr/include/atk-1.0/atk/atkstate.h \ + /usr/include/atk-1.0/atk/atkrelationtype.h \ + /usr/include/atk-1.0/atk/atkaction.h \ + /usr/include/atk-1.0/atk/atkcomponent.h \ + /usr/include/atk-1.0/atk/atkutil.h \ + /usr/include/atk-1.0/atk/atkdocument.h \ + /usr/include/atk-1.0/atk/atkeditabletext.h \ + /usr/include/atk-1.0/atk/atktext.h \ + /usr/include/atk-1.0/atk/atk-enum-types.h \ + /usr/include/atk-1.0/atk/atkgobjectaccessible.h \ + /usr/include/atk-1.0/atk/atkhyperlink.h \ + /usr/include/atk-1.0/atk/atkhyperlinkimpl.h \ + /usr/include/atk-1.0/atk/atkhypertext.h \ + /usr/include/atk-1.0/atk/atkimage.h \ + /usr/include/atk-1.0/atk/atknoopobject.h \ + /usr/include/atk-1.0/atk/atknoopobjectfactory.h \ + /usr/include/atk-1.0/atk/atkobjectfactory.h \ + /usr/include/atk-1.0/atk/atkplug.h /usr/include/atk-1.0/atk/atkrange.h \ + /usr/include/atk-1.0/atk/atkregistry.h \ + /usr/include/atk-1.0/atk/atkobjectfactory.h \ + /usr/include/atk-1.0/atk/atkrelation.h \ + /usr/include/atk-1.0/atk/atkrelationset.h \ + /usr/include/atk-1.0/atk/atkselection.h \ + /usr/include/atk-1.0/atk/atksocket.h \ + /usr/include/atk-1.0/atk/atkstateset.h \ + /usr/include/atk-1.0/atk/atkstreamablecontent.h \ + /usr/include/atk-1.0/atk/atktable.h \ + /usr/include/atk-1.0/atk/atktablecell.h \ + /usr/include/atk-1.0/atk/atkmisc.h /usr/include/atk-1.0/atk/atkvalue.h \ + /usr/include/atk-1.0/atk/atkwindow.h \ + /usr/include/gtk-2.0/gtk/gtkaccellabel.h \ + /usr/include/gtk-2.0/gtk/gtklabel.h /usr/include/gtk-2.0/gtk/gtkmisc.h \ + /usr/include/gtk-2.0/gtk/gtkmenu.h \ + /usr/include/gtk-2.0/gtk/gtkmenushell.h \ + /usr/include/gtk-2.0/gtk/gtkaccelmap.h \ + /usr/include/gtk-2.0/gtk/gtkaccessible.h \ + /usr/include/gtk-2.0/gtk/gtkaction.h \ + /usr/include/gtk-2.0/gtk/gtkactiongroup.h \ + /usr/include/gtk-2.0/gtk/gtkactivatable.h \ + /usr/include/gtk-2.0/gtk/gtkalignment.h \ + /usr/include/gtk-2.0/gtk/gtkarrow.h \ + /usr/include/gtk-2.0/gtk/gtkaspectframe.h \ + /usr/include/gtk-2.0/gtk/gtkframe.h \ + /usr/include/gtk-2.0/gtk/gtkassistant.h \ + /usr/include/gtk-2.0/gtk/gtkbbox.h /usr/include/gtk-2.0/gtk/gtkbox.h \ + /usr/include/gtk-2.0/gtk/gtkbindings.h \ + /usr/include/gtk-2.0/gtk/gtkbuildable.h \ + /usr/include/gtk-2.0/gtk/gtkbuilder.h \ + /usr/include/gtk-2.0/gtk/gtkbutton.h /usr/include/gtk-2.0/gtk/gtkimage.h \ + /usr/include/gtk-2.0/gtk/gtkcalendar.h \ + /usr/include/gtk-2.0/gtk/gtksignal.h \ + /usr/include/gtk-2.0/gtk/gtkmarshal.h \ + /usr/include/gtk-2.0/gtk/gtkcelleditable.h \ + /usr/include/gtk-2.0/gtk/gtkcelllayout.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderer.h \ + /usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h \ + /usr/include/gtk-2.0/gtk/gtktreemodel.h \ + /usr/include/gtk-2.0/gtk/gtktreesortable.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendereraccel.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderertext.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderercombo.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererprogress.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererspin.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererspinner.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h \ + /usr/include/gtk-2.0/gtk/gtkcellview.h \ + /usr/include/gtk-2.0/gtk/gtkcheckbutton.h \ + /usr/include/gtk-2.0/gtk/gtktogglebutton.h \ + /usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkitem.h \ + /usr/include/gtk-2.0/gtk/gtkclipboard.h \ + /usr/include/gtk-2.0/gtk/gtkselection.h \ + /usr/include/gtk-2.0/gtk/gtktextiter.h \ + /usr/include/gtk-2.0/gtk/gtktexttag.h \ + /usr/include/gtk-2.0/gtk/gtktextchild.h \ + /usr/include/gtk-2.0/gtk/gtkcolorbutton.h \ + /usr/include/gtk-2.0/gtk/gtkcolorsel.h \ + /usr/include/gtk-2.0/gtk/gtkvbox.h \ + /usr/include/gtk-2.0/gtk/gtkcolorseldialog.h \ + /usr/include/gtk-2.0/gtk/gtkcombobox.h \ + /usr/include/gtk-2.0/gtk/gtktreeview.h /usr/include/gtk-2.0/gtk/gtkdnd.h \ + /usr/include/gtk-2.0/gtk/gtkentry.h \ + /usr/include/gtk-2.0/gtk/gtkeditable.h \ + /usr/include/gtk-2.0/gtk/gtkimcontext.h \ + /usr/include/gtk-2.0/gtk/gtkentrybuffer.h \ + /usr/include/gtk-2.0/gtk/gtkentrycompletion.h \ + /usr/include/gtk-2.0/gtk/gtkliststore.h \ + /usr/include/gtk-2.0/gtk/gtktreemodelfilter.h \ + /usr/include/gtk-2.0/gtk/gtkcomboboxentry.h \ + /usr/include/gtk-2.0/gtk/gtkcomboboxtext.h \ + /usr/include/gtk-2.0/gtk/gtkdrawingarea.h \ + /usr/include/gtk-2.0/gtk/gtkeventbox.h \ + /usr/include/gtk-2.0/gtk/gtkexpander.h \ + /usr/include/gtk-2.0/gtk/gtkfixed.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooser.h \ + /usr/include/gtk-2.0/gtk/gtkfilefilter.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h \ + /usr/include/gtk-2.0/gtk/gtkhbox.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h \ + /usr/include/gtk-2.0/gtk/gtkfontbutton.h \ + /usr/include/gtk-2.0/gtk/gtkfontsel.h /usr/include/gtk-2.0/gtk/gtkgc.h \ + /usr/include/gtk-2.0/gtk/gtkhandlebox.h \ + /usr/include/gtk-2.0/gtk/gtkhbbox.h /usr/include/gtk-2.0/gtk/gtkhpaned.h \ + /usr/include/gtk-2.0/gtk/gtkpaned.h /usr/include/gtk-2.0/gtk/gtkhruler.h \ + /usr/include/gtk-2.0/gtk/gtkruler.h /usr/include/gtk-2.0/gtk/gtkhscale.h \ + /usr/include/gtk-2.0/gtk/gtkscale.h /usr/include/gtk-2.0/gtk/gtkrange.h \ + /usr/include/gtk-2.0/gtk/gtkhscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkhseparator.h \ + /usr/include/gtk-2.0/gtk/gtkseparator.h \ + /usr/include/gtk-2.0/gtk/gtkhsv.h \ + /usr/include/gtk-2.0/gtk/gtkiconfactory.h \ + /usr/include/gtk-2.0/gtk/gtkicontheme.h \ + /usr/include/gtk-2.0/gtk/gtkiconview.h \ + /usr/include/gtk-2.0/gtk/gtktooltip.h \ + /usr/include/gtk-2.0/gtk/gtkimagemenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkimcontextsimple.h \ + /usr/include/gtk-2.0/gtk/gtkimmulticontext.h \ + /usr/include/gtk-2.0/gtk/gtkinfobar.h \ + /usr/include/gtk-2.0/gtk/gtkinvisible.h \ + /usr/include/gtk-2.0/gtk/gtklayout.h \ + /usr/include/gtk-2.0/gtk/gtklinkbutton.h \ + /usr/include/gtk-2.0/gtk/gtkmain.h /usr/include/gtk-2.0/gtk/gtkmenubar.h \ + /usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolitem.h \ + /usr/include/gtk-2.0/gtk/gtktooltips.h \ + /usr/include/gtk-2.0/gtk/gtksizegroup.h \ + /usr/include/gtk-2.0/gtk/gtkmessagedialog.h \ + /usr/include/gtk-2.0/gtk/gtkmodules.h \ + /usr/include/gtk-2.0/gtk/gtkmountoperation.h \ + /usr/include/gtk-2.0/gtk/gtknotebook.h \ + /usr/include/gtk-2.0/gtk/gtkoffscreenwindow.h \ + /usr/include/gtk-2.0/gtk/gtkorientable.h \ + /usr/include/gtk-2.0/gtk/gtkpagesetup.h \ + /usr/include/gtk-2.0/gtk/gtkpapersize.h \ + /usr/include/gtk-2.0/gtk/gtkplug.h /usr/include/gtk-2.0/gtk/gtksocket.h \ + /usr/include/gtk-2.0/gtk/gtkprintcontext.h \ + /usr/include/gtk-2.0/gtk/gtkprintoperation.h \ + /usr/include/gtk-2.0/gtk/gtkprintsettings.h \ + /usr/include/gtk-2.0/gtk/gtkprintoperationpreview.h \ + /usr/include/gtk-2.0/gtk/gtkprogressbar.h \ + /usr/include/gtk-2.0/gtk/gtkprogress.h \ + /usr/include/gtk-2.0/gtk/gtkradioaction.h \ + /usr/include/gtk-2.0/gtk/gtktoggleaction.h \ + /usr/include/gtk-2.0/gtk/gtkradiobutton.h \ + /usr/include/gtk-2.0/gtk/gtkradiomenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtkrecentaction.h \ + /usr/include/gtk-2.0/gtk/gtkrecentmanager.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooser.h \ + /usr/include/gtk-2.0/gtk/gtkrecentfilter.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooserdialog.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchoosermenu.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooserwidget.h \ + /usr/include/gtk-2.0/gtk/gtkscalebutton.h \ + /usr/include/gtk-2.0/gtk/gtkscrolledwindow.h \ + /usr/include/gtk-2.0/gtk/gtkvscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkviewport.h \ + /usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h \ + /usr/include/gtk-2.0/gtk/gtkshow.h \ + /usr/include/gtk-2.0/gtk/gtkspinbutton.h \ + /usr/include/gtk-2.0/gtk/gtkspinner.h \ + /usr/include/gtk-2.0/gtk/gtkstatusbar.h \ + /usr/include/gtk-2.0/gtk/gtkstatusicon.h \ + /usr/include/gtk-2.0/gtk/gtkstock.h /usr/include/gtk-2.0/gtk/gtktable.h \ + /usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtktextbuffer.h \ + /usr/include/gtk-2.0/gtk/gtktexttagtable.h \ + /usr/include/gtk-2.0/gtk/gtktextmark.h \ + /usr/include/gtk-2.0/gtk/gtktextbufferrichtext.h \ + /usr/include/gtk-2.0/gtk/gtktextview.h \ + /usr/include/gtk-2.0/gtk/gtktoolbar.h \ + /usr/include/gtk-2.0/gtk/gtkpixmap.h \ + /usr/include/gtk-2.0/gtk/gtktoolitemgroup.h \ + /usr/include/gtk-2.0/gtk/gtktoolpalette.h \ + /usr/include/gtk-2.0/gtk/gtktoolshell.h \ + /usr/include/gtk-2.0/gtk/gtktestutils.h \ + /usr/include/gtk-2.0/gtk/gtktreednd.h \ + /usr/include/gtk-2.0/gtk/gtktreemodelsort.h \ + /usr/include/gtk-2.0/gtk/gtktreeselection.h \ + /usr/include/gtk-2.0/gtk/gtktreestore.h \ + /usr/include/gtk-2.0/gtk/gtkuimanager.h \ + /usr/include/gtk-2.0/gtk/gtkvbbox.h \ + /usr/include/gtk-2.0/gtk/gtkversion.h \ + /usr/include/gtk-2.0/gtk/gtkvolumebutton.h \ + /usr/include/gtk-2.0/gtk/gtkvpaned.h \ + /usr/include/gtk-2.0/gtk/gtkvruler.h \ + /usr/include/gtk-2.0/gtk/gtkvscale.h \ + /usr/include/gtk-2.0/gtk/gtkvseparator.h \ + /usr/include/gtk-2.0/gtk/gtktext.h /usr/include/gtk-2.0/gtk/gtktree.h \ + /usr/include/gtk-2.0/gtk/gtktreeitem.h \ + /usr/include/gtk-2.0/gtk/gtkclist.h /usr/include/gtk-2.0/gtk/gtkcombo.h \ + /usr/include/gtk-2.0/gtk/gtkctree.h /usr/include/gtk-2.0/gtk/gtkcurve.h \ + /usr/include/gtk-2.0/gtk/gtkfilesel.h \ + /usr/include/gtk-2.0/gtk/gtkgamma.h \ + /usr/include/gtk-2.0/gtk/gtkinputdialog.h \ + /usr/include/gtk-2.0/gtk/gtkitemfactory.h \ + /usr/include/gtk-2.0/gtk/gtklist.h \ + /usr/include/gtk-2.0/gtk/gtklistitem.h \ + /usr/include/gtk-2.0/gtk/gtkoldeditable.h \ + /usr/include/gtk-2.0/gtk/gtkoptionmenu.h \ + /usr/include/gtk-2.0/gtk/gtkpreview.h \ + /usr/include/gtk-2.0/gtk/gtktipsquery.h Cheat.h + +/usr/include/stdc-predef.h: + +Linux.h: + +../include/config.h: + +../libpcsxcore/psxcommon.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/stdlib.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/bits/wchar.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-bsearch.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/limits.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/include/gtk-2.0/gtk/gtk.h: + +/usr/include/gtk-2.0/gdk/gdk.h: + +/usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h: + +/usr/include/glib-2.0/gio/gio.h: + +/usr/include/glib-2.0/gio/giotypes.h: + +/usr/include/glib-2.0/gio/gioenums.h: + +/usr/include/glib-2.0/glib-object.h: + +/usr/include/glib-2.0/gobject/gbinding.h: + +/usr/include/glib-2.0/glib.h: + +/usr/include/glib-2.0/glib/galloca.h: + +/usr/include/glib-2.0/glib/gtypes.h: + +/usr/lib64/glib-2.0/include/glibconfig.h: + +/usr/include/glib-2.0/glib/gmacros.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include/float.h: + +/usr/include/glib-2.0/glib/gversionmacros.h: + +/usr/include/glib-2.0/glib/garray.h: + +/usr/include/glib-2.0/glib/gasyncqueue.h: + +/usr/include/glib-2.0/glib/gthread.h: + +/usr/include/glib-2.0/glib/gatomic.h: + +/usr/include/glib-2.0/glib/gerror.h: + +/usr/include/glib-2.0/glib/gquark.h: + +/usr/include/glib-2.0/glib/gbacktrace.h: + +/usr/include/signal.h: + +/usr/include/bits/signum.h: + +/usr/include/bits/siginfo.h: + +/usr/include/bits/sigaction.h: + +/usr/include/bits/sigcontext.h: + +/usr/include/bits/sigstack.h: + +/usr/include/sys/ucontext.h: + +/usr/include/bits/sigthread.h: + +/usr/include/glib-2.0/glib/gbase64.h: + +/usr/include/glib-2.0/glib/gbitlock.h: + +/usr/include/glib-2.0/glib/gbookmarkfile.h: + +/usr/include/glib-2.0/glib/gbytes.h: + +/usr/include/glib-2.0/glib/gcharset.h: + +/usr/include/glib-2.0/glib/gchecksum.h: + +/usr/include/glib-2.0/glib/gconvert.h: + +/usr/include/glib-2.0/glib/gdataset.h: + +/usr/include/glib-2.0/glib/gdate.h: + +/usr/include/glib-2.0/glib/gdatetime.h: + +/usr/include/glib-2.0/glib/gtimezone.h: + +/usr/include/glib-2.0/glib/gdir.h: + +/usr/include/dirent.h: + +/usr/include/bits/dirent.h: + +/usr/include/glib-2.0/glib/genviron.h: + +/usr/include/glib-2.0/glib/gfileutils.h: + +/usr/include/glib-2.0/glib/ggettext.h: + +/usr/include/glib-2.0/glib/ghash.h: + +/usr/include/glib-2.0/glib/glist.h: + +/usr/include/glib-2.0/glib/gmem.h: + +/usr/include/glib-2.0/glib/gnode.h: + +/usr/include/glib-2.0/glib/ghmac.h: + +/usr/include/glib-2.0/glib/gchecksum.h: + +/usr/include/glib-2.0/glib/ghook.h: + +/usr/include/glib-2.0/glib/ghostutils.h: + +/usr/include/glib-2.0/glib/giochannel.h: + +/usr/include/glib-2.0/glib/gmain.h: + +/usr/include/glib-2.0/glib/gpoll.h: + +/usr/include/glib-2.0/glib/gslist.h: + +/usr/include/glib-2.0/glib/gstring.h: + +/usr/include/glib-2.0/glib/gunicode.h: + +/usr/include/glib-2.0/glib/gutils.h: + +/usr/include/glib-2.0/glib/gkeyfile.h: + +/usr/include/glib-2.0/glib/gmappedfile.h: + +/usr/include/glib-2.0/glib/gmarkup.h: + +/usr/include/glib-2.0/glib/gmessages.h: + +/usr/include/glib-2.0/glib/goption.h: + +/usr/include/glib-2.0/glib/gpattern.h: + +/usr/include/glib-2.0/glib/gprimes.h: + +/usr/include/glib-2.0/glib/gqsort.h: + +/usr/include/glib-2.0/glib/gqueue.h: + +/usr/include/glib-2.0/glib/grand.h: + +/usr/include/glib-2.0/glib/gregex.h: + +/usr/include/glib-2.0/glib/gscanner.h: + +/usr/include/glib-2.0/glib/gsequence.h: + +/usr/include/glib-2.0/glib/gshell.h: + +/usr/include/glib-2.0/glib/gslice.h: + +/usr/include/glib-2.0/glib/gspawn.h: + +/usr/include/glib-2.0/glib/gstrfuncs.h: + +/usr/include/glib-2.0/glib/gstringchunk.h: + +/usr/include/glib-2.0/glib/gtestutils.h: + +/usr/include/glib-2.0/glib/gthreadpool.h: + +/usr/include/glib-2.0/glib/gtimer.h: + +/usr/include/glib-2.0/glib/gtrashstack.h: + +/usr/include/glib-2.0/glib/gtree.h: + +/usr/include/glib-2.0/glib/gurifuncs.h: + +/usr/include/glib-2.0/glib/gvarianttype.h: + +/usr/include/glib-2.0/glib/gvariant.h: + +/usr/include/glib-2.0/glib/gversion.h: + +/usr/include/glib-2.0/glib/deprecated/gallocator.h: + +/usr/include/glib-2.0/glib/deprecated/gcache.h: + +/usr/include/glib-2.0/glib/deprecated/gcompletion.h: + +/usr/include/glib-2.0/glib/deprecated/gmain.h: + +/usr/include/glib-2.0/glib/deprecated/grel.h: + +/usr/include/glib-2.0/glib/deprecated/gthread.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/setjmp.h: + +/usr/include/glib-2.0/gobject/gobject.h: + +/usr/include/glib-2.0/gobject/gtype.h: + +/usr/include/glib-2.0/gobject/gvalue.h: + +/usr/include/glib-2.0/gobject/gparam.h: + +/usr/include/glib-2.0/gobject/gclosure.h: + +/usr/include/glib-2.0/gobject/gsignal.h: + +/usr/include/glib-2.0/gobject/gmarshal.h: + +/usr/include/glib-2.0/gobject/gboxed.h: + +/usr/include/glib-2.0/gobject/glib-types.h: + +/usr/include/glib-2.0/gobject/genums.h: + +/usr/include/glib-2.0/gobject/gparamspecs.h: + +/usr/include/glib-2.0/gobject/gsourceclosure.h: + +/usr/include/glib-2.0/gobject/gtypemodule.h: + +/usr/include/glib-2.0/gobject/gtypeplugin.h: + +/usr/include/glib-2.0/gobject/gvaluearray.h: + +/usr/include/glib-2.0/gobject/gvaluetypes.h: + +/usr/include/glib-2.0/gio/gaction.h: + +/usr/include/glib-2.0/gio/gactiongroup.h: + +/usr/include/glib-2.0/gio/gactiongroupexporter.h: + +/usr/include/glib-2.0/gio/gactionmap.h: + +/usr/include/glib-2.0/gio/gappinfo.h: + +/usr/include/glib-2.0/gio/gapplication.h: + +/usr/include/glib-2.0/gio/gapplicationcommandline.h: + +/usr/include/glib-2.0/gio/gasyncinitable.h: + +/usr/include/glib-2.0/gio/ginitable.h: + +/usr/include/glib-2.0/gio/gasyncresult.h: + +/usr/include/glib-2.0/gio/gbufferedinputstream.h: + +/usr/include/glib-2.0/gio/gfilterinputstream.h: + +/usr/include/glib-2.0/gio/ginputstream.h: + +/usr/include/glib-2.0/gio/gbufferedoutputstream.h: + +/usr/include/glib-2.0/gio/gfilteroutputstream.h: + +/usr/include/glib-2.0/gio/goutputstream.h: + +/usr/include/glib-2.0/gio/gbytesicon.h: + +/usr/include/glib-2.0/gio/gcancellable.h: + +/usr/include/glib-2.0/gio/gcharsetconverter.h: + +/usr/include/glib-2.0/gio/gconverter.h: + +/usr/include/glib-2.0/gio/gcontenttype.h: + +/usr/include/glib-2.0/gio/gconverterinputstream.h: + +/usr/include/glib-2.0/gio/gconverteroutputstream.h: + +/usr/include/glib-2.0/gio/gcredentials.h: + +/usr/include/glib-2.0/gio/gdatainputstream.h: + +/usr/include/glib-2.0/gio/gdataoutputstream.h: + +/usr/include/glib-2.0/gio/gdbusaddress.h: + +/usr/include/glib-2.0/gio/gdbusauthobserver.h: + +/usr/include/glib-2.0/gio/gdbusconnection.h: + +/usr/include/glib-2.0/gio/gdbuserror.h: + +/usr/include/glib-2.0/gio/gdbusintrospection.h: + +/usr/include/glib-2.0/gio/gdbusmessage.h: + +/usr/include/glib-2.0/gio/gdbusmethodinvocation.h: + +/usr/include/glib-2.0/gio/gdbusnameowning.h: + +/usr/include/glib-2.0/gio/gdbusnamewatching.h: + +/usr/include/glib-2.0/gio/gdbusproxy.h: + +/usr/include/glib-2.0/gio/gdbusserver.h: + +/usr/include/glib-2.0/gio/gdbusutils.h: + +/usr/include/glib-2.0/gio/gdrive.h: + +/usr/include/glib-2.0/gio/gemblemedicon.h: + +/usr/include/glib-2.0/gio/gicon.h: + +/usr/include/glib-2.0/gio/gemblem.h: + +/usr/include/glib-2.0/gio/gfileattribute.h: + +/usr/include/glib-2.0/gio/gfileenumerator.h: + +/usr/include/glib-2.0/gio/gfile.h: + +/usr/include/glib-2.0/gio/gfileicon.h: + +/usr/include/glib-2.0/gio/gfileinfo.h: + +/usr/include/glib-2.0/gio/gfileinputstream.h: + +/usr/include/glib-2.0/gio/gfileiostream.h: + +/usr/include/glib-2.0/gio/giostream.h: + +/usr/include/glib-2.0/gio/gioerror.h: + +/usr/include/glib-2.0/gio/gfilemonitor.h: + +/usr/include/glib-2.0/gio/gfilenamecompleter.h: + +/usr/include/glib-2.0/gio/gfileoutputstream.h: + +/usr/include/glib-2.0/gio/ginetaddress.h: + +/usr/include/glib-2.0/gio/ginetaddressmask.h: + +/usr/include/glib-2.0/gio/ginetsocketaddress.h: + +/usr/include/glib-2.0/gio/gsocketaddress.h: + +/usr/include/glib-2.0/gio/gioenumtypes.h: + +/usr/include/glib-2.0/gio/giomodule.h: + +/usr/include/glib-2.0/gmodule.h: + +/usr/include/glib-2.0/gio/gioscheduler.h: + +/usr/include/glib-2.0/gio/gloadableicon.h: + +/usr/include/glib-2.0/gio/gmemoryinputstream.h: + +/usr/include/glib-2.0/gio/gmemoryoutputstream.h: + +/usr/include/glib-2.0/gio/gmount.h: + +/usr/include/glib-2.0/gio/gmountoperation.h: + +/usr/include/glib-2.0/gio/gnativevolumemonitor.h: + +/usr/include/glib-2.0/gio/gvolumemonitor.h: + +/usr/include/glib-2.0/gio/gnetworkaddress.h: + +/usr/include/glib-2.0/gio/gnetworkmonitor.h: + +/usr/include/glib-2.0/gio/gnetworkservice.h: + +/usr/include/glib-2.0/gio/gpermission.h: + +/usr/include/glib-2.0/gio/gpollableinputstream.h: + +/usr/include/glib-2.0/gio/gpollableoutputstream.h: + +/usr/include/glib-2.0/gio/gpollableutils.h: + +/usr/include/glib-2.0/gio/gpropertyaction.h: + +/usr/include/glib-2.0/gio/gproxy.h: + +/usr/include/glib-2.0/gio/gproxyaddress.h: + +/usr/include/glib-2.0/gio/gproxyaddressenumerator.h: + +/usr/include/glib-2.0/gio/gsocketaddressenumerator.h: + +/usr/include/glib-2.0/gio/gproxyresolver.h: + +/usr/include/glib-2.0/gio/gresolver.h: + +/usr/include/glib-2.0/gio/gresource.h: + +/usr/include/glib-2.0/gio/gseekable.h: + +/usr/include/glib-2.0/gio/gsettingsschema.h: + +/usr/include/glib-2.0/gio/gsettings.h: + +/usr/include/glib-2.0/gio/gsimpleaction.h: + +/usr/include/glib-2.0/gio/gsimpleactiongroup.h: + +/usr/include/glib-2.0/gio/gactiongroup.h: + +/usr/include/glib-2.0/gio/gactionmap.h: + +/usr/include/glib-2.0/gio/gsimpleasyncresult.h: + +/usr/include/glib-2.0/gio/gsimplepermission.h: + +/usr/include/glib-2.0/gio/gsocketclient.h: + +/usr/include/glib-2.0/gio/gsocketconnectable.h: + +/usr/include/glib-2.0/gio/gsocketconnection.h: + +/usr/include/glib-2.0/gio/gsocket.h: + +/usr/include/glib-2.0/gio/gsocketcontrolmessage.h: + +/usr/include/glib-2.0/gio/gsocketlistener.h: + +/usr/include/glib-2.0/gio/gsocketservice.h: + +/usr/include/glib-2.0/gio/gsrvtarget.h: + +/usr/include/glib-2.0/gio/gsimpleproxyresolver.h: + +/usr/include/glib-2.0/gio/gtask.h: + +/usr/include/glib-2.0/gio/gsubprocess.h: + +/usr/include/glib-2.0/gio/gsubprocesslauncher.h: + +/usr/include/glib-2.0/gio/gtcpconnection.h: + +/usr/include/glib-2.0/gio/gtcpwrapperconnection.h: + +/usr/include/glib-2.0/gio/gtestdbus.h: + +/usr/include/glib-2.0/gio/gthemedicon.h: + +/usr/include/glib-2.0/gio/gthreadedsocketservice.h: + +/usr/include/glib-2.0/gio/gtlsbackend.h: + +/usr/include/glib-2.0/gio/gtlscertificate.h: + +/usr/include/glib-2.0/gio/gtlsclientconnection.h: + +/usr/include/glib-2.0/gio/gtlsconnection.h: + +/usr/include/glib-2.0/gio/gtlsdatabase.h: + +/usr/include/glib-2.0/gio/gtlsfiledatabase.h: + +/usr/include/glib-2.0/gio/gtlsinteraction.h: + +/usr/include/glib-2.0/gio/gtlsserverconnection.h: + +/usr/include/glib-2.0/gio/gtlspassword.h: + +/usr/include/glib-2.0/gio/gvfs.h: + +/usr/include/glib-2.0/gio/gvolume.h: + +/usr/include/glib-2.0/gio/gzlibcompressor.h: + +/usr/include/glib-2.0/gio/gzlibdecompressor.h: + +/usr/include/glib-2.0/gio/gdbusinterface.h: + +/usr/include/glib-2.0/gio/gdbusinterfaceskeleton.h: + +/usr/include/glib-2.0/gio/gdbusobject.h: + +/usr/include/glib-2.0/gio/gdbusobjectskeleton.h: + +/usr/include/glib-2.0/gio/gdbusobjectproxy.h: + +/usr/include/glib-2.0/gio/gdbusobjectmanager.h: + +/usr/include/glib-2.0/gio/gdbusobjectmanagerclient.h: + +/usr/include/glib-2.0/gio/gdbusobjectmanagerserver.h: + +/usr/include/glib-2.0/gio/gdbusactiongroup.h: + +/usr/include/glib-2.0/gio/giotypes.h: + +/usr/include/glib-2.0/gio/gremoteactiongroup.h: + +/usr/include/glib-2.0/gio/gmenumodel.h: + +/usr/include/glib-2.0/gio/gmenu.h: + +/usr/include/glib-2.0/gio/gmenuexporter.h: + +/usr/include/glib-2.0/gio/gdbusmenumodel.h: + +/usr/include/glib-2.0/gio/gnotification.h: + +/usr/include/gtk-2.0/gdk/gdkscreen.h: + +/usr/include/cairo/cairo.h: + +/usr/include/cairo/cairo-version.h: + +/usr/include/cairo/cairo-features.h: + +/usr/include/cairo/cairo-deprecated.h: + +/usr/include/gtk-2.0/gdk/gdktypes.h: + +/usr/include/pango-1.0/pango/pango.h: + +/usr/include/pango-1.0/pango/pango-attributes.h: + +/usr/include/pango-1.0/pango/pango-font.h: + +/usr/include/pango-1.0/pango/pango-coverage.h: + +/usr/include/pango-1.0/pango/pango-types.h: + +/usr/include/pango-1.0/pango/pango-gravity.h: + +/usr/include/pango-1.0/pango/pango-matrix.h: + +/usr/include/pango-1.0/pango/pango-script.h: + +/usr/include/pango-1.0/pango/pango-language.h: + +/usr/include/pango-1.0/pango/pango-bidi-type.h: + +/usr/include/pango-1.0/pango/pango-break.h: + +/usr/include/pango-1.0/pango/pango-item.h: + +/usr/include/pango-1.0/pango/pango-context.h: + +/usr/include/pango-1.0/pango/pango-fontmap.h: + +/usr/include/pango-1.0/pango/pango-fontset.h: + +/usr/include/pango-1.0/pango/pango-engine.h: + +/usr/include/pango-1.0/pango/pango-glyph.h: + +/usr/include/pango-1.0/pango/pango-enum-types.h: + +/usr/include/pango-1.0/pango/pango-features.h: + +/usr/include/pango-1.0/pango/pango-glyph-item.h: + +/usr/include/pango-1.0/pango/pango-layout.h: + +/usr/include/pango-1.0/pango/pango-tabs.h: + +/usr/include/pango-1.0/pango/pango-renderer.h: + +/usr/include/pango-1.0/pango/pango-utils.h: + +/usr/lib64/gtk-2.0/include/gdkconfig.h: + +/usr/include/gtk-2.0/gdk/gdkdisplay.h: + +/usr/include/gtk-2.0/gdk/gdkevents.h: + +/usr/include/gtk-2.0/gdk/gdkcolor.h: + +/usr/include/gtk-2.0/gdk/gdkdnd.h: + +/usr/include/gtk-2.0/gdk/gdkinput.h: + +/usr/include/gtk-2.0/gdk/gdkcairo.h: + +/usr/include/gtk-2.0/gdk/gdkpixbuf.h: + +/usr/include/gtk-2.0/gdk/gdkrgb.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h: + +/usr/include/pango-1.0/pango/pangocairo.h: + +/usr/include/gtk-2.0/gdk/gdkcursor.h: + +/usr/include/gtk-2.0/gdk/gdkdisplaymanager.h: + +/usr/include/gtk-2.0/gdk/gdkdrawable.h: + +/usr/include/gtk-2.0/gdk/gdkgc.h: + +/usr/include/gtk-2.0/gdk/gdkenumtypes.h: + +/usr/include/gtk-2.0/gdk/gdkfont.h: + +/usr/include/gtk-2.0/gdk/gdkimage.h: + +/usr/include/gtk-2.0/gdk/gdkkeys.h: + +/usr/include/gtk-2.0/gdk/gdkpango.h: + +/usr/include/gtk-2.0/gdk/gdkpixmap.h: + +/usr/include/gtk-2.0/gdk/gdkproperty.h: + +/usr/include/gtk-2.0/gdk/gdkregion.h: + +/usr/include/gtk-2.0/gdk/gdkselection.h: + +/usr/include/gtk-2.0/gdk/gdkspawn.h: + +/usr/include/gtk-2.0/gdk/gdktestutils.h: + +/usr/include/gtk-2.0/gdk/gdkwindow.h: + +/usr/include/gtk-2.0/gdk/gdkvisual.h: + +/usr/include/gtk-2.0/gtk/gtkaboutdialog.h: + +/usr/include/gtk-2.0/gtk/gtkdialog.h: + +/usr/include/gtk-2.0/gtk/gtkwindow.h: + +/usr/include/gtk-2.0/gtk/gtkaccelgroup.h: + +/usr/include/gtk-2.0/gtk/gtkenums.h: + +/usr/include/gtk-2.0/gtk/gtkbin.h: + +/usr/include/gtk-2.0/gtk/gtkcontainer.h: + +/usr/include/gtk-2.0/gtk/gtkwidget.h: + +/usr/include/gtk-2.0/gtk/gtkobject.h: + +/usr/include/gtk-2.0/gtk/gtktypeutils.h: + +/usr/include/gtk-2.0/gtk/gtktypebuiltins.h: + +/usr/include/gtk-2.0/gtk/gtkdebug.h: + +/usr/include/gtk-2.0/gtk/gtkadjustment.h: + +/usr/include/gtk-2.0/gtk/gtkstyle.h: + +/usr/include/gtk-2.0/gtk/gtksettings.h: + +/usr/include/gtk-2.0/gtk/gtkrc.h: + +/usr/include/atk-1.0/atk/atk.h: + +/usr/include/atk-1.0/atk/atkobject.h: + +/usr/include/atk-1.0/atk/atkversion.h: + +/usr/include/atk-1.0/atk/atkstate.h: + +/usr/include/atk-1.0/atk/atkrelationtype.h: + +/usr/include/atk-1.0/atk/atkaction.h: + +/usr/include/atk-1.0/atk/atkcomponent.h: + +/usr/include/atk-1.0/atk/atkutil.h: + +/usr/include/atk-1.0/atk/atkdocument.h: + +/usr/include/atk-1.0/atk/atkeditabletext.h: + +/usr/include/atk-1.0/atk/atktext.h: + +/usr/include/atk-1.0/atk/atk-enum-types.h: + +/usr/include/atk-1.0/atk/atkgobjectaccessible.h: + +/usr/include/atk-1.0/atk/atkhyperlink.h: + +/usr/include/atk-1.0/atk/atkhyperlinkimpl.h: + +/usr/include/atk-1.0/atk/atkhypertext.h: + +/usr/include/atk-1.0/atk/atkimage.h: + +/usr/include/atk-1.0/atk/atknoopobject.h: + +/usr/include/atk-1.0/atk/atknoopobjectfactory.h: + +/usr/include/atk-1.0/atk/atkobjectfactory.h: + +/usr/include/atk-1.0/atk/atkplug.h: + +/usr/include/atk-1.0/atk/atkrange.h: + +/usr/include/atk-1.0/atk/atkregistry.h: + +/usr/include/atk-1.0/atk/atkobjectfactory.h: + +/usr/include/atk-1.0/atk/atkrelation.h: + +/usr/include/atk-1.0/atk/atkrelationset.h: + +/usr/include/atk-1.0/atk/atkselection.h: + +/usr/include/atk-1.0/atk/atksocket.h: + +/usr/include/atk-1.0/atk/atkstateset.h: + +/usr/include/atk-1.0/atk/atkstreamablecontent.h: + +/usr/include/atk-1.0/atk/atktable.h: + +/usr/include/atk-1.0/atk/atktablecell.h: + +/usr/include/atk-1.0/atk/atkmisc.h: + +/usr/include/atk-1.0/atk/atkvalue.h: + +/usr/include/atk-1.0/atk/atkwindow.h: + +/usr/include/gtk-2.0/gtk/gtkaccellabel.h: + +/usr/include/gtk-2.0/gtk/gtklabel.h: + +/usr/include/gtk-2.0/gtk/gtkmisc.h: + +/usr/include/gtk-2.0/gtk/gtkmenu.h: + +/usr/include/gtk-2.0/gtk/gtkmenushell.h: + +/usr/include/gtk-2.0/gtk/gtkaccelmap.h: + +/usr/include/gtk-2.0/gtk/gtkaccessible.h: + +/usr/include/gtk-2.0/gtk/gtkaction.h: + +/usr/include/gtk-2.0/gtk/gtkactiongroup.h: + +/usr/include/gtk-2.0/gtk/gtkactivatable.h: + +/usr/include/gtk-2.0/gtk/gtkalignment.h: + +/usr/include/gtk-2.0/gtk/gtkarrow.h: + +/usr/include/gtk-2.0/gtk/gtkaspectframe.h: + +/usr/include/gtk-2.0/gtk/gtkframe.h: + +/usr/include/gtk-2.0/gtk/gtkassistant.h: + +/usr/include/gtk-2.0/gtk/gtkbbox.h: + +/usr/include/gtk-2.0/gtk/gtkbox.h: + +/usr/include/gtk-2.0/gtk/gtkbindings.h: + +/usr/include/gtk-2.0/gtk/gtkbuildable.h: + +/usr/include/gtk-2.0/gtk/gtkbuilder.h: + +/usr/include/gtk-2.0/gtk/gtkbutton.h: + +/usr/include/gtk-2.0/gtk/gtkimage.h: + +/usr/include/gtk-2.0/gtk/gtkcalendar.h: + +/usr/include/gtk-2.0/gtk/gtksignal.h: + +/usr/include/gtk-2.0/gtk/gtkmarshal.h: + +/usr/include/gtk-2.0/gtk/gtkcelleditable.h: + +/usr/include/gtk-2.0/gtk/gtkcelllayout.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderer.h: + +/usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h: + +/usr/include/gtk-2.0/gtk/gtktreemodel.h: + +/usr/include/gtk-2.0/gtk/gtktreesortable.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendereraccel.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderertext.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderercombo.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererprogress.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererspin.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererspinner.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h: + +/usr/include/gtk-2.0/gtk/gtkcellview.h: + +/usr/include/gtk-2.0/gtk/gtkcheckbutton.h: + +/usr/include/gtk-2.0/gtk/gtktogglebutton.h: + +/usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkitem.h: + +/usr/include/gtk-2.0/gtk/gtkclipboard.h: + +/usr/include/gtk-2.0/gtk/gtkselection.h: + +/usr/include/gtk-2.0/gtk/gtktextiter.h: + +/usr/include/gtk-2.0/gtk/gtktexttag.h: + +/usr/include/gtk-2.0/gtk/gtktextchild.h: + +/usr/include/gtk-2.0/gtk/gtkcolorbutton.h: + +/usr/include/gtk-2.0/gtk/gtkcolorsel.h: + +/usr/include/gtk-2.0/gtk/gtkvbox.h: + +/usr/include/gtk-2.0/gtk/gtkcolorseldialog.h: + +/usr/include/gtk-2.0/gtk/gtkcombobox.h: + +/usr/include/gtk-2.0/gtk/gtktreeview.h: + +/usr/include/gtk-2.0/gtk/gtkdnd.h: + +/usr/include/gtk-2.0/gtk/gtkentry.h: + +/usr/include/gtk-2.0/gtk/gtkeditable.h: + +/usr/include/gtk-2.0/gtk/gtkimcontext.h: + +/usr/include/gtk-2.0/gtk/gtkentrybuffer.h: + +/usr/include/gtk-2.0/gtk/gtkentrycompletion.h: + +/usr/include/gtk-2.0/gtk/gtkliststore.h: + +/usr/include/gtk-2.0/gtk/gtktreemodelfilter.h: + +/usr/include/gtk-2.0/gtk/gtkcomboboxentry.h: + +/usr/include/gtk-2.0/gtk/gtkcomboboxtext.h: + +/usr/include/gtk-2.0/gtk/gtkdrawingarea.h: + +/usr/include/gtk-2.0/gtk/gtkeventbox.h: + +/usr/include/gtk-2.0/gtk/gtkexpander.h: + +/usr/include/gtk-2.0/gtk/gtkfixed.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooser.h: + +/usr/include/gtk-2.0/gtk/gtkfilefilter.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h: + +/usr/include/gtk-2.0/gtk/gtkhbox.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h: + +/usr/include/gtk-2.0/gtk/gtkfontbutton.h: + +/usr/include/gtk-2.0/gtk/gtkfontsel.h: + +/usr/include/gtk-2.0/gtk/gtkgc.h: + +/usr/include/gtk-2.0/gtk/gtkhandlebox.h: + +/usr/include/gtk-2.0/gtk/gtkhbbox.h: + +/usr/include/gtk-2.0/gtk/gtkhpaned.h: + +/usr/include/gtk-2.0/gtk/gtkpaned.h: + +/usr/include/gtk-2.0/gtk/gtkhruler.h: + +/usr/include/gtk-2.0/gtk/gtkruler.h: + +/usr/include/gtk-2.0/gtk/gtkhscale.h: + +/usr/include/gtk-2.0/gtk/gtkscale.h: + +/usr/include/gtk-2.0/gtk/gtkrange.h: + +/usr/include/gtk-2.0/gtk/gtkhscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkhseparator.h: + +/usr/include/gtk-2.0/gtk/gtkseparator.h: + +/usr/include/gtk-2.0/gtk/gtkhsv.h: + +/usr/include/gtk-2.0/gtk/gtkiconfactory.h: + +/usr/include/gtk-2.0/gtk/gtkicontheme.h: + +/usr/include/gtk-2.0/gtk/gtkiconview.h: + +/usr/include/gtk-2.0/gtk/gtktooltip.h: + +/usr/include/gtk-2.0/gtk/gtkimagemenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkimcontextsimple.h: + +/usr/include/gtk-2.0/gtk/gtkimmulticontext.h: + +/usr/include/gtk-2.0/gtk/gtkinfobar.h: + +/usr/include/gtk-2.0/gtk/gtkinvisible.h: + +/usr/include/gtk-2.0/gtk/gtklayout.h: + +/usr/include/gtk-2.0/gtk/gtklinkbutton.h: + +/usr/include/gtk-2.0/gtk/gtkmain.h: + +/usr/include/gtk-2.0/gtk/gtkmenubar.h: + +/usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolitem.h: + +/usr/include/gtk-2.0/gtk/gtktooltips.h: + +/usr/include/gtk-2.0/gtk/gtksizegroup.h: + +/usr/include/gtk-2.0/gtk/gtkmessagedialog.h: + +/usr/include/gtk-2.0/gtk/gtkmodules.h: + +/usr/include/gtk-2.0/gtk/gtkmountoperation.h: + +/usr/include/gtk-2.0/gtk/gtknotebook.h: + +/usr/include/gtk-2.0/gtk/gtkoffscreenwindow.h: + +/usr/include/gtk-2.0/gtk/gtkorientable.h: + +/usr/include/gtk-2.0/gtk/gtkpagesetup.h: + +/usr/include/gtk-2.0/gtk/gtkpapersize.h: + +/usr/include/gtk-2.0/gtk/gtkplug.h: + +/usr/include/gtk-2.0/gtk/gtksocket.h: + +/usr/include/gtk-2.0/gtk/gtkprintcontext.h: + +/usr/include/gtk-2.0/gtk/gtkprintoperation.h: + +/usr/include/gtk-2.0/gtk/gtkprintsettings.h: + +/usr/include/gtk-2.0/gtk/gtkprintoperationpreview.h: + +/usr/include/gtk-2.0/gtk/gtkprogressbar.h: + +/usr/include/gtk-2.0/gtk/gtkprogress.h: + +/usr/include/gtk-2.0/gtk/gtkradioaction.h: + +/usr/include/gtk-2.0/gtk/gtktoggleaction.h: + +/usr/include/gtk-2.0/gtk/gtkradiobutton.h: + +/usr/include/gtk-2.0/gtk/gtkradiomenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtkrecentaction.h: + +/usr/include/gtk-2.0/gtk/gtkrecentmanager.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooser.h: + +/usr/include/gtk-2.0/gtk/gtkrecentfilter.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooserdialog.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchoosermenu.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooserwidget.h: + +/usr/include/gtk-2.0/gtk/gtkscalebutton.h: + +/usr/include/gtk-2.0/gtk/gtkscrolledwindow.h: + +/usr/include/gtk-2.0/gtk/gtkvscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkviewport.h: + +/usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h: + +/usr/include/gtk-2.0/gtk/gtkshow.h: + +/usr/include/gtk-2.0/gtk/gtkspinbutton.h: + +/usr/include/gtk-2.0/gtk/gtkspinner.h: + +/usr/include/gtk-2.0/gtk/gtkstatusbar.h: + +/usr/include/gtk-2.0/gtk/gtkstatusicon.h: + +/usr/include/gtk-2.0/gtk/gtkstock.h: + +/usr/include/gtk-2.0/gtk/gtktable.h: + +/usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtktextbuffer.h: + +/usr/include/gtk-2.0/gtk/gtktexttagtable.h: + +/usr/include/gtk-2.0/gtk/gtktextmark.h: + +/usr/include/gtk-2.0/gtk/gtktextbufferrichtext.h: + +/usr/include/gtk-2.0/gtk/gtktextview.h: + +/usr/include/gtk-2.0/gtk/gtktoolbar.h: + +/usr/include/gtk-2.0/gtk/gtkpixmap.h: + +/usr/include/gtk-2.0/gtk/gtktoolitemgroup.h: + +/usr/include/gtk-2.0/gtk/gtktoolpalette.h: + +/usr/include/gtk-2.0/gtk/gtktoolshell.h: + +/usr/include/gtk-2.0/gtk/gtktestutils.h: + +/usr/include/gtk-2.0/gtk/gtktreednd.h: + +/usr/include/gtk-2.0/gtk/gtktreemodelsort.h: + +/usr/include/gtk-2.0/gtk/gtktreeselection.h: + +/usr/include/gtk-2.0/gtk/gtktreestore.h: + +/usr/include/gtk-2.0/gtk/gtkuimanager.h: + +/usr/include/gtk-2.0/gtk/gtkvbbox.h: + +/usr/include/gtk-2.0/gtk/gtkversion.h: + +/usr/include/gtk-2.0/gtk/gtkvolumebutton.h: + +/usr/include/gtk-2.0/gtk/gtkvpaned.h: + +/usr/include/gtk-2.0/gtk/gtkvruler.h: + +/usr/include/gtk-2.0/gtk/gtkvscale.h: + +/usr/include/gtk-2.0/gtk/gtkvseparator.h: + +/usr/include/gtk-2.0/gtk/gtktext.h: + +/usr/include/gtk-2.0/gtk/gtktree.h: + +/usr/include/gtk-2.0/gtk/gtktreeitem.h: + +/usr/include/gtk-2.0/gtk/gtkclist.h: + +/usr/include/gtk-2.0/gtk/gtkcombo.h: + +/usr/include/gtk-2.0/gtk/gtkctree.h: + +/usr/include/gtk-2.0/gtk/gtkcurve.h: + +/usr/include/gtk-2.0/gtk/gtkfilesel.h: + +/usr/include/gtk-2.0/gtk/gtkgamma.h: + +/usr/include/gtk-2.0/gtk/gtkinputdialog.h: + +/usr/include/gtk-2.0/gtk/gtkitemfactory.h: + +/usr/include/gtk-2.0/gtk/gtklist.h: + +/usr/include/gtk-2.0/gtk/gtklistitem.h: + +/usr/include/gtk-2.0/gtk/gtkoldeditable.h: + +/usr/include/gtk-2.0/gtk/gtkoptionmenu.h: + +/usr/include/gtk-2.0/gtk/gtkpreview.h: + +/usr/include/gtk-2.0/gtk/gtktipsquery.h: + +Cheat.h: diff --git a/gui/.deps/Cheat.Po b/gui/.deps/Cheat.Po new file mode 100644 index 0000000..a07139d --- /dev/null +++ b/gui/.deps/Cheat.Po @@ -0,0 +1,1848 @@ +Cheat.o: Cheat.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/string.h /usr/include/xlocale.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/gtk-2.0/gdk/gdkkeysyms.h \ + /usr/include/gtk-2.0/gdk/gdkkeysyms-compat.h \ + /usr/include/gtk-2.0/gtk/gtk.h /usr/include/gtk-2.0/gdk/gdk.h \ + /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h \ + /usr/include/glib-2.0/gio/gio.h /usr/include/glib-2.0/gio/giotypes.h \ + /usr/include/glib-2.0/gio/gioenums.h /usr/include/glib-2.0/glib-object.h \ + /usr/include/glib-2.0/gobject/gbinding.h /usr/include/glib-2.0/glib.h \ + /usr/include/glib-2.0/glib/galloca.h /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib64/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include/float.h \ + /usr/include/glib-2.0/glib/gversionmacros.h \ + /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gasyncqueue.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gatomic.h /usr/include/glib-2.0/glib/gerror.h \ + /usr/include/glib-2.0/glib/gquark.h \ + /usr/include/glib-2.0/glib/gbacktrace.h /usr/include/signal.h \ + /usr/include/bits/signum.h /usr/include/bits/siginfo.h \ + /usr/include/bits/sigaction.h /usr/include/bits/sigcontext.h \ + /usr/include/bits/sigstack.h /usr/include/sys/ucontext.h \ + /usr/include/bits/sigthread.h /usr/include/glib-2.0/glib/gbase64.h \ + /usr/include/glib-2.0/glib/gbitlock.h \ + /usr/include/glib-2.0/glib/gbookmarkfile.h \ + /usr/include/glib-2.0/glib/gbytes.h \ + /usr/include/glib-2.0/glib/gcharset.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ + /usr/include/glib-2.0/glib/gdatetime.h \ + /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ + /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/glib-2.0/glib/genviron.h \ + /usr/include/glib-2.0/glib/gfileutils.h \ + /usr/include/glib-2.0/glib/ggettext.h /usr/include/glib-2.0/glib/ghash.h \ + /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/ghmac.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/ghook.h \ + /usr/include/glib-2.0/glib/ghostutils.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ + /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gutils.h \ + /usr/include/glib-2.0/glib/gkeyfile.h \ + /usr/include/glib-2.0/glib/gmappedfile.h \ + /usr/include/glib-2.0/glib/gmarkup.h \ + /usr/include/glib-2.0/glib/gmessages.h \ + /usr/include/glib-2.0/glib/goption.h \ + /usr/include/glib-2.0/glib/gpattern.h \ + /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ + /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ + /usr/include/glib-2.0/glib/gregex.h \ + /usr/include/glib-2.0/glib/gscanner.h \ + /usr/include/glib-2.0/glib/gsequence.h \ + /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gslice.h \ + /usr/include/glib-2.0/glib/gspawn.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h \ + /usr/include/glib-2.0/glib/gstringchunk.h \ + /usr/include/glib-2.0/glib/gtestutils.h \ + /usr/include/glib-2.0/glib/gthreadpool.h \ + /usr/include/glib-2.0/glib/gtimer.h \ + /usr/include/glib-2.0/glib/gtrashstack.h \ + /usr/include/glib-2.0/glib/gtree.h \ + /usr/include/glib-2.0/glib/gurifuncs.h \ + /usr/include/glib-2.0/glib/gvarianttype.h \ + /usr/include/glib-2.0/glib/gvariant.h \ + /usr/include/glib-2.0/glib/gversion.h \ + /usr/include/glib-2.0/glib/deprecated/gallocator.h \ + /usr/include/glib-2.0/glib/deprecated/gcache.h \ + /usr/include/glib-2.0/glib/deprecated/gcompletion.h \ + /usr/include/glib-2.0/glib/deprecated/gmain.h \ + /usr/include/glib-2.0/glib/deprecated/grel.h \ + /usr/include/glib-2.0/glib/deprecated/gthread.h /usr/include/pthread.h \ + /usr/include/sched.h /usr/include/bits/sched.h \ + /usr/include/bits/setjmp.h /usr/include/glib-2.0/gobject/gobject.h \ + /usr/include/glib-2.0/gobject/gtype.h \ + /usr/include/glib-2.0/gobject/gvalue.h \ + /usr/include/glib-2.0/gobject/gparam.h \ + /usr/include/glib-2.0/gobject/gclosure.h \ + /usr/include/glib-2.0/gobject/gsignal.h \ + /usr/include/glib-2.0/gobject/gmarshal.h \ + /usr/include/glib-2.0/gobject/gboxed.h \ + /usr/include/glib-2.0/gobject/glib-types.h \ + /usr/include/glib-2.0/gobject/genums.h \ + /usr/include/glib-2.0/gobject/gparamspecs.h \ + /usr/include/glib-2.0/gobject/gsourceclosure.h \ + /usr/include/glib-2.0/gobject/gtypemodule.h \ + /usr/include/glib-2.0/gobject/gtypeplugin.h \ + /usr/include/glib-2.0/gobject/gvaluearray.h \ + /usr/include/glib-2.0/gobject/gvaluetypes.h \ + /usr/include/glib-2.0/gio/gaction.h \ + /usr/include/glib-2.0/gio/gactiongroup.h \ + /usr/include/glib-2.0/gio/gactiongroupexporter.h \ + /usr/include/glib-2.0/gio/gactionmap.h \ + /usr/include/glib-2.0/gio/gappinfo.h \ + /usr/include/glib-2.0/gio/gapplication.h \ + /usr/include/glib-2.0/gio/gapplicationcommandline.h \ + /usr/include/glib-2.0/gio/gasyncinitable.h \ + /usr/include/glib-2.0/gio/ginitable.h \ + /usr/include/glib-2.0/gio/gasyncresult.h \ + /usr/include/glib-2.0/gio/gbufferedinputstream.h \ + /usr/include/glib-2.0/gio/gfilterinputstream.h \ + /usr/include/glib-2.0/gio/ginputstream.h \ + /usr/include/glib-2.0/gio/gbufferedoutputstream.h \ + /usr/include/glib-2.0/gio/gfilteroutputstream.h \ + /usr/include/glib-2.0/gio/goutputstream.h \ + /usr/include/glib-2.0/gio/gbytesicon.h \ + /usr/include/glib-2.0/gio/gcancellable.h \ + /usr/include/glib-2.0/gio/gcharsetconverter.h \ + /usr/include/glib-2.0/gio/gconverter.h \ + /usr/include/glib-2.0/gio/gcontenttype.h \ + /usr/include/glib-2.0/gio/gconverterinputstream.h \ + /usr/include/glib-2.0/gio/gconverteroutputstream.h \ + /usr/include/glib-2.0/gio/gcredentials.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/getopt.h \ + /usr/include/glib-2.0/gio/gdatainputstream.h \ + /usr/include/glib-2.0/gio/gdataoutputstream.h \ + /usr/include/glib-2.0/gio/gdbusaddress.h \ + /usr/include/glib-2.0/gio/gdbusauthobserver.h \ + /usr/include/glib-2.0/gio/gdbusconnection.h \ + /usr/include/glib-2.0/gio/gdbuserror.h \ + /usr/include/glib-2.0/gio/gdbusintrospection.h \ + /usr/include/glib-2.0/gio/gdbusmessage.h \ + /usr/include/glib-2.0/gio/gdbusmethodinvocation.h \ + /usr/include/glib-2.0/gio/gdbusnameowning.h \ + /usr/include/glib-2.0/gio/gdbusnamewatching.h \ + /usr/include/glib-2.0/gio/gdbusproxy.h \ + /usr/include/glib-2.0/gio/gdbusserver.h \ + /usr/include/glib-2.0/gio/gdbusutils.h \ + /usr/include/glib-2.0/gio/gdrive.h \ + /usr/include/glib-2.0/gio/gemblemedicon.h \ + /usr/include/glib-2.0/gio/gicon.h /usr/include/glib-2.0/gio/gemblem.h \ + /usr/include/glib-2.0/gio/gfileattribute.h \ + /usr/include/glib-2.0/gio/gfileenumerator.h \ + /usr/include/glib-2.0/gio/gfile.h /usr/include/glib-2.0/gio/gfileicon.h \ + /usr/include/glib-2.0/gio/gfileinfo.h \ + /usr/include/glib-2.0/gio/gfileinputstream.h \ + /usr/include/glib-2.0/gio/gfileiostream.h \ + /usr/include/glib-2.0/gio/giostream.h \ + /usr/include/glib-2.0/gio/gioerror.h \ + /usr/include/glib-2.0/gio/gfilemonitor.h \ + /usr/include/glib-2.0/gio/gfilenamecompleter.h \ + /usr/include/glib-2.0/gio/gfileoutputstream.h \ + /usr/include/glib-2.0/gio/ginetaddress.h \ + /usr/include/glib-2.0/gio/ginetaddressmask.h \ + /usr/include/glib-2.0/gio/ginetsocketaddress.h \ + /usr/include/glib-2.0/gio/gsocketaddress.h \ + /usr/include/glib-2.0/gio/gioenumtypes.h \ + /usr/include/glib-2.0/gio/giomodule.h /usr/include/glib-2.0/gmodule.h \ + /usr/include/glib-2.0/gio/gioscheduler.h \ + /usr/include/glib-2.0/gio/gloadableicon.h \ + /usr/include/glib-2.0/gio/gmemoryinputstream.h \ + /usr/include/glib-2.0/gio/gmemoryoutputstream.h \ + /usr/include/glib-2.0/gio/gmount.h \ + /usr/include/glib-2.0/gio/gmountoperation.h \ + /usr/include/glib-2.0/gio/gnativevolumemonitor.h \ + /usr/include/glib-2.0/gio/gvolumemonitor.h \ + /usr/include/glib-2.0/gio/gnetworkaddress.h \ + /usr/include/glib-2.0/gio/gnetworkmonitor.h \ + /usr/include/glib-2.0/gio/gnetworkservice.h \ + /usr/include/glib-2.0/gio/gpermission.h \ + /usr/include/glib-2.0/gio/gpollableinputstream.h \ + /usr/include/glib-2.0/gio/gpollableoutputstream.h \ + /usr/include/glib-2.0/gio/gpollableutils.h \ + /usr/include/glib-2.0/gio/gpropertyaction.h \ + /usr/include/glib-2.0/gio/gproxy.h \ + /usr/include/glib-2.0/gio/gproxyaddress.h \ + /usr/include/glib-2.0/gio/gproxyaddressenumerator.h \ + /usr/include/glib-2.0/gio/gsocketaddressenumerator.h \ + /usr/include/glib-2.0/gio/gproxyresolver.h \ + /usr/include/glib-2.0/gio/gresolver.h \ + /usr/include/glib-2.0/gio/gresource.h \ + /usr/include/glib-2.0/gio/gseekable.h \ + /usr/include/glib-2.0/gio/gsettingsschema.h \ + /usr/include/glib-2.0/gio/gsettings.h \ + /usr/include/glib-2.0/gio/gsimpleaction.h \ + /usr/include/glib-2.0/gio/gsimpleactiongroup.h \ + /usr/include/glib-2.0/gio/gactiongroup.h \ + /usr/include/glib-2.0/gio/gactionmap.h \ + /usr/include/glib-2.0/gio/gsimpleasyncresult.h \ + /usr/include/glib-2.0/gio/gsimplepermission.h \ + /usr/include/glib-2.0/gio/gsocketclient.h \ + /usr/include/glib-2.0/gio/gsocketconnectable.h \ + /usr/include/glib-2.0/gio/gsocketconnection.h \ + /usr/include/glib-2.0/gio/gsocket.h \ + /usr/include/glib-2.0/gio/gsocketcontrolmessage.h \ + /usr/include/glib-2.0/gio/gsocketlistener.h \ + /usr/include/glib-2.0/gio/gsocketservice.h \ + /usr/include/glib-2.0/gio/gsrvtarget.h \ + /usr/include/glib-2.0/gio/gsimpleproxyresolver.h \ + /usr/include/glib-2.0/gio/gtask.h \ + /usr/include/glib-2.0/gio/gsubprocess.h \ + /usr/include/glib-2.0/gio/gsubprocesslauncher.h \ + /usr/include/glib-2.0/gio/gtcpconnection.h \ + /usr/include/glib-2.0/gio/gtcpwrapperconnection.h \ + /usr/include/glib-2.0/gio/gtestdbus.h \ + /usr/include/glib-2.0/gio/gthemedicon.h \ + /usr/include/glib-2.0/gio/gthreadedsocketservice.h \ + /usr/include/glib-2.0/gio/gtlsbackend.h \ + /usr/include/glib-2.0/gio/gtlscertificate.h \ + /usr/include/glib-2.0/gio/gtlsclientconnection.h \ + /usr/include/glib-2.0/gio/gtlsconnection.h \ + /usr/include/glib-2.0/gio/gtlsdatabase.h \ + /usr/include/glib-2.0/gio/gtlsfiledatabase.h \ + /usr/include/glib-2.0/gio/gtlsinteraction.h \ + /usr/include/glib-2.0/gio/gtlsserverconnection.h \ + /usr/include/glib-2.0/gio/gtlspassword.h \ + /usr/include/glib-2.0/gio/gvfs.h /usr/include/glib-2.0/gio/gvolume.h \ + /usr/include/glib-2.0/gio/gzlibcompressor.h \ + /usr/include/glib-2.0/gio/gzlibdecompressor.h \ + /usr/include/glib-2.0/gio/gdbusinterface.h \ + /usr/include/glib-2.0/gio/gdbusinterfaceskeleton.h \ + /usr/include/glib-2.0/gio/gdbusobject.h \ + /usr/include/glib-2.0/gio/gdbusobjectskeleton.h \ + /usr/include/glib-2.0/gio/gdbusobjectproxy.h \ + /usr/include/glib-2.0/gio/gdbusobjectmanager.h \ + /usr/include/glib-2.0/gio/gdbusobjectmanagerclient.h \ + /usr/include/glib-2.0/gio/gdbusobjectmanagerserver.h \ + /usr/include/glib-2.0/gio/gdbusactiongroup.h \ + /usr/include/glib-2.0/gio/giotypes.h \ + /usr/include/glib-2.0/gio/gremoteactiongroup.h \ + /usr/include/glib-2.0/gio/gmenumodel.h /usr/include/glib-2.0/gio/gmenu.h \ + /usr/include/glib-2.0/gio/gmenuexporter.h \ + /usr/include/glib-2.0/gio/gdbusmenumodel.h \ + /usr/include/glib-2.0/gio/gnotification.h \ + /usr/include/gtk-2.0/gdk/gdkscreen.h /usr/include/cairo/cairo.h \ + /usr/include/cairo/cairo-version.h /usr/include/cairo/cairo-features.h \ + /usr/include/cairo/cairo-deprecated.h \ + /usr/include/gtk-2.0/gdk/gdktypes.h /usr/include/pango-1.0/pango/pango.h \ + /usr/include/pango-1.0/pango/pango-attributes.h \ + /usr/include/pango-1.0/pango/pango-font.h \ + /usr/include/pango-1.0/pango/pango-coverage.h \ + /usr/include/pango-1.0/pango/pango-types.h \ + /usr/include/pango-1.0/pango/pango-gravity.h \ + /usr/include/pango-1.0/pango/pango-matrix.h \ + /usr/include/pango-1.0/pango/pango-script.h \ + /usr/include/pango-1.0/pango/pango-language.h \ + /usr/include/pango-1.0/pango/pango-bidi-type.h \ + /usr/include/pango-1.0/pango/pango-break.h \ + /usr/include/pango-1.0/pango/pango-item.h \ + /usr/include/pango-1.0/pango/pango-context.h \ + /usr/include/pango-1.0/pango/pango-fontmap.h \ + /usr/include/pango-1.0/pango/pango-fontset.h \ + /usr/include/pango-1.0/pango/pango-engine.h \ + /usr/include/pango-1.0/pango/pango-glyph.h \ + /usr/include/pango-1.0/pango/pango-enum-types.h \ + /usr/include/pango-1.0/pango/pango-features.h \ + /usr/include/pango-1.0/pango/pango-glyph-item.h \ + /usr/include/pango-1.0/pango/pango-layout.h \ + /usr/include/pango-1.0/pango/pango-tabs.h \ + /usr/include/pango-1.0/pango/pango-renderer.h \ + /usr/include/pango-1.0/pango/pango-utils.h \ + /usr/lib64/gtk-2.0/include/gdkconfig.h \ + /usr/include/gtk-2.0/gdk/gdkdisplay.h \ + /usr/include/gtk-2.0/gdk/gdkevents.h /usr/include/gtk-2.0/gdk/gdkcolor.h \ + /usr/include/gtk-2.0/gdk/gdkdnd.h /usr/include/gtk-2.0/gdk/gdkinput.h \ + /usr/include/gtk-2.0/gdk/gdkcairo.h /usr/include/gtk-2.0/gdk/gdkpixbuf.h \ + /usr/include/gtk-2.0/gdk/gdkrgb.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h \ + /usr/include/pango-1.0/pango/pangocairo.h \ + /usr/include/gtk-2.0/gdk/gdkcursor.h \ + /usr/include/gtk-2.0/gdk/gdkdisplaymanager.h \ + /usr/include/gtk-2.0/gdk/gdkdrawable.h /usr/include/gtk-2.0/gdk/gdkgc.h \ + /usr/include/gtk-2.0/gdk/gdkenumtypes.h \ + /usr/include/gtk-2.0/gdk/gdkfont.h /usr/include/gtk-2.0/gdk/gdkimage.h \ + /usr/include/gtk-2.0/gdk/gdkkeys.h /usr/include/gtk-2.0/gdk/gdkpango.h \ + /usr/include/gtk-2.0/gdk/gdkpixmap.h \ + /usr/include/gtk-2.0/gdk/gdkproperty.h \ + /usr/include/gtk-2.0/gdk/gdkregion.h \ + /usr/include/gtk-2.0/gdk/gdkselection.h \ + /usr/include/gtk-2.0/gdk/gdkspawn.h \ + /usr/include/gtk-2.0/gdk/gdktestutils.h \ + /usr/include/gtk-2.0/gdk/gdkwindow.h \ + /usr/include/gtk-2.0/gdk/gdkvisual.h \ + /usr/include/gtk-2.0/gtk/gtkaboutdialog.h \ + /usr/include/gtk-2.0/gtk/gtkdialog.h \ + /usr/include/gtk-2.0/gtk/gtkwindow.h \ + /usr/include/gtk-2.0/gtk/gtkaccelgroup.h \ + /usr/include/gtk-2.0/gtk/gtkenums.h /usr/include/gtk-2.0/gtk/gtkbin.h \ + /usr/include/gtk-2.0/gtk/gtkcontainer.h \ + /usr/include/gtk-2.0/gtk/gtkwidget.h \ + /usr/include/gtk-2.0/gtk/gtkobject.h \ + /usr/include/gtk-2.0/gtk/gtktypeutils.h \ + /usr/include/gtk-2.0/gtk/gtktypebuiltins.h \ + /usr/include/gtk-2.0/gtk/gtkdebug.h \ + /usr/include/gtk-2.0/gtk/gtkadjustment.h \ + /usr/include/gtk-2.0/gtk/gtkstyle.h \ + /usr/include/gtk-2.0/gtk/gtksettings.h /usr/include/gtk-2.0/gtk/gtkrc.h \ + /usr/include/atk-1.0/atk/atk.h /usr/include/atk-1.0/atk/atkobject.h \ + /usr/include/atk-1.0/atk/atkversion.h \ + /usr/include/atk-1.0/atk/atkstate.h \ + /usr/include/atk-1.0/atk/atkrelationtype.h \ + /usr/include/atk-1.0/atk/atkaction.h \ + /usr/include/atk-1.0/atk/atkcomponent.h \ + /usr/include/atk-1.0/atk/atkutil.h \ + /usr/include/atk-1.0/atk/atkdocument.h \ + /usr/include/atk-1.0/atk/atkeditabletext.h \ + /usr/include/atk-1.0/atk/atktext.h \ + /usr/include/atk-1.0/atk/atk-enum-types.h \ + /usr/include/atk-1.0/atk/atkgobjectaccessible.h \ + /usr/include/atk-1.0/atk/atkhyperlink.h \ + /usr/include/atk-1.0/atk/atkhyperlinkimpl.h \ + /usr/include/atk-1.0/atk/atkhypertext.h \ + /usr/include/atk-1.0/atk/atkimage.h \ + /usr/include/atk-1.0/atk/atknoopobject.h \ + /usr/include/atk-1.0/atk/atknoopobjectfactory.h \ + /usr/include/atk-1.0/atk/atkobjectfactory.h \ + /usr/include/atk-1.0/atk/atkplug.h /usr/include/atk-1.0/atk/atkrange.h \ + /usr/include/atk-1.0/atk/atkregistry.h \ + /usr/include/atk-1.0/atk/atkobjectfactory.h \ + /usr/include/atk-1.0/atk/atkrelation.h \ + /usr/include/atk-1.0/atk/atkrelationset.h \ + /usr/include/atk-1.0/atk/atkselection.h \ + /usr/include/atk-1.0/atk/atksocket.h \ + /usr/include/atk-1.0/atk/atkstateset.h \ + /usr/include/atk-1.0/atk/atkstreamablecontent.h \ + /usr/include/atk-1.0/atk/atktable.h \ + /usr/include/atk-1.0/atk/atktablecell.h \ + /usr/include/atk-1.0/atk/atkmisc.h /usr/include/atk-1.0/atk/atkvalue.h \ + /usr/include/atk-1.0/atk/atkwindow.h \ + /usr/include/gtk-2.0/gtk/gtkaccellabel.h \ + /usr/include/gtk-2.0/gtk/gtklabel.h /usr/include/gtk-2.0/gtk/gtkmisc.h \ + /usr/include/gtk-2.0/gtk/gtkmenu.h \ + /usr/include/gtk-2.0/gtk/gtkmenushell.h \ + /usr/include/gtk-2.0/gtk/gtkaccelmap.h \ + /usr/include/gtk-2.0/gtk/gtkaccessible.h \ + /usr/include/gtk-2.0/gtk/gtkaction.h \ + /usr/include/gtk-2.0/gtk/gtkactiongroup.h \ + /usr/include/gtk-2.0/gtk/gtkactivatable.h \ + /usr/include/gtk-2.0/gtk/gtkalignment.h \ + /usr/include/gtk-2.0/gtk/gtkarrow.h \ + /usr/include/gtk-2.0/gtk/gtkaspectframe.h \ + /usr/include/gtk-2.0/gtk/gtkframe.h \ + /usr/include/gtk-2.0/gtk/gtkassistant.h \ + /usr/include/gtk-2.0/gtk/gtkbbox.h /usr/include/gtk-2.0/gtk/gtkbox.h \ + /usr/include/gtk-2.0/gtk/gtkbindings.h \ + /usr/include/gtk-2.0/gtk/gtkbuildable.h \ + /usr/include/gtk-2.0/gtk/gtkbuilder.h \ + /usr/include/gtk-2.0/gtk/gtkbutton.h /usr/include/gtk-2.0/gtk/gtkimage.h \ + /usr/include/gtk-2.0/gtk/gtkcalendar.h \ + /usr/include/gtk-2.0/gtk/gtksignal.h \ + /usr/include/gtk-2.0/gtk/gtkmarshal.h \ + /usr/include/gtk-2.0/gtk/gtkcelleditable.h \ + /usr/include/gtk-2.0/gtk/gtkcelllayout.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderer.h \ + /usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h \ + /usr/include/gtk-2.0/gtk/gtktreemodel.h \ + /usr/include/gtk-2.0/gtk/gtktreesortable.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendereraccel.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderertext.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderercombo.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererprogress.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererspin.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererspinner.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h \ + /usr/include/gtk-2.0/gtk/gtkcellview.h \ + /usr/include/gtk-2.0/gtk/gtkcheckbutton.h \ + /usr/include/gtk-2.0/gtk/gtktogglebutton.h \ + /usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkitem.h \ + /usr/include/gtk-2.0/gtk/gtkclipboard.h \ + /usr/include/gtk-2.0/gtk/gtkselection.h \ + /usr/include/gtk-2.0/gtk/gtktextiter.h \ + /usr/include/gtk-2.0/gtk/gtktexttag.h \ + /usr/include/gtk-2.0/gtk/gtktextchild.h \ + /usr/include/gtk-2.0/gtk/gtkcolorbutton.h \ + /usr/include/gtk-2.0/gtk/gtkcolorsel.h \ + /usr/include/gtk-2.0/gtk/gtkvbox.h \ + /usr/include/gtk-2.0/gtk/gtkcolorseldialog.h \ + /usr/include/gtk-2.0/gtk/gtkcombobox.h \ + /usr/include/gtk-2.0/gtk/gtktreeview.h /usr/include/gtk-2.0/gtk/gtkdnd.h \ + /usr/include/gtk-2.0/gtk/gtkentry.h \ + /usr/include/gtk-2.0/gtk/gtkeditable.h \ + /usr/include/gtk-2.0/gtk/gtkimcontext.h \ + /usr/include/gtk-2.0/gtk/gtkentrybuffer.h \ + /usr/include/gtk-2.0/gtk/gtkentrycompletion.h \ + /usr/include/gtk-2.0/gtk/gtkliststore.h \ + /usr/include/gtk-2.0/gtk/gtktreemodelfilter.h \ + /usr/include/gtk-2.0/gtk/gtkcomboboxentry.h \ + /usr/include/gtk-2.0/gtk/gtkcomboboxtext.h \ + /usr/include/gtk-2.0/gtk/gtkdrawingarea.h \ + /usr/include/gtk-2.0/gtk/gtkeventbox.h \ + /usr/include/gtk-2.0/gtk/gtkexpander.h \ + /usr/include/gtk-2.0/gtk/gtkfixed.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooser.h \ + /usr/include/gtk-2.0/gtk/gtkfilefilter.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h \ + /usr/include/gtk-2.0/gtk/gtkhbox.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h \ + /usr/include/gtk-2.0/gtk/gtkfontbutton.h \ + /usr/include/gtk-2.0/gtk/gtkfontsel.h /usr/include/gtk-2.0/gtk/gtkgc.h \ + /usr/include/gtk-2.0/gtk/gtkhandlebox.h \ + /usr/include/gtk-2.0/gtk/gtkhbbox.h /usr/include/gtk-2.0/gtk/gtkhpaned.h \ + /usr/include/gtk-2.0/gtk/gtkpaned.h /usr/include/gtk-2.0/gtk/gtkhruler.h \ + /usr/include/gtk-2.0/gtk/gtkruler.h /usr/include/gtk-2.0/gtk/gtkhscale.h \ + /usr/include/gtk-2.0/gtk/gtkscale.h /usr/include/gtk-2.0/gtk/gtkrange.h \ + /usr/include/gtk-2.0/gtk/gtkhscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkhseparator.h \ + /usr/include/gtk-2.0/gtk/gtkseparator.h \ + /usr/include/gtk-2.0/gtk/gtkhsv.h \ + /usr/include/gtk-2.0/gtk/gtkiconfactory.h \ + /usr/include/gtk-2.0/gtk/gtkicontheme.h \ + /usr/include/gtk-2.0/gtk/gtkiconview.h \ + /usr/include/gtk-2.0/gtk/gtktooltip.h \ + /usr/include/gtk-2.0/gtk/gtkimagemenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkimcontextsimple.h \ + /usr/include/gtk-2.0/gtk/gtkimmulticontext.h \ + /usr/include/gtk-2.0/gtk/gtkinfobar.h \ + /usr/include/gtk-2.0/gtk/gtkinvisible.h \ + /usr/include/gtk-2.0/gtk/gtklayout.h \ + /usr/include/gtk-2.0/gtk/gtklinkbutton.h \ + /usr/include/gtk-2.0/gtk/gtkmain.h /usr/include/gtk-2.0/gtk/gtkmenubar.h \ + /usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolitem.h \ + /usr/include/gtk-2.0/gtk/gtktooltips.h \ + /usr/include/gtk-2.0/gtk/gtksizegroup.h \ + /usr/include/gtk-2.0/gtk/gtkmessagedialog.h \ + /usr/include/gtk-2.0/gtk/gtkmodules.h \ + /usr/include/gtk-2.0/gtk/gtkmountoperation.h \ + /usr/include/gtk-2.0/gtk/gtknotebook.h \ + /usr/include/gtk-2.0/gtk/gtkoffscreenwindow.h \ + /usr/include/gtk-2.0/gtk/gtkorientable.h \ + /usr/include/gtk-2.0/gtk/gtkpagesetup.h \ + /usr/include/gtk-2.0/gtk/gtkpapersize.h \ + /usr/include/gtk-2.0/gtk/gtkplug.h /usr/include/gtk-2.0/gtk/gtksocket.h \ + /usr/include/gtk-2.0/gtk/gtkprintcontext.h \ + /usr/include/gtk-2.0/gtk/gtkprintoperation.h \ + /usr/include/gtk-2.0/gtk/gtkprintsettings.h \ + /usr/include/gtk-2.0/gtk/gtkprintoperationpreview.h \ + /usr/include/gtk-2.0/gtk/gtkprogressbar.h \ + /usr/include/gtk-2.0/gtk/gtkprogress.h \ + /usr/include/gtk-2.0/gtk/gtkradioaction.h \ + /usr/include/gtk-2.0/gtk/gtktoggleaction.h \ + /usr/include/gtk-2.0/gtk/gtkradiobutton.h \ + /usr/include/gtk-2.0/gtk/gtkradiomenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtkrecentaction.h \ + /usr/include/gtk-2.0/gtk/gtkrecentmanager.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooser.h \ + /usr/include/gtk-2.0/gtk/gtkrecentfilter.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooserdialog.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchoosermenu.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooserwidget.h \ + /usr/include/gtk-2.0/gtk/gtkscalebutton.h \ + /usr/include/gtk-2.0/gtk/gtkscrolledwindow.h \ + /usr/include/gtk-2.0/gtk/gtkvscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkviewport.h \ + /usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h \ + /usr/include/gtk-2.0/gtk/gtkshow.h \ + /usr/include/gtk-2.0/gtk/gtkspinbutton.h \ + /usr/include/gtk-2.0/gtk/gtkspinner.h \ + /usr/include/gtk-2.0/gtk/gtkstatusbar.h \ + /usr/include/gtk-2.0/gtk/gtkstatusicon.h \ + /usr/include/gtk-2.0/gtk/gtkstock.h /usr/include/gtk-2.0/gtk/gtktable.h \ + /usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtktextbuffer.h \ + /usr/include/gtk-2.0/gtk/gtktexttagtable.h \ + /usr/include/gtk-2.0/gtk/gtktextmark.h \ + /usr/include/gtk-2.0/gtk/gtktextbufferrichtext.h \ + /usr/include/gtk-2.0/gtk/gtktextview.h \ + /usr/include/gtk-2.0/gtk/gtktoolbar.h \ + /usr/include/gtk-2.0/gtk/gtkpixmap.h \ + /usr/include/gtk-2.0/gtk/gtktoolitemgroup.h \ + /usr/include/gtk-2.0/gtk/gtktoolpalette.h \ + /usr/include/gtk-2.0/gtk/gtktoolshell.h \ + /usr/include/gtk-2.0/gtk/gtktestutils.h \ + /usr/include/gtk-2.0/gtk/gtktreednd.h \ + /usr/include/gtk-2.0/gtk/gtktreemodelsort.h \ + /usr/include/gtk-2.0/gtk/gtktreeselection.h \ + /usr/include/gtk-2.0/gtk/gtktreestore.h \ + /usr/include/gtk-2.0/gtk/gtkuimanager.h \ + /usr/include/gtk-2.0/gtk/gtkvbbox.h \ + /usr/include/gtk-2.0/gtk/gtkversion.h \ + /usr/include/gtk-2.0/gtk/gtkvolumebutton.h \ + /usr/include/gtk-2.0/gtk/gtkvpaned.h \ + /usr/include/gtk-2.0/gtk/gtkvruler.h \ + /usr/include/gtk-2.0/gtk/gtkvscale.h \ + /usr/include/gtk-2.0/gtk/gtkvseparator.h \ + /usr/include/gtk-2.0/gtk/gtktext.h /usr/include/gtk-2.0/gtk/gtktree.h \ + /usr/include/gtk-2.0/gtk/gtktreeitem.h \ + /usr/include/gtk-2.0/gtk/gtkclist.h /usr/include/gtk-2.0/gtk/gtkcombo.h \ + /usr/include/gtk-2.0/gtk/gtkctree.h /usr/include/gtk-2.0/gtk/gtkcurve.h \ + /usr/include/gtk-2.0/gtk/gtkfilesel.h \ + /usr/include/gtk-2.0/gtk/gtkgamma.h \ + /usr/include/gtk-2.0/gtk/gtkinputdialog.h \ + /usr/include/gtk-2.0/gtk/gtkitemfactory.h \ + /usr/include/gtk-2.0/gtk/gtklist.h \ + /usr/include/gtk-2.0/gtk/gtklistitem.h \ + /usr/include/gtk-2.0/gtk/gtkoldeditable.h \ + /usr/include/gtk-2.0/gtk/gtkoptionmenu.h \ + /usr/include/gtk-2.0/gtk/gtkpreview.h \ + /usr/include/gtk-2.0/gtk/gtktipsquery.h \ + /usr/include/libglade-2.0/glade/glade.h \ + /usr/include/libglade-2.0/glade/glade-init.h \ + /usr/include/libglade-2.0/glade/glade-xml.h Linux.h ../include/config.h \ + ../libpcsxcore/psxcommon.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/include/ctype.h /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/zconf.h ../libpcsxcore/system.h ../libpcsxcore/debug.h \ + /usr/include/libintl.h /usr/include/locale.h /usr/include/bits/locale.h \ + Cheat.h ../libpcsxcore/cheat.h ../libpcsxcore/psxmem.h \ + ../libpcsxcore/psxcommon.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-bsearch.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/bits/wchar.h: + +/usr/include/gtk-2.0/gdk/gdkkeysyms.h: + +/usr/include/gtk-2.0/gdk/gdkkeysyms-compat.h: + +/usr/include/gtk-2.0/gtk/gtk.h: + +/usr/include/gtk-2.0/gdk/gdk.h: + +/usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h: + +/usr/include/glib-2.0/gio/gio.h: + +/usr/include/glib-2.0/gio/giotypes.h: + +/usr/include/glib-2.0/gio/gioenums.h: + +/usr/include/glib-2.0/glib-object.h: + +/usr/include/glib-2.0/gobject/gbinding.h: + +/usr/include/glib-2.0/glib.h: + +/usr/include/glib-2.0/glib/galloca.h: + +/usr/include/glib-2.0/glib/gtypes.h: + +/usr/lib64/glib-2.0/include/glibconfig.h: + +/usr/include/glib-2.0/glib/gmacros.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/limits.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include/float.h: + +/usr/include/glib-2.0/glib/gversionmacros.h: + +/usr/include/glib-2.0/glib/garray.h: + +/usr/include/glib-2.0/glib/gasyncqueue.h: + +/usr/include/glib-2.0/glib/gthread.h: + +/usr/include/glib-2.0/glib/gatomic.h: + +/usr/include/glib-2.0/glib/gerror.h: + +/usr/include/glib-2.0/glib/gquark.h: + +/usr/include/glib-2.0/glib/gbacktrace.h: + +/usr/include/signal.h: + +/usr/include/bits/signum.h: + +/usr/include/bits/siginfo.h: + +/usr/include/bits/sigaction.h: + +/usr/include/bits/sigcontext.h: + +/usr/include/bits/sigstack.h: + +/usr/include/sys/ucontext.h: + +/usr/include/bits/sigthread.h: + +/usr/include/glib-2.0/glib/gbase64.h: + +/usr/include/glib-2.0/glib/gbitlock.h: + +/usr/include/glib-2.0/glib/gbookmarkfile.h: + +/usr/include/glib-2.0/glib/gbytes.h: + +/usr/include/glib-2.0/glib/gcharset.h: + +/usr/include/glib-2.0/glib/gchecksum.h: + +/usr/include/glib-2.0/glib/gconvert.h: + +/usr/include/glib-2.0/glib/gdataset.h: + +/usr/include/glib-2.0/glib/gdate.h: + +/usr/include/glib-2.0/glib/gdatetime.h: + +/usr/include/glib-2.0/glib/gtimezone.h: + +/usr/include/glib-2.0/glib/gdir.h: + +/usr/include/dirent.h: + +/usr/include/bits/dirent.h: + +/usr/include/glib-2.0/glib/genviron.h: + +/usr/include/glib-2.0/glib/gfileutils.h: + +/usr/include/glib-2.0/glib/ggettext.h: + +/usr/include/glib-2.0/glib/ghash.h: + +/usr/include/glib-2.0/glib/glist.h: + +/usr/include/glib-2.0/glib/gmem.h: + +/usr/include/glib-2.0/glib/gnode.h: + +/usr/include/glib-2.0/glib/ghmac.h: + +/usr/include/glib-2.0/glib/gchecksum.h: + +/usr/include/glib-2.0/glib/ghook.h: + +/usr/include/glib-2.0/glib/ghostutils.h: + +/usr/include/glib-2.0/glib/giochannel.h: + +/usr/include/glib-2.0/glib/gmain.h: + +/usr/include/glib-2.0/glib/gpoll.h: + +/usr/include/glib-2.0/glib/gslist.h: + +/usr/include/glib-2.0/glib/gstring.h: + +/usr/include/glib-2.0/glib/gunicode.h: + +/usr/include/glib-2.0/glib/gutils.h: + +/usr/include/glib-2.0/glib/gkeyfile.h: + +/usr/include/glib-2.0/glib/gmappedfile.h: + +/usr/include/glib-2.0/glib/gmarkup.h: + +/usr/include/glib-2.0/glib/gmessages.h: + +/usr/include/glib-2.0/glib/goption.h: + +/usr/include/glib-2.0/glib/gpattern.h: + +/usr/include/glib-2.0/glib/gprimes.h: + +/usr/include/glib-2.0/glib/gqsort.h: + +/usr/include/glib-2.0/glib/gqueue.h: + +/usr/include/glib-2.0/glib/grand.h: + +/usr/include/glib-2.0/glib/gregex.h: + +/usr/include/glib-2.0/glib/gscanner.h: + +/usr/include/glib-2.0/glib/gsequence.h: + +/usr/include/glib-2.0/glib/gshell.h: + +/usr/include/glib-2.0/glib/gslice.h: + +/usr/include/glib-2.0/glib/gspawn.h: + +/usr/include/glib-2.0/glib/gstrfuncs.h: + +/usr/include/glib-2.0/glib/gstringchunk.h: + +/usr/include/glib-2.0/glib/gtestutils.h: + +/usr/include/glib-2.0/glib/gthreadpool.h: + +/usr/include/glib-2.0/glib/gtimer.h: + +/usr/include/glib-2.0/glib/gtrashstack.h: + +/usr/include/glib-2.0/glib/gtree.h: + +/usr/include/glib-2.0/glib/gurifuncs.h: + +/usr/include/glib-2.0/glib/gvarianttype.h: + +/usr/include/glib-2.0/glib/gvariant.h: + +/usr/include/glib-2.0/glib/gversion.h: + +/usr/include/glib-2.0/glib/deprecated/gallocator.h: + +/usr/include/glib-2.0/glib/deprecated/gcache.h: + +/usr/include/glib-2.0/glib/deprecated/gcompletion.h: + +/usr/include/glib-2.0/glib/deprecated/gmain.h: + +/usr/include/glib-2.0/glib/deprecated/grel.h: + +/usr/include/glib-2.0/glib/deprecated/gthread.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/setjmp.h: + +/usr/include/glib-2.0/gobject/gobject.h: + +/usr/include/glib-2.0/gobject/gtype.h: + +/usr/include/glib-2.0/gobject/gvalue.h: + +/usr/include/glib-2.0/gobject/gparam.h: + +/usr/include/glib-2.0/gobject/gclosure.h: + +/usr/include/glib-2.0/gobject/gsignal.h: + +/usr/include/glib-2.0/gobject/gmarshal.h: + +/usr/include/glib-2.0/gobject/gboxed.h: + +/usr/include/glib-2.0/gobject/glib-types.h: + +/usr/include/glib-2.0/gobject/genums.h: + +/usr/include/glib-2.0/gobject/gparamspecs.h: + +/usr/include/glib-2.0/gobject/gsourceclosure.h: + +/usr/include/glib-2.0/gobject/gtypemodule.h: + +/usr/include/glib-2.0/gobject/gtypeplugin.h: + +/usr/include/glib-2.0/gobject/gvaluearray.h: + +/usr/include/glib-2.0/gobject/gvaluetypes.h: + +/usr/include/glib-2.0/gio/gaction.h: + +/usr/include/glib-2.0/gio/gactiongroup.h: + +/usr/include/glib-2.0/gio/gactiongroupexporter.h: + +/usr/include/glib-2.0/gio/gactionmap.h: + +/usr/include/glib-2.0/gio/gappinfo.h: + +/usr/include/glib-2.0/gio/gapplication.h: + +/usr/include/glib-2.0/gio/gapplicationcommandline.h: + +/usr/include/glib-2.0/gio/gasyncinitable.h: + +/usr/include/glib-2.0/gio/ginitable.h: + +/usr/include/glib-2.0/gio/gasyncresult.h: + +/usr/include/glib-2.0/gio/gbufferedinputstream.h: + +/usr/include/glib-2.0/gio/gfilterinputstream.h: + +/usr/include/glib-2.0/gio/ginputstream.h: + +/usr/include/glib-2.0/gio/gbufferedoutputstream.h: + +/usr/include/glib-2.0/gio/gfilteroutputstream.h: + +/usr/include/glib-2.0/gio/goutputstream.h: + +/usr/include/glib-2.0/gio/gbytesicon.h: + +/usr/include/glib-2.0/gio/gcancellable.h: + +/usr/include/glib-2.0/gio/gcharsetconverter.h: + +/usr/include/glib-2.0/gio/gconverter.h: + +/usr/include/glib-2.0/gio/gcontenttype.h: + +/usr/include/glib-2.0/gio/gconverterinputstream.h: + +/usr/include/glib-2.0/gio/gconverteroutputstream.h: + +/usr/include/glib-2.0/gio/gcredentials.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/glib-2.0/gio/gdatainputstream.h: + +/usr/include/glib-2.0/gio/gdataoutputstream.h: + +/usr/include/glib-2.0/gio/gdbusaddress.h: + +/usr/include/glib-2.0/gio/gdbusauthobserver.h: + +/usr/include/glib-2.0/gio/gdbusconnection.h: + +/usr/include/glib-2.0/gio/gdbuserror.h: + +/usr/include/glib-2.0/gio/gdbusintrospection.h: + +/usr/include/glib-2.0/gio/gdbusmessage.h: + +/usr/include/glib-2.0/gio/gdbusmethodinvocation.h: + +/usr/include/glib-2.0/gio/gdbusnameowning.h: + +/usr/include/glib-2.0/gio/gdbusnamewatching.h: + +/usr/include/glib-2.0/gio/gdbusproxy.h: + +/usr/include/glib-2.0/gio/gdbusserver.h: + +/usr/include/glib-2.0/gio/gdbusutils.h: + +/usr/include/glib-2.0/gio/gdrive.h: + +/usr/include/glib-2.0/gio/gemblemedicon.h: + +/usr/include/glib-2.0/gio/gicon.h: + +/usr/include/glib-2.0/gio/gemblem.h: + +/usr/include/glib-2.0/gio/gfileattribute.h: + +/usr/include/glib-2.0/gio/gfileenumerator.h: + +/usr/include/glib-2.0/gio/gfile.h: + +/usr/include/glib-2.0/gio/gfileicon.h: + +/usr/include/glib-2.0/gio/gfileinfo.h: + +/usr/include/glib-2.0/gio/gfileinputstream.h: + +/usr/include/glib-2.0/gio/gfileiostream.h: + +/usr/include/glib-2.0/gio/giostream.h: + +/usr/include/glib-2.0/gio/gioerror.h: + +/usr/include/glib-2.0/gio/gfilemonitor.h: + +/usr/include/glib-2.0/gio/gfilenamecompleter.h: + +/usr/include/glib-2.0/gio/gfileoutputstream.h: + +/usr/include/glib-2.0/gio/ginetaddress.h: + +/usr/include/glib-2.0/gio/ginetaddressmask.h: + +/usr/include/glib-2.0/gio/ginetsocketaddress.h: + +/usr/include/glib-2.0/gio/gsocketaddress.h: + +/usr/include/glib-2.0/gio/gioenumtypes.h: + +/usr/include/glib-2.0/gio/giomodule.h: + +/usr/include/glib-2.0/gmodule.h: + +/usr/include/glib-2.0/gio/gioscheduler.h: + +/usr/include/glib-2.0/gio/gloadableicon.h: + +/usr/include/glib-2.0/gio/gmemoryinputstream.h: + +/usr/include/glib-2.0/gio/gmemoryoutputstream.h: + +/usr/include/glib-2.0/gio/gmount.h: + +/usr/include/glib-2.0/gio/gmountoperation.h: + +/usr/include/glib-2.0/gio/gnativevolumemonitor.h: + +/usr/include/glib-2.0/gio/gvolumemonitor.h: + +/usr/include/glib-2.0/gio/gnetworkaddress.h: + +/usr/include/glib-2.0/gio/gnetworkmonitor.h: + +/usr/include/glib-2.0/gio/gnetworkservice.h: + +/usr/include/glib-2.0/gio/gpermission.h: + +/usr/include/glib-2.0/gio/gpollableinputstream.h: + +/usr/include/glib-2.0/gio/gpollableoutputstream.h: + +/usr/include/glib-2.0/gio/gpollableutils.h: + +/usr/include/glib-2.0/gio/gpropertyaction.h: + +/usr/include/glib-2.0/gio/gproxy.h: + +/usr/include/glib-2.0/gio/gproxyaddress.h: + +/usr/include/glib-2.0/gio/gproxyaddressenumerator.h: + +/usr/include/glib-2.0/gio/gsocketaddressenumerator.h: + +/usr/include/glib-2.0/gio/gproxyresolver.h: + +/usr/include/glib-2.0/gio/gresolver.h: + +/usr/include/glib-2.0/gio/gresource.h: + +/usr/include/glib-2.0/gio/gseekable.h: + +/usr/include/glib-2.0/gio/gsettingsschema.h: + +/usr/include/glib-2.0/gio/gsettings.h: + +/usr/include/glib-2.0/gio/gsimpleaction.h: + +/usr/include/glib-2.0/gio/gsimpleactiongroup.h: + +/usr/include/glib-2.0/gio/gactiongroup.h: + +/usr/include/glib-2.0/gio/gactionmap.h: + +/usr/include/glib-2.0/gio/gsimpleasyncresult.h: + +/usr/include/glib-2.0/gio/gsimplepermission.h: + +/usr/include/glib-2.0/gio/gsocketclient.h: + +/usr/include/glib-2.0/gio/gsocketconnectable.h: + +/usr/include/glib-2.0/gio/gsocketconnection.h: + +/usr/include/glib-2.0/gio/gsocket.h: + +/usr/include/glib-2.0/gio/gsocketcontrolmessage.h: + +/usr/include/glib-2.0/gio/gsocketlistener.h: + +/usr/include/glib-2.0/gio/gsocketservice.h: + +/usr/include/glib-2.0/gio/gsrvtarget.h: + +/usr/include/glib-2.0/gio/gsimpleproxyresolver.h: + +/usr/include/glib-2.0/gio/gtask.h: + +/usr/include/glib-2.0/gio/gsubprocess.h: + +/usr/include/glib-2.0/gio/gsubprocesslauncher.h: + +/usr/include/glib-2.0/gio/gtcpconnection.h: + +/usr/include/glib-2.0/gio/gtcpwrapperconnection.h: + +/usr/include/glib-2.0/gio/gtestdbus.h: + +/usr/include/glib-2.0/gio/gthemedicon.h: + +/usr/include/glib-2.0/gio/gthreadedsocketservice.h: + +/usr/include/glib-2.0/gio/gtlsbackend.h: + +/usr/include/glib-2.0/gio/gtlscertificate.h: + +/usr/include/glib-2.0/gio/gtlsclientconnection.h: + +/usr/include/glib-2.0/gio/gtlsconnection.h: + +/usr/include/glib-2.0/gio/gtlsdatabase.h: + +/usr/include/glib-2.0/gio/gtlsfiledatabase.h: + +/usr/include/glib-2.0/gio/gtlsinteraction.h: + +/usr/include/glib-2.0/gio/gtlsserverconnection.h: + +/usr/include/glib-2.0/gio/gtlspassword.h: + +/usr/include/glib-2.0/gio/gvfs.h: + +/usr/include/glib-2.0/gio/gvolume.h: + +/usr/include/glib-2.0/gio/gzlibcompressor.h: + +/usr/include/glib-2.0/gio/gzlibdecompressor.h: + +/usr/include/glib-2.0/gio/gdbusinterface.h: + +/usr/include/glib-2.0/gio/gdbusinterfaceskeleton.h: + +/usr/include/glib-2.0/gio/gdbusobject.h: + +/usr/include/glib-2.0/gio/gdbusobjectskeleton.h: + +/usr/include/glib-2.0/gio/gdbusobjectproxy.h: + +/usr/include/glib-2.0/gio/gdbusobjectmanager.h: + +/usr/include/glib-2.0/gio/gdbusobjectmanagerclient.h: + +/usr/include/glib-2.0/gio/gdbusobjectmanagerserver.h: + +/usr/include/glib-2.0/gio/gdbusactiongroup.h: + +/usr/include/glib-2.0/gio/giotypes.h: + +/usr/include/glib-2.0/gio/gremoteactiongroup.h: + +/usr/include/glib-2.0/gio/gmenumodel.h: + +/usr/include/glib-2.0/gio/gmenu.h: + +/usr/include/glib-2.0/gio/gmenuexporter.h: + +/usr/include/glib-2.0/gio/gdbusmenumodel.h: + +/usr/include/glib-2.0/gio/gnotification.h: + +/usr/include/gtk-2.0/gdk/gdkscreen.h: + +/usr/include/cairo/cairo.h: + +/usr/include/cairo/cairo-version.h: + +/usr/include/cairo/cairo-features.h: + +/usr/include/cairo/cairo-deprecated.h: + +/usr/include/gtk-2.0/gdk/gdktypes.h: + +/usr/include/pango-1.0/pango/pango.h: + +/usr/include/pango-1.0/pango/pango-attributes.h: + +/usr/include/pango-1.0/pango/pango-font.h: + +/usr/include/pango-1.0/pango/pango-coverage.h: + +/usr/include/pango-1.0/pango/pango-types.h: + +/usr/include/pango-1.0/pango/pango-gravity.h: + +/usr/include/pango-1.0/pango/pango-matrix.h: + +/usr/include/pango-1.0/pango/pango-script.h: + +/usr/include/pango-1.0/pango/pango-language.h: + +/usr/include/pango-1.0/pango/pango-bidi-type.h: + +/usr/include/pango-1.0/pango/pango-break.h: + +/usr/include/pango-1.0/pango/pango-item.h: + +/usr/include/pango-1.0/pango/pango-context.h: + +/usr/include/pango-1.0/pango/pango-fontmap.h: + +/usr/include/pango-1.0/pango/pango-fontset.h: + +/usr/include/pango-1.0/pango/pango-engine.h: + +/usr/include/pango-1.0/pango/pango-glyph.h: + +/usr/include/pango-1.0/pango/pango-enum-types.h: + +/usr/include/pango-1.0/pango/pango-features.h: + +/usr/include/pango-1.0/pango/pango-glyph-item.h: + +/usr/include/pango-1.0/pango/pango-layout.h: + +/usr/include/pango-1.0/pango/pango-tabs.h: + +/usr/include/pango-1.0/pango/pango-renderer.h: + +/usr/include/pango-1.0/pango/pango-utils.h: + +/usr/lib64/gtk-2.0/include/gdkconfig.h: + +/usr/include/gtk-2.0/gdk/gdkdisplay.h: + +/usr/include/gtk-2.0/gdk/gdkevents.h: + +/usr/include/gtk-2.0/gdk/gdkcolor.h: + +/usr/include/gtk-2.0/gdk/gdkdnd.h: + +/usr/include/gtk-2.0/gdk/gdkinput.h: + +/usr/include/gtk-2.0/gdk/gdkcairo.h: + +/usr/include/gtk-2.0/gdk/gdkpixbuf.h: + +/usr/include/gtk-2.0/gdk/gdkrgb.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h: + +/usr/include/pango-1.0/pango/pangocairo.h: + +/usr/include/gtk-2.0/gdk/gdkcursor.h: + +/usr/include/gtk-2.0/gdk/gdkdisplaymanager.h: + +/usr/include/gtk-2.0/gdk/gdkdrawable.h: + +/usr/include/gtk-2.0/gdk/gdkgc.h: + +/usr/include/gtk-2.0/gdk/gdkenumtypes.h: + +/usr/include/gtk-2.0/gdk/gdkfont.h: + +/usr/include/gtk-2.0/gdk/gdkimage.h: + +/usr/include/gtk-2.0/gdk/gdkkeys.h: + +/usr/include/gtk-2.0/gdk/gdkpango.h: + +/usr/include/gtk-2.0/gdk/gdkpixmap.h: + +/usr/include/gtk-2.0/gdk/gdkproperty.h: + +/usr/include/gtk-2.0/gdk/gdkregion.h: + +/usr/include/gtk-2.0/gdk/gdkselection.h: + +/usr/include/gtk-2.0/gdk/gdkspawn.h: + +/usr/include/gtk-2.0/gdk/gdktestutils.h: + +/usr/include/gtk-2.0/gdk/gdkwindow.h: + +/usr/include/gtk-2.0/gdk/gdkvisual.h: + +/usr/include/gtk-2.0/gtk/gtkaboutdialog.h: + +/usr/include/gtk-2.0/gtk/gtkdialog.h: + +/usr/include/gtk-2.0/gtk/gtkwindow.h: + +/usr/include/gtk-2.0/gtk/gtkaccelgroup.h: + +/usr/include/gtk-2.0/gtk/gtkenums.h: + +/usr/include/gtk-2.0/gtk/gtkbin.h: + +/usr/include/gtk-2.0/gtk/gtkcontainer.h: + +/usr/include/gtk-2.0/gtk/gtkwidget.h: + +/usr/include/gtk-2.0/gtk/gtkobject.h: + +/usr/include/gtk-2.0/gtk/gtktypeutils.h: + +/usr/include/gtk-2.0/gtk/gtktypebuiltins.h: + +/usr/include/gtk-2.0/gtk/gtkdebug.h: + +/usr/include/gtk-2.0/gtk/gtkadjustment.h: + +/usr/include/gtk-2.0/gtk/gtkstyle.h: + +/usr/include/gtk-2.0/gtk/gtksettings.h: + +/usr/include/gtk-2.0/gtk/gtkrc.h: + +/usr/include/atk-1.0/atk/atk.h: + +/usr/include/atk-1.0/atk/atkobject.h: + +/usr/include/atk-1.0/atk/atkversion.h: + +/usr/include/atk-1.0/atk/atkstate.h: + +/usr/include/atk-1.0/atk/atkrelationtype.h: + +/usr/include/atk-1.0/atk/atkaction.h: + +/usr/include/atk-1.0/atk/atkcomponent.h: + +/usr/include/atk-1.0/atk/atkutil.h: + +/usr/include/atk-1.0/atk/atkdocument.h: + +/usr/include/atk-1.0/atk/atkeditabletext.h: + +/usr/include/atk-1.0/atk/atktext.h: + +/usr/include/atk-1.0/atk/atk-enum-types.h: + +/usr/include/atk-1.0/atk/atkgobjectaccessible.h: + +/usr/include/atk-1.0/atk/atkhyperlink.h: + +/usr/include/atk-1.0/atk/atkhyperlinkimpl.h: + +/usr/include/atk-1.0/atk/atkhypertext.h: + +/usr/include/atk-1.0/atk/atkimage.h: + +/usr/include/atk-1.0/atk/atknoopobject.h: + +/usr/include/atk-1.0/atk/atknoopobjectfactory.h: + +/usr/include/atk-1.0/atk/atkobjectfactory.h: + +/usr/include/atk-1.0/atk/atkplug.h: + +/usr/include/atk-1.0/atk/atkrange.h: + +/usr/include/atk-1.0/atk/atkregistry.h: + +/usr/include/atk-1.0/atk/atkobjectfactory.h: + +/usr/include/atk-1.0/atk/atkrelation.h: + +/usr/include/atk-1.0/atk/atkrelationset.h: + +/usr/include/atk-1.0/atk/atkselection.h: + +/usr/include/atk-1.0/atk/atksocket.h: + +/usr/include/atk-1.0/atk/atkstateset.h: + +/usr/include/atk-1.0/atk/atkstreamablecontent.h: + +/usr/include/atk-1.0/atk/atktable.h: + +/usr/include/atk-1.0/atk/atktablecell.h: + +/usr/include/atk-1.0/atk/atkmisc.h: + +/usr/include/atk-1.0/atk/atkvalue.h: + +/usr/include/atk-1.0/atk/atkwindow.h: + +/usr/include/gtk-2.0/gtk/gtkaccellabel.h: + +/usr/include/gtk-2.0/gtk/gtklabel.h: + +/usr/include/gtk-2.0/gtk/gtkmisc.h: + +/usr/include/gtk-2.0/gtk/gtkmenu.h: + +/usr/include/gtk-2.0/gtk/gtkmenushell.h: + +/usr/include/gtk-2.0/gtk/gtkaccelmap.h: + +/usr/include/gtk-2.0/gtk/gtkaccessible.h: + +/usr/include/gtk-2.0/gtk/gtkaction.h: + +/usr/include/gtk-2.0/gtk/gtkactiongroup.h: + +/usr/include/gtk-2.0/gtk/gtkactivatable.h: + +/usr/include/gtk-2.0/gtk/gtkalignment.h: + +/usr/include/gtk-2.0/gtk/gtkarrow.h: + +/usr/include/gtk-2.0/gtk/gtkaspectframe.h: + +/usr/include/gtk-2.0/gtk/gtkframe.h: + +/usr/include/gtk-2.0/gtk/gtkassistant.h: + +/usr/include/gtk-2.0/gtk/gtkbbox.h: + +/usr/include/gtk-2.0/gtk/gtkbox.h: + +/usr/include/gtk-2.0/gtk/gtkbindings.h: + +/usr/include/gtk-2.0/gtk/gtkbuildable.h: + +/usr/include/gtk-2.0/gtk/gtkbuilder.h: + +/usr/include/gtk-2.0/gtk/gtkbutton.h: + +/usr/include/gtk-2.0/gtk/gtkimage.h: + +/usr/include/gtk-2.0/gtk/gtkcalendar.h: + +/usr/include/gtk-2.0/gtk/gtksignal.h: + +/usr/include/gtk-2.0/gtk/gtkmarshal.h: + +/usr/include/gtk-2.0/gtk/gtkcelleditable.h: + +/usr/include/gtk-2.0/gtk/gtkcelllayout.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderer.h: + +/usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h: + +/usr/include/gtk-2.0/gtk/gtktreemodel.h: + +/usr/include/gtk-2.0/gtk/gtktreesortable.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendereraccel.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderertext.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderercombo.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererprogress.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererspin.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererspinner.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h: + +/usr/include/gtk-2.0/gtk/gtkcellview.h: + +/usr/include/gtk-2.0/gtk/gtkcheckbutton.h: + +/usr/include/gtk-2.0/gtk/gtktogglebutton.h: + +/usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkitem.h: + +/usr/include/gtk-2.0/gtk/gtkclipboard.h: + +/usr/include/gtk-2.0/gtk/gtkselection.h: + +/usr/include/gtk-2.0/gtk/gtktextiter.h: + +/usr/include/gtk-2.0/gtk/gtktexttag.h: + +/usr/include/gtk-2.0/gtk/gtktextchild.h: + +/usr/include/gtk-2.0/gtk/gtkcolorbutton.h: + +/usr/include/gtk-2.0/gtk/gtkcolorsel.h: + +/usr/include/gtk-2.0/gtk/gtkvbox.h: + +/usr/include/gtk-2.0/gtk/gtkcolorseldialog.h: + +/usr/include/gtk-2.0/gtk/gtkcombobox.h: + +/usr/include/gtk-2.0/gtk/gtktreeview.h: + +/usr/include/gtk-2.0/gtk/gtkdnd.h: + +/usr/include/gtk-2.0/gtk/gtkentry.h: + +/usr/include/gtk-2.0/gtk/gtkeditable.h: + +/usr/include/gtk-2.0/gtk/gtkimcontext.h: + +/usr/include/gtk-2.0/gtk/gtkentrybuffer.h: + +/usr/include/gtk-2.0/gtk/gtkentrycompletion.h: + +/usr/include/gtk-2.0/gtk/gtkliststore.h: + +/usr/include/gtk-2.0/gtk/gtktreemodelfilter.h: + +/usr/include/gtk-2.0/gtk/gtkcomboboxentry.h: + +/usr/include/gtk-2.0/gtk/gtkcomboboxtext.h: + +/usr/include/gtk-2.0/gtk/gtkdrawingarea.h: + +/usr/include/gtk-2.0/gtk/gtkeventbox.h: + +/usr/include/gtk-2.0/gtk/gtkexpander.h: + +/usr/include/gtk-2.0/gtk/gtkfixed.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooser.h: + +/usr/include/gtk-2.0/gtk/gtkfilefilter.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h: + +/usr/include/gtk-2.0/gtk/gtkhbox.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h: + +/usr/include/gtk-2.0/gtk/gtkfontbutton.h: + +/usr/include/gtk-2.0/gtk/gtkfontsel.h: + +/usr/include/gtk-2.0/gtk/gtkgc.h: + +/usr/include/gtk-2.0/gtk/gtkhandlebox.h: + +/usr/include/gtk-2.0/gtk/gtkhbbox.h: + +/usr/include/gtk-2.0/gtk/gtkhpaned.h: + +/usr/include/gtk-2.0/gtk/gtkpaned.h: + +/usr/include/gtk-2.0/gtk/gtkhruler.h: + +/usr/include/gtk-2.0/gtk/gtkruler.h: + +/usr/include/gtk-2.0/gtk/gtkhscale.h: + +/usr/include/gtk-2.0/gtk/gtkscale.h: + +/usr/include/gtk-2.0/gtk/gtkrange.h: + +/usr/include/gtk-2.0/gtk/gtkhscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkhseparator.h: + +/usr/include/gtk-2.0/gtk/gtkseparator.h: + +/usr/include/gtk-2.0/gtk/gtkhsv.h: + +/usr/include/gtk-2.0/gtk/gtkiconfactory.h: + +/usr/include/gtk-2.0/gtk/gtkicontheme.h: + +/usr/include/gtk-2.0/gtk/gtkiconview.h: + +/usr/include/gtk-2.0/gtk/gtktooltip.h: + +/usr/include/gtk-2.0/gtk/gtkimagemenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkimcontextsimple.h: + +/usr/include/gtk-2.0/gtk/gtkimmulticontext.h: + +/usr/include/gtk-2.0/gtk/gtkinfobar.h: + +/usr/include/gtk-2.0/gtk/gtkinvisible.h: + +/usr/include/gtk-2.0/gtk/gtklayout.h: + +/usr/include/gtk-2.0/gtk/gtklinkbutton.h: + +/usr/include/gtk-2.0/gtk/gtkmain.h: + +/usr/include/gtk-2.0/gtk/gtkmenubar.h: + +/usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolitem.h: + +/usr/include/gtk-2.0/gtk/gtktooltips.h: + +/usr/include/gtk-2.0/gtk/gtksizegroup.h: + +/usr/include/gtk-2.0/gtk/gtkmessagedialog.h: + +/usr/include/gtk-2.0/gtk/gtkmodules.h: + +/usr/include/gtk-2.0/gtk/gtkmountoperation.h: + +/usr/include/gtk-2.0/gtk/gtknotebook.h: + +/usr/include/gtk-2.0/gtk/gtkoffscreenwindow.h: + +/usr/include/gtk-2.0/gtk/gtkorientable.h: + +/usr/include/gtk-2.0/gtk/gtkpagesetup.h: + +/usr/include/gtk-2.0/gtk/gtkpapersize.h: + +/usr/include/gtk-2.0/gtk/gtkplug.h: + +/usr/include/gtk-2.0/gtk/gtksocket.h: + +/usr/include/gtk-2.0/gtk/gtkprintcontext.h: + +/usr/include/gtk-2.0/gtk/gtkprintoperation.h: + +/usr/include/gtk-2.0/gtk/gtkprintsettings.h: + +/usr/include/gtk-2.0/gtk/gtkprintoperationpreview.h: + +/usr/include/gtk-2.0/gtk/gtkprogressbar.h: + +/usr/include/gtk-2.0/gtk/gtkprogress.h: + +/usr/include/gtk-2.0/gtk/gtkradioaction.h: + +/usr/include/gtk-2.0/gtk/gtktoggleaction.h: + +/usr/include/gtk-2.0/gtk/gtkradiobutton.h: + +/usr/include/gtk-2.0/gtk/gtkradiomenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtkrecentaction.h: + +/usr/include/gtk-2.0/gtk/gtkrecentmanager.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooser.h: + +/usr/include/gtk-2.0/gtk/gtkrecentfilter.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooserdialog.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchoosermenu.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooserwidget.h: + +/usr/include/gtk-2.0/gtk/gtkscalebutton.h: + +/usr/include/gtk-2.0/gtk/gtkscrolledwindow.h: + +/usr/include/gtk-2.0/gtk/gtkvscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkviewport.h: + +/usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h: + +/usr/include/gtk-2.0/gtk/gtkshow.h: + +/usr/include/gtk-2.0/gtk/gtkspinbutton.h: + +/usr/include/gtk-2.0/gtk/gtkspinner.h: + +/usr/include/gtk-2.0/gtk/gtkstatusbar.h: + +/usr/include/gtk-2.0/gtk/gtkstatusicon.h: + +/usr/include/gtk-2.0/gtk/gtkstock.h: + +/usr/include/gtk-2.0/gtk/gtktable.h: + +/usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtktextbuffer.h: + +/usr/include/gtk-2.0/gtk/gtktexttagtable.h: + +/usr/include/gtk-2.0/gtk/gtktextmark.h: + +/usr/include/gtk-2.0/gtk/gtktextbufferrichtext.h: + +/usr/include/gtk-2.0/gtk/gtktextview.h: + +/usr/include/gtk-2.0/gtk/gtktoolbar.h: + +/usr/include/gtk-2.0/gtk/gtkpixmap.h: + +/usr/include/gtk-2.0/gtk/gtktoolitemgroup.h: + +/usr/include/gtk-2.0/gtk/gtktoolpalette.h: + +/usr/include/gtk-2.0/gtk/gtktoolshell.h: + +/usr/include/gtk-2.0/gtk/gtktestutils.h: + +/usr/include/gtk-2.0/gtk/gtktreednd.h: + +/usr/include/gtk-2.0/gtk/gtktreemodelsort.h: + +/usr/include/gtk-2.0/gtk/gtktreeselection.h: + +/usr/include/gtk-2.0/gtk/gtktreestore.h: + +/usr/include/gtk-2.0/gtk/gtkuimanager.h: + +/usr/include/gtk-2.0/gtk/gtkvbbox.h: + +/usr/include/gtk-2.0/gtk/gtkversion.h: + +/usr/include/gtk-2.0/gtk/gtkvolumebutton.h: + +/usr/include/gtk-2.0/gtk/gtkvpaned.h: + +/usr/include/gtk-2.0/gtk/gtkvruler.h: + +/usr/include/gtk-2.0/gtk/gtkvscale.h: + +/usr/include/gtk-2.0/gtk/gtkvseparator.h: + +/usr/include/gtk-2.0/gtk/gtktext.h: + +/usr/include/gtk-2.0/gtk/gtktree.h: + +/usr/include/gtk-2.0/gtk/gtktreeitem.h: + +/usr/include/gtk-2.0/gtk/gtkclist.h: + +/usr/include/gtk-2.0/gtk/gtkcombo.h: + +/usr/include/gtk-2.0/gtk/gtkctree.h: + +/usr/include/gtk-2.0/gtk/gtkcurve.h: + +/usr/include/gtk-2.0/gtk/gtkfilesel.h: + +/usr/include/gtk-2.0/gtk/gtkgamma.h: + +/usr/include/gtk-2.0/gtk/gtkinputdialog.h: + +/usr/include/gtk-2.0/gtk/gtkitemfactory.h: + +/usr/include/gtk-2.0/gtk/gtklist.h: + +/usr/include/gtk-2.0/gtk/gtklistitem.h: + +/usr/include/gtk-2.0/gtk/gtkoldeditable.h: + +/usr/include/gtk-2.0/gtk/gtkoptionmenu.h: + +/usr/include/gtk-2.0/gtk/gtkpreview.h: + +/usr/include/gtk-2.0/gtk/gtktipsquery.h: + +/usr/include/libglade-2.0/glade/glade.h: + +/usr/include/libglade-2.0/glade/glade-init.h: + +/usr/include/libglade-2.0/glade/glade-xml.h: + +Linux.h: + +../include/config.h: + +../libpcsxcore/psxcommon.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +Cheat.h: + +../libpcsxcore/cheat.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcommon.h: diff --git a/gui/.deps/ConfDlg.Po b/gui/.deps/ConfDlg.Po new file mode 100644 index 0000000..2ad57b9 --- /dev/null +++ b/gui/.deps/ConfDlg.Po @@ -0,0 +1,1888 @@ +ConfDlg.o: ConfDlg.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/bits/string.h /usr/include/bits/string2.h \ + /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/bits/posix1_lim.h /usr/include/bits/local_lim.h \ + /usr/include/linux/limits.h /usr/include/dlfcn.h \ + /usr/include/bits/dlfcn.h /usr/include/sys/stat.h \ + /usr/include/bits/stat.h /usr/include/gtk-2.0/gdk/gdkkeysyms.h \ + /usr/include/gtk-2.0/gdk/gdkkeysyms-compat.h \ + /usr/include/gtk-2.0/gtk/gtk.h /usr/include/gtk-2.0/gdk/gdk.h \ + /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h \ + /usr/include/glib-2.0/gio/gio.h /usr/include/glib-2.0/gio/giotypes.h \ + /usr/include/glib-2.0/gio/gioenums.h /usr/include/glib-2.0/glib-object.h \ + /usr/include/glib-2.0/gobject/gbinding.h /usr/include/glib-2.0/glib.h \ + /usr/include/glib-2.0/glib/galloca.h /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib64/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix2_lim.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include/float.h \ + /usr/include/glib-2.0/glib/gversionmacros.h \ + /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gasyncqueue.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gatomic.h /usr/include/glib-2.0/glib/gerror.h \ + /usr/include/glib-2.0/glib/gquark.h \ + /usr/include/glib-2.0/glib/gbacktrace.h /usr/include/signal.h \ + /usr/include/bits/signum.h /usr/include/bits/siginfo.h \ + /usr/include/bits/sigaction.h /usr/include/bits/sigcontext.h \ + /usr/include/bits/sigstack.h /usr/include/sys/ucontext.h \ + /usr/include/bits/sigthread.h /usr/include/glib-2.0/glib/gbase64.h \ + /usr/include/glib-2.0/glib/gbitlock.h \ + /usr/include/glib-2.0/glib/gbookmarkfile.h \ + /usr/include/glib-2.0/glib/gbytes.h \ + /usr/include/glib-2.0/glib/gcharset.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ + /usr/include/glib-2.0/glib/gdatetime.h \ + /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ + /usr/include/glib-2.0/glib/genviron.h \ + /usr/include/glib-2.0/glib/gfileutils.h \ + /usr/include/glib-2.0/glib/ggettext.h /usr/include/glib-2.0/glib/ghash.h \ + /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/ghmac.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/ghook.h \ + /usr/include/glib-2.0/glib/ghostutils.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ + /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gutils.h \ + /usr/include/glib-2.0/glib/gkeyfile.h \ + /usr/include/glib-2.0/glib/gmappedfile.h \ + /usr/include/glib-2.0/glib/gmarkup.h \ + /usr/include/glib-2.0/glib/gmessages.h \ + /usr/include/glib-2.0/glib/goption.h \ + /usr/include/glib-2.0/glib/gpattern.h \ + /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ + /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ + /usr/include/glib-2.0/glib/gregex.h \ + /usr/include/glib-2.0/glib/gscanner.h \ + /usr/include/glib-2.0/glib/gsequence.h \ + /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gslice.h \ + /usr/include/glib-2.0/glib/gspawn.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h \ + /usr/include/glib-2.0/glib/gstringchunk.h \ + /usr/include/glib-2.0/glib/gtestutils.h \ + /usr/include/glib-2.0/glib/gthreadpool.h \ + /usr/include/glib-2.0/glib/gtimer.h \ + /usr/include/glib-2.0/glib/gtrashstack.h \ + /usr/include/glib-2.0/glib/gtree.h \ + /usr/include/glib-2.0/glib/gurifuncs.h \ + /usr/include/glib-2.0/glib/gvarianttype.h \ + /usr/include/glib-2.0/glib/gvariant.h \ + /usr/include/glib-2.0/glib/gversion.h \ + /usr/include/glib-2.0/glib/deprecated/gallocator.h \ + /usr/include/glib-2.0/glib/deprecated/gcache.h \ + /usr/include/glib-2.0/glib/deprecated/gcompletion.h \ + /usr/include/glib-2.0/glib/deprecated/gmain.h \ + /usr/include/glib-2.0/glib/deprecated/grel.h \ + /usr/include/glib-2.0/glib/deprecated/gthread.h /usr/include/pthread.h \ + /usr/include/sched.h /usr/include/bits/sched.h \ + /usr/include/bits/setjmp.h /usr/include/glib-2.0/gobject/gobject.h \ + /usr/include/glib-2.0/gobject/gtype.h \ + /usr/include/glib-2.0/gobject/gvalue.h \ + /usr/include/glib-2.0/gobject/gparam.h \ + /usr/include/glib-2.0/gobject/gclosure.h \ + /usr/include/glib-2.0/gobject/gsignal.h \ + /usr/include/glib-2.0/gobject/gmarshal.h \ + /usr/include/glib-2.0/gobject/gboxed.h \ + /usr/include/glib-2.0/gobject/glib-types.h \ + /usr/include/glib-2.0/gobject/genums.h \ + /usr/include/glib-2.0/gobject/gparamspecs.h \ + /usr/include/glib-2.0/gobject/gsourceclosure.h \ + /usr/include/glib-2.0/gobject/gtypemodule.h \ + /usr/include/glib-2.0/gobject/gtypeplugin.h \ + /usr/include/glib-2.0/gobject/gvaluearray.h \ + /usr/include/glib-2.0/gobject/gvaluetypes.h \ + /usr/include/glib-2.0/gio/gaction.h \ + /usr/include/glib-2.0/gio/gactiongroup.h \ + /usr/include/glib-2.0/gio/gactiongroupexporter.h \ + /usr/include/glib-2.0/gio/gactionmap.h \ + /usr/include/glib-2.0/gio/gappinfo.h \ + /usr/include/glib-2.0/gio/gapplication.h \ + /usr/include/glib-2.0/gio/gapplicationcommandline.h \ + /usr/include/glib-2.0/gio/gasyncinitable.h \ + /usr/include/glib-2.0/gio/ginitable.h \ + /usr/include/glib-2.0/gio/gasyncresult.h \ + /usr/include/glib-2.0/gio/gbufferedinputstream.h \ + /usr/include/glib-2.0/gio/gfilterinputstream.h \ + /usr/include/glib-2.0/gio/ginputstream.h \ + /usr/include/glib-2.0/gio/gbufferedoutputstream.h \ + /usr/include/glib-2.0/gio/gfilteroutputstream.h \ + /usr/include/glib-2.0/gio/goutputstream.h \ + /usr/include/glib-2.0/gio/gbytesicon.h \ + /usr/include/glib-2.0/gio/gcancellable.h \ + /usr/include/glib-2.0/gio/gcharsetconverter.h \ + /usr/include/glib-2.0/gio/gconverter.h \ + /usr/include/glib-2.0/gio/gcontenttype.h \ + /usr/include/glib-2.0/gio/gconverterinputstream.h \ + /usr/include/glib-2.0/gio/gconverteroutputstream.h \ + /usr/include/glib-2.0/gio/gcredentials.h \ + /usr/include/glib-2.0/gio/gdatainputstream.h \ + /usr/include/glib-2.0/gio/gdataoutputstream.h \ + /usr/include/glib-2.0/gio/gdbusaddress.h \ + /usr/include/glib-2.0/gio/gdbusauthobserver.h \ + /usr/include/glib-2.0/gio/gdbusconnection.h \ + /usr/include/glib-2.0/gio/gdbuserror.h \ + /usr/include/glib-2.0/gio/gdbusintrospection.h \ + /usr/include/glib-2.0/gio/gdbusmessage.h \ + /usr/include/glib-2.0/gio/gdbusmethodinvocation.h \ + /usr/include/glib-2.0/gio/gdbusnameowning.h \ + /usr/include/glib-2.0/gio/gdbusnamewatching.h \ + /usr/include/glib-2.0/gio/gdbusproxy.h \ + /usr/include/glib-2.0/gio/gdbusserver.h \ + /usr/include/glib-2.0/gio/gdbusutils.h \ + /usr/include/glib-2.0/gio/gdrive.h \ + /usr/include/glib-2.0/gio/gemblemedicon.h \ + /usr/include/glib-2.0/gio/gicon.h /usr/include/glib-2.0/gio/gemblem.h \ + /usr/include/glib-2.0/gio/gfileattribute.h \ + /usr/include/glib-2.0/gio/gfileenumerator.h \ + /usr/include/glib-2.0/gio/gfile.h /usr/include/glib-2.0/gio/gfileicon.h \ + /usr/include/glib-2.0/gio/gfileinfo.h \ + /usr/include/glib-2.0/gio/gfileinputstream.h \ + /usr/include/glib-2.0/gio/gfileiostream.h \ + /usr/include/glib-2.0/gio/giostream.h \ + /usr/include/glib-2.0/gio/gioerror.h \ + /usr/include/glib-2.0/gio/gfilemonitor.h \ + /usr/include/glib-2.0/gio/gfilenamecompleter.h \ + /usr/include/glib-2.0/gio/gfileoutputstream.h \ + /usr/include/glib-2.0/gio/ginetaddress.h \ + /usr/include/glib-2.0/gio/ginetaddressmask.h \ + /usr/include/glib-2.0/gio/ginetsocketaddress.h \ + /usr/include/glib-2.0/gio/gsocketaddress.h \ + /usr/include/glib-2.0/gio/gioenumtypes.h \ + /usr/include/glib-2.0/gio/giomodule.h /usr/include/glib-2.0/gmodule.h \ + /usr/include/glib-2.0/gio/gioscheduler.h \ + /usr/include/glib-2.0/gio/gloadableicon.h \ + /usr/include/glib-2.0/gio/gmemoryinputstream.h \ + /usr/include/glib-2.0/gio/gmemoryoutputstream.h \ + /usr/include/glib-2.0/gio/gmount.h \ + /usr/include/glib-2.0/gio/gmountoperation.h \ + /usr/include/glib-2.0/gio/gnativevolumemonitor.h \ + /usr/include/glib-2.0/gio/gvolumemonitor.h \ + /usr/include/glib-2.0/gio/gnetworkaddress.h \ + /usr/include/glib-2.0/gio/gnetworkmonitor.h \ + /usr/include/glib-2.0/gio/gnetworkservice.h \ + /usr/include/glib-2.0/gio/gpermission.h \ + /usr/include/glib-2.0/gio/gpollableinputstream.h \ + /usr/include/glib-2.0/gio/gpollableoutputstream.h \ + /usr/include/glib-2.0/gio/gpollableutils.h \ + /usr/include/glib-2.0/gio/gpropertyaction.h \ + /usr/include/glib-2.0/gio/gproxy.h \ + /usr/include/glib-2.0/gio/gproxyaddress.h \ + /usr/include/glib-2.0/gio/gproxyaddressenumerator.h \ + /usr/include/glib-2.0/gio/gsocketaddressenumerator.h \ + /usr/include/glib-2.0/gio/gproxyresolver.h \ + /usr/include/glib-2.0/gio/gresolver.h \ + /usr/include/glib-2.0/gio/gresource.h \ + /usr/include/glib-2.0/gio/gseekable.h \ + /usr/include/glib-2.0/gio/gsettingsschema.h \ + /usr/include/glib-2.0/gio/gsettings.h \ + /usr/include/glib-2.0/gio/gsimpleaction.h \ + /usr/include/glib-2.0/gio/gsimpleactiongroup.h \ + /usr/include/glib-2.0/gio/gactiongroup.h \ + /usr/include/glib-2.0/gio/gactionmap.h \ + /usr/include/glib-2.0/gio/gsimpleasyncresult.h \ + /usr/include/glib-2.0/gio/gsimplepermission.h \ + /usr/include/glib-2.0/gio/gsocketclient.h \ + /usr/include/glib-2.0/gio/gsocketconnectable.h \ + /usr/include/glib-2.0/gio/gsocketconnection.h \ + /usr/include/glib-2.0/gio/gsocket.h \ + /usr/include/glib-2.0/gio/gsocketcontrolmessage.h \ + /usr/include/glib-2.0/gio/gsocketlistener.h \ + /usr/include/glib-2.0/gio/gsocketservice.h \ + /usr/include/glib-2.0/gio/gsrvtarget.h \ + /usr/include/glib-2.0/gio/gsimpleproxyresolver.h \ + /usr/include/glib-2.0/gio/gtask.h \ + /usr/include/glib-2.0/gio/gsubprocess.h \ + /usr/include/glib-2.0/gio/gsubprocesslauncher.h \ + /usr/include/glib-2.0/gio/gtcpconnection.h \ + /usr/include/glib-2.0/gio/gtcpwrapperconnection.h \ + /usr/include/glib-2.0/gio/gtestdbus.h \ + /usr/include/glib-2.0/gio/gthemedicon.h \ + /usr/include/glib-2.0/gio/gthreadedsocketservice.h \ + /usr/include/glib-2.0/gio/gtlsbackend.h \ + /usr/include/glib-2.0/gio/gtlscertificate.h \ + /usr/include/glib-2.0/gio/gtlsclientconnection.h \ + /usr/include/glib-2.0/gio/gtlsconnection.h \ + /usr/include/glib-2.0/gio/gtlsdatabase.h \ + /usr/include/glib-2.0/gio/gtlsfiledatabase.h \ + /usr/include/glib-2.0/gio/gtlsinteraction.h \ + /usr/include/glib-2.0/gio/gtlsserverconnection.h \ + /usr/include/glib-2.0/gio/gtlspassword.h \ + /usr/include/glib-2.0/gio/gvfs.h /usr/include/glib-2.0/gio/gvolume.h \ + /usr/include/glib-2.0/gio/gzlibcompressor.h \ + /usr/include/glib-2.0/gio/gzlibdecompressor.h \ + /usr/include/glib-2.0/gio/gdbusinterface.h \ + /usr/include/glib-2.0/gio/gdbusinterfaceskeleton.h \ + /usr/include/glib-2.0/gio/gdbusobject.h \ + /usr/include/glib-2.0/gio/gdbusobjectskeleton.h \ + /usr/include/glib-2.0/gio/gdbusobjectproxy.h \ + /usr/include/glib-2.0/gio/gdbusobjectmanager.h \ + /usr/include/glib-2.0/gio/gdbusobjectmanagerclient.h \ + /usr/include/glib-2.0/gio/gdbusobjectmanagerserver.h \ + /usr/include/glib-2.0/gio/gdbusactiongroup.h \ + /usr/include/glib-2.0/gio/giotypes.h \ + /usr/include/glib-2.0/gio/gremoteactiongroup.h \ + /usr/include/glib-2.0/gio/gmenumodel.h /usr/include/glib-2.0/gio/gmenu.h \ + /usr/include/glib-2.0/gio/gmenuexporter.h \ + /usr/include/glib-2.0/gio/gdbusmenumodel.h \ + /usr/include/glib-2.0/gio/gnotification.h \ + /usr/include/gtk-2.0/gdk/gdkscreen.h /usr/include/cairo/cairo.h \ + /usr/include/cairo/cairo-version.h /usr/include/cairo/cairo-features.h \ + /usr/include/cairo/cairo-deprecated.h \ + /usr/include/gtk-2.0/gdk/gdktypes.h /usr/include/pango-1.0/pango/pango.h \ + /usr/include/pango-1.0/pango/pango-attributes.h \ + /usr/include/pango-1.0/pango/pango-font.h \ + /usr/include/pango-1.0/pango/pango-coverage.h \ + /usr/include/pango-1.0/pango/pango-types.h \ + /usr/include/pango-1.0/pango/pango-gravity.h \ + /usr/include/pango-1.0/pango/pango-matrix.h \ + /usr/include/pango-1.0/pango/pango-script.h \ + /usr/include/pango-1.0/pango/pango-language.h \ + /usr/include/pango-1.0/pango/pango-bidi-type.h \ + /usr/include/pango-1.0/pango/pango-break.h \ + /usr/include/pango-1.0/pango/pango-item.h \ + /usr/include/pango-1.0/pango/pango-context.h \ + /usr/include/pango-1.0/pango/pango-fontmap.h \ + /usr/include/pango-1.0/pango/pango-fontset.h \ + /usr/include/pango-1.0/pango/pango-engine.h \ + /usr/include/pango-1.0/pango/pango-glyph.h \ + /usr/include/pango-1.0/pango/pango-enum-types.h \ + /usr/include/pango-1.0/pango/pango-features.h \ + /usr/include/pango-1.0/pango/pango-glyph-item.h \ + /usr/include/pango-1.0/pango/pango-layout.h \ + /usr/include/pango-1.0/pango/pango-tabs.h \ + /usr/include/pango-1.0/pango/pango-renderer.h \ + /usr/include/pango-1.0/pango/pango-utils.h \ + /usr/lib64/gtk-2.0/include/gdkconfig.h \ + /usr/include/gtk-2.0/gdk/gdkdisplay.h \ + /usr/include/gtk-2.0/gdk/gdkevents.h /usr/include/gtk-2.0/gdk/gdkcolor.h \ + /usr/include/gtk-2.0/gdk/gdkdnd.h /usr/include/gtk-2.0/gdk/gdkinput.h \ + /usr/include/gtk-2.0/gdk/gdkcairo.h /usr/include/gtk-2.0/gdk/gdkpixbuf.h \ + /usr/include/gtk-2.0/gdk/gdkrgb.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h \ + /usr/include/pango-1.0/pango/pangocairo.h \ + /usr/include/gtk-2.0/gdk/gdkcursor.h \ + /usr/include/gtk-2.0/gdk/gdkdisplaymanager.h \ + /usr/include/gtk-2.0/gdk/gdkdrawable.h /usr/include/gtk-2.0/gdk/gdkgc.h \ + /usr/include/gtk-2.0/gdk/gdkenumtypes.h \ + /usr/include/gtk-2.0/gdk/gdkfont.h /usr/include/gtk-2.0/gdk/gdkimage.h \ + /usr/include/gtk-2.0/gdk/gdkkeys.h /usr/include/gtk-2.0/gdk/gdkpango.h \ + /usr/include/gtk-2.0/gdk/gdkpixmap.h \ + /usr/include/gtk-2.0/gdk/gdkproperty.h \ + /usr/include/gtk-2.0/gdk/gdkregion.h \ + /usr/include/gtk-2.0/gdk/gdkselection.h \ + /usr/include/gtk-2.0/gdk/gdkspawn.h \ + /usr/include/gtk-2.0/gdk/gdktestutils.h \ + /usr/include/gtk-2.0/gdk/gdkwindow.h \ + /usr/include/gtk-2.0/gdk/gdkvisual.h \ + /usr/include/gtk-2.0/gtk/gtkaboutdialog.h \ + /usr/include/gtk-2.0/gtk/gtkdialog.h \ + /usr/include/gtk-2.0/gtk/gtkwindow.h \ + /usr/include/gtk-2.0/gtk/gtkaccelgroup.h \ + /usr/include/gtk-2.0/gtk/gtkenums.h /usr/include/gtk-2.0/gtk/gtkbin.h \ + /usr/include/gtk-2.0/gtk/gtkcontainer.h \ + /usr/include/gtk-2.0/gtk/gtkwidget.h \ + /usr/include/gtk-2.0/gtk/gtkobject.h \ + /usr/include/gtk-2.0/gtk/gtktypeutils.h \ + /usr/include/gtk-2.0/gtk/gtktypebuiltins.h \ + /usr/include/gtk-2.0/gtk/gtkdebug.h \ + /usr/include/gtk-2.0/gtk/gtkadjustment.h \ + /usr/include/gtk-2.0/gtk/gtkstyle.h \ + /usr/include/gtk-2.0/gtk/gtksettings.h /usr/include/gtk-2.0/gtk/gtkrc.h \ + /usr/include/atk-1.0/atk/atk.h /usr/include/atk-1.0/atk/atkobject.h \ + /usr/include/atk-1.0/atk/atkversion.h \ + /usr/include/atk-1.0/atk/atkstate.h \ + /usr/include/atk-1.0/atk/atkrelationtype.h \ + /usr/include/atk-1.0/atk/atkaction.h \ + /usr/include/atk-1.0/atk/atkcomponent.h \ + /usr/include/atk-1.0/atk/atkutil.h \ + /usr/include/atk-1.0/atk/atkdocument.h \ + /usr/include/atk-1.0/atk/atkeditabletext.h \ + /usr/include/atk-1.0/atk/atktext.h \ + /usr/include/atk-1.0/atk/atk-enum-types.h \ + /usr/include/atk-1.0/atk/atkgobjectaccessible.h \ + /usr/include/atk-1.0/atk/atkhyperlink.h \ + /usr/include/atk-1.0/atk/atkhyperlinkimpl.h \ + /usr/include/atk-1.0/atk/atkhypertext.h \ + /usr/include/atk-1.0/atk/atkimage.h \ + /usr/include/atk-1.0/atk/atknoopobject.h \ + /usr/include/atk-1.0/atk/atknoopobjectfactory.h \ + /usr/include/atk-1.0/atk/atkobjectfactory.h \ + /usr/include/atk-1.0/atk/atkplug.h /usr/include/atk-1.0/atk/atkrange.h \ + /usr/include/atk-1.0/atk/atkregistry.h \ + /usr/include/atk-1.0/atk/atkobjectfactory.h \ + /usr/include/atk-1.0/atk/atkrelation.h \ + /usr/include/atk-1.0/atk/atkrelationset.h \ + /usr/include/atk-1.0/atk/atkselection.h \ + /usr/include/atk-1.0/atk/atksocket.h \ + /usr/include/atk-1.0/atk/atkstateset.h \ + /usr/include/atk-1.0/atk/atkstreamablecontent.h \ + /usr/include/atk-1.0/atk/atktable.h \ + /usr/include/atk-1.0/atk/atktablecell.h \ + /usr/include/atk-1.0/atk/atkmisc.h /usr/include/atk-1.0/atk/atkvalue.h \ + /usr/include/atk-1.0/atk/atkwindow.h \ + /usr/include/gtk-2.0/gtk/gtkaccellabel.h \ + /usr/include/gtk-2.0/gtk/gtklabel.h /usr/include/gtk-2.0/gtk/gtkmisc.h \ + /usr/include/gtk-2.0/gtk/gtkmenu.h \ + /usr/include/gtk-2.0/gtk/gtkmenushell.h \ + /usr/include/gtk-2.0/gtk/gtkaccelmap.h \ + /usr/include/gtk-2.0/gtk/gtkaccessible.h \ + /usr/include/gtk-2.0/gtk/gtkaction.h \ + /usr/include/gtk-2.0/gtk/gtkactiongroup.h \ + /usr/include/gtk-2.0/gtk/gtkactivatable.h \ + /usr/include/gtk-2.0/gtk/gtkalignment.h \ + /usr/include/gtk-2.0/gtk/gtkarrow.h \ + /usr/include/gtk-2.0/gtk/gtkaspectframe.h \ + /usr/include/gtk-2.0/gtk/gtkframe.h \ + /usr/include/gtk-2.0/gtk/gtkassistant.h \ + /usr/include/gtk-2.0/gtk/gtkbbox.h /usr/include/gtk-2.0/gtk/gtkbox.h \ + /usr/include/gtk-2.0/gtk/gtkbindings.h \ + /usr/include/gtk-2.0/gtk/gtkbuildable.h \ + /usr/include/gtk-2.0/gtk/gtkbuilder.h \ + /usr/include/gtk-2.0/gtk/gtkbutton.h /usr/include/gtk-2.0/gtk/gtkimage.h \ + /usr/include/gtk-2.0/gtk/gtkcalendar.h \ + /usr/include/gtk-2.0/gtk/gtksignal.h \ + /usr/include/gtk-2.0/gtk/gtkmarshal.h \ + /usr/include/gtk-2.0/gtk/gtkcelleditable.h \ + /usr/include/gtk-2.0/gtk/gtkcelllayout.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderer.h \ + /usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h \ + /usr/include/gtk-2.0/gtk/gtktreemodel.h \ + /usr/include/gtk-2.0/gtk/gtktreesortable.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendereraccel.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderertext.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderercombo.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererprogress.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererspin.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererspinner.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h \ + /usr/include/gtk-2.0/gtk/gtkcellview.h \ + /usr/include/gtk-2.0/gtk/gtkcheckbutton.h \ + /usr/include/gtk-2.0/gtk/gtktogglebutton.h \ + /usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkitem.h \ + /usr/include/gtk-2.0/gtk/gtkclipboard.h \ + /usr/include/gtk-2.0/gtk/gtkselection.h \ + /usr/include/gtk-2.0/gtk/gtktextiter.h \ + /usr/include/gtk-2.0/gtk/gtktexttag.h \ + /usr/include/gtk-2.0/gtk/gtktextchild.h \ + /usr/include/gtk-2.0/gtk/gtkcolorbutton.h \ + /usr/include/gtk-2.0/gtk/gtkcolorsel.h \ + /usr/include/gtk-2.0/gtk/gtkvbox.h \ + /usr/include/gtk-2.0/gtk/gtkcolorseldialog.h \ + /usr/include/gtk-2.0/gtk/gtkcombobox.h \ + /usr/include/gtk-2.0/gtk/gtktreeview.h /usr/include/gtk-2.0/gtk/gtkdnd.h \ + /usr/include/gtk-2.0/gtk/gtkentry.h \ + /usr/include/gtk-2.0/gtk/gtkeditable.h \ + /usr/include/gtk-2.0/gtk/gtkimcontext.h \ + /usr/include/gtk-2.0/gtk/gtkentrybuffer.h \ + /usr/include/gtk-2.0/gtk/gtkentrycompletion.h \ + /usr/include/gtk-2.0/gtk/gtkliststore.h \ + /usr/include/gtk-2.0/gtk/gtktreemodelfilter.h \ + /usr/include/gtk-2.0/gtk/gtkcomboboxentry.h \ + /usr/include/gtk-2.0/gtk/gtkcomboboxtext.h \ + /usr/include/gtk-2.0/gtk/gtkdrawingarea.h \ + /usr/include/gtk-2.0/gtk/gtkeventbox.h \ + /usr/include/gtk-2.0/gtk/gtkexpander.h \ + /usr/include/gtk-2.0/gtk/gtkfixed.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooser.h \ + /usr/include/gtk-2.0/gtk/gtkfilefilter.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h \ + /usr/include/gtk-2.0/gtk/gtkhbox.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h \ + /usr/include/gtk-2.0/gtk/gtkfontbutton.h \ + /usr/include/gtk-2.0/gtk/gtkfontsel.h /usr/include/gtk-2.0/gtk/gtkgc.h \ + /usr/include/gtk-2.0/gtk/gtkhandlebox.h \ + /usr/include/gtk-2.0/gtk/gtkhbbox.h /usr/include/gtk-2.0/gtk/gtkhpaned.h \ + /usr/include/gtk-2.0/gtk/gtkpaned.h /usr/include/gtk-2.0/gtk/gtkhruler.h \ + /usr/include/gtk-2.0/gtk/gtkruler.h /usr/include/gtk-2.0/gtk/gtkhscale.h \ + /usr/include/gtk-2.0/gtk/gtkscale.h /usr/include/gtk-2.0/gtk/gtkrange.h \ + /usr/include/gtk-2.0/gtk/gtkhscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkhseparator.h \ + /usr/include/gtk-2.0/gtk/gtkseparator.h \ + /usr/include/gtk-2.0/gtk/gtkhsv.h \ + /usr/include/gtk-2.0/gtk/gtkiconfactory.h \ + /usr/include/gtk-2.0/gtk/gtkicontheme.h \ + /usr/include/gtk-2.0/gtk/gtkiconview.h \ + /usr/include/gtk-2.0/gtk/gtktooltip.h \ + /usr/include/gtk-2.0/gtk/gtkimagemenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkimcontextsimple.h \ + /usr/include/gtk-2.0/gtk/gtkimmulticontext.h \ + /usr/include/gtk-2.0/gtk/gtkinfobar.h \ + /usr/include/gtk-2.0/gtk/gtkinvisible.h \ + /usr/include/gtk-2.0/gtk/gtklayout.h \ + /usr/include/gtk-2.0/gtk/gtklinkbutton.h \ + /usr/include/gtk-2.0/gtk/gtkmain.h /usr/include/gtk-2.0/gtk/gtkmenubar.h \ + /usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolitem.h \ + /usr/include/gtk-2.0/gtk/gtktooltips.h \ + /usr/include/gtk-2.0/gtk/gtksizegroup.h \ + /usr/include/gtk-2.0/gtk/gtkmessagedialog.h \ + /usr/include/gtk-2.0/gtk/gtkmodules.h \ + /usr/include/gtk-2.0/gtk/gtkmountoperation.h \ + /usr/include/gtk-2.0/gtk/gtknotebook.h \ + /usr/include/gtk-2.0/gtk/gtkoffscreenwindow.h \ + /usr/include/gtk-2.0/gtk/gtkorientable.h \ + /usr/include/gtk-2.0/gtk/gtkpagesetup.h \ + /usr/include/gtk-2.0/gtk/gtkpapersize.h \ + /usr/include/gtk-2.0/gtk/gtkplug.h /usr/include/gtk-2.0/gtk/gtksocket.h \ + /usr/include/gtk-2.0/gtk/gtkprintcontext.h \ + /usr/include/gtk-2.0/gtk/gtkprintoperation.h \ + /usr/include/gtk-2.0/gtk/gtkprintsettings.h \ + /usr/include/gtk-2.0/gtk/gtkprintoperationpreview.h \ + /usr/include/gtk-2.0/gtk/gtkprogressbar.h \ + /usr/include/gtk-2.0/gtk/gtkprogress.h \ + /usr/include/gtk-2.0/gtk/gtkradioaction.h \ + /usr/include/gtk-2.0/gtk/gtktoggleaction.h \ + /usr/include/gtk-2.0/gtk/gtkradiobutton.h \ + /usr/include/gtk-2.0/gtk/gtkradiomenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtkrecentaction.h \ + /usr/include/gtk-2.0/gtk/gtkrecentmanager.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooser.h \ + /usr/include/gtk-2.0/gtk/gtkrecentfilter.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooserdialog.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchoosermenu.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooserwidget.h \ + /usr/include/gtk-2.0/gtk/gtkscalebutton.h \ + /usr/include/gtk-2.0/gtk/gtkscrolledwindow.h \ + /usr/include/gtk-2.0/gtk/gtkvscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkviewport.h \ + /usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h \ + /usr/include/gtk-2.0/gtk/gtkshow.h \ + /usr/include/gtk-2.0/gtk/gtkspinbutton.h \ + /usr/include/gtk-2.0/gtk/gtkspinner.h \ + /usr/include/gtk-2.0/gtk/gtkstatusbar.h \ + /usr/include/gtk-2.0/gtk/gtkstatusicon.h \ + /usr/include/gtk-2.0/gtk/gtkstock.h /usr/include/gtk-2.0/gtk/gtktable.h \ + /usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtktextbuffer.h \ + /usr/include/gtk-2.0/gtk/gtktexttagtable.h \ + /usr/include/gtk-2.0/gtk/gtktextmark.h \ + /usr/include/gtk-2.0/gtk/gtktextbufferrichtext.h \ + /usr/include/gtk-2.0/gtk/gtktextview.h \ + /usr/include/gtk-2.0/gtk/gtktoolbar.h \ + /usr/include/gtk-2.0/gtk/gtkpixmap.h \ + /usr/include/gtk-2.0/gtk/gtktoolitemgroup.h \ + /usr/include/gtk-2.0/gtk/gtktoolpalette.h \ + /usr/include/gtk-2.0/gtk/gtktoolshell.h \ + /usr/include/gtk-2.0/gtk/gtktestutils.h \ + /usr/include/gtk-2.0/gtk/gtktreednd.h \ + /usr/include/gtk-2.0/gtk/gtktreemodelsort.h \ + /usr/include/gtk-2.0/gtk/gtktreeselection.h \ + /usr/include/gtk-2.0/gtk/gtktreestore.h \ + /usr/include/gtk-2.0/gtk/gtkuimanager.h \ + /usr/include/gtk-2.0/gtk/gtkvbbox.h \ + /usr/include/gtk-2.0/gtk/gtkversion.h \ + /usr/include/gtk-2.0/gtk/gtkvolumebutton.h \ + /usr/include/gtk-2.0/gtk/gtkvpaned.h \ + /usr/include/gtk-2.0/gtk/gtkvruler.h \ + /usr/include/gtk-2.0/gtk/gtkvscale.h \ + /usr/include/gtk-2.0/gtk/gtkvseparator.h \ + /usr/include/gtk-2.0/gtk/gtktext.h /usr/include/gtk-2.0/gtk/gtktree.h \ + /usr/include/gtk-2.0/gtk/gtktreeitem.h \ + /usr/include/gtk-2.0/gtk/gtkclist.h /usr/include/gtk-2.0/gtk/gtkcombo.h \ + /usr/include/gtk-2.0/gtk/gtkctree.h /usr/include/gtk-2.0/gtk/gtkcurve.h \ + /usr/include/gtk-2.0/gtk/gtkfilesel.h \ + /usr/include/gtk-2.0/gtk/gtkgamma.h \ + /usr/include/gtk-2.0/gtk/gtkinputdialog.h \ + /usr/include/gtk-2.0/gtk/gtkitemfactory.h \ + /usr/include/gtk-2.0/gtk/gtklist.h \ + /usr/include/gtk-2.0/gtk/gtklistitem.h \ + /usr/include/gtk-2.0/gtk/gtkoldeditable.h \ + /usr/include/gtk-2.0/gtk/gtkoptionmenu.h \ + /usr/include/gtk-2.0/gtk/gtkpreview.h \ + /usr/include/gtk-2.0/gtk/gtktipsquery.h \ + /usr/include/libglade-2.0/glade/glade.h \ + /usr/include/libglade-2.0/glade/glade-init.h \ + /usr/include/libglade-2.0/glade/glade-xml.h /usr/include/sys/time.h \ + /usr/include/regex.h Linux.h ../include/config.h \ + ../libpcsxcore/psxcommon.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/math.h \ + /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \ + /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \ + /usr/include/bits/nan.h /usr/include/bits/mathdef.h \ + /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ + /usr/include/ctype.h /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/zconf.h ../libpcsxcore/system.h ../libpcsxcore/debug.h \ + /usr/include/libintl.h /usr/include/locale.h /usr/include/bits/locale.h \ + Cheat.h ConfDlg.h ../libpcsxcore/plugins.h ../libpcsxcore/psxcommon.h \ + ../libpcsxcore/spu.h ../libpcsxcore/plugins.h ../libpcsxcore/r3000a.h \ + ../libpcsxcore/psxmem.h ../libpcsxcore/psxcounters.h \ + ../libpcsxcore/psxbios.h ../libpcsxcore/misc.h ../libpcsxcore/coff.h \ + ../libpcsxcore/sio.h ../libpcsxcore/psemu_plugin_defs.h \ + ../libpcsxcore/decode_xa.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-bsearch.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/dirent.h: + +/usr/include/bits/dirent.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/dlfcn.h: + +/usr/include/bits/dlfcn.h: + +/usr/include/sys/stat.h: + +/usr/include/bits/stat.h: + +/usr/include/gtk-2.0/gdk/gdkkeysyms.h: + +/usr/include/gtk-2.0/gdk/gdkkeysyms-compat.h: + +/usr/include/gtk-2.0/gtk/gtk.h: + +/usr/include/gtk-2.0/gdk/gdk.h: + +/usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h: + +/usr/include/glib-2.0/gio/gio.h: + +/usr/include/glib-2.0/gio/giotypes.h: + +/usr/include/glib-2.0/gio/gioenums.h: + +/usr/include/glib-2.0/glib-object.h: + +/usr/include/glib-2.0/gobject/gbinding.h: + +/usr/include/glib-2.0/glib.h: + +/usr/include/glib-2.0/glib/galloca.h: + +/usr/include/glib-2.0/glib/gtypes.h: + +/usr/lib64/glib-2.0/include/glibconfig.h: + +/usr/include/glib-2.0/glib/gmacros.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/limits.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include/float.h: + +/usr/include/glib-2.0/glib/gversionmacros.h: + +/usr/include/glib-2.0/glib/garray.h: + +/usr/include/glib-2.0/glib/gasyncqueue.h: + +/usr/include/glib-2.0/glib/gthread.h: + +/usr/include/glib-2.0/glib/gatomic.h: + +/usr/include/glib-2.0/glib/gerror.h: + +/usr/include/glib-2.0/glib/gquark.h: + +/usr/include/glib-2.0/glib/gbacktrace.h: + +/usr/include/signal.h: + +/usr/include/bits/signum.h: + +/usr/include/bits/siginfo.h: + +/usr/include/bits/sigaction.h: + +/usr/include/bits/sigcontext.h: + +/usr/include/bits/sigstack.h: + +/usr/include/sys/ucontext.h: + +/usr/include/bits/sigthread.h: + +/usr/include/glib-2.0/glib/gbase64.h: + +/usr/include/glib-2.0/glib/gbitlock.h: + +/usr/include/glib-2.0/glib/gbookmarkfile.h: + +/usr/include/glib-2.0/glib/gbytes.h: + +/usr/include/glib-2.0/glib/gcharset.h: + +/usr/include/glib-2.0/glib/gchecksum.h: + +/usr/include/glib-2.0/glib/gconvert.h: + +/usr/include/glib-2.0/glib/gdataset.h: + +/usr/include/glib-2.0/glib/gdate.h: + +/usr/include/glib-2.0/glib/gdatetime.h: + +/usr/include/glib-2.0/glib/gtimezone.h: + +/usr/include/glib-2.0/glib/gdir.h: + +/usr/include/glib-2.0/glib/genviron.h: + +/usr/include/glib-2.0/glib/gfileutils.h: + +/usr/include/glib-2.0/glib/ggettext.h: + +/usr/include/glib-2.0/glib/ghash.h: + +/usr/include/glib-2.0/glib/glist.h: + +/usr/include/glib-2.0/glib/gmem.h: + +/usr/include/glib-2.0/glib/gnode.h: + +/usr/include/glib-2.0/glib/ghmac.h: + +/usr/include/glib-2.0/glib/gchecksum.h: + +/usr/include/glib-2.0/glib/ghook.h: + +/usr/include/glib-2.0/glib/ghostutils.h: + +/usr/include/glib-2.0/glib/giochannel.h: + +/usr/include/glib-2.0/glib/gmain.h: + +/usr/include/glib-2.0/glib/gpoll.h: + +/usr/include/glib-2.0/glib/gslist.h: + +/usr/include/glib-2.0/glib/gstring.h: + +/usr/include/glib-2.0/glib/gunicode.h: + +/usr/include/glib-2.0/glib/gutils.h: + +/usr/include/glib-2.0/glib/gkeyfile.h: + +/usr/include/glib-2.0/glib/gmappedfile.h: + +/usr/include/glib-2.0/glib/gmarkup.h: + +/usr/include/glib-2.0/glib/gmessages.h: + +/usr/include/glib-2.0/glib/goption.h: + +/usr/include/glib-2.0/glib/gpattern.h: + +/usr/include/glib-2.0/glib/gprimes.h: + +/usr/include/glib-2.0/glib/gqsort.h: + +/usr/include/glib-2.0/glib/gqueue.h: + +/usr/include/glib-2.0/glib/grand.h: + +/usr/include/glib-2.0/glib/gregex.h: + +/usr/include/glib-2.0/glib/gscanner.h: + +/usr/include/glib-2.0/glib/gsequence.h: + +/usr/include/glib-2.0/glib/gshell.h: + +/usr/include/glib-2.0/glib/gslice.h: + +/usr/include/glib-2.0/glib/gspawn.h: + +/usr/include/glib-2.0/glib/gstrfuncs.h: + +/usr/include/glib-2.0/glib/gstringchunk.h: + +/usr/include/glib-2.0/glib/gtestutils.h: + +/usr/include/glib-2.0/glib/gthreadpool.h: + +/usr/include/glib-2.0/glib/gtimer.h: + +/usr/include/glib-2.0/glib/gtrashstack.h: + +/usr/include/glib-2.0/glib/gtree.h: + +/usr/include/glib-2.0/glib/gurifuncs.h: + +/usr/include/glib-2.0/glib/gvarianttype.h: + +/usr/include/glib-2.0/glib/gvariant.h: + +/usr/include/glib-2.0/glib/gversion.h: + +/usr/include/glib-2.0/glib/deprecated/gallocator.h: + +/usr/include/glib-2.0/glib/deprecated/gcache.h: + +/usr/include/glib-2.0/glib/deprecated/gcompletion.h: + +/usr/include/glib-2.0/glib/deprecated/gmain.h: + +/usr/include/glib-2.0/glib/deprecated/grel.h: + +/usr/include/glib-2.0/glib/deprecated/gthread.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/setjmp.h: + +/usr/include/glib-2.0/gobject/gobject.h: + +/usr/include/glib-2.0/gobject/gtype.h: + +/usr/include/glib-2.0/gobject/gvalue.h: + +/usr/include/glib-2.0/gobject/gparam.h: + +/usr/include/glib-2.0/gobject/gclosure.h: + +/usr/include/glib-2.0/gobject/gsignal.h: + +/usr/include/glib-2.0/gobject/gmarshal.h: + +/usr/include/glib-2.0/gobject/gboxed.h: + +/usr/include/glib-2.0/gobject/glib-types.h: + +/usr/include/glib-2.0/gobject/genums.h: + +/usr/include/glib-2.0/gobject/gparamspecs.h: + +/usr/include/glib-2.0/gobject/gsourceclosure.h: + +/usr/include/glib-2.0/gobject/gtypemodule.h: + +/usr/include/glib-2.0/gobject/gtypeplugin.h: + +/usr/include/glib-2.0/gobject/gvaluearray.h: + +/usr/include/glib-2.0/gobject/gvaluetypes.h: + +/usr/include/glib-2.0/gio/gaction.h: + +/usr/include/glib-2.0/gio/gactiongroup.h: + +/usr/include/glib-2.0/gio/gactiongroupexporter.h: + +/usr/include/glib-2.0/gio/gactionmap.h: + +/usr/include/glib-2.0/gio/gappinfo.h: + +/usr/include/glib-2.0/gio/gapplication.h: + +/usr/include/glib-2.0/gio/gapplicationcommandline.h: + +/usr/include/glib-2.0/gio/gasyncinitable.h: + +/usr/include/glib-2.0/gio/ginitable.h: + +/usr/include/glib-2.0/gio/gasyncresult.h: + +/usr/include/glib-2.0/gio/gbufferedinputstream.h: + +/usr/include/glib-2.0/gio/gfilterinputstream.h: + +/usr/include/glib-2.0/gio/ginputstream.h: + +/usr/include/glib-2.0/gio/gbufferedoutputstream.h: + +/usr/include/glib-2.0/gio/gfilteroutputstream.h: + +/usr/include/glib-2.0/gio/goutputstream.h: + +/usr/include/glib-2.0/gio/gbytesicon.h: + +/usr/include/glib-2.0/gio/gcancellable.h: + +/usr/include/glib-2.0/gio/gcharsetconverter.h: + +/usr/include/glib-2.0/gio/gconverter.h: + +/usr/include/glib-2.0/gio/gcontenttype.h: + +/usr/include/glib-2.0/gio/gconverterinputstream.h: + +/usr/include/glib-2.0/gio/gconverteroutputstream.h: + +/usr/include/glib-2.0/gio/gcredentials.h: + +/usr/include/glib-2.0/gio/gdatainputstream.h: + +/usr/include/glib-2.0/gio/gdataoutputstream.h: + +/usr/include/glib-2.0/gio/gdbusaddress.h: + +/usr/include/glib-2.0/gio/gdbusauthobserver.h: + +/usr/include/glib-2.0/gio/gdbusconnection.h: + +/usr/include/glib-2.0/gio/gdbuserror.h: + +/usr/include/glib-2.0/gio/gdbusintrospection.h: + +/usr/include/glib-2.0/gio/gdbusmessage.h: + +/usr/include/glib-2.0/gio/gdbusmethodinvocation.h: + +/usr/include/glib-2.0/gio/gdbusnameowning.h: + +/usr/include/glib-2.0/gio/gdbusnamewatching.h: + +/usr/include/glib-2.0/gio/gdbusproxy.h: + +/usr/include/glib-2.0/gio/gdbusserver.h: + +/usr/include/glib-2.0/gio/gdbusutils.h: + +/usr/include/glib-2.0/gio/gdrive.h: + +/usr/include/glib-2.0/gio/gemblemedicon.h: + +/usr/include/glib-2.0/gio/gicon.h: + +/usr/include/glib-2.0/gio/gemblem.h: + +/usr/include/glib-2.0/gio/gfileattribute.h: + +/usr/include/glib-2.0/gio/gfileenumerator.h: + +/usr/include/glib-2.0/gio/gfile.h: + +/usr/include/glib-2.0/gio/gfileicon.h: + +/usr/include/glib-2.0/gio/gfileinfo.h: + +/usr/include/glib-2.0/gio/gfileinputstream.h: + +/usr/include/glib-2.0/gio/gfileiostream.h: + +/usr/include/glib-2.0/gio/giostream.h: + +/usr/include/glib-2.0/gio/gioerror.h: + +/usr/include/glib-2.0/gio/gfilemonitor.h: + +/usr/include/glib-2.0/gio/gfilenamecompleter.h: + +/usr/include/glib-2.0/gio/gfileoutputstream.h: + +/usr/include/glib-2.0/gio/ginetaddress.h: + +/usr/include/glib-2.0/gio/ginetaddressmask.h: + +/usr/include/glib-2.0/gio/ginetsocketaddress.h: + +/usr/include/glib-2.0/gio/gsocketaddress.h: + +/usr/include/glib-2.0/gio/gioenumtypes.h: + +/usr/include/glib-2.0/gio/giomodule.h: + +/usr/include/glib-2.0/gmodule.h: + +/usr/include/glib-2.0/gio/gioscheduler.h: + +/usr/include/glib-2.0/gio/gloadableicon.h: + +/usr/include/glib-2.0/gio/gmemoryinputstream.h: + +/usr/include/glib-2.0/gio/gmemoryoutputstream.h: + +/usr/include/glib-2.0/gio/gmount.h: + +/usr/include/glib-2.0/gio/gmountoperation.h: + +/usr/include/glib-2.0/gio/gnativevolumemonitor.h: + +/usr/include/glib-2.0/gio/gvolumemonitor.h: + +/usr/include/glib-2.0/gio/gnetworkaddress.h: + +/usr/include/glib-2.0/gio/gnetworkmonitor.h: + +/usr/include/glib-2.0/gio/gnetworkservice.h: + +/usr/include/glib-2.0/gio/gpermission.h: + +/usr/include/glib-2.0/gio/gpollableinputstream.h: + +/usr/include/glib-2.0/gio/gpollableoutputstream.h: + +/usr/include/glib-2.0/gio/gpollableutils.h: + +/usr/include/glib-2.0/gio/gpropertyaction.h: + +/usr/include/glib-2.0/gio/gproxy.h: + +/usr/include/glib-2.0/gio/gproxyaddress.h: + +/usr/include/glib-2.0/gio/gproxyaddressenumerator.h: + +/usr/include/glib-2.0/gio/gsocketaddressenumerator.h: + +/usr/include/glib-2.0/gio/gproxyresolver.h: + +/usr/include/glib-2.0/gio/gresolver.h: + +/usr/include/glib-2.0/gio/gresource.h: + +/usr/include/glib-2.0/gio/gseekable.h: + +/usr/include/glib-2.0/gio/gsettingsschema.h: + +/usr/include/glib-2.0/gio/gsettings.h: + +/usr/include/glib-2.0/gio/gsimpleaction.h: + +/usr/include/glib-2.0/gio/gsimpleactiongroup.h: + +/usr/include/glib-2.0/gio/gactiongroup.h: + +/usr/include/glib-2.0/gio/gactionmap.h: + +/usr/include/glib-2.0/gio/gsimpleasyncresult.h: + +/usr/include/glib-2.0/gio/gsimplepermission.h: + +/usr/include/glib-2.0/gio/gsocketclient.h: + +/usr/include/glib-2.0/gio/gsocketconnectable.h: + +/usr/include/glib-2.0/gio/gsocketconnection.h: + +/usr/include/glib-2.0/gio/gsocket.h: + +/usr/include/glib-2.0/gio/gsocketcontrolmessage.h: + +/usr/include/glib-2.0/gio/gsocketlistener.h: + +/usr/include/glib-2.0/gio/gsocketservice.h: + +/usr/include/glib-2.0/gio/gsrvtarget.h: + +/usr/include/glib-2.0/gio/gsimpleproxyresolver.h: + +/usr/include/glib-2.0/gio/gtask.h: + +/usr/include/glib-2.0/gio/gsubprocess.h: + +/usr/include/glib-2.0/gio/gsubprocesslauncher.h: + +/usr/include/glib-2.0/gio/gtcpconnection.h: + +/usr/include/glib-2.0/gio/gtcpwrapperconnection.h: + +/usr/include/glib-2.0/gio/gtestdbus.h: + +/usr/include/glib-2.0/gio/gthemedicon.h: + +/usr/include/glib-2.0/gio/gthreadedsocketservice.h: + +/usr/include/glib-2.0/gio/gtlsbackend.h: + +/usr/include/glib-2.0/gio/gtlscertificate.h: + +/usr/include/glib-2.0/gio/gtlsclientconnection.h: + +/usr/include/glib-2.0/gio/gtlsconnection.h: + +/usr/include/glib-2.0/gio/gtlsdatabase.h: + +/usr/include/glib-2.0/gio/gtlsfiledatabase.h: + +/usr/include/glib-2.0/gio/gtlsinteraction.h: + +/usr/include/glib-2.0/gio/gtlsserverconnection.h: + +/usr/include/glib-2.0/gio/gtlspassword.h: + +/usr/include/glib-2.0/gio/gvfs.h: + +/usr/include/glib-2.0/gio/gvolume.h: + +/usr/include/glib-2.0/gio/gzlibcompressor.h: + +/usr/include/glib-2.0/gio/gzlibdecompressor.h: + +/usr/include/glib-2.0/gio/gdbusinterface.h: + +/usr/include/glib-2.0/gio/gdbusinterfaceskeleton.h: + +/usr/include/glib-2.0/gio/gdbusobject.h: + +/usr/include/glib-2.0/gio/gdbusobjectskeleton.h: + +/usr/include/glib-2.0/gio/gdbusobjectproxy.h: + +/usr/include/glib-2.0/gio/gdbusobjectmanager.h: + +/usr/include/glib-2.0/gio/gdbusobjectmanagerclient.h: + +/usr/include/glib-2.0/gio/gdbusobjectmanagerserver.h: + +/usr/include/glib-2.0/gio/gdbusactiongroup.h: + +/usr/include/glib-2.0/gio/giotypes.h: + +/usr/include/glib-2.0/gio/gremoteactiongroup.h: + +/usr/include/glib-2.0/gio/gmenumodel.h: + +/usr/include/glib-2.0/gio/gmenu.h: + +/usr/include/glib-2.0/gio/gmenuexporter.h: + +/usr/include/glib-2.0/gio/gdbusmenumodel.h: + +/usr/include/glib-2.0/gio/gnotification.h: + +/usr/include/gtk-2.0/gdk/gdkscreen.h: + +/usr/include/cairo/cairo.h: + +/usr/include/cairo/cairo-version.h: + +/usr/include/cairo/cairo-features.h: + +/usr/include/cairo/cairo-deprecated.h: + +/usr/include/gtk-2.0/gdk/gdktypes.h: + +/usr/include/pango-1.0/pango/pango.h: + +/usr/include/pango-1.0/pango/pango-attributes.h: + +/usr/include/pango-1.0/pango/pango-font.h: + +/usr/include/pango-1.0/pango/pango-coverage.h: + +/usr/include/pango-1.0/pango/pango-types.h: + +/usr/include/pango-1.0/pango/pango-gravity.h: + +/usr/include/pango-1.0/pango/pango-matrix.h: + +/usr/include/pango-1.0/pango/pango-script.h: + +/usr/include/pango-1.0/pango/pango-language.h: + +/usr/include/pango-1.0/pango/pango-bidi-type.h: + +/usr/include/pango-1.0/pango/pango-break.h: + +/usr/include/pango-1.0/pango/pango-item.h: + +/usr/include/pango-1.0/pango/pango-context.h: + +/usr/include/pango-1.0/pango/pango-fontmap.h: + +/usr/include/pango-1.0/pango/pango-fontset.h: + +/usr/include/pango-1.0/pango/pango-engine.h: + +/usr/include/pango-1.0/pango/pango-glyph.h: + +/usr/include/pango-1.0/pango/pango-enum-types.h: + +/usr/include/pango-1.0/pango/pango-features.h: + +/usr/include/pango-1.0/pango/pango-glyph-item.h: + +/usr/include/pango-1.0/pango/pango-layout.h: + +/usr/include/pango-1.0/pango/pango-tabs.h: + +/usr/include/pango-1.0/pango/pango-renderer.h: + +/usr/include/pango-1.0/pango/pango-utils.h: + +/usr/lib64/gtk-2.0/include/gdkconfig.h: + +/usr/include/gtk-2.0/gdk/gdkdisplay.h: + +/usr/include/gtk-2.0/gdk/gdkevents.h: + +/usr/include/gtk-2.0/gdk/gdkcolor.h: + +/usr/include/gtk-2.0/gdk/gdkdnd.h: + +/usr/include/gtk-2.0/gdk/gdkinput.h: + +/usr/include/gtk-2.0/gdk/gdkcairo.h: + +/usr/include/gtk-2.0/gdk/gdkpixbuf.h: + +/usr/include/gtk-2.0/gdk/gdkrgb.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h: + +/usr/include/pango-1.0/pango/pangocairo.h: + +/usr/include/gtk-2.0/gdk/gdkcursor.h: + +/usr/include/gtk-2.0/gdk/gdkdisplaymanager.h: + +/usr/include/gtk-2.0/gdk/gdkdrawable.h: + +/usr/include/gtk-2.0/gdk/gdkgc.h: + +/usr/include/gtk-2.0/gdk/gdkenumtypes.h: + +/usr/include/gtk-2.0/gdk/gdkfont.h: + +/usr/include/gtk-2.0/gdk/gdkimage.h: + +/usr/include/gtk-2.0/gdk/gdkkeys.h: + +/usr/include/gtk-2.0/gdk/gdkpango.h: + +/usr/include/gtk-2.0/gdk/gdkpixmap.h: + +/usr/include/gtk-2.0/gdk/gdkproperty.h: + +/usr/include/gtk-2.0/gdk/gdkregion.h: + +/usr/include/gtk-2.0/gdk/gdkselection.h: + +/usr/include/gtk-2.0/gdk/gdkspawn.h: + +/usr/include/gtk-2.0/gdk/gdktestutils.h: + +/usr/include/gtk-2.0/gdk/gdkwindow.h: + +/usr/include/gtk-2.0/gdk/gdkvisual.h: + +/usr/include/gtk-2.0/gtk/gtkaboutdialog.h: + +/usr/include/gtk-2.0/gtk/gtkdialog.h: + +/usr/include/gtk-2.0/gtk/gtkwindow.h: + +/usr/include/gtk-2.0/gtk/gtkaccelgroup.h: + +/usr/include/gtk-2.0/gtk/gtkenums.h: + +/usr/include/gtk-2.0/gtk/gtkbin.h: + +/usr/include/gtk-2.0/gtk/gtkcontainer.h: + +/usr/include/gtk-2.0/gtk/gtkwidget.h: + +/usr/include/gtk-2.0/gtk/gtkobject.h: + +/usr/include/gtk-2.0/gtk/gtktypeutils.h: + +/usr/include/gtk-2.0/gtk/gtktypebuiltins.h: + +/usr/include/gtk-2.0/gtk/gtkdebug.h: + +/usr/include/gtk-2.0/gtk/gtkadjustment.h: + +/usr/include/gtk-2.0/gtk/gtkstyle.h: + +/usr/include/gtk-2.0/gtk/gtksettings.h: + +/usr/include/gtk-2.0/gtk/gtkrc.h: + +/usr/include/atk-1.0/atk/atk.h: + +/usr/include/atk-1.0/atk/atkobject.h: + +/usr/include/atk-1.0/atk/atkversion.h: + +/usr/include/atk-1.0/atk/atkstate.h: + +/usr/include/atk-1.0/atk/atkrelationtype.h: + +/usr/include/atk-1.0/atk/atkaction.h: + +/usr/include/atk-1.0/atk/atkcomponent.h: + +/usr/include/atk-1.0/atk/atkutil.h: + +/usr/include/atk-1.0/atk/atkdocument.h: + +/usr/include/atk-1.0/atk/atkeditabletext.h: + +/usr/include/atk-1.0/atk/atktext.h: + +/usr/include/atk-1.0/atk/atk-enum-types.h: + +/usr/include/atk-1.0/atk/atkgobjectaccessible.h: + +/usr/include/atk-1.0/atk/atkhyperlink.h: + +/usr/include/atk-1.0/atk/atkhyperlinkimpl.h: + +/usr/include/atk-1.0/atk/atkhypertext.h: + +/usr/include/atk-1.0/atk/atkimage.h: + +/usr/include/atk-1.0/atk/atknoopobject.h: + +/usr/include/atk-1.0/atk/atknoopobjectfactory.h: + +/usr/include/atk-1.0/atk/atkobjectfactory.h: + +/usr/include/atk-1.0/atk/atkplug.h: + +/usr/include/atk-1.0/atk/atkrange.h: + +/usr/include/atk-1.0/atk/atkregistry.h: + +/usr/include/atk-1.0/atk/atkobjectfactory.h: + +/usr/include/atk-1.0/atk/atkrelation.h: + +/usr/include/atk-1.0/atk/atkrelationset.h: + +/usr/include/atk-1.0/atk/atkselection.h: + +/usr/include/atk-1.0/atk/atksocket.h: + +/usr/include/atk-1.0/atk/atkstateset.h: + +/usr/include/atk-1.0/atk/atkstreamablecontent.h: + +/usr/include/atk-1.0/atk/atktable.h: + +/usr/include/atk-1.0/atk/atktablecell.h: + +/usr/include/atk-1.0/atk/atkmisc.h: + +/usr/include/atk-1.0/atk/atkvalue.h: + +/usr/include/atk-1.0/atk/atkwindow.h: + +/usr/include/gtk-2.0/gtk/gtkaccellabel.h: + +/usr/include/gtk-2.0/gtk/gtklabel.h: + +/usr/include/gtk-2.0/gtk/gtkmisc.h: + +/usr/include/gtk-2.0/gtk/gtkmenu.h: + +/usr/include/gtk-2.0/gtk/gtkmenushell.h: + +/usr/include/gtk-2.0/gtk/gtkaccelmap.h: + +/usr/include/gtk-2.0/gtk/gtkaccessible.h: + +/usr/include/gtk-2.0/gtk/gtkaction.h: + +/usr/include/gtk-2.0/gtk/gtkactiongroup.h: + +/usr/include/gtk-2.0/gtk/gtkactivatable.h: + +/usr/include/gtk-2.0/gtk/gtkalignment.h: + +/usr/include/gtk-2.0/gtk/gtkarrow.h: + +/usr/include/gtk-2.0/gtk/gtkaspectframe.h: + +/usr/include/gtk-2.0/gtk/gtkframe.h: + +/usr/include/gtk-2.0/gtk/gtkassistant.h: + +/usr/include/gtk-2.0/gtk/gtkbbox.h: + +/usr/include/gtk-2.0/gtk/gtkbox.h: + +/usr/include/gtk-2.0/gtk/gtkbindings.h: + +/usr/include/gtk-2.0/gtk/gtkbuildable.h: + +/usr/include/gtk-2.0/gtk/gtkbuilder.h: + +/usr/include/gtk-2.0/gtk/gtkbutton.h: + +/usr/include/gtk-2.0/gtk/gtkimage.h: + +/usr/include/gtk-2.0/gtk/gtkcalendar.h: + +/usr/include/gtk-2.0/gtk/gtksignal.h: + +/usr/include/gtk-2.0/gtk/gtkmarshal.h: + +/usr/include/gtk-2.0/gtk/gtkcelleditable.h: + +/usr/include/gtk-2.0/gtk/gtkcelllayout.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderer.h: + +/usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h: + +/usr/include/gtk-2.0/gtk/gtktreemodel.h: + +/usr/include/gtk-2.0/gtk/gtktreesortable.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendereraccel.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderertext.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderercombo.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererprogress.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererspin.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererspinner.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h: + +/usr/include/gtk-2.0/gtk/gtkcellview.h: + +/usr/include/gtk-2.0/gtk/gtkcheckbutton.h: + +/usr/include/gtk-2.0/gtk/gtktogglebutton.h: + +/usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkitem.h: + +/usr/include/gtk-2.0/gtk/gtkclipboard.h: + +/usr/include/gtk-2.0/gtk/gtkselection.h: + +/usr/include/gtk-2.0/gtk/gtktextiter.h: + +/usr/include/gtk-2.0/gtk/gtktexttag.h: + +/usr/include/gtk-2.0/gtk/gtktextchild.h: + +/usr/include/gtk-2.0/gtk/gtkcolorbutton.h: + +/usr/include/gtk-2.0/gtk/gtkcolorsel.h: + +/usr/include/gtk-2.0/gtk/gtkvbox.h: + +/usr/include/gtk-2.0/gtk/gtkcolorseldialog.h: + +/usr/include/gtk-2.0/gtk/gtkcombobox.h: + +/usr/include/gtk-2.0/gtk/gtktreeview.h: + +/usr/include/gtk-2.0/gtk/gtkdnd.h: + +/usr/include/gtk-2.0/gtk/gtkentry.h: + +/usr/include/gtk-2.0/gtk/gtkeditable.h: + +/usr/include/gtk-2.0/gtk/gtkimcontext.h: + +/usr/include/gtk-2.0/gtk/gtkentrybuffer.h: + +/usr/include/gtk-2.0/gtk/gtkentrycompletion.h: + +/usr/include/gtk-2.0/gtk/gtkliststore.h: + +/usr/include/gtk-2.0/gtk/gtktreemodelfilter.h: + +/usr/include/gtk-2.0/gtk/gtkcomboboxentry.h: + +/usr/include/gtk-2.0/gtk/gtkcomboboxtext.h: + +/usr/include/gtk-2.0/gtk/gtkdrawingarea.h: + +/usr/include/gtk-2.0/gtk/gtkeventbox.h: + +/usr/include/gtk-2.0/gtk/gtkexpander.h: + +/usr/include/gtk-2.0/gtk/gtkfixed.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooser.h: + +/usr/include/gtk-2.0/gtk/gtkfilefilter.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h: + +/usr/include/gtk-2.0/gtk/gtkhbox.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h: + +/usr/include/gtk-2.0/gtk/gtkfontbutton.h: + +/usr/include/gtk-2.0/gtk/gtkfontsel.h: + +/usr/include/gtk-2.0/gtk/gtkgc.h: + +/usr/include/gtk-2.0/gtk/gtkhandlebox.h: + +/usr/include/gtk-2.0/gtk/gtkhbbox.h: + +/usr/include/gtk-2.0/gtk/gtkhpaned.h: + +/usr/include/gtk-2.0/gtk/gtkpaned.h: + +/usr/include/gtk-2.0/gtk/gtkhruler.h: + +/usr/include/gtk-2.0/gtk/gtkruler.h: + +/usr/include/gtk-2.0/gtk/gtkhscale.h: + +/usr/include/gtk-2.0/gtk/gtkscale.h: + +/usr/include/gtk-2.0/gtk/gtkrange.h: + +/usr/include/gtk-2.0/gtk/gtkhscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkhseparator.h: + +/usr/include/gtk-2.0/gtk/gtkseparator.h: + +/usr/include/gtk-2.0/gtk/gtkhsv.h: + +/usr/include/gtk-2.0/gtk/gtkiconfactory.h: + +/usr/include/gtk-2.0/gtk/gtkicontheme.h: + +/usr/include/gtk-2.0/gtk/gtkiconview.h: + +/usr/include/gtk-2.0/gtk/gtktooltip.h: + +/usr/include/gtk-2.0/gtk/gtkimagemenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkimcontextsimple.h: + +/usr/include/gtk-2.0/gtk/gtkimmulticontext.h: + +/usr/include/gtk-2.0/gtk/gtkinfobar.h: + +/usr/include/gtk-2.0/gtk/gtkinvisible.h: + +/usr/include/gtk-2.0/gtk/gtklayout.h: + +/usr/include/gtk-2.0/gtk/gtklinkbutton.h: + +/usr/include/gtk-2.0/gtk/gtkmain.h: + +/usr/include/gtk-2.0/gtk/gtkmenubar.h: + +/usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolitem.h: + +/usr/include/gtk-2.0/gtk/gtktooltips.h: + +/usr/include/gtk-2.0/gtk/gtksizegroup.h: + +/usr/include/gtk-2.0/gtk/gtkmessagedialog.h: + +/usr/include/gtk-2.0/gtk/gtkmodules.h: + +/usr/include/gtk-2.0/gtk/gtkmountoperation.h: + +/usr/include/gtk-2.0/gtk/gtknotebook.h: + +/usr/include/gtk-2.0/gtk/gtkoffscreenwindow.h: + +/usr/include/gtk-2.0/gtk/gtkorientable.h: + +/usr/include/gtk-2.0/gtk/gtkpagesetup.h: + +/usr/include/gtk-2.0/gtk/gtkpapersize.h: + +/usr/include/gtk-2.0/gtk/gtkplug.h: + +/usr/include/gtk-2.0/gtk/gtksocket.h: + +/usr/include/gtk-2.0/gtk/gtkprintcontext.h: + +/usr/include/gtk-2.0/gtk/gtkprintoperation.h: + +/usr/include/gtk-2.0/gtk/gtkprintsettings.h: + +/usr/include/gtk-2.0/gtk/gtkprintoperationpreview.h: + +/usr/include/gtk-2.0/gtk/gtkprogressbar.h: + +/usr/include/gtk-2.0/gtk/gtkprogress.h: + +/usr/include/gtk-2.0/gtk/gtkradioaction.h: + +/usr/include/gtk-2.0/gtk/gtktoggleaction.h: + +/usr/include/gtk-2.0/gtk/gtkradiobutton.h: + +/usr/include/gtk-2.0/gtk/gtkradiomenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtkrecentaction.h: + +/usr/include/gtk-2.0/gtk/gtkrecentmanager.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooser.h: + +/usr/include/gtk-2.0/gtk/gtkrecentfilter.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooserdialog.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchoosermenu.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooserwidget.h: + +/usr/include/gtk-2.0/gtk/gtkscalebutton.h: + +/usr/include/gtk-2.0/gtk/gtkscrolledwindow.h: + +/usr/include/gtk-2.0/gtk/gtkvscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkviewport.h: + +/usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h: + +/usr/include/gtk-2.0/gtk/gtkshow.h: + +/usr/include/gtk-2.0/gtk/gtkspinbutton.h: + +/usr/include/gtk-2.0/gtk/gtkspinner.h: + +/usr/include/gtk-2.0/gtk/gtkstatusbar.h: + +/usr/include/gtk-2.0/gtk/gtkstatusicon.h: + +/usr/include/gtk-2.0/gtk/gtkstock.h: + +/usr/include/gtk-2.0/gtk/gtktable.h: + +/usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtktextbuffer.h: + +/usr/include/gtk-2.0/gtk/gtktexttagtable.h: + +/usr/include/gtk-2.0/gtk/gtktextmark.h: + +/usr/include/gtk-2.0/gtk/gtktextbufferrichtext.h: + +/usr/include/gtk-2.0/gtk/gtktextview.h: + +/usr/include/gtk-2.0/gtk/gtktoolbar.h: + +/usr/include/gtk-2.0/gtk/gtkpixmap.h: + +/usr/include/gtk-2.0/gtk/gtktoolitemgroup.h: + +/usr/include/gtk-2.0/gtk/gtktoolpalette.h: + +/usr/include/gtk-2.0/gtk/gtktoolshell.h: + +/usr/include/gtk-2.0/gtk/gtktestutils.h: + +/usr/include/gtk-2.0/gtk/gtktreednd.h: + +/usr/include/gtk-2.0/gtk/gtktreemodelsort.h: + +/usr/include/gtk-2.0/gtk/gtktreeselection.h: + +/usr/include/gtk-2.0/gtk/gtktreestore.h: + +/usr/include/gtk-2.0/gtk/gtkuimanager.h: + +/usr/include/gtk-2.0/gtk/gtkvbbox.h: + +/usr/include/gtk-2.0/gtk/gtkversion.h: + +/usr/include/gtk-2.0/gtk/gtkvolumebutton.h: + +/usr/include/gtk-2.0/gtk/gtkvpaned.h: + +/usr/include/gtk-2.0/gtk/gtkvruler.h: + +/usr/include/gtk-2.0/gtk/gtkvscale.h: + +/usr/include/gtk-2.0/gtk/gtkvseparator.h: + +/usr/include/gtk-2.0/gtk/gtktext.h: + +/usr/include/gtk-2.0/gtk/gtktree.h: + +/usr/include/gtk-2.0/gtk/gtktreeitem.h: + +/usr/include/gtk-2.0/gtk/gtkclist.h: + +/usr/include/gtk-2.0/gtk/gtkcombo.h: + +/usr/include/gtk-2.0/gtk/gtkctree.h: + +/usr/include/gtk-2.0/gtk/gtkcurve.h: + +/usr/include/gtk-2.0/gtk/gtkfilesel.h: + +/usr/include/gtk-2.0/gtk/gtkgamma.h: + +/usr/include/gtk-2.0/gtk/gtkinputdialog.h: + +/usr/include/gtk-2.0/gtk/gtkitemfactory.h: + +/usr/include/gtk-2.0/gtk/gtklist.h: + +/usr/include/gtk-2.0/gtk/gtklistitem.h: + +/usr/include/gtk-2.0/gtk/gtkoldeditable.h: + +/usr/include/gtk-2.0/gtk/gtkoptionmenu.h: + +/usr/include/gtk-2.0/gtk/gtkpreview.h: + +/usr/include/gtk-2.0/gtk/gtktipsquery.h: + +/usr/include/libglade-2.0/glade/glade.h: + +/usr/include/libglade-2.0/glade/glade-init.h: + +/usr/include/libglade-2.0/glade/glade-xml.h: + +/usr/include/sys/time.h: + +/usr/include/regex.h: + +Linux.h: + +../include/config.h: + +../libpcsxcore/psxcommon.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/bits/wchar.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +Cheat.h: + +ConfDlg.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/psxcommon.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: diff --git a/gui/.deps/Config.Po b/gui/.deps/Config.Po new file mode 100644 index 0000000..ef56538 --- /dev/null +++ b/gui/.deps/Config.Po @@ -0,0 +1,232 @@ +Config.o: Config.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h Linux.h ../include/config.h \ + ../libpcsxcore/psxcommon.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h Cheat.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +Linux.h: + +../include/config.h: + +../libpcsxcore/psxcommon.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +Cheat.h: diff --git a/gui/.deps/DebugMemory.Po b/gui/.deps/DebugMemory.Po new file mode 100644 index 0000000..3c57c4f --- /dev/null +++ b/gui/.deps/DebugMemory.Po @@ -0,0 +1,1839 @@ +DebugMemory.o: DebugMemory.c /usr/include/stdc-predef.h Linux.h \ + ../include/config.h ../libpcsxcore/psxcommon.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/bits/string.h /usr/include/bits/string2.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ + /usr/include/stdlib.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h /usr/include/zconf.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/getopt.h \ + ../libpcsxcore/system.h ../libpcsxcore/debug.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/gtk-2.0/gtk/gtk.h /usr/include/gtk-2.0/gdk/gdk.h \ + /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h \ + /usr/include/glib-2.0/gio/gio.h /usr/include/glib-2.0/gio/giotypes.h \ + /usr/include/glib-2.0/gio/gioenums.h /usr/include/glib-2.0/glib-object.h \ + /usr/include/glib-2.0/gobject/gbinding.h /usr/include/glib-2.0/glib.h \ + /usr/include/glib-2.0/glib/galloca.h /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib64/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.8/include/float.h \ + /usr/include/glib-2.0/glib/gversionmacros.h \ + /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gasyncqueue.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gatomic.h /usr/include/glib-2.0/glib/gerror.h \ + /usr/include/glib-2.0/glib/gquark.h \ + /usr/include/glib-2.0/glib/gbacktrace.h /usr/include/signal.h \ + /usr/include/bits/signum.h /usr/include/bits/siginfo.h \ + /usr/include/bits/sigaction.h /usr/include/bits/sigcontext.h \ + /usr/include/bits/sigstack.h /usr/include/sys/ucontext.h \ + /usr/include/bits/sigthread.h /usr/include/glib-2.0/glib/gbase64.h \ + /usr/include/glib-2.0/glib/gbitlock.h \ + /usr/include/glib-2.0/glib/gbookmarkfile.h \ + /usr/include/glib-2.0/glib/gbytes.h \ + /usr/include/glib-2.0/glib/gcharset.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ + /usr/include/glib-2.0/glib/gdatetime.h \ + /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ + /usr/include/dirent.h /usr/include/bits/dirent.h \ + /usr/include/glib-2.0/glib/genviron.h \ + /usr/include/glib-2.0/glib/gfileutils.h \ + /usr/include/glib-2.0/glib/ggettext.h /usr/include/glib-2.0/glib/ghash.h \ + /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/ghmac.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/ghook.h \ + /usr/include/glib-2.0/glib/ghostutils.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ + /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gutils.h \ + /usr/include/glib-2.0/glib/gkeyfile.h \ + /usr/include/glib-2.0/glib/gmappedfile.h \ + /usr/include/glib-2.0/glib/gmarkup.h \ + /usr/include/glib-2.0/glib/gmessages.h \ + /usr/include/glib-2.0/glib/goption.h \ + /usr/include/glib-2.0/glib/gpattern.h \ + /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ + /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ + /usr/include/glib-2.0/glib/gregex.h \ + /usr/include/glib-2.0/glib/gscanner.h \ + /usr/include/glib-2.0/glib/gsequence.h \ + /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gslice.h \ + /usr/include/glib-2.0/glib/gspawn.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h \ + /usr/include/glib-2.0/glib/gstringchunk.h \ + /usr/include/glib-2.0/glib/gtestutils.h \ + /usr/include/glib-2.0/glib/gthreadpool.h \ + /usr/include/glib-2.0/glib/gtimer.h \ + /usr/include/glib-2.0/glib/gtrashstack.h \ + /usr/include/glib-2.0/glib/gtree.h \ + /usr/include/glib-2.0/glib/gurifuncs.h \ + /usr/include/glib-2.0/glib/gvarianttype.h \ + /usr/include/glib-2.0/glib/gvariant.h \ + /usr/include/glib-2.0/glib/gversion.h \ + /usr/include/glib-2.0/glib/deprecated/gallocator.h \ + /usr/include/glib-2.0/glib/deprecated/gcache.h \ + /usr/include/glib-2.0/glib/deprecated/gcompletion.h \ + /usr/include/glib-2.0/glib/deprecated/gmain.h \ + /usr/include/glib-2.0/glib/deprecated/grel.h \ + /usr/include/glib-2.0/glib/deprecated/gthread.h /usr/include/pthread.h \ + /usr/include/sched.h /usr/include/bits/sched.h \ + /usr/include/bits/setjmp.h /usr/include/glib-2.0/gobject/gobject.h \ + /usr/include/glib-2.0/gobject/gtype.h \ + /usr/include/glib-2.0/gobject/gvalue.h \ + /usr/include/glib-2.0/gobject/gparam.h \ + /usr/include/glib-2.0/gobject/gclosure.h \ + /usr/include/glib-2.0/gobject/gsignal.h \ + /usr/include/glib-2.0/gobject/gmarshal.h \ + /usr/include/glib-2.0/gobject/gboxed.h \ + /usr/include/glib-2.0/gobject/glib-types.h \ + /usr/include/glib-2.0/gobject/genums.h \ + /usr/include/glib-2.0/gobject/gparamspecs.h \ + /usr/include/glib-2.0/gobject/gsourceclosure.h \ + /usr/include/glib-2.0/gobject/gtypemodule.h \ + /usr/include/glib-2.0/gobject/gtypeplugin.h \ + /usr/include/glib-2.0/gobject/gvaluearray.h \ + /usr/include/glib-2.0/gobject/gvaluetypes.h \ + /usr/include/glib-2.0/gio/gaction.h \ + /usr/include/glib-2.0/gio/gactiongroup.h \ + /usr/include/glib-2.0/gio/gactiongroupexporter.h \ + /usr/include/glib-2.0/gio/gactionmap.h \ + /usr/include/glib-2.0/gio/gappinfo.h \ + /usr/include/glib-2.0/gio/gapplication.h \ + /usr/include/glib-2.0/gio/gapplicationcommandline.h \ + /usr/include/glib-2.0/gio/gasyncinitable.h \ + /usr/include/glib-2.0/gio/ginitable.h \ + /usr/include/glib-2.0/gio/gasyncresult.h \ + /usr/include/glib-2.0/gio/gbufferedinputstream.h \ + /usr/include/glib-2.0/gio/gfilterinputstream.h \ + /usr/include/glib-2.0/gio/ginputstream.h \ + /usr/include/glib-2.0/gio/gbufferedoutputstream.h \ + /usr/include/glib-2.0/gio/gfilteroutputstream.h \ + /usr/include/glib-2.0/gio/goutputstream.h \ + /usr/include/glib-2.0/gio/gbytesicon.h \ + /usr/include/glib-2.0/gio/gcancellable.h \ + /usr/include/glib-2.0/gio/gcharsetconverter.h \ + /usr/include/glib-2.0/gio/gconverter.h \ + /usr/include/glib-2.0/gio/gcontenttype.h \ + /usr/include/glib-2.0/gio/gconverterinputstream.h \ + /usr/include/glib-2.0/gio/gconverteroutputstream.h \ + /usr/include/glib-2.0/gio/gcredentials.h \ + /usr/include/glib-2.0/gio/gdatainputstream.h \ + /usr/include/glib-2.0/gio/gdataoutputstream.h \ + /usr/include/glib-2.0/gio/gdbusaddress.h \ + /usr/include/glib-2.0/gio/gdbusauthobserver.h \ + /usr/include/glib-2.0/gio/gdbusconnection.h \ + /usr/include/glib-2.0/gio/gdbuserror.h \ + /usr/include/glib-2.0/gio/gdbusintrospection.h \ + /usr/include/glib-2.0/gio/gdbusmessage.h \ + /usr/include/glib-2.0/gio/gdbusmethodinvocation.h \ + /usr/include/glib-2.0/gio/gdbusnameowning.h \ + /usr/include/glib-2.0/gio/gdbusnamewatching.h \ + /usr/include/glib-2.0/gio/gdbusproxy.h \ + /usr/include/glib-2.0/gio/gdbusserver.h \ + /usr/include/glib-2.0/gio/gdbusutils.h \ + /usr/include/glib-2.0/gio/gdrive.h \ + /usr/include/glib-2.0/gio/gemblemedicon.h \ + /usr/include/glib-2.0/gio/gicon.h /usr/include/glib-2.0/gio/gemblem.h \ + /usr/include/glib-2.0/gio/gfileattribute.h \ + /usr/include/glib-2.0/gio/gfileenumerator.h \ + /usr/include/glib-2.0/gio/gfile.h /usr/include/glib-2.0/gio/gfileicon.h \ + /usr/include/glib-2.0/gio/gfileinfo.h \ + /usr/include/glib-2.0/gio/gfileinputstream.h \ + /usr/include/glib-2.0/gio/gfileiostream.h \ + /usr/include/glib-2.0/gio/giostream.h \ + /usr/include/glib-2.0/gio/gioerror.h \ + /usr/include/glib-2.0/gio/gfilemonitor.h \ + /usr/include/glib-2.0/gio/gfilenamecompleter.h \ + /usr/include/glib-2.0/gio/gfileoutputstream.h \ + /usr/include/glib-2.0/gio/ginetaddress.h \ + /usr/include/glib-2.0/gio/ginetaddressmask.h \ + /usr/include/glib-2.0/gio/ginetsocketaddress.h \ + /usr/include/glib-2.0/gio/gsocketaddress.h \ + /usr/include/glib-2.0/gio/gioenumtypes.h \ + /usr/include/glib-2.0/gio/giomodule.h /usr/include/glib-2.0/gmodule.h \ + /usr/include/glib-2.0/gio/gioscheduler.h \ + /usr/include/glib-2.0/gio/gloadableicon.h \ + /usr/include/glib-2.0/gio/gmemoryinputstream.h \ + /usr/include/glib-2.0/gio/gmemoryoutputstream.h \ + /usr/include/glib-2.0/gio/gmount.h \ + /usr/include/glib-2.0/gio/gmountoperation.h \ + /usr/include/glib-2.0/gio/gnativevolumemonitor.h \ + /usr/include/glib-2.0/gio/gvolumemonitor.h \ + /usr/include/glib-2.0/gio/gnetworkaddress.h \ + /usr/include/glib-2.0/gio/gnetworkmonitor.h \ + /usr/include/glib-2.0/gio/gnetworkservice.h \ + /usr/include/glib-2.0/gio/gpermission.h \ + /usr/include/glib-2.0/gio/gpollableinputstream.h \ + /usr/include/glib-2.0/gio/gpollableoutputstream.h \ + /usr/include/glib-2.0/gio/gpollableutils.h \ + /usr/include/glib-2.0/gio/gpropertyaction.h \ + /usr/include/glib-2.0/gio/gproxy.h \ + /usr/include/glib-2.0/gio/gproxyaddress.h \ + /usr/include/glib-2.0/gio/gproxyaddressenumerator.h \ + /usr/include/glib-2.0/gio/gsocketaddressenumerator.h \ + /usr/include/glib-2.0/gio/gproxyresolver.h \ + /usr/include/glib-2.0/gio/gresolver.h \ + /usr/include/glib-2.0/gio/gresource.h \ + /usr/include/glib-2.0/gio/gseekable.h \ + /usr/include/glib-2.0/gio/gsettingsschema.h \ + /usr/include/glib-2.0/gio/gsettings.h \ + /usr/include/glib-2.0/gio/gsimpleaction.h \ + /usr/include/glib-2.0/gio/gsimpleactiongroup.h \ + /usr/include/glib-2.0/gio/gactiongroup.h \ + /usr/include/glib-2.0/gio/gactionmap.h \ + /usr/include/glib-2.0/gio/gsimpleasyncresult.h \ + /usr/include/glib-2.0/gio/gsimplepermission.h \ + /usr/include/glib-2.0/gio/gsocketclient.h \ + /usr/include/glib-2.0/gio/gsocketconnectable.h \ + /usr/include/glib-2.0/gio/gsocketconnection.h \ + /usr/include/glib-2.0/gio/gsocket.h \ + /usr/include/glib-2.0/gio/gsocketcontrolmessage.h \ + /usr/include/glib-2.0/gio/gsocketlistener.h \ + /usr/include/glib-2.0/gio/gsocketservice.h \ + /usr/include/glib-2.0/gio/gsrvtarget.h \ + /usr/include/glib-2.0/gio/gsimpleproxyresolver.h \ + /usr/include/glib-2.0/gio/gtask.h \ + /usr/include/glib-2.0/gio/gsubprocess.h \ + /usr/include/glib-2.0/gio/gsubprocesslauncher.h \ + /usr/include/glib-2.0/gio/gtcpconnection.h \ + /usr/include/glib-2.0/gio/gtcpwrapperconnection.h \ + /usr/include/glib-2.0/gio/gtestdbus.h \ + /usr/include/glib-2.0/gio/gthemedicon.h \ + /usr/include/glib-2.0/gio/gthreadedsocketservice.h \ + /usr/include/glib-2.0/gio/gtlsbackend.h \ + /usr/include/glib-2.0/gio/gtlscertificate.h \ + /usr/include/glib-2.0/gio/gtlsclientconnection.h \ + /usr/include/glib-2.0/gio/gtlsconnection.h \ + /usr/include/glib-2.0/gio/gtlsdatabase.h \ + /usr/include/glib-2.0/gio/gtlsfiledatabase.h \ + /usr/include/glib-2.0/gio/gtlsinteraction.h \ + /usr/include/glib-2.0/gio/gtlsserverconnection.h \ + /usr/include/glib-2.0/gio/gtlspassword.h \ + /usr/include/glib-2.0/gio/gvfs.h /usr/include/glib-2.0/gio/gvolume.h \ + /usr/include/glib-2.0/gio/gzlibcompressor.h \ + /usr/include/glib-2.0/gio/gzlibdecompressor.h \ + /usr/include/glib-2.0/gio/gdbusinterface.h \ + /usr/include/glib-2.0/gio/gdbusinterfaceskeleton.h \ + /usr/include/glib-2.0/gio/gdbusobject.h \ + /usr/include/glib-2.0/gio/gdbusobjectskeleton.h \ + /usr/include/glib-2.0/gio/gdbusobjectproxy.h \ + /usr/include/glib-2.0/gio/gdbusobjectmanager.h \ + /usr/include/glib-2.0/gio/gdbusobjectmanagerclient.h \ + /usr/include/glib-2.0/gio/gdbusobjectmanagerserver.h \ + /usr/include/glib-2.0/gio/gdbusactiongroup.h \ + /usr/include/glib-2.0/gio/giotypes.h \ + /usr/include/glib-2.0/gio/gremoteactiongroup.h \ + /usr/include/glib-2.0/gio/gmenumodel.h /usr/include/glib-2.0/gio/gmenu.h \ + /usr/include/glib-2.0/gio/gmenuexporter.h \ + /usr/include/glib-2.0/gio/gdbusmenumodel.h \ + /usr/include/glib-2.0/gio/gnotification.h \ + /usr/include/gtk-2.0/gdk/gdkscreen.h /usr/include/cairo/cairo.h \ + /usr/include/cairo/cairo-version.h /usr/include/cairo/cairo-features.h \ + /usr/include/cairo/cairo-deprecated.h \ + /usr/include/gtk-2.0/gdk/gdktypes.h /usr/include/pango-1.0/pango/pango.h \ + /usr/include/pango-1.0/pango/pango-attributes.h \ + /usr/include/pango-1.0/pango/pango-font.h \ + /usr/include/pango-1.0/pango/pango-coverage.h \ + /usr/include/pango-1.0/pango/pango-types.h \ + /usr/include/pango-1.0/pango/pango-gravity.h \ + /usr/include/pango-1.0/pango/pango-matrix.h \ + /usr/include/pango-1.0/pango/pango-script.h \ + /usr/include/pango-1.0/pango/pango-language.h \ + /usr/include/pango-1.0/pango/pango-bidi-type.h \ + /usr/include/pango-1.0/pango/pango-break.h \ + /usr/include/pango-1.0/pango/pango-item.h \ + /usr/include/pango-1.0/pango/pango-context.h \ + /usr/include/pango-1.0/pango/pango-fontmap.h \ + /usr/include/pango-1.0/pango/pango-fontset.h \ + /usr/include/pango-1.0/pango/pango-engine.h \ + /usr/include/pango-1.0/pango/pango-glyph.h \ + /usr/include/pango-1.0/pango/pango-enum-types.h \ + /usr/include/pango-1.0/pango/pango-features.h \ + /usr/include/pango-1.0/pango/pango-glyph-item.h \ + /usr/include/pango-1.0/pango/pango-layout.h \ + /usr/include/pango-1.0/pango/pango-tabs.h \ + /usr/include/pango-1.0/pango/pango-renderer.h \ + /usr/include/pango-1.0/pango/pango-utils.h \ + /usr/lib64/gtk-2.0/include/gdkconfig.h \ + /usr/include/gtk-2.0/gdk/gdkdisplay.h \ + /usr/include/gtk-2.0/gdk/gdkevents.h /usr/include/gtk-2.0/gdk/gdkcolor.h \ + /usr/include/gtk-2.0/gdk/gdkdnd.h /usr/include/gtk-2.0/gdk/gdkinput.h \ + /usr/include/gtk-2.0/gdk/gdkcairo.h /usr/include/gtk-2.0/gdk/gdkpixbuf.h \ + /usr/include/gtk-2.0/gdk/gdkrgb.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h \ + /usr/include/pango-1.0/pango/pangocairo.h \ + /usr/include/gtk-2.0/gdk/gdkcursor.h \ + /usr/include/gtk-2.0/gdk/gdkdisplaymanager.h \ + /usr/include/gtk-2.0/gdk/gdkdrawable.h /usr/include/gtk-2.0/gdk/gdkgc.h \ + /usr/include/gtk-2.0/gdk/gdkenumtypes.h \ + /usr/include/gtk-2.0/gdk/gdkfont.h /usr/include/gtk-2.0/gdk/gdkimage.h \ + /usr/include/gtk-2.0/gdk/gdkkeys.h /usr/include/gtk-2.0/gdk/gdkpango.h \ + /usr/include/gtk-2.0/gdk/gdkpixmap.h \ + /usr/include/gtk-2.0/gdk/gdkproperty.h \ + /usr/include/gtk-2.0/gdk/gdkregion.h \ + /usr/include/gtk-2.0/gdk/gdkselection.h \ + /usr/include/gtk-2.0/gdk/gdkspawn.h \ + /usr/include/gtk-2.0/gdk/gdktestutils.h \ + /usr/include/gtk-2.0/gdk/gdkwindow.h \ + /usr/include/gtk-2.0/gdk/gdkvisual.h \ + /usr/include/gtk-2.0/gtk/gtkaboutdialog.h \ + /usr/include/gtk-2.0/gtk/gtkdialog.h \ + /usr/include/gtk-2.0/gtk/gtkwindow.h \ + /usr/include/gtk-2.0/gtk/gtkaccelgroup.h \ + /usr/include/gtk-2.0/gtk/gtkenums.h /usr/include/gtk-2.0/gtk/gtkbin.h \ + /usr/include/gtk-2.0/gtk/gtkcontainer.h \ + /usr/include/gtk-2.0/gtk/gtkwidget.h \ + /usr/include/gtk-2.0/gtk/gtkobject.h \ + /usr/include/gtk-2.0/gtk/gtktypeutils.h \ + /usr/include/gtk-2.0/gtk/gtktypebuiltins.h \ + /usr/include/gtk-2.0/gtk/gtkdebug.h \ + /usr/include/gtk-2.0/gtk/gtkadjustment.h \ + /usr/include/gtk-2.0/gtk/gtkstyle.h \ + /usr/include/gtk-2.0/gtk/gtksettings.h /usr/include/gtk-2.0/gtk/gtkrc.h \ + /usr/include/atk-1.0/atk/atk.h /usr/include/atk-1.0/atk/atkobject.h \ + /usr/include/atk-1.0/atk/atkversion.h \ + /usr/include/atk-1.0/atk/atkstate.h \ + /usr/include/atk-1.0/atk/atkrelationtype.h \ + /usr/include/atk-1.0/atk/atkaction.h \ + /usr/include/atk-1.0/atk/atkcomponent.h \ + /usr/include/atk-1.0/atk/atkutil.h \ + /usr/include/atk-1.0/atk/atkdocument.h \ + /usr/include/atk-1.0/atk/atkeditabletext.h \ + /usr/include/atk-1.0/atk/atktext.h \ + /usr/include/atk-1.0/atk/atk-enum-types.h \ + /usr/include/atk-1.0/atk/atkgobjectaccessible.h \ + /usr/include/atk-1.0/atk/atkhyperlink.h \ + /usr/include/atk-1.0/atk/atkhyperlinkimpl.h \ + /usr/include/atk-1.0/atk/atkhypertext.h \ + /usr/include/atk-1.0/atk/atkimage.h \ + /usr/include/atk-1.0/atk/atknoopobject.h \ + /usr/include/atk-1.0/atk/atknoopobjectfactory.h \ + /usr/include/atk-1.0/atk/atkobjectfactory.h \ + /usr/include/atk-1.0/atk/atkplug.h /usr/include/atk-1.0/atk/atkrange.h \ + /usr/include/atk-1.0/atk/atkregistry.h \ + /usr/include/atk-1.0/atk/atkobjectfactory.h \ + /usr/include/atk-1.0/atk/atkrelation.h \ + /usr/include/atk-1.0/atk/atkrelationset.h \ + /usr/include/atk-1.0/atk/atkselection.h \ + /usr/include/atk-1.0/atk/atksocket.h \ + /usr/include/atk-1.0/atk/atkstateset.h \ + /usr/include/atk-1.0/atk/atkstreamablecontent.h \ + /usr/include/atk-1.0/atk/atktable.h \ + /usr/include/atk-1.0/atk/atktablecell.h \ + /usr/include/atk-1.0/atk/atkmisc.h /usr/include/atk-1.0/atk/atkvalue.h \ + /usr/include/atk-1.0/atk/atkwindow.h \ + /usr/include/gtk-2.0/gtk/gtkaccellabel.h \ + /usr/include/gtk-2.0/gtk/gtklabel.h /usr/include/gtk-2.0/gtk/gtkmisc.h \ + /usr/include/gtk-2.0/gtk/gtkmenu.h \ + /usr/include/gtk-2.0/gtk/gtkmenushell.h \ + /usr/include/gtk-2.0/gtk/gtkaccelmap.h \ + /usr/include/gtk-2.0/gtk/gtkaccessible.h \ + /usr/include/gtk-2.0/gtk/gtkaction.h \ + /usr/include/gtk-2.0/gtk/gtkactiongroup.h \ + /usr/include/gtk-2.0/gtk/gtkactivatable.h \ + /usr/include/gtk-2.0/gtk/gtkalignment.h \ + /usr/include/gtk-2.0/gtk/gtkarrow.h \ + /usr/include/gtk-2.0/gtk/gtkaspectframe.h \ + /usr/include/gtk-2.0/gtk/gtkframe.h \ + /usr/include/gtk-2.0/gtk/gtkassistant.h \ + /usr/include/gtk-2.0/gtk/gtkbbox.h /usr/include/gtk-2.0/gtk/gtkbox.h \ + /usr/include/gtk-2.0/gtk/gtkbindings.h \ + /usr/include/gtk-2.0/gtk/gtkbuildable.h \ + /usr/include/gtk-2.0/gtk/gtkbuilder.h \ + /usr/include/gtk-2.0/gtk/gtkbutton.h /usr/include/gtk-2.0/gtk/gtkimage.h \ + /usr/include/gtk-2.0/gtk/gtkcalendar.h \ + /usr/include/gtk-2.0/gtk/gtksignal.h \ + /usr/include/gtk-2.0/gtk/gtkmarshal.h \ + /usr/include/gtk-2.0/gtk/gtkcelleditable.h \ + /usr/include/gtk-2.0/gtk/gtkcelllayout.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderer.h \ + /usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h \ + /usr/include/gtk-2.0/gtk/gtktreemodel.h \ + /usr/include/gtk-2.0/gtk/gtktreesortable.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendereraccel.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderertext.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderercombo.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererprogress.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererspin.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererspinner.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h \ + /usr/include/gtk-2.0/gtk/gtkcellview.h \ + /usr/include/gtk-2.0/gtk/gtkcheckbutton.h \ + /usr/include/gtk-2.0/gtk/gtktogglebutton.h \ + /usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkitem.h \ + /usr/include/gtk-2.0/gtk/gtkclipboard.h \ + /usr/include/gtk-2.0/gtk/gtkselection.h \ + /usr/include/gtk-2.0/gtk/gtktextiter.h \ + /usr/include/gtk-2.0/gtk/gtktexttag.h \ + /usr/include/gtk-2.0/gtk/gtktextchild.h \ + /usr/include/gtk-2.0/gtk/gtkcolorbutton.h \ + /usr/include/gtk-2.0/gtk/gtkcolorsel.h \ + /usr/include/gtk-2.0/gtk/gtkvbox.h \ + /usr/include/gtk-2.0/gtk/gtkcolorseldialog.h \ + /usr/include/gtk-2.0/gtk/gtkcombobox.h \ + /usr/include/gtk-2.0/gtk/gtktreeview.h /usr/include/gtk-2.0/gtk/gtkdnd.h \ + /usr/include/gtk-2.0/gtk/gtkentry.h \ + /usr/include/gtk-2.0/gtk/gtkeditable.h \ + /usr/include/gtk-2.0/gtk/gtkimcontext.h \ + /usr/include/gtk-2.0/gtk/gtkentrybuffer.h \ + /usr/include/gtk-2.0/gtk/gtkentrycompletion.h \ + /usr/include/gtk-2.0/gtk/gtkliststore.h \ + /usr/include/gtk-2.0/gtk/gtktreemodelfilter.h \ + /usr/include/gtk-2.0/gtk/gtkcomboboxentry.h \ + /usr/include/gtk-2.0/gtk/gtkcomboboxtext.h \ + /usr/include/gtk-2.0/gtk/gtkdrawingarea.h \ + /usr/include/gtk-2.0/gtk/gtkeventbox.h \ + /usr/include/gtk-2.0/gtk/gtkexpander.h \ + /usr/include/gtk-2.0/gtk/gtkfixed.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooser.h \ + /usr/include/gtk-2.0/gtk/gtkfilefilter.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h \ + /usr/include/gtk-2.0/gtk/gtkhbox.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h \ + /usr/include/gtk-2.0/gtk/gtkfontbutton.h \ + /usr/include/gtk-2.0/gtk/gtkfontsel.h /usr/include/gtk-2.0/gtk/gtkgc.h \ + /usr/include/gtk-2.0/gtk/gtkhandlebox.h \ + /usr/include/gtk-2.0/gtk/gtkhbbox.h /usr/include/gtk-2.0/gtk/gtkhpaned.h \ + /usr/include/gtk-2.0/gtk/gtkpaned.h /usr/include/gtk-2.0/gtk/gtkhruler.h \ + /usr/include/gtk-2.0/gtk/gtkruler.h /usr/include/gtk-2.0/gtk/gtkhscale.h \ + /usr/include/gtk-2.0/gtk/gtkscale.h /usr/include/gtk-2.0/gtk/gtkrange.h \ + /usr/include/gtk-2.0/gtk/gtkhscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkhseparator.h \ + /usr/include/gtk-2.0/gtk/gtkseparator.h \ + /usr/include/gtk-2.0/gtk/gtkhsv.h \ + /usr/include/gtk-2.0/gtk/gtkiconfactory.h \ + /usr/include/gtk-2.0/gtk/gtkicontheme.h \ + /usr/include/gtk-2.0/gtk/gtkiconview.h \ + /usr/include/gtk-2.0/gtk/gtktooltip.h \ + /usr/include/gtk-2.0/gtk/gtkimagemenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkimcontextsimple.h \ + /usr/include/gtk-2.0/gtk/gtkimmulticontext.h \ + /usr/include/gtk-2.0/gtk/gtkinfobar.h \ + /usr/include/gtk-2.0/gtk/gtkinvisible.h \ + /usr/include/gtk-2.0/gtk/gtklayout.h \ + /usr/include/gtk-2.0/gtk/gtklinkbutton.h \ + /usr/include/gtk-2.0/gtk/gtkmain.h /usr/include/gtk-2.0/gtk/gtkmenubar.h \ + /usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolitem.h \ + /usr/include/gtk-2.0/gtk/gtktooltips.h \ + /usr/include/gtk-2.0/gtk/gtksizegroup.h \ + /usr/include/gtk-2.0/gtk/gtkmessagedialog.h \ + /usr/include/gtk-2.0/gtk/gtkmodules.h \ + /usr/include/gtk-2.0/gtk/gtkmountoperation.h \ + /usr/include/gtk-2.0/gtk/gtknotebook.h \ + /usr/include/gtk-2.0/gtk/gtkoffscreenwindow.h \ + /usr/include/gtk-2.0/gtk/gtkorientable.h \ + /usr/include/gtk-2.0/gtk/gtkpagesetup.h \ + /usr/include/gtk-2.0/gtk/gtkpapersize.h \ + /usr/include/gtk-2.0/gtk/gtkplug.h /usr/include/gtk-2.0/gtk/gtksocket.h \ + /usr/include/gtk-2.0/gtk/gtkprintcontext.h \ + /usr/include/gtk-2.0/gtk/gtkprintoperation.h \ + /usr/include/gtk-2.0/gtk/gtkprintsettings.h \ + /usr/include/gtk-2.0/gtk/gtkprintoperationpreview.h \ + /usr/include/gtk-2.0/gtk/gtkprogressbar.h \ + /usr/include/gtk-2.0/gtk/gtkprogress.h \ + /usr/include/gtk-2.0/gtk/gtkradioaction.h \ + /usr/include/gtk-2.0/gtk/gtktoggleaction.h \ + /usr/include/gtk-2.0/gtk/gtkradiobutton.h \ + /usr/include/gtk-2.0/gtk/gtkradiomenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtkrecentaction.h \ + /usr/include/gtk-2.0/gtk/gtkrecentmanager.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooser.h \ + /usr/include/gtk-2.0/gtk/gtkrecentfilter.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooserdialog.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchoosermenu.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooserwidget.h \ + /usr/include/gtk-2.0/gtk/gtkscalebutton.h \ + /usr/include/gtk-2.0/gtk/gtkscrolledwindow.h \ + /usr/include/gtk-2.0/gtk/gtkvscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkviewport.h \ + /usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h \ + /usr/include/gtk-2.0/gtk/gtkshow.h \ + /usr/include/gtk-2.0/gtk/gtkspinbutton.h \ + /usr/include/gtk-2.0/gtk/gtkspinner.h \ + /usr/include/gtk-2.0/gtk/gtkstatusbar.h \ + /usr/include/gtk-2.0/gtk/gtkstatusicon.h \ + /usr/include/gtk-2.0/gtk/gtkstock.h /usr/include/gtk-2.0/gtk/gtktable.h \ + /usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtktextbuffer.h \ + /usr/include/gtk-2.0/gtk/gtktexttagtable.h \ + /usr/include/gtk-2.0/gtk/gtktextmark.h \ + /usr/include/gtk-2.0/gtk/gtktextbufferrichtext.h \ + /usr/include/gtk-2.0/gtk/gtktextview.h \ + /usr/include/gtk-2.0/gtk/gtktoolbar.h \ + /usr/include/gtk-2.0/gtk/gtkpixmap.h \ + /usr/include/gtk-2.0/gtk/gtktoolitemgroup.h \ + /usr/include/gtk-2.0/gtk/gtktoolpalette.h \ + /usr/include/gtk-2.0/gtk/gtktoolshell.h \ + /usr/include/gtk-2.0/gtk/gtktestutils.h \ + /usr/include/gtk-2.0/gtk/gtktreednd.h \ + /usr/include/gtk-2.0/gtk/gtktreemodelsort.h \ + /usr/include/gtk-2.0/gtk/gtktreeselection.h \ + /usr/include/gtk-2.0/gtk/gtktreestore.h \ + /usr/include/gtk-2.0/gtk/gtkuimanager.h \ + /usr/include/gtk-2.0/gtk/gtkvbbox.h \ + /usr/include/gtk-2.0/gtk/gtkversion.h \ + /usr/include/gtk-2.0/gtk/gtkvolumebutton.h \ + /usr/include/gtk-2.0/gtk/gtkvpaned.h \ + /usr/include/gtk-2.0/gtk/gtkvruler.h \ + /usr/include/gtk-2.0/gtk/gtkvscale.h \ + /usr/include/gtk-2.0/gtk/gtkvseparator.h \ + /usr/include/gtk-2.0/gtk/gtktext.h /usr/include/gtk-2.0/gtk/gtktree.h \ + /usr/include/gtk-2.0/gtk/gtktreeitem.h \ + /usr/include/gtk-2.0/gtk/gtkclist.h /usr/include/gtk-2.0/gtk/gtkcombo.h \ + /usr/include/gtk-2.0/gtk/gtkctree.h /usr/include/gtk-2.0/gtk/gtkcurve.h \ + /usr/include/gtk-2.0/gtk/gtkfilesel.h \ + /usr/include/gtk-2.0/gtk/gtkgamma.h \ + /usr/include/gtk-2.0/gtk/gtkinputdialog.h \ + /usr/include/gtk-2.0/gtk/gtkitemfactory.h \ + /usr/include/gtk-2.0/gtk/gtklist.h \ + /usr/include/gtk-2.0/gtk/gtklistitem.h \ + /usr/include/gtk-2.0/gtk/gtkoldeditable.h \ + /usr/include/gtk-2.0/gtk/gtkoptionmenu.h \ + /usr/include/gtk-2.0/gtk/gtkpreview.h \ + /usr/include/gtk-2.0/gtk/gtktipsquery.h Cheat.h ../libpcsxcore/psxmem.h \ + ../libpcsxcore/psxcommon.h /usr/include/libglade-2.0/glade/glade.h \ + /usr/include/libglade-2.0/glade/glade-init.h \ + /usr/include/libglade-2.0/glade/glade-xml.h + +/usr/include/stdc-predef.h: + +Linux.h: + +../include/config.h: + +../libpcsxcore/psxcommon.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/bits/byteswap-16.h: + +/usr/include/stdlib.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/bits/wchar.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-bsearch.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/math.h: + +/usr/include/bits/huge_val.h: + +/usr/include/bits/huge_valf.h: + +/usr/include/bits/huge_vall.h: + +/usr/include/bits/inf.h: + +/usr/include/bits/nan.h: + +/usr/include/bits/mathdef.h: + +/usr/include/bits/mathcalls.h: + +/usr/include/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/zconf.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/limits.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/include/gtk-2.0/gtk/gtk.h: + +/usr/include/gtk-2.0/gdk/gdk.h: + +/usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h: + +/usr/include/glib-2.0/gio/gio.h: + +/usr/include/glib-2.0/gio/giotypes.h: + +/usr/include/glib-2.0/gio/gioenums.h: + +/usr/include/glib-2.0/glib-object.h: + +/usr/include/glib-2.0/gobject/gbinding.h: + +/usr/include/glib-2.0/glib.h: + +/usr/include/glib-2.0/glib/galloca.h: + +/usr/include/glib-2.0/glib/gtypes.h: + +/usr/lib64/glib-2.0/include/glibconfig.h: + +/usr/include/glib-2.0/glib/gmacros.h: + +/usr/lib64/gcc/x86_64-suse-linux/4.8/include/float.h: + +/usr/include/glib-2.0/glib/gversionmacros.h: + +/usr/include/glib-2.0/glib/garray.h: + +/usr/include/glib-2.0/glib/gasyncqueue.h: + +/usr/include/glib-2.0/glib/gthread.h: + +/usr/include/glib-2.0/glib/gatomic.h: + +/usr/include/glib-2.0/glib/gerror.h: + +/usr/include/glib-2.0/glib/gquark.h: + +/usr/include/glib-2.0/glib/gbacktrace.h: + +/usr/include/signal.h: + +/usr/include/bits/signum.h: + +/usr/include/bits/siginfo.h: + +/usr/include/bits/sigaction.h: + +/usr/include/bits/sigcontext.h: + +/usr/include/bits/sigstack.h: + +/usr/include/sys/ucontext.h: + +/usr/include/bits/sigthread.h: + +/usr/include/glib-2.0/glib/gbase64.h: + +/usr/include/glib-2.0/glib/gbitlock.h: + +/usr/include/glib-2.0/glib/gbookmarkfile.h: + +/usr/include/glib-2.0/glib/gbytes.h: + +/usr/include/glib-2.0/glib/gcharset.h: + +/usr/include/glib-2.0/glib/gchecksum.h: + +/usr/include/glib-2.0/glib/gconvert.h: + +/usr/include/glib-2.0/glib/gdataset.h: + +/usr/include/glib-2.0/glib/gdate.h: + +/usr/include/glib-2.0/glib/gdatetime.h: + +/usr/include/glib-2.0/glib/gtimezone.h: + +/usr/include/glib-2.0/glib/gdir.h: + +/usr/include/dirent.h: + +/usr/include/bits/dirent.h: + +/usr/include/glib-2.0/glib/genviron.h: + +/usr/include/glib-2.0/glib/gfileutils.h: + +/usr/include/glib-2.0/glib/ggettext.h: + +/usr/include/glib-2.0/glib/ghash.h: + +/usr/include/glib-2.0/glib/glist.h: + +/usr/include/glib-2.0/glib/gmem.h: + +/usr/include/glib-2.0/glib/gnode.h: + +/usr/include/glib-2.0/glib/ghmac.h: + +/usr/include/glib-2.0/glib/gchecksum.h: + +/usr/include/glib-2.0/glib/ghook.h: + +/usr/include/glib-2.0/glib/ghostutils.h: + +/usr/include/glib-2.0/glib/giochannel.h: + +/usr/include/glib-2.0/glib/gmain.h: + +/usr/include/glib-2.0/glib/gpoll.h: + +/usr/include/glib-2.0/glib/gslist.h: + +/usr/include/glib-2.0/glib/gstring.h: + +/usr/include/glib-2.0/glib/gunicode.h: + +/usr/include/glib-2.0/glib/gutils.h: + +/usr/include/glib-2.0/glib/gkeyfile.h: + +/usr/include/glib-2.0/glib/gmappedfile.h: + +/usr/include/glib-2.0/glib/gmarkup.h: + +/usr/include/glib-2.0/glib/gmessages.h: + +/usr/include/glib-2.0/glib/goption.h: + +/usr/include/glib-2.0/glib/gpattern.h: + +/usr/include/glib-2.0/glib/gprimes.h: + +/usr/include/glib-2.0/glib/gqsort.h: + +/usr/include/glib-2.0/glib/gqueue.h: + +/usr/include/glib-2.0/glib/grand.h: + +/usr/include/glib-2.0/glib/gregex.h: + +/usr/include/glib-2.0/glib/gscanner.h: + +/usr/include/glib-2.0/glib/gsequence.h: + +/usr/include/glib-2.0/glib/gshell.h: + +/usr/include/glib-2.0/glib/gslice.h: + +/usr/include/glib-2.0/glib/gspawn.h: + +/usr/include/glib-2.0/glib/gstrfuncs.h: + +/usr/include/glib-2.0/glib/gstringchunk.h: + +/usr/include/glib-2.0/glib/gtestutils.h: + +/usr/include/glib-2.0/glib/gthreadpool.h: + +/usr/include/glib-2.0/glib/gtimer.h: + +/usr/include/glib-2.0/glib/gtrashstack.h: + +/usr/include/glib-2.0/glib/gtree.h: + +/usr/include/glib-2.0/glib/gurifuncs.h: + +/usr/include/glib-2.0/glib/gvarianttype.h: + +/usr/include/glib-2.0/glib/gvariant.h: + +/usr/include/glib-2.0/glib/gversion.h: + +/usr/include/glib-2.0/glib/deprecated/gallocator.h: + +/usr/include/glib-2.0/glib/deprecated/gcache.h: + +/usr/include/glib-2.0/glib/deprecated/gcompletion.h: + +/usr/include/glib-2.0/glib/deprecated/gmain.h: + +/usr/include/glib-2.0/glib/deprecated/grel.h: + +/usr/include/glib-2.0/glib/deprecated/gthread.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/setjmp.h: + +/usr/include/glib-2.0/gobject/gobject.h: + +/usr/include/glib-2.0/gobject/gtype.h: + +/usr/include/glib-2.0/gobject/gvalue.h: + +/usr/include/glib-2.0/gobject/gparam.h: + +/usr/include/glib-2.0/gobject/gclosure.h: + +/usr/include/glib-2.0/gobject/gsignal.h: + +/usr/include/glib-2.0/gobject/gmarshal.h: + +/usr/include/glib-2.0/gobject/gboxed.h: + +/usr/include/glib-2.0/gobject/glib-types.h: + +/usr/include/glib-2.0/gobject/genums.h: + +/usr/include/glib-2.0/gobject/gparamspecs.h: + +/usr/include/glib-2.0/gobject/gsourceclosure.h: + +/usr/include/glib-2.0/gobject/gtypemodule.h: + +/usr/include/glib-2.0/gobject/gtypeplugin.h: + +/usr/include/glib-2.0/gobject/gvaluearray.h: + +/usr/include/glib-2.0/gobject/gvaluetypes.h: + +/usr/include/glib-2.0/gio/gaction.h: + +/usr/include/glib-2.0/gio/gactiongroup.h: + +/usr/include/glib-2.0/gio/gactiongroupexporter.h: + +/usr/include/glib-2.0/gio/gactionmap.h: + +/usr/include/glib-2.0/gio/gappinfo.h: + +/usr/include/glib-2.0/gio/gapplication.h: + +/usr/include/glib-2.0/gio/gapplicationcommandline.h: + +/usr/include/glib-2.0/gio/gasyncinitable.h: + +/usr/include/glib-2.0/gio/ginitable.h: + +/usr/include/glib-2.0/gio/gasyncresult.h: + +/usr/include/glib-2.0/gio/gbufferedinputstream.h: + +/usr/include/glib-2.0/gio/gfilterinputstream.h: + +/usr/include/glib-2.0/gio/ginputstream.h: + +/usr/include/glib-2.0/gio/gbufferedoutputstream.h: + +/usr/include/glib-2.0/gio/gfilteroutputstream.h: + +/usr/include/glib-2.0/gio/goutputstream.h: + +/usr/include/glib-2.0/gio/gbytesicon.h: + +/usr/include/glib-2.0/gio/gcancellable.h: + +/usr/include/glib-2.0/gio/gcharsetconverter.h: + +/usr/include/glib-2.0/gio/gconverter.h: + +/usr/include/glib-2.0/gio/gcontenttype.h: + +/usr/include/glib-2.0/gio/gconverterinputstream.h: + +/usr/include/glib-2.0/gio/gconverteroutputstream.h: + +/usr/include/glib-2.0/gio/gcredentials.h: + +/usr/include/glib-2.0/gio/gdatainputstream.h: + +/usr/include/glib-2.0/gio/gdataoutputstream.h: + +/usr/include/glib-2.0/gio/gdbusaddress.h: + +/usr/include/glib-2.0/gio/gdbusauthobserver.h: + +/usr/include/glib-2.0/gio/gdbusconnection.h: + +/usr/include/glib-2.0/gio/gdbuserror.h: + +/usr/include/glib-2.0/gio/gdbusintrospection.h: + +/usr/include/glib-2.0/gio/gdbusmessage.h: + +/usr/include/glib-2.0/gio/gdbusmethodinvocation.h: + +/usr/include/glib-2.0/gio/gdbusnameowning.h: + +/usr/include/glib-2.0/gio/gdbusnamewatching.h: + +/usr/include/glib-2.0/gio/gdbusproxy.h: + +/usr/include/glib-2.0/gio/gdbusserver.h: + +/usr/include/glib-2.0/gio/gdbusutils.h: + +/usr/include/glib-2.0/gio/gdrive.h: + +/usr/include/glib-2.0/gio/gemblemedicon.h: + +/usr/include/glib-2.0/gio/gicon.h: + +/usr/include/glib-2.0/gio/gemblem.h: + +/usr/include/glib-2.0/gio/gfileattribute.h: + +/usr/include/glib-2.0/gio/gfileenumerator.h: + +/usr/include/glib-2.0/gio/gfile.h: + +/usr/include/glib-2.0/gio/gfileicon.h: + +/usr/include/glib-2.0/gio/gfileinfo.h: + +/usr/include/glib-2.0/gio/gfileinputstream.h: + +/usr/include/glib-2.0/gio/gfileiostream.h: + +/usr/include/glib-2.0/gio/giostream.h: + +/usr/include/glib-2.0/gio/gioerror.h: + +/usr/include/glib-2.0/gio/gfilemonitor.h: + +/usr/include/glib-2.0/gio/gfilenamecompleter.h: + +/usr/include/glib-2.0/gio/gfileoutputstream.h: + +/usr/include/glib-2.0/gio/ginetaddress.h: + +/usr/include/glib-2.0/gio/ginetaddressmask.h: + +/usr/include/glib-2.0/gio/ginetsocketaddress.h: + +/usr/include/glib-2.0/gio/gsocketaddress.h: + +/usr/include/glib-2.0/gio/gioenumtypes.h: + +/usr/include/glib-2.0/gio/giomodule.h: + +/usr/include/glib-2.0/gmodule.h: + +/usr/include/glib-2.0/gio/gioscheduler.h: + +/usr/include/glib-2.0/gio/gloadableicon.h: + +/usr/include/glib-2.0/gio/gmemoryinputstream.h: + +/usr/include/glib-2.0/gio/gmemoryoutputstream.h: + +/usr/include/glib-2.0/gio/gmount.h: + +/usr/include/glib-2.0/gio/gmountoperation.h: + +/usr/include/glib-2.0/gio/gnativevolumemonitor.h: + +/usr/include/glib-2.0/gio/gvolumemonitor.h: + +/usr/include/glib-2.0/gio/gnetworkaddress.h: + +/usr/include/glib-2.0/gio/gnetworkmonitor.h: + +/usr/include/glib-2.0/gio/gnetworkservice.h: + +/usr/include/glib-2.0/gio/gpermission.h: + +/usr/include/glib-2.0/gio/gpollableinputstream.h: + +/usr/include/glib-2.0/gio/gpollableoutputstream.h: + +/usr/include/glib-2.0/gio/gpollableutils.h: + +/usr/include/glib-2.0/gio/gpropertyaction.h: + +/usr/include/glib-2.0/gio/gproxy.h: + +/usr/include/glib-2.0/gio/gproxyaddress.h: + +/usr/include/glib-2.0/gio/gproxyaddressenumerator.h: + +/usr/include/glib-2.0/gio/gsocketaddressenumerator.h: + +/usr/include/glib-2.0/gio/gproxyresolver.h: + +/usr/include/glib-2.0/gio/gresolver.h: + +/usr/include/glib-2.0/gio/gresource.h: + +/usr/include/glib-2.0/gio/gseekable.h: + +/usr/include/glib-2.0/gio/gsettingsschema.h: + +/usr/include/glib-2.0/gio/gsettings.h: + +/usr/include/glib-2.0/gio/gsimpleaction.h: + +/usr/include/glib-2.0/gio/gsimpleactiongroup.h: + +/usr/include/glib-2.0/gio/gactiongroup.h: + +/usr/include/glib-2.0/gio/gactionmap.h: + +/usr/include/glib-2.0/gio/gsimpleasyncresult.h: + +/usr/include/glib-2.0/gio/gsimplepermission.h: + +/usr/include/glib-2.0/gio/gsocketclient.h: + +/usr/include/glib-2.0/gio/gsocketconnectable.h: + +/usr/include/glib-2.0/gio/gsocketconnection.h: + +/usr/include/glib-2.0/gio/gsocket.h: + +/usr/include/glib-2.0/gio/gsocketcontrolmessage.h: + +/usr/include/glib-2.0/gio/gsocketlistener.h: + +/usr/include/glib-2.0/gio/gsocketservice.h: + +/usr/include/glib-2.0/gio/gsrvtarget.h: + +/usr/include/glib-2.0/gio/gsimpleproxyresolver.h: + +/usr/include/glib-2.0/gio/gtask.h: + +/usr/include/glib-2.0/gio/gsubprocess.h: + +/usr/include/glib-2.0/gio/gsubprocesslauncher.h: + +/usr/include/glib-2.0/gio/gtcpconnection.h: + +/usr/include/glib-2.0/gio/gtcpwrapperconnection.h: + +/usr/include/glib-2.0/gio/gtestdbus.h: + +/usr/include/glib-2.0/gio/gthemedicon.h: + +/usr/include/glib-2.0/gio/gthreadedsocketservice.h: + +/usr/include/glib-2.0/gio/gtlsbackend.h: + +/usr/include/glib-2.0/gio/gtlscertificate.h: + +/usr/include/glib-2.0/gio/gtlsclientconnection.h: + +/usr/include/glib-2.0/gio/gtlsconnection.h: + +/usr/include/glib-2.0/gio/gtlsdatabase.h: + +/usr/include/glib-2.0/gio/gtlsfiledatabase.h: + +/usr/include/glib-2.0/gio/gtlsinteraction.h: + +/usr/include/glib-2.0/gio/gtlsserverconnection.h: + +/usr/include/glib-2.0/gio/gtlspassword.h: + +/usr/include/glib-2.0/gio/gvfs.h: + +/usr/include/glib-2.0/gio/gvolume.h: + +/usr/include/glib-2.0/gio/gzlibcompressor.h: + +/usr/include/glib-2.0/gio/gzlibdecompressor.h: + +/usr/include/glib-2.0/gio/gdbusinterface.h: + +/usr/include/glib-2.0/gio/gdbusinterfaceskeleton.h: + +/usr/include/glib-2.0/gio/gdbusobject.h: + +/usr/include/glib-2.0/gio/gdbusobjectskeleton.h: + +/usr/include/glib-2.0/gio/gdbusobjectproxy.h: + +/usr/include/glib-2.0/gio/gdbusobjectmanager.h: + +/usr/include/glib-2.0/gio/gdbusobjectmanagerclient.h: + +/usr/include/glib-2.0/gio/gdbusobjectmanagerserver.h: + +/usr/include/glib-2.0/gio/gdbusactiongroup.h: + +/usr/include/glib-2.0/gio/giotypes.h: + +/usr/include/glib-2.0/gio/gremoteactiongroup.h: + +/usr/include/glib-2.0/gio/gmenumodel.h: + +/usr/include/glib-2.0/gio/gmenu.h: + +/usr/include/glib-2.0/gio/gmenuexporter.h: + +/usr/include/glib-2.0/gio/gdbusmenumodel.h: + +/usr/include/glib-2.0/gio/gnotification.h: + +/usr/include/gtk-2.0/gdk/gdkscreen.h: + +/usr/include/cairo/cairo.h: + +/usr/include/cairo/cairo-version.h: + +/usr/include/cairo/cairo-features.h: + +/usr/include/cairo/cairo-deprecated.h: + +/usr/include/gtk-2.0/gdk/gdktypes.h: + +/usr/include/pango-1.0/pango/pango.h: + +/usr/include/pango-1.0/pango/pango-attributes.h: + +/usr/include/pango-1.0/pango/pango-font.h: + +/usr/include/pango-1.0/pango/pango-coverage.h: + +/usr/include/pango-1.0/pango/pango-types.h: + +/usr/include/pango-1.0/pango/pango-gravity.h: + +/usr/include/pango-1.0/pango/pango-matrix.h: + +/usr/include/pango-1.0/pango/pango-script.h: + +/usr/include/pango-1.0/pango/pango-language.h: + +/usr/include/pango-1.0/pango/pango-bidi-type.h: + +/usr/include/pango-1.0/pango/pango-break.h: + +/usr/include/pango-1.0/pango/pango-item.h: + +/usr/include/pango-1.0/pango/pango-context.h: + +/usr/include/pango-1.0/pango/pango-fontmap.h: + +/usr/include/pango-1.0/pango/pango-fontset.h: + +/usr/include/pango-1.0/pango/pango-engine.h: + +/usr/include/pango-1.0/pango/pango-glyph.h: + +/usr/include/pango-1.0/pango/pango-enum-types.h: + +/usr/include/pango-1.0/pango/pango-features.h: + +/usr/include/pango-1.0/pango/pango-glyph-item.h: + +/usr/include/pango-1.0/pango/pango-layout.h: + +/usr/include/pango-1.0/pango/pango-tabs.h: + +/usr/include/pango-1.0/pango/pango-renderer.h: + +/usr/include/pango-1.0/pango/pango-utils.h: + +/usr/lib64/gtk-2.0/include/gdkconfig.h: + +/usr/include/gtk-2.0/gdk/gdkdisplay.h: + +/usr/include/gtk-2.0/gdk/gdkevents.h: + +/usr/include/gtk-2.0/gdk/gdkcolor.h: + +/usr/include/gtk-2.0/gdk/gdkdnd.h: + +/usr/include/gtk-2.0/gdk/gdkinput.h: + +/usr/include/gtk-2.0/gdk/gdkcairo.h: + +/usr/include/gtk-2.0/gdk/gdkpixbuf.h: + +/usr/include/gtk-2.0/gdk/gdkrgb.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h: + +/usr/include/pango-1.0/pango/pangocairo.h: + +/usr/include/gtk-2.0/gdk/gdkcursor.h: + +/usr/include/gtk-2.0/gdk/gdkdisplaymanager.h: + +/usr/include/gtk-2.0/gdk/gdkdrawable.h: + +/usr/include/gtk-2.0/gdk/gdkgc.h: + +/usr/include/gtk-2.0/gdk/gdkenumtypes.h: + +/usr/include/gtk-2.0/gdk/gdkfont.h: + +/usr/include/gtk-2.0/gdk/gdkimage.h: + +/usr/include/gtk-2.0/gdk/gdkkeys.h: + +/usr/include/gtk-2.0/gdk/gdkpango.h: + +/usr/include/gtk-2.0/gdk/gdkpixmap.h: + +/usr/include/gtk-2.0/gdk/gdkproperty.h: + +/usr/include/gtk-2.0/gdk/gdkregion.h: + +/usr/include/gtk-2.0/gdk/gdkselection.h: + +/usr/include/gtk-2.0/gdk/gdkspawn.h: + +/usr/include/gtk-2.0/gdk/gdktestutils.h: + +/usr/include/gtk-2.0/gdk/gdkwindow.h: + +/usr/include/gtk-2.0/gdk/gdkvisual.h: + +/usr/include/gtk-2.0/gtk/gtkaboutdialog.h: + +/usr/include/gtk-2.0/gtk/gtkdialog.h: + +/usr/include/gtk-2.0/gtk/gtkwindow.h: + +/usr/include/gtk-2.0/gtk/gtkaccelgroup.h: + +/usr/include/gtk-2.0/gtk/gtkenums.h: + +/usr/include/gtk-2.0/gtk/gtkbin.h: + +/usr/include/gtk-2.0/gtk/gtkcontainer.h: + +/usr/include/gtk-2.0/gtk/gtkwidget.h: + +/usr/include/gtk-2.0/gtk/gtkobject.h: + +/usr/include/gtk-2.0/gtk/gtktypeutils.h: + +/usr/include/gtk-2.0/gtk/gtktypebuiltins.h: + +/usr/include/gtk-2.0/gtk/gtkdebug.h: + +/usr/include/gtk-2.0/gtk/gtkadjustment.h: + +/usr/include/gtk-2.0/gtk/gtkstyle.h: + +/usr/include/gtk-2.0/gtk/gtksettings.h: + +/usr/include/gtk-2.0/gtk/gtkrc.h: + +/usr/include/atk-1.0/atk/atk.h: + +/usr/include/atk-1.0/atk/atkobject.h: + +/usr/include/atk-1.0/atk/atkversion.h: + +/usr/include/atk-1.0/atk/atkstate.h: + +/usr/include/atk-1.0/atk/atkrelationtype.h: + +/usr/include/atk-1.0/atk/atkaction.h: + +/usr/include/atk-1.0/atk/atkcomponent.h: + +/usr/include/atk-1.0/atk/atkutil.h: + +/usr/include/atk-1.0/atk/atkdocument.h: + +/usr/include/atk-1.0/atk/atkeditabletext.h: + +/usr/include/atk-1.0/atk/atktext.h: + +/usr/include/atk-1.0/atk/atk-enum-types.h: + +/usr/include/atk-1.0/atk/atkgobjectaccessible.h: + +/usr/include/atk-1.0/atk/atkhyperlink.h: + +/usr/include/atk-1.0/atk/atkhyperlinkimpl.h: + +/usr/include/atk-1.0/atk/atkhypertext.h: + +/usr/include/atk-1.0/atk/atkimage.h: + +/usr/include/atk-1.0/atk/atknoopobject.h: + +/usr/include/atk-1.0/atk/atknoopobjectfactory.h: + +/usr/include/atk-1.0/atk/atkobjectfactory.h: + +/usr/include/atk-1.0/atk/atkplug.h: + +/usr/include/atk-1.0/atk/atkrange.h: + +/usr/include/atk-1.0/atk/atkregistry.h: + +/usr/include/atk-1.0/atk/atkobjectfactory.h: + +/usr/include/atk-1.0/atk/atkrelation.h: + +/usr/include/atk-1.0/atk/atkrelationset.h: + +/usr/include/atk-1.0/atk/atkselection.h: + +/usr/include/atk-1.0/atk/atksocket.h: + +/usr/include/atk-1.0/atk/atkstateset.h: + +/usr/include/atk-1.0/atk/atkstreamablecontent.h: + +/usr/include/atk-1.0/atk/atktable.h: + +/usr/include/atk-1.0/atk/atktablecell.h: + +/usr/include/atk-1.0/atk/atkmisc.h: + +/usr/include/atk-1.0/atk/atkvalue.h: + +/usr/include/atk-1.0/atk/atkwindow.h: + +/usr/include/gtk-2.0/gtk/gtkaccellabel.h: + +/usr/include/gtk-2.0/gtk/gtklabel.h: + +/usr/include/gtk-2.0/gtk/gtkmisc.h: + +/usr/include/gtk-2.0/gtk/gtkmenu.h: + +/usr/include/gtk-2.0/gtk/gtkmenushell.h: + +/usr/include/gtk-2.0/gtk/gtkaccelmap.h: + +/usr/include/gtk-2.0/gtk/gtkaccessible.h: + +/usr/include/gtk-2.0/gtk/gtkaction.h: + +/usr/include/gtk-2.0/gtk/gtkactiongroup.h: + +/usr/include/gtk-2.0/gtk/gtkactivatable.h: + +/usr/include/gtk-2.0/gtk/gtkalignment.h: + +/usr/include/gtk-2.0/gtk/gtkarrow.h: + +/usr/include/gtk-2.0/gtk/gtkaspectframe.h: + +/usr/include/gtk-2.0/gtk/gtkframe.h: + +/usr/include/gtk-2.0/gtk/gtkassistant.h: + +/usr/include/gtk-2.0/gtk/gtkbbox.h: + +/usr/include/gtk-2.0/gtk/gtkbox.h: + +/usr/include/gtk-2.0/gtk/gtkbindings.h: + +/usr/include/gtk-2.0/gtk/gtkbuildable.h: + +/usr/include/gtk-2.0/gtk/gtkbuilder.h: + +/usr/include/gtk-2.0/gtk/gtkbutton.h: + +/usr/include/gtk-2.0/gtk/gtkimage.h: + +/usr/include/gtk-2.0/gtk/gtkcalendar.h: + +/usr/include/gtk-2.0/gtk/gtksignal.h: + +/usr/include/gtk-2.0/gtk/gtkmarshal.h: + +/usr/include/gtk-2.0/gtk/gtkcelleditable.h: + +/usr/include/gtk-2.0/gtk/gtkcelllayout.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderer.h: + +/usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h: + +/usr/include/gtk-2.0/gtk/gtktreemodel.h: + +/usr/include/gtk-2.0/gtk/gtktreesortable.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendereraccel.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderertext.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderercombo.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererprogress.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererspin.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererspinner.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h: + +/usr/include/gtk-2.0/gtk/gtkcellview.h: + +/usr/include/gtk-2.0/gtk/gtkcheckbutton.h: + +/usr/include/gtk-2.0/gtk/gtktogglebutton.h: + +/usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkitem.h: + +/usr/include/gtk-2.0/gtk/gtkclipboard.h: + +/usr/include/gtk-2.0/gtk/gtkselection.h: + +/usr/include/gtk-2.0/gtk/gtktextiter.h: + +/usr/include/gtk-2.0/gtk/gtktexttag.h: + +/usr/include/gtk-2.0/gtk/gtktextchild.h: + +/usr/include/gtk-2.0/gtk/gtkcolorbutton.h: + +/usr/include/gtk-2.0/gtk/gtkcolorsel.h: + +/usr/include/gtk-2.0/gtk/gtkvbox.h: + +/usr/include/gtk-2.0/gtk/gtkcolorseldialog.h: + +/usr/include/gtk-2.0/gtk/gtkcombobox.h: + +/usr/include/gtk-2.0/gtk/gtktreeview.h: + +/usr/include/gtk-2.0/gtk/gtkdnd.h: + +/usr/include/gtk-2.0/gtk/gtkentry.h: + +/usr/include/gtk-2.0/gtk/gtkeditable.h: + +/usr/include/gtk-2.0/gtk/gtkimcontext.h: + +/usr/include/gtk-2.0/gtk/gtkentrybuffer.h: + +/usr/include/gtk-2.0/gtk/gtkentrycompletion.h: + +/usr/include/gtk-2.0/gtk/gtkliststore.h: + +/usr/include/gtk-2.0/gtk/gtktreemodelfilter.h: + +/usr/include/gtk-2.0/gtk/gtkcomboboxentry.h: + +/usr/include/gtk-2.0/gtk/gtkcomboboxtext.h: + +/usr/include/gtk-2.0/gtk/gtkdrawingarea.h: + +/usr/include/gtk-2.0/gtk/gtkeventbox.h: + +/usr/include/gtk-2.0/gtk/gtkexpander.h: + +/usr/include/gtk-2.0/gtk/gtkfixed.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooser.h: + +/usr/include/gtk-2.0/gtk/gtkfilefilter.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h: + +/usr/include/gtk-2.0/gtk/gtkhbox.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h: + +/usr/include/gtk-2.0/gtk/gtkfontbutton.h: + +/usr/include/gtk-2.0/gtk/gtkfontsel.h: + +/usr/include/gtk-2.0/gtk/gtkgc.h: + +/usr/include/gtk-2.0/gtk/gtkhandlebox.h: + +/usr/include/gtk-2.0/gtk/gtkhbbox.h: + +/usr/include/gtk-2.0/gtk/gtkhpaned.h: + +/usr/include/gtk-2.0/gtk/gtkpaned.h: + +/usr/include/gtk-2.0/gtk/gtkhruler.h: + +/usr/include/gtk-2.0/gtk/gtkruler.h: + +/usr/include/gtk-2.0/gtk/gtkhscale.h: + +/usr/include/gtk-2.0/gtk/gtkscale.h: + +/usr/include/gtk-2.0/gtk/gtkrange.h: + +/usr/include/gtk-2.0/gtk/gtkhscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkhseparator.h: + +/usr/include/gtk-2.0/gtk/gtkseparator.h: + +/usr/include/gtk-2.0/gtk/gtkhsv.h: + +/usr/include/gtk-2.0/gtk/gtkiconfactory.h: + +/usr/include/gtk-2.0/gtk/gtkicontheme.h: + +/usr/include/gtk-2.0/gtk/gtkiconview.h: + +/usr/include/gtk-2.0/gtk/gtktooltip.h: + +/usr/include/gtk-2.0/gtk/gtkimagemenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkimcontextsimple.h: + +/usr/include/gtk-2.0/gtk/gtkimmulticontext.h: + +/usr/include/gtk-2.0/gtk/gtkinfobar.h: + +/usr/include/gtk-2.0/gtk/gtkinvisible.h: + +/usr/include/gtk-2.0/gtk/gtklayout.h: + +/usr/include/gtk-2.0/gtk/gtklinkbutton.h: + +/usr/include/gtk-2.0/gtk/gtkmain.h: + +/usr/include/gtk-2.0/gtk/gtkmenubar.h: + +/usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolitem.h: + +/usr/include/gtk-2.0/gtk/gtktooltips.h: + +/usr/include/gtk-2.0/gtk/gtksizegroup.h: + +/usr/include/gtk-2.0/gtk/gtkmessagedialog.h: + +/usr/include/gtk-2.0/gtk/gtkmodules.h: + +/usr/include/gtk-2.0/gtk/gtkmountoperation.h: + +/usr/include/gtk-2.0/gtk/gtknotebook.h: + +/usr/include/gtk-2.0/gtk/gtkoffscreenwindow.h: + +/usr/include/gtk-2.0/gtk/gtkorientable.h: + +/usr/include/gtk-2.0/gtk/gtkpagesetup.h: + +/usr/include/gtk-2.0/gtk/gtkpapersize.h: + +/usr/include/gtk-2.0/gtk/gtkplug.h: + +/usr/include/gtk-2.0/gtk/gtksocket.h: + +/usr/include/gtk-2.0/gtk/gtkprintcontext.h: + +/usr/include/gtk-2.0/gtk/gtkprintoperation.h: + +/usr/include/gtk-2.0/gtk/gtkprintsettings.h: + +/usr/include/gtk-2.0/gtk/gtkprintoperationpreview.h: + +/usr/include/gtk-2.0/gtk/gtkprogressbar.h: + +/usr/include/gtk-2.0/gtk/gtkprogress.h: + +/usr/include/gtk-2.0/gtk/gtkradioaction.h: + +/usr/include/gtk-2.0/gtk/gtktoggleaction.h: + +/usr/include/gtk-2.0/gtk/gtkradiobutton.h: + +/usr/include/gtk-2.0/gtk/gtkradiomenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtkrecentaction.h: + +/usr/include/gtk-2.0/gtk/gtkrecentmanager.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooser.h: + +/usr/include/gtk-2.0/gtk/gtkrecentfilter.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooserdialog.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchoosermenu.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooserwidget.h: + +/usr/include/gtk-2.0/gtk/gtkscalebutton.h: + +/usr/include/gtk-2.0/gtk/gtkscrolledwindow.h: + +/usr/include/gtk-2.0/gtk/gtkvscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkviewport.h: + +/usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h: + +/usr/include/gtk-2.0/gtk/gtkshow.h: + +/usr/include/gtk-2.0/gtk/gtkspinbutton.h: + +/usr/include/gtk-2.0/gtk/gtkspinner.h: + +/usr/include/gtk-2.0/gtk/gtkstatusbar.h: + +/usr/include/gtk-2.0/gtk/gtkstatusicon.h: + +/usr/include/gtk-2.0/gtk/gtkstock.h: + +/usr/include/gtk-2.0/gtk/gtktable.h: + +/usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtktextbuffer.h: + +/usr/include/gtk-2.0/gtk/gtktexttagtable.h: + +/usr/include/gtk-2.0/gtk/gtktextmark.h: + +/usr/include/gtk-2.0/gtk/gtktextbufferrichtext.h: + +/usr/include/gtk-2.0/gtk/gtktextview.h: + +/usr/include/gtk-2.0/gtk/gtktoolbar.h: + +/usr/include/gtk-2.0/gtk/gtkpixmap.h: + +/usr/include/gtk-2.0/gtk/gtktoolitemgroup.h: + +/usr/include/gtk-2.0/gtk/gtktoolpalette.h: + +/usr/include/gtk-2.0/gtk/gtktoolshell.h: + +/usr/include/gtk-2.0/gtk/gtktestutils.h: + +/usr/include/gtk-2.0/gtk/gtktreednd.h: + +/usr/include/gtk-2.0/gtk/gtktreemodelsort.h: + +/usr/include/gtk-2.0/gtk/gtktreeselection.h: + +/usr/include/gtk-2.0/gtk/gtktreestore.h: + +/usr/include/gtk-2.0/gtk/gtkuimanager.h: + +/usr/include/gtk-2.0/gtk/gtkvbbox.h: + +/usr/include/gtk-2.0/gtk/gtkversion.h: + +/usr/include/gtk-2.0/gtk/gtkvolumebutton.h: + +/usr/include/gtk-2.0/gtk/gtkvpaned.h: + +/usr/include/gtk-2.0/gtk/gtkvruler.h: + +/usr/include/gtk-2.0/gtk/gtkvscale.h: + +/usr/include/gtk-2.0/gtk/gtkvseparator.h: + +/usr/include/gtk-2.0/gtk/gtktext.h: + +/usr/include/gtk-2.0/gtk/gtktree.h: + +/usr/include/gtk-2.0/gtk/gtktreeitem.h: + +/usr/include/gtk-2.0/gtk/gtkclist.h: + +/usr/include/gtk-2.0/gtk/gtkcombo.h: + +/usr/include/gtk-2.0/gtk/gtkctree.h: + +/usr/include/gtk-2.0/gtk/gtkcurve.h: + +/usr/include/gtk-2.0/gtk/gtkfilesel.h: + +/usr/include/gtk-2.0/gtk/gtkgamma.h: + +/usr/include/gtk-2.0/gtk/gtkinputdialog.h: + +/usr/include/gtk-2.0/gtk/gtkitemfactory.h: + +/usr/include/gtk-2.0/gtk/gtklist.h: + +/usr/include/gtk-2.0/gtk/gtklistitem.h: + +/usr/include/gtk-2.0/gtk/gtkoldeditable.h: + +/usr/include/gtk-2.0/gtk/gtkoptionmenu.h: + +/usr/include/gtk-2.0/gtk/gtkpreview.h: + +/usr/include/gtk-2.0/gtk/gtktipsquery.h: + +Cheat.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcommon.h: + +/usr/include/libglade-2.0/glade/glade.h: + +/usr/include/libglade-2.0/glade/glade-init.h: + +/usr/include/libglade-2.0/glade/glade-xml.h: diff --git a/gui/.deps/Gtk2Gui.Po b/gui/.deps/Gtk2Gui.Po new file mode 100644 index 0000000..9137a86 --- /dev/null +++ b/gui/.deps/Gtk2Gui.Po @@ -0,0 +1,304 @@ +Gtk2Gui.o: Gtk2Gui.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h /usr/include/dlfcn.h \ + /usr/include/x86_64-linux-gnu/bits/dlfcn.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/regex.h Linux.h \ + ../include/config.h ../libpcsxcore/psxcommon.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + ../libpcsxcore/system.h ../libpcsxcore/debug.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + Cheat.h ../libpcsxcore/plugins.h ../libpcsxcore/psxcommon.h \ + ../libpcsxcore/spu.h ../libpcsxcore/plugins.h ../libpcsxcore/r3000a.h \ + ../libpcsxcore/psxmem.h ../libpcsxcore/psxcounters.h \ + ../libpcsxcore/psxbios.h ../libpcsxcore/misc.h ../libpcsxcore/coff.h \ + ../libpcsxcore/sio.h ../libpcsxcore/psemu_plugin_defs.h \ + ../libpcsxcore/decode_xa.h ../libpcsxcore/cheat.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/dlfcn.h: + +/usr/include/x86_64-linux-gnu/bits/dlfcn.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/regex.h: + +Linux.h: + +../include/config.h: + +../libpcsxcore/psxcommon.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +Cheat.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/psxcommon.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/cheat.h: diff --git a/gui/.deps/LnxMain.Po b/gui/.deps/LnxMain.Po new file mode 100644 index 0000000..0246026 --- /dev/null +++ b/gui/.deps/LnxMain.Po @@ -0,0 +1,309 @@ +LnxMain.o: LnxMain.c /usr/include/stdc-predef.h ../include/config.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h /usr/include/dlfcn.h \ + /usr/include/x86_64-linux-gnu/bits/dlfcn.h \ + /usr/include/x86_64-linux-gnu/sys/mman.h \ + /usr/include/x86_64-linux-gnu/bits/mman.h \ + /usr/include/x86_64-linux-gnu/bits/mman-linux.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/pthread.h \ + /usr/include/sched.h /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h ../libpcsxcore/sio.h \ + ../libpcsxcore/psxcommon.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + ../libpcsxcore/system.h ../libpcsxcore/debug.h /usr/include/libintl.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + ../libpcsxcore/r3000a.h ../libpcsxcore/psxmem.h \ + ../libpcsxcore/psxcounters.h ../libpcsxcore/plugins.h \ + ../libpcsxcore/spu.h ../libpcsxcore/psemu_plugin_defs.h \ + ../libpcsxcore/decode_xa.h ../libpcsxcore/psxbios.h \ + ../libpcsxcore/misc.h ../libpcsxcore/coff.h ../libpcsxcore/sio.h Linux.h \ + ../libpcsxcore/psxcommon.h Cheat.h + +/usr/include/stdc-predef.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/dlfcn.h: + +/usr/include/x86_64-linux-gnu/bits/dlfcn.h: + +/usr/include/x86_64-linux-gnu/sys/mman.h: + +/usr/include/x86_64-linux-gnu/bits/mman.h: + +/usr/include/x86_64-linux-gnu/bits/mman-linux.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/x86_64-linux-gnu/bits/sched.h: + +/usr/include/x86_64-linux-gnu/bits/setjmp.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/psxcommon.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: + +Linux.h: + +../libpcsxcore/psxcommon.h: + +Cheat.h: diff --git a/gui/.deps/MemcardDlg.Po b/gui/.deps/MemcardDlg.Po new file mode 100644 index 0000000..0afe440 --- /dev/null +++ b/gui/.deps/MemcardDlg.Po @@ -0,0 +1,1950 @@ +MemcardDlg.o: MemcardDlg.c /usr/include/stdc-predef.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/include/gtk-2.0/gdk/gdkkeysyms.h \ + /usr/include/gtk-2.0/gdk/gdkkeysyms-compat.h \ + /usr/include/gtk-2.0/gtk/gtk.h /usr/include/gtk-2.0/gdk/gdk.h \ + /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h \ + /usr/include/glib-2.0/gio/gio.h /usr/include/glib-2.0/gio/giotypes.h \ + /usr/include/glib-2.0/gio/gioenums.h /usr/include/glib-2.0/glib-object.h \ + /usr/include/glib-2.0/gobject/gbinding.h /usr/include/glib-2.0/glib.h \ + /usr/include/glib-2.0/glib/galloca.h /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/float.h \ + /usr/include/glib-2.0/glib/gversionmacros.h \ + /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gasyncqueue.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gatomic.h /usr/include/glib-2.0/glib/gerror.h \ + /usr/include/glib-2.0/glib/gquark.h /usr/include/glib-2.0/glib/gutils.h \ + /usr/include/glib-2.0/glib/gbacktrace.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/glib-2.0/glib/gbase64.h \ + /usr/include/glib-2.0/glib/gbitlock.h \ + /usr/include/glib-2.0/glib/gbookmarkfile.h \ + /usr/include/glib-2.0/glib/gbytes.h \ + /usr/include/glib-2.0/glib/gcharset.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ + /usr/include/glib-2.0/glib/gdatetime.h \ + /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ + /usr/include/dirent.h /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/glib-2.0/glib/genviron.h \ + /usr/include/glib-2.0/glib/gfileutils.h \ + /usr/include/glib-2.0/glib/ggettext.h /usr/include/glib-2.0/glib/ghash.h \ + /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/ghmac.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/ghook.h \ + /usr/include/glib-2.0/glib/ghostutils.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ + /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gkeyfile.h \ + /usr/include/glib-2.0/glib/gmappedfile.h \ + /usr/include/glib-2.0/glib/gmarkup.h \ + /usr/include/glib-2.0/glib/gmessages.h \ + /usr/include/glib-2.0/glib/gvariant.h \ + /usr/include/glib-2.0/glib/gvarianttype.h \ + /usr/include/glib-2.0/glib/goption.h \ + /usr/include/glib-2.0/glib/gpattern.h \ + /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ + /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ + /usr/include/glib-2.0/glib/gregex.h \ + /usr/include/glib-2.0/glib/gscanner.h \ + /usr/include/glib-2.0/glib/gsequence.h \ + /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gslice.h \ + /usr/include/glib-2.0/glib/gspawn.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h \ + /usr/include/glib-2.0/glib/gstringchunk.h \ + /usr/include/glib-2.0/glib/gtestutils.h \ + /usr/include/glib-2.0/glib/gthreadpool.h \ + /usr/include/glib-2.0/glib/gtimer.h \ + /usr/include/glib-2.0/glib/gtrashstack.h \ + /usr/include/glib-2.0/glib/gtree.h \ + /usr/include/glib-2.0/glib/gurifuncs.h \ + /usr/include/glib-2.0/glib/gversion.h \ + /usr/include/glib-2.0/glib/deprecated/gallocator.h \ + /usr/include/glib-2.0/glib/deprecated/gcache.h \ + /usr/include/glib-2.0/glib/deprecated/gcompletion.h \ + /usr/include/glib-2.0/glib/deprecated/gmain.h \ + /usr/include/glib-2.0/glib/deprecated/grel.h \ + /usr/include/glib-2.0/glib/deprecated/gthread.h /usr/include/pthread.h \ + /usr/include/sched.h /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/glib-2.0/glib/glib-autocleanups.h \ + /usr/include/glib-2.0/gobject/gobject.h \ + /usr/include/glib-2.0/gobject/gtype.h \ + /usr/include/glib-2.0/gobject/gvalue.h \ + /usr/include/glib-2.0/gobject/gparam.h \ + /usr/include/glib-2.0/gobject/gclosure.h \ + /usr/include/glib-2.0/gobject/gsignal.h \ + /usr/include/glib-2.0/gobject/gmarshal.h \ + /usr/include/glib-2.0/gobject/gboxed.h \ + /usr/include/glib-2.0/gobject/glib-types.h \ + /usr/include/glib-2.0/gobject/genums.h \ + /usr/include/glib-2.0/gobject/gparamspecs.h \ + /usr/include/glib-2.0/gobject/gsourceclosure.h \ + /usr/include/glib-2.0/gobject/gtypemodule.h \ + /usr/include/glib-2.0/gobject/gtypeplugin.h \ + /usr/include/glib-2.0/gobject/gvaluearray.h \ + /usr/include/glib-2.0/gobject/gvaluetypes.h \ + /usr/include/glib-2.0/gobject/gobject-autocleanups.h \ + /usr/include/glib-2.0/gio/gaction.h \ + /usr/include/glib-2.0/gio/gactiongroup.h \ + /usr/include/glib-2.0/gio/gactiongroupexporter.h \ + /usr/include/glib-2.0/gio/gactionmap.h \ + /usr/include/glib-2.0/gio/gappinfo.h \ + /usr/include/glib-2.0/gio/gapplication.h \ + /usr/include/glib-2.0/gio/gapplicationcommandline.h \ + /usr/include/glib-2.0/gio/gasyncinitable.h \ + /usr/include/glib-2.0/gio/ginitable.h \ + /usr/include/glib-2.0/gio/gasyncresult.h \ + /usr/include/glib-2.0/gio/gbufferedinputstream.h \ + /usr/include/glib-2.0/gio/gfilterinputstream.h \ + /usr/include/glib-2.0/gio/ginputstream.h \ + /usr/include/glib-2.0/gio/gbufferedoutputstream.h \ + /usr/include/glib-2.0/gio/gfilteroutputstream.h \ + /usr/include/glib-2.0/gio/goutputstream.h \ + /usr/include/glib-2.0/gio/gbytesicon.h \ + /usr/include/glib-2.0/gio/gcancellable.h \ + /usr/include/glib-2.0/gio/gcharsetconverter.h \ + /usr/include/glib-2.0/gio/gconverter.h \ + /usr/include/glib-2.0/gio/gcontenttype.h \ + /usr/include/glib-2.0/gio/gconverterinputstream.h \ + /usr/include/glib-2.0/gio/gconverteroutputstream.h \ + /usr/include/glib-2.0/gio/gcredentials.h \ + /usr/include/glib-2.0/gio/gdatagrambased.h \ + /usr/include/glib-2.0/gio/gdatainputstream.h \ + /usr/include/glib-2.0/gio/gdataoutputstream.h \ + /usr/include/glib-2.0/gio/gdbusaddress.h \ + /usr/include/glib-2.0/gio/gdbusauthobserver.h \ + /usr/include/glib-2.0/gio/gdbusconnection.h \ + /usr/include/glib-2.0/gio/gdbuserror.h \ + /usr/include/glib-2.0/gio/gdbusintrospection.h \ + /usr/include/glib-2.0/gio/gdbusmessage.h \ + /usr/include/glib-2.0/gio/gdbusmethodinvocation.h \ + /usr/include/glib-2.0/gio/gdbusnameowning.h \ + /usr/include/glib-2.0/gio/gdbusnamewatching.h \ + /usr/include/glib-2.0/gio/gdbusproxy.h \ + /usr/include/glib-2.0/gio/gdbusserver.h \ + /usr/include/glib-2.0/gio/gdbusutils.h \ + /usr/include/glib-2.0/gio/gdrive.h \ + /usr/include/glib-2.0/gio/gdtlsclientconnection.h \ + /usr/include/glib-2.0/gio/gdtlsconnection.h \ + /usr/include/glib-2.0/gio/gdtlsserverconnection.h \ + /usr/include/glib-2.0/gio/gemblemedicon.h \ + /usr/include/glib-2.0/gio/gicon.h /usr/include/glib-2.0/gio/gemblem.h \ + /usr/include/glib-2.0/gio/gfileattribute.h \ + /usr/include/glib-2.0/gio/gfileenumerator.h \ + /usr/include/glib-2.0/gio/gfile.h /usr/include/glib-2.0/gio/gfileicon.h \ + /usr/include/glib-2.0/gio/gfileinfo.h \ + /usr/include/glib-2.0/gio/gfileinputstream.h \ + /usr/include/glib-2.0/gio/gfileiostream.h \ + /usr/include/glib-2.0/gio/giostream.h \ + /usr/include/glib-2.0/gio/gioerror.h \ + /usr/include/glib-2.0/gio/gfilemonitor.h \ + /usr/include/glib-2.0/gio/gfilenamecompleter.h \ + /usr/include/glib-2.0/gio/gfileoutputstream.h \ + /usr/include/glib-2.0/gio/ginetaddress.h \ + /usr/include/glib-2.0/gio/ginetaddressmask.h \ + /usr/include/glib-2.0/gio/ginetsocketaddress.h \ + /usr/include/glib-2.0/gio/gsocketaddress.h \ + /usr/include/glib-2.0/gio/gioenumtypes.h \ + /usr/include/glib-2.0/gio/giomodule.h /usr/include/glib-2.0/gmodule.h \ + /usr/include/glib-2.0/gio/gioscheduler.h \ + /usr/include/glib-2.0/gio/gloadableicon.h \ + /usr/include/glib-2.0/gio/gmemoryinputstream.h \ + /usr/include/glib-2.0/gio/gmemoryoutputstream.h \ + /usr/include/glib-2.0/gio/gmount.h \ + /usr/include/glib-2.0/gio/gmountoperation.h \ + /usr/include/glib-2.0/gio/gnativevolumemonitor.h \ + /usr/include/glib-2.0/gio/gvolumemonitor.h \ + /usr/include/glib-2.0/gio/gnetworkaddress.h \ + /usr/include/glib-2.0/gio/gnetworkmonitor.h \ + /usr/include/glib-2.0/gio/gnetworkservice.h \ + /usr/include/glib-2.0/gio/gpermission.h \ + /usr/include/glib-2.0/gio/gpollableinputstream.h \ + /usr/include/glib-2.0/gio/gpollableoutputstream.h \ + /usr/include/glib-2.0/gio/gpollableutils.h \ + /usr/include/glib-2.0/gio/gpropertyaction.h \ + /usr/include/glib-2.0/gio/gproxy.h \ + /usr/include/glib-2.0/gio/gproxyaddress.h \ + /usr/include/glib-2.0/gio/gproxyaddressenumerator.h \ + /usr/include/glib-2.0/gio/gsocketaddressenumerator.h \ + /usr/include/glib-2.0/gio/gproxyresolver.h \ + /usr/include/glib-2.0/gio/gresolver.h \ + /usr/include/glib-2.0/gio/gresource.h \ + /usr/include/glib-2.0/gio/gseekable.h \ + /usr/include/glib-2.0/gio/gsettingsschema.h \ + /usr/include/glib-2.0/gio/gsettings.h \ + /usr/include/glib-2.0/gio/gsimpleaction.h \ + /usr/include/glib-2.0/gio/gsimpleactiongroup.h \ + /usr/include/glib-2.0/gio/gactiongroup.h \ + /usr/include/glib-2.0/gio/gactionmap.h \ + /usr/include/glib-2.0/gio/gsimpleasyncresult.h \ + /usr/include/glib-2.0/gio/gsimpleiostream.h \ + /usr/include/glib-2.0/gio/gsimplepermission.h \ + /usr/include/glib-2.0/gio/gsocketclient.h \ + /usr/include/glib-2.0/gio/gsocketconnectable.h \ + /usr/include/glib-2.0/gio/gsocketconnection.h \ + /usr/include/glib-2.0/gio/gsocket.h \ + /usr/include/glib-2.0/gio/gsocketcontrolmessage.h \ + /usr/include/glib-2.0/gio/gsocketlistener.h \ + /usr/include/glib-2.0/gio/gsocketservice.h \ + /usr/include/glib-2.0/gio/gsrvtarget.h \ + /usr/include/glib-2.0/gio/gsimpleproxyresolver.h \ + /usr/include/glib-2.0/gio/gtask.h \ + /usr/include/glib-2.0/gio/gsubprocess.h \ + /usr/include/glib-2.0/gio/gsubprocesslauncher.h \ + /usr/include/glib-2.0/gio/gtcpconnection.h \ + /usr/include/glib-2.0/gio/gtcpwrapperconnection.h \ + /usr/include/glib-2.0/gio/gtestdbus.h \ + /usr/include/glib-2.0/gio/gthemedicon.h \ + /usr/include/glib-2.0/gio/gthreadedsocketservice.h \ + /usr/include/glib-2.0/gio/gtlsbackend.h \ + /usr/include/glib-2.0/gio/gtlscertificate.h \ + /usr/include/glib-2.0/gio/gtlsclientconnection.h \ + /usr/include/glib-2.0/gio/gtlsconnection.h \ + /usr/include/glib-2.0/gio/gtlsdatabase.h \ + /usr/include/glib-2.0/gio/gtlsfiledatabase.h \ + /usr/include/glib-2.0/gio/gtlsinteraction.h \ + /usr/include/glib-2.0/gio/gtlsserverconnection.h \ + /usr/include/glib-2.0/gio/gtlspassword.h \ + /usr/include/glib-2.0/gio/gvfs.h /usr/include/glib-2.0/gio/gvolume.h \ + /usr/include/glib-2.0/gio/gzlibcompressor.h \ + /usr/include/glib-2.0/gio/gzlibdecompressor.h \ + /usr/include/glib-2.0/gio/gdbusinterface.h \ + /usr/include/glib-2.0/gio/gdbusinterfaceskeleton.h \ + /usr/include/glib-2.0/gio/gdbusobject.h \ + /usr/include/glib-2.0/gio/gdbusobjectskeleton.h \ + /usr/include/glib-2.0/gio/gdbusobjectproxy.h \ + /usr/include/glib-2.0/gio/gdbusobjectmanager.h \ + /usr/include/glib-2.0/gio/gdbusobjectmanagerclient.h \ + /usr/include/glib-2.0/gio/gdbusobjectmanagerserver.h \ + /usr/include/glib-2.0/gio/gdbusactiongroup.h \ + /usr/include/glib-2.0/gio/giotypes.h \ + /usr/include/glib-2.0/gio/gremoteactiongroup.h \ + /usr/include/glib-2.0/gio/gmenumodel.h /usr/include/glib-2.0/gio/gmenu.h \ + /usr/include/glib-2.0/gio/gmenuexporter.h \ + /usr/include/glib-2.0/gio/gdbusmenumodel.h \ + /usr/include/glib-2.0/gio/gnotification.h \ + /usr/include/glib-2.0/gio/glistmodel.h \ + /usr/include/glib-2.0/gio/gliststore.h \ + /usr/include/glib-2.0/gio/gio-autocleanups.h \ + /usr/include/gtk-2.0/gdk/gdkscreen.h /usr/include/cairo/cairo.h \ + /usr/include/cairo/cairo-version.h /usr/include/cairo/cairo-features.h \ + /usr/include/cairo/cairo-deprecated.h \ + /usr/include/gtk-2.0/gdk/gdktypes.h /usr/include/pango-1.0/pango/pango.h \ + /usr/include/pango-1.0/pango/pango-attributes.h \ + /usr/include/pango-1.0/pango/pango-font.h \ + /usr/include/pango-1.0/pango/pango-coverage.h \ + /usr/include/pango-1.0/pango/pango-types.h \ + /usr/include/pango-1.0/pango/pango-gravity.h \ + /usr/include/pango-1.0/pango/pango-matrix.h \ + /usr/include/pango-1.0/pango/pango-script.h \ + /usr/include/pango-1.0/pango/pango-language.h \ + /usr/include/pango-1.0/pango/pango-bidi-type.h \ + /usr/include/pango-1.0/pango/pango-break.h \ + /usr/include/pango-1.0/pango/pango-item.h \ + /usr/include/pango-1.0/pango/pango-context.h \ + /usr/include/pango-1.0/pango/pango-fontmap.h \ + /usr/include/pango-1.0/pango/pango-fontset.h \ + /usr/include/pango-1.0/pango/pango-engine.h \ + /usr/include/pango-1.0/pango/pango-glyph.h \ + /usr/include/pango-1.0/pango/pango-enum-types.h \ + /usr/include/pango-1.0/pango/pango-features.h \ + /usr/include/pango-1.0/pango/pango-glyph-item.h \ + /usr/include/pango-1.0/pango/pango-layout.h \ + /usr/include/pango-1.0/pango/pango-tabs.h \ + /usr/include/pango-1.0/pango/pango-renderer.h \ + /usr/include/pango-1.0/pango/pango-utils.h \ + /usr/lib/x86_64-linux-gnu/gtk-2.0/include/gdkconfig.h \ + /usr/include/gtk-2.0/gdk/gdkdisplay.h \ + /usr/include/gtk-2.0/gdk/gdkevents.h /usr/include/gtk-2.0/gdk/gdkcolor.h \ + /usr/include/gtk-2.0/gdk/gdkdnd.h /usr/include/gtk-2.0/gdk/gdkinput.h \ + /usr/include/gtk-2.0/gdk/gdkcairo.h /usr/include/gtk-2.0/gdk/gdkpixbuf.h \ + /usr/include/gtk-2.0/gdk/gdkrgb.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-autocleanups.h \ + /usr/include/pango-1.0/pango/pangocairo.h \ + /usr/include/gtk-2.0/gdk/gdkcursor.h \ + /usr/include/gtk-2.0/gdk/gdkdisplaymanager.h \ + /usr/include/gtk-2.0/gdk/gdkdrawable.h /usr/include/gtk-2.0/gdk/gdkgc.h \ + /usr/include/gtk-2.0/gdk/gdkenumtypes.h \ + /usr/include/gtk-2.0/gdk/gdkfont.h /usr/include/gtk-2.0/gdk/gdkimage.h \ + /usr/include/gtk-2.0/gdk/gdkkeys.h /usr/include/gtk-2.0/gdk/gdkpango.h \ + /usr/include/gtk-2.0/gdk/gdkpixmap.h \ + /usr/include/gtk-2.0/gdk/gdkproperty.h \ + /usr/include/gtk-2.0/gdk/gdkregion.h \ + /usr/include/gtk-2.0/gdk/gdkselection.h \ + /usr/include/gtk-2.0/gdk/gdkspawn.h \ + /usr/include/gtk-2.0/gdk/gdktestutils.h \ + /usr/include/gtk-2.0/gdk/gdkwindow.h \ + /usr/include/gtk-2.0/gdk/gdkvisual.h \ + /usr/include/gtk-2.0/gtk/gtkaboutdialog.h \ + /usr/include/gtk-2.0/gtk/gtkdialog.h \ + /usr/include/gtk-2.0/gtk/gtkwindow.h \ + /usr/include/gtk-2.0/gtk/gtkaccelgroup.h \ + /usr/include/gtk-2.0/gtk/gtkenums.h /usr/include/gtk-2.0/gtk/gtkbin.h \ + /usr/include/gtk-2.0/gtk/gtkcontainer.h \ + /usr/include/gtk-2.0/gtk/gtkwidget.h \ + /usr/include/gtk-2.0/gtk/gtkobject.h \ + /usr/include/gtk-2.0/gtk/gtktypeutils.h \ + /usr/include/gtk-2.0/gtk/gtktypebuiltins.h \ + /usr/include/gtk-2.0/gtk/gtkdebug.h \ + /usr/include/gtk-2.0/gtk/gtkadjustment.h \ + /usr/include/gtk-2.0/gtk/gtkstyle.h \ + /usr/include/gtk-2.0/gtk/gtksettings.h /usr/include/gtk-2.0/gtk/gtkrc.h \ + /usr/include/atk-1.0/atk/atk.h /usr/include/atk-1.0/atk/atkobject.h \ + /usr/include/atk-1.0/atk/atkversion.h \ + /usr/include/atk-1.0/atk/atkstate.h \ + /usr/include/atk-1.0/atk/atkrelationtype.h \ + /usr/include/atk-1.0/atk/atkaction.h \ + /usr/include/atk-1.0/atk/atkcomponent.h \ + /usr/include/atk-1.0/atk/atkutil.h \ + /usr/include/atk-1.0/atk/atkdocument.h \ + /usr/include/atk-1.0/atk/atkeditabletext.h \ + /usr/include/atk-1.0/atk/atktext.h \ + /usr/include/atk-1.0/atk/atk-enum-types.h \ + /usr/include/atk-1.0/atk/atkgobjectaccessible.h \ + /usr/include/atk-1.0/atk/atkhyperlink.h \ + /usr/include/atk-1.0/atk/atkhyperlinkimpl.h \ + /usr/include/atk-1.0/atk/atkhypertext.h \ + /usr/include/atk-1.0/atk/atkimage.h \ + /usr/include/atk-1.0/atk/atknoopobject.h \ + /usr/include/atk-1.0/atk/atknoopobjectfactory.h \ + /usr/include/atk-1.0/atk/atkobjectfactory.h \ + /usr/include/atk-1.0/atk/atkplug.h /usr/include/atk-1.0/atk/atkrange.h \ + /usr/include/atk-1.0/atk/atkregistry.h \ + /usr/include/atk-1.0/atk/atkobjectfactory.h \ + /usr/include/atk-1.0/atk/atkrelation.h \ + /usr/include/atk-1.0/atk/atkrelationset.h \ + /usr/include/atk-1.0/atk/atkselection.h \ + /usr/include/atk-1.0/atk/atksocket.h \ + /usr/include/atk-1.0/atk/atkstateset.h \ + /usr/include/atk-1.0/atk/atkstreamablecontent.h \ + /usr/include/atk-1.0/atk/atktable.h \ + /usr/include/atk-1.0/atk/atktablecell.h \ + /usr/include/atk-1.0/atk/atkmisc.h /usr/include/atk-1.0/atk/atkvalue.h \ + /usr/include/atk-1.0/atk/atkwindow.h \ + /usr/include/gtk-2.0/gtk/gtkaccellabel.h \ + /usr/include/gtk-2.0/gtk/gtklabel.h /usr/include/gtk-2.0/gtk/gtkmisc.h \ + /usr/include/gtk-2.0/gtk/gtkmenu.h \ + /usr/include/gtk-2.0/gtk/gtkmenushell.h \ + /usr/include/gtk-2.0/gtk/gtkaccelmap.h \ + /usr/include/gtk-2.0/gtk/gtkaccessible.h \ + /usr/include/gtk-2.0/gtk/gtkaction.h \ + /usr/include/gtk-2.0/gtk/gtkactiongroup.h \ + /usr/include/gtk-2.0/gtk/gtkactivatable.h \ + /usr/include/gtk-2.0/gtk/gtkalignment.h \ + /usr/include/gtk-2.0/gtk/gtkarrow.h \ + /usr/include/gtk-2.0/gtk/gtkaspectframe.h \ + /usr/include/gtk-2.0/gtk/gtkframe.h \ + /usr/include/gtk-2.0/gtk/gtkassistant.h \ + /usr/include/gtk-2.0/gtk/gtkbbox.h /usr/include/gtk-2.0/gtk/gtkbox.h \ + /usr/include/gtk-2.0/gtk/gtkbindings.h \ + /usr/include/gtk-2.0/gtk/gtkbuildable.h \ + /usr/include/gtk-2.0/gtk/gtkbuilder.h \ + /usr/include/gtk-2.0/gtk/gtkbutton.h /usr/include/gtk-2.0/gtk/gtkimage.h \ + /usr/include/gtk-2.0/gtk/gtkcalendar.h \ + /usr/include/gtk-2.0/gtk/gtksignal.h \ + /usr/include/gtk-2.0/gtk/gtkmarshal.h \ + /usr/include/gtk-2.0/gtk/gtkcelleditable.h \ + /usr/include/gtk-2.0/gtk/gtkcelllayout.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderer.h \ + /usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h \ + /usr/include/gtk-2.0/gtk/gtktreemodel.h \ + /usr/include/gtk-2.0/gtk/gtktreesortable.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendereraccel.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderertext.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderercombo.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererprogress.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererspin.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererspinner.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h \ + /usr/include/gtk-2.0/gtk/gtkcellview.h \ + /usr/include/gtk-2.0/gtk/gtkcheckbutton.h \ + /usr/include/gtk-2.0/gtk/gtktogglebutton.h \ + /usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkitem.h \ + /usr/include/gtk-2.0/gtk/gtkclipboard.h \ + /usr/include/gtk-2.0/gtk/gtkselection.h \ + /usr/include/gtk-2.0/gtk/gtktextiter.h \ + /usr/include/gtk-2.0/gtk/gtktexttag.h \ + /usr/include/gtk-2.0/gtk/gtktextchild.h \ + /usr/include/gtk-2.0/gtk/gtkcolorbutton.h \ + /usr/include/gtk-2.0/gtk/gtkcolorsel.h \ + /usr/include/gtk-2.0/gtk/gtkvbox.h \ + /usr/include/gtk-2.0/gtk/gtkcolorseldialog.h \ + /usr/include/gtk-2.0/gtk/gtkcombobox.h \ + /usr/include/gtk-2.0/gtk/gtktreeview.h /usr/include/gtk-2.0/gtk/gtkdnd.h \ + /usr/include/gtk-2.0/gtk/gtkentry.h \ + /usr/include/gtk-2.0/gtk/gtkeditable.h \ + /usr/include/gtk-2.0/gtk/gtkimcontext.h \ + /usr/include/gtk-2.0/gtk/gtkentrybuffer.h \ + /usr/include/gtk-2.0/gtk/gtkentrycompletion.h \ + /usr/include/gtk-2.0/gtk/gtkliststore.h \ + /usr/include/gtk-2.0/gtk/gtktreemodelfilter.h \ + /usr/include/gtk-2.0/gtk/gtkcomboboxentry.h \ + /usr/include/gtk-2.0/gtk/gtkcomboboxtext.h \ + /usr/include/gtk-2.0/gtk/gtkdrawingarea.h \ + /usr/include/gtk-2.0/gtk/gtkeventbox.h \ + /usr/include/gtk-2.0/gtk/gtkexpander.h \ + /usr/include/gtk-2.0/gtk/gtkfixed.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooser.h \ + /usr/include/gtk-2.0/gtk/gtkfilefilter.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h \ + /usr/include/gtk-2.0/gtk/gtkhbox.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h \ + /usr/include/gtk-2.0/gtk/gtkfontbutton.h \ + /usr/include/gtk-2.0/gtk/gtkfontsel.h /usr/include/gtk-2.0/gtk/gtkgc.h \ + /usr/include/gtk-2.0/gtk/gtkhandlebox.h \ + /usr/include/gtk-2.0/gtk/gtkhbbox.h /usr/include/gtk-2.0/gtk/gtkhpaned.h \ + /usr/include/gtk-2.0/gtk/gtkpaned.h /usr/include/gtk-2.0/gtk/gtkhruler.h \ + /usr/include/gtk-2.0/gtk/gtkruler.h /usr/include/gtk-2.0/gtk/gtkhscale.h \ + /usr/include/gtk-2.0/gtk/gtkscale.h /usr/include/gtk-2.0/gtk/gtkrange.h \ + /usr/include/gtk-2.0/gtk/gtkhscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkhseparator.h \ + /usr/include/gtk-2.0/gtk/gtkseparator.h \ + /usr/include/gtk-2.0/gtk/gtkhsv.h \ + /usr/include/gtk-2.0/gtk/gtkiconfactory.h \ + /usr/include/gtk-2.0/gtk/gtkicontheme.h \ + /usr/include/gtk-2.0/gtk/gtkiconview.h \ + /usr/include/gtk-2.0/gtk/gtktooltip.h \ + /usr/include/gtk-2.0/gtk/gtkimagemenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkimcontextsimple.h \ + /usr/include/gtk-2.0/gtk/gtkimmulticontext.h \ + /usr/include/gtk-2.0/gtk/gtkinfobar.h \ + /usr/include/gtk-2.0/gtk/gtkinvisible.h \ + /usr/include/gtk-2.0/gtk/gtklayout.h \ + /usr/include/gtk-2.0/gtk/gtklinkbutton.h \ + /usr/include/gtk-2.0/gtk/gtkmain.h /usr/include/gtk-2.0/gtk/gtkmenubar.h \ + /usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolitem.h \ + /usr/include/gtk-2.0/gtk/gtktooltips.h \ + /usr/include/gtk-2.0/gtk/gtksizegroup.h \ + /usr/include/gtk-2.0/gtk/gtkmessagedialog.h \ + /usr/include/gtk-2.0/gtk/gtkmodules.h \ + /usr/include/gtk-2.0/gtk/gtkmountoperation.h \ + /usr/include/gtk-2.0/gtk/gtknotebook.h \ + /usr/include/gtk-2.0/gtk/gtkoffscreenwindow.h \ + /usr/include/gtk-2.0/gtk/gtkorientable.h \ + /usr/include/gtk-2.0/gtk/gtkpagesetup.h \ + /usr/include/gtk-2.0/gtk/gtkpapersize.h \ + /usr/include/gtk-2.0/gtk/gtkplug.h /usr/include/gtk-2.0/gtk/gtksocket.h \ + /usr/include/gtk-2.0/gtk/gtkprintcontext.h \ + /usr/include/gtk-2.0/gtk/gtkprintoperation.h \ + /usr/include/gtk-2.0/gtk/gtkprintsettings.h \ + /usr/include/gtk-2.0/gtk/gtkprintoperationpreview.h \ + /usr/include/gtk-2.0/gtk/gtkprogressbar.h \ + /usr/include/gtk-2.0/gtk/gtkprogress.h \ + /usr/include/gtk-2.0/gtk/gtkradioaction.h \ + /usr/include/gtk-2.0/gtk/gtktoggleaction.h \ + /usr/include/gtk-2.0/gtk/gtkradiobutton.h \ + /usr/include/gtk-2.0/gtk/gtkradiomenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtkrecentaction.h \ + /usr/include/gtk-2.0/gtk/gtkrecentmanager.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooser.h \ + /usr/include/gtk-2.0/gtk/gtkrecentfilter.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooserdialog.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchoosermenu.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooserwidget.h \ + /usr/include/gtk-2.0/gtk/gtkscalebutton.h \ + /usr/include/gtk-2.0/gtk/gtkscrolledwindow.h \ + /usr/include/gtk-2.0/gtk/gtkvscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkviewport.h \ + /usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h \ + /usr/include/gtk-2.0/gtk/gtkshow.h \ + /usr/include/gtk-2.0/gtk/gtkspinbutton.h \ + /usr/include/gtk-2.0/gtk/gtkspinner.h \ + /usr/include/gtk-2.0/gtk/gtkstatusbar.h \ + /usr/include/gtk-2.0/gtk/gtkstatusicon.h \ + /usr/include/gtk-2.0/gtk/gtkstock.h /usr/include/gtk-2.0/gtk/gtktable.h \ + /usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtktextbuffer.h \ + /usr/include/gtk-2.0/gtk/gtktexttagtable.h \ + /usr/include/gtk-2.0/gtk/gtktextmark.h \ + /usr/include/gtk-2.0/gtk/gtktextbufferrichtext.h \ + /usr/include/gtk-2.0/gtk/gtktextview.h \ + /usr/include/gtk-2.0/gtk/gtktoolbar.h \ + /usr/include/gtk-2.0/gtk/gtkpixmap.h \ + /usr/include/gtk-2.0/gtk/gtktoolitemgroup.h \ + /usr/include/gtk-2.0/gtk/gtktoolpalette.h \ + /usr/include/gtk-2.0/gtk/gtktoolshell.h \ + /usr/include/gtk-2.0/gtk/gtktestutils.h \ + /usr/include/gtk-2.0/gtk/gtktreednd.h \ + /usr/include/gtk-2.0/gtk/gtktreemodelsort.h \ + /usr/include/gtk-2.0/gtk/gtktreeselection.h \ + /usr/include/gtk-2.0/gtk/gtktreestore.h \ + /usr/include/gtk-2.0/gtk/gtkuimanager.h \ + /usr/include/gtk-2.0/gtk/gtkvbbox.h \ + /usr/include/gtk-2.0/gtk/gtkversion.h \ + /usr/include/gtk-2.0/gtk/gtkvolumebutton.h \ + /usr/include/gtk-2.0/gtk/gtkvpaned.h \ + /usr/include/gtk-2.0/gtk/gtkvruler.h \ + /usr/include/gtk-2.0/gtk/gtkvscale.h \ + /usr/include/gtk-2.0/gtk/gtkvseparator.h \ + /usr/include/gtk-2.0/gtk/gtktext.h /usr/include/gtk-2.0/gtk/gtktree.h \ + /usr/include/gtk-2.0/gtk/gtktreeitem.h \ + /usr/include/gtk-2.0/gtk/gtkclist.h /usr/include/gtk-2.0/gtk/gtkcombo.h \ + /usr/include/gtk-2.0/gtk/gtkctree.h /usr/include/gtk-2.0/gtk/gtkcurve.h \ + /usr/include/gtk-2.0/gtk/gtkfilesel.h \ + /usr/include/gtk-2.0/gtk/gtkgamma.h \ + /usr/include/gtk-2.0/gtk/gtkinputdialog.h \ + /usr/include/gtk-2.0/gtk/gtkitemfactory.h \ + /usr/include/gtk-2.0/gtk/gtklist.h \ + /usr/include/gtk-2.0/gtk/gtklistitem.h \ + /usr/include/gtk-2.0/gtk/gtkoldeditable.h \ + /usr/include/gtk-2.0/gtk/gtkoptionmenu.h \ + /usr/include/gtk-2.0/gtk/gtkpreview.h \ + /usr/include/gtk-2.0/gtk/gtktipsquery.h \ + /usr/include/libglade-2.0/glade/glade.h \ + /usr/include/libglade-2.0/glade/glade-init.h \ + /usr/include/libglade-2.0/glade/glade-xml.h \ + /usr/include/x86_64-linux-gnu/sys/time.h Linux.h ../include/config.h \ + ../libpcsxcore/psxcommon.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h Cheat.h ../libpcsxcore/sio.h \ + ../libpcsxcore/psxcommon.h ../libpcsxcore/r3000a.h \ + ../libpcsxcore/psxmem.h ../libpcsxcore/psxcounters.h \ + ../libpcsxcore/plugins.h ../libpcsxcore/spu.h \ + ../libpcsxcore/psemu_plugin_defs.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/psxbios.h ../libpcsxcore/misc.h ../libpcsxcore/coff.h \ + ../libpcsxcore/sio.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/include/gtk-2.0/gdk/gdkkeysyms.h: + +/usr/include/gtk-2.0/gdk/gdkkeysyms-compat.h: + +/usr/include/gtk-2.0/gtk/gtk.h: + +/usr/include/gtk-2.0/gdk/gdk.h: + +/usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h: + +/usr/include/glib-2.0/gio/gio.h: + +/usr/include/glib-2.0/gio/giotypes.h: + +/usr/include/glib-2.0/gio/gioenums.h: + +/usr/include/glib-2.0/glib-object.h: + +/usr/include/glib-2.0/gobject/gbinding.h: + +/usr/include/glib-2.0/glib.h: + +/usr/include/glib-2.0/glib/galloca.h: + +/usr/include/glib-2.0/glib/gtypes.h: + +/usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h: + +/usr/include/glib-2.0/glib/gmacros.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/float.h: + +/usr/include/glib-2.0/glib/gversionmacros.h: + +/usr/include/glib-2.0/glib/garray.h: + +/usr/include/glib-2.0/glib/gasyncqueue.h: + +/usr/include/glib-2.0/glib/gthread.h: + +/usr/include/glib-2.0/glib/gatomic.h: + +/usr/include/glib-2.0/glib/gerror.h: + +/usr/include/glib-2.0/glib/gquark.h: + +/usr/include/glib-2.0/glib/gutils.h: + +/usr/include/glib-2.0/glib/gbacktrace.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/glib-2.0/glib/gbase64.h: + +/usr/include/glib-2.0/glib/gbitlock.h: + +/usr/include/glib-2.0/glib/gbookmarkfile.h: + +/usr/include/glib-2.0/glib/gbytes.h: + +/usr/include/glib-2.0/glib/gcharset.h: + +/usr/include/glib-2.0/glib/gchecksum.h: + +/usr/include/glib-2.0/glib/gconvert.h: + +/usr/include/glib-2.0/glib/gdataset.h: + +/usr/include/glib-2.0/glib/gdate.h: + +/usr/include/glib-2.0/glib/gdatetime.h: + +/usr/include/glib-2.0/glib/gtimezone.h: + +/usr/include/glib-2.0/glib/gdir.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/glib-2.0/glib/genviron.h: + +/usr/include/glib-2.0/glib/gfileutils.h: + +/usr/include/glib-2.0/glib/ggettext.h: + +/usr/include/glib-2.0/glib/ghash.h: + +/usr/include/glib-2.0/glib/glist.h: + +/usr/include/glib-2.0/glib/gmem.h: + +/usr/include/glib-2.0/glib/gnode.h: + +/usr/include/glib-2.0/glib/ghmac.h: + +/usr/include/glib-2.0/glib/gchecksum.h: + +/usr/include/glib-2.0/glib/ghook.h: + +/usr/include/glib-2.0/glib/ghostutils.h: + +/usr/include/glib-2.0/glib/giochannel.h: + +/usr/include/glib-2.0/glib/gmain.h: + +/usr/include/glib-2.0/glib/gpoll.h: + +/usr/include/glib-2.0/glib/gslist.h: + +/usr/include/glib-2.0/glib/gstring.h: + +/usr/include/glib-2.0/glib/gunicode.h: + +/usr/include/glib-2.0/glib/gkeyfile.h: + +/usr/include/glib-2.0/glib/gmappedfile.h: + +/usr/include/glib-2.0/glib/gmarkup.h: + +/usr/include/glib-2.0/glib/gmessages.h: + +/usr/include/glib-2.0/glib/gvariant.h: + +/usr/include/glib-2.0/glib/gvarianttype.h: + +/usr/include/glib-2.0/glib/goption.h: + +/usr/include/glib-2.0/glib/gpattern.h: + +/usr/include/glib-2.0/glib/gprimes.h: + +/usr/include/glib-2.0/glib/gqsort.h: + +/usr/include/glib-2.0/glib/gqueue.h: + +/usr/include/glib-2.0/glib/grand.h: + +/usr/include/glib-2.0/glib/gregex.h: + +/usr/include/glib-2.0/glib/gscanner.h: + +/usr/include/glib-2.0/glib/gsequence.h: + +/usr/include/glib-2.0/glib/gshell.h: + +/usr/include/glib-2.0/glib/gslice.h: + +/usr/include/glib-2.0/glib/gspawn.h: + +/usr/include/glib-2.0/glib/gstrfuncs.h: + +/usr/include/glib-2.0/glib/gstringchunk.h: + +/usr/include/glib-2.0/glib/gtestutils.h: + +/usr/include/glib-2.0/glib/gthreadpool.h: + +/usr/include/glib-2.0/glib/gtimer.h: + +/usr/include/glib-2.0/glib/gtrashstack.h: + +/usr/include/glib-2.0/glib/gtree.h: + +/usr/include/glib-2.0/glib/gurifuncs.h: + +/usr/include/glib-2.0/glib/gversion.h: + +/usr/include/glib-2.0/glib/deprecated/gallocator.h: + +/usr/include/glib-2.0/glib/deprecated/gcache.h: + +/usr/include/glib-2.0/glib/deprecated/gcompletion.h: + +/usr/include/glib-2.0/glib/deprecated/gmain.h: + +/usr/include/glib-2.0/glib/deprecated/grel.h: + +/usr/include/glib-2.0/glib/deprecated/gthread.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/x86_64-linux-gnu/bits/sched.h: + +/usr/include/x86_64-linux-gnu/bits/setjmp.h: + +/usr/include/glib-2.0/glib/glib-autocleanups.h: + +/usr/include/glib-2.0/gobject/gobject.h: + +/usr/include/glib-2.0/gobject/gtype.h: + +/usr/include/glib-2.0/gobject/gvalue.h: + +/usr/include/glib-2.0/gobject/gparam.h: + +/usr/include/glib-2.0/gobject/gclosure.h: + +/usr/include/glib-2.0/gobject/gsignal.h: + +/usr/include/glib-2.0/gobject/gmarshal.h: + +/usr/include/glib-2.0/gobject/gboxed.h: + +/usr/include/glib-2.0/gobject/glib-types.h: + +/usr/include/glib-2.0/gobject/genums.h: + +/usr/include/glib-2.0/gobject/gparamspecs.h: + +/usr/include/glib-2.0/gobject/gsourceclosure.h: + +/usr/include/glib-2.0/gobject/gtypemodule.h: + +/usr/include/glib-2.0/gobject/gtypeplugin.h: + +/usr/include/glib-2.0/gobject/gvaluearray.h: + +/usr/include/glib-2.0/gobject/gvaluetypes.h: + +/usr/include/glib-2.0/gobject/gobject-autocleanups.h: + +/usr/include/glib-2.0/gio/gaction.h: + +/usr/include/glib-2.0/gio/gactiongroup.h: + +/usr/include/glib-2.0/gio/gactiongroupexporter.h: + +/usr/include/glib-2.0/gio/gactionmap.h: + +/usr/include/glib-2.0/gio/gappinfo.h: + +/usr/include/glib-2.0/gio/gapplication.h: + +/usr/include/glib-2.0/gio/gapplicationcommandline.h: + +/usr/include/glib-2.0/gio/gasyncinitable.h: + +/usr/include/glib-2.0/gio/ginitable.h: + +/usr/include/glib-2.0/gio/gasyncresult.h: + +/usr/include/glib-2.0/gio/gbufferedinputstream.h: + +/usr/include/glib-2.0/gio/gfilterinputstream.h: + +/usr/include/glib-2.0/gio/ginputstream.h: + +/usr/include/glib-2.0/gio/gbufferedoutputstream.h: + +/usr/include/glib-2.0/gio/gfilteroutputstream.h: + +/usr/include/glib-2.0/gio/goutputstream.h: + +/usr/include/glib-2.0/gio/gbytesicon.h: + +/usr/include/glib-2.0/gio/gcancellable.h: + +/usr/include/glib-2.0/gio/gcharsetconverter.h: + +/usr/include/glib-2.0/gio/gconverter.h: + +/usr/include/glib-2.0/gio/gcontenttype.h: + +/usr/include/glib-2.0/gio/gconverterinputstream.h: + +/usr/include/glib-2.0/gio/gconverteroutputstream.h: + +/usr/include/glib-2.0/gio/gcredentials.h: + +/usr/include/glib-2.0/gio/gdatagrambased.h: + +/usr/include/glib-2.0/gio/gdatainputstream.h: + +/usr/include/glib-2.0/gio/gdataoutputstream.h: + +/usr/include/glib-2.0/gio/gdbusaddress.h: + +/usr/include/glib-2.0/gio/gdbusauthobserver.h: + +/usr/include/glib-2.0/gio/gdbusconnection.h: + +/usr/include/glib-2.0/gio/gdbuserror.h: + +/usr/include/glib-2.0/gio/gdbusintrospection.h: + +/usr/include/glib-2.0/gio/gdbusmessage.h: + +/usr/include/glib-2.0/gio/gdbusmethodinvocation.h: + +/usr/include/glib-2.0/gio/gdbusnameowning.h: + +/usr/include/glib-2.0/gio/gdbusnamewatching.h: + +/usr/include/glib-2.0/gio/gdbusproxy.h: + +/usr/include/glib-2.0/gio/gdbusserver.h: + +/usr/include/glib-2.0/gio/gdbusutils.h: + +/usr/include/glib-2.0/gio/gdrive.h: + +/usr/include/glib-2.0/gio/gdtlsclientconnection.h: + +/usr/include/glib-2.0/gio/gdtlsconnection.h: + +/usr/include/glib-2.0/gio/gdtlsserverconnection.h: + +/usr/include/glib-2.0/gio/gemblemedicon.h: + +/usr/include/glib-2.0/gio/gicon.h: + +/usr/include/glib-2.0/gio/gemblem.h: + +/usr/include/glib-2.0/gio/gfileattribute.h: + +/usr/include/glib-2.0/gio/gfileenumerator.h: + +/usr/include/glib-2.0/gio/gfile.h: + +/usr/include/glib-2.0/gio/gfileicon.h: + +/usr/include/glib-2.0/gio/gfileinfo.h: + +/usr/include/glib-2.0/gio/gfileinputstream.h: + +/usr/include/glib-2.0/gio/gfileiostream.h: + +/usr/include/glib-2.0/gio/giostream.h: + +/usr/include/glib-2.0/gio/gioerror.h: + +/usr/include/glib-2.0/gio/gfilemonitor.h: + +/usr/include/glib-2.0/gio/gfilenamecompleter.h: + +/usr/include/glib-2.0/gio/gfileoutputstream.h: + +/usr/include/glib-2.0/gio/ginetaddress.h: + +/usr/include/glib-2.0/gio/ginetaddressmask.h: + +/usr/include/glib-2.0/gio/ginetsocketaddress.h: + +/usr/include/glib-2.0/gio/gsocketaddress.h: + +/usr/include/glib-2.0/gio/gioenumtypes.h: + +/usr/include/glib-2.0/gio/giomodule.h: + +/usr/include/glib-2.0/gmodule.h: + +/usr/include/glib-2.0/gio/gioscheduler.h: + +/usr/include/glib-2.0/gio/gloadableicon.h: + +/usr/include/glib-2.0/gio/gmemoryinputstream.h: + +/usr/include/glib-2.0/gio/gmemoryoutputstream.h: + +/usr/include/glib-2.0/gio/gmount.h: + +/usr/include/glib-2.0/gio/gmountoperation.h: + +/usr/include/glib-2.0/gio/gnativevolumemonitor.h: + +/usr/include/glib-2.0/gio/gvolumemonitor.h: + +/usr/include/glib-2.0/gio/gnetworkaddress.h: + +/usr/include/glib-2.0/gio/gnetworkmonitor.h: + +/usr/include/glib-2.0/gio/gnetworkservice.h: + +/usr/include/glib-2.0/gio/gpermission.h: + +/usr/include/glib-2.0/gio/gpollableinputstream.h: + +/usr/include/glib-2.0/gio/gpollableoutputstream.h: + +/usr/include/glib-2.0/gio/gpollableutils.h: + +/usr/include/glib-2.0/gio/gpropertyaction.h: + +/usr/include/glib-2.0/gio/gproxy.h: + +/usr/include/glib-2.0/gio/gproxyaddress.h: + +/usr/include/glib-2.0/gio/gproxyaddressenumerator.h: + +/usr/include/glib-2.0/gio/gsocketaddressenumerator.h: + +/usr/include/glib-2.0/gio/gproxyresolver.h: + +/usr/include/glib-2.0/gio/gresolver.h: + +/usr/include/glib-2.0/gio/gresource.h: + +/usr/include/glib-2.0/gio/gseekable.h: + +/usr/include/glib-2.0/gio/gsettingsschema.h: + +/usr/include/glib-2.0/gio/gsettings.h: + +/usr/include/glib-2.0/gio/gsimpleaction.h: + +/usr/include/glib-2.0/gio/gsimpleactiongroup.h: + +/usr/include/glib-2.0/gio/gactiongroup.h: + +/usr/include/glib-2.0/gio/gactionmap.h: + +/usr/include/glib-2.0/gio/gsimpleasyncresult.h: + +/usr/include/glib-2.0/gio/gsimpleiostream.h: + +/usr/include/glib-2.0/gio/gsimplepermission.h: + +/usr/include/glib-2.0/gio/gsocketclient.h: + +/usr/include/glib-2.0/gio/gsocketconnectable.h: + +/usr/include/glib-2.0/gio/gsocketconnection.h: + +/usr/include/glib-2.0/gio/gsocket.h: + +/usr/include/glib-2.0/gio/gsocketcontrolmessage.h: + +/usr/include/glib-2.0/gio/gsocketlistener.h: + +/usr/include/glib-2.0/gio/gsocketservice.h: + +/usr/include/glib-2.0/gio/gsrvtarget.h: + +/usr/include/glib-2.0/gio/gsimpleproxyresolver.h: + +/usr/include/glib-2.0/gio/gtask.h: + +/usr/include/glib-2.0/gio/gsubprocess.h: + +/usr/include/glib-2.0/gio/gsubprocesslauncher.h: + +/usr/include/glib-2.0/gio/gtcpconnection.h: + +/usr/include/glib-2.0/gio/gtcpwrapperconnection.h: + +/usr/include/glib-2.0/gio/gtestdbus.h: + +/usr/include/glib-2.0/gio/gthemedicon.h: + +/usr/include/glib-2.0/gio/gthreadedsocketservice.h: + +/usr/include/glib-2.0/gio/gtlsbackend.h: + +/usr/include/glib-2.0/gio/gtlscertificate.h: + +/usr/include/glib-2.0/gio/gtlsclientconnection.h: + +/usr/include/glib-2.0/gio/gtlsconnection.h: + +/usr/include/glib-2.0/gio/gtlsdatabase.h: + +/usr/include/glib-2.0/gio/gtlsfiledatabase.h: + +/usr/include/glib-2.0/gio/gtlsinteraction.h: + +/usr/include/glib-2.0/gio/gtlsserverconnection.h: + +/usr/include/glib-2.0/gio/gtlspassword.h: + +/usr/include/glib-2.0/gio/gvfs.h: + +/usr/include/glib-2.0/gio/gvolume.h: + +/usr/include/glib-2.0/gio/gzlibcompressor.h: + +/usr/include/glib-2.0/gio/gzlibdecompressor.h: + +/usr/include/glib-2.0/gio/gdbusinterface.h: + +/usr/include/glib-2.0/gio/gdbusinterfaceskeleton.h: + +/usr/include/glib-2.0/gio/gdbusobject.h: + +/usr/include/glib-2.0/gio/gdbusobjectskeleton.h: + +/usr/include/glib-2.0/gio/gdbusobjectproxy.h: + +/usr/include/glib-2.0/gio/gdbusobjectmanager.h: + +/usr/include/glib-2.0/gio/gdbusobjectmanagerclient.h: + +/usr/include/glib-2.0/gio/gdbusobjectmanagerserver.h: + +/usr/include/glib-2.0/gio/gdbusactiongroup.h: + +/usr/include/glib-2.0/gio/giotypes.h: + +/usr/include/glib-2.0/gio/gremoteactiongroup.h: + +/usr/include/glib-2.0/gio/gmenumodel.h: + +/usr/include/glib-2.0/gio/gmenu.h: + +/usr/include/glib-2.0/gio/gmenuexporter.h: + +/usr/include/glib-2.0/gio/gdbusmenumodel.h: + +/usr/include/glib-2.0/gio/gnotification.h: + +/usr/include/glib-2.0/gio/glistmodel.h: + +/usr/include/glib-2.0/gio/gliststore.h: + +/usr/include/glib-2.0/gio/gio-autocleanups.h: + +/usr/include/gtk-2.0/gdk/gdkscreen.h: + +/usr/include/cairo/cairo.h: + +/usr/include/cairo/cairo-version.h: + +/usr/include/cairo/cairo-features.h: + +/usr/include/cairo/cairo-deprecated.h: + +/usr/include/gtk-2.0/gdk/gdktypes.h: + +/usr/include/pango-1.0/pango/pango.h: + +/usr/include/pango-1.0/pango/pango-attributes.h: + +/usr/include/pango-1.0/pango/pango-font.h: + +/usr/include/pango-1.0/pango/pango-coverage.h: + +/usr/include/pango-1.0/pango/pango-types.h: + +/usr/include/pango-1.0/pango/pango-gravity.h: + +/usr/include/pango-1.0/pango/pango-matrix.h: + +/usr/include/pango-1.0/pango/pango-script.h: + +/usr/include/pango-1.0/pango/pango-language.h: + +/usr/include/pango-1.0/pango/pango-bidi-type.h: + +/usr/include/pango-1.0/pango/pango-break.h: + +/usr/include/pango-1.0/pango/pango-item.h: + +/usr/include/pango-1.0/pango/pango-context.h: + +/usr/include/pango-1.0/pango/pango-fontmap.h: + +/usr/include/pango-1.0/pango/pango-fontset.h: + +/usr/include/pango-1.0/pango/pango-engine.h: + +/usr/include/pango-1.0/pango/pango-glyph.h: + +/usr/include/pango-1.0/pango/pango-enum-types.h: + +/usr/include/pango-1.0/pango/pango-features.h: + +/usr/include/pango-1.0/pango/pango-glyph-item.h: + +/usr/include/pango-1.0/pango/pango-layout.h: + +/usr/include/pango-1.0/pango/pango-tabs.h: + +/usr/include/pango-1.0/pango/pango-renderer.h: + +/usr/include/pango-1.0/pango/pango-utils.h: + +/usr/lib/x86_64-linux-gnu/gtk-2.0/include/gdkconfig.h: + +/usr/include/gtk-2.0/gdk/gdkdisplay.h: + +/usr/include/gtk-2.0/gdk/gdkevents.h: + +/usr/include/gtk-2.0/gdk/gdkcolor.h: + +/usr/include/gtk-2.0/gdk/gdkdnd.h: + +/usr/include/gtk-2.0/gdk/gdkinput.h: + +/usr/include/gtk-2.0/gdk/gdkcairo.h: + +/usr/include/gtk-2.0/gdk/gdkpixbuf.h: + +/usr/include/gtk-2.0/gdk/gdkrgb.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-autocleanups.h: + +/usr/include/pango-1.0/pango/pangocairo.h: + +/usr/include/gtk-2.0/gdk/gdkcursor.h: + +/usr/include/gtk-2.0/gdk/gdkdisplaymanager.h: + +/usr/include/gtk-2.0/gdk/gdkdrawable.h: + +/usr/include/gtk-2.0/gdk/gdkgc.h: + +/usr/include/gtk-2.0/gdk/gdkenumtypes.h: + +/usr/include/gtk-2.0/gdk/gdkfont.h: + +/usr/include/gtk-2.0/gdk/gdkimage.h: + +/usr/include/gtk-2.0/gdk/gdkkeys.h: + +/usr/include/gtk-2.0/gdk/gdkpango.h: + +/usr/include/gtk-2.0/gdk/gdkpixmap.h: + +/usr/include/gtk-2.0/gdk/gdkproperty.h: + +/usr/include/gtk-2.0/gdk/gdkregion.h: + +/usr/include/gtk-2.0/gdk/gdkselection.h: + +/usr/include/gtk-2.0/gdk/gdkspawn.h: + +/usr/include/gtk-2.0/gdk/gdktestutils.h: + +/usr/include/gtk-2.0/gdk/gdkwindow.h: + +/usr/include/gtk-2.0/gdk/gdkvisual.h: + +/usr/include/gtk-2.0/gtk/gtkaboutdialog.h: + +/usr/include/gtk-2.0/gtk/gtkdialog.h: + +/usr/include/gtk-2.0/gtk/gtkwindow.h: + +/usr/include/gtk-2.0/gtk/gtkaccelgroup.h: + +/usr/include/gtk-2.0/gtk/gtkenums.h: + +/usr/include/gtk-2.0/gtk/gtkbin.h: + +/usr/include/gtk-2.0/gtk/gtkcontainer.h: + +/usr/include/gtk-2.0/gtk/gtkwidget.h: + +/usr/include/gtk-2.0/gtk/gtkobject.h: + +/usr/include/gtk-2.0/gtk/gtktypeutils.h: + +/usr/include/gtk-2.0/gtk/gtktypebuiltins.h: + +/usr/include/gtk-2.0/gtk/gtkdebug.h: + +/usr/include/gtk-2.0/gtk/gtkadjustment.h: + +/usr/include/gtk-2.0/gtk/gtkstyle.h: + +/usr/include/gtk-2.0/gtk/gtksettings.h: + +/usr/include/gtk-2.0/gtk/gtkrc.h: + +/usr/include/atk-1.0/atk/atk.h: + +/usr/include/atk-1.0/atk/atkobject.h: + +/usr/include/atk-1.0/atk/atkversion.h: + +/usr/include/atk-1.0/atk/atkstate.h: + +/usr/include/atk-1.0/atk/atkrelationtype.h: + +/usr/include/atk-1.0/atk/atkaction.h: + +/usr/include/atk-1.0/atk/atkcomponent.h: + +/usr/include/atk-1.0/atk/atkutil.h: + +/usr/include/atk-1.0/atk/atkdocument.h: + +/usr/include/atk-1.0/atk/atkeditabletext.h: + +/usr/include/atk-1.0/atk/atktext.h: + +/usr/include/atk-1.0/atk/atk-enum-types.h: + +/usr/include/atk-1.0/atk/atkgobjectaccessible.h: + +/usr/include/atk-1.0/atk/atkhyperlink.h: + +/usr/include/atk-1.0/atk/atkhyperlinkimpl.h: + +/usr/include/atk-1.0/atk/atkhypertext.h: + +/usr/include/atk-1.0/atk/atkimage.h: + +/usr/include/atk-1.0/atk/atknoopobject.h: + +/usr/include/atk-1.0/atk/atknoopobjectfactory.h: + +/usr/include/atk-1.0/atk/atkobjectfactory.h: + +/usr/include/atk-1.0/atk/atkplug.h: + +/usr/include/atk-1.0/atk/atkrange.h: + +/usr/include/atk-1.0/atk/atkregistry.h: + +/usr/include/atk-1.0/atk/atkobjectfactory.h: + +/usr/include/atk-1.0/atk/atkrelation.h: + +/usr/include/atk-1.0/atk/atkrelationset.h: + +/usr/include/atk-1.0/atk/atkselection.h: + +/usr/include/atk-1.0/atk/atksocket.h: + +/usr/include/atk-1.0/atk/atkstateset.h: + +/usr/include/atk-1.0/atk/atkstreamablecontent.h: + +/usr/include/atk-1.0/atk/atktable.h: + +/usr/include/atk-1.0/atk/atktablecell.h: + +/usr/include/atk-1.0/atk/atkmisc.h: + +/usr/include/atk-1.0/atk/atkvalue.h: + +/usr/include/atk-1.0/atk/atkwindow.h: + +/usr/include/gtk-2.0/gtk/gtkaccellabel.h: + +/usr/include/gtk-2.0/gtk/gtklabel.h: + +/usr/include/gtk-2.0/gtk/gtkmisc.h: + +/usr/include/gtk-2.0/gtk/gtkmenu.h: + +/usr/include/gtk-2.0/gtk/gtkmenushell.h: + +/usr/include/gtk-2.0/gtk/gtkaccelmap.h: + +/usr/include/gtk-2.0/gtk/gtkaccessible.h: + +/usr/include/gtk-2.0/gtk/gtkaction.h: + +/usr/include/gtk-2.0/gtk/gtkactiongroup.h: + +/usr/include/gtk-2.0/gtk/gtkactivatable.h: + +/usr/include/gtk-2.0/gtk/gtkalignment.h: + +/usr/include/gtk-2.0/gtk/gtkarrow.h: + +/usr/include/gtk-2.0/gtk/gtkaspectframe.h: + +/usr/include/gtk-2.0/gtk/gtkframe.h: + +/usr/include/gtk-2.0/gtk/gtkassistant.h: + +/usr/include/gtk-2.0/gtk/gtkbbox.h: + +/usr/include/gtk-2.0/gtk/gtkbox.h: + +/usr/include/gtk-2.0/gtk/gtkbindings.h: + +/usr/include/gtk-2.0/gtk/gtkbuildable.h: + +/usr/include/gtk-2.0/gtk/gtkbuilder.h: + +/usr/include/gtk-2.0/gtk/gtkbutton.h: + +/usr/include/gtk-2.0/gtk/gtkimage.h: + +/usr/include/gtk-2.0/gtk/gtkcalendar.h: + +/usr/include/gtk-2.0/gtk/gtksignal.h: + +/usr/include/gtk-2.0/gtk/gtkmarshal.h: + +/usr/include/gtk-2.0/gtk/gtkcelleditable.h: + +/usr/include/gtk-2.0/gtk/gtkcelllayout.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderer.h: + +/usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h: + +/usr/include/gtk-2.0/gtk/gtktreemodel.h: + +/usr/include/gtk-2.0/gtk/gtktreesortable.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendereraccel.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderertext.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderercombo.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererprogress.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererspin.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererspinner.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h: + +/usr/include/gtk-2.0/gtk/gtkcellview.h: + +/usr/include/gtk-2.0/gtk/gtkcheckbutton.h: + +/usr/include/gtk-2.0/gtk/gtktogglebutton.h: + +/usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkitem.h: + +/usr/include/gtk-2.0/gtk/gtkclipboard.h: + +/usr/include/gtk-2.0/gtk/gtkselection.h: + +/usr/include/gtk-2.0/gtk/gtktextiter.h: + +/usr/include/gtk-2.0/gtk/gtktexttag.h: + +/usr/include/gtk-2.0/gtk/gtktextchild.h: + +/usr/include/gtk-2.0/gtk/gtkcolorbutton.h: + +/usr/include/gtk-2.0/gtk/gtkcolorsel.h: + +/usr/include/gtk-2.0/gtk/gtkvbox.h: + +/usr/include/gtk-2.0/gtk/gtkcolorseldialog.h: + +/usr/include/gtk-2.0/gtk/gtkcombobox.h: + +/usr/include/gtk-2.0/gtk/gtktreeview.h: + +/usr/include/gtk-2.0/gtk/gtkdnd.h: + +/usr/include/gtk-2.0/gtk/gtkentry.h: + +/usr/include/gtk-2.0/gtk/gtkeditable.h: + +/usr/include/gtk-2.0/gtk/gtkimcontext.h: + +/usr/include/gtk-2.0/gtk/gtkentrybuffer.h: + +/usr/include/gtk-2.0/gtk/gtkentrycompletion.h: + +/usr/include/gtk-2.0/gtk/gtkliststore.h: + +/usr/include/gtk-2.0/gtk/gtktreemodelfilter.h: + +/usr/include/gtk-2.0/gtk/gtkcomboboxentry.h: + +/usr/include/gtk-2.0/gtk/gtkcomboboxtext.h: + +/usr/include/gtk-2.0/gtk/gtkdrawingarea.h: + +/usr/include/gtk-2.0/gtk/gtkeventbox.h: + +/usr/include/gtk-2.0/gtk/gtkexpander.h: + +/usr/include/gtk-2.0/gtk/gtkfixed.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooser.h: + +/usr/include/gtk-2.0/gtk/gtkfilefilter.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h: + +/usr/include/gtk-2.0/gtk/gtkhbox.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h: + +/usr/include/gtk-2.0/gtk/gtkfontbutton.h: + +/usr/include/gtk-2.0/gtk/gtkfontsel.h: + +/usr/include/gtk-2.0/gtk/gtkgc.h: + +/usr/include/gtk-2.0/gtk/gtkhandlebox.h: + +/usr/include/gtk-2.0/gtk/gtkhbbox.h: + +/usr/include/gtk-2.0/gtk/gtkhpaned.h: + +/usr/include/gtk-2.0/gtk/gtkpaned.h: + +/usr/include/gtk-2.0/gtk/gtkhruler.h: + +/usr/include/gtk-2.0/gtk/gtkruler.h: + +/usr/include/gtk-2.0/gtk/gtkhscale.h: + +/usr/include/gtk-2.0/gtk/gtkscale.h: + +/usr/include/gtk-2.0/gtk/gtkrange.h: + +/usr/include/gtk-2.0/gtk/gtkhscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkhseparator.h: + +/usr/include/gtk-2.0/gtk/gtkseparator.h: + +/usr/include/gtk-2.0/gtk/gtkhsv.h: + +/usr/include/gtk-2.0/gtk/gtkiconfactory.h: + +/usr/include/gtk-2.0/gtk/gtkicontheme.h: + +/usr/include/gtk-2.0/gtk/gtkiconview.h: + +/usr/include/gtk-2.0/gtk/gtktooltip.h: + +/usr/include/gtk-2.0/gtk/gtkimagemenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkimcontextsimple.h: + +/usr/include/gtk-2.0/gtk/gtkimmulticontext.h: + +/usr/include/gtk-2.0/gtk/gtkinfobar.h: + +/usr/include/gtk-2.0/gtk/gtkinvisible.h: + +/usr/include/gtk-2.0/gtk/gtklayout.h: + +/usr/include/gtk-2.0/gtk/gtklinkbutton.h: + +/usr/include/gtk-2.0/gtk/gtkmain.h: + +/usr/include/gtk-2.0/gtk/gtkmenubar.h: + +/usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolitem.h: + +/usr/include/gtk-2.0/gtk/gtktooltips.h: + +/usr/include/gtk-2.0/gtk/gtksizegroup.h: + +/usr/include/gtk-2.0/gtk/gtkmessagedialog.h: + +/usr/include/gtk-2.0/gtk/gtkmodules.h: + +/usr/include/gtk-2.0/gtk/gtkmountoperation.h: + +/usr/include/gtk-2.0/gtk/gtknotebook.h: + +/usr/include/gtk-2.0/gtk/gtkoffscreenwindow.h: + +/usr/include/gtk-2.0/gtk/gtkorientable.h: + +/usr/include/gtk-2.0/gtk/gtkpagesetup.h: + +/usr/include/gtk-2.0/gtk/gtkpapersize.h: + +/usr/include/gtk-2.0/gtk/gtkplug.h: + +/usr/include/gtk-2.0/gtk/gtksocket.h: + +/usr/include/gtk-2.0/gtk/gtkprintcontext.h: + +/usr/include/gtk-2.0/gtk/gtkprintoperation.h: + +/usr/include/gtk-2.0/gtk/gtkprintsettings.h: + +/usr/include/gtk-2.0/gtk/gtkprintoperationpreview.h: + +/usr/include/gtk-2.0/gtk/gtkprogressbar.h: + +/usr/include/gtk-2.0/gtk/gtkprogress.h: + +/usr/include/gtk-2.0/gtk/gtkradioaction.h: + +/usr/include/gtk-2.0/gtk/gtktoggleaction.h: + +/usr/include/gtk-2.0/gtk/gtkradiobutton.h: + +/usr/include/gtk-2.0/gtk/gtkradiomenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtkrecentaction.h: + +/usr/include/gtk-2.0/gtk/gtkrecentmanager.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooser.h: + +/usr/include/gtk-2.0/gtk/gtkrecentfilter.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooserdialog.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchoosermenu.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooserwidget.h: + +/usr/include/gtk-2.0/gtk/gtkscalebutton.h: + +/usr/include/gtk-2.0/gtk/gtkscrolledwindow.h: + +/usr/include/gtk-2.0/gtk/gtkvscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkviewport.h: + +/usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h: + +/usr/include/gtk-2.0/gtk/gtkshow.h: + +/usr/include/gtk-2.0/gtk/gtkspinbutton.h: + +/usr/include/gtk-2.0/gtk/gtkspinner.h: + +/usr/include/gtk-2.0/gtk/gtkstatusbar.h: + +/usr/include/gtk-2.0/gtk/gtkstatusicon.h: + +/usr/include/gtk-2.0/gtk/gtkstock.h: + +/usr/include/gtk-2.0/gtk/gtktable.h: + +/usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtktextbuffer.h: + +/usr/include/gtk-2.0/gtk/gtktexttagtable.h: + +/usr/include/gtk-2.0/gtk/gtktextmark.h: + +/usr/include/gtk-2.0/gtk/gtktextbufferrichtext.h: + +/usr/include/gtk-2.0/gtk/gtktextview.h: + +/usr/include/gtk-2.0/gtk/gtktoolbar.h: + +/usr/include/gtk-2.0/gtk/gtkpixmap.h: + +/usr/include/gtk-2.0/gtk/gtktoolitemgroup.h: + +/usr/include/gtk-2.0/gtk/gtktoolpalette.h: + +/usr/include/gtk-2.0/gtk/gtktoolshell.h: + +/usr/include/gtk-2.0/gtk/gtktestutils.h: + +/usr/include/gtk-2.0/gtk/gtktreednd.h: + +/usr/include/gtk-2.0/gtk/gtktreemodelsort.h: + +/usr/include/gtk-2.0/gtk/gtktreeselection.h: + +/usr/include/gtk-2.0/gtk/gtktreestore.h: + +/usr/include/gtk-2.0/gtk/gtkuimanager.h: + +/usr/include/gtk-2.0/gtk/gtkvbbox.h: + +/usr/include/gtk-2.0/gtk/gtkversion.h: + +/usr/include/gtk-2.0/gtk/gtkvolumebutton.h: + +/usr/include/gtk-2.0/gtk/gtkvpaned.h: + +/usr/include/gtk-2.0/gtk/gtkvruler.h: + +/usr/include/gtk-2.0/gtk/gtkvscale.h: + +/usr/include/gtk-2.0/gtk/gtkvseparator.h: + +/usr/include/gtk-2.0/gtk/gtktext.h: + +/usr/include/gtk-2.0/gtk/gtktree.h: + +/usr/include/gtk-2.0/gtk/gtktreeitem.h: + +/usr/include/gtk-2.0/gtk/gtkclist.h: + +/usr/include/gtk-2.0/gtk/gtkcombo.h: + +/usr/include/gtk-2.0/gtk/gtkctree.h: + +/usr/include/gtk-2.0/gtk/gtkcurve.h: + +/usr/include/gtk-2.0/gtk/gtkfilesel.h: + +/usr/include/gtk-2.0/gtk/gtkgamma.h: + +/usr/include/gtk-2.0/gtk/gtkinputdialog.h: + +/usr/include/gtk-2.0/gtk/gtkitemfactory.h: + +/usr/include/gtk-2.0/gtk/gtklist.h: + +/usr/include/gtk-2.0/gtk/gtklistitem.h: + +/usr/include/gtk-2.0/gtk/gtkoldeditable.h: + +/usr/include/gtk-2.0/gtk/gtkoptionmenu.h: + +/usr/include/gtk-2.0/gtk/gtkpreview.h: + +/usr/include/gtk-2.0/gtk/gtktipsquery.h: + +/usr/include/libglade-2.0/glade/glade.h: + +/usr/include/libglade-2.0/glade/glade-init.h: + +/usr/include/libglade-2.0/glade/glade-xml.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +Linux.h: + +../include/config.h: + +../libpcsxcore/psxcommon.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +Cheat.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/psxcommon.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: diff --git a/gui/.deps/Plugin.Po b/gui/.deps/Plugin.Po new file mode 100644 index 0000000..c81b55f --- /dev/null +++ b/gui/.deps/Plugin.Po @@ -0,0 +1,297 @@ +Plugin.o: Plugin.c /usr/include/stdc-predef.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/dlfcn.h \ + /usr/include/x86_64-linux-gnu/bits/dlfcn.h /usr/include/X11/keysym.h \ + /usr/include/X11/keysymdef.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h Linux.h \ + ../include/config.h ../libpcsxcore/psxcommon.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h Cheat.h \ + ../libpcsxcore/plugins.h ../libpcsxcore/psxcommon.h ../libpcsxcore/spu.h \ + ../libpcsxcore/plugins.h ../libpcsxcore/r3000a.h ../libpcsxcore/psxmem.h \ + ../libpcsxcore/psxcounters.h ../libpcsxcore/psxbios.h \ + ../libpcsxcore/misc.h ../libpcsxcore/coff.h ../libpcsxcore/sio.h \ + ../libpcsxcore/psemu_plugin_defs.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/spu.h ../libpcsxcore/cdriso.h nopic.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/include/dlfcn.h: + +/usr/include/x86_64-linux-gnu/bits/dlfcn.h: + +/usr/include/X11/keysym.h: + +/usr/include/X11/keysymdef.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +Linux.h: + +../include/config.h: + +../libpcsxcore/psxcommon.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +Cheat.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/psxcommon.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/cdriso.h: + +nopic.h: diff --git a/gui/AboutDlg.c b/gui/AboutDlg.c new file mode 100644 index 0000000..88979cf --- /dev/null +++ b/gui/AboutDlg.c @@ -0,0 +1,109 @@ +/* Pcsx - Pc Psx Emulator + * Copyright (C) 1999-2002 Pcsx Team + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA + */ + +#include "Linux.h" +#include + +#if GTK_MAJOR_VERSION <= 2 && GTK_MINOR_VERSION < 12 +#define gtk_about_dialog_set_program_name gtk_about_dialog_set_name +#endif + +#define ABOUT_VERSION "1.9.92" + +void RunAboutDialog(void) { + GtkWidget *AboutDlg; + + const gchar *authors[] = { + "PCSX-Reloaded Team:", + "edgbla ", + "Wei Mingzhi ", + "", + "Contributors:", + "Dario", + "Firnis", + "Gabriele Gorla", + "Peter Collingbourne", + "shalma", + "Tristin Celestin", + "(See the included AUTHORS file for more details.)", + "", + "PCSX-df Team:", + "Ryan Schultz ", + "Andrew Burton ", + "Stephen Chao ", + "Stefan Sikora ", + "", + "PCSX Team:", + "Linuzappz ", + "Shadow", + "Pete Bernert", + "NoComp", + "Nik3d", + NULL + }; + + const gchar *artists[] = { + "Ryan Schultz ", + "", + "Icon Design:", + "Romain Lafourcade", + NULL + }; + + const gchar *documenters[] = { + "Ryan Schultz ", + NULL + }; + + const gchar *copyright = N_( + "(C) 1999-2003 PCSX Team\n" + "(C) 2005-2009 PCSX-df Team\n" + "(C) 2009-2010 PCSX-Reloaded Team"); + + const gchar *license = N_( + "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.\n" + "\n" + "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.\n" + "\n" + "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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA."); + + AboutDlg = gtk_about_dialog_new(); + gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(AboutDlg), "PCSX-Reloaded"); + gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(AboutDlg), ABOUT_VERSION); + gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(AboutDlg), "http://pcsxr.codeplex.com/"); + gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(AboutDlg), "http://pcsxr.codeplex.com/"); + gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(AboutDlg), authors); + gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(AboutDlg), _(copyright)); + gtk_about_dialog_set_documenters(GTK_ABOUT_DIALOG(AboutDlg), documenters); + gtk_about_dialog_set_artists(GTK_ABOUT_DIALOG(AboutDlg), artists); + gtk_about_dialog_set_translator_credits(GTK_ABOUT_DIALOG(AboutDlg), _("translator-credits")); + gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG (AboutDlg), _("A PlayStation emulator.")); + gtk_about_dialog_set_license(GTK_ABOUT_DIALOG(AboutDlg), _(license)); + gtk_about_dialog_set_wrap_license(GTK_ABOUT_DIALOG(AboutDlg), TRUE); + + gtk_dialog_run(GTK_DIALOG(AboutDlg)); + gtk_widget_destroy(AboutDlg); +} diff --git a/gui/AboutDlg.h b/gui/AboutDlg.h new file mode 100644 index 0000000..e8b82af --- /dev/null +++ b/gui/AboutDlg.h @@ -0,0 +1,24 @@ +/* Pcsx - Pc Psx Emulator + * Copyright (C) 1999-2002 Pcsx Team + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA + */ + +#ifndef ABOUTDLG_H +#define ABOUTDLG_H + +void RunAboutDialog(void); + +#endif diff --git a/gui/Cheat.c b/gui/Cheat.c new file mode 100644 index 0000000..4047e2f --- /dev/null +++ b/gui/Cheat.c @@ -0,0 +1,1176 @@ +/* Cheat Support for PCSX-Reloaded + * Copyright (C) 2009, Wei Mingzhi . + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA + */ + +#include +#include +#include +#include + +#include +#include +#include + +#include "Linux.h" + +#include "../libpcsxcore/cheat.h" +#include "../libpcsxcore/psxmem.h" + +GtkWidget *CheatListDlg = NULL; +GtkWidget *CheatSearchDlg = NULL; + +static void LoadCheatListItems(int index) { + GtkListStore *store = gtk_list_store_new(2, G_TYPE_BOOLEAN, G_TYPE_STRING); + GtkTreeIter iter; + GtkWidget *widget; + GladeXML *xml; + + int i; + + xml = glade_get_widget_tree(CheatListDlg); + widget = glade_xml_get_widget(xml, "GtkCList_Cheat"); + + for (i = 0; i < NumCheats; i++) { + gtk_list_store_append(store, &iter); + gtk_list_store_set(store, &iter, 0, Cheats[i].Enabled, 1, Cheats[i].Descr, -1); + } + + gtk_tree_view_set_model(GTK_TREE_VIEW(widget), GTK_TREE_MODEL(store)); + g_object_unref(G_OBJECT(store)); + gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(widget), TRUE); + gtk_widget_show(widget); + + if (index >= NumCheats) { + index = NumCheats - 1; + } + + if (index >= 0) { + GtkTreePath *path; + GtkTreeSelection *sel; + + path = gtk_tree_path_new_from_indices(index, -1); + sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)); + + gtk_tree_selection_select_path(sel, path); + gtk_tree_path_free(path); + } +} + +static void CheatList_TreeSelectionChanged(GtkTreeSelection *selection, gpointer user_data) { + GladeXML *xml; + GtkTreeIter iter; + GtkTreeModel *model; + GtkTreePath *path; + + gboolean selected; + int i; + + selected = gtk_tree_selection_get_selected(selection, &model, &iter); + + if (selected) { + path = gtk_tree_model_get_path(model, &iter); + i = *gtk_tree_path_get_indices(path); + gtk_tree_path_free(path); + + // If a row was selected, and the row is not blank, we can now enable + // some of the disabled widgets + xml = glade_get_widget_tree(CheatListDlg); + + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "editbutton1")), TRUE); + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "delbutton1")), TRUE); + } else { + xml = glade_get_widget_tree(CheatListDlg); + + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "editbutton1")), FALSE); + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "delbutton1")), FALSE); + } + + gtk_widget_set_sensitive (GTK_WIDGET(glade_xml_get_widget(xml, "savebutton1")), NumCheats); +} + +static void OnCheatListDlg_AddClicked(GtkWidget *widget, gpointer user_data) { + GtkWidget *dlg; + GtkWidget *box, *scroll, *label, *descr_edit, *code_edit; + + dlg = gtk_dialog_new_with_buttons(_("Add New Cheat"), GTK_WINDOW(CheatListDlg), + GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); + + gtk_window_set_default_size(GTK_WINDOW(dlg), 350, 350); + + box = GTK_WIDGET(GTK_DIALOG(dlg)->vbox); + + label = gtk_label_new(_("Cheat Description:")); + gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5); + gtk_widget_show(label); + + descr_edit = gtk_entry_new(); + gtk_box_pack_start(GTK_BOX(box), descr_edit, FALSE, FALSE, 5); + gtk_widget_show(descr_edit); + + label = gtk_label_new(_("Cheat Code:")); + gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5); + gtk_widget_show(label); + + code_edit = gtk_text_view_new(); + gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(code_edit), GTK_WRAP_CHAR); + + scroll = gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll), + GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + + gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scroll), code_edit); + gtk_widget_show(code_edit); + + gtk_box_pack_start(GTK_BOX(box), scroll, TRUE, TRUE, 5); + gtk_widget_show(scroll); + + gtk_window_set_position(GTK_WINDOW(dlg), GTK_WIN_POS_CENTER); + + gtk_widget_show_all(dlg); + + if (gtk_dialog_run(GTK_DIALOG(dlg)) == GTK_RESPONSE_ACCEPT) { + GtkTextBuffer *b = gtk_text_view_get_buffer(GTK_TEXT_VIEW(code_edit)); + GtkTextIter s, e; + char *codetext; + + gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(b), &s, &e); + codetext = strdup(gtk_text_buffer_get_text(GTK_TEXT_BUFFER(b), &s, &e, FALSE)); + + if (AddCheat(gtk_entry_get_text(GTK_ENTRY(descr_edit)), codetext) != 0) { + SysErrorMessage(_("Error"), _("Invalid cheat code!")); + } + + LoadCheatListItems(NumCheats - 1); + + free(codetext); + } + + gtk_widget_destroy(dlg); +} + +static void OnCheatListDlg_EditClicked(GtkWidget *widget, gpointer user_data) { + GtkWidget *dlg; + GtkWidget *box, *scroll, *label, *descr_edit, *code_edit; + GladeXML *xml; + GtkTreeIter iter; + GtkTreeModel *model; + GtkTreePath *path; + + gboolean selected; + int index, i; + char buf[8192]; + char *p = buf; + + xml = glade_get_widget_tree(CheatListDlg); + widget = glade_xml_get_widget(xml, "GtkCList_Cheat"); + + selected = gtk_tree_selection_get_selected( + gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)), + &model, &iter); + + if (!selected) { + return; + } + + path = gtk_tree_model_get_path(model, &iter); + index = *gtk_tree_path_get_indices(path); + gtk_tree_path_free(path); + + dlg = gtk_dialog_new_with_buttons(_("Edit Cheat"), GTK_WINDOW(CheatListDlg), + GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); + + gtk_window_set_default_size(GTK_WINDOW(dlg), 350, 350); + + box = GTK_WIDGET(GTK_DIALOG(dlg)->vbox); + + label = gtk_label_new(_("Cheat Description:")); + gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5); + gtk_widget_show(label); + + descr_edit = gtk_entry_new(); + gtk_entry_set_text(GTK_ENTRY(descr_edit), Cheats[index].Descr); + gtk_box_pack_start(GTK_BOX(box), descr_edit, FALSE, FALSE, 5); + gtk_widget_show(descr_edit); + + label = gtk_label_new(_("Cheat Code:")); + gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5); + gtk_widget_show(label); + + code_edit = gtk_text_view_new(); + + for (i = Cheats[index].First; i < Cheats[index].First + Cheats[index].n; i++) { + sprintf(p, "%.8X %.4X\n", CheatCodes[i].Addr, CheatCodes[i].Val); + p += 14; + *p = '\0'; + } + + gtk_text_buffer_set_text(gtk_text_view_get_buffer(GTK_TEXT_VIEW(code_edit)), + buf, -1); + + gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(code_edit), GTK_WRAP_CHAR); + + scroll = gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll), + GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + + gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scroll), code_edit); + gtk_widget_show(code_edit); + + gtk_box_pack_start(GTK_BOX(box), scroll, TRUE, TRUE, 5); + gtk_widget_show(scroll); + + gtk_window_set_position(GTK_WINDOW(dlg), GTK_WIN_POS_CENTER); + + gtk_widget_show_all(dlg); + + if (gtk_dialog_run(GTK_DIALOG(dlg)) == GTK_RESPONSE_ACCEPT) { + GtkTextBuffer *b = gtk_text_view_get_buffer(GTK_TEXT_VIEW(code_edit)); + GtkTextIter s, e; + char *codetext; + + gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(b), &s, &e); + codetext = strdup(gtk_text_buffer_get_text(GTK_TEXT_BUFFER(b), &s, &e, FALSE)); + + if (EditCheat(index, gtk_entry_get_text(GTK_ENTRY(descr_edit)), codetext) != 0) { + SysErrorMessage(_("Error"), _("Invalid cheat code!")); + } + + LoadCheatListItems(index); + + free(codetext); + } + + gtk_widget_destroy(dlg); +} + +static void OnCheatListDlg_DelClicked(GtkWidget *widget, gpointer user_data) { + GladeXML *xml; + GtkTreeIter iter; + GtkTreeModel *model; + GtkTreePath *path; + + gboolean selected; + int i = -1; + + xml = glade_get_widget_tree(CheatListDlg); + widget = glade_xml_get_widget(xml, "GtkCList_Cheat"); + + selected = gtk_tree_selection_get_selected( + gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)), + &model, &iter); + + if (selected) { + path = gtk_tree_model_get_path(model, &iter); + i = *gtk_tree_path_get_indices(path); + gtk_tree_path_free(path); + + RemoveCheat(i); + } + + LoadCheatListItems(i); // FIXME: should remove it from the list directly + // rather than regenerating the whole list +} + +static void OnCheatListDlg_EnableToggled(GtkWidget *widget, gchar *path, gpointer user_data) { + int i = atoi(path); + + assert(i >= 0 && i < NumCheats); + Cheats[i].Enabled ^= 1; + + LoadCheatListItems(i); // FIXME: should modify it in the list directly + // rather than regenerating the whole list +} + +static void OnCheatListDlg_OpenClicked(GtkWidget *widget, gpointer user_data) { + GtkWidget *chooser; + gchar *filename; + + GtkFileFilter *filter; + + chooser = gtk_file_chooser_dialog_new (_("Open Cheat File"), + NULL, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); + + filename = g_build_filename(getenv("HOME"), CHEATS_DIR, NULL); + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (chooser), filename); + g_free(filename); + + filter = gtk_file_filter_new (); + gtk_file_filter_add_pattern (filter, "*.cht"); + gtk_file_filter_set_name (filter, _("PCSX Cheat Code Files (*.cht)")); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter); + + filter = gtk_file_filter_new (); + gtk_file_filter_add_pattern (filter, "*"); + gtk_file_filter_set_name (filter, _("All Files")); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter); + + if (gtk_dialog_run (GTK_DIALOG (chooser)) == GTK_RESPONSE_OK) { + filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser)); + gtk_widget_destroy (GTK_WIDGET (chooser)); + while (gtk_events_pending()) gtk_main_iteration(); + } else { + gtk_widget_destroy (GTK_WIDGET (chooser)); + while (gtk_events_pending()) gtk_main_iteration(); + return; + } + + LoadCheats(filename); + + g_free(filename); + + LoadCheatListItems(-1); +} + +static void OnCheatListDlg_SaveClicked(GtkWidget *widget, gpointer user_data) { + GtkWidget *chooser; + gchar *filename; + GtkFileFilter *filter; + + chooser = gtk_file_chooser_dialog_new(_("Save Cheat File"), + NULL, GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); + + filename = g_build_filename(getenv("HOME"), CHEATS_DIR, NULL); + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser), filename); + g_free(filename); + + filter = gtk_file_filter_new(); + gtk_file_filter_add_pattern(filter, "*.cht"); + gtk_file_filter_set_name(filter, _("PCSX Cheat Code Files (*.cht)")); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(chooser), filter); + + filter = gtk_file_filter_new(); + gtk_file_filter_add_pattern(filter, "*"); + gtk_file_filter_set_name(filter, _("All Files (*.*)")); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(chooser), filter); + + if (gtk_dialog_run(GTK_DIALOG(chooser)) == GTK_RESPONSE_OK) { + filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser)); + gtk_widget_destroy (GTK_WIDGET(chooser)); + while (gtk_events_pending()) gtk_main_iteration(); + } else { + gtk_widget_destroy (GTK_WIDGET(chooser)); + while (gtk_events_pending()) gtk_main_iteration(); + return; + } + + SaveCheats(filename); + + g_free(filename); +} + +static void OnCheatListDlg_CloseClicked() { + gtk_widget_destroy(CheatListDlg); + CheatListDlg = NULL; +} + +// run the cheat list dialog +void RunCheatListDialog() { + GladeXML *xml; + GtkWidget *widget; + GtkTreeSelection *treesel; + GtkTreeViewColumn *column; + GtkCellRenderer *renderer; + + xml = glade_xml_new(PACKAGE_DATA_DIR "pcsx.glade2", "CheatListDlg", NULL); + if (!xml) { + g_warning(_("Error: Glade interface could not be loaded!")); + return; + } + + CheatListDlg = glade_xml_get_widget(xml, "CheatListDlg"); + gtk_window_set_title(GTK_WINDOW(CheatListDlg), _("Cheat Codes")); + + widget = glade_xml_get_widget(xml, "GtkCList_Cheat"); + + // column for enable + renderer = gtk_cell_renderer_toggle_new(); + column = gtk_tree_view_column_new_with_attributes(_("Enable"), + renderer, "active", 0, NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(widget), column); + + g_signal_connect(G_OBJECT(renderer), "toggled", G_CALLBACK(OnCheatListDlg_EnableToggled), 0); + + // column for description + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes(_("Description"), + renderer, "text", 1, NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(widget), column); + + LoadCheatListItems(-1); + + treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)); + gtk_tree_selection_set_mode(treesel, GTK_SELECTION_SINGLE); + g_signal_connect_data(G_OBJECT (treesel), "changed", + G_CALLBACK (CheatList_TreeSelectionChanged), + NULL, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "addbutton1"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnCheatListDlg_AddClicked), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "editbutton1"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnCheatListDlg_EditClicked), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "delbutton1"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnCheatListDlg_DelClicked), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "loadbutton1"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnCheatListDlg_OpenClicked), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "savebutton1"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnCheatListDlg_SaveClicked), xml, NULL, G_CONNECT_AFTER); + + // Setup a handler for when Close or Cancel is clicked + g_signal_connect_data(GTK_OBJECT(CheatListDlg), "response", + GTK_SIGNAL_FUNC(OnCheatListDlg_CloseClicked), xml, (GClosureNotify)g_object_unref, G_CONNECT_AFTER); + + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "savebutton1")), NumCheats); + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "editbutton1")), FALSE); + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "delbutton1")), FALSE); + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "editbutton1")), FALSE); +} + +/////////////////////////////////////////////////////////////////////////////// + +#define SEARCH_EQUALVAL 0 +#define SEARCH_NOTEQUALVAL 1 +#define SEARCH_RANGE 2 +#define SEARCH_INCBY 3 +#define SEARCH_DECBY 4 +#define SEARCH_INC 5 +#define SEARCH_DEC 6 +#define SEARCH_DIFFERENT 7 +#define SEARCH_NOCHANGE 8 + +#define SEARCHTYPE_8BIT 0 +#define SEARCHTYPE_16BIT 1 +#define SEARCHTYPE_32BIT 2 + +#define SEARCHBASE_DEC 0 +#define SEARCHBASE_HEX 1 + +static char current_search = SEARCH_EQUALVAL; +static char current_searchtype = SEARCHTYPE_8BIT; +static char current_searchbase = SEARCHBASE_DEC; +static uint32_t current_valuefrom = 0; +static uint32_t current_valueto = 0; + +// update the cheat search dialog +static void UpdateCheatSearchDialog() { + GladeXML *xml; + char buf[256]; + int i; + u32 addr; + GtkListStore *store = gtk_list_store_new(1, G_TYPE_STRING); + GtkTreeIter iter; + GtkWidget *widget; + + xml = glade_get_widget_tree(CheatSearchDlg); + widget = glade_xml_get_widget(xml, "GtkCList_Result"); + + gtk_combo_box_set_active(GTK_COMBO_BOX(glade_xml_get_widget(xml, "combo_searchfor")), current_search); + gtk_combo_box_set_active(GTK_COMBO_BOX(glade_xml_get_widget(xml, "combo_datatype")), current_searchtype); + gtk_combo_box_set_active(GTK_COMBO_BOX(glade_xml_get_widget(xml, "combo_database")), current_searchbase); + + if (current_searchbase == SEARCHBASE_DEC) { + sprintf(buf, "%u", current_valuefrom); + gtk_entry_set_text(GTK_ENTRY(glade_xml_get_widget(xml, "entry_value")), buf); + sprintf(buf, "%u", current_valueto); + gtk_entry_set_text(GTK_ENTRY(glade_xml_get_widget(xml, "entry_valueto")), buf); + } + else { + sprintf(buf, "%X", current_valuefrom); + gtk_entry_set_text(GTK_ENTRY(glade_xml_get_widget(xml, "entry_value")), buf); + sprintf(buf, "%X", current_valueto); + gtk_entry_set_text(GTK_ENTRY(glade_xml_get_widget(xml, "entry_valueto")), buf); + } + + if (current_search == SEARCH_RANGE) { + gtk_widget_show(GTK_WIDGET(glade_xml_get_widget(xml, "label_valueto"))); + gtk_widget_show(GTK_WIDGET(glade_xml_get_widget(xml, "entry_valueto"))); + } + else { + gtk_widget_hide(GTK_WIDGET(glade_xml_get_widget(xml, "label_valueto"))); + gtk_widget_hide(GTK_WIDGET(glade_xml_get_widget(xml, "entry_valueto"))); + } + + if (current_search >= SEARCH_INC) { + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "entry_value")), FALSE); + } + else { + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "entry_value")), TRUE); + } + + if (current_search >= SEARCH_INCBY && prevM == NULL) { + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btn_start")), FALSE); + } + else { + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btn_start")), TRUE); + } + + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btn_freeze")), FALSE); + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btn_modify")), FALSE); + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btn_copy")), FALSE); + + if (prevM != NULL) { + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "combo_datatype")), FALSE); + + if (NumSearchResults > 100) { + // too many results to be shown + gtk_list_store_append(store, &iter); + gtk_list_store_set(store, &iter, 0, _("Too many addresses found."), -1); + gtk_widget_set_sensitive(widget, FALSE); + } + else { + for (i = 0; i < NumSearchResults; i++) { + addr = SearchResults[i]; + + switch (current_searchtype) { + case SEARCHTYPE_8BIT: + sprintf(buf, _("%.8X Current: %u (%.2X), Previous: %u (%.2X)"), + addr, PSXMu8(addr), PSXMu8(addr), PrevMu8(addr), PrevMu8(addr)); + break; + + case SEARCHTYPE_16BIT: + sprintf(buf, _("%.8X Current: %u (%.4X), Previous: %u (%.4X)"), + addr, PSXMu16(addr), PSXMu16(addr), PrevMu16(addr), PrevMu16(addr)); + break; + + case SEARCHTYPE_32BIT: + sprintf(buf, _("%.8X Current: %u (%.8X), Previous: %u (%.8X)"), + addr, PSXMu32(addr), PSXMu32(addr), PrevMu32(addr), PrevMu32(addr)); + break; + + default: + assert(FALSE); // impossible + break; + } + + gtk_list_store_append(store, &iter); + gtk_list_store_set(store, &iter, 0, buf, -1); + } + gtk_widget_set_sensitive(widget, TRUE); + } + + sprintf(buf, _("Founded Addresses: %d"), NumSearchResults); + gtk_label_set_text(GTK_LABEL(glade_xml_get_widget(xml, "label_resultsfound")), buf); + } + else { + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "combo_datatype")), TRUE); + gtk_widget_set_sensitive(widget, FALSE); + + gtk_label_set_text(GTK_LABEL(glade_xml_get_widget(xml, "label_resultsfound")), + _("Enter the values and start your search.")); + } + + gtk_tree_view_set_model(GTK_TREE_VIEW(widget), GTK_TREE_MODEL(store)); + g_object_unref(G_OBJECT(store)); + gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(widget), TRUE); + gtk_widget_show(widget); +} + +// get the current selected result index in the list +static int GetSelectedResultIndex() { + GladeXML *xml; + GtkTreeSelection *selection; + GtkTreeIter iter; + GtkTreeModel *model; + GtkTreePath *path; + gboolean selected; + int i; + + xml = glade_get_widget_tree(CheatSearchDlg); + + selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(glade_xml_get_widget(xml, "GtkCList_Result"))); + selected = gtk_tree_selection_get_selected(selection, &model, &iter); + + if (!selected) { + return -1; + } + + path = gtk_tree_model_get_path(model, &iter); + i = *gtk_tree_path_get_indices(path); + gtk_tree_path_free(path); + + assert(i < NumSearchResults); + return i; +} + +// add cheat code to freeze the value +static void OnCheatSearchDlg_FreezeClicked(GtkWidget *widget, gpointer user_data) { + GtkWidget *dlg; + GtkWidget *box, *hbox, *label, *descr_edit, *value_edit; + char buf[256]; + u32 addr, val = 0; + + addr = SearchResults[GetSelectedResultIndex()]; + + dlg = gtk_dialog_new_with_buttons(_("Freeze value"), GTK_WINDOW(CheatListDlg), + GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); + + box = GTK_WIDGET(GTK_DIALOG(dlg)->vbox); + + label = gtk_label_new(_("Description:")); + gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5); + gtk_widget_show(label); + + descr_edit = gtk_entry_new(); + gtk_box_pack_start(GTK_BOX(box), descr_edit, FALSE, FALSE, 10); + gtk_widget_show(descr_edit); + + hbox = gtk_hbox_new(FALSE, 0); + gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 15); + + label = gtk_label_new(_("Value:")); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); + gtk_widget_show(label); + + value_edit = gtk_entry_new(); + gtk_box_pack_start(GTK_BOX(hbox), value_edit, FALSE, FALSE, 10); + gtk_widget_show(value_edit); + + switch (current_searchtype) { + case SEARCHTYPE_8BIT: + val = PSXMu8(addr); + break; + + case SEARCHTYPE_16BIT: + val = PSXMu16(addr); + break; + + case SEARCHTYPE_32BIT: + val = PSXMu32(addr); + break; + + default: + assert(FALSE); // should not reach here + break; + } + + sprintf(buf, "%u", val); + gtk_entry_set_text(GTK_ENTRY(value_edit), buf); + + sprintf(buf, "%.8X", addr); + gtk_entry_set_text(GTK_ENTRY(descr_edit), buf); + + gtk_window_set_position(GTK_WINDOW(dlg), GTK_WIN_POS_CENTER); + gtk_widget_show_all(dlg); + + if (gtk_dialog_run(GTK_DIALOG(dlg)) == GTK_RESPONSE_ACCEPT) { + val = 0; + sscanf(gtk_entry_get_text(GTK_ENTRY(value_edit)), "%u", &val); + + switch (current_searchtype) { + case SEARCHTYPE_8BIT: + if (val > (u32)0xFF) { + val = 0xFF; + } + sprintf(buf, "%.8X %.4X", (addr & 0x1FFFFF) | (CHEAT_CONST8 << 24), val); + break; + + case SEARCHTYPE_16BIT: + if (val > (u32)0xFFFF) { + val = 0xFFFF; + } + sprintf(buf, "%.8X %.4X", (addr & 0x1FFFFF) | (CHEAT_CONST16 << 24), val); + break; + + case SEARCHTYPE_32BIT: + sprintf(buf, "%.8X %.4X\n%.8X %.4X", + (addr & 0x1FFFFF) | (CHEAT_CONST16 << 24), val & 0xFFFF, + ((addr + 2) & 0x1FFFFF) | (CHEAT_CONST16 << 24), ((val & 0xFFFF0000) >> 16) & 0xFFFF); + break; + + default: + assert(FALSE); // should not reach here + break; + } + + if (AddCheat(gtk_entry_get_text(GTK_ENTRY(descr_edit)), buf) == 0) { + Cheats[NumCheats - 1].Enabled = 1; + } + } + + gtk_widget_destroy(dlg); +} + +// modify the value on the fly +static void OnCheatSearchDlg_ModifyClicked(GtkWidget *widget, gpointer user_data) { + GtkWidget *dlg; + GtkWidget *box, *hbox, *label, *value_edit; + char buf[256]; + u32 addr, val = 0; + + addr = SearchResults[GetSelectedResultIndex()]; + + dlg = gtk_dialog_new_with_buttons(_("Modify value"), GTK_WINDOW(CheatListDlg), + GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); + + box = GTK_WIDGET(GTK_DIALOG(dlg)->vbox); + hbox = gtk_hbox_new(FALSE, 0); + gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5); + + label = gtk_label_new(_("New value:")); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); + gtk_widget_show(label); + + value_edit = gtk_entry_new(); + gtk_box_pack_start(GTK_BOX(hbox), value_edit, FALSE, FALSE, 10); + gtk_widget_show(value_edit); + + switch (current_searchtype) { + case SEARCHTYPE_8BIT: + val = PSXMu8(addr); + break; + + case SEARCHTYPE_16BIT: + val = PSXMu16(addr); + break; + + case SEARCHTYPE_32BIT: + val = PSXMu32(addr); + break; + + default: + assert(FALSE); // should not reach here + break; + } + + sprintf(buf, "%u", val); + gtk_entry_set_text(GTK_ENTRY(value_edit), buf); + + gtk_window_set_position(GTK_WINDOW(dlg), GTK_WIN_POS_CENTER); + gtk_widget_show_all(dlg); + + if (gtk_dialog_run(GTK_DIALOG(dlg)) == GTK_RESPONSE_ACCEPT) { + val = 0; + sscanf(gtk_entry_get_text(GTK_ENTRY(value_edit)), "%u", &val); + + switch (current_searchtype) { + case SEARCHTYPE_8BIT: + if (val > 0xFF) { + val = 0xFF; + } + psxMemWrite8(addr, (u8)val); + break; + + case SEARCHTYPE_16BIT: + if (val > 0xFFFF) { + val = 0xFFFF; + } + psxMemWrite16(addr, (u16)val); + break; + + case SEARCHTYPE_32BIT: + psxMemWrite32(addr, (u32)val); + break; + + default: + assert(FALSE); // should not reach here + break; + } + + UpdateCheatSearchDialog(); + } + + gtk_widget_destroy(dlg); +} + +// copy the selected address to clipboard +static void OnCheatSearchDlg_CopyClicked(GtkWidget *widget, gpointer user_data) { + int i; + char buf[9]; + + i = GetSelectedResultIndex(); + assert(i != -1); + + sprintf(buf, "%8X", SearchResults[i]); + buf[8] = '\0'; + + gtk_clipboard_set_text(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD), buf, 8); +} + +// preform the search +static void OnCheatSearchDlg_SearchClicked(GtkWidget *widget, gpointer user_data) { + GladeXML *xml; + + xml = glade_get_widget_tree(CheatSearchDlg); + + current_search = gtk_combo_box_get_active(GTK_COMBO_BOX(glade_xml_get_widget(xml, "combo_searchfor"))); + current_searchtype = gtk_combo_box_get_active(GTK_COMBO_BOX(glade_xml_get_widget(xml, "combo_datatype"))); + current_searchbase = gtk_combo_box_get_active(GTK_COMBO_BOX(glade_xml_get_widget(xml, "combo_database"))); + current_valuefrom = 0; + current_valueto = 0; + + if (current_searchbase == SEARCHBASE_DEC) { + sscanf(gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(xml, "entry_value"))), "%u", ¤t_valuefrom); + sscanf(gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(xml, "entry_valueto"))), "%u", ¤t_valueto); + } + else { + sscanf(gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(xml, "entry_value"))), "%x", ¤t_valuefrom); + sscanf(gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(xml, "entry_valueto"))), "%x", ¤t_valueto); + } + + switch (current_searchtype) { + case SEARCHTYPE_8BIT: + if (current_valuefrom > (u32)0xFF) { + current_valuefrom = 0xFF; + } + if (current_valueto > (u32)0xFF) { + current_valueto = 0xFF; + } + break; + + case SEARCHTYPE_16BIT: + if (current_valuefrom > (u32)0xFFFF) { + current_valuefrom = 0xFFFF; + } + if (current_valueto > (u32)0xFFFF) { + current_valueto = 0xFFFF; + } + break; + } + + if (current_search == SEARCH_RANGE && current_valuefrom > current_valueto) { + u32 t = current_valuefrom; + current_valuefrom = current_valueto; + current_valueto = t; + } + + switch (current_search) { + case SEARCH_EQUALVAL: + switch (current_searchtype) { + case SEARCHTYPE_8BIT: + CheatSearchEqual8((u8)current_valuefrom); + break; + + case SEARCHTYPE_16BIT: + CheatSearchEqual16((u16)current_valuefrom); + break; + + case SEARCHTYPE_32BIT: + CheatSearchEqual32((u32)current_valuefrom); + break; + } + break; + + case SEARCH_NOTEQUALVAL: + switch (current_searchtype) { + case SEARCHTYPE_8BIT: + CheatSearchNotEqual8((u8)current_valuefrom); + break; + + case SEARCHTYPE_16BIT: + CheatSearchNotEqual16((u16)current_valuefrom); + break; + + case SEARCHTYPE_32BIT: + CheatSearchNotEqual32((u32)current_valuefrom); + break; + } + break; + + case SEARCH_RANGE: + switch (current_searchtype) { + case SEARCHTYPE_8BIT: + CheatSearchRange8((u8)current_valuefrom, (u8)current_valueto); + break; + + case SEARCHTYPE_16BIT: + CheatSearchRange16((u16)current_valuefrom, (u16)current_valueto); + break; + + case SEARCHTYPE_32BIT: + CheatSearchRange32((u32)current_valuefrom, (u32)current_valueto); + break; + } + break; + + case SEARCH_INCBY: + switch (current_searchtype) { + case SEARCHTYPE_8BIT: + CheatSearchIncreasedBy8((u8)current_valuefrom); + break; + + case SEARCHTYPE_16BIT: + CheatSearchIncreasedBy16((u16)current_valuefrom); + break; + + case SEARCHTYPE_32BIT: + CheatSearchIncreasedBy32((u32)current_valuefrom); + break; + } + break; + + case SEARCH_DECBY: + switch (current_searchtype) { + case SEARCHTYPE_8BIT: + CheatSearchDecreasedBy8((u8)current_valuefrom); + break; + + case SEARCHTYPE_16BIT: + CheatSearchDecreasedBy16((u16)current_valuefrom); + break; + + case SEARCHTYPE_32BIT: + CheatSearchDecreasedBy32((u32)current_valuefrom); + break; + } + break; + + case SEARCH_INC: + switch (current_searchtype) { + case SEARCHTYPE_8BIT: + CheatSearchIncreased8(); + break; + + case SEARCHTYPE_16BIT: + CheatSearchIncreased16(); + break; + + case SEARCHTYPE_32BIT: + CheatSearchIncreased32(); + break; + } + break; + + case SEARCH_DEC: + switch (current_searchtype) { + case SEARCHTYPE_8BIT: + CheatSearchDecreased8(); + break; + + case SEARCHTYPE_16BIT: + CheatSearchDecreased16(); + break; + + case SEARCHTYPE_32BIT: + CheatSearchDecreased32(); + break; + } + break; + + case SEARCH_DIFFERENT: + switch (current_searchtype) { + case SEARCHTYPE_8BIT: + CheatSearchDifferent8(); + break; + + case SEARCHTYPE_16BIT: + CheatSearchDifferent16(); + break; + + case SEARCHTYPE_32BIT: + CheatSearchDifferent32(); + break; + } + break; + + case SEARCH_NOCHANGE: + switch (current_searchtype) { + case SEARCHTYPE_8BIT: + CheatSearchNoChange8(); + break; + + case SEARCHTYPE_16BIT: + CheatSearchNoChange16(); + break; + + case SEARCHTYPE_32BIT: + CheatSearchNoChange32(); + break; + } + break; + + default: + assert(FALSE); // not possible + break; + } + + UpdateCheatSearchDialog(); +} + +// restart the search +static void OnCheatSearchDlg_RestartClicked(GtkWidget *widget, gpointer user_data) { + FreeCheatSearchResults(); + FreeCheatSearchMem(); + + current_search = SEARCH_EQUALVAL; + current_searchtype = SEARCHTYPE_8BIT; + current_searchbase = SEARCHBASE_DEC; + current_valuefrom = 0; + current_valueto = 0; + + UpdateCheatSearchDialog(); +} + +// close the cheat search window +static void OnCheatSearchDlg_CloseClicked(GtkWidget *widget, gpointer user_data) { + gtk_widget_destroy(CheatSearchDlg); + CheatSearchDlg = NULL; +} + +static void OnCheatSearchDlg_SearchForChanged(GtkWidget *widget, gpointer user_data) { + GladeXML *xml; + + xml = glade_get_widget_tree(CheatSearchDlg); + + if (gtk_combo_box_get_active(GTK_COMBO_BOX(widget)) == SEARCH_RANGE) { + gtk_widget_show(GTK_WIDGET(glade_xml_get_widget(xml, "label_valueto"))); + gtk_widget_show(GTK_WIDGET(glade_xml_get_widget(xml, "entry_valueto"))); + } + else { + gtk_widget_hide(GTK_WIDGET(glade_xml_get_widget(xml, "label_valueto"))); + gtk_widget_hide(GTK_WIDGET(glade_xml_get_widget(xml, "entry_valueto"))); + } + + if (gtk_combo_box_get_active(GTK_COMBO_BOX(widget)) >= SEARCH_INC) { + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "entry_value")), FALSE); + } + else { + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "entry_value")), TRUE); + } + + if (gtk_combo_box_get_active(GTK_COMBO_BOX(widget)) >= SEARCH_INCBY && prevM == NULL) { + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btn_start")), FALSE); + } + else { + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btn_start")), TRUE); + } +} + +static void OnCheatSearchDlg_DataBaseChanged(GtkWidget *widget, gpointer user_data) { + u32 val; + char buf[256]; + GladeXML *xml; + + xml = glade_get_widget_tree(CheatSearchDlg); + + if (gtk_combo_box_get_active(GTK_COMBO_BOX(widget)) == SEARCHBASE_DEC) { + val = 0; + sscanf(gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(xml, "entry_value"))), "%x", &val); + sprintf(buf, "%u", val); + gtk_entry_set_text(GTK_ENTRY(glade_xml_get_widget(xml, "entry_value")), buf); + + val = 0; + sscanf(gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(xml, "entry_valueto"))), "%x", &val); + sprintf(buf, "%u", val); + gtk_entry_set_text(GTK_ENTRY(glade_xml_get_widget(xml, "entry_valueto")), buf); + } + else { + val = 0; + sscanf(gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(xml, "entry_value"))), "%u", &val); + sprintf(buf, "%X", val); + gtk_entry_set_text(GTK_ENTRY(glade_xml_get_widget(xml, "entry_value")), buf); + + val = 0; + sscanf(gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(xml, "entry_valueto"))), "%u", &val); + sprintf(buf, "%X", val); + gtk_entry_set_text(GTK_ENTRY(glade_xml_get_widget(xml, "entry_valueto")), buf); + } +} + +static void CheatSearch_TreeSelectionChanged(GtkTreeSelection *selection, gpointer user_data) { + GladeXML *xml; + + xml = glade_get_widget_tree(CheatSearchDlg); + + if (GetSelectedResultIndex() != -1) { + // If a row was selected, we can now enable some of the disabled widgets + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btn_freeze")), TRUE); + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btn_modify")), TRUE); + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btn_copy")), TRUE); + } else { + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btn_freeze")), FALSE); + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btn_modify")), FALSE); + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btn_copy")), FALSE); + } +} + +// run the cheat search dialog +void RunCheatSearchDialog() { + GladeXML *xml; + GtkWidget *widget; + GtkCellRenderer *renderer; + GtkTreeSelection *treesel; + GtkTreeViewColumn *column; + + xml = glade_xml_new(PACKAGE_DATA_DIR "pcsx.glade2", "CheatSearchDlg", NULL); + if (!xml) { + g_warning(_("Error: Glade interface could not be loaded!")); + return; + } + + CheatSearchDlg = glade_xml_get_widget(xml, "CheatSearchDlg"); + gtk_window_set_title(GTK_WINDOW(CheatSearchDlg), _("Cheat Search")); + + widget = glade_xml_get_widget(xml, "GtkCList_Result"); + + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes(_("Search Results"), + renderer, "text", 0, NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(widget), column); + + treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)); + gtk_tree_selection_set_mode (treesel, GTK_SELECTION_SINGLE); + g_signal_connect_data(G_OBJECT(treesel), "changed", + G_CALLBACK(CheatSearch_TreeSelectionChanged), + NULL, NULL, G_CONNECT_AFTER); + + UpdateCheatSearchDialog(); + + widget = glade_xml_get_widget(xml, "btn_freeze"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnCheatSearchDlg_FreezeClicked), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btn_modify"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnCheatSearchDlg_ModifyClicked), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btn_copy"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnCheatSearchDlg_CopyClicked), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btn_start"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnCheatSearchDlg_SearchClicked), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btn_restart"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnCheatSearchDlg_RestartClicked), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "combo_searchfor"); + g_signal_connect_data(GTK_OBJECT(widget), "changed", + GTK_SIGNAL_FUNC(OnCheatSearchDlg_SearchForChanged), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "combo_database"); + g_signal_connect_data(GTK_OBJECT(widget), "changed", + GTK_SIGNAL_FUNC(OnCheatSearchDlg_DataBaseChanged), xml, NULL, G_CONNECT_AFTER); + + g_signal_connect_data(GTK_OBJECT(CheatSearchDlg), "response", + GTK_SIGNAL_FUNC(OnCheatSearchDlg_CloseClicked), xml, (GClosureNotify)g_object_unref, G_CONNECT_AFTER); +} diff --git a/gui/Cheat.h b/gui/Cheat.h new file mode 100644 index 0000000..f0990af --- /dev/null +++ b/gui/Cheat.h @@ -0,0 +1,25 @@ +/* Cheat Support for PCSX-Reloaded + * Copyright (C) 2009, Wei Mingzhi . + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA + */ + +#ifndef GUI_CHEAT_H +#define GUI_CHEAT_H + +void RunCheatListDialog(); +void RunCheatSearchDialog(); + +#endif diff --git a/gui/ConfDlg.c b/gui/ConfDlg.c new file mode 100644 index 0000000..6b2aee4 --- /dev/null +++ b/gui/ConfDlg.c @@ -0,0 +1,889 @@ +/* Pcsx - Pc Psx Emulator + * Copyright (C) 1999-2002 Pcsx Team + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "Linux.h" +#include "ConfDlg.h" + +#include "../libpcsxcore/plugins.h" + +static void OnBiosPath_Changed(GtkWidget *wdg, gpointer data); +static void OnConf_Clicked(GtkDialog *dialog, gint arg1, gpointer user_data); +static void OnPluginPath_Changed(GtkWidget *wdg, gpointer data); +static void OnConfConf_Pad1About(GtkWidget *widget, gpointer user_data); +static void OnConfConf_Pad2About(GtkWidget *widget, gpointer user_data); +static void OnConfConf_Pad1Conf(GtkWidget *widget, gpointer user_data); +static void OnConfConf_Pad2Conf(GtkWidget *widget, gpointer user_data); +static void OnNet_Conf(GtkWidget *widget, gpointer user_data); +static void OnNet_About(GtkWidget *widget, gpointer user_data); +static void on_configure_plugin(GtkWidget *widget, gpointer user_data); +static void on_about_plugin(GtkWidget *widget, gpointer user_data); +static void UpdatePluginsBIOS_UpdateGUI(GladeXML *xml); +static void FindNetPlugin(GladeXML *xml); + +PSEgetLibType PSE_getLibType = NULL; +PSEgetLibVersion PSE_getLibVersion = NULL; +PSEgetLibName PSE_getLibName = NULL; + +GtkWidget *ConfDlg = NULL; +GtkWidget *NetDlg = NULL; +GtkWidget *controlwidget = NULL; + +PluginConf GpuConfS; +PluginConf SpuConfS; +PluginConf CdrConfS; +PluginConf Pad1ConfS; +PluginConf Pad2ConfS; +PluginConf NetConfS; +PluginConf BiosConfS; + +#define FindComboText(combo, list, conf) \ + if (strlen(conf) > 0) { \ + int i; \ + for (i = 2; i < 255; i += 2) { \ + if (!strcmp(conf, list[i - 2])) { \ + gtk_combo_box_set_active(GTK_COMBO_BOX(combo), i / 2 - 1); \ + break; \ + } \ + } \ + } + +#define GetComboText(combo, list, conf) \ + { \ + int row; \ + row = gtk_combo_box_get_active(GTK_COMBO_BOX(combo)); \ + strcpy(conf, (char *)list[row * 2]); \ + } + +void ConfigurePlugins() { + if (!UseGui) { + /* How do we get here if we're not running the GUI? */ + /* Ryan: we're going to imagine that someday, there will be a way + * to configure plugins from the commandline */ + printf("ERROR: Plugins cannot be configured without the GUI."); + return; + } + + GladeXML *xml; + GtkWidget *widget; + + gchar *path; + + UpdatePluginsBIOS(); + + xml = glade_xml_new(PACKAGE_DATA_DIR "pcsx.glade2", "ConfDlg", NULL); + + if (!xml) { + g_warning(_("Error: Glade interface could not be loaded!")); + return; + } + + UpdatePluginsBIOS_UpdateGUI(xml); + + ConfDlg = glade_xml_get_widget(xml, "ConfDlg"); + + gtk_window_set_title(GTK_WINDOW(ConfDlg), _("Configure PCSX")); + + /* Set the paths in the file choosers to be based on the saved configurations */ + widget = glade_xml_get_widget(xml, "GtkFileChooser_Bios"); + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (widget), Config.BiosDir); + + widget = glade_xml_get_widget(xml, "GtkFileChooser_Plugin"); + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (widget), Config.PluginsDir); + + if (strlen(Config.PluginsDir) == 0) { + if((path = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (widget))) != NULL) { + strcpy(Config.PluginsDir, path); + g_free(path); + } + } + + widget = glade_xml_get_widget(xml, "btn_ConfGpu"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(on_configure_plugin), (gpointer) PSE_LT_GPU, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btn_ConfSpu"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(on_configure_plugin), (gpointer) PSE_LT_SPU, NULL, G_CONNECT_AFTER); + + /* ADB TODO Does pad 1 and 2 need to be different? */ + widget = glade_xml_get_widget(xml, "btn_ConfPad1"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnConfConf_Pad1Conf), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btn_ConfPad2"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnConfConf_Pad2Conf), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btn_ConfCdr"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(on_configure_plugin), (gpointer) PSE_LT_CDR, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btn_AboutGpu"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(on_about_plugin), (gpointer) PSE_LT_GPU, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btn_AboutSpu"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(on_about_plugin), (gpointer) PSE_LT_SPU, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btn_AboutPad1"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnConfConf_Pad1About), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btn_AboutPad2"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnConfConf_Pad2About), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btn_AboutCdr"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(on_about_plugin), (gpointer) PSE_LT_CDR, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "GtkFileChooser_Bios"); + g_signal_connect_data(GTK_OBJECT(widget), "current_folder_changed", + GTK_SIGNAL_FUNC(OnBiosPath_Changed), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "GtkFileChooser_Plugin"); + g_signal_connect_data(GTK_OBJECT(widget), "current_folder_changed", + GTK_SIGNAL_FUNC(OnPluginPath_Changed), xml, NULL, G_CONNECT_AFTER); + + g_signal_connect_data(GTK_OBJECT(ConfDlg), "response", + GTK_SIGNAL_FUNC(OnConf_Clicked), xml, (GClosureNotify)g_object_unref, G_CONNECT_AFTER); +} + +void OnNet_Clicked(GtkDialog *dialog, gint arg1, gpointer user_data) { + GetComboText(NetConfS.Combo, NetConfS.plist, Config.Net); + SaveConfig(); + gtk_widget_destroy(GTK_WIDGET(dialog)); + NetDlg = NULL; +} + +void OnConf_Net() { + GladeXML *xml; + GtkWidget *widget; + + if (NetDlg != NULL) { + gtk_window_present (GTK_WINDOW (NetDlg)); + return; + } + + xml = glade_xml_new(PACKAGE_DATA_DIR "pcsx.glade2", "NetDlg", NULL); + + if (!xml) { + g_warning(_("Error: Glade interface could not be loaded!")); + return; + } + + NetDlg = glade_xml_get_widget(xml, "NetDlg"); + + FindNetPlugin(xml); + + /* Setup a handler for when Close or Cancel is clicked */ + g_signal_connect_data(GTK_OBJECT(NetDlg), "response", + GTK_SIGNAL_FUNC(OnNet_Clicked), xml, (GClosureNotify)g_object_unref, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btn_ConfNet"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnNet_Conf), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btn_AboutNet"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnNet_About), xml, NULL, G_CONNECT_AFTER); +} + +void OnConf_Graphics() { + void *drv; + GPUconfigure conf; + char Plugin[MAXPATHLEN]; + + sprintf(Plugin, "%s/%s", Config.PluginsDir, Config.Gpu); + drv = SysLoadLibrary(Plugin); + if (drv == NULL) { printf("Error with file %s\n", Plugin); return; } + + while (gtk_events_pending()) gtk_main_iteration(); + + conf = (GPUconfigure)SysLoadSym(drv, "GPUconfigure"); + if (conf != NULL) { + conf(); + } + else + SysInfoMessage (_("No configuration required"), _("This plugin doesn't need to be configured.")); + + SysCloseLibrary(drv); +} + +void OnConf_Sound() { + void *drv; + SPUconfigure conf; + char Plugin[MAXPATHLEN]; + + sprintf(Plugin, "%s/%s", Config.PluginsDir, Config.Spu); + drv = SysLoadLibrary(Plugin); + if (drv == NULL) { printf("Error with file %s\n", Plugin); return; } + + while (gtk_events_pending()) gtk_main_iteration(); + + conf = (GPUconfigure)SysLoadSym(drv, "SPUconfigure"); + if (conf != NULL) { + conf(); + } + else + SysInfoMessage (_("No configuration required"), _("This plugin doesn't need to be configured.")); + + SysCloseLibrary(drv); +} + +void OnConf_CdRom() { + void *drv; + CDRconfigure conf; + char Plugin[MAXPATHLEN]; + + sprintf(Plugin, "%s/%s", Config.PluginsDir, Config.Cdr); + drv = SysLoadLibrary(Plugin); + if (drv == NULL) { printf("Error with file %s\n", Plugin); return; } + + while (gtk_events_pending()) gtk_main_iteration(); + + conf = (GPUconfigure)SysLoadSym(drv, "CDRconfigure"); + if (conf != NULL) { + conf(); + } + else + SysInfoMessage (_("No configuration required"), _("This plugin doesn't need to be configured.")); + + SysCloseLibrary(drv); +} + +void OnConf_Pad() { + void *drv; + PADconfigure conf; + char Plugin[MAXPATHLEN]; + + sprintf(Plugin, "%s/%s", Config.PluginsDir, Config.Pad1); + drv = SysLoadLibrary(Plugin); + if (drv == NULL) { printf("Error with file %s\n", Plugin); return; } + + while (gtk_events_pending()) gtk_main_iteration(); + + conf = (GPUconfigure)SysLoadSym(drv, "PADconfigure"); + if (conf != NULL) { + conf(); + } + else + SysInfoMessage (_("No configuration required"), _("This plugin doesn't need to be configured.")); + + SysCloseLibrary(drv); + + if (strcmp(Config.Pad1, Config.Pad2) != 0) { + sprintf(Plugin, "%s/%s", Config.PluginsDir, Config.Pad2); + drv = SysLoadLibrary(Plugin); + if (drv == NULL) { printf("Error with file %s\n", Plugin); return; } + + while (gtk_events_pending()) gtk_main_iteration(); + + conf = (GPUconfigure)SysLoadSym(drv, "PADconfigure"); + if (conf != NULL) { + conf(); + } + + SysCloseLibrary(drv); + } +} + +static int all_config_set() { + int retval; + + if ((strlen(Config.Gpu) != 0) && + (strlen(Config.Spu) != 0) && + (strlen(Config.Cdr) != 0) && + (strlen(Config.Pad1) != 0) && + (strlen(Config.Pad2) != 0)) + retval = TRUE; + else + retval = FALSE; + + return retval; +} + +/* TODO Check whether configuration is required when we choose the plugin, and set the state of the + button appropriately. New gtk tooltip API should allow us to put a tooltip explanation for + disabled widgets */ +/* TODO If combo screen hasn't been opened and the user chooses the menu config option, confs.Combo will be null and cause a segfault */ +#define ConfPlugin(src, confs, plugin, name, parent) { \ + void *drv; \ + src conf; \ + gchar *filename; \ + \ + GetComboText(confs.Combo, confs.plist, plugin); \ + filename = g_build_filename (getenv("HOME"), PLUGINS_DIR, plugin, NULL); \ + /*printf("Configuring plugin %s\n", filename);*/ \ + drv = SysLoadLibrary(filename); \ + if (drv == NULL) {printf("Error with file %s\n", filename);return; } \ +\ + while (gtk_events_pending()) gtk_main_iteration(); \ + conf = (src) SysLoadSym(drv, name); \ + if (conf) { \ + conf(); \ + } else \ + SysInfoMessage (_("No configuration required"), _("This plugin doesn't need to be configured.")); \ + SysCloseLibrary(drv); \ + g_free (filename); \ +} + +static void on_configure_plugin(GtkWidget *widget, gpointer user_data) { + gint plugin_type = (int) user_data; + + while (gtk_events_pending()) + gtk_main_iteration(); + if (all_config_set() == TRUE) { + switch (plugin_type) { + case PSE_LT_GPU: + ConfPlugin(GPUconfigure, GpuConfS, Config.Gpu, "GPUconfigure", ConfDlg); + break; + case PSE_LT_SPU: + ConfPlugin(SPUconfigure, SpuConfS, Config.Spu, "SPUconfigure", ConfDlg); + break; + case PSE_LT_CDR: + ConfPlugin(CDRconfigure, CdrConfS, Config.Cdr, "CDRconfigure", ConfDlg); + break; + } + } else + ConfigurePlugins(); +} + +static void on_about_plugin(GtkWidget *widget, gpointer user_data) { + gint plugin_type = (int) user_data; + + while (gtk_events_pending()) + gtk_main_iteration(); + if (all_config_set() == TRUE) { + switch (plugin_type) { + case PSE_LT_GPU: + ConfPlugin(GPUconfigure, GpuConfS, Config.Gpu, "GPUabout", ConfDlg); + break; + case PSE_LT_SPU: + ConfPlugin(SPUconfigure, SpuConfS, Config.Spu, "SPUabout", ConfDlg); + break; + case PSE_LT_CDR: + ConfPlugin(CDRconfigure, CdrConfS, Config.Cdr, "CDRabout", ConfDlg); + break; + } + } else + ConfigurePlugins(); +} + +static void OnConfConf_Pad1About(GtkWidget *widget, gpointer user_data) { + ConfPlugin(PADabout, Pad1ConfS, Config.Pad1, "PADabout", ConfDlg); +} + +static void OnConfConf_Pad2About(GtkWidget *widget, gpointer user_data) { + ConfPlugin(PADabout, Pad2ConfS, Config.Pad2, "PADabout", ConfDlg); +} + +static void OnConfConf_Pad1Conf(GtkWidget *widget, gpointer user_data) { + ConfPlugin(PADabout, Pad1ConfS, Config.Pad1, "PADconfigure", ConfDlg); +} + +static void OnConfConf_Pad2Conf(GtkWidget *widget, gpointer user_data) { + ConfPlugin(PADabout, Pad2ConfS, Config.Pad2, "PADconfigure", ConfDlg); +} + +static void OnNet_Conf(GtkWidget *widget, gpointer user_data) { + ConfPlugin(NETconfigure, NetConfS, Config.Net, "NETconfigure", NetDlg); +} + +static void OnNet_About(GtkWidget *widget, gpointer user_data) { + ConfPlugin(NETabout, NetConfS, Config.Net, "NETabout", NetDlg); +} + +static void OnPluginPath_Changed(GtkWidget *wdg, gpointer data) { + gchar *path; + + path = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (wdg)); + strcpy(Config.PluginsDir, path); + UpdatePluginsBIOS(); + UpdatePluginsBIOS_UpdateGUI(data); + + g_free(path); +} + +static void OnBiosPath_Changed(GtkWidget *wdg, gpointer data) { + gchar *foldername; + + foldername = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (wdg)); + strcpy(Config.BiosDir, foldername); + + UpdatePluginsBIOS(); + UpdatePluginsBIOS_UpdateGUI(data); + + g_free(foldername); +} + +void OnConf_Clicked(GtkDialog *dialog, gint arg1, gpointer user_data) { + GetComboText(GpuConfS.Combo, GpuConfS.plist, Config.Gpu); + GetComboText(SpuConfS.Combo, SpuConfS.plist, Config.Spu); + GetComboText(CdrConfS.Combo, CdrConfS.plist, Config.Cdr); + GetComboText(Pad1ConfS.Combo, Pad1ConfS.plist, Config.Pad1); + GetComboText(Pad2ConfS.Combo, Pad2ConfS.plist, Config.Pad2); + GetComboText(BiosConfS.Combo, BiosConfS.plist, Config.Bios); + + SaveConfig(); + + gtk_widget_destroy(ConfDlg); + ConfDlg = NULL; +} + +#define ComboAddPlugin(type) { \ + type##ConfS.plugins += 2; \ + strcpy(type##ConfS.plist[type##ConfS.plugins - 1], name); \ + strcpy(type##ConfS.plist[type##ConfS.plugins - 2], ent->d_name); \ + type##ConfS.glist = g_list_append(type##ConfS.glist, type##ConfS.plist[type##ConfS.plugins-1]); \ +} + +void populate_combo_box(GtkWidget *widget, GList *list) { + GtkListStore *store; + GtkCellRenderer *renderer; + store = gtk_list_store_new(1, G_TYPE_STRING); + + // Clear existing data from combo box + gtk_cell_layout_clear(GTK_CELL_LAYOUT(widget)); + + renderer = gtk_cell_renderer_text_new(); + gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(widget), renderer, FALSE); + gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(widget), renderer, "text", 0); + + while (list != NULL) { + GtkTreeIter iter; + gtk_list_store_append(store, &iter); + gtk_list_store_set(store, &iter, 0, (char *)list->data, -1); + list = list->next; + } + + gtk_combo_box_set_model(GTK_COMBO_BOX(widget), GTK_TREE_MODEL(store)); +} + +#define ConfCreatePConf(name, type) \ + /* Populate the relevant combo widget with the list of plugins. \ + If no plugins available, disable the combo and its controls. \ + Note that the Bios plugin has no About/Conf control. */ \ + type##ConfS.Combo = glade_xml_get_widget(xml, "GtkCombo_" name); \ + if (type##ConfS.glist != NULL) { \ + populate_combo_box (type##ConfS.Combo, type##ConfS.glist); \ + FindComboText(type##ConfS.Combo, type##ConfS.plist, Config.type); \ + gtk_widget_set_sensitive (type##ConfS.Combo, TRUE); \ + if (g_ascii_strcasecmp (name, "Bios") != 0) { \ + controlwidget = glade_xml_get_widget(xml, "btn_Conf" name); \ + gtk_widget_set_sensitive (controlwidget, TRUE); \ + controlwidget = glade_xml_get_widget(xml, "btn_About" name); \ + gtk_widget_set_sensitive (controlwidget, TRUE); \ + } \ + } else { \ + if (g_ascii_strcasecmp (name, "Bios") != 0) { \ + gtk_cell_layout_clear (GTK_CELL_LAYOUT (type##ConfS.Combo)); \ + gtk_widget_set_sensitive (type##ConfS.Combo, FALSE); \ + controlwidget = glade_xml_get_widget(xml, "btn_Conf" name); \ + gtk_widget_set_sensitive (controlwidget, FALSE); \ + controlwidget = glade_xml_get_widget(xml, "btn_About" name); \ + gtk_widget_set_sensitive (controlwidget, FALSE); \ + } \ + } + +int plugin_is_available(gchar *plugin) { + int retval; + gchar *pluginfile; + struct stat stbuf; + + pluginfile = g_strconcat(getenv("HOME"), PLUGINS_DIR, plugin, NULL); + + if (stat(pluginfile, &stbuf) == -1) + retval = FALSE; + else + retval = TRUE; + + g_free(pluginfile); + + return retval; +} + +int plugins_configured() { + // make sure there are choices for all of the plugins!! + if (all_config_set() == FALSE) + return FALSE; + + // and make sure they can all be accessed + // if they can't be, wipe the variable and return FALSE + if (plugin_is_available (Config.Gpu) == FALSE) { Config.Gpu[0] = '\0'; return FALSE; } + if (plugin_is_available (Config.Spu) == FALSE) { Config.Spu[0] = '\0'; return FALSE; } + if (plugin_is_available (Config.Cdr) == FALSE) { Config.Cdr[0] = '\0'; return FALSE; } + if (plugin_is_available (Config.Pad1) == FALSE) { Config.Pad1[0] = '\0'; return FALSE; } + if (plugin_is_available (Config.Pad2) == FALSE) { Config.Pad2[0] = '\0'; return FALSE; } + + // if everything is happy, return TRUE + return TRUE; +} + +int is_valid_bios_file(gchar *filename) { + int valid; + struct stat buf; + + if ((stat(filename, &buf) == -1) || (buf.st_size != (1024*512))) + valid = FALSE; + else { + valid = TRUE; + } + + return valid; +} + +// Add the name of the BIOS file to the drop-down list. This will +// be the filename, not the full path to the file +void add_bios_to_list(gchar *bios_name, gchar *internal_name) { + BiosConfS.plugins += 2; + strcpy(BiosConfS.plist[BiosConfS.plugins - 1], bios_name); + strcpy(BiosConfS.plist[BiosConfS.plugins - 2], internal_name); + BiosConfS.glist = g_list_append(BiosConfS.glist, BiosConfS.plist[BiosConfS.plugins - 1]); +} + +void scan_bios_dir(gchar *dirname) { + DIR *dir; + struct dirent *ent; + gchar *filename; + + dir = opendir(dirname); + if (dir == NULL) { + SysMessage(_("Could not open BIOS directory: '%s'\n"), dirname); + return; + } + + while ((ent = readdir(dir)) != NULL) { + filename = g_build_filename(dirname, ent->d_name, NULL); + if (is_valid_bios_file(filename)) + add_bios_to_list(g_path_get_basename(filename), g_path_get_basename (filename)); + g_free(filename); + } + closedir(dir); +} + +void UpdatePluginsBIOS() { + DIR *dir; + struct dirent *ent; + void *Handle; + char name[256]; + gchar *linkname; + + GpuConfS.plugins = 0; SpuConfS.plugins = 0; CdrConfS.plugins = 0; + Pad1ConfS.plugins = 0; Pad2ConfS.plugins = 0; BiosConfS.plugins = 0; + GpuConfS.glist = NULL; SpuConfS.glist = NULL; CdrConfS.glist = NULL; + Pad1ConfS.glist = NULL; Pad2ConfS.glist = NULL; BiosConfS.glist = NULL; + GpuConfS.plist[0][0] = '\0'; SpuConfS.plist[0][0] = '\0'; CdrConfS.plist[0][0] = '\0'; + Pad1ConfS.plist[0][0] = '\0'; Pad2ConfS.plist[0][0] = '\0'; BiosConfS.plist[0][0] = '\0'; + + // Load and get plugin info + dir = opendir(Config.PluginsDir); + if (dir == NULL) { + printf(_("Could not open directory: '%s'\n"), Config.PluginsDir); + return; + } + while ((ent = readdir(dir)) != NULL) { + long type, v; + linkname = g_build_filename(Config.PluginsDir, ent->d_name, NULL); + + // only libraries past this point, not config tools + if (strstr(linkname, ".so") == NULL && strstr(linkname, ".dylib") == NULL) + continue; + + Handle = dlopen(linkname, RTLD_NOW); + if (Handle == NULL) { + printf("%s\n", dlerror()); + g_free(linkname); + continue; + } + + PSE_getLibType = (PSEgetLibType)dlsym(Handle, "PSEgetLibType"); + if (PSE_getLibType == NULL) { + if (strstr(linkname, "gpu") != NULL) type = PSE_LT_GPU; + else if (strstr(linkname, "cdr") != NULL) type = PSE_LT_CDR; + else if (strstr(linkname, "spu") != NULL) type = PSE_LT_SPU; + else if (strstr(linkname, "pad") != NULL) type = PSE_LT_PAD; + else { g_free(linkname); continue; } + } + else type = PSE_getLibType(); + + PSE_getLibName = (PSEgetLibName) dlsym(Handle, "PSEgetLibName"); + if (PSE_getLibName != NULL) { + sprintf(name, "%s", PSE_getLibName()); + PSE_getLibVersion = (PSEgetLibVersion) dlsym(Handle, "PSEgetLibVersion"); + if (PSE_getLibVersion != NULL) { + char ver[32]; + + v = PSE_getLibVersion(); + sprintf(ver, " %ld.%ld.%ld", v >> 16, (v >> 8) & 0xff, v & 0xff); + strcat(name, ver); + } + } + else strcpy(name, ent->d_name); + + if (type & PSE_LT_CDR) + ComboAddPlugin(Cdr); + if (type & PSE_LT_GPU) + ComboAddPlugin(Gpu); + if (type & PSE_LT_SPU) + ComboAddPlugin(Spu); + if (type & PSE_LT_PAD) { + PADquery query = (PADquery)dlsym(Handle, "PADquery"); + if (query() & 0x1) { + ComboAddPlugin(Pad1); + } + if (query() & 0x2) { + ComboAddPlugin(Pad2); + } + } + g_free(linkname); + } + closedir(dir); + + scan_bios_dir(Config.BiosDir); + + // The BIOS list always contains the PCSX internal BIOS + add_bios_to_list(_("Simulate PSX BIOS"), "HLE"); +} + +static void UpdatePluginsBIOS_UpdateGUI(GladeXML *xml) { + // Populate the plugin combo boxes + ConfCreatePConf("Gpu", Gpu); + ConfCreatePConf("Spu", Spu); + ConfCreatePConf("Pad1", Pad1); + ConfCreatePConf("Pad2", Pad2); + ConfCreatePConf("Cdr", Cdr); + ConfCreatePConf("Bios", Bios); +} + +static void FindNetPlugin(GladeXML *xml) { + DIR *dir; + struct dirent *ent; + void *Handle; + char plugin[MAXPATHLEN],name[MAXPATHLEN]; + + NetConfS.plugins = 0; + NetConfS.glist = NULL; + + NetConfS.plugins += 2; + strcpy(NetConfS.plist[NetConfS.plugins - 1], "Disabled"); + strcpy(NetConfS.plist[NetConfS.plugins - 2], "Disabled"); + NetConfS.glist = g_list_append(NetConfS.glist, NetConfS.plist[NetConfS.plugins - 1]); + + dir = opendir(Config.PluginsDir); + if (dir == NULL) + SysMessage(_("Could not open directory: '%s'\n"), Config.PluginsDir); + else { + /* ADB TODO Replace the following with a function */ + while ((ent = readdir(dir)) != NULL) { + long type, v; + + sprintf(plugin, "%s/%s", Config.PluginsDir, ent->d_name); + + if (strstr(plugin, ".so") == NULL && strstr(plugin, ".dylib") == NULL) + continue; + Handle = dlopen(plugin, RTLD_NOW); + if (Handle == NULL) continue; + + PSE_getLibType = (PSEgetLibType) dlsym(Handle, "PSEgetLibType"); + if (PSE_getLibType == NULL) { + if (strstr(plugin, "net") != NULL) type = PSE_LT_NET; + else continue; + } + else type = PSE_getLibType(); + + PSE_getLibName = (PSEgetLibName) dlsym(Handle, "PSEgetLibName"); + if (PSE_getLibName != NULL) { + sprintf(name, "%s", PSE_getLibName()); + PSE_getLibVersion = (PSEgetLibVersion) dlsym(Handle, "PSEgetLibVersion"); + if (PSE_getLibVersion != NULL) { + char ver[32]; + + v = PSE_getLibVersion(); + sprintf(ver, " %ld.%ld.%ld",v>>16,(v>>8)&0xff,v&0xff); + strcat(name, ver); + } + } + else strcpy(name, ent->d_name); + + if (type & PSE_LT_NET) { + ComboAddPlugin(Net); + } + } + closedir(dir); + + ConfCreatePConf("Net", Net); + } +} + +GtkWidget *CpuDlg; +GtkWidget *PsxCombo; +GList *psxglist; +char *psxtypes[] = { + "NTSC", + "PAL" +}; + +// When the auto-detect CPU type is selected, disable the NTSC/PAL selection +static void OnCpu_PsxAutoClicked (GtkWidget *widget, gpointer user_data) { + GtkWidget *combo; + GladeXML *xml = user_data; + combo = glade_xml_get_widget(xml, "GtkCombo_PsxType"); + + gtk_widget_set_sensitive (combo, + !(gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))); +} + +// When the interpreter core is deselected, disable the debugger checkbox +static void OnCpu_CpuClicked(GtkWidget *widget, gpointer user_data) { + GtkWidget *check; + GladeXML *xml = user_data; + check = glade_xml_get_widget(xml, "GtkCheckButton_Dbg"); + + // Debugger is only working with interpreter not recompiler, so let's set it + if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), FALSE); + + gtk_widget_set_sensitive (check, + gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))); +} + +void OnCpu_Clicked(GtkDialog *dialog, gint arg1, gpointer user_data) { + GtkWidget *widget; + GladeXML *xml = user_data; + int tmp; + long t; + + widget = glade_xml_get_widget(xml, "GtkCombo_PsxType"); + + // If nothing chosen, default to NTSC + tmp = gtk_combo_box_get_active (GTK_COMBO_BOX (widget)); + if (tmp == -1) + tmp = PSX_TYPE_NTSC; + + if (!strcmp("NTSC", psxtypes[tmp])) + Config.PsxType = PSX_TYPE_NTSC; + else + Config.PsxType = PSX_TYPE_PAL; + + Config.Xa = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Xa"))); + Config.Sio = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Sio"))); + Config.Mdec = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Mdec"))); + Config.Cdda = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_CDDA"))); + Config.PsxAuto = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_PsxAuto"))); + + t = Config.Debug; + Config.Debug = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Dbg"))); + if (t != Config.Debug) { + if (Config.Debug) StartDebugger(); + else StopDebugger(); + } + + t = Config.Cpu; + Config.Cpu = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Cpu"))); + if (t != Config.Cpu) { + psxCpu->Shutdown(); +#ifdef PSXREC + if (Config.Cpu == CPU_INTERPRETER) { + psxCpu = &psxInt; + } + else psxCpu = &psxRec; +#else + psxCpu = &psxInt; +#endif + if (psxCpu->Init() == -1) { + SysClose(); + exit(1); + } + psxCpu->Reset(); + } + + Config.PsxOut = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_PsxOut"))); + Config.SpuIrq = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_SpuIrq"))); + Config.RCntFix = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_RCntFix"))); + Config.VSyncWA = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_VSyncWA"))); + + SaveConfig(); + + gtk_widget_destroy(CpuDlg); + CpuDlg = NULL; +} + +void OnConf_Cpu() { + GladeXML *xml; + + xml = glade_xml_new(PACKAGE_DATA_DIR "pcsx.glade2", "CpuDlg", NULL); + + if (!xml) { + g_warning("We could not load the interface!"); + return; + } + + CpuDlg = glade_xml_get_widget(xml, "CpuDlg"); + + PsxCombo = glade_xml_get_widget(xml, "GtkCombo_PsxType"); + gtk_combo_box_set_active(GTK_COMBO_BOX (PsxCombo), Config.PsxType); + gtk_widget_set_sensitive(GTK_WIDGET (PsxCombo), !Config.PsxAuto); + + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Xa")), Config.Xa); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Sio")), Config.Sio); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Mdec")), Config.Mdec); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_CDDA")), Config.Cdda); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_PsxAuto")), Config.PsxAuto); + + g_signal_connect_data(GTK_OBJECT(glade_xml_get_widget(xml, "GtkCheckButton_PsxAuto")), "toggled", + GTK_SIGNAL_FUNC(OnCpu_PsxAutoClicked), xml, NULL, G_CONNECT_AFTER); + +#ifdef PSXREC + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "GtkCheckButton_Cpu")), Config.Cpu); + + g_signal_connect_data(GTK_OBJECT(glade_xml_get_widget(xml, "GtkCheckButton_Cpu")), "toggled", + GTK_SIGNAL_FUNC(OnCpu_CpuClicked), xml, NULL, G_CONNECT_AFTER); +#else + Config.Cpu = CPU_INTERPRETER; + + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "GtkCheckButton_Cpu")), TRUE); + gtk_widget_set_sensitive(GTK_WIDGET (glade_xml_get_widget(xml, "GtkCheckButton_Cpu")), FALSE); +#endif + + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "GtkCheckButton_Dbg")), Config.Cpu && Config.Debug); + gtk_widget_set_sensitive(GTK_WIDGET (glade_xml_get_widget(xml, "GtkCheckButton_Dbg")), Config.Cpu); + + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_PsxOut")), Config.PsxOut); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_SpuIrq")), Config.SpuIrq); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_RCntFix")), Config.RCntFix); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_VSyncWA")), Config.VSyncWA); + + // Setup a handler for when Close or Cancel is clicked + g_signal_connect_data(GTK_OBJECT(CpuDlg), "response", + GTK_SIGNAL_FUNC(OnCpu_Clicked), xml, (GClosureNotify)g_object_unref, G_CONNECT_AFTER); +} diff --git a/gui/ConfDlg.h b/gui/ConfDlg.h new file mode 100644 index 0000000..56afc28 --- /dev/null +++ b/gui/ConfDlg.h @@ -0,0 +1,50 @@ +/* Pcsx - Pc Psx Emulator + * Copyright (C) 1999-2002 Pcsx Team + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA + */ + +#ifndef CONFDLG_H +#define CONFDLG_H + +// Helper Functions +void UpdatePluginsBIOS(); + +// Functions Callbacks +void OnConf_Graphics(); +void OnConf_Sound(); +void OnConf_CdRom(); +void OnConf_Pad(); +void OnConf_Cpu(); +void OnConf_Net(); + +void ConfigurePlugins(); + +typedef struct { + GtkWidget *Combo; + GList *glist; + char plist[255][255]; /* TODO Comment this out */ + int plugins; /* TODO Comment this out and replace with glist count */ +} PluginConf; + +extern PluginConf GpuConfS; +extern PluginConf SpuConfS; +extern PluginConf CdrConfS; +extern PluginConf Pad1ConfS; +extern PluginConf Pad2ConfS; +extern PluginConf NetConfS; +extern PluginConf BiosConfS; + +#endif diff --git a/gui/Config.c b/gui/Config.c new file mode 100644 index 0000000..aff4f1e --- /dev/null +++ b/gui/Config.c @@ -0,0 +1,180 @@ +/* Pcsx - Pc Psx Emulator + * Copyright (C) 1999-2002 Pcsx Team + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA + */ + +#include +#include +#include +#include +#include + +#include "Linux.h" + +/* TODO escaping/unescaping would be nice, as would maxchars */ +static void GetValue(char *src, char *name, char *outvar) { + char *tmp; + + *outvar = 0; + tmp = strstr(src, name); + if (tmp == NULL) return; + + tmp += strlen(name); + while ((*tmp == ' ') || (*tmp == '=')) tmp++; + + while (*tmp != '\n' && *tmp != 0) + *outvar++ = *tmp++; + + *outvar = 0; + return; +} + +static long GetValuel(char *src, char *name) { + char *tmp = strstr(src, name); + if (tmp != NULL) { + tmp += strlen(name); + while ((*tmp == ' ') || (*tmp == '=')) tmp++; + if (*tmp != '\n') return atol(tmp); + } + return 0; +} + +static boolean GetValueb(char *src, char *name) { + char *tmp = strstr(src, name); + if (tmp != NULL) { + tmp += strlen(name); + while ((*tmp == ' ') || (*tmp == '=')) tmp++; + if (*tmp != '\n') return (atoi(tmp) != 0); + } + return FALSE; +} + +#define SetValue(name, var) \ + fprintf(f, "%s = %s\n", name, var); + +#define SetValuel(name, var) \ + fprintf(f, "%s = %x\n", name, var); + +#define SetValueb(name, var) \ + fprintf(f, "%s = %d\n", name, (var) ? 1 : 0); + +int LoadConfig(PcsxConfig *Conf) { + struct stat buf; + FILE *f; + int size; + char *data; + + /* TODO local var called cfgfile */ + + // Ryan says: use dotdir, dotdir is GOOD + // No giant homedir names + strncpy(cfgfile, getenv("HOME"), 200); + strcat(cfgfile, PCSX_DOT_DIR); + + // proceed to load the cfg file + // append its name + strcat(cfgfile, cfgfile_basename); + + // file is now ~/.pcsx/pcsx.cfg (or whatever cfgfile_basename is) + if (stat(cfgfile, &buf) == -1) { + // the config file doesn't exist! + /* TODO Error checking? */ + printf("Configuration file %s couldn't be found\n", cfgfile); + return -1; + } + + size = buf.st_size; + + /* TODO Error checking for the next two lines, and at least log failures */ + f = fopen(cfgfile, "r"); + if (f == NULL) return -1; + + data = (char *)malloc(size + 1); + if (data == NULL) return -1; + + fread(data, 1, buf.st_size, f); + fclose(f); + + data[size] = '\0'; + + GetValue(data, "Bios", Config.Bios); + GetValue(data, "Gpu", Config.Gpu); + GetValue(data, "Spu", Config.Spu); + GetValue(data, "Cdr", Config.Cdr); + GetValue(data, "Pad1", Config.Pad1); + GetValue(data, "Pad2", Config.Pad2); + GetValue(data, "Net", Config.Net); + GetValue(data, "Mcd1", Config.Mcd1); + GetValue(data, "Mcd2", Config.Mcd2); + GetValue(data, "BiosDir", Config.BiosDir); + GetValue(data, "PluginsDir", Config.PluginsDir); + + Config.Xa = GetValueb(data, "Xa"); + Config.Sio = GetValueb(data, "Sio"); + Config.Mdec = GetValueb(data, "Mdec"); + Config.PsxAuto = GetValueb(data, "PsxAuto"); + Config.Cdda = GetValueb(data, "Cdda"); + Config.Debug = GetValueb(data, "Dbg"); + Config.PsxOut = GetValueb(data, "PsxOut"); + Config.SpuIrq = GetValueb(data, "SpuIrq"); + Config.RCntFix = GetValueb(data, "RCntFix"); + Config.VSyncWA = GetValueb(data, "VSyncWA"); + + Config.Cpu = GetValuel(data, "Cpu"); + Config.PsxType = GetValuel(data, "PsxType"); + + free(data); + + return 0; +} + +void SaveConfig() { + FILE *f; + + /* TODO Error checking for the next two lines, and at least log + failures - suggest a file dialog to specify a new file or + create a new file */ + f = fopen(cfgfile, "w"); + if (f == NULL) return; + + SetValue("Bios", Config.Bios); + SetValue("Gpu", Config.Gpu); + SetValue("Spu", Config.Spu); + SetValue("Cdr", Config.Cdr); + SetValue("Net", Config.Net); + SetValue("Pad1", Config.Pad1); + SetValue("Pad2", Config.Pad2); + SetValue("Mcd1", Config.Mcd1); + SetValue("Mcd2", Config.Mcd2); + SetValue("BiosDir", Config.BiosDir); + SetValue("PluginsDir", Config.PluginsDir); + + SetValueb("Xa", Config.Xa); + SetValueb("Sio", Config.Sio); + SetValueb("Mdec", Config.Mdec); + SetValueb("PsxAuto", Config.PsxAuto); + SetValueb("Cdda", Config.Cdda); + SetValueb("Dbg", Config.Debug); + SetValueb("PsxOut", Config.PsxOut); + SetValueb("SpuIrq", Config.SpuIrq); + SetValueb("RCntFix", Config.RCntFix); + SetValueb("VSyncWA", Config.VSyncWA); + + SetValuel("Cpu", Config.Cpu); + SetValuel("PsxType", Config.PsxType); + + fclose(f); +} diff --git a/gui/DebugMemory.c b/gui/DebugMemory.c new file mode 100644 index 0000000..e001057 --- /dev/null +++ b/gui/DebugMemory.c @@ -0,0 +1,312 @@ +/* Memory Viewer/Dumper for PCSX-Reloaded + * Copyright (C) 2010, Wei Mingzhi . + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA + */ + +#include "Linux.h" +#include "../libpcsxcore/psxmem.h" +#include + +#define MEMVIEW_MAX_LINES 256 + +static GtkWidget *MemViewDlg = NULL; +static u32 MemViewAddress = 0; + +static void UpdateMemViewDlg() { + s32 start, end; + int i; + char bufaddr[9], bufdata[16][3], buftext[17]; + + GtkListStore *store = gtk_list_store_new(18, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING); + + GtkTreeIter iter; + GtkWidget *widget; + GladeXML *xml; + + xml = glade_get_widget_tree(MemViewDlg); + + MemViewAddress &= 0x1fffff; + + sprintf(buftext, "%.8X", MemViewAddress | 0x80000000); + widget = glade_xml_get_widget(xml, "entry_address"); + gtk_entry_set_text(GTK_ENTRY(widget), buftext); + + start = MemViewAddress & 0x1ffff0; + end = start + MEMVIEW_MAX_LINES * 16; + + if (end > 0x1fffff) end = 0x1fffff; + + widget = glade_xml_get_widget(xml, "GtkCList_MemView"); + + buftext[16] = '\0'; + + while (start < end) { + sprintf(bufaddr, "%.8X", start | 0x80000000); + + for (i = 0; i < 16; i++) { + buftext[i] = psxMs8(start + i); + sprintf(bufdata[i], "%.2X", (u8)buftext[i]); + if ((u8)buftext[i] < 32 || (u8)buftext[i] >= 127) + buftext[i] = '.'; + } + + gtk_list_store_append(store, &iter); + gtk_list_store_set(store, &iter, 0, bufaddr, 1, bufdata[0], + 2, bufdata[1], 3, bufdata[2], 4, bufdata[3], 5, bufdata[4], + 6, bufdata[5], 7, bufdata[6], 8, bufdata[7], 9, bufdata[8], + 10, bufdata[9], 11, bufdata[10], 12, bufdata[11], 13, bufdata[12], + 14, bufdata[13], 15, bufdata[14], 16, bufdata[15], 17, buftext, -1); + + start += 16; + } + + gtk_tree_view_set_model(GTK_TREE_VIEW(widget), GTK_TREE_MODEL(store)); + g_object_unref(G_OBJECT(store)); + gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(widget), TRUE); + gtk_widget_show(widget); +} + +static void MemView_Go() { + GtkWidget *widget; + GladeXML *xml; + + xml = glade_get_widget_tree(MemViewDlg); + widget = glade_xml_get_widget(xml, "entry_address"); + + sscanf(gtk_entry_get_text(GTK_ENTRY(widget)), "%x", &MemViewAddress); + + UpdateMemViewDlg(); +} + +static void MemView_Dump() { + GtkWidget *dlg; + GtkWidget *box, *table, *label, *start_edit, *length_edit; + char buf[10]; + + dlg = gtk_dialog_new_with_buttons(_("Memory Dump"), GTK_WINDOW(MemViewDlg), + GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); + + box = GTK_WIDGET(GTK_DIALOG(dlg)->vbox); + + table = gtk_table_new(2, 2, FALSE); + + label = gtk_label_new(_("Start Address (Hexadecimal):")); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, 0, 0, 5, 5); + gtk_widget_show(label); + + start_edit = gtk_entry_new_with_max_length(8); + sprintf(buf, "%.8X", MemViewAddress | 0x80000000); + gtk_entry_set_text(GTK_ENTRY(start_edit), buf); + gtk_table_attach(GTK_TABLE(table), start_edit, 1, 2, 0, 1, 0, 0, 5, 5); + gtk_widget_show(start_edit); + + label = gtk_label_new(_("Length (Decimal):")); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, 0, 0, 5, 5); + gtk_widget_show(label); + + length_edit = gtk_entry_new(); + gtk_table_attach(GTK_TABLE(table), length_edit, 1, 2, 1, 2, 0, 0, 5, 5); + gtk_widget_show(length_edit); + + gtk_box_pack_start(GTK_BOX(box), table, FALSE, FALSE, 5); + + gtk_window_set_position(GTK_WINDOW(dlg), GTK_WIN_POS_CENTER); + gtk_widget_show_all(dlg); + + if (gtk_dialog_run(GTK_DIALOG(dlg)) == GTK_RESPONSE_ACCEPT) { + s32 start = 0, length = 0; + + sscanf(gtk_entry_get_text(GTK_ENTRY(start_edit)), "%x", &start); + sscanf(gtk_entry_get_text(GTK_ENTRY(length_edit)), "%d", &length); + + start &= 0x1fffff; + + if (start + length > 0x1fffff) { + length = 0x1fffff - start; + } + + if (length > 0) { + GtkWidget *file_chooser = gtk_file_chooser_dialog_new(_("Dump to File"), + NULL, GTK_FILE_CHOOSER_ACTION_SAVE, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL); + + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(file_chooser), getenv("HOME")); + + if (gtk_dialog_run(GTK_DIALOG(file_chooser)) == GTK_RESPONSE_ACCEPT) { + gchar *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(file_chooser)); + FILE *fp = fopen(file, "wb"); + + if (fp != NULL) { + fwrite(&psxM[start], 1, length, fp); + fclose(fp); + } else { + SysMessage(_("Error writing to %s!"), file); + } + + g_free(file); + } + + gtk_widget_destroy(file_chooser); + } + } + + gtk_widget_destroy(dlg); +} + +static void MemView_Patch() { + GtkWidget *dlg; + GtkWidget *box, *table, *label, *addr_edit, *val_edit; + char buf[10]; + + dlg = gtk_dialog_new_with_buttons(_("Memory Patch"), GTK_WINDOW(MemViewDlg), + GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); + + box = GTK_WIDGET(GTK_DIALOG(dlg)->vbox); + + table = gtk_table_new(2, 2, FALSE); + + label = gtk_label_new(_("Address (Hexadecimal):")); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, 0, 0, 5, 5); + gtk_widget_show(label); + + addr_edit = gtk_entry_new_with_max_length(8); + sprintf(buf, "%.8X", MemViewAddress | 0x80000000); + gtk_entry_set_text(GTK_ENTRY(addr_edit), buf); + gtk_table_attach(GTK_TABLE(table), addr_edit, 1, 2, 0, 1, 0, 0, 5, 5); + gtk_widget_show(addr_edit); + + label = gtk_label_new(_("Value (Hexa string):")); + gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, 0, 0, 5, 5); + gtk_widget_show(label); + + val_edit = gtk_entry_new(); + gtk_table_attach(GTK_TABLE(table), val_edit, 1, 2, 1, 2, 0, 0, 5, 5); + gtk_widget_show(val_edit); + + gtk_box_pack_start(GTK_BOX(box), table, FALSE, FALSE, 5); + + gtk_window_set_position(GTK_WINDOW(dlg), GTK_WIN_POS_CENTER); + gtk_widget_show_all(dlg); + + if (gtk_dialog_run(GTK_DIALOG(dlg)) == GTK_RESPONSE_ACCEPT) { + u32 addr = 0xffffffff, val = 0; + const char *p = gtk_entry_get_text(GTK_ENTRY(val_edit)); + int r = strlen(p); + + sscanf(gtk_entry_get_text(GTK_ENTRY(addr_edit)), "%x", &addr); + + if (r > 0 && addr != 0xffffffff) { + addr &= 0x1fffff; + MemViewAddress = addr; + + while (r > 0 && addr <= 0x1fffff) { + sscanf(p, "%2x", &val); + p += 2; + r -= 2; + + while (r > 0 && (*p == '\t' || *p == ' ')) { + p++; + r--; + } + + psxMemWrite8(addr, (u8)val); + addr++; + } + + UpdateMemViewDlg(); + } + } + + gtk_widget_destroy(dlg); +} + +// close the memory viewer window +static void MemView_Close(GtkWidget *widget, gpointer user_data) { + gtk_widget_destroy(MemViewDlg); + MemViewDlg = NULL; +} + +void RunDebugMemoryDialog() { + GladeXML *xml; + GtkWidget *widget; + GtkCellRenderer *renderer; + GtkTreeViewColumn *column; + PangoFontDescription *pfd; + int i; + + xml = glade_xml_new(PACKAGE_DATA_DIR "pcsx.glade2", "MemViewDlg", NULL); + if (!xml) { + g_warning(_("Error: Glade interface could not be loaded!")); + return; + } + + MemViewDlg = glade_xml_get_widget(xml, "MemViewDlg"); + gtk_window_set_title(GTK_WINDOW(MemViewDlg), _("Memory Viewer")); + + widget = glade_xml_get_widget(xml, "GtkCList_MemView"); + + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes(_("Address"), + renderer, "text", 0, NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(widget), column); + + for (i = 0; i < 16; i++) { + const char *p = "0123456789ABCDEF"; + char buf[2]; + + buf[0] = p[i]; + buf[1] = '\0'; + + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes(buf, + renderer, "text", i + 1, NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(widget), column); + } + + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes(_("Text"), + renderer, "text", 17, NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(widget), column); + + pfd = pango_font_description_from_string("Bitstream Vera Sans Mono, " + "DejaVu Sans Mono, Liberation Mono, FreeMono, Sans Mono 9"); + gtk_widget_modify_font(widget, pfd); + pango_font_description_free(pfd); + + UpdateMemViewDlg(); + + widget = glade_xml_get_widget(xml, "btn_dump"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(MemView_Dump), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btn_patch"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(MemView_Patch), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btn_go"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(MemView_Go), xml, NULL, G_CONNECT_AFTER); + + g_signal_connect_data(GTK_OBJECT(MemViewDlg), "response", + GTK_SIGNAL_FUNC(MemView_Close), xml, (GClosureNotify)g_object_unref, G_CONNECT_AFTER); +} diff --git a/gui/DebugMemory.h b/gui/DebugMemory.h new file mode 100644 index 0000000..4967373 --- /dev/null +++ b/gui/DebugMemory.h @@ -0,0 +1,24 @@ +/* Memory Viewer/Dumper for PCSX-Reloaded + * Copyright (C) 2010, Wei Mingzhi . + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA + */ + +#ifndef DEBUGMEMORY_H +#define DEBUGMEMORY_H + +void RunDebugMemoryDialog(); + +#endif diff --git a/gui/Gtk2Gui.c b/gui/Gtk2Gui.c new file mode 100644 index 0000000..080b148 --- /dev/null +++ b/gui/Gtk2Gui.c @@ -0,0 +1,66 @@ +/* Pcsx - Pc Psx Emulator + * Copyright (C) 1999-2002 Pcsx Team + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Linux.h" + +#include "../libpcsxcore/plugins.h" +#include "../libpcsxcore/cheat.h" + + + +void OnFile_RunCd() { + + SysReset(); + + if (CheckCdrom() == -1) { + /* Only check the CD if we are starting the console with a CD */ + ClosePlugins(); + SysErrorMessage (_("CD ROM failed"), _("The CD does not appear to be a valid Playstation CD")); + SysRunGui(); + return; + } + + // Read main executable directly from CDRom and start it + if (LoadCdrom() == -1) { + ClosePlugins(); + SysErrorMessage(_("Could not load CD-ROM!"), _("The CD-ROM could not be loaded")); + SysRunGui(); + } + + psxCpu->Execute(); +} + + +void SysErrorMessage(char *primary, char *secondary) { + printf ("%s - %s\n", primary, secondary); +} + +void SysInfoMessage(char *primary, char *secondary) { + printf ("%s - %s\n", primary, secondary); +} diff --git a/gui/Linux.h b/gui/Linux.h new file mode 100644 index 0000000..a982c81 --- /dev/null +++ b/gui/Linux.h @@ -0,0 +1,59 @@ +/* Pcsx - Pc Psx Emulator + * Copyright (C) 1999-2002 Pcsx Team + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA + */ + +#ifndef __LINUX_H__ +#define __LINUX_H__ + +#include "config.h" + +#include "../libpcsxcore/psxcommon.h" + +//#include "Cheat.h" + +#define DEFAULT_MEM_CARD_1 "/.pcsx/memcards/card1.mcd" +#define DEFAULT_MEM_CARD_2 "/.pcsx/memcards/card2.mcd" +#define MEMCARD_DIR "/.pcsx/memcards/" +//#define PLUGINS_DIR "/.pcsx/plugins/" +//#define PLUGINS_CFG_DIR "/.pcsx/plugins/cfg/" +#define PCSX_DOT_DIR "/.pcsx/" +//#define BIOS_DIR "/.pcsx/bios/" +//#define STATES_DIR "/.pcsx/sstates/" +//#define CHEATS_DIR "/.pcsx/cheats/" +//#define PATCHES_DIR "/.pcsx/patches/" + +extern int StatesC; +char cfgfile[MAXPATHLEN]; /* ADB Comment this out - make a local var, or at least use gchar funcs */ +char cfgfile_basename[MAXPATHLEN]; /* ADB Comment this out - make a local var, or at least use gchar funcs */ + +int LoadConfig(); +void SaveConfig(); + +void StartGui(); + +void PADhandleKey(int key); + +void UpdateMenuSlots(); + +int plugins_configured(); + +void UpdatePluginsBIOS(); + +void SysErrorMessage(char *primary, char *secondary); +void SysInfoMessage(char *primary, char *secondary); + +#endif /* __LINUX_H__ */ diff --git a/gui/LnxMain.c b/gui/LnxMain.c new file mode 100644 index 0000000..affb7ea --- /dev/null +++ b/gui/LnxMain.c @@ -0,0 +1,165 @@ +/* Pcsx - Pc Psx Emulator + * Copyright (C) 1999-2002 Pcsx Team + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA + */ + +#include "config.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../libpcsxcore/sio.h" + +#include "Linux.h" + +static void CreateMemcard(char *filename, char *conf_mcd) { + struct stat buf; + strcpy(conf_mcd, getenv("HOME")); + strcat(conf_mcd, MEMCARD_DIR); + strcat(conf_mcd, filename); + /* Only create a memory card if an existing one does not exist */ + if (stat(conf_mcd, &buf) == -1) { + printf(_("Creating memory card: %s\n"), conf_mcd); + CreateMcd(conf_mcd); + } + +} +void execI(); +#ifdef __EMSCRIPTEN__ +#include +extern int updated_display; +void one_iter(){ + updated_display = 0; + while(!updated_display){ + execI(); + } +} +void run() __attribute__((used)); +int mainloop(const char *isofilename); +void run(){ + mainloop("_.bin"); +} +#endif + + +int mainloop(const char *isofilename) { + char file[MAXPATHLEN] = ""; + char path[MAXPATHLEN]; + int loadst = 0; + int i; + + SetIsoFile(isofilename); + memset(&Config, 0, sizeof(PcsxConfig)); + strcpy(Config.Net, "Disabled"); + Config.PsxAuto = 1; + strcpy(Config.Gpu, "./libDFXVideo.so"); + strcpy(Config.Spu, "./libspuPeteNull.so.1.0.1"); + strcpy(Config.Cdr, "Disabled"); + strcpy(Config.Pad1, "./libDFInput.so"); + strcpy(Config.Pad2, "./libDFInput.so"); + strcpy(Config.Bios, "HLE"); + Config.HLE = TRUE; + + // create & load default memcards if they don't exist + CreateMemcard("card1.mcd", Config.Mcd1); + CreateMemcard("card2.mcd", Config.Mcd2); + + LoadMcds(Config.Mcd1, Config.Mcd2); + // switch to plugin dotdir + // this lets plugins work without modification! + //chdir(plugin_default_dir); + + if (SysInit() == -1) return 1; + // the following only occurs if the gui isn't started + if (LoadPlugins() == -1) { + printf("Error Failed loading plugins!"); + return 1; + } + + if (OpenPlugins() == -1 ) { + return 1; + } + + SysReset(); + CheckCdrom(); + if (LoadCdrom() == -1) { + ClosePlugins(); + printf("Could not load CD-ROM!\n"); + return -1; + } + + + + + +#ifdef __EMSCRIPTEN__ + // void emscripten_set_main_loop(em_callback_func func, int fps, int simulate_infinite_loop); + emscripten_set_main_loop(one_iter, 0, 0); +#else + while (1) { + execI(); + } +#endif + + return 0; +} + +int SysInit() { + + if (EmuInit() == -1) { + printf(_("PSX emulator couldn't be initialized.\n")); + return -1; + } + LoadMcds(Config.Mcd1, Config.Mcd2); + return 0; +} + +void SysReset() { + EmuReset(); +} + +void SysClose() { + EmuShutdown(); + //ReleasePlugins(); +} + + +void SysUpdate() { + PADhandleKey(PAD1_keypressed()); + PADhandleKey(PAD2_keypressed()); +} + +int main(int argc, char *argv[]) { + char file[MAXPATHLEN] = ""; + char path[MAXPATHLEN]; + int loadst = 0; + int i; + +#ifdef __EMSCRIPTEN__ + emscripten_exit_with_live_runtime(); +#else + return mainloop(argv[1]); +#endif +} \ No newline at end of file diff --git a/gui/MemcardDlg.c b/gui/MemcardDlg.c new file mode 100644 index 0000000..31ec692 --- /dev/null +++ b/gui/MemcardDlg.c @@ -0,0 +1,755 @@ +/* Pcsx - Pc Psx Emulator + * Copyright (C) 1999-2002 Pcsx Team + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Linux.h" +#include "../libpcsxcore/sio.h" + +#define MAX_MEMCARD_BLOCKS 15 + +static gboolean quit; +static unsigned int currentIcon; + +McdBlock Blocks[2][MAX_MEMCARD_BLOCKS]; // Assuming 2 cards, 15 blocks? +int IconC[2][MAX_MEMCARD_BLOCKS]; +enum { + CL_ICON, + CL_TITLE, + CL_STAT, + CL_ID, + CL_NAME, + NUM_CL +}; + +GtkWidget *GtkCList_McdList1, *GtkCList_McdList2; + +static void AddColumns(GtkTreeView *treeview) { + GtkCellRenderer *renderer; + GtkTreeViewColumn *column; + + // column for icon + renderer = gtk_cell_renderer_pixbuf_new (); + column = gtk_tree_view_column_new_with_attributes(_("Icon"), + renderer, "pixbuf", CL_ICON, NULL); + gtk_tree_view_append_column(treeview, column); + + // column for title + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes(_("Title"), + renderer, "text", CL_TITLE, NULL); + gtk_tree_view_append_column(treeview, column); + + // column for status + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes(_("Status"), + renderer, "text", CL_STAT, NULL); + gtk_tree_view_append_column(treeview, column); + + // column for id + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes(_("ID"), + renderer, "text", CL_ID, NULL); + gtk_tree_view_append_column(treeview, column); + + // column for Name + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes(_("Name"), + renderer, "text", CL_NAME, NULL); + gtk_tree_view_append_column(treeview, column); +} + +static GdkPixbuf *SetIcon(GtkWidget *dialog, short *icon, int i) { + GdkPixmap *pixmap; + GdkImage *image; + GdkVisual *visual; + GdkPixbuf *pixbuf; + GdkGC *gc; + int x, y, c; + + visual = gdk_window_get_visual(dialog->window); + + if (visual->depth == 8) return NULL; + + image = gdk_image_new(GDK_IMAGE_NORMAL, visual, 32, 32); + + for (y = 0; y < 32; y++) { + for (x = 0; x < 32; x++) { + c = icon[(y>>1) * 16 + (x>>1)]; + c = ((c & 0x001f) << 10) | ((c & 0x7c00) >> 10) | (c & 0x03e0); + if (visual->depth == 16) + c = (c & 0x001f) | ((c & 0x7c00) << 1) | ((c & 0x03e0) << 1); + else if (visual->depth == 24 || visual->depth == 32) + c = ((c & 0x001f) << 3) | ((c & 0x03e0) << 6) | ((c & 0x7c00) << 9); + + gdk_image_put_pixel(image, x, y, c); + } + } + + pixmap = gdk_pixmap_new(dialog->window, 32, 32, visual->depth); + + gc = gdk_gc_new(pixmap); + gdk_draw_image(pixmap, gc, image, 0, 0, 0, 0, 32, 32); + gdk_gc_destroy(gc); + gdk_image_destroy(image); + + pixbuf = gdk_pixbuf_get_from_drawable(NULL, GDK_PIXMAP (pixmap), NULL, + 0, 0, 0, 0, -1, -1); + g_object_unref(pixmap); + + return pixbuf; +} + +static void LoadListItems(int mcd, GtkWidget *widget) { + int i; + GladeXML *xml; + GtkWidget *List; + GtkWidget *dialog; + GtkListStore *store; + GtkTreeIter iter; + GdkPixbuf *pixbuf; + gchar *title; + + store = gtk_list_store_new(NUM_CL, GDK_TYPE_PIXBUF, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); + + xml = glade_get_widget_tree(widget); + dialog = glade_xml_get_widget(xml, "McdsDlg"); + + if (mcd == 1) List = glade_xml_get_widget(xml, "GtkCList_McdList1"); + else List = glade_xml_get_widget(xml, "GtkCList_McdList2"); + + for (i = 0; i < MAX_MEMCARD_BLOCKS; i++) { + McdBlock *Info; + gchar *state; + + Info = &Blocks[mcd - 1][i]; + IconC[mcd - 1][i] = 0; + + if ((Info->Flags & 0xF0) == 0xA0) { + if ((Info->Flags & 0xF) >= 1 && + (Info->Flags & 0xF) <= 3) { + state = _("Deleted"); + } else + state = _("Free"); + } else if ((Info->Flags & 0xF0) == 0x50) + state = _("Used"); + else + state = _("Free"); + + pixbuf = SetIcon(dialog, Info->Icon, i + 1); + + gtk_list_store_append(store, &iter); + + title = g_convert(Info->sTitle, strlen(Info->sTitle), "UTF-8", + "Shift-JIS", NULL, NULL, NULL); + + gtk_list_store_set(store, &iter, + CL_ICON, pixbuf, + CL_TITLE, title, + CL_STAT, state, + CL_NAME, Info->Name, + CL_ID, Info->ID, + -1); + + g_free(title); + + g_object_unref(pixbuf); + } + + gtk_tree_view_set_model(GTK_TREE_VIEW(List), GTK_TREE_MODEL(store)); + g_object_unref(G_OBJECT(store)); + gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(List), TRUE); + gtk_widget_show(List); +} + +static void UpdateFilenameButtons(GtkWidget *widget) { + int i; + GladeXML *xml; + GtkWidget *dialog; + const char *filename; + gchar *p; + + xml = glade_get_widget_tree(widget); + dialog = glade_xml_get_widget(xml, "McdsDlg"); + + for (i = 0; i < 2; i++) { + if (i == 0) { + widget = glade_xml_get_widget(xml, "Mcd1Label"); + filename = Config.Mcd1; + } else { + widget = glade_xml_get_widget(xml, "Mcd2Label"); + filename = Config.Mcd2; + } + + p = g_path_get_basename(filename); + gtk_label_set_text(GTK_LABEL(widget), p); + g_free(p); + } +} + +static void LoadMcdDlg(GtkWidget *widget) { + int i; + + for (i = 0; i < MAX_MEMCARD_BLOCKS; i++) { + GetMcdBlockInfo(1, i + 1, &Blocks[0][i]); + GetMcdBlockInfo(2, i + 1, &Blocks[1][i]); + } + + LoadListItems(1, widget); + LoadListItems(2, widget); + + UpdateFilenameButtons(widget); +} + +static void OnTreeSelectionChanged(GtkTreeSelection *selection, gpointer user_data); + +static void UpdateListItems(int mcd, GtkWidget *widget) { + GladeXML *xml; + GtkWidget *List; + GtkWidget *dialog; + GtkListStore *store; + GtkTreeIter iter; + GdkPixbuf *pixbuf; + short *pIcon; + int i; + gchar *title; + + xml = glade_get_widget_tree(widget); + dialog = glade_xml_get_widget(xml, "McdsDlg"); + + if (mcd == 1) List = glade_xml_get_widget(xml, "GtkCList_McdList1"); + else List = glade_xml_get_widget(xml, "GtkCList_McdList2"); + + store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(List))); + gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter); + + for (i = 0; i < MAX_MEMCARD_BLOCKS; i++) { + McdBlock *Info; + gchar *state; + + Info = &Blocks[mcd - 1][i]; + IconC[mcd - 1][i] = 0; + + if ((Info->Flags & 0xF0) == 0xA0) { + if ((Info->Flags & 0xF) >= 1 && + (Info->Flags & 0xF) <= 3) { + state = _("Deleted"); + } else + state = _("Free"); + } else if ((Info->Flags & 0xF0) == 0x50) + state = _("Used"); + else + state = _("Free"); + + if (Info->IconCount > 0) { + pIcon = &Info->Icon[(currentIcon % Info->IconCount) * 16 * 16]; + } else { + pIcon = Info->Icon; + } + + pixbuf = SetIcon(dialog, pIcon, i + 1); + title = g_convert(Info->sTitle, strlen(Info->sTitle), "UTF-8", + "Shift-JIS", NULL, NULL, NULL); + + gtk_list_store_set(store, &iter, + CL_ICON, pixbuf, + CL_TITLE, title, + CL_STAT, state, + CL_NAME, Info->Name, + CL_ID, Info->ID, + -1); + + g_free(title); + + g_object_unref(pixbuf); + gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter); + } + + gtk_widget_show(List); + + OnTreeSelectionChanged(gtk_tree_view_get_selection(GTK_TREE_VIEW(List)), (gpointer)mcd); +} + +static void UpdateMcdDlg(GtkWidget *widget) { + int i; + + for (i = 0; i < MAX_MEMCARD_BLOCKS; i++) { + GetMcdBlockInfo(1, i + 1, &Blocks[0][i]); + GetMcdBlockInfo(2, i + 1, &Blocks[1][i]); + } + + UpdateListItems(1, widget); + UpdateListItems(2, widget); + + UpdateFilenameButtons(widget); +} + +static void OnMcd_Close(GtkDialog *dialog, gint arg1, gpointer user_data) { + quit = TRUE; + SaveConfig(); + gtk_widget_destroy(GTK_WIDGET(dialog)); +} + +static void OnMcd_FileChange(GtkWidget *widget, gpointer user_data) { + gint memcard = (int)user_data; + gchar *filename; + GtkWidget *chooser; + + // Ask for name of memory card + chooser = gtk_file_chooser_dialog_new(_("Select A File"), + NULL, GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OPEN, GTK_RESPONSE_OK, + NULL); + + if (memcard == 1) + gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(chooser), Config.Mcd1); + else + gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(chooser), Config.Mcd2); + + if (gtk_dialog_run(GTK_DIALOG(chooser)) == GTK_RESPONSE_OK) { + gtk_widget_hide(chooser); + + filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser)); + + if (filename != NULL) { + if (memcard == 1) strncpy(Config.Mcd1, filename, MAXPATHLEN); + else strncpy(Config.Mcd2, filename, MAXPATHLEN); + + LoadMcd(memcard, filename); + LoadMcdDlg(widget); + + g_free(filename); + } + } + + gtk_widget_destroy(chooser); +} + +// format a memory card +static void OnMcd_Format(GtkWidget *widget, gpointer user_data) { + GladeXML *xml; + GtkWidget *message_dialog; + gint result; + char *str; + + gint memcard = (int)user_data; + + message_dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, + GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, + _("Format this Memory Card?")); + gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(message_dialog), + _("If you format the memory card, the card will be empty, and any existing data overwritten.")); + gtk_dialog_add_buttons(GTK_DIALOG(message_dialog), + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + _("Format card"), GTK_RESPONSE_YES, NULL); + + result = gtk_dialog_run(GTK_DIALOG(message_dialog)); + gtk_widget_destroy(message_dialog); + + if (result == GTK_RESPONSE_YES) { + xml = glade_get_widget_tree(widget); + + if (memcard == 1) str = Config.Mcd1; + else str = Config.Mcd2; + + CreateMcd(str); + LoadMcd(memcard, str); + + UpdateMcdDlg(widget); + } +} + +// create a new, formatted memory card +static void OnMcd_New(GtkWidget *widget, gpointer user_data) { + GtkWidget *chooser; + gchar *path; + + // Ask for name of new memory card + chooser = gtk_file_chooser_dialog_new(_("Create a new Memory Card"), + NULL, GTK_FILE_CHOOSER_ACTION_SAVE, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_SAVE, GTK_RESPONSE_OK, + NULL); + + // Card should be put into $HOME/.pcsx/memcards + path = g_build_filename(g_get_home_dir(), ".pcsx", "memcards", NULL); + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser), path); + gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(chooser), _("New Memory Card.mcd")); + gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(chooser), TRUE); + + if (gtk_dialog_run(GTK_DIALOG(chooser)) == GTK_RESPONSE_OK) { + gchar *name; + + gtk_widget_hide(chooser); + name = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser)); + + CreateMcd(name); + + if ((int)user_data == 1) strncpy(Config.Mcd1, name, MAXPATHLEN); + else strncpy(Config.Mcd2, name, MAXPATHLEN); + + LoadMcd((int)user_data, name); + LoadMcdDlg(widget); + + g_free(name); + } + + gtk_widget_destroy(chooser); + g_free(path); +} + +static int copy = 0, copymcd = 0; + +static int GetFreeMemcardSlot(int target_card) { + McdBlock *Info; + gboolean found = FALSE; + + int i = 0; + while (i < 15 && found == FALSE) { + Info = &Blocks[target_card][i]; + if (g_ascii_strcasecmp(Info->Title, "") == 0) { + found = TRUE; + } else { + i++; + } + } + + if (found == TRUE) + return i; + + // no free slots, try to find a deleted one + i = 0; + while (i < 15 && found == FALSE) { + Info = &Blocks[target_card][i]; + if ((Info->Flags & 0xF0) != 0x50) { + found = TRUE; + } else { + i++; + } + } + + if (found == TRUE) + return i; + + return -1; +} + +static void CopyMemcardData(char *from, char *to, gint *i, gchar *str) { + memcpy(to + (*i + 1) * 128, from + (copy + 1) * 128, 128); + SaveMcd((char *)str, to, (*i + 1) * 128, 128); + memcpy(to + (*i + 1) * 1024 * 8, from + (copy+1) * 1024 * 8, 1024 * 8); + SaveMcd((char *)str, to, (*i + 1) * 1024 * 8, 1024 * 8); +} + +static void OnMcd_CopyTo(GtkWidget *widget, gpointer user_data) { + gint mcd = (gint)user_data; + + GtkTreeIter iter; + GtkTreeModel *model; + GtkTreePath *path; + gint *i; + GladeXML *xml; + GtkTreeSelection *treesel; + gchar *str; + char *source, *destination; + + int first_free_slot; + + xml = glade_get_widget_tree(widget); + + if (mcd == 1) + treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(GtkCList_McdList2)); + else + treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(GtkCList_McdList1)); + + // If the item selected is not reported as a 'Free' slot + if (gtk_tree_selection_get_selected(treesel, &model, &iter)) { + path = gtk_tree_model_get_path(model, &iter); + i = gtk_tree_path_get_indices(path); + copy = *i; + copymcd = mcd; + gtk_tree_path_free(path); + } + + // Determine the first free slot in the target memory card + first_free_slot = GetFreeMemcardSlot(mcd - 1); + if (first_free_slot == -1) { + // No free slots available on the destination card + SysErrorMessage(_("No free space on memory card"), + _("There are no free slots available on the target memory card. Please delete a slot first.")); + return; + } + + xml = glade_get_widget_tree(GtkCList_McdList1); + + if (mcd == 1) { + str = Config.Mcd1; + source = Mcd2Data; + destination = Mcd1Data; + } else { + str = Config.Mcd2; + source = Mcd1Data; + destination = Mcd2Data; + } + + CopyMemcardData(source, destination, &first_free_slot, str); + UpdateMcdDlg(widget); +} + +static void OnMemcardDelete(GtkWidget *widget, gpointer user_data) { + McdBlock *Info; + int i, xor = 0, j; + char *data, *ptr; + GtkTreeIter iter; + GtkTreeModel *model; + GtkTreePath *path; + gchar *filename; + GladeXML *xml; + gboolean selected; + GtkWidget *tree; + GtkTreeSelection *sel; + + gint memcard = (int)user_data; + + xml = glade_get_widget_tree(widget); + + if (memcard == 1) { + tree = glade_xml_get_widget(xml, "GtkCList_McdList1"); + sel = gtk_tree_view_get_selection(GTK_TREE_VIEW (tree)); + selected = gtk_tree_selection_get_selected (sel, &model, &iter); + data = Mcd1Data; + filename = Config.Mcd1; + } else { + tree = glade_xml_get_widget(xml, "GtkCList_McdList2"); + sel = gtk_tree_view_get_selection(GTK_TREE_VIEW (tree)); + selected = gtk_tree_selection_get_selected(sel, &model, &iter); + data = Mcd2Data; + filename = Config.Mcd2; + } + + if (selected) { + path = gtk_tree_model_get_path(model, &iter); + i = *gtk_tree_path_get_indices(path); + + i++; + ptr = data + i * 128; + Info = &Blocks[memcard - 1][i - 1]; + + if ((Info->Flags & 0xF0) == 0xA0) { + if ((Info->Flags & 0xF) >= 1 && + (Info->Flags & 0xF) <= 3) { // deleted + *ptr = 0x50 | (Info->Flags & 0xF); + } else return; + } else if ((Info->Flags & 0xF0) == 0x50) { // used + *ptr = 0xA0 | (Info->Flags & 0xF); + } else { return; } + + for (j = 0; j < 127; j++) xor ^= *ptr++; + *ptr = xor; + + SaveMcd((char *)filename, data, i * 128, 128); + UpdateMcdDlg(widget); + } +} + +static void OnTreeSelectionChanged(GtkTreeSelection *selection, gpointer user_data) { + GladeXML *xml; + GtkTreeIter iter; + GtkTreeModel *model; + GtkTreePath *path; + + gboolean selected; + int i; + McdBlock b; + + gint memcard = (int)user_data; + + xml = glade_get_widget_tree(GtkCList_McdList1); + selected = gtk_tree_selection_get_selected(selection, &model, &iter); + + if (selected) { + path = gtk_tree_model_get_path(model, &iter); + i = *gtk_tree_path_get_indices(path); + gtk_tree_path_free(path); + + // If a row was selected, and the row is not blank, we can now enable + // some of the disabled widgets + if (memcard == 1) { + GetMcdBlockInfo(1, i + 1, &b); + + if ((b.Flags >= 0xA1 && b.Flags <= 0xA3) || ((b.Flags & 0xF0) == 0x50)) { + gtk_widget_set_sensitive(glade_xml_get_widget(xml, "GtkButton_Delete1"), TRUE); + } else { + gtk_widget_set_sensitive(glade_xml_get_widget(xml, "GtkButton_Delete1"), FALSE); + } + + if ((b.Flags & 0xF0) == 0x50) { + gtk_widget_set_sensitive(glade_xml_get_widget(xml, "GtkButton_CopyTo2"), TRUE); + } else { + gtk_widget_set_sensitive(glade_xml_get_widget(xml, "GtkButton_CopyTo2"), FALSE); + } + } else { + GetMcdBlockInfo(2, i + 1, &b); + + if ((b.Flags >= 0xA1 && b.Flags <= 0xA3) || ((b.Flags & 0xF0) == 0x50)) { + gtk_widget_set_sensitive(glade_xml_get_widget(xml, "GtkButton_Delete2"), TRUE); + } else { + gtk_widget_set_sensitive(glade_xml_get_widget(xml, "GtkButton_Delete2"), FALSE); + } + + if ((b.Flags & 0xF0) == 0x50) { + gtk_widget_set_sensitive(glade_xml_get_widget(xml, "GtkButton_CopyTo1"), TRUE); + } else { + gtk_widget_set_sensitive(glade_xml_get_widget(xml, "GtkButton_CopyTo1"), FALSE); + } + } + } else { + if (memcard == 1) { + gtk_widget_set_sensitive(glade_xml_get_widget(xml, "GtkButton_CopyTo2"), FALSE); + gtk_widget_set_sensitive(glade_xml_get_widget(xml, "GtkButton_Delete1"), FALSE); + } else { + gtk_widget_set_sensitive(glade_xml_get_widget(xml, "GtkButton_CopyTo1"), FALSE); + gtk_widget_set_sensitive(glade_xml_get_widget(xml, "GtkButton_Delete2"), FALSE); + } + } +} + +gboolean updateFunc(gpointer data) { + if (quit) return FALSE; + currentIcon++; + UpdateListItems(1, GtkCList_McdList1); + UpdateListItems(2, GtkCList_McdList2); + g_timeout_add(333, updateFunc, 0); + return FALSE; +} + +void OnConf_Mcds() { + GladeXML *xml; + GtkWidget *dialog; + GtkWidget *widget; + GtkTreeSelection *treesel1, *treesel2; + gchar *str; + + xml = glade_xml_new(PACKAGE_DATA_DIR "pcsx.glade2", "McdsDlg", NULL); + + if (!xml) { + g_warning("We could not load the interface!"); + return; + } + + dialog = glade_xml_get_widget(xml, "McdsDlg"); + + gtk_window_set_title(GTK_WINDOW(dialog), _("Memory Card Manager")); + + // Assign default memory cards + if (!strlen(Config.Mcd1)) { + str = g_strconcat(getenv("HOME"), DEFAULT_MEM_CARD_1, NULL); + strcpy(Config.Mcd1, str); + g_free(str); + } + + if (!strlen(Config.Mcd2)) { + str = g_strconcat(getenv("HOME"), DEFAULT_MEM_CARD_2, NULL); + strcpy(Config.Mcd2, str); + g_free(str); + } + + GtkCList_McdList1 = glade_xml_get_widget(xml, "GtkCList_McdList1"); + AddColumns(GTK_TREE_VIEW(GtkCList_McdList1)); + GtkCList_McdList2 = glade_xml_get_widget(xml, "GtkCList_McdList2"); + AddColumns(GTK_TREE_VIEW(GtkCList_McdList2)); + + treesel1 = gtk_tree_view_get_selection(GTK_TREE_VIEW (GtkCList_McdList1)); + gtk_tree_selection_set_mode(treesel1, GTK_SELECTION_SINGLE); + g_signal_connect_data(G_OBJECT(treesel1), "changed", + G_CALLBACK(OnTreeSelectionChanged), + (gpointer)1, NULL, G_CONNECT_AFTER); + + treesel2 = gtk_tree_view_get_selection(GTK_TREE_VIEW (GtkCList_McdList2)); + gtk_tree_selection_set_mode(treesel2, GTK_SELECTION_SINGLE); + g_signal_connect_data(G_OBJECT(treesel2), "changed", + G_CALLBACK(OnTreeSelectionChanged), + (gpointer)2, NULL, G_CONNECT_AFTER); + + LoadMcdDlg(dialog); + + // Setup a handler for when Close or Cancel is clicked + g_signal_connect_data(GTK_OBJECT(dialog), "response", + GTK_SIGNAL_FUNC(OnMcd_Close), xml, (GClosureNotify)g_object_unref, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "GtkButton_Format1"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnMcd_Format), (gpointer)1, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "GtkButton_Format2"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnMcd_Format), (gpointer)2, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "Mcd1Button"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnMcd_FileChange), (gpointer)1, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "Mcd2Button"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnMcd_FileChange), (gpointer)2, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "GtkButton_New1"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnMcd_New), (gpointer)1, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "GtkButton_New2"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnMcd_New), (gpointer)2, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "GtkButton_CopyTo1"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnMcd_CopyTo), (gpointer)1, NULL, G_CONNECT_AFTER); + gtk_widget_set_sensitive(GTK_WIDGET(widget), FALSE); + + widget = glade_xml_get_widget(xml, "GtkButton_CopyTo2"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnMcd_CopyTo), (gpointer)2, NULL, G_CONNECT_AFTER); + gtk_widget_set_sensitive(GTK_WIDGET(widget), FALSE); + + widget = glade_xml_get_widget(xml, "GtkButton_Delete1"); + g_signal_connect_data (GTK_OBJECT (widget), "clicked", + GTK_SIGNAL_FUNC(OnMemcardDelete), (gpointer)1, NULL, G_CONNECT_AFTER); + gtk_widget_set_sensitive(GTK_WIDGET(widget), FALSE); + + widget = glade_xml_get_widget(xml, "GtkButton_Delete2"); + g_signal_connect_data (GTK_OBJECT (widget), "clicked", + GTK_SIGNAL_FUNC(OnMemcardDelete), (gpointer)2, NULL, G_CONNECT_AFTER); + gtk_widget_set_sensitive(GTK_WIDGET(widget), FALSE); + + quit = FALSE; + currentIcon = 0; + + g_timeout_add(1, updateFunc, 0); + + while (gtk_events_pending()) { gtk_main_iteration(); } +} diff --git a/gui/MemcardDlg.h b/gui/MemcardDlg.h new file mode 100644 index 0000000..519283a --- /dev/null +++ b/gui/MemcardDlg.h @@ -0,0 +1,24 @@ +/* Pcsx - Pc Psx Emulator + * Copyright (C) 1999-2002 Pcsx Team + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA + */ + +#ifndef MEMCARDDLG_H +#define MEMCARDDLG_H + +void OnConf_Mcds(); + +#endif diff --git a/gui/Plugin.c b/gui/Plugin.c new file mode 100644 index 0000000..0e50606 --- /dev/null +++ b/gui/Plugin.c @@ -0,0 +1,122 @@ +/* Pcsx - Pc Psx Emulator + * Copyright (C) 1999-2002 Pcsx Team + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA + */ + +#include +#include +#include +#include +#include +#include + +#include "Linux.h" + +#include "../libpcsxcore/plugins.h" +#include "../libpcsxcore/spu.h" +#include "../libpcsxcore/cdriso.h" + +#include "nopic.h" + +#define MAX_SLOTS 5 /* ADB TODO Same as Gtk2Gui.c */ + +unsigned long gpuDisp; + +int StatesC = 0; +int ShowPic = 0; + + + +static short modctrl = 0, modalt = 0; + +/* Handle keyboard keystrokes */ +void PADhandleKey(int key) { + char Text[MAXPATHLEN]; + short rel = 0; //released key flag + + if (key == 0) + return; + + if ((key >> 30) & 1) //specific to dfinput (padJoy) + rel = 1; + + + + if(key==SDLK_ESCAPE) + { + ClosePlugins(); + exit(1); + } + //else GPU_keypressed(key); +} + + +void SignalExit(int sig) { + ClosePlugins(); +} + +#define PARSEPATH(dst, src) \ + ptr = src + strlen(src); \ + while (*ptr != '\\' && ptr != src) ptr--; \ + if (ptr != src) { \ + strcpy(dst, ptr+1); \ + } + +int _OpenPlugins() { + int ret; + + GPU_clearDynarec(clearDynarec); + + ret = CDR_open(); + if (ret < 0) { SysMessage(_("Error opening CD-ROM plugin!")); return -1; } + ret = SPU_open(); + if (ret < 0) { SysMessage(_("Error opening SPU plugin!")); return -1; } + SPU_registerCallback(SPUirq); + ret = GPU_open(&gpuDisp, "PCSX", NULL); + if (ret < 0) { SysMessage(_("Error opening GPU plugin!")); return -1; } + ret = PAD1_open(&gpuDisp); + if (ret < 0) { SysMessage(_("Error opening Controller 1 plugin!")); return -1; } + ret = PAD2_open(&gpuDisp); + if (ret < 0) { SysMessage(_("Error opening Controller 2 plugin!")); return -1; } + + return 0; +} + +int OpenPlugins() { + int ret; + + while ((ret = _OpenPlugins()) == -2) { + //ReleasePlugins(); + LoadMcds(Config.Mcd1, Config.Mcd2); + if (LoadPlugins() == -1) return -1; + } + return ret; +} + +void ClosePlugins() { + int ret; + + ret = CDR_close(); + if (ret < 0) { SysMessage(_("Error closing CD-ROM plugin!")); return; } + ret = SPU_close(); + if (ret < 0) { SysMessage(_("Error closing SPU plugin!")); return; } + ret = PAD1_close(); + if (ret < 0) { SysMessage(_("Error closing Controller 1 Plugin!")); return; } + ret = PAD2_close(); + if (ret < 0) { SysMessage(_("Error closing Controller 2 plugin!")); return; } + ret = GPU_close(); + if (ret < 0) { SysMessage(_("Error closing GPU plugin!")); return; } +} diff --git a/gui/nopic.h b/gui/nopic.h new file mode 100644 index 0000000..895dc25 --- /dev/null +++ b/gui/nopic.h @@ -0,0 +1,1345 @@ +//////////////////////////////////////////////////////////////////////// +// following code taken from the gpuPeopsSoft +//////////////////////////////////////////////////////////////////////// + +// font 0-9, 24x20 pixels, 1 byte = 4 dots +// 00 = black +// 01 = white +// 10 = red +// 11 = transparent + +unsigned char cFont[10][120]= +{ +// 0 +{0xaa,0xaa,0xaa,0xaa,0xaa,0xaa, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x05,0x54,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x05,0x54,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa +}, +// 1 +{0xaa,0xaa,0xaa,0xaa,0xaa,0xaa, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x50,0x00,0x00, + 0x80,0x00,0x05,0x50,0x00,0x00, + 0x80,0x00,0x00,0x50,0x00,0x00, + 0x80,0x00,0x00,0x50,0x00,0x00, + 0x80,0x00,0x00,0x50,0x00,0x00, + 0x80,0x00,0x00,0x50,0x00,0x00, + 0x80,0x00,0x00,0x50,0x00,0x00, + 0x80,0x00,0x00,0x50,0x00,0x00, + 0x80,0x00,0x00,0x50,0x00,0x00, + 0x80,0x00,0x05,0x55,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa +}, +// 2 +{0xaa,0xaa,0xaa,0xaa,0xaa,0xaa, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x05,0x54,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x00,0x05,0x00,0x00, + 0x80,0x00,0x00,0x05,0x00,0x00, + 0x80,0x00,0x00,0x14,0x00,0x00, + 0x80,0x00,0x00,0x50,0x00,0x00, + 0x80,0x00,0x01,0x40,0x00,0x00, + 0x80,0x00,0x05,0x00,0x00,0x00, + 0x80,0x00,0x14,0x00,0x00,0x00, + 0x80,0x00,0x15,0x55,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa +}, +// 3 +{0xaa,0xaa,0xaa,0xaa,0xaa,0xaa, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x05,0x54,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x00,0x05,0x00,0x00, + 0x80,0x00,0x00,0x05,0x00,0x00, + 0x80,0x00,0x01,0x54,0x00,0x00, + 0x80,0x00,0x00,0x05,0x00,0x00, + 0x80,0x00,0x00,0x05,0x00,0x00, + 0x80,0x00,0x00,0x05,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x05,0x54,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa +}, +// 4 +{0xaa,0xaa,0xaa,0xaa,0xaa,0xaa, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x14,0x00,0x00, + 0x80,0x00,0x00,0x54,0x00,0x00, + 0x80,0x00,0x01,0x54,0x00,0x00, + 0x80,0x00,0x01,0x54,0x00,0x00, + 0x80,0x00,0x05,0x14,0x00,0x00, + 0x80,0x00,0x14,0x14,0x00,0x00, + 0x80,0x00,0x15,0x55,0x00,0x00, + 0x80,0x00,0x00,0x14,0x00,0x00, + 0x80,0x00,0x00,0x14,0x00,0x00, + 0x80,0x00,0x00,0x55,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa +}, +// 5 +{0xaa,0xaa,0xaa,0xaa,0xaa,0xaa, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x15,0x55,0x00,0x00, + 0x80,0x00,0x14,0x00,0x00,0x00, + 0x80,0x00,0x14,0x00,0x00,0x00, + 0x80,0x00,0x14,0x00,0x00,0x00, + 0x80,0x00,0x15,0x54,0x00,0x00, + 0x80,0x00,0x00,0x05,0x00,0x00, + 0x80,0x00,0x00,0x05,0x00,0x00, + 0x80,0x00,0x00,0x05,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x05,0x54,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa +}, +// 6 +{0xaa,0xaa,0xaa,0xaa,0xaa,0xaa, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x01,0x54,0x00,0x00, + 0x80,0x00,0x05,0x00,0x00,0x00, + 0x80,0x00,0x14,0x00,0x00,0x00, + 0x80,0x00,0x14,0x00,0x00,0x00, + 0x80,0x00,0x15,0x54,0x00,0x00, + 0x80,0x00,0x15,0x05,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x05,0x54,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa +}, +// 7 +{0xaa,0xaa,0xaa,0xaa,0xaa,0xaa, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x15,0x55,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x00,0x14,0x00,0x00, + 0x80,0x00,0x00,0x14,0x00,0x00, + 0x80,0x00,0x00,0x50,0x00,0x00, + 0x80,0x00,0x00,0x50,0x00,0x00, + 0x80,0x00,0x01,0x40,0x00,0x00, + 0x80,0x00,0x01,0x40,0x00,0x00, + 0x80,0x00,0x05,0x00,0x00,0x00, + 0x80,0x00,0x05,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa +}, +// 8 +{0xaa,0xaa,0xaa,0xaa,0xaa,0xaa, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x05,0x54,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x05,0x54,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x05,0x54,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa +}, +// 9 +{0xaa,0xaa,0xaa,0xaa,0xaa,0xaa, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x05,0x54,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x14,0x05,0x00,0x00, + 0x80,0x00,0x14,0x15,0x00,0x00, + 0x80,0x00,0x05,0x55,0x00,0x00, + 0x80,0x00,0x00,0x05,0x00,0x00, + 0x80,0x00,0x00,0x05,0x00,0x00, + 0x80,0x00,0x00,0x14,0x00,0x00, + 0x80,0x00,0x05,0x50,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x00,0x00,0x00,0x00, + 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa +} +}; + +//////////////////////////////////////////////////////////////////////// + +inline void PaintPicDot(unsigned char * p,unsigned char c) +{ + + if(c==0) {*p++=0x00;*p++=0x00;*p=0x00;return;} // black + if(c==1) {*p++=0xff;*p++=0xff;*p=0xff;return;} // white + if(c==2) {*p++=0x00;*p++=0x00;*p=0xff;return;} // red + // transparent +} + + ///////////////////////////////////////////////////////////////////// + // generic number/border painter + +void DrawNumBorPic(unsigned char *pMem, int lSelectedSlot) +{ + unsigned char *pf; + int x,y; + int c,v; + + pf=pMem+(103*3); // offset to number rect + + for(y=0;y<20;y++) // loop the number rect pixel + { + for(x=0;x<6;x++) + { + c=cFont[lSelectedSlot][x+y*6]; // get 4 char dot infos at once (number depends on selected slot) + v=(c&0xc0)>>6; + PaintPicDot(pf,(unsigned char)v);pf+=3; // paint the dots into the rect + v=(c&0x30)>>4; + PaintPicDot(pf,(unsigned char)v);pf+=3; + v=(c&0x0c)>>2; + PaintPicDot(pf,(unsigned char)v);pf+=3; + v=c&0x03; + PaintPicDot(pf,(unsigned char)v);pf+=3; + } + pf+=104*3; // next rect y line + } + + pf=pMem; // ptr to first pos in 128x96 pic + for(x=0;x<128;x++) // loop top/bottom line + { + *(pf+(95*128*3))=0x00;*pf++=0x00; + *(pf+(95*128*3))=0x00;*pf++=0x00; // paint it red + *(pf+(95*128*3))=0xff;*pf++=0xff; + } + pf=pMem; // ptr to first pos + for(y=0;y<96;y++) // loop left/right line + { + *(pf+(127*3))=0x00;*pf++=0x00; + *(pf+(127*3))=0x00;*pf++=0x00; // paint it red + *(pf+(127*3))=0xff;*pf++=0xff; + pf+=127*3; // offset to next line + } +} + +//////////////////////////////////////////////////////////////////////// + + +/* GIMP RGB C-Source image dump (NoPic.h) */ + +static const struct { + unsigned int width; + unsigned int height; + unsigned int bytes_per_pixel; /* 3:RGB, 4:RGBA */ + unsigned char pixel_data[128 * 96 * 3 + 1]; +} NoPic_Image = { + 128, 96, 3, + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\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\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" + "\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\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\0U\0\0U\0\0U\0\0U\0\0""8\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\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\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\34\0\0U\0\0U\0\0U\0\0" + "U\0\0""8\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\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0U\0\0\376\0\0\376\0\0\341\0\0\34\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\376\0" + "\0\376\0\0U\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""8" + "\0\0\305\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\251" + "\0\0""8\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\0U\0\0\376\0\0\376\0\0\376\0" + "\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\251\0" + "\0q\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\251\0\0\376\0\0\376" + "\0\0U\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\0q\0\0\305" + "\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\341\0\0\214\0\0\34\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\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0U\0\0\376\0\0\376\0\0\376\0\0\251\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\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\34\0\0\305\0\0\376\0\0\376\0\0\376\0\0\376\0" + "\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\305\0\0\34\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\0U\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376" + "\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\341\0\0""8\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\251\0\0\376\0\0\376\0\0U\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\34\0\0\341\0\0\376\0\0\376\0\0\376\0" + "\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\341\0\0U\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\0\0\0\0\0\0\0\0\0\0\0U\0" + "\0\376\0\0\376\0\0\376\0\0\376\0\0""8\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\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\34\0\0\341\0\0\376\0\0\376\0\0\376\0\0\305\0\0q\0\0U\0\0U\0" + "\0U\0\0\214\0\0\341\0\0\376\0\0\376\0\0\376\0\0\341\0\0\34\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\0U\0\0\376\0\0\376\0\0\341\0\0\251\0\0\251\0\0\251\0\0\251\0\0\251" + "\0\0\251\0\0\251\0\0\341\0\0\376\0\0\376\0\0\376\0\0\341\0\0\34\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\251\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\34\0\0\341\0\0\376\0\0\376\0\0\376\0\0\251\0\0U\0\0U\0\0" + "U\0\0q\0\0\251\0\0\376\0\0\376\0\0\376\0\0\376\0\0\34\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\0\0\0\0\0\0\0\0U\0\0\376\0\0\376\0\0\376" + "\0\0\376\0\0\341\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\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\34\0\0\341\0" + "\0\376\0\0\376\0\0\341\0\0""8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0U\0\0\341\0\0\376\0\0\376\0\0\341\0\0\34\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\0U\0\0\376\0\0\376" + "\0\0\251\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\0U\0\0\341\0\0" + "\376\0\0\376\0\0\214\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\251\0\0\376\0\0\376" + "\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\34\0\0\341\0\0\376\0\0\376\0\0\305" + "\0\0\34\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\34\0\0\341\0\0\376\0\0\376" + "\0\0\305\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\0\0\0\0\0" + "\0\0\0U\0\0\376\0\0\376\0\0\341\0\0\376\0\0\376\0\0\214\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\376\0\0\376\0\0U\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\305\0\0\376\0\0\376\0\0\341\0\0\34\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\34\0\0\341\0\0\376\0\0\376\0\0\251" + "\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\0U\0\0\376\0\0\376\0\0\251\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\0U\0\0\376\0\0\376\0\0\376\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\251\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\214" + "\0\0\376\0\0\376\0\0\341\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\34\0\0\341\0\0\376\0\0\376\0\0U\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\0\0\0\0\0U\0\0\376\0\0\376\0\0U\0\0\376\0\0\376" + "\0\0\376\0\0""8\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\376\0" + "\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0""8\0\0\376\0\0\376\0\0\376\0\0\34" + "\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\34" + "\0\0\376\0\0\376\0\0\376\0\0""8\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\0U\0\0\376\0\0\376\0\0\251\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\341\0\0\376\0\0" + "\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\251\0\0\376\0\0\376\0\0U\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\34\0\0\376\0\0\376\0\0\376\0\0\34\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\0q\0\0\376\0\0\376\0\0\251\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\0\0\0\0\0U\0\0\376\0\0" + "\376\0\0\0\0\0\251\0\0\376\0\0\376\0\0\341\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\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\305\0" + "\0\376\0\0\376\0\0q\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\214\0\0\376\0\0\376\0\0\251\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\0U\0\0\376" + "\0\0\376\0\0\251\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\251\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\251\0\0\376" + "\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\0\0\376\0\0\376\0\0\251\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\34\0\0\376" + "\0\0\376\0\0\376\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\0" + "\0\0\0\0U\0\0\376\0\0\376\0\0\0\0\0\34\0\0\341\0\0\376\0\0\376\0\0\214\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\0\0\376\0\0U\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\376\0\0\376\0\0\376\0\0\34\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\34\0\0\376\0\0\376\0" + "\0\376\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\0U\0\0\376\0\0\376\0\0\251\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\251\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\251\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\305\0\0" + "\376\0\0\376\0\0U\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\0U\0\0U\0\0U\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\0\0\0\0\0U\0\0\376\0\0\376\0\0\0\0\0\0\0\0U\0\0\376\0\0\376" + "\0\0\376\0\0\34\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\0\0\376\0\0U" + "\0\0\0\0\0\0\0\0\0\0\0U\0\0\376\0\0\376\0\0\305\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\305" + "\0\0\376\0\0\376\0\0U\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\0U\0\0\376\0\0\376\0\0\251\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\34\0\0\376\0\0\376\0\0\376\0\0""8\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\251\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\376\0\0\376\0\0\376\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\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\0U\0\0\376\0\0\376\0\0\0\0\0\0\0\0" + "\0\0\0\305\0\0\376\0\0\376\0\0\305\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\214\0\0\376\0\0\376\0\0\214\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\214\0\0\376\0\0\376\0\0q\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\0U\0\0\376\0\0\376\0\0\251\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\251\0\0\376\0\0" + "\376\0\0\341\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\251\0\0\376\0\0\376\0\0U\0" + "\0\0\0\0\0\0\0\0\0\0""8\0\0\376\0\0\376\0\0\305\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\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\0U\0\0\376\0" + "\0\376\0\0\0\0\0\0\0\0\0\0\0\34\0\0\376\0\0\376\0\0\376\0\0q\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\251\0\0\376" + "\0\0\376\0\0U\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\0U\0\0\376\0\0\376\0\0\251\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\0U\0\0\376\0" + "\0\376\0\0\305\0\0U\0\0U\0\0U\0\0U\0\0U\0\0U\0\0U\0\0\214\0\0\341\0\0\376" + "\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\251\0\0\376\0\0\376" + "\0\0U\0\0\0\0\0\0\0\0\0\0\0U\0\0\376\0\0\376\0\0\251\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\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\0U\0\0" + "\376\0\0\376\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\0\0\376\0\0\376\0\0\376\0\0\34" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\251\0" + "\0\376\0\0\376\0\0U\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\0U\0\0\376\0\0\376\0\0\251\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\0U\0\0" + "\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0" + "\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\251\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0U\0\0\376\0\0\376" + "\0\0\251\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\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\0U\0\0\376\0\0\376\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\305\0\0\376\0\0\376\0\0\305\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\0\0\376\0" + "\0U\0\0\0\0\0\0\0\0\0\0\0\251\0\0\376\0\0\376\0\0U\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" + "U\0\0\376\0\0\376\0\0\251\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\0U\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0" + "\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\341\0\0U\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\251\0\0\376\0\0\376\0\0U\0\0\0\0\0" + "\0\0\0\0\0\0U\0\0\376\0\0\376\0\0\251\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\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\0U\0\0\376\0\0\376\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\34\0\0\376\0\0\376\0\0\376\0\0q\0\0\0\0\0" + "\0\0\0\0\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\251\0\0\376\0\0\376\0" + "\0U\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\0U\0\0\376\0\0\376\0\0\251\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\0U\0\0\376\0\0\376\0\0" + "\305\0\0U\0\0U\0\0U\0\0U\0\0U\0\0U\0\0U\0\0U\0\0\34\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\251\0\0\376\0\0\376\0\0U\0\0\0\0\0\0" + "\0\0\0\0\0U\0\0\376\0\0\376\0\0\251\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\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\0U\0\0\376\0\0\376\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\0\0\376\0\0\376\0\0\341\0\0\34\0\0\0" + "\0\0\0\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0q\0\0\376\0\0\376\0\0\251" + "\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\251\0\0\376\0\0\376\0\0q\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\0U\0\0\376\0\0\376\0\0\251" + "\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\251\0\0\376\0\0\376\0\0U\0\0\0\0" + "\0\0\0\0\0\0\0""8\0\0\376\0\0\376\0\0\341\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\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\0U\0\0\376\0\0\376" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\305\0\0\376\0\0\376\0\0\251" + "\0\0\0\0\0\0\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0U\0\0\376\0\0\376" + "\0\0\305\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\305\0\0\376\0\0\376\0\0""8\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\0U\0\0\376\0\0" + "\376\0\0\251\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\251\0\0\376\0\0\376" + "\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\376\0\0\376\0\0\376\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\251\0\0\376" + "\0\0\376\0\0\214\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\0" + "\0U\0\0\376\0\0\376\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""8\0\0" + "\376\0\0\376\0\0\376\0\0U\0\0\0\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\376\0\0\376\0\0\376\0\0""8\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""8\0\0\376\0\0\376\0\0\376\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\0U\0\0\376\0\0\376\0\0\251\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" + "\251\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\305\0\0\376\0\0\376" + "\0\0q\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\305\0\0\376\0\0\376\0\0U\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\0\0U\0\0\376\0\0\376\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\214\0\0\376\0\0\376\0\0\341\0\0\34\0\0\376\0\0\376\0\0U\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\214\0\0\376\0\0\376\0\0\251\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\251\0\0" + "\376\0\0\376\0\0\214\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\0U\0\0\376\0\0\376\0\0\251\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\251\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0q\0\0\376\0\0\376\0\0\305\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\34\0\0\376\0\0\376\0\0\376\0\0\34\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\0\0U\0\0\376\0\0\376\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\341\0\0\376\0\0\376\0\0\251" + "\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\34\0\0\376\0\0\376\0\0" + "\376\0\0U\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\0U\0\0\376\0\0\376\0\0\376\0\0\34\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\0U\0\0\376\0\0\376\0\0\251" + "\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\251\0\0\376\0\0\376\0\0U\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\34\0\0\376\0\0\376\0\0\376\0\0U\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\214\0\0\376\0\0\376\0\0\305" + "\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\0\0\0\0\0U\0\0\376" + "\0\0\376\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""8\0\0" + "\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\214\0\0\376\0\0\376\0\0\376\0\0U\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\0U\0\0\376\0\0\376\0\0\376\0\0\214\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\0U\0\0" + "\376\0\0\376\0\0\251\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\251\0\0\376" + "\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\214\0\0\376\0\0\376\0\0\376" + "\0\0U\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\0U\0\0\376\0\0\376" + "\0\0\376\0\0""8\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\0\0" + "\0\0\0U\0\0\376\0\0\376\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\214\0\0\376\0\0\376\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\251\0\0\376\0\0\376\0\0\376\0\0\214\0\0\34\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\34\0\0\251\0\0\376\0\0\376\0\0\376\0\0\251\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\0U\0\0\376\0\0\376\0\0\251\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\251\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\305\0\0\376\0\0\376\0\0\376\0\0\214\0\0\34\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0q\0\0\376\0\0\376\0\0\376\0\0\305\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\0\0\0\0\0\0\0\0U\0\0\376\0\0\376\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\341\0\0\376\0\0\376\0" + "\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\34\0\0\251\0\0\376\0" + "\0\376\0\0\376\0\0\376\0\0\305\0\0\251\0\0\251\0\0\251\0\0\341\0\0\376\0" + "\0\376\0\0\376\0\0\376\0\0\251\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\0U\0\0\376\0\0\376" + "\0\0\251\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\251\0\0\376\0\0\376\0\0" + "U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\34\0\0\341\0\0\376\0\0\376\0\0" + "\376\0\0\376\0\0\251\0\0\251\0\0\251\0\0\251\0\0\376\0\0\376\0\0\376\0\0" + "\376\0\0\341\0\0\34\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" + "\0\0\0\0\0\0\0\0U\0\0\376\0\0\376\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""8\0\0\376\0\0\376\0\0\376\0\0U\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\0q\0\0\376\0\0\376\0\0\376\0\0\376" + "\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\341\0\0q\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\0U\0\0\376\0\0\376\0\0\251\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\251\0\0\376\0\0\376\0\0U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\34\0\0\251\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0" + "\0\376\0\0\376\0\0\376\0\0\376\0\0\251\0\0\34\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\0\0\0\0\0\0\0\0\0\0\0\34\0\0U\0\0U\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\0U\0\0U\0" + "\0U\0\0\34\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" + "\0q\0\0\251\0\0\376\0\0\376\0\0\376\0\0\376\0\0\376\0\0\251\0\0q\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\34\0\0U\0\0U\0\0""8\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""8\0\0U\0\0U\0\0\34\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""8\0\0\214\0\0\305\0\0\376\0\0\376\0\0\376" + "\0\0\376\0\0\341\0\0\214\0\0""8\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\0\0\0" + "\0\0", +}; + diff --git a/include/config.h b/include/config.h new file mode 100644 index 0000000..0197899 --- /dev/null +++ b/include/config.h @@ -0,0 +1,123 @@ +/* include/config.h. Generated from config.h.in by configure. */ +/* include/config.h.in. Generated from configure.ac by autoheader. */ + +/* Define if building universal (internal helper macro) */ +/* #undef AC_APPLE_UNIVERSAL_BUILD */ + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#define ENABLE_NLS 1 + +/* gettext domain */ +#define GETTEXT_PACKAGE "pcsx" + +/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +/* #undef HAVE_CFLOCALECOPYCURRENT */ + +/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */ + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#define HAVE_DCGETTEXT 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#define HAVE_GETTEXT 1 + +/* Define if you have the iconv() function and it works. */ +/* #undef HAVE_ICONV */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + +/* Define to the maximum length of any path. */ +#define MAXPATHLEN 4096 + +/* Define if we are compiling without dynamic recompiler. */ +/* #undef NOPSXREC */ + +/* Name of package */ +#define PACKAGE "pcsx" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "pcsx" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "pcsx 1.9" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "pcsx" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "1.9" + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +#define VERSION "1.9" + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +/* # undef WORDS_BIGENDIAN */ +# endif +#endif + +/* define on a big endian system */ +/* #undef __BIGENDIAN__ */ + +/* Define if building on a GNU/Linux system. */ +#define __LINUX__ 1 + +/* Define if we are compiling for x86 architectures. */ +/* #undef __i386__ */ + +/* Define if we are compiling for powerpc architectures. */ +/* #undef __ppc__ */ + +/* Define if we are compiling for x86_64 architectures. */ +//#define __x86_64__ 1 diff --git a/include/config.h.in b/include/config.h.in new file mode 100644 index 0000000..0b709be --- /dev/null +++ b/include/config.h.in @@ -0,0 +1,122 @@ +/* include/config.h.in. Generated from configure.ac by autoheader. */ + +/* Define if building universal (internal helper macro) */ +#undef AC_APPLE_UNIVERSAL_BUILD + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS + +/* gettext domain */ +#undef GETTEXT_PACKAGE + +/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYCURRENT + +/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +#undef HAVE_CFPREFERENCESCOPYAPPVALUE + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define if you have the iconv() function and it works. */ +#undef HAVE_ICONV + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#undef LT_OBJDIR + +/* Define to the maximum length of any path. */ +#undef MAXPATHLEN + +/* Define if we are compiling without dynamic recompiler. */ +#undef NOPSXREC + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif + +/* define on a big endian system */ +#undef __BIGENDIAN__ + +/* Define if building on a GNU/Linux system. */ +#undef __LINUX__ + +/* Define if we are compiling for x86 architectures. */ +#undef __i386__ + +/* Define if we are compiling for powerpc architectures. */ +#undef __ppc__ + +/* Define if we are compiling for x86_64 architectures. */ +#undef __x86_64__ diff --git a/include/config.h.in~ b/include/config.h.in~ new file mode 100644 index 0000000..0b709be --- /dev/null +++ b/include/config.h.in~ @@ -0,0 +1,122 @@ +/* include/config.h.in. Generated from configure.ac by autoheader. */ + +/* Define if building universal (internal helper macro) */ +#undef AC_APPLE_UNIVERSAL_BUILD + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS + +/* gettext domain */ +#undef GETTEXT_PACKAGE + +/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYCURRENT + +/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +#undef HAVE_CFPREFERENCESCOPYAPPVALUE + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define if you have the iconv() function and it works. */ +#undef HAVE_ICONV + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#undef LT_OBJDIR + +/* Define to the maximum length of any path. */ +#undef MAXPATHLEN + +/* Define if we are compiling without dynamic recompiler. */ +#undef NOPSXREC + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif + +/* define on a big endian system */ +#undef __BIGENDIAN__ + +/* Define if building on a GNU/Linux system. */ +#undef __LINUX__ + +/* Define if we are compiling for x86 architectures. */ +#undef __i386__ + +/* Define if we are compiling for powerpc architectures. */ +#undef __ppc__ + +/* Define if we are compiling for x86_64 architectures. */ +#undef __x86_64__ diff --git a/include/stamp-h1 b/include/stamp-h1 new file mode 100644 index 0000000..b330768 --- /dev/null +++ b/include/stamp-h1 @@ -0,0 +1 @@ +timestamp for include/config.h diff --git a/libpcsxcore/.deps/cdriso.Po b/libpcsxcore/.deps/cdriso.Po new file mode 100644 index 0000000..a1c92df --- /dev/null +++ b/libpcsxcore/.deps/cdriso.Po @@ -0,0 +1,255 @@ +cdriso.o: ../libpcsxcore/cdriso.c /usr/include/stdc-predef.h \ + ../libpcsxcore/psxcommon.h ../include/config.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/plugins.h \ + ../libpcsxcore/spu.h ../libpcsxcore/r3000a.h ../libpcsxcore/psxmem.h \ + ../libpcsxcore/psxcounters.h ../libpcsxcore/psxbios.h \ + ../libpcsxcore/misc.h ../libpcsxcore/coff.h ../libpcsxcore/sio.h \ + ../libpcsxcore/psemu_plugin_defs.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/cdrom.h ../libpcsxcore/psxhw.h ../libpcsxcore/cdriso.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/cdrom.h: + +../libpcsxcore/psxhw.h: + +../libpcsxcore/cdriso.h: diff --git a/libpcsxcore/.deps/cdrom.Po b/libpcsxcore/.deps/cdrom.Po new file mode 100644 index 0000000..eb383b9 --- /dev/null +++ b/libpcsxcore/.deps/cdrom.Po @@ -0,0 +1,256 @@ +cdrom.o: ../libpcsxcore/cdrom.c /usr/include/stdc-predef.h \ + ../libpcsxcore/cdrom.h ../libpcsxcore/psxcommon.h ../include/config.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/r3000a.h ../libpcsxcore/psxmem.h \ + ../libpcsxcore/psxcounters.h ../libpcsxcore/plugins.h \ + ../libpcsxcore/spu.h ../libpcsxcore/psemu_plugin_defs.h \ + ../libpcsxcore/psxbios.h ../libpcsxcore/misc.h ../libpcsxcore/coff.h \ + ../libpcsxcore/sio.h ../libpcsxcore/psxhw.h ../libpcsxcore/ppf.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/cdrom.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/psxhw.h: + +../libpcsxcore/ppf.h: diff --git a/libpcsxcore/.deps/cheat.Po b/libpcsxcore/.deps/cheat.Po new file mode 100644 index 0000000..d363118 --- /dev/null +++ b/libpcsxcore/.deps/cheat.Po @@ -0,0 +1,251 @@ +cheat.o: ../libpcsxcore/cheat.c /usr/include/stdc-predef.h \ + ../libpcsxcore/psxcommon.h ../include/config.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/r3000a.h \ + ../libpcsxcore/psxmem.h ../libpcsxcore/psxcounters.h \ + ../libpcsxcore/plugins.h ../libpcsxcore/spu.h \ + ../libpcsxcore/psemu_plugin_defs.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/psxbios.h ../libpcsxcore/misc.h ../libpcsxcore/coff.h \ + ../libpcsxcore/sio.h ../libpcsxcore/cheat.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/cheat.h: diff --git a/libpcsxcore/.deps/debug.Po b/libpcsxcore/.deps/debug.Po new file mode 100644 index 0000000..e0de7c1 --- /dev/null +++ b/libpcsxcore/.deps/debug.Po @@ -0,0 +1,251 @@ +debug.o: ../libpcsxcore/debug.c /usr/include/stdc-predef.h \ + ../libpcsxcore/psxcommon.h ../include/config.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/r3000a.h \ + ../libpcsxcore/psxmem.h ../libpcsxcore/psxcounters.h \ + ../libpcsxcore/plugins.h ../libpcsxcore/spu.h \ + ../libpcsxcore/psemu_plugin_defs.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/psxbios.h ../libpcsxcore/misc.h ../libpcsxcore/coff.h \ + ../libpcsxcore/sio.h ../libpcsxcore/socket.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/socket.h: diff --git a/libpcsxcore/.deps/decode_xa.Po b/libpcsxcore/.deps/decode_xa.Po new file mode 100644 index 0000000..d0b8c95 --- /dev/null +++ b/libpcsxcore/.deps/decode_xa.Po @@ -0,0 +1,225 @@ +decode_xa.o: ../libpcsxcore/decode_xa.c /usr/include/stdc-predef.h \ + ../libpcsxcore/decode_xa.h ../libpcsxcore/psxcommon.h \ + ../include/config.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: diff --git a/libpcsxcore/.deps/disr3000a.Po b/libpcsxcore/.deps/disr3000a.Po new file mode 100644 index 0000000..030a644 --- /dev/null +++ b/libpcsxcore/.deps/disr3000a.Po @@ -0,0 +1,249 @@ +disr3000a.o: ../libpcsxcore/disr3000a.c /usr/include/stdc-predef.h \ + ../libpcsxcore/psxcommon.h ../include/config.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/r3000a.h \ + ../libpcsxcore/psxmem.h ../libpcsxcore/psxcounters.h \ + ../libpcsxcore/plugins.h ../libpcsxcore/spu.h \ + ../libpcsxcore/psemu_plugin_defs.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/psxbios.h ../libpcsxcore/misc.h ../libpcsxcore/coff.h \ + ../libpcsxcore/sio.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: diff --git a/libpcsxcore/.deps/gte.Po b/libpcsxcore/.deps/gte.Po new file mode 100644 index 0000000..7b6b35d --- /dev/null +++ b/libpcsxcore/.deps/gte.Po @@ -0,0 +1,254 @@ +gte.o: ../libpcsxcore/gte.c /usr/include/stdc-predef.h \ + ../libpcsxcore/gte.h ../libpcsxcore/psxcommon.h ../include/config.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/r3000a.h \ + ../libpcsxcore/psxmem.h ../libpcsxcore/psxcounters.h \ + ../libpcsxcore/plugins.h ../libpcsxcore/spu.h \ + ../libpcsxcore/psemu_plugin_defs.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/psxbios.h ../libpcsxcore/misc.h ../libpcsxcore/coff.h \ + ../libpcsxcore/sio.h ../libpcsxcore/gte_divider.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/gte.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/gte_divider.h: diff --git a/libpcsxcore/.deps/iR3000A-64.Po b/libpcsxcore/.deps/iR3000A-64.Po new file mode 100644 index 0000000..4b74d96 --- /dev/null +++ b/libpcsxcore/.deps/iR3000A-64.Po @@ -0,0 +1,282 @@ +iR3000A-64.o: ../libpcsxcore/ix86_64/iR3000A-64.c \ + /usr/include/stdc-predef.h ../libpcsxcore/ix86_64/ix86-64.h \ + ../libpcsxcore/ix86_64/../psxcommon.h ../include/config.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + ../libpcsxcore/ix86_64/../system.h ../libpcsxcore/ix86_64/../debug.h \ + /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdbool.h \ + ../libpcsxcore/ix86_64/../r3000a.h ../libpcsxcore/ix86_64/../psxcommon.h \ + ../libpcsxcore/ix86_64/../psxmem.h \ + ../libpcsxcore/ix86_64/../psxcounters.h \ + ../libpcsxcore/ix86_64/../r3000a.h ../libpcsxcore/ix86_64/../plugins.h \ + ../libpcsxcore/ix86_64/../spu.h \ + ../libpcsxcore/ix86_64/../psemu_plugin_defs.h \ + ../libpcsxcore/ix86_64/../decode_xa.h \ + ../libpcsxcore/ix86_64/../psxbios.h ../libpcsxcore/ix86_64/../misc.h \ + ../libpcsxcore/ix86_64/../coff.h ../libpcsxcore/ix86_64/../sio.h \ + ../libpcsxcore/ix86_64/../psxhle.h \ + /usr/include/x86_64-linux-gnu/sys/mman.h \ + /usr/include/x86_64-linux-gnu/bits/mman.h \ + /usr/include/x86_64-linux-gnu/bits/mman-linux.h \ + ../libpcsxcore/ix86_64/iGte.h ../libpcsxcore/ix86_64/../psxmem.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/ix86_64/ix86-64.h: + +../libpcsxcore/ix86_64/../psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/ix86_64/../system.h: + +../libpcsxcore/ix86_64/../debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdbool.h: + +../libpcsxcore/ix86_64/../r3000a.h: + +../libpcsxcore/ix86_64/../psxcommon.h: + +../libpcsxcore/ix86_64/../psxmem.h: + +../libpcsxcore/ix86_64/../psxcounters.h: + +../libpcsxcore/ix86_64/../r3000a.h: + +../libpcsxcore/ix86_64/../plugins.h: + +../libpcsxcore/ix86_64/../spu.h: + +../libpcsxcore/ix86_64/../psemu_plugin_defs.h: + +../libpcsxcore/ix86_64/../decode_xa.h: + +../libpcsxcore/ix86_64/../psxbios.h: + +../libpcsxcore/ix86_64/../misc.h: + +../libpcsxcore/ix86_64/../coff.h: + +../libpcsxcore/ix86_64/../sio.h: + +../libpcsxcore/ix86_64/../psxhle.h: + +/usr/include/x86_64-linux-gnu/sys/mman.h: + +/usr/include/x86_64-linux-gnu/bits/mman.h: + +/usr/include/x86_64-linux-gnu/bits/mman-linux.h: + +../libpcsxcore/ix86_64/iGte.h: + +../libpcsxcore/ix86_64/../psxmem.h: diff --git a/libpcsxcore/.deps/iR3000A.Po b/libpcsxcore/.deps/iR3000A.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/libpcsxcore/.deps/iR3000A.Po @@ -0,0 +1 @@ +# dummy diff --git a/libpcsxcore/.deps/ix86-64.Po b/libpcsxcore/.deps/ix86-64.Po new file mode 100644 index 0000000..6ec8e97 --- /dev/null +++ b/libpcsxcore/.deps/ix86-64.Po @@ -0,0 +1,228 @@ +ix86-64.o: ../libpcsxcore/ix86_64/ix86-64.c /usr/include/stdc-predef.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/assert.h \ + ../libpcsxcore/ix86_64/ix86-64.h ../libpcsxcore/ix86_64/../psxcommon.h \ + ../include/config.h /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h \ + /usr/include/stdint.h /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/zlib.h /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + ../libpcsxcore/ix86_64/../system.h ../libpcsxcore/ix86_64/../debug.h \ + /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdbool.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/include/assert.h: + +../libpcsxcore/ix86_64/ix86-64.h: + +../libpcsxcore/ix86_64/../psxcommon.h: + +../include/config.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/ix86_64/../system.h: + +../libpcsxcore/ix86_64/../debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdbool.h: diff --git a/libpcsxcore/.deps/ix86.Po b/libpcsxcore/.deps/ix86.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/libpcsxcore/.deps/ix86.Po @@ -0,0 +1 @@ +# dummy diff --git a/libpcsxcore/.deps/ix86_3dnow.Po b/libpcsxcore/.deps/ix86_3dnow.Po new file mode 100644 index 0000000..f14d6a4 --- /dev/null +++ b/libpcsxcore/.deps/ix86_3dnow.Po @@ -0,0 +1,230 @@ +ix86_3dnow.o: ../libpcsxcore/ix86_64/ix86_3dnow.c \ + /usr/include/stdc-predef.h ../libpcsxcore/ix86_64/ix86-64.h \ + ../libpcsxcore/ix86_64/../psxcommon.h ../include/config.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + ../libpcsxcore/ix86_64/../system.h ../libpcsxcore/ix86_64/../debug.h \ + /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdbool.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/ix86_64/ix86-64.h: + +../libpcsxcore/ix86_64/../psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/ix86_64/../system.h: + +../libpcsxcore/ix86_64/../debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdbool.h: diff --git a/libpcsxcore/.deps/ix86_cpudetect.Po b/libpcsxcore/.deps/ix86_cpudetect.Po new file mode 100644 index 0000000..dd0c199 --- /dev/null +++ b/libpcsxcore/.deps/ix86_cpudetect.Po @@ -0,0 +1,247 @@ +ix86_cpudetect.o: ../libpcsxcore/ix86_64/ix86_cpudetect.c \ + /usr/include/stdc-predef.h /usr/include/string.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h /usr/include/xlocale.h \ + /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + ../libpcsxcore/ix86_64/ix86-64.h ../libpcsxcore/ix86_64/../psxcommon.h \ + ../include/config.h /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h \ + /usr/include/stdint.h /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + ../libpcsxcore/ix86_64/../system.h ../libpcsxcore/ix86_64/../debug.h \ + /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdbool.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h + +/usr/include/stdc-predef.h: + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +../libpcsxcore/ix86_64/ix86-64.h: + +../libpcsxcore/ix86_64/../psxcommon.h: + +../include/config.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/ix86_64/../system.h: + +../libpcsxcore/ix86_64/../debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdbool.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: diff --git a/libpcsxcore/.deps/ix86_fpu.Po b/libpcsxcore/.deps/ix86_fpu.Po new file mode 100644 index 0000000..69ed46a --- /dev/null +++ b/libpcsxcore/.deps/ix86_fpu.Po @@ -0,0 +1,229 @@ +ix86_fpu.o: ../libpcsxcore/ix86_64/ix86_fpu.c /usr/include/stdc-predef.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + ../libpcsxcore/ix86_64/ix86-64.h ../libpcsxcore/ix86_64/../psxcommon.h \ + ../include/config.h /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h \ + /usr/include/stdint.h /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + ../libpcsxcore/ix86_64/../system.h ../libpcsxcore/ix86_64/../debug.h \ + /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdbool.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +../libpcsxcore/ix86_64/ix86-64.h: + +../libpcsxcore/ix86_64/../psxcommon.h: + +../include/config.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/ix86_64/../system.h: + +../libpcsxcore/ix86_64/../debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdbool.h: diff --git a/libpcsxcore/.deps/ix86_mmx.Po b/libpcsxcore/.deps/ix86_mmx.Po new file mode 100644 index 0000000..411e56e --- /dev/null +++ b/libpcsxcore/.deps/ix86_mmx.Po @@ -0,0 +1,229 @@ +ix86_mmx.o: ../libpcsxcore/ix86_64/ix86_mmx.c /usr/include/stdc-predef.h \ + ../libpcsxcore/ix86_64/ix86-64.h ../libpcsxcore/ix86_64/../psxcommon.h \ + ../include/config.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + ../libpcsxcore/ix86_64/../system.h ../libpcsxcore/ix86_64/../debug.h \ + /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdbool.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/ix86_64/ix86-64.h: + +../libpcsxcore/ix86_64/../psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/ix86_64/../system.h: + +../libpcsxcore/ix86_64/../debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdbool.h: diff --git a/libpcsxcore/.deps/ix86_sse.Po b/libpcsxcore/.deps/ix86_sse.Po new file mode 100644 index 0000000..bd64fd5 --- /dev/null +++ b/libpcsxcore/.deps/ix86_sse.Po @@ -0,0 +1,229 @@ +ix86_sse.o: ../libpcsxcore/ix86_64/ix86_sse.c /usr/include/stdc-predef.h \ + /usr/include/assert.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + ../libpcsxcore/ix86_64/ix86-64.h ../libpcsxcore/ix86_64/../psxcommon.h \ + ../include/config.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/zlib.h /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + ../libpcsxcore/ix86_64/../system.h ../libpcsxcore/ix86_64/../debug.h \ + /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdbool.h + +/usr/include/stdc-predef.h: + +/usr/include/assert.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +../libpcsxcore/ix86_64/ix86-64.h: + +../libpcsxcore/ix86_64/../psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/ix86_64/../system.h: + +../libpcsxcore/ix86_64/../debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdbool.h: diff --git a/libpcsxcore/.deps/mdec.Po b/libpcsxcore/.deps/mdec.Po new file mode 100644 index 0000000..3e052b8 --- /dev/null +++ b/libpcsxcore/.deps/mdec.Po @@ -0,0 +1,256 @@ +mdec.o: ../libpcsxcore/mdec.c /usr/include/stdc-predef.h \ + ../libpcsxcore/mdec.h ../libpcsxcore/psxcommon.h ../include/config.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/r3000a.h \ + ../libpcsxcore/psxmem.h ../libpcsxcore/psxcounters.h \ + ../libpcsxcore/plugins.h ../libpcsxcore/spu.h \ + ../libpcsxcore/psemu_plugin_defs.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/psxbios.h ../libpcsxcore/misc.h ../libpcsxcore/coff.h \ + ../libpcsxcore/sio.h ../libpcsxcore/psxhw.h ../libpcsxcore/psxdma.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/mdec.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/psxhw.h: + +../libpcsxcore/psxdma.h: diff --git a/libpcsxcore/.deps/misc.Po b/libpcsxcore/.deps/misc.Po new file mode 100644 index 0000000..b584181 --- /dev/null +++ b/libpcsxcore/.deps/misc.Po @@ -0,0 +1,261 @@ +misc.o: ../libpcsxcore/misc.c /usr/include/stdc-predef.h \ + ../libpcsxcore/misc.h ../libpcsxcore/psxcommon.h ../include/config.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/coff.h \ + ../libpcsxcore/plugins.h ../libpcsxcore/spu.h ../libpcsxcore/r3000a.h \ + ../libpcsxcore/psxmem.h ../libpcsxcore/psxcounters.h \ + ../libpcsxcore/psxbios.h ../libpcsxcore/sio.h \ + ../libpcsxcore/psemu_plugin_defs.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/cdrom.h ../libpcsxcore/psxhw.h ../libpcsxcore/mdec.h \ + ../libpcsxcore/psxdma.h ../libpcsxcore/ppf.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/cdrom.h: + +../libpcsxcore/psxhw.h: + +../libpcsxcore/mdec.h: + +../libpcsxcore/psxdma.h: + +../libpcsxcore/ppf.h: diff --git a/libpcsxcore/.deps/pR3000A.Po b/libpcsxcore/.deps/pR3000A.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/libpcsxcore/.deps/pR3000A.Po @@ -0,0 +1 @@ +# dummy diff --git a/libpcsxcore/.deps/plugins.Po b/libpcsxcore/.deps/plugins.Po new file mode 100644 index 0000000..f39a666 --- /dev/null +++ b/libpcsxcore/.deps/plugins.Po @@ -0,0 +1,252 @@ +plugins.o: ../libpcsxcore/plugins.c /usr/include/stdc-predef.h \ + ../libpcsxcore/plugins.h ../libpcsxcore/psxcommon.h ../include/config.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/spu.h \ + ../libpcsxcore/r3000a.h ../libpcsxcore/psxmem.h \ + ../libpcsxcore/psxcounters.h ../libpcsxcore/psxbios.h \ + ../libpcsxcore/misc.h ../libpcsxcore/coff.h ../libpcsxcore/sio.h \ + ../libpcsxcore/psemu_plugin_defs.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/cdriso.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/cdriso.h: diff --git a/libpcsxcore/.deps/ppc.Po b/libpcsxcore/.deps/ppc.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/libpcsxcore/.deps/ppc.Po @@ -0,0 +1 @@ +# dummy diff --git a/libpcsxcore/.deps/ppf.Po b/libpcsxcore/.deps/ppf.Po new file mode 100644 index 0000000..9bbda33 --- /dev/null +++ b/libpcsxcore/.deps/ppf.Po @@ -0,0 +1,256 @@ +ppf.o: ../libpcsxcore/ppf.c /usr/include/stdc-predef.h \ + ../libpcsxcore/psxcommon.h ../include/config.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/ppf.h \ + ../libpcsxcore/cdrom.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/r3000a.h ../libpcsxcore/psxmem.h \ + ../libpcsxcore/psxcounters.h ../libpcsxcore/plugins.h \ + ../libpcsxcore/spu.h ../libpcsxcore/psemu_plugin_defs.h \ + ../libpcsxcore/psxbios.h ../libpcsxcore/misc.h ../libpcsxcore/coff.h \ + ../libpcsxcore/sio.h ../libpcsxcore/psxhw.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/ppf.h: + +../libpcsxcore/cdrom.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/psxhw.h: diff --git a/libpcsxcore/.deps/psxbios.Po b/libpcsxcore/.deps/psxbios.Po new file mode 100644 index 0000000..da02ee7 --- /dev/null +++ b/libpcsxcore/.deps/psxbios.Po @@ -0,0 +1,254 @@ +psxbios.o: ../libpcsxcore/psxbios.c /usr/include/stdc-predef.h \ + ../libpcsxcore/psxbios.h ../libpcsxcore/psxcommon.h ../include/config.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/r3000a.h \ + ../libpcsxcore/psxmem.h ../libpcsxcore/psxcounters.h \ + ../libpcsxcore/plugins.h ../libpcsxcore/spu.h \ + ../libpcsxcore/psemu_plugin_defs.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/misc.h ../libpcsxcore/coff.h ../libpcsxcore/sio.h \ + ../libpcsxcore/psxhw.h ../libpcsxcore/sjisfont.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/psxhw.h: + +../libpcsxcore/sjisfont.h: diff --git a/libpcsxcore/.deps/psxcommon.Po b/libpcsxcore/.deps/psxcommon.Po new file mode 100644 index 0000000..75ae16d --- /dev/null +++ b/libpcsxcore/.deps/psxcommon.Po @@ -0,0 +1,253 @@ +psxcommon.o: ../libpcsxcore/psxcommon.c /usr/include/stdc-predef.h \ + ../libpcsxcore/psxcommon.h ../include/config.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/r3000a.h \ + ../libpcsxcore/psxmem.h ../libpcsxcore/psxcounters.h \ + ../libpcsxcore/plugins.h ../libpcsxcore/spu.h \ + ../libpcsxcore/psemu_plugin_defs.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/psxbios.h ../libpcsxcore/misc.h ../libpcsxcore/coff.h \ + ../libpcsxcore/sio.h ../libpcsxcore/cheat.h ../libpcsxcore/ppf.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/cheat.h: + +../libpcsxcore/ppf.h: diff --git a/libpcsxcore/.deps/psxcounters.Po b/libpcsxcore/.deps/psxcounters.Po new file mode 100644 index 0000000..cae44bc --- /dev/null +++ b/libpcsxcore/.deps/psxcounters.Po @@ -0,0 +1,249 @@ +psxcounters.o: ../libpcsxcore/psxcounters.c /usr/include/stdc-predef.h \ + ../libpcsxcore/psxcounters.h ../libpcsxcore/psxcommon.h \ + ../include/config.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/r3000a.h \ + ../libpcsxcore/psxmem.h ../libpcsxcore/psxbios.h ../libpcsxcore/misc.h \ + ../libpcsxcore/coff.h ../libpcsxcore/plugins.h ../libpcsxcore/spu.h \ + ../libpcsxcore/psemu_plugin_defs.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/sio.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/sio.h: diff --git a/libpcsxcore/.deps/psxdma.Po b/libpcsxcore/.deps/psxdma.Po new file mode 100644 index 0000000..483e4d7 --- /dev/null +++ b/libpcsxcore/.deps/psxdma.Po @@ -0,0 +1,254 @@ +psxdma.o: ../libpcsxcore/psxdma.c /usr/include/stdc-predef.h \ + ../libpcsxcore/psxdma.h ../libpcsxcore/psxcommon.h ../include/config.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/r3000a.h \ + ../libpcsxcore/psxmem.h ../libpcsxcore/psxcounters.h \ + ../libpcsxcore/plugins.h ../libpcsxcore/spu.h \ + ../libpcsxcore/psemu_plugin_defs.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/psxbios.h ../libpcsxcore/misc.h ../libpcsxcore/coff.h \ + ../libpcsxcore/sio.h ../libpcsxcore/psxhw.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/psxdma.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/psxhw.h: diff --git a/libpcsxcore/.deps/psxhle.Po b/libpcsxcore/.deps/psxhle.Po new file mode 100644 index 0000000..a960d62 --- /dev/null +++ b/libpcsxcore/.deps/psxhle.Po @@ -0,0 +1,252 @@ +psxhle.o: ../libpcsxcore/psxhle.c /usr/include/stdc-predef.h \ + ../libpcsxcore/psxhle.h ../libpcsxcore/psxcommon.h ../include/config.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/r3000a.h \ + ../libpcsxcore/psxmem.h ../libpcsxcore/psxcounters.h \ + ../libpcsxcore/plugins.h ../libpcsxcore/spu.h \ + ../libpcsxcore/psemu_plugin_defs.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/psxbios.h ../libpcsxcore/misc.h ../libpcsxcore/coff.h \ + ../libpcsxcore/sio.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/psxhle.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: diff --git a/libpcsxcore/.deps/psxhw.Po b/libpcsxcore/.deps/psxhw.Po new file mode 100644 index 0000000..b508d18 --- /dev/null +++ b/libpcsxcore/.deps/psxhw.Po @@ -0,0 +1,259 @@ +psxhw.o: ../libpcsxcore/psxhw.c /usr/include/stdc-predef.h \ + ../libpcsxcore/psxhw.h ../libpcsxcore/psxcommon.h ../include/config.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/r3000a.h \ + ../libpcsxcore/psxmem.h ../libpcsxcore/psxcounters.h \ + ../libpcsxcore/plugins.h ../libpcsxcore/spu.h \ + ../libpcsxcore/psemu_plugin_defs.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/psxbios.h ../libpcsxcore/misc.h ../libpcsxcore/coff.h \ + ../libpcsxcore/sio.h ../libpcsxcore/mdec.h ../libpcsxcore/psxdma.h \ + ../libpcsxcore/cdrom.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/psxhw.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/mdec.h: + +../libpcsxcore/psxdma.h: + +../libpcsxcore/cdrom.h: diff --git a/libpcsxcore/.deps/psxinterpreter.Po b/libpcsxcore/.deps/psxinterpreter.Po new file mode 100644 index 0000000..1b43d0c --- /dev/null +++ b/libpcsxcore/.deps/psxinterpreter.Po @@ -0,0 +1,254 @@ +psxinterpreter.o: ../libpcsxcore/psxinterpreter.c \ + /usr/include/stdc-predef.h ../libpcsxcore/psxcommon.h \ + ../include/config.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/r3000a.h \ + ../libpcsxcore/psxmem.h ../libpcsxcore/psxcounters.h \ + ../libpcsxcore/plugins.h ../libpcsxcore/spu.h \ + ../libpcsxcore/psemu_plugin_defs.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/psxbios.h ../libpcsxcore/misc.h ../libpcsxcore/coff.h \ + ../libpcsxcore/sio.h ../libpcsxcore/gte.h ../libpcsxcore/psxhle.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/gte.h: + +../libpcsxcore/psxhle.h: diff --git a/libpcsxcore/.deps/psxmem.Po b/libpcsxcore/.deps/psxmem.Po new file mode 100644 index 0000000..1723c86 --- /dev/null +++ b/libpcsxcore/.deps/psxmem.Po @@ -0,0 +1,260 @@ +psxmem.o: ../libpcsxcore/psxmem.c /usr/include/stdc-predef.h \ + ../libpcsxcore/psxmem.h ../libpcsxcore/psxcommon.h ../include/config.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/r3000a.h \ + ../libpcsxcore/psxcounters.h ../libpcsxcore/plugins.h \ + ../libpcsxcore/spu.h ../libpcsxcore/psemu_plugin_defs.h \ + ../libpcsxcore/decode_xa.h ../libpcsxcore/psxbios.h \ + ../libpcsxcore/misc.h ../libpcsxcore/coff.h ../libpcsxcore/sio.h \ + ../libpcsxcore/psxhw.h /usr/include/x86_64-linux-gnu/sys/mman.h \ + /usr/include/x86_64-linux-gnu/bits/mman.h \ + /usr/include/x86_64-linux-gnu/bits/mman-linux.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/psxhw.h: + +/usr/include/x86_64-linux-gnu/sys/mman.h: + +/usr/include/x86_64-linux-gnu/bits/mman.h: + +/usr/include/x86_64-linux-gnu/bits/mman-linux.h: diff --git a/libpcsxcore/.deps/r3000a.Po b/libpcsxcore/.deps/r3000a.Po new file mode 100644 index 0000000..c5334e7 --- /dev/null +++ b/libpcsxcore/.deps/r3000a.Po @@ -0,0 +1,261 @@ +r3000a.o: ../libpcsxcore/r3000a.c /usr/include/stdc-predef.h \ + ../libpcsxcore/r3000a.h ../libpcsxcore/psxcommon.h ../include/config.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/psxmem.h \ + ../libpcsxcore/psxcounters.h ../libpcsxcore/plugins.h \ + ../libpcsxcore/spu.h ../libpcsxcore/psemu_plugin_defs.h \ + ../libpcsxcore/decode_xa.h ../libpcsxcore/psxbios.h \ + ../libpcsxcore/misc.h ../libpcsxcore/coff.h ../libpcsxcore/sio.h \ + ../libpcsxcore/cdrom.h ../libpcsxcore/psxhw.h ../libpcsxcore/mdec.h \ + ../libpcsxcore/psxdma.h ../libpcsxcore/gte.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/cdrom.h: + +../libpcsxcore/psxhw.h: + +../libpcsxcore/mdec.h: + +../libpcsxcore/psxdma.h: + +../libpcsxcore/gte.h: diff --git a/libpcsxcore/.deps/reguse.Po b/libpcsxcore/.deps/reguse.Po new file mode 100644 index 0000000..9ce06a8 --- /dev/null +++ b/libpcsxcore/.deps/reguse.Po @@ -0,0 +1 @@ +# dummy diff --git a/libpcsxcore/.deps/sio.Po b/libpcsxcore/.deps/sio.Po new file mode 100644 index 0000000..257469d --- /dev/null +++ b/libpcsxcore/.deps/sio.Po @@ -0,0 +1,255 @@ +sio.o: ../libpcsxcore/sio.c /usr/include/stdc-predef.h \ + ../libpcsxcore/sio.h ../libpcsxcore/psxcommon.h ../include/config.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/r3000a.h \ + ../libpcsxcore/psxmem.h ../libpcsxcore/psxcounters.h \ + ../libpcsxcore/plugins.h ../libpcsxcore/spu.h \ + ../libpcsxcore/psemu_plugin_defs.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/psxbios.h ../libpcsxcore/misc.h ../libpcsxcore/coff.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/sio.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: diff --git a/libpcsxcore/.deps/socket.Po b/libpcsxcore/.deps/socket.Po new file mode 100644 index 0000000..c12605a --- /dev/null +++ b/libpcsxcore/.deps/socket.Po @@ -0,0 +1,304 @@ +socket.o: ../libpcsxcore/socket.c /usr/include/stdc-predef.h \ + ../libpcsxcore/psxcommon.h ../include/config.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/socket.h \ + /usr/include/x86_64-linux-gnu/sys/socket.h \ + /usr/include/x86_64-linux-gnu/sys/uio.h \ + /usr/include/x86_64-linux-gnu/bits/uio.h \ + /usr/include/x86_64-linux-gnu/bits/socket.h \ + /usr/include/x86_64-linux-gnu/bits/socket_type.h \ + /usr/include/x86_64-linux-gnu/bits/sockaddr.h \ + /usr/include/x86_64-linux-gnu/asm/socket.h \ + /usr/include/asm-generic/socket.h \ + /usr/include/x86_64-linux-gnu/asm/sockios.h \ + /usr/include/asm-generic/sockios.h \ + /usr/include/x86_64-linux-gnu/bits/socket2.h \ + /usr/include/x86_64-linux-gnu/sys/ioctl.h \ + /usr/include/x86_64-linux-gnu/bits/ioctls.h \ + /usr/include/x86_64-linux-gnu/asm/ioctls.h \ + /usr/include/asm-generic/ioctls.h /usr/include/linux/ioctl.h \ + /usr/include/x86_64-linux-gnu/asm/ioctl.h \ + /usr/include/asm-generic/ioctl.h \ + /usr/include/x86_64-linux-gnu/bits/ioctl-types.h \ + /usr/include/x86_64-linux-gnu/sys/ttydefaults.h /usr/include/arpa/inet.h \ + /usr/include/netinet/in.h /usr/include/x86_64-linux-gnu/bits/in.h \ + /usr/include/fcntl.h /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl2.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/socket.h: + +/usr/include/x86_64-linux-gnu/sys/socket.h: + +/usr/include/x86_64-linux-gnu/sys/uio.h: + +/usr/include/x86_64-linux-gnu/bits/uio.h: + +/usr/include/x86_64-linux-gnu/bits/socket.h: + +/usr/include/x86_64-linux-gnu/bits/socket_type.h: + +/usr/include/x86_64-linux-gnu/bits/sockaddr.h: + +/usr/include/x86_64-linux-gnu/asm/socket.h: + +/usr/include/asm-generic/socket.h: + +/usr/include/x86_64-linux-gnu/asm/sockios.h: + +/usr/include/asm-generic/sockios.h: + +/usr/include/x86_64-linux-gnu/bits/socket2.h: + +/usr/include/x86_64-linux-gnu/sys/ioctl.h: + +/usr/include/x86_64-linux-gnu/bits/ioctls.h: + +/usr/include/x86_64-linux-gnu/asm/ioctls.h: + +/usr/include/asm-generic/ioctls.h: + +/usr/include/linux/ioctl.h: + +/usr/include/x86_64-linux-gnu/asm/ioctl.h: + +/usr/include/asm-generic/ioctl.h: + +/usr/include/x86_64-linux-gnu/bits/ioctl-types.h: + +/usr/include/x86_64-linux-gnu/sys/ttydefaults.h: + +/usr/include/arpa/inet.h: + +/usr/include/netinet/in.h: + +/usr/include/x86_64-linux-gnu/bits/in.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl2.h: diff --git a/libpcsxcore/.deps/spu.Po b/libpcsxcore/.deps/spu.Po new file mode 100644 index 0000000..d75edb4 --- /dev/null +++ b/libpcsxcore/.deps/spu.Po @@ -0,0 +1,249 @@ +spu.o: ../libpcsxcore/spu.c /usr/include/stdc-predef.h \ + ../libpcsxcore/spu.h ../libpcsxcore/psxcommon.h ../include/config.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/ctype.h \ + /usr/include/assert.h /usr/include/zlib.h \ + /usr/include/x86_64-linux-gnu/zconf.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h ../libpcsxcore/system.h \ + ../libpcsxcore/debug.h /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h ../libpcsxcore/plugins.h \ + ../libpcsxcore/psemu_plugin_defs.h ../libpcsxcore/decode_xa.h \ + ../libpcsxcore/r3000a.h ../libpcsxcore/psxmem.h \ + ../libpcsxcore/psxcounters.h ../libpcsxcore/psxbios.h \ + ../libpcsxcore/misc.h ../libpcsxcore/coff.h ../libpcsxcore/sio.h + +/usr/include/stdc-predef.h: + +../libpcsxcore/spu.h: + +../libpcsxcore/psxcommon.h: + +../include/config.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/ctype.h: + +/usr/include/assert.h: + +/usr/include/zlib.h: + +/usr/include/x86_64-linux-gnu/zconf.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +../libpcsxcore/system.h: + +../libpcsxcore/debug.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +../libpcsxcore/plugins.h: + +../libpcsxcore/psemu_plugin_defs.h: + +../libpcsxcore/decode_xa.h: + +../libpcsxcore/r3000a.h: + +../libpcsxcore/psxmem.h: + +../libpcsxcore/psxcounters.h: + +../libpcsxcore/psxbios.h: + +../libpcsxcore/misc.h: + +../libpcsxcore/coff.h: + +../libpcsxcore/sio.h: diff --git a/libpcsxcore/cdriso.c b/libpcsxcore/cdriso.c new file mode 100644 index 0000000..fdb41c0 --- /dev/null +++ b/libpcsxcore/cdriso.c @@ -0,0 +1,894 @@ +/*************************************************************************** + * Copyright (C) 2007 PCSX-df Team * + * Copyright (C) 2009 Wei Mingzhi * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#include "psxcommon.h" +#include "plugins.h" +#include "cdrom.h" +#include "cdriso.h" + +#if 0 +#ifdef _WIN32 +#include +#include +#else +#include +#include +#endif +#endif +#include + +static FILE *cdHandle = NULL; +static FILE *cddaHandle = NULL; +static FILE *subHandle = NULL; + +static boolean subChanMixed = FALSE; +static boolean subChanRaw = FALSE; + +static unsigned char cdbuffer[DATA_SIZE]; +static unsigned char subbuffer[SUB_FRAMESIZE]; + +static unsigned char sndbuffer[CD_FRAMESIZE_RAW * 10]; + +#define CDDA_FRAMETIME (1000 * (sizeof(sndbuffer) / CD_FRAMESIZE_RAW) / 75) +#if 0 +#ifdef _WIN32 +static HANDLE threadid; +#else +static pthread_t threadid; +#endif +#endif + +static unsigned int initial_offset = 0; +static volatile boolean playing = FALSE; +static boolean cddaBigEndian = FALSE; +static volatile unsigned int cddaCurOffset = 0; + +char* CALLBACK CDR__getDriveLetter(void); +long CALLBACK CDR__configure(void); +long CALLBACK CDR__test(void); +void CALLBACK CDR__about(void); +long CALLBACK CDR__setfilename(char *filename); +long CALLBACK CDR__getStatus(struct CdrStat *stat); + +extern void *hCDRDriver; + +struct trackinfo { + enum {DATA, CDDA} type; + char start[3]; // MSF-format + char length[3]; // MSF-format +}; + +#define MAXTRACKS 100 /* How many tracks can a CD hold? */ + +static int numtracks = 0; +static struct trackinfo ti[MAXTRACKS]; + +// get a sector from a msf-array +static unsigned int msf2sec(char *msf) { + return ((msf[0] * 60 + msf[1]) * 75) + msf[2]; +} + +static void sec2msf(unsigned int s, char *msf) { + msf[0] = s / 75 / 60; + s = s - msf[0] * 75 * 60; + msf[1] = s / 75; + s = s - msf[1] * 75; + msf[2] = s; +} + +// divide a string of xx:yy:zz into m, s, f +static void tok2msf(char *time, char *msf) { + char *token; + + token = strtok(time, ":"); + if (token) { + msf[0] = atoi(token); + } + else { + msf[0] = 0; + } + + token = strtok(NULL, ":"); + if (token) { + msf[1] = atoi(token); + } + else { + msf[1] = 0; + } + + token = strtok(NULL, ":"); + if (token) { + msf[2] = atoi(token); + } + else { + msf[2] = 0; + } +} + +#ifndef _WIN32 +static long GetTickCount(void) { + static time_t initial_time = 0; + struct timeval now; + + gettimeofday(&now, NULL); + + if (initial_time == 0) { + initial_time = now.tv_sec; + } + + return (now.tv_sec - initial_time) * 1000L + now.tv_usec / 1000L; +} +#endif + +// this thread plays audio data +#ifdef _WIN32 +static void playthread(void *param) +#else +static void *playthread(void *param) +#endif +{ +#if 0 + long d, t, i, s; + unsigned char tmp; + + t = GetTickCount(); + + while (playing) { + d = t - (long)GetTickCount(); + if (d <= 0) { + d = 1; + } + else if (d > CDDA_FRAMETIME) { + d = CDDA_FRAMETIME; + } +#ifdef _WIN32 + Sleep(d); +#else + usleep(d * 1000); +#endif + + t = GetTickCount() + CDDA_FRAMETIME; + + if (subChanMixed) { + s = 0; + + for (i = 0; i < sizeof(sndbuffer) / CD_FRAMESIZE_RAW; i++) { + // read one sector + d = fread(sndbuffer + CD_FRAMESIZE_RAW * i, 1, CD_FRAMESIZE_RAW, cddaHandle); + if (d < CD_FRAMESIZE_RAW) { + break; + } + + s += d; + + // skip the subchannel data + fseek(cddaHandle, SUB_FRAMESIZE, SEEK_CUR); + } + } + else { + s = fread(sndbuffer, 1, sizeof(sndbuffer), cddaHandle); + } + + if (s == 0) { + playing = FALSE; + fclose(cddaHandle); + cddaHandle = NULL; + initial_offset = 0; + break; + } + + if (!cdr.Muted && playing) { + if (cddaBigEndian) { + for (i = 0; i < s / 2; i++) { + tmp = sndbuffer[i * 2]; + sndbuffer[i * 2] = sndbuffer[i * 2 + 1]; + sndbuffer[i * 2 + 1] = tmp; + } + } + + SPU_playCDDAchannel((short *)sndbuffer, s); + } + + cddaCurOffset += s; + } + +#ifdef _WIN32 + _endthread(); +#else + pthread_exit(0); + return NULL; +#endif +#endif +return NULL; +} + +// stop the CDDA playback +static void stopCDDA() { +#if 0 + if (!playing) { + return; + } + + playing = FALSE; +#ifdef _WIN32 + WaitForSingleObject(threadid, INFINITE); +#else + pthread_join(threadid, NULL); +#endif + + if (cddaHandle != NULL) { + fclose(cddaHandle); + cddaHandle = NULL; + } + + initial_offset = 0; +#endif +} + +// start the CDDA playback +static void startCDDA(unsigned int offset) { +#if 0 + if (playing) { + if (initial_offset == offset) { + return; + } + stopCDDA(); + } + + cddaHandle = fopen(GetIsoFile(), "rb"); + if (cddaHandle == NULL) { + return; + } + + initial_offset = offset; + cddaCurOffset = initial_offset; + fseek(cddaHandle, initial_offset, SEEK_SET); + + playing = TRUE; + +#ifdef _WIN32 + threadid = (HANDLE)_beginthread(playthread, 0, NULL); +#else + pthread_create(&threadid, NULL, playthread, NULL); +#endif + +#endif +} + +// this function tries to get the .toc file of the given .bin +// the necessary data is put into the ti (trackinformation)-array +static int parsetoc(const char *isofile) { + char tocname[MAXPATHLEN]; + FILE *fi; + char linebuf[256], dummy[256], name[256]; + char *token; + char time[20], time2[20]; + unsigned int t; + + numtracks = 0; + + // copy name of the iso and change extension from .bin to .toc + strncpy(tocname, isofile, sizeof(tocname)); + tocname[MAXPATHLEN - 1] = '\0'; + if (strlen(tocname) >= 4) { + strcpy(tocname + strlen(tocname) - 4, ".toc"); + } + else { + return -1; + } + + if ((fi = fopen(tocname, "r")) == NULL) { + // try changing extension to .cue (to satisfy some stupid tutorials) + strcpy(tocname + strlen(tocname) - 4, ".cue"); + if ((fi = fopen(tocname, "r")) == NULL) { + // if filename is image.toc.bin, try removing .bin (for Brasero) + strcpy(tocname, isofile); + t = strlen(tocname); + if (t >= 8 && strcmp(tocname + t - 8, ".toc.bin") == 0) { + tocname[t - 4] = '\0'; + if ((fi = fopen(tocname, "r")) == NULL) { + return -1; + } + } + else { + return -1; + } + } + } + + memset(&ti, 0, sizeof(ti)); + cddaBigEndian = TRUE; // cdrdao uses big-endian for CD Audio + + // parse the .toc file + while (fgets(linebuf, sizeof(linebuf), fi) != NULL) { + // search for tracks + strncpy(dummy, linebuf, sizeof(linebuf)); + token = strtok(dummy, " "); + + if (token == NULL) continue; + + if (!strcmp(token, "TRACK")) { + // get type of track + token = strtok(NULL, " "); + numtracks++; + + if (!strncmp(token, "MODE2_RAW", 9)) { + ti[numtracks].type = DATA; + sec2msf(2 * 75, ti[numtracks].start); // assume data track on 0:2:0 + + // check if this image contains mixed subchannel data + token = strtok(NULL, " "); + if (token != NULL && !strncmp(token, "RW_RAW", 6)) { + subChanMixed = TRUE; + subChanRaw = TRUE; + } + } + else if (!strncmp(token, "AUDIO", 5)) { + ti[numtracks].type = CDDA; + } + } + else if (!strcmp(token, "DATAFILE")) { + if (ti[numtracks].type == CDDA) { + sscanf(linebuf, "DATAFILE \"%[^\"]\" #%d %8s", name, &t, time2); + t /= CD_FRAMESIZE_RAW + (subChanMixed ? SUB_FRAMESIZE : 0); + t += 2 * 75; + sec2msf(t, (char *)&ti[numtracks].start); + tok2msf((char *)&time2, (char *)&ti[numtracks].length); + } + else { + sscanf(linebuf, "DATAFILE \"%[^\"]\" %8s", name, time); + tok2msf((char *)&time, (char *)&ti[numtracks].length); + } + } + else if (!strcmp(token, "FILE")) { + sscanf(linebuf, "FILE \"%[^\"]\" #%d %8s %8s", name, &t, time, time2); + tok2msf((char *)&time, (char *)&ti[numtracks].start); + t /= CD_FRAMESIZE_RAW + (subChanMixed ? SUB_FRAMESIZE : 0); + t += msf2sec(ti[numtracks].start) + 2 * 75; + sec2msf(t, (char *)&ti[numtracks].start); + tok2msf((char *)&time2, (char *)&ti[numtracks].length); + } + } + + fclose(fi); + + return 0; +} + +// this function tries to get the .cue file of the given .bin +// the necessary data is put into the ti (trackinformation)-array +static int parsecue(const char *isofile) { + char cuename[MAXPATHLEN]; + FILE *fi; + char *token; + char time[20]; + char *tmp; + char linebuf[256], dummy[256]; + unsigned int t; + + numtracks = 0; + + // copy name of the iso and change extension from .bin to .cue + strncpy(cuename, isofile, sizeof(cuename)); + cuename[MAXPATHLEN - 1] = '\0'; + if (strlen(cuename) >= 4) { + strcpy(cuename + strlen(cuename) - 4, ".cue"); + } + else { + return -1; + } + + if ((fi = fopen(cuename, "r")) == NULL) { + return -1; + } + + // Some stupid tutorials wrongly tell users to use cdrdao to rip a + // "bin/cue" image, which is in fact a "bin/toc" image. So let's check + // that... + if (fgets(linebuf, sizeof(linebuf), fi) != NULL) { + if (!strncmp(linebuf, "CD_ROM_XA", 9)) { + // Don't proceed further, as this is actually a .toc file rather + // than a .cue file. + fclose(fi); + return parsetoc(isofile); + } + fseek(fi, 0, SEEK_SET); + } + + memset(&ti, 0, sizeof(ti)); + + while (fgets(linebuf, sizeof(linebuf), fi) != NULL) { + strncpy(dummy, linebuf, sizeof(linebuf)); + token = strtok(dummy, " "); + + if (token == NULL) { + continue; + } + + if (!strcmp(token, "TRACK")){ + numtracks++; + + if (strstr(linebuf, "AUDIO") != NULL) { + ti[numtracks].type = CDDA; + } + else if (strstr(linebuf, "MODE1/2352") != NULL || strstr(linebuf, "MODE2/2352") != NULL) { + ti[numtracks].type = DATA; + } + } + else if (!strcmp(token, "INDEX")) { + tmp = strstr(linebuf, "INDEX"); + if (tmp != NULL) { + tmp += strlen("INDEX") + 3; // 3 - space + numeric index + while (*tmp == ' ') tmp++; + if (*tmp != '\n') sscanf(tmp, "%8s", time); + } + + tok2msf((char *)&time, (char *)&ti[numtracks].start); + + t = msf2sec(ti[numtracks].start) + 2 * 75; + sec2msf(t, ti[numtracks].start); + + // If we've already seen another track, this is its end + if (numtracks > 1) { + t = msf2sec(ti[numtracks].start) - msf2sec(ti[numtracks - 1].start); + sec2msf(t, ti[numtracks - 1].length); + } + } + } + + fclose(fi); + + // Fill out the last track's end based on size + if (numtracks >= 1) { + fseek(cdHandle, 0, SEEK_END); + t = ftell(cdHandle) / 2352 - msf2sec(ti[numtracks].start) + 2 * 75; + sec2msf(t, ti[numtracks].length); + } + + return 0; +} + +// this function tries to get the .ccd file of the given .img +// the necessary data is put into the ti (trackinformation)-array +static int parseccd(const char *isofile) { + char ccdname[MAXPATHLEN]; + FILE *fi; + char linebuf[256]; + unsigned int t; + + numtracks = 0; + + // copy name of the iso and change extension from .img to .ccd + strncpy(ccdname, isofile, sizeof(ccdname)); + ccdname[MAXPATHLEN - 1] = '\0'; + if (strlen(ccdname) >= 4) { + strcpy(ccdname + strlen(ccdname) - 4, ".ccd"); + } + else { + return -1; + } + + if ((fi = fopen(ccdname, "r")) == NULL) { + return -1; + } + + memset(&ti, 0, sizeof(ti)); + + while (fgets(linebuf, sizeof(linebuf), fi) != NULL) { + if (!strncmp(linebuf, "[TRACK", 6)){ + numtracks++; + } + else if (!strncmp(linebuf, "MODE=", 5)) { + sscanf(linebuf, "MODE=%d", &t); + ti[numtracks].type = ((t == 0) ? CDDA : DATA); + } + else if (!strncmp(linebuf, "INDEX 1=", 8)) { + sscanf(linebuf, "INDEX 1=%d", &t); + sec2msf(t + 2 * 75, ti[numtracks].start); + + // If we've already seen another track, this is its end + if (numtracks > 1) { + t = msf2sec(ti[numtracks].start) - msf2sec(ti[numtracks - 1].start); + sec2msf(t, ti[numtracks - 1].length); + } + } + } + + fclose(fi); + + // Fill out the last track's end based on size + if (numtracks >= 1) { + fseek(cdHandle, 0, SEEK_END); + t = ftell(cdHandle) / 2352 - msf2sec(ti[numtracks].start) + 2 * 75; + sec2msf(t, ti[numtracks].length); + } + + return 0; +} + +// this function tries to get the .mds file of the given .mdf +// the necessary data is put into the ti (trackinformation)-array +static int parsemds(const char *isofile) { + char mdsname[MAXPATHLEN]; + FILE *fi; + unsigned int offset, extra_offset, l, i; + unsigned short s; + + numtracks = 0; + + // copy name of the iso and change extension from .mdf to .mds + strncpy(mdsname, isofile, sizeof(mdsname)); + mdsname[MAXPATHLEN - 1] = '\0'; + if (strlen(mdsname) >= 4) { + strcpy(mdsname + strlen(mdsname) - 4, ".mds"); + } + else { + return -1; + } + + if ((fi = fopen(mdsname, "rb")) == NULL) { + return -1; + } + + memset(&ti, 0, sizeof(ti)); + + // check if it's a valid mds file + fread(&i, 1, sizeof(unsigned int), fi); + i = SWAP32(i); + if (i != 0x4944454D) { + // not an valid mds file + fclose(fi); + return -1; + } + + // get offset to session block + fseek(fi, 0x50, SEEK_SET); + fread(&offset, 1, sizeof(unsigned int), fi); + offset = SWAP32(offset); + + // get total number of tracks + offset += 14; + fseek(fi, offset, SEEK_SET); + fread(&s, 1, sizeof(unsigned short), fi); + s = SWAP16(s); + numtracks = s; + + // get offset to track blocks + fseek(fi, 4, SEEK_CUR); + fread(&offset, 1, sizeof(unsigned int), fi); + offset = SWAP32(offset); + + // skip lead-in data + while (1) { + fseek(fi, offset + 4, SEEK_SET); + if (fgetc(fi) < 0xA0) { + break; + } + offset += 0x50; + } + + // check if the image contains mixed subchannel data + fseek(fi, offset + 1, SEEK_SET); + subChanMixed = (fgetc(fi) ? TRUE : FALSE); + + // read track data + for (i = 1; i <= numtracks; i++) { + fseek(fi, offset, SEEK_SET); + + // get the track type + ti[i].type = ((fgetc(fi) == 0xA9) ? CDDA : DATA); + fseek(fi, 8, SEEK_CUR); + + // get the track starting point + ti[i].start[0] = fgetc(fi); + ti[i].start[1] = fgetc(fi); + ti[i].start[2] = fgetc(fi); + + if (i > 1) { + l = msf2sec(ti[i].start); + sec2msf(l - 2 * 75, ti[i].start); // ??? + } + + // get the track length + fread(&extra_offset, 1, sizeof(unsigned int), fi); + extra_offset = SWAP32(extra_offset); + + fseek(fi, extra_offset + 4, SEEK_SET); + fread(&l, 1, sizeof(unsigned int), fi); + l = SWAP32(l); + sec2msf(l, ti[i].length); + + offset += 0x50; + } + + fclose(fi); + return 0; +} + +// this function tries to get the .sub file of the given .img +static int opensubfile(const char *isoname) { + char subname[MAXPATHLEN]; + + // copy name of the iso and change extension from .img to .sub + strncpy(subname, isoname, sizeof(subname)); + subname[MAXPATHLEN - 1] = '\0'; + if (strlen(subname) >= 4) { + strcpy(subname + strlen(subname) - 4, ".sub"); + } + else { + return -1; + } + + subHandle = fopen(subname, "rb"); + if (subHandle == NULL) { + return -1; + } + + return 0; +} + +static long CALLBACK ISOinit(void) { + assert(cdHandle == NULL); + assert(subHandle == NULL); + + return 0; // do nothing +} + +static long CALLBACK ISOshutdown(void) { + if (cdHandle != NULL) { + fclose(cdHandle); + cdHandle = NULL; + } + if (subHandle != NULL) { + fclose(subHandle); + subHandle = NULL; + } + stopCDDA(); + return 0; +} + +static void PrintTracks(void) { + int i; + + for (i = 1; i <= numtracks; i++) { + SysPrintf(_("Track %.2d (%s) - Start %.2d:%.2d:%.2d, Length %.2d:%.2d:%.2d\n"), + i, (ti[i].type == DATA ? "DATA" : "AUDIO"), + ti[i].start[0], ti[i].start[1], ti[i].start[2], + ti[i].length[0], ti[i].length[1], ti[i].length[2]); + } +} + +// This function is invoked by the front-end when opening an ISO +// file for playback +static long CALLBACK ISOopen(void) { + if (cdHandle != NULL) { + return 0; // it's already open + } + + cdHandle = fopen(GetIsoFile(), "rb"); + if (cdHandle == NULL) { + return -1; + } + + SysPrintf(_("Loaded CD Image: %s"), GetIsoFile()); + + cddaBigEndian = FALSE; + subChanMixed = FALSE; + subChanRaw = FALSE; + + if (parsecue(GetIsoFile()) == 0) { + SysPrintf("[+cue]"); + } + else if (parsetoc(GetIsoFile()) == 0) { + SysPrintf("[+toc]"); + } + else if (parseccd(GetIsoFile()) == 0) { + SysPrintf("[+ccd]"); + } + else if (parsemds(GetIsoFile()) == 0) { + SysPrintf("[+mds]"); + } + + if (!subChanMixed && opensubfile(GetIsoFile()) == 0) { + SysPrintf("[+sub]"); + } + + SysPrintf(".\n"); + + PrintTracks(); + + return 0; +} + +static long CALLBACK ISOclose(void) { + if (cdHandle != NULL) { + fclose(cdHandle); + cdHandle = NULL; + } + if (subHandle != NULL) { + fclose(subHandle); + subHandle = NULL; + } + stopCDDA(); + return 0; +} + +// return Starting and Ending Track +// buffer: +// byte 0 - start track +// byte 1 - end track +static long CALLBACK ISOgetTN(unsigned char *buffer) { + buffer[0] = 1; + + if (numtracks > 0) { + buffer[1] = numtracks; + } + else { + buffer[1] = 1; + } + + return 0; +} + +// return Track Time +// buffer: +// byte 0 - frame +// byte 1 - second +// byte 2 - minute +static long CALLBACK ISOgetTD(unsigned char track, unsigned char *buffer) { + if (numtracks > 0 && track <= numtracks) { + buffer[2] = ti[track].start[0]; + buffer[1] = ti[track].start[1]; + buffer[0] = ti[track].start[2]; + } + else { + buffer[2] = 0; + buffer[1] = 2; + buffer[0] = 0; + } + + return 0; +} + +// decode 'raw' subchannel data ripped by cdrdao +static void DecodeRawSubData(void) { + unsigned char subQData[12]; + int i; + + memset(subQData, 0, sizeof(subQData)); + + for (i = 0; i < 8 * 12; i++) { + if (subbuffer[i] & (1 << 6)) { // only subchannel Q is needed + subQData[i >> 3] |= (1 << (7 - (i & 7))); + } + } + + memcpy(&subbuffer[12], subQData, 12); +} + +// read track +// time: byte 0 - minute; byte 1 - second; byte 2 - frame +// uses bcd format +static long CALLBACK ISOreadTrack(unsigned char *time) { + if (cdHandle == NULL) { + return -1; + } + + if (subChanMixed) { + fseek(cdHandle, MSF2SECT(btoi(time[0]), btoi(time[1]), btoi(time[2])) * (CD_FRAMESIZE_RAW + SUB_FRAMESIZE) + 12, SEEK_SET); + fread(cdbuffer, 1, DATA_SIZE, cdHandle); + fread(subbuffer, 1, SUB_FRAMESIZE, cdHandle); + + if (subChanRaw) DecodeRawSubData(); + } + else { + fseek(cdHandle, MSF2SECT(btoi(time[0]), btoi(time[1]), btoi(time[2])) * CD_FRAMESIZE_RAW + 12, SEEK_SET); + fread(cdbuffer, 1, DATA_SIZE, cdHandle); + + if (subHandle != NULL) { + fseek(subHandle, MSF2SECT(btoi(time[0]), btoi(time[1]), btoi(time[2])) * SUB_FRAMESIZE, SEEK_SET); + fread(subbuffer, 1, SUB_FRAMESIZE, subHandle); + + if (subChanRaw) DecodeRawSubData(); + } + } + + return 0; +} + +// return readed track +static unsigned char * CALLBACK ISOgetBuffer(void) { + return cdbuffer; +} + +// plays cdda audio +// sector: byte 0 - minute; byte 1 - second; byte 2 - frame +// does NOT uses bcd format +static long CALLBACK ISOplay(unsigned char *time) { + if (SPU_playCDDAchannel != NULL) { + if (subChanMixed) { + startCDDA(MSF2SECT(time[0], time[1], time[2]) * (CD_FRAMESIZE_RAW + SUB_FRAMESIZE)); + } + else { + startCDDA(MSF2SECT(time[0], time[1], time[2]) * CD_FRAMESIZE_RAW); + } + } + return 0; +} + +// stops cdda audio +static long CALLBACK ISOstop(void) { + stopCDDA(); + return 0; +} + +// gets subchannel data +static unsigned char* CALLBACK ISOgetBufferSub(void) { + if (subHandle != NULL || subChanMixed) { + return subbuffer; + } + + return NULL; +} + +static long CALLBACK ISOgetStatus(struct CdrStat *stat) { + int sec; + + CDR__getStatus(stat); + + if (playing) { + stat->Type = 0x02; + stat->Status |= 0x80; + sec = cddaCurOffset / CD_FRAMESIZE_RAW; + sec2msf(sec, (char *)stat->Time); + } + else { + stat->Type = 0x01; + } + + return 0; +} + +void cdrIsoInit(void) { + CDR_init = ISOinit; + CDR_shutdown = ISOshutdown; + CDR_open = ISOopen; + CDR_close = ISOclose; + CDR_getTN = ISOgetTN; + CDR_getTD = ISOgetTD; + CDR_readTrack = ISOreadTrack; + CDR_getBuffer = ISOgetBuffer; + CDR_play = ISOplay; + CDR_stop = ISOstop; + CDR_getBufferSub = ISOgetBufferSub; + CDR_getStatus = ISOgetStatus; + + CDR_getDriveLetter = CDR__getDriveLetter; + CDR_configure = CDR__configure; + CDR_test = CDR__test; + CDR_about = CDR__about; + CDR_setfilename = CDR__setfilename; + + numtracks = 0; +} + +int cdrIsoActive(void) { + return (cdHandle != NULL); +} diff --git a/libpcsxcore/cdriso.h b/libpcsxcore/cdriso.h new file mode 100644 index 0000000..27d1ecd --- /dev/null +++ b/libpcsxcore/cdriso.h @@ -0,0 +1,34 @@ +/*************************************************************************** + * Copyright (C) 2007 PCSX-df Team * + * Copyright (C) 2009 Wei Mingzhi * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#ifndef CDRISO_H +#define CDRISO_H + +#ifdef __cplusplus +extern "C" { +#endif + +void cdrIsoInit(void); +int cdrIsoActive(void); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/cdrom.c b/libpcsxcore/cdrom.c new file mode 100644 index 0000000..92e4b7f --- /dev/null +++ b/libpcsxcore/cdrom.c @@ -0,0 +1,1138 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +/* +* Handles all CD-ROM registers and functions. +*/ + +#include "cdrom.h" +#include "ppf.h" + +cdrStruct cdr; + +/* CD-ROM magic numbers */ +#define CdlSync 0 +#define CdlNop 1 +#define CdlSetloc 2 +#define CdlPlay 3 +#define CdlForward 4 +#define CdlBackward 5 +#define CdlReadN 6 +#define CdlStandby 7 +#define CdlStop 8 +#define CdlPause 9 +#define CdlInit 10 +#define CdlMute 11 +#define CdlDemute 12 +#define CdlSetfilter 13 +#define CdlSetmode 14 +#define CdlGetmode 15 +#define CdlGetlocL 16 +#define CdlGetlocP 17 +#define CdlReadT 18 +#define CdlGetTN 19 +#define CdlGetTD 20 +#define CdlSeekL 21 +#define CdlSeekP 22 +#define CdlSetclock 23 +#define CdlGetclock 24 +#define CdlTest 25 +#define CdlID 26 +#define CdlReadS 27 +#define CdlReset 28 +#define CdlReadToc 30 + +#define AUTOPAUSE 249 +#define READ_ACK 250 +#define READ 251 +#define REPPLAY_ACK 252 +#define REPPLAY 253 +#define ASYNC 254 +/* don't set 255, it's reserved */ + +char *CmdName[0x100]= { + "CdlSync", "CdlNop", "CdlSetloc", "CdlPlay", + "CdlForward", "CdlBackward", "CdlReadN", "CdlStandby", + "CdlStop", "CdlPause", "CdlInit", "CdlMute", + "CdlDemute", "CdlSetfilter", "CdlSetmode", "CdlGetmode", + "CdlGetlocL", "CdlGetlocP", "CdlReadT", "CdlGetTN", + "CdlGetTD", "CdlSeekL", "CdlSeekP", "CdlSetclock", + "CdlGetclock", "CdlTest", "CdlID", "CdlReadS", + "CdlReset", NULL, "CDlReadToc", NULL +}; + +unsigned char Test04[] = { 0 }; +unsigned char Test05[] = { 0 }; +unsigned char Test20[] = { 0x98, 0x06, 0x10, 0xC3 }; +unsigned char Test22[] = { 0x66, 0x6F, 0x72, 0x20, 0x45, 0x75, 0x72, 0x6F }; +unsigned char Test23[] = { 0x43, 0x58, 0x44, 0x32, 0x39 ,0x34, 0x30, 0x51 }; + +// 1x = 75 sectors per second +// PSXCLK = 1 sec in the ps +// so (PSXCLK / 75) = cdr read time (linuzappz) +#define cdReadTime (PSXCLK / 75) + +static struct CdrStat stat; +static struct SubQ *subq; + +#define CDR_INT(eCycle) { \ + psxRegs.interrupt |= 0x4; \ + psxRegs.intCycle[2 + 1] = eCycle; \ + psxRegs.intCycle[2] = psxRegs.cycle; } + +#define CDREAD_INT(eCycle) { \ + psxRegs.interrupt |= 0x40000; \ + psxRegs.intCycle[2 + 16 + 1] = eCycle; \ + psxRegs.intCycle[2 + 16] = psxRegs.cycle; } + +#define StartReading(type, eCycle) { \ + cdr.Reading = type; \ + cdr.FirstSector = 1; \ + cdr.Readed = 0xff; \ + AddIrqQueue(READ_ACK, eCycle); \ +} + +#define StopReading() { \ + if (cdr.Reading) { \ + cdr.Reading = 0; \ + psxRegs.interrupt &= ~0x40000; \ + } \ + cdr.StatP &= ~0x20;\ +} + +#define StopCdda() { \ + if (cdr.Play) { \ + if (!Config.Cdda) CDR_stop(); \ + cdr.StatP &= ~0x80; \ + cdr.Play = FALSE; \ + } \ +} + +#define SetResultSize(size) { \ + cdr.ResultP = 0; \ + cdr.ResultC = size; \ + cdr.ResultReady = 1; \ +} + +static void ReadTrack() { + cdr.Prev[0] = itob(cdr.SetSector[0]); + cdr.Prev[1] = itob(cdr.SetSector[1]); + cdr.Prev[2] = itob(cdr.SetSector[2]); + +#ifdef CDR_LOG + CDR_LOG("ReadTrack() Log: KEY *** %x:%x:%x\n", cdr.Prev[0], cdr.Prev[1], cdr.Prev[2]); +#endif + cdr.RErr = CDR_readTrack(cdr.Prev); +} + +// cdr.Stat: +#define NoIntr 0 +#define DataReady 1 +#define Complete 2 +#define Acknowledge 3 +#define DataEnd 4 +#define DiskError 5 + +void AddIrqQueue(unsigned char irq, unsigned long ecycle) { + cdr.Irq = irq; + if (cdr.Stat) { + cdr.eCycle = ecycle; + } else { + CDR_INT(ecycle); + } +} + +void cdrInterrupt() { + int i; + unsigned char Irq = cdr.Irq; + + if (cdr.Stat) { + CDR_INT(0x1000); + return; + } + + cdr.Irq = 0xff; + cdr.Ctrl &= ~0x80; + + switch (Irq) { + case CdlSync: + SetResultSize(1); + cdr.StatP |= 0x2; + cdr.Result[0] = cdr.StatP; + cdr.Stat = Acknowledge; + break; + + case CdlNop: + SetResultSize(1); + cdr.Result[0] = cdr.StatP; + cdr.Stat = Acknowledge; + i = stat.Status; + if (CDR_getStatus(&stat) != -1) { + if (stat.Type == 0xff) cdr.Stat = DiskError; + if (stat.Status & 0x10) { + cdr.Stat = DiskError; + cdr.Result[0] |= 0x11; + cdr.Result[0] &= ~0x02; + } + else if (i & 0x10) { + cdr.StatP |= 0x2; + cdr.Result[0] |= 0x2; + CheckCdrom(); + } + } + break; + + case CdlSetloc: + cdr.CmdProcess = 0; + SetResultSize(1); + cdr.StatP |= 0x2; + cdr.Result[0] = cdr.StatP; + cdr.Stat = Acknowledge; + break; + + case CdlPlay: + cdr.CmdProcess = 0; + SetResultSize(1); + cdr.StatP |= 0x2; + cdr.Result[0] = cdr.StatP; + cdr.Stat = Acknowledge; + cdr.StatP |= 0x80; +// if ((cdr.Mode & 0x5) == 0x5) AddIrqQueue(REPPLAY, cdReadTime); + break; + + case CdlForward: + cdr.CmdProcess = 0; + SetResultSize(1); + cdr.StatP |= 0x2; + cdr.Result[0] = cdr.StatP; + cdr.Stat = Complete; + break; + + case CdlBackward: + cdr.CmdProcess = 0; + SetResultSize(1); + cdr.StatP |= 0x2; + cdr.Result[0] = cdr.StatP; + cdr.Stat = Complete; + break; + + case CdlStandby: + cdr.CmdProcess = 0; + SetResultSize(1); + cdr.StatP |= 0x2; + cdr.Result[0] = cdr.StatP; + cdr.Stat = Complete; + break; + + case CdlStop: + cdr.CmdProcess = 0; + SetResultSize(1); + cdr.StatP &= ~0x2; + cdr.Result[0] = cdr.StatP; + cdr.Stat = Complete; +// cdr.Stat = Acknowledge; + + // check case open/close -shalma + i = stat.Status; + if (CDR_getStatus(&stat) != -1) { + if (stat.Type == 0xff) cdr.Stat = DiskError; + if (stat.Status & 0x10) { + cdr.Stat = DiskError; + cdr.Result[0] |= 0x11; + cdr.Result[0] &= ~0x02; + } + else if (i & 0x10) { + cdr.StatP |= 0x2; + cdr.Result[0] |= 0x2; + CheckCdrom(); + } + } + break; + + case CdlPause: + SetResultSize(1); + cdr.Result[0] = cdr.StatP; + cdr.Stat = Acknowledge; + AddIrqQueue(CdlPause + 0x20, 0x1000); + cdr.Ctrl |= 0x80; + break; + + case CdlPause + 0x20: + SetResultSize(1); + cdr.StatP &= ~0x20; + cdr.StatP |= 0x2; + cdr.Result[0] = cdr.StatP; + cdr.Stat = Complete; + break; + + case CdlInit: + SetResultSize(1); + cdr.StatP = 0x2; + cdr.Result[0] = cdr.StatP; + cdr.Stat = Acknowledge; +// if (!cdr.Init) { + AddIrqQueue(CdlInit + 0x20, 0x1000); +// } + break; + + case CdlInit + 0x20: + SetResultSize(1); + cdr.Result[0] = cdr.StatP; + cdr.Stat = Complete; + cdr.Init = 1; + break; + + case CdlMute: + SetResultSize(1); + cdr.StatP |= 0x2; + cdr.Result[0] = cdr.StatP; + cdr.Stat = Acknowledge; + break; + + case CdlDemute: + SetResultSize(1); + cdr.StatP |= 0x2; + cdr.Result[0] = cdr.StatP; + cdr.Stat = Acknowledge; + break; + + case CdlSetfilter: + SetResultSize(1); + cdr.StatP |= 0x2; + cdr.Result[0] = cdr.StatP; + cdr.Stat = Acknowledge; + break; + + case CdlSetmode: + SetResultSize(1); + cdr.StatP |= 0x2; + cdr.Result[0] = cdr.StatP; + cdr.Stat = Acknowledge; + break; + + case CdlGetmode: + SetResultSize(6); + cdr.StatP |= 0x2; + cdr.Result[0] = cdr.StatP; + cdr.Result[1] = cdr.Mode; + cdr.Result[2] = cdr.File; + cdr.Result[3] = cdr.Channel; + cdr.Result[4] = 0; + cdr.Result[5] = 0; + cdr.Stat = Acknowledge; + break; + + case CdlGetlocL: + SetResultSize(8); +// for (i = 0; i < 8; i++) +// cdr.Result[i] = itob(cdr.Transfer[i]); + for (i = 0; i < 8; i++) + cdr.Result[i] = cdr.Transfer[i]; + cdr.Stat = Acknowledge; + break; + + case CdlGetlocP: + SetResultSize(8); + subq = (struct SubQ *)CDR_getBufferSub(); + + if (subq != NULL) { + cdr.Result[0] = subq->TrackNumber; + cdr.Result[1] = subq->IndexNumber; + memcpy(cdr.Result + 2, subq->TrackRelativeAddress, 3); + memcpy(cdr.Result + 5, subq->AbsoluteAddress, 3); + + // subQ integrity check + if (calcCrc((u8 *)subq + 12, 10) != (((u16)subq->CRC[0] << 8) | subq->CRC[1])) { + memset(cdr.Result + 2, 0, 3 + 3); // CRC wrong, wipe out time data + } + } else { + cdr.Result[0] = 1; + cdr.Result[1] = 1; + + cdr.Result[2] = btoi(cdr.Prev[0]); + cdr.Result[3] = btoi(cdr.Prev[1]) - 2; + cdr.Result[4] = cdr.Prev[2]; + + // m:s adjustment + if ((s8)cdr.Result[3] < 0) { + cdr.Result[3] += 60; + cdr.Result[2] -= 1; + } + + cdr.Result[2] = itob(cdr.Result[2]); + cdr.Result[3] = itob(cdr.Result[3]); + + memcpy(cdr.Result + 5, cdr.Prev, 3); + } + + cdr.Stat = Acknowledge; + break; + + case CdlGetTN: + cdr.CmdProcess = 0; + SetResultSize(3); + cdr.StatP |= 0x2; + cdr.Result[0] = cdr.StatP; + if (CDR_getTN(cdr.ResultTN) == -1) { + cdr.Stat = DiskError; + cdr.Result[0] |= 0x01; + } else { + cdr.Stat = Acknowledge; + cdr.Result[1] = itob(cdr.ResultTN[0]); + cdr.Result[2] = itob(cdr.ResultTN[1]); + } + break; + + case CdlGetTD: + cdr.CmdProcess = 0; + cdr.Track = btoi(cdr.Param[0]); + SetResultSize(4); + cdr.StatP |= 0x2; + if (CDR_getTD(cdr.Track, cdr.ResultTD) == -1) { + cdr.Stat = DiskError; + cdr.Result[0] |= 0x01; + } else { + cdr.Stat = Acknowledge; + cdr.Result[0] = cdr.StatP; + cdr.Result[1] = itob(cdr.ResultTD[2]); + cdr.Result[2] = itob(cdr.ResultTD[1]); + cdr.Result[3] = itob(cdr.ResultTD[0]); + } + break; + + case CdlSeekL: + SetResultSize(1); + cdr.StatP |= 0x2; + cdr.Result[0] = cdr.StatP; + cdr.StatP |= 0x40; + cdr.Stat = Acknowledge; + cdr.Seeked = TRUE; + AddIrqQueue(CdlSeekL + 0x20, 0x1000); + break; + + case CdlSeekL + 0x20: + SetResultSize(1); + cdr.StatP |= 0x2; + cdr.StatP &= ~0x40; + cdr.Result[0] = cdr.StatP; + cdr.Stat = Complete; + break; + + case CdlSeekP: + SetResultSize(1); + cdr.StatP |= 0x2; + cdr.Result[0] = cdr.StatP; + cdr.StatP |= 0x40; + cdr.Stat = Acknowledge; + AddIrqQueue(CdlSeekP + 0x20, 0x1000); + break; + + case CdlSeekP + 0x20: + SetResultSize(1); + cdr.StatP |= 0x2; + cdr.StatP &= ~0x40; + cdr.Result[0] = cdr.StatP; + cdr.Stat = Complete; + break; + + case CdlTest: + cdr.Stat = Acknowledge; + switch (cdr.Param[0]) { + case 0x20: // System Controller ROM Version + SetResultSize(4); + memcpy(cdr.Result, Test20, 4); + break; + case 0x22: + SetResultSize(8); + memcpy(cdr.Result, Test22, 4); + break; + case 0x23: case 0x24: + SetResultSize(8); + memcpy(cdr.Result, Test23, 4); + break; + } + break; + + case CdlID: + SetResultSize(1); + cdr.StatP |= 0x2; + cdr.Result[0] = cdr.StatP; + cdr.Stat = Acknowledge; + AddIrqQueue(CdlID + 0x20, 0x1000); + break; + + case CdlID + 0x20: + SetResultSize(8); + if (CDR_getStatus(&stat) == -1) { + cdr.Result[0] = 0x00; // 0x08 and cdr.Result[1]|0x10 : audio cd, enters cd player + cdr.Result[1] = 0x00; // 0x80 leads to the menu in the bios, else loads CD + } + else { + if (stat.Type == 2) { + cdr.Result[0] = 0x08; + cdr.Result[1] = 0x10; + } + else { + cdr.Result[0] = 0x00; + cdr.Result[1] = 0x00; + } + } + cdr.Result[1] |= 0x80; + cdr.Result[2] = 0x00; + cdr.Result[3] = 0x00; + strncpy((char *)&cdr.Result[4], "PCSX", 4); + cdr.Stat = Complete; + break; + + case CdlReset: + SetResultSize(1); + cdr.StatP = 0x2; + cdr.Result[0] = cdr.StatP; + cdr.Stat = Acknowledge; + break; + + case CdlReadToc: + SetResultSize(1); + cdr.StatP |= 0x2; + cdr.Result[0] = cdr.StatP; + cdr.Stat = Acknowledge; + AddIrqQueue(CdlReadToc + 0x20, 0x1000); + break; + + case CdlReadToc + 0x20: + SetResultSize(1); + cdr.StatP |= 0x2; + cdr.Result[0] = cdr.StatP; + cdr.Stat = Complete; + break; + + case AUTOPAUSE: + cdr.OCUP = 0; +/* SetResultSize(1); + StopCdda(); + StopReading(); + cdr.OCUP = 0; + cdr.StatP&=~0x20; + cdr.StatP|= 0x2; + cdr.Result[0] = cdr.StatP; + cdr.Stat = DataEnd; +*/ AddIrqQueue(CdlPause, 0x800); + break; + + case READ_ACK: + if (!cdr.Reading) return; + + SetResultSize(1); + cdr.StatP |= 0x2; + cdr.Result[0] = cdr.StatP; + if (!cdr.Seeked) { + cdr.Seeked = TRUE; + cdr.StatP |= 0x40; + } + cdr.StatP |= 0x20; + cdr.Stat = Acknowledge; + +// CDREAD_INT((cdr.Mode & 0x80) ? (cdReadTime / 2) : cdReadTime); + CDREAD_INT(0x80000); + break; + + case REPPLAY_ACK: + cdr.Stat = Acknowledge; + cdr.Result[0] = cdr.StatP; + SetResultSize(1); + AddIrqQueue(REPPLAY, cdReadTime); + break; + + case REPPLAY: + if ((cdr.Mode & 5) != 5) break; +/* if (CDR_getStatus(&stat) == -1) { + cdr.Result[0] = 0; + cdr.Result[1] = 0; + cdr.Result[2] = 0; + cdr.Result[3] = 0; + cdr.Result[4] = 0; + cdr.Result[5] = 0; + cdr.Result[6] = 0; + cdr.Result[7] = 0; + } else memcpy(cdr.Result, &stat.Track, 8); + cdr.Stat = 1; + SetResultSize(8); + AddIrqQueue(REPPLAY_ACK, cdReadTime); +*/ break; + + case 0xff: + return; + + default: + cdr.Stat = Complete; + break; + } + + if (cdr.Stat != NoIntr && cdr.Reg2 != 0x18) { + psxHu32ref(0x1070) |= SWAP32((u32)0x4); + } + +#ifdef CDR_LOG + CDR_LOG("cdrInterrupt() Log: CDR Interrupt IRQ %x\n", Irq); +#endif +} + +void cdrReadInterrupt() { + u8 *buf; + + if (!cdr.Reading) + return; + + if (cdr.Stat) { + CDREAD_INT(0x1000); + return; + } + +#ifdef CDR_LOG + CDR_LOG("cdrReadInterrupt() Log: KEY END"); +#endif + + cdr.OCUP = 1; + SetResultSize(1); + cdr.StatP |= 0x22; + cdr.StatP &= ~0x40; + cdr.Result[0] = cdr.StatP; + + ReadTrack(); + + buf = CDR_getBuffer(); + if (buf == NULL) + cdr.RErr = -1; + + if (cdr.RErr == -1) { +#ifdef CDR_LOG + fprintf(emuLog, "cdrReadInterrupt() Log: err\n"); +#endif + memset(cdr.Transfer, 0, DATA_SIZE); + cdr.Stat = DiskError; + cdr.Result[0] |= 0x01; + CDREAD_INT((cdr.Mode & 0x80) ? (cdReadTime / 2) : cdReadTime); + return; + } + + memcpy(cdr.Transfer, buf, DATA_SIZE); + CheckPPFCache(cdr.Transfer, cdr.Prev[0], cdr.Prev[1], cdr.Prev[2]); + + cdr.Stat = DataReady; + +#ifdef CDR_LOG + fprintf(emuLog, "cdrReadInterrupt() Log: cdr.Transfer %x:%x:%x\n", cdr.Transfer[0], cdr.Transfer[1], cdr.Transfer[2]); +#endif + + if ((!cdr.Muted) && (cdr.Mode & 0x40) && (!Config.Xa) && (cdr.FirstSector != -1)) { // CD-XA + if ((cdr.Transfer[4 + 2] & 0x4) && + ((cdr.Mode & 0x8) ? (cdr.Transfer[4 + 1] == cdr.Channel) : 1) && + (cdr.Transfer[4 + 0] == cdr.File)) { + int ret = xa_decode_sector(&cdr.Xa, cdr.Transfer+4, cdr.FirstSector); + + if (!ret) { + SPU_playADPCMchannel(&cdr.Xa); + cdr.FirstSector = 0; + } + else cdr.FirstSector = -1; + } + } + + cdr.SetSector[2]++; + if (cdr.SetSector[2] == 75) { + cdr.SetSector[2] = 0; + cdr.SetSector[1]++; + if (cdr.SetSector[1] == 60) { + cdr.SetSector[1] = 0; + cdr.SetSector[0]++; + } + } + + cdr.Readed = 0; + + if ((cdr.Transfer[4 + 2] & 0x80) && (cdr.Mode & 0x2)) { // EOF +#ifdef CDR_LOG + CDR_LOG("cdrReadInterrupt() Log: Autopausing read\n"); +#endif +// AddIrqQueue(AUTOPAUSE, 0x1000); + AddIrqQueue(CdlPause, 0x1000); + } + else { + CDREAD_INT((cdr.Mode & 0x80) ? (cdReadTime / 2) : cdReadTime); + } + psxHu32ref(0x1070) |= SWAP32((u32)0x4); +} + +/* +cdrRead0: + bit 0 - 0 REG1 command send / 1 REG1 data read + bit 1 - 0 data transfer finish / 1 data transfer ready/in progress + bit 2 - unknown + bit 3 - unknown + bit 4 - unknown + bit 5 - 1 result ready + bit 6 - 1 dma ready + bit 7 - 1 command being processed +*/ + +unsigned char cdrRead0(void) { + if (cdr.ResultReady) + cdr.Ctrl |= 0x20; + else + cdr.Ctrl &= ~0x20; + + if (cdr.OCUP) + cdr.Ctrl |= 0x40; +// else +// cdr.Ctrl &= ~0x40; + + // What means the 0x10 and the 0x08 bits? I only saw it used by the bios + cdr.Ctrl |= 0x18; + +#ifdef CDR_LOG + CDR_LOG("cdrRead0() Log: CD0 Read: %x\n", cdr.Ctrl); +#endif + + return psxHu8(0x1800) = cdr.Ctrl; +} + +/* +cdrWrite0: + 0 - to send a command / 1 - to get the result +*/ + +void cdrWrite0(unsigned char rt) { +#ifdef CDR_LOG + CDR_LOG("cdrWrite0() Log: CD0 write: %x\n", rt); +#endif + cdr.Ctrl = rt | (cdr.Ctrl & ~0x3); + + if (rt == 0) { + cdr.ParamP = 0; + cdr.ParamC = 0; + cdr.ResultReady = 0; + } +} + +unsigned char cdrRead1(void) { + if (cdr.ResultReady) { // && cdr.Ctrl & 0x1) { + psxHu8(0x1801) = cdr.Result[cdr.ResultP++]; + if (cdr.ResultP == cdr.ResultC) + cdr.ResultReady = 0; + } else { + psxHu8(0x1801) = 0; + } +#ifdef CDR_LOG + CDR_LOG("cdrRead1() Log: CD1 Read: %x\n", psxHu8(0x1801)); +#endif + return psxHu8(0x1801); +} + +void cdrWrite1(unsigned char rt) { + int i; + +#ifdef CDR_LOG + CDR_LOG("cdrWrite1() Log: CD1 write: %x (%s)\n", rt, CmdName[rt]); +#endif +// psxHu8(0x1801) = rt; + cdr.Cmd = rt; + cdr.OCUP = 0; + +#ifdef CDRCMD_DEBUG + SysPrintf("cdrWrite1() Log: CD1 write: %x (%s)", rt, CmdName[rt]); + if (cdr.ParamC) { + SysPrintf(" Param[%d] = {", cdr.ParamC); + for (i = 0; i < cdr.ParamC; i++) + SysPrintf(" %x,", cdr.Param[i]); + SysPrintf("}\n"); + } else { + SysPrintf("\n"); + } +#endif + + if (cdr.Ctrl & 0x1) return; + + switch (cdr.Cmd) { + case CdlSync: + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlNop: + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlSetloc: + StopReading(); + cdr.Seeked = FALSE; + for (i = 0; i < 3; i++) + cdr.SetSector[i] = btoi(cdr.Param[i]); + cdr.SetSector[3] = 0; +/* if ((cdr.SetSector[0] | cdr.SetSector[1] | cdr.SetSector[2]) == 0) { + *(u32 *)cdr.SetSector = *(u32 *)cdr.SetSectorSeek; + }*/ + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlPlay: + if (!cdr.SetSector[0] & !cdr.SetSector[1] & !cdr.SetSector[2]) { + if (CDR_getTN(cdr.ResultTN) != -1) { + if (cdr.CurTrack > cdr.ResultTN[1]) + cdr.CurTrack = cdr.ResultTN[1]; + if (CDR_getTD((unsigned char)(cdr.CurTrack), cdr.ResultTD) != -1) { + int tmp = cdr.ResultTD[2]; + cdr.ResultTD[2] = cdr.ResultTD[0]; + cdr.ResultTD[0] = tmp; + if (!Config.Cdda) CDR_play(cdr.ResultTD); + } + } + } else if (!Config.Cdda) { + CDR_play(cdr.SetSector); + } + cdr.Play = TRUE; + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlForward: + if (cdr.CurTrack < 0xaa) + cdr.CurTrack++; + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlBackward: + if (cdr.CurTrack > 1) + cdr.CurTrack--; + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlReadN: + cdr.Irq = 0; + StopReading(); + cdr.Ctrl|= 0x80; + cdr.Stat = NoIntr; + StartReading(1, 0x1000); + break; + + case CdlStandby: + StopCdda(); + StopReading(); + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlStop: + StopCdda(); + StopReading(); + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlPause: + StopCdda(); + StopReading(); + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x80000); + break; + + case CdlReset: + case CdlInit: + StopCdda(); + StopReading(); + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlMute: + cdr.Muted = TRUE; + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlDemute: + cdr.Muted = FALSE; + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlSetfilter: + cdr.File = cdr.Param[0]; + cdr.Channel = cdr.Param[1]; + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlSetmode: +#ifdef CDR_LOG + CDR_LOG("cdrWrite1() Log: Setmode %x\n", cdr.Param[0]); +#endif + cdr.Mode = cdr.Param[0]; + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlGetmode: + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlGetlocL: + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlGetlocP: + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlGetTN: + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlGetTD: + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlSeekL: +// ((u32 *)cdr.SetSectorSeek)[0] = ((u32 *)cdr.SetSector)[0]; + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlSeekP: +// ((u32 *)cdr.SetSectorSeek)[0] = ((u32 *)cdr.SetSector)[0]; + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlTest: + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlID: + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + case CdlReadS: + cdr.Irq = 0; + StopReading(); + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + StartReading(2, 0x1000); + break; + + case CdlReadToc: + cdr.Ctrl |= 0x80; + cdr.Stat = NoIntr; + AddIrqQueue(cdr.Cmd, 0x1000); + break; + + default: +#ifdef CDR_LOG + CDR_LOG("cdrWrite1() Log: Unknown command: %x\n", cdr.Cmd); +#endif + return; + } + if (cdr.Stat != NoIntr) { + psxHu32ref(0x1070) |= SWAP32((u32)0x4); + } +} + +unsigned char cdrRead2(void) { + unsigned char ret; + + if (cdr.Readed == 0) { + ret = 0; + } else { + ret = *cdr.pTransfer++; + } + +#ifdef CDR_LOG + CDR_LOG("cdrRead2() Log: CD2 Read: %x\n", ret); +#endif + return ret; +} + +void cdrWrite2(unsigned char rt) { +#ifdef CDR_LOG + CDR_LOG("cdrWrite2() Log: CD2 write: %x\n", rt); +#endif + if (cdr.Ctrl & 0x1) { + switch (rt) { + case 0x07: + cdr.ParamP = 0; + cdr.ParamC = 0; + cdr.ResultReady = 1; //0; + cdr.Ctrl &= ~3; //cdr.Ctrl = 0; + break; + + default: + cdr.Reg2 = rt; + break; + } + } else if (!(cdr.Ctrl & 0x1) && cdr.ParamP < 8) { + cdr.Param[cdr.ParamP++] = rt; + cdr.ParamC++; + } +} + +unsigned char cdrRead3(void) { + if (cdr.Stat) { + if (cdr.Ctrl & 0x1) + psxHu8(0x1803) = cdr.Stat | 0xE0; + else + psxHu8(0x1803) = 0xff; + } else { + psxHu8(0x1803) = 0; + } +#ifdef CDR_LOG + CDR_LOG("cdrRead3() Log: CD3 Read: %x\n", psxHu8(0x1803)); +#endif + return psxHu8(0x1803); +} + +void cdrWrite3(unsigned char rt) { +#ifdef CDR_LOG + CDR_LOG("cdrWrite3() Log: CD3 write: %x\n", rt); +#endif + if (rt == 0x07 && cdr.Ctrl & 0x1) { + cdr.Stat = 0; + + if (cdr.Irq == 0xff) { + cdr.Irq = 0; + return; + } + if (cdr.Irq) + CDR_INT(cdr.eCycle); + if (cdr.Reading && !cdr.ResultReady) + CDREAD_INT((cdr.Mode & 0x80) ? (cdReadTime / 2) : cdReadTime); + + return; + } + if (rt == 0x80 && !(cdr.Ctrl & 0x1) && cdr.Readed == 0) { + cdr.Readed = 1; + cdr.pTransfer = cdr.Transfer; + + switch (cdr.Mode & 0x30) { + case 0x10: + case 0x00: + cdr.pTransfer += 12; + break; + default: + break; + } + } +} + +void psxDma3(u32 madr, u32 bcr, u32 chcr) { + u32 cdsize; + u8 *ptr; + +#ifdef CDR_LOG + CDR_LOG("psxDma3() Log: *** DMA 3 *** %x addr = %x size = %x\n", chcr, madr, bcr); +#endif + + switch (chcr) { + case 0x11000000: + case 0x11400100: + if (cdr.Readed == 0) { +#ifdef CDR_LOG + CDR_LOG("psxDma3() Log: *** DMA 3 *** NOT READY\n"); +#endif + break; + } + + cdsize = (bcr & 0xffff) * 4; + + ptr = (u8 *)PSXM(madr); + if (ptr == NULL) { +#ifdef CPU_LOG + CDR_LOG("psxDma3() Log: *** DMA 3 *** NULL Pointer!\n"); +#endif + break; + } + memcpy(ptr, cdr.pTransfer, cdsize); + psxCpu->Clear(madr, cdsize / 4); + cdr.pTransfer += cdsize; + break; + default: +#ifdef CDR_LOG + CDR_LOG("psxDma3() Log: Unknown cddma %x\n", chcr); +#endif + break; + } + + HW_DMA3_CHCR &= SWAP32(~0x01000000); + DMA_INTERRUPT(3); +} + +void cdrReset() { + memset(&cdr, 0, sizeof(cdr)); + cdr.CurTrack = 1; + cdr.File = 1; + cdr.Channel = 1; +} + +int cdrFreeze(gzFile f, int Mode) { + uintptr_t tmp; + + gzfreeze(&cdr, sizeof(cdr)); + + if (Mode == 1) + tmp = cdr.pTransfer - cdr.Transfer; + + gzfreeze(&tmp, sizeof(tmp)); + + if (Mode == 0) + cdr.pTransfer = cdr.Transfer + tmp; + + return 0; +} diff --git a/libpcsxcore/cdrom.h b/libpcsxcore/cdrom.h new file mode 100644 index 0000000..c5d448c --- /dev/null +++ b/libpcsxcore/cdrom.h @@ -0,0 +1,110 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#ifndef __CDROM_H__ +#define __CDROM_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "psxcommon.h" +#include "decode_xa.h" +#include "r3000a.h" +#include "plugins.h" +#include "psxmem.h" +#include "psxhw.h" + +#define btoi(b) ((b) / 16 * 10 + (b) % 16) /* BCD to u_char */ +#define itob(i) ((i) / 10 * 16 + (i) % 10) /* u_char to BCD */ + +#define MSF2SECT(m, s, f) (((m) * 60 + (s) - 2) * 75 + (f)) + +#define CD_FRAMESIZE_RAW 2352 +#define DATA_SIZE (CD_FRAMESIZE_RAW - 12) + +#define SUB_FRAMESIZE 96 + +typedef struct { + unsigned char OCUP; + unsigned char Reg1Mode; + unsigned char Reg2; + unsigned char CmdProcess; + unsigned char Ctrl; + unsigned char Stat; + + unsigned char StatP; + + unsigned char Transfer[CD_FRAMESIZE_RAW]; + unsigned char *pTransfer; + + unsigned char Prev[4]; + unsigned char Param[8]; + unsigned char Result[8]; + + unsigned char ParamC; + unsigned char ParamP; + unsigned char ResultC; + unsigned char ResultP; + unsigned char ResultReady; + unsigned char Cmd; + unsigned char Readed; + u32 Reading; + + unsigned char ResultTN[6]; + unsigned char ResultTD[4]; + unsigned char SetSector[4]; + unsigned char SetSectorSeek[4]; + unsigned char Track; + boolean Play, Muted; + int CurTrack; + int Mode, File, Channel; + int Reset; + int RErr; + int FirstSector; + + xa_decode_t Xa; + + int Init; + + unsigned char Irq; + u32 eCycle; + + boolean Seeked; +} cdrStruct; + +extern cdrStruct cdr; + +void cdrReset(); +void cdrInterrupt(); +void cdrReadInterrupt(); +unsigned char cdrRead0(void); +unsigned char cdrRead1(void); +unsigned char cdrRead2(void); +unsigned char cdrRead3(void); +void cdrWrite0(unsigned char rt); +void cdrWrite1(unsigned char rt); +void cdrWrite2(unsigned char rt); +void cdrWrite3(unsigned char rt); +int cdrFreeze(gzFile f, int Mode); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/cheat.c b/libpcsxcore/cheat.c new file mode 100644 index 0000000..21d88b8 --- /dev/null +++ b/libpcsxcore/cheat.c @@ -0,0 +1,1024 @@ +/* Cheat Support for PCSX-Reloaded + * Copyright (c) 2009, Wei Mingzhi . + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA + */ + +#include "psxcommon.h" +#include "r3000a.h" +#include "psxmem.h" + +#include "cheat.h" + +Cheat *Cheats = NULL; +int NumCheats = 0; +static int NumCheatsAllocated = 0; + +CheatCode *CheatCodes = NULL; +int NumCodes = 0; +static int NumCodesAllocated = 0; + +s8 *prevM = NULL; +u32 *SearchResults = NULL; +int NumSearchResults = 0; +static int NumSearchResultsAllocated = 0; + +#define ALLOC_INCREMENT 100 + +void ClearAllCheats() { + int i; + + if (Cheats != NULL) { + for (i = 0; i < NumCheats; i++) { + free(Cheats[i].Descr); + } + free(Cheats); + } + + Cheats = NULL; + NumCheats = 0; + NumCheatsAllocated = 0; + + if (CheatCodes != NULL) { + free(CheatCodes); + } + + CheatCodes = NULL; + NumCodes = 0; + NumCodesAllocated = 0; +} + +// load cheats from the specific filename +void LoadCheats(const char *filename) { + FILE *fp; + char buf[256]; + int count = 0; + unsigned int t1, t2; + + fp = fopen(filename, "r"); + if (fp == NULL) { + return; + } + + ClearAllCheats(); + + while (fgets(buf, 255, fp) != NULL) { + buf[255] = '\0'; + trim(buf); + + // Skip comment or blank lines + if (buf[0] == '#' || buf[0] == ';' || buf[0] == '/' || buf[0] == '\"' || buf[0] == '\0') + continue; + + if (buf[0] == '[' && buf[strlen(buf) - 1] == ']') { + if (NumCheats > 0) + Cheats[NumCheats - 1].n = count; + + if (NumCheats >= NumCheatsAllocated) { + NumCheatsAllocated += ALLOC_INCREMENT; + + if (Cheats == NULL) { + assert(NumCheats == 0); + assert(NumCheatsAllocated == ALLOC_INCREMENT); + Cheats = (Cheat *)malloc(sizeof(Cheat) * NumCheatsAllocated); + } else { + Cheats = (Cheat *)realloc(Cheats, sizeof(Cheat) * NumCheatsAllocated); + } + } + + buf[strlen(buf) - 1] = '\0'; + count = 0; + + if (buf[1] == '*') { + Cheats[NumCheats].Descr = strdup(buf + 2); + Cheats[NumCheats].Enabled = 1; + } else { + Cheats[NumCheats].Descr = strdup(buf + 1); + Cheats[NumCheats].Enabled = 0; + } + + Cheats[NumCheats].First = NumCodes; + + NumCheats++; + continue; + } + + if (NumCheats <= 0) + continue; + + if (NumCodes >= NumCodesAllocated) { + NumCodesAllocated += ALLOC_INCREMENT; + + if (CheatCodes == NULL) { + assert(NumCodes == 0); + assert(NumCodesAllocated == ALLOC_INCREMENT); + CheatCodes = (CheatCode *)malloc(sizeof(CheatCode) * NumCodesAllocated); + } else { + CheatCodes = (CheatCode *)realloc(CheatCodes, sizeof(CheatCode) * NumCodesAllocated); + } + } + + sscanf(buf, "%x %x", &t1, &t2); + + CheatCodes[NumCodes].Addr = t1; + CheatCodes[NumCodes].Val = t2; + + NumCodes++; + count++; + } + + if (NumCheats > 0) + Cheats[NumCheats - 1].n = count; + + fclose(fp); + + SysPrintf(_("Cheats loaded from: %s\n"), filename); +} + +// save all cheats to the specified filename +void SaveCheats(const char *filename) { + FILE *fp; + int i, j; + + fp = fopen(filename, "w"); + if (fp == NULL) { + return; + } + + for (i = 0; i < NumCheats; i++) { + // write the description + if (Cheats[i].Enabled) + fprintf(fp, "[*%s]\n", Cheats[i].Descr); + else + fprintf(fp, "[%s]\n", Cheats[i].Descr); + + // write all cheat codes + for (j = 0; j < Cheats[i].n; j++) { + fprintf(fp, "%.8X %.4X\n", + CheatCodes[Cheats[i].First + j].Addr, + CheatCodes[Cheats[i].First + j].Val); + } + + fprintf(fp, "\n"); + } + + fclose(fp); + + SysPrintf(_("Cheats saved to: %s\n"), filename); +} + +// apply all enabled cheats +void ApplyCheats() { + int i, j, k, endindex; + + for (i = 0; i < NumCheats; i++) { + if (!Cheats[i].Enabled) { + continue; + } + + // process all cheat codes + endindex = Cheats[i].First + Cheats[i].n; + + for (j = Cheats[i].First; j < endindex; j++) { + u8 type = (uint8_t)(CheatCodes[j].Addr >> 24); + u32 addr = (CheatCodes[j].Addr & 0x001FFFFF); + u16 val = CheatCodes[j].Val; + u32 taddr; + + switch (type) { + case CHEAT_CONST8: + psxMu8ref(addr) = (u8)val; + break; + + case CHEAT_CONST16: + psxMu16ref(addr) = SWAPu16(val); + break; + + case CHEAT_INC16: + psxMu16ref(addr) = SWAPu16(psxMu16(addr) + val); + break; + + case CHEAT_DEC16: + psxMu16ref(addr) = SWAPu16(psxMu16(addr) - val); + break; + + case CHEAT_INC8: + psxMu8ref(addr) += (u8)val; + break; + + case CHEAT_DEC8: + psxMu8ref(addr) -= (u8)val; + break; + + case CHEAT_SLIDE: + j++; + if (j >= endindex) + break; + + type = (uint8_t)(CheatCodes[j].Addr >> 24); + taddr = (CheatCodes[j].Addr & 0x001FFFFF); + val = CheatCodes[j].Val; + + if (type == CHEAT_CONST8) { + for (k = 0; k < ((addr >> 8) & 0xFF); k++) { + psxMu8ref(taddr) = (u8)val; + taddr += (s8)(addr & 0xFF); + val += (s8)(CheatCodes[j - 1].Val & 0xFF); + } + } + else if (type == CHEAT_CONST16) { + for (k = 0; k < ((addr >> 8) & 0xFF); k++) { + psxMu16ref(taddr) = SWAPu16(val); + taddr += (s8)(addr & 0xFF); + val += (s8)(CheatCodes[j - 1].Val & 0xFF); + } + } + break; + + case CHEAT_MEMCPY: + j++; + if (j >= endindex) + break; + + taddr = (CheatCodes[j].Addr & 0x001FFFFF); + for (k = 0; k < val; k++) { + psxMu8ref(taddr + k) = PSXMu8(addr + k); + } + break; + + case CHEAT_EQU8: + if (PSXMu8(addr) != (u8)val) + j++; // skip the next code + break; + + case CHEAT_NOTEQU8: + if (PSXMu8(addr) == (u8)val) + j++; // skip the next code + break; + + case CHEAT_LESSTHAN8: + if (PSXMu8(addr) >= (u8)val) + j++; // skip the next code + break; + + case CHEAT_GREATERTHAN8: + if (PSXMu8(addr) <= (u8)val) + j++; // skip the next code + break; + + case CHEAT_EQU16: + if (PSXMu16(addr) != val) + j++; // skip the next code + break; + + case CHEAT_NOTEQU16: + if (PSXMu16(addr) == val) + j++; // skip the next code + break; + + case CHEAT_LESSTHAN16: + if (PSXMu16(addr) >= val) + j++; // skip the next code + break; + + case CHEAT_GREATERTHAN16: + if (PSXMu16(addr) <= val) + j++; // skip the next code + break; + } + } + } +} + +int AddCheat(const char *descr, char *code) { + int c = 1; + char *p1, *p2; + + if (NumCheats >= NumCheatsAllocated) { + NumCheatsAllocated += ALLOC_INCREMENT; + + if (Cheats == NULL) { + assert(NumCheats == 0); + assert(NumCheatsAllocated == ALLOC_INCREMENT); + Cheats = (Cheat *)malloc(sizeof(Cheat) * NumCheatsAllocated); + } + else { + Cheats = (Cheat *)realloc(Cheats, sizeof(Cheat) * NumCheatsAllocated); + } + } + + Cheats[NumCheats].Descr = strdup(descr[0] ? descr : _("(Untitled)")); + Cheats[NumCheats].Enabled = 0; + Cheats[NumCheats].First = NumCodes; + Cheats[NumCheats].n = 0; + + p1 = code; + p2 = code; + + while (c) { + unsigned int t1, t2; + + while (*p2 != '\n' && *p2 != '\0') + p2++; + + if (*p2 == '\0') + c = 0; + + *p2 = '\0'; + p2++; + + t1 = 0; + t2 = 0; + sscanf(p1, "%x %x", &t1, &t2); + + if (t1 > 0x10000000) { + if (NumCodes >= NumCodesAllocated) { + NumCodesAllocated += ALLOC_INCREMENT; + + if (CheatCodes == NULL) { + assert(NumCodes == 0); + assert(NumCodesAllocated == ALLOC_INCREMENT); + CheatCodes = (CheatCode *)malloc(sizeof(CheatCode) * NumCodesAllocated); + } + else { + CheatCodes = (CheatCode *)realloc(CheatCodes, sizeof(CheatCode) * NumCodesAllocated); + } + } + + CheatCodes[NumCodes].Addr = t1; + CheatCodes[NumCodes].Val = t2; + NumCodes++; + Cheats[NumCheats].n++; + } + + p1 = p2; + } + + if (Cheats[NumCheats].n == 0) { + return -1; + } + + NumCheats++; + return 0; +} + +void RemoveCheat(int index) { + assert(index >= 0 && index < NumCheats); + + free(Cheats[index].Descr); + + while (index < NumCheats - 1) { + Cheats[index] = Cheats[index + 1]; + index++; + } + + NumCheats--; +} + +int EditCheat(int index, const char *descr, char *code) { + int c = 1; + int prev = NumCodes; + char *p1, *p2; + + assert(index >= 0 && index < NumCheats); + + p1 = code; + p2 = code; + + while (c) { + unsigned int t1, t2; + + while (*p2 != '\n' && *p2 != '\0') + p2++; + + if (*p2 == '\0') + c = 0; + + *p2 = '\0'; + p2++; + + t1 = 0; + t2 = 0; + sscanf(p1, "%x %x", &t1, &t2); + + if (t1 > 0x10000000) { + if (NumCodes >= NumCodesAllocated) { + NumCodesAllocated += ALLOC_INCREMENT; + + if (CheatCodes == NULL) { + assert(NumCodes == 0); + assert(NumCodesAllocated == ALLOC_INCREMENT); + CheatCodes = (CheatCode *)malloc(sizeof(CheatCode) * NumCodesAllocated); + } + else { + CheatCodes = (CheatCode *)realloc(CheatCodes, sizeof(CheatCode) * NumCodesAllocated); + } + } + + CheatCodes[NumCodes].Addr = t1; + CheatCodes[NumCodes].Val = t2; + NumCodes++; + } + + p1 = p2; + } + + if (NumCodes == prev) { + return -1; + } + + free(Cheats[index].Descr); + Cheats[index].Descr = strdup(descr[0] ? descr : _("(Untitled)")); + Cheats[index].First = prev; + Cheats[index].n = NumCodes - prev; + + return 0; +} + +void FreeCheatSearchResults() { + if (SearchResults != NULL) { + free(SearchResults); + } + SearchResults = NULL; + + NumSearchResults = 0; + NumSearchResultsAllocated = 0; +} + +void FreeCheatSearchMem() { + if (prevM != NULL) { + free(prevM); + } + prevM = NULL; +} + +void CheatSearchBackupMemory() { + if (prevM != NULL) { + memcpy(prevM, psxM, 0x200000); + } +} + +static void CheatSearchInitBackupMemory() { + if (prevM == NULL) { + prevM = (s8 *)malloc(0x200000); + CheatSearchBackupMemory(); + } +} + +static void CheatSearchAddResult(u32 addr) { + if (NumSearchResults >= NumSearchResultsAllocated) { + NumSearchResultsAllocated += ALLOC_INCREMENT; + + if (SearchResults == NULL) { + SearchResults = (u32 *)malloc(sizeof(u32) * NumSearchResultsAllocated); + } + else { + SearchResults = (u32 *)realloc(SearchResults, sizeof(u32) * NumSearchResultsAllocated); + } + } + + SearchResults[NumSearchResults++] = addr; +} + +void CheatSearchEqual8(u8 val) { + u32 i, j; + + CheatSearchInitBackupMemory(); + + if (SearchResults == NULL) { + // search the whole memory + for (i = 0; i < 0x200000; i++) { + if (PSXMu8(i) == val) { + CheatSearchAddResult(i); + } + } + } + else { + // only search within the previous results + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PSXMu8(SearchResults[i]) == val) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; + } +} + +void CheatSearchEqual16(u16 val) { + u32 i, j; + + CheatSearchInitBackupMemory(); + + if (SearchResults == NULL) { + // search the whole memory + for (i = 0; i < 0x200000; i += 2) { + if (PSXMu16(i) == val) { + CheatSearchAddResult(i); + } + } + } + else { + // only search within the previous results + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PSXMu16(SearchResults[i]) == val) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; + } +} + +void CheatSearchEqual32(u32 val) { + u32 i, j; + + CheatSearchInitBackupMemory(); + + if (SearchResults == NULL) { + // search the whole memory + for (i = 0; i < 0x200000; i += 4) { + if (PSXMu32(i) == val) { + CheatSearchAddResult(i); + } + } + } + else { + // only search within the previous results + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PSXMu32(SearchResults[i]) == val) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; + } +} + +void CheatSearchNotEqual8(u8 val) { + u32 i, j; + + CheatSearchInitBackupMemory(); + + if (SearchResults == NULL) { + // search the whole memory + for (i = 0; i < 0x200000; i++) { + if (PSXMu8(i) != val) { + CheatSearchAddResult(i); + } + } + } + else { + // only search within the previous results + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PSXMu8(SearchResults[i]) != val) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; + } +} + +void CheatSearchNotEqual16(u16 val) { + u32 i, j; + + CheatSearchInitBackupMemory(); + + if (SearchResults == NULL) { + // search the whole memory + for (i = 0; i < 0x200000; i += 2) { + if (PSXMu16(i) != val) { + CheatSearchAddResult(i); + } + } + } + else { + // only search within the previous results + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PSXMu16(SearchResults[i]) != val) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; + } +} + +void CheatSearchNotEqual32(u32 val) { + u32 i, j; + + CheatSearchInitBackupMemory(); + + if (SearchResults == NULL) { + // search the whole memory + for (i = 0; i < 0x200000; i += 4) { + if (PSXMu32(i) != val) { + CheatSearchAddResult(i); + } + } + } + else { + // only search within the previous results + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PSXMu32(SearchResults[i]) != val) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; + } +} + +void CheatSearchRange8(u8 min, u8 max) { + u32 i, j; + + CheatSearchInitBackupMemory(); + + if (SearchResults == NULL) { + // search the whole memory + for (i = 0; i < 0x200000; i++) { + if (PSXMu8(i) >= min && PSXMu8(i) <= max) { + CheatSearchAddResult(i); + } + } + } + else { + // only search within the previous results + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PSXMu8(SearchResults[i]) >= min && PSXMu8(SearchResults[i]) <= max) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; + } +} + +void CheatSearchRange16(u16 min, u16 max) { + u32 i, j; + + CheatSearchInitBackupMemory(); + + if (SearchResults == NULL) { + // search the whole memory + for (i = 0; i < 0x200000; i += 2) { + if (PSXMu16(i) >= min && PSXMu16(i) <= max) { + CheatSearchAddResult(i); + } + } + } + else { + // only search within the previous results + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PSXMu16(SearchResults[i]) >= min && PSXMu16(SearchResults[i]) <= max) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; + } +} + +void CheatSearchRange32(u32 min, u32 max) { + u32 i, j; + + CheatSearchInitBackupMemory(); + + if (SearchResults == NULL) { + // search the whole memory + for (i = 0; i < 0x200000; i += 4) { + if (PSXMu32(i) >= min && PSXMu32(i) <= max) { + CheatSearchAddResult(i); + } + } + } + else { + // only search within the previous results + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PSXMu32(SearchResults[i]) >= min && PSXMu32(SearchResults[i]) <= max) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; + } +} + +void CheatSearchIncreasedBy8(u8 val) { + u32 i, j; + + assert(prevM != NULL); // not possible for the first search + + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PSXMu8(SearchResults[i]) - PrevMu8(SearchResults[i]) == val) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; +} + +void CheatSearchIncreasedBy16(u16 val) { + u32 i, j; + + assert(prevM != NULL); // not possible for the first search + + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PSXMu16(SearchResults[i]) - PrevMu16(SearchResults[i]) == val) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; +} + +void CheatSearchIncreasedBy32(u32 val) { + u32 i, j; + + assert(prevM != NULL); // not possible for the first search + + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PSXMu32(SearchResults[i]) - PrevMu32(SearchResults[i]) == val) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; +} + +void CheatSearchDecreasedBy8(u8 val) { + u32 i, j; + + assert(prevM != NULL); // not possible for the first search + + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PrevMu8(SearchResults[i]) - PSXMu8(SearchResults[i]) == val) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; +} + +void CheatSearchDecreasedBy16(u16 val) { + u32 i, j; + + assert(prevM != NULL); // not possible for the first search + + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PrevMu16(SearchResults[i]) - PSXMu16(SearchResults[i]) == val) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; +} + +void CheatSearchDecreasedBy32(u32 val) { + u32 i, j; + + assert(prevM != NULL); // not possible for the first search + + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PrevMu32(SearchResults[i]) - PSXMu32(SearchResults[i]) == val) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; +} + +void CheatSearchIncreased8() { + u32 i, j; + + assert(prevM != NULL); // not possible for the first search + + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PrevMu8(SearchResults[i]) < PSXMu8(SearchResults[i])) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; +} + +void CheatSearchIncreased16() { + u32 i, j; + + assert(prevM != NULL); // not possible for the first search + + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PrevMu16(SearchResults[i]) < PSXMu16(SearchResults[i])) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; +} + +void CheatSearchIncreased32() { + u32 i, j; + + assert(prevM != NULL); // not possible for the first search + + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PrevMu32(SearchResults[i]) < PSXMu32(SearchResults[i])) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; +} + +void CheatSearchDecreased8() { + u32 i, j; + + assert(prevM != NULL); // not possible for the first search + + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PrevMu8(SearchResults[i]) > PSXMu8(SearchResults[i])) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; +} + +void CheatSearchDecreased16() { + u32 i, j; + + assert(prevM != NULL); // not possible for the first search + + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PrevMu16(SearchResults[i]) > PSXMu16(SearchResults[i])) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; +} + +void CheatSearchDecreased32() { + u32 i, j; + + assert(prevM != NULL); // not possible for the first search + + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PrevMu32(SearchResults[i]) > PSXMu32(SearchResults[i])) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; +} + +void CheatSearchDifferent8() { + u32 i, j; + + assert(prevM != NULL); // not possible for the first search + + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PrevMu8(SearchResults[i]) != PSXMu8(SearchResults[i])) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; +} + +void CheatSearchDifferent16() { + u32 i, j; + + assert(prevM != NULL); // not possible for the first search + + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PrevMu16(SearchResults[i]) != PSXMu16(SearchResults[i])) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; +} + +void CheatSearchDifferent32() { + u32 i, j; + + assert(prevM != NULL); // not possible for the first search + + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PrevMu32(SearchResults[i]) != PSXMu32(SearchResults[i])) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; +} + +void CheatSearchNoChange8() { + u32 i, j; + + assert(prevM != NULL); // not possible for the first search + + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PrevMu8(SearchResults[i]) == PSXMu8(SearchResults[i])) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; +} + +void CheatSearchNoChange16() { + u32 i, j; + + assert(prevM != NULL); // not possible for the first search + + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PrevMu16(SearchResults[i]) == PSXMu16(SearchResults[i])) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; +} + +void CheatSearchNoChange32() { + u32 i, j; + + assert(prevM != NULL); // not possible for the first search + + j = 0; + + for (i = 0; i < NumSearchResults; i++) { + if (PrevMu32(SearchResults[i]) == PSXMu32(SearchResults[i])) { + SearchResults[j++] = SearchResults[i]; + } + } + + NumSearchResults = j; +} diff --git a/libpcsxcore/cheat.h b/libpcsxcore/cheat.h new file mode 100644 index 0000000..d54f22c --- /dev/null +++ b/libpcsxcore/cheat.h @@ -0,0 +1,117 @@ +/* Cheat Support for PCSX-Reloaded + * Copyright (C) 2009, Wei Mingzhi . + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA + */ + +#ifndef CHEAT_H +#define CHEAT_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + uint32_t Addr; + uint16_t Val; +} CheatCode; + +typedef struct { + char *Descr; + int First; // index of the first cheat code + int n; // number of cheat codes for this cheat + int Enabled; +} Cheat; + +void ClearAllCheats(); + +void LoadCheats(const char *filename); +void SaveCheats(const char *filename); + +void ApplyCheats(); + +int AddCheat(const char *descr, char *code); +void RemoveCheat(int index); +int EditCheat(int index, const char *descr, char *code); + +void FreeCheatSearchResults(); +void FreeCheatSearchMem(); +void CheatSearchBackupMemory(); + +void CheatSearchEqual8(u8 val); +void CheatSearchEqual16(u16 val); +void CheatSearchEqual32(u32 val); +void CheatSearchNotEqual8(u8 val); +void CheatSearchNotEqual16(u16 val); +void CheatSearchNotEqual32(u32 val); +void CheatSearchRange8(u8 min, u8 max); +void CheatSearchRange16(u16 min, u16 max); +void CheatSearchRange32(u32 min, u32 max); +void CheatSearchIncreasedBy8(u8 val); +void CheatSearchIncreasedBy16(u16 val); +void CheatSearchIncreasedBy32(u32 val); +void CheatSearchDecreasedBy8(u8 val); +void CheatSearchDecreasedBy16(u16 val); +void CheatSearchDecreasedBy32(u32 val); +void CheatSearchIncreased8(); +void CheatSearchIncreased16(); +void CheatSearchIncreased32(); +void CheatSearchDecreased8(); +void CheatSearchDecreased16(); +void CheatSearchDecreased32(); +void CheatSearchDifferent8(); +void CheatSearchDifferent16(); +void CheatSearchDifferent32(); +void CheatSearchNoChange8(); +void CheatSearchNoChange16(); +void CheatSearchNoChange32(); + +extern Cheat *Cheats; +extern CheatCode *CheatCodes; +extern int NumCheats; +extern int NumCodes; + +extern s8 *prevM; +extern u32 *SearchResults; +extern int NumSearchResults; + +#define PREVM(mem) (&prevM[mem]) +#define PrevMu8(mem) (*(u8 *)PREVM(mem)) +#define PrevMu16(mem) (SWAP16(*(u16 *)PREVM(mem))) +#define PrevMu32(mem) (SWAP32(*(u32 *)PREVM(mem))) + +// cheat types +#define CHEAT_CONST8 0x30 /* 8-bit Constant Write */ +#define CHEAT_CONST16 0x80 /* 16-bit Constant Write */ +#define CHEAT_INC16 0x10 /* 16-bit Increment */ +#define CHEAT_DEC16 0x11 /* 16-bit Decrement */ +#define CHEAT_INC8 0x20 /* 8-bit Increment */ +#define CHEAT_DEC8 0x21 /* 8-bit Decrement */ +#define CHEAT_SLIDE 0x50 /* Slide Codes */ +#define CHEAT_MEMCPY 0xC2 /* Memory Copy */ + +#define CHEAT_EQU8 0xE0 /* 8-bit Equal To */ +#define CHEAT_NOTEQU8 0xE1 /* 8-bit Not Equal To */ +#define CHEAT_LESSTHAN8 0xE2 /* 8-bit Less Than */ +#define CHEAT_GREATERTHAN8 0xE3 /* 8-bit Greater Than */ +#define CHEAT_EQU16 0xD0 /* 16-bit Equal To */ +#define CHEAT_NOTEQU16 0xD1 /* 16-bit Not Equal To */ +#define CHEAT_LESSTHAN16 0xD2 /* 16-bit Less Than */ +#define CHEAT_GREATERTHAN16 0xD3 /* 16-bit Greater Than */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/coff.h b/libpcsxcore/coff.h new file mode 100644 index 0000000..1d084d2 --- /dev/null +++ b/libpcsxcore/coff.h @@ -0,0 +1,38 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#ifndef __COFF_H__ +#define __COFF_H__ + +/********************** FILE HEADER **********************/ + +struct external_filehdr { + unsigned short f_magic; /* magic number */ + unsigned short f_nscns; /* number of sections */ + unsigned long f_timdat; /* time & date stamp */ + unsigned long f_symptr; /* file pointer to symtab */ + unsigned long f_nsyms; /* number of symtab entries */ + unsigned short f_opthdr; /* sizeof(optional hdr) */ + unsigned short f_flags; /* flags */ +}; + +#define FILHDR struct external_filehdr +#define FILHSZ sizeof(FILHDR) + +#endif diff --git a/libpcsxcore/debug.c b/libpcsxcore/debug.c new file mode 100644 index 0000000..307a002 --- /dev/null +++ b/libpcsxcore/debug.c @@ -0,0 +1,1145 @@ +/* Pcsx - Pc Psx Emulator + * Copyright (C) 1999-2003 Pcsx Team + * + * 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, see . + */ + +#include "psxcommon.h" +#include "r3000a.h" +#include "debug.h" +#include "socket.h" + +/* +PCSX Debug console protocol description, version 1.0 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Commands number are formatted using %03X (yes) +Registers number are formatted using %02X. +Breakpoints numbers are formatted using %X +All other values are formatted using %08X, unless specified. + + +Client inputs: +~~~~~~~~~~~~~ +Basic commands (1xx): +-------------------- +100 + Sends a dumb message. Will be replied with a 200 reply, followed by the message. +101 + Gets PCSX version. +102 + Gets protocol version. +103 + Gets status +110 + Gets PC. +111 [reg] + Gets GP register, or all, if no argument. +112 + Gets LO/HI registers. +113 [reg] + Gets COP0 register, or all, if no argument. +114 [reg] + Gets COP2 control register, or all, if no argument. +115 [reg] + Gets COP2 data register, or all, if no argument. +119 [pc] + Disassemble current PC, or given PC. +121 = + Sets a GP register. Will return a 221 message. +122 = + Sets LO or HI register. Will return a 222 message. +123 = + Sets a COP0 register. Will return a 223 message. +124 = + Sets a COP2 control register. Will return a 224 message. +125 = + Sets a COP2 data register. Will return a 225 message. +130 @ + Dumps a range of memory, of size bytes starting at addr. +140 @ + Sets a range of memory, of size bytes starting at addr. + Will have to send immediately exactly size bytes afterward. +150 [number] + Starts/reset mapping execution flow, or stop it if number = 0 +151 [number] + Starts/reset mapping read8 flow, or stop it if number = 0 +152 [number] + Starts/reset mapping read16 flow, or stop it if number = 0 +153 [number] + Starts/reset mapping read32 flow, or stop it if number = 0 +154 [number] + Starts/reset mapping write8 flow, or stop it if number = 0 +155 [number] + Starts/reset mapping write16 flow, or stop it if number = 0 +156 [number] + Starts/reset mapping write32 flow, or stop it if number = 0 +160 [number] + Breaks on map exec flow, or stop it if number = 0 +161 [number] + Breaks on map read8 flow, or stop it if number = 0 +162 [number] + Breaks on map read16 flow, or stop it if number = 0 +163 [number] + Breaks on map read32 flow, or stop it if number = 0 +164 [number] + Breaks on map write8 flow, or stop it if number = 0 +165 [number] + Breaks on map write16 flow, or stop it if number = 0 +166 [number] + Breaks on map write32 flow, or stop it if number = 0 +170 + Dumps the execution flow map in an IDC file + +Execution flow control commands (3xx): +------------------------------------- +300 [number] + Get a list of the actual breakpoints. Will get '400' answers. +301 [number] + Deletes a breakpoint, or all, if no arguments. +310
+ Sets an exec breakpoint. +320
+ Sets a read breakpoint, 1 byte / 8 bits. +321
+ Sets a read breakpoint, 2 bytes / 16 bits, has to be on an even address. +322
+ Sets a read breakpoint, 4 bytes / 32 bits, address has to be 4-bytes aligned. +330
+ Sets a write breakpoint, 1 byte / 8 bits. +331
+ Sets a write breakpoint, 2 bytes / 16 bits, has to be on an even address. +332
+ Sets a write breakpoint, 4 bytes / 32 bits, address has to be 4-bytes aligned. +390 + Pauses execution. Equivalents to a breakpoint. +391 + Restarts execution. +395 [number] + Traces execution, 1 instruction by default. Formatted using %i +398 + Soft (quick) resets. +399 + Resets. + + +Server outputs: +~~~~~~~~~~~~~~ +Spontaneous messages (0xx): +-------------------------- +000 + Greeting banner. +010 / 011 / 012 / 013 / 014 / 015 / 016 + Execution hit mapping flow automatic breakpoint. +030 @ + Execution hit breakpoint, PCSX is paused. Displays PC's value. + +Basic commands acknowledge (2xx): +-------------------------------- +200 + Sends a dumb message. +201 + Returns PCSX version. +202 + Returns protocol version. +203 + status = 0: running; = 1: paused; = 2: trace +210 PC= + Displays current PC value. +211 = + Displays one GP register value. +212 LO= HI= + Displays LO/HI registers. +213 = + Displays one COP0 register value. +214 = + Displays one COP2 control register value. +215 = + Displays one COP2 data register value. +219 + Displays one line of disassembled code. +221 = + Displays one GP register value, ack for modification. +222 LO= HI= + Displays LO/HI registers, ack for modification. +223 = + Displays one COP0 register value, ack for modification. +224 = + Displays one COP2 control register value, ack for modification. +225 = + Displays one COP2 data register value, ack for modification. +230 @ + Dumping memory. Will then raw outputs size bytes. +240 @ + Memory set acknowledge. +250 / 251 / 252 / 253 / 254 / 255 / 256 + Acknolwedge of 15x commands. +260 / 261 / 262 / 263 / 264 / 265 / 266 + Acknolwedge of 16x commands. +270 + Acknolwedge of 170 command. + +Execution flow control commands acknowledge (4xx): +------------------------------------------------- +400 @
- + Displays a breakpoint, where 'type' can be of E, R1, R2, R4, W1, W2 or W4. +401 + Breakpoint deleting acknowledge. +410, 420, 421, 422, 430, 431, 432 + Breakpoint adding acknowledge. Returns the number of the added breakpoint. +490 + Pausing. +491 + Resuming. +495 + Tracing. +498 + Soft resetting. +499 + Resetting. + +Error messages (5xx): +-------------------- +500 + Command not understood. +511 + Invalid GPR register. +512 + Invalid LO/HI register. +513, 514 + Invalid range or address. +530 + Non existant breakpoint. +531, 532, 533 + Invalid breakpoint address. +*/ + +static int debugger_active = 0, paused = 0, trace = 0, reset = 0, resetting = 0; +static int mapping_e = 0, mapping_r8 = 0, mapping_r16 = 0, mapping_r32 = 0, mapping_w8 = 0, mapping_w16 = 0, mapping_w32 = 0; +static int breakmp_e = 0, breakmp_r8 = 0, breakmp_r16 = 0, breakmp_r32 = 0, breakmp_w8 = 0, breakmp_w16 = 0, breakmp_w32 = 0; + +static void ProcessCommands(); + +static u8 *MemoryMap = NULL; + +enum { + MAP_EXEC = 1, + MAP_R8 = 2, + MAP_R16 = 4, + MAP_R32 = 8, + MAP_W8 = 16, + MAP_W16 = 32, + MAP_W32 = 64, + MAP_EXEC_JAL = 128, +}; + +char *breakpoint_type_names[] = { + "E", "R1", "R2", "R4", "W1", "W2", "W4" +}; + +typedef struct breakpoint_s { + struct breakpoint_s *next, *prev; + int number, type; + u32 address; +} breakpoint_t; + +static breakpoint_t *first = NULL; + +int add_breakpoint(int type, u32 address) { + breakpoint_t *bp = (breakpoint_t *)malloc(sizeof(breakpoint_t)); + + bp->type = type; + bp->address = address; + + if (first) { + bp->number = first->prev->number + 1; + bp->next = first; + bp->prev = first->prev; + first->prev = bp; + bp->prev->next = bp; + } else { + first = bp; + bp->number = 1; + bp->next = bp; + bp->prev = bp; + } + + return bp->number; +} + +void delete_breakpoint(breakpoint_t * bp) { + if (bp == first) { + if (bp->next == bp) { + first = NULL; + } else { + first = bp->next; + } + } + + bp->next->prev = bp->prev; + bp->prev->next = bp->next; + + free(bp); +} + +breakpoint_t *next_breakpoint(breakpoint_t *bp) { + return bp->next != first ? bp->next : 0; +} + +breakpoint_t *find_breakpoint(int number) { + breakpoint_t *p; + + for (p = first; p; p = next_breakpoint(p)) { + if (p->number == number) + return p; + } + + return 0; +} + +void StartDebugger() { + if (debugger_active) + return; + + MemoryMap = (u8 *)malloc(0x200000); + if (MemoryMap == NULL) { + SysMessage(_("Error allocating memory")); + return; + } + + if (StartServer() == -1) { + SysPrintf(_("Unable to start debug server.\n")); + return; + } + + SysPrintf(_("Debugger started.\n")); + debugger_active = 1; +} + +void StopDebugger() { + if (debugger_active) { + StopServer(); + SysPrintf(_("Debugger stopped.\n")); + } + + if (MemoryMap != NULL) { + free(MemoryMap); + MemoryMap = NULL; + } + + while (first != NULL) delete_breakpoint(first); + + debugger_active = 0; +} + +void PauseDebugger() { + trace = 0; + paused = 1; +} + +void ResumeDebugger() { + trace = 0; + paused = 0; +} + +void DebugVSync() { + if (!debugger_active || resetting) + return; + + if (reset) { + resetting = 1; + CheckCdrom(); + SysReset(); + if (reset == 2) + LoadCdrom(); + reset = resetting = 0; + return; + } + + GetClient(); + ProcessCommands(); +} + +void MarkMap(u32 address, int mask) { + if ((address & 0xff000000) != 0x80000000) return; + MemoryMap[address & 0x001fffff] |= mask; +} + +int IsMapMarked(u32 address, int mask) { + return (MemoryMap[address & 0x001fffff] & mask) != 0; +} + +void ProcessDebug() { + if (!debugger_active || reset || resetting) + return; + if (trace) { + if (!(--trace)) { + paused = 1; + } + } + if (!paused) { + DebugCheckBP(psxRegs.pc, E); + } + if (mapping_e) { + MarkMap(psxRegs.pc, MAP_EXEC); + if ((psxRegs.code >> 26) == 3) { + MarkMap(_JumpTarget_, MAP_EXEC_JAL); + } + if (((psxRegs.code >> 26) == 0) && ((psxRegs.code && 0x3F) == 9)) { + MarkMap(_Rd_, MAP_EXEC_JAL); + } + } + while (paused) { + GetClient(); + ProcessCommands(); + GPU_updateLace(); + SysUpdate(); + } +} + +static void ProcessCommands() { + int code, i, dumping; + FILE *sfile; + char cmd[257], *arguments, *p, reply[10240], *save, *dump; + u32 reg, value, size, address; + breakpoint_t *bp; + + if (!HasClient()) + return; + if (ReadSocket(cmd, 256) > 0) { + arguments = NULL; + if (strlen(cmd) <= 2) { + code = 0; + } else if (strlen(cmd) == 3) { + code = strtol(cmd, 0, 16); + } else if (!(isxdigit(cmd[0]) && isxdigit(cmd[1]) && isxdigit(cmd[2]) && (cmd[3] == 0x20))) { + code = 0; + } else if (sscanf(cmd, "%3X ", &code) != 1) { + code = 0; + } else { + arguments = cmd + 4; + } + code = strtol(cmd, &arguments, 16); + while (arguments && *arguments && *arguments == 0x20) + arguments++; + + if (*arguments == '\0') + arguments = NULL; + + dumping = 0; + save = NULL; + + switch (code) { + case 0x100: + sprintf(reply, "200 %s\r\n", arguments == NULL ? "OK" : arguments); + break; + case 0x101: + sprintf(reply, "201 %s\r\n", PACKAGE_VERSION); + break; + case 0x102: + sprintf(reply, "202 1.0\r\n"); + break; + case 0x103: + sprintf(reply, "203 %i\r\n", paused ? 1 : trace ? 2 : 0); + break; + case 0x110: + sprintf(reply, "210 PC=%08X\r\n", psxRegs.pc); + break; + case 0x111: + if (arguments) { + if (sscanf(arguments, "%02X", &code) != 1) { + sprintf(reply, "511 Malformed 111 command '%s'\r\n", cmd); + break; + } + } + if (!arguments) { + reply[0] = 0; + for (i = 0; i < 32; i++) { + sprintf(reply, "%s211 %02X=%08X\r\n", reply, i, psxRegs.GPR.r[i]); + } + } else { + if ((code >= 0) && (code < 32)) { + sprintf(reply, "211 %02X=%08X\r\n", code, psxRegs.GPR.r[code]); + } else { + sprintf(reply, "511 Invalid GPR register: %X\r\n", code); + } + } + break; + case 0x112: + sprintf(reply, "212 LO=%08X HI=%08X\r\n", psxRegs.GPR.n.lo, psxRegs.GPR.n.hi); + break; + case 0x113: + if (arguments) { + if (sscanf(arguments, "%02X", &code) != 1) { + sprintf(reply, "511 Malformed 113 command '%s'\r\n", cmd); + break; + } + } + if (!arguments) { + reply[0] = 0; + for (i = 0; i < 32; i++) { + sprintf(reply, "%s213 %02X=%08X\r\n", reply, i, psxRegs.CP0.r[i]); + } + } else { + if ((code >= 0) && (code < 32)) { + sprintf(reply, "213 %02X=%08X\r\n", code, psxRegs.CP0.r[code]); + } else { + sprintf(reply, "511 Invalid COP0 register: %X\r\n", code); + } + } + break; + case 0x114: + if (arguments) { + if (sscanf(arguments, "%02X", &code) != 1) { + sprintf(reply, "511 Malformed 114 command '%s'\r\n", cmd); + break; + } + } + if (!arguments) { + reply[0] = 0; + for (i = 0; i < 32; i++) { + sprintf(reply, "%s214 %02X=%08X\r\n", reply, i, psxRegs.CP2C.r[i]); + } + } else { + if ((code >= 0) && (code < 32)) { + sprintf(reply, "214 %02X=%08X\r\n", code, psxRegs.CP2C.r[code]); + } else { + sprintf(reply, "511 Invalid COP2C register: %X\r\n", code); + } + } + break; + case 0x115: + if (arguments) { + if (sscanf(arguments, "%02X", &code) != 1) { + sprintf(reply, "511 Malformed 111 command '%s'\r\n", cmd); + break; + } + } + if (!arguments) { + reply[0] = 0; + for (i = 0; i < 32; i++) { + sprintf(reply, "%s215 %02X=%08X\r\n", reply, i, psxRegs.CP2D.r[i]); + } + } else { + if ((code >= 0) && (code < 32)) { + sprintf(reply, "215 %02X=%08X\r\n", code, psxRegs.CP2D.r[code]); + } else { + sprintf(reply, "511 Invalid COP2D register: %X\r\n", code); + } + } + break; + case 0x119: + if (arguments) { + if (sscanf(arguments, "%08X", &code) != 1) { + sprintf(reply, "511 Malformed 119 command '%s'\r\n", cmd); + break; + } + } + if (!arguments) + code = psxRegs.pc; + + sprintf(reply, "219 %s\r\n", disR3000AF(psxMemRead32(code), code)); + break; + case 0x121: + if (!arguments || sscanf(arguments, "%02X=%08X", ®, &value) != 2) { + sprintf(reply, "500 Malformed 121 command '%s'\r\n", arguments); + break; + } + + if (reg < 32) { + psxRegs.GPR.r[reg] = value; + sprintf(reply, "221 %02X=%08X\r\n", reg, value); + } else { + sprintf(reply, "512 Invalid GPR register: %02X\r\n", reg); + } + break; + case 0x122: + if (!arguments || strncmp(arguments, "HI=", 3) == 0) { + reg = 33; + } else if (arguments && strncmp(arguments, "LO=", 3) == 0) { + reg = 32; + } else { + arguments[2] = 0; + sprintf(reply, "512 Invalid LO/HI register: '%s'\r\n", arguments); + break; + } + + if (sscanf(arguments + 3, "%08X", &value) != 1) { + sprintf(reply, "500 Malformed 122 command '%s'\r\n", arguments); + } else { + psxRegs.GPR.r[reg] = value; + sprintf(reply, "222 LO=%08X HI=%08X\r\n", psxRegs.GPR.n.lo, psxRegs.GPR.n.hi); + } + break; + case 0x123: + if (!arguments || sscanf(arguments, "%02X=%08X", ®, &value) != 2) { + sprintf(reply, "500 Malformed 123 command '%s'\r\n", arguments); + break; + } + + if (reg < 32) { + psxRegs.CP0.r[reg] = value; + sprintf(reply, "223 %02X=%08X\r\n", reg, value); + } else { + sprintf(reply, "512 Invalid COP0 register: %02X\r\n", reg); + } + break; + case 0x124: + if (!arguments || sscanf(arguments, "%02X=%08X", ®, &value) != 2) { + sprintf(reply, "500 Malformed 124 command '%s'\r\n", arguments); + break; + } + + if (reg < 32) { + psxRegs.CP2C.r[reg] = value; + sprintf(reply, "224 %02X=%08X\r\n", reg, value); + } else { + sprintf(reply, "512 Invalid COP2C register: %02X\r\n", reg); + } + break; + case 0x125: + if (!arguments || sscanf(arguments, "%02X=%08X", ®, &value) != 2) { + sprintf(reply, "500 Malformed 121 command '%s'\r\n", arguments); + break; + } + + if (reg < 32) { + psxRegs.CP2D.r[reg] = value; + sprintf(reply, "225 %02X=%08X\r\n", reg, value); + } else { + sprintf(reply, "512 Invalid COP2D register: %02X\r\n", reg); + } + break; + case 0x130: + if (!arguments || sscanf(arguments, "%08X@%08X", &size, &address) != 2) { + sprintf(reply, "500 Malformed 130 command '%s'\r\n", arguments); + break; + } + + if ((address >= 0x80000000) && ((address + size) <= 0x80200000)) { + sprintf(reply, "230 %08X@%08X\r\n", size, address); + dump = (char *) PSXM(address); + dumping = 1; + } else { + sprintf(reply, "513 Invalid address or range: '%s'\r\n", arguments); + } + break; + case 0x140: + if (!arguments || sscanf(arguments, "%08X@%08X", &size, &address) != 2) { + sprintf(reply, "500 Malformed 140 command '%s'\r\n", arguments); + break; + } + + if ((address >= 0x80000000) && ((address + size) <= 0x80200000)) { + sprintf(reply, "240 %08X@%08X\r\n", size, address); + RawReadSocket((char *)PSXM(address), size); + } else { + sprintf(reply, "514 Invalid address or range: '%s'\r\n", arguments); + } + break; + case 0x150: + code = 1; + if (arguments) { + if (sscanf(arguments, "%02X", &code) != 1) { + sprintf(reply, "500 Malformed 150 command '%s'\r\n", cmd); + break; + } + } + if (code) { + mapping_e = 1; + for (i = 0; i < 0x00200000; i++) { + MemoryMap[i] &= ~MAP_EXEC; + MemoryMap[i] &= ~MAP_EXEC_JAL; + } + } else { + mapping_e = 0; + } + sprintf(reply, "250 Mapping of exec flow %s\r\n", code ? "started" : "stopped"); + break; + case 0x151: + code = 1; + if (arguments) { + if (sscanf(arguments, "%02X", &code) != 1) { + sprintf(reply, "500 Malformed 151 command '%s'\r\n", cmd); + break; + } + } + if (code) { + mapping_r8 = 1; + for (i = 0; i < 0x00200000; i++) { + MemoryMap[i] &= ~MAP_R8; + } + } else { + mapping_r8 = 0; + } + sprintf(reply, "251 Mapping of read8 flow %s\r\n", code ? "started" : "stopped"); + break; + case 0x152: + code = 1; + if (arguments) { + if (sscanf(arguments, "%02X", &code) != 1) { + sprintf(reply, "500 Malformed 152 command '%s'\r\n", cmd); + break; + } + } + if (code) { + mapping_r16 = 1; + for (i = 0; i < 0x00200000; i++) { + MemoryMap[i] &= ~MAP_R16; + } + } else { + mapping_r16 = 0; + } + sprintf(reply, "252 Mapping of read16 flow %s\r\n", code ? "started" : "stopped"); + break; + case 0x153: + code = 1; + if (arguments) { + if (sscanf(arguments, "%02X", &code) != 1) { + sprintf(reply, "500 Malformed 153 command '%s'\r\n", cmd); + break; + } + } + if (code) { + mapping_r32 = 1; + for (i = 0; i < 0x00200000; i++) { + MemoryMap[i] &= ~MAP_R32; + } + } else { + mapping_r32 = 0; + } + sprintf(reply, "253 Mapping of read32 flow %s\r\n", code ? "started" : "stopped"); + break; + case 0x154: + code = 1; + if (arguments) { + if (sscanf(arguments, "%02X", &code) != 1) { + sprintf(reply, "500 Malformed 154 command '%s'\r\n", cmd); + break; + } + } + if (code) { + mapping_w8 = 1; + for (i = 0; i < 0x00200000; i++) { + MemoryMap[i] &= ~MAP_W8; + } + } else { + mapping_w8 = 0; + } + sprintf(reply, "254 Mapping of write8 flow %s\r\n", code ? "started" : "stopped"); + break; + case 0x155: + code = 1; + if (arguments) { + if (sscanf(arguments, "%02X", &code) != 1) { + sprintf(reply, "500 Malformed 155 command '%s'\r\n", cmd); + break; + } + } + if (code) { + mapping_w16 = 1; + for (i = 0; i < 0x00200000; i++) { + MemoryMap[i] &= ~MAP_W16; + } + } else { + mapping_w16 = 0; + } + sprintf(reply, "255 Mapping of write16 flow %s\r\n", code ? "started" : "stopped"); + break; + case 0x156: + code = 1; + if (arguments) { + if (sscanf(arguments, "%02X", &code) != 1) { + sprintf(reply, "500 Malformed 156 command '%s'\r\n", cmd); + break; + } + } + if (code) { + mapping_w32 = 1; + for (i = 0; i < 0x00200000; i++) { + MemoryMap[i] &= ~MAP_W32; + } + } else { + mapping_w32 = 0; + } + sprintf(reply, "256 Mapping of write32 flow %s\r\n", code ? "started" : "stopped"); + break; + case 0x160: + code = 1; + if (arguments) { + if (sscanf(arguments, "%02X", &code) != 1) { + sprintf(reply, "500 Malformed 160 command '%s'\r\n", cmd); + break; + } + } + if (code) { + breakmp_e = 1; + } else { + breakmp_e = 0; + } + sprintf(reply, "260 Break on map of exec flow %s\r\n", code ? "started" : "stopped"); + break; + case 0x161: + code = 1; + if (arguments) { + if (sscanf(arguments, "%02X", &code) != 1) { + sprintf(reply, "500 Malformed 161 command '%s'\r\n", cmd); + break; + } + } + if (code) { + breakmp_r8 = 1; + } else { + breakmp_r8 = 0; + } + sprintf(reply, "261 Break on map of read8 flow %s\r\n", code ? "started" : "stopped"); + break; + case 0x162: + code = 1; + if (arguments) { + if (sscanf(arguments, "%02X", &code) != 1) { + sprintf(reply, "500 Malformed 162 command '%s'\r\n", cmd); + break; + } + } + if (code) { + breakmp_r16 = 1; + } else { + breakmp_r16 = 0; + } + sprintf(reply, "262 Break on map of read16 flow %s\r\n", code ? "started" : "stopped"); + break; + case 0x163: + code = 1; + if (arguments) { + if (sscanf(arguments, "%02X", &code) != 1) { + sprintf(reply, "500 Malformed 163 command '%s'\r\n", cmd); + break; + } + } + if (code) { + breakmp_r32 = 1; + } else { + breakmp_r32 = 0; + } + sprintf(reply, "263 Break on map of read32 flow %s\r\n", code ? "started" : "stopped"); + break; + case 0x164: + code = 1; + if (arguments) { + if (sscanf(arguments, "%02X", &code) != 1) { + sprintf(reply, "500 Malformed 164 command '%s'\r\n", cmd); + break; + } + } + if (code) { + breakmp_w8 = 1; + } else { + breakmp_w8 = 0; + } + sprintf(reply, "264 Break on map of write8 flow %s\r\n", code ? "started" : "stopped"); + break; + case 0x165: + code = 1; + if (arguments) { + if (sscanf(arguments, "%02X", &code) != 1) { + sprintf(reply, "500 Malformed 165 command '%s'\r\n", cmd); + break; + } + } + if (code) { + breakmp_w16 = 1; + } else { + breakmp_w16 = 0; + } + sprintf(reply, "265 Break on map of write16 flow %s\r\n", code ? "started" : "stopped"); + break; + case 0x166: + code = 1; + if (arguments) { + if (sscanf(arguments, "%02X", &code) != 1) { + sprintf(reply, "500 Malformed 166 command '%s'\r\n", cmd); + break; + } + } + if (code) { + breakmp_w32 = 1; + } else { + breakmp_w32 = 0; + } + sprintf(reply, "266 Break on map of write32 flow %s\r\n", code ? "started" : "stopped"); + break; + case 0x170: + sfile = fopen("flow.idc", "wb"); + fprintf(sfile, "#include \r\n\r\n"); + fprintf(sfile, "static main(void) {\r\n"); + for (i = 0; i < 0x00200000; i++) { + if (IsMapMarked(i, MAP_EXEC_JAL)) { + fprintf(sfile, "\tMakeFunction(0X8%07X,BADADDR);\r\n", i); + } + } + fprintf(sfile, "}\r\n"); + fclose(sfile); + sfile = fopen("markcode.idc", "wb"); + fprintf(sfile, "#include \r\n\r\n"); + fprintf(sfile, "static main(void) {\r\n"); + for (i = 0; i < 0x00200000; i++) { + if (IsMapMarked(i, MAP_EXEC)) { + fprintf(sfile, "\tMakeCode(0X8%07X);\r\n", i); + } + } + fprintf(sfile, "}\r\n"); + fclose(sfile); + sprintf(reply, "270 flow.idc and markcode.idc dumped\r\n"); + break; + case 0x300: + p = arguments; + if (arguments) { + code = strtol(arguments, &p, 16); + } + if (p == arguments) { + if (first) { + reply[0] = 0; + for (bp = first; bp; bp = next_breakpoint(bp)) { + sprintf(reply, "%s400 %X@%08X-%s\r\n", reply, bp->number, bp->address, breakpoint_type_names[bp->type]); + } + } else { + sprintf(reply, "530 No breakpoint\r\n"); + } + } else { + if ((bp = find_breakpoint(code))) { + sprintf(reply, "400 %X@%08X-%s\r\n", bp->number, bp->address, breakpoint_type_names[bp->type]); + } else { + sprintf(reply, "530 Invalid breakpoint number: %X\r\n", code); + } + } + break; + case 0x301: + p = arguments; + if (arguments) { + code = strtol(arguments, &p, 16); + } + if (p == arguments) { + while (first != NULL) delete_breakpoint(first); + sprintf(reply, "401 All breakpoints deleted.\r\n"); + } else { + if ((bp = find_breakpoint(code))) { + delete_breakpoint(bp); + sprintf(reply, "401 Breakpoint %X deleted.\r\n", code); + } else { + sprintf(reply, "530 Invalid breakpoint number: %X\r\n", code); + } + } + break; + case 0x310: + if (!arguments || sscanf(arguments, "%08X", &address) != 1) { + sprintf(reply, "500 Malformed 310 command '%s'\r\n", arguments); + break; + } +// if ((address & 3) || (address < 0x80000000) || (address >= 0x80200000)) { +// sprintf(reply, "531 Invalid address %08X\r\n", address); +// break; +// } + code = add_breakpoint(E, address); + sprintf(reply, "410 %X\r\n", code); + break; + case 0x320: + if (!arguments || sscanf(arguments, "%08X", &address) != 1) { + sprintf(reply, "500 Malformed 320 command '%s'\r\n", arguments); + break; + } + if ((address < 0x80000000) || (address >= 0x80200000)) { + sprintf(reply, "532 Invalid address %08X\r\n", address); + break; + } + code = add_breakpoint(R1, address); + sprintf(reply, "420 %X\r\n", code); + break; + case 0x321: + if (!arguments || sscanf(arguments, "%08X", &address) != 1) { + sprintf(reply, "500 Malformed 321 command '%s'\r\n", arguments); + break; + } + if ((address & 1) || (address < 0x80000000) || (address >= 0x80200000)) { + sprintf(reply, "532 Invalid address %08X\r\n", address); + break; + } + code = add_breakpoint(R2, address); + sprintf(reply, "421 %X\r\n", code); + break; + case 0x322: + if (!arguments || sscanf(arguments, "%08X", &address) != 1) { + sprintf(reply, "500 Malformed 322 command '%s'\r\n", arguments); + break; + } + if ((address & 3) || (address < 0x80000000) || (address >= 0x80200000)) { + sprintf(reply, "532 Invalid address %08X\r\n", address); + break; + } + code = add_breakpoint(R4, address); + sprintf(reply, "422 %X\r\n", code); + break; + case 0x330: + if (!arguments || sscanf(arguments, "%08X", &address) != 1) { + sprintf(reply, "500 Malformed 330 command '%s'\r\n", arguments); + break; + } + if ((address < 0x80000000) || (address >= 0x80200000)) { + sprintf(reply, "533 Invalid address %08X\r\n", address); + break; + } + code = add_breakpoint(W1, address); + sprintf(reply, "430 %X\r\n", code); + break; + case 0x331: + if (!arguments || sscanf(arguments, "%08X", &address) != 1) { + sprintf(reply, "500 Malformed 331 command '%s'\r\n", arguments); + break; + } + if ((address & 1) || (address < 0x80000000) || (address >= 0x80200000)) { + sprintf(reply, "533 Invalid address %08X\r\n", address); + break; + } + code = add_breakpoint(W2, address); + sprintf(reply, "431 %X\r\n", code); + break; + case 0x332: + if (!arguments || sscanf(arguments, "%08X", &address) != 1) { + sprintf(reply, "500 Malformed 332 command '%s'\r\n", arguments); + break; + } + if ((address & 3) || (address < 0x80000000) || (address >= 0x80200000)) { + sprintf(reply, "533 Invalid address %08X\r\n", address); + break; + } + code = add_breakpoint(W4, address); + sprintf(reply, "432 %X\r\n", code); + break; + case 0x390: + paused = 1; + sprintf(reply, "490 Paused\r\n"); + break; + case 0x391: + paused = 0; + sprintf(reply, "491 Resumed\r\n"); + break; + case 0x395: + p = arguments; + if (arguments) { + trace = strtol(arguments, &p, 10); + } + if (p == arguments) { + trace = 1; + } + paused = 0; + sprintf(reply, "495 Tracing\r\n"); + break; + case 0x398: + paused = 0; + trace = 0; + reset = 2; + sprintf(reply, "498 Soft resetting\r\n"); + break; + case 0x399: + paused = 0; + trace = 0; + reset = 1; + sprintf(reply, "499 Resetting\r\n"); + break; + default: + sprintf(reply, "500 Unknown command '%s'\r\n", cmd); + break; + } + WriteSocket(reply, strlen(reply)); + + if (dumping) { + WriteSocket(dump, size); + } + + if (save) { + free(save); + } + } +} + +void DebugCheckBP(u32 address, enum breakpoint_types type) { + breakpoint_t *bp; + char reply[512]; + + if (!debugger_active || reset) + return; + for (bp = first; bp; bp = next_breakpoint(bp)) { + if ((bp->type == type) && (bp->address == address)) { + sprintf(reply, "030 %X@%08X\r\n", bp->number, psxRegs.pc); + WriteSocket(reply, strlen(reply)); + paused = 1; + return; + } + } + if (breakmp_e && type == E) { + if (!IsMapMarked(address, MAP_EXEC)) { + sprintf(reply, "010 %08X@%08X\r\n", address, psxRegs.pc); + WriteSocket(reply, strlen(reply)); + paused = 1; + } + } + if (breakmp_r8 && type == R1) { + if (!IsMapMarked(address, MAP_R8)) { + sprintf(reply, "011 %08X@%08X\r\n", address, psxRegs.pc); + WriteSocket(reply, strlen(reply)); + paused = 1; + } + } + if (breakmp_r16 && type == R2) { + if (!IsMapMarked(address, MAP_R16)) { + sprintf(reply, "012 %08X@%08X\r\n", address, psxRegs.pc); + WriteSocket(reply, strlen(reply)); + paused = 1; + } + } + if (breakmp_r32 && type == R4) { + if (!IsMapMarked(address, MAP_R32)) { + sprintf(reply, "013 %08X@%08X\r\n", address, psxRegs.pc); + WriteSocket(reply, strlen(reply)); + paused = 1; + } + } + if (breakmp_w8 && type == W1) { + if (!IsMapMarked(address, MAP_W8)) { + sprintf(reply, "014 %08X@%08X\r\n", address, psxRegs.pc); + WriteSocket(reply, strlen(reply)); + paused = 1; + } + } + if (breakmp_w16 && type == W2) { + if (!IsMapMarked(address, MAP_W16)) { + sprintf(reply, "015 %08X@%08X\r\n", address, psxRegs.pc); + WriteSocket(reply, strlen(reply)); + paused = 1; + } + } + if (breakmp_w32 && type == W4) { + if (!IsMapMarked(address, MAP_W32)) { + sprintf(reply, "016 %08X@%08X\r\n", address, psxRegs.pc); + WriteSocket(reply, strlen(reply)); + paused = 1; + } + } + if (mapping_r8 && type == R1) MarkMap(address, MAP_R8); + if (mapping_r16 && type == R2) MarkMap(address, MAP_R16); + if (mapping_r32 && type == R4) MarkMap(address, MAP_R32); + if (mapping_w8 && type == W1) MarkMap(address, MAP_W8); + if (mapping_w16 && type == W2) MarkMap(address, MAP_W16); + if (mapping_w32 && type == W4) MarkMap(address, MAP_W32); + } diff --git a/libpcsxcore/debug.h b/libpcsxcore/debug.h new file mode 100644 index 0000000..5c5336d --- /dev/null +++ b/libpcsxcore/debug.h @@ -0,0 +1,72 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#ifndef __DEBUG_H__ +#define __DEBUG_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +enum breakpoint_types { + E, R1, R2, R4, W1, W2, W4 +}; + +void StartDebugger(); +void StopDebugger(); + +void DebugVSync(); +void ProcessDebug(); + +void DebugCheckBP(u32 address, enum breakpoint_types type); + +void PauseDebugger(); +void ResumeDebugger(); + +extern char *disRNameCP0[]; + +char* disR3000AF(u32 code, u32 pc); + +/* + * Specficies which logs should be activated. + */ + +//#define LOG_STDOUT + +//#define PAD_LOG __Log +//#define GTE_LOG __Log +//#define CDR_LOG __Log("%8.8lx %8.8lx: ", psxRegs.pc, psxRegs.cycle); __Log + +//#define PSXHW_LOG __Log("%8.8lx %8.8lx: ", psxRegs.pc, psxRegs.cycle); __Log +//#define PSXBIOS_LOG __Log("%8.8lx %8.8lx: ", psxRegs.pc, psxRegs.cycle); __Log +//#define PSXDMA_LOG __Log +//#define PSXMEM_LOG __Log("%8.8lx %8.8lx: ", psxRegs.pc, psxRegs.cycle); __Log +//#define PSXCPU_LOG __Log + +//#define CDRCMD_DEBUG + +#if defined (PSXCPU_LOG) || defined(PSXDMA_LOG) || defined(CDR_LOG) || defined(PSXHW_LOG) || \ + defined(PSXBIOS_LOG) || defined(PSXMEM_LOG) || defined(GTE_LOG) || defined(PAD_LOG) +#define EMU_LOG __Log +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/decode_xa.c b/libpcsxcore/decode_xa.c new file mode 100644 index 0000000..1b24d2a --- /dev/null +++ b/libpcsxcore/decode_xa.c @@ -0,0 +1,367 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +/* +* XA audio decoding functions (Kazzuya). +*/ + +#include "decode_xa.h" + +#define FIXED + +#define NOT(_X_) (!(_X_)) +#define XACLAMP(_X_,_MI_,_MA_) {if(_X_<_MI_)_X_=_MI_;if(_X_>_MA_)_X_=_MA_;} + +#define SH 4 +#define SHC 10 + +//============================================ +//=== ADPCM DECODING ROUTINES +//============================================ + +#ifndef FIXED +static double K0[4] = { + 0.0, + 0.9375, + 1.796875, + 1.53125 +}; + +static double K1[4] = { + 0.0, + 0.0, + -0.8125, + -0.859375 +}; +#else +static int K0[4] = { + 0.0 * (1<y0 = 0; + decp->y1 = 0; +} + +//=========================================== +#ifndef FIXED +#define IK0(fid) ((int)((-K0[fid]) * (1<> 4) & 0x0f; + range = (filter_range >> 0) & 0x0f; + + fy0 = decp->y0; + fy1 = decp->y1; + + for (i = BLKSIZ/4; i; --i) { + s32 y; + s32 x0, x1, x2, x3; + + y = *blockp++; + x3 = (short)( y & 0xf000) >> range; x3 <<= SH; + x2 = (short)((y << 4) & 0xf000) >> range; x2 <<= SH; + x1 = (short)((y << 8) & 0xf000) >> range; x1 <<= SH; + x0 = (short)((y << 12) & 0xf000) >> range; x0 <<= SH; + + x0 -= (IK0(filterid) * fy0 + (IK1(filterid) * fy1)) >> SHC; fy1 = fy0; fy0 = x0; + x1 -= (IK0(filterid) * fy0 + (IK1(filterid) * fy1)) >> SHC; fy1 = fy0; fy0 = x1; + x2 -= (IK0(filterid) * fy0 + (IK1(filterid) * fy1)) >> SHC; fy1 = fy0; fy0 = x2; + x3 -= (IK0(filterid) * fy0 + (IK1(filterid) * fy1)) >> SHC; fy1 = fy0; fy0 = x3; + + XACLAMP( x0, -(32768<> SH; destp += inc; + XACLAMP( x1, -(32768<> SH; destp += inc; + XACLAMP( x2, -(32768<> SH; destp += inc; + XACLAMP( x3, -(32768<> SH; destp += inc; + } + decp->y0 = fy0; + decp->y1 = fy1; +} + +static int headtable[4] = {0,2,8,10}; + +//=========================================== +static void xa_decode_data( xa_decode_t *xdp, unsigned char *srcp ) { + const u8 *sound_groupsp; + const u8 *sound_datap, *sound_datap2; + int i, j, k, nbits; + u16 data[4096], *datap; + short *destp; + + destp = xdp->pcm; + nbits = xdp->nbits == 4 ? 4 : 2; + + if (xdp->stereo) { // stereo + if ((xdp->nbits == 8) && (xdp->freq == 37800)) { // level A + for (j=0; j < 18; j++) { + sound_groupsp = srcp + j * 128; // sound groups header + sound_datap = sound_groupsp + 16; // sound data just after the header + + for (i=0; i < nbits; i++) { + datap = data; + sound_datap2 = sound_datap + i; + + for (k=0; k < 14; k++, sound_datap2 += 8) { + *(datap++) = (u16)sound_datap2[0] | + (u16)(sound_datap2[4] << 8); + } + + ADPCM_DecodeBlock16( &xdp->left, sound_groupsp[headtable[i]+0], data, + destp+0, 2 ); + + datap = data; + sound_datap2 = sound_datap + i; + for (k=0; k < 14; k++, sound_datap2 += 8) { + *(datap++) = (u16)sound_datap2[0] | + (u16)(sound_datap2[4] << 8); + } + ADPCM_DecodeBlock16( &xdp->right, sound_groupsp[headtable[i]+1], data, + destp+1, 2 ); + + destp += 28*2; + } + } + } else { // level B/C + for (j=0; j < 18; j++) { + sound_groupsp = srcp + j * 128; // sound groups header + sound_datap = sound_groupsp + 16; // sound data just after the header + + for (i=0; i < nbits; i++) { + datap = data; + sound_datap2 = sound_datap + i; + + for (k=0; k < 7; k++, sound_datap2 += 16) { + *(datap++) = (u16)(sound_datap2[ 0] & 0x0f) | + ((u16)(sound_datap2[ 4] & 0x0f) << 4) | + ((u16)(sound_datap2[ 8] & 0x0f) << 8) | + ((u16)(sound_datap2[12] & 0x0f) << 12); + } + ADPCM_DecodeBlock16( &xdp->left, sound_groupsp[headtable[i]+0], data, + destp+0, 2 ); + + datap = data; + sound_datap2 = sound_datap + i; + for (k=0; k < 7; k++, sound_datap2 += 16) { + *(datap++) = (u16)(sound_datap2[ 0] >> 4) | + ((u16)(sound_datap2[ 4] >> 4) << 4) | + ((u16)(sound_datap2[ 8] >> 4) << 8) | + ((u16)(sound_datap2[12] >> 4) << 12); + } + ADPCM_DecodeBlock16( &xdp->right, sound_groupsp[headtable[i]+1], data, + destp+1, 2 ); + + destp += 28*2; + } + } + } + } else { // mono + if ((xdp->nbits == 8) && (xdp->freq == 37800)) { // level A + for (j=0; j < 18; j++) { + sound_groupsp = srcp + j * 128; // sound groups header + sound_datap = sound_groupsp + 16; // sound data just after the header + + for (i=0; i < nbits; i++) { + datap = data; + sound_datap2 = sound_datap + i; + for (k=0; k < 14; k++, sound_datap2 += 8) { + *(datap++) = (u16)sound_datap2[0] | + (u16)(sound_datap2[4] << 8); + } + ADPCM_DecodeBlock16( &xdp->left, sound_groupsp[headtable[i]+0], data, + destp, 1 ); + + destp += 28; + + datap = data; + sound_datap2 = sound_datap + i; + for (k=0; k < 14; k++, sound_datap2 += 8) { + *(datap++) = (u16)sound_datap2[0] | + (u16)(sound_datap2[4] << 8); + } + ADPCM_DecodeBlock16( &xdp->left, sound_groupsp[headtable[i]+1], data, + destp, 1 ); + + destp += 28; + } + } + } else { // level B/C + for (j=0; j < 18; j++) { + sound_groupsp = srcp + j * 128; // sound groups header + sound_datap = sound_groupsp + 16; // sound data just after the header + + for (i=0; i < nbits; i++) { + datap = data; + sound_datap2 = sound_datap + i; + for (k=0; k < 7; k++, sound_datap2 += 16) { + *(datap++) = (u16)(sound_datap2[ 0] & 0x0f) | + ((u16)(sound_datap2[ 4] & 0x0f) << 4) | + ((u16)(sound_datap2[ 8] & 0x0f) << 8) | + ((u16)(sound_datap2[12] & 0x0f) << 12); + } + ADPCM_DecodeBlock16( &xdp->left, sound_groupsp[headtable[i]+0], data, + destp, 1 ); + + destp += 28; + + datap = data; + sound_datap2 = sound_datap + i; + for (k=0; k < 7; k++, sound_datap2 += 16) { + *(datap++) = (u16)(sound_datap2[ 0] >> 4) | + ((u16)(sound_datap2[ 4] >> 4) << 4) | + ((u16)(sound_datap2[ 8] >> 4) << 8) | + ((u16)(sound_datap2[12] >> 4) << 12); + } + ADPCM_DecodeBlock16( &xdp->left, sound_groupsp[headtable[i]+1], data, + destp, 1 ); + + destp += 28; + } + } + } + } +} + +//============================================ +//=== XA SPECIFIC ROUTINES +//============================================ +typedef struct { +u8 filenum; +u8 channum; +u8 submode; +u8 coding; + +u8 filenum2; +u8 channum2; +u8 submode2; +u8 coding2; +} xa_subheader_t; + +#define SUB_SUB_EOF (1<<7) // end of file +#define SUB_SUB_RT (1<<6) // real-time sector +#define SUB_SUB_FORM (1<<5) // 0 form1 1 form2 +#define SUB_SUB_TRIGGER (1<<4) // used for interrupt +#define SUB_SUB_DATA (1<<3) // contains data +#define SUB_SUB_AUDIO (1<<2) // contains audio +#define SUB_SUB_VIDEO (1<<1) // contains video +#define SUB_SUB_EOR (1<<0) // end of record + +#define AUDIO_CODING_GET_STEREO(_X_) ( (_X_) & 3) +#define AUDIO_CODING_GET_FREQ(_X_) (((_X_) >> 2) & 3) +#define AUDIO_CODING_GET_BPS(_X_) (((_X_) >> 4) & 3) +#define AUDIO_CODING_GET_EMPHASIS(_X_) (((_X_) >> 6) & 1) + +#define SUB_UNKNOWN 0 +#define SUB_VIDEO 1 +#define SUB_AUDIO 2 + +//============================================ +static int parse_xa_audio_sector( xa_decode_t *xdp, + xa_subheader_t *subheadp, + unsigned char *sectorp, + int is_first_sector ) { + if ( is_first_sector ) { + switch ( AUDIO_CODING_GET_FREQ(subheadp->coding) ) { + case 0: xdp->freq = 37800; break; + case 1: xdp->freq = 18900; break; + default: xdp->freq = 0; break; + } + switch ( AUDIO_CODING_GET_BPS(subheadp->coding) ) { + case 0: xdp->nbits = 4; break; + case 1: xdp->nbits = 8; break; + default: xdp->nbits = 0; break; + } + switch ( AUDIO_CODING_GET_STEREO(subheadp->coding) ) { + case 0: xdp->stereo = 0; break; + case 1: xdp->stereo = 1; break; + default: xdp->stereo = 0; break; + } + + if ( xdp->freq == 0 ) + return -1; + + ADPCM_InitDecode( &xdp->left ); + ADPCM_InitDecode( &xdp->right ); + + xdp->nsamples = 18 * 28 * 8; + if (xdp->stereo == 1) xdp->nsamples /= 2; + } + xa_decode_data( xdp, sectorp ); + + return 0; +} + +//================================================================ +//=== THIS IS WHAT YOU HAVE TO CALL +//=== xdp - structure were all important data are returned +//=== sectorp - data in input +//=== pcmp - data in output +//=== is_first_sector - 1 if it's the 1st sector of the stream +//=== - 0 for any other successive sector +//=== return -1 if error +//================================================================ +s32 xa_decode_sector( xa_decode_t *xdp, + unsigned char *sectorp, int is_first_sector ) { + if (parse_xa_audio_sector(xdp, (xa_subheader_t *)sectorp, sectorp + sizeof(xa_subheader_t), is_first_sector)) + return -1; + + return 0; +} + +/* EXAMPLE: +"nsamples" is the number of 16 bit samples +every sample is 2 bytes in mono and 4 bytes in stereo + +xa_decode_t xa; + + sectorp = read_first_sector(); + xa_decode_sector( &xa, sectorp, 1 ); + play_wave( xa.pcm, xa.freq, xa.nsamples ); + + while ( --n_sectors ) + { + sectorp = read_next_sector(); + xa_decode_sector( &xa, sectorp, 0 ); + play_wave( xa.pcm, xa.freq, xa.nsamples ); + } +*/ diff --git a/libpcsxcore/decode_xa.h b/libpcsxcore/decode_xa.h new file mode 100644 index 0000000..a5994e1 --- /dev/null +++ b/libpcsxcore/decode_xa.h @@ -0,0 +1,49 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#ifndef __DECODE_XA_H__ +#define __DECODE_XA_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "psxcommon.h" + +typedef struct { + s32 y0, y1; +} ADPCM_Decode_t; + +typedef struct { + int freq; + int nbits; + int stereo; + int nsamples; + ADPCM_Decode_t left, right; + short pcm[16384]; +} xa_decode_t; + +s32 xa_decode_sector( xa_decode_t *xdp, + unsigned char *sectorp, + int is_first_sector ); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/disr3000a.c b/libpcsxcore/disr3000a.c new file mode 100644 index 0000000..ebeb4f5 --- /dev/null +++ b/libpcsxcore/disr3000a.c @@ -0,0 +1,330 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +/* +* R3000A disassembler. +*/ + +#include "psxcommon.h" + +char ostr[256]; + +// Names of registers +static char *disRNameGPR[] = { + "r0", "at", "v0", "v1", "a0", "a1","a2", "a3", + "t0", "t1", "t2", "t3", "t4", "t5","t6", "t7", + "s0", "s1", "s2", "s3", "s4", "s5","s6", "s7", + "t8", "t9", "k0", "k1", "gp", "sp","fp", "ra"}; + +char *disRNameCP0[] = { + "Index" , "Random" , "EntryLo0", "EntryLo1", "Context" , "PageMask" , "Wired" , "*Check me*", + "BadVAddr" , "Count" , "EntryHi" , "Compare" , "Status" , "Cause" , "ExceptPC" , "PRevID" , + "Config" , "LLAddr" , "WatchLo" , "WatchHi" , "XContext", "*RES*" , "*RES*" , "*RES*" , + "*RES*" , "*RES* " , "PErr" , "CacheErr", "TagLo" , "TagHi" , "ErrorEPC" , "*RES*" }; + + +// Type deffinition of our functions +static unsigned int AGEMO_CALC_ADDR(unsigned int _base, unsigned int _off) +{ + if (_off >= 0x8000) + return _base + _off - 0x10000; + else + return _base + _off; +} + +typedef char* (*TdisR3000AF)(u32 code, u32 pc); + +// These macros are used to assemble the disassembler functions +#define MakeDisFg(fn, b) char* fn(u32 code, u32 pc) { b; return ostr; } +#define MakeDisF(fn, b) \ + static char* fn(u32 code, u32 pc) { \ + sprintf (ostr, "%8.8x :", pc ); \ + b; /*ostr[(strlen(ostr) - 1)] = 0;*/ return ostr; \ + } + + +#include "r3000a.h" + +#undef _Funct_ +#undef _Rd_ +#undef _Rt_ +#undef _Rs_ +#undef _Sa_ +#undef _Im_ +#undef _Target_ + +#define _Funct_ ((code ) & 0x3F) // The funct part of the instruction register +#define _Rd_ ((code >> 11) & 0x1F) // The rd part of the instruction register +#define _Rt_ ((code >> 16) & 0x1F) // The rt part of the instruction register +#define _Rs_ ((code >> 21) & 0x1F) // The rs part of the instruction register +#define _Sa_ ((code >> 6) & 0x1F) // The sa part of the instruction register +#define _Im_ ( code & 0xFFFF) // The immediate part of the instruction register + +#define _Target_ ((pc & 0xf0000000) + ((code & 0x03ffffff) * 4)) +#define _Branch_ (pc + 4 + ((short)_Im_ * 4)) +#define _OfB_ _Im_, _nRs_ + +#define dName(i) sprintf(ostr, "%s %-7s", ostr, i) +#define dGPR(i) sprintf(ostr, "%s %8.8x (%s),", ostr, psxRegs.GPR.r[i], disRNameGPR[i]) +#define dCP0(i) sprintf(ostr, "%s %8.8x (%s),", ostr, psxRegs.CP0.r[i], disRNameCP0[i]) +#define dHI() sprintf(ostr, "%s %8.8x (%s),", ostr, psxRegs.GPR.n.hi, "hi") +#define dLO() sprintf(ostr, "%s %8.8x (%s),", ostr, psxRegs.GPR.n.lo, "lo") +#define dImm() sprintf(ostr, "%s %4.4x (%d),", ostr, _Im_, _Im_) +#define dTarget() sprintf(ostr, "%s %8.8x,", ostr, _Target_) +#define dSa() sprintf(ostr, "%s %2.2x (%d),", ostr, _Sa_, _Sa_) +#define dOfB() sprintf(ostr, "%s %4.4x (%8.8x (%s)) [%8.8x]", ostr, _Im_, psxRegs.GPR.r[_Rs_], disRNameGPR[_Rs_], AGEMO_CALC_ADDR(psxRegs.GPR.r[_Rs_], _Im_)) +#define dOffset() sprintf(ostr, "%s %8.8x,", ostr, _Branch_) +#define dCode() sprintf(ostr, "%s %8.8x,", ostr, (code >> 6) & 0xffffff) + +/********************************************************* +* Arithmetic with immediate operand * +* Format: OP rt, rs, immediate * +*********************************************************/ +MakeDisF(disADDI, dName("ADDI"); dGPR(_Rt_); dGPR(_Rs_); dImm();) +MakeDisF(disADDIU, dName("ADDIU"); dGPR(_Rt_); dGPR(_Rs_); dImm();) +MakeDisF(disANDI, dName("ANDI"); dGPR(_Rt_); dGPR(_Rs_); dImm();) +MakeDisF(disORI, dName("ORI"); dGPR(_Rt_); dGPR(_Rs_); dImm();) +MakeDisF(disSLTI, dName("SLTI"); dGPR(_Rt_); dGPR(_Rs_); dImm();) +MakeDisF(disSLTIU, dName("SLTIU"); dGPR(_Rt_); dGPR(_Rs_); dImm();) +MakeDisF(disXORI, dName("XORI"); dGPR(_Rt_); dGPR(_Rs_); dImm();) + +/********************************************************* +* Register arithmetic * +* Format: OP rd, rs, rt * +*********************************************************/ +MakeDisF(disADD, dName("ADD"); dGPR(_Rd_); dGPR(_Rs_); dGPR(_Rt_);) +MakeDisF(disADDU, dName("ADDU"); dGPR(_Rd_); dGPR(_Rs_); dGPR(_Rt_);) +MakeDisF(disAND, dName("AND"); dGPR(_Rd_); dGPR(_Rs_); dGPR(_Rt_);) +MakeDisF(disNOR, dName("NOR"); dGPR(_Rd_); dGPR(_Rs_); dGPR(_Rt_);) +MakeDisF(disOR, dName("OR"); dGPR(_Rd_); dGPR(_Rs_); dGPR(_Rt_);) +MakeDisF(disSLT, dName("SLT"); dGPR(_Rd_); dGPR(_Rs_); dGPR(_Rt_);) +MakeDisF(disSLTU, dName("SLTU"); dGPR(_Rd_); dGPR(_Rs_); dGPR(_Rt_);) +MakeDisF(disSUB, dName("SUB"); dGPR(_Rd_); dGPR(_Rs_); dGPR(_Rt_);) +MakeDisF(disSUBU, dName("SUBU"); dGPR(_Rd_); dGPR(_Rs_); dGPR(_Rt_);) +MakeDisF(disXOR, dName("XOR"); dGPR(_Rd_); dGPR(_Rs_); dGPR(_Rt_);) + +/********************************************************* +* Register arithmetic & Register trap logic * +* Format: OP rs, rt * +*********************************************************/ +MakeDisF(disDIV, dName("DIV"); dGPR(_Rs_); dGPR(_Rt_);) +MakeDisF(disDIVU, dName("DIVU"); dGPR(_Rs_); dGPR(_Rt_);) +MakeDisF(disMULT, dName("MULT"); dGPR(_Rs_); dGPR(_Rt_);) +MakeDisF(disMULTU, dName("MULTU"); dGPR(_Rs_); dGPR(_Rt_);) + +/********************************************************* +* Register branch logic * +* Format: OP rs, offset * +*********************************************************/ +MakeDisF(disBGEZ, dName("BGEZ"); dGPR(_Rs_); dOffset();) +MakeDisF(disBGEZAL, dName("BGEZAL"); dGPR(_Rs_); dOffset();) +MakeDisF(disBGTZ, dName("BGTZ"); dGPR(_Rs_); dOffset();) +MakeDisF(disBLEZ, dName("BLEZ"); dGPR(_Rs_); dOffset();) +MakeDisF(disBLTZ, dName("BLTZ"); dGPR(_Rs_); dOffset();) +MakeDisF(disBLTZAL, dName("BLTZAL"); dGPR(_Rs_); dOffset();) + +/********************************************************* +* Shift arithmetic with constant shift * +* Format: OP rd, rt, sa * +*********************************************************/ +MakeDisF(disSLL, if (code) { dName("SLL"); dGPR(_Rd_); dGPR(_Rt_); dSa(); } else { dName("NOP"); }) +MakeDisF(disSRA, dName("SRA"); dGPR(_Rd_); dGPR(_Rt_); dSa();) +MakeDisF(disSRL, dName("SRL"); dGPR(_Rd_); dGPR(_Rt_); dSa();) + +/********************************************************* +* Shift arithmetic with variant register shift * +* Format: OP rd, rt, rs * +*********************************************************/ +MakeDisF(disSLLV, dName("SLLV"); dGPR(_Rd_); dGPR(_Rt_); dGPR(_Rs_);) +MakeDisF(disSRAV, dName("SRAV"); dGPR(_Rd_); dGPR(_Rt_); dGPR(_Rs_);) +MakeDisF(disSRLV, dName("SRLV"); dGPR(_Rd_); dGPR(_Rt_); dGPR(_Rs_);) + +/********************************************************* +* Load higher 16 bits of the first word in GPR with imm * +* Format: OP rt, immediate * +*********************************************************/ +MakeDisF(disLUI, dName("LUI"); dGPR(_Rt_); dImm();) + +/********************************************************* +* Move from HI/LO to GPR * +* Format: OP rd * +*********************************************************/ +MakeDisF(disMFHI, dName("MFHI"); dGPR(_Rd_); dHI();) +MakeDisF(disMFLO, dName("MFLO"); dGPR(_Rd_); dLO();) + +/********************************************************* +* Move from GPR to HI/LO * +* Format: OP rd * +*********************************************************/ +MakeDisF(disMTHI, dName("MTHI"); dHI(); dGPR(_Rs_);) +MakeDisF(disMTLO, dName("MTLO"); dLO(); dGPR(_Rs_);) + +/********************************************************* +* Special purpose instructions * +* Format: OP * +*********************************************************/ +MakeDisF(disBREAK, dName("BREAK")) +MakeDisF(disRFE, dName("RFE")) +MakeDisF(disSYSCALL, dName("SYSCALL")) +MakeDisF(disHLE, dName("HLE")) + + +MakeDisF(disRTPS, dName("RTPS")) +MakeDisF(disOP , dName("OP")) +MakeDisF(disNCLIP, dName("NCLIP")) +MakeDisF(disDPCS, dName("DPCS")) +MakeDisF(disINTPL, dName("INTPL")) +MakeDisF(disMVMVA, dName("MVMVA")) +MakeDisF(disNCDS , dName("NCDS")) +MakeDisF(disCDP , dName("CDP")) +MakeDisF(disNCDT , dName("NCDT")) +MakeDisF(disNCCS , dName("NCCS")) +MakeDisF(disCC , dName("CC")) +MakeDisF(disNCS , dName("NCS")) +MakeDisF(disNCT , dName("NCT")) +MakeDisF(disSQR , dName("SQR")) +MakeDisF(disDCPL , dName("DCPL")) +MakeDisF(disDPCT , dName("DPCT")) +MakeDisF(disAVSZ3, dName("AVSZ3")) +MakeDisF(disAVSZ4, dName("AVSZ4")) +MakeDisF(disRTPT , dName("RTPT")) +MakeDisF(disGPF , dName("GPF")) +MakeDisF(disGPL , dName("GPL")) +MakeDisF(disNCCT , dName("NCCT")) + +MakeDisF(disMFC2, dName("MFC2"); dGPR(_Rt_);) +MakeDisF(disCFC2, dName("CFC2"); dGPR(_Rt_);) +MakeDisF(disMTC2, dName("MTC2"); dGPR(_Rt_);) +MakeDisF(disCTC2, dName("CTC2"); dGPR(_Rt_);) + +/********************************************************* +* Register branch logic * +* Format: OP rs, rt, offset * +*********************************************************/ +MakeDisF(disBEQ, dName("BEQ"); dGPR(_Rs_); dGPR(_Rt_); dOffset();) +MakeDisF(disBNE, dName("BNE"); dGPR(_Rs_); dGPR(_Rt_); dOffset();) + +/********************************************************* +* Jump to target * +* Format: OP target * +*********************************************************/ +MakeDisF(disJ, dName("J"); dTarget();) +MakeDisF(disJAL, dName("JAL"); dTarget(); dGPR(31);) + +/********************************************************* +* Register jump * +* Format: OP rs, rd * +*********************************************************/ +MakeDisF(disJR, dName("JR"); dGPR(_Rs_);) +MakeDisF(disJALR, dName("JALR"); dGPR(_Rs_); dGPR(_Rd_)) + +/********************************************************* +* Load and store for GPR * +* Format: OP rt, offset(base) * +*********************************************************/ +MakeDisF(disLB, dName("LB"); dGPR(_Rt_); dOfB();) +MakeDisF(disLBU, dName("LBU"); dGPR(_Rt_); dOfB();) +MakeDisF(disLH, dName("LH"); dGPR(_Rt_); dOfB();) +MakeDisF(disLHU, dName("LHU"); dGPR(_Rt_); dOfB();) +MakeDisF(disLW, dName("LW"); dGPR(_Rt_); dOfB();) +MakeDisF(disLWL, dName("LWL"); dGPR(_Rt_); dOfB();) +MakeDisF(disLWR, dName("LWR"); dGPR(_Rt_); dOfB();) +MakeDisF(disLWC2, dName("LWC2"); dGPR(_Rt_); dOfB();) +MakeDisF(disSB, dName("SB"); dGPR(_Rt_); dOfB();) +MakeDisF(disSH, dName("SH"); dGPR(_Rt_); dOfB();) +MakeDisF(disSW, dName("SW"); dGPR(_Rt_); dOfB();) +MakeDisF(disSWL, dName("SWL"); dGPR(_Rt_); dOfB();) +MakeDisF(disSWR, dName("SWR"); dGPR(_Rt_); dOfB();) +MakeDisF(disSWC2, dName("SWC2"); dGPR(_Rt_); dOfB();) + +/********************************************************* +* Moves between GPR and COPx * +* Format: OP rt, fs * +*********************************************************/ +MakeDisF(disMFC0, dName("MFC0"); dGPR(_Rt_); dCP0(_Rd_);) +MakeDisF(disMTC0, dName("MTC0"); dCP0(_Rd_); dGPR(_Rt_);) +MakeDisF(disCFC0, dName("CFC0"); dGPR(_Rt_); dCP0(_Rd_);) +MakeDisF(disCTC0, dName("CTC0"); dCP0(_Rd_); dGPR(_Rt_);) + +/********************************************************* +* Unknow instruction (would generate an exception) * +* Format: ? * +*********************************************************/ +MakeDisF(disNULL, dName("*** Bad OP ***");) + + +TdisR3000AF disR3000A_SPECIAL[] = { // Subset of disSPECIAL + disSLL , disNULL , disSRL , disSRA , disSLLV , disNULL , disSRLV , disSRAV , + disJR , disJALR , disNULL, disNULL, disSYSCALL, disBREAK , disNULL , disNULL , + disMFHI, disMTHI , disMFLO, disMTLO, disNULL , disNULL , disNULL , disNULL , + disMULT, disMULTU, disDIV , disDIVU, disNULL , disNULL , disNULL , disNULL , + disADD , disADDU , disSUB , disSUBU, disAND , disOR , disXOR , disNOR , + disNULL, disNULL , disSLT , disSLTU, disNULL , disNULL , disNULL , disNULL , + disNULL, disNULL , disNULL, disNULL, disNULL , disNULL , disNULL , disNULL , + disNULL, disNULL , disNULL, disNULL, disNULL , disNULL , disNULL , disNULL}; + +MakeDisF(disSPECIAL, disR3000A_SPECIAL[_Funct_](code, pc)) + +TdisR3000AF disR3000A_BCOND[] = { // Subset of disBCOND + disBLTZ , disBGEZ , disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, + disNULL , disNULL , disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, + disBLTZAL, disBGEZAL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, + disNULL , disNULL , disNULL, disNULL, disNULL, disNULL, disNULL, disNULL}; + +MakeDisF(disBCOND, disR3000A_BCOND[_Rt_](code, pc)) + +TdisR3000AF disR3000A_COP0[] = { // Subset of disCOP0 + disMFC0, disNULL, disCFC0, disNULL, disMTC0, disNULL, disCTC0, disNULL, + disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, + disRFE , disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, + disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL}; + +MakeDisF(disCOP0, disR3000A_COP0[_Rs_](code, pc)) + +TdisR3000AF disR3000A_BASIC[] = { // Subset of disBASIC (based on rs) + disMFC2, disNULL, disCFC2, disNULL, disMTC2, disNULL, disCTC2, disNULL, + disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, + disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, + disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL, disNULL}; + +MakeDisF(disBASIC, disR3000A_BASIC[_Rs_](code, pc)) + +TdisR3000AF disR3000A_COP2[] = { // Subset of disR3000F_COP2 (based on funct) + disBASIC, disRTPS , disNULL , disNULL , disNULL, disNULL , disNCLIP, disNULL, + disNULL , disNULL , disNULL , disNULL , disOP , disNULL , disNULL , disNULL, + disDPCS , disINTPL, disMVMVA, disNCDS , disCDP , disNULL , disNCDT , disNULL, + disNULL , disNULL , disNULL , disNCCS , disCC , disNULL , disNCS , disNULL, + disNCT , disNULL , disNULL , disNULL , disNULL, disNULL , disNULL , disNULL, + disSQR , disDCPL , disDPCT , disNULL , disNULL, disAVSZ3, disAVSZ4, disNULL, + disRTPT , disNULL , disNULL , disNULL , disNULL, disNULL , disNULL , disNULL, + disNULL , disNULL , disNULL , disNULL , disNULL, disGPF , disGPL , disNCCT }; + +MakeDisF(disCOP2, disR3000A_COP2[_Funct_](code, pc)) + +TdisR3000AF disR3000A[] = { + disSPECIAL , disBCOND , disJ , disJAL , disBEQ , disBNE , disBLEZ , disBGTZ , + disADDI , disADDIU , disSLTI , disSLTIU, disANDI, disORI , disXORI , disLUI , + disCOP0 , disNULL , disCOP2 , disNULL , disNULL, disNULL, disNULL , disNULL , + disNULL , disNULL , disNULL , disNULL , disNULL, disNULL, disNULL , disNULL , + disLB , disLH , disLWL , disLW , disLBU , disLHU , disLWR , disNULL , + disSB , disSH , disSWL , disSW , disNULL, disNULL, disSWR , disNULL , + disNULL , disNULL , disLWC2 , disNULL , disNULL, disNULL, disNULL , disNULL , + disNULL , disNULL , disSWC2 , disHLE , disNULL, disNULL, disNULL , disNULL }; + +MakeDisFg(disR3000AF, disR3000A[code >> 26](code, pc)) diff --git a/libpcsxcore/gte.c b/libpcsxcore/gte.c new file mode 100644 index 0000000..72210d3 --- /dev/null +++ b/libpcsxcore/gte.c @@ -0,0 +1,904 @@ +/*************************************************************************** + * PCSX-Revolution - PlayStation Emulator for Nintendo Wii * + * Copyright (C) 2009-2010 PCSX-Revolution Dev Team * + * * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +/* +* GTE functions. +*/ + +#include "gte.h" +#include "psxmem.h" + +#define VX(n) (n < 3 ? psxRegs.CP2D.p[n << 1].sw.l : psxRegs.CP2D.p[9].sw.l) +#define VY(n) (n < 3 ? psxRegs.CP2D.p[n << 1].sw.h : psxRegs.CP2D.p[10].sw.l) +#define VZ(n) (n < 3 ? psxRegs.CP2D.p[(n << 1) + 1].sw.l : psxRegs.CP2D.p[11].sw.l) +#define MX11(n) (n < 3 ? psxRegs.CP2C.p[(n << 3)].sw.l : 0) +#define MX12(n) (n < 3 ? psxRegs.CP2C.p[(n << 3)].sw.h : 0) +#define MX13(n) (n < 3 ? psxRegs.CP2C.p[(n << 3) + 1].sw.l : 0) +#define MX21(n) (n < 3 ? psxRegs.CP2C.p[(n << 3) + 1].sw.h : 0) +#define MX22(n) (n < 3 ? psxRegs.CP2C.p[(n << 3) + 2].sw.l : 0) +#define MX23(n) (n < 3 ? psxRegs.CP2C.p[(n << 3) + 2].sw.h : 0) +#define MX31(n) (n < 3 ? psxRegs.CP2C.p[(n << 3) + 3].sw.l : 0) +#define MX32(n) (n < 3 ? psxRegs.CP2C.p[(n << 3) + 3].sw.h : 0) +#define MX33(n) (n < 3 ? psxRegs.CP2C.p[(n << 3) + 4].sw.l : 0) +#define CV1(n) (n < 3 ? (s32)psxRegs.CP2C.r[(n << 3) + 5] : 0) +#define CV2(n) (n < 3 ? (s32)psxRegs.CP2C.r[(n << 3) + 6] : 0) +#define CV3(n) (n < 3 ? (s32)psxRegs.CP2C.r[(n << 3) + 7] : 0) + +#define fSX(n) ((psxRegs.CP2D.p)[((n) + 12)].sw.l) +#define fSY(n) ((psxRegs.CP2D.p)[((n) + 12)].sw.h) +#define fSZ(n) ((psxRegs.CP2D.p)[((n) + 17)].w.l) /* (n == 0) => SZ1; */ + +#define gteVXY0 (psxRegs.CP2D.r[0]) +#define gteVX0 (psxRegs.CP2D.p[0].sw.l) +#define gteVY0 (psxRegs.CP2D.p[0].sw.h) +#define gteVZ0 (psxRegs.CP2D.p[1].sw.l) +#define gteVXY1 (psxRegs.CP2D.r[2]) +#define gteVX1 (psxRegs.CP2D.p[2].sw.l) +#define gteVY1 (psxRegs.CP2D.p[2].sw.h) +#define gteVZ1 (psxRegs.CP2D.p[3].sw.l) +#define gteVXY2 (psxRegs.CP2D.r[4]) +#define gteVX2 (psxRegs.CP2D.p[4].sw.l) +#define gteVY2 (psxRegs.CP2D.p[4].sw.h) +#define gteVZ2 (psxRegs.CP2D.p[5].sw.l) +#define gteRGB (psxRegs.CP2D.r[6]) +#define gteR (psxRegs.CP2D.p[6].b.l) +#define gteG (psxRegs.CP2D.p[6].b.h) +#define gteB (psxRegs.CP2D.p[6].b.h2) +#define gteCODE (psxRegs.CP2D.p[6].b.h3) +#define gteOTZ (psxRegs.CP2D.p[7].w.l) +#define gteIR0 (psxRegs.CP2D.p[8].sw.l) +#define gteIR1 (psxRegs.CP2D.p[9].sw.l) +#define gteIR2 (psxRegs.CP2D.p[10].sw.l) +#define gteIR3 (psxRegs.CP2D.p[11].sw.l) +#define gteSXY0 (psxRegs.CP2D.r[12]) +#define gteSX0 (psxRegs.CP2D.p[12].sw.l) +#define gteSY0 (psxRegs.CP2D.p[12].sw.h) +#define gteSXY1 (psxRegs.CP2D.r[13]) +#define gteSX1 (psxRegs.CP2D.p[13].sw.l) +#define gteSY1 (psxRegs.CP2D.p[13].sw.h) +#define gteSXY2 (psxRegs.CP2D.r[14]) +#define gteSX2 (psxRegs.CP2D.p[14].sw.l) +#define gteSY2 (psxRegs.CP2D.p[14].sw.h) +#define gteSXYP (psxRegs.CP2D.r[15]) +#define gteSXP (psxRegs.CP2D.p[15].sw.l) +#define gteSYP (psxRegs.CP2D.p[15].sw.h) +#define gteSZ0 (psxRegs.CP2D.p[16].w.l) +#define gteSZ1 (psxRegs.CP2D.p[17].w.l) +#define gteSZ2 (psxRegs.CP2D.p[18].w.l) +#define gteSZ3 (psxRegs.CP2D.p[19].w.l) +#define gteRGB0 (psxRegs.CP2D.r[20]) +#define gteR0 (psxRegs.CP2D.p[20].b.l) +#define gteG0 (psxRegs.CP2D.p[20].b.h) +#define gteB0 (psxRegs.CP2D.p[20].b.h2) +#define gteCODE0 (psxRegs.CP2D.p[20].b.h3) +#define gteRGB1 (psxRegs.CP2D.r[21]) +#define gteR1 (psxRegs.CP2D.p[21].b.l) +#define gteG1 (psxRegs.CP2D.p[21].b.h) +#define gteB1 (psxRegs.CP2D.p[21].b.h2) +#define gteCODE1 (psxRegs.CP2D.p[21].b.h3) +#define gteRGB2 (psxRegs.CP2D.r[22]) +#define gteR2 (psxRegs.CP2D.p[22].b.l) +#define gteG2 (psxRegs.CP2D.p[22].b.h) +#define gteB2 (psxRegs.CP2D.p[22].b.h2) +#define gteCODE2 (psxRegs.CP2D.p[22].b.h3) +#define gteRES1 (psxRegs.CP2D.r[23]) +#define gteMAC0 (((s32 *)psxRegs.CP2D.r)[24]) +#define gteMAC1 (((s32 *)psxRegs.CP2D.r)[25]) +#define gteMAC2 (((s32 *)psxRegs.CP2D.r)[26]) +#define gteMAC3 (((s32 *)psxRegs.CP2D.r)[27]) +#define gteIRGB (psxRegs.CP2D.r[28]) +#define gteORGB (psxRegs.CP2D.r[29]) +#define gteLZCS (psxRegs.CP2D.r[30]) +#define gteLZCR (psxRegs.CP2D.r[31]) + +#define gteR11R12 (((s32 *)psxRegs.CP2C.r)[0]) +#define gteR22R23 (((s32 *)psxRegs.CP2C.r)[2]) +#define gteR11 (psxRegs.CP2C.p[0].sw.l) +#define gteR12 (psxRegs.CP2C.p[0].sw.h) +#define gteR13 (psxRegs.CP2C.p[1].sw.l) +#define gteR21 (psxRegs.CP2C.p[1].sw.h) +#define gteR22 (psxRegs.CP2C.p[2].sw.l) +#define gteR23 (psxRegs.CP2C.p[2].sw.h) +#define gteR31 (psxRegs.CP2C.p[3].sw.l) +#define gteR32 (psxRegs.CP2C.p[3].sw.h) +#define gteR33 (psxRegs.CP2C.p[4].sw.l) +#define gteTRX (((s32 *)psxRegs.CP2C.r)[5]) +#define gteTRY (((s32 *)psxRegs.CP2C.r)[6]) +#define gteTRZ (((s32 *)psxRegs.CP2C.r)[7]) +#define gteL11 (psxRegs.CP2C.p[8].sw.l) +#define gteL12 (psxRegs.CP2C.p[8].sw.h) +#define gteL13 (psxRegs.CP2C.p[9].sw.l) +#define gteL21 (psxRegs.CP2C.p[9].sw.h) +#define gteL22 (psxRegs.CP2C.p[10].sw.l) +#define gteL23 (psxRegs.CP2C.p[10].sw.h) +#define gteL31 (psxRegs.CP2C.p[11].sw.l) +#define gteL32 (psxRegs.CP2C.p[11].sw.h) +#define gteL33 (psxRegs.CP2C.p[12].sw.l) +#define gteRBK (((s32 *)psxRegs.CP2C.r)[13]) +#define gteGBK (((s32 *)psxRegs.CP2C.r)[14]) +#define gteBBK (((s32 *)psxRegs.CP2C.r)[15]) +#define gteLR1 (psxRegs.CP2C.p[16].sw.l) +#define gteLR2 (psxRegs.CP2C.p[16].sw.h) +#define gteLR3 (psxRegs.CP2C.p[17].sw.l) +#define gteLG1 (psxRegs.CP2C.p[17].sw.h) +#define gteLG2 (psxRegs.CP2C.p[18].sw.l) +#define gteLG3 (psxRegs.CP2C.p[18].sw.h) +#define gteLB1 (psxRegs.CP2C.p[19].sw.l) +#define gteLB2 (psxRegs.CP2C.p[19].sw.h) +#define gteLB3 (psxRegs.CP2C.p[20].sw.l) +#define gteRFC (((s32 *)psxRegs.CP2C.r)[21]) +#define gteGFC (((s32 *)psxRegs.CP2C.r)[22]) +#define gteBFC (((s32 *)psxRegs.CP2C.r)[23]) +#define gteOFX (((s32 *)psxRegs.CP2C.r)[24]) +#define gteOFY (((s32 *)psxRegs.CP2C.r)[25]) +#define gteH (psxRegs.CP2C.p[26].sw.l) +#define gteDQA (psxRegs.CP2C.p[27].sw.l) +#define gteDQB (((s32 *)psxRegs.CP2C.r)[28]) +#define gteZSF3 (psxRegs.CP2C.p[29].sw.l) +#define gteZSF4 (psxRegs.CP2C.p[30].sw.l) +#define gteFLAG (psxRegs.CP2C.r[31]) + +#define GTE_OP(op) ((op >> 20) & 31) +#define GTE_SF(op) ((op >> 19) & 1) +#define GTE_MX(op) ((op >> 17) & 3) +#define GTE_V(op) ((op >> 15) & 3) +#define GTE_CV(op) ((op >> 13) & 3) +#define GTE_CD(op) ((op >> 11) & 3) /* not used */ +#define GTE_LM(op) ((op >> 10) & 1) +#define GTE_CT(op) ((op >> 6) & 15) /* not used */ +#define GTE_FUNCT(op) (op & 63) + +#define gteop (psxRegs.code & 0x1ffffff) + +static inline s64 BOUNDS(s64 n_value, s64 n_max, int n_maxflag, s64 n_min, int n_minflag) { + if (n_value > n_max) { + gteFLAG |= n_maxflag; + } else if (n_value < n_min) { + gteFLAG |= n_minflag; + } + return n_value; +} + +static inline s32 LIM(s32 value, s32 max, s32 min, u32 flag) { + s32 ret = value; + if (value > max) { + gteFLAG |= flag; + ret = max; + } else if (value < min) { + gteFLAG |= flag; + ret = min; + } + return ret; +} + +#define A1(a) BOUNDS((a), 0x7fffffff, (1 << 30), -(s64)0x80000000, (1 << 31) | (1 << 27)) +#define A2(a) BOUNDS((a), 0x7fffffff, (1 << 29), -(s64)0x80000000, (1 << 31) | (1 << 26)) +#define A3(a) BOUNDS((a), 0x7fffffff, (1 << 28), -(s64)0x80000000, (1 << 31) | (1 << 25)) +#define limB1(a, l) LIM((a), 0x7fff, -0x8000 * !l, (1 << 31) | (1 << 24)) +#define limB2(a, l) LIM((a), 0x7fff, -0x8000 * !l, (1 << 31) | (1 << 23)) +#define limB3(a, l) LIM((a), 0x7fff, -0x8000 * !l, (1 << 22)) +#define limC1(a) LIM((a), 0x00ff, 0x0000, (1 << 21)) +#define limC2(a) LIM((a), 0x00ff, 0x0000, (1 << 20)) +#define limC3(a) LIM((a), 0x00ff, 0x0000, (1 << 19)) +#define limD(a) LIM((a), 0xffff, 0x0000, (1 << 31) | (1 << 18)) + +static inline u32 limE(u32 result) { + if (result > 0x1ffff) { + gteFLAG |= (1 << 31) | (1 << 17); + return 0x1ffff; + } + return result; +} + +#define F(a) BOUNDS((a), 0x7fffffff, (1 << 31) | (1 << 16), -(s64)0x80000000, (1 << 31) | (1 << 15)) +#define limG1(a) LIM((a), 0x3ff, -0x400, (1 << 31) | (1 << 14)) +#define limG2(a) LIM((a), 0x3ff, -0x400, (1 << 31) | (1 << 13)) +#define limH(a) LIM((a), 0xfff, 0x000, (1 << 12)) + +#include "gte_divider.h" + +static inline u32 MFC2(int reg) { + switch (reg) { + case 1: + case 3: + case 5: + case 8: + case 9: + case 10: + case 11: + psxRegs.CP2D.r[reg] = (s32)psxRegs.CP2D.p[reg].sw.l; + break; + + case 7: + case 16: + case 17: + case 18: + case 19: + psxRegs.CP2D.r[reg] = (u32)psxRegs.CP2D.p[reg].w.l; + break; + + case 15: + psxRegs.CP2D.r[reg] = gteSXY2; + break; + + case 28: + case 30: + return 0; + + case 29: + psxRegs.CP2D.r[reg] = LIM(gteIR1 >> 7, 0x1f, 0, 0) | + (LIM(gteIR2 >> 7, 0x1f, 0, 0) << 5) | + (LIM(gteIR3 >> 7, 0x1f, 0, 0) << 10); + break; + } + return psxRegs.CP2D.r[reg]; +} + +static inline void MTC2(u32 value, int reg) { + switch (reg) { + case 15: + gteSXY0 = gteSXY1; + gteSXY1 = gteSXY2; + gteSXY2 = value; + gteSXYP = value; + break; + + case 28: + gteIRGB = value; + gteIR1 = (value & 0x1f) << 7; + gteIR2 = (value & 0x3e0) << 2; + gteIR3 = (value & 0x7c00) >> 3; + break; + + case 30: + { + int a; + gteLZCS = value; + + a = gteLZCS; + if (a > 0) { + int i; + for (i = 31; (a & (1 << i)) == 0 && i >= 0; i--); + gteLZCR = 31 - i; + } else if (a < 0) { + int i; + a ^= 0xffffffff; + for (i = 31; (a & (1 << i)) == 0 && i >= 0; i--); + gteLZCR = 31 - i; + } else { + gteLZCR = 32; + } + } + break; + + case 7: + case 29: + case 31: + return; + + default: + psxRegs.CP2D.r[reg] = value; + } +} + +static inline void CTC2(u32 value, int reg) { + switch (reg) { + case 4: + case 12: + case 20: + case 26: + case 27: + case 29: + case 30: + value = (s32)(s16)value; + break; + + case 31: + value = value & 0x7ffff000; + if (value & 0x7f87e000) value |= 0x80000000; + break; + } + + psxRegs.CP2C.r[reg] = value; +} + +void gteMFC2() { + if (!_Rt_) return; + psxRegs.GPR.r[_Rt_] = MFC2(_Rd_); +} + +void gteCFC2() { + if (!_Rt_) return; + psxRegs.GPR.r[_Rt_] = psxRegs.CP2C.r[_Rd_]; +} + +void gteMTC2() { + MTC2(psxRegs.GPR.r[_Rt_], _Rd_); +} + +void gteCTC2() { + CTC2(psxRegs.GPR.r[_Rt_], _Rd_); +} + +#define _oB_ (psxRegs.GPR.r[_Rs_] + _Imm_) + +void gteLWC2() { + MTC2(psxMemRead32(_oB_), _Rt_); +} + +void gteSWC2() { + psxMemWrite32(_oB_, MFC2(_Rt_)); +} + +void gteRTPS() { + int quotient; + +#ifdef GTE_LOG + GTE_LOG("GTE RTPS\n"); +#endif + gteFLAG = 0; + + gteMAC1 = A1((((s64)gteTRX << 12) + (gteR11 * gteVX0) + (gteR12 * gteVY0) + (gteR13 * gteVZ0)) >> 12); + gteMAC2 = A2((((s64)gteTRY << 12) + (gteR21 * gteVX0) + (gteR22 * gteVY0) + (gteR23 * gteVZ0)) >> 12); + gteMAC3 = A3((((s64)gteTRZ << 12) + (gteR31 * gteVX0) + (gteR32 * gteVY0) + (gteR33 * gteVZ0)) >> 12); + gteIR1 = limB1(gteMAC1, 0); + gteIR2 = limB2(gteMAC2, 0); + gteIR3 = limB3(gteMAC3, 0); + gteSZ0 = gteSZ1; + gteSZ1 = gteSZ2; + gteSZ2 = gteSZ3; + gteSZ3 = limD(gteMAC3); + quotient = limE(DIVIDE(gteH, gteSZ3)); + gteSXY0 = gteSXY1; + gteSXY1 = gteSXY2; + gteSX2 = limG1(F((s64)gteOFX + ((s64)gteIR1 * quotient)) >> 16); + gteSY2 = limG2(F((s64)gteOFY + ((s64)gteIR2 * quotient)) >> 16); + + gteMAC0 = F((s64)(gteDQB + ((s64)gteDQA * quotient)) >> 12); + gteIR0 = limH(gteMAC0); +} + +void gteRTPT() { + int quotient; + int v; + s32 vx, vy, vz; + +#ifdef GTE_LOG + GTE_LOG("GTE RTPT\n"); +#endif + gteFLAG = 0; + + gteSZ0 = gteSZ3; + for (v = 0; v < 3; v++) { + vx = VX(v); + vy = VY(v); + vz = VZ(v); + gteMAC1 = A1((((s64)gteTRX << 12) + (gteR11 * vx) + (gteR12 * vy) + (gteR13 * vz)) >> 12); + gteMAC2 = A2((((s64)gteTRY << 12) + (gteR21 * vx) + (gteR22 * vy) + (gteR23 * vz)) >> 12); + gteMAC3 = A3((((s64)gteTRZ << 12) + (gteR31 * vx) + (gteR32 * vy) + (gteR33 * vz)) >> 12); + gteIR1 = limB1(gteMAC1, 0); + gteIR2 = limB2(gteMAC2, 0); + gteIR3 = limB3(gteMAC3, 0); + fSZ(v) = limD(gteMAC3); + quotient = limE(DIVIDE(gteH, fSZ(v))); + fSX(v) = limG1(F((s64)gteOFX + ((s64)gteIR1 * quotient)) >> 16); + fSY(v) = limG2(F((s64)gteOFY + ((s64)gteIR2 * quotient)) >> 16); + } + gteMAC0 = F((s64)(gteDQB + ((s64)gteDQA * quotient)) >> 12); + gteIR0 = limH(gteMAC0); +} + +void gteMVMVA() { + int shift = 12 * GTE_SF(gteop); + int mx = GTE_MX(gteop); + int v = GTE_V(gteop); + int cv = GTE_CV(gteop); + int lm = GTE_LM(gteop); + s32 vx = VX(v); + s32 vy = VY(v); + s32 vz = VZ(v); + +#ifdef GTE_LOG + GTE_LOG("GTE MVMVA\n"); +#endif + gteFLAG = 0; + + gteMAC1 = A1((((s64)CV1(cv) << 12) + (MX11(mx) * vx) + (MX12(mx) * vy) + (MX13(mx) * vz)) >> shift); + gteMAC2 = A2((((s64)CV2(cv) << 12) + (MX21(mx) * vx) + (MX22(mx) * vy) + (MX23(mx) * vz)) >> shift); + gteMAC3 = A3((((s64)CV3(cv) << 12) + (MX31(mx) * vx) + (MX32(mx) * vy) + (MX33(mx) * vz)) >> shift); + + gteIR1 = limB1(gteMAC1, lm); + gteIR2 = limB2(gteMAC2, lm); + gteIR3 = limB3(gteMAC3, lm); +} + +void gteNCLIP() { +#ifdef GTE_LOG + GTE_LOG("GTE NCLIP\n"); +#endif + gteFLAG = 0; + + gteMAC0 = F((s64)gteSX0 * (gteSY1 - gteSY2) + + gteSX1 * (gteSY2 - gteSY0) + + gteSX2 * (gteSY0 - gteSY1)); +} + +void gteAVSZ3() { +#ifdef GTE_LOG + GTE_LOG("GTE AVSZ3\n"); +#endif + gteFLAG = 0; + + gteMAC0 = F((s64)(gteZSF3 * gteSZ1) + (gteZSF3 * gteSZ2) + (gteZSF3 * gteSZ3)); + gteOTZ = limD(gteMAC0 >> 12); +} + +void gteAVSZ4() { +#ifdef GTE_LOG + GTE_LOG("GTE AVSZ4\n"); +#endif + gteFLAG = 0; + + gteMAC0 = F((s64)(gteZSF4 * (gteSZ0 + gteSZ1 + gteSZ2 + gteSZ3))); + gteOTZ = limD(gteMAC0 >> 12); +} + +void gteSQR() { + int shift = 12 * GTE_SF(gteop); + int lm = GTE_LM(gteop); + +#ifdef GTE_LOG + GTE_LOG("GTE SQR\n"); +#endif + gteFLAG = 0; + + gteMAC1 = A1((gteIR1 * gteIR1) >> shift); + gteMAC2 = A2((gteIR2 * gteIR2) >> shift); + gteMAC3 = A3((gteIR3 * gteIR3) >> shift); + gteIR1 = limB1(gteMAC1 >> shift, lm); + gteIR2 = limB2(gteMAC2 >> shift, lm); + gteIR3 = limB3(gteMAC3 >> shift, lm); +} + +void gteNCCS() { +#ifdef GTE_LOG + GTE_LOG("GTE NCCS\n"); +#endif + gteFLAG = 0; + + gteMAC1 = A1((((s64)gteL11 * gteVX0) + (gteL12 * gteVY0) + (gteL13 * gteVZ0)) >> 12); + gteMAC2 = A2((((s64)gteL21 * gteVX0) + (gteL22 * gteVY0) + (gteL23 * gteVZ0)) >> 12); + gteMAC3 = A3((((s64)gteL31 * gteVX0) + (gteL32 * gteVY0) + (gteL33 * gteVZ0)) >> 12); + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); + gteMAC1 = A1((((s64)gteRBK << 12) + (gteLR1 * gteIR1) + (gteLR2 * gteIR2) + (gteLR3 * gteIR3)) >> 12); + gteMAC2 = A2((((s64)gteGBK << 12) + (gteLG1 * gteIR1) + (gteLG2 * gteIR2) + (gteLG3 * gteIR3)) >> 12); + gteMAC3 = A3((((s64)gteBBK << 12) + (gteLB1 * gteIR1) + (gteLB2 * gteIR2) + (gteLB3 * gteIR3)) >> 12); + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); + gteMAC1 = A1(((s64)gteR * gteIR1) >> 8); + gteMAC2 = A2(((s64)gteG * gteIR2) >> 8); + gteMAC3 = A3(((s64)gteB * gteIR3) >> 8); + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); + + gteRGB0 = gteRGB1; + gteRGB1 = gteRGB2; + gteCODE2 = gteCODE; + gteR2 = limC1(gteMAC1 >> 4); + gteG2 = limC2(gteMAC2 >> 4); + gteB2 = limC3(gteMAC3 >> 4); +} + +void gteNCCT() { + int v; + s32 vx, vy, vz; + +#ifdef GTE_LOG + GTE_LOG("GTE NCCT\n"); +#endif + gteFLAG = 0; + + for (v = 0; v < 3; v++) { + vx = VX(v); + vy = VY(v); + vz = VZ(v); + gteMAC1 = A1((((s64)gteL11 * vx) + (gteL12 * vy) + (gteL13 * vz)) >> 12); + gteMAC2 = A2((((s64)gteL21 * vx) + (gteL22 * vy) + (gteL23 * vz)) >> 12); + gteMAC3 = A3((((s64)gteL31 * vx) + (gteL32 * vy) + (gteL33 * vz)) >> 12); + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); + gteMAC1 = A1((((s64)gteRBK << 12) + (gteLR1 * gteIR1) + (gteLR2 * gteIR2) + (gteLR3 * gteIR3)) >> 12); + gteMAC2 = A2((((s64)gteGBK << 12) + (gteLG1 * gteIR1) + (gteLG2 * gteIR2) + (gteLG3 * gteIR3)) >> 12); + gteMAC3 = A3((((s64)gteBBK << 12) + (gteLB1 * gteIR1) + (gteLB2 * gteIR2) + (gteLB3 * gteIR3)) >> 12); + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); + gteMAC1 = A1(((s64)gteR * gteIR1) >> 8); + gteMAC2 = A2(((s64)gteG * gteIR2) >> 8); + gteMAC3 = A3(((s64)gteB * gteIR3) >> 8); + + gteRGB0 = gteRGB1; + gteRGB1 = gteRGB2; + gteCODE2 = gteCODE; + gteR2 = limC1(gteMAC1 >> 4); + gteG2 = limC2(gteMAC2 >> 4); + gteB2 = limC3(gteMAC3 >> 4); + } + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); +} + +void gteNCDS() { +#ifdef GTE_LOG + GTE_LOG("GTE NCDS\n"); +#endif + gteFLAG = 0; + + gteMAC1 = A1((((s64)gteL11 * gteVX0) + (gteL12 * gteVY0) + (gteL13 * gteVZ0)) >> 12); + gteMAC2 = A2((((s64)gteL21 * gteVX0) + (gteL22 * gteVY0) + (gteL23 * gteVZ0)) >> 12); + gteMAC3 = A3((((s64)gteL31 * gteVX0) + (gteL32 * gteVY0) + (gteL33 * gteVZ0)) >> 12); + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); + gteMAC1 = A1((((s64)gteRBK << 12) + (gteLR1 * gteIR1) + (gteLR2 * gteIR2) + (gteLR3 * gteIR3)) >> 12); + gteMAC2 = A2((((s64)gteGBK << 12) + (gteLG1 * gteIR1) + (gteLG2 * gteIR2) + (gteLG3 * gteIR3)) >> 12); + gteMAC3 = A3((((s64)gteBBK << 12) + (gteLB1 * gteIR1) + (gteLB2 * gteIR2) + (gteLB3 * gteIR3)) >> 12); + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); + gteMAC1 = A1(((((s64)gteR << 4) * gteIR1) + (gteIR0 * limB1(gteRFC - ((gteR * gteIR1) >> 8), 0))) >> 12); + gteMAC2 = A2(((((s64)gteG << 4) * gteIR2) + (gteIR0 * limB2(gteGFC - ((gteG * gteIR2) >> 8), 0))) >> 12); + gteMAC3 = A3(((((s64)gteB << 4) * gteIR3) + (gteIR0 * limB3(gteBFC - ((gteB * gteIR3) >> 8), 0))) >> 12); + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); + + gteRGB0 = gteRGB1; + gteRGB1 = gteRGB2; + gteCODE2 = gteCODE; + gteR2 = limC1(gteMAC1 >> 4); + gteG2 = limC2(gteMAC2 >> 4); + gteB2 = limC3(gteMAC3 >> 4); +} + +void gteNCDT() { + int v; + s32 vx, vy, vz; + +#ifdef GTE_LOG + GTE_LOG("GTE NCDT\n"); +#endif + gteFLAG = 0; + + for (v = 0; v < 3; v++) { + vx = VX(v); + vy = VY(v); + vz = VZ(v); + gteMAC1 = A1((((s64)gteL11 * vx) + (gteL12 * vy) + (gteL13 * vz)) >> 12); + gteMAC2 = A2((((s64)gteL21 * vx) + (gteL22 * vy) + (gteL23 * vz)) >> 12); + gteMAC3 = A3((((s64)gteL31 * vx) + (gteL32 * vy) + (gteL33 * vz)) >> 12); + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); + gteMAC1 = A1((((s64)gteRBK << 12) + (gteLR1 * gteIR1) + (gteLR2 * gteIR2) + (gteLR3 * gteIR3)) >> 12); + gteMAC2 = A2((((s64)gteGBK << 12) + (gteLG1 * gteIR1) + (gteLG2 * gteIR2) + (gteLG3 * gteIR3)) >> 12); + gteMAC3 = A3((((s64)gteBBK << 12) + (gteLB1 * gteIR1) + (gteLB2 * gteIR2) + (gteLB3 * gteIR3)) >> 12); + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); + gteMAC1 = A1(((((s64)gteR << 4) * gteIR1) + (gteIR0 * limB1(gteRFC - ((gteR * gteIR1) >> 8), 0))) >> 12); + gteMAC2 = A2(((((s64)gteG << 4) * gteIR2) + (gteIR0 * limB2(gteGFC - ((gteG * gteIR2) >> 8), 0))) >> 12); + gteMAC3 = A3(((((s64)gteB << 4) * gteIR3) + (gteIR0 * limB3(gteBFC - ((gteB * gteIR3) >> 8), 0))) >> 12); + + gteRGB0 = gteRGB1; + gteRGB1 = gteRGB2; + gteCODE2 = gteCODE; + gteR2 = limC1(gteMAC1 >> 4); + gteG2 = limC2(gteMAC2 >> 4); + gteB2 = limC3(gteMAC3 >> 4); + } + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); +} + +void gteOP() { + int shift = 12 * GTE_SF(gteop); + int lm = GTE_LM(gteop); + +#ifdef GTE_LOG + GTE_LOG("GTE OP\n"); +#endif + gteFLAG = 0; + + gteMAC1 = A1(((s64)(gteR22 * gteIR3) - (gteR33 * gteIR2)) >> shift); + gteMAC2 = A2(((s64)(gteR33 * gteIR1) - (gteR11 * gteIR3)) >> shift); + gteMAC3 = A3(((s64)(gteR11 * gteIR2) - (gteR22 * gteIR1)) >> shift); + gteIR1 = limB1(gteMAC1, lm); + gteIR2 = limB2(gteMAC2, lm); + gteIR3 = limB3(gteMAC3, lm); +} + +void gteDCPL() { + int lm = GTE_LM(gteop); + + s64 RIR1 = ((s64)gteR * gteIR1) >> 8; + s64 GIR2 = ((s64)gteG * gteIR2) >> 8; + s64 BIR3 = ((s64)gteB * gteIR3) >> 8; + +#ifdef GTE_LOG + GTE_LOG("GTE DCPL\n"); +#endif + gteFLAG = 0; + + gteMAC1 = A1(RIR1 + ((gteIR0 * limB1(gteRFC - RIR1, 0)) >> 12)); + gteMAC2 = A2(GIR2 + ((gteIR0 * limB1(gteGFC - GIR2, 0)) >> 12)); + gteMAC3 = A3(BIR3 + ((gteIR0 * limB1(gteBFC - BIR3, 0)) >> 12)); + + gteIR1 = limB1(gteMAC1, lm); + gteIR2 = limB2(gteMAC2, lm); + gteIR3 = limB3(gteMAC3, lm); + + gteRGB0 = gteRGB1; + gteRGB1 = gteRGB2; + gteCODE2 = gteCODE; + gteR2 = limC1(gteMAC1 >> 4); + gteG2 = limC2(gteMAC2 >> 4); + gteB2 = limC3(gteMAC3 >> 4); +} + +void gteGPF() { + int shift = 12 * GTE_SF(gteop); + +#ifdef GTE_LOG + GTE_LOG("GTE GPF\n"); +#endif + gteFLAG = 0; + + gteMAC1 = A1(((s64)gteIR0 * gteIR1) >> shift); + gteMAC2 = A2(((s64)gteIR0 * gteIR2) >> shift); + gteMAC3 = A3(((s64)gteIR0 * gteIR3) >> shift); + gteIR1 = limB1(gteMAC1, 0); + gteIR2 = limB2(gteMAC2, 0); + gteIR3 = limB3(gteMAC3, 0); + + gteRGB0 = gteRGB1; + gteRGB1 = gteRGB2; + gteCODE2 = gteCODE; + gteR2 = limC1(gteMAC1 >> 4); + gteG2 = limC2(gteMAC2 >> 4); + gteB2 = limC3(gteMAC3 >> 4); +} + +void gteGPL() { + int shift = 12 * GTE_SF(gteop); + +#ifdef GTE_LOG + GTE_LOG("GTE GPL\n"); +#endif + gteFLAG = 0; + + gteMAC1 = A1((((s64)gteMAC1 << shift) + (gteIR0 * gteIR1)) >> shift); + gteMAC2 = A2((((s64)gteMAC2 << shift) + (gteIR0 * gteIR2)) >> shift); + gteMAC3 = A3((((s64)gteMAC3 << shift) + (gteIR0 * gteIR3)) >> shift); + gteIR1 = limB1(gteMAC1, 0); + gteIR2 = limB2(gteMAC2, 0); + gteIR3 = limB3(gteMAC3, 0); + + gteRGB0 = gteRGB1; + gteRGB1 = gteRGB2; + gteCODE2 = gteCODE; + gteR2 = limC1(gteMAC1 >> 4); + gteG2 = limC2(gteMAC2 >> 4); + gteB2 = limC3(gteMAC3 >> 4); +} + +void gteDPCS() { + int shift = 12 * GTE_SF(gteop); + +#ifdef GTE_LOG + GTE_LOG("GTE DPCS\n"); +#endif + gteFLAG = 0; + + gteMAC1 = A1(((gteR << 16) + (gteIR0 * limB1(A1((s64)gteRFC - (gteR << 4)) << (12 - shift), 0))) >> 12); + gteMAC2 = A2(((gteG << 16) + (gteIR0 * limB2(A2((s64)gteGFC - (gteG << 4)) << (12 - shift), 0))) >> 12); + gteMAC3 = A3(((gteB << 16) + (gteIR0 * limB3(A3((s64)gteBFC - (gteB << 4)) << (12 - shift), 0))) >> 12); + + gteIR1 = limB1(gteMAC1, 0); + gteIR2 = limB2(gteMAC2, 0); + gteIR3 = limB3(gteMAC3, 0); + gteRGB0 = gteRGB1; + gteRGB1 = gteRGB2; + gteCODE2 = gteCODE; + gteR2 = limC1(gteMAC1 >> 4); + gteG2 = limC2(gteMAC2 >> 4); + gteB2 = limC3(gteMAC3 >> 4); +} + +void gteDPCT() { + int v; + +#ifdef GTE_LOG + GTE_LOG("GTE DPCT\n"); +#endif + gteFLAG = 0; + + for (v = 0; v < 3; v++) { + gteMAC1 = A1((((s64)gteR0 << 16) + ((s64)gteIR0 * (limB1(gteRFC - (gteR0 << 4), 0)))) >> 12); + gteMAC2 = A2((((s64)gteG0 << 16) + ((s64)gteIR0 * (limB1(gteGFC - (gteG0 << 4), 0)))) >> 12); + gteMAC3 = A3((((s64)gteB0 << 16) + ((s64)gteIR0 * (limB1(gteBFC - (gteB0 << 4), 0)))) >> 12); + + gteRGB0 = gteRGB1; + gteRGB1 = gteRGB2; + gteCODE2 = gteCODE; + gteR2 = limC1(gteMAC1 >> 4); + gteG2 = limC2(gteMAC2 >> 4); + gteB2 = limC3(gteMAC3 >> 4); + } + gteIR1 = limB1(gteMAC1, 0); + gteIR2 = limB2(gteMAC2, 0); + gteIR3 = limB3(gteMAC3, 0); +} + +void gteNCS() { +#ifdef GTE_LOG + GTE_LOG("GTE NCS\n"); +#endif + gteFLAG = 0; + + gteMAC1 = A1((((s64)gteL11 * gteVX0) + (gteL12 * gteVY0) + (gteL13 * gteVZ0)) >> 12); + gteMAC2 = A2((((s64)gteL21 * gteVX0) + (gteL22 * gteVY0) + (gteL23 * gteVZ0)) >> 12); + gteMAC3 = A3((((s64)gteL31 * gteVX0) + (gteL32 * gteVY0) + (gteL33 * gteVZ0)) >> 12); + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); + gteMAC1 = A1((((s64)gteRBK << 12) + (gteLR1 * gteIR1) + (gteLR2 * gteIR2) + (gteLR3 * gteIR3)) >> 12); + gteMAC2 = A2((((s64)gteGBK << 12) + (gteLG1 * gteIR1) + (gteLG2 * gteIR2) + (gteLG3 * gteIR3)) >> 12); + gteMAC3 = A3((((s64)gteBBK << 12) + (gteLB1 * gteIR1) + (gteLB2 * gteIR2) + (gteLB3 * gteIR3)) >> 12); + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); + + gteRGB0 = gteRGB1; + gteRGB1 = gteRGB2; + gteCODE2 = gteCODE; + gteR2 = limC1(gteMAC1 >> 4); + gteG2 = limC2(gteMAC2 >> 4); + gteB2 = limC3(gteMAC3 >> 4); +} + +void gteNCT() { + int v; + s32 vx, vy, vz; + +#ifdef GTE_LOG + GTE_LOG("GTE NCT\n"); +#endif + gteFLAG = 0; + + for (v = 0; v < 3; v++) { + vx = VX(v); + vy = VY(v); + vz = VZ(v); + gteMAC1 = A1((((s64)gteL11 * vx) + (gteL12 * vy) + (gteL13 * vz)) >> 12); + gteMAC2 = A2((((s64)gteL21 * vx) + (gteL22 * vy) + (gteL23 * vz)) >> 12); + gteMAC3 = A3((((s64)gteL31 * vx) + (gteL32 * vy) + (gteL33 * vz)) >> 12); + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); + gteMAC1 = A1((((s64)gteRBK << 12) + (gteLR1 * gteIR1) + (gteLR2 * gteIR2) + (gteLR3 * gteIR3)) >> 12); + gteMAC2 = A2((((s64)gteGBK << 12) + (gteLG1 * gteIR1) + (gteLG2 * gteIR2) + (gteLG3 * gteIR3)) >> 12); + gteMAC3 = A3((((s64)gteBBK << 12) + (gteLB1 * gteIR1) + (gteLB2 * gteIR2) + (gteLB3 * gteIR3)) >> 12); + gteRGB0 = gteRGB1; + gteRGB1 = gteRGB2; + gteCODE2 = gteCODE; + gteR2 = limC1(gteMAC1 >> 4); + gteG2 = limC2(gteMAC2 >> 4); + gteB2 = limC3(gteMAC3 >> 4); + } + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); +} + +void gteCC() { +#ifdef GTE_LOG + GTE_LOG("GTE CC\n"); +#endif + gteFLAG = 0; + + gteMAC1 = A1((((s64)gteRBK << 12) + (gteLR1 * gteIR1) + (gteLR2 * gteIR2) + (gteLR3 * gteIR3)) >> 12); + gteMAC2 = A2((((s64)gteGBK << 12) + (gteLG1 * gteIR1) + (gteLG2 * gteIR2) + (gteLG3 * gteIR3)) >> 12); + gteMAC3 = A3((((s64)gteBBK << 12) + (gteLB1 * gteIR1) + (gteLB2 * gteIR2) + (gteLB3 * gteIR3)) >> 12); + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); + gteMAC1 = A1(((s64)gteR * gteIR1) >> 8); + gteMAC2 = A2(((s64)gteG * gteIR2) >> 8); + gteMAC3 = A3(((s64)gteB * gteIR3) >> 8); + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); + + gteRGB0 = gteRGB1; + gteRGB1 = gteRGB2; + gteCODE2 = gteCODE; + gteR2 = limC1(gteMAC1 >> 4); + gteG2 = limC2(gteMAC2 >> 4); + gteB2 = limC3(gteMAC3 >> 4); +} + +void gteINTPL() { + int shift = 12 * GTE_SF(gteop); + int lm = GTE_LM(gteop); + +#ifdef GTE_LOG + GTE_LOG("GTE INTPL\n"); +#endif + gteFLAG = 0; + + gteMAC1 = A1(((gteIR1 << 12) + (gteIR0 * limB1(((s64)gteRFC - gteIR1), 0))) >> shift); + gteMAC2 = A2(((gteIR2 << 12) + (gteIR0 * limB2(((s64)gteGFC - gteIR2), 0))) >> shift); + gteMAC3 = A3(((gteIR3 << 12) + (gteIR0 * limB3(((s64)gteBFC - gteIR3), 0))) >> shift); + gteIR1 = limB1(gteMAC1, lm); + gteIR2 = limB2(gteMAC2, lm); + gteIR3 = limB3(gteMAC3, lm); + gteRGB0 = gteRGB1; + gteRGB1 = gteRGB2; + gteCODE2 = gteCODE; + gteR2 = limC1(gteMAC1 >> 4); + gteG2 = limC2(gteMAC2 >> 4); + gteB2 = limC3(gteMAC3 >> 4); +} + +void gteCDP() { +#ifdef GTE_LOG + GTE_LOG("GTE CDP\n"); +#endif + gteFLAG = 0; + + gteMAC1 = A1((((s64)gteRBK << 12) + (gteLR1 * gteIR1) + (gteLR2 * gteIR2) + (gteLR3 * gteIR3)) >> 12); + gteMAC2 = A2((((s64)gteGBK << 12) + (gteLG1 * gteIR1) + (gteLG2 * gteIR2) + (gteLG3 * gteIR3)) >> 12); + gteMAC3 = A3((((s64)gteBBK << 12) + (gteLB1 * gteIR1) + (gteLB2 * gteIR2) + (gteLB3 * gteIR3)) >> 12); + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); + gteMAC1 = A1(((((s64)gteR << 4) * gteIR1) + (gteIR0 * limB1(gteRFC - ((gteR * gteIR1) >> 8), 0))) >> 12); + gteMAC2 = A2(((((s64)gteG << 4) * gteIR2) + (gteIR0 * limB2(gteGFC - ((gteG * gteIR2) >> 8), 0))) >> 12); + gteMAC3 = A3(((((s64)gteB << 4) * gteIR3) + (gteIR0 * limB3(gteBFC - ((gteB * gteIR3) >> 8), 0))) >> 12); + gteIR1 = limB1(gteMAC1, 1); + gteIR2 = limB2(gteMAC2, 1); + gteIR3 = limB3(gteMAC3, 1); + + gteRGB0 = gteRGB1; + gteRGB1 = gteRGB2; + gteCODE2 = gteCODE; + gteR2 = limC1(gteMAC1 >> 4); + gteG2 = limC2(gteMAC2 >> 4); + gteB2 = limC3(gteMAC3 >> 4); +} diff --git a/libpcsxcore/gte.h b/libpcsxcore/gte.h new file mode 100644 index 0000000..2cea026 --- /dev/null +++ b/libpcsxcore/gte.h @@ -0,0 +1,65 @@ +/*************************************************************************** + * PCSX-Revolution - PlayStation Emulator for Nintendo Wii * + * Copyright (C) 2009-2010 PCSX-Revolution Dev Team * + * * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#ifndef __GTE_H__ +#define __GTE_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "psxcommon.h" +#include "r3000a.h" + +void gteMFC2(); +void gteCFC2(); +void gteMTC2(); +void gteCTC2(); +void gteLWC2(); +void gteSWC2(); + +void gteRTPS(); +void gteOP(); +void gteNCLIP(); +void gteDPCS(); +void gteINTPL(); +void gteMVMVA(); +void gteNCDS(); +void gteNCDT(); +void gteCDP(); +void gteNCCS(); +void gteCC(); +void gteNCS(); +void gteNCT(); +void gteSQR(); +void gteDCPL(); +void gteDPCT(); +void gteAVSZ3(); +void gteAVSZ4(); +void gteRTPT(); +void gteGPF(); +void gteGPL(); +void gteNCCT(); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/gte_divider.h b/libpcsxcore/gte_divider.h new file mode 100644 index 0000000..ae32db0 --- /dev/null +++ b/libpcsxcore/gte_divider.h @@ -0,0 +1,4133 @@ +// GTE Divider by shalma +// http://forums.ngemu.com/1844192-post72.html + +static u16 initial_guess[32768] = { + 0x0000, 0xFE93, 0xFE91, 0xFE8F, 0xFE8D, 0xFE8B, 0xFE89, 0xFE87, + 0xFE85, 0xFE83, 0xFE81, 0xFE7F, 0xFE7D, 0xFE7B, 0xFE79, 0xFE77, + 0xFE75, 0xFE71, 0xFE6F, 0xFE6D, 0xFE6B, 0xFE69, 0xFE67, 0xFE65, + 0xFE63, 0xFE61, 0xFE5D, 0xFE5B, 0xFE59, 0xFE57, 0xFE55, 0xFE53, + 0xFE4F, 0xFE4D, 0xFE4B, 0xFE49, 0xFE47, 0xFE45, 0xFE41, 0xFE3F, + 0xFE3D, 0xFE3B, 0xFE37, 0xFE35, 0xFE33, 0xFE31, 0xFE2F, 0xFE2B, + 0xFE29, 0xFE27, 0xFE25, 0xFE21, 0xFE1F, 0xFE1D, 0xFE19, 0xFE17, + 0xFE15, 0xFE13, 0xFE0F, 0xFE0D, 0xFE0B, 0xFE07, 0xFE05, 0xFE03, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFDB6, 0xFDB2, 0xFDB0, 0xFDAC, 0xFDAA, + 0xFDA6, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEB72, 0xEB70, 0xEB6E, + 0xEB86, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xEBDF, 0xEBF9, + 0xEBF7, 0xEBF5, 0xE64A, 0xE65C, 0xE65A, 0xE66E, 0xE66C, 0xE65F, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xEC3E, 0xEC3C, 0xEC56, 0xE6B7, 0xE6C9, + 0xE6C7, 0xE6BA, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFF43, 0xEC94, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFF0E, 0xED15, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFE36, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF44, + 0xFD16, 0xE877, 0xE868, 0xE4DC, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFF5A, 0xFDBB, 0xED6C, 0xE891, 0xE528, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFED2, 0xFD10, 0xED52, 0xE8AA, 0xE554, + 0xE28E, 0xE28C, 0xE040, 0xFFFE, 0xFF5C, 0xFDF1, 0xFBB1, 0xE8BC, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF6E, 0xFE0A, 0xFC57, + 0xE8C1, 0xE558, 0xE556, 0xE2A0, 0xE2B2, 0xE060, 0xDE5E, 0xFE56, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFF78, 0xFE4E, 0xFCDC, 0xED27, 0xE57A, 0xE56D, 0xE2C3, 0xE086, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFF04, 0xFDCB, 0xFC53, 0xED0A, 0xE57F, 0xE2D8, 0xE09E, + 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFF37, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF88, + 0xFE9A, 0xFD43, 0xFBD6, 0xECBE, 0xE574, 0xE2EF, 0xE0B1, 0xDED1, + 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFF86, 0xFE6F, 0xFD54, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF8E, 0xFEAC, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFC5, 0xFEBB, 0xFDA6, 0xFC62, 0xFACC, + 0xE885, 0xE2E9, 0xFF90, 0xFEB4, 0xFDA3, 0xFC59, 0xFAA5, 0xE867, + 0xE561, 0xE0C5, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFF12, + 0xFE21, 0xFCEC, 0xFBA5, 0xF9CA, 0xFFFF, 0xFF96, 0xFEC2, 0xFDBD, + 0xFC83, 0xFB14, 0xF90C, 0xE551, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFF5B, 0xFE66, 0xFD69, 0xFC39, 0xFAD6, 0xF8DC, 0xFF67, + 0xFE9D, 0xFDA2, 0xFCCE, 0xFB79, 0xF9E9, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xE80C, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFF9A, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFF71, 0xE519, 0xE0A5, 0xFFFE, 0xFFFE, 0xFFFE, 0xFF6B, 0xE4FF, + 0xE0A1, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF46, 0xE50A, 0xE0A8, 0xDED3, + 0xDD3C, 0xDBAB, 0xDA53, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFF71, 0xFE96, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFD3, 0xFF1F, 0xFE5B, 0xE293, 0xDEC3, 0xDD2C, + 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFA4, 0xFEDA, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFD2, 0xFF25, 0xFE6D, 0xE787, 0xE08E, 0xDEC7, 0xFFFF, 0xFFFF, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFF79, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF7F, 0xFED7, + 0xFE03, 0xE75E, 0xE276, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFF7D, 0xFEBB, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFF83, 0xFEDF, 0xFE17, 0xFD52, 0xE49F, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFD5, 0xFF25, 0xFE6C, 0xFDAC, 0xFFFF, 0xFFAE, + 0xFF0E, 0xFE60, 0xFDA7, 0xFCDE, 0xE235, 0xDE95, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFAE, 0xE039, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF8B, 0xE023, 0xDCE3, + 0xDB7C, 0xDA35, 0xD7CD, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFD9, 0xFF35, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFB4, 0xFF1C, 0xE009, 0xDCE2, 0xDA2B, 0xFFFF, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFD9, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFF8F, 0xFEFB, 0xE1D1, 0xDE4C, 0xFFFF, + 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFF8D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFB6, 0xFF26, 0xFE92, + 0xE1C4, 0xDE3B, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFF91, 0xFEEF, 0xFFFF, 0xFFFF, 0xFFB8, + 0xFF2A, 0xFE9C, 0xFDE9, 0xDFC1, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xE177, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFB8, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xE177, + 0xDC8A, 0xD9DF, 0xFFFF, 0xFF99, 0xDF9C, 0xDB26, 0xD89E, 0xD792, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFF74, 0xDF88, 0xDB09, 0xFFFF, 0xFF7A, 0xE142, 0xDC6B, 0xD9CE, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFBC, 0xFF2E, 0xE12E, 0xFFFF, 0xFFBE, 0xFF3A, 0xFEB6, 0xDDC0, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFF78, 0xFEE8, 0xFE59, 0xFFFF, 0xFF7E, 0xFEFC, 0xFE74, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFC0, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFE0, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFC2, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFE0, 0xFF67, 0xDEDF, 0xFFFE, 0xFFE1, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, + 0xFF21, 0xDEAE, 0xDA80, 0xFF86, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFA5, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFA3, 0xFF23, + 0xFE9B, 0xDD12, 0xFF6B, 0xFFE2, 0xFFC4, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFC3, 0xDA41, 0xFF8A, 0xFF8A, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF8C, + 0xDA41, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFC5, 0xFF54, 0xDB71, + 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFA9, 0xFFFF, 0xFFFF, 0xFFC5, 0xFF56, 0xFEE6, 0xDB56, 0xD6AF, + 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xD9FB, 0xD6A4, 0xFFFE, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFC7, + 0xFFFE, 0xFFFE, 0xFFFE, 0xDB1B, 0xD794, 0xD49C, 0xFFFE, 0xFFFE, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFAD, 0xDB12, 0xD68B, + 0xFFE3, 0xFF73, 0xD893, 0xD573, 0xD3AC, 0xFFFE, 0xFFFE, 0xFFC8, + 0xFF58, 0xD9C0, 0xFFE5, 0xFF79, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFE5, 0xFF75, 0xFF01, 0xD9A7, + 0xFF94, 0xFFFF, 0xFFE4, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD98E, 0xFFFE, 0xFFB1, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFCB, 0xD843, 0xFF62, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFB0, + 0xFF4B, 0xD719, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFB3, 0xFF4D, 0xD93E, 0xFFFF, + 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xD5FB, 0xFFFE, 0xFFB3, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFE5, 0xD6E4, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFF9C, 0xFFFE, 0xFFFE, 0xFFB3, 0xD7C7, 0xD3F1, + 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFB4, 0xFF53, + 0xD6A8, 0xFFCE, 0xFF68, 0xD7B0, 0xD4C5, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xD5AF, 0xD2FC, 0xFFCD, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFE6, 0xD591, + 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFE6, 0xFF87, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFE7, 0xFFFF, 0xFFFF, 0xFFCF, 0xFF70, + 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFCF, 0xFFFE, 0xFFFE, 0xFFD0, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFF8B, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFE8, 0xFFFE, 0xFFFE, 0xFFE7, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFBB, 0xFFFE, 0xFFFE, + 0xFFB9, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFE8, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFBB, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xD406, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFBB, 0xD3F1, 0xFFE8, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFF8D, 0xD3DC, 0xFFD3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, + 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD217, 0xFFFF, 0xFFBC, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFD4, 0xD202, 0xFF7C, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFD3, 0xFF7C, 0xFFFF, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFBF, 0xFF67, + 0xFFEA, 0xFFFE, 0xFFE9, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFA8, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFEA, 0xFFEA, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFBF, 0xFFBF, 0xFFFF, 0xFFFF, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFF80, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFD6, 0xFFFF, 0xFFEA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFC0, 0xFFFE, + 0xFFFF, 0xFFFF, 0xCFC0, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFD7, 0xFFFF, 0xFFFF, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFC1, 0xFFFF, 0xFFD7, 0xFF86, + 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFC2, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFF88, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFEC, 0xFFFE, 0xFE99, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFF, 0xFFEC, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFDB0, 0xFFD8, 0xFFD8, 0xFFFF, 0xFFFF, 0xFFC5, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFF, 0xFEEE, 0xFF9B, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFEB, 0xFFFE, 0xFF60, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFEB, + 0xFE78, 0xFFC4, 0xFFC4, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFB2, 0xFFFF, 0xFF9F, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFDA, 0xFFDA, + 0xFFFF, 0xFFFF, 0xCB8D, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFF, 0xFFFF, 0xFFEC, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFED, 0xFFFF, 0xFFFF, 0xFFB3, 0xFFFF, 0xFFFF, + 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFC6, + 0xFFFE, 0xFFFE, 0xFFC7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, + 0xFFFE, 0xFF90, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFE, 0xFE23, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFEC, 0xFFEC, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFE90, 0xFFC7, 0xFFFF, 0xFFFF, + 0xFFB5, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFAE1, 0xFE5B, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFED, 0xFC33, + 0xFECB, 0xFFEC, 0xFFEC, 0xFFFE, 0xFFED, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFC9, 0xFCAF, 0xFF20, 0xFFB7, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFF92, 0xFD1F, 0xFF81, 0xFFFE, 0xFFFE, 0xFFFE, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFECF, 0xFFEE, 0xFD8F, 0xFFED, 0xFFED, + 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFB7, 0xFFB7, 0xFE8B, + 0xFFB8, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFDD3, 0xFF83, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFD12, 0xFFEE, 0xFFEE, + 0xFFFE, 0xFFDC, 0xFFDC, 0xFFFF, 0xFFFF, 0xFFFE, 0xFB9A, 0xFE14, + 0xFFB9, 0xFFFE, 0xFFB8, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF893, + 0xFD47, 0xFF85, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFED7, 0xFB40, 0xFE43, 0xFFDC, 0xFFDC, 0xFFFF, 0xFFCA, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFB9, 0xFCE4, 0xFF1F, 0xFFFF, 0xFFFF, 0xFF98, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFF87, 0xFB81, 0xFE64, 0xFFFF, 0xFFEE, + 0xFFFE, 0xFFED, 0xFFFF, 0xFFFF, 0xFECF, 0xFFDC, 0xFDA9, 0xFFCC, + 0xFFCC, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFD89, 0xFFA9, 0xFFFF, + 0xFF1B, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFCCA, 0xFEF0, + 0xFFEE, 0xFE62, 0xFFEF, 0xFFEF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFC04, + 0xFEBF, 0xFFBC, 0xFFFE, 0xFFBC, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFB35, 0xFE06, 0xFF89, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFF, 0xFDE2, 0xFFDE, 0xFFDE, 0xFFFF, 0xFFCC, 0xFFFE, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFDAB, 0xFF38, 0xFFFF, 0xFFFF, 0xFFFF, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFF89, 0xFFEE, 0xFFEE, + 0xFBC5, 0xFDDF, 0xFFDD, 0xFFDD, 0xFFDE, 0xFFDE, 0xFFFF, 0xFFFF, + 0xFFFE, 0xFB91, 0xFE43, 0xFFAD, 0xFFFE, 0xFFAD, 0xFFFF, 0xFFFF, + 0xFFFF, 0xFFFE, 0xFB5E, 0xFE14, 0xFFFE, 0xFFFE, 0xFFEE, 0xFFDF, + 0xFFFE, 0xFFFE, 0xFEE9, 0xFBCC, 0xFE61, 0xFFCD, 0xFFFF, 0xFFBD, + 0xFFFE, 0xFFFE, 0xFFFE, 0xFF36, 0xFC22, 0xFE2C, 0xFFFF, 0xFFFF, + 0xFF8D, 0xFFFE, 0xFFFE, 0xFC85, 0xFF05, 0xFBF6, 0xFE7C, 0xFFDF, + 0xFFDF, 0xFFDE, 0xFFCF, 0xFFFF, 0xFCDA, 0xFED2, 0xFC4B, 0xFECD, + 0xFFAF, 0xFFFE, 0xFFAD, 0xFFFF, 0xFA8D, 0xFDB0, 0xFF8D, 0xFD2B, + 0xFE9E, 0xFFEF, 0xFFEF, 0xFFE0, 0xFFE0, 0xFAE5, 0xFE00, 0xFFCE, + 0xFD7C, 0xFFCF, 0xFFCF, 0xFFFF, 0xFFAE, 0xF7CC, 0xFBD1, 0xFE42, + 0xFFA0, 0xFDCB, 0xFF9E, 0xFFFF, 0xFFFF, 0xFFFE, 0xF8E6, 0xFCAB, + 0xFF0B, 0xFFE0, 0xFE84, 0xFFD0, 0xFFD0, 0xFFFE, 0xFD79, 0xFA65, + 0xFCFE, 0xFF42, 0xFFFF, 0xFEC4, 0xFFFE, 0xFFFE, 0xFFFE, 0xFE48, + 0xFBD4, 0xFDC0, 0xFFF0, 0xFFF0, 0xFF73, 0xFFEF, 0xFFFF, 0xFD2C, + 0xFEFC, 0xFCA3, 0xFE79, 0xFFC1, 0xFFFE, 0xFFC0, 0xFFFF, 0xFFFF, + 0xFDE8, 0xFFB1, 0xFD61, 0xFF2F, 0xFFFE, 0xFFFE, 0xFFF0, 0xFFF0, + 0xFFEF, 0xFFEF, 0xFFDF, 0xFFDF, 0xFBC2, 0xFE0F, 0xFFC2, 0xFDA3, + 0xFF55, 0xFFFF, 0xFFFF, 0xFFFE, 0xFA18, 0xFD0B, 0xFECA, 0xFC82, + 0xFEBE, 0xFFFF, 0xFFF0, 0xFFEF, 0xF8D5, 0xFB70, 0xFDC7, 0xFFE0, + 0xFD3E, 0xFFD0, 0xFFD0, 0xFFFE, 0xF6F7, 0xFA42, 0xFCA7, 0xFEE2, + 0xFCA8, 0xFE63, 0xFFFE, 0xFFFE, 0xFC97, 0xF87E, 0xFC0C, 0xFE4C, + 0xFF84, 0xFDCB, 0xFF77, 0xFFE0, 0xFAFC, 0xF7CE, 0xFAF5, 0xFD35, + 0xFEEE, 0xFCC4, 0xFEE4, 0xFFFF, 0xFA52, 0xFC36, 0xF9BD, 0xFC2A, + 0xFE58, 0xFFFE, 0xFE50, 0xFFE1, 0xF8A1, 0xFB95, 0xF894, 0xFB8D, + 0xFDC2, 0xFF68, 0xFDB8, 0xFEF0, 0xF7E3, 0xFAF2, 0xFCC5, 0xFA76, + 0xFCBB, 0xFED7, 0xFFFF, 0xFE5C, 0xF60E, 0xF9D9, 0xFC25, 0xF9CE, + 0xFC24, 0xFE45, 0xFFD3, 0xFE40, 0xF546, 0xF92D, 0xFB88, 0xFDB9, + 0xFB85, 0xFDAD, 0xFFA6, 0xFFFE, 0xF32E, 0xF881, 0xFB69, 0xFD21, + 0xFAE6, 0xFD81, 0xFF1B, 0xFFE2, 0xFAD5, 0xF7C7, 0xFACA, 0xFCEE, + 0xFF03, 0xFCEF, 0xFE8B, 0xFFFF, 0xFA2D, 0xF7B2, 0xFA2B, 0xFCD5, + 0xFE71, 0xFC50, 0xFECE, 0xFFE1, 0xF98C, 0xFC43, 0xF983, 0xFC3B, + 0xFE46, 0xFFD3, 0xFE3E, 0xFFB6, 0xF9DF, 0xFBA6, 0xF9DF, 0xFC0D, + 0xFDB6, 0xFC09, 0xFE0D, 0xFF3D, 0xFFF1, 0xFF88, 0xFFE1, 0xFFFE, + 0xFD89, 0xFB70, 0xFD7E, 0xFF6E, 0xFFFF, 0xFF07, 0xFFFE, 0xFFFE, + 0xFD69, 0xFBBF, 0xFD55, 0xFF43, 0xFFF0, 0xFF3F, 0xFFF1, 0xFB29, + 0xFDA0, 0xFB8E, 0xFD39, 0xFF18, 0xFFC6, 0xFF12, 0xFFC4, 0xFAFB, + 0xFD75, 0xFAF3, 0xFD6F, 0xFEED, 0xFFFE, 0xFF43, 0xF915, 0xFB49, + 0xFD4E, 0xFAC7, 0xFD3E, 0xFF21, 0xFFD3, 0xFF1A, 0xF8E3, 0xFB89, + 0xFD1F, 0xFB86, 0xFD16, 0xFEF6, 0xFFFF, 0xF539, 0xF8BA, 0xFB5D, + 0xFCFF, 0xFB55, 0xFD52, 0xFF29, 0xFFD4, 0xF509, 0xF90E, 0xFB32, + 0xFD38, 0xFB95, 0xFD8A, 0xFF00, 0xF8E7, 0xF5FA, 0xF958, 0xFB83, + 0xFD74, 0xFB67, 0xFD5B, 0xFF8E, 0xF9B2, 0xF6E1, 0xF93A, 0xFC21, + 0xFDAE, 0xFBB3, 0xFD92, 0xF6BE, 0xF9F7, 0xF6B1, 0xFA62, 0xFC5E, + 0xFDD3, 0xFBF1, 0xFE2F, 0xF799, 0xFA3B, 0xF80B, 0xFAA0, 0xFC98, + 0xFE06, 0xFC2B, 0xF45C, 0xF7E2, 0xFA79, 0xF84C, 0xFADC, 0xFCD4, + 0xFEA1, 0xFCBD, 0xF5D2, 0xF8A1, 0xFB25, 0xF906, 0xFB88, 0xFD01, + 0xFE76, 0xF969, 0xF627, 0xF8F3, 0xFBC9, 0xF951, 0xFBC4, 0xFD9A, + 0xFF56, 0xF9B0, 0xF700, 0xF9A9, 0xFC05, 0xF9FD, 0xFBFE, 0xFDCE, + 0xF7C8, 0xFA60, 0xFCA5, 0xFA46, 0xFC3D, 0xFE0E, 0xF88E, 0xFAA3, + 0xF8F6, 0xFAF3, 0xFCD3, 0xFB56, 0xFD30, 0xF61A, 0xF943, 0xF68D, + 0xF9AA, 0xFB98, 0xFD6C, 0xFB92, 0xFD53, 0xF6F0, 0xF9F1, 0xF7CD, + 0xF9E5, 0xFC25, 0xFDF4, 0xFC85, 0xF568, 0xF886, 0xFAF0, 0xF8F4, + 0xFAED, 0xFCC4, 0xFE73, 0xF2A2, 0xF6AD, 0xF93D, 0xFB30, 0xF933, + 0xFBE7, 0xFD4A, 0xFBDA, 0xF496, 0xF7D2, 0xFA44, 0xFC21, 0xFAA5, + 0xFC73, 0xFDD3, 0xF8FC, 0xF663, 0xF8F7, 0xFAEC, 0xF949, 0xFB3A, + 0xFD5C, 0xF72F, 0xF99D, 0xF715, 0xF9FC, 0xFBCF, 0xF9F6, 0xFC28, + 0xF528, 0xF8B4, 0xF61C, 0xF843, 0xFAF9, 0xFCBE, 0xFAF4, 0xFCB2, + 0xF672, 0xF9C1, 0xF7B6, 0xF94A, 0xFB8B, 0xFD46, 0xFC3A, 0xF561, + 0xF7FF, 0xFAB8, 0xF8CA, 0xFB09, 0xFCC9, 0xFE6E, 0xF353, 0xF700, + 0xF96A, 0xFB4E, 0xF9CD, 0xFB9A, 0xFD4B, 0xFEDF, 0xF594, 0xF884, + 0xFACE, 0xFC8C, 0xFB1E, 0xFCD5, 0xFE22, 0xF992, 0xF730, 0xF98E, + 0xFBB3, 0xF9E2, 0xFBA6, 0xFDAB, 0xF84B, 0xFA29, 0xF905, 0xFAE1, + 0xFCE6, 0xFB2B, 0xFC83, 0xFE74, 0xF9A9, 0xF7B5, 0xFA63, 0xFBBC, + 0xFDBC, 0xFC09, 0xFDA1, 0xF860, 0xFAF6, 0xF91E, 0xFB46, 0xFC9A, + 0xF77B, 0xFA26, 0xFB89, 0xFA76, 0xFBD5, 0xFD70, 0xF893, 0xF6F1, + 0xF8E5, 0xFB0B, 0xF936, 0xFB59, 0xFCFD, 0xF80A, 0xF590, 0xF865, + 0xFA8A, 0xFC95, 0xFADB, 0xFC30, 0xF782, 0xF905, 0xF70C, 0xF9BD, + 0xFB6C, 0xFA0D, 0xF298, 0xF628, 0xF8E6, 0xF685, 0xF937, 0xFAF1, + 0xFC97, 0xF1F9, 0xF59F, 0xF868, 0xF66B, 0xF8B8, 0xFA77, 0xFC1B, + 0xEFB1, 0xF42C, 0xF7E1, 0xF9A9, 0xF7D7, 0xFA5A, 0xFC05, 0xF630, + 0xF391, 0xF68A, 0xF990, 0xF754, 0xF9DE, 0xFB8A, 0xF5A8, 0xF28C, + 0xF678, 0xF853, 0xFAC8, 0xF962, 0xFB16, 0xF516, 0xF77C, 0xF5E4, + 0xF837, 0xFA4C, 0xF8E4, 0xFA9A, 0xF502, 0xF75D, 0xF55F, 0xF7B8, + 0xF9D0, 0xFBC8, 0xFA1E, 0xF38C, 0xF6D6, 0xF904, 0xF731, 0xF956, + 0xFB54, 0xF9A4, 0xF2F1, 0xF651, 0xF8E7, 0xF6AC, 0xF936, 0xFAD8, + 0xF9DA, 0xF2DF, 0xF5CA, 0xF86D, 0xF6ED, 0xF914, 0xFB0E, 0xFC4B, + 0xF244, 0xF5AD, 0xF7E8, 0xF9FA, 0xF88E, 0xFA95, 0xFC28, 0xF7D2, + 0xF520, 0xF82B, 0xF9D1, 0xF879, 0xFA1D, 0xF434, 0xF752, 0xF56B, + 0xF7A8, 0xFA0F, 0xFB9D, 0xFA59, 0xF486, 0xF6CF, 0xF943, 0xF77A, + 0xF993, 0xFB27, 0xFA2D, 0xF3F6, 0xF70F, 0xF8C4, 0xF768, 0xF969, + 0xF80B, 0xF9B5, 0xF860, 0xFA54, 0xFBDB, 0xF73C, 0xF557, 0xF78D, + 0xF9EC, 0xF838, 0xF9DA, 0xFBB8, 0xF77F, 0xF53F, 0xF7CB, 0xF9CA, + 0xF871, 0xFA60, 0xFBEE, 0xF6FC, 0xF517, 0xF7A2, 0xF99B, 0xF84F, + 0xFA3F, 0xF4A5, 0xF794, 0xF560, 0xF7E4, 0xF9D9, 0xF885, 0xFA10, + 0xF47B, 0xF715, 0xF536, 0xF7B8, 0xF9B1, 0xF860, 0xF1E9, 0xF4C0, + 0xF7A7, 0xF57B, 0xF793, 0xF98A, 0xF83A, 0xF152, 0xF567, 0xF783, + 0xF615, 0xF824, 0xFA10, 0xF484, 0xF213, 0xF53D, 0xF759, 0xF5EB, + 0xF7FD, 0xFA39, 0xF4C7, 0xF265, 0xF582, 0xF7ED, 0xF62E, 0xF890, + 0xF16C, 0xF49F, 0xF319, 0xF5B4, 0xF7C5, 0xF666, 0xF8BB, 0xF220, + 0xF544, 0xF2E9, 0xF652, 0xF851, 0xF6FE, 0xF88E, 0xF2D7, 0xF57C, + 0xF398, 0xF628, 0xF880, 0xF727, 0xEEBF, 0xF386, 0xF614, 0xF442, + 0xF713, 0xF8AF, 0xF6FE, 0xEF96, 0xF3BE, 0xF64A, 0xF475, 0xF6F0, + 0xF8D8, 0xF3AC, 0xF0CF, 0xF463, 0xF735, 0xF57A, 0xF71F, 0xF90C, + 0xF384, 0xF188, 0xF49B, 0xF760, 0xF5A5, 0xF7AF, 0xF174, 0xF487, + 0xF29E, 0xF592, 0xF78C, 0xF5E6, 0xF880, 0xF28C, 0xF4BF, 0xF2DB, + 0xF5C7, 0xF810, 0xF9DF, 0xF8F8, 0xF2C9, 0xF60D, 0xF3E4, 0xF652, + 0xF83B, 0xF74D, 0xF925, 0xFA8F, 0xF95C, 0xF47C, 0xF6E6, 0xF8B7, + 0xF7C9, 0xF99A, 0xFAFE, 0xF283, 0xF570, 0xF762, 0xF60B, 0xF845, + 0xF9C1, 0xFB6B, 0xF3EF, 0xF64C, 0xF7E1, 0xF692, 0xF8C1, 0xFA2A, + 0xF594, 0xF47A, 0xF6D3, 0xF85F, 0xF710, 0xF93B, 0xF413, 0xF228, + 0xF50E, 0xF750, 0xF91A, 0xF7E0, 0xF280, 0xF54D, 0xF326, 0xF5E8, + 0xF7D2, 0xF63D, 0xF8AA, 0xF372, 0xF5D6, 0xF3C7, 0xF6C2, 0xF83D, + 0xF6FC, 0xF176, 0xF462, 0xF65D, 0xF4B7, 0xF743, 0xF954, 0xEEE5, + 0xF275, 0xF543, 0xF38F, 0xF5D8, 0xF7C1, 0xF2C1, 0xEFFC, 0xF367, + 0xF621, 0xF474, 0xF701, 0xF8C7, 0xF40F, 0xF185, 0xF4AB, 0xF690, + 0xF548, 0xF734, 0xF1C6, 0xF49D, 0xF2DE, 0xF58B, 0xF7B3, 0xF675, + 0xEF46, 0xF377, 0xF1A2, 0xF414, 0xF612, 0xF4C3, 0xEC77, 0xF11E, + 0xF45E, 0xF29D, 0xF553, 0xF726, 0xF63B, 0xEF7B, 0xF2DC, 0xF52E, + 0xF38B, 0xF5D6, 0xF82E, 0xED3A, 0xF0F7, 0xF420, 0xF65B, 0xF50E, + 0xF6E6, 0xF192, 0xEF3E, 0xF241, 0xF547, 0xF351, 0xF5D9, 0xEF30, + 0xF2E7, 0xF112, 0xF3E5, 0xF5C8, 0xF4D6, 0xF6AB, 0xF153, 0xF473, + 0xF25C, 0xF560, 0xF6DD, 0xF5F0, 0xEFC1, 0xF2A9, 0xF13A, 0xF3A2, + 0xF29F, 0xF067, 0xF39B, 0xF573, 0xF435, 0xF6A8, 0xF809, 0xEE5A, + 0xF1C5, 0xF4BF, 0xF2CC, 0xF554, 0xF766, 0xF25E, 0xF08F, 0xF35A, + 0xF5DF, 0xF3FA, 0xF66A, 0xF0CE, 0xF3F1, 0xF234, 0xF488, 0xF69B, + 0xF5B1, 0xF001, 0xF26E, 0xF111, 0xF41C, 0xF63A, 0xF4B1, 0xED88, + 0xF1B1, 0xF44E, 0xF2AF, 0xF4E3, 0xF6F4, 0xEBA2, 0xF029, 0xF344, + 0xF139, 0xF3DB, 0xF68D, 0xF0CD, 0xEE7A, 0xF1D2, 0xF4AC, 0xF373, + 0xF53D, 0xEF20, 0xF2B4, 0xF0FB, 0xF3A5, 0xF5C8, 0xF441, 0xEE53, + 0xF19C, 0xEF70, 0xF294, 0xF55E, 0xF3CF, 0xEC26, 0xF012, 0xF36D, + 0xF224, 0xF40B, 0xF65F, 0xF534, 0xEF36, 0xF25E, 0xF0AD, 0xF347, + 0xF56A, 0xF434, 0xEDF8, 0xF144, 0xF427, 0xF28E, 0xF502, 0xF6B3, + 0xEBCD, 0xF0D3, 0xF31E, 0xF17C, 0xF3FE, 0xF652, 0xF110, 0xEF4B, + 0xF2B0, 0xF4CA, 0xF2F1, 0xF55B, 0xEFEF, 0xF2E8, 0xF140, 0xF420, + 0xF61A, 0xF4F3, 0xEF73, 0xF278, 0xF12D, 0xF3B0, 0xF523, 0xF3F1, + 0xEDD9, 0xF16A, 0xF3E8, 0xF2AB, 0xF4BB, 0xF6B1, 0xEC90, 0xF0F3, + 0xF37C, 0xF23A, 0xF453, 0xF64B, 0xF18E, 0xEFCF, 0xF275, 0xF484, + 0xF3A9, 0xF5A8, 0xF11D, 0xF348, 0xF206, 0xF473, 0xF618, 0xF544, + 0xF414, 0xF60A, 0xF4E5, 0xEF94, 0xF22F, 0xF0E3, 0xF3AE, 0xF5AB, + 0xF47F, 0xEF7F, 0xF1C1, 0xF06F, 0xF2FB, 0xF547, 0xF3D7, 0xEE4C, + 0xF1B0, 0xF3CC, 0xF28F, 0xF4DF, 0xF36D, 0xEDD4, 0xF098, 0xF35F, + 0xF226, 0xF439, 0xF61A, 0xEC98, 0xF024, 0xF2F9, 0xF16C, 0xF3D3, + 0xEE05, 0xF10B, 0xF00D, 0xF28A, 0xF443, 0xF365, 0xED89, 0xF0F6, + 0xEF9E, 0xF27A, 0xF433, 0xF354, 0xED0A, 0xF087, 0xEE7A, 0xF16A, + 0xF3C9, 0xF2E6, 0xEBC7, 0xF00E, 0xF286, 0xF0FB, 0xF360, 0xF27F, + 0xEBB2, 0xEF55, 0xF276, 0xF0E9, 0xF350, 0xF536, 0xEB31, 0xEEDD, + 0xF209, 0xF075, 0xF2E1, 0xECA8, 0xF06E, 0xEE67, 0xF19C, 0xF3F0, + 0xF313, 0xEC2D, 0xF001, 0xEE50, 0xF188, 0xF38C, 0xF2AD, 0xEC18, + 0xEF8B, 0xEDD8, 0xF11F, 0xF324, 0xF240, 0xEB99, 0xEF77, 0xF239, + 0xF0B0, 0xF34F, 0xF22C, 0xEB82, 0xEF07, 0xF1CC, 0xF09B, 0xF2EB, + 0xED46, 0xEAF9, 0xEEF0, 0xF1B6, 0xF0CD, 0xF2D2, 0xED83, 0xF067, + 0xEF2D, 0xF151, 0xF38C, 0xF2AE, 0xED04, 0xF057, 0xEEB7, 0xF183, + 0xF3BB, 0xF2A0, 0xECEF, 0xF08B, 0xEE41, 0xF1B3, 0xF357, 0xF233, + 0xEC7B, 0xF01E, 0xF26C, 0xF148, 0xF385, 0xF265, 0xECB8, 0xEFAA, + 0xEE67, 0xF178, 0xF31C, 0xF295, 0xF46C, 0xF62D, 0xEEA0, 0xF10D, + 0xF34C, 0xF229, 0xF408, 0xF5C9, 0xEE30, 0xF13D, 0xF328, 0xF258, + 0xF436, 0xEFAC, 0xEE62, 0xF16F, 0xF358, 0xF236, 0xF414, 0xEFDE, + 0xEE9F, 0xF104, 0xF382, 0xF266, 0xECE6, 0xF010, 0xEED4, 0xF134, + 0xF360, 0xF296, 0xECD1, 0xF043, 0xEF0C, 0xF165, 0xF389, 0xEF03, + 0xED0E, 0xF07B, 0xF269, 0xF142, 0xF365, 0xEEDA, 0xED4B, 0xF051, + 0xF2D9, 0xF172, 0xF395, 0xEF17, 0xEDCF, 0xF089, 0xF2B7, 0xF1EB, + 0xEC6E, 0xEF47, 0xEE0A, 0xF0BB, 0xF2E3, 0xF1C9, 0xECA9, 0xEFC5, + 0xEE3C, 0xF12E, 0xF34F, 0xE889, 0xEC8B, 0xEFFB, 0xEEC0, 0xF108, + 0xF32D, 0xE8DC, 0xED75, 0xF074, 0xEEF9, 0xF138, 0xEB5E, 0xE9E7, + 0xED4A, 0xF052, 0xEF72, 0xF1AE, 0xECA3, 0xEA2D, 0xEE32, 0xF082, + 0xEF52, 0xF18C, 0xEC28, 0xEF8E, 0xEEAC, 0xF0F7, 0xEFC9, 0xE942, + 0xED62, 0xF00B, 0xEF2D, 0xF115, 0xF040, 0xE9E5, 0xEDE4, 0xF082, + 0xEF0D, 0xF18A, 0xEC92, 0xEA2B, 0xEE66, 0xF0F3, 0xEF84, 0xF1F6, + 0xED1F, 0xEB79, 0xEE46, 0xF0CD, 0xEFF9, 0xE940, 0xEDA1, 0xEC04, + 0xEEC6, 0xF188, 0xF070, 0xEA9E, 0xEE21, 0xEC91, 0xEF84, 0xF1F4, + 0xF095, 0xF2A1, 0xE96C, 0xED63, 0xEFF9, 0xEE88, 0xF148, 0xEC0A, + 0xEA5D, 0xEDE3, 0xF020, 0xEF47, 0xF126, 0xEC95, 0xEAF3, 0xEEAA, + 0xF0D6, 0xEFC4, 0xE97F, 0xED67, 0xEC82, 0xEED1, 0xF18B, 0xF07A, + 0xEB22, 0xEE33, 0xEC59, 0xEF8C, 0xF1A7, 0xE6A8, 0xEBAD, 0xEEF1, + 0xED29, 0xF045, 0xF256, 0xE87C, 0xEC86, 0xEF16, 0xEDF9, 0xF06A, + 0xEB28, 0xE974, 0xED9B, 0xEFD2, 0xEF03, 0xE8B6, 0xEC01, 0xEB15, + 0xEE60, 0xF0CF, 0xEFBD, 0xE9A3, 0xED1F, 0xEBEE, 0xEE85, 0xF0EB, + 0xE5D1, 0xEA90, 0xEDED, 0xED0C, 0xEF8D, 0xF15E, 0xE7B7, 0xEBB9, + 0xEEF5, 0xED31, 0xEFA9, 0xEB0D, 0xE906, 0xEC8C, 0xEF57, 0xEE3A, + 0xF0E3, 0xEC34, 0xEA41, 0xEDE6, 0xF053, 0xEF41, 0xE98E, 0xEC5B, + 0xEB71, 0xEE0D, 0xF0B2, 0xEFAB, 0xEABE, 0xEDBA, 0xEC8D, 0xEF58, + 0xF114, 0xE79B, 0xEBE3, 0xEEC0, 0xED9C, 0xEFB7, 0xEA90, 0xE93F, + 0xEC56, 0xEF22, 0xEE06, 0xF0AE, 0xEBB7, 0xEA78, 0xEDB5, 0xEFD8, + 0xEF4F, 0xEA13, 0xED14, 0xEBE9, 0xEE31, 0xF101, 0xEFF3, 0xEA91, + 0xEDCC, 0xECA4, 0xEFA5, 0xF19A, 0xE88D, 0xEC02, 0xEF15, 0xEDFC, + 0xF04D, 0xF231, 0xEA1B, 0xEDA2, 0xEFB7, 0xEEA9, 0xF0E7, 0xEC1B, + 0xEF64, 0xF15C, 0xECEB, 0xEBBF, 0xEED0, 0xEDB9, 0xF00B, 0xEB19, + 0xEDF7, 0xED68, 0xEFBE, 0xEEA8, 0xE92B, 0xECC9, 0xEB9C, 0xEE13, + 0xF09B, 0xE5F0, 0xE9F7, 0xEDC2, 0xEC56, 0xEF01, 0xF13A, 0xE7F9, + 0xEBFC, 0xEEB0, 0xED54, 0xEFE6, 0xEBA5, 0xEA26, 0xECFE, 0xEF98, + 0xEE5A, 0xE9C3, 0xECA9, 0xEB31, 0xEDF7, 0xED71, 0xE649, 0xEAD7, + 0xE8FD, 0xECD9, 0xEF26, 0xEEAB, 0xE89A, 0xEBF6, 0xEB5A, 0xEE13, + 0xF009, 0xE625, 0xEAFE, 0xED7C, 0xECA1, 0xEEB9, 0xEA0B, 0xE915, + 0xEC52, 0xEE68, 0xEDDC, 0xE813, 0xEBFA, 0xEA34, 0xED8A, 0xEC24, + 0xE467, 0xE9D6, 0xE83C, 0xEBD5, 0xEE76, 0xED65, 0xE786, 0xEB7B, + 0xE9C0, 0xED16, 0xEF4E, 0xE503, 0xE952, 0xED08, 0xEB61, 0xEE85, + 0xE8F5, 0xE760, 0xEAFE, 0xEDF2, 0xECDF, 0xE698, 0xEAA2, 0xEA13, + 0xECCF, 0xEBBD, 0xEE93, 0xE96E, 0xE7D2, 0xEB68, 0xEE02, 0xECB9, + 0xE773, 0xEACA, 0xE9E1, 0xEC99, 0xEF19, 0xE4F4, 0xE9D5, 0xEC8D, + 0xEBC4, 0xEE10, 0xE974, 0xE73B, 0xEB26, 0xEDC1, 0xECAC, 0xEF68, + 0xEAD0, 0xE99D, 0xEC9D, 0xEBDA, 0xEE1F, 0xE98F, 0xE7BF, 0xEB82, + 0xEDCF, 0xED03, 0xE760, 0xEB2A, 0xE9B8, 0xECF7, 0xEF27, 0xE5F4, + 0xE2FA, 0xE8CE, 0xEBDC, 0xEA32, 0xED9A, 0xEC91, 0xE61D, 0xEA14, + 0xE989, 0xEC44, 0xEEB3, 0xE402, 0xE933, 0xEBEC, 0xEACF, 0xEDAC, + 0xE8D4, 0xE6AA, 0xEAC3, 0xED56, 0xEC54, 0xE68C, 0xEAF6, 0xE9E2, + 0xEC34, 0xEBB4, 0xE580, 0xE939, 0xE76D, 0xEBA8, 0xEDDD, 0xE21D, + 0xE7A2, 0xEB52, 0xE9F4, 0xED15, 0xE7E2, 0xE6AA, 0xE99E, 0xECC1, + 0xEBB9, 0xE642, 0xE9CA, 0xE941, 0xEBA1, 0xEB1A, 0xED54, 0xE8E2, + 0xE76D, 0xEB0E, 0xED87, 0xEC89, 0xE70C, 0xEAB8, 0xE9A4, 0xEC7B, + 0xEB74, 0xE5A8, 0xE947, 0xE811, 0xEB23, 0xEDCD, 0xE3E8, 0xE8A2, + 0xEBD6, 0xEACA, 0xED02, 0xE890, 0xE70F, 0xEA74, 0xECF4, 0xEBF6, + 0xE6B2, 0xEA20, 0xE907, 0xEC1E, 0xEB5A, 0xE4FD, 0xE97B, 0xE8A1, + 0xEB4E, 0xED7B, 0xE3EC, 0xE84D, 0xEB42, 0xEA32, 0xED25, 0xEEF6, + 0xE6BC, 0xEA14, 0xECDA, 0xEC1D, 0xEDFE, 0xEA8F, 0xE981, 0xEBC8, + 0xEB0A, 0xEDAA, 0xE924, 0xE855, 0xEB73, 0xED5D, 0xECE1, 0xE7F8, + 0xEB67, 0xEAA3, 0xED0B, 0xEC8D, 0xE794, 0xEA4D, 0xECFD, 0xEC42, + 0xEE8B, 0xEAC1, 0xE9F2, 0xEBF3, 0xEB31, 0xED8E, 0xE99E, 0xE8D1, + 0xEB9A, 0xEDEE, 0xED3A, 0xE879, 0xEB8E, 0xEACA, 0xED2E, 0xEC73, + 0xEBB8, 0xEB3A, 0xED4D, 0xE37F, 0xE80F, 0xEAE6, 0xEA24, 0xEC8F, + 0xE88A, 0xE7B0, 0xEA94, 0xE903, 0xEC39, 0xE759, 0xE678, 0xE9BD, + 0xEC29, 0xEB6D, 0xE616, 0xEA2F, 0xE89C, 0xEBD4, 0xEA9D, 0xE5B4, + 0xE910, 0xE83A, 0xEB0F, 0xED1E, 0xE463, 0xE7E8, 0xEB33, 0xE9F9, + 0xE3FF, 0xE8A9, 0xE7D5, 0xEA63, 0xE99E, 0xE396, 0xE77A, 0xE69F, + 0xE994, 0xE8C9, 0xE22A, 0xE71D, 0xE55E, 0xE939, 0xEB6A, 0xE044, + 0xE631, 0xE9AB, 0xE85B, 0xEB57, 0xE6B5, 0xE4EB, 0xE8D4, 0xE802, + 0xEA89, 0xE576, 0xE489, 0xE87B, 0xEAB3, 0xEA37, 0xE47F, 0xE820, + 0xE79D, 0xEAA0, 0xE964, 0xE416, 0xE80F, 0xE669, 0xE9D4, 0xEC23, + 0xE2B7, 0xE6E2, 0xE658, 0xE97B, 0xEC10, 0xE146, 0xE6D1, 0xE9E9, + 0xE8A6, 0xEB4D, 0xE74A, 0xE59D, 0xE916, 0xE84D, 0xEAFB, 0xE665, + 0xE58C, 0xE8BD, 0xEB62, 0xEAA2, 0xE60C, 0xE92D, 0xE7E1, 0xEB0E, + 0xE687, 0xE519, 0xE8D4, 0xE78A, 0xEA46, 0xE59B, 0xE4B9, 0xE801, + 0xEB1F, 0xE9ED, 0xE53B, 0xE871, 0xE7A6, 0xEA5D, 0xE9DC, 0xE448, + 0xE81A, 0xE712, 0xEA04, 0xE90E, 0xE3E8, 0xE807, 0xE6B6, 0xE9F1, + 0xEBF5, 0xE2E5, 0xE72D, 0xEA1B, 0xE929, 0xEBA4, 0xE823, 0xE6D2, + 0xE575, 0xE8D0, 0xE851, 0xEAA9, 0xEA30, 0xE564, 0xE8BF, 0xE83E, + 0xEA58, 0xECC1, 0xE4FB, 0xE868, 0xE766, 0xEA47, 0xEC71, 0xE40A, + 0xE855, 0xEA6F, 0xE9F7, 0xE56A, 0xE87F, 0xE77D, 0xEA1F, 0xE9A0, + 0xE482, 0xE828, 0xE726, 0xEA0E, 0xE98D, 0xE41B, 0xE815, 0xE715, + 0xE9B5, 0xE93F, 0xE40C, 0xE7C0, 0xE6BE, 0xE9A4, 0xE51D, 0xE3AE, + 0xE7AD, 0xEA44, 0xE956, 0xE42E, 0xE39D, 0xE6D7, 0xE9EE, 0xE8FF, + 0xE4AE, 0xE7CD, 0xE745, 0xE99F, 0xE964, 0xE3BF, 0xE76F, 0xE6F0, + 0xE98C, 0xE4D0, 0xE3B0, 0xE763, 0xE6DF, 0xE937, 0xE472, 0xE349, + 0xE707, 0xE681, 0xE92B, 0xE45B, 0xE33A, 0xE6B2, 0xE9C4, 0xE94E, + 0xE3FC, 0xE2D5, 0xE720, 0xE976, 0xDE33, 0xE3ED, 0xE7C9, 0xE6CB, + 0xE997, 0xE57E, 0xE46D, 0xE774, 0xE6BA, 0xE984, 0xE526, 0xE408, + 0xE763, 0xE65C, 0xE932, 0xE515, 0xE3F7, 0xE70E, 0xE6CC, 0xE005, + 0xE4B9, 0xE39B, 0xE773, 0xE9EE, 0xDF99, 0xE4A8, 0xE81A, 0xE71E, + 0xE9A2, 0xDF83, 0xE4D4, 0xE7C5, 0xE70D, 0xE9FF, 0xE584, 0xE4C3, + 0xE7ED, 0xE737, 0xE1E3, 0xE5F9, 0xE4ED, 0xE7DC, 0xE758, 0xE180, + 0xE59D, 0xE491, 0xE7FD, 0xE74A, 0xE171, 0xE58C, 0xE508, 0xE7AA, + 0xE2D0, 0xE677, 0xE635, 0xE8C3, 0xE3DD, 0xE350, 0xE666, 0xE5E2, + 0xE8E6, 0xE410, 0xE2ED, 0xE704, 0xE940, 0xDFA6, 0xE43A, 0xE36B, + 0xE6B1, 0xE92D, 0xDF33, 0xE4AF, 0xE756, 0xE6D7, 0xE94E, 0xDFCA, + 0xE4D9, 0xE7F4, 0xE6FC, 0xE139, 0xE587, 0xE47F, 0xE815, 0xE6EB, + 0xE256, 0xE5B1, 0xE4F4, 0xE837, 0xE789, 0xE1F3, 0xE5DB, 0xE59B, + 0xE85E, 0xE340, 0xE271, 0xE5FC, 0xE548, 0xE87F, 0xE373, 0xE331, + 0xE626, 0xE569, 0xE8A0, 0xE3E8, 0xE2D0, 0xE650, 0xE593, 0xDFEC, + 0xE412, 0xE34C, 0xE6BC, 0xE638, 0xE021, 0xE4C0, 0xE378, 0xE6DD, + 0xE217, 0xE0AF, 0xE4EA, 0xE42D, 0xE737, 0xE24A, 0xE176, 0xE514, + 0xE80C, 0xE75F, 0xE276, 0xE236, 0xE5B9, 0xE82B, 0xDDFC, 0xE32B, + 0xE695, 0xE5E1, 0xE84C, 0xDEDE, 0xE35E, 0xE6BF, 0xE60B, 0xE8A6, + 0xE4CE, 0xE40C, 0xE719, 0xE665, 0xE115, 0xE573, 0xE4B8, 0xE738, + 0xE686, 0xE1DC, 0xE59B, 0xE4E2, 0xE792, 0xE6E0, 0xE206, 0xE5C1, + 0xE50A, 0xE7B3, 0xE3C8, 0xE2FD, 0xE61F, 0xE5DF, 0xE80D, 0xE474, + 0xE3B2, 0xE640, 0xE609, 0xE82C, 0xE49A, 0xE3DC, 0xE713, 0xE663, + 0xE17D, 0xE578, 0xE43D, 0xE76B, 0xE975, 0xE1E9, 0xE59B, 0xE4E3, + 0xE427, 0xE367, 0xE6A6, 0xE8BF, 0xE103, 0xE50A, 0xE3C8, 0xE6FD, + 0xE28F, 0xE1C8, 0xE52D, 0xE474, 0xE757, 0xE37D, 0xE2B4, 0xE58E, + 0xE54E, 0xDF17, 0xE3DE, 0xE2E5, 0xE661, 0xE5B1, 0xE075, 0xE408, + 0xE3C8, 0xE6B9, 0xE241, 0xE178, 0xE4E2, 0xE42B, 0xE70A, 0xE32B, + 0xE1A2, 0xE543, 0xE505, 0xDF24, 0xE395, 0xE295, 0xE59D, 0xE566, + 0xE0C0, 0xE3F6, 0xE37F, 0xE66E, 0xE1FA, 0xE0EA, 0xE4D0, 0xE3E2, + 0xE6F6, 0xE2E4, 0xE1E4, 0xE52B, 0xE4BA, 0xDF68, 0xE345, 0xE307, + 0xE602, 0xE54B, 0xE074, 0xE426, 0xE36F, 0xE65A, 0xDAEA, 0xE16E, + 0xE487, 0xE449, 0xE6E2, 0xDCD6, 0xE25F, 0xE58F, 0xE4E1, 0xDFB5, + 0xDED7, 0xE2F7, 0xE5E7, 0xE539, 0xE0B6, 0xDFE1, 0xE3D8, 0xE676, + 0xDCF2, 0xE1E7, 0xE0E2, 0xE470, 0xE6FE, 0xDE13, 0xE248, 0xE20A, + 0xE4CB, 0xE039, 0xDF64, 0xE367, 0xE2AB, 0xE5CE, 0xE171, 0xE065, + 0xE3FF, 0xE38A, 0xDD91, 0xE297, 0xE194, 0xE50E, 0xE422, 0xDF77, + 0xE2F8, 0xE2BA, 0xE594, 0xE0FB, 0xE0B6, 0xE43F, 0xE352, 0xE623, + 0xE221, 0xE1E3, 0xE4D4, 0xE466, 0xDEFA, 0xE33E, 0xE282, 0xE55F, + 0xE4F5, 0xE040, 0xE3D6, 0xE398, 0xE5E9, 0xE267, 0xE16D, 0xE463, + 0xE027, 0xDF14, 0xE2FF, 0xE2CA, 0xE598, 0xE192, 0xE091, 0xE44A, + 0xE360, 0xDE21, 0xE231, 0xE1B5, 0xE4D7, 0xE49E, 0xDF65, 0xE37C, + 0xE28B, 0xE594, 0xDBF8, 0xE0D9, 0xDFD8, 0xE3D4, 0xE61A, 0xDD5C, + 0xE1B6, 0xE141, 0xE466, 0xDFFD, 0xDEEE, 0xE308, 0xE217, 0xDC5B, + 0xE15F, 0xE05E, 0xE39C, 0xE360, 0xDDFB, 0xE23A, 0xE1C0, 0xE460, + 0xE083, 0xDF7D, 0xE2D0, 0xE294, 0xE524, 0xE160, 0xE0ED, 0xE447, + 0xE35F, 0xDE93, 0xDE10, 0xE1C1, 0xE505, 0xDA79, 0xE00A, 0xDFCE, + 0xE346, 0xE5BD, 0xDD1A, 0xE1A8, 0xE0A9, 0xE40A, 0xDF29, 0xDEE6, + 0xE27C, 0xE23E, 0xE4CC, 0xE0CE, 0xE092, 0xE345, 0xE309, 0xDDFE, + 0xE25A, 0xE16D, 0xE43E, 0xE3CB, 0xDFB1, 0xE35C, 0xE2F0, 0xE528, + 0xDC7E, 0xE14D, 0xE41E, 0xE3E9, 0xDF9A, 0xDE51, 0xE256, 0xE50E, + 0xE4D9, 0xE07C, 0xE039, 0xE31F, 0xE2EA, 0xDDA0, 0xE18C, 0xE150, + 0xE416, 0xE3E1, 0xDF5A, 0xE33D, 0xE251, 0xE53B, 0xE1A8, 0xE130, + 0xE432, 0xE34E, 0xDF81, 0xE2A8, 0xE237, 0xE4AF, 0xE445, 0xE096, + 0xE39F, 0xE36C, 0xE594, 0xDE1A, 0xE1A4, 0xE4C4, 0xE45A, 0xE6A9, + 0xDF7D, 0xE381, 0xE268, 0xE576, 0xE1BC, 0xE14A, 0xE3CE, 0xE399, + 0xE32A, 0xE2F5, 0xE552, 0xDD92, 0xE1D9, 0xE0B0, 0xE418, 0xDFFE, + 0xDFC2, 0xE30A, 0xE1F3, 0xDDB9, 0xE146, 0xE0CE, 0xE38E, 0xDA11, + 0xDEE5, 0xE279, 0xE246, 0xE4A9, 0xDC8D, 0xE128, 0xDFF3, 0xE36E, + 0xDF41, 0xDEC2, 0xE25B, 0xE13D, 0xDCB4, 0xE089, 0xE01A, 0xE2DD, + 0xD88F, 0xDE23, 0xDDE0, 0xE18E, 0xE433, 0xDB73, 0xE06D, 0xDF38, + 0xE2F4, 0xDE7F, 0xDE00, 0xE1E1, 0xE1A7, 0xDBE6, 0xE00A, 0xDF94, + 0xE298, 0xE229, 0xDE63, 0xDD19, 0xE10F, 0xE3EC, 0xDBC5, 0xDFEE, + 0xDFB4, 0xE2AF, 0xDDBF, 0xDD7C, 0xE19E, 0xE12F, 0xDB11, 0xDF8D, + 0xDF15, 0xE253, 0xE1E4, 0xDDDF, 0xDD62, 0xE0CC, 0xE05D, 0xDAF7, + 0xDFA4, 0xDF2E, 0xE26A, 0xDE77, 0xDCF3, 0xE152, 0xE0E3, 0xDBA6, + 0xDB1B, 0xDFC4, 0xE210, 0xE1D6, 0xDD99, 0xDD13, 0xE089, 0xE048, + 0xDBC8, 0xDF63, 0xDEED, 0xE254, 0xDE2F, 0xDDB9, 0xE144, 0xE0D5, + 0xDB18, 0xDAD7, 0xDFB8, 0xE22E, 0xE1C6, 0xDE8B, 0xDCCD, 0xE0B0, + 0xE03A, 0xDB84, 0xDF57, 0xDF16, 0xE278, 0xDE23, 0xDDAF, 0xE16B, + 0xE0FC, 0xE38E, 0xDBE9, 0xDFDF, 0xDF6B, 0xE219, 0xDE7F, 0xDE04, + 0xE0D7, 0xE09D, 0xDB7C, 0xDFBA, 0xDF46, 0xE2FE, 0xDE55, 0xDDDF, + 0xDD64, 0xE18B, 0xE11C, 0xE3A3, 0xE33D, 0xDFCC, 0xDF58, 0xE237, + 0xE4D6, 0xDDFA, 0xE0F7, 0xE08A, 0xE377, 0xDFEA, 0xDF7D, 0xE288, + 0xE283, 0xDE90, 0xDE13, 0xE1A9, 0xE13C, 0xDC15, 0xE097, 0xE02A, + 0xE2F0, 0xD9FB, 0xDED5, 0xE1EC, 0xE17F, 0xDD69, 0xDCEE, 0xE038, + 0xDFDB, 0xE2C4, 0xDF60, 0xDF28, 0xE1CE, 0xE196, 0xDE3B, 0xDDC0, + 0xE126, 0xE0B9, 0xDC4F, 0xDFD8, 0xDF6D, 0xE269, 0xDE85, 0xDDD7, + 0xE167, 0xE0FA, 0xDC5F, 0xDBE4, 0xDFAE, 0xDF51, 0xDA16, 0xDED8, + 0xDED3, 0xE13B, 0xD783, 0xDDAC, 0xDCF7, 0xE09A, 0xDBFA, 0xDB7A, + 0xDF50, 0xDEDC, 0xE1BA, 0xDDF6, 0xDD7B, 0xE143, 0xE0DD, 0xDBD2, + 0xDB0F, 0xDF59, 0xDEEE, 0xD935, 0xDE83, 0xDE4B, 0xE14A, 0xD647, + 0xDD59, 0xE01E, 0xE019, 0xDBAB, 0xDAE8, 0xDF68, 0xDEFD, 0xD90E, + 0xDDDD, 0xDD64, 0xE0C0, 0xD5D3, 0xDC05, 0xDBC6, 0xDFAB, 0xDB41, + 0xDB00, 0xDE30, 0xDE2B, 0xE160, 0xDDEE, 0xDD7C, 0xE059, 0xDFE7, + 0xDB94, 0xDB14, 0xDF1A, 0xDF15, 0xD8FB, 0xDE6B, 0xDDBF, 0xE0C8, + 0xD5CB, 0xDC31, 0xDBF0, 0xDFF6, 0xDBA5, 0xDB66, 0xDEE1, 0xDE3E, + 0xD95D, 0xDD9B, 0xDD63, 0xE071, 0xD5EE, 0xDCA6, 0xDBF3, 0xDF91, + 0xDEEC, 0xE234, 0xD981, 0xDE4D, 0xDE48, 0xE0D9, 0xDD2C, 0xDC79, + 0xE06B, 0xDFC8, 0xDB92, 0xDB8D, 0xDEFD, 0xDEF6, 0xD9CE, 0xDE14, + 0xDD6A, 0xE10B, 0xDD03, 0xDCC4, 0xDFA9, 0xDFA4, 0xDB95, 0xDADD, + 0xDF62, 0xDE8C, 0xD9A7, 0xDDB8, 0xDDB3, 0xE0D0, 0xD77A, 0xDCC5, + 0xDC14, 0xDFD6, 0xDB6C, 0xDB2F, 0xDE92, 0xDE6A, 0xD9EB, 0xD8E6, + 0xDE28, 0xDDB6, 0xD79B, 0xDC6B, 0xDC2C, 0xE008, 0xD4E9, 0xDBAB, + 0xDABB, 0xDE9C, 0xD9C4, 0xD987, 0xDDEF, 0xDD1B, 0xD830, 0xDCE0, + 0xDCDB, 0xE007, 0xD562, 0xDAFB, 0xDACC, 0xDECE, 0xDAC9, 0xDA85, + 0xDDB8, 0xDD56, 0xE074, 0xD806, 0xDD14, 0xDCD7, 0xE003, 0xDB8E, + 0xDB89, 0xDF09, 0xDF04, 0xDA8F, 0xD967, 0xDDC9, 0xDD8C, 0xD919, + 0xDD89, 0xDD12, 0xE035, 0xD672, 0xDC03, 0xDBFE, 0xDF36, 0xDA92, + 0xDA2B, 0xDDFD, 0xDDFF, 0xDA1C, 0xDDBB, 0xDDBD, 0xE02E, 0xD7E0, + 0xDC78, 0xDC39, 0xDF35, 0xDB85, 0xDAE6, 0xDEF5, 0xDE23, 0xDA9F, + 0xDA59, 0xDDF1, 0xDDEA, 0xD8AB, 0xDCB1, 0xDCAC, 0xE01F, 0xD696, + 0xDC34, 0xDB23, 0xDF29, 0xDB19, 0xDB14, 0xDE2A, 0xDDED, 0xD974, + 0xD96F, 0xDD42, 0xDCE2, 0xD776, 0xDCA7, 0xDCA2, 0xDF21, 0xD578, + 0xDF1E, 0xDB51, 0xDB4C, 0xDE21, 0xDE1C, 0xD9ED, 0xDDE1, 0xDDDA, + 0xE015, 0xD83C, 0xDCD6, 0xDCD1, 0xDFD5, 0xDBC4, 0xDB8E, 0xDEDF, + 0xDEDA, 0xDB7F, 0xDA33, 0xDDDD, 0xDDDF, 0xDA24, 0xDA1F, 0xDDCE, + 0xDCD6, 0xD8BB, 0xDCCC, 0xDCC7, 0xDF96, 0xD6F7, 0xDBBC, 0xDB7F, + 0xDECC, 0xDB75, 0xDA61, 0xDDD1, 0xDDCF, 0xDA59, 0xDA1C, 0xDD93, + 0xDCCA, 0xD8F2, 0xDCC0, 0xDCBB, 0xDF59, 0xD774, 0xDBB2, 0xDBAD, + 0xDE8F, 0xDB6B, 0xDA96, 0xDE4F, 0xDE4A, 0xDA51, 0xDA4C, 0xDD87, + 0xDD82, 0xD927, 0xD922, 0xDC79, 0xDC7B, 0xD7B4, 0xDC71, 0xDBA3, + 0xD62F, 0xD62A, 0xDB5C, 0xDB5E, 0xD48B, 0xDA86, 0xDA42, 0xDE05, + 0xD274, 0xD95E, 0xD921, 0xDD36, 0xD919, 0xD914, 0xDC67, 0xDC62, + 0xD7EA, 0xD7E5, 0xDB5B, 0xDB56, 0xD664, 0xDB4C, 0xDB47, 0xDDF5, + 0xD4C9, 0xDA32, 0xDA2D, 0xDDB4, 0xD94E, 0xD913, 0xD90E, 0xDCE7, + 0xD904, 0xD81C, 0xDC18, 0xDC13, 0xD7D7, 0xD6A4, 0xDBD3, 0xDB07, + 0xD697, 0xDAFD, 0xDAFA, 0xDE32, 0xD549, 0xDA1D, 0xDA18, 0xDD65, + 0xD9D8, 0xD8FE, 0xDD2C, 0xDC98, 0xD8F1, 0xD8EC, 0xDC5A, 0xDC55, + 0xD7C4, 0xDBC1, 0xDB86, 0xDE78, 0xD68D, 0xDB7E, 0xDAAD, 0xDDB2, + 0xD53F, 0xDAA5, 0xDAA0, 0xDDA5, 0xD3E7, 0xD9C5, 0xD9C0, 0xDCD8, + 0xD8DC, 0xD8A1, 0xDC9A, 0xDC0D, 0xD894, 0xD7AE, 0xDBFE, 0xDBF9, + 0xD7A6, 0xD7A1, 0xDB2C, 0xDB27, 0xD66F, 0xDAE7, 0xDA55, 0xDDAF, + 0xD569, 0xDA46, 0xDA0B, 0xDD1A, 0xD96B, 0xD968, 0xDCDC, 0xDCD7, + 0xD923, 0xD881, 0xDC40, 0xD12B, 0xD837, 0xD839, 0xDBFD, 0xD750, + 0xD74B, 0xDB66, 0xDB63, 0xD73E, 0xD653, 0xDA8F, 0xDA8A, 0xD646, + 0xDA87, 0xDA84, 0xDA49, 0xD503, 0xD9AB, 0xD9A6, 0xDCD9, 0xD3F1, + 0xD961, 0xD8C1, 0xDCCC, 0xD8BE, 0xD8BB, 0xDC35, 0xDC01, 0xD7D4, + 0xD7CF, 0xDB65, 0xD7CE, 0xD7C9, 0xD6E0, 0xDB5A, 0xD6DD, 0xD6D8, + 0xDA88, 0xDA8A, 0xD5E0, 0xD5E2, 0xDA7B, 0xDA76, 0xD4E3, 0xD9E1, + 0xD9A6, 0xDCCE, 0xD4D1, 0xD997, 0xD994, 0xDC8B, 0xD37D, 0xD8F1, + 0xD8B8, 0xDC7E, 0xD8AE, 0xD8A9, 0xDBEB, 0xDBEB, 0xD801, 0xD7C8, + 0xDBA8, 0xD7BE, 0xD719, 0xDB13, 0xDB10, 0xD713, 0xD70E, 0xDB08, + 0xDA76, 0xD61D, 0xD618, 0xDA33, 0xDA2E, 0xD612, 0xDA2B, 0xDA26, + 0xDCD7, 0xD517, 0xDA20, 0xD987, 0xDCCC, 0xD949, 0xD944, 0xDC37, + 0xDC32, 0xD93E, 0xD8A0, 0xDBFD, 0xDBF8, 0xD891, 0xD893, 0xDBE9, + 0xDBEB, 0xDBE6, 0xD7AD, 0xD7A8, 0xDB53, 0xDB4E, 0xD7A2, 0xDB17, + 0xDB12, 0xDB0D, 0xD6F7, 0xDB0A, 0xDB05, 0xDD69, 0xD6A8, 0xDA6D, + 0xDA68, 0xD6A2, 0xD69D, 0xDA2A, 0xDA27, 0xD5AE, 0xDA24, 0xDA1F, + 0xDC96, 0xD5A3, 0xD980, 0xD982, 0xDC89, 0xD4E7, 0xD93F, 0xD93A, + 0xD49D, 0xD937, 0xD932, 0xD92F, 0xD3E1, 0xD925, 0xD927, 0xDBFF, + 0xD3CF, 0xD888, 0xD883, 0xDBF2, 0xD845, 0xD842, 0xD83D, 0xDB5C, + 0xD833, 0xD835, 0xDB54, 0xD2AD, 0xD828, 0xD78C, 0xDB13, 0xD19A, + 0xD786, 0xD746, 0xDB08, 0xD73C, 0xD73E, 0xDACC, 0xDAC7, 0xD731, + 0xD72C, 0xDABF, 0xCF87, 0xD688, 0xD685, 0xDA22, 0xD67B, 0xD63B, + 0xD63F, 0xDA17, 0xD635, 0xD630, 0xD9DB, 0xD9D6, 0xD62A, 0xD625, + 0xD9D0, 0xD57A, 0xD575, 0xD577, 0xD98F, 0xD56F, 0xD52F, 0xD982, + 0xD984, 0xD5CC, 0xD5C7, 0xD975, 0xD972, 0xD517, 0xD514, 0xD936, + 0xD511, 0xD4CC, 0xD92E, 0xD92B, 0xD4C4, 0xD4C1, 0xD91C, 0xD8E5, + 0xD4B4, 0xD4B6, 0xD8DD, 0xD8D8, 0xD46E, 0xD46B, 0xD8D2, 0xD8CD, + 0xD45E, 0xD891, 0xD893, 0xD456, 0xD453, 0xD884, 0xD881, 0xD44D, + 0xD399, 0xD879, 0xD840, 0xD3FB, 0xD838, 0xD83A, 0xDB33, 0xD3F0, + 0xD3EB, 0xD828, 0xD82A, 0xD3E5, 0xD3A0, 0xD877, 0xD879, 0xD39A, + 0xD7DC, 0xD7DE, 0xDB2F, 0xD38A, 0xD832, 0xD82D, 0xD382, 0xD37F, + 0xD820, 0xD7E7, 0xD339, 0xD3E3, 0xD7E1, 0xD7DC, 0xD327, 0xD7D9, + 0xD7D6, 0xDAF1, 0xD38B, 0xD828, 0xD825, 0xD385, 0xD380, 0xD7E4, + 0xD7DF, 0xD373, 0xD370, 0xD7D7, 0xD7D4, 0xD3D7, 0xD82B, 0xD826, + 0xD322, 0xD31F, 0xD7EC, 0xD7E9, 0xD37F, 0xD381, 0xD7DA, 0xD7DC, + 0xD374, 0xD371, 0xD829, 0xD82B, 0xD3D8, 0xD7EF, 0xD7EA, 0xD3CB, + 0xD3C6, 0xD7E4, 0xD839, 0xD428, 0xD37D, 0xD833, 0xD82E, 0xD3E4, + 0xD3DF, 0xD7ED, 0xD3D7, 0xD43F, 0xD841, 0xD83C, 0xD432, 0xD42F, + 0xD88E, 0xD88B, 0xD48F, 0xD48A, 0xD851, 0xD489, 0xD4EA, 0xD4E5, + 0xD89E, 0xD43E, 0xD49F, 0xD891, 0xD85A, 0xD499, 0xD496, 0xD8AC, + 0xD8A7, 0xD4F4, 0xD4F1, 0xD8FB, 0xD54D, 0xD54A, 0xD545, 0xD8B5, + 0xD50B, 0xD506, 0xD907, 0xD904, 0xD55F, 0xD55A, 0xD8CA, 0xCFA3, + 0xD5B3, 0xD5B0, 0xD910, 0xD60C, 0xD609, 0xD56C, 0xD905, 0xD5C8, + 0xD5C5, 0xD91E, 0xD973, 0xD61E, 0xD619, 0xD96B, 0xD156, 0xD672, + 0xD634, 0xD97F, 0xD1BF, 0xD68D, 0xD688, 0xD99A, 0xD6DF, 0xD6DA, + 0xD6D5, 0xD6D7, 0xD9DD, 0xD2E9, 0xD6F0, 0xD6F4, 0xD9F8, 0xD2A0, + 0xD744, 0xD799, 0xD305, 0xD737, 0xD75A, 0xD75C, 0xD3C6, 0xD7AC, + 0xD7A7, 0xD801, 0xD41F, 0xD7A1, 0xD7C2, 0xD3E0, 0xD441, 0xD814, + 0xD80F, 0xD49A, 0xD495, 0xD82D, 0xD4F1, 0xD4F3, 0xD4F0, 0xD875, + 0xD4AF, 0xD510, 0xD50B, 0xD890, 0xD567, 0xD5C1, 0xD8D9, 0xD06D, + 0xD582, 0xD57F, 0xD945, 0xD146, 0xD633, 0xD630, 0xD216, 0xD211, + 0xD64E, 0xD64B, 0xD20B, 0xD233, 0xD6FA, 0xD698, 0xD298, 0xD2FE, + 0xD70E, 0xD361, 0xD35C, 0xD760, 0xD703, 0xD34F, 0xD377, 0xD779, + 0xCD1E, 0xD439, 0xD436, 0xD794, 0xCE16, 0xD454, 0xD456, 0xD7E1, + 0xCF7C, 0xD50C, 0xD564, 0xCFE6, 0xD05A, 0xD527, 0xD586, 0xD134, + 0xD5DB, 0xD5D8, 0xD5A1, 0xD156, 0xD5F6, 0xD650, 0xD224, 0xD21F, + 0xD611, 0xD669, 0xD284, 0xD27F, 0xD6BB, 0xCBEB, 0xD36C, 0xD367, + 0xD72C, 0xD366, 0xD387, 0xD389, 0xD79D, 0xD447, 0xD444, 0xD43F, + 0xCF4C, 0xD462, 0xD4C1, 0xD7D1, 0xCFEA, 0xD4E1, 0xD539, 0xD12B, + 0xD128, 0xD589, 0xD58B, 0xD14D, 0xD1BA, 0xD601, 0xD5FE, 0xD216, + 0xD23E, 0xD679, 0xD308, 0xD367, 0xD300, 0xD6EA, 0xD323, 0xD382, + 0xD3E1, 0xD754, 0xCE73, 0xD406, 0xD45E, 0xD7C5, 0xCFC9, 0xD47C, + 0xD4DB, 0xD05E, 0xD0C9, 0xD4FB, 0xD553, 0xD12C, 0xD0EB, 0xD571, + 0xD223, 0xD21E, 0xD21B, 0xD5E2, 0xD2A7, 0xD304, 0xD306, 0xD6AE, + 0xD329, 0xD388, 0xD6CC, 0xCECC, 0xD408, 0xD460, 0xD78C, 0xCF6A, + 0xD480, 0xD4DD, 0xD040, 0xD03D, 0xD553, 0xD555, 0xD139, 0xD136, + 0xD5C9, 0xCA0E, 0xD224, 0xD226, 0xD5E4, 0xD2AB, 0xD2A8, 0xD2AA, + 0xCDD3, 0xD391, 0xD32A, 0xD3B2, 0xCE6F, 0xD40C, 0xD3D2, 0xD48A, + 0xCFEC, 0xD482, 0xD4FE, 0xD04F, 0xD0E3, 0xD579, 0xD574, 0xD171, + 0xD235, 0xD594, 0xCC23, 0xD2BC, 0xD2B9, 0xD627, 0xCDC4, 0xD339, + 0xD33B, 0xCED8, 0xCF41, 0xD3B4, 0xD437, 0xCFD9, 0xCFD6, 0xD4B0, + 0xD0D3, 0xD0D0, 0xD529, 0xD526, 0xD15C, 0xD182, 0xD568, 0xD5C0, + 0xD269, 0xD2CD, 0xD632, 0xCD3B, 0xD34D, 0xD348, 0xD6C7, 0xCF60, + 0xD3EC, 0xD444, 0xD05F, 0xD05A, 0xD462, 0xD4E3, 0xD0E6, 0xD113, + 0xD557, 0xD172, 0xD261, 0xD25C, 0xD5EA, 0xD2DF, 0xD2DC, 0xD362, + 0xCE4C, 0xD385, 0xD382, 0xD37D, 0xCFE9, 0xD3FB, 0xD47C, 0xD77B, + 0xD077, 0xD4EE, 0xD568, 0xD1F5, 0xD1F0, 0xD586, 0xD583, 0xD270, + 0xD2F6, 0xD291, 0xD616, 0xD689, 0xD395, 0xD397, 0xD6A7, 0xD009, + 0xD48D, 0xD48A, 0xD4B0, 0xD0F7, 0xD527, 0xD522, 0xD20C, 0xD207, + 0xD5B8, 0xD5B5, 0xD2B0, 0xD2AD, 0xD64B, 0xCED9, 0xD3AF, 0xD3AA, + 0xD6D7, 0xD001, 0xD447, 0xD449, 0xD11B, 0xD118, 0xD4DF, 0xD559, + 0xD226, 0xD2AC, 0xD577, 0xCDCD, 0xD2CA, 0xD349, 0xD679, 0xCF01, + 0xD3C2, 0xD3E8, 0xD022, 0xD0B4, 0xD4D7, 0xCAEE, 0xD137, 0xD1BD, + 0xD56F, 0xCCBE, 0xD2C4, 0xD266, 0xCE6D, 0xCF04, 0xD361, 0xD3E0, + 0xCF8E, 0xD020, 0xD3FE, 0xCA3A, 0xD138, 0xD135, 0xD50C, 0xCCC1, + 0xD1DC, 0xD260, 0xCD5E, 0xCE6B, 0xD302, 0xD304, 0xCF8F, 0xCFBC, + 0xD39F, 0xD049, 0xD0D4, 0xD0CF, 0xD4B2, 0xD1E0, 0xD17D, 0xD201, + 0xCD66, 0xD27D, 0xD2A3, 0xD29E, 0xCF2D, 0xCF28, 0xD3C2, 0xD043, + 0xD0CE, 0xD06B, 0xCB80, 0xD17A, 0xD177, 0xD1FB, 0xCD69, 0xD21E, + 0xD2A2, 0xCE99, 0xCF29, 0xD33B, 0xD361, 0xCFE1, 0xD06A, 0xD3FC, + 0xCB8A, 0xD116, 0xD19C, 0xD508, 0xCD6C, 0xD241, 0xD2C0, 0xCE9A, + 0xCEC7, 0xD35E, 0xD37F, 0xCFE2, 0xD06D, 0xD418, 0xCB8F, 0xD117, + 0xD13D, 0xD4D0, 0xCD76, 0xD264, 0xD2E3, 0xCEC6, 0xCF56, 0xD323, + 0xD3A0, 0xD00C, 0xD097, 0xD0BB, 0xD45A, 0xCCDE, 0xD162, 0xD1E4, + 0xCDA2, 0xCE3C, 0xD284, 0xD2AA, 0xCEF4, 0xCF82, 0xD3BE, 0xD031, + 0xD0BA, 0xD0E0, 0xCCE6, 0xCCE8, 0xD185, 0xD209, 0xCE3D, 0xCED2, + 0xD2C9, 0xCF86, 0xCFB1, 0xD03A, 0xD403, 0xCBB1, 0xD166, 0xD105, + 0xCD1E, 0xCDB3, 0xD22F, 0xCE73, 0xCF01, 0xCF8F, 0xD367, 0xC9C2, + 0xD039, 0xD0E6, 0xCC5D, 0xCC5F, 0xD189, 0xD1AF, 0xCDB9, 0xCE75, + 0xD276, 0xCF30, 0xCFB7, 0xCFDD, 0xD3AC, 0xCB25, 0xD10C, 0xD132, + 0xCD2D, 0xCDC7, 0xD1D5, 0xCE80, 0xCEAB, 0xCF32, 0xD336, 0xCA5A, + 0xD00A, 0xD093, 0xCC73, 0xCCA3, 0xD158, 0xD17E, 0xCDF6, 0xCE89, + 0xD29C, 0xCF3B, 0xCFED, 0xD011, 0xCB45, 0xCBE4, 0xD0DD, 0xD15F, + 0xCD41, 0xCE02, 0xD224, 0xCEB6, 0xCEE1, 0xCF68, 0xD303, 0xCAAC, + 0xD0BE, 0xD0E4, 0xCCB5, 0xCD4F, 0xD1A9, 0xD1CD, 0xCEC2, 0xCEE8, + 0xD306, 0xCA8F, 0xD043, 0xD040, 0xCBFD, 0xCCC3, 0xD133, 0xD1AE, + 0xCE3D, 0xCE38, 0xD295, 0xCF18, 0xCF9F, 0xCFC5, 0xD36D, 0xCC0B, + 0xD0B8, 0xD138, 0xCD8F, 0xCE44, 0xD21F, 0xCEFB, 0xCF1F, 0xCFCF, + 0xD2FE, 0xCC1C, 0xD099, 0xD0BD, 0xCD99, 0xCDC4, 0xD224, 0xD248, + 0xD267, 0xCF4F, 0xCFFD, 0xD31E, 0xD344, 0xD0C7, 0xD0ED, 0xD418, + 0xCDCD, 0xD24B, 0xD26F, 0xCF59, 0xCF7D, 0xD2D1, 0xD347, 0xD04E, + 0xD0F0, 0xD41B, 0xCDD7, 0xD1D5, 0xD1FB, 0xCF63, 0xCF89, 0xD2DB, + 0xD371, 0xD07A, 0xD09E, 0xD11E, 0xCD59, 0xCE0C, 0xD1FE, 0xCEE5, + 0xCF93, 0xCFB7, 0xD31F, 0xCC7E, 0xD0A8, 0xD14A, 0xCD8C, 0xCE18, + 0xD22A, 0xC95B, 0xCF13, 0xCFC1, 0xD327, 0xCC8F, 0xD0AB, 0xD0F8, + 0xCD96, 0xCE50, 0xD1DD, 0xC973, 0xCF46, 0xCFED, 0xD2D5, 0xCC07, + 0xD0DE, 0xD0FB, 0xCDA7, 0xCDCD, 0xD202, 0xC9B9, 0xCF77, 0xD020, + 0xCC16, 0xCCD3, 0xD108, 0xD127, 0xCDDA, 0xCE8D, 0xCEB1, 0xCA71, + 0xCF83, 0xCFCE, 0xCC27, 0xCC52, 0xCD36, 0xD153, 0xCE12, 0xCEC0, + 0xCEE4, 0xCB49, 0xCB79, 0xCFFA, 0xCC61, 0xCD17, 0xCD42, 0xD1A6, + 0xC99A, 0xCEF1, 0xCF15, 0xCAC1, 0xCC45, 0xD02B, 0xC619, 0xCD51, + 0xCE29, 0xD154, 0xC9E0, 0xCF24, 0xCF6F, 0xCB99, 0xCC84, 0xD079, + 0xC72B, 0xCDB0, 0xCE5C, 0xCE85, 0xCABD, 0xCF77, 0xCF9B, 0xCC93, + 0xCCB7, 0xCD94, 0xC82C, 0xCDE3, 0xCEB6, 0xCEDF, 0xCAFC, 0xCBE5, + 0xCFEE, 0xCCCB, 0xCD1B, 0xCDCC, 0xC91A, 0xCA19, 0xCEE7, 0xCF32, + 0xCBF9, 0xCCDD, 0xD041, 0xD103, 0xCE02, 0xCE26, 0xCEF9, 0xCB22, + 0xCF68, 0xD006, 0xCC5A, 0xCD37, 0xCD60, 0xD154, 0xCE5C, 0xCF28, + 0xCF4C, 0xCB88, 0xCC45, 0xD07B, 0xC77C, 0xCD96, 0xCDBF, 0xCA57, + 0xCA87, 0xCF7B, 0xCFC6, 0xCC80, 0xCCA4, 0xD0CE, 0xC8A2, 0xCE9D, + 0xCEC1, 0xCAC2, 0xCBB0, 0xCFF5, 0xD019, 0xCD06, 0xCDB5, 0xCE00, + 0xC9E8, 0xCAA8, 0xCF3B, 0xCBE6, 0xCCC8, 0xCCEC, 0xC8A8, 0xC9A0, + 0xCE36, 0xCE81, 0xCB16, 0xCBF8, 0xCFB3, 0xC6D3, 0xCD4E, 0xCE1D, + 0xC9E7, 0xCAD3, 0xCF56, 0xCFA1, 0xCC33, 0xCC83, 0xD0C9, 0xC903, + 0xCDCD, 0xCE9C, 0xCB15, 0xCB65, 0xCC45, 0xC6D9, 0xCD6B, 0xCD94, + 0xCDDF, 0xCA3B, 0xCB27, 0xCF3D, 0xCC57, 0xCCA7, 0xCCF7, 0xC902, + 0xCA24, 0xCE3A, 0xCF26, 0xCB89, 0xCC90, 0xCFD7, 0xC819, 0xCD54, + 0xCE23, 0xCA92, 0xCABB, 0xCF7A, 0xC613, 0xCCF2, 0xCD3B, 0xCD64, + 0xC9BA, 0xCE79, 0xCEC2, 0xCBD9, 0xCC29, 0xCC79, 0xC87C, 0xC977, + 0xCE8C, 0xCEB0, 0xCB0D, 0xCC12, 0xCF83, 0xC867, 0xCD86, 0xCDCF, + 0xCA11, 0xCAF6, 0xCF26, 0xC63C, 0xCCA0, 0xCCC2, 0xD0D7, 0xC9FA, + 0xCE4C, 0xCE95, 0xCB84, 0xCC89, 0xCFE7, 0xC8C3, 0xCD44, 0xCE3A, + 0xCA63, 0xCB72, 0xCF10, 0xC782, 0xCD0B, 0xCD59, 0xCA23, 0xCA78, + 0xCED7, 0xC545, 0xCBF9, 0xCC49, 0xCD42, 0xC94D, 0xCA66, 0xCE1F, + 0xCBC0, 0xCC0E, 0xCC5E, 0xC816, 0xC936, 0xCDEB, 0xC2B3, 0xCAF4, + 0xCC25, 0xCFA4, 0xC82D, 0xCD05, 0xCDF9, 0xC9FA, 0xCB09, 0xCECF, + 0xC6E7, 0xCCA5, 0xCCF5, 0xC990, 0xC9EA, 0xCB1E, 0xCEDF, 0xCBBC, + 0xCC0C, 0xCD03, 0xC8E6, 0xC9FF, 0xCE05, 0xC5B0, 0xCBD1, 0xCC21, + 0xC8A8, 0xC902, 0xCDD1, 0xCE15, 0xCAB9, 0xCBE6, 0xCC2F, 0xC893, + 0xCCF4, 0xCDDF, 0xCA7E, 0xCAFA, 0xCBF6, 0xC785, 0xC7E4, 0xCD02, + 0xC988, 0xCABA, 0xCB0F, 0xCF0A, 0xC7A1, 0xCCC9, 0xCD12, 0xC99D, + 0xCACF, 0xCE12, 0xC658, 0xCBE7, 0xCD03, 0xC95F, 0xC9B2, 0xCDFE, + 0xCE47, 0xCBAE, 0xCBF5, 0xCC6A, 0xC8B7, 0xC9F3, 0xCE33, 0xCAC0, + 0xCBE8, 0xCC31, 0xC872, 0xC8CC, 0xCD36, 0xCE68, 0xCAD0, 0xCC1D, + 0xCF57, 0xC8BA, 0xCD22, 0xCD90, 0xCAC3, 0xCB11, 0xCB84, 0xC87C, + 0xCD0E, 0xCD57, 0xCDC5, 0xCAFD, 0xCB4B, 0xCEE0, 0xC8BD, 0xCD4A, + 0xCDB1, 0xC9E7, 0xCB39, 0xCECC, 0xC78C, 0xCC68, 0xCCDB, 0xD01D, + 0xCA4D, 0xCEB8, 0xCF01, 0xCC5B, 0xCCA2, 0xCD10, 0xCA11, 0xCDE7, + 0xCB01, 0xCC47, 0xCC90, 0xC89C, 0xCD6C, 0xCDD3, 0xCAEF, 0xCB3D, + 0xCBB0, 0xC88A, 0xC909, 0xCDC6, 0xC4D9, 0xCB55, 0xCB9C, 0xCF3C, + 0xC8FC, 0xCCEB, 0xCD59, 0xCB41, 0xCBB4, 0xCBFD, 0xC8EA, 0xC962, + 0xCD45, 0xC519, 0xCBA2, 0xCC0E, 0xC8D6, 0xC955, 0xCD58, 0xC509, + 0xCABD, 0xCB30, 0xC7AE, 0xC830, 0xC9BB, 0xCDB2, 0xCAAB, 0xCB1E, + 0xCB8F, 0xC84A, 0xC8C7, 0xCD03, 0xC578, 0xCB36, 0xCBA2, 0xC838, + 0xC8B5, 0xCCEF, 0xC568, 0xCB22, 0xCBBA, 0xC850, 0xC8CD, 0xC94A, + 0xCD8E, 0xC613, 0xCBCD, 0xCC39, 0xC8BB, 0xC962, 0xCDA1, 0xC601, + 0xCAC5, 0xCB5B, 0xC8D3, 0xC950, 0xC9F2, 0xC620, 0xC6A9, 0xCB73, + 0xC16F, 0xC968, 0xCA05, 0xCD6C, 0xC6C1, 0xCB86, 0xCC1E, 0xC878, + 0xC918, 0xCA90, 0xC6E0, 0xC762, 0xCC2F, 0xC890, 0xC932, 0xC9A8, + 0xC5A4, 0xC77F, 0xCB53, 0xC255, 0xC94A, 0xC9EC, 0xCA87, 0xC679, + 0xCB8B, 0xCC21, 0xC987, 0xC9FD, 0xCA9A, 0xC698, 0xC749, 0xCC59, + 0xC373, 0xCA3A, 0xCAD7, 0xC6E1, 0xC78B, 0xCC8F, 0xC392, 0xC954, + 0xC9F1, 0xC728, 0xC7AA, 0xC84F, 0xCC49, 0xC47D, 0xCA2E, 0xCAC9, + 0xC7EC, 0xC893, 0xCC81, 0xC4CB, 0xCA6B, 0xCB2B, 0xC830, 0xC8D5, + 0xC45E, 0xC519, 0xCACB, 0xCB61, 0xC89C, 0xC93C, 0xCCEA, 0xC567, + 0xCB2D, 0xCBBE, 0xC7A7, 0xC84E, 0xC8EE, 0xC5B5, 0xC66B, 0xCAE4, + 0xC213, 0xC8BA, 0xC955, 0xC62D, 0xC6DC, 0xCB44, 0xC26B, 0xC8F7, + 0xC9BC, 0xC674, 0xC74F, 0xC7F4, 0xCC55, 0xC3C3, 0xCA1C, 0xCADC, + 0xC7BB, 0xC860, 0xCBB4, 0xC445, 0xCAA8, 0xCACA, 0xC827, 0xC8F1, + 0xC93D, 0xC4C2, 0xC57D, 0xCA82, 0xC265, 0xC803, 0xC8CB, 0xC53F, + 0xC622, 0xCB09, 0xC2EC, 0xC899, 0xC95C, 0xCA1C, 0xC693, 0xC767, + 0xCBCE, 0xC496, 0xC9E8, 0xCAA1, 0xC730, 0xC7FD, 0xC8F1, 0xC511, + 0xCA6D, 0xCA20, 0xC7C4, 0xC8B8, 0xC951, 0xC5B8, 0xC6B9, 0xCA96, + 0xC191, 0xC7CA, 0xC8BC, 0xC4DB, 0xC5BE, 0xC6C4, 0xCBED, 0xC383, + 0xC970, 0xCA53, 0xC688, 0xC784, 0xCB64, 0xC432, 0xCA1A, 0xCAAE, + 0xC74B, 0xC83D, 0xC92A, 0xC50B, 0xC613, 0xCA43, 0xC28F, 0xC91B, + 0xC918, 0xC604, 0xC705, 0xCB12, 0xC377, 0xC834, 0xC944, 0xCA25, + 0xC747, 0xC735, 0xCB5E, 0xC5B9, 0xCA16, 0xCACF, 0xC6FC, 0xC816, + 0xCC3F, 0xC4B9, 0xCA2E, 0xCA69, 0xC809, 0xC917, 0xC9B0, 0xC5B7, + 0xC6E0, 0xCB79, 0xC327, 0xC90C, 0xC96A, 0xC6D1, 0xC815, 0xCB42, + 0xC852, 0xCCD0, 0xC6EC, 0xCAC9, 0xCAE1, 0xC868, 0xC99B, 0xCA52, + 0xC704, 0xC744, 0xCC0A, 0xC5A7, 0xC9D1, 0xCA0C, 0xC75F, 0xC897, + 0xC97D, 0xC53E, 0xC62E, 0xCB3F, 0xC453, 0xC8D4, 0xC914, 0xC621, + 0xC790, 0xC87B, 0xC375, 0xC4E4, 0xCA74, 0xC007, 0xC7D2, 0xC835, + 0xC501, 0xC657, 0xC774, 0xCB28, 0xC388, 0xC9A1, 0xC99E, 0xC6C1, + 0xC729, 0xCB16, 0xC53C, 0xC91D, 0xCA7D, 0xC76E, 0xC8C7, 0xC8CB, + 0xC583, 0xC61A, 0xCA70, 0xC414, 0xC845, 0xC9AF, 0xC65D, 0xC7EA, + 0xC7EE, 0xC431, 0xC4FC, 0xC99D, 0xC2B3, 0xC768, 0xC8FF, 0xC544, + 0xC70F, 0xC70C, 0xC2D0, 0xC3D9, 0xC8EF, 0xC16D, 0xC683, 0xC824, + 0xC450, 0xC623, 0xC625, 0xC0C3, 0xC2A2, 0xC83A, 0xC59A, 0xC597, + 0xC76F, 0xC323, 0xC539, 0xC96B, 0xBEA9, 0xC785, 0xC75F, 0xC4A6, + 0xC4A8, 0xC6B4, 0xC1E9, 0xC445, 0xC8BD, 0xBCE6, 0xC6CD, 0xC6A2, + 0xC3AD, 0xC3AF, 0xC5F7, 0xC9C1, 0xC347, 0xC832, 0xC80C, 0xC612, + 0xC5E7, 0xC7DB, 0xC2AE, 0xC537, 0xC93B, 0xC246, 0xC781, 0xC792, + 0xC550, 0xC525, 0xC723, 0xC1A3, 0xC892, 0xC88F, 0xC5D8, 0xC6C4, + 0xC72C, 0xC48B, 0xC460, 0xC994, 0xC08E, 0xC802, 0xC7FF, 0xC56A, + 0xC93F, 0xC1CA, 0xC7A8, 0xC856, 0xC5D5, 0xC5D2, 0xC774, 0xC32B, + 0xC4FA, 0xC8B4, 0xC0E7, 0xC71A, 0xC83D, 0xC544, 0xC519, 0xC6E6, + 0xC28B, 0xC4B4, 0xC869, 0xC035, 0xC68C, 0xC7FA, 0xC47F, 0xC495, + 0xC630, 0xC1B4, 0xC446, 0xC8DC, 0xBF7C, 0xC5FB, 0xC76E, 0xC3E4, + 0xC4A6, 0xC59F, 0xC105, 0xC3AB, 0xC858, 0xBEBE, 0xC563, 0xC6E0, + 0xC344, 0xC534, 0xC509, 0xC024, 0xC2DE, 0xC7CC, 0xBE39, 0xC5B5, + 0xC654, 0xC2A4, 0xC49E, 0xC473, 0xBF72, 0xC239, 0xC743, 0xBE56, + 0xC5C4, 0xC5C1, 0xC1FF, 0xC403, 0xC419, 0xBEB6, 0xC196, 0xC6B7, + 0xBE73, 0xC52E, 0xC5E6, 0xC683, 0xC368, 0xC4FC, 0xC8B1, 0xC11B, + 0xC770, 0xC76D, 0xC4C5, 0xC61D, 0xC5F2, 0xC2C8, 0xC48E, 0xC82F, + 0xC073, 0xC70C, 0xC7FE, 0xC431, 0xC58C, 0xC6B0, 0xC257, 0xC3F8, + 0xC8BB, 0xBFC1, 0xC680, 0xC79A, 0xC521, 0xC523, 0xC64C, 0xC38A, + 0xC387, 0xC834, 0xC17B, 0xC711, 0xC713, 0xC4BA, 0xC5E8, 0xC5BD, + 0xC2F1, 0xC459, 0xC8BE, 0xC100, 0xC6AD, 0xC7A4, 0xC424, 0xC557, + 0xC67B, 0xC280, 0xC3ED, 0xC837, 0xC08A, 0xC649, 0xC740, 0xC4EC, + 0xC4F0, 0xC617, 0xC384, 0xC381, 0xC8C3, 0xC1CF, 0xC6DF, 0xC7A9, + 0xBFD3, 0xBFD0, 0xC6AD, 0xBD32, 0xC44E, 0xC57F, 0xC160, 0xC2DC, + 0xC41C, 0xBF53, 0xC124, 0xC621, 0xBCA5, 0xC3E7, 0xC4F0, 0xC26E, + 0xC26B, 0xC3B0, 0xBED5, 0xC0AE, 0xC6B7, 0xBC18, 0xC4AD, 0xC5B1, + 0xC1FD, 0xC342, 0xC47B, 0xC038, 0xC1C1, 0xC64E, 0xBE16, 0xC54D, + 0xC54A, 0xC2D9, 0xC412, 0xC40F, 0xC17B, 0xC2CA, 0xC6BC, 0xBDCA, + 0xC4E6, 0xC5BD, 0xC268, 0xC3A6, 0xC4AF, 0xC10C, 0xC259, 0xC728, + 0xBF35, 0xC57A, 0xC651, 0xC33F, 0xC44B, 0xC548, 0xC1ED, 0xC308, + 0xC791, 0xC05A, 0xC5ED, 0xC6B8, 0xC3E2, 0xC4E4, 0xC5BB, 0xC2C7, + 0xC3D3, 0xC4B2, 0xC170, 0xC290, 0xC726, 0xBE34, 0xC47D, 0xC559, + 0xC256, 0xC36C, 0xC44D, 0xC101, 0xC221, 0xC6C4, 0xBF61, 0xC518, + 0xC5C5, 0xC300, 0xC40A, 0xC4E6, 0xC1E0, 0xC2CE, 0xC708, 0xC081, + 0xC589, 0xC631, 0xC3A3, 0xC482, 0xC557, 0xC288, 0xC371, 0xC76F, + 0xC138, 0xC5F5, 0xC69D, 0xC446, 0xC4F3, 0xC5C8, 0xC330, 0xC40F, + 0xC7B3, 0xC212, 0xC63E, 0xC7A7, 0xC4B7, 0xC564, 0xC6DA, 0xC3AD, + 0xC485, 0xC88E, 0xC2BA, 0xC74B, 0xC7EB, 0xC5D3, 0xC67B, 0xC71E, + 0xC444, 0xC5A1, 0xC8CD, 0xC335, 0xC791, 0xC82A, 0xC63F, 0xC6E2, + 0xC4B8, 0xC565, 0xC212, 0xC3D6, 0xC753, 0xC0EC, 0xC5E0, 0xC683, + 0xC456, 0xC508, 0xC5D6, 0xC372, 0xC44C, 0xC4F7, 0xC286, 0xC33D, + 0xBF41, 0xC06C, 0xC572, 0xBDF5, 0xC3E8, 0xC495, 0xC21A, 0xC2FC, + 0xC3B3, 0xC121, 0xC210, 0xC661, 0xBEF0, 0xC459, 0xC5AF, 0xC2C2, + 0xC377, 0xC4D7, 0xC1A6, 0xC28B, 0xC41B, 0xC0AB, 0xC19C, 0xC5F8, + 0xBE6D, 0xC49B, 0xC548, 0xC309, 0xC3B9, 0xC46B, 0xC156, 0xC2FA, + 0xBF2F, 0xC02D, 0xC58F, 0xBCD0, 0xBF25, 0xC4D8, 0xBB2E, 0xC293, + 0xC348, 0xC0E0, 0xC1A4, 0xC289, 0xBEE1, 0xC0AB, 0xC521, 0xBD97, + 0xC3C1, 0xC46C, 0xC165, 0xC302, 0xC38F, 0xC06C, 0xC216, 0xC2D0, + 0xBF64, 0xC05D, 0xC55E, 0xBE54, 0xC403, 0xC4AE, 0xC1D7, 0xC349, + 0xC01C, 0xC0E3, 0xC1A2, 0xBE12, 0xBFE7, 0xC4F3, 0xBCBE, 0xC2E2, + 0xC443, 0xC166, 0xC21E, 0xC2D8, 0xBFA3, 0xC131, 0xC1EE, 0xBE98, + 0xC063, 0xC535, 0xBD85, 0xC329, 0xC480, 0xC0F2, 0xC265, 0xC3CB, + 0xC021, 0xC1A3, 0xC5FA, 0xBF20, 0xC41E, 0xC54A, 0xBE10, 0xC36B, + 0xB92E, 0xC21F, 0xC2AC, 0xBFAB, 0xC072, 0xC1EF, 0xBED2, 0xBF9C, + 0xC460, 0xBCAC, 0xC323, 0xC3AB, 0xC0F3, 0xC266, 0xC2F3, 0xC022, + 0xC17E, 0xC236, 0xC36F, 0xBFEF, 0xC16F, 0xC5A1, 0xBF19, 0xC46E, + 0xBC1C, 0xC2AD, 0xC3BB, 0xC075, 0xC1EB, 0xC308, 0xBFA4, 0xC0FE, + 0xC271, 0xBEA0, 0xC034, 0xC488, 0xBDC2, 0xC378, 0xC3FB, 0xC17F, + 0xC2BB, 0xC348, 0xC0B5, 0xC205, 0xC28B, 0xBFE9, 0xC085, 0xBD74, + 0xBE48, 0xC394, 0xBB70, 0xC24F, 0xC302, 0xC06F, 0xC1BA, 0xC245, + 0xBFA0, 0xC03A, 0xC18A, 0xBDD1, 0xBF6B, 0xC455, 0xBCE9, 0xC296, + 0xC3A2, 0xC149, 0xC1DB, 0xC315, 0xBFF1, 0xC13F, 0xBD83, 0xBF1D, + 0xC07A, 0xBC9D, 0xBE4B, 0xC361, 0xBA87, 0xC21E, 0xC2A9, 0xC040, + 0xC0D0, 0xC214, 0xBF71, 0xC0C9, 0xC159, 0xBDCD, 0xBF67, 0xC401, + 0xBCEC, 0xC2EE, 0xC36F, 0xC118, 0xC233, 0xBF28, 0xC055, 0xC19C, + 0xBE56, 0xBFB6, 0xC0DE, 0xBCA0, 0xBEE9, 0xC38C, 0xBBB7, 0xC1ED, + 0xC2FC, 0xC00F, 0xC132, 0xC246, 0xBF42, 0xC098, 0xC4B2, 0xBEA0, + 0xBFD0, 0xC427, 0xBDC9, 0xC319, 0xBA69, 0xC17A, 0xC289, 0xBFBA, + 0xC0E2, 0xC1F9, 0xBEED, 0xC01D, 0xC444, 0xBD7D, 0xBF80, 0xC3B9, + 0xBD71, 0xC224, 0xC32E, 0xC073, 0xC18F, 0xC322, 0xC06C, 0xC183, + 0xC531, 0xBFCD, 0xC3D6, 0xBCFA, 0xBE67, 0xC34B, 0xBC46, 0xC25B, + 0xC2BB, 0xC39A, 0xC474, 0xC22B, 0xC30F, 0xC081, 0xC224, 0xC284, + 0xC075, 0xC191, 0xC512, 0xBFDB, 0xC045, 0xC491, 0xBE7A, 0xC352, + 0xC406, 0xC241, 0xC2C2, 0xC0C2, 0xC1AE, 0xC295, 0xBFFF, 0xC11B, + 0xC207, 0xBF62, 0xC086, 0xC423, 0xBEC0, 0xBFE9, 0xC417, 0xBE20, + 0xC2B4, 0xC391, 0xC13D, 0xC224, 0xBFAF, 0xC0A5, 0xC196, 0xBF14, + 0xC00D, 0xC127, 0xBE49, 0xBF70, 0xC3A9, 0xBD9D, 0xC267, 0xC3A2, + 0xBCF3, 0xC23A, 0xBA05, 0xC0BB, 0xC1A7, 0xBF2A, 0xC025, 0xC13F, + 0xBE8F, 0xBF8D, 0xC0AC, 0xBDEA, 0xBEF0, 0xC334, 0xBD45, 0xC1EF, + 0xBA66, 0xC072, 0xC1BD, 0xB9A5, 0xBFDA, 0xC12F, 0xBE13, 0xBFCE, + 0xC0C2, 0xBD6E, 0xBF38, 0xC02C, 0xBCC4, 0xBE96, 0xC2BC, 0xBC17, + 0xC1D5, 0xBA06, 0xC07C, 0xC147, 0xBEED, 0xBFEB, 0xC0DA, 0xBE52, + 0xBF4E, 0xC042, 0xBDAD, 0xBEB3, 0xC32B, 0xBD0A, 0xBEA9, 0xBA60, + 0xBBBA, 0xC158, 0xB8AF, 0xC001, 0xC151, 0xBE6F, 0xBF6B, 0xC0C0, + 0xBDCF, 0xBF5F, 0xC02D, 0xBD27, 0xBEC4, 0xC2B8, 0xBC7D, 0xC1CF, + 0xB9CD, 0xBBD5, 0xC162, 0xB909, 0xBFE7, 0xC0D6, 0xBE80, 0xBF7C, + 0xC0CF, 0xBDE0, 0xBEE1, 0xC039, 0xBD42, 0xBED5, 0xBAD7, 0xBC9A, + 0xBE3A, 0xC290, 0xBBED, 0xC14D, 0xC289, 0xBFF8, 0xC141, 0xBE96, + 0xBFEC, 0xC0B5, 0xBDF6, 0xBF56, 0xC048, 0xBD53, 0xBEC2, 0xBFB4, + 0xBCB0, 0xBE4D, 0xC279, 0xBCA6, 0xC1B8, 0xB9B8, 0xC068, 0xC12C, + 0xB8F4, 0xBFD7, 0xC0C1, 0xBE07, 0xBF67, 0xC030, 0xBE02, 0xBED3, + 0xBBB5, 0xBD62, 0xBECC, 0xBB38, 0xBD58, 0xC19E, 0xBA88, 0xBCB5, + 0xC192, 0xBA7C, 0xC049, 0xC10B, 0xBE88, 0xBFDC, 0xBD14, 0xBE7C, + 0xBF4D, 0xBC6E, 0xBDE3, 0xBF41, 0xBC67, 0xBDD7, 0xBEAD, 0xBBBF, + 0xBD39, 0xC1D9, 0xBB11, 0xC0B9, 0xB8B1, 0xBF61, 0xC028, 0xB72A, + 0xBEF6, 0xC021, 0xBD8C, 0xBE5D, 0xBF8D, 0xBCEB, 0xBE56, 0xBAC3, + 0xBC73, 0xBE4A, 0xBA3C, 0xBBD0, 0xC0FE, 0xBA37, 0xBBC6, 0xC0F4, + 0xB97F, 0xBFA6, 0xC068, 0xBE71, 0xBF3B, 0xBC96, 0xBDD8, 0xBF34, + 0xBC8C, 0xBD63, 0xBE9B, 0xBBE9, 0xBD5E, 0xBE96, 0xBB40, 0xBCBB, + 0xB922, 0xBAC3, 0xC075, 0xB867, 0xBEC0, 0xBFEB, 0xB7A2, 0xBEB9, + 0xBFDF, 0xBD7C, 0xBEAF, 0xBFD8, 0xBCE0, 0xBE3F, 0xBB87, 0xBCD4, + 0xBDA8, 0xBAE1, 0xBC61, 0xC11B, 0xBA61, 0xBBBB, 0xC091, 0xB9AE, + 0xBF8D, 0xC08A, 0xBE34, 0xBF62, 0xBCF4, 0xBE2F, 0xBF58, 0xBCED, + 0xBE23, 0xBA84, 0xBC75, 0xC104, 0xBA7F, 0xBBD4, 0xC0FD, 0xB9D1, + 0xBFDA, 0xB798, 0xBE48, 0xBFD0, 0xB78C, 0xBE3C, 0xBF41, 0xBD01, + 0xBE37, 0xBED6, 0xBC65, 0xBDA0, 0xBA98, 0xBC5B, 0xBD99, 0xBA93, + 0xBC54, 0xBD8D, 0xB9E5, 0xBBDC, 0xC055, 0xB9DB, 0xBFB2, 0xB7AC, + 0xB9D4, 0xBF49, 0xB65C, 0xBE1B, 0xBF1E, 0xBCDB, 0xBE0F, 0xBF12, + 0xBC68, 0xBD7D, 0xBA79, 0xBBC9, 0xBD71, 0xBA6D, 0xBBC2, 0xBD6C, + 0xBA68, 0xBBB8, 0xC085, 0xBA5C, 0xBBB1, 0xB7C0, 0xBA57, 0xBEFD, + 0xB7B9, 0xBE57, 0xBEF6, 0xB7AF, 0xBDEC, 0xBF4E, 0xBCB3, 0xBDBE, + 0xBAF7, 0xBCA7, 0xBDB2, 0xBAEB, 0xBC0D, 0xBDAD, 0xBA49, 0xBC03, + 0xBDA6, 0xBA3D, 0xBBFC, 0xC091, 0xBA38, 0xBF96, 0xB84B, 0xBA2C, + 0xBF30, 0xB844, 0xBE04, 0xBF02, 0xBCF4, 0xBE61, 0xBF5A, 0xBCED, + 0xBE55, 0xBBA7, 0xBCBF, 0xBDEC, 0xBBA0, 0xBCB3, 0xBDBE, 0xBB2A, + 0xBCAE, 0xC0FC, 0xBAF7, 0xBCA2, 0xB8AA, 0xBAED, 0xBFA2, 0xB919, + 0xBEA2, 0xBF77, 0xB912, 0xBE79, 0xBFCA, 0xBD6C, 0xBECF, 0xBC59, + 0xBDC9, 0xBE66, 0xBBE6, 0xBD5B, 0xBE5C, 0xBBB8, 0xBD2D, 0xBE31, + 0xBC18, 0xBD26, 0xBA87, 0xBC13, 0xC04B, 0xBA13, 0xBF52, 0xC03F, + 0xBE16, 0xBB96, 0xBCE7, 0xC0FE, 0xBBCF, 0xBD42, 0xC0F9, 0xBBC8, + 0xC003, 0xBA34, 0xBF0F, 0xBFFC, 0xBA01, 0xBF03, 0xC02B, 0xBE64, + 0xBEFE, 0xB8C0, 0xBDFB, 0xBF2D, 0xBCF2, 0xBE2F, 0xBF26, 0xBCC4, + 0xBE25, 0xBBAC, 0xBD1F, 0xBE1E, 0xBBA5, 0xBD18, 0xBDF0, 0xBC05, + 0xBCAC, 0xBE4B, 0xBB94, 0xBCE0, 0xBA07, 0xBBCD, 0xBCD9, 0xBA43, + 0xBBC6, 0xBFD4, 0xBAA8, 0xBBBC, 0xB90C, 0xBA32, 0xBF33, 0xB88B, + 0xBE37, 0xBF05, 0xB858, 0xBE2D, 0xB68D, 0xBD27, 0xBE02, 0xB707, + 0xBD22, 0xBE5A, 0xBC14, 0xBCF4, 0xB3C3, 0xBC0F, 0xBD4F, 0xBAF4, + 0xBBDC, 0xBD43, 0xBA80, 0xBC3A, 0xBD77, 0xBABC, 0xBC0E, 0xB922, + 0xBB1A, 0xBC67, 0xB98A, 0xBAAB, 0xBC62, 0xB985, 0xBB4C, 0xB850, + 0xB979, 0xBB47, 0xB7CF, 0xBA29, 0xBE96, 0xB815, 0xBD5E, 0xB5CB, + 0xB880, 0xBDF2, 0xB645, 0xBCB0, 0xBD8B, 0xB6BC, 0xBCE7, 0xB3BF, + 0xBB9F, 0xBCDD, 0xB3B5, 0xBBD1, 0xBD14, 0xBA7C, 0xBBCC, 0xBD0A, + 0xBAB3, 0xBC03, 0xB94F, 0xBAAC, 0xBBF7, 0xB98B, 0xBAE3, 0xBC90, + 0xB986, 0xBADE, 0xB7E1, 0xB9C2, 0xBB15, 0xB84E, 0xBA25, 0xBB73, + 0xB818, 0xB9F2, 0xB68A, 0xB8F5, 0xBA55, 0xB683, 0xB87E, 0xBDF0, + 0xBBD7, 0xBCB5, 0xBA87, 0xBBD2, 0xB920, 0xBB28, 0xBC09, 0xB95C, + 0xBAB9, 0xBC3B, 0xB998, 0xBB53, 0xB89B, 0xBA00, 0xBB27, 0xB81F, + 0xBA37, 0xBB85, 0xB8D2, 0xBA30, 0xB6DC, 0xB8C6, 0xBA67, 0xB797, + 0xB907, 0xBDD2, 0xB78B, 0xB9B0, 0xB5CB, 0xB841, 0xBCF2, 0xB645, + 0xB80D, 0xBD26, 0xB6FE, 0xBC48, 0xB461, 0xB67F, 0xBC7F, 0xB4AA, + 0xBB9C, 0xBD11, 0xB527, 0xBBCE, 0xB244, 0xBAE8, 0xBC05, 0xB3BA, + 0xBB1F, 0xBBFB, 0xBA34, 0xBB1A, 0xB0F4, 0xB9C2, 0xBB4C, 0xB8CA, + 0xBA66, 0xBB83, 0xB906, 0xBA9D, 0xB796, 0xB942, 0xBAD4, 0xB847, + 0xB9E4, 0xBB0B, 0xB881, 0xBA1B, 0xB709, 0xB92A, 0xBA16, 0xB704, + 0xB8B8, 0xBA4D, 0xB7B3, 0xB95F, 0xB5B6, 0xB7F4, 0xB996, 0xB672, + 0xB8A0, 0xB9D0, 0xB72B, 0xB8DA, 0xB59E, 0xB76C, 0xB916, 0xB51C, + 0xB81B, 0xBCCC, 0xB5DD, 0xB857, 0xB436, 0xB696, 0xBC25, 0xB504, + 0xB6DA, 0xBC57, 0xB548, 0xBB7B, 0xB39E, 0xB609, 0xBBAD, 0xB46C, + 0xBACE, 0xBBE4, 0xB532, 0xBB63, 0xB214, 0xBA84, 0xBB9A, 0xB2F4, + 0xBAB6, 0xBBCC, 0xB924, 0xBAEB, 0xB16C, 0xBA04, 0xBB22, 0xB867, + 0xBA3E, 0xBB59, 0xB90C, 0xBA75, 0xB7A8, 0xB948, 0xBAA7, 0xB852, + 0xB9BE, 0xBADC, 0xB314, 0xB9FA, 0xBB13, 0xB365, 0xBA2F, 0xBBDF, + 0xB9AB, 0xBAC9, 0xB18C, 0xB9E0, 0xBB37, 0xB8F6, 0xBA17, 0xBB6C, + 0xB92B, 0xBA4E, 0xB788, 0xB967, 0xBABF, 0xB873, 0xB99C, 0xBAF6, + 0xB8AD, 0xBA14, 0xB770, 0xB8E7, 0xBAAC, 0xB7F0, 0xB9C5, 0xBB1A, + 0xB89A, 0xB9FA, 0xB79E, 0xB910, 0xBA31, 0xB7DB, 0xB94A, 0xB6DC, + 0xB817, 0xB981, 0xB71B, 0xB892, 0xB9F7, 0xB809, 0xB973, 0xB656, + 0xB843, 0xB9A8, 0xB695, 0xB87A, 0xB9DF, 0xB786, 0xB8F5, 0xB63E, + 0xB7C2, 0xB92F, 0xB6C1, 0xB8A6, 0xB9A5, 0xB700, 0xB921, 0xB66F, + 0xB7EE, 0xB956, 0xB6AE, 0xB869, 0xB5A7, 0xB72E, 0xB8A3, 0xB5E6, + 0xB81A, 0xB97F, 0xB6DC, 0xB856, 0xB519, 0xB75F, 0xB8CA, 0xB617, + 0xB799, 0xBC8C, 0xB69F, 0xB817, 0xB54F, 0xB78B, 0xB8F8, 0xB648, + 0xB7C5, 0xBC55, 0xB687, 0xB840, 0xB580, 0xB70A, 0xBC10, 0xB5BF, + 0xB788, 0xB464, 0xB6F9, 0xBB6D, 0xB5B1, 0xB736, 0xBBD6, 0xB5F0, + 0xB7B4, 0xB49A, 0xB72A, 0xBBC8, 0xB5E4, 0xB7A8, 0xBC2F, 0xB66A, + 0xBB25, 0xB51C, 0xB6A4, 0xBB91, 0xB559, 0xBB17, 0xBBFA, 0xB696, + 0xBB83, 0xB54D, 0xB719, 0xBBEC, 0xB5D3, 0xBADD, 0xBC53, 0xB656, + 0xB80B, 0xB9A8, 0xB745, 0xB886, 0xBCC7, 0xB7FF, 0xB8FA, 0xBD29, + 0xB878, 0xB96E, 0xB705, 0xB8EC, 0xB9DF, 0xB82B, 0xB962, 0xB6F7, + 0xB8DE, 0xB9D1, 0xB775, 0xB954, 0xBA3F, 0xB82D, 0xB9C5, 0xB767, + 0xB8A1, 0xBA31, 0xB7E0, 0xB917, 0xB756, 0xB893, 0xB986, 0xB7D2, + 0xB909, 0xB69B, 0xB887, 0xB978, 0xB719, 0xB8FB, 0xBA23, 0xB7D4, + 0xB96C, 0xB70B, 0xB84A, 0xB97A, 0xB789, 0xB8FD, 0xB6FD, 0xB83C, + 0xB96C, 0xB77B, 0xB8EF, 0xBA17, 0xB82E, 0xB960, 0xB6C2, 0xB8E1, + 0xBA0B, 0xB77D, 0xB952, 0xB092, 0xB830, 0xB960, 0xB76F, 0xB8A4, + 0xB081, 0xB822, 0xB954, 0xB24D, 0xB8D5, 0xB9FD, 0xB816, 0xB946, + 0xB16C, 0xB8C9, 0xB9F1, 0xB2D4, 0xB8D7, 0xB160, 0xB3B1, 0xB982, + 0xB1F9, 0xB8CB, 0xBA28, 0xB3A5, 0xB974, 0xB1ED, 0xB478, 0xBA1A, + 0xB397, 0xB968, 0xB1E1, 0xB46C, 0xB976, 0xB3D2, 0xB534, 0xBA56, + 0xB4A2, 0xB9A4, 0xB2B5, 0xB56A, 0xBA48, 0xB3D9, 0xB62D, 0xB2F5, + 0xB55C, 0xB6EB, 0xB3CD, 0xB61F, 0xB2E7, 0xB49D, 0xB71E, 0xB3C1, + 0xB563, 0xB72C, 0xB4D3, 0xB665, 0xB3FA, 0xB599, 0xB720, 0xB4C5, + 0xB659, 0xB3EE, 0xB5CF, 0xB751, 0xB500, 0xB68D, 0xB841, 0xB5C3, + 0xB782, 0xB851, 0xB5D1, 0xB792, 0xB502, 0xB6CE, 0xB87D, 0xB607, + 0xB7C3, 0xB53D, 0xB6FF, 0xB8AB, 0xB63D, 0xB7F4, 0xB8BE, 0xB732, + 0xB829, 0xB66E, 0xB7A9, 0xB8EA, 0xB6E5, 0xB830, 0xB0D9, 0xB776, + 0xB918, 0xB6B4, 0xB861, 0xB11C, 0xB7A2, 0xB8D0, 0xB24E, 0xB850, + 0xB15F, 0xB370, 0xB8D7, 0xB28E, 0xB822, 0xB9B5, 0xB3AB, 0xB93D, + 0xB2CC, 0xB4BB, 0xB94D, 0xB3E4, 0xB510, 0xB1F8, 0xB43E, 0xB610, + 0xB31A, 0xB546, 0xB236, 0xB474, 0xB680, 0xB39D, 0xB5B9, 0xB6F7, + 0xB4AA, 0xB6B1, 0xB3D8, 0xB5EF, 0xB701, 0xB525, 0xB641, 0xB453, + 0xB577, 0xB76C, 0xB490, 0xB6AF, 0xB391, 0xB5AD, 0xB760, 0xB4E3, + 0xB71F, 0xAD7F, 0xB620, 0xB76C, 0xB556, 0xB670, 0xB850, 0xB612, + 0xB7D5, 0xAFD5, 0xB6E0, 0xB81F, 0xB15F, 0xB752, 0xB06D, 0xB318, + 0xB885, 0xB1EC, 0xB7D0, 0xB0B0, 0xB351, 0xB842, 0xB274, 0xB3ED, + 0xB020, 0xB2CE, 0xB575, 0xB1A2, 0xB468, 0xB5C7, 0xB351, 0xB527, + 0xB274, 0xB4E3, 0xB677, 0xB411, 0xB575, 0xB2F7, 0xB466, 0xB66B, + 0xB3C0, 0xB625, 0xB330, 0xB520, 0xB672, 0xB411, 0xB5B2, 0xB726, + 0xB554, 0xB6E0, 0xB4CE, 0xB662, 0xB7A4, 0xB560, 0xB6EC, 0xADEB, + 0xB656, 0xB437, 0xB610, 0xB755, 0xB54D, 0xB69A, 0xB443, 0xB59D, + 0xB724, 0xB53F, 0xB6CB, 0xAE7A, 0xB685, 0xB7C7, 0xB100, 0xB70F, + 0xAF6C, 0xB1D7, 0xB7CE, 0xB186, 0xB740, 0xB09E, 0xB2C1, 0xB7FA, + 0xB14D, 0xB3CA, 0xB045, 0xB381, 0xB523, 0xB264, 0xB45D, 0xB62F, + 0xB34B, 0xB4EF, 0xB29D, 0xB491, 0xB5E6, 0xB448, 0xB5A2, 0xB338, + 0xB51C, 0xB6A4, 0xB3FA, 0xB5EB, 0xB3B3, 0xB50E, 0xB6AD, 0xB50C, + 0xB61A, 0xAD8B, 0xB613, 0xB716, 0xB06A, 0xB6D5, 0xAF27, 0xB1F0, + 0xB794, 0xB02E, 0xB2D7, 0xAF6D, 0xB22E, 0xB3E0, 0xB1E2, 0xB397, + 0xB068, 0xB309, 0xB4F0, 0xB18C, 0xB3E8, 0xB5BA, 0xB2FD, 0xB4FC, + 0xB2FB, 0xB45E, 0xB640, 0xB415, 0xB52B, 0xB307, 0xB524, 0xB632, + 0xB421, 0xB5EE, 0xACFA, 0xB56D, 0xB6B0, 0xAF97, 0xB66F, 0xAF3E, + 0xB561, 0xB731, 0xB0D7, 0xB67B, 0xAEE2, 0xB253, 0xB7AA, 0xB113, + 0xB3B7, 0xB0C4, 0xB28C, 0xB4C9, 0xB240, 0xB3A6, 0xB591, 0xB362, + 0xB54D, 0xB2D6, 0xB437, 0xB612, 0xB430, 0xB519, 0xB30A, 0xB4FD, + 0xB693, 0xB479, 0xB5C7, 0xB3DB, 0xB583, 0xB711, 0xB4AD, 0xB646, + 0xAEB8, 0xB602, 0xB750, 0xB0B9, 0xB6C4, 0xB04D, 0xB2F8, 0xB7C9, + 0xB1CA, 0xB3D2, 0xB5B0, 0xB349, 0xB49D, 0xB636, 0xB49B, 0xB62F, + 0xAE5D, 0xB526, 0xB6B4, 0xB0D4, 0xB673, 0xAF3B, 0xB206, 0xB6F8, + 0xB1FD, 0xB33B, 0xB079, 0xB2DA, 0xB48B, 0xB293, 0xB3C7, 0xB162, + 0xB36B, 0xB50F, 0xB324, 0xB4CD, 0xB240, 0xB434, 0xB593, 0xB3F0, + 0xB58C, 0xADC8, 0xB4BD, 0xB614, 0xAF68, 0xB5D5, 0xAF16, 0xB195, + 0xB658, 0xB059, 0xB275, 0xB052, 0xB26E, 0xB422, 0xB13F, 0xB306, + 0xB138, 0xB2FF, 0xB4AB, 0xB21B, 0xB427, 0xB1D1, 0xB38B, 0xB4ED, + 0xB384, 0xB4EB, 0xABD3, 0xB417, 0xB571, 0xAF43, 0xB56A, 0xAD99, + 0xB036, 0xB67A, 0xB034, 0xB5AE, 0xAEE5, 0xB204, 0xB6B9, 0xB0D0, + 0xB377, 0xB0C9, 0xB298, 0xB402, 0xB291, 0xB3FE, 0xB1AA, 0xB324, + 0xB514, 0xB31B, 0xB445, 0xB23E, 0xB43E, 0xB55B, 0xB367, 0xB554, + 0xADC4, 0xB4C2, 0xB65F, 0xAFC2, 0xB59D, 0xAFC0, 0xB198, 0xB6A3, + 0xB191, 0xB30B, 0xB0A4, 0xB304, 0xB42C, 0xB225, 0xB425, 0xB1DB, + 0xB34E, 0xB53B, 0xB34C, 0xB46C, 0xB26D, 0xB46A, 0xB57F, 0xB393, + 0xB540, 0xAEA7, 0xB4AC, 0xB649, 0xB090, 0xB5BD, 0xAF9B, 0xB20C, + 0xB68B, 0xB1C7, 0xB337, 0xB120, 0xB333, 0xB458, 0xB256, 0xB414, + 0xB5B4, 0xB689, 0xB16D, 0xB680, 0xB166, 0xB29E, 0xB454, 0xB297, + 0xB44D, 0xB1F5, 0xB3B8, 0xB523, 0xB3B4, 0xB494, 0xB2DC, 0xB48D, + 0xAD6E, 0xB3FB, 0xB563, 0xB013, 0xB55A, 0xAF19, 0xB14F, 0xB628, + 0xB14B, 0xB27E, 0xB05E, 0xB27C, 0xB3F2, 0xB275, 0xB35D, 0xB193, + 0xB359, 0xB4C7, 0xB2BF, 0xB435, 0xAD5A, 0xB42E, 0xB591, 0xAFF5, + 0xB502, 0xAF00, 0xB134, 0xB61E, 0xB12D, 0xB2BB, 0xB045, 0xB21E, + 0xB03E, 0xB217, 0xB393, 0xB17A, 0xB2FE, 0xAA45, 0xB2F7, 0xB468, + 0xAD91, 0xB3D3, 0xAD8A, 0xAFDF, 0xB535, 0xAFD8, 0xB1B4, 0xAEE0, + 0xB0D4, 0xB331, 0xB0CD, 0xB297, 0xB025, 0xB1FC, 0xB3CB, 0xB1B5, + 0xB371, 0xAC03, 0xB32F, 0xB49B, 0xAE74, 0xB494, 0xAE70, 0xB067, + 0xAD6F, 0xB060, 0xB1F4, 0xAF72, 0xB152, 0xAEC5, 0xB14B, 0xB2CF, + 0xB0AB, 0xB2C8, 0xA8C7, 0xB230, 0xB3F5, 0xACFE, 0xB365, 0xABE8, + 0xAF0C, 0xB48A, 0xAF05, 0xB0A7, 0xAE52, 0xB0A5, 0xB22A, 0xAFFD, + 0xB228, 0xAFF6, 0xB18B, 0xB358, 0xB184, 0xB300, 0xAB6F, 0xB2BE, + 0xAA46, 0xAD9E, 0xB3EB, 0xAD97, 0xB038, 0xACDE, 0xAF90, 0xB180, + 0xAF8E, 0xB123, 0xAE9D, 0xB0DE, 0xB2EF, 0xB0D7, 0xB259, 0xA9C5, + 0xB255, 0xB389, 0xAD26, 0xAF8A, 0xB4F7, 0xAF83, 0xB11B, 0xAED8, + 0xB114, 0xB2E4, 0xB10D, 0xB24F, 0xB06F, 0xB248, 0xB37C, 0xB241, + 0xB375, 0xAD67, 0xB336, 0xAC5E, 0xAF18, 0xB456, 0xAF11, 0xB105, + 0xAE66, 0xB067, 0xB23D, 0xB060, 0xB239, 0xAFBD, 0xB1A3, 0xB32B, + 0xB19C, 0xB324, 0xABE5, 0xB2CF, 0xABE3, 0xAE60, 0xB3BC, 0xAE59, + 0xB055, 0xADAB, 0xB051, 0xB227, 0xAFB0, 0xB18F, 0xAFA9, 0xB18D, + 0xB313, 0xB186, 0xB2BB, 0xAC27, 0xAE97, 0xB3F6, 0xAE4C, 0xB04B, + 0xADE7, 0xB044, 0xAD97, 0xAFE4, 0xB182, 0xAF9A, 0xB17B, 0xAF3A, + 0xB177, 0xB2FD, 0xAC1F, 0xB26A, 0xABB1, 0xAE88, 0xB3DE, 0xAE81, + 0xB035, 0xADD3, 0xB02E, 0xADD1, 0xAFCE, 0xB1C0, 0xAF86, 0xB165, + 0xA8DC, 0xB123, 0xB2AE, 0xAC5E, 0xB2A7, 0xABA2, 0xAE74, 0xB392, + 0xAE6D, 0xB021, 0xAE69, 0xB01A, 0xB1B1, 0xB016, 0xB1AC, 0xB00F, + 0xB1A5, 0xA930, 0xB10F, 0xB2E9, 0xAC4F, 0xAEC6, 0xAC48, 0xAEBF, + 0xB0FD, 0xAE5C, 0xB064, 0xAE57, 0xB05D, 0xB1EE, 0xB05B, 0xB1EA, + 0xAFFB, 0xB1A5, 0xAA42, 0xAD9E, 0xB2E6, 0xACED, 0xAF51, 0xACE6, + 0xAF4A, 0xB13D, 0xAEA9, 0xB0A9, 0xAEA2, 0xB0A2, 0xB27A, 0xB09B, + 0xAE99, 0xB097, 0xB1E5, 0xAAF5, 0xB1DE, 0xAAF3, 0xAD88, 0xB318, + 0xAD3B, 0xAF92, 0xACD0, 0xAF90, 0xB13D, 0xAEEF, 0xB0E0, 0xAEE8, + 0xB0DE, 0xA87D, 0xB0D7, 0xB271, 0xAC0C, 0xAED8, 0xAC05, 0xAE34, + 0xB035, 0xAE2D, 0xB02E, 0xAE2B, 0xB02C, 0xADC3, 0xB025, 0xB174, + 0xAA0D, 0xB16D, 0xAA06, 0xAD10, 0xB26E, 0xAD09, 0xAF77, 0xAD02, + 0xAF19, 0xB0C9, 0xAED6, 0xB0C5, 0xAECF, 0xB0BE, 0xA852, 0xB027, + 0xB1C7, 0xAC41, 0xAE63, 0xAB8A, 0xAE5C, 0xB017, 0xADB8, 0xB013, + 0xADB3, 0xB00C, 0xA6D9, 0xAF72, 0xB118, 0xAA4C, 0xB116, 0xAA45, + 0xAD9C, 0xB29D, 0xACF5, 0xAF5E, 0xACEE, 0xAF57, 0xB0FD, 0xAF50, + 0xB0A7, 0xAEB6, 0xB067, 0xA967, 0xACD9, 0xB244, 0xACD5, 0xAEA6, + 0xAC28, 0xAE9F, 0xB050, 0xAE98, 0xB049, 0xAE96, 0xB009, 0xA806, + 0xB002, 0xB19D, 0xAAF5, 0xB196, 0xAAF3, 0xADE2, 0xAFF2, 0xADDD, + 0xAFEB, 0xADD9, 0xAFE9, 0xB149, 0xAF8E, 0xB142, 0xAAD7, 0xB13D, + 0xAA1A, 0xAD24, 0xB286, 0xAD1D, 0xAF3B, 0xAD1B, 0xAF34, 0xB09C, + 0xAF32, 0xB09A, 0xAF2B, 0xB093, 0xA9FA, 0xB0E0, 0xB230, 0xAC5A, + 0xAEDA, 0xAC55, 0xAED8, 0xB043, 0xAED1, 0xB03C, 0xAECA, 0xB03A, + 0xAEC8, 0xAC9D, 0xAE6A, 0xAC9B, 0xAE24, 0xB079, 0xAE20, 0xB023, + 0xA845, 0xABE5, 0xB18A, 0xABDE, 0xAE67, 0xABDC, 0xAE62, 0xABD5, + 0xAE5E, 0xB020, 0xADC1, 0xB019, 0xA896, 0xAB7E, 0xB131, 0xAB77, + 0xAE08, 0xAB75, 0xAE06, 0xAB6E, 0xADFF, 0xAFC2, 0xADF8, 0xAFBD, + 0xA7AF, 0xAFB9, 0xB114, 0xABBB, 0xADA9, 0xABB9, 0xADA2, 0xAB09, + 0xADA0, 0xAFBA, 0xADF3, 0xAFB3, 0xA808, 0xAFB1, 0xB10A, 0xAB54, + 0xB0CA, 0xAB4F, 0xAD9D, 0xAB4B, 0xAD96, 0xAF61, 0xAD94, 0xAFAE, + 0xADE4, 0xAFA7, 0xB0C7, 0xAAEF, 0xB111, 0xAAED, 0xAD7D, 0xAB48, + 0xAD37, 0xAF57, 0xAD8C, 0xAFA4, 0xAD85, 0xAFA2, 0xA852, 0xAB95, + 0xB107, 0xAB8E, 0xADCF, 0xAAE3, 0xAD73, 0xAFA1, 0xAD87, 0xAF9A, + 0xAD80, 0xAF98, 0xA7E7, 0xAF3F, 0xB0FD, 0xABE8, 0xADCA, 0xABE6, + 0xADC5, 0xAF99, 0xAD7F, 0xAF95, 0xADD2, 0xAF8E, 0xA910, 0xAF50, + 0xB0F3, 0xABE8, 0xAE19, 0xAC3E, 0xADC0, 0xAFE1, 0xADCF, 0xAF8D, + 0xAE24, 0xAF9C, 0xA910, 0xAFE9, 0xB14B, 0xAC3D, 0xB147, 0xAC3B, + 0xAE28, 0xAFA0, 0xAE21, 0xAFE8, 0xAE71, 0xB033, 0xAE6A, 0xAFDF, + 0xB141, 0xAC97, 0xB155, 0xACEA, 0xAE75, 0xB29D, 0xAEC0, 0xB030, + 0xAE67, 0xAC96, 0xAE7B, 0xACEE, 0xAEC8, 0xB085, 0xAEC4, 0xB031, + 0xAA96, 0xAC9C, 0xAAF1, 0xACF2, 0xAECC, 0xAD42, 0xAF17, 0xAD40, + 0xAF13, 0xB044, 0xAED2, 0xB08C, 0xABB2, 0xADA0, 0xABAB, 0xAD99, + 0xAF14, 0xAD92, 0xAF28, 0xADA6, 0xAF73, 0xA930, 0xAC09, 0xB0E4, + 0xAC07, 0xAD98, 0xABC1, 0xAE01, 0xAC14, 0xAE4C, 0xAF6D, 0xA9FC, + 0xAFCE, 0xA995, 0xAC1F, 0xAA0E, 0xAC72, 0xAE50, 0xACC8, 0xAE4E, + 0xACC3, 0xAEAF, 0xA76C, 0xAA77, 0xB029, 0xAB32, 0xAD23, 0xAB2B, + 0xAD1C, 0xAB26, 0xAD85, 0xAEFE, 0xA8B3, 0xAF0F, 0xA979, 0xAB8E, + 0xA912, 0xAB87, 0xADDB, 0xABF8, 0xAD82, 0xA656, 0xADE8, 0xAF5E, + 0xA9E0, 0xAC5B, 0xA9D9, 0xAC56, 0xAA50, 0xAC4F, 0xAE3E, 0xACBB, + 0xAE52, 0xA7A9, 0xAE9D, 0xA7C0, 0xAB13, 0xAD6D, 0xAB11, 0xAD14, + 0xAB80, 0xAD28, 0xA436, 0xAD78, 0xAF4F, 0xA962, 0xABE3, 0xA960, + 0xABDE, 0xA9D7, 0xABDC, 0xADCC, 0xAC48, 0xAE32, 0xA790, 0xAA9F, + 0xA720, 0xAA9D, 0xACA8, 0xAA96, 0xACA1, 0xAB05, 0xAD0A, 0xA51E, + 0xAD03, 0xAE90, 0xA8E6, 0xAB6D, 0xA8DF, 0xAB66, 0xAD79, 0xAC2C, + 0xADC4, 0xABD0, 0xADC0, 0xA779, 0xAA26, 0xAF53, 0xAA1F, 0xAC9E, + 0xAAEE, 0xAC99, 0xAE2C, 0xACAB, 0xAE8D, 0xA8CF, 0xAB56, 0xA8C8, + 0xAB6A, 0xAD5D, 0xABBB, 0xAD59, 0xAB77, 0xADBF, 0xA764, 0xAA0D, + 0xAF4B, 0xAA08, 0xAC87, 0xAA7C, 0xAC2B, 0xAA78, 0xAC94, 0xAE85, + 0xA8BD, 0xAE83, 0xA8B6, 0xAB51, 0xA92D, 0xAB4C, 0xAD53, 0xABB6, + 0xADB7, 0xA752, 0xA99B, 0xA6E2, 0xAA6A, 0xAC84, 0xAA08, 0xAC7D, + 0xAAD4, 0xACE6, 0xA560, 0xA840, 0xAE7D, 0xA91D, 0xABA8, 0xA91B, + 0xABA6, 0xA98D, 0xAC0D, 0xADB4, 0xA740, 0xADAF, 0xA7BD, 0xAA6C, + 0xA7BB, 0xAA67, 0xAC7C, 0xAAD6, 0xACE3, 0xA5C4, 0xAD47, 0xA649, + 0xA97F, 0xABAA, 0xA97D, 0xAC11, 0xA9EF, 0xAC0A, 0xA3B0, 0xAC73, + 0xAE12, 0xA88F, 0xAACB, 0xA82A, 0xAB32, 0xA902, 0xAB30, 0xAD48, + 0xAB9A, 0xAD44, 0xA72C, 0xA9E1, 0xA811, 0xAA53, 0xAC10, 0xAABF, + 0xAC77, 0xAAB8, 0xACDB, 0xA623, 0xA8F4, 0xAE81, 0xA96B, 0xABF5, + 0xA9DD, 0xABA0, 0xAA47, 0xAC07, 0xADA4, 0xA79B, 0xADB8, 0xA87B, + 0xAB1E, 0xA8ED, 0xAB32, 0xACDA, 0xAB2B, 0xAD3E, 0xA782, 0xA9CF, + 0xA71A, 0xAA3C, 0xAC60, 0xAAA8, 0xAC74, 0xAABF, 0xAC6D, 0xA618, + 0xA95B, 0xAE79, 0xA954, 0xAB89, 0xA9C6, 0xABF0, 0xAA35, 0xAC04, + 0xAA47, 0xAC68, 0xA5FA, 0xA8E0, 0xAE0F, 0xA952, 0xAB84, 0xA9C4, + 0xABEB, 0xAA2E, 0xAB94, 0xA477, 0xA7ED, 0xADA9, 0xA867, 0xAAAA, + 0xA8D9, 0xAB14, 0xA94B, 0xAB7B, 0xAD34, 0xA6F4, 0xAA27, 0xA771, + 0xAA3E, 0xA7E6, 0xAAA8, 0xAC67, 0xAB0D, 0xACC9, 0xA677, 0xA942, + 0xA6F4, 0xAA23, 0xABEF, 0xA9C6, 0xABE8, 0xAA35, 0xAC65, 0xA5D9, + 0xA8CE, 0xA6DB, 0xA940, 0xAB18, 0xA9AD, 0xABE8, 0xA4CE, 0xABE6, + 0xA554, 0xA85C, 0xAA98, 0xA8CE, 0xAAFF, 0xA93E, 0xAB13, 0xA3B6, + 0xA754, 0xAD42, 0xA843, 0xAA29, 0xA8B5, 0xAA93, 0xA8CC, 0xAAFD, + 0xA288, 0xA6D7, 0xACDC, 0xA752, 0xAA13, 0xA7C7, 0xAA27, 0xA8B3, + 0xAAFD, 0xAC64, 0xA6C1, 0xA937, 0xA6D8, 0xA9A4, 0xA750, 0xA9B8, + 0xABEC, 0xAA91, 0xABFB, 0xA644, 0xA8C8, 0xA6C1, 0xA935, 0xAB6F, + 0xAA11, 0xAB83, 0xAA25, 0xABE5, 0xA5C4, 0xA8AF, 0xA644, 0xA91C, + 0xAB6F, 0xA9A2, 0xAB83, 0xA4A5, 0xABE5, 0xA5B0, 0xA83D, 0xAA88, + 0xA91F, 0xAB03, 0xA933, 0xAB6A, 0xA422, 0xABE5, 0xAD37, 0xA83D, + 0xAA88, 0xA8AD, 0xAA9C, 0xA91F, 0xAB68, 0xACD8, 0xA7B4, 0xAD37, + 0xA829, 0xAA88, 0xA840, 0xAA9C, 0xA91F, 0xAB01, 0xAC74, 0xA7A0, + 0xAA0A, 0xAB8B, 0xA59F, 0xABED, 0xA69C, 0xA91F, 0xA6B3, 0xA98C, + 0x9F0C, 0xAA0A, 0xAB8B, 0xA5A4, 0xA89E, 0xA6A1, 0xA8B0, 0xA714, + 0xA98C, 0xAB10, 0xA50F, 0xAB8B, 0xA612, 0xA89E, 0xA624, 0xA8B0, + 0xA719, 0xA98C, 0xAB10, 0xA4FB, 0xA818, 0xA595, 0xA89E, 0xA68D, + 0xA90B, 0xAB01, 0xA98C, 0xAB77, 0xA583, 0xA81A, 0xA59A, 0xA8A3, + 0xA692, 0xA90E, 0xAB01, 0xA4EE, 0xAB77, 0xA588, 0xA88F, 0xA603, + 0xA8A3, 0xAA9C, 0xA90E, 0xAB01, 0xA4F3, 0xA80B, 0xA58D, 0xA891, + 0xA685, 0xA8A3, 0xAA9C, 0xA4E1, 0xAB15, 0xA4FB, 0xA810, 0xA5F6, + 0xA894, 0xAA8D, 0xA915, 0xAB03, 0xA4E9, 0xA7A0, 0xA580, 0xA810, + 0xA676, 0xA894, 0xAA8D, 0xA984, 0xAB03, 0xA56E, 0xA817, 0xA585, + 0xA82E, 0xAA8F, 0xA903, 0xAB05, 0xA4DC, 0xAB7B, 0xA5F3, 0xA889, + 0xA60A, 0xA90A, 0xAA8F, 0xA921, 0xAB05, 0xA561, 0xA808, 0xA670, + 0xA889, 0xAA91, 0xA90D, 0xAB0A, 0xA4EB, 0xAB19, 0xA5E6, 0xA890, + 0xA675, 0xA914, 0xAAAA, 0xA98D, 0xAB20, 0xA570, 0xA80F, 0xA607, + 0xA893, 0xAA96, 0xA914, 0xAB0C, 0xA992, 0xAB20, 0xA66D, 0xA89A, + 0xA6F7, 0xA91B, 0xAB13, 0xA994, 0xAB22, 0xA5E3, 0xAB98, 0xA689, + 0xA4C1, 0xAAAE, 0xAC2B, 0xA80E, 0xAA17, 0xA88D, 0xAA26, 0xA90E, + 0xAA9F, 0xA4C6, 0xA78A, 0xA9B2, 0xA827, 0xAA2B, 0xA910, 0xAAA1, + 0xA550, 0xA7FE, 0xA5E2, 0xA815, 0xAA2F, 0xA8AD, 0xAAA8, 0xA4C0, + 0xAB19, 0xA5E9, 0xA887, 0xA6EB, 0xA89B, 0xAAAA, 0xA930, 0xAB1E, + 0xA5D7, 0xA88E, 0xA67D, 0xA8A2, 0xA779, 0xA91E, 0xAB22, 0xA5E1, + 0xA828, 0xA66B, 0xA911, 0xA77E, 0xA923, 0xA254, 0xA660, 0xAB4C, + 0xA6EA, 0xA913, 0xA6FC, 0xA92A, 0xA2E7, 0xA9B7, 0xA38A, 0xA6F1, + 0xA91A, 0xA703, 0xA92C, 0xA810, 0xA9BE, 0xA417, 0xA6F6, 0xA4AC, + 0xA77A, 0xA933, 0xA815, 0xA9C0, 0xA49F, 0xA6FD, 0xA4B6, 0xA781, + 0xA5DA, 0xA81C, 0xA9C5, 0xA4AB, 0xA704, 0xA53B, 0xA78B, 0xA659, + 0xA823, 0xA03A, 0xA4B5, 0xAA56, 0xA545, 0xA813, 0xA660, 0xA825, + 0xA0E3, 0xA922, 0xA23F, 0xA551, 0xA818, 0xA66A, 0xA8AD, 0xA705, + 0xA929, 0xA2D2, 0xA65A, 0xA40A, 0xA66F, 0xA8B2, 0xA70F, 0xA944, + 0xA360, 0xA664, 0xA419, 0xA6FF, 0xA53B, 0xA781, 0xA946, 0xA409, + 0xA9D3, 0xA49C, 0xA706, 0xA545, 0xA79F, 0xA025, 0xA834, 0xAA50, + 0xA53A, 0xA794, 0xA5DB, 0xA827, 0xA665, 0xA83B, 0xA21D, 0xA541, + 0xA796, 0xA5E5, 0xA82E, 0xA6F3, 0xA8BE, 0xAA6D, 0xA5DA, 0xA821, + 0xA678, 0xA8B1, 0xA711, 0xA8D9, 0xA35A, 0xA66B, 0xA40E, 0xA706, + 0xA8CC, 0xA79C, 0xA95C, 0xA401, 0xA672, 0xA4AD, 0xA70D, 0xA551, + 0xA7A3, 0xA974, 0xA4A2, 0xA9FC, 0xA546, 0xA796, 0xA5E7, 0xA7BE, + 0xA15D, 0xA536, 0xA2C2, 0xA5D7, 0xA7B1, 0xA675, 0xA844, 0xA2B2, + 0xA8EA, 0xA369, 0xA66D, 0xA413, 0xA703, 0xA8DD, 0xA72E, 0xA968, + 0xA408, 0xA688, 0xA4AF, 0xA721, 0x9F51, 0xA7B4, 0xA162, 0xA4A4, + 0xA716, 0xA5D2, 0xA7A9, 0xA670, 0xA850, 0xA217, 0xA53B, 0xA2CC, + 0xA5F5, 0xA843, 0xA68E, 0xA86B, 0xA2C1, 0xA5E5, 0xA406, 0xA683, + 0xA4AF, 0xA730, 0xA902, 0xA3FB, 0xA608, 0xA49F, 0xA725, 0xA55F, + 0xA7B6, 0xA0B1, 0xA41E, 0xA217, 0xA54F, 0xA743, 0xA5F0, 0xA7EA, + 0xA20C, 0xA544, 0xA359, 0xA5F9, 0xA403, 0xA692, 0xA881, 0xA34C, + 0xA5EC, 0xA40F, 0xA685, 0xA543, 0xA72F, 0x9FF0, 0xA404, 0xA15F, + 0xA4AB, 0xA6BC, 0xA5ED, 0xA7CE, 0xA1F5, 0xA4B7, 0xA2AA, 0xA556, + 0xA373, 0xA68D, 0xA7FD, 0xA220, 0xA89F, 0xA3F8, 0xA5FE, 0xA42B, + 0xA6AD, 0x9FE0, 0xA374, 0xA14A, 0xA4AB, 0xA6B9, 0xA563, 0xA75E, + 0xA5FC, 0xA7F1, 0xA6A9, 0xA890, 0xA35E, 0xA608, 0xA4AC, 0xA6B5, + 0xA564, 0xA75F, 0xA143, 0xA42B, 0xA6A8, 0xA4E3, 0xA752, 0xA604, + 0xA78E, 0xA2A5, 0xA560, 0xA36B, 0xA610, 0x9D69, 0xA6BD, 0xA828, + 0xA35E, 0xA597, 0xA421, 0xA647, 0x9FC9, 0xA6F1, 0xA14A, 0xA4B5, + 0xA21C, 0xA56D, 0xA6FD, 0xA13F, 0xA79F, 0xA2A7, 0xA4EF, 0xA370, + 0xA626, 0x9EF3, 0xA2B8, 0xA848, 0xA37C, 0xA5B0, 0xA4C2, 0xA6DA, + 0x9FD3, 0xA77F, 0xA154, 0xA4CE, 0xA2BC, 0xA581, 0xA788, 0xA201, + 0xA7AE, 0xA2C8, 0xA58A, 0xA389, 0xA63A, 0x9F05, 0xA2D4, 0xA08F, + 0xA425, 0xA646, 0xA4DB, 0xA6EB, 0xA144, 0xA431, 0xA211, 0xA4E7, + 0xA2D5, 0xA597, 0x9E2E, 0xA2B3, 0xA4F3, 0xA374, 0xA5A3, 0xA449, + 0xA662, 0xA084, 0xA385, 0xA154, 0xA455, 0xA2D0, 0xA508, 0xA727, + 0xA1FE, 0xA4E6, 0xA2DC, 0xA514, 0xA39D, 0xA658, 0x9FB9, 0xA37B, + 0xA099, 0xA434, 0xA661, 0xA503, 0xA71D, 0xA144, 0xA440, 0xA22A, + 0xA50A, 0xA398, 0xA5CE, 0xA7DC, 0xA2CC, 0xA516, 0xA3A4, 0xA5DA, + 0xA471, 0xA696, 0xA0A3, 0xA3B0, 0xA225, 0xA502, 0xA6A2, 0xA5C4, + 0xA75B, 0xA231, 0xA50E, 0xA39A, 0xA5D0, 0x9F04, 0xA68C, 0xA0A0, + 0xA3A6, 0xA5F0, 0x9FBD, 0xA2FB, 0xA14B, 0xA3CB, 0xA5FC, 0xA51B, + 0xA6B8, 0xA15C, 0xA462, 0xA23D, 0xA527, 0xA3A1, 0xA5E6, 0x9FB8, + 0xA2F6, 0xA0AF, 0xA3C6, 0xA60B, 0xA48E, 0xA6C2, 0xA16E, 0xA471, + 0xA24F, 0xA536, 0x9E0D, 0xA575, 0x9F13, 0xA2EC, 0xA53F, 0xA3D8, + 0xA615, 0x9FE3, 0xA314, 0xA169, 0xA3E4, 0xA2EF, 0xA4A9, 0x9E0D, + 0xA194, 0xA48C, 0xA300, 0xA54C, 0xA3E7, 0xA61F, 0xA09C, 0xA323, + 0xA180, 0xA48D, 0xA306, 0xA4CF, 0x9E2A, 0xA23C, 0xA499, 0xA312, + 0xA56F, 0x9F05, 0xA5B1, 0xA097, 0xA335, 0xA195, 0xA419, 0x9C62, + 0xA0C2, 0xA716, 0xA24E, 0xA4BF, 0xA338, 0xA57E, 0x9F05, 0xA276, + 0xA0C8, 0xA3E6, 0xA254, 0xA4C2, 0xA66C, 0xA187, 0xA409, 0xA260, + 0xA4E2, 0xA34A, 0xA5A4, 0x9FDB, 0xA32D, 0xA0DF, 0xA40C, 0x9B61, + 0xA4E8, 0xA68F, 0xA19E, 0xA42F, 0xA330, 0xA508, 0x9F02, 0xA5D9, + 0xA00F, 0xA353, 0xA1A1, 0xA432, 0xA5F9, 0xA0D1, 0xA415, 0xA274, + 0xA455, 0xA359, 0xA52E, 0x9F39, 0xA297, 0xA0DC, 0xA37C, 0xA5DD, + 0xA458, 0xA61C, 0xA1AD, 0xA43B, 0xA29D, 0xA50F, 0xA37F, 0xA563, + 0xA00C, 0xA362, 0xA1B3, 0xA43C, 0xA614, 0xA0E8, 0xA6DA, 0xA1F2, + 0xA014, 0xA37C, 0xA549, 0x9FEF, 0xA2BD, 0xA10A, 0xA39F, 0xA29D, + 0xA476, 0x9E2E, 0xA1D8, 0xA014, 0xA2C0, 0xA544, 0xA3B9, 0xA581, + 0xA0ED, 0xA39C, 0xA1DE, 0xA473, 0x9D69, 0xA113, 0x9F43, 0xA2C0, + 0xA0F3, 0xA39F, 0xA57B, 0xA025, 0xA2E3, 0xA1DB, 0xA3D9, 0xA2C3, + 0xA4C4, 0x9F26, 0xA203, 0xA042, 0xA302, 0x9B2C, 0xA022, 0xA5C7, + 0xA11B, 0xA3D6, 0xA220, 0xA4BF, 0x9F26, 0xA200, 0xA028, 0xA2FA, + 0xA138, 0xA3F0, 0x9D5C, 0xA118, 0xA339, 0xA21D, 0xA427, 0x9E4F, + 0xA50D, 0xA02A, 0xA2F7, 0xA138, 0xA3E8, 0x9D44, 0xA06F, 0x9E77, + 0xA21A, 0xA422, 0xA314, 0xA50A, 0x9F7B, 0xA30B, 0xA135, 0xA367, + 0xA24E, 0xA450, 0x9E79, 0xA231, 0xA04C, 0xA328, 0xA519, 0xA043, + 0xA56A, 0xA14E, 0xA35F, 0xA24B, 0xA44D, 0x9F4F, 0xA18B, 0xA063, + 0xA339, 0xA16B, 0xA390, 0xA57B, 0xA0A5, 0xA373, 0xA262, 0xA473, + 0x9E9A, 0xA553, 0xA07C, 0xA29E, 0xA182, 0xA3A4, 0x9D92, 0xA162, + 0xA387, 0xA276, 0xA484, 0xA37E, 0xA4D8, 0xA07C, 0xA2B0, 0xA19B, + 0xA3B8, 0x9E6E, 0xA4B2, 0x9F8D, 0xA28A, 0xA495, 0xA392, 0xA4FD, + 0xA0AF, 0xA2DD, 0xA1AF, 0xA3E0, 0xA2BB, 0xA4D8, 0x9FBE, 0xA2B5, + 0xA4BB, 0xA615, 0xA1E3, 0xA411, 0xA2EF, 0xA506, 0xA0A3, 0xA5F2, + 0xA1BD, 0xA3E9, 0xA2C9, 0xA43D, 0x9FB7, 0xA20E, 0xA0DA, 0xA317, + 0x9D83, 0xA0D1, 0xA58E, 0xA1E8, 0xA411, 0xA2F1, 0xA479, 0x9FED, + 0xA2EB, 0xA10D, 0xA342, 0x9DBC, 0xA456, 0x9FBF, 0xA216, 0xA0E4, + 0xA333, 0xA49C, 0xA0D9, 0xA316, 0xA138, 0xA381, 0x9DF5, 0xA479, + 0x9FF5, 0xA241, 0xA112, 0xA35B, 0x9DAF, 0xA109, 0x9F03, 0xA232, + 0x9A52, 0xA289, 0xA4B3, 0xA028, 0xA283, 0xA157, 0xA398, 0x9ED1, + 0xA14E, 0x9FFF, 0xA25D, 0x9B8D, 0xA372, 0x9DDE, 0xA128, 0x9F2A, + 0xA19C, 0xA3D7, 0x9F07, 0xA17C, 0xA047, 0xA29F, 0xA173, 0xA3B1, + 0x9E14, 0xA16D, 0x9F60, 0xA290, 0x9BA5, 0x9F57, 0x9DEB, 0xA091, + 0x97BD, 0xA1B8, 0xA402, 0x9F2E, 0xA1AF, 0xA082, 0xA2CD, 0x9CE1, + 0xA062, 0x9F1F, 0xA1A0, 0xA059, 0xA2BE, 0x9BD7, 0x9F95, 0x9E2C, + 0xA0C7, 0xA323, 0x9E23, 0xA0C1, 0x9F6C, 0xA1E5, 0xA0B8, 0xA314, + 0x9D2A, 0xA0B2, 0x9F5D, 0xA1D6, 0x9A86, 0x9F54, 0x9CFE, 0x9FCE, + 0x9E6D, 0xA117, 0xA365, 0x9E67, 0xA0F7, 0x9FC1, 0xA22F, 0x9CE6, + 0x9FA1, 0x9E40, 0xA0E8, 0x9F98, 0xA220, 0x9BE1, 0x9F92, 0x9D64, + 0xA3C4, 0x9F89, 0xA161, 0xA01A, 0xA291, 0x9D38, 0xA014, 0x9E9F, + 0xA152, 0x9A9F, 0xA282, 0xA429, 0xA002, 0xA27C, 0xA143, 0xA2FE, + 0x9E89, 0xA13D, 0x9FF3, 0xA281, 0x9C1E, 0xA2EA, 0x9E7A, 0xA12E, + 0x9FE9, 0xA1B6, 0x9C11, 0x9FE0, 0xA1AD, 0xA06C, 0xA2EC, 0x9D9D, + 0xA068, 0x9EFB, 0xA1B5, 0xA05F, 0xA2F4, 0x9D8B, 0xA056, 0x9F06, + 0xA1A6, 0x9AEB, 0x9EFD, 0x9D81, 0xA061, 0x9EF7, 0xA1AE, 0xA370, + 0x9EEE, 0xA0E1, 0xA052, 0xA228, 0x9D83, 0xA060, 0x9EF6, 0xA0E9, + 0x9AE8, 0xA230, 0x9C8C, 0x9F81, 0x9E10, 0xA0DA, 0x9AD6, 0x9E0A, + 0x9C7A, 0x9F8C, 0xA232, 0x9C71, 0x9F88, 0x9E12, 0xA0F3, 0x9F7F, + 0xA235, 0x9C81, 0x9F90, 0x9E1D, 0xA0FB, 0x99A9, 0x9E14, 0x9C8C, + 0x9F98, 0x9E10, 0xA103, 0xA2CB, 0x9E24, 0xA0FA, 0x9FA3, 0xA180, + 0x9C93, 0x9F9A, 0x9E2C, 0xA03D, 0x99C3, 0xA19C, 0x9C84, 0x9FA2, + 0x9E37, 0xA045, 0x99D6, 0x9E33, 0x9C91, 0x9FAD, 0xA1B5, 0x9CA5, + 0x9FBE, 0x9E3E, 0xA05E, 0x9FCF, 0xA1BD, 0x9CB5, 0x9EDE, 0x9E46, + 0xA066, 0x99F0, 0x9E57, 0x9CC0, 0x9F00, 0x9E68, 0xA06E, 0xA265, + 0x9D6E, 0xA07F, 0x9F0B, 0xA1ED, 0x9CE1, 0x9F1C, 0x9E84, 0xA09E, + 0x9A05, 0x9E95, 0xA0AF, 0x9F29, 0xA147, 0xA0C0, 0xA2AA, 0x9DAF, + 0xA0B7, 0x9F4B, 0xA166, 0x9C0B, 0x9F57, 0x9DBC, 0xA0D4, 0x9A3F, + 0x9DD0, 0x9C30, 0x9F79, 0x9DE1, 0xA0F3, 0x9A6C, 0x9DF2, 0xA101, + 0x9F9B, 0xA1AD, 0x9D68, 0x9FA9, 0x9E17, 0xA135, 0x9BC1, 0x9E28, + 0x9D8D, 0x9FCB, 0x9E39, 0xA154, 0x9BE6, 0x9E4A, 0x9DB2, 0x9FEA, + 0x98D7, 0x9DC3, 0x9BF1, 0x9E6F, 0xA0AD, 0x9C0A, 0x9E80, 0x9DE5, + 0xA02F, 0x9E91, 0xA0CA, 0x9C4C, 0x9EB9, 0x9E0A, 0xA051, 0x9A71, + 0x9E1B, 0x9C71, 0x9EDB, 0x988C, 0x9C85, 0x9A9E, 0x9E57, 0x9C96, + 0x9EFB, 0xA142, 0x9CAA, 0x9F23, 0x9E79, 0xA0C7, 0x9AF7, 0x9EA4, + 0x9CE9, 0x9F5C, 0x9906, 0xA0FD, 0x9B24, 0x9EC1, 0x9D0E, 0x9F7C, + 0x9951, 0x9D3C, 0x9B69, 0x9EFD, 0x9734, 0x9B7D, 0x9F25, 0x9D78, + 0x9FD8, 0x9F36, 0xA187, 0x9CD6, 0x9F5C, 0x9DB7, 0xA00E, 0x9B11, + 0x9DC8, 0x9D13, 0x9F95, 0x9926, 0x9D3E, 0x9B56, 0x9DFF, 0x9D4F, + 0x9FE0, 0x9971, 0x9D7D, 0x9FEC, 0x9E55, 0xA0B0, 0x9BC9, 0x9E64, + 0x9DB9, 0xA037, 0x99EF, 0x9DDF, 0x9C0B, 0x9EB7, 0x9E0A, 0xA082, + 0x9B78, 0x9E33, 0x9C62, 0x9F05, 0x999B, 0x9C8D, 0x9BBA, 0x9E86, + 0x9CA1, 0x9F53, 0x99E8, 0x9CCF, 0x9C16, 0x9ED4, 0x97C5, 0x9F9E, + 0x9A4A, 0x9E3B, 0x9C6D, 0x9F22, 0x9991, 0x9C9B, 0x9F48, 0x9EA3, + 0xA00F, 0x9C10, 0x9EC9, 0x9CEF, 0x9F93, 0x9A2A, 0x9D1D, 0x9C67, + 0x9F17, 0x9D48, 0x9FF8, 0x9A8C, 0x9D6E, 0x9CC0, 0x9F7C, 0x9885, + 0x9CE9, 0x9AEE, 0x9DD9, 0x97BD, 0x9B1C, 0x9A5A, 0x9D57, 0x9FFF, + 0x9A86, 0xA0D5, 0x9B93, 0x9E6A, 0x9DA8, 0xA061, 0x9AE8, 0x9DE8, + 0x9D26, 0x9ECF, 0x98EF, 0x9D6B, 0x9B5C, 0x9E53, 0x982F, 0x9B8D, + 0x9ACE, 0x9DD1, 0x9BD0, 0x9EB6, 0x98B5, 0x9BFE, 0x9B45, 0x9E39, + 0x9661, 0x9B73, 0x9E79, 0x9C87, 0x9F58, 0x996E, 0x9CB2, 0x9BE7, + 0x9EDC, 0x98D4, 0x9FCF, 0x9B59, 0x9D35, 0x9C72, 0x9F53, 0x9954, + 0x9CB5, 0x9BE7, 0x9DA0, 0x98BA, 0x9C13, 0x99D6, 0x9D1E, 0x964B, + 0x9A22, 0x993F, 0x9C9B, 0x9E72, 0x9D9E, 0xA08D, 0x9C13, 0x9DF5, + 0x9D1E, 0x9EEC, 0x9A25, 0x9D76, 0x9C99, 0x9E72, 0x998E, 0x9CF6, + 0x9AB9, 0x9DF3, 0x9742, 0x9AFF, 0x9A28, 0x9D76, 0x9B45, 0x9E87, + 0x9979, 0x9CF6, 0x9ABC, 0x9E08, 0x9FC7, 0x9B02, 0x9E48, 0x9D8B, + 0x9F4E, 0x9A74, 0x9DE0, 0x9BA8, 0x9EEE, 0x9E20, 0x9FEE, 0x9B1D, + 0x9E74, 0xA03A, 0x9B7D, 0x9EC6, 0x9CA3, 0x9FC9, 0x9ADA, 0x9CE3, + 0x9C20, 0x9E0F, 0x98B9, 0x9C78, 0x9B95, 0x9D92, 0x981C, 0x9BF5, + 0x9B0F, 0x9D10, 0x975E, 0x9B6F, 0x98DC, 0x9C90, 0x9BB2, 0x9DBF, + 0x983F, 0x9C0D, 0x9991, 0x9D3F, 0x9784, 0x9B87, 0x98F7, 0x9CD7, + 0x94E1, 0x9960, 0x9D31, 0x9C54, 0x9E52, 0x98CE, 0x9CB1, 0x9A2F, + 0x9DF2, 0x9D06, 0x9F0D, 0x999B, 0x9D75, 0x9B08, 0x9EA8, 0x9909, + 0x9B68, 0x9A7C, 0x9E2E, 0x9871, 0x9ADF, 0x99F0, 0x9C35, 0x95DC, + 0x9A53, 0x995E, 0x9BC7, 0x9504, 0x99C7, 0x98CC, 0x9B46, 0x9A42, + 0x9C91, 0x9EB0, 0x9ABD, 0x9D00, 0x9C13, 0x9E50, 0x9A31, 0x9C80, + 0x9BA5, 0x9DD6, 0x99A2, 0x9C1A, 0x9B1F, 0x9D73, 0x9719, 0x9B94, + 0x9A9B, 0x9CF6, 0x9675, 0x9E46, 0x9832, 0x9C76, 0x9B86, 0x9DE1, + 0x9777, 0x9C0D, 0x9AFD, 0x9D69, 0x96D9, 0x9B8A, 0x98A5, 0x9D03, + 0x9635, 0x9926, 0x9D6D, 0x9AC3, 0x9D47, 0x9894, 0x9B53, 0x9A3A, + 0x9CCA, 0x9BDD, 0x9E44, 0x99C8, 0x9C64, 0x9B57, 0x9DCA, 0x9939, + 0x9BE1, 0x9AD6, 0x9D67, 0x98AC, 0x9B60, 0x9A67, 0x9CEC, 0x9814, + 0x9AF7, 0x99DB, 0x9C86, 0x977C, 0x9A6E, 0x994C, 0x9C06, 0x9AFB, + 0x9D9E, 0x98BF, 0x9B9D, 0x9A8F, 0x9D3B, 0x982A, 0x9B1C, 0x9A03, + 0x9CC0, 0x9525, 0x9AB0, 0x997C, 0x9C5A, 0x9475, 0x9A27, 0x98EF, + 0x9BDC, 0x93BF, 0x99A0, 0x960B, 0x9B73, 0x92E2, 0x96D6, 0x9B9C, + 0x98E5, 0x9BE7, 0x9AC7, 0x9D91, 0x9855, 0x9B69, 0x9A40, 0x9D31, + 0x97C2, 0x9AFD, 0x99D1, 0x9CB6, 0x9727, 0x9A79, 0x994A, 0x9C50, + 0x968E, 0x9A0D, 0x98B8, 0x9BEF, 0x95EA, 0x9983, 0x9845, 0x9B86, + 0x9548, 0x98F9, 0x97B0, 0x9B05, 0x94A0, 0x9CFA, 0x971A, 0x9A99, + 0x994D, 0x9C82, 0x967E, 0x9A2D, 0x98E0, 0x9C1C, 0x95E2, 0x99A6, + 0x9850, 0x9BB8, 0x9CCA, 0x9934, 0x9C7E, 0x9B4F, 0x9C58, 0x98A7, + 0x9C03, 0x9AE6, 0x9BF2, 0x9837, 0x9B56, 0x9A7C, 0x9B89, 0x97A4, + 0x9A76, 0x99F8, 0x9B25, 0x99CF, 0x9D3E, 0x98D7, 0x9AB9, 0x9948, + 0x9CDB, 0x9641, 0x9A38, 0x98D3, 0x9C7D, 0x95A2, 0x99CE, 0x9861, + 0x9C17, 0x9500, 0x995C, 0x97D3, 0x9BB3, 0x9455, 0x98EF, 0x975B, + 0x9B67, 0x93A7, 0x9862, 0x9C57, 0x9AFB, 0x9CDA, 0x9CC1, 0x9E5F, + 0x9A97, 0x9C77, 0x9C5E, 0x9E14, 0x9A28, 0x9C16, 0x9BFA, 0x9DCB, + 0x99BE, 0x9BB0, 0x9B94, 0x9D82, 0x994F, 0x9B4C, 0x9B30, 0x9D22, + 0x9185, 0x971B, 0x9AC9, 0x9A07, 0x9B73, 0x96A2, 0x9A48, 0x99B5, + 0x9B0A, 0x99FD, 0x9D9B, 0x9946, 0x9AA3, 0x9976, 0x9D52, 0x98D9, + 0x9A54, 0x98F1, 0x9D09, 0x9869, 0x99EA, 0x9867, 0x9CC0, 0x97F4, + 0x9998, 0x97DC, 0x9C74, 0x9781, 0x9929, 0x973A, 0x9C28, 0x96B8, + 0x98B9, 0x96C4, 0x9BDC, 0x95CE, 0x9864, 0x964B, 0x9B90, 0x915F, + 0x97F4, 0x95CA, 0x9B41, 0x9096, 0x9781, 0x954B, 0x9AF5, 0x8FC9, + 0x970B, 0x94CC, 0x9AA3, 0x8EE8, 0x9A8C, 0x9429, 0x9A54, 0x9868, + 0x9A3A, 0x93A1, 0x9A02, 0x97F8, 0x99ED, 0x9316, 0x99B5, 0x97A5, + 0x999B, 0x9C7C, 0x9963, 0x9B56, 0x9949, 0x9C45, 0x990E, 0x9B07, + 0x98F4, 0x9BF9, 0x98BC, 0x9AD0, 0x989F, 0x9BC2, 0x9864, 0x9A9B, + 0x984F, 0x9B90, 0x9811, 0x9A4C, 0x97F7, 0x9B44, 0x97B9, 0x9A12, + 0x979F, 0x9B0A, 0x9761, 0x99DA, 0x9744, 0x9ABE, 0x9ABC, 0x9CE3, + 0x96EE, 0x9A89, 0x9A6D, 0x9CB1, 0x9693, 0x9A4F, 0x9A33, 0x9C7D, + 0x963A, 0x9A02, 0x99FE, 0x9C46, 0x95DC, 0x99C8, 0x99AC, 0x9BFF, + 0x957B, 0x998E, 0x9972, 0x9BCB, 0x951F, 0x993E, 0x993A, 0x9B94, + 0x94BB, 0x9904, 0x9902, 0x9B5F, 0x945C, 0x98CC, 0x98AD, 0x9B28, + 0x9ACD, 0x93D5, 0x9873, 0x9776, 0x9AC5, 0x936E, 0x9838, 0x9751, + 0x9AB8, 0x9306, 0x9800, 0x9713, 0x9A83, 0x9299, 0x97C0, 0x96F3, + 0x9A49, 0x922E, 0x9785, 0x96CB, 0x9A14, 0x91C3, 0x9732, 0x96A8, + 0x99DF, 0x9152, 0x96F2, 0x9685, 0x99A5, 0x90DC, 0x96B4, 0x9662, + 0x9970, 0x9065, 0x9679, 0x9657, 0x9933, 0x8FEE, 0x9636, 0x9634, + 0x98FE, 0x8F74, 0x95F8, 0x95F1, 0x98C6, 0x8EF4, 0x95BA, 0x95B3, + 0x98A1, 0x8E71, 0x9579, 0x9575, 0x9869, 0x8DE8, 0x953B, 0x9534, + 0x9831, 0x8D5C, 0x9515, 0x94F3, 0x97F6, 0x8CCA, 0x94CF, 0x94B2, + 0x97B9, 0x8C2F, 0x948E, 0x948C, 0x9799, 0x8B8E, 0x944A, 0x9446, + 0x975E, 0x8AE7, 0x9406, 0x9402, 0x9723, 0x8A3C, 0x93E0, 0x93BE, + 0x9700, 0x897A, 0x939C, 0x9395, 0x96C5, 0x88AC, 0x9358, 0x9351, + 0x9685, 0x87D4, 0x932F, 0x930A, 0x9662, 0x86D3, 0x92E8, 0x92E9, + 0x9624, 0x85B9, 0x92A1, 0x929F, 0x9601, 0x8443, 0x927D, 0x9276, + 0x95C3, 0x8221, 0x9236, 0x922F, 0x97EC, 0x7FFF, 0x957F, 0x91E5, + 0x97B4, 0x7FFF, 0x9559, 0x91B9, 0x9794, 0x7FFF, 0x951B, 0x9190, + 0x9759, 0x7FFF, 0x94F5, 0x9148, 0x9739, 0x7FFF, 0x94B7, 0x911F, + 0x96FE, 0x9A52, 0x98CA, 0x9B94, 0x96DB, 0x9A32, 0x98AA, 0x988E, + 0x96B8, 0x9A15, 0x942A, 0x986E, 0x967D, 0x99E0, 0x9404, 0x984E, + 0x965A, 0x99BE, 0x93DE, 0x9816, 0x963A, 0x9989, 0x939F, 0x97F6, + 0x97F2, 0x9969, 0x9379, 0x97D3, 0x97BA, 0x994C, 0x95B3, 0x979E, + 0x9797, 0x9A7A, 0x9595, 0x9779, 0x9777, 0x9A48, 0x9572, 0x98D4, + 0x973C, 0x9A28, 0x954F, 0x98B4, 0x971C, 0x9A0B, 0x950E, 0x9894, + 0x96F9, 0x99D6, 0x94EB, 0x9877, 0x96D9, 0x99B9, 0x94C5, 0x983F, + 0x983D, 0x9999, 0x94A2, 0x981F, 0x981D, 0x9A95, 0x9675, 0x97FF, + 0x97FD, 0x91CF, 0x963A, 0x943C, 0x97C5, 0x91A6, 0x9617, 0x9416, + 0x97A5, 0x9182, 0x95F4, 0x93F0, 0x9785, 0x9156, 0x95D1, 0x95CD, + 0x98C3, 0x912D, 0x95B1, 0x95AC, 0x98A3, 0x93A3, 0x971F, 0x9571, + 0x986E, 0x935F, 0x96FF, 0x954E, 0x984E, 0x9339, 0x96E1, 0x8C9D, + 0x9524, 0x9318, 0x96C1, 0x9060, 0x9506, 0x92F2, 0x969E, 0x9058, + 0x94E3, 0x92C9, 0x97D0, 0x9031, 0x94BD, 0x94B9, 0x97B0, 0x9005, + 0x963D, 0x9498, 0x9790, 0x9276, 0x961A, 0x9475, 0x9770, 0x9250, + 0x95F7, 0x944F, 0x9896, 0x922A, 0x95D4, 0x95D5, 0x985E, 0x9206, + 0x8F57, 0x95B2, 0x93E9, 0x970B, 0x91D6, 0x958F, 0x93C5, 0x981F, + 0x91B2, 0x956C, 0x9552, 0x97FF, 0x9189, 0x96AA, 0x952F, 0x97DF, + 0x9376, 0x968A, 0x9509, 0x97BF, 0x9350, 0x9667, 0x94EB, 0x98B5, + 0x932F, 0x9647, 0x9645, 0x9895, 0x9309, 0x9761, 0x9625, 0x9875, + 0x949F, 0x9741, 0x9602, 0x9962, 0x9479, 0x9721, 0x90B7, 0x95E0, + 0x9456, 0x9832, 0x9293, 0x95BD, 0x95B6, 0x9812, 0x928B, 0x96D8, + 0x9598, 0x97F2, 0x9267, 0x96BD, 0x9578, 0x98CD, 0x93E6, 0x969D, + 0x9696, 0x98AD, 0x93C0, 0x9797, 0x9676, 0x9890, 0x93A2, 0x9779, + 0x9658, 0x8FD5, 0x9509, 0x937A, 0x9755, 0x8FB1, 0x94EB, 0x9372, + 0x9735, 0x919D, 0x960F, 0x94C1, 0x9717, 0x9195, 0x95EC, 0x94A3, + 0x9327, 0x9320, 0x95CC, 0x8F4A, 0x9479, 0x92FF, 0x96D1, 0x8F23, + 0x945B, 0x92D9, 0x96B1, 0x911E, 0x9585, 0x9436, 0x9691, 0x90F5, + 0x9562, 0x9410, 0x9775, 0x9289, 0x9542, 0x9540, 0x9755, 0x9268, + 0x9648, 0x951D, 0x982E, 0x93C6, 0x962A, 0x9626, 0x9811, 0x93A3, + 0x970F, 0x9603, 0x98D1, 0x9382, 0x96EF, 0x95E8, 0x98B4, 0x94B3, + 0x97CB, 0x96CD, 0x95C1, 0x9490, 0x97B0, 0x9330, 0x96A9, 0x959C, + 0x9871, 0x9328, 0x968B, 0x957C, 0x9851, 0x9446, 0x976A, 0x9664, + 0x9836, 0x9423, 0x974D, 0x92DB, 0x9645, 0x9535, 0x980E, 0x92BA, + 0x9622, 0x9512, 0x97F3, 0x93D9, 0x9707, 0x9600, 0x8F63, 0x93D1, + 0x928A, 0x95E0, 0x8F58, 0x94CB, 0x93AC, 0x96C5, 0x90EA, 0x94C3, + 0x938B, 0x96AA, 0x923A, 0x9599, 0x949E, 0x976E, 0x9219, 0x9591, + 0x8EF9, 0x947C, 0x933C, 0x9661, 0x908C, 0x9459, 0x9336, 0x9641, + 0x91C9, 0x954D, 0x9434, 0x970B, 0x91C1, 0x952A, 0x9526, 0x97CC, + 0x92EC, 0x95FD, 0x9508, 0x97B1, 0x93EA, 0x96C7, 0x95DB, 0x985A, + 0x93C7, 0x92A1, 0x95BB, 0x8FE1, 0x94C1, 0x8C34, 0x9279, 0x9143, + 0x949E, 0x8E07, 0x9398, 0x926F, 0x958A, 0x8FA9, 0x9375, 0x9373, + 0x963F, 0x90F0, 0x946D, 0x9350, 0x9637, 0x90E8, 0x9546, 0x9448, + 0x96E9, 0x9201, 0x9523, 0x9521, 0x9795, 0x9303, 0x95F6, 0x9501, + 0x9405, 0x9401, 0x96A8, 0x91CC, 0x94DF, 0x93E3, 0x9688, 0x91A6, + 0x95B2, 0x94BA, 0x9734, 0x92B3, 0x917E, 0x958B, 0x8EC2, 0x93AF, + 0x928E, 0x956D, 0x9016, 0x948B, 0x938A, 0x9625, 0x914C, 0x946B, + 0x9467, 0x96CF, 0x925F, 0x9529, 0x9449, 0x9442, 0x9340, 0x95F4, + 0x9507, 0x8E5C, 0x9322, 0x9213, 0x95D2, 0x8FB0, 0x93FF, 0x9318, + 0x966F, 0x90CE, 0x94D6, 0x93DD, 0x92F3, 0x91DF, 0x9591, 0x8F7B, + 0x93D3, 0x92CE, 0x9641, 0x909C, 0x948F, 0x93AE, 0x9623, 0x9197, + 0x9548, 0x946D, 0x96BD, 0x929C, 0x952A, 0x9526, 0x9764, 0x9364, + 0x9277, 0x9165, 0x9044, 0x943E, 0x8BDE, 0x9252, 0x913D, 0x94FA, + 0x8EE8, 0x9335, 0x922A, 0x94D7, 0x8FF3, 0x93FA, 0x9313, 0x9592, + 0x910B, 0x94B6, 0x93D5, 0x9627, 0x91FB, 0x9493, 0x9491, 0x93B3, + 0x92C9, 0x954E, 0x90C0, 0x946F, 0x93A4, 0x95E6, 0x91B3, 0x9525, + 0x944D, 0x8CE2, 0x929A, 0x91A4, 0x9503, 0x8E28, 0x935F, 0x9272, + 0x94E8, 0x907E, 0x941C, 0x933A, 0x924D, 0x9159, 0x94BF, 0x8DF5, + 0x9318, 0x9243, 0x9572, 0x902E, 0x93D7, 0x930E, 0x960C, 0x9127, + 0x9493, 0x93B5, 0x95EF, 0x91F6, 0x9531, 0x9471, 0x9686, 0x92C4, + 0x91EF, 0x950F, 0x8FD6, 0x9386, 0x8C2B, 0x91C7, 0x90CF, 0x942A, + 0x8E9B, 0x9295, 0x91A7, 0x94E3, 0x8FA1, 0x933F, 0x9270, 0x9565, + 0x90A0, 0x94BA, 0x93FA, 0x95FD, 0x9249, 0x949F, 0x9498, 0x93D5, + 0x930C, 0x95DA, 0x914E, 0x9476, 0x93B3, 0x9671, 0x921A, 0x9514, + 0x9044, 0x9390, 0x92C7, 0x95AE, 0x911C, 0x9434, 0x9387, 0x9630, + 0x91CF, 0x94D2, 0x8FF9, 0x9424, 0x9360, 0x8B48, 0x91C4, 0x8FEC, + 0x9404, 0x8DC6, 0x926F, 0x919C, 0x94A2, 0x8EB7, 0x9319, 0x924F, + 0x9525, 0x909B, 0x93BD, 0x8EAB, 0x9240, 0x916D, 0x945E, 0x8F90, + 0x92EA, 0x92E8, 0x9599, 0x906E, 0x943A, 0x938D, 0x9618, 0x91F6, + 0x911E, 0x9418, 0x8E4D, 0x92A1, 0x8BFB, 0x9114, 0x9035, 0x934B, + 0x8E3C, 0x91CA, 0x90F1, 0x9490, 0x8F29, 0x9321, 0x9273, 0x9515, + 0x90CA, 0x93C3, 0x9318, 0x9592, 0x9194, 0x9464, 0x8FDE, 0x92F5, + 0x9244, 0x8B8A, 0x9098, 0x8FB3, 0x9395, 0x8DB6, 0x921A, 0x914A, + 0x941E, 0x8EA4, 0x92C5, 0x91F8, 0x94A1, 0x9067, 0x93F5, 0x8E93, + 0x92A1, 0x911B, 0x9480, 0x8F5C, 0x932D, 0x927C, 0x9500, 0x90F4, + 0x93C9, 0x9320, 0x8D49, 0x91A2, 0x90EA, 0x9450, 0x8F25, 0x92FA, + 0x8C18, 0x917E, 0x90C0, 0x9383, 0x8E2C, 0x9229, 0x9174, 0x94AF, + 0x8FD7, 0x935F, 0x92B1, 0x952F, 0x914A, 0x93E8, 0x9358, 0x9596, + 0x91F8, 0x950B, 0x906A, 0x93DA, 0x932F, 0x8CD0, 0x91D1, 0x9117, + 0x93B7, 0x8E97, 0x925E, 0x91AC, 0x94C6, 0x9036, 0x9394, 0x92EB, + 0x8C9B, 0x9188, 0x90CD, 0x9374, 0x8E60, 0x9230, 0x8B60, 0x90C3, + 0x8FEC, 0x9366, 0x8E54, 0x920C, 0x9157, 0x9472, 0x8FDB, 0x933D, + 0x9294, 0x94DF, 0x9074, 0x93C6, 0x8EEE, 0x9271, 0x91DB, 0x8B1A, + 0x906B, 0x8FA7, 0x92FC, 0x8D01, 0x91B2, 0x90FF, 0x9380, 0x8EB9, + 0x9241, 0x8CF5, 0x90DA, 0x903A, 0x935C, 0x8E92, 0x921D, 0x9181, + 0x946D, 0x9010, 0x9338, 0x92A5, 0x8CBB, 0x915A, 0x90A4, 0x8F26, + 0x8E5B, 0x91EF, 0x8BAB, 0x9098, 0x8FDF, 0x930A, 0x8E4F, 0x91C8, + 0x912C, 0x9419, 0x8FB5, 0x92E3, 0x9253, 0x91A4, 0x9105, 0x93F5, + 0x8EE9, 0x8DFF, 0x922C, 0x8C4A, 0x90DE, 0x903E, 0x92B6, 0x8DEE, + 0x9173, 0x90D4, 0x93B2, 0x8F5A, 0x9292, 0x8CF6, 0x914C, 0x90AD, + 0x93A4, 0x8F4E, 0x926E, 0x91D5, 0x9497, 0x9086, 0x8FE6, 0x92F0, + 0x8D92, 0x91B1, 0x9117, 0x907D, 0x8FBE, 0x92CF, 0x8D86, 0x91A5, + 0x9055, 0x933D, 0x8EF2, 0x92AB, 0x9215, 0x9433, 0x90E2, 0x932F, + 0x929E, 0x920B, 0x915C, 0x8B98, 0x9022, 0x8F66, 0x9278, 0x8DF7, + 0x9150, 0x909B, 0x9377, 0x8F58, 0x9254, 0x91C0, 0x9465, 0x908F, + 0x9353, 0x8F33, 0x9230, 0x919C, 0x9444, 0x9068, 0x932F, 0x92B5, + 0x9224, 0x8CE2, 0x90F7, 0x9041, 0x9321, 0x8EFA, 0x9200, 0x9169, + 0x93FF, 0x9033, 0x87F8, 0x8E2E, 0x8D62, 0x9148, 0x8AED, 0x9011, + 0x8F6E, 0x9249, 0x8D51, 0x9137, 0x90A0, 0x9343, 0x8F44, 0x923B, + 0x8D29, 0x9113, 0x9079, 0x931F, 0x8F3B, 0x8DD0, 0x9183, 0x8C48, + 0x9052, 0x8FB7, 0x9286, 0x8E6D, 0x915F, 0x8C3C, 0x9046, 0x8FA6, + 0x92EE, 0x8D9A, 0x9153, 0x90BC, 0x9359, 0x8F7F, 0x8EDE, 0x8E37, + 0x8D8A, 0x9095, 0x8A5C, 0x8F5D, 0x8EB4, 0x922E, 0x8D5D, 0x9106, + 0x9085, 0x9310, 0x8EAB, 0x920A, 0x8C86, 0x90F8, 0x9061, 0x92EC, + 0x8E81, 0x8DD7, 0x916B, 0x8C73, 0x903A, 0x8F9F, 0x9253, 0x8E6E, + 0x9144, 0x8C4B, 0x902E, 0x8F8E, 0x92BB, 0x8E4C, 0x91B2, 0x90A4, + 0x9394, 0x8F6C, 0x9297, 0x921F, 0x8CCB, 0x9110, 0x8B55, 0x8F5E, + 0x8F5C, 0x91FB, 0x8D69, 0x90EC, 0x9057, 0x92DD, 0x8F35, 0x91D7, + 0x915C, 0x90CA, 0x9046, 0x9329, 0x8F10, 0x8E85, 0x91B1, 0x8C82, + 0x90B7, 0x8F87, 0x9293, 0x8E5E, 0x91A3, 0x8C5A, 0x9093, 0x8FF9, + 0x9288, 0x8E39, 0x917F, 0x9106, 0x93B9, 0x8FF0, 0x92D5, 0x925D, + 0x8E29, 0x9159, 0x8C22, 0x905F, 0x8FC7, 0x923E, 0x8DFF, 0x914B, + 0x90BC, 0x8B5C, 0x8FA0, 0x8805, 0x8DF6, 0x8DEF, 0x9125, 0x8B31, + 0x8F94, 0x8EF6, 0x9208, 0x8DCA, 0x9101, 0x8BDB, 0x9006, 0x8F6B, + 0x88C4, 0x8DBE, 0x8D11, 0x9061, 0x8B15, 0x8F60, 0x8EC2, 0x8E37, + 0x8D95, 0x90CD, 0x8BA0, 0x8FB9, 0x8F37, 0x9213, 0x8D6A, 0x9122, + 0x90A7, 0x8AD7, 0x8FA9, 0x8876, 0x8DE9, 0x8D5D, 0x9085, 0x8B65, + 0x8F82, 0x8F00, 0x91DF, 0x8DD6, 0x90F1, 0x8BF0, 0x8FF4, 0x8EDB, + 0x8838, 0x8DB4, 0x8D22, 0x9051, 0x8B2C, 0x8F50, 0x8EB2, 0x9198, + 0x8DA1, 0x90A4, 0x8BB7, 0x8FAC, 0x8F27, 0x91FE, 0x8D7C, 0x9110, + 0x9097, 0x8BAA, 0x8F9C, 0x898E, 0x8DF5, 0x8D6C, 0x90EA, 0x8C32, + 0x8F75, 0x8EF2, 0x91B7, 0x8DCC, 0x90C6, 0x904A, 0x8FCE, 0x8F4C, + 0x8952, 0x8E47, 0x8DBE, 0x90B6, 0x8BF7, 0x8FBE, 0x8F3C, 0x91E1, + 0x8D97, 0x9109, 0x8C7C, 0x9014, 0x8F95, 0x91D3, 0x8E12, 0x915C, + 0x90E3, 0x8C52, 0x8F76, 0x8EF1, 0x8E6C, 0x8DE9, 0x90BF, 0x8CD4, + 0x8FE0, 0x8FDE, 0x926C, 0x8E5E, 0x9128, 0x90AF, 0x90B0, 0x8FBA, + 0x8A33, 0x8EBB, 0x8E38, 0x9102, 0x8D24, 0x9010, 0x8F93, 0x9227, + 0x8E92, 0x9155, 0x8CFF, 0x9066, 0x8FEA, 0x9274, 0x8F07, 0x91A5, + 0x8DFF, 0x90B9, 0x8C62, 0x8FDA, 0x8F5D, 0x91F2, 0x8E5B, 0x910C, + 0x90A9, 0x9030, 0x8FB4, 0x922C, 0x8EB5, 0x8E4E, 0x90FC, 0x8D3D, + 0x900A, 0x8F8E, 0x8F2A, 0x8EA5, 0x9136, 0x8D9F, 0x9060, 0x8FE4, + 0x9256, 0x8F01, 0x8E7F, 0x8DFC, 0x8D76, 0x903A, 0x8BD3, 0x8FD0, + 0x8EDB, 0x91D2, 0x8DEC, 0x90FF, 0x8CDC, 0x9023, 0x8FAC, 0x8A97, + 0x8EC6, 0x8DC8, 0x90D9, 0x8CB6, 0x9000, 0x8B06, 0x8F20, 0x8EA0, + 0x9129, 0x8D2F, 0x9053, 0x8FD7, 0x8AF5, 0x8EF7, 0x89C3, 0x8E10, + 0x8D8D, 0x902D, 0x8BED, 0x8F50, 0x8ED1, 0x9151, 0x8DE7, 0x9080, + 0x8C6F, 0x8BDF, 0x8FA2, 0x8A25, 0x8E41, 0x8DBE, 0x90CF, 0x8CCD, + 0x8FF5, 0x8B26, 0x8F18, 0x8E99, 0x9109, 0x8D2D, 0x8CA4, 0x8C31, + 0x8BA4, 0x8EF2, 0x89E6, 0x8E09, 0x8D85, 0x9023, 0x8C0A, 0x8F46, + 0x8A53, 0x8E65, 0x8DE5, 0x871B, 0x8CF2, 0x8C68, 0x8F98, 0x8AD7, + 0x8EBA, 0x8909, 0x8DCE, 0x8CC8, 0x904A, 0x8BCC, 0x8EF8, 0x8E94, + 0x88FB, 0x8DAA, 0x86DB, 0x8CB7, 0x8BA5, 0x8F4A, 0x8A9E, 0x8E6C, + 0x8E02, 0x90D3, 0x8D15, 0x8FA0, 0x8B93, 0x8A74, 0x8E5C, 0x8958, + 0x8D72, 0x8CE9, 0x8FD9, 0x8BF2, 0x8F15, 0x8A62, 0x8E31, 0x8DCA, + 0x8D47, 0x9028, 0x8FC5, 0x91E8, 0x8EED, 0x9133, 0x8DA1, 0x8D1E, + 0x9002, 0x8C29, 0x8F3E, 0x8EC4, 0x8E60, 0x8DF9, 0x90AC, 0x8D0C, + 0x8FEE, 0x8F7A, 0x8B19, 0x8EB5, 0x897C, 0x8DD1, 0x8D67, 0x9027, + 0x8C76, 0x8F68, 0x8E8F, 0x8E88, 0x8E24, 0x9064, 0x8CD3, 0x8CCF, + 0x8F42, 0x8B52, 0x8EDD, 0x8E00, 0x8D99, 0x8D13, 0x904E, 0x8C3B, + 0x8F1D, 0x8EB6, 0x8A21, 0x8DD8, 0x87EC, 0x8D04, 0x8C80, 0x8F6A, + 0x8B19, 0x8E8F, 0x8E28, 0x8DC3, 0x8D43, 0x8732, 0x8C6E, 0x8B7B, + 0x8EE1, 0x8A77, 0x8E00, 0x8D9B, 0x8D34, 0x8C45, 0x8F7B, 0x8BD5, + 0x8AD9, 0x8E55, 0x893C, 0x8D73, 0x877E, 0x8C9C, 0x8C34, 0x8EF5, + 0x8AB0, 0x8E2D, 0x8DC6, 0x8D5F, 0x8C78, 0x862D, 0x8B9A, 0x8B9B, + 0x8E7F, 0x8995, 0x8D9E, 0x8D34, 0x8CCF, 0x8C62, 0x8F1C, 0x8B00, + 0x8A70, 0x8DF3, 0x88E9, 0x8D0E, 0x8725, 0x8C39, 0x8BC9, 0x8E91, + 0x8A5E, 0x8DCB, 0x8D64, 0x883C, 0x8C95, 0x85DB, 0x8BA3, 0x8B32, + 0x8E1E, 0x89BB, 0x8D3C, 0x8CD4, 0x8C6A, 0x8BFF, 0x8F18, 0x8A97, + 0x8A23, 0x8DF4, 0x8914, 0x8D26, 0x8779, 0x8BD4, 0x8B66, 0x8E8F, + 0x89F5, 0x8DCC, 0x8D65, 0x87EE, 0x8C96, 0x86BD, 0x8BC0, 0x8AC9, + 0x8E08, 0x89E1, 0x8D3D, 0x8CD8, 0x8F65, 0x8C03, 0x8EBC, 0x8B27, + 0x8E56, 0x8DF5, 0x9052, 0x8D29, 0x8CC2, 0x8C5A, 0x8B6A, 0x8E90, + 0x8A8D, 0x8DCD, 0x8D66, 0x8FE3, 0x8C97, 0x8F83, 0x8BC4, 0x8B59, + 0x8E69, 0x89ED, 0x8DA0, 0x8D3C, 0x8C74, 0x8C06, 0x8EFE, 0x8B2D, + 0x8ABF, 0x8DDD, 0x89D7, 0x8D2D, 0x8854, 0x8CC1, 0x8BF3, 0x8ED7, + 0x8B1A, 0x8E2B, 0x89AB, 0x8936, 0x8D00, 0x8840, 0x8C31, 0x8BC6, + 0x8E67, 0x8A80, 0x8E04, 0x899A, 0x8D3B, 0x8C70, 0x8790, 0x8B9B, + 0x8B30, 0x8AC4, 0x8A53, 0x8D75, 0x88F6, 0x8CC5, 0x8C5D, 0x8F19, + 0x8B8A, 0x8489, 0x8AAE, 0x8A3F, 0x8D64, 0x8956, 0x8C98, 0x8C33, + 0x8BCB, 0x8B5D, 0x8E49, 0x8A13, 0x899F, 0x8D38, 0x88B5, 0x8C6E, + 0x869B, 0x8B9E, 0x8AE0, 0x8E22, 0x8A6D, 0x8D72, 0x8889, 0x880B, + 0x8C44, 0x8687, 0x8B88, 0x8B1F, 0x8E0C, 0x89D2, 0x8D49, 0x88E9, + 0x886E, 0x8C2E, 0x86F7, 0x8B5D, 0x8AF2, 0x8A17, 0x89A5, 0x8D1F, + 0x8842, 0x8C69, 0x8C04, 0x8645, 0x8AE3, 0x83E7, 0x8A70, 0x89FF, + 0x8D09, 0x88A7, 0x8C3F, 0x8BDA, 0x8B88, 0x8B1D, 0x8467, 0x8A43, + 0x8964, 0x8D42, 0x8877, 0x8C2E, 0x8703, 0x8BC2, 0x8AF0, 0x8E24, + 0x8D7E, 0x89C0, 0x8D18, 0x8CB6, 0x8F01, 0x8C00, 0x8B97, 0x8ADF, + 0x8A71, 0x8DAF, 0x8993, 0x8CEE, 0x8CA0, 0x8C3B, 0x8BD3, 0x863B, + 0x8B19, 0x8AB3, 0x8D88, 0x8965, 0x8CDB, 0x8909, 0x8C77, 0x8BA9, + 0x8E67, 0x8B58, 0x8A86, 0x8A1A, 0x89C2, 0x8CFB, 0x88DE, 0x8C4A, + 0x8BE5, 0x8E81, 0x8B2E, 0x84E5, 0x8A6E, 0x8A02, 0x8CE7, 0x88B0, + 0x8C81, 0x87DC, 0x8BD0, 0x8B01, 0x8E10, 0x8AAD, 0x89D4, 0x8D07, + 0x890D, 0x8C57, 0x87AB, 0x8C07, 0x8B3B, 0x8E41, 0x8A83, 0x842B, + 0x89BF, 0x8950, 0x8C90, 0x880E, 0x8BDC, 0x871D, 0x8B28, 0x8ABD, + 0x83F4, 0x89FF, 0x8990, 0x8CC4, 0x8855, 0x8C16, 0x86EC, 0x8B62, + 0x8AF7, 0x8DA9, 0x8A3C, 0x834B, 0x890D, 0x8908, 0x8C4D, 0x8752, + 0x8B38, 0x8B36, 0x8A80, 0x8A79, 0x8316, 0x8950, 0x8949, 0x8C23, + 0x8810, 0x8B6F, 0x86A1, 0x8B07, 0x8AB5, 0x8D50, 0x8990, 0x898B, + 0x88AC, 0x8856, 0x8BF3, 0x870D, 0x8B44, 0x8A8E, 0x8A87, 0x89CD, + 0x8381, 0x8908, 0x8907, 0x8C2C, 0x87C8, 0x8B7B, 0x865E, 0x8AC6, + 0x8A5A, 0x8D56, 0x899C, 0x8947, 0x88D5, 0x8811, 0x8BB2, 0x86C2, + 0x8B00, 0x8AFB, 0x8A48, 0x8A41, 0x832F, 0x8918, 0x88AB, 0x8C33, + 0x8766, 0x8B84, 0x8690, 0x8ACD, 0x8A19, 0x8D02, 0x8958, 0x8CB5, + 0x8893, 0x8C07, 0x8BA4, 0x8751, 0x8B09, 0x8B05, 0x8A51, 0x8A50, + 0x8CD5, 0x8927, 0x8C85, 0x8BDE, 0x8798, 0x8B8B, 0x86C0, 0x8ADC, + 0x8A25, 0x8D4D, 0x89CF, 0x8CA5, 0x8910, 0x8832, 0x8C0C, 0x8763, + 0x8B13, 0x8630, 0x8A5E, 0x8A5C, 0x8CD9, 0x89A1, 0x88E1, 0x8874, + 0x881E, 0x8B97, 0x874F, 0x8AE5, 0x8AE1, 0x8A30, 0x89DE, 0x83A3, + 0x891F, 0x891B, 0x8BBA, 0x87EA, 0x8B67, 0x86C0, 0x8AB5, 0x8A66, + 0x8564, 0x89B0, 0x8941, 0x88F1, 0x8898, 0x8BE8, 0x87D0, 0x8B3C, + 0x8AED, 0x862C, 0x8A38, 0x84CE, 0x89E4, 0x892A, 0x8C08, 0x8867, + 0x8BBA, 0x879F, 0x8745, 0x8ABD, 0x85FB, 0x8A0A, 0x851B, 0x89B6, + 0x88FC, 0x8BDB, 0x88A4, 0x87E0, 0x8716, 0x8717, 0x8A8F, 0x85C9, + 0x8A3E, 0x898A, 0x8988, 0x8933, 0x81FE, 0x8873, 0x881B, 0x8B5E, + 0x8754, 0x8AC3, 0x85AF, 0x8A10, 0x89BE, 0x83E0, 0x8905, 0x82E6, + 0x88AD, 0x87EC, 0x8B2E, 0x8723, 0x8A95, 0x85F5, 0x851A, 0x8990, + 0x8430, 0x893C, 0x8881, 0x887C, 0x8827, 0x8B61, 0x8760, 0x870A, + 0x8A63, 0x8561, 0x8A12, 0x847D, 0x890E, 0x890C, 0x8BC9, 0x87F8, + 0x87A5, 0x8B32, 0x86D6, 0x8A38, 0x8A33, 0x85A3, 0x8994, 0x8993, + 0x88DE, 0x8888, 0x8B9A, 0x8831, 0x8B02, 0x8B00, 0x8714, 0x8A67, + 0x85E9, 0x89B2, 0x8965, 0x8C5A, 0x890E, 0x8BC8, 0x8800, 0x87AA, + 0x8AD5, 0x86E3, 0x8A84, 0x85B5, 0x89E8, 0x89E7, 0x847A, 0x88E0, + 0x829C, 0x888E, 0x87D0, 0x8AEF, 0x8723, 0x8A9F, 0x8656, 0x85F7, + 0x8A04, 0x84C4, 0x8968, 0x88B0, 0x8860, 0x885B, 0x8B68, 0x87B5, + 0x86F0, 0x8A72, 0x8695, 0x89D9, 0x8566, 0x8985, 0x8938, 0x88E5, + 0x88E4, 0x82CF, 0x87D3, 0x8782, 0x8AEB, 0x8727, 0x8A9D, 0x8605, + 0x85A8, 0x8955, 0x84D1, 0x8904, 0x8388, 0x8861, 0x880E, 0x8B08, + 0x874B, 0x86F4, 0x869B, 0x85CF, 0x8A1F, 0x8570, 0x8924, 0x8437, + 0x8881, 0x887D, 0x827A, 0x87D7, 0x8786, 0x8782, 0x8668, 0x8A3A, + 0x860F, 0x89A3, 0x899F, 0x847C, 0x8905, 0x8333, 0x87FA, 0x87FB, + 0x8AED, 0x874F, 0x8A9F, 0x86A2, 0x86A3, 0x89BF, 0x857D, 0x896E, + 0x8444, 0x88D1, 0x8881, 0x8290, 0x882F, 0x8125, 0x871D, 0x86C4, + 0x8A27, 0x8616, 0x898B, 0x85B5, 0x84E8, 0x88EC, 0x8427, 0x889B, + 0x884B, 0x87F8, 0x87A4, 0x8A89, 0x868F, 0x8638, 0x89EF, 0x85DC, + 0x8958, 0x8525, 0x88BB, 0x83EC, 0x8867, 0x8816, 0x8AEB, 0x8773, + 0x8771, 0x871B, 0x86C7, 0x89C0, 0x85A7, 0x896F, 0x84F3, 0x88D5, + 0x8888, 0x83CF, 0x87E5, 0x87E3, 0x8790, 0x873A, 0x8A6B, 0x8692, + 0x8639, 0x863A, 0x85E3, 0x893C, 0x852C, 0x88A2, 0x8852, 0x8816, + 0x87AC, 0x82C9, 0x8757, 0x8706, 0x86AF, 0x8659, 0x89A2, 0x85AB, + 0x8551, 0x8920, 0x84F5, 0x88CC, 0x843A, 0x887D, 0x882A, 0x87DC, + 0x878C, 0x81BA, 0x8737, 0x86E3, 0x89B7, 0x8574, 0x8937, 0x84BD, + 0x84BB, 0x88E4, 0x8400, 0x8847, 0x833B, 0x87F5, 0x87A4, 0x8A64, + 0x86FE, 0x7F93, 0x8659, 0x8602, 0x894C, 0x8551, 0x88FE, 0x84F5, + 0x8498, 0x8862, 0x8301, 0x87BF, 0x8235, 0x876C, 0x871C, 0x89E3, + 0x8672, 0x7EFB, 0x85C7, 0x8570, 0x8913, 0x84BE, 0x88C2, 0x8403, + 0x83A2, 0x87DA, 0x82DD, 0x8739, 0x811F, 0x86E4, 0x8690, 0x89AD, + 0x85E5, 0x858E, 0x8537, 0x84DD, 0x88DD, 0x8425, 0x888B, 0x8366, + 0x8305, 0x87A0, 0x823A, 0x86FF, 0x86A9, 0x8658, 0x8604, 0x8974, + 0x8570, 0x8516, 0x8517, 0x84BA, 0x88A1, 0x83FF, 0x8852, 0x8802, + 0x8262, 0x8764, 0x8195, 0x86C2, 0x866F, 0x8635, 0x85E1, 0x893B, + 0x88F1, 0x8584, 0x886E, 0x886C, 0x8478, 0x881D, 0x8369, 0x87CE, + 0x877B, 0x872D, 0x86DC, 0x89D0, 0x864F, 0x864D, 0x894F, 0x85F5, + 0x8903, 0x8549, 0x8869, 0x8833, 0x83E7, 0x8832, 0x832B, 0x8794, + 0x8744, 0x86F6, 0x86A2, 0x80C8, 0x8667, 0x8662, 0x860E, 0x85BA, + 0x8912, 0x850F, 0x84B5, 0x882E, 0x8402, 0x87F6, 0x8305, 0x87A6, + 0x87A5, 0x8754, 0x86B5, 0x81DA, 0x862D, 0x8628, 0x8624, 0x8625, + 0x88DC, 0x852A, 0x84D3, 0x8478, 0x841E, 0x87F1, 0x83DC, 0x87B9, + 0x876E, 0x8321, 0x871C, 0x81FC, 0x867A, 0x863E, 0x863F, 0x85EB, + 0x7F0C, 0x8595, 0x853E, 0x8494, 0x8453, 0x884F, 0x83FA, 0x87B7, + 0x839A, 0x833C, 0x8731, 0x8223, 0x86DC, 0x868E, 0x863D, 0x8603, + 0x7FC9, 0x85FD, 0x85A9, 0x8554, 0x8503, 0x884A, 0x846B, 0x8467, + 0x8412, 0x840D, 0x8778, 0x82FE, 0x86F1, 0x86EF, 0x86EB, 0x869D, + 0x8191, 0x85C3, 0x85C1, 0x85BF, 0x85BB, 0x88A2, 0x84C2, 0x8485, + 0x842A, 0x8429, 0x878A, 0x83CF, 0x8787, 0x82BA, 0x8279, 0x86B2, + 0x8213, 0x86AC, 0x86AD, 0x860D, 0x85B9, 0x7F3B, 0x8580, 0x857B, + 0x852A, 0x84D2, 0x881A, 0x843E, 0x8814, 0x843A, 0x838C, 0x8748, + 0x8294, 0x8742, 0x828D, 0x8671, 0x866D, 0x861C, 0x861D, 0x8923, + 0x8578, 0x853B, 0x853C, 0x853A, 0x8858, 0x843B, 0x87C3, 0x83FC, + 0x83F8, 0x8789, 0x8345, 0x8705, 0x82A6, 0x86B5, 0x86B1, 0x81E7, + 0x8615, 0x80E0, 0x85DC, 0x85D7, 0x8899, 0x84FA, 0x7E54, 0x84F9, + 0x84F4, 0x87D0, 0x840D, 0x87CA, 0x83B6, 0x83B4, 0x8747, 0x82C2, + 0x86F5, 0x8262, 0x8673, 0x8671, 0x813F, 0x861C, 0x80F6, 0x8594, + 0x8592, 0x8889, 0x853F, 0x7F03, 0x84B3, 0x84AE, 0x8806, 0x8405, + 0x8788, 0x836D, 0x836E, 0x8737, 0x82B7, 0x86B5, 0x8275, 0x86B2, + 0x8664, 0x8116, 0x85DC, 0x810D, 0x85D6, 0x8552, 0x84FE, 0x84FC, + 0x7F28, 0x84F6, 0x846B, 0x8467, 0x8415, 0x8778, 0x837F, 0x837E, + 0x8323, 0x8324, 0x86F1, 0x8231, 0x8655, 0x8228, 0x8226, 0x861B, + 0x8126, 0x8596, 0x8125, 0x858D, 0x853E, 0x7FAC, 0x84B0, 0x7FA8, + 0x84AF, 0x84AB, 0x8768, 0x83CB, 0x7B51, 0x83C5, 0x8334, 0x86E4, + 0x82DA, 0x86DE, 0x82D3, 0x81E2, 0x8657, 0x81DB, 0x85D5, 0x80DB, + 0x8582, 0x857E, 0x80D2, 0x84F8, 0x7FC4, 0x84F2, 0x84F0, 0x8466, + 0x8464, 0x7E2F, 0x840B, 0x840C, 0x837E, 0x8379, 0x86CE, 0x8376, + 0x828E, 0x864D, 0x8285, 0x8644, 0x8645, 0x818F, 0x85C0, 0x8189, + 0x85BA, 0x85B8, 0x883B, 0x8532, 0x7F74, 0x84E2, 0x8458, 0x87BA, + 0x8451, 0x7E4D, 0x844E, 0x83C0, 0x873A, 0x83BD, 0x86B8, 0x832A, + 0x82D5, 0x82D0, 0x82CC, 0x8631, 0x8238, 0x862E, 0x822F, 0x813C, + 0x85AA, 0x8136, 0x85A1, 0x8095, 0x851E, 0x8519, 0x802F, 0x8491, + 0x7F81, 0x848D, 0x8489, 0x8724, 0x83FF, 0x7E5D, 0x83A9, 0x83A7, + 0x86A0, 0x8317, 0x869A, 0x8311, 0x827F, 0x8619, 0x8279, 0x8612, + 0x81E2, 0x8593, 0x858E, 0x8180, 0x858B, 0x80E2, 0x8505, 0x80DC, + 0x8039, 0x84FD, 0x8039, 0x8477, 0x7F2A, 0x8471, 0x846F, 0x7E06, + 0x83E6, 0x7E05, 0x83DD, 0x83DE, 0x86B6, 0x8351, 0x7B87, 0x8348, + 0x82BC, 0x862F, 0x8265, 0x85F6, 0x81CB, 0x81C7, 0x85A5, 0x81C6, + 0x856F, 0x8129, 0x8568, 0x8567, 0x8083, 0x84E4, 0x8080, 0x84DE, + 0x7F7A, 0x8455, 0x8456, 0x7ECA, 0x844F, 0x7EC4, 0x83C6, 0x83C1, + 0x86C9, 0x83BE, 0x7CE2, 0x8334, 0x832D, 0x8645, 0x829F, 0x860A, + 0x8299, 0x829A, 0x8605, 0x8201, 0x8588, 0x8200, 0x81FB, 0x8580, + 0x8164, 0x84FA, 0x80C7, 0x84F7, 0x84F5, 0x8064, 0x846F, 0x7FC2, + 0x846C, 0x7FBC, 0x8430, 0x83E1, 0x83DF, 0x83DA, 0x86D6, 0x83A1, + 0x7E5A, 0x834D, 0x8348, 0x8655, 0x830F, 0x7C7A, 0x8306, 0x82B6, + 0x8615, 0x8274, 0x85CA, 0x8273, 0x826E, 0x8593, 0x81DB, 0x858A, + 0x81DA, 0x8589, 0x8143, 0x813E, 0x8505, 0x8138, 0x84FF, 0x80A0, + 0x809B, 0x847A, 0x8098, 0x8476, 0x7FF6, 0x83F0, 0x83EE, 0x7F53, + 0x83E8, 0x7F4A, 0x83AC, 0x83AD, 0x83AB, 0x8359, 0x7DF0, 0x831C, + 0x831B, 0x8319, 0x8314, 0x8605, 0x8311, 0x7BFF, 0x8281, 0x8282, + 0x85CA, 0x81F1, 0x7B2A, 0x81EB, 0x81EC, 0x8545, 0x8155, 0x8542, + 0x8151, 0x814D, 0x84BD, 0x80B8, 0x84BA, 0x80B1, 0x84B3, 0x8071, + 0x806C, 0x8479, 0x7FD1, 0x842B, 0x7FC8, 0x7FC6, 0x83F0, 0x7FC2, + 0x83EA, 0x7F20, 0x83E6, 0x83E2, 0x7F1B, 0x835B, 0x7E6F, 0x8357, + 0x8356, 0x8354, 0x82C9, 0x7DBB, 0x82C8, 0x82C3, 0x8289, 0x8287, + 0x7C46, 0x8283, 0x7C42, 0x81F3, 0x81F4, 0x85A3, 0x81ED, 0x7AAB, + 0x81EA, 0x81E8, 0x851F, 0x81E2, 0x851E, 0x8151, 0x814F, 0x8499, + 0x80BA, 0x8496, 0x80B4, 0x845D, 0x8073, 0x806F, 0x8458, 0x806E, + 0x8451, 0x7FD0, 0x7FD1, 0x83CF, 0x7FCA, 0x83C9, 0x7FC7, 0x83C5, + 0x83C1, 0x83C2, 0x83C0, 0x83BB, 0x7F21, 0x8335, 0x7E78, 0x8334, + 0x832F, 0x85F4, 0x82F6, 0x7DC7, 0x82EF, 0x82EE, 0x82EF, 0x8266, + 0x7D7A, 0x8260, 0x8261, 0x825C, 0x8258, 0x8534, 0x8257, 0x7CB8, + 0x8251, 0x8252, 0x8528, 0x81C4, 0x7B37, 0x81BE, 0x81BC, 0x851D, + 0x81B6, 0x84A0, 0x8179, 0x8125, 0x8121, 0x80E8, 0x8494, 0x80E2, + 0x80E0, 0x80DE, 0x80DA, 0x8489, 0x80D9, 0x8485, 0x80D0, 0x80D1, + 0x8406, 0x803C, 0x8400, 0x8038, 0x8033, 0x8032, 0x8033, 0x83F4, + 0x802A, 0x83F1, 0x7F94, 0x7F92, 0x836B, 0x7F4C, 0x8368, 0x7F4B, + 0x7F49, 0x8360, 0x7F43, 0x835C, 0x7EA3, 0x8323, 0x7E9D, 0x7E9E, + 0x831E, 0x7E97, 0x82CC, 0x7E94, 0x8293, 0x8294, 0x7E8C, 0x828B, + 0x7E8B, 0x828A, 0x8286, 0x7DE3, 0x8285, 0x7DDD, 0x827C, 0x827D, + 0x827B, 0x81F5, 0x7CE9, 0x81EF, 0x7CE3, 0x81EB, 0x81E7, 0x7CDD, + 0x81E6, 0x7CDA, 0x81DF, 0x81DE, 0x81DF, 0x81DA, 0x7CD1, 0x81D7, + 0x81D5, 0x8149, 0x814A, 0x7C14, 0x8143, 0x7C14, 0x8140, 0x813E, + 0x84B4, 0x8138, 0x7C08, 0x8134, 0x8132, 0x8131, 0x812F, 0x7AF9, + 0x8129, 0x8127, 0x815C, 0x815D, 0x8455, 0x8156, 0x80CA, 0x80CB, + 0x80C9, 0x80C4, 0x80C3, 0x8446, 0x80C2, 0x83C9, 0x80B9, 0x80BA, + 0x80B8, 0x80B3, 0x83C0, 0x80B3, 0x80AE, 0x80AC, 0x80AB, 0x83E5, + 0x8019, 0x83E4, 0x8018, 0x8013, 0x83DC, 0x8010, 0x83D6, 0x800C, + 0x8008, 0x8006, 0x8007, 0x8352, 0x7FFE, 0x8382, 0x7FFD, 0x8035, + 0x837D, 0x802F, 0x8374, 0x802B, 0x8029, 0x8028, 0x7F9A, 0x836E, + 0x7F93, 0x7F8F, 0x7F90, 0x7F8E, 0x8318, 0x7F88, 0x8314, 0x7F87, + 0x7F82, 0x830F, 0x7F7F, 0x8309, 0x7FB5, 0x7FB4, 0x7FB2, 0x7FB0, + 0x8333, 0x7FAA, 0x8330, 0x7FA9, 0x7FA4, 0x835B, 0x7F0E, 0x8357, + 0x7F0E, 0x7F0C, 0x7F07, 0x7F43, 0x82D1, 0x7F3C, 0x7F3B, 0x7F39, + 0x7F3A, 0x82F9, 0x7F31, 0x82F8, 0x7F30, 0x7F66, 0x7F67, 0x7F68, + 0x831D, 0x7F5F, 0x7F5D, 0x7F5E, 0x7F5C, 0x8299, 0x7F93, 0x8293, + 0x7F8C, 0x7F8B, 0x82C1, 0x7EF5, 0x82BD, 0x7EF4, 0x7EF2, 0x7EED, + 0x7EEC, 0x82E5, 0x7F23, 0x7731, 0x7F22, 0x7F20, 0x830C, 0x7F1A, + 0x830C, 0x7F50, 0x7F4F, 0x7F4D, 0x7F4B, 0x82B6, 0x7F82, 0x7F80, + 0x7F7E, 0x7F7A, 0x82E0, 0x7F79, 0x82DA, 0x7FAD, 0x7FAB, 0x7FA9, + 0x7FA7, 0x8304, 0x7FDE, 0x7F13, 0x7F14, 0x7F0F, 0x82B1, 0x7F46, + 0x7F44, 0x82AC, 0x7F3E, 0x7F79, 0x7F77, 0x7F73, 0x8304, 0x7F72, + 0x8303, 0x7FA6, 0x7FA4, 0x7FA2, 0x7FD7, 0x8328, 0x7FD7, 0x7FD2, + 0x8008, 0x8006, 0x82D7, 0x8002, 0x7A3E, 0x8036, 0x8037, 0x7F72, + 0x7F70, 0x832C, 0x7FA4, 0x7FA2, 0x7FD7, 0x7FD6, 0x8353, 0x7FD2, + 0x7AB9, 0x8006, 0x8007, 0x8002, 0x8037, 0x7AF8, 0x8037, 0x7B39, + 0x8067, 0x8063, 0x7B34, 0x8099, 0x7B78, 0x8093, 0x80C5, 0x805B, + 0x8007, 0x7BAE, 0x803E, 0x7BEF, 0x8037, 0x806A, 0x7C2B, 0x8069, + 0x7C2A, 0x8099, 0x8098, 0x7C66, 0x80CB, 0x7CA4, 0x80FB, 0x7CA0, + 0x7C9B, 0x812A, 0x7CDC, 0x8126, 0x7D13, 0x80B8, 0x809F, 0x7D4F, + 0x80D2, 0x7C70, 0x8102, 0x7CAA, 0x7CA9, 0x8131, 0x7CE6, 0x8161, + 0x7CE0, 0x7D22, 0x818F, 0x7D59, 0x8189, 0x7D56, 0x8152, 0x7D90, + 0x7D8E, 0x816B, 0x7DC5, 0x8198, 0x7DFD, 0x7DFE, 0x7E37, 0x7E38, + 0x81F4, 0x7E6F, 0x7EA2, 0x7EA3, 0x7ED9, 0x81EB, 0x7E9B, 0x76F1, + 0x7E0A, 0x7E43, 0x7E41, 0x7E77, 0x822E, 0x7EAE, 0x7EAF, 0x7EE4, + 0x7EE3, 0x8256, 0x7F16, 0x7982, 0x7F4D, 0x7F80, 0x7F81, 0x7FB6, + 0x7A59, 0x7FB0, 0x7A55, 0x7F78, 0x7F3F, 0x82B8, 0x7F58, 0x7B1B, + 0x7FC2, 0x7B59, 0x7FF6, 0x7FF4, 0x8026, 0x8025, 0x7BD7, 0x808C, + 0x7C56, 0x8052, 0x8053, 0x7B6D, 0x8016, 0x7BAB, 0x8068, 0x7BE9, + 0x7C2C, 0x80CA, 0x7C64, 0x80F8, 0x7C9E, 0x80F7, 0x80F2, 0x7D15, + 0x80BE, 0x7D4D, 0x80D4, 0x7D87, 0x7DC3, 0x8136, 0x7DF7, 0x8196, + 0x7DB9, 0x7D7C, 0x7D78, 0x7D9B, 0x815D, 0x7DCF, 0x7864, 0x7E41, + 0x7E3F, 0x7E78, 0x7EAE, 0x793F, 0x7EDF, 0x7F17, 0x7EDE, 0x7EDC, + 0x787B, 0x7E9E, 0x7913, 0x7EF2, 0x7F2A, 0x7F28, 0x7F5B, 0x79E1, + 0x7FC2, 0x7A6B, 0x7FC2, 0x7FBD, 0x7AEF, 0x7F83, 0x7B6F, 0x7FD5, + 0x7BAD, 0x7BEA, 0x803B, 0x7C66, 0x8068, 0x7C9B, 0x7C5B, 0x802F, + 0x7C1C, 0x8048, 0x7C3E, 0x7C77, 0x7CB4, 0x7CF0, 0x80D8, 0x7D5F, + 0x76A1, 0x7DD1, 0x7DD0, 0x7DCE, 0x7D91, 0x817F, 0x7D8E, 0x787C, + 0x7DE4, 0x7E1D, 0x8146, 0x7E89, 0x77B1, 0x7EBD, 0x7EBB, 0x7E82, + 0x7E80, 0x7925, 0x7E9C, 0x79B3, 0x7F3E, 0x7F6E, 0x7A7A, 0x7F6D, + 0x7B3C, 0x7F67, 0x7BBC, 0x7B79, 0x7FB4, 0x7B75, 0x801C, 0x7B56, + 0x7B93, 0x8014, 0x7C0F, 0x7FFB, 0x7CC3, 0x8090, 0x7CF7, 0x7CF6, + 0x808B, 0x7CB7, 0x8088, 0x7D11, 0x7D4A, 0x7DBB, 0x7DF4, 0x8130, + 0x80FE, 0x7DEC, 0x80FA, 0x7DAE, 0x7E06, 0x7E3C, 0x7EA9, 0x816F, + 0x7EA5, 0x7945, 0x7E9F, 0x7EA0, 0x7EBD, 0x7F27, 0x7B17, 0x7F58, + 0x7B13, 0x7F52, 0x7F50, 0x7ACF, 0x7F9F, 0x7BAA, 0x8007, 0x7C62, + 0x7C5D, 0x7FCB, 0x7C59, 0x804B, 0x7C3A, 0x7C77, 0x7CEB, 0x7D5C, + 0x8040, 0x7D59, 0x7662, 0x7D1A, 0x7D3B, 0x7DAC, 0x7E17, 0x7907, + 0x7E16, 0x7906, 0x7E12, 0x7E0E, 0x78B8, 0x7ECD, 0x79F4, 0x7EC9, + 0x7EC7, 0x7AB5, 0x7EE3, 0x7AB1, 0x7F7C, 0x7AD1, 0x7B4C, 0x7F43, + 0x7C04, 0x7FF8, 0x7BFE, 0x7BC0, 0x7BBC, 0x7C59, 0x800E, 0x7D04, + 0x76C7, 0x7CC5, 0x7CC3, 0x7CE1, 0x7D8D, 0x80E1, 0x7DBE, 0x781A, + 0x7D86, 0x7DA4, 0x7E46, 0x7E79, 0x78E6, 0x7E3E, 0x7994, 0x7E5C, + 0x7EF8, 0x7A9A, 0x7EF4, 0x7A93, 0x7EBC, 0x7B33, 0x7BAC, 0x7F73, + 0x7BAB, 0x7F6D, 0x7BA4, 0x7C3C, 0x7CAE, 0x7CAF, 0x7FE8, 0x7C70, + 0x76B5, 0x7D72, 0x7D6D, 0x7D34, 0x7D35, 0x7745, 0x7DF8, 0x7965, + 0x7DF1, 0x7DF0, 0x795C, 0x7E75, 0x797F, 0x7E74, 0x7E72, 0x7A80, + 0x7F2B, 0x7A7F, 0x7F24, 0x7B93, 0x7B91, 0x7FA1, 0x7B52, 0x7FA0, + 0x7C5F, 0x7C5D, 0x7C59, 0x7C5A, 0x7FE2, 0x7D21, 0x76A3, 0x7D1D, + 0x781C, 0x7DA9, 0x7DA7, 0x7DA2, 0x7DA1, 0x7990, 0x7E60, 0x794A, + 0x7E28, 0x7E23, 0x7A6E, 0x7ED9, 0x7A6A, 0x7EA2, 0x7B7F, 0x7B7D, + 0x7F24, 0x7B3E, 0x7F1E, 0x7C47, 0x7C0D, 0x7C09, 0x7C9D, 0x8017, + 0x7CD1, 0x76BA, 0x7CCE, 0x7D93, 0x7D59, 0x7D58, 0x784E, 0x7E12, + 0x797E, 0x7DDA, 0x797B, 0x7A9C, 0x7E94, 0x7A9B, 0x7E5C, 0x7B6D, + 0x7B6C, 0x7B6D, 0x7B2C, 0x7F5A, 0x7BFE, 0x75A6, 0x7BFA, 0x7CC4, + 0x7CC2, 0x7CC0, 0x774F, 0x7D4C, 0x7748, 0x7D45, 0x7D44, 0x7888, + 0x7DCC, 0x79B2, 0x7DC6, 0x79B2, 0x7A8D, 0x7E49, 0x7A8D, 0x7ECA, + 0x7B5F, 0x7B5D, 0x7B23, 0x7B1E, 0x7F12, 0x7BED, 0x768C, 0x7C79, + 0x7C78, 0x7C79, 0x7C77, 0x77D3, 0x7D00, 0x78C5, 0x7DBD, 0x7D87, + 0x78C3, 0x7D83, 0x79A7, 0x7E05, 0x7A84, 0x7A82, 0x7E85, 0x7B52, + 0x7F04, 0x7B51, 0x7B11, 0x7BE1, 0x7BDF, 0x7F48, 0x7C6C, 0x771B, + 0x7C68, 0x7CF6, 0x7CF1, 0x7CF0, 0x780E, 0x7D78, 0x78FD, 0x7D72, + 0x7DF9, 0x79DC, 0x7DC0, 0x7AB5, 0x7E42, 0x7A73, 0x7B47, 0x7EC2, + 0x7B41, 0x7F0C, 0x7BD1, 0x7BD2, 0x7C60, 0x7C5E, 0x7F82, 0x7CE7, + 0x7852, 0x7CE4, 0x7D6B, 0x7D69, 0x7D36, 0x7935, 0x7DB8, 0x79D6, + 0x79D1, 0x7E35, 0x7AA5, 0x7AA6, 0x7E81, 0x7B39, 0x7EFC, 0x7BC7, + 0x7BC8, 0x7C56, 0x7C54, 0x7F44, 0x7CDA, 0x779F, 0x7CA5, 0x7D2A, + 0x7D28, 0x7D29, 0x7931, 0x7DAB, 0x7A0B, 0x7DF9, 0x7A9F, 0x7A9E, + 0x7E76, 0x7B31, 0x7EC0, 0x7BC1, 0x7BBD, 0x7BBE, 0x7C4C, 0x76EF, + 0x7C46, 0x77E3, 0x7C9A, 0x7D21, 0x78C9, 0x7D1E, 0x796B, 0x7D6B, + 0x7A06, 0x7A04, 0x7DEC, 0x7A98, 0x7E39, 0x7B2C, 0x757D, 0x7BB9, + 0x7BB7, 0x7BB5, 0x7C44, 0x777A, 0x7C95, 0x7824, 0x7C8F, 0x7D16, + 0x78C7, 0x7D67, 0x79A5, 0x7D60, 0x7A3A, 0x79FF, 0x7E2F, 0x7A93, + 0x7509, 0x7B24, 0x7B25, 0x7BB4, 0x7BAF, 0x76CE, 0x7C01, 0x77BE, + 0x7C8D, 0x7864, 0x7862, 0x7CD9, 0x7902, 0x7D5C, 0x79A0, 0x7A36, + 0x7A34, 0x7ACA, 0x7DF5, 0x7AC7, 0x755B, 0x7B1C, 0x7BAA, 0x7BA9, + 0x7BFF, 0x7710, 0x7C85, 0x77BC, 0x7C82, 0x7CD1, 0x793F, 0x7D54, + 0x799E, 0x7D9F, 0x7A36, 0x7A34, 0x7AC7, 0x7AC5, 0x74EE, 0x7B1A, + 0x75AD, 0x7BA4, 0x7BA2, 0x7758, 0x7C7E, 0x7804, 0x7C7D, 0x78A3, + 0x7941, 0x7D1B, 0x79D9, 0x7D9A, 0x79D5, 0x7A2F, 0x7AC2, 0x7AC0, + 0x7E2D, 0x7B15, 0x7646, 0x7B9F, 0x76F4, 0x7BF4, 0x7C79, 0x7842, + 0x7CCA, 0x78E1, 0x7D15, 0x793D, 0x7D11, 0x79D2, 0x7A66, 0x7DAB, + 0x7ABE, 0x7E27, 0x7B4B, 0x7B49, 0x7B9D, 0x7B9E, 0x773C, 0x7C76, + 0x7885, 0x7C70, 0x78E2, 0x78E3, 0x7D0D, 0x7978, 0x7D5E, 0x7A66, + 0x7A67, 0x7ABE, 0x7ABC, 0x7DEE, 0x7B46, 0x76D6, 0x7B9B, 0x7BEB, + 0x77E4, 0x7C6F, 0x7887, 0x7CBD, 0x791D, 0x797A, 0x7978, 0x7A0F, + 0x7DA1, 0x7A64, 0x7507, 0x7AB9, 0x7B45, 0x7B44, 0x7B9A, 0x76DD, + 0x7BE6, 0x7827, 0x7C37, 0x78C4, 0x791F, 0x7D06, 0x79B4, 0x73D9, + 0x7A0F, 0x7A66, 0x7AF0, 0x7AF1, 0x7610, 0x7B43, 0x767D, 0x7B94, + 0x77CB, 0x7869, 0x7C33, 0x78C6, 0x7C84, 0x7925, 0x79B6, 0x79B7, + 0x7A0E, 0x7D69, 0x7A63, 0x75AC, 0x7B43, 0x7B42, 0x76C6, 0x7B93, + 0x77D0, 0x7BE2, 0x786D, 0x78CB, 0x7962, 0x7960, 0x7CCB, 0x79B9, + 0x748E, 0x7A9D, 0x7A9B, 0x7AF2, 0x7B42, 0x7710, 0x7B94, 0x7771, + 0x7812, 0x7810, 0x7872, 0x7C7E, 0x7964, 0x7286, 0x79BA, 0x7A4A, + 0x7A48, 0x7A9F, 0x759A, 0x7AF1, 0x76B0, 0x7B92, 0x77B5, 0x77B9, + 0x7C33, 0x78AF, 0x7C7E, 0x7908, 0x7966, 0x79F3, 0x7A4A, 0x7536, + 0x7A9D, 0x75E5, 0x7AEF, 0x7B42, 0x775D, 0x7B91, 0x77FA, 0x7C31, + 0x7C32, 0x78B1, 0x7CC9, 0x79A3, 0x79F7, 0x7D60, 0x7A4A, 0x7586, + 0x7AF4, 0x7AF2, 0x7B43, 0x7B93, 0x77A2, 0x7BE1, 0x785F, 0x7C30, + 0x794E, 0x7949, 0x7D16, 0x79FB, 0x746F, 0x7A4D, 0x75D5, 0x7AF5, + 0x7AF3, 0x7749, 0x7B97, 0x77A6, 0x7BE2, 0x789C, 0x78F7, 0x7CC9, + 0x79A6, 0x7D11, 0x79FF, 0x7577, 0x7AA4, 0x7AA5, 0x76ED, 0x7B46, + 0x77EA, 0x7B95, 0x784A, 0x78A2, 0x78FD, 0x78FB, 0x7CC7, 0x79AA, + 0x74AB, 0x7A53, 0x7A54, 0x762C, 0x7AF8, 0x7734, 0x7B99, 0x77F1, + 0x7850, 0x78AB, 0x78A9, 0x7C7C, 0x7956, 0x74FD, 0x7A04, 0x7A02, + 0x767A, 0x7AAA, 0x76DB, 0x7B4B, 0x779C, 0x77F7, 0x7853, 0x78EA, + 0x7C7E, 0x7996, 0x73E2, 0x79E9, 0x75B7, 0x7A08, 0x7A5C, 0x7681, + 0x7AFA, 0x77E0, 0x77DE, 0x783A, 0x7895, 0x7C33, 0x7944, 0x73C6, + 0x79F0, 0x755D, 0x7A95, 0x7A93, 0x76C9, 0x7AFF, 0x778A, 0x77E9, + 0x7841, 0x783F, 0x7898, 0x78F2, 0x7425, 0x799E, 0x74FC, 0x7A44, + 0x7A97, 0x7673, 0x7AB1, 0x7734, 0x7B4F, 0x77EF, 0x784A, 0x78A2, + 0x78FA, 0x73BD, 0x79A6, 0x754F, 0x7A4B, 0x7A9C, 0x7619, 0x7AB8, + 0x7779, 0x7B56, 0x7833, 0x788B, 0x78E3, 0x78A8, 0x741A, 0x7954, + 0x759E, 0x7A4F, 0x7663, 0x7AEE, 0x7AEF, 0x7781, 0x7B57, 0x7837, + 0x7BEF, 0x78E7, 0x793F, 0x7990, 0x7959, 0x7540, 0x7A54, 0x760D, + 0x7AF5, 0x7AF0, 0x778B, 0x7B59, 0x783F, 0x7BC4, 0x78EF, 0x7943, + 0x7998, 0x79B6, 0x75F7, 0x7A58, 0x76B9, 0x7AF6, 0x7774, 0x782A, + 0x7BAC, 0x7847, 0x7BC5, 0x78F3, 0x7466, 0x79EF, 0x79ED, 0x7602, + 0x7A5A, 0x76C4, 0x7AFB, 0x77D9, 0x782E, 0x7886, 0x7885, 0x7399, + 0x7951, 0x7471, 0x79F4, 0x75AA, 0x760D, 0x7AB0, 0x772A, 0x7ACA, + 0x77E1, 0x7839, 0x78E5, 0x78E6, 0x745C, 0x7956, 0x7591, 0x79FB, + 0x7657, 0x7714, 0x7B04, 0x776E, 0x7B6C, 0x783F, 0x7323, 0x793F, + 0x793E, 0x74D3, 0x79B0, 0x759F, 0x7A1C, 0x76C3, 0x771F, 0x77D5, + 0x782A, 0x7B6E, 0x789E, 0x73ED, 0x7947, 0x7524, 0x75EC, 0x7A57, + 0x76AA, 0x7A70, 0x7725, 0x7784, 0x7831, 0x7888, 0x731F, 0x78F9, + 0x7467, 0x796B, 0x7594, 0x765B, 0x7A29, 0x776B, 0x7AC4, 0x778B, + 0x7294, 0x7892, 0x78B0, 0x74B7, 0x79A6, 0x75E3, 0x7A13, 0x7603, + 0x76C1, 0x7777, 0x77CF, 0x7B32, 0x7843, 0x7319, 0x78B7, 0x745E, + 0x752B, 0x79CB, 0x764F, 0x7A67, 0x76CD, 0x7780, 0x7830, 0x77F5, + 0x78A3, 0x7BE6, 0x7913, 0x757A, 0x79B6, 0x75FC, 0x7A6F, 0x7A3D, + 0x7731, 0x7AD5, 0x7839, 0x73CA, 0x78AA, 0x78FE, 0x791A, 0x79BE, + 0x7648, 0x7A27, 0x76C3, 0x7774, 0x7775, 0x77EA, 0x7B40, 0x785E, + 0x74AA, 0x7922, 0x7571, 0x75F5, 0x7A2F, 0x76AE, 0x7A98, 0x77D7, + 0x72F2, 0x789E, 0x789D, 0x790E, 0x7960, 0x75DE, 0x79CC, 0x765D, + 0x7714, 0x7733, 0x77E2, 0x7B02, 0x7856, 0x7443, 0x78C6, 0x750A, + 0x758B, 0x79D4, 0x7647, 0x7A3D, 0x7775, 0x7209, 0x783F, 0x785E, + 0x742D, 0x78CE, 0x7578, 0x798B, 0x7658, 0x76B1, 0x76D3, 0x7783, + 0x72DA, 0x7848, 0x73D5, 0x78BB, 0x7505, 0x7586, 0x7993, 0x7605, + 0x7A4C, 0x7715, 0x7195, 0x77AA, 0x7853, 0x7428, 0x7913, 0x7572, + 0x7980, 0x764D, 0x764E, 0x7722, 0x7720, 0x72D8, 0x77E9, 0x73D3, + 0x7879, 0x74C2, 0x75DD, 0x7988, 0x76B6, 0x6FFF, 0x7785, 0x7257, + 0x77F3, 0x7814, 0x7426, 0x78D5, 0x750B, 0x798F, 0x7644, 0x76C1, + 0x76BF, 0x7790, 0x72D6, 0x7801, 0x7434, 0x78BF, 0x751C, 0x757C, + 0x7997, 0x7656, 0x7083, 0x7722, 0x72C2, 0x780B, 0x7809, 0x74AB, + 0x78E7, 0x7589, 0x6EB6, 0x76BB, 0x76B9, 0x772F, 0x77A2, 0x7341, + 0x7864, 0x7494, 0x78D4, 0x7576, 0x764E, 0x79A6, 0x76C6, 0x7A78, + 0x7738, 0x72E8, 0x7870, 0x786F, 0x7505, 0x7949, 0x75A5, 0x79AF, + 0x76D0, 0x76F2, 0x779C, 0x780B, 0x73CA, 0x7879, 0x7512, 0x7953, + 0x75F0, 0x766A, 0x7689, 0x7733, 0x72C5, 0x7815, 0x73B7, 0x7883, + 0x74C7, 0x7580, 0x795B, 0x7674, 0x70C8, 0x7740, 0x726C, 0x77CE, + 0x7820, 0x7450, 0x78FB, 0x7590, 0x6FC3, 0x7660, 0x76D7, 0x774A, + 0x77BD, 0x73B8, 0x782A, 0x749E, 0x757B, 0x75F6, 0x7615, 0x766E, + 0x76E4, 0x7249, 0x77CA, 0x742C, 0x742D, 0x750B, 0x7588, 0x7977, + 0x7604, 0x70E5, 0x76EE, 0x72C7, 0x73BA, 0x7840, 0x749D, 0x78AD, + 0x7599, 0x7033, 0x7632, 0x76DD, 0x72B5, 0x776E, 0x742A, 0x784D, + 0x74AD, 0x7587, 0x75FE, 0x7678, 0x7133, 0x76EA, 0x72C9, 0x77CC, + 0x743E, 0x743C, 0x7517, 0x7594, 0x7038, 0x7682, 0x71BC, 0x7766, + 0x7340, 0x742C, 0x77F5, 0x7529, 0x6E7B, 0x75A2, 0x7027, 0x768F, + 0x7703, 0x72CB, 0x77E2, 0x7439, 0x6BE9, 0x7536, 0x75B1, 0x762B, + 0x769B, 0x71C1, 0x7710, 0x7342, 0x73C8, 0x74A9, 0x7524, 0x75A2, + 0x7619, 0x713F, 0x76A9, 0x72CB, 0x73B8, 0x743A, 0x74B8, 0x787F, + 0x78EB, 0x7625, 0x7699, 0x770C, 0x7727, 0x7797, 0x7804, 0x7447, + 0x788B, 0x7544, 0x75BB, 0x7632, 0x76A6, 0x79F4, 0x7732, 0x7437, + 0x780E, 0x7534, 0x75AB, 0x78FA, 0x763E, 0x797E, 0x7725, 0x7343, + 0x77AD, 0x744B, 0x74C6, 0x789E, 0x75B8, 0x7921, 0x76BE, 0x72D0, + 0x774C, 0x77BC, 0x745A, 0x783E, 0x7550, 0x70A3, 0x763B, 0x7658, + 0x76CB, 0x773B, 0x73C9, 0x7831, 0x7540, 0x755F, 0x75D7, 0x7648, + 0x76BE, 0x76D7, 0x7356, 0x77D0, 0x7458, 0x754D, 0x75C7, 0x75E6, + 0x7656, 0x76CA, 0x7349, 0x7752, 0x73EB, 0x746A, 0x74E5, 0x75D6, + 0x712B, 0x7663, 0x724D, 0x76F1, 0x73DB, 0x745A, 0x7851, 0x74F4, + 0x7018, 0x7601, 0x71D3, 0x76E2, 0x72E6, 0x73EA, 0x77F4, 0x74E4, + 0x6F8E, 0x75F1, 0x71C2, 0x767D, 0x76ED, 0x73DA, 0x7793, 0x7478, + 0x6EDB, 0x756B, 0x7600, 0x766E, 0x768C, 0x72EC, 0x7783, 0x7468, + 0x6E4D, 0x7503, 0x7598, 0x713B, 0x767C, 0x72D9, 0x7726, 0x73FF, + 0x7478, 0x74F3, 0x7588, 0x70BC, 0x761B, 0x7268, 0x7716, 0x73EF, + 0x740E, 0x748A, 0x7523, 0x70AF, 0x760B, 0x7258, 0x76B5, 0x737F, + 0x73FE, 0x747A, 0x7513, 0x709F, 0x7619, 0x71E0, 0x76A5, 0x7372, + 0x7395, 0x77B2, 0x74AA, 0x7853, 0x75B4, 0x7628, 0x7644, 0x76CC, + 0x7382, 0x77C2, 0x749A, 0x77F6, 0x75A4, 0x75C3, 0x764F, 0x76BF, + 0x7315, 0x7762, 0x7431, 0x7523, 0x753F, 0x75B3, 0x763F, 0x765D, + 0x7386, 0x7755, 0x749B, 0x74BA, 0x752F, 0x75C1, 0x78A8, 0x766B, + 0x72F4, 0x775F, 0x7432, 0x74AA, 0x7540, 0x755C, 0x71DD, 0x765B, + 0x7309, 0x7702, 0x7422, 0x74B9, 0x780A, 0x754C, 0x7168, 0x7669, + 0x7298, 0x7399, 0x7433, 0x7453, 0x7815, 0x755D, 0x7158, 0x7608, + 0x730D, 0x732D, 0x73CA, 0x7443, 0x77BA, 0x756E, 0x714B, 0x7616, + 0x729D, 0x731C, 0x7729, 0x7457, 0x701D, 0x755E, 0x7160, 0x7606, + 0x728C, 0x73AF, 0x7733, 0x7468, 0x6F9D, 0x756C, 0x714F, 0x7616, + 0x72A4, 0x7342, 0x7741, 0x7458, 0x7028, 0x757D, 0x7167, 0x7210, + 0x76AF, 0x7335, 0x774F, 0x7469, 0x6FA8, 0x758B, 0x717C, 0x7225, + 0x76BA, 0x7346, 0x6E37, 0x7477, 0x702C, 0x7596, 0x75B4, 0x729A, + 0x765B, 0x73D2, 0x6DAB, 0x7488, 0x6FB3, 0x75A6, 0x75C2, 0x72AB, + 0x7669, 0x736C, 0x6E45, 0x7499, 0x7037, 0x7175, 0x75D3, 0x72BD, + 0x7677, 0x737A, 0x6E61, 0x74A7, 0x7536, 0x7187, 0x75E1, 0x724F, + 0x6C1E, 0x738B, 0x6F85, 0x74B8, 0x7544, 0x7179, 0x75EF, 0x72C1, + 0x6CC7, 0x7417, 0x74AA, 0x74C6, 0x7555, 0x718E, 0x75FA, 0x72F7, + 0x6D92, 0x7428, 0x74BB, 0x7048, 0x7563, 0x71C5, 0x7628, 0x7308, + 0x6DB1, 0x7436, 0x74C9, 0x70EB, 0x7592, 0x723A, 0x7636, 0x7394, + 0x742B, 0x7447, 0x74DA, 0x70FF, 0x759D, 0x7270, 0x6C08, 0x73A2, + 0x7439, 0x7476, 0x7506, 0x719A, 0x75AA, 0x7300, 0x6D86, 0x73B4, + 0x744A, 0x7058, 0x7514, 0x71D4, 0x7645, 0x730E, 0x73A5, 0x73E6, + 0x7479, 0x7070, 0x753F, 0x7265, 0x75E7, 0x731F, 0x73D8, 0x746B, + 0x7487, 0x7131, 0x75BD, 0x7279, 0x7314, 0x73C9, 0x73E9, 0x749A, + 0x7526, 0x71CC, 0x75E5, 0x72AC, 0x7347, 0x73D8, 0x7489, 0x74A8, + 0x7552, 0x71DD, 0x7611, 0x7335, 0x73EA, 0x740A, 0x749A, 0x712C, + 0x7560, 0x728F, 0x761E, 0x7368, 0x73FC, 0x74A9, 0x74C6, 0x71E2, + 0x758B, 0x72C2, 0x735D, 0x740C, 0x742B, 0x74D5, 0x74F1, 0x71FA, + 0x75B7, 0x72D4, 0x738C, 0x741D, 0x74C7, 0x7504, 0x758D, 0x722D, + 0x7648, 0x737E, 0x742C, 0x744C, 0x74F6, 0x71FF, 0x75B5, 0x72D8, + 0x7670, 0x73AD, 0x7459, 0x7478, 0x7522, 0x7232, 0x75E1, 0x730B, + 0x73BD, 0x6FEF, 0x70BF, 0x7163, 0x7224, 0x75ED, 0x7300, 0x6F32, + 0x745D, 0x70B4, 0x7179, 0x7199, 0x725A, 0x6DAA, 0x73C2, 0x6FFB, + 0x748C, 0x70EB, 0x71AC, 0x726D, 0x7302, 0x6E82, 0x73F1, 0x7035, + 0x7181, 0x71A1, 0x725C, 0x7315, 0x7350, 0x7003, 0x741D, 0x70F3, + 0x71B4, 0x7272, 0x7328, 0x6E91, 0x73F6, 0x703D, 0x74D5, 0x71A6, + 0x7263, 0x72A2, 0x7357, 0x6F5E, 0x7440, 0x70FB, 0x71BA, 0x7277, + 0x72B8, 0x7367, 0x7416, 0x7049, 0x746C, 0x71D0, 0x728A, 0x72C8, + 0x737A, 0x6F8F, 0x7442, 0x7125, 0x7520, 0x729D, 0x72BA, 0x736C, + 0x73A7, 0x7051, 0x748C, 0x71D8, 0x6C52, 0x72CD, 0x737F, 0x73B7, + 0x7461, 0x712A, 0x753F, 0x7227, 0x6DFD, 0x731B, 0x73C9, 0x707B, + 0x74AB, 0x71FB, 0x7585, 0x72F3, 0x6ECE, 0x73D9, 0x7414, 0x7154, + 0x7579, 0x7250, 0x6E0C, 0x733E, 0x6FBA, 0x74AF, 0x74E6, 0x7225, + 0x75BF, 0x7316, 0x6FAD, 0x741A, 0x70BC, 0x717E, 0x7235, 0x7273, + 0x7602, 0x7361, 0x708B, 0x7464, 0x718E, 0x7248, 0x7286, 0x7354, + 0x6FDB, 0x743A, 0x70E6, 0x7512, 0x727A, 0x72B8, 0x7367, 0x73A2, + 0x70BB, 0x7481, 0x71B8, 0x728D, 0x72CB, 0x7377, 0x73B2, 0x7474, + 0x71AB, 0x6C5D, 0x729D, 0x6F0C, 0x6F55, 0x73DF, 0x7104, 0x74BE, + 0x71FD, 0x6E24, 0x730A, 0x6FED, 0x70D5, 0x7117, 0x71F1, 0x6D61, + 0x72E2, 0x6F3D, 0x7026, 0x70EC, 0x712B, 0x7204, 0x72D5, 0x6E7F, + 0x734E, 0x703D, 0x711E, 0x71F7, 0x7236, 0x6E4C, 0x7323, 0x7030, + 0x685B, 0x7132, 0x720B, 0x7249, 0x7317, 0x6F5E, 0x7414, 0x7128, + 0x6BA1, 0x723C, 0x6E5D, 0x6F4E, 0x737F, 0x7080, 0x7479, 0x719C, + 0x6D97, 0x72AC, 0x6F68, 0x7051, 0x746D, 0x716D, 0x6CA6, 0x7281, + 0x6EB1, 0x6FA1, 0x7087, 0x7164, 0x71A0, 0x7272, 0x6EA4, 0x72EA, + 0x707A, 0x70BC, 0x7196, 0x71D4, 0x6DBF, 0x72E1, 0x6FA9, 0x73FD, + 0x70F1, 0x71CB, 0x7206, 0x72D1, 0x6F9F, 0x73D0, 0x70C6, 0x6BAE, + 0x71FA, 0x72C8, 0x6EEB, 0x733D, 0x70B7, 0x7452, 0x71ED, 0x6DC3, + 0x72F6, 0x6FCB, 0x7011, 0x7446, 0x714C, 0x6CFC, 0x725D, 0x6EF5, + 0x7004, 0x70E2, 0x7121, 0x74C2, 0x7250, 0x6EEC, 0x736E, 0x703A, + 0x7115, 0x7175, 0x7244, 0x6E34, 0x7364, 0x702D, 0x73F1, 0x7168, + 0x71A7, 0x7272, 0x72CC, 0x7024, 0x73E4, 0x715F, 0x719A, 0x7284, + 0x72C2, 0x6F77, 0x73D8, 0x7152, 0x7464, 0x71EA, 0x6E5A, 0x730C, + 0x7050, 0x70AE, 0x7184, 0x6D2E, 0x721C, 0x6F61, 0x6FA0, 0x70A4, + 0x70E3, 0x6D21, 0x7210, 0x6F54, 0x734B, 0x7095, 0x70D6, 0x71C8, + 0x7222, 0x6E7E, 0x733F, 0x6FF2, 0x6B0A, 0x712A, 0x6D7B, 0x6E93, + 0x7336, 0x6FE2, 0x6AFD, 0x711E, 0x6D6E, 0x7265, 0x6F96, 0x6FD9, + 0x70D3, 0x7133, 0x6D61, 0x7259, 0x6EC3, 0x6FCC, 0x702D, 0x7123, + 0x6D5B, 0x726B, 0x6EDC, 0x72FB, 0x7024, 0x6B5C, 0x7177, 0x71D4, + 0x6ECF, 0x730D, 0x7039, 0x6B4F, 0x7189, 0x6DB1, 0x6EC6, 0x6F2B, + 0x702D, 0x73A8, 0x717D, 0x6DCA, 0x7233, 0x6F1F, 0x7042, 0x7081, + 0x7192, 0x6DC1, 0x7226, 0x6F37, 0x68FB, 0x7096, 0x70F4, 0x6D04, + 0x7238, 0x6F2B, 0x736D, 0x70A9, 0x6C83, 0x71F4, 0x6E36, 0x6F43, + 0x72DB, 0x709F, 0x6CA3, 0x7157, 0x6E2D, 0x6F59, 0x6FBA, 0x70B1, + 0x710F, 0x716C, 0x6E46, 0x72A6, 0x6FB1, 0x7012, 0x7124, 0x717E, + 0x6E39, 0x72B7, 0x6FC3, 0x6A81, 0x7136, 0x6D13, 0x71CE, 0x72C9, + 0x6FDC, 0x7371, 0x714B, 0x6D30, 0x71FB, 0x6ECD, 0x6FEE, 0x704F, + 0x715D, 0x6D49, 0x720D, 0x6EE6, 0x7007, 0x7062, 0x70BF, 0x71C9, + 0x721F, 0x6EFF, 0x72CB, 0x707A, 0x6C37, 0x71DB, 0x7231, 0x6F11, + 0x694A, 0x708C, 0x6C2A, 0x7141, 0x6EC5, 0x6F2A, 0x6F8C, 0x709E, + 0x6C47, 0x7153, 0x6EDB, 0x6F3D, 0x6F9E, 0x70B1, 0x6C60, 0x7186, + 0x6E2D, 0x6928, 0x6FB4, 0x6C08, 0x713E, 0x7198, 0x6E45, 0x7248, + 0x6FEB, 0x6C25, 0x7151, 0x6DF5, 0x6E5B, 0x6F9F, 0x6FFD, 0x6C42, + 0x7181, 0x6E0B, 0x67C2, 0x6FB5, 0x7013, 0x708F, 0x7196, 0x6E47, + 0x725E, 0x6FE9, 0x6B24, 0x70A1, 0x6D08, 0x6E60, 0x6EC2, 0x6FFC, + 0x6B64, 0x70D2, 0x6D44, 0x6E98, 0x6EFA, 0x7033, 0x6B81, 0x7106, + 0x6D5E, 0x71B3, 0x6F32, 0x6B2C, 0x70BE, 0x6D0D, 0x6D99, 0x71E4, + 0x6F44, 0x6B49, 0x70EF, 0x6D49, 0x6DB2, 0x6F1A, 0x6F7C, 0x6B89, + 0x7120, 0x6D85, 0x71EB, 0x6F30, 0x6FAD, 0x700B, 0x7150, 0x6D9E, + 0x7218, 0x6F65, 0x6B74, 0x703F, 0x6D70, 0x6DD6, 0x6E5F, 0x6F99, + 0x6B91, 0x708F, 0x6DAC, 0x6E12, 0x6E97, 0x6FCD, 0x704A, 0x70C0, + 0x6DE5, 0x718F, 0x6ECF, 0x6A99, 0x707B, 0x6CA5, 0x6E1D, 0x71DB, + 0x6F04, 0x6AB6, 0x70C8, 0x6CE5, 0x6E55, 0x6EDA, 0x6F38, 0x7083, + 0x70FB, 0x6D21, 0x71DF, 0x6F0E, 0x6F8C, 0x7009, 0x7147, 0x6E63, + 0x7228, 0x6F43, 0x6B0F, 0x703A, 0x6D2F, 0x6E98, 0x6F19, 0x6F96, + 0x7010, 0x6CDE, 0x6D6B, 0x6EEF, 0x6F6D, 0x6AFA, 0x7060, 0x6D3D, + 0x714B, 0x6F24, 0x6AC8, 0x701B, 0x7094, 0x6D79, 0x7197, 0x6E80, + 0x6B0C, 0x706B, 0x6D48, 0x6DD1, 0x6E56, 0x6ED7, 0x6B76, 0x70BA, + 0x6DA7, 0x6753, 0x6EAD, 0x6B1E, 0x6BD9, 0x7103, 0x6E02, 0x7202, + 0x6F01, 0x6B88, 0x7017, 0x6DB5, 0x6E59, 0x6ED7, 0x6F55, 0x6BEB, + 0x7067, 0x6E10, 0x6923, 0x6F2B, 0x6BBD, 0x6C4E, 0x70B3, 0x6E83, + 0x6999, 0x6F7F, 0x6C20, 0x6CAD, 0x6D3A, 0x6ED7, 0x6F58, 0x6FEE, + 0x6C7F, 0x70F8, 0x6DB2, 0x69D9, 0x6FC7, 0x6C51, 0x6CDE, 0x715C, + 0x6E0C, 0x6A44, 0x7033, 0x6CB1, 0x6D60, 0x6DE2, 0x6E83, 0x6AAF, + 0x6F9A, 0x6D32, 0x678C, 0x6E59, 0x6A80, 0x6F70, 0x6D04, 0x6D8A, + 0x712B, 0x6ECF, 0x6AEB, 0x6FDF, 0x6D60, 0x6E05, 0x6EA5, 0x6F42, + 0x6B75, 0x704B, 0x6DDA, 0x6879, 0x6F18, 0x6B47, 0x6BFB, 0x6DD0, + 0x6E51, 0x68F3, 0x6F84, 0x6BCD, 0x70AE, 0x6D2A, 0x6EE4, 0x6F7D, + 0x7012, 0x6C53, 0x7131, 0x6DA5, 0x695E, 0x6EE3, 0x6C25, 0x6CD2, + 0x6D77, 0x6E3B, 0x6B42, 0x6F6E, 0x6CC7, 0x6D70, 0x6E11, 0x6EAE, + 0x6BEF, 0x6FFC, 0x6D45, 0x7118, 0x6EA4, 0x6BC1, 0x6FD2, 0x6D3A, + 0x6DDF, 0x6987, 0x6F32, 0x6C67, 0x6D10, 0x6DB5, 0x6E72, 0x6A1D, + 0x6FC0, 0x6CE2, 0x6DAA, 0x6E4B, 0x6F04, 0x6AD2, 0x7047, 0x6D9F, + 0x6747, 0x6EF9, 0x6AA0, 0x703D, 0x6C2D, 0x6CFD, 0x6DBE, 0x6E5C, + 0x6B4E, 0x6FC6, 0x6CF2, 0x6982, 0x6E54, 0x6B46, 0x6C1E, 0x6CC4, + 0x6D8C, 0x6A5F, 0x6F02, 0x6BF0, 0x6CB9, 0x6D81, 0x6E3E, 0x6B10, + 0x6FA9, 0x6CB1, 0x679B, 0x6E37, 0x6B05, 0x6BDD, 0x6CAA, 0x6D6F, + 0x686C, 0x6EE5, 0x6BD2, 0x7044, 0x6D64, 0x6864, 0x6EDA, 0x6BA7, + 0x6C97, 0x7000, 0x6E16, 0x6929, 0x6F84, 0x6C8C, 0x6D51, 0x6E12, + 0x6E8A, 0x6A06, 0x6F29, 0x6BE2, 0x681E, 0x6D90, 0x6A02, 0x6B02, + 0x6BD7, 0x6CC3, 0x6907, 0x6E61, 0x6AF7, 0x6482, 0x6CB8, 0x68FF, + 0x69EF, 0x6F28, 0x6BE7, 0x70B6, 0x6D92, 0x69E0, 0x6F3F, 0x6BDC, + 0x6CC5, 0x6DA9, 0x6E82, 0x6ADC, 0x6FFE, 0x6CBE, 0x68E4, 0x6E77, + 0x6AF8, 0x6BE9, 0x6CD5, 0x6DB6, 0x69E9, 0x6F03, 0x6BE5, 0x658D, + 0x6DCA, 0x6E84, 0x6B05, 0x6EE2, 0x6CE2, 0x66D0, 0x6DC1, 0x6AFD, + 0x6C15, 0x6CFA, 0x6CF8, 0x6D40, 0x6E39, 0x6BEA, 0x6FF3, 0x6C77, + 0x681B, 0x6E4E, 0x6A63, 0x6B7F, 0x6C8F, 0x6D70, 0x6953, 0x6F52, + 0x6B9A, 0x6FC3, 0x6DA4, 0x6972, 0x6F7F, 0x6BB2, 0x6CBB, 0x6DB8, + 0x6EAA, 0x6AB6, 0x6F08, 0x6CD3, 0x6872, 0x6EC1, 0x6ACE, 0x6BE6, + 0x6D07, 0x6E00, 0x69C9, 0x6E65, 0x6C1E, 0x673A, 0x6DFC, 0x69E5, + 0x6B02, 0x6F7C, 0x6D56, 0x68CD, 0x6DB9, 0x6B41, 0x6C6D, 0x6CED, + 0x6CD7, 0x6A40, 0x6EF9, 0x6C85, 0x679D, 0x6D0E, 0x6A58, 0x6F2C, + 0x6BD5, 0x6BFE, 0x6D42, 0x6E53, 0x6B26, 0x6F03, 0x6C39, 0x696B, + 0x6E87, 0x69E4, 0x6B44, 0x6C71, 0x6DAD, 0x68D3, 0x6E5E, 0x6B83, + 0x65C9, 0x6DDD, 0x6916, 0x6A63, 0x6BBB, 0x6CFF, 0x67CE, 0x6DB8, + 0x6A9E, 0x6C16, 0x6D53, 0x6D70, 0x6999, 0x6EF9, 0x6C4D, 0x6695, + 0x6D0A, 0x69DC, 0x6B3C, 0x6CA1, 0x6CC2, 0x68A3, 0x6E73, 0x6B97, + 0x656C, 0x6C5C, 0x68EA, 0x6A7E, 0x6BF2, 0x6C10, 0x67A2, 0x6DEC, + 0x6ADD, 0x63FC, 0x6BA6, 0x67E9, 0x6E3C, 0x6B38, 0x6B3A, 0x6BE9, + 0x6D42, 0x6A1B, 0x6DE3, 0x6AC8, 0x670A, 0x6DB2, 0x6DB3, 0x6A58, + 0x6F6C, 0x6CB7, 0x6954, 0x6D55, 0x69EE, 0x6BAA, 0x6D2A, 0x6D28, + 0x696E, 0x6EE7, 0x6C24, 0x685E, 0x6CCA, 0x6923, 0x6AF3, 0x6C9B, + 0x6C99, 0x682D, 0x6E7F, 0x6B6E, 0x6787, 0x6C3B, 0x6854, 0x6A58, + 0x6C0C, 0x6C0A, 0x6CD1, 0x6DFC, 0x6DFD, 0x6BBE, 0x6F56, 0x6D60, + 0x6995, 0x6E35, 0x6B77, 0x6C3F, 0x6D90, 0x6D72, 0x6B2E, 0x6EF2, + 0x6CF1, 0x68CA, 0x6DCA, 0x6AE0, 0x6BCF, 0x6D25, 0x6D07, 0x6A93, + 0x6E8E, 0x6C85, 0x67F7, 0x6D62, 0x6A44, 0x6B3B, 0x6C97, 0x6C9B, + 0x69F4, 0x6E23, 0x6C12, 0x671C, 0x6D10, 0x69A5, 0x6AC4, 0x6C2A, + 0x6C28, 0x6958, 0x6DBB, 0x6BA2, 0x663C, 0x6CA4, 0x6905, 0x6A2C, + 0x6BBA, 0x6B98, 0x68B4, 0x6D50, 0x6B2E, 0x6B6F, 0x6C57, 0x6D2B, + 0x69B0, 0x6E70, 0x6B28, 0x680C, 0x6CE5, 0x6ADA, 0x6AFF, 0x6C07, + 0x6CBF, 0x6934, 0x6E28, 0x6AB4, 0x675C, 0x6C98, 0x6A66, 0x6A87, + 0x6BD6, 0x6C53, 0x6890, 0x6DC0, 0x6A3C, 0x66A8, 0x6C2C, 0x6A11, + 0x6A0F, 0x6B86, 0x6C03, 0x680F, 0x6D58, 0x69CC, 0x65EC, 0x6BBC, + 0x6999, 0x6997, 0x6B75, 0x6B93, 0x67B2, 0x6D0C, 0x6997, 0x652F, + 0x6B50, 0x691C, 0x691E, 0x6B21, 0x6B22, 0x672A, 0x6CA0, 0x6942, + 0x6466, 0x6B43, 0x68A0, 0x689E, 0x6AD0, 0x6AAE, 0x66C9, 0x6C53, + 0x6931, 0x638E, 0x6B6E, 0x681F, 0x681D, 0x6A5C, 0x6A5A, 0x6664, + 0x6BE7, 0x6920, 0x62AD, 0x6BC0, 0x67C2, 0x679C, 0x6A07, 0x69E5, + 0x6E5A, 0x6BFA, 0x6956, 0x6DF5, 0x6B6D, 0x6B71, 0x6CAA, 0x6CA8, + 0x6990, 0x6EB9, 0x6C81, 0x6965, 0x6DAF, 0x6B1F, 0x6AFD, 0x6C5A, + 0x693A, 0x6A2F, 0x6AD4, 0x6C38, 0x6910, 0x6D47, 0x6AAE, 0x6653, + 0x6C0D, 0x68E1, 0x6A85, 0x6A83, 0x6BE8, 0x68B7, 0x6CFB, 0x6A5A, + 0x65EE, 0x6BC0, 0x6868, 0x6A34, 0x6A32, 0x6B9B, 0x683A, 0x6CAF, + 0x6A09, 0x6564, 0x6B70, 0x680E, 0x69DF, 0x6A29, 0x6B4A, 0x67E1, + 0x6C65, 0x69B4, 0x64FE, 0x6C3C, 0x67B5, 0x698A, 0x6AFC, 0x6AFD, + 0x6784, 0x6D25, 0x695F, 0x6491, 0x6BF2, 0x6758, 0x6935, 0x6AAB, + 0x6AA9, 0x672A, 0x6CDC, 0x6A85, 0x6427, 0x6BA5, 0x68E2, 0x68E0, + 0x6A5A, 0x6B7C, 0x66C9, 0x6C93, 0x6A34, 0x63B9, 0x6B58, 0x6889, + 0x6A07, 0x6A09, 0x6B2F, 0x685F, 0x6C47, 0x69DF, 0x6664, 0x6B07, + 0x6830, 0x69B6, 0x69B7, 0x6AFE, 0x682A, 0x6CEE, 0x698E, 0x6602, + 0x6BD6, 0x67FE, 0x6964, 0x6AAF, 0x6AB1, 0x67D1, 0x6CA1, 0x6939, + 0x65A4, 0x6B89, 0x67A5, 0x6933, 0x6A5E, 0x6B80, 0x6777, 0x6C58, + 0x6A38, 0x653E, 0x6B5C, 0x68DC, 0x6A2F, 0x6A10, 0x6B33, 0x671D, + 0x6CFC, 0x6A07, 0x6504, 0x6C04, 0x6887, 0x69E1, 0x6AE4, 0x6AE6, + 0x6BE0, 0x69B8, 0x6D81, 0x6AC0, 0x6BBB, 0x6C8E, 0x6D5C, 0x6AB7, + 0x6B92, 0x6C88, 0x6966, 0x6D38, 0x6B8C, 0x67FE, 0x6C61, 0x6A68, + 0x6A66, 0x6B68, 0x6C3B, 0x6935, 0x6DB5, 0x6B3F, 0x67CC, 0x6CE5, + 0x6A1A, 0x6B19, 0x6BF4, 0x6BF2, 0x6A11, 0x6D70, 0x6AF2, 0x68D8, + 0x68B6, 0x69E9, 0x6AEC, 0x6748, 0x6C7A, 0x69C3, 0x658E, 0x6B9E, + 0x6886, 0x6996, 0x6A9D, 0x6B78, 0x6859, 0x6C4D, 0x6A77, 0x670B, + 0x6B54, 0x6851, 0x6968, 0x6A6C, 0x6B4B, 0x6827, 0x6CD1, 0x6A46, + 0x66B1, 0x6BF9, 0x6939, 0x64EE, 0x6B00, 0x67F4, 0x690F, 0x6A17, + 0x6AFA, 0x67CA, 0x6BB3, 0x68E7, 0x64B4, 0x6AD2, 0x67A1, 0x68BD, + 0x69C9, 0x6AA9, 0x6798, 0x6C38, 0x69A0, 0x6619, 0x6B5F, 0x688A, + 0x699A, 0x6A7B, 0x6B39, 0x6881, 0x6CBC, 0x6A58, 0x65DF, 0x6B31, + 0x685C, 0x6949, 0x6A30, 0x6B0C, 0x6832, 0x6C73, 0x6A27, 0x66E0, + 0x6829, 0x6919, 0x6A01, 0x66DA, 0x6B98, 0x68EF, 0x639F, 0x6AB7, + 0x67D5, 0x6182, 0x69D2, 0x6543, 0x66A8, 0x67CD, 0x68C1, 0x6515, + 0x6B44, 0x67A3, 0x613F, 0x6980, 0x6671, 0x6799, 0x688E, 0x697A, + 0x6643, 0x6AFA, 0x6868, 0x631E, 0x6A35, 0x6745, 0x6862, 0x694B, + 0x6A0F, 0x6610, 0x6B86, 0x6925, 0x6499, 0x6AC5, 0x6713, 0x680C, + 0x69E3, 0x6AA3, 0x670A, 0x6BEF, 0x68F3, 0x65AE, 0x6B32, 0x67DC, + 0x68CD, 0x69B2, 0x6A72, 0x67D3, 0x6C57, 0x698C, 0x66A8, 0x6B08, + 0x689A, 0x63FB, 0x6A26, 0x67A3, 0x6874, 0x6960, 0x6A1D, 0x6676, + 0x5FE0, 0x6936, 0x653A, 0x664B, 0x6844, 0x692D, 0x6508, 0x6A91, + 0x6747, 0x61E1, 0x69CB, 0x6617, 0x6741, 0x6812, 0x69C2, 0x660E, + 0x6B1A, 0x680C, 0x6375, 0x6A5C, 0x670D, 0x67E2, 0x68AF, 0x6A36, + 0x66E3, 0x6B84, 0x68A9, 0x6493, 0x6AC9, 0x67B2, 0x6883, 0x6948, + 0x6A09, 0x67A9, 0x6BEC, 0x6942, 0x6579, 0x6B36, 0x6850, 0x691C, + 0x69DD, 0x6779, 0x684A, 0x6913, 0x69B7, 0x664F, 0x6B9F, 0x68E9, + 0x653B, 0x6A4A, 0x681A, 0x68E3, 0x6988, 0x6A44, 0x67F0, 0x6C07, + 0x697F, 0x6615, 0x6AB8, 0x68B4, 0x6958, 0x69FC, 0x6B48, 0x688D, + 0x63AD, 0x69F3, 0x66E3, 0x6884, 0x692C, 0x69CD, 0x66BC, 0x6B98, + 0x6923, 0x65B0, 0x6A60, 0x6858, 0x68FD, 0x69A1, 0x6A3A, 0x682E, + 0x6BFD, 0x6998, 0x667F, 0x6B61, 0x68D1, 0x6972, 0x6A12, 0x6B3E, + 0x68C7, 0x696C, 0x6A09, 0x6728, 0x6BB0, 0x6946, 0x6624, 0x6B16, + 0x6898, 0x693D, 0x661E, 0x6AF0, 0x6875, 0x6419, 0x69B7, 0x66CE, + 0x6174, 0x690D, 0x65EA, 0x66C8, 0x6845, 0x68EA, 0x65E4, 0x6ABF, + 0x683C, 0x63DE, 0x6982, 0x6694, 0x6815, 0x68BB, 0x695C, 0x668E, + 0x6B0C, 0x68B5, 0x6585, 0x6A6E, 0x67E6, 0x688B, 0x657C, 0x6A68, + 0x67E0, 0x636D, 0x69C6, 0x6633, 0x60E3, 0x685F, 0x654B, 0x662A, + 0x67B0, 0x6859, 0x6545, 0x6A16, 0x6789, 0x632E, 0x6974, 0x65F9, + 0x6780, 0x6829, 0x696E, 0x65F3, 0x6A81, 0x6823, 0x6507, 0x69E5, + 0x6750, 0x67FD, 0x6942, 0x69BF, 0x674A, 0x689B, 0x691C, 0x65B9, + 0x604E, 0x6871, 0x64CD, 0x6668, 0x671A, 0x686B, 0x64A2, 0x698D, + 0x66F3, 0x62AA, 0x68EA, 0x663B, 0x66ED, 0x683F, 0x68E1, 0x660D, + 0x6A72, 0x6815, 0x6467, 0x69D7, 0x66BD, 0x680F, 0x6934, 0x69D1, + 0x6760, 0x6809, 0x692E, 0x65D6, 0x6AB8, 0x67E3, 0x6516, 0x69A2, + 0x6733, 0x67DD, 0x6902, 0x6A17, 0x672A, 0x6325, 0x68DC, 0x65A0, + 0x6703, 0x6851, 0x68D6, 0x664B, 0x6A64, 0x682B, 0x64AD, 0x69C9, + 0x66D3, 0x6825, 0x68A6, 0x661B, 0x6779, 0x67FF, 0x6920, 0x6615, + 0x6A8D, 0x67F9, 0x6476, 0x6997, 0x6749, 0x6873, 0x68F4, 0x69EC, + 0x6194, 0x6850, 0x6524, 0x666E, 0x6719, 0x6847, 0x64F9, 0x69DD, + 0x6713, 0x6341, 0x693E, 0x665F, 0x6158, 0x681A, 0x65A6, 0x6638, + 0x676E, 0x6894, 0x657C, 0x6A0A, 0x6765, 0x63F9, 0x690C, 0x66B8, + 0x675F, 0x6868, 0x6965, 0x66AF, 0x621E, 0x6862, 0x6545, 0x5FE2, + 0x67BA, 0x6480, 0x65F4, 0x672B, 0x67B1, 0x647A, 0x6933, 0x6704, + 0x62B9, 0x68B0, 0x65C0, 0x66FB, 0x6808, 0x6887, 0x6599, 0x66D4, + 0x67FF, 0x64FD, 0x697D, 0x66CE, 0x634C, 0x64D2, 0x661D, 0x6750, + 0x6346, 0x68D4, 0x6614, 0x626C, 0x6850, 0x655B, 0x669A, 0x6724, + 0x682A, 0x6551, 0x6694, 0x67A2, 0x63D5, 0x691E, 0x666A, 0x6303, + 0x689B, 0x65D6, 0x66EC, 0x6772, 0x6874, 0x65AF, 0x6117, 0x67F0, + 0x6516, 0x65A5, 0x6765, 0x67E7, 0x64EB, 0x662F, 0x673E, 0x6389, + 0x68C2, 0x6626, 0x61E7, 0x683E, 0x6571, 0x668B, 0x6715, 0x6818, + 0x6567, 0x69E6, 0x6790, 0x63EF, 0x68EF, 0x6704, 0x678A, 0x64A7, + 0x6961, 0x66E1, 0x631E, 0x68E2, 0x65C1, 0x616D, 0x67DE, 0x650B, + 0x6648, 0x6756, 0x67BB, 0x6505, 0x698B, 0x6730, 0x6468, 0x690C, + 0x66A3, 0x67AE, 0x680F, 0x6906, 0x669A, 0x6787, 0x6882, 0x655F, + 0x6673, 0x67FF, 0x685F, 0x65E6, 0x66F6, 0x67DB, 0x654E, 0x6029, + 0x66EC, 0x63FE, 0x6527, 0x6642, 0x674A, 0x63F5, 0x6905, 0x66C1, + 0x632E, 0x68A2, 0x65A8, 0x61B1, 0x67A2, 0x6513, 0x65A2, 0x6719, + 0x679C, 0x64EC, 0x5FDE, 0x6710, 0x63B6, 0x6570, 0x6687, 0x676E, + 0x6449, 0x68C6, 0x6660, 0x62E5, 0x6846, 0x65D0, 0x6167, 0x67C2, + 0x64AA, 0x65CA, 0x66B9, 0x67BC, 0x6539, 0x6079, 0x6734, 0x63E9, + 0x650E, 0x66AB, 0x62A5, 0x6475, 0x6595, 0x6688, 0x633E, 0x6849, + 0x658F, 0x61C8, 0x67E2, 0x64FA, 0x65F2, 0x66E0, 0x67BF, 0x6561, + 0x60E5, 0x6758, 0x643A, 0x5E37, 0x66CF, 0x6302, 0x64C2, 0x65BD, + 0x66AC, 0x6396, 0x6869, 0x663D, 0x6229, 0x67E5, 0x6526, 0x60A1, + 0x6781, 0x648D, 0x6589, 0x6678, 0x675E, 0x6487, 0x5FD8, 0x66F3, + 0x63ED, 0x64F1, 0x65E5, 0x66D0, 0x63C2, 0x6889, 0x6664, 0x6324, + 0x6809, 0x65D7, 0x61DB, 0x6784, 0x64B9, 0x65B0, 0x669C, 0x677E, + 0x6540, 0x6045, 0x66FA, 0x641D, 0x65A3, 0x668E, 0x62E5, 0x6484, + 0x659D, 0x66E9, 0x6379, 0x6885, 0x65FF, 0x62D7, 0x67A5, 0x656E, + 0x665A, 0x6741, 0x67FB, 0x6568, 0x615E, 0x677A, 0x64D7, 0x5FF3, + 0x66B2, 0x63AF, 0x68A7, 0x6629, 0x6336, 0x67CE, 0x6537, 0x6684, + 0x630A, 0x64A2, 0x6596, 0x6264, 0x67A4, 0x6508, 0x6112, 0x66DC, + 0x6494, 0x658C, 0x6657, 0x6737, 0x646D, 0x65EB, 0x66B1, 0x63F8, + 0x5DE0, 0x6646, 0x62C7, 0x645F, 0x6554, 0x66A4, 0x6358, 0x6820, + 0x65B6, 0x621A, 0x67BD, 0x64C0, 0x60C7, 0x66DB, 0x642A, 0x6523, + 0x6210, 0x6736, 0x6491, 0x60B9, 0x66CE, 0x6420, 0x5E88, 0x65E4, + 0x62EF, 0x6487, 0x6557, 0x663F, 0x6380, 0x681C, 0x65B9, 0x6246, + 0x63E7, 0x6549, 0x6121, 0x62DB, 0x6452, 0x65A8, 0x623C, 0x6732, + 0x64B5, 0x606B, 0x66CD, 0x63B2, 0x6518, 0x6665, 0x631B, 0x64A7, + 0x6033, 0x6642, 0x63A8, 0x5DF4, 0x65D6, 0x6298, 0x640F, 0x64E3, + 0x6634, 0x6307, 0x6476, 0x65AB, 0x6268, 0x672D, 0x64D9, 0x6147, + 0x62D4, 0x6447, 0x659D, 0x625A, 0x6723, 0x64AA, 0x6091, 0x66BF, + 0x6439, 0x5F27, 0x65D5, 0x6335, 0x649D, 0x656C, 0x6694, 0x639D, + 0x5F19, 0x65CB, 0x6328, 0x5CB3, 0x6541, 0x6216, 0x6393, 0x646B, + 0x65A0, 0x6286, 0x677F, 0x6530, 0x6169, 0x671B, 0x64C7, 0x60BD, + 0x6253, 0x63CB, 0x649F, 0x6139, 0x6690, 0x6432, 0x60B3, 0x662B, + 0x6747, 0x6492, 0x612B, 0x66E3, 0x6421, 0x655A, 0x661E, 0x66C0, + 0x6466, 0x686D, 0x665B, 0x63F5, 0x5FEE, 0x65F3, 0x6316, 0x6459, + 0x658A, 0x664E, 0x63E8, 0x67E6, 0x65C8, 0x62E3, 0x6786, 0x64FA, + 0x626D, 0x6352, 0x648D, 0x65BE, 0x62D9, 0x6778, 0x6555, 0x61C7, + 0x6718, 0x6483, 0x6149, 0x6653, 0x6412, 0x64C1, 0x61BD, 0x66AE, + 0x6454, 0x609A, 0x6649, 0x63E6, 0x5F66, 0x65E1, 0x6375, 0x644A, + 0x655A, 0x667F, 0x63D9, 0x5F58, 0x65B6, 0x62DB, 0x5E0A, 0x654D, + 0x625E, 0x63AD, 0x64E4, 0x65AC, 0x6338, 0x647A, 0x6525, 0x6254, + 0x5C5E, 0x64B8, 0x6141, 0x632E, 0x63E5, 0x6518, 0x6224, 0x66D8, + 0x64AB, 0x6133, 0x6677, 0x6441, 0x60B4, 0x6612, 0x6366, 0x6483, + 0x619C, 0x66A9, 0x6412, 0x6080, 0x65E7, 0x633A, 0x5F76, 0x6582, + 0x62C8, 0x6408, 0x6519, 0x65DA, 0x639A, 0x5FEF, 0x6574, 0x62BA, + 0x5DFB, 0x650F, 0x6244, 0x636B, 0x64A2, 0x65AB, 0x628B, 0x6435, + 0x64E0, 0x6214, 0x5D54, 0x6477, 0x6127, 0x62EF, 0x6409, 0x6538, + 0x6279, 0x6353, 0x64CF, 0x6190, 0x6672, 0x63FF, 0x6111, 0x626B, + 0x638E, 0x64A3, 0x6160, 0x6320, 0x63F2, 0x6066, 0x65E6, 0x6384, + 0x5FE3, 0x659E, 0x6312, 0x642C, 0x6539, 0x6636, 0x63C2, 0x67A7, + 0x65D5, 0x6350, 0x674A, 0x650E, 0x6270, 0x6393, 0x64C6, 0x65AD, + 0x6346, 0x6459, 0x6544, 0x62D4, 0x66DC, 0x64FC, 0x6262, 0x667B, + 0x6493, 0x6598, 0x62A8, 0x63C3, 0x64D1, 0x6232, 0x66B1, 0x646B, + 0x6148, 0x666A, 0x641C, 0x60CD, 0x6293, 0x63AE, 0x64C0, 0x61B1, + 0x6642, 0x6456, 0x6136, 0x65E1, 0x6386, 0x6044, 0x6599, 0x6314, + 0x642E, 0x612C, 0x6614, 0x63E2, 0x60B1, 0x65CC, 0x6374, 0x5FB6, + 0x656A, 0x6306, 0x6419, 0x60F4, 0x6602, 0x63AF, 0x5FFD, 0x659D, + 0x62DA, 0x5EFA, 0x64F7, 0x6286, 0x6383, 0x64F0, 0x6217, 0x6333, + 0x5FEF, 0x652E, 0x62C8, 0x5EE7, 0x64C8, 0x6256, 0x6371, 0x6462, + 0x6170, 0x6303, 0x5EB3, 0x64FF, 0x6248, 0x5E26, 0x6499, 0x61D5, + 0x62F9, 0x644D, 0x615E, 0x62F1, 0x63E3, 0x648B, 0x6214, 0x5E14, + 0x6487, 0x61A1, 0x5CF5, 0x63D9, 0x60D9, 0x6253, 0x636F, 0x64BE, + 0x6202, 0x5E05, 0x6413, 0x618F, 0x5CE2, 0x640C, 0x60A8, 0x6241, + 0x63A2, 0x644A, 0x61D2, 0x62F2, 0x6446, 0x610A, 0x5B6D, 0x63DC, + 0x6096, 0x6211, 0x632D, 0x647D, 0x61C0, 0x6325, 0x6413, 0x6149, + 0x5B5A, 0x6368, 0x605E, 0x61FF, 0x6360, 0x5F8C, 0x618C, 0x62AD, + 0x639F, 0x60C7, 0x6569, 0x639B, 0x604C, 0x61CB, 0x62E8, 0x5FCC, + 0x610A, 0x6279, 0x63D2, 0x6103, 0x6598, 0x636B, 0x6017, 0x6536, + 0x631F, 0x5FBD, 0x6146, 0x62B0, 0x63A2, 0x6081, 0x656C, 0x6356, + 0x6079, 0x650A, 0x62EF, 0x5F85, 0x6111, 0x6237, 0x6394, 0x60C0, + 0x6233, 0x6326, 0x6044, 0x6539, 0x62BB, 0x5F76, 0x64F1, 0x626E, + 0x6361, 0x6088, 0x61FF, 0x635D, 0x6032, 0x650A, 0x62AD, 0x5FB6, + 0x64C2, 0x62A5, 0x6394, 0x6079, 0x61ED, 0x6390, 0x6072, 0x64F8, + 0x62E0, 0x5F81, 0x64F1, 0x6275, 0x5F27, 0x648F, 0x6225, 0x6360, + 0x603D, 0x650A, 0x62B0, 0x5FE7, 0x64C5, 0x62A9, 0x5F6B, 0x64BE, + 0x61F4, 0x6393, 0x602B, 0x6538, 0x62E4, 0x6027, 0x6496, 0x62E0, + 0x5F32, 0x6492, 0x622C, 0x6363, 0x644A, 0x6509, 0x6317, 0x6066, + 0x6505, 0x62AC, 0x5F9C, 0x64C1, 0x6263, 0x6393, 0x645B, 0x625B, + 0x62E7, 0x60A2, 0x6531, 0x62E3, 0x5FDC, 0x6492, 0x6278, 0x6367, + 0x648A, 0x622B, 0x635F, 0x6445, 0x6505, 0x6316, 0x601B, 0x6501, + 0x62AF, 0x5F9F, 0x645E, 0x6262, 0x6392, 0x645A, 0x6516, 0x632B, + 0x6412, 0x61A6, 0x5DF0, 0x640E, 0x619E, 0x5DEC, 0x6366, 0x60E8, + 0x622A, 0x5F0C, 0x60E0, 0x6226, 0x5E38, 0x63DE, 0x6171, 0x5E34, + 0x63D7, 0x6169, 0x6261, 0x5F4C, 0x6118, 0x625A, 0x5F48, 0x644E, + 0x61A5, 0x5E78, 0x63EC, 0x61A1, 0x5D9C, 0x5F8F, 0x60E7, 0x626F, + 0x5F88, 0x6460, 0x6225, 0x5EBC, 0x641B, 0x621E, 0x5EB4, 0x601D, + 0x616C, 0x62A6, 0x5FCB, 0x6165, 0x62A2, 0x5FC3, 0x6430, 0x61F1, + 0x5EF8, 0x6059, 0x61E9, 0x5EF4, 0x6051, 0x619C, 0x6272, 0x5F8E, + 0x649C, 0x626A, 0x5F8A, 0x5A65, 0x6266, 0x5EBB, 0x60D7, 0x6219, + 0x62E7, 0x601C, 0x61B1, 0x62E3, 0x6014, 0x64A6, 0x6236, 0x5FC2, + 0x615C, 0x6232, 0x5FBE, 0x60A2, 0x61E5, 0x62F8, 0x609A, 0x64BB, + 0x62AF, 0x604C, 0x5BA3, 0x62A7, 0x6044, 0x6127, 0x62A3, 0x6369, + 0x611F, 0x61F6, 0x6365, 0x60CE, 0x5CDE, 0x62BC, 0x60CA, 0x61A1, + 0x62B8, 0x600F, 0x619D, 0x626F, 0x637A, 0x60E7, 0x5D7E, 0x6372, + 0x60E3, 0x5D76, 0x632D, 0x6095, 0x61B6, 0x6329, 0x63E7, 0x61AE, + 0x5EE2, 0x6387, 0x6164, 0x5E15, 0x6342, 0x615D, 0x622F, 0x633A, + 0x6439, 0x622B, 0x5F70, 0x6435, 0x6223, 0x5EA8, 0x63F0, 0x6172, + 0x5EA4, 0x604C, 0x616E, 0x6240, 0x5FFA, 0x5BE5, 0x6239, 0x5F89, + 0x5AED, 0x6231, 0x5F33, 0x6118, 0x61EB, 0x5F2B, 0x60CA, 0x5C8E, + 0x62F3, 0x600F, 0x5C86, 0x62AA, 0x600B, 0x5C26, 0x6242, 0x6004, + 0x6129, 0x5E03, 0x6346, 0x60DB, 0x5DFB, 0x6300, 0x60D4, 0x5D22, + 0x5EED, 0x60D0, 0x61E9, 0x5EE5, 0x6015, 0x619F, 0x5E8E, 0x6353, + 0x6133, 0x5E8A, 0x589B, 0x60E9, 0x5DBD, 0x5FBE, 0x60E1, 0x61FA, + 0x5FB6, 0x60DD, 0x61F6, 0x5F64, 0x5A72, 0x61EE, 0x5EA0, 0x608B, + 0x61EA, 0x5E9B, 0x6083, 0x613C, 0x624D, 0x5FCC, 0x5C6F, 0x6249, + 0x5FC4, 0x5C0F, 0x6241, 0x5FC0, 0x60E6, 0x5E34, 0x5F71, 0x60DE, + 0x5D63, 0x629C, 0x60DA, 0x5D5F, 0x6298, 0x608C, 0x5D07, 0x5EA1, + 0x6088, 0x613A, 0x5E99, 0x634F, 0x6136, 0x5E46, 0x632D, 0x6132, + 0x5E41, 0x5FC5, 0x60E4, 0x5E3D, 0x5F76, 0x60E0, 0x61F5, 0x5F6E, + 0x5BAF, 0x618D, 0x5F6A, 0x5ABF, 0x6185, 0x5F66, 0x6043, 0x6181, + 0x62CC, 0x601C, 0x5D04, 0x6286, 0x6015, 0x5CA8, 0x6222, 0x5FCA, + 0x5CA4, 0x621E, 0x5FC2, 0x6127, 0x5E3E, 0x62DD, 0x6123, 0x5E3A, + 0x62D5, 0x6093, 0x5DE3, 0x62B3, 0x606C, 0x61C5, 0x5F63, 0x6068, + 0x5D0D, 0x62AB, 0x6064, 0x5D09, 0x5E9B, 0x605C, 0x6173, 0x5E97, + 0x6058, 0x6129, 0x5E93, 0x59E8, 0x6106, 0x5E8E, 0x6006, 0x60FE, + 0x5E87, 0x5FFE, 0x60FA, 0x61EA, 0x5F65, 0x5C94, 0x61E2, 0x5F3E, + 0x5BB8, 0x61DE, 0x5F3A, 0x60EA, 0x5D61, 0x5F36, 0x60E3, 0x5D59, + 0x62B9, 0x609C, 0x5D55, 0x62B5, 0x604E, 0x5D51, 0x5F26, 0x602B, + 0x6184, 0x5F21, 0x6023, 0x613A, 0x5F1D, 0x5B36, 0x6117, 0x5ECA, + 0x59E3, 0x6110, 0x5E58, 0x6013, 0x5D38, 0x5E54, 0x600F, 0x5C0D, + 0x61F3, 0x600B, 0x5C05, 0x61EF, 0x5FBC, 0x5C01, 0x5E40, 0x5F6E, + 0x60F4, 0x5E3C, 0x5F4A, 0x60AD, 0x5E38, 0x5958, 0x6063, 0x5E30, + 0x5F3E, 0x6083, 0x5E2C, 0x5F3A, 0x607E, 0x616F, 0x5F36, 0x5BE3, + 0x616B, 0x5F79, 0x5BDF, 0x61A5, 0x5F75, 0x5AFE, 0x5D55, 0x5F26, + 0x6067, 0x5D51, 0x623F, 0x6063, 0x5D4C, 0x57B5, 0x6018, 0x5D48, + 0x5EA8, 0x5FF5, 0x5D44, 0x5EA4, 0x5FF1, 0x6128, 0x5EA0, 0x5ADC, + 0x6121, 0x5EE3, 0x5AD8, 0x615F, 0x5EDF, 0x6024, 0x5C88, 0x5ED7, + 0x6020, 0x5C60, 0x61DE, 0x5FD5, 0x5CAC, 0x61DA, 0x5FD1, 0x5CA8, + 0x5E34, 0x5F86, 0x60E6, 0x5E0D, 0x5FA6, 0x60E2, 0x5E54, 0x59CC, + 0x5CEB, 0x61C6, 0x5FE1, 0x5CE7, 0x61BF, 0x5FDD, 0x5CDF, 0x619C, + 0x5FD9, 0x6088, 0x5E8B, 0x5F8E, 0x60AB, 0x5E3B, 0x6274, 0x60A3, + 0x5DE8, 0x5A6D, 0x60E2, 0x5E10, 0x5FA2, 0x60DA, 0x5E08, 0x5F9E, + 0x5C9B, 0x61A0, 0x5FE0, 0x5C97, 0x61DE, 0x5F95, 0x5CE3, 0x5E47, + 0x5F91, 0x5CDE, 0x5E3F, 0x5F46, 0x60E6, 0x5DEF, 0x59BE, 0x609F, + 0x5DEB, 0x5A17, 0x609B, 0x5E0F, 0x5FA5, 0x6097, 0x5E53, 0x5F9D, + 0x5CA2, 0x619C, 0x5F52, 0x5C9A, 0x6198, 0x5F4E, 0x5CE6, 0x5E46, + 0x5F6E, 0x5CE2, 0x5DF7, 0x5FB1, 0x609F, 0x5E1B, 0x5A52, 0x607C, + 0x5E62, 0x5A22, 0x60FD, 0x5EA2, 0x5A21, 0x5CAD, 0x5E56, 0x5F7A, + 0x5CF5, 0x61BB, 0x5FBD, 0x5CF1, 0x5851, 0x5FB5, 0x5CE9, 0x5E6E, + 0x5FB1, 0x5CE5, 0x5EB2, 0x5B14, 0x60C2, 0x5EAD, 0x5AB6, 0x60BB, + 0x5E5E, 0x5AB2, 0x60DA, 0x5E5A, 0x5ADF, 0x5D4C, 0x5E7E, 0x5FC0, + 0x5D48, 0x5F08, 0x5FE0, 0x5CF4, 0x5929, 0x601F, 0x5D19, 0x5983, + 0x601B, 0x5DB0, 0x5E92, 0x5B1B, 0x60E2, 0x5F1C, 0x5B9C, 0x60DE, + 0x5F18, 0x5C3D, 0x5D54, 0x5EC9, 0x5C35, 0x5DC4, 0x5EC5, 0x5FE4, + 0x5E08, 0x5A52, 0x6043, 0x5DB8, 0x5A4D, 0x603F, 0x5DB4, 0x5A49, + 0x603B, 0x5E20, 0x5F00, 0x6033, 0x6125, 0x5F87, 0x5C45, 0x615C, + 0x5F3C, 0x5C6D, 0x6158, 0x5F34, 0x5D05, 0x5E7F, 0x5F9B, 0x5D01, + 0x5E77, 0x5F97, 0x60A6, 0x5E2F, 0x5B89, 0x60A1, 0x5E4F, 0x5B84, + 0x60C1, 0x5ED7, 0x5B80, 0x5D61, 0x5E8B, 0x5FA7, 0x5D11, 0x5E87, + 0x5FC7, 0x5DCD, 0x59E4, 0x6006, 0x5DC5, 0x59E3, 0x5FFE, 0x5D75, + 0x5EE6, 0x5BE5, 0x5DE5, 0x5F4A, 0x5CAA, 0x6124, 0x5F46, 0x5C56, + 0x5747, 0x5EFE, 0x5C52, 0x5E45, 0x5F62, 0x5D12, 0x5E41, 0x5B28, + 0x602D, 0x5E39, 0x5B24, 0x608C, 0x5EA1, 0x5B4D, 0x5D77, 0x5E9D, + 0x5BEA, 0x5D27, 0x5E51, 0x5FD5, 0x5D26, 0x5982, 0x5FD1, 0x5DDB, + 0x5AB4, 0x5FF1, 0x5D8B, 0x5A5E, 0x5C53, 0x5DF7, 0x5F18, 0x5CC4, + 0x5DF3, 0x5F14, 0x5CBF, 0x590C, 0x5F77, 0x5CBB, 0x5908, 0x5F30, + 0x5D2C, 0x5E53, 0x5B9B, 0x5D24, 0x5EBA, 0x5B96, 0x60BA, 0x5E6F, + 0x5B92, 0x56C3, 0x5ED6, 0x5C08, 0x5D40, 0x5ED2, 0x5C03, 0x5DAC, + 0x5A5B, 0x6003, 0x5DA8, 0x5B2B, 0x5FFE, 0x5E11, 0x5AD5, 0x5CE2, + 0x5E0D, 0x5AD1, 0x5CDD, 0x5E75, 0x5F46, 0x5D4A, 0x59EE, 0x5FA9, + 0x5D46, 0x5990, 0x5FA5, 0x5DB2, 0x5A65, 0x5C09, 0x5DAE, 0x5EF1, + 0x5C7A, 0x5E16, 0x5EEC, 0x5C76, 0x5830, 0x5F50, 0x5CE7, 0x591A, + 0x5F08, 0x5CDF, 0x5E2F, 0x5B50, 0x5D4C, 0x5E93, 0x5C17, 0x6051, + 0x5E8F, 0x5BC2, 0x57B5, 0x5EAF, 0x5C84, 0x5D68, 0x5EAB, 0x5C33, + 0x5DD0, 0x5AE8, 0x603B, 0x5E35, 0x5AE4, 0x5FFB, 0x5E31, 0x5B5E, + 0x5D0D, 0x5E55, 0x5C1D, 0x5D05, 0x5E4D, 0x5F86, 0x5D72, 0x5A7C, + 0x5FA6, 0x5DDA, 0x5A78, 0x5FA2, 0x5D8E, 0x5AF2, 0x5CAA, 0x5DF7, + 0x5F31, 0x5CA6, 0x5DF2, 0x5F94, 0x5D13, 0x598B, 0x5F4D, 0x5D7C, + 0x5A0B, 0x5FAC, 0x5D2F, 0x5E73, 0x5C47, 0x5D9C, 0x5ED7, 0x5CB4, + 0x5922, 0x5EF7, 0x5CB0, 0x591A, 0x5EF3, 0x5D1D, 0x5E1D, 0x5B6E, + 0x5D3E, 0x5E81, 0x5BE3, 0x605C, 0x5E7D, 0x5C55, 0x58AC, 0x5E9D, + 0x5C4D, 0x5E0B, 0x5F01, 0x5CBE, 0x5DBF, 0x5B84, 0x5CDF, 0x5E27, + 0x5B7C, 0x6003, 0x5E8B, 0x5BEE, 0x583A, 0x5EAB, 0x5C5F, 0x5DAC, + 0x5EA7, 0x5CCC, 0x5DCD, 0x5B1C, 0x5FB2, 0x5E35, 0x5B92, 0x6011, + 0x5E31, 0x5B8A, 0x5D52, 0x5E51, 0x5BFC, 0x5D4E, 0x5EB2, 0x5F9F, + 0x5D72, 0x5AB7, 0x5FBC, 0x5DD7, 0x5B2A, 0x5FDC, 0x5DFB, 0x5BA0, + 0x5CF7, 0x5E5C, 0x5F4E, 0x5D60, 0x5E7C, 0x5F6A, 0x5D80, 0x5B1B, + 0x5C2E, 0x5945, 0x5EDC, 0x5C9C, 0x59C5, 0x5B3C, 0x5D05, 0x5A40, + 0x5BAE, 0x5D26, 0x5E22, 0x5C1C, 0x5932, 0x5E86, 0x5C40, 0x59B2, + 0x5B29, 0x5CAE, 0x5957, 0x5B4E, 0x5D17, 0x5E10, 0x5BC0, 0x583C, + 0x5E30, 0x5C2E, 0x58C4, 0x5E94, 0x5C4F, 0x5944, 0x5B3B, 0x5CBC, + 0x59C4, 0x5B60, 0x5D25, 0x5E1E, 0x5BCF, 0x585A, 0x5EA3, 0x5C40, + 0x58DB, 0x5E5E, 0x5C61, 0x595B, 0x5B4E, 0x5CCB, 0x5DEC, 0x5B73, + 0x5847, 0x5E50, 0x5BE1, 0x58C8, 0x5E6D, 0x5C4F, 0x594C, 0x5AEE, + 0x5C73, 0x5975, 0x5B60, 0x5CD9, 0x5DFA, 0x5B85, 0x585E, 0x5E5B, + 0x5BF3, 0x58E2, 0x5E7B, 0x5C5D, 0x5962, 0x5B04, 0x5CEF, 0x5DA4, + 0x5BE5, 0x5CEB, 0x5E08, 0x5C09, 0x5878, 0x5E8D, 0x5C73, 0x58F9, + 0x5B17, 0x5C98, 0x59F5, 0x5B89, 0x5CFE, 0x5E1B, 0x5BAE, 0x5869, + 0x5E3B, 0x5C18, 0x596A, 0x5E58, 0x5C3D, 0x5994, 0x5B2D, 0x5CA6, + 0x5E2D, 0x5C0A, 0x5D31, 0x5E4A, 0x5C2E, 0x5905, 0x5E6A, 0x5C53, + 0x59FD, 0x5ECA, 0x5CB9, 0x59AA, 0x5BB2, 0x5CDD, 0x5DF7, 0x5BD3, + 0x589B, 0x5E58, 0x5C3D, 0x599B, 0x5E78, 0x5CCF, 0x5A13, 0x5BC8, + 0x5CF0, 0x5E09, 0x5BED, 0x5D55, 0x5E2A, 0x5C53, 0x593A, 0x5E87, + 0x5CE2, 0x5A2A, 0x5B6C, 0x5D02, 0x5A53, 0x5BD7, 0x592B, 0x5E39, + 0x5C66, 0x59A3, 0x5E59, 0x5CF4, 0x5A45, 0x5632, 0x5D15, 0x5A6A, + 0x5BED, 0x5918, 0x5B50, 0x5C7C, 0x59BE, 0x5ECC, 0x5D07, 0x59E4, + 0x55BA, 0x5D2B, 0x5AD2, 0x56E5, 0x5D48, 0x5B66, 0x5C8F, 0x59D9, + 0x5B8B, 0x5CB3, 0x5A4C, 0x56D6, 0x5D3A, 0x5AE5, 0x5708, 0x5D5B, + 0x5B7D, 0x5818, 0x59F0, 0x5B9E, 0x5CC6, 0x5A63, 0x5BC3, 0x5D50, + 0x5AFC, 0x5783, 0x5D6D, 0x5B93, 0x5837, 0x5A0A, 0x5BB4, 0x58B4, + 0x5AA7, 0x5C44, 0x5D1E, 0x5B16, 0x5828, 0x5DA4, 0x5BA6, 0x5852, + 0x5246, 0x5BCB, 0x58CF, 0x5ABE, 0x5C5A, 0x59ED, 0x5B52, 0x5843, + 0x5DB6, 0x5B77, 0x58EE, 0x5DD7, 0x5C03, 0x5966, 0x5492, 0x5C6D, + 0x5A08, 0x5BD7, 0x58E0, 0x5AA1, 0x5BF8, 0x5909, 0x5E0A, 0x5C84, + 0x59AF, 0x55BD, 0x5CA8, 0x5A48, 0x5684, 0x5CC5, 0x5AB8, 0x5C0B, + 0x599D, 0x5B06, 0x5C55, 0x5A3A, 0x5675, 0x5CDC, 0x5AD3, 0x5732, + 0x5D62, 0x5AF8, 0x57E3, 0x59B7, 0x5B88, 0x5CCE, 0x5A51, 0x5BAD, + 0x5CF2, 0x5AE9, 0x57D4, 0x5D99, 0x5B34, 0x5883, 0x5A6C, 0x5BC4, + 0x5926, 0x5B04, 0x5C53, 0x5D26, 0x5B29, 0x5874, 0x5D6B, 0x5BB9, + 0x591B, 0x5A86, 0x5BFF, 0x5941, 0x5B1B, 0x5C87, 0x5A09, 0x56A2, + 0x5CAB, 0x5AA1, 0x57DD, 0x5CF1, 0x5B32, 0x5889, 0x59FA, 0x5B57, + 0x5CC2, 0x5A93, 0x574C, 0x5CE3, 0x5ADE, 0x57F9, 0x5D87, 0x5B72, + 0x58CE, 0x5AAE, 0x5B93, 0x596D, 0x5AD3, 0x581C, 0x5D17, 0x5B89, + 0x58C0, 0x5DBA, 0x5BAA, 0x5962, 0x554E, 0x5C36, 0x5A26, 0x5B7E, + 0x58DF, 0x5A4B, 0x5BC5, 0x5981, 0x5ADF, 0x5C50, 0x59A3, 0x56C1, + 0x5C92, 0x5A66, 0x5776, 0x5924, 0x5AF7, 0x5822, 0x59C2, 0x5BB0, + 0x5CA9, 0x5A5B, 0x5713, 0x5CCA, 0x5B12, 0x583E, 0x5244, 0x5B5C, + 0x5868, 0x5A73, 0x5BE8, 0x59AD, 0x5B2C, 0x5861, 0x59FC, 0x5B4E, + 0x5904, 0x54A9, 0x5BFF, 0x59C8, 0x55A8, 0x5C45, 0x59ED, 0x56EE, + 0x591F, 0x5AA9, 0x5BAF, 0x59E3, 0x562A, 0x5C5C, 0x5A09, 0x5712, + 0x5C7D, 0x5AC3, 0x57BF, 0x5964, 0x5B76, 0x5891, 0x5A24, 0x5736, + 0x595A, 0x5ADB, 0x57DF, 0x5CD6, 0x5B25, 0x58AD, 0x5415, 0x5BB1, + 0x5979, 0x55AC, 0x57FE, 0x599B, 0x5B40, 0x58CC, 0x5A5A, 0x5BEE, + 0x5994, 0x5660, 0x5C0F, 0x5A50, 0x568B, 0x58EB, 0x5A75, 0x57E9, + 0x59AC, 0x5B28, 0x58B7, 0x5A6B, 0x5732, 0x5C8D, 0x5AB6, 0x5808, + 0x59CB, 0x5AD7, 0x5C61, 0x5A86, 0x5780, 0x5CA4, 0x5ACD, 0x5828, + 0x59E6, 0x5B7F, 0x58F2, 0x5AA1, 0x581E, 0x5CBA, 0x5AE8, 0x5872, + 0x5CFC, 0x5B96, 0x5937, 0x55CD, 0x5BDC, 0x59F7, 0x5AFF, 0x5891, + 0x5A42, 0x5BD6, 0x5956, 0x5AF5, 0x5C18, 0x5A12, 0x5784, 0x5C5B, + 0x5A5D, 0x57AE, 0x5971, 0x5B10, 0x58A6, 0x5A53, 0x57A3, 0x596B, + 0x5A9E, 0x5872, 0x5D37, 0x5B50, 0x58C2, 0x5544, 0x5B93, 0x5983, + 0x5632, 0x58BB, 0x5A64, 0x57B9, 0x597C, 0x5AAF, 0x5BCF, 0x59C7, + 0x5705, 0x5C12, 0x5A13, 0x57DC, 0x52B6, 0x5AEC, 0x58CC, 0x5A09, + 0x5728, 0x591C, 0x5ABC, 0x5826, 0x59D9, 0x5B03, 0x58E8, 0x554C, + 0x5B6F, 0x59D2, 0x5665, 0x5842, 0x5A1A, 0x573E, 0x5931, 0x5A65, + 0x583B, 0x5A13, 0x5737, 0x5C54, 0x5A5B, 0x578C, 0x53A3, 0x5AA2, + 0x5881, 0x5562, 0x5B76, 0x5942, 0x55C1, 0x5850, 0x59B4, 0x5B6F, + 0x58C7, 0x55BA, 0x5BB2, 0x5987, 0x5698, 0x50C4, 0x59F9, 0x579B, + 0x597D, 0x5ACE, 0x588C, 0x59C9, 0x5790, 0x58DC, 0x5AA2, 0x57E5, + 0x54AE, 0x5B0E, 0x58D2, 0x5511, 0x5B55, 0x59B8, 0x56A7, 0x58CB, + 0x5A00, 0x57A6, 0x5917, 0x55ED, 0x5B8E, 0x59F9, 0x56F6, 0x5214, + 0x5A66, 0x57F0, 0x5CB8, 0x5AAD, 0x586B, 0x5A3A, 0x5B7D, 0x5952, + 0x5AA7, 0x5864, 0x5C91, 0x5AEA, 0x5948, 0x562F, 0x5BDB, 0x5993, + 0x5733, 0x5C1D, 0x5A93, 0x5829, 0x598D, 0x5ADA, 0x5C14, 0x59FB, + 0x577D, 0x5C77, 0x5AD0, 0x5899, 0x5530, 0x5B38, 0x58E5, 0x566D, + 0x5864, 0x59EA, 0x5B32, 0x58DB, 0x5A35, 0x5B9A, 0x59E3, 0x5766, + 0x5BDC, 0x5A2B, 0x57B7, 0x5457, 0x5A94, 0x58CA, 0x5A21, 0x57AC, + 0x5940, 0x5A8D, 0x58C0, 0x59AE, 0x5AF6, 0x5936, 0x56A1, 0x5B5F, + 0x59A7, 0x56FA, 0x533E, 0x5A7D, 0x5816, 0x599D, 0x56EF, 0x5925, + 0x59E5, 0x5810, 0x5993, 0x5ADC, 0x5883, 0x55AE, 0x5B44, 0x598C, + 0x56DE, 0x587C, 0x59FA, 0x575E, 0x5986, 0x562D, 0x5876, 0x59F0, + 0x5754, 0x58E8, 0x5A5D, 0x586B, 0x54DE, 0x5AC6, 0x58E2, 0x561C, + 0x57C5, 0x5950, 0x5743, 0x58D4, 0x5615, 0x57BE, 0x5946, 0x573C, + 0x529E, 0x5A68, 0x57B4, 0x54C2, 0x5AD1, 0x58ED, 0x5554, 0x57D8, + 0x595F, 0x5685, 0x584F, 0x5549, 0x57CD, 0x5955, 0x56A9, 0x5282, + 0x59C3, 0x57C7, 0x53EF, 0x5A52, 0x583E, 0x5568, 0x571F, 0x58B1, + 0x5698, 0x5834, 0x5561, 0x5AB4, 0x58D0, 0x568E, 0x518A, 0x593F, + 0x5739, 0x5407, 0x5A5D, 0x584D, 0x554F, 0x5732, 0x58E6, 0x59CC, + 0x57AA, 0x5490, 0x5AE1, 0x58DF, 0x55FA, 0x5175, 0x594D, 0x5721, + 0x532B, 0x59E1, 0x57C3, 0x596A, 0x5741, 0x5837, 0x59FD, 0x57B9, + 0x54A7, 0x5A66, 0x5857, 0x560D, 0x5195, 0x597F, 0x5692, 0x5347, + 0x5607, 0x57D2, 0x58E9, 0x56B2, 0x5870, 0x5A08, 0x57F2, 0x54C3, + 0x5A93, 0x588C, 0x5621, 0x5097, 0x58FE, 0x56CC, 0x5885, 0x5645, + 0x5748, 0x591A, 0x56C2, 0x58A2, 0x59AE, 0x5765, 0x54D7, 0x5A3A, + 0x58C1, 0x558C, 0x5789, 0x5930, 0x56DC, 0x5823, 0x55B1, 0x5782, + 0x594F, 0x5700, 0x581C, 0x59DF, 0x579F, 0x5438, 0x5A6A, 0x583C, + 0x55CF, 0x57BF, 0x58D5, 0x5741, 0x585C, 0x55C5, 0x57DF, 0x58F1, + 0x569C, 0x587C, 0x5985, 0x57D8, 0x5480, 0x5A11, 0x5898, 0x560E, + 0x57F8, 0x592D, 0x56B6, 0x58B8, 0x5632, 0x5755, 0x5949, 0x56DA, + 0x5319, 0x59D8, 0x5779, 0x54C4, 0x5A86, 0x5839, 0x564C, 0x5799, + 0x58D2, 0x5717, 0x5859, 0x566D, 0x5A84, 0x58EE, 0x573B, 0x5484, + 0x59A1, 0x57D9, 0x5537, 0x5A30, 0x5895, 0x55E4, 0x57F6, 0x5926, + 0x5A48, 0x58B5, 0x560C, 0x5AF4, 0x5968, 0x579B, 0x53E5, 0x59F4, + 0x534A, 0x5984, 0x56FB, 0x540B, 0x5678, 0x5878, 0x59A3, 0x5718, + 0x5438, 0x5A51, 0x57DD, 0x55EE, 0x51D2, 0x5899, 0x56BD, 0x53C7, + 0x560F, 0x5783, 0x5482, 0x56DE, 0x53F0, 0x596F, 0x57A3, 0x54D7, + 0x5A1D, 0x5860, 0x567F, 0x5259, 0x5917, 0x5749, 0x543F, 0x569F, + 0x5806, 0x5521, 0x5790, 0x5494, 0x55FA, 0x584C, 0x5572, 0x5210, + 0x5904, 0x5645, 0x5313, 0x5905, 0x5710, 0x54E2, 0x5666, 0x57D1, + 0x55E3, 0x5757, 0x5532, 0x56B1, 0x5814, 0x5607, 0x52CB, 0x58F2, + 0x56F9, 0x53C0, 0x5653, 0x57BE, 0x55A4, 0x571D, 0x53E6, 0x569E, + 0x5801, 0x55F0, 0x5764, 0x58DF, 0x56BF, 0x537C, 0x598E, 0x57AB, + 0x5490, 0x5706, 0x588A, 0x556A, 0x57EE, 0x54B5, 0x574D, 0x57F3, + 0x55BA, 0x5364, 0x58CD, 0x56B0, 0x544D, 0x4EDC, 0x5799, 0x5556, + 0x5199, 0x5878, 0x5651, 0x57DC, 0x55A3, 0x573F, 0x58BA, 0x569D, + 0x5439, 0x59B1, 0x5786, 0x5543, 0x5185, 0x5888, 0x563E, 0x52B7, + 0x5593, 0x574F, 0x58CA, 0x56AD, 0x5832, 0x58CE, 0x5796, 0x552F, + 0x59C2, 0x582B, 0x5652, 0x52A3, 0x589C, 0x5715, 0x53C5, 0x55AC, + 0x5741, 0x54D4, 0x569F, 0x541A, 0x59D1, 0x57AE, 0x554C, 0x528F, + 0x5497, 0x566B, 0x5817, 0x5598, 0x577B, 0x5910, 0x56B2, 0x5433, + 0x5932, 0x57BE, 0x5564, 0x527B, 0x58BF, 0x567F, 0x53CA, 0x55AD, + 0x578E, 0x5500, 0x56F1, 0x544B, 0x5620, 0x57D1, 0x5578, 0x5104, + 0x57F9, 0x5693, 0x53E6, 0x55EC, 0x56B9, 0x5518, 0x5665, 0x52FB, + 0x5592, 0x5706, 0x546C, 0x5664, 0x582F, 0x5595, 0x52BE, 0x5905, + 0x56D6, 0x5403, 0x50B0, 0x5800, 0x555D, 0x524F, 0x5484, 0x569F, + 0x5842, 0x55D4, 0x52DE, 0x5890, 0x570D, 0x544B, 0x50D2, 0x57A3, + 0x559C, 0x526F, 0x54C8, 0x56DD, 0x5413, 0x5637, 0x5327, 0x5568, + 0x56D3, 0x5490, 0x56A6, 0x5796, 0x5603, 0x52BD, 0x58B6, 0x5608, + 0x5457, 0x55AA, 0x5766, 0x5580, 0x569E, 0x54FB, 0x55D4, 0x57EF, + 0x5504, 0x5189, 0x581A, 0x566E, 0x5340, 0x4F54, 0x57C0, 0x54CC, + 0x514A, 0x53EE, 0x563A, 0x5302, 0x556B, 0x520C, 0x5497, 0x56F3, + 0x53B5, 0x58D9, 0x571F, 0x5537, 0x519D, 0x5866, 0x569C, 0x537C, + 0x55FA, 0x56EF, 0x552A, 0x5626, 0x5425, 0x55F3, 0x579F, 0x55C5, + 0x5220, 0x57E7, 0x55F2, 0x5419, 0x4FD1, 0x5796, 0x5517, 0x51E2, + 0x54C1, 0x55E9, 0x53E3, 0x54EE, 0x52CF, 0x586C, 0x56A6, 0x5431, + 0x55DC, 0x56EC, 0x54E5, 0x56E9, 0x585F, 0x5699, 0x531B, 0x58A9, + 0x56C2, 0x54D8, 0x5668, 0x580A, 0x563E, 0x579C, 0x559F, 0x56B5, + 0x57E1, 0x55E9, 0x5399, 0x58FE, 0x578F, 0x5592, 0x5157, 0x57DA, + 0x55E6, 0x538C, 0x5560, 0x5739, 0x5533, 0x56C6, 0x548A, 0x55D9, + 0x570C, 0x54E2, 0x526A, 0x5833, 0x56BA, 0x547D, 0x4FC5, 0x5709, + 0x54D9, 0x5230, 0x5422, 0x5663, 0x5420, 0x55EB, 0x536D, 0x54CC, + 0x5635, 0x53C7, 0x50F5, 0x5789, 0x55DE, 0x5360, 0x4DCA, 0x562E, + 0x53BE, 0x55B0, 0x52D0, 0x5583, 0x570D, 0x5506, 0x523D, 0x57A2, + 0x5555, 0x5273, 0x580F, 0x56DA, 0x54FD, 0x51D2, 0x57DE, 0x5579, + 0x5297, 0x54CB, 0x5687, 0x549D, 0x565A, 0x53F3, 0x5594, 0x571A, + 0x546E, 0x5134, 0x5765, 0x5603, 0x5412, 0x4F43, 0x5734, 0x5493, + 0x515C, 0x53DF, 0x55AB, 0x53B1, 0x55A5, 0x52F9, 0x54D9, 0x566A, + 0x537E, 0x4FAA, 0x56DD, 0x554A, 0x531C, 0x4B59, 0x5685, 0x53A3, + 0x4FD3, 0x52E9, 0x54F1, 0x5657, 0x54EB, 0x51F9, 0x575D, 0x55DD, + 0x5283, 0x4DFB, 0x5677, 0x548F, 0x521D, 0x5461, 0x55F8, 0x52DD, + 0x54E1, 0x51E9, 0x5432, 0x55A2, 0x542C, 0x50B8, 0x56D5, 0x5573, + 0x56AC, 0x53DB, 0x514A, 0x578A, 0x5545, 0x539D, 0x5542, 0x567C, + 0x544A, 0x5652, 0x536D, 0x551A, 0x5732, 0x54E6, 0x525A, 0x580B, + 0x561F, 0x533E, 0x5031, 0x5702, 0x54B2, 0x52D7, 0x5488, 0x55CB, + 0x53DE, 0x55C9, 0x52A3, 0x54B2, 0x56A9, 0x5453, 0x51B3, 0x5784, + 0x556E, 0x52A0, 0x4F07, 0x567A, 0x53F6, 0x5234, 0x53F0, 0x553D, + 0x5399, 0x5510, 0x51D0, 0x5496, 0x5620, 0x5393, 0x510A, 0x5700, + 0x54DF, 0x522E, 0x4DCA, 0x55F0, 0x5367, 0x515F, 0x532F, 0x54B4, + 0x5329, 0x5480, 0x512B, 0x547A, 0x5597, 0x52F9, 0x508E, 0x567B, + 0x544C, 0x5211, 0x4C76, 0x5566, 0x539F, 0x5080, 0x5291, 0x550F, + 0x528B, 0x53EC, 0x5052, 0x53E6, 0x5508, 0x525B, 0x500D, 0x55F2, + 0x5411, 0x5222, 0x4AFA, 0x55C3, 0x5387, 0x4FCD, 0x51F2, 0x54A4, + 0x51EB, 0x5354, 0x506A, 0x5351, 0x54F6, 0x52F7, 0x4F59, 0x564D, + 0x5449, 0x5182, 0x4947, 0x5538, 0x52ED, 0x4F19, 0x514A, 0x5418, + 0x5147, 0x5412, 0x5114, 0x52B8, 0x5502, 0x52B2, 0x4E9B, 0x55C4, + 0x53DD, 0x50D9, 0x473E, 0x54D1, 0x524F, 0x4E57, 0x524D, 0x5380, + 0x509E, 0x537D, 0x5098, 0x5219, 0x5473, 0x5213, 0x4DD8, 0x553A, + 0x5348, 0x502F, 0x4462, 0x54E6, 0x51DD, 0x4D8F, 0x51D7, 0x5411, + 0x4FEF, 0x52E4, 0x4FED, 0x52DE, 0x53E3, 0x5173, 0x4D46, 0x559A, + 0x53DA, 0x4FAE, 0x3FFE, 0x54A3, 0x52A6, 0x4CFD, 0x5136, 0x53A9, + 0x5134, 0x537A, 0x4F6B, 0x5274, 0x5470, 0x5241, 0x4C73, 0x5533, + 0x5345, 0x50C5, 0x3FFE, 0x543F, 0x520B, 0x4EF0, 0x5209, 0x5314, + 0x508B, 0x530E, 0x5088, 0x530B, 0x5408, 0x51CF, 0x4EAA, 0x556C, + 0x53D7, 0x504D, 0x3FFE, 0x54A0, 0x52D0, 0x4E6D, 0x5196, 0x53A6, + 0x5190, 0x53A0, 0x500C, 0x529E, 0x546D, 0x526F, 0x4E26, 0x55C8, + 0x536F, 0x512A, 0x4B2C, 0x5500, 0x5239, 0x4DE5, 0x5237, 0x540C, + 0x50EF, 0x530F, 0x50ED, 0x5309, 0x54A6, 0x5201, 0x4D9D, 0x5565, + 0x53D5, 0x50B2, 0x4A89, 0x5475, 0x52D1, 0x4F17, 0x51C4, 0x53A0, + 0x51BE, 0x539D, 0x5075, 0x529B, 0x543F, 0x5299, 0x4ED5, 0x559A, + 0x543A, 0x5186, 0x4CCF, 0x54D6, 0x5263, 0x5031, 0x5261, 0x5405, + 0x514F, 0x53DB, 0x511C, 0x530A, 0x54A0, 0x5304, 0x4FF3, 0x55D2, + 0x53D2, 0x51F6, 0x4E4D, 0x550F, 0x52D2, 0x4FB8, 0x52CC, 0x5442, + 0x51C0, 0x543D, 0x51BD, 0x5370, 0x54D9, 0x536E, 0x50A0, 0x5607, + 0x540C, 0x5187, 0x4DC5, 0x5185, 0x5339, 0x5068, 0x5336, 0x5066, + 0x525C, 0x53D8, 0x525A, 0x4F01, 0x5511, 0x53D0, 0x5146, 0x4B8A, + 0x5449, 0x5224, 0x4EF3, 0x521E, 0x539F, 0x510F, 0x5399, 0x510D, + 0x52C7, 0x54B2, 0x52C5, 0x4FE5, 0x554A, 0x540D, 0x51BA, 0x4D27, + 0x54A6, 0x533A, 0x4FAA, 0x528D, 0x53DC, 0x51B1, 0x53DA, 0x517E, + 0x5309, 0x54E8, 0x5303, 0x5091, 0x55EE, 0x5447, 0x522A, 0x4F63, + 0x5553, 0x539D, 0x5143, 0x4C94, 0x54B3, 0x52C9, 0x5051, 0x51EE, + 0x540D, 0x51EB, 0x5369, 0x510A, 0x533F, 0x5480, 0x5295, 0x5014, + 0x4A2E, 0x53DA, 0x51B3, 0x4EE4, 0x50CD, 0x530B, 0x50C7, 0x525D, + 0x4FDA, 0x5257, 0x5444, 0x517A, 0x4EA1, 0x54B9, 0x52D3, 0x508E, + 0x4D53, 0x54B0, 0x521F, 0x4F96, 0x521C, 0x536D, 0x513C, 0x5343, + 0x5139, 0x5299, 0x547E, 0x5297, 0x4F58, 0x5562, 0x53B4, 0x51E2, + 0x4E1A, 0x54C2, 0x5309, 0x50FE, 0x525F, 0x5421, 0x5259, 0x4F14, + 0x51A9, 0x537A, 0x517A, 0x52D5, 0x50C1, 0x52D3, 0x548A, 0x5224, + 0x4FCE, 0x556B, 0x53E9, 0x516B, 0x4ED0, 0x54CF, 0x533E, 0x5086, + 0x5299, 0x5452, 0x51EA, 0x53B2, 0x51E4, 0x53AF, 0x549C, 0x530B, + 0x5104, 0x5305, 0x5422, 0x525B, 0x5044, 0x5574, 0x537C, 0x51A9, + 0x4E4D, 0x54FF, 0x52D1, 0x50C5, 0x4D36, 0x545E, 0x5224, 0x5004, + 0x5222, 0x53BD, 0x516E, 0x5340, 0x516C, 0x5297, 0x542C, 0x5295, + 0x4FC7, 0x5580, 0x5389, 0x51E4, 0x4ECD, 0x5508, 0x5307, 0x5131, + 0x52DC, 0x504A, 0x525E, 0x4F87, 0x5258, 0x4F84, 0x51AD, 0x534D, + 0x51A7, 0x4DB0, 0x5438, 0x52A6, 0x5038, 0x4C92, 0x53BB, 0x521E, + 0x4F44, 0x5172, 0x5317, 0x516C, 0x5311, 0x50B7, 0x526C, 0x53FD, + 0x5269, 0x4FCC, 0x552F, 0x535B, 0x5137, 0x4E35, 0x54B6, 0x52DB, + 0x507B, 0x4D21, 0x5079, 0x522F, 0x4FBA, 0x51A9, 0x4EC3, 0x517D, + 0x5322, 0x50F6, 0x4DF1, 0x547F, 0x529F, 0x5039, 0x4CD9, 0x5405, + 0x51F2, 0x4F74, 0x5143, 0x52E9, 0x5140, 0x52E6, 0x50B8, 0x5269, + 0x4FFE, 0x523E, 0x4FF8, 0x51B8, 0x532F, 0x51B5, 0x4F35, 0x5488, + 0x52B0, 0x5103, 0x4D63, 0x5076, 0x522C, 0x4FB8, 0x5201, 0x4FB5, + 0x517B, 0x536E, 0x5178, 0x4EF2, 0x5451, 0x52EF, 0x50C1, 0x4D1B, + 0x53B3, 0x526B, 0x4F79, 0x4B3E, 0x5338, 0x513E, 0x4EAE, 0x513B, + 0x52B5, 0x508A, 0x52B3, 0x4FF9, 0x5235, 0x537B, 0x518A, 0x4F37, + 0x5184, 0x4F34, 0x54A5, 0x52F6, 0x50FE, 0x4D9A, 0x542F, 0x5276, + 0x5046, 0x51F8, 0x53B5, 0x51CD, 0x533D, 0x514A, 0x5337, 0x5471, + 0x52BE, 0x50BD, 0x5526, 0x53F7, 0x523E, 0x5004, 0x4C70, 0x537D, + 0x5190, 0x4F70, 0x510D, 0x52FE, 0x5107, 0x5282, 0x507F, 0x527F, + 0x53BC, 0x5201, 0x4FC6, 0x54C7, 0x5342, 0x5153, 0x4F31, 0x544E, + 0x52C6, 0x50C9, 0x4D9B, 0x5041, 0x5243, 0x503B, 0x51C4, 0x4F83, + 0x5199, 0x5309, 0x5116, 0x4EEE, 0x5487, 0x528A, 0x508C, 0x4E22, + 0x5412, 0x51E5, 0x4FFD, 0x4CAA, 0x5398, 0x5160, 0x4F3F, 0x515A, + 0x4EAB, 0x50D6, 0x52A4, 0x50D4, 0x4DDE, 0x53DA, 0x5224, 0x5046, + 0x4D3A, 0x5360, 0x51A0, 0x4F00, 0x4B78, 0x52E5, 0x511A, 0x4E66, + 0x5093, 0x5266, 0x5090, 0x5263, 0x5008, 0x51E5, 0x5376, 0x51E3, + 0x4F78, 0x4B63, 0x52FB, 0x515E, 0x4EB4, 0x4A6A, 0x52A4, 0x5053, + 0x4E1A, 0x5050, 0x5224, 0x4FC7, 0x51A6, 0x4FC1, 0x51A4, 0x5336, + 0x5121, 0x4E75, 0x543E, 0x52BB, 0x509B, 0x4DD6, 0x4904, 0x51EC, + 0x5010, 0x4D36, 0x500A, 0x5167, 0x4F80, 0x5165, 0x4EEE, 0x515F, + 0x5282, 0x50DF, 0x4E29, 0x5391, 0x5203, 0x5055, 0x4D8E, 0x538C, + 0x5182, 0x4FC9, 0x4C13, 0x4F3B, 0x5125, 0x4F39, 0x50FA, 0x4EAA, + 0x509F, 0x5241, 0x509D, 0x4D4A, 0x539F, 0x51C1, 0x5012, 0x4CA4, + 0x5328, 0x51B9, 0x4F82, 0x4BF9, 0x52D5, 0x50BA, 0x4EF2, 0x50B8, + 0x4E62, 0x505D, 0x5200, 0x502D, 0x4CFD, 0x5362, 0x5180, 0x4F48, + 0x4C56, 0x52EB, 0x517B, 0x4F3F, 0x4BAB, 0x5270, 0x50F6, 0x4EAA, + 0x5072, 0x5215, 0x4FED, 0x5212, 0x4FEB, 0x4D7B, 0x5301, 0x5192, + 0x4F5B, 0x4C05, 0x52AB, 0x5110, 0x4EF8, 0x4B58, 0x522F, 0x50B4, + 0x4E62, 0x502F, 0x5226, 0x502D, 0x51AC, 0x4FA8, 0x5156, 0x52C1, + 0x5154, 0x4F17, 0x4C8D, 0x52BC, 0x50CF, 0x4EB0, 0x4B05, 0x5241, + 0x504C, 0x4E1A, 0x4FED, 0x51E9, 0x4FEA, 0x51E3, 0x4FE8, 0x5168, + 0x52D2, 0x5166, 0x4F5C, 0x5110, 0x527C, 0x508C, 0x4E69, 0x4AEF, + 0x5200, 0x5084, 0x4DD6, 0x5003, 0x51FB, 0x5001, 0x517D, 0x4FA1, + 0x517B, 0x52E0, 0x5124, 0x4F15, 0x5122, 0x5269, 0x511C, 0x4E84, + 0x534F, 0x5211, 0x5045, 0x4DF1, 0x5043, 0x520D, 0x4FBE, 0x518F, + 0x4FB8, 0x513D, 0x52F2, 0x5137, 0x4F2C, 0x53D3, 0x5277, 0x50B5, + 0x4EC9, 0x535D, 0x5223, 0x5058, 0x4E37, 0x5355, 0x51CC, 0x5053, + 0x4DA0, 0x4FCE, 0x4D3A, 0x4F73, 0x5149, 0x4F70, 0x4C99, 0x5288, + 0x50F0, 0x4EE4, 0x4BF6, 0x5235, 0x506E, 0x4E7D, 0x4AA1, 0x522D, + 0x5066, 0x4DEA, 0x500E, 0x4DE8, 0x4F89, 0x515B, 0x4F87, 0x4CEC, + 0x4F81, 0x5156, 0x4F24, 0x4C4A, 0x5292, 0x5084, 0x4E97, 0x4BA3, + 0x4E95, 0x507C, 0x4E05, 0x5021, 0x4E03, 0x501E, 0x4D9D, 0x501C, + 0x4D9B, 0x4F9B, 0x5168, 0x4F95, 0x4CFF, 0x52A3, 0x50EB, 0x4F33, + 0x4BF7, 0x4EAC, 0x5092, 0x4EA9, 0x4BEF, 0x4E48, 0x5089, 0x4E46, + 0x502F, 0x4E40, 0x502C, 0x51C9, 0x4FAB, 0x4D49, 0x4FA9, 0x50FD, + 0x4F4D, 0x4CB1, 0x48A2, 0x50F8, 0x4F44, 0x4C13, 0x4EBE, 0x509C, + 0x4E5D, 0x5099, 0x4E5B, 0x5097, 0x4E55, 0x5017, 0x4DC8, 0x4FBF, + 0x515F, 0x4FBD, 0x4D64, 0x49C5, 0x515A, 0x4F5B, 0x4D5B, 0x4F59, + 0x5102, 0x4F56, 0x4C5A, 0x4F54, 0x50A9, 0x4ECA, 0x50A7, 0x4E6D, + 0x4B4A, 0x51C4, 0x5024, 0x4E64, 0x4B41, 0x51BB, 0x4FCB, 0x4D76, + 0x49E9, 0x5164, 0x4FC2, 0x4D6E, 0x4FC0, 0x510F, 0x4F64, 0x50E4, + 0x4EE2, 0x4C6E, 0x4EDC, 0x508F, 0x4ED9, 0x4C00, 0x51CD, 0x5086, + 0x4E76, 0x4BFB, 0x51A4, 0x502D, 0x4E17, 0x502B, 0x514C, 0x5025, + 0x4D84, 0x4A3A, 0x5144, 0x4F4C, 0x4D7B, 0x4907, 0x50EF, 0x4F44, + 0x4D13, 0x4EEB, 0x50E7, 0x4EE9, 0x50E4, 0x4EE3, 0x4C12, 0x4EE0, + 0x503B, 0x4E84, 0x4C0D, 0x51A5, 0x500D, 0x4DF6, 0x4AFF, 0x517B, + 0x4FB3, 0x4D92, 0x4AFA, 0x4D8F, 0x4FAB, 0x4D8D, 0x4FA8, 0x4D87, + 0x4F4D, 0x50CC, 0x4F4A, 0x4D22, 0x4F48, 0x50C4, 0x4EF0, 0x4C89, + 0x47D2, 0x50BF, 0x4E67, 0x4C1F, 0x4E61, 0x5066, 0x4E5E, 0x4BB0, + 0x4E5C, 0x500D, 0x4DFB, 0x4FB6, 0x4DF8, 0x4B0A, 0x5126, 0x4F88, + 0x4DF0, 0x4A96, 0x50FC, 0x4F83, 0x4D05, 0x4971, 0x50F4, 0x4F25, + 0x4C9B, 0x4F23, 0x4C99, 0x4F20, 0x4C93, 0x4EC4, 0x4C90, 0x4EC2, + 0x5094, 0x4EBF, 0x4C26, 0x5185, 0x503F, 0x4E60, 0x4C21, 0x46C7, + 0x4FE6, 0x4DD3, 0x4B18, 0x4DD0, 0x4FB8, 0x4DCE, 0x4F86, 0x4D70, + 0x4F5E, 0x4D69, 0x4F5B, 0x4D67, 0x4A9C, 0x511C, 0x4F53, 0x4D02, + 0x497C, 0x50C8, 0x4EF8, 0x4CFA, 0x4973, 0x50BF, 0x4EF0, 0x4CF4, + 0x4EED, 0x4C01, 0x4E95, 0x5014, 0x4E8F, 0x4BF8, 0x4E8C, 0x500F, + 0x4E8A, 0x4B8A, 0x5150, 0x4FE5, 0x4E2B, 0x4B85, 0x4DCD, 0x4F88, + 0x4DA0, 0x4B15, 0x4D9E, 0x4F83, 0x4D98, 0x4F80, 0x4D3A, 0x4F7E, + 0x4D37, 0x4F78, 0x50C5, 0x4F75, 0x4D2F, 0x51FC, 0x50BD, 0x4F1B, + 0x4CCA, 0x51F4, 0x506C, 0x4F13, 0x4CC5, 0x4EBB, 0x5063, 0x4EB8, + 0x4CC0, 0x4EB6, 0x505B, 0x4E5D, 0x5058, 0x4E57, 0x4C54, 0x4E2E, + 0x5003, 0x4E28, 0x4B58, 0x5141, 0x4FAA, 0x4DC8, 0x4B4F, 0x5117, + 0x4FA5, 0x4DC3, 0x4B4A, 0x4DC1, 0x4F7B, 0x4DBB, 0x4F75, 0x4DB8, + 0x4F72, 0x4DB6, 0x4F70, 0x4DB3, 0x4ACF, 0x50B3, 0x4F16, 0x4D53, + 0x4ACA, 0x50AE, 0x4F0D, 0x4D4B, 0x4A5A, 0x50AA, 0x4F08, 0x4CEA, + 0x4F06, 0x4CE4, 0x4F00, 0x4C85, 0x4EFD, 0x4C82, 0x4EA5, 0x5025, + 0x4EA3, 0x4C4E, 0x48B7, 0x501D, 0x4E48, 0x4BE8, 0x48B1, 0x5018, + 0x4E3F, 0x4BDF, 0x4E16, 0x4BDD, 0x4E14, 0x4BDA, 0x4E0E, 0x4BD8, + 0x4E0B, 0x5008, 0x4E09, 0x4BD3, 0x4E06, 0x4FB3, 0x4E04, 0x4BCA, + 0x481B, 0x4FAE, 0x4DFB, 0x4BC5, 0x4DF9, 0x4F54, 0x4DF6, 0x4B5A, + 0x4D99, 0x4B58, 0x4D97, 0x4F24, 0x4D94, 0x4AE9, 0x4D92, 0x4F1F, + 0x4D34, 0x4A7D, 0x508E, 0x4F1A, 0x4D2C, 0x4A47, 0x4D29, 0x4F11, + 0x4D00, 0x4A42, 0x4CFA, 0x4F0D, 0x4CF7, 0x4F07, 0x4CF5, 0x4A36, + 0x4CF2, 0x4EB0, 0x4CF0, 0x4A2E, 0x5025, 0x4EA7, 0x4CE7, 0x4A28, + 0x4285, 0x4E7D, 0x4CE2, 0x4A23, 0x4CE0, 0x4E78, 0x4C81, 0x4EC7, + 0x4C7F, 0x4EC5, 0x4C78, 0x4E6D, 0x4C76, 0x49A7, 0x4FE3, 0x4E68, + 0x4C10, 0x4930, 0x4FDE, 0x4E5F, 0x4C41, 0x492B, 0x4C3B, 0x4E04, + 0x4C38, 0x4E32, 0x4C36, 0x4E2C, 0x4C33, 0x4E29, 0x4C8D, 0x4E27, + 0x4FA4, 0x4E24, 0x4C2C, 0x48E4, 0x4F9C, 0x4E1C, 0x4C23, 0x48DF, + 0x4F97, 0x4E17, 0x4BBD, 0x48D6, 0x4BBB, 0x4DBC, 0x4BB8, 0x4DE6, + 0x4BB6, 0x4DE3, 0x4FB3, 0x4DE1, 0x4BE2, 0x4E31, 0x4F5D, 0x4DDC, + 0x4BDA, 0x484D, 0x4F58, 0x4DD3, 0x4BD5, 0x4848, 0x4F7B, 0x4DCE, + 0x4BD0, 0x4D75, 0x4B6C, 0x4DA3, 0x4F74, 0x4DA1, 0x4B67, 0x4DF1, + 0x4F1E, 0x4DEF, 0x4B94, 0x4873, 0x4F41, 0x4D93, 0x4BEC, 0x48DC, + 0x4F3C, 0x4D8B, 0x4B8A, 0x4D88, 0x4F38, 0x4DB6, 0x4F32, 0x4E06, + 0x4B7F, 0x4DAD, 0x4F2D, 0x4DAB, 0x4B7A, 0x5095, 0x4F50, 0x4DA6, + 0x4C04, 0x481D, 0x4F4B, 0x4D9D, 0x4BA2, 0x4DCB, 0x4F21, 0x4DC9, + 0x4B9D, 0x4DC3, 0x4F69, 0x4DC0, 0x4F67, 0x4DBE, 0x4B66, 0x5057, + 0x4F11, 0x4D8F, 0x4BBF, 0x507A, 0x4F85, 0x4DE0, 0x4BBA, 0x4DDE, + 0x4F33, 0x4D85, 0x4BB5, 0x4D83, 0x4F2A, 0x4D80, 0x4F28, 0x4DFD, + 0x4BDB, 0x4909, 0x4F4B, 0x4DA2, 0x4BD6, 0x4893, 0x4F46, 0x4D9D, + 0x4BD1, 0x48CE, 0x4BA3, 0x4E17, 0x4BFE, 0x4932, 0x4BF8, 0x4DBF, + 0x4BF5, 0x4DBD, 0x4BF3, 0x4927, 0x4BF0, 0x4DE1, 0x4BEE, 0x4921, + 0x4F33, 0x4DDC, 0x4C1A, 0x49C0, 0x445B, 0x4DD7, 0x4C11, 0x4953, + 0x4C0F, 0x4DFE, 0x4C3E, 0x494A, 0x4C3B, 0x49E7, 0x4C39, 0x4DF4, + 0x4C33, 0x49E2, 0x4C30, 0x4E1B, 0x4C5F, 0x49DD, 0x45AE, 0x4E16, + 0x4C5A, 0x4A72, 0x45A9, 0x4E3D, 0x4C55, 0x4A06, 0x4C80, 0x4A04, + 0x4C7D, 0x4A01, 0x4C7B, 0x4A98, 0x4C75, 0x4E59, 0x4CFB, 0x4A8F, + 0x465E, 0x4E51, 0x4C9E, 0x4A28, 0x4715, 0x4E78, 0x4C96, 0x4ABC, + 0x4710, 0x4E9F, 0x4CC1, 0x4AB7, 0x4CBF, 0x4B44, 0x4CBD, 0x4AE4, + 0x4D3A, 0x4ADE, 0x4CE5, 0x4EBB, 0x4CE2, 0x4B68, 0x485F, 0x4EB2, + 0x4D5D, 0x4B63, 0x4857, 0x4ED9, 0x4D02, 0x4B90, 0x48FB, 0x4B8E, + 0x4D80, 0x4B8B, 0x4D7A, 0x4B89, 0x4DA4, 0x4BB4, 0x4DA1, 0x4BB2, + 0x4922, 0x4F18, 0x4D4A, 0x4BAD, 0x49BD, 0x4F3A, 0x4DC4, 0x4BD6, + 0x49B8, 0x4BD7, 0x4DE8, 0x4C02, 0x49E6, 0x4BFF, 0x4DE3, 0x4BFD, + 0x4E0C, 0x4C80, 0x4A74, 0x4C7D, 0x4E04, 0x4C23, 0x4A0C, 0x4F4F, + 0x4A0A, 0x4CA3, 0x4A9C, 0x4CA1, 0x4E52, 0x4CCB, 0x4A97, 0x4CC9, + 0x4E49, 0x4CC6, 0x4AC5, 0x4818, 0x4E70, 0x4CEE, 0x4AF2, 0x4813, + 0x4AEC, 0x4D16, 0x4B78, 0x48B4, 0x4B76, 0x4D0D, 0x4B16, 0x4D38, + 0x4B9F, 0x48E4, 0x4B9C, 0x4D5F, 0x4B9A, 0x497B, 0x4EFE, 0x4D5A, + 0x4BC6, 0x490E, 0x4553, 0x4D82, 0x4BEF, 0x49A4, 0x4611, 0x4DA5, + 0x4BEA, 0x49D6, 0x4C15, 0x49D0, 0x4C12, 0x4A63, 0x4C41, 0x4A60, + 0x46FE, 0x4DEE, 0x4CBD, 0x4A8D, 0x47A6, 0x4E15, 0x4C60, 0x4ABB, + 0x4848, 0x4AB8, 0x4CE0, 0x4B41, 0x487B, 0x4AE5, 0x4D04, 0x4B6E, + 0x4917, 0x4B68, 0x4914, 0x4B65, 0x4D29, 0x4B94, 0x4947, 0x4B92, + 0x4D4D, 0x4BC1, 0x4975, 0x45A2, 0x4D74, 0x4BE9, 0x4A06, 0x465A, + 0x4A04, 0x4BE1, 0x4A34, 0x4C0F, 0x4A31, 0x4C0D, 0x4A2F, 0x4C37, + 0x4A5F, 0x47E6, 0x4A59, 0x4C60, 0x4A8C, 0x47E0, 0x4E33, 0x4CDB, + 0x4B13, 0x48B5, 0x434E, 0x4D03, 0x4B3C, 0x48E8, 0x4B3A, 0x4D27, + 0x4B69, 0x48E3, 0x4B62, 0x4918, 0x4B91, 0x4D74, 0x4B8F, 0x49AA, + 0x4666, 0x4D9C, 0x4BB7, 0x49D8, 0x4751, 0x4DBF, 0x4BE0, 0x4A02, + 0x4785, 0x4A35, 0x4C36, 0x4ABF, 0x4827, 0x4ABD, 0x4CB1, 0x4AE8, + 0x4CDB, 0x4AEA, 0x4CD9, 0x4B15, 0x4D03, 0x4B13, 0x4CFD, 0x4B3E, + 0x4920, 0x4E77, 0x4D24, 0x4B6B, 0x494E, 0x4EBE, 0x4D74, 0x4C19, + 0x49B3, 0x46B5, 0x4D98, 0x4C3D, 0x4A3B, 0x4BE7, 0x4A6B, 0x4C65, + 0x4A69, 0x4C8F, 0x4A98, 0x4C8D, 0x4E0C, 0x4CB7, 0x4AC2, 0x4897, + 0x4E2F, 0x4CDB, 0x4AEE, 0x48CA, 0x4523, 0x4D03, 0x4B17, 0x4930, + 0x4BC9, 0x4D53, 0x4BC6, 0x49BD, 0x4BF1, 0x49ED, 0x4C1C, 0x4A1D, + 0x4C19, 0x4A1B, 0x4774, 0x4DC4, 0x4C41, 0x4A44, 0x4812, 0x4DE7, + 0x4C96, 0x4AA3, 0x4879, 0x4545, 0x4CBA, 0x4B53, 0x490C, 0x4B51, + 0x493D, 0x4B7C, 0x4971, 0x4BAB, 0x496B, 0x4BA5, 0x499F, 0x4BCF, + 0x49CB, 0x4750, 0x4D7F, 0x4BF8, 0x4A85, 0x47BC, 0x4DCB, 0x4C4D, + 0x4AAE, 0x488D, 0x44A8, 0x4C71, 0x4B09, 0x48BB, 0x4B06, 0x48F0, + 0x4B32, 0x48ED, 0x4B61, 0x49B0, 0x4B88, 0x49DD, 0x4B85, 0x49DE, + 0x47A1, 0x4D63, 0x4BDF, 0x4A3A, 0x47D4, 0x43BC, 0x4C03, 0x4A63, + 0x483B, 0x44CB, 0x4C58, 0x4ABE, 0x4906, 0x4AEA, 0x4933, 0x4AEB, + 0x4934, 0x4B16, 0x4961, 0x46E2, 0x4995, 0x4BEE, 0x49C1, 0x474F, + 0x4D46, 0x4C12, 0x49EE, 0x4820, 0x43E4, 0x4C67, 0x4AD2, 0x4887, + 0x4AFD, 0x4884, 0x4AFA, 0x48B5, 0x4B26, 0x48E6, 0x4B51, 0x49A9, + 0x4B7C, 0x49D9, 0x472F, 0x4CDA, 0x4BD1, 0x4A02, 0x479B, 0x42F6, + 0x4C23, 0x4A5E, 0x47CF, 0x450C, 0x4C4A, 0x4AB9, 0x48CE, 0x4AE4, + 0x48FE, 0x4B0F, 0x492F, 0x4B0D, 0x495F, 0x46A9, 0x498C, 0x4B63, + 0x49BC, 0x47B8, 0x4D61, 0x4BB5, 0x49E9, 0x481F, 0x4478, 0x4C0A, + 0x4A45, 0x484E, 0x456D, 0x487F, 0x4B1F, 0x48B4, 0x4B4A, 0x4973, + 0x4B74, 0x49A0, 0x4B9F, 0x49D0, 0x4737, 0x49FF, 0x4BF1, 0x4A2B, + 0x4838, 0x44A0, 0x4BC9, 0x4A86, 0x489A, 0x45CF, 0x4C1A, 0x4ADD, + 0x48FC, 0x4641, 0x492C, 0x4B33, 0x495D, 0x4B5E, 0x498D, 0x4B89, + 0x49B9, 0x4BDD, 0x49E9, 0x47F0, 0x4A15, 0x4C2E, 0x4A40, 0x4853, + 0x45ED, 0x4C7E, 0x4A9B, 0x4947, 0x465F, 0x4CCB, 0x4B1B, 0x49A3, + 0x47A4, 0x49CF, 0x4B71, 0x4A2D, 0x4B9C, 0x4A59, 0x483D, 0x4A84, + 0x4BED, 0x4AB0, 0x489E, 0x4ADB, 0x4C67, 0x4B06, 0x4900, 0x46B7, + 0x4CB7, 0x4B85, 0x498F, 0x475C, 0x49BB, 0x4BD7, 0x49EB, 0x4C01, + 0x4A13, 0x4C54, 0x4A42, 0x4BD9, 0x4A9C, 0x4919, 0x4AC7, 0x4C53, + 0x4AF2, 0x4975, 0x4741, 0x4CA0, 0x4B71, 0x4A00, 0x47E1, 0x4D18, + 0x4812, 0x4A5B, 0x4843, 0x4AB4, 0x4874, 0x4ADF, 0x48D8, 0x4B06, + 0x4905, 0x4690, 0x4935, 0x4B85, 0x4961, 0x47CB, 0x446C, 0x4B5D, + 0x49EB, 0x4861, 0x45D0, 0x4BD8, 0x4A71, 0x48F1, 0x467C, 0x4922, + 0x4AF5, 0x494E, 0x46E9, 0x49AC, 0x474F, 0x49D8, 0x4785, 0x4A32, + 0x47B6, 0x450E, 0x4C18, 0x4A89, 0x490A, 0x469B, 0x4C69, 0x4B09, + 0x4995, 0x473C, 0x433E, 0x4B31, 0x496C, 0x47A3, 0x44FE, 0x4808, + 0x49F2, 0x4839, 0x4A1E, 0x4899, 0x45E3, 0x48CA, 0x4AA3, 0x4929, + 0x475E, 0x4955, 0x4B4C, 0x49B3, 0x47F4, 0x4522, 0x4BCA, 0x4A39, + 0x4886, 0x45CF, 0x48E5, 0x4AB9, 0x4916, 0x4676, 0x4971, 0x46E1, + 0x49A0, 0x4714, 0x49FA, 0x477D, 0x49A2, 0x47E3, 0x49CE, 0x4814, + 0x462C, 0x4C08, 0x4A80, 0x48A5, 0x46CE, 0x43CA, 0x4B00, 0x4963, + 0x479E, 0x4484, 0x47CF, 0x49E9, 0x4834, 0x453C, 0x4894, 0x4A97, + 0x48C0, 0x4AF0, 0x4920, 0x4759, 0x497E, 0x4AEB, 0x49D8, 0x47EF, + 0x44EC, 0x4B6C, 0x4A01, 0x48B0, 0x45D3, 0x490F, 0x4A5B, 0x4882, + 0x4676, 0x48E2, 0x4ADB, 0x4940, 0x474B, 0x496C, 0x47AC, 0x49C6, + 0x47DE, 0x4A20, 0x4842, 0x4630, 0x4BD7, 0x4ACA, 0x48FD, 0x4702, + 0x495C, 0x4768, 0x49B6, 0x47CD, 0x4A0C, 0x4B73, 0x4A37, 0x4891, + 0x468A, 0x4C16, 0x4A66, 0x494B, 0x4756, 0x43C4, 0x4B0F, 0x491E, + 0x4820, 0x44B8, 0x478E, 0x4A00, 0x47EE, 0x45A0, 0x484F, 0x4AAA, + 0x48AE, 0x467C, 0x490D, 0x4717, 0x4996, 0x4B00, 0x49F0, 0x47DE, + 0x458F, 0x4BA4, 0x4A43, 0x489D, 0x466B, 0x429E, 0x4A9B, 0x4985, + 0x476B, 0x44D1, 0x47CD, 0x4980, 0x4831, 0x45EE, 0x48BC, 0x4656, + 0x48EC, 0x46C0, 0x4892, 0x475A, 0x48ED, 0x4ADD, 0x4976, 0x47ED, + 0x45DD, 0x4B5E, 0x4A53, 0x4822, 0x45A9, 0x42BD, 0x4A27, 0x490B, + 0x46B5, 0x4402, 0x471B, 0x49EA, 0x47B0, 0x452B, 0x4840, 0x4598, + 0x489F, 0x463D, 0x4929, 0x46A4, 0x43F0, 0x4AE9, 0x4900, 0x47D3, + 0x4515, 0x4B41, 0x4A08, 0x488F, 0x462C, 0x4366, 0x4A5B, 0x48BF, + 0x475D, 0x4496, 0x47F1, 0x49A2, 0x47BC, 0x45AF, 0x47C4, 0x464F, + 0x4853, 0x46EA, 0x48DD, 0x46B4, 0x4484, 0x4ACC, 0x4963, 0x4782, + 0x45D7, 0x40D5, 0x49EB, 0x4871, 0x45D9, 0x4285, 0x4A6B, 0x48CE, + 0x470F, 0x4401, 0x47A4, 0x49B3, 0x4834, 0x455B, 0x4860, 0x45FD, + 0x4835, 0x469C, 0x48C3, 0x4732, 0x442F, 0x4AD9, 0x49A2, 0x4791, + 0x4972, 0x47C8, 0x4624, 0x4B80, 0x4A7A, 0x4910, 0x4721, 0x490A, + 0x4A7C, 0x4911, 0x478A, 0x49C0, 0x4849, 0x4A19, 0x48A4, 0x4A13, + 0x48A2, 0x4682, 0x48D5, 0x4AEB, 0x4987, 0x480C, 0x4565, 0x4B16, + 0x4989, 0x480D, 0x463F, 0x443C, 0x4A87, 0x494B, 0x479F, 0x4442, + 0x4798, 0x497B, 0x47D0, 0x45FC, 0x488A, 0x4A25, 0x48E4, 0x472D, + 0x48E2, 0x46F7, 0x4942, 0x4792, 0x49C2, 0x484C, 0x4654, 0x4879, + 0x4A1B, 0x4852, 0x468A, 0x445C, 0x4A6D, 0x495C, 0x4813, 0x4615, + 0x41DD, 0x4A0D, 0x4844, 0x464B, 0x48F8, 0x4716, 0x4924, 0x47A2, + 0x4928, 0x47A0, 0x4560, 0x4806, 0x49D3, 0x48BF, 0x4707, 0x44B1, + 0x4A7F, 0x4919, 0x4709, 0x44ED, 0x4243, 0x496D, 0x4853, 0x46C5, + 0x4431, 0x46C2, 0x490B, 0x46FA, 0x44A8, 0x47EA, 0x45BA, 0x47E7, + 0x4652, 0x481E, 0x464F, 0x433A, 0x46F0, 0x48D0, 0x47B0, 0x4576, + 0x4267, 0x49AD, 0x4810, 0x45B1, 0x42EF, 0x4A59, 0x4893, 0x473F, + 0x4567, 0x3F93, 0x494A, 0x4830, 0x45A2, 0x429F, 0x46D3, 0x4861, + 0x46D0, 0x4911, 0x4738, 0x44EB, 0x47F3, 0x49C2, 0x47F1, 0x4690, + 0x4400, 0x4A1B, 0x48AA, 0x472A, 0x4441, 0x40A9, 0x498A, 0x478E, + 0x4621, 0x43F1, 0x4625, 0x4871, 0x474B, 0x4468, 0x4749, 0x45E0, + 0x47DF, 0x45AD, 0x4836, 0x464B, 0x436D, 0x46DD, 0x48EE, 0x46DB, + 0x456C, 0x426B, 0x49A0, 0x47CE, 0x4671, 0x42B2, 0x3D9B, 0x4887, + 0x46D7, 0x44F2, 0x425C, 0x4530, 0x4790, 0x4662, 0x42E3, 0x4630, + 0x44B0, 0x4758, 0x4478, 0x4726, 0x458C, 0x47EB, 0x49B1, 0x4813, + 0x45F7, 0x4435, 0x4A30, 0x48CB, 0x46EB, 0x45B2, 0x40FE, 0x494F, + 0x47AB, 0x46B2, 0x43B5, 0x46AC, 0x4864, 0x4743, 0x4539, 0x4770, + 0x453B, 0x4801, 0x466F, 0x482A, 0x4641, 0x44FC, 0x4734, 0x48E1, + 0x4736, 0x45D2, 0x4327, 0x4965, 0x47F0, 0x46CD, 0x44B7, 0x3F17, + 0x48A9, 0x47BC, 0x45C3, 0x42A0, 0x45C1, 0x4871, 0x46BF, 0x443D, + 0x46BC, 0x451C, 0x477F, 0x4584, 0x477C, 0x4653, 0x43FA, 0x4680, + 0x4895, 0x4743, 0x4543, 0x41C6, 0x4944, 0x4801, 0x4644, 0x43B5, + 0x4611, 0x4887, 0x4709, 0x4503, 0x4798, 0x490C, 0x47C4, 0x4605, + 0x4851, 0x46CE, 0x484E, 0x46CB, 0x48D6, 0x478D, 0x45C9, 0x4791, + 0x4959, 0x4818, 0x4690, 0x4481, 0x49D8, 0x48A1, 0x4724, 0x4554, + 0x42A5, 0x49A5, 0x4814, 0x4655, 0x4406, 0x4718, 0x48EE, 0x47A6, + 0x461B, 0x47A8, 0x4619, 0x43C3, 0x46DD, 0x48B8, 0x46AF, 0x44D7, + 0x4211, 0x493C, 0x47FA, 0x46A5, 0x4462, 0x3F9C, 0x487F, 0x4736, + 0x45A0, 0x4374, 0x459D, 0x47C1, 0x4667, 0x4489, 0x46FA, 0x4563, + 0x46F8, 0x4560, 0x47B5, 0x462B, 0x444B, 0x46EE, 0x4810, 0x46BC, + 0x451F, 0x42E6, 0x491E, 0x4807, 0x45EC, 0x4406, 0x4124, 0x488C, + 0x4743, 0x44DF, 0x429F, 0x45B0, 0x47CE, 0x4679, 0x44A4, 0x470C, + 0x44A2, 0x4709, 0x4577, 0x4797, 0x4641, 0x437E, 0x463E, 0x4821, + 0x46D2, 0x456B, 0x4210, 0x48FD, 0x47E9, 0x4602, 0x4458, 0x4035, + 0x452E, 0x4729, 0x452B, 0x42FC, 0x45C6, 0x4416, 0x468A, 0x4413, + 0x471D, 0x44EE, 0x42EF, 0x4589, 0x4779, 0x4652, 0x43D5, 0x4175, + 0x4889, 0x46DF, 0x4581, 0x42A9, 0x3F83, 0x47FA, 0x4614, 0x446F, + 0x4128, 0x4544, 0x4736, 0x4542, 0x438A, 0x45DC, 0x4467, 0x4670, + 0x4507, 0x46FF, 0x4505, 0x4347, 0x459F, 0x478A, 0x4664, 0x4422, + 0x4210, 0x486C, 0x4756, 0x4593, 0x4301, 0x4082, 0x47DC, 0x46BC, + 0x44BB, 0x41C9, 0x455B, 0x4719, 0x45F0, 0x43A6, 0x4684, 0x447E, + 0x4713, 0x451E, 0x4710, 0x45E4, 0x4399, 0x4649, 0x47F7, 0x4646, + 0x4512, 0x46D9, 0x45AC, 0x4763, 0x4641, 0x4434, 0x463E, 0x4845, + 0x46A2, 0x4570, 0x434A, 0x48F5, 0x47B5, 0x4602, 0x4497, 0x421C, + 0x486B, 0x46F5, 0x4530, 0x43B8, 0x40D6, 0x47DC, 0x465A, 0x452B, + 0x42C8, 0x45C1, 0x4748, 0x45BE, 0x444E, 0x4623, 0x44EE, 0x46B2, + 0x44EB, 0x4740, 0x4586, 0x4445, 0x4617, 0x47F7, 0x467A, 0x457C, + 0x4361, 0x48CF, 0x4767, 0x45DF, 0x44A5, 0x426F, 0x4544, 0x46D2, + 0x45D5, 0x43C5, 0x45A6, 0x446B, 0x4637, 0x4507, 0x4315, 0x459D, + 0x43BD, 0x462D, 0x445F, 0x4691, 0x44FB, 0x42D2, 0x4561, 0x4779, + 0x45F6, 0x4421, 0x40E0, 0x47D0, 0x46E4, 0x4558, 0x4373, 0x3F85, + 0x47A0, 0x464E, 0x44B6, 0x4286, 0x4520, 0x4737, 0x45B2, 0x43D7, + 0x4616, 0x4478, 0x46A5, 0x4514, 0x4704, 0x4579, 0x43CF, 0x4080, + 0x47B8, 0x466D, 0x44D7, 0x42E9, 0x3F1F, 0x4756, 0x45D2, 0x4433, + 0x41F6, 0x3D93, 0x46C1, 0x4535, 0x4385, 0x402D, 0x43F5, 0x462A, + 0x4492, 0x429D, 0x452D, 0x4346, 0x458E, 0x43E9, 0x4680, 0x4454, + 0x4291, 0x4588, 0x473D, 0x45E9, 0x444F, 0x419D, 0x47F0, 0x46AC, + 0x454C, 0x43A5, 0x4097, 0x4760, 0x4641, 0x44AD, 0x42F1, 0x3F84, + 0x4367, 0x45A9, 0x4405, 0x4150, 0x44A1, 0x42B2, 0x4507, 0x435B, + 0x4600, 0x43C7, 0x41FB, 0x4502, 0x46BE, 0x4567, 0x431C, 0x403C, + 0x4776, 0x4628, 0x44C5, 0x426B, 0x3F1E, 0x46E5, 0x45C0, 0x4421, + 0x41AF, 0x44BD, 0x46DC, 0x4523, 0x4377, 0x4588, 0x4419, 0x464A, + 0x4480, 0x42C7, 0x457E, 0x436F, 0x45DF, 0x4477, 0x463E, 0x44E1, + 0x42BF, 0x4546, 0x46F8, 0x45A7, 0x443D, 0x41D1, 0x3EB2, 0x46C3, + 0x453A, 0x4398, 0x4113, 0x4435, 0x465D, 0x449C, 0x42ED, 0x4565, + 0x438C, 0x45C6, 0x4492, 0x4629, 0x44F8, 0x42E0, 0x455D, 0x473B, + 0x45BE, 0x4459, 0x422F, 0x47EE, 0x46D9, 0x45B4, 0x43B4, 0x4172, + 0x4762, 0x4648, 0x451B, 0x433C, 0x40AF, 0x4759, 0x45DC, 0x447D, + 0x428F, 0x44E3, 0x46F7, 0x45D7, 0x440A, 0x4632, 0x4475, 0x42F8, + 0x453E, 0x471D, 0x459F, 0x446B, 0x4246, 0x47A5, 0x46BB, 0x4533, + 0x43C7, 0x418F, 0x4744, 0x4629, 0x4495, 0x4321, 0x455E, 0x473B, + 0x45C2, 0x448F, 0x42A7, 0x44F5, 0x46D9, 0x45B8, 0x43EF, 0x4618, + 0x4456, 0x4648, 0x4520, 0x46FF, 0x4580, 0x43E3, 0x463E, 0x4787, + 0x469D, 0x4518, 0x43DA, 0x4861, 0x477E, 0x4636, 0x450E, 0x4338, + 0x4543, 0x43A0, 0x41A3, 0x3DFC, 0x465D, 0x44D6, 0x4396, 0x40E5, + 0x4402, 0x420D, 0x44CC, 0x4280, 0x452E, 0x435C, 0x4159, 0x4432, + 0x4620, 0x4494, 0x42E8, 0x409A, 0x4706, 0x45B9, 0x4426, 0x42DE, + 0x400E, 0x46A5, 0x45B3, 0x441C, 0x41BB, 0x3F41, 0x429F, 0x451B, + 0x437B, 0x4102, 0x43E3, 0x4229, 0x44B2, 0x4307, 0x4572, 0x43DD, + 0x4176, 0x4444, 0x425B, 0x4509, 0x436A, 0x416C, 0x443A, 0x45FC, + 0x446F, 0x42C3, 0x4030, 0x46DF, 0x4595, 0x4401, 0x4249, 0x4026, + 0x4326, 0x4529, 0x43F8, 0x4243, 0x44C2, 0x42B1, 0x44F7, 0x4388, + 0x4119, 0x43BE, 0x4204, 0x448A, 0x42E2, 0x454E, 0x43B9, 0x41FA, + 0x4480, 0x4637, 0x44B5, 0x4345, 0x40CF, 0x3E78, 0x45A9, 0x444B, + 0x433B, 0x40C5, 0x3CAB, 0x459F, 0x4442, 0x4224, 0x3F81, 0x4301, + 0x4537, 0x43D3, 0x421E, 0x446D, 0x42FC, 0x4532, 0x43CE, 0x4562, + 0x43FF, 0x4287, 0x44C9, 0x46A8, 0x455D, 0x43FA, 0x41D5, 0x3F2A, + 0x4645, 0x44F4, 0x438B, 0x4159, 0x3E96, 0x45E3, 0x44EB, 0x431B, + 0x4154, 0x43B7, 0x45D9, 0x4482, 0x42A6, 0x4516, 0x4348, 0x4572, + 0x4414, 0x426A, 0x44AD, 0x4342, 0x410A, 0x43A5, 0x459D, 0x44A4, + 0x42CE, 0x408C, 0x436E, 0x4567, 0x443A, 0x42C8, 0x44CF, 0x42FE, + 0x4173, 0x43CC, 0x41E2, 0x4466, 0x42F5, 0x40BA, 0x4361, 0x455A, + 0x4460, 0x4284, 0x4037, 0x4670, 0x4525, 0x43F2, 0x427A, 0x3FB3, + 0x3BAC, 0x451B, 0x43ED, 0x4204, 0x3FA9, 0x42AB, 0x44B7, 0x437E, + 0x4156, 0x4418, 0x4236, 0x44AD, 0x430E, 0x40D9, 0x440F, 0x4230, + 0x3F5D, 0x42D7, 0x44D8, 0x43A1, 0x41BA, 0x3F53, 0x45F5, 0x44CF, + 0x4335, 0x41B0, 0x3EC8, 0x4592, 0x4466, 0x42C5, 0x40C1, 0x3DF4, + 0x41E2, 0x4460, 0x4289, 0x407F, 0x435C, 0x41DC, 0x43F7, 0x4284, + 0x3FFC, 0x42EC, 0x4161, 0x43ED, 0x420E, 0x4482, 0x42E3, 0x40E9, + 0x3DDB, 0x4546, 0x4419, 0x42AB, 0x4067, 0x3DD5, 0x453C, 0x4413, + 0x423A, 0x4029, 0x3C56, 0x450B, 0x43A5, 0x4230, 0x3FA5, 0x42D2, + 0x410C, 0x436E, 0x41BA, 0x3F9B, 0x4262, 0x4106, 0x4369, 0x41B4, + 0x43FF, 0x425C, 0x4011, 0x42F9, 0x4523, 0x4395, 0x4252, 0x3FD2, + 0x3CD5, 0x451D, 0x438F, 0x41E1, 0x3F49, 0x3B3F, 0x44B5, 0x4386, + 0x41D7, 0x3F44, 0x427A, 0x44B0, 0x4380, 0x41CD, 0x3F3A, 0x4274, + 0x4033, 0x4311, 0x4156, 0x43AC, 0x426B, 0x3FB0, 0x430C, 0x4504, + 0x433E, 0x41F9, 0x440C, 0x45BE, 0x44A0, 0x4338, 0x4183, 0x46A2, + 0x458D, 0x4496, 0x4301, 0x417D, 0x3EE2, 0x4584, 0x4491, 0x42FB, + 0x4106, 0x43F7, 0x457E, 0x4428, 0x42F2, 0x40FC, 0x438D, 0x41E3, + 0x441F, 0x42EC, 0x44E5, 0x4384, 0x41DA, 0x43EC, 0x42E3, 0x447D, + 0x4319, 0x41D4, 0x3F84, 0x456E, 0x4477, 0x4313, 0x415D, 0x3F00, + 0x4565, 0x446E, 0x42DC, 0x4158, 0x3EF6, 0x455B, 0x4409, 0x42D2, + 0x414E, 0x436E, 0x41F6, 0x4400, 0x42CD, 0x40D6, 0x4364, 0x41BA, + 0x442D, 0x42C3, 0x445E, 0x42F9, 0x41B4, 0x3FA2, 0x4257, 0x4458, + 0x42F4, 0x41AF, 0x3F1D, 0x4574, 0x4482, 0x4322, 0x41A5, 0x3F18, + 0x3B6E, 0x4479, 0x4319, 0x4132, 0x3ED4, 0x41D7, 0x4418, 0x42AD, + 0x4129, 0x437D, 0x4206, 0x4000, 0x42A8, 0x4123, 0x4373, 0x4201, + 0x3FFB, 0x429E, 0x4469, 0x436E, 0x41FB, 0x3FF5, 0x4267, 0x4463, + 0x4303, 0x4185, 0x3F76, 0x3CD0, 0x448D, 0x42FE, 0x4180, 0x3F6C, + 0x3CCA, 0x4428, 0x4328, 0x417A, 0x3F66, 0x4252, 0x40CB, 0x4323, + 0x4142, 0x3F27, 0x424D, 0x4053, 0x42B8, 0x41A5, 0x4383, 0x4215, + 0x4049, 0x3D8B, 0x44AA, 0x4379, 0x420B, 0x400F, 0x3D41, 0x44A0, + 0x4374, 0x4206, 0x4079, 0x3DC3, 0x4123, 0x43A2, 0x41FC, 0x4073, + 0x3DBD, 0x4153, 0x4338, 0x41C4, 0x3FFA, 0x4262, 0x414E, 0x4332, + 0x4226, 0x3FF0, 0x4291, 0x40DB, 0x3F33, 0x41B9, 0x43C5, 0x428C, + 0x40D1, 0x3EB3, 0x41AF, 0x43BC, 0x4286, 0x4106, 0x3EAD, 0x3BA1, + 0x43B6, 0x42B5, 0x4100, 0x3EA3, 0x41DA, 0x43E0, 0x42AB, 0x40F6, + 0x3EDF, 0x41D4, 0x3FD7, 0x4240, 0x40BE, 0x430C, 0x4204, 0x3FCD, + 0x426F, 0x4125, 0x433A, 0x4192, 0x3FC7, 0x3CB3, 0x445E, 0x4335, + 0x418D, 0x3FC1, 0x3D82, 0x442D, 0x42FE, 0x41C1, 0x3FF7, 0x3D78, + 0x40DD, 0x42F9, 0x41B7, 0x3FF2, 0x3D72, 0x40D8, 0x4323, 0x41E7, + 0x3FE8, 0x4252, 0x4108, 0x431E, 0x41E1, 0x4382, 0x424C, 0x4103, + 0x3F2A, 0x4174, 0x43AC, 0x427B, 0x4133, 0x3EAA, 0x44F8, 0x43A7, + 0x4272, 0x412D, 0x3F5B, 0x3B54, 0x43D1, 0x42A1, 0x40BB, 0x3EDC, + 0x41CE, 0x43FA, 0x429B, 0x40EB, 0x3F8C, 0x41C4, 0x4073, 0x42C6, + 0x40E6, 0x432B, 0x41F4, 0x3FFF, 0x425F, 0x411A, 0x4359, 0x41EE, + 0x4030, 0x3E06, 0x4450, 0x4354, 0x421D, 0x40D3, 0x3E42, 0x4475, + 0x4322, 0x4249, 0x4060, 0x3E38, 0x4470, 0x434C, 0x41E0, 0x4095, + 0x3E74, 0x416F, 0x4342, 0x4210, 0x408B, 0x3E6E, 0x419F, 0x4370, + 0x4206, 0x40C0, 0x3EAA, 0x3BB1, 0x439A, 0x4235, 0x40B6, 0x3EE1, + 0x3C88, 0x43C4, 0x4264, 0x40EA, 0x3EDB, 0x3BF3, 0x4004, 0x4293, + 0x411B, 0x3F12, 0x4187, 0x403A, 0x428A, 0x4115, 0x3FBC, 0x41B7, + 0x4030, 0x3E0C, 0x4145, 0x434D, 0x41E6, 0x4065, 0x3E47, 0x4175, + 0x437B, 0x4215, 0x409A, 0x3EF9, 0x3B3F, 0x4315, 0x4244, 0x40CA, + 0x3F30, 0x3C18, 0x4052, 0x423B, 0x40C5, 0x3F2A, 0x3C5B, 0x3FDE, + 0x426A, 0x40F5, 0x3F60, 0x4197, 0x4014, 0x3E66, 0x4125, 0x3F96, + 0x41C6, 0x4045, 0x3E61, 0x4155, 0x42FB, 0x41F6, 0x407A, 0x3E9C, + 0x3C42, 0x4325, 0x4225, 0x40AA, 0x3ED3, 0x3BAD, 0x434F, 0x4250, + 0x40A5, 0x3F09, 0x3C7F, 0x402D, 0x427E, 0x40D5, 0x3F40, 0x3CBD, + 0x405D, 0x3E08, 0x4105, 0x3F76, 0x41DB, 0x4025, 0x3E44, 0x4135, + 0x3FAB, 0x420A, 0x4059, 0x3E7B, 0x3CAA, 0x4335, 0x4235, 0x408A, + 0x3EB2, 0x3CEC, 0x4363, 0x4264, 0x40BB, 0x3EED, 0x3D29, 0x4047, + 0x428F, 0x40EB, 0x3F23, 0x3D66, 0x4078, 0x425C, 0x411B, 0x3F55, + 0x3DA2, 0x40A8, 0x3ED6, 0x4184, 0x3FC6, 0x421B, 0x40D8, 0x3F11, + 0x41AF, 0x3FF7, 0x424A, 0x413E, 0x4313, 0x41DE, 0x402C, 0x3E52, + 0x40D4, 0x433D, 0x4209, 0x405D, 0x3E89, 0x413A, 0x430B, 0x41D6, + 0x40C8, 0x3EBF, 0x3CBC, 0x4335, 0x4235, 0x40F8, 0x3F32, 0x3CF9, + 0x4085, 0x4264, 0x4127, 0x3F68, 0x3D36, 0x40B5, 0x428F, 0x418C, + 0x3F9D, 0x4223, 0x411B, 0x3F1F, 0x41B7, 0x4009, 0x41F0, 0x40AD, + 0x3F55, 0x3D66, 0x403A, 0x424F, 0x4117, 0x3FC6, 0x3DA2, 0x43A7, + 0x427E, 0x4142, 0x3FF7, 0x3E1B, 0x3BBF, 0x42D8, 0x41A7, 0x4062, + 0x3E52, 0x3BFE, 0x3F44, 0x4206, 0x408E, 0x3EC5, 0x4165, 0x3F7A, + 0x3E08, 0x405A, 0x3F00, 0x4132, 0x3FE6, 0x3E80, 0x40C0, 0x3F6D, + 0x4196, 0x404D, 0x3EB7, 0x3C71, 0x4321, 0x41F2, 0x407D, 0x3F25, + 0x3CF6, 0x3981, 0x4220, 0x40E3, 0x3F91, 0x3D33, 0x39CC, 0x41ED, + 0x4148, 0x3FFD, 0x3DAD, 0x3B48, 0x3EA6, 0x4114, 0x3F8D, 0x3E26, + 0x40A2, 0x3F14, 0x3D62, 0x3FF9, 0x3E99, 0x40D2, 0x3F85, 0x3DDB, + 0x4060, 0x3F0B, 0x4137, 0x3FEC, 0x3E4F, 0x3BC1, 0x426C, 0x41CC, + 0x4057, 0x3EC2, 0x3C48, 0x384C, 0x4199, 0x40BD, 0x3F30, 0x3CC9, + 0x39F1, 0x41F8, 0x4085, 0x3EFA, 0x3D44, 0x3FDC, 0x3E3F, 0x40EA, + 0x3F67, 0x3DBD, 0x407C, 0x3EED, 0x3D3B, 0x3FD3, 0x3E36, 0x40DE, + 0x3F5A, 0x3DB0, 0x403A, 0x4218, 0x4142, 0x3FC6, 0x3E29, 0x3B50, + 0x4272, 0x410F, 0x402D, 0x3E9B, 0x3BDD, 0x38D5, 0x41A0, 0x3FF8, + 0x3F09, 0x3CA2, 0x3F84, 0x3DA4, 0x4094, 0x3ECF, 0x3D21, 0x3FEC, + 0x3E54, 0x40F6, 0x3F77, 0x3D96, 0x4088, 0x3EC6, 0x3D14, 0x3FDF, + 0x3E47, 0x40ED, 0x3F6B, 0x3D89, 0x3A9F, 0x4252, 0x40EA, 0x3FD6, + 0x3E3E, 0x3C3B, 0x424F, 0x414F, 0x3FCC, 0x3EAD, 0x3CBB, 0x39A2, + 0x41AA, 0x403A, 0x3EE3, 0x3D73, 0x3FCB, 0x3DF7, 0x40D5, 0x3F1C, + 0x3D38, 0x4067, 0x3E6A, 0x40D0, 0x3FBE, 0x3DEE, 0x4093, 0x3F13, + 0x3D2F, 0x405B, 0x41CE, 0x40CA, 0x3FB1, 0x3DE1, 0x3B96, 0x422F, + 0x415F, 0x3FAC, 0x3E8C, 0x3C5B, 0x425A, 0x412C, 0x404F, 0x3F34, + 0x3D14, 0x3FAA, 0x41EC, 0x40E6, 0x3EFB, 0x3E07, 0x4047, 0x3E49, + 0x40B2, 0x3FD4, 0x3DCD, 0x4044, 0x3F29, 0x4178, 0x403A, 0x3E78, + 0x40DB, 0x3FC7, 0x3DC0, 0x403C, 0x423B, 0x413B, 0x3FC9, 0x3EA6, + 0x3C3A, 0x426C, 0x416D, 0x4065, 0x3F13, 0x3D35, 0x3A8B, 0x41CC, + 0x4090, 0x3F4C, 0x3DE6, 0x4058, 0x422D, 0x412D, 0x3FE9, 0x3E1D, + 0x408F, 0x3F3F, 0x3DD9, 0x3FEB, 0x3ECA, 0x4120, 0x3FA7, 0x3DDB, + 0x3C9C, 0x3FA3, 0x4122, 0x4014, 0x3EF8, 0x3C5B, 0x3AFA, 0x417D, + 0x4076, 0x3EF3, 0x3D51, 0x3AB7, 0x372A, 0x40DD, 0x3F98, 0x3E76, + 0x3BC8, 0x388C, 0x3DC2, 0x3FFF, 0x3E40, 0x3CC6, 0x3FC2, 0x3E31, + 0x3BFF, 0x3F52, 0x3DF2, 0x3FC3, 0x3E6F, 0x3D38, 0x3F4C, 0x3DB7, + 0x4090, 0x3F45, 0x3D32, 0x3B6B, 0x3ED0, 0x40C3, 0x3F7D, 0x3E23, + 0x3CA8, 0x395C, 0x40F2, 0x3FE4, 0x3E90, 0x3C70, 0x3ACC, 0x3E89, + 0x4082, 0x3F37, 0x3D9E, 0x3B94, 0x3E53, 0x3CDF, 0x3F68, 0x3E0D, + 0x3BDE, 0x3F65, 0x3DCD, 0x403D, 0x3EB9, 0x3D14, 0x3F62, 0x3E0C, + 0x3C53, 0x3EEB, 0x3D4B, 0x3FFF, 0x3EE8, 0x3D0B, 0x3A25, 0x3E72, + 0x4098, 0x3F1C, 0x3D83, 0x3BC0, 0x37EF, 0x40CF, 0x3F83, 0x3E2E, + 0x3C7B, 0x397E, 0x3E26, 0x4022, 0x3F0C, 0x3D3A, 0x3B6C, 0x3E28, + 0x3C3B, 0x3F12, 0x3DA9, 0x3BAA, 0x3ECD, 0x3DA2, 0x3FDD, 0x3EC5, + 0x3CEC, 0x3FA4, 0x3DE0, 0x3BEC, 0x3EC7, 0x4115, 0x3FA5, 0x3E86, + 0x3D1C, 0x3A84, 0x4177, 0x403D, 0x3F2C, 0x3D98, 0x3B98, 0x3906, + 0x40A0, 0x3F96, 0x3E02, 0x3C53, 0x394D, 0x3DC3, 0x3FC6, 0x3EE5, + 0x3D4B, 0x3B04, 0x4199, 0x4060, 0x3F86, 0x3D8A, 0x3BC6, 0x3EA9, + 0x40C3, 0x3FBD, 0x3E67, 0x3D3B, 0x3F47, 0x3E60, 0x3FE9, 0x3F0E, + 0x3D3D, 0x3FE2, 0x3E99, 0x3CF5, 0x3FAE, 0x3DE4, 0x404B, 0x3ED2, + 0x3DE1, 0x3BF3, 0x3EC7, 0x40E3, 0x3F6B, 0x3E89, 0x3C6A, 0x3A50, + 0x4145, 0x400A, 0x3EC2, 0x3D5C, 0x3BE2, 0x3884, 0x406E, 0x3F29, + 0x3E42, 0x3C27, 0x39AF, 0x3D98, 0x3FC9, 0x3EE8, 0x3D14, 0x3B93, + 0x3E02, 0x3CD3, 0x3F57, 0x3DC3, 0x3C17, 0x3EA9, 0x3DBF, 0x3B47, + 0x3EA2, 0x3C8D, 0x3F4A, 0x3E31, 0x3C86, 0x3A2D, 0x3D7B, 0x3FB3, + 0x3E69, 0x3D73, 0x3ABE, 0x3E28, 0x404D, 0x3F0B, 0x3E21, 0x3BFE, + 0x3A62, 0x40B0, 0x3F79, 0x3EC7, 0x3CF2, 0x3AEE, 0x374E, 0x400F, + 0x3F32, 0x3DA1, 0x3BAF, 0x3A10, 0x3D9E, 0x3FCD, 0x3E4A, 0x3CA5, + 0x3B65, 0x3E46, 0x3C64, 0x3EF0, 0x3D59, 0x3BE5, 0x3EE8, 0x3D56, + 0x3B18, 0x3E02, 0x3CA0, 0x3F52, 0x3DFF, 0x3C1A, 0x39B9, 0x3D8D, + 0x3FBB, 0x3E6F, 0x3CD0, 0x3A8B, 0x38C8, 0x401F, 0x3F11, 0x3D80, + 0x3BCB, 0x3A79, 0x3D7D, 0x3F76, 0x3E28, 0x3C8F, 0x3B82, 0x3E21, + 0x3C80, 0x3ED2, 0x3DE7, 0x3C3F, 0x3E91, 0x3D30, 0x3B3A, 0x3E8E, + 0x3D2D, 0x3EFB, 0x3DDE, 0x3C36, 0x3A67, 0x3D9F, 0x3FA2, 0x3E88, + 0x3D64, 0x3BED, 0x3988, 0x4068, 0x3F5B, 0x3E0D, 0x3CA4, 0x3A9B, + 0x3756, 0x3FC3, 0x3EAF, 0x3D54, 0x3B9F, 0x392C, 0x3D19, 0x3F19, + 0x3DC5, 0x3C5B, 0x3A4A, 0x3DC2, 0x3C58, 0x3E6D, 0x3D0C, 0x3B54, + 0x3E33, 0x3CD0, 0x3B0D, 0x3E2B, 0x3CC9, 0x3E9E, 0x3D7B, 0x3BCC, + 0x39F1, 0x3D73, 0x3FA4, 0x3E93, 0x3C83, 0x3AC2, 0x382B, 0x3FD7, + 0x3EFE, 0x3DE1, 0x3C78, 0x3959, 0x35BF, 0x3F63, 0x3E4D, 0x3CF0, + 0x3B77, 0x394E, 0x3CED, 0x3F27, 0x3D66, 0x3C2F, 0x3A62, 0x3D5F, + 0x3BF2, 0x3E7B, 0x3D5C, 0x3B2C, 0x3DD0, 0x3CA4, 0x3EE5, 0x3DCD, + 0x3CA1, 0x3EE2, 0x3DC6, 0x3BA4, 0x3E39, 0x3D14, 0x3F16, 0x3E36, + 0x3D0C, 0x3AD9, 0x3E2E, 0x3FE4, 0x3F0C, 0x3D7E, 0x3C17, 0x3A8A, + 0x4047, 0x3F71, 0x3E60, 0x3CC8, 0x3B4E, 0x396B, 0x400D, 0x3ECA, + 0x3DB1, 0x3C85, 0x3EC7, 0x3DAA, 0x3F9A, 0x3E8E, 0x3CF8, 0x3EFB, + 0x3E1A, 0x3CF5, 0x3EF4, 0x3E13, 0x3FC9, 0x3EF0, 0x3D67, 0x3C39, + 0x3E4B, 0x4060, 0x3F24, 0x3E44, 0x3D5C, 0x3B71, 0x4092, 0x3FF2, + 0x3F1A, 0x3D96, 0x3CA2, 0x3A66, 0x4088, 0x3F4D, 0x3E72, 0x3D14, + 0x3BE4, 0x3DFF, 0x3CD9, 0x3B23, 0x393F, 0x3CD6, 0x3ADC, 0x3DBD, + 0x3C1D, 0x3AD9, 0x3D48, 0x3C15, 0x3A0A, 0x3D41, 0x3B59, 0x3E26, + 0x3D3D, 0x3B52, 0x38E5, 0x3C8A, 0x3EC9, 0x3D77, 0x3C83, 0x3A86, + 0x37AD, 0x3F98, 0x3E54, 0x3CF6, 0x3BC5, 0x39B3, 0x3655, 0x3EF3, + 0x3DD9, 0x3CB7, 0x3AFC, 0x3886, 0x3C37, 0x3E7D, 0x3D25, 0x3BFA, + 0x3A2F, 0x3D22, 0x3B74, 0x3E07, 0x3D1F, 0x3B71, 0x3956, 0x3C6B, + 0x3AAE, 0x3DCA, 0x3C64, 0x3AAB, 0x3D51, 0x3C61, 0x3AA3, 0x3D4E, + 0x3BA6, 0x3E2E, 0x3D47, 0x3BA3, 0x3990, 0x3C98, 0x3ECD, 0x3D80, + 0x3C91, 0x3ADA, 0x38AF, 0x33E1, 0x3E58, 0x3D76, 0x3BD4, 0x3A0D, + 0x37C0, 0x3B56, 0x3E1B, 0x3CC5, 0x3B4E, 0x3933, 0x3C45, 0x3B4B, + 0x3DA4, 0x3C42, 0x3A88, 0x3DA1, 0x3C3F, 0x3A81, 0x3CF4, 0x3B84, + 0x3E46, 0x3CED, 0x3B81, 0x39AE, 0x3C72, 0x3EE5, 0x3DD0, 0x3C6F, + 0x3ABC, 0x38D2, 0x3C6C, 0x3E70, 0x3D1C, 0x3BB2, 0x3A2A, 0x37E9, + 0x3F0E, 0x3DFA, 0x3C9F, 0x3B2C, 0x3956, 0x36F1, 0x3E99, 0x3DBD, + 0x3C98, 0x3B26, 0x3874, 0x3C1D, 0x3E5D, 0x3D45, 0x3BE1, 0x3A5B, + 0x3D3E, 0x3BD9, 0x3DEB, 0x3CC8, 0x3B57, 0x3DE4, 0x3CC1, 0x3B54, + 0x38F6, 0x3C4A, 0x3E88, 0x3D6D, 0x3C0E, 0x3A8E, 0x3D6A, 0x3C07, + 0x3E12, 0x3CF0, 0x3B89, 0x3E0B, 0x3CB5, 0x3B82, 0x39FE, 0x3CB2, + 0x3E78, 0x3D61, 0x3C3B, 0x3AFC, 0x3929, 0x3C34, 0x3E72, 0x3D57, + 0x3C31, 0x3A35, 0x3847, 0x3F0B, 0x3DFC, 0x3CDE, 0x3BAD, 0x3A2F, + 0x37A5, 0x3E9B, 0x3DF2, 0x3CD4, 0x3AED, 0x395B, 0x3C5D, 0x3AEA, + 0x3D7B, 0x3C56, 0x3AE7, 0x38C6, 0x3BDA, 0x3A5E, 0x3D03, 0x3B9E, + 0x3A5B, 0x3CC8, 0x3B9B, 0x3A58, 0x3CC5, 0x3B1D, 0x3DDC, 0x3C4F, + 0x3B15, 0x398A, 0x3C47, 0x3E4A, 0x3D69, 0x3C44, 0x3A8E, 0x38F5, + 0x363B, 0x3E0A, 0x3CED, 0x3BC5, 0x3A84, 0x3817, 0x3531, 0x3DCE, + 0x3CE7, 0x3BBB, 0x39BB, 0x3774, 0x3B3D, 0x3D5B, 0x3C6A, 0x3B3A, + 0x392C, 0x3C2E, 0x3AB7, 0x3D50, 0x3C2B, 0x3A75, 0x3921, 0x3BAF, + 0x3A72, 0x3CD8, 0x3BAC, 0x39EC, 0x3CD1, 0x3BA9, 0x39E9, 0x37AF, + 0x3B2B, 0x3DB2, 0x3CCB, 0x3B24, 0x3956, 0x3706, 0x3E86, 0x3D3B, + 0x3C4D, 0x3B1D, 0x3950, 0x36FF, 0x3E15, 0x3D30, 0x3BD3, 0x3A97, + 0x3879, 0x3556, 0x3E0B, 0x3CB8, 0x3B8F, 0x3A0F, 0x37DC, 0x3B4B, + 0x3A08, 0x3CB2, 0x3B48, 0x3981, 0x3C3C, 0x3B0C, 0x397E, 0x3C34, + 0x3B04, 0x393A, 0x3C31, 0x3A85, 0x38A9, 0x3C2E, 0x3A82, 0x3D14, + 0x3BB7, 0x3A7B, 0x38A2, 0x3BAF, 0x3DBD, 0x3C9C, 0x3BAC, 0x39F2, + 0x380B, 0x3587, 0x3DB3, 0x3C96, 0x3B2C, 0x39E8, 0x3800, 0x33AF, + 0x3D40, 0x3C58, 0x3AEC, 0x395E, 0x3762, 0x3AE5, 0x3D3A, 0x3C12, + 0x3AE1, 0x3953, 0x3BD6, 0x3A62, 0x3D2F, 0x3BD3, 0x3A5B, 0x3CBF, + 0x3BD0, 0x3A58, 0x3835, 0x3B54, 0x3A54, 0x3CB5, 0x3B50, 0x39CF, + 0x37E7, 0x3B4D, 0x3D5E, 0x3CAA, 0x3B46, 0x39C5, 0x3749, 0x3E33, + 0x3D54, 0x3C31, 0x3B40, 0x39BE, 0x3743, 0x3DFB, 0x3D14, 0x3C2B, + 0x3ABF, 0x3930, 0x369E, 0x3AB7, 0x3CD6, 0x3BB1, 0x3AB4, 0x38A0, + 0x3BA9, 0x3A35, 0x3CD0, 0x3BA6, 0x3A32, 0x3CC9, 0x3B6A, 0x3A2A, + 0x3CC6, 0x3B67, 0x3D72, 0x3C54, 0x3B64, 0x39A2, 0x3C4D, 0x3B20, + 0x3D6C, 0x3C4A, 0x3AE4, 0x399B, 0x3767, 0x3E0A, 0x3CF5, 0x3C0C, + 0x3AD9, 0x3955, 0x3719, 0x3E04, 0x3CEF, 0x3BC6, 0x3AD3, 0x3907, + 0x3BC3, 0x3D93, 0x3CE4, 0x3BC0, 0x3AC8, 0x3CAE, 0x3B84, 0x3D88, + 0x3CAB, 0x3B81, 0x3A46, 0x3CA4, 0x3B7E, 0x3A43, 0x3CA1, 0x3B7B, + 0x3DB5, 0x3C9E, 0x3B73, 0x3A39, 0x3C96, 0x3E52, 0x3D43, 0x3C93, + 0x3B6D, 0x39B5, 0x381A, 0x35AB, 0x3D38, 0x3C1F, 0x3AED, 0x39AA, + 0x380F, 0x34FB, 0x3D00, 0x3C14, 0x3AE7, 0x3969, 0x3808, 0x34F4, + 0x3966, 0x3BD6, 0x3AA7, 0x395E, 0x3770, 0x3AA0, 0x395B, 0x3BD0, + 0x3A9D, 0x3958, 0x376A, 0x3A9A, 0x3955, 0x3BC6, 0x3A92, 0x394D, + 0x3BC3, 0x3A8F, 0x38C6, 0x36C8, 0x3A8C, 0x3CA9, 0x3B48, 0x3A0D, + 0x38C0, 0x3679, 0x3A0A, 0x3C9F, 0x3B7E, 0x3A07, 0x38B5, 0x366D, + 0x3146, 0x3C2B, 0x3B73, 0x3A3E, 0x3872, 0x3667, 0x313A, 0x3C5B, + 0x3B6D, 0x3A38, 0x3867, 0x365C, 0x3A35, 0x3C55, 0x3AF2, 0x39B5, + 0x3861, 0x3B2B, 0x39B2, 0x385E, 0x3B24, 0x39AA, 0x3856, 0x3B21, + 0x39A7, 0x3853, 0x3B1E, 0x39A4, 0x3C0E, 0x3B1A, 0x39DF, 0x37C1, + 0x35A4, 0x39DC, 0x3C04, 0x3ADB, 0x39D9, 0x37BB, 0x359E, 0x3CE4, + 0x3BF9, 0x3AD1, 0x3955, 0x37FA, 0x34EE, 0x3D14, 0x3BBF, 0x3ACA, + 0x398D, 0x37F3, 0x3541, 0x398A, 0x3BB9, 0x3B01, 0x3987, 0x3760, + 0x3AFE, 0x397F, 0x3BEA, 0x3A85, 0x397C, 0x37A0, 0x3A7D, 0x38FA, + 0x379D, 0x3A7A, 0x393B, 0x3BA9, 0x3AB4, 0x3937, 0x3792, 0x3AB1, + 0x3C8F, 0x3BA3, 0x3AAE, 0x392D, 0x378C, 0x3AA6, 0x3CBA, 0x3BD4, + 0x3AA3, 0x3969, 0x3BD1, 0x3A6B, 0x3962, 0x3BCD, 0x3A68, 0x395F, + 0x37C4, 0x3A60, 0x3C7B, 0x3B8F, 0x3A9A, 0x38DA, 0x3731, 0x3A97, + 0x3C71, 0x3B89, 0x3A94, 0x3917, 0x3776, 0x35A6, 0x3CA1, 0x3BBA, + 0x3ACA, 0x390C, 0x376B, 0x34FD, 0x3CD1, 0x3BB4, 0x3A4E, 0x3949, + 0x37AF, 0x3A4B, 0x3946, 0x3B76, 0x3A85, 0x3981, 0x37A4, 0x3A7D, + 0x397E, 0x37A1, 0x3A7A, 0x397B, 0x37E7, 0x3AB4, 0x38FA, 0x37E0, + 0x3AB1, 0x393A, 0x3BD9, 0x3AA9, 0x3932, 0x3823, 0x3587, 0x392F, + 0x3B9B, 0x3A6E, 0x396F, 0x3796, 0x35CE, 0x3CB2, 0x3B95, 0x3AA4, + 0x3964, 0x37D5, 0x35C7, 0x31E0, 0x3BC5, 0x3AD6, 0x399C, 0x37CA, + 0x360E, 0x39DB, 0x3BBF, 0x3B0C, 0x39D4, 0x3808, 0x3608, 0x3958, + 0x3805, 0x3A91, 0x3997, 0x3846, 0x364E, 0x3990, 0x3843, 0x3AC7, + 0x398D, 0x3884, 0x3B00, 0x39C7, 0x387D, 0x368C, 0x39C4, 0x38BD, + 0x3B32, 0x39FF, 0x38BA, 0x36D1, 0x33A2, 0x3BE1, 0x3ABB, 0x3A35, + 0x3878, 0x3711, 0x34F1, 0x3C11, 0x3AED, 0x39B8, 0x38B1, 0x3755, + 0x344A, 0x38AE, 0x3B1E, 0x39EF, 0x38EE, 0x3794, 0x3537, 0x38E7, + 0x3B54, 0x3A63, 0x3926, 0x3706, 0x3A60, 0x3923, 0x3749, 0x3A59, + 0x395E, 0x3746, 0x3A20, 0x38E2, 0x3788, 0x3A5A, 0x38DF, 0x3785, + 0x3A57, 0x391A, 0x37C7, 0x360E, 0x3955, 0x3B45, 0x3A89, 0x3952, + 0x3805, 0x369B, 0x3312, 0x3BB0, 0x3A83, 0x398A, 0x383E, 0x36DB, + 0x3368, 0x3BE1, 0x3ABC, 0x39C1, 0x387C, 0x364A, 0x34B8, 0x38B8, + 0x3AF2, 0x39BE, 0x383A, 0x36D6, 0x39BB, 0x3876, 0x3AE7, 0x39F5, + 0x3873, 0x3716, 0x3A2F, 0x38B3, 0x3759, 0x3A64, 0x38EF, 0x3755, + 0x3A29, 0x392A, 0x3797, 0x39EC, 0x3927, 0x3B4E, 0x3A26, 0x3962, + 0x37D6, 0x366F, 0x38E6, 0x3B4B, 0x3A94, 0x3925, 0x37D0, 0x35D9, + 0x33E4, 0x3BB7, 0x3A8E, 0x399B, 0x3816, 0x3666, 0x348C, 0x3B7D, + 0x3AC7, 0x39CD, 0x384F, 0x36AB, 0x398D, 0x388B, 0x3AF9, 0x3992, + 0x38CB, 0x3731, 0x39CC, 0x3906, 0x3AFA, 0x3A06, 0x38C0, 0x37B5, + 0x3A3B, 0x38C5, 0x37F6, 0x3A38, 0x3900, 0x3B5F, 0x3A00, 0x393B, + 0x376F, 0x3A35, 0x3976, 0x3B5C, 0x3A6E, 0x3973, 0x37ED, 0x3642, + 0x3C71, 0x3B8D, 0x3AA0, 0x3974, 0x386A, 0x36CD, 0x3C72, 0x3B8E, + 0x3AD9, 0x39E4, 0x3864, 0x3752, 0x3A1E, 0x3BF5, 0x3B0A, 0x39DE, + 0x38E3, 0x37D1, 0x39DE, 0x391E, 0x3B0B, 0x3A54, 0x3958, 0x3B76, + 0x366A, 0x3955, 0x37CF, 0x3667, 0x3918, 0x380C, 0x3625, 0x3952, + 0x388B, 0x3A83, 0x39CA, 0x3888, 0x36F2, 0x3492, 0x384E, 0x3AB9, + 0x39C4, 0x388A, 0x3776, 0x357A, 0x32D6, 0x3AED, 0x3A3A, 0x393E, + 0x37B0, 0x3608, 0x3382, 0x3AEE, 0x3A30, 0x3902, 0x37F6, 0x36DA, + 0x3479, 0x3832, 0x3AA5, 0x39B0, 0x386E, 0x3691, 0x3510, 0x386A, + 0x36D4, 0x3974, 0x386F, 0x375B, 0x3556, 0x38AB, 0x379D, 0x355C, + 0x3924, 0x37D9, 0x35A5, 0x3920, 0x3792, 0x3635, 0x38E7, 0x37DB, + 0x3A52, 0x395B, 0x3817, 0x3701, 0x345F, 0x3892, 0x3A53, 0x3992, + 0x3850, 0x36BD, 0x3543, 0x32A2, 0x3ABC, 0x3A09, 0x38CE, 0x37C2, + 0x361D, 0x33A4, 0x3036, 0x3A06, 0x38D0, 0x37BC, 0x361F, 0x3495, + 0x3804, 0x3A74, 0x397E, 0x387F, 0x372C, 0x34DD, 0x387C, 0x3728, + 0x3980, 0x3842, 0x36E8, 0x3575, 0x38BC, 0x376F, 0x3605, 0x38F2, + 0x37EB, 0x368F, 0x38EF, 0x37E8, 0x3646, 0x3433, 0x37ED, 0x3A21, + 0x3967, 0x3867, 0x3718, 0x3560, 0x3864, 0x3A96, 0x39A1, 0x3869, + 0x3753, 0x35A6, 0x3377, 0x3B01, 0x39D8, 0x3919, 0x3817, 0x367C, + 0x34B7, 0x37D5, 0x3A49, 0x3953, 0x3819, 0x367E, 0x34BA, 0x3893, + 0x3701, 0x354C, 0x3B9F, 0x3A7F, 0x39C7, 0x3890, 0x377F, 0x3620, + 0x3405, 0x3AEA, 0x3A00, 0x3906, 0x3800, 0x36AA, 0x34A4, 0x37FD, + 0x3A3A, 0x3979, 0x387F, 0x36E9, 0x357C, 0x387C, 0x3773, 0x39EF, + 0x3880, 0x37AF, 0x3657, 0x3932, 0x3774, 0x3654, 0x38F2, 0x382F, + 0x3659, 0x3934, 0x382C, 0x371D, 0x3527, 0x3831, 0x371A, 0x396E, + 0x38A6, 0x371E, 0x35FB, 0x342E, 0x37DF, 0x39D8, 0x391E, 0x3798, + 0x36CA, 0x34C8, 0x3224, 0x3A12, 0x3995, 0x3856, 0x370D, 0x3556, + 0x3378, 0x2E56, 0x3997, 0x38D4, 0x374F, 0x362D, 0x346C, 0x3154, + 0x362A, 0x390E, 0x37C7, 0x36FB, 0x34B4, 0x32BE, 0x36F8, 0x3981, + 0x3846, 0x377D, 0x35D5, 0x38C3, 0x377A, 0x3621, 0x38C0, 0x37BE, + 0x3663, 0x393B, 0x37FA, 0x3668, 0x3538, 0x37FE, 0x372B, 0x39AD, + 0x3874, 0x3728, 0x360F, 0x33A7, 0x37AC, 0x39E6, 0x38EC, 0x37A9, + 0x3698, 0x34DD, 0x32A4, 0x3A1B, 0x3927, 0x3824, 0x371F, 0x35BB, + 0x32F4, 0x3056, 0x3999, 0x3864, 0x37A0, 0x3686, 0x3435, 0x3291, + 0x3642, 0x38DD, 0x381A, 0x370D, 0x3562, 0x32EA, 0x36CA, 0x35F5, + 0x3894, 0x378E, 0x35ED, 0x33D4, 0x3753, 0x36BE, 0x350B, 0x37CF, + 0x3676, 0x34BB, 0x380E, 0x3740, 0x359C, 0x337A, 0x36FD, 0x3599, + 0x38C5, 0x37BC, 0x3667, 0x3464, 0x315A, 0x366C, 0x38FF, 0x37FC, + 0x36EF, 0x3543, 0x3317, 0x3153, 0x3972, 0x3876, 0x3730, 0x35CE, + 0x3408, 0x32B5, 0x39A7, 0x38B1, 0x37AC, 0x36A5, 0x3581, 0x33AD, + 0x36E2, 0x3964, 0x38A6, 0x3766, 0x3651, 0x3495, 0x3763, 0x3608, + 0x38E0, 0x37E1, 0x36D4, 0x356F, 0x385E, 0x3758, 0x35FC, 0x381D, + 0x3715, 0x35F9, 0x3899, 0x3794, 0x3685, 0x3519, 0x3812, 0x3682, + 0x38D4, 0x380F, 0x36C7, 0x35A9, 0x33E2, 0x374B, 0x3986, 0x38C9, + 0x3744, 0x3632, 0x34C4, 0x328D, 0x39BB, 0x3903, 0x3805, 0x373D, + 0x35E1, 0x3381, 0x3112, 0x393D, 0x387E, 0x377A, 0x366A, 0x3502, + 0x3375, 0x36EF, 0x3932, 0x383A, 0x36AC, 0x358D, 0x3414, 0x3730, + 0x361A, 0x3875, 0x37AF, 0x36A0, 0x34A8, 0x37EE, 0x369D, 0x353C, + 0x37EB, 0x36E2, 0x3925, 0x3867, 0x3762, 0x3652, 0x3451, 0x37DF, + 0x399A, 0x38E2, 0x3822, 0x36D4, 0x35BC, 0x381F, 0x3A45, 0x391C, + 0x385D, 0x3797, 0x3688, 0x34D8, 0x3A42, 0x39C8, 0x3911, 0x37D3, + 0x370A, 0x35F3, 0x33EA, 0x3A37, 0x3946, 0x388D, 0x37C8, 0x363B, + 0x3515, 0x33E2, 0x36BC, 0x35A3, 0x3803, 0x3701, 0x362F, 0x342E, + 0x377F, 0x3675, 0x34C4, 0x37BE, 0x3672, 0x3553, 0x383B, 0x36F2, + 0x35E0, 0x3424, 0x3736, 0x3666, 0x34B5, 0x37B4, 0x36AC, 0x3549, + 0x332D, 0x36A4, 0x3590, 0x3831, 0x36E9, 0x3617, 0x3463, 0x3321, + 0x2FF0, 0x38E5, 0x37AB, 0x36E2, 0x3581, 0x3457, 0x321A, 0x2E2D, + 0x3861, 0x37A0, 0x364F, 0x34A1, 0x3367, 0x30A7, 0x3531, 0x37DB, + 0x3713, 0x35BE, 0x3496, 0x3267, 0x3604, 0x3525, 0x3796, 0x3685, + 0x3571, 0x33AC, 0x36CA, 0x35F8, 0x3443, 0x370A, 0x363E, 0x34D4, + 0x3788, 0x36BF, 0x3562, 0x339D, 0x3703, 0x35A9, 0x3805, 0x3742, + 0x3630, 0x3482, 0x32A4, 0x3675, 0x3511, 0x37FA, 0x36B5, 0x359A, + 0x33DD, 0x31EC, 0x35E0, 0x3875, 0x3773, 0x3626, 0x3552, 0x33D6, + 0x318E, 0x38EB, 0x37F0, 0x36EB, 0x361B, 0x34B5, 0x32DE, 0x30CC, + 0x34FC, 0x37EA, 0x36A5, 0x358A, 0x3415, 0x322D, 0x35D0, 0x3463, + 0x3763, 0x3652, 0x357E, 0x3373, 0x3697, 0x35C5, 0x3457, 0x36D7, + 0x360A, 0x34E7, 0x3797, 0x3650, 0x352E, 0x33B6, 0x36D0, 0x3575, + 0x3813, 0x370F, 0x35FC, 0x3495, 0x330E, 0x3641, 0x388A, 0x378D, + 0x3682, 0x35B4, 0x37CC, 0x3743, 0x35F6, 0x34D6, 0x3782, 0x367B, + 0x351E, 0x33EF, 0x36BB, 0x35A6, 0x37FF, 0x36FB, 0x35EC, 0x3512, + 0x32FE, 0x3675, 0x38B5, 0x37BA, 0x36EF, 0x35E0, 0x3479, 0x32F2, + 0x392A, 0x3836, 0x3772, 0x3666, 0x354F, 0x346E, 0x3247, 0x2F5C, + 0x382B, 0x372D, 0x365B, 0x3502, 0x33D3, 0x3193, 0x358A, 0x37AA, + 0x3722, 0x3614, 0x34F6, 0x3330, 0x3659, 0x353D, 0x379F, 0x3699, + 0x3584, 0x345D, 0x3324, 0x364E, 0x34AA, 0x3374, 0x368E, 0x357D, + 0x3456, 0x36CE, 0x35BE, 0x349E, 0x3368, 0x3683, 0x34E6, 0x378D, + 0x36C7, 0x35B3, 0x3404, 0x32C4, 0x35F8, 0x34DA, 0x3787, 0x3639, + 0x3521, 0x33F9, 0x3219, 0x35ED, 0x37FE, 0x3700, 0x3632, 0x351B, + 0x33F2, 0x31BB, 0x2E4F, 0x37BA, 0x36F5, 0x35EB, 0x3482, 0x3350, + 0x3106, 0x2E47, 0x37B3, 0x366C, 0x359C, 0x3477, 0x3345, 0x3043, + 0x34C3, 0x372D, 0x3665, 0x354F, 0x33DD, 0x32A1, 0x361A, 0x34B8, + 0x3388, 0x365A, 0x3544, 0x33D6, 0x31F5, 0x358A, 0x346A, 0x32E5, + 0x3613, 0x353D, 0x3386, 0x3654, 0x357F, 0x3417, 0x32DE, 0x35C4, + 0x34AA, 0x3715, 0x364D, 0x34F2, 0x33C8, 0x3233, 0x2FC3, 0x37CF, + 0x370A, 0x3642, 0x34E6, 0x33BD, 0x31DC, 0x2EEF, 0x37C4, 0x36C9, + 0x35B7, 0x34DB, 0x33B6, 0x317A, 0x2EE8, 0x3784, 0x36BE, 0x35AC, + 0x3492, 0x3314, 0x3121, 0x34D9, 0x33F3, 0x36B3, 0x35E9, 0x3486, + 0x330D, 0x3114, 0x34CD, 0x33A4, 0x362E, 0x3559, 0x347F, 0x3301, + 0x35E3, 0x34C7, 0x339D, 0x3623, 0x3552, 0x33E6, 0x36A6, 0x35D7, + 0x3479, 0x3396, 0x3159, 0x350A, 0x33DF, 0x369A, 0x354C, 0x3472, + 0x32F4, 0x3152, 0x34FF, 0x3720, 0x3659, 0x3545, 0x3467, 0x32ED, + 0x3146, 0x3815, 0x3715, 0x364E, 0x357E, 0x341D, 0x32E1, 0x3090, + 0x2E3D, 0x370A, 0x3647, 0x34F2, 0x3412, 0x3290, 0x3089, 0x34A4, + 0x36C9, 0x3601, 0x34E6, 0x340B, 0x3284, 0x3571, 0x3498, 0x3700, + 0x35F5, 0x3524, 0x33FF, 0x327D, 0x35AE, 0x3492, 0x36B7, 0x35EF, + 0x3519, 0x33B5, 0x3637, 0x351E, 0x33F9, 0x330F, 0x35A8, 0x348B, + 0x3730, 0x362B, 0x3517, 0x343D, 0x3308, 0x359D, 0x34CA, 0x36E8, + 0x3663, 0x3555, 0x3432, 0x32B7, 0x35D9, 0x37E1, 0x36E5, 0x35DE, + 0x3549, 0x33E8, 0x32B0, 0x30B7, 0x3765, 0x36DE, 0x3616, 0x3502, + 0x33DC, 0x32A4, 0x358C, 0x379A, 0x3699, 0x360B, 0x34FB, 0x33D5, + 0x32EB, 0x35C4, 0x34AE, 0x3381, 0x31A7, 0x3534, 0x3415, 0x324C, + 0x3539, 0x34A2, 0x32EA, 0x3601, 0x34EC, 0x33CB, 0x3240, 0x3099, + 0x3459, 0x332B, 0x35F6, 0x34E6, 0x33C0, 0x3288, 0x3092, 0x3453, + 0x36BB, 0x35B4, 0x351F, 0x3400, 0x3281, 0x3086, 0x2D69, 0x36B4, + 0x35EC, 0x3492, 0x33F9, 0x322F, 0x30DB, 0x2E9D, 0x36B1, 0x35E5, + 0x34D0, 0x33AF, 0x3277, 0x30CF, 0x2DCA, 0x3313, 0x359F, 0x350E, + 0x33EF, 0x3270, 0x311E, 0x347C, 0x3354, 0x35D7, 0x34C6, 0x33E8, + 0x32B2, 0x306E, 0x3433, 0x3394, 0x320D, 0x3504, 0x3399, 0x32F8, + 0x3589, 0x3472, 0x32FD, 0x31BB, 0x34F9, 0x33DE, 0x325A, 0x3542, + 0x34AC, 0x3343, 0x31B4, 0x3056, 0x3418, 0x3609, 0x357A, 0x3460, + 0x3383, 0x31FC, 0x30A6, 0x3412, 0x3683, 0x35B7, 0x345D, 0x3378, + 0x3243, 0x2FEF, 0x2D29, 0x3642, 0x3571, 0x34E0, 0x3379, 0x31F2, + 0x3045, 0x2D92, 0x3675, 0x35A9, 0x3490, 0x33B9, 0x3239, 0x3095, + 0x3447, 0x331E, 0x3567, 0x34D6, 0x33F8, 0x3280, 0x30E5, 0x3443, + 0x335E, 0x35E2, 0x350F, 0x33AF, 0x32C2, 0x312E, 0x3482, 0x3314, + 0x3223, 0x34CC, 0x33EE, 0x3276, 0x3590, 0x3439, 0x3354, 0x31D1, + 0x3505, 0x33E8, 0x361B, 0x354E, 0x3478, 0x3399, 0x35CD, 0x34FE, + 0x342A, 0x334A, 0x35C9, 0x34B1, 0x3396, 0x360C, 0x353F, 0x3469, + 0x32FA, 0x3209, 0x34B3, 0x33D5, 0x3601, 0x3534, 0x3420, 0x3340, + 0x3202, 0x305D, 0x3704, 0x3640, 0x3574, 0x34A4, 0x3380, 0x31FF, + 0x3051, 0x36C4, 0x3635, 0x356D, 0x345C, 0x337D, 0x3294, 0x30AA, + 0x2E7A, 0x3674, 0x35AD, 0x34DA, 0x3402, 0x3288, 0x30F9, 0x2ED9, + 0x336D, 0x35A2, 0x34D3, 0x33BE, 0x32D6, 0x3191, 0x348B, 0x3366, + 0x31EA, 0x3514, 0x343E, 0x3317, 0x3144, 0x3488, 0x33AA, 0x327A, + 0x30E2, 0x33F5, 0x3314, 0x31DB, 0x34C1, 0x33E9, 0x327C, 0x3134, + 0x3479, 0x339F, 0x326B, 0x3502, 0x33EA, 0x3305, 0x31CB, 0x2F75, + 0x3356, 0x35D1, 0x34FB, 0x3425, 0x32FE, 0x3179, 0x3075, 0x2D7F, + 0x3603, 0x353B, 0x346B, 0x338D, 0x325D, 0x3114, 0x2EA3, 0x2B23, + 0x3577, 0x3468, 0x3386, 0x3256, 0x30C1, 0x2F5A, 0x2C8A, 0x3570, + 0x34E5, 0x340F, 0x32E8, 0x31AE, 0x2FAC, 0x337F, 0x3202, 0x34E2, + 0x33CA, 0x32E1, 0x3161, 0x3006, 0x33BA, 0x3291, 0x314F, 0x344A, + 0x3370, 0x3240, 0x30F7, 0x3401, 0x32DA, 0x31A0, 0x2FF6, 0x336D, + 0x3239, 0x30A8, 0x33FE, 0x331A, 0x31E3, 0x3041, 0x33AC, 0x32CB, + 0x3510, 0x343C, 0x33A4, 0x327A, 0x30E9, 0x2F2C, 0x3313, 0x3549, + 0x34BD, 0x33A5, 0x3273, 0x3132, 0x2F25, 0x2CCA, 0x3588, 0x34FE, + 0x33A2, 0x3304, 0x31D1, 0x302F, 0x2E5E, 0x29D0, 0x34FB, 0x3426, + 0x334C, 0x31CE, 0x3079, 0x2DFF, 0x32AE, 0x34FC, 0x3468, 0x3349, + 0x325D, 0x316F, 0x2F6C, 0x32F6, 0x3259, 0x34A9, 0x3389, 0x32EE, + 0x316C, 0x2FBD, 0x3380, 0x3256, 0x3111, 0x3410, 0x32F0, 0x31B4, + 0x30B8, 0x33C3, 0x3297, 0x31AB, 0x300D, 0x3333, 0x324C, 0x34DB, + 0x340A, 0x3327, 0x31FB, 0x3058, 0x3373, 0x32DD, 0x3516, 0x3406, + 0x336A, 0x31F8, 0x30FA, 0x2FA2, 0x3320, 0x3556, 0x3448, 0x33B2, + 0x3286, 0x319A, 0x2FA4, 0x2DBF, 0x3591, 0x3489, 0x3434, 0x3311, + 0x31E5, 0x3097, 0x2F36, 0x32C7, 0x34CA, 0x3475, 0x3359, 0x322F, + 0x3138, 0x2F38, 0x3351, 0x3544, 0x34B6, 0x339C, 0x3278, 0x31D1, + 0x2FE1, 0x3393, 0x3268, 0x34F2, 0x33DE, 0x3300, 0x321C, 0x30D5, + 0x33D6, 0x32B1, 0x3179, 0x3420, 0x334B, 0x32AD, 0x3122, 0x3418, + 0x333B, 0x320C, 0x311E, 0x33CF, 0x32F1, 0x352B, 0x3459, 0x3382, + 0x3256, 0x31B7, 0x3018, 0x2D97, 0x2A6E, 0x349A, 0x33C4, 0x32EA, + 0x3202, 0x30BB, 0x2EA7, 0x2D1E, 0x315F, 0x340A, 0x3373, 0x3293, + 0x3156, 0x2F5B, 0x2DE5, 0x31B2, 0x3104, 0x33B5, 0x32D7, 0x31A1, + 0x3057, 0x2EA2, 0x32D3, 0x319E, 0x3003, 0x331A, 0x31EC, 0x30A9, + 0x2FA8, 0x3317, 0x31E8, 0x30A1, 0x2EEB, 0x327D, 0x31E0, 0x309D, + 0x335A, 0x3232, 0x313C, 0x2F98, 0x2D64, 0x3229, 0x30EA, 0x339C, + 0x32BD, 0x3187, 0x303D, 0x2F39, 0x2CF3, 0x3184, 0x3426, 0x334F, + 0x326A, 0x3132, 0x2FE4, 0x2E16, 0x2AB0, 0x3467, 0x3391, 0x32B3, + 0x31C6, 0x3083, 0x2ED2, 0x2C7A, 0x2337, 0x33CF, 0x32F6, 0x3210, + 0x30D4, 0x2F7A, 0x2DA7, 0x2A23, 0x30CC, 0x3382, 0x32EA, 0x31BB, + 0x30C8, 0x2E64, 0x2BFA, 0x3118, 0x301B, 0x332D, 0x3205, 0x3114, + 0x2FC6, 0x2E57, 0x3201, 0x3110, 0x2F10, 0x32E0, 0x315F, 0x3065, + 0x2F07, 0x3246, 0x315B, 0x3011, 0x2EAA, 0x3242, 0x3153, 0x300D, + 0x331B, 0x323A, 0x30AE, 0x2F58, 0x2D84, 0x319E, 0x30AA, 0x331C, + 0x3283, 0x319A, 0x3057, 0x2E42, 0x2C48, 0x3148, 0x33E7, 0x3310, + 0x322F, 0x30F2, 0x2F9F, 0x2E35, 0x2AE3, 0x342C, 0x3353, 0x3274, + 0x318F, 0x309C, 0x2EE5, 0x353C, 0x346D, 0x33DD, 0x3306, 0x326C, + 0x30E8, 0x2FE6, 0x32FD, 0x34EF, 0x3461, 0x3391, 0x32B0, 0x31C8, + 0x30DB, 0x2F32, 0x3265, 0x34A5, 0x33CE, 0x333C, 0x325D, 0x3127, + 0x302C, 0x32F3, 0x31C6, 0x3452, 0x3382, 0x32EF, 0x31BE, 0x30D1, + 0x337E, 0x329D, 0x31BA, 0x3075, 0x3332, 0x3253, 0x31B2, 0x3022, + 0x332A, 0x324F, 0x3114, 0x301E, 0x32E5, 0x31FB, 0x3110, 0x3374, + 0x32DC, 0x31B0, 0x3108, 0x2F6B, 0x328F, 0x31A7, 0x33F9, 0x3368, + 0x3244, 0x31A4, 0x305E, 0x2F5F, 0x323C, 0x347C, 0x33ED, 0x32D2, + 0x3238, 0x3102, 0x2FB2, 0x2EA3, 0x2C5B, 0x3431, 0x335E, 0x32C6, + 0x3199, 0x30F6, 0x2F54, 0x2D89, 0x2B0A, 0x33E3, 0x3352, 0x322E, + 0x318D, 0x304C, 0x2EF1, 0x2CB4, 0x3189, 0x3397, 0x32BC, 0x3222, + 0x30EB, 0x3040, 0x2E91, 0x3219, 0x30E3, 0x338B, 0x32B0, 0x3183, + 0x30DF, 0x2F94, 0x2DCD, 0x317F, 0x30DB, 0x2F8B, 0x3262, 0x3176, + 0x3035, 0x2EDA, 0x320F, 0x3173, 0x3032, 0x2ED6, 0x320B, 0x30D4, + 0x3029, 0x32E7, 0x3208, 0x30D1, 0x3025, 0x2E19, 0x31BC, 0x30C8, + 0x3331, 0x324F, 0x31B4, 0x30C4, 0x2F79, 0x2DB7, 0x3160, 0x3077, + 0x3325, 0x3248, 0x315C, 0x301B, 0x2EC4, 0x2D45, 0x2AC9, 0x336B, + 0x32D5, 0x31FA, 0x310C, 0x300E, 0x2EB7, 0x2CE1, 0x29D0, 0x335F, + 0x3288, 0x31A2, 0x3100, 0x2FBC, 0x2DFA, 0x2C08, 0x30FC, 0x3357, + 0x327C, 0x3196, 0x305C, 0x2F5A, 0x2DED, 0x2C00, 0x3054, 0x32C2, + 0x322E, 0x3147, 0x3050, 0x2EFC, 0x2D2B, 0x313E, 0x304C, 0x2EF8, + 0x3222, 0x313A, 0x3044, 0x2E98, 0x321E, 0x3137, 0x2FA1, 0x2E41, + 0x3216, 0x3098, 0x2F98, 0x3265, 0x3184, 0x3090, 0x2F94, 0x2E34, + 0x317C, 0x308C, 0x2F91, 0x325E, 0x3178, 0x3088, 0x2F8D, 0x2E2D, + 0x2BDD, 0x3080, 0x32EE, 0x3210, 0x316C, 0x3032, 0x2F2F, 0x2D68, + 0x2AF9, 0x3333, 0x32E2, 0x3204, 0x311D, 0x302A, 0x2ECD, 0x2D60, + 0x2AF1, 0x3370, 0x3291, 0x31F8, 0x3110, 0x301E, 0x2E72, 0x2D53, + 0x2AE9, 0x3364, 0x328E, 0x315E, 0x30B7, 0x2F73, 0x2E6B, 0x2C89, + 0x306A, 0x2F6F, 0x3282, 0x31A2, 0x3066, 0x2F6B, 0x2E5E, 0x319A, + 0x3063, 0x2F62, 0x3234, 0x3196, 0x30AC, 0x2F5E, 0x3231, 0x3147, + 0x30A9, 0x2F5B, 0x322D, 0x3147, 0x3009, 0x2F06, 0x3225, 0x3143, + 0x3005, 0x2F02, 0x3221, 0x3140, 0x2FFC, 0x32B5, 0x31D7, 0x3137, + 0x3047, 0x32B1, 0x31D3, 0x3134, 0x3043, 0x2EF2, 0x2D2E, 0x30E8, + 0x303F, 0x3264, 0x31CC, 0x30E4, 0x2F9E, 0x2E98, 0x31C3, 0x30DB, + 0x2F9A, 0x2E94, 0x317D, 0x30D8, 0x2FE5, 0x2E90, 0x3175, 0x30D4, + 0x2FE1, 0x2E88, 0x31BC, 0x30CB, 0x2FDD, 0x3251, 0x31B8, 0x3084, + 0x2FD5, 0x2E80, 0x2D68, 0x307B, 0x2F86, 0x324A, 0x316A, 0x30C4, + 0x2F82, 0x2E25, 0x2CA5, 0x30C0, 0x2F7F, 0x31FC, 0x315E, 0x30BD, + 0x2F76, 0x2E75, 0x2CFE, 0x2A87, 0x32D1, 0x323A, 0x319D, 0x306C, + 0x2FBD, 0x2E68, 0x2CF1, 0x2A7F, 0x32C5, 0x322E, 0x3153, 0x30AD, + 0x2F6B, 0x2EB7, 0x2D48, 0x2AE9, 0x2F67, 0x322B, 0x3147, 0x3059, + 0x2F5F, 0x2E06, 0x2C85, 0x2ADB, 0x2FAF, 0x3223, 0x313B, 0x3055, + 0x2FAB, 0x2E51, 0x2CDE, 0x309E, 0x2F53, 0x2E4D, 0x313C, 0x3096, + 0x2F54, 0x2EA0, 0x2CD6, 0x3045, 0x2F50, 0x2E45, 0x3130, 0x3045, + 0x2F9B, 0x2DEE, 0x3135, 0x3042, 0x2F97, 0x2E42, 0x2C6F, 0x308B, + 0x2F94, 0x2E3E, 0x3174, 0x3087, 0x2F45, 0x2E91, 0x2CC2, 0x307F, + 0x2F90, 0x3201, 0x3125, 0x3037, 0x2F8C, 0x2E84, 0x2D1A, 0x2B20, + 0x2FD7, 0x3247, 0x3164, 0x30C4, 0x2F80, 0x2E2A, 0x2D6B, 0x2B82, + 0x2845, 0x31FE, 0x311A, 0x3079, 0x2F7D, 0x2ECF, 0x2D0F, 0x2B15, + 0x28C3, 0x323C, 0x319F, 0x30B9, 0x2FC4, 0x2E76, 0x2D60, 0x2B77, + 0x2FC0, 0x2E72, 0x3156, 0x3069, 0x2FC5, 0x2EC4, 0x2DB1, 0x2BD2, + 0x2FBC, 0x2F10, 0x3194, 0x30F5, 0x3006, 0x2F0C, 0x2D56, 0x2C2C, + 0x2FB5, 0x2EBD, 0x2DAA, 0x30AB, 0x2FB5, 0x2EB9, 0x2DFE, 0x30EE, + 0x2FFF, 0x2F05, 0x2DFA, 0x30EA, 0x3049, 0x2F51, 0x2DF6, 0x30A3, + 0x2FF8, 0x2EFE, 0x2D9F, 0x2C7E, 0x2FF8, 0x2EFE, 0x31C8, 0x312A, + 0x3042, 0x2F4A, 0x2E46, 0x2CD6, 0x303E, 0x2F46, 0x31C4, 0x312B, + 0x303E, 0x2F4B, 0x2E3E, 0x2CD3, 0x2BA6, 0x329B, 0x31C1, 0x311F, + 0x3083, 0x2FE0, 0x2E91, 0x2D83, 0x2B99, 0x3298, 0x31BD, 0x3166, + 0x30CC, 0x2F8F, 0x2E8D, 0x2D27, 0x2BFD, 0x2FD9, 0x31FB, 0x31A8, + 0x307C, 0x2FD0, 0x2F2A, 0x2E26, 0x2CB1, 0x2FD5, 0x323C, 0x315F, + 0x30BC, 0x301F, 0x2F27, 0x2DCC, 0x30C1, 0x3016, 0x2F72, 0x319D, + 0x3104, 0x301B, 0x2F1A, 0x2E6C, 0x3100, 0x3060, 0x2F6E, 0x319A, + 0x314B, 0x3018, 0x2FB9, 0x31E3, 0x3143, 0x3061, 0x2F67, 0x2EBA, + 0x3148, 0x3058, 0x2FB5, 0x31E0, 0x313F, 0x305D, 0x2FB1, 0x2F0B, + 0x3144, 0x30A1, 0x2FB6, 0x2F03, 0x2E03, 0x2C93, 0x2A91, 0x2F08, + 0x3182, 0x30E9, 0x2FF8, 0x2F53, 0x2E00, 0x2CE5, 0x2B58, 0x28AE, + 0x317F, 0x312C, 0x3041, 0x2F9D, 0x2E49, 0x2D92, 0x2BBC, 0x29A2, + 0x23CB, 0x312D, 0x3089, 0x2F9F, 0x2EEB, 0x2D94, 0x2C16, 0x2A74, + 0x2EA0, 0x2DE7, 0x30CD, 0x2F9B, 0x2F3B, 0x2DDE, 0x2CCD, 0x2B44, + 0x2EE4, 0x2E3A, 0x30CE, 0x2FDC, 0x2F86, 0x2E31, 0x2D7F, 0x2B47, + 0x2F34, 0x2E87, 0x2D76, 0x3026, 0x2FD0, 0x2E83, 0x2D7C, 0x2C5E, + 0x2F7F, 0x2ED8, 0x2DCF, 0x2C5E, 0x3019, 0x2ED4, 0x2DC6, 0x2CB4, + 0x2FC9, 0x2F23, 0x2E22, 0x2CB0, 0x2BEC, 0x2F20, 0x2E19, 0x2D67, + 0x3012, 0x2F73, 0x2E6F, 0x2D63, 0x2C49, 0x2A47, 0x2E6B, 0x30F9, + 0x305B, 0x2FBD, 0x2EC0, 0x2DB7, 0x2CA5, 0x2B12, 0x2872, 0x3140, + 0x30A7, 0x3002, 0x2F0C, 0x2E0A, 0x2D00, 0x2BD9, 0x2951, 0x318A, + 0x30EE, 0x304A, 0x2F57, 0x2E5C, 0x2DAC, 0x2C90, 0x2A99, 0x285B, + 0x3130, 0x3047, 0x2FA1, 0x2EB1, 0x2DFA, 0x2CE6, 0x2B62, 0x28D5, + 0x2DF6, 0x308F, 0x303A, 0x2F4B, 0x2E4C, 0x2D40, 0x2BC0, 0x29B1, + 0x2E48, 0x2D97, 0x303B, 0x2F95, 0x2E9D, 0x2D94, 0x2C78, 0x2FE2, + 0x2EEC, 0x2E3B, 0x2CD6, 0x2B4D, 0x2EE8, 0x3167, 0x30CA, 0x302B, + 0x2F37, 0x2E37, 0x2D2B, 0x2C0C, 0x2F85, 0x2E8D, 0x30C7, 0x3028, + 0x2F81, 0x2E89, 0x2D7F, 0x2C68, 0x2FCF, 0x2ED8, 0x2E27, 0x30BA, + 0x301B, 0x2F2C, 0x2E7C, 0x2D72, 0x301B, 0x2F2C, 0x2E28, 0x2D6E, + 0x2BFD, 0x2F76, 0x2E78, 0x2DC5, 0x3063, 0x2FBE, 0x2ECD, 0x2E1B, + 0x2D0F, 0x2BEF, 0x2F1B, 0x2E6C, 0x2D67, 0x3010, 0x2F18, 0x2E68, + 0x2D63, 0x2C4C, 0x2ABD, 0x2EBC, 0x2DBA, 0x3053, 0x2FB3, 0x2F0B, + 0x2E10, 0x2D03, 0x2B7F, 0x29DB, 0x2E60, 0x309F, 0x3000, 0x2F5E, + 0x2E5C, 0x2D52, 0x2C40, 0x2B0F, 0x2876, 0x312F, 0x3048, 0x2FA3, + 0x2EFB, 0x2DFF, 0x2D4A, 0x2B73, 0x2A35, 0x2868, 0x308F, 0x2FF0, + 0x2F4E, 0x2E4C, 0x2D99, 0x2C89, 0x2B66, 0x28E1, 0x2DEF, 0x3087, + 0x2F97, 0x2EEF, 0x2E44, 0x2D3F, 0x2BC3, 0x2A8E, 0x2E44, 0x2D91, + 0x2C1E, 0x2F3E, 0x2E99, 0x2D8D, 0x2C7D, 0x2BB6, 0x29AB, 0x2DE3, + 0x2CD6, 0x2C16, 0x2F36, 0x2E34, 0x2D2E, 0x2C70, 0x2AE6, 0x2E88, + 0x2D85, 0x2CC9, 0x2B49, 0x2E88, 0x2DDB, 0x2CC5, 0x2BAA, 0x2ED7, + 0x2E2C, 0x2D1D, 0x2C0A, 0x2A71, 0x2E7C, 0x2D75, 0x2C65, 0x2F73, + 0x2ECA, 0x2DCB, 0x2CBE, 0x2B3D, 0x2A04, 0x2DCB, 0x2D16, 0x2FC0, + 0x2F1E, 0x2E20, 0x2D6D, 0x2C53, 0x2B30, 0x291E, 0x2DBE, 0x300C, + 0x2F6B, 0x2F11, 0x2E14, 0x2D60, 0x2BF2, 0x2A5D, 0x2825, 0x3058, + 0x3000, 0x2F5F, 0x2E68, 0x2DB6, 0x2CA5, 0x2BE4, 0x2A4F, 0x281D, + 0x2298, 0x2FAC, 0x2F06, 0x2E5C, 0x2D54, 0x2C9D, 0x2B1C, 0x2971, + 0x2710, 0x2CF0, 0x2FA4, 0x2EB0, 0x2DAB, 0x2CF5, 0x2BD9, 0x2B0E, + 0x2963, 0x2D4D, 0x2C33, 0x2F47, 0x2EA3, 0x2D9E, 0x2CE8, 0x2BCB, + 0x2A3B, 0x2E47, 0x2D40, 0x2C2B, 0x2EF1, 0x2E47, 0x2D96, 0x2C84, + 0x2B03, 0x2E96, 0x2D96, 0x2C85, 0x2BC4, 0x2EE5, 0x2E3F, 0x2D38, + 0x2C23, 0x2EEA, 0x2E8E, 0x2D89, 0x2C7C, 0x2BBB, 0x2E8F, 0x2DDF, + 0x2D2B, 0x2F88, 0x2EDD, 0x2E38, 0x2D81, 0x2C6F, 0x2AF3, 0x2E87, + 0x2D82, 0x2C75, 0x2F7B, 0x2E87, 0x2E2B, 0x2D23, 0x2C0E, 0x2AE5, + 0x2940, 0x2D7A, 0x3012, 0x2F27, 0x2E7A, 0x2DCA, 0x2D16, 0x2C01, + 0x2AD8, 0x28BF, 0x305D, 0x2F74, 0x2F1A, 0x2E6D, 0x2D6D, 0x2C60, + 0x2B40, 0x2A05, 0x2847, 0x300B, 0x2FB7, 0x2F12, 0x2E17, 0x2D65, + 0x2C53, 0x2B32, 0x29FC, 0x2DBF, 0x3003, 0x2F5B, 0x2EBD, 0x2E0F, + 0x2D07, 0x2CA2, 0x2F06, 0x2E0F, 0x2DB2, 0x2CA7, 0x2BE4, 0x2ABA, + 0x2DB7, 0x2CFF, 0x2BEA, 0x2EB0, 0x2E5A, 0x2D59, 0x2C9A, 0x2B82, + 0x29E7, 0x2DAA, 0x2CF2, 0x2F9F, 0x2EF5, 0x2E03, 0x2D4C, 0x2C92, + 0x2B74, 0x29DE, 0x27A4, 0x2C93, 0x2F42, 0x2EA4, 0x2DF6, 0x2D3F, + 0x2C32, 0x2B6C, 0x2A39, 0x2812, 0x2FE2, 0x2F3E, 0x2E98, 0x2DE9, + 0x2CE6, 0x2C25, 0x2B09, 0x2963, 0x280A, 0x2439, 0x2F32, 0x2E8B, + 0x2D92, 0x2D33, 0x2C1C, 0x2AFB, 0x295B, 0x27FB, 0x2C79, 0x2F2E, + 0x2E87, 0x2DD8, 0x2CD1, 0x2BBB, 0x2AEE, 0x29B7, 0x2703, 0x2C6C, + 0x2B53, 0x2E31, 0x2D81, 0x2CCD, 0x2C0B, 0x2A89, 0x28DD, 0x2D1F, + 0x2C11, 0x2B4B, 0x2E76, 0x2DCC, 0x2CC0, 0x2BAF, 0x2AE2, 0x2941, + 0x2D1B, 0x2C60, 0x2B3E, 0x2E25, 0x2D75, 0x2CBC, 0x2BFF, 0x2ADA, + 0x2E13, 0x2D0E, 0x2C05, 0x2B3A, 0x2A07, 0x2DBC, 0x2D0A, 0x2BF2, + 0x2A70, 0x2DC1, 0x2D0A, 0x2C4F, 0x2B90, 0x2A04, 0x2D64, 0x2C55, + 0x2B96, 0x2E63, 0x2E07, 0x2D02, 0x2C47, 0x2B2E, 0x29F6, 0x2843, + 0x2CF9, 0x2BE6, 0x2EAC, 0x2DB0, 0x2CFE, 0x2C43, 0x2B7F, 0x29EE, + 0x28A8, 0x2C9F, 0x2F02, 0x2E5B, 0x2DAC, 0x2CF1, 0x2C36, 0x2B22, + 0x29EA, 0x3039, 0x2F9D, 0x2EFE, 0x2E9B, 0x2DF2, 0x2D42, 0x2C37, + 0x2B73, 0x2A44, 0x3035, 0x2F90, 0x2F3C, 0x2E97, 0x2D9C, 0x2CE9, + 0x2C2A, 0x2B6B, 0x29DE, 0x2D8E, 0x2FD6, 0x2F38, 0x2E8F, 0x2DE7, + 0x2D36, 0x2C7D, 0x2B67, 0x2A99, 0x2DDD, 0x2CD8, 0x2F2C, 0x2E8B, + 0x2E30, 0x2D32, 0x2C75, 0x2B5A, 0x2A3A, 0x2D86, 0x2CD0, 0x2C15, + 0x2ED3, 0x2DDF, 0x2D25, 0x2CC7, 0x2BB4, 0x2A8D, 0x2D7E, 0x2D21, + 0x2C11, 0x2AF3, 0x2E20, 0x2D75, 0x2CC3, 0x2BB0, 0x2E71, 0x2DC9, + 0x2D1D, 0x2C0D, 0x2B45, 0x2A7B, 0x2D71, 0x2CBB, 0x2C00, 0x2E6E, + 0x2DC5, 0x2D10, 0x2C5C, 0x2B9E, 0x2A7D, 0x2D6D, 0x2CB7, 0x2BFC, + 0x2E6A, 0x2DC1, 0x2D60, 0x2CAE, 0x2B42, 0x2A6F, 0x299C, 0x2D08, + 0x2BF8, 0x2EB2, 0x2E07, 0x2D5C, 0x2C54, 0x2BEA, 0x2B2B, 0x299E, + 0x27DF, 0x2C47, 0x2EAE, 0x2E03, 0x2DAC, 0x2CA2, 0x2BE6, 0x2ACD, + 0x2990, 0x2844, 0x25E1, 0x2EFA, 0x2DFF, 0x2DA8, 0x2CF3, 0x2C3E, + 0x2B1F, 0x2A55, 0x291E, 0x26D4, 0x24A7, 0x2E48, 0x2DA4, 0x2CEF, + 0x2C3B, 0x2B79, 0x2A52, 0x2910, 0x2744, 0x2BD1, 0x2B17, 0x2DEE, + 0x2D3F, 0x2C37, 0x2BCD, 0x2A53, 0x2976, 0x282A, 0x2C29, 0x2B6C, + 0x2A40, 0x2D3B, 0x2C80, 0x2C20, 0x2AA6, 0x2A3B, 0x282C, 0x2C7B, + 0x2B6D, 0x2AA2, 0x2D86, 0x2CD1, 0x2C1C, 0x2B01, 0x2A38, 0x28F5, + 0x2C77, 0x2BB8, 0x2AF8, 0x2965, 0x2CD6, 0x2C73, 0x2B56, 0x2A34, + 0x295B, 0x2CC9, 0x2BBD, 0x2B52, 0x2A26, 0x28ED, 0x2C6F, 0x2BAF, + 0x2A96, 0x29C0, 0x2CC5, 0x2C10, 0x2BA6, 0x2A82, 0x2953, 0x2802, + 0x2C02, 0x2AEC, 0x2DC4, 0x2D15, 0x2CB7, 0x2BA7, 0x2ADE, 0x29B8, + 0x286B, 0x260C, 0x2B9E, 0x2DC8, 0x2D68, 0x2CB3, 0x2BFA, 0x2ADA, + 0x2A16, 0x293D, 0x2707, 0x257A, 0x2E11, 0x2DB2, 0x2D04, 0x2BF7, + 0x2B3E, 0x2AD1, 0x299C, 0x27E8, 0x257D, 0x2E5A, 0x2DAE, 0x2D00, + 0x2CA2, 0x2BE9, 0x2ACE, 0x29FF, 0x2857, 0x267C, 0x24DC, 0x2E00, + 0x2D53, 0x2C9E, 0x2BE5, 0x2B23, 0x29FC, 0x28BE, 0x276D, 0x25E7, + 0x2B1F, 0x2D9D, 0x2CEE, 0x2C37, 0x2B7C, 0x2A62, 0x29EE, 0x28B0, + 0x26DD, 0x2B1B, 0x2A54, 0x2D42, 0x2C92, 0x2BD9, 0x2B16, 0x2A4A, + 0x2916, 0x2C88, 0x2BCF, 0x2B0D, 0x29E5, 0x2CDD, 0x2C2B, 0x2B6B, + 0x2A4C, 0x2975, 0x2C85, 0x2BCC, 0x2B0E, 0x2A42, 0x2971, 0x2C80, + 0x2BC7, 0x2B05, 0x2A3E, 0x2D2D, 0x2C77, 0x2BBE, 0x2A9E, 0x296D, + 0x2CCC, 0x2C19, 0x2B59, 0x2A3A, 0x2969, 0x2821, 0x2BBF, 0x2AFD, + 0x2D80, 0x2D20, 0x2C6F, 0x2BB6, 0x2AF8, 0x2A2C, 0x295B, 0x2C6B, + 0x2BB1, 0x2AEF, 0x2D72, 0x2CC4, 0x2C11, 0x2B4D, 0x2A88, 0x2957, + 0x2CBF, 0x2BAE, 0x2AEB, 0x2A24, 0x2953, 0x2C5E, 0x2BA4, 0x2AE7, + 0x2A20, 0x2CBC, 0x2C59, 0x2BA0, 0x2AE3, 0x2A16, 0x2873, 0x2C00, + 0x2B9C, 0x2AD9, 0x2D0F, 0x2CAE, 0x2BFC, 0x2B3B, 0x2A18, 0x2946, + 0x286A, 0x2BF2, 0x2AD5, 0x2A0E, 0x2D02, 0x2C51, 0x2BEE, 0x2AD1, + 0x2A0A, 0x2938, 0x277D, 0x2B33, 0x2ACD, 0x2D55, 0x2CA6, 0x2C44, + 0x2B2F, 0x2A6A, 0x2935, 0x2858, 0x276F, 0x24F5, 0x2DA2, 0x2CFA, + 0x2C98, 0x2B86, 0x2B21, 0x2A5C, 0x292C, 0x284F, 0x2675, 0x23CA, + 0x2D48, 0x2CEC, 0x2C32, 0x2B7E, 0x2ABB, 0x29EF, 0x291D, 0x2762, + 0x256D, 0x21CC, 0x2D3F, 0x2C87, 0x2BD4, 0x2B70, 0x2A50, 0x2986, + 0x283D, 0x2754, 0x255D, 0x2A46, 0x2CE4, 0x2C2A, 0x2BC7, 0x2B0B, + 0x2A42, 0x2978, 0x2834, 0x2660, 0x2B07, 0x29E3, 0x28A4, 0x2C1D, + 0x2B68, 0x2B03, 0x29D9, 0x289F, 0x27BF, 0x2B64, 0x2A9D, 0x29D5, + 0x289B, 0x2BBF, 0x2B5A, 0x2A3A, 0x29CB, 0x2891, 0x273E, 0x2B56, + 0x2A35, 0x2962, 0x288D, 0x2BB1, 0x2AFB, 0x2A31, 0x28FB, 0x2823, + 0x2BAD, 0x2AF1, 0x2A28, 0x28F7, 0x281A, 0x2B52, 0x2AED, 0x2A23, + 0x28ED, 0x2C0C, 0x2B4E, 0x2AE3, 0x29BF, 0x28E9, 0x27A0, 0x26AD, + 0x2A82, 0x29BB, 0x2C61, 0x2BFE, 0x2B40, 0x2A82, 0x29B6, 0x287C, + 0x2791, 0x25AE, 0x2A7E, 0x29AD, 0x2C53, 0x2BA0, 0x2AE1, 0x2A75, + 0x29A8, 0x286E, 0x271B, 0x25A5, 0x2A70, 0x2CAB, 0x2C4F, 0x2B93, + 0x2B2E, 0x2A13, 0x293F, 0x2860, 0x270C, 0x2596, 0x2D4F, 0x2C9E, + 0x2C41, 0x2B85, 0x2ACE, 0x2A05, 0x2931, 0x27F2, 0x2693, 0x2488, + 0x29FB, 0x2C99, 0x2BE4, 0x2B81, 0x2AC1, 0x29F7, 0x28C6, 0x27E3, + 0x2685, 0x2478, 0x29F3, 0x2C8C, 0x2BD7, 0x2B22, 0x2A60, 0x2994, + 0x28BD, 0x27DA, 0x267C, 0x2A56, 0x29EE, 0x2C88, 0x2BD2, 0x2B14, + 0x2AAF, 0x29E5, 0x28AF, 0x2765, 0x2B10, 0x2AAA, 0x297C, 0x2C2C, + 0x2BC5, 0x2B10, 0x2A4E, 0x2981, 0x28AA, 0x2BC5, 0x2B0C, 0x2A44, + 0x297D, 0x2C23, 0x2BC1, 0x2B02, 0x2A9D, 0x29D8, 0x2903, 0x2BB7, + 0x2AFE, 0x2A3C, 0x296F, 0x2898, 0x2BBC, 0x2AFE, 0x2A3C, 0x296F, + 0x2C16, 0x2BB3, 0x2AFA, 0x2A37, 0x296B, 0x2894, 0x2BAF, 0x2AF6, + 0x2A90, 0x29C6, 0x288F, 0x27AD, 0x25D6, 0x23B8, 0x2C6D, 0x2C08, + 0x2BAA, 0x2AEC, 0x2A2A, 0x295D, 0x2823, 0x273D, 0x2644, 0x23A9, + 0x2959, 0x2C04, 0x2BA6, 0x2AE4, 0x2A21, 0x29B4, 0x28E4, 0x27A0, + 0x263B, 0x242D, 0x2950, 0x2BFF, 0x2B99, 0x2ADF, 0x2A7A, 0x2950, + 0x2879, 0x272A, 0x2637, 0x24AE, 0x29AB, 0x28DC, 0x2B94, 0x2B31, + 0x2A18, 0x294C, 0x28D2, 0x27FD, 0x26A3, 0x2A6C, 0x2948, 0x2870, + 0x2789, 0x2AD2, 0x2A68, 0x29A2, 0x28D3, 0x2789, 0x262A, 0x2A68, + 0x2999, 0x28C9, 0x27EF, 0x2ACD, 0x2A63, 0x299E, 0x28C5, 0x27EA, + 0x2704, 0x2A5A, 0x2995, 0x28C5, 0x2781, 0x268C, 0x2A5F, 0x2990, + 0x2927, 0x27E6, 0x2B1B, 0x2A5B, 0x29F4, 0x28C1, 0x27E2, 0x26FB, + 0x2590, 0x29EA, 0x2922, 0x27E2, 0x2B16, 0x2AAD, 0x29EA, 0x2919, + 0x2846, 0x26F7, 0x2581, 0x29E6, 0x291E, 0x2842, 0x2B12, 0x2AA9, + 0x29E2, 0x2915, 0x2842, 0x275A, 0x2670, 0x2470, 0x291A, 0x2BC5, + 0x2B0E, 0x2AA5, 0x29DD, 0x2975, 0x283E, 0x27C6, 0x25F7, 0x2467, + 0x216D, 0x2BC1, 0x2B63, 0x2AFB, 0x2A36, 0x2971, 0x2897, 0x27C2, + 0x2663, 0x2565, 0x233E, 0x2C0F, 0x2BB3, 0x2AF2, 0x2A32, 0x29CB, + 0x2C0F, 0x2B56, 0x2AF7, 0x2A8E, 0x29C7, 0x28F9, 0x281D, 0x26D3, + 0x2A32, 0x2CBC, 0x2C0B, 0x2BA5, 0x2B47, 0x2A8A, 0x29BD, 0x2955, + 0x2880, 0x2736, 0x2A8A, 0x2A1F, 0x2C0B, 0x2BFD, 0x2B43, 0x2A80, + 0x29C2, 0x2956, 0x287C, 0x279C, 0x2ADB, 0x2A1B, 0x294C, 0x2BF9, + 0x2B3F, 0x2AD7, 0x2A72, 0x29B0, 0x28DE, 0x27A2, 0x2AD7, 0x2A17, + 0x29B0, 0x28DE, 0x2B98, 0x2B31, 0x2A6E, 0x29A6, 0x28DA, 0x286F, + 0x2789, 0x2A73, 0x2A09, 0x293A, 0x2865, 0x2B2D, 0x2A6A, 0x29AC, + 0x293F, 0x286A, 0x278B, 0x2AC5, 0x29FF, 0x2935, 0x286B, 0x27F4, + 0x270B, 0x2A5B, 0x2999, 0x28C7, 0x27F0, 0x2AC9, 0x2A60, 0x2999, + 0x2927, 0x2852, 0x270D, 0x2617, 0x2995, 0x28CD, 0x2858, 0x2B1A, + 0x2A5C, 0x29F2, 0x2923, 0x284E, 0x2773, 0x2687, 0x2515, 0x2986, + 0x28B4, 0x2B6E, 0x2AB7, 0x2A4E, 0x2986, 0x28BA, 0x2845, 0x26FA, + 0x260A, 0x248C, 0x291A, 0x2B6A, 0x2AB3, 0x2A4A, 0x2982, 0x2915, + 0x2841, 0x2761, 0x2674, 0x2502, 0x2368, 0x2BC2, 0x2B08, 0x2AA5, + 0x29E0, 0x2974, 0x28A7, 0x27D0, 0x26E7, 0x25F7, 0x24F8, 0x218E, + 0x2B60, 0x2AFA, 0x2A3C, 0x29D1, 0x2907, 0x2899, 0x274E, 0x2667, + 0x24F4, 0x23E0, 0x217D, 0x2AFF, 0x2A97, 0x2A2D, 0x2961, 0x2895, + 0x27BD, 0x26D9, 0x25E9, 0x245F, 0x221D, 0x2825, 0x2AF1, 0x2A29, + 0x29BF, 0x28FA, 0x2886, 0x27AE, 0x2654, 0x255F, 0x23D3, 0x2886, + 0x27AE, 0x26C6, 0x2A1B, 0x2958, 0x28EB, 0x2816, 0x26C7, 0x25D6, + 0x24D7, 0x28EB, 0x2878, 0x2732, 0x264B, 0x29B6, 0x294A, 0x287D, + 0x279B, 0x26B7, 0x25C7, 0x294A, 0x28DD, 0x27A1, 0x2728, 0x263B, + 0x29A8, 0x28DD, 0x2804, 0x2729, 0x2641, 0x29A8, 0x293C, 0x2809, + 0x2792, 0x26AE, 0x2543, 0x2941, 0x28D4, 0x2793, 0x271A, 0x2A04, + 0x2941, 0x28D4, 0x27FB, 0x2720, 0x269F, 0x2533, 0x2933, 0x285C, + 0x2789, 0x2A68, 0x299F, 0x2933, 0x28C6, 0x27EC, 0x2711, 0x25B0, + 0x242C, 0x28C6, 0x27F2, 0x277A, 0x2A5A, 0x2990, 0x2925, 0x2853, + 0x277B, 0x2702, 0x25A1, 0x241C, 0x28BD, 0x27E3, 0x2A5A, 0x29F6, + 0x292A, 0x28BD, 0x284E, 0x276C, 0x2616, 0x2598, 0x2412, 0x284E, + 0x2AB8, 0x2A4C, 0x29E8, 0x297D, 0x28AE, 0x27D5, 0x26F9, 0x267F, + 0x2518, 0x2385, 0x21B8, 0x2AAA, 0x2A47, 0x2983, 0x2917, 0x2845, + 0x27D0, 0x26F0, 0x25FE, 0x2508, 0x2375, 0x27D6, 0x2A9C, 0x2A39, + 0x2509, 0x2909, 0x2837, 0x2AA6, 0x2A39, 0x29D5, 0x296A, 0x289B, + 0x27C7, 0x2750, 0x25FA, 0x2500, 0x28A1, 0x2B03, 0x2A98, 0x2A34, + 0x2970, 0x2904, 0x2832, 0x27B8, 0x26DD, 0x25F0, 0x24F0, 0x2363, + 0x2AF5, 0x2A93, 0x29D0, 0x296B, 0x28F6, 0x2888, 0x27B4, 0x26CE, + 0x25E1, 0x246E, 0x2353, 0x2AF0, 0x2A85, 0x2A22, 0x29B8, 0x28F1, + 0x281F, 0x2742, 0x265A, 0x2563, 0x24DC, 0x22C3, 0x27AF, 0x2A80, + 0x2A18, 0x2953, 0x28E3, 0x2811, 0x27A0, 0x26C0, 0x25CE, 0x24D3, + 0x22B3, 0x280C, 0x272F, 0x29B9, 0x294A, 0x28DE, 0x280C, 0x272F, + 0x264C, 0x2555, 0x2451, 0x2335, 0x279C, 0x26BC, 0x29AF, 0x2940, + 0x28D9, 0x2807, 0x2726, 0x26AD, 0x25C0, 0x24BF, 0x2867, 0x278D, + 0x271B, 0x2632, 0x293B, 0x2871, 0x27F9, 0x2788, 0x26A8, 0x2542, + 0x243D, 0x285E, 0x27EF, 0x26A8, 0x2629, 0x2532, 0x28C6, 0x27F4, + 0x2717, 0x2699, 0x25AC, 0x28D0, 0x2859, 0x2784, 0x2708, 0x2624, + 0x252D, 0x28BC, 0x27EF, 0x2775, 0x2695, 0x25A8, 0x28C1, 0x2854, + 0x277F, 0x2703, 0x2620, 0x251E, 0x241E, 0x27EB, 0x2771, 0x2690, + 0x2599, 0x2919, 0x284F, 0x27D7, 0x26FF, 0x2611, 0x2593, 0x241A, + 0x2304, 0x276C, 0x268C, 0x2984, 0x2915, 0x284B, 0x27D2, 0x26FA, + 0x267C, 0x258F, 0x2416, 0x2273, 0x27CD, 0x2687, 0x297F, 0x2910, + 0x2846, 0x27CE, 0x26F6, 0x2678, 0x258A, 0x2484, 0x2379, 0x21C0, + 0x26E7, 0x2975, 0x2906, 0x289F, 0x27C9, 0x274E, 0x2673, 0x257B, + 0x24FC, 0x2375, 0x2129, 0x2A37, 0x29CB, 0x290B, 0x289B, 0x2829, + 0x2754, 0x26D8, 0x25E9, 0x24F8, 0x236C, 0x2249, 0x2065, 0x29C6, + 0x2962, 0x2896, 0x2824, 0x274F, 0x26D3, 0x25E5, 0x2567, 0x23E8, + 0x22D1, 0x1FB7, 0x26CE, 0x295D, 0x28EE, 0x2824, 0x27B0, 0x26CF, + 0x2650, 0x2563, 0x2462, 0x22D3, 0x2740, 0x26CA, 0x2953, 0x28EE, + 0x287D, 0x27AC, 0x2731, 0x2656, 0x25D1, 0x24DA, 0x234D, 0x27A2, + 0x26C0, 0x2647, 0x28E9, 0x2878, 0x2807, 0x2737, 0x26BB, 0x25D2, + 0x24D5, 0x2874, 0x279D, 0x2723, 0x2647, 0x25C7, 0x28DA, 0x280C, + 0x2793, 0x26B6, 0x2638, 0x2545, 0x286A, 0x2801, 0x278E, 0x26AC, + 0x25C3, 0x28D5, 0x2865, 0x278E, 0x2719, 0x26A7, 0x25BE, 0x28CB, + 0x27FD, 0x2789, 0x26A7, 0x2629, 0x253C, 0x2865, 0x27F3, 0x277F, + 0x26A2, 0x293A, 0x28D0, 0x2860, 0x27EE, 0x2714, 0x2698, 0x25AF, + 0x24B8, 0x23AC, 0x228F, 0x2017, 0x2935, 0x28C6, 0x285B, 0x27E9, + 0x2776, 0x2693, 0x25AA, 0x2528, 0x2427, 0x228B, 0x2155, 0x268E, + 0x2927, 0x28B8, 0x284C, 0x2776, 0x2700, 0x2684, 0x259B, 0x24A4, + 0x239E, 0x2281, 0x26F6, 0x2616, 0x28BC, 0x284C, 0x27DA, 0x2767, + 0x268A, 0x260B, 0x251E, 0x2494, 0x2301, 0x2146, 0x2685, 0x2606, + 0x28AE, 0x283D, 0x27CB, 0x26F7, 0x267A, 0x2587, 0x248F, 0x2389, + 0x226C, 0x26EC, 0x2675, 0x250F, 0x283D, 0x27D0, 0x275D, 0x26E2, + 0x25F8, 0x250A, 0x2480, 0x2379, 0x2753, 0x26DD, 0x2588, 0x2505, + 0x2404, 0x27C1, 0x274E, 0x2667, 0x257D, 0x24FA, 0x23FF, 0x2758, + 0x26E3, 0x25F8, 0x2578, 0x24F5, 0x23F4, 0x274E, 0x26D8, 0x25EE, + 0x256D, 0x247C, 0x27BC, 0x2749, 0x26D4, 0x25E9, 0x2569, 0x2471, + 0x2360, 0x273F, 0x26C9, 0x25DF, 0x24F1, 0x246C, 0x27AD, 0x273A, + 0x265D, 0x256F, 0x24EC, 0x2461, 0x22D4, 0x26CF, 0x2658, 0x2564, + 0x24E1, 0x2815, 0x273A, 0x26C4, 0x264D, 0x255F, 0x24DC, 0x235D, + 0x22C4, 0x26C0, 0x2648, 0x2554, 0x2815, 0x27A8, 0x272B, 0x26B5, + 0x25D5, 0x2550, 0x2458, 0x234C, 0x2235, 0x2649, 0x25D0, 0x287B, + 0x2806, 0x2799, 0x2726, 0x26B0, 0x25C5, 0x254A, 0x244E, 0x233C, + 0x2224, 0x204B, 0x28DF, 0x286C, 0x2801, 0x278F, 0x26B6, 0x2639, + 0x25BC, 0x24CE, 0x23C7, 0x22B0, 0x2214, 0x2040, 0x28D1, 0x2867, + 0x27F6, 0x2720, 0x26A7, 0x262F, 0x25B1, 0x24BE, 0x23B8, 0x2327, + 0x20E5, 0x1EDC, 0x28C6, 0x285D, 0x2789, 0x2711, 0x269C, 0x2625, + 0x2536, 0x24AF, 0x23A8, 0x229B, 0x216B, 0x2620, 0x28C1, 0x27F1, + 0x277B, 0x270C, 0x2697, 0x2616, 0x252D, 0x24AA, 0x23A3, 0x228B, + 0x2692, 0x25A7, 0x28B7, 0x27EC, 0x2775, 0x2702, 0x2688, 0x2611, + 0x2522, 0x242B, 0x2399, 0x26FD, 0x2688, 0x25A2, 0x251D, 0x27E7, + 0x2770, 0x26F8, 0x2683, 0x259D, 0x2518, 0x2495, 0x2394, 0x26F8, + 0x2678, 0x2601, 0x2518, 0x27D8, 0x2766, 0x26EE, 0x267E, 0x2593, + 0x250D, 0x2490, 0x2761, 0x26ED, 0x2673, 0x25FC, 0x2513, 0x27CD, + 0x2761, 0x26E8, 0x2673, 0x258E, 0x2508, 0x27CD, 0x2757, 0x26E8, + 0x266E, 0x25F7, 0x2503, 0x27C8, 0x2756, 0x26E3, 0x266E, 0x25ED, + 0x2837, 0x27C8, 0x2751, 0x26E3, 0x2664, 0x25F2, 0x24FE, 0x27C7, + 0x2751, 0x26D9, 0x2669, 0x28A0, 0x2892, 0x27BE, 0x2751, 0x26D9, + 0x265F, 0x25E7, 0x256A, 0x2477, 0x23E7, 0x22E0, 0x2122, 0x25E3, + 0x24F9, 0x2472, 0x274C, 0x26D4, 0x265A, 0x25E2, 0x2565, 0x2472, + 0x23E2, 0x22D0, 0x21B1, 0x2078, 0x2564, 0x24DF, 0x27A9, 0x2732, + 0x2659, 0x25DD, 0x255A, 0x246D, 0x23DD, 0x22CB, 0x2237, 0x206E, + 0x1E5B, 0x2813, 0x279F, 0x272D, 0x26BF, 0x2645, 0x2555, 0x24DA, + 0x2452, 0x234B, 0x2239, 0x2102, 0x1F12, 0x2813, 0x27A3, 0x272D, + 0x26B4, 0x263A, 0x25C8, 0x24D5, 0x244D, 0x2346, 0x22B5, 0x20FD, + 0x1F0D, 0x1CAA, 0x2799, 0x2727, 0x26B4, 0x263F, 0x25BE, 0x2540, + 0x2448, 0x23C3, 0x22B1, 0x218D, 0x1FB7, 0x1E40, 0x24C0, 0x2789, + 0x2718, 0x2635, 0x25B9, 0x2540, 0x24C0, 0x23BE, 0x2331, 0x2213, + 0x2055, 0x1F99, 0x24B5, 0x2438, 0x2717, 0x269F, 0x2625, 0x25A9, + 0x24BB, 0x2433, 0x232C, 0x221A, 0x2177, 0x25A9, 0x252B, 0x2433, + 0x23A8, 0x269F, 0x2625, 0x25A9, 0x252B, 0x24AB, 0x23A9, 0x229C, + 0x21FD, 0x2615, 0x252B, 0x24AB, 0x2423, 0x269A, 0x2620, 0x25A4, + 0x2526, 0x24A0, 0x23A4, 0x2317, 0x21FF, 0x2610, 0x2526, 0x24A6, + 0x241E, 0x2317, 0x268A, 0x2610, 0x2594, 0x2516, 0x241E, 0x2393, + 0x2287, 0x2610, 0x2594, 0x2516, 0x2773, 0x2702, 0x268A, 0x2610, + 0x2594, 0x2516, 0x2496, 0x240E, 0x2306, 0x267A, 0x2600, 0x2584, + 0x2496, 0x2768, 0x26F2, 0x267A, 0x2600, 0x2584, 0x2506, 0x2414, + 0x2389, 0x22FC, 0x2600, 0x2589, 0x2506, 0x2486, 0x23FE, 0x26E7, + 0x266F, 0x2589, 0x250B, 0x2486, 0x2403, 0x2379, 0x2674, 0x25F0, + 0x2579, 0x24F6, 0x2403, 0x2379, 0x2674, 0x25FA, 0x2579, 0x24FB, + 0x2476, 0x23F3, 0x2674, 0x265F, 0x25EA, 0x256E, 0x247B, 0x23F3, + 0x2368, 0x2250, 0x25EA, 0x256E, 0x247B, 0x23F3, 0x236E, 0x2664, + 0x25EA, 0x2574, 0x24F6, 0x246B, 0x236F, 0x22E1, 0x21BE, 0x2574, + 0x24F6, 0x246B, 0x23E3, 0x26D1, 0x2659, 0x25DA, 0x255E, 0x24E6, + 0x2460, 0x235E, 0x22D1, 0x21B3, 0x2081, 0x24E6, 0x2466, 0x23DE, + 0x26C6, 0x25E4, 0x25D5, 0x2559, 0x2466, 0x23DE, 0x234E, 0x2241, + 0x2117, 0x2076, 0x24DB, 0x23E3, 0x26C6, 0x2653, 0x25D9, 0x25CA, + 0x24DB, 0x2456, 0x23CE, 0x2348, 0x2230, 0x219D, 0x1FC6, 0x1E6C, + 0x244B, 0x26C0, 0x2648, 0x25CF, 0x2553, 0x24D0, 0x244B, 0x23C8, + 0x22BB, 0x21A4, 0x2107, 0x1FC1, 0x1E5A, 0x2726, 0x26B5, 0x2639, + 0x25C4, 0x2548, 0x24C5, 0x2445, 0x2343, 0x22B1, 0x221A, 0x20F6, + 0x1FAF, 0x1D98, 0x19E1, 0x26AA, 0x2633, 0x25BE, 0x253E, 0x24C0, + 0x23C3, 0x23B2, 0x22A6, 0x218E, 0x2056, 0x1F07, 0x1D86, 0x23B3, + 0x26A5, 0x2628, 0x25B3, 0x2533, 0x24B5, 0x2430, 0x23AD, 0x22A0, + 0x220B, 0x20E0, 0x1F9F, 0x1E37, 0x23AD, 0x2322, 0x2622, 0x25AE, + 0x252D, 0x24AF, 0x2425, 0x23A2, 0x2290, 0x21FF, 0x20DA, 0x1EF0, + 0x242F, 0x23A8, 0x2318, 0x2621, 0x25A3, 0x2522, 0x24AA, 0x241F, + 0x239C, 0x228A, 0x21FA, 0x20C9, 0x1F89, 0x242A, 0x239D, 0x230D, + 0x2285, 0x259D, 0x2521, 0x249F, 0x241A, 0x2397, 0x2285, 0x21F5, + 0x20C4, 0x249F, 0x2424, 0x2397, 0x2307, 0x227A, 0x2592, 0x251C, + 0x2499, 0x240F, 0x238C, 0x2302, 0x21EF, 0x2150, 0x249E, 0x248E, + 0x2392, 0x2307, 0x2274, 0x2591, 0x2511, 0x248E, 0x2414, 0x2386, + 0x22F7, 0x21EA, 0x258C, 0x250B, 0x2489, 0x2391, 0x2381, 0x226F, + 0x21D9, 0x2510, 0x2501, 0x2409, 0x2381, 0x22FC, 0x2264, 0x2581, + 0x2500, 0x2488, 0x2403, 0x2376, 0x226A, 0x21D9, 0x257C, 0x24FB, + 0x240E, 0x23F8, 0x2370, 0x25FE, 0x2580, 0x2505, 0x2483, 0x23FE, + 0x2370, 0x2603, 0x25F4, 0x257B, 0x24FA, 0x2478, 0x23F2, 0x2365, + 0x2264, 0x21C8, 0x212F, 0x1FF7, 0x246D, 0x23E7, 0x22E6, 0x25EE, + 0x257A, 0x24F9, 0x2477, 0x23F2, 0x236B, 0x22DB, 0x2248, 0x212A, + 0x2087, 0x2471, 0x23EC, 0x235F, 0x22D5, 0x256F, 0x24F4, 0x2476, + 0x2466, 0x23E1, 0x235A, 0x224E, 0x21B2, 0x2119, 0x2466, 0x23E1, + 0x2365, 0x22D5, 0x2242, 0x255F, 0x24E4, 0x2461, 0x23DC, 0x234F, + 0x22C5, 0x21AD, 0x2113, 0x1FDB, 0x2456, 0x23D1, 0x22D0, 0x223D, + 0x21A7, 0x2553, 0x2460, 0x23DC, 0x2354, 0x22C4, 0x2232, 0x219B, + 0x2071, 0x2455, 0x23D0, 0x2349, 0x22BF, 0x222C, 0x2196, 0x206B, + 0x2455, 0x23CB, 0x2343, 0x22B3, 0x2220, 0x2102, 0x24CD, 0x244F, + 0x23CA, 0x2338, 0x222C, 0x2196, 0x20FD, 0x2059, 0x2444, 0x23BF, + 0x2338, 0x2226, 0x2190, 0x24CC, 0x244F, 0x23CA, 0x23BA, 0x2332, + 0x221B, 0x2185, 0x20EB, 0x1F13, 0x23BF, 0x2337, 0x22AD, 0x2215, + 0x2541, 0x24C6, 0x243E, 0x23B9, 0x2332, 0x22A8, 0x218B, 0x20F2, + 0x204E, 0x1F01, 0x23AE, 0x2327, 0x229D, 0x220A, 0x24C5, 0x24B5, + 0x2433, 0x23AE, 0x2321, 0x2297, 0x2204, 0x20E0, 0x203D, 0x1EEF, + 0x1D85, 0x2321, 0x2210, 0x253A, 0x24B9, 0x2432, 0x23B3, 0x232C, + 0x2316, 0x2204, 0x2174, 0x2044, 0x1F96, 0x1E3F, 0x1D7A, 0x2296, + 0x25A7, 0x252E, 0x24A9, 0x242C, 0x23A7, 0x231B, 0x2291, 0x21FE, + 0x2163, 0x20C3, 0x1F8A, 0x1ED7, 0x1CAF, 0x25AB, 0x2532, 0x2523, + 0x24A3, 0x2421, 0x23A1, 0x230F, 0x2285, 0x21ED, 0x2157, 0x202D, + 0x1F85, 0x1E27, 0x1C9C, 0x25A5, 0x252C, 0x251D, 0x2498, 0x241B, + 0x2391, 0x2309, 0x2274, 0x21E7, 0x2151, 0x2021, 0x1F73, 0x1E15, + 0x1C90, 0x2599, 0x2520, 0x24A1, 0x241F, 0x240F, 0x2385, 0x22FE, + 0x226F, 0x21DC, 0x20B8, 0x200F, 0x1F6D, 0x1E0F, 0x22F8, 0x226E, + 0x251A, 0x24A0, 0x248B, 0x2409, 0x237F, 0x22F8, 0x2263, 0x21D6, + 0x213A, 0x20A1, 0x1F5C, 0x237F, 0x22ED, 0x2263, 0x250F, 0x2494, + 0x2485, 0x23FE, 0x237E, 0x22EC, 0x225D, 0x21D0, 0x2135, 0x209B, + 0x23FD, 0x2373, 0x22EC, 0x225D, 0x250E, 0x2489, 0x240C, 0x23FC, + 0x2373, 0x22E6, 0x225C, 0x21C4, 0x2129, 0x208F, 0x23F1, 0x2372, + 0x22E6, 0x2257, 0x250C, 0x24F8, 0x2478, 0x23F1, 0x236D, 0x22E5, + 0x2256, 0x21BE, 0x2128, 0x2477, 0x23F0, 0x236C, 0x22DA, 0x2256, + 0x21BE, 0x2123, 0x2477, 0x23F0, 0x236C, 0x22E0, 0x224B, 0x21BE, + 0x2123, 0x2084, 0x1FDA, 0x1E92, 0x22DF, 0x224A, 0x21B8, 0x2122, + 0x246B, 0x23EF, 0x23DF, 0x2355, 0x22C9, 0x2239, 0x21A1, 0x2084, + 0x2072, 0x1F2D, 0x1DCE, 0x22C8, 0x2239, 0x21A7, 0x246A, 0x23E9, + 0x235F, 0x2354, 0x22C8, 0x2239, 0x21A7, 0x210B, 0x206C, 0x1F27, + 0x1E74, 0x1CFC, 0x2238, 0x21A6, 0x2469, 0x2459, 0x23D8, 0x234E, + 0x22C2, 0x22B7, 0x2227, 0x2195, 0x206C, 0x1FC3, 0x1F15, 0x1DB6, + 0x1C2A, 0x2227, 0x2467, 0x2458, 0x23D1, 0x234D, 0x22C1, 0x2232, + 0x2222, 0x2189, 0x2066, 0x1FBD, 0x1F0F, 0x1DB0, 0x1CEB, 0x1A60, + 0x24DB, 0x245B, 0x244C, 0x23CA, 0x2341, 0x22B5, 0x2226, 0x2194, + 0x20F3, 0x2054, 0x1FAB, 0x1E5D, 0x1D9D, 0x1C18, 0x1A4C, 0x245A, + 0x244B, 0x23C9, 0x2340, 0x2330, 0x22A4, 0x2215, 0x2182, 0x20E7, + 0x1FB1, 0x1F04, 0x1E51, 0x1CE0, 0x1B2F, 0x2182, 0x244E, 0x243F, + 0x23BD, 0x232F, 0x22A3, 0x2214, 0x2182, 0x20ED, 0x20D5, 0x1F9F, + 0x1EF1, 0x1D92, 0x1BFF, 0x2203, 0x2171, 0x243D, 0x23BC, 0x2333, + 0x2323, 0x229C, 0x220E, 0x2171, 0x20D5, 0x203C, 0x1F93, 0x1E3F, + 0x229C, 0x220D, 0x217B, 0x2164, 0x203C, 0x23B0, 0x232C, 0x231C, + 0x220D, 0x24C9, 0x24BA, 0x243B, 0x23B0, 0x232C, 0x231C, 0x2290, + 0x21FC, 0x216A, 0x20CF, 0x202A, 0x23A4, 0x231B, 0x228F, 0x2201, + 0x21F0, 0x243E, 0x242F, 0x23A4, 0x2320, 0x2310, 0x2284, 0x21F0, + 0x215E, 0x20BD, 0x201E, 0x239E, 0x230F, 0x2283, 0x21FA, 0x21E4, + 0x20C8, 0x2423, 0x239D, 0x2314, 0x228E, 0x227D, 0x21E4, 0x2151, + 0x20B7, 0x2018, 0x2313, 0x228D, 0x227D, 0x21EE, 0x2157, 0x20BC, + 0x2018, 0x2396, 0x230D, 0x2282, 0x2271, 0x21DD, 0x214B, 0x20AA, + 0x2011, 0x2312, 0x2302, 0x2271, 0x21E8, 0x214B, 0x20B6, 0x2011, + 0x1F6E, 0x2301, 0x227B, 0x21E7, 0x2156, 0x213F, 0x20A4, 0x2005, + 0x2306, 0x22F6, 0x226F, 0x21DC, 0x2145, 0x20A9, 0x2005, 0x1F62, + 0x1EB5, 0x226F, 0x21E0, 0x21D0, 0x2139, 0x2098, 0x1FFF, 0x2304, + 0x22F4, 0x2263, 0x21CF, 0x2143, 0x212D, 0x1FFF, 0x1F5C, 0x1EA8, + 0x1DEF, 0x225D, 0x21C9, 0x212C, 0x2097, 0x1FF2, 0x22FE, 0x22E8, + 0x2262, 0x21CE, 0x2137, 0x209D, 0x1FFE, 0x1FEC, 0x1F3D, 0x1DE9, + 0x1D30, 0x21C8, 0x212B, 0x2091, 0x1FEC, 0x2375, 0x22E7, 0x225C, + 0x21CD, 0x21BC, 0x2125, 0x2085, 0x1FE0, 0x1F37, 0x1E8F, 0x1D23, + 0x1C56, 0x212A, 0x2119, 0x207F, 0x236D, 0x22E5, 0x2255, 0x21C7, + 0x21B0, 0x2119, 0x2084, 0x1FE6, 0x1F37, 0x1E89, 0x1DD0, 0x1C51, + 0x1AAC, 0x208F, 0x207E, 0x236C, 0x22E4, 0x2253, 0x2243, 0x21AF, + 0x2118, 0x207E, 0x1FE5, 0x1FCD, 0x1F24, 0x1DD0, 0x1D0A, 0x1B7D, + 0x19A7, 0x2071, 0x236A, 0x22E2, 0x22D2, 0x2241, 0x21AE, 0x2117, + 0x207D, 0x206B, 0x1FC7, 0x1F1E, 0x1E6A, 0x1D04, 0x1C37, 0x1A8B, + 0x1760, 0x236D, 0x235D, 0x22D5, 0x2245, 0x2235, 0x21A7, 0x2110, + 0x2070, 0x205F, 0x1F1D, 0x1E70, 0x1DB7, 0x1CF1, 0x1B63, 0x198C, + 0x0FF8, 0x235C, 0x22D4, 0x2244, 0x2233, 0x21A6, 0x210F, 0x20F8, + 0x205E, 0x1FBF, 0x1F17, 0x1E5D, 0x1DA4, 0x1C2B, 0x1B4F, 0x1870, + 0x2058, 0x22D7, 0x22C7, 0x2237, 0x2227, 0x2199, 0x20F7, 0x205D, + 0x1FBF, 0x1FAD, 0x1F04, 0x1E50, 0x1CE4, 0x1C17, 0x197A, 0x205C, + 0x204B, 0x22CB, 0x22BB, 0x2230, 0x2198, 0x2101, 0x20F0, 0x2056, + 0x1FB2, 0x1F04, 0x1E56, 0x1D9D, 0x1CD1, 0x1B43, 0x20F0, 0x204A, + 0x1FAC, 0x22BE, 0x2234, 0x2224, 0x218B, 0x20F5, 0x20E4, 0x2049, + 0x2345, 0x22B3, 0x2228, 0x2218, 0x218A, 0x20EF, 0x2055, 0x203D, + 0x1F9F, 0x1EF1, 0x1E43, 0x1D84, 0x217F, 0x23DC, 0x2357, 0x2348, + 0x22C0, 0x22B1, 0x2221, 0x218E, 0x217E, 0x20E2, 0x2048, 0x2037, + 0x1F98, 0x1EE4, 0x1E36, 0x1D77, 0x1CB7, 0x20E1, 0x2355, 0x2346, + 0x22B4, 0x22A4, 0x221A, 0x2209, 0x2171, 0x20E0, 0x20CF, 0x202A, + 0x1F8B, 0x1EDD, 0x1E30, 0x1D70, 0x1BF1, 0x20D4, 0x203A, 0x2339, + 0x22B2, 0x22A2, 0x220D, 0x2180, 0x216F, 0x20D4, 0x2034, 0x1F97, + 0x1F85, 0x1ED7, 0x1E29, 0x1D6A, 0x1BEB, 0x20D3, 0x2034, 0x2022, + 0x1F7E, 0x229A, 0x220B, 0x2173, 0x2163, 0x20D2, 0x20C1, 0x2022, + 0x1F78, 0x1ED6, 0x1E1C, 0x1D5D, 0x1BE5, 0x20C6, 0x2032, 0x201B, + 0x1F77, 0x1EC9, 0x2209, 0x21F9, 0x2161, 0x20C5, 0x2032, 0x201A, + 0x1F77, 0x1EC9, 0x1E16, 0x1D63, 0x1C97, 0x20C5, 0x2026, 0x201A, + 0x1F76, 0x1EC8, 0x1E15, 0x21F1, 0x215F, 0x20C4, 0x20B3, 0x2014, + 0x1F76, 0x1F64, 0x1EB6, 0x1E02, 0x1C91, 0x20C3, 0x20B2, 0x2013, + 0x1F75, 0x1F63, 0x1EB5, 0x1E02, 0x2158, 0x20C2, 0x20B1, 0x2012, + 0x1F74, 0x1F63, 0x1EB5, 0x1E02, 0x1D42, 0x2146, 0x20B1, 0x2017, + 0x2006, 0x1F62, 0x1EB4, 0x1E01, 0x1D42, 0x2150, 0x20B5, 0x20A4, + 0x2005, 0x1F62, 0x1EB4, 0x1E01, 0x1DEE, 0x214A, 0x20B4, 0x20A3, + 0x2004, 0x1F61, 0x1EB3, 0x1EA1, 0x1DEE, 0x1D2E, 0x20B3, 0x20A3, + 0x2003, 0x1F60, 0x1F49, 0x1EA1, 0x1DEE, 0x2148, 0x20B3, 0x20A2, + 0x2003, 0x1F60, 0x1F48, 0x1EA0, 0x1DED, 0x1D2E, 0x1C68, 0x20A6, + 0x2095, 0x1FF6, 0x1F47, 0x1EA0, 0x1DED, 0x214B, 0x213B, 0x20A5, + 0x2095, 0x1FF6, 0x1F53, 0x1F41, 0x1DED, 0x1DDA, 0x1D1A, 0x1C54, + 0x2094, 0x1FF5, 0x1F52, 0x1F40, 0x1E92, 0x21D6, 0x213E, 0x212E, + 0x2098, 0x1FFA, 0x1FE8, 0x1F40, 0x1E92, 0x1DDF, 0x1DCC, 0x1C5B, + 0x1B88, 0x1FF9, 0x1FE8, 0x1F45, 0x1F33, 0x21DE, 0x21CD, 0x2137, + 0x209C, 0x208B, 0x1FEC, 0x1FDB, 0x1F32, 0x1E8B, 0x1DD8, 0x1DC5, + 0x1C4E, 0x1B73, 0x207F, 0x1FDA, 0x1F37, 0x21E1, 0x21D1, 0x213F, + 0x212F, 0x208F, 0x207E, 0x1FE5, 0x1F37, 0x1F25, 0x1E7D, 0x1DCB, + 0x1D0C, 0x1C47, 0x1B6C, 0x1FEA, 0x1FD8, 0x2267, 0x21DE, 0x21CE, + 0x2132, 0x2122, 0x208D, 0x207C, 0x1FD8, 0x1F35, 0x1F23, 0x1E70, + 0x1DC4, 0x1CFF, 0x1C33, 0x1B66, 0x1FDC, 0x2274, 0x2264, 0x21D6, + 0x1E69, 0x2130, 0x211F, 0x207F, 0x1FE7, 0x1FD6, 0x1F28, 0x1F16, + 0x1E6E, 0x1DB6, 0x2123, 0x208A, 0x2073, 0x1FDB, 0x1FC9, 0x1F21, + 0x1E6E, 0x1DC2, 0x1DAF, 0x2117, 0x207D, 0x206D, 0x1FCE, 0x1FBD, + 0x1F14, 0x1E67, 0x1DB5, 0x2121, 0x2082, 0x2071, 0x1FD9, 0x1FC7, + 0x1F1F, 0x1E6D, 0x1E5A, 0x1DA2, 0x1CE9, 0x2075, 0x2065, 0x1FCC, + 0x1FBB, 0x1F13, 0x1E60, 0x1DAE, 0x2119, 0x2085, 0x2074, 0x2063, + 0x1FC0, 0x1F18, 0x1F06, 0x1E59, 0x1DA1, 0x1CE3, 0x1C17, 0x2068, + 0x1FCA, 0x1FB9, 0x1F11, 0x1E5E, 0x1E4C, 0x1D94, 0x210B, 0x2072, + 0x2061, 0x1FBE, 0x1F16, 0x1F04, 0x1E58, 0x1DA0, 0x1D8D, 0x1CCE, + 0x1C02, 0x1B2F, 0x1FB1, 0x1F09, 0x1EF8, 0x1E4B, 0x1D92, 0x210E, + 0x2075, 0x2064, 0x1FC1, 0x1FB0, 0x1F08, 0x1EF6, 0x1E4A, 0x1D8C, + 0x1CCD, 0x1C02, 0x1B2F, 0x1A4B, 0x1FA3, 0x1F01, 0x1E4F, 0x1E3D, + 0x2111, 0x2101, 0x205C, 0x2057, 0x1FAE, 0x1F06, 0x1EF5, 0x1E48, + 0x1D90, 0x1D7E, 0x1CBF, 0x1BFB, 0x1B1A, 0x1A36, 0x1F05, 0x1EF4, + 0x1E3B, 0x2114, 0x2103, 0x206A, 0x205A, 0x1FB1, 0x1FA0, 0x1EF9, + 0x1EE7, 0x1E3A, 0x1D89, 0x1D70, 0x1BFA, 0x1BDF, 0x1B0B, 0x1948, + 0x183E, 0x1EE6, 0x1E2D, 0x2106, 0x20F6, 0x205D, 0x204C, 0x1FA9, + 0x1F98, 0x1EEB, 0x1E3F, 0x1E2C, 0x1D7B, 0x1CB7, 0x1BEC, 0x1BD8, + 0x1A2F, 0x193A, 0x1827, 0x1E38, 0x210E, 0x20FE, 0x20ED, 0x204F, + 0x1FAC, 0x1F9B, 0x1EFA, 0x1EE9, 0x1E37, 0x1E25, 0x1D6D, 0x1CA9, + 0x1BE5, 0x1BCA, 0x1A28, 0x192C, 0x1820, 0x219A, 0x2105, 0x20F5, + 0x2057, 0x2047, 0x1FAA, 0x1F99, 0x1EEC, 0x1EDB, 0x1E2F, 0x1E1D, + 0x1D5F, 0x1C9B, 0x1BD6, 0x1BC2, 0x1A1A, 0x1A04, 0x180A, 0x2192, + 0x2102, 0x20F2, 0x2055, 0x2044, 0x1FA1, 0x1F90, 0x1EEA, 0x1ED9, + 0x1E21, 0x1E0F, 0x1D5D, 0x1C99, 0x1BCF, 0x1BB4, 0x1A13, 0x19FD, + 0x1803, 0x1E20, 0x20FA, 0x20EA, 0x204C, 0x203B, 0x1F9F, 0x1F8E, + 0x1F7D, 0x1ED0, 0x1E1F, 0x1E0D, 0x1D56, 0x1C98, 0x1C85, 0x1BB3, + 0x1AD9, 0x19EE, 0x1ECF, 0x1E1E, 0x20FC, 0x20EC, 0x204F, 0x203E, + 0x202D, 0x1F86, 0x1F7A, 0x1ECE, 0x1E1D, 0x1E0B, 0x1D4E, 0x1D47, + 0x1C83, 0x1BB2, 0x1AD8, 0x1F73, 0x1ECD, 0x1EC1, 0x20F4, 0x20E3, + 0x20DE, 0x2040, 0x2030, 0x1F88, 0x1F77, 0x1ED1, 0x1EC0, 0x1E0E, + 0x1DFC, 0x1D3F, 0x1C82, 0x1BB1, 0x1B9D, 0x1F76, 0x1ED0, 0x1EBF, + 0x1E0D, 0x1DFB, 0x1D3E, 0x1C81, 0x1C6E, 0x1F8B, 0x1F7A, 0x1ED4, + 0x1EC3, 0x1E0D, 0x1DFA, 0x1D3D, 0x1C81, 0x202B, 0x1F8A, 0x1F79, + 0x1ED3, 0x1EC2, 0x1E11, 0x1DFF, 0x1D49, 0x1D36, 0x1C73, 0x1B9C, + 0x1AC2, 0x1F6C, 0x1EC6, 0x1EB5, 0x1DFE, 0x1D48, 0x1D2F, 0x1C72, + 0x2022, 0x1F7C, 0x1F6B, 0x1EC5, 0x1EB3, 0x1E03, 0x1DF1, 0x1D3A, + 0x1D28, 0x1C5E, 0x1B94, 0x1ABA, 0x19CA, 0x1EB8, 0x1E07, 0x1DF5, + 0x1D39, 0x1D27, 0x2025, 0x1F84, 0x1F73, 0x1F62, 0x1EBC, 0x1EAB, + 0x1DF4, 0x1D3E, 0x1D2C, 0x1C69, 0x1C56, 0x1B85, 0x1AAC, 0x19C2, + 0x18CD, 0x1DF9, 0x1DE7, 0x1D31, 0x1D1E, 0x201C, 0x1F81, 0x1F70, + 0x1F5F, 0x1EAE, 0x1E04, 0x1DF2, 0x1D30, 0x1D1D, 0x1C61, 0x1C4E, + 0x1B76, 0x1AA4, 0x19B3, 0x18BE, 0x1DF6, 0x1DE4, 0x1D22, 0x1D10, + 0x2018, 0x1F78, 0x1F67, 0x1EB7, 0x1EA5, 0x1DFB, 0x1DE9, 0x1DD7, + 0x1D1B, 0x1C52, 0x1C45, 0x1B75, 0x1A95, 0x19AC, 0x18B6, 0x179C, + 0x1DDC, 0x1D20, 0x2025, 0x2015, 0x1F6F, 0x1F5E, 0x1EB9, 0x1EA8, + 0x1E96, 0x1DE7, 0x1DD5, 0x1D12, 0x1C50, 0x1C3D, 0x1B73, 0x1B5F, + 0x1A7F, 0x1995, 0x1795, 0x165F, 0x1D1E, 0x2027, 0x2016, 0x1F71, + 0x1F60, 0x1EB6, 0x1EA5, 0x1E93, 0x1DDE, 0x1DCC, 0x1D10, 0x1D03, + 0x1C41, 0x1B72, 0x1B5E, 0x1A7E, 0x1995, 0x1898, 0x177D, 0x1DCA, + 0x2023, 0x2018, 0x1F73, 0x1F62, 0x1F52, 0x1EA8, 0x1E96, 0x1DE1, + 0x1DCF, 0x1D14, 0x1D01, 0x1C3F, 0x1C2C, 0x1B5C, 0x1A7D, 0x1994, + 0x197E, 0x1881, 0x1640, 0x2025, 0x2014, 0x1F70, 0x1F5F, 0x1F4E, + 0x1EA4, 0x1E93, 0x1DE4, 0x1DD2, 0x1DC0, 0x1D05, 0x1C43, 0x1C30, + 0x1B61, 0x1B4D, 0x1A67, 0x197E, 0x1881, 0x176E, 0x1D16, 0x201B, + 0x200B, 0x1F66, 0x1F5B, 0x1F4A, 0x1EA1, 0x1E8F, 0x1DD5, 0x1DC3, + 0x1D08, 0x1CF6, 0x1C34, 0x1C21, 0x1B52, 0x1B3E, 0x1A58, 0x196E, + 0x186A, 0x1DC2, 0x2022, 0x2012, 0x1F6E, 0x1F63, 0x1F52, 0x1E9D, + 0x1E8C, 0x1DDE, 0x1DCC, 0x1DBA, 0x1CFF, 0x1CF3, 0x1C25, 0x1C12, + 0x1B42, 0x1A64, 0x197C, 0x1966, 0x1DCA, 0x1DB8, 0x2019, 0x2008, + 0x1F6A, 0x1F59, 0x1F48, 0x1E9A, 0x1E8E, 0x1E7D, 0x1DC9, 0x1DB7, + 0x1CFC, 0x1CEA, 0x1C23, 0x1C10, 0x1B3A, 0x1A63, 0x1E8C, 0x1E7B, + 0x1DC1, 0x1DAF, 0x2014, 0x200A, 0x1F61, 0x1F50, 0x1F44, 0x1E96, + 0x1E85, 0x1DD1, 0x1DBF, 0x1DAE, 0x1CF3, 0x1CE1, 0x1C1A, 0x1C07, + 0x1B31, 0x1A53, 0x1A3F, 0x1DD5, 0x1DC3, 0x1DB2, 0x1CF2, 0x1CDF, + 0x1C19, 0x1C05, 0x1B30, 0x1E98, 0x1E87, 0x1E75, 0x1DC2, 0x1DB0, + 0x1CF0, 0x1CDE, 0x1C17, 0x1C04, 0x1B2F, 0x1A52, 0x1A43, 0x1DCC, + 0x1DBA, 0x1DA8, 0x1CEF, 0x1CE2, 0x1C1C, 0x1C09, 0x1B34, 0x1B20, + 0x1A43, 0x1E77, 0x1DBE, 0x1DAC, 0x1CF3, 0x1CE1, 0x1C1B, 0x1C08, + 0x1B33, 0x1B1F, 0x1A42, 0x1A2D, 0x1DBD, 0x1DAB, 0x1D9F, 0x1CD9, + 0x1CD3, 0x1C00, 0x1B32, 0x1B1E, 0x1A41, 0x1A2C, 0x1DC1, 0x1DAF, + 0x1CF0, 0x1CE4, 0x1CD1, 0x1C0B, 0x1BF8, 0x1B24, 0x1B10, 0x1A32, + 0x1DC5, 0x1DB3, 0x1DA1, 0x1CE8, 0x1CD6, 0x1C10, 0x1BFD, 0x1B23, + 0x1B0F, 0x1A31, 0x1A1C, 0x1DB7, 0x1DA5, 0x1CEC, 0x1CDA, 0x1CC8, + 0x1BFC, 0x1B28, 0x1B14, 0x1A37, 0x1E6D, 0x1DBB, 0x1DA9, 0x1D97, + 0x1CD9, 0x1CCC, 0x1C00, 0x1BED, 0x1B19, 0x1B05, 0x1A21, 0x193A, + 0x191D, 0x1D9B, 0x1CDD, 0x1CCB, 0x1C05, 0x1BF2, 0x1B25, 0x1B11, + 0x1A27, 0x1DC3, 0x1DB1, 0x1D9F, 0x1CE1, 0x1CD5, 0x1CC2, 0x1BF7, + 0x1BE4, 0x1B10, 0x1AFC, 0x1A1F, 0x192A, 0x1914, 0x1D98, 0x1CD9, + 0x1CC7, 0x1BFC, 0x1BE9, 0x1B15, 0x1B02, 0x1E76, 0x1DB9, 0x1DB3, + 0x1DA1, 0x1CDD, 0x1CCB, 0x1CBF, 0x1BF4, 0x1BE1, 0x1E90, 0x1E7F, + 0x1E6E, 0x1DB7, 0x1DA5, 0x1D93, 0x1CD6, 0x1F60, 0x1F50, 0x1F3F, + 0x1E94, 0x1E83, 0x1E72, 0x1DBB, 0x1DA9, 0x1D9D, 0x1CE0, 0x1CCD, + 0x1CBB, 0x1BF0, 0x1BDD, 0x1B0A, 0x1AF7, 0x1A13, 0x1DB2, 0x1DA1, + 0x1D95, 0x1CD2, 0x1CBF, 0x1F51, 0x1F45, 0x1E94, 0x1E83, 0x1E78, + 0x1E67, 0x1DB0, 0x1D9F, 0x1D8D, 0x1CD0, 0x1CBD, 0x1BF3, 0x1BE0, + 0x1B0E, 0x1AFA, 0x1AE6, 0x1A03, 0x1916, 0x1D9D, 0x1CDA, 0x1CC7, + 0x1CB5, 0x1BF1, 0x1F3B, 0x1E8A, 0x1E79, 0x1E6E, 0x1DB8, 0x1DA6, + 0x1D94, 0x1CCC, 0x1CC6, 0x1CB3, 0x1BE3, 0x1BD0, 0x1AFE, 0x1AEA, + 0x1A07, 0x19F3, 0x1905, 0x18F0, 0x1CCA, 0x1CB8, 0x1CB1, 0x1BE1, + 0x1E91, 0x1E80, 0x1E6F, 0x1DB9, 0x1DAD, 0x1D9C, 0x1CD4, 0x1CC8, + 0x1CBB, 0x1BEC, 0x1BD9, 0x1BC6, 0x1AF4, 0x1AE0, 0x19F7, 0x19E3, + 0x18F5, 0x18DF, 0x17D6, 0x1CB9, 0x1BEA, 0x1BD7, 0x1E8B, 0x1E7A, + 0x1E6F, 0x1DAE, 0x1DA3, 0x1D91, 0x1CD5, 0x1CC3, 0x1CB1, 0x1BE2, + 0x1BCF, 0x1B04, 0x1AF0, 0x1ADD, 0x19F4, 0x19E0, 0x18F3, 0x18DD, + 0x17CD, 0x16AC, 0x1565, 0x1BD3, 0x1E86, 0x1E7B, 0x1E6A, 0x1DB0, + 0x1D9E, 0x1D8D, 0x1CD1, 0x1CBF, 0x1CB3, 0x1BE4, 0x1BD1, 0x1BBE, + 0x1AE6, 0x1AD3, 0x19F8, 0x19E4, 0x18E9, 0x18D4, 0x17CB, 0x16AB, + 0x1693, 0x13FA, 0x1BC2, 0x1E7B, 0x1E6A, 0x1DB0, 0x1DA5, 0x1D93, + 0x1CD3, 0x1CC0, 0x1CAE, 0x1BE0, 0x1BD3, 0x1BC1, 0x1AE9, 0x1AD6, + 0x19EE, 0x19DA, 0x18E7, 0x18D1, 0x17C9, 0x17B3, 0x1692, 0x1554, + 0x13DF, 0x1E81, 0x1E70, 0x1DB7, 0x1DA5, 0x1D9A, 0x1CD4, 0x1CC8, + 0x1CB6, 0x1CA4, 0x1BDC, 0x1BC9, 0x1AF2, 0x1ADF, 0x1ACB, 0x19DD, + 0x19C9, 0x18D6, 0x18C0, 0x17B8, 0x1698, 0x1680, 0x153A, 0x1223, + 0x1ADD, 0x1DBD, 0x1DAC, 0x1D9A, 0x1D89, 0x1CC9, 0x1CBD, 0x1CAB, + 0x1BDD, 0x1BD1, 0x1BBE, 0x1AE2, 0x1AD4, 0x1AC1, 0x19DA, 0x19C6, + 0x18D3, 0x18BE, 0x17AF, 0x168F, 0x1677, 0x1528, 0x1AEC, 0x1AD9, + 0x1DB8, 0x1DA6, 0x1D95, 0x1CD6, 0x1CCA, 0x1CB8, 0x1CA6, 0x1BD9, + 0x1BC6, 0x1BB4, 0x1ADD, 0x1ACA, 0x1AB6, 0x19D0, 0x19BB, 0x18C9, + 0x18B3, 0x17A5, 0x167E, 0x1666, 0x151F, 0x1AE2, 0x1ACE, 0x1DB2, + 0x1DA6, 0x1D9B, 0x1CD7, 0x1CC5, 0x1CB3, 0x1CA1, 0x1BD4, 0x1BC2, + 0x1BAF, 0x1AE0, 0x1ACC, 0x1AB9, 0x19D3, 0x19BE, 0x18C6, 0x18B1, + 0x17A3, 0x1EAD, 0x1E9C, 0x1E8B, 0x1E80, 0x1DC3, 0x1DB2, 0x1DA7, + 0x1D9B, 0x1CD7, 0x1CCB, 0x1CB9, 0x1CA8, 0x1BDC, 0x1BC9, 0x1BB6, + 0x1ADB, 0x1ACF, 0x1ABB, 0x19CF, 0x19C2, 0x18CA, 0x18B5, 0x17A8, + 0x1791, 0x1663, 0x1E96, 0x1E85, 0x1DCF, 0x1DBD, 0x1DAC, 0x1DA1, + 0x1CDE, 0x1CCC, 0x1CBA, 0x1CAE, 0x1BDD, 0x1BD0, 0x1BBE, 0x1AE3, + 0x1AD0, 0x1AC3, 0x19D2, 0x19CB, 0x19B7, 0x18B8, 0x18A3, 0x1796, + 0x177F, 0x1651, 0x1BB5, 0x1AE1, 0x1DC8, 0x1DB7, 0x1DA6, 0x1D9B, + 0x1CD8, 0x1CC6, 0x1CB4, 0x1CA8, 0x1BD1, 0x1BC5, 0x1BB9, 0x1AD8, + 0x1AC5, 0x1AB8, 0x19D4, 0x19C0, 0x19AC, 0x18AE, 0x1898, 0x1784, + 0x177D, 0x164F, 0x1503, 0x1AD6, 0x1AC3, 0x1DB1, 0x1DAB, 0x1CE4, + 0x1CD2, 0x1CC0, 0x1CB5, 0x1BDF, 0x1BD8, 0x1BC6, 0x1BB3, 0x1ADA, + 0x1AC7, 0x1AB4, 0x19C9, 0x19B5, 0x19A1, 0x18B1, 0x189C, 0x1789, + 0x1772, 0x164D, 0x1635, 0x14E8, 0x1ACB, 0x1AB7, 0x19CE, 0x1CE4, + 0x1CD2, 0x1CC6, 0x1CB5, 0x1BE5, 0x1BD3, 0x1BC0, 0x1BB4, 0x1AD5, + 0x1AC2, 0x1ABB, 0x1AA8, 0x19BE, 0x19AA, 0x18AD, 0x189F, 0x188A, + 0x176F, 0x1643, 0x162B, 0x14E7, 0x1AC6, 0x1AB3, 0x1AAC, 0x19BC, + 0x19A8, 0x1CCC, 0x1CC0, 0x1CAE, 0x1BDF, 0x1BCD, 0x1BBA, 0x1ADD, + 0x1AD0, 0x1ABC, 0x1AB0, 0x19B9, 0x19AC, 0x18B0, 0x189B, 0x1886, + 0x177B, 0x1764, 0x1639, 0x1621, 0x14D4, 0x1AC0, 0x1AB4, 0x19BE, + 0x19B7, 0x19A3, 0x1CC5, 0x1CBA, 0x1BE0, 0x1BD4, 0x1BC7, 0x1BBB, + 0x1AD7, 0x1AC4, 0x1AB1, 0x19CF, 0x19BB, 0x19A7, 0x1993, 0x1897, + 0x1882, 0x1777, 0x1761, 0x162E, 0x1616, 0x1ACE, 0x1AC1, 0x1AAE, + 0x19C0, 0x19AC, 0x1997, 0x18A3, 0x1CB9, 0x1BE6, 0x1BD3, 0x1BC1, + 0x1BB5, 0x1AD2, 0x1ABF, 0x1AB8, 0x1AA5, 0x19B6, 0x19A2, 0x1995, + 0x1893, 0x187E, 0x176D, 0x1756, 0x162B, 0x1613, 0x1ACF, 0x1ABC, + 0x1AA9, 0x19C8, 0x19B4, 0x19A0, 0x189E, 0x1BF7, 0x1BE5, 0x1BD3, + 0x1BC7, 0x1AE5, 0x1AD9, 0x1AC6, 0x1AB2, 0x1AAC, 0x19B8, 0x19AA, + 0x1996, 0x1895, 0x1880, 0x1872, 0x175A, 0x1744, 0x1618, 0x1AD5, + 0x1AC9, 0x1AB6, 0x19C3, 0x19B5, 0x19A8, 0x1994, 0x188C, 0x1BF1, + 0x1BDF, 0x1BCD, 0x1BC1, 0x1ADF, 0x1AD2, 0x1ABF, 0x1AAC, 0x19C6, + 0x19B2, 0x199E, 0x189F, 0x188A, 0x187B, 0x1765, 0x174E, 0x1BBD, + 0x1ADC, 0x1ACF, 0x1AC3, 0x1AB0, 0x19BD, 0x19A9, 0x199C, 0x189C, + 0x1BF6, 0x1BF0, 0x1BDE, 0x1BD2, 0x1BC0, 0x1ADF, 0x1ACC, 0x1AB9, + 0x19D4, 0x19C0, 0x19AD, 0x1999, 0x1899, 0x1884, 0x186F, 0x1759, + 0x1752, 0x173B, 0x160A, 0x15F2, 0x1ABC, 0x19CB, 0x1CFA, 0x1CEE, + 0x1CE2, 0x1C0D, 0x1C01, 0x1BEF, 0x1BDD, 0x1BD1, 0x1AF2, 0x1ADF, + 0x1ACC, 0x1AB9, 0x1AB3, 0x19C1, 0x19B4, 0x19A0, 0x18A2, 0x188D, + 0x1878, 0x1863, 0x174D, 0x173E, 0x160E, 0x15F7, 0x149E, 0x1AB6, + 0x19C5, 0x19B1, 0x1CE6, 0x1C17, 0x1C06, 0x1BF4, 0x1BE8, 0x1BD6, + 0x1AF7, 0x1AE4, 0x1AD8, 0x1AC5, 0x1AB2, 0x19C8, 0x19B5, 0x19A8, + 0x1994, 0x1896, 0x1881, 0x186C, 0x1750, 0x1749, 0x1732, 0x15FB, + 0x15E3, 0x1493, 0x19CC, 0x19BE, 0x19B1, 0x199E, 0x189A, 0x1C04, + 0x1BF2, 0x1BE6, 0x1BD4, 0x1AF0, 0x1AEA, 0x1AD7, 0x1AC5, 0x19D6, + 0x19C2, 0x19AE, 0x19A1, 0x18A5, 0x1890, 0x187B, 0x1866, 0x1753, + 0x173D, 0x1726, 0x15EF, 0x15D8, 0x1490, 0x1476, 0x19B8, 0x19AB, + 0x1997, 0x1894, 0x1886, 0x1BFC, 0x1BEA, 0x1B08, 0x1AFC, 0x1AE9, + 0x1AD6, 0x1AC4, 0x19D5, 0x19C2, 0x19B5, 0x19A1, 0x189F, 0x188A, + 0x187D, 0x186E, 0x174E, 0x1738, 0x1730, 0x15F3, 0x15DC, 0x1485, + 0x146B, 0x19C5, 0x19B1, 0x19A4, 0x18A3, 0x188E, 0x1879, 0x186C, + 0x1B13, 0x1B01, 0x1AEE, 0x1AE2, 0x1ACF, 0x19E2, 0x19CF, 0x19BB, + 0x19AE, 0x199B, 0x1899, 0x1884, 0x1876, 0x1862, 0x1748, 0x1739, + 0x1723, 0x15E7, 0x15CF, 0x1481, 0x1468, 0x19BE, 0x19AB, 0x199E, + 0x1896, 0x1888, 0x1873, 0x1865, 0x1B12, 0x1AFF, 0x1AED, 0x1AE0, + 0x1ACE, 0x19E1, 0x19CE, 0x19C1, 0x19AE, 0x18A7, 0x1892, 0x1885, + 0x1870, 0x1862, 0x174A, 0x1734, 0x171E, 0x15EA, 0x15D3, 0x1475, + 0x19D1, 0x19BD, 0x19AA, 0x18AA, 0x1896, 0x1881, 0x1874, 0x1866, + 0x1740, 0x1B03, 0x1AF1, 0x1AE5, 0x19F4, 0x19E0, 0x19CD, 0x19C6, + 0x19B3, 0x19A6, 0x18A0, 0x188B, 0x187E, 0x1869, 0x174B, 0x173D, + 0x1727, 0x15E5, 0x15D6, 0x15BE, 0x19D6, 0x19C9, 0x19B6, 0x18B1, + 0x18A3, 0x188F, 0x187B, 0x186D, 0x174F, 0x1B13, 0x1B01, 0x1AEF, + 0x19FF, 0x19F2, 0x19DF, 0x19CC, 0x19BF, 0x19AC, 0x18AD, 0x1899, + 0x1885, 0x1877, 0x1754, 0x173E, 0x1730, 0x1721, 0x15E8, 0x19FB, + 0x19E8, 0x19D5, 0x19C8, 0x19B5, 0x18B7, 0x18A3, 0x188F, 0x1881, + 0x186D, 0x1B23, 0x1B17, 0x1B05, 0x1AF2, 0x19FD, 0x19F1, 0x19E4, + 0x19D7, 0x19C4, 0x19B0, 0x18AD, 0x1899, 0x188B, 0x1877, 0x175C, + 0x1746, 0x1730, 0x171B, 0x15E2, 0x15D3, 0x15BC, 0x1461, 0x1448, + 0x142E, 0x18B7, 0x1C43, 0x1B56, 0x1B50, 0x1B3E, 0x1B32, 0x1B20, + 0x1B0E, 0x1B02, 0x1A0E, 0x19FB, 0x19EF, 0x19DC, 0x19C8, 0x18C7, + 0x18B3, 0x18A5, 0x1891, 0x187D, 0x1763, 0x1755, 0x173F, 0x172A, + 0x171B, 0x15E4, 0x15CD, 0x15B6, 0x1454, 0x143B, 0x12A3, 0x1287, + 0x10AE, 0x1B5F, 0x1B53, 0x1B41, 0x1B2F, 0x1B23, 0x1B11, 0x1A19, + 0x1A12, 0x19FF, 0x19F3, 0x19E0, 0x19CC, 0x18C6, 0x18B1, 0x18A4, + 0x1890, 0x1889, 0x1875, 0x1755, 0x173F, 0x1731, 0x171B, 0x15DE, + 0x15C7, 0x15B0, 0x144F, 0x143F, 0x1425, 0x128D, 0x1271, 0x108D, + 0x0E03, 0x1B49, 0x1B37, 0x1B2B, 0x1A35, 0x1A29, 0x1A16, 0x1A0F, + 0x19FC, 0x19E9, 0x19DD, 0x18D8, 0x18C4, 0x18B0, 0x18A3, 0x188E, + 0x187A, 0x1763, 0x174D, 0x1738, 0x172A, 0x15E8, 0x15D0, 0x15B9, + 0x15B1, 0x144A, 0x1431, 0x1418, 0x1277, 0x10A1, 0x1081, 0x0DF8, + 0x175F, 0x1B3F, 0x1A4B, 0x1A38, 0x1A2C, 0x1A19, 0x1A13, 0x1A00, + 0x19ED, 0x18E3, 0x18D6, 0x18C2, 0x18AE, 0x18A1, 0x1893, 0x1770, + 0x1762, 0x174D, 0x1737, 0x1729, 0x15E8, 0x15D1, 0x15C2, 0x15AB, + 0x1445, 0x142C, 0x141B, 0x127D, 0x1260, 0x1080, 0x1054, 0x176C, + 0x1757, 0x1A54, 0x1A41, 0x1A3A, 0x1A28, 0x1A1C, 0x1A09, 0x19FC, + 0x18F4, 0x18E0, 0x18CD, 0x18C0, 0x18AC, 0x189F, 0x177D, 0x1768, + 0x175A, 0x1745, 0x172F, 0x15F8, 0x15E1, 0x15CA, 0x15BB, 0x1450, + 0x1437, 0x141E, 0x128B, 0x1278, 0x125C, 0x1069, 0x1779, 0x176B, + 0x1756, 0x1A5C, 0x1A49, 0x1A3D, 0x1A2A, 0x1A1E, 0x1A11, 0x1905, + 0x18F8, 0x18E4, 0x18D0, 0x18C3, 0x18B0, 0x1791, 0x1782, 0x1775, + 0x175F, 0x174A, 0x173C, 0x15F8, 0x15E1, 0x15D2, 0x15BB, 0x15A4, + 0x1441, 0x1428, 0x140F, 0x1274, 0x1258, 0x18AA, 0x1785, 0x1770, + 0x175B, 0x1A69, 0x1A57, 0x1A4B, 0x1A38, 0x1A2C, 0x1922, 0x190E, + 0x1901, 0x18EE, 0x18E7, 0x18D4, 0x18C7, 0x18B3, 0x1788, 0x1780, + 0x176B, 0x175E, 0x1748, 0x173B, 0x15F0, 0x15D9, 0x15CA, 0x15B4, + 0x15AC, 0x143A, 0x1422, 0x1411, 0x18CE, 0x18C1, 0x1797, 0x178A, + 0x1775, 0x1A7D, 0x1A71, 0x1A64, 0x1A58, 0x1A46, 0x1937, 0x192B, + 0x1917, 0x190A, 0x18F7, 0x18F0, 0x18DD, 0x18D0, 0x17A7, 0x179A, + 0x1785, 0x1777, 0x1762, 0x174D, 0x160D, 0x15FE, 0x15E8, 0x15D1, + 0x15C2, 0x1454, 0x190B, 0x18FF, 0x18EB, 0x18DE, 0x17B7, 0x17A9, + 0x1795, 0x1787, 0x1772, 0x175D, 0x1756, 0x1610, 0x15FA, 0x194D, + 0x1939, 0x1933, 0x1920, 0x1913, 0x18FF, 0x18F3, 0x18DF, 0x17C0, + 0x17AB, 0x179D, 0x1789, 0x177B, 0x1766, 0x1751, 0x160C, 0x15FD, + 0x15E7, 0x15DF, 0x15C8, 0x145D, 0x1445, 0x142C, 0x18FA, 0x18ED, + 0x17C1, 0x17B4, 0x179F, 0x1792, 0x177D, 0x176F, 0x175A, 0x1616, + 0x1600, 0x15F1, 0x15DA, 0x1941, 0x192E, 0x1921, 0x190E, 0x1901, + 0x17DE, 0x17CA, 0x17B5, 0x17A8, 0x1793, 0x178C, 0x1777, 0x176A, + 0x1620, 0x160A, 0x15FB, 0x15E5, 0x15DD, 0x15C7, 0x1455, 0x143D, + 0x1424, 0x1414, 0x1267, 0x17C4, 0x17B7, 0x17A2, 0x1795, 0x1787, + 0x1779, 0x1631, 0x161B, 0x160C, 0x15F6, 0x15E0, 0x194E, 0x193B, + 0x192F, 0x191C, 0x17F5, 0x17E7, 0x17D3, 0x17BF, 0x17B8, 0x17AA, + 0x1796, 0x1781, 0x1774, 0x162C, 0x1616, 0x1607, 0x15F1, 0x15E2, + 0x15CC, 0x145D, 0x144D, 0x1434, 0x141C, 0x140C, 0x1258, 0x17C7, + 0x17B2, 0x17AB, 0x1797, 0x1789, 0x163D, 0x1627, 0x1618, 0x1602, + 0x15FB, 0x15E4, 0x1955, 0x1948, 0x1935, 0x180A, 0x17FD, 0x17E9, + 0x17E2, 0x17D5, 0x17C1, 0x17AC, 0x179F, 0x178A, 0x1646, 0x1630, + 0x1622, 0x160C, 0x15F6, 0x15EE, 0x15D8, 0x145C, 0x144C, 0x143C, + 0x142C, 0x1413, 0x1263, 0x1247, 0x17CF, 0x17BB, 0x17AD, 0x1799, + 0x1648, 0x1640, 0x162B, 0x161C, 0x1606, 0x197A, 0x1967, 0x1961, + 0x1833, 0x1826, 0x1812, 0x1805, 0x17F7, 0x17EA, 0x17D6, 0x17C9, + 0x17B5, 0x166D, 0x1658, 0x164A, 0x163B, 0x162C, 0x1616, 0x1601, + 0x15F2, 0x147A, 0x146A, 0x1452, 0x1443, 0x142A, 0x1412, 0x1264, + 0x1252, 0x17DD, 0x17C9, 0x17B5, 0x166E, 0x1660, 0x164B, 0x1635, + 0x1627, 0x199D, 0x1991, 0x1867, 0x185B, 0x1847, 0x183A, 0x1826, + 0x181F, 0x180C, 0x17FF, 0x17EB, 0x17DD, 0x17C9, 0x1685, 0x1677, + 0x1661, 0x164C, 0x163E, 0x1628, 0x161A, 0x160B, 0x15FC, 0x1480, + 0x1470, 0x1458, 0x1448, 0x1430, 0x1418, 0x1805, 0x17F8, 0x17E4, + 0x169B, 0x1686, 0x1678, 0x1663, 0x165B, 0x19D2, 0x19C0, 0x189A, + 0x188E, 0x187A, 0x1874, 0x1860, 0x1853, 0x1840, 0x1833, 0x181F, + 0x1818, 0x1805, 0x17F8, 0x16AA, 0x1695, 0x1687, 0x1678, 0x166A, + 0x1655, 0x18BA, 0x18AD, 0x189A, 0x188D, 0x1880, 0x1873, 0x1860, + 0x1853, 0x183F, 0x1838, 0x182C, 0x1818, 0x180B, 0x16B8, 0x16AA, + 0x1695, 0x1687, 0x1672, 0x166B, 0x165D, 0x1647, 0x1632, 0x1624, + 0x14AD, 0x1496, 0x1487, 0x146F, 0x1460, 0x1448, 0x1430, 0x1283, + 0x1268, 0x1257, 0x123C, 0x122A, 0x1013, 0x0FF4, 0x1681, 0x166B, + 0x165D, 0x1648, 0x163A, 0x18B1, 0x189E, 0x1891, 0x187E, 0x1877, + 0x186B, 0x1857, 0x184A, 0x1837, 0x16E9, 0x16DB, 0x16C7, 0x16C0, + 0x16AB, 0x169D, 0x1688, 0x167A, 0x1665, 0x1657, 0x164F, 0x14C8, + 0x14B9, 0x14A1, 0x1492, 0x147B, 0x1473, 0x145B, 0x144C, 0x128A, + 0x1279, 0x125E, 0x124D, 0x1232, 0x1016, 0x1001, 0x0FE2, 0x168F, + 0x167A, 0x166C, 0x1657, 0x14D9, 0x14C9, 0x14B2, 0x18A1, 0x189B, + 0x188E, 0x187B, 0x172C, 0x171F, 0x170B, 0x16FD, 0x16F6, 0x16E1, + 0x16D4, 0x16BF, 0x16B1, 0x169C, 0x168F, 0x1680, 0x1672, 0x14F0, + 0x14E1, 0x14CA, 0x14C3, 0x14AC, 0x149C, 0x1485, 0x1476, 0x145E, + 0x12A2, 0x1288, 0x1277, 0x125C, 0x124B, 0x1239, 0x1018, 0x0FF9, + 0x0FEF, 0x169C, 0x168E, 0x150F, 0x1500, 0x14E9, 0x14DA, 0x14C4, + 0x14B4, 0x1774, 0x1767, 0x1753, 0x1745, 0x1738, 0x1724, 0x171D, + 0x1708, 0x16FB, 0x16E6, 0x16D9, 0x16D2, 0x16BD, 0x16B0, 0x169B, + 0x151F, 0x1508, 0x14F9, 0x14EA, 0x14DB, 0x14C4, 0x14B5, 0x149E, + 0x148F, 0x1478, 0x12B8, 0x12A7, 0x128D, 0x127C, 0x126B, 0x1259, + 0x123F, 0x1019, 0x0FFB, 0x16C3, 0x1544, 0x152D, 0x1526, 0x1517, + 0x1501, 0x14F2, 0x14DB, 0x17A6, 0x1792, 0x1785, 0x1777, 0x176A, + 0x1756, 0x1749, 0x173C, 0x172E, 0x1721, 0x170C, 0x16FF, 0x16EA, + 0x16DD, 0x16D6, 0x154B, 0x1543, 0x152D, 0x151E, 0x1510, 0x14F9, + 0x14EA, 0x14D4, 0x14CC, 0x14B5, 0x14A6, 0x12DE, 0x12C5, 0x12B4, + 0x12AB, 0x1292, 0x1281, 0x1267, 0x1711, 0x1704, 0x1585, 0x156F, + 0x1560, 0x1551, 0x1543, 0x1534, 0x151E, 0x150F, 0x17DC, 0x17C8, + 0x17BB, 0x17B4, 0x17A1, 0x1794, 0x1780, 0x1773, 0x176C, 0x1758, + 0x174B, 0x1737, 0x172A, 0x1723, 0x1599, 0x158B, 0x1575, 0x156D, + 0x155F, 0x1549, 0x153B, 0x1524, 0x1516, 0x150E, 0x14F8, 0x14E9, + 0x14D3, 0x1313, 0x12FA, 0x12E9, 0x12D0, 0x12C0, 0x1769, 0x175C, + 0x174F, 0x15D1, 0x15BB, 0x15AD, 0x1598, 0x1589, 0x1582, 0x156C, + 0x155E, 0x1548, 0x1539, 0x1523, 0x151C, 0x150D, 0x14F7, 0x14E8, + 0x131C, 0x130B, 0x12F2, 0x12EA, 0x12D9, 0x12C0, 0x1773, 0x15F9, + 0x15E4, 0x15D6, 0x15C1, 0x15B3, 0x15AB, 0x1596, 0x1588, 0x1572, + 0x1564, 0x154E, 0x1546, 0x1538, 0x1522, 0x1513, 0x14FD, 0x1335, + 0x132C, 0x1314, 0x1303, 0x12EB, 0x12DA, 0x12C1, 0x12B0, 0x1605, + 0x15F0, 0x15E2, 0x15D4, 0x15C6, 0x15B8, 0x15A2, 0x1594, 0x1586, + 0x1577, 0x1569, 0x1553, 0x1545, 0x1536, 0x1520, 0x135D, 0x134D, + 0x1335, 0x1324, 0x130C, 0x12FC, 0x12F3, 0x12DA, 0x12CA, 0x12B1, + 0x160A, 0x15FB, 0x15ED, 0x15E0, 0x15CA, 0x15BC, 0x15B5, 0x15A0, + 0x1591, 0x157C, 0x156E, 0x1566, 0x1551, 0x1384, 0x1375, 0x1364, + 0x1354, 0x1344, 0x132C, 0x131C, 0x1303, 0x12F3, 0x12DA, 0x12D2, + 0x12C1, 0x12A8, 0x1614, 0x15FF, 0x15F1, 0x15DC, 0x15CE, 0x15C7, + 0x15B2, 0x15A4, 0x1596, 0x1580, 0x1579, 0x13AB, 0x139B, 0x1383, + 0x1374, 0x1363, 0x1353, 0x1344, 0x132B, 0x131B, 0x1303, 0x12F3, + 0x12EA, 0x12D1, 0x1633, 0x162C, 0x161F, 0x160A, 0x15FC, 0x15F5, + 0x15E0, 0x15D2, 0x15BD, 0x15AF, 0x15A8, 0x13D8, 0x13C9, 0x13B1, + 0x13A2, 0x139A, 0x1382, 0x1372, 0x135A, 0x134A, 0x1332, 0x132A, + 0x131A, 0x1302, 0x12F1, 0x12D9, 0x10A8, 0x163D, 0x1636, 0x1621, + 0x1614, 0x1606, 0x15F8, 0x15EA, 0x15DC, 0x140C, 0x1404, 0x13F5, + 0x13DE, 0x13CE, 0x13B7, 0x13A7, 0x139F, 0x1388, 0x1378, 0x1360, + 0x1351, 0x1339, 0x1329, 0x1320, 0x1691, 0x167C, 0x166F, 0x1668, + 0x1654, 0x1646, 0x1631, 0x162A, 0x161D, 0x1455, 0x143E, 0x142F, + 0x1420, 0x1411, 0x1402, 0x13EA, 0x13DB, 0x13D3, 0x13BC, 0x13AD, + 0x1395, 0x1386, 0x1376, 0x1366, 0x1356, 0x133E, 0x132E, 0x131F, + 0x10D8, 0x168B, 0x1685, 0x1670, 0x1663, 0x149C, 0x1494, 0x147E, + 0x146F, 0x1459, 0x144A, 0x1442, 0x142C, 0x141D, 0x140E, 0x13F7, + 0x13E7, 0x13E0, 0x13C8, 0x13B9, 0x13A2, 0x1392, 0x138A, 0x16FD, + 0x16F0, 0x16DC, 0x16D5, 0x16C8, 0x16B4, 0x14EF, 0x14E1, 0x14DA, + 0x14C4, 0x14B5, 0x14A7, 0x1490, 0x1489, 0x147A, 0x1464, 0x1455, + 0x1446, 0x1437, 0x1428, 0x1419, 0x1402, 0x13F3, 0x13EB, 0x13D4, + 0x13C5, 0x13AE, 0x139E, 0x1396, 0x1717, 0x1556, 0x1548, 0x1532, + 0x1524, 0x151D, 0x1507, 0x14F9, 0x14EB, 0x14E3, 0x14CD, 0x14BF, + 0x14A9, 0x149A, 0x1493, 0x147D, 0x146E, 0x145F, 0x1450, 0x1441, + 0x1432, 0x141C, 0x140D, 0x1405, 0x13EE, 0x13DF, 0x13D0, 0x13B9, + 0x13B1, 0x1177, 0x115D, 0x114B, 0x1131, 0x111F, 0x110D, 0x10F2, + 0x10E9, 0x10CD, 0x10BB, 0x10A9, 0x108D, 0x107B, 0x105E, 0x104C, + 0x1042, 0x1495, 0x1486, 0x1478, 0x1468, 0x145A, 0x144B, 0x1435, + 0x142D, 0x141E, 0x1408, 0x13F9, 0x13EA, 0x11B2, 0x1198, 0x1186, + 0x116C, 0x158F, 0x1582, 0x156D, 0x155F, 0x1557, 0x1542, 0x1534, + 0x1526, 0x151F, 0x1509, 0x14FB, 0x14ED, 0x14DE, 0x14D0, 0x14C2, + 0x14AC, 0x14A4, 0x1496, 0x1480, 0x1471, 0x146A, 0x1454, 0x1445, + 0x1436, 0x11FB, 0x11E1, 0x11D1, 0x11C8, 0x11AE, 0x119D, 0x118C, + 0x1172, 0x1161, 0x1158, 0x113D, 0x112C, 0x111A, 0x10FF, 0x10EE, + 0x10DB, 0x10C9, 0x10B7, 0x109C, 0x108A, 0x0D69, 0x0D46, 0x0D3A, + 0x0D16, 0x14C2, 0x14B3, 0x14A5, 0x1496, 0x125A, 0x124A, 0x1239, + 0x1220, 0x1210, 0x1207, 0x11EE, 0x11DD, 0x11CD, 0x11B3, 0x11AA, + 0x15E0, 0x15D2, 0x15C4, 0x15B7, 0x15A9, 0x15A2, 0x158D, 0x1580, + 0x1572, 0x1564, 0x1556, 0x1548, 0x1541, 0x152C, 0x151E, 0x1516, + 0x1501, 0x12CE, 0x12BE, 0x12A6, 0x1296, 0x128E, 0x1275, 0x1265, + 0x1255, 0x123C, 0x1234, 0x1223, 0x120A, 0x11FA, 0x11E9, 0x11D8, + 0x11C7, 0x11B7, 0x119D, 0x118C, 0x1183, 0x1169, 0x1158, 0x1147, + 0x112D, 0x111B, 0x1112, 0x10F8, 0x10E6, 0x0DC7, 0x0DA5, 0x0D8F, + 0x0D6C, 0x1316, 0x12FE, 0x12EF, 0x12DF, 0x12C7, 0x12BF, 0x12AF, + 0x1297, 0x1287, 0x127F, 0x126F, 0x1257, 0x1246, 0x1236, 0x1680, + 0x1679, 0x1666, 0x1659, 0x1652, 0x142E, 0x141F, 0x1410, 0x1401, + 0x13F3, 0x13E4, 0x13D4, 0x13C6, 0x13B7, 0x13A8, 0x1398, 0x1389, + 0x137A, 0x1363, 0x135B, 0x134C, 0x133D, 0x132D, 0x131D, 0x130E, + 0x12F7, 0x12EF, 0x12DF, 0x12CF, 0x12B7, 0x12AF, 0x12A0, 0x1287, + 0x1278, 0x1268, 0x125F, 0x1247, 0x1237, 0x1227, 0x1216, 0x1205, + 0x11F5, 0x11DC, 0x11D3, 0x11C3, 0x11AA, 0x1199, 0x1188, 0x117F, + 0x0E52, 0x13E1, 0x13CB, 0x13C3, 0x13B4, 0x139E, 0x138F, 0x1387, + 0x1378, 0x1361, 0x1359, 0x134A, 0x133B, 0x1324, 0x156D, 0x1558, + 0x1551, 0x1544, 0x1536, 0x1528, 0x151A, 0x150C, 0x1505, 0x14F0, + 0x14E2, 0x14DB, 0x14CD, 0x14B7, 0x14B0, 0x14A2, 0x1494, 0x1485, + 0x11F5, 0x11EC, 0x0EC0, 0x0EAB, 0x0E97, 0x0E78, 0x0E63, 0x0E59, + 0x0E39, 0x0E24, 0x0E0F, 0x0DEE, 0x0DD9, 0x0DC3, 0x0DA2, 0x0D97, + 0x0D81, 0x0D5F, 0x0D48, 0x0D26, 0x0D0F, 0x0CF8, 0x1338, 0x1329, + 0x1321, 0x1311, 0x12FA, 0x12F2, 0x12E3, 0x12D3, 0x12BC, 0x152F, + 0x1521, 0x150C, 0x1505, 0x14F7, 0x14F0, 0x14DB, 0x14CD, 0x14C6, + 0x14B8, 0x14A3, 0x149C, 0x148D, 0x147F, 0x1471, 0x1462, 0x145B, + 0x144D, 0x1437, 0x1430, 0x1421, 0x1413, 0x1404, 0x13F5, 0x13E7, + 0x13DF, 0x13C9, 0x13BA, 0x13B3, 0x13A4, 0x138E, 0x1386, 0x1377, + 0x1368, 0x1360, 0x134A, 0x133B, 0x1333, 0x1029, 0x100E, 0x1004, + 0x0FF2, 0x0FE0, 0x0FC4, 0x0FB1, 0x0FA7, 0x0F8B, 0x0F78, 0x0F65, + 0x0F52, 0x0F3E, 0x0F2B, 0x0F17, 0x0EFA, 0x0EE6, 0x0EDC, 0x0EC8, + 0x0EAA, 0x0E96, 0x0E82, 0x0E63, 0x0E58, 0x0E44, 0x0E24, 0x0E0F, + 0x0DFA, 0x0DDA, 0x0DC5, 0x0DBA, 0x0DA4, 0x0D83, 0x0D6D, 0x0D4C, + 0x0D36, 0x0691, 0x065D, 0x10C0, 0x10AE, 0x10A5, 0x108B, 0x1079, + 0x1067, 0x1055, 0x1043, 0x134A, 0x133B, 0x132C, 0x1324, 0x1315, + 0x12FE, 0x12F6, 0x12E7, 0x12D8, 0x12D0, 0x12B8, 0x12A9, 0x12A1, + 0x1291, 0x127A, 0x1272, 0x1262, 0x1252, 0x1242, 0x1232, 0x1222, + 0x121A, 0x1202, 0x11F2, 0x11EA, 0x11D9, 0x11C9, 0x11B8, 0x11A8, + 0x1198, 0x118F, 0x1176, 0x1166, 0x1155, 0x114D, 0x1133, 0x1122, + 0x111A, 0x1109, 0x10EF, 0x10DE, 0x10D5, 0x10C4, 0x10AA, 0x10A1, + 0x1090, 0x107E, 0x1063, 0x105A, 0x1049, 0x1037, 0x1025, 0x1013, + 0x1001, 0x0FEF, 0x0FE5, 0x0FCA, 0x0FB7, 0x0FA5, 0x0F9B, 0x0F7F, + 0x0F6C, 0x0F5A, 0x0F47, 0x0F33, 0x0F20, 0x0F0D, 0x0EFA, 0x0EE6, + 0x0ED2, 0x0EBF, 0x0EAB, 0x0E8D, 0x0E83, 0x0E6F, 0x0E50, 0x0E3C, + 0x0E27, 0x11E9, 0x11E1, 0x11D1, 0x11C1, 0x11B0, 0x11A0, 0x1190, + 0x14AB, 0x149D, 0x148F, 0x1488, 0x147A, 0x1472, 0x145D, 0x1456, + 0x1448, 0x1441, 0x1433, 0x1424, 0x1416, 0x140E, 0x1400, 0x13F9, + 0x13E3, 0x13DC, 0x13CD, 0x13C6, 0x13B8, 0x13A9, 0x139A, 0x1393, + 0x1384, 0x137C, 0x1366, 0x135F, 0x1350, 0x1341, 0x133A, 0x1323, + 0x131B, 0x130C, 0x1305, 0x12F6, 0x12EE, 0x12D7, 0x12CF, 0x12C0, + 0x12B1, 0x12A9, 0x1292, 0x128A, 0x127B, 0x1273, 0x1263, 0x124C, + 0x1244, 0x1234, 0x122C, 0x121C, 0x120C, 0x11FC, 0x11ED, 0x11E4, + 0x05E0, 0x11C4, 0x11B4, 0x11A4, 0x119C, 0x14F1, 0x14EA, 0x14DC, + 0x14D5, 0x14C7, 0x14B9, 0x14B2, 0x14A4, 0x149D, 0x1490, 0x1481, + 0x1474, 0x146C, 0x1465, 0x1457, 0x1450, 0x143B, 0x1434, 0x1426, + 0x141E, 0x1417, 0x1409, 0x13FA, 0x13EC, 0x13E5, 0x13D7, 0x13CF, + 0x13C8, 0x13B2, 0x13AB, 0x139C, 0x1395, 0x1387, 0x1378, 0x1369, + 0x1361, 0x135A, 0x134B, 0x1344, 0x132D, 0x1326, 0x1317, 0x130F, + 0x1301, 0x12F9, 0x12E2, 0x12DB, 0x12CC, 0x12C4, 0x12B5, 0x12AD, + 0x1296, 0x128E, 0x127F, 0x1277, 0x1268, 0x1258, 0x1249, 0x1241, + 0x1231, 0x1229, 0x121A, 0x0D4C, 0x0D36, 0x0D2B, 0x0D0A, 0x0CF4, + 0x0CDE, 0x0CD3, 0x0CB1, 0x0C9B, 0x0C84, 0x0C6D, 0x0C61, 0x0C3E, + 0x0C27, 0x0C0F, 0x0C03, 0x0BDF, 0x0BC6, 0x0BAE, 0x0B95, 0x0B70, + 0x0B63, 0x0B4A, 0x0B30, 0x0B16, 0x0AEF, 0x0AD4, 0x0AC7, 0x0AAC, + 0x0A83, 0x0A67, 0x0A4C, 0x0A21, 0x0A04, 0x09F6, 0x09D8, 0x09AC, + 0x098D, 0x096F, 0x0950, 0x0920, 0x0900, 0x08E0, 0x08CF, 0x089C, + 0x087A, 0x0857, 0x0822, 0x07FD, 0x07D8, 0x079F, 0x0777, 0x074F, + 0x0711, 0x06E6, 0x06A3, 0x0675, 0x065D, 0x0614, 0x05E1, 0x0590, + 0x0558, 0x0E55, 0x0E41, 0x0E2D, 0x131F, 0x1318, 0x1301, 0x12FA, + 0x12F2, 0x12E3, 0x12DC, 0x12D4, 0x12BD, 0x12B6, 0x12A7, 0x129F, + 0x1297, 0x1288, 0x1280, 0x1271, 0x1262, 0x125A, 0x1252, 0x1243, + 0x123B, 0x1233, 0x121C, 0x1214, 0x1204, 0x11FC, 0x11F4, 0x11E5, + 0x11DD, 0x11CD, 0x11BD, 0x11B5, 0x11A5, 0x119D, 0x1195, 0x117D, + 0x1174, 0x1164, 0x115C, 0x1154, 0x1144, 0x113B, 0x1123, 0x111B, + 0x1112, 0x1102, 0x10F9, 0x10E9, 0x10E0, 0x10CF, 0x10BF, 0x10B6, + 0x10A6, 0x109D, 0x108C, 0x1084, 0x1072, 0x1061, 0x1058, 0x1047, + 0x103F, 0x102E, 0x1025, 0x100B, 0x1002, 0x0FF9, 0x0FE7, 0x0FDE, + 0x0FCD, 0x0FC4, 0x0FA9, 0x0FA0, 0x0F8E, 0x0F85, 0x0F73, 0x0F6A, + 0x0F58, 0x0F45, 0x0F33, 0x0F29, 0x0F17, 0x0F0D, 0x0EFB, 0x0EF1, + 0x0ED5, 0x0ECC, 0x0EB9, 0x0EAF, 0x0E9C, 0x0E92, 0x0E7F, 0x0E6C, + 0x0E58, 0x0E4F, 0x0E3B, 0x0E31, 0x0E1D, 0x0E13, 0x0DF5, 0x0DEB, + 0x0DD7, 0x0DC3, 0x0DB9, 0x0DA5, 0x0D9A, 0x0D7B, 0x0D71, 0x0D5C, + 0x0D47, 0x0D3D, 0x0D28, 0x0D1D, 0x0CFD, 0x0CF2, 0x0CDC, 0x0CC7, + 0x0CBB, 0x0CA6, 0x0C84, 0x0C79, 0x0C63, 0x0C57, 0x0C41, 0x0C2A, + 0x133B, 0x132C, 0x1325, 0x131D, 0x1316, 0x130F, 0x1307, 0x1300, + 0x12F8, 0x12F1, 0x12E2, 0x12DA, 0x12D2, 0x12CB, 0x12C3, 0x12BC, + 0x12B4, 0x12AC, 0x129D, 0x1296, 0x128E, 0x1286, 0x127F, 0x1277, + 0x126F, 0x1268, 0x1260, 0x1250, 0x1249, 0x1241, 0x1239, 0x1231, + 0x1229, 0x1222, 0x121A, 0x1212, 0x120A, 0x11FA, 0x11F3, 0x11EB, + 0x11E3, 0x11DB, 0x11D3, 0x11CB, 0x11C3, 0x11BB, 0x11AB, 0x11A3, + 0x119B, 0x1193, 0x118B, 0x1183, 0x117B, 0x1173, 0x116B, 0x115A, + 0x1152, 0x114A, 0x1142, 0x113A, 0x1131, 0x1129, 0x1121, 0x1119, + 0x1111, 0x1100, 0x10F8, 0x10EF, 0x10E7, 0x10DF, 0x10D6, 0x10CE, + 0x10C6, 0x10BD, 0x10B5, 0x10A4, 0x109B, 0x1093, 0x108B, 0x1082, + 0x1079, 0x1071, 0x1068, 0x1060, 0x1057, 0x1046, 0x103D, 0x1035, + 0x102C, 0x1023, 0x101B, 0x1012, 0x1009, 0x1001, 0x0FF8, 0x0FEF, + 0x0FDD, 0x0FD5, 0x0FCC, 0x0FC3, 0x0FBA, 0x0FB1, 0x0FA8, 0x0F9F, + 0x0F96, 0x0F8D, 0x0F7B, 0x0F72, 0x0F69, 0x0F60, 0x0F57, 0x0F4E, + 0x0F45, 0x0F3C, 0x0F32, 0x0F29, 0x0F20, 0x0F0D, 0x0F04, 0x0EFB, + 0x0EF2, 0x0EE8, 0x0EDF, 0x0ED6, 0x0ECC, 0x0EC3, 0x0EB9, 0x0EB0, + 0x0E9D, 0x0E93, 0x0E8A, 0x0E80, 0x0E77, 0x0E6D, 0x0E63, 0x0E5A, + 0x0E50, 0x0E46, 0x0E3D, 0x0E33, 0x0E1F, 0x0E15, 0x0E0C, 0x0E02, + 0x0DF8, 0x0DEE, 0x0DE4, 0x0DDA, 0x0DD0, 0x0DC6, 0x0DBC, 0x0DB2, + 0x0D9D, 0x0D93, 0x0D89, 0x0D7F, 0x0D75, 0x0D6A, 0x0D60, 0x0D56, + 0x0D4B, 0x0D41, 0x0D36, 0x0D2C, 0x0D21, 0x0D0C, 0x0D02, 0x0CF7, + 0x0CED, 0x0CE2, 0x0CD7, 0x0CCC, 0x0CC2, 0x0CB7, 0x0CAC, 0x0CA1, + 0x0C96, 0x0C8B, 0x0C75, 0x0C6A, 0x0C5F, 0x0C54, 0x0C49, 0x0C3E, + 0x0C32, 0x0C27, 0x0C1C, 0x0C11, 0x0C05, 0x0BFA, 0x0BEE, 0x0BD7, + 0x0BCC, 0x12A0, 0x1299, 0x1298, 0x1289, 0x1282, 0x1281, 0x1279, + 0x1272, 0x1271, 0x126A, 0x1269, 0x1262, 0x125A, 0x125A, 0x1252, + 0x1252, 0x1242, 0x123B, 0x123A, 0x1233, 0x1232, 0x122B, 0x1223, + 0x1222, 0x121B, 0x121A, 0x1213, 0x120B, 0x1203, 0x11FB, 0x11FB, + 0x11F3, 0x11EB, 0x11EB, 0x11E3, 0x11E2, 0x11DB, 0x11D3, 0x11D2, + 0x11CB, 0x11CA, 0x11BB, 0x11BA, 0x11B2, 0x11AA, 0x11AA, 0x11A2, + 0x11A2, 0x119A, 0x1192, 0x1191, 0x1189, 0x1189, 0x1181, 0x1179, + 0x1171, 0x1169, 0x1168, 0x1160, 0x1160, 0x1158, 0x1158, 0x1150, + 0x1148, 0x1147, 0x113F, 0x113F, 0x1137, 0x112E, 0x1126, 0x1126, + 0x111E, 0x1116, 0x1115, 0x110D, 0x110D, 0x1104, 0x1104, 0x10FC, + 0x10FB, 0x10F3, 0x10F3, 0x10E3, 0x10DA, 0x10DA, 0x10D2, 0x10D1, + 0x10C9, 0x10C9, 0x10C0, 0x10C0, 0x10B8, 0x10B7, 0x10AF, 0x10AF, + 0x10A6, 0x109E, 0x1095, 0x108D, 0x108D, 0x1084, 0x1084, 0x107C, + 0x107B, 0x1073, 0x1072, 0x106A, 0x1069, 0x1061, 0x1061, 0x1058, + 0x1058, 0x1047, 0x1047, 0x103E, 0x103E, 0x1035, 0x1035, 0x102C, + 0x102C, 0x1023, 0x1023, 0x101A, 0x101A, 0x1011, 0x1011, 0x1008 +}; + +// note: returns 16.16 fixed-point +static inline u32 DIVIDE(s16 n, u16 d) { + if (n >= 0 && n < d * 2) { + u32 offset = d; + int shift = 0; + u64 reciprocal; + u32 r, s; + + while (offset <= 0x8000) { + offset <<= 1; + shift++; + } + + // Newton-Raphson interation - x0, x1, x2 + // (16.16 fixed-point) + r = initial_guess[offset & 0x7fff] | 0x10000; + + s = (u64)offset * r >> 16; + r = (u64)r * (0x20000 - s) >> 16; + + s = (u64)offset * r >> 16; + r = (u64)r * (0x20000 - s) >> 16; + + reciprocal = (u64)(r) << shift; + + return (u32)(((reciprocal * n) + 0x8000) >> 16); + } + + return 0xffffffff; +} + diff --git a/libpcsxcore/mdec.c b/libpcsxcore/mdec.c new file mode 100644 index 0000000..5e84152 --- /dev/null +++ b/libpcsxcore/mdec.c @@ -0,0 +1,565 @@ +/*************************************************************************** + * Copyright (C) 2010 Gabriele Gorla * + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#include "mdec.h" + +#define DSIZE 8 +#define DSIZE2 (DSIZE * DSIZE) + +#define SCALE(x, n) ((x) >> (n)) +#define SCALER(x, n) (((x) + ((1 << (n)) >> 1)) >> (n)) + +#define AAN_CONST_BITS 12 +#define AAN_PRESCALE_BITS 16 + +#define AAN_CONST_SIZE 24 +#define AAN_CONST_SCALE (AAN_CONST_SIZE - AAN_CONST_BITS) + +#define AAN_PRESCALE_SIZE 20 +#define AAN_PRESCALE_SCALE (AAN_PRESCALE_SIZE-AAN_PRESCALE_BITS) +#define AAN_EXTRA 12 + +#define FIX_1_082392200 SCALER(18159528, AAN_CONST_SCALE) // B6 +#define FIX_1_414213562 SCALER(23726566, AAN_CONST_SCALE) // A4 +#define FIX_1_847759065 SCALER(31000253, AAN_CONST_SCALE) // A2 +#define FIX_2_613125930 SCALER(43840978, AAN_CONST_SCALE) // B2 + +#define MULS(var, const) (SCALE((var) * (const), AAN_CONST_BITS)) + +#define RLE_RUN(a) ((a) >> 10) +#define RLE_VAL(a) (((int)(a) << (sizeof(int) * 8 - 10)) >> (sizeof(int) * 8 - 10)) + +#if 0 +static void printmatrixu8(u8 *m) { + int i; + for(i = 0; i < DSIZE2; i++) { + printf("%3d ",m[i]); + if((i+1) % 8 == 0) printf("\n"); + } +} +#endif + +static inline void fillcol(int *blk, int val) { + blk[0 * DSIZE] = blk[1 * DSIZE] = blk[2 * DSIZE] = blk[3 * DSIZE] + = blk[4 * DSIZE] = blk[5 * DSIZE] = blk[6 * DSIZE] = blk[7 * DSIZE] = val; +} + +static inline void fillrow(int *blk, int val) { + blk[0] = blk[1] = blk[2] = blk[3] + = blk[4] = blk[5] = blk[6] = blk[7] = val; +} + +void idct(int *block,int used_col) { + int tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7; + int z5, z10, z11, z12, z13; + int *ptr; + int i; + + // the block has only the DC coefficient + if (used_col == -1) { + int v = block[0]; + for (i = 0; i < DSIZE2; i++) block[i] = v; + return; + } + + // last_col keeps track of the highest column with non zero coefficients + ptr = block; + for (i = 0; i < DSIZE; i++, ptr++) { + if ((used_col & (1 << i)) == 0) { + // the column is empty or has only the DC coefficient + if (ptr[DSIZE * 0]) { + fillcol(ptr, ptr[0]); + used_col |= (1 << i); + } + continue; + } + + // further optimization could be made by keeping track of + // last_row in rl2blk + z10 = ptr[DSIZE * 0] + ptr[DSIZE * 4]; // s04 + z11 = ptr[DSIZE * 0] - ptr[DSIZE * 4]; // d04 + z13 = ptr[DSIZE * 2] + ptr[DSIZE * 6]; // s26 + z12 = MULS(ptr[DSIZE * 2] - ptr[DSIZE * 6], FIX_1_414213562) - z13; + //^^^^ d26=d26*2*A4-s26 + + tmp0 = z10 + z13; // os07 = s04 + s26 + tmp3 = z10 - z13; // os34 = s04 - s26 + tmp1 = z11 + z12; // os16 = d04 + d26 + tmp2 = z11 - z12; // os25 = d04 - d26 + + z13 = ptr[DSIZE * 3] + ptr[DSIZE * 5]; //s53 + z10 = ptr[DSIZE * 3] - ptr[DSIZE * 5]; //-d53 + z11 = ptr[DSIZE * 1] + ptr[DSIZE * 7]; //s17 + z12 = ptr[DSIZE * 1] - ptr[DSIZE * 7]; //d17 + + tmp7 = z11 + z13; // od07 = s17 + s53 + + z5 = (z12 - z10) * (FIX_1_847759065); + tmp6 = SCALE(z10*(FIX_2_613125930) + z5, AAN_CONST_BITS) - tmp7; + tmp5 = MULS(z11 - z13, FIX_1_414213562) - tmp6; + tmp4 = SCALE(z12*(FIX_1_082392200) - z5, AAN_CONST_BITS) + tmp5; + + // path #1 + //z5 = (z12 - z10)* FIX_1_847759065; + // tmp0 = (d17 + d53) * 2*A2 + + //tmp6 = DESCALE(z10*FIX_2_613125930 + z5, CONST_BITS) - tmp7; + // od16 = (d53*-2*B2 + tmp0) - od07 + + //tmp4 = DESCALE(z12*FIX_1_082392200 - z5, CONST_BITS) + tmp5; + // od34 = (d17*2*B6 - tmp0) + od25 + + // path #2 + + // od34 = d17*2*(B6-A2) - d53*2*A2 + // od16 = d53*2*(A2-B2) + d17*2*A2 + + // end + + // tmp5 = MULS(z11 - z13, FIX_1_414213562) - tmp6; + // od25 = (s17 - s53)*2*A4 - od16 + + ptr[DSIZE * 0] = (tmp0 + tmp7); // os07 + od07 + ptr[DSIZE * 7] = (tmp0 - tmp7); // os07 - od07 + ptr[DSIZE * 1] = (tmp1 + tmp6); // os16 + od16 + ptr[DSIZE * 6] = (tmp1 - tmp6); // os16 - od16 + ptr[DSIZE * 2] = (tmp2 + tmp5); // os25 + od25 + ptr[DSIZE * 5] = (tmp2 - tmp5); // os25 - od25 + ptr[DSIZE * 4] = (tmp3 + tmp4); // os34 + od34 + ptr[DSIZE * 3] = (tmp3 - tmp4); // os34 - od34 + } + + ptr = block; + if (used_col == 1) { + for (i = 0; i < DSIZE; i++) + fillrow(block + DSIZE * i, block[DSIZE * i]); + } else { + for (i = 0; i < DSIZE; i++, ptr += DSIZE) { + z10 = ptr[0] + ptr[4]; + z11 = ptr[0] - ptr[4]; + z13 = ptr[2] + ptr[6]; + z12 = MULS(ptr[2] - ptr[6], FIX_1_414213562) - z13; + + tmp0 = z10 + z13; + tmp3 = z10 - z13; + tmp1 = z11 + z12; + tmp2 = z11 - z12; + + z13 = ptr[3] + ptr[5]; + z10 = ptr[3] - ptr[5]; + z11 = ptr[1] + ptr[7]; + z12 = ptr[1] - ptr[7]; + + tmp7 = z11 + z13; + z5 = (z12 - z10) * FIX_1_847759065; + tmp6 = SCALE(z10 * FIX_2_613125930 + z5, AAN_CONST_BITS) - tmp7; + tmp5 = MULS(z11 - z13, FIX_1_414213562) - tmp6; + tmp4 = SCALE(z12 * FIX_1_082392200 - z5, AAN_CONST_BITS) + tmp5; + + ptr[0] = tmp0 + tmp7; + + ptr[7] = tmp0 - tmp7; + ptr[1] = tmp1 + tmp6; + ptr[6] = tmp1 - tmp6; + ptr[2] = tmp2 + tmp5; + ptr[5] = tmp2 - tmp5; + ptr[4] = tmp3 + tmp4; + ptr[3] = tmp3 - tmp4; + } + } +} + +// mdec0: command register +#define MDEC0_STP 0x02000000 +#define MDEC0_RGB24 0x08000000 +#define MDEC0_SIZE_MASK 0xFFFF + +// mdec1: status register +#define MDEC1_BUSY 0x20000000 +#define MDEC1_DREQ 0x18000000 +#define MDEC1_FIFO 0xc0000000 +#define MDEC1_RGB24 0x02000000 +#define MDEC1_STP 0x00800000 +#define MDEC1_RESET 0x80000000 + +struct { + u32 reg0; + u32 reg1; + unsigned short *rl; + int rlsize; +} mdec; + +static int iq_y[DSIZE2], iq_uv[DSIZE2]; + +static int zscan[DSIZE2] = { + 0 , 1 , 8 , 16, 9 , 2 , 3 , 10, + 17, 24, 32, 25, 18, 11, 4 , 5 , + 12, 19, 26, 33, 40, 48, 41, 34, + 27, 20, 13, 6 , 7 , 14, 21, 28, + 35, 42, 49, 56, 57, 50, 43, 36, + 29, 22, 15, 23, 30, 37, 44, 51, + 58, 59, 52, 45, 38, 31, 39, 46, + 53, 60, 61, 54, 47, 55, 62, 63 +}; + +static int aanscales[DSIZE2] = { + 1048576, 1454417, 1370031, 1232995, 1048576, 823861, 567485, 289301, + 1454417, 2017334, 1900287, 1710213, 1454417, 1142728, 787125, 401273, + 1370031, 1900287, 1790031, 1610986, 1370031, 1076426, 741455, 377991, + 1232995, 1710213, 1610986, 1449849, 1232995, 968758, 667292, 340183, + 1048576, 1454417, 1370031, 1232995, 1048576, 823861, 567485, 289301, + 823861, 1142728, 1076426, 968758, 823861, 647303, 445870, 227303, + 567485, 787125, 741455, 667292, 567485, 445870, 307121, 156569, + 289301, 401273, 377991, 340183, 289301, 227303, 156569, 79818 +}; + +static void iqtab_init(int *iqtab, unsigned char *iq_y) { + int i; + + for (i = 0; i < DSIZE2; i++) { + iqtab[i] = (iq_y[i] * SCALER(aanscales[zscan[i]], AAN_PRESCALE_SCALE)); + } +} + +#define MDEC_END_OF_DATA 0xfe00 + +unsigned short *rl2blk(int *blk, unsigned short *mdec_rl) { + int i, k, q_scale, rl, used_col; + int *iqtab; + + memset(blk, 0, 6 * DSIZE2 * sizeof(int)); + iqtab = iq_uv; + for (i = 0; i < 6; i++) { + // decode blocks (Cr,Cb,Y1,Y2,Y3,Y4) + if (i == 2) iqtab = iq_y; + + rl = SWAP16(*mdec_rl); mdec_rl++; + q_scale = RLE_RUN(rl); + blk[0] = SCALER(iqtab[0] * RLE_VAL(rl), AAN_EXTRA - 3); + for (k = 0, used_col = 0;;) { + rl = SWAP16(*mdec_rl); mdec_rl++; + if (rl == MDEC_END_OF_DATA) break; + k += RLE_RUN(rl) + 1; // skip zero-coefficients + + if (k > 63) { + // printf("run lenght exceeded 64 enties\n"); + break; + } + + // zigzag transformation + blk[zscan[k]] = SCALER(RLE_VAL(rl) * iqtab[k] * q_scale, AAN_EXTRA); + // keep track of used columns to speed up the idtc + used_col |= (zscan[k] > 7) ? 1 << (zscan[k] & 7) : 0; + } + + if (k == 0) used_col = -1; + // used_col is -1 for blocks with only the DC coefficient + // any other value is a bitmask of the columns that have + // at least one non zero cofficient in the rows 1-7 + // single coefficients in row 0 are treted specially + // in the idtc function + idct(blk, used_col); + blk += DSIZE2; + } + return mdec_rl; +} + +// full scale (JPEG) +// Y/Cb/Cr[0...255] -> R/G/B[0...255] +// R = 1.000 * (Y) + 1.400 * (Cr - 128) +// G = 1.000 * (Y) - 0.343 * (Cb - 128) - 0.711 (Cr - 128) +// B = 1.000 * (Y) + 1.765 * (Cb - 128) +#define MULR(a) ((1434 * (a))) +#define MULB(a) ((1807 * (a))) +#define MULG2(a, b) ((-351 * (a) - 728 * (b))) +#define MULY(a) ((a) << 10) + +#define MAKERGB15(r, g, b, a) (SWAP16(a | ((b) << 10) | ((g) << 5) | (r))) +#define SCALE8(c) SCALER(c, 20) +#define SCALE5(c) SCALER(c, 23) + +#define CLAMP5(c) ( ((c) < -16) ? 0 : (((c) > (31 - 16)) ? 31 : ((c) + 16)) ) +#define CLAMP8(c) ( ((c) < -128) ? 0 : (((c) > (255 - 128)) ? 255 : ((c) + 128)) ) + +#define CLAMP_SCALE8(a) (CLAMP8(SCALE8(a))) +#define CLAMP_SCALE5(a) (CLAMP5(SCALE5(a))) + +static inline void putlinebw15(unsigned short *image, int *Yblk) { + int i; + int A = (mdec.reg0 & MDEC0_STP) ? 0x8000 : 0; + + for (i = 0; i < 8; i++, Yblk++) { + int Y = *Yblk; + // missing rounding + image[i] = SWAP16((CLAMP5(Y >> 3) * 0x421) | A); + } +} + +static void putquadrgb15(unsigned short *image, int *Yblk, int Cr, int Cb) { + int Y, R, G, B; + int A = (mdec.reg0 & MDEC0_STP) ? 0x8000 : 0; + R = MULR(Cr); + G = MULG2(Cb, Cr); + B = MULB(Cb); + + // added transparency + Y = MULY(Yblk[0]); + image[0] = MAKERGB15(CLAMP_SCALE5(Y + R), CLAMP_SCALE5(Y + G), CLAMP_SCALE5(Y + B), A); + Y = MULY(Yblk[1]); + image[1] = MAKERGB15(CLAMP_SCALE5(Y + R), CLAMP_SCALE5(Y + G), CLAMP_SCALE5(Y + B), A); + Y = MULY(Yblk[8]); + image[16] = MAKERGB15(CLAMP_SCALE5(Y + R), CLAMP_SCALE5(Y + G), CLAMP_SCALE5(Y + B), A); + Y = MULY(Yblk[9]); + image[17] = MAKERGB15(CLAMP_SCALE5(Y + R), CLAMP_SCALE5(Y + G), CLAMP_SCALE5(Y + B), A); +} + +static void yuv2rgb15(int *blk, unsigned short *image) { + int x, y; + int *Yblk = blk + DSIZE2 * 2; + int *Crblk = blk; + int *Cbblk = blk + DSIZE2; + + if (!Config.Mdec) { + for (y = 0; y < 16; y += 2, Crblk += 4, Cbblk += 4, Yblk += 8, image += 24) { + if (y == 8) Yblk += DSIZE2; + for (x = 0; x < 4; x++, image += 2, Crblk++, Cbblk++, Yblk += 2) { + putquadrgb15(image, Yblk, *Crblk, *Cbblk); + putquadrgb15(image + 8, Yblk + DSIZE2, *(Crblk + 4), *(Cbblk + 4)); + } + } + } else { + for (y = 0; y < 16; y++, Yblk += 8, image += 16) { + if (y == 8) Yblk += DSIZE2; + putlinebw15(image, Yblk); + putlinebw15(image + 8, Yblk + DSIZE2); + } + } +} + +static inline void putlinebw24(unsigned char *image, int *Yblk) { + int i; + unsigned char Y; + for (i = 0; i < 8 * 3; i += 3, Yblk++) { + Y = CLAMP8(*Yblk); + image[i + 0] = Y; + image[i + 1] = Y; + image[i + 2] = Y; + } +} + +static void putquadrgb24(unsigned char *image, int *Yblk, int Cr, int Cb) { + int Y, R, G, B; + + R = MULR(Cr); + G = MULG2(Cb,Cr); + B = MULB(Cb); + + Y = MULY(Yblk[0]); + image[0 * 3 + 0] = CLAMP_SCALE8(Y + R); + image[0 * 3 + 1] = CLAMP_SCALE8(Y + G); + image[0 * 3 + 2] = CLAMP_SCALE8(Y + B); + Y = MULY(Yblk[1]); + image[1 * 3 + 0] = CLAMP_SCALE8(Y + R); + image[1 * 3 + 1] = CLAMP_SCALE8(Y + G); + image[1 * 3 + 2] = CLAMP_SCALE8(Y + B); + Y = MULY(Yblk[8]); + image[16 * 3 + 0] = CLAMP_SCALE8(Y + R); + image[16 * 3 + 1] = CLAMP_SCALE8(Y + G); + image[16 * 3 + 2] = CLAMP_SCALE8(Y + B); + Y = MULY(Yblk[9]); + image[17 * 3 + 0] = CLAMP_SCALE8(Y + R); + image[17 * 3 + 1] = CLAMP_SCALE8(Y + G); + image[17 * 3 + 2] = CLAMP_SCALE8(Y + B); +} + +static void yuv2rgb24(int *blk, unsigned char *image) { + int x, y; + int *Yblk = blk + DSIZE2 * 2; + int *Crblk = blk; + int *Cbblk = blk + DSIZE2; + + if (!Config.Mdec) { + for (y = 0; y < 16; y += 2, Crblk += 4, Cbblk += 4, Yblk += 8, image += 24 * 3) { + if (y == 8) Yblk += DSIZE2; + for (x = 0; x < 4; x++, image += 6, Crblk++, Cbblk++, Yblk += 2) { + putquadrgb24(image, Yblk, *Crblk, *Cbblk); + putquadrgb24(image + 8 * 3, Yblk + DSIZE2, *(Crblk + 4), *(Cbblk + 4)); + } + } + } else { + for (y = 0; y < 16; y++, Yblk += 8, image += 16 * 3) { + if (y == 8) Yblk += DSIZE2; + putlinebw24(image, Yblk); + putlinebw24(image + 8 * 3, Yblk + DSIZE2); + } + } +} + +void mdecInit(void) { + mdec.rl = (u16 *)&psxM[0x100000]; + mdec.reg0 = 0; + mdec.reg1 = 0; +} + +// command register +void mdecWrite0(u32 data) { +#ifdef CDR_LOG + CDR_LOG("mdec0 write %08x\n", data); +#endif + mdec.reg0 = data; +} + +u32 mdecRead0(void) { +#ifdef CDR_LOG + CDR_LOG("mdec0 read %08x\n", mdec.reg0); +#endif + // mame is returning 0 + return mdec.reg0; +} + +// status register +void mdecWrite1(u32 data) { +#ifdef CDR_LOG + CDR_LOG("mdec1 write %08x\n", data); +#endif + if (data & MDEC1_RESET) { // mdec reset + mdec.reg0 = 0; + mdec.reg1 = 0; + } +} + +u32 mdecRead1(void) { + u32 v = mdec.reg1; + v |= (mdec.reg0 & MDEC0_STP) ? MDEC1_STP : 0; + v |= (mdec.reg0 & MDEC0_RGB24) ? MDEC1_RGB24 : 0; +#ifdef CDR_LOG + CDR_LOG("mdec1 read %08x\n", v); +#endif + return v; +} + +void psxDma0(u32 adr, u32 bcr, u32 chcr) { + int cmd = mdec.reg0; + int size; + +#ifdef CDR_LOG + CDR_LOG("DMA0 %08x %08x %08x\n", adr, bcr, chcr); +#endif + + if (chcr != 0x01000201) { + // printf("chcr != 0x01000201\n"); + return; + } + + size = (bcr >> 16) * (bcr & 0xffff); + + switch (cmd >> 28) { + case 0x3: // decode + mdec.rl = (u16 *)PSXM(adr); + mdec.rlsize = mdec.reg0 & MDEC0_SIZE_MASK; + break; + + case 0x4: // quantization table upload + { + u8 *p = (u8 *)PSXM(adr); + // printf("uploading new quantization table\n"); + // printmatrixu8(p); + // printmatrixu8(p + 64); + iqtab_init(iq_y, p); + iqtab_init(iq_uv, p + 64); + } + break; + + case 0x6: // cosine table + // printf("mdec cosine table\n"); + break; + + default: + // printf("mdec unknown command\n"); + break; + } + + HW_DMA0_CHCR &= SWAP32(~0x01000000); + DMA_INTERRUPT(0); +} + +void psxDma1(u32 adr, u32 bcr, u32 chcr) { + int blk[DSIZE2 * 6]; + unsigned short *image; + int size; + +#ifdef CDR_LOG + CDR_LOG("DMA1 %08x %08x %08x (cmd = %08x)\n", adr, bcr, chcr, mdec.reg0); +#endif + + if (chcr != 0x01000200) return; + + size = (bcr >> 16) * (bcr & 0xffff); + + image = (u16 *)PSXM(adr); + + if (mdec.reg0 & MDEC0_RGB24) { // 15-b decoding + // MDECOUTDMA_INT(((size * (1000000 / 9000)) / 4) /** 4*/); + MDECOUTDMA_INT(size / 4); + size = size / ((16 * 16) / 2); + for (; size > 0; size--, image += (16 * 16)) { + mdec.rl = rl2blk(blk, mdec.rl); + yuv2rgb15(blk, image); + } + } else { // 24-b decoding + // MDECOUTDMA_INT(((size * (1000000 / 9000)) / 4) /** 4*/); + MDECOUTDMA_INT(size / 4); + size = size / ((24 * 16) / 2); + for (; size > 0; size--, image += (24 * 16)) { + mdec.rl = rl2blk(blk, mdec.rl); + yuv2rgb24(blk, (u8 *)image); + } + } + + mdec.reg1 |= MDEC1_BUSY; +} + +void mdec1Interrupt() { +#ifdef CDR_LOG + CDR_LOG("mdec1Interrupt\n"); +#endif + if (HW_DMA1_CHCR & SWAP32(0x01000000)) { + // Set a fixed value totaly arbitrarie another sound value is + // PSXCLK / 60 or PSXCLK / 50 since the bug happened at end of frame. + // PSXCLK / 1000 seems good for FF9. (for FF9 need < ~28000) + // CAUTION: commented interrupt-handling may lead to problems, keep an eye ;-) + MDECOUTDMA_INT(PSXCLK / 1000 * BIAS); +// psxRegs.interrupt |= 0x02000000; +// psxRegs.intCycle[5 + 24 + 1] *= 8; +// psxRegs.intCycle[5 + 24] = psxRegs.cycle; + HW_DMA1_CHCR &= SWAP32(~0x01000000); + DMA_INTERRUPT(1); + } else { + mdec.reg1 &= ~MDEC1_BUSY; + } +} + +int mdecFreeze(gzFile f, int Mode) { + gzfreeze(&mdec, sizeof(mdec)); + gzfreeze(iq_y, sizeof(iq_y)); + gzfreeze(iq_uv, sizeof(iq_uv)); + + return 0; +} diff --git a/libpcsxcore/mdec.h b/libpcsxcore/mdec.h new file mode 100644 index 0000000..e191b4e --- /dev/null +++ b/libpcsxcore/mdec.h @@ -0,0 +1,45 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#ifndef __MDEC_H__ +#define __MDEC_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "psxcommon.h" +#include "r3000a.h" +#include "psxhw.h" +#include "psxdma.h" + +void mdecInit(); +void mdecWrite0(u32 data); +void mdecWrite1(u32 data); +u32 mdecRead0(); +u32 mdecRead1(); +void psxDma0(u32 madr, u32 bcr, u32 chcr); +void psxDma1(u32 madr, u32 bcr, u32 chcr); +void mdec1Interrupt(); +int mdecFreeze(gzFile f, int Mode); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/misc.c b/libpcsxcore/misc.c new file mode 100644 index 0000000..9b4b119 --- /dev/null +++ b/libpcsxcore/misc.c @@ -0,0 +1,736 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +/* +* Miscellaneous functions, including savestates and CD-ROM loading. +*/ + +#include "misc.h" +#include "cdrom.h" +#include "mdec.h" +#include "ppf.h" + +char CdromId[10] = ""; +char CdromLabel[33] = ""; + +// PSX Executable types +#define PSX_EXE 1 +#define CPE_EXE 2 +#define COFF_EXE 3 +#define INVALID_EXE 4 + +#define ISODCL(from, to) (to - from + 1) + +struct iso_directory_record { + char length [ISODCL (1, 1)]; /* 711 */ + char ext_attr_length [ISODCL (2, 2)]; /* 711 */ + char extent [ISODCL (3, 10)]; /* 733 */ + char size [ISODCL (11, 18)]; /* 733 */ + char date [ISODCL (19, 25)]; /* 7 by 711 */ + char flags [ISODCL (26, 26)]; + char file_unit_size [ISODCL (27, 27)]; /* 711 */ + char interleave [ISODCL (28, 28)]; /* 711 */ + char volume_sequence_number [ISODCL (29, 32)]; /* 723 */ + unsigned char name_len [ISODCL (33, 33)]; /* 711 */ + char name [1]; +}; +void showdir(struct iso_directory_record *dir){ + unsigned char *b=(unsigned char *)dir; + for(int ii=0;ii<33;ii++) + printf("(%d:%x) ", ii, b[ii]); + printf("\n"); +} +void mmssdd( char *b, char *p ) +{ + int m, s, d; +#if defined(__BIGENDIAN__) + int block = (b[0] & 0xff) | ((b[1] & 0xff) << 8) | ((b[2] & 0xff) << 16) | (b[3] << 24); +#else + int block = (b[0] & 0xff) | ((b[1] & 0xff) << 8) | ((b[2] & 0xff) << 16) | (b[3] << 24); +#endif + + block += 150; + m = block / 4500; // minutes + block = block - m * 4500; // minutes rest + s = block / 75; // seconds + d = block - s * 75; // seconds rest + + m = ((m / 10) << 4) | m % 10; + s = ((s / 10) << 4) | s % 10; + d = ((d / 10) << 4) | d % 10; + + p[0] = m; + p[1] = s; + p[2] = d; +} + +#define incTime() \ + time[0] = btoi(time[0]); time[1] = btoi(time[1]); time[2] = btoi(time[2]); \ + time[2]++; \ + if(time[2] == 75) { \ + time[2] = 0; \ + time[1]++; \ + if (time[1] == 60) { \ + time[1] = 0; \ + time[0]++; \ + } \ + } \ + time[0] = itob(time[0]); time[1] = itob(time[1]); time[2] = itob(time[2]); + +#define READTRACK() \ + if (CDR_readTrack(time) == -1) return -1; \ + buf = CDR_getBuffer(); \ + if (buf == NULL) return -1; else CheckPPFCache(buf, time[0], time[1], time[2]); + +#define READDIR(_dir) \ + READTRACK(); \ + memcpy(_dir, buf + 12, 2048); \ + \ + incTime(); \ + READTRACK(); \ + memcpy(_dir + 2048, buf + 12, 2048); + +int GetCdromFile(u8 *mdir, u8 *time, s8 *filename) { + struct iso_directory_record *dir; + u8 ddir[4096]; + u8 *buf; + int i; + + // only try to scan if a filename is given + if (!strlen(filename)) return -1; + //printf("GetCdromFile\n"); + i = 0; + while (i < 4096) { + //printf("GetCdromFile i=%d\n", i); + dir = (struct iso_directory_record*) &mdir[i]; + //showdir(dir); + if (dir->length[0] == 0) { + return -1; + } + //printf("GetCdromFile length[0]=%d, flags=%x\n", dir->length[0], dir->flags[0]); + i += dir->length[0]; + + if (dir->flags[0] & 0x2) { // it's a dir + if (!strnicmp((char *)&dir->name[0], filename, dir->name_len[0])) { + if (filename[dir->name_len[0]] != '\\') continue; + + filename += dir->name_len[0] + 1; + + mmssdd(dir->extent, (char *)time); + READDIR(ddir); + i = 0; + mdir = ddir; + } + } else { + if (!strnicmp((char *)&dir->name[0], filename, strlen(filename))) { + //printf("GetCdromFile get\n"); + mmssdd(dir->extent, (char *)time); + //for(int ii=0;ii<4;ii++) printf("%02x ", time[ii]); + //printf("\n"); + break; + } + } + } + return 0; +} + +int LoadCdrom() { + EXE_HEADER tmpHead; + struct iso_directory_record *dir; + u8 time[4], *buf; + u8 mdir[4096]; + s8 exename[256]; + //printf("a\n"); + + if (!Config.HLE) { + psxRegs.pc = psxRegs.GPR.n.ra; + return 0; + } + //printf("b\n"); + + time[0] = itob(0); time[1] = itob(2); time[2] = itob(0x10); + + READTRACK(); + printf("c\n"); + + // skip head and sub, and go to the root directory record + dir = (struct iso_directory_record*) &buf[12+156]; + + mmssdd(dir->extent, (char*)time); + + READDIR(mdir); + + // Load SYSTEM.CNF and scan for the main executable + if (GetCdromFile(mdir, time, "SYSTEM.CNF;1") == -1) { + // if SYSTEM.CNF is missing, start an existing PSX.EXE + if (GetCdromFile(mdir, time, "PSX.EXE;1") == -1) return -1; + + READTRACK(); + } + else { + // read the SYSTEM.CNF + READTRACK(); + + sscanf((char *)buf + 12, "BOOT = cdrom:\\%256s", exename); + if (GetCdromFile(mdir, time, exename) == -1) { + sscanf((char *)buf + 12, "BOOT = cdrom:%256s", exename); + printf("%s\n", buf); + if (GetCdromFile(mdir, time, exename) == -1) { + char *ptr = strstr((char *)buf + 12, "cdrom:"); + if (ptr != NULL) { + ptr += 6; + while (*ptr == '\\' || *ptr == '/') ptr++; + strncpy(exename, ptr, 255); + exename[255] = '\0'; + ptr = exename; + while (*ptr != '\0' && *ptr != '\r' && *ptr != '\n') ptr++; + *ptr = '\0'; + if (GetCdromFile(mdir, time, exename) == -1) + { printf("d\n");return -1;} + } else + { printf("e\n");return -1;} + } + } + + // Read the EXE-Header + READTRACK(); + } + + memcpy(&tmpHead, buf + 12, sizeof(EXE_HEADER)); + + psxRegs.pc = SWAP32(tmpHead.pc0); + psxRegs.GPR.n.gp = SWAP32(tmpHead.gp0); + psxRegs.GPR.n.sp = SWAP32(tmpHead.s_addr); + if (psxRegs.GPR.n.sp == 0) psxRegs.GPR.n.sp = 0x801fff00; + + tmpHead.t_size = SWAP32(tmpHead.t_size); + tmpHead.t_addr = SWAP32(tmpHead.t_addr); + + // Read the rest of the main executable + while (tmpHead.t_size) { + void *ptr = (void *)PSXM(tmpHead.t_addr); + + incTime(); + READTRACK(); + + if (ptr != NULL) memcpy(ptr, buf+12, 2048); + + tmpHead.t_size -= 2048; + tmpHead.t_addr += 2048; + } + + return 0; +} + +int LoadCdromFile(const char *filename, EXE_HEADER *head) { + struct iso_directory_record *dir; + u8 time[4],*buf; + u8 mdir[4096]; + s8 exename[256]; + u32 size, addr; + + sscanf(filename, "cdrom:\\%256s", exename); + + time[0] = itob(0); time[1] = itob(2); time[2] = itob(0x10); + + READTRACK(); + + // skip head and sub, and go to the root directory record + dir = (struct iso_directory_record *)&buf[12 + 156]; + + mmssdd(dir->extent, (char*)time); + + READDIR(mdir); + + if (GetCdromFile(mdir, time, exename) == -1) return -1; + + READTRACK(); + + memcpy(head, buf + 12, sizeof(EXE_HEADER)); + size = head->t_size; + addr = head->t_addr; + + while (size) { + incTime(); + READTRACK(); + + memcpy((void *)PSXM(addr), buf + 12, 2048); + + size -= 2048; + addr += 2048; + } + + return 0; +} + +int CheckCdrom() { + struct iso_directory_record *dir; + unsigned char time[4], *buf; + unsigned char mdir[4096]; + char exename[256]; + int i, c; + + FreePPFCache(); + + time[0] = itob(0); + time[1] = itob(2); + time[2] = itob(0x10); + printf("check cdrom\n"); + READTRACK(); + printf("check cdrom 2\n"); + for(int ii=0;ii<84;ii++) printf("%02x ", buf[ii]); + printf("\n"); + + CdromLabel[0] = '\0'; + CdromId[0] = '\0'; + + strncpy(CdromLabel, (s8 *)buf + 52, 32); + printf("check cdrom 3, %s\n", CdromLabel); + + + // skip head and sub, and go to the root directory record + dir = (struct iso_directory_record *)&buf[12 + 156]; + + mmssdd(dir->extent, (char *)time); + for(int ii=0;ii<4;ii++) printf("%02x ", time[ii]); + printf("\n"); + + READDIR(mdir); + printf("check cdrom 4\n"); + for(int ii=0;ii<40;ii++) printf("%02x ", mdir[ii]); + printf("\n"); + if (GetCdromFile(mdir, time, "SYSTEM.CNF;1") != -1) { + printf("check cdrom 5\n"); + READTRACK(); + for(int ii=0;ii<84;ii++) printf("%02x ", buf[ii]); + printf("\n"); + + sscanf((char *)buf + 12, "BOOT = cdrom:\\%256s", exename); + printf("check cdrom 6 %s\n", exename); + if (GetCdromFile(mdir, time, exename) == -1) { + sscanf((char *)buf + 12, "BOOT = cdrom:%256s", exename); + if (GetCdromFile(mdir, time, exename) == -1) { + char *ptr = strstr((s8 *)buf + 12, "cdrom:"); // possibly the executable is in some subdir + if (ptr != NULL) { + ptr += 6; + while (*ptr == '\\' || *ptr == '/') ptr++; + strncpy(exename, ptr, 255); + exename[255] = '\0'; + ptr = exename; + while (*ptr != '\0' && *ptr != '\r' && *ptr != '\n') ptr++; + *ptr = '\0'; + if (GetCdromFile(mdir, time, exename) == -1) + return -1; // main executable not found + } else + return -1; + } + } + } else if (GetCdromFile(mdir, time, "PSX.EXE;1") != -1) { + strcpy(exename, "PSX.EXE;1"); + strcpy(CdromId, "SLUS99999"); + } else + return -1; // SYSTEM.CNF and PSX.EXE not found + + if (CdromId[0] == '\0') { + i = strlen(exename); + if (i >= 2) { + if (exename[i - 2] == ';') i-= 2; + c = 8; i--; + while (i >= 0 && c >= 0) { + if (isalnum(exename[i])) CdromId[c--] = exename[i]; + i--; + } + } + } + + if (Config.PsxAuto) { // autodetect system (pal or ntsc) + if (strstr(exename, "ES") != NULL) + Config.PsxType = PSX_TYPE_PAL; // pal + else Config.PsxType = PSX_TYPE_NTSC; // ntsc + } + + if (CdromLabel[0] == ' ') { + strncpy(CdromLabel, CdromId, 9); + } + SysPrintf(_("CD-ROM Label: %.32s\n"), CdromLabel); + SysPrintf(_("CD-ROM ID: %.9s\n"), CdromId); + + BuildPPFCache(); + + return 0; +} + +static int PSXGetFileType(FILE *f) { + unsigned long current; + u8 mybuf[2048]; + EXE_HEADER *exe_hdr; + FILHDR *coff_hdr; + + current = ftell(f); + fseek(f, 0L, SEEK_SET); + fread(mybuf, 2048, 1, f); + fseek(f, current, SEEK_SET); + + exe_hdr = (EXE_HEADER *)mybuf; + if (memcmp(exe_hdr->id, "PS-X EXE", 8) == 0) + return PSX_EXE; + + if (mybuf[0] == 'C' && mybuf[1] == 'P' && mybuf[2] == 'E') + return CPE_EXE; + + coff_hdr = (FILHDR *)mybuf; + if (SWAPu16(coff_hdr->f_magic) == 0x0162) + return COFF_EXE; + + return INVALID_EXE; +} + +int Load(const char *ExePath) { + FILE *tmpFile; + EXE_HEADER tmpHead; + int type; + int retval = 0; + u8 opcode; + u32 section_address, section_size; + + strncpy(CdromId, "SLUS99999", 9); + strncpy(CdromLabel, "SLUS_999.99", 11); + + tmpFile = fopen(ExePath, "rb"); + if (tmpFile == NULL) { + SysPrintf(_("Error opening file: %s.\n"), ExePath); + retval = -1; + } else { + type = PSXGetFileType(tmpFile); + switch (type) { + case PSX_EXE: + fread(&tmpHead,sizeof(EXE_HEADER),1,tmpFile); + fseek(tmpFile, 0x800, SEEK_SET); + fread((void *)PSXM(SWAP32(tmpHead.t_addr)), SWAP32(tmpHead.t_size),1,tmpFile); + fclose(tmpFile); + psxRegs.pc = SWAP32(tmpHead.pc0); + psxRegs.GPR.n.gp = SWAP32(tmpHead.gp0); + psxRegs.GPR.n.sp = SWAP32(tmpHead.s_addr); + if (psxRegs.GPR.n.sp == 0) + psxRegs.GPR.n.sp = 0x801fff00; + retval = 0; + break; + case CPE_EXE: + fseek(tmpFile, 6, SEEK_SET); /* Something tells me we should go to 4 and read the "08 00" here... */ + do { + fread(&opcode, 1, 1, tmpFile); + switch (opcode) { + case 1: /* Section loading */ + fread(§ion_address, 4, 1, tmpFile); + fread(§ion_size, 4, 1, tmpFile); + section_address = SWAPu32(section_address); + section_size = SWAPu32(section_size); +#ifdef EMU_LOG + EMU_LOG("Loading %08X bytes from %08X to %08X\n", section_size, ftell(tmpFile), section_address); +#endif + fread(PSXM(section_address), section_size, 1, tmpFile); + break; + case 3: /* register loading (PC only?) */ + fseek(tmpFile, 2, SEEK_CUR); /* unknown field */ + fread(&psxRegs.pc, 4, 1, tmpFile); + psxRegs.pc = SWAPu32(psxRegs.pc); + break; + case 0: /* End of file */ + break; + default: + SysPrintf(_("Unknown CPE opcode %02x at position %08ld.\n"), opcode, ftell(tmpFile) - 1); + retval = -1; + break; + } + } while (opcode != 0 && retval == 0); + break; + case COFF_EXE: + SysPrintf(_("COFF files not supported.\n")); + retval = -1; + break; + case INVALID_EXE: + SysPrintf(_("This file does not appear to be a valid PSX file.\n")); + retval = -1; + break; + } + } + + if (retval != 0) { + CdromId[0] = '\0'; + CdromLabel[0] = '\0'; + } + + return retval; +} + +// STATES + +static const char PcsxHeader[32] = "STv4 PCSX v" PACKAGE_VERSION; + +// Savestate Versioning! +// If you make changes to the savestate version, please increment the value below. +static const u32 SaveVersion = 0x8b410004; + +#if 0 // remove +int SaveState(const char *file) { + gzFile f; + GPUFreeze_t *gpufP; + SPUFreeze_t *spufP; + int Size; + unsigned char *pMem; + + f = gzopen(file, "wb"); + if (f == NULL) return -1; + + gzwrite(f, (void *)PcsxHeader, 32); + gzwrite(f, (void *)&SaveVersion, sizeof(u32)); + gzwrite(f, (void *)&Config.HLE, sizeof(boolean)); + + pMem = (unsigned char *)malloc(128 * 96 * 3); + if (pMem == NULL) return -1; + GPU_getScreenPic(pMem); + gzwrite(f, pMem, 128 * 96 * 3); + free(pMem); + + if (Config.HLE) + psxBiosFreeze(1); + + gzwrite(f, psxM, 0x00200000); + gzwrite(f, psxR, 0x00080000); + gzwrite(f, psxH, 0x00010000); + gzwrite(f, (void *)&psxRegs, sizeof(psxRegs)); + + // gpu + gpufP = (GPUFreeze_t *)malloc(sizeof(GPUFreeze_t)); + gpufP->ulFreezeVersion = 1; + GPU_freeze(1, gpufP); + gzwrite(f, gpufP, sizeof(GPUFreeze_t)); + free(gpufP); + + // spu + spufP = (SPUFreeze_t *) malloc(16); + SPU_freeze(2, spufP); + Size = spufP->Size; gzwrite(f, &Size, 4); + free(spufP); + spufP = (SPUFreeze_t *) malloc(Size); + SPU_freeze(1, spufP); + gzwrite(f, spufP, Size); + free(spufP); + + sioFreeze(f, 1); + cdrFreeze(f, 1); + psxHwFreeze(f, 1); + psxRcntFreeze(f, 1); + mdecFreeze(f, 1); + + gzclose(f); + + return 0; +} + +int LoadState(const char *file) { + gzFile f; + GPUFreeze_t *gpufP; + SPUFreeze_t *spufP; + int Size; + char header[32]; + u32 version; + boolean hle; + + f = gzopen(file, "rb"); + if (f == NULL) return -1; + + gzread(f, header, sizeof(header)); + gzread(f, &version, sizeof(u32)); + gzread(f, &hle, sizeof(boolean)); + + if (strncmp("STv4 PCSX", header, 9) != 0 || version != SaveVersion || hle != Config.HLE) { + gzclose(f); + return -1; + } + + psxCpu->Reset(); + gzseek(f, 128 * 96 * 3, SEEK_CUR); + + gzread(f, psxM, 0x00200000); + gzread(f, psxR, 0x00080000); + gzread(f, psxH, 0x00010000); + gzread(f, (void *)&psxRegs, sizeof(psxRegs)); + + if (Config.HLE) + psxBiosFreeze(0); + + // gpu + gpufP = (GPUFreeze_t *)malloc(sizeof(GPUFreeze_t)); + gzread(f, gpufP, sizeof(GPUFreeze_t)); + GPU_freeze(0, gpufP); + free(gpufP); + + // spu + gzread(f, &Size, 4); + spufP = (SPUFreeze_t *)malloc(Size); + gzread(f, spufP, Size); + SPU_freeze(0, spufP); + free(spufP); + + sioFreeze(f, 0); + cdrFreeze(f, 0); + psxHwFreeze(f, 0); + psxRcntFreeze(f, 0); + mdecFreeze(f, 0); + + gzclose(f); + + return 0; +} + +int CheckState(const char *file) { + gzFile f; + char header[32]; + u32 version; + boolean hle; + + f = gzopen(file, "rb"); + if (f == NULL) return -1; + + gzread(f, header, sizeof(header)); + gzread(f, &version, sizeof(u32)); + gzread(f, &hle, sizeof(boolean)); + + gzclose(f); + + if (strncmp("STv4 PCSX", header, 9) != 0 || version != SaveVersion || hle != Config.HLE) + return -1; + + return 0; +} + +// NET Function Helpers + +int SendPcsxInfo() { + if (NET_recvData == NULL || NET_sendData == NULL) + return 0; + + NET_sendData(&Config.Xa, sizeof(Config.Xa), PSE_NET_BLOCKING); + NET_sendData(&Config.Sio, sizeof(Config.Sio), PSE_NET_BLOCKING); + NET_sendData(&Config.SpuIrq, sizeof(Config.SpuIrq), PSE_NET_BLOCKING); + NET_sendData(&Config.RCntFix, sizeof(Config.RCntFix), PSE_NET_BLOCKING); + NET_sendData(&Config.PsxType, sizeof(Config.PsxType), PSE_NET_BLOCKING); + NET_sendData(&Config.Cpu, sizeof(Config.Cpu), PSE_NET_BLOCKING); + + return 0; +} + +int RecvPcsxInfo() { + int tmp; + + if (NET_recvData == NULL || NET_sendData == NULL) + return 0; + + NET_recvData(&Config.Xa, sizeof(Config.Xa), PSE_NET_BLOCKING); + NET_recvData(&Config.Sio, sizeof(Config.Sio), PSE_NET_BLOCKING); + NET_recvData(&Config.SpuIrq, sizeof(Config.SpuIrq), PSE_NET_BLOCKING); + NET_recvData(&Config.RCntFix, sizeof(Config.RCntFix), PSE_NET_BLOCKING); + NET_recvData(&Config.PsxType, sizeof(Config.PsxType), PSE_NET_BLOCKING); + + SysUpdate(); + + tmp = Config.Cpu; + NET_recvData(&Config.Cpu, sizeof(Config.Cpu), PSE_NET_BLOCKING); + if (tmp != Config.Cpu) { + psxCpu->Shutdown(); +#ifdef 0 + if (Config.Cpu == CPU_INTERPRETER) psxCpu = &psxInt; + else psxCpu = &psxRec; +#else + psxCpu = &psxInt; +#endif + if (psxCpu->Init() == -1) { + SysClose(); return -1; + } + psxCpu->Reset(); + } + + return 0; +} +#endif +// remove the leading and trailing spaces in a string +void trim(char *str) { + int pos = 0; + char *dest = str; + + // skip leading blanks + while (str[pos] <= ' ' && str[pos] > 0) + pos++; + + while (str[pos]) { + *(dest++) = str[pos]; + pos++; + } + + *(dest--) = '\0'; // store the null + + // remove trailing blanks + while (dest >= str && *dest <= ' ' && *dest > 0) + *(dest--) = '\0'; +} + +// lookup table for crc calculation +static unsigned short crctab[256] = { + 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, 0x8108, + 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, 0x1231, 0x0210, + 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, 0x9339, 0x8318, 0xB37B, + 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, 0x2462, 0x3443, 0x0420, 0x1401, + 0x64E6, 0x74C7, 0x44A4, 0x5485, 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, + 0xF5CF, 0xC5AC, 0xD58D, 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, + 0x5695, 0x46B4, 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, + 0xC7BC, 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, + 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, 0x5AF5, + 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, 0xDBFD, 0xCBDC, + 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, 0x6CA6, 0x7C87, 0x4CE4, + 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, + 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, + 0x2E32, 0x1E51, 0x0E70, 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, + 0x9F59, 0x8F78, 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, + 0xE16F, 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, + 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, 0x02B1, + 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, 0xB5EA, 0xA5CB, + 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, 0x34E2, 0x24C3, 0x14A0, + 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xA7DB, 0xB7FA, 0x8799, 0x97B8, + 0xE75F, 0xF77E, 0xC71D, 0xD73C, 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, + 0x7676, 0x4615, 0x5634, 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, + 0xB98A, 0xA9AB, 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, + 0x28A3, 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, + 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, 0xFD2E, + 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, 0x7C26, 0x6C07, + 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, 0xEF1F, 0xFF3E, 0xCF5D, + 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, 0x6E17, 0x7E36, 0x4E55, 0x5E74, + 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0 +}; + +u16 calcCrc(u8 *d, int len) { + u16 crc = 0; + int i; + + for (i = 0; i < len; i++) { + crc = crctab[(crc >> 8) ^ d[i]] ^ (crc << 8); + } + + return ~crc; +} diff --git a/libpcsxcore/misc.h b/libpcsxcore/misc.h new file mode 100644 index 0000000..ae3fc81 --- /dev/null +++ b/libpcsxcore/misc.h @@ -0,0 +1,77 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#ifndef __MISC_H__ +#define __MISC_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "psxcommon.h" +#include "coff.h" +#include "plugins.h" +#include "r3000a.h" +#include "psxmem.h" + +#undef s_addr + +typedef struct { + unsigned char id[8]; + u32 text; + u32 data; + u32 pc0; + u32 gp0; + u32 t_addr; + u32 t_size; + u32 d_addr; + u32 d_size; + u32 b_addr; + u32 b_size; + u32 s_addr; + u32 s_size; + u32 SavedSP; + u32 SavedFP; + u32 SavedGP; + u32 SavedRA; + u32 SavedS0; +} EXE_HEADER; + +extern char CdromId[10]; +extern char CdromLabel[33]; + +int LoadCdrom(); +int LoadCdromFile(const char *filename, EXE_HEADER *head); +int CheckCdrom(); +int Load(const char *ExePath); + +int SaveState(const char *file); +int LoadState(const char *file); +int CheckState(const char *file); + +int SendPcsxInfo(); +int RecvPcsxInfo(); + +void trim(char *str); +u16 calcCrc(u8 *d, int len); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/plugins.c b/libpcsxcore/plugins.c new file mode 100644 index 0000000..c0e6ca1 --- /dev/null +++ b/libpcsxcore/plugins.c @@ -0,0 +1,281 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +/* +* Plugin library callback/access functions. +*/ + +#include "plugins.h" +#include "cdriso.h" + +static char IsoFile[MAXPATHLEN] = ""; +static s64 cdOpenCaseTime = 0; + +CDRinit CDR_init; +CDRshutdown CDR_shutdown; +CDRopen CDR_open; +CDRclose CDR_close; +CDRtest CDR_test; +CDRgetTN CDR_getTN; +CDRgetTD CDR_getTD; +CDRreadTrack CDR_readTrack; +CDRgetBuffer CDR_getBuffer; +CDRplay CDR_play; +CDRstop CDR_stop; +CDRgetStatus CDR_getStatus; +CDRgetDriveLetter CDR_getDriveLetter; +CDRgetBufferSub CDR_getBufferSub; +CDRconfigure CDR_configure; +CDRabout CDR_about; +CDRsetfilename CDR_setfilename; +CDRreadCDDA CDR_readCDDA; +CDRgetTE CDR_getTE; + + +#ifdef ENABLE_SIO1API + +SIO1init SIO1_init; +SIO1shutdown SIO1_shutdown; +SIO1open SIO1_open; +SIO1close SIO1_close; +SIO1test SIO1_test; +SIO1configure SIO1_configure; +SIO1about SIO1_about; +SIO1pause SIO1_pause; +SIO1resume SIO1_resume; +SIO1keypressed SIO1_keypressed; +SIO1writeData8 SIO1_writeData8; +SIO1writeData16 SIO1_writeData16; +SIO1writeData32 SIO1_writeData32; +SIO1writeStat16 SIO1_writeStat16; +SIO1writeStat32 SIO1_writeStat32; +SIO1writeMode16 SIO1_writeMode16; +SIO1writeMode32 SIO1_writeMode32; +SIO1writeCtrl16 SIO1_writeCtrl16; +SIO1writeCtrl32 SIO1_writeCtrl32; +SIO1writeBaud16 SIO1_writeBaud16; +SIO1writeBaud32 SIO1_writeBaud32; +SIO1readData8 SIO1_readData8; +SIO1readData16 SIO1_readData16; +SIO1readData32 SIO1_readData32; +SIO1readStat16 SIO1_readStat16; +SIO1readStat32 SIO1_readStat32; +SIO1readMode16 SIO1_readMode16; +SIO1readMode32 SIO1_readMode32; +SIO1readCtrl16 SIO1_readCtrl16; +SIO1readCtrl32 SIO1_readCtrl32; +SIO1readBaud16 SIO1_readBaud16; +SIO1readBaud32 SIO1_readBaud32; +SIO1registerCallback SIO1_registerCallback; + +#endif + +static const char *err; + +#define CheckErr(func) { \ + err = SysLibError(); \ + if (err != NULL) { SysMessage(_("Error loading %s: %s"), func, err); return -1; } \ +} + +void CALLBACK GPU__displayText(char *pText) { + SysPrintf("%s\n", pText); +} + +long CALLBACK GPU__configure(void) { return 0; } +long CALLBACK GPU__test(void) { return 0; } +void CALLBACK GPU__about(void) {} +void CALLBACK GPU__makeSnapshot(void) {} +void CALLBACK GPU__keypressed(int key) {} +long CALLBACK GPU__getScreenPic(unsigned char *pMem) { return -1; } +long CALLBACK GPU__showScreenPic(unsigned char *pMem) { return -1; } +void CALLBACK GPUclearDynarec(void (CALLBACK *callback)(void)) {} +void CALLBACK GPUvBlank(int val) {} + +void *hCDRDriver = NULL; + +long CALLBACK CDR__play(unsigned char *sector) { return 0; } +long CALLBACK CDR__stop(void) { return 0; } + +long CALLBACK CDR__getStatus(struct CdrStat *stat) { + if (cdOpenCaseTime < 0 || cdOpenCaseTime > (s64)time(NULL)) + stat->Status = 0x10; + else + stat->Status = 0; + + return 0; +} + +char* CALLBACK CDR__getDriveLetter(void) { return NULL; } +long CALLBACK CDR__configure(void) { return 0; } +long CALLBACK CDR__test(void) { return 0; } +void CALLBACK CDR__about(void) {} +long CALLBACK CDR__setfilename(char*filename) { return 0; } + + +long CALLBACK SPU__configure(void) { return 0; } +void CALLBACK SPU__about(void) {} +long CALLBACK SPU__test(void) { return 0; } + +static unsigned char buf[256]; +unsigned char stdpar[10] = { 0x00, 0x41, 0x5a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; +unsigned char mousepar[8] = { 0x00, 0x12, 0x5a, 0xff, 0xff, 0xff, 0xff }; +unsigned char analogpar[9] = { 0x00, 0xff, 0x5a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; + +static int bufcount, bufc; + +PadDataS padd1, padd2; + +unsigned char _PADstartPoll(PadDataS *pad) { + bufc = 0; + + switch (pad->controllerType) { + case PSE_PAD_TYPE_MOUSE: + mousepar[3] = pad->buttonStatus & 0xff; + mousepar[4] = pad->buttonStatus >> 8; + mousepar[5] = pad->moveX; + mousepar[6] = pad->moveY; + + memcpy(buf, mousepar, 7); + bufcount = 6; + break; + case PSE_PAD_TYPE_NEGCON: // npc101/npc104(slph00001/slph00069) + analogpar[1] = 0x23; + analogpar[3] = pad->buttonStatus & 0xff; + analogpar[4] = pad->buttonStatus >> 8; + analogpar[5] = pad->rightJoyX; + analogpar[6] = pad->rightJoyY; + analogpar[7] = pad->leftJoyX; + analogpar[8] = pad->leftJoyY; + + memcpy(buf, analogpar, 9); + bufcount = 8; + break; + case PSE_PAD_TYPE_ANALOGPAD: // scph1150 + analogpar[1] = 0x73; + analogpar[3] = pad->buttonStatus & 0xff; + analogpar[4] = pad->buttonStatus >> 8; + analogpar[5] = pad->rightJoyX; + analogpar[6] = pad->rightJoyY; + analogpar[7] = pad->leftJoyX; + analogpar[8] = pad->leftJoyY; + + memcpy(buf, analogpar, 9); + bufcount = 8; + break; + case PSE_PAD_TYPE_ANALOGJOY: // scph1110 + analogpar[1] = 0x53; + analogpar[3] = pad->buttonStatus & 0xff; + analogpar[4] = pad->buttonStatus >> 8; + analogpar[5] = pad->rightJoyX; + analogpar[6] = pad->rightJoyY; + analogpar[7] = pad->leftJoyX; + analogpar[8] = pad->leftJoyY; + + memcpy(buf, analogpar, 9); + bufcount = 8; + break; + case PSE_PAD_TYPE_STANDARD: + default: + stdpar[3] = pad->buttonStatus & 0xff; + stdpar[4] = pad->buttonStatus >> 8; + + memcpy(buf, stdpar, 5); + bufcount = 4; + } + + return buf[bufc++]; +} + +unsigned char _PADpoll(unsigned char value) { + if (bufc > bufcount) return 0; + return buf[bufc++]; +} + +unsigned char CALLBACK PAD1__startPoll(int pad) { + PadDataS padd; + + PAD1_readPort1(&padd); + + return _PADstartPoll(&padd); +} + +unsigned char CALLBACK PAD1__poll(unsigned char value) { + return _PADpoll(value); +} + +long CALLBACK PAD1__configure(void) { return 0; } +void CALLBACK PAD1__about(void) {} +long CALLBACK PAD1__test(void) { return 0; } +long CALLBACK PAD1__query(void) { return 3; } +long CALLBACK PAD1__keypressed() { return 0; } + + +long CALLBACK PAD2__configure(void) { return 0; } +void CALLBACK PAD2__about(void) {} +long CALLBACK PAD2__test(void) { return 0; } +long CALLBACK PAD2__query(void) { return PSE_PAD_USE_PORT1 | PSE_PAD_USE_PORT2; } +long CALLBACK PAD2__keypressed() { return 0; } + + +void CALLBACK clearDynarec(void) { + psxCpu->Reset(); +} + +int LoadPlugins() { + int ret; + char Plugin[MAXPATHLEN]; + printf("LoadPlugins()"); + cdrIsoInit(); + + Config.UseNet = FALSE; + + ret = CDR_init(); + if (ret < 0) { SysMessage (_("Error initializing CD-ROM plugin: %d"), ret); return -1; } + ret = GPU_init(); + if (ret < 0) { SysMessage (_("Error initializing GPU plugin: %d"), ret); return -1; } + ret = SPU_init(); + if (ret < 0) { SysMessage (_("Error initializing SPU plugin: %d"), ret); return -1; } + ret = PAD1_init(1); + if (ret < 0) { SysMessage (_("Error initializing Controller 1 plugin: %d"), ret); return -1; } + ret = PAD2_init(2); + if (ret < 0) { SysMessage (_("Error initializing Controller 2 plugin: %d"), ret); return -1; } + + SysPrintf(_("Plugins loaded.\n")); + return 0; +} + +void SetIsoFile(const char *filename) { + if (filename == NULL) { + IsoFile[0] = '\0'; + return; + } + strncpy(IsoFile, filename, MAXPATHLEN); +} + +const char *GetIsoFile(void) { + return IsoFile; +} + +boolean UsingIso(void) { + return (IsoFile[0] != '\0'); +} + +void SetCdOpenCaseTime(s64 time) { + cdOpenCaseTime = time; +} diff --git a/libpcsxcore/plugins.h b/libpcsxcore/plugins.h new file mode 100644 index 0000000..0a689c2 --- /dev/null +++ b/libpcsxcore/plugins.h @@ -0,0 +1,350 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#ifndef __PLUGINS_H__ +#define __PLUGINS_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "psxcommon.h" + +//#define ENABLE_SIO1API 1 + +typedef void* HWND; +#define CALLBACK + +long GPUopen(unsigned long *, char *, char *); +long SPUopen(void); +long PADopen(unsigned long *); +//typedef long (*NETopen)(unsigned long *); +//typedef long (*SIO1open)(unsigned long *); + +#include "spu.h" + +#include "psemu_plugin_defs.h" +#include "decode_xa.h" + +int LoadPlugins(); +void ReleasePlugins(); +int OpenPlugins(); +void ClosePlugins(); + +typedef unsigned long (CALLBACK* PSEgetLibType)(void); +typedef unsigned long (CALLBACK* PSEgetLibVersion)(void); +typedef char *(CALLBACK* PSEgetLibName)(void); + +// GPU Functions +extern long GPUinit(void); +extern long GPUshutdown(void); +extern long GPUclose(void); +extern void GPUwriteStatus(uint32_t); +extern void GPUwriteData(uint32_t); +extern void GPUwriteDataMem(uint32_t *, int); +extern uint32_t GPUreadStatus(void); +extern uint32_t GPUreadData(void); +extern void GPUreadDataMem(uint32_t *, int); +extern long GPUdmaChain(uint32_t *,uint32_t); +extern void GPUupdateLace(void); +extern long GPUconfigure(void); +extern long GPUtest(void); +extern void GPUabout(void); +extern void GPUmakeSnapshot(void); +extern void GPUkeypressed(int); +extern void GPUdisplayText(char *); +typedef struct { + uint32_t ulFreezeVersion; + uint32_t ulStatus; + uint32_t ulControl[256]; + unsigned char psxVRam[1024*512*2]; +} GPUFreeze_t; +extern long GPUfreeze(uint32_t, GPUFreeze_t *); +extern long GPUgetScreenPic(unsigned char *); +extern long GPUshowScreenPic(unsigned char *); +extern void GPUclearDynarec(void (CALLBACK *callback)(void)); +extern void GPUvBlank(int); + +// GPU function pointers + +#define GPU_updateLace GPUupdateLace +#define GPU_init GPUinit +#define GPU_shutdown GPUshutdown +#define GPU_configure GPUconfigure +#define GPU_test GPUtest +#define GPU_about GPUabout +#define GPU_open GPUopen +#define GPU_close GPUclose +#define GPU_readStatus GPUreadStatus +#define GPU_readData GPUreadData +#define GPU_readDataMem GPUreadDataMem +#define GPU_writeStatus GPUwriteStatus +#define GPU_writeData GPUwriteData +#define GPU_writeDataMem GPUwriteDataMem +#define GPU_dmaChain GPUdmaChain +#define GPU_keypressed GPUkeypressed +#define GPU_displayText GPUdisplayText +#define GPU_makeSnapshot GPUmakeSnapshot +#define GPU_freeze GPUfreeze +#define GPU_getScreenPic GPUgetScreenPic +#define GPU_showScreenPic GPUshowScreenPic +#define GPU_clearDynarec GPUclearDynarec +#define GPU_vBlank GPUvBlank + + +// CD-ROM Functions +typedef long (CALLBACK* CDRinit)(void); +typedef long (CALLBACK* CDRshutdown)(void); +typedef long (CALLBACK* CDRopen)(void); +typedef long (CALLBACK* CDRclose)(void); +typedef long (CALLBACK* CDRgetTN)(unsigned char *); +typedef long (CALLBACK* CDRgetTD)(unsigned char, unsigned char *); +typedef long (CALLBACK* CDRreadTrack)(unsigned char *); +typedef unsigned char* (CALLBACK* CDRgetBuffer)(void); +typedef unsigned char* (CALLBACK* CDRgetBufferSub)(void); +typedef long (CALLBACK* CDRconfigure)(void); +typedef long (CALLBACK* CDRtest)(void); +typedef void (CALLBACK* CDRabout)(void); +typedef long (CALLBACK* CDRplay)(unsigned char *); +typedef long (CALLBACK* CDRstop)(void); +typedef long (CALLBACK* CDRsetfilename)(char *); +struct CdrStat { + uint32_t Type; + uint32_t Status; + unsigned char Time[3]; +}; +typedef long (CALLBACK* CDRgetStatus)(struct CdrStat *); +typedef char* (CALLBACK* CDRgetDriveLetter)(void); +struct SubQ { + char res0[12]; + unsigned char ControlAndADR; + unsigned char TrackNumber; + unsigned char IndexNumber; + unsigned char TrackRelativeAddress[3]; + unsigned char Filler; + unsigned char AbsoluteAddress[3]; + unsigned char CRC[2]; + char res1[72]; +}; +typedef long (CALLBACK* CDRreadCDDA)(unsigned char, unsigned char, unsigned char, unsigned char *); +typedef long (CALLBACK* CDRgetTE)(unsigned char, unsigned char *, unsigned char *, unsigned char *); + +// CD-ROM function pointers +extern CDRinit CDR_init; +extern CDRshutdown CDR_shutdown; +extern CDRopen CDR_open; +extern CDRclose CDR_close; +extern CDRtest CDR_test; +extern CDRgetTN CDR_getTN; +extern CDRgetTD CDR_getTD; +extern CDRreadTrack CDR_readTrack; +extern CDRgetBuffer CDR_getBuffer; +extern CDRgetBufferSub CDR_getBufferSub; +extern CDRplay CDR_play; +extern CDRstop CDR_stop; +extern CDRgetStatus CDR_getStatus; +extern CDRgetDriveLetter CDR_getDriveLetter; +extern CDRconfigure CDR_configure; +extern CDRabout CDR_about; +extern CDRsetfilename CDR_setfilename; +extern CDRreadCDDA CDR_readCDDA; +extern CDRgetTE CDR_getTE; + +// SPU Functions +long (SPUinit)(void); +long (SPUshutdown)(void); +long (SPUclose)(void); +void (SPUplaySample)(unsigned char); +void (SPUwriteRegister)(unsigned long, unsigned short); +unsigned short (SPUreadRegister)(unsigned long); +void (SPUwriteDMA)(unsigned short); +unsigned short (SPUreadDMA)(void); +void SPUwriteDMAMem(unsigned short *, int); +void (SPUreadDMAMem)(unsigned short *, int); +void (SPUplayADPCMchannel)(xa_decode_t *); +void (SPUregisterCallback)(void (CALLBACK *callback)(void)); +long (SPUconfigure)(void); +long (SPUtest)(void); +void (SPUabout)(void); +typedef struct { + unsigned char PluginName[8]; + uint32_t PluginVersion; + uint32_t Size; + unsigned char SPUPorts[0x200]; + unsigned char SPURam[0x80000]; + xa_decode_t xa; + unsigned char *SPUInfo; +} SPUFreeze_t; +long (SPUfreeze)(uint32_t, SPUFreeze_t *); +void (SPUasync)(uint32_t); +void (SPUplayCDDAchannel)(short *, int); + +// SPU function pointers +#define SPU_configure SPUconfigure +#define SPU_about SPUabout +#define SPU_init SPUinit +#define SPU_shutdown SPUshutdown +#define SPU_test SPUtest +#define SPU_open SPUopen +#define SPU_close SPUclose +#define SPU_playSample SPUplaySample +#define SPU_writeRegister SPUwriteRegister +#define SPU_readRegister SPUreadRegister +#define SPU_writeDMA SPUwriteDMA +#define SPU_readDMA SPUreadDMA +#define SPU_writeDMAMem SPUwriteDMAMem +#define SPU_readDMAMem SPUreadDMAMem +#define SPU_playADPCMchannel SPUplayADPCMchannel +#define SPU_freeze SPUfreeze +#define SPU_registerCallback SPUregisterCallback +//#define SPU_async SPUasync +#define SPU_playCDDAchannel SPUplayCDDAchannel + +// PAD Functions +long PADconfigure(void); +void PADabout(void); +long (PADinit)(long); +long (PADshutdown)(void); +long (PADtest)(void); +long (PADclose)(void); +long (PADquery)(void); +long (PADreadPort1)(PadDataS*); +long (PADreadPort2)(PadDataS*); +long (PADkeypressed)(void); +unsigned char (PADstartPoll)(int); +unsigned char (PADpoll)(unsigned char); +void (PADsetSensitive)(int); + +// PAD function pointers +#define PAD1_configure PADconfigure +#define PAD1_about PADabout +#define PAD1_init PADinit +#define PAD1_shutdown PADshutdown +#define PAD1_test PADtest +#define PAD1_open PADopen +#define PAD1_close PADclose +#define PAD1_query PADquery +#define PAD1_readPort1 PADreadPort1 +#define PAD1_keypressed PADkeypressed +#define PAD1_startPoll PADstartPoll +#define PAD1_poll PADpoll +#define PAD1_setSensitive PADsetSensitive + + +#define PAD2_configure PADconfigure +#define PAD2_about PADabout +#define PAD2_init PADinit +#define PAD2_shutdown PADshutdown +#define PAD2_test PADtest +#define PAD2_open PADopen +#define PAD2_close PADclose +#define PAD2_query PADquery +#define PAD2_readPort1 PADreadPort1 +#define PAD2_keypressed PADkeypressed +#define PAD2_startPoll PADstartPoll +#define PAD2_poll PADpoll +#define PAD2_setSensitive PADsetSensitive + + + + +#ifdef ENABLE_SIO1API + +// SIO1 Functions (link cable) +typedef long (CALLBACK* SIO1init)(void); +typedef long (CALLBACK* SIO1shutdown)(void); +typedef long (CALLBACK* SIO1close)(void); +typedef long (CALLBACK* SIO1configure)(void); +typedef long (CALLBACK* SIO1test)(void); +typedef void (CALLBACK* SIO1about)(void); +typedef void (CALLBACK* SIO1pause)(void); +typedef void (CALLBACK* SIO1resume)(void); +typedef long (CALLBACK* SIO1keypressed)(int); +typedef void (CALLBACK* SIO1writeData8)(unsigned char); +typedef void (CALLBACK* SIO1writeData16)(unsigned short); +typedef void (CALLBACK* SIO1writeData32)(unsigned long); +typedef void (CALLBACK* SIO1writeStat16)(unsigned short); +typedef void (CALLBACK* SIO1writeStat32)(unsigned long); +typedef void (CALLBACK* SIO1writeMode16)(unsigned short); +typedef void (CALLBACK* SIO1writeMode32)(unsigned long); +typedef void (CALLBACK* SIO1writeCtrl16)(unsigned short); +typedef void (CALLBACK* SIO1writeCtrl32)(unsigned long); +typedef void (CALLBACK* SIO1writeBaud16)(unsigned short); +typedef void (CALLBACK* SIO1writeBaud32)(unsigned long); +typedef unsigned char (CALLBACK* SIO1readData8)(void); +typedef unsigned short (CALLBACK* SIO1readData16)(void); +typedef unsigned long (CALLBACK* SIO1readData32)(void); +typedef unsigned short (CALLBACK* SIO1readStat16)(void); +typedef unsigned long (CALLBACK* SIO1readStat32)(void); +typedef unsigned short (CALLBACK* SIO1readMode16)(void); +typedef unsigned long (CALLBACK* SIO1readMode32)(void); +typedef unsigned short (CALLBACK* SIO1readCtrl16)(void); +typedef unsigned long (CALLBACK* SIO1readCtrl32)(void); +typedef unsigned short (CALLBACK* SIO1readBaud16)(void); +typedef unsigned long (CALLBACK* SIO1readBaud32)(void); +typedef void (CALLBACK* SIO1registerCallback)(void (CALLBACK *callback)(void)); + +// SIO1 function pointers +extern SIO1init SIO1_init; +extern SIO1shutdown SIO1_shutdown; +extern SIO1open SIO1_open; +extern SIO1close SIO1_close; +extern SIO1test SIO1_test; +extern SIO1configure SIO1_configure; +extern SIO1about SIO1_about; +extern SIO1pause SIO1_pause; +extern SIO1resume SIO1_resume; +extern SIO1keypressed SIO1_keypressed; +extern SIO1writeData8 SIO1_writeData8; +extern SIO1writeData16 SIO1_writeData16; +extern SIO1writeData32 SIO1_writeData32; +extern SIO1writeStat16 SIO1_writeStat16; +extern SIO1writeStat32 SIO1_writeStat32; +extern SIO1writeMode16 SIO1_writeMode16; +extern SIO1writeMode32 SIO1_writeMode32; +extern SIO1writeCtrl16 SIO1_writeCtrl16; +extern SIO1writeCtrl32 SIO1_writeCtrl32; +extern SIO1writeBaud16 SIO1_writeBaud16; +extern SIO1writeBaud32 SIO1_writeBaud32; +extern SIO1readData8 SIO1_readData8; +extern SIO1readData16 SIO1_readData16; +extern SIO1readData32 SIO1_readData32; +extern SIO1readStat16 SIO1_readStat16; +extern SIO1readStat32 SIO1_readStat32; +extern SIO1readMode16 SIO1_readMode16; +extern SIO1readMode32 SIO1_readMode32; +extern SIO1readCtrl16 SIO1_readCtrl16; +extern SIO1readCtrl32 SIO1_readCtrl32; +extern SIO1readBaud16 SIO1_readBaud16; +extern SIO1readBaud32 SIO1_readBaud32; +extern SIO1registerCallback SIO1_registerCallback; + +#endif + +void CALLBACK clearDynarec(void); + +void SetIsoFile(const char *filename); +const char *GetIsoFile(void); +boolean UsingIso(void); +void SetCdOpenCaseTime(s64 time); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/ppf.c b/libpcsxcore/ppf.c new file mode 100644 index 0000000..45c8733 --- /dev/null +++ b/libpcsxcore/ppf.c @@ -0,0 +1,332 @@ +/* PPF Patch Support for PCSX-Reloaded + * Copyright (c) 2009, Wei Mingzhi . + * + * Based on P.E.Op.S CDR Plugin by Pete Bernert. + * Copyright (c) 2002, Pete Bernert. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA + */ + +#include "psxcommon.h" +#include "ppf.h" +#include "cdrom.h" + +typedef struct tagPPF_DATA { + s32 addr; + s32 pos; + s32 anz; + struct tagPPF_DATA *pNext; +} PPF_DATA; + +typedef struct tagPPF_CACHE { + s32 addr; + struct tagPPF_DATA *pNext; +} PPF_CACHE; + +static PPF_CACHE *ppfCache = NULL; +static PPF_DATA *ppfHead = NULL, *ppfLast = NULL; +static int iPPFNum = 0; + +// using a linked data list, and address array +static void FillPPFCache() { + PPF_DATA *p; + PPF_CACHE *pc; + s32 lastaddr; + + p = ppfHead; + lastaddr = -1; + iPPFNum = 0; + + while (p != NULL) { + if (p->addr != lastaddr) iPPFNum++; + lastaddr = p->addr; + p = p->pNext; + } + + if (iPPFNum <= 0) return; + + pc = ppfCache = (PPF_CACHE *)malloc(iPPFNum * sizeof(PPF_CACHE)); + + iPPFNum--; + p = ppfHead; + lastaddr = -1; + + while (p != NULL) { + if (p->addr != lastaddr) { + pc->addr = p->addr; + pc->pNext = p; + pc++; + } + lastaddr = p->addr; + p = p->pNext; + } +} + +void FreePPFCache() { + PPF_DATA *p = ppfHead; + void *pn; + + while (p != NULL) { + pn = p->pNext; + free(p); + p = (PPF_DATA *)pn; + } + ppfHead = NULL; + ppfLast = NULL; + + if (ppfCache != NULL) free(ppfCache); + ppfCache = NULL; +} + +void CheckPPFCache(unsigned char *pB, unsigned char m, unsigned char s, unsigned char f) { + PPF_CACHE *pcstart, *pcend, *pcpos; + int addr = MSF2SECT(btoi(m), btoi(s), btoi(f)), pos, anz, start; + + if (ppfCache == NULL) return; + + pcstart = ppfCache; + if (addr < pcstart->addr) return; + pcend = ppfCache + iPPFNum; + if (addr > pcend->addr) return; + + while (1) { + if (addr == pcend->addr) { pcpos = pcend; break; } + + pcpos = pcstart + (pcend - pcstart) / 2; + if (pcpos == pcstart) break; + if (addr < pcpos->addr) { + pcend = pcpos; + continue; + } + if (addr > pcpos->addr) { + pcstart = pcpos; + continue; + } + break; + } + + if (addr == pcpos->addr) { + PPF_DATA *p = pcpos->pNext; + while (p != NULL && p->addr == addr) { + pos = p->pos - (CD_FRAMESIZE_RAW - DATA_SIZE); + anz = p->anz; + if (pos < 0) { start = -pos; pos = 0; anz -= start; } + else start = 0; + memcpy(pB + pos, (unsigned char *)(p + 1) + start, anz); + p = p->pNext; + } + } +} + +static void AddToPPF(s32 ladr, s32 pos, s32 anz, unsigned char *ppfmem) { + if (ppfHead == NULL) { + ppfHead = (PPF_DATA *)malloc(sizeof(PPF_DATA) + anz); + ppfHead->addr = ladr; + ppfHead->pNext = NULL; + ppfHead->pos = pos; + ppfHead->anz = anz; + memcpy(ppfHead + 1, ppfmem, anz); + iPPFNum = 1; + ppfLast = ppfHead; + } else { + PPF_DATA *p = ppfHead; + PPF_DATA *plast = NULL; + PPF_DATA *padd; + + if (ladr > ppfLast->addr || (ladr == ppfLast->addr && pos > ppfLast->pos)) { + p = NULL; + plast = ppfLast; + } else { + while (p != NULL) { + if (ladr < p->addr) break; + if (ladr == p->addr) { + while (p && ladr == p->addr && pos > p->pos) { + plast = p; + p = p->pNext; + } + break; + } + plast = p; + p = p->pNext; + } + } + + padd = (PPF_DATA *)malloc(sizeof(PPF_DATA) + anz); + padd->addr = ladr; + padd->pNext = p; + padd->pos = pos; + padd->anz = anz; + memcpy(padd + 1, ppfmem, anz); + iPPFNum++; + if (plast == NULL) ppfHead = padd; + else plast->pNext = padd; + + if (padd->pNext == NULL) ppfLast = padd; + } +} + +void BuildPPFCache() { + FILE *ppffile; + char buffer[12]; + char method, undo = 0, blockcheck = 0; + int dizlen, dizyn; + unsigned char ppfmem[512]; + char szPPF[MAXPATHLEN]; + int count, seekpos, pos; + u32 anz; // use 32-bit to avoid stupid overflows + s32 ladr, off, anx; + + FreePPFCache(); + + // Generate filename in the format of SLUS_123.45 + buffer[0] = toupper(CdromId[0]); + buffer[1] = toupper(CdromId[1]); + buffer[2] = toupper(CdromId[2]); + buffer[3] = toupper(CdromId[3]); + buffer[4] = '_'; + buffer[5] = CdromId[4]; + buffer[6] = CdromId[5]; + buffer[7] = CdromId[6]; + buffer[8] = '.'; + buffer[9] = CdromId[7]; + buffer[10] = CdromId[8]; + buffer[11] = '\0'; + + sprintf(szPPF, "%s%s", Config.PatchesDir, buffer); + + ppffile = fopen(szPPF, "rb"); + if (ppffile == NULL) return; + + memset(buffer, 0, 5); + fread(buffer, 3, 1, ppffile); + + if (strcmp(buffer, "PPF") != 0) { + SysPrintf(_("Invalid PPF patch: %s.\n"), szPPF); + fclose(ppffile); + return; + } + + fseek(ppffile, 5, SEEK_SET); + method = fgetc(ppffile); + + switch (method) { + case 0: // ppf1 + fseek(ppffile, 0, SEEK_END); + count = ftell(ppffile); + count -= 56; + seekpos = 56; + break; + + case 1: // ppf2 + fseek(ppffile, -8, SEEK_END); + + memset(buffer, 0, 5); + fread(buffer, 4, 1, ppffile); + + if (strcmp(".DIZ", buffer) != 0) { + dizyn = 0; + } else { + fread(&dizlen, 4, 1, ppffile); + dizlen = SWAP32(dizlen); + dizyn = 1; + } + + fseek(ppffile, 0, SEEK_END); + count = ftell(ppffile); + + if (dizyn == 0) { + count -= 1084; + seekpos = 1084; + } else { + count -= 1084; + count -= 38; + count -= dizlen; + seekpos = 1084; + } + break; + + case 2: // ppf3 + fseek(ppffile, 57, SEEK_SET); + blockcheck = fgetc(ppffile); + undo = fgetc(ppffile); + + fseek(ppffile, -6, SEEK_END); + memset(buffer, 0, 5); + fread(buffer, 4, 1, ppffile); + dizlen = 0; + + if (strcmp(".DIZ", buffer) == 0) { + fseek(ppffile, -2, SEEK_END); + fread(&dizlen, 2, 1, ppffile); + dizlen = SWAP32(dizlen); + dizlen += 36; + } + + fseek(ppffile, 0, SEEK_END); + count = ftell(ppffile); + count -= dizlen; + + if (blockcheck) { + seekpos = 1084; + count -= 1084; + } else { + seekpos = 60; + count -= 60; + } + break; + + default: + fclose(ppffile); + SysPrintf(_("Unsupported PPF version (%d).\n"), method + 1); + return; + } + + // now do the data reading + do { + fseek(ppffile, seekpos, SEEK_SET); + fread(&pos, 4, 1, ppffile); + pos = SWAP32(pos); + + if (method == 2) fread(buffer, 4, 1, ppffile); // skip 4 bytes on ppf3 (no int64 support here) + + anz = fgetc(ppffile); + fread(ppfmem, anz, 1, ppffile); + + ladr = pos / CD_FRAMESIZE_RAW; + off = pos % CD_FRAMESIZE_RAW; + + if (off + anz > CD_FRAMESIZE_RAW) { + anx = off + anz - CD_FRAMESIZE_RAW; + anz -= (unsigned char)anx; + AddToPPF(ladr + 1, 0, anx, &ppfmem[anz]); + } + + AddToPPF(ladr, off, anz, ppfmem); // add to link list + + if (method == 2) { + if (undo) anz += anz; + anz += 4; + } + + seekpos = seekpos + 5 + anz; + count = count - 5 - anz; + } while (count != 0); // loop til end + + fclose(ppffile); + + FillPPFCache(); // build address array + + SysPrintf(_("Loaded PPF %d.0 patch: %s.\n"), method + 1, szPPF); +} diff --git a/libpcsxcore/ppf.h b/libpcsxcore/ppf.h new file mode 100644 index 0000000..f578028 --- /dev/null +++ b/libpcsxcore/ppf.h @@ -0,0 +1,33 @@ +/* PPF Patch Support for PCSX-Reloaded + * Copyright (c) 2009, Wei Mingzhi . + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA + */ + +#ifndef __PPF_H__ +#define __PPF_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +void BuildPPFCache(); +void FreePPFCache(); +void CheckPPFCache(unsigned char *pB, unsigned char m, unsigned char s, unsigned char f); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/psemu_plugin_defs.h b/libpcsxcore/psemu_plugin_defs.h new file mode 100644 index 0000000..d1b05ac --- /dev/null +++ b/libpcsxcore/psemu_plugin_defs.h @@ -0,0 +1,285 @@ +#ifndef _PSEMU_PLUGIN_DEFS_H +#define _PSEMU_PLUGIN_DEFS_H + +#ifdef __cplusplus +extern "C" { +#endif + +// header version +#define _PPDK_HEADER_VERSION 3 + +#define PLUGIN_VERSION 1 + +// plugin type returned by PSEgetLibType (types can be merged if plugin is multi type!) +#define PSE_LT_CDR 1 +#define PSE_LT_GPU 2 +#define PSE_LT_SPU 4 +#define PSE_LT_PAD 8 +#define PSE_LT_NET 16 + +// DLL function return codes +#define PSE_ERR_SUCCESS 0 // every function in DLL if completed sucessfully should return this value +#define PSE_ERR_FATAL -1 // undefined error but fatal one, that kills all functionality + +// XXX_Init return values +// Those return values apply to all libraries +// currently obsolete - preserved for compatibilty + +#define PSE_INIT_ERR_SUCCESS 0 // initialization went OK +#define PSE_INIT_ERR_NOTCONFIGURED -2 // this driver is not configured +#define PSE_INIT_ERR_NOHARDWARE -3 // this driver can not operate properly on this hardware or hardware is not detected + +/* GPU PlugIn */ + +// GPU_Test return values + +// sucess, everything configured, and went OK. +#define PSE_GPU_ERR_SUCCESS 0 + +// ERRORS +// this error might be returned as critical error but none of below +#define PSE_GPU_ERR -20 + + +// this driver is not configured +#define PSE_GPU_ERR_NOTCONFIGURED PSE_GPU_ERR - 1 +// this driver failed Init +#define PSE_GPU_ERR_INIT PSE_GPU_ERR - 2 + +// WARNINGS +// this warning might be returned as undefined warning but allowing driver to continue +#define PSE_GPU_WARN 20 + +// GPU_Query - will be implemented soon + +typedef struct +{ + uint32_t flags; + uint32_t status; + void* window; + unsigned char reserved[100]; +} gpuQueryS; + +// gpuQueryS.flags +// if driver can operate in both modes it must support GPU_changeMode(); +#define PSE_GPU_FLAGS_FULLSCREEN 1 // this driver can operate in fullscreen mode +#define PSE_GPU_FLAGS_WINDOWED 2 // this driver can operate in windowed mode + +// gpuQueryS.status +#define PSE_GPU_STATUS_WINDOWWRONG 1 // this driver cannot operate in this windowed mode + +// GPU_Query End - will be implemented in v2 + + +/* CDR PlugIn */ + +// CDR_Test return values + +// sucess, everything configured, and went OK. +#define PSE_CDR_ERR_SUCCESS 0 + +// general failure (error undefined) +#define PSE_CDR_ERR_FAILURE -1 + +// ERRORS +#define PSE_CDR_ERR -40 +// this driver is not configured +#define PSE_CDR_ERR_NOTCONFIGURED PSE_CDR_ERR - 0 +// if this driver is unable to read data from medium +#define PSE_CDR_ERR_NOREAD PSE_CDR_ERR - 1 + +// WARNINGS +#define PSE_CDR_WARN 40 +// if this driver emulates lame mode ie. can read only 2048 tracks and sector header is emulated +// this might happen to CDROMS that do not support RAW mode reading - surelly it will kill many games +#define PSE_CDR_WARN_LAMECD PSE_CDR_WARN + 0 + + + + +/* SPU PlugIn */ + +// some info retricted (now!) + +// sucess, everything configured, and went OK. +#define PSE_SPU_ERR_SUCCESS 0 + +// ERRORS +// this error might be returned as critical error but none of below +#define PSE_SPU_ERR -60 + +// this driver is not configured +#define PSE_SPU_ERR_NOTCONFIGURED PSE_SPU_ERR - 1 +// this driver failed Init +#define PSE_SPU_ERR_INIT PSE_SPU_ERR - 2 + + +// WARNINGS +// this warning might be returned as undefined warning but allowing driver to continue +#define PSE_SPU_WARN 60 + + + + +/* PAD PlugIn */ + +/* + + functions that must be exported from PAD Plugin + + long PADinit(long flags); // called only once when PSEmu Starts + void PADshutdown(void); // called when PSEmu exits + long PADopen(PadInitS *); // called when PSEmu is running program + long PADclose(void); + long PADconfigure(void); + void PADabout(void); + long PADtest(void); // called from Configure Dialog and after PADopen(); + long PADquery(void); + + unsigned char PADstartPoll(int); + unsigned char PADpoll(unsigned char); + +*/ + +// PADquery responses (notice - values ORed) +// PSEmu will use them also in PADinit to tell Plugin which Ports will use +// notice that PSEmu will call PADinit and PADopen only once when they are from +// same plugin + +// might be used in port 1 +#define PSE_PAD_USE_PORT1 1 +// might be used in port 2 +#define PSE_PAD_USE_PORT2 2 + + + +// MOUSE SCPH-1030 +#define PSE_PAD_TYPE_MOUSE 1 +// NEGCON - 16 button analog controller SLPH-00001 +#define PSE_PAD_TYPE_NEGCON 2 +// GUN CONTROLLER - gun controller SLPH-00014 from Konami +#define PSE_PAD_TYPE_GUN 3 +// STANDARD PAD SCPH-1080, SCPH-1150 +#define PSE_PAD_TYPE_STANDARD 4 +// ANALOG JOYSTICK SCPH-1110 +#define PSE_PAD_TYPE_ANALOGJOY 5 +// GUNCON - gun controller SLPH-00034 from Namco +#define PSE_PAD_TYPE_GUNCON 6 +// ANALOG CONTROLLER SCPH-1150 +#define PSE_PAD_TYPE_ANALOGPAD 7 + + +// sucess, everything configured, and went OK. +#define PSE_PAD_ERR_SUCCESS 0 +// general plugin failure (undefined error) +#define PSE_PAD_ERR_FAILURE -1 + + +// ERRORS +// this error might be returned as critical error but none of below +#define PSE_PAD_ERR -80 +// this driver is not configured +#define PSE_PAD_ERR_NOTCONFIGURED PSE_PAD_ERR - 1 +// this driver failed Init +#define PSE_PAD_ERR_INIT PSE_PAD_ERR - 2 + + +// WARNINGS +// this warning might be returned as undefined warning but allowing driver to continue +#define PSE_PAD_WARN 80 + + +typedef struct +{ + // controler type - fill it withe predefined values above + unsigned char controllerType; + + // status of buttons - every controller fills this field + unsigned short buttonStatus; + + // for analog pad fill those next 4 bytes + // values are analog in range 0-255 where 127 is center position + unsigned char rightJoyX, rightJoyY, leftJoyX, leftJoyY; + + // for mouse fill those next 2 bytes + // values are in range -128 - 127 + unsigned char moveX, moveY; + + unsigned char reserved[91]; + +} PadDataS; + +/* NET PlugIn v2 */ +/* Added by linuzappz@pcsx.net */ + +/* Modes bits for NETsendData/NETrecvData */ +#define PSE_NET_BLOCKING 0x00000000 +#define PSE_NET_NONBLOCKING 0x00000001 + +/* note: unsupported fields should be zeroed. + +typedef struct { + char EmuName[32]; + char CdromID[9]; // ie. 'SCPH12345', no \0 trailing character + char CdromLabel[11]; + void *psxMem; + GPUshowScreenPic GPU_showScreenPic; + GPUdisplayText GPU_displayText; + PADsetSensitive PAD_setSensitive; + char GPUpath[256]; + char SPUpath[256]; + char CDRpath[256]; + char MCD1path[256]; + char MCD2path[256]; + char BIOSpath[256]; // 'HLE' for internal bios + char Unused[1024]; +} netInfo; + +*/ + +/* + basic funcs: + + long NETopen(HWND hWnd) + opens the connection. + shall return 0 on success, else -1. + -1 is also returned if the user selects offline mode. + + long NETclose() + closes the connection. + shall return 0 on success, else -1. + + void NETpause() + this is called when the user paused the emulator. + + void NETresume() + this is called when the user resumed the emulator. + + long NETqueryPlayer() + returns player number + + long NETsendPadData(void *pData, int Size) + this should be called for the first pad only on each side. + + long NETrecvPadData(void *pData, int Pad) + call this for Pad 1/2 to get the data sent by the above func. + + extended funcs: + + long NETsendData(void *pData, int Size, int Mode) + sends Size bytes from pData to the other side. + + long NETrecvData(void *pData, int Size, int Mode) + receives Size bytes from pData to the other side. + + void NETsetInfo(netInfo *info); + sets the netInfo struct. + + void NETkeypressed(int key) (linux only) + key is a XK_?? (X11) keycode. +*/ + +#ifdef __cplusplus +} +#endif +#endif // _PSEMU_PLUGIN_DEFS_H diff --git a/libpcsxcore/psxbios.c b/libpcsxcore/psxbios.c new file mode 100644 index 0000000..e2d2187 --- /dev/null +++ b/libpcsxcore/psxbios.c @@ -0,0 +1,2802 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +/* + * Internal simulated HLE BIOS. + */ + +// TODO: implement all system calls, count the exact CPU cycles of system calls. + +#include "psxbios.h" +#include "psxhw.h" + +char *biosA0n[256] = { +// 0x00 + "open", "lseek", "read", "write", + "close", "ioctl", "exit", "sys_a0_07", + "getc", "putc", "todigit", "atof", + "strtoul", "strtol", "abs", "labs", +// 0x10 + "atoi", "atol", "atob", "setjmp", + "longjmp", "strcat", "strncat", "strcmp", + "strncmp", "strcpy", "strncpy", "strlen", + "index", "rindex", "strchr", "strrchr", +// 0x20 + "strpbrk", "strspn", "strcspn", "strtok", + "strstr", "toupper", "tolower", "bcopy", + "bzero", "bcmp", "memcpy", "memset", + "memmove", "memcmp", "memchr", "rand", +// 0x30 + "srand", "qsort", "strtod", "malloc", + "free", "lsearch", "bsearch", "calloc", + "realloc", "InitHeap", "_exit", "getchar", + "putchar", "gets", "puts", "printf", +// 0x40 + "sys_a0_40", "LoadTest", "Load", "Exec", + "FlushCache", "InstallInterruptHandler", "GPU_dw", "mem2vram", + "SendGPUStatus", "GPU_cw", "GPU_cwb", "SendPackets", + "sys_a0_4c", "GetGPUStatus", "GPU_sync", "sys_a0_4f", +// 0x50 + "sys_a0_50", "LoadExec", "GetSysSp", "sys_a0_53", + "_96_init()", "_bu_init()", "_96_remove()", "sys_a0_57", + "sys_a0_58", "sys_a0_59", "sys_a0_5a", "dev_tty_init", + "dev_tty_open", "sys_a0_5d", "dev_tty_ioctl","dev_cd_open", +// 0x60 + "dev_cd_read", "dev_cd_close", "dev_cd_firstfile", "dev_cd_nextfile", + "dev_cd_chdir", "dev_card_open", "dev_card_read", "dev_card_write", + "dev_card_close", "dev_card_firstfile", "dev_card_nextfile","dev_card_erase", + "dev_card_undelete","dev_card_format", "dev_card_rename", "dev_card_6f", +// 0x70 + "_bu_init", "_96_init", "_96_remove", "sys_a0_73", + "sys_a0_74", "sys_a0_75", "sys_a0_76", "sys_a0_77", + "_96_CdSeekL", "sys_a0_79", "sys_a0_7a", "sys_a0_7b", + "_96_CdGetStatus", "sys_a0_7d", "_96_CdRead", "sys_a0_7f", +// 0x80 + "sys_a0_80", "sys_a0_81", "sys_a0_82", "sys_a0_83", + "sys_a0_84", "_96_CdStop", "sys_a0_86", "sys_a0_87", + "sys_a0_88", "sys_a0_89", "sys_a0_8a", "sys_a0_8b", + "sys_a0_8c", "sys_a0_8d", "sys_a0_8e", "sys_a0_8f", +// 0x90 + "sys_a0_90", "sys_a0_91", "sys_a0_92", "sys_a0_93", + "sys_a0_94", "sys_a0_95", "AddCDROMDevice", "AddMemCardDevide", + "DisableKernelIORedirection", "EnableKernelIORedirection", "sys_a0_9a", "sys_a0_9b", + "SetConf", "GetConf", "sys_a0_9e", "SetMem", +// 0xa0 + "_boot", "SystemError", "EnqueueCdIntr", "DequeueCdIntr", + "sys_a0_a4", "ReadSector", "get_cd_status", "bufs_cb_0", + "bufs_cb_1", "bufs_cb_2", "bufs_cb_3", "_card_info", + "_card_load", "_card_auto", "bufs_cd_4", "sys_a0_af", +// 0xb0 + "sys_a0_b0", "sys_a0_b1", "do_a_long_jmp", "sys_a0_b3", + "?? sub_function", +}; + +char *biosB0n[256] = { +// 0x00 + "SysMalloc", "sys_b0_01", "sys_b0_02", "sys_b0_03", + "sys_b0_04", "sys_b0_05", "sys_b0_06", "DeliverEvent", + "OpenEvent", "CloseEvent", "WaitEvent", "TestEvent", + "EnableEvent", "DisableEvent", "OpenTh", "CloseTh", +// 0x10 + "ChangeTh", "sys_b0_11", "InitPAD", "StartPAD", + "StopPAD", "PAD_init", "PAD_dr", "ReturnFromExecption", + "ResetEntryInt", "HookEntryInt", "sys_b0_1a", "sys_b0_1b", + "sys_b0_1c", "sys_b0_1d", "sys_b0_1e", "sys_b0_1f", +// 0x20 + "UnDeliverEvent", "sys_b0_21", "sys_b0_22", "sys_b0_23", + "sys_b0_24", "sys_b0_25", "sys_b0_26", "sys_b0_27", + "sys_b0_28", "sys_b0_29", "sys_b0_2a", "sys_b0_2b", + "sys_b0_2c", "sys_b0_2d", "sys_b0_2e", "sys_b0_2f", +// 0x30 + "sys_b0_30", "sys_b0_31", "open", "lseek", + "read", "write", "close", "ioctl", + "exit", "sys_b0_39", "getc", "putc", + "getchar", "putchar", "gets", "puts", +// 0x40 + "cd", "format", "firstfile", "nextfile", + "rename", "delete", "undelete", "AddDevice", + "RemoteDevice", "PrintInstalledDevices", "InitCARD", "StartCARD", + "StopCARD", "sys_b0_4d", "_card_write", "_card_read", +// 0x50 + "_new_card", "Krom2RawAdd", "sys_b0_52", "sys_b0_53", + "_get_errno", "_get_error", "GetC0Table", "GetB0Table", + "_card_chan", "sys_b0_59", "sys_b0_5a", "ChangeClearPAD", + "_card_status", "_card_wait", +}; + +char *biosC0n[256] = { +// 0x00 + "InitRCnt", "InitException", "SysEnqIntRP", "SysDeqIntRP", + "get_free_EvCB_slot", "get_free_TCB_slot", "ExceptionHandler", "InstallExeptionHandler", + "SysInitMemory", "SysInitKMem", "ChangeClearRCnt", "SystemError", + "InitDefInt", "sys_c0_0d", "sys_c0_0e", "sys_c0_0f", +// 0x10 + "sys_c0_10", "sys_c0_11", "InstallDevices", "FlushStfInOutPut", + "sys_c0_14", "_cdevinput", "_cdevscan", "_circgetc", + "_circputc", "ioabort", "sys_c0_1a", "KernelRedirect", + "PatchAOTable", +}; + +//#define r0 (psxRegs.GPR.n.r0) +#define at (psxRegs.GPR.n.at) +#define v0 (psxRegs.GPR.n.v0) +#define v1 (psxRegs.GPR.n.v1) +#define a0 (psxRegs.GPR.n.a0) +#define a1 (psxRegs.GPR.n.a1) +#define a2 (psxRegs.GPR.n.a2) +#define a3 (psxRegs.GPR.n.a3) +#define t0 (psxRegs.GPR.n.t0) +#define t1 (psxRegs.GPR.n.t1) +#define t2 (psxRegs.GPR.n.t2) +#define t3 (psxRegs.GPR.n.t3) +#define t4 (psxRegs.GPR.n.t4) +#define t5 (psxRegs.GPR.n.t5) +#define t6 (psxRegs.GPR.n.t6) +#define t7 (psxRegs.GPR.n.t7) +#define t8 (psxRegs.GPR.n.t8) +#define t9 (psxRegs.GPR.n.t9) +#define s0 (psxRegs.GPR.n.s0) +#define s1 (psxRegs.GPR.n.s1) +#define s2 (psxRegs.GPR.n.s2) +#define s3 (psxRegs.GPR.n.s3) +#define s4 (psxRegs.GPR.n.s4) +#define s5 (psxRegs.GPR.n.s5) +#define s6 (psxRegs.GPR.n.s6) +#define s7 (psxRegs.GPR.n.s7) +#define k0 (psxRegs.GPR.n.k0) +#define k1 (psxRegs.GPR.n.k1) +#define gp (psxRegs.GPR.n.gp) +#define sp (psxRegs.GPR.n.sp) +#define fp (psxRegs.GPR.n.s8) +#define ra (psxRegs.GPR.n.ra) +#define pc0 (psxRegs.pc) + +#define Ra0 ((char *)PSXM(a0)) +#define Ra1 ((char *)PSXM(a1)) +#define Ra2 ((char *)PSXM(a2)) +#define Ra3 ((char *)PSXM(a3)) +#define Rv0 ((char *)PSXM(v0)) +#define Rsp ((char *)PSXM(sp)) + +typedef struct { + u32 desc; + s32 status; + s32 mode; + u32 fhandler; +} EvCB[32]; + +#define EvStUNUSED 0x0000 +#define EvStWAIT 0x1000 +#define EvStACTIVE 0x2000 +#define EvStALREADY 0x4000 + +#define EvMdINTR 0x1000 +#define EvMdNOINTR 0x2000 + +/* +typedef struct { + s32 next; + s32 func1; + s32 func2; + s32 pad; +} SysRPst; +*/ + +typedef struct { + s32 status; + s32 mode; + u32 reg[32]; + u32 func; +} TCB; + +typedef struct { + u32 _pc0; + u32 gp0; + u32 t_addr; + u32 t_size; + u32 d_addr; + u32 d_size; + u32 b_addr; + u32 b_size; + u32 S_addr; + u32 s_size; + u32 _sp, _fp, _gp, ret, base; +} EXEC; + +struct DIRENTRY { + char name[20]; + s32 attr; + s32 size; + u32 next; + s32 head; + char system[4]; +}; + +typedef struct { + char name[32]; + u32 mode; + u32 offset; + u32 size; + u32 mcfile; +} FileDesc; + +static u32 *jmp_int = NULL; +static int *pad_buf = NULL; +static char *pad_buf1 = NULL, *pad_buf2 = NULL; +static int pad_buf1len, pad_buf2len; + +static u32 regs[35]; +static EvCB *Event; +static EvCB *HwEV; // 0xf0 +static EvCB *EvEV; // 0xf1 +static EvCB *RcEV; // 0xf2 +static EvCB *UeEV; // 0xf3 +static EvCB *SwEV; // 0xf4 +static EvCB *ThEV; // 0xff +static u32 *heap_addr = NULL; +static u32 *heap_end = NULL; +static u32 SysIntRP[8]; +static int CardState = -1; +static TCB Thread[8]; +static int CurThread = 0; +static FileDesc FDesc[32]; + +boolean hleSoftCall = FALSE; + +static inline void softCall(u32 pc) { + pc0 = pc; + ra = 0x80001000; + + hleSoftCall = TRUE; + + while (pc0 != 0x80001000) psxCpu->ExecuteBlock(); + + hleSoftCall = FALSE; +} + +static inline void softCall2(u32 pc) { + u32 sra = ra; + pc0 = pc; + ra = 0x80001000; + + hleSoftCall = TRUE; + + while (pc0 != 0x80001000) psxCpu->ExecuteBlock(); + ra = sra; + + hleSoftCall = FALSE; +} + +static inline void DeliverEvent(u32 ev, u32 spec) { + if (Event[ev][spec].status != EvStACTIVE) return; + +// Event[ev][spec].status = EvStALREADY; + if (Event[ev][spec].mode == EvMdINTR) { + softCall2(Event[ev][spec].fhandler); + } else Event[ev][spec].status = EvStALREADY; +} + +static inline void SaveRegs() { + memcpy(regs, psxRegs.GPR.r, 32*4); + regs[32] = psxRegs.GPR.n.lo; + regs[33] = psxRegs.GPR.n.hi; + regs[34] = psxRegs.pc; +} + +static inline void LoadRegs() { + memcpy(psxRegs.GPR.r, regs, 32*4); + psxRegs.GPR.n.lo = regs[32]; + psxRegs.GPR.n.hi = regs[33]; +} + +/* * +// * +// * +// System calls A0 */ + + +void psxBios_abs() { // 0x0e + if ((s32)a0 < 0) v0 = -(s32)a0; + else v0 = a0; + pc0 = ra; +} + +void psxBios_labs() { // 0x0f + psxBios_abs(); +} + +void psxBios_atoi() { // 0x10 + s32 n = 0, f = 0; + char *p = (char *)Ra0; + + for (;;p++) { + switch (*p) { + case ' ': case '\t': continue; + case '-': f++; + case '+': p++; + } + break; + } + + while (*p >= '0' && *p <= '9') { + n = n * 10 + *p++ - '0'; + } + + v0 = (f ? -n : n); + pc0 = ra; +} + +void psxBios_atol() { // 0x11 + psxBios_atoi(); +} + +void psxBios_setjmp() { // 0x13 + u32 *jmp_buf = (u32 *)Ra0; + int i; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosA0n[0x13]); +#endif + + jmp_buf[0] = ra; + jmp_buf[1] = sp; + jmp_buf[2] = fp; + for (i = 0; i < 8; i++) // s0-s7 + jmp_buf[3 + i] = psxRegs.GPR.r[16 + i]; + jmp_buf[11] = gp; + + v0 = 0; pc0 = ra; +} + +void psxBios_longjmp() { // 0x14 + u32 *jmp_buf = (u32 *)Ra0; + int i; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosA0n[0x14]); +#endif + + ra = jmp_buf[0]; /* ra */ + sp = jmp_buf[1]; /* sp */ + fp = jmp_buf[2]; /* fp */ + for (i = 0; i < 8; i++) // s0-s7 + psxRegs.GPR.r[16 + i] = jmp_buf[3 + i]; + gp = jmp_buf[11]; /* gp */ + + v0 = a1; pc0 = ra; +} + +void psxBios_strcat() { // 0x15 + char *p1 = (char *)Ra0, *p2 = (char *)Ra1; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %s, %s\n", biosA0n[0x15], Ra0, Ra1); +#endif + + while (*p1++); + --p1; + while ((*p1++ = *p2++) != '\0'); + + v0 = a0; pc0 = ra; +} + +void psxBios_strncat() { // 0x16 + char *p1 = (char *)Ra0, *p2 = (char *)Ra1; + s32 n = a2; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %s (%x), %s (%x), %d\n", biosA0n[0x16], Ra0, a0, Ra1, a1, a2); +#endif + + while (*p1++); + --p1; + while ((*p1++ = *p2++) != '\0') { + if (--n < 0) { + *--p1 = '\0'; + break; + } + } + + v0 = a0; pc0 = ra; +} + +void psxBios_strcmp() { // 0x17 + char *p1 = (char *)Ra0, *p2 = (char *)Ra1; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %s (%x), %s (%x)\n", biosA0n[0x17], Ra0, a0, Ra1, a1); +#endif + + while (*p1 == *p2++) { + if (*p1++ == '\0') { + v0 = 0; + pc0 = ra; + return; + } + } + + v0 = (*p1 - *--p2); + pc0 = ra; +} + +void psxBios_strncmp() { // 0x18 + char *p1 = (char *)Ra0, *p2 = (char *)Ra1; + s32 n = a2; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %s (%x), %s (%x), %d\n", biosA0n[0x18], Ra0, a0, Ra1, a1, a2); +#endif + + while (--n >= 0 && *p1 == *p2++) { + if (*p1++ == '\0') { + v0 = 0; + pc0 = ra; + return; + } + } + + v0 = (n < 0 ? 0 : *p1 - *--p2); + pc0 = ra; +} + +void psxBios_strcpy() { // 0x19 + char *p1 = (char *)Ra0, *p2 = (char *)Ra1; + while ((*p1++ = *p2++) != '\0'); + + v0 = a0; pc0 = ra; +} + +void psxBios_strncpy() { // 0x1a + char *p1 = (char *)Ra0, *p2 = (char *)Ra1; + s32 n = a2, i; + + for (i = 0; i < n; i++) { + if ((*p1++ = *p2++) == '\0') { + while (++i < n) { + *p1++ = '\0'; + } + v0 = a0; pc0 = ra; + return; + } + } + + v0 = a0; pc0 = ra; +} + +void psxBios_strlen() { // 0x1b + char *p = (char *)Ra0; + v0 = 0; + while (*p++) v0++; + pc0 = ra; +} + +void psxBios_index() { // 0x1c + char *p = (char *)Ra0; + + do { + if (*p == a1) { + v0 = a0 + (p - (char *)Ra0); + pc0 = ra; + return; + } + } while (*p++ != '\0'); + + v0 = 0; pc0 = ra; +} + +void psxBios_rindex() { // 0x1d + char *p = (char *)Ra0; + + v0 = 0; + + do { + if (*p == a1) + v0 = a0 + (p - (char *)Ra0); + } while (*p++ != '\0'); + + pc0 = ra; +} + +void psxBios_strchr() { // 0x1e + psxBios_index(); +} + +void psxBios_strrchr() { // 0x1f + psxBios_rindex(); +} + +void psxBios_strpbrk() { // 0x20 + char *p1 = (char *)Ra0, *p2 = (char *)Ra1, *scanp, c, sc; + + while ((c = *p1++) != '\0') { + for (scanp = p2; (sc = *scanp++) != '\0';) { + if (sc == c) { + v0 = a0 + (p1 - 1 - (char *)Ra0); + pc0 = ra; + return; + } + } + } + + // BUG: return a0 instead of NULL if not found + v0 = a0; pc0 = ra; +} + +void psxBios_strspn() { // 0x21 + char *p1, *p2; + + for (p1 = (char *)Ra0; *p1 != '\0'; p1++) { + for (p2 = (char *)Ra1; *p2 != '\0' && *p2 != *p1; p2++); + if (*p2 == '\0') break; + } + + v0 = p1 - (char *)Ra0; pc0 = ra; +} + +void psxBios_strcspn() { // 0x22 + char *p1, *p2; + + for (p1 = (char *)Ra0; *p1 != '\0'; p1++) { + for (p2 = (char *)Ra1; *p2 != '\0' && *p2 != *p1; p2++); + if (*p2 != '\0') break; + } + + v0 = p1 - (char *)Ra0; pc0 = ra; +} + +void psxBios_strtok() { // 0x23 + char *pcA0 = (char *)Ra0; + char *pcRet = strtok(pcA0, (char *)Ra1); + if (pcRet) + v0 = a0 + pcRet - pcA0; + else + v0 = 0; + pc0 = ra; +} + +void psxBios_strstr() { // 0x24 + char *p = (char *)Ra0, *p1, *p2; + + while (*p != '\0') { + p1 = p; + p2 = (char *)Ra1; + + while (*p1 != '\0' && *p2 != '\0' && *p1 == *p2) { + p1++; p2++; + } + + if (*p2 == '\0') { + v0 = a0 + (p - (char *)Ra0); + pc0 = ra; + return; + } + + p++; + } + + v0 = 0; pc0 = ra; +} + +void psxBios_toupper() { // 0x25 + v0 = (s8)(a0 & 0xff); + if (v0 >= 'a' && v0 <= 'z') v0 -= 'a' - 'A'; + pc0 = ra; +} + +void psxBios_tolower() { // 0x26 + v0 = (s8)(a0 & 0xff); + if (v0 >= 'A' && v0 <= 'Z') v0 += 'a' - 'A'; + pc0 = ra; +} + +void psxBios_bcopy() { // 0x27 + char *p1 = (char *)Ra1, *p2 = (char *)Ra0; + while (a2-- > 0) *p1++ = *p2++; + + pc0 = ra; +} + +void psxBios_bzero() { // 0x28 + char *p = (char *)Ra0; + while (a1-- > 0) *p++ = '\0'; + + pc0 = ra; +} + +void psxBios_bcmp() { // 0x29 + char *p1 = (char *)Ra0, *p2 = (char *)Ra1; + + if (a0 == 0 || a1 == 0) { v0 = 0; pc0 = ra; return; } + + while (a2-- > 0) { + if (*p1++ != *p2++) { + v0 = *p1 - *p2; // BUG: compare the NEXT byte + pc0 = ra; + return; + } + } + + v0 = 0; pc0 = ra; +} + +void psxBios_memcpy() { // 0x2a + char *p1 = (char *)Ra0, *p2 = (char *)Ra1; + while (a2-- > 0) *p1++ = *p2++; + + v0 = a0; pc0 = ra; +} + +void psxBios_memset() { // 0x2b + char *p = (char *)Ra0; + while (a2-- > 0) *p++ = (char)a1; + + v0 = a0; pc0 = ra; +} + +void psxBios_memmove() { // 0x2c + char *p1 = (char *)Ra0, *p2 = (char *)Ra1; + + if (p2 <= p1 && p2 + a2 > p1) { + a2++; // BUG: copy one more byte here + p1 += a2; + p2 += a2; + while (a2-- > 0) *--p1 = *--p2; + } else { + while (a2-- > 0) *p1++ = *p2++; + } + + v0 = a0; pc0 = ra; +} + +void psxBios_memcmp() { // 0x2d + psxBios_bcmp(); +} + +void psxBios_memchr() { // 0x2e + char *p = (char *)Ra0; + + while (a2-- > 0) { + if (*p++ != (s8)a1) continue; + v0 = a0 + (p - (char *)Ra0 - 1); + pc0 = ra; + return; + } + + v0 = 0; pc0 = ra; +} + +void psxBios_rand() { // 0x2f + u32 s = psxMu32(0x9010) * 1103515245 + 12345; + v0 = (s >> 16) & 0x7fff; + psxMu32ref(0x9010) = SWAPu32(s); + pc0 = ra; +} + +void psxBios_srand() { // 0x30 + psxMu32ref(0x9010) = SWAPu32(a0); + pc0 = ra; +} + +static u32 qscmpfunc, qswidth; + +static inline int qscmp(char *a, char *b) { + u32 sa0 = a0; + + a0 = sa0 + (a - (char *)PSXM(sa0)); + a1 = sa0 + (b - (char *)PSXM(sa0)); + + softCall2(qscmpfunc); + + a0 = sa0; + return (s32)v0; +} + +static inline void qexchange(char *i, char *j) { + char t; + int n = qswidth; + + do { + t = *i; + *i++ = *j; + *j++ = t; + } while (--n); +} + +static inline void q3exchange(char *i, char *j, char *k) { + char t; + int n = qswidth; + + do { + t = *i; + *i++ = *k; + *k++ = *j; + *j++ = t; + } while (--n); +} + +static void qsort_main(char *a, char *l) { + char *i, *j, *lp, *hp; + int c; + unsigned int n; + +start: + if ((n = l - a) <= qswidth) + return; + n = qswidth * (n / (2 * qswidth)); + hp = lp = a + n; + i = a; + j = l - qswidth; + while (TRUE) { + if (i < lp) { + if ((c = qscmp(i, lp)) == 0) { + qexchange(i, lp -= qswidth); + continue; + } + if (c < 0) { + i += qswidth; + continue; + } + } + +loop: + if (j > hp) { + if ((c = qscmp(hp, j)) == 0) { + qexchange(hp += qswidth, j); + goto loop; + } + if (c > 0) { + if (i == lp) { + q3exchange(i, hp += qswidth, j); + i = lp += qswidth; + goto loop; + } + qexchange(i, j); + j -= qswidth; + i += qswidth; + continue; + } + j -= qswidth; + goto loop; + } + + if (i == lp) { + if (lp - a >= l - hp) { + qsort_main(hp + qswidth, l); + l = lp; + } else { + qsort_main(a, lp); + a = hp + qswidth; + } + goto start; + } + + q3exchange(j, lp -= qswidth, i); + j = hp -= qswidth; + } +} + +void psxBios_qsort() { // 0x31 + qswidth = a2; + qscmpfunc = a3; + qsort_main((char *)Ra0, (char *)Ra0 + a1 * a2); + + pc0 = ra; +} + +void psxBios_malloc() { // 0x33 + unsigned int *chunk, *newchunk; + unsigned int dsize, csize, cstat; + int colflag; +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosA0n[0x33]); +#endif + + // scan through heap and combine free chunks of space + chunk = heap_addr; + colflag = 0; + while(chunk < heap_end) { + // get size and status of actual chunk + csize = ((u32)*chunk) & 0xfffffffc; + cstat = ((u32)*chunk) & 1; + + // it's a free chunk + if(cstat == 1) { + if(colflag == 0) { + newchunk = chunk; + dsize = csize; + colflag = 1; // let's begin a new collection of free memory + } + else dsize += (csize+4); // add the new size including header + } + // not a free chunk: did we start a collection ? + else { + if(colflag == 1) { // collection is over + colflag = 0; + *newchunk = SWAP32(dsize | 1); + } + } + + // next chunk + chunk = (u32*)((uptr)chunk + csize + 4); + } + // if neccessary free memory on end of heap + if (colflag == 1) + *newchunk = SWAP32(dsize | 1); + + chunk = heap_addr; + csize = ((u32)*chunk) & 0xfffffffc; + cstat = ((u32)*chunk) & 1; + dsize = (a0 + 3) & 0xfffffffc; + + // exit on uninitialized heap + if (chunk == NULL) { + SysPrintf("malloc %x,%x: Uninitialized Heap!\n", v0, a0); + v0 = 0; + pc0 = ra; + return; + } + + // search an unused chunk that is big enough until the end of the heap + while ((dsize > csize || cstat == 0) && chunk < heap_end ) { + chunk = (u32*)((uptr)chunk + csize + 4); + csize = ((u32)*chunk) & 0xfffffffc; + cstat = ((u32)*chunk) & 1; + } + + // catch out of memory + if(chunk >= heap_end) { SysPrintf("malloc %x,%x: Out of memory error!\n", v0, a0); v0 = 0; pc0 = ra; return; } + + // allocate memory + if(dsize == csize) { + // chunk has same size + *chunk &= 0xfffffffc; + } + else { + // split free chunk + *chunk = SWAP32(dsize); + newchunk = (u32*)((uptr)chunk + dsize + 4); + *newchunk = SWAP32((csize - dsize - 4) & 0xfffffffc | 1); + } + + // return pointer to allocated memory + v0 = ((unsigned long)chunk - (unsigned long)psxM) + 4; + v0|= 0x80000000; + SysPrintf ("malloc %x,%x\n", v0, a0); + pc0 = ra; +} + +void psxBios_free() { // 0x34 + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosA0n[0x34]); +#endif + + SysPrintf("free %x: %x bytes\n", a0, *(u32*)(Ra0-4)); + + *(u32*)(Ra0-4) |= 1; // set chunk to free + pc0 = ra; +} + +void psxBios_calloc() { // 0x37 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosA0n[0x37]); +#endif + + a0 = a0 * a1; + psxBios_malloc(); + memset(Rv0, 0, a0); +} + +void psxBios_realloc() { // 0x38 + u32 block = a0; + u32 size = a1; +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosA0n[0x38]); +#endif + + a0 = block; + psxBios_free(); + a0 = size; + psxBios_malloc(); +} + + +/* InitHeap(void *block , int n) */ +void psxBios_InitHeap() { // 0x39 + unsigned int size; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosA0n[0x39]); +#endif + + if (((a0 & 0x1fffff) + a1)>= 0x200000) size = 0x1ffffc - (a0 & 0x1fffff); + else size = a1; + + size &= 0xfffffffc; + + heap_addr = (u32 *)Ra0; + heap_end = (u32 *)((u8 *)heap_addr + size); + *heap_addr = SWAP32(size | 1); + + //SysPrintf("InitHeap %x,%x : %x %x\n",a0,a1, (uptr)heap_addr-(uptr)psxM, size); + SysPrintf("InitHeap %x,%x : %x\n",a0,a1, size); + + pc0 = ra; +} + +void psxBios_getchar() { //0x3b + v0 = getchar(); pc0 = ra; +} + +void psxBios_printf() { // 0x3f + char tmp[1024]; + char tmp2[1024]; + u32 save[4]; + char *ptmp = tmp; + int n=1, i=0, j; + + memcpy(save, (char*)PSXM(sp), 4 * 4); + psxMu32ref(sp) = SWAP32((u32)a0); + psxMu32ref(sp + 4) = SWAP32((u32)a1); + psxMu32ref(sp + 8) = SWAP32((u32)a2); + psxMu32ref(sp + 12) = SWAP32((u32)a3); + + while (Ra0[i]) { + switch (Ra0[i]) { + case '%': + j = 0; + tmp2[j++] = '%'; +_start: + switch (Ra0[++i]) { + case '.': + case 'l': + tmp2[j++] = Ra0[i]; goto _start; + default: + if (Ra0[i] >= '0' && Ra0[i] <= '9') { + tmp2[j++] = Ra0[i]; + goto _start; + } + break; + } + tmp2[j++] = Ra0[i]; + tmp2[j] = 0; + + switch (Ra0[i]) { + case 'f': case 'F': + ptmp += sprintf(ptmp, tmp2, (float)psxMu32(sp + n * 4)); n++; break; + case 'a': case 'A': + case 'e': case 'E': + case 'g': case 'G': + ptmp += sprintf(ptmp, tmp2, (double)psxMu32(sp + n * 4)); n++; break; + case 'p': + case 'i': + case 'd': case 'D': + case 'o': case 'O': + case 'x': case 'X': + ptmp += sprintf(ptmp, tmp2, (unsigned int)psxMu32(sp + n * 4)); n++; break; + case 'c': + ptmp += sprintf(ptmp, tmp2, (unsigned char)psxMu32(sp + n * 4)); n++; break; + case 's': + ptmp += sprintf(ptmp, tmp2, (char*)PSXM(psxMu32(sp + n * 4))); n++; break; + case '%': + *ptmp++ = Ra0[i]; break; + } + i++; + break; + default: + *ptmp++ = Ra0[i++]; + } + } + *ptmp = 0; + + memcpy((char*)PSXM(sp), save, 4 * 4); + + SysPrintf("%s", tmp); + + pc0 = ra; +} + +/* + * long Load(char *name, struct EXEC *header); + */ + +void psxBios_Load() { // 0x42 + EXE_HEADER eheader; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %s, %x\n", biosA0n[0x42], Ra0, a1); +#endif + + if (LoadCdromFile(Ra0, &eheader) == 0) { + memcpy(Ra1, ((char*)&eheader)+16, sizeof(EXEC)); + v0 = 1; + } else v0 = 0; + + pc0 = ra; +} + +/* + * int Exec(struct EXEC *header , int argc , char **argv); + */ + +void psxBios_Exec() { // 43 + EXEC *header = (EXEC*)Ra0; + u32 tmp; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %x, %x, %x\n", biosA0n[0x43], a0, a1, a2); +#endif + + header->_sp = sp; + header->_fp = fp; + header->_sp = sp; + header->_gp = gp; + header->ret = ra; + header->base = s0; + + if (header->S_addr != 0) { + tmp = header->S_addr + header->s_size; + sp = tmp; + fp = sp; + } + + gp = header->gp0; + + s0 = a0; + + a0 = a1; + a1 = a2; + + ra = 0x8000; + pc0 = header->_pc0; +} + +void psxBios_FlushCache() { // 44 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosA0n[0x44]); +#endif + + pc0 = ra; +} + +void psxBios_GPU_dw() { // 0x46 + int size; + s32 *ptr; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosA0n[0x46]); +#endif + + GPU_writeData(0xa0000000); + GPU_writeData((a1<<16)|(a0&0xffff)); + GPU_writeData((a3<<16)|(a2&0xffff)); + size = (a2*a3+1)/2; + ptr = (s32*)PSXM(Rsp[4]); //that is correct? + do { + GPU_writeData(SWAP32(*ptr)); + ptr++; + } while(--size); + + pc0 = ra; +} + +void psxBios_mem2vram() { // 0x47 + int size; + + GPU_writeData(0xa0000000); + GPU_writeData((a1<<16)|(a0&0xffff)); + GPU_writeData((a3<<16)|(a2&0xffff)); + size = (a2*a3+1)/2; + GPU_writeStatus(0x04000002); + psxHwWrite32(0x1f8010f4,0); + psxHwWrite32(0x1f8010f0,psxHwRead32(0x1f8010f0)|0x800); + psxHwWrite32(0x1f8010a0,Rsp[4]);//might have a buggy... + psxHwWrite32(0x1f8010a4,((size/16)<<16)|16); + psxHwWrite32(0x1f8010a8,0x01000201); + + pc0 = ra; +} + +void psxBios_SendGPU() { // 0x48 + GPU_writeStatus(a0); + pc0 = ra; +} + +void psxBios_GPU_cw() { // 0x49 + GPU_writeData(a0); + pc0 = ra; +} + +void psxBios_GPU_cwb() { // 0x4a + s32 *ptr = (s32*)Ra0; + int size = a1; + while(size--) { + GPU_writeData(SWAP32(*ptr)); + ptr++; + } + + pc0 = ra; +} + +void psxBios_GPU_SendPackets() { //4b: + GPU_writeStatus(0x04000002); + psxHwWrite32(0x1f8010f4,0); + psxHwWrite32(0x1f8010f0,psxHwRead32(0x1f8010f0)|0x800); + psxHwWrite32(0x1f8010a0,a0); + psxHwWrite32(0x1f8010a4,0); + psxHwWrite32(0x1f8010a8,0x010000401); + pc0 = ra; +} + +void psxBios_sys_a0_4c() { // 0x4c GPU relate + psxHwWrite32(0x1f8010a8,0x00000401); + GPU_writeData(0x0400000); + GPU_writeData(0x0200000); + GPU_writeData(0x0100000); + + pc0 = ra; +} + +void psxBios_GPU_GetGPUStatus() { // 0x4d + v0 = GPU_readStatus(); + pc0 = ra; +} + +#undef s_addr + +void psxBios_LoadExec() { // 51 + EXEC *header = (EXEC*)PSXM(0xf000); + u32 s_addr, s_size; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %s: %x,%x\n", biosA0n[0x51], Ra0, a1, a2); +#endif + s_addr = a1; s_size = a2; + + a1 = 0xf000; + psxBios_Load(); + + header->S_addr = s_addr; + header->s_size = s_size; + + a0 = 0xf000; a1 = 0; a2 = 0; + psxBios_Exec(); +} + +void psxBios__bu_init() { // 70 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosA0n[0x70]); +#endif + + DeliverEvent(0x11, 0x2); // 0xf0000011, 0x0004 + DeliverEvent(0x81, 0x2); // 0xf4000001, 0x0004 + + pc0 = ra; +} + +void psxBios__96_init() { // 71 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosA0n[0x71]); +#endif + + pc0 = ra; +} + +void psxBios__96_remove() { // 72 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosA0n[0x72]); +#endif + + pc0 = ra; +} + +void psxBios_SetMem() { // 9f + u32 new = psxHu32(0x1060); + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %x, %x\n", biosA0n[0x9f], a0, a1); +#endif + + switch(a0) { + case 2: + psxHu32ref(0x1060) = SWAP32(new); + psxMu32ref(0x060) = a0; + SysPrintf("Change effective memory : %d MBytes\n",a0); + break; + + case 8: + psxHu32ref(0x1060) = SWAP32(new | 0x300); + psxMu32ref(0x060) = a0; + SysPrintf("Change effective memory : %d MBytes\n",a0); + + default: + SysPrintf("Effective memory must be 2/8 MBytes\n"); + break; + } + + pc0 = ra; +} + +void psxBios__card_info() { // ab +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %x\n", biosA0n[0xab], a0); +#endif + +// DeliverEvent(0x11, 0x2); // 0xf0000011, 0x0004 + DeliverEvent(0x81, 0x2); // 0xf4000001, 0x0004 + + v0 = 1; pc0 = ra; +} + +void psxBios__card_load() { // ac +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %x\n", biosA0n[0xac], a0); +#endif + +// DeliverEvent(0x11, 0x2); // 0xf0000011, 0x0004 + DeliverEvent(0x81, 0x2); // 0xf4000001, 0x0004 + + v0 = 1; pc0 = ra; +} + +/* System calls B0 */ + +void psxBios_SetRCnt() { // 02 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x02]); +#endif + + a0&= 0x3; + if (a0 != 3) { + u32 mode=0; + + psxRcntWtarget(a0, a1); + if (a2&0x1000) mode|= 0x050; // Interrupt Mode + if (a2&0x0100) mode|= 0x008; // Count to 0xffff + if (a2&0x0010) mode|= 0x001; // Timer stop mode + if (a0 == 2) { if (a2&0x0001) mode|= 0x200; } // System Clock mode + else { if (a2&0x0001) mode|= 0x100; } // System Clock mode + + psxRcntWmode(a0, mode); + } + pc0 = ra; +} + +void psxBios_GetRCnt() { // 03 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x03]); +#endif + + a0&= 0x3; + if (a0 != 3) v0 = psxRcntRcount(a0); + else v0 = 0; + pc0 = ra; +} + +void psxBios_StartRCnt() { // 04 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x04]); +#endif + + a0&= 0x3; + if (a0 != 3) psxHu32ref(0x1074)|= SWAP32((u32)((1<<(a0+4)))); + else psxHu32ref(0x1074)|= SWAPu32(0x1); + v0 = 1; pc0 = ra; +} + +void psxBios_StopRCnt() { // 05 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x05]); +#endif + + a0&= 0x3; + if (a0 != 3) psxHu32ref(0x1074)&= SWAP32((u32)(~(1<<(a0+4)))); + else psxHu32ref(0x1074)&= SWAPu32(~0x1); + pc0 = ra; +} + +void psxBios_ResetRCnt() { // 06 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x06]); +#endif + + a0&= 0x3; + if (a0 != 3) { + psxRcntWmode(a0, 0); + psxRcntWtarget(a0, 0); + psxRcntWcount(a0, 0); + } + pc0 = ra; +} + + +/* gets ev for use with Event */ +#define GetEv() \ + ev = (a0 >> 24) & 0xf; \ + if (ev == 0xf) ev = 0x5; \ + ev*= 32; \ + ev+= a0&0x1f; + +/* gets spec for use with Event */ +#define GetSpec() \ + spec = 0; \ + switch (a1) { \ + case 0x0301: spec = 16; break; \ + case 0x0302: spec = 17; break; \ + default: \ + for (i=0; i<16; i++) if (a1 & (1 << i)) { spec = i; break; } \ + break; \ + } + +void psxBios_DeliverEvent() { // 07 + int ev, spec; + int i; + + GetEv(); + GetSpec(); + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s %x,%x\n", biosB0n[0x07], ev, spec); +#endif + + DeliverEvent(ev, spec); + + pc0 = ra; +} + +void psxBios_OpenEvent() { // 08 + int ev, spec; + int i; + + GetEv(); + GetSpec(); + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s %x,%x (class:%x, spec:%x, mode:%x, func:%x)\n", biosB0n[0x08], ev, spec, a0, a1, a2, a3); +#endif + + Event[ev][spec].status = EvStWAIT; + Event[ev][spec].mode = a2; + Event[ev][spec].fhandler = a3; + + v0 = ev | (spec << 8); + pc0 = ra; +} + +void psxBios_CloseEvent() { // 09 + int ev, spec; + + ev = a0 & 0xff; + spec = (a0 >> 8) & 0xff; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s %x,%x\n", biosB0n[0x09], ev, spec); +#endif + + Event[ev][spec].status = EvStUNUSED; + + v0 = 1; pc0 = ra; +} + +void psxBios_WaitEvent() { // 0a + int ev, spec; + + ev = a0 & 0xff; + spec = (a0 >> 8) & 0xff; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s %x,%x\n", biosB0n[0x0a], ev, spec); +#endif + + Event[ev][spec].status = EvStACTIVE; + + v0 = 1; pc0 = ra; +} + +void psxBios_TestEvent() { // 0b + int ev, spec; + + ev = a0 & 0xff; + spec = (a0 >> 8) & 0xff; + + if (Event[ev][spec].status == EvStALREADY) { + Event[ev][spec].status = EvStACTIVE; v0 = 1; + } else v0 = 0; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s %x,%x: %x\n", biosB0n[0x0b], ev, spec, v0); +#endif + + pc0 = ra; +} + +void psxBios_EnableEvent() { // 0c + int ev, spec; + + ev = a0 & 0xff; + spec = (a0 >> 8) & 0xff; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s %x,%x\n", biosB0n[0x0c], ev, spec); +#endif + + Event[ev][spec].status = EvStACTIVE; + + v0 = 1; pc0 = ra; +} + +void psxBios_DisableEvent() { // 0d + int ev, spec; + + ev = a0 & 0xff; + spec = (a0 >> 8) & 0xff; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s %x,%x\n", biosB0n[0x0d], ev, spec); +#endif + + Event[ev][spec].status = EvStWAIT; + + v0 = 1; pc0 = ra; +} + +/* + * long OpenTh(long (*func)(), unsigned long sp, unsigned long gp); + */ + +void psxBios_OpenTh() { // 0e + int th; + + for (th=1; th<8; th++) + if (Thread[th].status == 0) break; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %x\n", biosB0n[0x0e], th); +#endif + + Thread[th].status = 1; + Thread[th].func = a0; + Thread[th].reg[29] = a1; + Thread[th].reg[28] = a2; + + v0 = th; pc0 = ra; +} + +/* + * int CloseTh(long thread); + */ + +void psxBios_CloseTh() { // 0f + int th = a0 & 0xff; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %x\n", biosB0n[0x0f], th); +#endif + + if (Thread[th].status == 0) { + v0 = 0; + } else { + Thread[th].status = 0; + v0 = 1; + } + + pc0 = ra; +} + +/* + * int ChangeTh(long thread); + */ + +void psxBios_ChangeTh() { // 10 + int th = a0 & 0xff; + +#ifdef PSXBIOS_LOG +// PSXBIOS_LOG("psxBios_%s: %x\n", biosB0n[0x10], th); +#endif + + if (Thread[th].status == 0 || CurThread == th) { + v0 = 0; + + pc0 = ra; + } else { + v0 = 1; + + if (Thread[CurThread].status == 2) { + Thread[CurThread].status = 1; + Thread[CurThread].func = ra; + memcpy(Thread[CurThread].reg, psxRegs.GPR.r, 32*4); + } + + memcpy(psxRegs.GPR.r, Thread[th].reg, 32*4); + pc0 = Thread[th].func; + Thread[th].status = 2; + CurThread = th; + } +} + +void psxBios_InitPAD() { // 0x12 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x12]); +#endif + + pad_buf1 = (char*)Ra0; + pad_buf1len = a1; + pad_buf2 = (char*)Ra2; + pad_buf2len = a3; + + v0 = 1; pc0 = ra; +} + +void psxBios_StartPAD() { // 13 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x13]); +#endif + + psxHwWrite16(0x1f801074, (unsigned short)(psxHwRead16(0x1f801074) | 0x1)); + psxRegs.CP0.n.Status |= 0x401; + pc0 = ra; +} + +void psxBios_StopPAD() { // 14 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x14]); +#endif + + pad_buf1 = NULL; + pad_buf2 = NULL; + pc0 = ra; +} + +void psxBios_PAD_init() { // 15 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x15]); +#endif + psxHwWrite16(0x1f801074, (u16)(psxHwRead16(0x1f801074) | 0x1)); + pad_buf = (int *)Ra1; + *pad_buf = -1; + psxRegs.CP0.n.Status |= 0x401; + pc0 = ra; +} + +void psxBios_PAD_dr() { // 16 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x16]); +#endif + + v0 = -1; pc0 = ra; +} + +void psxBios_ReturnFromException() { // 17 + LoadRegs(); + + pc0 = psxRegs.CP0.n.EPC; + if (psxRegs.CP0.n.Cause & 0x80000000) pc0 += 4; + + psxRegs.CP0.n.Status = (psxRegs.CP0.n.Status & 0xfffffff0) | + ((psxRegs.CP0.n.Status & 0x3c) >> 2); +} + +void psxBios_ResetEntryInt() { // 18 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x18]); +#endif + + jmp_int = NULL; + pc0 = ra; +} + +void psxBios_HookEntryInt() { // 19 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x19]); +#endif + + jmp_int = (u32*)Ra0; + pc0 = ra; +} + +void psxBios_UnDeliverEvent() { // 0x20 + int ev, spec; + int i; + + GetEv(); + GetSpec(); + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s %x,%x\n", biosB0n[0x20], ev, spec); +#endif + + if (Event[ev][spec].status == EvStALREADY && + Event[ev][spec].mode == EvMdNOINTR) + Event[ev][spec].status = EvStACTIVE; + + pc0 = ra; +} + +#define buopen(mcd) { \ + strcpy(FDesc[1 + mcd].name, Ra0+5); \ + FDesc[1 + mcd].offset = 0; \ + FDesc[1 + mcd].mode = a1; \ + \ + for (i=1; i<16; i++) { \ + ptr = Mcd##mcd##Data + 128 * i; \ + if ((*ptr & 0xF0) != 0x50) continue; \ + if (strcmp(FDesc[1 + mcd].name, ptr+0xa)) continue; \ + FDesc[1 + mcd].mcfile = i; \ + SysPrintf("open %s\n", ptr+0xa); \ + v0 = 1 + mcd; \ + break; \ + } \ + if (a1 & 0x200 && v0 == -1) { /* FCREAT */ \ + for (i=1; i<16; i++) { \ + int j, xor = 0; \ + \ + ptr = Mcd##mcd##Data + 128 * i; \ + if ((*ptr & 0xF0) == 0x50) continue; \ + ptr[0] = 0x50 | (u8)(a1 >> 16); \ + ptr[4] = 0x00; \ + ptr[5] = 0x20; \ + ptr[6] = 0x00; \ + ptr[7] = 0x00; \ + ptr[8] = 'B'; \ + ptr[9] = 'I'; \ + strcpy(ptr+0xa, FDesc[1 + mcd].name); \ + for (j=0; j<127; j++) xor^= ptr[j]; \ + ptr[127] = xor; \ + FDesc[1 + mcd].mcfile = i; \ + SysPrintf("openC %s\n", ptr); \ + v0 = 1 + mcd; \ + SaveMcd(Config.Mcd##mcd, Mcd##mcd##Data, 128 * i, 128); \ + break; \ + } \ + } \ +} + +/* + * int open(char *name , int mode); + */ + +void psxBios_open() { // 0x32 + int i; + char *ptr; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %s,%x\n", biosB0n[0x32], Ra0, a1); +#endif + + v0 = -1; + + if (!strncmp(Ra0, "bu00", 4)) { + buopen(1); + } + + if (!strncmp(Ra0, "bu10", 4)) { + buopen(2); + } + + pc0 = ra; +} + +/* + * int lseek(int fd , int offset , int whence); + */ + +void psxBios_lseek() { // 0x33 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %x, %x, %x\n", biosB0n[0x33], a0, a1, a2); +#endif + + switch (a2) { + case 0: // SEEK_SET + FDesc[a0].offset = a1; + v0 = a1; +// DeliverEvent(0x11, 0x2); // 0xf0000011, 0x0004 +// DeliverEvent(0x81, 0x2); // 0xf4000001, 0x0004 + break; + + case 1: // SEEK_CUR + FDesc[a0].offset+= a1; + v0 = FDesc[a0].offset; + break; + } + + pc0 = ra; +} + +#define buread(mcd) { \ + SysPrintf("read %d: %x,%x (%s)\n", FDesc[1 + mcd].mcfile, FDesc[1 + mcd].offset, a2, Mcd##mcd##Data + 128 * FDesc[1 + mcd].mcfile + 0xa); \ + ptr = Mcd##mcd##Data + 8192 * FDesc[1 + mcd].mcfile + FDesc[1 + mcd].offset; \ + memcpy(Ra1, ptr, a2); \ + if (FDesc[1 + mcd].mode & 0x8000) v0 = 0; \ + else v0 = a2; \ + FDesc[1 + mcd].offset += v0; \ + DeliverEvent(0x11, 0x2); /* 0xf0000011, 0x0004 */ \ + DeliverEvent(0x81, 0x2); /* 0xf4000001, 0x0004 */ \ +} + +/* + * int read(int fd , void *buf , int nbytes); + */ + +void psxBios_read() { // 0x34 + char *ptr; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %x, %x, %x\n", biosB0n[0x34], a0, a1, a2); +#endif + + v0 = -1; + + switch (a0) { + case 2: buread(1); break; + case 3: buread(2); break; + } + + pc0 = ra; +} + +#define buwrite(mcd) { \ + u32 offset = + 8192 * FDesc[1 + mcd].mcfile + FDesc[1 + mcd].offset; \ + SysPrintf("write %d: %x,%x\n", FDesc[1 + mcd].mcfile, FDesc[1 + mcd].offset, a2); \ + ptr = Mcd##mcd##Data + offset; \ + memcpy(ptr, Ra1, a2); \ + FDesc[1 + mcd].offset += a2; \ + SaveMcd(Config.Mcd##mcd, Mcd##mcd##Data, offset, a2); \ + if (FDesc[1 + mcd].mode & 0x8000) v0 = 0; \ + else v0 = a2; \ + DeliverEvent(0x11, 0x2); /* 0xf0000011, 0x0004 */ \ + DeliverEvent(0x81, 0x2); /* 0xf4000001, 0x0004 */ \ +} + +/* + * int write(int fd , void *buf , int nbytes); + */ + +void psxBios_write() { // 0x35/0x03 + char *ptr; + + if (a0 == 1) { // stdout + char *ptr = Ra1; + + while (a2 > 0) { + SysPrintf("%c", *ptr++); a2--; + } + pc0 = ra; return; + } +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %x,%x,%x\n", biosB0n[0x35], a0, a1, a2); +#endif + + v0 = -1; + + switch (a0) { + case 2: buwrite(1); break; + case 3: buwrite(2); break; + } + + pc0 = ra; +} + +/* + * int close(int fd); + */ + +void psxBios_close() { // 0x36 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %x\n", biosB0n[0x36], a0); +#endif + + v0 = a0; + pc0 = ra; +} + +void psxBios_putchar() { // 3d + SysPrintf("%c", (char)a0); + pc0 = ra; +} + +void psxBios_puts() { // 3e/3f + SysPrintf("%s", Ra0); + pc0 = ra; +} + +char ffile[64], *pfile; +int nfile; + +#define bufile(mcd) { \ + while (nfile < 16) { \ + int match=1; \ + \ + ptr = Mcd##mcd##Data + 128 * nfile; \ + nfile++; \ + if ((*ptr & 0xF0) != 0x50) continue; \ + ptr+= 0xa; \ + if (pfile[0] == 0) { \ + strcpy(dir->name, ptr); \ + } else for (i=0; i<20; i++) { \ + if (pfile[i] == ptr[i]) { \ + dir->name[i] = ptr[i]; \ + if (ptr[i] == 0) break; else continue; } \ + if (pfile[i] == '?') { \ + dir->name[i] = ptr[i]; continue; } \ + if (pfile[i] == '*') { \ + strcpy(dir->name+i, ptr+i); break; } \ + match = 0; break; \ + } \ + SysPrintf("%d : %s = %s + %s (match=%d)\n", nfile, dir->name, pfile, ptr, match); \ + if (match == 0) continue; \ + dir->size = 8192; \ + v0 = _dir; \ + break; \ + } \ +} + +/* + * struct DIRENTRY* firstfile(char *name,struct DIRENTRY *dir); + */ + +void psxBios_firstfile() { // 42 + struct DIRENTRY *dir = (struct DIRENTRY *)Ra1; + u32 _dir = a1; + char *ptr; + int i; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %s\n", biosB0n[0x42], Ra0); +#endif + + v0 = 0; + + strcpy(ffile, Ra0); + pfile = ffile+5; + nfile = 1; + if (!strncmp(Ra0, "bu00", 4)) { + bufile(1); + v0 = _dir; + } + + if (!strncmp(Ra0, "bu10", 4)) { + bufile(2); + v0 = _dir; + } + + pc0 = ra; +} + +/* + * struct DIRENTRY* nextfile(struct DIRENTRY *dir); + */ + +void psxBios_nextfile() { // 43 + struct DIRENTRY *dir = (struct DIRENTRY *)Ra0; + u32 _dir = a0; + char *ptr; + int i; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %s\n", biosB0n[0x43], dir->name); +#endif + + v0 = 0; + + if (!strncmp(ffile, "bu00", 4)) { + bufile(1); + } + + if (!strncmp(ffile, "bu10", 4)) { + bufile(2); + } + + pc0 = ra; +} + +#define burename(mcd) { \ + for (i=1; i<16; i++) { \ + int namelen, j, xor = 0; \ + ptr = Mcd##mcd##Data + 128 * i; \ + if ((*ptr & 0xF0) != 0x50) continue; \ + if (strcmp(Ra0+5, ptr+0xa)) continue; \ + namelen = strlen(Ra1+5); \ + memcpy(ptr+0xa, Ra1+5, namelen); \ + memset(ptr+0xa+namelen, 0, 0x75-namelen); \ + for (j=0; j<127; j++) xor^= ptr[j]; \ + ptr[127] = xor; \ + SaveMcd(Config.Mcd##mcd, Mcd##mcd##Data, 128 * i + 0xa, 0x76); \ + v0 = 1; \ + break; \ + } \ +} + +/* + * int rename(char *old, char *new); + */ + +void psxBios_rename() { // 44 + char *ptr; + int i; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %s,%s\n", biosB0n[0x44], Ra0, Ra1); +#endif + + v0 = 0; + + if (!strncmp(Ra0, "bu00", 4) && !strncmp(Ra1, "bu00", 4)) { + burename(1); + } + + if (!strncmp(Ra0, "bu10", 4) && !strncmp(Ra1, "bu10", 4)) { + burename(2); + } + + pc0 = ra; +} + + +#define budelete(mcd) { \ + for (i=1; i<16; i++) { \ + ptr = Mcd##mcd##Data + 128 * i; \ + if ((*ptr & 0xF0) != 0x50) continue; \ + if (strcmp(Ra0+5, ptr+0xa)) continue; \ + *ptr = (*ptr & 0xf) | 0xA0; \ + SaveMcd(Config.Mcd##mcd, Mcd##mcd##Data, 128 * i, 1); \ + SysPrintf("delete %s\n", ptr+0xa); \ + v0 = 1; \ + break; \ + } \ +} + +/* + * int delete(char *name); + */ + +void psxBios_delete() { // 45 + char *ptr; + int i; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %s\n", biosB0n[0x45], Ra0); +#endif + + v0 = 0; + + if (!strncmp(Ra0, "bu00", 4)) { + budelete(1); + } + + if (!strncmp(Ra0, "bu10", 4)) { + budelete(2); + } + + pc0 = ra; +} + +void psxBios_InitCARD() { // 4a +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %x\n", biosB0n[0x4a], a0); +#endif + + CardState = 0; + + pc0 = ra; +} + +void psxBios_StartCARD() { // 4b +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x4b]); +#endif + + if (CardState == 0) CardState = 1; + + pc0 = ra; +} + +void psxBios_StopCARD() { // 4c +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x4c]); +#endif + + if (CardState == 1) CardState = 0; + + pc0 = ra; +} + +void psxBios__card_write() { // 0x4e + int port; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %x,%x,%x\n", biosB0n[0x4e], a0, a1, a2); +#endif + + port = a0 >> 4; + + if (port == 0) { + memcpy(Mcd1Data + a1 * 128, Ra2, 128); + SaveMcd(Config.Mcd1, Mcd1Data, a1 * 128, 128); + } else { + memcpy(Mcd2Data + a1 * 128, Ra2, 128); + SaveMcd(Config.Mcd2, Mcd2Data, a1 * 128, 128); + } + + DeliverEvent(0x11, 0x2); // 0xf0000011, 0x0004 +// DeliverEvent(0x81, 0x2); // 0xf4000001, 0x0004 + + v0 = 1; pc0 = ra; +} + +void psxBios__card_read() { // 0x4f + int port; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x4f]); +#endif + + port = a0 >> 4; + + if (port == 0) { + memcpy(Ra2, Mcd1Data + a1 * 128, 128); + } else { + memcpy(Ra2, Mcd2Data + a1 * 128, 128); + } + + DeliverEvent(0x11, 0x2); // 0xf0000011, 0x0004 +// DeliverEvent(0x81, 0x2); // 0xf4000001, 0x0004 + + v0 = 1; pc0 = ra; +} + +void psxBios__new_card() { // 0x50 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x50]); +#endif + + pc0 = ra; +} + +void psxBios_Krom2RawAdd() { // 0x51 + int i = 0; + + const u32 table_8140[][2] = { + {0x8140, 0x0000}, {0x8180, 0x0762}, {0x81ad, 0x0cc6}, {0x81b8, 0x0ca8}, + {0x81c0, 0x0f00}, {0x81c8, 0x0d98}, {0x81cf, 0x10c2}, {0x81da, 0x0e6a}, + {0x81e9, 0x13ce}, {0x81f0, 0x102c}, {0x81f8, 0x1590}, {0x81fc, 0x111c}, + {0x81fd, 0x1626}, {0x824f, 0x113a}, {0x8259, 0x20ee}, {0x8260, 0x1266}, + {0x827a, 0x24cc}, {0x8281, 0x1572}, {0x829b, 0x28aa}, {0x829f, 0x187e}, + {0x82f2, 0x32dc}, {0x8340, 0x2238}, {0x837f, 0x4362}, {0x8380, 0x299a}, + {0x8397, 0x4632}, {0x839f, 0x2c4c}, {0x83b7, 0x49f2}, {0x83bf, 0x2f1c}, + {0x83d7, 0x4db2}, {0x8440, 0x31ec}, {0x8461, 0x5dde}, {0x8470, 0x35ca}, + {0x847f, 0x6162}, {0x8480, 0x378c}, {0x8492, 0x639c}, {0x849f, 0x39a8}, + {0xffff, 0} + }; + + const u32 table_889f[][2] = { + {0x889f, 0x3d68}, {0x8900, 0x40ec}, {0x897f, 0x4fb0}, {0x8a00, 0x56f4}, + {0x8a7f, 0x65b8}, {0x8b00, 0x6cfc}, {0x8b7f, 0x7bc0}, {0x8c00, 0x8304}, + {0x8c7f, 0x91c8}, {0x8d00, 0x990c}, {0x8d7f, 0xa7d0}, {0x8e00, 0xaf14}, + {0x8e7f, 0xbdd8}, {0x8f00, 0xc51c}, {0x8f7f, 0xd3e0}, {0x9000, 0xdb24}, + {0x907f, 0xe9e8}, {0x9100, 0xf12c}, {0x917f, 0xfff0}, {0x9200, 0x10734}, + {0x927f, 0x115f8}, {0x9300, 0x11d3c}, {0x937f, 0x12c00}, {0x9400, 0x13344}, + {0x947f, 0x14208}, {0x9500, 0x1494c}, {0x957f, 0x15810}, {0x9600, 0x15f54}, + {0x967f, 0x16e18}, {0x9700, 0x1755c}, {0x977f, 0x18420}, {0x9800, 0x18b64}, + {0xffff, 0} + }; + + if (a0 >= 0x8140 && a0 <= 0x84be) { + while (table_8140[i][0] <= a0) i++; + a0 -= table_8140[i - 1][0]; + v0 = 0xbfc66000 + (a0 * 0x1e + table_8140[i - 1][1]); + } else if (a0 >= 0x889f && a0 <= 0x9872) { + while (table_889f[i][0] <= a0) i++; + a0 -= table_889f[i - 1][0]; + v0 = 0xbfc66000 + (a0 * 0x1e + table_889f[i - 1][1]); + } else { + v0 = 0xffffffff; + } + + pc0 = ra; +} + +void psxBios_GetC0Table() { // 56 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x56]); +#endif + + v0 = 0x674; pc0 = ra; +} + +void psxBios_GetB0Table() { // 57 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x57]); +#endif + + v0 = 0x874; pc0 = ra; +} + +void psxBios_ChangeClearPad() { // 5b +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %x\n", biosB0n[0x5b], a0); +#endif + + pc0 = ra; +} + +/* System calls C0 */ + +/* + * int SysEnqIntRP(int index , long *queue); + */ + +void psxBios_SysEnqIntRP() { // 02 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %x\n", biosC0n[0x02] ,a0); +#endif + + SysIntRP[a0] = a1; + + v0 = 0; pc0 = ra; +} + +/* + * int SysDeqIntRP(int index , long *queue); + */ + +void psxBios_SysDeqIntRP() { // 03 +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %x\n", biosC0n[0x03], a0); +#endif + + SysIntRP[a0] = 0; + + v0 = 0; pc0 = ra; +} + +void psxBios_ChangeClearRCnt() { // 0a + u32 *ptr; + +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: %x, %x\n", biosC0n[0x0a], a0, a1); +#endif + + ptr = (u32*)PSXM((a0 << 2) + 0x8600); + v0 = *ptr; + *ptr = a1; + +// psxRegs.CP0.n.Status|= 0x404; + pc0 = ra; +} + +void psxBios_dummy() { +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("unk %x call: %x\n", pc0 & 0x1fffff, t1); +#endif + pc0 = ra; +} + +void (*biosA0[256])(); +void (*biosB0[256])(); +void (*biosC0[256])(); + +#include "sjisfont.h" + +void psxBiosInit() { + u32 base, size; + u32 *ptr; + int i; + uLongf len; + + for(i = 0; i < 256; i++) { + biosA0[i] = NULL; + biosB0[i] = NULL; + biosC0[i] = NULL; + } + biosA0[0x3e] = psxBios_puts; + biosA0[0x3f] = psxBios_printf; + + biosB0[0x3d] = psxBios_putchar; + biosB0[0x3f] = psxBios_puts; + + if (!Config.HLE) return; + + for(i = 0; i < 256; i++) { + if (biosA0[i] == NULL) biosA0[i] = psxBios_dummy; + if (biosB0[i] == NULL) biosB0[i] = psxBios_dummy; + if (biosC0[i] == NULL) biosC0[i] = psxBios_dummy; + } + + biosA0[0x00] = psxBios_open; + biosA0[0x01] = psxBios_lseek; + biosA0[0x02] = psxBios_read; + biosA0[0x03] = psxBios_write; + biosA0[0x04] = psxBios_close; + //biosA0[0x05] = psxBios_ioctl; + //biosA0[0x06] = psxBios_exit; + //biosA0[0x07] = psxBios_sys_a0_07; + //biosA0[0x08] = psxBios_getc; + //biosA0[0x09] = psxBios_putc; + //biosA0[0x0a] = psxBios_todigit; + //biosA0[0x0b] = psxBios_atof; + //biosA0[0x0c] = psxBios_strtoul; + //biosA0[0x0d] = psxBios_strtol; + biosA0[0x0e] = psxBios_abs; + biosA0[0x0f] = psxBios_labs; + biosA0[0x10] = psxBios_atoi; + biosA0[0x11] = psxBios_atol; + //biosA0[0x12] = psxBios_atob; + biosA0[0x13] = psxBios_setjmp; + biosA0[0x14] = psxBios_longjmp; + biosA0[0x15] = psxBios_strcat; + biosA0[0x16] = psxBios_strncat; + biosA0[0x17] = psxBios_strcmp; + biosA0[0x18] = psxBios_strncmp; + biosA0[0x19] = psxBios_strcpy; + biosA0[0x1a] = psxBios_strncpy; + biosA0[0x1b] = psxBios_strlen; + biosA0[0x1c] = psxBios_index; + biosA0[0x1d] = psxBios_rindex; + biosA0[0x1e] = psxBios_strchr; + biosA0[0x1f] = psxBios_strrchr; + biosA0[0x20] = psxBios_strpbrk; + biosA0[0x21] = psxBios_strspn; + biosA0[0x22] = psxBios_strcspn; + biosA0[0x23] = psxBios_strtok; + biosA0[0x24] = psxBios_strstr; + biosA0[0x25] = psxBios_toupper; + biosA0[0x26] = psxBios_tolower; + biosA0[0x27] = psxBios_bcopy; + biosA0[0x28] = psxBios_bzero; + biosA0[0x29] = psxBios_bcmp; + biosA0[0x2a] = psxBios_memcpy; + biosA0[0x2b] = psxBios_memset; + biosA0[0x2c] = psxBios_memmove; + biosA0[0x2d] = psxBios_memcmp; + biosA0[0x2e] = psxBios_memchr; + biosA0[0x2f] = psxBios_rand; + biosA0[0x30] = psxBios_srand; + biosA0[0x31] = psxBios_qsort; + //biosA0[0x32] = psxBios_strtod; + biosA0[0x33] = psxBios_malloc; + biosA0[0x34] = psxBios_free; + //biosA0[0x35] = psxBios_lsearch; + //biosA0[0x36] = psxBios_bsearch; + biosA0[0x37] = psxBios_calloc; + biosA0[0x38] = psxBios_realloc; + biosA0[0x39] = psxBios_InitHeap; + //biosA0[0x3a] = psxBios__exit; + biosA0[0x3b] = psxBios_getchar; + biosA0[0x3c] = psxBios_putchar; + //biosA0[0x3d] = psxBios_gets; + //biosA0[0x40] = psxBios_sys_a0_40; + //biosA0[0x41] = psxBios_LoadTest; + biosA0[0x42] = psxBios_Load; + biosA0[0x43] = psxBios_Exec; + biosA0[0x44] = psxBios_FlushCache; + //biosA0[0x45] = psxBios_InstallInterruptHandler; + biosA0[0x46] = psxBios_GPU_dw; + biosA0[0x47] = psxBios_mem2vram; + biosA0[0x48] = psxBios_SendGPU; + biosA0[0x49] = psxBios_GPU_cw; + biosA0[0x4a] = psxBios_GPU_cwb; + biosA0[0x4b] = psxBios_GPU_SendPackets; + biosA0[0x4c] = psxBios_sys_a0_4c; + biosA0[0x4d] = psxBios_GPU_GetGPUStatus; + //biosA0[0x4e] = psxBios_GPU_sync; + //biosA0[0x4f] = psxBios_sys_a0_4f; + //biosA0[0x50] = psxBios_sys_a0_50; + biosA0[0x51] = psxBios_LoadExec; + //biosA0[0x52] = psxBios_GetSysSp; + //biosA0[0x53] = psxBios_sys_a0_53; + //biosA0[0x54] = psxBios__96_init_a54; + //biosA0[0x55] = psxBios__bu_init_a55; + //biosA0[0x56] = psxBios__96_remove_a56; + //biosA0[0x57] = psxBios_sys_a0_57; + //biosA0[0x58] = psxBios_sys_a0_58; + //biosA0[0x59] = psxBios_sys_a0_59; + //biosA0[0x5a] = psxBios_sys_a0_5a; + //biosA0[0x5b] = psxBios_dev_tty_init; + //biosA0[0x5c] = psxBios_dev_tty_open; + //biosA0[0x5d] = psxBios_sys_a0_5d; + //biosA0[0x5e] = psxBios_dev_tty_ioctl; + //biosA0[0x5f] = psxBios_dev_cd_open; + //biosA0[0x60] = psxBios_dev_cd_read; + //biosA0[0x61] = psxBios_dev_cd_close; + //biosA0[0x62] = psxBios_dev_cd_firstfile; + //biosA0[0x63] = psxBios_dev_cd_nextfile; + //biosA0[0x64] = psxBios_dev_cd_chdir; + //biosA0[0x65] = psxBios_dev_card_open; + //biosA0[0x66] = psxBios_dev_card_read; + //biosA0[0x67] = psxBios_dev_card_write; + //biosA0[0x68] = psxBios_dev_card_close; + //biosA0[0x69] = psxBios_dev_card_firstfile; + //biosA0[0x6a] = psxBios_dev_card_nextfile; + //biosA0[0x6b] = psxBios_dev_card_erase; + //biosA0[0x6c] = psxBios_dev_card_undelete; + //biosA0[0x6d] = psxBios_dev_card_format; + //biosA0[0x6e] = psxBios_dev_card_rename; + //biosA0[0x6f] = psxBios_dev_card_6f; + biosA0[0x70] = psxBios__bu_init; + biosA0[0x71] = psxBios__96_init; + biosA0[0x72] = psxBios__96_remove; + //biosA0[0x73] = psxBios_sys_a0_73; + //biosA0[0x74] = psxBios_sys_a0_74; + //biosA0[0x75] = psxBios_sys_a0_75; + //biosA0[0x76] = psxBios_sys_a0_76; + //biosA0[0x77] = psxBios_sys_a0_77; + //biosA0[0x78] = psxBios__96_CdSeekL; + //biosA0[0x79] = psxBios_sys_a0_79; + //biosA0[0x7a] = psxBios_sys_a0_7a; + //biosA0[0x7b] = psxBios_sys_a0_7b; + //biosA0[0x7c] = psxBios__96_CdGetStatus; + //biosA0[0x7d] = psxBios_sys_a0_7d; + //biosA0[0x7e] = psxBios__96_CdRead; + //biosA0[0x7f] = psxBios_sys_a0_7f; + //biosA0[0x80] = psxBios_sys_a0_80; + //biosA0[0x81] = psxBios_sys_a0_81; + //biosA0[0x82] = psxBios_sys_a0_82; + //biosA0[0x83] = psxBios_sys_a0_83; + //biosA0[0x84] = psxBios_sys_a0_84; + //biosA0[0x85] = psxBios__96_CdStop; + //biosA0[0x86] = psxBios_sys_a0_86; + //biosA0[0x87] = psxBios_sys_a0_87; + //biosA0[0x88] = psxBios_sys_a0_88; + //biosA0[0x89] = psxBios_sys_a0_89; + //biosA0[0x8a] = psxBios_sys_a0_8a; + //biosA0[0x8b] = psxBios_sys_a0_8b; + //biosA0[0x8c] = psxBios_sys_a0_8c; + //biosA0[0x8d] = psxBios_sys_a0_8d; + //biosA0[0x8e] = psxBios_sys_a0_8e; + //biosA0[0x8f] = psxBios_sys_a0_8f; + //biosA0[0x90] = psxBios_sys_a0_90; + //biosA0[0x91] = psxBios_sys_a0_91; + //biosA0[0x92] = psxBios_sys_a0_92; + //biosA0[0x93] = psxBios_sys_a0_93; + //biosA0[0x94] = psxBios_sys_a0_94; + //biosA0[0x95] = psxBios_sys_a0_95; + //biosA0[0x96] = psxBios_AddCDROMDevice; + //biosA0[0x97] = psxBios_AddMemCardDevide; + //biosA0[0x98] = psxBios_DisableKernelIORedirection; + //biosA0[0x99] = psxBios_EnableKernelIORedirection; + //biosA0[0x9a] = psxBios_sys_a0_9a; + //biosA0[0x9b] = psxBios_sys_a0_9b; + //biosA0[0x9c] = psxBios_SetConf; + //biosA0[0x9d] = psxBios_GetConf; + //biosA0[0x9e] = psxBios_sys_a0_9e; + biosA0[0x9f] = psxBios_SetMem; + //biosA0[0xa0] = psxBios__boot; + //biosA0[0xa1] = psxBios_SystemError; + //biosA0[0xa2] = psxBios_EnqueueCdIntr; + //biosA0[0xa3] = psxBios_DequeueCdIntr; + //biosA0[0xa4] = psxBios_sys_a0_a4; + //biosA0[0xa5] = psxBios_ReadSector; + //biosA0[0xa6] = psxBios_get_cd_status; + //biosA0[0xa7] = psxBios_bufs_cb_0; + //biosA0[0xa8] = psxBios_bufs_cb_1; + //biosA0[0xa9] = psxBios_bufs_cb_2; + //biosA0[0xaa] = psxBios_bufs_cb_3; + biosA0[0xab] = psxBios__card_info; + biosA0[0xac] = psxBios__card_load; + //biosA0[0axd] = psxBios__card_auto; + //biosA0[0xae] = psxBios_bufs_cd_4; + //biosA0[0xaf] = psxBios_sys_a0_af; + //biosA0[0xb0] = psxBios_sys_a0_b0; + //biosA0[0xb1] = psxBios_sys_a0_b1; + //biosA0[0xb2] = psxBios_do_a_long_jmp + //biosA0[0xb3] = psxBios_sys_a0_b3; + //biosA0[0xb4] = psxBios_sub_function; +//*******************B0 CALLS**************************** + //biosB0[0x00] = psxBios_SysMalloc; + //biosB0[0x01] = psxBios_sys_b0_01; + biosB0[0x02] = psxBios_SetRCnt; + biosB0[0x03] = psxBios_GetRCnt; + biosB0[0x04] = psxBios_StartRCnt; + biosB0[0x05] = psxBios_StopRCnt; + biosB0[0x06] = psxBios_ResetRCnt; + biosB0[0x07] = psxBios_DeliverEvent; + biosB0[0x08] = psxBios_OpenEvent; + biosB0[0x09] = psxBios_CloseEvent; + biosB0[0x0a] = psxBios_WaitEvent; + biosB0[0x0b] = psxBios_TestEvent; + biosB0[0x0c] = psxBios_EnableEvent; + biosB0[0x0d] = psxBios_DisableEvent; + biosB0[0x0e] = psxBios_OpenTh; + biosB0[0x0f] = psxBios_CloseTh; + biosB0[0x10] = psxBios_ChangeTh; + //biosB0[0x11] = psxBios_psxBios_b0_11; + biosB0[0x12] = psxBios_InitPAD; + biosB0[0x13] = psxBios_StartPAD; + biosB0[0x14] = psxBios_StopPAD; + biosB0[0x15] = psxBios_PAD_init; + biosB0[0x16] = psxBios_PAD_dr; + biosB0[0x17] = psxBios_ReturnFromException; + biosB0[0x18] = psxBios_ResetEntryInt; + biosB0[0x19] = psxBios_HookEntryInt; + //biosB0[0x1a] = psxBios_sys_b0_1a; + //biosB0[0x1b] = psxBios_sys_b0_1b; + //biosB0[0x1c] = psxBios_sys_b0_1c; + //biosB0[0x1d] = psxBios_sys_b0_1d; + //biosB0[0x1e] = psxBios_sys_b0_1e; + //biosB0[0x1f] = psxBios_sys_b0_1f; + biosB0[0x20] = psxBios_UnDeliverEvent; + //biosB0[0x21] = psxBios_sys_b0_21; + //biosB0[0x22] = psxBios_sys_b0_22; + //biosB0[0x23] = psxBios_sys_b0_23; + //biosB0[0x24] = psxBios_sys_b0_24; + //biosB0[0x25] = psxBios_sys_b0_25; + //biosB0[0x26] = psxBios_sys_b0_26; + //biosB0[0x27] = psxBios_sys_b0_27; + //biosB0[0x28] = psxBios_sys_b0_28; + //biosB0[0x29] = psxBios_sys_b0_29; + //biosB0[0x2a] = psxBios_sys_b0_2a; + //biosB0[0x2b] = psxBios_sys_b0_2b; + //biosB0[0x2c] = psxBios_sys_b0_2c; + //biosB0[0x2d] = psxBios_sys_b0_2d; + //biosB0[0x2e] = psxBios_sys_b0_2e; + //biosB0[0x2f] = psxBios_sys_b0_2f; + //biosB0[0x30] = psxBios_sys_b0_30; + //biosB0[0x31] = psxBios_sys_b0_31; + biosB0[0x32] = psxBios_open; + biosB0[0x33] = psxBios_lseek; + biosB0[0x34] = psxBios_read; + biosB0[0x35] = psxBios_write; + biosB0[0x36] = psxBios_close; + //biosB0[0x37] = psxBios_ioctl; + //biosB0[0x38] = psxBios_exit; + //biosB0[0x39] = psxBios_sys_b0_39; + //biosB0[0x3a] = psxBios_getc; + //biosB0[0x3b] = psxBios_putc; + biosB0[0x3c] = psxBios_getchar; + //biosB0[0x3e] = psxBios_gets; + //biosB0[0x40] = psxBios_cd; + //biosB0[0x41] = psxBios_format; + biosB0[0x42] = psxBios_firstfile; + biosB0[0x43] = psxBios_nextfile; + biosB0[0x44] = psxBios_rename; + biosB0[0x45] = psxBios_delete; + //biosB0[0x46] = psxBios_undelete; + //biosB0[0x47] = psxBios_AddDevice; + //biosB0[0x48] = psxBios_RemoteDevice; + //biosB0[0x49] = psxBios_PrintInstalledDevices; + biosB0[0x4a] = psxBios_InitCARD; + biosB0[0x4b] = psxBios_StartCARD; + biosB0[0x4c] = psxBios_StopCARD; + //biosB0[0x4d] = psxBios_sys_b0_4d; + biosB0[0x4e] = psxBios__card_write; + biosB0[0x4f] = psxBios__card_read; + biosB0[0x50] = psxBios__new_card; + biosB0[0x51] = psxBios_Krom2RawAdd; + //biosB0[0x52] = psxBios_sys_b0_52; + //biosB0[0x53] = psxBios_sys_b0_53; + //biosB0[0x54] = psxBios__get_errno; + //biosB0[0x55] = psxBios__get_error; + biosB0[0x56] = psxBios_GetC0Table; + biosB0[0x57] = psxBios_GetB0Table; + //biosB0[0x58] = psxBios__card_chan; + //biosB0[0x59] = psxBios_sys_b0_59; + //biosB0[0x5a] = psxBios_sys_b0_5a; + biosB0[0x5b] = psxBios_ChangeClearPad; + //biosB0[0x5c] = psxBios__card_status; + //biosB0[0x5d] = psxBios__card_wait; +//*******************C0 CALLS**************************** + //biosC0[0x00] = psxBios_InitRCnt; + //biosC0[0x01] = psxBios_InitException; + biosC0[0x02] = psxBios_SysEnqIntRP; + biosC0[0x03] = psxBios_SysDeqIntRP; + //biosC0[0x04] = psxBios_get_free_EvCB_slot; + //biosC0[0x05] = psxBios_get_free_TCB_slot; + //biosC0[0x06] = psxBios_ExceptionHandler; + //biosC0[0x07] = psxBios_InstallExeptionHandler; + //biosC0[0x08] = psxBios_SysInitMemory; + //biosC0[0x09] = psxBios_SysInitKMem; + biosC0[0x0a] = psxBios_ChangeClearRCnt; + //biosC0[0x0b] = psxBios_SystemError; + //biosC0[0x0c] = psxBios_InitDefInt; + //biosC0[0x0d] = psxBios_sys_c0_0d; + //biosC0[0x0e] = psxBios_sys_c0_0e; + //biosC0[0x0f] = psxBios_sys_c0_0f; + //biosC0[0x10] = psxBios_sys_c0_10; + //biosC0[0x11] = psxBios_sys_c0_11; + //biosC0[0x12] = psxBios_InstallDevices; + //biosC0[0x13] = psxBios_FlushStfInOutPut; + //biosC0[0x14] = psxBios_sys_c0_14; + //biosC0[0x15] = psxBios__cdevinput; + //biosC0[0x16] = psxBios__cdevscan; + //biosC0[0x17] = psxBios__circgetc; + //biosC0[0x18] = psxBios__circputc; + //biosC0[0x19] = psxBios_ioabort; + //biosC0[0x1a] = psxBios_sys_c0_1a + //biosC0[0x1b] = psxBios_KernelRedirect; + //biosC0[0x1c] = psxBios_PatchAOTable; +//************** THE END *************************************** +/**/ + base = 0x1000; + size = sizeof(EvCB) * 32; + Event = (void *)&psxR[base]; base += size * 6; + memset(Event, 0, size * 6); + HwEV = Event; + EvEV = Event + 32; + RcEV = Event + 32 * 2; + UeEV = Event + 32 * 3; + SwEV = Event + 32 * 4; + ThEV = Event + 32 * 5; + + ptr = (u32 *)&psxM[0x0874]; // b0 table + ptr[0] = SWAPu32(0x4c54 - 0x884); + + ptr = (u32 *)&psxM[0x0674]; // c0 table + ptr[6] = SWAPu32(0xc80); + + memset(SysIntRP, 0, sizeof(SysIntRP)); + memset(Thread, 0, sizeof(Thread)); + Thread[0].status = 2; // main thread + + psxMu32ref(0x0150) = SWAPu32(0x160); + psxMu32ref(0x0154) = SWAPu32(0x320); + psxMu32ref(0x0160) = SWAPu32(0x248); + strcpy((char *)&psxM[0x248], "bu"); +/* psxMu32ref(0x0ca8) = SWAPu32(0x1f410004); + psxMu32ref(0x0cf0) = SWAPu32(0x3c020000); + psxMu32ref(0x0cf4) = SWAPu32(0x2442641c); + psxMu32ref(0x09e0) = SWAPu32(0x43d0); + psxMu32ref(0x4d98) = SWAPu32(0x946f000a); +*/ + // opcode HLE + psxRu32ref(0x0000) = SWAPu32((0x3b << 26) | 4); + psxMu32ref(0x0000) = SWAPu32((0x3b << 26) | 0); + psxMu32ref(0x00a0) = SWAPu32((0x3b << 26) | 1); + psxMu32ref(0x00b0) = SWAPu32((0x3b << 26) | 2); + psxMu32ref(0x00c0) = SWAPu32((0x3b << 26) | 3); + psxMu32ref(0x4c54) = SWAPu32((0x3b << 26) | 0); + psxMu32ref(0x8000) = SWAPu32((0x3b << 26) | 5); + psxMu32ref(0x07a0) = SWAPu32((0x3b << 26) | 0); + psxMu32ref(0x0884) = SWAPu32((0x3b << 26) | 0); + psxMu32ref(0x0894) = SWAPu32((0x3b << 26) | 0); + + // initial stack pointer for BIOS interrupt + psxMu32ref(0x6c80) = SWAPu32(0x000085c8); + + // initial RNG seed + psxMu32ref(0x9010) = SWAPu32(0xac20cc00); + + // fonts + #if 0 + len = 0x80000 - 0x66000; + uncompress((Bytef *)(psxR + 0x66000), &len, font_8140, sizeof(font_8140)); + printf("len=%d\nconst unsigned char font_8140[]={",len); + for(int i=0;i 0x20) ? 1 << 6 : 0); + *buf &= ~((PAD1_poll(0) > 0x20) ? 1 << 7 : 0); + } else { + PAD1_poll(0); + *buf = PAD1_poll(0) << 8; + *buf|= PAD1_poll(0); + } + + PAD2_startPoll(2); + if (PAD2_poll(0x42) == 0x23) { + PAD2_poll(0); + *buf |= PAD2_poll(0) << 24; + *buf |= PAD2_poll(0) << 16; + PAD2_poll(0); + *buf &= ~((PAD2_poll(0) > 0x20) ? 1 << 22 : 0); + *buf &= ~((PAD2_poll(0) > 0x20) ? 1 << 23 : 0); + } else { + PAD2_poll(0); + *buf |= PAD2_poll(0) << 24; + *buf |= PAD2_poll(0) << 16; + } + } + } + { + if (pad_buf1) { + psxBios_PADpoll(1); + } + + if (pad_buf2) { + psxBios_PADpoll(2); + } + } + + if (psxHu32(0x1070) & 0x1) { // Vsync + if (RcEV[3][1].status == EvStACTIVE) { + softCall(RcEV[3][1].fhandler); +// hwWrite32(0x1f801070, ~(1)); + } + } + + if (psxHu32(0x1070) & 0x70) { // Rcnt 0,1,2 + int i; + + for (i = 0; i < 3; i++) { + if (psxHu32(0x1070) & (1 << (i + 4))) { + if (RcEV[i][1].status == EvStACTIVE) { + softCall(RcEV[i][1].fhandler); + } + psxHwWrite32(0x1f801070, ~(1 << (i + 4))); + } + } + } +} + +void psxBiosException() { + int i; + + switch (psxRegs.CP0.n.Cause & 0x3c) { + case 0x00: // Interrupt +#ifdef PSXCPU_LOG +// PSXCPU_LOG("interrupt\n"); +#endif + SaveRegs(); + + sp = psxMu32(0x6c80); // create new stack for interrupt handlers + + biosInterrupt(); + + for (i = 0; i < 8; i++) { + if (SysIntRP[i]) { + u32 *queue = (u32 *)PSXM(SysIntRP[i]); + + s0 = queue[2]; + softCall(queue[1]); + } + } + + if (jmp_int != NULL) { + int i; + + psxHwWrite32(0x1f801070, 0xffffffff); + + ra = jmp_int[0]; + sp = jmp_int[1]; + fp = jmp_int[2]; + for (i = 0; i < 8; i++) // s0-s7 + psxRegs.GPR.r[16 + i] = jmp_int[3 + i]; + gp = jmp_int[11]; + + v0 = 1; + pc0 = ra; + return; + } + psxHwWrite16(0x1f801070, 0); + break; + + case 0x20: // Syscall +#ifdef PSXCPU_LOG + PSXCPU_LOG("syscall exp %x\n", a0); +#endif + switch (a0) { + case 1: // EnterCritical - disable irq's + psxRegs.CP0.n.Status &= ~0x404; +v0=1; // HDHOSHY experimental patch: Spongebob, Coldblood, fearEffect, Medievil2, Martian Gothic + break; + + case 2: // ExitCritical - enable irq's + psxRegs.CP0.n.Status |= 0x404; + break; + } + pc0 = psxRegs.CP0.n.EPC + 4; + + psxRegs.CP0.n.Status = (psxRegs.CP0.n.Status & 0xfffffff0) | + ((psxRegs.CP0.n.Status & 0x3c) >> 2); + return; + + default: +#ifdef PSXCPU_LOG + PSXCPU_LOG("unknown bios exception!\n"); +#endif + break; + } + + pc0 = psxRegs.CP0.n.EPC; + if (psxRegs.CP0.n.Cause & 0x80000000) pc0+=4; + + psxRegs.CP0.n.Status = (psxRegs.CP0.n.Status & 0xfffffff0) | + ((psxRegs.CP0.n.Status & 0x3c) >> 2); +} + +#define bfreeze(ptr, size) { \ + if (Mode == 1) memcpy(&psxR[base], ptr, size); \ + if (Mode == 0) memcpy(ptr, &psxR[base], size); \ + base += size; \ +} + +#define bfreezes(ptr) bfreeze(ptr, sizeof(ptr)) +#define bfreezel(ptr) bfreeze(ptr, sizeof(*ptr)) + +#define bfreezepsxMptr(ptr, type) { \ + if (Mode == 1) { \ + if (ptr) psxRu32ref(base) = SWAPu32((s8 *)(ptr) - psxM); \ + else psxRu32ref(base) = 0; \ + } else { \ + if (psxRu32(base) != 0) ptr = (type *)(psxM + psxRu32(base)); \ + else (ptr) = NULL; \ + } \ + base += sizeof(u32); \ +} + +void psxBiosFreeze(int Mode) { + u32 base = 0x40000; + + bfreezepsxMptr(jmp_int, u32); + bfreezepsxMptr(pad_buf, int); + bfreezepsxMptr(pad_buf1, char); + bfreezepsxMptr(pad_buf2, char); + bfreezepsxMptr(heap_addr, u32); + bfreezel(&pad_buf1len); + bfreezel(&pad_buf2len); + bfreezes(regs); + bfreezes(SysIntRP); + bfreezel(&CardState); + bfreezes(Thread); + bfreezel(&CurThread); + bfreezes(FDesc); +} diff --git a/libpcsxcore/psxbios.h b/libpcsxcore/psxbios.h new file mode 100644 index 0000000..635b35a --- /dev/null +++ b/libpcsxcore/psxbios.h @@ -0,0 +1,51 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#ifndef __PSXBIOS_H__ +#define __PSXBIOS_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "psxcommon.h" +#include "r3000a.h" +#include "psxmem.h" +#include "misc.h" +#include "sio.h" + +extern char *biosA0n[256]; +extern char *biosB0n[256]; +extern char *biosC0n[256]; + +void psxBiosInit(); +void psxBiosShutdown(); +void psxBiosException(); +void psxBiosFreeze(int Mode); + +extern void (*biosA0[256])(); +extern void (*biosB0[256])(); +extern void (*biosC0[256])(); + +extern boolean hleSoftCall; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/psxcommon.c b/libpcsxcore/psxcommon.c new file mode 100644 index 0000000..f47e2de --- /dev/null +++ b/libpcsxcore/psxcommon.c @@ -0,0 +1,80 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#include "psxcommon.h" +#include "r3000a.h" +#include "psxbios.h" + +//#include "cheat.h" +#include "ppf.h" + +PcsxConfig Config; +boolean NetOpened = FALSE; + +int Log = 0; +FILE *emuLog = NULL; + +int EmuInit() { + return psxInit(); +} + +void EmuReset() { + /* + FreeCheatSearchResults(); + FreeCheatSearchMem(); + */ + + psxReset(); +} + +void EmuShutdown() { + /* + ClearAllCheats(); + FreeCheatSearchResults(); + FreeCheatSearchMem(); + + FreePPFCache(); + */ + + psxShutdown(); +} + +void EmuUpdate() { + // Do not allow hotkeys inside a softcall from HLE BIOS + if (!Config.HLE || !hleSoftCall) + SysUpdate(); + + //ApplyCheats(); +} + +void __Log(char *fmt, ...) { + va_list list; +#ifdef LOG_STDOUT + char tmp[1024]; +#endif + + va_start(list, fmt); +#ifndef LOG_STDOUT + vfprintf(emuLog, fmt, list); +#else + vsprintf(tmp, fmt, list); + SysPrintf(tmp); +#endif + va_end(list); +} diff --git a/libpcsxcore/psxcommon.h b/libpcsxcore/psxcommon.h new file mode 100644 index 0000000..7065d7d --- /dev/null +++ b/libpcsxcore/psxcommon.h @@ -0,0 +1,173 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +/* +* This file contains common definitions and includes for all parts of the +* emulator core. +*/ + +#ifndef __PSXCOMMON_H__ +#define __PSXCOMMON_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "config.h" + +// System includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// Define types +//typedef int8_t s8; +typedef char s8; +typedef int16_t s16; +typedef int32_t s32; +typedef int64_t s64; +typedef intptr_t sptr; + +//typedef uint8_t u8; +typedef unsigned char u8; +typedef uint16_t u16; +typedef uint32_t u32; +typedef uint64_t u64; +typedef uintptr_t uptr; + +typedef uint8_t boolean; + +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif + +// Local includes +#include "system.h" +#include "debug.h" + +#if defined (__LINUX__) || defined (__MACOSX__) +#define strnicmp strncasecmp +#endif +#define __inline inline + +// Enables NLS/internationalization if active +#ifdef ENABLE_NLS + +#include + +#undef _ +#define _(String) gettext(String) +#ifdef gettext_noop +# define N_(String) gettext_noop (String) +#else +# define N_(String) (String) +#endif + +#else + +#define _(msgid) msgid +#define N_(msgid) msgid + +#endif + +extern FILE *emuLog; +extern int Log; + +void __Log(char *fmt, ...); + +typedef struct { + char Gpu[MAXPATHLEN]; + char Spu[MAXPATHLEN]; + char Cdr[MAXPATHLEN]; + char Pad1[MAXPATHLEN]; + char Pad2[MAXPATHLEN]; + char Net[MAXPATHLEN]; + char Sio1[MAXPATHLEN]; + char Mcd1[MAXPATHLEN]; + char Mcd2[MAXPATHLEN]; + char Bios[MAXPATHLEN]; + char BiosDir[MAXPATHLEN]; + char PluginsDir[MAXPATHLEN]; + char PatchesDir[MAXPATHLEN]; + boolean Xa; + boolean Sio; + boolean Mdec; + boolean PsxAuto; + boolean Cdda; + boolean HLE; + boolean Debug; + boolean PsxOut; + boolean SpuIrq; + boolean RCntFix; + boolean UseNet; + boolean VSyncWA; + u8 Cpu; // CPU_DYNAREC or CPU_INTERPRETER + u8 PsxType; // PSX_TYPE_NTSC or PSX_TYPE_PAL +#ifdef _WIN32 + char Lang[256]; +#endif +} PcsxConfig; + +extern PcsxConfig Config; +extern boolean NetOpened; +#if 0 //web +#define gzfreeze(ptr, size) { \ + if (Mode == 1) gzwrite(f, ptr, size); \ + if (Mode == 0) gzread(f, ptr, size); \ +} +#else +#define gzfreeze(ptr, size) {} +#endif +// Make the timing events trigger faster as we are currently assuming everything +// takes one cycle, which is not the case on real hardware. +// FIXME: Count the proper cycle and get rid of this +#define BIAS 2 +#define PSXCLK 33868800 /* 33.8688 MHz */ + +enum { + PSX_TYPE_NTSC = 0, + PSX_TYPE_PAL +}; // PSX Types + +enum { + CPU_DYNAREC = 0, + CPU_INTERPRETER +}; // CPU Types + +int EmuInit(); +void EmuReset(); +void EmuShutdown(); +void EmuUpdate(); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/psxcounters.c b/libpcsxcore/psxcounters.c new file mode 100644 index 0000000..37f8f4e --- /dev/null +++ b/libpcsxcore/psxcounters.c @@ -0,0 +1,475 @@ +/*************************************************************************** + * Copyright (C) 2010 by Blade_Arma * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +/* + * Internal PSX counters. + */ + +#include "psxcounters.h" + +/******************************************************************************/ + +typedef struct Rcnt +{ + u16 mode, target; + u32 rate, irq, counterState, irqState; + u32 cycle, cycleStart; +} Rcnt; + +enum +{ + Rc0Gate = 0x0001, // 0 not implemented + Rc1Gate = 0x0001, // 0 not implemented + Rc2Disable = 0x0001, // 0 partially implemented + RcUnknown1 = 0x0002, // 1 ? + RcUnknown2 = 0x0004, // 2 ? + RcCountToTarget = 0x0008, // 3 + RcIrqOnTarget = 0x0010, // 4 + RcIrqOnOverflow = 0x0020, // 5 + RcIrqRegenerate = 0x0040, // 6 + RcUnknown7 = 0x0080, // 7 ? + Rc0PixelClock = 0x0100, // 8 fake implementation + Rc1HSyncClock = 0x0100, // 8 + Rc2Unknown8 = 0x0100, // 8 ? + Rc0Unknown9 = 0x0200, // 9 ? + Rc1Unknown9 = 0x0200, // 9 ? + Rc2OneEighthClock = 0x0200, // 9 + RcUnknown10 = 0x0400, // 10 ? + RcCountEqTarget = 0x0800, // 11 + RcOverflow = 0x1000, // 12 + RcUnknown13 = 0x2000, // 13 ? (always zero) + RcUnknown14 = 0x4000, // 14 ? (always zero) + RcUnknown15 = 0x8000, // 15 ? (always zero) +}; + +#define CounterQuantity ( 4 ) +//static const u32 CounterQuantity = 4; + +static const u32 CountToOverflow = 0; +static const u32 CountToTarget = 1; + +static const u32 FrameRate[] = { 60, 50 }; +static const u32 VBlankStart[] = { 240, 256 }; +static const u32 HSyncTotal[] = { 262, 312 }; +static const u32 SpuUpdInterval[] = { 23, 22 }; + +static const s32 VerboseLevel = 0; + +/******************************************************************************/ + +static Rcnt rcnts[ CounterQuantity ]; + +static u32 hSyncCount = 0; +static u32 spuSyncCount = 0; + +u32 psxNextCounter = 0, psxNextsCounter = 0; + +/******************************************************************************/ + +static inline +void setIrq( u32 irq ) +{ + psxHu32ref(0x1070) |= SWAPu32(irq); +} + +static +void verboseLog( s32 level, const char *str, ... ) +{ + if( level <= VerboseLevel ) + { + va_list va; + va_start( va, str ); + vprintf(str, va ); + va_end( va ); + fflush( stdout ); + } +} + +/******************************************************************************/ + +static inline +void _psxRcntWcount( u32 index, u32 value ) +{ + if( value > 0xffff ) + { + verboseLog( 1, "[RCNT %i] wcount > 0xffff: %x\n", index, value ); + value &= 0xffff; + } + + rcnts[index].cycleStart = psxRegs.cycle; + rcnts[index].cycleStart -= value * rcnts[index].rate; + + // TODO: <=. + if( value < rcnts[index].target ) + { + rcnts[index].cycle = rcnts[index].target * rcnts[index].rate; + rcnts[index].counterState = CountToTarget; + } + else + { + rcnts[index].cycle = 0xffff * rcnts[index].rate; + rcnts[index].counterState = CountToOverflow; + } +} + +static inline +u32 _psxRcntRcount( u32 index ) +{ + u32 count; + + count = psxRegs.cycle; + count -= rcnts[index].cycleStart; + count /= rcnts[index].rate; + + if( count > 0xffff ) + { + verboseLog( 1, "[RCNT %i] rcount > 0xffff: %x\n", index, count ); + count &= 0xffff; + } + + return count; +} + +/******************************************************************************/ + +static +void psxRcntSet() +{ + s32 countToUpdate; + u32 i; + + psxNextsCounter = psxRegs.cycle; + psxNextCounter = 0x7fffffff; + + for( i = 0; i < CounterQuantity; ++i ) + { + countToUpdate = rcnts[i].cycle - (psxNextsCounter - rcnts[i].cycleStart); + + if( countToUpdate < 0 ) + { + psxNextCounter = 0; + break; + } + + if( countToUpdate < (s32)psxNextCounter ) + { + psxNextCounter = countToUpdate; + } + } +} + +/******************************************************************************/ + +static +void psxRcntReset( u32 index ) +{ + u32 count; + + if( rcnts[index].counterState == CountToTarget ) + { + if( rcnts[index].mode & RcCountToTarget ) + { + count = psxRegs.cycle; + count -= rcnts[index].cycleStart; + count /= rcnts[index].rate; + count -= rcnts[index].target; + } + else + { + count = _psxRcntRcount( index ); + } + + _psxRcntWcount( index, count ); + + if( rcnts[index].mode & RcIrqOnTarget ) + { + if( (rcnts[index].mode & RcIrqRegenerate) || (!rcnts[index].irqState) ) + { + verboseLog( 3, "[RCNT %i] irq: %x\n", index, count ); + setIrq( rcnts[index].irq ); + rcnts[index].irqState = 1; + } + } + + rcnts[index].mode |= RcCountEqTarget; + } + else if( rcnts[index].counterState == CountToOverflow ) + { + count = psxRegs.cycle; + count -= rcnts[index].cycleStart; + count /= rcnts[index].rate; + count -= 0xffff; + + _psxRcntWcount( index, count ); + + if( rcnts[index].mode & RcIrqOnOverflow ) + { + if( (rcnts[index].mode & RcIrqRegenerate) || (!rcnts[index].irqState) ) + { + verboseLog( 3, "[RCNT %i] irq: %x\n", index, count ); + setIrq( rcnts[index].irq ); + rcnts[index].irqState = 1; + } + } + + rcnts[index].mode |= RcOverflow; + } + + rcnts[index].mode |= RcUnknown10; + + psxRcntSet(); +} + +void psxRcntUpdate() +{ + u32 cycle; + + cycle = psxRegs.cycle; + + // rcnt 0. + if( cycle - rcnts[0].cycleStart >= rcnts[0].cycle ) + { + psxRcntReset( 0 ); + } + + // rcnt 1. + if( cycle - rcnts[1].cycleStart >= rcnts[1].cycle ) + { + psxRcntReset( 1 ); + } + + // rcnt 2. + if( cycle - rcnts[2].cycleStart >= rcnts[2].cycle ) + { + psxRcntReset( 2 ); + } + + // rcnt base. + if( cycle - rcnts[3].cycleStart >= rcnts[3].cycle ) + { + psxRcntReset( 3 ); + + spuSyncCount++; + hSyncCount++; + + // Update spu. + if( spuSyncCount >= SpuUpdInterval[Config.PsxType] ) + { + spuSyncCount = 0; + + #ifdef SPU_async + SPU_async( SpuUpdInterval[Config.PsxType] * rcnts[3].target ); + #endif + } + + // VSync irq. + if( hSyncCount == VBlankStart[Config.PsxType] ) + { + GPU_vBlank( 1 ); + + // For the best times. :D + //setIrq( 0x01 ); + } + + // Update lace. (with InuYasha fix) + if( hSyncCount >= (Config.VSyncWA ? HSyncTotal[Config.PsxType] / BIAS : HSyncTotal[Config.PsxType]) ) + { + hSyncCount = 0; + + GPU_vBlank( 0 ); + setIrq( 0x01 ); + + GPU_updateLace(); + EmuUpdate(); + } + } + + +} + +/******************************************************************************/ + +void psxRcntWcount( u32 index, u32 value ) +{ + verboseLog( 2, "[RCNT %i] wcount: %x\n", index, value ); + + psxRcntUpdate(); + + _psxRcntWcount( index, value ); + psxRcntSet(); +} + +void psxRcntWmode( u32 index, u32 value ) +{ + verboseLog( 1, "[RCNT %i] wmode: %x\n", index, value ); + + psxRcntUpdate(); + + rcnts[index].mode = value; + rcnts[index].irqState = 0; + + switch( index ) + { + case 0: + if( value & Rc0PixelClock ) + { + rcnts[index].rate = 5; + } + else + { + rcnts[index].rate = 1; + } + break; + case 1: + if( value & Rc1HSyncClock ) + { + rcnts[index].rate = (PSXCLK / (FrameRate[Config.PsxType] * HSyncTotal[Config.PsxType])); + } + else + { + rcnts[index].rate = 1; + } + break; + case 2: + if( value & Rc2OneEighthClock ) + { + rcnts[index].rate = 8; + } + else + { + rcnts[index].rate = 1; + } + + // TODO: wcount must work. + if( value & Rc2Disable ) + { + rcnts[index].rate = 0xffffffff; + } + break; + } + + _psxRcntWcount( index, 0 ); + psxRcntSet(); +} + +void psxRcntWtarget( u32 index, u32 value ) +{ + verboseLog( 1, "[RCNT %i] wtarget: %x\n", index, value ); + + psxRcntUpdate(); + + rcnts[index].target = value; + + _psxRcntWcount( index, _psxRcntRcount( index ) ); + psxRcntSet(); +} + +/******************************************************************************/ + +u32 psxRcntRcount( u32 index ) +{ + u32 count; + + psxRcntUpdate(); + + count = _psxRcntRcount( index ); + + // Parasite Eve 2 fix. + if( Config.RCntFix ) + { + if( index == 2 ) + { + if( rcnts[index].counterState == CountToTarget ) + { + count /= BIAS; + } + } + } + + verboseLog( 2, "[RCNT %i] rcount: %x\n", index, count ); + + return count; +} + +u32 psxRcntRmode( u32 index ) +{ + u16 mode; + + psxRcntUpdate(); + + mode = rcnts[index].mode; + rcnts[index].mode &= 0xe7ff; + + verboseLog( 2, "[RCNT %i] rmode: %x\n", index, mode ); + + return mode; +} + +u32 psxRcntRtarget( u32 index ) +{ + verboseLog( 2, "[RCNT %i] rtarget: %x\n", index, rcnts[index].target ); + + return rcnts[index].target; +} + +/******************************************************************************/ + +void psxRcntInit() +{ + s32 i; + + // rcnt 0. + rcnts[0].rate = 1; + rcnts[0].irq = 0x10; + + // rcnt 1. + rcnts[1].rate = 1; + rcnts[1].irq = 0x20; + + // rcnt 2. + rcnts[2].rate = 1; + rcnts[2].irq = 0x40; + + // rcnt base. + rcnts[3].rate = 1; + rcnts[3].mode = RcCountToTarget; + rcnts[3].target = (PSXCLK / (FrameRate[Config.PsxType] * HSyncTotal[Config.PsxType])); + + for( i = 0; i < CounterQuantity; ++i ) + { + _psxRcntWcount( i, 0 ); + } + + psxRcntSet(); +} + +/******************************************************************************/ + +s32 psxRcntFreeze( gzFile f, s32 Mode ) +{ + gzfreeze( &rcnts, sizeof(rcnts) ); + gzfreeze( &hSyncCount, sizeof(hSyncCount) ); + gzfreeze( &spuSyncCount, sizeof(spuSyncCount) ); + gzfreeze( &psxNextCounter, sizeof(psxNextCounter) ); + gzfreeze( &psxNextsCounter, sizeof(psxNextsCounter) ); + + return 0; +} + +/******************************************************************************/ diff --git a/libpcsxcore/psxcounters.h b/libpcsxcore/psxcounters.h new file mode 100644 index 0000000..bccb2e4 --- /dev/null +++ b/libpcsxcore/psxcounters.h @@ -0,0 +1,50 @@ +/*************************************************************************** + * Copyright (C) 2010 by Blade_Arma * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#ifndef __PSXCOUNTERS_H__ +#define __PSXCOUNTERS_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "psxcommon.h" +#include "r3000a.h" +#include "psxmem.h" +#include "plugins.h" + +extern u32 psxNextCounter, psxNextsCounter; + +void psxRcntInit(); +void psxRcntUpdate(); + +void psxRcntWcount(u32 index, u32 value); +void psxRcntWmode(u32 index, u32 value); +void psxRcntWtarget(u32 index, u32 value); + +u32 psxRcntRcount(u32 index); +u32 psxRcntRmode(u32 index); +u32 psxRcntRtarget(u32 index); + +s32 psxRcntFreeze(gzFile f, s32 Mode); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/psxdma.c b/libpcsxcore/psxdma.c new file mode 100644 index 0000000..f59f268 --- /dev/null +++ b/libpcsxcore/psxdma.c @@ -0,0 +1,174 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +/* +* Handles PSX DMA functions. +*/ + +#include "psxdma.h" + +// Dma0/1 in Mdec.c +// Dma3 in CdRom.c + +void spuInterrupt() { + HW_DMA4_CHCR &= SWAP32(~0x01000000); + DMA_INTERRUPT(4); +} + +void psxDma4(u32 madr, u32 bcr, u32 chcr) { // SPU + u16 *ptr; + u32 size; + + switch (chcr) { + case 0x01000201: //cpu to spu transfer +#ifdef PSXDMA_LOG + PSXDMA_LOG("*** DMA4 SPU - mem2spu *** %x addr = %x size = %x\n", chcr, madr, bcr); +#endif + ptr = (u16 *)PSXM(madr); + if (ptr == NULL) { +#ifdef CPU_LOG + CPU_LOG("*** DMA4 SPU - mem2spu *** NULL Pointer!!!\n"); +#endif + break; + } + SPU_writeDMAMem(ptr, (bcr >> 16) * (bcr & 0xffff) * 2); + SPUDMA_INT((bcr >> 16) * (bcr & 0xffff) / 2); + return; + + case 0x01000200: //spu to cpu transfer +#ifdef PSXDMA_LOG + PSXDMA_LOG("*** DMA4 SPU - spu2mem *** %x addr = %x size = %x\n", chcr, madr, bcr); +#endif + ptr = (u16 *)PSXM(madr); + if (ptr == NULL) { +#ifdef CPU_LOG + CPU_LOG("*** DMA4 SPU - spu2mem *** NULL Pointer!!!\n"); +#endif + break; + } + size = (bcr >> 16) * (bcr & 0xffff) * 2; + SPU_readDMAMem(ptr, size); + psxCpu->Clear(madr, size); + break; + +#ifdef PSXDMA_LOG + default: + PSXDMA_LOG("*** DMA4 SPU - unknown *** %x addr = %x size = %x\n", chcr, madr, bcr); + break; +#endif + } + + HW_DMA4_CHCR &= SWAP32(~0x01000000); + DMA_INTERRUPT(4); +} + +void psxDma2(u32 madr, u32 bcr, u32 chcr) { // GPU + u32 *ptr; + u32 size; + + switch(chcr) { + case 0x01000200: // vram2mem +#ifdef PSXDMA_LOG + PSXDMA_LOG("*** DMA2 GPU - vram2mem *** %x addr = %x size = %x\n", chcr, madr, bcr); +#endif + ptr = (u32 *)PSXM(madr); + if (ptr == NULL) { +#ifdef CPU_LOG + CPU_LOG("*** DMA2 GPU - vram2mem *** NULL Pointer!!!\n"); +#endif + break; + } + size = (bcr >> 16) * (bcr & 0xffff); + GPU_readDataMem(ptr, size); + psxCpu->Clear(madr, size); + break; + + case 0x01000201: // mem2vram +#ifdef PSXDMA_LOG + PSXDMA_LOG("*** DMA 2 - GPU mem2vram *** %x addr = %x size = %x\n", chcr, madr, bcr); +#endif + ptr = (u32 *)PSXM(madr); + if (ptr == NULL) { +#ifdef CPU_LOG + CPU_LOG("*** DMA2 GPU - mem2vram *** NULL Pointer!!!\n"); +#endif + break; + } + size = (bcr >> 16) * (bcr & 0xffff); + GPU_writeDataMem(ptr, size); + GPUDMA_INT(size / 4); + return; + + case 0x01000401: // dma chain +#ifdef PSXDMA_LOG + PSXDMA_LOG("*** DMA 2 - GPU dma chain *** %x addr = %x size = %x\n", chcr, madr, bcr); +#endif + GPU_dmaChain((u32 *)psxM, madr & 0x1fffff); + break; + +#ifdef PSXDMA_LOG + default: + PSXDMA_LOG("*** DMA 2 - GPU unknown *** %x addr = %x size = %x\n", chcr, madr, bcr); + break; +#endif + } + + HW_DMA2_CHCR &= SWAP32(~0x01000000); + DMA_INTERRUPT(2); +} + +void gpuInterrupt() { + HW_DMA2_CHCR &= SWAP32(~0x01000000); + DMA_INTERRUPT(2); +} + +void psxDma6(u32 madr, u32 bcr, u32 chcr) { + u32 *mem = (u32 *)PSXM(madr); + +#ifdef PSXDMA_LOG + PSXDMA_LOG("*** DMA6 OT *** %x addr = %x size = %x\n", chcr, madr, bcr); +#endif + + if (chcr == 0x11000002) { + if (mem == NULL) { +#ifdef CPU_LOG + CPU_LOG("*** DMA6 OT *** NULL Pointer!!!\n"); +#endif + HW_DMA6_CHCR &= SWAP32(~0x01000000); + DMA_INTERRUPT(6); + return; + } + + while (bcr--) { + *mem-- = SWAP32((madr - 4) & 0xffffff); + madr -= 4; + } + mem++; *mem = 0xffffff; + } +#ifdef PSXDMA_LOG + else { + // Unknown option + PSXDMA_LOG("*** DMA6 OT - unknown *** %x addr = %x size = %x\n", chcr, madr, bcr); + } +#endif + + HW_DMA6_CHCR &= SWAP32(~0x01000000); + DMA_INTERRUPT(6); +} + diff --git a/libpcsxcore/psxdma.h b/libpcsxcore/psxdma.h new file mode 100644 index 0000000..0db6533 --- /dev/null +++ b/libpcsxcore/psxdma.h @@ -0,0 +1,60 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#ifndef __PSXDMA_H__ +#define __PSXDMA_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "psxcommon.h" +#include "r3000a.h" +#include "psxhw.h" +#include "psxmem.h" + +#define GPUDMA_INT(eCycle) { \ + psxRegs.interrupt |= 0x01000000; \ + psxRegs.intCycle[3 + 24 + 1] = eCycle; \ + psxRegs.intCycle[3 + 24] = psxRegs.cycle; \ +} + +#define SPUDMA_INT(eCycle) { \ + psxRegs.interrupt |= 0x04000000; \ + psxRegs.intCycle[1 + 24 + 1] = eCycle; \ + psxRegs.intCycle[1 + 24] = psxRegs.cycle; \ +} + +#define MDECOUTDMA_INT(eCycle) { \ + psxRegs.interrupt |= 0x02000000; \ + psxRegs.intCycle[5 + 24 + 1] = eCycle; \ + psxRegs.intCycle[5 + 24] = psxRegs.cycle; \ +} + +void psxDma2(u32 madr, u32 bcr, u32 chcr); +void psxDma3(u32 madr, u32 bcr, u32 chcr); +void psxDma4(u32 madr, u32 bcr, u32 chcr); +void psxDma6(u32 madr, u32 bcr, u32 chcr); +void gpuInterrupt(); +void spuInterrupt(); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/psxhle.c b/libpcsxcore/psxhle.c new file mode 100644 index 0000000..4617970 --- /dev/null +++ b/libpcsxcore/psxhle.c @@ -0,0 +1,96 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +/* +* Internal PSX HLE functions. +*/ + +#include "psxhle.h" + +static void hleDummy() { + psxRegs.pc = psxRegs.GPR.n.ra; + + psxBranchTest(); +} + +static void hleA0() { + u32 call = psxRegs.GPR.n.t1 & 0xff; + + if (biosA0[call]) biosA0[call](); + + psxBranchTest(); +} + +static void hleB0() { + u32 call = psxRegs.GPR.n.t1 & 0xff; + + if (biosB0[call]) biosB0[call](); + + psxBranchTest(); +} + +static void hleC0() { + u32 call = psxRegs.GPR.n.t1 & 0xff; + + if (biosC0[call]) biosC0[call](); + + psxBranchTest(); +} + +static void hleBootstrap() { // 0xbfc00000 + SysPrintf("hleBootstrap\n"); + CheckCdrom(); + LoadCdrom(); + SysPrintf("CdromLabel: \"%s\": PC = %8.8x (SP = %8.8x)\n", CdromLabel, psxRegs.pc, psxRegs.GPR.n.sp); +} + +typedef struct { + u32 _pc0; + u32 gp0; + u32 t_addr; + u32 t_size; + u32 d_addr; + u32 d_size; + u32 b_addr; + u32 b_size; + u32 S_addr; + u32 s_size; + u32 _sp,_fp,_gp,ret,base; +} EXEC; + +static void hleExecRet() { + EXEC *header = (EXEC*)PSXM(psxRegs.GPR.n.s0); + + SysPrintf("ExecRet %x: %x\n", psxRegs.GPR.n.s0, header->ret); + + psxRegs.GPR.n.ra = header->ret; + psxRegs.GPR.n.sp = header->_sp; + psxRegs.GPR.n.s8 = header->_fp; + psxRegs.GPR.n.gp = header->_gp; + psxRegs.GPR.n.s0 = header->base; + + psxRegs.GPR.n.v0 = 1; + psxRegs.pc = psxRegs.GPR.n.ra; +} + +void (*psxHLEt[256])() = { + hleDummy, hleA0, hleB0, hleC0, + hleBootstrap, hleExecRet, + hleDummy, hleDummy +}; diff --git a/libpcsxcore/psxhle.h b/libpcsxcore/psxhle.h new file mode 100644 index 0000000..eef78e8 --- /dev/null +++ b/libpcsxcore/psxhle.h @@ -0,0 +1,36 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#ifndef __PSXHLE_H__ +#define __PSXHLE_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "psxcommon.h" +#include "r3000a.h" +#include "plugins.h" + +extern void (*psxHLEt[256])(); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/psxhw.c b/libpcsxcore/psxhw.c new file mode 100644 index 0000000..68f02d4 --- /dev/null +++ b/libpcsxcore/psxhw.c @@ -0,0 +1,741 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +/* +* Functions for PSX hardware control. +*/ + +#include "psxhw.h" +#include "mdec.h" +#include "cdrom.h" + +void psxHwReset() { + if (Config.Sio) psxHu32ref(0x1070) |= SWAP32(0x80); + if (Config.SpuIrq) psxHu32ref(0x1070) |= SWAP32(0x200); + + memset(psxH, 0, 0x10000); + + mdecInit(); // initialize mdec decoder + cdrReset(); + psxRcntInit(); +} + +u8 psxHwRead8(u32 add) { + unsigned char hard; + + switch (add) { + case 0x1f801040: hard = sioRead8();break; +#ifdef ENABLE_SIO1API + case 0x1f801050: hard = SIO1_readData8(); break; +#endif + case 0x1f801800: hard = cdrRead0(); break; + case 0x1f801801: hard = cdrRead1(); break; + case 0x1f801802: hard = cdrRead2(); break; + case 0x1f801803: hard = cdrRead3(); break; + default: + hard = psxHu8(add); +#ifdef PSXHW_LOG + PSXHW_LOG("*Unkwnown 8bit read at address %x\n", add); +#endif + return hard; + } + +#ifdef PSXHW_LOG + PSXHW_LOG("*Known 8bit read at address %x value %x\n", add, hard); +#endif + return hard; +} + +u16 psxHwRead16(u32 add) { + unsigned short hard; + + switch (add) { +#ifdef PSXHW_LOG + case 0x1f801070: PSXHW_LOG("IREG 16bit read %x\n", psxHu16(0x1070)); + return psxHu16(0x1070); +#endif +#ifdef PSXHW_LOG + case 0x1f801074: PSXHW_LOG("IMASK 16bit read %x\n", psxHu16(0x1074)); + return psxHu16(0x1074); +#endif + + case 0x1f801040: + hard = sioRead8(); + hard|= sioRead8() << 8; +#ifdef PAD_LOG + PAD_LOG("sio read16 %x; ret = %x\n", add&0xf, hard); +#endif + return hard; + case 0x1f801044: + hard = sioReadStat16(); +#ifdef PAD_LOG + PAD_LOG("sio read16 %x; ret = %x\n", add&0xf, hard); +#endif + return hard; + case 0x1f801048: + hard = sioReadMode16(); +#ifdef PAD_LOG + PAD_LOG("sio read16 %x; ret = %x\n", add&0xf, hard); +#endif + return hard; + case 0x1f80104a: + hard = sioReadCtrl16(); +#ifdef PAD_LOG + PAD_LOG("sio read16 %x; ret = %x\n", add&0xf, hard); +#endif + return hard; + case 0x1f80104e: + hard = sioReadBaud16(); +#ifdef PAD_LOG + PAD_LOG("sio read16 %x; ret = %x\n", add&0xf, hard); +#endif + return hard; +#ifdef ENABLE_SIO1API + case 0x1f801050: + hard = SIO1_readData16(); + return hard; + case 0x1f801054: + hard = SIO1_readStat16(); + return hard; + case 0x1f80105a: + hard = SIO1_readCtrl16(); + return hard; + case 0x1f80105e: + hard = SIO1_readBaud16(); + return hard; +#endif + case 0x1f801100: + hard = psxRcntRcount(0); +#ifdef PSXHW_LOG + PSXHW_LOG("T0 count read16: %x\n", hard); +#endif + return hard; + case 0x1f801104: + hard = psxRcntRmode(0); +#ifdef PSXHW_LOG + PSXHW_LOG("T0 mode read16: %x\n", hard); +#endif + return hard; + case 0x1f801108: + hard = psxRcntRtarget(0); +#ifdef PSXHW_LOG + PSXHW_LOG("T0 target read16: %x\n", hard); +#endif + return hard; + case 0x1f801110: + hard = psxRcntRcount(1); +#ifdef PSXHW_LOG + PSXHW_LOG("T1 count read16: %x\n", hard); +#endif + return hard; + case 0x1f801114: + hard = psxRcntRmode(1); +#ifdef PSXHW_LOG + PSXHW_LOG("T1 mode read16: %x\n", hard); +#endif + return hard; + case 0x1f801118: + hard = psxRcntRtarget(1); +#ifdef PSXHW_LOG + PSXHW_LOG("T1 target read16: %x\n", hard); +#endif + return hard; + case 0x1f801120: + hard = psxRcntRcount(2); +#ifdef PSXHW_LOG + PSXHW_LOG("T2 count read16: %x\n", hard); +#endif + return hard; + case 0x1f801124: + hard = psxRcntRmode(2); +#ifdef PSXHW_LOG + PSXHW_LOG("T2 mode read16: %x\n", hard); +#endif + return hard; + case 0x1f801128: + hard = psxRcntRtarget(2); +#ifdef PSXHW_LOG + PSXHW_LOG("T2 target read16: %x\n", hard); +#endif + return hard; + + //case 0x1f802030: hard = //int_2000???? + //case 0x1f802040: hard =//dip switches...?? + + default: + if (add >= 0x1f801c00 && add < 0x1f801e00) { + hard = SPU_readRegister(add); + } else { + hard = psxHu16(add); +#ifdef PSXHW_LOG + PSXHW_LOG("*Unkwnown 16bit read at address %x\n", add); +#endif + } + return hard; + } + +#ifdef PSXHW_LOG + PSXHW_LOG("*Known 16bit read at address %x value %x\n", add, hard); +#endif + return hard; +} + +u32 psxHwRead32(u32 add) { + u32 hard; + + switch (add) { + case 0x1f801040: + hard = sioRead8(); + hard |= sioRead8() << 8; + hard |= sioRead8() << 16; + hard |= sioRead8() << 24; +#ifdef PAD_LOG + PAD_LOG("sio read32 ;ret = %x\n", hard); +#endif + return hard; +#ifdef ENABLE_SIO1API + case 0x1f801050: + hard = SIO1_readData32(); + return hard; +#endif +#ifdef PSXHW_LOG + case 0x1f801060: + PSXHW_LOG("RAM size read %x\n", psxHu32(0x1060)); + return psxHu32(0x1060); +#endif +#ifdef PSXHW_LOG + case 0x1f801070: PSXHW_LOG("IREG 32bit read %x\n", psxHu32(0x1070)); + return psxHu32(0x1070); +#endif +#ifdef PSXHW_LOG + case 0x1f801074: PSXHW_LOG("IMASK 32bit read %x\n", psxHu32(0x1074)); + return psxHu32(0x1074); +#endif + + case 0x1f801810: + hard = GPU_readData(); +#ifdef PSXHW_LOG + PSXHW_LOG("GPU DATA 32bit read %x\n", hard); +#endif + return hard; + case 0x1f801814: + hard = GPU_readStatus(); +#ifdef PSXHW_LOG + PSXHW_LOG("GPU STATUS 32bit read %x\n", hard); +#endif + return hard; + + case 0x1f801820: hard = mdecRead0(); break; + case 0x1f801824: hard = mdecRead1(); break; + +#ifdef PSXHW_LOG + case 0x1f8010a0: + PSXHW_LOG("DMA2 MADR 32bit read %x\n", psxHu32(0x10a0)); + return SWAPu32(HW_DMA2_MADR); + case 0x1f8010a4: + PSXHW_LOG("DMA2 BCR 32bit read %x\n", psxHu32(0x10a4)); + return SWAPu32(HW_DMA2_BCR); + case 0x1f8010a8: + PSXHW_LOG("DMA2 CHCR 32bit read %x\n", psxHu32(0x10a8)); + return SWAPu32(HW_DMA2_CHCR); +#endif + +#ifdef PSXHW_LOG + case 0x1f8010b0: + PSXHW_LOG("DMA3 MADR 32bit read %x\n", psxHu32(0x10b0)); + return SWAPu32(HW_DMA3_MADR); + case 0x1f8010b4: + PSXHW_LOG("DMA3 BCR 32bit read %x\n", psxHu32(0x10b4)); + return SWAPu32(HW_DMA3_BCR); + case 0x1f8010b8: + PSXHW_LOG("DMA3 CHCR 32bit read %x\n", psxHu32(0x10b8)); + return SWAPu32(HW_DMA3_CHCR); +#endif + +#ifdef PSXHW_LOG +/* case 0x1f8010f0: + PSXHW_LOG("DMA PCR 32bit read %x\n", psxHu32(0x10f0)); + return SWAPu32(HW_DMA_PCR); // dma rest channel + case 0x1f8010f4: + PSXHW_LOG("DMA ICR 32bit read %x\n", psxHu32(0x10f4)); + return SWAPu32(HW_DMA_ICR); // interrupt enabler?*/ +#endif + + // time for rootcounters :) + case 0x1f801100: + hard = psxRcntRcount(0); +#ifdef PSXHW_LOG + PSXHW_LOG("T0 count read32: %x\n", hard); +#endif + return hard; + case 0x1f801104: + hard = psxRcntRmode(0); +#ifdef PSXHW_LOG + PSXHW_LOG("T0 mode read32: %x\n", hard); +#endif + return hard; + case 0x1f801108: + hard = psxRcntRtarget(0); +#ifdef PSXHW_LOG + PSXHW_LOG("T0 target read32: %x\n", hard); +#endif + return hard; + case 0x1f801110: + hard = psxRcntRcount(1); +#ifdef PSXHW_LOG + PSXHW_LOG("T1 count read32: %x\n", hard); +#endif + return hard; + case 0x1f801114: + hard = psxRcntRmode(1); +#ifdef PSXHW_LOG + PSXHW_LOG("T1 mode read32: %x\n", hard); +#endif + return hard; + case 0x1f801118: + hard = psxRcntRtarget(1); +#ifdef PSXHW_LOG + PSXHW_LOG("T1 target read32: %x\n", hard); +#endif + return hard; + case 0x1f801120: + hard = psxRcntRcount(2); +#ifdef PSXHW_LOG + PSXHW_LOG("T2 count read32: %x\n", hard); +#endif + return hard; + case 0x1f801124: + hard = psxRcntRmode(2); +#ifdef PSXHW_LOG + PSXHW_LOG("T2 mode read32: %x\n", hard); +#endif + return hard; + case 0x1f801128: + hard = psxRcntRtarget(2); +#ifdef PSXHW_LOG + PSXHW_LOG("T2 target read32: %x\n", hard); +#endif + return hard; + + default: + hard = psxHu32(add); +#ifdef PSXHW_LOG + PSXHW_LOG("*Unkwnown 32bit read at address %x\n", add); +#endif + return hard; + } +#ifdef PSXHW_LOG + PSXHW_LOG("*Known 32bit read at address %x\n", add); +#endif + return hard; +} + +void psxHwWrite8(u32 add, u8 value) { + switch (add) { + case 0x1f801040: sioWrite8(value); break; +#ifdef ENABLE_SIO1API + case 0x1f801050: SIO1_writeData8(value); break; +#endif + case 0x1f801800: cdrWrite0(value); break; + case 0x1f801801: cdrWrite1(value); break; + case 0x1f801802: cdrWrite2(value); break; + case 0x1f801803: cdrWrite3(value); break; + + default: + psxHu8(add) = value; +#ifdef PSXHW_LOG + PSXHW_LOG("*Unknown 8bit write at address %x value %x\n", add, value); +#endif + return; + } + psxHu8(add) = value; +#ifdef PSXHW_LOG + PSXHW_LOG("*Known 8bit write at address %x value %x\n", add, value); +#endif +} + +void psxHwWrite16(u32 add, u16 value) { + switch (add) { + case 0x1f801040: + sioWrite8((unsigned char)value); + sioWrite8((unsigned char)(value>>8)); +#ifdef PAD_LOG + PAD_LOG ("sio write16 %x, %x\n", add&0xf, value); +#endif + return; + case 0x1f801044: + sioWriteStat16(value); +#ifdef PAD_LOG + PAD_LOG ("sio write16 %x, %x\n", add&0xf, value); +#endif + return; + case 0x1f801048: + sioWriteMode16(value); +#ifdef PAD_LOG + PAD_LOG ("sio write16 %x, %x\n", add&0xf, value); +#endif + return; + case 0x1f80104a: // control register + sioWriteCtrl16(value); +#ifdef PAD_LOG + PAD_LOG ("sio write16 %x, %x\n", add&0xf, value); +#endif + return; + case 0x1f80104e: // baudrate register + sioWriteBaud16(value); +#ifdef PAD_LOG + PAD_LOG ("sio write16 %x, %x\n", add&0xf, value); +#endif + return; +#ifdef ENABLE_SIO1API + case 0x1f801050: + SIO1_writeData16(value); + return; + case 0x1f801054: + SIO1_writeStat16(value); + return; + case 0x1f80105a: + SIO1_writeCtrl16(value); + return; + case 0x1f80105e: + SIO1_writeBaud16(value); + return; +#endif + case 0x1f801070: +#ifdef PSXHW_LOG + PSXHW_LOG("IREG 16bit write %x\n", value); +#endif + if (Config.Sio) psxHu16ref(0x1070) |= SWAPu16(0x80); + if (Config.SpuIrq) psxHu16ref(0x1070) |= SWAPu16(0x200); + psxHu16ref(0x1070) &= SWAPu16((psxHu16(0x1074) & value)); + return; + + case 0x1f801074: +#ifdef PSXHW_LOG + PSXHW_LOG("IMASK 16bit write %x\n", value); +#endif + psxHu16ref(0x1074) = SWAPu16(value); + return; + + case 0x1f801100: +#ifdef PSXHW_LOG + PSXHW_LOG("COUNTER 0 COUNT 16bit write %x\n", value); +#endif + psxRcntWcount(0, value); return; + case 0x1f801104: +#ifdef PSXHW_LOG + PSXHW_LOG("COUNTER 0 MODE 16bit write %x\n", value); +#endif + psxRcntWmode(0, value); return; + case 0x1f801108: +#ifdef PSXHW_LOG + PSXHW_LOG("COUNTER 0 TARGET 16bit write %x\n", value); +#endif + psxRcntWtarget(0, value); return; + + case 0x1f801110: +#ifdef PSXHW_LOG + PSXHW_LOG("COUNTER 1 COUNT 16bit write %x\n", value); +#endif + psxRcntWcount(1, value); return; + case 0x1f801114: +#ifdef PSXHW_LOG + PSXHW_LOG("COUNTER 1 MODE 16bit write %x\n", value); +#endif + psxRcntWmode(1, value); return; + case 0x1f801118: +#ifdef PSXHW_LOG + PSXHW_LOG("COUNTER 1 TARGET 16bit write %x\n", value); +#endif + psxRcntWtarget(1, value); return; + + case 0x1f801120: +#ifdef PSXHW_LOG + PSXHW_LOG("COUNTER 2 COUNT 16bit write %x\n", value); +#endif + psxRcntWcount(2, value); return; + case 0x1f801124: +#ifdef PSXHW_LOG + PSXHW_LOG("COUNTER 2 MODE 16bit write %x\n", value); +#endif + psxRcntWmode(2, value); return; + case 0x1f801128: +#ifdef PSXHW_LOG + PSXHW_LOG("COUNTER 2 TARGET 16bit write %x\n", value); +#endif + psxRcntWtarget(2, value); return; + + default: + if (add>=0x1f801c00 && add<0x1f801e00) { + SPU_writeRegister(add, value); + return; + } + + psxHu16ref(add) = SWAPu16(value); +#ifdef PSXHW_LOG + PSXHW_LOG("*Unknown 16bit write at address %x value %x\n", add, value); +#endif + return; + } + psxHu16ref(add) = SWAPu16(value); +#ifdef PSXHW_LOG + PSXHW_LOG("*Known 16bit write at address %x value %x\n", add, value); +#endif +} + +#define DmaExec(n) { \ + HW_DMA##n##_CHCR = SWAPu32(value); \ +\ + if (SWAPu32(HW_DMA##n##_CHCR) & 0x01000000 && SWAPu32(HW_DMA_PCR) & (8 << (n * 4))) { \ + psxDma##n(SWAPu32(HW_DMA##n##_MADR), SWAPu32(HW_DMA##n##_BCR), SWAPu32(HW_DMA##n##_CHCR)); \ + } \ +} + +void psxHwWrite32(u32 add, u32 value) { + switch (add) { + case 0x1f801040: + sioWrite8((unsigned char)value); + sioWrite8((unsigned char)((value&0xff) >> 8)); + sioWrite8((unsigned char)((value&0xff) >> 16)); + sioWrite8((unsigned char)((value&0xff) >> 24)); +#ifdef PAD_LOG + PAD_LOG("sio write32 %x\n", value); +#endif + return; +#ifdef ENABLE_SIO1API + case 0x1f801050: + SIO1_writeData32(value); + return; +#endif +#ifdef PSXHW_LOG + case 0x1f801060: + PSXHW_LOG("RAM size write %x\n", value); + psxHu32ref(add) = SWAPu32(value); + return; // Ram size +#endif + + case 0x1f801070: +#ifdef PSXHW_LOG + PSXHW_LOG("IREG 32bit write %x\n", value); +#endif + if (Config.Sio) psxHu32ref(0x1070) |= SWAPu32(0x80); + if (Config.SpuIrq) psxHu32ref(0x1070) |= SWAPu32(0x200); + psxHu32ref(0x1070) &= SWAPu32((psxHu32(0x1074) & value)); + return; + case 0x1f801074: +#ifdef PSXHW_LOG + PSXHW_LOG("IMASK 32bit write %x\n", value); +#endif + psxHu32ref(0x1074) = SWAPu32(value); + return; + +#ifdef PSXHW_LOG + case 0x1f801080: + PSXHW_LOG("DMA0 MADR 32bit write %x\n", value); + HW_DMA0_MADR = SWAPu32(value); return; // DMA0 madr + case 0x1f801084: + PSXHW_LOG("DMA0 BCR 32bit write %x\n", value); + HW_DMA0_BCR = SWAPu32(value); return; // DMA0 bcr +#endif + case 0x1f801088: +#ifdef PSXHW_LOG + PSXHW_LOG("DMA0 CHCR 32bit write %x\n", value); +#endif + DmaExec(0); // DMA0 chcr (MDEC in DMA) + return; + +#ifdef PSXHW_LOG + case 0x1f801090: + PSXHW_LOG("DMA1 MADR 32bit write %x\n", value); + HW_DMA1_MADR = SWAPu32(value); return; // DMA1 madr + case 0x1f801094: + PSXHW_LOG("DMA1 BCR 32bit write %x\n", value); + HW_DMA1_BCR = SWAPu32(value); return; // DMA1 bcr +#endif + case 0x1f801098: +#ifdef PSXHW_LOG + PSXHW_LOG("DMA1 CHCR 32bit write %x\n", value); +#endif + DmaExec(1); // DMA1 chcr (MDEC out DMA) + return; + +#ifdef PSXHW_LOG + case 0x1f8010a0: + PSXHW_LOG("DMA2 MADR 32bit write %x\n", value); + HW_DMA2_MADR = SWAPu32(value); return; // DMA2 madr + case 0x1f8010a4: + PSXHW_LOG("DMA2 BCR 32bit write %x\n", value); + HW_DMA2_BCR = SWAPu32(value); return; // DMA2 bcr +#endif + case 0x1f8010a8: +#ifdef PSXHW_LOG + PSXHW_LOG("DMA2 CHCR 32bit write %x\n", value); +#endif + DmaExec(2); // DMA2 chcr (GPU DMA) + return; + +#ifdef PSXHW_LOG + case 0x1f8010b0: + PSXHW_LOG("DMA3 MADR 32bit write %x\n", value); + HW_DMA3_MADR = SWAPu32(value); return; // DMA3 madr + case 0x1f8010b4: + PSXHW_LOG("DMA3 BCR 32bit write %x\n", value); + HW_DMA3_BCR = SWAPu32(value); return; // DMA3 bcr +#endif + case 0x1f8010b8: +#ifdef PSXHW_LOG + PSXHW_LOG("DMA3 CHCR 32bit write %x\n", value); +#endif + DmaExec(3); // DMA3 chcr (CDROM DMA) + + return; + +#ifdef PSXHW_LOG + case 0x1f8010c0: + PSXHW_LOG("DMA4 MADR 32bit write %x\n", value); + HW_DMA4_MADR = SWAPu32(value); return; // DMA4 madr + case 0x1f8010c4: + PSXHW_LOG("DMA4 BCR 32bit write %x\n", value); + HW_DMA4_BCR = SWAPu32(value); return; // DMA4 bcr +#endif + case 0x1f8010c8: +#ifdef PSXHW_LOG + PSXHW_LOG("DMA4 CHCR 32bit write %x\n", value); +#endif + DmaExec(4); // DMA4 chcr (SPU DMA) + return; + +#if 0 + case 0x1f8010d0: break; //DMA5write_madr(); + case 0x1f8010d4: break; //DMA5write_bcr(); + case 0x1f8010d8: break; //DMA5write_chcr(); // Not needed +#endif + +#ifdef PSXHW_LOG + case 0x1f8010e0: + PSXHW_LOG("DMA6 MADR 32bit write %x\n", value); + HW_DMA6_MADR = SWAPu32(value); return; // DMA6 bcr + case 0x1f8010e4: + PSXHW_LOG("DMA6 BCR 32bit write %x\n", value); + HW_DMA6_BCR = SWAPu32(value); return; // DMA6 bcr +#endif + case 0x1f8010e8: +#ifdef PSXHW_LOG + PSXHW_LOG("DMA6 CHCR 32bit write %x\n", value); +#endif + DmaExec(6); // DMA6 chcr (OT clear) + return; + +#ifdef PSXHW_LOG + case 0x1f8010f0: + PSXHW_LOG("DMA PCR 32bit write %x\n", value); + HW_DMA_PCR = SWAPu32(value); + return; +#endif + + case 0x1f8010f4: +#ifdef PSXHW_LOG + PSXHW_LOG("DMA ICR 32bit write %x\n", value); +#endif + { + u32 tmp = (~value) & SWAPu32(HW_DMA_ICR); + HW_DMA_ICR = SWAPu32(((tmp ^ value) & 0xffffff) ^ tmp); + return; + } + + case 0x1f801810: +#ifdef PSXHW_LOG + PSXHW_LOG("GPU DATA 32bit write %x\n", value); +#endif + GPU_writeData(value); return; + case 0x1f801814: +#ifdef PSXHW_LOG + PSXHW_LOG("GPU STATUS 32bit write %x\n", value); +#endif + GPU_writeStatus(value); return; + + case 0x1f801820: + mdecWrite0(value); break; + case 0x1f801824: + mdecWrite1(value); break; + + case 0x1f801100: +#ifdef PSXHW_LOG + PSXHW_LOG("COUNTER 0 COUNT 32bit write %x\n", value); +#endif + psxRcntWcount(0, value & 0xffff); return; + case 0x1f801104: +#ifdef PSXHW_LOG + PSXHW_LOG("COUNTER 0 MODE 32bit write %x\n", value); +#endif + psxRcntWmode(0, value); return; + case 0x1f801108: +#ifdef PSXHW_LOG + PSXHW_LOG("COUNTER 0 TARGET 32bit write %x\n", value); +#endif + psxRcntWtarget(0, value & 0xffff); return; // HW_DMA_ICR&= SWAP32((~value)&0xff000000); + + case 0x1f801110: +#ifdef PSXHW_LOG + PSXHW_LOG("COUNTER 1 COUNT 32bit write %x\n", value); +#endif + psxRcntWcount(1, value & 0xffff); return; + case 0x1f801114: +#ifdef PSXHW_LOG + PSXHW_LOG("COUNTER 1 MODE 32bit write %x\n", value); +#endif + psxRcntWmode(1, value); return; + case 0x1f801118: +#ifdef PSXHW_LOG + PSXHW_LOG("COUNTER 1 TARGET 32bit write %x\n", value); +#endif + psxRcntWtarget(1, value & 0xffff); return; + + case 0x1f801120: +#ifdef PSXHW_LOG + PSXHW_LOG("COUNTER 2 COUNT 32bit write %x\n", value); +#endif + psxRcntWcount(2, value & 0xffff); return; + case 0x1f801124: +#ifdef PSXHW_LOG + PSXHW_LOG("COUNTER 2 MODE 32bit write %x\n", value); +#endif + psxRcntWmode(2, value); return; + case 0x1f801128: +#ifdef PSXHW_LOG + PSXHW_LOG("COUNTER 2 TARGET 32bit write %x\n", value); +#endif + psxRcntWtarget(2, value & 0xffff); return; + + default: + psxHu32ref(add) = SWAPu32(value); +#ifdef PSXHW_LOG + PSXHW_LOG("*Unknown 32bit write at address %x value %x\n", add, value); +#endif + return; + } + psxHu32ref(add) = SWAPu32(value); +#ifdef PSXHW_LOG + PSXHW_LOG("*Known 32bit write at address %x value %x\n", add, value); +#endif +} + +int psxHwFreeze(gzFile f, int Mode) { + return 0; +} diff --git a/libpcsxcore/psxhw.h b/libpcsxcore/psxhw.h new file mode 100644 index 0000000..cd4e928 --- /dev/null +++ b/libpcsxcore/psxhw.h @@ -0,0 +1,78 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#ifndef __PSXHW_H__ +#define __PSXHW_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "psxcommon.h" +#include "r3000a.h" +#include "psxmem.h" +#include "sio.h" +#include "psxcounters.h" + +#define HW_DMA0_MADR (psxHu32ref(0x1080)) // MDEC in DMA +#define HW_DMA0_BCR (psxHu32ref(0x1084)) +#define HW_DMA0_CHCR (psxHu32ref(0x1088)) + +#define HW_DMA1_MADR (psxHu32ref(0x1090)) // MDEC out DMA +#define HW_DMA1_BCR (psxHu32ref(0x1094)) +#define HW_DMA1_CHCR (psxHu32ref(0x1098)) + +#define HW_DMA2_MADR (psxHu32ref(0x10a0)) // GPU DMA +#define HW_DMA2_BCR (psxHu32ref(0x10a4)) +#define HW_DMA2_CHCR (psxHu32ref(0x10a8)) + +#define HW_DMA3_MADR (psxHu32ref(0x10b0)) // CDROM DMA +#define HW_DMA3_BCR (psxHu32ref(0x10b4)) +#define HW_DMA3_CHCR (psxHu32ref(0x10b8)) + +#define HW_DMA4_MADR (psxHu32ref(0x10c0)) // SPU DMA +#define HW_DMA4_BCR (psxHu32ref(0x10c4)) +#define HW_DMA4_CHCR (psxHu32ref(0x10c8)) + +#define HW_DMA6_MADR (psxHu32ref(0x10e0)) // GPU DMA (OT) +#define HW_DMA6_BCR (psxHu32ref(0x10e4)) +#define HW_DMA6_CHCR (psxHu32ref(0x10e8)) + +#define HW_DMA_PCR (psxHu32ref(0x10f0)) +#define HW_DMA_ICR (psxHu32ref(0x10f4)) + +#define DMA_INTERRUPT(n) \ + if (SWAPu32(HW_DMA_ICR) & (1 << (16 + n))) { \ + HW_DMA_ICR |= SWAP32(1 << (24 + n)); \ + psxHu32ref(0x1070) |= SWAP32(8); \ + } + +void psxHwReset(); +u8 psxHwRead8(u32 add); +u16 psxHwRead16(u32 add); +u32 psxHwRead32(u32 add); +void psxHwWrite8(u32 add, u8 value); +void psxHwWrite16(u32 add, u16 value); +void psxHwWrite32(u32 add, u32 value); +int psxHwFreeze(gzFile f, int Mode); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/psxinterpreter.c b/libpcsxcore/psxinterpreter.c new file mode 100644 index 0000000..d85f464 --- /dev/null +++ b/libpcsxcore/psxinterpreter.c @@ -0,0 +1,822 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +/* + * PSX assembly interpreter. + */ + +#include "psxcommon.h" +#include "r3000a.h" +#include "gte.h" +#include "psxhle.h" +#include +static int branch = 0; +static int branch2 = 0; +static u32 branchPC; + +// These macros are used to assemble the repassembler functions +FILE *mylogf=NULL; +#define PSXCPU_LOG(format, arg) {\ + if(mylogf==NULL) mylogf=fopen("/home/tjw/src/asmlog","w");\ + fprintf (mylogf, format , arg);\ + if(psxRegs.cycle&0xffff==0) fflush(mylogf);\ + } +#undef PSXCPU_LOG +#define debugI() +void execI(); + +// Subsets +void (*psxBSC[64])(); +void (*psxSPC[64])(); +void (*psxREG[32])(); +void (*psxCP0[32])(); +void (*psxCP2[64])(); +void (*psxCP2BSC[32])(); + +static void delayRead(int reg, u32 bpc) { + u32 rold, rnew; + +// SysPrintf("delayRead at %x!\n", psxRegs.pc); + + rold = psxRegs.GPR.r[reg]; + psxBSC[psxRegs.code >> 26](); // branch delay load + rnew = psxRegs.GPR.r[reg]; + + psxRegs.pc = bpc; + + psxBranchTest(); + + psxRegs.GPR.r[reg] = rold; + execI(); // first branch opcode + psxRegs.GPR.r[reg] = rnew; + + branch = 0; +} + +static void delayWrite(int reg, u32 bpc) { + +/* SysPrintf("delayWrite at %x!\n", psxRegs.pc); + + SysPrintf("%s\n", disR3000AF(psxRegs.code, psxRegs.pc-4)); + SysPrintf("%s\n", disR3000AF(PSXMu32(bpc), bpc));*/ + + // no changes from normal behavior + + psxBSC[psxRegs.code >> 26](); + + branch = 0; + psxRegs.pc = bpc; + + psxBranchTest(); +} + +static void delayReadWrite(int reg, u32 bpc) { + +// SysPrintf("delayReadWrite at %x!\n", psxRegs.pc); + + // the branch delay load is skipped + + branch = 0; + psxRegs.pc = bpc; + + psxBranchTest(); +} + +// this defines shall be used with the tmp +// of the next func (instead of _Funct_...) +#define _tFunct_ ((tmp ) & 0x3F) // The funct part of the instruction register +#define _tRd_ ((tmp >> 11) & 0x1F) // The rd part of the instruction register +#define _tRt_ ((tmp >> 16) & 0x1F) // The rt part of the instruction register +#define _tRs_ ((tmp >> 21) & 0x1F) // The rs part of the instruction register +#define _tSa_ ((tmp >> 6) & 0x1F) // The sa part of the instruction register + +int psxTestLoadDelay(int reg, u32 tmp) { + if (tmp == 0) return 0; // NOP + switch (tmp >> 26) { + case 0x00: // SPECIAL + switch (_tFunct_) { + case 0x00: // SLL + case 0x02: case 0x03: // SRL/SRA + if (_tRd_ == reg && _tRt_ == reg) return 1; else + if (_tRt_ == reg) return 2; else + if (_tRd_ == reg) return 3; + break; + + case 0x08: // JR + if (_tRs_ == reg) return 2; + break; + case 0x09: // JALR + if (_tRd_ == reg && _tRs_ == reg) return 1; else + if (_tRs_ == reg) return 2; else + if (_tRd_ == reg) return 3; + break; + + // SYSCALL/BREAK just a break; + + case 0x20: case 0x21: case 0x22: case 0x23: + case 0x24: case 0x25: case 0x26: case 0x27: + case 0x2a: case 0x2b: // ADD/ADDU... + case 0x04: case 0x06: case 0x07: // SLLV... + if (_tRd_ == reg && (_tRt_ == reg || _tRs_ == reg)) return 1; else + if (_tRt_ == reg || _tRs_ == reg) return 2; else + if (_tRd_ == reg) return 3; + break; + + case 0x10: case 0x12: // MFHI/MFLO + if (_tRd_ == reg) return 3; + break; + case 0x11: case 0x13: // MTHI/MTLO + if (_tRs_ == reg) return 2; + break; + + case 0x18: case 0x19: + case 0x1a: case 0x1b: // MULT/DIV... + if (_tRt_ == reg || _tRs_ == reg) return 2; + break; + } + break; + + case 0x01: // REGIMM + switch (_tRt_) { + case 0x00: case 0x02: + case 0x10: case 0x12: // BLTZ/BGEZ... + if (_tRs_ == reg) return 2; + break; + } + break; + + // J would be just a break; + case 0x03: // JAL + if (31 == reg) return 3; + break; + + case 0x04: case 0x05: // BEQ/BNE + if (_tRs_ == reg || _tRt_ == reg) return 2; + break; + + case 0x06: case 0x07: // BLEZ/BGTZ + if (_tRs_ == reg) return 2; + break; + + case 0x08: case 0x09: case 0x0a: case 0x0b: + case 0x0c: case 0x0d: case 0x0e: // ADDI/ADDIU... + if (_tRt_ == reg && _tRs_ == reg) return 1; else + if (_tRs_ == reg) return 2; else + if (_tRt_ == reg) return 3; + break; + + case 0x0f: // LUI + if (_tRt_ == reg) return 3; + break; + + case 0x10: // COP0 + switch (_tFunct_) { + case 0x00: // MFC0 + if (_tRt_ == reg) return 3; + break; + case 0x02: // CFC0 + if (_tRt_ == reg) return 3; + break; + case 0x04: // MTC0 + if (_tRt_ == reg) return 2; + break; + case 0x06: // CTC0 + if (_tRt_ == reg) return 2; + break; + // RFE just a break; + } + break; + + case 0x12: // COP2 + switch (_tFunct_) { + case 0x00: + switch (_tRs_) { + case 0x00: // MFC2 + if (_tRt_ == reg) return 3; + break; + case 0x02: // CFC2 + if (_tRt_ == reg) return 3; + break; + case 0x04: // MTC2 + if (_tRt_ == reg) return 2; + break; + case 0x06: // CTC2 + if (_tRt_ == reg) return 2; + break; + } + break; + // RTPS... break; + } + break; + + case 0x22: case 0x26: // LWL/LWR + if (_tRt_ == reg) return 3; else + if (_tRs_ == reg) return 2; + break; + + case 0x20: case 0x21: case 0x23: + case 0x24: case 0x25: // LB/LH/LW/LBU/LHU + if (_tRt_ == reg && _tRs_ == reg) return 1; else + if (_tRs_ == reg) return 2; else + if (_tRt_ == reg) return 3; + break; + + case 0x28: case 0x29: case 0x2a: + case 0x2b: case 0x2e: // SB/SH/SWL/SW/SWR + if (_tRt_ == reg || _tRs_ == reg) return 2; + break; + + case 0x32: case 0x3a: // LWC2/SWC2 + if (_tRs_ == reg) return 2; + break; + } + + return 0; +} + +void psxDelayTest(int reg, u32 bpc) { + u32 *code; + u32 tmp; + + code = (u32 *)PSXM(bpc); + tmp = ((code == NULL) ? 0 : SWAP32(*code)); + branch = 1; + + switch (psxTestLoadDelay(reg, tmp)) { + case 1: + delayReadWrite(reg, bpc); return; + case 2: + delayRead(reg, bpc); return; + case 3: + delayWrite(reg, bpc); return; + } + psxBSC[psxRegs.code >> 26](); + + branch = 0; + psxRegs.pc = bpc; + + psxBranchTest(); +} + +__inline static void doBranch(u32 tar) { + u32 *code; + u32 tmp; + + branch2 = branch = 1; + branchPC = tar; + + code = (u32 *)PSXM(psxRegs.pc); + psxRegs.code = ((code == NULL) ? 0 : SWAP32(*code)); + + //debugI(); + + psxRegs.pc += 4; + psxRegs.cycle += BIAS; + + // check for load delay + tmp = psxRegs.code >> 26; + switch (tmp) { + case 0x10: // COP0 + switch (_Rs_) { + case 0x00: // MFC0 + case 0x02: // CFC0 + psxDelayTest(_Rt_, branchPC); + return; + } + break; + case 0x12: // COP2 + switch (_Funct_) { + case 0x00: + switch (_Rs_) { + case 0x00: // MFC2 + case 0x02: // CFC2 + psxDelayTest(_Rt_, branchPC); + return; + } + break; + } + break; + case 0x32: // LWC2 + psxDelayTest(_Rt_, branchPC); + return; + default: + if (tmp >= 0x20 && tmp <= 0x26) { // LB/LH/LWL/LW/LBU/LHU/LWR + psxDelayTest(_Rt_, branchPC); + return; + } + break; + } + + psxBSC[psxRegs.code >> 26](); + + branch = 0; + psxRegs.pc = branchPC; + + psxBranchTest(); +} + +/********************************************************* +* Arithmetic with immediate operand * +* Format: OP rt, rs, immediate * +*********************************************************/ +void psxADDI() { if (!_Rt_) return; _rRt_ = _u32(_rRs_) + _Imm_ ; } // Rt = Rs + Im (Exception on Integer Overflow) +void psxADDIU() { if (!_Rt_) return; _rRt_ = _u32(_rRs_) + _Imm_ ; } // Rt = Rs + Im +void psxANDI() { if (!_Rt_) return; _rRt_ = _u32(_rRs_) & _ImmU_; } // Rt = Rs And Im +void psxORI() { if (!_Rt_) return; _rRt_ = _u32(_rRs_) | _ImmU_; } // Rt = Rs Or Im +void psxXORI() { if (!_Rt_) return; _rRt_ = _u32(_rRs_) ^ _ImmU_; } // Rt = Rs Xor Im +void psxSLTI() { if (!_Rt_) return; _rRt_ = _i32(_rRs_) < _Imm_ ; } // Rt = Rs < Im (Signed) +void psxSLTIU() { if (!_Rt_) return; _rRt_ = _u32(_rRs_) < ((u32)_Imm_); } // Rt = Rs < Im (Unsigned) + +/********************************************************* +* Register arithmetic * +* Format: OP rd, rs, rt * +*********************************************************/ +void psxADD() { if (!_Rd_) return; _rRd_ = _u32(_rRs_) + _u32(_rRt_); } // Rd = Rs + Rt (Exception on Integer Overflow) +void psxADDU() { if (!_Rd_) return; _rRd_ = _u32(_rRs_) + _u32(_rRt_); } // Rd = Rs + Rt +void psxSUB() { if (!_Rd_) return; _rRd_ = _u32(_rRs_) - _u32(_rRt_); } // Rd = Rs - Rt (Exception on Integer Overflow) +void psxSUBU() { if (!_Rd_) return; _rRd_ = _u32(_rRs_) - _u32(_rRt_); } // Rd = Rs - Rt +void psxAND() { if (!_Rd_) return; _rRd_ = _u32(_rRs_) & _u32(_rRt_); } // Rd = Rs And Rt +void psxOR() { if (!_Rd_) return; _rRd_ = _u32(_rRs_) | _u32(_rRt_); } // Rd = Rs Or Rt +void psxXOR() { if (!_Rd_) return; _rRd_ = _u32(_rRs_) ^ _u32(_rRt_); } // Rd = Rs Xor Rt +void psxNOR() { if (!_Rd_) return; _rRd_ =~(_u32(_rRs_) | _u32(_rRt_)); }// Rd = Rs Nor Rt +void psxSLT() { if (!_Rd_) return; _rRd_ = _i32(_rRs_) < _i32(_rRt_); } // Rd = Rs < Rt (Signed) +void psxSLTU() { if (!_Rd_) return; _rRd_ = _u32(_rRs_) < _u32(_rRt_); } // Rd = Rs < Rt (Unsigned) + +/********************************************************* +* Register mult/div & Register trap logic * +* Format: OP rs, rt * +*********************************************************/ +void psxDIV() { + if (_i32(_rRt_) != 0) { + _i32(_rLo_) = _i32(_rRs_) / _i32(_rRt_); + _i32(_rHi_) = _i32(_rRs_) % _i32(_rRt_); + } +} + +void psxDIVU() { + if (_rRt_ != 0) { + _rLo_ = _rRs_ / _rRt_; + _rHi_ = _rRs_ % _rRt_; + } +} + +void psxMULT() { + u64 res = (s64)((s64)_i32(_rRs_) * (s64)_i32(_rRt_)); + + psxRegs.GPR.n.lo = (u32)(res & 0xffffffff); + psxRegs.GPR.n.hi = (u32)((res >> 32) & 0xffffffff); +} + +void psxMULTU() { + u64 res = (u64)((u64)_u32(_rRs_) * (u64)_u32(_rRt_)); + + psxRegs.GPR.n.lo = (u32)(res & 0xffffffff); + psxRegs.GPR.n.hi = (u32)((res >> 32) & 0xffffffff); +} + +/********************************************************* +* Register branch logic * +* Format: OP rs, offset * +*********************************************************/ +#define RepZBranchi32(op) if(_i32(_rRs_) op 0) doBranch(_BranchTarget_); +#define RepZBranchLinki32(op) if(_i32(_rRs_) op 0) { _SetLink(31); doBranch(_BranchTarget_); } + +void psxBGEZ() { RepZBranchi32(>=) } // Branch if Rs >= 0 +void psxBGEZAL() { RepZBranchLinki32(>=) } // Branch if Rs >= 0 and link +void psxBGTZ() { RepZBranchi32(>) } // Branch if Rs > 0 +void psxBLEZ() { RepZBranchi32(<=) } // Branch if Rs <= 0 +void psxBLTZ() { RepZBranchi32(<) } // Branch if Rs < 0 +void psxBLTZAL() { RepZBranchLinki32(<) } // Branch if Rs < 0 and link + +/********************************************************* +* Shift arithmetic with constant shift * +* Format: OP rd, rt, sa * +*********************************************************/ +void psxSLL() { if (!_Rd_) return; _u32(_rRd_) = _u32(_rRt_) << _Sa_; } // Rd = Rt << sa +void psxSRA() { if (!_Rd_) return; _i32(_rRd_) = _i32(_rRt_) >> _Sa_; } // Rd = Rt >> sa (arithmetic) +void psxSRL() { if (!_Rd_) return; _u32(_rRd_) = _u32(_rRt_) >> _Sa_; } // Rd = Rt >> sa (logical) + +/********************************************************* +* Shift arithmetic with variant register shift * +* Format: OP rd, rt, rs * +*********************************************************/ +void psxSLLV() { if (!_Rd_) return; _u32(_rRd_) = _u32(_rRt_) << _u32(_rRs_); } // Rd = Rt << rs +void psxSRAV() { if (!_Rd_) return; _i32(_rRd_) = _i32(_rRt_) >> _u32(_rRs_); } // Rd = Rt >> rs (arithmetic) +void psxSRLV() { if (!_Rd_) return; _u32(_rRd_) = _u32(_rRt_) >> _u32(_rRs_); } // Rd = Rt >> rs (logical) + +/********************************************************* +* Load higher 16 bits of the first word in GPR with imm * +* Format: OP rt, immediate * +*********************************************************/ +void psxLUI() { if (!_Rt_) return; _u32(_rRt_) = psxRegs.code << 16; } // Upper halfword of Rt = Im + +/********************************************************* +* Move from HI/LO to GPR * +* Format: OP rd * +*********************************************************/ +void psxMFHI() { if (!_Rd_) return; _rRd_ = _rHi_; } // Rd = Hi +void psxMFLO() { if (!_Rd_) return; _rRd_ = _rLo_; } // Rd = Lo + +/********************************************************* +* Move to GPR to HI/LO & Register jump * +* Format: OP rs * +*********************************************************/ +void psxMTHI() { _rHi_ = _rRs_; } // Hi = Rs +void psxMTLO() { _rLo_ = _rRs_; } // Lo = Rs + +/********************************************************* +* Special purpose instructions * +* Format: OP * +*********************************************************/ +void psxBREAK() { + // Break exception - psx rom doens't handles this +} + +void psxSYSCALL() { + psxRegs.pc -= 4; + psxException(0x20, branch); +} + +void psxRFE() { +// SysPrintf("psxRFE\n"); + psxRegs.CP0.n.Status = (psxRegs.CP0.n.Status & 0xfffffff0) | + ((psxRegs.CP0.n.Status & 0x3c) >> 2); +} + +/********************************************************* +* Register branch logic * +* Format: OP rs, rt, offset * +*********************************************************/ +#define RepBranchi32(op) if(_i32(_rRs_) op _i32(_rRt_)) doBranch(_BranchTarget_); + +void psxBEQ() { RepBranchi32(==) } // Branch if Rs == Rt +void psxBNE() { RepBranchi32(!=) } // Branch if Rs != Rt + +/********************************************************* +* Jump to target * +* Format: OP target * +*********************************************************/ +void psxJ() { doBranch(_JumpTarget_); } +void psxJAL() { _SetLink(31); doBranch(_JumpTarget_); } + +/********************************************************* +* Register jump * +* Format: OP rs, rd * +*********************************************************/ +void psxJR() { + doBranch(_u32(_rRs_)); + psxJumpTest(); +} + +void psxJALR() { + u32 temp = _u32(_rRs_); + if (_Rd_) { _SetLink(_Rd_); } + doBranch(temp); +} + +/********************************************************* +* Load and store for GPR * +* Format: OP rt, offset(base) * +*********************************************************/ + +#define _oB_ (_u32(_rRs_) + _Imm_) + +void psxLB() { + if (_Rt_) { + _i32(_rRt_) = (signed char)psxMemRead8(_oB_); + } else { + psxMemRead8(_oB_); + } +} + +void psxLBU() { + if (_Rt_) { + _u32(_rRt_) = psxMemRead8(_oB_); + } else { + psxMemRead8(_oB_); + } +} + +void psxLH() { + if (_Rt_) { + _i32(_rRt_) = (short)psxMemRead16(_oB_); + } else { + psxMemRead16(_oB_); + } +} + +void psxLHU() { + if (_Rt_) { + _u32(_rRt_) = psxMemRead16(_oB_); + } else { + psxMemRead16(_oB_); + } +} + +void psxLW() { + if (_Rt_) { + _u32(_rRt_) = psxMemRead32(_oB_); + } else { + psxMemRead32(_oB_); + } +} + +u32 LWL_MASK[4] = { 0xffffff, 0xffff, 0xff, 0 }; +u32 LWL_SHIFT[4] = { 24, 16, 8, 0 }; + +void psxLWL() { + u32 addr = _oB_; + u32 shift = addr & 3; + u32 mem = psxMemRead32(addr & ~3); + + if (!_Rt_) return; + _u32(_rRt_) = ( _u32(_rRt_) & LWL_MASK[shift]) | + ( mem << LWL_SHIFT[shift]); + + /* + Mem = 1234. Reg = abcd + + 0 4bcd (mem << 24) | (reg & 0x00ffffff) + 1 34cd (mem << 16) | (reg & 0x0000ffff) + 2 234d (mem << 8) | (reg & 0x000000ff) + 3 1234 (mem ) | (reg & 0x00000000) + */ +} + +u32 LWR_MASK[4] = { 0, 0xff000000, 0xffff0000, 0xffffff00 }; +u32 LWR_SHIFT[4] = { 0, 8, 16, 24 }; + +void psxLWR() { + u32 addr = _oB_; + u32 shift = addr & 3; + u32 mem = psxMemRead32(addr & ~3); + + if (!_Rt_) return; + _u32(_rRt_) = ( _u32(_rRt_) & LWR_MASK[shift]) | + ( mem >> LWR_SHIFT[shift]); + + /* + Mem = 1234. Reg = abcd + + 0 1234 (mem ) | (reg & 0x00000000) + 1 a123 (mem >> 8) | (reg & 0xff000000) + 2 ab12 (mem >> 16) | (reg & 0xffff0000) + 3 abc1 (mem >> 24) | (reg & 0xffffff00) + */ +} + +void psxSB() { psxMemWrite8 (_oB_, _u8 (_rRt_)); } +void psxSH() { psxMemWrite16(_oB_, _u16(_rRt_)); } +void psxSW() { psxMemWrite32(_oB_, _u32(_rRt_)); } + +u32 SWL_MASK[4] = { 0xffffff00, 0xffff0000, 0xff000000, 0 }; +u32 SWL_SHIFT[4] = { 24, 16, 8, 0 }; + +void psxSWL() { + u32 addr = _oB_; + u32 shift = addr & 3; + u32 mem = psxMemRead32(addr & ~3); + + psxMemWrite32(addr & ~3, (_u32(_rRt_) >> SWL_SHIFT[shift]) | + ( mem & SWL_MASK[shift]) ); + /* + Mem = 1234. Reg = abcd + + 0 123a (reg >> 24) | (mem & 0xffffff00) + 1 12ab (reg >> 16) | (mem & 0xffff0000) + 2 1abc (reg >> 8) | (mem & 0xff000000) + 3 abcd (reg ) | (mem & 0x00000000) + */ +} + +u32 SWR_MASK[4] = { 0, 0xff, 0xffff, 0xffffff }; +u32 SWR_SHIFT[4] = { 0, 8, 16, 24 }; + +void psxSWR() { + u32 addr = _oB_; + u32 shift = addr & 3; + u32 mem = psxMemRead32(addr & ~3); + + psxMemWrite32(addr & ~3, (_u32(_rRt_) << SWR_SHIFT[shift]) | + ( mem & SWR_MASK[shift]) ); + + /* + Mem = 1234. Reg = abcd + + 0 abcd (reg ) | (mem & 0x00000000) + 1 bcd4 (reg << 8) | (mem & 0x000000ff) + 2 cd34 (reg << 16) | (mem & 0x0000ffff) + 3 d234 (reg << 24) | (mem & 0x00ffffff) + */ +} + +/********************************************************* +* Moves between GPR and COPx * +* Format: OP rt, fs * +*********************************************************/ +void psxMFC0() { if (!_Rt_) return; _i32(_rRt_) = (int)_rFs_; } +void psxCFC0() { if (!_Rt_) return; _i32(_rRt_) = (int)_rFs_; } + +void psxTestSWInts() { + // the next code is untested, if u know please + // tell me if it works ok or not (linuzappz) + if (psxRegs.CP0.n.Cause & psxRegs.CP0.n.Status & 0x0300 && + psxRegs.CP0.n.Status & 0x1) { + psxException(psxRegs.CP0.n.Cause, branch); + } +} + +__inline static void MTC0(int reg, u32 val) { +// SysPrintf("MTC0 %d: %x\n", reg, val); + switch (reg) { + case 12: // Status + psxRegs.CP0.r[12] = val; + psxTestSWInts(); + break; + + case 13: // Cause + psxRegs.CP0.n.Cause = val & ~(0xfc00); + psxTestSWInts(); + break; + + default: + psxRegs.CP0.r[reg] = val; + break; + } +} + +void psxMTC0() { MTC0(_Rd_, _u32(_rRt_)); } +void psxCTC0() { MTC0(_Rd_, _u32(_rRt_)); } + +/********************************************************* +* Unknow instruction (would generate an exception) * +* Format: ? * +*********************************************************/ +void psxNULL() { +#ifdef PSXCPU_LOG + PSXCPU_LOG("psx: Unimplemented op %x\n", psxRegs.code); +#endif +} + +void psxSPECIAL() { + psxSPC[_Funct_](); +} + +void psxREGIMM() { + psxREG[_Rt_](); +} + +void psxCOP0() { + psxCP0[_Rs_](); +} + +void psxCOP2() { + psxCP2[_Funct_](); +} + +void psxBASIC() { + psxCP2BSC[_Rs_](); +} + +void psxHLE() { +// psxHLEt[psxRegs.code & 0xffff](); + psxHLEt[psxRegs.code & 0x07](); // HDHOSHY experimental patch +} + +void (*psxBSC[64])() = { + psxSPECIAL, psxREGIMM, psxJ , psxJAL , psxBEQ , psxBNE , psxBLEZ, psxBGTZ, + psxADDI , psxADDIU , psxSLTI, psxSLTIU, psxANDI, psxORI , psxXORI, psxLUI , + psxCOP0 , psxNULL , psxCOP2, psxNULL , psxNULL, psxNULL, psxNULL, psxNULL, + psxNULL , psxNULL , psxNULL, psxNULL , psxNULL, psxNULL, psxNULL, psxNULL, + psxLB , psxLH , psxLWL , psxLW , psxLBU , psxLHU , psxLWR , psxNULL, + psxSB , psxSH , psxSWL , psxSW , psxNULL, psxNULL, psxSWR , psxNULL, + psxNULL , psxNULL , gteLWC2, psxNULL , psxNULL, psxNULL, psxNULL, psxNULL, + psxNULL , psxNULL , gteSWC2, psxHLE , psxNULL, psxNULL, psxNULL, psxNULL +}; + + +void (*psxSPC[64])() = { + psxSLL , psxNULL , psxSRL , psxSRA , psxSLLV , psxNULL , psxSRLV, psxSRAV, + psxJR , psxJALR , psxNULL, psxNULL, psxSYSCALL, psxBREAK, psxNULL, psxNULL, + psxMFHI, psxMTHI , psxMFLO, psxMTLO, psxNULL , psxNULL , psxNULL, psxNULL, + psxMULT, psxMULTU, psxDIV , psxDIVU, psxNULL , psxNULL , psxNULL, psxNULL, + psxADD , psxADDU , psxSUB , psxSUBU, psxAND , psxOR , psxXOR , psxNOR , + psxNULL, psxNULL , psxSLT , psxSLTU, psxNULL , psxNULL , psxNULL, psxNULL, + psxNULL, psxNULL , psxNULL, psxNULL, psxNULL , psxNULL , psxNULL, psxNULL, + psxNULL, psxNULL , psxNULL, psxNULL, psxNULL , psxNULL , psxNULL, psxNULL +}; + +void (*psxREG[32])() = { + psxBLTZ , psxBGEZ , psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, + psxNULL , psxNULL , psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, + psxBLTZAL, psxBGEZAL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, + psxNULL , psxNULL , psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL +}; + +void (*psxCP0[32])() = { + psxMFC0, psxNULL, psxCFC0, psxNULL, psxMTC0, psxNULL, psxCTC0, psxNULL, + psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, + psxRFE , psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, + psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL +}; + +void (*psxCP2[64])() = { + psxBASIC, gteRTPS , psxNULL , psxNULL, psxNULL, psxNULL , gteNCLIP, psxNULL, // 00 + psxNULL , psxNULL , psxNULL , psxNULL, gteOP , psxNULL , psxNULL , psxNULL, // 08 + gteDPCS , gteINTPL, gteMVMVA, gteNCDS, gteCDP , psxNULL , gteNCDT , psxNULL, // 10 + psxNULL , psxNULL , psxNULL , gteNCCS, gteCC , psxNULL , gteNCS , psxNULL, // 18 + gteNCT , psxNULL , psxNULL , psxNULL, psxNULL, psxNULL , psxNULL , psxNULL, // 20 + gteSQR , gteDCPL , gteDPCT , psxNULL, psxNULL, gteAVSZ3, gteAVSZ4, psxNULL, // 28 + gteRTPT , psxNULL , psxNULL , psxNULL, psxNULL, psxNULL , psxNULL , psxNULL, // 30 + psxNULL , psxNULL , psxNULL , psxNULL, psxNULL, gteGPF , gteGPL , gteNCCT // 38 +}; + +void (*psxCP2BSC[32])() = { + gteMFC2, psxNULL, gteCFC2, psxNULL, gteMTC2, psxNULL, gteCTC2, psxNULL, + psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, + psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, + psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL, psxNULL +}; + + +/////////////////////////////////////////// + +static int intInit() { + return 0; +} + +static void intReset() { +} + + +void execI() { + //printf("execI\n"); + u32 *code = (u32 *)PSXM(psxRegs.pc); + psxRegs.code = ((code == NULL) ? 0 : SWAP32(*code)); + + debugI(); + + + psxRegs.pc += 4; + psxRegs.cycle += BIAS; + + psxBSC[psxRegs.code >> 26](); +} + +#ifdef __EMSCRIPTEN__ +#include +#endif + + +static void intExecute() { + +#ifdef __EMSCRIPTEN__ + // void emscripten_set_main_loop(em_callback_func func, int fps, int simulate_infinite_loop); + emscripten_set_main_loop(execI, 0, 1); +#else + while (1) { + execI(); + } +#endif +} + + + +static void intExecuteBlock() { + branch2 = 0; + while (!branch2) execI(); +} + +static void intClear(u32 Addr, u32 Size) { +} + +static void intShutdown() { +} + +// interpreter execution + + +R3000Acpu psxInt = { + intInit, + intReset, + intExecute, + intExecuteBlock, + intClear, + intShutdown +}; diff --git a/libpcsxcore/psxmem.c b/libpcsxcore/psxmem.c new file mode 100644 index 0000000..a3b2ccf --- /dev/null +++ b/libpcsxcore/psxmem.c @@ -0,0 +1,351 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +/* +* PSX memory functions. +*/ + +// TODO: Implement caches & cycle penalty. + +#include "psxmem.h" +#include "r3000a.h" +#include "psxhw.h" +#include + +#ifndef MAP_ANONYMOUS +#define MAP_ANONYMOUS MAP_ANON +#endif + +s8 *psxM = NULL; // Kernel & User Memory (2 Meg) +s8 *psxP = NULL; // Parallel Port (64K) +s8 *psxR = NULL; // BIOS ROM (512K) +s8 *psxH = NULL; // Scratch Pad (1K) & Hardware Registers (8K) + +u8 **psxMemWLUT = NULL; +u8 **psxMemRLUT = NULL; + +/* Playstation Memory Map (from Playstation doc by Joshua Walker) +0x0000_0000-0x0000_ffff Kernel (64K) +0x0001_0000-0x001f_ffff User Memory (1.9 Meg) + +0x1f00_0000-0x1f00_ffff Parallel Port (64K) + +0x1f80_0000-0x1f80_03ff Scratch Pad (1024 bytes) + +0x1f80_1000-0x1f80_2fff Hardware Registers (8K) + +0x1fc0_0000-0x1fc7_ffff BIOS (512K) + +0x8000_0000-0x801f_ffff Kernel and User Memory Mirror (2 Meg) Cached +0x9fc0_0000-0x9fc7_ffff BIOS Mirror (512K) Cached + +0xa000_0000-0xa01f_ffff Kernel and User Memory Mirror (2 Meg) Uncached +0xbfc0_0000-0xbfc7_ffff BIOS Mirror (512K) Uncached +*/ + +int psxMemInit() { + int i; + + psxMemRLUT = (u8 **)malloc(0x10000 * sizeof(void *)); + psxMemWLUT = (u8 **)malloc(0x10000 * sizeof(void *)); + memset(psxMemRLUT, 0, 0x10000 * sizeof(void *)); + memset(psxMemWLUT, 0, 0x10000 * sizeof(void *)); + + psxM = mmap(0, 0x00220000, + PROT_WRITE | PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + + psxP = &psxM[0x200000]; + psxH = &psxM[0x210000]; + + psxR = (s8 *)malloc(0x00080000); + + if (psxMemRLUT == NULL || psxMemWLUT == NULL || + psxM == NULL || psxP == NULL || psxH == NULL) { + SysMessage(_("Error allocating memory!")); + return -1; + } + +// MemR + for (i = 0; i < 0x80; i++) psxMemRLUT[i + 0x0000] = (u8 *)&psxM[(i & 0x1f) << 16]; + + memcpy(psxMemRLUT + 0x8000, psxMemRLUT, 0x80 * sizeof(void *)); + memcpy(psxMemRLUT + 0xa000, psxMemRLUT, 0x80 * sizeof(void *)); + + psxMemRLUT[0x1f00] = (u8 *)psxP; + psxMemRLUT[0x1f80] = (u8 *)psxH; + + for (i = 0; i < 0x08; i++) psxMemRLUT[i + 0x1fc0] = (u8 *)&psxR[i << 16]; + + memcpy(psxMemRLUT + 0x9fc0, psxMemRLUT + 0x1fc0, 0x08 * sizeof(void *)); + memcpy(psxMemRLUT + 0xbfc0, psxMemRLUT + 0x1fc0, 0x08 * sizeof(void *)); + +// MemW + for (i = 0; i < 0x80; i++) psxMemWLUT[i + 0x0000] = (u8 *)&psxM[(i & 0x1f) << 16]; + + memcpy(psxMemWLUT + 0x8000, psxMemWLUT, 0x80 * sizeof(void *)); + memcpy(psxMemWLUT + 0xa000, psxMemWLUT, 0x80 * sizeof(void *)); + + psxMemWLUT[0x1f00] = (u8 *)psxP; + psxMemWLUT[0x1f80] = (u8 *)psxH; + + return 0; +} + +void psxMemReset() { + FILE *f = NULL; + char bios[1024]; + + memset(psxM, 0, 0x00200000); + memset(psxP, 0, 0x00010000); + + if (strcmp(Config.Bios, "HLE") != 0) { + sprintf(bios, "%s/%s", Config.BiosDir, Config.Bios); + f = fopen(bios, "rb"); + + if (f == NULL) { + SysMessage(_("Could not open BIOS:\"%s\". Enabling HLE Bios!\n"), bios); + memset(psxR, 0, 0x80000); + Config.HLE = TRUE; + } else { + fread(psxR, 1, 0x80000, f); + fclose(f); + Config.HLE = FALSE; + } + } else Config.HLE = TRUE; +} + +void psxMemShutdown() { + munmap(psxM, 0x00220000); + + free(psxR); + free(psxMemRLUT); + free(psxMemWLUT); +} + +static int writeok = 1; + +u8 psxMemRead8(u32 mem) { + char *p; + u32 t; + + t = mem >> 16; + if (t == 0x1f80) { + if (mem < 0x1f801000) + return psxHu8(mem); + else + return psxHwRead8(mem); + } else { + p = (char *)(psxMemRLUT[t]); + if (p != NULL) { + /* + if (Config.Debug) + DebugCheckBP((mem & 0xffffff) | 0x80000000, R1); + */ + return *(u8 *)(p + (mem & 0xffff)); + } else { +#ifdef PSXMEM_LOG + PSXMEM_LOG("err lb %8.8lx\n", mem); +#endif + return 0; + } + } +} + +u16 psxMemRead16(u32 mem) { + char *p; + u32 t; + + t = mem >> 16; + if (t == 0x1f80) { + if (mem < 0x1f801000) + return psxHu16(mem); + else + return psxHwRead16(mem); + } else { + p = (char *)(psxMemRLUT[t]); + if (p != NULL) { + /*if (Config.Debug) + DebugCheckBP((mem & 0xffffff) | 0x80000000, R2); + */ + return SWAPu16(*(u16 *)(p + (mem & 0xffff))); + } else { +#ifdef PSXMEM_LOG + PSXMEM_LOG("err lh %8.8lx\n", mem); +#endif + return 0; + } + } +} + +u32 psxMemRead32(u32 mem) { + char *p; + u32 t; + + t = mem >> 16; + if (t == 0x1f80) { + if (mem < 0x1f801000) + return psxHu32(mem); + else + return psxHwRead32(mem); + } else { + p = (char *)(psxMemRLUT[t]); + if (p != NULL) { + /*if (Config.Debug) + DebugCheckBP((mem & 0xffffff) | 0x80000000, R4);*/ + return SWAPu32(*(u32 *)(p + (mem & 0xffff))); + } else { +#ifdef PSXMEM_LOG + if (writeok) { PSXMEM_LOG("err lw %8.8lx\n", mem); } +#endif + return 0; + } + } +} + +void psxMemWrite8(u32 mem, u8 value) { + char *p; + u32 t; + + t = mem >> 16; + if (t == 0x1f80) { + if (mem < 0x1f801000) + psxHu8(mem) = value; + else + psxHwWrite8(mem, value); + } else { + p = (char *)(psxMemWLUT[t]); + if (p != NULL) { + /*if (Config.Debug) + DebugCheckBP((mem & 0xffffff) | 0x80000000, W1);*/ + *(u8 *)(p + (mem & 0xffff)) = value; +#ifdef PSXREC + psxCpu->Clear((mem & (~3)), 1); +#endif + } else { +#ifdef PSXMEM_LOG + PSXMEM_LOG("err sb %8.8lx\n", mem); +#endif + } + } +} + +void psxMemWrite16(u32 mem, u16 value) { + char *p; + u32 t; + + t = mem >> 16; + if (t == 0x1f80) { + if (mem < 0x1f801000) + psxHu16ref(mem) = SWAPu16(value); + else + psxHwWrite16(mem, value); + } else { + p = (char *)(psxMemWLUT[t]); + if (p != NULL) { + /*if (Config.Debug) + DebugCheckBP((mem & 0xffffff) | 0x80000000, W2);*/ + *(u16 *)(p + (mem & 0xffff)) = SWAPu16(value); +#ifdef PSXREC + psxCpu->Clear((mem & (~1)), 1); +#endif + } else { +#ifdef PSXMEM_LOG + PSXMEM_LOG("err sh %8.8lx\n", mem); +#endif + } + } +} + +void psxMemWrite32(u32 mem, u32 value) { + char *p; + u32 t; + +// if ((mem&0x1fffff) == 0x71E18 || value == 0x48088800) SysPrintf("t2fix!!\n"); + t = mem >> 16; + if (t == 0x1f80) { + if (mem < 0x1f801000) + psxHu32ref(mem) = SWAPu32(value); + else + psxHwWrite32(mem, value); + } else { + p = (char *)(psxMemWLUT[t]); + if (p != NULL) { + /*if (Config.Debug) + DebugCheckBP((mem & 0xffffff) | 0x80000000, W4);*/ + *(u32 *)(p + (mem & 0xffff)) = SWAPu32(value); +#ifdef PSXREC + psxCpu->Clear(mem, 1); +#endif + } else { + if (mem != 0xfffe0130) { +#ifdef PSXREC + if (!writeok) + psxCpu->Clear(mem, 1); +#endif + +#ifdef PSXMEM_LOG + if (writeok) { PSXMEM_LOG("err sw %8.8lx\n", mem); } +#endif + } else { + int i; + + switch (value) { + case 0x800: case 0x804: + if (writeok == 0) break; + writeok = 0; + memset(psxMemWLUT + 0x0000, 0, 0x80 * sizeof(void *)); + memset(psxMemWLUT + 0x8000, 0, 0x80 * sizeof(void *)); + memset(psxMemWLUT + 0xa000, 0, 0x80 * sizeof(void *)); + break; + case 0x00: case 0x1e988: + if (writeok == 1) break; + writeok = 1; + for (i = 0; i < 0x80; i++) psxMemWLUT[i + 0x0000] = (void *)&psxM[(i & 0x1f) << 16]; + memcpy(psxMemWLUT + 0x8000, psxMemWLUT, 0x80 * sizeof(void *)); + memcpy(psxMemWLUT + 0xa000, psxMemWLUT, 0x80 * sizeof(void *)); + break; + default: +#ifdef PSXMEM_LOG + PSXMEM_LOG("unk %8.8lx = %x\n", mem, value); +#endif + break; + } + } + } + } +} + +void *psxMemPointer(u32 mem) { + char *p; + u32 t; + + t = mem >> 16; + if (t == 0x1f80) { + if (mem < 0x1f801000) + return (void *)&psxH[mem]; + else + return NULL; + } else { + p = (char *)(psxMemWLUT[t]); + if (p != NULL) { + return (void *)(p + (mem & 0xffff)); + } + return NULL; + } +} diff --git a/libpcsxcore/psxmem.h b/libpcsxcore/psxmem.h new file mode 100644 index 0000000..bdc4c9b --- /dev/null +++ b/libpcsxcore/psxmem.h @@ -0,0 +1,144 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#ifndef __PSXMEMORY_H__ +#define __PSXMEMORY_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "psxcommon.h" + +#if defined(__BIGENDIAN__) + +#define _SWAP16(b) ((((unsigned char *)&(b))[0] & 0xff) | (((unsigned char *)&(b))[1] & 0xff) << 8) +#define _SWAP32(b) ((((unsigned char *)&(b))[0] & 0xff) | ((((unsigned char *)&(b))[1] & 0xff) << 8) | ((((unsigned char *)&(b))[2] & 0xff) << 16) | (((unsigned char *)&(b))[3] << 24)) + +#define SWAP16(v) ((((v) & 0xff00) >> 8) +(((v) & 0xff) << 8)) +#define SWAP32(v) ((((v) & 0xff000000ul) >> 24) + (((v) & 0xff0000ul) >> 8) + (((v) & 0xff00ul)<<8) +(((v) & 0xfful) << 24)) +#define SWAPu32(v) SWAP32((u32)(v)) +#define SWAPs32(v) SWAP32((s32)(v)) + +#define SWAPu16(v) SWAP16((u16)(v)) +#define SWAPs16(v) SWAP16((s16)(v)) + +#else + +#define SWAP16(b) (b) +#define SWAP32(b) (b) + +#define SWAPu16(b) (b) +#define SWAPu32(b) (b) + +#endif + +extern s8 *psxM; +#define psxMs8(mem) psxM[(mem) & 0x1fffff] +#define psxMs16(mem) (SWAP16(*(s16 *)&psxM[(mem) & 0x1fffff])) +#define psxMs32(mem) (SWAP32(*(s32 *)&psxM[(mem) & 0x1fffff])) +#define psxMu8(mem) (*(u8 *)&psxM[(mem) & 0x1fffff]) +#define psxMu16(mem) (SWAP16(*(u16 *)&psxM[(mem) & 0x1fffff])) +#define psxMu32(mem) (SWAP32(*(u32 *)&psxM[(mem) & 0x1fffff])) + +#define psxMs8ref(mem) psxM[(mem) & 0x1fffff] +#define psxMs16ref(mem) (*(s16 *)&psxM[(mem) & 0x1fffff]) +#define psxMs32ref(mem) (*(s32 *)&psxM[(mem) & 0x1fffff]) +#define psxMu8ref(mem) (*(u8 *)&psxM[(mem) & 0x1fffff]) +#define psxMu16ref(mem) (*(u16 *)&psxM[(mem) & 0x1fffff]) +#define psxMu32ref(mem) (*(u32 *)&psxM[(mem) & 0x1fffff]) + +extern s8 *psxP; +#define psxPs8(mem) psxP[(mem) & 0xffff] +#define psxPs16(mem) (SWAP16(*(s16 *)&psxP[(mem) & 0xffff])) +#define psxPs32(mem) (SWAP32(*(s32 *)&psxP[(mem) & 0xffff])) +#define psxPu8(mem) (*(u8 *)&psxP[(mem) & 0xffff]) +#define psxPu16(mem) (SWAP16(*(u16 *)&psxP[(mem) & 0xffff])) +#define psxPu32(mem) (SWAP32(*(u32 *)&psxP[(mem) & 0xffff])) + +#define psxPs8ref(mem) psxP[(mem) & 0xffff] +#define psxPs16ref(mem) (*(s16 *)&psxP[(mem) & 0xffff]) +#define psxPs32ref(mem) (*(s32 *)&psxP[(mem) & 0xffff]) +#define psxPu8ref(mem) (*(u8 *)&psxP[(mem) & 0xffff]) +#define psxPu16ref(mem) (*(u16 *)&psxP[(mem) & 0xffff]) +#define psxPu32ref(mem) (*(u32 *)&psxP[(mem) & 0xffff]) + +extern s8 *psxR; +#define psxRs8(mem) psxR[(mem) & 0x7ffff] +#define psxRs16(mem) (SWAP16(*(s16 *)&psxR[(mem) & 0x7ffff])) +#define psxRs32(mem) (SWAP32(*(s32 *)&psxR[(mem) & 0x7ffff])) +#define psxRu8(mem) (*(u8* )&psxR[(mem) & 0x7ffff]) +#define psxRu16(mem) (SWAP16(*(u16 *)&psxR[(mem) & 0x7ffff])) +#define psxRu32(mem) (SWAP32(*(u32 *)&psxR[(mem) & 0x7ffff])) + +#define psxRs8ref(mem) psxR[(mem) & 0x7ffff] +#define psxRs16ref(mem) (*(s16*)&psxR[(mem) & 0x7ffff]) +#define psxRs32ref(mem) (*(s32*)&psxR[(mem) & 0x7ffff]) +#define psxRu8ref(mem) (*(u8 *)&psxR[(mem) & 0x7ffff]) +#define psxRu16ref(mem) (*(u16*)&psxR[(mem) & 0x7ffff]) +#define psxRu32ref(mem) (*(u32*)&psxR[(mem) & 0x7ffff]) + +extern s8 *psxH; +#define psxHs8(mem) psxH[(mem) & 0xffff] +#define psxHs16(mem) (SWAP16(*(s16 *)&psxH[(mem) & 0xffff])) +#define psxHs32(mem) (SWAP32(*(s32 *)&psxH[(mem) & 0xffff])) +#define psxHu8(mem) (*(u8 *)&psxH[(mem) & 0xffff]) +#define psxHu16(mem) (SWAP16(*(u16 *)&psxH[(mem) & 0xffff])) +#define psxHu32(mem) (SWAP32(*(u32 *)&psxH[(mem) & 0xffff])) + +#define psxHs8ref(mem) psxH[(mem) & 0xffff] +#define psxHs16ref(mem) (*(s16 *)&psxH[(mem) & 0xffff]) +#define psxHs32ref(mem) (*(s32 *)&psxH[(mem) & 0xffff]) +#define psxHu8ref(mem) (*(u8 *)&psxH[(mem) & 0xffff]) +#define psxHu16ref(mem) (*(u16 *)&psxH[(mem) & 0xffff]) +#define psxHu32ref(mem) (*(u32 *)&psxH[(mem) & 0xffff]) + +extern u8 **psxMemWLUT; +extern u8 **psxMemRLUT; + +#define PSXM(mem) (psxMemRLUT[(mem) >> 16] == 0 && printf("psxm error"), (u8*)(psxMemRLUT[(mem) >> 16] + ((mem) & 0xffff))) +#define PSXMs8(mem) (*(s8 *)PSXM(mem)) +#define PSXMs16(mem) (SWAP16(*(s16 *)PSXM(mem))) +#define PSXMs32(mem) (SWAP32(*(s32 *)PSXM(mem))) +#define PSXMu8(mem) (*(u8 *)PSXM(mem)) +#define PSXMu16(mem) (SWAP16(*(u16 *)PSXM(mem))) +#define PSXMu32(mem) (SWAP32(*(u32 *)PSXM(mem))) + +#define PSXMu32ref(mem) (*(u32 *)PSXM(mem)) + +#if !defined(PSXREC) && (defined(__x86_64__) || defined(__i386__) || defined(__ppc__)) && !defined(NOPSXREC) +#define PSXREC +#endif + +int psxMemInit(); +void psxMemReset(); +void psxMemShutdown(); + +u8 psxMemRead8 (u32 mem); +u16 psxMemRead16(u32 mem); +u32 psxMemRead32(u32 mem); +void psxMemWrite8 (u32 mem, u8 value); +void psxMemWrite16(u32 mem, u16 value); +void psxMemWrite32(u32 mem, u32 value); +void *psxMemPointer(u32 mem); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/r3000a.c b/libpcsxcore/r3000a.c new file mode 100644 index 0000000..6accda2 --- /dev/null +++ b/libpcsxcore/r3000a.c @@ -0,0 +1,202 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +/* +* R3000A CPU functions. +*/ + +#include "r3000a.h" +#include "cdrom.h" +#include "mdec.h" +#include "gte.h" + +R3000Acpu *psxCpu = NULL; +psxRegisters psxRegs; + +int psxInit() { + SysPrintf(_("Running PCSX Version %s (%s).\n"), PACKAGE_VERSION, __DATE__); + +#if 0 + if (Config.Cpu == CPU_INTERPRETER) { + psxCpu = &psxInt; + } else psxCpu = &psxRec; +#else + psxCpu = &psxInt; +#endif + + Log = 0; + + if (psxMemInit() == -1) return -1; + + return psxCpu->Init(); +} + +void psxReset() { + psxCpu->Reset(); + + psxMemReset(); + + memset(&psxRegs, 0, sizeof(psxRegs)); + + psxRegs.pc = 0xbfc00000; // Start in bootstrap + + psxRegs.CP0.r[12] = 0x10900000; // COP0 enabled | BEV = 1 | TS = 1 + psxRegs.CP0.r[15] = 0x00000002; // PRevID = Revision ID, same as R3000A + + psxHwReset(); + psxBiosInit(); + + if (!Config.HLE) + psxExecuteBios(); + +#ifdef EMU_LOG + EMU_LOG("*BIOS END*\n"); +#endif + Log = 0; +} + +void psxShutdown() { + psxMemShutdown(); + psxBiosShutdown(); + + psxCpu->Shutdown(); +} + +void psxException(u32 code, u32 bd) { + // Set the Cause + psxRegs.CP0.n.Cause = code; + + // Set the EPC & PC + if (bd) { +#ifdef PSXCPU_LOG + PSXCPU_LOG("bd set!!!\n"); +#endif + SysPrintf("bd set!!!\n"); + psxRegs.CP0.n.Cause |= 0x80000000; + psxRegs.CP0.n.EPC = (psxRegs.pc - 4); + } else + psxRegs.CP0.n.EPC = (psxRegs.pc); + + if (psxRegs.CP0.n.Status & 0x400000) + psxRegs.pc = 0xbfc00180; + else + psxRegs.pc = 0x80000080; + + // Set the Status + psxRegs.CP0.n.Status = (psxRegs.CP0.n.Status &~0x3f) | + ((psxRegs.CP0.n.Status & 0xf) << 2); + + if (!Config.HLE && (((PSXMu32(psxRegs.CP0.n.EPC) >> 24) & 0xfe) == 0x4a)) { + // "hokuto no ken" / "Crash Bandicot 2" ... fix + PSXMu32ref(psxRegs.CP0.n.EPC)&= SWAPu32(~0x02000000); + } + + if (Config.HLE) psxBiosException(); +} + +void psxBranchTest() { + if ((psxRegs.cycle - psxNextsCounter) >= psxNextCounter) + psxRcntUpdate(); + + if (psxRegs.interrupt) { + if ((psxRegs.interrupt & 0x80) && !Config.Sio) { // sio + if ((psxRegs.cycle - psxRegs.intCycle[7]) >= psxRegs.intCycle[7 + 1]) { + psxRegs.interrupt &= ~0x80; + sioInterrupt(); + } + } + if (psxRegs.interrupt & 0x04) { // cdr + if ((psxRegs.cycle - psxRegs.intCycle[2]) >= psxRegs.intCycle[2 + 1]) { + psxRegs.interrupt &= ~0x04; + cdrInterrupt(); + } + } + if (psxRegs.interrupt & 0x040000) { // cdr read + if ((psxRegs.cycle - psxRegs.intCycle[2 + 16]) >= psxRegs.intCycle[2 + 16 + 1]) { + psxRegs.interrupt &= ~0x040000; + cdrReadInterrupt(); + } + } + if (psxRegs.interrupt & 0x01000000) { // gpu dma + if ((psxRegs.cycle - psxRegs.intCycle[3 + 24]) >= psxRegs.intCycle[3 + 24 + 1]) { + psxRegs.interrupt &= ~0x01000000; + gpuInterrupt(); + } + } + if (psxRegs.interrupt & 0x02000000) { // mdec out dma + if ((psxRegs.cycle - psxRegs.intCycle[5 + 24]) >= psxRegs.intCycle[5 + 24 + 1]) { + psxRegs.interrupt &= ~0x02000000; + mdec1Interrupt(); + } + } + if (psxRegs.interrupt & 0x04000000) { // spu dma + if ((psxRegs.cycle - psxRegs.intCycle[1 + 24]) >= psxRegs.intCycle[1 + 24 + 1]) { + psxRegs.interrupt &= ~0x04000000; + spuInterrupt(); + } + } + } + + if (psxHu32(0x1070) & psxHu32(0x1074)) { + if ((psxRegs.CP0.n.Status & 0x401) == 0x401) { +#ifdef PSXCPU_LOG + PSXCPU_LOG("Interrupt: %x %x\n", psxHu32(0x1070), psxHu32(0x1074)); +#endif +// SysPrintf("Interrupt (%x): %x %x\n", psxRegs.cycle, psxHu32(0x1070), psxHu32(0x1074)); + psxException(0x400, 0); + } + } +} + +void psxJumpTest() { + if (!Config.HLE && Config.PsxOut) { + u32 call = psxRegs.GPR.n.t1 & 0xff; + switch (psxRegs.pc & 0x1fffff) { + case 0xa0: +#ifdef PSXBIOS_LOG + if (call != 0x28 && call != 0xe) { + PSXBIOS_LOG("Bios call a0: %s (%x) %x,%x,%x,%x\n", biosA0n[call], call, psxRegs.GPR.n.a0, psxRegs.GPR.n.a1, psxRegs.GPR.n.a2, psxRegs.GPR.n.a3); } +#endif + if (biosA0[call]) + biosA0[call](); + break; + case 0xb0: +#ifdef PSXBIOS_LOG + if (call != 0x17 && call != 0xb) { + PSXBIOS_LOG("Bios call b0: %s (%x) %x,%x,%x,%x\n", biosB0n[call], call, psxRegs.GPR.n.a0, psxRegs.GPR.n.a1, psxRegs.GPR.n.a2, psxRegs.GPR.n.a3); } +#endif + if (biosB0[call]) + biosB0[call](); + break; + case 0xc0: +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("Bios call c0: %s (%x) %x,%x,%x,%x\n", biosC0n[call], call, psxRegs.GPR.n.a0, psxRegs.GPR.n.a1, psxRegs.GPR.n.a2, psxRegs.GPR.n.a3); +#endif + if (biosC0[call]) + biosC0[call](); + break; + } + } +} + +void psxExecuteBios() { + while (psxRegs.pc != 0x80030000) + psxCpu->ExecuteBlock(); +} + diff --git a/libpcsxcore/r3000a.h b/libpcsxcore/r3000a.h new file mode 100644 index 0000000..836fb08 --- /dev/null +++ b/libpcsxcore/r3000a.h @@ -0,0 +1,246 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#ifndef __R3000A_H__ +#define __R3000A_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "psxcommon.h" +#include "psxmem.h" +#include "psxcounters.h" +#include "psxbios.h" + +typedef struct { + int (*Init)(); + void (*Reset)(); + void (*Execute)(); /* executes up to a break */ + void (*ExecuteBlock)(); /* executes up to a jump */ + void (*Clear)(u32 Addr, u32 Size); + void (*Shutdown)(); +} R3000Acpu; + +extern R3000Acpu *psxCpu; +extern R3000Acpu psxInt; +#if 0 +extern R3000Acpu psxRec; +#define PSXREC +#endif + +typedef union { +#if defined(__BIGENDIAN__) + struct { u8 h3, h2, h, l; } b; + struct { s8 h3, h2, h, l; } sb; + struct { u16 h, l; } w; + struct { s16 h, l; } sw; +#else + struct { u8 l, h, h2, h3; } b; + struct { u16 l, h; } w; + struct { s8 l, h, h2, h3; } sb; + struct { s16 l, h; } sw; +#endif +} PAIR; + +typedef union { + struct { + u32 r0, at, v0, v1, a0, a1, a2, a3, + t0, t1, t2, t3, t4, t5, t6, t7, + s0, s1, s2, s3, s4, s5, s6, s7, + t8, t9, k0, k1, gp, sp, s8, ra, lo, hi; + } n; + u32 r[34]; /* Lo, Hi in r[32] and r[33] */ + PAIR p[34]; +} psxGPRRegs; + +typedef union { + struct { + u32 Index, Random, EntryLo0, EntryLo1, + Context, PageMask, Wired, Reserved0, + BadVAddr, Count, EntryHi, Compare, + Status, Cause, EPC, PRid, + Config, LLAddr, WatchLO, WatchHI, + XContext, Reserved1, Reserved2, Reserved3, + Reserved4, Reserved5, ECC, CacheErr, + TagLo, TagHi, ErrorEPC, Reserved6; + } n; + u32 r[32]; + PAIR p[32]; +} psxCP0Regs; + +typedef struct { + short x, y; +} SVector2D; + +typedef struct { + short z, pad; +} SVector2Dz; + +typedef struct { + short x, y, z, pad; +} SVector3D; + +typedef struct { + short x, y, z, pad; +} LVector3D; + +typedef struct { + unsigned char r, g, b, c; +} CBGR; + +typedef struct { + short m11, m12, m13, m21, m22, m23, m31, m32, m33, pad; +} SMatrix3D; + +typedef union { + struct { + SVector3D v0, v1, v2; + CBGR rgb; + s32 otz; + s32 ir0, ir1, ir2, ir3; + SVector2D sxy0, sxy1, sxy2, sxyp; + SVector2Dz sz0, sz1, sz2, sz3; + CBGR rgb0, rgb1, rgb2; + s32 reserved; + s32 mac0, mac1, mac2, mac3; + u32 irgb, orgb; + s32 lzcs, lzcr; + } n; + u32 r[32]; + PAIR p[32]; +} psxCP2Data; + +typedef union { + struct { + SMatrix3D rMatrix; + s32 trX, trY, trZ; + SMatrix3D lMatrix; + s32 rbk, gbk, bbk; + SMatrix3D cMatrix; + s32 rfc, gfc, bfc; + s32 ofx, ofy; + s32 h; + s32 dqa, dqb; + s32 zsf3, zsf4; + s32 flag; + } n; + u32 r[32]; + PAIR p[32]; +} psxCP2Ctrl; + +typedef struct { + psxGPRRegs GPR; /* General Purpose Registers */ + psxCP0Regs CP0; /* Coprocessor0 Registers */ + psxCP2Data CP2D; /* Cop2 data registers */ + psxCP2Ctrl CP2C; /* Cop2 control registers */ + u32 pc; /* Program counter */ + u32 code; /* The instruction */ + u32 cycle; + u32 interrupt; + u32 intCycle[32]; +} psxRegisters; + +extern psxRegisters psxRegs; + +#if defined(__BIGENDIAN__) + +#define _i32(x) *(s32 *)&x +#define _u32(x) x + +#define _i16(x) (((short *)&x)[1]) +#define _u16(x) (((unsigned short *)&x)[1]) + +#define _i8(x) (((char *)&x)[3]) +#define _u8(x) (((unsigned char *)&x)[3]) + +#else + +#define _i32(x) *(s32 *)&x +#define _u32(x) x + +#define _i16(x) *(short *)&x +#define _u16(x) *(unsigned short *)&x + +#define _i8(x) *(char *)&x +#define _u8(x) *(unsigned char *)&x + +#endif + +/**** R3000A Instruction Macros ****/ +#define _PC_ psxRegs.pc // The next PC to be executed + +#define _fOp_(code) ((code >> 26) ) // The opcode part of the instruction register +#define _fFunct_(code) ((code ) & 0x3F) // The funct part of the instruction register +#define _fRd_(code) ((code >> 11) & 0x1F) // The rd part of the instruction register +#define _fRt_(code) ((code >> 16) & 0x1F) // The rt part of the instruction register +#define _fRs_(code) ((code >> 21) & 0x1F) // The rs part of the instruction register +#define _fSa_(code) ((code >> 6) & 0x1F) // The sa part of the instruction register +#define _fIm_(code) ((u16)code) // The immediate part of the instruction register +#define _fTarget_(code) (code & 0x03ffffff) // The target part of the instruction register + +#define _fImm_(code) ((s16)code) // sign-extended immediate +#define _fImmU_(code) (code&0xffff) // zero-extended immediate + +#define _Op_ _fOp_(psxRegs.code) +#define _Funct_ _fFunct_(psxRegs.code) +#define _Rd_ _fRd_(psxRegs.code) +#define _Rt_ _fRt_(psxRegs.code) +#define _Rs_ _fRs_(psxRegs.code) +#define _Sa_ _fSa_(psxRegs.code) +#define _Im_ _fIm_(psxRegs.code) +#define _Target_ _fTarget_(psxRegs.code) + +#define _Imm_ _fImm_(psxRegs.code) +#define _ImmU_ _fImmU_(psxRegs.code) + +#define _rRs_ psxRegs.GPR.r[_Rs_] // Rs register +#define _rRt_ psxRegs.GPR.r[_Rt_] // Rt register +#define _rRd_ psxRegs.GPR.r[_Rd_] // Rd register +#define _rSa_ psxRegs.GPR.r[_Sa_] // Sa register +#define _rFs_ psxRegs.CP0.r[_Rd_] // Fs register + +#define _c2dRs_ psxRegs.CP2D.r[_Rs_] // Rs cop2 data register +#define _c2dRt_ psxRegs.CP2D.r[_Rt_] // Rt cop2 data register +#define _c2dRd_ psxRegs.CP2D.r[_Rd_] // Rd cop2 data register +#define _c2dSa_ psxRegs.CP2D.r[_Sa_] // Sa cop2 data register + +#define _rHi_ psxRegs.GPR.n.hi // The HI register +#define _rLo_ psxRegs.GPR.n.lo // The LO register + +#define _JumpTarget_ ((_Target_ * 4) + (_PC_ & 0xf0000000)) // Calculates the target during a jump instruction +#define _BranchTarget_ ((s16)_Im_ * 4 + _PC_) // Calculates the target during a branch instruction + +#define _SetLink(x) psxRegs.GPR.r[x] = _PC_ + 4; // Sets the return address in the link register + +int psxInit(); +void psxReset(); +void psxShutdown(); +void psxException(u32 code, u32 bd); +void psxBranchTest(); +void psxExecuteBios(); +int psxTestLoadDelay(int reg, u32 tmp); +void psxDelayTest(int reg, u32 bpc); +void psxTestSWInts(); +void psxJumpTest(); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/sio.c b/libpcsxcore/sio.c new file mode 100644 index 0000000..3d5fd87 --- /dev/null +++ b/libpcsxcore/sio.c @@ -0,0 +1,732 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +/* +* SIO functions. +*/ + +#include "sio.h" +#include + +// Status Flags +#define TX_RDY 0x0001 +#define RX_RDY 0x0002 +#define TX_EMPTY 0x0004 +#define PARITY_ERR 0x0008 +#define RX_OVERRUN 0x0010 +#define FRAMING_ERR 0x0020 +#define SYNC_DETECT 0x0040 +#define DSR 0x0080 +#define CTS 0x0100 +#define IRQ 0x0200 + +// Control Flags +#define TX_PERM 0x0001 +#define DTR 0x0002 +#define RX_PERM 0x0004 +#define BREAK 0x0008 +#define RESET_ERR 0x0010 +#define RTS 0x0020 +#define SIO_RESET 0x0040 + +// *** FOR WORKS ON PADS AND MEMORY CARDS ***** + +static unsigned char buf[256]; +unsigned char cardh[4] = { 0x00, 0x00, 0x5a, 0x5d }; + +// Transfer Ready and the Buffer is Empty +// static unsigned short StatReg = 0x002b; +static unsigned short StatReg = TX_RDY | TX_EMPTY; +static unsigned short ModeReg; +static unsigned short CtrlReg; +static unsigned short BaudReg; + +static unsigned int bufcount; +static unsigned int parp; +static unsigned int mcdst, rdwr; +static unsigned char adrH, adrL; +static unsigned int padst; + +char Mcd1Data[MCD_SIZE], Mcd2Data[MCD_SIZE]; + +// clk cycle byte +// 4us * 8bits = (PSXCLK / 1000000) * 32; (linuzappz) +// TODO: add SioModePrescaler and BaudReg +static inline void SIO_INT() { + if (!Config.Sio) { + psxRegs.interrupt |= 0x80; + psxRegs.intCycle[7 + 1] = 400; + psxRegs.intCycle[7] = psxRegs.cycle; + } +} + +void sioWrite8(unsigned char value) { +#ifdef PAD_LOG + PAD_LOG("sio write8 %x\n", value); +#endif + switch (padst) { + case 1: SIO_INT(); + if ((value & 0x40) == 0x40) { + padst = 2; parp = 1; + if (!Config.UseNet) { + switch (CtrlReg & 0x2002) { + case 0x0002: + buf[parp] = PAD1_poll(value); + break; + case 0x2002: + buf[parp] = PAD2_poll(value); + break; + } + }/* else { +// SysPrintf("%x: %x, %x, %x, %x\n", CtrlReg&0x2002, buf[2], buf[3], buf[4], buf[5]); + }*/ + + if (!(buf[parp] & 0x0f)) { + bufcount = 2 + 32; + } else { + bufcount = 2 + (buf[parp] & 0x0f) * 2; + } + if (buf[parp] == 0x41) { + switch (value) { + case 0x43: + buf[1] = 0x43; + break; + case 0x45: + buf[1] = 0xf3; + break; + } + } + } + else padst = 0; + return; + case 2: + parp++; +/* if (buf[1] == 0x45) { + buf[parp] = 0; + SIO_INT(); + return; + }*/ + if (!Config.UseNet) { + switch (CtrlReg & 0x2002) { + case 0x0002: buf[parp] = PAD1_poll(value); break; + case 0x2002: buf[parp] = PAD2_poll(value); break; + } + } + + if (parp == bufcount) { padst = 0; return; } + SIO_INT(); + return; + } + + switch (mcdst) { + case 1: + SIO_INT(); + if (rdwr) { parp++; return; } + parp = 1; + switch (value) { + case 0x52: rdwr = 1; break; + case 0x57: rdwr = 2; break; + default: mcdst = 0; + } + return; + case 2: // address H + SIO_INT(); + adrH = value; + *buf = 0; + parp = 0; + bufcount = 1; + mcdst = 3; + return; + case 3: // address L + SIO_INT(); + adrL = value; + *buf = adrH; + parp = 0; + bufcount = 1; + mcdst = 4; + return; + case 4: + SIO_INT(); + parp = 0; + switch (rdwr) { + case 1: // read + buf[0] = 0x5c; + buf[1] = 0x5d; + buf[2] = adrH; + buf[3] = adrL; + switch (CtrlReg & 0x2002) { + case 0x0002: + memcpy(&buf[4], Mcd1Data + (adrL | (adrH << 8)) * 128, 128); + break; + case 0x2002: + memcpy(&buf[4], Mcd2Data + (adrL | (adrH << 8)) * 128, 128); + break; + } + { + char xor = 0; + int i; + for (i = 2; i < 128 + 4; i++) + xor ^= buf[i]; + buf[132] = xor; + } + buf[133] = 0x47; + bufcount = 133; + break; + case 2: // write + buf[0] = adrL; + buf[1] = value; + buf[129] = 0x5c; + buf[130] = 0x5d; + buf[131] = 0x47; + bufcount = 131; + break; + } + mcdst = 5; + return; + case 5: + parp++; + if (rdwr == 2) { + if (parp < 128) buf[parp + 1] = value; + } + SIO_INT(); + return; + } + + switch (value) { + case 0x01: // start pad + StatReg |= RX_RDY; // Transfer is Ready + switch (CtrlReg & 0x2002) { + case 0x0002: buf[0] = PAD1_startPoll(1); break; + case 0x2002: buf[0] = PAD2_startPoll(2); break; + } + bufcount = 2; + parp = 0; + padst = 1; + SIO_INT(); + return; + case 0x81: // start memcard + StatReg |= RX_RDY; + memcpy(buf, cardh, 4); + parp = 0; + bufcount = 3; + mcdst = 1; + rdwr = 0; + SIO_INT(); + return; + } +} + +void sioWriteStat16(unsigned short value) { +} + +void sioWriteMode16(unsigned short value) { + ModeReg = value; +} + +void sioWriteCtrl16(unsigned short value) { + CtrlReg = value & ~RESET_ERR; + if (value & RESET_ERR) StatReg &= ~IRQ; + if ((CtrlReg & SIO_RESET) || (!CtrlReg)) { + padst = 0; mcdst = 0; parp = 0; + StatReg = TX_RDY | TX_EMPTY; + psxRegs.interrupt &= ~0x80; + } +} + +void sioWriteBaud16(unsigned short value) { + BaudReg = value; +} + +unsigned char sioRead8() { + unsigned char ret = 0; + + if ((StatReg & RX_RDY)/* && (CtrlReg & RX_PERM)*/) { +// StatReg &= ~RX_OVERRUN; + ret = buf[parp]; + if (parp == bufcount) { + StatReg &= ~RX_RDY; // Receive is not Ready now + if (mcdst == 5) { + mcdst = 0; + if (rdwr == 2) { + switch (CtrlReg & 0x2002) { + case 0x0002: + memcpy(Mcd1Data + (adrL | (adrH << 8)) * 128, &buf[1], 128); + SaveMcd(Config.Mcd1, Mcd1Data, (adrL | (adrH << 8)) * 128, 128); + break; + case 0x2002: + memcpy(Mcd2Data + (adrL | (adrH << 8)) * 128, &buf[1], 128); + SaveMcd(Config.Mcd2, Mcd2Data, (adrL | (adrH << 8)) * 128, 128); + break; + } + } + } + if (padst == 2) padst = 0; + if (mcdst == 1) { + mcdst = 2; + StatReg|= RX_RDY; + } + } + } + +#ifdef PAD_LOG + PAD_LOG("sio read8 ;ret = %x\n", ret); +#endif + return ret; +} + +unsigned short sioReadStat16() { + return StatReg; +} + +unsigned short sioReadMode16() { + return ModeReg; +} + +unsigned short sioReadCtrl16() { + return CtrlReg; +} + +unsigned short sioReadBaud16() { + return BaudReg; +} + + +void sioInterrupt() { +#ifdef PAD_LOG + PAD_LOG("Sio Interrupt (CP0.Status = %x)\n", psxRegs.CP0.n.Status); +#endif +// SysPrintf("Sio Interrupt\n"); + StatReg |= IRQ; + psxHu32ref(0x1070) |= SWAPu32(0x80); +} + +void LoadMcd(int mcd, char *str) { + FILE *f; + char *data = NULL; + + if (mcd == 1) data = Mcd1Data; + if (mcd == 2) data = Mcd2Data; + + if (*str == 0) { + sprintf(str, "memcards/card%d.mcd", mcd); + SysPrintf(_("No memory card value was specified - creating a default card %s\n"), str); + } + f = fopen(str, "rb"); + if (f == NULL) { + SysPrintf(_("The memory card %s doesn't exist - creating it\n"), str); + CreateMcd(str); + f = fopen(str, "rb"); + if (f != NULL) { + struct stat buf; + + if (stat(str, &buf) != -1) { + if (buf.st_size == MCD_SIZE + 64) + fseek(f, 64, SEEK_SET); + else if(buf.st_size == MCD_SIZE + 3904) + fseek(f, 3904, SEEK_SET); + } + fread(data, 1, MCD_SIZE, f); + fclose(f); + } + else + SysMessage(_("Memory card %s failed to load!\n"), str); + } + else { + struct stat buf; + SysPrintf(_("Loading memory card %s\n"), str); + if (stat(str, &buf) != -1) { + if (buf.st_size == MCD_SIZE + 64) + fseek(f, 64, SEEK_SET); + else if(buf.st_size == MCD_SIZE + 3904) + fseek(f, 3904, SEEK_SET); + } + fread(data, 1, MCD_SIZE, f); + fclose(f); + } +} + +void LoadMcds(char *mcd1, char *mcd2) { + LoadMcd(1, mcd1); + LoadMcd(2, mcd2); +} + +void SaveMcd(char *mcd, char *data, uint32_t adr, int size) { + FILE *f; + + f = fopen(mcd, "r+b"); + if (f != NULL) { + struct stat buf; + + if (stat(mcd, &buf) != -1) { + if (buf.st_size == MCD_SIZE + 64) + fseek(f, adr + 64, SEEK_SET); + else if (buf.st_size == MCD_SIZE + 3904) + fseek(f, adr + 3904, SEEK_SET); + else + fseek(f, adr, SEEK_SET); + } else + fseek(f, adr, SEEK_SET); + + fwrite(data + adr, 1, size, f); + fclose(f); + return; + } + +#if 0 + // try to create it again if we can't open it + f = fopen(mcd, "wb"); + if (f != NULL) { + fwrite(data, 1, MCD_SIZE, f); + fclose(f); + } +#endif + + ConvertMcd(mcd, data); +} + +void CreateMcd(char *mcd) { + FILE *f; + struct stat buf; + int s = MCD_SIZE; + int i = 0, j; + + f = fopen(mcd, "wb"); + if (f == NULL) + return; + + if (stat(mcd, &buf) != -1) { + if ((buf.st_size == MCD_SIZE + 3904) || strstr(mcd, ".gme")) { + s = s + 3904; + fputc('1', f); + s--; + fputc('2', f); + s--; + fputc('3', f); + s--; + fputc('-', f); + s--; + fputc('4', f); + s--; + fputc('5', f); + s--; + fputc('6', f); + s--; + fputc('-', f); + s--; + fputc('S', f); + s--; + fputc('T', f); + s--; + fputc('D', f); + s--; + for (i = 0; i < 7; i++) { + fputc(0, f); + s--; + } + fputc(1, f); + s--; + fputc(0, f); + s--; + fputc(1, f); + s--; + fputc('M', f); + s--; + fputc('Q', f); + s--; + for (i = 0; i < 14; i++) { + fputc(0xa0, f); + s--; + } + fputc(0, f); + s--; + fputc(0xff, f); + while (s-- > (MCD_SIZE + 1)) + fputc(0, f); + } else if ((buf.st_size == MCD_SIZE + 64) || strstr(mcd, ".mem") || strstr(mcd, ".vgs")) { + s = s + 64; + fputc('V', f); + s--; + fputc('g', f); + s--; + fputc('s', f); + s--; + fputc('M', f); + s--; + for (i = 0; i < 3; i++) { + fputc(1, f); + s--; + fputc(0, f); + s--; + fputc(0, f); + s--; + fputc(0, f); + s--; + } + fputc(0, f); + s--; + fputc(2, f); + while (s-- > (MCD_SIZE + 1)) + fputc(0, f); + } + } + fputc('M', f); + s--; + fputc('C', f); + s--; + while (s-- > (MCD_SIZE - 127)) + fputc(0, f); + fputc(0xe, f); + s--; + + for (i = 0; i < 15; i++) { // 15 blocks + fputc(0xa0, f); + s--; + fputc(0x00, f); + s--; + fputc(0x00, f); + s--; + fputc(0x00, f); + s--; + fputc(0x00, f); + s--; + fputc(0x00, f); + s--; + fputc(0x00, f); + s--; + fputc(0x00, f); + s--; + fputc(0xff, f); + s--; + fputc(0xff, f); + s--; + for (j = 0; j < 117; j++) { + fputc(0x00, f); + s--; + } + fputc(0xa0, f); + s--; + } + + for (i = 0; i < 20; i++) { + fputc(0xff, f); + s--; + fputc(0xff, f); + s--; + fputc(0xff, f); + s--; + fputc(0xff, f); + s--; + fputc(0x00, f); + s--; + fputc(0x00, f); + s--; + fputc(0x00, f); + s--; + fputc(0x00, f); + s--; + fputc(0xff, f); + s--; + fputc(0xff, f); + s--; + for (j = 0; j < 118; j++) { + fputc(0x00, f); + s--; + } + } + + while ((s--) >= 0) + fputc(0, f); + + fclose(f); +} + +void ConvertMcd(char *mcd, char *data) { + FILE *f; + int i = 0; + int s = MCD_SIZE; + + if (strstr(mcd, ".gme")) { + f = fopen(mcd, "wb"); + if (f != NULL) { + fwrite(data - 3904, 1, MCD_SIZE + 3904, f); + fclose(f); + } + f = fopen(mcd, "r+"); + s = s + 3904; + fputc('1', f); s--; + fputc('2', f); s--; + fputc('3', f); s--; + fputc('-', f); s--; + fputc('4', f); s--; + fputc('5', f); s--; + fputc('6', f); s--; + fputc('-', f); s--; + fputc('S', f); s--; + fputc('T', f); s--; + fputc('D', f); s--; + for (i = 0; i < 7; i++) { + fputc(0, f); s--; + } + fputc(1, f); s--; + fputc(0, f); s--; + fputc(1, f); s--; + fputc('M', f); s--; + fputc('Q', f); s--; + for(i=0;i<14;i++) { + fputc(0xa0, f); s--; + } + fputc(0, f); s--; + fputc(0xff, f); + while (s-- > (MCD_SIZE+1)) fputc(0, f); + fclose(f); + } else if(strstr(mcd, ".mem") || strstr(mcd,".vgs")) { + f = fopen(mcd, "wb"); + if (f != NULL) { + fwrite(data-64, 1, MCD_SIZE+64, f); + fclose(f); + } + f = fopen(mcd, "r+"); + s = s + 64; + fputc('V', f); s--; + fputc('g', f); s--; + fputc('s', f); s--; + fputc('M', f); s--; + for(i=0;i<3;i++) { + fputc(1, f); s--; + fputc(0, f); s--; + fputc(0, f); s--; + fputc(0, f); s--; + } + fputc(0, f); s--; + fputc(2, f); + while (s-- > (MCD_SIZE+1)) fputc(0, f); + fclose(f); + } else { + f = fopen(mcd, "wb"); + if (f != NULL) { + fwrite(data, 1, MCD_SIZE, f); + fclose(f); + } + } +} + +void GetMcdBlockInfo(int mcd, int block, McdBlock *Info) { + char *data = NULL, *ptr, *str, *sstr; + unsigned short clut[16]; + unsigned short c; + int i, x; + + memset(Info, 0, sizeof(McdBlock)); + + if (mcd == 1) data = Mcd1Data; + if (mcd == 2) data = Mcd2Data; + + ptr = data + block * 8192 + 2; + + Info->IconCount = *ptr & 0x3; + + ptr += 2; + + x = 0; + + str = Info->Title; + sstr = Info->sTitle; + + for (i = 0; i < 48; i++) { + c = *(ptr) << 8; + c |= *(ptr + 1); + if (!c) break; + + // Convert ASCII characters to half-width + if (c >= 0x8281 && c <= 0x829A) + c = (c - 0x8281) + 'a'; + else if (c >= 0x824F && c <= 0x827A) + c = (c - 0x824F) + '0'; + else if (c == 0x8140) c = ' '; + else if (c == 0x8143) c = ','; + else if (c == 0x8144) c = '.'; + else if (c == 0x8146) c = ':'; + else if (c == 0x8147) c = ';'; + else if (c == 0x8148) c = '?'; + else if (c == 0x8149) c = '!'; + else if (c == 0x815E) c = '/'; + else if (c == 0x8168) c = '"'; + else if (c == 0x8169) c = '('; + else if (c == 0x816A) c = ')'; + else if (c == 0x816D) c = '['; + else if (c == 0x816E) c = ']'; + else if (c == 0x817C) c = '-'; + else { + str[i] = ' '; + sstr[x++] = *ptr++; sstr[x++] = *ptr++; + continue; + } + + str[i] = sstr[x++] = c; + ptr += 2; + } + + trim(str); + trim(sstr); + + ptr = data + block * 8192 + 0x60; // icon palette data + + for (i = 0; i < 16; i++) { + clut[i] = *((unsigned short *)ptr); + ptr += 2; + } + + for (i = 0; i < Info->IconCount; i++) { + short *icon = &Info->Icon[i * 16 * 16]; + + ptr = data + block * 8192 + 128 + 128 * i; // icon data + + for (x = 0; x < 16 * 16; x++) { + icon[x++] = clut[*ptr & 0xf]; + icon[x] = clut[*ptr >> 4]; + ptr++; + } + } + + ptr = data + block * 128; + + Info->Flags = *ptr; + + ptr += 0xa; + strncpy(Info->ID, ptr, 12); + ptr += 12; + strncpy(Info->Name, ptr, 16); +} + +int sioFreeze(gzFile f, int Mode) { + gzfreeze(buf, sizeof(buf)); + gzfreeze(&StatReg, sizeof(StatReg)); + gzfreeze(&ModeReg, sizeof(ModeReg)); + gzfreeze(&CtrlReg, sizeof(CtrlReg)); + gzfreeze(&BaudReg, sizeof(BaudReg)); + gzfreeze(&bufcount, sizeof(bufcount)); + gzfreeze(&parp, sizeof(parp)); + gzfreeze(&mcdst, sizeof(mcdst)); + gzfreeze(&rdwr, sizeof(rdwr)); + gzfreeze(&adrH, sizeof(adrH)); + gzfreeze(&adrL, sizeof(adrL)); + gzfreeze(&padst, sizeof(padst)); + + return 0; +} diff --git a/libpcsxcore/sio.h b/libpcsxcore/sio.h new file mode 100644 index 0000000..cc8d925 --- /dev/null +++ b/libpcsxcore/sio.h @@ -0,0 +1,76 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + + +#ifndef _SIO_H_ +#define _SIO_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "psxcommon.h" +#include "r3000a.h" +#include "psxmem.h" +#include "plugins.h" +#include "psemu_plugin_defs.h" + +#define MCD_SIZE (1024 * 8 * 16) + +extern char Mcd1Data[MCD_SIZE], Mcd2Data[MCD_SIZE]; + +void sioWrite8(unsigned char value); +void sioWriteStat16(unsigned short value); +void sioWriteMode16(unsigned short value); +void sioWriteCtrl16(unsigned short value); +void sioWriteBaud16(unsigned short value); + +unsigned char sioRead8(); +unsigned short sioReadStat16(); +unsigned short sioReadMode16(); +unsigned short sioReadCtrl16(); +unsigned short sioReadBaud16(); + +void netError(); + +void sioInterrupt(); +int sioFreeze(gzFile f, int Mode); + +void LoadMcd(int mcd, char *str); +void LoadMcds(char *mcd1, char *mcd2); +void SaveMcd(char *mcd, char *data, uint32_t adr, int size); +void CreateMcd(char *mcd); +void ConvertMcd(char *mcd, char *data); + +typedef struct { + char Title[48 + 1]; // Title in ASCII + char sTitle[48 * 2 + 1]; // Title in Shift-JIS + char ID[12 + 1]; + char Name[16 + 1]; + int IconCount; + short Icon[16 * 16 * 3]; + unsigned char Flags; +} McdBlock; + +void GetMcdBlockInfo(int mcd, int block, McdBlock *info); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/sjisfont.h b/libpcsxcore/sjisfont.h new file mode 100644 index 0000000..9ad85dd --- /dev/null +++ b/libpcsxcore/sjisfont.h @@ -0,0 +1,13505 @@ +// +// This file is adapted from: +// +// Shinonome 14dot font for JISX 0208, 1983/1990 +// +// The original is k14goth by +// Yasuyuki Furukawa , 2000. +// (Public Domain) +// +// > Donated by H. Kagotani ; +// > public domainfont from Japan +// > JIS X 0208-1990 design is made by +// > TAKADA Toshihiro . +// > Modified for gothic like by Yasuyuki Furukawa +// +// Modified and Maintained by /efont/. +// +// (c) /efont/ -- Efont Open Laboratory 2001 +// http://openlab.ring.gr.jp/efont/ +// +// Converted to binary format by Wei Mingzhi . +// +#if 0 +const unsigned char font_8140[] = { + 0x78, 0xda, 0xad, 0x3b, 0x3b, 0x90, 0x1b, 0xc9, + 0x75, 0x3d, 0x9f, 0x05, 0x1a, 0xcb, 0xe1, 0x4e, + 0x03, 0x0b, 0x9f, 0x66, 0xa5, 0x3d, 0xa2, 0x77, + 0x09, 0x89, 0xb8, 0x2b, 0x07, 0x73, 0xe2, 0x95, + 0x0a, 0xb6, 0xb7, 0x84, 0xd1, 0x99, 0xb6, 0x97, + 0xf6, 0x05, 0x0c, 0x18, 0x28, 0x9c, 0x40, 0xa5, + 0x52, 0xa0, 0x2a, 0xc1, 0x55, 0x57, 0x65, 0x06, + 0xb4, 0x31, 0xe1, 0x86, 0x08, 0x18, 0x28, 0x44, + 0x78, 0xa1, 0x43, 0x87, 0x13, 0x6e, 0xa8, 0xe0, + 0x02, 0x85, 0x13, 0x28, 0x50, 0xa0, 0x60, 0x02, + 0x06, 0x08, 0x58, 0x45, 0xbf, 0xd7, 0x3d, 0x3d, + 0xdd, 0x3d, 0x3f, 0x52, 0x3e, 0xcf, 0x2b, 0x82, + 0x18, 0xbc, 0xe9, 0xe9, 0xd7, 0xaf, 0xdf, 0xff, + 0xf5, 0x12, 0xf2, 0xd7, 0x5e, 0x09, 0xe1, 0x84, + 0x01, 0x74, 0x5f, 0x31, 0xb9, 0x05, 0x88, 0x7b, + 0xb0, 0x29, 0x00, 0x87, 0x37, 0x90, 0x01, 0x7c, + 0xf3, 0x72, 0x88, 0x97, 0x39, 0x1d, 0xcf, 0x7a, + 0x00, 0xcd, 0x6f, 0x7d, 0x58, 0x87, 0xb8, 0x35, + 0x66, 0x9c, 0xd1, 0x84, 0x71, 0x04, 0x20, 0x04, + 0xde, 0x8c, 0xa0, 0x9e, 0x87, 0xef, 0x59, 0x05, + 0x44, 0x81, 0xa6, 0x80, 0xc1, 0xca, 0x78, 0x2f, + 0xed, 0xc3, 0x2b, 0x77, 0x32, 0x8f, 0xf8, 0xbd, + 0x63, 0x47, 0x38, 0x7b, 0xd6, 0x87, 0x0d, 0xd2, + 0x20, 0xed, 0xdf, 0x0f, 0x58, 0x5b, 0xe6, 0x27, + 0xb4, 0x87, 0xb0, 0xf7, 0xef, 0xc8, 0xff, 0xe9, + 0x32, 0xc7, 0x05, 0x92, 0xba, 0xa4, 0x63, 0xf1, + 0x9c, 0xec, 0x83, 0xa4, 0x17, 0xab, 0xc7, 0xe6, + 0x1d, 0x3b, 0xa8, 0xc7, 0x76, 0x61, 0xe1, 0xf2, + 0x13, 0x04, 0x9a, 0xd1, 0x6c, 0x6a, 0xad, 0x57, + 0xad, 0x98, 0xb1, 0x34, 0x08, 0x0b, 0xb5, 0x4f, + 0xbb, 0x9a, 0x62, 0x17, 0xc0, 0x2b, 0x7d, 0xee, + 0x73, 0x9a, 0xcc, 0x60, 0x2f, 0x1b, 0xb4, 0xa1, + 0xf0, 0xf2, 0x51, 0x32, 0xc9, 0x26, 0x64, 0x96, + 0xcd, 0x49, 0x84, 0xb7, 0x4a, 0x36, 0xf2, 0x28, + 0xe6, 0x14, 0x86, 0xf9, 0x0a, 0xf0, 0x2e, 0x8a, + 0xc7, 0x79, 0x53, 0x07, 0x36, 0xe5, 0xc7, 0xf1, + 0xae, 0x7d, 0x35, 0xdf, 0x85, 0x0b, 0x25, 0x54, + 0x10, 0x21, 0xe4, 0xd1, 0x35, 0x6f, 0x89, 0x62, + 0x2d, 0x83, 0xdf, 0x7c, 0xc0, 0x39, 0xf6, 0x0f, + 0xc6, 0x75, 0x49, 0xae, 0xe9, 0x2f, 0x18, 0x29, + 0xac, 0x17, 0x67, 0xfd, 0x40, 0x88, 0x33, 0x00, + 0xf6, 0xf5, 0x34, 0x7e, 0x1a, 0xf7, 0xaf, 0x88, + 0x25, 0xac, 0xa9, 0xd2, 0x72, 0x01, 0xbc, 0x5b, + 0x1d, 0x62, 0xb9, 0x05, 0x7d, 0x76, 0xe0, 0xce, + 0x61, 0x5e, 0x8c, 0xd0, 0x85, 0x7c, 0x4a, 0xa6, + 0x00, 0xd7, 0xe4, 0x59, 0xf7, 0x58, 0xc5, 0x38, + 0x64, 0x9d, 0x84, 0xa4, 0xe6, 0x56, 0xfd, 0x05, + 0x19, 0x27, 0x81, 0xd6, 0x03, 0xac, 0xb1, 0x26, + 0xb4, 0xc6, 0x9a, 0x50, 0x8f, 0x3d, 0xd6, 0xf3, + 0x35, 0xe1, 0x48, 0xc8, 0xeb, 0x7a, 0xbe, 0x26, + 0xbc, 0xc6, 0xb1, 0x91, 0x9e, 0xd5, 0xc9, 0xac, + 0x99, 0x23, 0xb4, 0x88, 0x7a, 0xd6, 0x91, 0x35, + 0x73, 0x6a, 0xd2, 0x2c, 0xe4, 0xa6, 0x21, 0x1d, + 0x0d, 0xb9, 0xb1, 0x25, 0x0b, 0x2e, 0x34, 0x57, + 0x7b, 0xb2, 0x77, 0xb8, 0xc3, 0xdd, 0xc4, 0x4d, + 0xf0, 0x7f, 0xbc, 0x17, 0xbf, 0x8b, 0x8f, 0x25, + 0xc0, 0x0c, 0x60, 0x02, 0x80, 0xff, 0xe3, 0xbd, + 0x40, 0x12, 0xe7, 0x38, 0x24, 0x39, 0x6e, 0x2f, + 0xfc, 0x17, 0x5a, 0xda, 0xa3, 0x4b, 0xdd, 0xa3, + 0x9b, 0xb5, 0xc1, 0x03, 0x99, 0x1c, 0x93, 0x93, + 0x0e, 0xf8, 0x4f, 0xf2, 0x0b, 0xb2, 0x93, 0x7c, + 0x2e, 0x41, 0xc2, 0x0b, 0x92, 0x1b, 0x80, 0xf7, + 0xa5, 0xe4, 0xf3, 0x0d, 0x68, 0xc1, 0x25, 0xd8, + 0x1c, 0x0d, 0x78, 0x7f, 0x23, 0xf9, 0x6c, 0xd0, + 0xb8, 0x39, 0xf6, 0xcb, 0x3a, 0x01, 0x6c, 0x97, + 0x95, 0x6d, 0x8e, 0x34, 0x9f, 0xe3, 0x94, 0x31, + 0xca, 0xfd, 0xc4, 0xcd, 0xb4, 0x6d, 0xe2, 0xb4, + 0xed, 0xc1, 0xe4, 0x88, 0x2e, 0x8f, 0xa6, 0xde, + 0xd5, 0x9a, 0x5b, 0x48, 0x91, 0x9a, 0x75, 0x73, + 0x94, 0x7c, 0xac, 0x2d, 0x59, 0x4a, 0x84, 0x5f, + 0x89, 0x84, 0xb0, 0xf8, 0xd2, 0xd6, 0xa6, 0xd2, + 0x39, 0x37, 0x7e, 0x31, 0x9e, 0xac, 0x94, 0x30, + 0xf7, 0x80, 0x3f, 0xb1, 0xb4, 0xd0, 0x39, 0x6a, + 0x2a, 0xce, 0x2d, 0xe7, 0x37, 0x7e, 0xad, 0x9e, + 0x32, 0xb1, 0xb5, 0xc5, 0xd9, 0xfe, 0xec, 0x8f, + 0x8f, 0xef, 0x1e, 0xdf, 0xfd, 0xec, 0x8f, 0x97, + 0xdb, 0x21, 0x9f, 0xcd, 0xd8, 0x7a, 0xcd, 0xea, + 0x80, 0xc1, 0x3b, 0x02, 0x11, 0x2b, 0x10, 0xa3, + 0xbb, 0x4f, 0x29, 0x58, 0x2c, 0x82, 0x70, 0x0d, + 0xbb, 0x54, 0x61, 0x05, 0xf7, 0x10, 0xfc, 0xc4, + 0x13, 0x5e, 0x78, 0x51, 0xea, 0x5d, 0x8a, 0x84, + 0x0c, 0x46, 0x3d, 0x76, 0x28, 0xb2, 0x6c, 0x79, + 0xf3, 0xfa, 0x11, 0x00, 0xca, 0x70, 0xaf, 0xf7, + 0xfe, 0xf3, 0xf3, 0xe8, 0xa7, 0x54, 0xeb, 0xa6, + 0x4b, 0x9d, 0xda, 0x9a, 0x6e, 0xb7, 0x9c, 0x33, + 0xf0, 0x44, 0xbb, 0xf2, 0x04, 0xb8, 0xbf, 0x2b, + 0xe5, 0x2e, 0x8c, 0xeb, 0xd5, 0x8e, 0xf3, 0x09, + 0x9f, 0xb2, 0x29, 0x7b, 0x88, 0xeb, 0x4e, 0xf1, + 0xdb, 0x84, 0x8f, 0x95, 0x57, 0x83, 0xfd, 0xf3, + 0xb2, 0x93, 0x04, 0x9e, 0xe0, 0x53, 0xa0, 0xe0, + 0x14, 0x7c, 0xcf, 0x38, 0xf3, 0x95, 0xf1, 0xce, + 0x41, 0xfb, 0x98, 0x2b, 0x66, 0xdc, 0x14, 0x3e, + 0xf9, 0x92, 0x7c, 0x4d, 0xff, 0x8d, 0xc5, 0xd5, + 0xbc, 0x11, 0x5d, 0xb2, 0xaf, 0xf8, 0x57, 0xc9, + 0x32, 0xbb, 0x20, 0x6e, 0xea, 0xef, 0x27, 0x74, + 0x4a, 0xf9, 0x3e, 0xa9, 0xa2, 0x01, 0x97, 0x23, + 0x2c, 0x8e, 0xca, 0x59, 0x6d, 0x4a, 0xf4, 0x95, + 0x08, 0x88, 0x3d, 0x13, 0x96, 0x72, 0x4a, 0x4e, + 0x89, 0xbf, 0x3e, 0x65, 0x53, 0xce, 0x73, 0x9e, + 0x4f, 0xf9, 0x59, 0x64, 0xee, 0xd1, 0x45, 0xfc, + 0xe9, 0xd6, 0x03, 0xea, 0x3e, 0xdd, 0x5e, 0xc4, + 0xe6, 0x8e, 0x79, 0x59, 0x90, 0x32, 0xf6, 0xf8, + 0x7e, 0x79, 0xff, 0xec, 0xfe, 0xf6, 0xee, 0xf9, + 0xfe, 0x49, 0xaa, 0xbd, 0x20, 0xee, 0x90, 0x9f, + 0x60, 0xc4, 0x02, 0xdf, 0xf2, 0x11, 0xee, 0x12, + 0x78, 0x70, 0xfc, 0xcd, 0xcb, 0xb4, 0x7f, 0x76, + 0xb3, 0xd7, 0xaf, 0xe3, 0x28, 0x48, 0x7d, 0x58, + 0xf7, 0xe9, 0xe1, 0x72, 0xab, 0xf6, 0xdf, 0x11, + 0xf3, 0x7a, 0xd9, 0xee, 0xdd, 0xe6, 0x18, 0x16, + 0xe3, 0x3c, 0x2c, 0xce, 0x0a, 0x8d, 0x55, 0x33, + 0xa3, 0xf6, 0x20, 0xe0, 0xb7, 0x20, 0xf5, 0x32, + 0x8d, 0x0d, 0x8b, 0x45, 0xb9, 0x28, 0x37, 0x47, + 0x04, 0xfc, 0x16, 0x16, 0x26, 0x36, 0x48, 0xcf, + 0xf7, 0xf3, 0x17, 0x2b, 0x71, 0xcd, 0x5f, 0x9c, + 0xef, 0xf5, 0x58, 0x53, 0x2f, 0xd1, 0xab, 0x6b, + 0x7d, 0x55, 0xbc, 0x40, 0x5a, 0xf0, 0xcd, 0x48, + 0x19, 0xbe, 0x77, 0x9c, 0x2b, 0x8e, 0xec, 0x8e, + 0x09, 0x6d, 0xc3, 0xae, 0xd2, 0x85, 0xdd, 0xb1, + 0x1b, 0xcc, 0x68, 0xc5, 0x15, 0x3c, 0xc3, 0x25, + 0xe1, 0x8a, 0xb4, 0x16, 0x29, 0x6e, 0x8c, 0x73, + 0x9c, 0x5d, 0xad, 0x4d, 0xdb, 0x04, 0x7c, 0x5a, + 0xea, 0x02, 0xd2, 0xea, 0x66, 0xa6, 0xb5, 0x52, + 0xeb, 0x47, 0x4a, 0x91, 0x56, 0x2f, 0xb3, 0x6d, + 0xd9, 0x15, 0x3d, 0xdf, 0x4f, 0x60, 0xe4, 0x6c, + 0xff, 0x77, 0xeb, 0xd9, 0x1e, 0xf7, 0xe1, 0x7c, + 0x7f, 0x55, 0xd9, 0xa4, 0x4d, 0x29, 0xe3, 0x17, + 0xa4, 0xd3, 0x23, 0x1a, 0x4c, 0x0d, 0x46, 0xbb, + 0x01, 0xab, 0x48, 0x49, 0x47, 0xf4, 0xed, 0x0a, + 0x4b, 0xb2, 0x3b, 0x46, 0xc2, 0xb7, 0x34, 0xed, + 0xa4, 0x57, 0xc9, 0x7b, 0xdb, 0xc6, 0x9a, 0xbf, + 0x4c, 0xf8, 0x49, 0xd2, 0xa6, 0x5a, 0xd3, 0xa6, + 0xfe, 0x37, 0x62, 0xfa, 0x32, 0x10, 0xfa, 0xbd, + 0x29, 0xd1, 0xaf, 0x81, 0x85, 0xb2, 0xf0, 0x1b, + 0xb4, 0x57, 0x80, 0x80, 0x51, 0xf8, 0x50, 0xbe, + 0xb1, 0xc6, 0x86, 0xa5, 0x0c, 0x48, 0x70, 0x64, + 0x58, 0xbd, 0xdf, 0x18, 0x9b, 0x57, 0x49, 0x0d, + 0x3c, 0xb4, 0xc9, 0x9b, 0x58, 0x35, 0xaf, 0x1a, + 0x6f, 0xcf, 0xac, 0xe6, 0x55, 0xe3, 0xed, 0x99, + 0x39, 0xd3, 0x80, 0x1f, 0x14, 0x74, 0x9f, 0xb4, + 0x72, 0x11, 0xf3, 0xa9, 0x66, 0xa4, 0x6b, 0xcb, + 0x8e, 0x11, 0x75, 0x0d, 0xc8, 0x86, 0xc9, 0xcd, + 0x9a, 0x32, 0xd6, 0x4c, 0xe3, 0x76, 0x25, 0xa1, + 0xf0, 0xaf, 0x23, 0x10, 0x43, 0xaa, 0x36, 0x65, + 0x42, 0x37, 0x25, 0x52, 0x6c, 0x05, 0xed, 0x42, + 0x2b, 0x17, 0x65, 0xf7, 0xcc, 0x8b, 0x42, 0xb1, + 0xc9, 0xfa, 0x66, 0xc6, 0xde, 0x8d, 0x28, 0xd7, + 0xe4, 0x73, 0x3b, 0x96, 0xd0, 0xba, 0x10, 0x16, + 0x71, 0x94, 0xf4, 0x26, 0x50, 0x4e, 0xee, 0x62, + 0x62, 0xc9, 0xbd, 0xc3, 0x28, 0xf5, 0x21, 0x5b, + 0x0a, 0x92, 0x20, 0x3f, 0xc9, 0x3c, 0x4b, 0x57, + 0x22, 0xe0, 0x56, 0x00, 0x34, 0x8f, 0x12, 0xb7, + 0x25, 0x75, 0x9b, 0xb2, 0xf9, 0x69, 0x86, 0x94, + 0x97, 0xf0, 0xaf, 0xc6, 0x25, 0xe0, 0x13, 0x6a, + 0x8e, 0x38, 0xcc, 0xe5, 0x98, 0xa1, 0x60, 0x44, + 0x3a, 0x25, 0x14, 0x76, 0xca, 0xe5, 0x4e, 0xcd, + 0x67, 0xf3, 0x37, 0xfd, 0x5c, 0x3d, 0xb6, 0xf2, + 0xe9, 0xd2, 0x97, 0x5c, 0x93, 0x6f, 0x44, 0xe4, + 0xe2, 0x37, 0x32, 0x3f, 0x06, 0x3a, 0x7b, 0x45, + 0x67, 0xac, 0x2b, 0x03, 0x1c, 0xc5, 0x93, 0x84, + 0x65, 0x2c, 0x9b, 0x24, 0xa3, 0x46, 0xac, 0x6c, + 0x7b, 0x5c, 0xcb, 0x1b, 0xe7, 0x72, 0x46, 0x91, + 0x15, 0x0b, 0xcb, 0x0d, 0x20, 0xe2, 0x65, 0xe4, + 0xd6, 0x28, 0x45, 0x1a, 0xa7, 0xe4, 0x22, 0xbb, + 0xc8, 0x82, 0x3c, 0xc8, 0x47, 0xe9, 0x28, 0x45, + 0x1f, 0xe3, 0x27, 0x17, 0x19, 0xe6, 0xc8, 0x98, + 0x37, 0x78, 0x96, 0x54, 0x86, 0x05, 0xce, 0x55, + 0x79, 0x2b, 0xbe, 0x4c, 0x7e, 0x9d, 0xfd, 0x3a, + 0xfb, 0x31, 0xf9, 0x21, 0xf1, 0xd8, 0xe8, 0xdb, + 0xb3, 0xbf, 0x7c, 0xf2, 0x97, 0xd9, 0xb7, 0x57, + 0x92, 0x0e, 0xcc, 0x39, 0x8a, 0x71, 0xb1, 0xc8, + 0x2e, 0xed, 0x6f, 0x75, 0x0a, 0xa4, 0xe0, 0x24, + 0xc7, 0x3d, 0x84, 0xb7, 0x67, 0x27, 0x10, 0xf1, + 0x12, 0x95, 0x95, 0xe7, 0x4e, 0x0a, 0x11, 0x6a, + 0xec, 0x30, 0x84, 0x31, 0x0f, 0x49, 0x58, 0x63, + 0x71, 0x75, 0x13, 0xbe, 0x28, 0x27, 0x5c, 0xd9, + 0x13, 0x3b, 0x77, 0x57, 0x38, 0xa7, 0x71, 0x27, + 0x74, 0x3b, 0x1f, 0x27, 0x08, 0x5e, 0xe2, 0x58, + 0xf0, 0x31, 0xf9, 0xa0, 0x8e, 0x55, 0x14, 0x28, + 0x1f, 0xa8, 0xa4, 0x79, 0xdc, 0x90, 0x67, 0x8d, + 0x55, 0x9a, 0x2f, 0x39, 0x2f, 0x75, 0x41, 0x6b, + 0x8a, 0xc6, 0xc2, 0x88, 0xa4, 0x65, 0x37, 0x12, + 0xd8, 0x45, 0x88, 0xd8, 0x61, 0x76, 0xc8, 0xbc, + 0x16, 0xa5, 0xd8, 0xbf, 0x42, 0x6b, 0x8a, 0xcc, + 0x10, 0x1e, 0x64, 0x41, 0x22, 0x35, 0xd0, 0x1c, + 0xeb, 0xe5, 0xb0, 0x04, 0xc0, 0x9e, 0xe7, 0x73, + 0x1e, 0xa1, 0x05, 0x61, 0x3e, 0xf7, 0x72, 0x6d, + 0x25, 0xc1, 0xca, 0x88, 0xdc, 0xa9, 0x2b, 0x3e, + 0xae, 0xa8, 0x02, 0x39, 0x56, 0xf4, 0x99, 0x6f, + 0xd6, 0x75, 0x15, 0x9a, 0x8e, 0x0f, 0xa4, 0x81, + 0x75, 0x5a, 0x52, 0xa3, 0xe5, 0x06, 0xec, 0x46, + 0x46, 0x53, 0x0a, 0xb4, 0xd0, 0x34, 0xcc, 0x69, + 0x4c, 0xf1, 0x8a, 0x17, 0x35, 0x55, 0xde, 0x1f, + 0x82, 0x18, 0x8c, 0xa7, 0xb6, 0xc0, 0x2c, 0x30, + 0x68, 0xde, 0x10, 0x96, 0x33, 0x61, 0x1b, 0xab, + 0x8b, 0x33, 0xc3, 0x02, 0x6f, 0x72, 0x86, 0x54, + 0x41, 0x8e, 0xba, 0xc0, 0x6f, 0x68, 0x06, 0xf9, + 0xa6, 0x68, 0x61, 0xb3, 0x05, 0xe8, 0x91, 0x34, + 0x92, 0x6b, 0x6d, 0xf7, 0x0f, 0xa0, 0x7f, 0x5c, + 0xcc, 0x79, 0xe4, 0x1c, 0x8d, 0x34, 0xc4, 0x13, + 0x07, 0x15, 0x60, 0xae, 0xb7, 0xca, 0x64, 0x2f, + 0x0a, 0xf5, 0x6d, 0x5d, 0xc7, 0xc1, 0xe3, 0x8e, + 0xec, 0x67, 0xac, 0x15, 0xb4, 0xb0, 0xb3, 0x4c, + 0x8a, 0x3c, 0xad, 0x91, 0xeb, 0x02, 0xa8, 0x02, + 0x3d, 0xfc, 0x04, 0xf4, 0x68, 0x0a, 0xb4, 0x21, + 0x8d, 0xfa, 0xcd, 0x6b, 0xc3, 0xa0, 0xcb, 0xf5, + 0xb0, 0x64, 0x53, 0x73, 0x23, 0x8d, 0xe2, 0x38, + 0x7e, 0xb1, 0x7a, 0xb1, 0xda, 0x2f, 0xf7, 0x3f, + 0x66, 0xd7, 0x00, 0x9c, 0x6d, 0xeb, 0x25, 0xc5, + 0xdb, 0x88, 0x47, 0x7c, 0xce, 0x67, 0x18, 0x8b, + 0x72, 0x76, 0x60, 0x29, 0x4b, 0xd7, 0xdc, 0x8e, + 0xbd, 0xb4, 0x38, 0xdb, 0xb1, 0x57, 0xc5, 0x67, + 0xe0, 0xee, 0xa2, 0x9e, 0x7b, 0x4d, 0xba, 0xc7, + 0x3e, 0xa1, 0x11, 0xc6, 0x5e, 0x85, 0x0a, 0xd5, + 0xad, 0xb1, 0xb8, 0x1e, 0x6b, 0x45, 0xe3, 0x03, + 0x4d, 0x31, 0x5d, 0x1a, 0x81, 0x9e, 0x13, 0x11, + 0xfd, 0x45, 0xfc, 0x07, 0x7a, 0x7f, 0x8b, 0x6b, + 0xfe, 0x15, 0xeb, 0xe3, 0xa4, 0xde, 0x05, 0x05, + 0xa6, 0xd4, 0xa1, 0x15, 0xec, 0xf7, 0x92, 0xff, + 0x7e, 0x89, 0xb6, 0xf5, 0x8a, 0xcd, 0xf6, 0xb3, + 0xfd, 0x7c, 0x3f, 0x07, 0xbf, 0x81, 0x4f, 0x9a, + 0x6f, 0x06, 0xc5, 0xaf, 0xec, 0x9d, 0x8c, 0x1d, + 0xb5, 0xc4, 0xe2, 0x1e, 0xd1, 0xec, 0xa4, 0x87, + 0xaa, 0x05, 0xf8, 0x4d, 0x5e, 0x55, 0x17, 0x85, + 0xa7, 0x03, 0x5e, 0x36, 0xfd, 0x0a, 0xea, 0x0b, + 0x4d, 0xbc, 0x3c, 0x40, 0x6e, 0xe4, 0x21, 0xd7, + 0x59, 0x0c, 0xea, 0xe7, 0x24, 0x3f, 0x05, 0x6f, + 0x25, 0xd9, 0x19, 0x24, 0x3f, 0xca, 0xda, 0x63, + 0x85, 0xdc, 0x92, 0x86, 0x65, 0x48, 0x51, 0x9a, + 0xc6, 0x09, 0xcd, 0x05, 0x8f, 0x01, 0x68, 0x3e, + 0x4e, 0xbb, 0xc6, 0x82, 0xcc, 0xc2, 0xd8, 0xc0, + 0xb4, 0x57, 0x19, 0x58, 0x14, 0xa0, 0x75, 0x91, + 0x6b, 0x5b, 0x7c, 0xd6, 0xac, 0x5d, 0x71, 0x9a, + 0x4b, 0x59, 0xa5, 0x24, 0xcc, 0x40, 0x7a, 0x78, + 0x98, 0x1b, 0x34, 0x67, 0xa7, 0x49, 0x50, 0x8b, + 0x8f, 0xce, 0x09, 0x65, 0xc6, 0x3a, 0xea, 0xe1, + 0x95, 0xaa, 0xbf, 0xda, 0x96, 0x72, 0x5a, 0xcd, + 0x8d, 0xbe, 0x97, 0x6e, 0x71, 0xce, 0x09, 0x79, + 0x40, 0x02, 0xe4, 0x99, 0xf1, 0xe6, 0xd1, 0xb0, + 0x96, 0x89, 0xeb, 0xb7, 0xf9, 0x53, 0x7e, 0x5d, + 0xc3, 0x7f, 0x34, 0x32, 0xd5, 0x0b, 0x83, 0xcf, + 0xe6, 0x9b, 0x9b, 0x36, 0xad, 0x19, 0xb9, 0xe1, + 0x85, 0x16, 0x96, 0xd6, 0x7b, 0xf4, 0x20, 0xa3, + 0x75, 0x16, 0x2b, 0xc6, 0xda, 0xbb, 0x60, 0xd9, + 0x68, 0x22, 0x79, 0x95, 0xa8, 0x6a, 0xce, 0x65, + 0x83, 0xe6, 0x10, 0x24, 0x42, 0xc4, 0x99, 0x60, + 0xfd, 0xe3, 0x24, 0xcc, 0xcc, 0x52, 0x61, 0x63, + 0x8f, 0x8c, 0x1d, 0x54, 0x59, 0xb9, 0xe1, 0x8f, + 0x52, 0xef, 0xbf, 0x6d, 0xac, 0x94, 0x6a, 0x94, + 0x6b, 0x94, 0xec, 0x66, 0xdd, 0x7c, 0xbd, 0xc6, + 0xdc, 0xf5, 0x74, 0x7f, 0x7a, 0x38, 0x3d, 0xa0, + 0xc6, 0x34, 0xf2, 0xeb, 0x54, 0xea, 0x03, 0xc6, + 0x01, 0x34, 0x89, 0xd2, 0xf6, 0xbc, 0x3e, 0xe6, + 0x54, 0x98, 0x55, 0x89, 0x08, 0x2f, 0x30, 0x57, + 0x94, 0x33, 0x15, 0xf5, 0x71, 0xb4, 0xc5, 0xcd, + 0x02, 0xe8, 0x02, 0x22, 0x01, 0xcc, 0xa2, 0x2f, + 0xd8, 0xe7, 0x6c, 0xc9, 0x2f, 0xb1, 0x12, 0x86, + 0xab, 0x03, 0x7b, 0x01, 0x11, 0x01, 0x19, 0x17, + 0x0f, 0xd9, 0x05, 0xfd, 0x9c, 0xfe, 0x04, 0xf2, + 0xe1, 0x1f, 0x42, 0x84, 0xdd, 0x2e, 0xfb, 0x51, + 0x2e, 0x7d, 0xc0, 0xa9, 0x11, 0x41, 0x49, 0xfd, + 0x90, 0x9b, 0x87, 0x30, 0xb3, 0x28, 0x92, 0x92, + 0x89, 0xf3, 0xe0, 0x2e, 0xab, 0x9a, 0xa1, 0x88, + 0x82, 0xaa, 0x5f, 0xd7, 0x95, 0xff, 0x54, 0xf1, + 0x51, 0xd0, 0xa8, 0xd9, 0x3b, 0x62, 0x5d, 0x32, + 0x9a, 0x1d, 0x93, 0x09, 0x61, 0xa5, 0x1a, 0x2b, + 0x22, 0xe1, 0x6a, 0xbd, 0x98, 0x87, 0x5f, 0x81, + 0x07, 0x69, 0xd0, 0x9b, 0xfc, 0x9c, 0xa3, 0x0e, + 0x45, 0xc9, 0x2a, 0x89, 0xeb, 0x48, 0x15, 0x56, + 0x1c, 0x8f, 0xef, 0x6e, 0x7c, 0xe0, 0x45, 0x11, + 0xb0, 0x39, 0x5d, 0x02, 0x44, 0xb1, 0x5a, 0x2f, + 0x8e, 0xa2, 0x7c, 0xc7, 0xe8, 0x9e, 0xde, 0xb1, + 0x3b, 0x96, 0xf1, 0xec, 0x8a, 0x3c, 0xaf, 0xa2, + 0x20, 0xc0, 0xce, 0xe9, 0xcb, 0x3e, 0xac, 0xd0, + 0xa9, 0x34, 0xc4, 0x5a, 0x52, 0xb9, 0x80, 0x55, + 0x8d, 0xff, 0x00, 0x5e, 0x16, 0x69, 0xcd, 0x2b, + 0xfd, 0x5c, 0xb9, 0x7f, 0x5e, 0xac, 0xe0, 0x99, + 0xe2, 0xe7, 0x20, 0x71, 0x21, 0xfa, 0x05, 0x29, + 0x7d, 0x32, 0xda, 0x30, 0x22, 0x76, 0xa3, 0x06, + 0x9d, 0xd4, 0xd8, 0x6f, 0x9d, 0x95, 0xbb, 0xea, + 0xc4, 0x4a, 0xdd, 0xb9, 0x79, 0x5c, 0xf0, 0xea, + 0x5a, 0x89, 0xa8, 0x46, 0xf2, 0x88, 0xbc, 0x64, + 0x2f, 0x41, 0x3b, 0xd6, 0x3d, 0x58, 0x51, 0xc3, + 0x70, 0x0a, 0xab, 0x70, 0xcf, 0x42, 0x7d, 0x3f, + 0x3f, 0x9b, 0x3b, 0x6f, 0xbb, 0xb1, 0xa2, 0x16, + 0xba, 0x5d, 0x54, 0x15, 0x60, 0xe1, 0x5f, 0x64, + 0xde, 0xa6, 0xd6, 0x3b, 0x77, 0xbe, 0x59, 0xbc, + 0xe9, 0xc6, 0x92, 0x66, 0x95, 0x17, 0xe3, 0x12, + 0x23, 0xb2, 0xa3, 0x2f, 0x04, 0x98, 0x78, 0x8d, + 0x15, 0x15, 0xdf, 0x0d, 0x7c, 0x8e, 0xb2, 0x89, + 0xa8, 0xc4, 0x8c, 0x33, 0x19, 0x4d, 0x89, 0x7d, + 0x78, 0x03, 0xf0, 0xae, 0x17, 0x4b, 0x44, 0x1c, + 0xf0, 0xea, 0x41, 0xfe, 0x5a, 0x16, 0x18, 0x32, + 0xe4, 0xa7, 0xa7, 0xd6, 0x3b, 0x27, 0x2f, 0x61, + 0x7f, 0xfb, 0xb0, 0xb5, 0x1c, 0xfa, 0xe5, 0xa6, + 0xda, 0x2b, 0xb1, 0x17, 0x72, 0x45, 0xf3, 0xf0, + 0x3b, 0xf2, 0xa6, 0x17, 0x2b, 0x6b, 0x4f, 0xa0, + 0x7f, 0x34, 0xa2, 0x05, 0x15, 0x5a, 0x63, 0x4a, + 0xac, 0x3f, 0xf7, 0xe7, 0x9b, 0x37, 0xdd, 0x58, + 0x69, 0x83, 0x36, 0xb9, 0x5f, 0x79, 0xac, 0x4b, + 0xcc, 0x50, 0x19, 0x49, 0xa5, 0xa5, 0xf4, 0xe5, + 0xd8, 0xef, 0xba, 0xb1, 0x56, 0x66, 0x9f, 0xdf, + 0x70, 0x95, 0x3d, 0x9b, 0xf6, 0xdb, 0x03, 0x2d, + 0xd8, 0xd6, 0x05, 0x6f, 0xcb, 0xd2, 0xcd, 0xc9, + 0xdc, 0x7b, 0xdb, 0x8b, 0x5d, 0x8f, 0x8b, 0x57, + 0x99, 0xce, 0xae, 0xaa, 0xda, 0x78, 0x51, 0x63, + 0xf3, 0x57, 0x6f, 0x9c, 0xb9, 0x33, 0xef, 0xc2, + 0x56, 0xd5, 0x3f, 0xe2, 0x6e, 0xbd, 0x6c, 0x44, + 0xe4, 0x8a, 0x29, 0x19, 0x97, 0x35, 0x16, 0xd6, + 0xe4, 0xce, 0xbb, 0xb0, 0x15, 0x1f, 0x31, 0x7e, + 0x15, 0x56, 0x9f, 0x83, 0x77, 0x87, 0x4c, 0xe6, + 0x85, 0xa2, 0x4c, 0xd8, 0xa3, 0xed, 0x79, 0xa6, + 0xe2, 0xd8, 0x6b, 0xe0, 0xe3, 0xea, 0x58, 0xa7, + 0x69, 0x18, 0x81, 0x66, 0x3f, 0x28, 0x2e, 0xd8, + 0x17, 0xf4, 0xa7, 0x60, 0xeb, 0xbe, 0xa6, 0x5f, + 0xff, 0xe6, 0xcb, 0x3d, 0xf9, 0x8d, 0x29, 0x91, + 0xaf, 0x8b, 0x07, 0x2c, 0x00, 0x79, 0x8c, 0x00, + 0x56, 0xe5, 0x73, 0xd8, 0x11, 0xcd, 0xc1, 0x87, + 0x58, 0x81, 0xa4, 0xd7, 0x00, 0x60, 0x35, 0x00, + 0x4f, 0xd2, 0x4a, 0x8f, 0xa4, 0x0e, 0xae, 0xcf, + 0x6b, 0x2d, 0xbb, 0x2a, 0xae, 0xd7, 0x9f, 0x2f, + 0xa7, 0x72, 0xf7, 0x5f, 0xf2, 0x97, 0xfc, 0x19, + 0xdf, 0x3e, 0xc9, 0x93, 0xea, 0xfa, 0xc7, 0xfc, + 0xd9, 0xf6, 0xe5, 0xed, 0x63, 0x39, 0xf6, 0x97, + 0xfc, 0x57, 0x00, 0xaf, 0x7a, 0xb0, 0x04, 0x25, + 0xf7, 0x46, 0xda, 0xde, 0x18, 0x94, 0x17, 0x62, + 0x1e, 0x0e, 0x91, 0x6b, 0xa8, 0x3c, 0xfb, 0x7c, + 0x34, 0xbf, 0x99, 0xf7, 0x60, 0x23, 0x67, 0x39, + 0x5a, 0xde, 0x44, 0x7d, 0x63, 0x7d, 0xb4, 0x3e, + 0x42, 0x56, 0x1d, 0xc2, 0xf6, 0xec, 0x96, 0x3f, + 0x4b, 0x9e, 0xe9, 0x18, 0xd9, 0x5f, 0x79, 0xdf, + 0x82, 0xd5, 0xe9, 0xc3, 0xc6, 0xde, 0x3d, 0xb9, + 0x77, 0xe2, 0x6e, 0xac, 0xb2, 0xde, 0x60, 0xaf, + 0x33, 0x9e, 0x24, 0x71, 0xcb, 0x29, 0xac, 0xc8, + 0x6a, 0xb4, 0xea, 0xc1, 0x8a, 0x26, 0x2f, 0xe4, + 0xdd, 0x9d, 0xd8, 0xf3, 0xa3, 0xe4, 0xb4, 0xb2, + 0x67, 0x16, 0x9f, 0xe7, 0x4f, 0xde, 0x02, 0xa7, + 0x13, 0xfe, 0xea, 0x5f, 0xf2, 0x0e, 0x4e, 0x46, + 0x4f, 0xfe, 0x04, 0x7c, 0xfe, 0x25, 0xdf, 0x76, + 0x62, 0x81, 0x13, 0x90, 0xe5, 0xa1, 0xad, 0x28, + 0xa4, 0x4d, 0x83, 0xd8, 0xab, 0x60, 0xfb, 0x50, + 0xc7, 0x9b, 0x32, 0xbf, 0x62, 0x2e, 0x0b, 0xcb, + 0x2f, 0xa3, 0x67, 0xcb, 0x5b, 0x1e, 0xcb, 0xe6, + 0xa1, 0x94, 0x49, 0xe0, 0x88, 0x4f, 0x2f, 0x7d, + 0xac, 0x9d, 0xff, 0x2d, 0x64, 0x7d, 0x68, 0xd1, + 0xc6, 0x85, 0x29, 0x75, 0xe7, 0xf9, 0xe5, 0x61, + 0xca, 0x3e, 0x03, 0xa9, 0xfb, 0x67, 0xfa, 0x8c, + 0xfe, 0x2b, 0x8b, 0x53, 0x52, 0xf7, 0x71, 0x16, + 0x19, 0x7c, 0x26, 0x68, 0x1f, 0x7c, 0x0a, 0xc0, + 0x5c, 0xee, 0xe4, 0x76, 0xc5, 0x0f, 0x62, 0xb3, + 0xe2, 0x8c, 0xdd, 0x30, 0x3f, 0x75, 0xab, 0x4e, + 0x53, 0x55, 0x3f, 0xc4, 0x7c, 0xab, 0x7c, 0x40, + 0x2f, 0xe9, 0xaf, 0xa8, 0xbb, 0xad, 0x30, 0x99, + 0xd9, 0xe7, 0xc6, 0x5f, 0xae, 0x8a, 0x27, 0xec, + 0x33, 0xf6, 0x05, 0x7b, 0xcc, 0xaf, 0x72, 0xd5, + 0xa7, 0x77, 0x08, 0x78, 0xaf, 0xe2, 0x7a, 0xbf, + 0xbc, 0x5b, 0xdd, 0xc5, 0x77, 0x5f, 0xde, 0x5d, + 0xef, 0xaf, 0x2a, 0x7f, 0x6a, 0xd5, 0x8a, 0xaa, + 0xde, 0x6f, 0x48, 0xa6, 0x58, 0xd9, 0x36, 0x6b, + 0x48, 0xb1, 0x93, 0xab, 0x48, 0x72, 0x91, 0x5d, + 0xa5, 0x57, 0xec, 0x91, 0xf2, 0xf7, 0x58, 0xad, + 0x93, 0x56, 0xac, 0xf8, 0x84, 0x61, 0x06, 0x8c, + 0x36, 0xa7, 0xf2, 0xbf, 0x09, 0xf6, 0x8c, 0xfd, + 0x2a, 0x76, 0x3a, 0x85, 0x6f, 0xba, 0x32, 0x52, + 0x75, 0x6e, 0xa5, 0xaf, 0xcf, 0x03, 0x51, 0xcc, + 0xf3, 0xf6, 0x58, 0xa7, 0xa8, 0xfd, 0x42, 0x65, + 0xe5, 0x5e, 0x8b, 0x78, 0x12, 0xf3, 0xac, 0x15, + 0xbf, 0x05, 0xf7, 0x2d, 0x4b, 0xae, 0x61, 0xa6, + 0xc6, 0x8a, 0x1a, 0x74, 0x87, 0xad, 0x93, 0x76, + 0xe7, 0x51, 0x71, 0xc2, 0x46, 0xa0, 0xe3, 0xe0, + 0xfd, 0xb9, 0x9f, 0x68, 0xdd, 0xbf, 0x2c, 0x7e, + 0xc7, 0x02, 0x30, 0x2c, 0x11, 0xc0, 0x0a, 0x44, + 0x1a, 0xe2, 0x70, 0x65, 0xf9, 0xab, 0x6c, 0xdd, + 0x83, 0x3d, 0x98, 0x89, 0x88, 0x61, 0x75, 0x7f, + 0x11, 0x2b, 0x6b, 0x16, 0x66, 0x8e, 0x9c, 0x93, + 0x8f, 0xf8, 0x24, 0x1f, 0x8b, 0x37, 0x3d, 0x66, + 0xc9, 0xba, 0xee, 0x93, 0xe7, 0x97, 0xc4, 0x8f, + 0x42, 0x1e, 0xe5, 0x57, 0x98, 0x9d, 0x67, 0x38, + 0x97, 0x94, 0x0d, 0x5d, 0x9d, 0x42, 0xba, 0x42, + 0xd8, 0x65, 0x90, 0x94, 0x3b, 0xbe, 0xe7, 0xad, + 0x4a, 0x14, 0xd6, 0xfa, 0x5c, 0xe0, 0x83, 0x8c, + 0x10, 0xd4, 0xb5, 0x2b, 0x09, 0xc8, 0x8a, 0xfc, + 0xdd, 0xad, 0xba, 0xad, 0x71, 0xf3, 0x04, 0x80, + 0xe0, 0xee, 0xa7, 0xcd, 0x4a, 0x03, 0x57, 0x98, + 0x87, 0xe4, 0x8b, 0x9e, 0x3e, 0x9d, 0xd8, 0xd9, + 0x42, 0x9f, 0xe3, 0xf0, 0xac, 0x1a, 0xe2, 0xa6, + 0xac, 0x6a, 0xa9, 0xe2, 0x4d, 0x4e, 0x36, 0x6a, + 0xd5, 0xce, 0xf4, 0xb9, 0x01, 0xec, 0x30, 0x19, + 0x6b, 0x29, 0xbb, 0xeb, 0x8f, 0x66, 0x3f, 0x4e, + 0xc4, 0x76, 0x82, 0x5b, 0x91, 0x96, 0x66, 0x11, + 0x41, 0xc2, 0xf3, 0xb9, 0xae, 0xcd, 0x80, 0x0e, + 0xe6, 0x3a, 0x1e, 0x71, 0x81, 0x2a, 0xd4, 0x50, + 0x97, 0xf9, 0x00, 0x90, 0x10, 0x72, 0xae, 0xb0, + 0xe8, 0x4f, 0xe6, 0xbd, 0xd8, 0xca, 0x17, 0x09, + 0x2e, 0xbd, 0xf2, 0xb2, 0x1b, 0xd5, 0xd5, 0x4e, + 0xea, 0xb1, 0xdf, 0xf4, 0x61, 0xc5, 0x2a, 0x4a, + 0x7c, 0x27, 0xad, 0xcf, 0xbb, 0x8c, 0xea, 0xfe, + 0x19, 0x8e, 0xf5, 0xde, 0xa2, 0xbc, 0xa3, 0xaf, + 0x22, 0x55, 0xcc, 0x1e, 0x13, 0x33, 0x0a, 0x0a, + 0x8f, 0x54, 0x54, 0x99, 0x34, 0x5e, 0x5a, 0x33, + 0x8a, 0xd0, 0x87, 0x6d, 0x57, 0x9e, 0x65, 0x55, + 0xbe, 0xf6, 0xdc, 0x64, 0xbe, 0xab, 0xeb, 0xc3, + 0x08, 0xe2, 0xae, 0xae, 0x3d, 0x4b, 0xd8, 0x1d, + 0xd5, 0x37, 0x23, 0x42, 0xc2, 0x99, 0x31, 0x0e, + 0xea, 0xc3, 0x02, 0x05, 0x60, 0x23, 0x40, 0x47, + 0x7c, 0x75, 0xc4, 0x00, 0x24, 0xa3, 0xce, 0xae, + 0xe6, 0x01, 0xac, 0x18, 0xbb, 0x6a, 0x3e, 0xed, + 0xc0, 0xca, 0x3e, 0x40, 0x95, 0x07, 0x88, 0x6c, + 0x18, 0x6c, 0x65, 0x6a, 0x50, 0xbd, 0xf9, 0xae, + 0x0f, 0x5b, 0xe5, 0x62, 0xaf, 0x20, 0x76, 0x67, + 0x98, 0x03, 0x55, 0xf1, 0x55, 0xa9, 0x23, 0x28, + 0x80, 0x26, 0xf6, 0x68, 0x96, 0xf2, 0x29, 0xee, + 0x3b, 0x27, 0xad, 0x3d, 0xc2, 0x79, 0x21, 0x11, + 0x10, 0x76, 0x49, 0x45, 0xe2, 0x1a, 0x2b, 0xf4, + 0xbe, 0x44, 0x79, 0x79, 0xca, 0xc9, 0xa1, 0x81, + 0x9d, 0x63, 0x84, 0xd3, 0x8b, 0x25, 0xa8, 0x17, + 0xd2, 0x6f, 0xec, 0x4a, 0xa7, 0x3e, 0x1f, 0xa0, + 0xc6, 0x92, 0x6f, 0x9c, 0x37, 0xbd, 0x58, 0xd3, + 0x6a, 0xf1, 0x19, 0x58, 0x4a, 0x6a, 0xd9, 0x49, + 0x90, 0x2c, 0x3a, 0xa3, 0x53, 0x3a, 0xa1, 0x94, + 0x91, 0xb6, 0x0e, 0x82, 0xe4, 0xdc, 0xce, 0x9f, + 0xf1, 0x25, 0x56, 0x48, 0x12, 0x15, 0xff, 0x46, + 0x46, 0xa7, 0xa6, 0xee, 0x84, 0x57, 0xd1, 0xb1, + 0x96, 0x3a, 0x88, 0x64, 0xdf, 0xf6, 0x62, 0x8d, + 0x1a, 0xf2, 0x18, 0x32, 0x47, 0xe0, 0x58, 0x7d, + 0x6f, 0xc7, 0xed, 0x67, 0x90, 0x7d, 0xd3, 0x44, + 0x47, 0xf0, 0x66, 0x9f, 0x5d, 0xbd, 0xb5, 0xbd, + 0x5e, 0xb3, 0x8f, 0xb1, 0x3b, 0xb6, 0x2d, 0x20, + 0xc1, 0x6a, 0x0a, 0xf2, 0x38, 0x71, 0xb9, 0xcf, + 0xa2, 0xfa, 0x24, 0x9b, 0x2b, 0x2c, 0x95, 0xda, + 0x59, 0x2f, 0x79, 0x18, 0x7f, 0x41, 0x1b, 0xb6, + 0x8e, 0xeb, 0x33, 0x2b, 0xb6, 0x0e, 0x56, 0x1a, + 0x21, 0xaa, 0x1e, 0xb4, 0x2a, 0x65, 0x25, 0x35, + 0xc9, 0x52, 0x93, 0x7a, 0xb0, 0x55, 0xab, 0xbc, + 0x77, 0xac, 0x52, 0xcc, 0x42, 0x57, 0xf3, 0x42, + 0xc3, 0x0e, 0xb2, 0x15, 0xc2, 0xb4, 0x78, 0xd4, + 0x85, 0x8d, 0xd9, 0x2d, 0x40, 0xdc, 0x83, 0xd5, + 0xba, 0xdf, 0x23, 0xcf, 0xbb, 0xb7, 0x7a, 0xc5, + 0x8d, 0xf5, 0x02, 0xd5, 0xbb, 0x3f, 0x91, 0x75, + 0x0f, 0xd6, 0x8e, 0xdc, 0x64, 0x2b, 0xae, 0x2f, + 0x72, 0x6b, 0x62, 0xed, 0xc8, 0xad, 0x81, 0x35, + 0xcf, 0x76, 0x4c, 0xf8, 0x84, 0x4d, 0x20, 0x92, + 0x9e, 0xd2, 0xab, 0xaa, 0x3e, 0xe2, 0x08, 0x4d, + 0xea, 0xc5, 0x42, 0x24, 0xeb, 0x2c, 0xfb, 0xb0, + 0x95, 0xac, 0x56, 0xd6, 0x28, 0xc8, 0xaa, 0xb3, + 0x72, 0x3a, 0xca, 0x15, 0xdd, 0xc3, 0xaa, 0xf6, + 0x99, 0x30, 0x75, 0xee, 0x82, 0xdb, 0x1e, 0xd8, + 0x45, 0xfd, 0x67, 0x34, 0x7e, 0x70, 0x7f, 0xa3, + 0x77, 0x50, 0xc8, 0x4d, 0xc0, 0x3d, 0xf4, 0x32, + 0x07, 0xb2, 0x6f, 0xf2, 0x6a, 0x51, 0x54, 0x5e, + 0xe7, 0x58, 0xe7, 0x38, 0x65, 0xbb, 0x8f, 0x0b, + 0x9e, 0x65, 0xff, 0x88, 0x3b, 0x49, 0x15, 0x99, + 0xd5, 0x31, 0xa3, 0x0b, 0xd6, 0xea, 0xef, 0x31, + 0xd6, 0x4b, 0xea, 0xa8, 0xad, 0x95, 0xb5, 0x85, + 0xb5, 0xb5, 0x5c, 0x34, 0xde, 0xac, 0xed, 0x28, + 0xc9, 0x76, 0x1d, 0xa7, 0x69, 0xe4, 0xc8, 0x6a, + 0x7c, 0x12, 0x1a, 0xb5, 0xde, 0x66, 0xf7, 0x70, + 0x63, 0x78, 0x06, 0xa9, 0x81, 0xb5, 0x6c, 0x59, + 0xd6, 0xdb, 0xee, 0xc3, 0x68, 0x4b, 0xa9, 0xfd, + 0x76, 0x75, 0xee, 0xed, 0x0e, 0x60, 0x4f, 0xf7, + 0xf4, 0xc0, 0x72, 0x4e, 0x3a, 0xf2, 0x7d, 0x91, + 0xed, 0xd3, 0x64, 0x92, 0x9d, 0x59, 0xf2, 0x6c, + 0x96, 0x98, 0xf1, 0xae, 0x63, 0x4d, 0xa5, 0x1c, + 0x6b, 0xc4, 0x93, 0xd6, 0x48, 0x1d, 0xd5, 0x04, + 0xd6, 0xd9, 0x9e, 0x45, 0x7d, 0x6a, 0x43, 0x59, + 0x1f, 0x63, 0xde, 0x02, 0x23, 0x28, 0x37, 0x93, + 0xfb, 0x67, 0x73, 0x72, 0x51, 0xf9, 0xd7, 0xb0, + 0xe8, 0xd0, 0x32, 0xa1, 0x4a, 0x23, 0x5a, 0x25, + 0xa8, 0x0d, 0x5e, 0x55, 0xf2, 0x3c, 0x18, 0x23, + 0x89, 0xc8, 0xbf, 0x10, 0xbd, 0x3f, 0x11, 0x11, + 0xb3, 0xbc, 0x55, 0x71, 0xc3, 0x4e, 0x53, 0x86, + 0x75, 0x26, 0xcd, 0xe7, 0xef, 0xd3, 0xe5, 0x59, + 0x14, 0x68, 0xa7, 0xec, 0xda, 0xcb, 0xe5, 0x60, + 0x2f, 0xdc, 0x38, 0x29, 0x31, 0xd8, 0xe5, 0x19, + 0xae, 0xc6, 0x0f, 0xf7, 0x71, 0x54, 0x5f, 0x63, + 0x79, 0xfb, 0xe4, 0x1e, 0xd2, 0xaa, 0x46, 0x4f, + 0x64, 0xb8, 0xcb, 0x33, 0xdc, 0xc7, 0xe9, 0x5a, + 0x91, 0xe6, 0xd5, 0xf7, 0xe9, 0xe3, 0x88, 0xf5, + 0xc2, 0x9d, 0x5c, 0x51, 0x15, 0x60, 0xd4, 0xfc, + 0xf8, 0x40, 0x97, 0xa7, 0x6c, 0xf6, 0x53, 0x4c, + 0x9a, 0x87, 0x7b, 0x40, 0xb8, 0x0b, 0x10, 0xa9, + 0xe8, 0xd3, 0x86, 0xa0, 0x0d, 0x46, 0xaf, 0x6d, + 0xb8, 0x8f, 0x53, 0xfc, 0x13, 0xeb, 0xc7, 0x7a, + 0x22, 0x8b, 0xb9, 0x88, 0x45, 0xbf, 0x86, 0x5e, + 0xc4, 0x78, 0xb6, 0x4a, 0xd3, 0x3c, 0xdc, 0xa9, + 0x19, 0x93, 0xaf, 0xd8, 0x35, 0x9f, 0x25, 0x08, + 0xa7, 0xd9, 0xb8, 0xf9, 0x66, 0x12, 0xe4, 0xea, + 0xfc, 0x85, 0x7c, 0xcb, 0x72, 0x7f, 0x63, 0x5b, + 0x33, 0xee, 0x71, 0xff, 0x20, 0x2b, 0x3a, 0x2c, + 0xb7, 0x7a, 0xed, 0x85, 0x23, 0x23, 0x76, 0x7e, + 0x92, 0x4b, 0x2d, 0xc1, 0x2e, 0x80, 0x7d, 0xd0, + 0x02, 0x7b, 0xf4, 0x8e, 0x55, 0x89, 0xaa, 0xcf, + 0xb9, 0xa5, 0x90, 0x4b, 0xcb, 0x1e, 0x72, 0x22, + 0xfb, 0x1b, 0xcd, 0x2c, 0x45, 0x9c, 0xb4, 0xc2, + 0x4f, 0x51, 0xf9, 0xd5, 0x55, 0x33, 0xb8, 0xcf, + 0xc7, 0x75, 0x4e, 0xa5, 0x7c, 0xc7, 0xc8, 0xea, + 0x04, 0x04, 0xf9, 0x79, 0xa5, 0xbb, 0xe2, 0xfd, + 0xda, 0xae, 0x08, 0x9a, 0x31, 0xd6, 0x0c, 0x0b, + 0x11, 0x10, 0x24, 0xcd, 0xca, 0x08, 0x31, 0xb2, + 0x3e, 0x80, 0xac, 0xd9, 0x23, 0xf0, 0x63, 0x3f, + 0x3f, 0xc1, 0x18, 0x0a, 0x60, 0x6a, 0xd8, 0x05, + 0x4f, 0xe6, 0x1d, 0x39, 0x76, 0xcf, 0x5d, 0x79, + 0x72, 0x3b, 0xa1, 0x71, 0x33, 0x5a, 0x14, 0xf1, + 0xaf, 0x58, 0x71, 0x70, 0xff, 0x20, 0xb6, 0x79, + 0x45, 0x2b, 0xac, 0xec, 0xfc, 0xd3, 0x7a, 0x87, + 0xfc, 0x54, 0xe6, 0x96, 0xbe, 0xe4, 0x56, 0xbd, + 0x62, 0xab, 0x8e, 0x98, 0x7b, 0xe8, 0x21, 0x65, + 0xaf, 0x2f, 0xb7, 0x69, 0x0e, 0xe8, 0x79, 0x79, + 0x2d, 0xde, 0x2b, 0xed, 0x6c, 0xdc, 0xcc, 0x60, + 0x6b, 0x9e, 0x04, 0x1d, 0x3b, 0xe8, 0x94, 0xa3, + 0xac, 0xda, 0xfd, 0x6c, 0xda, 0xea, 0x88, 0xc1, + 0xfe, 0xe6, 0x53, 0xc5, 0xaf, 0x36, 0xaf, 0x92, + 0xaa, 0x9a, 0xd0, 0xe4, 0x73, 0x26, 0x4f, 0x05, + 0x3e, 0x4c, 0x50, 0x7f, 0x67, 0x5c, 0x4a, 0xa6, + 0x8a, 0x54, 0x47, 0x10, 0x43, 0x38, 0xe8, 0x79, + 0x31, 0x5e, 0x14, 0xe7, 0x5f, 0x27, 0x58, 0x73, + 0x55, 0x19, 0xa1, 0x18, 0x1b, 0x1f, 0x9e, 0x33, + 0x8c, 0x35, 0x70, 0xec, 0x39, 0xf8, 0x2a, 0xdf, + 0x3a, 0x39, 0x82, 0x1a, 0x30, 0x45, 0xab, 0xc1, + 0xaf, 0xf9, 0x4f, 0xc4, 0xd9, 0x8d, 0x8f, 0xb2, + 0xcf, 0xb5, 0x05, 0xee, 0xb4, 0xcf, 0xdf, 0xc3, + 0x7a, 0x87, 0xa5, 0xac, 0xac, 0x28, 0x40, 0x9e, + 0x6c, 0x8e, 0xf8, 0xdf, 0x87, 0xac, 0x37, 0x4a, + 0xd9, 0x26, 0x6f, 0xf4, 0xe8, 0x0d, 0xab, 0xf2, + 0xf4, 0xf7, 0x9f, 0xad, 0x20, 0xea, 0xe2, 0x78, + 0xde, 0x52, 0x9c, 0xb1, 0x84, 0x75, 0x3f, 0xfd, + 0xbd, 0x6d, 0xbd, 0x45, 0x75, 0x38, 0xc7, 0x53, + 0xb0, 0xb6, 0xad, 0x5b, 0xc7, 0x68, 0x37, 0xd9, + 0x41, 0xec, 0x00, 0x58, 0x53, 0xb4, 0xa9, 0x6c, + 0xab, 0x4e, 0xce, 0x7b, 0x12, 0x7f, 0x90, 0x78, + 0x1b, 0x0b, 0x63, 0x53, 0xb6, 0xc7, 0xd3, 0x9c, + 0xdd, 0xb6, 0xdd, 0x3b, 0xca, 0x5c, 0x5e, 0xc1, + 0x12, 0x20, 0xd2, 0xd6, 0x3b, 0x66, 0x3c, 0x4a, + 0xa3, 0xc3, 0xfc, 0xf0, 0x37, 0xfc, 0x71, 0xcb, + 0xb6, 0x7f, 0x9c, 0x3f, 0xfa, 0xff, 0xb7, 0xde, + 0x1f, 0x38, 0x65, 0x31, 0x6c, 0xbd, 0xd7, 0x4c, + 0x76, 0x49, 0xe4, 0x49, 0xf2, 0x3a, 0x83, 0x0a, + 0xbe, 0xb7, 0xf5, 0x6e, 0xf7, 0xf7, 0x61, 0xf7, + 0x8f, 0x2a, 0x6d, 0x33, 0xb0, 0x29, 0x3d, 0x8c, + 0x25, 0xe1, 0xf5, 0x7a, 0xff, 0xe1, 0x7f, 0x50, + 0x1a, 0x6c, 0xd0, 0x31, 0x43, 0x0f, 0xb6, 0x7a, + 0xf3, 0x02, 0xf6, 0xf6, 0x5a, 0xd4, 0xc7, 0xdc, + 0xd8, 0xa5, 0x02, 0x8c, 0xbf, 0x02, 0x51, 0xf3, + 0x3e, 0x92, 0xde, 0x17, 0xe0, 0x9c, 0xdf, 0x6c, + 0x75, 0xd7, 0xaa, 0xca, 0x42, 0x85, 0x8d, 0x17, + 0x90, 0x86, 0x59, 0x53, 0x26, 0x47, 0x74, 0xb2, + 0x26, 0xf7, 0x2d, 0x99, 0x2c, 0x90, 0x8e, 0x19, + 0xe4, 0xcf, 0x8f, 0x28, 0x7e, 0xe2, 0xdd, 0xba, + 0x30, 0x4e, 0x22, 0x8a, 0x79, 0x61, 0x67, 0x0a, + 0xa9, 0x45, 0xe6, 0xfe, 0x0e, 0x9e, 0x2b, 0x60, + 0xa4, 0xc0, 0x73, 0x46, 0x27, 0xd9, 0x99, 0xd4, + 0x62, 0x80, 0x51, 0xea, 0x64, 0xcd, 0xb8, 0x1c, + 0xb5, 0x73, 0x8c, 0x9f, 0x40, 0x75, 0x58, 0x34, + 0xb2, 0xdc, 0x5c, 0xe4, 0x92, 0x3d, 0x3d, 0xeb, + 0x71, 0x69, 0xea, 0xf7, 0x46, 0xd4, 0xc0, 0x3f, + 0x7c, 0xea, 0x40, 0xfe, 0x25, 0x4a, 0x1f, 0x56, + 0xe9, 0xb8, 0x3c, 0x2b, 0x8a, 0xfa, 0x3d, 0xe1, + 0x5a, 0xbb, 0xeb, 0x37, 0xa7, 0x0c, 0x25, 0x35, + 0xed, 0xea, 0xd1, 0xc3, 0x4e, 0xa5, 0x5a, 0x83, + 0x4d, 0x5e, 0x09, 0x0d, 0xef, 0xc5, 0x8a, 0x8e, + 0x36, 0xc8, 0xd4, 0x44, 0x54, 0x3e, 0xed, 0x53, + 0x07, 0x6a, 0xbd, 0xf2, 0xfc, 0xb5, 0xcb, 0x97, + 0x00, 0xd1, 0xb6, 0xd9, 0x49, 0x8f, 0xe2, 0xf9, + 0x8b, 0xf9, 0x0b, 0x3c, 0x5b, 0x32, 0x35, 0xe4, + 0xd9, 0xec, 0xd1, 0x0b, 0x0f, 0xfc, 0x57, 0x9f, + 0x3a, 0x90, 0x67, 0x2f, 0xfb, 0x4e, 0x2c, 0x7c, + 0xe0, 0x4c, 0x42, 0xdf, 0xb9, 0x91, 0xaa, 0x26, + 0x8a, 0xf6, 0xb3, 0x7d, 0x56, 0x6d, 0xb8, 0xbf, + 0x2f, 0xcf, 0xd5, 0x3d, 0x4c, 0xcf, 0xf7, 0x52, + 0xbf, 0xf1, 0xdc, 0xf1, 0xc3, 0xd4, 0x1e, 0xff, + 0xe1, 0x93, 0x03, 0x1a, 0xaa, 0xbc, 0xa6, 0x89, + 0x15, 0x67, 0xca, 0x4c, 0xed, 0xee, 0xd2, 0xe2, + 0xc5, 0xf1, 0x03, 0x58, 0xa3, 0xfe, 0xa1, 0x74, + 0x5c, 0x68, 0x38, 0x73, 0x5b, 0x7f, 0xe3, 0x25, + 0xe7, 0x3d, 0xe3, 0x93, 0x03, 0x48, 0xc1, 0xe1, + 0x51, 0x63, 0xde, 0x33, 0xad, 0xe1, 0xdc, 0xd4, + 0x6e, 0x4b, 0x26, 0xb7, 0xfe, 0xbe, 0x53, 0x26, + 0x73, 0x90, 0x38, 0xf6, 0x88, 0xcd, 0x00, 0xa6, + 0x7c, 0xdd, 0x98, 0x77, 0x5c, 0xc8, 0xba, 0x26, + 0x68, 0x21, 0x7c, 0x5e, 0x16, 0x1f, 0xf3, 0x17, + 0x66, 0x1f, 0xff, 0x97, 0x5c, 0xf0, 0xec, 0xbb, + 0x21, 0xec, 0x7b, 0xd2, 0x3c, 0x3f, 0x69, 0xc2, + 0x7b, 0x32, 0x38, 0xef, 0x30, 0x55, 0xc3, 0xf3, + 0xbe, 0x1b, 0x9e, 0x77, 0x10, 0x3b, 0x38, 0xef, + 0xfb, 0x81, 0x79, 0xdf, 0xbf, 0x6b, 0x8e, 0xf5, + 0x06, 0xa0, 0xf1, 0xe4, 0x3b, 0x80, 0x5e, 0xec, + 0x7b, 0x00, 0x1b, 0x6b, 0xde, 0xbd, 0x6f, 0x71, + 0xd2, 0x9a, 0x09, 0xde, 0x3c, 0x8c, 0x1d, 0x98, + 0x17, 0x56, 0x34, 0x3c, 0xef, 0x00, 0x76, 0x90, + 0x1b, 0xc3, 0x6f, 0x16, 0x74, 0x0d, 0x52, 0x65, + 0xef, 0x82, 0xd7, 0xa0, 0xcb, 0x1e, 0x6b, 0xef, + 0xdf, 0xd0, 0xfe, 0xb6, 0xdf, 0xdc, 0x90, 0xb9, + 0x0f, 0x48, 0xdd, 0xc0, 0xbc, 0x2d, 0xa9, 0x6b, + 0xd0, 0x3c, 0x28, 0x39, 0xf6, 0x9b, 0xff, 0x17, + 0x09, 0x45, 0x3c, 0x28 +}; + +const unsigned char font_889f[] = { + 0x78, 0xda, 0x74, 0xbd, 0x3f, 0x78, 0xdb, 0x46, + 0xb6, 0x36, 0x0e, 0x52, 0xb0, 0x35, 0x94, 0x68, + 0x6b, 0x48, 0x82, 0x22, 0xf5, 0xc7, 0xe2, 0x88, + 0x82, 0x24, 0x88, 0xb2, 0x63, 0xf8, 0xbf, 0xec, + 0x48, 0x24, 0x6c, 0x33, 0x09, 0x64, 0x7b, 0xd7, + 0x88, 0x23, 0x6d, 0xfc, 0xdd, 0x9b, 0xbd, 0xa1, + 0xb3, 0xde, 0xbd, 0xbe, 0xf7, 0xd9, 0xef, 0x5b, + 0xc5, 0xf1, 0xfd, 0x2e, 0x9d, 0xd0, 0x22, 0x0b, + 0x15, 0x28, 0x52, 0xa0, 0x50, 0xe1, 0x62, 0x0b, + 0x16, 0x2a, 0x50, 0xa4, 0x50, 0xb1, 0x85, 0x8b, + 0x2d, 0x54, 0xa4, 0x60, 0x91, 0x42, 0x45, 0x8a, + 0x14, 0x5b, 0xe8, 0xf9, 0x1e, 0x17, 0x2a, 0xb6, + 0x60, 0xe1, 0x62, 0x0a, 0x14, 0xbf, 0x73, 0x66, + 0x00, 0x92, 0x72, 0xee, 0xcf, 0xf3, 0x40, 0x92, + 0x05, 0x91, 0x04, 0x66, 0xce, 0x9c, 0xf3, 0x9e, + 0x73, 0xde, 0x73, 0xa0, 0x28, 0x4d, 0xae, 0xb6, + 0xd4, 0x56, 0xa5, 0xab, 0x7b, 0x38, 0x2a, 0x5d, + 0xfc, 0x9f, 0xda, 0x6a, 0x72, 0x45, 0xfc, 0x1b, + 0x0e, 0xea, 0x6d, 0xbb, 0x7d, 0x9f, 0xdf, 0xf3, + 0x71, 0xdc, 0xe7, 0x76, 0xbb, 0xde, 0x56, 0xda, + 0x63, 0x01, 0x9e, 0x23, 0x4c, 0x0c, 0xbe, 0xcd, + 0xd2, 0x2c, 0x13, 0xa4, 0xd9, 0x2a, 0xd3, 0xf9, + 0x69, 0x36, 0xc2, 0x52, 0x01, 0x13, 0xaf, 0xad, + 0x04, 0x3a, 0x31, 0xc8, 0xa5, 0xe3, 0x25, 0x63, + 0x1e, 0xc7, 0xb1, 0x4e, 0x56, 0xe4, 0x4b, 0xf2, + 0x8a, 0x12, 0x83, 0xd1, 0x84, 0x77, 0x19, 0x3b, + 0xc2, 0x5f, 0x8c, 0x1d, 0x0f, 0x91, 0xa4, 0xf7, + 0xa2, 0xad, 0x5a, 0xc3, 0xe6, 0x4a, 0x12, 0x5e, + 0x6a, 0x56, 0x0e, 0xd3, 0x34, 0xc1, 0x9a, 0xc1, + 0x47, 0x3b, 0x1b, 0x1b, 0x99, 0x4e, 0x91, 0x0c, + 0x1f, 0xdd, 0xb2, 0x62, 0xad, 0xd3, 0x47, 0xf5, + 0x69, 0x45, 0xa1, 0x2d, 0xda, 0xa6, 0xde, 0xcb, + 0x95, 0x5c, 0x27, 0xa5, 0xa4, 0xf8, 0xa4, 0xf5, + 0xc2, 0xca, 0x05, 0xd4, 0xa2, 0xed, 0x0c, 0x5d, + 0x4d, 0xf6, 0xae, 0xca, 0xd9, 0x76, 0xd2, 0x2e, + 0x5c, 0x95, 0x72, 0x99, 0x9f, 0x77, 0x55, 0x77, + 0xc4, 0xa5, 0xbc, 0x86, 0x17, 0xd5, 0x9a, 0xe5, + 0xe3, 0x1e, 0xad, 0xc5, 0xba, 0x67, 0x1f, 0x7c, + 0xc3, 0xa9, 0x95, 0x81, 0x23, 0x17, 0xe4, 0xad, + 0x05, 0xeb, 0x36, 0x5c, 0x8d, 0x6a, 0x35, 0x03, + 0xb8, 0x06, 0x96, 0x32, 0x46, 0x3a, 0xaa, 0x53, + 0xe8, 0x3e, 0x49, 0x16, 0xba, 0x31, 0x25, 0xde, + 0x4a, 0xd6, 0xcc, 0x3c, 0x9e, 0x95, 0xe7, 0xe1, + 0x68, 0x55, 0xb8, 0xee, 0xea, 0xae, 0x51, 0x37, + 0xe1, 0xa3, 0x2a, 0x62, 0xae, 0x54, 0x6b, 0xa2, + 0xfb, 0x7f, 0x59, 0xaa, 0x9b, 0x72, 0x5e, 0xc1, + 0x31, 0xc5, 0xaf, 0xdb, 0x37, 0xf8, 0x23, 0x3b, + 0x13, 0xd0, 0x2a, 0x5d, 0x15, 0xb3, 0xc1, 0xe3, + 0xad, 0x42, 0x37, 0xed, 0x15, 0xba, 0xf1, 0x56, + 0x33, 0x88, 0x29, 0x9a, 0xa7, 0xb9, 0xba, 0x5e, + 0xd5, 0x87, 0x8e, 0xe0, 0x8e, 0x94, 0x0c, 0x4f, + 0x93, 0x26, 0x4f, 0xe3, 0xf7, 0xda, 0xa4, 0xf7, + 0xcd, 0xb1, 0x66, 0xe5, 0x78, 0x1e, 0xae, 0xcc, + 0x54, 0xf0, 0xec, 0x28, 0x1f, 0x21, 0x77, 0x79, + 0x51, 0x99, 0x0b, 0xe2, 0x4e, 0xfc, 0x75, 0xe6, + 0x6d, 0xda, 0x9a, 0xe7, 0xba, 0xf5, 0x30, 0xb0, + 0x70, 0x15, 0x14, 0xc2, 0x89, 0x4b, 0xdc, 0x6d, + 0x77, 0x84, 0x8f, 0xb8, 0x62, 0xf0, 0x74, 0x2b, + 0xad, 0x16, 0xd5, 0xe8, 0x8e, 0x4e, 0x59, 0x63, + 0x47, 0x71, 0x98, 0x4b, 0x98, 0xe7, 0x23, 0xc5, + 0x1a, 0xeb, 0x12, 0xf8, 0x9d, 0x62, 0xc1, 0xe8, + 0xdd, 0x11, 0xde, 0x41, 0xa1, 0x4b, 0xe1, 0x1f, + 0x7c, 0x85, 0xcf, 0x63, 0x8a, 0x25, 0xd7, 0xd7, + 0x9c, 0xb1, 0xe7, 0xdf, 0x6d, 0xb3, 0xe5, 0xa0, + 0xec, 0x94, 0x5e, 0x57, 0x9e, 0xaa, 0xf4, 0xf2, + 0xd3, 0x12, 0x31, 0xcc, 0xdb, 0x07, 0x72, 0x9e, + 0x13, 0xc1, 0xb6, 0x4b, 0xec, 0x69, 0x67, 0x2a, + 0x98, 0x64, 0x06, 0x5b, 0x0a, 0x6c, 0x39, 0xf7, + 0x62, 0xf9, 0x0b, 0x01, 0xac, 0x93, 0x18, 0x39, + 0x2e, 0xbf, 0x33, 0x18, 0x0f, 0x7b, 0x92, 0xd3, + 0x74, 0x88, 0x5b, 0xd9, 0x28, 0x9a, 0x65, 0xaf, + 0xe8, 0x94, 0x1d, 0x32, 0xdd, 0xec, 0x12, 0x8a, + 0x43, 0xcc, 0x46, 0x37, 0x45, 0x5f, 0xb1, 0x14, + 0x4b, 0xf1, 0x94, 0x7b, 0xce, 0x7d, 0xee, 0xa4, + 0x9d, 0x34, 0xd3, 0x9c, 0xac, 0x5b, 0x56, 0x23, + 0xc9, 0xb1, 0x55, 0x5b, 0x3d, 0xcb, 0xd3, 0x6e, + 0xda, 0x2d, 0xb9, 0xd5, 0x7d, 0xb5, 0x45, 0x76, + 0xe8, 0x4e, 0xad, 0x31, 0x38, 0x1b, 0x69, 0x71, + 0x76, 0x15, 0xd6, 0xe9, 0x34, 0xfc, 0x3f, 0x13, + 0xd4, 0x7a, 0x12, 0x5b, 0x86, 0xfb, 0x29, 0xb5, + 0x4a, 0xad, 0x72, 0xcb, 0x68, 0x25, 0x5b, 0x23, + 0xad, 0xb1, 0xd6, 0xd7, 0x2d, 0xa5, 0x2e, 0xcf, + 0x6a, 0xac, 0xe4, 0xd8, 0x76, 0xf9, 0xaf, 0x73, + 0x6f, 0xcb, 0x4a, 0x91, 0x97, 0x5d, 0x03, 0x56, + 0xf9, 0x16, 0xff, 0x0a, 0x5e, 0x0b, 0xb2, 0xa6, + 0x64, 0x95, 0x3f, 0xf2, 0x49, 0x92, 0x01, 0x89, + 0x7e, 0x75, 0x9c, 0x35, 0x26, 0x8c, 0x6b, 0xc7, + 0x57, 0x89, 0x43, 0x28, 0x2c, 0x12, 0xc8, 0x1f, + 0xac, 0xc9, 0x33, 0x6b, 0x2a, 0xa0, 0xed, 0x25, + 0x7d, 0xfb, 0xaf, 0xb4, 0xfb, 0xbf, 0xbc, 0xdf, + 0xb5, 0x37, 0xac, 0x4f, 0xf7, 0xc7, 0x43, 0x99, + 0x9c, 0x61, 0xfa, 0xea, 0x36, 0x2b, 0xc1, 0xa7, + 0x97, 0xe0, 0x7d, 0x55, 0xf7, 0x32, 0x5c, 0xb9, + 0xc1, 0x71, 0x9e, 0x15, 0x4f, 0x71, 0x15, 0x17, + 0xd6, 0xa4, 0x35, 0x03, 0x57, 0x9c, 0xb6, 0x67, + 0x1c, 0x6a, 0x0e, 0xe9, 0xc9, 0x8d, 0xaf, 0xbf, + 0x3f, 0xad, 0xe2, 0xe9, 0x66, 0x20, 0x25, 0x07, + 0x65, 0x27, 0xc1, 0x4e, 0xc1, 0x8a, 0x0d, 0xb5, + 0xce, 0xd4, 0xbe, 0x9e, 0x8e, 0x29, 0xf2, 0x73, + 0x69, 0xbb, 0xd1, 0x4e, 0xd0, 0x51, 0x9e, 0x56, + 0x57, 0x95, 0xcd, 0x6e, 0x86, 0xa6, 0x70, 0xc0, + 0x3a, 0x46, 0x73, 0x75, 0x47, 0xbd, 0xa3, 0xc6, + 0x15, 0x5c, 0x67, 0xd5, 0x1a, 0xb3, 0xc8, 0x41, + 0x8c, 0x9d, 0xa6, 0x2b, 0x04, 0xf7, 0x82, 0xd2, + 0x2a, 0x04, 0x29, 0x58, 0xa9, 0x74, 0x5b, 0xf3, + 0x0a, 0x81, 0xe6, 0xe5, 0x40, 0x0b, 0x2c, 0x76, + 0xad, 0x1d, 0xa5, 0x21, 0xdf, 0x39, 0x17, 0x34, + 0x54, 0xad, 0x2a, 0x76, 0x88, 0xb7, 0xe5, 0xa5, + 0xbc, 0x54, 0x8d, 0x9a, 0xb4, 0x73, 0x03, 0xaf, + 0x0a, 0xe4, 0xe7, 0x3b, 0xbe, 0x4e, 0xed, 0xf6, + 0xc3, 0xa0, 0xae, 0xac, 0x77, 0xd7, 0x29, 0x1e, + 0x2f, 0x69, 0xac, 0xab, 0x0c, 0x7c, 0xee, 0x97, + 0xef, 0xe0, 0x13, 0x5b, 0x43, 0xb5, 0x73, 0x74, + 0xf0, 0x9a, 0x15, 0xa5, 0xcc, 0x8b, 0x6e, 0x99, + 0x97, 0xf9, 0x2c, 0xb9, 0x78, 0x5c, 0x74, 0x61, + 0x2f, 0xd9, 0x8b, 0x1d, 0x3c, 0x50, 0x33, 0x68, + 0xb0, 0x06, 0xcd, 0x20, 0xab, 0x9e, 0xd3, 0x09, + 0xab, 0x04, 0x25, 0xbb, 0x6c, 0x93, 0xee, 0xb6, + 0x07, 0x8a, 0xa4, 0x9a, 0xd8, 0x89, 0xde, 0x79, + 0xa8, 0x75, 0xca, 0x9a, 0x30, 0x9f, 0x24, 0x63, + 0xa1, 0xd4, 0xa2, 0xdc, 0xe2, 0xfb, 0xe2, 0x4f, + 0x69, 0xb8, 0x7b, 0xea, 0xc1, 0x90, 0xff, 0xcc, + 0x71, 0x23, 0x6f, 0x3f, 0xd9, 0xc1, 0x99, 0x24, + 0xb0, 0x8f, 0x88, 0x4d, 0x6d, 0xd8, 0x55, 0xb6, + 0x63, 0xe3, 0xce, 0x87, 0x01, 0x72, 0x99, 0x52, + 0xd2, 0x28, 0x1b, 0x2d, 0x1c, 0x14, 0x66, 0xc4, + 0xa4, 0x8f, 0xe4, 0x1c, 0x82, 0x04, 0x52, 0x0b, + 0xe4, 0x18, 0xcf, 0x5a, 0x38, 0x40, 0xcf, 0xb4, + 0xcc, 0xce, 0xa7, 0x76, 0xc6, 0xc9, 0xa2, 0x74, + 0xd2, 0x94, 0x93, 0x72, 0xc7, 0xf1, 0x9d, 0xad, + 0xd1, 0x2e, 0xf1, 0xe0, 0xac, 0x72, 0xa5, 0xfb, + 0x88, 0x66, 0xba, 0x94, 0xc1, 0x3e, 0x66, 0xf0, + 0x4a, 0x46, 0x99, 0xdc, 0xfb, 0x8c, 0x14, 0xed, + 0xa2, 0x0d, 0x77, 0x0b, 0x5f, 0x2b, 0xbc, 0x68, + 0xeb, 0xb6, 0x61, 0x4b, 0xbd, 0x21, 0xef, 0x28, + 0xa6, 0x54, 0xba, 0x31, 0x5a, 0xe9, 0xce, 0x82, + 0xd6, 0x9c, 0x53, 0xe3, 0x3b, 0xea, 0xe3, 0xbc, + 0x59, 0x13, 0x9a, 0xb0, 0x70, 0x20, 0xef, 0x18, + 0x67, 0x4f, 0xae, 0xe2, 0x98, 0x45, 0x0f, 0x86, + 0xcc, 0x55, 0x5c, 0x41, 0x47, 0xb1, 0xe1, 0x53, + 0xac, 0x42, 0x27, 0x6d, 0x17, 0x3a, 0xda, 0xa1, + 0xb6, 0x5f, 0x30, 0x53, 0x7a, 0xf1, 0xe7, 0xf3, + 0xdf, 0x5b, 0xb8, 0x46, 0xa4, 0x42, 0x66, 0xe1, + 0x60, 0x41, 0x99, 0x30, 0xbb, 0x62, 0xe8, 0xc6, + 0x07, 0xe4, 0x02, 0xb9, 0x46, 0xaa, 0x24, 0x09, + 0xf3, 0x8c, 0x73, 0x94, 0x62, 0x13, 0xc1, 0x0d, + 0x76, 0x8d, 0x5d, 0xe2, 0x9f, 0xca, 0xdd, 0x86, + 0x5f, 0x03, 0x29, 0x39, 0x15, 0x8e, 0xba, 0x41, + 0x6a, 0x68, 0x79, 0xcc, 0x13, 0x7d, 0x47, 0xea, + 0x2b, 0x85, 0x56, 0xe8, 0x2c, 0xad, 0x04, 0x1f, + 0x78, 0xcc, 0xa9, 0x38, 0xbf, 0xa3, 0xf3, 0xf4, + 0x37, 0xa6, 0xea, 0xea, 0x7b, 0xba, 0x7e, 0x17, + 0xcf, 0x0e, 0xbc, 0x26, 0xae, 0x0c, 0xf3, 0x09, + 0xe3, 0x2b, 0x3b, 0xe9, 0x5e, 0x22, 0xa7, 0xa9, + 0x72, 0xd4, 0xd3, 0x1b, 0x35, 0xe2, 0x4c, 0xbb, + 0xa0, 0x37, 0xc8, 0x12, 0xec, 0xa6, 0xf5, 0x63, + 0x82, 0xff, 0xf2, 0xb8, 0xcb, 0x12, 0x30, 0x2a, + 0xa0, 0xaf, 0xe2, 0xd6, 0x70, 0x57, 0xa5, 0x63, + 0x01, 0x51, 0xb3, 0xd5, 0xcb, 0x7b, 0xf7, 0xf6, + 0xf0, 0x2c, 0x6a, 0xa9, 0x14, 0x95, 0x07, 0xee, + 0x8b, 0x04, 0x25, 0x1e, 0x69, 0x8f, 0x5a, 0x49, + 0x73, 0x2b, 0x79, 0xf2, 0x2c, 0xea, 0x34, 0xa9, + 0xdd, 0xe2, 0x70, 0xd6, 0x84, 0xb9, 0x82, 0xef, + 0xf5, 0x15, 0x37, 0xe1, 0x10, 0xb6, 0x6d, 0x25, + 0xda, 0xd3, 0xab, 0x93, 0xd5, 0x92, 0xbf, 0x9e, + 0x07, 0x8d, 0x53, 0x1b, 0x6d, 0xc1, 0x55, 0xd9, + 0xc4, 0x1e, 0xf1, 0x9e, 0x07, 0x59, 0x8f, 0x78, + 0x1a, 0xdf, 0xf6, 0x46, 0xbc, 0xf3, 0xbc, 0xe4, + 0x95, 0x3c, 0x3b, 0x20, 0x42, 0x6f, 0x24, 0xf8, + 0x88, 0xfd, 0x4d, 0xa0, 0x29, 0x49, 0xd0, 0x2a, + 0xdb, 0x9c, 0x50, 0x3c, 0xbb, 0x1c, 0xd8, 0x42, + 0x5f, 0xe1, 0xfa, 0xc2, 0x3c, 0x8b, 0x43, 0xea, + 0xd1, 0xe8, 0x40, 0xcd, 0x20, 0x34, 0x6c, 0x4d, + 0xae, 0x22, 0x4a, 0xed, 0x57, 0x49, 0xbc, 0x32, + 0xdc, 0x15, 0xab, 0x54, 0xae, 0xbe, 0x5c, 0xff, + 0x21, 0xa2, 0xba, 0xd3, 0xde, 0xd3, 0x1a, 0x5c, + 0x35, 0x3b, 0xe5, 0x9d, 0x26, 0x2b, 0x62, 0xef, + 0xaf, 0x05, 0x31, 0x1d, 0xce, 0xea, 0x6b, 0xb0, + 0x12, 0xab, 0x5c, 0x11, 0xfa, 0x4c, 0xe7, 0xab, + 0xae, 0xf2, 0x1a, 0xf7, 0xe0, 0x5c, 0x97, 0x82, + 0xd4, 0xc5, 0x40, 0x72, 0xbe, 0x06, 0x99, 0xc3, + 0xf5, 0x83, 0x9d, 0xca, 0x16, 0x18, 0x6a, 0x7e, + 0x3c, 0x9b, 0x76, 0x32, 0xdd, 0xb1, 0x20, 0x4e, + 0xbf, 0xe9, 0xa6, 0x41, 0x2a, 0xf1, 0x98, 0xa2, + 0x0b, 0x44, 0x9c, 0x85, 0x6b, 0x2e, 0x2a, 0x45, + 0x65, 0xb1, 0xab, 0x83, 0x16, 0x84, 0x6b, 0xb7, + 0x66, 0x59, 0x91, 0x9e, 0x07, 0x71, 0xad, 0x04, + 0xd2, 0x2e, 0xe0, 0x90, 0x73, 0x28, 0x6d, 0x04, + 0xca, 0x3f, 0xb5, 0x98, 0xd5, 0x97, 0xd8, 0xb8, + 0x35, 0x69, 0xa9, 0xde, 0x10, 0xac, 0x54, 0xf2, + 0x20, 0x05, 0x3a, 0x25, 0x4f, 0x6a, 0x38, 0x59, + 0x16, 0x75, 0x70, 0x8f, 0x51, 0xab, 0xd9, 0x49, + 0x77, 0xd2, 0x7e, 0xc6, 0x1f, 0x37, 0xf3, 0xbb, + 0x7f, 0xb8, 0x9a, 0x7c, 0xa0, 0xf4, 0xf6, 0x6f, + 0x9c, 0xa9, 0x5b, 0x15, 0xb7, 0x2f, 0x25, 0x42, + 0x2f, 0x83, 0x82, 0x56, 0x15, 0xb5, 0xde, 0xec, + 0x80, 0x4a, 0x75, 0x0a, 0xb5, 0x94, 0x53, 0xb1, + 0x3f, 0xad, 0x16, 0xaa, 0xa9, 0xa7, 0xa9, 0xc7, + 0x29, 0x2b, 0x83, 0x9f, 0xeb, 0xbc, 0x72, 0xd2, + 0xcf, 0xc6, 0x7f, 0x49, 0x39, 0xb7, 0x8e, 0x2f, + 0xbe, 0x78, 0xe6, 0x80, 0x16, 0x37, 0x3e, 0x34, + 0xe2, 0xbb, 0xea, 0x79, 0xf2, 0xa3, 0x72, 0xe2, + 0x5f, 0x33, 0x50, 0xde, 0xfb, 0x17, 0x5d, 0xb3, + 0x94, 0x9b, 0xaa, 0x5a, 0x7d, 0x3a, 0xdc, 0x82, + 0x4f, 0x23, 0x2a, 0x19, 0x82, 0x35, 0xd3, 0x41, + 0x6b, 0xa4, 0xd9, 0x58, 0x70, 0x87, 0x15, 0x99, + 0x4e, 0xc7, 0x78, 0x76, 0x23, 0xeb, 0xcc, 0xc3, + 0xf8, 0x52, 0x58, 0x58, 0xa5, 0xc5, 0xba, 0x29, + 0x96, 0xb6, 0x86, 0x79, 0xdc, 0x7e, 0x8e, 0x7a, + 0xe3, 0x80, 0x1e, 0xa4, 0xaa, 0x93, 0xab, 0x0b, + 0x0a, 0xce, 0x64, 0x3c, 0x3f, 0xf6, 0xf6, 0x56, + 0x35, 0x61, 0x24, 0xcc, 0x6d, 0x65, 0xa2, 0x7e, + 0xce, 0x5e, 0xb6, 0x97, 0xeb, 0xeb, 0x76, 0xc2, + 0x4e, 0xd4, 0x13, 0x4a, 0xdf, 0xc2, 0x9e, 0xb2, + 0x66, 0x95, 0x54, 0x90, 0xb2, 0xe3, 0x8e, 0x6a, + 0xe5, 0xdb, 0x4f, 0xe8, 0x69, 0x92, 0x57, 0xfb, + 0x67, 0x51, 0x6a, 0xa2, 0x2b, 0x94, 0x63, 0x48, + 0x58, 0xf6, 0x04, 0x9f, 0x01, 0x4d, 0xd1, 0xe4, + 0xcb, 0xac, 0xc2, 0x4b, 0x76, 0xe5, 0x99, 0xfa, + 0xcb, 0xe5, 0x5f, 0x96, 0x9f, 0x19, 0xf6, 0xed, + 0x7d, 0xf8, 0x5c, 0x98, 0x7f, 0xd5, 0x24, 0xcf, + 0x9a, 0x3b, 0x12, 0xb1, 0x49, 0xed, 0x45, 0x77, + 0xd8, 0x8e, 0xd5, 0xc0, 0xfb, 0x3d, 0xad, 0xac, + 0x70, 0xe6, 0x32, 0xb7, 0xec, 0x32, 0x37, 0xfc, + 0xde, 0x45, 0x8d, 0x0f, 0x03, 0xfe, 0x0d, 0xf1, + 0x6f, 0xed, 0x7b, 0x30, 0x00, 0xd9, 0xe1, 0x77, + 0xff, 0xde, 0xeb, 0xef, 0xf2, 0x71, 0x31, 0x17, + 0xfd, 0xfd, 0x7b, 0x52, 0x96, 0x0b, 0xdd, 0xd3, + 0xb5, 0x15, 0xb1, 0x07, 0x9b, 0xfc, 0x0e, 0xc1, + 0x21, 0xbf, 0x7f, 0x44, 0x6c, 0xd7, 0x79, 0x86, + 0xe2, 0x81, 0x98, 0x91, 0x02, 0x22, 0x4b, 0xd9, + 0x29, 0xfb, 0x95, 0x3d, 0xcf, 0xe7, 0xed, 0x79, + 0xfb, 0xe5, 0xb3, 0xf5, 0xd7, 0x67, 0x5e, 0x67, + 0xc9, 0xac, 0xb4, 0x74, 0xb4, 0x49, 0x63, 0x30, + 0x2a, 0xa8, 0x18, 0xe1, 0x6b, 0x2c, 0x1c, 0x71, + 0x3a, 0x4d, 0xa5, 0x8e, 0xd5, 0x40, 0xa6, 0x96, + 0x82, 0xed, 0xbd, 0x39, 0xa3, 0x0c, 0x6b, 0x51, + 0xae, 0x19, 0x8e, 0xee, 0x7d, 0x48, 0xbe, 0x82, + 0xb9, 0xa2, 0x49, 0xf2, 0x62, 0x6c, 0xa7, 0xea, + 0x16, 0x9d, 0xe2, 0xca, 0xd0, 0x01, 0xea, 0xee, + 0x0c, 0x67, 0x20, 0x8f, 0x12, 0x05, 0xa1, 0x2e, + 0x9e, 0x71, 0xd2, 0x5e, 0x0a, 0x50, 0x1b, 0x35, + 0x73, 0x87, 0x9a, 0x83, 0xc7, 0xe2, 0xcf, 0xfa, + 0x46, 0xf5, 0xa7, 0x08, 0xd7, 0xad, 0xb6, 0x17, + 0xbb, 0xe7, 0x93, 0x97, 0xba, 0x06, 0x03, 0xf4, + 0xa4, 0x2c, 0x06, 0x2b, 0xed, 0x59, 0x73, 0xae, + 0x83, 0x12, 0xbb, 0x6a, 0x2d, 0x06, 0x25, 0xf5, + 0xb2, 0xba, 0x2c, 0x7e, 0xaf, 0xb7, 0xf5, 0xf6, + 0x4d, 0x36, 0xab, 0x17, 0x75, 0x7d, 0x5a, 0x9e, + 0xd5, 0xdb, 0x4b, 0xf4, 0xf2, 0xb1, 0xa1, 0xce, + 0x77, 0x75, 0x06, 0x07, 0xec, 0x11, 0x06, 0xaf, + 0x5d, 0xc4, 0xd7, 0xe6, 0x2b, 0x6f, 0x17, 0xaa, + 0x4b, 0xc6, 0x25, 0x6e, 0x10, 0x78, 0x57, 0x3c, + 0xac, 0x5b, 0x7e, 0x71, 0x4f, 0xdf, 0x65, 0x5b, + 0x12, 0x8d, 0x34, 0xdd, 0x22, 0xd7, 0x60, 0xce, + 0xe4, 0xde, 0x0d, 0xf7, 0x6f, 0x67, 0x48, 0x15, + 0xc0, 0x8e, 0xd6, 0xa9, 0x4d, 0x1f, 0x82, 0x1e, + 0x01, 0x4b, 0xea, 0xc1, 0x80, 0xff, 0xe3, 0x6f, + 0x15, 0x53, 0xac, 0xaf, 0x22, 0xf4, 0x3d, 0xec, + 0x0a, 0xa2, 0x8c, 0x75, 0xf3, 0x34, 0x4f, 0x0d, + 0xf8, 0xeb, 0xb1, 0x01, 0x0b, 0x8b, 0x9b, 0xf3, + 0x7f, 0x92, 0x1c, 0xd8, 0x9b, 0x11, 0xb2, 0x3e, + 0x82, 0xd7, 0x82, 0x0e, 0x1b, 0xe3, 0x4b, 0xb6, + 0xee, 0xeb, 0xc4, 0x32, 0xe5, 0x0a, 0xc6, 0x49, + 0x9c, 0x14, 0x01, 0x6b, 0xa4, 0xed, 0x38, 0x39, + 0x9d, 0x9f, 0x7c, 0xf6, 0x07, 0x17, 0x7f, 0x73, + 0x5a, 0xac, 0xef, 0x9c, 0xb0, 0x8c, 0x8a, 0x35, + 0x1c, 0x6c, 0x59, 0x34, 0x1c, 0xf9, 0x03, 0x29, + 0xed, 0x4a, 0xf8, 0x49, 0x15, 0x78, 0x3f, 0x44, + 0xf5, 0xb3, 0x24, 0xfa, 0x3e, 0x9b, 0xc7, 0x6b, + 0x4e, 0x2a, 0x26, 0xd8, 0xf6, 0xfe, 0x28, 0xbb, + 0x4f, 0xbb, 0xaa, 0x90, 0x4c, 0xd8, 0x65, 0x4c, + 0xb3, 0xf2, 0x1c, 0x71, 0x2a, 0xe0, 0x2a, 0x5e, + 0x0e, 0x6e, 0xb5, 0x26, 0x83, 0x0f, 0x36, 0xd6, + 0x7f, 0x48, 0x54, 0x47, 0x84, 0x47, 0x00, 0xfb, + 0x72, 0xc7, 0xae, 0x4f, 0x74, 0x13, 0x60, 0x07, + 0x13, 0xb4, 0x09, 0x47, 0xb6, 0xab, 0xed, 0xcd, + 0xea, 0x1f, 0x4f, 0x0b, 0xdd, 0x8e, 0x36, 0x41, + 0x0c, 0xd0, 0x4a, 0x2c, 0x1a, 0xe1, 0x4e, 0xf7, + 0xb6, 0x3d, 0xda, 0x86, 0xfd, 0xc5, 0x2a, 0xb0, + 0xb6, 0x7f, 0x64, 0xf3, 0xf0, 0x75, 0x9e, 0xad, + 0xb1, 0x58, 0x20, 0xe7, 0x4a, 0xec, 0x85, 0xd0, + 0x31, 0x28, 0xf7, 0x7e, 0x92, 0xf6, 0x17, 0xd0, + 0x75, 0x77, 0x84, 0xde, 0xe9, 0x16, 0xbd, 0xa2, + 0x37, 0xcc, 0x35, 0x92, 0x05, 0x64, 0x87, 0xde, + 0x4a, 0x95, 0x54, 0xf3, 0x02, 0x23, 0xf1, 0xad, + 0xd6, 0xe7, 0xc1, 0x06, 0xff, 0xdc, 0xdd, 0xa8, + 0x6f, 0xb4, 0x7f, 0xe7, 0xff, 0x97, 0x9f, 0xd8, + 0x27, 0xed, 0x5c, 0xa8, 0x61, 0x62, 0x7c, 0x8d, + 0xcc, 0xc3, 0xaa, 0xcf, 0xf7, 0xbe, 0xae, 0x71, + 0xc5, 0x03, 0x6f, 0x06, 0xd6, 0x37, 0xed, 0xbd, + 0x0a, 0x6e, 0xbd, 0xd9, 0xfc, 0x59, 0xa2, 0xfe, + 0x32, 0x9d, 0x0b, 0xca, 0x5e, 0xd9, 0xd1, 0x9d, + 0x32, 0xad, 0x45, 0x76, 0xc1, 0x12, 0x16, 0x3a, + 0x60, 0xe4, 0x03, 0x9b, 0x19, 0x15, 0x61, 0x9f, + 0x37, 0x85, 0x75, 0x46, 0xc9, 0x99, 0x01, 0x49, + 0xd9, 0x76, 0x97, 0x83, 0xca, 0x06, 0xe0, 0x6f, + 0x45, 0xe5, 0x97, 0x9d, 0x12, 0x33, 0x0e, 0xef, + 0x26, 0x05, 0x36, 0xb3, 0x53, 0x9c, 0x3a, 0x0d, + 0x07, 0xa4, 0x95, 0xe9, 0x07, 0xf5, 0xd7, 0xeb, + 0x47, 0x67, 0x5b, 0x5a, 0xb8, 0xf7, 0xd1, 0xf3, + 0x62, 0xca, 0xc5, 0xfa, 0x92, 0x73, 0xd1, 0x81, + 0x23, 0x30, 0xcc, 0x92, 0xb9, 0xe4, 0x2c, 0x6f, + 0x3c, 0xd8, 0xbd, 0x84, 0xaf, 0x75, 0x88, 0x3d, + 0x16, 0x58, 0xd6, 0x1c, 0xa0, 0x90, 0xb8, 0x0d, + 0x9e, 0x85, 0x3d, 0x02, 0x3a, 0x2d, 0x0d, 0xb8, + 0xa4, 0xf8, 0x58, 0x4c, 0xc7, 0xd1, 0x18, 0x4b, + 0xf4, 0x07, 0x4d, 0xc0, 0x9e, 0x4a, 0x1d, 0x7f, + 0x60, 0x08, 0x44, 0x11, 0x22, 0x37, 0x3c, 0x18, + 0x60, 0xb7, 0x59, 0xb2, 0xd8, 0x41, 0x0c, 0x17, + 0xfa, 0x74, 0x54, 0x69, 0x03, 0x32, 0x17, 0xde, + 0xe2, 0xfd, 0x95, 0xfb, 0x1c, 0xbc, 0x45, 0xc0, + 0x7d, 0xf0, 0x5b, 0x4f, 0x31, 0xa5, 0x75, 0x8e, + 0xb4, 0xb3, 0x90, 0x54, 0x0b, 0xd6, 0x92, 0xa2, + 0x1d, 0x50, 0xd0, 0x6a, 0xc0, 0xbe, 0xd3, 0xaa, + 0x85, 0x77, 0x8a, 0x35, 0xc4, 0x9f, 0x8b, 0xeb, + 0x91, 0x9e, 0xd9, 0x79, 0xeb, 0x6e, 0x20, 0x5f, + 0x8b, 0xf2, 0x71, 0x5b, 0x7d, 0xf9, 0xe2, 0xdc, + 0x8a, 0x12, 0x6a, 0x71, 0xb0, 0x22, 0xdd, 0x0a, + 0xe9, 0x6b, 0x51, 0x92, 0x1f, 0x3d, 0x42, 0x59, + 0xbd, 0x11, 0x38, 0x96, 0xd4, 0x0f, 0x02, 0xb9, + 0x29, 0x67, 0x82, 0xb4, 0x5d, 0xb2, 0xed, 0x7a, + 0x19, 0xee, 0xb1, 0x5c, 0x87, 0xe3, 0x81, 0x5e, + 0x5f, 0x74, 0x6f, 0x09, 0x6b, 0x75, 0x16, 0x77, + 0x28, 0xf9, 0xbd, 0xfd, 0x2f, 0xf6, 0x05, 0xe7, + 0x91, 0x53, 0x30, 0x2f, 0xb3, 0x7f, 0x33, 0xd3, + 0xce, 0x8c, 0x9d, 0x76, 0x0b, 0xb8, 0x82, 0xc2, + 0x07, 0xb5, 0xd4, 0x87, 0x6f, 0xe5, 0x5e, 0x8a, + 0xbf, 0x87, 0x37, 0xfb, 0xb3, 0x81, 0x47, 0xd6, + 0x81, 0xab, 0x60, 0x63, 0x56, 0xec, 0xa8, 0x8c, + 0x92, 0x43, 0x0b, 0x80, 0x20, 0x0b, 0x2c, 0x65, + 0x17, 0x88, 0x4a, 0x9b, 0x5e, 0x4a, 0x2f, 0xa8, + 0x59, 0x02, 0x3e, 0x9f, 0x97, 0x64, 0x12, 0x3f, + 0xd7, 0x2d, 0xa9, 0x7d, 0xbf, 0xb5, 0x41, 0x03, + 0x58, 0xe8, 0x59, 0x83, 0x26, 0x14, 0x92, 0x13, + 0x13, 0x48, 0x46, 0x62, 0x19, 0xf8, 0xca, 0x71, + 0x66, 0x95, 0x83, 0xa1, 0xea, 0xea, 0x55, 0xd8, + 0x60, 0x78, 0x55, 0xe1, 0x75, 0xdd, 0x56, 0x4f, + 0xa2, 0x61, 0x44, 0xd7, 0x43, 0x28, 0xb3, 0xca, + 0x98, 0x12, 0x23, 0x31, 0xb7, 0xe9, 0x9d, 0xaa, + 0x9d, 0xb2, 0x12, 0x80, 0x54, 0xf1, 0x2c, 0x6a, + 0x06, 0x7a, 0x00, 0x77, 0xa2, 0xdc, 0x3d, 0x60, + 0x36, 0xb3, 0x87, 0xbb, 0xf4, 0x08, 0xd6, 0xd6, + 0x01, 0x34, 0x5a, 0xb5, 0x2c, 0xeb, 0x00, 0xe5, + 0x0a, 0x90, 0x2c, 0xbf, 0x03, 0xf3, 0x34, 0xc7, + 0x51, 0x36, 0x00, 0x15, 0x99, 0xa0, 0xa8, 0x7f, + 0x5e, 0x4c, 0x32, 0xbc, 0x2a, 0xd0, 0xd4, 0xcd, + 0x00, 0xd0, 0x35, 0xcc, 0xec, 0x36, 0x68, 0x0e, + 0xb4, 0xf1, 0xd3, 0xb5, 0x5a, 0x28, 0xed, 0xb0, + 0x2a, 0x07, 0xc2, 0xc3, 0xe0, 0x49, 0x37, 0x03, + 0xba, 0xe5, 0xc1, 0x96, 0xf4, 0x59, 0xe4, 0x0e, + 0x65, 0xca, 0x7c, 0xb0, 0xc2, 0x8a, 0xd6, 0x34, + 0x8f, 0x83, 0x0e, 0x04, 0xff, 0x8c, 0xe7, 0xdd, + 0x69, 0x0e, 0xbe, 0x96, 0x3b, 0xaa, 0xf6, 0xcf, + 0xce, 0x80, 0x96, 0x2c, 0xc3, 0xd1, 0x84, 0xf7, + 0x28, 0x89, 0xb3, 0x53, 0x03, 0x56, 0x32, 0x9a, + 0x95, 0x14, 0x45, 0x8f, 0x08, 0xec, 0xa8, 0x40, + 0xc8, 0x29, 0x25, 0xf7, 0xa6, 0xd8, 0x7a, 0x78, + 0x40, 0x1a, 0x39, 0x4f, 0xf3, 0x6e, 0x78, 0x9f, + 0xd2, 0x9c, 0x97, 0xa5, 0x85, 0x43, 0xf8, 0x3b, + 0x53, 0x68, 0x6f, 0xa6, 0xb0, 0xed, 0x23, 0xc5, + 0x58, 0x35, 0x62, 0xdd, 0xd5, 0x2d, 0x65, 0x7f, + 0xd5, 0x9f, 0x37, 0x16, 0x74, 0xf8, 0x2d, 0xe0, + 0x0d, 0xf0, 0x14, 0x6d, 0xcd, 0x49, 0xc3, 0xea, + 0x7d, 0x81, 0x3e, 0x23, 0x27, 0x4e, 0xc9, 0x99, + 0xf6, 0xf2, 0xbb, 0x63, 0xda, 0xf3, 0xa4, 0x9c, + 0x8d, 0xb1, 0xe0, 0xb6, 0x35, 0x0b, 0x32, 0x13, + 0xf7, 0xc7, 0x5f, 0x4f, 0x81, 0x1f, 0x5a, 0x64, + 0x45, 0xe7, 0x8e, 0x7b, 0x57, 0x95, 0xde, 0xd3, + 0x58, 0x60, 0x2b, 0x4b, 0x47, 0x4b, 0x7a, 0x42, + 0x9f, 0x9c, 0xbe, 0x08, 0xfe, 0x0f, 0x6d, 0x53, + 0x6b, 0x76, 0xff, 0xb7, 0xc2, 0xe3, 0x03, 0xed, + 0x64, 0xa1, 0xcf, 0x4d, 0x18, 0x4a, 0x4b, 0xc9, + 0xbf, 0xb7, 0x37, 0xd2, 0x1e, 0x69, 0x47, 0xc8, + 0xa4, 0xc2, 0x0d, 0x17, 0xbd, 0xcb, 0x32, 0x37, + 0xda, 0xe5, 0x76, 0xbc, 0x8d, 0x58, 0x73, 0x19, + 0x6c, 0xe9, 0xa4, 0x8a, 0xb6, 0x0c, 0xb0, 0x79, + 0x7b, 0x8a, 0x5f, 0x27, 0xd7, 0xc9, 0x15, 0xee, + 0xb4, 0x41, 0xb3, 0x01, 0x2e, 0x4f, 0xeb, 0x9a, + 0x9e, 0x17, 0x9a, 0x70, 0x0d, 0xf0, 0x5e, 0x13, + 0x8e, 0x35, 0xb0, 0xe7, 0x6b, 0x7c, 0xc8, 0x58, + 0xeb, 0xcc, 0x1b, 0xfa, 0x31, 0xf8, 0x03, 0xa6, + 0x40, 0xd7, 0x46, 0x59, 0x4f, 0x04, 0x20, 0x1f, + 0x46, 0xc2, 0x58, 0x32, 0x41, 0x03, 0xec, 0x7e, + 0x78, 0xde, 0xa8, 0x7e, 0x1c, 0x6a, 0xef, 0x06, + 0xaf, 0xba, 0xf2, 0xb0, 0xed, 0xaa, 0xfb, 0xb0, + 0x63, 0xdb, 0x0f, 0x3b, 0x55, 0xd7, 0xf6, 0x9d, + 0xba, 0xf0, 0x8f, 0x02, 0x62, 0x35, 0x79, 0x82, + 0x9c, 0xe3, 0x53, 0x64, 0x8a, 0x2f, 0x91, 0x25, + 0x7e, 0xdf, 0x23, 0xb5, 0xc4, 0xfe, 0xd9, 0x64, + 0x4f, 0xab, 0x18, 0x4b, 0xfa, 0x45, 0xc6, 0x82, + 0x8b, 0x6c, 0x89, 0xc1, 0xb1, 0x05, 0xef, 0xef, + 0xde, 0x57, 0x23, 0x0c, 0x1c, 0x8d, 0x4a, 0x4f, + 0xc7, 0x4a, 0xcd, 0x20, 0xcf, 0xa2, 0xbe, 0xa8, + 0x70, 0xe1, 0xe9, 0x1d, 0xcf, 0xf9, 0x17, 0xec, + 0x59, 0xa3, 0x12, 0xe2, 0x0d, 0x8c, 0xd3, 0xa4, + 0x79, 0xe8, 0xb3, 0xf3, 0x71, 0x36, 0x15, 0x7c, + 0x75, 0x18, 0x37, 0xe3, 0x9d, 0xa1, 0xa0, 0x87, + 0x18, 0x85, 0xff, 0xd3, 0xc7, 0xf7, 0x31, 0x35, + 0xa6, 0x2a, 0x81, 0x12, 0x5a, 0x41, 0xdc, 0x9f, + 0x12, 0xb3, 0xc4, 0x84, 0x87, 0x74, 0xb6, 0x35, + 0x74, 0xb0, 0x2a, 0x74, 0x4e, 0x7d, 0x1a, 0x74, + 0x02, 0x80, 0x8d, 0x35, 0x76, 0x6a, 0x05, 0xac, + 0x02, 0xcb, 0xc2, 0x7b, 0xe7, 0x15, 0x69, 0xcb, + 0x40, 0xc7, 0x2a, 0x05, 0x9e, 0x02, 0x3f, 0xfc, + 0xe3, 0x7d, 0x75, 0x27, 0xdf, 0x78, 0x72, 0x32, + 0x26, 0x83, 0x1a, 0x24, 0x68, 0xb4, 0x53, 0x0e, + 0xf8, 0x56, 0xa0, 0x41, 0xae, 0x60, 0x34, 0x07, + 0x2d, 0x63, 0xd5, 0x5c, 0x85, 0xb3, 0xe0, 0xf5, + 0x67, 0x3a, 0xdb, 0x76, 0x8a, 0xc2, 0xef, 0xc0, + 0x67, 0xfc, 0x1a, 0x70, 0x4f, 0xda, 0xd3, 0x6a, + 0xf9, 0xee, 0x15, 0x94, 0x1c, 0xb8, 0x96, 0x04, + 0xbb, 0xcd, 0x66, 0x69, 0x11, 0x76, 0x74, 0xee, + 0x1d, 0xa0, 0x4b, 0xf8, 0xa9, 0x48, 0xef, 0x76, + 0x2d, 0x25, 0x92, 0xab, 0xaa, 0x7a, 0x11, 0xf0, + 0xcb, 0x90, 0xd0, 0x74, 0x69, 0xd8, 0x6f, 0xcc, + 0xbb, 0x4b, 0x1e, 0x88, 0x5d, 0x86, 0xbb, 0x3b, + 0xa3, 0xc4, 0x0f, 0x92, 0xe6, 0x25, 0x12, 0x03, + 0x69, 0xcf, 0xb0, 0x62, 0x4f, 0xda, 0x11, 0x23, + 0x8d, 0xd4, 0x47, 0xdc, 0x65, 0x7a, 0x9e, 0x2d, + 0x09, 0x9c, 0x79, 0xa6, 0x9e, 0xb1, 0x33, 0xf6, + 0x6c, 0xfd, 0xb6, 0x50, 0xde, 0xb0, 0x27, 0xdb, + 0x39, 0x7e, 0xdd, 0xbf, 0xe5, 0x83, 0xe4, 0x58, + 0x79, 0x2b, 0x07, 0x78, 0x84, 0x59, 0x9f, 0x04, + 0xca, 0x00, 0x16, 0x1d, 0x7b, 0x5b, 0x37, 0x46, + 0xf7, 0x27, 0xdb, 0xff, 0xb9, 0x37, 0xfa, 0x57, + 0xcd, 0x03, 0xcd, 0x5f, 0xb5, 0x84, 0x0f, 0x7b, + 0x9f, 0x9b, 0x22, 0xe2, 0xb4, 0x0e, 0x96, 0x77, + 0xa2, 0x6b, 0x74, 0x1e, 0xda, 0x09, 0x33, 0x41, + 0x2f, 0x75, 0xd0, 0xc3, 0x05, 0x5c, 0xd7, 0xd5, + 0xe8, 0x1f, 0x01, 0x85, 0x4c, 0x05, 0xba, 0xd5, + 0x78, 0x9b, 0x79, 0xb6, 0xb2, 0x7f, 0x63, 0xeb, + 0xaa, 0xff, 0x99, 0x4e, 0x0f, 0xd0, 0x67, 0x6f, + 0xb2, 0xcd, 0x7a, 0xd3, 0xdb, 0x64, 0x80, 0x73, + 0xfc, 0xa6, 0x0f, 0xfa, 0xb0, 0x55, 0x6e, 0xe9, + 0x3b, 0x33, 0x22, 0x26, 0xd3, 0xd3, 0xcf, 0xc2, + 0xa6, 0xa5, 0x01, 0x15, 0x6c, 0xec, 0x27, 0x45, + 0xc4, 0x86, 0x35, 0x7a, 0x76, 0x90, 0xa3, 0x2d, + 0x11, 0x91, 0x00, 0x90, 0x8d, 0x0f, 0xec, 0x62, + 0x24, 0x1b, 0xd6, 0x9c, 0xb0, 0x03, 0x88, 0x58, + 0x9f, 0x13, 0x98, 0x6b, 0x37, 0x75, 0x38, 0xb3, + 0x9f, 0x77, 0x17, 0x5a, 0x62, 0x05, 0xb7, 0x08, + 0x85, 0x3b, 0xf0, 0x8a, 0xee, 0xef, 0x49, 0x42, + 0x85, 0xfd, 0x0b, 0x6b, 0x39, 0xed, 0xe6, 0xdd, + 0xb3, 0x7c, 0x4b, 0x68, 0xfe, 0x02, 0x7f, 0xee, + 0x26, 0xf7, 0xf3, 0x3b, 0x5f, 0x35, 0xc6, 0x0e, + 0x60, 0xce, 0x39, 0xe2, 0xa0, 0x2c, 0xe0, 0x15, + 0x44, 0x41, 0x31, 0x8c, 0xe8, 0x80, 0xdc, 0x35, + 0xbb, 0x59, 0x11, 0x2d, 0xc9, 0xf1, 0x49, 0xff, + 0x2b, 0x3f, 0xee, 0x0f, 0xc6, 0x36, 0x9b, 0xe0, + 0x89, 0x10, 0x77, 0xac, 0x3a, 0xc2, 0x46, 0x18, + 0x48, 0xa8, 0x55, 0x64, 0x77, 0x68, 0x92, 0xca, + 0x88, 0x1c, 0x01, 0x95, 0xb9, 0x18, 0x30, 0xd0, + 0x02, 0x09, 0x8e, 0xce, 0x2b, 0x06, 0xaf, 0xe0, + 0x25, 0x02, 0xf5, 0x2d, 0x73, 0x8c, 0x5b, 0x2c, + 0x83, 0x76, 0x1f, 0x01, 0x2f, 0x1f, 0x75, 0x6a, + 0xd2, 0xce, 0xbb, 0x4f, 0xc8, 0x69, 0x21, 0x93, + 0xab, 0x75, 0xdd, 0x8e, 0xc6, 0x62, 0xe7, 0x24, + 0x1a, 0x91, 0x18, 0x2e, 0xd2, 0x73, 0xa8, 0xe9, + 0x86, 0x94, 0xbe, 0xae, 0x43, 0x5c, 0x57, 0xe8, + 0x4e, 0x38, 0x59, 0x27, 0x0b, 0x88, 0x22, 0xe3, + 0x65, 0x9d, 0x09, 0x13, 0xf7, 0x86, 0x8c, 0x4f, + 0x82, 0x07, 0x00, 0x32, 0xbb, 0x18, 0x54, 0x85, + 0xaf, 0x36, 0xc5, 0x0d, 0xcb, 0x16, 0x3f, 0x8d, + 0x09, 0x1f, 0x56, 0x46, 0x7b, 0xc0, 0x43, 0xb0, + 0x50, 0x9b, 0x64, 0x49, 0x56, 0xcd, 0xaa, 0x4b, + 0xea, 0x12, 0xbd, 0x4d, 0x95, 0x6e, 0x18, 0x81, + 0xb4, 0xb7, 0x85, 0x2c, 0x82, 0xbc, 0xf3, 0x3e, + 0xf2, 0x33, 0x2d, 0x69, 0xb3, 0xab, 0x16, 0x8e, + 0x86, 0xf5, 0x09, 0x8f, 0x7e, 0x42, 0x84, 0x28, + 0x10, 0x14, 0x68, 0xa8, 0x0c, 0x6f, 0xb4, 0xd1, + 0x1e, 0x7c, 0x18, 0xc6, 0x3d, 0x3f, 0xe3, 0xa0, + 0xb5, 0xe8, 0xb8, 0xf0, 0x07, 0x2b, 0x56, 0xd1, + 0x2a, 0x06, 0x97, 0xf7, 0x96, 0x0d, 0xdd, 0x5c, + 0x60, 0x25, 0xb6, 0x54, 0xbb, 0xe4, 0x30, 0xaf, + 0x42, 0xe2, 0x52, 0x6f, 0x6c, 0x01, 0xa2, 0x77, + 0x2e, 0x6f, 0x94, 0x76, 0xe7, 0x93, 0x3a, 0xcc, + 0x5b, 0xc9, 0x31, 0x4d, 0x66, 0x96, 0x25, 0x42, + 0x06, 0xbd, 0x11, 0xeb, 0xcd, 0x49, 0xf4, 0x53, + 0x2c, 0xf4, 0xef, 0x4e, 0x1d, 0xa9, 0x6c, 0x82, + 0x3e, 0xf9, 0x29, 0x5e, 0xab, 0x78, 0x88, 0x69, + 0x11, 0xcf, 0x4a, 0x2c, 0x8b, 0x38, 0x16, 0x63, + 0x3b, 0x19, 0xde, 0x7c, 0x3c, 0x72, 0x3c, 0xca, + 0xc7, 0x8f, 0xa7, 0x1e, 0x5f, 0xb7, 0x3f, 0x0f, + 0xa3, 0xc4, 0xd3, 0xc9, 0xc8, 0xb2, 0xdf, 0xe9, + 0x6b, 0x8e, 0x1e, 0x46, 0x16, 0x08, 0x99, 0x55, + 0x2c, 0x86, 0x38, 0x96, 0x5f, 0x76, 0xcf, 0x73, + 0x3d, 0x58, 0x68, 0x95, 0x02, 0x73, 0x63, 0xf6, + 0x87, 0x4a, 0xb5, 0x18, 0xc6, 0x81, 0x65, 0x74, + 0x24, 0x76, 0x22, 0xe2, 0x00, 0x6b, 0x44, 0x42, + 0xdd, 0x8e, 0x6b, 0xeb, 0xa2, 0x4c, 0x2f, 0x19, + 0x38, 0x04, 0x42, 0x12, 0x9a, 0x90, 0x8a, 0x15, + 0xb9, 0xcb, 0x31, 0x0e, 0x14, 0x07, 0xe9, 0x00, + 0xfc, 0x25, 0x66, 0x99, 0x09, 0xcf, 0x3a, 0xda, + 0x29, 0x2a, 0xbb, 0x6a, 0x10, 0x3f, 0xbf, 0xff, + 0x47, 0x76, 0xa6, 0xa6, 0x39, 0x4f, 0xbd, 0x53, + 0xc2, 0x2e, 0xa0, 0x1c, 0x21, 0xf2, 0xa4, 0xca, + 0xa5, 0xee, 0xa7, 0x20, 0xb3, 0x18, 0xe5, 0xcb, + 0xda, 0x59, 0x7d, 0x42, 0xa3, 0x02, 0x8d, 0x14, + 0x38, 0x25, 0x70, 0xa0, 0x4e, 0xb3, 0xd2, 0x66, + 0xa1, 0x43, 0x5b, 0x8b, 0x5d, 0xd6, 0xfa, 0x52, + 0xae, 0x11, 0xd8, 0xec, 0x14, 0xcd, 0x05, 0x2b, + 0xca, 0xb5, 0xee, 0x35, 0xfa, 0xe9, 0xfb, 0xaf, + 0x65, 0x95, 0x40, 0xf7, 0x16, 0x83, 0x55, 0x05, + 0x31, 0xec, 0x1a, 0xe2, 0x58, 0xae, 0xfb, 0xf3, + 0x7b, 0x0b, 0xbb, 0x0f, 0xb6, 0xa4, 0x6c, 0x50, + 0xaf, 0x51, 0x43, 0xd9, 0xb8, 0x05, 0xab, 0x7b, + 0xdd, 0xc6, 0xf5, 0x45, 0x39, 0x49, 0x3f, 0x96, + 0x1a, 0xc9, 0x80, 0x51, 0xb6, 0x96, 0x84, 0xc4, + 0x9d, 0x05, 0x5c, 0x83, 0xbf, 0x1b, 0x95, 0x52, + 0xa7, 0x54, 0x8e, 0x00, 0xeb, 0xb4, 0x50, 0x72, + 0xd1, 0x8f, 0xa1, 0x8a, 0x94, 0xf6, 0x82, 0x90, + 0x76, 0xf4, 0x59, 0xc7, 0xf0, 0x6a, 0xdb, 0x57, + 0x5f, 0x7f, 0xf9, 0x0e, 0xe3, 0x8f, 0x78, 0x50, + 0xd0, 0x0c, 0xb4, 0x21, 0xdd, 0xa3, 0x02, 0xcc, + 0x64, 0xd5, 0x6e, 0x76, 0x54, 0x7b, 0x51, 0xee, + 0x97, 0xad, 0x55, 0xab, 0x26, 0x62, 0xd7, 0xfd, + 0x68, 0x4f, 0xfa, 0x70, 0xda, 0x44, 0xe9, 0x38, + 0x19, 0x51, 0x47, 0x54, 0x7f, 0xb7, 0x5b, 0xa4, + 0x73, 0x42, 0xba, 0x73, 0x5c, 0xa0, 0x7a, 0x43, + 0x7a, 0x8b, 0x6a, 0x7e, 0xea, 0xf8, 0x39, 0xe8, + 0xee, 0x14, 0x6f, 0x90, 0x14, 0xcf, 0x93, 0x6b, + 0xfc, 0xaa, 0xf5, 0xc8, 0x4f, 0xef, 0x68, 0xbb, + 0x74, 0x4b, 0xee, 0x41, 0xd8, 0xb5, 0xec, 0x64, + 0xfc, 0x4b, 0x7a, 0xc4, 0x03, 0xf8, 0xb5, 0x15, + 0xb3, 0x62, 0x4c, 0xf8, 0xaf, 0x3d, 0xb9, 0x84, + 0x77, 0x46, 0x5f, 0x1c, 0xb0, 0x04, 0xf1, 0xf2, + 0x6d, 0xe3, 0xc0, 0x6e, 0xc9, 0xa8, 0x22, 0xd9, + 0x81, 0xd1, 0x90, 0x16, 0x76, 0x44, 0xc1, 0x28, + 0xff, 0x65, 0xf7, 0x91, 0x9b, 0x96, 0x71, 0x6d, + 0xa6, 0x39, 0x13, 0x32, 0x8a, 0x88, 0x9e, 0x1a, + 0x68, 0x91, 0x4c, 0xe7, 0x32, 0xcc, 0x30, 0xce, + 0x6f, 0xa6, 0x43, 0x65, 0x50, 0x1c, 0x24, 0x67, + 0x04, 0xc7, 0x4a, 0xc1, 0x4f, 0xfb, 0x97, 0x7d, + 0xb8, 0x56, 0x31, 0x34, 0x18, 0x13, 0x6f, 0x24, + 0xca, 0x85, 0xd7, 0xb6, 0x71, 0x27, 0x82, 0x9d, + 0x0a, 0xcf, 0xe2, 0x08, 0x31, 0xb0, 0x58, 0x11, + 0xb4, 0x5e, 0xa6, 0x25, 0x76, 0x81, 0x25, 0xa3, + 0x9f, 0x39, 0x19, 0xdb, 0x94, 0xa3, 0xd1, 0xac, + 0x26, 0x7a, 0x23, 0x55, 0x4d, 0x35, 0x66, 0x95, + 0x8f, 0xa3, 0x68, 0x0a, 0x15, 0x68, 0x36, 0x1c, + 0x05, 0xe9, 0xa3, 0x0a, 0x2f, 0x35, 0x26, 0x76, + 0x28, 0xa2, 0x61, 0x39, 0x4f, 0x42, 0x7e, 0x95, + 0x4a, 0x3d, 0x61, 0x5f, 0xa9, 0x47, 0x73, 0x35, + 0x18, 0xe7, 0x19, 0x3b, 0x5a, 0xb5, 0x86, 0xa2, + 0x3c, 0x8e, 0xb0, 0xb0, 0x69, 0xb5, 0xf9, 0x4e, + 0xb7, 0xf4, 0xb7, 0x8b, 0xcf, 0xea, 0xfb, 0xf7, + 0xb7, 0x92, 0x7e, 0x4e, 0xaf, 0x31, 0xe5, 0xa0, + 0xef, 0xe1, 0x7e, 0xf9, 0x2e, 0xae, 0x9c, 0xb1, + 0xaf, 0x74, 0xce, 0xec, 0x5f, 0x6e, 0xab, 0x5e, + 0xde, 0xad, 0xed, 0x48, 0x0f, 0x57, 0x9e, 0x53, + 0x7b, 0xef, 0xde, 0x0c, 0xc6, 0x8e, 0x9e, 0x7f, + 0xa1, 0x5a, 0x13, 0x80, 0x7e, 0xe3, 0x34, 0xe9, + 0xad, 0x80, 0xee, 0x4e, 0xd0, 0x6d, 0x8f, 0x78, + 0xd3, 0xd3, 0x93, 0x5b, 0xcb, 0x9e, 0x4d, 0xa3, + 0xfc, 0x82, 0xa2, 0x0c, 0xbf, 0x79, 0xe1, 0x6e, + 0xb8, 0x9f, 0xbf, 0xd9, 0x50, 0x5e, 0x28, 0x9f, + 0xd7, 0x37, 0xec, 0x0d, 0xe3, 0x73, 0xf3, 0x05, + 0x55, 0x0d, 0xf5, 0xc7, 0x48, 0xae, 0x7a, 0x38, + 0xe3, 0x04, 0xbe, 0x16, 0x32, 0x89, 0x38, 0x45, + 0x58, 0xb1, 0xdf, 0xf0, 0xf7, 0xcf, 0x2a, 0x56, + 0xd3, 0x8a, 0x5b, 0xb7, 0xac, 0x52, 0x70, 0xcb, + 0x1f, 0x32, 0x9b, 0xe0, 0xab, 0xde, 0xaa, 0x95, + 0x9c, 0x5b, 0x80, 0x90, 0x4f, 0x0b, 0x1b, 0x8a, + 0xeb, 0x6b, 0x91, 0xb9, 0x0e, 0xee, 0x7d, 0xb1, + 0xfb, 0x3b, 0xa1, 0xd5, 0x08, 0x33, 0x62, 0x31, + 0x92, 0x22, 0x18, 0x77, 0x9e, 0x6d, 0x15, 0x5b, + 0x71, 0x74, 0xee, 0x19, 0xa1, 0x94, 0xd4, 0x84, + 0x26, 0x1c, 0x0a, 0x1a, 0xf0, 0xb7, 0xa9, 0xe3, + 0x94, 0xf1, 0xca, 0x48, 0xe1, 0x38, 0x9e, 0x46, + 0x0f, 0x86, 0x28, 0x79, 0x69, 0x9d, 0x53, 0xf4, + 0xd5, 0x56, 0xc2, 0x49, 0x38, 0x19, 0x3e, 0x49, + 0xae, 0x1f, 0xff, 0x0e, 0x57, 0xff, 0x38, 0x4d, + 0xd2, 0x88, 0xbe, 0xcc, 0xd8, 0x41, 0xa1, 0x1f, + 0x67, 0x1c, 0xf0, 0x16, 0x84, 0xc4, 0x02, 0x4a, + 0xf8, 0x06, 0x56, 0x21, 0xc7, 0x1b, 0x16, 0x7d, + 0xfb, 0xe1, 0xb3, 0xab, 0xfb, 0x9f, 0x6f, 0x39, + 0x7e, 0x46, 0x07, 0xd4, 0x24, 0x3c, 0x82, 0x42, + 0x60, 0xb4, 0x3f, 0xa2, 0x11, 0x7e, 0x0b, 0xe3, + 0xf4, 0xbd, 0x9c, 0x57, 0xa8, 0xaf, 0x2c, 0xf0, + 0xf1, 0x51, 0xe6, 0x8f, 0x8c, 0x96, 0xdd, 0x93, + 0xf6, 0x7e, 0x74, 0x0b, 0x25, 0xa8, 0x30, 0x28, + 0x3b, 0x66, 0xff, 0xac, 0x66, 0x51, 0x65, 0x5b, + 0xe4, 0x6a, 0xe4, 0xac, 0x16, 0xf9, 0x03, 0x65, + 0x10, 0x33, 0x8c, 0x06, 0x94, 0x66, 0x0e, 0x2f, + 0x83, 0x77, 0x96, 0x39, 0x94, 0x11, 0xfd, 0xfe, + 0x59, 0xcc, 0x87, 0x34, 0x01, 0xeb, 0x16, 0x78, + 0x3f, 0x02, 0x12, 0x21, 0x8a, 0x01, 0xac, 0xa8, + 0x9c, 0xc8, 0x98, 0x28, 0xa9, 0x5f, 0x30, 0x3e, + 0xb5, 0xf9, 0xcb, 0xa6, 0xb2, 0xa9, 0xbc, 0xe2, + 0x29, 0x63, 0xc2, 0xc8, 0x1e, 0x9e, 0xa3, 0x7f, + 0x34, 0x62, 0x55, 0x81, 0xae, 0x79, 0xcc, 0x6e, + 0xda, 0xe0, 0xd7, 0xc3, 0x01, 0xb2, 0x1a, 0xac, + 0x1e, 0xcd, 0x3b, 0x0b, 0xf6, 0x6a, 0x15, 0x75, + 0x8e, 0xf4, 0x80, 0xd6, 0xe9, 0x7d, 0xbe, 0xee, + 0x3c, 0x0c, 0xd6, 0x9d, 0xfb, 0xbc, 0x0e, 0xd6, + 0x55, 0xe4, 0xd2, 0x2c, 0xb1, 0xf7, 0xbf, 0xcf, + 0x77, 0x9f, 0xc1, 0xbd, 0x9f, 0x94, 0x78, 0x19, + 0x37, 0x8b, 0x2b, 0x45, 0x25, 0x0d, 0xfb, 0x37, + 0x0e, 0xe3, 0x79, 0xb8, 0x77, 0xf3, 0x6f, 0xa6, + 0x8c, 0x28, 0xae, 0x32, 0xd7, 0x05, 0x94, 0xd8, + 0x8d, 0x7b, 0xc3, 0xfc, 0x85, 0x88, 0x41, 0xc0, + 0x38, 0x9e, 0xce, 0x47, 0x67, 0x23, 0xff, 0xf7, + 0xf7, 0x2f, 0x62, 0xe8, 0x75, 0x92, 0x32, 0x5f, + 0xe3, 0xcc, 0x59, 0xdd, 0x9a, 0xfd, 0x3e, 0xc2, + 0x2a, 0x95, 0xa0, 0xe4, 0xe2, 0x28, 0x83, 0xdc, + 0x27, 0x01, 0xaf, 0x8c, 0x39, 0x5b, 0x6e, 0x0c, + 0xb5, 0x4a, 0x2d, 0xe1, 0x8f, 0xe9, 0x29, 0x3d, + 0x05, 0x7f, 0xf1, 0x29, 0x4b, 0xf9, 0x29, 0x23, + 0x43, 0xcf, 0xd1, 0xd4, 0xd5, 0xcc, 0x83, 0x14, + 0xca, 0x55, 0x8d, 0xfa, 0x99, 0x3d, 0xba, 0xb7, + 0xd1, 0xfe, 0x3c, 0xd8, 0xd8, 0xdb, 0xf0, 0x37, + 0x7e, 0xd9, 0xf4, 0xb6, 0xf7, 0x95, 0x9f, 0x94, + 0xef, 0x63, 0x3b, 0x0a, 0x22, 0x0f, 0x6f, 0x05, + 0xb5, 0x59, 0x0b, 0x3c, 0x19, 0xf8, 0x7e, 0xd6, + 0xa9, 0x3b, 0x44, 0x27, 0x3f, 0x8f, 0x26, 0xf3, + 0x42, 0x26, 0x31, 0x97, 0x28, 0x07, 0xac, 0xf0, + 0x01, 0x78, 0xf4, 0x16, 0x4a, 0x13, 0xe8, 0xe7, + 0x83, 0xbe, 0x9e, 0xbc, 0x78, 0x2c, 0x2d, 0x60, + 0x64, 0x07, 0x43, 0x5c, 0xc7, 0x2a, 0x6d, 0x9d, + 0xe9, 0xac, 0xc2, 0x66, 0x71, 0xd4, 0x2a, 0x8e, + 0xee, 0xe8, 0x1e, 0xd8, 0x4c, 0x81, 0x0a, 0xfa, + 0xeb, 0xdb, 0x7f, 0xef, 0xd3, 0xbd, 0x77, 0xa6, + 0x35, 0xba, 0x9f, 0xf1, 0x1b, 0xbe, 0xb8, 0xe6, + 0x76, 0xc3, 0x77, 0x8e, 0xa7, 0xf6, 0x35, 0x6f, + 0xe6, 0x6f, 0xb5, 0x9f, 0xf0, 0x9a, 0x11, 0x65, + 0xe2, 0x0e, 0x1d, 0xe7, 0x17, 0x8f, 0xec, 0x5f, + 0xad, 0x82, 0x02, 0xb8, 0x0c, 0x3e, 0x27, 0x98, + 0xf7, 0xb6, 0xbd, 0x64, 0x90, 0x04, 0x8f, 0x51, + 0x03, 0xcb, 0x57, 0xf5, 0xd4, 0x20, 0x29, 0x51, + 0xdf, 0xb3, 0xdc, 0xde, 0xe4, 0x9e, 0x01, 0x7e, + 0x9a, 0xde, 0x5e, 0xf5, 0xf5, 0xe3, 0x8a, 0x67, + 0xec, 0xea, 0x3f, 0x94, 0x7f, 0x7a, 0x22, 0xde, + 0x59, 0xca, 0xe9, 0x02, 0xb7, 0x50, 0x47, 0x28, + 0x85, 0x23, 0x38, 0x00, 0xb1, 0x44, 0x78, 0x32, + 0x16, 0x22, 0xb5, 0xa7, 0x0f, 0xa2, 0xf8, 0xf9, + 0xc9, 0x98, 0xb9, 0x3c, 0xfb, 0xef, 0x3f, 0x85, + 0xd9, 0x60, 0x2b, 0xce, 0xd4, 0xc3, 0x0a, 0xee, + 0x60, 0x05, 0x6d, 0xb6, 0x6e, 0xdb, 0x6e, 0xc5, + 0x2c, 0xb5, 0x4b, 0xbc, 0x02, 0x18, 0xa9, 0x12, + 0x80, 0xa7, 0x09, 0xe3, 0xe3, 0x5e, 0xfe, 0x88, + 0x89, 0xbd, 0x37, 0x88, 0x1a, 0x23, 0x84, 0x8c, + 0x38, 0x27, 0x6d, 0x37, 0x85, 0x45, 0x06, 0xbd, + 0x7e, 0x78, 0xce, 0x79, 0xf2, 0x2c, 0xde, 0x50, + 0xab, 0x04, 0xf3, 0xce, 0x22, 0x37, 0x0e, 0xfe, + 0xba, 0xb4, 0x05, 0x98, 0xc9, 0xeb, 0xfc, 0xc1, + 0x39, 0xc3, 0x62, 0x87, 0xa7, 0x93, 0x61, 0x1c, + 0x98, 0x8c, 0x1c, 0xa3, 0xa5, 0xb8, 0xe5, 0x8f, + 0xf8, 0xf7, 0x8e, 0x4b, 0x80, 0xb1, 0x23, 0xff, + 0x88, 0x86, 0x51, 0x94, 0x15, 0xfb, 0x2a, 0x8c, + 0xcf, 0x02, 0x98, 0xf7, 0x36, 0xf5, 0xc0, 0xde, + 0x12, 0x4d, 0x95, 0x36, 0x15, 0x3c, 0xd5, 0xf6, + 0xca, 0xc1, 0x0d, 0xf3, 0xea, 0x03, 0x27, 0xb4, + 0x28, 0x91, 0x4d, 0x49, 0x09, 0x74, 0x3d, 0x89, + 0x68, 0xc3, 0xb9, 0xe4, 0x7c, 0x1e, 0xa0, 0xad, + 0xcb, 0x05, 0x1a, 0xee, 0xdf, 0x9a, 0x40, 0x14, + 0xe8, 0xf1, 0xb1, 0x5b, 0xc6, 0x75, 0xff, 0xfa, + 0xfe, 0xa3, 0x76, 0x86, 0xa5, 0x59, 0xda, 0xd1, + 0xbc, 0x29, 0x32, 0x8d, 0xef, 0x2c, 0xae, 0x19, + 0xfc, 0x5f, 0xff, 0xba, 0xf0, 0x62, 0xe0, 0x7f, + 0x9d, 0x8c, 0x73, 0x8e, 0xa5, 0x0e, 0x31, 0x97, + 0xda, 0xcf, 0x96, 0x0a, 0x8d, 0xe1, 0x34, 0x0f, + 0xe1, 0xb5, 0x7a, 0x71, 0xa3, 0xf8, 0xfd, 0x6d, + 0x35, 0xca, 0xa4, 0x6f, 0xa3, 0xa7, 0x20, 0x66, + 0x75, 0xcb, 0xa5, 0x30, 0x52, 0x24, 0x4d, 0xae, + 0x22, 0xae, 0x6b, 0x35, 0xd0, 0x3e, 0x07, 0xa7, + 0xe8, 0x2b, 0xef, 0x8e, 0x67, 0x39, 0x56, 0xad, + 0xca, 0xaa, 0xb5, 0xd5, 0x30, 0x82, 0x41, 0x3c, + 0xea, 0x94, 0x9d, 0x65, 0x5a, 0x06, 0x5f, 0xbc, + 0x3c, 0x7d, 0xa6, 0x7b, 0x86, 0x9e, 0xa1, 0xe3, + 0x5e, 0xee, 0x67, 0x5d, 0xbd, 0x1b, 0xfa, 0xa1, + 0x2f, 0x83, 0x7b, 0xca, 0x6f, 0xba, 0xeb, 0xce, + 0x4b, 0xd8, 0xfd, 0xf7, 0x9c, 0x7b, 0xce, 0x77, + 0x41, 0x1c, 0x3f, 0x06, 0xef, 0x88, 0x51, 0x83, + 0xea, 0xcd, 0x80, 0x32, 0x9c, 0xc9, 0xeb, 0xfe, + 0x8d, 0xee, 0x23, 0xef, 0xd1, 0xae, 0xf6, 0x43, + 0xfe, 0x01, 0xdd, 0x91, 0x59, 0xad, 0xd1, 0xe0, + 0x8e, 0x32, 0xdf, 0x9d, 0x75, 0x62, 0x4e, 0x41, + 0xcc, 0xc6, 0x62, 0xa0, 0xe3, 0x74, 0xd5, 0xc2, + 0x5c, 0x39, 0xb2, 0x1a, 0xf0, 0x7e, 0x3c, 0xad, + 0x4d, 0x5b, 0x29, 0x6b, 0x16, 0x7c, 0x8d, 0x07, + 0xd4, 0x7c, 0x2f, 0xab, 0x25, 0xb9, 0x08, 0x2f, + 0xbe, 0x90, 0xb2, 0x85, 0xc8, 0x9c, 0xb5, 0xd8, + 0xeb, 0xf2, 0x11, 0xdb, 0x61, 0x3b, 0x6b, 0x8d, + 0xff, 0x07, 0x12, 0x89, 0xbe, 0x6e, 0xf4, 0x55, + 0x6a, 0x86, 0x11, 0xe7, 0xb9, 0xa3, 0xb9, 0x67, + 0x5e, 0xa4, 0x95, 0x6d, 0x25, 0x11, 0x9c, 0xb7, + 0x4a, 0x4e, 0xe9, 0xf5, 0xfa, 0x5b, 0xa2, 0x0e, + 0xe6, 0x26, 0x50, 0x32, 0xa7, 0xb7, 0x50, 0x6e, + 0xfb, 0x12, 0x4b, 0x95, 0x73, 0x80, 0x63, 0xb7, + 0x5f, 0x2f, 0xb7, 0xcb, 0x98, 0x7f, 0x08, 0xe6, + 0xd8, 0x97, 0x47, 0x09, 0xf4, 0xb0, 0x69, 0xe5, + 0xf8, 0x64, 0x24, 0xc1, 0x22, 0x5f, 0x1e, 0x57, + 0xdd, 0x26, 0xfc, 0x6c, 0xbb, 0x8e, 0x6b, 0xa1, + 0x2d, 0x63, 0x6b, 0xfa, 0x3c, 0x5f, 0x62, 0x97, + 0xf4, 0xa5, 0xbf, 0x2f, 0x58, 0x22, 0x2e, 0xca, + 0x6f, 0x62, 0x64, 0x80, 0x4b, 0x66, 0x48, 0x8f, + 0x6b, 0x30, 0xf0, 0x35, 0xc2, 0xcf, 0x44, 0x29, + 0x75, 0x61, 0xfe, 0x3d, 0x8c, 0xe9, 0x2a, 0xf0, + 0xbd, 0x08, 0x87, 0xee, 0x69, 0xbb, 0x05, 0xed, + 0xab, 0xd0, 0xff, 0x6d, 0xc2, 0x15, 0x66, 0xf9, + 0x53, 0x3b, 0x0f, 0x16, 0x34, 0x0d, 0xbb, 0x21, + 0x09, 0xf3, 0x36, 0x4b, 0xee, 0x88, 0x68, 0x0f, + 0x78, 0x3b, 0x56, 0x02, 0x46, 0xca, 0x9a, 0xa8, + 0x2d, 0x3c, 0xbe, 0x53, 0x95, 0x33, 0x25, 0xef, + 0x08, 0xb5, 0x74, 0x33, 0xb0, 0xad, 0x7b, 0xf6, + 0xba, 0x67, 0xb7, 0x6d, 0xdb, 0xf6, 0xee, 0xb3, + 0x7a, 0x2d, 0x8a, 0xd6, 0x4a, 0xfd, 0xfa, 0xe5, + 0xbb, 0x58, 0xa8, 0x6b, 0x7b, 0xdc, 0x94, 0x23, + 0xe9, 0x97, 0xc9, 0x9c, 0x23, 0x7a, 0x50, 0x80, + 0x50, 0x5b, 0x80, 0xb3, 0x07, 0xd1, 0x35, 0xe2, + 0x4b, 0xf0, 0xca, 0x2a, 0xce, 0x9a, 0x73, 0x2d, + 0xf8, 0x9c, 0x66, 0x4d, 0x6d, 0x3f, 0x7b, 0x38, + 0xbe, 0x31, 0xbd, 0x9b, 0x4a, 0x4a, 0xaf, 0x3c, + 0x4b, 0x5f, 0x39, 0x39, 0xf8, 0x8b, 0xb5, 0xe0, + 0x86, 0x79, 0xdd, 0xdc, 0x34, 0x37, 0x0f, 0xc7, + 0x7f, 0x8e, 0xce, 0x02, 0x26, 0x64, 0x77, 0x58, + 0x91, 0x17, 0xd9, 0x50, 0x10, 0xc7, 0x9d, 0xc0, + 0x51, 0x33, 0xde, 0x97, 0xb9, 0x27, 0xb4, 0x50, + 0x80, 0x51, 0x53, 0x80, 0xca, 0x75, 0xe5, 0x8f, + 0x5c, 0xa7, 0x8b, 0xc1, 0x3c, 0x5d, 0xf5, 0x64, + 0x4c, 0x55, 0xb2, 0x3b, 0xe4, 0xf5, 0xc6, 0xad, + 0x4a, 0x57, 0x21, 0x83, 0x31, 0x37, 0xd8, 0x81, + 0xab, 0x8b, 0x07, 0xeb, 0x20, 0x7b, 0xb9, 0x20, + 0x45, 0x2e, 0x91, 0xcf, 0x3b, 0x29, 0xc4, 0x17, + 0x9d, 0x71, 0x81, 0x27, 0x31, 0xaf, 0x01, 0x98, + 0xc2, 0x52, 0x9c, 0x35, 0x4f, 0x69, 0xaf, 0x3e, + 0x53, 0xec, 0x55, 0x6f, 0xde, 0xd4, 0xed, 0xb5, + 0x1d, 0xd4, 0xc0, 0x70, 0xe7, 0x60, 0x9f, 0xd2, + 0xbc, 0xa8, 0xfc, 0x3e, 0x40, 0xbd, 0x07, 0x9e, + 0x35, 0x07, 0xcf, 0xda, 0x19, 0x0b, 0xb6, 0x84, + 0xf6, 0x2e, 0xb3, 0xb9, 0xe0, 0x03, 0x90, 0xa5, + 0xa6, 0x77, 0xa7, 0xbd, 0xfd, 0xac, 0x68, 0xc3, + 0x3a, 0x99, 0x65, 0xbb, 0xb8, 0xb3, 0xa8, 0x86, + 0x7c, 0x15, 0xfb, 0x8e, 0x1d, 0x45, 0x98, 0xd1, + 0x6f, 0xa1, 0xc2, 0x33, 0xc5, 0xd5, 0x27, 0x5b, + 0xcd, 0x0d, 0xf2, 0xd7, 0x66, 0xb7, 0xe4, 0x94, + 0xb7, 0x16, 0x7f, 0xba, 0xad, 0xc8, 0x3b, 0xf8, + 0xf7, 0x9f, 0x54, 0x6b, 0xf8, 0xa0, 0xc7, 0xd0, + 0xe0, 0x25, 0xd0, 0x81, 0xcb, 0x41, 0x19, 0x7e, + 0x4e, 0xf2, 0x11, 0x76, 0x96, 0x7d, 0x13, 0xc6, + 0xcd, 0x50, 0xbb, 0xa4, 0xba, 0xaf, 0x04, 0xc3, + 0x21, 0x45, 0xb3, 0x14, 0xfc, 0x3f, 0xc4, 0x9e, + 0x83, 0x3e, 0x7b, 0x00, 0x70, 0x8a, 0x9d, 0x0b, + 0xa6, 0xf4, 0x65, 0x7d, 0x49, 0x5f, 0xd7, 0x13, + 0xe7, 0x25, 0x23, 0x05, 0x14, 0x6d, 0x40, 0x5a, + 0x65, 0xf0, 0xe4, 0x40, 0xc7, 0xb6, 0xcb, 0x7f, + 0x2f, 0xed, 0x25, 0xf7, 0x46, 0xab, 0x63, 0xd5, + 0xe7, 0x3b, 0x31, 0xe9, 0x3b, 0xb7, 0xb4, 0x56, + 0x9a, 0xcf, 0x91, 0x7f, 0xb3, 0x89, 0xbd, 0xdd, + 0x21, 0xfe, 0xf2, 0x2f, 0xd3, 0x24, 0x4f, 0xce, + 0x92, 0x2d, 0x8c, 0xaa, 0x91, 0x8a, 0x9d, 0x00, + 0x2f, 0x24, 0x61, 0x57, 0xe0, 0x6c, 0xb3, 0xb3, + 0x04, 0xdf, 0xe1, 0x20, 0xc3, 0xa4, 0x8e, 0x96, + 0x9d, 0xc6, 0x01, 0x15, 0x3c, 0xa2, 0x8f, 0xe8, + 0x97, 0xc1, 0xa6, 0xb1, 0xf9, 0xec, 0xf7, 0xff, + 0xfc, 0xfd, 0x0f, 0xff, 0xf5, 0xe7, 0x04, 0xbc, + 0x22, 0xf3, 0x5a, 0xe6, 0x71, 0x86, 0xbb, 0x49, + 0x96, 0xb6, 0x66, 0x5b, 0x43, 0x56, 0xd2, 0x6c, + 0xfe, 0x53, 0x5e, 0x67, 0xe8, 0x4d, 0x84, 0x0c, + 0x0c, 0xaa, 0xe7, 0x7c, 0x6d, 0x3f, 0xe7, 0xc3, + 0xf7, 0xbd, 0xd9, 0xbd, 0x8b, 0x2b, 0xb7, 0xd9, + 0x10, 0x13, 0x5a, 0x85, 0xa5, 0x82, 0x57, 0x8a, + 0xc8, 0xcb, 0xb3, 0x73, 0xec, 0x6b, 0x86, 0xd1, + 0xa8, 0x74, 0x23, 0xb7, 0x83, 0xd9, 0xe1, 0xb4, + 0x9b, 0x72, 0x90, 0xa1, 0x91, 0x7d, 0x87, 0xb3, + 0x71, 0x8e, 0x7e, 0x2d, 0xbc, 0x3a, 0xba, 0x97, + 0xd2, 0xaf, 0x4f, 0x87, 0x98, 0xbf, 0xbe, 0xed, + 0x26, 0x9c, 0x3c, 0x9b, 0x76, 0x26, 0xdd, 0xe5, + 0xc0, 0x80, 0xfd, 0x09, 0x56, 0x9c, 0x13, 0xa5, + 0x97, 0x85, 0x67, 0x09, 0x7b, 0xda, 0x9d, 0x74, + 0x26, 0x99, 0x61, 0x2f, 0x79, 0xb6, 0x49, 0xec, + 0xc4, 0xce, 0x59, 0xe1, 0x89, 0xc0, 0x2a, 0x39, + 0x64, 0xa3, 0xbc, 0xa1, 0x7c, 0x5f, 0x51, 0x8a, + 0xfc, 0x0b, 0x57, 0x73, 0x34, 0x67, 0x9c, 0xe9, + 0x22, 0xfb, 0x90, 0xa0, 0x0f, 0x83, 0x4b, 0x66, + 0x2a, 0xb8, 0xc2, 0x7e, 0xc3, 0x13, 0x6c, 0x22, + 0x30, 0x94, 0xfb, 0x9c, 0x78, 0xa4, 0x66, 0x1e, + 0xe6, 0x50, 0x5f, 0x59, 0xdb, 0x88, 0xea, 0xab, + 0x69, 0x6f, 0xb5, 0x3d, 0x1f, 0xfc, 0xbb, 0xc8, + 0xc4, 0xcc, 0xf3, 0x28, 0x17, 0xa3, 0x7a, 0xa3, + 0xc1, 0xd6, 0x7e, 0x2a, 0xc8, 0x30, 0x90, 0x6b, + 0x78, 0xed, 0x55, 0xe5, 0x06, 0x77, 0x3c, 0xb0, + 0x2c, 0xdd, 0x5c, 0xf2, 0x64, 0xbc, 0x7d, 0x80, + 0x43, 0xb0, 0x93, 0xdc, 0xd9, 0x6a, 0xe0, 0x4c, + 0x0e, 0x1f, 0xe5, 0x5b, 0x4f, 0x7a, 0xfa, 0x30, + 0x15, 0xea, 0x0e, 0x46, 0x2d, 0x19, 0xf9, 0x04, + 0xb9, 0x91, 0x12, 0xa0, 0x39, 0xd7, 0x0f, 0xaf, + 0xfd, 0xb2, 0xb9, 0x31, 0xbe, 0x81, 0x9c, 0xb6, + 0xdf, 0x84, 0x67, 0x9b, 0x70, 0xc7, 0x65, 0xa7, + 0xe4, 0x56, 0x76, 0x41, 0xbf, 0x38, 0xa4, 0xd6, + 0x64, 0x18, 0xdd, 0x49, 0xa0, 0x26, 0xc4, 0xfc, + 0x9c, 0x5d, 0x70, 0x52, 0x4e, 0xa1, 0xa6, 0x38, + 0x15, 0x3b, 0x5e, 0x1d, 0xae, 0x36, 0x9e, 0xaa, + 0x8f, 0x55, 0x2b, 0x69, 0x9d, 0x8c, 0xf3, 0xcf, + 0x75, 0x3e, 0xb0, 0x67, 0xdd, 0x62, 0x27, 0xe4, + 0xac, 0x3c, 0x96, 0xd6, 0x59, 0x57, 0x96, 0xba, + 0x4b, 0xf4, 0x52, 0xd7, 0x50, 0x16, 0xf9, 0x82, + 0xbf, 0xb8, 0x72, 0x4b, 0xf8, 0xf7, 0x98, 0x4f, + 0x89, 0x74, 0xec, 0xf0, 0x41, 0x14, 0x2b, 0x18, + 0x44, 0xaa, 0xfd, 0x48, 0xfe, 0xc3, 0xb7, 0xd2, + 0x4b, 0x8e, 0xce, 0x0d, 0xc9, 0xa0, 0xf9, 0xc1, + 0x18, 0x7a, 0x76, 0x5c, 0xa2, 0x20, 0xd4, 0x41, + 0xe1, 0x5d, 0x0b, 0x8d, 0x54, 0x24, 0xb9, 0x8e, + 0xe6, 0x0c, 0x1f, 0x4d, 0x3f, 0xfe, 0xf7, 0x1f, + 0xdf, 0xf7, 0x44, 0x08, 0xe8, 0xfa, 0x26, 0x5b, + 0xb7, 0x7e, 0x0b, 0x88, 0xe5, 0x2a, 0x07, 0x0d, + 0xc9, 0x2b, 0xee, 0x23, 0x9e, 0x76, 0x66, 0x04, + 0x26, 0x54, 0x94, 0xff, 0x0e, 0x36, 0xd9, 0xa6, + 0xf5, 0xdf, 0xbd, 0x78, 0x3b, 0x75, 0x67, 0x78, + 0xd1, 0x89, 0xbb, 0x63, 0x22, 0xfe, 0x9c, 0xa2, + 0xb9, 0xc3, 0x97, 0xf8, 0x95, 0x4f, 0x68, 0x29, + 0xed, 0x06, 0x46, 0x1b, 0x68, 0xea, 0x70, 0x86, + 0x9a, 0x54, 0xa2, 0x82, 0x42, 0x90, 0x6f, 0xcf, + 0xd3, 0x8f, 0x28, 0x7a, 0x7f, 0xe8, 0xd0, 0x23, + 0xfe, 0x6f, 0x86, 0x9a, 0x10, 0xec, 0xaf, 0xdf, + 0x3c, 0x4e, 0x03, 0x5a, 0xbf, 0xe5, 0xdf, 0xf8, + 0xf1, 0xaa, 0xf5, 0x19, 0x77, 0x7a, 0xa8, 0x40, + 0xc4, 0x27, 0x15, 0xe4, 0xc7, 0x4d, 0x00, 0x2e, + 0xb8, 0xc1, 0x4d, 0xe5, 0xd3, 0xee, 0xa7, 0x0e, + 0x72, 0xe6, 0x72, 0x81, 0xcc, 0x77, 0x27, 0x08, + 0xc6, 0x9f, 0x27, 0xba, 0xe7, 0xc0, 0xfe, 0x2f, + 0x5b, 0x4b, 0xc1, 0xba, 0x35, 0x52, 0x1d, 0xa9, + 0x26, 0x01, 0xc9, 0x10, 0x33, 0x71, 0x38, 0xe3, + 0xe9, 0xbb, 0xdb, 0x7f, 0x5b, 0x7e, 0x57, 0x7e, + 0x53, 0x3a, 0xac, 0x74, 0x4f, 0x81, 0x27, 0x5c, + 0xea, 0x18, 0x3f, 0x5a, 0x3b, 0xc8, 0x09, 0x1c, + 0x5d, 0x19, 0x21, 0x77, 0xdf, 0x14, 0xc9, 0x1c, + 0xf8, 0x02, 0x99, 0x60, 0x5c, 0x2f, 0xed, 0xce, + 0x6f, 0x7c, 0x54, 0xb5, 0x55, 0xb4, 0x47, 0x84, + 0x34, 0xed, 0x75, 0x40, 0xf5, 0x04, 0xd9, 0x44, + 0xf0, 0x1d, 0x51, 0x20, 0xac, 0x0f, 0x01, 0x1c, + 0x2d, 0xa2, 0xd3, 0x43, 0xdd, 0x6f, 0xe9, 0xfd, + 0xee, 0x3d, 0x38, 0xec, 0xd6, 0x3a, 0xff, 0xed, + 0xb3, 0xfb, 0xee, 0xb7, 0x24, 0x6e, 0xc4, 0x8e, + 0x15, 0x33, 0x62, 0x58, 0xe5, 0xdb, 0xd7, 0xe8, + 0x0d, 0x7e, 0x55, 0x75, 0x84, 0xa7, 0xd5, 0x67, + 0x58, 0x89, 0x38, 0xf0, 0x41, 0x43, 0xde, 0xa1, + 0x35, 0x6d, 0x7d, 0x03, 0xe8, 0x03, 0x47, 0x86, + 0x0b, 0xe6, 0x1e, 0x21, 0xe6, 0xe8, 0x81, 0x05, + 0xd6, 0x67, 0x11, 0xbc, 0x04, 0xc4, 0x52, 0x69, + 0x82, 0x9f, 0x7a, 0x57, 0x64, 0xc3, 0x07, 0x63, + 0x14, 0x70, 0xcd, 0x7c, 0xdc, 0x9e, 0x72, 0xe1, + 0xac, 0x71, 0xfb, 0x18, 0xe5, 0xb9, 0x9f, 0x97, + 0x5c, 0x0c, 0x54, 0xf0, 0xce, 0x26, 0x69, 0x46, + 0xfc, 0xe5, 0x1d, 0x7a, 0xa7, 0x97, 0x3d, 0xec, + 0xef, 0x91, 0x61, 0x9e, 0xef, 0xfc, 0x85, 0x10, + 0x7b, 0xb8, 0xa3, 0x6c, 0xf5, 0xfc, 0xc1, 0x6e, + 0x82, 0x8e, 0x76, 0xb5, 0xd6, 0x04, 0xbf, 0x61, + 0x6c, 0xa2, 0xee, 0x37, 0xe8, 0x31, 0x8d, 0xf6, + 0x42, 0x90, 0xd0, 0x2b, 0xa0, 0x65, 0x51, 0xd3, + 0x56, 0x40, 0xc3, 0x37, 0x05, 0x6b, 0x8e, 0xf0, + 0x28, 0xfb, 0x1f, 0xe6, 0x8e, 0x7b, 0x5f, 0x49, + 0x98, 0x69, 0x45, 0xb9, 0x2a, 0x54, 0xe7, 0xdf, + 0x35, 0x8d, 0xe5, 0xe3, 0xca, 0xc6, 0xf2, 0xdb, + 0x32, 0x53, 0xf9, 0x2d, 0xf6, 0x01, 0x5b, 0x92, + 0xd6, 0x4a, 0x64, 0xb5, 0x6c, 0x18, 0x22, 0xa3, + 0x25, 0x46, 0xdd, 0x8a, 0xfc, 0x23, 0xd0, 0x11, + 0xb0, 0xfb, 0xc1, 0x23, 0xb7, 0xa6, 0x9f, 0x4e, + 0xee, 0x4d, 0xf9, 0x4b, 0xfb, 0xa5, 0xb6, 0xdd, + 0x26, 0x7b, 0x30, 0xfe, 0x1a, 0x4a, 0x5d, 0xf0, + 0x8a, 0x66, 0xf8, 0x84, 0x73, 0x23, 0xb8, 0xe6, + 0x20, 0xf2, 0x93, 0xb1, 0x0a, 0x0a, 0xaf, 0xd5, + 0xc0, 0x4f, 0x6c, 0x72, 0xcd, 0x3d, 0x77, 0x4c, + 0x8c, 0xb2, 0x51, 0x3a, 0x2e, 0xef, 0x83, 0x4f, + 0xd2, 0x8f, 0xab, 0x30, 0xd2, 0x26, 0x6d, 0x90, + 0x1c, 0x36, 0xc9, 0x0a, 0xc1, 0x64, 0xad, 0xb4, + 0x65, 0xec, 0xaf, 0x1b, 0x23, 0x7a, 0xc8, 0x45, + 0x6c, 0x25, 0x40, 0xcb, 0x48, 0x8e, 0xd9, 0x8d, + 0x5f, 0x18, 0x09, 0xf9, 0x12, 0x21, 0x63, 0x10, + 0x65, 0xf8, 0x82, 0xfd, 0xdf, 0x7f, 0xaf, 0x70, + 0x44, 0x37, 0xe0, 0x4b, 0x4a, 0xed, 0xa2, 0x15, + 0xde, 0x29, 0x41, 0x6f, 0xff, 0x3a, 0xd4, 0x1e, + 0x83, 0x3b, 0x9a, 0x03, 0xb4, 0x3f, 0x2a, 0x22, + 0xf6, 0x72, 0x77, 0x23, 0xb7, 0xe8, 0xb2, 0x1d, + 0x6b, 0x61, 0xac, 0xbe, 0xf9, 0x4f, 0xdc, 0xe1, + 0x09, 0x76, 0x4a, 0x30, 0xf4, 0x84, 0xfd, 0x05, + 0x74, 0x3c, 0x05, 0x7e, 0xc4, 0x22, 0xaf, 0xfb, + 0x99, 0xa0, 0x01, 0xf8, 0x7b, 0xc3, 0xbf, 0xb9, + 0x7f, 0xd9, 0x9f, 0xde, 0xab, 0xb5, 0x71, 0xae, + 0x62, 0xd6, 0xcb, 0xfa, 0x3a, 0xcc, 0xd4, 0xfd, + 0xc7, 0xf7, 0x7e, 0xb9, 0x77, 0x7c, 0x9f, 0xdf, + 0x3b, 0xfe, 0xee, 0x71, 0xdc, 0x0e, 0x39, 0x18, + 0xac, 0x61, 0x6d, 0x76, 0x37, 0x61, 0x0d, 0x37, + 0x29, 0x7c, 0x47, 0x1b, 0x10, 0xa4, 0x36, 0xd2, + 0x3f, 0xa4, 0x77, 0xb4, 0x7c, 0x98, 0xa9, 0x41, + 0x1e, 0x13, 0x9f, 0x20, 0xe7, 0xc8, 0x14, 0x59, + 0xe6, 0x4b, 0x64, 0x9d, 0x24, 0x48, 0x42, 0xe8, + 0xf6, 0xbe, 0xf7, 0xa4, 0x1e, 0x0c, 0xa1, 0x46, + 0xc9, 0x0f, 0xd5, 0x4e, 0x29, 0x13, 0xca, 0x13, + 0xa1, 0x55, 0x24, 0x66, 0x90, 0xd1, 0x93, 0x41, + 0xa6, 0x96, 0x64, 0xcd, 0xc4, 0x94, 0xaf, 0x57, + 0x26, 0xec, 0xac, 0xfd, 0x5f, 0x6f, 0x6e, 0xb3, + 0x87, 0x47, 0x5f, 0xaf, 0x7c, 0xe6, 0x67, 0xe0, + 0x7f, 0x13, 0x80, 0x1b, 0x9e, 0x20, 0x27, 0x81, + 0x60, 0xdc, 0xa2, 0x08, 0xa8, 0x2b, 0x69, 0xab, + 0xf6, 0x69, 0xc0, 0x5f, 0x09, 0x3b, 0x65, 0x63, + 0x04, 0xc3, 0xca, 0x0f, 0x46, 0x03, 0xe2, 0x24, + 0xfa, 0x9b, 0x24, 0x7c, 0x2f, 0x8a, 0xb3, 0x4a, + 0xc8, 0x65, 0x18, 0x16, 0x59, 0xc2, 0xd3, 0x02, + 0xa5, 0x11, 0x2b, 0xf1, 0xe3, 0xd9, 0xea, 0xd6, + 0xaa, 0xb4, 0xbf, 0x60, 0xb9, 0x5b, 0x68, 0x6d, + 0xca, 0xb4, 0xc8, 0xca, 0xa8, 0xf1, 0x06, 0xe3, + 0x66, 0x7c, 0x44, 0xec, 0x2b, 0x90, 0x0a, 0x05, + 0x11, 0x0e, 0x0e, 0x6d, 0x57, 0xdb, 0xcd, 0x27, + 0xe5, 0x3b, 0x5b, 0xea, 0xb6, 0xa6, 0xd0, 0x58, + 0xd0, 0xa4, 0x1a, 0xfa, 0x74, 0x54, 0xa3, 0xfa, + 0xd5, 0x08, 0xb7, 0x37, 0x83, 0x6a, 0x15, 0x99, + 0x88, 0x88, 0x31, 0xf1, 0xfa, 0xa6, 0xcc, 0xda, + 0xf7, 0xa7, 0x95, 0x58, 0x4b, 0x92, 0x5c, 0x51, + 0x2b, 0xc8, 0xd1, 0xff, 0x29, 0x62, 0xa3, 0xa5, + 0xad, 0x34, 0xa0, 0xcd, 0x34, 0x9f, 0x81, 0xbb, + 0xc0, 0xa3, 0xd9, 0x39, 0x6f, 0x5f, 0xb0, 0xaf, + 0xb8, 0x15, 0x37, 0x16, 0x6a, 0x86, 0x8a, 0x65, + 0xf0, 0x2f, 0x6d, 0x0d, 0xf0, 0xc0, 0x53, 0x38, + 0x74, 0x3c, 0xc2, 0xb3, 0x29, 0xa1, 0xdb, 0x91, + 0xf5, 0x2b, 0xd7, 0xa2, 0xf6, 0x60, 0xec, 0x00, + 0xe3, 0x4f, 0xc3, 0x32, 0x0b, 0xde, 0x52, 0xba, + 0x2f, 0xd9, 0x3d, 0xeb, 0xa1, 0x64, 0x56, 0xbf, + 0xb9, 0x6f, 0xdc, 0xb3, 0x61, 0xfe, 0xdb, 0x43, + 0x79, 0x81, 0x45, 0x61, 0x27, 0xa0, 0x86, 0x79, + 0x25, 0x50, 0x4e, 0x2e, 0x48, 0xb7, 0x27, 0xfd, + 0x3f, 0xe4, 0xe3, 0xca, 0x50, 0x10, 0xe5, 0x08, + 0x30, 0xfe, 0x8c, 0x59, 0xae, 0x69, 0x13, 0x77, + 0x66, 0xda, 0xbe, 0x7a, 0x98, 0x34, 0x27, 0x9f, + 0x3d, 0xd9, 0xe9, 0xc7, 0xcd, 0xc0, 0xa2, 0xc8, + 0x39, 0x7f, 0x4f, 0xda, 0xfb, 0x19, 0x33, 0xc9, + 0x0e, 0x41, 0x6e, 0x09, 0x5e, 0x17, 0xf2, 0x4a, + 0xfa, 0x73, 0x25, 0x64, 0xa2, 0x3d, 0x7a, 0xc2, + 0xfe, 0x0e, 0x46, 0xe3, 0xfb, 0x7c, 0x93, 0xc8, + 0x96, 0xf5, 0x38, 0xbd, 0x2a, 0xac, 0x20, 0x78, + 0xae, 0xa0, 0x55, 0xc0, 0xe2, 0x46, 0x7c, 0x60, + 0x8c, 0x02, 0x0a, 0xef, 0xa1, 0x67, 0x05, 0x07, + 0xa3, 0xb5, 0xe8, 0xd3, 0x01, 0x06, 0x72, 0x0b, + 0x36, 0x75, 0x2e, 0xb2, 0xa5, 0x8d, 0x87, 0xdf, + 0xc7, 0x54, 0xdd, 0xd5, 0xf7, 0xa2, 0x58, 0x2e, + 0x72, 0x8a, 0x72, 0xc1, 0x2d, 0xb0, 0x18, 0x97, + 0xc9, 0x67, 0x1c, 0xb5, 0x2b, 0x1e, 0xa9, 0xd7, + 0x22, 0x33, 0x65, 0x20, 0xf7, 0x7c, 0xea, 0xf8, + 0xba, 0x71, 0xe3, 0xf0, 0xca, 0xc6, 0xe6, 0x3f, + 0xf3, 0x3b, 0x29, 0x27, 0x6b, 0x67, 0x35, 0x19, + 0xd9, 0x06, 0xaf, 0xaa, 0x9b, 0x62, 0xe0, 0x1b, + 0xa3, 0xff, 0x6b, 0x4c, 0x3e, 0x7e, 0x6e, 0x4b, + 0xae, 0x78, 0x8a, 0x5e, 0x4f, 0xca, 0xdc, 0x84, + 0x94, 0xda, 0xb4, 0x5b, 0x00, 0x5f, 0x72, 0xc6, + 0xc9, 0xb0, 0x19, 0xf6, 0x15, 0xd8, 0x41, 0xcc, + 0x3e, 0x08, 0x8d, 0xe8, 0x62, 0xe4, 0x23, 0xef, + 0x02, 0x4a, 0xe2, 0x25, 0xf7, 0x04, 0x82, 0x02, + 0x4d, 0x28, 0x91, 0x31, 0x66, 0xb2, 0x27, 0x05, + 0x9b, 0xd7, 0x96, 0x3b, 0x33, 0x8c, 0xb8, 0x82, + 0xae, 0x53, 0x47, 0xdf, 0x4d, 0xd0, 0x73, 0x74, + 0xaa, 0xbb, 0xac, 0x2c, 0xf1, 0xfe, 0x0e, 0x95, + 0x5e, 0x0c, 0xb1, 0xca, 0x81, 0xe2, 0x57, 0x4c, + 0x05, 0xe6, 0x29, 0x59, 0x03, 0xbf, 0xcc, 0x5b, + 0x17, 0x71, 0x7e, 0x61, 0x61, 0x2d, 0x03, 0xae, + 0x4a, 0xf3, 0x0b, 0xe6, 0x55, 0xf6, 0x25, 0xd3, + 0x58, 0x01, 0xf0, 0x57, 0x41, 0xd8, 0xee, 0x28, + 0xf7, 0x84, 0x19, 0x83, 0xe1, 0x80, 0x84, 0x1e, + 0x5b, 0x94, 0x41, 0x48, 0x31, 0x98, 0xe5, 0xe0, + 0x36, 0x43, 0xec, 0x3d, 0x14, 0xf2, 0xdb, 0x01, + 0x77, 0xb7, 0x6f, 0xd3, 0x8f, 0x93, 0x08, 0x28, + 0x0a, 0xf5, 0x09, 0xfb, 0x61, 0x7d, 0xc9, 0xbe, + 0x58, 0x27, 0x64, 0xf4, 0x78, 0xd2, 0x98, 0x3a, + 0x2e, 0x81, 0x26, 0x07, 0x91, 0x0f, 0xb9, 0x97, + 0xa3, 0xfc, 0x4e, 0x6b, 0x31, 0x58, 0x02, 0x4f, + 0x24, 0xcd, 0x72, 0x60, 0x1b, 0xe6, 0xf8, 0x1d, + 0x76, 0x37, 0xf4, 0x44, 0x86, 0xf8, 0xb6, 0x88, + 0x27, 0x83, 0x96, 0x46, 0x1b, 0xc8, 0xb5, 0xce, + 0xc4, 0xfe, 0x9f, 0x3c, 0xe5, 0x7b, 0xe4, 0x1b, + 0x44, 0xc9, 0x5e, 0x99, 0xf1, 0xee, 0x5b, 0x8d, + 0x10, 0xe5, 0xc2, 0x3c, 0xeb, 0x70, 0xb7, 0x45, + 0xd8, 0xdf, 0x7a, 0xbd, 0x22, 0x3c, 0xc0, 0xbe, + 0x9f, 0x82, 0x1c, 0xd7, 0x38, 0x46, 0x44, 0x84, + 0x86, 0x00, 0xac, 0x0c, 0xb2, 0xa8, 0xd1, 0xc5, + 0x6e, 0x55, 0xec, 0x15, 0x89, 0x37, 0x0c, 0xc0, + 0x1b, 0x77, 0xa8, 0x94, 0xbf, 0xbe, 0xec, 0xc9, + 0xf8, 0xe4, 0x52, 0xfb, 0x23, 0x3a, 0x80, 0x1a, + 0x07, 0xe4, 0x39, 0x8a, 0x5e, 0x46, 0xf8, 0xed, + 0x24, 0xd3, 0x98, 0x4c, 0x27, 0xde, 0x8e, 0xf8, + 0xcf, 0x01, 0x7b, 0x24, 0x01, 0xb1, 0x6e, 0x5b, + 0xc9, 0x7a, 0xa9, 0x53, 0xda, 0x5f, 0x32, 0xef, + 0x75, 0x46, 0xd5, 0x28, 0x2a, 0x5e, 0xe0, 0x29, + 0x65, 0x56, 0xe9, 0x63, 0xaf, 0x54, 0xc8, 0xfc, + 0x10, 0x2b, 0xd8, 0x26, 0x5e, 0x85, 0xcc, 0x05, + 0x65, 0x7b, 0xee, 0x59, 0xf9, 0x17, 0xf2, 0x4b, + 0xf3, 0x59, 0xe2, 0x19, 0xe8, 0x8e, 0x5f, 0x42, + 0x4c, 0x68, 0xe1, 0x40, 0x66, 0x19, 0x7e, 0xd5, + 0xc3, 0xf1, 0x00, 0xed, 0x20, 0xec, 0xea, 0x35, + 0x67, 0x3e, 0xb8, 0x66, 0x5e, 0x38, 0xba, 0xf0, + 0x45, 0xf3, 0x48, 0x57, 0x2e, 0xf0, 0x0b, 0xcf, + 0x2e, 0x3c, 0x9b, 0x7f, 0xf6, 0x30, 0x18, 0x64, + 0x3b, 0x44, 0xbb, 0xb8, 0x82, 0x6c, 0x87, 0x9d, + 0xbc, 0xd8, 0xbf, 0x18, 0x7f, 0x2e, 0x83, 0x14, + 0xa2, 0x2d, 0xac, 0xf0, 0x67, 0xc8, 0x1f, 0x70, + 0xca, 0x8e, 0xb1, 0x5b, 0xd1, 0xe2, 0xc9, 0xbe, + 0x4f, 0x27, 0xa3, 0x97, 0x22, 0x82, 0x39, 0x10, + 0xbd, 0x54, 0xc4, 0x1e, 0x04, 0x59, 0xb7, 0x0a, + 0xff, 0x43, 0x7c, 0x52, 0x01, 0xec, 0x9a, 0x35, + 0x72, 0x1c, 0xbd, 0x29, 0xc1, 0x17, 0xe5, 0xb4, + 0x93, 0xeb, 0x65, 0x5a, 0x31, 0x06, 0x3b, 0xe9, + 0x2d, 0xfe, 0x63, 0xa1, 0xf6, 0xdd, 0x41, 0xfa, + 0xaf, 0xcd, 0x83, 0xb4, 0xb2, 0xc9, 0x6f, 0x3e, + 0xbb, 0xf4, 0xac, 0x20, 0x78, 0xf5, 0x27, 0xa3, + 0x01, 0x92, 0x55, 0x00, 0xfe, 0x35, 0x7c, 0x95, + 0x9a, 0xbf, 0x7f, 0x16, 0x19, 0x83, 0x5f, 0x1e, + 0x7f, 0x42, 0xee, 0xb9, 0x8f, 0x9e, 0xdd, 0x21, + 0xef, 0x9f, 0xb5, 0xdd, 0x8f, 0xe0, 0xd5, 0x77, + 0x44, 0x3c, 0xc1, 0xb6, 0x9d, 0xd0, 0x4b, 0xd5, + 0xb9, 0xe1, 0x5d, 0xa2, 0x25, 0x36, 0x5f, 0x47, + 0x46, 0xe1, 0x7c, 0xfd, 0xa6, 0x3d, 0x6b, 0xcf, + 0xd6, 0x67, 0xa5, 0xce, 0xe1, 0xdb, 0x06, 0xa0, + 0x7a, 0xc1, 0xd5, 0x47, 0xcb, 0x01, 0xff, 0xf7, + 0x60, 0x5f, 0x8a, 0x38, 0x3f, 0xca, 0x5f, 0x36, + 0x98, 0x52, 0x8d, 0x77, 0xdb, 0x18, 0x45, 0xe8, + 0x16, 0x5b, 0x65, 0xae, 0xbb, 0x0b, 0xee, 0x4d, + 0xb7, 0xc6, 0xa3, 0xb3, 0x19, 0xb5, 0xf8, 0x0e, + 0x73, 0x04, 0xdb, 0x5d, 0xf0, 0x0d, 0x05, 0x73, + 0x0d, 0xf0, 0x70, 0x2b, 0x62, 0xdf, 0x81, 0x44, + 0x1e, 0xc4, 0x2d, 0xe4, 0xb9, 0x9e, 0xb6, 0x4e, + 0x59, 0xe4, 0x47, 0x5a, 0x65, 0x55, 0x6b, 0xb5, + 0x1f, 0xcd, 0x03, 0xad, 0x9e, 0x2c, 0x88, 0xfc, + 0x56, 0x14, 0xc5, 0x88, 0x62, 0x05, 0xbd, 0x68, + 0x81, 0x82, 0xd1, 0x02, 0xda, 0xba, 0xc8, 0x59, + 0xcb, 0x12, 0xdc, 0x4b, 0x38, 0x4b, 0x0a, 0x3c, + 0x41, 0x2b, 0xc1, 0x45, 0xd4, 0x92, 0x7f, 0x87, + 0xbd, 0xe8, 0x2f, 0xd1, 0x8b, 0xfb, 0x37, 0xed, + 0xdb, 0x3b, 0x92, 0x51, 0xd6, 0x10, 0x21, 0x72, + 0xe4, 0x1e, 0x50, 0xc1, 0xfd, 0x38, 0xc7, 0xbe, + 0xd2, 0x55, 0x9d, 0x20, 0xf7, 0xa3, 0x85, 0x79, + 0xca, 0x75, 0xf0, 0x35, 0x96, 0xba, 0x63, 0x7f, + 0x9f, 0xde, 0xbb, 0xf8, 0x77, 0xdb, 0xc2, 0xa8, + 0x5f, 0xd1, 0xbe, 0x2b, 0x50, 0xc3, 0x4b, 0xe4, + 0xe1, 0xd3, 0xf0, 0x2b, 0x5f, 0xb7, 0xd7, 0x9d, + 0x97, 0x2c, 0xe6, 0xc4, 0xdc, 0xd3, 0xea, 0xe0, + 0x55, 0x49, 0x3b, 0x3c, 0x06, 0xfb, 0x0c, 0xac, + 0x24, 0xfd, 0x24, 0x62, 0x65, 0xf1, 0x07, 0xad, + 0x52, 0x6b, 0xaa, 0xf5, 0xe7, 0x60, 0x62, 0x9f, + 0x98, 0x15, 0x73, 0xd6, 0xac, 0x38, 0xb3, 0x1b, + 0x95, 0xdd, 0x59, 0x19, 0x83, 0x02, 0x0d, 0xa9, + 0x05, 0xe7, 0xbc, 0x71, 0xae, 0x79, 0x60, 0x8f, + 0x42, 0x2c, 0x7a, 0xd7, 0x9c, 0x8e, 0xce, 0xda, + 0x69, 0x47, 0x0b, 0x34, 0x4f, 0xfe, 0x85, 0xc6, + 0xd1, 0xef, 0xaa, 0x82, 0xed, 0x11, 0x77, 0x04, + 0x7e, 0x3c, 0xcc, 0x11, 0x6f, 0xba, 0x1a, 0x48, + 0xad, 0xc6, 0xb3, 0xee, 0x1c, 0x67, 0xce, 0x6d, + 0x57, 0x72, 0xf2, 0xd1, 0x4f, 0x29, 0x5a, 0x1a, + 0xf8, 0x27, 0xb0, 0xce, 0xee, 0x65, 0x58, 0xa1, + 0x9b, 0xe0, 0x89, 0x3c, 0x70, 0xaf, 0xc8, 0xfc, + 0x6f, 0x50, 0xa4, 0x3a, 0xbb, 0x28, 0x34, 0x16, + 0x1e, 0x0b, 0xf6, 0x85, 0xfa, 0x35, 0xb3, 0x6a, + 0x9f, 0xd9, 0xe9, 0xaf, 0x82, 0xf4, 0x79, 0x12, + 0x4a, 0xa2, 0x9b, 0x10, 0xec, 0xf1, 0x10, 0xa9, + 0x46, 0x8c, 0x7d, 0xcb, 0x04, 0x1f, 0x04, 0xf3, + 0x2a, 0xc8, 0xaa, 0xa1, 0x56, 0x4a, 0x54, 0x64, + 0x08, 0x5f, 0xf2, 0xe0, 0x89, 0x58, 0x21, 0x64, + 0x46, 0x8b, 0x51, 0x2b, 0x86, 0x55, 0x33, 0x7d, + 0xae, 0x70, 0x3f, 0xab, 0x15, 0xb1, 0x61, 0xf1, + 0xbd, 0x67, 0x84, 0xf6, 0x9a, 0xe9, 0x4a, 0xb6, + 0x49, 0xde, 0xdc, 0x0e, 0xe4, 0xff, 0x95, 0x5e, + 0xf6, 0x01, 0x51, 0x0e, 0x1e, 0x22, 0x3b, 0xd1, + 0xc5, 0xeb, 0xeb, 0xe7, 0xf7, 0x11, 0x13, 0xc0, + 0xab, 0xd8, 0x7b, 0x59, 0x11, 0x33, 0x8a, 0x7c, + 0x66, 0xf8, 0x2b, 0x99, 0x81, 0xf5, 0xbe, 0x0b, + 0x6c, 0xe5, 0x0c, 0xcf, 0x92, 0x27, 0x03, 0x95, + 0x02, 0x18, 0xa3, 0x02, 0xdc, 0x89, 0xaf, 0x46, + 0x76, 0x19, 0x1c, 0x8a, 0xe0, 0x32, 0x29, 0x61, + 0xf4, 0x75, 0xc3, 0xda, 0xb0, 0x3e, 0xe7, 0x9b, + 0x64, 0xc3, 0xdb, 0xf0, 0x1a, 0x35, 0xa5, 0x16, + 0xf3, 0x30, 0xd2, 0x7b, 0x9a, 0xc5, 0x0e, 0x86, + 0x6b, 0x37, 0xa9, 0xd0, 0xb1, 0xad, 0x31, 0x9e, + 0x8f, 0x6c, 0xd9, 0x3e, 0xca, 0x64, 0x8a, 0x65, + 0x8d, 0x3f, 0x76, 0x26, 0xcc, 0x84, 0x99, 0xb5, + 0xbf, 0x7b, 0x17, 0x03, 0xd9, 0x24, 0x5e, 0xb2, + 0x9d, 0xae, 0xce, 0xfe, 0xed, 0x63, 0xb9, 0xbe, + 0x47, 0xf0, 0x19, 0x32, 0xae, 0x48, 0xc6, 0xf8, + 0xfb, 0x99, 0xd6, 0x5c, 0xa0, 0x55, 0x5f, 0xbd, + 0x13, 0xde, 0x8d, 0x5d, 0x10, 0xec, 0x3d, 0x1a, + 0xce, 0xbb, 0xd0, 0xa2, 0x5d, 0xe2, 0x35, 0x31, + 0x0b, 0xe7, 0x4d, 0xc2, 0x30, 0x60, 0xac, 0xd3, + 0x84, 0x36, 0xa2, 0x25, 0x93, 0xc2, 0x3a, 0xb7, + 0x52, 0xe0, 0x11, 0x64, 0x02, 0xea, 0x4d, 0x77, + 0xe1, 0x5d, 0xe1, 0x00, 0x7d, 0xe9, 0x54, 0x05, + 0xef, 0x0b, 0xfc, 0xee, 0x00, 0xb9, 0x01, 0x65, + 0x38, 0x40, 0xcb, 0x9a, 0x86, 0xa9, 0x3b, 0x0b, + 0xce, 0xad, 0xdd, 0x27, 0x42, 0xd7, 0xa5, 0x95, + 0x74, 0x1d, 0x11, 0x59, 0xba, 0x2e, 0xd0, 0x99, + 0xf8, 0x59, 0xb3, 0x31, 0x83, 0x74, 0x3b, 0x2f, + 0x7d, 0x0d, 0xf8, 0x5c, 0xb8, 0x8f, 0xe9, 0x2e, + 0x7c, 0x6e, 0xd7, 0x40, 0xb6, 0xbe, 0x87, 0xde, + 0xfe, 0x48, 0x18, 0xeb, 0x8b, 0x83, 0x16, 0x4c, + 0x98, 0xb8, 0x3e, 0x92, 0x35, 0xd4, 0xcf, 0x10, + 0x21, 0x7f, 0x79, 0xfc, 0xdd, 0xf6, 0xcf, 0x29, + 0x7b, 0xf2, 0xe7, 0x1b, 0x8d, 0xab, 0xce, 0x95, + 0xe0, 0x11, 0xfb, 0xcc, 0xd0, 0xf6, 0xb5, 0x07, + 0x13, 0x3b, 0x61, 0x15, 0x09, 0xd8, 0x71, 0x03, + 0x50, 0xb7, 0xa1, 0x3c, 0x0c, 0x92, 0x55, 0x8c, + 0x76, 0x61, 0x2e, 0x9c, 0xc9, 0xfb, 0xdd, 0xaa, + 0x38, 0x69, 0x27, 0xb9, 0xd1, 0xdc, 0x9d, 0x48, + 0xfe, 0x6f, 0xf0, 0xe9, 0xfe, 0xb7, 0x93, 0x35, + 0x9f, 0x9a, 0x6a, 0x67, 0x4a, 0x8d, 0x18, 0x47, + 0x54, 0xb9, 0x78, 0x64, 0x29, 0x95, 0xa3, 0x18, + 0x8b, 0x81, 0xbf, 0x72, 0x5a, 0x3b, 0xa5, 0xe5, + 0x93, 0x98, 0xe3, 0x0b, 0xed, 0xaf, 0x32, 0xdf, + 0x65, 0x60, 0x05, 0x15, 0x91, 0xad, 0x84, 0x2d, + 0x9a, 0x64, 0x82, 0x7d, 0x17, 0xad, 0x51, 0xd6, + 0xf8, 0xee, 0x5d, 0x7c, 0xaf, 0x19, 0x94, 0xdd, + 0x92, 0x5d, 0x76, 0xc0, 0x83, 0xdb, 0x88, 0x61, + 0x0e, 0x08, 0x3c, 0x4d, 0x72, 0xb0, 0x8d, 0x48, + 0x2f, 0x48, 0xc2, 0x3c, 0x97, 0x3c, 0xdb, 0x03, + 0xfc, 0x49, 0x47, 0x04, 0x5f, 0x45, 0xa9, 0x15, + 0x5a, 0xfd, 0x08, 0xc1, 0x5f, 0xfe, 0x09, 0xbe, + 0x47, 0x4b, 0x5a, 0xd1, 0x61, 0x45, 0x64, 0x4b, + 0x0f, 0x57, 0xcc, 0x44, 0x07, 0x63, 0x0c, 0xa4, + 0x3d, 0xcd, 0xa7, 0xfc, 0x92, 0x6f, 0xfb, 0xe4, + 0x4d, 0x2f, 0x6e, 0x06, 0xd8, 0xfb, 0x39, 0xd1, + 0x48, 0x92, 0xa7, 0x5b, 0xaf, 0x00, 0xa7, 0x9f, + 0x07, 0x3d, 0x51, 0xda, 0xb1, 0x1b, 0x88, 0x64, + 0xd2, 0x6c, 0xb2, 0x5d, 0x6a, 0x3f, 0x6c, 0x6b, + 0x8d, 0xac, 0xbd, 0xd6, 0xf9, 0xca, 0x98, 0x37, + 0x2a, 0xfb, 0x25, 0x6f, 0xd9, 0xbc, 0xdc, 0x29, + 0xee, 0x44, 0x1e, 0x3d, 0x78, 0x56, 0x30, 0x5f, + 0x4d, 0x89, 0x7e, 0xda, 0x59, 0x96, 0xd5, 0x8b, + 0x7a, 0x75, 0x5a, 0xc6, 0x55, 0x00, 0x7f, 0xc3, + 0x07, 0xa0, 0xce, 0x2d, 0xb7, 0xf0, 0x28, 0xb6, + 0x8a, 0x3b, 0xe5, 0x86, 0x94, 0xf6, 0x08, 0x31, + 0xca, 0xca, 0xb5, 0x93, 0xd6, 0x0a, 0xaf, 0xaa, + 0x2c, 0x60, 0x3a, 0x78, 0xae, 0x2d, 0xa3, 0x75, + 0xb1, 0x65, 0xec, 0xac, 0xec, 0x18, 0x8d, 0x90, + 0xd9, 0x25, 0xf0, 0x55, 0xa2, 0x0b, 0xf3, 0xe3, + 0xc8, 0x83, 0x38, 0x20, 0x83, 0xbb, 0x20, 0x77, + 0x49, 0xa9, 0x73, 0xee, 0xeb, 0xcb, 0xc1, 0x79, + 0xb0, 0x1e, 0x4d, 0x1f, 0x74, 0x92, 0x9f, 0xe5, + 0xe3, 0x6c, 0x3e, 0x60, 0x00, 0xa1, 0xa4, 0xc4, + 0x6a, 0x42, 0x52, 0x85, 0xd5, 0x10, 0x87, 0xe1, + 0xcd, 0x6b, 0x1f, 0x8a, 0xf8, 0xb3, 0xc2, 0x2a, + 0xe0, 0xeb, 0x96, 0x19, 0x58, 0x5d, 0x17, 0xbe, + 0x93, 0xf8, 0x71, 0x09, 0x66, 0xab, 0x78, 0x7c, + 0x47, 0xb0, 0x76, 0x25, 0x3f, 0xa7, 0x9f, 0x3d, + 0x06, 0x5f, 0x90, 0x25, 0x9c, 0x44, 0x90, 0x52, + 0x19, 0x56, 0x0a, 0x28, 0x43, 0x07, 0xc9, 0x56, + 0xf3, 0xe8, 0x84, 0x9f, 0x49, 0x0b, 0xef, 0x24, + 0x93, 0x6d, 0x44, 0x78, 0x44, 0x60, 0x2d, 0x3c, + 0xd3, 0xfb, 0x14, 0xf4, 0x55, 0x26, 0xc8, 0x6e, + 0x4c, 0x83, 0xbf, 0x97, 0x56, 0x31, 0x5a, 0x9b, + 0xa0, 0xa4, 0x3d, 0x26, 0x74, 0x03, 0x66, 0xf0, + 0x33, 0x7e, 0x4a, 0x2f, 0x04, 0x29, 0x3f, 0x47, + 0x53, 0x7f, 0xce, 0xa8, 0x51, 0x34, 0x0f, 0x3c, + 0x42, 0xac, 0x3b, 0xc2, 0xaa, 0x37, 0x47, 0x77, + 0x4e, 0xb3, 0x11, 0xe7, 0x92, 0x1b, 0x57, 0x07, + 0x30, 0xff, 0x8f, 0x82, 0x0d, 0x74, 0x20, 0x0f, + 0x12, 0x7a, 0xa9, 0xaa, 0x39, 0x6c, 0xa8, 0x46, + 0xa5, 0xbd, 0xb8, 0xba, 0x76, 0x34, 0x67, 0x94, + 0x8c, 0xd2, 0xfe, 0x87, 0xf4, 0xd6, 0xd5, 0xe5, + 0x07, 0x0f, 0xbe, 0x37, 0xd5, 0x28, 0x07, 0xd4, + 0x0c, 0x39, 0x03, 0xe7, 0xc8, 0x16, 0x56, 0x56, + 0xd5, 0x68, 0x2d, 0xe5, 0x21, 0x7e, 0xd6, 0x94, + 0x6c, 0x30, 0x6e, 0x34, 0xbc, 0x8c, 0x97, 0x6e, + 0x64, 0x5e, 0x9f, 0x73, 0xfe, 0xfb, 0x1f, 0x29, + 0x27, 0xe3, 0xa4, 0x61, 0xfe, 0x6e, 0x26, 0xa5, + 0xf7, 0x24, 0xfc, 0xa7, 0xc6, 0x8c, 0x9f, 0x31, + 0x67, 0x58, 0x1a, 0x70, 0x6e, 0xda, 0x49, 0x79, + 0xb3, 0xe4, 0x8e, 0x2a, 0xef, 0x68, 0x39, 0x30, + 0xac, 0x35, 0x6e, 0x58, 0xf7, 0x83, 0x33, 0xc7, + 0xf9, 0xbd, 0xbf, 0x04, 0xe4, 0x78, 0x74, 0x97, + 0xfc, 0x90, 0xf8, 0x11, 0x91, 0xea, 0x22, 0x5f, + 0xf1, 0x8a, 0xb5, 0x19, 0x96, 0x0a, 0x66, 0x0c, + 0x63, 0x7f, 0xbb, 0x4d, 0xde, 0x68, 0xed, 0x4c, + 0xad, 0x68, 0x56, 0x93, 0x32, 0xea, 0x92, 0x3a, + 0x7a, 0x85, 0xb3, 0x0b, 0xf7, 0x3d, 0xc1, 0xae, + 0xd1, 0x4d, 0x2d, 0xa5, 0xa5, 0x7e, 0x1a, 0x4f, + 0x52, 0x91, 0xd7, 0x90, 0x9c, 0x04, 0xbc, 0xeb, + 0xd3, 0xde, 0x0a, 0x22, 0x78, 0xfb, 0xac, 0x53, + 0xd7, 0xc9, 0xcf, 0x53, 0xf8, 0x5a, 0xd4, 0x36, + 0xd6, 0x2b, 0x0e, 0x5a, 0x32, 0xd8, 0x78, 0xf6, + 0x6a, 0x2f, 0x13, 0xe4, 0x7d, 0xed, 0x97, 0xc2, + 0x6e, 0xed, 0x9f, 0x98, 0x3d, 0x94, 0x08, 0x6a, + 0x5b, 0x1d, 0xea, 0xae, 0x51, 0x64, 0x58, 0xe2, + 0x31, 0x4f, 0xe7, 0x69, 0x45, 0x7a, 0x5e, 0x74, + 0xa5, 0x8d, 0xf8, 0x6a, 0x88, 0xaf, 0x00, 0xf6, + 0xbe, 0xe9, 0x0f, 0xe9, 0x95, 0x60, 0xc9, 0xbf, + 0xa8, 0xdd, 0xfc, 0xf3, 0x90, 0x1a, 0xe6, 0xbc, + 0xc0, 0x8e, 0x82, 0xa5, 0x04, 0x6f, 0x63, 0xb2, + 0xf3, 0xdf, 0x3c, 0xd5, 0x49, 0xf9, 0xe9, 0xd7, + 0x9a, 0x6b, 0xee, 0x47, 0xb8, 0x2e, 0x69, 0xa1, + 0x06, 0x40, 0x3e, 0xf2, 0x3d, 0xb7, 0x72, 0x3c, + 0x4c, 0x46, 0x3a, 0x97, 0x8d, 0x38, 0x68, 0x7e, + 0xad, 0xa5, 0xb5, 0x00, 0xd3, 0x75, 0xce, 0x3d, + 0x1e, 0x7d, 0x5c, 0x3e, 0x5e, 0xe6, 0xe5, 0x63, + 0xc0, 0x93, 0x8f, 0x47, 0xd0, 0x17, 0x35, 0x95, + 0x13, 0x3e, 0x57, 0xbf, 0x56, 0xb3, 0x8f, 0x37, + 0xa2, 0xdc, 0x14, 0x66, 0xa7, 0x6c, 0x66, 0x5b, + 0x76, 0xeb, 0xa5, 0x12, 0x57, 0xe3, 0x6a, 0x4c, + 0x48, 0x5d, 0x1c, 0xa4, 0xfc, 0x91, 0xf1, 0x25, + 0x1c, 0x9f, 0x75, 0xfe, 0xed, 0xb1, 0xd3, 0xfa, + 0x32, 0xd8, 0x6a, 0xc5, 0xac, 0xd3, 0x66, 0x3e, + 0x19, 0x59, 0x49, 0x98, 0x21, 0x6b, 0xda, 0x9a, + 0xe2, 0x93, 0xe0, 0xa5, 0xf4, 0x22, 0x09, 0x44, + 0x56, 0x62, 0xd2, 0x36, 0xac, 0x7e, 0x67, 0xca, + 0xb9, 0x7a, 0x00, 0xde, 0x97, 0xff, 0xd9, 0xca, + 0xa3, 0x63, 0xc1, 0x2c, 0x08, 0xb1, 0x99, 0x22, + 0x6a, 0x49, 0x57, 0x01, 0x71, 0xae, 0x46, 0x5c, + 0x78, 0x64, 0xc0, 0xcb, 0x0c, 0x2f, 0x7a, 0x00, + 0xab, 0x84, 0x51, 0xf0, 0xa9, 0x2e, 0xf3, 0x47, + 0x22, 0xbf, 0x3f, 0xe3, 0x2a, 0x3d, 0xe6, 0x0f, + 0x7a, 0xfc, 0x18, 0xb1, 0x99, 0x66, 0x53, 0x41, + 0x89, 0x19, 0x6c, 0xa0, 0x7a, 0xf4, 0x44, 0xd5, + 0x1b, 0x7e, 0x7d, 0xb9, 0x3a, 0x7c, 0x70, 0xa6, + 0x76, 0x29, 0x2f, 0xeb, 0x62, 0x48, 0x9d, 0x88, + 0x48, 0x3c, 0xc6, 0xe2, 0x89, 0x88, 0x31, 0x64, + 0xb6, 0x5e, 0x59, 0x31, 0x11, 0x65, 0x8a, 0x6a, + 0x0f, 0x3f, 0x79, 0x9b, 0xb4, 0x2e, 0xb7, 0x86, + 0x5a, 0xc9, 0xad, 0xc1, 0x88, 0x7b, 0x4c, 0xb9, + 0xb9, 0x82, 0x79, 0xe8, 0x9b, 0x46, 0xf4, 0x15, + 0xf6, 0x2f, 0xbf, 0x08, 0x9f, 0xfe, 0x58, 0x78, + 0xa9, 0x31, 0x94, 0x9c, 0x20, 0x7d, 0x5c, 0x08, + 0x39, 0x81, 0x1a, 0xc8, 0xa1, 0xae, 0x7c, 0x22, + 0xae, 0x39, 0x4e, 0x67, 0x29, 0x56, 0x58, 0x29, + 0x16, 0x46, 0x41, 0x04, 0x4b, 0x1d, 0x2b, 0x23, + 0x5a, 0x8b, 0x32, 0x47, 0x1f, 0x46, 0x6b, 0xa3, + 0x78, 0xed, 0x40, 0x66, 0x5c, 0x89, 0xf0, 0xe4, + 0xd0, 0x11, 0xd6, 0x2c, 0x88, 0x7c, 0xd4, 0x41, + 0x8c, 0xc5, 0x99, 0x8a, 0x35, 0x53, 0xb8, 0x17, + 0xc4, 0x00, 0xe9, 0x39, 0xaa, 0x30, 0x51, 0x89, + 0x27, 0xf8, 0xbe, 0x11, 0xe3, 0x37, 0xf2, 0xf1, + 0x72, 0x81, 0x69, 0x39, 0x47, 0x92, 0xb3, 0x9d, + 0xb6, 0xb1, 0x2e, 0x93, 0x5a, 0x92, 0x61, 0x85, + 0x5c, 0x63, 0xd5, 0x3a, 0xdd, 0x1d, 0x11, 0x31, + 0x07, 0xd2, 0x46, 0x0f, 0x77, 0x8e, 0x3e, 0x10, + 0xb6, 0x7b, 0xb8, 0xfb, 0x92, 0xae, 0x33, 0x18, + 0x7c, 0xdd, 0x5d, 0x77, 0xef, 0x39, 0xdf, 0x3a, + 0xf0, 0xb9, 0x4e, 0x42, 0x30, 0x8e, 0xde, 0x8f, + 0x06, 0x48, 0xfd, 0xd5, 0x97, 0x2c, 0xf8, 0x8a, + 0xcc, 0x9f, 0xae, 0xcc, 0xa5, 0x46, 0x44, 0x21, + 0x45, 0xd4, 0xf1, 0x01, 0x82, 0x3a, 0x20, 0xad, + 0x0a, 0xfc, 0x05, 0x78, 0x5a, 0xbf, 0xf2, 0xe8, + 0x89, 0x85, 0xfa, 0xac, 0xd9, 0x20, 0xee, 0x3d, + 0x77, 0xd9, 0x39, 0xef, 0x4c, 0x9b, 0x93, 0xac, + 0x64, 0xda, 0x0e, 0x71, 0xa7, 0x42, 0xd4, 0x27, + 0x3d, 0x60, 0xf0, 0x9c, 0xc9, 0x24, 0x59, 0x22, + 0x46, 0x18, 0x74, 0x11, 0xd2, 0xce, 0x24, 0xcf, + 0x02, 0xae, 0xce, 0xbd, 0xe4, 0x26, 0x9c, 0xa1, + 0xda, 0x29, 0xe4, 0xf9, 0x91, 0x98, 0x3a, 0x24, + 0xa6, 0x39, 0x07, 0x78, 0x0d, 0x2b, 0xb5, 0xe6, + 0xea, 0x43, 0x44, 0x44, 0x82, 0x6a, 0x3a, 0xd3, + 0x1d, 0xdb, 0xfd, 0x4c, 0x8d, 0xf8, 0x75, 0x9f, + 0x04, 0x0c, 0x99, 0xb7, 0x38, 0x1b, 0xa2, 0x8a, + 0x73, 0x96, 0xc9, 0xdc, 0x53, 0x4c, 0x68, 0xe0, + 0x4b, 0xad, 0xb8, 0x75, 0xc6, 0xfc, 0x3a, 0x89, + 0xdc, 0xda, 0x74, 0xbb, 0x68, 0xa9, 0x2c, 0x4f, + 0x45, 0xad, 0xa5, 0xa3, 0xd8, 0x0d, 0xac, 0xd8, + 0x06, 0x4c, 0xfd, 0xea, 0x59, 0x6a, 0x8b, 0x3a, + 0xda, 0xe1, 0x84, 0xfd, 0x27, 0xf4, 0x9d, 0x7a, + 0x7c, 0xa4, 0xea, 0x4e, 0x75, 0x47, 0x75, 0x13, + 0xf5, 0x94, 0x52, 0x11, 0x9e, 0x81, 0x5a, 0x25, + 0x82, 0x0f, 0x1c, 0x56, 0xaf, 0xec, 0x6a, 0x5b, + 0x80, 0x0d, 0xe9, 0x4c, 0x77, 0xa6, 0x95, 0xe6, + 0xdb, 0xe4, 0x34, 0xdc, 0xdb, 0x9f, 0x4c, 0xb9, + 0x82, 0x85, 0x40, 0x83, 0x35, 0xf9, 0x52, 0xac, + 0x95, 0x58, 0x29, 0x46, 0x0f, 0xe6, 0x6a, 0x0f, + 0xa6, 0x43, 0x0b, 0xeb, 0x3e, 0xf7, 0x34, 0x2f, + 0xf9, 0x26, 0xdd, 0xc1, 0xdc, 0xd3, 0x79, 0x61, + 0x43, 0xd7, 0xed, 0x11, 0xb4, 0xa1, 0x94, 0x78, + 0x23, 0x9e, 0x38, 0x0b, 0xf7, 0xfa, 0xca, 0x23, + 0x7f, 0x3d, 0xdf, 0x5d, 0xf6, 0x4a, 0xd4, 0xee, + 0xf9, 0x38, 0x61, 0x86, 0x37, 0xc0, 0x0c, 0x2f, + 0xe1, 0xe7, 0x05, 0x0b, 0xc4, 0x16, 0x71, 0x06, + 0x86, 0xf5, 0x7d, 0x54, 0x8e, 0xfe, 0x4f, 0xf8, + 0xb3, 0x9c, 0x0d, 0x29, 0x77, 0xc8, 0x65, 0x98, + 0x7d, 0x2f, 0xa6, 0xa3, 0xbc, 0xc7, 0xba, 0x04, + 0xbc, 0x84, 0xf5, 0x66, 0x8c, 0x74, 0x25, 0x63, + 0xa1, 0xc7, 0x36, 0x14, 0x15, 0xb3, 0xa2, 0xca, + 0x5b, 0xbc, 0x7f, 0xe4, 0x4d, 0x54, 0x38, 0xc2, + 0xd2, 0xca, 0x11, 0x13, 0xff, 0xe0, 0xbb, 0x22, + 0xfe, 0xdf, 0x8b, 0x21, 0x03, 0x4a, 0x17, 0xd8, + 0x20, 0x41, 0xc6, 0xc8, 0x4b, 0x2e, 0xaf, 0x23, + 0x11, 0x88, 0xb2, 0x09, 0x25, 0xbd, 0x95, 0x06, + 0x29, 0xc5, 0x6c, 0x69, 0xd6, 0x99, 0x72, 0x9e, + 0x7b, 0xe9, 0xdd, 0xac, 0x36, 0x91, 0xa4, 0x07, + 0x38, 0xcf, 0x51, 0xc6, 0x44, 0xb5, 0x48, 0xad, + 0xf0, 0xfa, 0x89, 0xa8, 0x7e, 0x92, 0x51, 0x81, + 0xa1, 0xb0, 0x52, 0xfe, 0x9e, 0x32, 0x07, 0xbe, + 0xc9, 0x68, 0x77, 0x44, 0xc9, 0xf0, 0xd9, 0x13, + 0xb8, 0x2e, 0xda, 0xdd, 0xa9, 0xe3, 0x02, 0x66, + 0x54, 0x2d, 0x8c, 0x73, 0xce, 0x3b, 0xb3, 0x96, + 0xcc, 0xe1, 0x2a, 0xad, 0x55, 0x40, 0x20, 0x4d, + 0x1e, 0xb3, 0xca, 0xa0, 0x47, 0x2a, 0x42, 0xab, + 0x49, 0x0f, 0x5e, 0xfa, 0xce, 0x18, 0xbd, 0x40, + 0x0f, 0x92, 0x00, 0x72, 0xfe, 0xc0, 0x35, 0xb8, + 0x01, 0xa8, 0xe3, 0x83, 0xd6, 0x8a, 0xac, 0x2b, + 0x87, 0x7b, 0xc9, 0x92, 0x0c, 0x99, 0xe3, 0xbf, + 0x67, 0xe8, 0xcf, 0x24, 0xd8, 0x32, 0x3f, 0xe7, + 0x4e, 0x84, 0x3c, 0x64, 0x0a, 0x9a, 0x2e, 0xd1, + 0xbd, 0x0d, 0x5e, 0xce, 0x22, 0x8f, 0x87, 0xb5, + 0x2d, 0x4c, 0x99, 0xb7, 0xab, 0x7b, 0xf6, 0x9e, + 0x22, 0xd8, 0x80, 0x17, 0x8c, 0x87, 0xc7, 0x29, + 0xe3, 0xda, 0xf1, 0xa6, 0x91, 0xe5, 0x33, 0x4c, + 0xfa, 0x68, 0x13, 0xe6, 0x1f, 0x92, 0x8a, 0x88, + 0x97, 0x92, 0x16, 0x48, 0x5b, 0xf7, 0xd3, 0x5e, + 0xce, 0x4b, 0x51, 0x74, 0xb7, 0x58, 0xbd, 0x53, + 0x55, 0x06, 0x7a, 0x28, 0x88, 0x6a, 0xbd, 0x23, + 0xc4, 0x75, 0x83, 0x55, 0x60, 0xbf, 0x3e, 0x2b, + 0xd7, 0x78, 0x48, 0xf9, 0x55, 0x07, 0x06, 0xd8, + 0xfb, 0x58, 0xed, 0x93, 0x22, 0xb3, 0x04, 0xcf, + 0xca, 0xea, 0x1f, 0xd0, 0x76, 0xfc, 0x92, 0xd0, + 0x48, 0xe8, 0x27, 0x61, 0xc5, 0x73, 0x1a, 0x70, + 0x60, 0xdf, 0xb7, 0x4a, 0xdb, 0x97, 0xec, 0x4f, + 0x9d, 0x82, 0x88, 0xa8, 0x61, 0x4c, 0x4d, 0x32, + 0x43, 0x30, 0xe7, 0x41, 0x30, 0xaf, 0xc9, 0xae, + 0x74, 0x37, 0x8d, 0x89, 0xb7, 0xb9, 0xb0, 0xaa, + 0x2a, 0x7b, 0xac, 0x89, 0x8a, 0x2a, 0xe6, 0x5d, + 0xa0, 0x73, 0xb4, 0x08, 0x1e, 0xa2, 0x41, 0x65, + 0xbf, 0x09, 0xd2, 0xaf, 0xdf, 0x47, 0x26, 0x13, + 0xc7, 0x6c, 0x23, 0x5e, 0x9b, 0x8c, 0xdb, 0x68, + 0x20, 0x07, 0x0b, 0xbb, 0x1f, 0xf5, 0xac, 0x15, + 0xd6, 0x28, 0xf4, 0x75, 0x2b, 0x7c, 0x67, 0x98, + 0x03, 0x94, 0xd9, 0x07, 0xcb, 0x7e, 0xec, 0x7e, + 0xec, 0xde, 0x26, 0xb7, 0xdd, 0x3b, 0x76, 0xd5, + 0xb0, 0x0d, 0x27, 0xac, 0x4b, 0x0c, 0xd9, 0x86, + 0x9c, 0xda, 0x0d, 0x64, 0x83, 0x98, 0x69, 0x0a, + 0x5a, 0x7e, 0x37, 0xbd, 0xab, 0xed, 0x69, 0x7b, + 0x13, 0x3f, 0xf5, 0xaa, 0x1b, 0x38, 0xf6, 0x28, + 0xc0, 0xbc, 0x3e, 0x0e, 0xf8, 0x5f, 0x4f, 0x62, + 0xaf, 0xbc, 0x29, 0x02, 0xce, 0x5b, 0xf6, 0x4b, + 0xf2, 0xab, 0xf1, 0xa1, 0xf1, 0x9f, 0x7e, 0xa6, + 0x3b, 0x0e, 0xb2, 0x2d, 0x49, 0x81, 0xa0, 0x63, + 0xfb, 0x63, 0x7a, 0xbd, 0xdb, 0x8c, 0x38, 0x92, + 0x80, 0xbd, 0xc7, 0x5a, 0xd2, 0x4f, 0x2c, 0x74, + 0x9f, 0x3e, 0x18, 0x3e, 0x40, 0x2e, 0x4f, 0x3f, + 0x06, 0xa5, 0x20, 0x2f, 0x97, 0x09, 0x1b, 0x2b, + 0x72, 0x36, 0xd9, 0xae, 0xc8, 0x68, 0xb7, 0x87, + 0xf4, 0xe4, 0xb4, 0xf4, 0xe9, 0xd0, 0x9b, 0xfa, + 0x9d, 0xbd, 0x69, 0x6f, 0x3a, 0x9f, 0xa3, 0x6f, + 0xd7, 0x6e, 0x78, 0x51, 0x95, 0x90, 0x62, 0xd5, + 0x91, 0x9d, 0x1e, 0xd4, 0xab, 0x77, 0xf9, 0x1d, + 0xfb, 0x5b, 0xe4, 0x12, 0x3b, 0xa0, 0x46, 0x1b, + 0xb9, 0x1f, 0x25, 0x63, 0xf0, 0x3b, 0x0e, 0xd8, + 0xb3, 0xfb, 0xd2, 0xb9, 0xdd, 0xb5, 0xc2, 0x9f, + 0xf1, 0xc8, 0x09, 0x89, 0xed, 0x71, 0x7b, 0xac, + 0xab, 0x30, 0x44, 0x9e, 0xc5, 0xa3, 0x6e, 0x6a, + 0x25, 0xf7, 0x23, 0x95, 0x3d, 0x07, 0xba, 0xa8, + 0x3b, 0x13, 0xde, 0xd8, 0xc6, 0xf3, 0x0d, 0x35, + 0x79, 0x52, 0xb7, 0xf7, 0x2b, 0x83, 0xf1, 0xae, + 0x46, 0x58, 0x9a, 0x7e, 0x95, 0x4c, 0x63, 0x1d, + 0x81, 0x7d, 0x5a, 0x89, 0xfa, 0x06, 0xd4, 0x41, + 0x87, 0x82, 0x1f, 0x05, 0xb2, 0xb1, 0x65, 0x45, + 0xac, 0xa1, 0xab, 0x82, 0xc3, 0x9c, 0xb0, 0x2a, + 0x60, 0x1b, 0x46, 0x82, 0xa6, 0x9b, 0x70, 0x0b, + 0x76, 0xd1, 0xf9, 0xc4, 0x5c, 0x05, 0x7b, 0x74, + 0xca, 0xc5, 0xbc, 0x33, 0xcd, 0x67, 0x8e, 0x04, + 0xda, 0x6c, 0x4f, 0x74, 0xaf, 0xfb, 0x57, 0xdf, + 0x5e, 0xe1, 0x8f, 0x48, 0x1f, 0x6f, 0xc8, 0x3e, + 0x18, 0x77, 0x08, 0xe6, 0xf8, 0x94, 0x30, 0x36, + 0x32, 0xcb, 0xc0, 0x97, 0xd0, 0x6d, 0xa1, 0x45, + 0x1f, 0x82, 0x7d, 0x44, 0xaf, 0xd3, 0xb6, 0x46, + 0x79, 0xde, 0x8a, 0xd8, 0xef, 0x15, 0x91, 0x79, + 0x54, 0xad, 0x2a, 0xfc, 0x26, 0x17, 0x5c, 0xb6, + 0xd7, 0xed, 0x04, 0x5c, 0x15, 0x9c, 0x6d, 0x93, + 0x76, 0x82, 0x5e, 0x96, 0x5c, 0x26, 0xf1, 0xb9, + 0x95, 0xc0, 0x68, 0xaf, 0x77, 0x47, 0xfc, 0xed, + 0xb7, 0xa3, 0xfc, 0x2c, 0x19, 0x87, 0xcf, 0x05, + 0x5c, 0x9f, 0x97, 0x9a, 0x41, 0x6f, 0xcd, 0x07, + 0xf3, 0x7a, 0x59, 0x9f, 0xff, 0x79, 0xfe, 0xc5, + 0xda, 0xdf, 0xe6, 0xb5, 0xf9, 0x77, 0xf3, 0x9a, + 0xae, 0x3e, 0x10, 0xbc, 0xbe, 0xb1, 0x03, 0xac, + 0x80, 0x46, 0xfe, 0xd5, 0xc2, 0xeb, 0x87, 0x83, + 0x35, 0xcd, 0x58, 0x61, 0x14, 0x66, 0x9e, 0x56, + 0xeb, 0x8b, 0x9d, 0xb2, 0xa8, 0x7d, 0x41, 0x99, + 0x55, 0x6b, 0x60, 0x71, 0xc8, 0x60, 0x6d, 0x78, + 0x85, 0x9f, 0x3e, 0x40, 0xf9, 0x28, 0x74, 0x65, + 0xed, 0xaa, 0xe8, 0x29, 0xa1, 0x64, 0xde, 0x8c, + 0xfb, 0x7f, 0xf2, 0x97, 0xf7, 0x27, 0xf7, 0xd3, + 0xfe, 0x94, 0xbf, 0xac, 0x7f, 0xbb, 0x97, 0x7e, + 0x9b, 0xa9, 0x9f, 0x97, 0x7e, 0x0a, 0x4b, 0x70, + 0x0d, 0xb0, 0x6c, 0x51, 0xf9, 0x42, 0xd4, 0x53, + 0x09, 0x86, 0x86, 0x93, 0xdf, 0x38, 0xbb, 0xfb, + 0x0d, 0xec, 0x94, 0xcc, 0x9b, 0xff, 0xf4, 0x97, + 0xdf, 0x14, 0xf6, 0xfe, 0x93, 0x67, 0x6a, 0xb3, + 0x4c, 0xb2, 0xd5, 0xfb, 0x99, 0x9e, 0xcc, 0x9b, + 0x7f, 0x81, 0x77, 0x1d, 0xf7, 0x9b, 0x7b, 0xa3, + 0x2b, 0x57, 0xda, 0xa7, 0x42, 0xc9, 0x54, 0xf7, + 0x87, 0x85, 0x6f, 0xa5, 0x81, 0x65, 0xd6, 0x82, + 0x8a, 0xfd, 0xad, 0x59, 0xfa, 0xa9, 0xd2, 0x25, + 0x2d, 0x78, 0x55, 0x6b, 0xac, 0xc7, 0x73, 0x83, + 0x39, 0x6d, 0x8d, 0xd6, 0x31, 0xea, 0xd4, 0x67, + 0x29, 0xcf, 0x6c, 0x45, 0x79, 0x3a, 0xd4, 0xed, + 0xbf, 0x25, 0xc6, 0xfe, 0xa2, 0xa7, 0x36, 0x72, + 0xaf, 0x27, 0x9d, 0xe2, 0x17, 0x95, 0xc3, 0x8f, + 0x9d, 0x8f, 0xb6, 0x6c, 0x2f, 0x95, 0x8c, 0xa2, + 0x1f, 0xa8, 0x69, 0x64, 0x9c, 0x58, 0x66, 0x27, + 0xa2, 0xbd, 0x2f, 0x7b, 0x4a, 0xd8, 0x16, 0x72, + 0x2b, 0x71, 0x3f, 0x3d, 0x0c, 0xec, 0xb6, 0xdd, + 0x7e, 0xa9, 0xc7, 0xc5, 0x5e, 0x88, 0xb7, 0xd2, + 0x1e, 0xd6, 0x4f, 0x0d, 0xa2, 0xfb, 0xc1, 0x9e, + 0x12, 0x68, 0x8f, 0x42, 0xfe, 0x7b, 0x40, 0xd5, + 0xcc, 0x5b, 0xc4, 0x4f, 0x73, 0x6f, 0x99, 0x1a, + 0x65, 0xa6, 0xf0, 0x75, 0x92, 0x3d, 0x17, 0x7d, + 0xd7, 0xed, 0xa8, 0x02, 0x14, 0xfb, 0x3a, 0x34, + 0x5a, 0xa9, 0x7f, 0xa4, 0xf4, 0x0f, 0xff, 0x86, + 0xac, 0xb3, 0xcf, 0xfe, 0xf6, 0x48, 0x8f, 0x72, + 0xd6, 0xbf, 0xaa, 0x41, 0x08, 0x39, 0xdf, 0x03, + 0xf9, 0x6e, 0xc1, 0x37, 0x4b, 0x93, 0x5b, 0xc7, + 0xf8, 0xda, 0x47, 0xfe, 0xa3, 0x63, 0x91, 0x03, + 0x16, 0x79, 0xe7, 0x7b, 0xb4, 0x74, 0x04, 0x7e, + 0x26, 0x78, 0x66, 0x89, 0x60, 0x1a, 0xb0, 0x6e, + 0x69, 0x00, 0xe5, 0xe2, 0x0e, 0x1b, 0x0b, 0xb0, + 0x82, 0xe8, 0x32, 0xd6, 0x4b, 0x88, 0x9d, 0x1e, + 0xc6, 0x4e, 0x94, 0x70, 0x15, 0xc0, 0x16, 0xc9, + 0x5a, 0x12, 0x12, 0x1d, 0xee, 0x59, 0xf7, 0x65, + 0x54, 0xbd, 0xa2, 0xa4, 0x00, 0x63, 0x64, 0x88, + 0x86, 0x1c, 0x37, 0x43, 0xeb, 0x4c, 0x49, 0x3e, + 0x70, 0xcf, 0x5f, 0x18, 0xac, 0xc8, 0x12, 0xc3, + 0xec, 0x65, 0x6a, 0x2c, 0x0d, 0xbc, 0x14, 0xe4, + 0x75, 0x60, 0xf7, 0x9e, 0x44, 0xb0, 0xac, 0x9f, + 0xd3, 0x27, 0xf4, 0xb1, 0x95, 0x2d, 0xa9, 0xcd, + 0x40, 0x63, 0x11, 0xc9, 0x28, 0x1f, 0xc8, 0x2e, + 0x58, 0x12, 0x5d, 0x03, 0xe6, 0x99, 0xc6, 0xdf, + 0x04, 0x05, 0x3f, 0x6b, 0x62, 0xaf, 0x0e, 0xad, + 0x86, 0xcc, 0xcd, 0x8f, 0x04, 0xc3, 0x59, 0x56, + 0x70, 0xa7, 0xad, 0x62, 0xf0, 0x85, 0x9f, 0x30, + 0xb7, 0xe1, 0x2e, 0x4b, 0x35, 0x90, 0x49, 0x6f, + 0x8c, 0x3c, 0x0f, 0xab, 0x47, 0x25, 0x47, 0x63, + 0x2c, 0x78, 0x1e, 0x46, 0x4f, 0xc7, 0xc2, 0xea, + 0x80, 0x28, 0x2b, 0x3d, 0x5d, 0x9b, 0xdc, 0x2a, + 0xf9, 0xeb, 0xba, 0xcc, 0x47, 0x8a, 0xca, 0x45, + 0x12, 0x56, 0x34, 0xb7, 0x50, 0x4e, 0xff, 0xf3, + 0x87, 0x44, 0xfb, 0x6c, 0x4d, 0xe6, 0x91, 0xd2, + 0x5e, 0xe1, 0x90, 0x3a, 0xf4, 0x04, 0xbe, 0xb2, + 0xac, 0x19, 0x98, 0x43, 0x99, 0xaf, 0xc3, 0x68, + 0xee, 0x27, 0x66, 0x18, 0x8d, 0x77, 0xcb, 0x4e, + 0x91, 0x95, 0x0f, 0x2b, 0xc9, 0x59, 0x76, 0xb6, + 0x16, 0x7b, 0xdd, 0x7c, 0x7b, 0x06, 0xab, 0xab, + 0x06, 0x39, 0xcc, 0x5b, 0xe0, 0x15, 0x87, 0xf7, + 0xdc, 0xbb, 0xe3, 0x5e, 0x75, 0x12, 0x7b, 0x76, + 0xd1, 0xc5, 0xea, 0xb5, 0x39, 0x77, 0xde, 0xbe, + 0x69, 0xcc, 0x46, 0xb5, 0xc3, 0xf8, 0x97, 0xb5, + 0x46, 0x9b, 0x78, 0x61, 0xf7, 0x15, 0x9e, 0x96, + 0x84, 0x14, 0xd1, 0xf7, 0x03, 0x3b, 0x6c, 0x64, + 0x82, 0xc6, 0x61, 0xe2, 0xcd, 0xc8, 0xcf, 0x9a, + 0x37, 0xc1, 0xaf, 0x2a, 0x9f, 0x07, 0x29, 0x23, + 0x05, 0x72, 0x89, 0x1c, 0x48, 0xc5, 0x5b, 0xf5, + 0xc0, 0x97, 0xf4, 0x86, 0x78, 0xd9, 0x1e, 0x42, + 0xa6, 0x31, 0x1c, 0xe0, 0x6b, 0x58, 0xd2, 0xe2, + 0x28, 0x94, 0xd5, 0x32, 0xad, 0x34, 0xfa, 0x0c, + 0x41, 0x9c, 0x3d, 0x67, 0xa2, 0x4e, 0x80, 0xe5, + 0x99, 0x8c, 0x6f, 0x0c, 0xb2, 0x49, 0xa3, 0x1d, + 0x85, 0x79, 0xe7, 0x88, 0x11, 0x0a, 0x96, 0x01, + 0x76, 0x0e, 0xf2, 0x94, 0x1f, 0xa8, 0xb6, 0x72, + 0x9f, 0xdb, 0xa4, 0x2e, 0xdb, 0xfa, 0x84, 0xf1, + 0x1c, 0xcd, 0x0d, 0x57, 0x1f, 0xf5, 0xc6, 0x5e, + 0xc9, 0x9f, 0xf6, 0xf2, 0xfb, 0x67, 0x3b, 0xdf, + 0xa8, 0xef, 0xc7, 0xbd, 0xe3, 0x92, 0xc5, 0x5a, + 0x8d, 0xe2, 0xde, 0x44, 0x70, 0x12, 0x30, 0xfa, + 0x7b, 0x99, 0x7e, 0x26, 0xfa, 0x49, 0xe0, 0x6e, + 0x03, 0x5f, 0x85, 0x4e, 0x93, 0x7e, 0xc6, 0x84, + 0x92, 0x8b, 0x32, 0xb6, 0x08, 0x63, 0xcc, 0x55, + 0x42, 0x99, 0x14, 0x98, 0x10, 0xff, 0x59, 0xe7, + 0xad, 0x39, 0xb0, 0xae, 0xc8, 0x70, 0xd4, 0x99, + 0x11, 0x59, 0xd8, 0x96, 0xdd, 0x32, 0x5b, 0x29, + 0x7e, 0x89, 0xdc, 0x23, 0x67, 0x8e, 0x27, 0xc0, + 0x2f, 0x5b, 0x37, 0x12, 0xc7, 0x18, 0xd4, 0xa2, + 0xa6, 0xac, 0x5d, 0x6a, 0x60, 0x26, 0x0f, 0xf0, + 0xcf, 0x36, 0xce, 0x6e, 0x4d, 0xab, 0xe5, 0xbd, + 0x27, 0xa1, 0x1d, 0x84, 0x5b, 0x83, 0xfd, 0x5b, + 0x69, 0x19, 0x1c, 0x3f, 0xb5, 0x09, 0x32, 0x9d, + 0x44, 0x2e, 0x57, 0xab, 0x28, 0x6b, 0x3d, 0x7a, + 0x2c, 0xc7, 0x08, 0xe1, 0x0e, 0xf2, 0xfa, 0xc0, + 0x99, 0x09, 0xca, 0x2d, 0xac, 0x53, 0x2f, 0x76, + 0xca, 0xfb, 0x73, 0x5e, 0xd9, 0xfb, 0x93, 0x3f, + 0xd2, 0x49, 0xb7, 0xbe, 0x0a, 0x4e, 0x87, 0x3d, + 0xac, 0x44, 0x9d, 0x26, 0x9c, 0x33, 0xe0, 0x5c, + 0x1c, 0xed, 0xff, 0x41, 0xa9, 0x75, 0x47, 0xb0, + 0x85, 0x15, 0x52, 0xa1, 0xc6, 0x11, 0x76, 0x11, + 0x2a, 0x07, 0xe2, 0xac, 0x57, 0x12, 0xe3, 0xae, + 0x3c, 0x8b, 0xb9, 0x61, 0xab, 0xcc, 0x0d, 0xf0, + 0xf3, 0x0d, 0xbf, 0xec, 0xc3, 0x6b, 0x8f, 0x4b, + 0xa4, 0x04, 0xf6, 0x2b, 0x69, 0xf6, 0x59, 0x16, + 0x27, 0xf3, 0xef, 0x91, 0x5d, 0x50, 0xc2, 0xd8, + 0x17, 0x1e, 0xb0, 0x8b, 0xed, 0x8b, 0xc7, 0xb3, + 0x2b, 0x5a, 0x2f, 0x1f, 0x0a, 0xf7, 0xd0, 0x95, + 0x28, 0x96, 0xf2, 0x6c, 0x37, 0x0b, 0x98, 0x21, + 0x07, 0x38, 0xbb, 0x12, 0x7c, 0x2c, 0x3c, 0x7a, + 0xb9, 0xfa, 0xeb, 0xdd, 0xdf, 0x26, 0xa3, 0xae, + 0x3c, 0xeb, 0xfc, 0xa5, 0x1d, 0x33, 0x63, 0xbf, + 0x8c, 0xa9, 0x83, 0x5e, 0x0c, 0x71, 0x69, 0x5d, + 0x19, 0xc0, 0xf7, 0x72, 0x36, 0x60, 0x7d, 0xbd, + 0x0c, 0xec, 0xac, 0x2b, 0x5d, 0xa7, 0x05, 0xb8, + 0xcd, 0xd7, 0x78, 0x2e, 0xaf, 0x01, 0xe6, 0xd3, + 0xf2, 0xfd, 0x5a, 0xcb, 0xe8, 0xca, 0x84, 0x86, + 0x81, 0x6b, 0x03, 0xe7, 0x39, 0x1f, 0x32, 0xd8, + 0xe1, 0xb5, 0x71, 0x6f, 0xa8, 0xbb, 0x15, 0xbd, + 0x96, 0xf4, 0x19, 0xec, 0x6b, 0x7c, 0xde, 0x5e, + 0xb2, 0x2f, 0x61, 0xdf, 0x00, 0x90, 0xf2, 0xc5, + 0x60, 0x61, 0xe3, 0x56, 0x63, 0xee, 0xfb, 0xa2, + 0x5a, 0x0c, 0xed, 0x42, 0x84, 0x6e, 0x23, 0xbd, + 0x15, 0x69, 0x5d, 0x8c, 0x31, 0x66, 0x82, 0x8c, + 0xd9, 0xe8, 0x50, 0x65, 0xea, 0xcd, 0x75, 0xff, + 0x86, 0x7f, 0xd9, 0xff, 0xcc, 0xff, 0xcc, 0x48, + 0xef, 0x67, 0x8e, 0xa6, 0x99, 0x88, 0x7c, 0x8a, + 0x78, 0x4b, 0xd1, 0xff, 0xc2, 0x27, 0xfe, 0x36, + 0x1c, 0x25, 0xff, 0x9c, 0x31, 0x61, 0x9c, 0x25, + 0x2f, 0x06, 0xfc, 0x14, 0xcd, 0x4b, 0xb7, 0x73, + 0x5d, 0x8d, 0xe6, 0x44, 0x66, 0x51, 0xa7, 0x55, + 0xaa, 0x9a, 0x83, 0x5e, 0x0c, 0xb2, 0x06, 0x30, + 0x53, 0x83, 0x71, 0x71, 0xc3, 0x7d, 0x28, 0xbc, + 0x27, 0xc1, 0x52, 0x56, 0x9b, 0x01, 0x58, 0x12, + 0x78, 0xff, 0x19, 0xfe, 0xdc, 0xcf, 0xe8, 0x59, + 0x18, 0x13, 0xa2, 0x2b, 0x17, 0xce, 0xc6, 0xc7, + 0x3b, 0x8f, 0x1b, 0xd1, 0xfb, 0xe3, 0xeb, 0xe5, + 0x6b, 0xc3, 0x98, 0x0c, 0xa9, 0x78, 0xa7, 0x6a, + 0xa8, 0xc1, 0xfe, 0x90, 0x7c, 0xbf, 0x86, 0x48, + 0x03, 0xf9, 0x6d, 0xd6, 0xb4, 0xbd, 0xe9, 0xbd, + 0x84, 0x5f, 0xde, 0x2f, 0xb5, 0xcb, 0xc8, 0x5e, + 0xe9, 0x31, 0x61, 0x66, 0xe9, 0xc5, 0x9f, 0x1f, + 0xbe, 0xbd, 0xf6, 0xf8, 0xe2, 0xcf, 0xaf, 0x1a, + 0x37, 0x7e, 0xf9, 0xf2, 0x5d, 0x8a, 0x9e, 0x64, + 0xa2, 0x86, 0xeb, 0x57, 0xa7, 0x80, 0x73, 0x6c, + 0xcc, 0xee, 0x62, 0x5d, 0x18, 0x58, 0x0d, 0xc1, + 0xae, 0x04, 0xdc, 0xd5, 0xdc, 0x8a, 0x55, 0xcb, + 0xab, 0x45, 0xab, 0xfc, 0xa0, 0xb8, 0x55, 0xb6, + 0x8a, 0xd5, 0x85, 0x55, 0xcd, 0x2b, 0xda, 0x77, + 0xaa, 0xbd, 0x55, 0xe0, 0x97, 0xe0, 0xc0, 0x4e, + 0x17, 0xf3, 0xf6, 0xbc, 0x79, 0x93, 0xcd, 0x3a, + 0xb3, 0xee, 0x82, 0x90, 0x8d, 0xe1, 0xa3, 0xbc, + 0x15, 0x3b, 0x18, 0x36, 0x5f, 0x9e, 0x4f, 0x08, + 0x6d, 0x72, 0xa2, 0xb6, 0xe5, 0x44, 0x1f, 0xaa, + 0x5f, 0xf3, 0xcd, 0x84, 0x0f, 0xcb, 0x35, 0xe5, + 0xcc, 0x3f, 0x32, 0x1b, 0xcd, 0x7f, 0x10, 0x76, + 0x21, 0x28, 0x09, 0x4d, 0x1e, 0x76, 0x03, 0x3b, + 0x52, 0xad, 0x21, 0xf0, 0x9e, 0xd2, 0xf6, 0x19, + 0x73, 0xaa, 0xf3, 0x44, 0xc5, 0xf7, 0xee, 0x55, + 0x64, 0x38, 0xd4, 0x9b, 0xf2, 0xf4, 0x5d, 0xfd, + 0x6f, 0xdf, 0xbd, 0xa3, 0x6f, 0x5e, 0x1d, 0xa6, + 0xf6, 0x37, 0x5f, 0xdf, 0xf2, 0x4d, 0x7f, 0xfa, + 0xc7, 0x1a, 0xd6, 0x20, 0x80, 0x07, 0x86, 0x88, + 0x1f, 0xad, 0x60, 0x09, 0x39, 0x1a, 0xa0, 0x53, + 0xd0, 0x02, 0xea, 0xae, 0xbc, 0x23, 0xd9, 0x17, + 0x02, 0xbb, 0x01, 0xc4, 0x19, 0x7c, 0x8a, 0x82, + 0xb9, 0xe3, 0xc8, 0x0f, 0x15, 0x5c, 0x97, 0xa3, + 0x82, 0x82, 0xb5, 0x41, 0x51, 0xd4, 0x15, 0xaf, + 0x3c, 0x6d, 0x3f, 0xd1, 0xf1, 0xa2, 0xcb, 0x2e, + 0x56, 0xab, 0x2a, 0xb0, 0x3b, 0xa3, 0xa3, 0xe8, + 0xcf, 0x91, 0xd0, 0xc3, 0x75, 0xcb, 0x76, 0xda, + 0xc9, 0x80, 0x37, 0x97, 0x06, 0x9b, 0x85, 0x31, + 0xac, 0x2b, 0xc1, 0x65, 0xf6, 0x08, 0xbe, 0x2b, + 0x4c, 0xce, 0x46, 0xc4, 0x16, 0x1e, 0xac, 0x33, + 0x91, 0x12, 0xab, 0x88, 0x0a, 0xa8, 0x84, 0xd3, + 0x3c, 0x4c, 0xd4, 0x2a, 0xd8, 0x6f, 0xa1, 0x3a, + 0x51, 0x9d, 0x78, 0xba, 0xf4, 0xf8, 0xa1, 0xac, + 0x13, 0x11, 0x9d, 0x2b, 0x2a, 0x6d, 0xf8, 0x6a, + 0x36, 0x8f, 0x55, 0x5d, 0xd5, 0xc5, 0xcf, 0x6c, + 0xb8, 0xdd, 0x60, 0x27, 0x2a, 0x8c, 0xf8, 0x6f, + 0x5c, 0x31, 0xcf, 0x34, 0xd9, 0x7e, 0x11, 0x76, + 0xc6, 0x93, 0xfd, 0xcd, 0xb6, 0x41, 0xd7, 0xa8, + 0x60, 0x75, 0xa6, 0xdd, 0xd2, 0xce, 0xbd, 0x1d, + 0xf2, 0x23, 0x79, 0x83, 0xd1, 0x34, 0x38, 0x9b, + 0x27, 0x47, 0x63, 0x68, 0x75, 0x98, 0x79, 0xe8, + 0xbc, 0x4e, 0xbd, 0xcd, 0x59, 0x14, 0xf9, 0xa2, + 0x55, 0x8c, 0x15, 0x85, 0x51, 0x17, 0xaa, 0xb1, + 0x6c, 0xfd, 0x9a, 0xfd, 0xbb, 0xba, 0x66, 0x6b, + 0xf5, 0xac, 0x9d, 0xad, 0x67, 0x4c, 0x6a, 0xa7, + 0x76, 0x84, 0x36, 0xeb, 0x88, 0x9a, 0x3e, 0xc1, + 0x73, 0x89, 0x7e, 0x42, 0xb6, 0xda, 0x1d, 0xd9, + 0x79, 0xe9, 0x48, 0xda, 0xb5, 0xc2, 0xd1, 0x29, + 0x05, 0x07, 0xf8, 0xeb, 0x04, 0xbd, 0x45, 0x8b, + 0xcb, 0xba, 0x27, 0x25, 0xa8, 0x78, 0x45, 0xaf, + 0x58, 0x2b, 0xd7, 0xe6, 0x3c, 0x96, 0x7c, 0x78, + 0x42, 0x62, 0x63, 0x27, 0xfa, 0xdb, 0x44, 0x3b, + 0x3b, 0xcc, 0xfe, 0x63, 0x0c, 0x31, 0xac, 0x46, + 0x6b, 0x08, 0x9f, 0x44, 0x13, 0x95, 0x1e, 0x92, + 0xd3, 0x1b, 0x5d, 0x95, 0xbc, 0xa2, 0x62, 0xfe, + 0x76, 0xef, 0x9d, 0xc2, 0x48, 0x02, 0x0f, 0x59, + 0x7d, 0xee, 0x18, 0xf9, 0xda, 0x94, 0x95, 0xe2, + 0x51, 0xb5, 0x2c, 0x76, 0xa9, 0x4a, 0x23, 0x9f, + 0xda, 0x4e, 0x93, 0xa6, 0x97, 0xa6, 0xb0, 0x8f, + 0x55, 0xc1, 0xbf, 0xa3, 0x77, 0x98, 0xcc, 0xe3, + 0xa4, 0xa8, 0xde, 0x56, 0xad, 0x44, 0x77, 0xe6, + 0x81, 0x61, 0xdd, 0x0f, 0x7d, 0x4a, 0x59, 0x2d, + 0x1b, 0x65, 0x00, 0xfb, 0x6b, 0xab, 0x7a, 0x7a, + 0x9f, 0xaf, 0x02, 0xde, 0x6d, 0xda, 0x2a, 0x88, + 0x7c, 0x17, 0x5a, 0xc0, 0xec, 0x63, 0xed, 0xdd, + 0xb2, 0xce, 0x0e, 0xee, 0xd6, 0xa6, 0xd1, 0x13, + 0x11, 0xe8, 0x16, 0x71, 0x0e, 0x7e, 0x1f, 0x3e, + 0x52, 0x64, 0xef, 0xac, 0x50, 0x7b, 0xc7, 0x19, + 0xf6, 0x3f, 0x40, 0xbe, 0x5d, 0xd8, 0x47, 0x03, + 0xe6, 0xf2, 0x3d, 0xae, 0x0b, 0x91, 0x9c, 0x6f, + 0xda, 0x3a, 0x17, 0x7c, 0x73, 0x35, 0xfb, 0x63, + 0x4a, 0x4d, 0x69, 0xf4, 0x1d, 0x56, 0xf8, 0x62, + 0x77, 0xae, 0x0c, 0x6b, 0xf2, 0xac, 0xe8, 0xf5, + 0x94, 0x0d, 0x0a, 0x47, 0x5f, 0xb3, 0xd4, 0x6a, + 0x4a, 0x4d, 0xab, 0x57, 0xf3, 0x21, 0x47, 0xce, + 0xd2, 0x1a, 0xd4, 0x9d, 0x71, 0xe7, 0xec, 0x6f, + 0x9d, 0x92, 0x59, 0x62, 0xb7, 0xcc, 0xb8, 0x13, + 0x77, 0xcf, 0xa8, 0x27, 0xbb, 0x72, 0xc5, 0xc4, + 0x8e, 0xc0, 0x9f, 0x40, 0x43, 0xd1, 0x2b, 0xa1, + 0x47, 0x9f, 0xe0, 0xdb, 0x58, 0x37, 0x1c, 0x4c, + 0x5b, 0x93, 0x80, 0x3a, 0xa5, 0xff, 0x24, 0x67, + 0x83, 0x12, 0xb2, 0x35, 0x0a, 0x1e, 0x35, 0x68, + 0x0a, 0xa6, 0x84, 0x18, 0x95, 0x1d, 0x44, 0xac, + 0x12, 0xb9, 0x82, 0x22, 0xef, 0x08, 0x2b, 0x88, + 0xd9, 0xc7, 0x0d, 0xab, 0x01, 0x56, 0x57, 0x56, + 0x07, 0xc7, 0x8d, 0x33, 0x41, 0xbd, 0x46, 0xf6, + 0x12, 0x7f, 0xdd, 0xee, 0x92, 0x9d, 0xe9, 0x06, + 0xf2, 0x68, 0x6c, 0x1e, 0xb1, 0x68, 0x94, 0x95, + 0xca, 0x01, 0xee, 0xdc, 0x69, 0x6b, 0xc8, 0x8b, + 0x11, 0x98, 0x73, 0x35, 0x8a, 0x42, 0x84, 0x2c, + 0x56, 0xd4, 0x2a, 0x8e, 0xc6, 0x92, 0x5b, 0x99, + 0x1f, 0x9a, 0x2c, 0x29, 0x78, 0xe1, 0x06, 0xbb, + 0x1f, 0x75, 0xe5, 0x62, 0xa3, 0xfe, 0x37, 0xcf, + 0xb2, 0x5b, 0x67, 0x18, 0xee, 0xd3, 0xc4, 0xd6, + 0x05, 0x7f, 0xd9, 0x58, 0x66, 0xeb, 0xf2, 0xac, + 0xd2, 0xdc, 0x2a, 0x6f, 0x94, 0xbe, 0xaf, 0xf0, + 0x92, 0x57, 0xae, 0x35, 0xf7, 0x47, 0x1e, 0x9c, + 0x3d, 0x88, 0x6d, 0x35, 0x5d, 0xc4, 0x7d, 0x21, + 0x26, 0xb4, 0xb1, 0x93, 0x4c, 0x05, 0x77, 0xa1, + 0x0f, 0x7b, 0x50, 0xc7, 0x1d, 0x58, 0x17, 0xbb, + 0x7b, 0x80, 0x41, 0x57, 0x93, 0x7a, 0x0a, 0xe7, + 0x2c, 0x92, 0xba, 0x7e, 0x5d, 0x5b, 0xe5, 0xc4, + 0x6e, 0x91, 0x3b, 0x25, 0x8a, 0x50, 0xdd, 0x56, + 0x6f, 0xab, 0xa8, 0x71, 0xa4, 0xde, 0x01, 0x8f, + 0x81, 0x97, 0x45, 0x48, 0x4e, 0xf4, 0xa3, 0x60, + 0xb1, 0x00, 0xbf, 0xcb, 0x03, 0xd9, 0xfe, 0xab, + 0x52, 0xab, 0xb4, 0x56, 0x5f, 0x2b, 0x47, 0xdb, + 0x2d, 0x65, 0x67, 0xb5, 0x31, 0xd0, 0xef, 0x0b, + 0xbe, 0xe2, 0xe7, 0xa6, 0x91, 0xa7, 0xd4, 0xa9, + 0x38, 0x9b, 0xe6, 0xcc, 0x83, 0x61, 0xc1, 0xb7, + 0x45, 0xc6, 0x7c, 0x84, 0x1e, 0x70, 0xae, 0xb6, + 0x5d, 0xe2, 0x94, 0x59, 0xa9, 0x5b, 0x39, 0x5f, + 0x92, 0xf2, 0x27, 0xf3, 0x42, 0x91, 0xf6, 0x66, + 0x57, 0xad, 0x24, 0x9f, 0x74, 0x97, 0x00, 0x27, + 0x95, 0xc5, 0x0a, 0x9c, 0x75, 0xb6, 0x04, 0xd3, + 0x29, 0xce, 0x92, 0xd6, 0x73, 0x7e, 0xcf, 0x3d, + 0x2f, 0xa4, 0x92, 0x04, 0xdb, 0x2d, 0x12, 0x68, + 0x1b, 0x99, 0x1f, 0x66, 0xab, 0x77, 0x56, 0x06, + 0x79, 0x7d, 0x32, 0x2a, 0x8c, 0xb9, 0xd3, 0xb0, + 0xf7, 0x8a, 0xa8, 0xef, 0x66, 0xad, 0x0c, 0xf8, + 0x83, 0x32, 0x26, 0x1e, 0x79, 0x83, 0x51, 0x47, + 0x4d, 0xd4, 0x02, 0x85, 0x40, 0x57, 0xb6, 0x61, + 0xd5, 0xcb, 0xe0, 0xa1, 0x96, 0x99, 0xba, 0x7f, + 0xcb, 0xff, 0x60, 0x6f, 0x49, 0xc7, 0xca, 0x17, + 0x95, 0x0c, 0xfb, 0x95, 0xe3, 0x05, 0xff, 0x43, + 0xbf, 0xe2, 0x2f, 0xf8, 0xab, 0xfe, 0xa2, 0xf1, + 0xa1, 0xb1, 0xe0, 0xdf, 0x72, 0x65, 0x36, 0x0d, + 0x64, 0xd2, 0x81, 0xdd, 0xfd, 0x45, 0xe5, 0xa8, + 0x88, 0x7c, 0x5d, 0xa7, 0x8c, 0x5c, 0xb7, 0x1a, + 0xd9, 0x4d, 0x24, 0x89, 0x7a, 0x62, 0x7d, 0x9d, + 0xa6, 0x49, 0x7e, 0x1a, 0x53, 0x22, 0x0d, 0x8c, + 0xfe, 0xc2, 0x2c, 0xec, 0xfb, 0x5c, 0xbb, 0xda, + 0x5e, 0x0c, 0xf4, 0xce, 0xb0, 0x9f, 0x36, 0x0a, + 0xc7, 0x19, 0xec, 0x6f, 0xea, 0xdf, 0xb7, 0x1d, + 0x91, 0xe5, 0x59, 0x73, 0xe6, 0xc1, 0x9a, 0x5c, + 0xea, 0x2e, 0xd1, 0x79, 0xcc, 0xef, 0x74, 0xe7, + 0x9d, 0x9b, 0x76, 0xb1, 0xaa, 0x57, 0xd9, 0x81, + 0xc8, 0x4d, 0xf0, 0x04, 0xc6, 0x52, 0x5b, 0xd3, + 0xc1, 0x14, 0x9d, 0xa2, 0x4b, 0x30, 0xd6, 0x45, + 0x2c, 0x39, 0x01, 0x76, 0x07, 0x63, 0x96, 0xa3, + 0x41, 0xda, 0xcf, 0xfa, 0x97, 0x1a, 0x8f, 0x6c, + 0x0d, 0xfb, 0xef, 0x1d, 0x45, 0xf1, 0xf8, 0x5e, + 0x2d, 0x2d, 0xa2, 0x62, 0x32, 0x4b, 0x6f, 0xb3, + 0x58, 0x2b, 0x8e, 0x95, 0x9c, 0x61, 0x84, 0x99, + 0x8a, 0xac, 0xc7, 0x27, 0x5d, 0xe6, 0x31, 0x4f, + 0xf1, 0xe0, 0x95, 0x07, 0x22, 0x82, 0x41, 0xab, + 0xc4, 0x86, 0x3b, 0x2a, 0x62, 0x66, 0xc8, 0x78, + 0xe8, 0x17, 0x8d, 0xb9, 0x5f, 0x92, 0xed, 0x14, + 0xcb, 0x39, 0xf4, 0xcd, 0xc5, 0x4e, 0x71, 0xff, + 0x81, 0x6b, 0xb5, 0x06, 0x3b, 0x3e, 0xc5, 0x0e, + 0xc2, 0xea, 0x32, 0xd1, 0x5b, 0x04, 0x9c, 0xb9, + 0x30, 0x03, 0x38, 0xc2, 0xbe, 0x09, 0x60, 0xa7, + 0xb0, 0x34, 0x7f, 0x3f, 0x0e, 0x2c, 0xf5, 0x6d, + 0x3c, 0x64, 0x5d, 0xf5, 0x47, 0xa4, 0x81, 0x45, + 0x1e, 0x87, 0x2b, 0xf6, 0xaa, 0xad, 0xd8, 0x22, + 0xf2, 0xd9, 0xd6, 0xdb, 0xf3, 0xb4, 0x4c, 0xd4, + 0xa8, 0xca, 0x8f, 0x4a, 0x46, 0x55, 0xf4, 0x75, + 0x80, 0x75, 0x2f, 0xb2, 0x96, 0x98, 0x09, 0xb9, + 0x6a, 0x39, 0xb2, 0x0f, 0x6b, 0x6f, 0xc8, 0x2c, + 0x4f, 0xc2, 0x82, 0x95, 0xe8, 0xae, 0xb8, 0x9f, + 0x77, 0x65, 0x7d, 0x77, 0xca, 0x42, 0x7f, 0x41, + 0x46, 0x11, 0x47, 0x6c, 0xac, 0x57, 0x15, 0x1d, + 0x7b, 0xda, 0xa9, 0x6e, 0xda, 0xc8, 0xbe, 0x05, + 0x0d, 0x07, 0x56, 0x85, 0x4a, 0x7e, 0x0e, 0x3f, + 0x8b, 0xdc, 0x3e, 0xe3, 0x2a, 0xff, 0x12, 0xf4, + 0x5d, 0x16, 0xf4, 0x1d, 0x20, 0x41, 0xa6, 0x1d, + 0xe4, 0x57, 0x45, 0x7f, 0x15, 0xd9, 0x87, 0xb5, + 0xab, 0xc2, 0x5d, 0xa8, 0xd8, 0xb7, 0xf6, 0x60, + 0x7a, 0xff, 0xe9, 0xf7, 0x18, 0x4f, 0x90, 0x5c, + 0x97, 0x3e, 0xf7, 0x32, 0x6f, 0xfe, 0xe5, 0x9f, + 0xa8, 0x63, 0x54, 0x98, 0x23, 0xf3, 0x40, 0x11, + 0x5d, 0xdf, 0x46, 0xec, 0x94, 0xa8, 0x2a, 0xaf, + 0xd8, 0xf3, 0x82, 0xb7, 0x09, 0x57, 0x02, 0x9f, + 0x5b, 0xcb, 0x47, 0x51, 0x88, 0x7b, 0x04, 0xbc, + 0xa6, 0x7e, 0x5f, 0xcb, 0x5e, 0x8d, 0x09, 0xf2, + 0x64, 0xd6, 0x6d, 0x59, 0xef, 0x64, 0xdb, 0x5f, + 0xfa, 0xb5, 0xd7, 0x0f, 0x5d, 0xdb, 0xf8, 0xe4, + 0x38, 0xea, 0x97, 0x1b, 0x7a, 0x9a, 0xb0, 0x0b, + 0x75, 0xf4, 0x35, 0x4f, 0x58, 0x2b, 0xb8, 0x2f, + 0xcc, 0x3d, 0xb6, 0x5f, 0x71, 0xdd, 0x07, 0xb9, + 0xf4, 0x5f, 0x72, 0xbb, 0x7d, 0x66, 0x7f, 0xdc, + 0x7f, 0xba, 0xa7, 0xb4, 0xa3, 0xcf, 0x25, 0xc8, + 0x4f, 0xb4, 0x3f, 0xe4, 0xd8, 0x8d, 0xc3, 0x18, + 0xe8, 0x4c, 0xdb, 0xaf, 0x4e, 0x92, 0x4c, 0x14, + 0xc4, 0x60, 0x7d, 0x9b, 0x32, 0x93, 0x7f, 0x74, + 0xf4, 0x6f, 0xc6, 0xa3, 0xc3, 0x7f, 0x33, 0x3e, + 0x0b, 0xb6, 0x9f, 0x96, 0xfc, 0x25, 0x7d, 0x9d, + 0xa9, 0x2d, 0xb4, 0x57, 0x77, 0xdf, 0x0a, 0x26, + 0x2a, 0x93, 0x5d, 0x67, 0x61, 0x2f, 0xfe, 0xf2, + 0xab, 0x98, 0x39, 0x46, 0xea, 0x1c, 0xb0, 0xc0, + 0x6d, 0xe4, 0x9c, 0x66, 0x8e, 0xa7, 0xf5, 0xaf, + 0x8f, 0x52, 0x0a, 0xae, 0x82, 0xc9, 0xc3, 0x88, + 0x6b, 0xbb, 0x49, 0x47, 0x79, 0xbe, 0x7a, 0x8e, + 0x4f, 0x01, 0x82, 0x07, 0xed, 0x51, 0x03, 0x7f, + 0x57, 0x7a, 0x5e, 0xc8, 0xdf, 0xe0, 0x58, 0xef, + 0x61, 0x7a, 0x37, 0x83, 0x1b, 0x6c, 0x13, 0xfb, + 0x48, 0xf2, 0x7e, 0x0f, 0x49, 0x19, 0xd7, 0x1a, + 0x92, 0xac, 0xd2, 0xb7, 0x09, 0xc0, 0xb1, 0xa9, + 0x1e, 0x46, 0x8a, 0x0d, 0xe4, 0x79, 0xb0, 0xc7, + 0x05, 0xda, 0x6d, 0x55, 0xc4, 0x72, 0x71, 0xa7, + 0x00, 0x1e, 0x32, 0x9a, 0x7b, 0xa0, 0x95, 0x83, + 0x2b, 0xec, 0x02, 0xab, 0x98, 0xf3, 0x4e, 0x05, + 0x76, 0xec, 0xbc, 0x3b, 0xbf, 0x33, 0x17, 0xf6, + 0x85, 0x90, 0x0c, 0x0f, 0x0a, 0xbb, 0xe8, 0xb2, + 0xf7, 0x48, 0x48, 0x73, 0x41, 0x74, 0x92, 0x93, + 0x6b, 0x24, 0x2a, 0x9d, 0x44, 0xd5, 0xd4, 0x3c, + 0xf9, 0x23, 0xc7, 0x8e, 0x6e, 0x6b, 0x7a, 0x5c, + 0x57, 0xfb, 0xd9, 0x16, 0x57, 0xe3, 0x49, 0xd1, + 0x73, 0x46, 0xec, 0x14, 0xb4, 0x49, 0x2e, 0x79, + 0x2d, 0xf3, 0x65, 0x32, 0x57, 0x22, 0x0f, 0x8c, + 0x00, 0xcf, 0xd7, 0x26, 0xf2, 0x4f, 0xd4, 0x10, + 0xd7, 0x05, 0x72, 0x3f, 0xc0, 0x21, 0x90, 0x26, + 0x66, 0x3d, 0x3e, 0xe9, 0xaa, 0xa1, 0x37, 0xf1, + 0xbe, 0x4f, 0x27, 0xee, 0x2a, 0x64, 0xee, 0x85, + 0xb9, 0xe3, 0xf6, 0x10, 0x5f, 0xf1, 0x87, 0x83, + 0x15, 0x1f, 0xbe, 0xb7, 0x97, 0xf6, 0x4b, 0xfe, + 0xea, 0x1e, 0x6b, 0x87, 0x92, 0x03, 0x76, 0x4a, + 0xf7, 0x2a, 0xff, 0xfc, 0x9f, 0xd9, 0x0e, 0x4d, + 0xd1, 0xb9, 0x16, 0xd9, 0xfa, 0xd8, 0x43, 0x76, + 0x90, 0x5b, 0x8b, 0x3d, 0x52, 0x30, 0xa7, 0xa0, + 0x80, 0xb5, 0xfe, 0x1a, 0x19, 0xc3, 0x02, 0x43, + 0x4c, 0xf0, 0xb0, 0x8a, 0x13, 0x30, 0xdb, 0x14, + 0x76, 0x73, 0x08, 0x5e, 0x1a, 0xd8, 0xa5, 0x23, + 0xcd, 0x7f, 0xd7, 0xbe, 0x19, 0x5c, 0x62, 0x93, + 0xed, 0xa7, 0x8d, 0x7e, 0x77, 0xbb, 0x65, 0x6e, + 0x56, 0x97, 0xf9, 0x82, 0xbd, 0x60, 0x2f, 0xf2, + 0x15, 0x8b, 0xb5, 0x67, 0xe9, 0x42, 0xd8, 0xf3, + 0x07, 0xb9, 0xd8, 0xc8, 0xae, 0x43, 0xde, 0xd6, + 0x26, 0xbf, 0xee, 0x5e, 0xe5, 0xe3, 0x4e, 0xde, + 0xfd, 0x83, 0x2a, 0x33, 0xbc, 0x21, 0x0f, 0x82, + 0x19, 0x5c, 0x78, 0xb8, 0xbc, 0x54, 0x2b, 0x39, + 0x77, 0x04, 0xde, 0xc0, 0xcf, 0x9d, 0x71, 0xa8, + 0xdb, 0x0c, 0x1e, 0xb1, 0xdf, 0xf2, 0xff, 0xeb, + 0xff, 0x1f, 0xff, 0x5f, 0xf8, 0xff, 0x65, 0xf7, + 0x9c, 0x6d, 0x57, 0x76, 0xf6, 0xe8, 0x77, 0x03, + 0xeb, 0xf5, 0x2f, 0xdc, 0xa1, 0xbd, 0x0e, 0x66, + 0x98, 0x53, 0xca, 0xf4, 0xba, 0x56, 0xd2, 0x56, + 0xba, 0x5d, 0x04, 0xfc, 0x65, 0xbb, 0xb1, 0x16, + 0x6a, 0x60, 0x15, 0x75, 0x27, 0x2b, 0xb4, 0xd3, + 0xac, 0xf0, 0xf7, 0xac, 0x9d, 0xf3, 0x73, 0xe6, + 0x3c, 0xad, 0x98, 0xb7, 0xed, 0x58, 0xc8, 0x39, + 0x21, 0x04, 0x19, 0x2b, 0x69, 0x02, 0x86, 0x02, + 0x0e, 0x64, 0x8e, 0xbf, 0x22, 0x31, 0x19, 0x85, + 0x00, 0x64, 0x32, 0x8c, 0xbd, 0x00, 0xed, 0x45, + 0x97, 0x79, 0xab, 0x8e, 0xc0, 0xe2, 0x8e, 0xea, + 0x8e, 0xbe, 0x13, 0x6c, 0x07, 0x46, 0x0c, 0xa2, + 0x7f, 0x12, 0xe8, 0x6c, 0xf1, 0x58, 0x35, 0x72, + 0xfe, 0xf8, 0xfe, 0xb8, 0xb7, 0xf8, 0xb7, 0xd2, + 0x03, 0xfb, 0xfb, 0x4f, 0xd5, 0x5e, 0xa5, 0x1e, + 0xcc, 0x46, 0xd1, 0x8d, 0x8b, 0x4e, 0x45, 0x69, + 0xa6, 0xfb, 0xfa, 0xde, 0xba, 0xb0, 0x65, 0x3d, + 0x7c, 0x0b, 0x9a, 0x06, 0xf9, 0x82, 0x70, 0xa5, + 0xd8, 0xcf, 0xab, 0xde, 0xdc, 0x51, 0x54, 0xc9, + 0xeb, 0x7b, 0x15, 0xca, 0x64, 0x88, 0xee, 0xda, + 0xd3, 0xed, 0x27, 0xfa, 0x69, 0x99, 0xe1, 0xed, + 0x69, 0xef, 0x33, 0x46, 0xba, 0xb3, 0xed, 0x24, + 0x01, 0xb9, 0x95, 0x4c, 0xc3, 0x06, 0x9c, 0x83, + 0x7c, 0x06, 0xd1, 0x3d, 0x38, 0x13, 0x4c, 0xb2, + 0x71, 0x23, 0xd7, 0x69, 0x3a, 0x69, 0x73, 0x92, + 0x4e, 0x1a, 0x25, 0x7b, 0xee, 0xdd, 0xc7, 0x21, + 0xae, 0x53, 0xc2, 0x4c, 0x4e, 0x74, 0x0c, 0x30, + 0x6f, 0x01, 0x59, 0x80, 0xd4, 0xb9, 0x8a, 0xb3, + 0x16, 0xc4, 0xe8, 0x1a, 0x8b, 0x75, 0xd6, 0xe8, + 0xfc, 0xd3, 0x05, 0x52, 0x36, 0x4f, 0x1d, 0xc8, + 0x5e, 0x52, 0xf3, 0x14, 0x2b, 0x97, 0x84, 0x1d, + 0xb4, 0x4f, 0xfa, 0x83, 0x8a, 0x59, 0x39, 0xc0, + 0x1c, 0x29, 0x60, 0x18, 0xeb, 0x64, 0x76, 0x50, + 0x66, 0xe1, 0xb1, 0xd3, 0x97, 0xe6, 0xe6, 0xf8, + 0x55, 0x77, 0x33, 0xac, 0x57, 0xc7, 0x48, 0x41, + 0x8e, 0x53, 0x45, 0x79, 0x8f, 0x25, 0x1e, 0xf1, + 0x15, 0xa2, 0xbc, 0xb2, 0x92, 0x1f, 0x3a, 0xaa, + 0xdb, 0xf7, 0xec, 0x75, 0x67, 0xbd, 0x16, 0xd5, + 0x8a, 0x84, 0x75, 0x22, 0x07, 0xfd, 0x0e, 0x93, + 0xf2, 0x6b, 0x8f, 0x49, 0x1a, 0x66, 0x72, 0xa4, + 0xd4, 0x63, 0xed, 0x9a, 0xc0, 0xf6, 0x7c, 0xd5, + 0xc5, 0x0e, 0xcf, 0x23, 0xae, 0x29, 0x35, 0x30, + 0xdc, 0xd9, 0xd0, 0xe1, 0x29, 0xe7, 0x94, 0x93, + 0x70, 0xce, 0x38, 0x13, 0xce, 0x7f, 0x38, 0x89, + 0x67, 0x23, 0x8f, 0x47, 0xea, 0x63, 0xbb, 0xb2, + 0x62, 0xbd, 0xd2, 0x95, 0x79, 0x99, 0x4a, 0x57, + 0x66, 0x24, 0xd9, 0x60, 0x3f, 0x12, 0x91, 0xc9, + 0xc4, 0x68, 0x40, 0xae, 0x1b, 0xf5, 0x22, 0x61, + 0xad, 0x4a, 0x20, 0x79, 0x9b, 0x0a, 0x69, 0x98, + 0xa7, 0xe0, 0x9d, 0xd7, 0x1c, 0x98, 0x1f, 0xf8, + 0x0a, 0x9f, 0xf1, 0xec, 0xd4, 0xe3, 0xd3, 0x8d, + 0xd1, 0xdd, 0xab, 0x5a, 0xa4, 0x19, 0x64, 0x0c, + 0x5a, 0x46, 0xa1, 0xa3, 0x80, 0x9b, 0xa5, 0x0c, + 0xb0, 0x2c, 0xbc, 0x84, 0x37, 0xe2, 0x81, 0x7d, + 0xa8, 0x15, 0x19, 0x78, 0x4a, 0xde, 0x10, 0x51, + 0xd4, 0x93, 0x1c, 0x8c, 0x49, 0x4b, 0xf4, 0xdd, + 0x1a, 0xa8, 0xe6, 0x60, 0x82, 0xe7, 0x76, 0xc7, + 0x06, 0x24, 0x50, 0x8f, 0xdb, 0x63, 0xf6, 0x84, + 0x3d, 0x81, 0x4c, 0x48, 0xd7, 0x12, 0x3c, 0x37, + 0x95, 0x54, 0xcd, 0xa5, 0xc3, 0x94, 0x73, 0xc9, + 0x59, 0x87, 0x3b, 0x9e, 0x70, 0x96, 0x9c, 0xf5, + 0x67, 0x09, 0xb8, 0xdf, 0x2b, 0xbb, 0xb2, 0x46, + 0x7b, 0x73, 0xe5, 0x9a, 0x71, 0xd3, 0xc8, 0x1d, + 0xbf, 0x5a, 0x49, 0x19, 0x53, 0xfe, 0xf5, 0x37, + 0xd7, 0xfd, 0x47, 0x9d, 0x4c, 0x87, 0xba, 0xa9, + 0x7c, 0x54, 0x5d, 0xd8, 0x70, 0x88, 0x0b, 0x78, + 0x46, 0x59, 0x0b, 0x36, 0xac, 0x74, 0x3d, 0x6c, + 0x92, 0x21, 0xfb, 0x14, 0x89, 0x9e, 0xf0, 0xab, + 0xbb, 0xf3, 0xda, 0x42, 0x72, 0x0d, 0x71, 0xa8, + 0xa7, 0xd7, 0xf4, 0xda, 0xbc, 0xf7, 0xdb, 0x9e, + 0x1f, 0x8a, 0xb1, 0x36, 0x8c, 0xf2, 0x95, 0xc3, + 0x9e, 0x8f, 0x15, 0xd8, 0x65, 0xf1, 0x81, 0x4a, + 0x10, 0x25, 0x5f, 0xe9, 0xf6, 0x56, 0x02, 0xd6, + 0x61, 0xf4, 0xdd, 0xb4, 0x36, 0x90, 0x87, 0x25, + 0xa9, 0x2e, 0xc6, 0xb0, 0x90, 0x25, 0x54, 0xb4, + 0xf4, 0xaa, 0x2d, 0x3b, 0xa5, 0x4b, 0x0e, 0x33, + 0xec, 0x9d, 0x32, 0x57, 0xd4, 0x35, 0xd0, 0x6a, + 0xab, 0x75, 0x9d, 0xe8, 0x44, 0xf6, 0x37, 0x93, + 0x95, 0xa7, 0x60, 0x5f, 0xdd, 0xc4, 0x0b, 0x43, + 0xb9, 0x18, 0x18, 0x96, 0x51, 0x37, 0xc8, 0x07, + 0x64, 0x85, 0xd4, 0xcc, 0xa8, 0x83, 0x77, 0x1a, + 0xfe, 0xe2, 0x0b, 0x8c, 0xb9, 0xbf, 0xd7, 0x0f, + 0xaa, 0xbf, 0x46, 0x80, 0xb3, 0x58, 0x0e, 0xfc, + 0x1c, 0xd0, 0xde, 0xd6, 0x62, 0xb7, 0x1a, 0x7a, + 0x2a, 0xc8, 0xc7, 0xac, 0xb0, 0xd9, 0x7a, 0xc5, + 0x2e, 0xd5, 0x2f, 0x76, 0x6e, 0xd5, 0x2f, 0xc2, + 0xf7, 0x87, 0xe6, 0x3d, 0x7b, 0x6c, 0x27, 0x8a, + 0x4e, 0xa3, 0x06, 0x8e, 0x21, 0xd3, 0x18, 0x6d, + 0xfc, 0x96, 0xc6, 0x7a, 0x9a, 0x50, 0xb0, 0xd7, + 0xe5, 0x10, 0x6c, 0x0c, 0x81, 0x35, 0xa2, 0x9a, + 0xa9, 0xe8, 0xec, 0x70, 0x78, 0x46, 0xc4, 0xbc, + 0x25, 0x73, 0x26, 0xdc, 0x47, 0xa2, 0x73, 0x6b, + 0xcb, 0x6c, 0x7d, 0xde, 0xeb, 0xfb, 0x04, 0x3e, + 0x67, 0xaf, 0x37, 0xcb, 0x18, 0x6a, 0xf4, 0x5f, + 0x65, 0xe8, 0xa5, 0x3d, 0x1a, 0x12, 0xdc, 0x55, + 0x11, 0x87, 0x15, 0x92, 0x3d, 0x98, 0x5d, 0x8a, + 0x3e, 0xb7, 0x70, 0x14, 0x75, 0xca, 0x1c, 0xe4, + 0x76, 0x80, 0xa7, 0x59, 0x0f, 0x3b, 0xb5, 0xda, + 0xf3, 0xf5, 0x79, 0xe5, 0x65, 0xd7, 0xa6, 0x63, + 0x81, 0xe6, 0x3d, 0x91, 0xbd, 0x4a, 0x2c, 0xea, + 0xcc, 0x79, 0x76, 0x9b, 0x80, 0x06, 0xcf, 0xbd, + 0x33, 0x77, 0x3e, 0xe5, 0x39, 0x2a, 0xd9, 0xb3, + 0x33, 0x92, 0x7b, 0xb9, 0x32, 0x77, 0xfc, 0x1b, + 0x23, 0x01, 0x92, 0x95, 0x32, 0xae, 0x19, 0x62, + 0xff, 0xd7, 0xb3, 0xed, 0x19, 0x19, 0xf7, 0x56, + 0x90, 0x43, 0x91, 0xb7, 0xae, 0x75, 0xaf, 0x7a, + 0xa6, 0xf7, 0x79, 0x20, 0x7d, 0x5a, 0xa1, 0xf3, + 0x94, 0xa8, 0xcb, 0xdc, 0x36, 0x78, 0xdd, 0xc8, + 0x08, 0x9d, 0x0a, 0x8c, 0x13, 0x95, 0x11, 0x58, + 0xfb, 0x9e, 0xde, 0x07, 0x3f, 0x67, 0x7f, 0xd2, + 0xb9, 0xb1, 0x7f, 0xa3, 0x0b, 0x73, 0xc2, 0x37, + 0x8d, 0xdc, 0x2f, 0x32, 0x02, 0x09, 0x77, 0x53, + 0xff, 0xd6, 0xce, 0xa1, 0xbf, 0x55, 0x6f, 0xda, + 0x18, 0xbd, 0xc8, 0xda, 0x05, 0xb7, 0xe6, 0x46, + 0x52, 0x27, 0x99, 0xb7, 0x92, 0x77, 0x0b, 0x58, + 0xa7, 0xfb, 0x55, 0x72, 0xec, 0xe8, 0x2a, 0x7a, + 0xe0, 0x8a, 0x8c, 0x7d, 0x61, 0x6d, 0x6a, 0xac, + 0x8b, 0xd5, 0xd3, 0x28, 0x09, 0x6b, 0x7c, 0x80, + 0xad, 0xa4, 0xac, 0xd6, 0x45, 0xdf, 0x8f, 0xfa, + 0x9a, 0xe0, 0x31, 0x29, 0xa4, 0x12, 0xe8, 0x8e, + 0x6e, 0xaf, 0xee, 0x88, 0x7a, 0x49, 0xef, 0xc3, + 0x40, 0xd9, 0x7f, 0x15, 0x0c, 0xb1, 0x35, 0x1e, + 0x63, 0xd8, 0x8b, 0x19, 0xad, 0xb5, 0x5e, 0x5b, + 0xed, 0x0e, 0xa1, 0x95, 0x6c, 0x35, 0xdf, 0x24, + 0xfd, 0x24, 0x78, 0x32, 0xa5, 0x37, 0x25, 0xff, + 0xc6, 0xf1, 0x8d, 0xfa, 0xdc, 0xb3, 0xca, 0xf1, + 0x1c, 0xf8, 0x2c, 0xd8, 0xa5, 0xb9, 0x17, 0x15, + 0x87, 0x9d, 0xfc, 0xf0, 0xa0, 0xd7, 0x07, 0x89, + 0x20, 0x93, 0x36, 0xec, 0xf3, 0xe9, 0xeb, 0x3e, + 0xf8, 0x47, 0x7e, 0xd9, 0x17, 0xfe, 0xd1, 0x40, + 0x3d, 0x9d, 0xd4, 0xa1, 0xa2, 0x0f, 0x8c, 0xa3, + 0x61, 0xc7, 0xa8, 0x56, 0x0c, 0x46, 0x3c, 0xec, + 0x77, 0x2d, 0xa3, 0x15, 0x98, 0x95, 0xbf, 0x6c, + 0x6c, 0x1a, 0x29, 0x86, 0x7d, 0x89, 0xd1, 0xa3, + 0x18, 0xa7, 0x18, 0x07, 0x4e, 0x08, 0xb4, 0x0e, + 0x98, 0x4e, 0xb9, 0xa4, 0x7c, 0x0a, 0x7b, 0x4c, + 0x43, 0x74, 0x5e, 0x03, 0x04, 0x2a, 0x7a, 0x2c, + 0xe0, 0xd9, 0x24, 0x9c, 0xbd, 0xda, 0xda, 0x00, + 0x64, 0x3d, 0x0e, 0xbb, 0x41, 0xab, 0x69, 0x0e, + 0xa0, 0x73, 0x32, 0x1e, 0x6a, 0x24, 0x59, 0xb3, + 0x7d, 0x23, 0xf8, 0x54, 0x70, 0x9e, 0xfa, 0x3d, + 0x83, 0xe4, 0x55, 0xc9, 0xea, 0xa6, 0xd8, 0x7b, + 0xd6, 0x5b, 0xe0, 0x9c, 0x03, 0x71, 0xbd, 0x8c, + 0xa0, 0x17, 0xaf, 0xde, 0x56, 0xe2, 0x27, 0xfb, + 0x7c, 0xb6, 0x64, 0x2c, 0x1f, 0x3b, 0xb9, 0xc9, + 0x91, 0x25, 0x13, 0xe4, 0x09, 0x89, 0x13, 0xd5, + 0xec, 0x69, 0x42, 0xcc, 0x4e, 0xd9, 0x73, 0xf6, + 0x23, 0x51, 0x41, 0x36, 0xd2, 0xab, 0xee, 0x8f, + 0x66, 0x12, 0x63, 0x38, 0x77, 0x08, 0xf6, 0xcb, + 0x3e, 0xd5, 0x29, 0xdb, 0xfd, 0xfc, 0x42, 0x21, + 0x18, 0x40, 0x0c, 0xc8, 0x5c, 0x63, 0x17, 0x03, + 0x91, 0xc5, 0x39, 0x08, 0x77, 0x61, 0x97, 0xd1, + 0xc1, 0x51, 0xe9, 0x46, 0xdd, 0xa1, 0xe3, 0x62, + 0x55, 0x9a, 0x1c, 0x3f, 0x5e, 0xda, 0x9b, 0xc8, + 0xe2, 0x88, 0x0a, 0x85, 0x95, 0xc2, 0x81, 0x60, + 0x40, 0x05, 0x82, 0x97, 0xdf, 0xed, 0x77, 0xf3, + 0x0b, 0xa3, 0x5b, 0xdd, 0x97, 0xf4, 0x7e, 0x70, + 0xcf, 0xfa, 0xad, 0x75, 0x2f, 0xb8, 0xd7, 0xbe, + 0xcf, 0xbe, 0xc3, 0x58, 0x64, 0x58, 0x43, 0xa4, + 0x84, 0xb5, 0xaf, 0x0d, 0x25, 0x75, 0x14, 0x55, + 0x71, 0x7f, 0xc5, 0xe2, 0x11, 0x9f, 0x3f, 0x9f, + 0x39, 0x82, 0xbd, 0x84, 0x11, 0x49, 0xdc, 0x53, + 0x1c, 0xf9, 0x71, 0x4f, 0x5d, 0x35, 0xac, 0xc3, + 0x94, 0x48, 0x86, 0xd0, 0x6d, 0x11, 0xc5, 0xca, + 0x04, 0x18, 0x29, 0xc0, 0xe7, 0x6b, 0x50, 0xc6, + 0x04, 0xdf, 0xbb, 0x1c, 0xe5, 0x67, 0x60, 0x44, + 0x5d, 0xb7, 0x08, 0xb6, 0xad, 0x95, 0x15, 0x0a, + 0x18, 0xb5, 0x62, 0x31, 0x51, 0x37, 0x8c, 0x71, + 0xdd, 0x1a, 0x58, 0x36, 0x9c, 0xfb, 0x58, 0x6b, + 0xf0, 0xb9, 0x00, 0xa8, 0x21, 0xe4, 0xfa, 0x81, + 0x27, 0x6a, 0x3e, 0xec, 0x48, 0x6e, 0xcf, 0x60, + 0xce, 0xf3, 0x64, 0xcf, 0x35, 0xf9, 0x4c, 0x10, + 0x91, 0x8d, 0x69, 0x51, 0xb1, 0xab, 0x29, 0x09, + 0xfb, 0x10, 0x11, 0xac, 0x3c, 0x3d, 0xc9, 0x0d, + 0x18, 0x3b, 0xa2, 0xce, 0x60, 0xdd, 0x5b, 0x3f, + 0x0e, 0x28, 0xfd, 0xb7, 0xc1, 0x68, 0x60, 0xaf, + 0x43, 0x9d, 0x12, 0x3d, 0x37, 0x02, 0x74, 0x01, + 0xc8, 0x76, 0x71, 0xe5, 0xe2, 0x8f, 0x96, 0xda, + 0xef, 0x5f, 0x87, 0x0c, 0x59, 0xf8, 0x2e, 0xa2, + 0xf5, 0x29, 0xd1, 0xb5, 0x5c, 0xf0, 0xdc, 0x7e, + 0x75, 0x76, 0xba, 0x33, 0xb7, 0xbf, 0xe0, 0x3d, + 0xfe, 0x1e, 0xef, 0x17, 0x23, 0x2e, 0xe8, 0x01, + 0x62, 0x5d, 0x1a, 0x83, 0x79, 0x2b, 0x5a, 0xb8, + 0x3e, 0xea, 0xeb, 0xe1, 0xb7, 0x2b, 0x61, 0xcf, + 0x10, 0x64, 0x5f, 0xdc, 0xa4, 0xd7, 0xe8, 0x35, + 0x59, 0xeb, 0x2c, 0x18, 0x6f, 0x61, 0xcd, 0xb2, + 0x60, 0xa7, 0xe7, 0x61, 0x27, 0x5c, 0x83, 0x9d, + 0xe4, 0x70, 0x64, 0xdf, 0xc1, 0xd8, 0x48, 0x6f, + 0x68, 0xc9, 0x5e, 0x97, 0x48, 0xd4, 0xa6, 0xb0, + 0xbe, 0x59, 0x36, 0x81, 0x35, 0xfa, 0x82, 0xbb, + 0x77, 0x75, 0x7a, 0x80, 0x11, 0x0a, 0xb8, 0x28, + 0x03, 0x5a, 0x6b, 0x12, 0x59, 0x83, 0xa2, 0xe7, + 0x93, 0x69, 0xf6, 0x9e, 0xb0, 0xb0, 0xa7, 0xb5, + 0xe9, 0x5e, 0x6a, 0x7a, 0x5c, 0x99, 0x0a, 0xbb, + 0xee, 0xc9, 0xa7, 0x7e, 0xc8, 0x9d, 0xb2, 0x8d, + 0x75, 0x80, 0xe0, 0xdb, 0x50, 0x47, 0xab, 0xe5, + 0x59, 0xad, 0xd7, 0xad, 0x62, 0xb0, 0x37, 0x77, + 0xd4, 0xe9, 0x7b, 0xc1, 0x5d, 0xe9, 0xb2, 0xb0, + 0xbf, 0x77, 0xdf, 0x83, 0x48, 0x85, 0xf1, 0x28, + 0xf4, 0x44, 0xc8, 0x8e, 0xd9, 0x88, 0x3a, 0xf3, + 0xf4, 0x63, 0x9b, 0x13, 0xca, 0x29, 0x40, 0x74, + 0xea, 0x41, 0xbf, 0xc3, 0xa4, 0x40, 0x23, 0x8a, + 0x60, 0xce, 0x0b, 0xc6, 0xbe, 0xed, 0x25, 0xb4, + 0x90, 0x3b, 0x1d, 0x55, 0x79, 0x79, 0x79, 0xf7, + 0xdc, 0xee, 0xe4, 0x6e, 0xc9, 0x31, 0x6a, 0x36, + 0x68, 0xa7, 0x84, 0xe4, 0x6f, 0x28, 0xa2, 0xef, + 0xbb, 0xf0, 0x46, 0x44, 0xa7, 0x38, 0xeb, 0x53, + 0xcb, 0x69, 0xd1, 0x83, 0x8c, 0xa8, 0x13, 0x21, + 0x6d, 0xd0, 0xfc, 0xed, 0x26, 0x27, 0x6d, 0x8c, + 0x31, 0x4e, 0xf1, 0x65, 0xf0, 0x25, 0xd7, 0xed, + 0xd1, 0x00, 0x74, 0x7f, 0xfe, 0x64, 0x5d, 0x9b, + 0x62, 0xf5, 0x33, 0xcf, 0x92, 0xb9, 0x97, 0x12, + 0x7c, 0xa4, 0xdb, 0x6c, 0x91, 0xcf, 0x32, 0xe4, + 0xcd, 0x63, 0xd7, 0x84, 0x30, 0x72, 0x82, 0x3c, + 0x55, 0x11, 0x85, 0xb8, 0xcb, 0x01, 0x45, 0x88, + 0xb8, 0xf1, 0xc9, 0x3a, 0x6b, 0x51, 0x13, 0xc7, + 0x6f, 0x83, 0x36, 0x98, 0x05, 0x4d, 0x94, 0xfb, + 0x67, 0x9e, 0x65, 0x8e, 0x8a, 0x0a, 0xea, 0x90, + 0xdb, 0xb0, 0xcf, 0x52, 0xd6, 0x18, 0x4f, 0x58, + 0x9f, 0x74, 0x67, 0xad, 0x8b, 0x20, 0xd7, 0x19, + 0x91, 0xc3, 0x2a, 0x7a, 0x17, 0x03, 0x59, 0x67, + 0xad, 0xf4, 0xb2, 0x51, 0x83, 0x39, 0xa9, 0x3e, + 0x47, 0x2e, 0x3e, 0xb0, 0x0e, 0x8a, 0xd2, 0x67, + 0x26, 0x44, 0xbe, 0x8d, 0xac, 0x8a, 0x98, 0xe3, + 0x65, 0xfb, 0xdf, 0xf9, 0x82, 0x35, 0x6f, 0xe9, + 0xad, 0xd5, 0x83, 0x21, 0x13, 0x6b, 0x1f, 0x54, + 0x98, 0x81, 0xad, 0xb0, 0x4e, 0x9b, 0x2a, 0xa2, + 0xdb, 0xeb, 0xf1, 0xa3, 0x5e, 0xcf, 0x2e, 0x6a, + 0x7d, 0x1e, 0x5c, 0x67, 0xb7, 0x78, 0xda, 0x00, + 0xdd, 0x60, 0x4c, 0xf2, 0x1b, 0x3a, 0x20, 0xb7, + 0x2d, 0xcd, 0xcf, 0xe9, 0xf9, 0x9a, 0xd4, 0x0c, + 0x94, 0x3d, 0x65, 0x79, 0x8c, 0xf6, 0xb0, 0x57, + 0xb0, 0x22, 0xe7, 0x19, 0x46, 0x46, 0xef, 0xf7, + 0x6a, 0x0f, 0xa9, 0xf5, 0xc7, 0x20, 0x6f, 0x25, + 0xad, 0xb4, 0xf3, 0x0a, 0xbc, 0xe4, 0xf3, 0xed, + 0x65, 0x73, 0xc9, 0xbe, 0xff, 0x2e, 0x19, 0x46, + 0x8a, 0x32, 0xc1, 0x53, 0x58, 0xbf, 0x33, 0xbb, + 0xe9, 0xdd, 0x57, 0x0e, 0xa9, 0xc1, 0x2b, 0x6b, + 0x58, 0x7b, 0x38, 0x12, 0xee, 0x85, 0x39, 0xe3, + 0x3f, 0xfd, 0x74, 0x67, 0x0a, 0xbc, 0xc1, 0xef, + 0x1e, 0x67, 0x1e, 0xff, 0xeb, 0xe3, 0xcf, 0xf9, + 0xef, 0xc8, 0x23, 0xc9, 0x67, 0x90, 0x55, 0xb2, + 0x41, 0x39, 0xac, 0x96, 0x3d, 0x17, 0x4c, 0xda, + 0xe8, 0x39, 0x27, 0xc0, 0xc7, 0xea, 0xeb, 0x1c, + 0xec, 0xcd, 0x33, 0x04, 0xa8, 0xe6, 0x39, 0xa0, + 0x93, 0x90, 0x05, 0x75, 0x14, 0xb2, 0x0d, 0xbb, + 0x09, 0xe5, 0xe4, 0x33, 0x25, 0xa2, 0xce, 0xff, + 0x92, 0x6d, 0x17, 0xd6, 0xca, 0x81, 0xb7, 0xbe, + 0xda, 0x9e, 0x37, 0xe7, 0xed, 0x85, 0xc7, 0xf3, + 0x6f, 0x1f, 0xa8, 0x51, 0x87, 0xf6, 0x85, 0x3d, + 0xec, 0xc9, 0x34, 0x9f, 0x5f, 0xe8, 0x55, 0xd7, + 0x2d, 0x06, 0x0f, 0xc2, 0x58, 0x7d, 0x94, 0x41, + 0xad, 0x56, 0x07, 0x7b, 0x47, 0x88, 0x67, 0x0a, + 0x44, 0xde, 0x93, 0x32, 0xbe, 0x35, 0xee, 0x80, + 0xf7, 0xe4, 0x4c, 0x3a, 0x93, 0x5e, 0x69, 0x77, + 0x4e, 0xfb, 0x38, 0x19, 0x21, 0x55, 0x99, 0x1b, + 0x46, 0x15, 0x36, 0xdc, 0x15, 0xcc, 0x37, 0x3d, + 0xa5, 0xd7, 0xa6, 0xc3, 0x79, 0x56, 0x74, 0xa5, + 0x2a, 0xea, 0xad, 0x29, 0x33, 0x99, 0xc3, 0x3c, + 0x69, 0x3c, 0x6a, 0x82, 0xb9, 0xf7, 0x77, 0xbd, + 0xb5, 0xae, 0x8c, 0x05, 0x59, 0xfb, 0x46, 0x67, + 0x13, 0x70, 0x49, 0x8a, 0x14, 0x8e, 0x53, 0x6e, + 0xda, 0x16, 0x3c, 0xb7, 0x76, 0x85, 0x2b, 0x20, + 0xed, 0xf0, 0x3d, 0x50, 0x2c, 0xec, 0x2a, 0x86, + 0xb9, 0xb7, 0xc5, 0x60, 0x8d, 0xc4, 0xf2, 0xfd, + 0x8e, 0x5e, 0x8a, 0xf2, 0x3f, 0xf5, 0x0a, 0xc3, + 0xd7, 0x60, 0xdd, 0xf8, 0x6a, 0x7b, 0x31, 0x58, + 0xc5, 0xfe, 0x39, 0xf0, 0xda, 0x09, 0x3b, 0x17, + 0xcc, 0x13, 0x81, 0xf9, 0x15, 0xb5, 0xae, 0xda, + 0xcd, 0xc3, 0xb4, 0x93, 0xaa, 0x15, 0x0f, 0x1f, + 0x75, 0x92, 0x55, 0xb5, 0x3a, 0xf2, 0x14, 0xeb, + 0x4f, 0x90, 0xb1, 0xa0, 0xb0, 0xa6, 0x9e, 0x0c, + 0x92, 0x46, 0xc5, 0xb8, 0x10, 0x5c, 0x60, 0xd7, + 0xf8, 0x0d, 0x17, 0x9f, 0xd4, 0x01, 0x07, 0x55, + 0xfa, 0x08, 0x39, 0x28, 0xb6, 0xbe, 0x68, 0x93, + 0xf6, 0x36, 0x1c, 0xa5, 0xfd, 0x73, 0xf6, 0xc4, + 0xe3, 0xb1, 0xb7, 0x82, 0xa1, 0xc1, 0xb6, 0x85, + 0x4f, 0x90, 0x52, 0xd6, 0xd8, 0x3c, 0x13, 0x7d, + 0xd4, 0x61, 0x15, 0xca, 0xf6, 0xd0, 0x3b, 0x35, + 0x94, 0x8d, 0x29, 0x63, 0xc1, 0x5f, 0xe8, 0x7c, + 0x87, 0xfd, 0xa6, 0x40, 0x36, 0x3e, 0x7f, 0xfc, + 0x21, 0xbf, 0x4c, 0x66, 0xc8, 0x57, 0xf9, 0x93, + 0x5d, 0x32, 0x66, 0x49, 0xd1, 0xbd, 0x78, 0x6c, + 0xe6, 0x07, 0x79, 0x6e, 0x80, 0xe2, 0xdd, 0x25, + 0xe7, 0xb2, 0x69, 0xfc, 0x63, 0x91, 0xea, 0xa2, + 0x3e, 0xec, 0xc3, 0x40, 0x4e, 0x65, 0x68, 0x53, + 0xac, 0x46, 0x2b, 0x15, 0xf6, 0xba, 0xc9, 0xf2, + 0x09, 0xac, 0x79, 0x8a, 0x74, 0x5d, 0x8f, 0x0d, + 0x2e, 0xab, 0x57, 0x4e, 0xe6, 0x52, 0x63, 0xef, + 0xf1, 0x1c, 0x4f, 0xf2, 0xeb, 0x98, 0x05, 0x56, + 0xa2, 0x3b, 0x46, 0x3f, 0x12, 0x51, 0xde, 0x53, + 0x41, 0x16, 0x34, 0xd4, 0xcd, 0x8d, 0xe2, 0x0f, + 0x77, 0x76, 0x44, 0x77, 0x77, 0x52, 0xc1, 0x1e, + 0x12, 0xfe, 0x79, 0xbf, 0x02, 0x18, 0xec, 0x9a, + 0x18, 0x15, 0x1f, 0x75, 0xe9, 0xec, 0xeb, 0x48, + 0x13, 0x96, 0x2d, 0xb0, 0xc2, 0x42, 0xda, 0x91, + 0x67, 0x3e, 0xee, 0xbe, 0x44, 0xb4, 0x79, 0x22, + 0xda, 0x23, 0x2b, 0xea, 0x86, 0xe1, 0x7f, 0xd2, + 0xe1, 0x8b, 0x2c, 0xac, 0xcc, 0x44, 0xfd, 0xe5, + 0x9f, 0x27, 0x7b, 0x2a, 0xc8, 0x88, 0xab, 0xac, + 0xef, 0x6e, 0x60, 0xed, 0x94, 0x9a, 0xe3, 0x5a, + 0xa7, 0xb0, 0xf5, 0x87, 0x7d, 0xe5, 0x78, 0x58, + 0x17, 0xfd, 0xcd, 0x04, 0xd6, 0x6a, 0xd8, 0xd4, + 0x11, 0x3d, 0x25, 0xf8, 0xd7, 0xad, 0x34, 0xd7, + 0xdc, 0xbe, 0xd5, 0x18, 0x0b, 0x12, 0xf4, 0x36, + 0xf8, 0xaf, 0x17, 0x03, 0xa2, 0x8e, 0x61, 0x95, + 0xe6, 0xd6, 0x5c, 0x77, 0xd6, 0xff, 0x58, 0xb7, + 0x0e, 0x4e, 0xee, 0x05, 0x4b, 0x6d, 0xf2, 0x61, + 0xf7, 0xd6, 0xe1, 0xb9, 0xa3, 0xd3, 0xfb, 0x2b, + 0xdf, 0x4b, 0x16, 0x4d, 0xa1, 0x7b, 0x0a, 0x10, + 0x32, 0xe6, 0x76, 0xd1, 0x26, 0x00, 0xe6, 0x44, + 0xdc, 0xc9, 0xf1, 0x35, 0x61, 0xd5, 0x4c, 0x40, + 0xf6, 0x2a, 0xe7, 0xc9, 0xdf, 0x9a, 0x4f, 0x49, + 0x30, 0xf3, 0x22, 0xfd, 0xc3, 0x85, 0xf3, 0xd5, + 0x95, 0x29, 0xa5, 0x16, 0x0c, 0x3e, 0x41, 0x43, + 0xfa, 0x10, 0x18, 0xdb, 0xea, 0x47, 0xb7, 0x30, + 0xa6, 0x8a, 0x5c, 0xfc, 0x11, 0xfb, 0x32, 0xcc, + 0xd3, 0x29, 0x3b, 0x01, 0x73, 0xb5, 0x40, 0xa2, + 0x98, 0x6a, 0x6c, 0x80, 0x67, 0x2c, 0x75, 0xe3, + 0x7b, 0x1d, 0x35, 0x45, 0x0f, 0x29, 0xf9, 0x54, + 0x09, 0xf1, 0xdd, 0xbe, 0x63, 0x7c, 0x79, 0x1c, + 0xfa, 0xfb, 0x4a, 0xb3, 0x4b, 0xbc, 0xf2, 0xae, + 0xb2, 0x5b, 0x49, 0x2e, 0x28, 0x2f, 0xd1, 0xeb, + 0x74, 0xa6, 0x9d, 0x12, 0xb3, 0x0f, 0x47, 0x45, + 0x8e, 0xaf, 0x79, 0x98, 0x74, 0x92, 0x8d, 0x8a, + 0x77, 0x81, 0x5e, 0x00, 0x0b, 0x7d, 0xa3, 0x3e, + 0x6b, 0x57, 0x6c, 0x38, 0xea, 0xb2, 0x23, 0x10, + 0xf8, 0x87, 0xe2, 0x69, 0x03, 0x58, 0x31, 0xab, + 0x20, 0xd3, 0x23, 0x28, 0x6e, 0x54, 0x7e, 0x88, + 0x55, 0xe3, 0xf9, 0xf7, 0x3b, 0x6b, 0x55, 0xb8, + 0x94, 0xa3, 0x88, 0x5b, 0x4b, 0xe8, 0xfd, 0xd7, + 0xa6, 0x56, 0xf8, 0xd9, 0x04, 0x6c, 0x47, 0xe8, + 0x94, 0x67, 0xd0, 0xfb, 0xfe, 0x08, 0x8c, 0x2b, + 0x3f, 0x62, 0x47, 0x2f, 0x26, 0xec, 0x74, 0x15, + 0xf6, 0xa8, 0xee, 0xab, 0x7e, 0x0e, 0xa3, 0xd3, + 0xc7, 0xf3, 0xe6, 0xd2, 0xd3, 0xf5, 0xbd, 0xdf, + 0x4d, 0x87, 0xbc, 0x91, 0xf6, 0x32, 0xcc, 0xed, + 0x2d, 0x1f, 0x33, 0x69, 0xf0, 0x3f, 0x6f, 0xe9, + 0xd0, 0x60, 0xc6, 0xe1, 0xbf, 0x12, 0x8c, 0xf3, + 0x6b, 0x41, 0xd3, 0x5a, 0xb7, 0x9a, 0xf5, 0x75, + 0xbb, 0xf9, 0x4c, 0x79, 0x5c, 0x7e, 0x2c, 0xf8, + 0x27, 0xff, 0xac, 0x7c, 0xaf, 0xf4, 0x6a, 0xc4, + 0x90, 0x4d, 0x59, 0x05, 0xcf, 0x3a, 0x66, 0x9e, + 0xcc, 0x3c, 0x4a, 0xd6, 0xd7, 0xa4, 0x7f, 0xd5, + 0xbf, 0x66, 0x5c, 0xb6, 0x9d, 0x7d, 0x90, 0xee, + 0x81, 0x6a, 0x77, 0x39, 0xaf, 0x89, 0xa3, 0x5f, + 0x77, 0xd1, 0x11, 0x9a, 0x10, 0x39, 0x90, 0x82, + 0x63, 0x83, 0xfe, 0xd6, 0x44, 0x54, 0xe9, 0x41, + 0x2e, 0x71, 0xc9, 0x73, 0x9b, 0x3d, 0x90, 0xcf, + 0x7d, 0x50, 0x0e, 0xb6, 0xda, 0x82, 0xeb, 0x4b, + 0x35, 0x92, 0x57, 0x65, 0x14, 0x31, 0xec, 0x68, + 0x87, 0xbd, 0xe7, 0x0e, 0xf5, 0x9a, 0xd4, 0xbe, + 0xf3, 0xd6, 0x42, 0x75, 0xa5, 0x5a, 0x5b, 0x95, + 0xdd, 0xfb, 0xc1, 0x6e, 0xb7, 0x16, 0xb1, 0xcb, + 0x17, 0xec, 0x7e, 0xec, 0xf8, 0x75, 0x8e, 0xf7, + 0x3b, 0x6b, 0x9d, 0xec, 0x7d, 0x27, 0xaa, 0x09, + 0xf1, 0x73, 0x5a, 0x43, 0xca, 0x49, 0x0b, 0x3b, + 0xe7, 0x22, 0xbf, 0x6a, 0xc9, 0xb8, 0x94, 0x9f, + 0xed, 0x77, 0xb7, 0xb3, 0xa2, 0x7e, 0xf3, 0x68, + 0x49, 0xc7, 0xed, 0x29, 0x5e, 0xeb, 0x75, 0x14, + 0x49, 0x82, 0x3c, 0x2c, 0xb8, 0x79, 0xfe, 0x67, + 0xf7, 0x3a, 0x76, 0x6f, 0xf6, 0xce, 0xfc, 0x34, + 0x68, 0x7f, 0x69, 0x5e, 0x60, 0xee, 0xe0, 0x15, + 0x83, 0xbd, 0xff, 0xf3, 0x62, 0xf2, 0x65, 0xb0, + 0x4e, 0xb0, 0x9a, 0x72, 0x36, 0xec, 0xbe, 0x82, + 0xb6, 0x77, 0x82, 0x62, 0x3f, 0xdc, 0x4b, 0xf4, + 0xd3, 0x77, 0xa9, 0x6a, 0xca, 0x48, 0x99, 0xd1, + 0x13, 0x9d, 0x92, 0x4a, 0x5d, 0xbc, 0x73, 0xdd, + 0x9d, 0xe6, 0x7f, 0xde, 0xd3, 0xde, 0xfc, 0xb1, + 0x33, 0xa1, 0xca, 0x75, 0xc0, 0x88, 0xba, 0xb2, + 0x35, 0x86, 0x9d, 0x6b, 0xc1, 0x8f, 0x1d, 0xd3, + 0xb7, 0xa6, 0xc7, 0xde, 0xf5, 0x73, 0x23, 0xca, + 0x7b, 0xfd, 0xcd, 0x0a, 0x58, 0xfd, 0xfb, 0xba, + 0x70, 0x84, 0x4f, 0x66, 0x99, 0x09, 0x9f, 0x50, + 0x96, 0x10, 0xdc, 0xda, 0x66, 0x57, 0x74, 0x06, + 0x78, 0xb7, 0x5c, 0x5d, 0x32, 0xd6, 0xcd, 0x44, + 0x0f, 0x41, 0xc9, 0x3e, 0xcc, 0x12, 0x41, 0x5d, + 0x3f, 0xbe, 0xfe, 0xcb, 0x67, 0x8f, 0x1f, 0xc9, + 0xbe, 0x7e, 0xfd, 0x67, 0x55, 0x50, 0x64, 0xb8, + 0x83, 0xe7, 0x6f, 0xc1, 0xef, 0xbb, 0x45, 0xab, + 0x58, 0xbd, 0xfb, 0xe3, 0x83, 0xd5, 0x7e, 0x47, + 0xfa, 0xe5, 0x6e, 0x89, 0x8e, 0x76, 0x27, 0x29, + 0xf6, 0x9f, 0xc6, 0x0e, 0xb3, 0x73, 0x1e, 0x22, + 0x64, 0x8c, 0xd3, 0x50, 0xf0, 0x2e, 0x72, 0x01, + 0x71, 0x35, 0x37, 0x8c, 0x7b, 0xf7, 0x32, 0x44, + 0xca, 0xc9, 0xde, 0x71, 0xc7, 0xa2, 0x5e, 0xb6, + 0x9d, 0xb1, 0xa6, 0xe5, 0x93, 0x95, 0x60, 0xad, + 0xc0, 0x53, 0xb0, 0x87, 0x38, 0x76, 0x88, 0x9e, + 0xec, 0x68, 0x87, 0x8b, 0xce, 0x77, 0xcf, 0xe2, + 0x8d, 0xa4, 0xa8, 0x7d, 0xc0, 0x2c, 0x8f, 0xf1, + 0xfa, 0xe2, 0x91, 0xd1, 0x32, 0x76, 0x3e, 0x10, + 0x9d, 0x22, 0xa2, 0x3c, 0x61, 0xbf, 0xd2, 0x47, + 0x3c, 0x39, 0xab, 0xe5, 0xa0, 0x86, 0x17, 0x5c, + 0x36, 0xc0, 0x60, 0x11, 0xbb, 0xb2, 0x2b, 0xea, + 0x34, 0x44, 0xbf, 0xfc, 0xb8, 0xe0, 0xaf, 0x0f, + 0x64, 0xf0, 0x5b, 0x8a, 0xf7, 0x32, 0xff, 0xf0, + 0xed, 0x3a, 0x5b, 0xd7, 0xef, 0xfd, 0xf5, 0x41, + 0x77, 0x9d, 0xde, 0x67, 0x8d, 0x36, 0x68, 0x58, + 0xd1, 0x91, 0x3e, 0x26, 0xf3, 0x29, 0xd6, 0xa6, + 0xac, 0xe5, 0x6a, 0x6d, 0xf2, 0x4d, 0xb0, 0x5f, + 0x2a, 0x1b, 0x1d, 0xa8, 0xb8, 0x11, 0x75, 0x0b, + 0xc8, 0xa2, 0xef, 0xca, 0xe7, 0xe3, 0x44, 0x1d, + 0xdb, 0x64, 0x7f, 0xfe, 0x3e, 0x5e, 0xc3, 0x28, + 0x4c, 0xff, 0xec, 0xe0, 0x53, 0xc6, 0xfe, 0x32, + 0x10, 0x8f, 0x0f, 0xe5, 0x4a, 0xd8, 0x85, 0x3b, + 0x0e, 0xf6, 0x78, 0x52, 0x1f, 0x68, 0x1b, 0xf9, + 0x43, 0x5a, 0x43, 0x5e, 0xdb, 0xed, 0xd6, 0x6f, + 0x45, 0x8d, 0x98, 0xe2, 0x35, 0xda, 0xe8, 0x2b, + 0x83, 0x7e, 0x47, 0x3d, 0x0f, 0x2b, 0x3a, 0x69, + 0x3d, 0xb5, 0xe4, 0x55, 0x85, 0x55, 0x51, 0xfb, + 0xc4, 0xa7, 0x7e, 0x41, 0xbf, 0x72, 0xfe, 0xd1, + 0x33, 0xf4, 0x26, 0x67, 0x98, 0x72, 0x30, 0xd4, + 0xab, 0x41, 0xd8, 0x0e, 0x62, 0xd6, 0x9a, 0x15, + 0x6f, 0x60, 0x56, 0x6e, 0xb5, 0xd1, 0xaf, 0x41, + 0x80, 0x9d, 0xad, 0x6b, 0x7b, 0x69, 0x3f, 0xe4, + 0x6d, 0xc2, 0x51, 0x02, 0xe9, 0xcc, 0x3b, 0x67, + 0xdd, 0x6f, 0x44, 0xc4, 0x26, 0xe1, 0xac, 0xdb, + 0xc5, 0x07, 0xe7, 0x7f, 0x26, 0xb5, 0x5c, 0x0b, + 0xf5, 0x6c, 0xdc, 0x4b, 0x7a, 0x2f, 0x6a, 0x92, + 0x37, 0x12, 0x0b, 0x19, 0xfd, 0x13, 0xb5, 0xac, + 0x33, 0xe7, 0xde, 0x56, 0xdf, 0xe3, 0x60, 0x84, + 0x9e, 0x17, 0xb2, 0x98, 0xc6, 0x5f, 0x4f, 0xec, + 0xd1, 0x1f, 0x73, 0x82, 0x03, 0x6f, 0xc1, 0x6f, + 0xa5, 0x3d, 0x4a, 0x39, 0xaf, 0xd0, 0xeb, 0x79, + 0x9c, 0x7e, 0x3b, 0x5d, 0xdd, 0xea, 0xf5, 0x7a, + 0xbc, 0x21, 0xf8, 0xf7, 0x58, 0xef, 0x84, 0xbf, + 0xa9, 0x04, 0x8f, 0x68, 0xdf, 0x03, 0xcf, 0x48, + 0x4e, 0xa0, 0x15, 0x3e, 0x5f, 0xe4, 0xf5, 0x25, + 0xf6, 0x59, 0x30, 0xce, 0xa6, 0x78, 0x5a, 0x3c, + 0x1b, 0x0d, 0xfd, 0xd9, 0xc8, 0xcf, 0x1c, 0x7c, + 0xd6, 0x05, 0x20, 0x66, 0x1a, 0x75, 0x79, 0x55, + 0x06, 0x7a, 0xfb, 0xa6, 0x95, 0x19, 0xf4, 0x8e, + 0xed, 0xb4, 0x39, 0xe3, 0x7c, 0x23, 0xaa, 0x1a, + 0x61, 0x3d, 0xbd, 0x4a, 0xd8, 0x9b, 0x54, 0xf4, + 0x73, 0x72, 0x8a, 0x66, 0x91, 0x61, 0xc7, 0x32, + 0x45, 0x8d, 0x3a, 0x99, 0x34, 0x79, 0xd4, 0xf5, + 0x45, 0xae, 0x64, 0x74, 0xbf, 0x91, 0x25, 0x13, + 0xd9, 0x27, 0xb4, 0x65, 0xca, 0xe0, 0x93, 0x3b, + 0xfa, 0x75, 0xd6, 0xff, 0x93, 0x97, 0x7a, 0x1a, + 0xb9, 0xfe, 0xac, 0x64, 0xe8, 0x36, 0xf1, 0x08, + 0x6d, 0xea, 0xd3, 0x55, 0xac, 0x5f, 0x92, 0x4d, + 0x70, 0x22, 0xaf, 0x0d, 0x3b, 0xb9, 0x80, 0x25, + 0xc7, 0x58, 0x4d, 0x2b, 0x09, 0x72, 0x1f, 0xf9, + 0xdd, 0x34, 0x9f, 0x39, 0x4e, 0xdb, 0x30, 0x93, + 0x4c, 0x76, 0xb5, 0xd8, 0x3a, 0x8a, 0x72, 0xc7, + 0xa2, 0x56, 0xda, 0x22, 0x8e, 0xa8, 0x6a, 0x43, + 0x2b, 0x0c, 0x88, 0x63, 0xda, 0x99, 0x34, 0x97, + 0x74, 0x7b, 0x83, 0x7c, 0x9f, 0x10, 0x77, 0x84, + 0xe8, 0x19, 0xb0, 0xa4, 0x13, 0x3e, 0xf1, 0xcd, + 0xc8, 0x99, 0xe3, 0x5e, 0xe9, 0x6f, 0x97, 0x1f, + 0x7c, 0xbc, 0xd3, 0x7b, 0x56, 0x05, 0x65, 0x6d, + 0x76, 0x34, 0x3c, 0x0d, 0xfb, 0x09, 0x74, 0x4c, + 0xaa, 0x8b, 0x71, 0x0a, 0x9d, 0xca, 0xbd, 0x0f, + 0x9e, 0x34, 0xe8, 0x74, 0xb0, 0x28, 0xa2, 0xcb, + 0x70, 0xda, 0xeb, 0x3f, 0x53, 0x40, 0xc9, 0x2b, + 0xc7, 0x15, 0xd8, 0xef, 0xa4, 0x4d, 0xac, 0x5f, + 0x3f, 0x4f, 0xa4, 0xc7, 0x91, 0x73, 0xc7, 0xc1, + 0xda, 0x8c, 0xef, 0xa7, 0xc1, 0xc7, 0x36, 0x5a, + 0x17, 0x79, 0x18, 0x15, 0xb7, 0x2a, 0x56, 0xa2, + 0x4b, 0x1c, 0xb2, 0x4b, 0x77, 0x0b, 0x49, 0xe4, + 0x47, 0x61, 0x37, 0x96, 0x19, 0x16, 0x72, 0x4d, + 0x5b, 0xc4, 0xbd, 0xe8, 0x19, 0x6f, 0x41, 0x2f, + 0x34, 0xb6, 0x44, 0x34, 0x72, 0xb8, 0x3b, 0x4d, + 0x9f, 0x86, 0x3d, 0x70, 0x70, 0xcf, 0xa5, 0xdc, + 0x92, 0x03, 0x7e, 0x0c, 0x2d, 0xfc, 0xb3, 0x06, + 0x9f, 0x33, 0x58, 0x81, 0x12, 0xc5, 0xbe, 0x86, + 0x5a, 0xa7, 0x0f, 0xea, 0xab, 0xb9, 0x43, 0xd4, + 0xa5, 0x59, 0x2f, 0xeb, 0x2c, 0x39, 0x77, 0xa9, + 0x8c, 0x9b, 0x51, 0xff, 0xa9, 0x9f, 0xf7, 0x93, + 0x7e, 0x9a, 0xbf, 0xf2, 0x09, 0x60, 0x38, 0xac, + 0xcd, 0xb0, 0xc3, 0x0e, 0x48, 0xf0, 0xca, 0xad, + 0x8a, 0x87, 0xfd, 0xe4, 0xde, 0xbf, 0xa7, 0xfe, + 0x3c, 0x63, 0xc4, 0x1d, 0x71, 0xdd, 0x84, 0x73, + 0xdd, 0x7c, 0xa4, 0x67, 0x37, 0x26, 0xbe, 0xaf, + 0x89, 0xea, 0xd1, 0x82, 0x03, 0xe8, 0x1a, 0x9f, + 0xf3, 0xd9, 0x29, 0xd8, 0x59, 0xbb, 0xe0, 0x64, + 0xcd, 0x82, 0xde, 0xfc, 0x59, 0xfd, 0x5e, 0x15, + 0xab, 0x80, 0x28, 0xbe, 0x74, 0x7c, 0x79, 0xff, + 0x82, 0x37, 0xcf, 0x17, 0x54, 0x64, 0xec, 0xde, + 0x74, 0x66, 0x41, 0x13, 0x30, 0x99, 0x59, 0xb6, + 0x9b, 0x9d, 0x94, 0x7d, 0xd6, 0x9e, 0xea, 0x7c, + 0x6d, 0x17, 0xec, 0x94, 0x38, 0xf0, 0x8e, 0x6e, + 0xe7, 0x07, 0x9e, 0xe8, 0x04, 0x7e, 0x19, 0x19, + 0xa8, 0x51, 0x90, 0x1c, 0x1b, 0x19, 0x78, 0x87, + 0x6b, 0xa2, 0xd3, 0xe6, 0xa4, 0x39, 0xe9, 0x18, + 0x0e, 0x56, 0xca, 0x8b, 0xdf, 0x46, 0x1c, 0x66, + 0xc1, 0x58, 0x8f, 0x5b, 0xe5, 0xba, 0x3c, 0xa6, + 0x1b, 0x4f, 0x85, 0xa7, 0x87, 0x2a, 0xa9, 0x2c, + 0x22, 0x52, 0x95, 0xa0, 0x68, 0x96, 0x4d, 0x51, + 0x33, 0xef, 0x65, 0x45, 0x94, 0x4a, 0x3e, 0xef, + 0x69, 0x88, 0xcf, 0x8a, 0x98, 0x72, 0x8c, 0x8e, + 0x05, 0xd4, 0xa4, 0xc2, 0x8d, 0xb9, 0x4b, 0x1f, + 0xc8, 0x9e, 0x03, 0xd8, 0x59, 0x0a, 0x50, 0xc5, + 0x2b, 0x58, 0x0b, 0x18, 0xb0, 0xcb, 0x67, 0xd8, + 0x57, 0x35, 0xd5, 0x1b, 0x25, 0x34, 0x7c, 0x02, + 0xdd, 0xbc, 0xb2, 0xa4, 0x2c, 0xf1, 0x4b, 0xee, + 0x92, 0x8b, 0xcf, 0x44, 0x9b, 0x67, 0xb7, 0x58, + 0xd1, 0x99, 0x77, 0x3f, 0x10, 0x67, 0x65, 0x35, + 0xd3, 0xb6, 0x7c, 0x32, 0x46, 0xfb, 0x9c, 0xf9, + 0x8d, 0x71, 0x46, 0x17, 0x95, 0x8d, 0x4c, 0x51, + 0xa2, 0x27, 0x18, 0xd0, 0x9f, 0xf3, 0x3f, 0x5f, + 0x6b, 0x5c, 0xdb, 0xb8, 0xf2, 0xf3, 0x66, 0xe3, + 0x7f, 0x85, 0xd1, 0x6d, 0xe4, 0x9c, 0xc4, 0x0e, + 0x0a, 0x35, 0xdc, 0x81, 0xa2, 0x3f, 0x22, 0xcd, + 0x75, 0x51, 0x2e, 0x54, 0x2a, 0x73, 0xa9, 0x71, + 0xb8, 0xd6, 0x97, 0xec, 0x3e, 0xb7, 0xfb, 0xdd, + 0xc4, 0xc4, 0xf3, 0x71, 0xe4, 0x73, 0xd3, 0x64, + 0x06, 0x08, 0xfc, 0x56, 0xa7, 0xe4, 0x2e, 0x07, + 0x25, 0x52, 0x12, 0x55, 0xd8, 0xe5, 0x63, 0xd9, + 0x0d, 0x3b, 0xac, 0x9a, 0xa9, 0x35, 0xbc, 0x0c, + 0x01, 0xbb, 0x43, 0x72, 0x9d, 0x49, 0xfb, 0x2b, + 0x7b, 0xa8, 0x13, 0x9d, 0x6d, 0x58, 0x19, 0x11, + 0x09, 0x5d, 0xa3, 0x8b, 0xc1, 0x53, 0x32, 0x7f, + 0x8c, 0x7d, 0xe1, 0xd7, 0x7a, 0xaf, 0x2d, 0xd7, + 0x8b, 0x87, 0x15, 0x93, 0x74, 0x2e, 0xbe, 0xb8, + 0xe5, 0xfc, 0xa5, 0x1b, 0x3d, 0x19, 0xa0, 0xe4, + 0x7e, 0xb4, 0x15, 0xd5, 0x69, 0x82, 0x84, 0xb7, + 0xae, 0xb6, 0x1e, 0xcb, 0xa7, 0x9a, 0xf2, 0x28, + 0x56, 0x85, 0x4c, 0xd4, 0x75, 0x7b, 0xc9, 0x2e, + 0x09, 0x3e, 0x5a, 0xb1, 0x77, 0x60, 0x1c, 0x62, + 0x21, 0xd4, 0x2a, 0x2f, 0x95, 0xfb, 0xc1, 0xbd, + 0xd6, 0x83, 0x96, 0xcd, 0xed, 0x16, 0x0c, 0x5e, + 0x6f, 0x45, 0x4f, 0x64, 0xeb, 0xc5, 0x82, 0xfc, + 0x54, 0x3e, 0xa3, 0x4c, 0x04, 0xcf, 0x2d, 0xad, + 0x0e, 0xbf, 0xab, 0xcb, 0x2e, 0x0a, 0xf2, 0xb5, + 0xeb, 0xc1, 0x3d, 0xeb, 0x9e, 0xd5, 0x68, 0x88, + 0x39, 0x69, 0xf4, 0x32, 0x66, 0xd8, 0x57, 0x1a, + 0xfc, 0x83, 0xa6, 0x4b, 0x44, 0x1e, 0xbb, 0x84, + 0x2c, 0x1b, 0xc1, 0xbd, 0x4e, 0x91, 0x62, 0x3e, + 0xea, 0xc8, 0x87, 0xfd, 0x7f, 0x27, 0xfd, 0x5c, + 0x70, 0x7d, 0xa0, 0x7b, 0x7c, 0x3a, 0x3f, 0xc8, + 0x07, 0x1e, 0xa9, 0xa7, 0xc1, 0x0b, 0x9b, 0x50, + 0x9e, 0x70, 0x99, 0x9f, 0x89, 0x9e, 0x2e, 0x2a, + 0x3b, 0xe8, 0x44, 0x11, 0xa3, 0xcc, 0x51, 0x7f, + 0x1f, 0x45, 0x1e, 0x41, 0x33, 0xb8, 0x53, 0x7d, + 0xb0, 0x33, 0x64, 0xc5, 0xcd, 0x66, 0x47, 0x9c, + 0x95, 0xdc, 0x2d, 0x87, 0x38, 0x9a, 0x93, 0x09, + 0x8a, 0xce, 0x17, 0x4e, 0x22, 0x40, 0x46, 0x8a, + 0xb0, 0x56, 0xd1, 0xb3, 0x39, 0x5c, 0xec, 0x1d, + 0xd6, 0xa4, 0xa4, 0x36, 0x6d, 0x4d, 0x05, 0x18, + 0x65, 0x5a, 0x3a, 0x5c, 0x67, 0x04, 0xe6, 0x7d, + 0x94, 0x84, 0xcf, 0x4b, 0xe5, 0x3a, 0x13, 0x4f, + 0x9e, 0xc5, 0x67, 0xa6, 0x72, 0x95, 0x5d, 0xc6, + 0x27, 0x47, 0x04, 0x51, 0x36, 0x4d, 0xb2, 0xfd, + 0xd7, 0x99, 0xec, 0xff, 0x0d, 0x03, 0xfb, 0xfe, + 0x84, 0x88, 0xb1, 0x60, 0xa5, 0x2c, 0xb1, 0xf7, + 0x1c, 0xa5, 0xd6, 0x3c, 0x50, 0xad, 0x5c, 0x55, + 0xab, 0x4e, 0xaf, 0xf6, 0x3b, 0x69, 0x0f, 0xf2, + 0x5f, 0xfa, 0x3f, 0x0b, 0x8b, 0x43, 0xd0, 0x77, + 0x98, 0x15, 0x8c, 0x10, 0xec, 0xe5, 0x75, 0x0d, + 0xeb, 0xae, 0xec, 0x1c, 0xd1, 0x88, 0x1a, 0xf2, + 0x9f, 0x6d, 0xf5, 0x21, 0x9f, 0xf0, 0xfe, 0x54, + 0xd3, 0x4c, 0xd4, 0x58, 0x15, 0x2e, 0xef, 0x17, + 0xf5, 0x55, 0x4a, 0x4f, 0xe9, 0x69, 0xbb, 0xe1, + 0xa5, 0xed, 0xd4, 0x1e, 0x85, 0xd5, 0xcb, 0xbb, + 0x5f, 0x7b, 0x69, 0x07, 0xbb, 0xa8, 0x5f, 0x51, + 0xfa, 0x1d, 0xf9, 0x30, 0xaf, 0xa3, 0xb5, 0x0a, + 0xfc, 0x85, 0x9b, 0xeb, 0x68, 0x7e, 0xce, 0x9b, + 0x3e, 0x36, 0x77, 0x64, 0xdf, 0x8f, 0xac, 0xfa, + 0x8a, 0x67, 0x9e, 0x8d, 0x77, 0x53, 0xde, 0x14, + 0x7f, 0xa1, 0x66, 0xb8, 0xb0, 0x0b, 0x36, 0xf2, + 0x55, 0xa2, 0xa8, 0x38, 0xb1, 0xf2, 0x22, 0x43, + 0xb8, 0x04, 0xc3, 0x16, 0x91, 0x5e, 0xec, 0xf0, + 0x0c, 0x3a, 0xa5, 0x7b, 0xd5, 0x4b, 0xee, 0x4e, + 0xee, 0xfe, 0x47, 0x72, 0x04, 0x3c, 0x29, 0xec, + 0xe7, 0x59, 0x72, 0x6c, 0x46, 0x84, 0x7f, 0x24, + 0x2b, 0x8c, 0x2a, 0x81, 0xee, 0x1a, 0xce, 0xa5, + 0x60, 0xa9, 0x26, 0xbb, 0x71, 0xde, 0x62, 0x3a, + 0x9b, 0x0d, 0x64, 0x3c, 0xa7, 0xe1, 0x69, 0x41, + 0xd6, 0x9b, 0xf3, 0x40, 0x73, 0x7a, 0x4d, 0x6f, + 0x9a, 0x4f, 0x7a, 0x4b, 0x9e, 0xed, 0x11, 0x51, + 0x39, 0xae, 0x0e, 0x44, 0x27, 0xce, 0x6d, 0xc5, + 0x14, 0x3c, 0x22, 0xfe, 0x06, 0xee, 0xc0, 0x19, + 0xa6, 0x73, 0xb1, 0x46, 0x8a, 0x78, 0xa6, 0x2d, + 0xbf, 0xe5, 0x7e, 0xc0, 0x0d, 0xd7, 0x7a, 0x8d, + 0x8c, 0xc1, 0x9c, 0xaf, 0xf9, 0x0d, 0x38, 0x72, + 0x7e, 0xda, 0x98, 0x34, 0xbe, 0x91, 0x1d, 0xcf, + 0xdd, 0xbc, 0x7b, 0x25, 0x2f, 0x5f, 0xab, 0xb1, + 0x34, 0x2f, 0xb2, 0x13, 0xdd, 0x65, 0xf9, 0x59, + 0x77, 0xeb, 0x75, 0xf4, 0xb4, 0xdc, 0xf9, 0x60, + 0xdb, 0x29, 0xd9, 0xe5, 0xdd, 0xe5, 0x8d, 0xb2, + 0x03, 0xab, 0x6f, 0x96, 0x1c, 0x43, 0x3e, 0x77, + 0xe9, 0xbd, 0x35, 0x7c, 0x8f, 0xcb, 0x34, 0xf0, + 0xc4, 0xea, 0x6f, 0xe5, 0x33, 0xab, 0x57, 0xee, + 0x91, 0x6f, 0x7b, 0x4f, 0x36, 0x8c, 0x9e, 0x38, + 0xd4, 0xe7, 0x1f, 0xf4, 0x91, 0xaa, 0xac, 0x31, + 0x99, 0x30, 0xff, 0xe3, 0x7c, 0x82, 0x65, 0x9d, + 0x65, 0x1f, 0xbf, 0xce, 0xb9, 0xd1, 0xfd, 0xc6, + 0x11, 0x97, 0xd6, 0x2a, 0x9e, 0xd0, 0xe0, 0x07, + 0x09, 0x36, 0xee, 0x3c, 0xf9, 0xfe, 0xac, 0xf0, + 0xf6, 0x67, 0x7a, 0xf9, 0xee, 0xf7, 0xea, 0x6d, + 0xc8, 0x40, 0x9d, 0x08, 0xe8, 0x9b, 0xa9, 0xe3, + 0xab, 0x80, 0x98, 0xcc, 0xf6, 0xa7, 0x74, 0xfc, + 0x41, 0xaa, 0x4d, 0xed, 0x94, 0x47, 0x6b, 0x19, + 0xd8, 0xfb, 0xe9, 0x76, 0xba, 0x9d, 0x3b, 0xfa, + 0xf6, 0xef, 0x69, 0xbf, 0xd0, 0xa1, 0x46, 0xc1, + 0x7f, 0xb1, 0x8f, 0x4f, 0xb2, 0x82, 0xf9, 0xeb, + 0x5c, 0xdb, 0x91, 0xac, 0xce, 0x8a, 0xa5, 0x35, + 0x70, 0x87, 0xc7, 0xec, 0x32, 0xa0, 0x9c, 0x32, + 0x83, 0xc3, 0x29, 0xba, 0xd8, 0x6b, 0x97, 0x38, + 0x24, 0xb4, 0x64, 0x13, 0x1c, 0x77, 0x52, 0xc9, + 0x30, 0x0c, 0xc0, 0x22, 0x57, 0xc9, 0x4f, 0xa3, + 0xb2, 0x23, 0x01, 0x4f, 0x19, 0xb9, 0xe3, 0xeb, + 0xde, 0x9a, 0xff, 0x69, 0x75, 0xdc, 0xc6, 0x3e, + 0x9b, 0xf9, 0xa3, 0x25, 0x67, 0xe1, 0x81, 0x88, + 0x14, 0x89, 0x8e, 0x5e, 0x52, 0x17, 0xc0, 0x4e, + 0x10, 0xdf, 0x67, 0xc4, 0x33, 0x70, 0xe2, 0x42, + 0xda, 0x2b, 0x80, 0x89, 0xe2, 0xb0, 0xd3, 0xd2, + 0x2d, 0xb0, 0xf9, 0x3c, 0xdf, 0x92, 0x98, 0x30, + 0x7a, 0x9e, 0x48, 0x21, 0xd0, 0xbd, 0x87, 0x27, + 0x62, 0x57, 0x32, 0xe6, 0x9f, 0xb7, 0x7e, 0x7d, + 0xb6, 0x19, 0x8c, 0x7b, 0x7f, 0xf8, 0x73, 0xa5, + 0x8b, 0x15, 0xfc, 0xfd, 0xf8, 0x73, 0x3c, 0xc4, + 0xd7, 0x3d, 0x8e, 0x64, 0x17, 0x19, 0x92, 0x31, + 0xfa, 0x21, 0x17, 0x56, 0xc1, 0xaf, 0xbc, 0x1b, + 0xe8, 0xc0, 0xd0, 0x5d, 0xf3, 0xe2, 0x82, 0x17, + 0x84, 0x9c, 0xcd, 0x66, 0x30, 0xe2, 0x14, 0x8e, + 0x9f, 0xe9, 0xbf, 0x8a, 0x9b, 0xb1, 0xe6, 0x7e, + 0xd2, 0x48, 0x06, 0x15, 0xe7, 0xc2, 0xc6, 0x85, + 0x1f, 0xae, 0xad, 0xdc, 0xb0, 0x67, 0x9d, 0xca, + 0xfe, 0xac, 0x59, 0x09, 0x99, 0x21, 0x63, 0xbc, + 0x60, 0x3f, 0x37, 0xcf, 0xd8, 0x57, 0x76, 0xce, + 0xd4, 0xfe, 0xfb, 0x1f, 0x22, 0x57, 0x78, 0xa8, + 0xb6, 0x65, 0xd5, 0x1b, 0x66, 0x5a, 0x9a, 0x47, + 0xb2, 0x43, 0xb0, 0xe8, 0x00, 0x8e, 0xfd, 0x63, + 0x44, 0x07, 0x15, 0x51, 0x67, 0x9d, 0x6f, 0x1e, + 0x45, 0x67, 0x9a, 0x5e, 0x82, 0x0e, 0x46, 0x7d, + 0xb1, 0x72, 0x7c, 0xdb, 0x46, 0x9b, 0x33, 0x2d, + 0x2a, 0x78, 0x3e, 0x0f, 0xf2, 0x06, 0x31, 0x00, + 0xc3, 0x5e, 0x65, 0x3f, 0xdd, 0x55, 0xfb, 0xf5, + 0xfb, 0xfd, 0x27, 0xd3, 0xd1, 0x13, 0xcf, 0xa7, + 0x1b, 0xe5, 0x44, 0xd2, 0xe9, 0xde, 0x67, 0xd0, + 0x1d, 0x84, 0xd9, 0x61, 0x92, 0x3b, 0x06, 0x10, + 0x40, 0x3e, 0x0b, 0x79, 0xa6, 0xe1, 0x53, 0x41, + 0xf2, 0x51, 0x06, 0x10, 0xdf, 0x09, 0x6b, 0xf1, + 0x90, 0x85, 0x97, 0xc2, 0x27, 0x1a, 0x87, 0xf1, + 0x76, 0x89, 0x46, 0x24, 0xc7, 0x6d, 0xde, 0x5e, + 0xb4, 0x93, 0x80, 0x4b, 0xb2, 0xf6, 0x3c, 0xa8, + 0x0d, 0x35, 0x7c, 0x8e, 0x27, 0xb2, 0xab, 0x11, + 0x4a, 0x15, 0xc2, 0x5c, 0x5c, 0xa1, 0x57, 0xad, + 0x73, 0xf2, 0x39, 0x44, 0x18, 0xb9, 0x19, 0x51, + 0x4e, 0x2b, 0xc3, 0x4a, 0xfe, 0x40, 0xfa, 0xfb, + 0xe5, 0xa0, 0xa8, 0x16, 0x5f, 0x94, 0x55, 0xe5, + 0x45, 0x73, 0x63, 0x13, 0x06, 0x7c, 0x7d, 0xb1, + 0xa9, 0x6e, 0xaa, 0x77, 0x65, 0x3f, 0x46, 0x5e, + 0x75, 0xe5, 0xb0, 0x5f, 0xdb, 0xaf, 0x9d, 0x7a, + 0xad, 0x57, 0x85, 0xab, 0x9c, 0xc8, 0x28, 0x0d, + 0x46, 0xd3, 0x07, 0x2a, 0xaa, 0x2c, 0xea, 0x34, + 0x5c, 0xfd, 0xaf, 0x8b, 0x6f, 0x75, 0xe5, 0xbf, + 0x38, 0xf8, 0xec, 0x24, 0xea, 0x80, 0xd4, 0xef, + 0x73, 0x92, 0x16, 0x1d, 0xfd, 0x56, 0x7d, 0xdd, + 0x3f, 0xed, 0x8f, 0xec, 0x9b, 0x02, 0x6d, 0xc6, + 0x94, 0x4b, 0xca, 0x68, 0x10, 0xb7, 0x93, 0x07, + 0x29, 0xf3, 0x4f, 0x49, 0xf9, 0x9c, 0xd9, 0x61, + 0x8b, 0x44, 0xcf, 0x4a, 0x46, 0xee, 0x07, 0x93, + 0xd5, 0x66, 0xbf, 0x66, 0xb3, 0x0c, 0x3c, 0x3d, + 0x27, 0x48, 0x5b, 0x99, 0x8e, 0xd6, 0x3d, 0x67, + 0xcd, 0x81, 0x67, 0xfd, 0x40, 0x78, 0xb8, 0x7d, + 0x4f, 0xb2, 0xd2, 0x2d, 0xd2, 0xde, 0xa8, 0xe1, + 0x6f, 0x24, 0xaf, 0x1e, 0x33, 0x4b, 0x45, 0x5e, + 0xf6, 0x19, 0x0c, 0xac, 0x22, 0x28, 0xee, 0x83, + 0x2f, 0x22, 0xaa, 0x83, 0x07, 0xef, 0x55, 0xf2, + 0xc8, 0x35, 0x57, 0x53, 0x75, 0xbd, 0xca, 0x04, + 0x93, 0xfc, 0xe4, 0x93, 0xfe, 0xde, 0xeb, 0xa2, + 0x00, 0xfb, 0x37, 0x9f, 0x3a, 0x7a, 0xa5, 0xa4, + 0x54, 0x1a, 0x60, 0x3f, 0xf6, 0xaf, 0x43, 0x06, + 0x51, 0x8a, 0x9b, 0xef, 0x71, 0x6c, 0x44, 0x8e, + 0x5f, 0xf8, 0xcf, 0x43, 0xd1, 0xd3, 0x90, 0x5b, + 0xdb, 0x18, 0x9f, 0x0b, 0xb0, 0x8a, 0xf7, 0xac, + 0x57, 0x77, 0x48, 0x8d, 0x60, 0xbf, 0x63, 0xc0, + 0x75, 0x98, 0xff, 0x4d, 0x13, 0xec, 0x77, 0xd5, + 0x3c, 0x48, 0x5b, 0x33, 0x8d, 0xb0, 0xb7, 0xa5, + 0x8d, 0x55, 0x61, 0x73, 0xb0, 0x52, 0xa1, 0xcf, + 0x1e, 0x34, 0x59, 0xaa, 0x9d, 0x7e, 0x33, 0x7d, + 0x9c, 0x13, 0xcf, 0xaa, 0xd0, 0xdf, 0xe8, 0xed, + 0xea, 0x4e, 0xbe, 0x81, 0x8c, 0x14, 0xb6, 0x55, + 0x69, 0x45, 0xac, 0x19, 0x8c, 0x18, 0xf4, 0x3b, + 0xce, 0xbf, 0xdf, 0x51, 0x64, 0x8a, 0x88, 0xfc, + 0x51, 0x8d, 0xd4, 0xe0, 0x2a, 0x92, 0xd1, 0x35, + 0xcb, 0x28, 0x56, 0x4a, 0xe9, 0x8f, 0x7e, 0xc6, + 0x04, 0x3f, 0xfb, 0xac, 0xe8, 0x84, 0x5f, 0x6a, + 0x57, 0x0f, 0xc4, 0xb3, 0x43, 0x23, 0x56, 0x58, + 0x2d, 0xd6, 0x2a, 0xc8, 0xbf, 0xaf, 0x17, 0x10, + 0x73, 0xa1, 0xa4, 0xe8, 0x19, 0x6d, 0x5a, 0x74, + 0x4f, 0x4a, 0x2b, 0x8f, 0x82, 0xab, 0x74, 0x91, + 0x5e, 0x6b, 0x6c, 0x6e, 0xe4, 0x36, 0xae, 0x6e, + 0xdc, 0x00, 0xa9, 0xcc, 0x7e, 0x91, 0x73, 0x34, + 0xd1, 0xb5, 0x58, 0x46, 0x5f, 0xb7, 0x99, 0xda, + 0x26, 0x7f, 0x4f, 0xb6, 0xb1, 0x67, 0x11, 0xd6, + 0xff, 0x8a, 0x8c, 0x14, 0xce, 0x24, 0x3b, 0xcd, + 0x56, 0xe5, 0xf3, 0x44, 0x59, 0xd2, 0x3a, 0x6b, + 0x65, 0xc1, 0x4b, 0xd6, 0xdd, 0xea, 0xeb, 0xe1, + 0xb7, 0x12, 0xf3, 0xc7, 0x24, 0x43, 0xbd, 0x05, + 0xdf, 0xf3, 0xcd, 0xb7, 0xfd, 0x4a, 0x79, 0x61, + 0x07, 0x09, 0x31, 0x47, 0x8e, 0x9e, 0xb7, 0xb5, + 0x76, 0x32, 0x48, 0x63, 0x44, 0xdd, 0x3b, 0xef, + 0x95, 0x76, 0x4b, 0x3f, 0xd8, 0x42, 0x03, 0xc3, + 0xdd, 0x84, 0x91, 0x91, 0x8b, 0x8d, 0xe7, 0x56, + 0x12, 0x64, 0x71, 0x10, 0x23, 0x45, 0x59, 0x0f, + 0xf1, 0x95, 0xaf, 0x11, 0x8c, 0x8a, 0xf7, 0x39, + 0x36, 0xe0, 0x6b, 0xe4, 0xe7, 0x8f, 0xe6, 0xd5, + 0x79, 0x75, 0x35, 0xd0, 0x15, 0x7c, 0xea, 0xb3, + 0x2e, 0xd8, 0xe0, 0xba, 0x78, 0x42, 0x8a, 0x12, + 0xf5, 0x64, 0x30, 0x2b, 0x9d, 0x93, 0x9d, 0x1a, + 0x42, 0x76, 0x87, 0x60, 0x9a, 0x21, 0xaf, 0x22, + 0x45, 0x26, 0xc8, 0x35, 0xbe, 0x81, 0x31, 0x3d, + 0xec, 0x29, 0x32, 0x1d, 0x72, 0x21, 0xc8, 0x36, + 0x89, 0xf1, 0x55, 0x12, 0x3b, 0x5e, 0x33, 0x62, + 0x80, 0x7f, 0x07, 0x38, 0x36, 0xa2, 0x9f, 0xcb, + 0xb6, 0xec, 0x82, 0x40, 0x57, 0xe9, 0x50, 0xb0, + 0x46, 0x05, 0x13, 0x48, 0xf8, 0x0b, 0x8a, 0xb9, + 0x6a, 0x28, 0x06, 0x76, 0x1f, 0x5b, 0x05, 0x09, + 0x5e, 0x6d, 0x2b, 0xde, 0xea, 0xbe, 0xfe, 0xf3, + 0x62, 0x72, 0x35, 0xa9, 0xa8, 0x27, 0x7b, 0xc2, + 0x60, 0x45, 0xa3, 0xb2, 0xbf, 0xe6, 0xcf, 0xef, + 0x2c, 0xec, 0xc2, 0xab, 0xb7, 0x64, 0xce, 0x3a, + 0xd6, 0x78, 0xb5, 0xa7, 0x18, 0xab, 0xfb, 0x43, + 0xce, 0xaa, 0xad, 0xec, 0x48, 0x0e, 0x86, 0x64, + 0x61, 0xa4, 0x90, 0xed, 0xef, 0xa8, 0x47, 0x27, + 0x63, 0x2e, 0xfd, 0xfe, 0x84, 0xd1, 0xb3, 0xaf, + 0xe1, 0xb0, 0xf4, 0x60, 0x7e, 0xa3, 0xbc, 0x91, + 0xdf, 0xcd, 0xc2, 0x56, 0x41, 0xd6, 0x3d, 0x46, + 0x19, 0x46, 0x9c, 0x91, 0xa0, 0xe4, 0x5d, 0xf4, + 0x4a, 0xe2, 0xc9, 0xdd, 0x25, 0x7e, 0xd1, 0xfb, + 0xd0, 0x7b, 0xd2, 0xab, 0x13, 0xd1, 0xc8, 0x24, + 0x2f, 0x91, 0xed, 0xe3, 0xa2, 0xd8, 0x9f, 0x65, + 0x5f, 0x3f, 0x5e, 0x20, 0xb7, 0xfa, 0xd1, 0x69, + 0x8e, 0x99, 0xa9, 0x25, 0x63, 0xde, 0x96, 0x35, + 0x9e, 0x4b, 0xbd, 0x1a, 0xcf, 0x58, 0xf8, 0x0c, + 0xa3, 0xa8, 0x7b, 0x69, 0x14, 0x33, 0x08, 0x59, + 0x70, 0x60, 0x1f, 0x46, 0x29, 0xe0, 0x0f, 0xe7, + 0xb2, 0xf3, 0x88, 0x86, 0x7d, 0xe4, 0xf6, 0x33, + 0xc6, 0x74, 0x15, 0xa3, 0xc4, 0x83, 0x3c, 0x0a, + 0x07, 0x0c, 0x02, 0x76, 0xce, 0xc3, 0x7d, 0x1e, + 0xc5, 0x37, 0x32, 0x21, 0x7b, 0x27, 0xe4, 0xf0, + 0xfc, 0xff, 0x74, 0x6a, 0x95, 0x5d, 0x1d, 0xde, + 0x7f, 0xc2, 0x6f, 0x14, 0x93, 0x68, 0x06, 0x92, + 0x4b, 0x44, 0x44, 0x84, 0x56, 0x32, 0xe8, 0x48, + 0xf8, 0xec, 0xc9, 0xcb, 0x9d, 0xa4, 0x09, 0x3b, + 0x3b, 0x88, 0xfd, 0xfa, 0xc9, 0x86, 0x3c, 0xec, + 0x59, 0x8d, 0x71, 0xca, 0xe0, 0x6b, 0xec, 0x8d, + 0xe7, 0xc1, 0x45, 0x99, 0xfd, 0x2a, 0x6c, 0xf4, + 0xba, 0xe4, 0xd3, 0x89, 0xf1, 0xd9, 0xc4, 0x75, + 0x2f, 0x7a, 0xde, 0x13, 0xa0, 0x1c, 0xf1, 0x6c, + 0x8f, 0x78, 0x35, 0x6e, 0x6b, 0x58, 0x27, 0xdb, + 0x16, 0x75, 0x20, 0xc2, 0x2f, 0x4b, 0x89, 0xe7, + 0xb1, 0x7f, 0x12, 0xcc, 0xd2, 0x59, 0x1a, 0xdb, + 0x38, 0xfd, 0x34, 0xed, 0xa7, 0x5e, 0xcf, 0xd2, + 0xa2, 0xff, 0x30, 0xb0, 0xaa, 0x11, 0xfb, 0xdd, + 0x6a, 0xc3, 0xd9, 0x95, 0xb1, 0x1f, 0xdf, 0xcf, + 0xd2, 0xa2, 0x3c, 0xe3, 0x73, 0x4a, 0x61, 0xfe, + 0xf3, 0x17, 0x9e, 0x2d, 0x3f, 0xbe, 0xf2, 0xfa, + 0xc2, 0xb3, 0x79, 0x63, 0xf9, 0xf1, 0x25, 0x77, + 0x36, 0x1f, 0x9d, 0xad, 0xf0, 0x7f, 0xfd, 0x5b, + 0xd6, 0x99, 0xda, 0xcf, 0x3a, 0x61, 0xe4, 0x8e, + 0xf5, 0xe3, 0x57, 0xd8, 0x9f, 0xd9, 0xb0, 0x96, + 0x39, 0xfa, 0x06, 0x06, 0x5c, 0x35, 0xce, 0xf4, + 0xac, 0xf0, 0x7f, 0x63, 0xb4, 0xe1, 0x49, 0x76, + 0xf3, 0x2c, 0xbd, 0xb9, 0xf1, 0x7f, 0x9e, 0x2e, + 0xbd, 0x36, 0xdc, 0x25, 0x7a, 0xcb, 0x1f, 0x0e, + 0x94, 0xea, 0xfb, 0xcf, 0xa5, 0x95, 0x3b, 0x5b, + 0x30, 0x57, 0xd4, 0xa1, 0x30, 0x37, 0x11, 0x13, + 0x7a, 0x5f, 0xec, 0xcd, 0x81, 0xc1, 0xcc, 0x50, + 0x5f, 0x9d, 0xec, 0x94, 0xbd, 0x32, 0x76, 0x54, + 0x0f, 0xa3, 0x1f, 0x31, 0x65, 0xb0, 0x9f, 0xce, + 0xe0, 0xd7, 0x13, 0x55, 0x24, 0xd6, 0x9a, 0xa8, + 0x87, 0x5c, 0x3d, 0xf1, 0x64, 0x07, 0xf4, 0xa0, + 0x6f, 0xe2, 0x33, 0x77, 0xec, 0x6d, 0x27, 0x21, + 0x78, 0x67, 0x73, 0xe2, 0x89, 0x30, 0x65, 0xf1, + 0xce, 0xe1, 0x4c, 0x8a, 0xb8, 0x79, 0xdc, 0x4b, + 0x3a, 0xa2, 0x12, 0x00, 0x2c, 0xff, 0x9c, 0x72, + 0xbe, 0x17, 0xcd, 0x93, 0xf5, 0x49, 0x58, 0xa1, + 0xa4, 0x59, 0xb9, 0x8e, 0xbe, 0xa5, 0x57, 0x3f, + 0x11, 0xcc, 0x10, 0xec, 0x72, 0xa3, 0xd8, 0x52, + 0x6a, 0x2a, 0x07, 0xe1, 0x73, 0x94, 0xb5, 0xe1, + 0xdd, 0xba, 0xd8, 0xbf, 0x31, 0x76, 0xd3, 0x1c, + 0x3e, 0xfe, 0xd6, 0x8f, 0x63, 0xd6, 0xd2, 0xf8, + 0xd0, 0x8f, 0xef, 0x7f, 0xe8, 0x95, 0xfe, 0xb6, + 0xfc, 0xc3, 0x8a, 0x78, 0x7a, 0x3b, 0x5a, 0xcf, + 0xb0, 0x23, 0x35, 0x76, 0xa6, 0x0e, 0x36, 0x95, + 0xcd, 0xe0, 0xd5, 0x46, 0xfc, 0x87, 0xf8, 0x8e, + 0x9a, 0x8f, 0x6c, 0x77, 0xa1, 0x61, 0xb4, 0x75, + 0xef, 0x23, 0x3a, 0x38, 0xaf, 0x91, 0xed, 0x6e, + 0xca, 0x67, 0x3b, 0x20, 0xd3, 0xc9, 0x2f, 0x73, + 0xe2, 0x37, 0x7d, 0xe2, 0x93, 0x5e, 0x85, 0xc2, + 0xff, 0x47, 0xd8, 0xbb, 0x83, 0xb5, 0x71, 0xae, + 0xfb, 0xe2, 0x23, 0x31, 0x36, 0x23, 0x90, 0xcd, + 0xe8, 0x06, 0x02, 0x64, 0x34, 0x88, 0x01, 0x06, + 0x81, 0x8d, 0xe2, 0xf8, 0x82, 0x6d, 0x21, 0x8d, + 0xb1, 0x9c, 0x7c, 0x60, 0xaf, 0x64, 0x6c, 0xe3, + 0x84, 0xbd, 0xb6, 0xd7, 0x8e, 0x9c, 0xe5, 0xac, + 0xc5, 0x59, 0x67, 0x9f, 0xb3, 0x65, 0x27, 0xe7, + 0x44, 0x4e, 0x30, 0x52, 0x41, 0x31, 0x45, 0x8a, + 0x29, 0x5c, 0xb8, 0x58, 0x85, 0x0a, 0x8a, 0x29, + 0x52, 0x50, 0xac, 0xc2, 0x45, 0x0a, 0x15, 0x2e, + 0x54, 0xa4, 0xa0, 0x48, 0xe1, 0x62, 0x15, 0x14, + 0x2e, 0x28, 0x56, 0xa1, 0xc2, 0xc5, 0x14, 0xf3, + 0x3c, 0xe7, 0xff, 0xbe, 0xef, 0x37, 0xa3, 0x0b, + 0xce, 0x7e, 0xfe, 0xd1, 0x33, 0x02, 0x22, 0xeb, + 0x36, 0xf3, 0x5d, 0xde, 0xcb, 0xef, 0xe2, 0x3b, + 0xda, 0xf2, 0x35, 0xac, 0xe3, 0x7e, 0x25, 0xf9, + 0x75, 0x42, 0xee, 0x7f, 0x34, 0xb2, 0x42, 0x57, + 0xaa, 0x1e, 0x28, 0x73, 0xe7, 0x35, 0xea, 0x87, + 0xf2, 0x5b, 0x7e, 0xb0, 0xb9, 0xd3, 0xfd, 0xcb, + 0xf3, 0x76, 0xe7, 0x78, 0x23, 0x8a, 0x46, 0xac, + 0x12, 0xec, 0x28, 0x9f, 0xd6, 0x4b, 0xf0, 0x37, + 0x7c, 0x9b, 0x3d, 0x61, 0x87, 0xcf, 0xd0, 0x82, + 0x1e, 0x6a, 0xd7, 0x8c, 0x8c, 0x11, 0x3d, 0x8c, + 0x1b, 0xb5, 0x8a, 0x74, 0x50, 0xe8, 0x28, 0xc5, + 0xf5, 0x2b, 0xe4, 0x90, 0xe7, 0x7d, 0xbd, 0x5b, + 0x9d, 0xe6, 0xf8, 0xc9, 0x84, 0xfe, 0xa3, 0xbe, + 0x58, 0x5d, 0x68, 0x2c, 0x28, 0x3f, 0xba, 0x0f, + 0x95, 0x89, 0x5c, 0xd4, 0x78, 0x62, 0x86, 0xc4, + 0x3e, 0xff, 0x32, 0xca, 0x1b, 0x02, 0x7d, 0x5c, + 0x00, 0x21, 0x87, 0x0e, 0xb5, 0x98, 0xbd, 0xfa, + 0x3c, 0xc8, 0x13, 0xee, 0x75, 0xce, 0x10, 0xcc, + 0x0b, 0x9c, 0x1d, 0x03, 0x8e, 0xdc, 0x20, 0x7e, + 0xeb, 0x81, 0xd2, 0xe0, 0xee, 0x75, 0xbc, 0xd6, + 0xa7, 0x1f, 0x4d, 0x43, 0x1c, 0x2f, 0x34, 0x62, + 0x5b, 0x53, 0x77, 0x23, 0x86, 0x02, 0x7f, 0x7d, + 0x72, 0x17, 0x3b, 0x80, 0x7c, 0x2e, 0xac, 0x0b, + 0x0b, 0xc2, 0xa2, 0x33, 0x04, 0x7b, 0xf0, 0xb2, + 0xcb, 0x9a, 0xa8, 0xcd, 0x92, 0x21, 0x77, 0xd1, + 0xd3, 0xb9, 0x95, 0x26, 0x7a, 0xfd, 0xcd, 0xca, + 0x9f, 0xff, 0x4e, 0xdf, 0xd9, 0xaf, 0x7c, 0xde, + 0x24, 0x8e, 0x00, 0xe7, 0x89, 0x75, 0xbf, 0x6f, + 0xc7, 0xc5, 0xb3, 0x5a, 0x63, 0x19, 0x54, 0x68, + 0x61, 0x42, 0xa9, 0x50, 0xca, 0x94, 0x0a, 0x5b, + 0x19, 0xbd, 0xab, 0xb5, 0x2b, 0xe9, 0x61, 0x07, + 0xf2, 0x97, 0xa3, 0xab, 0x8f, 0x1e, 0x3a, 0xf1, + 0xa3, 0x84, 0x31, 0x7a, 0x97, 0xf3, 0x62, 0xb8, + 0x4a, 0xa2, 0x1f, 0xa9, 0xa2, 0x0b, 0x65, 0x42, + 0x4b, 0x88, 0xbc, 0x6f, 0xe5, 0xed, 0x92, 0x7b, + 0x58, 0x27, 0x7c, 0x2a, 0x9c, 0xac, 0xd7, 0xf5, + 0x32, 0xb8, 0x61, 0x4d, 0x46, 0x20, 0x5d, 0x33, + 0x26, 0xa4, 0x84, 0x4e, 0x46, 0xdf, 0x61, 0xf8, + 0xa6, 0xdd, 0xd8, 0x51, 0xea, 0x15, 0x32, 0xd2, + 0x67, 0x1a, 0xca, 0xd1, 0xe7, 0x1d, 0x4c, 0xa0, + 0x77, 0x76, 0xb5, 0x01, 0xf8, 0xae, 0x57, 0xde, + 0x5e, 0xfe, 0xed, 0x5e, 0xe9, 0xa1, 0x11, 0x26, + 0xbc, 0xd9, 0x30, 0xc4, 0x55, 0x4f, 0xda, 0x49, + 0x2b, 0xdc, 0x8e, 0x0a, 0xb8, 0x5b, 0x9e, 0x3f, + 0x5e, 0xb4, 0x17, 0x8f, 0xd7, 0x09, 0x91, 0xd2, + 0x55, 0x17, 0xe5, 0x5c, 0xe7, 0x0f, 0xba, 0x96, + 0x6e, 0x49, 0x2c, 0x89, 0x83, 0x6d, 0xae, 0x69, + 0xce, 0x77, 0x3d, 0xbf, 0xab, 0x25, 0x42, 0x58, + 0x90, 0x86, 0x75, 0x04, 0x51, 0xae, 0x69, 0x16, + 0xb1, 0xd3, 0xda, 0xb7, 0xd2, 0x29, 0x42, 0xba, + 0x0d, 0xf8, 0x33, 0xa5, 0xf1, 0x02, 0xce, 0x4d, + 0xa4, 0x4d, 0x75, 0x60, 0xdf, 0x55, 0xa0, 0x9d, + 0x13, 0xfc, 0x31, 0x29, 0xed, 0x48, 0x26, 0xc4, + 0x64, 0xec, 0x8a, 0x71, 0x39, 0xf7, 0x50, 0x89, + 0xe7, 0x54, 0x88, 0x48, 0xfe, 0x20, 0x72, 0x3d, + 0xa8, 0xb8, 0x11, 0x35, 0x66, 0xc8, 0xdb, 0x6e, + 0x37, 0x25, 0x55, 0xce, 0x5b, 0x59, 0x19, 0xf5, + 0xa0, 0x92, 0xb2, 0xd0, 0x41, 0x60, 0x20, 0xe6, + 0x2b, 0xa5, 0xfc, 0x15, 0xa2, 0x42, 0x44, 0x3f, + 0x76, 0x7a, 0x9a, 0x14, 0x9b, 0xed, 0xc2, 0xf9, + 0x0c, 0x39, 0x61, 0x7d, 0x42, 0xcf, 0x7a, 0x1a, + 0x29, 0x9e, 0x66, 0x35, 0xa1, 0xd0, 0x9f, 0x1d, + 0xc4, 0xb1, 0xa6, 0xba, 0x5f, 0x53, 0x43, 0xda, + 0x52, 0x15, 0x5e, 0x59, 0x61, 0xcd, 0x61, 0xe1, + 0x03, 0x44, 0x59, 0x3b, 0x25, 0xff, 0x95, 0xaa, + 0x75, 0x9e, 0x9e, 0xb9, 0x79, 0x4d, 0x1a, 0x68, + 0xed, 0xb2, 0x01, 0xf7, 0x3a, 0x1b, 0x38, 0xbe, + 0x5e, 0x1d, 0x7c, 0xbb, 0xd2, 0x5a, 0x60, 0x17, + 0xd8, 0x0a, 0x53, 0xde, 0x76, 0x77, 0xab, 0x0f, + 0xb9, 0xb2, 0x3c, 0x0a, 0x52, 0xd0, 0x31, 0xc4, + 0x1a, 0x70, 0x83, 0xd6, 0x33, 0xc8, 0xec, 0xe3, + 0x42, 0xc2, 0x1e, 0xdf, 0x9c, 0xd8, 0xf4, 0xb4, + 0x1c, 0x3d, 0x77, 0xb3, 0x45, 0x71, 0x51, 0x27, + 0x25, 0x0c, 0x23, 0x5c, 0x1e, 0xd2, 0x47, 0x4a, + 0x4f, 0x4b, 0x02, 0x65, 0x22, 0x69, 0xd4, 0x22, + 0x81, 0xf3, 0x51, 0x2b, 0x9f, 0x36, 0x4e, 0x33, + 0x74, 0x8b, 0x88, 0x3e, 0xc9, 0x6c, 0xad, 0xe9, + 0xa7, 0x75, 0x5f, 0xc5, 0x68, 0xcc, 0x89, 0x28, + 0x1f, 0x29, 0x5f, 0x79, 0x4a, 0xaf, 0xfe, 0x6e, + 0xeb, 0xe3, 0x09, 0x47, 0x08, 0xb3, 0xad, 0x4a, + 0x6b, 0x52, 0x00, 0x39, 0x02, 0x52, 0x17, 0x4f, + 0xd8, 0xe5, 0x3d, 0xe1, 0x1a, 0x40, 0xfd, 0x23, + 0x5d, 0x56, 0x60, 0xa1, 0x0d, 0x77, 0xf4, 0xeb, + 0x60, 0xc4, 0x4c, 0x48, 0x29, 0x73, 0x82, 0x65, + 0x59, 0xaf, 0x82, 0x19, 0x7f, 0x74, 0xc8, 0xc9, + 0x9a, 0xe7, 0xa5, 0x05, 0x73, 0x83, 0x14, 0xe5, + 0xe3, 0x12, 0xee, 0x76, 0x54, 0x8f, 0xad, 0x16, + 0xad, 0xa8, 0xc2, 0xf9, 0x87, 0x53, 0x72, 0xcc, + 0x9d, 0xb2, 0x50, 0x79, 0x3c, 0x2e, 0x4f, 0xc9, + 0x8f, 0x69, 0xff, 0xad, 0x35, 0xc3, 0x7a, 0xb8, + 0x5a, 0x34, 0xcf, 0x9b, 0xe7, 0xd9, 0x65, 0xed, + 0x2a, 0x46, 0x22, 0xbc, 0x96, 0x90, 0x43, 0x77, + 0xef, 0xb0, 0xf3, 0xdc, 0x5c, 0x37, 0xb3, 0xe6, + 0x92, 0x53, 0x83, 0xf8, 0x35, 0x85, 0xb1, 0x2c, + 0x2a, 0xaa, 0x12, 0x7a, 0xc7, 0xd3, 0xa1, 0x72, + 0x66, 0xa4, 0x3f, 0x39, 0x52, 0x7d, 0xd7, 0x0d, + 0x6d, 0x66, 0x37, 0x53, 0x2f, 0xc7, 0xd5, 0xb3, + 0xa5, 0x4a, 0xb2, 0x57, 0x59, 0x9a, 0xeb, 0x79, + 0xf1, 0x5a, 0xbc, 0x7f, 0x05, 0x03, 0x5e, 0x7d, + 0x8b, 0x89, 0x67, 0xb1, 0xc7, 0x0e, 0xe7, 0x39, + 0x9b, 0x5b, 0x50, 0xd6, 0x0d, 0xc9, 0x1c, 0xa7, + 0xaa, 0xcb, 0xae, 0x13, 0x94, 0x82, 0x52, 0xc1, + 0x51, 0x48, 0x27, 0x39, 0xca, 0xce, 0xae, 0x4c, + 0x6c, 0x7f, 0x6d, 0x06, 0x49, 0xcd, 0xc0, 0x47, + 0xd1, 0x20, 0x0e, 0x22, 0x4d, 0x75, 0xdc, 0x40, + 0x0f, 0xa7, 0x35, 0x28, 0xf4, 0x76, 0x50, 0xba, + 0x3e, 0xae, 0x9d, 0x98, 0x1f, 0x23, 0x01, 0x13, + 0x9d, 0x81, 0x21, 0x13, 0x21, 0x4f, 0xcc, 0xa9, + 0xf2, 0xd7, 0xd6, 0x80, 0xd4, 0xab, 0x5d, 0x09, + 0xf1, 0x03, 0xcd, 0xaf, 0x4e, 0x94, 0xc3, 0x51, + 0x9d, 0xb0, 0x12, 0xa4, 0xfb, 0x62, 0xa1, 0xfe, + 0x18, 0x09, 0xaf, 0xdb, 0x88, 0xb7, 0x76, 0x9f, + 0xf4, 0x3d, 0x44, 0xce, 0x72, 0x44, 0x8f, 0x38, + 0x53, 0x14, 0x81, 0x6f, 0x1e, 0x49, 0x47, 0x21, + 0x63, 0x88, 0xc5, 0x4b, 0xdc, 0x5d, 0x54, 0x82, + 0x99, 0xf1, 0xb1, 0x1b, 0x15, 0x2f, 0xc6, 0x11, + 0x15, 0x9d, 0x94, 0x17, 0x20, 0x06, 0xc2, 0x7e, + 0x4f, 0x8e, 0x47, 0x6e, 0x7a, 0x40, 0x7f, 0x01, + 0xcf, 0x45, 0x54, 0x6d, 0xcd, 0x95, 0xa9, 0x8b, + 0x33, 0xc5, 0x9e, 0x94, 0x3c, 0x1f, 0x40, 0x69, + 0xbc, 0x5d, 0xd1, 0x7d, 0x24, 0xdc, 0x24, 0x39, + 0xe2, 0x1a, 0x1e, 0x6b, 0x16, 0xa7, 0xd9, 0x8d, + 0xb6, 0x06, 0xab, 0xf2, 0x0a, 0x29, 0xbb, 0xdc, + 0x80, 0x03, 0x11, 0x02, 0x78, 0x7c, 0xee, 0x72, + 0x74, 0xf4, 0xaa, 0x1e, 0xaa, 0x86, 0x5a, 0xb5, + 0xed, 0xd0, 0xd6, 0xc2, 0xe1, 0xf2, 0xd6, 0xc2, + 0xf6, 0x8d, 0x77, 0x5a, 0x89, 0xb3, 0xc0, 0xd0, + 0x41, 0x32, 0xa4, 0xdf, 0x84, 0x5c, 0x61, 0x96, + 0x9d, 0x62, 0x89, 0xad, 0xd1, 0x95, 0xb8, 0x34, + 0xef, 0xa8, 0xd2, 0xa7, 0x14, 0x41, 0xf9, 0xdd, + 0xaa, 0x5e, 0x4c, 0x5a, 0x37, 0xde, 0xe0, 0xda, + 0x26, 0x69, 0x37, 0x59, 0xba, 0xf1, 0xc8, 0x10, + 0xb8, 0xce, 0xb0, 0x57, 0x07, 0x7e, 0x4d, 0x1e, + 0x91, 0x87, 0x05, 0x39, 0xaa, 0x84, 0xb8, 0x33, + 0xc4, 0x3b, 0xac, 0xfc, 0x20, 0xd6, 0xd8, 0x8f, + 0xbd, 0xd1, 0x27, 0x6e, 0x43, 0x22, 0x56, 0x5c, + 0x83, 0x54, 0x79, 0x94, 0x00, 0xa1, 0x58, 0x91, + 0xbd, 0xd2, 0x9d, 0xdd, 0xbc, 0x8f, 0x86, 0x31, + 0x51, 0x1c, 0x62, 0x95, 0x35, 0xd2, 0x25, 0xee, + 0xf6, 0xbc, 0x10, 0xeb, 0x12, 0x79, 0x9f, 0xb2, + 0x2a, 0x8d, 0xae, 0x82, 0x28, 0xc6, 0x5a, 0x63, + 0xad, 0xe7, 0xf9, 0xb1, 0x96, 0xac, 0xdd, 0x78, + 0x7b, 0x65, 0xeb, 0x6a, 0x6b, 0x93, 0xdd, 0x37, + 0x63, 0xad, 0x29, 0x5e, 0xdf, 0x90, 0x42, 0xef, + 0x87, 0x4b, 0xcf, 0xec, 0xb8, 0x75, 0xc6, 0x8d, + 0x89, 0xb5, 0xf7, 0x61, 0x8c, 0xeb, 0xcb, 0x5a, + 0x79, 0xdd, 0xf2, 0x1c, 0xc9, 0x9d, 0xae, 0x2b, + 0x22, 0x8e, 0xe8, 0x8e, 0xb2, 0xcf, 0xd6, 0x49, + 0x47, 0x72, 0x64, 0x27, 0xa8, 0x4c, 0xd3, 0x3a, + 0xce, 0x95, 0xc2, 0x2c, 0xcf, 0xa5, 0xf0, 0x66, + 0xa8, 0xc6, 0x5c, 0x39, 0xaf, 0xbc, 0x2b, 0x8b, + 0xd6, 0xa0, 0xc7, 0x79, 0x2c, 0xd2, 0xde, 0xbb, + 0xdc, 0xca, 0x48, 0xc5, 0x63, 0x05, 0x7e, 0x6a, + 0x4c, 0x23, 0x44, 0x70, 0x3d, 0xf9, 0xa1, 0xc3, + 0x42, 0xbf, 0x72, 0x1a, 0x67, 0xad, 0x22, 0x8f, + 0x32, 0xa3, 0x23, 0x1b, 0x5e, 0x2a, 0x2f, 0x41, + 0xb6, 0xb9, 0xa8, 0x6e, 0x70, 0xa6, 0x8f, 0xc4, + 0x75, 0x51, 0x96, 0x5a, 0xd4, 0xad, 0x32, 0x79, + 0x57, 0x5e, 0x36, 0x95, 0x4e, 0xde, 0x1d, 0x76, + 0x13, 0xf2, 0x68, 0xe3, 0xd2, 0xd1, 0x97, 0xf9, + 0xb8, 0x9e, 0xb0, 0xe2, 0xe5, 0x84, 0x19, 0x97, + 0x79, 0x9d, 0x30, 0xa8, 0xe4, 0x55, 0x69, 0x7f, + 0xd7, 0x3e, 0x67, 0x64, 0x8d, 0x0d, 0x88, 0x31, + 0x3e, 0x8c, 0xea, 0xe5, 0xc6, 0x4e, 0x03, 0xf5, + 0x84, 0xe2, 0x62, 0x4a, 0x78, 0xda, 0xe1, 0x12, + 0x7c, 0xd4, 0xc6, 0x7c, 0x1f, 0x33, 0xa4, 0x35, + 0x36, 0xbf, 0x3d, 0xf7, 0x76, 0xe8, 0x6d, 0x90, + 0xea, 0x48, 0x78, 0xa6, 0x18, 0x33, 0xa4, 0x0f, + 0x10, 0x56, 0xbf, 0x06, 0xf5, 0x60, 0x15, 0x16, + 0x02, 0x29, 0x29, 0x95, 0x2b, 0xc4, 0x0e, 0x56, + 0x56, 0x14, 0x89, 0xde, 0x5b, 0x3a, 0x38, 0x87, + 0x2a, 0x46, 0x65, 0x78, 0x9a, 0xe5, 0xad, 0x39, + 0x58, 0xdb, 0xaa, 0x3e, 0x69, 0x8d, 0xe7, 0xc2, + 0x4a, 0xf4, 0xf0, 0x85, 0x24, 0x3d, 0x59, 0x92, + 0xb3, 0x42, 0xb6, 0xc9, 0x72, 0xa4, 0x20, 0x8a, + 0x7c, 0x7e, 0xf6, 0x57, 0x57, 0x63, 0x88, 0x27, + 0xac, 0x6d, 0x45, 0x8f, 0x6f, 0x38, 0x57, 0x8e, + 0xaf, 0x6e, 0xdd, 0xdf, 0x8a, 0x33, 0x1e, 0x5d, + 0x67, 0xcc, 0xd1, 0x2d, 0xee, 0xd9, 0x7c, 0xb2, + 0x92, 0x80, 0x23, 0xb9, 0x1f, 0x1d, 0xc7, 0xe3, + 0x11, 0xee, 0x76, 0xcd, 0x1f, 0x1d, 0xa2, 0x15, + 0x5e, 0xf2, 0xba, 0x00, 0x5c, 0xeb, 0x91, 0x98, + 0xc5, 0xb4, 0x1e, 0x05, 0x7b, 0x76, 0x9c, 0x53, + 0xca, 0x29, 0x52, 0xe2, 0xe5, 0x58, 0xa6, 0x60, + 0xd7, 0x81, 0x40, 0x0f, 0x99, 0x63, 0xd6, 0xe3, + 0x72, 0x48, 0x8f, 0x74, 0xe2, 0x8d, 0xe2, 0x4e, + 0xb4, 0x5a, 0x33, 0xa7, 0xaa, 0x51, 0x7d, 0xaa, + 0x12, 0x2d, 0x8d, 0xe5, 0x51, 0x47, 0x76, 0xc7, + 0xeb, 0xa4, 0x43, 0x44, 0xbd, 0x73, 0xe9, 0xf0, + 0xab, 0x6a, 0xdc, 0x48, 0xef, 0xf0, 0xd8, 0xb6, + 0x97, 0x85, 0x1d, 0x90, 0x57, 0x93, 0xf3, 0xbf, + 0xa9, 0xf1, 0xa2, 0xc5, 0x73, 0xd1, 0x85, 0xdc, + 0xe2, 0xc1, 0x62, 0x65, 0x75, 0xf3, 0xf1, 0xcb, + 0x01, 0x8f, 0x35, 0x83, 0x9c, 0x99, 0x82, 0xb0, + 0xe8, 0x16, 0x78, 0x9f, 0xc6, 0xa9, 0xfd, 0x24, + 0x39, 0xc3, 0xa6, 0x44, 0x51, 0x2e, 0xe7, 0xf1, + 0x21, 0xce, 0xe2, 0x99, 0x14, 0x23, 0xc5, 0xbc, + 0x71, 0x2d, 0x99, 0xf4, 0xf7, 0x41, 0x91, 0xe6, + 0x37, 0xd7, 0xe0, 0x88, 0x1f, 0x24, 0x2b, 0x7d, + 0x15, 0x48, 0x69, 0xd7, 0x4c, 0xda, 0x49, 0x7b, + 0xd7, 0xfe, 0x77, 0xe7, 0xdf, 0x9d, 0x3f, 0xda, + 0xff, 0xdb, 0x5e, 0x83, 0xdf, 0x6f, 0x69, 0x35, + 0x2d, 0x48, 0xe3, 0x6a, 0xc4, 0x49, 0xc2, 0xf3, + 0xb4, 0xfa, 0xe7, 0xa8, 0xe7, 0xe5, 0x9c, 0xd0, + 0xce, 0x52, 0x6a, 0x10, 0xb3, 0x85, 0xed, 0xa2, + 0x73, 0xde, 0x3e, 0xef, 0x5c, 0x2e, 0x5f, 0xdd, + 0x9e, 0xde, 0x2e, 0xfe, 0x63, 0xfa, 0x97, 0xa2, + 0x1a, 0x48, 0xf9, 0xc8, 0x1f, 0xde, 0x73, 0xf1, + 0x35, 0xd5, 0xfc, 0x1b, 0xf7, 0x1c, 0xf7, 0x55, + 0xd6, 0xbb, 0x1e, 0x90, 0xbe, 0x86, 0x95, 0xb7, + 0xd3, 0x20, 0x5b, 0xbc, 0x52, 0x34, 0x7b, 0xf5, + 0x84, 0xca, 0x79, 0xe1, 0x04, 0xba, 0xfc, 0xa4, + 0x9f, 0x08, 0xe5, 0x6f, 0xca, 0xe7, 0x2e, 0x56, + 0x4e, 0xa3, 0xfa, 0xc5, 0xea, 0x7d, 0xb8, 0x8f, + 0xe9, 0xf1, 0x66, 0xbc, 0x8c, 0xf3, 0xa8, 0xeb, + 0x02, 0x89, 0x33, 0x68, 0xd8, 0xd8, 0xc1, 0x1c, + 0xa8, 0x2c, 0xbf, 0x8c, 0x90, 0x56, 0x36, 0x44, + 0x05, 0x4d, 0x11, 0xe2, 0xb0, 0x9a, 0x33, 0x90, + 0x3b, 0xa3, 0x7f, 0x7c, 0xd2, 0xc3, 0x97, 0x3e, + 0xbb, 0xef, 0xca, 0x74, 0xd2, 0x41, 0x03, 0x1f, + 0x1d, 0xd2, 0xd7, 0xaa, 0x30, 0x7b, 0xb1, 0xb6, + 0x2a, 0x8c, 0x4a, 0x11, 0x2c, 0x2f, 0x36, 0x6e, + 0x25, 0xef, 0x92, 0x0a, 0xf7, 0xba, 0x96, 0x51, + 0x0b, 0xaa, 0xcf, 0xc3, 0x84, 0x73, 0x57, 0x16, + 0x8c, 0x82, 0x35, 0x23, 0x15, 0x10, 0x83, 0x61, + 0xca, 0xad, 0x84, 0xf6, 0x4d, 0x2e, 0xeb, 0x26, + 0x21, 0x43, 0x7c, 0x61, 0xc4, 0x1e, 0x5d, 0x33, + 0x2e, 0x1b, 0x97, 0x0f, 0xee, 0x91, 0xfa, 0x99, + 0x3f, 0xcb, 0x02, 0xbf, 0x8b, 0x3b, 0xe3, 0x7e, + 0x04, 0x51, 0x23, 0xc3, 0x1e, 0xfd, 0x3d, 0xf4, + 0x7e, 0xd7, 0x80, 0xfd, 0xd7, 0x48, 0x59, 0xc9, + 0x97, 0x23, 0xf1, 0x67, 0x61, 0x8f, 0x0b, 0x60, + 0x8e, 0xe0, 0x7a, 0x61, 0xa0, 0x2b, 0xfd, 0x90, + 0xb2, 0xa0, 0x2c, 0x60, 0x87, 0x98, 0x1c, 0x43, + 0x7c, 0x34, 0x38, 0xba, 0x74, 0x61, 0x2c, 0x94, + 0x30, 0x92, 0x96, 0xfc, 0x72, 0x3a, 0x9c, 0x09, + 0x97, 0x7a, 0xf6, 0x50, 0x86, 0x68, 0xc1, 0x3a, + 0x6a, 0x37, 0xdd, 0xef, 0x89, 0x82, 0xa2, 0xc2, + 0x10, 0xaa, 0x8e, 0xb3, 0x0c, 0x5b, 0x6e, 0x05, + 0xb5, 0x58, 0x0e, 0x39, 0x8f, 0xd9, 0x5c, 0x96, + 0xad, 0x99, 0x9f, 0x8a, 0x9d, 0x3a, 0x12, 0xf1, + 0x73, 0xd0, 0x05, 0xeb, 0x52, 0xa3, 0xb7, 0x8e, + 0x84, 0x73, 0x35, 0xe1, 0x7e, 0x23, 0x66, 0xf7, + 0x92, 0x8e, 0xda, 0x78, 0x51, 0x8d, 0xb1, 0x6b, + 0xd5, 0xcb, 0xec, 0x32, 0xbb, 0xc7, 0x22, 0x55, + 0x0f, 0xed, 0xef, 0x55, 0x4b, 0xba, 0x95, 0x95, + 0x6b, 0x2b, 0xd3, 0xd2, 0x4d, 0xae, 0x7d, 0xa7, + 0xc3, 0x48, 0x36, 0xd2, 0x87, 0x85, 0x4a, 0x78, + 0xf3, 0xbb, 0x9f, 0xce, 0x88, 0xbd, 0x19, 0x12, + 0x3e, 0x1a, 0x68, 0x63, 0x34, 0x00, 0x8f, 0x1b, + 0xa7, 0xbf, 0xdb, 0xf9, 0xe9, 0x54, 0xf8, 0xac, + 0xd8, 0xd5, 0xbd, 0xec, 0xba, 0x71, 0xf4, 0x76, + 0x5d, 0xf8, 0xda, 0x1e, 0x11, 0x22, 0xbf, 0x4c, + 0xeb, 0xeb, 0xfa, 0x48, 0x33, 0x92, 0x8f, 0x98, + 0x97, 0xcd, 0x87, 0xc8, 0x14, 0x22, 0x0f, 0xa3, + 0x88, 0xa7, 0x3f, 0x29, 0x9b, 0x69, 0x18, 0x39, + 0xc1, 0xc6, 0x33, 0x74, 0x11, 0x32, 0xb1, 0x2b, + 0x95, 0xac, 0x7b, 0xb3, 0xac, 0x0e, 0xeb, 0x5a, + 0x72, 0xec, 0x1d, 0x44, 0x8c, 0xea, 0xfd, 0xbf, + 0xc7, 0xb1, 0xe3, 0xa9, 0xc4, 0x9b, 0x7e, 0x45, + 0x5d, 0xd0, 0x65, 0x43, 0x7e, 0xf5, 0xe5, 0xbb, + 0xcd, 0xc6, 0xe6, 0xfe, 0xc3, 0xbf, 0x7f, 0xd1, + 0xde, 0xb4, 0x5e, 0x34, 0xd6, 0xf4, 0x8e, 0x6b, + 0x4f, 0x77, 0x1f, 0xf4, 0x3c, 0x7f, 0xb6, 0x97, + 0xfc, 0xb5, 0x0b, 0x51, 0x16, 0x3f, 0x1e, 0x6f, + 0x90, 0x23, 0xc3, 0xe7, 0xee, 0x1f, 0xe2, 0xcf, + 0x9d, 0x8d, 0xc3, 0xcf, 0x0e, 0x9f, 0xbb, 0xc8, + 0x58, 0x16, 0x65, 0xef, 0x95, 0xcd, 0x98, 0xbb, + 0xbb, 0x2f, 0xee, 0xdf, 0xfe, 0xfb, 0x5c, 0x5b, + 0xb3, 0x16, 0xac, 0xb3, 0xe5, 0x8a, 0xa7, 0xde, + 0xcf, 0x77, 0xe7, 0x08, 0xed, 0xce, 0x2c, 0xfe, + 0x19, 0xc4, 0xca, 0x17, 0x61, 0x47, 0x14, 0x21, + 0xe2, 0x2f, 0xcb, 0x84, 0x29, 0xca, 0x69, 0xac, + 0xf8, 0x5e, 0x33, 0x0a, 0x9b, 0xda, 0xaf, 0xc5, + 0x6a, 0x90, 0x65, 0x0f, 0x17, 0x73, 0x99, 0x5c, + 0x89, 0x34, 0xe7, 0x91, 0x63, 0x9d, 0x51, 0x62, + 0xee, 0xa8, 0x72, 0x5a, 0x19, 0x26, 0xe4, 0xcd, + 0x8c, 0x83, 0x7b, 0xf3, 0x9a, 0x82, 0x6e, 0x42, + 0xc8, 0xf5, 0x9b, 0x39, 0xda, 0x50, 0x86, 0x5d, + 0xe4, 0x52, 0x5e, 0x44, 0x8f, 0x38, 0x33, 0x4a, + 0x2e, 0x0d, 0x49, 0x53, 0xe8, 0xc4, 0xc7, 0x69, + 0x72, 0x0b, 0x18, 0x39, 0xa1, 0xe8, 0x45, 0xde, + 0x67, 0x47, 0xbb, 0xc4, 0x4c, 0xbd, 0xe2, 0x5c, + 0x31, 0x51, 0xe3, 0x79, 0x13, 0x9e, 0x9b, 0x74, + 0x64, 0x93, 0xd7, 0x9f, 0x91, 0x21, 0x92, 0xa6, + 0xfe, 0xfa, 0xc3, 0xe3, 0x90, 0x06, 0xb7, 0x63, + 0x82, 0xc9, 0x78, 0x28, 0x56, 0x49, 0xb8, 0xd9, + 0x9e, 0x96, 0xa7, 0xdb, 0x58, 0x09, 0x42, 0x5f, + 0xd8, 0x79, 0x62, 0xeb, 0x60, 0x0e, 0x8b, 0x99, + 0xf1, 0x1d, 0x27, 0xa3, 0xcf, 0xb7, 0x87, 0xf4, + 0xe1, 0x76, 0x54, 0x9f, 0xe9, 0xf3, 0x77, 0x3e, + 0xe9, 0x62, 0x93, 0x34, 0x27, 0x8f, 0x35, 0xd3, + 0x77, 0xb1, 0x11, 0x92, 0xc2, 0x51, 0xda, 0x53, + 0xa5, 0xed, 0x55, 0x7c, 0xfa, 0xd4, 0xf7, 0x6d, + 0xb9, 0x3b, 0x54, 0xf9, 0xb6, 0x19, 0x67, 0x67, + 0x58, 0x8c, 0xd5, 0x58, 0x88, 0x9d, 0x77, 0xb2, + 0x7a, 0xb6, 0xc4, 0x78, 0x2f, 0x95, 0xe1, 0x3c, + 0x50, 0x2d, 0xd1, 0x0a, 0x29, 0xa2, 0xf5, 0x9d, + 0xc5, 0xfb, 0x2d, 0xbe, 0x1f, 0x6e, 0x40, 0x56, + 0x1a, 0xb0, 0xae, 0x35, 0x07, 0x9c, 0xe0, 0xdb, + 0x6f, 0x57, 0xf0, 0x33, 0x63, 0x4d, 0x29, 0x69, + 0xcd, 0xe5, 0xb8, 0xfe, 0x73, 0xcd, 0x0d, 0x0b, + 0x10, 0xb7, 0xb3, 0xf3, 0xd5, 0xf3, 0xc2, 0xe5, + 0xea, 0x55, 0xa9, 0x17, 0x77, 0x0d, 0x6b, 0x3b, + 0xe2, 0x15, 0x74, 0xea, 0xd0, 0x77, 0x8e, 0x4c, + 0x2e, 0xd3, 0xe2, 0x3d, 0x4d, 0x74, 0x49, 0x38, + 0x4b, 0x7d, 0xcc, 0x8b, 0xd6, 0x86, 0x15, 0xb6, + 0xc4, 0x97, 0x67, 0xe2, 0xd1, 0xf0, 0x74, 0x5d, + 0xdf, 0xf1, 0xe6, 0x3e, 0xdb, 0x85, 0xd0, 0x1c, + 0x71, 0xb5, 0x53, 0x90, 0x6b, 0xac, 0x33, 0xbc, + 0x12, 0xb0, 0xff, 0xf2, 0x9e, 0xb5, 0x2c, 0x1c, + 0x4d, 0xd5, 0xa3, 0xf5, 0x28, 0x8c, 0x8b, 0x29, + 0xac, 0xe3, 0x59, 0x38, 0x33, 0x32, 0xb0, 0xa4, + 0x75, 0x57, 0x06, 0x9c, 0x89, 0xe9, 0x23, 0xcc, + 0xdd, 0x7a, 0xf3, 0x42, 0x8a, 0xeb, 0x6c, 0x88, + 0xe9, 0x4a, 0x77, 0x9c, 0xaa, 0xf1, 0xb9, 0xcb, + 0x9c, 0x3b, 0xe6, 0x5d, 0xa7, 0xea, 0x69, 0x74, + 0xcb, 0x94, 0x19, 0xea, 0x4c, 0x31, 0xc8, 0xbd, + 0xae, 0x8e, 0xfa, 0xef, 0x88, 0xee, 0xbc, 0xc9, + 0xeb, 0x75, 0x54, 0x65, 0x8a, 0x90, 0x36, 0x2c, + 0x31, 0x9b, 0x8e, 0x22, 0x8a, 0x22, 0xc0, 0x67, + 0x53, 0x23, 0x2a, 0x9d, 0x67, 0x36, 0xec, 0x3c, + 0x33, 0xc2, 0xc6, 0x88, 0x1b, 0xd5, 0x77, 0x9d, + 0x90, 0x79, 0xc1, 0x67, 0xd9, 0x3b, 0x5d, 0xf5, + 0x15, 0xff, 0x33, 0x41, 0xd6, 0x70, 0xf4, 0x44, + 0x19, 0xf4, 0x3e, 0x55, 0x7f, 0x95, 0xd5, 0xc3, + 0xe7, 0x75, 0x54, 0xd2, 0x7c, 0x65, 0x16, 0x52, + 0xa1, 0x52, 0x46, 0xda, 0xf8, 0x7c, 0x9e, 0x8b, + 0x62, 0x1e, 0xc3, 0x1f, 0xcd, 0xb3, 0x80, 0xb3, + 0x6b, 0x0c, 0xb8, 0x79, 0x5d, 0x70, 0x56, 0xcd, + 0x20, 0x71, 0x84, 0x49, 0x43, 0x85, 0x2a, 0xdb, + 0x3b, 0x4c, 0x30, 0x48, 0xe5, 0xc2, 0x09, 0x98, + 0x85, 0x1e, 0x7d, 0x15, 0xaf, 0x1a, 0xef, 0xe4, + 0x29, 0x32, 0xe2, 0xf7, 0x73, 0xe6, 0x8a, 0xf9, + 0x98, 0xf0, 0xde, 0x54, 0x43, 0x26, 0x87, 0x72, + 0x5c, 0x9b, 0x61, 0x0d, 0x46, 0xce, 0x45, 0xc7, + 0xb3, 0x29, 0xd8, 0x83, 0xee, 0xc1, 0x1b, 0xe2, + 0x43, 0x03, 0xb0, 0xef, 0x85, 0xa9, 0xfb, 0xe0, + 0xe3, 0xeb, 0xc6, 0xda, 0xc8, 0xd2, 0x43, 0xa7, + 0x2b, 0xd9, 0xe2, 0xf8, 0xba, 0x80, 0x87, 0xfd, + 0x50, 0x1a, 0xeb, 0xf2, 0x90, 0x94, 0x78, 0xcf, + 0x7b, 0x84, 0x11, 0x23, 0xc2, 0x55, 0x9b, 0x9a, + 0x7c, 0x0e, 0x72, 0xdf, 0xe9, 0xbc, 0x79, 0xda, + 0x49, 0x0a, 0x8f, 0xfb, 0xa3, 0x3e, 0x25, 0x06, + 0x19, 0xe0, 0x9c, 0x33, 0x6f, 0xff, 0x80, 0x5d, + 0x5c, 0x38, 0xbe, 0x38, 0xbe, 0xd1, 0xba, 0xc2, + 0x52, 0xe6, 0xe3, 0x9c, 0xcf, 0xee, 0xd7, 0xac, + 0x8f, 0xa4, 0xc5, 0xf7, 0x9c, 0x5d, 0xd1, 0xab, + 0x73, 0x82, 0x8a, 0xcb, 0xc3, 0xa4, 0x38, 0xfb, + 0x51, 0xdb, 0xc0, 0xbe, 0x17, 0xcc, 0xc3, 0xb8, + 0x3d, 0xae, 0x45, 0x99, 0x7c, 0x20, 0x08, 0x43, + 0x66, 0x08, 0xae, 0x5d, 0xe2, 0x5d, 0x42, 0xfd, + 0xb8, 0xfd, 0x21, 0xae, 0x4f, 0xd0, 0x0b, 0x6c, + 0xd6, 0xe0, 0x7a, 0x85, 0x6a, 0x63, 0xd6, 0x28, + 0xb0, 0xf9, 0xf7, 0x58, 0x15, 0x9d, 0x95, 0x3f, + 0x2b, 0x77, 0xb4, 0xfe, 0x9a, 0xf3, 0x82, 0x8a, + 0xfa, 0xe9, 0x70, 0x56, 0x35, 0xb8, 0xe5, 0x3c, + 0x6d, 0x43, 0xf4, 0xf2, 0xce, 0x7b, 0x0e, 0xd9, + 0xfc, 0x7c, 0xf9, 0xae, 0xc3, 0xbc, 0x2b, 0x5d, + 0xa3, 0x4c, 0xd3, 0x8f, 0x3e, 0xfb, 0xb5, 0xee, + 0x21, 0xf3, 0x32, 0x9e, 0xb3, 0x8d, 0xd2, 0x5d, + 0x18, 0xb1, 0x98, 0x8d, 0xe0, 0xf1, 0x83, 0x84, + 0xff, 0x3e, 0xd8, 0x89, 0xcc, 0x25, 0x42, 0x76, + 0xc2, 0x75, 0x7d, 0xb5, 0xec, 0x5c, 0xf2, 0xdd, + 0xb2, 0x29, 0x8b, 0x41, 0xa6, 0x1e, 0xd7, 0xf4, + 0x80, 0x00, 0x5d, 0xc0, 0x67, 0xc2, 0x5c, 0xf6, + 0xb0, 0x01, 0xbc, 0x1a, 0xf7, 0xe9, 0x9b, 0x52, + 0x69, 0xac, 0x9d, 0x6e, 0x22, 0x3b, 0xb3, 0x3b, + 0xe6, 0xd0, 0x2b, 0xea, 0xce, 0xbb, 0x2c, 0x5b, + 0xc8, 0x49, 0x72, 0xda, 0xfd, 0x1f, 0x32, 0xec, + 0x11, 0xb9, 0xde, 0xca, 0x18, 0x5f, 0xf9, 0xbb, + 0xf9, 0x17, 0x71, 0xdf, 0x74, 0xd9, 0xeb, 0x3c, + 0x72, 0xec, 0x07, 0xba, 0xb9, 0x61, 0x1f, 0x5b, + 0x15, 0x50, 0x5d, 0x64, 0xc4, 0x19, 0xa5, 0xca, + 0xb7, 0xff, 0x99, 0xd7, 0xd5, 0xdb, 0xea, 0x29, + 0xfd, 0x43, 0x5e, 0x0c, 0x9e, 0x84, 0x11, 0x73, + 0x83, 0x2d, 0x18, 0x0b, 0x8a, 0x04, 0x99, 0xe8, + 0xb8, 0xbc, 0x4d, 0x79, 0x28, 0x47, 0x85, 0xf9, + 0xd1, 0x52, 0x6f, 0xd5, 0xba, 0xbf, 0x47, 0xe0, + 0x3d, 0x12, 0x9f, 0x8e, 0x93, 0xa3, 0x2c, 0x75, + 0x3f, 0x4f, 0x0b, 0x2b, 0x9e, 0x4b, 0x11, 0x77, + 0xa8, 0xeb, 0x3a, 0x8b, 0x73, 0x5f, 0x71, 0x3a, + 0x57, 0x7d, 0x5c, 0xbc, 0xb4, 0x87, 0x72, 0x22, + 0x36, 0xfc, 0x09, 0xa6, 0x1e, 0xcc, 0xfe, 0x66, + 0xa4, 0x11, 0x6d, 0x44, 0x2d, 0xd5, 0xd4, 0xf6, + 0x50, 0xa9, 0xc6, 0xab, 0x3f, 0x2b, 0x13, 0x8d, + 0x31, 0x25, 0xfd, 0x4b, 0xb2, 0x95, 0xb6, 0xcf, + 0x1d, 0x2c, 0x5b, 0x4b, 0x07, 0xac, 0x15, 0xda, + 0x83, 0x19, 0x2a, 0x43, 0x6c, 0xac, 0xd4, 0x6c, + 0x81, 0xa1, 0xf7, 0x4d, 0x5a, 0x8d, 0x94, 0xd2, + 0xc8, 0x1d, 0xb0, 0x30, 0xba, 0xf5, 0xd4, 0x0c, + 0x74, 0x61, 0xef, 0xb9, 0x3a, 0x72, 0x1c, 0xca, + 0x21, 0x7b, 0x2d, 0xdd, 0x86, 0x15, 0x47, 0xf4, + 0xb5, 0x4a, 0x64, 0x3d, 0x52, 0x7e, 0x81, 0xb3, + 0x83, 0x45, 0x37, 0x53, 0x9b, 0x15, 0xcc, 0x16, + 0x70, 0x65, 0xa2, 0x52, 0x10, 0xf1, 0xf8, 0xcc, + 0x1d, 0xf2, 0xfb, 0x8e, 0xe4, 0x46, 0x85, 0x71, + 0xde, 0x2f, 0xf5, 0xba, 0xa5, 0x91, 0x5e, 0x6f, + 0xd9, 0x76, 0xba, 0x19, 0xe8, 0xd3, 0x0b, 0x92, + 0xbd, 0x7c, 0x5d, 0x26, 0xfd, 0x15, 0x64, 0xe2, + 0x45, 0xaa, 0x11, 0x8a, 0x37, 0x57, 0xf2, 0xfd, + 0x6c, 0xbb, 0x01, 0x1a, 0xbb, 0x54, 0x09, 0xf5, + 0x7d, 0xa5, 0xfb, 0x5c, 0x14, 0x39, 0x03, 0x85, + 0x1f, 0x82, 0xe7, 0x9b, 0x56, 0x85, 0x75, 0x8f, + 0x99, 0xeb, 0xd2, 0xf3, 0xdc, 0x86, 0xb0, 0xee, + 0xac, 0x4b, 0xf0, 0x9b, 0x14, 0xf0, 0x1e, 0xf5, + 0xb3, 0x1e, 0x9e, 0xf3, 0x74, 0xbd, 0xb0, 0x68, + 0xd4, 0x55, 0xb0, 0xda, 0x87, 0x75, 0xbe, 0x73, + 0xd2, 0x24, 0x9b, 0x28, 0xc1, 0x2c, 0x6a, 0x30, + 0x88, 0x4f, 0x46, 0xc8, 0xbf, 0x1b, 0xf1, 0xc0, + 0x94, 0x93, 0x29, 0x49, 0xc7, 0xf3, 0xa7, 0x73, + 0x3c, 0xdd, 0xcd, 0x57, 0x1c, 0x63, 0x03, 0xeb, + 0x14, 0xf2, 0xf8, 0x9c, 0x09, 0x78, 0x54, 0xc3, + 0x47, 0x95, 0x61, 0x97, 0x6b, 0x86, 0xd0, 0x2e, + 0x01, 0xe7, 0x23, 0xa6, 0x24, 0x9c, 0x6b, 0xca, + 0x65, 0xe7, 0xb2, 0x72, 0xcf, 0x35, 0x84, 0xa8, + 0x1d, 0xdd, 0x8c, 0x6f, 0x52, 0x9d, 0x01, 0xa2, + 0x4d, 0xdd, 0xa4, 0xfe, 0x42, 0x4e, 0x3c, 0xd1, + 0xa9, 0x91, 0xf5, 0x30, 0xe4, 0x92, 0x37, 0x8d, + 0xe9, 0xf2, 0x0c, 0xcc, 0x1e, 0xee, 0xc5, 0x47, + 0x3a, 0x71, 0xa4, 0x7f, 0x45, 0xf1, 0x73, 0x75, + 0x0d, 0xa2, 0xe7, 0x65, 0x57, 0x40, 0xf5, 0xb9, + 0xcd, 0xf8, 0x6f, 0x5a, 0x07, 0x1d, 0x9d, 0x21, + 0x35, 0x83, 0xcf, 0x5b, 0x19, 0x96, 0xa9, 0x0e, + 0xb2, 0xd1, 0xd6, 0xa8, 0x83, 0xb5, 0xb3, 0x0c, + 0x5b, 0xab, 0xae, 0x75, 0x5c, 0xf3, 0x86, 0xf4, + 0xa5, 0xc3, 0x45, 0x07, 0x59, 0x87, 0x10, 0x23, + 0x34, 0xe2, 0x8d, 0x98, 0xe7, 0x17, 0x43, 0x2b, + 0x05, 0x65, 0x32, 0xcb, 0x6d, 0x56, 0x1f, 0xc1, + 0x4c, 0xa6, 0x87, 0xaf, 0xc1, 0xb5, 0x77, 0x54, + 0x73, 0x36, 0x57, 0x10, 0x66, 0x3b, 0xcc, 0xee, + 0xce, 0xa3, 0x1e, 0x36, 0x5e, 0x13, 0x96, 0x1d, + 0xc4, 0x51, 0x65, 0xab, 0x1b, 0xe4, 0x4e, 0xb2, + 0xec, 0xf1, 0xac, 0x21, 0x77, 0x4c, 0xfe, 0x59, + 0x15, 0x9a, 0x83, 0xc8, 0x36, 0x91, 0x47, 0x3a, + 0x07, 0x5f, 0x73, 0x76, 0x4b, 0x91, 0x52, 0x84, + 0xc9, 0x46, 0x04, 0x1d, 0x2e, 0x9c, 0x6f, 0x24, + 0xef, 0xf5, 0x39, 0x93, 0x0b, 0xae, 0x8f, 0xdc, + 0x88, 0xc0, 0x1e, 0x58, 0x74, 0x66, 0x95, 0x6f, + 0x10, 0x5f, 0xe5, 0xaa, 0x42, 0xc1, 0x0e, 0x6e, + 0x8a, 0xd4, 0x11, 0x43, 0xd7, 0xa9, 0x1a, 0xa9, + 0xca, 0xc6, 0x9c, 0xa4, 0xaf, 0xb5, 0xed, 0xe9, + 0x23, 0x21, 0x3a, 0x78, 0xa5, 0x1e, 0x82, 0xdc, + 0x75, 0x57, 0x91, 0x0e, 0x52, 0xf6, 0x84, 0xbd, + 0xa8, 0xae, 0xab, 0xe4, 0x5b, 0x5a, 0xe6, 0xfb, + 0x20, 0x77, 0x9e, 0xea, 0xcf, 0x80, 0xfb, 0xb1, + 0x79, 0xe8, 0x8b, 0x17, 0x38, 0x4a, 0x0b, 0xfd, + 0xb5, 0x7a, 0x49, 0xd9, 0x50, 0x16, 0xdd, 0xf3, + 0xa8, 0xb4, 0x0c, 0x79, 0xf1, 0x39, 0x67, 0x52, + 0x59, 0x54, 0xd6, 0x95, 0x21, 0xb8, 0xfe, 0x61, + 0xc1, 0xaf, 0xc6, 0x3f, 0x63, 0x71, 0xf4, 0x4e, + 0x3f, 0x40, 0x25, 0xfe, 0xf3, 0xd2, 0x22, 0xdc, + 0xd6, 0xbd, 0x5e, 0xcc, 0x34, 0xce, 0x1a, 0x39, + 0x70, 0xa2, 0x8e, 0xc4, 0xbb, 0x96, 0x27, 0x9d, + 0x67, 0xfb, 0xc7, 0xbb, 0x37, 0x33, 0xf2, 0x23, + 0x2d, 0x58, 0xb3, 0x72, 0x9a, 0x3c, 0xdc, 0x5d, + 0xb1, 0x3a, 0xcf, 0x3d, 0x99, 0x8d, 0xfa, 0xea, + 0x94, 0x72, 0x73, 0x2c, 0x3f, 0x2d, 0x7c, 0xde, + 0x0c, 0xe5, 0xc7, 0x5a, 0x5d, 0x46, 0x1d, 0x1c, + 0xe6, 0x54, 0xf2, 0xc4, 0xfc, 0xe5, 0x95, 0x00, + 0x8b, 0xeb, 0x22, 0x92, 0xea, 0x69, 0x39, 0xaf, + 0x08, 0x0d, 0x74, 0x8c, 0x5f, 0x65, 0x01, 0x56, + 0x28, 0xc1, 0xce, 0x57, 0xc6, 0xfd, 0x08, 0xab, + 0x37, 0x1c, 0xc5, 0x8a, 0xdc, 0x36, 0xa1, 0x91, + 0x6f, 0x08, 0xaf, 0xe1, 0x68, 0xa0, 0xc2, 0x95, + 0xda, 0xf0, 0xb4, 0x76, 0xb1, 0x1b, 0x0e, 0xf1, + 0x95, 0x00, 0x3b, 0x6c, 0x00, 0x46, 0x4f, 0xbf, + 0x8f, 0x49, 0x00, 0x7b, 0x72, 0x8d, 0x9e, 0x8e, + 0x36, 0xee, 0x78, 0x1d, 0x4c, 0x3e, 0xf7, 0x11, + 0xab, 0x51, 0x2e, 0x17, 0x4b, 0x9e, 0xb1, 0x9e, + 0x35, 0xce, 0x34, 0x2f, 0x36, 0xc2, 0xaf, 0x72, + 0x7b, 0x03, 0x7d, 0x7b, 0xca, 0xef, 0xb1, 0xfc, + 0xa4, 0xfc, 0xe7, 0xad, 0x05, 0x83, 0xf6, 0x93, + 0x03, 0x9e, 0xd7, 0x43, 0x56, 0xdf, 0xf6, 0x73, + 0x7a, 0x44, 0x95, 0xa0, 0x96, 0x45, 0xa6, 0xf1, + 0xa8, 0x21, 0xbd, 0x26, 0xa6, 0x5e, 0x23, 0x05, + 0x19, 0x18, 0x77, 0x60, 0x47, 0xa5, 0x47, 0xd4, + 0xc3, 0xca, 0x38, 0x8f, 0x6c, 0xc9, 0x81, 0x35, + 0xc0, 0xc9, 0x2a, 0x29, 0x27, 0xa9, 0x78, 0x8f, + 0xfa, 0xda, 0xe0, 0x3d, 0x8f, 0x9e, 0xeb, 0x3c, + 0x2a, 0xe0, 0xee, 0x68, 0x2d, 0xba, 0x9a, 0xd0, + 0xd5, 0x3f, 0x5b, 0x21, 0x1d, 0x51, 0x5c, 0xcd, + 0xe2, 0x4a, 0x42, 0xad, 0xed, 0xc7, 0xed, 0x94, + 0x22, 0x39, 0x9d, 0x1a, 0x45, 0x67, 0x55, 0x09, + 0x76, 0x6e, 0x03, 0xed, 0x60, 0xcf, 0x5f, 0x35, + 0x57, 0x38, 0x81, 0x48, 0x41, 0x37, 0x2b, 0xe4, + 0x15, 0x77, 0x99, 0xc5, 0xde, 0xda, 0x6e, 0xae, + 0xb2, 0x53, 0x06, 0x55, 0x6b, 0xe4, 0x69, 0x09, + 0xa3, 0x5f, 0x6f, 0x9d, 0x24, 0x8f, 0x2a, 0xce, + 0x4b, 0xc3, 0x5d, 0xe9, 0x24, 0x0a, 0x9d, 0xb3, + 0xf3, 0x07, 0xeb, 0x62, 0xbd, 0xa3, 0x38, 0x50, + 0x97, 0x4d, 0xc5, 0xd4, 0x31, 0xd3, 0x94, 0xa6, + 0xd0, 0xc3, 0xc8, 0x4e, 0x68, 0x35, 0x52, 0xa2, + 0x29, 0xda, 0x67, 0xe1, 0xbe, 0x83, 0x74, 0x32, + 0x64, 0x26, 0x33, 0x74, 0x78, 0x8c, 0xb2, 0x18, + 0x44, 0x48, 0xa3, 0x07, 0x13, 0xd6, 0x13, 0xeb, + 0xf4, 0x3f, 0x42, 0xbf, 0x72, 0x84, 0xb3, 0xbf, + 0x3b, 0x93, 0xe3, 0x8b, 0x9b, 0x10, 0x26, 0x9d, + 0x27, 0x76, 0x40, 0x0b, 0x32, 0xe1, 0xc0, 0x67, + 0xea, 0x21, 0x3e, 0x4e, 0x46, 0x4e, 0x07, 0xc4, + 0xff, 0xc9, 0xd6, 0x9f, 0x73, 0x67, 0x3c, 0x4f, + 0x3d, 0xe4, 0x7e, 0x47, 0xb0, 0x57, 0x82, 0x31, + 0x10, 0x64, 0xc0, 0x3f, 0xba, 0xac, 0x35, 0x72, + 0x10, 0xb7, 0x14, 0x8a, 0xea, 0x4f, 0x8e, 0x58, + 0x1f, 0x4d, 0x15, 0x29, 0xf3, 0xf9, 0x8b, 0xd5, + 0x92, 0xf1, 0x36, 0x61, 0x02, 0x85, 0x7b, 0x6d, + 0xee, 0x68, 0x4f, 0x47, 0xce, 0x67, 0x52, 0x93, + 0xcf, 0x66, 0x7b, 0xcc, 0x9d, 0xfa, 0xed, 0x99, + 0x13, 0x7f, 0x1f, 0xb1, 0x46, 0xcb, 0x72, 0xfb, + 0x6a, 0xd8, 0xf3, 0x94, 0x3f, 0xe2, 0xfe, 0x36, + 0x58, 0xc5, 0x81, 0x5d, 0xa9, 0x17, 0xdf, 0xde, + 0x71, 0xe2, 0x3c, 0xa7, 0x4c, 0xc2, 0x2e, 0xac, + 0x35, 0xb4, 0x32, 0x2b, 0x77, 0x38, 0xda, 0xe4, + 0x46, 0xb1, 0xa6, 0xa8, 0x90, 0x55, 0x09, 0x6c, + 0x04, 0x76, 0xbb, 0x98, 0xa3, 0xe8, 0x7e, 0xe6, + 0x85, 0xd5, 0x4b, 0x89, 0x31, 0x86, 0xca, 0x2a, + 0x24, 0x7f, 0x00, 0xcf, 0x5e, 0x47, 0x17, 0x31, + 0x49, 0x12, 0xfb, 0x75, 0x89, 0xb1, 0xf6, 0xc5, + 0x54, 0x9f, 0x63, 0xc6, 0x73, 0xf6, 0x49, 0xf7, + 0x29, 0x9c, 0xab, 0x31, 0x17, 0xf9, 0x2f, 0xc9, + 0xc6, 0x55, 0xf7, 0xd2, 0xf1, 0x97, 0x96, 0x7c, + 0x20, 0xb7, 0x62, 0x62, 0x27, 0x6e, 0x3f, 0x12, + 0xd8, 0xaa, 0x79, 0xca, 0x40, 0x77, 0x8b, 0x91, + 0x9e, 0xce, 0x14, 0xce, 0xaa, 0x80, 0xbc, 0x6b, + 0x43, 0xcc, 0xde, 0x08, 0x38, 0xf9, 0x06, 0xfc, + 0x3c, 0x9e, 0xb7, 0xd4, 0x83, 0x7c, 0x6b, 0x50, + 0xf4, 0x72, 0x2b, 0xf3, 0xcc, 0x66, 0xd1, 0xbd, + 0x60, 0x5c, 0x70, 0xae, 0x18, 0x57, 0xdd, 0xcc, + 0x76, 0xf1, 0x30, 0x63, 0x14, 0xb6, 0x07, 0xf6, + 0x7a, 0x9c, 0x1c, 0x85, 0x3f, 0x21, 0x36, 0x0c, + 0x66, 0x0b, 0xce, 0x94, 0xf1, 0xf2, 0x88, 0xf2, + 0x8c, 0xb0, 0x2e, 0x83, 0xce, 0x77, 0xd2, 0x97, + 0xce, 0x66, 0xf9, 0xcb, 0xf6, 0x43, 0xe3, 0x61, + 0x7b, 0x53, 0xff, 0xde, 0x19, 0xb2, 0x87, 0xdf, + 0x46, 0x09, 0x1d, 0x2d, 0x28, 0x32, 0x32, 0x91, + 0x94, 0x5d, 0xae, 0xe7, 0x64, 0xc2, 0x7e, 0x64, + 0x7e, 0xed, 0xf8, 0x4e, 0xbb, 0x9e, 0x9e, 0xb9, + 0xbb, 0x00, 0x6b, 0x07, 0xa2, 0xbb, 0x08, 0x37, + 0x62, 0xcf, 0xbd, 0xbe, 0xae, 0x94, 0x15, 0xaa, + 0x7e, 0x68, 0xb2, 0x0a, 0x23, 0x03, 0x5e, 0x63, + 0x0c, 0xb2, 0x9f, 0x71, 0xe5, 0xa9, 0x0c, 0x91, + 0xfb, 0xcb, 0xa9, 0x70, 0xae, 0x83, 0x51, 0xdf, + 0x55, 0x42, 0x90, 0xab, 0x9e, 0xab, 0x4e, 0xb2, + 0x45, 0xc8, 0x57, 0xd7, 0xab, 0x21, 0xc1, 0xd3, + 0x63, 0x84, 0x57, 0x8c, 0xc0, 0x33, 0xcf, 0xa1, + 0xa7, 0x65, 0xf5, 0x21, 0x1b, 0xaf, 0x86, 0x18, + 0x44, 0x1c, 0xc2, 0xe3, 0x1e, 0x17, 0x75, 0x38, + 0x93, 0xce, 0x65, 0xe1, 0x1a, 0x64, 0xd5, 0x63, + 0xc7, 0x13, 0xf6, 0xd8, 0xb1, 0x6a, 0x2b, 0x0e, + 0xea, 0x99, 0x43, 0xae, 0x95, 0x1b, 0x3b, 0xfe, + 0x8b, 0x9d, 0x45, 0x77, 0x69, 0x05, 0x63, 0xfe, + 0x1b, 0xd6, 0x15, 0xeb, 0xea, 0x3f, 0xee, 0xdf, + 0x45, 0xcc, 0x49, 0x40, 0x79, 0x91, 0x5b, 0x3e, + 0xce, 0xda, 0xd7, 0x1b, 0x70, 0x0d, 0x95, 0x1b, + 0x76, 0xd6, 0x5e, 0x3e, 0xb8, 0x6e, 0xfd, 0xcf, + 0x7f, 0x0c, 0xdd, 0x95, 0xf6, 0xc8, 0x4f, 0xe4, + 0x08, 0xe2, 0x96, 0x7a, 0xad, 0xdd, 0xf5, 0x92, + 0x87, 0x9b, 0x28, 0x8b, 0x23, 0xa4, 0x15, 0x36, + 0xa5, 0xa8, 0x0a, 0x73, 0xa8, 0x3f, 0x8f, 0x6a, + 0x5e, 0xa8, 0x98, 0x90, 0xcb, 0x68, 0x99, 0xfc, + 0xa7, 0x6f, 0x7a, 0xfd, 0x16, 0x3b, 0xf8, 0x9c, + 0x36, 0xba, 0x78, 0x9d, 0x2d, 0x57, 0x48, 0xc3, + 0x0a, 0xb9, 0xe8, 0x59, 0x87, 0x71, 0x7c, 0x8d, + 0x83, 0x58, 0x05, 0x35, 0x37, 0xa7, 0x5d, 0xcf, + 0x3f, 0x7e, 0xe3, 0x29, 0x7a, 0xa1, 0x17, 0x26, + 0x79, 0x45, 0xce, 0x1c, 0x3c, 0x5a, 0xc2, 0x6b, + 0x2a, 0x2a, 0x41, 0xee, 0x5d, 0xd8, 0x51, 0xef, + 0x47, 0x74, 0x57, 0x9a, 0x94, 0x32, 0x60, 0x6d, + 0x53, 0x55, 0xee, 0xec, 0x40, 0x28, 0x1a, 0xcc, + 0xc4, 0x3f, 0x76, 0x3c, 0x2e, 0x5c, 0xaf, 0xc6, + 0x20, 0x6a, 0x99, 0x90, 0x56, 0x03, 0x7a, 0x43, + 0x23, 0xa6, 0x32, 0xe6, 0x70, 0x07, 0x76, 0x0f, + 0x5d, 0x09, 0xfb, 0x78, 0x0c, 0xd6, 0xd4, 0x8f, + 0x29, 0xc7, 0x49, 0x8a, 0x93, 0xef, 0x31, 0x07, + 0x8b, 0xf9, 0xce, 0x95, 0x8e, 0xff, 0xa9, 0xe2, + 0xd6, 0x7c, 0x79, 0x2b, 0xd5, 0xcb, 0xe3, 0xeb, + 0x32, 0x23, 0x66, 0x85, 0x59, 0x77, 0x76, 0xfb, + 0xf9, 0xf6, 0x1f, 0x2a, 0x43, 0x46, 0xd4, 0x50, + 0xb7, 0x6f, 0xee, 0xf9, 0x6a, 0xd8, 0xeb, 0xef, + 0x25, 0xc8, 0x26, 0x34, 0x79, 0xd1, 0x1d, 0x12, + 0xd3, 0x0e, 0xec, 0x74, 0x65, 0xa9, 0x3d, 0x1c, + 0xf6, 0x1e, 0x7d, 0xf2, 0xd5, 0xfe, 0xa9, 0x0e, + 0xf7, 0xa8, 0x3b, 0x6f, 0xf0, 0x51, 0x88, 0x47, + 0x50, 0x5f, 0x1d, 0xe6, 0x71, 0x54, 0x86, 0x4f, + 0x2b, 0x66, 0xc4, 0x35, 0x21, 0x28, 0x07, 0xe5, + 0x40, 0xdb, 0x8f, 0x45, 0xc7, 0xdb, 0xa8, 0x46, + 0xf1, 0x91, 0x7c, 0xcf, 0x5b, 0x03, 0xb0, 0x87, + 0x3f, 0x2a, 0x79, 0xaa, 0xd4, 0xc2, 0x2e, 0xaa, + 0x85, 0xc0, 0x6f, 0x53, 0xad, 0x67, 0xad, 0xe8, + 0x41, 0xbc, 0x11, 0xb7, 0x92, 0x2d, 0x74, 0xcc, + 0xe4, 0x28, 0xd6, 0x4c, 0x3d, 0x5a, 0x8f, 0xbb, + 0xe8, 0xba, 0xb8, 0x6b, 0xa5, 0x2c, 0x54, 0xb0, + 0xdc, 0x20, 0x14, 0x2b, 0xcf, 0xbb, 0xe3, 0x8c, + 0xbb, 0xab, 0x9c, 0x54, 0xa5, 0xe6, 0x59, 0x0c, + 0xae, 0x28, 0x1f, 0x25, 0x79, 0x4d, 0x3d, 0x59, + 0x4e, 0x75, 0x34, 0x9c, 0x3b, 0x11, 0x32, 0xac, + 0x81, 0xd7, 0xe4, 0x2b, 0xc7, 0x97, 0x4a, 0x0f, + 0x1c, 0xe3, 0x28, 0xe2, 0xf5, 0xf7, 0x65, 0x3a, + 0xcf, 0xb7, 0xda, 0x8a, 0x3c, 0x43, 0xbe, 0xa7, + 0x78, 0x9e, 0xa7, 0x21, 0x03, 0xbc, 0x79, 0xf4, + 0x59, 0xca, 0x53, 0x4e, 0xdb, 0x2f, 0x35, 0x94, + 0xfd, 0xe9, 0x54, 0x90, 0x57, 0x87, 0x8f, 0xa6, + 0x8d, 0x0c, 0x2b, 0x95, 0x74, 0x5d, 0xe8, 0xf1, + 0x2a, 0xf8, 0x50, 0x65, 0xa1, 0x13, 0xb9, 0xd5, + 0x17, 0xf4, 0x6c, 0x2e, 0x7c, 0x77, 0xbc, 0xae, + 0x29, 0xac, 0x15, 0x93, 0x65, 0x78, 0xed, 0x4f, + 0x7b, 0xd0, 0x59, 0xbd, 0xbb, 0x2b, 0xd7, 0x7c, + 0x2c, 0x4b, 0x1d, 0xf7, 0x3a, 0x87, 0x73, 0xd0, + 0x26, 0xd8, 0x15, 0xf6, 0xa5, 0xd3, 0x1d, 0x39, + 0xfd, 0xd5, 0xba, 0x11, 0x38, 0xbf, 0xff, 0xf5, + 0x2f, 0xfe, 0xed, 0xfd, 0xf8, 0x2a, 0xae, 0xff, + 0x15, 0x9e, 0x35, 0xc1, 0xe6, 0x89, 0x7f, 0x3a, + 0xe9, 0x5c, 0x22, 0x95, 0x4b, 0xcf, 0x75, 0xcb, + 0x9d, 0x16, 0xa6, 0x3b, 0x9a, 0x32, 0xc5, 0x36, + 0xfe, 0x35, 0xed, 0xa9, 0xd9, 0x77, 0x33, 0x5b, + 0x7c, 0x17, 0xd1, 0x82, 0x33, 0x5e, 0x52, 0xc5, + 0x92, 0x22, 0x2a, 0x03, 0x9d, 0x0a, 0x86, 0x14, + 0x2e, 0x56, 0xa8, 0x7f, 0xb8, 0x43, 0x5c, 0x2f, + 0x96, 0x35, 0x37, 0xcc, 0x90, 0xe4, 0xf7, 0x08, + 0x32, 0x66, 0x9c, 0x3a, 0x05, 0x35, 0xf4, 0x96, + 0x2e, 0x67, 0xcb, 0x6c, 0x3f, 0xa4, 0x0e, 0xa5, + 0x3c, 0x7c, 0x5d, 0x79, 0xb7, 0x01, 0x71, 0x8e, + 0x16, 0x2c, 0xad, 0x5a, 0x82, 0x92, 0x2f, 0xcd, + 0x9a, 0xaa, 0x9c, 0x2f, 0x0f, 0xd4, 0xfb, 0x3a, + 0x26, 0x90, 0x3f, 0x49, 0x90, 0x3f, 0x55, 0xcb, + 0x81, 0xc6, 0x69, 0x65, 0x85, 0x66, 0x59, 0x27, + 0x4b, 0xfd, 0x80, 0xd5, 0x46, 0x6c, 0x0e, 0x79, + 0x5a, 0x46, 0x56, 0x1e, 0x2a, 0xcc, 0x7c, 0xeb, + 0xb1, 0xf4, 0x50, 0x35, 0xa1, 0xdb, 0x85, 0xa7, + 0x68, 0x44, 0xa1, 0x35, 0x16, 0x9d, 0x1d, 0x94, + 0x94, 0x92, 0x54, 0xce, 0x2a, 0xe4, 0x19, 0x71, + 0x02, 0x9f, 0xc3, 0x71, 0xb4, 0x7c, 0x46, 0xf5, + 0xd7, 0xf9, 0x07, 0x7a, 0x74, 0x1e, 0x3d, 0xe5, + 0x52, 0x8a, 0x46, 0xb9, 0x01, 0xaa, 0x21, 0xf8, + 0xb6, 0x39, 0x63, 0x2e, 0x37, 0xcf, 0xf1, 0xab, + 0x01, 0x78, 0x9b, 0x92, 0x06, 0x25, 0xd1, 0xc4, + 0x5e, 0x3a, 0x55, 0x11, 0x2b, 0xfd, 0x3a, 0xcc, + 0x63, 0xbf, 0xc6, 0x2b, 0xf3, 0xa5, 0xad, 0x5f, + 0x60, 0xee, 0xd6, 0xbd, 0xb8, 0x2e, 0x37, 0xd0, + 0x5c, 0xfd, 0x9d, 0xfe, 0x42, 0xb1, 0x93, 0x79, + 0xa1, 0xa7, 0x29, 0x1e, 0xa8, 0x86, 0x7b, 0xd6, + 0xc9, 0xd1, 0x75, 0x09, 0x52, 0x67, 0x99, 0xab, + 0xd8, 0x74, 0x5d, 0x5c, 0xa3, 0xf5, 0xa8, 0x19, + 0xaf, 0x26, 0xe9, 0x9b, 0x75, 0xb1, 0x01, 0x88, + 0x0c, 0x40, 0x1c, 0xea, 0x4c, 0x4e, 0xff, 0x09, + 0xfe, 0x9f, 0x00, 0xcf, 0xf4, 0xce, 0x86, 0x86, + 0x0a, 0x61, 0xe5, 0x82, 0xb5, 0x10, 0x2e, 0x9e, + 0x70, 0x84, 0x41, 0xcd, 0x3d, 0xcc, 0x19, 0xd0, + 0xff, 0x41, 0x38, 0xc8, 0x1f, 0x06, 0xe0, 0xa7, + 0xfa, 0x72, 0x36, 0xbc, 0x1a, 0xce, 0xd0, 0x0e, + 0x3b, 0x4f, 0xab, 0x1f, 0x6a, 0x9c, 0x8c, 0xa0, + 0xba, 0xb3, 0x1c, 0x89, 0x47, 0xc2, 0xe3, 0x1e, + 0x0b, 0x9b, 0xeb, 0x60, 0x60, 0xb7, 0xf8, 0x22, + 0x43, 0xb5, 0xc6, 0x79, 0x42, 0x8e, 0xad, 0x78, + 0x9d, 0x8b, 0xb8, 0x90, 0x70, 0x10, 0x31, 0x92, + 0x62, 0x52, 0xab, 0xb0, 0x9d, 0xdd, 0x22, 0x95, + 0x8e, 0x4e, 0x9d, 0x90, 0x23, 0xb3, 0x10, 0x97, + 0x45, 0xb8, 0xef, 0x63, 0x8e, 0xfa, 0xc6, 0x83, + 0x78, 0x4f, 0xe8, 0x67, 0xe6, 0xfc, 0x60, 0x0f, + 0xd8, 0xd7, 0xed, 0xa0, 0x7d, 0xe3, 0x55, 0xd0, + 0xba, 0x7e, 0xb8, 0x78, 0x70, 0xc1, 0x5e, 0x69, + 0x29, 0x7b, 0x3c, 0x1a, 0x51, 0x74, 0x56, 0x47, + 0x2c, 0xe9, 0xac, 0x73, 0x5b, 0x42, 0xe7, 0xae, + 0x88, 0xa3, 0x58, 0xb7, 0x3c, 0x1f, 0x22, 0x42, + 0x2c, 0xec, 0x14, 0x1b, 0xe7, 0x1b, 0xe7, 0xf3, + 0x97, 0x95, 0xab, 0xca, 0x74, 0xbe, 0xa8, 0x4c, + 0x2b, 0x45, 0x5f, 0x29, 0x1d, 0x22, 0xb7, 0xfb, + 0xda, 0xba, 0x76, 0x9b, 0x3d, 0x62, 0xb7, 0x4c, + 0xbd, 0x75, 0x53, 0xfb, 0x44, 0xda, 0xea, 0xe0, + 0xc1, 0x61, 0x5f, 0x90, 0xd2, 0x2d, 0x59, 0x1a, + 0x33, 0xe3, 0x6e, 0xbc, 0x85, 0x58, 0x63, 0x44, + 0x21, 0xcf, 0x98, 0x77, 0xb9, 0x27, 0x35, 0xa2, + 0x36, 0x68, 0x04, 0xc0, 0x98, 0xc4, 0x1d, 0x4b, + 0x81, 0x08, 0x4c, 0xe8, 0xba, 0x60, 0x3c, 0x17, + 0xd6, 0x91, 0x17, 0xc5, 0x36, 0x8c, 0xbb, 0xa8, + 0x21, 0xd8, 0x60, 0x8d, 0x9b, 0x1e, 0x47, 0x8c, + 0x77, 0x5b, 0x30, 0x9e, 0xf4, 0x39, 0x42, 0x7c, + 0xb4, 0x17, 0x3b, 0x48, 0xf2, 0xbc, 0x82, 0x9e, + 0x3e, 0xab, 0xea, 0x34, 0xdc, 0x56, 0xd5, 0x59, + 0x75, 0x76, 0x25, 0x8f, 0x88, 0xed, 0x4e, 0x76, + 0xfc, 0x02, 0xb3, 0x63, 0x52, 0x9e, 0x85, 0x9d, + 0xdd, 0xa1, 0x1a, 0xa7, 0xfb, 0x91, 0x1f, 0xe5, + 0x4a, 0x01, 0xb3, 0x66, 0x9d, 0x2a, 0x9f, 0xd2, + 0xfd, 0x48, 0xd6, 0xaf, 0x51, 0xf0, 0x7e, 0xd2, + 0x90, 0x9e, 0x75, 0x97, 0xec, 0x85, 0xdc, 0x06, + 0xbc, 0x4f, 0xb8, 0x1c, 0x35, 0xa2, 0x9e, 0xeb, + 0xa5, 0x90, 0xfc, 0xf1, 0x88, 0xe9, 0x77, 0x9c, + 0xe7, 0x06, 0xb9, 0xdc, 0xc0, 0xfd, 0x1d, 0x07, + 0x79, 0x5c, 0x83, 0x5e, 0xbc, 0xb1, 0xa1, 0x2f, + 0xb6, 0x97, 0x0c, 0x69, 0x73, 0xf7, 0x65, 0x68, + 0x09, 0xfd, 0x62, 0x16, 0xdd, 0x1e, 0x57, 0x44, + 0x01, 0xf5, 0xf3, 0xcf, 0xae, 0x5c, 0x6c, 0x0d, + 0x26, 0xf1, 0x7b, 0x88, 0xca, 0xb0, 0x11, 0x31, + 0xbb, 0x7a, 0xaa, 0xfe, 0x9a, 0xce, 0xab, 0xa5, + 0x03, 0xf2, 0x19, 0xf9, 0xbb, 0x86, 0xe8, 0xe9, + 0xc6, 0x07, 0xe5, 0x69, 0x54, 0xf1, 0xaa, 0x07, + 0xcc, 0xb3, 0xad, 0xa7, 0x95, 0x51, 0x5c, 0xb7, + 0x99, 0x5c, 0x1a, 0xaf, 0xfb, 0xe3, 0xaa, 0xa6, + 0x87, 0xdb, 0x61, 0x83, 0x78, 0x13, 0x2f, 0x2f, + 0x2f, 0xc1, 0x15, 0x74, 0xbb, 0x57, 0x10, 0x19, + 0x26, 0x71, 0x2b, 0xea, 0xce, 0x58, 0xff, 0x61, + 0xa1, 0xbf, 0xb6, 0x64, 0x65, 0x9d, 0x94, 0x95, + 0xb4, 0xce, 0xba, 0x15, 0xd2, 0x9c, 0x0f, 0x1d, + 0xc5, 0x61, 0xa5, 0x40, 0xff, 0x05, 0x88, 0x77, + 0x6c, 0xc9, 0x5e, 0x74, 0x71, 0x65, 0xf0, 0x72, + 0x0d, 0x88, 0x02, 0x66, 0xdd, 0x05, 0x3d, 0x57, + 0xd5, 0x5a, 0xf3, 0x14, 0xeb, 0xcc, 0xb2, 0x6b, + 0x6c, 0x7a, 0x2b, 0x53, 0x57, 0x49, 0x7d, 0x34, + 0xc8, 0x88, 0x3b, 0x28, 0xa0, 0xf6, 0x3b, 0xc6, + 0x3c, 0xa3, 0x90, 0x03, 0xfb, 0x0c, 0x14, 0xfe, + 0xdc, 0xf3, 0xca, 0x52, 0x75, 0x97, 0xdd, 0x72, + 0x5e, 0xc0, 0x73, 0x57, 0xd9, 0x2c, 0x5b, 0xdd, + 0x9a, 0xab, 0x2f, 0xed, 0x08, 0x82, 0xdf, 0xfd, + 0xf1, 0x3b, 0xf1, 0x70, 0x1e, 0xfa, 0xd8, 0xa3, + 0xfe, 0xa3, 0x7c, 0xee, 0xf5, 0xab, 0x82, 0xac, + 0xeb, 0xb0, 0x9b, 0xc0, 0xca, 0x9b, 0x32, 0x27, + 0xcc, 0x45, 0xc6, 0x8c, 0x5a, 0x2e, 0xaa, 0x5c, + 0xcf, 0x89, 0xc6, 0x84, 0xf9, 0x58, 0xec, 0xf8, + 0xd3, 0xa1, 0x46, 0x02, 0x3b, 0x97, 0x9b, 0x94, + 0x51, 0x3b, 0x67, 0xdd, 0xf4, 0x23, 0x37, 0x54, + 0x87, 0x2e, 0xb2, 0xd0, 0x16, 0xaa, 0x6d, 0x87, + 0x0e, 0x34, 0x67, 0x99, 0x2d, 0x6c, 0x5d, 0x83, + 0xf9, 0x3e, 0x4f, 0x5d, 0x00, 0xcc, 0x34, 0x0a, + 0xd6, 0x7d, 0xf7, 0x4b, 0xab, 0x66, 0xdd, 0x77, + 0x96, 0x2c, 0xf8, 0xdd, 0xf9, 0x02, 0x66, 0xfb, + 0x7d, 0x77, 0xa9, 0xee, 0xbb, 0x05, 0xd5, 0x48, + 0xf1, 0x10, 0xf6, 0x6e, 0xfd, 0x99, 0x9e, 0x70, + 0x50, 0xff, 0x8c, 0x57, 0xa8, 0xa8, 0xaa, 0xa7, + 0xd4, 0x74, 0xc9, 0x4c, 0x49, 0x13, 0xf2, 0x84, + 0xa2, 0xbd, 0xd1, 0x44, 0x5a, 0xec, 0xca, 0xa1, + 0xba, 0x5f, 0x45, 0xc4, 0xb8, 0x0d, 0x72, 0x06, + 0xe1, 0xaa, 0x73, 0x51, 0x7a, 0xe0, 0xdc, 0xef, + 0xc4, 0x39, 0x5d, 0x04, 0x4e, 0x47, 0xf7, 0x41, + 0xe8, 0xc6, 0x32, 0xf8, 0x8d, 0x8a, 0x4a, 0x56, + 0x5f, 0xc2, 0x75, 0xc9, 0xc9, 0x98, 0x17, 0x9d, + 0x25, 0x53, 0x75, 0xb2, 0xc6, 0x45, 0x62, 0x54, + 0x05, 0x84, 0x53, 0xe5, 0x71, 0xaa, 0x7e, 0x0c, + 0xe8, 0x23, 0x4e, 0x95, 0x57, 0x56, 0xa8, 0xba, + 0x22, 0xf5, 0x22, 0xc9, 0x95, 0x61, 0xb8, 0xca, + 0xe7, 0x94, 0xcb, 0xca, 0x03, 0xaa, 0x46, 0xc7, + 0xe9, 0x7d, 0x67, 0x60, 0xa6, 0x24, 0x9e, 0xdc, + 0xd2, 0x66, 0xda, 0xaa, 0x34, 0xfc, 0x9e, 0x6a, + 0xc4, 0x30, 0x6e, 0xa6, 0x75, 0x0f, 0xa9, 0x88, + 0x0e, 0x9a, 0xad, 0x5d, 0x3b, 0xf6, 0x3a, 0xde, + 0x8a, 0xbc, 0x4a, 0xd5, 0xbf, 0xed, 0x54, 0x91, + 0x73, 0x9e, 0xf2, 0xbf, 0xa7, 0x83, 0x48, 0xb8, + 0x1e, 0xec, 0x0f, 0xf3, 0xff, 0x13, 0x68, 0xa2, + 0xeb, 0x07, 0xbf, 0xd5, 0x5c, 0xfe, 0x33, 0x76, + 0xc4, 0x77, 0x06, 0x52, 0xea, 0xc4, 0x3a, 0xd2, + 0x4e, 0xda, 0x5a, 0xab, 0x2e, 0xb7, 0xb2, 0xce, + 0x50, 0x6b, 0x04, 0xe6, 0xc5, 0x58, 0x75, 0xee, + 0x20, 0x6b, 0xdf, 0x2f, 0xad, 0xed, 0x75, 0x38, + 0x08, 0x55, 0xc1, 0x2c, 0x98, 0x8b, 0x72, 0x56, + 0x2e, 0xe4, 0xb0, 0xa3, 0x59, 0x30, 0x03, 0x62, + 0x50, 0x3c, 0x59, 0xaf, 0x83, 0xb5, 0x81, 0x98, + 0xd5, 0x09, 0x61, 0x46, 0xd0, 0x5d, 0xee, 0xb1, + 0xae, 0xd7, 0x67, 0xda, 0x8a, 0x05, 0x11, 0xb1, + 0x85, 0xa8, 0x6c, 0xd4, 0x8d, 0xba, 0x75, 0xa4, + 0x1f, 0x8e, 0xc0, 0xe9, 0x88, 0x4b, 0x71, 0x96, + 0x66, 0x2a, 0x2b, 0xf5, 0x30, 0x6b, 0x66, 0xd9, + 0x1c, 0x53, 0x29, 0xd3, 0xf4, 0xb1, 0xa4, 0x89, + 0xc3, 0x45, 0x63, 0xb7, 0x22, 0xbd, 0xac, 0xa1, + 0xef, 0x77, 0x3b, 0x28, 0x87, 0xe5, 0x1c, 0xd5, + 0xea, 0xb9, 0x02, 0xdc, 0x0b, 0x77, 0x4e, 0x99, + 0x83, 0x38, 0xfb, 0xb9, 0xc3, 0x20, 0x66, 0x8e, + 0x2b, 0x7f, 0xf6, 0xbd, 0x57, 0x20, 0xbe, 0x52, + 0xf5, 0xdb, 0xa8, 0x65, 0x55, 0x1d, 0x87, 0x11, + 0xba, 0x4e, 0xaa, 0x56, 0xde, 0x55, 0x40, 0xac, + 0x12, 0xcc, 0x90, 0xeb, 0xe4, 0xd7, 0xf6, 0xe0, + 0x44, 0x9f, 0x9d, 0x77, 0xc3, 0x8b, 0xae, 0x52, + 0x57, 0xd0, 0xb1, 0x98, 0xeb, 0x8b, 0x3e, 0xb9, + 0xfb, 0xf2, 0x66, 0xb8, 0x4e, 0xca, 0x69, 0x35, + 0xe2, 0x73, 0x2c, 0xc8, 0xcb, 0x56, 0xd6, 0xd2, + 0x0c, 0xad, 0xac, 0x29, 0x17, 0xca, 0x2b, 0xd6, + 0x9f, 0x69, 0xf5, 0x46, 0x66, 0x61, 0x61, 0x27, + 0xdb, 0x2a, 0x6a, 0xa9, 0x5c, 0xb6, 0xb5, 0x4e, + 0xca, 0x00, 0xa1, 0xa3, 0xae, 0x8f, 0x7a, 0xb7, + 0x06, 0x44, 0x48, 0x58, 0x67, 0xda, 0xc3, 0x85, + 0xf2, 0xca, 0xd8, 0x00, 0xac, 0x5e, 0xeb, 0x6d, + 0xc2, 0x8a, 0xf7, 0xa8, 0x65, 0x07, 0xe4, 0x40, + 0x8e, 0x67, 0xc7, 0xe8, 0xb4, 0x2b, 0xb3, 0x49, + 0xf7, 0x12, 0xbb, 0x4c, 0xce, 0xc5, 0x86, 0x15, + 0x39, 0x94, 0x2b, 0x31, 0xd3, 0xcb, 0x70, 0x1b, + 0xe8, 0x71, 0x0f, 0xdf, 0xca, 0x26, 0xd7, 0xad, + 0x95, 0x07, 0x49, 0x7f, 0x3c, 0x77, 0x15, 0xe8, + 0x22, 0x02, 0x29, 0x1a, 0xf7, 0xf1, 0x44, 0xe4, + 0x3a, 0x6a, 0x66, 0x7e, 0xda, 0x56, 0xe0, 0xda, + 0x70, 0x0d, 0x4c, 0xee, 0x47, 0xcf, 0x35, 0xbb, + 0x60, 0xb5, 0xc4, 0x9c, 0xb7, 0x51, 0x84, 0xbc, + 0x0d, 0xfd, 0xb6, 0xce, 0x38, 0x55, 0x5a, 0x41, + 0x3d, 0xae, 0x87, 0x8f, 0xe9, 0x75, 0x10, 0x17, + 0x76, 0xf3, 0x04, 0x6f, 0x02, 0xcf, 0x24, 0xea, + 0xc7, 0x4d, 0x59, 0xd1, 0x32, 0x9c, 0xc1, 0xbf, + 0xa7, 0xdf, 0xf7, 0xb2, 0x0b, 0x25, 0xe5, 0x8e, + 0x9b, 0x55, 0x96, 0xb8, 0xb3, 0x03, 0xd5, 0x55, + 0xb3, 0x58, 0x71, 0x75, 0x24, 0x4f, 0x3b, 0xba, + 0x56, 0x47, 0x37, 0xf2, 0x29, 0x16, 0x63, 0xbb, + 0xd5, 0xe0, 0x09, 0x35, 0x30, 0x3f, 0x0a, 0xe1, + 0xfe, 0xbd, 0xdd, 0xdc, 0x8b, 0x2b, 0xc4, 0xc6, + 0x25, 0x1c, 0x55, 0x34, 0xa6, 0x5a, 0xaa, 0x39, + 0xfb, 0x0a, 0xff, 0x6d, 0x57, 0xbd, 0xa1, 0xab, + 0x92, 0xcc, 0x6b, 0x9c, 0xda, 0x2b, 0xad, 0x9a, + 0x93, 0x3a, 0x15, 0x66, 0x25, 0xaf, 0x09, 0x2a, + 0xae, 0x7f, 0xab, 0x5a, 0xe0, 0x78, 0x75, 0x3b, + 0x60, 0xac, 0x1a, 0xb3, 0x9b, 0x73, 0xff, 0x2a, + 0xdc, 0x15, 0x71, 0x2e, 0x24, 0x77, 0x8f, 0xa4, + 0xfa, 0x59, 0xb7, 0x6a, 0x8d, 0xcb, 0x83, 0xcd, + 0x93, 0x78, 0x15, 0x41, 0xa1, 0xca, 0x98, 0x23, + 0x28, 0x18, 0x33, 0x75, 0x1c, 0x07, 0x9c, 0xbc, + 0x89, 0xda, 0x95, 0x41, 0x29, 0x23, 0x47, 0xcb, + 0xe9, 0x66, 0x70, 0x27, 0x68, 0x0c, 0x1c, 0xee, + 0x1a, 0x78, 0x26, 0xc6, 0xe4, 0xa4, 0xec, 0x23, + 0x6f, 0x6b, 0x4e, 0x98, 0x79, 0x1d, 0x4f, 0xe3, + 0xf2, 0xce, 0x55, 0x6b, 0xba, 0x5a, 0x94, 0xa7, + 0x7d, 0xaf, 0xe4, 0xbe, 0xef, 0x3f, 0x72, 0xd2, + 0x17, 0x0f, 0xf9, 0xac, 0xd5, 0x82, 0x05, 0x7b, + 0xb3, 0x23, 0x68, 0x45, 0x37, 0xa3, 0xf1, 0x8c, + 0x31, 0xa3, 0xcc, 0x95, 0xbb, 0xdc, 0xff, 0x20, + 0xfa, 0xf7, 0x96, 0xab, 0x79, 0xff, 0x99, 0x32, + 0x31, 0xaa, 0x06, 0x64, 0xd1, 0x5a, 0x69, 0x60, + 0x0c, 0x02, 0x6b, 0xb4, 0x93, 0x2a, 0x43, 0x7c, + 0x0c, 0xfb, 0x3e, 0xc4, 0xc7, 0x9e, 0x67, 0x62, + 0xbe, 0xaa, 0x5a, 0xb3, 0xca, 0xbc, 0xbb, 0x2a, + 0xe0, 0x6e, 0x03, 0x7b, 0x46, 0x65, 0x56, 0x9f, + 0x2d, 0xcd, 0x95, 0x50, 0x23, 0x05, 0xd5, 0x2a, + 0x7a, 0x6a, 0x8f, 0x2e, 0xe9, 0x8f, 0x94, 0x03, + 0xf5, 0xc1, 0xf2, 0x4a, 0xaa, 0xdb, 0xb9, 0xc0, + 0x03, 0xd6, 0x1b, 0x74, 0x31, 0x22, 0x84, 0x58, + 0xe9, 0x80, 0x38, 0xda, 0xd4, 0x5b, 0x85, 0xb1, + 0x6c, 0x5d, 0xb2, 0xae, 0xba, 0x86, 0xe0, 0xab, + 0x55, 0x71, 0x5d, 0x53, 0xc4, 0xd5, 0x73, 0xee, + 0x18, 0x44, 0xa3, 0x5c, 0x9d, 0xe1, 0x00, 0xd5, + 0x19, 0xd6, 0x7e, 0xc2, 0x4a, 0xd1, 0x49, 0x57, + 0xb5, 0x50, 0x53, 0xae, 0xc8, 0xcc, 0x77, 0x55, + 0xeb, 0x55, 0x4d, 0xfc, 0x30, 0x2f, 0xf3, 0xbd, + 0xdd, 0xa5, 0x7a, 0xd2, 0x4d, 0x91, 0xb7, 0x3b, + 0x2a, 0x03, 0x74, 0xbc, 0xdd, 0x21, 0xe7, 0x08, + 0x7a, 0x0a, 0x96, 0x83, 0x4e, 0x58, 0x0a, 0x4b, + 0x71, 0x49, 0x95, 0x4a, 0xd2, 0x20, 0xc7, 0xb9, + 0xe9, 0x93, 0x2e, 0xd7, 0xeb, 0xa8, 0xb9, 0xa8, + 0x09, 0x7e, 0x59, 0xba, 0xec, 0xdc, 0xc3, 0x4f, + 0xfd, 0x6a, 0x54, 0xec, 0xc4, 0x84, 0x06, 0xf5, + 0x09, 0x8c, 0x22, 0x8c, 0x69, 0xe4, 0x0f, 0x67, + 0x9d, 0x75, 0xea, 0xd2, 0x62, 0xfd, 0x62, 0x48, + 0x79, 0xe6, 0xc4, 0x61, 0x2f, 0x8f, 0x92, 0xc3, + 0xe0, 0x12, 0x75, 0xad, 0x59, 0x6b, 0x58, 0xe4, + 0x4e, 0xca, 0x01, 0xe1, 0xfa, 0x6b, 0x74, 0x37, + 0xe8, 0x45, 0x3a, 0xf8, 0xb5, 0xeb, 0x1e, 0x6d, + 0x95, 0xdf, 0xc5, 0x99, 0xfb, 0x58, 0x8f, 0xa0, + 0x0e, 0xd1, 0x11, 0xcb, 0x94, 0x4a, 0x25, 0xea, + 0xa8, 0x34, 0xf9, 0xbe, 0x9f, 0x51, 0x66, 0x5c, + 0x74, 0x6d, 0xd7, 0xde, 0x5e, 0x78, 0xbb, 0xb0, + 0x99, 0xdd, 0xbc, 0x60, 0xad, 0xa0, 0xdf, 0x57, + 0x8e, 0x8f, 0x58, 0x55, 0x81, 0x11, 0x0a, 0xb1, + 0x91, 0x44, 0x7c, 0x63, 0x0d, 0x8e, 0x0b, 0xce, + 0x4a, 0x8b, 0x2b, 0xf1, 0x92, 0x57, 0x79, 0xbd, + 0xaf, 0x52, 0xef, 0xe4, 0x3d, 0x25, 0x22, 0xdc, + 0xcb, 0x64, 0x98, 0x9d, 0x29, 0x56, 0x61, 0xb8, + 0x53, 0x47, 0x59, 0xd4, 0x3c, 0x6b, 0x06, 0x24, + 0x88, 0x18, 0x3d, 0x3d, 0x46, 0x5f, 0x7b, 0x07, + 0x7f, 0x9f, 0x20, 0x3f, 0x0b, 0xfc, 0x2b, 0xd7, + 0xf1, 0x0f, 0x7d, 0x21, 0x63, 0xfe, 0x8b, 0xeb, + 0x6e, 0xd2, 0xaa, 0x58, 0x91, 0x23, 0x39, 0x27, + 0xb7, 0xae, 0x7a, 0x59, 0xb9, 0x6c, 0xed, 0xb4, + 0x61, 0x84, 0xb4, 0xe5, 0xbf, 0xa7, 0xdb, 0x4f, + 0x93, 0xf2, 0x01, 0xcc, 0xee, 0x46, 0x2c, 0x99, + 0x17, 0x3d, 0xbf, 0xf2, 0xe6, 0x0b, 0xe2, 0xcd, + 0xa0, 0x02, 0xe8, 0x53, 0xda, 0xd1, 0x50, 0x05, + 0x27, 0xa7, 0x70, 0xa5, 0x65, 0xc8, 0x08, 0x5e, + 0x0a, 0x2f, 0x57, 0xc3, 0x41, 0xac, 0x45, 0x9b, + 0x90, 0x11, 0x18, 0xaa, 0x92, 0x3f, 0x1c, 0x0c, + 0xf7, 0x30, 0xf4, 0x4d, 0x34, 0x71, 0x8b, 0x39, + 0xf4, 0xd9, 0x61, 0xff, 0x1d, 0xa1, 0xae, 0x74, + 0x97, 0xa1, 0x3f, 0x55, 0xe5, 0x3c, 0xbe, 0x29, + 0xc8, 0x00, 0xa2, 0x95, 0x73, 0x7a, 0x45, 0xef, + 0xd4, 0xae, 0x9d, 0x00, 0xf6, 0x2a, 0x9c, 0x7c, + 0x59, 0x28, 0xe7, 0xcb, 0x6a, 0x43, 0xdd, 0x5f, + 0x55, 0x83, 0xa9, 0x93, 0xf8, 0xc9, 0x54, 0x85, + 0xfb, 0x3d, 0x7b, 0x07, 0xed, 0xa1, 0x43, 0xd5, + 0x67, 0x56, 0x42, 0x09, 0x93, 0x7e, 0x40, 0xc8, + 0x59, 0xaa, 0x67, 0xeb, 0xd9, 0x3d, 0xb6, 0x27, + 0x61, 0xe4, 0x96, 0xf3, 0x91, 0xb7, 0x3e, 0xb3, + 0xb1, 0xb7, 0x4b, 0x2b, 0x95, 0x42, 0xaa, 0x64, + 0x17, 0x90, 0x89, 0x85, 0x9a, 0xb6, 0xb6, 0xe6, + 0x84, 0x61, 0xf5, 0xa5, 0x5c, 0x51, 0xf1, 0x77, + 0xe7, 0x5e, 0x07, 0x49, 0x8f, 0xd7, 0xea, 0x29, + 0x87, 0xf7, 0xa2, 0x76, 0x89, 0x6f, 0xd1, 0xeb, + 0x11, 0xd9, 0x41, 0xfc, 0xfe, 0x1e, 0x66, 0xcc, + 0xab, 0x4c, 0x7b, 0x5a, 0xcc, 0x5d, 0xbd, 0xd7, + 0x62, 0x0f, 0xc2, 0x19, 0x19, 0x19, 0x27, 0x23, + 0x00, 0xe1, 0x77, 0x1c, 0x7f, 0x7c, 0x4e, 0x55, + 0xd7, 0xfd, 0xb9, 0x8b, 0xf2, 0x0c, 0x78, 0x5c, + 0x90, 0x4e, 0xb7, 0xc5, 0x43, 0x75, 0xf6, 0xde, + 0x64, 0x93, 0xb2, 0x54, 0x18, 0x1b, 0x11, 0x63, + 0x9d, 0x65, 0x99, 0x0a, 0xbb, 0xec, 0x62, 0x13, + 0x3d, 0xac, 0x60, 0x5c, 0xe7, 0x6a, 0xaa, 0xf4, + 0xdb, 0x70, 0x98, 0xd7, 0x54, 0xbb, 0xaa, 0xd4, + 0x18, 0xdd, 0x8c, 0xb3, 0x84, 0x36, 0xbf, 0x72, + 0xad, 0x75, 0x93, 0x33, 0x05, 0x20, 0x82, 0x92, + 0xcd, 0x9a, 0x13, 0xd7, 0xe3, 0xad, 0xd8, 0xeb, + 0x71, 0xe5, 0x7b, 0x87, 0xf0, 0x16, 0xf2, 0xa8, + 0xb4, 0xe2, 0xfb, 0xf0, 0x36, 0x76, 0x1b, 0x21, + 0x79, 0x4a, 0x9a, 0x74, 0x27, 0x88, 0xff, 0xd4, + 0xa3, 0x28, 0xc2, 0x59, 0x9c, 0xc2, 0x10, 0xee, + 0x54, 0x10, 0x57, 0x6b, 0x10, 0x99, 0x77, 0xfb, + 0x83, 0xfd, 0xe8, 0x4a, 0x74, 0x2b, 0x1b, 0xf0, + 0xb4, 0x1d, 0xa8, 0x1f, 0x6a, 0xa1, 0x3f, 0xcc, + 0xa7, 0x75, 0xa5, 0x3d, 0x53, 0x17, 0x9c, 0x31, + 0x4b, 0x36, 0xe4, 0xb2, 0xf2, 0x64, 0xfa, 0xe5, + 0x27, 0x61, 0x5d, 0xf4, 0xf5, 0x36, 0x6f, 0x92, + 0xde, 0xe6, 0xa0, 0x7b, 0xd2, 0x89, 0x55, 0xae, + 0xb3, 0xfa, 0xe2, 0x91, 0xd2, 0x90, 0xf6, 0x23, + 0x6a, 0x26, 0x75, 0x53, 0xe8, 0xf7, 0x11, 0xeb, + 0xaa, 0x71, 0xce, 0xe4, 0x82, 0x87, 0x71, 0x73, + 0x12, 0xa2, 0x46, 0xd4, 0xb3, 0xba, 0x05, 0xbb, + 0xb7, 0x8f, 0x61, 0x86, 0x4c, 0x87, 0xd4, 0x33, + 0xf0, 0x1e, 0xb5, 0x33, 0xfc, 0x2a, 0x31, 0xaf, + 0x0b, 0xc4, 0x9c, 0x51, 0xe9, 0xaa, 0x73, 0x5d, + 0x78, 0x80, 0xe8, 0xea, 0xed, 0xd1, 0xb7, 0x33, + 0xdb, 0x2a, 0x63, 0x6f, 0xbb, 0x9e, 0xf2, 0x38, + 0xcb, 0xa6, 0xb4, 0x38, 0x56, 0xc5, 0x7e, 0xc1, + 0x2e, 0xcf, 0xed, 0xf2, 0x44, 0xaa, 0x3b, 0x8f, + 0xd8, 0x9e, 0x5c, 0x85, 0xe8, 0x96, 0x38, 0xaa, + 0x03, 0x7a, 0x18, 0xe7, 0x49, 0xd3, 0x67, 0xaf, + 0xfc, 0x21, 0xd7, 0xfb, 0xee, 0x74, 0x90, 0x76, + 0x07, 0x5e, 0xc8, 0x21, 0x87, 0x3c, 0x23, 0xcc, + 0xa8, 0x53, 0x53, 0xce, 0xbc, 0xcb, 0x56, 0xb3, + 0x07, 0x0b, 0xda, 0x86, 0x8a, 0x6b, 0x1d, 0xcc, + 0xf9, 0x57, 0x63, 0xef, 0x9f, 0xbc, 0x4c, 0xc2, + 0xde, 0x30, 0x6b, 0xd4, 0xbe, 0x8b, 0x6c, 0xde, + 0xa8, 0x5e, 0xae, 0x5e, 0x7e, 0x79, 0x7f, 0x49, + 0x2e, 0xf1, 0x4a, 0x42, 0x00, 0xc6, 0x33, 0xbe, + 0x3b, 0xd6, 0xde, 0x6f, 0xba, 0x19, 0x16, 0x36, + 0x64, 0xdf, 0x61, 0x41, 0x21, 0x7d, 0x47, 0x58, + 0xa3, 0x70, 0xbd, 0x52, 0x95, 0xd5, 0x77, 0x6a, + 0x55, 0x3d, 0x98, 0xd5, 0xe6, 0xd4, 0xbb, 0x65, + 0x5f, 0x13, 0xe6, 0xac, 0xeb, 0xe3, 0x82, 0x4e, + 0xb9, 0xc8, 0xb8, 0x90, 0x64, 0xee, 0x77, 0x2c, + 0x56, 0x24, 0x19, 0x11, 0x72, 0x13, 0xe6, 0xa8, + 0x39, 0x26, 0x4e, 0xc1, 0xe7, 0x9b, 0x80, 0x5b, + 0xd6, 0xcc, 0x38, 0x9f, 0xf8, 0xde, 0x67, 0x7a, + 0xb7, 0x3e, 0x82, 0x55, 0xc3, 0x19, 0x37, 0xbb, + 0xbf, 0xbe, 0x29, 0x27, 0xbd, 0x3a, 0x12, 0x8c, + 0x9c, 0x80, 0x5c, 0x90, 0x08, 0x27, 0xa3, 0xaf, + 0xb6, 0xb1, 0xab, 0xe5, 0x55, 0x4e, 0x8c, 0x3c, + 0x53, 0x77, 0xe6, 0x9b, 0xf9, 0x2a, 0x1c, 0x3b, + 0x98, 0x37, 0xe5, 0x73, 0x49, 0x35, 0xfe, 0xdb, + 0x3c, 0x5d, 0x7d, 0xc1, 0x80, 0xf3, 0x52, 0x9d, + 0x69, 0x16, 0xaa, 0xa1, 0xa6, 0xb6, 0x43, 0xd8, + 0xe8, 0xdc, 0x05, 0x75, 0x65, 0xf3, 0x31, 0xdf, + 0xe9, 0x84, 0x79, 0x18, 0xb1, 0x63, 0x8e, 0x58, + 0x1a, 0x70, 0x9f, 0x12, 0xf7, 0x02, 0xe2, 0xa9, + 0xc6, 0x64, 0x72, 0x4e, 0xe4, 0x31, 0xc3, 0x3c, + 0x75, 0x52, 0x82, 0xf6, 0x80, 0x53, 0xa9, 0xa3, + 0x62, 0x73, 0x4a, 0x8b, 0xbc, 0x1b, 0x97, 0xe7, + 0xda, 0x37, 0xb9, 0x97, 0xb3, 0x11, 0x67, 0x90, + 0x4b, 0xea, 0x7f, 0x72, 0xb8, 0x0a, 0x52, 0x16, + 0xa2, 0xd2, 0xe4, 0xa5, 0xb3, 0xbf, 0x7e, 0xeb, + 0x55, 0xd4, 0xe3, 0x8d, 0x68, 0x23, 0xe3, 0x3c, + 0x6a, 0x90, 0x83, 0x6c, 0x1f, 0x42, 0xb2, 0x5f, + 0x7f, 0xb2, 0x17, 0xf1, 0x8d, 0x19, 0x1f, 0x32, + 0xe9, 0xa6, 0x8c, 0x59, 0x77, 0x97, 0xd4, 0x44, + 0xb0, 0xae, 0x7d, 0xca, 0xbd, 0x48, 0x5e, 0x52, + 0xdc, 0x4b, 0x57, 0xec, 0x19, 0x77, 0xbd, 0xda, + 0x2d, 0xfc, 0xea, 0x77, 0x95, 0xc2, 0x78, 0x7f, + 0xca, 0x8f, 0x8a, 0x29, 0x13, 0x81, 0x1c, 0x2c, + 0x7d, 0xb8, 0xa6, 0x2c, 0x37, 0xb2, 0xbf, 0x8c, + 0xd8, 0x43, 0x76, 0xda, 0x8e, 0x6a, 0xc5, 0xe3, + 0x0c, 0x5b, 0x63, 0x6b, 0x26, 0x7d, 0x66, 0x6d, + 0x44, 0x1d, 0x77, 0x13, 0xca, 0xc5, 0xf2, 0x86, + 0x11, 0xb6, 0xc6, 0xa5, 0xb2, 0x18, 0x47, 0xaf, + 0xe4, 0x92, 0xde, 0xa7, 0x8c, 0x57, 0x0e, 0xf3, + 0xfd, 0xb0, 0xd7, 0x67, 0x0a, 0x56, 0x79, 0x16, + 0x31, 0x5e, 0x28, 0xd8, 0xab, 0xc5, 0xea, 0xe5, + 0x55, 0x67, 0xb3, 0xa3, 0x0f, 0x80, 0xdf, 0xa8, + 0x67, 0x77, 0xb6, 0x77, 0x2b, 0x21, 0x77, 0x49, + 0xc8, 0x3a, 0x1d, 0xc7, 0x1f, 0x19, 0xb5, 0x43, + 0x55, 0x18, 0x5b, 0x58, 0x31, 0x9a, 0x85, 0xbd, + 0x5d, 0xe5, 0x5d, 0x71, 0xe2, 0x0e, 0xcb, 0xc2, + 0x97, 0xee, 0x15, 0xe1, 0x3a, 0xae, 0xeb, 0x70, + 0x4c, 0x38, 0x57, 0x94, 0x2b, 0xce, 0x7d, 0xd8, + 0x8f, 0xc6, 0xc8, 0x81, 0x3d, 0x20, 0x0b, 0x8d, + 0x1f, 0x9d, 0x0d, 0x76, 0x87, 0x0e, 0xee, 0x82, + 0x43, 0x31, 0x3d, 0xff, 0xbe, 0x02, 0x56, 0x26, + 0xf1, 0x9d, 0xe0, 0x3c, 0x9a, 0x21, 0x29, 0x92, + 0x5c, 0xe6, 0x9f, 0xd9, 0xab, 0xe7, 0x60, 0x96, + 0xfa, 0x50, 0xe6, 0x1c, 0x41, 0xbc, 0x7f, 0x21, + 0xdf, 0x96, 0x6f, 0xca, 0xdc, 0x3d, 0x27, 0x42, + 0x8e, 0xe2, 0x2f, 0x14, 0x52, 0x14, 0x87, 0x73, + 0xf8, 0xac, 0x83, 0x43, 0x25, 0x3e, 0x7b, 0x13, + 0x7d, 0x92, 0x6a, 0x6e, 0xc2, 0x88, 0x59, 0x78, + 0x6e, 0xfb, 0x51, 0x15, 0xfc, 0x2a, 0xf0, 0x1a, + 0xb1, 0xcf, 0xc5, 0xea, 0x3e, 0xca, 0x15, 0xee, + 0xcf, 0x96, 0x13, 0x07, 0xdf, 0x2c, 0xc1, 0x6f, + 0x4e, 0x40, 0x86, 0xf7, 0x6a, 0x8f, 0x0b, 0xf3, + 0x5c, 0xbd, 0x50, 0xb8, 0xdd, 0x5e, 0x40, 0x24, + 0x3c, 0xe4, 0x27, 0x21, 0x79, 0x1c, 0x32, 0x68, + 0xee, 0xe8, 0x34, 0xc2, 0x95, 0x96, 0x95, 0x5d, + 0x65, 0xc0, 0x0d, 0x1b, 0xd2, 0xab, 0xc5, 0x77, + 0x9a, 0x7c, 0xde, 0x58, 0xa0, 0xdb, 0xf2, 0xe6, + 0xf5, 0xcd, 0x27, 0x84, 0xf9, 0xdc, 0x85, 0x35, + 0x0e, 0x3b, 0x10, 0x59, 0x76, 0x01, 0xb9, 0x1a, + 0x47, 0xda, 0xd1, 0x82, 0x71, 0x81, 0xad, 0x20, + 0x53, 0x04, 0xce, 0xd5, 0x0b, 0x42, 0x01, 0xc6, + 0x5e, 0xdf, 0xd8, 0x3c, 0x2f, 0xff, 0x4f, 0x57, + 0x63, 0x59, 0xfd, 0x7a, 0x75, 0x46, 0x17, 0x9b, + 0x88, 0x27, 0xf4, 0x54, 0x5f, 0x10, 0x67, 0xe3, + 0x69, 0x0d, 0x7e, 0x49, 0x5d, 0x17, 0x9e, 0xb5, + 0x05, 0x85, 0xb0, 0xb3, 0x42, 0xeb, 0x31, 0xba, + 0xc1, 0x71, 0x04, 0x07, 0xae, 0xcf, 0x1e, 0x1b, + 0x4b, 0xd8, 0x80, 0xbf, 0x97, 0xb8, 0x47, 0xeb, + 0x07, 0x8f, 0xf6, 0xc6, 0x57, 0xc1, 0x0f, 0x78, + 0xe5, 0x1d, 0x8f, 0x1b, 0x13, 0xf6, 0x6e, 0xb3, + 0x06, 0xf7, 0xa8, 0x0b, 0xa4, 0x99, 0x5c, 0x1f, + 0x98, 0xd7, 0x9f, 0xe5, 0xe4, 0xd4, 0x91, 0xa7, + 0xb0, 0x53, 0xc9, 0x56, 0x0a, 0xf6, 0x65, 0x35, + 0x4b, 0x73, 0x41, 0x90, 0xf2, 0xb0, 0xb7, 0xef, + 0x42, 0x24, 0x9c, 0x77, 0xbd, 0x1a, 0xe5, 0xab, + 0xd9, 0xf8, 0xac, 0x5c, 0xf0, 0x0a, 0xb2, 0xdc, + 0x31, 0xc4, 0xf3, 0x0c, 0xa1, 0xee, 0xf1, 0x35, + 0x88, 0xf9, 0x97, 0x49, 0xa5, 0x59, 0xac, 0x67, + 0x5e, 0xc7, 0xb4, 0xf4, 0x71, 0x60, 0xe5, 0xd4, + 0xf6, 0xa9, 0xed, 0xef, 0x9d, 0x84, 0x86, 0x48, + 0x9d, 0xd4, 0x2b, 0x9e, 0x2f, 0x0c, 0x08, 0x29, + 0x98, 0x35, 0x53, 0xde, 0xcc, 0x81, 0xab, 0x9c, + 0x1b, 0xb7, 0x12, 0x9b, 0x89, 0xbb, 0xe3, 0x3f, + 0xfd, 0x05, 0x15, 0xe9, 0x65, 0xa9, 0x31, 0xec, + 0x70, 0x86, 0xe0, 0x03, 0xc7, 0xc7, 0x4c, 0x71, + 0x2d, 0x6e, 0xe4, 0xd4, 0x9c, 0x66, 0x21, 0x16, + 0x6f, 0x15, 0xd9, 0x3d, 0x4f, 0x57, 0x4b, 0x86, + 0xec, 0xfb, 0x23, 0xe9, 0x2b, 0xae, 0xda, 0x84, + 0x55, 0x62, 0x33, 0x08, 0x33, 0x3e, 0x6a, 0x86, + 0x0d, 0xd1, 0x10, 0xcb, 0x43, 0xca, 0x50, 0x59, + 0xf6, 0x6a, 0x6e, 0x1f, 0xfa, 0x46, 0x47, 0x51, + 0x61, 0xd3, 0xda, 0xad, 0x0c, 0xfc, 0xe4, 0xb3, + 0xfc, 0xb8, 0x17, 0xb1, 0x3f, 0xa2, 0x70, 0x6c, + 0x6a, 0x54, 0x39, 0xe1, 0x3b, 0xfd, 0x2a, 0x56, + 0xae, 0xd8, 0x6a, 0x95, 0xa2, 0x59, 0x0b, 0x75, + 0xd2, 0xce, 0x76, 0x14, 0xf8, 0x91, 0x29, 0x84, + 0x7c, 0x1e, 0xea, 0x96, 0xea, 0x5c, 0xd3, 0x6b, + 0xb8, 0xc3, 0x69, 0xed, 0xe9, 0x30, 0x34, 0xd3, + 0xb0, 0x03, 0xe2, 0xef, 0x3e, 0x7f, 0x01, 0x5f, + 0xed, 0x94, 0x74, 0x79, 0x3b, 0x24, 0x9f, 0xdb, + 0xfe, 0xa6, 0x35, 0x9e, 0x4b, 0xd8, 0x7f, 0x69, + 0xf5, 0x22, 0xca, 0x7c, 0x3e, 0xec, 0xef, 0x70, + 0x97, 0xba, 0x2e, 0x16, 0x0e, 0x3a, 0xb0, 0xe0, + 0xc1, 0xf3, 0xdf, 0x81, 0xb6, 0xe7, 0x65, 0x4f, + 0x3e, 0xf6, 0x3d, 0x7c, 0xe5, 0x23, 0xc5, 0xab, + 0x8a, 0x87, 0x84, 0x05, 0xf8, 0x54, 0x59, 0xfb, + 0xae, 0x3d, 0xae, 0xfd, 0x8d, 0x49, 0x07, 0xfd, + 0x2c, 0x12, 0x1c, 0x39, 0xa8, 0x2c, 0xe8, 0x8d, + 0x37, 0x27, 0xd4, 0xa7, 0x3e, 0xea, 0x6b, 0x71, + 0x72, 0xd5, 0x2f, 0xd8, 0x33, 0x9d, 0xa7, 0x9e, + 0x2b, 0x04, 0x72, 0x79, 0xf0, 0x9a, 0xc9, 0xa8, + 0x66, 0x4d, 0xd7, 0x2c, 0xed, 0x7e, 0x47, 0xff, + 0x0e, 0x6e, 0x15, 0xd4, 0xb0, 0x22, 0xb4, 0x70, + 0x73, 0x47, 0xe7, 0xcc, 0xa3, 0x29, 0xf6, 0xad, + 0xe3, 0xc7, 0xd9, 0xf4, 0x28, 0x76, 0xee, 0xac, + 0x9d, 0xb2, 0xdc, 0x1e, 0xbb, 0x8b, 0xaf, 0xfb, + 0x8c, 0x9e, 0x0b, 0x51, 0x47, 0xf5, 0xea, 0x5e, + 0x57, 0x3d, 0x09, 0xf6, 0xff, 0x5f, 0xe2, 0xfb, + 0xe9, 0x5f, 0x88, 0x5d, 0x45, 0xbd, 0xa7, 0x9c, + 0x7e, 0x52, 0x6f, 0xb3, 0x3f, 0x32, 0xec, 0x3a, + 0x38, 0x73, 0xdf, 0xef, 0xa2, 0xd3, 0xbf, 0x6e, + 0x70, 0xb7, 0xbe, 0x7e, 0x5e, 0x62, 0x8f, 0x33, + 0x29, 0x71, 0x6a, 0x6a, 0xed, 0xa8, 0x94, 0x78, + 0x7f, 0x0d, 0x95, 0x42, 0xdb, 0xf7, 0x20, 0xea, + 0x48, 0x78, 0x19, 0x1f, 0x65, 0x02, 0x10, 0x5d, + 0x47, 0x6d, 0xac, 0x60, 0x5c, 0x75, 0x50, 0x3b, + 0xfe, 0x5e, 0x67, 0xc4, 0xca, 0x0d, 0x44, 0x2f, + 0xdd, 0x72, 0x32, 0xf6, 0x0c, 0xec, 0x76, 0xc3, + 0x0e, 0x57, 0xe4, 0x8b, 0xc8, 0xd3, 0x6d, 0xa5, + 0xa3, 0x07, 0x95, 0x68, 0x5f, 0x12, 0x6e, 0xbc, + 0xbe, 0x68, 0x3f, 0x78, 0x4d, 0x19, 0xc5, 0xd1, + 0xac, 0xa7, 0xcc, 0x13, 0x10, 0x06, 0x8e, 0xc2, + 0x7a, 0xae, 0xee, 0xe3, 0x60, 0x03, 0xb2, 0x5f, + 0xa5, 0xe0, 0x2a, 0x91, 0x98, 0x43, 0xde, 0x21, + 0xe6, 0xd8, 0x10, 0x9b, 0x74, 0xd0, 0xbb, 0x12, + 0x62, 0x90, 0xf2, 0xf4, 0xc1, 0x67, 0x1e, 0x53, + 0x80, 0x32, 0x63, 0xc8, 0xf6, 0xce, 0x49, 0x93, + 0xd2, 0xa2, 0xd3, 0xeb, 0x26, 0xe3, 0x45, 0x41, + 0xa5, 0xdb, 0xf9, 0x90, 0x1e, 0xcd, 0x8d, 0xb4, + 0x4e, 0x70, 0x88, 0x1a, 0x5f, 0xba, 0x97, 0x1a, + 0x37, 0xe0, 0x1b, 0xe1, 0xb7, 0xba, 0x01, 0xdf, + 0xe8, 0x61, 0xcf, 0x37, 0x82, 0x2c, 0xd4, 0x1a, + 0xb2, 0x9e, 0xd9, 0x09, 0x35, 0x6c, 0x44, 0x61, + 0x14, 0x84, 0x95, 0xec, 0x71, 0xf6, 0xcd, 0xc2, + 0xe6, 0x86, 0x21, 0x79, 0xca, 0xd2, 0xc3, 0xee, + 0xb7, 0x62, 0x02, 0x56, 0x35, 0x74, 0x34, 0x80, + 0x47, 0xed, 0xec, 0xfe, 0x82, 0xca, 0x78, 0xd7, + 0xa3, 0xb2, 0x8b, 0xe8, 0x50, 0x56, 0x78, 0x02, + 0xf7, 0x88, 0xb0, 0x6d, 0xcc, 0xda, 0xab, 0x7b, + 0x7f, 0x79, 0x29, 0x5a, 0x62, 0xa5, 0xd7, 0x6f, + 0xb1, 0x7b, 0x15, 0xbb, 0x78, 0x6f, 0xb1, 0x83, + 0xb7, 0xf3, 0x67, 0x5a, 0xef, 0x2c, 0xe3, 0x8f, + 0xa1, 0x6e, 0x48, 0xfa, 0xd5, 0xb3, 0xa3, 0xf0, + 0xde, 0x77, 0x3b, 0xfe, 0xbf, 0x26, 0x4d, 0x45, + 0xaa, 0xfd, 0x07, 0xe1, 0x8a, 0x76, 0xf3, 0x50, + 0xec, 0xf8, 0x72, 0x3c, 0x38, 0xff, 0x97, 0x11, + 0xb8, 0x32, 0xeb, 0xed, 0x99, 0xd7, 0x19, 0x9b, + 0xfb, 0xe8, 0x46, 0xda, 0x73, 0x77, 0x15, 0xca, + 0xca, 0x55, 0xf8, 0x4b, 0xd4, 0x53, 0xfa, 0x37, + 0xce, 0x29, 0x5e, 0x91, 0xb0, 0x52, 0xd6, 0x93, + 0x32, 0x47, 0x1c, 0xf5, 0xb3, 0x0e, 0xb9, 0x82, + 0x44, 0xb7, 0x8a, 0x18, 0x84, 0x35, 0x11, 0xf7, + 0x3a, 0xae, 0x06, 0x89, 0xae, 0x1c, 0x11, 0x39, + 0x2a, 0xa5, 0x24, 0xaf, 0x72, 0xd2, 0xe8, 0x46, + 0x41, 0xcf, 0x60, 0xf4, 0xf0, 0x95, 0x6e, 0xbc, + 0xdd, 0xd3, 0x6b, 0x83, 0x33, 0x3c, 0x23, 0x3e, + 0x72, 0x68, 0xf5, 0x77, 0xb2, 0xf5, 0x73, 0xee, + 0xf8, 0xde, 0x59, 0xb7, 0xb2, 0xd7, 0x9f, 0xb5, + 0x09, 0x82, 0xd7, 0x21, 0x24, 0x4f, 0x47, 0x1f, + 0x59, 0x8d, 0xbd, 0x27, 0xad, 0x52, 0xfc, 0x59, + 0x83, 0x48, 0x87, 0x3c, 0xb9, 0xec, 0xac, 0xb6, + 0x96, 0x3f, 0xf3, 0x06, 0x23, 0xe4, 0x50, 0xfb, + 0x2c, 0x76, 0xf6, 0xd8, 0xc7, 0x8e, 0xa1, 0x47, + 0xcc, 0xd1, 0xc3, 0x48, 0x79, 0xf4, 0x20, 0xa2, + 0x8d, 0xaa, 0x98, 0x77, 0x07, 0x50, 0xf1, 0x15, + 0x95, 0xbd, 0xf9, 0xcc, 0x14, 0x10, 0x19, 0xfc, + 0xb8, 0xb3, 0xef, 0x93, 0x1e, 0x2c, 0x45, 0x21, + 0x57, 0xf0, 0xd9, 0x27, 0xd6, 0xe7, 0x80, 0x52, + 0x74, 0x17, 0x34, 0x4d, 0xbd, 0xe1, 0x66, 0x95, + 0xc5, 0xe3, 0x1b, 0xf6, 0xe2, 0xf1, 0xa2, 0xb1, + 0xf8, 0xdb, 0xe2, 0xdf, 0xcf, 0xff, 0x6b, 0xab, + 0xe4, 0x9d, 0x67, 0xaa, 0x8f, 0xa0, 0x72, 0xe5, + 0xb8, 0x96, 0xb6, 0x93, 0x07, 0x69, 0x6b, 0xe1, + 0xd2, 0xf2, 0xaf, 0x6c, 0x8f, 0xc7, 0x2a, 0x5c, + 0xe3, 0x1c, 0x0f, 0x88, 0x53, 0xda, 0xab, 0x70, + 0x2e, 0x12, 0xb0, 0xbb, 0xdc, 0xc4, 0x77, 0xd6, + 0x33, 0x58, 0x2d, 0x77, 0x44, 0x1d, 0x3b, 0x0a, + 0x7e, 0xbc, 0xe0, 0xf7, 0x80, 0x08, 0xc9, 0x46, + 0x55, 0x70, 0xe4, 0x1f, 0x45, 0xf5, 0x68, 0x35, + 0xea, 0xf1, 0x84, 0xc8, 0x25, 0x50, 0x1a, 0xb1, + 0xc3, 0xa4, 0x41, 0x76, 0xc9, 0xde, 0xb4, 0xb9, + 0x8e, 0xcd, 0x98, 0x1d, 0x93, 0xe2, 0x66, 0x92, + 0xd4, 0xbf, 0x4f, 0x44, 0x7b, 0x70, 0x0f, 0xb9, + 0x33, 0xb2, 0x74, 0x3b, 0x7a, 0xe6, 0xa4, 0xcc, + 0x4c, 0xf7, 0x9a, 0xa9, 0x9a, 0x73, 0xe6, 0xf5, + 0xf6, 0xd7, 0xa4, 0xd7, 0xf7, 0x7b, 0xdc, 0xb4, + 0x5e, 0x17, 0x57, 0xac, 0xf3, 0xef, 0xf2, 0xea, + 0xbc, 0x3e, 0xaa, 0x4f, 0x54, 0x9f, 0x79, 0x9f, + 0x6a, 0x25, 0xdf, 0xab, 0xa4, 0xcd, 0xab, 0x80, + 0x03, 0xf5, 0x01, 0xfd, 0x94, 0x02, 0xe7, 0x9a, + 0xf2, 0x23, 0x05, 0x3b, 0x61, 0x76, 0xc9, 0x9e, + 0xb7, 0x55, 0x7b, 0xd0, 0xfb, 0xc4, 0x33, 0x10, + 0xcd, 0x96, 0x4c, 0x96, 0xec, 0xae, 0x75, 0x7c, + 0x8e, 0xf0, 0xda, 0xe8, 0x78, 0xb7, 0x76, 0xad, + 0x2b, 0xb4, 0xbe, 0x42, 0x06, 0x8c, 0x4e, 0x13, + 0x0e, 0x5f, 0x23, 0x93, 0x3a, 0x3f, 0x57, 0x98, + 0xbf, 0x0e, 0xc1, 0x77, 0x97, 0xeb, 0x1f, 0xe9, + 0xf7, 0x94, 0xa8, 0x3c, 0xe6, 0x4c, 0xc4, 0x7d, + 0xf7, 0xa0, 0x9e, 0x4a, 0x6f, 0x35, 0xed, 0xf9, + 0x5f, 0xa5, 0x9d, 0xa4, 0xbd, 0xfc, 0x56, 0xe3, + 0xac, 0x0a, 0x25, 0xaf, 0xa9, 0xea, 0x3c, 0x7a, + 0x90, 0xa0, 0x4f, 0xe7, 0xb1, 0x0a, 0x91, 0x41, + 0xf2, 0x1f, 0xf1, 0x9f, 0xd5, 0x5f, 0xf5, 0x3d, + 0xee, 0x03, 0x28, 0x43, 0xa6, 0x19, 0xad, 0xcb, + 0xce, 0x39, 0xcf, 0x4d, 0x46, 0x35, 0x54, 0xeb, + 0x36, 0x61, 0xe3, 0xf9, 0xca, 0xf0, 0x4c, 0x41, + 0xc7, 0xbd, 0x98, 0x5b, 0x13, 0x43, 0x9b, 0x4b, + 0x10, 0xb9, 0x67, 0x5f, 0xb2, 0x97, 0xa1, 0xce, + 0x4e, 0x87, 0xbb, 0x67, 0xb8, 0x1c, 0xb5, 0x66, + 0xe4, 0xfe, 0xd5, 0x9b, 0x47, 0xbb, 0x3b, 0x7a, + 0xc8, 0x19, 0x66, 0x31, 0xb6, 0xca, 0x1e, 0x3a, + 0x31, 0x54, 0xd4, 0x64, 0x91, 0x4e, 0xd7, 0xa3, + 0xb7, 0x4f, 0xcb, 0x63, 0x78, 0xbf, 0xfb, 0xcf, + 0xfb, 0x85, 0x35, 0xc4, 0x9d, 0xd0, 0x59, 0x4c, + 0xd9, 0xdf, 0x93, 0x06, 0x5d, 0xdc, 0xbc, 0xfc, + 0xaa, 0x47, 0x8d, 0x53, 0x38, 0xe5, 0x48, 0x72, + 0x52, 0x41, 0xfe, 0xad, 0xc7, 0x6b, 0x6b, 0x72, + 0xb7, 0xaf, 0xc1, 0x23, 0xc9, 0x18, 0xb6, 0x60, + 0x7f, 0x63, 0x93, 0xef, 0x2b, 0x25, 0x1f, 0x93, + 0xcf, 0x57, 0x95, 0x0e, 0x13, 0xef, 0x30, 0x6e, + 0x20, 0xbb, 0xa2, 0x53, 0x2d, 0x68, 0xf6, 0xee, + 0x56, 0x38, 0x0a, 0xd2, 0xc8, 0xe5, 0x23, 0x8c, + 0x6c, 0xe4, 0xd5, 0x15, 0xb1, 0x57, 0xe7, 0x33, + 0x29, 0xa7, 0x2c, 0xd4, 0xea, 0xd3, 0x64, 0xd6, + 0xd5, 0xf9, 0x0c, 0x2f, 0xb7, 0x23, 0x5a, 0x94, + 0x05, 0x0f, 0x07, 0x72, 0x67, 0xd9, 0x33, 0x54, + 0x65, 0xdb, 0x8f, 0xa9, 0x53, 0x8a, 0x37, 0xda, + 0xa9, 0xb3, 0x88, 0xee, 0x47, 0x1f, 0xb7, 0xfe, + 0x83, 0x57, 0x4d, 0xb6, 0x60, 0xbc, 0x8b, 0x51, + 0x31, 0x42, 0x7a, 0x7d, 0x03, 0x47, 0xa2, 0x32, + 0xa4, 0x7f, 0x54, 0x0f, 0xe8, 0xa7, 0x77, 0x56, + 0xf6, 0x06, 0x20, 0x16, 0x12, 0xca, 0x88, 0x69, + 0x5d, 0xe9, 0xd1, 0xdd, 0xea, 0xaa, 0x58, 0x88, + 0xfa, 0x10, 0x75, 0x2e, 0x79, 0x46, 0xcf, 0x39, + 0x71, 0x88, 0x02, 0x14, 0x74, 0xb9, 0x49, 0x19, + 0xbd, 0x95, 0x31, 0x4a, 0x8c, 0x89, 0xbe, 0x6b, + 0x2d, 0xba, 0xf3, 0x16, 0xea, 0xdc, 0xa3, 0x36, + 0x5f, 0x57, 0xeb, 0xea, 0x5e, 0x9e, 0x34, 0x34, + 0xc8, 0xcd, 0x0d, 0xf6, 0xa0, 0x75, 0xea, 0x69, + 0xe2, 0xfd, 0x8f, 0x0e, 0x76, 0x71, 0x3c, 0xc7, + 0x4c, 0x58, 0xff, 0x58, 0xfd, 0xa9, 0xf3, 0x40, + 0xfa, 0x83, 0xb3, 0x2e, 0x3d, 0x75, 0x6e, 0x4a, + 0x37, 0x93, 0x3d, 0x1e, 0x19, 0xa4, 0x3d, 0xdb, + 0xd5, 0x69, 0x45, 0xdd, 0x93, 0xae, 0x66, 0x17, + 0x75, 0x10, 0xea, 0xe3, 0x90, 0x9f, 0x10, 0x46, + 0xae, 0x53, 0x6f, 0xe5, 0x4c, 0x2e, 0xf2, 0xb3, + 0x26, 0x2c, 0x02, 0xde, 0xce, 0x2a, 0x55, 0xef, + 0x37, 0x48, 0xf8, 0xca, 0xfe, 0xa8, 0xdb, 0x15, + 0x87, 0xf6, 0x92, 0xf5, 0xa4, 0x99, 0xb2, 0xb2, + 0x47, 0xd9, 0x3a, 0xab, 0x4b, 0x7b, 0x12, 0xd5, + 0xaf, 0x44, 0xf2, 0xa5, 0x8d, 0x89, 0x93, 0xa5, + 0x51, 0x7d, 0x94, 0xd5, 0x8c, 0x68, 0x79, 0x02, + 0xf5, 0x10, 0x4a, 0x99, 0xd2, 0x27, 0x79, 0xae, + 0x0b, 0x41, 0xec, 0x7e, 0x65, 0xd2, 0x4d, 0x09, + 0x93, 0xce, 0x22, 0xec, 0xa2, 0xeb, 0xd4, 0xf5, + 0x0e, 0xf1, 0xb9, 0xa0, 0xa8, 0x10, 0x37, 0x67, + 0xc5, 0x8b, 0x75, 0xad, 0xae, 0xbe, 0x52, 0x8f, + 0xe0, 0x5c, 0xd4, 0x57, 0xf6, 0x94, 0x3d, 0x65, + 0xc7, 0x73, 0x45, 0x84, 0xfc, 0x92, 0x5c, 0x11, + 0x95, 0x42, 0x25, 0x88, 0x63, 0xbd, 0x95, 0xb5, + 0x6f, 0xab, 0xc4, 0xd4, 0x2b, 0x15, 0x55, 0xcd, + 0x2e, 0x58, 0x1a, 0x55, 0xc5, 0x0a, 0x76, 0x10, + 0x72, 0x51, 0x78, 0x25, 0x65, 0x4d, 0x09, 0x2b, + 0x5d, 0xa5, 0xb8, 0x31, 0x37, 0x77, 0x84, 0xd8, + 0x1a, 0xd4, 0x80, 0x44, 0x4e, 0x88, 0x87, 0x57, + 0xa1, 0xf1, 0x8c, 0x4e, 0xc7, 0x9e, 0xff, 0xb3, + 0x32, 0xee, 0x3c, 0x46, 0xa4, 0x00, 0xef, 0x4d, + 0x78, 0xe3, 0x0a, 0x2b, 0x04, 0xaa, 0x15, 0x37, + 0xc2, 0x46, 0x58, 0x1e, 0x82, 0xd9, 0xcd, 0x7d, + 0x5a, 0x05, 0x88, 0x08, 0xb0, 0x95, 0x58, 0x73, + 0x1f, 0x4a, 0x0f, 0xd9, 0x43, 0x0d, 0x6e, 0x12, + 0xbf, 0xdd, 0xc2, 0x33, 0x69, 0x49, 0xa6, 0xec, + 0x8e, 0x35, 0x61, 0x0d, 0x55, 0xe5, 0x78, 0x24, + 0xec, 0xf3, 0xeb, 0x78, 0x86, 0xeb, 0x77, 0xd0, + 0x79, 0xad, 0x0c, 0x75, 0x91, 0x7b, 0x71, 0x8c, + 0x1c, 0xd9, 0xac, 0x22, 0xe7, 0xc5, 0x4d, 0xca, + 0xa8, 0xbc, 0x13, 0x92, 0xa5, 0x0e, 0xe2, 0x97, + 0x2b, 0x54, 0xd5, 0x8e, 0x05, 0xd1, 0xaf, 0x68, + 0xf7, 0xae, 0x93, 0xdc, 0xad, 0x5e, 0x40, 0xb7, + 0x7a, 0x56, 0xa8, 0xa0, 0x53, 0x7d, 0x40, 0xee, + 0x3e, 0xea, 0x2b, 0xf1, 0x26, 0x74, 0xd2, 0xe1, + 0xd5, 0x86, 0xb4, 0xe2, 0xc1, 0x50, 0xbc, 0xf6, + 0xf3, 0xf8, 0xdd, 0xb2, 0x87, 0xfa, 0xe3, 0x1e, + 0xdb, 0xf1, 0x5c, 0xd4, 0xc8, 0x98, 0x3e, 0x12, + 0xd1, 0xe3, 0xe1, 0x7a, 0xbb, 0x33, 0x7a, 0x70, + 0x72, 0x04, 0xd6, 0xff, 0xfa, 0x4f, 0x8e, 0xed, + 0x21, 0x5c, 0xae, 0x81, 0xdc, 0x96, 0x9b, 0x06, + 0xc6, 0x62, 0x83, 0xae, 0x08, 0x31, 0x54, 0x94, + 0xd6, 0xff, 0xb5, 0x0a, 0x31, 0x50, 0x88, 0x07, + 0xa4, 0x1a, 0x79, 0xd2, 0xa0, 0xcb, 0x7b, 0x68, + 0x72, 0x3f, 0x77, 0x86, 0x7d, 0x81, 0xb2, 0x01, + 0xb5, 0x0a, 0x51, 0x4c, 0x75, 0xfe, 0xc9, 0xea, + 0xd6, 0xac, 0x31, 0xbb, 0x3d, 0xbb, 0x37, 0x57, + 0xbf, 0xbb, 0xd3, 0xeb, 0x27, 0x42, 0xdf, 0xbb, + 0x25, 0x88, 0xbd, 0x1c, 0xfc, 0xa0, 0x25, 0x9a, + 0xc9, 0x9d, 0xff, 0x6a, 0x4a, 0x4a, 0x28, 0x1e, + 0x0a, 0x93, 0xb3, 0xbb, 0xd5, 0xd3, 0xa3, 0x87, + 0x47, 0x27, 0xdd, 0x6d, 0x5d, 0xba, 0x34, 0xf2, + 0xbb, 0xfa, 0x57, 0x33, 0xd4, 0xe7, 0x0a, 0x42, + 0x8c, 0xff, 0xcc, 0x84, 0x99, 0x9f, 0x8b, 0x1e, + 0xa6, 0xa5, 0xa4, 0x1f, 0x51, 0xe8, 0x33, 0xc4, + 0x5d, 0x10, 0xd8, 0x80, 0xf3, 0x1d, 0xea, 0x61, + 0x50, 0x87, 0x3f, 0xd9, 0xf2, 0x99, 0x6b, 0x79, + 0x4b, 0x6d, 0x2c, 0xba, 0x9a, 0x9e, 0x3b, 0x5e, + 0xdc, 0x56, 0x0f, 0xe6, 0x73, 0x6a, 0x65, 0xc5, + 0x9e, 0x51, 0x91, 0xa3, 0x43, 0xef, 0xfb, 0x4b, + 0xba, 0xb9, 0xad, 0x4a, 0xa9, 0xf4, 0x7b, 0x1e, + 0x07, 0xf3, 0x08, 0x43, 0x35, 0x49, 0x33, 0xa4, + 0xd7, 0xa1, 0x8c, 0xb2, 0x7e, 0xf1, 0xed, 0xf5, + 0xb7, 0xcb, 0xd5, 0x05, 0x42, 0xfb, 0x43, 0xfc, + 0x86, 0x7e, 0x55, 0x75, 0xc9, 0x4d, 0x73, 0x35, + 0x63, 0x9c, 0x7f, 0x68, 0x03, 0x49, 0xb5, 0x4d, + 0xae, 0x80, 0x04, 0xb1, 0x18, 0x9d, 0x89, 0x93, + 0x5c, 0x9e, 0xc0, 0xef, 0xae, 0x49, 0xbe, 0x03, + 0x2c, 0xe7, 0x9d, 0x2c, 0x28, 0x9f, 0xc8, 0x45, + 0x88, 0x41, 0x10, 0x5f, 0x55, 0x74, 0x06, 0x50, + 0x43, 0x25, 0xf7, 0x58, 0x38, 0xd1, 0x7b, 0x12, + 0xce, 0xbb, 0x57, 0xe5, 0x69, 0xa3, 0xf8, 0x08, + 0xd5, 0x1e, 0x03, 0xa9, 0x8e, 0x6f, 0x29, 0xd5, + 0x82, 0x04, 0xca, 0xae, 0x2f, 0x38, 0x9a, 0xb1, + 0x62, 0x9e, 0x97, 0x6e, 0xb9, 0x1e, 0x6a, 0xa8, + 0x91, 0x70, 0xd3, 0x4e, 0x42, 0x4e, 0xb8, 0xb1, + 0x23, 0xc4, 0x3a, 0x65, 0x84, 0x19, 0x67, 0x9d, + 0x45, 0x0f, 0x38, 0x3e, 0x76, 0xc4, 0x59, 0x53, + 0xc8, 0x0f, 0x48, 0xe0, 0x3b, 0xa1, 0x6a, 0xcd, + 0xbf, 0x2f, 0x91, 0x06, 0x1d, 0xc4, 0x22, 0xd5, + 0x74, 0xf3, 0x76, 0x75, 0x16, 0x6b, 0x10, 0xfa, + 0x48, 0x75, 0x5c, 0x4f, 0x57, 0x17, 0xf4, 0xe5, + 0xea, 0x7a, 0xe9, 0x8e, 0xcf, 0x68, 0x76, 0x7a, + 0x71, 0xf3, 0x7d, 0x3a, 0x27, 0xa8, 0x4d, 0xaa, + 0x33, 0x73, 0xbd, 0xf5, 0x99, 0xc1, 0x8e, 0xd6, + 0x95, 0xcf, 0x2a, 0x55, 0x7b, 0x40, 0x0d, 0x63, + 0x4d, 0xbc, 0xd9, 0xa3, 0x74, 0xf1, 0x04, 0x15, + 0x45, 0x11, 0x81, 0xba, 0x8b, 0xb3, 0x47, 0x0a, + 0x12, 0x53, 0x04, 0x7b, 0x40, 0xa1, 0xe6, 0x2e, + 0xdf, 0x9f, 0x76, 0x46, 0x9a, 0x49, 0x7d, 0xbb, + 0xc7, 0xed, 0xcb, 0x67, 0xe9, 0xd2, 0xda, 0xa8, + 0x9f, 0xd3, 0xc9, 0x83, 0x8a, 0xfc, 0x1b, 0x3c, + 0x7f, 0x2b, 0x17, 0xf7, 0x50, 0xee, 0xd6, 0x1b, + 0x93, 0xce, 0x49, 0xcf, 0x7b, 0x78, 0x31, 0x5c, + 0x6b, 0x68, 0x0d, 0xa2, 0x1e, 0xc8, 0x53, 0x88, + 0x13, 0x11, 0x45, 0x47, 0x72, 0x99, 0x49, 0x86, + 0x88, 0xe5, 0x76, 0xac, 0x3f, 0x7f, 0xea, 0x28, + 0xe6, 0xbc, 0x13, 0x84, 0xf3, 0x34, 0xaa, 0x4f, + 0xb6, 0x33, 0x3a, 0x64, 0x9a, 0x3a, 0x9d, 0x49, + 0xf8, 0x94, 0xf8, 0xba, 0x91, 0xd6, 0x28, 0xdb, + 0x69, 0x47, 0x94, 0xd1, 0x8a, 0x6c, 0x4f, 0xaa, + 0xff, 0xe9, 0x7d, 0x23, 0xac, 0x24, 0x04, 0x9a, + 0xa8, 0x23, 0x97, 0xd7, 0x85, 0x9d, 0xd5, 0xa6, + 0x37, 0xaf, 0x4a, 0x79, 0x52, 0x6e, 0xc1, 0xd5, + 0x3b, 0xb1, 0x19, 0x83, 0xeb, 0xf4, 0x88, 0xf7, + 0x53, 0x0d, 0xc2, 0x8d, 0x38, 0x1c, 0x51, 0x06, + 0xef, 0xdb, 0x4e, 0x18, 0x9f, 0xb6, 0xf1, 0xba, + 0x9c, 0x92, 0xd2, 0xad, 0x04, 0x1b, 0x6b, 0xcd, + 0xb2, 0xe9, 0xe3, 0xcf, 0x34, 0x5a, 0xcd, 0x20, + 0xfa, 0x08, 0xb8, 0xbb, 0x87, 0xa4, 0x50, 0xa7, + 0xe7, 0xeb, 0xc8, 0xf2, 0x9b, 0x33, 0x7d, 0x26, + 0x9f, 0x9f, 0x2f, 0xf4, 0x74, 0x9e, 0x7a, 0x54, + 0xb9, 0xfc, 0xee, 0xeb, 0xd8, 0x61, 0xc2, 0xe8, + 0xdc, 0x7e, 0x9b, 0x0e, 0x4f, 0x87, 0x6f, 0x76, + 0x38, 0x35, 0x05, 0x3b, 0xab, 0xf0, 0x0a, 0x97, + 0x66, 0x86, 0x9d, 0x21, 0x73, 0xc4, 0xac, 0x50, + 0x3f, 0x54, 0xe8, 0x71, 0x32, 0xe5, 0xa3, 0xb8, + 0x5f, 0xa5, 0x4a, 0x70, 0x76, 0xcc, 0x52, 0xcf, + 0x6d, 0xc7, 0x14, 0xda, 0xbe, 0xc2, 0xb3, 0x44, + 0xde, 0x0d, 0x78, 0x55, 0x90, 0x4f, 0xe7, 0xc7, + 0x5d, 0xdc, 0x55, 0xce, 0x9b, 0xbf, 0xb0, 0xee, + 0x63, 0xed, 0xed, 0x7b, 0x57, 0xf6, 0xd4, 0x42, + 0x7c, 0xf7, 0x67, 0x0f, 0x3d, 0xeb, 0xf0, 0x7f, + 0x8f, 0x3a, 0x29, 0xb0, 0xe2, 0x29, 0x19, 0x0f, + 0x7f, 0x85, 0x51, 0xcc, 0x69, 0x7d, 0xe2, 0xe0, + 0xaf, 0x6e, 0xb8, 0x3e, 0x76, 0x24, 0xd6, 0x07, + 0x9d, 0x5e, 0x6c, 0x6d, 0x40, 0x82, 0x75, 0xcc, + 0xc2, 0x35, 0x8c, 0x2a, 0xcc, 0xd8, 0x01, 0xa2, + 0x1e, 0xd0, 0xac, 0xfa, 0x59, 0x8a, 0x47, 0xb9, + 0x5c, 0xd5, 0x25, 0x63, 0x4e, 0x55, 0x79, 0x34, + 0xd5, 0xc5, 0x4f, 0x72, 0xbc, 0x28, 0xc4, 0xc6, + 0xb9, 0x42, 0x4e, 0x6d, 0x15, 0xc5, 0x2e, 0xcb, + 0x4d, 0xf0, 0x74, 0x7b, 0x30, 0x06, 0xf1, 0x9d, + 0xdf, 0x79, 0xd6, 0xe0, 0x47, 0xe6, 0x30, 0xea, + 0x5e, 0x73, 0xdd, 0xe9, 0xd8, 0x6b, 0xec, 0xef, + 0x5f, 0x7d, 0x7d, 0xdf, 0xbe, 0x6f, 0xc7, 0x5b, + 0xf1, 0xd6, 0xf8, 0x2b, 0xff, 0xbc, 0x21, 0xc7, + 0xc4, 0x77, 0xc9, 0xe9, 0xf5, 0xc7, 0x91, 0x84, + 0x3b, 0xce, 0x45, 0xc2, 0xfb, 0x6e, 0x30, 0x3f, + 0xc3, 0xc5, 0x91, 0x5f, 0xf4, 0x3d, 0x31, 0x1d, + 0xd4, 0x07, 0xae, 0xa9, 0x8b, 0xaf, 0x0b, 0xff, + 0xca, 0xc2, 0x37, 0x10, 0xa5, 0x1b, 0xce, 0x05, + 0x49, 0xe3, 0x6e, 0x5f, 0xd4, 0xa1, 0xab, 0x62, + 0xae, 0xf2, 0xfa, 0x6a, 0xf2, 0xaa, 0x03, 0xb9, + 0x8a, 0xfc, 0xa5, 0x4b, 0x3c, 0x1c, 0x6f, 0xe4, + 0x20, 0x9b, 0x03, 0xf2, 0x15, 0x25, 0xe0, 0xac, + 0xc2, 0xee, 0xb9, 0x8a, 0x8c, 0x1d, 0xf2, 0x74, + 0xf4, 0x91, 0x21, 0x5d, 0x4d, 0x09, 0xd2, 0x55, + 0xa3, 0xae, 0x33, 0x6a, 0x4a, 0xf4, 0xd7, 0x0a, + 0x4e, 0xaa, 0x18, 0x71, 0x2f, 0xeb, 0x75, 0xd9, + 0xab, 0x9a, 0xea, 0x78, 0xa0, 0x0f, 0x00, 0xe7, + 0x86, 0x7b, 0x2c, 0x03, 0xf9, 0x05, 0xcf, 0x99, + 0xe4, 0x04, 0x64, 0x38, 0x98, 0x16, 0x8f, 0xf8, + 0x6a, 0x8d, 0x54, 0x27, 0xe4, 0x19, 0x15, 0x3c, + 0x26, 0x3f, 0xf5, 0x1c, 0xe8, 0xf8, 0x0c, 0x8d, + 0xb9, 0xd1, 0xfd, 0x9d, 0x46, 0x44, 0x8d, 0x3e, + 0xe2, 0xae, 0x01, 0xbe, 0xdf, 0x7c, 0x4e, 0xef, + 0xf7, 0x16, 0xea, 0x3d, 0x87, 0xfc, 0x1a, 0xa1, + 0x7a, 0x70, 0x4d, 0x8f, 0xbb, 0x85, 0xfd, 0x45, + 0xad, 0x90, 0x43, 0x1d, 0x39, 0xa9, 0x5c, 0x33, + 0xe2, 0xd6, 0x0c, 0x55, 0xc6, 0x20, 0xea, 0x43, + 0x55, 0x90, 0x43, 0xb5, 0x31, 0x9d, 0x3c, 0x5d, + 0xa2, 0x7e, 0x28, 0xfe, 0xae, 0xac, 0x91, 0xa7, + 0x5e, 0x44, 0xe6, 0x4e, 0x43, 0xc8, 0xd1, 0x0e, + 0xa0, 0x6e, 0x75, 0x23, 0xbe, 0x3f, 0x9b, 0x9a, + 0x13, 0x3e, 0xf5, 0x38, 0x53, 0x7e, 0x84, 0x80, + 0x4c, 0x6b, 0x19, 0xa2, 0xea, 0x84, 0xb1, 0xa0, + 0x67, 0x94, 0x12, 0xb9, 0x4f, 0xd2, 0x9a, 0x03, + 0xa3, 0x85, 0x6a, 0x0f, 0x0e, 0x56, 0x23, 0x24, + 0x2b, 0x6e, 0xa1, 0x33, 0x2b, 0x7d, 0x64, 0x9d, + 0x8f, 0x96, 0x1d, 0x61, 0xd8, 0x65, 0xa8, 0x83, + 0x63, 0x5f, 0xb4, 0xa7, 0xec, 0x67, 0x1e, 0xee, + 0xcb, 0x47, 0x2a, 0x46, 0x3f, 0xa8, 0xcc, 0xf8, + 0xec, 0x86, 0xa8, 0xfb, 0x64, 0x6f, 0x5c, 0x38, + 0xe3, 0x46, 0x09, 0xed, 0x4f, 0xfa, 0x2a, 0xe5, + 0xf5, 0xdc, 0x90, 0x57, 0xad, 0x55, 0xf5, 0x59, + 0x77, 0xb5, 0x34, 0x5b, 0x52, 0x91, 0x03, 0x54, + 0x9e, 0x2b, 0xe7, 0x1b, 0x4f, 0xf6, 0x4f, 0xa9, + 0xa7, 0x53, 0x7e, 0xf5, 0x72, 0x56, 0x5e, 0xa5, + 0xba, 0xe5, 0xaa, 0xc7, 0xc7, 0x54, 0x05, 0xee, + 0x23, 0x86, 0xa3, 0x1d, 0x2b, 0xb5, 0xe7, 0x84, + 0x19, 0xf7, 0x26, 0x31, 0x1d, 0x7a, 0x75, 0x89, + 0xe1, 0xd1, 0x70, 0xa0, 0xfd, 0x42, 0x0e, 0x1a, + 0xd7, 0x8d, 0xc1, 0x47, 0xd7, 0x8c, 0x53, 0xc6, + 0x0d, 0x23, 0xeb, 0x2e, 0x0a, 0xf9, 0xa6, 0x46, + 0x11, 0xa3, 0xf4, 0x3a, 0xa1, 0xc5, 0xb4, 0x99, + 0xe3, 0x3f, 0xdd, 0x0d, 0x89, 0x10, 0x39, 0xb2, + 0x45, 0xed, 0x5c, 0x7b, 0x52, 0x3e, 0xa3, 0x3d, + 0x7d, 0xe3, 0x61, 0x20, 0x4d, 0xdd, 0xc4, 0x7b, + 0x46, 0x2b, 0x03, 0xfe, 0x75, 0xd3, 0xf4, 0x54, + 0x71, 0x75, 0xde, 0xd5, 0xda, 0x25, 0xf7, 0xb7, + 0x98, 0x83, 0x63, 0xe3, 0x31, 0x65, 0xdd, 0x34, + 0x3a, 0xcc, 0x1f, 0x58, 0x48, 0x1e, 0x76, 0x7e, + 0x60, 0xb7, 0x9c, 0x35, 0xf6, 0xa3, 0x43, 0xdd, + 0x3d, 0x8a, 0x12, 0xcb, 0xa4, 0x35, 0x24, 0xca, + 0xdf, 0x94, 0x1f, 0xea, 0x5f, 0xe8, 0xa5, 0x9d, + 0x5a, 0xeb, 0x2e, 0xfb, 0x8c, 0x3d, 0x64, 0xdf, + 0xc0, 0xeb, 0xd7, 0x24, 0x72, 0x72, 0x4c, 0x0d, + 0xbe, 0xfb, 0x81, 0xad, 0xe7, 0x60, 0x2c, 0x52, + 0x14, 0x8e, 0x95, 0xfc, 0x1f, 0x1a, 0x61, 0x3d, + 0x74, 0x30, 0x1a, 0xf6, 0x10, 0xdd, 0xe8, 0x4e, + 0x08, 0xef, 0x7b, 0x5d, 0xba, 0xea, 0x5c, 0x96, + 0xef, 0xa1, 0xfb, 0x21, 0xb1, 0x60, 0x04, 0x64, + 0x89, 0xb6, 0x15, 0x4b, 0xb1, 0xf2, 0x2f, 0xa7, + 0xe3, 0x99, 0xf0, 0x2a, 0x3a, 0x0c, 0x5a, 0x79, + 0xa3, 0xac, 0x28, 0x87, 0x33, 0xe1, 0xdf, 0xd3, + 0xad, 0x45, 0x9c, 0xae, 0xcf, 0xd9, 0x25, 0x44, + 0x8a, 0xbd, 0x7b, 0x10, 0x50, 0xf2, 0x86, 0x60, + 0xe6, 0x55, 0x61, 0x3f, 0x6f, 0xcf, 0xe6, 0x30, + 0xa2, 0x1a, 0x10, 0xbb, 0xaa, 0xc5, 0x89, 0xf6, + 0x65, 0xf9, 0x21, 0xe4, 0xf9, 0x09, 0x3a, 0xe2, + 0x9e, 0xdf, 0x22, 0x5f, 0xa6, 0x8b, 0x0e, 0xa3, + 0x6a, 0x37, 0xe2, 0x57, 0xd1, 0x65, 0x3a, 0x0a, + 0x3b, 0xb4, 0x37, 0x72, 0xf0, 0xc6, 0x76, 0xab, + 0x31, 0xd8, 0x73, 0x70, 0x14, 0x8d, 0x56, 0x26, + 0xf4, 0xaf, 0xc5, 0xa0, 0x48, 0x51, 0xb0, 0xb2, + 0xd3, 0x10, 0x1b, 0xa2, 0x9d, 0x7f, 0xad, 0x1c, + 0xcf, 0x40, 0x9e, 0x2a, 0xda, 0xe2, 0x6b, 0xf8, + 0xdb, 0xf7, 0x3d, 0x54, 0x76, 0x65, 0x55, 0x26, + 0x87, 0x39, 0x7d, 0x96, 0xe1, 0x08, 0x99, 0x2b, + 0x15, 0xf4, 0x27, 0x28, 0x79, 0xb5, 0x22, 0x78, + 0xd8, 0x32, 0x15, 0xab, 0xe5, 0xe6, 0x90, 0x13, + 0x15, 0x96, 0xfb, 0xea, 0x84, 0x32, 0xe4, 0x5d, + 0x43, 0xfa, 0x1a, 0xf6, 0xbd, 0x5a, 0x67, 0x61, + 0xbd, 0x1b, 0x62, 0x43, 0x15, 0xcc, 0xbc, 0x32, + 0xe2, 0xb4, 0xeb, 0x63, 0xd4, 0x37, 0x84, 0xac, + 0xb0, 0xe8, 0x9c, 0xd1, 0xc6, 0xb5, 0xe5, 0xe3, + 0x75, 0x0d, 0xb2, 0x38, 0x5b, 0x7d, 0xcd, 0x28, + 0xea, 0x0b, 0x23, 0x5e, 0xc5, 0x1d, 0x46, 0x2e, + 0x9e, 0x83, 0x9c, 0x1c, 0xc8, 0x26, 0x70, 0x8d, + 0xe1, 0x4c, 0x10, 0x8f, 0x0b, 0x4f, 0xae, 0x21, + 0xf5, 0xf9, 0x23, 0x55, 0xe1, 0x87, 0xc2, 0xb1, + 0xe4, 0xf5, 0x1a, 0xec, 0xda, 0x71, 0x77, 0x46, + 0xae, 0x59, 0x43, 0x96, 0x64, 0x14, 0x50, 0xc5, + 0xb7, 0x7c, 0xd6, 0x7a, 0x4a, 0x2e, 0xbd, 0x84, + 0x89, 0x5a, 0x79, 0x71, 0xfc, 0x85, 0xfd, 0x85, + 0xbd, 0x69, 0xd7, 0x8e, 0x0d, 0x3b, 0x69, 0x27, + 0xb6, 0xd3, 0xd5, 0xaf, 0xb9, 0xe5, 0xb8, 0x30, + 0xef, 0xa0, 0x1f, 0xf7, 0x29, 0x59, 0x6c, 0x7c, + 0xef, 0xc4, 0xe1, 0x7c, 0xc7, 0xf5, 0x49, 0xa7, + 0xb3, 0xa7, 0x28, 0xc5, 0x06, 0x64, 0x22, 0xaf, + 0xb5, 0xe3, 0xa2, 0x0d, 0x3f, 0xd1, 0xbd, 0xfd, + 0x75, 0xb6, 0x91, 0xdd, 0x5b, 0xdb, 0x0b, 0xef, + 0x74, 0xd5, 0xfc, 0x76, 0x51, 0x97, 0xe0, 0xb7, + 0xa7, 0x4b, 0xfd, 0x75, 0x51, 0x1f, 0xb9, 0x91, + 0x6a, 0x9e, 0x52, 0x06, 0xda, 0xbb, 0x52, 0x4f, + 0xd7, 0xbc, 0x83, 0x80, 0x25, 0x8d, 0x7e, 0x6b, + 0x56, 0x2e, 0xc9, 0x62, 0xf7, 0x96, 0xeb, 0x55, + 0xef, 0x5f, 0x23, 0x34, 0x63, 0xc4, 0x8a, 0x18, + 0x53, 0xc6, 0xb3, 0xb8, 0x08, 0x31, 0xa3, 0xdf, + 0xb5, 0x84, 0xb1, 0xe4, 0xf5, 0x34, 0x7a, 0xf9, + 0x46, 0x5e, 0xf7, 0xb0, 0x1e, 0x31, 0xcf, 0xb6, + 0x02, 0xc6, 0xff, 0x2d, 0xcb, 0x87, 0x31, 0x96, + 0x2a, 0x75, 0x51, 0xac, 0x98, 0x3b, 0xae, 0xa0, + 0xaa, 0xaf, 0xb3, 0xdb, 0x08, 0x29, 0xe7, 0xdc, + 0x7e, 0x9d, 0x22, 0x0f, 0x45, 0xf1, 0x52, 0xaa, + 0xa0, 0x87, 0x06, 0xea, 0xd1, 0xf4, 0xa2, 0xb3, + 0xfc, 0xb8, 0xdd, 0x57, 0xfc, 0xc3, 0x47, 0xba, + 0xfd, 0x14, 0x8e, 0xb4, 0x8b, 0xc8, 0x55, 0xf4, + 0xf4, 0x62, 0x78, 0xfc, 0x70, 0xfc, 0x47, 0x7b, + 0xf4, 0x38, 0x63, 0x53, 0x0c, 0xdc, 0xd3, 0x59, + 0x18, 0x21, 0x27, 0x0b, 0x54, 0x9c, 0x28, 0xf5, + 0xe8, 0xaa, 0x05, 0x7a, 0xb4, 0xa8, 0xfa, 0xd9, + 0x0d, 0xfc, 0x4c, 0x8d, 0xb9, 0xf1, 0xd2, 0xa5, + 0xd2, 0x66, 0x29, 0x5e, 0xea, 0xd5, 0xff, 0xee, + 0xef, 0x02, 0xf4, 0xcf, 0x37, 0xff, 0x95, 0xbb, + 0x0a, 0xdd, 0x01, 0x21, 0xf0, 0x41, 0xad, 0x1e, + 0xa3, 0x3e, 0x5e, 0x83, 0xe7, 0xf5, 0xf6, 0x2e, + 0x9a, 0x85, 0x23, 0xd8, 0xe1, 0xb0, 0xe0, 0xdd, + 0x8f, 0xe2, 0xc6, 0x7c, 0xab, 0x54, 0x42, 0x5c, + 0x98, 0x87, 0x8e, 0xae, 0xfb, 0x1a, 0xce, 0x49, + 0x52, 0x71, 0xce, 0xf6, 0x39, 0x95, 0xc8, 0xf4, + 0xe8, 0xa7, 0x9c, 0x2f, 0xe8, 0x69, 0xfe, 0xe0, + 0xef, 0x9f, 0x77, 0x3c, 0x8b, 0x4f, 0x7c, 0x2e, + 0x05, 0xf6, 0x46, 0x67, 0x57, 0x14, 0xc4, 0xfe, + 0xda, 0x17, 0x69, 0xe8, 0x4a, 0xe1, 0x83, 0xef, + 0x9a, 0x7e, 0x06, 0x24, 0xd4, 0xbb, 0xea, 0xc1, + 0xc8, 0x52, 0xf4, 0x22, 0x46, 0xbf, 0x2b, 0x2d, + 0xc1, 0xdc, 0x84, 0xc4, 0xa2, 0xe8, 0x9e, 0x97, + 0x7a, 0x95, 0xf1, 0x8a, 0xd4, 0x03, 0xf2, 0xf4, + 0x73, 0x90, 0x11, 0x89, 0xbc, 0x2b, 0x16, 0x72, + 0xb3, 0x2c, 0x65, 0x8f, 0x6b, 0x67, 0xa5, 0x0a, + 0xf5, 0xbb, 0x31, 0x2b, 0x2f, 0xba, 0x98, 0x99, + 0x53, 0x5d, 0x94, 0xfc, 0x32, 0xb3, 0xca, 0x2d, + 0xe2, 0xc3, 0x52, 0xf7, 0x01, 0xde, 0x17, 0xce, + 0xff, 0xa3, 0x6b, 0x88, 0xae, 0x75, 0x8d, 0xba, + 0xc1, 0x23, 0x3d, 0xd8, 0xa4, 0x15, 0x25, 0xad, + 0x44, 0x9d, 0x35, 0x6d, 0xee, 0x20, 0xeb, 0x0e, + 0x28, 0x63, 0xd5, 0xc9, 0x56, 0xc6, 0x99, 0x6b, + 0xfd, 0x91, 0xad, 0x55, 0xef, 0x52, 0xcf, 0xab, + 0x64, 0x2e, 0x3a, 0xb2, 0x95, 0x6b, 0x7c, 0xee, + 0x4a, 0xf5, 0x71, 0x67, 0x51, 0xfa, 0x83, 0xd3, + 0x75, 0x55, 0xeb, 0xf5, 0x97, 0xc4, 0x3a, 0x4b, + 0xbf, 0x42, 0x1d, 0xaf, 0x4e, 0x07, 0xa4, 0x8e, + 0x66, 0x63, 0xbb, 0xab, 0x64, 0xc1, 0xeb, 0x0c, + 0xb3, 0xee, 0xac, 0xb8, 0x2a, 0xaa, 0x02, 0x61, + 0x9e, 0xe0, 0xef, 0xa4, 0x12, 0x87, 0x9f, 0x7a, + 0xd9, 0x57, 0x1e, 0xfb, 0xbd, 0x1b, 0xe9, 0x4f, + 0x22, 0x6a, 0xc6, 0x52, 0x2d, 0xd8, 0xb3, 0x9b, + 0x62, 0xfd, 0x74, 0x23, 0x6c, 0x55, 0xad, 0x1e, + 0x25, 0x6d, 0x61, 0xd0, 0x29, 0x41, 0xb4, 0x3c, + 0x7f, 0x2c, 0x62, 0xf7, 0x88, 0x3c, 0x50, 0x6e, + 0x6b, 0xeb, 0xc7, 0x12, 0xa9, 0xae, 0x05, 0x8c, + 0x80, 0x51, 0xc3, 0x3a, 0x4e, 0x65, 0x5d, 0x58, + 0x77, 0x08, 0xdb, 0x79, 0x14, 0x30, 0x4e, 0xb3, + 0x24, 0xea, 0xdb, 0x71, 0x95, 0xc0, 0x52, 0xad, + 0x1a, 0x47, 0x7c, 0xad, 0x54, 0xa8, 0x66, 0x74, + 0x3a, 0x76, 0x30, 0x7b, 0xef, 0x8c, 0xba, 0x9d, + 0x4d, 0x1d, 0x6f, 0x0f, 0x9d, 0x87, 0xd2, 0x9f, + 0xa4, 0x7b, 0x1d, 0xef, 0x6f, 0xca, 0x53, 0x84, + 0x17, 0xed, 0x87, 0xc2, 0x43, 0x38, 0xbe, 0x74, + 0x1f, 0xb2, 0x3f, 0x19, 0xf7, 0x14, 0xdf, 0x73, + 0xad, 0xa3, 0x2a, 0x80, 0x11, 0x45, 0x67, 0x16, + 0x10, 0x37, 0xb1, 0xe9, 0x3b, 0x85, 0x05, 0x21, + 0x13, 0xcc, 0x08, 0x19, 0xf4, 0x12, 0xe2, 0xac, + 0x90, 0x1c, 0xd7, 0x60, 0x17, 0x84, 0xe7, 0x58, + 0x7f, 0x6f, 0x3f, 0x17, 0x6e, 0xb6, 0x6f, 0x22, + 0xa6, 0x97, 0x85, 0x90, 0x63, 0x0a, 0xaf, 0xfc, + 0x17, 0x42, 0xdf, 0x15, 0x2d, 0x44, 0x82, 0x5c, + 0x68, 0xa9, 0x66, 0x11, 0xf6, 0xb4, 0x0b, 0xfb, + 0xd9, 0xbd, 0x2c, 0x2a, 0x92, 0x58, 0x37, 0x1b, + 0x88, 0x34, 0x46, 0x3d, 0xf0, 0x8d, 0x06, 0xbc, + 0x2b, 0x5b, 0x6e, 0x7d, 0xad, 0x65, 0xb4, 0xe5, + 0x83, 0x8c, 0x3c, 0x73, 0xb0, 0xc4, 0x90, 0xfb, + 0x90, 0x51, 0xb2, 0x8d, 0xcf, 0x7f, 0x91, 0x59, + 0xd1, 0xbe, 0xaf, 0x8d, 0x59, 0xb1, 0x83, 0x14, + 0x0b, 0x88, 0xbc, 0x67, 0x82, 0x4e, 0x70, 0x88, + 0x7d, 0x91, 0x21, 0xca, 0x8d, 0x1c, 0x44, 0x1a, + 0xf2, 0xc1, 0x39, 0xfb, 0xd9, 0x7e, 0x7c, 0x9f, + 0xeb, 0x23, 0x5d, 0x4a, 0x75, 0x2b, 0x81, 0xa8, + 0x96, 0xbb, 0x09, 0xdf, 0xf7, 0x05, 0x29, 0x6c, + 0x44, 0x3c, 0x85, 0x0d, 0x4f, 0x0d, 0x0c, 0x2b, + 0xcc, 0xdc, 0x53, 0xde, 0xe1, 0xfb, 0x1d, 0xac, + 0x57, 0x49, 0xce, 0x94, 0x4f, 0xb7, 0xd6, 0xd8, + 0x32, 0x5b, 0xa8, 0x8e, 0xb0, 0x71, 0x96, 0xae, + 0x66, 0x58, 0xb1, 0x85, 0xa8, 0x02, 0xac, 0xd8, + 0x60, 0x87, 0x7a, 0xd1, 0x5d, 0x30, 0x56, 0x8d, + 0xe9, 0xca, 0xb4, 0x70, 0xcd, 0xc1, 0xbe, 0x08, + 0xf5, 0xa5, 0xef, 0x32, 0xce, 0x4e, 0xaa, 0xab, + 0x2e, 0xf1, 0x9f, 0xbd, 0xfe, 0x5f, 0xd1, 0xf2, + 0x88, 0x35, 0x38, 0xf9, 0x1b, 0xd5, 0x06, 0xb3, + 0x37, 0xec, 0xe7, 0x07, 0xeb, 0x0d, 0x76, 0xf0, + 0xdc, 0xfe, 0x6c, 0x9f, 0xed, 0x3f, 0x57, 0x02, + 0x6a, 0x50, 0x15, 0x53, 0xdc, 0x1f, 0x07, 0x2b, + 0x05, 0x37, 0xb0, 0x6f, 0x60, 0xa3, 0x3e, 0xe1, + 0x52, 0xe3, 0xba, 0xfd, 0xb7, 0xbd, 0x30, 0xac, + 0x9c, 0x9e, 0x0a, 0x77, 0x5d, 0x6d, 0xe7, 0xe1, + 0x50, 0xeb, 0x45, 0x57, 0x6d, 0xa9, 0x36, 0xbc, + 0xfe, 0x81, 0xda, 0xfa, 0x5c, 0xec, 0xc4, 0x57, + 0x18, 0x5b, 0xb5, 0x31, 0xaa, 0x5a, 0x15, 0x66, + 0x9d, 0x39, 0x7b, 0x56, 0x9b, 0x63, 0x77, 0xf1, + 0xfb, 0xda, 0x92, 0x1d, 0x72, 0x91, 0x5b, 0x08, + 0x3b, 0x4d, 0xbd, 0x00, 0x73, 0xf1, 0x8c, 0x3b, + 0x54, 0x39, 0x6b, 0x7f, 0xab, 0xf2, 0xbc, 0x0c, + 0x3d, 0x52, 0x6b, 0x0c, 0xa2, 0x72, 0x3c, 0x50, + 0x97, 0xdc, 0x9e, 0xb5, 0xe7, 0x8e, 0x0b, 0x34, + 0xbb, 0x11, 0xd3, 0x3a, 0xe0, 0xbe, 0x80, 0x91, + 0xb9, 0x5a, 0x09, 0x90, 0x93, 0x3b, 0xbc, 0xf7, + 0xd1, 0xac, 0x51, 0xb8, 0x2b, 0x70, 0x0e, 0xa0, + 0x83, 0x6c, 0x17, 0xc9, 0xdc, 0x3d, 0x08, 0x09, + 0x9a, 0x73, 0xc1, 0xd4, 0xcc, 0x15, 0x47, 0x13, + 0x3e, 0xf1, 0xba, 0x2d, 0xf9, 0x86, 0x6a, 0xcf, + 0xd9, 0xab, 0x07, 0xa1, 0x86, 0x76, 0x70, 0xde, + 0xce, 0xee, 0x6b, 0xfb, 0xe7, 0x95, 0x6b, 0xea, + 0xd7, 0xf4, 0x7d, 0x3d, 0x9f, 0x9a, 0xcd, 0xcc, + 0x6f, 0x8f, 0xde, 0x4a, 0xc6, 0xee, 0x5b, 0xd2, + 0xcc, 0xec, 0x41, 0x95, 0xc0, 0x1a, 0x29, 0x10, + 0x9a, 0x1e, 0x8e, 0x1a, 0xaf, 0x6d, 0x35, 0x60, + 0x25, 0xe4, 0x1a, 0xfb, 0x1d, 0xb4, 0x61, 0x4f, + 0x65, 0x12, 0xd6, 0x82, 0x8f, 0x3d, 0xdf, 0xc3, + 0xde, 0x1e, 0x01, 0xf9, 0x08, 0xb9, 0x0b, 0xaa, + 0xfa, 0x52, 0x15, 0x75, 0xcf, 0xbb, 0x01, 0x3d, + 0x5d, 0x8a, 0x70, 0x86, 0x51, 0xd7, 0x34, 0xc5, + 0x3a, 0x5e, 0xba, 0x39, 0x0f, 0xef, 0x5d, 0x7d, + 0x01, 0xf7, 0xb0, 0xef, 0x18, 0xe7, 0xd8, 0xb3, + 0xcd, 0xf8, 0x6f, 0x58, 0xca, 0x8b, 0xd4, 0x0b, + 0x1e, 0x27, 0x8e, 0xa2, 0x85, 0xb6, 0x2a, 0x77, + 0x0f, 0x2f, 0x62, 0x10, 0x82, 0x12, 0x29, 0xc9, + 0x37, 0xb8, 0x4b, 0x2e, 0xb1, 0xd5, 0x1b, 0xa8, + 0xcc, 0x32, 0x47, 0x0a, 0xc0, 0xdd, 0x4a, 0xaf, + 0x5a, 0x12, 0x4b, 0xa8, 0xc4, 0x48, 0x0a, 0xde, + 0xea, 0x1a, 0x69, 0x2c, 0x60, 0xdd, 0x16, 0x31, + 0xd9, 0x11, 0x39, 0xca, 0x76, 0xf6, 0x62, 0xf8, + 0x8e, 0x66, 0x0a, 0xfe, 0x09, 0x56, 0x91, 0x61, + 0x55, 0xc9, 0x8d, 0x37, 0x79, 0x76, 0x9a, 0xfe, + 0x3d, 0x3e, 0xbb, 0xef, 0xea, 0x62, 0x7a, 0x7d, + 0x2b, 0x33, 0xeb, 0x9c, 0x73, 0xd1, 0x9f, 0xee, + 0xa9, 0xf8, 0xbb, 0xdc, 0xa5, 0xa3, 0x6b, 0x46, + 0x86, 0xa9, 0x25, 0x5f, 0x75, 0x6d, 0xd8, 0xd1, + 0xd9, 0xbc, 0xab, 0xb0, 0x01, 0x87, 0xe7, 0xbf, + 0x9e, 0x1e, 0x14, 0xc7, 0x31, 0x36, 0x16, 0xdd, + 0x5c, 0x6b, 0x19, 0x6b, 0x57, 0x54, 0xb9, 0x9a, + 0x6e, 0xa6, 0x1d, 0x7f, 0xef, 0xa6, 0x6a, 0x63, + 0x03, 0x57, 0xd2, 0x49, 0x4f, 0xe9, 0x60, 0xa1, + 0x27, 0xbe, 0x92, 0xe5, 0xa8, 0x02, 0x67, 0x12, + 0xf1, 0x9e, 0xd5, 0x1b, 0xfa, 0xe5, 0x2a, 0xaa, + 0x93, 0xdd, 0xab, 0x46, 0x58, 0xb4, 0x1e, 0x27, + 0x06, 0x8a, 0x82, 0x9e, 0xcf, 0x32, 0x55, 0xd5, + 0x3e, 0xe8, 0x2e, 0xe1, 0x73, 0xc7, 0xab, 0xb3, + 0x4c, 0x65, 0xd5, 0x6a, 0x4c, 0x7f, 0x01, 0xcf, + 0x7a, 0xc8, 0xae, 0x55, 0x3f, 0x12, 0xa6, 0xea, + 0x4f, 0x76, 0x7a, 0xfd, 0x16, 0x17, 0x14, 0xa9, + 0x09, 0xbb, 0x24, 0xe4, 0x7d, 0xb8, 0xbf, 0x66, + 0xd8, 0xda, 0x16, 0x8f, 0xbe, 0x90, 0x69, 0x8a, + 0xbd, 0x18, 0xde, 0xeb, 0xc6, 0xdd, 0x77, 0x62, + 0xcb, 0xc7, 0x4e, 0xa3, 0x1a, 0x26, 0xaa, 0xb0, + 0x47, 0x5a, 0xa3, 0xdb, 0xf2, 0x41, 0x2c, 0x97, + 0xda, 0x7e, 0xbc, 0x7f, 0xda, 0xab, 0x9c, 0xe0, + 0xca, 0x00, 0x67, 0xb0, 0x25, 0xd9, 0x29, 0x73, + 0xd2, 0x9d, 0x94, 0x16, 0xd8, 0x82, 0xb6, 0x2e, + 0x0d, 0xbb, 0x43, 0xa4, 0x2e, 0xdb, 0x61, 0x91, + 0xd0, 0x6e, 0x3e, 0xc5, 0x9e, 0x6d, 0x47, 0xb7, + 0x78, 0x87, 0x01, 0x27, 0x77, 0x94, 0x14, 0x36, + 0x6a, 0xad, 0x68, 0x95, 0xf7, 0xea, 0x2e, 0xb2, + 0x07, 0xd5, 0xfb, 0x07, 0xf1, 0x7f, 0xc4, 0x37, + 0xc7, 0x7f, 0xea, 0xea, 0x30, 0x23, 0xf6, 0xf2, + 0x81, 0x73, 0x12, 0x7b, 0x29, 0x63, 0x4f, 0x55, + 0xbf, 0xd9, 0x46, 0x65, 0xbc, 0x80, 0xd7, 0xdd, + 0xc3, 0xec, 0xef, 0xa6, 0xf5, 0x89, 0xc4, 0x19, + 0x0a, 0xa8, 0x1e, 0x0c, 0x51, 0x41, 0x1d, 0x7b, + 0x8e, 0x8b, 0xe6, 0x82, 0xb9, 0x01, 0xd1, 0x32, + 0x57, 0xf0, 0xc6, 0x6a, 0x00, 0xf7, 0x0f, 0x1d, + 0x74, 0x2b, 0x9d, 0xd5, 0xdb, 0xef, 0x3d, 0xf1, + 0x5d, 0xf0, 0xf7, 0x66, 0x83, 0xee, 0x79, 0x54, + 0xcd, 0xb1, 0xff, 0x71, 0x90, 0xb4, 0x22, 0xdb, + 0x59, 0xea, 0x3f, 0x5e, 0xdb, 0xbe, 0x74, 0x70, + 0xd9, 0xba, 0xaf, 0xc5, 0xa9, 0x02, 0x19, 0xfa, + 0x67, 0x62, 0x33, 0xf6, 0xcf, 0x8c, 0x00, 0xe3, + 0x8a, 0x7a, 0x45, 0xd9, 0x6a, 0xca, 0x4c, 0x4a, + 0xb0, 0xb3, 0xe7, 0xba, 0x6a, 0xf6, 0x91, 0x36, + 0x32, 0xce, 0x2f, 0xcb, 0x1f, 0x3b, 0x0f, 0xe3, + 0x3e, 0x9b, 0x1e, 0x63, 0x95, 0xe1, 0xf6, 0x90, + 0x75, 0x8b, 0x98, 0x02, 0x41, 0x8f, 0x7b, 0x82, + 0x48, 0x89, 0x5b, 0xf2, 0x5d, 0x89, 0x5f, 0x05, + 0xc4, 0xfc, 0xbe, 0x60, 0x11, 0x83, 0xf3, 0x5b, + 0x53, 0x7a, 0xd7, 0x5d, 0xd4, 0x8f, 0x54, 0x70, + 0x96, 0xaf, 0xed, 0x7d, 0xf5, 0x1e, 0x15, 0xa7, + 0xb0, 0x4a, 0x59, 0xeb, 0x70, 0xb4, 0xb1, 0x3f, + 0xb1, 0x5b, 0x5a, 0x7c, 0x44, 0xab, 0xaf, 0xfe, + 0xad, 0x03, 0x31, 0xa1, 0x0d, 0x31, 0xe1, 0x6b, + 0x9f, 0x3d, 0xfa, 0x04, 0x62, 0xa7, 0x09, 0x36, + 0x47, 0x1c, 0x27, 0x64, 0x9f, 0x5e, 0x21, 0x64, + 0x0b, 0x3d, 0xf9, 0x68, 0x44, 0x09, 0x75, 0x6f, + 0x72, 0x08, 0xa3, 0x25, 0xf4, 0x89, 0x13, 0x7b, + 0xf1, 0x0c, 0xfd, 0x91, 0xe3, 0x74, 0x2e, 0xd0, + 0xe5, 0xa4, 0x57, 0x61, 0x96, 0x99, 0x21, 0xb6, + 0xab, 0x49, 0x5a, 0x56, 0x4a, 0x49, 0x9d, 0xb3, + 0xa1, 0x20, 0xdf, 0xf5, 0xbe, 0x19, 0x27, 0xa6, + 0xcf, 0xb6, 0x5b, 0xa8, 0x6b, 0x6e, 0x61, 0x73, + 0xe1, 0xe7, 0x62, 0x29, 0x93, 0x14, 0x4e, 0x38, + 0x25, 0x73, 0x2c, 0x6c, 0x4f, 0x34, 0x92, 0x1c, + 0x3e, 0x1a, 0xa2, 0xfc, 0xea, 0x63, 0xf7, 0x3e, + 0xe7, 0xdc, 0x58, 0xa9, 0xb8, 0x1c, 0x86, 0xf3, + 0x42, 0x59, 0x1b, 0x5e, 0x33, 0x3c, 0xab, 0xa8, + 0x16, 0xc5, 0x47, 0x6f, 0x8f, 0x4f, 0x0d, 0x62, + 0x2f, 0x3d, 0x75, 0xc1, 0x07, 0x1d, 0x96, 0x4f, + 0x44, 0x19, 0x95, 0x93, 0x12, 0x61, 0xe4, 0x58, + 0x9c, 0xd4, 0xd6, 0x6a, 0x8c, 0xc1, 0xf1, 0x6f, + 0xb0, 0x9f, 0x5d, 0x60, 0xa4, 0x97, 0x9c, 0xfc, + 0xbd, 0xaa, 0x29, 0x1e, 0xdd, 0x1a, 0x54, 0xb7, + 0xaa, 0xcf, 0x63, 0xe7, 0x3e, 0x1d, 0xf5, 0x13, + 0xea, 0x0d, 0xb2, 0x3e, 0x55, 0xfd, 0x5a, 0x1f, + 0xf0, 0xf0, 0x57, 0x9d, 0x9a, 0x2a, 0xe9, 0x99, + 0x73, 0x9e, 0x4f, 0xb7, 0x47, 0xdf, 0xab, 0xda, + 0xd4, 0xd3, 0xd5, 0xf0, 0xfa, 0x1a, 0x5e, 0x34, + 0x92, 0x8b, 0x35, 0x39, 0x5b, 0xcb, 0x3f, 0x1f, + 0xf3, 0xff, 0xd2, 0xbb, 0xb1, 0x4a, 0x72, 0xea, + 0x08, 0x71, 0xdc, 0xa4, 0x76, 0xa4, 0xc4, 0x9d, + 0x39, 0x61, 0xa1, 0x6e, 0xec, 0x50, 0x89, 0x2a, + 0xf7, 0x63, 0x93, 0xab, 0x4a, 0x16, 0x5d, 0x8e, + 0x5b, 0x88, 0x39, 0x9d, 0x9e, 0x35, 0x7e, 0xa0, + 0x7a, 0xb7, 0xaa, 0x3d, 0x23, 0x51, 0x5d, 0xbb, + 0xf2, 0x98, 0x32, 0x02, 0xae, 0x18, 0x33, 0xe9, + 0x5c, 0x82, 0xd9, 0x7b, 0x51, 0x7f, 0xe0, 0x46, + 0xdf, 0xc8, 0x6f, 0x22, 0xa5, 0xe8, 0x56, 0x9c, + 0x32, 0x02, 0xee, 0x69, 0xfb, 0x82, 0xb8, 0x88, + 0x1c, 0x49, 0x1e, 0x39, 0x1c, 0xa5, 0x6b, 0x94, + 0xa3, 0x4a, 0xef, 0x18, 0x3c, 0xfe, 0x03, 0x7c, + 0xd2, 0x31, 0x78, 0xfc, 0x9c, 0xf2, 0x7f, 0xf0, + 0x2a, 0x3a, 0x09, 0x21, 0xd9, 0xcc, 0xe5, 0x7b, + 0x3d, 0xc8, 0x38, 0x3e, 0xa7, 0x42, 0xdd, 0x72, + 0xbf, 0x2b, 0xcd, 0x77, 0xb6, 0x9a, 0x23, 0xb1, + 0x49, 0x67, 0x0a, 0x9d, 0xa4, 0xde, 0x68, 0x6f, + 0xd6, 0x4b, 0x43, 0x5b, 0x61, 0xd2, 0xf9, 0x94, + 0xc9, 0x01, 0x5d, 0x57, 0x14, 0x62, 0x48, 0xf2, + 0x3a, 0x13, 0xaf, 0x8c, 0x29, 0x65, 0x8e, 0xa0, + 0x83, 0x33, 0x24, 0x46, 0x85, 0x69, 0x37, 0xaf, + 0x3c, 0x69, 0xa0, 0x57, 0x8c, 0xda, 0x58, 0x6d, + 0x04, 0xcb, 0xb8, 0xc3, 0xd2, 0x18, 0xd9, 0xc1, + 0x1e, 0x2e, 0xb2, 0x46, 0xd1, 0x8b, 0xe4, 0x21, + 0xed, 0x92, 0x11, 0x69, 0x94, 0xaa, 0x97, 0x67, + 0x9c, 0x6b, 0x84, 0x4f, 0xd9, 0x85, 0x5d, 0x1c, + 0xfd, 0xcd, 0x38, 0x86, 0x79, 0xd8, 0xe3, 0x3d, + 0xe1, 0xbc, 0xfc, 0x46, 0xd6, 0x1a, 0x31, 0x37, + 0x5b, 0xc2, 0x6c, 0xe6, 0x8f, 0xec, 0x0b, 0xb8, + 0xdd, 0xdf, 0xe2, 0xdc, 0xff, 0xd8, 0x4f, 0x79, + 0x88, 0x36, 0x2e, 0xcb, 0xcb, 0xd6, 0x92, 0xbb, + 0x6b, 0xcd, 0xa1, 0x0b, 0xf4, 0xce, 0x85, 0xba, + 0x5a, 0xbe, 0x4b, 0xd5, 0x9e, 0xbc, 0x10, 0x70, + 0x77, 0x15, 0xde, 0xbd, 0xe4, 0x07, 0x8f, 0xa2, + 0x49, 0x73, 0x00, 0x7e, 0xc2, 0xa3, 0xa6, 0x60, + 0xac, 0xba, 0x01, 0xb5, 0xe0, 0x08, 0xe4, 0x26, + 0x04, 0x9f, 0x1c, 0x1f, 0x27, 0x0e, 0xc2, 0x8c, + 0x0b, 0x31, 0x99, 0x11, 0x72, 0x43, 0xea, 0xb2, + 0xa3, 0xd9, 0x78, 0xbb, 0xf0, 0x7a, 0x85, 0x94, + 0x1f, 0x84, 0xe4, 0xfc, 0x51, 0x9c, 0xb0, 0x21, + 0x83, 0x70, 0x7c, 0x4f, 0x1c, 0xf1, 0x68, 0xc5, + 0x5f, 0xeb, 0x06, 0x84, 0x7c, 0x55, 0x65, 0xa8, + 0x2a, 0x5c, 0x3c, 0x82, 0x7b, 0x96, 0x29, 0x5d, + 0x7f, 0xf3, 0xf8, 0x9d, 0xf0, 0x76, 0x97, 0x56, + 0x95, 0x88, 0x30, 0x54, 0xad, 0xb5, 0x88, 0x6b, + 0x59, 0xfe, 0xd8, 0x28, 0xb2, 0x22, 0xec, 0xc2, + 0xb5, 0x77, 0x43, 0x5b, 0x11, 0xe2, 0xf0, 0x76, + 0x54, 0x5f, 0x94, 0x47, 0xca, 0x09, 0x9e, 0x35, + 0xc5, 0xfc, 0x83, 0x4d, 0xe4, 0x30, 0x72, 0x26, + 0x23, 0x64, 0x31, 0xf5, 0x5d, 0xc2, 0x06, 0x67, + 0xac, 0x35, 0xab, 0x5b, 0xc9, 0x9f, 0x71, 0x32, + 0xe8, 0xcd, 0xfd, 0x2a, 0x7a, 0x14, 0xa5, 0x2e, + 0x2d, 0xdb, 0x33, 0x76, 0xfc, 0x33, 0xf9, 0xc2, + 0xc3, 0x78, 0x20, 0xc2, 0x2a, 0x7a, 0x1c, 0xa5, + 0x8a, 0xd3, 0xc5, 0x1e, 0x9c, 0x39, 0x22, 0x77, + 0x23, 0x4a, 0xda, 0xf9, 0xbf, 0x3a, 0xcc, 0x60, + 0x3a, 0x3e, 0x76, 0xfd, 0x58, 0x25, 0xa3, 0xc7, + 0x77, 0x6a, 0xd6, 0xba, 0x55, 0x33, 0xd6, 0x8d, + 0x3f, 0x29, 0x0f, 0x95, 0x3f, 0x19, 0x37, 0x89, + 0x3f, 0xc8, 0xfd, 0x08, 0xd6, 0xe4, 0x69, 0x65, + 0xde, 0xa1, 0x7c, 0xc2, 0x4c, 0xa0, 0xe6, 0xe3, + 0x31, 0x36, 0x27, 0x78, 0x1f, 0x47, 0xa9, 0xef, + 0x38, 0xb7, 0xa5, 0xdb, 0xd2, 0x27, 0xe6, 0x0e, + 0x43, 0xa9, 0xc5, 0x92, 0xb4, 0xe3, 0x69, 0x48, + 0x76, 0xab, 0x01, 0x37, 0x7f, 0x27, 0xc3, 0xf5, + 0xf0, 0x0c, 0x0d, 0x7f, 0x0f, 0xe5, 0x9f, 0x78, + 0xc2, 0x53, 0xc4, 0xc5, 0x6f, 0x34, 0xe9, 0xce, + 0xca, 0x6a, 0xe3, 0x47, 0x0f, 0xb5, 0xf2, 0xc5, + 0xf1, 0x75, 0xfb, 0xe2, 0x31, 0xf7, 0xa3, 0xf7, + 0x35, 0xac, 0x90, 0x23, 0x3d, 0x08, 0xdf, 0x0b, + 0xf1, 0xf3, 0x19, 0x5b, 0x6d, 0xe9, 0xe6, 0xad, + 0x1c, 0xd7, 0xcf, 0xa9, 0xd5, 0x25, 0xf7, 0x2c, + 0xe4, 0x45, 0x21, 0x79, 0x42, 0xee, 0xd7, 0xf6, + 0x47, 0x9c, 0xea, 0xf2, 0xd1, 0x1d, 0x65, 0xc8, + 0x4d, 0xb7, 0x64, 0x76, 0x15, 0xb1, 0x23, 0x07, + 0x71, 0x0b, 0x8e, 0x56, 0x62, 0xcf, 0x43, 0xb1, + 0x1e, 0xfd, 0xa8, 0x44, 0xe9, 0xd1, 0xb4, 0xfd, + 0x5d, 0xe7, 0xd1, 0xcb, 0xde, 0xa3, 0x35, 0x98, + 0xa3, 0xbb, 0xbf, 0x7c, 0xd9, 0xda, 0xd9, 0xfe, + 0x12, 0x72, 0x83, 0x98, 0xb5, 0x0b, 0x79, 0x43, + 0xb4, 0x15, 0xdd, 0xeb, 0x45, 0xb3, 0x60, 0x7e, + 0x4d, 0x7d, 0x76, 0x39, 0xda, 0xe9, 0xe2, 0x7d, + 0x80, 0x70, 0x56, 0xb2, 0xe5, 0x94, 0x91, 0xb4, + 0x46, 0xa4, 0x67, 0x38, 0x53, 0xc8, 0x71, 0x9d, + 0xeb, 0x16, 0x77, 0xd4, 0x8b, 0x3b, 0x68, 0x07, + 0x81, 0xb3, 0x01, 0x3d, 0xcd, 0x18, 0x3c, 0xce, + 0xc9, 0x8f, 0xdb, 0x83, 0x6e, 0xc0, 0x3a, 0x2d, + 0xf5, 0x66, 0x8b, 0xb8, 0x86, 0x0e, 0x9c, 0xe8, + 0xb5, 0x75, 0xf0, 0x84, 0x8c, 0xd0, 0xe2, 0x88, + 0x1a, 0xa7, 0x0e, 0xc3, 0x8c, 0xf5, 0x28, 0xdc, + 0x59, 0xeb, 0x08, 0xe3, 0x81, 0xf7, 0x98, 0x31, + 0xa2, 0x5b, 0xd0, 0xa7, 0x5c, 0x25, 0x72, 0x65, + 0xb8, 0x49, 0xd5, 0x80, 0xc6, 0xb4, 0x1c, 0x34, + 0xe3, 0x7b, 0xd1, 0xc3, 0xa8, 0xad, 0x42, 0x84, + 0xad, 0xd7, 0x6f, 0xd6, 0x49, 0x9f, 0xd0, 0x1d, + 0x75, 0xfe, 0x62, 0x67, 0x9d, 0x09, 0x7b, 0xce, + 0xc1, 0x55, 0xe2, 0xfa, 0x3f, 0xae, 0x2e, 0x21, + 0xda, 0x38, 0x81, 0x35, 0x46, 0xd3, 0xc3, 0xbf, + 0xba, 0x9c, 0x33, 0xc1, 0x11, 0x37, 0xd4, 0xb5, + 0x13, 0x7c, 0x1e, 0x50, 0x26, 0x5f, 0x20, 0xdf, + 0x93, 0x0c, 0x76, 0xf3, 0x4c, 0x52, 0x60, 0xe4, + 0x6a, 0xe7, 0x98, 0x3d, 0xc1, 0x3d, 0x69, 0x29, + 0x23, 0xaa, 0x5b, 0x41, 0xdd, 0x6d, 0xa9, 0x1a, + 0x7a, 0x23, 0x79, 0x1c, 0xde, 0x9a, 0x22, 0xe9, + 0x5d, 0x4c, 0x78, 0x06, 0x46, 0x77, 0xd8, 0x88, + 0x9a, 0x7f, 0x16, 0xbb, 0x3b, 0x4e, 0x7f, 0xc5, + 0xbc, 0xe3, 0x92, 0x80, 0x8e, 0x6c, 0x94, 0x2c, + 0x61, 0x1d, 0x00, 0xbe, 0x71, 0x03, 0xf7, 0xe6, + 0xe8, 0x4a, 0xfa, 0x0d, 0xd7, 0x0b, 0x2a, 0x56, + 0xa6, 0x8d, 0x69, 0xa3, 0xb8, 0x99, 0x7d, 0x99, + 0xfd, 0x09, 0xa3, 0xf7, 0xa2, 0xb1, 0x94, 0xdb, + 0xc8, 0xdd, 0x6f, 0xcd, 0x50, 0xbf, 0x2c, 0xfd, + 0x3a, 0x09, 0x79, 0xce, 0xe7, 0x76, 0xf6, 0xe7, + 0xec, 0x9b, 0x11, 0x17, 0x79, 0x17, 0xcb, 0x87, + 0x8b, 0xb9, 0xcd, 0x16, 0xdb, 0xeb, 0xd7, 0x24, + 0xef, 0x55, 0x27, 0x2f, 0x76, 0xdc, 0x09, 0xbb, + 0x7c, 0x9c, 0x4e, 0x4d, 0xed, 0x7d, 0x40, 0x14, + 0x5c, 0xce, 0xb8, 0x29, 0xf6, 0x55, 0x56, 0x10, + 0x35, 0x14, 0x52, 0xb9, 0xa2, 0x35, 0x46, 0x2c, + 0x55, 0x9d, 0x77, 0x1d, 0xf8, 0x8d, 0xbb, 0x83, + 0x7a, 0x18, 0x0c, 0x1d, 0x55, 0x7e, 0x64, 0x63, + 0xa7, 0x8c, 0x23, 0x24, 0xe2, 0x8c, 0x49, 0xe7, + 0x9c, 0xc7, 0xe8, 0x77, 0x40, 0xef, 0x9b, 0xd3, + 0xa5, 0xc6, 0x63, 0x79, 0xcc, 0xc5, 0x7f, 0x1d, + 0x31, 0xe6, 0xd8, 0x74, 0xb3, 0xb7, 0x32, 0xc6, + 0x51, 0x16, 0xe4, 0xb9, 0x86, 0xb1, 0x81, 0x93, + 0x37, 0x67, 0xcd, 0xd3, 0xe6, 0x90, 0x99, 0xf3, + 0xf9, 0xfb, 0x9e, 0x3b, 0xf0, 0x58, 0x5b, 0x86, + 0x0c, 0x3a, 0xd2, 0x1e, 0x93, 0xc7, 0x21, 0x66, + 0xbc, 0xd9, 0xf6, 0xdd, 0xdc, 0x66, 0x68, 0x35, + 0xc7, 0xf7, 0xbd, 0xa8, 0xdf, 0x27, 0x74, 0x56, + 0x42, 0x4f, 0x36, 0x65, 0x54, 0xd5, 0xd3, 0xc3, + 0xc4, 0xf8, 0x4d, 0x72, 0x96, 0xcd, 0xce, 0x60, + 0xb3, 0xea, 0xc7, 0x5e, 0x7a, 0x47, 0xc5, 0x08, + 0x8e, 0x71, 0x17, 0x99, 0xf0, 0x88, 0xd5, 0x67, + 0x1d, 0x16, 0x27, 0x5f, 0x73, 0x4a, 0x16, 0x64, + 0x31, 0x96, 0x88, 0xb5, 0x63, 0x27, 0x01, 0xeb, + 0x80, 0xa6, 0xaf, 0x1f, 0x7c, 0x01, 0x23, 0xf6, + 0xac, 0x15, 0xb4, 0xd4, 0x27, 0xf1, 0x92, 0xa4, + 0xa5, 0xdb, 0x8a, 0xc4, 0x91, 0x01, 0xb4, 0xe7, + 0x3a, 0xbd, 0xea, 0x1c, 0x83, 0x47, 0x49, 0x4f, + 0x07, 0x07, 0xce, 0xa5, 0x70, 0xaa, 0x34, 0xae, + 0xf2, 0x33, 0x99, 0xc7, 0xdc, 0xc4, 0xc8, 0x1b, + 0xe4, 0xcb, 0xe5, 0xcc, 0xc2, 0xd8, 0x49, 0xc2, + 0xb8, 0x53, 0x3d, 0xd5, 0x53, 0xa5, 0x0e, 0x99, + 0x99, 0x12, 0x94, 0x47, 0x9c, 0xca, 0x1e, 0xcc, + 0x95, 0x06, 0x2a, 0x08, 0x8f, 0x9b, 0x3e, 0x1a, + 0x4d, 0xaa, 0x16, 0x59, 0xc8, 0x18, 0x32, 0x6a, + 0x47, 0x92, 0x91, 0x66, 0x1f, 0x95, 0xbe, 0x2a, + 0x45, 0x9e, 0x44, 0xb6, 0xd2, 0x9d, 0x6f, 0x94, + 0x70, 0x63, 0xc6, 0x0c, 0xe4, 0xb1, 0xa1, 0x0a, + 0xaa, 0xae, 0x2d, 0xb2, 0x73, 0xc6, 0x84, 0x72, + 0xd6, 0xf8, 0x3f, 0x3f, 0xe1, 0x9e, 0x52, 0x3b, + 0xe2, 0xfc, 0xe0, 0x69, 0x77, 0x55, 0xf9, 0x06, + 0x3d, 0xeb, 0x0f, 0xe7, 0xe3, 0xf9, 0x70, 0xc0, + 0x15, 0x3c, 0x5e, 0x1b, 0x55, 0x7b, 0xe1, 0xb1, + 0x59, 0xe5, 0x9b, 0x15, 0xd4, 0xd4, 0x9d, 0x83, + 0xac, 0x51, 0x34, 0x43, 0x9e, 0x36, 0xe9, 0x2e, + 0x75, 0x05, 0xf3, 0xca, 0xe9, 0xc3, 0x6b, 0xc4, + 0x3a, 0x46, 0x65, 0x61, 0xce, 0x3b, 0x3e, 0xc1, + 0x6a, 0x14, 0xc6, 0xda, 0x90, 0x11, 0xe9, 0x4a, + 0x73, 0x26, 0xf7, 0x28, 0x2c, 0xf4, 0x39, 0xf0, + 0xf5, 0x2b, 0x72, 0xfb, 0xce, 0x59, 0x38, 0x33, + 0xf9, 0xab, 0xe3, 0xeb, 0xab, 0xca, 0x69, 0x63, + 0xc8, 0xfc, 0x88, 0xab, 0xd6, 0x0a, 0xc8, 0x18, + 0x8c, 0x9a, 0xf8, 0xff, 0xc5, 0xc3, 0xc9, 0xf0, + 0xe3, 0xbe, 0x0a, 0xa4, 0x24, 0x8d, 0x1c, 0x87, + 0xb4, 0x88, 0x1d, 0xdd, 0x2e, 0x1e, 0xdf, 0xd3, + 0xd0, 0x87, 0x32, 0x02, 0xf7, 0x11, 0x4f, 0xdb, + 0x3f, 0xd0, 0xa7, 0x8f, 0x85, 0x57, 0x88, 0x10, + 0x00, 0x7b, 0xc9, 0x8e, 0xfb, 0xd5, 0x40, 0x3b, + 0xac, 0x5c, 0xf4, 0x1c, 0xed, 0xbe, 0x0d, 0x63, + 0x0f, 0x75, 0xd0, 0x57, 0xd8, 0x80, 0xf3, 0x39, + 0x4f, 0x79, 0x68, 0x90, 0x71, 0x76, 0x04, 0xd7, + 0x93, 0x59, 0x2a, 0xf1, 0x26, 0x01, 0x7c, 0x13, + 0x89, 0xdf, 0x78, 0x95, 0x08, 0xbd, 0x80, 0x48, + 0x35, 0x24, 0xc7, 0xbb, 0xff, 0xa8, 0x0c, 0x2c, + 0x5b, 0xc8, 0xf3, 0x45, 0xed, 0x1f, 0x44, 0x83, + 0xfa, 0xfa, 0xc0, 0x01, 0x42, 0xe7, 0x43, 0x94, + 0x64, 0xe0, 0xac, 0x87, 0x28, 0x57, 0x98, 0x74, + 0xbe, 0x96, 0x7c, 0x8d, 0x50, 0x01, 0xe3, 0x40, + 0x8e, 0x80, 0x76, 0x29, 0xa3, 0x83, 0xd1, 0xff, + 0x0d, 0xc4, 0x6e, 0x21, 0x47, 0xee, 0x71, 0xac, + 0x4e, 0xb7, 0x9f, 0x84, 0x07, 0x9b, 0xe4, 0x0a, + 0xc3, 0x35, 0xf9, 0xca, 0x45, 0xab, 0x1b, 0x8b, + 0x12, 0x97, 0x17, 0x9d, 0x55, 0xdb, 0x61, 0x39, + 0xde, 0x7d, 0xdf, 0x5e, 0x34, 0xa1, 0xc0, 0xb3, + 0xa3, 0x8c, 0x9a, 0x51, 0x8b, 0xef, 0x08, 0xbc, + 0xa5, 0x13, 0xab, 0x82, 0x3b, 0x2f, 0x09, 0xe8, + 0xbb, 0xf4, 0xc2, 0xbd, 0xb5, 0x19, 0xfc, 0x59, + 0xdc, 0x93, 0x92, 0x3e, 0xfa, 0x2e, 0x59, 0x87, + 0x6c, 0x4f, 0xfa, 0xd8, 0xb9, 0x4f, 0x98, 0xc3, + 0x74, 0x87, 0x27, 0x02, 0x51, 0x1f, 0x46, 0x8c, + 0xe8, 0x4e, 0x9b, 0x8a, 0xc3, 0xbc, 0x7e, 0x2a, + 0x63, 0x56, 0x8a, 0x0a, 0x48, 0xf9, 0x30, 0x57, + 0x51, 0xc0, 0xa8, 0x00, 0xf2, 0x9f, 0xc6, 0x64, + 0x32, 0xf1, 0x3e, 0x87, 0xac, 0x2a, 0xc9, 0xcf, + 0x25, 0x03, 0x1f, 0xb0, 0xe2, 0xfa, 0x74, 0xd4, + 0x3b, 0xb5, 0xaf, 0x6b, 0x0d, 0xc8, 0xd6, 0xec, + 0x2f, 0xf6, 0x8d, 0xfd, 0x1e, 0x6d, 0x70, 0xcc, + 0xcb, 0x5c, 0xc8, 0xcb, 0xc8, 0x19, 0x1e, 0x19, + 0xb3, 0xf7, 0xe4, 0xfb, 0x56, 0xdc, 0xe2, 0x2a, + 0x82, 0xfe, 0xa3, 0x18, 0x8b, 0xdc, 0xe0, 0x0e, + 0x19, 0x47, 0xf7, 0x48, 0x93, 0x82, 0xd7, 0xbd, + 0xa7, 0xd1, 0x61, 0x8c, 0x0d, 0x19, 0x71, 0xd8, + 0x55, 0x32, 0x61, 0xdf, 0xef, 0x95, 0x8f, 0xc9, + 0x08, 0x31, 0x04, 0x6f, 0x41, 0xdc, 0x3c, 0x7b, + 0x3c, 0x64, 0x62, 0xdc, 0x12, 0x85, 0xac, 0x6b, + 0xe6, 0x78, 0x8d, 0xb0, 0x01, 0x32, 0xf5, 0xd9, + 0x6f, 0x51, 0x96, 0x27, 0x90, 0xaa, 0xed, 0x8c, + 0xa3, 0xda, 0xeb, 0xda, 0x1a, 0xd3, 0x0f, 0x3a, + 0xde, 0x49, 0xb0, 0x2a, 0x29, 0xc8, 0xea, 0xb0, + 0x46, 0x50, 0xdd, 0xcd, 0x52, 0x2d, 0x4d, 0x56, + 0x72, 0xfe, 0x5a, 0x37, 0x04, 0x6b, 0xcd, 0x92, + 0xb7, 0xda, 0x84, 0x29, 0x0f, 0xe2, 0xfd, 0xdf, + 0x08, 0xec, 0xf6, 0xa3, 0x07, 0x89, 0xfd, 0x6b, + 0xce, 0x45, 0xe9, 0xf2, 0x7b, 0xec, 0x94, 0x8d, + 0xcb, 0x71, 0x4b, 0x6d, 0xcc, 0x77, 0xea, 0xde, + 0x5c, 0x51, 0x15, 0x67, 0x1f, 0x6e, 0x1f, 0x69, + 0xba, 0xe7, 0xdc, 0x43, 0xbf, 0x56, 0x00, 0x91, + 0x24, 0x7c, 0xbe, 0x09, 0x39, 0x2b, 0xdf, 0xc1, + 0x59, 0x48, 0x4a, 0x09, 0xdd, 0x1c, 0xf6, 0x54, + 0x1b, 0xe3, 0xde, 0x38, 0x9e, 0x2b, 0x2b, 0x6a, + 0xc4, 0x8d, 0xee, 0xb9, 0xe2, 0xdd, 0x18, 0xce, + 0x40, 0xea, 0x71, 0x7b, 0x6b, 0xf6, 0x44, 0x50, + 0xd6, 0x5a, 0x0f, 0x8f, 0xa1, 0xd3, 0x49, 0xef, + 0xc4, 0x57, 0x5f, 0xc1, 0x3a, 0x8d, 0x3e, 0xa2, + 0xb1, 0x96, 0xe7, 0x21, 0x4a, 0x9d, 0xd6, 0x2f, + 0xdd, 0x2b, 0xfa, 0x0d, 0x8c, 0x9e, 0x5c, 0x72, + 0x2a, 0x11, 0xae, 0x3a, 0x0f, 0xa4, 0x84, 0x94, + 0x70, 0xc6, 0x85, 0x0e, 0x6e, 0x53, 0x8f, 0x1b, + 0xe1, 0x57, 0xb1, 0x77, 0xbb, 0x46, 0x18, 0x91, + 0x6c, 0x96, 0xf6, 0x72, 0x9d, 0xbc, 0xb1, 0x04, + 0xa9, 0xd6, 0x92, 0x58, 0x98, 0x61, 0xf6, 0x1c, + 0x42, 0xa5, 0x19, 0xac, 0xbf, 0xb1, 0x11, 0xa9, + 0x42, 0xf5, 0x3a, 0xee, 0x3b, 0x3c, 0x42, 0xbe, + 0x75, 0x7e, 0x07, 0xa7, 0xab, 0x75, 0xdf, 0x8b, + 0xbb, 0xc6, 0xfa, 0xc2, 0x88, 0x1b, 0x42, 0x66, + 0xab, 0x3d, 0xc3, 0x94, 0x03, 0xff, 0xd1, 0x6b, + 0x86, 0x76, 0xb4, 0xe8, 0xac, 0x34, 0x96, 0xdd, + 0x05, 0xe3, 0xc6, 0xd6, 0xd2, 0xbb, 0x45, 0x43, + 0x63, 0x5b, 0x58, 0x07, 0x96, 0xf3, 0x70, 0x56, + 0x77, 0xe5, 0x80, 0x9b, 0x97, 0x89, 0xdf, 0x6a, + 0xe5, 0xb1, 0xab, 0x27, 0x73, 0x77, 0xc2, 0x20, + 0x5b, 0x45, 0x55, 0xe2, 0x46, 0x11, 0xe2, 0xc2, + 0xb9, 0x63, 0x58, 0xc1, 0x05, 0xb5, 0xcd, 0x99, + 0x4f, 0x7f, 0x70, 0xfc, 0xae, 0x78, 0x97, 0x2d, + 0xc0, 0x79, 0x5f, 0x82, 0x97, 0xd1, 0x43, 0xbc, + 0xa1, 0x42, 0xec, 0x5c, 0x29, 0xd8, 0x0b, 0xaa, + 0x54, 0xee, 0x30, 0x8b, 0xcd, 0x15, 0x87, 0xe2, + 0xab, 0x86, 0x42, 0x3e, 0x5c, 0xc1, 0x03, 0xa1, + 0xf1, 0xf4, 0x20, 0x6a, 0x9f, 0xd3, 0x70, 0xa4, + 0xa7, 0x52, 0x5e, 0x3d, 0x47, 0x9e, 0x39, 0x22, + 0x7f, 0x97, 0xa3, 0x80, 0xf1, 0xfd, 0xbf, 0x60, + 0x5e, 0xbc, 0x8e, 0x68, 0x51, 0x29, 0x95, 0xf3, + 0xf6, 0x85, 0x63, 0x69, 0x3b, 0xf1, 0x5d, 0xf4, + 0x65, 0xc6, 0xf9, 0x93, 0x14, 0x72, 0x91, 0x5f, + 0x91, 0xb5, 0x20, 0xae, 0x2b, 0x73, 0x8d, 0x14, + 0xae, 0x62, 0xf3, 0x00, 0x56, 0x92, 0x7f, 0x3b, + 0xde, 0x30, 0x3f, 0x77, 0x98, 0xb9, 0x61, 0x3f, + 0xb3, 0x6f, 0x1d, 0xeb, 0xdc, 0x2d, 0x08, 0x3f, + 0xb3, 0x52, 0xd0, 0x33, 0x5e, 0x14, 0x83, 0xea, + 0xec, 0x92, 0x73, 0xd6, 0x78, 0x4a, 0x0a, 0x84, + 0x41, 0x76, 0xcd, 0x58, 0x74, 0x34, 0x38, 0x4b, + 0xd7, 0xda, 0x8b, 0xec, 0xfc, 0xfb, 0x6b, 0xed, + 0x05, 0x7d, 0xc1, 0x5d, 0xdc, 0xcc, 0xfe, 0xfc, + 0x28, 0xd9, 0xcf, 0x89, 0x53, 0xb4, 0xa2, 0xb6, + 0xec, 0x64, 0xed, 0x0b, 0x76, 0x56, 0x9b, 0xd7, + 0x56, 0xaa, 0x30, 0x9e, 0x1b, 0x53, 0x0a, 0xfa, + 0x10, 0x2d, 0xdb, 0x7f, 0xb3, 0x97, 0x51, 0x27, + 0xce, 0xce, 0x68, 0x78, 0xcc, 0xb4, 0x96, 0x5e, + 0x41, 0x6c, 0xa6, 0xaf, 0xc0, 0x07, 0xf8, 0x7f, + 0x0e, 0xba, 0x99, 0x67, 0xbd, 0x03, 0x6b, 0xd5, + 0x10, 0x8b, 0xe6, 0xba, 0x7a, 0x8c, 0x5f, 0xc1, + 0xa7, 0xfc, 0xbc, 0xc5, 0xe8, 0x3f, 0xf4, 0x47, + 0xd1, 0x09, 0x3b, 0x7d, 0x72, 0x65, 0xef, 0xcf, + 0xd9, 0xa7, 0x91, 0x11, 0x58, 0x1f, 0xf0, 0xd8, + 0x5f, 0x93, 0xed, 0x27, 0xc2, 0x80, 0xd3, 0x55, + 0x5e, 0xc2, 0x99, 0x80, 0x6b, 0xd2, 0x8a, 0x80, + 0xd5, 0xab, 0x07, 0x1e, 0x4b, 0xc4, 0x77, 0xcf, + 0xe1, 0x8f, 0xd6, 0xa8, 0x5f, 0x1e, 0x65, 0x63, + 0x90, 0x79, 0x7d, 0xeb, 0x3d, 0x7a, 0x95, 0xfb, + 0xe3, 0x38, 0x61, 0xc8, 0x2e, 0xd0, 0x13, 0xe7, + 0x14, 0x29, 0x41, 0x26, 0x20, 0x0f, 0x51, 0x25, + 0x9e, 0x89, 0xa0, 0xaf, 0xe1, 0xba, 0xcc, 0x1a, + 0x35, 0x17, 0x11, 0x1a, 0x3f, 0x10, 0x4a, 0x03, + 0x91, 0xaa, 0x23, 0x1e, 0xff, 0xb7, 0xab, 0xb6, + 0xda, 0x1d, 0xb1, 0xdd, 0x38, 0x68, 0xd5, 0x45, + 0x27, 0x4e, 0xba, 0xff, 0x6e, 0x75, 0x73, 0x16, + 0x6f, 0xdf, 0xe1, 0xff, 0xf9, 0x43, 0xd8, 0x8f, + 0x28, 0x20, 0x53, 0xc6, 0x0e, 0x32, 0x9c, 0x8f, + 0xa8, 0x54, 0x3c, 0x26, 0xef, 0xbd, 0x16, 0x8d, + 0x49, 0xd9, 0xff, 0xc6, 0x41, 0xf9, 0xdb, 0x8e, + 0x03, 0xd5, 0xa4, 0x8f, 0xf6, 0xe7, 0x9e, 0x4d, + 0x90, 0xb5, 0xc1, 0xd8, 0x38, 0xae, 0xd9, 0x21, + 0x7b, 0xd1, 0x3e, 0x77, 0x3c, 0x2e, 0x8d, 0x48, + 0x4f, 0x3d, 0x2f, 0x7b, 0x74, 0x81, 0xdf, 0x84, + 0x99, 0x8a, 0x1d, 0x84, 0xcd, 0xf2, 0xa6, 0xb1, + 0xc9, 0x76, 0xbc, 0x18, 0x49, 0xd1, 0xe7, 0xea, + 0xd7, 0x60, 0x06, 0xcd, 0xb4, 0xd3, 0x18, 0xf3, + 0xbb, 0x35, 0xe4, 0x97, 0x6f, 0x46, 0x7f, 0x8e, + 0xee, 0xc5, 0x93, 0x1e, 0x0a, 0x4e, 0x5f, 0x6e, + 0x67, 0x74, 0xac, 0x32, 0x64, 0x84, 0xf9, 0x76, + 0x56, 0xfe, 0xb8, 0x53, 0x25, 0xc6, 0x6a, 0xc0, + 0x34, 0xf1, 0xe1, 0xb0, 0x1a, 0x80, 0xfe, 0x94, + 0x63, 0x1c, 0x25, 0xd3, 0x59, 0x73, 0xe6, 0x5d, + 0xe4, 0x58, 0xa0, 0x0e, 0xe1, 0xc7, 0xb0, 0x2a, + 0xc8, 0x87, 0x5d, 0xbf, 0x36, 0x85, 0x72, 0x0d, + 0x5a, 0x45, 0x85, 0x01, 0x37, 0x2a, 0xc5, 0x61, + 0x27, 0x80, 0xf8, 0x5f, 0x5d, 0x53, 0xef, 0x7a, + 0x7a, 0x7d, 0xe8, 0x67, 0x94, 0xc7, 0x3e, 0x82, + 0x8c, 0xfe, 0x49, 0xcf, 0x7b, 0x10, 0xa1, 0xe4, + 0x68, 0xcc, 0x6a, 0x46, 0x56, 0x59, 0x30, 0xfe, + 0xed, 0xa7, 0x7e, 0x0c, 0xfd, 0x49, 0x27, 0x9a, + 0xc7, 0x61, 0xb1, 0x8f, 0xfd, 0xed, 0xaf, 0x83, + 0xa8, 0xfe, 0xd1, 0x55, 0xa9, 0xf1, 0xab, 0x88, + 0x27, 0x15, 0x27, 0x38, 0x6a, 0x15, 0x62, 0x53, + 0x85, 0x2b, 0x7a, 0x95, 0xa8, 0x0a, 0x73, 0x91, + 0x71, 0x4c, 0x51, 0x16, 0xad, 0x6f, 0x20, 0x5f, + 0xb8, 0xba, 0x27, 0x7b, 0xd5, 0x69, 0xc4, 0xb2, + 0x05, 0x9c, 0x3c, 0x8c, 0xc6, 0x82, 0x14, 0xb4, + 0x49, 0x21, 0x76, 0x7f, 0x56, 0x2d, 0xa4, 0xb8, + 0xc6, 0x51, 0x48, 0x80, 0x88, 0xcd, 0x3d, 0xa7, + 0x4f, 0xea, 0x93, 0xd5, 0x05, 0x98, 0x0d, 0x58, + 0xf9, 0xf4, 0x6a, 0xf5, 0xf5, 0x48, 0x7b, 0x54, + 0xe7, 0xac, 0x89, 0x95, 0xfa, 0xe5, 0xe3, 0x2b, + 0xdb, 0xf7, 0x0e, 0xbe, 0xd8, 0x8e, 0xec, 0x8f, + 0x2a, 0xa4, 0x66, 0x20, 0x70, 0x64, 0x3a, 0xde, + 0xf2, 0x5d, 0x88, 0x72, 0xc7, 0x5d, 0xd4, 0xeb, + 0x4b, 0xef, 0x49, 0x66, 0xa4, 0x7a, 0x92, 0x57, + 0x0e, 0x57, 0xe1, 0x75, 0x4c, 0xdb, 0xd5, 0x62, + 0x3f, 0x47, 0xef, 0x5e, 0x17, 0x61, 0x3e, 0x68, + 0xf7, 0xed, 0x07, 0xf2, 0x68, 0x0e, 0xc6, 0x96, + 0xd8, 0xab, 0x9a, 0x88, 0x48, 0xc9, 0xa4, 0x99, + 0x34, 0xd3, 0xb8, 0x66, 0xc1, 0x0a, 0xc2, 0x23, + 0x19, 0xae, 0x07, 0x9c, 0x7e, 0x27, 0x3f, 0x82, + 0xcc, 0x05, 0xb9, 0x35, 0xf0, 0xef, 0x17, 0x98, + 0x6a, 0xeb, 0xb9, 0x7e, 0x4f, 0xbd, 0x80, 0xd3, + 0x65, 0xf0, 0xa7, 0x4f, 0x30, 0xe5, 0x7b, 0xf7, + 0xfe, 0x6e, 0x45, 0x8e, 0xab, 0x91, 0x70, 0x8d, + 0x75, 0x95, 0xb4, 0x48, 0xba, 0x7a, 0xd7, 0xaa, + 0x92, 0x56, 0xe2, 0xd5, 0xcf, 0x2d, 0x15, 0x56, + 0x16, 0x41, 0x4b, 0xbb, 0xe3, 0xb0, 0xea, 0x2c, + 0x28, 0x9f, 0x2b, 0xeb, 0xca, 0x9d, 0x32, 0xe1, + 0x81, 0x77, 0xbe, 0xb5, 0xfe, 0x43, 0xb9, 0xef, + 0xfc, 0xb1, 0xf5, 0x47, 0x38, 0xbe, 0x72, 0xee, + 0xb3, 0x67, 0xd5, 0xe0, 0x41, 0xd0, 0x0e, 0xbc, + 0xa1, 0x47, 0x73, 0x03, 0xcd, 0x5d, 0x01, 0x9d, + 0x2e, 0xf1, 0x56, 0x3c, 0xca, 0xe0, 0xff, 0xf3, + 0xd0, 0x1d, 0x1c, 0xaf, 0xc2, 0x75, 0x11, 0x21, + 0x4e, 0x69, 0x63, 0xad, 0xd3, 0xeb, 0x97, 0x37, + 0xfd, 0x1a, 0x85, 0xa0, 0x17, 0xdc, 0x0c, 0x76, + 0xbb, 0x0c, 0x74, 0x8d, 0x3f, 0xab, 0x54, 0x8d, + 0x90, 0x39, 0xe5, 0x77, 0x3d, 0x76, 0x3e, 0x6d, + 0x2a, 0x2c, 0x43, 0xe8, 0x0d, 0x88, 0x1a, 0xf1, + 0x79, 0x25, 0xa5, 0xa4, 0xe4, 0xf9, 0x4c, 0x51, + 0x75, 0xd5, 0x9c, 0x67, 0xf9, 0x0a, 0xec, 0xe7, + 0x39, 0xb8, 0xb7, 0xe7, 0x55, 0xac, 0x15, 0xdd, + 0xc5, 0x2b, 0x98, 0x9c, 0x41, 0x8c, 0xa8, 0x1b, + 0x54, 0x82, 0xce, 0x33, 0x52, 0x09, 0x8d, 0x93, + 0xcb, 0x45, 0x67, 0xfe, 0xba, 0x23, 0x4a, 0x55, + 0x97, 0x3a, 0xae, 0x0e, 0x05, 0xd8, 0x37, 0x86, + 0x20, 0x46, 0x1e, 0xec, 0xa8, 0x90, 0x75, 0xb5, + 0x99, 0xfb, 0x71, 0x6e, 0xfe, 0xc8, 0xe7, 0xfb, + 0xe2, 0x1f, 0x9e, 0xa0, 0xef, 0x22, 0x9d, 0x5d, + 0x8a, 0x18, 0xa9, 0x1a, 0x90, 0x8f, 0x1d, 0x65, + 0xb4, 0x47, 0x90, 0x51, 0x92, 0x8a, 0x6f, 0x23, + 0xa5, 0x24, 0xd5, 0xb3, 0x6a, 0xa5, 0xe3, 0xba, + 0xc5, 0x5f, 0xf5, 0xaf, 0xbf, 0xf2, 0xdc, 0x91, + 0x23, 0x16, 0x3c, 0xdf, 0xd2, 0x2a, 0xf6, 0x40, + 0x8b, 0x46, 0xa8, 0x0c, 0xf7, 0x2c, 0x54, 0x0a, + 0x51, 0x26, 0x32, 0xad, 0x7f, 0xa2, 0xf7, 0x63, + 0x12, 0x20, 0xdf, 0x66, 0xaa, 0x46, 0x3c, 0x69, + 0x4f, 0xfb, 0x9d, 0xfb, 0x67, 0xe2, 0x9e, 0x1c, + 0x11, 0xa6, 0x9d, 0x9b, 0x82, 0x3f, 0x42, 0x3a, + 0xdc, 0x43, 0x64, 0xf8, 0x11, 0x86, 0x2d, 0x71, + 0x98, 0x90, 0xe9, 0x16, 0x2f, 0xfe, 0x4b, 0x21, + 0x6e, 0x38, 0x1f, 0x57, 0x71, 0x1d, 0x55, 0xb0, + 0x34, 0x77, 0xdd, 0xda, 0x75, 0x24, 0x2b, 0xee, + 0x44, 0xad, 0x8c, 0x4b, 0xca, 0xf0, 0xca, 0x75, + 0x2d, 0x60, 0xbf, 0xa8, 0x08, 0xca, 0x8a, 0x3b, + 0x58, 0xb9, 0x56, 0x09, 0xd8, 0xd7, 0xf6, 0x17, + 0x94, 0x45, 0x85, 0x63, 0xa8, 0x66, 0x61, 0xb5, + 0x4e, 0x1f, 0xdc, 0xde, 0x59, 0x3e, 0xcc, 0x1e, + 0x8e, 0xb8, 0xe8, 0xfc, 0x92, 0x81, 0xdf, 0x6f, + 0x19, 0x25, 0x77, 0x4b, 0xef, 0x46, 0x8c, 0x32, + 0x39, 0x5c, 0xa5, 0xc4, 0xef, 0x1d, 0xc8, 0xc3, + 0x10, 0x07, 0xc7, 0x72, 0x5e, 0xc7, 0x24, 0x6e, + 0x46, 0x5f, 0x73, 0x15, 0xb2, 0x9a, 0x18, 0xfa, + 0x6e, 0x71, 0xf3, 0xdc, 0xe6, 0xf8, 0x77, 0x23, + 0xe2, 0xd3, 0x70, 0x57, 0x85, 0x3b, 0xee, 0x6b, + 0x0d, 0xbd, 0x7e, 0x90, 0x7c, 0xe0, 0x74, 0xb4, + 0x86, 0xa4, 0xa2, 0x89, 0x08, 0x18, 0xff, 0x08, + 0x62, 0x87, 0x12, 0x6e, 0xb7, 0xa5, 0x09, 0xae, + 0xec, 0xe1, 0x8c, 0xb2, 0xbf, 0xc2, 0x7a, 0x31, + 0xe9, 0xa8, 0x34, 0xcb, 0x29, 0x5e, 0x75, 0xef, + 0x97, 0x28, 0x87, 0x85, 0xd5, 0x62, 0xa7, 0xf5, + 0x85, 0x0d, 0x91, 0xf9, 0xc1, 0x2e, 0xfb, 0xd2, + 0xd9, 0xb4, 0xbf, 0xb0, 0x5f, 0xc8, 0x37, 0xad, + 0xe0, 0xb6, 0x58, 0x12, 0x7a, 0x54, 0x2a, 0x10, + 0xe3, 0x93, 0x31, 0x97, 0x8f, 0xa7, 0x25, 0x3c, + 0xe0, 0x96, 0xec, 0x8d, 0x81, 0x63, 0xda, 0xf5, + 0x16, 0xdf, 0xed, 0x3c, 0x3d, 0x8c, 0x9e, 0xfe, + 0x60, 0xc1, 0xcd, 0xda, 0xc5, 0x5c, 0xd6, 0x43, + 0xee, 0xf9, 0x68, 0x96, 0x38, 0xd6, 0xd3, 0x8d, + 0xb8, 0x5b, 0xb0, 0x16, 0xad, 0x02, 0x9c, 0xe3, + 0x82, 0x25, 0x39, 0x35, 0x88, 0xae, 0xf9, 0x79, + 0xf6, 0xfc, 0x61, 0xeb, 0xf3, 0xee, 0x34, 0xc4, + 0x48, 0x21, 0x79, 0xd8, 0x1a, 0x2a, 0xc3, 0x6c, + 0x31, 0xa6, 0xcd, 0x39, 0xc9, 0xaf, 0x34, 0x08, + 0x27, 0xfe, 0xf3, 0xeb, 0xe9, 0xdd, 0x55, 0x25, + 0x8a, 0xbd, 0xa4, 0x95, 0x58, 0x13, 0x7f, 0x66, + 0xc4, 0x0c, 0xe7, 0xef, 0x43, 0x56, 0x2b, 0x30, + 0xdf, 0xeb, 0x32, 0x4d, 0x60, 0xad, 0x80, 0x75, + 0x36, 0x5e, 0xe1, 0xee, 0xb1, 0xe4, 0x0d, 0x0c, + 0x33, 0x05, 0x46, 0xc1, 0x73, 0xdf, 0xc3, 0x02, + 0xb2, 0xfd, 0x4e, 0x76, 0x2c, 0x48, 0xf4, 0xea, + 0x9a, 0xb4, 0x6e, 0x9e, 0xc5, 0xea, 0x3f, 0x44, + 0x8c, 0x83, 0x2d, 0xdf, 0x6f, 0x11, 0xf6, 0x56, + 0x61, 0x16, 0xb9, 0xb6, 0xf8, 0x5b, 0x79, 0xf6, + 0xc9, 0xea, 0xd6, 0xb8, 0x91, 0x30, 0x32, 0xdb, + 0xb7, 0xf7, 0x7a, 0x34, 0x42, 0x61, 0xb4, 0xce, + 0x6a, 0x0b, 0xda, 0x74, 0x77, 0xd4, 0x26, 0xf9, + 0x2b, 0x87, 0xa8, 0x0a, 0xc4, 0x6f, 0x05, 0x88, + 0xdf, 0x87, 0x94, 0x11, 0x65, 0xdc, 0x2d, 0x77, + 0xf4, 0x90, 0x7d, 0x3c, 0x67, 0xf7, 0xe6, 0x63, + 0x8a, 0xba, 0x98, 0xde, 0x93, 0xe8, 0x5e, 0xb8, + 0xba, 0x3a, 0x64, 0x30, 0xfa, 0xba, 0x9e, 0xc5, + 0x4e, 0x2a, 0xf9, 0x57, 0x0d, 0xc2, 0xff, 0x11, + 0x4b, 0x62, 0x29, 0x9c, 0x47, 0xc5, 0xc7, 0xff, + 0x3f, 0x65, 0x4b, 0xea, 0xe3, 0xa1, 0xb3, 0x21, + 0xf9, 0x77, 0xa8, 0x54, 0x39, 0x91, 0x1d, 0x45, + 0xe8, 0x5f, 0xbd, 0x65, 0x33, 0xdd, 0x8a, 0x1c, + 0x44, 0x1b, 0xaa, 0xb5, 0x62, 0xea, 0x7b, 0xe8, + 0x09, 0xd2, 0x71, 0x07, 0x16, 0x70, 0xd7, 0xe8, + 0x1e, 0x5e, 0x56, 0x9e, 0x1c, 0x3e, 0xe2, 0xdd, + 0x85, 0x5c, 0x8f, 0x9e, 0x3c, 0xc5, 0x41, 0x3c, + 0x2b, 0x4f, 0x85, 0x8e, 0xa8, 0x62, 0x83, 0x3d, + 0x0b, 0x97, 0x72, 0x76, 0x38, 0x1f, 0x11, 0x97, + 0xbf, 0x2f, 0xd6, 0x06, 0xce, 0xc8, 0x03, 0x72, + 0xd0, 0x0a, 0xcb, 0xb9, 0x72, 0x3f, 0x6a, 0x88, + 0x6b, 0xa1, 0xd7, 0x5a, 0xc2, 0x36, 0x6a, 0xa1, + 0xa3, 0x46, 0x44, 0xaf, 0x7f, 0x37, 0x56, 0x98, + 0xb1, 0xd6, 0xa7, 0x96, 0xe6, 0xb7, 0x30, 0x6e, + 0x92, 0xea, 0xa8, 0xd9, 0x97, 0xc1, 0xdb, 0x6b, + 0x8e, 0xf9, 0x8c, 0x18, 0xbb, 0x77, 0x07, 0x9d, + 0xa1, 0xb7, 0xc3, 0xce, 0xc4, 0xdb, 0xab, 0xdb, + 0x5f, 0xbc, 0x85, 0xc7, 0xdf, 0xc6, 0xb6, 0xa3, + 0x5b, 0x5e, 0x96, 0x5a, 0x7f, 0x01, 0x3b, 0xf2, + 0x90, 0x22, 0x1f, 0x24, 0xed, 0x4b, 0xf6, 0x43, + 0xcc, 0x49, 0x55, 0x18, 0x97, 0x65, 0xde, 0x99, + 0xba, 0x25, 0x6e, 0xee, 0xc7, 0x8d, 0x99, 0x16, + 0xf7, 0x76, 0xf1, 0x2b, 0x96, 0x03, 0x1e, 0xc7, + 0x33, 0xac, 0xa3, 0xca, 0xdb, 0x72, 0xab, 0x74, + 0x1c, 0x92, 0x62, 0x39, 0xa1, 0xde, 0xfd, 0xcc, + 0x90, 0x45, 0xc8, 0x57, 0x5d, 0x64, 0xf7, 0x33, + 0xf8, 0x7c, 0xe8, 0x27, 0x70, 0x87, 0x14, 0x5f, + 0x3f, 0xe6, 0x67, 0x03, 0x7b, 0xec, 0x6d, 0x74, + 0x6c, 0x21, 0x55, 0xb6, 0xef, 0xa4, 0x97, 0x23, + 0xe1, 0x4a, 0x4f, 0xad, 0x8f, 0x46, 0x64, 0x5d, + 0x21, 0x3d, 0x28, 0xae, 0x1f, 0xe2, 0x21, 0xb6, + 0xeb, 0x5d, 0x7d, 0x06, 0x9e, 0x55, 0xa1, 0x0f, + 0xf7, 0x07, 0x08, 0xab, 0xc6, 0x0b, 0xf2, 0xdb, + 0x83, 0x15, 0x49, 0xae, 0x34, 0x22, 0x46, 0x82, + 0x25, 0xe2, 0xe3, 0xf1, 0x1c, 0xfa, 0x6a, 0xe5, + 0xa2, 0x5a, 0xcc, 0xfe, 0xa1, 0x31, 0xea, 0x26, + 0x1a, 0xe7, 0x72, 0x31, 0x63, 0x82, 0x7d, 0xb7, + 0x97, 0x14, 0x12, 0x2c, 0xbe, 0xbf, 0xb2, 0x4f, + 0x55, 0x62, 0x2d, 0xf1, 0x2e, 0xf1, 0xe4, 0xc6, + 0xce, 0xc5, 0xc6, 0x95, 0xc6, 0xbf, 0x19, 0x90, + 0xed, 0x99, 0x49, 0x71, 0x96, 0xa9, 0xfb, 0x6c, + 0x9f, 0xeb, 0x40, 0x66, 0xf5, 0xa5, 0x1d, 0xde, + 0x6d, 0x3d, 0xe7, 0x4c, 0xa2, 0x36, 0x7f, 0x87, + 0xc3, 0x8b, 0x5a, 0x9d, 0x7e, 0x44, 0x21, 0x56, + 0x79, 0x6d, 0xa3, 0x47, 0x13, 0x15, 0x59, 0x06, + 0x0d, 0x09, 0xab, 0xfc, 0xf6, 0x75, 0x7b, 0xe8, + 0xf5, 0x1d, 0x29, 0x2b, 0x75, 0x7b, 0x4f, 0xde, + 0xca, 0xdf, 0x26, 0xe1, 0x31, 0xf2, 0x03, 0x89, + 0x08, 0x13, 0x42, 0xdc, 0xeb, 0x88, 0xf1, 0x59, + 0x92, 0xaa, 0x4c, 0x90, 0xea, 0x2f, 0x66, 0xb2, + 0xbd, 0x71, 0xbb, 0x9f, 0xcb, 0xe1, 0xcf, 0x8d, + 0xfd, 0xab, 0x6f, 0xb1, 0x13, 0xda, 0xf5, 0xc5, + 0xe3, 0x6a, 0x15, 0xe3, 0xca, 0x25, 0xfd, 0x92, + 0xf2, 0x31, 0xc4, 0x29, 0xb4, 0x8e, 0xd9, 0x31, + 0x6f, 0x8d, 0x95, 0x1b, 0xb0, 0xe3, 0xda, 0xc8, + 0x86, 0x9e, 0x47, 0xc6, 0x1d, 0xa1, 0x3d, 0x67, + 0xd9, 0x6c, 0x6e, 0xfd, 0xf0, 0x8b, 0x70, 0xbf, + 0xd6, 0xee, 0x1c, 0xdb, 0xb5, 0xa3, 0xaf, 0x26, + 0x93, 0x57, 0xa4, 0x2b, 0xd2, 0x7d, 0xc9, 0x5f, + 0x09, 0xc3, 0x77, 0xa3, 0x95, 0x17, 0xa5, 0x00, + 0x32, 0x85, 0xf4, 0xc2, 0x5d, 0xc8, 0xd1, 0xf4, + 0x4c, 0x89, 0x23, 0x8e, 0x04, 0xb3, 0x80, 0x1a, + 0x7c, 0x72, 0x5e, 0x99, 0x4d, 0xce, 0xbe, 0x5a, + 0xdd, 0x9e, 0xd5, 0x66, 0xb7, 0x66, 0x5f, 0x75, + 0xd8, 0x3a, 0x0d, 0xc4, 0xb1, 0x2c, 0xc2, 0xaa, + 0xbf, 0xe8, 0x66, 0x85, 0xeb, 0x4e, 0x56, 0x80, + 0x9f, 0xad, 0xec, 0xc1, 0xd2, 0xe1, 0xbf, 0x23, + 0xe3, 0xa6, 0xce, 0xc7, 0x5a, 0xd4, 0xea, 0x51, + 0xa7, 0xb6, 0xa2, 0xe5, 0x99, 0x03, 0xaa, 0x7b, + 0xa3, 0xe7, 0x29, 0xcc, 0xde, 0xa0, 0x73, 0xdd, + 0xf7, 0x6c, 0x32, 0xae, 0x1b, 0xc1, 0xcd, 0xe0, + 0xcb, 0x33, 0x9e, 0xfb, 0xa4, 0x08, 0xff, 0x36, + 0x54, 0x1f, 0x6c, 0x72, 0x7d, 0x67, 0x3a, 0x37, + 0x1c, 0xe9, 0x76, 0xa2, 0xd2, 0xab, 0x78, 0xa8, + 0x56, 0x4c, 0x37, 0xd3, 0xae, 0xd7, 0xc1, 0x27, + 0xa5, 0x29, 0xea, 0xe0, 0x0b, 0xcf, 0x04, 0x5a, + 0x6b, 0xc5, 0xa8, 0xf8, 0x11, 0xa1, 0x0e, 0xb8, + 0x63, 0x26, 0xe7, 0xb8, 0x4f, 0xb0, 0xef, 0x79, + 0xad, 0x09, 0x95, 0x11, 0xbc, 0xe8, 0x8b, 0x7f, + 0xea, 0x38, 0xa9, 0x75, 0x71, 0x4e, 0x4e, 0xcd, + 0x43, 0x0d, 0x11, 0xfb, 0x9b, 0x3a, 0xad, 0xe3, + 0x0c, 0xc6, 0x8d, 0xb0, 0x28, 0x2c, 0x40, 0x6e, + 0x19, 0x12, 0x43, 0xa2, 0xe4, 0xfa, 0x8e, 0x4e, + 0x6b, 0x2c, 0x63, 0x64, 0xf4, 0x01, 0x27, 0x26, + 0x61, 0x4d, 0x45, 0x2d, 0xab, 0xe5, 0x75, 0x8b, + 0xae, 0x82, 0x22, 0x35, 0x87, 0xa5, 0xb5, 0x5c, + 0xa6, 0x99, 0x69, 0x05, 0x5b, 0xd1, 0x03, 0xf2, + 0x74, 0x81, 0xf1, 0xce, 0xf6, 0x8c, 0x3a, 0xcf, + 0x25, 0x39, 0xe3, 0xea, 0x2c, 0x64, 0xad, 0x3c, + 0x22, 0xec, 0x2a, 0x87, 0x73, 0x3d, 0xf3, 0x88, + 0x16, 0xc9, 0x4d, 0x2b, 0xab, 0xce, 0x37, 0xe6, + 0xac, 0x31, 0x6b, 0xcc, 0x29, 0x05, 0x63, 0x96, + 0x34, 0xe7, 0x73, 0xf0, 0xae, 0x5f, 0x43, 0xcc, + 0x85, 0xef, 0x36, 0xff, 0xf7, 0x10, 0xf1, 0xfc, + 0x06, 0x75, 0xe9, 0x68, 0x40, 0xce, 0x4b, 0x5d, + 0x04, 0xec, 0xef, 0x44, 0xf5, 0x2b, 0xbd, 0x5a, + 0xca, 0xbd, 0xaa, 0x79, 0x9d, 0xf7, 0x25, 0x1d, + 0x3f, 0xf4, 0xe7, 0xa6, 0xc3, 0x15, 0xc4, 0x10, + 0x21, 0x6c, 0x20, 0xad, 0x87, 0xe7, 0x4a, 0x88, + 0x06, 0x6d, 0x8c, 0xfd, 0x22, 0x37, 0x72, 0x8d, + 0x2f, 0x7f, 0xc1, 0x7a, 0x15, 0xfe, 0x1e, 0x21, + 0xed, 0x2d, 0xaf, 0x12, 0x28, 0xc4, 0xac, 0xe4, + 0x6f, 0x09, 0x35, 0x9a, 0x84, 0xd7, 0x29, 0xa5, + 0x9d, 0x69, 0x3d, 0xa3, 0x97, 0x3c, 0x4e, 0x0d, + 0x66, 0x95, 0x3b, 0x1e, 0xbe, 0x11, 0xbd, 0x3b, + 0x2a, 0x5e, 0xb4, 0x49, 0x7a, 0x05, 0x58, 0xfb, + 0x6a, 0xd4, 0xbc, 0xd7, 0x4c, 0x36, 0x2a, 0x9d, + 0x57, 0xbe, 0x44, 0xf5, 0x49, 0x18, 0x9f, 0x70, + 0xe3, 0xb1, 0x28, 0x9c, 0x6d, 0xa3, 0x80, 0xea, + 0xc9, 0x46, 0xc6, 0xbc, 0x29, 0xf6, 0xf2, 0x16, + 0x61, 0xa6, 0x6d, 0x4f, 0xd8, 0xda, 0xfe, 0x82, + 0xba, 0xd1, 0xa3, 0xf2, 0x8a, 0x2b, 0xd0, 0x40, + 0xf3, 0x4c, 0xee, 0xa9, 0x14, 0x10, 0xfd, 0xca, + 0x97, 0x5f, 0xfb, 0xd2, 0x74, 0xad, 0x8e, 0xf8, + 0x53, 0xc8, 0xe7, 0xd8, 0x0c, 0x8c, 0x6a, 0xad, + 0xb1, 0xa0, 0xa0, 0xce, 0x3b, 0x56, 0xab, 0x08, + 0xf5, 0x67, 0xee, 0xb4, 0xc5, 0x7a, 0x6a, 0xef, + 0xc9, 0xce, 0x87, 0x5e, 0x42, 0xbc, 0xff, 0x49, + 0x1c, 0x5e, 0x65, 0xd6, 0x25, 0xc5, 0x5b, 0xbc, + 0x2d, 0x41, 0x94, 0x0b, 0xcf, 0x0d, 0xea, 0xbb, + 0x3b, 0x41, 0xbd, 0x50, 0x0d, 0xea, 0x3b, 0x3b, + 0xa8, 0x23, 0xea, 0xe7, 0xc0, 0x1c, 0x75, 0x4f, + 0x7c, 0x2b, 0xc4, 0x5e, 0x4a, 0xe7, 0xab, 0xe7, + 0xf5, 0xcb, 0xfa, 0x55, 0x7d, 0x1a, 0xf6, 0xc3, + 0xe9, 0xd2, 0x74, 0xa9, 0x98, 0xf7, 0x11, 0xdd, + 0xc8, 0xb7, 0xf5, 0x7c, 0x96, 0xa9, 0x86, 0xd8, + 0x89, 0xaf, 0x28, 0xce, 0x89, 0xc8, 0x3b, 0x16, + 0x29, 0x26, 0x08, 0x11, 0xe7, 0x9c, 0xd4, 0xed, + 0x3e, 0xa0, 0xa6, 0x1e, 0xd7, 0x4e, 0x83, 0xb1, + 0xd6, 0x56, 0xd1, 0xe1, 0xee, 0xe8, 0x8c, 0x31, + 0xca, 0xdd, 0x74, 0xbb, 0x1a, 0x56, 0x4e, 0xd2, + 0x4e, 0xd9, 0x93, 0x10, 0x0b, 0x69, 0xf6, 0xba, + 0x1b, 0xf2, 0x7d, 0x96, 0x21, 0xab, 0x1c, 0x76, + 0x77, 0x2d, 0xa9, 0x9d, 0xb4, 0x52, 0xed, 0x09, + 0xcc, 0x37, 0x8f, 0xd6, 0x8d, 0xb3, 0x0c, 0x12, + 0x7e, 0xdd, 0x7f, 0x74, 0xc8, 0x5a, 0x6a, 0x6b, + 0x96, 0xd6, 0x66, 0xd8, 0x51, 0x3e, 0x8a, 0x1f, + 0xc6, 0xd8, 0x1c, 0xa9, 0x8e, 0x8b, 0xc2, 0x6d, + 0x67, 0x41, 0x8a, 0x48, 0x1f, 0x11, 0xb3, 0x73, + 0x5c, 0x1a, 0x97, 0x16, 0x1c, 0x66, 0x49, 0x66, + 0x48, 0xbc, 0x28, 0xf6, 0xa0, 0xb2, 0x85, 0x91, + 0xff, 0xd6, 0x27, 0xdd, 0xc7, 0x86, 0x40, 0x38, + 0xb0, 0xd7, 0xaf, 0x51, 0xe6, 0xf5, 0x8e, 0x61, + 0x9e, 0x41, 0x06, 0x2e, 0x20, 0xba, 0xaf, 0xdb, + 0xb7, 0xe2, 0x38, 0xa8, 0x05, 0x59, 0xb3, 0x72, + 0x8d, 0x45, 0x4f, 0x95, 0xe7, 0x1a, 0xae, 0x13, + 0x5e, 0x54, 0x30, 0xed, 0xe1, 0xef, 0x03, 0x6d, + 0x74, 0x05, 0xe7, 0x3d, 0xfb, 0x8e, 0x32, 0x00, + 0xc6, 0x13, 0xc8, 0xc2, 0xe3, 0xda, 0xfc, 0x8e, + 0x66, 0x87, 0x61, 0x55, 0x1d, 0x71, 0x2a, 0xfb, + 0x42, 0x8a, 0x3a, 0xe9, 0xee, 0x8a, 0x12, 0xd2, + 0x20, 0x57, 0x38, 0x90, 0x38, 0xfe, 0x59, 0xe9, + 0xaa, 0x07, 0xcb, 0x12, 0xd6, 0x2f, 0x0b, 0x6c, + 0xa1, 0x85, 0x3b, 0x49, 0xad, 0x15, 0xa2, 0xda, + 0x5d, 0x94, 0x29, 0xec, 0xa6, 0xd9, 0x9d, 0x65, + 0xa7, 0x95, 0x15, 0xf2, 0x14, 0x4a, 0x1d, 0x4c, + 0x2a, 0x59, 0x03, 0x32, 0x64, 0xf2, 0xb2, 0xf7, + 0x78, 0xa9, 0x75, 0x5c, 0x81, 0xb8, 0xe6, 0x6c, + 0xdf, 0xf5, 0x95, 0x0a, 0x90, 0x53, 0xe1, 0x81, + 0xfa, 0x95, 0xb3, 0x2c, 0xc1, 0x46, 0xd9, 0x39, + 0xf6, 0xc4, 0x14, 0xa5, 0x30, 0x46, 0xb9, 0x8c, + 0x2b, 0x7e, 0x74, 0x54, 0x43, 0xfa, 0xeb, 0x0c, + 0x88, 0x22, 0xd0, 0x77, 0xea, 0xfc, 0x15, 0xa7, + 0x50, 0xe5, 0x59, 0xea, 0xd6, 0x9f, 0xe9, 0xb3, + 0xeb, 0xe8, 0xb2, 0x3d, 0x2e, 0x9d, 0x93, 0x90, + 0x87, 0xdb, 0xab, 0x65, 0x41, 0x39, 0x5d, 0xfd, + 0x16, 0x79, 0x0f, 0x05, 0xbd, 0xcf, 0xd4, 0x75, + 0x29, 0x0a, 0x08, 0xbe, 0x13, 0x72, 0x7f, 0x64, + 0xd7, 0xc5, 0xa8, 0xa7, 0x5d, 0xb5, 0x71, 0x2b, + 0x27, 0xeb, 0x21, 0xe7, 0x26, 0xbc, 0x2e, 0x6a, + 0x5b, 0x47, 0xbc, 0xab, 0x80, 0xee, 0x39, 0xa8, + 0x96, 0x8b, 0xb1, 0x9b, 0x44, 0xfa, 0x0a, 0x5c, + 0x7b, 0x87, 0x23, 0x9d, 0x90, 0x3b, 0x3c, 0xa5, + 0x47, 0x1d, 0xd4, 0xdd, 0x1a, 0x35, 0xb1, 0xff, + 0x71, 0x52, 0x77, 0x4b, 0x34, 0x64, 0x36, 0xe2, + 0x6e, 0xc0, 0x0c, 0xcd, 0xd0, 0x37, 0x5e, 0x86, + 0x38, 0x5c, 0xb7, 0xa8, 0x9a, 0x87, 0xfd, 0x23, + 0x21, 0x46, 0x48, 0xd6, 0x6f, 0xa9, 0x0e, 0xd4, + 0x8b, 0x37, 0x13, 0x84, 0xe7, 0x5c, 0x43, 0xb5, + 0x5d, 0x6d, 0xa0, 0xd3, 0x32, 0xb2, 0xa9, 0xef, + 0x6c, 0xed, 0xbc, 0x1b, 0xd8, 0xc2, 0x0a, 0x06, + 0x29, 0xa7, 0xb9, 0x37, 0x15, 0x54, 0x4b, 0xe3, + 0x9a, 0xa7, 0xa8, 0x4d, 0xab, 0x34, 0x6f, 0xe5, + 0xee, 0x86, 0xbb, 0x8a, 0x22, 0x97, 0xdb, 0x2b, + 0x8d, 0x8f, 0x1d, 0x03, 0x66, 0xda, 0xb8, 0x31, + 0xb6, 0xa5, 0xbe, 0x9b, 0xd9, 0x42, 0xf4, 0xac, + 0x6c, 0xe0, 0x75, 0x78, 0xa2, 0x2f, 0x3a, 0x5c, + 0xcd, 0x3e, 0xe6, 0xac, 0xc8, 0x88, 0x96, 0x32, + 0x2c, 0x39, 0xf7, 0xdf, 0xe9, 0x6f, 0xa0, 0x52, + 0x0d, 0x66, 0x9a, 0x90, 0x1f, 0x49, 0xda, 0x61, + 0x21, 0xa7, 0x69, 0x85, 0x92, 0x66, 0x16, 0x59, + 0xd0, 0xc8, 0x42, 0x3e, 0x92, 0x35, 0xd6, 0xcc, + 0x33, 0x7d, 0xae, 0x97, 0x9e, 0x9b, 0x56, 0xfb, + 0xac, 0xf2, 0x91, 0x8e, 0xce, 0xd1, 0xd5, 0x94, + 0x87, 0xda, 0x15, 0xd6, 0xa4, 0x4f, 0xb5, 0x7b, + 0xda, 0x7a, 0xeb, 0x0e, 0xbb, 0xad, 0xfd, 0x9b, + 0x76, 0x4b, 0xf2, 0x78, 0x2f, 0xde, 0x55, 0xc0, + 0x8a, 0x8e, 0xef, 0x8c, 0xeb, 0xeb, 0xce, 0xd0, + 0xb6, 0xd0, 0xd8, 0xb5, 0x22, 0x52, 0x94, 0xc9, + 0x3a, 0xd6, 0x62, 0xbe, 0x91, 0xe7, 0x1d, 0xd4, + 0x21, 0x5a, 0xf5, 0xf4, 0x28, 0x3a, 0x35, 0x71, + 0x07, 0xb1, 0xd3, 0x03, 0xc2, 0x48, 0xfb, 0x3b, + 0x79, 0xb0, 0x8b, 0x9d, 0x46, 0x55, 0x5b, 0x77, + 0x86, 0x15, 0x72, 0xd3, 0xbf, 0x7e, 0x7e, 0x44, + 0xe8, 0x6a, 0x2f, 0xcb, 0x0e, 0xf4, 0x56, 0xc5, + 0x93, 0x5f, 0x1d, 0x75, 0x1d, 0x04, 0x3a, 0x5c, + 0x8f, 0x4a, 0xcc, 0x8d, 0x6e, 0xd5, 0x8e, 0xe1, + 0x0a, 0xdb, 0x57, 0x9c, 0x2b, 0xf6, 0x45, 0x67, + 0x53, 0x78, 0xe8, 0x8c, 0x6f, 0x47, 0xb6, 0xa9, + 0x02, 0xe9, 0xf9, 0x59, 0x7f, 0xe9, 0x6e, 0x1e, + 0x3d, 0x34, 0xbe, 0x74, 0x1e, 0x6e, 0xfe, 0xa9, + 0x7d, 0xcf, 0x88, 0x18, 0x11, 0x4f, 0x45, 0x21, + 0x4f, 0xaa, 0x3b, 0x79, 0xab, 0x7b, 0xaf, 0xbe, + 0x84, 0xcf, 0x1d, 0xff, 0x2c, 0xec, 0xcf, 0xdf, + 0x21, 0xc8, 0x2d, 0x97, 0x6c, 0xcd, 0x61, 0x36, + 0x22, 0x62, 0xb1, 0xa6, 0x9c, 0xf1, 0x46, 0x6c, + 0xaf, 0x73, 0x37, 0x8f, 0x20, 0x7c, 0xb5, 0x2b, + 0x52, 0x6d, 0x85, 0x8c, 0xcb, 0x8f, 0xfb, 0x3c, + 0x04, 0x8e, 0xdc, 0xc9, 0x35, 0x3c, 0x7d, 0xfe, + 0x19, 0xf7, 0x91, 0x22, 0x55, 0x76, 0x2b, 0x92, + 0xbd, 0xa8, 0xa2, 0x1f, 0x10, 0x67, 0x53, 0xfa, + 0x2a, 0xcd, 0x19, 0x38, 0x87, 0x21, 0x35, 0x40, + 0x8e, 0x8d, 0x5c, 0xaf, 0x0f, 0xf5, 0xf9, 0xa7, + 0x7a, 0xba, 0xa5, 0xe8, 0xc4, 0x44, 0xfc, 0x08, + 0x58, 0xd4, 0x92, 0xe4, 0xd2, 0x2b, 0x6c, 0xd7, + 0xb4, 0xf0, 0x6f, 0xe1, 0xcd, 0xa2, 0x79, 0xde, + 0x3d, 0x6f, 0x5c, 0x36, 0xae, 0xba, 0xd3, 0x46, + 0xd1, 0x98, 0x7e, 0x59, 0x7c, 0x19, 0x20, 0xe8, + 0x7c, 0xba, 0x3c, 0x65, 0xca, 0xb9, 0xda, 0x9b, + 0x68, 0x72, 0xf5, 0xc8, 0xf7, 0x95, 0x9f, 0x50, + 0x1e, 0x37, 0xa7, 0x90, 0x0d, 0x6d, 0x88, 0x4c, + 0x64, 0x58, 0x79, 0x49, 0xb7, 0x34, 0xac, 0xb7, + 0xa1, 0x68, 0xed, 0x13, 0xe9, 0x65, 0x47, 0xf9, + 0xd0, 0x5b, 0x63, 0xa7, 0x30, 0xe3, 0x60, 0x53, + 0xe8, 0x9a, 0xcd, 0xa6, 0x59, 0x91, 0x72, 0x3a, + 0x9e, 0x2f, 0xd4, 0x38, 0xee, 0x00, 0xc6, 0x45, + 0xa5, 0x05, 0xe7, 0x38, 0x17, 0xcd, 0xc5, 0x5b, + 0x37, 0xc4, 0xde, 0xbe, 0x46, 0x09, 0xde, 0x63, + 0xd8, 0x4d, 0x32, 0x2d, 0x07, 0x6b, 0x5d, 0x47, + 0x53, 0xb1, 0x5b, 0xf7, 0x9e, 0xc5, 0x7c, 0xf1, + 0xb8, 0xc8, 0x34, 0x7b, 0x71, 0x1b, 0xf2, 0x45, + 0x9e, 0x77, 0xd7, 0x11, 0x31, 0xc6, 0x79, 0x47, + 0x63, 0xee, 0x18, 0xe4, 0x2d, 0xd3, 0x9b, 0x99, + 0x9f, 0xd7, 0xf6, 0x50, 0xc3, 0x39, 0x20, 0x06, + 0xa4, 0x5a, 0x7b, 0xb3, 0x71, 0xbf, 0xf1, 0x20, + 0xff, 0xd5, 0xf1, 0x7d, 0xed, 0xab, 0xe3, 0xef, + 0xb5, 0x2f, 0xec, 0x8d, 0x56, 0x94, 0x05, 0xcd, + 0x0e, 0xca, 0x42, 0xf0, 0x51, 0x54, 0x63, 0x4e, + 0x4a, 0xfa, 0xe6, 0xf8, 0x94, 0x76, 0xea, 0x58, + 0xf4, 0x38, 0x08, 0x92, 0x51, 0x30, 0xb2, 0x26, + 0x46, 0x9b, 0x05, 0xd8, 0xb5, 0xc2, 0x26, 0xb1, + 0x47, 0xfd, 0xd1, 0xde, 0xef, 0x5e, 0xd6, 0xe7, + 0x6a, 0x2a, 0xe9, 0x43, 0x10, 0xb5, 0x21, 0x0e, + 0x11, 0xb5, 0x59, 0x3a, 0x95, 0x2d, 0x5f, 0xed, + 0x4d, 0x5a, 0x67, 0x58, 0x75, 0xf4, 0xfb, 0x2c, + 0xfc, 0x5e, 0xea, 0x41, 0xd0, 0xf9, 0x6e, 0x7e, + 0x27, 0x95, 0x31, 0x7d, 0x97, 0x13, 0xd4, 0xb4, + 0xa2, 0xf5, 0x06, 0x7b, 0xcc, 0x70, 0x06, 0xa6, + 0xf5, 0xb9, 0xdc, 0x16, 0x8d, 0xc9, 0x21, 0x77, + 0xa3, 0xbe, 0x54, 0xd7, 0x50, 0xf7, 0xc9, 0x94, + 0x5a, 0x23, 0xc6, 0xf3, 0x5c, 0x84, 0x62, 0x95, + 0x92, 0xd8, 0x65, 0x26, 0x3e, 0x94, 0x1f, 0x5a, + 0x0f, 0x0d, 0xbc, 0xfd, 0x49, 0xbe, 0x27, 0x47, + 0xe3, 0xd1, 0x78, 0x3c, 0x4c, 0x58, 0xd3, 0x95, + 0x31, 0x7b, 0xc7, 0x1e, 0xfd, 0x39, 0xf1, 0x73, + 0xe2, 0x4d, 0xda, 0xf9, 0xce, 0x1e, 0xb5, 0x47, + 0xad, 0x89, 0x83, 0x64, 0xeb, 0x23, 0xca, 0xd9, + 0x5f, 0xec, 0x20, 0xcf, 0x56, 0xb6, 0xe2, 0xd6, + 0x0f, 0x6e, 0x8c, 0x6a, 0x46, 0x53, 0xd6, 0xd7, + 0x96, 0xb8, 0x23, 0x09, 0x1d, 0x95, 0x75, 0x88, + 0x57, 0xc7, 0xcd, 0x73, 0xe6, 0xa4, 0xb1, 0x68, + 0x2c, 0xa0, 0x43, 0x99, 0x31, 0x44, 0xab, 0x8a, + 0x4c, 0x2a, 0x46, 0x37, 0x29, 0x7e, 0x0e, 0x48, + 0xa1, 0x1c, 0x76, 0xfc, 0x22, 0x42, 0x44, 0x9c, + 0x16, 0x15, 0x8a, 0x9f, 0x51, 0x4d, 0xe9, 0xa6, + 0x3c, 0x2d, 0x4f, 0x5b, 0x01, 0x23, 0x64, 0x70, + 0xfc, 0x64, 0x34, 0x9e, 0x89, 0xab, 0xf0, 0xa9, + 0x34, 0x61, 0xc1, 0x5d, 0x20, 0x95, 0xab, 0x69, + 0x73, 0xda, 0x5c, 0x85, 0x48, 0x74, 0x56, 0x99, + 0x53, 0xe6, 0x8c, 0xdb, 0xe6, 0x27, 0x62, 0xcf, + 0xbe, 0x4f, 0x3b, 0xc9, 0x78, 0x8e, 0xe2, 0x63, + 0x8a, 0x90, 0x73, 0xc4, 0xb7, 0xda, 0x71, 0xfd, + 0x88, 0x8b, 0x63, 0xab, 0x64, 0xeb, 0x9c, 0xfc, + 0x58, 0x0e, 0xba, 0x34, 0xac, 0xf4, 0x20, 0x7b, + 0xc1, 0x1e, 0x1a, 0x9b, 0xfa, 0x97, 0xce, 0x0e, + 0xaf, 0xc9, 0xc3, 0xbd, 0x5f, 0x8d, 0x97, 0xf5, + 0x62, 0xf3, 0xab, 0x9d, 0x44, 0xab, 0xc6, 0x12, + 0xb9, 0xe2, 0xdb, 0x99, 0x12, 0x32, 0x98, 0x8a, + 0x2d, 0xdf, 0x4f, 0x44, 0x14, 0xa4, 0x0a, 0xa9, + 0x35, 0x6e, 0x8e, 0xbe, 0x1c, 0x0b, 0xd3, 0xae, + 0x61, 0x4c, 0x18, 0x59, 0x25, 0x63, 0x7c, 0xfa, + 0x53, 0x47, 0x93, 0x6d, 0x65, 0xb8, 0xb5, 0x6e, + 0xcc, 0xbb, 0xca, 0xd1, 0xb0, 0x73, 0x66, 0x13, + 0xce, 0xbc, 0x31, 0xdd, 0x9e, 0xa6, 0x65, 0x05, + 0x22, 0xc9, 0x7a, 0xa6, 0x0e, 0x23, 0xba, 0x55, + 0x68, 0x65, 0x5a, 0x19, 0xbb, 0x70, 0x30, 0x2e, + 0x27, 0x72, 0x99, 0xd6, 0xa7, 0x62, 0x47, 0xbb, + 0x52, 0x46, 0x9e, 0x7b, 0x01, 0xf6, 0x21, 0x38, + 0x0e, 0x0a, 0x10, 0x8d, 0xd4, 0x3c, 0xa5, 0xd6, + 0x40, 0xb3, 0x28, 0x63, 0x47, 0x26, 0x44, 0xae, + 0x1f, 0xfd, 0xbe, 0x5a, 0x84, 0xe9, 0x55, 0x86, + 0x60, 0x5f, 0x38, 0x0f, 0xf1, 0x0f, 0x46, 0x42, + 0x67, 0x70, 0x27, 0xb5, 0xa6, 0x25, 0x3c, 0x57, + 0x29, 0xe1, 0x94, 0x1b, 0x57, 0xe2, 0x3a, 0x62, + 0xba, 0x8b, 0xce, 0x7d, 0xaa, 0x7d, 0xc2, 0xef, + 0xc6, 0x79, 0x73, 0x8d, 0xe2, 0xd8, 0xb0, 0x1b, + 0xad, 0x67, 0xeb, 0xcc, 0xc1, 0xcf, 0x54, 0xa0, + 0x4f, 0xa5, 0x5a, 0xf3, 0xb9, 0x6b, 0xa4, 0xc4, + 0x0b, 0xb3, 0xb6, 0x1d, 0x51, 0x76, 0xf5, 0x31, + 0x42, 0x19, 0xa7, 0x9d, 0x67, 0xdb, 0xa4, 0x13, + 0xea, 0x31, 0x23, 0x20, 0xbb, 0x6e, 0x3f, 0x57, + 0x36, 0xf4, 0xcf, 0x9d, 0x0d, 0x86, 0x9d, 0x98, + 0x0d, 0x9b, 0x35, 0x9e, 0x2b, 0xeb, 0xea, 0x1a, + 0xe7, 0x20, 0xe4, 0x8a, 0x87, 0xbc, 0x87, 0xc4, + 0x3f, 0x6d, 0xcd, 0xed, 0xc5, 0x85, 0x49, 0x42, + 0xa1, 0x72, 0x71, 0x33, 0xfb, 0x53, 0x0d, 0xf2, + 0xb1, 0x6c, 0xe5, 0xd3, 0x9f, 0xfa, 0xbb, 0xc3, + 0x7d, 0x8f, 0xe6, 0x3e, 0xfd, 0x15, 0x56, 0xb3, + 0xce, 0xde, 0xe0, 0xf7, 0x25, 0xd3, 0x87, 0xf8, + 0xda, 0xfd, 0xbe, 0x3c, 0x18, 0x23, 0xf1, 0xb9, + 0x83, 0x7a, 0xc4, 0x6a, 0x69, 0xfd, 0x8d, 0xcf, + 0x00, 0x0d, 0x74, 0x19, 0xa0, 0xee, 0x34, 0xc4, + 0xbd, 0xcb, 0x55, 0xff, 0xc0, 0x18, 0x1f, 0x11, + 0xf6, 0x0a, 0xa9, 0xf9, 0x89, 0x3d, 0x08, 0x36, + 0xac, 0x96, 0x4b, 0x5e, 0x95, 0x8c, 0x63, 0x12, + 0xe8, 0xdc, 0x37, 0x4f, 0xe5, 0xc6, 0xa5, 0xc7, + 0xe2, 0x07, 0x7a, 0xb9, 0xb8, 0x2f, 0xc0, 0x7f, + 0xa8, 0x18, 0x04, 0xe7, 0xb8, 0x8e, 0xea, 0x2a, + 0xa7, 0xeb, 0x43, 0x10, 0x4f, 0x2a, 0x3b, 0x5d, + 0x5e, 0x0c, 0x72, 0x79, 0xe3, 0xa5, 0xb1, 0x56, + 0xbc, 0x82, 0xbf, 0x21, 0x7b, 0x71, 0xcb, 0x63, + 0xdc, 0xcc, 0x40, 0xac, 0x31, 0x64, 0x20, 0x32, + 0xe1, 0xa2, 0x79, 0xdf, 0x82, 0xcf, 0x5f, 0x8e, + 0x97, 0x13, 0xd6, 0x54, 0x98, 0x63, 0xc6, 0x10, + 0x27, 0xc8, 0xb1, 0x82, 0x62, 0xbd, 0x5f, 0xef, + 0xab, 0x57, 0x7b, 0x36, 0xa2, 0xa7, 0xab, 0x78, + 0x4c, 0xeb, 0x85, 0x9d, 0x35, 0x72, 0xae, 0xe1, + 0xba, 0xfb, 0xbb, 0x70, 0xc5, 0x60, 0xc7, 0xcb, + 0x4d, 0x29, 0xcf, 0xb8, 0x22, 0xff, 0xbb, 0x98, + 0x9a, 0xef, 0xf4, 0xf7, 0x77, 0x11, 0x15, 0x82, + 0x7a, 0x6e, 0xe6, 0xb3, 0xce, 0xfb, 0x16, 0xf0, + 0x7d, 0xe1, 0x55, 0xf8, 0x81, 0xd9, 0x44, 0xa8, + 0x47, 0xcd, 0xbb, 0x92, 0xf2, 0xd7, 0x76, 0x19, + 0xfd, 0x47, 0x50, 0x5f, 0xa7, 0x49, 0xca, 0x04, + 0xf5, 0x51, 0x0f, 0xfb, 0x01, 0x71, 0x9d, 0x26, + 0x69, 0xba, 0xa9, 0x58, 0x19, 0x2b, 0x78, 0x10, + 0xb5, 0xe3, 0x6f, 0xe2, 0x6f, 0xb4, 0xfa, 0xb4, + 0xb9, 0x66, 0x96, 0xaa, 0x9d, 0x4e, 0x3a, 0xc4, + 0xfa, 0x59, 0xf8, 0xce, 0x93, 0xed, 0x45, 0x79, + 0xa3, 0x11, 0x6d, 0xc0, 0xf9, 0x20, 0xf5, 0x33, + 0xef, 0x5c, 0x99, 0x10, 0x5f, 0x62, 0x6e, 0x8f, + 0x2a, 0x90, 0x8a, 0xdc, 0x44, 0xac, 0xcb, 0xdd, + 0x30, 0xe7, 0xb6, 0x60, 0x14, 0x8b, 0x71, 0x68, + 0x01, 0xe2, 0xa0, 0x27, 0x8d, 0x59, 0xca, 0x87, + 0xb8, 0xeb, 0x87, 0xa8, 0x27, 0x95, 0x8a, 0x86, + 0x9f, 0x6a, 0x17, 0x46, 0xd3, 0xc4, 0xc1, 0x15, + 0xfb, 0xd2, 0x1b, 0x63, 0x2f, 0x82, 0x5e, 0x07, + 0x55, 0x9e, 0xf1, 0xc5, 0x1b, 0x7f, 0x85, 0x5c, + 0x4f, 0x6e, 0x2c, 0xfe, 0xb2, 0xd3, 0x48, 0x36, + 0xae, 0xfe, 0x72, 0x59, 0xf9, 0x48, 0xb9, 0xcf, + 0x73, 0x49, 0x6f, 0x2f, 0x93, 0x74, 0x88, 0x1c, + 0xca, 0x85, 0x52, 0x26, 0x0f, 0x19, 0xe0, 0x56, + 0xa1, 0xec, 0xd5, 0x28, 0x04, 0xd4, 0xb6, 0x22, + 0x0d, 0x41, 0x06, 0xf1, 0xbe, 0xb0, 0x2a, 0x60, + 0xa5, 0x13, 0xbb, 0x87, 0x77, 0x5d, 0x2f, 0x06, + 0x56, 0x5e, 0xb8, 0x21, 0x6d, 0x38, 0x17, 0x73, + 0x56, 0xcd, 0x87, 0x46, 0xcc, 0x80, 0xf3, 0x6c, + 0x24, 0xa8, 0x73, 0x21, 0x18, 0x79, 0x43, 0x30, + 0x6a, 0xff, 0xc4, 0x9f, 0x03, 0xff, 0xc4, 0xdf, + 0xf3, 0xff, 0x9c, 0x87, 0xa8, 0x62, 0x15, 0x22, + 0x48, 0xbc, 0xbe, 0x30, 0xbe, 0x61, 0x6e, 0x66, + 0xea, 0x45, 0x37, 0xb9, 0xf7, 0x5f, 0xc7, 0x27, + 0x34, 0x43, 0xe4, 0x79, 0x0b, 0x5d, 0x55, 0x06, + 0x6d, 0x31, 0xf7, 0xbd, 0x9b, 0x82, 0x75, 0x38, + 0xee, 0x8e, 0x59, 0x29, 0x79, 0x4e, 0x26, 0xbe, + 0x24, 0x39, 0x2e, 0xe0, 0x35, 0xf2, 0xef, 0x77, + 0x77, 0xb8, 0x1b, 0x2f, 0x77, 0x38, 0x4a, 0xb7, + 0x82, 0x95, 0xb3, 0xc6, 0x45, 0x16, 0xd5, 0xa2, + 0xc9, 0x5a, 0x0b, 0xae, 0x6e, 0x25, 0xa3, 0x65, + 0xd4, 0xb5, 0x78, 0x90, 0xa2, 0xcd, 0x84, 0x13, + 0x35, 0x76, 0x15, 0xd9, 0x91, 0x21, 0x1f, 0xb9, + 0x02, 0x71, 0x12, 0xb2, 0xfb, 0xa3, 0xaf, 0x12, + 0xf5, 0x64, 0x4f, 0x9f, 0x8e, 0xdc, 0x1b, 0xec, + 0xa9, 0x83, 0xa8, 0x33, 0xd5, 0x8a, 0xda, 0x35, + 0x2b, 0xb1, 0xfd, 0xe7, 0x3d, 0xae, 0x27, 0x33, + 0xe2, 0xa0, 0x06, 0xe8, 0x25, 0xe1, 0x4b, 0x67, + 0x94, 0x8d, 0xd1, 0x31, 0xe1, 0xd5, 0xbd, 0x7b, + 0xea, 0xa2, 0xdb, 0x63, 0xb0, 0x86, 0xc0, 0xe1, + 0xa6, 0x21, 0x6a, 0xe6, 0xcc, 0xb5, 0x2e, 0x57, + 0x2b, 0xc9, 0x94, 0x56, 0xed, 0x78, 0x4e, 0x9b, + 0xcb, 0x65, 0xad, 0xc5, 0xdc, 0xc5, 0x96, 0x22, + 0xf2, 0x57, 0x86, 0x99, 0xad, 0x86, 0xd4, 0xf1, + 0xe3, 0x73, 0x39, 0x62, 0x82, 0xc0, 0x9e, 0x12, + 0x7a, 0x12, 0xda, 0x3f, 0x9b, 0xea, 0xe7, 0x2c, + 0xc3, 0xfc, 0xab, 0xcb, 0xaf, 0xd2, 0x47, 0x70, + 0xbf, 0x37, 0xb5, 0x57, 0x21, 0x4e, 0xdc, 0xae, + 0xdb, 0xa9, 0x6f, 0xd4, 0x3f, 0x7c, 0x34, 0x4d, + 0xf9, 0x01, 0xf7, 0x0b, 0xfb, 0xc0, 0x55, 0x9c, + 0x70, 0x04, 0xbd, 0x51, 0x70, 0xbf, 0x3b, 0xb0, + 0x9f, 0x3f, 0xf6, 0xf6, 0xd2, 0x48, 0x65, 0x41, + 0xf7, 0x72, 0xab, 0x2a, 0xec, 0xbd, 0x16, 0x62, + 0xc1, 0x26, 0x0c, 0xad, 0xb5, 0xa0, 0x32, 0x21, + 0xd4, 0x84, 0x58, 0x49, 0xa2, 0x31, 0x59, 0xe7, + 0xec, 0x11, 0x8c, 0xd9, 0x93, 0xf6, 0x65, 0xe5, + 0xaa, 0x6b, 0x78, 0xb2, 0xd6, 0x7c, 0xd4, 0x65, + 0x74, 0xff, 0x86, 0x0e, 0xbe, 0xda, 0x4a, 0x0e, + 0xd9, 0xd3, 0x5e, 0xa5, 0x17, 0x3e, 0x89, 0x14, + 0xc0, 0x95, 0xbf, 0x07, 0xfb, 0x1e, 0x13, 0xb8, + 0xab, 0x38, 0x46, 0x6e, 0x51, 0x73, 0x8a, 0x22, + 0xb7, 0xe2, 0x91, 0x58, 0x8f, 0xbf, 0x1a, 0x3b, + 0x8a, 0xd7, 0xe3, 0x7b, 0x63, 0x7b, 0x55, 0x0f, + 0x7f, 0x55, 0x44, 0x0d, 0x09, 0x44, 0x12, 0xc1, + 0x0c, 0x1a, 0x93, 0xe5, 0x72, 0x6c, 0x4f, 0x49, + 0x2a, 0xe5, 0x4f, 0xeb, 0x7e, 0x0e, 0xab, 0x1e, + 0xad, 0x1a, 0x73, 0x77, 0xd5, 0x46, 0x71, 0x6b, + 0xee, 0xee, 0xac, 0xa1, 0x1e, 0xcd, 0x6f, 0xa9, + 0xa5, 0xbb, 0x4d, 0x9f, 0xeb, 0x51, 0xa4, 0x33, + 0x21, 0x9a, 0x13, 0xd5, 0x3f, 0x1f, 0x9d, 0xd6, + 0xc7, 0x3b, 0x73, 0x1f, 0xf1, 0x1b, 0x88, 0xd7, + 0x80, 0x79, 0x27, 0xcf, 0xca, 0x14, 0x23, 0xcb, + 0xfc, 0x76, 0x97, 0xba, 0x00, 0xd5, 0xea, 0x48, + 0x2b, 0x24, 0x5d, 0x5b, 0x99, 0x69, 0x64, 0x1a, + 0xd7, 0x5f, 0x2f, 0xda, 0x43, 0x10, 0x41, 0x0d, + 0x23, 0xde, 0x90, 0xd4, 0x84, 0x02, 0xb2, 0x60, + 0x89, 0xe8, 0x15, 0xac, 0x20, 0xb2, 0x5a, 0xdd, + 0xbb, 0x2d, 0x7e, 0x22, 0x88, 0x72, 0x4a, 0xfe, + 0x73, 0xdb, 0xbf, 0xbe, 0xfc, 0xf0, 0x7a, 0xbf, + 0xed, 0x5e, 0xbf, 0xd4, 0xb4, 0x3b, 0xab, 0x7c, + 0x75, 0xc2, 0x59, 0x9c, 0xc7, 0x4b, 0xbe, 0xd3, + 0x50, 0x84, 0xd4, 0xee, 0x2a, 0x42, 0xcc, 0xf1, + 0x2b, 0x6e, 0x4b, 0xc2, 0x2d, 0xd7, 0xaf, 0xf4, + 0xee, 0x34, 0x22, 0xf2, 0xa4, 0x73, 0x49, 0x24, + 0x7e, 0x68, 0xc3, 0xb0, 0x22, 0x2b, 0x63, 0x84, + 0x08, 0x25, 0x9f, 0x38, 0xf4, 0xf5, 0x50, 0xb8, + 0x52, 0xd0, 0x73, 0x67, 0x5d, 0x39, 0xa3, 0x24, + 0x94, 0x69, 0xee, 0x81, 0x92, 0x8a, 0xbd, 0x8b, + 0xb2, 0x08, 0xec, 0x61, 0xdc, 0x81, 0xfb, 0x3b, + 0x87, 0xb5, 0x42, 0xb9, 0xd1, 0x9c, 0x4a, 0x1e, + 0x91, 0x58, 0xaf, 0xf3, 0x9c, 0x58, 0xd1, 0xa1, + 0x12, 0x62, 0xba, 0x25, 0x86, 0x7c, 0xb0, 0x75, + 0x8f, 0x1b, 0xce, 0xfd, 0xa4, 0x4f, 0x66, 0xb1, + 0x1e, 0x3a, 0x1a, 0x2b, 0x90, 0xad, 0x1f, 0x5f, + 0x07, 0xed, 0x7c, 0x2b, 0xf0, 0x6a, 0x05, 0xa2, + 0x8d, 0xd5, 0x5f, 0x35, 0x65, 0xa1, 0xb5, 0x92, + 0x5b, 0x6c, 0x76, 0x59, 0xf6, 0x31, 0xf2, 0xdd, + 0x90, 0x9b, 0x11, 0x16, 0xcb, 0x25, 0x3a, 0x5c, + 0x4b, 0xc8, 0x93, 0x64, 0x51, 0x29, 0xda, 0x0b, + 0xec, 0x82, 0xbc, 0xf2, 0x72, 0x5e, 0xcd, 0x4a, + 0x70, 0x93, 0xb3, 0xca, 0x45, 0x91, 0x6b, 0x77, + 0xf8, 0xca, 0x96, 0xf0, 0x7d, 0x05, 0xec, 0xb6, + 0x7e, 0xe9, 0xde, 0xa3, 0x5e, 0x1b, 0xe9, 0x04, + 0x22, 0x02, 0x4b, 0x0a, 0x99, 0x01, 0xeb, 0xc5, + 0xef, 0xf8, 0x1f, 0xc9, 0x42, 0x57, 0xf7, 0x52, + 0x10, 0xb8, 0xb7, 0x0f, 0x79, 0xbd, 0x31, 0x62, + 0x71, 0x4a, 0xb5, 0xdc, 0xf8, 0x61, 0xcd, 0xf8, + 0x77, 0xa3, 0x86, 0x5c, 0x3e, 0x64, 0x9a, 0x56, + 0xc6, 0x8d, 0x2b, 0xd5, 0x07, 0x6f, 0x2f, 0x79, + 0x28, 0x47, 0xbf, 0x26, 0x2b, 0x78, 0xd5, 0x95, + 0x6e, 0x4f, 0xb3, 0x3f, 0xd3, 0x44, 0x17, 0x88, + 0x54, 0xe3, 0x89, 0x2e, 0x2a, 0x83, 0x32, 0xf7, + 0xc8, 0x40, 0x27, 0x8b, 0x9a, 0x26, 0xd8, 0xf9, + 0x03, 0x72, 0xb3, 0xf0, 0xd0, 0xfe, 0x1c, 0xcf, + 0x2f, 0xd6, 0x93, 0xf5, 0xbf, 0xd4, 0xe3, 0xce, + 0xb8, 0xf4, 0x37, 0x29, 0x6c, 0xc6, 0xd9, 0x13, + 0x86, 0x3e, 0x09, 0x4f, 0x50, 0xb1, 0x80, 0xb2, + 0x72, 0xd4, 0x47, 0xc6, 0x15, 0x1c, 0xd9, 0x96, + 0x70, 0xb0, 0xe5, 0x2a, 0xac, 0xe6, 0xad, 0x92, + 0x79, 0x3b, 0xd9, 0x83, 0x91, 0x93, 0x65, 0x01, + 0x95, 0xa2, 0x7c, 0xe6, 0x94, 0xc7, 0xa4, 0xf6, + 0x59, 0x60, 0x8e, 0xa6, 0x63, 0xf7, 0xe1, 0x6f, + 0xdb, 0x43, 0xaf, 0x62, 0x49, 0xac, 0x44, 0x20, + 0x37, 0x3c, 0xa8, 0x84, 0x95, 0x15, 0x45, 0x3a, + 0x90, 0xec, 0xdd, 0x7d, 0x69, 0xff, 0x9c, 0x36, + 0xb1, 0x9d, 0xcd, 0x31, 0x2c, 0xd5, 0x37, 0x87, + 0x85, 0xdf, 0xab, 0x6d, 0xf6, 0xea, 0x6e, 0x61, + 0xfd, 0x2a, 0xe1, 0x22, 0xba, 0x7f, 0x07, 0x46, + 0x09, 0xd6, 0x74, 0x17, 0x9d, 0x73, 0x6c, 0x9c, + 0x8d, 0x38, 0x15, 0xee, 0x0a, 0xd1, 0x8e, 0xd7, + 0xa3, 0xf5, 0x8c, 0xfb, 0x88, 0x7c, 0xfe, 0x42, + 0x90, 0x71, 0xa4, 0x8c, 0x24, 0x3b, 0xbb, 0xf7, + 0x54, 0xec, 0xbe, 0x32, 0x22, 0xa9, 0xb1, 0xef, + 0xb5, 0x74, 0x80, 0x6a, 0x9c, 0xe8, 0xe4, 0x47, + 0xda, 0x68, 0x58, 0x81, 0xd4, 0xbd, 0x3c, 0x45, + 0x2d, 0x28, 0x59, 0x27, 0xac, 0x0c, 0x41, 0xae, + 0xf8, 0xad, 0xe7, 0x72, 0x22, 0x39, 0x53, 0xda, + 0xac, 0xbb, 0xbb, 0x9d, 0xad, 0x14, 0xde, 0x2c, + 0xe6, 0x0b, 0x8e, 0x68, 0x5e, 0x47, 0x4e, 0xa5, + 0xa3, 0x9b, 0xd4, 0xb5, 0x6e, 0xf2, 0x7a, 0xd0, + 0x48, 0xd3, 0x77, 0xac, 0x26, 0xad, 0x1b, 0xcf, + 0x45, 0x9d, 0x34, 0xf7, 0x8e, 0x22, 0xd2, 0xb8, + 0x74, 0xd5, 0xba, 0x6a, 0x7c, 0xfc, 0xe4, 0xa1, + 0xf8, 0x90, 0xdc, 0x84, 0x23, 0xe4, 0x98, 0x19, + 0x3b, 0x46, 0xc7, 0x4c, 0xac, 0xca, 0x6e, 0x34, + 0xb2, 0x47, 0x18, 0xb5, 0x4d, 0xfc, 0x23, 0xfb, + 0x2b, 0xd7, 0x15, 0x97, 0x73, 0xc3, 0xcd, 0x21, + 0x61, 0x4d, 0x98, 0x71, 0x32, 0x4a, 0x50, 0x41, + 0xbc, 0xaa, 0x22, 0x64, 0x94, 0x35, 0xb9, 0x04, + 0x89, 0x0e, 0xf1, 0x61, 0xdd, 0x09, 0xf9, 0x4e, + 0x23, 0x5b, 0x2d, 0xb6, 0x06, 0xaa, 0xe8, 0x1c, + 0x8d, 0xd7, 0x6a, 0x2d, 0x57, 0x62, 0xeb, 0x98, + 0x6b, 0x50, 0x97, 0xe6, 0xeb, 0xbb, 0xe1, 0x66, + 0xf1, 0x77, 0xeb, 0x75, 0xb0, 0x22, 0x4a, 0x5f, + 0xb5, 0x43, 0xb9, 0x8f, 0x5b, 0x35, 0xce, 0x3f, + 0xeb, 0xe5, 0x2d, 0xc2, 0xd9, 0xb8, 0xa0, 0x68, + 0xba, 0xe6, 0x70, 0xa5, 0x64, 0x88, 0x83, 0xcd, + 0x09, 0x47, 0x34, 0x92, 0x84, 0x15, 0xe7, 0x19, + 0x58, 0x51, 0xd7, 0x77, 0x30, 0xb6, 0x5e, 0x44, + 0xe4, 0x4a, 0x2e, 0xab, 0xd4, 0x8c, 0x5b, 0x84, + 0xbf, 0xca, 0x40, 0xee, 0x18, 0xaf, 0xd7, 0xea, + 0xf1, 0x36, 0xec, 0xad, 0x87, 0xb5, 0x83, 0xf8, + 0x01, 0xfc, 0x7c, 0xa9, 0xfe, 0x6b, 0x3e, 0x5c, + 0x12, 0xfd, 0x5a, 0x2e, 0x7a, 0xae, 0x43, 0x1c, + 0x5b, 0x1e, 0x97, 0x1f, 0x4b, 0x01, 0xb1, 0x47, + 0x99, 0x56, 0xe6, 0x6a, 0xee, 0x90, 0xbd, 0xca, + 0x0b, 0x32, 0xf3, 0x7d, 0xdd, 0x7d, 0x25, 0x40, + 0x8c, 0x54, 0x20, 0x82, 0xa9, 0xb5, 0xa3, 0x02, + 0x67, 0xf7, 0xa5, 0xf4, 0xbf, 0xba, 0x5d, 0x6e, + 0x5a, 0x2f, 0x62, 0x17, 0x56, 0x09, 0xe4, 0x06, + 0xe8, 0xa8, 0x9f, 0x5d, 0xee, 0x28, 0xf1, 0x46, + 0xda, 0x3b, 0xa4, 0x6f, 0x32, 0xef, 0xfe, 0x50, + 0xba, 0xe3, 0x9c, 0x85, 0x11, 0x9b, 0xa9, 0xe8, + 0xba, 0xf0, 0x81, 0x0b, 0x42, 0xef, 0xba, 0xc9, + 0x3f, 0xf3, 0x7f, 0xff, 0x68, 0x47, 0x35, 0xb1, + 0x2e, 0xa2, 0x07, 0x8f, 0x99, 0x34, 0x35, 0x5e, + 0x19, 0x23, 0x87, 0x14, 0x1e, 0x7d, 0xe1, 0x18, + 0x88, 0xca, 0x31, 0x77, 0x54, 0x9e, 0xc0, 0x98, + 0xd0, 0xc8, 0xc8, 0x19, 0xf2, 0xe5, 0xf1, 0x1d, + 0x8b, 0x56, 0x1a, 0x97, 0x95, 0xcb, 0xee, 0x03, + 0x35, 0xa1, 0x8e, 0xab, 0x11, 0x35, 0xb2, 0xc2, + 0xf7, 0x32, 0xdf, 0xab, 0x91, 0xff, 0x44, 0x76, + 0x12, 0xe5, 0x0b, 0xe8, 0x74, 0x00, 0x67, 0x72, + 0x88, 0xf7, 0xc2, 0xf5, 0x2c, 0xef, 0x78, 0xa3, + 0x63, 0x89, 0x32, 0x05, 0x31, 0xd2, 0x8c, 0xf9, + 0x19, 0x8e, 0xf6, 0x72, 0x38, 0x77, 0x91, 0xd1, + 0x0e, 0xf3, 0xcf, 0x11, 0x8e, 0x30, 0xf2, 0xfc, + 0xea, 0xb1, 0x1b, 0xce, 0x95, 0xc3, 0x33, 0x98, + 0x23, 0x34, 0xfa, 0xbd, 0x68, 0xa8, 0xda, 0x23, + 0x49, 0x95, 0x11, 0xb3, 0x84, 0x3d, 0x11, 0x61, + 0xc0, 0x91, 0x73, 0xf8, 0x09, 0xbb, 0x7e, 0xb8, + 0xbe, 0xbe, 0x93, 0xca, 0x70, 0x46, 0x61, 0x34, + 0x7d, 0x02, 0x9f, 0xe3, 0xd7, 0xaf, 0xe0, 0x86, + 0x75, 0xcd, 0x9c, 0x65, 0x58, 0xbe, 0x53, 0x36, + 0x3f, 0x17, 0x70, 0x1e, 0xac, 0x09, 0x38, 0x0b, + 0xd1, 0x83, 0x65, 0x67, 0xa1, 0xb5, 0x61, 0x87, + 0xd8, 0x90, 0xe6, 0xe5, 0xec, 0xed, 0xb4, 0x3b, + 0xa6, 0x45, 0x8e, 0x4e, 0x6a, 0x38, 0x07, 0x4f, + 0xe0, 0x73, 0xfc, 0x5d, 0xac, 0x27, 0xa2, 0x90, + 0xf2, 0xd6, 0x80, 0xbb, 0x6b, 0x07, 0xec, 0xd5, + 0x83, 0x01, 0x37, 0xcf, 0x1d, 0xab, 0x1d, 0xdf, + 0xb1, 0x9a, 0x7b, 0x52, 0x3f, 0x3e, 0xc1, 0xa7, + 0x0b, 0xea, 0xe1, 0x5c, 0x85, 0xca, 0xa6, 0xab, + 0x8e, 0x1a, 0x57, 0xe3, 0xb0, 0xe2, 0xa1, 0x4f, + 0x50, 0x65, 0x16, 0xee, 0xc7, 0xbf, 0x4b, 0x78, + 0x73, 0x10, 0x77, 0xd6, 0x62, 0x83, 0xd4, 0xd4, + 0xdb, 0xa2, 0x16, 0x57, 0xc7, 0xf6, 0x21, 0xff, + 0x53, 0x96, 0x14, 0xbf, 0x7b, 0xd8, 0x61, 0x34, + 0x7b, 0xfa, 0x11, 0x7d, 0xfa, 0x66, 0xd4, 0xe1, + 0x5e, 0x90, 0x16, 0xdc, 0x8f, 0xa5, 0x45, 0x86, + 0x08, 0x75, 0xdc, 0x0d, 0xaf, 0x79, 0x68, 0x07, + 0x8a, 0x41, 0x5c, 0x18, 0xcb, 0xed, 0xcb, 0xc6, + 0x3d, 0x23, 0x8d, 0x59, 0x96, 0x31, 0xe6, 0xc6, + 0x3d, 0x8d, 0x05, 0xdf, 0xdd, 0x69, 0x14, 0x5d, + 0x6f, 0xdd, 0x09, 0xfb, 0x99, 0x8d, 0x55, 0x16, + 0xbf, 0x5b, 0xda, 0x45, 0x1d, 0xe0, 0x79, 0x19, + 0x6b, 0x42, 0xfe, 0xa3, 0xc0, 0x67, 0x7b, 0x59, + 0x25, 0xd4, 0x01, 0xef, 0xe1, 0x66, 0xe1, 0xda, + 0x0e, 0x35, 0x90, 0xcf, 0x37, 0xe2, 0x44, 0x1b, + 0x7f, 0x6b, 0x9c, 0x71, 0x93, 0xc4, 0xd5, 0xe2, + 0x78, 0x14, 0xe4, 0xb6, 0x14, 0x8f, 0x33, 0xda, + 0x57, 0xdc, 0x9d, 0x87, 0x8e, 0x68, 0x47, 0x01, + 0x58, 0xa6, 0xe7, 0x6f, 0xd0, 0x2b, 0xa0, 0x56, + 0xb8, 0xef, 0x48, 0x8e, 0x78, 0xfe, 0x1a, 0x8c, + 0x8c, 0xa8, 0x11, 0x2f, 0xd7, 0x0c, 0x81, 0x41, + 0x5c, 0x5f, 0xca, 0x3c, 0x81, 0xb8, 0x9e, 0xe3, + 0xf9, 0xe1, 0x9a, 0x17, 0x64, 0x58, 0x49, 0xe5, + 0x1a, 0xe2, 0xdb, 0x0c, 0x18, 0x95, 0xe8, 0xd6, + 0x20, 0x57, 0x08, 0x89, 0x4a, 0x5d, 0x90, 0x15, + 0x88, 0x9b, 0xd9, 0xa4, 0x73, 0x75, 0xeb, 0xea, + 0xd6, 0xc7, 0xce, 0x83, 0xff, 0xbc, 0xff, 0x28, + 0xbe, 0x33, 0xb6, 0x97, 0xf4, 0x39, 0x9e, 0x87, + 0xe9, 0x8e, 0x0e, 0x19, 0xdc, 0xcb, 0x91, 0xcd, + 0xe9, 0x7f, 0x5d, 0x58, 0xd2, 0xc5, 0x7e, 0x8f, + 0xf5, 0x1e, 0x15, 0xb3, 0x7c, 0xed, 0x88, 0xe7, + 0x29, 0xde, 0xda, 0x5e, 0xcd, 0xb4, 0x66, 0x8c, + 0x42, 0x4e, 0x6a, 0x2d, 0xbb, 0x1e, 0x4e, 0x55, + 0xf0, 0x1d, 0x9c, 0x65, 0x86, 0x88, 0x48, 0x83, + 0xd7, 0x8f, 0xbc, 0x79, 0x44, 0xef, 0x2b, 0xd5, + 0xe0, 0x4c, 0x72, 0xc5, 0x5b, 0x81, 0xd5, 0xd8, + 0x3a, 0x1d, 0xeb, 0x52, 0x4d, 0xba, 0x99, 0xe4, + 0x57, 0x61, 0xda, 0xbd, 0xd3, 0x3e, 0x23, 0x7b, + 0x3c, 0x4f, 0x44, 0xb6, 0x91, 0xbe, 0xf7, 0x54, + 0xd8, 0xeb, 0x88, 0xa1, 0x7a, 0x83, 0xfc, 0x10, + 0xd5, 0x0c, 0x9c, 0x2f, 0xd8, 0x7f, 0xf8, 0xf8, + 0x4c, 0xcf, 0x45, 0x9d, 0x54, 0x12, 0x73, 0xc8, + 0xfa, 0x9f, 0xf5, 0xea, 0x2e, 0x70, 0x98, 0x7f, + 0x10, 0xbb, 0xcf, 0x45, 0x7d, 0x25, 0xdc, 0x45, + 0xd1, 0x89, 0xb5, 0xcb, 0x3b, 0x16, 0x30, 0xe3, + 0x75, 0x67, 0x9d, 0x82, 0xa9, 0x3a, 0xa8, 0xe1, + 0xa6, 0xea, 0xaa, 0x33, 0x6f, 0xc0, 0xde, 0x7d, + 0xf8, 0x79, 0x98, 0x7f, 0xaa, 0x98, 0x8b, 0xcf, + 0x1d, 0x6e, 0xc7, 0xe4, 0x73, 0xed, 0x4b, 0xf5, + 0x7b, 0xde, 0xa7, 0x1a, 0x0d, 0xf7, 0xf6, 0x43, + 0x23, 0xc2, 0x82, 0x7b, 0x47, 0x4e, 0x90, 0x67, + 0x6e, 0xac, 0x21, 0x1f, 0x8d, 0x41, 0xb4, 0x19, + 0xb5, 0x87, 0xe0, 0xb6, 0x66, 0xcf, 0xbc, 0xce, + 0x48, 0x03, 0xb8, 0x8a, 0xbe, 0x46, 0xbc, 0x82, + 0x6a, 0x97, 0x6c, 0xdc, 0x53, 0x08, 0xc5, 0xd6, + 0x86, 0x78, 0xd2, 0x2a, 0x62, 0xd5, 0x96, 0x10, + 0x6d, 0xe4, 0xdd, 0x72, 0xa0, 0xd4, 0xfd, 0xae, + 0x87, 0xa7, 0xb9, 0xa7, 0x87, 0xeb, 0xd5, 0x06, + 0xa2, 0x6f, 0x42, 0x2b, 0x23, 0x6f, 0xf0, 0x4c, + 0x7a, 0x3e, 0x26, 0xda, 0xb4, 0x36, 0xef, 0x9c, + 0x82, 0x68, 0x0f, 0x66, 0xbf, 0x3a, 0xad, 0x66, + 0x56, 0xd6, 0x94, 0x92, 0xe2, 0x7b, 0x91, 0xf0, + 0x55, 0x28, 0x57, 0xbf, 0x27, 0x70, 0xfd, 0xe7, + 0x68, 0x35, 0x4d, 0x68, 0x43, 0xd4, 0x60, 0x87, + 0x1b, 0xf9, 0x2c, 0xdf, 0xb5, 0x43, 0xda, 0x19, + 0xed, 0x07, 0x52, 0x2f, 0x08, 0xf1, 0xae, 0x16, + 0xfc, 0x3e, 0xc5, 0x54, 0x73, 0xd7, 0x5d, 0x34, + 0x0b, 0x2d, 0x74, 0x62, 0x86, 0xfd, 0xd7, 0x44, + 0x4d, 0x03, 0xfd, 0x15, 0xaf, 0x03, 0x4b, 0x3a, + 0xb1, 0x2f, 0xe5, 0xe2, 0xf1, 0x9a, 0x1a, 0x54, + 0x50, 0xf7, 0x06, 0x7b, 0x12, 0x72, 0xd3, 0xf7, + 0xc4, 0xc4, 0x7a, 0xca, 0x06, 0xbc, 0xf2, 0xba, + 0xb6, 0xce, 0x36, 0xd8, 0x0e, 0x13, 0xfe, 0xbf, + 0xb6, 0xae, 0x1e, 0xac, 0x8d, 0x33, 0x5b, 0x8f, + 0x60, 0x80, 0x91, 0x2c, 0xe3, 0xd1, 0x0f, 0x48, + 0xfc, 0x18, 0x06, 0x31, 0x02, 0x49, 0x60, 0x23, + 0x3b, 0x60, 0x63, 0x07, 0xa3, 0x31, 0x96, 0x93, + 0xe1, 0x27, 0xeb, 0x09, 0x16, 0x6b, 0xf6, 0x26, + 0x79, 0x2c, 0xe7, 0x92, 0x1b, 0x76, 0xb7, 0x58, + 0x25, 0x9b, 0xfb, 0x44, 0x4e, 0x64, 0xa4, 0xc2, + 0xc5, 0x14, 0x5b, 0x4c, 0xe1, 0xc2, 0x45, 0x0a, + 0x15, 0x14, 0x53, 0xa4, 0xa0, 0xb8, 0x85, 0x8b, + 0x2d, 0x54, 0xa4, 0x50, 0xb1, 0x05, 0xc5, 0x16, + 0x2e, 0x6e, 0x41, 0xe1, 0x82, 0xe2, 0x16, 0x53, + 0xb8, 0x98, 0x62, 0x8a, 0x7b, 0xce, 0xf9, 0x66, + 0x46, 0x12, 0xce, 0x33, 0xcf, 0x60, 0x6c, 0x59, + 0xd2, 0x48, 0xf3, 0x7d, 0xe7, 0xf7, 0x3d, 0xef, + 0xab, 0x07, 0x18, 0xc6, 0x46, 0xe9, 0xb7, 0x9f, + 0x23, 0x47, 0x2b, 0xb2, 0x94, 0x09, 0xec, 0xfc, + 0x09, 0xbe, 0x97, 0x80, 0x38, 0x4c, 0xd9, 0x71, + 0xcc, 0x8e, 0x68, 0x18, 0xe9, 0x30, 0x7f, 0x33, + 0x2a, 0xe0, 0xec, 0x43, 0xbf, 0xdd, 0x4f, 0x5a, + 0xc9, 0x84, 0xbc, 0x85, 0x7d, 0xbb, 0x22, 0x32, + 0xed, 0xc1, 0xa8, 0xc7, 0x6a, 0x9b, 0x27, 0x2e, + 0xa9, 0x33, 0x91, 0x22, 0x60, 0xb2, 0xfc, 0xf6, + 0xe4, 0xab, 0x0a, 0x2a, 0x68, 0x92, 0x1f, 0x58, + 0x2e, 0xfb, 0xb8, 0x82, 0xf2, 0xf8, 0x49, 0x36, + 0xa3, 0xca, 0x88, 0x48, 0x0a, 0x36, 0xa3, 0x5d, + 0xf9, 0x51, 0xdd, 0x19, 0x2c, 0x4f, 0x1a, 0x7f, + 0x73, 0x92, 0x8d, 0xa5, 0x33, 0xa1, 0x01, 0x99, + 0x56, 0x37, 0x9b, 0xd0, 0xd9, 0x96, 0x94, 0x6b, + 0x2e, 0xc2, 0x77, 0x5f, 0x17, 0x83, 0xf6, 0x54, + 0x09, 0x19, 0x73, 0xd1, 0x57, 0x06, 0xc5, 0x50, + 0x19, 0x33, 0xbe, 0x82, 0x4d, 0xfd, 0x77, 0xbf, + 0x5f, 0xc9, 0x18, 0xec, 0x18, 0xc7, 0xbe, 0x80, + 0x6c, 0x6e, 0xcd, 0xef, 0x9b, 0x71, 0xe3, 0x32, + 0x5c, 0xd5, 0x51, 0xc9, 0x45, 0xb0, 0x1b, 0x9b, + 0xf4, 0xdc, 0xce, 0xbc, 0xd5, 0x8b, 0x1f, 0xae, + 0xae, 0x22, 0x4a, 0x13, 0xf1, 0x79, 0xf8, 0x6d, + 0x26, 0x5b, 0x1d, 0x2d, 0x7b, 0xbc, 0x76, 0x66, + 0xfb, 0xbb, 0x2d, 0x30, 0x8b, 0x7b, 0xd8, 0xf9, + 0xf4, 0x1c, 0xb1, 0xcf, 0xec, 0x7c, 0xda, 0x56, + 0xf6, 0x3b, 0xd3, 0x76, 0xbf, 0x83, 0xb0, 0x83, + 0xab, 0x0a, 0x51, 0xa5, 0x16, 0xe7, 0x2c, 0x6f, + 0x48, 0x9f, 0x53, 0x2d, 0x3e, 0xe2, 0xeb, 0x41, + 0xc1, 0x53, 0xcf, 0xae, 0x90, 0x45, 0xbb, 0x62, + 0x7b, 0x3c, 0x4a, 0x3d, 0x53, 0x7e, 0xc8, 0x05, + 0xc7, 0x43, 0xa6, 0xf0, 0x8f, 0xa8, 0x06, 0xbf, + 0x69, 0xa3, 0xda, 0x84, 0x73, 0x00, 0xeb, 0x37, + 0x08, 0xdf, 0x34, 0xae, 0xd8, 0x4d, 0x25, 0x57, + 0xab, 0xb7, 0xbf, 0xca, 0x7f, 0x91, 0xff, 0x6b, + 0x1b, 0xd1, 0x84, 0x3d, 0x13, 0xcd, 0xf4, 0x79, + 0xbd, 0x19, 0x85, 0x5e, 0xf6, 0x18, 0x7c, 0x6e, + 0x4e, 0x99, 0xc4, 0xe7, 0x66, 0xbe, 0xc8, 0xff, + 0xb9, 0xbd, 0x5d, 0xf4, 0x22, 0x53, 0xc1, 0x55, + 0xd9, 0x66, 0xb3, 0xff, 0x41, 0x7b, 0x4c, 0xbd, + 0xaa, 0x4e, 0x1c, 0x2e, 0xbc, 0xce, 0xbe, 0xa6, + 0x4e, 0x1c, 0x31, 0xe2, 0x7a, 0xfa, 0x29, 0xf8, + 0xff, 0x99, 0xbe, 0x74, 0xbc, 0xec, 0xb1, 0x31, + 0x77, 0xec, 0xd5, 0x67, 0x4a, 0xb6, 0x96, 0x6b, + 0x83, 0xbd, 0xc9, 0xc0, 0xf5, 0x89, 0x7f, 0xcd, + 0x6f, 0xaa, 0xdb, 0x2f, 0x7b, 0xbf, 0xc9, 0xfb, + 0xc2, 0x7d, 0xe1, 0xe9, 0xf9, 0x03, 0xe1, 0xa1, + 0xf0, 0x27, 0xe1, 0x01, 0x21, 0xc9, 0x03, 0xd2, + 0x3d, 0x39, 0x9d, 0xc9, 0x5a, 0x59, 0xe9, 0x86, + 0x9c, 0x7d, 0x37, 0xff, 0x25, 0xe4, 0x50, 0x36, + 0xea, 0xdd, 0xce, 0x53, 0x86, 0xdb, 0xfd, 0x69, + 0xfa, 0x1b, 0x1f, 0xaa, 0x24, 0xb0, 0xec, 0xa9, + 0xb7, 0x83, 0xeb, 0x7d, 0x93, 0x02, 0xa2, 0xe2, + 0x1c, 0x42, 0x37, 0x9b, 0xbb, 0xb5, 0xa8, 0x98, + 0x30, 0x46, 0x1d, 0x88, 0x57, 0x8c, 0x18, 0xf8, + 0x6f, 0xec, 0xe1, 0x4e, 0x49, 0x31, 0x67, 0x4a, + 0x17, 0xb5, 0x82, 0x73, 0x53, 0x7a, 0xea, 0x44, + 0xa5, 0x80, 0xd4, 0xc5, 0x5a, 0xcc, 0x62, 0x7e, + 0x71, 0xc1, 0xc8, 0x39, 0x21, 0x73, 0xe2, 0x24, + 0x57, 0xdb, 0x86, 0x67, 0x8f, 0x42, 0x64, 0xb2, + 0x41, 0xcf, 0x85, 0x58, 0x05, 0x6c, 0x99, 0x60, + 0xb3, 0xca, 0x3f, 0xeb, 0x89, 0x20, 0xb3, 0x0f, + 0x63, 0x31, 0xc2, 0x1e, 0x07, 0x1e, 0x05, 0x36, + 0x31, 0x81, 0x55, 0x7f, 0x15, 0x67, 0xff, 0x3f, + 0x41, 0x65, 0x52, 0x09, 0x62, 0xcb, 0xda, 0x26, + 0xdc, 0xc1, 0xbf, 0x9e, 0x3e, 0xfa, 0xbf, 0x0b, + 0xd8, 0x68, 0xd7, 0x2f, 0x30, 0x3d, 0x1f, 0x0e, + 0x31, 0x2b, 0xc8, 0x57, 0x9e, 0x4f, 0x2d, 0x4b, + 0xff, 0x7a, 0xe0, 0xf7, 0x44, 0x64, 0xe3, 0xa9, + 0x85, 0x33, 0x2d, 0x71, 0x8d, 0xaa, 0x6b, 0x67, + 0xb1, 0x97, 0x93, 0x54, 0xc1, 0xa0, 0x15, 0x45, + 0x0c, 0x17, 0x1f, 0x59, 0xbb, 0x88, 0x69, 0x34, + 0x47, 0x21, 0xbb, 0xc3, 0xcf, 0x1f, 0x4d, 0x76, + 0x18, 0xbd, 0xa8, 0xf6, 0xf9, 0xdb, 0x16, 0xdf, + 0x0f, 0xdf, 0xd3, 0x78, 0xc3, 0xeb, 0xe2, 0x79, + 0x2b, 0x11, 0xe7, 0x92, 0x04, 0xb7, 0x57, 0xe6, + 0xf2, 0x22, 0x4a, 0x2c, 0xb3, 0x96, 0xa9, 0xfa, + 0xda, 0x51, 0xb1, 0x82, 0x0c, 0xca, 0xde, 0x54, + 0x83, 0xfb, 0x0c, 0x15, 0x56, 0x06, 0x5b, 0x87, + 0xea, 0x73, 0x69, 0xee, 0x67, 0x27, 0x52, 0xfa, + 0xc2, 0x79, 0x52, 0xda, 0x2b, 0x7d, 0x5e, 0x8a, + 0xd0, 0x3e, 0x62, 0x0c, 0xa3, 0xa8, 0x5f, 0x59, + 0xd1, 0xb1, 0xc2, 0x12, 0x15, 0xe2, 0xf9, 0x4e, + 0x3f, 0x74, 0xd6, 0x41, 0x64, 0x4c, 0xbf, 0xd5, + 0x2f, 0x7e, 0x6f, 0x44, 0xcb, 0xb0, 0x47, 0x4e, + 0x13, 0x1d, 0xce, 0x5b, 0x5f, 0x1d, 0xb8, 0xdf, + 0xfe, 0x9e, 0x3e, 0x51, 0x82, 0x74, 0xae, 0xe6, + 0x92, 0xac, 0x57, 0x8e, 0x3c, 0x79, 0x8c, 0xeb, + 0x7e, 0x97, 0xb2, 0x79, 0xec, 0x7a, 0x40, 0x1e, + 0x4c, 0xf6, 0x0a, 0x3f, 0xcd, 0x94, 0x82, 0x78, + 0x4e, 0xc6, 0xbe, 0xb2, 0xa8, 0x87, 0xf5, 0x11, + 0x61, 0x74, 0x59, 0xe6, 0xdd, 0x7c, 0xbf, 0x2a, + 0x1a, 0x31, 0xe9, 0x05, 0xab, 0xda, 0xd9, 0xcf, + 0x0f, 0xd5, 0x72, 0xb8, 0x19, 0x3f, 0x9e, 0x91, + 0x3f, 0x71, 0x91, 0xb7, 0xc8, 0xee, 0x5b, 0x68, + 0xb3, 0x5e, 0x1c, 0x53, 0x1b, 0x10, 0x88, 0xab, + 0x88, 0xe3, 0x32, 0x8d, 0x8c, 0x53, 0x33, 0xb2, + 0xb5, 0x3b, 0xa5, 0x58, 0xed, 0x45, 0x69, 0xaf, + 0xb6, 0x57, 0x7a, 0xa1, 0x81, 0x65, 0xcc, 0xc3, + 0x3d, 0x7e, 0x79, 0x91, 0xaf, 0x9e, 0x21, 0x7c, + 0x18, 0x97, 0x23, 0xed, 0x32, 0xf0, 0xdc, 0x10, + 0xfd, 0x28, 0x59, 0xca, 0xf6, 0xea, 0x76, 0x80, + 0xd5, 0x0b, 0xf1, 0x27, 0x7c, 0x93, 0x42, 0x46, + 0x90, 0x5d, 0x86, 0x2b, 0xc4, 0x03, 0xdb, 0x02, + 0x78, 0x8f, 0x49, 0x3b, 0x69, 0x0e, 0x9b, 0x95, + 0xd7, 0x2e, 0xe2, 0x28, 0x83, 0x16, 0x67, 0xe9, + 0x3c, 0x9b, 0xf1, 0xce, 0xec, 0x21, 0x22, 0xb3, + 0xbd, 0xfe, 0xaf, 0xc7, 0x06, 0x46, 0xd3, 0xdf, + 0x2e, 0x23, 0xc9, 0xcd, 0x7d, 0x57, 0x73, 0xcd, + 0x62, 0x9a, 0x9f, 0xae, 0xce, 0x59, 0x66, 0x56, + 0x85, 0xbb, 0xcf, 0x55, 0x89, 0xdb, 0x9f, 0x6a, + 0x26, 0x17, 0xe6, 0xb3, 0xc9, 0xae, 0xe4, 0xd9, + 0x2b, 0x23, 0x8a, 0x15, 0xe7, 0xf0, 0x46, 0xd5, + 0x8f, 0x21, 0x2a, 0x18, 0xf5, 0x74, 0x3f, 0xdc, + 0x6b, 0xae, 0x53, 0x5d, 0x0d, 0xfd, 0x18, 0x6a, + 0xc1, 0x09, 0x66, 0xdd, 0xc6, 0xbe, 0xa7, 0xf0, + 0x86, 0xac, 0x9a, 0xf2, 0xa3, 0x8f, 0x0e, 0x40, + 0xbe, 0x92, 0x65, 0x65, 0xd7, 0x8c, 0xbe, 0x8c, + 0xbf, 0x12, 0x2b, 0xbd, 0x51, 0x10, 0x8b, 0x84, + 0x06, 0x20, 0xc7, 0x7b, 0xb6, 0x38, 0x48, 0xf6, + 0xf9, 0xc3, 0x47, 0xb1, 0x9a, 0xef, 0xe9, 0x3b, + 0x7f, 0xf8, 0x68, 0x48, 0x9a, 0xd0, 0xfe, 0xf2, + 0x6b, 0xb4, 0x39, 0xc8, 0xf6, 0x2f, 0xd3, 0xf9, + 0xa4, 0x1a, 0x34, 0x7c, 0x02, 0x0d, 0x56, 0xf3, + 0xc1, 0xcc, 0xab, 0xb9, 0xf0, 0xc5, 0xe8, 0x0b, + 0xfd, 0xd6, 0x50, 0x6b, 0xb2, 0xf2, 0xed, 0xbf, + 0x18, 0xc3, 0x3c, 0x63, 0x04, 0x62, 0x0c, 0xd7, + 0x75, 0x42, 0xbc, 0x44, 0x20, 0x80, 0x85, 0xec, + 0xd2, 0x65, 0x6e, 0x21, 0xee, 0x4a, 0xe3, 0xe1, + 0x7e, 0xc2, 0x09, 0x5a, 0x9b, 0xda, 0x8c, 0x95, + 0xd5, 0x82, 0x16, 0xe6, 0x05, 0x92, 0x21, 0xe5, + 0xbd, 0xca, 0x58, 0x37, 0x8b, 0x6a, 0x77, 0xdf, + 0x39, 0x24, 0xe1, 0x31, 0xdd, 0x8c, 0xd6, 0x6e, + 0xaa, 0x8f, 0xdb, 0xb4, 0x33, 0x31, 0x9b, 0x3c, + 0x49, 0xb6, 0x63, 0xee, 0xee, 0xbe, 0x44, 0xb3, + 0x2e, 0xf9, 0xe6, 0x13, 0x27, 0xa2, 0xc5, 0xec, + 0x78, 0xd1, 0x63, 0xe0, 0xe8, 0xc6, 0xd6, 0x16, + 0x74, 0xc8, 0xd2, 0x51, 0xd7, 0xfb, 0xa4, 0x07, + 0x25, 0xd5, 0xc5, 0x28, 0xd2, 0xab, 0x27, 0xc3, + 0xba, 0x0f, 0xeb, 0x38, 0x85, 0x7d, 0x92, 0x6a, + 0x44, 0xed, 0x78, 0xbb, 0x6e, 0x0a, 0x27, 0xeb, + 0x86, 0x70, 0x22, 0xb4, 0x85, 0x97, 0x17, 0x55, + 0x6c, 0xc0, 0x6f, 0x9d, 0x3e, 0x0b, 0x7b, 0x6a, + 0x24, 0x17, 0x19, 0x36, 0x5c, 0xbc, 0x20, 0xad, + 0x17, 0x77, 0xee, 0xd8, 0x06, 0x7b, 0x5a, 0x2e, + 0x9d, 0x3c, 0xd9, 0x79, 0x62, 0x97, 0x94, 0x3d, + 0xab, 0xa6, 0x7c, 0xea, 0xe7, 0xb0, 0xb8, 0x8a, + 0x30, 0x57, 0x59, 0x53, 0x90, 0x59, 0xf0, 0xc7, + 0xff, 0x65, 0xea, 0x57, 0x5e, 0x45, 0xae, 0xc3, + 0x2f, 0x4a, 0xca, 0x86, 0xee, 0x89, 0xd3, 0xe1, + 0x9f, 0x26, 0xfd, 0x4c, 0x93, 0x8b, 0x40, 0x0c, + 0x92, 0x68, 0x27, 0xd5, 0x58, 0x3b, 0x5a, 0xe9, + 0xa0, 0x94, 0x29, 0x9b, 0xb0, 0x8f, 0x84, 0x58, + 0x3b, 0x0e, 0x91, 0xf0, 0x74, 0xfb, 0x7b, 0x64, + 0xcb, 0xee, 0xe0, 0xeb, 0x7c, 0xc6, 0x18, 0x9a, + 0x58, 0xd6, 0x3e, 0xb2, 0x4b, 0xc5, 0x8e, 0x12, + 0x8d, 0xeb, 0x73, 0x15, 0xc1, 0x11, 0xf4, 0x2b, + 0x7a, 0x08, 0xfb, 0x2a, 0x79, 0xd8, 0x73, 0x90, + 0xef, 0x0f, 0xf3, 0x9d, 0xa8, 0x80, 0x74, 0x06, + 0x09, 0xc5, 0xe1, 0x2b, 0xb2, 0xd1, 0x3d, 0xc4, + 0x6b, 0x24, 0xbe, 0xbd, 0xaa, 0xff, 0x13, 0xae, + 0x78, 0x96, 0x6c, 0x3b, 0x63, 0x5e, 0x7a, 0x60, + 0x63, 0x76, 0x39, 0x44, 0x9a, 0xc7, 0x82, 0x21, + 0xea, 0x91, 0xd5, 0xf9, 0xdf, 0x24, 0xbe, 0x33, + 0xd5, 0x98, 0x12, 0xe6, 0xdb, 0x82, 0xda, 0xdf, + 0x0e, 0x55, 0x42, 0x84, 0x09, 0x64, 0x0c, 0x93, + 0xdd, 0xcc, 0x2d, 0xb0, 0xc2, 0xcb, 0x01, 0xac, + 0x29, 0x70, 0x5e, 0x9e, 0xc2, 0x35, 0x8e, 0x1a, + 0x22, 0x58, 0xd8, 0xd8, 0xb9, 0x94, 0x59, 0xcb, + 0x7c, 0x73, 0x9e, 0xce, 0x13, 0x92, 0x9a, 0x67, + 0x93, 0xe3, 0xa2, 0x14, 0x5d, 0x1d, 0x69, 0x7f, + 0x93, 0xcf, 0x9c, 0x27, 0xe5, 0x79, 0xfb, 0x85, + 0x34, 0x66, 0x63, 0xfe, 0x7d, 0x43, 0xda, 0x3d, + 0x8b, 0xaf, 0xf9, 0xb1, 0x37, 0x7f, 0xef, 0xdd, + 0x9c, 0x2c, 0xcb, 0xf7, 0xde, 0xa5, 0x57, 0xbb, + 0x7b, 0x13, 0xdd, 0x79, 0x28, 0x45, 0x0c, 0xee, + 0x67, 0x4e, 0x8a, 0xe5, 0x72, 0xe7, 0x51, 0x56, + 0x03, 0x72, 0x2b, 0x41, 0x76, 0x0d, 0xa2, 0xcd, + 0x3e, 0x6f, 0x06, 0xb0, 0x35, 0x63, 0x4d, 0x4b, + 0xe2, 0x59, 0xff, 0x97, 0x75, 0x7f, 0x8a, 0x6b, + 0x91, 0xb8, 0xa3, 0xb1, 0xea, 0x2d, 0x9c, 0x16, + 0xa4, 0x5c, 0x65, 0xe1, 0x57, 0xb0, 0x0b, 0x52, + 0xaf, 0x46, 0x24, 0x61, 0x4d, 0x69, 0x36, 0xe9, + 0x47, 0x07, 0x35, 0x2c, 0x22, 0x4a, 0xbf, 0x18, + 0x6e, 0xfe, 0xa0, 0x30, 0xed, 0x15, 0xc6, 0x0f, + 0xe8, 0xf2, 0x04, 0x56, 0xd7, 0x20, 0x93, 0xc1, + 0xcc, 0x33, 0x2d, 0xac, 0x0b, 0xc8, 0x30, 0xd9, + 0x85, 0xea, 0xa4, 0x0a, 0xa2, 0xe7, 0xf7, 0xdd, + 0x68, 0x84, 0xe3, 0xab, 0x60, 0xb9, 0x35, 0x5e, + 0x2b, 0x9c, 0x21, 0x3e, 0xa1, 0xfe, 0x1b, 0x5f, + 0x14, 0x0e, 0x84, 0x7d, 0x66, 0xbd, 0xf1, 0xaa, + 0xe2, 0xa7, 0x31, 0x29, 0x55, 0xf9, 0xea, 0x57, + 0xc1, 0x3e, 0x92, 0x04, 0x3b, 0x27, 0x5d, 0x75, + 0x3c, 0x1c, 0x05, 0x64, 0x01, 0x4a, 0xb4, 0x9a, + 0xd3, 0x37, 0xcf, 0xd7, 0x33, 0xa9, 0xcc, 0xfa, + 0x79, 0xea, 0x64, 0xbd, 0x21, 0x37, 0xe6, 0x5e, + 0xde, 0x65, 0xb8, 0x2f, 0x37, 0xe3, 0x86, 0x58, + 0xe2, 0x34, 0xae, 0xd1, 0xf9, 0x3e, 0x1e, 0x9e, + 0x77, 0xae, 0x95, 0x76, 0xdf, 0x11, 0x07, 0x9d, + 0x74, 0xad, 0x7a, 0x4d, 0xbd, 0xc6, 0x38, 0xcb, + 0x6b, 0xd7, 0x94, 0x42, 0xed, 0xda, 0xe2, 0xb5, + 0xd2, 0xb5, 0xe2, 0x17, 0xaf, 0x49, 0x07, 0xe1, + 0xac, 0xe0, 0x32, 0x27, 0x32, 0x51, 0xe0, 0x60, + 0x63, 0xd8, 0xc7, 0xe5, 0x7a, 0xab, 0x4e, 0xe4, + 0x7a, 0x8f, 0x2b, 0x3e, 0x8a, 0x06, 0xe7, 0x58, + 0xc5, 0xe6, 0x6d, 0xa7, 0x54, 0xa4, 0xc9, 0x5f, + 0xf0, 0xa8, 0x11, 0x61, 0x94, 0x6a, 0x9b, 0xbc, + 0x80, 0x9a, 0xc2, 0x11, 0xf0, 0x27, 0x21, 0x42, + 0x59, 0x4c, 0x33, 0xfd, 0x0c, 0x61, 0x9a, 0x29, + 0x67, 0xb9, 0x35, 0x99, 0x1a, 0xcb, 0x14, 0xab, + 0xa2, 0x3e, 0xa9, 0x3f, 0xa3, 0x89, 0x69, 0x4f, + 0xd3, 0x07, 0x59, 0xbd, 0x8e, 0x98, 0xb2, 0x8a, + 0xba, 0xa6, 0xca, 0x2a, 0x22, 0xd8, 0x23, 0x42, + 0xaa, 0x8b, 0x87, 0xea, 0x8f, 0xc2, 0x13, 0xdb, + 0x9d, 0x4d, 0x16, 0xff, 0xd4, 0x51, 0x84, 0x61, + 0xd1, 0x33, 0xd9, 0xa5, 0x21, 0xb0, 0x0a, 0xc4, + 0x47, 0x28, 0xf4, 0xb2, 0x53, 0x26, 0x9c, 0x3b, + 0xdc, 0x0a, 0x1c, 0x9f, 0xfb, 0xfa, 0xce, 0xa2, + 0xaf, 0xfe, 0xec, 0xeb, 0x91, 0x30, 0xee, 0x09, + 0x78, 0xdd, 0x94, 0xb8, 0x28, 0x32, 0x16, 0x94, + 0x8e, 0x5d, 0x67, 0xd1, 0x7e, 0x50, 0x1a, 0xd1, + 0xbe, 0xfd, 0xd7, 0x58, 0xbe, 0xdf, 0xe3, 0x85, + 0xd0, 0x25, 0xe4, 0xab, 0xb5, 0xa7, 0x85, 0xbe, + 0x7c, 0xaf, 0x0a, 0xb3, 0x37, 0x07, 0xe0, 0x69, + 0xb6, 0x74, 0xdb, 0x42, 0xd7, 0xc6, 0x3a, 0x18, + 0xe5, 0x4e, 0x36, 0x27, 0x9c, 0x09, 0x6d, 0xc1, + 0x5e, 0x2c, 0x6e, 0xbb, 0x71, 0x38, 0xbb, 0x2a, + 0xc9, 0x9d, 0x74, 0xfa, 0x60, 0x6e, 0x8d, 0x5e, + 0x39, 0x24, 0xfd, 0xdd, 0x89, 0xd3, 0x1a, 0x79, + 0xa1, 0x86, 0xb1, 0x8e, 0x0f, 0x39, 0xdb, 0x26, + 0xcd, 0x88, 0x31, 0x26, 0x4b, 0x62, 0x14, 0x50, + 0x48, 0x39, 0x40, 0x95, 0x69, 0xc5, 0xce, 0x09, + 0xd8, 0xf5, 0x08, 0x08, 0x77, 0x84, 0xa5, 0xd3, + 0xac, 0xb8, 0x74, 0xb6, 0x2a, 0x2c, 0xb4, 0x73, + 0xda, 0xc7, 0xef, 0x72, 0xc5, 0xac, 0x9e, 0x6d, + 0x5f, 0x17, 0xf7, 0x71, 0x2f, 0x88, 0x77, 0xc4, + 0x7e, 0xc8, 0xca, 0x02, 0x16, 0x62, 0x9f, 0x70, + 0x4e, 0x6d, 0x0d, 0x95, 0xa2, 0xd4, 0xb5, 0x22, + 0x53, 0x29, 0x4a, 0x2a, 0x7f, 0x69, 0xa4, 0xed, + 0x31, 0xe1, 0xcf, 0xf6, 0x65, 0x61, 0xc4, 0x3e, + 0x28, 0x87, 0xcb, 0x71, 0x62, 0x3c, 0x46, 0xd5, + 0xcb, 0x41, 0x6e, 0xd5, 0x96, 0xd5, 0x39, 0xf5, + 0xae, 0xfe, 0x37, 0xfb, 0x77, 0x18, 0xdb, 0x90, + 0x4b, 0x4a, 0x8b, 0xea, 0xb3, 0xef, 0xbf, 0x6c, + 0x22, 0xf7, 0x4f, 0x50, 0xea, 0x5e, 0xed, 0xec, + 0x9a, 0x49, 0x35, 0x40, 0xc9, 0x20, 0xa3, 0x0d, + 0x5d, 0xf3, 0x1d, 0x21, 0x25, 0xc8, 0xf4, 0x89, + 0x38, 0xad, 0x8a, 0x63, 0x9f, 0xca, 0x23, 0x87, + 0x18, 0x27, 0xca, 0x6a, 0xb3, 0x6a, 0x04, 0xc4, + 0x41, 0xaa, 0x33, 0x30, 0x8c, 0x6b, 0x5d, 0x09, + 0xd9, 0x5b, 0x3a, 0xaa, 0xce, 0xd7, 0x49, 0x39, + 0x33, 0xaa, 0x49, 0xc4, 0x18, 0x43, 0x53, 0x7d, + 0x3a, 0xaf, 0xd7, 0x0c, 0xbe, 0xc9, 0xb7, 0xf0, + 0x6f, 0x93, 0x8d, 0x83, 0x06, 0xff, 0x12, 0x0e, + 0x8c, 0x54, 0x9b, 0x21, 0x33, 0x78, 0x42, 0xd5, + 0xb4, 0xe6, 0x13, 0x9f, 0x0b, 0x5d, 0x6c, 0xc6, + 0x44, 0xcc, 0x43, 0xfb, 0x3c, 0x95, 0x57, 0xec, + 0x6d, 0x2b, 0x98, 0xfd, 0xf6, 0xf9, 0xff, 0xc6, + 0xd6, 0x86, 0x97, 0x09, 0xb2, 0xbb, 0x3e, 0xa2, + 0x2d, 0x9d, 0xfb, 0x8a, 0x8a, 0xcd, 0xa8, 0x19, + 0x39, 0xa9, 0x3b, 0x4c, 0xcb, 0x68, 0x52, 0xf9, + 0xce, 0xf2, 0x5e, 0x79, 0x2d, 0xdc, 0x65, 0xf9, + 0xcb, 0x49, 0x6d, 0x52, 0x1d, 0x2f, 0xe6, 0x8a, + 0x8c, 0xf5, 0x94, 0xdd, 0x7d, 0xcc, 0xe6, 0x21, + 0xb6, 0x6b, 0xac, 0x3b, 0x59, 0x31, 0x6b, 0x6c, + 0x19, 0xc3, 0x5a, 0x15, 0xb9, 0x78, 0xb5, 0x20, + 0xf9, 0x05, 0x64, 0xdf, 0x60, 0x8c, 0xdf, 0x9b, + 0xd2, 0xa6, 0xfc, 0xd3, 0x97, 0x3b, 0xf0, 0xb7, + 0xaa, 0xcf, 0xbf, 0xc1, 0x2b, 0x63, 0xf6, 0x77, + 0xc4, 0x0e, 0xf8, 0x02, 0x3e, 0xcb, 0xd8, 0xfe, + 0xad, 0x83, 0x15, 0x43, 0x2b, 0x47, 0x74, 0x64, + 0x97, 0x62, 0xbe, 0x3b, 0x6e, 0xa3, 0x9f, 0xf8, + 0x52, 0x67, 0x88, 0xc3, 0x1c, 0xec, 0xc2, 0xa4, + 0x3e, 0xcc, 0xea, 0xfc, 0x38, 0xbf, 0x80, 0xd7, + 0x65, 0xdf, 0x57, 0x8f, 0x10, 0x4d, 0xa5, 0x0e, + 0xab, 0x55, 0x62, 0x89, 0x1c, 0xa7, 0x3d, 0x18, + 0x84, 0xcf, 0x7a, 0x1f, 0x2b, 0x0f, 0x93, 0x3c, + 0x77, 0x09, 0x2c, 0x26, 0x4e, 0x3a, 0x49, 0xca, + 0xcc, 0xc9, 0xf5, 0x30, 0x43, 0xc1, 0x61, 0x3d, + 0x68, 0x58, 0x8f, 0xfe, 0x23, 0xf6, 0x3e, 0xc7, + 0x3d, 0xb4, 0x07, 0x20, 0x63, 0x43, 0x94, 0x23, + 0x2d, 0x67, 0x2f, 0x97, 0x94, 0x28, 0xd6, 0x30, + 0x47, 0xed, 0x09, 0xf9, 0x1b, 0x79, 0x40, 0x0e, + 0x3a, 0x11, 0xde, 0xd7, 0x14, 0xb0, 0xf7, 0x84, + 0x3d, 0x88, 0xe9, 0xf6, 0x10, 0xef, 0xd6, 0xdc, + 0x6f, 0x7a, 0xd3, 0xfd, 0x1e, 0xd7, 0x01, 0xf6, + 0xd8, 0x9e, 0x85, 0x07, 0x94, 0xde, 0x6c, 0xb1, + 0xc3, 0x21, 0x81, 0xbb, 0x0b, 0x7b, 0x44, 0x11, + 0x71, 0xe9, 0xfc, 0x3e, 0xcf, 0x3c, 0xfb, 0x20, + 0xf7, 0x33, 0x44, 0xdd, 0x93, 0x6a, 0xfd, 0x70, + 0xf2, 0xed, 0xf8, 0xdb, 0x9c, 0x7a, 0xf4, 0x76, + 0xe1, 0x90, 0xcd, 0x17, 0xa7, 0xde, 0x76, 0xf7, + 0x17, 0x42, 0xa4, 0x32, 0x1b, 0xa4, 0xd7, 0xc4, + 0x49, 0x3d, 0x05, 0xbc, 0x55, 0x3f, 0x3e, 0x06, + 0xef, 0x39, 0x93, 0xd9, 0x90, 0xc3, 0x52, 0xbe, + 0xd5, 0x8b, 0xfd, 0x20, 0x9e, 0x0b, 0x71, 0xda, + 0x49, 0xac, 0x8e, 0xff, 0x3b, 0x9a, 0x4f, 0xb4, + 0x90, 0xab, 0x06, 0x75, 0xef, 0x94, 0x46, 0xc0, + 0xaf, 0x4e, 0xfb, 0x8f, 0x1b, 0x70, 0xe7, 0x1b, + 0xb3, 0xf6, 0x75, 0xe1, 0x01, 0x64, 0x10, 0x34, + 0xff, 0x4b, 0x1c, 0x19, 0x89, 0xca, 0xb8, 0x09, + 0x76, 0xdb, 0x48, 0x58, 0x09, 0x6b, 0xc6, 0x4c, + 0x39, 0x3b, 0x8c, 0x3b, 0xda, 0xe5, 0xd0, 0x60, + 0x2c, 0x1a, 0x89, 0xca, 0xa8, 0x35, 0x6e, 0xc6, + 0xe4, 0x94, 0xb4, 0x81, 0x2c, 0xfb, 0x2e, 0x9e, + 0x9f, 0x71, 0x10, 0x79, 0xca, 0x78, 0x65, 0xff, + 0xee, 0xbb, 0x56, 0xd4, 0x3e, 0xa2, 0x69, 0x9c, + 0x68, 0x05, 0xa7, 0x0b, 0x87, 0xe4, 0x10, 0xf1, + 0x0a, 0x78, 0xcc, 0x2d, 0x8c, 0xb7, 0x05, 0xb1, + 0xcf, 0xea, 0xd9, 0xa6, 0xf6, 0x93, 0xca, 0x23, + 0x82, 0x59, 0xe9, 0x68, 0xda, 0x06, 0xc5, 0x71, + 0x83, 0xd4, 0x82, 0xca, 0x19, 0x49, 0x2d, 0x0b, + 0xc6, 0x25, 0x41, 0xf0, 0x2a, 0x9f, 0xe0, 0x15, + 0x96, 0xce, 0x36, 0x5d, 0x8d, 0x16, 0x77, 0xde, + 0x95, 0xe9, 0x2f, 0x70, 0xfd, 0xf6, 0x4f, 0x2a, + 0xd3, 0xf1, 0xdc, 0xf2, 0xa7, 0x9d, 0xfd, 0xab, + 0xf2, 0x6c, 0x9d, 0x35, 0x26, 0x22, 0x53, 0xf9, + 0x02, 0x6a, 0x62, 0xe2, 0x24, 0xbe, 0x31, 0x2c, + 0x7c, 0x18, 0x03, 0x63, 0xe4, 0xfd, 0xe7, 0x45, + 0x78, 0x7d, 0x56, 0x49, 0x30, 0xd6, 0x88, 0x79, + 0x25, 0xed, 0xd7, 0x9d, 0xa9, 0xb7, 0xd9, 0x4c, + 0x8b, 0x7f, 0xe8, 0xec, 0x23, 0x27, 0x54, 0x1c, + 0x2f, 0x92, 0x3a, 0x7b, 0x39, 0xd3, 0xa5, 0xcf, + 0x8e, 0xdf, 0x05, 0xb2, 0xf7, 0x1f, 0x29, 0xb9, + 0xea, 0x7a, 0x3b, 0x67, 0x17, 0x54, 0xbe, 0x7a, + 0x57, 0xbd, 0xae, 0x66, 0x54, 0xac, 0x9c, 0x74, + 0xb0, 0xf1, 0x63, 0xd2, 0xd5, 0x35, 0xbf, 0x83, + 0x2f, 0xb9, 0x8a, 0xc6, 0xba, 0xa0, 0x41, 0xae, + 0xa9, 0x91, 0x16, 0xc9, 0x5b, 0x88, 0x1a, 0x6c, + 0x5e, 0xfc, 0xc8, 0xc9, 0x19, 0x19, 0x0d, 0xb1, + 0xb5, 0xa4, 0x69, 0x21, 0xbc, 0xa0, 0x9c, 0x7e, + 0xdd, 0x5c, 0x31, 0x97, 0x9d, 0xcf, 0x85, 0xcf, + 0x31, 0x9f, 0x14, 0x92, 0x42, 0x57, 0xe4, 0xa6, + 0x78, 0x8a, 0xe3, 0x1b, 0x45, 0x77, 0xc5, 0xb6, + 0x7a, 0xf2, 0x32, 0xee, 0xb1, 0xcd, 0x7c, 0x93, + 0x58, 0x86, 0x1c, 0x50, 0x98, 0x64, 0x48, 0x45, + 0x8b, 0xfa, 0x32, 0x54, 0xe7, 0xe8, 0x53, 0x3e, + 0xec, 0x02, 0x20, 0x7b, 0x30, 0x8b, 0x2b, 0x27, + 0xcf, 0x7a, 0xf9, 0xf9, 0x03, 0x3d, 0x2a, 0xd9, + 0x17, 0xf1, 0x57, 0x2c, 0x26, 0x64, 0x5c, 0xca, + 0xfd, 0xb6, 0x70, 0x26, 0x9c, 0x05, 0x49, 0xf5, + 0x87, 0xb1, 0x62, 0x32, 0x1e, 0x8c, 0x28, 0xf8, + 0x4f, 0x4e, 0xa9, 0x34, 0x22, 0x1c, 0x53, 0x7a, + 0xfa, 0x50, 0xfb, 0xec, 0xa6, 0xb4, 0x2b, 0x61, + 0xc6, 0x1f, 0x57, 0x93, 0x7c, 0xa4, 0x01, 0xd7, + 0x2d, 0x76, 0x74, 0x0f, 0xb3, 0xea, 0x82, 0xfd, + 0xf1, 0xdb, 0xf4, 0xdb, 0x05, 0xbb, 0x70, 0x98, + 0xde, 0x5f, 0xb2, 0x57, 0x84, 0x74, 0xb2, 0xb3, + 0x53, 0x62, 0xf9, 0xd1, 0xb7, 0xa8, 0xc0, 0x8c, + 0x58, 0x62, 0x9c, 0x9a, 0xff, 0xd4, 0xf6, 0xa6, + 0x01, 0x5d, 0x2b, 0xdb, 0x1b, 0xe3, 0x8a, 0xc8, + 0x83, 0xe1, 0x61, 0xd2, 0xa9, 0x12, 0x68, 0x22, + 0xa3, 0x61, 0x82, 0xf4, 0x07, 0x59, 0x95, 0x78, + 0x46, 0x42, 0xfe, 0x30, 0xd4, 0x77, 0x96, 0x10, + 0xed, 0xa8, 0x8f, 0xd3, 0x2c, 0xe5, 0xf6, 0xb9, + 0x4a, 0x3a, 0x62, 0x1d, 0x76, 0x8e, 0x79, 0x7b, + 0x20, 0x83, 0x8a, 0x16, 0xb3, 0xd6, 0x8c, 0xa4, + 0xb4, 0xee, 0x9f, 0xa1, 0x1a, 0x45, 0xef, 0xaa, + 0xc3, 0xbd, 0x5d, 0xb0, 0x78, 0xc8, 0x0e, 0x06, + 0xcb, 0xd5, 0x24, 0xdb, 0x29, 0x3f, 0xd3, 0x3e, + 0x79, 0xe4, 0xee, 0x93, 0x2d, 0xb5, 0x56, 0xec, + 0xee, 0x88, 0x75, 0xd4, 0x1f, 0x2f, 0xd6, 0x82, + 0xb0, 0x5e, 0xc1, 0x74, 0x7f, 0x51, 0xef, 0x34, + 0x5c, 0xb9, 0x6c, 0x5e, 0x96, 0x47, 0x9b, 0x89, + 0x26, 0xcb, 0xf7, 0xb9, 0x1e, 0xad, 0x70, 0x7f, + 0x5a, 0x07, 0x96, 0xea, 0xb4, 0xdd, 0xd1, 0x86, + 0x2e, 0x74, 0x79, 0xd0, 0x6e, 0x8d, 0x8c, 0x88, + 0x13, 0x91, 0x23, 0xf2, 0x9e, 0xb3, 0x27, 0xc3, + 0xe1, 0x94, 0xa4, 0x92, 0x54, 0xf3, 0x5e, 0xc2, + 0xbd, 0xf7, 0x1b, 0xfc, 0x43, 0x6d, 0x44, 0x8d, + 0xbf, 0x4c, 0xcb, 0x43, 0x67, 0x63, 0x5c, 0x2f, + 0x83, 0x77, 0xdd, 0x79, 0x50, 0x2c, 0xbd, 0x1a, + 0xc9, 0xcc, 0xbf, 0x1b, 0xe3, 0x3c, 0xd6, 0x01, + 0x86, 0x37, 0xeb, 0xe2, 0x2a, 0x69, 0x0e, 0x61, + 0x27, 0xe9, 0x5c, 0x2c, 0xe2, 0xef, 0xf7, 0xc5, + 0x4f, 0xc2, 0x9d, 0x5c, 0x92, 0xc5, 0xb7, 0x2c, + 0xa6, 0x09, 0xeb, 0x3f, 0x68, 0x6c, 0x1a, 0x0b, + 0xa3, 0x82, 0x0a, 0x72, 0x8b, 0x9d, 0xd7, 0xf8, + 0x98, 0x9d, 0x14, 0x97, 0xcb, 0xcb, 0x99, 0xdd, + 0x63, 0xc8, 0xac, 0x0d, 0xcc, 0xac, 0xb9, 0xe4, + 0xbd, 0x33, 0x88, 0xf1, 0xc3, 0xf7, 0x2a, 0xe9, + 0x83, 0xf4, 0xc1, 0xbd, 0x43, 0x9c, 0xd6, 0xc1, + 0x88, 0x62, 0xae, 0xb8, 0xe3, 0x33, 0x2f, 0x09, + 0x27, 0xa8, 0xdd, 0x11, 0x3d, 0x8e, 0x2d, 0xde, + 0xcb, 0xc8, 0x95, 0x41, 0x31, 0x04, 0xd6, 0x96, + 0xe2, 0x2b, 0x61, 0x2b, 0xbf, 0xd0, 0x5a, 0x24, + 0x8f, 0x24, 0x20, 0x3b, 0xb8, 0x93, 0x43, 0x2f, + 0x89, 0xa4, 0x6e, 0x6b, 0x17, 0xa6, 0x1a, 0x1b, + 0x2e, 0x0b, 0x8d, 0x3c, 0x1a, 0x4f, 0x86, 0xcb, + 0x3c, 0x63, 0x69, 0xde, 0x14, 0x36, 0x09, 0x21, + 0xb1, 0x29, 0x3d, 0x77, 0xe8, 0xa7, 0x18, 0x28, + 0x05, 0x98, 0x72, 0x74, 0x63, 0xbd, 0xc1, 0x3b, + 0x63, 0x46, 0x48, 0x3b, 0x92, 0x42, 0xa7, 0x13, + 0x3b, 0x93, 0xc8, 0x04, 0xa8, 0x7a, 0x9e, 0xce, + 0x43, 0xa8, 0x7b, 0x51, 0xfd, 0x7d, 0xfe, 0xc1, + 0xbb, 0x29, 0x64, 0x07, 0x42, 0x31, 0x19, 0x37, + 0xfb, 0x45, 0x6c, 0x50, 0xdd, 0xc6, 0x1e, 0x4e, + 0x88, 0x3a, 0x7d, 0xde, 0x94, 0x1f, 0xaa, 0x50, + 0xf5, 0x49, 0xbc, 0x55, 0x10, 0x3a, 0xca, 0xf2, + 0xbd, 0x13, 0xcd, 0x7d, 0x52, 0x80, 0xf1, 0x80, + 0xe8, 0x01, 0x03, 0x15, 0xe7, 0x93, 0x8d, 0x32, + 0xf6, 0x6d, 0x1b, 0xec, 0x51, 0x9f, 0x95, 0x4b, + 0x59, 0xaf, 0xc5, 0x4f, 0xeb, 0x95, 0x89, 0x5f, + 0x17, 0xe1, 0xca, 0x48, 0xc7, 0x44, 0x5a, 0x57, + 0x06, 0x6c, 0x1e, 0x15, 0xda, 0xf5, 0xb8, 0xbd, + 0xe6, 0x2c, 0x37, 0x96, 0x9d, 0x5b, 0xa5, 0xc2, + 0xaf, 0xff, 0x59, 0xec, 0x73, 0xf1, 0xc0, 0x10, + 0x3d, 0x43, 0x44, 0x9a, 0x64, 0x0a, 0xbe, 0x52, + 0xe6, 0x44, 0x35, 0xd1, 0x12, 0x92, 0x6e, 0x38, + 0x6a, 0x64, 0xa0, 0xc2, 0x73, 0x35, 0xdd, 0x9a, + 0x5b, 0x4b, 0xdb, 0xff, 0x2d, 0x6c, 0x52, 0x04, + 0xf7, 0x4c, 0x08, 0x78, 0x58, 0x62, 0x36, 0x3d, + 0x4a, 0xa8, 0xcb, 0xbb, 0xc7, 0xb2, 0x39, 0x68, + 0x84, 0x4e, 0xf2, 0xed, 0x7e, 0xde, 0xeb, 0xd2, + 0x7a, 0x9a, 0x57, 0x2c, 0x92, 0xed, 0x54, 0x89, + 0xfb, 0xa8, 0x07, 0xc8, 0x4b, 0x10, 0x89, 0x36, + 0x66, 0xf0, 0x77, 0x7b, 0x92, 0xb0, 0x0e, 0xbc, + 0x30, 0x64, 0x73, 0x5c, 0x47, 0x73, 0x85, 0xd8, + 0x9c, 0x75, 0x76, 0xac, 0x31, 0xa5, 0x9a, 0x9e, + 0x8e, 0xbe, 0xab, 0x63, 0x63, 0xbf, 0x20, 0x26, + 0x25, 0xfe, 0x02, 0xa3, 0x08, 0x66, 0x79, 0x17, + 0xfd, 0xaf, 0x4c, 0x5d, 0x56, 0x0e, 0x76, 0xfe, + 0x77, 0xad, 0x08, 0x71, 0x63, 0x89, 0xf0, 0x5d, + 0x76, 0xd4, 0xeb, 0xe2, 0x55, 0x88, 0x73, 0x8c, + 0xaf, 0x34, 0xb0, 0xf1, 0x8a, 0x60, 0x2f, 0x74, + 0xc5, 0x39, 0x38, 0x8b, 0xf8, 0xb3, 0xb5, 0x25, + 0x6e, 0xd3, 0xb9, 0xed, 0x6c, 0x71, 0xdb, 0xce, + 0x4f, 0xc7, 0x03, 0xa5, 0x01, 0x5e, 0x48, 0xba, + 0x88, 0x94, 0x06, 0x4e, 0x5b, 0x82, 0x95, 0x52, + 0x65, 0xe5, 0x47, 0xb0, 0x03, 0x61, 0x25, 0xae, + 0x30, 0xee, 0x1d, 0x16, 0x99, 0x65, 0x50, 0xa5, + 0xd1, 0x50, 0x9b, 0x42, 0x6b, 0xb8, 0x51, 0x45, + 0xbf, 0xe9, 0x6a, 0xbd, 0x89, 0x12, 0x56, 0xa1, + 0x3e, 0x75, 0x64, 0x69, 0xfe, 0x1c, 0x6c, 0xce, + 0x61, 0xe2, 0x64, 0x44, 0x4c, 0x9f, 0xe4, 0x4a, + 0x3b, 0xff, 0xd0, 0x08, 0x0f, 0x3c, 0xd4, 0x12, + 0xc0, 0xb6, 0x7a, 0x4c, 0x60, 0xc4, 0x42, 0xe5, + 0xcf, 0xf2, 0xe0, 0xfc, 0x49, 0x47, 0x11, 0x77, + 0x5c, 0xca, 0x3a, 0x59, 0x79, 0x53, 0x0e, 0xca, + 0xc1, 0x55, 0x81, 0xf5, 0xac, 0x1b, 0x69, 0xeb, + 0xcf, 0xc4, 0x04, 0x94, 0xb6, 0x7e, 0x72, 0xd9, + 0x29, 0x77, 0xd5, 0xdd, 0x0a, 0x63, 0x5e, 0x4a, + 0x40, 0x36, 0x70, 0xd0, 0x98, 0x40, 0xee, 0x3b, + 0xf3, 0xe8, 0x3c, 0x6a, 0xde, 0x3d, 0xbf, 0x65, + 0xde, 0x32, 0x5d, 0x0e, 0x58, 0xb7, 0x3a, 0x5d, + 0xb7, 0x19, 0x77, 0x0a, 0x3b, 0x55, 0xd5, 0x9d, + 0x8c, 0xe0, 0x30, 0xeb, 0x12, 0x20, 0x76, 0x09, + 0x96, 0x50, 0x51, 0xfe, 0xea, 0x0f, 0xe9, 0xd2, + 0x1e, 0xf8, 0xc0, 0x51, 0xee, 0x99, 0xc3, 0xb0, + 0x88, 0x90, 0xb3, 0x35, 0x99, 0x1d, 0xa6, 0x4e, + 0x1d, 0xc5, 0xb1, 0x11, 0x11, 0x75, 0x78, 0xbd, + 0xa9, 0xa8, 0x20, 0xea, 0xbf, 0xda, 0x13, 0x42, + 0xd6, 0x26, 0x6d, 0xc3, 0x66, 0x90, 0xba, 0x3c, + 0x5e, 0xce, 0x1e, 0x10, 0x03, 0x02, 0x56, 0x50, + 0x70, 0xfe, 0x0a, 0x3c, 0xc6, 0xc1, 0xcc, 0x2f, + 0x9f, 0xf0, 0xdd, 0x59, 0xdb, 0x90, 0x1d, 0x60, + 0x9d, 0x7e, 0xe9, 0x0a, 0x78, 0x48, 0xa6, 0xc7, + 0x07, 0x3b, 0x8f, 0x2a, 0x0f, 0x64, 0x61, 0xb9, + 0x8b, 0xb3, 0x69, 0x88, 0x34, 0x9e, 0xa2, 0xb5, + 0x87, 0x98, 0xdb, 0x3e, 0xcf, 0x87, 0xb8, 0xec, + 0x0d, 0xa8, 0xe9, 0x93, 0x17, 0xc5, 0xf2, 0x6d, + 0xc8, 0x16, 0x88, 0x2d, 0xd9, 0xdc, 0xa2, 0xde, + 0x1c, 0xd3, 0xe0, 0xf6, 0xde, 0x77, 0xc8, 0xba, + 0x38, 0x71, 0xe5, 0x71, 0xed, 0x26, 0x32, 0xff, + 0x65, 0x8e, 0xb7, 0x27, 0xec, 0x39, 0x8c, 0xb2, + 0xf4, 0xbb, 0xfa, 0x2d, 0xfd, 0x56, 0xd5, 0x9d, + 0x0f, 0x85, 0x5c, 0xb5, 0x0e, 0x71, 0xe1, 0xd1, + 0x7e, 0xf0, 0x0c, 0xbe, 0xb3, 0x2f, 0xaf, 0x9e, + 0x8d, 0x2b, 0x60, 0x93, 0x5c, 0x8b, 0xe4, 0x69, + 0x41, 0x3d, 0x7a, 0x87, 0xdf, 0x78, 0xbf, 0x7a, + 0xef, 0x74, 0xb0, 0x79, 0xc7, 0x18, 0xd4, 0xab, + 0x2f, 0x19, 0x03, 0xff, 0x15, 0xd8, 0x65, 0xd3, + 0x19, 0x31, 0x8f, 0xb8, 0xba, 0x44, 0x55, 0x6c, + 0x27, 0xaa, 0x23, 0xea, 0x88, 0x0a, 0xbf, 0x71, + 0xbd, 0x71, 0x2c, 0x7a, 0x94, 0x0e, 0xd2, 0x89, + 0xec, 0x46, 0xbe, 0x90, 0x49, 0x67, 0x0a, 0x4e, + 0x5a, 0x2a, 0x48, 0xbc, 0x56, 0xd0, 0xe0, 0x35, + 0xbb, 0xb4, 0xdd, 0xb9, 0x0b, 0xa8, 0xad, 0x0f, + 0xb5, 0xcf, 0xba, 0x73, 0x4f, 0xaf, 0xa2, 0xe6, + 0x61, 0x98, 0x59, 0x07, 0x08, 0xa3, 0x49, 0x44, + 0x4e, 0x41, 0xd4, 0xaf, 0x8b, 0x58, 0x55, 0xa1, + 0x2e, 0x5e, 0x50, 0x80, 0x5c, 0xca, 0x58, 0x70, + 0x54, 0x9a, 0x2f, 0x29, 0x38, 0x88, 0xa1, 0xcb, + 0x18, 0x69, 0xf1, 0x63, 0xf1, 0x6b, 0x91, 0x74, + 0x88, 0x70, 0xb6, 0x0e, 0x5f, 0x9d, 0xc3, 0x63, + 0x00, 0x8e, 0x20, 0x21, 0xe7, 0x15, 0xa7, 0x17, + 0xf1, 0xeb, 0x5a, 0xe8, 0xc6, 0x8c, 0x92, 0x92, + 0x76, 0xc4, 0xbc, 0xab, 0x1d, 0xbc, 0x05, 0x91, + 0xf8, 0xa2, 0x1a, 0x54, 0x8f, 0xda, 0xe1, 0xc3, + 0xf1, 0xfd, 0x71, 0x35, 0xe3, 0x73, 0x92, 0xbb, + 0x11, 0xe6, 0x19, 0x75, 0x12, 0x7e, 0x47, 0x9f, + 0xae, 0xd3, 0xc7, 0xb9, 0xc0, 0x09, 0x74, 0xe1, + 0xd1, 0x0d, 0xe1, 0xbe, 0xf0, 0x50, 0x28, 0x65, + 0x4a, 0xfb, 0x07, 0xfb, 0x0f, 0xda, 0x4a, 0xb2, + 0x2b, 0x77, 0xd6, 0xe1, 0x93, 0xe9, 0x2f, 0x34, + 0x41, 0x5b, 0xc4, 0x39, 0x7e, 0x6d, 0x93, 0xe5, + 0x56, 0x3d, 0xaf, 0xdc, 0x73, 0x24, 0xfd, 0xef, + 0x0a, 0x32, 0x9f, 0x11, 0x31, 0x26, 0xce, 0x88, + 0x1b, 0xa7, 0x7d, 0x79, 0x7e, 0x12, 0xa2, 0x15, + 0x57, 0x55, 0x8d, 0xea, 0x0a, 0xf9, 0xc8, 0x69, + 0x02, 0x55, 0x95, 0xdc, 0x6e, 0x98, 0x5f, 0x17, + 0x6d, 0xe0, 0x3c, 0x16, 0xee, 0x9b, 0xc0, 0xea, + 0xd0, 0x6f, 0xb8, 0xca, 0x70, 0x7e, 0x6c, 0x03, + 0x32, 0x82, 0xce, 0x3d, 0xa2, 0x2e, 0xae, 0x15, + 0x31, 0x6e, 0x68, 0x8f, 0xa5, 0x78, 0x13, 0xbb, + 0xe9, 0x6e, 0x1e, 0xda, 0x42, 0xcc, 0x09, 0xeb, + 0x90, 0x14, 0x20, 0xb3, 0x9d, 0xaa, 0x44, 0xd5, + 0xa9, 0x62, 0xac, 0x78, 0x54, 0xed, 0x63, 0x78, + 0x6f, 0xbc, 0x7b, 0xda, 0x94, 0x16, 0x2d, 0xc3, + 0x4f, 0x35, 0x0a, 0x8f, 0x4c, 0x1d, 0x7c, 0xbd, + 0x8f, 0xd1, 0x27, 0xab, 0x24, 0xe4, 0x8c, 0x5c, + 0x19, 0xa3, 0x91, 0x9c, 0xa7, 0xcb, 0xc4, 0xb2, + 0xee, 0x32, 0xcd, 0x20, 0x80, 0x05, 0x1a, 0x70, + 0xee, 0x49, 0x73, 0x92, 0x74, 0x82, 0x2a, 0x36, + 0x03, 0x90, 0x95, 0x0d, 0xca, 0x82, 0x94, 0x2f, + 0xfb, 0x95, 0x5e, 0xf2, 0x62, 0xbe, 0x72, 0x9e, + 0x8f, 0xfc, 0x61, 0x4a, 0x61, 0xa2, 0xcb, 0x64, + 0x4e, 0x47, 0xb9, 0x53, 0x17, 0x45, 0x2e, 0xb8, + 0x19, 0x09, 0xed, 0x17, 0x72, 0xc1, 0xdd, 0x46, + 0xb5, 0x1f, 0x97, 0x0b, 0x6e, 0x32, 0xec, 0xa9, + 0x8b, 0x7e, 0x0f, 0x9e, 0xec, 0xb2, 0x10, 0xd5, + 0x09, 0x8b, 0x88, 0xa8, 0x40, 0x1c, 0x33, 0xf1, + 0x6b, 0xd7, 0xf3, 0xed, 0xb8, 0x76, 0xe5, 0x2c, + 0xbe, 0xff, 0xed, 0x6f, 0xbd, 0x8a, 0x30, 0xe8, + 0x49, 0x38, 0xf0, 0x55, 0x1c, 0x2a, 0xb0, 0x35, + 0xd7, 0x9a, 0x78, 0xa2, 0xd2, 0xd2, 0xba, 0xc0, + 0xfb, 0x93, 0x3e, 0xf3, 0xf6, 0x1a, 0xc4, 0xa2, + 0x82, 0x71, 0xcd, 0x41, 0x86, 0xf6, 0xac, 0xb4, + 0x64, 0xdf, 0x91, 0x9e, 0xd1, 0xec, 0x30, 0x31, + 0x4c, 0x42, 0x7e, 0x34, 0xe0, 0xc8, 0x5c, 0x9c, + 0xf1, 0x5b, 0x61, 0xe7, 0x8c, 0x34, 0xd7, 0xd0, + 0xc6, 0xc6, 0x56, 0x31, 0x16, 0x19, 0x47, 0xe6, + 0x0e, 0x13, 0x22, 0x4e, 0x33, 0xfe, 0x86, 0xf5, + 0x4c, 0x3d, 0x66, 0x80, 0x1c, 0xc4, 0x21, 0xf5, + 0xda, 0xa4, 0x91, 0x33, 0x50, 0xc9, 0x73, 0x0d, + 0x76, 0xe3, 0x38, 0xc3, 0x6e, 0x49, 0x51, 0x7b, + 0xcc, 0x4c, 0xdb, 0x32, 0xc4, 0x1a, 0x62, 0xa5, + 0xae, 0x45, 0x2a, 0x7b, 0xd5, 0x3b, 0xea, 0x8d, + 0xea, 0x54, 0xeb, 0xa0, 0xe6, 0xa1, 0x3a, 0xc7, + 0x20, 0x8a, 0x5d, 0xe6, 0x6f, 0xbb, 0xfa, 0xc0, + 0xa4, 0x11, 0xac, 0x8f, 0xbc, 0xee, 0xe8, 0xc2, + 0x1f, 0xfd, 0x12, 0x35, 0xa6, 0xe0, 0x88, 0x8a, + 0x89, 0x7c, 0x97, 0xc2, 0xaf, 0xcb, 0xa2, 0x8f, + 0x13, 0x7e, 0x2e, 0x9f, 0x0c, 0xd5, 0x7d, 0x67, + 0xd9, 0x14, 0x27, 0x2a, 0x74, 0xb7, 0x1e, 0xe5, + 0xb3, 0xce, 0x02, 0x58, 0xb8, 0x09, 0x73, 0xc1, + 0xdc, 0x7a, 0x2d, 0xb6, 0x46, 0x32, 0xe9, 0xb8, + 0xfa, 0x1e, 0x3d, 0xdd, 0xaa, 0xc2, 0x81, 0x27, + 0xeb, 0xb7, 0xd7, 0xf8, 0x7e, 0xf3, 0xae, 0x89, + 0xe7, 0x02, 0xc4, 0xc8, 0x77, 0xf5, 0x3e, 0xf6, + 0x79, 0x95, 0xa3, 0x26, 0x7a, 0xba, 0x27, 0x76, + 0x8d, 0x27, 0xfe, 0x58, 0x3a, 0x21, 0x06, 0xc0, + 0x3a, 0xa1, 0xc1, 0x19, 0xcf, 0xa5, 0x4d, 0x67, + 0x5b, 0xda, 0x96, 0x3e, 0xa3, 0x28, 0x6a, 0xd3, + 0x7e, 0xde, 0xd1, 0x00, 0xa5, 0x6c, 0x31, 0x01, + 0x56, 0xfd, 0x06, 0x87, 0x3d, 0xbe, 0x11, 0x61, + 0xcc, 0x55, 0xfa, 0x63, 0xbc, 0x10, 0xd8, 0x11, + 0x03, 0x9f, 0x61, 0xdd, 0x10, 0x9f, 0x3a, 0x13, + 0xa5, 0xe8, 0x79, 0xfc, 0x7d, 0xa4, 0x39, 0xea, + 0xa2, 0x3b, 0x60, 0xe5, 0x9c, 0xf1, 0xad, 0x7e, + 0xae, 0x47, 0x71, 0x0b, 0x32, 0xe3, 0xb0, 0x50, + 0xa9, 0x74, 0x70, 0x5f, 0x14, 0x59, 0x58, 0x83, + 0xe2, 0x80, 0x04, 0x79, 0x79, 0x23, 0xe2, 0xce, + 0x10, 0xb1, 0xc7, 0x36, 0xf8, 0xba, 0x0d, 0xde, + 0xd4, 0x0a, 0x8b, 0x57, 0x5c, 0x05, 0x1c, 0xa6, + 0xf8, 0x13, 0xe0, 0x06, 0xa4, 0x74, 0xe6, 0x4e, + 0x7b, 0x61, 0x7f, 0x61, 0x3f, 0x9d, 0x99, 0x5f, + 0x5d, 0xd8, 0x67, 0x7d, 0x71, 0x5f, 0x6b, 0xa6, + 0x31, 0xe2, 0x8c, 0x88, 0xb7, 0x9a, 0x25, 0x65, + 0xe4, 0x64, 0x34, 0x1c, 0xb9, 0xc0, 0x47, 0x81, + 0xef, 0xc9, 0xf0, 0x7a, 0x75, 0xe7, 0xe1, 0xf2, + 0x93, 0xf3, 0xd9, 0x77, 0xc3, 0xca, 0x8d, 0xc6, + 0x10, 0xf5, 0x25, 0xbb, 0x74, 0xe1, 0x21, 0x3e, + 0xbe, 0x8a, 0xdc, 0x86, 0x56, 0x64, 0x12, 0x39, + 0x48, 0xf3, 0x22, 0xe7, 0xeb, 0xfb, 0x32, 0xae, + 0x45, 0xa6, 0xf9, 0xdd, 0xd1, 0x21, 0xea, 0xd6, + 0xc7, 0xb9, 0xab, 0x22, 0x03, 0xe1, 0x6e, 0x37, + 0x13, 0x3e, 0xda, 0x38, 0x43, 0x29, 0xe3, 0xfd, + 0xed, 0x27, 0x8c, 0x8b, 0xa4, 0x2c, 0x39, 0xca, + 0xcb, 0x07, 0xfc, 0x4e, 0xd2, 0xe5, 0xc1, 0x38, + 0xf1, 0xee, 0xfe, 0x25, 0x62, 0x9b, 0x88, 0x31, + 0x0d, 0xd1, 0x7d, 0xe4, 0xa3, 0x50, 0x8d, 0x3c, + 0xf8, 0xe7, 0x7c, 0x73, 0xdb, 0x0e, 0xc1, 0xaa, + 0x5d, 0x58, 0xdd, 0x4a, 0x62, 0xa6, 0xc6, 0xf8, + 0x28, 0x20, 0x3f, 0xca, 0x44, 0xe5, 0xfa, 0x71, + 0x58, 0x2a, 0x38, 0xd7, 0xa4, 0x6b, 0xd2, 0xed, + 0xfc, 0x47, 0x38, 0x4f, 0xa7, 0x17, 0xf4, 0x00, + 0xcf, 0x75, 0x71, 0x71, 0xf6, 0xb2, 0xc4, 0xb2, + 0xef, 0xca, 0xcb, 0x34, 0xc9, 0xf4, 0x35, 0xe2, + 0xf6, 0x8a, 0xfe, 0x39, 0x4e, 0x27, 0xe8, 0xa2, + 0xcb, 0xb1, 0x80, 0x9c, 0xda, 0xb0, 0x6f, 0x95, + 0x50, 0x33, 0x4e, 0xeb, 0x7a, 0x2f, 0x4e, 0xf6, + 0x8e, 0x4d, 0x26, 0x42, 0xcc, 0x4f, 0x35, 0xf3, + 0xb3, 0x7b, 0x5a, 0x9f, 0x7a, 0xef, 0x1d, 0xec, + 0xd0, 0x37, 0xb2, 0x89, 0xaa, 0x80, 0x88, 0x37, + 0xeb, 0x93, 0x52, 0x54, 0xdb, 0x00, 0xfb, 0x54, + 0xfb, 0x3b, 0x78, 0x97, 0xa8, 0x13, 0x37, 0xe2, + 0xc6, 0xd8, 0x89, 0xd7, 0x69, 0xed, 0xe6, 0x60, + 0xef, 0xe2, 0x34, 0x20, 0x36, 0x83, 0x40, 0x63, + 0xbd, 0xca, 0xab, 0x05, 0xc4, 0x31, 0x95, 0xeb, + 0xa7, 0xe0, 0x3d, 0x8b, 0x85, 0xdf, 0xf8, 0x03, + 0x7e, 0x7f, 0x08, 0xd7, 0x39, 0xa1, 0x59, 0xb0, + 0x57, 0x16, 0x34, 0x42, 0x46, 0xd8, 0x0e, 0xc3, + 0xab, 0x8e, 0xda, 0x59, 0xe3, 0x91, 0xb1, 0xea, + 0x72, 0xee, 0xd5, 0xe1, 0x65, 0x20, 0x9e, 0x84, + 0x8c, 0x9d, 0x33, 0xeb, 0xf6, 0x9e, 0xf9, 0x6d, + 0xfe, 0x69, 0x66, 0x73, 0x75, 0xf3, 0xdd, 0xb6, + 0xcf, 0xd3, 0x8b, 0x0c, 0x9e, 0x03, 0xa2, 0x00, + 0x51, 0x0a, 0x63, 0xac, 0x08, 0x60, 0x55, 0xb3, + 0x2b, 0x6e, 0x0f, 0x34, 0x18, 0xce, 0x1d, 0x76, + 0x41, 0x97, 0x02, 0x4e, 0xa0, 0x2b, 0xce, 0x65, + 0xdf, 0x28, 0xf5, 0x35, 0xe1, 0xda, 0xfb, 0x59, + 0x17, 0x00, 0x56, 0x2a, 0xfd, 0xa4, 0xb9, 0x4a, + 0x7f, 0x52, 0x07, 0xb2, 0x4d, 0x52, 0xfa, 0x43, + 0xdd, 0x68, 0x29, 0x71, 0x5a, 0xb0, 0x15, 0x1e, + 0x75, 0x91, 0xf0, 0xf4, 0xe2, 0x91, 0x20, 0x77, + 0x63, 0x75, 0xe9, 0x7c, 0xbe, 0xbd, 0xb2, 0x3f, + 0xdf, 0x4e, 0xab, 0xb7, 0xdf, 0x22, 0xa3, 0x4f, + 0x8f, 0x66, 0xa2, 0x13, 0x85, 0xc8, 0x1b, 0xab, + 0xd0, 0x41, 0x3b, 0xa4, 0x87, 0x6d, 0x9a, 0x1b, + 0xd6, 0x04, 0x7d, 0x82, 0x67, 0x1c, 0x56, 0x10, + 0xb5, 0x82, 0x35, 0xfc, 0xd6, 0x41, 0x8b, 0x88, + 0x78, 0x06, 0x54, 0x94, 0xba, 0x49, 0x2b, 0x87, + 0x39, 0xb5, 0xa8, 0xf2, 0xd8, 0x46, 0x14, 0x05, + 0x63, 0x57, 0x1c, 0x85, 0x58, 0xe7, 0x19, 0xdd, + 0x23, 0xd2, 0x00, 0x75, 0x79, 0x5d, 0x90, 0x8f, + 0x7e, 0x4d, 0x92, 0xcb, 0x83, 0x5a, 0xc8, 0xb8, + 0x21, 0xf4, 0xf9, 0x91, 0x5b, 0xb1, 0x58, 0x94, + 0x83, 0x62, 0xd4, 0xe8, 0x70, 0x4d, 0xb9, 0x2c, + 0x37, 0x17, 0x59, 0x4f, 0x1b, 0xa4, 0x6a, 0x6a, + 0x15, 0x0d, 0xfe, 0xe4, 0x43, 0x66, 0xf8, 0xef, + 0x7c, 0x9d, 0x9a, 0x3c, 0x3e, 0xba, 0x8a, 0x9c, + 0x91, 0xd8, 0xc5, 0x66, 0x3c, 0x08, 0x3f, 0x92, + 0x66, 0x82, 0x87, 0x7f, 0x66, 0xb5, 0x92, 0xe7, + 0x99, 0x48, 0x66, 0xd4, 0x89, 0x9e, 0x8e, 0x69, + 0xdf, 0x3b, 0x89, 0xd3, 0x48, 0x2d, 0xa2, 0x45, + 0xb5, 0x65, 0x57, 0x69, 0xa8, 0xaa, 0x6f, 0xbf, + 0x51, 0xf5, 0x47, 0x60, 0xa7, 0xb6, 0xed, 0x3f, + 0x28, 0x10, 0xdf, 0x2b, 0x3f, 0x5b, 0x7d, 0x0a, + 0x32, 0xaa, 0x76, 0xde, 0x77, 0x8c, 0x54, 0x97, + 0x6e, 0x70, 0x8f, 0xed, 0x52, 0x47, 0x1f, 0x47, + 0x17, 0x34, 0x88, 0x82, 0xc1, 0x33, 0x24, 0xa5, + 0xab, 0xce, 0x84, 0x9c, 0x7b, 0x93, 0xa9, 0xa8, + 0xe6, 0x25, 0x99, 0xb1, 0x19, 0x44, 0x88, 0xaf, + 0xde, 0xaf, 0x9c, 0xb8, 0x68, 0x77, 0xa6, 0x17, + 0xe4, 0xf3, 0x03, 0xf3, 0xe9, 0xf8, 0x0c, 0xec, + 0x50, 0xf4, 0xf0, 0xb3, 0x76, 0x3a, 0x7e, 0x5f, + 0xbc, 0x6f, 0x29, 0xfe, 0x35, 0xc7, 0xf9, 0x15, + 0x71, 0x05, 0xf6, 0xbe, 0x06, 0x8f, 0x4e, 0x85, + 0x47, 0xac, 0xb4, 0xe8, 0xf1, 0x16, 0x17, 0x2c, + 0xc4, 0xac, 0xa6, 0x44, 0xf6, 0xa7, 0xf7, 0xb7, + 0x0d, 0xb1, 0x91, 0x77, 0x75, 0xc4, 0x8a, 0x3b, + 0xc5, 0xe8, 0x1b, 0x9c, 0x70, 0x60, 0x1d, 0xcb, + 0x2e, 0xee, 0x68, 0x7f, 0x12, 0xa4, 0xbb, 0x1a, + 0xe1, 0x57, 0x21, 0x28, 0xbe, 0x5a, 0xb0, 0x21, + 0xbe, 0xb2, 0x8f, 0x8c, 0x31, 0x67, 0x42, 0x1a, + 0xb3, 0x27, 0xa4, 0x6b, 0xe0, 0x0b, 0xef, 0xfb, + 0xac, 0x98, 0x5e, 0x94, 0x75, 0x85, 0xa6, 0x13, + 0x3a, 0x1e, 0xd6, 0x8d, 0xda, 0xe9, 0xdd, 0x37, + 0xe5, 0x0f, 0xef, 0xb0, 0x87, 0x9c, 0x27, 0x95, + 0x0a, 0xaa, 0xcd, 0x5e, 0xf1, 0x75, 0xb4, 0x51, + 0x89, 0xb5, 0xbf, 0x7d, 0xa4, 0x06, 0xb4, 0x7b, + 0x12, 0x78, 0x1d, 0xa5, 0xdf, 0x59, 0x55, 0x72, + 0x34, 0x67, 0xf0, 0xb1, 0xed, 0x7a, 0xe7, 0xa6, + 0xac, 0xdc, 0xb3, 0xb3, 0x10, 0xf7, 0x2d, 0xc1, + 0x4f, 0x38, 0xec, 0x25, 0xf5, 0x8e, 0xfa, 0x0c, + 0xb1, 0x4c, 0x6b, 0xf3, 0x6d, 0x64, 0x76, 0x09, + 0xc0, 0x33, 0x91, 0x01, 0x83, 0xf5, 0x37, 0x27, + 0x6c, 0xcf, 0x32, 0xa0, 0xe2, 0x4f, 0xd6, 0xca, + 0x42, 0x0e, 0x92, 0xe1, 0xe6, 0x91, 0xc1, 0xc9, + 0xbe, 0x6b, 0xca, 0xe6, 0x8c, 0x9a, 0x3a, 0xe9, + 0x55, 0x46, 0xc3, 0x0a, 0x22, 0x75, 0xd1, 0xcf, + 0x06, 0xa4, 0xc1, 0xd6, 0xea, 0x2a, 0x6a, 0x53, + 0x46, 0x95, 0x5c, 0x2d, 0x6c, 0xc6, 0xf2, 0xeb, + 0xd2, 0xae, 0x36, 0xad, 0x7b, 0xba, 0x4a, 0xae, + 0x87, 0x85, 0xe8, 0x34, 0x56, 0x3d, 0x72, 0xf5, + 0x49, 0xa6, 0x50, 0xcf, 0xbe, 0x3d, 0x55, 0xf1, + 0xba, 0xb4, 0xf8, 0xdc, 0x14, 0xd6, 0x1d, 0x9c, + 0x38, 0x3c, 0x3f, 0x05, 0x7b, 0x22, 0x55, 0x4e, + 0x69, 0x29, 0xa3, 0x40, 0x7b, 0x41, 0x84, 0x9d, + 0x72, 0xa9, 0xa5, 0x28, 0xac, 0xd3, 0x4a, 0xab, + 0x02, 0x35, 0x6e, 0xc4, 0x0d, 0x52, 0xc0, 0x89, + 0x80, 0x1d, 0x08, 0x09, 0x1b, 0x90, 0x45, 0x4a, + 0xcd, 0x80, 0x04, 0x7e, 0xdd, 0x1e, 0x8f, 0xe3, + 0xfd, 0x7d, 0x60, 0x29, 0x6e, 0xef, 0x29, 0xaa, + 0x86, 0x32, 0xc3, 0xab, 0x37, 0xdb, 0x43, 0x49, + 0xbc, 0x07, 0xac, 0xe2, 0xe7, 0xf1, 0x63, 0x41, + 0x5c, 0xf7, 0x7a, 0xfc, 0xf0, 0xbf, 0x5e, 0x7b, + 0x7d, 0x06, 0x36, 0xcb, 0x13, 0x2e, 0x57, 0x92, + 0x9d, 0x55, 0x27, 0x73, 0xb3, 0x0e, 0x29, 0x15, + 0xd2, 0x84, 0xe0, 0x03, 0xa5, 0xd8, 0x52, 0xd7, + 0x3a, 0x33, 0x62, 0xa2, 0x1e, 0x37, 0x0e, 0x9c, + 0x31, 0xb0, 0x83, 0x47, 0xc6, 0x22, 0xc4, 0x81, + 0x2a, 0xab, 0x6d, 0x76, 0x73, 0x3b, 0xa8, 0xeb, + 0xa7, 0x99, 0xcc, 0x65, 0x27, 0x74, 0x3c, 0x6c, + 0x7e, 0x47, 0xea, 0x48, 0x1e, 0x63, 0x0c, 0xfa, + 0x9a, 0x04, 0xec, 0xc1, 0xdb, 0x4e, 0xc9, 0xaf, + 0x32, 0x7a, 0x3d, 0xfa, 0xa0, 0x34, 0x20, 0x0d, + 0xfc, 0xce, 0x8c, 0x67, 0x47, 0x83, 0x8c, 0xfe, + 0x8f, 0x72, 0xa1, 0xe7, 0xe5, 0x33, 0xa5, 0x33, + 0xee, 0x3a, 0x62, 0x3b, 0xb0, 0x91, 0xf9, 0xe1, + 0x12, 0xdf, 0xcb, 0x49, 0x7e, 0x65, 0xf5, 0x22, + 0x52, 0x9c, 0x78, 0xc6, 0xac, 0xfb, 0xe2, 0xac, + 0x24, 0xb7, 0x38, 0x88, 0x22, 0xa7, 0x1d, 0xb6, + 0x4f, 0xd8, 0x37, 0x49, 0xf1, 0x64, 0xf5, 0x7b, + 0x3d, 0x7e, 0x7a, 0x59, 0x8a, 0x6a, 0x47, 0x7a, + 0xd0, 0x59, 0xd4, 0x73, 0xba, 0x37, 0xdd, 0xef, + 0xe6, 0xa1, 0x2d, 0xd1, 0x0a, 0x1a, 0x5b, 0x65, + 0xa9, 0x9c, 0x26, 0x2e, 0x5e, 0xc8, 0xaf, 0x2c, + 0x89, 0xf9, 0x85, 0x66, 0x78, 0x35, 0x0c, 0x5e, + 0xe5, 0x5a, 0xfe, 0x5a, 0x7e, 0x45, 0xbd, 0xed, + 0xcc, 0xb0, 0xd9, 0xf0, 0x2a, 0x21, 0x9c, 0x21, + 0xf7, 0x5f, 0xf5, 0xba, 0x35, 0x84, 0x0b, 0xa7, + 0x09, 0xa8, 0xe2, 0x3a, 0x29, 0x0b, 0xf7, 0x71, + 0x61, 0xee, 0xa6, 0x9d, 0xd2, 0x6f, 0xb6, 0xb1, + 0xf2, 0x88, 0x88, 0x81, 0xeb, 0xfa, 0x0f, 0x16, + 0x4f, 0x68, 0x4c, 0xae, 0xa3, 0x5a, 0x4a, 0xf8, + 0x5b, 0x44, 0xdf, 0xc2, 0xe9, 0x23, 0x6f, 0x21, + 0x92, 0xf8, 0x67, 0xfc, 0xb8, 0x0e, 0xe7, 0xed, + 0x7f, 0xae, 0x15, 0x0b, 0xce, 0xde, 0xfb, 0xbd, + 0xd2, 0xc8, 0xfb, 0xf8, 0xbb, 0xc4, 0x97, 0xf1, + 0x1d, 0x54, 0x82, 0x4b, 0x9c, 0x8d, 0x48, 0x9f, + 0xfe, 0x53, 0x6e, 0xcd, 0x37, 0x06, 0x56, 0x13, + 0x2d, 0xac, 0x7c, 0x22, 0xce, 0xf9, 0x29, 0x55, + 0x21, 0xdc, 0x8a, 0xab, 0x22, 0xd7, 0xd6, 0x1b, + 0x05, 0x4e, 0xae, 0x16, 0xb8, 0x0e, 0x4b, 0xbf, + 0xf7, 0x28, 0xab, 0x9c, 0x20, 0x46, 0x07, 0x7d, + 0xc7, 0x7c, 0x7b, 0x56, 0xbf, 0x76, 0x38, 0x93, + 0x64, 0xba, 0xa5, 0xaa, 0xf3, 0x82, 0x53, 0xab, + 0x47, 0x5d, 0xf9, 0x6f, 0x5f, 0x23, 0x4c, 0xd8, + 0xad, 0x80, 0x30, 0xa8, 0xae, 0xa1, 0x4e, 0xa5, + 0x5a, 0x07, 0x9f, 0x30, 0xac, 0x62, 0x86, 0x2a, + 0x43, 0x82, 0xcb, 0x53, 0x4d, 0xa6, 0x9b, 0xa5, + 0x99, 0x66, 0x9f, 0x20, 0xe3, 0xeb, 0xe3, 0x06, + 0x1a, 0xc9, 0x72, 0x79, 0xb2, 0x8b, 0xdb, 0xbf, + 0x11, 0x77, 0x26, 0x8c, 0xa8, 0x15, 0x37, 0x26, + 0xad, 0xb8, 0x3d, 0x6f, 0xc8, 0xe5, 0x4f, 0x7f, + 0xb9, 0x98, 0x87, 0x82, 0x25, 0x69, 0x05, 0xba, + 0x78, 0xb7, 0x02, 0xc2, 0x3a, 0xbe, 0x67, 0x1b, + 0xdf, 0xf1, 0xe0, 0xf5, 0x00, 0xd9, 0xa3, 0xce, + 0xca, 0xc1, 0xfe, 0xc2, 0x91, 0x8b, 0x23, 0x3a, + 0x52, 0x19, 0x82, 0x62, 0x82, 0xfa, 0x1e, 0x43, + 0xc4, 0xa3, 0x3e, 0xe4, 0x1c, 0x65, 0xa2, 0x66, + 0xf4, 0x30, 0xfa, 0xba, 0x4e, 0x1d, 0xbc, 0xf8, + 0xc1, 0xe4, 0xab, 0x6f, 0xdf, 0xf3, 0x71, 0x3e, + 0xec, 0x23, 0xe8, 0xd4, 0xac, 0xb9, 0x94, 0x09, + 0x66, 0xa6, 0xcf, 0xb3, 0x99, 0x6d, 0x33, 0x76, + 0x38, 0xa2, 0x66, 0x09, 0x87, 0xdc, 0x61, 0xf0, + 0xc4, 0x93, 0xad, 0xc0, 0xb0, 0xf1, 0x83, 0xc7, + 0x34, 0xd5, 0xb5, 0x17, 0x46, 0xc1, 0x12, 0x2d, + 0x2b, 0x4f, 0xbc, 0x8a, 0x3d, 0xf7, 0x7b, 0xca, + 0xa4, 0xde, 0x4c, 0x3c, 0x45, 0x9b, 0x38, 0x3b, + 0xaf, 0xcd, 0x39, 0x77, 0x4f, 0x6f, 0x6b, 0xeb, + 0x55, 0x64, 0x05, 0xfb, 0xac, 0xfa, 0x18, 0x7e, + 0xde, 0xaf, 0x3d, 0x70, 0x95, 0xdf, 0xe7, 0xed, + 0x8c, 0xb2, 0x00, 0xb1, 0x5b, 0x56, 0x9e, 0xbb, + 0x80, 0x36, 0x74, 0xd9, 0xec, 0x55, 0xf0, 0x33, + 0xe8, 0xfb, 0x94, 0xc7, 0x76, 0x67, 0x4a, 0xdf, + 0xfb, 0x26, 0x67, 0x84, 0x51, 0xad, 0xaf, 0x31, + 0x76, 0xf2, 0xf5, 0xce, 0x95, 0x66, 0x8f, 0x3a, + 0xb0, 0xbb, 0x47, 0xb1, 0xa8, 0x8c, 0x68, 0xdd, + 0x3e, 0x89, 0x32, 0xc1, 0x46, 0xd7, 0xda, 0x68, + 0xc5, 0xc0, 0x3b, 0x2f, 0x41, 0x56, 0x1f, 0xb3, + 0xf2, 0x8d, 0x27, 0xb6, 0xdb, 0xf7, 0x6e, 0x78, + 0xde, 0xaa, 0xe6, 0xb2, 0xea, 0x4c, 0x83, 0x15, + 0x8e, 0xb8, 0xdc, 0x7a, 0xc8, 0x7c, 0x48, 0x8a, + 0x5d, 0xd5, 0x92, 0xbe, 0xa7, 0xfd, 0x51, 0xaa, + 0x69, 0x7b, 0xfa, 0x1f, 0x9d, 0x92, 0x5e, 0x42, + 0xe5, 0x69, 0x16, 0x5d, 0xf3, 0xb7, 0x8f, 0x6f, + 0x1e, 0xe7, 0x8e, 0xd7, 0x8e, 0xbf, 0x39, 0x0e, + 0xc9, 0xd3, 0xf2, 0xc1, 0x71, 0xe1, 0x78, 0x44, + 0x1e, 0xe6, 0x87, 0x5e, 0x56, 0xc3, 0x7e, 0x85, + 0xb9, 0x39, 0x23, 0xce, 0x9f, 0x73, 0x42, 0x14, + 0x95, 0x27, 0xe0, 0xd8, 0x38, 0x2e, 0x1e, 0xab, + 0xb0, 0x72, 0x66, 0xb8, 0x51, 0x3b, 0x9e, 0x79, + 0x98, 0x81, 0x28, 0xb1, 0x3d, 0xbc, 0xdf, 0x89, + 0x18, 0x3e, 0x65, 0x76, 0x92, 0xa2, 0x26, 0xea, + 0x91, 0xd8, 0x35, 0x21, 0x82, 0x0c, 0x18, 0x90, + 0xed, 0x7e, 0x5d, 0xe2, 0x4b, 0xa8, 0xe3, 0x39, + 0xc8, 0xdd, 0xb1, 0x25, 0x58, 0xa3, 0x73, 0xfa, + 0x1d, 0xe1, 0xeb, 0x7c, 0xb7, 0x66, 0x32, 0xc3, + 0x05, 0x41, 0xdc, 0x4d, 0xcf, 0x2d, 0x9c, 0xcb, + 0xc2, 0x37, 0x1a, 0xab, 0x3f, 0xdf, 0x2b, 0xf5, + 0x95, 0x70, 0x6d, 0x10, 0xfb, 0x8a, 0xb4, 0x88, + 0x95, 0x53, 0x41, 0xd0, 0x49, 0x17, 0x0d, 0x99, + 0x68, 0x5c, 0xe6, 0x7f, 0xea, 0x4a, 0x43, 0x04, + 0x99, 0x2b, 0xe7, 0xad, 0x85, 0x9d, 0xb4, 0x92, + 0xb6, 0xe7, 0x14, 0x78, 0x2f, 0x1f, 0x11, 0xca, + 0x2c, 0x36, 0xe3, 0x79, 0xf6, 0x33, 0x19, 0x17, + 0x09, 0x83, 0x1a, 0x45, 0xf5, 0x46, 0xca, 0x8e, + 0x23, 0xff, 0x08, 0x4e, 0xd3, 0x7b, 0xe7, 0xcb, + 0xb9, 0x5a, 0xaf, 0x42, 0xb7, 0xd6, 0x88, 0x70, + 0xa8, 0x73, 0x81, 0x47, 0xc2, 0x63, 0x77, 0xb7, + 0xa6, 0x9d, 0xc8, 0xf9, 0xb4, 0x28, 0x5a, 0x4c, + 0x15, 0x3e, 0x6e, 0x40, 0xec, 0x56, 0xdc, 0x5a, + 0x8e, 0x58, 0x9d, 0x9e, 0x97, 0xd0, 0x0c, 0x66, + 0x86, 0xd5, 0x50, 0x25, 0x74, 0x16, 0xc3, 0xc9, + 0x17, 0x75, 0xa3, 0x18, 0x56, 0xfc, 0xe7, 0x66, + 0xa6, 0xdd, 0xe7, 0x61, 0xfc, 0xb5, 0x64, 0x4b, + 0xfa, 0x03, 0x21, 0x9c, 0x67, 0xf1, 0x06, 0x46, + 0xb6, 0x58, 0x59, 0xfb, 0x50, 0xc9, 0xf1, 0x43, + 0xcd, 0x26, 0x62, 0x1b, 0x72, 0x67, 0xa5, 0x59, + 0xdc, 0x13, 0x3f, 0x8e, 0x25, 0x51, 0xf7, 0x8a, + 0xe9, 0x7e, 0x44, 0x19, 0xef, 0x62, 0xab, 0x17, + 0x87, 0x9c, 0xcd, 0xb0, 0x63, 0xe9, 0xdc, 0xc3, + 0x21, 0xe3, 0x1d, 0x64, 0xaa, 0xe3, 0x5c, 0x33, + 0x22, 0x8f, 0xfe, 0x22, 0x59, 0x33, 0xe2, 0x27, + 0x4d, 0x45, 0x09, 0x9c, 0x0c, 0xbb, 0xa8, 0xec, + 0xfb, 0x7c, 0x1d, 0xa2, 0xd4, 0x69, 0xeb, 0x70, + 0x91, 0xbd, 0xff, 0x40, 0x39, 0x28, 0xde, 0xa0, + 0xf8, 0x59, 0x10, 0xb7, 0x8c, 0x9c, 0xb6, 0xa8, + 0x05, 0xc5, 0x23, 0x43, 0x30, 0x26, 0x27, 0xc7, + 0x2b, 0x0b, 0x86, 0xea, 0x4e, 0x2f, 0xb1, 0x2e, + 0x8f, 0x62, 0xa4, 0x8c, 0xd0, 0xeb, 0xcb, 0xf1, + 0xe8, 0xc1, 0xcc, 0x05, 0x94, 0x85, 0xbb, 0xea, + 0x70, 0xce, 0x8b, 0x78, 0x7b, 0x20, 0x9a, 0x24, + 0x1d, 0x38, 0xb5, 0x88, 0x13, 0x37, 0x61, 0x7d, + 0x4b, 0xbd, 0xa9, 0x41, 0x8e, 0xaa, 0x6d, 0x6a, + 0x41, 0x6b, 0x4c, 0xcb, 0x6a, 0x9b, 0x56, 0xa8, + 0x14, 0xda, 0x09, 0xef, 0xac, 0x16, 0xdd, 0xcc, + 0x5a, 0x79, 0xe4, 0xe4, 0xcc, 0xac, 0x78, 0xc9, + 0xbe, 0x1a, 0xcf, 0x5a, 0x9b, 0xf4, 0x89, 0x65, + 0x7a, 0x2e, 0x76, 0x52, 0x1f, 0x39, 0x5b, 0xe6, + 0x73, 0x71, 0xdb, 0xfe, 0x2c, 0xce, 0xb8, 0x74, + 0x7e, 0x52, 0xfb, 0x8a, 0x7c, 0x91, 0x31, 0x00, + 0x27, 0x95, 0xbf, 0xd3, 0xe7, 0x45, 0x2d, 0xed, + 0xf1, 0x5f, 0x96, 0xad, 0x15, 0x63, 0xb7, 0x2c, + 0x96, 0x23, 0x06, 0x9b, 0x6e, 0xd8, 0xb3, 0x56, + 0xc4, 0x3b, 0x16, 0xb2, 0x4b, 0x47, 0xb4, 0x31, + 0x6b, 0x45, 0x5b, 0xb1, 0xdc, 0x1d, 0xee, 0xae, + 0x2b, 0x2f, 0x07, 0x82, 0x13, 0xd6, 0x49, 0x50, + 0x12, 0x5a, 0x82, 0x32, 0xcc, 0x74, 0x00, 0x99, + 0x96, 0x10, 0xc7, 0xd9, 0x6b, 0xac, 0x02, 0x22, + 0xad, 0x9d, 0xc0, 0xae, 0x91, 0xd7, 0x65, 0xaa, + 0xe7, 0x90, 0x8a, 0x4d, 0xd4, 0x0c, 0x40, 0xc6, + 0xff, 0xdf, 0xfe, 0x3d, 0x8a, 0x17, 0x17, 0x5b, + 0x0f, 0x9c, 0x6e, 0x34, 0x4b, 0xb7, 0xcd, 0xf3, + 0x11, 0x2b, 0xb0, 0xda, 0xd3, 0x60, 0x91, 0x3e, + 0x72, 0x32, 0xcd, 0xb4, 0x3c, 0xf7, 0x8b, 0x0c, + 0xd1, 0xd6, 0x5d, 0xbf, 0xbf, 0xef, 0xaa, 0x05, + 0x29, 0x29, 0xfb, 0x4b, 0xd8, 0xef, 0x5e, 0xa7, + 0x60, 0x52, 0x13, 0xf5, 0x18, 0xdf, 0x41, 0x4a, + 0xd4, 0xed, 0x0b, 0x2a, 0x08, 0x02, 0xe3, 0xc9, + 0x8f, 0x40, 0x96, 0xfe, 0x8d, 0x95, 0x14, 0x27, + 0x9c, 0x39, 0xe5, 0xc5, 0xc1, 0xd8, 0xe1, 0xf2, + 0xe9, 0x8a, 0x76, 0x4b, 0xd5, 0x8a, 0x1e, 0x9b, + 0xae, 0x40, 0x4c, 0xab, 0xcb, 0xfc, 0x17, 0x84, + 0x12, 0x8e, 0x31, 0xac, 0xb0, 0xe9, 0xce, 0x68, + 0x13, 0x5f, 0x5e, 0x67, 0x35, 0xe3, 0x49, 0x9d, + 0x76, 0xae, 0x6b, 0x2f, 0x28, 0xe1, 0xf2, 0xf8, + 0xd9, 0xf8, 0x69, 0x56, 0xdb, 0x22, 0x46, 0x2e, + 0x86, 0xa3, 0x48, 0x11, 0xd6, 0xfd, 0x91, 0x93, + 0x92, 0x66, 0xf3, 0x83, 0xd6, 0xe8, 0xf9, 0xb8, + 0x39, 0x21, 0x23, 0xd7, 0xef, 0x06, 0x1c, 0xb8, + 0x36, 0x30, 0xd6, 0x4c, 0x38, 0xcb, 0x67, 0x77, + 0xb4, 0x3f, 0xee, 0x44, 0xd4, 0x88, 0x33, 0x6e, + 0x8e, 0x9a, 0x33, 0xb5, 0x14, 0xbc, 0x00, 0xd3, + 0x58, 0x7f, 0x41, 0x73, 0x56, 0x11, 0xa3, 0x5e, + 0x8d, 0x55, 0x63, 0xa5, 0x91, 0x57, 0xc8, 0xce, + 0x81, 0xff, 0x4e, 0x7c, 0x23, 0xdc, 0xe7, 0xf6, + 0x2e, 0xf7, 0xb3, 0xf5, 0x99, 0x88, 0x77, 0xbe, + 0xca, 0x3d, 0x7e, 0xb3, 0x6b, 0x1e, 0x99, 0xfd, + 0x6f, 0xbc, 0xdc, 0xb9, 0xab, 0xae, 0x82, 0x6a, + 0xdb, 0x66, 0xdd, 0xc7, 0x3f, 0x73, 0xca, 0xba, + 0x9a, 0xd6, 0xc0, 0xee, 0x9f, 0x65, 0xb5, 0xb9, + 0x9d, 0xb4, 0x9a, 0x76, 0xe6, 0x0e, 0x3f, 0x36, + 0x65, 0xb0, 0xe7, 0xc8, 0x98, 0x0a, 0x5f, 0x99, + 0x39, 0x55, 0x49, 0x3b, 0x47, 0x95, 0x9c, 0x59, + 0x90, 0x73, 0xe6, 0xba, 0x33, 0x70, 0xf8, 0xd1, + 0x79, 0xae, 0x96, 0xd1, 0xef, 0x0b, 0x34, 0x33, + 0x65, 0x16, 0x2a, 0x39, 0xa7, 0x50, 0x59, 0x30, + 0x17, 0x0e, 0x0a, 0x6a, 0xce, 0x41, 0x36, 0xf5, + 0x5c, 0x6d, 0x49, 0xff, 0x13, 0x1a, 0xac, 0x46, + 0x7f, 0xed, 0x28, 0x1e, 0x7d, 0x15, 0xfd, 0x77, + 0x4c, 0xae, 0xed, 0xb0, 0xa9, 0xe2, 0x29, 0xf5, + 0x6b, 0xb5, 0xdf, 0xd3, 0x4f, 0xf1, 0xad, 0x54, + 0x5e, 0x08, 0xe6, 0x21, 0xda, 0x4f, 0x4e, 0xbf, + 0xf7, 0xf1, 0x2a, 0xa4, 0x04, 0x81, 0x98, 0xc0, + 0x59, 0xbb, 0x4f, 0x45, 0x15, 0x32, 0x59, 0x91, + 0xcb, 0xaa, 0xf1, 0x98, 0xe2, 0xd8, 0xee, 0xe7, + 0xa2, 0x16, 0x33, 0xea, 0x25, 0x77, 0x34, 0x8b, + 0x05, 0x6e, 0xcb, 0x01, 0x2b, 0xaa, 0xd4, 0x7d, + 0x4e, 0x25, 0xe4, 0x57, 0x8a, 0x6b, 0x29, 0x42, + 0xe0, 0x04, 0x7a, 0xba, 0x40, 0xd3, 0x38, 0xf7, + 0x8c, 0xc7, 0x59, 0x27, 0x62, 0xe4, 0x9b, 0xd8, + 0x31, 0x98, 0xb0, 0x17, 0xf9, 0x6d, 0x5b, 0x60, + 0x6c, 0x33, 0x15, 0x17, 0x09, 0x23, 0x5c, 0x39, + 0x0f, 0x65, 0x90, 0xdd, 0x72, 0xd9, 0x2c, 0x99, + 0xe3, 0x66, 0xc4, 0x44, 0x5d, 0x0f, 0xea, 0xb3, + 0xbb, 0xc8, 0xcc, 0x19, 0x25, 0x02, 0x71, 0xf5, + 0xc0, 0xb9, 0xc0, 0x23, 0xb6, 0x5b, 0x82, 0x43, + 0xb1, 0x14, 0xc6, 0xa8, 0xd9, 0x9c, 0xa2, 0x36, + 0xeb, 0xb4, 0x13, 0x97, 0xe3, 0x72, 0x42, 0x1e, + 0xc1, 0xa3, 0x98, 0x2d, 0x66, 0x5f, 0x3e, 0x49, + 0x7a, 0xb1, 0x59, 0x52, 0x44, 0x65, 0xf7, 0x29, + 0xb0, 0x8f, 0x47, 0x76, 0x88, 0x65, 0xd0, 0xed, + 0x4b, 0xde, 0x24, 0x66, 0x33, 0xd9, 0x5c, 0xa1, + 0x8a, 0x1d, 0xec, 0x4d, 0x95, 0x8e, 0x0a, 0xf3, + 0xbf, 0x5d, 0xca, 0x95, 0xd4, 0xf3, 0x44, 0x6c, + 0x7c, 0x52, 0x2d, 0x57, 0x5c, 0x35, 0x19, 0x77, + 0x96, 0x87, 0x21, 0xb5, 0x27, 0x95, 0x9c, 0xb2, + 0x85, 0xbf, 0xf9, 0x3d, 0x82, 0x8e, 0xfa, 0x33, + 0x72, 0x7d, 0xba, 0xdf, 0x47, 0xb9, 0xa3, 0xd1, + 0x8c, 0xaa, 0x4c, 0xb3, 0xe2, 0x57, 0xf0, 0x89, + 0x50, 0x21, 0x0d, 0xd1, 0x2b, 0xc9, 0xca, 0xb0, + 0x52, 0x71, 0xbb, 0xa5, 0x47, 0xb6, 0x90, 0x29, + 0x38, 0x5c, 0x66, 0xdd, 0x0e, 0x48, 0x47, 0xc7, + 0xc2, 0x9b, 0x45, 0x58, 0x09, 0x5b, 0x72, 0xb2, + 0x67, 0xc6, 0xe4, 0xf9, 0x0f, 0x57, 0x57, 0xfb, + 0x1a, 0x57, 0xce, 0x2a, 0x93, 0xf4, 0xea, 0x5d, + 0x13, 0x19, 0x9e, 0xe2, 0x0f, 0xab, 0xae, 0x44, + 0x0d, 0xd6, 0xbb, 0x64, 0xd6, 0x1b, 0xe3, 0xc5, + 0x05, 0x73, 0xda, 0x89, 0xba, 0xa8, 0xff, 0xc4, + 0x3e, 0xc4, 0x6d, 0xc4, 0x4f, 0xc8, 0x8b, 0x71, + 0x31, 0x61, 0xc6, 0x33, 0xf5, 0xdf, 0x64, 0x67, + 0xa5, 0x71, 0xdd, 0x29, 0xbc, 0xba, 0xfe, 0x6a, + 0xe5, 0xb5, 0xab, 0xf4, 0xca, 0xb8, 0xdf, 0xa5, + 0x82, 0x33, 0x9f, 0xcf, 0x9d, 0xdf, 0x3c, 0x4e, + 0x49, 0x4c, 0x21, 0xb4, 0xe8, 0xf2, 0x15, 0xb0, + 0x47, 0xe9, 0x71, 0x58, 0xd1, 0x37, 0x8f, 0x25, + 0x52, 0x73, 0x2d, 0x36, 0x9e, 0x7a, 0x3a, 0xcb, + 0x74, 0xbf, 0x87, 0x29, 0xf3, 0xca, 0xa9, 0x9f, + 0x50, 0xe4, 0x49, 0x96, 0x83, 0x62, 0x33, 0x17, + 0x1f, 0x5e, 0x0c, 0xbc, 0x1c, 0x6c, 0x54, 0x91, + 0xc5, 0x48, 0x70, 0x95, 0xdf, 0xf3, 0x4c, 0xa3, + 0x19, 0x67, 0x1a, 0x22, 0x90, 0x43, 0x0e, 0xc2, + 0xb3, 0xe0, 0x5f, 0x93, 0x5d, 0x3d, 0x11, 0xa1, + 0xd0, 0xc6, 0x47, 0xc7, 0xd4, 0x39, 0xf5, 0xb2, + 0x7a, 0x23, 0x89, 0x53, 0xdc, 0xe1, 0xe6, 0x0f, + 0x2d, 0x4f, 0xfd, 0x99, 0x21, 0x70, 0x22, 0x4a, + 0xc2, 0xc2, 0x49, 0x23, 0xb0, 0x03, 0xd6, 0x6c, + 0xf9, 0x9a, 0xf6, 0xdd, 0x4e, 0x40, 0xe9, 0x9d, + 0x50, 0x48, 0x15, 0x8b, 0xbf, 0xf5, 0x32, 0x99, + 0x30, 0xbb, 0x31, 0x01, 0x76, 0x03, 0x6c, 0xd8, + 0xce, 0x2e, 0xea, 0xb3, 0x98, 0x23, 0x66, 0xa4, + 0x16, 0x15, 0x26, 0x05, 0x8c, 0xdb, 0x11, 0x37, + 0xbf, 0x61, 0x4b, 0xa6, 0x64, 0x0f, 0x9b, 0x60, + 0x25, 0x91, 0x9f, 0x0f, 0xec, 0xcd, 0xc3, 0xa6, + 0xea, 0x2b, 0xa3, 0xc1, 0x69, 0xdf, 0x82, 0x7c, + 0x78, 0x97, 0xd4, 0x64, 0xc6, 0xb4, 0x39, 0xf4, + 0x29, 0x0a, 0x43, 0x74, 0xcb, 0xc6, 0x53, 0x86, + 0x0d, 0x72, 0xaf, 0x6b, 0xc9, 0x9a, 0xaf, 0xfc, + 0x89, 0xae, 0x8a, 0x3d, 0x97, 0xe9, 0x3c, 0x22, + 0xaf, 0x1a, 0x44, 0xa3, 0x70, 0x05, 0x37, 0xd5, + 0x12, 0xcb, 0xcb, 0xc0, 0x5a, 0x5d, 0x3f, 0xcf, + 0x99, 0x77, 0xc4, 0x9c, 0xb9, 0xe4, 0xac, 0x1e, + 0xa3, 0xfa, 0xc2, 0xc7, 0x6f, 0xfe, 0x62, 0x22, + 0x07, 0xae, 0x97, 0x11, 0x90, 0x6f, 0x00, 0x6b, + 0xf0, 0xbd, 0xca, 0x70, 0x6e, 0xbe, 0x3e, 0x3b, + 0xd3, 0x3e, 0x53, 0x3a, 0xfa, 0xa1, 0xdd, 0x8f, + 0x76, 0xa9, 0x5d, 0x9b, 0x82, 0x4d, 0xdc, 0xe0, + 0x95, 0x49, 0x73, 0x4c, 0x76, 0x91, 0x7b, 0x5d, + 0xca, 0x56, 0xbd, 0xfc, 0x01, 0xee, 0x7c, 0x68, + 0x6b, 0x8c, 0xfa, 0x9d, 0xcc, 0x76, 0x44, 0xd5, + 0xbf, 0xbd, 0xeb, 0x74, 0xdb, 0x3a, 0x6c, 0xf6, + 0x13, 0xa4, 0xcb, 0x72, 0xd3, 0x7c, 0xfc, 0xde, + 0x8b, 0x2c, 0x5c, 0x7c, 0x0e, 0x17, 0x02, 0x7b, + 0xb2, 0x88, 0x93, 0xbf, 0x36, 0x55, 0x6f, 0xb9, + 0x18, 0x97, 0xe2, 0x8a, 0x9c, 0xcb, 0x7b, 0x59, + 0x85, 0x0c, 0xe7, 0x74, 0x56, 0x5b, 0x97, 0x52, + 0xda, 0xac, 0xd3, 0xcb, 0x7c, 0xe8, 0x3d, 0x0a, + 0xbe, 0x53, 0xbb, 0xae, 0x67, 0x1d, 0x64, 0xab, + 0xf7, 0xe6, 0x16, 0x7b, 0xf7, 0xc2, 0x7a, 0x75, + 0xf6, 0x74, 0xbd, 0x72, 0x05, 0xe7, 0x1a, 0xed, + 0x8a, 0x4e, 0x15, 0x39, 0x57, 0x53, 0x02, 0xbb, + 0x6f, 0x4c, 0xdd, 0xa8, 0x83, 0x43, 0x0e, 0xf8, + 0x6c, 0xff, 0xf8, 0x79, 0xd9, 0xef, 0x58, 0xff, + 0x08, 0xb4, 0xd6, 0xf3, 0x3e, 0x76, 0x8b, 0xb8, + 0xaa, 0xe2, 0xa8, 0xd5, 0x66, 0x26, 0x8e, 0xd3, + 0x72, 0xfa, 0xcd, 0x27, 0x4d, 0x9a, 0xb7, 0xa2, + 0xfa, 0x04, 0xa1, 0x2e, 0x28, 0x72, 0xbc, 0x38, + 0xf7, 0x24, 0x90, 0x36, 0xb3, 0xdb, 0xf3, 0xd6, + 0x33, 0xb6, 0xac, 0xcf, 0x0b, 0x10, 0xd3, 0x52, + 0xe6, 0x45, 0x9c, 0x5d, 0x1a, 0x78, 0xba, 0xb3, + 0xcb, 0xda, 0xb8, 0x8a, 0xfc, 0x93, 0xaa, 0x11, + 0x3c, 0x85, 0xef, 0xfd, 0xf4, 0x8a, 0x40, 0x28, + 0xf4, 0xb5, 0xc4, 0x71, 0x8d, 0xde, 0x73, 0xcd, + 0x2c, 0x1c, 0xdf, 0x92, 0xf7, 0xe4, 0xd2, 0xf1, + 0x48, 0x75, 0xb4, 0x8c, 0xef, 0x8b, 0xb9, 0xf3, + 0x25, 0x6b, 0x43, 0xc4, 0x99, 0x5f, 0x52, 0x26, + 0xd5, 0x53, 0x6a, 0x4a, 0xdb, 0x90, 0x1e, 0x18, + 0xc8, 0x54, 0x23, 0x51, 0xf4, 0xf9, 0xa9, 0x8d, + 0xd3, 0xdb, 0x3c, 0xac, 0xcc, 0xc4, 0xe1, 0xe8, + 0xdb, 0x9c, 0xba, 0x70, 0xb8, 0xfb, 0x76, 0x63, + 0xbf, 0x83, 0xba, 0xdf, 0xe4, 0x7f, 0x0f, 0xcf, + 0x80, 0x4a, 0x07, 0x59, 0xec, 0x0a, 0x93, 0xba, + 0xc3, 0x98, 0x95, 0x55, 0x37, 0x33, 0xc1, 0x7c, + 0x50, 0x0b, 0xea, 0xb7, 0x18, 0x5b, 0x54, 0x2d, + 0xdb, 0x7c, 0x28, 0x7a, 0x33, 0x08, 0xbd, 0x2a, + 0x63, 0xf0, 0x0a, 0x18, 0x2f, 0x4b, 0x01, 0xac, + 0x12, 0xc0, 0x4a, 0x19, 0xcc, 0x4f, 0xb4, 0xbe, + 0xe6, 0x30, 0x7a, 0x40, 0xb6, 0x4e, 0xe4, 0xfc, + 0x0f, 0x59, 0x75, 0x71, 0xca, 0x8a, 0x36, 0xe0, + 0x7c, 0x39, 0x5a, 0xc3, 0xe9, 0x08, 0xbe, 0x5a, + 0x6f, 0x11, 0xff, 0x15, 0x31, 0x00, 0xbf, 0xb0, + 0x88, 0x27, 0xcc, 0x7a, 0xa1, 0x7d, 0x0e, 0x51, + 0xd4, 0x48, 0xe9, 0xea, 0xce, 0xd7, 0x3b, 0xbc, + 0x3b, 0x4b, 0x8b, 0x8c, 0x98, 0x29, 0x6d, 0xbd, + 0x0c, 0x27, 0xec, 0xae, 0x54, 0x71, 0xfe, 0xe0, + 0xce, 0x7e, 0xb9, 0x6b, 0x9e, 0xdd, 0x9f, 0x17, + 0x93, 0x30, 0x8e, 0xa4, 0x48, 0x85, 0x42, 0x7e, + 0x1e, 0xee, 0xe7, 0x70, 0x65, 0x04, 0x22, 0xaa, + 0xa7, 0xbf, 0x63, 0x09, 0xd9, 0xb4, 0xfb, 0x0b, + 0x8b, 0x26, 0xe9, 0x95, 0xd1, 0x83, 0x95, 0x43, + 0xed, 0x34, 0xc2, 0xb4, 0x84, 0x5a, 0x1e, 0x8a, + 0x15, 0x33, 0x39, 0x42, 0xdd, 0xaa, 0x1d, 0xec, + 0xed, 0x1f, 0xf2, 0x2e, 0x6f, 0xbc, 0x10, 0x05, + 0x0f, 0xfb, 0x15, 0xe2, 0x55, 0x65, 0xe1, 0x0d, + 0xec, 0xa3, 0xc3, 0xb1, 0x63, 0x57, 0x6f, 0x91, + 0x3a, 0x35, 0xb5, 0x66, 0x40, 0xfc, 0xd8, 0xe6, + 0xf9, 0x8f, 0xed, 0x3e, 0xec, 0xd4, 0xd8, 0x39, + 0xf8, 0x49, 0xe8, 0x0e, 0x62, 0xe1, 0xc6, 0x19, + 0x9e, 0x1b, 0xda, 0xae, 0x4a, 0x36, 0xc4, 0x88, + 0x9c, 0x82, 0x77, 0x3b, 0x4d, 0x08, 0x8c, 0x0f, + 0x6a, 0x95, 0xb4, 0xb3, 0x50, 0xd3, 0x7b, 0x52, + 0x77, 0x39, 0x24, 0x6d, 0xec, 0xde, 0xb1, 0x8a, + 0x5c, 0xa0, 0x85, 0x8a, 0x90, 0x05, 0x42, 0xb1, + 0xd3, 0x04, 0xb7, 0xe0, 0x4d, 0x70, 0x7b, 0x6c, + 0x51, 0xc4, 0x01, 0x4b, 0xfb, 0xc2, 0x9b, 0xce, + 0xe1, 0x7c, 0x06, 0x51, 0x99, 0xf2, 0xa0, 0x35, + 0x1d, 0xf2, 0x1f, 0x88, 0x38, 0x49, 0xa1, 0x8c, + 0xe6, 0x43, 0x59, 0xc4, 0x48, 0x9f, 0x53, 0x4f, + 0xe7, 0xef, 0x89, 0xf3, 0x0e, 0x69, 0x95, 0x94, + 0xe6, 0x0e, 0x76, 0xfe, 0x45, 0xfd, 0x23, 0x1d, + 0x5e, 0x05, 0xfb, 0x59, 0xe5, 0xa9, 0x83, 0xa1, + 0x5f, 0x9e, 0xf3, 0x3d, 0x8a, 0x5d, 0xb0, 0xea, + 0x83, 0xd6, 0x91, 0x26, 0x68, 0xe1, 0x57, 0x13, + 0xa5, 0xf1, 0x9d, 0x8c, 0xb2, 0xed, 0x08, 0x1d, + 0x04, 0x6c, 0xbe, 0x9e, 0x49, 0x3b, 0x6b, 0x65, + 0xe1, 0xf8, 0xda, 0xe4, 0x7f, 0xb0, 0xa8, 0xd5, + 0x66, 0x2a, 0xbe, 0x45, 0x77, 0xfe, 0x88, 0xe1, + 0x4e, 0x06, 0x24, 0xbe, 0xc9, 0x37, 0x43, 0x12, + 0x62, 0x37, 0x39, 0xc5, 0xf3, 0x65, 0xac, 0x83, + 0xd1, 0x89, 0xa1, 0x3b, 0x75, 0x4b, 0xa6, 0xf0, + 0x3b, 0x5d, 0x4a, 0xff, 0xef, 0x11, 0x97, 0xb3, + 0x49, 0xcf, 0x4f, 0xe1, 0xab, 0x37, 0xf5, 0x9c, + 0x90, 0x61, 0x0a, 0x38, 0x10, 0x5d, 0xf7, 0x3b, + 0x47, 0x7c, 0x1f, 0x75, 0x30, 0xd6, 0x6a, 0xfd, + 0x2d, 0xba, 0xa3, 0xc5, 0x35, 0xaa, 0xf6, 0x30, + 0xcf, 0x4d, 0x7a, 0x6e, 0x2d, 0xea, 0x32, 0xb6, + 0x67, 0x92, 0x2e, 0x6b, 0x48, 0xd8, 0x47, 0x0d, + 0x21, 0xf3, 0x3f, 0xd8, 0xef, 0xf1, 0xff, 0x19, + 0x7f, 0x3b, 0x6d, 0x8c, 0x9f, 0x44, 0xf3, 0xb2, + 0x8a, 0x7a, 0x7c, 0x2e, 0x87, 0x15, 0x3f, 0xc2, + 0x8f, 0xd9, 0x2b, 0x87, 0xb7, 0x0f, 0x6f, 0x9e, + 0x97, 0xde, 0x68, 0xcd, 0x8e, 0x82, 0x15, 0xe9, + 0x5a, 0x9a, 0xf2, 0x71, 0xf6, 0xa0, 0x1f, 0x56, + 0x18, 0xec, 0x51, 0x0e, 0x31, 0x72, 0x0a, 0xe3, + 0xd9, 0xa6, 0x1c, 0x36, 0xca, 0xa3, 0x46, 0xc2, + 0xbd, 0xc3, 0x6f, 0x0e, 0xe7, 0xce, 0xe7, 0xde, + 0xc8, 0xcd, 0x7b, 0xbe, 0x8a, 0x3a, 0xde, 0xa3, + 0x39, 0x3e, 0x8d, 0x53, 0xd1, 0x87, 0xf3, 0x87, + 0xeb, 0xe7, 0xa8, 0x89, 0x0a, 0x11, 0xbc, 0xbc, + 0x33, 0xf9, 0xff, 0xe8, 0xc4, 0x21, 0xbf +}; +#else +const unsigned char font_8140[]={0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30, +0x00,0x48,0x00,0x48,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60, +0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x01,0x00,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x03,0x00,0x03,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x07,0x80,0x08,0x40,0x10,0x20,0x10,0x20,0x10,0x20,0x00,0x40,0x00,0x80,0x01, +0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01, +0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x00,0x00,0x01,0x00,0x03,0x80,0x01,0x00,0x00,0x00,0x10,0x00,0x48,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,0x30,0x00,0x48,0x00,0x48,0x00,0x30, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x03,0x00,0x04,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x03,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x0c,0x60,0x0c,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x08,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff, +0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x0c,0x00,0x03,0x00,0x00,0x80,0x00,0x40,0x00,0x20,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00, +0x90,0x0c,0x40,0x03,0x00,0x00,0x80,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c, +0x00,0x03,0x00,0x00,0x80,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x90,0x0c,0x40,0x03, +0x00,0x00,0x80,0x00,0xc0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x40,0x04,0x40,0x04, +0x40,0x08,0x80,0x08,0x80,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x01,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x08,0x20,0x10,0x10,0x60,0x0c,0x0f, +0xe0,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x03,0xf0,0x04,0x20,0x04,0x20,0x08,0x40,0x12, +0x80,0x01,0x80,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x10,0x00,0x10,0x00,0x20,0x06,0x40,0x09,0x80,0x09,0x00,0x12,0x80,0x14, +0x00,0x18,0x00,0x10,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xc0,0x18, +0x30,0x20,0x08,0x20,0x08,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x20, +0x08,0x20,0x08,0x18,0x30,0x07,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x3f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x07,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x80,0x01, +0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x80,0x00,0x00, +0x00,0x80,0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01, +0x00,0x00,0x80,0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x08,0x00,0x04,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x22,0x08,0x41,0x10,0x00, +0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x80,0x04, +0x80,0x04,0x80,0x04,0x80,0x04,0x80,0x04,0x80,0x04,0x80,0x04,0x80,0x04,0x80,0x04, +0x80,0x04,0x80,0x04,0x80,0x04,0x80,0x04,0x80,0x00,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x33,0x30,0x00,0x00,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,0x40,0x10,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x20,0x00,0x30,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x30,0x00,0x10,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x88,0x01,0x10,0x03,0x30,0x03,0x30,0x03,0x30,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33, +0x00,0x11,0x00,0x11,0x00,0x22,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00, +0x10,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00, +0x40,0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x08,0x00,0x00,0x40,0x00,0x20,0x00,0x10, +0x00,0x08,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0x08, +0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x00,0x08,0x00,0x10,0x00,0x20,0x00, +0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00, +0x20,0x00,0x10,0x00,0x08,0x00,0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x08,0x00,0x08, +0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0x20, +0x00,0x40,0x00,0x00,0x00,0x00,0xf8,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00, +0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00, +0xf8,0x00,0x00,0x7c,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04, +0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x7c,0x00,0x00, +0x00,0x00,0x18,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x01,0x80,0x00, +0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x18,0x00,0x00,0x60, +0x00,0x10,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x06,0x00,0x08,0x00,0x08, +0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0x60,0x00,0x00,0x00,0x00,0x08,0x00, +0x10,0x00,0x20,0x00,0x40,0x00,0x80,0x01,0x00,0x02,0x00,0x02,0x00,0x01,0x00,0x00, +0x80,0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x08,0x00,0x00,0x40,0x00,0x20,0x00,0x10, +0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x08, +0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x00,0x48,0x00,0x48,0x00,0x90,0x00, +0x90,0x01,0x20,0x01,0x20,0x02,0x40,0x02,0x40,0x01,0x20,0x01,0x20,0x00,0x90,0x00, +0x90,0x00,0x48,0x00,0x48,0x00,0x00,0x48,0x00,0x48,0x00,0x24,0x00,0x24,0x00,0x12, +0x00,0x12,0x00,0x09,0x00,0x09,0x00,0x12,0x00,0x12,0x00,0x24,0x00,0x24,0x00,0x48, +0x00,0x48,0x00,0x00,0x00,0x01,0xf8,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02, +0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x7e,0x00,0x00, +0x00,0x03,0xf8,0x02,0x08,0x02,0xf8,0x02,0x80,0x02,0x80,0x02,0x80,0x02,0x80,0x02, +0x80,0x02,0x80,0x02,0x80,0x02,0x80,0x02,0x80,0x02,0x80,0x03,0x80,0x00,0x00,0x07, +0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05, +0x00,0x05,0x00,0x05,0x00,0x7d,0x00,0x41,0x00,0x7f,0x00,0x00,0x00,0x00,0xf8,0x00, +0xf0,0x00,0xe0,0x00,0xe0,0x00,0xc0,0x00,0xc0,0x00,0xc0,0x00,0xc0,0x00,0xc0,0x00, +0xc0,0x00,0xe0,0x00,0xe0,0x00,0xf0,0x00,0xf8,0x00,0x00,0x7c,0x00,0x3c,0x00,0x1c, +0x00,0x1c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x1c, +0x00,0x1c,0x00,0x3c,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x3f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3f, +0xf8,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x3f,0xf8,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x20,0x08,0x10,0x10,0x08,0x20,0x04,0x40,0x02,0x80,0x01, +0x00,0x02,0x80,0x04,0x40,0x08,0x20,0x10,0x10,0x20,0x08,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x01,0x00,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x00, +0x00,0x00,0x00,0x01,0x00,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x3f, +0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x80,0x00,0x80,0x00,0x80,0x3f,0xf8,0x01,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x02, +0x00,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x60,0x00, +0x80,0x03,0x00,0x04,0x00,0x18,0x00,0x20,0x00,0x18,0x00,0x04,0x00,0x03,0x00,0x00, +0x80,0x00,0x60,0x00,0x10,0x00,0x00,0x00,0x00,0x20,0x00,0x18,0x00,0x04,0x00,0x03, +0x00,0x00,0x80,0x00,0x60,0x00,0x10,0x00,0x60,0x00,0x80,0x03,0x00,0x04,0x00,0x18, +0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0xc0,0x03,0x00,0x0c,0x00,0x30, +0x00,0x0c,0x00,0x03,0x00,0x00,0xc0,0x00,0x30,0x00,0x00,0x3f,0xf8,0x00,0x00,0x3f, +0xf8,0x00,0x00,0x00,0x00,0x30,0x00,0x0c,0x00,0x03,0x00,0x00,0xc0,0x00,0x30,0x00, +0xc0,0x03,0x00,0x0c,0x00,0x30,0x00,0x00,0x00,0x3f,0xf8,0x00,0x00,0x3f,0xf8,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x70,0x36,0xd8,0x23, +0x88,0x23,0x88,0x36,0xd8,0x1c,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x10,0x10,0x38,0x38,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x03,0xf8,0x00,0x18,0x00,0x28,0x00,0x48,0x00,0x88,0x1d,0x08,0x22,0x08,0x41, +0x00,0x41,0x00,0x41,0x00,0x22,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03, +0x80,0x04,0x40,0x08,0x20,0x08,0x20,0x08,0x20,0x04,0x40,0x03,0x80,0x01,0x00,0x01, +0x00,0x1f,0xf0,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x24, +0x00,0x24,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x10, +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,0x1b,0x00,0x1b,0x00,0x12,0x00,0x24, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x48,0xe8,0x49,0x18,0x32,0x08,0x04, +0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x02,0x08,0x01,0x10,0x00,0xe0,0x00, +0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x20,0x20,0x10,0x40,0x08,0x80,0x7f,0xf0,0x05, +0x00,0x02,0x00,0x7f,0xf0,0x02,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x01,0x00,0x07,0xc0,0x09,0x20,0x11,0x10,0x11,0x10,0x0d,0x00,0x03, +0x80,0x01,0x60,0x11,0x10,0x11,0x10,0x09,0x20,0x07,0xc0,0x01,0x00,0x00,0x00,0x00, +0x00,0x00,0x80,0x00,0x80,0x03,0x80,0x05,0x40,0x09,0x20,0x11,0x20,0x11,0x00,0x12, +0x00,0x0a,0x20,0x06,0x40,0x07,0x80,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00, +0xc0,0x01,0x20,0x02,0x10,0x02,0x00,0x04,0x00,0x04,0x00,0x3f,0xe0,0x04,0x00,0x34, +0x00,0x4c,0x08,0x4b,0x10,0x30,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x08,0x24, +0x10,0x42,0x20,0x42,0x40,0x24,0x80,0x19,0x00,0x02,0x60,0x04,0x90,0x09,0x08,0x11, +0x08,0x20,0x90,0x40,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x20,0x02,0x20,0x02, +0x20,0x1f,0xf8,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x3f,0xf0,0x08,0x80,0x08, +0x80,0x08,0x80,0x08,0x80,0x00,0x00,0x00,0x00,0x0e,0x00,0x11,0x00,0x11,0x00,0x11, +0x00,0x0a,0x00,0x04,0x38,0x0a,0x10,0x11,0x20,0x20,0xc0,0x20,0xc0,0x11,0x20,0x0e, +0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x03,0x80,0x19,0x30,0x1d, +0x70,0x03,0x80,0x03,0x80,0x1d,0x70,0x19,0x30,0x03,0x80,0x01,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x0c,0x60,0x10,0x10,0x23,0xc8,0x24,0xc8,0x44, +0xc8,0x48,0x88,0x49,0x90,0x27,0x60,0x20,0x08,0x18,0x30,0x07,0xc0,0x00,0x00,0x00, +0x00,0x03,0x80,0x04,0x40,0x04,0x40,0x06,0x00,0x03,0x00,0x03,0x80,0x04,0xc0,0x06, +0x40,0x03,0x80,0x01,0x80,0x00,0xc0,0x04,0x40,0x04,0x40,0x03,0x80,0x00,0x00,0x00, +0x00,0x01,0x00,0x01,0x00,0x02,0x80,0x02,0x80,0x7c,0x7c,0x30,0x18,0x0c,0x60,0x04, +0x40,0x09,0x20,0x0a,0xa0,0x1c,0x70,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x01, +0x00,0x01,0x00,0x03,0x80,0x03,0x80,0x7f,0xfc,0x3f,0xf8,0x0f,0xe0,0x07,0xc0,0x0f, +0xe0,0x0e,0xe0,0x1c,0x70,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03, +0x80,0x0c,0x60,0x10,0x10,0x10,0x10,0x20,0x08,0x20,0x08,0x20,0x08,0x10,0x10,0x10, +0x10,0x0c,0x60,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x0f, +0xe0,0x1f,0xf0,0x1f,0xf0,0x3f,0xf8,0x3f,0xf8,0x3f,0xf8,0x1f,0xf0,0x1f,0xf0,0x0f, +0xe0,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x0c,0x60,0x13, +0x90,0x14,0x50,0x28,0x28,0x28,0x28,0x28,0x28,0x14,0x50,0x13,0x90,0x0c,0x60,0x03, +0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x08,0x20,0x10, +0x10,0x20,0x08,0x40,0x04,0x20,0x08,0x10,0x10,0x08,0x20,0x04,0x40,0x02,0x80,0x01, +0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x03,0x80,0x07,0xc0,0x0f,0xe0,0x1f,0xf0,0x3f, +0xf8,0x7f,0xfc,0x3f,0xf8,0x1f,0xf0,0x0f,0xe0,0x07,0xc0,0x03,0x80,0x01,0x00,0x00, +0x00,0x00,0x00,0x7f,0xf8,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40, +0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x7f,0xf8,0x00,0x00,0x00,0x00,0x00, +0x00,0x7f,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f, +0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x01, +0x00,0x01,0x00,0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x08,0x20,0x10, +0x10,0x10,0x10,0x3f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01, +0x00,0x03,0x80,0x03,0x80,0x07,0xc0,0x07,0xc0,0x0f,0xe0,0x0f,0xe0,0x1f,0xf0,0x1f, +0xf0,0x3f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x10,0x10,0x10, +0x10,0x08,0x20,0x08,0x20,0x04,0x40,0x04,0x40,0x02,0x80,0x02,0x80,0x01,0x00,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x1f,0xf0,0x1f,0xf0,0x0f, +0xe0,0x0f,0xe0,0x07,0xc0,0x07,0xc0,0x03,0x80,0x03,0x80,0x01,0x00,0x01,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x08,0x13,0x90,0x09,0x20,0x04, +0x40,0x12,0x90,0x39,0x38,0x12,0x90,0x04,0x40,0x09,0x20,0x13,0x90,0x21,0x08,0x00, +0x00,0x00,0x00,0x00,0x00,0x3f,0xf0,0x3f,0xf0,0x00,0x00,0x00,0x00,0x7f,0xf8,0x7f, +0xf8,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x80,0x00,0x60,0x7f,0xf8,0x00, +0x60,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x04,0x00,0x18,0x00,0x7f,0xf8,0x18,0x00,0x04, +0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01, +0x00,0x01,0x00,0x03,0x80,0x03,0x80,0x05,0x40,0x09,0x20,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x09,0x20,0x05,0x40,0x03,0x80,0x03, +0x80,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x3f,0xf0,0x3f,0xf0,0x00,0x00,0x00,0x00,0x3f,0xf0,0x3f,0xf0,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xf0,0x0c,0x00,0x10, +0x00,0x20,0x00,0x3f,0xf0,0x20,0x00,0x10,0x00,0x0c,0x00,0x03,0xf0,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x00,0x00,0xc0,0x00,0x20,0x00, +0x10,0x3f,0xf0,0x00,0x10,0x00,0x20,0x00,0xc0,0x3f,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x10,0x00,0x20,0x00,0x20,0x00,0x20, +0x00,0x10,0x00,0x0f,0xf0,0x00,0x00,0x00,0x00,0x3f,0xf0,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x3f,0xc0,0x00,0x20,0x00,0x10,0x00,0x10,0x00,0x10,0x00, +0x20,0x3f,0xc0,0x00,0x00,0x00,0x00,0x3f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x03,0xf0,0x0c,0x00,0x10,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20, +0x00,0x10,0x00,0x0c,0x00,0x03,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x3f,0x00,0x00,0xc0,0x00,0x20,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00, +0x20,0x00,0xc0,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20, +0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x10,0x20,0x10,0x20,0x08, +0x40,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x08, +0x40,0x10,0x20,0x10,0x20,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20, +0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x02, +0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x08,0x20,0x10,0x10,0x10,0x10,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x08,0x20,0x08, +0x20,0x04,0x40,0x04,0x40,0x02,0x80,0x02,0x80,0x01,0x00,0x01,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f, +0xf0,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x7f,0xf0,0x00,0x08,0x7f, +0xf0,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x10,0x20,0x3f,0xf0,0x40,0x08,0x3f,0xf0,0x10, +0x20,0x08,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20, +0x08,0x20,0x08,0x10,0x10,0x1f,0xf0,0x08,0x20,0x08,0x20,0x04,0x40,0x04,0x40,0x02, +0x80,0x02,0x80,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xe0,0x00, +0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x1f,0xe0,0x00,0x20,0x00,0x20,0x00,0x20,0x00, +0x20,0x1f,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00, +0x20,0x00,0x40,0x00,0x80,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x3f, +0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xe0,0x30,0x18,0x40,0x04,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,0xc0,0x02,0x60,0x00,0x20,0x00,0x20,0x03,0xa0,0x06, +0x60,0x04,0x60,0x0c,0x60,0x0c,0x40,0x0c,0xc0,0x05,0x80,0x03,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x1f,0xf0,0x18,0x10,0x08,0x20,0x0c,0x20,0x04, +0x40,0x06,0x40,0x02,0x80,0x03,0x80,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x3f,0xf0,0x00,0x00,0x00,0x00,0x3f,0xf0,0x00,0x00,0x00, +0x00,0x3f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x08,0x00,0x1c,0x00,0x08,0x00,0x3f,0xf0,0x00,0x00,0x00,0x00,0x3f,0xf0,0x00, +0x40,0x00,0xe0,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x02, +0x20,0x04,0x40,0x08,0x80,0x11,0x00,0x22,0x00,0x11,0x00,0x08,0x80,0x04,0x40,0x02, +0x20,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x00,0x11,0x00,0x08, +0x80,0x04,0x40,0x02,0x20,0x01,0x10,0x02,0x20,0x04,0x40,0x08,0x80,0x11,0x00,0x22, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xf8,0x01,0x00,0x01,0x00,0x01, +0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x22,0x00,0x74,0x00,0x1c,0x00,0x0c,0x00,0x04, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x60,0x10, +0x90,0x21,0x08,0x21,0x08,0x12,0x10,0x0c,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x30,0x09,0x40,0x10, +0x80,0x10,0x80,0x09,0x40,0x06,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x38,0x38,0x10,0x10,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x01,0x00,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xc0,0x01,0x00,0x02,0x00,0x02,0x00,0x03,0x00,0x03,0x00,0x01,0x80,0x01,0x80,0x00, +0xc0,0x00,0xc0,0x00,0x40,0x00,0x40,0x00,0x80,0x03,0x00,0x00,0x00,0x06,0x60,0x08, +0x80,0x11,0x00,0x11,0x00,0x19,0x80,0x19,0x80,0x0c,0xc0,0x0c,0xc0,0x06,0x60,0x06, +0x60,0x02,0x20,0x02,0x20,0x04,0x40,0x19,0x80,0x00,0x00,0x03,0x00,0x04,0x80,0x04, +0x80,0x03,0x00,0x01,0x00,0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x0f, +0xe0,0x10,0x10,0x38,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x20,0x24,0x40,0x66, +0x80,0x66,0x80,0x25,0x00,0x1a,0x00,0x03,0x10,0x06,0xa8,0x0e,0xec,0x16,0xec,0x12, +0xa8,0x21,0x10,0x00,0x00,0x00,0x00,0x00,0x80,0x04,0x80,0x04,0xe0,0x07,0xe0,0x1f, +0x80,0x1c,0x80,0x04,0x80,0x04,0xe0,0x07,0xe0,0x1f,0x80,0x1c,0x80,0x04,0x80,0x04, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04, +0x00,0x05,0xc0,0x06,0x60,0x04,0x60,0x04,0x40,0x04,0x80,0x05,0x00,0x06,0x00,0x00, +0x00,0x00,0x00,0x01,0x00,0x01,0x80,0x01,0xc0,0x01,0x60,0x01,0x20,0x01,0x30,0x01, +0x10,0x01,0x10,0x01,0x10,0x07,0x20,0x0f,0x00,0x0f,0x00,0x06,0x00,0x00,0x00,0x00, +0x00,0x01,0x00,0x03,0x80,0x01,0x00,0x09,0x20,0x1f,0xf0,0x09,0x20,0x03,0x80,0x03, +0x80,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x01, +0x00,0x03,0x80,0x09,0x20,0x1f,0xf0,0x09,0x20,0x03,0x80,0x01,0x00,0x01,0x00,0x03, +0x80,0x09,0x20,0x1f,0xf0,0x09,0x20,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x03, +0xc0,0x07,0x40,0x07,0x40,0x07,0x40,0x03,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01, +0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xc0,0x18, +0x30,0x20,0x08,0x20,0x08,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x20, +0x08,0x20,0x08,0x18,0x30,0x07,0xc0,0x00,0x00,0x00,0x00,0x03,0x80,0x04,0x40,0x08, +0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x04,0x40,0x03, +0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x07,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x03,0x80,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x08,0x40,0x10,0x20,0x10,0x20,0x00, +0x40,0x00,0x80,0x03,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x1f,0xe0,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x08,0x40,0x10,0x20,0x10,0x20,0x00,0x40,0x03, +0x80,0x00,0x40,0x10,0x20,0x10,0x20,0x08,0x40,0x07,0x80,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x40,0x00,0xc0,0x01,0x40,0x02,0x40,0x04,0x40,0x08,0x40,0x10, +0x40,0x1f,0xf0,0x00,0x40,0x00,0x40,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x0f,0xe0,0x08,0x00,0x08,0x00,0x08,0x00,0x0b,0x80,0x0c,0x40,0x00,0x20,0x00, +0x20,0x00,0x20,0x08,0x40,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03, +0xc0,0x04,0x20,0x08,0x00,0x08,0x00,0x13,0xc0,0x14,0x20,0x18,0x10,0x10,0x10,0x08, +0x10,0x04,0x20,0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x08, +0x20,0x10,0x40,0x00,0x80,0x00,0x80,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x08,0x40,0x10, +0x20,0x10,0x40,0x08,0x80,0x07,0x80,0x08,0x40,0x10,0x20,0x10,0x20,0x08,0x40,0x07, +0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x08,0x40,0x10,0x20,0x10, +0x20,0x10,0x20,0x08,0x60,0x07,0xa0,0x00,0x20,0x10,0x20,0x08,0x40,0x07,0x80,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x02,0x80,0x02,0x80,0x04, +0x40,0x04,0x40,0x08,0x20,0x0f,0xe0,0x10,0x10,0x10,0x10,0x38,0x38,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x1f,0x80,0x08,0x60,0x08,0x10,0x08,0x10,0x08,0x60,0x0f, +0xc0,0x08,0x30,0x08,0x08,0x08,0x08,0x08,0x30,0x1f,0xc0,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x03,0xd0,0x0c,0x30,0x10,0x10,0x20,0x00,0x20,0x00,0x20,0x00,0x20, +0x00,0x20,0x00,0x10,0x10,0x0c,0x20,0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x3f,0x00,0x10,0xc0,0x10,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x10,0x20,0x10,0xc0,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f, +0xc0,0x10,0x40,0x10,0x20,0x10,0x00,0x10,0x40,0x1f,0xc0,0x10,0x40,0x10,0x00,0x10, +0x00,0x10,0x20,0x3f,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xc0,0x10, +0x40,0x10,0x20,0x10,0x00,0x10,0x80,0x1f,0x80,0x10,0x80,0x10,0x00,0x10,0x00,0x10, +0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xa0,0x0c,0x60,0x10, +0x20,0x20,0x00,0x20,0x00,0x20,0xf8,0x20,0x20,0x20,0x20,0x10,0x20,0x0c,0x60,0x03, +0xa0,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x70,0x10,0x20,0x10,0x20,0x10, +0x20,0x10,0x20,0x1f,0xe0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x38,0x70,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02, +0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00, +0x40,0x00,0x40,0x00,0x40,0x08,0x40,0x08,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x38,0xe0,0x10,0x40,0x10,0x80,0x11,0x00,0x16,0x00,0x1a,0x00,0x11, +0x00,0x10,0x80,0x10,0x40,0x10,0x20,0x38,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x38,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10, +0x00,0x10,0x20,0x10,0x40,0x3f,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60, +0x18,0x30,0x30,0x30,0x50,0x28,0x50,0x28,0x90,0x24,0x90,0x25,0x10,0x22,0x10,0x22, +0x10,0x20,0x10,0x70,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x70,0x18, +0x20,0x18,0x20,0x14,0x20,0x12,0x20,0x11,0x20,0x11,0x20,0x10,0xa0,0x10,0x60,0x10, +0x60,0x38,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x0c,0x60,0x10, +0x10,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x10,0x10,0x0c,0x60,0x03, +0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x00,0x10,0xc0,0x10,0x20,0x10, +0x20,0x10,0xc0,0x1f,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x38,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x0c,0x60,0x10,0x10,0x20,0x08,0x20, +0x08,0x20,0x08,0x20,0x08,0x27,0x08,0x18,0x90,0x0c,0x60,0x03,0xe0,0x00,0x18,0x00, +0x00,0x00,0x00,0x00,0x00,0x3f,0x00,0x10,0xc0,0x10,0x20,0x10,0x20,0x10,0xc0,0x1f, +0x00,0x10,0x80,0x10,0x40,0x10,0x40,0x10,0x20,0x38,0x70,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x07,0xa0,0x08,0x60,0x10,0x20,0x08,0x00,0x06,0x00,0x01,0x80,0x00, +0x60,0x10,0x10,0x10,0x10,0x18,0x20,0x17,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x3f,0xe0,0x22,0x20,0x42,0x10,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02, +0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38, +0x70,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10, +0x20,0x08,0x40,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x10, +0x10,0x10,0x10,0x08,0x20,0x08,0x20,0x04,0x40,0x04,0x40,0x02,0x80,0x02,0x80,0x01, +0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x71,0x1c,0x21,0x08,0x21, +0x08,0x21,0x10,0x12,0x90,0x12,0x90,0x14,0x90,0x14,0x60,0x0c,0x60,0x08,0x20,0x08, +0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x70,0x10,0x20,0x08,0x40,0x04, +0x80,0x03,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x08,0x20,0x10,0x10,0x38,0x38,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0xe0,0x10,0x40,0x08,0x80,0x05,0x00,0x02, +0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x1f,0xf0,0x10,0x20,0x20,0x40,0x00,0x80,0x01,0x00,0x01, +0x00,0x02,0x00,0x04,0x00,0x08,0x08,0x10,0x10,0x3f,0xf0,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x08,0x40,0x08,0x40,0x03, +0xc0,0x0c,0x40,0x10,0x40,0x10,0xc0,0x0f,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x18,0x00,0x08,0x00,0x08,0x00,0x09,0xc0,0x0a,0x20,0x0c,0x20,0x08,0x20,0x08, +0x20,0x08,0x20,0x0c,0x40,0x1b,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x08,0x40,0x10,0x20,0x10,0x00,0x10,0x00,0x10, +0x20,0x08,0x40,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00, +0x40,0x00,0x40,0x07,0x40,0x08,0xc0,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x08, +0xc0,0x07,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x07,0x80,0x08,0x40,0x10,0x20,0x1f,0xe0,0x10,0x00,0x10,0x20,0x0c,0x40,0x03, +0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x02,0x40,0x04,0x00,0x04, +0x00,0x1f,0xc0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0e,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x20,0x08, +0xc0,0x08,0x40,0x08,0x80,0x07,0x00,0x08,0x00,0x0f,0x80,0x10,0x60,0x10,0x20,0x0f, +0xc0,0x00,0x00,0x00,0x00,0x18,0x00,0x08,0x00,0x08,0x00,0x09,0x80,0x0a,0x40,0x0c, +0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x1c,0x70,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x00,0x00,0x06,0x00,0x02,0x00,0x02,0x00,0x02, +0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x11,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x1c, +0x00,0x08,0x00,0x08,0x70,0x08,0x40,0x08,0x80,0x09,0x00,0x0b,0x00,0x0c,0x80,0x08, +0x40,0x08,0x20,0x1c,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x02, +0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02, +0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x6c,0xc0,0x33,0x20,0x22,0x20,0x22,0x20,0x22,0x20,0x22,0x20,0x22,0x20,0x77, +0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19, +0xc0,0x0a,0x20,0x0c,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x1c,0x70,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x08, +0x40,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x08,0x40,0x07,0x80,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0b,0x80,0x0c,0x40,0x08, +0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x0c,0x40,0x0b,0x80,0x08,0x00,0x1c,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x40,0x08,0xc0,0x10,0x40,0x10, +0x40,0x10,0x40,0x10,0x40,0x08,0xc0,0x07,0x40,0x00,0x40,0x00,0xe0,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x80,0x0a,0x40,0x0c,0x40,0x08,0x00,0x08, +0x00,0x08,0x00,0x08,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x0f,0x40,0x10,0xc0,0x10,0x00,0x0c,0x00,0x03,0x80,0x00, +0x40,0x30,0x40,0x0f,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04, +0x00,0x04,0x00,0x04,0x00,0x1f,0xc0,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04, +0x40,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x1c,0x70,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x04,0x60,0x03, +0xb0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38, +0x70,0x10,0x20,0x08,0x40,0x08,0x40,0x04,0x80,0x04,0x80,0x03,0x00,0x03,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x11, +0x10,0x11,0x10,0x0a,0x90,0x0a,0xa0,0x0a,0xa0,0x04,0x40,0x04,0x40,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x60,0x08,0x40,0x04, +0x80,0x03,0x00,0x03,0x00,0x04,0x80,0x08,0x40,0x18,0x60,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x70,0x08,0x20,0x04,0x20,0x04, +0x40,0x02,0x40,0x02,0x80,0x01,0x80,0x01,0x00,0x02,0x00,0x0c,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xc0,0x10,0x80,0x01,0x00,0x02,0x00,0x04, +0x00,0x08,0x20,0x10,0x40,0x1f,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x1f,0x80,0x04,0x00,0x07,0xc0,0x09,0x20,0x19, +0x10,0x2a,0x10,0x24,0x20,0x1c,0x40,0x01,0x80,0x00,0x00,0x04,0x00,0x04,0xc0,0x1f, +0x00,0x04,0x00,0x05,0x00,0x07,0xe0,0x0d,0x10,0x19,0x08,0x2a,0x08,0x26,0x08,0x24, +0x10,0x1a,0x20,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x20,0x10,0x20,0x10,0x10,0x10,0x10,0x0a, +0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10, +0x20,0x20,0x10,0x20,0x10,0x20,0x08,0x20,0x08,0x20,0x08,0x12,0x00,0x0c,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x01, +0x80,0x00,0x00,0x07,0x80,0x08,0x40,0x00,0x40,0x00,0x40,0x00,0x80,0x00,0x80,0x03, +0x00,0x00,0x00,0x06,0x00,0x01,0x80,0x00,0x00,0x07,0x80,0x38,0x40,0x00,0x20,0x00, +0x20,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x80,0x03,0x00,0x0c,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x01,0x00,0x00,0x00,0x0f, +0xc0,0x00,0x80,0x01,0x00,0x02,0x00,0x07,0x00,0x09,0x00,0x10,0xf0,0x00,0x00,0x06, +0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x1f,0xe0,0x00,0x80,0x01,0x00,0x02,0x00,0x04, +0x00,0x0e,0x00,0x11,0x00,0x21,0x00,0x20,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x40,0x3e,0x20,0x08,0x00,0x0f,0x80,0x18, +0x40,0x28,0x40,0x30,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04, +0x30,0x07,0x88,0x3c,0x04,0x04,0x00,0x07,0xe0,0x0c,0x10,0x14,0x08,0x24,0x08,0x24, +0x08,0x18,0x30,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x40,0x08, +0x20,0x7f,0x10,0x08,0x90,0x08,0x88,0x10,0x88,0x10,0x80,0x20,0x80,0x21,0x00,0x49, +0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x14,0x08,0x54,0x08,0x20,0x7f, +0x10,0x08,0x90,0x08,0x88,0x10,0x88,0x10,0x80,0x20,0x80,0x21,0x00,0x49,0x00,0x06, +0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x60,0x0f,0x80,0x00,0x80,0x00, +0xf0,0x1f,0x40,0x00,0x20,0x07,0xd0,0x08,0x30,0x08,0x00,0x06,0x00,0x01,0xc0,0x00, +0x00,0x00,0x00,0x02,0x00,0x02,0x28,0x02,0xe8,0x1f,0x28,0x01,0x00,0x01,0xe0,0x3e, +0x80,0x00,0x40,0x0f,0xa0,0x10,0x60,0x10,0x00,0x0c,0x00,0x03,0x80,0x00,0x00,0x00, +0x00,0x00,0x40,0x00,0x40,0x00,0x80,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x04, +0x00,0x02,0x00,0x01,0x00,0x00,0x80,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00, +0x40,0x00,0x40,0x00,0xa8,0x01,0x28,0x02,0x28,0x04,0x00,0x08,0x00,0x04,0x00,0x02, +0x00,0x01,0x00,0x00,0x80,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x20,0x10, +0x20,0x10,0x20,0x10,0x3c,0x23,0xe0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28, +0x20,0x10,0x20,0x00,0x40,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x54,0x10,0x54,0x10, +0x40,0x10,0x38,0x23,0xe0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x20,0x10, +0x20,0x00,0x40,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x01, +0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x10,0x0f, +0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x0e,0x14,0x01,0xf4,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x10,0x0f,0xe0,0x00, +0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x01,0x70,0x1f,0x80,0x00,0x80,0x00, +0x80,0x00,0x40,0x07,0xa0,0x08,0x60,0x10,0x00,0x10,0x00,0x0c,0x00,0x03,0xc0,0x00, +0x00,0x00,0x00,0x02,0x00,0x02,0x14,0x01,0x74,0x1f,0x94,0x00,0x80,0x00,0x80,0x00, +0x40,0x07,0xa0,0x08,0x60,0x10,0x00,0x10,0x00,0x0c,0x00,0x03,0xc0,0x00,0x00,0x00, +0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08, +0x00,0x08,0x10,0x08,0x10,0x08,0x20,0x04,0x40,0x03,0x80,0x00,0x00,0x00,0x00,0x00, +0x00,0x08,0x50,0x08,0x50,0x08,0x50,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08, +0x00,0x08,0x10,0x08,0x20,0x04,0x40,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x00, +0x80,0x00,0xf8,0x3f,0x80,0x00,0x80,0x06,0x80,0x09,0x80,0x08,0x80,0x08,0x80,0x07, +0x80,0x00,0x80,0x00,0x80,0x01,0x00,0x06,0x00,0x00,0x00,0x00,0x94,0x00,0x94,0x00, +0xfc,0x3f,0x80,0x00,0x80,0x06,0x80,0x09,0x80,0x08,0x80,0x08,0x80,0x07,0x80,0x00, +0x80,0x00,0x80,0x01,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x08,0x40,0x08, +0x78,0x0b,0xc0,0x7c,0x40,0x08,0x40,0x08,0x40,0x08,0x80,0x08,0x00,0x04,0x00,0x03, +0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x54,0x08,0x54,0x08,0x78,0x0b, +0xc0,0x7c,0x40,0x08,0x40,0x08,0x40,0x08,0x80,0x08,0x00,0x04,0x00,0x03,0xe0,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xc0,0x00,0x80,0x01,0x00,0x02,0x00,0x04, +0xf0,0x3f,0x80,0x01,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0xc0,0x00, +0x00,0x00,0x00,0x00,0x14,0x0f,0xd4,0x00,0x94,0x01,0x00,0x02,0x00,0x04,0xf0,0x3f, +0x80,0x01,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0xc0,0x00,0x00,0x00, +0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x3f,0x80,0x04,0x00,0x08,0x18,0x08,0xe0,0x08, +0x00,0x10,0x00,0x10,0x00,0x11,0x00,0x21,0x00,0x20,0xf8,0x00,0x00,0x00,0x00,0x00, +0x00,0x04,0x14,0x04,0x14,0x3f,0x94,0x04,0x00,0x08,0x18,0x08,0xe0,0x08,0x00,0x10, +0x00,0x10,0x00,0x11,0x00,0x21,0x00,0x20,0xf8,0x00,0x00,0x00,0x00,0x04,0x00,0x04, +0x00,0x04,0x00,0x3f,0xc0,0x04,0x00,0x08,0x00,0x09,0xc0,0x0a,0x20,0x1c,0x10,0x10, +0x10,0x00,0x10,0x00,0x60,0x07,0x80,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x14,0x04, +0x14,0x3f,0xd4,0x04,0x00,0x08,0x00,0x09,0xc0,0x0a,0x20,0x1c,0x10,0x10,0x10,0x00, +0x10,0x00,0x60,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x03,0xc0,0x3c,0x20,0x00,0x10,0x00,0x10,0x00,0x20,0x00, +0xc0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xe0,0x0c, +0x10,0x70,0x08,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0x60,0x03,0x80,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x14,0x03,0xf4,0x0c,0x10,0x70, +0x08,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0x60,0x03,0x80,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x07,0xe0,0x78,0x80,0x01,0x00,0x01,0x00,0x02, +0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x01,0x00,0x00,0xe0,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x38,0x07,0xc0,0x78,0x94,0x01,0x14,0x01,0x14,0x02,0x00,0x02, +0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x01,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, +0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x02,0x70,0x03,0x80,0x06,0x00,0x08, +0x00,0x10,0x00,0x10,0x00,0x08,0x00,0x07,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x04, +0x00,0x04,0x14,0x04,0x14,0x02,0x14,0x02,0x70,0x03,0x80,0x06,0x00,0x08,0x00,0x10, +0x00,0x10,0x00,0x08,0x00,0x07,0xf0,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x3f, +0x80,0x04,0x30,0x08,0x08,0x08,0x40,0x10,0x40,0x10,0x40,0x20,0x40,0x03,0xc0,0x04, +0x60,0x04,0x50,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10, +0x70,0x13,0x80,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x22,0x00,0x21,0x00,0x28, +0xf8,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x10,0x80,0x10,0x80,0x17, +0xe0,0x19,0x10,0x31,0x08,0x32,0x08,0x2a,0x08,0x4c,0x08,0x4c,0x68,0x34,0x90,0x00, +0x68,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x7c,0xe0,0x0b, +0x10,0x0c,0x10,0x08,0x10,0x18,0x10,0x18,0x10,0x28,0xf0,0x49,0x18,0x08,0xe0,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xc0,0x0d,0x20,0x11,0x10,0x11,0x08,0x22, +0x08,0x22,0x08,0x24,0x08,0x24,0x10,0x18,0x10,0x00,0x60,0x01,0x80,0x00,0x00,0x00, +0x00,0x00,0x20,0x10,0x20,0x10,0x20,0x10,0x38,0x13,0xe0,0x20,0x20,0x20,0x20,0x20, +0x20,0x20,0x20,0x21,0xe0,0x22,0x38,0x2a,0x24,0x11,0xc0,0x00,0x00,0x00,0x00,0x00, +0x54,0x20,0x54,0x20,0x44,0x20,0x70,0x27,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x40, +0x40,0x43,0xc0,0x44,0x70,0x54,0x48,0x23,0x80,0x00,0x00,0x00,0x00,0x00,0x58,0x20, +0x64,0x20,0x64,0x20,0x78,0x27,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x43, +0xc0,0x44,0x70,0x54,0x48,0x23,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x06, +0x00,0x3c,0x00,0x08,0x20,0x10,0x20,0x10,0x30,0x20,0x28,0x20,0x20,0x20,0x40,0x20, +0x40,0x10,0x80,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x14,0x06,0x14,0x3c, +0x14,0x08,0x20,0x10,0x20,0x10,0x30,0x20,0x28,0x20,0x20,0x20,0x40,0x20,0x40,0x10, +0x80,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x01,0x24,0x06,0x24,0x3c,0x18,0x08, +0x20,0x10,0x20,0x10,0x30,0x20,0x28,0x20,0x20,0x20,0x40,0x20,0x40,0x10,0x80,0x0f, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x03,0x80,0x00,0x80,0x01,0x00,0x02, +0x00,0x01,0x00,0x10,0x90,0x10,0x48,0x20,0x44,0x40,0x44,0x08,0x80,0x07,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x04,0x28,0x03,0xa8,0x00,0xa8,0x01,0x00,0x02,0x00,0x01, +0x00,0x10,0x90,0x10,0x48,0x20,0x44,0x40,0x44,0x08,0x80,0x07,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x04,0x30,0x03,0xc8,0x00,0xc8,0x01,0x30,0x02,0x00,0x01,0x00,0x10, +0x90,0x10,0x48,0x20,0x44,0x40,0x44,0x08,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x09,0x00,0x10,0x80,0x20,0x40,0x40, +0x30,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x28,0x00,0x28,0x06,0x28,0x09,0x00,0x10,0x80,0x20,0x40,0x40,0x30,0x00, +0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00, +0x48,0x00,0x48,0x06,0x30,0x09,0x00,0x10,0x80,0x20,0x40,0x40,0x30,0x00,0x0c,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x13,0xf8,0x10,0x20,0x10, +0x20,0x10,0x38,0x23,0xe0,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0xe0,0x22,0x38,0x2a, +0x24,0x11,0xc0,0x00,0x00,0x00,0x00,0x00,0x14,0x27,0xf4,0x20,0x54,0x20,0x40,0x20, +0x78,0x47,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x43,0xc0,0x44,0x70,0x54,0x48,0x23, +0x80,0x00,0x00,0x00,0x00,0x00,0x18,0x27,0xe4,0x20,0x64,0x20,0x58,0x20,0x70,0x47, +0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x43,0xc0,0x44,0x70,0x54,0x48,0x23,0x80,0x00, +0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x1f,0xf0,0x00,0x80,0x00,0x80,0x00,0xe0,0x1f, +0x80,0x00,0x80,0x00,0x80,0x0f,0x80,0x10,0xe0,0x10,0x90,0x0f,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x01,0x00,0x01,0x00,0x02,0x10,0x02,0x10,0x0f, +0xf0,0x34,0x18,0x44,0x24,0x48,0x20,0x30,0x40,0x00,0x80,0x00,0x00,0x00,0x00,0x04, +0x00,0x04,0x00,0x3f,0x00,0x04,0x30,0x04,0x08,0x1c,0x04,0x24,0x00,0x24,0x00,0x2c, +0x20,0x18,0x10,0x08,0x10,0x08,0x10,0x07,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x80,0x10,0x80,0x10,0x80,0x13,0xc0,0x1c,0xa0,0x11,0x10,0x29,0x08,0x2a,0x08,0x46, +0x08,0x44,0x08,0x4a,0x10,0x30,0x60,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x02, +0x00,0x1f,0x80,0x02,0x00,0x02,0x40,0x3f,0x80,0x04,0x00,0x04,0x08,0x04,0x08,0x04, +0x10,0x02,0x20,0x01,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x01,0x00,0x08,0x80,0x09,0xe0,0x0e,0x10,0x3c,0x10,0x04,0x60,0x02,0x00,0x02, +0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x80,0x00,0x40,0x10,0x00,0x10, +0xf0,0x0b,0x08,0x1c,0x08,0x64,0x08,0x02,0x70,0x02,0x00,0x01,0x00,0x01,0x00,0x00, +0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01, +0x00,0x21,0xe0,0x27,0x10,0x29,0x10,0x31,0x10,0x23,0x20,0x21,0xc0,0x01,0x00,0x02, +0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x20,0x80,0x21,0xe0,0x22,0x90,0x24,0x88,0x28, +0x88,0x30,0x88,0x34,0x88,0x22,0x90,0x21,0xe0,0x00,0x80,0x01,0x00,0x02,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0xe0,0x01,0x00,0x01, +0x00,0x01,0x00,0x0f,0x00,0x11,0xc0,0x11,0x20,0x0e,0x00,0x00,0x00,0x00,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x30,0x01,0xc0,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x1f,0x80,0x21,0x60,0x21,0x10,0x1e,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x01, +0x00,0x00,0xc0,0x00,0x00,0x10,0x00,0x10,0x00,0x11,0xe0,0x16,0x10,0x18,0x10,0x10, +0x10,0x00,0x20,0x00,0xc0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x04,0x20,0x04, +0x20,0x04,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x0a,0x20,0x04,0x20,0x00,0x40,0x00, +0x40,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xc0,0x00,0x80,0x01, +0x00,0x02,0x00,0x07,0xc0,0x0c,0x20,0x10,0x10,0x20,0x10,0x03,0x90,0x04,0x60,0x04, +0x40,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x09,0xc0,0x0a, +0x20,0x7c,0x20,0x0c,0x20,0x08,0x20,0x18,0x20,0x18,0x20,0x28,0x20,0x48,0x24,0x08, +0x18,0x08,0x00,0x00,0x00,0x00,0x00,0x0f,0x80,0x00,0x80,0x01,0x00,0x02,0x00,0x07, +0xc0,0x08,0x20,0x10,0x10,0x20,0x10,0x00,0x10,0x00,0x20,0x00,0xc0,0x07,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x1e, +0xe0,0x05,0x10,0x06,0x10,0x0c,0x10,0x0c,0x10,0x14,0x20,0x04,0x40,0x00,0x00,0x00, +0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x1c,0xe0,0x6f,0x10,0x0c,0x08,0x08,0x08,0x18, +0x08,0x18,0x08,0x28,0x10,0x48,0x20,0x08,0xc0,0x08,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x0f,0x80,0x00,0x80,0x01,0x00,0x01,0x00,0x03,0xe0,0x0e,0x10,0x12,0x08,0x24, +0x08,0x24,0x08,0x28,0xc8,0x19,0x30,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f, +0x80,0x01,0x00,0x07,0xc0,0x08,0x20,0x10,0x20,0x06,0x20,0x09,0xc0,0x07,0x00,0x08, +0x00,0x1c,0xe0,0x23,0x10,0x40,0x38,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x03, +0xc0,0x1c,0x00,0x04,0x18,0x0f,0x20,0x18,0xc0,0x21,0x80,0x02,0x80,0x04,0x80,0x08, +0x00,0x08,0x00,0x07,0xe0,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x02, +0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x0f,0x00,0x08,0x80,0x10,0x80,0x10,0x88,0x20, +0x90,0x20,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x1f,0xe0,0x00,0x20,0x02,0x40,0x03,0x80,0x02,0x00,0x04,0x00,0x08, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xf0,0x00,0x10,0x02,0x20,0x02, +0x40,0x03,0x80,0x02,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0x30,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00, +0x80,0x03,0x00,0x1d,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x80,0x03,0x00,0x0d,0x00,0x31, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x1f,0xe0,0x10,0x20,0x10, +0x20,0x10,0x20,0x00,0x40,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x3f,0xf0,0x20,0x10,0x20,0x10,0x20,0x10,0x00,0x20,0x00, +0x20,0x00,0x40,0x01,0x80,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xe0,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x1f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f, +0xf0,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x80,0x00,0x80,0x1f,0xe0,0x00,0x80,0x01,0x80,0x02,0x80,0x04,0x80,0x18,0x80,0x00, +0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x3f,0xf8,0x00, +0xc0,0x00,0xc0,0x01,0x40,0x02,0x40,0x04,0x40,0x08,0x40,0x30,0x40,0x00,0xc0,0x00, +0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x3f,0xf0,0x02,0x10,0x02, +0x10,0x02,0x10,0x04,0x10,0x04,0x10,0x08,0x10,0x10,0x20,0x20,0xc0,0x00,0x00,0x00, +0x00,0x00,0x00,0x02,0x14,0x02,0x14,0x02,0x14,0x3f,0xf0,0x02,0x10,0x02,0x10,0x02, +0x10,0x04,0x10,0x04,0x10,0x08,0x10,0x10,0x20,0x20,0xc0,0x00,0x00,0x00,0x00,0x00, +0x00,0x02,0x00,0x02,0x00,0x02,0x70,0x03,0x80,0x1d,0x00,0x01,0x00,0x01,0x78,0x03, +0x80,0x3c,0x80,0x00,0x80,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x02, +0x14,0x02,0x14,0x02,0x74,0x03,0x80,0x1d,0x00,0x01,0x00,0x01,0x78,0x03,0x80,0x3c, +0x80,0x00,0x80,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x01,0x00,0x01, +0x00,0x01,0xf0,0x02,0x10,0x04,0x10,0x08,0x20,0x10,0x20,0x00,0x40,0x00,0x80,0x01, +0x00,0x06,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x14,0x02,0x14,0x03, +0xf4,0x04,0x20,0x08,0x20,0x10,0x40,0x20,0x40,0x00,0x80,0x01,0x00,0x02,0x00,0x0c, +0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x0f, +0xf8,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0x00,0x80,0x01,0x00,0x02,0x00,0x0c, +0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x08,0x14,0x08,0x14,0x08,0x00,0x0f,0xf8,0x08, +0x40,0x08,0x40,0x10,0x40,0x20,0x40,0x00,0x80,0x01,0x00,0x02,0x00,0x0c,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xf0,0x00,0x10,0x00,0x10,0x00, +0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x3f,0xf0,0x00,0x10,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x14,0x00,0x14,0x00,0x14,0x7f,0xe0,0x00,0x20,0x00,0x20,0x00,0x20,0x00, +0x20,0x00,0x20,0x00,0x20,0x7f,0xe0,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x7f,0xf8,0x08,0x40,0x08,0x40,0x08, +0x40,0x08,0x40,0x00,0x80,0x01,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x14,0x08,0x54,0x08,0x54,0x08,0x40,0x7f,0xf8,0x08,0x40,0x08,0x40,0x08,0x40,0x08, +0x40,0x00,0x80,0x01,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c, +0x00,0x02,0x00,0x00,0x08,0x18,0x08,0x04,0x10,0x00,0x10,0x00,0x20,0x00,0x40,0x00, +0x80,0x03,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x0c,0x14,0x02, +0x14,0x00,0x00,0x18,0x08,0x04,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x80,0x03, +0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xc0,0x00, +0x40,0x00,0x40,0x00,0x80,0x00,0x80,0x01,0x80,0x02,0x40,0x04,0x20,0x18,0x10,0x60, +0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x14,0x3f,0xd4,0x00,0x40,0x00, +0x40,0x00,0x80,0x00,0x80,0x01,0x80,0x02,0x40,0x04,0x20,0x18,0x10,0x60,0x10,0x00, +0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x78,0x07,0x88,0x3c, +0x10,0x04,0x20,0x04,0x40,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0xf0,0x00,0x00,0x00, +0x00,0x00,0x00,0x04,0x14,0x04,0x14,0x04,0x14,0x04,0x78,0x07,0x88,0x3c,0x10,0x04, +0x20,0x04,0x40,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0xf8,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x08,0x10,0x04,0x10,0x04,0x20,0x00,0x20,0x00, +0x40,0x00,0x80,0x01,0x00,0x06,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x14,0x00,0x14,0x10,0x14,0x08,0x20,0x04,0x20,0x04,0x20,0x00,0x40,0x00,0x40,0x00, +0x80,0x01,0x00,0x06,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01, +0x00,0x03,0xf0,0x04,0x10,0x08,0x10,0x33,0x20,0x00,0xa0,0x00,0x40,0x00,0x80,0x01, +0x00,0x06,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x01,0x14,0x01,0x14,0x03, +0xf0,0x04,0x10,0x08,0x10,0x33,0x20,0x00,0xa0,0x00,0x40,0x00,0x80,0x01,0x00,0x06, +0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x01,0x80,0x1f,0x00,0x01, +0x00,0x01,0x00,0x7f,0xf0,0x01,0x00,0x01,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x18, +0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x74,0x01,0x94,0x1f,0x00,0x01,0x00,0x01, +0x00,0x7f,0xf0,0x01,0x00,0x01,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x18,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04, +0x20,0x12,0x20,0x0a,0x20,0x08,0x40,0x00,0x40,0x00,0x80,0x03,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x02,0x08,0x12,0x08,0x11,0x08,0x09,0x08,0x08,0x10,0x00, +0x10,0x00,0x20,0x00,0x20,0x00,0x40,0x01,0x80,0x06,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x14,0x08,0x14,0x48,0x14,0x44,0x20,0x24,0x20,0x20,0x40,0x00,0x40,0x00, +0x80,0x00,0x80,0x01,0x00,0x06,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x0f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x00,0x80,0x00,0x80,0x00, +0x80,0x01,0x00,0x02,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x14,0x0f, +0xf4,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x00,0x80,0x00,0x80,0x00,0x80,0x01, +0x00,0x02,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x04, +0x00,0x04,0x00,0x04,0x00,0x07,0x00,0x04,0xc0,0x04,0x20,0x04,0x00,0x04,0x00,0x04, +0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x08,0x50,0x08,0x50,0x08,0x50,0x08, +0x00,0x08,0x00,0x0e,0x00,0x09,0x80,0x08,0x40,0x08,0x00,0x08,0x00,0x08,0x00,0x08, +0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x3f,0xf8,0x00, +0x80,0x00,0x80,0x00,0x80,0x01,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x18,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xe0,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x7f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x1f,0xe0,0x00,0x20,0x00,0x20,0x0c,0x40,0x03,0x40,0x00, +0x80,0x01,0x40,0x02,0x20,0x04,0x10,0x18,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x02,0x00,0x01,0x00,0x1f,0xe0,0x00,0x20,0x00,0x40,0x00,0x80,0x01,0x00,0x03, +0x40,0x0d,0x30,0x31,0x08,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x80,0x00,0x80,0x01, +0x00,0x02,0x00,0x0c,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x08,0x80,0x08,0x40,0x08,0x20,0x08,0x10,0x10,0x10,0x10,0x08,0x20, +0x08,0x40,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x14,0x00, +0x14,0x08,0x80,0x08,0x40,0x08,0x20,0x08,0x10,0x10,0x10,0x10,0x08,0x20,0x08,0x40, +0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x24,0x00,0x24,0x00,0x18,0x08, +0x80,0x08,0x40,0x08,0x20,0x08,0x10,0x10,0x10,0x10,0x08,0x20,0x08,0x40,0x08,0x00, +0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10, +0xe0,0x1f,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x0f,0xf0,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x28,0x10,0x28,0x10,0x28,0x11,0xe0,0x1e, +0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x0f,0xf0,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x30,0x10,0x48,0x10,0x48,0x10,0x30,0x11,0xe0,0x1e,0x00,0x10, +0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x0f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x3f,0xf0,0x00,0x10,0x00,0x10,0x00,0x20,0x00,0x20,0x00, +0x40,0x00,0x80,0x01,0x00,0x06,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x14,0x00,0x14,0x7f,0xf4,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x80,0x01, +0x00,0x02,0x00,0x0c,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00, +0x24,0x7f,0xe4,0x00,0x38,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x80,0x01,0x00,0x02, +0x00,0x0c,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x06,0x00,0x09,0x00,0x10,0x80,0x20,0x40,0x40,0x20,0x00,0x10,0x00,0x0c,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x28,0x06, +0x28,0x09,0x00,0x10,0x80,0x20,0x40,0x40,0x20,0x00,0x10,0x00,0x0c,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x48,0x00,0x48,0x06,0x30,0x09, +0x00,0x10,0x80,0x20,0x40,0x40,0x20,0x00,0x10,0x00,0x0c,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x01,0x00,0x01, +0x00,0x09,0x20,0x09,0x10,0x09,0x10,0x11,0x08,0x11,0x08,0x21,0x00,0x03,0x00,0x00, +0x00,0x00,0x00,0x01,0x14,0x01,0x14,0x01,0x14,0x3f,0xf8,0x01,0x00,0x01,0x00,0x09, +0x20,0x09,0x10,0x09,0x10,0x11,0x08,0x11,0x08,0x21,0x00,0x03,0x00,0x00,0x00,0x00, +0x00,0x01,0x18,0x01,0x24,0x01,0x24,0x3f,0xf8,0x01,0x00,0x01,0x00,0x09,0x20,0x09, +0x10,0x09,0x10,0x11,0x08,0x11,0x08,0x21,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x3f,0xf8,0x00,0x10,0x00,0x10,0x00,0x20,0x00,0x40,0x0c,0x80,0x03, +0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x03, +0x00,0x00,0xc0,0x00,0x20,0x08,0x00,0x06,0x00,0x01,0x80,0x00,0x40,0x10,0x00,0x0c, +0x00,0x03,0x00,0x00,0xc0,0x00,0x20,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x02,0x00,0x02,0x00,0x02,0x20,0x04,0x20,0x04,0x10,0x08,0x30,0x0b,0xc8,0x3c, +0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x0c, +0x20,0x03,0x40,0x00,0xc0,0x00,0xa0,0x00,0x90,0x01,0x00,0x02,0x00,0x0c,0x00,0x30, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xe0,0x02,0x00,0x02,0x00,0x02, +0x00,0x3f,0xf8,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x01,0xf0,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02, +0x70,0x03,0x90,0x1e,0x20,0x01,0x40,0x01,0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00, +0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x02,0x78,0x07,0x88,0x3a,0x10,0x02,0x20,0x01, +0x40,0x01,0x00,0x01,0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xc0,0x00,0x40,0x00, +0x40,0x00,0x80,0x00,0x80,0x1f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x3f,0xc0,0x00,0x40,0x00,0x40,0x00,0x80,0x00,0x80,0x00, +0x80,0x7f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x0f,0xc0,0x00,0x40,0x00,0x40,0x0f,0xc0,0x00,0x40,0x00, +0x40,0x00,0x40,0x0f,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xe0,0x00, +0x20,0x00,0x20,0x00,0x20,0x1f,0xe0,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x3f, +0xe0,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xe0,0x00,0x00,0x00, +0x00,0x3f,0xf0,0x00,0x10,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x80,0x03,0x00,0x1c, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08, +0x20,0x08,0x20,0x08,0x20,0x00,0x40,0x00,0x40,0x00,0x80,0x01,0x00,0x06,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x04,0x80,0x04,0x80,0x04,0x80,0x04, +0x88,0x04,0x88,0x04,0x90,0x08,0x90,0x08,0xa0,0x10,0xc0,0x20,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08, +0x10,0x08,0x10,0x08,0x20,0x08,0x40,0x09,0x80,0x0e,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x3f,0xf0,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20, +0x10,0x20,0x10,0x3f,0xf0,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x08,0x10,0x08,0x10,0x08, +0x20,0x00,0x20,0x00,0xc0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f, +0xf0,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x00,0x20,0x00,0x20,0x00,0x40,0x00, +0x80,0x03,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00, +0x80,0x1f,0xf0,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x3f,0xf8,0x00,0x80,0x00, +0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xe0,0x02, +0x20,0x02,0x40,0x02,0x80,0x02,0x00,0x02,0x00,0x02,0x00,0x7f,0xf8,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xf0,0x00,0x10,0x00,0x10,0x00, +0x10,0x0f,0xe0,0x00,0x20,0x00,0x40,0x00,0x80,0x01,0x00,0x06,0x00,0x18,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x06,0x08,0x00,0x08,0x00, +0x10,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x80,0x03,0x00,0x1c,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x01,0x14,0x01,0x14,0x01,0x14,0x3f,0xf0,0x20,0x10,0x20,0x10,0x20, +0x10,0x00,0x20,0x00,0x20,0x00,0x40,0x01,0x80,0x06,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x1f,0xe0,0x02,0x20,0x02, +0x20,0x04,0x20,0x04,0x20,0x08,0x20,0x10,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x0f,0xe0,0x08,0x80,0x10, +0x80,0x20,0x80,0x01,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01, +0x00,0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x0f,0xe0,0x10,0x10,0x10, +0x10,0x38,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x80,0x08,0x60,0x08, +0x10,0x08,0x10,0x08,0x60,0x0f,0xc0,0x08,0x30,0x08,0x08,0x08,0x08,0x08,0x30,0x1f, +0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xe0,0x08,0x20,0x08,0x10,0x08, +0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x1c,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x02,0x80,0x02,0x80,0x04, +0x40,0x04,0x40,0x08,0x20,0x08,0x20,0x10,0x10,0x10,0x10,0x3f,0xf8,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x3f,0xc0,0x10,0x40,0x10,0x20,0x10,0x00,0x10,0x40,0x1f, +0xc0,0x10,0x40,0x10,0x00,0x10,0x00,0x10,0x20,0x3f,0xe0,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x1f,0xf0,0x10,0x20,0x20,0x40,0x00,0x80,0x01,0x00,0x01,0x00,0x02, +0x00,0x04,0x00,0x08,0x08,0x10,0x10,0x3f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x38,0x70,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x10,0x20,0x10, +0x20,0x10,0x20,0x10,0x20,0x38,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03, +0x80,0x0c,0x60,0x10,0x10,0x20,0x08,0x24,0x48,0x27,0xc8,0x24,0x48,0x20,0x08,0x10, +0x10,0x0c,0x60,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x02, +0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02, +0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0xe0,0x10,0x40,0x10, +0x80,0x11,0x00,0x16,0x00,0x1a,0x00,0x11,0x00,0x10,0x80,0x10,0x40,0x10,0x20,0x38, +0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x02,0x80,0x02, +0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x08,0x20,0x10,0x10,0x10,0x10,0x38,0x38,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x18,0x30,0x30,0x30,0x50,0x28,0x50,0x28, +0x90,0x24,0x90,0x25,0x10,0x22,0x10,0x22,0x10,0x20,0x10,0x70,0x38,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x30,0x70,0x18,0x20,0x18,0x20,0x14,0x20,0x12,0x20,0x11, +0x20,0x11,0x20,0x10,0xa0,0x10,0x60,0x10,0x60,0x38,0x20,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x1f,0xf0,0x10,0x20,0x20,0x20,0x00,0x00,0x10,0x20,0x1f,0xe0,0x10, +0x20,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x20,0x3f,0xe0,0x00,0x00,0x00,0x00,0x00, +0x00,0x03,0x80,0x0c,0x60,0x10,0x10,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20, +0x08,0x10,0x10,0x0c,0x60,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f, +0xf0,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10, +0x20,0x10,0x20,0x38,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x00,0x10, +0xc0,0x10,0x20,0x10,0x20,0x10,0xc0,0x1f,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10, +0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xc0,0x10,0x40,0x08, +0x20,0x04,0x00,0x02,0x00,0x01,0x00,0x01,0x00,0x02,0x00,0x04,0x10,0x08,0x20,0x3f, +0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xe0,0x22,0x20,0x42,0x10,0x02, +0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0xe0,0x45,0x10,0x42,0x10,0x02,0x00,0x02, +0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x01,0x00,0x07,0xc0,0x19,0x30,0x21,0x08,0x21, +0x08,0x21,0x08,0x19,0x30,0x07,0xc0,0x01,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x38,0x70,0x10,0x20,0x08,0x40,0x04,0x80,0x03,0x00,0x01,0x00,0x02, +0x80,0x04,0x40,0x08,0x20,0x10,0x10,0x38,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x07,0x00,0x42,0x10,0x22,0x20,0x12,0x40,0x12,0x40,0x12,0x40,0x0a,0x80,0x07, +0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03, +0x00,0x0c,0xc0,0x10,0x20,0x20,0x10,0x20,0x10,0x20,0x10,0x10,0x20,0x08,0x40,0x04, +0x80,0x24,0x90,0x3c,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x20,0x03,0x20,0x04,0xa0,0x08,0x40,0x10,0x40,0x10,0x40,0x10,0xc0,0x09, +0x40,0x06,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0x10,0x02, +0x10,0x02,0x10,0x04,0x20,0x05,0xc0,0x04,0x20,0x04,0x20,0x08,0x20,0x0c,0x40,0x0b, +0x80,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06, +0x30,0x09,0x40,0x01,0x80,0x01,0x00,0x01,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x04,0x60,0x04,0x10,0x02,0x00,0x03, +0x80,0x04,0x40,0x08,0x40,0x08,0x40,0x08,0x80,0x09,0x00,0x06,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x04,0x40,0x04, +0x00,0x03,0x80,0x04,0x00,0x08,0x00,0x08,0x40,0x07,0x80,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x04,0x00,0x08,0xc0,0x07,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x08, +0x00,0x08,0x00,0x06,0x00,0x01,0x80,0x00,0x40,0x06,0x40,0x03,0x80,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0xc0,0x13,0x20,0x02,0x20,0x04,0x20,0x04, +0x20,0x04,0x40,0x08,0x40,0x08,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00, +0xe0,0x01,0x10,0x02,0x10,0x04,0x10,0x04,0x20,0x0f,0xe0,0x08,0x20,0x08,0x40,0x08, +0x40,0x08,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04, +0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x04,0x30,0x04,0xc0,0x05,0x00,0x0e,0x00,0x09,0x00,0x09,0x00,0x11,0x20,0x10, +0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x40,0x00,0x40,0x00, +0xc0,0x01,0x40,0x01,0x40,0x02,0x40,0x04,0x40,0x04,0x40,0x08,0x40,0x08,0x30,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x20,0x04, +0x20,0x04,0x40,0x04,0x40,0x08,0x40,0x08,0x40,0x0c,0xc8,0x0b,0x30,0x10,0x00,0x10, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x04,0x20,0x04, +0x40,0x04,0x40,0x04,0x80,0x05,0x00,0x06,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x03,0x00,0x04,0x60,0x03,0x80,0x02,0x00,0x04,0x00,0x04,0x00,0x03,0x80,0x04, +0x40,0x08,0x00,0x08,0x00,0x06,0x00,0x01,0x80,0x00,0x40,0x07,0x80,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,0x20,0x04,0x10,0x08,0x10,0x08, +0x20,0x08,0x20,0x04,0xc0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x0c,0x08,0x13,0xf0,0x22,0x40,0x04,0x40,0x04,0x80,0x08,0x80,0x08, +0x80,0x08,0x80,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0xe0,0x01,0x10,0x02,0x10,0x04,0x10,0x04,0x20,0x0c,0x20,0x0c, +0x40,0x0b,0x80,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x01,0xf0,0x06,0x80,0x08,0x40,0x10,0x40,0x10,0x40,0x10,0x80,0x11,0x00,0x0e, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06, +0x30,0x09,0xc0,0x11,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x04,0x80,0x03,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x40,0x04, +0x20,0x08,0x20,0x08,0x20,0x08,0x40,0x08,0x40,0x08,0x80,0x07,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x03,0x80,0x0d,0x40,0x11, +0x20,0x11,0x20,0x12,0x20,0x12,0x40,0x0a,0x80,0x07,0x00,0x04,0x00,0x04,0x00,0x00, +0x00,0x00,0x00,0x06,0x10,0x09,0x10,0x01,0x20,0x01,0x40,0x01,0x80,0x01,0x00,0x03, +0x00,0x05,0x00,0x05,0x00,0x09,0x00,0x11,0x00,0x21,0x20,0x20,0xc0,0x00,0x00,0x00, +0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x30,0xa0,0x49,0x10,0x09,0x10,0x09,0x10,0x12, +0x20,0x12,0x40,0x13,0x80,0x0e,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x10,0x10,0x11,0x10,0x22,0x10,0x22,0x20,0x22, +0x20,0x26,0x40,0x19,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01, +0x00,0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x0f,0xe0,0x10,0x10,0x10, +0x10,0x38,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xe0,0x08,0x20,0x08, +0x10,0x08,0x00,0x08,0x00,0x0f,0xc0,0x08,0x30,0x08,0x08,0x08,0x08,0x08,0x30,0x1f, +0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x80,0x08,0x60,0x08,0x10,0x08, +0x10,0x08,0x60,0x0f,0xc0,0x08,0x30,0x08,0x08,0x08,0x08,0x08,0x30,0x1f,0xc0,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xe0,0x08,0x20,0x08,0x10,0x08,0x00,0x08, +0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x1c,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04, +0x20,0x04,0x20,0x04,0x20,0x08,0x20,0x08,0x20,0x3f,0xf8,0x20,0x08,0x20,0x08,0x00, +0x00,0x00,0x00,0x3f,0xc0,0x10,0x40,0x10,0x20,0x10,0x00,0x10,0x40,0x1f,0xc0,0x10, +0x40,0x10,0x00,0x10,0x00,0x10,0x20,0x3f,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x09, +0x00,0x09,0x00,0x3f,0xc0,0x10,0x20,0x10,0x00,0x10,0x80,0x1f,0x80,0x10,0x80,0x10, +0x00,0x10,0x00,0x10,0x20,0x3f,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33, +0x98,0x29,0x28,0x09,0x20,0x09,0x20,0x09,0x20,0x07,0xc0,0x05,0x40,0x09,0x20,0x11, +0x10,0x11,0x10,0x33,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x0c, +0x60,0x10,0x10,0x00,0x10,0x00,0x60,0x03,0xc0,0x00,0x60,0x00,0x10,0x10,0x10,0x0c, +0x60,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x30,0x10,0x60,0x10, +0x60,0x10,0xa0,0x11,0x20,0x12,0x20,0x12,0x20,0x14,0x20,0x18,0x20,0x18,0x20,0x10, +0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x80,0x03,0x00,0x38,0x30,0x10,0x60,0x10, +0xa0,0x10,0xa0,0x11,0x20,0x12,0x20,0x14,0x20,0x18,0x20,0x18,0x20,0x10,0x70,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x60,0x10,0x90,0x11,0x00,0x12,0x00,0x16, +0x00,0x1a,0x00,0x11,0x00,0x10,0x80,0x10,0x40,0x10,0x20,0x38,0x70,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x03,0xf8,0x02,0x10,0x02,0x10,0x02,0x10,0x02,0x10,0x02, +0x10,0x02,0x10,0x02,0x10,0x24,0x10,0x24,0x10,0x18,0x38,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x30,0x30,0x10,0x20,0x18,0x60,0x18,0xa0,0x14,0xa0,0x15,0x20,0x23, +0x10,0x22,0x10,0x22,0x10,0x20,0x10,0x70,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x38,0x70,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x1f,0xe0,0x10,0x20,0x10, +0x20,0x10,0x20,0x10,0x20,0x38,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03, +0x80,0x0c,0x60,0x10,0x10,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x10, +0x10,0x0c,0x60,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xf0,0x10, +0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10, +0x20,0x38,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x00,0x10,0xc0,0x10, +0x20,0x10,0x20,0x10,0xc0,0x1f,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x38, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xd0,0x0c,0x30,0x10,0x10,0x20, +0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x10,0x10,0x0c,0x20,0x03,0xc0,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xe0,0x22,0x20,0x42,0x10,0x02,0x00,0x02, +0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x07,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x10,0x10,0x08,0x10,0x08,0x20,0x04,0x20,0x02, +0x40,0x02,0x40,0x01,0x80,0x00,0x80,0x01,0x00,0x01,0x00,0x02,0x00,0x0c,0x00,0x00, +0x00,0x00,0x00,0x03,0x80,0x01,0x00,0x07,0xc0,0x19,0x30,0x21,0x08,0x21,0x08,0x21, +0x08,0x19,0x30,0x07,0xc0,0x01,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x38,0x70,0x10,0x20,0x08,0x40,0x04,0x80,0x03,0x00,0x01,0x00,0x02,0x80,0x04, +0x40,0x08,0x20,0x10,0x10,0x38,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38, +0x70,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10, +0x20,0x10,0x20,0x3f,0xf8,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x38,0x70,0x10, +0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x60,0x08,0xa0,0x07,0x20,0x00,0x20,0x00, +0x20,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3b,0xb8,0x11,0x10,0x11, +0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x3f, +0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3b,0xb8,0x11,0x10,0x11,0x10,0x11, +0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x3f,0xf8,0x00, +0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x1f,0x00,0x12,0x00,0x22,0x00,0x02,0x00,0x03, +0xc0,0x02,0x30,0x02,0x08,0x02,0x08,0x02,0x08,0x02,0x30,0x07,0xc0,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x38,0x70,0x10,0x20,0x10,0x20,0x10,0x20,0x1e,0x20,0x11, +0x20,0x10,0xa0,0x10,0xa0,0x10,0xa0,0x13,0x20,0x3c,0x70,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x0e,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x07,0x80,0x04,0x60,0x04, +0x10,0x04,0x10,0x04,0x10,0x04,0x60,0x0f,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x03,0x80,0x0c,0x60,0x10,0x10,0x00,0x10,0x06,0x08,0x09,0x38,0x00,0xc8,0x00, +0x10,0x10,0x10,0x0c,0x60,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38, +0xe0,0x11,0x10,0x11,0x10,0x12,0x08,0x12,0x08,0x1e,0x08,0x12,0x08,0x12,0x08,0x11, +0x10,0x11,0x10,0x38,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xf0,0x0c, +0x20,0x10,0x20,0x10,0x20,0x0c,0x20,0x03,0xe0,0x04,0x20,0x08,0x20,0x08,0x20,0x10, +0x20,0x38,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x07,0x80,0x08,0x40,0x08,0x40,0x03,0xc0,0x0c,0x40,0x10,0x40,0x10,0xc0,0x0f, +0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xe0,0x03,0x00,0x04,0x00,0x05, +0x80,0x0e,0x60,0x08,0x10,0x08,0x10,0x08,0x10,0x08,0x10,0x06,0x60,0x01,0x80,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xc0,0x04, +0x20,0x04,0x20,0x07,0xc0,0x04,0x20,0x04,0x10,0x04,0x10,0x0f,0xe0,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xc0,0x08,0x40,0x08, +0x20,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xf0,0x04,0x20,0x04,0x20,0x04, +0x20,0x04,0x20,0x04,0x20,0x08,0x20,0x3f,0xe0,0x20,0x20,0x20,0x20,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x08,0x40,0x10,0x20,0x1f,0xe0,0x10, +0x00,0x10,0x20,0x0c,0x40,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04, +0x80,0x04,0x80,0x00,0x00,0x07,0x80,0x08,0x40,0x10,0x20,0x1f,0xe0,0x10,0x00,0x10, +0x20,0x0c,0x40,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x33,0x98,0x09,0x20,0x05,0x40,0x03,0x80,0x05,0x40,0x09,0x20,0x09, +0x20,0x33,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x07,0x80,0x08,0x60,0x10,0x20,0x03,0xc0,0x00,0x60,0x10,0x20,0x08,0x40,0x07, +0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38, +0x70,0x10,0x60,0x10,0xa0,0x11,0x20,0x12,0x20,0x14,0x20,0x18,0x20,0x38,0x70,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x80,0x03,0x00,0x38,0x70,0x10, +0x60,0x10,0xa0,0x11,0x20,0x12,0x20,0x14,0x20,0x18,0x20,0x38,0x70,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x60,0x08,0xa0,0x09, +0x00,0x0f,0x00,0x08,0x80,0x08,0x40,0x08,0x20,0x1c,0x70,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xf0,0x02,0x20,0x02,0x20,0x02, +0x20,0x02,0x20,0x24,0x20,0x24,0x20,0x18,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x18,0x30,0x14,0x50,0x14,0x50,0x12, +0x90,0x12,0x90,0x11,0x10,0x38,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x1c,0x70,0x08,0x20,0x08,0x20,0x0f,0xe0,0x08,0x20,0x08, +0x20,0x08,0x20,0x1c,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x07,0x80,0x08,0x40,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x08, +0x40,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x1f,0xf0,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x1c, +0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0b, +0x80,0x0c,0x40,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x0c,0x40,0x0b,0x80,0x08, +0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x08, +0x40,0x10,0x20,0x10,0x00,0x10,0x00,0x10,0x20,0x08,0x40,0x07,0x80,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xe0,0x09,0x20,0x11, +0x10,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x70,0x08,0x20,0x04,0x20,0x04, +0x40,0x02,0x40,0x02,0x80,0x01,0x80,0x01,0x00,0x02,0x00,0x0c,0x00,0x00,0x00,0x00, +0x00,0x03,0x80,0x01,0x00,0x01,0x00,0x0d,0x60,0x13,0x90,0x21,0x08,0x21,0x08,0x21, +0x08,0x21,0x08,0x13,0x90,0x0d,0x60,0x01,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x18,0x60,0x08,0x40,0x04,0x80,0x03,0x00,0x03,0x00,0x04, +0x80,0x08,0x40,0x18,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x1c,0x70,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08, +0x20,0x1f,0xf0,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x1c,0x70,0x08,0x20,0x08,0x20,0x08,0x60,0x07,0xa0,0x00,0x20,0x00,0x20,0x00, +0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3b, +0xb8,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x1f,0xf8,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3b,0xb8,0x11, +0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x1f,0xf8,0x00,0x08,0x00, +0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x12,0x00,0x22, +0x00,0x03,0xc0,0x02,0x30,0x02,0x10,0x02,0x30,0x07,0xc0,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x70,0x08,0x20,0x08,0x20,0x0e, +0x20,0x09,0xa0,0x08,0xa0,0x09,0xa0,0x1e,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x04,0x00,0x04,0x00,0x07,0x80,0x04, +0x60,0x04,0x20,0x04,0x60,0x0f,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x08,0x60,0x10,0x20,0x03,0x70,0x04,0x90,0x10, +0x20,0x08,0x40,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x38,0xc0,0x11,0x20,0x12,0x10,0x1e,0x10,0x12,0x10,0x12,0x10,0x11, +0x20,0x38,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x07,0xe0,0x08,0x40,0x08,0x40,0x08,0x40,0x07,0xc0,0x04,0x40,0x08,0x40,0x1c, +0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x01,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xff,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0xfc,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0xfc,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0xff,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0xff,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xfc,0xff, +0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03, +0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03, +0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xfc,0x03,0xfc,0x03,0x00,0x03, +0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0xff,0x00,0x03,0x00,0x03,0x00,0x03, +0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03, +0x00,0x03,0x00,0x03,0x00,0xff,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03, +0x00,0x03,0x00,0x03,0xfc,0x03,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03, +0x00,0x03,0xfc,0x03,0xfc,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff, +0xfc,0xff,0xfc,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00, +0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0xff,0x00,0xff, +0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x03, +0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0xff,0xfc,0xff,0xfc,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03, +0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0xff,0xfc,0xff,0xfc,0x03,0x00,0x03, +0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x03, +0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0xfc,0x03,0x00,0x03,0x00,0x03, +0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0xff,0xfc,0xff,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03, +0x00,0x03,0x00,0x03,0x00,0xff,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03, +0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0xff,0xfc,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xff, +0xfc,0xff,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0xfc,0x01, +0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xfc,0x03, +0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xff,0x00,0xff,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x03, +0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0xff,0xfc,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03, +0x00,0x03,0x00,0x03,0x00,0x03,0x00,0xff,0xfc,0x03,0x00,0x03,0x00,0x03,0x00,0x03, +0x00,0x03,0x00,0x03,0x00}; + +const unsigned char font_889f[]={0x00, +0x00,0x7f,0xf8,0x04,0x80,0x04,0x80,0x3f,0xf0,0x24,0x90,0x24,0x90,0x24,0x90,0x3f, +0xf0,0x04,0x80,0x04,0x80,0x04,0x80,0x7f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x07, +0xfc,0x78,0xa0,0x48,0xa0,0x4b,0xf8,0x4a,0xa8,0x4a,0xa8,0x4a,0xa8,0x4b,0xf8,0x48, +0xa0,0x78,0xa0,0x00,0xa0,0x0f,0xfc,0x00,0x00,0x00,0x00,0x08,0x20,0x08,0x20,0x08, +0x20,0x08,0xf8,0x7e,0x20,0x12,0x20,0x13,0xfc,0x12,0x20,0x3c,0x20,0x24,0xf8,0x06, +0x20,0x0a,0x20,0x11,0xfc,0x20,0x00,0x00,0x00,0x00,0x00,0x3f,0xfc,0x24,0x08,0x28, +0x08,0x31,0xe8,0x29,0x28,0x25,0x28,0x25,0x28,0x25,0xe8,0x24,0x08,0x38,0x08,0x20, +0x08,0x20,0x08,0x20,0x18,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x0f, +0xe0,0x08,0x20,0x08,0x20,0x0f,0xe8,0x03,0x08,0x0c,0x90,0x74,0xa0,0x04,0x40,0x07, +0x30,0x38,0x0c,0x00,0x00,0x00,0x30,0x3f,0xd0,0x12,0x10,0x09,0x20,0x7f,0xfc,0x45, +0x84,0x54,0x54,0x13,0xc8,0x22,0x08,0x07,0xe0,0x3a,0x40,0x01,0x80,0x06,0xe0,0x78, +0x1c,0x00,0x00,0x10,0x80,0x10,0xa0,0x10,0x90,0x79,0x38,0x17,0xc8,0x11,0x00,0x11, +0xf8,0x1a,0x40,0x74,0x40,0x17,0xfc,0x10,0x40,0x10,0xa0,0x13,0x10,0x3c,0x0c,0x00, +0x00,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x50,0x7e,0x50,0x12,0x88,0x13,0xfc,0x12, +0x00,0x32,0xf8,0x2c,0x88,0x04,0x88,0x0a,0x88,0x10,0xf8,0x60,0x00,0x00,0x00,0x00, +0x80,0x21,0xf8,0x16,0x90,0x10,0x60,0x01,0xf0,0x0e,0x4c,0x73,0xf8,0x10,0x40,0x13, +0xf8,0x10,0x40,0x17,0xfc,0x18,0x40,0x26,0x40,0x41,0xfc,0x00,0x00,0x04,0x40,0x7f, +0xfc,0x04,0x40,0x07,0x20,0x11,0x28,0x0a,0xc8,0x04,0x50,0x1f,0xf0,0x61,0x0c,0x1f, +0xf0,0x01,0x00,0x02,0x80,0x0c,0x60,0x30,0x18,0x00,0x00,0x04,0x40,0x04,0x40,0x7f, +0xfc,0x04,0x40,0x7f,0xfc,0x04,0x80,0x3f,0xf8,0x24,0x88,0x24,0x88,0x28,0x78,0x30, +0x08,0x20,0x08,0x3f,0xf8,0x00,0x00,0x00,0x00,0x04,0x40,0x19,0xf0,0x76,0x20,0x11, +0xf0,0x11,0x50,0x7d,0xf0,0x11,0x50,0x1b,0xf8,0x36,0x48,0x37,0xf8,0x52,0x48,0x13, +0xfc,0x10,0x44,0x10,0x3c,0x00,0x00,0x00,0x00,0x3f,0xf8,0x02,0x80,0x1f,0xf0,0x12, +0x90,0x1f,0xf0,0x02,0x80,0x7f,0xfc,0x01,0x00,0x14,0x90,0x14,0x88,0x24,0x24,0x44, +0x24,0x03,0xe0,0x00,0x00,0x10,0x00,0x13,0xf8,0x12,0x08,0x7f,0xf8,0x12,0x00,0x13, +0xf8,0x12,0x60,0x1a,0x90,0x73,0xe8,0x14,0x40,0x17,0xf8,0x18,0x40,0x17,0xfc,0x30, +0x00,0x00,0x00,0x10,0x00,0x0b,0xf8,0x0a,0x08,0x43,0xf8,0x22,0x00,0x23,0xfc,0x02, +0x50,0x02,0x98,0x13,0xe4,0x12,0x40,0x25,0xf8,0x24,0x40,0x4f,0xfc,0x40,0x00,0x00, +0x00,0x08,0x00,0x08,0xf8,0x08,0x88,0x08,0x88,0x7e,0x88,0x0a,0xf8,0x0a,0x88,0x0a, +0x88,0x0a,0x88,0x0a,0xf8,0x12,0x80,0x12,0x04,0x22,0x04,0x41,0xfc,0x00,0x00,0x04, +0x40,0x7f,0xfc,0x05,0x40,0x0f,0xe0,0x02,0x20,0x7f,0xfc,0x08,0x20,0x0f,0xe0,0x00, +0x40,0x0f,0xf0,0x08,0x40,0x7f,0xfc,0x00,0x40,0x00,0x40,0x00,0x00,0x04,0x40,0x04, +0x40,0x7f,0xfc,0x04,0x40,0x3f,0xf8,0x00,0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x1f, +0xf0,0x10,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x08,0x20,0x08,0x30,0x1e, +0x48,0x25,0xf4,0x7e,0x20,0x2b,0xfc,0x3e,0x50,0x2a,0x98,0x3f,0x64,0x04,0x10,0x32, +0x64,0x2a,0x08,0x28,0x30,0x41,0xc0,0x00,0x00,0x08,0x20,0x08,0x20,0x09,0xfc,0x7e, +0x88,0x08,0x48,0x1c,0x50,0x1b,0xfc,0x1a,0x20,0x28,0x20,0x29,0xfc,0x48,0x20,0x08, +0x20,0x08,0x20,0x08,0x20,0x00,0x00,0x00,0x00,0x1f,0xfc,0x10,0x80,0x10,0x80,0x10, +0x80,0x10,0x80,0x17,0xf8,0x10,0x80,0x10,0x80,0x10,0x80,0x20,0x80,0x20,0x80,0x4f, +0xfc,0x00,0x00,0x00,0x00,0x08,0x20,0x08,0x20,0x7f,0x50,0x08,0x88,0x3f,0x54,0x22, +0x30,0x3e,0x90,0x22,0x50,0x3e,0x50,0x08,0x1c,0x7f,0xf0,0x08,0x10,0x08,0x10,0x08, +0x10,0x00,0x00,0x10,0x00,0x13,0xf0,0x11,0x10,0x7d,0x20,0x11,0x20,0x11,0xf8,0x11, +0x88,0x1d,0x88,0x72,0x50,0x12,0x50,0x12,0x20,0x14,0x50,0x15,0x88,0x3e,0x04,0x00, +0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x48,0x04,0x48,0x04,0x0e,0xf8,0x12,0x88,0x12, +0x88,0x2a,0x88,0x44,0xb0,0x04,0x80,0x08,0x84,0x10,0x84,0x60,0x7c,0x00,0x00,0x08, +0x00,0x08,0xf8,0x08,0x88,0x08,0x88,0x7e,0x88,0x12,0xf8,0x12,0x88,0x12,0x88,0x3c, +0xf8,0x24,0x88,0x06,0x88,0x08,0x88,0x13,0xfc,0x60,0x00,0x00,0x00,0x08,0x20,0x08, +0x20,0x08,0x20,0x3e,0x20,0x2b,0xfc,0x2a,0x80,0x2a,0x80,0x3e,0x80,0x28,0x80,0x0c, +0x80,0x0a,0x80,0x0f,0x80,0x71,0x80,0x00,0x78,0x00,0x00,0x08,0x20,0x08,0x20,0x14, +0x20,0x2a,0x50,0x48,0x48,0x3e,0x9c,0x23,0xe4,0x3e,0x00,0x22,0xf8,0x3e,0x88,0x28, +0x88,0x24,0x88,0x3a,0xf8,0x62,0x00,0x00,0x00,0x11,0x00,0x11,0x00,0x15,0x00,0x65, +0xf8,0x1a,0x08,0x13,0xe8,0x29,0x28,0x7d,0xe8,0x15,0x28,0x19,0x28,0x35,0xe8,0x34, +0x08,0x50,0x08,0x10,0x30,0x00,0x00,0x10,0x40,0x10,0x40,0x25,0xf8,0x68,0x40,0x1b, +0xfc,0x10,0xa0,0x29,0x24,0x7e,0x9c,0x10,0xf0,0x59,0x90,0x56,0xa0,0x54,0x40,0x51, +0xb0,0x16,0x0c,0x00,0x00,0x08,0x20,0x08,0x20,0x1e,0x20,0x24,0x3c,0x7e,0x20,0x2a, +0x20,0x3e,0x20,0x2a,0xf8,0x3e,0x88,0x04,0x88,0x32,0x88,0x2a,0x88,0x28,0xf8,0x40, +0x00,0x00,0x00,0x00,0x90,0x00,0x88,0x00,0x88,0x7f,0xfc,0x00,0x80,0x1e,0x88,0x12, +0x88,0x12,0x48,0x1e,0x50,0x10,0x30,0x03,0x24,0x0c,0x54,0x71,0x8c,0x06,0x04,0x00, +0x00,0x00,0x00,0x7f,0xfc,0x02,0x80,0x1f,0xf0,0x12,0x90,0x12,0x90,0x1f,0xf0,0x09, +0x20,0x05,0x40,0x7f,0xfc,0x03,0x80,0x0d,0x60,0x71,0x1c,0x01,0x00,0x00,0x00,0x10, +0x40,0x10,0x40,0x10,0xa0,0x7c,0xa0,0x09,0x10,0x0b,0xf8,0x12,0x04,0x3c,0x00,0x55, +0xf0,0x13,0x10,0x11,0x10,0x11,0x10,0x11,0xf0,0x10,0x00,0x00,0x00,0x01,0x00,0x01, +0x00,0x7f,0xfc,0x42,0x04,0x42,0x04,0x02,0x00,0x7f,0xfc,0x04,0x40,0x04,0x40,0x0f, +0x40,0x08,0xc0,0x01,0x20,0x06,0x10,0x38,0x08,0x00,0x00,0x00,0x80,0x00,0x80,0x1f, +0xfc,0x11,0x00,0x1f,0xfc,0x12,0xa0,0x14,0x90,0x1f,0xfc,0x14,0x90,0x17,0xf0,0x24, +0x90,0x27,0xf0,0x40,0x84,0x00,0x7c,0x00,0x00,0x10,0x40,0x10,0x40,0x17,0xfc,0x7c, +0x04,0x14,0x44,0x10,0x40,0x17,0xfc,0x18,0x90,0x70,0x90,0x11,0x90,0x11,0x60,0x10, +0x30,0x10,0xc8,0x37,0x04,0x00,0x00,0x00,0x40,0x00,0x40,0x7b,0xf8,0x49,0x10,0x48, +0xa0,0x4f,0xfc,0x78,0x00,0x49,0xf0,0x49,0x10,0x49,0xf0,0x49,0x10,0x79,0x10,0x01, +0xf0,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x42,0x04,0x5f,0xf4,0x04, +0x40,0x0f,0x80,0x03,0x60,0x1d,0x10,0x7f,0xfc,0x03,0x80,0x0d,0x60,0x71,0x1c,0x01, +0x00,0x00,0x00,0x00,0x00,0x3e,0xf8,0x22,0x88,0x3e,0xf8,0x3e,0xf8,0x21,0x08,0x2f, +0xe8,0x22,0x88,0x3f,0xf8,0x24,0x48,0x27,0xc8,0x24,0x48,0x27,0xc8,0x20,0x18,0x00, +0x00,0x14,0x20,0x14,0x20,0x7f,0xfc,0x15,0x04,0x1d,0x24,0x08,0x20,0x3f,0xfc,0x2a, +0x48,0x3e,0x48,0x08,0xf0,0x7e,0x90,0x08,0x28,0x08,0x44,0x09,0x84,0x00,0x00,0x01, +0x00,0x01,0x00,0x7f,0xfc,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x1f, +0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x10,0x10,0x10, +0x10,0x12,0x10,0x11,0x10,0x10,0x90,0x10,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x30,0x16,0x28,0x18,0x48,0x61,0x84,0x06,0x04,0x00,0x00,0x08,0x00,0x0b,0xf8,0x08, +0x48,0x10,0x48,0x17,0xfc,0x30,0x48,0x50,0x48,0x13,0xf8,0x10,0x40,0x10,0x40,0x10, +0x80,0x10,0x80,0x11,0x00,0x12,0x00,0x00,0x00,0x08,0x80,0x08,0x80,0x08,0x80,0x10, +0x80,0x1f,0xfc,0x30,0x10,0x52,0x10,0x11,0x10,0x11,0x10,0x11,0x20,0x11,0x20,0x10, +0x40,0x1f,0xfc,0x10,0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x17,0xfc,0x10, +0x80,0x30,0xc8,0x51,0x48,0x13,0x50,0x15,0x20,0x11,0x20,0x11,0x10,0x11,0x50,0x11, +0x88,0x16,0x04,0x00,0x00,0x08,0x40,0x0b,0xf0,0x08,0x90,0x17,0xfc,0x10,0x00,0x33, +0xf0,0x52,0x10,0x13,0xf0,0x10,0x20,0x13,0xf8,0x12,0x20,0x1f,0xfc,0x10,0x20,0x10, +0x20,0x00,0x00,0x00,0x00,0x3f,0xf8,0x20,0x08,0x22,0x48,0x22,0x48,0x2f,0xe8,0x22, +0x48,0x22,0x48,0x3f,0xf8,0x22,0x48,0x24,0x48,0x28,0x48,0x3f,0xf8,0x00,0x00,0x00, +0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x3f,0xf0,0x01,0x10,0x3f,0xf0,0x21, +0x00,0x3f,0xfc,0x23,0x04,0x02,0x84,0x04,0x58,0x18,0x30,0x60,0x0c,0x00,0x00,0x00, +0x30,0x1f,0xc0,0x01,0x00,0x7f,0xfc,0x03,0x80,0x0d,0x60,0x71,0x1c,0x02,0x00,0x7f, +0xfc,0x04,0x40,0x0f,0x40,0x10,0xc0,0x03,0x30,0x3c,0x08,0x00,0x00,0x00,0x50,0x00, +0x48,0x1f,0xfc,0x10,0x40,0x1f,0xc8,0x12,0x48,0x1f,0xc8,0x14,0xd0,0x14,0xb0,0x1f, +0x30,0x11,0x24,0x22,0xd4,0x2c,0x8c,0x40,0x04,0x00,0x00,0x00,0x08,0x3f,0x08,0x21, +0x08,0x3f,0x08,0x20,0xfc,0x3e,0x08,0x20,0x48,0x3f,0x28,0x24,0x28,0x2e,0x08,0x2d, +0x08,0x35,0x08,0x44,0x08,0x0c,0x18,0x00,0x00,0x10,0x90,0x10,0x90,0x11,0x20,0x19, +0xfc,0x37,0x20,0x35,0x20,0x31,0xf8,0x51,0x20,0x11,0x20,0x11,0xf8,0x11,0x20,0x11, +0x20,0x11,0xfc,0x10,0x00,0x00,0x00,0x01,0x00,0x3f,0xf8,0x04,0x40,0x7f,0xfc,0x00, +0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x25,0x08,0x24,0x84,0x44, +0x24,0x03,0xe0,0x00,0x00,0x00,0x10,0x3f,0x10,0x21,0x10,0x3f,0xfc,0x2e,0x90,0x20, +0x50,0x3f,0x50,0x56,0x10,0x25,0x10,0x4d,0x30,0x04,0x88,0x24,0xa4,0x24,0x24,0x43, +0xe0,0x00,0x00,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x02, +0x00,0x07,0xf8,0x19,0x28,0x62,0x48,0x0c,0x88,0x31,0x08,0x06,0x10,0x00,0xe0,0x00, +0x00,0x08,0x20,0x08,0x20,0x09,0xfc,0x7e,0x60,0x08,0x50,0x1c,0x88,0x1b,0xfc,0x1a, +0x08,0x29,0xe8,0x29,0x28,0x49,0xe8,0x08,0x08,0x08,0x08,0x08,0x18,0x00,0x00,0x11, +0x00,0x09,0x00,0x09,0x00,0x3f,0xe0,0x02,0x20,0x02,0x40,0x07,0xf0,0x04,0x10,0x0f, +0xfc,0x08,0x04,0x15,0x44,0x32,0xa4,0x4a,0xa4,0x08,0x18,0x00,0x00,0x00,0x00,0x1f, +0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x00,0x00,0x7f,0xfc,0x09,0x10,0x08, +0x90,0x08,0xa0,0x0b,0x40,0x0c,0x30,0x70,0x0c,0x00,0x00,0x00,0x00,0x1f,0xf0,0x11, +0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x04,0x40,0x3f,0xf8,0x04,0x40,0x04,0x40,0x7f, +0xfc,0x02,0x40,0x0c,0x30,0x30,0x08,0x00,0x00,0x02,0x40,0x0c,0x78,0x38,0x88,0x09, +0x50,0x08,0x20,0x7e,0x40,0x09,0xa0,0x1c,0x3c,0x1a,0x44,0x2a,0xa8,0x49,0x18,0x08, +0x10,0x08,0x60,0x0b,0x80,0x00,0x00,0x08,0x48,0x08,0x48,0x0a,0x90,0x72,0xfc,0x15, +0x90,0x08,0x90,0x14,0xf8,0x7e,0x90,0x0a,0x90,0x2c,0xf8,0x2a,0x90,0x2a,0x90,0x48, +0xfc,0x08,0x00,0x00,0x00,0x08,0x20,0x09,0xf8,0x0a,0x48,0x73,0xfc,0x14,0x00,0x0c, +0xf8,0x12,0x88,0x7e,0xf8,0x08,0x10,0x2c,0xf8,0x2a,0x90,0x2b,0xfc,0x48,0x10,0x08, +0x10,0x00,0x00,0x00,0x00,0x3f,0xf8,0x21,0x08,0x3f,0xf8,0x21,0x08,0x3f,0xf8,0x00, +0x00,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x10,0x10,0x10,0x30,0x00, +0x00,0x04,0x40,0x7f,0xfc,0x04,0x60,0x1f,0xc0,0x01,0x00,0x7f,0xfc,0x05,0x40,0x19, +0x30,0x62,0x0c,0x3f,0xf8,0x04,0x40,0x0f,0x80,0x03,0x60,0x3c,0x10,0x00,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x03,0x08,0x04,0x88,0x1c,0x90,0x64, +0x60,0x04,0x40,0x04,0x20,0x05,0x90,0x06,0x08,0x38,0x04,0x00,0x00,0x00,0x00,0x3d, +0xfc,0x01,0x24,0x7f,0xfc,0x01,0x24,0x3d,0xfc,0x00,0x00,0x3c,0xf8,0x00,0x88,0x3c, +0xf8,0x24,0x88,0x24,0xf8,0x3c,0x88,0x00,0x98,0x00,0x00,0x00,0x40,0x23,0xf0,0x10, +0x90,0x17,0xfc,0x01,0xf0,0x01,0x10,0x71,0xf0,0x10,0x20,0x11,0xf8,0x11,0x20,0x17, +0xfc,0x18,0x20,0x26,0x20,0x41,0xfc,0x00,0x00,0x00,0x40,0x23,0xf0,0x12,0x50,0x13, +0xf0,0x0f,0xfc,0x02,0x10,0x73,0xf0,0x12,0x10,0x13,0xf0,0x12,0x10,0x13,0xf0,0x1b, +0x10,0x26,0x08,0x41,0xfc,0x00,0x00,0x00,0x00,0x3f,0xf8,0x22,0x00,0x22,0x00,0x27, +0xf0,0x24,0x80,0x28,0x80,0x3f,0xf8,0x21,0x40,0x21,0x20,0x22,0x10,0x2c,0x10,0x20, +0x00,0x3f,0xfc,0x00,0x00,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x3f,0xf8,0x04, +0x40,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x08,0x40,0x08,0x40,0x10,0x40,0x20, +0x40,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x02,0x40,0x1a,0x40,0x04, +0x90,0x03,0x20,0x02,0x40,0x0c,0xc0,0x11,0x20,0x06,0x10,0x18,0x08,0x60,0x08,0x00, +0x00,0x00,0x40,0x10,0x50,0x10,0x48,0x17,0xfc,0x10,0x40,0x7f,0xc8,0x12,0xc8,0x12, +0xa8,0x13,0xa8,0x16,0x30,0x18,0x94,0x63,0x34,0x0c,0x4c,0x00,0x84,0x00,0x00,0x01, +0x00,0x01,0x00,0x7f,0xfc,0x02,0x20,0x04,0x70,0x3f,0x88,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x08,0x20,0x08,0x60,0x00,0x00,0x04,0x00,0x04, +0x78,0x7f,0xc8,0x08,0x50,0x08,0x50,0x1f,0x60,0x11,0x50,0x3f,0x48,0x51,0x44,0x1f, +0x44,0x11,0x64,0x11,0x58,0x11,0x40,0x13,0x40,0x00,0x00,0x01,0x50,0x7d,0x50,0x12, +0x68,0x16,0xd8,0x11,0x50,0x3a,0xe8,0x2f,0x74,0x68,0x50,0x2b,0xfc,0x2a,0x28,0x3b, +0x28,0x02,0x94,0x04,0x2c,0x08,0xc4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x1f, +0xf0,0x00,0x00,0x7f,0xfc,0x44,0x04,0x44,0x64,0x07,0x80,0x04,0x00,0x04,0x08,0x04, +0x08,0x03,0xf8,0x00,0x00,0x24,0x10,0x12,0x10,0x12,0x20,0x0f,0xfc,0x42,0x20,0x22, +0x20,0x24,0x10,0x0f,0xf8,0x15,0x54,0x15,0x50,0x25,0x50,0x25,0x50,0x5f,0xfc,0x40, +0x00,0x00,0x00,0x00,0x80,0x20,0xf0,0x11,0x20,0x12,0x40,0x07,0xf8,0x02,0x48,0x72, +0x48,0x13,0xf8,0x10,0xc0,0x10,0xc0,0x11,0x44,0x1a,0x3c,0x26,0x00,0x41,0xfc,0x00, +0x00,0x02,0x18,0x0f,0xe4,0x3a,0x44,0x09,0x28,0x09,0x30,0x7e,0x00,0x19,0x78,0x1d, +0x48,0x2b,0x48,0x2b,0x78,0x49,0x48,0x09,0x48,0x09,0x78,0x09,0x00,0x00,0x00,0x04, +0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x05,0x40,0x21,0x00,0x11,0xfc,0x11,0x48,0x02, +0x50,0x04,0x40,0x18,0xa0,0x61,0x10,0x06,0x08,0x18,0x04,0x00,0x00,0x04,0x40,0x04, +0x40,0x7f,0xfc,0x04,0x40,0x00,0x00,0x1f,0xf0,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x09,0xf8,0x1e, +0x48,0x24,0x48,0x7f,0xf8,0x2b,0x20,0x3f,0xf8,0x2a,0x48,0x3f,0x68,0x04,0xd8,0x32, +0xd8,0x2b,0x68,0x28,0x48,0x41,0xb0,0x00,0x00,0x02,0x00,0x02,0x40,0x04,0x30,0x08, +0x68,0x7f,0x84,0x04,0x80,0x04,0x80,0x04,0x80,0x08,0x80,0x08,0x80,0x10,0x80,0x10, +0x84,0x20,0x84,0x40,0x7c,0x00,0x00,0x01,0x00,0x06,0x00,0x38,0xf8,0x20,0x88,0x20, +0x88,0x3e,0x88,0x20,0x88,0x20,0x88,0x20,0x88,0x3e,0x88,0x20,0xf0,0x00,0x80,0x00, +0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x03,0xf8,0x7a,0x48,0x4a,0x48,0x4a,0x48,0x4b, +0xf8,0x4a,0x48,0x4a,0x48,0x4a,0xa8,0x4a,0x98,0x7b,0x18,0x02,0x08,0x03,0xf8,0x00, +0x00,0x00,0x00,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x00,0x00,0x1f,0xf0,0x10, +0x10,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x06,0x60,0x38,0x18,0x00, +0x00,0x00,0x00,0x7f,0xf8,0x42,0x08,0x42,0x08,0x42,0x08,0x7f,0xf8,0x42,0x08,0x42, +0x08,0x45,0x08,0x48,0x88,0x50,0x68,0x40,0x08,0x40,0x08,0x7f,0xf8,0x00,0x00,0x10, +0x00,0x11,0xf8,0x11,0x48,0x11,0x48,0x7d,0x48,0x25,0xf8,0x25,0x48,0x25,0x48,0x79, +0x68,0x49,0x98,0x0d,0x98,0x15,0x08,0x21,0xf8,0x40,0x00,0x00,0x00,0x00,0x10,0x7f, +0x10,0x01,0x10,0x01,0x10,0x3f,0x10,0x20,0x10,0x20,0x10,0x3f,0x10,0x01,0x10,0x01, +0x10,0x01,0x10,0x01,0x10,0x02,0x10,0x1c,0x10,0x00,0x00,0x08,0x40,0x08,0x40,0x14, +0x40,0x1a,0x40,0x29,0xfc,0x7e,0xa4,0x23,0x28,0x3e,0x20,0x22,0x20,0x3e,0x60,0x28, +0x50,0x24,0x90,0x3b,0x08,0x62,0x04,0x00,0x00,0x10,0x0c,0x08,0x74,0x0f,0x84,0x44, +0x88,0x22,0x50,0x22,0x38,0x03,0xc0,0x10,0x40,0x10,0x40,0x13,0xf8,0x20,0x40,0x20, +0x40,0x4f,0xfc,0x40,0x00,0x00,0x00,0x11,0x10,0x11,0x50,0x1e,0x50,0x12,0x90,0x11, +0x50,0x1f,0xf0,0x10,0x30,0x17,0xd0,0x14,0x50,0x17,0xd0,0x14,0x50,0x27,0xd4,0x24, +0x54,0x44,0xcc,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x3c,0xa0,0x27,0xf0,0x2c, +0x0c,0x31,0xf0,0x28,0x20,0x25,0xf8,0x24,0x00,0x27,0xfc,0x38,0xa0,0x21,0x30,0x23, +0xc8,0x00,0x00,0x00,0x40,0x3c,0x40,0x27,0xfc,0x2a,0x04,0x32,0x04,0x2b,0xf8,0x24, +0x00,0x27,0xfc,0x24,0xa0,0x24,0xa0,0x39,0x20,0x21,0x24,0x22,0x24,0x24,0x1c,0x00, +0x00,0x00,0x40,0x3c,0x40,0x24,0xa0,0x29,0x10,0x32,0xe8,0x28,0x04,0x25,0xf0,0x24, +0x20,0x25,0xf0,0x24,0x00,0x3f,0xfc,0x20,0xa0,0x21,0x30,0x27,0xc8,0x00,0x00,0x00, +0x18,0x3f,0xe4,0x26,0x44,0x29,0x28,0x31,0xf8,0x28,0x08,0x25,0xf8,0x24,0x08,0x25, +0xf8,0x24,0x40,0x3a,0xa8,0x22,0xa4,0x24,0x94,0x20,0x70,0x00,0x00,0x08,0x00,0x08, +0xf8,0x7f,0x88,0x22,0xf8,0x14,0x00,0x7f,0xf8,0x00,0x88,0x3c,0xf8,0x24,0x88,0x3c, +0xf8,0x24,0x88,0x24,0xf8,0x3c,0xc8,0x03,0x04,0x00,0x00,0x00,0x10,0x00,0x10,0x78, +0x10,0x48,0x10,0x4f,0xfc,0x48,0x10,0x49,0x10,0x48,0x90,0x48,0x90,0x48,0x10,0x78, +0x10,0x00,0x10,0x00,0x10,0x00,0x30,0x00,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x7f, +0xfc,0x04,0x00,0x04,0x00,0x08,0x00,0x0f,0xf0,0x18,0x10,0x18,0x10,0x28,0x10,0x48, +0x10,0x0f,0xf0,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x40,0x04,0x40, +0x04,0x1f,0xf0,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x0f,0xe0,0x08,0x20,0x08,0x20,0x0f, +0xe0,0x08,0x00,0x0f,0xfc,0x08,0x00,0x0f,0xf8,0x29,0x48,0x24,0xa8,0x24,0x08,0x40, +0x30,0x00,0x00,0x00,0x00,0x7f,0xf8,0x02,0x08,0x02,0x08,0x22,0x88,0x12,0x48,0x12, +0x48,0x02,0x08,0x06,0x18,0x1a,0x68,0x63,0x88,0x02,0x08,0x02,0x08,0x06,0x18,0x00, +0x00,0x00,0x00,0x23,0xf8,0x10,0x40,0x10,0x40,0x00,0x40,0x07,0xfc,0x70,0x40,0x10, +0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x18,0xc0,0x26,0x00,0x41,0xfc,0x00,0x00,0x00, +0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x3f,0xf8,0x29,0x48,0x25,0x28,0x25,0x28,0x21, +0x08,0x29,0x48,0x25,0x28,0x25,0x28,0x21,0x08,0x21,0x18,0x00,0x00,0x02,0x00,0x0c, +0x00,0x30,0xf8,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x3e, +0x88,0x64,0xf0,0x04,0x80,0x08,0x80,0x10,0x80,0x00,0x00,0x24,0x20,0x14,0x40,0x18, +0xf8,0x7e,0x88,0x0a,0xf8,0x3e,0x88,0x28,0xf8,0x3e,0xfc,0x3a,0x80,0x1a,0xfc,0x2e, +0x54,0x49,0xac,0x09,0x44,0x0a,0x18,0x00,0x00,0x01,0x00,0x7f,0xfc,0x44,0x84,0x48, +0x78,0x19,0xf0,0x09,0x10,0x3f,0xf0,0x09,0x10,0x7f,0xf0,0x09,0x10,0x15,0xf0,0x14, +0xa4,0x21,0x24,0x46,0x1c,0x00,0x00,0x00,0x00,0x1f,0xe0,0x02,0x20,0x02,0x20,0x02, +0x20,0x02,0x20,0x3f,0xf8,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x7f, +0xfc,0x00,0x00,0x00,0x00,0x00,0x90,0x7e,0x90,0x10,0xa0,0x11,0xfc,0x11,0x20,0x3f, +0x20,0x25,0xf8,0x65,0x20,0x25,0x20,0x25,0xf8,0x25,0x20,0x3d,0x20,0x01,0xfc,0x00, +0x00,0x00,0x00,0x01,0x00,0x06,0x00,0x38,0xf8,0x20,0x08,0x20,0x08,0x20,0x08,0x20, +0x08,0x3e,0xf8,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x3f,0xf8,0x00,0x00,0x00, +0x00,0x10,0x00,0x0b,0xf0,0x0a,0x10,0x42,0xf0,0x22,0x90,0x22,0x90,0x07,0xf8,0x14, +0x08,0x15,0xe8,0x15,0x28,0x25,0x28,0x25,0xe8,0x44,0x08,0x44,0x18,0x00,0x00,0x00, +0x80,0x00,0xf8,0x70,0x80,0x57,0xfc,0x54,0xf8,0x57,0x88,0x54,0x78,0x54,0xa0,0x56, +0xa8,0x75,0xa8,0x09,0xb0,0x08,0xa0,0x17,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x01, +0xf8,0x3d,0x08,0x25,0x08,0x25,0xf8,0x25,0x08,0x25,0x08,0x25,0xf8,0x25,0x08,0x25, +0x08,0x3d,0xf8,0x00,0x90,0x03,0x08,0x0c,0x04,0x00,0x00,0x12,0x90,0x7d,0xfc,0x3a, +0xb8,0x55,0xd4,0x1f,0xf0,0x12,0x90,0x1f,0xf0,0x3e,0x10,0x23,0xfc,0x3e,0x90,0x3e, +0x50,0x24,0x50,0x3e,0x10,0x60,0x30,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x3f, +0x08,0x21,0x08,0x3f,0xfc,0x20,0x08,0x2e,0x48,0x20,0x28,0x3f,0x28,0x2e,0x08,0x2d, +0x08,0x55,0x08,0x0c,0x18,0x00,0x00,0x08,0x00,0x08,0xf8,0x1e,0x88,0x24,0xf8,0x7e, +0x88,0x2b,0xfc,0x3f,0x54,0x2b,0xfc,0x3e,0x00,0x04,0xf8,0x32,0x50,0x2a,0x20,0x28, +0xd0,0x43,0x0c,0x00,0x00,0x10,0x40,0x10,0x48,0x11,0xf8,0x10,0x50,0x7c,0x50,0x27, +0xfc,0x24,0x20,0x24,0xc0,0x78,0x98,0x49,0xe0,0x0e,0x80,0x14,0x84,0x20,0x84,0x40, +0x7c,0x00,0x00,0x00,0x00,0x3f,0xfc,0x20,0x00,0x2f,0x78,0x29,0x50,0x2f,0x50,0x29, +0x50,0x2f,0xfc,0x28,0x30,0x2a,0x30,0x29,0x50,0x2b,0x54,0x4c,0x94,0x31,0x0c,0x00, +0x00,0x10,0x50,0x08,0x48,0x0f,0xfc,0x40,0x40,0x23,0xf8,0x22,0x48,0x02,0x48,0x0b, +0xf8,0x0a,0x48,0x0a,0x48,0x13,0xf8,0x12,0x48,0x22,0x48,0x22,0x58,0x00,0x00,0x00, +0x10,0x00,0xe0,0x0f,0x20,0x09,0x20,0x09,0x20,0x09,0x20,0x09,0x20,0x09,0x20,0x09, +0x10,0x09,0x90,0x11,0x50,0x11,0xe8,0x2e,0x28,0x40,0x04,0x00,0x00,0x00,0x00,0x3e, +0xf8,0x22,0x88,0x3e,0xf8,0x22,0x88,0x3e,0xf8,0x20,0x08,0x2f,0xe8,0x21,0x08,0x27, +0xc8,0x21,0x08,0x2f,0xe8,0x20,0x08,0x20,0x18,0x00,0x00,0x01,0x10,0x00,0xa0,0x7f, +0xfc,0x48,0xa0,0x4b,0xf8,0x4a,0xa8,0x4b,0x38,0x4b,0xf8,0x4b,0xf8,0x48,0x10,0x7f, +0xfc,0x01,0x10,0x00,0x90,0x00,0x30,0x00,0x00,0x00,0x00,0x1f,0xf0,0x00,0x00,0x00, +0x00,0x00,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01,0x40,0x02,0x20,0x02,0x10,0x04, +0x70,0x3f,0x88,0x00,0x08,0x00,0x00,0x00,0x00,0x27,0xfc,0x14,0x44,0x1f,0xf4,0x00, +0x40,0x03,0xf8,0x72,0x48,0x13,0xf8,0x12,0x48,0x13,0xf8,0x10,0x40,0x17,0xfc,0x2c, +0x40,0x43,0xfc,0x00,0x00,0x00,0x00,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x41,0x04,0x79, +0x74,0x1d,0x38,0x00,0x00,0x1f,0xf0,0x00,0x00,0x7f,0xfc,0x02,0x20,0x04,0xf0,0x3f, +0x08,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x08,0x18,0x0b,0xe0,0x10, +0x40,0x10,0x40,0x37,0xfc,0x50,0x40,0x10,0x40,0x10,0x40,0x13,0xf8,0x10,0x00,0x00, +0x00,0x08,0x00,0x0d,0xfc,0x12,0x48,0x2a,0x48,0x48,0x78,0x3e,0x48,0x22,0x48,0x3e, +0x78,0x22,0x48,0x3e,0x4c,0x24,0x78,0x27,0x88,0x3a,0x08,0x60,0x08,0x00,0x00,0x0e, +0x00,0x08,0xf8,0x7f,0x08,0x5d,0x48,0x5a,0x48,0x2d,0x50,0x52,0x50,0x1f,0x30,0x32, +0x20,0x5e,0x30,0x12,0x50,0x1e,0x48,0x12,0x88,0x1f,0x04,0x00,0x00,0x12,0x10,0x09, +0x20,0x7f,0xfc,0x40,0x04,0x4f,0xe4,0x08,0x20,0x08,0x20,0x0f,0xe0,0x02,0x00,0x1f, +0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x3e,0xf8,0x22, +0x88,0x3e,0xf8,0x22,0x88,0x3e,0xf8,0x22,0x88,0x3e,0xf8,0x15,0x50,0x7f,0xfc,0x04, +0x20,0x0f,0x40,0x01,0xe0,0x3e,0x18,0x00,0x00,0x00,0x10,0x1f,0x10,0x11,0x20,0x1f, +0x20,0x11,0x48,0x1f,0x08,0x04,0x10,0x7f,0x90,0x11,0x24,0x1f,0x04,0x15,0x08,0x14, +0x88,0x24,0x90,0x0c,0x20,0x00,0x00,0x00,0x40,0x00,0x40,0x78,0x40,0x4b,0xf8,0x4a, +0x48,0x4a,0x48,0x7a,0x48,0x4f,0xfc,0x48,0x40,0x48,0xa0,0x78,0xa0,0x01,0x10,0x02, +0x08,0x0c,0x04,0x00,0x00,0x01,0x00,0x1f,0xf0,0x11,0x10,0x11,0x10,0x1f,0xf0,0x11, +0x10,0x11,0x10,0x1f,0xf8,0x01,0x10,0x00,0xa0,0x00,0xc0,0x03,0x44,0x3c,0x34,0x00, +0x0c,0x00,0x00,0x12,0x10,0x09,0x10,0x09,0x20,0x7f,0xfc,0x40,0x04,0x41,0x04,0x01, +0x00,0x7f,0xfc,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x01,0x00,0x00, +0x00,0x03,0x00,0x00,0x80,0x00,0x00,0x0f,0x00,0x01,0x08,0x01,0x88,0x7f,0x90,0x05, +0x60,0x05,0x40,0x09,0x20,0x11,0x10,0x61,0x0c,0x01,0x00,0x03,0x00,0x00,0x00,0x10, +0xc0,0x08,0x20,0x08,0x00,0x43,0xc0,0x20,0x48,0x20,0x48,0x07,0xf0,0x10,0xe0,0x11, +0x50,0x11,0x50,0x22,0x48,0x24,0x44,0x40,0x40,0x40,0xc0,0x00,0x00,0x10,0x40,0x08, +0x40,0x0b,0xf8,0x42,0x48,0x22,0x48,0x23,0xf8,0x02,0x48,0x0b,0xf8,0x08,0x48,0x08, +0x30,0x10,0x20,0x10,0xd4,0x27,0x0c,0x20,0x04,0x00,0x00,0x01,0x10,0x01,0x10,0x7f, +0xfc,0x11,0x10,0x10,0x40,0x13,0xf8,0x7e,0x48,0x12,0x48,0x17,0xfc,0x10,0x40,0x1c, +0x60,0x60,0x90,0x03,0x08,0x0c,0x04,0x00,0x00,0x00,0x00,0x1f,0xc0,0x04,0x40,0x04, +0x40,0x0f,0xf8,0x0c,0x88,0x13,0x08,0x22,0x88,0x4c,0x70,0x1f,0xf0,0x12,0x90,0x12, +0x90,0x7f,0xfc,0x00,0x00,0x00,0x00,0x20,0x00,0x25,0xfc,0x38,0x20,0x22,0x40,0x1c, +0xf8,0x02,0x88,0x3c,0xf8,0x08,0x88,0x7e,0xf8,0x18,0x88,0x1c,0xf8,0x2a,0x50,0x48, +0x88,0x0b,0x04,0x00,0x00,0x20,0x00,0x25,0xfc,0x38,0x20,0x22,0x40,0x1e,0xf8,0x00, +0x88,0x3e,0xf8,0x00,0x88,0x7f,0xf8,0x0c,0x88,0x2a,0xf8,0x2a,0x50,0x48,0x88,0x1b, +0x04,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x01,0x00,0x1f,0xf0,0x11, +0x10,0x11,0x10,0x11,0x10,0x7f,0xfc,0x02,0x80,0x04,0x40,0x18,0x30,0x60,0x0c,0x00, +0x00,0x11,0x00,0x17,0xb8,0x22,0x80,0x4f,0xc0,0x08,0x7c,0x17,0x90,0x14,0x90,0x37, +0x90,0x51,0x10,0x17,0x90,0x15,0x10,0x1f,0xd0,0x11,0x10,0x11,0x30,0x00,0x00,0x00, +0x40,0x3c,0x20,0x00,0x20,0x7e,0xe0,0x00,0x28,0x3c,0x28,0x01,0xf0,0x3c,0x70,0x00, +0xb0,0x3c,0xa8,0x25,0x28,0x26,0x24,0x3c,0x20,0x00,0x60,0x00,0x00,0x08,0x88,0x08, +0x48,0x14,0x50,0x12,0xf8,0x22,0x88,0x5c,0x88,0x08,0x88,0x7e,0xf8,0x08,0x50,0x2a, +0x50,0x1c,0x90,0x18,0x94,0x0f,0x14,0x72,0x0c,0x00,0x00,0x10,0x40,0x08,0x40,0x0f, +0xfc,0x41,0x40,0x21,0x78,0x22,0x48,0x02,0xa8,0x16,0x98,0x1b,0x50,0x12,0x50,0x22, +0x20,0x22,0x50,0x42,0x88,0x43,0x04,0x00,0x00,0x00,0x80,0x00,0x80,0x0f,0xfc,0x48, +0x00,0x29,0xe0,0x29,0x24,0x09,0x24,0x1a,0x1c,0x2f,0xf0,0x49,0x10,0x10,0xa0,0x10, +0x40,0x21,0xb0,0x4e,0x0c,0x00,0x00,0x08,0x20,0x04,0x20,0x04,0x40,0x7f,0xfc,0x08, +0x20,0x08,0x20,0x10,0x10,0x1f,0xf0,0x2a,0xa8,0x4a,0xa4,0x0a,0xa0,0x0a,0xa0,0x7f, +0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x28,0x88,0x3e,0x88,0x28,0x88,0x3e, +0xf8,0x28,0xa0,0x3e,0xa0,0x02,0xa0,0x2a,0x90,0x2a,0x90,0x2b,0x08,0x45,0x08,0x1a, +0x04,0x00,0x00,0x11,0x10,0x10,0x90,0x10,0xa0,0x1b,0xf8,0x36,0x08,0x36,0x08,0x33, +0xf8,0x50,0xa0,0x10,0xa0,0x11,0x20,0x11,0x20,0x12,0x24,0x14,0x24,0x18,0x1c,0x00, +0x00,0x00,0x00,0x3d,0xf0,0x01,0x10,0x7f,0xf0,0x01,0x10,0x3d,0xf0,0x00,0x80,0x3d, +0xf8,0x03,0x28,0x3d,0xc8,0x25,0x28,0x24,0xe8,0x3c,0x08,0x00,0x30,0x00,0x00,0x08, +0x20,0x08,0x28,0x3e,0x24,0x09,0xfc,0x09,0x20,0x7f,0x28,0x09,0x28,0x29,0x30,0x2f, +0x50,0x29,0x94,0x3b,0x2c,0x28,0x44,0x46,0x00,0x41,0xfc,0x00,0x00,0x00,0x00,0x7c, +0xf8,0x44,0x88,0x7c,0xf8,0x44,0x88,0x7c,0xf8,0x48,0x48,0x44,0x88,0x4f,0xc8,0x48, +0x48,0x4f,0xc8,0x44,0x88,0x48,0xa8,0x50,0x78,0x00,0x00,0x08,0x00,0x0b,0xfc,0x08, +0x40,0x7f,0xf8,0x09,0x08,0x1d,0xf8,0x1b,0x08,0x1b,0xf8,0x29,0x08,0x29,0xf8,0x4b, +0x90,0x08,0x60,0x09,0xb0,0x0e,0x0c,0x00,0x00,0x00,0x00,0x3f,0xfc,0x20,0x00,0x2f, +0x28,0x29,0x24,0x2f,0x20,0x20,0xfc,0x2f,0x20,0x29,0x20,0x2f,0x20,0x29,0x70,0x2f, +0x50,0x29,0x88,0x4b,0x04,0x00,0x00,0x00,0x00,0x3f,0xf8,0x21,0x08,0x21,0x08,0x21, +0x08,0x21,0x08,0x21,0x08,0x3f,0xf8,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20, +0x08,0x20,0x18,0x00,0x00,0x00,0x00,0x3f,0xf8,0x21,0x08,0x2f,0xe8,0x21,0x08,0x3f, +0xf8,0x27,0xc8,0x24,0x48,0x27,0xe8,0x23,0xa8,0x2d,0x48,0x21,0x28,0x3f,0xf8,0x00, +0x00,0x00,0x00,0x00,0x00,0x13,0xfc,0x12,0x00,0x12,0xf8,0x7e,0x88,0x12,0xf8,0x12, +0x88,0x12,0xf8,0x16,0x20,0x1b,0xfc,0x62,0xd0,0x02,0x30,0x02,0xc8,0x03,0xfc,0x00, +0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x02,0x80,0x0d,0x60,0x71,0x1c,0x1f,0xf0,0x11, +0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x01,0x04,0x01,0x04,0x00,0xfc,0x00,0x00,0x01, +0x00,0x7f,0xfc,0x40,0x04,0x4f,0xe4,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x01, +0x00,0x7f,0xfc,0x04,0x40,0x0e,0x80,0x03,0xc0,0x3c,0x30,0x00,0x00,0x00,0x00,0x78, +0x1c,0x0b,0xe0,0x10,0x20,0x10,0x20,0x3d,0x20,0x05,0x38,0x25,0x20,0x25,0x20,0x15, +0x20,0x1b,0xfc,0x18,0x00,0x26,0x00,0x41,0xfc,0x00,0x00,0x08,0x00,0x08,0x00,0x1f, +0xf8,0x11,0x88,0x2a,0x88,0x46,0xb0,0x04,0x84,0x18,0x7c,0x61,0x00,0x14,0x90,0x14, +0x88,0x24,0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x10,0x40,0x10,0x40,0x13,0xfc,0x7c, +0xa0,0x11,0x50,0x12,0x48,0x1f,0xfc,0x12,0x48,0x33,0xf8,0x52,0x48,0x13,0xf8,0x10, +0x40,0x10,0x44,0x30,0x3c,0x00,0x00,0x10,0x08,0x10,0x30,0x13,0xc8,0x7e,0x48,0x11, +0x10,0x13,0xf8,0x10,0x80,0x1f,0xfc,0x71,0x00,0x11,0xf8,0x12,0x90,0x14,0x60,0x18, +0xf0,0x33,0x0c,0x00,0x00,0x10,0xe0,0x08,0x20,0x09,0x20,0x41,0x20,0x21,0x10,0x22, +0x10,0x02,0x08,0x17,0xf4,0x12,0x10,0x12,0x10,0x22,0x10,0x22,0x10,0x43,0xf0,0x40, +0x00,0x00,0x00,0x10,0x40,0x08,0x40,0x0f,0xfc,0x44,0x04,0x2f,0xf8,0x20,0x40,0x03, +0xf8,0x12,0x48,0x13,0xf8,0x12,0x48,0x23,0xf8,0x20,0x90,0x43,0x08,0x4c,0x04,0x00, +0x00,0x01,0x10,0x09,0x10,0x09,0x20,0x13,0x00,0x02,0xc0,0x0c,0x30,0x31,0x08,0x01, +0x10,0x11,0x10,0x13,0x20,0x22,0x80,0x04,0x40,0x18,0x30,0x60,0x0c,0x00,0x00,0x08, +0x40,0x08,0x40,0x0a,0x78,0x0a,0x88,0x2b,0x10,0x2c,0x20,0x29,0x78,0x49,0x48,0x09, +0x48,0x0d,0x78,0x13,0x48,0x13,0x48,0x21,0x78,0x41,0x00,0x00,0x00,0x10,0x00,0x17, +0xfc,0x10,0xa0,0x17,0xf8,0x36,0xa8,0x3a,0xa8,0x33,0xf8,0x50,0x40,0x18,0x40,0x17, +0xf8,0x24,0x40,0x20,0x40,0x47,0xfc,0x00,0x00,0x00,0x00,0x04,0x40,0x04,0x40,0x7f, +0xfc,0x04,0x40,0x0f,0xe4,0x78,0x28,0x0b,0xb0,0x1a,0xa0,0x6a,0xa4,0x0b,0x9c,0x14, +0x90,0x12,0x48,0x22,0x44,0x40,0x04,0x00,0x00,0x08,0x40,0x4b,0xf8,0x30,0x40,0x17, +0xfc,0x30,0x00,0x49,0xf0,0x09,0x10,0x19,0xf0,0x28,0xc8,0x4f,0x48,0x09,0x30,0x09, +0x10,0x31,0xc8,0x16,0x04,0x00,0x00,0x10,0x00,0x11,0xf0,0x14,0x10,0x65,0xf0,0x18, +0x10,0x1b,0xfc,0x24,0x40,0x7c,0xe4,0x13,0x68,0x38,0xb0,0x37,0x70,0x34,0xa8,0x53, +0x24,0x10,0xc0,0x00,0x00,0x14,0x20,0x7f,0x20,0x55,0x78,0x7f,0x90,0x55,0x20,0x7f, +0xf8,0x00,0xa8,0x7f,0xa8,0x3e,0xf8,0x22,0x80,0x3e,0x80,0x24,0x84,0x1e,0x84,0x60, +0x7c,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x08,0x00,0x08,0xf8,0x1e, +0x88,0x12,0x88,0x22,0x88,0x54,0xb0,0x0c,0x80,0x08,0x84,0x10,0x84,0x20,0x7c,0x00, +0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x3f,0xf8,0x21,0x08,0x27,0xc8,0x3f,0xf8,0x24, +0x48,0x27,0xe8,0x23,0xa8,0x2e,0x48,0x22,0x28,0x3f,0xf8,0x00,0x00,0x00,0x00,0x00, +0x40,0x23,0xf8,0x10,0x40,0x17,0xfc,0x00,0x00,0x03,0xf8,0x72,0x08,0x13,0xf8,0x10, +0x88,0x11,0xd0,0x1e,0xb0,0x18,0x88,0x26,0x80,0x41,0xfc,0x00,0x00,0x08,0x70,0x08, +0x10,0x14,0x90,0x12,0x90,0x22,0x88,0x5d,0x08,0x09,0x04,0x7e,0xf8,0x08,0x88,0x2a, +0x88,0x1c,0x88,0x18,0x88,0x0e,0xf8,0x70,0x00,0x00,0x00,0x08,0x00,0x1f,0xf8,0x72, +0x88,0x0c,0xb0,0x18,0x84,0x62,0x7c,0x0f,0xc0,0x08,0x40,0x0f,0xf8,0x08,0x00,0x0f, +0xf8,0x15,0x48,0x25,0x28,0x40,0x30,0x00,0x00,0x01,0x00,0x11,0x00,0x11,0xfc,0x12, +0x00,0x7f,0xf0,0x15,0x10,0x11,0xf0,0x10,0x00,0x17,0xf8,0x1a,0xa8,0x62,0xa8,0x02, +0xa8,0x0f,0xfc,0x00,0x00,0x00,0x00,0x08,0x20,0x08,0x20,0x08,0x20,0x7f,0x50,0x08, +0x50,0x08,0x88,0x0f,0x44,0x0a,0x20,0x0a,0x20,0x12,0x00,0x12,0x40,0x22,0x20,0x42, +0x10,0x0c,0x10,0x00,0x00,0x10,0x00,0x0b,0xf8,0x08,0x40,0x40,0x40,0x27,0xfc,0x20, +0x80,0x00,0x80,0x09,0xf8,0x08,0x08,0x08,0x08,0x10,0x08,0x10,0x08,0x20,0x08,0x20, +0x70,0x00,0x00,0x08,0x00,0x2b,0xf8,0x2a,0x48,0x3e,0x48,0x2b,0xf8,0x4a,0x48,0x0a, +0x48,0x3f,0xf8,0x08,0x40,0x0b,0xf8,0x0c,0x48,0x18,0x88,0x61,0x08,0x06,0x30,0x00, +0x00,0x00,0x00,0x3c,0x78,0x24,0x48,0x24,0x48,0x24,0x48,0x24,0x48,0x24,0x48,0x27, +0xc8,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x3f,0xf8,0x00,0x00,0x00,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x1f,0xf0,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x7f, +0xfc,0x03,0x00,0x02,0x80,0x04,0x40,0x18,0x30,0x60,0x0c,0x00,0x00,0x01,0x00,0x02, +0x00,0x1f,0xf0,0x19,0x50,0x15,0x50,0x15,0x90,0x1f,0xf0,0x13,0x90,0x15,0x50,0x19, +0x30,0x7f,0xfc,0x02,0x80,0x0c,0x60,0x30,0x18,0x00,0x00,0x08,0x80,0x08,0x40,0x10, +0x40,0x27,0xfc,0x44,0x40,0x08,0x40,0x08,0x40,0x1b,0xf8,0x28,0x40,0x48,0x40,0x08, +0x40,0x08,0x40,0x0f,0xfc,0x08,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x1f,0xfc,0x10, +0x80,0x10,0x40,0x11,0x20,0x11,0x20,0x15,0x08,0x15,0x04,0x15,0x04,0x29,0x04,0x29, +0x10,0x41,0x10,0x00,0xf0,0x00,0x00,0x10,0x00,0x13,0xf8,0x12,0x48,0x7e,0x48,0x13, +0xf8,0x12,0x48,0x12,0x48,0x1f,0xf8,0x70,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x10, +0x40,0x30,0x40,0x00,0x00,0x00,0x00,0x7f,0xfc,0x44,0x40,0x44,0x40,0x44,0x40,0x7c, +0x40,0x47,0xf8,0x44,0x40,0x44,0x40,0x44,0x40,0x7c,0x40,0x00,0x40,0x07,0xfc,0x00, +0x00,0x00,0x00,0x10,0xa0,0x10,0xa0,0x13,0xf8,0x7c,0xa0,0x17,0xfc,0x10,0x40,0x3b, +0xf8,0x36,0x48,0x37,0xf8,0x52,0x48,0x53,0xf8,0x10,0xa0,0x11,0x10,0x16,0x08,0x00, +0x00,0x00,0x40,0x3f,0x40,0x22,0x40,0x22,0xfc,0x32,0xa4,0x2b,0x28,0x24,0x30,0x26, +0x20,0x2a,0x20,0x29,0x60,0x31,0x50,0x20,0x90,0x3f,0x08,0x02,0x04,0x00,0x00,0x00, +0x00,0x3f,0x70,0x22,0x50,0x22,0x50,0x32,0x54,0x2a,0x94,0x25,0x0c,0x24,0xf8,0x2a, +0x48,0x2a,0x50,0x30,0x30,0x20,0x30,0x3e,0xc8,0x03,0x04,0x00,0x00,0x00,0x00,0x3f, +0xf8,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x1f,0xf0,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x05,0xe0,0x04,0x20,0x19, +0x10,0x61,0xcc,0x02,0x60,0x3f,0x90,0x00,0x00,0x7f,0xf8,0x22,0x88,0x12,0x48,0x06, +0x18,0x1a,0x68,0x63,0x88,0x06,0x18,0x00,0x00,0x10,0x40,0x10,0x80,0x13,0xf8,0x7f, +0x58,0x0a,0xe8,0x0b,0xf8,0x16,0xe8,0x1b,0x58,0x36,0x48,0x57,0xfc,0x10,0x40,0x10, +0xa0,0x13,0x10,0x1c,0x0c,0x00,0x00,0x12,0x10,0x09,0x20,0x7f,0xfc,0x42,0x04,0x4f, +0xe4,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xfc,0x08,0x00,0x0f,0xf8,0x29,0x48,0x24, +0xa8,0x40,0x30,0x00,0x00,0x00,0x20,0x3f,0x40,0x20,0xf8,0x22,0x88,0x22,0xf8,0x32, +0x88,0x2c,0xf8,0x24,0xfc,0x26,0x80,0x2a,0xfc,0x30,0x54,0x21,0xac,0x3f,0x44,0x22, +0x18,0x00,0x00,0x04,0x40,0x04,0x40,0x3f,0xf8,0x04,0x40,0x7f,0xfc,0x01,0x00,0x1f, +0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x04,0x40,0x18,0x30,0x60,0x08,0x00, +0x00,0x00,0x00,0x3f,0xf8,0x28,0x48,0x24,0x48,0x24,0x88,0x3f,0xf8,0x21,0x08,0x29, +0x28,0x29,0x28,0x29,0x28,0x2f,0xe8,0x20,0x08,0x20,0x08,0x20,0x18,0x00,0x00,0x10, +0x40,0x08,0x40,0x08,0x40,0x43,0xf8,0x22,0x48,0x22,0x48,0x02,0x48,0x0a,0x48,0x0b, +0xf8,0x0a,0x40,0x10,0x40,0x10,0x40,0x20,0x40,0x20,0x40,0x00,0x00,0x04,0x40,0x04, +0x40,0x7f,0xfc,0x04,0x40,0x04,0x20,0x34,0x28,0x08,0xa8,0x18,0xb0,0x65,0x20,0x0d, +0x60,0x14,0x50,0x64,0x90,0x05,0x08,0x1a,0x04,0x00,0x00,0x08,0x40,0x0b,0xf8,0x08, +0xa0,0x17,0xfc,0x10,0x00,0x31,0xf0,0x51,0x10,0x11,0xf0,0x11,0x10,0x11,0xf0,0x15, +0x48,0x15,0x24,0x19,0x14,0x10,0xf0,0x00,0x00,0x00,0x00,0x1f,0xf8,0x10,0x08,0x1f, +0xf8,0x10,0x00,0x1f,0xf8,0x11,0x40,0x12,0x30,0x1f,0xc8,0x10,0x80,0x27,0xf0,0x20, +0x80,0x5f,0xfc,0x00,0x00,0x00,0x00,0x10,0x40,0x13,0xf8,0x11,0x10,0x17,0xfc,0x38, +0x00,0x35,0xf0,0x35,0x10,0x51,0xf0,0x11,0x10,0x11,0xf0,0x15,0x48,0x15,0x24,0x19, +0x14,0x10,0xf0,0x00,0x00,0x00,0x20,0x3f,0xfc,0x24,0x90,0x27,0xfc,0x3c,0x00,0x25, +0xf8,0x25,0x08,0x3d,0xf8,0x25,0x08,0x25,0xf8,0x24,0xa8,0x25,0xa4,0x26,0x94,0x4c, +0x70,0x00,0x00,0x10,0x00,0x13,0xf8,0x10,0x90,0x7c,0x60,0x13,0xf8,0x12,0x48,0x3a, +0x48,0x37,0xf8,0x36,0x48,0x52,0x48,0x53,0xf8,0x12,0x48,0x12,0x48,0x12,0x58,0x00, +0x00,0x08,0x40,0x08,0x40,0x28,0x40,0x28,0x40,0x3e,0x40,0x29,0xf8,0x28,0x40,0x48, +0x40,0x0e,0x40,0x78,0x40,0x08,0x40,0x08,0x40,0x0b,0xfc,0x08,0x00,0x00,0x00,0x00, +0x00,0x3f,0xe0,0x00,0x40,0x00,0x80,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10, +0x00,0x20,0x08,0x20,0x08,0x20,0x08,0x1f,0xf8,0x00,0x00,0x00,0x00,0x08,0x80,0x08, +0x80,0x0f,0xf8,0x11,0x40,0x12,0xa0,0x34,0x98,0x5f,0xf4,0x14,0x90,0x17,0xf0,0x14, +0x90,0x17,0xf0,0x10,0x84,0x10,0x84,0x10,0x7c,0x00,0x00,0x10,0x00,0x10,0x78,0x1f, +0x48,0x24,0x48,0x44,0x48,0x7f,0xc8,0x04,0x48,0x27,0x48,0x24,0x48,0x24,0x48,0x27, +0x70,0x3c,0x40,0x60,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x1f,0xf0,0x11,0x10,0x1f, +0xf0,0x11,0x10,0x12,0xd0,0x1c,0x30,0x1f,0xf0,0x01,0x00,0x14,0x90,0x14,0x88,0x24, +0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x10,0x00,0x0b,0xf0,0x0a,0x10,0x43,0xf0,0x22, +0x10,0x23,0xf0,0x00,0x00,0x10,0x00,0x17,0xf8,0x15,0x28,0x25,0x28,0x25,0x28,0x4f, +0xfc,0x40,0x00,0x00,0x00,0x04,0x18,0x1b,0xe8,0x72,0x48,0x11,0x10,0x11,0xf8,0x7c, +0x08,0x11,0xf8,0x18,0x08,0x35,0xf8,0x34,0x40,0x52,0xa8,0x12,0x84,0x14,0x94,0x10, +0x70,0x00,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x08,0x20,0x04,0x40,0x7f,0xfc,0x00, +0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00, +0x00,0x00,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01,0x80,0x01,0x40,0x01,0x20,0x01, +0x10,0x01,0x10,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x04, +0x80,0x04,0x80,0x04,0x88,0x08,0x88,0x08,0x90,0x18,0xa0,0x28,0xc0,0x48,0x80,0x08, +0x80,0x08,0x80,0x08,0x80,0x08,0x84,0x08,0x84,0x08,0x7c,0x00,0x00,0x08,0x00,0x0b, +0xfc,0x0a,0x00,0x12,0x00,0x13,0xf8,0x32,0x88,0x52,0x88,0x12,0x50,0x12,0x50,0x12, +0x20,0x14,0x20,0x14,0x50,0x19,0x88,0x16,0x04,0x00,0x00,0x08,0x00,0x0f,0xfc,0x08, +0x08,0x10,0x08,0x13,0xc8,0x32,0x48,0x52,0x48,0x12,0x48,0x12,0x48,0x13,0xc8,0x10, +0x08,0x10,0x08,0x10,0x08,0x10,0x18,0x00,0x00,0x0a,0x00,0x0a,0x00,0x0a,0x38,0x1f, +0xa8,0x12,0xa8,0x32,0xa8,0x52,0xa8,0x12,0xa8,0x12,0xa8,0x12,0xa8,0x14,0xa8,0x14, +0xa8,0x19,0xb8,0x10,0x00,0x00,0x00,0x08,0x00,0x0f,0xfc,0x08,0xa0,0x10,0xa0,0x10, +0xa0,0x33,0xf8,0x52,0xa8,0x12,0xa8,0x12,0xa8,0x12,0xa8,0x12,0xa8,0x12,0xa8,0x13, +0xf8,0x10,0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x13,0xf8,0x10,0x40,0x30, +0x40,0x57,0xfc,0x10,0x40,0x10,0x40,0x13,0xf8,0x10,0x40,0x10,0x40,0x17,0xfc,0x10, +0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x7c,0x7f,0x44,0x09,0x44,0x09, +0x44,0x09,0x44,0x09,0x44,0x09,0x44,0x11,0x44,0x11,0x7c,0x21,0x00,0x46,0x00,0x00, +0x00,0x00,0x00,0x7f,0xfc,0x00,0x10,0x00,0x10,0x1f,0x10,0x11,0x10,0x11,0x10,0x11, +0x10,0x11,0x10,0x1f,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x30,0x00,0x00,0x01, +0x00,0x3f,0xf8,0x01,0x00,0x1f,0xf0,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x04, +0x40,0x7f,0xfc,0x04,0x00,0x3f,0x78,0x09,0x48,0x33,0x78,0x00,0x00,0x00,0x00,0x7f, +0xfc,0x01,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x3c,0x40,0x03,0x80,0x06,0xe0,0x78,0x1c,0x00,0x00,0x10,0x40,0x10,0x40,0x13, +0xfc,0x12,0x04,0x7f,0xf4,0x24,0x40,0x24,0xe4,0x27,0x68,0x78,0xb0,0x4b,0x70,0x0c, +0xa8,0x17,0x24,0x60,0x20,0x00,0xc0,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x40, +0x04,0x5f,0xf4,0x02,0x00,0x0d,0x48,0x33,0xc8,0x0d,0xb0,0x32,0xa0,0x04,0x90,0x18, +0x88,0x60,0x84,0x03,0x00,0x00,0x00,0x01,0x00,0x7f,0xfc,0x40,0x04,0x5f,0xf4,0x04, +0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x7f,0xfc,0x0f,0xe0,0x72,0x5c,0x04, +0x40,0x19,0x80,0x00,0x00,0x02,0x10,0x0c,0x90,0x38,0x50,0x08,0x50,0x09,0x10,0x7e, +0x90,0x08,0x90,0x1c,0x1c,0x1a,0x70,0x2b,0x90,0x48,0x10,0x08,0x10,0x08,0x10,0x08, +0x10,0x00,0x00,0x00,0x00,0x07,0xb8,0x74,0x88,0x54,0x88,0x57,0xb8,0x54,0x00,0x74, +0x00,0x57,0x78,0x54,0x48,0x54,0x28,0x57,0x30,0x74,0x10,0x04,0x28,0x04,0xc4,0x00, +0x00,0x00,0x00,0x1f,0xf0,0x11,0x10,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x01, +0x00,0x7f,0xfc,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x00,0x00,0x10, +0x00,0x10,0xf8,0x7e,0x88,0x12,0x88,0x12,0x88,0x22,0x88,0x4d,0xf8,0x01,0x00,0x7f, +0xfc,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x00,0x00,0x00,0x40,0x7f, +0x40,0x02,0x40,0x3a,0x40,0x2a,0xfc,0x3a,0xa8,0x03,0x30,0x7f,0x20,0x02,0x20,0x3a, +0x60,0x2a,0x50,0x3a,0x90,0x03,0x08,0x06,0x04,0x00,0x00,0x10,0x00,0x0f,0xfc,0x08, +0x08,0x40,0x08,0x23,0xc8,0x22,0x48,0x02,0x48,0x02,0x48,0x0a,0x48,0x0b,0xc8,0x10, +0x08,0x10,0x08,0x20,0x08,0x20,0x18,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x08,0x11, +0x08,0x11,0x10,0x11,0x20,0x21,0x80,0x22,0x80,0x02,0x40,0x04,0x40,0x04,0x20,0x08, +0x10,0x10,0x08,0x60,0x04,0x00,0x00,0x00,0x00,0x03,0xfc,0x7c,0x08,0x10,0x08,0x11, +0xe8,0x11,0x28,0x7d,0x28,0x11,0x28,0x11,0x28,0x11,0xe8,0x1c,0x08,0x60,0x08,0x00, +0x08,0x00,0x18,0x00,0x00,0x10,0x00,0x11,0xf0,0x11,0x10,0x7d,0x70,0x09,0x50,0x09, +0x50,0x13,0xf8,0x1a,0x08,0x36,0xe8,0x56,0xa8,0x12,0xa8,0x12,0xe8,0x12,0x08,0x12, +0x18,0x00,0x00,0x00,0x30,0x01,0xc0,0x1f,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01, +0x00,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x01,0x00,0x01,0x00,0x00, +0x00,0x04,0x40,0x18,0x40,0x73,0xfc,0x12,0x04,0x17,0xf8,0x7c,0x40,0x10,0xe4,0x3b, +0x68,0x34,0xb0,0x57,0x70,0x50,0xa8,0x13,0x24,0x10,0x20,0x10,0xc0,0x00,0x00,0x10, +0x40,0x1f,0xfc,0x28,0xa0,0x45,0x10,0x3f,0xf8,0x21,0x08,0x2f,0xe8,0x21,0x08,0x27, +0xc8,0x24,0x48,0x27,0xc8,0x20,0x08,0x3f,0xf8,0x00,0x00,0x00,0x00,0x04,0x40,0x04, +0x40,0x7f,0xfc,0x04,0x40,0x04,0x40,0x04,0x80,0x08,0x88,0x08,0x90,0x18,0xe0,0x28, +0x80,0x48,0x80,0x08,0x84,0x08,0x84,0x08,0x7c,0x00,0x00,0x04,0x40,0x04,0x40,0x7f, +0xfc,0x04,0x40,0x00,0x00,0x7f,0xfc,0x00,0x10,0x1f,0x10,0x11,0x10,0x11,0x10,0x1f, +0x10,0x00,0x10,0x00,0x10,0x00,0x30,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04, +0x40,0x14,0x40,0x10,0x00,0x7e,0xf8,0x12,0x88,0x12,0x88,0x12,0x88,0x12,0x88,0x22, +0x88,0x22,0xf8,0x4c,0x00,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x08, +0x00,0x0b,0xfc,0x10,0x10,0x13,0xd0,0x32,0x50,0x52,0x50,0x13,0xd0,0x10,0x10,0x10, +0x10,0x10,0x30,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x1f,0xf0,0x09, +0x20,0x7f,0xfc,0x09,0x20,0x1f,0xf8,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01, +0x00,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x11, +0x10,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x03,0x80,0x0d,0x60,0x71,0x1c,0x01,0x00,0x00, +0x00,0x10,0x00,0x11,0xd8,0x11,0x48,0x7d,0x48,0x55,0xd8,0x55,0x00,0x55,0x00,0x7d, +0xf8,0x11,0x28,0x19,0x28,0x15,0xd0,0x1d,0x10,0x65,0x28,0x01,0x44,0x00,0x00,0x00, +0x00,0x3d,0xf8,0x01,0x48,0x7f,0x48,0x01,0xf8,0x3d,0x48,0x01,0xf8,0x3c,0x40,0x03, +0xfc,0x3c,0xe0,0x25,0x50,0x26,0x48,0x3c,0x44,0x00,0x40,0x00,0x00,0x01,0x10,0x01, +0x10,0x7f,0xfc,0x49,0x10,0x4b,0xf8,0x49,0x50,0x4f,0xfc,0x49,0x50,0x4b,0xf8,0x78, +0x40,0x0f,0xfc,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x04,0x80,0x04,0x8c,0x18, +0xf0,0x68,0x84,0x08,0x7c,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x06,0x60,0x38,0x18,0x00,0x00,0x02,0x00,0x22,0x00,0x12,0x38,0x1f, +0xa8,0x02,0xa8,0x02,0xa8,0x72,0xa8,0x12,0xa8,0x14,0xa8,0x14,0xa8,0x18,0xb8,0x1b, +0x28,0x26,0x00,0x41,0xfc,0x00,0x00,0x00,0x00,0x23,0xf0,0x12,0x10,0x12,0xf0,0x02, +0x90,0x07,0xf8,0x74,0x08,0x15,0xe8,0x15,0x28,0x15,0x28,0x15,0xe8,0x1c,0x18,0x26, +0x00,0x41,0xfc,0x00,0x00,0x00,0x00,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x41,0x04,0x5d, +0x74,0x01,0x00,0x3e,0xf8,0x22,0x08,0x3e,0xf8,0x3d,0xf8,0x20,0x50,0x3c,0x70,0x21, +0x8c,0x00,0x00,0x08,0x20,0x08,0x20,0x08,0x20,0x3f,0xfc,0x2a,0x88,0x2a,0x88,0x2a, +0x88,0x3e,0x50,0x08,0x50,0x0c,0x20,0x0a,0x20,0x0f,0x50,0x70,0x88,0x01,0x04,0x00, +0x00,0x08,0x60,0x09,0xa8,0x0f,0x24,0x11,0x24,0x11,0x20,0x3f,0xfc,0x51,0x20,0x11, +0xa8,0x11,0x28,0x13,0x10,0x1d,0x10,0x11,0x34,0x13,0x4c,0x11,0x04,0x00,0x00,0x00, +0x60,0x10,0xa8,0x13,0xa4,0x10,0xa4,0x54,0xa0,0x57,0xfc,0x54,0xa4,0x54,0xa8,0x54, +0xd8,0x55,0x90,0x7e,0xb0,0x00,0xcc,0x00,0x8c,0x01,0x84,0x00,0x00,0x02,0x80,0x04, +0x90,0x38,0x88,0x08,0x88,0x08,0x80,0x7f,0xfc,0x08,0x88,0x08,0x88,0x0e,0x50,0x78, +0x50,0x08,0x24,0x08,0xd4,0x0b,0x0c,0x18,0x04,0x00,0x00,0x00,0x00,0x0f,0xf0,0x08, +0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x7f,0xfc,0x00,0xc0,0x01,0x40,0x02,0x40,0x04, +0x40,0x18,0x40,0x60,0x40,0x00,0xc0,0x00,0x00,0x00,0x00,0x7f,0xfc,0x01,0x00,0x01, +0x00,0x2f,0xe8,0x29,0x28,0x29,0x28,0x2f,0xe8,0x29,0x28,0x29,0x28,0x2f,0xe8,0x20, +0x08,0x3f,0xf8,0x00,0x00,0x00,0x00,0x00,0x20,0x3f,0xa0,0x24,0x20,0x24,0x20,0x3f, +0x20,0x21,0x20,0x21,0x20,0x21,0x60,0x3f,0x50,0x24,0x50,0x24,0x90,0x24,0x88,0x3f, +0x08,0x02,0x04,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x1f,0xf0,0x08, +0x40,0x08,0x40,0x7f,0xfc,0x00,0xc0,0x01,0x40,0x06,0x40,0x18,0x40,0x60,0x40,0x00, +0xc0,0x00,0x00,0x10,0x60,0x10,0xb0,0x13,0xa8,0x7c,0xa8,0x54,0xa0,0x57,0xfc,0x54, +0xa0,0x7c,0xa8,0x50,0xe8,0x1b,0xb0,0x14,0x90,0x1e,0xb4,0x60,0xcc,0x01,0x84,0x00, +0x00,0x08,0x00,0x08,0xf8,0x7e,0x88,0x12,0x88,0x16,0xf8,0x2f,0xe0,0x48,0x20,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x06,0x60,0x38,0x18,0x00,0x00,0x00, +0x48,0x3e,0x48,0x24,0x90,0x24,0xfc,0x25,0x90,0x7e,0x90,0x0c,0xfc,0x0c,0x90,0x14, +0x90,0x14,0xfc,0x24,0x90,0x44,0x90,0x04,0xfc,0x0c,0x00,0x00,0x00,0x08,0x20,0x08, +0x68,0x17,0xa4,0x1a,0xa4,0x28,0xa0,0x7f,0xfc,0x24,0xa0,0x3c,0xa8,0x24,0xe8,0x3f, +0x90,0x28,0x94,0x24,0xac,0x3e,0xcc,0x61,0x84,0x00,0x00,0x08,0x00,0x7e,0xf8,0x12, +0x88,0x12,0x88,0x26,0xf8,0x40,0x00,0x1f,0xf0,0x11,0x00,0x1f,0xe0,0x11,0x00,0x1f, +0xf8,0x2a,0x48,0x25,0x28,0x40,0x30,0x00,0x00,0x01,0x00,0x01,0x00,0x02,0x80,0x04, +0x40,0x18,0x30,0x64,0x4c,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x08,0x40,0x08, +0x40,0x10,0x40,0x20,0x40,0x00,0x00,0x01,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x18, +0x30,0x67,0xcc,0x00,0x00,0x00,0x00,0x3f,0xf8,0x02,0x40,0x02,0x20,0x04,0xd0,0x3f, +0x08,0x00,0x08,0x00,0x00,0x10,0x00,0x1f,0xf8,0x24,0x48,0x48,0x88,0x3f,0x30,0x2a, +0xa0,0x2a,0xf8,0x3f,0x20,0x2a,0x20,0x3f,0xfc,0x22,0x20,0x22,0x20,0x22,0x20,0x46, +0x20,0x00,0x00,0x00,0x00,0x3f,0xf8,0x20,0x08,0x20,0x08,0x27,0xc8,0x24,0x48,0x24, +0x48,0x24,0x48,0x24,0x48,0x27,0xc8,0x20,0x08,0x20,0x08,0x3f,0xf8,0x00,0x00,0x00, +0x00,0x00,0x40,0x10,0x80,0x13,0xf8,0x12,0x48,0x7f,0xf8,0x12,0x48,0x12,0x48,0x13, +0xf8,0x10,0xd0,0x1d,0x50,0x61,0x68,0x02,0x7c,0x04,0x44,0x08,0x3c,0x00,0x00,0x00, +0x40,0x17,0xfc,0x10,0x40,0x13,0xf8,0x7e,0xa8,0x12,0xa8,0x13,0xf8,0x10,0x40,0x17, +0xfc,0x18,0xc8,0x63,0x50,0x0d,0x20,0x01,0xd0,0x06,0x0c,0x00,0x00,0x00,0x00,0x03, +0xf8,0x7a,0x08,0x0a,0xe8,0x12,0xa8,0x12,0xa8,0x3a,0xa8,0x0a,0xa8,0x4a,0xe8,0x2a, +0x08,0x13,0xf8,0x18,0x00,0x26,0x00,0x41,0xfc,0x00,0x00,0x10,0x40,0x10,0x40,0x10, +0x40,0x13,0xf8,0x38,0x48,0x34,0x48,0x34,0x48,0x53,0xfc,0x10,0x60,0x10,0xa0,0x10, +0x90,0x11,0x10,0x12,0x08,0x14,0x04,0x00,0x00,0x10,0x00,0x17,0xf8,0x11,0x10,0x10, +0xa0,0x38,0xc0,0x37,0x30,0x34,0x4c,0x50,0x40,0x13,0xf8,0x10,0x40,0x10,0x40,0x10, +0x40,0x17,0xfc,0x10,0x00,0x00,0x00,0x11,0x00,0x11,0x00,0x11,0xfc,0x1a,0x00,0x35, +0xf0,0x35,0x50,0x31,0x50,0x57,0xfc,0x12,0x50,0x12,0x50,0x17,0xfc,0x14,0x10,0x10, +0x10,0x10,0x60,0x00,0x00,0x10,0x00,0x13,0xfc,0x12,0x00,0x12,0x20,0x3a,0x28,0x36, +0xa8,0x36,0xb0,0x52,0xa0,0x13,0x20,0x12,0x20,0x12,0x50,0x14,0x90,0x1b,0x08,0x1c, +0x04,0x00,0x00,0x10,0x40,0x17,0xfc,0x10,0x40,0x1b,0xf8,0x36,0xa8,0x36,0xa8,0x33, +0xf8,0x50,0x40,0x17,0xfc,0x10,0xc8,0x13,0x50,0x1d,0x20,0x11,0xd0,0x16,0x0c,0x00, +0x00,0x00,0x90,0x00,0x88,0x00,0x88,0x7f,0xfc,0x00,0x80,0x12,0x88,0x12,0x88,0x12, +0x50,0x7f,0xd0,0x12,0x20,0x12,0x24,0x22,0x54,0x22,0x8c,0x41,0x04,0x00,0x00,0x10, +0x00,0x13,0xf8,0x12,0x08,0x7e,0x08,0x13,0xf8,0x10,0x00,0x10,0x00,0x1f,0xf8,0x70, +0x88,0x10,0x88,0x10,0x88,0x11,0x08,0x12,0x08,0x34,0x30,0x00,0x00,0x00,0x80,0x7c, +0x80,0x04,0x80,0x04,0xfc,0x05,0x10,0x7d,0x90,0x42,0x90,0x40,0x50,0x40,0x60,0x44, +0x20,0x44,0x60,0x3c,0x90,0x03,0x08,0x0c,0x04,0x00,0x00,0x08,0x90,0x10,0x50,0x3e, +0x50,0x2b,0x10,0x3e,0x90,0x2a,0x90,0x3e,0x1c,0x0d,0xf0,0x0d,0x10,0x0d,0x10,0x16, +0x90,0x17,0xd4,0x24,0x04,0x43,0xfc,0x00,0x00,0x01,0x00,0x01,0x00,0x79,0xfc,0x4a, +0x00,0x4d,0xf0,0x49,0x50,0x79,0x50,0x4f,0xfc,0x4a,0x50,0x4a,0x50,0x7b,0xfc,0x02, +0x10,0x00,0x10,0x00,0x60,0x00,0x00,0x10,0x20,0x10,0x28,0x10,0x24,0x7f,0xfc,0x10, +0x20,0x12,0xa8,0x3a,0xa8,0x36,0xa8,0x37,0xf0,0x52,0x90,0x52,0x94,0x14,0xac,0x18, +0x4c,0x10,0x84,0x00,0x00,0x11,0x00,0x09,0x00,0x0b,0xfc,0x42,0x00,0x25,0xf0,0x21, +0x50,0x01,0x50,0x1f,0xfc,0x12,0x50,0x12,0x50,0x27,0xfc,0x24,0x10,0x40,0x10,0x40, +0x60,0x00,0x00,0x00,0x00,0x1f,0xfc,0x10,0x00,0x10,0x80,0x10,0x88,0x12,0x88,0x12, +0x90,0x14,0xa0,0x10,0x80,0x11,0x40,0x21,0x40,0x22,0x20,0x4c,0x10,0x30,0x0c,0x00, +0x00,0x00,0x00,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x01,0x00,0x02, +0x80,0x0c,0x60,0x74,0x5c,0x04,0x40,0x04,0x40,0x08,0x40,0x30,0x40,0x00,0x00,0x20, +0x80,0x20,0x98,0x3e,0xe0,0x20,0x84,0x20,0x84,0x3d,0x7c,0xe2,0x00,0x1f,0xe0,0x10, +0x20,0x10,0x20,0x1f,0xe0,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00,0x08,0x20,0x08, +0x20,0x0a,0x50,0x72,0x50,0x14,0x88,0x0d,0x74,0x12,0x00,0x7e,0x00,0x09,0xfc,0x2c, +0x40,0x2a,0x50,0x2a,0x98,0x49,0xe4,0x08,0x04,0x00,0x00,0x04,0x40,0x04,0x40,0x7f, +0xfc,0x04,0x40,0x05,0x40,0x02,0x80,0x04,0x40,0x1c,0x70,0x64,0x4c,0x04,0x40,0x08, +0x40,0x08,0x40,0x10,0x40,0x20,0x40,0x00,0x00,0x10,0x00,0x1d,0xf8,0x28,0x48,0x7e, +0x98,0x2b,0xa0,0x3e,0xf8,0x2b,0x20,0x3f,0xfc,0x23,0x20,0x5f,0xe0,0x09,0x20,0x0f, +0xe0,0x01,0x10,0x3f,0xe8,0x00,0x00,0x00,0x00,0x7c,0xf8,0x44,0x88,0x7c,0xf8,0x44, +0x88,0x7c,0xf8,0x40,0x08,0x5f,0xe8,0x44,0x88,0x7f,0xf8,0x44,0x88,0x48,0x88,0x50, +0x88,0x40,0x18,0x00,0x00,0x01,0x20,0x3d,0x24,0x25,0xf8,0x29,0x20,0x31,0x24,0x29, +0xbc,0x26,0x40,0x25,0xf8,0x25,0x08,0x25,0xf8,0x39,0x08,0x21,0x08,0x21,0xf8,0x20, +0x00,0x00,0x00,0x00,0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x1f,0xf0,0x10,0x10,0x10, +0x10,0x1f,0xf0,0x10,0x10,0x10,0x10,0x1f,0xf0,0x04,0x40,0x18,0x30,0x60,0x08,0x00, +0x00,0x08,0x00,0x2a,0xf0,0x2a,0x90,0x3e,0x90,0x00,0x90,0x7e,0x90,0x00,0x90,0x3e, +0x90,0x22,0x90,0x3e,0x90,0x24,0x90,0x14,0x94,0x1f,0x14,0x62,0x0c,0x00,0x00,0x08, +0x40,0x08,0x40,0x7f,0x40,0x10,0x40,0x15,0xf8,0x64,0x48,0x18,0x48,0x0a,0x48,0x12, +0x48,0x24,0x48,0x0c,0x88,0x12,0x88,0x21,0x08,0x42,0x30,0x00,0x00,0x00,0x40,0x08, +0x40,0x0f,0x40,0x09,0x40,0x09,0x40,0x11,0x40,0x19,0x60,0x26,0x58,0x42,0x44,0x04, +0x40,0x04,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0x00,0x00,0x00,0x40,0x00,0x40,0x7f, +0xfc,0x48,0x40,0x4a,0x48,0x49,0x90,0x48,0xa0,0x48,0x48,0x48,0x90,0x4b,0x20,0x78, +0x60,0x00,0x90,0x03,0x08,0x0c,0x04,0x00,0x00,0x01,0x00,0x7f,0xfc,0x41,0x04,0x5f, +0xf4,0x01,0x00,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x00,0x00,0x0f,0xe0,0x08,0x20,0x08, +0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x01,0x00,0x11,0x10,0x1f,0xf0,0x00,0x00,0x1f, +0xfc,0x10,0x80,0x17,0xf0,0x10,0x80,0x1f,0xf8,0x10,0x80,0x27,0xf0,0x20,0x80,0x5f, +0xfc,0x00,0x00,0x00,0x00,0x10,0x00,0x17,0xf8,0x15,0x50,0x15,0x50,0x3f,0x50,0x3d, +0x50,0x35,0xfc,0x57,0x10,0x15,0x30,0x14,0xb0,0x15,0xd0,0x16,0x54,0x1c,0x94,0x11, +0x0c,0x00,0x00,0x10,0x00,0x17,0xfc,0x15,0x10,0x7d,0x50,0x17,0x50,0x15,0x50,0x3d, +0xfc,0x37,0x30,0x36,0x30,0x55,0x30,0x55,0xd0,0x16,0xd4,0x1c,0x94,0x11,0x0c,0x00, +0x00,0x10,0x00,0x0b,0xfc,0x0a,0x20,0x42,0x20,0x22,0xf8,0x22,0x20,0x03,0xfc,0x02, +0x20,0x12,0x20,0x12,0xf8,0x24,0x20,0x24,0x20,0x4b,0xfc,0x40,0x00,0x00,0x00,0x00, +0x00,0x7d,0xf8,0x11,0x08,0x11,0xf8,0x11,0x08,0x3d,0xf8,0x24,0x00,0x65,0xf8,0x24, +0x10,0x27,0xfc,0x25,0x10,0x3c,0x90,0x00,0x90,0x00,0x30,0x00,0x00,0x04,0x40,0x7f, +0xfc,0x05,0x40,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x02,0x40,0x3f,0xf0,0x00,0x08,0x1f, +0xf0,0x12,0x90,0x12,0x90,0x7f,0xfc,0x00,0x00,0x00,0x00,0x11,0x00,0x11,0x3c,0x27, +0xc0,0x49,0x00,0x09,0x00,0x17,0xfc,0x11,0x08,0x31,0x08,0x57,0xc8,0x11,0x08,0x11, +0x08,0x11,0xc8,0x16,0x08,0x10,0x18,0x00,0x00,0x00,0x40,0x3c,0x40,0x03,0xfc,0x7c, +0x40,0x00,0x50,0x3d,0x90,0x00,0xa0,0x3c,0x68,0x00,0x48,0x3c,0x90,0x25,0x30,0x24, +0x48,0x3d,0x84,0x02,0x04,0x00,0x00,0x08,0x20,0x08,0xa8,0x14,0xa8,0x12,0xf8,0x22, +0x00,0x5d,0xfc,0x08,0x00,0x7e,0xf8,0x08,0x88,0x2a,0xf8,0x1c,0x88,0x18,0x50,0x0f, +0xfc,0x70,0x00,0x00,0x00,0x00,0x20,0x3e,0x20,0x23,0xfc,0x2e,0x40,0x2a,0x50,0x7f, +0x90,0x42,0xa0,0x7e,0x68,0x22,0x48,0x3e,0x90,0x22,0x30,0x3e,0x48,0x22,0x84,0x27, +0x04,0x00,0x00,0x10,0x00,0x0b,0xf8,0x0a,0x48,0x42,0x48,0x23,0xf8,0x22,0x48,0x02, +0x48,0x0b,0xf8,0x08,0x40,0x0b,0xf8,0x10,0x40,0x10,0x40,0x27,0xfc,0x20,0x00,0x00, +0x00,0x08,0x70,0x7f,0x54,0x08,0x9c,0x7f,0xf0,0x2a,0x50,0x3e,0x70,0x27,0xcc,0x41, +0x00,0x7f,0xfc,0x05,0x40,0x1f,0xf0,0x67,0xcc,0x04,0x40,0x07,0xc0,0x00,0x00,0x08, +0x20,0x08,0x20,0x08,0x20,0x3e,0xf8,0x2a,0x20,0x2a,0x20,0x2b,0xfc,0x3e,0x20,0x08, +0x20,0x0c,0xf8,0x0a,0x20,0x0e,0x20,0x73,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x17, +0xfc,0x10,0x00,0x11,0xf0,0x7d,0x10,0x11,0x10,0x11,0xf0,0x11,0x10,0x15,0x10,0x19, +0x10,0x61,0xf0,0x00,0x00,0x0f,0xfc,0x00,0x00,0x00,0x00,0x08,0x20,0x08,0x20,0x08, +0x20,0x7f,0xfc,0x08,0x20,0x18,0x20,0x1d,0xfc,0x1b,0x24,0x2b,0x24,0x29,0x24,0x49, +0x24,0x09,0x2c,0x08,0x20,0x08,0x20,0x00,0x00,0x08,0x00,0x08,0xfc,0x08,0x80,0x3e, +0x80,0x2a,0xfc,0x2a,0xa0,0x2a,0xa0,0x3e,0xbc,0x2a,0xa4,0x0c,0xa4,0x0b,0x44,0x0f, +0x44,0x72,0x84,0x01,0x18,0x00,0x00,0x08,0x80,0x08,0x80,0x14,0x80,0x12,0xf8,0x23, +0x08,0x5e,0x48,0x08,0x48,0x7e,0xc8,0x08,0xa8,0x2b,0xd8,0x1c,0x08,0x18,0x08,0x0e, +0x08,0x70,0x30,0x00,0x00,0x08,0x08,0x3f,0x48,0x09,0x48,0x7f,0xc8,0x09,0x48,0x3f, +0x48,0x08,0x48,0x7f,0xc8,0x29,0x48,0x3f,0x48,0x29,0x48,0x3f,0x08,0x07,0x08,0x78, +0x18,0x00,0x00,0x02,0x10,0x02,0x10,0x7f,0xfc,0x52,0x10,0x52,0x10,0x5f,0xfc,0x55, +0x28,0x55,0x68,0x5d,0xec,0x5d,0xac,0x75,0x6c,0x09,0x48,0x09,0x48,0x13,0x98,0x00, +0x00,0x02,0x00,0x02,0x00,0x07,0xf0,0x0c,0x20,0x12,0x40,0x21,0x80,0x03,0x40,0x0c, +0x30,0x7f,0xec,0x08,0x20,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x00, +0x80,0x1f,0xfc,0x11,0x00,0x1f,0xfc,0x10,0x24,0x17,0xa8,0x14,0xb0,0x17,0xa8,0x10, +0x24,0x17,0xa4,0x21,0xa4,0x2f,0x38,0x41,0x20,0x03,0x20,0x00,0x00,0x10,0x20,0x10, +0x20,0x11,0xfc,0x7d,0x00,0x11,0x20,0x11,0x20,0x11,0x20,0x1d,0x20,0x71,0x20,0x11, +0x50,0x12,0x48,0x12,0x7c,0x17,0x84,0x38,0x04,0x00,0x00,0x12,0x88,0x11,0x50,0x17, +0xfc,0x7c,0x04,0x15,0xf4,0x11,0x10,0x11,0xf0,0x1d,0x10,0x71,0xf0,0x11,0x10,0x11, +0xf0,0x10,0xa4,0x11,0x24,0x36,0x1c,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x78,0x7e, +0x88,0x09,0x50,0x18,0x20,0x1c,0x50,0x1a,0x88,0x2b,0xfc,0x28,0x88,0x48,0x88,0x08, +0x88,0x08,0xf8,0x08,0x00,0x00,0x00,0x08,0x20,0x08,0x20,0x09,0xfc,0x7e,0x20,0x09, +0x48,0x1c,0x88,0x1a,0x50,0x1a,0x20,0x28,0x48,0x29,0x90,0x48,0x30,0x08,0x48,0x09, +0x84,0x0e,0x04,0x00,0x00,0x08,0x00,0x08,0x70,0x7f,0x50,0x08,0x54,0x3e,0x54,0x00, +0x8c,0x3f,0x00,0x22,0xf8,0x5c,0x88,0x14,0x50,0x14,0x50,0x16,0x20,0x24,0xd0,0x43, +0x0c,0x00,0x00,0x09,0x10,0x4f,0xfc,0x31,0x30,0x11,0xfc,0x33,0x20,0x4d,0xf8,0x09, +0x20,0x19,0xfc,0x28,0x00,0x4b,0xf8,0x08,0x90,0x08,0x60,0x30,0xd0,0x17,0x0c,0x00, +0x00,0x00,0x40,0x7e,0x40,0x13,0xfc,0x12,0x44,0x12,0x90,0x3c,0xa0,0x25,0xfc,0x67, +0x20,0x25,0xf8,0x25,0x20,0x25,0xf8,0x3d,0x20,0x01,0xfc,0x00,0x00,0x00,0x00,0x04, +0x90,0x0b,0xfc,0x70,0xb0,0x11,0xfc,0x13,0x20,0x7d,0xf8,0x11,0x20,0x19,0xfc,0x34, +0x00,0x37,0xf8,0x50,0x90,0x10,0x60,0x10,0xf0,0x17,0x0c,0x00,0x00,0x12,0x10,0x09, +0x20,0x7f,0xfc,0x40,0x04,0x4f,0xe4,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x02,0x84,0x0c,0x84,0x70,0x7c,0x00,0x00,0x02,0x00,0x07,0xe0,0x18, +0x80,0x61,0x00,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x11,0x10,0x1f,0xf0,0x10, +0x10,0x10,0x10,0x20,0x10,0x40,0x30,0x00,0x00,0x08,0x20,0x08,0x20,0x3e,0xf8,0x08, +0x20,0x08,0x20,0x7f,0xfc,0x14,0x50,0x36,0xd0,0x35,0xd8,0x55,0x54,0x16,0x54,0x24, +0x90,0x24,0x90,0x4d,0x30,0x00,0x00,0x08,0x20,0x08,0x20,0x7f,0x20,0x09,0xfc,0x3e, +0x50,0x2a,0x88,0x3f,0x94,0x2a,0x90,0x3e,0x50,0x08,0x60,0x7f,0x20,0x08,0x50,0x08, +0x88,0x09,0x04,0x00,0x00,0x04,0x00,0x7f,0xf8,0x00,0x48,0x1f,0x50,0x11,0x50,0x1f, +0x60,0x00,0x50,0x3f,0x48,0x02,0x44,0x07,0x44,0x7c,0x64,0x04,0x58,0x04,0x40,0x0c, +0x40,0x00,0x00,0x00,0x00,0x3e,0xf8,0x22,0x88,0x3e,0xf8,0x22,0x88,0x3e,0xf8,0x23, +0xc8,0x2e,0x48,0x21,0x88,0x22,0xc8,0x3f,0xf8,0x24,0x48,0x27,0xc8,0x24,0x58,0x00, +0x00,0x00,0x00,0x3f,0xf8,0x24,0x00,0x29,0xf0,0x29,0x10,0x31,0xf0,0x28,0x00,0x27, +0xf8,0x26,0xa8,0x27,0x38,0x3a,0xf8,0x22,0x48,0x22,0x48,0x22,0x58,0x00,0x00,0x04, +0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x07,0xc0,0x01,0x00,0x1f,0xf0,0x11,0x10,0x1f, +0xf0,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x12,0x10,0x09, +0x10,0x09,0x20,0x7f,0xfc,0x40,0x04,0x4f,0xe4,0x00,0x40,0x00,0x80,0x01,0x00,0x7f, +0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x20,0x00,0xc0,0x0f, +0x00,0x08,0x00,0x0f,0xf8,0x08,0x40,0x08,0x40,0x7f,0xfc,0x01,0x00,0x11,0x10,0x11, +0x10,0x11,0x10,0x1f,0xf0,0x10,0x00,0x00,0x00,0x01,0x00,0x22,0x08,0x17,0xc8,0x14, +0x50,0x07,0xe0,0x1c,0x58,0x67,0xc4,0x01,0x00,0x7f,0xfc,0x03,0x80,0x05,0x40,0x19, +0x30,0x61,0x0c,0x01,0x00,0x00,0x00,0x08,0x00,0x09,0xfc,0x7f,0x20,0x49,0x40,0x4e, +0xf8,0x12,0x88,0x34,0xf8,0x0c,0x88,0x12,0xf8,0x3f,0x88,0x52,0xf8,0x12,0x50,0x1e, +0x88,0x01,0x04,0x00,0x00,0x00,0x00,0x77,0xfc,0x55,0x20,0x55,0x40,0x77,0xf8,0x00, +0x88,0x3e,0xf8,0x00,0x88,0x7f,0xf8,0x10,0x88,0x1e,0xf8,0x22,0x50,0x02,0x88,0x0f, +0x04,0x00,0x00,0x11,0x10,0x11,0x10,0x17,0xd0,0x79,0x10,0x11,0x10,0x17,0xf8,0x19, +0x14,0x11,0x14,0x37,0xf0,0x51,0x10,0x11,0x10,0x11,0xd0,0x1e,0x10,0x30,0x10,0x00, +0x00,0x10,0x40,0x10,0x40,0x1f,0xfc,0x18,0xa0,0x25,0x10,0x45,0x10,0x01,0x00,0x3f, +0xf8,0x00,0x20,0x08,0x20,0x04,0x40,0x04,0x80,0x7f,0xfc,0x00,0x00,0x00,0x00,0x10, +0x00,0x13,0xf8,0x12,0xa8,0x7f,0xe8,0x12,0x50,0x13,0xd0,0x3a,0xa8,0x37,0xc4,0x34, +0x40,0x53,0xf8,0x50,0x40,0x10,0x40,0x17,0xfc,0x10,0x00,0x00,0x00,0x10,0x00,0x17, +0xfc,0x10,0x00,0x7d,0xf0,0x11,0x50,0x19,0xf0,0x35,0x50,0x37,0xf8,0x30,0x00,0x51, +0xf0,0x51,0x50,0x11,0xf0,0x11,0x50,0x17,0xfc,0x00,0x00,0x08,0x00,0x09,0xf8,0x09, +0x08,0x7f,0xf8,0x09,0x08,0x19,0xf0,0x1d,0x40,0x1b,0xf8,0x2b,0x40,0x29,0xfc,0x49, +0x40,0x0a,0x44,0x0a,0x44,0x0c,0x3c,0x00,0x00,0x08,0x30,0x09,0xd0,0x1e,0x90,0x24, +0x94,0x7e,0xb4,0x2b,0xf4,0x3e,0xb8,0x2a,0xd0,0x3f,0xf0,0x05,0xa8,0x32,0xa8,0x2a, +0xc8,0x28,0xc4,0x40,0x84,0x00,0x00,0x10,0x80,0x0b,0x38,0x0a,0x08,0x43,0xb8,0x22, +0x08,0x23,0xf8,0x01,0x00,0x13,0xfc,0x16,0x24,0x2a,0x94,0x25,0x54,0x45,0x44,0x48, +0x04,0x40,0x18,0x00,0x00,0x08,0x08,0x7f,0x48,0x49,0x48,0x7f,0x48,0x08,0x48,0x3e, +0x48,0x08,0x48,0x7f,0x48,0x00,0x48,0x3e,0x48,0x22,0x48,0x22,0x08,0x22,0x08,0x3e, +0x18,0x00,0x00,0x00,0x00,0x03,0xf0,0x7a,0x10,0x4b,0xf0,0x4a,0x10,0x4b,0xf0,0x48, +0x80,0x49,0xf8,0x4e,0x68,0x4b,0x88,0x7a,0x08,0x02,0x28,0x01,0xe8,0x00,0x30,0x00, +0x00,0x10,0x40,0x10,0x40,0x10,0xa0,0x18,0xa0,0x35,0x10,0x37,0xf8,0x34,0x04,0x50, +0x00,0x11,0xf0,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0xf0,0x10,0x00,0x00,0x00,0x10, +0x08,0x10,0x30,0x13,0xc0,0x7c,0x40,0x10,0x40,0x17,0xfc,0x10,0x40,0x1c,0x40,0x73, +0xf8,0x12,0x08,0x12,0x08,0x12,0x08,0x13,0xf8,0x30,0x00,0x00,0x00,0x10,0x08,0x08, +0x30,0x0b,0xc0,0x40,0x40,0x20,0x40,0x27,0xfc,0x00,0x40,0x10,0x40,0x13,0xf8,0x12, +0x08,0x22,0x08,0x22,0x08,0x43,0xf8,0x40,0x00,0x00,0x00,0x10,0x00,0x0b,0xf0,0x0a, +0x10,0x43,0xf0,0x22,0x10,0x23,0xf0,0x01,0x00,0x13,0xf8,0x16,0x48,0x1b,0x88,0x22, +0x08,0x22,0x28,0x41,0xe8,0x40,0x30,0x00,0x00,0x10,0x00,0x0b,0xf0,0x0a,0x10,0x42, +0xf0,0x22,0x90,0x27,0xfc,0x04,0x04,0x17,0xf8,0x1a,0x10,0x13,0xf0,0x22,0x10,0x23, +0xf0,0x42,0x10,0x42,0x30,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x07,0xf8,0x18,0xc8,0x6f,0x08,0x08,0x48,0x07, +0xc8,0x00,0x70,0x00,0x00,0x10,0x00,0x11,0xf0,0x11,0x10,0x7d,0xf0,0x09,0x10,0x0b, +0xf0,0x14,0x80,0x19,0xf8,0x37,0x28,0x55,0xc8,0x11,0x08,0x11,0x28,0x10,0xe8,0x10, +0x30,0x00,0x00,0x08,0x20,0x08,0x20,0x7f,0xfc,0x09,0x24,0x3f,0xf8,0x2a,0x20,0x3e, +0xf8,0x2a,0x20,0x3f,0xfc,0x08,0x00,0x7f,0xf8,0x08,0x88,0x08,0x88,0x08,0xf8,0x00, +0x00,0x00,0x00,0x0f,0xe0,0x08,0x20,0x08,0x20,0x08,0x20,0x0f,0xe0,0x08,0x20,0x08, +0x20,0x0f,0xe0,0x08,0x20,0x08,0x20,0x08,0x20,0x7f,0xfc,0x00,0x00,0x00,0x00,0x08, +0x00,0x09,0xfc,0x1f,0x44,0x25,0xf4,0x7f,0x28,0x2b,0xe8,0x3f,0x54,0x2b,0xe4,0x3e, +0x20,0x04,0xf8,0x3a,0x20,0x2e,0x20,0x29,0xfc,0x40,0x00,0x00,0x00,0x00,0x40,0x00, +0x40,0x78,0x40,0x48,0x40,0x48,0x40,0x4f,0xfc,0x48,0x40,0x48,0x40,0x48,0x40,0x48, +0x40,0x78,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x08,0x90,0x08,0x90,0x0b, +0xfc,0x7e,0x90,0x08,0x40,0x1c,0x64,0x1a,0xa4,0x1b,0xa8,0x29,0xb0,0x2a,0xa0,0x48, +0xa0,0x08,0xa4,0x08,0xa4,0x08,0x9c,0x00,0x00,0x11,0x10,0x11,0x10,0x17,0xfc,0x7d, +0x10,0x13,0xf8,0x19,0x50,0x37,0xfc,0x35,0x50,0x33,0xf8,0x50,0x40,0x57,0xfc,0x10, +0x40,0x10,0x40,0x10,0x40,0x00,0x00,0x14,0x40,0x14,0x40,0x7f,0xf8,0x14,0x88,0x1d, +0xe8,0x08,0x28,0x3e,0x28,0x2a,0xe8,0x3e,0xb0,0x08,0x80,0x7f,0x80,0x08,0x84,0x08, +0x84,0x08,0x7c,0x00,0x00,0x08,0x20,0x08,0xa0,0x08,0xa0,0x7f,0xf8,0x09,0x20,0x1a, +0x20,0x1f,0xfc,0x1a,0x60,0x2a,0x70,0x28,0xb0,0x49,0x28,0x0a,0x24,0x08,0x20,0x08, +0x20,0x00,0x00,0x00,0x80,0x09,0x00,0x37,0xf8,0x24,0x48,0x27,0xc8,0x24,0x48,0x37, +0xd8,0x20,0x08,0x04,0x80,0x04,0x80,0x04,0x80,0x08,0x84,0x10,0x84,0x60,0x7c,0x00, +0x00,0x01,0x00,0x3f,0xf8,0x2d,0x48,0x77,0xbc,0x3f,0xf8,0x09,0x20,0x0f,0xe0,0x09, +0x20,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x11,0x14,0x1f,0xf4,0x00,0xfc,0x00,0x00,0x04, +0x40,0x04,0x40,0x7f,0xfc,0x04,0x50,0x10,0x48,0x0f,0xfc,0x48,0x40,0x23,0xf8,0x2a, +0x48,0x0b,0xf8,0x12,0x48,0x13,0xf8,0x22,0x48,0x22,0x58,0x00,0x00,0x02,0x40,0x0c, +0x30,0x32,0x48,0x01,0x80,0x02,0xc0,0x0c,0x30,0x7f,0xec,0x01,0x00,0x1f,0xf0,0x09, +0x20,0x05,0x20,0x05,0x40,0x7f,0xfc,0x00,0x00,0x00,0x00,0x11,0x10,0x10,0xa0,0x1b, +0xfc,0x24,0xa0,0x27,0xf8,0x78,0xa8,0x13,0xfc,0x7c,0xa8,0x13,0xf8,0x54,0xa8,0x39, +0xb0,0x32,0xa8,0x1c,0xa4,0x60,0xa0,0x00,0x00,0x00,0x40,0x01,0x40,0x79,0x78,0x49, +0x40,0x4f,0xfc,0x4b,0x58,0x4a,0xd8,0x4a,0xe8,0x4b,0xf8,0x4a,0xe8,0x7b,0x58,0x02, +0x48,0x03,0xf8,0x00,0x00,0x00,0x00,0x00,0x20,0x7c,0x40,0x55,0xf0,0x55,0x10,0x7d, +0xf0,0x55,0x10,0x55,0xf0,0x55,0xfc,0x7d,0x00,0x11,0xfc,0x11,0x54,0x12,0xac,0x12, +0x84,0x14,0x18,0x00,0x00,0x08,0x00,0x0b,0xfc,0x08,0x20,0x7e,0x40,0x09,0xf8,0x19, +0x08,0x1d,0x08,0x1b,0x08,0x2b,0xf8,0x29,0x08,0x49,0x08,0x09,0x08,0x09,0xf8,0x08, +0x00,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x1f,0xf0,0x04,0xc0,0x03, +0x00,0x7f,0xfc,0x01,0x18,0x03,0x60,0x05,0x00,0x19,0x00,0x61,0x00,0x03,0x00,0x00, +0x00,0x04,0x40,0x7f,0xfc,0x05,0x40,0x7f,0xfc,0x40,0x04,0x5f,0xf4,0x00,0x00,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x00,0x00,0x7f,0xfc,0x00,0x00,0x01, +0x00,0x71,0x38,0x19,0x48,0x15,0x48,0x75,0xb8,0x41,0x20,0x4f,0xe0,0x71,0x38,0x53, +0xa8,0x13,0x48,0x15,0x48,0x19,0x08,0x11,0x08,0x61,0x30,0x00,0x00,0x02,0x08,0x02, +0x48,0x02,0x48,0x22,0x48,0x12,0x48,0x0c,0x48,0x04,0x48,0x06,0x48,0x0a,0x48,0x09, +0x48,0x11,0x48,0x10,0x08,0x20,0x08,0x40,0x18,0x00,0x00,0x04,0x40,0x04,0x40,0x7f, +0xfc,0x04,0x40,0x04,0x40,0x02,0x08,0x22,0x48,0x12,0x48,0x0c,0x48,0x04,0x48,0x0c, +0x48,0x12,0x48,0x22,0x08,0x40,0x18,0x00,0x00,0x00,0x00,0x7f,0xfc,0x04,0x00,0x04, +0x00,0x07,0xc0,0x04,0x40,0x04,0x40,0x06,0x40,0x09,0x40,0x09,0x40,0x08,0x40,0x09, +0xc4,0x0e,0x44,0x70,0x3c,0x00,0x00,0x08,0x80,0x08,0x80,0x7f,0xfc,0x08,0x80,0x3f, +0x00,0x22,0xf8,0x3e,0x10,0x22,0x20,0x3e,0x40,0x08,0x40,0x7f,0x80,0x08,0x84,0x08, +0x84,0x08,0x7c,0x00,0x00,0x08,0x00,0x0b,0xf8,0x0a,0x08,0x12,0x08,0x12,0x08,0x33, +0xf8,0x50,0x00,0x12,0x90,0x12,0x90,0x12,0x90,0x12,0x90,0x14,0x94,0x14,0x94,0x18, +0x0c,0x00,0x00,0x00,0x00,0x7f,0xfc,0x40,0x04,0x7e,0x14,0x00,0x10,0x01,0xfc,0x7f, +0x10,0x14,0x90,0x14,0x90,0x14,0x10,0x14,0x10,0x24,0x34,0x24,0x04,0x43,0xfc,0x00, +0x00,0x01,0x00,0x7f,0xfc,0x44,0x44,0x5f,0xf4,0x04,0x40,0x1f,0xf0,0x04,0x40,0x7f, +0xfc,0x04,0x40,0x1b,0x30,0x60,0x8c,0x06,0x00,0x01,0x80,0x00,0x40,0x00,0x00,0x00, +0x08,0x7f,0x48,0x08,0x48,0x08,0x48,0x08,0x48,0x08,0x48,0x7f,0x48,0x08,0x48,0x08, +0x48,0x08,0x48,0x08,0x48,0x08,0x08,0x08,0x08,0x08,0x18,0x00,0x00,0x12,0x40,0x12, +0x40,0x7f,0x40,0x12,0xf8,0x1e,0x48,0x12,0x48,0x1e,0x48,0x12,0x48,0x7f,0xc8,0x2c, +0x48,0x2d,0x48,0x33,0x88,0x3f,0x88,0x01,0x30,0x00,0x00,0x10,0x40,0x10,0x40,0x3f, +0x40,0x28,0xf8,0x5f,0x48,0x14,0x48,0x3f,0x48,0x64,0x48,0x3f,0x48,0x24,0x48,0x3f, +0x48,0x24,0x88,0x3f,0x88,0x01,0x30,0x00,0x00,0x11,0x10,0x09,0x10,0x09,0x20,0x3f, +0xf8,0x02,0x80,0x7f,0xfc,0x04,0x40,0x1f,0xf0,0x60,0x4c,0x0f,0xc0,0x08,0x10,0x08, +0x10,0x07,0xf0,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0xf0,0x79,0x20,0x4a,0x40,0x4f, +0xf8,0x4a,0xa8,0x4a,0xa8,0x4a,0xb8,0x4b,0x28,0x4a,0x48,0x7f,0xfc,0x00,0xa0,0x03, +0x18,0x0c,0x04,0x00,0x00,0x01,0x10,0x17,0xfc,0x11,0x10,0x11,0xf0,0x7d,0x10,0x11, +0xf0,0x11,0x10,0x17,0xfc,0x12,0xa0,0x1a,0xa8,0x63,0x18,0x02,0x00,0x03,0xfc,0x00, +0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x04,0x40,0x0e,0x80,0x03,0xc0,0x1c, +0x30,0x08,0x20,0x7f,0xfc,0x12,0x48,0x34,0xd0,0x0c,0x30,0x1a,0x68,0x61,0x84,0x00, +0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x40,0x04,0x4f,0xe4,0x00,0x00,0x00,0x00,0x7f, +0xfc,0x04,0x80,0x04,0x80,0x04,0x80,0x08,0x84,0x10,0x84,0x60,0x7c,0x00,0x00,0x01, +0x00,0x01,0x00,0x7f,0xfc,0x40,0x04,0x4f,0xe4,0x08,0x20,0x08,0x20,0x0f,0xe0,0x08, +0x00,0x08,0x00,0x0f,0xf0,0x08,0x10,0x08,0x10,0x0f,0xf0,0x00,0x00,0x01,0x00,0x7f, +0xfc,0x44,0x44,0x5f,0xf4,0x04,0x40,0x0f,0xe0,0x08,0x20,0x0f,0xa0,0x0b,0xe0,0x08, +0x20,0x0f,0xe0,0x02,0x84,0x0c,0x84,0x70,0x7c,0x00,0x00,0x00,0x00,0x3f,0xf8,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x08,0x20,0x08,0x20,0x7f,0x50,0x08, +0x88,0x3f,0x04,0x22,0xf8,0x3e,0x20,0x22,0x20,0x3f,0xfc,0x08,0x20,0x7f,0x20,0x08, +0x20,0x08,0x20,0x08,0x20,0x00,0x00,0x01,0x00,0x0f,0xe0,0x09,0x20,0x0f,0xe0,0x01, +0x00,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x01,0x00,0x14,0x90,0x14,0x88,0x24,0x24,0x44, +0x24,0x03,0xe0,0x00,0x00,0x00,0x90,0x00,0x88,0x1f,0xfc,0x10,0x88,0x1f,0x48,0x10, +0x50,0x2f,0x20,0x29,0x54,0x4f,0x8c,0x01,0x04,0x24,0x88,0x24,0xa4,0x44,0x24,0x03, +0xe0,0x00,0x00,0x10,0x00,0x11,0xf8,0x11,0x48,0x17,0xfc,0x3a,0x50,0x37,0xf8,0x32, +0x08,0x53,0xf8,0x12,0x08,0x13,0xf8,0x12,0x08,0x13,0xf8,0x11,0x98,0x16,0x04,0x00, +0x00,0x10,0x28,0x13,0xfc,0x12,0x20,0x1b,0xe8,0x36,0x28,0x37,0xd0,0x33,0x54,0x55, +0xec,0x18,0x84,0x11,0x50,0x15,0x48,0x15,0x14,0x19,0x14,0x10,0xf0,0x00,0x00,0x10, +0x80,0x10,0xf0,0x11,0x20,0x7f,0xf8,0x12,0xa8,0x12,0xa8,0x13,0x28,0x1a,0x58,0x72, +0x48,0x17,0xfc,0x10,0x40,0x10,0xa0,0x11,0x10,0x36,0x0c,0x00,0x00,0x00,0x40,0x3f, +0x40,0x04,0x40,0x04,0x40,0x7f,0xfc,0x12,0x88,0x1f,0x88,0x12,0x50,0x1e,0x50,0x13, +0x20,0x1e,0x20,0x62,0x50,0x02,0x88,0x03,0x04,0x00,0x00,0x08,0x88,0x08,0x88,0x08, +0x88,0x7f,0xfc,0x08,0x88,0x18,0x88,0x1c,0x88,0x1a,0xf8,0x2a,0x88,0x28,0x88,0x48, +0x88,0x08,0x88,0x08,0xf8,0x08,0x00,0x00,0x00,0x08,0x00,0x09,0xfc,0x08,0x00,0x7e, +0xf8,0x08,0x88,0x18,0x88,0x1c,0xf8,0x1a,0x88,0x2a,0x88,0x28,0xf8,0x48,0x00,0x08, +0x00,0x0b,0xfc,0x08,0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x0b,0xfc,0x7e,0x04,0x0b, +0xf4,0x19,0x10,0x1d,0x10,0x1b,0xf0,0x2b,0x00,0x29,0xf8,0x49,0x08,0x09,0x08,0x09, +0xf8,0x08,0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x7f,0x40,0x08,0x40,0x3e,0xfc,0x00, +0xa8,0x3f,0x30,0x00,0x20,0x7f,0x20,0x0c,0x60,0x2a,0x50,0x2a,0x90,0x49,0x08,0x1a, +0x04,0x00,0x00,0x10,0x40,0x10,0x40,0x1f,0x40,0x28,0x40,0x7f,0xfc,0x14,0xa8,0x1f, +0x30,0x34,0x20,0x5f,0x20,0x14,0x20,0x1f,0x50,0x14,0x50,0x1f,0x88,0x01,0x04,0x00, +0x00,0x10,0x00,0x0b,0xf8,0x08,0x40,0x40,0x40,0x20,0x40,0x20,0x40,0x07,0xfc,0x08, +0x40,0x08,0x40,0x08,0x40,0x10,0x40,0x10,0x40,0x20,0x40,0x20,0x40,0x00,0x00,0x11, +0x20,0x09,0x20,0x0f,0xfc,0x41,0x20,0x23,0xf8,0x22,0x48,0x03,0xf8,0x10,0x40,0x13, +0xf8,0x10,0x40,0x27,0xfc,0x20,0xa0,0x41,0x10,0x46,0x0c,0x00,0x00,0x20,0x00,0x1f, +0x78,0x19,0x48,0x4f,0x78,0x29,0x48,0x2f,0x78,0x08,0x08,0x0b,0xe8,0x1a,0x28,0x1b, +0xe8,0x2a,0x28,0x2b,0xe8,0x48,0x08,0x48,0x18,0x00,0x00,0x11,0x00,0x09,0x00,0x0b, +0xf8,0x42,0x80,0x27,0xfc,0x29,0x20,0x03,0xfc,0x12,0x20,0x17,0xf8,0x2a,0x20,0x23, +0xf8,0x42,0x20,0x43,0xfc,0x40,0x00,0x00,0x00,0x00,0x00,0x03,0xf8,0x7e,0xa8,0x13, +0xf8,0x10,0x00,0x17,0xfc,0x7d,0xf0,0x11,0x10,0x11,0xf8,0x14,0xc8,0x19,0xb0,0x66, +0x90,0x00,0x8c,0x00,0x80,0x00,0x00,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x7f, +0xfc,0x08,0x20,0x08,0x20,0x08,0x20,0x0f,0xe0,0x08,0x20,0x08,0x20,0x08,0x20,0x0f, +0xe0,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0x40,0x24,0x40,0x3e,0xfc,0x22,0x80,0x3f, +0x00,0x24,0x78,0x3f,0x00,0x00,0x00,0x1f,0xf0,0x12,0x90,0x12,0x90,0x7f,0xfc,0x00, +0x00,0x00,0x00,0x00,0x30,0x1f,0xc0,0x02,0x00,0x3f,0xf8,0x02,0x00,0x7f,0xfc,0x04, +0x00,0x07,0xf0,0x0c,0x10,0x0f,0xf0,0x14,0x10,0x27,0xf0,0x44,0x10,0x07,0xf0,0x00, +0x00,0x10,0x40,0x10,0x40,0x1f,0xfc,0x28,0xa0,0x25,0x10,0x42,0x10,0x3f,0xf8,0x01, +0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x10, +0x40,0x1f,0xfc,0x29,0xa0,0x45,0x10,0x7f,0xfc,0x40,0x04,0x4f,0xe4,0x08,0x20,0x0f, +0xe0,0x08,0x00,0x0f,0xf0,0x08,0x10,0x08,0x10,0x0f,0xf0,0x00,0x00,0x10,0x40,0x1f, +0xfc,0x28,0xa0,0x45,0x10,0x3e,0xf8,0x22,0x88,0x3e,0xf8,0x22,0x88,0x3f,0xf8,0x24, +0x48,0x27,0xc8,0x24,0x48,0x27,0xc8,0x20,0x18,0x00,0x00,0x08,0x1c,0x09,0xe4,0x0a, +0xa8,0x72,0x50,0x17,0xfc,0x0c,0x40,0x13,0xfc,0x7e,0x40,0x0c,0x78,0x2a,0xc8,0x2a, +0xb0,0x29,0x30,0x4a,0xc8,0x0b,0x04,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x1f, +0xf8,0x11,0x00,0x21,0x00,0x7f,0xfc,0x01,0x00,0x11,0x10,0x11,0x10,0x11,0x10,0x11, +0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x7f,0xa0,0x08,0x90,0x3f, +0x08,0x23,0xfc,0x3e,0x48,0x23,0x68,0x3e,0xd8,0x08,0xd8,0x7f,0x68,0x09,0x68,0x08, +0x48,0x08,0xd8,0x00,0x00,0x00,0x00,0x3f,0xf8,0x24,0x40,0x24,0x40,0x24,0x40,0x3c, +0x40,0x27,0xfc,0x24,0x40,0x3c,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x4c, +0x40,0x00,0x00,0x08,0x10,0x11,0xf0,0x3d,0x50,0x25,0xfc,0x35,0x30,0x2d,0xe0,0x2d, +0x5c,0x7f,0xe0,0x24,0x00,0x2d,0xf8,0x2d,0x68,0x2d,0x68,0x25,0x68,0x4f,0xfc,0x00, +0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x01,0x00,0x7f,0xfc,0x40,0x04,0x4f, +0xe4,0x00,0x00,0x3f,0xfc,0x02,0x80,0x04,0x84,0x18,0x84,0x60,0x7c,0x00,0x00,0x10, +0x00,0x10,0xf8,0x3e,0x88,0x48,0x88,0x7f,0xf8,0x14,0x88,0x3f,0xf8,0x68,0x88,0x3e, +0xf8,0x28,0x50,0x3e,0x50,0x28,0x94,0x3f,0x14,0x02,0x0c,0x00,0x00,0x00,0x40,0x3c, +0x40,0x03,0xfc,0x7c,0x40,0x01,0xf8,0x3d,0x48,0x01,0xf8,0x3d,0x48,0x01,0xf8,0x3c, +0xe0,0x25,0x50,0x26,0x48,0x3c,0x44,0x00,0x40,0x00,0x00,0x00,0x00,0x0f,0xe0,0x09, +0x20,0x7f,0xfc,0x12,0x40,0x1f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x06,0x60,0x38,0x18,0x00,0x00,0x00,0x00,0x27,0xf8,0x15,0x28,0x17, +0xf8,0x00,0x00,0x0f,0xfc,0x73,0xf0,0x12,0x10,0x13,0xf8,0x10,0xc8,0x17,0xb0,0x18, +0x88,0x26,0x80,0x41,0xfc,0x00,0x00,0x10,0x10,0x13,0xd0,0x1a,0x90,0x27,0xdc,0x26, +0x60,0x7b,0xc0,0x12,0x9c,0x7f,0xc0,0x12,0x00,0x55,0xf8,0x39,0x68,0x31,0x68,0x1f, +0xfc,0x60,0x00,0x00,0x00,0x00,0x00,0x7c,0xf8,0x44,0x88,0x7c,0xf8,0x44,0x88,0x7c, +0xf8,0x40,0x08,0x4f,0xc8,0x48,0x48,0x4f,0xc8,0x48,0x48,0x48,0x48,0x4f,0xc8,0x40, +0x18,0x00,0x00,0x00,0x00,0x7c,0xf8,0x44,0x88,0x7c,0xf8,0x44,0x88,0x7c,0xf8,0x42, +0x08,0x42,0x08,0x5f,0xe8,0x47,0x08,0x4a,0x88,0x52,0x68,0x42,0x08,0x40,0x18,0x00, +0x00,0x00,0x00,0x7c,0xf8,0x44,0x88,0x7c,0xf8,0x44,0x88,0x7c,0xf8,0x48,0x88,0x45, +0x08,0x4f,0xc8,0x42,0x08,0x5f,0xe8,0x44,0x88,0x48,0x48,0x50,0x18,0x00,0x00,0x00, +0x40,0x3c,0x40,0x24,0xf8,0x28,0x90,0x31,0x10,0x2a,0x20,0x25,0x78,0x25,0x48,0x25, +0x48,0x25,0x78,0x39,0x48,0x21,0x48,0x21,0x78,0x21,0x00,0x00,0x00,0x08,0x20,0x08, +0xf8,0x7e,0x28,0x09,0xfc,0x3e,0x00,0x22,0xf8,0x3e,0x88,0x22,0xf8,0x3e,0x10,0x08, +0xf8,0x7e,0x90,0x09,0xfc,0x08,0x10,0x08,0x10,0x00,0x00,0x08,0x20,0x08,0x20,0x15, +0xfc,0x1b,0x04,0x28,0xf4,0x7e,0x90,0x22,0x90,0x3e,0xf0,0x22,0x80,0x3e,0xf8,0x24, +0x88,0x26,0x88,0x39,0x88,0x60,0xf8,0x00,0x00,0x08,0x20,0x08,0x20,0x15,0xfc,0x13, +0x04,0x22,0xf4,0x7e,0x90,0x08,0x90,0x7e,0xf0,0x08,0x80,0x3e,0xf8,0x22,0x88,0x22, +0x88,0x3e,0xf8,0x00,0x80,0x00,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x7f, +0xc0,0x02,0x40,0x02,0x40,0x1a,0x40,0x06,0x40,0x05,0x40,0x08,0xc4,0x10,0x44,0x20, +0x44,0x40,0x3c,0x00,0x00,0x01,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x1f,0xf0,0x60, +0x0c,0x1f,0xe0,0x00,0x40,0x00,0x80,0x1f,0xf0,0x10,0x10,0x10,0x10,0x1f,0xf0,0x00, +0x00,0x00,0x00,0x01,0x00,0x11,0x10,0x11,0x10,0x1f,0xf0,0x00,0x00,0x1f,0xfc,0x10, +0x00,0x17,0xf0,0x10,0x80,0x10,0x80,0x2f,0xf8,0x20,0x80,0x40,0x80,0x00,0x80,0x00, +0x00,0x01,0x00,0x11,0x08,0x1f,0xf8,0x09,0x10,0x3f,0xfc,0x2f,0x20,0x22,0x20,0x3f, +0xbc,0x29,0x48,0x2f,0xa8,0x29,0x10,0x2f,0xb0,0x39,0x48,0x41,0x84,0x00,0x00,0x00, +0x00,0x01,0xf8,0x7c,0x00,0x10,0x00,0x10,0x00,0x13,0xfc,0x7c,0xa0,0x10,0xa0,0x10, +0xa0,0x11,0x20,0x1d,0x20,0x62,0x24,0x04,0x24,0x08,0x1c,0x00,0x00,0x00,0x80,0x0f, +0xfc,0x08,0x00,0x49,0xf0,0x29,0x10,0x29,0xf0,0x0f,0xbc,0x1c,0xa4,0x2f,0xbc,0x48, +0x40,0x12,0x48,0x12,0x48,0x22,0x48,0x43,0xf8,0x00,0x00,0x00,0x00,0x79,0xf0,0x49, +0x10,0x49,0x10,0x79,0xf0,0x49,0x10,0x49,0x10,0x79,0xf8,0x49,0x48,0x49,0x50,0x79, +0x20,0x01,0x50,0x01,0x88,0x06,0x04,0x00,0x00,0x01,0x00,0x11,0x10,0x11,0x10,0x1f, +0xf0,0x00,0x00,0x7f,0xfc,0x04,0x00,0x04,0x00,0x0f,0xf0,0x0c,0x10,0x14,0x10,0x24, +0x10,0x47,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xf8,0x4c,0x80,0x2a,0x80,0x1b, +0x80,0x6c,0xfc,0x19,0xb0,0x08,0x30,0x3f,0x30,0x21,0x30,0x3f,0x50,0x21,0x54,0x3f, +0x94,0x21,0x0c,0x00,0x00,0x00,0x00,0x1f,0xfc,0x12,0x88,0x14,0xfc,0x1d,0x90,0x16, +0xf8,0x14,0x90,0x17,0xfc,0x12,0x10,0x13,0xf0,0x22,0x10,0x23,0xf0,0x43,0x30,0x1c, +0x0c,0x00,0x00,0x00,0x00,0x1f,0xfc,0x12,0x48,0x12,0x50,0x14,0xfc,0x14,0x90,0x1d, +0x90,0x16,0xf8,0x14,0x90,0x14,0xf8,0x24,0x90,0x24,0x90,0x44,0xfc,0x04,0x80,0x00, +0x00,0x00,0x00,0x01,0xfc,0x3e,0x20,0x00,0x40,0x00,0xf8,0x7f,0x88,0x14,0xf8,0x14, +0x88,0x14,0xf8,0x15,0x88,0x23,0xf8,0x20,0x50,0x41,0x88,0x06,0x04,0x00,0x00,0x08, +0x00,0x09,0xfc,0x7f,0x20,0x22,0x40,0x14,0xf8,0x3f,0x88,0x24,0xf8,0x28,0x88,0x32, +0xf8,0x24,0x88,0x39,0xf8,0x22,0x50,0x4c,0x88,0x33,0x04,0x00,0x00,0x00,0x00,0x3f, +0xfc,0x22,0x10,0x24,0x20,0x2f,0x78,0x29,0x48,0x2f,0x78,0x29,0x48,0x2f,0x78,0x26, +0x48,0x2d,0x78,0x35,0x30,0x44,0x48,0x0d,0x84,0x00,0x00,0x01,0x00,0x01,0x00,0x02, +0x80,0x04,0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x09,0x00,0x09,0xf0,0x09,0x00,0x09, +0x00,0x09,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x17, +0xfc,0x10,0x40,0x30,0x40,0x53,0xf8,0x11,0x08,0x11,0x10,0x10,0x90,0x10,0xa0,0x10, +0x40,0x11,0xb0,0x16,0x0c,0x00,0x00,0x02,0x00,0x07,0xe0,0x18,0xc0,0x61,0x00,0x1f, +0xfc,0x10,0x00,0x13,0xf0,0x12,0x10,0x12,0x10,0x12,0x10,0x12,0x60,0x22,0x04,0x22, +0x04,0x41,0xfc,0x00,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x1f,0xf0,0x00,0x00,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x04,0x40,0x7f,0xfc,0x00,0x00,0x1f,0xf0,0x10,0x10,0x1f, +0xf0,0x00,0x00,0x00,0x00,0x1e,0xf0,0x12,0x90,0x12,0x90,0x1e,0xf0,0x01,0x00,0x7f, +0xfc,0x04,0x40,0x18,0x30,0x7e,0xfc,0x12,0x90,0x12,0x90,0x1e,0xf0,0x00,0x00,0x00, +0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x07,0xc0,0x04,0x40,0x07,0xc0,0x04,0x40,0x7f, +0xfc,0x09,0x20,0x1f,0xf0,0x61,0x0c,0x01,0x00,0x3f,0xf8,0x00,0x00,0x00,0x00,0x01, +0x00,0x01,0x00,0x3f,0xf8,0x02,0x80,0x04,0x40,0x18,0x20,0x7f,0xfc,0x00,0x10,0x1f, +0x10,0x11,0x10,0x11,0x10,0x1f,0x10,0x00,0x10,0x00,0x30,0x00,0x00,0x10,0x40,0x17, +0xfc,0x10,0x40,0x13,0xf8,0x7d,0xf8,0x25,0x08,0x25,0xf8,0x24,0x90,0x7b,0xfc,0x48, +0x00,0x0d,0xf8,0x15,0x08,0x61,0xf8,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x7f, +0xfc,0x41,0x04,0x5f,0xf4,0x02,0x40,0x0c,0x20,0x7f,0xfc,0x00,0x20,0x1f,0x20,0x11, +0x20,0x1f,0x20,0x00,0x20,0x00,0x60,0x00,0x00,0x00,0x40,0x10,0x40,0x10,0x40,0x17, +0xfc,0x54,0x40,0x54,0x40,0x57,0xf8,0x55,0x08,0x54,0x90,0x54,0x90,0x7c,0x60,0x00, +0x60,0x01,0x90,0x06,0x0c,0x00,0x00,0x06,0x20,0x01,0xc0,0x07,0x60,0x39,0x10,0x02, +0x00,0x7f,0xfc,0x04,0x80,0x0f,0xf8,0x18,0x88,0x28,0x88,0x48,0x88,0x08,0x88,0x08, +0xb0,0x00,0x80,0x00,0x00,0x11,0x20,0x15,0x28,0x65,0xc8,0x19,0x30,0x09,0x30,0x15, +0x48,0x7b,0xf4,0x01,0x10,0x3f,0xfc,0x08,0x90,0x0c,0xa0,0x12,0x44,0x21,0xb4,0x46, +0x0c,0x00,0x00,0x00,0x00,0x1f,0xe0,0x00,0x20,0x00,0x20,0x1f,0xe0,0x10,0x20,0x10, +0x08,0x0f,0xf8,0x01,0x00,0x14,0x90,0x14,0x88,0x24,0x24,0x44,0x24,0x03,0xe0,0x00, +0x00,0x10,0x00,0x17,0xfc,0x14,0x44,0x7d,0xf4,0x10,0x40,0x13,0xf8,0x12,0x48,0x1f, +0xf8,0x72,0x48,0x13,0xf8,0x10,0x40,0x17,0xfc,0x10,0x40,0x30,0x40,0x00,0x00,0x08, +0x00,0x08,0xf0,0x08,0x90,0x7f,0x90,0x08,0x90,0x1c,0x90,0x1a,0x90,0x1a,0x90,0x28, +0x90,0x28,0x90,0x49,0x10,0x09,0x14,0x0a,0x14,0x0c,0x0c,0x00,0x00,0x10,0x80,0x10, +0x80,0x11,0xfc,0x7e,0x90,0x13,0xfc,0x10,0x90,0x1c,0xf0,0x14,0x90,0x14,0xf0,0x14, +0x90,0x27,0xfc,0x24,0x50,0x44,0x88,0x1b,0x04,0x00,0x00,0x00,0x00,0x3e,0xfc,0x22, +0x50,0x22,0x50,0x3e,0x50,0x22,0x50,0x23,0xfc,0x3e,0x30,0x28,0x30,0x24,0x50,0x26, +0x50,0x3a,0x94,0x61,0x14,0x02,0x0c,0x00,0x00,0x12,0x00,0x12,0x78,0x12,0x48,0x7f, +0xc8,0x12,0x78,0x1e,0x48,0x12,0x48,0x1e,0x78,0x12,0x48,0x7f,0xc8,0x14,0x48,0x12, +0x88,0x22,0x88,0x41,0x18,0x00,0x00,0x08,0x90,0x08,0x90,0x08,0x90,0x7f,0xfc,0x08, +0x90,0x1c,0xf0,0x1a,0x90,0x1a,0xf0,0x28,0x90,0x2b,0xfc,0x48,0x90,0x08,0x88,0x09, +0x04,0x0a,0x04,0x00,0x00,0x01,0x00,0x7f,0xfc,0x02,0x40,0x1f,0xe0,0x09,0x30,0x7f, +0xfc,0x09,0x20,0x0f,0xe0,0x01,0x00,0x7f,0xfc,0x03,0x80,0x0d,0x60,0x71,0x1c,0x01, +0x00,0x00,0x00,0x11,0x48,0x11,0x48,0x16,0xf4,0x7e,0xd4,0x11,0x48,0x1a,0xd4,0x37, +0x7c,0x34,0x50,0x33,0xfc,0x52,0x20,0x53,0x28,0x14,0xb0,0x14,0x4c,0x19,0x84,0x00, +0x00,0x08,0x00,0x0b,0xf8,0x08,0x08,0x09,0xf8,0x28,0x08,0x2b,0xf8,0x28,0x00,0x4f, +0xfc,0x0c,0x44,0x0b,0xf8,0x0a,0x48,0x12,0x48,0x12,0x58,0x20,0x40,0x00,0x00,0x08, +0x00,0x08,0x70,0x3f,0x50,0x12,0x50,0x0c,0x54,0x7f,0x94,0x19,0x0c,0x6d,0xf8,0x16, +0x48,0x6d,0x50,0x15,0x30,0x64,0x30,0x04,0xc8,0x1b,0x04,0x00,0x00,0x08,0x00,0x08, +0x00,0x1f,0xf8,0x10,0x00,0x2f,0xe0,0x40,0x00,0x3f,0xe0,0x01,0x20,0x01,0x20,0x1a, +0x20,0x06,0x14,0x05,0x14,0x18,0x0c,0x60,0x04,0x00,0x00,0x11,0x00,0x09,0x00,0x0b, +0xf8,0x42,0x00,0x25,0xf0,0x20,0x00,0x07,0xf0,0x00,0x10,0x08,0x10,0x08,0x10,0x10, +0x14,0x10,0x0c,0x20,0x0c,0x20,0x04,0x00,0x00,0x11,0x20,0x15,0x28,0x65,0xc8,0x19, +0x30,0x15,0x28,0x7b,0xf4,0x02,0xa4,0x7f,0xfc,0x3e,0x88,0x2a,0x48,0x3e,0x50,0x2a, +0x20,0x3e,0x54,0x01,0x8c,0x00,0x00,0x08,0x08,0x08,0x30,0x08,0xc0,0x7e,0x80,0x04, +0x80,0x08,0xfc,0x0c,0x90,0x1a,0x90,0x2a,0x90,0x48,0x90,0x09,0x10,0x09,0x10,0x0a, +0x10,0x0c,0x10,0x00,0x00,0x00,0x60,0x1f,0x80,0x01,0x00,0x7f,0xfc,0x03,0x80,0x05, +0x40,0x19,0x30,0x6f,0xec,0x00,0x40,0x01,0x80,0x7f,0xfc,0x01,0x00,0x01,0x00,0x07, +0x00,0x00,0x00,0x02,0x10,0x0c,0xd0,0x38,0x30,0x09,0xc8,0x08,0x40,0x7f,0xfc,0x08, +0xa0,0x1c,0xf8,0x1b,0xa8,0x2a,0xa8,0x48,0xa8,0x08,0xb8,0x08,0x20,0x08,0x20,0x00, +0x00,0x08,0x00,0x08,0xf8,0x0a,0x08,0x72,0x08,0x14,0x08,0x0c,0xf8,0x12,0x80,0x7d, +0x80,0x08,0x80,0x2c,0x80,0x2a,0x80,0x2a,0x84,0x48,0x7c,0x08,0x00,0x00,0x00,0x12, +0x20,0x1a,0xa0,0x2a,0xa0,0x4f,0xa0,0x14,0x7c,0x15,0x48,0x3d,0xc8,0x62,0x28,0x25, +0x28,0x3f,0xb0,0x2a,0x90,0x2b,0x30,0x32,0xc8,0x22,0x84,0x00,0x00,0x08,0x00,0x09, +0xf8,0x09,0x08,0x3f,0xf8,0x09,0x08,0x09,0xf8,0x7f,0x08,0x09,0x08,0x09,0xf8,0x08, +0xa0,0x15,0x20,0x15,0x24,0x22,0x24,0x44,0x1c,0x00,0x00,0x00,0x00,0x3e,0xf8,0x00, +0x08,0x7f,0x08,0x00,0x08,0x3e,0xf8,0x00,0x80,0x3e,0x80,0x00,0x80,0x3e,0x80,0x22, +0x80,0x22,0x84,0x3e,0x7c,0x00,0x00,0x00,0x00,0x01,0x00,0x0f,0xe0,0x09,0x20,0x0f, +0xe0,0x01,0x00,0x7f,0xfc,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x06,0x60,0x38,0x18,0x00,0x00,0x08,0x00,0x08,0xf8,0x3e,0x08,0x08,0x08,0x08, +0x08,0x7f,0xf8,0x08,0x80,0x28,0x80,0x2f,0x80,0x28,0x84,0x38,0x84,0x28,0x7c,0x26, +0x00,0x41,0xfc,0x00,0x00,0x08,0x40,0x08,0x40,0x7f,0x40,0x09,0xf0,0x3e,0x50,0x2a, +0x50,0x3e,0x50,0x2a,0x50,0x3e,0x50,0x08,0x50,0x7f,0x90,0x08,0x94,0x09,0x14,0x0a, +0x0c,0x00,0x00,0x08,0x00,0x09,0xfc,0x4b,0x24,0x2b,0xfc,0x2c,0x20,0x08,0xf8,0x7f, +0xa8,0x14,0xf8,0x14,0xa8,0x15,0xf8,0x16,0x20,0x25,0xfc,0x20,0x20,0x40,0x20,0x00, +0x00,0x08,0x00,0x08,0xf0,0x14,0x90,0x1a,0x90,0x28,0x90,0x7e,0x90,0x22,0x90,0x3e, +0x90,0x22,0x90,0x3e,0x90,0x28,0x90,0x25,0x14,0x3b,0x14,0x62,0x0c,0x00,0x00,0x00, +0x20,0x3f,0x20,0x29,0xfc,0x3e,0x20,0x28,0x50,0x3e,0x88,0x29,0xfc,0x3e,0x08,0x02, +0xe8,0x2a,0xa8,0x2a,0xa8,0x22,0xe8,0x42,0x08,0x0c,0x18,0x00,0x00,0x01,0x00,0x02, +0x00,0x1f,0xf0,0x11,0x10,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x05,0x20,0x05, +0x20,0x09,0x50,0x09,0xfc,0x11,0x04,0x20,0xfc,0x00,0x00,0x02,0x00,0x03,0xc0,0x0c, +0x80,0x7f,0xe0,0x09,0x20,0x0f,0xe0,0x09,0x20,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x11, +0x10,0x1f,0xf4,0x01,0x04,0x00,0xfc,0x00,0x00,0x0a,0x40,0x09,0x40,0x09,0x40,0x17, +0xf0,0x10,0x90,0x30,0x90,0x51,0xf8,0x11,0x08,0x13,0xfc,0x15,0x54,0x1c,0xac,0x12, +0x84,0x12,0x04,0x10,0x18,0x00,0x00,0x09,0x10,0x08,0xa0,0x0f,0xfc,0x10,0x40,0x13, +0xf8,0x30,0x40,0x57,0xfc,0x13,0xa8,0x11,0x24,0x1f,0xfc,0x11,0xa8,0x17,0x10,0x11, +0x6c,0x13,0x04,0x00,0x00,0x08,0x20,0x08,0x20,0x09,0xfc,0x08,0x20,0x7e,0x20,0x13, +0xf8,0x12,0x88,0x12,0x88,0x3c,0x50,0x24,0x50,0x06,0x20,0x0a,0x50,0x31,0x88,0x02, +0x04,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x40,0x04,0x4f,0xc4,0x08,0x40,0x08, +0x40,0x0f,0xc0,0x08,0x40,0x0f,0xc0,0x08,0x40,0x08,0x40,0x7f,0xfc,0x00,0x00,0x00, +0x00,0x04,0x30,0x07,0x28,0x04,0x28,0x3f,0xa0,0x27,0x3c,0x3d,0xe0,0x23,0x28,0x2a, +0x28,0x2a,0xb0,0x3b,0x10,0x3a,0x34,0x2b,0x4c,0x4c,0x8c,0x30,0x04,0x00,0x00,0x10, +0x40,0x10,0x40,0x10,0x40,0x7f,0xfc,0x10,0x40,0x10,0x40,0x13,0xf8,0x1d,0x08,0x70, +0x90,0x10,0x90,0x10,0x60,0x10,0x60,0x11,0x90,0x36,0x0c,0x00,0x00,0x14,0x00,0x15, +0xfc,0x16,0x28,0x7c,0x90,0x13,0x90,0x12,0x7c,0x13,0x98,0x1d,0x50,0x77,0xdc,0x11, +0x50,0x13,0x50,0x12,0xf0,0x14,0x90,0x39,0x0c,0x00,0x00,0x12,0x40,0x12,0x40,0x12, +0x40,0x7f,0x40,0x12,0x7c,0x1e,0xa8,0x13,0x30,0x1e,0x20,0x12,0x20,0x7f,0x20,0x12, +0x50,0x11,0x90,0x21,0x08,0x42,0x04,0x00,0x00,0x09,0x10,0x08,0xa0,0x2b,0xfc,0x28, +0x40,0x3d,0xf8,0x28,0x40,0x4b,0xfc,0x0d,0xe8,0x18,0xa4,0x6f,0xfc,0x08,0xe8,0x0b, +0x94,0x08,0xac,0x09,0xc4,0x00,0x00,0x20,0x00,0x27,0xf8,0x38,0x90,0x22,0x60,0x1e, +0x20,0x11,0xfc,0x1e,0x28,0x28,0xb0,0x7e,0xa0,0x08,0xb8,0x14,0xa0,0x13,0x60,0x22, +0x30,0x44,0x0c,0x00,0x00,0x10,0x08,0x10,0x30,0x11,0xe0,0x7d,0x20,0x05,0x20,0x09, +0x20,0x09,0xfc,0x19,0x20,0x35,0x10,0x55,0x14,0x11,0x14,0x11,0xcc,0x16,0x0c,0x10, +0x04,0x00,0x00,0x04,0x40,0x3f,0xf8,0x01,0x00,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x06, +0x90,0x38,0x88,0x7f,0xfc,0x08,0x48,0x0e,0x50,0x78,0x24,0x08,0xd4,0x1b,0x0c,0x00, +0x00,0x10,0x90,0x13,0xfc,0x10,0x40,0x7d,0xf8,0x54,0x40,0x57,0xfc,0x54,0x68,0x7d, +0xa4,0x13,0xfc,0x18,0xa8,0x14,0xd8,0x1f,0x94,0x60,0xec,0x01,0x84,0x00,0x00,0x00, +0x40,0x3c,0x40,0x03,0xfc,0x7e,0x04,0x03,0xf0,0x3d,0x10,0x01,0x10,0x3d,0xf0,0x01, +0x10,0x3d,0xf0,0x25,0x10,0x25,0x10,0x3f,0xfc,0x00,0x00,0x00,0x00,0x01,0x10,0x38, +0xa0,0x03,0xfc,0x7c,0x40,0x03,0xf8,0x38,0x40,0x07,0xfc,0x39,0xa8,0x03,0x24,0x3f, +0xfc,0x29,0xa8,0x2f,0x14,0x39,0x6c,0x03,0x04,0x00,0x00,0x11,0x00,0x11,0x00,0x11, +0x00,0x7f,0xf8,0x12,0x88,0x14,0xa8,0x12,0xa8,0x1a,0xc8,0x77,0xf8,0x11,0xc8,0x11, +0xa8,0x12,0x98,0x14,0x88,0x30,0xb0,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x0c, +0x40,0x08,0x00,0x1f,0xf8,0x12,0x48,0x2a,0x48,0x4a,0x88,0x3f,0xe8,0x07,0x08,0x0a, +0xc8,0x32,0x28,0x02,0x30,0x00,0x00,0x14,0x80,0x14,0x80,0x7f,0xf8,0x14,0xc8,0x1d, +0x58,0x0b,0x58,0x3e,0xe8,0x2b,0xf8,0x3e,0xe8,0x08,0xd8,0x7f,0x58,0x0a,0x48,0x08, +0x48,0x08,0x30,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01, +0x00,0x3f,0xf8,0x00,0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0xf0,0x00, +0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x79,0xfc,0x4a,0x00,0x4a,0x00,0x4d, +0xf0,0x48,0x20,0x48,0x40,0x48,0x80,0x79,0x00,0x02,0x04,0x02,0x04,0x01,0xfc,0x00, +0x00,0x02,0x00,0x02,0xf8,0x7f,0xa8,0x52,0x28,0x5f,0xa8,0x52,0x28,0x53,0xc8,0x5e, +0x58,0x50,0x80,0x5f,0xfc,0x70,0x80,0x01,0x40,0x06,0x30,0x18,0x0c,0x00,0x00,0x08, +0x40,0x08,0x40,0x08,0x40,0x7f,0xfc,0x08,0x40,0x1c,0x40,0x1b,0xf8,0x1a,0x00,0x29, +0xf8,0x29,0x08,0x49,0x08,0x09,0x08,0x09,0xf8,0x08,0x08,0x00,0x00,0x10,0x00,0x13, +0xf0,0x10,0xa0,0x7f,0xfc,0x10,0xc8,0x1b,0x50,0x34,0xc0,0x37,0xf8,0x32,0xa8,0x53, +0x38,0x52,0xe8,0x12,0xa8,0x12,0xe8,0x12,0x18,0x00,0x00,0x00,0x40,0x3c,0x40,0x00, +0x40,0x7f,0xfc,0x00,0x40,0x3c,0x40,0x01,0xf8,0x3c,0x00,0x01,0xf8,0x3d,0x08,0x25, +0x08,0x25,0x08,0x3d,0xf8,0x00,0x00,0x00,0x00,0x00,0x20,0x3f,0x20,0x08,0x20,0x08, +0x3c,0x08,0x20,0x10,0x20,0x1e,0x20,0x32,0xf8,0x52,0x88,0x12,0x88,0x12,0x88,0x1e, +0x88,0x00,0xf8,0x00,0x00,0x00,0x00,0x08,0x80,0x08,0x80,0x08,0x80,0x7f,0xfc,0x09, +0x20,0x1a,0x20,0x1c,0x20,0x1b,0xfc,0x2a,0x20,0x28,0x20,0x48,0x20,0x08,0x20,0x08, +0x20,0x08,0x20,0x00,0x00,0x00,0x30,0x1f,0xc0,0x01,0x00,0x7f,0xfc,0x03,0x80,0x0d, +0x60,0x71,0x1c,0x03,0x80,0x0d,0x60,0x79,0x3c,0x07,0xc0,0x0d,0x60,0x31,0x18,0x03, +0x00,0x00,0x00,0x08,0x00,0x08,0x78,0x08,0x48,0x3f,0x48,0x08,0x48,0x08,0x48,0x7f, +0xc8,0x08,0x48,0x0c,0x48,0x12,0x48,0x13,0x70,0x7d,0x40,0x01,0x40,0x00,0x40,0x00, +0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x42,0x04,0x47,0xe4,0x0c,0x40,0x32,0x80,0x03, +0x80,0x0c,0x70,0x7f,0xec,0x08,0x20,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00,0x00,0x01, +0x00,0x39,0x38,0x29,0x28,0x2f,0xe8,0x39,0x28,0x29,0x28,0x2f,0xe8,0x39,0x28,0x29, +0x28,0x2a,0xa8,0x2a,0xf8,0x2f,0x20,0x28,0x20,0x58,0x20,0x00,0x00,0x01,0x00,0x01, +0xf8,0x01,0x00,0x1f,0xfc,0x12,0xe8,0x1f,0x10,0x11,0xf0,0x10,0x00,0x17,0xf8,0x14, +0x00,0x27,0xf8,0x24,0x00,0x47,0xf8,0x00,0x00,0x00,0x00,0x02,0x10,0x21,0x10,0x11, +0x20,0x17,0xfc,0x00,0x40,0x02,0x48,0x02,0x48,0x72,0x48,0x13,0xf8,0x12,0x40,0x10, +0x40,0x18,0x80,0x27,0x00,0x41,0xfc,0x00,0x00,0x00,0x20,0x00,0xc0,0x0f,0x00,0x08, +0x00,0x08,0x00,0x0f,0xf8,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08, +0x40,0x7f,0xfc,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0xe0,0x04, +0x20,0x04,0x20,0x08,0x40,0x10,0x40,0x20,0xc0,0x01,0x20,0x02,0x20,0x04,0x10,0x18, +0x08,0x60,0x04,0x00,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x11,0x00,0x11,0xe0,0x3f, +0x20,0x51,0x20,0x11,0x20,0x11,0x20,0x11,0x20,0x12,0x24,0x12,0x24,0x14,0x24,0x18, +0x1c,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x10,0x40,0x17,0xfc,0x30,0x40,0x50, +0xe0,0x10,0xe0,0x11,0x50,0x11,0x50,0x12,0x48,0x14,0x44,0x10,0x40,0x10,0x40,0x00, +0x00,0x00,0x00,0x3f,0xe0,0x04,0x20,0x04,0x40,0x04,0x40,0x06,0xf0,0x0a,0x10,0x09, +0x10,0x09,0x20,0x08,0xa0,0x10,0x40,0x10,0xa0,0x23,0x10,0x4c,0x0c,0x00,0x00,0x00, +0x00,0x07,0xf0,0x79,0x10,0x49,0x20,0x49,0x20,0x49,0xf8,0x49,0x88,0x49,0x88,0x4a, +0x50,0x7a,0x50,0x02,0x20,0x04,0x50,0x09,0x88,0x16,0x04,0x00,0x00,0x01,0x00,0x01, +0x00,0x7f,0xfc,0x40,0x04,0x4f,0xe4,0x08,0x20,0x08,0x20,0x0f,0xe0,0x01,0x00,0x02, +0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x1f,0xf0,0x00, +0x10,0x00,0x10,0x1f,0xf0,0x10,0x00,0x10,0x00,0x1f,0xf8,0x00,0x08,0x00,0x08,0x00, +0x08,0x00,0x08,0x00,0x10,0x00,0xe0,0x00,0x00,0x02,0x00,0x07,0xc0,0x08,0x80,0x3f, +0xf0,0x00,0x10,0x0f,0xf0,0x00,0x10,0x1f,0xf0,0x01,0x00,0x14,0x90,0x14,0x88,0x24, +0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x08,0x40,0x0a,0x40,0x09,0x40,0x7f,0x7c,0x08, +0x88,0x4a,0x88,0x2b,0x50,0x2c,0x50,0x1c,0x30,0x1a,0x20,0x2a,0x30,0x48,0x50,0x08, +0x88,0x1b,0x04,0x00,0x00,0x08,0x00,0x09,0xfc,0x08,0x40,0x7f,0x40,0x08,0x40,0x1c, +0xf8,0x1a,0x08,0x1a,0x08,0x29,0x08,0x28,0x08,0x48,0x08,0x08,0x08,0x08,0x08,0x08, +0x30,0x00,0x00,0x01,0x20,0x01,0x10,0x01,0x10,0x7f,0xfc,0x01,0x00,0x01,0x88,0x31, +0x88,0x09,0x50,0x03,0x60,0x05,0x20,0x19,0x10,0x61,0x08,0x01,0x04,0x03,0x00,0x00, +0x00,0x20,0x00,0x17,0xf0,0x12,0x10,0x42,0x20,0x22,0x20,0x23,0x78,0x03,0x08,0x12, +0x90,0x12,0x90,0x12,0x60,0x24,0x20,0x24,0x50,0x48,0x88,0x53,0x04,0x00,0x00,0x10, +0x40,0x08,0x40,0x08,0x40,0x47,0xfc,0x20,0x10,0x22,0x10,0x02,0x10,0x09,0x10,0x09, +0x10,0x11,0x20,0x11,0x20,0x21,0x20,0x27,0xfc,0x20,0x00,0x00,0x00,0x01,0x00,0x03, +0xc0,0x0c,0x80,0x31,0x80,0x02,0x40,0x0d,0x30,0x71,0x0c,0x01,0x10,0x11,0x10,0x12, +0xa0,0x22,0x40,0x04,0x20,0x18,0x10,0x60,0x0c,0x00,0x00,0x00,0x50,0x00,0x48,0x7c, +0x48,0x13,0xfc,0x10,0x40,0x12,0x48,0x7d,0x68,0x11,0x70,0x10,0x50,0x14,0xd0,0x19, +0x48,0x66,0x44,0x00,0x40,0x00,0xc0,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x44, +0x84,0x44,0x84,0x04,0x88,0x09,0x78,0x11,0x00,0x3f,0xc0,0x02,0x40,0x02,0x40,0x04, +0x44,0x08,0x44,0x30,0x3c,0x00,0x00,0x01,0x00,0x7f,0xfc,0x44,0x84,0x48,0x94,0x14, +0x70,0x1e,0xf0,0x12,0x10,0x1e,0xf0,0x1e,0x80,0x12,0xf8,0x7e,0x08,0x06,0x08,0x1a, +0x08,0x66,0x30,0x00,0x00,0x08,0x40,0x08,0x40,0x1f,0xfc,0x14,0xa0,0x23,0x10,0x5f, +0xe0,0x04,0x20,0x04,0x40,0x06,0xf0,0x0a,0x10,0x09,0x20,0x10,0xc0,0x23,0x60,0x4c, +0x1c,0x00,0x00,0x08,0x00,0x08,0xf8,0x0a,0x88,0x72,0x90,0x14,0x90,0x0c,0xb8,0x12, +0xc8,0x7e,0xc8,0x08,0xa8,0x2c,0xb0,0x2a,0x90,0x2b,0x30,0x49,0x48,0x0a,0x84,0x00, +0x00,0x08,0x10,0x08,0x90,0x0a,0x90,0x72,0x90,0x14,0x90,0x0c,0x90,0x12,0x90,0x7d, +0x90,0x08,0x9c,0x2c,0xf0,0x2b,0x90,0x2a,0x10,0x48,0x10,0x08,0x10,0x00,0x00,0x08, +0x20,0x08,0x20,0x0a,0x50,0x72,0x50,0x14,0x88,0x0d,0xfc,0x12,0x00,0x7e,0x00,0x08, +0xf8,0x2c,0x88,0x2a,0x88,0x2a,0x88,0x48,0xf8,0x08,0x00,0x00,0x00,0x20,0x00,0x27, +0xf0,0x24,0x10,0x24,0x10,0x24,0x10,0x24,0x10,0x27,0xf0,0x24,0x10,0x24,0x10,0x24, +0x10,0x24,0x10,0x24,0x10,0x27,0xf0,0x20,0x00,0x00,0x00,0x01,0x00,0x09,0x00,0x09, +0x00,0x09,0x00,0x1f,0xf0,0x11,0x00,0x21,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x1f, +0xf0,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x02,0x00,0x02,0x40,0x04,0x20,0x08, +0xf0,0x3f,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x1f,0xf8,0x10,0x08,0x1f,0xf8,0x10, +0x80,0x10,0x80,0x1f,0xfc,0x10,0x80,0x10,0x80,0x17,0xf0,0x24,0x10,0x24,0x10,0x47, +0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x20,0x00,0x20,0x00,0x3f,0xe0,0x20, +0x20,0x20,0x20,0x20,0x20,0x3f,0xe0,0x20,0x00,0x20,0x00,0x20,0x00,0x3f,0xfc,0x00, +0x00,0x00,0x00,0x08,0x00,0x09,0xfc,0x09,0x00,0x7f,0x00,0x09,0xf8,0x09,0x08,0x09, +0x08,0x0f,0x08,0x79,0xf8,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0xfc,0x18,0x00,0x00, +0x00,0x10,0x00,0x12,0x70,0x12,0x50,0x7a,0x50,0x17,0x50,0x15,0x50,0x15,0x50,0x1b, +0x50,0x72,0x90,0x12,0x94,0x15,0x14,0x19,0x0c,0x10,0xc0,0x30,0x3c,0x00,0x00,0x12, +0x10,0x09,0x10,0x09,0x20,0x7f,0xfc,0x04,0x40,0x08,0x60,0x1f,0x98,0x61,0x04,0x1f, +0xf0,0x01,0x00,0x3f,0xf8,0x01,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x10,0x00,0x0b, +0xf8,0x4a,0x00,0x23,0xf0,0x22,0x10,0x0b,0xf0,0x0a,0x00,0x13,0xf8,0x21,0x00,0x7f, +0xfc,0x03,0x80,0x0d,0x60,0x71,0x1c,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0xf8,0x01, +0x00,0x1f,0xfc,0x11,0xe8,0x1f,0x08,0x11,0xf8,0x11,0x40,0x19,0x48,0x15,0x48,0x25, +0x50,0x21,0x40,0x5f,0xfc,0x00,0x00,0x00,0x00,0x00,0x80,0x3c,0x80,0x00,0x80,0x7f, +0xf8,0x01,0x40,0x3e,0x40,0x00,0x40,0x3f,0xfc,0x00,0x40,0x3c,0x40,0x24,0x40,0x24, +0x40,0x3c,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x3e,0xfc,0x22,0x80,0x22,0x80,0x3e, +0xf8,0x08,0x88,0x28,0x88,0x2e,0x88,0x28,0xf8,0x28,0x80,0x28,0x80,0x2e,0x80,0x38, +0xfc,0x60,0x00,0x00,0x00,0x08,0x00,0x09,0xf8,0x15,0x08,0x13,0x08,0x23,0xf8,0x5d, +0x20,0x09,0xfc,0x7f,0x20,0x09,0x20,0x2b,0xf8,0x1d,0x88,0x19,0x88,0x0e,0xf8,0x70, +0x00,0x00,0x00,0x10,0x80,0x08,0x80,0x09,0xf0,0x41,0x20,0x22,0x40,0x27,0xf8,0x02, +0x48,0x13,0xf8,0x12,0x48,0x13,0xf8,0x20,0x00,0x25,0x48,0x44,0xa4,0x48,0xa4,0x00, +0x00,0x12,0x00,0x13,0xf8,0x2d,0x28,0x4f,0xe8,0x11,0x28,0x35,0xe8,0x55,0x28,0x15, +0xf8,0x1e,0x20,0x1f,0xf0,0x00,0x00,0x7f,0xfc,0x19,0x30,0x63,0x0c,0x00,0x00,0x04, +0x00,0x07,0xc0,0x08,0x80,0x11,0x00,0x3f,0xf0,0x51,0x10,0x1f,0xf0,0x11,0x10,0x11, +0x10,0x1f,0xf0,0x00,0x00,0x24,0x88,0x22,0x44,0x42,0x44,0x00,0x00,0x01,0x00,0x7f, +0xfc,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x00,0x00,0x1f,0xe0,0x00,0x40,0x01, +0x80,0x01,0x00,0x01,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x7f,0xfc,0x00, +0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x00,0x00,0x1f,0xe0,0x00,0x40,0x01,0x80,0x7f, +0xfc,0x01,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00, +0x00,0x0f,0xe0,0x08,0x20,0x08,0x20,0x0f,0xe0,0x01,0x00,0x09,0x20,0x09,0x10,0x11, +0x08,0x21,0x08,0x03,0x00,0x00,0x00,0x09,0x20,0x09,0x20,0x09,0x20,0x11,0x20,0x17, +0xf8,0x31,0x20,0x51,0x20,0x11,0x20,0x1f,0xfc,0x10,0x00,0x11,0x20,0x11,0x10,0x12, +0x08,0x14,0x08,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x17,0xfc,0x12,0x48,0x31, +0x48,0x51,0x50,0x1f,0xfc,0x10,0x40,0x10,0xa0,0x10,0xa0,0x11,0x10,0x12,0x08,0x14, +0x04,0x00,0x00,0x08,0x30,0x0b,0xc0,0x08,0x80,0x1f,0xfc,0x11,0x20,0x33,0xf0,0x55, +0x28,0x19,0xe4,0x17,0xf8,0x14,0x08,0x15,0xe8,0x15,0x28,0x15,0xe8,0x14,0x18,0x00, +0x00,0x00,0x80,0x20,0x90,0x2d,0x10,0x23,0x10,0x22,0x90,0x24,0x90,0x28,0x10,0x3f, +0xf0,0x04,0x80,0x04,0x80,0x08,0x80,0x08,0x84,0x10,0x84,0x60,0x7c,0x00,0x00,0x08, +0x20,0x08,0x20,0x3f,0xf8,0x14,0x50,0x14,0x50,0x7f,0xfc,0x00,0x00,0x3e,0xf8,0x22, +0x88,0x3e,0xf8,0x14,0x50,0x15,0x50,0x26,0x94,0x45,0x0c,0x00,0x00,0x08,0x40,0x08, +0x40,0x08,0x40,0x08,0x40,0x7f,0xf8,0x08,0x40,0x08,0x40,0x08,0x40,0x7f,0xfc,0x00, +0x00,0x08,0x40,0x08,0x20,0x10,0x10,0x20,0x10,0x00,0x00,0x00,0x40,0x00,0x40,0x40, +0x48,0x58,0x88,0x46,0x88,0x41,0x08,0x41,0x88,0x42,0x48,0x44,0x28,0x48,0x28,0x50, +0x08,0x40,0x08,0x7f,0xf8,0x00,0x00,0x00,0x00,0x10,0x40,0x10,0x40,0x13,0xf8,0x10, +0x48,0x7c,0x88,0x11,0x08,0x12,0x30,0x12,0x10,0x1f,0xfc,0x12,0x94,0x12,0x94,0x14, +0xa4,0x14,0xa4,0x19,0xcc,0x00,0x00,0x00,0x00,0x3f,0xfc,0x20,0x00,0x2f,0xf8,0x20, +0x80,0x20,0x80,0x27,0xf0,0x20,0x80,0x20,0x80,0x20,0x80,0x2f,0xf8,0x20,0x00,0x3f, +0xfc,0x00,0x00,0x00,0x00,0x08,0x00,0x33,0xb8,0x22,0xa8,0x2a,0xa8,0x2b,0xa8,0x2a, +0xa8,0x2a,0xa8,0x2b,0xa8,0x2a,0x28,0x3b,0x28,0x6a,0xa8,0x13,0xf0,0x16,0x20,0x20, +0x20,0x00,0x00,0x00,0x10,0x00,0x10,0x79,0x10,0x49,0x10,0x49,0x10,0x49,0x10,0x49, +0x10,0x49,0x10,0x49,0x1c,0x49,0xf0,0x7f,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00, +0x00,0x00,0x60,0x0f,0x80,0x01,0x00,0x7f,0xfc,0x04,0x40,0x1f,0xf0,0x64,0x4c,0x07, +0xc0,0x3f,0xf8,0x20,0x08,0x27,0xc8,0x24,0x48,0x27,0xc8,0x20,0x18,0x00,0x00,0x00, +0x40,0x13,0xf8,0x11,0x20,0x10,0xa0,0x7f,0xfc,0x10,0x00,0x11,0xf0,0x11,0x10,0x15, +0xf0,0x19,0x10,0x61,0xf0,0x00,0xa0,0x03,0x24,0x0c,0x1c,0x00,0x00,0x00,0x40,0x10, +0x40,0x13,0xf8,0x10,0x40,0x56,0x48,0x55,0x48,0x55,0x50,0x57,0xfc,0x54,0x40,0x54, +0xa0,0x7c,0x90,0x01,0x10,0x02,0x08,0x0c,0x04,0x00,0x00,0x00,0x40,0x78,0x50,0x08, +0x88,0x0f,0xfc,0x78,0x44,0x43,0xf8,0x42,0x48,0x7a,0x48,0x0b,0xf8,0x0a,0x50,0x08, +0x48,0x08,0x7c,0x17,0xc4,0x60,0x04,0x00,0x00,0x00,0x00,0x7b,0xf8,0x09,0x50,0x09, +0xf0,0x79,0x50,0x41,0xf0,0x40,0x00,0x7b,0xf8,0x09,0x50,0x09,0xf0,0x09,0x50,0x09, +0xf0,0x17,0xfc,0x60,0x00,0x00,0x00,0x10,0x40,0x10,0x40,0x10,0x40,0x13,0xf8,0x38, +0x40,0x34,0x40,0x34,0x40,0x57,0xfc,0x10,0x40,0x10,0x90,0x10,0x88,0x11,0x38,0x17, +0xc4,0x10,0x04,0x00,0x00,0x00,0x00,0x7f,0xf0,0x09,0x10,0x09,0x10,0x09,0x90,0x0f, +0x54,0x72,0x54,0x04,0x0c,0x01,0x00,0x14,0x90,0x14,0x88,0x24,0x24,0x44,0x24,0x03, +0xe0,0x00,0x00,0x04,0x40,0x04,0x40,0x3f,0xf8,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04, +0x40,0x0a,0x20,0x12,0x10,0x62,0x0c,0x12,0x90,0x12,0x48,0x22,0x48,0x06,0x00,0x00, +0x00,0x10,0x40,0x10,0x40,0x17,0xfc,0x78,0x40,0x12,0x48,0x11,0x48,0x11,0x50,0x1f, +0xfc,0x70,0x40,0x10,0xa0,0x10,0x90,0x11,0x10,0x12,0x08,0x34,0x04,0x00,0x00,0x08, +0x40,0x09,0x40,0x3f,0x40,0x0a,0x40,0x0a,0xfc,0x7f,0x88,0x09,0x88,0x1f,0x48,0x22, +0x50,0x47,0x30,0x3c,0x20,0x04,0x50,0x05,0x88,0x0e,0x04,0x00,0x00,0x10,0x18,0x13, +0xe0,0x10,0x40,0x7f,0xfc,0x10,0xa0,0x19,0xf0,0x36,0xa8,0x34,0xe4,0x33,0xf8,0x52, +0x08,0x52,0xe8,0x12,0xa8,0x12,0xe8,0x12,0x18,0x00,0x00,0x10,0x00,0x0b,0xf8,0x0a, +0x08,0x42,0x08,0x22,0x08,0x23,0xf8,0x00,0xa0,0x10,0xa0,0x10,0xa0,0x11,0x20,0x21, +0x20,0x22,0x24,0x44,0x24,0x48,0x1c,0x00,0x00,0x08,0x00,0x4f,0xfc,0x30,0x40,0x10, +0x40,0x30,0x40,0x48,0x40,0x0b,0xf8,0x18,0x40,0x28,0x40,0x48,0x40,0x08,0x40,0x08, +0x40,0x3f,0xfc,0x10,0x00,0x00,0x00,0x04,0x40,0x44,0x40,0x28,0x40,0x17,0xfc,0x32, +0x48,0x49,0x48,0x09,0x50,0x1f,0xfc,0x28,0x40,0x48,0xa0,0x08,0xa0,0x09,0x10,0x32, +0x08,0x14,0x04,0x00,0x00,0x10,0x18,0x13,0xe0,0x10,0x40,0x3f,0xfc,0x28,0xa0,0x49, +0xf0,0x0a,0xa8,0x7e,0xe4,0x0b,0xf8,0x0e,0x08,0x16,0xe8,0x12,0xa8,0x22,0xe8,0x42, +0x18,0x00,0x00,0x00,0x80,0x3c,0x80,0x24,0x80,0x25,0xfc,0x25,0x24,0x3e,0x24,0x25, +0xd4,0x25,0x74,0x3d,0xb4,0x25,0x14,0x25,0xf4,0x25,0x14,0x24,0x04,0x4c,0x18,0x00, +0x00,0x02,0x00,0x0f,0xc0,0x02,0x40,0x0c,0xc0,0x7f,0xf8,0x12,0x48,0x26,0x98,0x4f, +0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x08,0x60,0x00,0x00,0x08, +0x00,0x37,0xf8,0x24,0x48,0x27,0xc8,0x3c,0x78,0x27,0xc8,0x3e,0xf8,0x27,0xc8,0x24, +0x48,0x7f,0xfc,0x00,0x00,0x04,0x60,0x18,0x10,0x60,0x08,0x00,0x00,0x04,0x40,0x7f, +0xfc,0x04,0x60,0x1f,0xc0,0x01,0x00,0x3f,0xf8,0x06,0xc0,0x1f,0xf0,0x64,0x4c,0x1f, +0xf0,0x17,0xd0,0x14,0x50,0x17,0xd0,0x10,0x30,0x00,0x00,0x10,0x00,0x13,0xb8,0x16, +0xa8,0x66,0xa8,0x2b,0xb0,0x1a,0xb0,0x12,0xa8,0x1b,0xa8,0x2b,0x24,0x7a,0xa4,0x12, +0xe4,0x13,0x78,0x2c,0x20,0x40,0x20,0x00,0x00,0x08,0x20,0x09,0xf8,0x14,0x90,0x13, +0xfc,0x22,0x00,0x5c,0xf8,0x08,0x88,0x7e,0xf8,0x08,0x88,0x2a,0xf8,0x1c,0x50,0x18, +0x54,0x0e,0x94,0x73,0x0c,0x00,0x00,0x13,0xb8,0x6a,0xa8,0x2b,0xb8,0x1f,0xa4,0x6a, +0xf8,0x13,0x60,0x21,0x20,0x3f,0xf8,0x04,0x40,0x7f,0xfc,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x00,0x00,0x13,0xb8,0x5a,0xa8,0x2b,0xb0,0x16,0xa8,0x7f,0xa4,0x0b, +0x38,0x33,0xa0,0x05,0x40,0x1f,0xf0,0x64,0x4c,0x07,0xc0,0x04,0xb0,0x07,0x60,0x38, +0x18,0x00,0x00,0x14,0x40,0x7f,0x40,0x14,0xfc,0x3f,0x48,0x7a,0x30,0x2a,0xcc,0x3f, +0xf0,0x08,0x80,0x0f,0xe0,0x08,0x80,0x0f,0xf8,0x2a,0x48,0x25,0x28,0x40,0x30,0x00, +0x00,0x08,0x40,0x08,0x80,0x0b,0x78,0x12,0x48,0x12,0x48,0x32,0x48,0x52,0x48,0x12, +0x48,0x12,0x48,0x13,0xc8,0x1e,0x70,0x10,0x40,0x10,0x40,0x10,0x40,0x00,0x00,0x08, +0x00,0x09,0xfc,0x4e,0x08,0x28,0xb0,0x27,0x90,0x04,0x7c,0x17,0x98,0x1a,0x50,0x22, +0x5c,0x3f,0xd0,0x46,0x50,0x45,0x70,0x48,0x90,0x11,0x0c,0x00,0x00,0x01,0x00,0x01, +0x00,0x3f,0xf8,0x01,0x00,0x09,0x20,0x7f,0xfc,0x08,0x20,0x08,0x20,0x7f,0xfc,0x04, +0x80,0x04,0x80,0x08,0x84,0x10,0x84,0x60,0x7c,0x00,0x00,0x00,0x40,0x00,0x40,0x7b, +0xf8,0x48,0x40,0x49,0x50,0x4f,0xfc,0x79,0x10,0x49,0x10,0x4f,0xfc,0x48,0xa0,0x48, +0xa0,0x79,0x24,0x02,0x24,0x0c,0x1c,0x00,0x00,0x02,0x80,0x12,0x90,0x0a,0xa0,0x7f, +0xfc,0x04,0x40,0x3f,0xf8,0x01,0x00,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x03,0x80,0x0d, +0x60,0x71,0x1c,0x01,0x00,0x00,0x00,0x00,0x00,0x1f,0xf8,0x10,0x08,0x10,0x08,0x1f, +0xf8,0x10,0x00,0x1f,0xfc,0x10,0x04,0x13,0xe4,0x12,0x24,0x12,0x24,0x23,0xe4,0x20, +0x04,0x40,0x18,0x00,0x00,0x04,0x40,0x04,0x40,0x04,0x40,0x3f,0xf8,0x24,0x48,0x24, +0x48,0x24,0x48,0x3f,0xf8,0x24,0x48,0x24,0x48,0x24,0x48,0x24,0x48,0x3f,0xf8,0x00, +0x00,0x00,0x00,0x10,0x00,0x17,0xfc,0x10,0x80,0x7c,0x80,0x11,0xdc,0x11,0x24,0x3b, +0xb4,0x36,0xa8,0x36,0xa8,0x53,0xb4,0x52,0x24,0x10,0x40,0x17,0xfc,0x10,0x00,0x00, +0x00,0x00,0x00,0x3f,0xf8,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x1f,0xf0,0x01, +0x00,0x01,0x20,0x01,0x10,0x01,0x10,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x10, +0x00,0x13,0xf8,0x12,0x08,0x7e,0x08,0x13,0xf8,0x12,0x08,0x3a,0xe8,0x36,0xa8,0x36, +0xa8,0x52,0xa8,0x52,0xe8,0x12,0x08,0x12,0x08,0x12,0x18,0x00,0x00,0x08,0x08,0x4a, +0x10,0x2a,0xe0,0x2c,0x20,0x08,0x20,0x7e,0x20,0x09,0xfc,0x1c,0x20,0x1a,0x20,0x2a, +0x20,0x48,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x00,0x00,0x09,0x10,0x09,0x10,0x0f, +0xfc,0x11,0x10,0x13,0xf8,0x32,0x48,0x53,0xf8,0x10,0x40,0x13,0xf8,0x10,0x40,0x13, +0xf8,0x10,0x40,0x17,0xfc,0x10,0x00,0x00,0x00,0x14,0x40,0x7f,0x40,0x14,0x40,0x3e, +0x40,0x2b,0xf8,0x2a,0x48,0x3e,0x48,0x08,0x48,0x3e,0x48,0x08,0x48,0x3e,0x48,0x08, +0x88,0x0e,0x88,0x79,0x30,0x00,0x00,0x01,0x00,0x11,0x00,0x11,0x00,0x11,0xf8,0x7e, +0x08,0x13,0x08,0x14,0x88,0x10,0x88,0x10,0x28,0x14,0xc8,0x1b,0x08,0x60,0x08,0x00, +0x08,0x00,0x30,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x21,0x08,0x21, +0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x30,0x01,0x00,0x01, +0x00,0x00,0x00,0x08,0x20,0x08,0x40,0x14,0xf8,0x12,0x88,0x22,0xf8,0x5c,0x88,0x08, +0xf8,0x7e,0x20,0x09,0xfc,0x2b,0x24,0x1d,0x24,0x19,0x24,0x0f,0x38,0x70,0x20,0x00, +0x00,0x00,0x10,0x00,0x60,0x0f,0x80,0x08,0x00,0x08,0x00,0x0f,0xfc,0x08,0x40,0x08, +0x40,0x08,0x40,0x10,0x40,0x10,0x40,0x20,0x40,0x40,0x40,0x00,0x40,0x00,0x00,0x01, +0x40,0x02,0x40,0x1c,0x40,0x10,0x40,0x10,0xfc,0x1f,0xa8,0x15,0x30,0x14,0x20,0x14, +0x20,0x14,0x60,0x24,0x50,0x24,0x90,0x45,0x08,0x06,0x04,0x00,0x00,0x08,0x40,0x08, +0x40,0x14,0x40,0x12,0x40,0x22,0xfc,0x5c,0xa8,0x09,0x30,0x7e,0x20,0x08,0x20,0x2a, +0x60,0x1c,0x50,0x18,0x90,0x0f,0x08,0x72,0x04,0x00,0x00,0x00,0x00,0x3e,0xf8,0x08, +0x20,0x3e,0xf8,0x08,0x20,0x0f,0xfc,0x72,0x80,0x04,0x40,0x1f,0xf0,0x60,0x0c,0x0f, +0xe0,0x00,0x40,0x00,0x80,0x01,0x00,0x00,0x00,0x08,0x20,0x08,0x20,0x7f,0xfc,0x1c, +0x60,0x1a,0x70,0x2a,0xa8,0x49,0x24,0x0f,0xe0,0x00,0x00,0x7f,0xfc,0x09,0x20,0x11, +0x10,0x61,0x08,0x03,0x00,0x00,0x00,0x01,0x00,0x02,0x80,0x05,0x40,0x1f,0xf0,0x6a, +0xac,0x09,0xa0,0x0e,0x60,0x0f,0xe0,0x01,0x00,0x1f,0xf0,0x12,0x90,0x1f,0xd0,0x10, +0x50,0x10,0x30,0x00,0x00,0x08,0x40,0x08,0x40,0x1f,0xfc,0x14,0xa0,0x23,0x10,0x40, +0x40,0x1e,0x40,0x13,0xf8,0x1e,0x48,0x12,0x48,0x1e,0x48,0x22,0x88,0x22,0x88,0x47, +0x30,0x00,0x00,0x00,0x00,0x3f,0xf8,0x24,0x88,0x3e,0x50,0x22,0x20,0x3e,0xd0,0x3f, +0x0c,0x21,0x20,0x0e,0x60,0x01,0x98,0x7f,0xe4,0x0d,0x30,0x31,0x08,0x01,0x00,0x00, +0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x04,0x70,0x0f,0xc0,0x08,0x00,0x0f, +0xfc,0x08,0x40,0x08,0x40,0x10,0x40,0x10,0x40,0x20,0x40,0x40,0x40,0x00,0x00,0x04, +0x40,0x7f,0xfc,0x04,0x40,0x3f,0xf8,0x20,0x68,0x2f,0x88,0x21,0x08,0x3f,0xf8,0x23, +0x88,0x25,0x48,0x39,0x28,0x21,0x08,0x3f,0xf8,0x00,0x00,0x00,0x00,0x10,0x40,0x10, +0x40,0x10,0x60,0x7c,0xa0,0x08,0x90,0x0b,0xf8,0x12,0x04,0x3c,0x00,0x55,0xf8,0x12, +0x10,0x10,0x10,0x10,0x20,0x10,0x20,0x10,0x20,0x00,0x00,0x10,0x90,0x10,0x90,0x13, +0xfc,0x7c,0xd0,0x09,0xb8,0x0a,0xd4,0x14,0x90,0x19,0xf8,0x34,0x00,0x57,0xfc,0x11, +0x28,0x11,0x24,0x12,0x24,0x10,0x60,0x00,0x00,0x00,0x90,0x3c,0x90,0x03,0xfc,0x7c, +0x90,0x03,0xf8,0x3e,0x48,0x03,0xf8,0x3c,0x40,0x03,0xf8,0x3c,0x40,0x27,0xf8,0x24, +0x40,0x3f,0xfc,0x00,0x00,0x00,0x00,0x00,0x10,0x20,0x60,0x13,0x80,0x12,0x00,0x02, +0x00,0x03,0xfc,0x02,0x20,0x72,0x20,0x12,0x20,0x14,0x20,0x14,0x20,0x18,0x20,0x26, +0x00,0x41,0xfc,0x00,0x00,0x01,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x18,0x30,0x67, +0xcc,0x01,0x00,0x3f,0xf8,0x01,0x00,0x09,0x20,0x05,0x20,0x05,0x40,0x3f,0xf8,0x00, +0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x78,0xa0,0x48,0xa0,0x49,0x10,0x4b,0xf8,0x4c, +0x04,0x48,0x00,0x4b,0xf8,0x48,0x08,0x78,0x10,0x00,0x10,0x00,0x20,0x00,0x20,0x00, +0x00,0x08,0x00,0x08,0xf8,0x14,0x88,0x12,0x88,0x22,0xf8,0x5c,0x88,0x08,0x88,0x7e, +0xf8,0x08,0xa4,0x2a,0xa8,0x1c,0x90,0x18,0xb0,0x0e,0xc8,0x73,0x04,0x00,0x00,0x02, +0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x7f,0xc0,0x02,0x40,0x02,0x40,0x02,0x40,0x04, +0x40,0x04,0x40,0x08,0x44,0x10,0x44,0x20,0x44,0x40,0x3c,0x00,0x00,0x08,0x00,0x0b, +0xf0,0x0a,0x10,0x12,0x10,0x13,0xf0,0x32,0x10,0x53,0xf0,0x12,0x10,0x13,0xf0,0x10, +0x00,0x1f,0xfc,0x11,0x20,0x12,0x10,0x1c,0x08,0x00,0x00,0x08,0x00,0x08,0x00,0x08, +0x00,0x1f,0xf8,0x10,0x08,0x2f,0x88,0x48,0x88,0x08,0x88,0x08,0x88,0x08,0x88,0x0f, +0x88,0x00,0x08,0x00,0x08,0x00,0x30,0x00,0x00,0x00,0x00,0x3f,0xf8,0x20,0x20,0x20, +0x20,0x20,0x40,0x2c,0x40,0x23,0x80,0x20,0x80,0x21,0x40,0x22,0x20,0x24,0x20,0x28, +0x00,0x3f,0xfc,0x00,0x00,0x00,0x00,0x08,0x80,0x48,0x80,0x30,0x80,0x11,0xf8,0x31, +0x08,0x4a,0x08,0x0d,0xe8,0x19,0x28,0x29,0x28,0x49,0x28,0x09,0xe8,0x08,0x08,0x30, +0x08,0x10,0x30,0x00,0x00,0x00,0x80,0x00,0x80,0x7c,0x80,0x10,0xf0,0x11,0x10,0x11, +0x10,0x7e,0x20,0x10,0x20,0x10,0x60,0x14,0x60,0x18,0x90,0x61,0x10,0x02,0x08,0x0c, +0x04,0x00,0x00,0x10,0x00,0x10,0xfc,0x10,0x80,0x3f,0x80,0x28,0xf8,0x48,0x88,0x08, +0x88,0x7f,0x88,0x08,0xf8,0x0c,0x80,0x14,0x80,0x12,0x80,0x22,0xfc,0x40,0x00,0x00, +0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x05,0x40,0x01,0x00,0x7f,0xfc,0x01, +0x00,0x01,0x00,0x0f,0xe0,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x08, +0x00,0x10,0xfc,0x3e,0x80,0x22,0x88,0x3e,0x88,0x22,0xc8,0x3e,0xb0,0x23,0x90,0x3e, +0x90,0x66,0xa8,0x0a,0xc8,0x12,0x80,0x62,0xfc,0x06,0x00,0x00,0x00,0x00,0x00,0x3f, +0xfc,0x28,0x88,0x3e,0x88,0x28,0xc8,0x3e,0xb0,0x28,0x90,0x3e,0x90,0x02,0xa8,0x2a, +0xa8,0x2a,0xc0,0x2a,0x80,0x42,0xfc,0x0c,0x00,0x00,0x00,0x00,0x08,0x3f,0x10,0x28, +0xe0,0x3e,0x80,0x28,0x80,0x3e,0xfc,0x28,0x90,0x3e,0x90,0x02,0x90,0x2a,0x90,0x2a, +0x90,0x2a,0x90,0x43,0xfc,0x0c,0x00,0x00,0x00,0x00,0x40,0x3f,0x40,0x28,0x40,0x3e, +0xf8,0x28,0x88,0x3f,0xe8,0x28,0xa8,0x3e,0xa8,0x02,0xa8,0x2a,0xe8,0x2a,0x08,0x2a, +0x08,0x42,0x08,0x0c,0x30,0x00,0x00,0x00,0x00,0x0f,0xe0,0x08,0x20,0x08,0x20,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x00,0x00,0x7f,0xfc,0x04,0x60,0x18, +0x10,0x60,0x08,0x00,0x00,0x00,0x00,0x0f,0xe0,0x09,0x20,0x0f,0xe0,0x09,0x20,0x0f, +0xe0,0x3f,0xf8,0x21,0x48,0x2f,0xe8,0x21,0x38,0x14,0x88,0x24,0xa4,0x44,0x24,0x03, +0xe0,0x00,0x00,0x01,0x00,0x01,0xf0,0x1f,0xfc,0x11,0xe8,0x1f,0x08,0x10,0xf8,0x15, +0xf0,0x15,0x10,0x15,0xf0,0x17,0xe0,0x20,0x20,0x3f,0xfc,0x46,0x30,0x18,0x0c,0x00, +0x00,0x00,0x40,0x00,0x40,0x78,0xa0,0x49,0xf0,0x4e,0x0c,0x49,0xf0,0x49,0x10,0x49, +0xf0,0x49,0x10,0x49,0xf8,0x79,0x48,0x01,0x30,0x01,0xd8,0x0f,0x04,0x00,0x00,0x01, +0x00,0x01,0x00,0x7f,0xfc,0x44,0x84,0x44,0x84,0x08,0x88,0x10,0x78,0x00,0x00,0x1f, +0xf0,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x08,0x00,0x0b, +0xf0,0x0a,0x90,0x13,0xf0,0x12,0x90,0x33,0xf0,0x50,0x80,0x17,0xf8,0x14,0xa8,0x14, +0xf8,0x17,0x18,0x14,0x08,0x14,0x08,0x14,0x18,0x00,0x00,0x01,0x00,0x7f,0xfc,0x40, +0x04,0x4f,0xe4,0x09,0x20,0x0f,0xe0,0x09,0x20,0x0f,0xe0,0x01,0x00,0x3f,0xf8,0x21, +0x48,0x2f,0xe8,0x20,0x28,0x20,0x18,0x00,0x00,0x00,0x00,0x23,0xf0,0x12,0x90,0x13, +0xf0,0x02,0x90,0x03,0xf0,0x70,0x80,0x17,0xf8,0x14,0xa8,0x14,0xf8,0x17,0x08,0x1c, +0x18,0x26,0x00,0x41,0xfc,0x00,0x00,0x00,0x00,0x3d,0xf8,0x25,0x48,0x29,0x48,0x31, +0xf8,0x29,0x48,0x25,0xf8,0x24,0x40,0x27,0xfc,0x26,0x54,0x3a,0x7c,0x23,0x8c,0x22, +0x04,0x22,0x0c,0x00,0x00,0x01,0x00,0x01,0x00,0x1f,0xf0,0x11,0x10,0x11,0x10,0x1f, +0xf0,0x01,0x00,0x3f,0xf8,0x21,0x08,0x21,0x08,0x3f,0xf8,0x01,0x00,0x01,0x00,0x01, +0x00,0x00,0x00,0x12,0x20,0x13,0xfc,0x13,0x30,0x7c,0xc8,0x10,0x00,0x1b,0xb8,0x36, +0xa8,0x37,0xa8,0x32,0xa8,0x53,0xa8,0x53,0x28,0x12,0xb0,0x13,0xe0,0x1c,0x20,0x00, +0x00,0x08,0x08,0x08,0x88,0x14,0xa8,0x12,0xa8,0x22,0xa8,0x5c,0xa8,0x08,0xa8,0x7e, +0xa8,0x08,0xa8,0x2a,0xa8,0x1d,0x28,0x19,0x28,0x0e,0x08,0x74,0x08,0x00,0x00,0x00, +0x00,0x1f,0xf8,0x10,0x08,0x1f,0xf8,0x14,0x90,0x12,0xa0,0x17,0xf0,0x14,0x10,0x17, +0xf0,0x14,0x10,0x27,0xf0,0x24,0x10,0x44,0x10,0x04,0x30,0x00,0x00,0x00,0x00,0x1f, +0xf8,0x10,0x08,0x1f,0xf8,0x10,0x80,0x14,0x90,0x14,0x90,0x17,0xf0,0x10,0x80,0x18, +0x88,0x28,0x88,0x28,0x88,0x4f,0xf8,0x08,0x00,0x00,0x00,0x10,0x00,0x13,0xfc,0x12, +0x04,0x7f,0xfc,0x12,0x24,0x12,0xa8,0x12,0xa8,0x1e,0xf8,0x72,0xa8,0x13,0x24,0x15, +0x24,0x15,0x24,0x19,0xfc,0x30,0x00,0x00,0x00,0x01,0x00,0x7f,0xfc,0x46,0x84,0x58, +0x7c,0x1f,0xf8,0x10,0x08,0x1f,0xf8,0x14,0x90,0x14,0x90,0x17,0xf0,0x28,0x88,0x28, +0x88,0x4f,0xf8,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x08,0x3f,0x90,0x05,0x60,0x09, +0x20,0x11,0x10,0x63,0x0c,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x08,0x20,0x0f, +0xe0,0x00,0x00,0x00,0x00,0x14,0x60,0x14,0x60,0x7f,0x60,0x14,0xa4,0x1c,0xa4,0x09, +0xa8,0x3e,0xb0,0x2a,0xa0,0x3e,0xa0,0x08,0xa0,0x7f,0xa0,0x08,0xa4,0x08,0xa4,0x08, +0x9c,0x00,0x00,0x21,0x10,0x2f,0xd4,0x4f,0xe4,0x35,0x58,0x2f,0xd4,0x7d,0x7c,0x37, +0xd8,0x5f,0xf4,0x11,0x10,0x0f,0xe0,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00, +0x00,0x01,0x00,0x7f,0xfc,0x44,0x84,0x44,0x84,0x08,0x78,0x10,0x40,0x0b,0xf8,0x48, +0x40,0x27,0xfc,0x20,0x40,0x0b,0xf8,0x08,0x40,0x17,0xfc,0x20,0x00,0x00,0x00,0x08, +0x40,0x12,0x48,0x7f,0x70,0x01,0x44,0x3e,0x3c,0x22,0x40,0x3e,0x4c,0x22,0x70,0x3e, +0x40,0x22,0x44,0x26,0x3c,0x14,0x90,0x22,0x48,0x42,0x44,0x00,0x00,0x00,0x00,0x3d, +0xf8,0x25,0x48,0x29,0xf8,0x31,0x48,0x29,0xf8,0x24,0x00,0x27,0xfc,0x25,0x48,0x25, +0x30,0x39,0x20,0x21,0x50,0x21,0x88,0x26,0x04,0x00,0x00,0x01,0x00,0x07,0xe0,0x18, +0x40,0x01,0xc0,0x07,0x30,0x79,0x2c,0x09,0x20,0x05,0x40,0x3f,0xf8,0x03,0x80,0x05, +0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x00,0x00,0x00,0x00,0x7f,0xfc,0x02,0x80,0x1f, +0xf0,0x12,0x90,0x12,0x90,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x03,0x80,0x05,0x40,0x19, +0x30,0x61,0x0c,0x01,0x00,0x00,0x00,0x08,0x00,0x08,0xf8,0x0a,0x88,0x72,0xf8,0x14, +0x00,0x0d,0xdc,0x13,0x54,0x7f,0xdc,0x08,0x20,0x2d,0xfc,0x2a,0x70,0x2a,0xa8,0x49, +0x24,0x08,0x20,0x00,0x00,0x00,0x00,0x1f,0xe0,0x04,0x40,0x03,0x80,0x3e,0xf8,0x12, +0x48,0x0d,0x30,0x1b,0xc8,0x61,0x04,0x3f,0xf8,0x03,0x80,0x0d,0x60,0x71,0x1c,0x01, +0x00,0x00,0x00,0x10,0x50,0x10,0x90,0x1b,0x90,0x24,0x94,0x24,0xb4,0x7b,0xf4,0x10, +0xb8,0x7d,0xd0,0x11,0xb0,0x55,0x98,0x3a,0xa8,0x30,0xa8,0x1c,0xc4,0x60,0x84,0x00, +0x00,0x02,0x40,0x3c,0x40,0x08,0x40,0x7f,0xf8,0x2a,0x48,0x3e,0x48,0x2a,0x48,0x7f, +0x48,0x08,0x88,0x0f,0x88,0x79,0x30,0x00,0x00,0x24,0x88,0x42,0x44,0x00,0x00,0x00, +0x00,0x1f,0xe0,0x02,0x20,0x02,0x20,0x7f,0xfc,0x02,0x20,0x02,0x20,0x1f,0xe0,0x04, +0x00,0x0f,0xf0,0x14,0x10,0x24,0x10,0x47,0xf0,0x00,0x00,0x00,0x00,0x04,0x40,0x7f, +0xfc,0x05,0xe0,0x1f,0x00,0x7f,0xfc,0x0f,0xe0,0x09,0x20,0x0f,0xe0,0x09,0x20,0x1f, +0xf0,0x01,0x00,0x7f,0xfc,0x12,0x48,0x61,0x24,0x00,0x00,0x00,0x08,0x3e,0x88,0x00, +0xa8,0x7f,0xa8,0x00,0xa8,0x3e,0xa8,0x00,0xa8,0x3e,0xa8,0x00,0xa8,0x3e,0xa8,0x22, +0xa8,0x23,0x08,0x3f,0x08,0x00,0x08,0x00,0x00,0x00,0x88,0x3e,0x48,0x12,0x50,0x13, +0xfc,0x7f,0x20,0x12,0x20,0x3e,0xf8,0x10,0x20,0x1e,0x20,0x33,0xfc,0x32,0x20,0x52, +0x20,0x1e,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x7f,0xfc,0x41,0x04,0x5f,0xf4,0x01, +0x00,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x01, +0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x3f,0x78,0x09,0x48,0x09,0x50,0x7f,0xd0,0x09, +0x60,0x3f,0x50,0x08,0x48,0x0f,0x44,0x19,0x44,0x19,0x64,0x29,0x58,0x4f,0x40,0x00, +0x40,0x00,0x00,0x04,0x20,0x04,0x20,0x04,0x20,0x3f,0xa0,0x04,0x20,0x04,0x30,0x7f, +0xe8,0x04,0x24,0x04,0x24,0x3f,0xa0,0x04,0x20,0x04,0x20,0x07,0xa0,0x7c,0x20,0x00, +0x00,0x10,0x00,0x10,0xf8,0x7e,0x88,0x12,0x88,0x12,0x88,0x22,0xf8,0x4d,0x88,0x01, +0x00,0x7f,0xfc,0x03,0x10,0x0c,0xa0,0x74,0x40,0x07,0x30,0x38,0x0c,0x00,0x00,0x08, +0x00,0x08,0xf8,0x08,0x88,0x7e,0x90,0x02,0x90,0x04,0xa0,0x08,0x90,0x1c,0x88,0x2a, +0x84,0x4a,0x84,0x08,0xc4,0x08,0xb8,0x08,0x80,0x08,0x80,0x00,0x00,0x08,0x18,0x08, +0xe0,0x0f,0x90,0x10,0x90,0x13,0x20,0x30,0xd0,0x50,0x98,0x11,0xe4,0x17,0x40,0x10, +0x50,0x12,0x48,0x12,0x44,0x14,0x44,0x10,0x40,0x00,0x00,0x08,0x00,0x09,0xfc,0x08, +0x10,0x14,0x20,0x15,0x78,0x35,0x48,0x56,0x78,0x14,0x48,0x14,0x78,0x15,0x48,0x15, +0x78,0x13,0x30,0x10,0x48,0x11,0x84,0x00,0x00,0x00,0x08,0x3f,0xc8,0x12,0x48,0x12, +0x48,0x12,0x48,0x12,0x48,0x7f,0xc8,0x12,0x48,0x12,0x48,0x12,0x48,0x12,0x48,0x22, +0x08,0x22,0x08,0x42,0x18,0x00,0x00,0x00,0x00,0x1f,0xe0,0x10,0x20,0x10,0x20,0x10, +0x20,0x1f,0xe0,0x05,0x00,0x05,0x00,0x05,0x00,0x09,0x00,0x09,0x08,0x11,0x08,0x21, +0x08,0x40,0xf8,0x00,0x00,0x00,0x40,0x7f,0x40,0x00,0xfc,0x3f,0x90,0x22,0x90,0x22, +0x60,0x3e,0x60,0x23,0x90,0x20,0x0c,0x4f,0xe0,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00, +0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x1f,0xf0,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01, +0x00,0x01,0x00,0x3f,0xf8,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00, +0x00,0x00,0x40,0x00,0x40,0x7f,0xf8,0x10,0x40,0x10,0x40,0x17,0xfc,0x7c,0x40,0x10, +0x40,0x13,0xf8,0x14,0x40,0x18,0x40,0x60,0x40,0x0f,0xfc,0x00,0x00,0x00,0x00,0x00, +0x08,0x3f,0xc8,0x12,0x48,0x12,0x48,0x7f,0xc8,0x12,0x48,0x12,0x48,0x22,0x18,0x41, +0x00,0x1f,0xf0,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x08,0x00,0x09, +0xf8,0x7f,0x48,0x08,0x48,0x3e,0x48,0x08,0x88,0x0f,0x08,0x71,0x30,0x01,0x00,0x7f, +0xfc,0x02,0x80,0x04,0x40,0x18,0x30,0x60,0x0c,0x00,0x00,0x00,0x10,0x3f,0x10,0x12, +0x20,0x12,0x20,0x12,0x48,0x12,0x08,0x7f,0x90,0x12,0x10,0x12,0x24,0x12,0x04,0x12, +0x08,0x22,0x08,0x22,0x10,0x42,0x20,0x00,0x00,0x08,0x00,0x0b,0xf8,0x11,0x10,0x24, +0xa0,0x04,0x40,0x09,0xf0,0x1e,0x4c,0x28,0x40,0x4b,0xf8,0x08,0x40,0x08,0x40,0x08, +0x40,0x0f,0xfc,0x08,0x00,0x00,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x1f,0xf0,0x11, +0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x01,0x00,0x04,0x90,0x24,0x88,0x24,0x24,0x44, +0x24,0x03,0xe0,0x00,0x00,0x00,0x80,0x1f,0xfc,0x12,0x40,0x1f,0xf8,0x12,0x48,0x1f, +0xf8,0x10,0x00,0x1f,0xfc,0x15,0x58,0x14,0xf4,0x2b,0x24,0x20,0xc0,0x43,0x60,0x1c, +0x1c,0x00,0x00,0x08,0x20,0x7f,0xfc,0x08,0x20,0x3e,0xf8,0x08,0x20,0x7f,0xfc,0x08, +0x20,0x07,0xe0,0x00,0x20,0x0f,0xe0,0x25,0x08,0x24,0xa4,0x44,0x24,0x03,0xe0,0x00, +0x00,0x02,0x20,0x3c,0xf8,0x08,0x88,0x7f,0xf8,0x08,0x88,0x3e,0xf8,0x22,0x88,0x3e, +0xf8,0x20,0x00,0x05,0x00,0x24,0x88,0x24,0xa4,0x44,0x24,0x03,0xe0,0x00,0x00,0x10, +0x00,0x11,0xf8,0x11,0x08,0x7d,0xf8,0x11,0x08,0x11,0xf8,0x10,0x80,0x1d,0xfc,0x73, +0x34,0x15,0xc4,0x11,0x04,0x11,0x14,0x10,0xf4,0x30,0x18,0x00,0x00,0x11,0x20,0x11, +0xfc,0x13,0x20,0x7f,0xf8,0x15,0x20,0x11,0xf8,0x11,0x20,0x15,0xfc,0x1f,0xe0,0x71, +0x20,0x11,0x3c,0x11,0x04,0x12,0x04,0x34,0x18,0x00,0x00,0x14,0x40,0x14,0x40,0x7f, +0x40,0x14,0x7c,0x10,0x88,0x1e,0x88,0x23,0x48,0x7a,0x50,0x2a,0x30,0x2a,0x20,0x3a, +0x30,0x02,0x50,0x02,0x88,0x0d,0x04,0x00,0x00,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x01,0x00,0x7f,0xfc,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x05, +0x60,0x09,0x10,0x33,0x08,0x00,0x00,0x08,0x40,0x08,0x40,0x09,0xf8,0x7e,0x40,0x08, +0x40,0x1b,0xfc,0x1c,0x40,0x1a,0x40,0x2b,0xf8,0x28,0x40,0x48,0x40,0x08,0x40,0x0f, +0xfc,0x08,0x00,0x00,0x00,0x10,0x08,0x08,0x70,0x0b,0x88,0x42,0x48,0x21,0x50,0x21, +0x20,0x00,0x40,0x13,0xf8,0x10,0x40,0x17,0xfc,0x20,0xc0,0x20,0xa0,0x41,0x10,0x46, +0x0c,0x00,0x00,0x00,0x40,0x00,0x40,0x7f,0xf8,0x54,0x40,0x54,0x40,0x57,0xfc,0x7c, +0x40,0x54,0x40,0x57,0xf8,0x54,0x40,0x7c,0x40,0x04,0x40,0x07,0xfc,0x00,0x00,0x00, +0x00,0x02,0x28,0x0d,0xfc,0x78,0x60,0x08,0xa4,0x09,0x9c,0x7e,0xf0,0x08,0x84,0x1c, +0x7c,0x1a,0xf8,0x2a,0x88,0x48,0xf8,0x08,0x88,0x08,0xf8,0x08,0x00,0x00,0x00,0x00, +0x38,0x3f,0xc0,0x02,0x20,0x02,0x20,0x1c,0x40,0x03,0x90,0x01,0x08,0x7f,0xfc,0x01, +0x04,0x09,0x20,0x09,0x10,0x11,0x08,0x21,0x08,0x01,0x00,0x00,0x00,0x08,0x00,0x09, +0xf8,0x0a,0x88,0x72,0x50,0x14,0x20,0x0c,0x70,0x13,0xac,0x7f,0x20,0x0c,0xf8,0x2a, +0x20,0x2a,0x20,0x28,0x20,0x4b,0xfc,0x08,0x00,0x00,0x00,0x08,0x20,0x09,0x20,0x0b, +0xa8,0x73,0x68,0x15,0x70,0x0d,0x20,0x13,0xfc,0x7f,0x20,0x09,0x70,0x2d,0xa8,0x2b, +0x28,0x2b,0x20,0x49,0xfc,0x08,0x00,0x00,0x00,0x08,0x00,0x7f,0x70,0x3e,0x54,0x2a, +0x8c,0x3f,0xf8,0x2a,0x90,0x3e,0x60,0x7f,0xb0,0x0a,0x4c,0x0e,0xc0,0x01,0x70,0x7f, +0x88,0x0d,0x30,0x31,0x08,0x00,0x00,0x00,0x00,0x3f,0xf8,0x24,0x48,0x3f,0xf8,0x04, +0x20,0x3f,0x20,0x04,0x30,0x7f,0xa8,0x04,0x24,0x3f,0x24,0x04,0x20,0x07,0xa0,0x78, +0x20,0x00,0x20,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x1f,0xf0,0x04, +0x60,0x03,0x80,0x0d,0x60,0x71,0x1c,0x0f,0xe0,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00, +0x00,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x00,0x00,0x3f,0x48,0x12, +0x48,0x12,0x48,0x7f,0xc8,0x12,0x48,0x12,0x48,0x12,0x48,0x22,0x08,0x42,0x18,0x00, +0x00,0x12,0x10,0x09,0x10,0x09,0x20,0x7f,0xfc,0x41,0x04,0x41,0x04,0x0f,0xe0,0x09, +0x20,0x09,0x20,0x0f,0xe0,0x09,0x20,0x01,0x10,0x01,0xf8,0x3e,0x08,0x00,0x00,0x00, +0x20,0x3c,0x20,0x00,0x20,0x7e,0x20,0x01,0xfc,0x3c,0x20,0x00,0x20,0x3c,0x20,0x00, +0x20,0x3c,0x20,0x24,0x20,0x24,0x20,0x3c,0x20,0x00,0x20,0x00,0x00,0x00,0x80,0x3c, +0x98,0x00,0xe0,0x7e,0x80,0x00,0x84,0x3c,0x7c,0x00,0x00,0x3c,0xf8,0x00,0x88,0x3c, +0xf8,0x24,0x88,0x24,0x88,0x3c,0xf8,0x00,0x00,0x00,0x00,0x12,0x40,0x7f,0xfc,0x12, +0xc8,0x3f,0x50,0x55,0x30,0x1e,0x4c,0x07,0x80,0x7f,0xfc,0x00,0x00,0x07,0xc0,0x00, +0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x00,0x00,0x08,0x00,0x09,0xf8,0x7e,0x88,0x08, +0x50,0x3e,0x20,0x2a,0xf0,0x3f,0x2c,0x2a,0x20,0x3e,0xf8,0x08,0x20,0x7f,0x20,0x08, +0x20,0x09,0xfc,0x08,0x00,0x00,0x00,0x00,0x00,0x7f,0xfc,0x02,0x20,0x34,0x40,0x0c, +0xf8,0x1a,0x88,0x29,0xf8,0x48,0x88,0x3e,0xf8,0x08,0x88,0x08,0xf8,0x0e,0x50,0x70, +0x88,0x03,0x04,0x00,0x00,0x02,0x20,0x0c,0x40,0x72,0xf8,0x4a,0x88,0x2c,0xf8,0x08, +0x88,0x3e,0xf8,0x08,0xfc,0x7e,0x80,0x08,0xfc,0x14,0x54,0x13,0xac,0x21,0x44,0x42, +0x38,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x04,0x40,0x1f,0xf0,0x00, +0x00,0x00,0x00,0x7f,0xfc,0x02,0x40,0x02,0x20,0x04,0xf0,0x3f,0x08,0x00,0x08,0x00, +0x00,0x00,0x40,0x20,0x80,0x13,0x78,0x12,0x48,0x02,0x48,0x02,0x48,0x72,0x48,0x12, +0x48,0x13,0xc8,0x1e,0x70,0x10,0x40,0x18,0x40,0x26,0x40,0x41,0xfc,0x00,0x00,0x08, +0x20,0x08,0x20,0x1f,0xfc,0x24,0x00,0x7e,0xf8,0x2a,0x88,0x3e,0x88,0x2a,0xf8,0x3e, +0x20,0x04,0xb0,0x3a,0xa8,0x2e,0xa4,0x29,0x24,0x40,0x60,0x00,0x00,0x04,0x08,0x07, +0xa8,0x3f,0xe8,0x26,0xa8,0x3b,0xa8,0x3f,0xa8,0x26,0xa8,0x3c,0xa8,0x27,0x28,0x3b, +0x28,0x26,0xa8,0x3a,0x88,0x42,0x08,0x0c,0x18,0x00,0x00,0x08,0x40,0x08,0x50,0x7f, +0x48,0x08,0x5c,0x3f,0xe0,0x22,0x48,0x3e,0x48,0x22,0x50,0x3e,0x30,0x08,0x20,0x7f, +0x60,0x08,0x94,0x09,0x0c,0x08,0x04,0x00,0x00,0x08,0x00,0x7f,0x70,0x3e,0x54,0x2a, +0x8c,0x3f,0xf8,0x2a,0x50,0x7f,0x30,0x08,0xcc,0x0f,0x00,0x1f,0xf0,0x01,0x00,0x7f, +0xfc,0x01,0x00,0x03,0x00,0x00,0x00,0x21,0x20,0x12,0x20,0x17,0xa0,0x44,0xa0,0x27, +0xfc,0x24,0xc8,0x07,0xa8,0x12,0x28,0x1f,0xe8,0x13,0x90,0x24,0x90,0x24,0xa8,0x4b, +0x48,0x50,0x84,0x00,0x00,0x00,0x40,0x3d,0x50,0x25,0x48,0x2a,0x48,0x31,0xf0,0x29, +0x10,0x25,0xf0,0x25,0x10,0x25,0xf0,0x25,0x50,0x39,0x48,0x22,0x44,0x24,0x44,0x20, +0xc0,0x00,0x00,0x08,0x80,0x08,0xf8,0x09,0x00,0x7e,0x00,0x08,0x80,0x1c,0xfc,0x1b, +0x10,0x1b,0x10,0x29,0x10,0x29,0x10,0x49,0x10,0x09,0x10,0x09,0x10,0x09,0x30,0x00, +0x00,0x09,0x08,0x09,0x08,0x0b,0xfc,0x12,0xa8,0x15,0xa8,0x31,0x7c,0x52,0x48,0x14, +0x48,0x1f,0xfc,0x10,0xe0,0x11,0x50,0x12,0x48,0x14,0x44,0x10,0x40,0x00,0x00,0x08, +0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x1f,0xfc,0x11,0x08,0x21,0x10,0x41,0x20,0x01, +0x80,0x02,0x80,0x02,0x40,0x04,0x20,0x18,0x10,0x60,0x0c,0x00,0x00,0x10,0x80,0x08, +0x80,0x08,0x80,0x47,0xf0,0x20,0x90,0x20,0x90,0x00,0x90,0x1f,0xfc,0x10,0xc0,0x11, +0x20,0x21,0x20,0x22,0x10,0x44,0x08,0x48,0x04,0x00,0x00,0x22,0x00,0x1f,0xf8,0x12, +0x28,0x4f,0xa8,0x22,0x28,0x23,0xd8,0x0c,0xa0,0x11,0x20,0x17,0x50,0x10,0xb8,0x2f, +0xc8,0x22,0xb0,0x4c,0x88,0x40,0x80,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x40, +0x04,0x40,0x04,0x01,0xc0,0x04,0x40,0x04,0x40,0x04,0x40,0x08,0x20,0x08,0x20,0x10, +0x10,0x20,0x08,0x40,0x04,0x00,0x00,0x08,0x20,0x08,0x20,0x0a,0x20,0x73,0xfc,0x14, +0x20,0x0c,0x20,0x12,0xf8,0x7e,0x00,0x08,0xf8,0x2c,0x88,0x2a,0x88,0x2a,0x88,0x48, +0xf8,0x08,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x02,0x00,0x1f,0xf0,0x12, +0x90,0x12,0x90,0x12,0x90,0x12,0x90,0x12,0x90,0x12,0x90,0x12,0x90,0x7f,0xfc,0x00, +0x00,0x00,0x00,0x00,0x40,0x3c,0x40,0x00,0x40,0x7f,0xf8,0x00,0x48,0x3c,0x48,0x00, +0x48,0x3f,0xfc,0x00,0x40,0x3c,0xa0,0x24,0xa0,0x25,0x10,0x3e,0x08,0x04,0x04,0x00, +0x00,0x00,0x00,0x0f,0xf0,0x08,0x10,0x08,0x10,0x08,0x10,0x0f,0xf0,0x08,0x10,0x08, +0x10,0x0f,0xf0,0x08,0x10,0x10,0x10,0x10,0x10,0x20,0x10,0x40,0x30,0x00,0x00,0x08, +0x40,0x09,0x40,0x09,0x40,0x13,0xf8,0x12,0x40,0x34,0x40,0x50,0x40,0x17,0xfc,0x10, +0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x00,0x00,0x08,0x80,0x08, +0x80,0x09,0x40,0x12,0x20,0x17,0xf0,0x38,0x88,0x57,0xf0,0x14,0x90,0x17,0xf0,0x14, +0x90,0x11,0x40,0x11,0x20,0x12,0x10,0x14,0x08,0x00,0x00,0x08,0x40,0x0a,0x48,0x09, +0x50,0x13,0xf8,0x10,0x40,0x37,0xfc,0x50,0xa0,0x11,0xf0,0x12,0x28,0x15,0xe4,0x11, +0x20,0x11,0x08,0x11,0x08,0x10,0xf8,0x00,0x00,0x08,0x20,0x08,0xf8,0x0e,0x28,0x13, +0xfc,0x12,0x28,0x34,0xf8,0x5f,0x20,0x11,0xf8,0x15,0x20,0x15,0xfc,0x12,0x20,0x13, +0x20,0x14,0xc0,0x18,0x3c,0x00,0x00,0x08,0x20,0x04,0x40,0x7f,0xfc,0x04,0x80,0x3f, +0xf0,0x04,0x90,0x7f,0xfc,0x04,0x90,0x3f,0xf0,0x04,0xc0,0x1c,0xb0,0x64,0x8c,0x04, +0x80,0x04,0x80,0x00,0x00,0x01,0x00,0x11,0x10,0x09,0x20,0x3f,0xf8,0x02,0x80,0x7f, +0xfc,0x04,0x40,0x18,0x30,0x6f,0xec,0x02,0x20,0x02,0x20,0x04,0x20,0x08,0x20,0x30, +0xc0,0x00,0x00,0x04,0x08,0x04,0x08,0x0a,0x48,0x11,0x48,0x7f,0xc8,0x04,0x48,0x3f, +0x48,0x25,0x48,0x3f,0x48,0x24,0x48,0x0a,0x48,0x09,0x08,0x11,0x08,0x60,0x18,0x00, +0x00,0x00,0x40,0x00,0x40,0x7b,0xf8,0x4a,0x08,0x4b,0xf8,0x48,0x00,0x49,0xf0,0x49, +0x10,0x49,0xf0,0x49,0x10,0x79,0xf0,0x00,0x00,0x0f,0xfc,0x00,0x00,0x00,0x00,0x00, +0x00,0x7f,0xf8,0x49,0x48,0x5f,0xe8,0x44,0x88,0x7f,0xf8,0x48,0x48,0x5f,0xa8,0x60, +0x98,0x4f,0x88,0x48,0x28,0x47,0xe8,0x7f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x3f, +0xf8,0x24,0x88,0x3e,0x50,0x22,0x50,0x3e,0x20,0x24,0xd0,0x3f,0x0c,0x21,0x00,0x1f, +0xf0,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x11,0x08,0x10,0x90,0x13, +0xfc,0x10,0xa0,0x7d,0xf8,0x24,0xa8,0x27,0xfc,0x24,0xa8,0x79,0xf8,0x48,0xa0,0x0d, +0xb0,0x16,0xa8,0x64,0xa4,0x00,0xa0,0x00,0x00,0x00,0x40,0x00,0x40,0x7b,0xf8,0x08, +0x48,0x17,0xfc,0x10,0x48,0x3b,0xf8,0x08,0x40,0x4b,0xf8,0x28,0x40,0x17,0xfc,0x18, +0x40,0x26,0x40,0x41,0xfc,0x00,0x00,0x01,0x00,0x7f,0xfc,0x41,0x04,0x5f,0xf4,0x01, +0x00,0x7f,0xfc,0x00,0x00,0x1f,0xf0,0x12,0x90,0x1f,0xf0,0x25,0x08,0x24,0xa4,0x44, +0x24,0x03,0xe0,0x00,0x00,0x1e,0x18,0x52,0xe0,0x5e,0x28,0x52,0xd0,0x5e,0x28,0x53, +0xfc,0x7e,0x64,0x2a,0xa8,0x29,0x24,0x49,0x20,0x04,0x80,0x24,0x88,0x24,0x24,0x43, +0xe4,0x00,0x00,0x11,0x10,0x09,0x20,0x1f,0xf0,0x02,0x80,0x7f,0xfc,0x08,0x20,0x1f, +0xd8,0x61,0x04,0x1f,0xf0,0x01,0x00,0x3f,0xf8,0x01,0x00,0x01,0x00,0x03,0x00,0x00, +0x00,0x10,0x40,0x12,0x48,0x11,0x50,0x7f,0xf8,0x10,0xa0,0x17,0xfc,0x11,0x10,0x13, +0xe8,0x1c,0x24,0x71,0xe0,0x11,0x00,0x11,0x08,0x11,0x08,0x30,0xf8,0x00,0x00,0x08, +0x40,0x08,0x40,0x08,0xa0,0x7f,0x10,0x0b,0xf8,0x18,0x44,0x1d,0xf8,0x1b,0x48,0x29, +0x48,0x29,0xf8,0x48,0x60,0x08,0x90,0x0b,0x08,0x0c,0x04,0x00,0x00,0x10,0x80,0x10, +0x80,0x11,0xf8,0x7e,0x40,0x13,0xfc,0x30,0x90,0x39,0xfc,0x37,0x20,0x55,0xf8,0x51, +0x20,0x11,0xf8,0x11,0x20,0x11,0xfc,0x10,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x3f, +0xf8,0x06,0xc0,0x03,0x00,0x7f,0xfc,0x44,0x44,0x5f,0xe4,0x09,0x10,0x0f,0xe0,0x11, +0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x20,0x01,0x10,0x01, +0x10,0x7f,0xfc,0x01,0x00,0x03,0x00,0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08, +0x20,0x10,0x10,0x60,0x0c,0x00,0x00,0x04,0x20,0x04,0x28,0x7f,0xa4,0x04,0x24,0x3f, +0xfc,0x33,0x20,0x2d,0x20,0x3f,0x30,0x25,0x50,0x3f,0x50,0x25,0x48,0x25,0x88,0x25, +0x84,0x23,0x04,0x00,0x00,0x00,0x00,0x3f,0xf8,0x08,0x90,0x08,0x90,0x08,0x90,0x10, +0x90,0x1f,0xfc,0x32,0x90,0x52,0x90,0x12,0x90,0x12,0x90,0x1f,0x10,0x01,0x10,0x02, +0x10,0x00,0x00,0x00,0x00,0x7f,0xf8,0x11,0x08,0x11,0x08,0x11,0xf8,0x11,0x08,0x3d, +0xf8,0x25,0x08,0x65,0xf8,0x24,0xa0,0x24,0xa0,0x3d,0x24,0x02,0x24,0x04,0x1c,0x00, +0x00,0x08,0x00,0x08,0xf8,0x0a,0x88,0x72,0x88,0x14,0xf8,0x0c,0x00,0x12,0xf8,0x7e, +0x88,0x08,0xf8,0x2c,0x88,0x2a,0xf8,0x2a,0x88,0x48,0x88,0x08,0x98,0x00,0x00,0x00, +0x00,0x07,0xf0,0x24,0x10,0x27,0xf0,0x24,0x10,0x27,0xf0,0x24,0x10,0x27,0xf0,0x20, +0x00,0x3f,0xfc,0x25,0x60,0x19,0x18,0x61,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x3f, +0xfc,0x00,0x00,0x0f,0xf0,0x08,0x10,0x0f,0xf0,0x08,0x00,0x0f,0xf0,0x14,0x10,0x17, +0xf0,0x24,0x10,0x47,0xf0,0x04,0x10,0x04,0x30,0x00,0x00,0x00,0x00,0x0f,0xe0,0x08, +0x20,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x02,0x80,0x02, +0x80,0x04,0x84,0x18,0x84,0x60,0x7c,0x00,0x00,0x01,0x10,0x38,0xa0,0x03,0xfc,0x7c, +0xa0,0x03,0xf8,0x38,0xa8,0x07,0xfc,0x38,0xa8,0x03,0xf8,0x38,0xa0,0x29,0xb0,0x2a, +0xa8,0x3c,0xa4,0x20,0xa0,0x00,0x00,0x00,0x00,0x3f,0xf8,0x24,0x90,0x3e,0x60,0x24, +0x90,0x3f,0xec,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x06, +0x60,0x38,0x18,0x00,0x00,0x08,0x00,0x08,0xf8,0x7f,0x20,0x08,0x20,0x3e,0x20,0x2a, +0x20,0x3f,0xfc,0x2a,0x20,0x3e,0x20,0x08,0x20,0x7f,0x20,0x08,0x20,0x08,0x20,0x08, +0x20,0x00,0x00,0x00,0x40,0x23,0xf8,0x12,0x48,0x13,0xf8,0x00,0x40,0x0f,0xfc,0x71, +0x10,0x11,0xf0,0x11,0x00,0x11,0xf8,0x11,0x08,0x19,0xf8,0x26,0x00,0x41,0xfc,0x00, +0x00,0x10,0x20,0x10,0x20,0x1b,0xf8,0x24,0xa8,0x25,0xfc,0x79,0x28,0x13,0xf8,0x7c, +0xa0,0x12,0xf8,0x56,0xa0,0x39,0xfc,0x31,0x20,0x1a,0xa0,0x64,0x7c,0x00,0x00,0x00, +0x40,0x3c,0x40,0x24,0xa0,0x29,0x10,0x2b,0xf8,0x30,0x44,0x2b,0xf8,0x26,0x48,0x26, +0x48,0x27,0xf8,0x38,0x40,0x20,0xa0,0x21,0x10,0x26,0x0c,0x00,0x00,0x00,0x00,0x3f, +0xfc,0x22,0x20,0x3e,0x40,0x22,0xf8,0x3e,0x88,0x14,0xf8,0x15,0x88,0x55,0xf8,0x36, +0x88,0x34,0xf8,0x16,0x50,0x18,0x88,0x63,0x04,0x00,0x00,0x00,0x20,0x3f,0x20,0x28, +0x50,0x3e,0x88,0x29,0xfc,0x3e,0x20,0x28,0xf8,0x3e,0xa8,0x02,0xa8,0x2a,0xf8,0x2a, +0x60,0x2a,0x50,0x42,0x88,0x0d,0x04,0x00,0x00,0x10,0x20,0x10,0x20,0x1e,0x50,0x10, +0x88,0x7f,0xfc,0x52,0x20,0x4e,0xf8,0x76,0xa8,0x6e,0xa8,0x5a,0xf8,0x76,0x20,0x4a, +0x50,0x7e,0x88,0x03,0x04,0x00,0x00,0x00,0x00,0x1f,0xf0,0x00,0x00,0x00,0x00,0x00, +0x00,0x7f,0xfc,0x04,0x80,0x04,0x80,0x04,0x80,0x08,0x80,0x08,0x84,0x10,0x84,0x20, +0x84,0x40,0x7c,0x00,0x00,0x00,0x00,0x1f,0xfc,0x10,0x80,0x13,0xf0,0x12,0x10,0x13, +0xf0,0x12,0x10,0x13,0xf0,0x10,0x80,0x12,0xa0,0x22,0x90,0x24,0x88,0x48,0x88,0x01, +0x80,0x00,0x00,0x09,0x08,0x04,0x90,0x1f,0xfc,0x10,0x20,0x1f,0xa0,0x12,0x20,0x1f, +0xbc,0x15,0x48,0x17,0xa8,0x17,0x30,0x25,0x10,0x3f,0x30,0x41,0x48,0x01,0x84,0x00, +0x00,0x08,0x00,0x09,0xf8,0x08,0x08,0x0a,0x08,0x72,0x08,0x12,0x08,0x0c,0x08,0x04, +0x08,0x0c,0x08,0x0a,0x08,0x12,0x08,0x7d,0x08,0x01,0x08,0x00,0x30,0x00,0x00,0x00, +0x40,0x7c,0x40,0x07,0xfc,0x04,0x40,0x3c,0x48,0x27,0x88,0x20,0x90,0x3c,0x50,0x04, +0x20,0x04,0x20,0x04,0x50,0x04,0x88,0x0b,0xf4,0x30,0x04,0x00,0x00,0x10,0x20,0x08, +0x28,0x08,0x24,0x47,0xfc,0x24,0x20,0x27,0xe8,0x04,0x28,0x17,0xa8,0x16,0xb0,0x16, +0x90,0x27,0xb4,0x2a,0x4c,0x48,0x8c,0x51,0x04,0x00,0x00,0x10,0x00,0x0b,0xfc,0x0a, +0x20,0x42,0x40,0x22,0xf8,0x22,0x88,0x02,0xf8,0x12,0x88,0x12,0xf8,0x12,0x20,0x24, +0xa8,0x24,0xa4,0x49,0x24,0x40,0x60,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01, +0x00,0x01,0x20,0x02,0x20,0x1a,0x40,0x06,0x40,0x01,0x80,0x00,0xa0,0x01,0x10,0x02, +0x78,0x7f,0x84,0x00,0x04,0x00,0x00,0x00,0x00,0x01,0xf8,0x7d,0x08,0x11,0x08,0x11, +0xf8,0x11,0x08,0x7d,0xf8,0x11,0x08,0x11,0xf8,0x10,0xa0,0x1c,0xa0,0x61,0x24,0x06, +0x24,0x18,0x1c,0x00,0x00,0x08,0x20,0x08,0x20,0x0a,0x20,0x73,0xfc,0x14,0x20,0x0d, +0x28,0x12,0xc8,0x7e,0x50,0x0c,0x30,0x2a,0x20,0x2a,0x30,0x28,0x48,0x4b,0xfc,0x08, +0x04,0x00,0x00,0x04,0x20,0x08,0x20,0x1e,0x20,0x13,0xfc,0x1a,0x20,0x16,0x28,0x17, +0xc8,0x7f,0x50,0x12,0x30,0x1a,0x10,0x1a,0x28,0x2a,0x48,0x23,0xf4,0x46,0x04,0x00, +0x00,0x00,0x00,0x0f,0xe0,0x00,0x00,0x7f,0xfc,0x00,0x00,0x0f,0xe0,0x00,0x00,0x0f, +0xe0,0x00,0x00,0x0f,0xe0,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x00, +0x20,0x3c,0x20,0x03,0xfc,0x7c,0x88,0x00,0x50,0x3d,0xfc,0x01,0x10,0x3d,0x20,0x01, +0xc8,0x3d,0x10,0x25,0x64,0x26,0x08,0x3e,0x30,0x05,0xc0,0x00,0x00,0x00,0x00,0x3d, +0xf0,0x25,0x10,0x29,0x10,0x31,0xf0,0x29,0x10,0x25,0xf0,0x25,0x48,0x25,0x48,0x25, +0x30,0x39,0x20,0x21,0x50,0x21,0x88,0x26,0x04,0x00,0x00,0x00,0x30,0x3f,0xc0,0x01, +0x10,0x11,0x10,0x09,0x20,0x09,0x40,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x0f,0xf8,0x0c,0x88,0x14, +0x88,0x17,0xf8,0x34,0x88,0x55,0xe8,0x15,0x28,0x15,0x28,0x15,0xe8,0x14,0x08,0x14, +0x08,0x17,0xf8,0x10,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01, +0x00,0x01,0x00,0x01,0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1f, +0xf0,0x00,0x00,0x00,0x00,0x00,0x18,0x03,0xe0,0x78,0x48,0x4a,0x48,0x49,0x50,0x49, +0x60,0x48,0x40,0x4f,0xfc,0x48,0x40,0x48,0x40,0x78,0x40,0x00,0x40,0x00,0x40,0x00, +0xc0,0x00,0x00,0x00,0x00,0x7f,0xf8,0x42,0x08,0x42,0x08,0x7f,0xf8,0x42,0x08,0x42, +0x08,0x4f,0xc8,0x48,0x48,0x48,0x48,0x4f,0xc8,0x40,0x08,0x40,0x08,0x7f,0xf8,0x00, +0x00,0x08,0x20,0x08,0x20,0x08,0x20,0x09,0xfc,0x7e,0x20,0x12,0x20,0x12,0x20,0x12, +0xf8,0x3c,0x88,0x24,0x88,0x06,0x88,0x0a,0x88,0x30,0xf8,0x00,0x00,0x00,0x00,0x00, +0x08,0x3e,0x30,0x03,0xd0,0x05,0x50,0x05,0x50,0x09,0x50,0x0d,0x50,0x19,0x50,0x69, +0x50,0x09,0x68,0x0a,0x58,0x0a,0x78,0x0f,0x94,0x18,0x04,0x00,0x00,0x00,0x00,0x3f, +0xf0,0x00,0x10,0x00,0x10,0x00,0x10,0x3f,0xf0,0x20,0x00,0x20,0x00,0x20,0x00,0x20, +0x00,0x20,0x08,0x20,0x08,0x20,0x08,0x1f,0xf8,0x00,0x00,0x00,0x80,0x1f,0xfc,0x10, +0x80,0x1f,0xf8,0x10,0x80,0x17,0xf0,0x14,0x90,0x17,0xf0,0x14,0x90,0x17,0xf0,0x20, +0x80,0x3f,0xfc,0x40,0x80,0x00,0x80,0x00,0x00,0x00,0x08,0x7c,0x30,0x05,0xd0,0x05, +0x50,0x3d,0x50,0x21,0x50,0x21,0x50,0x3d,0x50,0x05,0x50,0x05,0x68,0x05,0x58,0x06, +0x7c,0x0b,0x94,0x34,0x14,0x00,0x00,0x00,0x00,0x3f,0xfc,0x00,0x00,0x1f,0xf8,0x10, +0x08,0x10,0x08,0x10,0x08,0x1f,0xf8,0x10,0x00,0x10,0x00,0x10,0x00,0x20,0x00,0x20, +0x00,0x40,0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x7f,0xfc,0x08,0x90,0x09, +0x90,0x0a,0x90,0x3e,0x50,0x22,0x60,0x22,0x20,0x22,0x60,0x3e,0x90,0x03,0x08,0x00, +0x04,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x7f,0xfc,0x08,0x40,0x1c,0x40,0x1a, +0x40,0x1b,0xf8,0x29,0x08,0x29,0x08,0x49,0x08,0x09,0x08,0x09,0xf8,0x08,0x00,0x00, +0x00,0x20,0x00,0x12,0x78,0x12,0x48,0x42,0x48,0x2f,0xc8,0x22,0x78,0x02,0x48,0x0f, +0x48,0x19,0x48,0x19,0x78,0x29,0x48,0x2f,0x88,0x40,0x88,0x41,0x18,0x00,0x00,0x04, +0x08,0x44,0x30,0x29,0xd0,0x11,0x50,0x31,0x50,0x49,0x50,0x09,0x50,0x19,0x50,0x29, +0x50,0x49,0x68,0x09,0x58,0x0a,0x78,0x33,0x94,0x14,0x04,0x00,0x00,0x10,0x00,0x55, +0x38,0x35,0x28,0x39,0x28,0x17,0xe8,0x7d,0x38,0x11,0x28,0x1b,0xa8,0x36,0xb8,0x36, +0xa8,0x52,0xc8,0x13,0xc8,0x10,0x88,0x11,0x18,0x00,0x00,0x10,0x20,0x10,0x20,0x11, +0xfc,0x7c,0x50,0x08,0x88,0x0b,0xfc,0x12,0x00,0x3d,0xfc,0x54,0x40,0x12,0x78,0x10, +0x08,0x10,0x08,0x10,0x08,0x10,0x30,0x00,0x00,0x00,0x00,0x3c,0xf0,0x24,0x90,0x24, +0x90,0x3c,0x94,0x25,0x14,0x26,0x0c,0x3d,0xf8,0x24,0x88,0x24,0x90,0x24,0x60,0x24, +0x60,0x25,0x90,0x4e,0x0c,0x00,0x00,0x08,0x00,0x08,0xf8,0x08,0x88,0x7f,0x88,0x08, +0xf8,0x08,0x88,0x08,0x88,0x3e,0xf8,0x22,0x88,0x22,0x88,0x22,0x88,0x3f,0x08,0x01, +0x08,0x02,0x18,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x00,0x18,0x3f, +0xf0,0x05,0x50,0x09,0x50,0x0d,0x50,0x19,0x50,0x69,0x68,0x0a,0x58,0x0b,0xf4,0x1c, +0x14,0x00,0x00,0x01,0x00,0x01,0xf8,0x01,0x00,0x1f,0xfc,0x11,0x08,0x11,0xf0,0x1f, +0x08,0x10,0xf8,0x12,0x40,0x12,0x40,0x22,0x40,0x24,0x44,0x48,0x44,0x10,0x3c,0x00, +0x00,0x00,0x40,0x3c,0x40,0x03,0xfc,0x7c,0xa0,0x01,0x10,0x3e,0xf8,0x00,0x04,0x3d, +0xf8,0x00,0x40,0x3c,0x78,0x24,0x08,0x24,0x08,0x3c,0x08,0x00,0x30,0x00,0x00,0x00, +0x20,0x3e,0x20,0x23,0xfc,0x22,0x50,0x3e,0x88,0x09,0x74,0x28,0x00,0x2f,0xfc,0x28, +0x40,0x28,0x78,0x28,0x08,0x2e,0x08,0x38,0x08,0x60,0x30,0x00,0x00,0x08,0x20,0x08, +0x20,0x14,0x20,0x12,0x20,0x23,0xfc,0x5c,0x20,0x08,0x20,0x7e,0xf8,0x08,0x88,0x2a, +0x88,0x1c,0x88,0x18,0x88,0x0e,0xf8,0x70,0x00,0x00,0x00,0x00,0x00,0x3f,0xfc,0x00, +0x00,0x1f,0xf8,0x10,0x08,0x1f,0xf8,0x12,0x20,0x17,0xfc,0x1c,0x40,0x17,0xf0,0x24, +0x40,0x27,0xf0,0x44,0x40,0x07,0xfc,0x00,0x00,0x00,0x00,0x7f,0xfc,0x00,0x10,0x3f, +0x20,0x21,0x78,0x3f,0x48,0x2a,0x78,0x2f,0xc8,0x3a,0x78,0x2f,0x48,0x2a,0x78,0x4f, +0x30,0x4a,0x48,0x0f,0x84,0x00,0x00,0x08,0x20,0x08,0x20,0x7f,0xfc,0x08,0x20,0x3e, +0x20,0x01,0xf8,0x3e,0x88,0x22,0x88,0x3e,0x50,0x22,0x70,0x14,0x20,0x16,0x50,0x18, +0x88,0x63,0x04,0x00,0x00,0x00,0x00,0x3f,0xf8,0x02,0x00,0x02,0x00,0x02,0x00,0x02, +0x00,0x3f,0xe0,0x04,0x20,0x04,0x20,0x04,0x20,0x08,0x20,0x08,0x20,0x7f,0xfc,0x00, +0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x02,0x00,0x02,0x00,0x07,0xe0,0x04,0x20,0x04, +0x20,0x04,0x20,0x0f,0xe0,0x00,0x40,0x00,0x40,0x00,0x40,0x7f,0xfc,0x00,0x00,0x00, +0x00,0x08,0x00,0x0f,0xf8,0x08,0x80,0x10,0x80,0x10,0x80,0x30,0x80,0x57,0xf0,0x11, +0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x1f,0xfc,0x10,0x00,0x00,0x00,0x08, +0x00,0x08,0x00,0x0f,0xf0,0x11,0x00,0x11,0x00,0x21,0x00,0x01,0x00,0x7f,0xfc,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x03, +0xf0,0x12,0x10,0x12,0x10,0x13,0xf0,0x10,0x00,0x1f,0xf0,0x00,0x10,0x00,0x10,0x7f, +0xfc,0x00,0x00,0x04,0x60,0x18,0x10,0x60,0x08,0x00,0x00,0x00,0x00,0x3f,0xf8,0x02, +0x00,0x02,0x00,0x1f,0xe0,0x04,0x20,0x04,0x20,0x7f,0xfc,0x00,0x00,0x1f,0xf0,0x10, +0x10,0x10,0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x10,0x00,0x11,0x78,0x11,0x48,0x11, +0x48,0x7d,0x48,0x25,0x48,0x25,0x78,0x25,0x00,0x79,0xf0,0x48,0x10,0x0f,0xfc,0x14, +0x90,0x61,0x08,0x06,0x04,0x00,0x00,0x10,0x40,0x10,0x50,0x23,0x90,0x48,0xa0,0x08, +0x50,0x10,0x88,0x17,0xf4,0x30,0x84,0x51,0xf8,0x17,0x10,0x10,0xa0,0x10,0x40,0x11, +0xb0,0x1e,0x0c,0x00,0x00,0x12,0x00,0x12,0x38,0x23,0xe8,0x4d,0x28,0x09,0x28,0x17, +0xe8,0x11,0x28,0x35,0x28,0x55,0xe8,0x15,0x28,0x15,0x78,0x15,0xa0,0x1e,0x20,0x10, +0x20,0x00,0x00,0x10,0x00,0x13,0xfc,0x10,0x40,0x18,0x40,0x35,0xf0,0x34,0x90,0x30, +0x90,0x57,0xfc,0x10,0x00,0x11,0xf8,0x11,0x08,0x11,0x08,0x11,0xf8,0x10,0x00,0x00, +0x00,0x08,0x00,0x0b,0xfc,0x08,0x40,0x7e,0x40,0x09,0xf0,0x1c,0x90,0x1a,0x90,0x1b, +0xfc,0x28,0x00,0x29,0xf8,0x49,0x08,0x09,0x08,0x09,0xf8,0x08,0x00,0x00,0x00,0x10, +0x80,0x11,0x40,0x12,0xb0,0x7f,0xfc,0x12,0xb0,0x1a,0x50,0x37,0xb0,0x37,0xf0,0x30, +0x80,0x57,0xf8,0x55,0x28,0x17,0xd8,0x14,0x08,0x14,0x18,0x00,0x00,0x02,0x00,0x02, +0x78,0x7a,0x48,0x17,0xc8,0x12,0x48,0x12,0x78,0x7f,0x48,0x15,0x48,0x15,0x78,0x15, +0x48,0x1f,0x88,0x60,0x88,0x01,0x08,0x02,0x18,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04, +0x40,0x07,0xc0,0x07,0xc0,0x04,0x40,0x7f,0xfc,0x08,0x20,0x1f,0xf0,0x62,0x0c,0x0f, +0xe0,0x34,0x20,0x07,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,0xf8,0x00,0x40,0x7e, +0x40,0x01,0xf0,0x3c,0x90,0x00,0x90,0x3f,0xfc,0x00,0x00,0x3d,0xf8,0x25,0x08,0x25, +0x08,0x3d,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x78,0x01,0x48,0x7f,0x48,0x01, +0x78,0x3d,0x00,0x01,0xf8,0x3d,0x08,0x00,0x08,0x3f,0xfc,0x24,0x50,0x24,0x48,0x3c, +0x84,0x01,0x04,0x00,0x00,0x00,0x90,0x3b,0xfc,0x00,0xb0,0x7d,0xfc,0x03,0x20,0x3d, +0xf8,0x01,0x20,0x3d,0xfc,0x00,0x00,0x3f,0xf8,0x24,0x90,0x24,0x60,0x3c,0xf0,0x03, +0x0c,0x00,0x00,0x00,0x80,0x7f,0xb8,0x0c,0xa8,0x0c,0xa8,0x3f,0xe8,0x2a,0xb8,0x2a, +0xa8,0x37,0xe8,0x37,0x78,0x23,0x68,0x3f,0xe8,0x23,0x48,0x3e,0x48,0x00,0x98,0x00, +0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x1f,0xf8,0x10,0x00,0x20,0x00,0x4f,0xc0,0x01, +0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x08,0x10,0x08,0x0f,0xf8,0x00,0x00,0x08, +0x00,0x08,0xf8,0x1e,0xa8,0x24,0xa8,0x7e,0xf8,0x2a,0xa8,0x3e,0xa8,0x2a,0xf8,0x3e, +0x20,0x04,0xf8,0x3a,0x20,0x2e,0x20,0x29,0xfc,0x40,0x00,0x00,0x00,0x01,0x00,0x01, +0x00,0x7f,0xfc,0x04,0x40,0x04,0x20,0x08,0x50,0x14,0x48,0x22,0x48,0x02,0x80,0x01, +0x80,0x01,0x80,0x02,0x40,0x0c,0x30,0x70,0x0c,0x00,0x00,0x08,0x40,0x08,0x40,0x0f, +0xfc,0x11,0x20,0x11,0x10,0x32,0x28,0x55,0x28,0x11,0x20,0x10,0xc0,0x10,0xc0,0x10, +0xc0,0x11,0x20,0x16,0x10,0x18,0x0c,0x00,0x00,0x09,0xf0,0x08,0x10,0x08,0x10,0x17, +0xfc,0x11,0x00,0x31,0x00,0x51,0xf8,0x12,0x40,0x14,0x40,0x17,0xfc,0x10,0x60,0x10, +0x90,0x13,0x08,0x1c,0x04,0x00,0x00,0x09,0xf0,0x08,0x10,0x0c,0x10,0x17,0xfc,0x34, +0x80,0x54,0xf8,0x15,0x20,0x16,0x20,0x17,0xfc,0x14,0x60,0x14,0x50,0x14,0x90,0x11, +0x08,0x16,0x04,0x00,0x00,0x08,0x40,0x08,0x40,0x0b,0xf8,0x10,0x40,0x10,0x40,0x37, +0xfc,0x51,0x10,0x11,0x20,0x17,0xfc,0x10,0x40,0x10,0x40,0x13,0xf8,0x10,0x40,0x10, +0x40,0x00,0x00,0x01,0x00,0x01,0x00,0x11,0x10,0x09,0x10,0x09,0x20,0x01,0x00,0x7f, +0xfc,0x04,0x80,0x04,0x80,0x04,0x80,0x08,0x80,0x08,0x84,0x10,0x84,0x60,0x7c,0x00, +0x00,0x01,0xc0,0x04,0x40,0x04,0x20,0x08,0x20,0x08,0x10,0x11,0x08,0x21,0x04,0x41, +0x00,0x02,0x40,0x02,0x20,0x02,0x10,0x04,0x70,0x3f,0x88,0x00,0x08,0x00,0x00,0x00, +0x80,0x00,0x80,0x00,0x80,0x7c,0x80,0x13,0xf8,0x10,0x88,0x10,0x88,0x10,0x88,0x10, +0x88,0x15,0x08,0x19,0x08,0x61,0x08,0x02,0x08,0x04,0x30,0x00,0x00,0x08,0x40,0x08, +0x40,0x08,0x40,0x7f,0x40,0x14,0xf8,0x12,0x48,0x23,0x48,0x52,0x48,0x0c,0x48,0x04, +0x48,0x0a,0x88,0x12,0x88,0x21,0x08,0x42,0x30,0x00,0x00,0x08,0x00,0x08,0x00,0x08, +0x00,0x1f,0xf8,0x12,0x08,0x22,0x08,0x42,0x08,0x03,0x08,0x04,0x88,0x05,0xc8,0x3e, +0x48,0x00,0x08,0x00,0x08,0x00,0x30,0x00,0x00,0x00,0x00,0x1f,0xfc,0x13,0xf0,0x12, +0x10,0x13,0xf0,0x12,0x10,0x13,0xf0,0x10,0x00,0x13,0xf0,0x10,0x20,0x2f,0xfc,0x20, +0x40,0x40,0x40,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xf0,0x20,0x10,0x20, +0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x3f,0xf0,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x7f,0xf8,0x40,0x08,0x40, +0x08,0x4f,0xc8,0x48,0x48,0x48,0x48,0x48,0x48,0x4f,0xc8,0x40,0x08,0x40,0x08,0x40, +0x18,0x00,0x00,0x00,0x38,0x1f,0xc0,0x10,0x00,0x10,0x00,0x1f,0xfc,0x10,0x00,0x10, +0x00,0x13,0xf0,0x12,0x10,0x12,0x10,0x22,0x10,0x22,0x10,0x43,0xf0,0x00,0x00,0x00, +0x00,0x01,0x00,0x01,0xf0,0x79,0x10,0x4b,0xfc,0x4a,0x40,0x4e,0x40,0x4a,0xfc,0x4a, +0xa0,0x4b,0x20,0x7b,0xfc,0x02,0x20,0x02,0x50,0x02,0x88,0x03,0x04,0x00,0x00,0x00, +0x40,0x10,0x40,0x17,0xfc,0x10,0x00,0x7c,0x00,0x11,0xe0,0x11,0x20,0x11,0x20,0x11, +0x20,0x1d,0x20,0x62,0x20,0x02,0x24,0x04,0x24,0x08,0x1c,0x00,0x00,0x00,0x18,0x13, +0xe0,0x12,0x00,0x12,0x00,0x7f,0xfc,0x12,0x00,0x12,0x00,0x12,0xf8,0x12,0x88,0x1e, +0x88,0x64,0x88,0x04,0x88,0x08,0xf8,0x00,0x00,0x00,0x00,0x08,0x00,0x09,0xf8,0x08, +0x08,0x08,0x10,0x7e,0x10,0x12,0x20,0x12,0x20,0x13,0xfc,0x3c,0x20,0x24,0x20,0x06, +0x20,0x0a,0x20,0x10,0x20,0x20,0x60,0x00,0x00,0x00,0x40,0x3e,0x40,0x02,0x40,0x04, +0x40,0x04,0x40,0x08,0x40,0x08,0x40,0x0e,0x40,0x78,0x40,0x08,0x40,0x08,0x40,0x08, +0x44,0x08,0x44,0x18,0x3c,0x00,0x00,0x01,0x00,0x01,0x10,0x1f,0xf0,0x01,0x20,0x01, +0x40,0x7f,0xfc,0x01,0x00,0x07,0xe0,0x18,0x40,0x60,0x80,0x1f,0xf8,0x00,0x80,0x00, +0x80,0x01,0x80,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x42,0x04,0x42,0x04,0x3f, +0xf8,0x02,0x00,0x04,0x80,0x04,0x80,0x08,0x80,0x11,0x20,0x21,0x30,0x4f,0xc8,0x00, +0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x07,0xfc,0x00,0x80,0x7c,0x80,0x10,0x80,0x10,0xf8,0x11,0x08,0x11, +0x08,0x10,0x08,0x1c,0x08,0x60,0x08,0x00,0x08,0x00,0x08,0x00,0x70,0x00,0x00,0x04, +0x40,0x04,0x40,0x3f,0xf8,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x0f,0xe0,0x10, +0x50,0x60,0x4c,0x0f,0xc0,0x08,0x10,0x08,0x10,0x07,0xf0,0x00,0x00,0x01,0x00,0x1f, +0xf0,0x01,0x00,0x01,0x00,0x7f,0xfc,0x08,0x20,0x04,0x40,0x7f,0xfc,0x01,0x00,0x01, +0x00,0x3f,0xf8,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x1f, +0xfc,0x10,0x00,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x11,0x20,0x11, +0x10,0x22,0x38,0x2f,0xc4,0x40,0x04,0x00,0x00,0x00,0x80,0x00,0x80,0x1f,0xfc,0x10, +0x80,0x17,0xf0,0x10,0x90,0x1f,0xfc,0x10,0x90,0x17,0xf0,0x10,0x80,0x11,0x40,0x21, +0x20,0x22,0x10,0x4c,0x0c,0x00,0x00,0x00,0x80,0x00,0x80,0x1f,0xfc,0x10,0x80,0x17, +0xf0,0x10,0x90,0x1f,0xfc,0x10,0x90,0x17,0xf0,0x1c,0xc8,0x23,0xb0,0x26,0x90,0x58, +0x8c,0x01,0x80,0x00,0x00,0x00,0x20,0x7e,0x20,0x02,0x20,0x02,0x20,0x3e,0x20,0x22, +0x20,0x20,0x40,0x3e,0x40,0x22,0x40,0x02,0x50,0x02,0x88,0x04,0x98,0x07,0xe4,0x38, +0x04,0x00,0x00,0x10,0x00,0x13,0xf8,0x10,0x00,0x11,0xf0,0x39,0x10,0x35,0x10,0x35, +0xf0,0x51,0x10,0x11,0x10,0x11,0xf0,0x10,0x00,0x10,0x00,0x17,0xfc,0x10,0x00,0x00, +0x00,0x10,0x90,0x13,0xfc,0x10,0x90,0x18,0x40,0x37,0xfc,0x35,0x00,0x31,0x00,0x50, +0xf8,0x11,0x50,0x11,0x50,0x11,0x50,0x11,0x54,0x12,0x54,0x14,0x0c,0x00,0x00,0x10, +0x40,0x10,0x40,0x13,0xfc,0x7c,0x00,0x10,0x00,0x11,0xe0,0x11,0x20,0x15,0x20,0x19, +0x20,0x71,0x20,0x11,0x20,0x12,0x24,0x12,0x24,0x34,0x1c,0x00,0x00,0x11,0x00,0x11, +0x00,0x11,0x00,0x7f,0xf8,0x12,0x08,0x14,0x08,0x13,0xc8,0x12,0x48,0x1a,0x48,0x72, +0x48,0x13,0xc8,0x10,0x08,0x10,0x08,0x30,0x30,0x00,0x00,0x10,0x40,0x10,0x40,0x17, +0xfc,0x7c,0xa4,0x14,0xa0,0x10,0xa4,0x11,0x1c,0x16,0x00,0x1b,0xf8,0x70,0x40,0x10, +0x40,0x10,0x40,0x17,0xfc,0x30,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x7e, +0xfc,0x11,0x10,0x11,0x90,0x12,0x90,0x10,0x50,0x14,0x60,0x18,0x20,0x60,0x60,0x00, +0x90,0x03,0x08,0x0c,0x04,0x00,0x00,0x00,0x00,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x10, +0x10,0x1f,0xf0,0x06,0x00,0x38,0xf8,0x20,0x88,0x20,0x88,0x26,0x88,0x38,0xf0,0x20, +0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x11,0x10,0x09,0x10,0x09,0x20,0x7f,0xfc,0x02,0x80,0x04,0x84,0x08,0x84,0x30, +0x7c,0x00,0x00,0x00,0x00,0x7f,0xfc,0x01,0x00,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x11, +0x10,0x1f,0xf0,0x19,0x00,0x05,0x00,0x03,0x00,0x04,0xc0,0x18,0x30,0x60,0x0c,0x00, +0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x7f,0xfc,0x08,0x00,0x1c,0xf0,0x1a,0x90,0x1a, +0x90,0x28,0x90,0x28,0x90,0x48,0x90,0x09,0x14,0x09,0x14,0x0a,0x0c,0x00,0x00,0x08, +0x20,0x08,0x20,0x08,0x20,0x7f,0xfc,0x08,0x90,0x18,0x88,0x1d,0x94,0x1a,0x94,0x2a, +0x50,0x28,0x60,0x48,0x20,0x08,0x50,0x09,0x88,0x0e,0x04,0x00,0x00,0x10,0x00,0x17, +0xfc,0x10,0x40,0x7f,0xf8,0x12,0x48,0x13,0xf8,0x3a,0x48,0x37,0xf8,0x36,0x40,0x51, +0x40,0x50,0x80,0x10,0xc0,0x13,0x30,0x1c,0x0c,0x00,0x00,0x08,0xa0,0x0b,0xfc,0x08, +0xa0,0x7f,0xf8,0x08,0xa0,0x1b,0xfc,0x1c,0x40,0x1b,0xf8,0x2b,0x48,0x29,0xf8,0x49, +0x48,0x0b,0xfc,0x09,0x08,0x09,0x18,0x00,0x00,0x10,0x00,0x0b,0xf8,0x08,0x40,0x40, +0x40,0x20,0x40,0x20,0x40,0x00,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x10,0x40,0x10, +0x40,0x27,0xfc,0x20,0x00,0x00,0x00,0x11,0x20,0x09,0x20,0x09,0x20,0x41,0x20,0x27, +0xf8,0x21,0x20,0x01,0x20,0x01,0x20,0x1f,0xfc,0x11,0x00,0x21,0x20,0x22,0x10,0x44, +0x08,0x48,0x08,0x00,0x00,0x10,0x40,0x09,0x40,0x09,0x40,0x43,0xf8,0x22,0x40,0x24, +0x40,0x0f,0xfc,0x00,0x00,0x13,0xf8,0x12,0x08,0x22,0x08,0x22,0x08,0x43,0xf8,0x40, +0x00,0x00,0x00,0x11,0x20,0x09,0x20,0x0f,0xf8,0x41,0x20,0x2f,0xfc,0x21,0x20,0x02, +0x10,0x17,0xec,0x18,0x20,0x13,0xe0,0x22,0x00,0x22,0x08,0x42,0x08,0x41,0xf8,0x00, +0x00,0x11,0x40,0x0f,0xf8,0x09,0x40,0x47,0xf0,0x21,0x40,0x2f,0xfc,0x00,0x80,0x13, +0xf0,0x12,0x90,0x13,0xf0,0x22,0x90,0x2f,0xfc,0x42,0x10,0x42,0x30,0x00,0x00,0x00, +0x00,0x3f,0xf8,0x21,0x08,0x21,0x08,0x3f,0xf8,0x21,0x08,0x21,0x08,0x3f,0xf8,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02, +0x00,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x00,0x00,0x3f,0xf8,0x01, +0x00,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xfc,0x10, +0x40,0x13,0xf8,0x12,0x48,0x23,0xf8,0x3e,0x48,0x67,0xf8,0x26,0x40,0x25,0x40,0x24, +0x80,0x3c,0xc0,0x03,0x30,0x0c,0x0c,0x00,0x00,0x04,0x40,0x1b,0xf8,0x70,0x00,0x11, +0xf0,0x11,0x10,0x7d,0xf0,0x10,0x00,0x1b,0xf8,0x36,0x08,0x36,0xe8,0x52,0xa8,0x12, +0xe8,0x12,0x08,0x12,0x18,0x00,0x00,0x10,0x40,0x57,0xfc,0x36,0x20,0x3a,0xf8,0x12, +0x28,0x7f,0xfc,0x12,0x28,0x1a,0xf8,0x37,0x24,0x36,0xa8,0x52,0x70,0x14,0xa8,0x17, +0x24,0x18,0x60,0x00,0x00,0x08,0x00,0x09,0xf8,0x10,0x20,0x64,0x20,0x18,0x20,0x0c, +0x20,0x12,0x20,0x7d,0x20,0x08,0x20,0x2c,0x20,0x2a,0x20,0x2a,0x20,0x4b,0xfc,0x08, +0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x10,0x40,0x65,0xfc,0x18,0x40,0x0c,0x40,0x12, +0x50,0x7d,0x90,0x08,0x90,0x2c,0xa0,0x2b,0x30,0x29,0x48,0x4b,0xf4,0x0c,0x04,0x00, +0x00,0x08,0x20,0x08,0x20,0x13,0xfc,0x64,0x90,0x18,0x88,0x0d,0x94,0x12,0x94,0x7d, +0x50,0x08,0x60,0x2a,0x20,0x2a,0x60,0x2a,0x90,0x49,0x08,0x0a,0x04,0x00,0x00,0x10, +0x00,0x13,0xf8,0x23,0x28,0x6a,0xa8,0x12,0xc8,0x1b,0xf8,0x26,0x48,0x7b,0x58,0x13, +0x58,0x5b,0x58,0x57,0xf8,0x56,0x08,0x52,0x08,0x12,0x18,0x00,0x00,0x08,0x48,0x08, +0x48,0x7f,0x48,0x08,0xfc,0x3e,0x48,0x08,0x48,0x7f,0x48,0x08,0x48,0x1d,0xfc,0x1a, +0x48,0x2a,0x88,0x48,0x88,0x09,0x08,0x0a,0x08,0x00,0x00,0x01,0x00,0x01,0x10,0x1f, +0xf0,0x01,0x20,0x7f,0xfc,0x00,0x80,0x03,0x00,0x0f,0xf8,0x72,0x00,0x03,0xf0,0x00, +0x10,0x00,0x10,0x00,0x10,0x00,0xe0,0x00,0x00,0x01,0x00,0x09,0x00,0x09,0xf0,0x09, +0x00,0x7f,0xfc,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x08,0x20,0x08,0x60,0x00,0x00,0x00,0x40,0x3c,0x40,0x24,0x40,0x27,0xfc,0x24, +0x40,0x3c,0x40,0x24,0xa0,0x24,0xa0,0x3c,0xa0,0x25,0x30,0x25,0x48,0x26,0x58,0x25, +0xe4,0x4c,0x04,0x00,0x00,0x00,0x40,0x3c,0x40,0x27,0xfc,0x26,0xa4,0x24,0xa0,0x3c, +0xa8,0x25,0x18,0x26,0x00,0x3f,0xf8,0x24,0x40,0x24,0x40,0x24,0x40,0x27,0xfc,0x4c, +0x00,0x00,0x00,0x01,0x00,0x7f,0xfc,0x08,0x20,0x0f,0xe0,0x00,0x00,0x7f,0xfc,0x44, +0x44,0x4f,0xe4,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x08,0x60,0x00, +0x00,0x04,0x20,0x08,0x20,0x1e,0x20,0x13,0xfc,0x1a,0x00,0x16,0x70,0x16,0x50,0x7f, +0x50,0x12,0x50,0x1a,0x50,0x1a,0x90,0x2a,0x94,0x23,0x14,0x46,0x0c,0x00,0x00,0x04, +0x40,0x04,0x40,0x7f,0xfc,0x05,0x40,0x01,0x00,0x7f,0xfc,0x08,0x00,0x08,0x00,0x07, +0xf0,0x09,0x20,0x09,0x20,0x09,0x24,0x11,0x24,0x60,0x1c,0x00,0x00,0x08,0x00,0x09, +0xf8,0x10,0x00,0x24,0x00,0x44,0x00,0x0b,0xfc,0x08,0x20,0x10,0x20,0x30,0x20,0x50, +0x20,0x90,0x20,0x10,0x20,0x10,0x20,0x10,0x60,0x00,0x00,0x12,0x00,0x13,0xbc,0x24, +0x80,0x49,0x00,0x0f,0xfc,0x15,0x48,0x37,0xc8,0x55,0x48,0x17,0xc8,0x11,0x08,0x1f, +0xe8,0x11,0x88,0x12,0x48,0x14,0x18,0x00,0x00,0x00,0xa0,0x3f,0xf8,0x00,0xa0,0x7f, +0xf8,0x00,0xa0,0x3f,0xfc,0x00,0x40,0x3d,0xf8,0x01,0x48,0x3d,0xf8,0x25,0x48,0x27, +0xfc,0x3d,0x08,0x01,0x18,0x00,0x00,0x00,0x00,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x00, +0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x06, +0x60,0x38,0x18,0x00,0x00,0x00,0xa0,0x3f,0xfc,0x24,0xa0,0x27,0xf8,0x3c,0xa0,0x27, +0xfc,0x3c,0x40,0x25,0xf8,0x25,0x48,0x3d,0xf8,0x19,0x48,0x17,0xfc,0x25,0x08,0x41, +0x18,0x00,0x00,0x04,0x00,0x04,0x78,0x04,0x48,0x7f,0xd0,0x12,0x50,0x11,0x60,0x22, +0xd0,0x52,0xc8,0x0c,0x44,0x04,0x44,0x0a,0x64,0x12,0x58,0x20,0x40,0x40,0x40,0x00, +0x00,0x00,0x20,0x7f,0x24,0x0c,0xfc,0x0c,0x28,0x3f,0x28,0x2d,0xfc,0x2d,0x20,0x35, +0xf8,0x37,0x88,0x21,0x10,0x3f,0xfc,0x21,0x10,0x3f,0x10,0x00,0x30,0x00,0x00,0x08, +0x20,0x08,0x20,0x14,0x20,0x12,0xfc,0x22,0x80,0x5c,0xa0,0x08,0xa0,0x7e,0xa0,0x08, +0xa0,0x2a,0xb0,0x1d,0x48,0x19,0x58,0x0f,0xe4,0x72,0x04,0x00,0x00,0x00,0x20,0x7e, +0x20,0x10,0x20,0x11,0xfc,0x11,0x00,0x3d,0x20,0x25,0x20,0x65,0x20,0x25,0x20,0x25, +0x30,0x25,0x48,0x3e,0x48,0x03,0xf4,0x04,0x04,0x00,0x00,0x10,0x00,0x13,0xf8,0x1b, +0x28,0x26,0xa8,0x26,0xc8,0x7b,0xf8,0x12,0x48,0x7f,0x58,0x13,0x58,0x57,0x58,0x3b, +0xf8,0x32,0x08,0x1e,0x08,0x62,0x18,0x00,0x00,0x00,0x00,0x3e,0xf8,0x22,0x88,0x3e, +0xf8,0x22,0x88,0x3e,0xf8,0x21,0x08,0x22,0x88,0x2f,0xe8,0x30,0x18,0x27,0xc8,0x24, +0x48,0x27,0xc8,0x20,0x18,0x00,0x00,0x00,0x40,0x3c,0x78,0x24,0x88,0x29,0x50,0x32, +0x30,0x28,0xdc,0x27,0x10,0x24,0xf8,0x24,0x90,0x24,0x90,0x3b,0xfc,0x20,0x10,0x20, +0x10,0x20,0x10,0x00,0x00,0x00,0x00,0x07,0xfc,0x00,0x40,0x7c,0x80,0x11,0xf8,0x11, +0x08,0x11,0xf8,0x11,0x08,0x15,0xf8,0x19,0x08,0x61,0xf8,0x00,0x90,0x03,0x08,0x0c, +0x04,0x00,0x00,0x00,0x30,0x1f,0xc0,0x01,0x00,0x7f,0xfc,0x03,0x80,0x05,0x40,0x19, +0x30,0x6f,0xec,0x08,0x20,0x0f,0xe0,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00, +0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x00, +0x00,0x3f,0xf8,0x20,0x08,0x27,0xc8,0x24,0x48,0x27,0xc8,0x20,0x18,0x00,0x00,0x20, +0x40,0x10,0x80,0x11,0xf0,0x0f,0x10,0x45,0xf0,0x25,0x10,0x25,0xf0,0x05,0xfc,0x15, +0x00,0x17,0xfc,0x39,0x54,0x22,0xac,0x42,0x84,0x44,0x18,0x00,0x00,0x00,0x08,0x3f, +0xa8,0x32,0xa8,0x2a,0xa8,0x2c,0xa8,0x3f,0xa8,0x24,0xa8,0x35,0xa8,0x35,0xa8,0x35, +0xa8,0x3f,0xa8,0x20,0x88,0x20,0x88,0x21,0x98,0x00,0x00,0x08,0x40,0x08,0x40,0x08, +0x40,0x3e,0x40,0x09,0xf8,0x08,0x48,0x7f,0x48,0x08,0x48,0x0c,0x48,0x12,0x48,0x16, +0x88,0x79,0x88,0x01,0x08,0x02,0x30,0x00,0x00,0x00,0x00,0x0f,0xe0,0x08,0x20,0x08, +0x20,0x0f,0xe0,0x00,0x00,0x7f,0xfc,0x04,0x00,0x07,0xe0,0x08,0x20,0x00,0x20,0x00, +0x20,0x00,0x40,0x01,0x80,0x00,0x00,0x01,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x18, +0x30,0x6f,0xec,0x00,0x00,0x00,0x00,0x0f,0xe0,0x08,0x20,0x08,0x20,0x08,0x20,0x0f, +0xe0,0x00,0x00,0x00,0x00,0x00,0x40,0x17,0xfc,0x11,0x10,0x11,0xf0,0x7c,0x00,0x17, +0xfc,0x14,0x04,0x17,0xf8,0x14,0xc8,0x1f,0x70,0x63,0xb0,0x00,0xe8,0x07,0x24,0x00, +0xc0,0x00,0x00,0x10,0x40,0x10,0x40,0x13,0xf8,0x7c,0x48,0x10,0x50,0x17,0xfc,0x10, +0x40,0x1c,0xf8,0x71,0x80,0x12,0xf8,0x14,0x88,0x10,0x08,0x10,0x08,0x30,0x30,0x00, +0x00,0x10,0x40,0x0f,0xfc,0x09,0x10,0x41,0xf0,0x20,0x00,0x2f,0xfc,0x08,0x04,0x0f, +0xf8,0x10,0xc8,0x17,0x70,0x23,0xf0,0x21,0xa8,0x46,0x24,0x40,0xc0,0x00,0x00,0x01, +0x00,0x7f,0xfc,0x08,0x20,0x0f,0xe0,0x00,0x00,0x7f,0xfc,0x40,0x04,0x7f,0xf8,0x07, +0x88,0x3a,0xd0,0x1d,0xe0,0x06,0xb0,0x38,0x8c,0x03,0x00,0x00,0x00,0x01,0x00,0x1f, +0xf0,0x05,0x40,0x07,0xc0,0x05,0x40,0x3f,0xf8,0x09,0x20,0x7f,0xfc,0x2a,0xa8,0x3e, +0xf8,0x2a,0xa8,0x3e,0xf8,0x7f,0xfc,0x08,0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x7f, +0xfc,0x08,0xa4,0x3f,0x2c,0x08,0xb4,0x7f,0x64,0x08,0xfc,0x1e,0x74,0x12,0xac,0x2d, +0x2c,0x44,0x38,0x1b,0x00,0x60,0xfc,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01, +0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x1f,0xf0,0x02,0x80,0x02,0x80,0x02,0x80,0x04, +0x84,0x18,0x84,0x60,0x7c,0x00,0x00,0x04,0x08,0x04,0x08,0x7f,0xc8,0x08,0x48,0x0a, +0x48,0x32,0x48,0x0c,0x48,0x05,0x48,0x09,0x48,0x12,0x48,0x26,0x08,0x09,0x08,0x11, +0x08,0x60,0x18,0x00,0x00,0x01,0x00,0x09,0x00,0x09,0x00,0x1f,0xf0,0x11,0x00,0x21, +0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x0f,0xe0,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00, +0x00,0x00,0x00,0x00,0x00,0x7f,0xf8,0x40,0x08,0x5f,0xe8,0x42,0x08,0x42,0x08,0x42, +0x08,0x5f,0xe8,0x42,0x08,0x42,0x48,0x42,0x28,0x5f,0xe8,0x40,0x08,0x7f,0xf8,0x00, +0x00,0x08,0x00,0x7f,0xf0,0x08,0x90,0x3e,0x94,0x00,0x94,0x3f,0x0c,0x26,0x00,0x79, +0xf8,0x08,0x88,0x7f,0x50,0x1c,0x50,0x2a,0x20,0x48,0xd0,0x0b,0x0c,0x00,0x00,0x00, +0x10,0x7f,0xd0,0x0c,0x50,0x0c,0x7c,0x3f,0x90,0x2d,0x10,0x2d,0xfc,0x35,0x00,0x37, +0x78,0x21,0x48,0x3f,0x48,0x21,0x48,0x3f,0x78,0x00,0x00,0x00,0x00,0x08,0x20,0x28, +0x40,0x28,0xf8,0x3e,0x88,0x28,0xf8,0x48,0x88,0x7f,0xf8,0x00,0xfc,0x3e,0x80,0x22, +0xfc,0x22,0x54,0x3f,0xac,0x01,0x44,0x02,0x18,0x00,0x00,0x00,0x00,0x1f,0xf0,0x11, +0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x01,0x00,0x3f,0xf8,0x01,0x00,0x7f,0xfc,0x00, +0x00,0x24,0x88,0x22,0x44,0x42,0x44,0x00,0x00,0x08,0x10,0x4b,0x98,0x30,0x14,0x1f, +0xd4,0x30,0x10,0x4b,0xfc,0x08,0x10,0x1b,0x90,0x28,0x10,0x4b,0xa8,0x0a,0xa8,0x0a, +0xa8,0x33,0xc4,0x10,0x84,0x00,0x00,0x20,0x40,0x10,0x40,0x17,0xfc,0x44,0xa0,0x27, +0xf8,0x24,0xa8,0x04,0xa8,0x17,0xf8,0x15,0x20,0x15,0xe8,0x25,0x30,0x29,0x64,0x49, +0xa4,0x56,0x1c,0x00,0x00,0x00,0x00,0x3f,0xfc,0x28,0xa0,0x2b,0xf8,0x2a,0xa8,0x3a, +0xa8,0x2b,0xf8,0x28,0x40,0x3f,0xfc,0x28,0x90,0x29,0xd0,0x28,0x20,0x28,0xd0,0x5b, +0x08,0x00,0x00,0x22,0x00,0x14,0xfc,0x7f,0x40,0x49,0x40,0x7f,0x78,0x49,0x48,0x7f, +0x68,0x00,0x58,0x3e,0x58,0x22,0x88,0x3e,0x88,0x22,0xec,0x3f,0x8c,0x00,0x04,0x00, +0x00,0x08,0x00,0x08,0x00,0x1f,0xf8,0x12,0x48,0x22,0x48,0x44,0x88,0x08,0x88,0x01, +0x30,0x01,0x00,0x04,0x90,0x24,0x88,0x24,0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x11, +0x00,0x11,0x00,0x11,0xf8,0x1a,0xa8,0x34,0xa8,0x35,0x28,0x32,0x48,0x50,0xb0,0x10, +0x80,0x11,0x50,0x15,0x48,0x15,0x14,0x19,0x14,0x10,0xf0,0x00,0x00,0x00,0x00,0x0f, +0xe0,0x08,0x20,0x09,0xe0,0x09,0x20,0x7f,0xfc,0x40,0x04,0x4f,0xe4,0x08,0x20,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x08,0x60,0x00,0x00,0x04,0x40,0x44,0x40,0x28, +0x80,0x11,0xf8,0x31,0x08,0x49,0x08,0x09,0x08,0x19,0xf8,0x29,0x08,0x49,0x08,0x09, +0x08,0x09,0x08,0x31,0xf8,0x10,0x00,0x00,0x00,0x00,0x00,0x21,0xc0,0x10,0x40,0x10, +0x40,0x00,0x40,0x00,0xc0,0x70,0xa0,0x11,0x20,0x11,0x10,0x12,0x10,0x14,0x08,0x18, +0x04,0x26,0x00,0x41,0xfc,0x00,0x00,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x48,0x24, +0x48,0x27,0xd0,0x24,0x60,0x24,0x40,0x24,0x40,0x24,0x40,0x25,0x40,0x26,0x44,0x38, +0x44,0x60,0x3c,0x00,0x00,0x00,0x00,0x27,0xfc,0x20,0x40,0x20,0x80,0x27,0xf8,0x39, +0x08,0x21,0xf8,0x21,0x08,0x25,0xf8,0x25,0x08,0x1d,0xf8,0x00,0x90,0x03,0x08,0x0c, +0x04,0x00,0x00,0x01,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x18,0x30,0x67,0xcc,0x00, +0x00,0x00,0x00,0x1f,0xe0,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x80,0x03,0x00,0x00, +0x00,0x00,0x00,0x3f,0xf8,0x21,0x08,0x21,0x08,0x3f,0xf8,0x21,0x08,0x23,0x88,0x23, +0x88,0x25,0x48,0x29,0x28,0x31,0x18,0x21,0x08,0x3f,0xf8,0x00,0x00,0x00,0x00,0x00, +0x40,0x10,0x40,0x10,0x40,0x13,0xf8,0x7e,0x48,0x12,0x48,0x13,0xf8,0x12,0x48,0x16, +0x48,0x1b,0xf8,0x60,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x0c,0x00,0x79, +0xf8,0x26,0x88,0x18,0xf8,0x6c,0x88,0x36,0xf8,0x1a,0xa8,0x62,0x90,0x0d,0xcc,0x01, +0x00,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x10,0x18,0x11,0xe0,0x11, +0x20,0x11,0xfc,0x7d,0x20,0x25,0x10,0x25,0xd4,0x27,0x0c,0x79,0xfc,0x49,0x08,0x0d, +0xf8,0x15,0x08,0x21,0xf8,0x40,0x00,0x00,0x00,0x10,0x00,0x11,0xf0,0x11,0x10,0x19, +0x10,0x35,0xf0,0x35,0x10,0x31,0x10,0x51,0xf4,0x11,0x44,0x11,0x28,0x11,0x30,0x11, +0x50,0x11,0x88,0x16,0x04,0x00,0x00,0x0c,0x00,0x78,0xf8,0x26,0x88,0x18,0xf8,0x78, +0x88,0x1c,0xf8,0x6c,0xa4,0x14,0xb8,0x65,0xc8,0x19,0x04,0x04,0x90,0x24,0x88,0x24, +0x24,0x43,0xe4,0x00,0x00,0x00,0x70,0x0f,0x80,0x08,0x80,0x0f,0xfc,0x08,0x40,0x0f, +0x24,0x70,0x1c,0x0f,0xf4,0x08,0x10,0x0f,0xf0,0x08,0x10,0x08,0x10,0x0f,0xf0,0x00, +0x00,0x00,0x00,0x00,0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x1f,0xf0,0x10,0x10,0x1f, +0xf0,0x10,0x80,0x10,0x98,0x1f,0xe0,0x10,0x80,0x10,0x84,0x1e,0x84,0x60,0x7c,0x00, +0x00,0x08,0x00,0x09,0xf0,0x09,0x10,0x09,0x10,0x7f,0xf0,0x19,0x10,0x1d,0x10,0x1b, +0xf4,0x2b,0x44,0x29,0x28,0x49,0x30,0x09,0x50,0x09,0x88,0x0e,0x04,0x00,0x00,0x10, +0x00,0x13,0xf8,0x12,0x48,0x7e,0x48,0x12,0x48,0x13,0xf8,0x3a,0x48,0x36,0xe8,0x36, +0xd8,0x53,0x58,0x52,0x48,0x12,0x48,0x13,0xf8,0x10,0x00,0x00,0x00,0x10,0x00,0x0b, +0xf0,0x0a,0x10,0x42,0x10,0x23,0xf0,0x22,0x10,0x03,0xf0,0x12,0x40,0x12,0x48,0x13, +0xf0,0x22,0x40,0x22,0x44,0x43,0xc4,0x4c,0x3c,0x00,0x00,0x00,0x80,0x00,0x80,0x0f, +0xfc,0x48,0x00,0x2b,0xf0,0x2a,0x10,0x0b,0xf0,0x1a,0x10,0x2b,0xf8,0x4a,0x48,0x12, +0x50,0x12,0x20,0x23,0x90,0x4c,0x0c,0x00,0x00,0x08,0x88,0x08,0x88,0x10,0x88,0x64, +0x88,0x17,0xfc,0x08,0x88,0x14,0x88,0x7e,0x88,0x08,0xf8,0x2c,0x88,0x2a,0x88,0x2a, +0x88,0x48,0xf8,0x08,0x00,0x00,0x00,0x00,0x00,0x1f,0xe0,0x10,0x20,0x10,0x20,0x1f, +0xe0,0x10,0x20,0x10,0x20,0x1f,0xe8,0x11,0x08,0x11,0x10,0x10,0xa0,0x13,0x40,0x1c, +0x30,0x70,0x0c,0x00,0x00,0x00,0x40,0x00,0x80,0x3f,0xf8,0x02,0x48,0x03,0xf8,0x7e, +0x48,0x13,0xf8,0x1a,0xc8,0x14,0xd0,0x27,0x50,0x7b,0x68,0x02,0x7c,0x0c,0x44,0x30, +0x3c,0x00,0x00,0x08,0x80,0x08,0x80,0x28,0x98,0x2f,0xe0,0x28,0x80,0x28,0x84,0x2e, +0x84,0x70,0x7c,0x00,0x00,0x1f,0xf0,0x00,0x00,0x00,0x00,0x7f,0xfc,0x00,0x00,0x00, +0x00,0x08,0x80,0x08,0x80,0x08,0x80,0x17,0xfc,0x10,0x80,0x30,0x80,0x50,0x80,0x11, +0xf8,0x11,0x20,0x12,0x20,0x14,0x20,0x18,0x20,0x13,0xfc,0x10,0x00,0x00,0x00,0x00, +0x00,0x3f,0xf0,0x02,0x10,0x09,0x10,0x09,0x20,0x04,0x20,0x04,0x40,0x02,0x40,0x01, +0x80,0x01,0x00,0x02,0x80,0x04,0x40,0x18,0x30,0x60,0x0c,0x00,0x00,0x00,0x80,0x00, +0x90,0x79,0x18,0x4f,0xe4,0x49,0x20,0x49,0x24,0x4a,0x9c,0x4c,0xf0,0x49,0x10,0x4b, +0x20,0x7c,0xa0,0x00,0x40,0x01,0xb0,0x0e,0x0c,0x00,0x00,0x01,0x08,0x10,0x90,0x13, +0xfc,0x10,0x40,0x55,0xf8,0x54,0x40,0x57,0xfc,0x54,0x80,0x55,0xf8,0x55,0x20,0x7e, +0x20,0x04,0x20,0x0b,0xfc,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x7f, +0xfc,0x02,0x00,0x02,0x00,0x04,0x00,0x07,0xf0,0x08,0x80,0x08,0x80,0x10,0x80,0x20, +0x80,0x5f,0xfc,0x00,0x00,0x00,0x00,0x08,0x20,0x04,0x20,0x04,0x40,0x3f,0xf8,0x01, +0x00,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x08,0x00,0x0f,0xf8,0x10,0x80,0x20,0x80,0x5f, +0xfc,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x03,0x80,0x05,0x40,0x19, +0x30,0x6f,0xec,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x7f,0xfc,0x00, +0x00,0x00,0x00,0x10,0x40,0x08,0x40,0x08,0x40,0x42,0x50,0x22,0x48,0x22,0x48,0x04, +0x4c,0x14,0x54,0x18,0xd0,0x10,0x60,0x20,0x20,0x20,0x40,0x41,0x80,0x4e,0x00,0x00, +0x00,0x01,0x10,0x00,0x90,0x7c,0xa0,0x13,0xf8,0x10,0x40,0x11,0xf0,0x7c,0x40,0x17, +0xfc,0x11,0x00,0x13,0xf8,0x1a,0x40,0x64,0x40,0x0b,0xfc,0x00,0x00,0x00,0x00,0x00, +0x20,0x3f,0x20,0x08,0x20,0x08,0xb0,0x08,0xa8,0x10,0xa8,0x1f,0x24,0x33,0x2c,0x52, +0x68,0x12,0x10,0x12,0x10,0x1e,0x20,0x00,0xc0,0x03,0x00,0x00,0x00,0x00,0x80,0x3c, +0x80,0x00,0x80,0x7e,0xfc,0x01,0x40,0x3d,0x40,0x02,0x7c,0x3c,0x40,0x00,0x40,0x3c, +0x7c,0x24,0x40,0x24,0x40,0x3c,0x40,0x00,0x40,0x00,0x00,0x08,0x20,0x09,0x24,0x14, +0xa4,0x12,0xa8,0x22,0xf8,0x5c,0x88,0x08,0xf8,0x7e,0x88,0x08,0xf8,0x2a,0x88,0x1c, +0xf8,0x18,0x50,0x0e,0x88,0x73,0x04,0x00,0x00,0x10,0x40,0x09,0x50,0x49,0x48,0x22, +0x4c,0x2c,0xd4,0x08,0x60,0x17,0x80,0x21,0x00,0x7f,0xfc,0x02,0x90,0x0c,0x90,0x74, +0x60,0x07,0x30,0x38,0x0c,0x00,0x00,0x01,0x00,0x09,0x20,0x09,0x20,0x09,0x20,0x19, +0x60,0x15,0x50,0x23,0x88,0x41,0x04,0x3f,0xf8,0x01,0x00,0x01,0x00,0x01,0x00,0x7f, +0xfc,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x1f,0xfc,0x10,0x00,0x14,0x90,0x14, +0x90,0x16,0x98,0x19,0xa4,0x10,0xc4,0x17,0xf0,0x20,0x80,0x20,0x80,0x40,0x80,0x1f, +0xfc,0x00,0x00,0x10,0x40,0x10,0x40,0x11,0x50,0x7d,0x50,0x11,0x50,0x11,0x58,0x12, +0xe4,0x1c,0x44,0x70,0x40,0x13,0xf8,0x10,0x40,0x10,0x40,0x10,0x40,0x37,0xfc,0x00, +0x00,0x08,0x40,0x0f,0xf8,0x08,0x40,0x13,0xf8,0x10,0x40,0x3f,0xfc,0x52,0x10,0x13, +0xf0,0x12,0x10,0x13,0xf0,0x12,0x10,0x13,0xf0,0x13,0x10,0x1c,0x08,0x00,0x00,0x08, +0x40,0x0a,0x48,0x0a,0x48,0x13,0xf8,0x12,0x98,0x31,0x20,0x53,0xfc,0x16,0x20,0x1b, +0xf8,0x12,0x20,0x13,0xf8,0x12,0x20,0x12,0x20,0x13,0xfc,0x00,0x00,0x00,0x00,0x3f, +0xf8,0x01,0x00,0x1f,0xf0,0x11,0x10,0x11,0x10,0x1f,0xf0,0x11,0x10,0x11,0x10,0x7f, +0xfc,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x30,0x00,0x00,0x00,0x00,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x08,0x20,0x7f,0xfc,0x12,0x00,0x1e,0xf8,0x12,0x88,0x1e,0x48,0x12, +0x30,0x1e,0x50,0x73,0x88,0x02,0x04,0x00,0x00,0x08,0x80,0x08,0x90,0x3f,0x88,0x08, +0x88,0x08,0x80,0x7f,0xfc,0x00,0x48,0x3e,0x48,0x22,0x50,0x22,0x30,0x22,0x20,0x3e, +0x54,0x00,0x8c,0x00,0x04,0x00,0x00,0x01,0x00,0x7f,0xfc,0x44,0x44,0x7f,0xf8,0x04, +0x40,0x1f,0xf0,0x04,0x40,0x7f,0xfc,0x05,0x40,0x19,0x30,0x6f,0xec,0x01,0x00,0x7f, +0xfc,0x00,0x00,0x00,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x1f,0xf0,0x01,0x10,0x7f, +0xfc,0x01,0x10,0x1f,0xf0,0x02,0x00,0x7f,0xfc,0x04,0x20,0x0f,0x40,0x01,0xe0,0x3e, +0x18,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x41,0x04,0x5f,0xf4,0x08,0x20,0x04, +0x40,0x7f,0xfc,0x01,0x00,0x01,0x00,0x3f,0xf8,0x01,0x00,0x01,0x00,0x01,0x00,0x00, +0x00,0x06,0x10,0x79,0x10,0x49,0x20,0x2a,0x28,0x24,0x48,0x08,0x90,0x08,0x10,0x7f, +0x24,0x1c,0x44,0x1a,0x08,0x29,0x08,0x48,0x10,0x08,0x20,0x08,0x40,0x00,0x00,0x00, +0x80,0x00,0x80,0x00,0x80,0x7f,0xfc,0x00,0xa0,0x00,0xc0,0x00,0x80,0x01,0x80,0x02, +0x80,0x0c,0x80,0x30,0x80,0x00,0x80,0x00,0x80,0x01,0x80,0x00,0x00,0x10,0x18,0x13, +0xe8,0x12,0x48,0x7d,0x50,0x11,0x20,0x10,0x40,0x10,0x40,0x1f,0xfc,0x70,0xe0,0x10, +0xe0,0x11,0x50,0x12,0x48,0x14,0x44,0x30,0x40,0x00,0x00,0x08,0x40,0x08,0x50,0x3f, +0x48,0x08,0x48,0x08,0x40,0x7f,0xfc,0x08,0x48,0x7f,0x48,0x1c,0x50,0x1a,0x30,0x29, +0x24,0x48,0x54,0x08,0x8c,0x09,0x04,0x00,0x00,0x01,0x00,0x09,0xf0,0x09,0x00,0x3f, +0xfc,0x00,0x50,0x1f,0xfc,0x10,0x40,0x1f,0xc8,0x12,0x28,0x17,0x30,0x16,0x90,0x2a, +0xb4,0x32,0x4c,0x46,0x84,0x00,0x00,0x10,0x40,0x08,0x40,0x0f,0xfc,0x41,0x10,0x20, +0xa0,0x20,0xe0,0x07,0x1c,0x09,0x10,0x09,0xf0,0x09,0x10,0x11,0xf0,0x12,0x10,0x22, +0x10,0x24,0x10,0x00,0x00,0x08,0x88,0x08,0x88,0x11,0x10,0x22,0x20,0x11,0x10,0x08, +0x88,0x01,0x00,0x01,0x08,0x11,0x08,0x12,0x90,0x22,0x80,0x04,0x40,0x18,0x30,0x60, +0x0c,0x00,0x00,0x00,0x18,0x00,0xe8,0x3f,0x08,0x11,0x10,0x08,0xa0,0x08,0x40,0x01, +0x00,0x7f,0xfc,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x01,0x00,0x00, +0x00,0x00,0x00,0x1f,0xf8,0x10,0x08,0x1f,0xf8,0x10,0x88,0x16,0xb0,0x10,0x80,0x16, +0xb0,0x12,0x80,0x17,0xf0,0x28,0x80,0x2f,0xf8,0x40,0x80,0x00,0x80,0x00,0x00,0x00, +0x40,0x3f,0x40,0x09,0xf0,0x08,0x50,0x08,0x94,0x10,0x94,0x1f,0x0c,0x32,0x20,0x52, +0x20,0x13,0xfc,0x12,0x20,0x1e,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x08,0x80,0x08, +0x88,0x2f,0x90,0x28,0xe4,0x28,0x84,0x2e,0x7c,0x70,0x00,0x3f,0xf8,0x02,0x00,0x07, +0xf0,0x1c,0x10,0x64,0x10,0x07,0xf0,0x00,0x00,0x00,0x00,0x08,0x00,0x0f,0xf8,0x11, +0x88,0x2a,0x50,0x64,0x20,0x18,0x10,0x1f,0xec,0x60,0x00,0x1f,0xf8,0x09,0x20,0x09, +0x10,0x11,0x08,0x21,0x08,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x04, +0x40,0x03,0x80,0x06,0xc0,0x78,0x3c,0x17,0xd0,0x10,0x10,0x1f,0xf0,0x15,0x90,0x15, +0x50,0x29,0x50,0x43,0x10,0x00,0x00,0x08,0x00,0x08,0xf8,0x10,0xa8,0x64,0xa8,0x18, +0xa8,0x0c,0xa8,0x12,0xf8,0x7d,0xa8,0x08,0xa8,0x2c,0xa8,0x2a,0xa8,0x2a,0xa8,0x48, +0xf8,0x08,0x00,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x70,0x3f,0x90,0x12,0x10,0x09, +0x20,0x08,0x40,0x01,0x00,0x7f,0xfc,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01, +0x00,0x00,0x00,0x08,0x40,0x08,0x50,0x3f,0x48,0x08,0x48,0x7f,0xfc,0x08,0x40,0x7f, +0x48,0x08,0x48,0x19,0x50,0x36,0x30,0x52,0x24,0x15,0x54,0x19,0x8c,0x60,0x04,0x00, +0x00,0x04,0x40,0x1f,0x50,0x04,0x48,0x7f,0xfc,0x04,0x40,0x7f,0xc8,0x1f,0x48,0x15, +0x48,0x1f,0x50,0x15,0x30,0x1f,0x24,0x7f,0xd4,0x04,0x8c,0x04,0x04,0x00,0x00,0x01, +0x00,0x3d,0xf8,0x25,0x48,0x2a,0xe8,0x32,0xb0,0x2d,0x90,0x25,0xf8,0x26,0x04,0x27, +0xf8,0x24,0x40,0x39,0x50,0x21,0x48,0x22,0x48,0x20,0xc0,0x00,0x00,0x04,0x08,0x04, +0x48,0x7f,0xc8,0x11,0x48,0x0e,0x48,0x1b,0xc8,0x71,0x48,0x1f,0x48,0x11,0x48,0x1f, +0x48,0x11,0x48,0x11,0x08,0x21,0x08,0x41,0x18,0x00,0x00,0x02,0x00,0x02,0x00,0x02, +0x00,0x7f,0xfc,0x04,0x40,0x0c,0x40,0x08,0x40,0x0b,0xf8,0x18,0x40,0x28,0x40,0x48, +0x40,0x08,0x40,0x0f,0xfc,0x08,0x00,0x00,0x00,0x08,0x10,0x08,0x10,0x08,0x10,0x7f, +0xfc,0x08,0x10,0x1c,0x30,0x1a,0x30,0x1a,0x50,0x28,0x50,0x28,0x90,0x49,0x10,0x08, +0x10,0x08,0x10,0x08,0x30,0x00,0x00,0x00,0x00,0x3f,0xf8,0x24,0x48,0x24,0x48,0x3f, +0xf8,0x02,0x40,0x3e,0x78,0x02,0x40,0x3e,0x78,0x02,0x40,0x1c,0x7c,0x64,0x40,0x08, +0x40,0x10,0x40,0x00,0x00,0x00,0x10,0x3e,0x10,0x22,0x10,0x22,0x10,0x3f,0xfc,0x22, +0x30,0x3e,0x30,0x22,0x50,0x22,0x50,0x3e,0x90,0x15,0x10,0x12,0x10,0x22,0x10,0x40, +0x30,0x00,0x00,0x00,0x00,0x03,0xf8,0x21,0x10,0x11,0x10,0x11,0x10,0x01,0x10,0x0f, +0xfc,0x10,0x30,0x10,0x30,0x20,0x50,0x20,0x90,0x43,0x10,0x4c,0x10,0x00,0x30,0x00, +0x00,0x10,0x00,0x11,0xfc,0x11,0x00,0x11,0x00,0x7d,0xf8,0x11,0x88,0x11,0x88,0x11, +0x50,0x11,0x50,0x1e,0x20,0x62,0x60,0x04,0x90,0x0b,0x08,0x10,0x04,0x00,0x00,0x00, +0x00,0x3d,0xfc,0x25,0x00,0x29,0x00,0x29,0xf8,0x31,0x88,0x29,0x88,0x25,0x50,0x25, +0x50,0x25,0x20,0x3a,0x20,0x22,0x50,0x25,0x88,0x2e,0x04,0x00,0x00,0x00,0x00,0x13, +0xf8,0x12,0x48,0x13,0xf8,0x7e,0x48,0x13,0xf8,0x10,0x40,0x10,0xa0,0x1d,0x30,0x73, +0x28,0x0d,0x24,0x01,0x20,0x02,0x20,0x04,0x20,0x00,0x00,0x11,0x10,0x11,0x10,0x11, +0x10,0x7f,0xfc,0x10,0xd4,0x18,0xd4,0x35,0x7c,0x35,0x54,0x33,0xd4,0x55,0x7c,0x59, +0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x00,0x00,0x02,0x20,0x01,0xc0,0x1f,0x60,0x01, +0x10,0x7f,0xfc,0x02,0x00,0x07,0xf0,0x0c,0x10,0x17,0xf0,0x64,0x10,0x07,0xf0,0x04, +0x10,0x04,0x10,0x04,0x30,0x00,0x00,0x02,0x10,0x01,0x10,0x79,0x20,0x4b,0xf8,0x48, +0x40,0x48,0x40,0x48,0x40,0x4f,0xfc,0x48,0x40,0x48,0xa0,0x78,0xa0,0x01,0x10,0x06, +0x08,0x18,0x04,0x00,0x00,0x08,0x20,0x08,0x20,0x09,0xfc,0x2a,0x20,0x2a,0x50,0x2a, +0x88,0x2b,0xfc,0x2a,0x08,0x2a,0xe8,0x2a,0xa8,0x2a,0xa8,0x3e,0xe8,0x00,0x08,0x00, +0x18,0x00,0x00,0x00,0x40,0x10,0x40,0x13,0xf8,0x10,0x60,0x7c,0x90,0x13,0x08,0x17, +0xfc,0x10,0x08,0x17,0xc8,0x1a,0x48,0x62,0x48,0x03,0xc8,0x00,0x08,0x00,0x18,0x00, +0x00,0x00,0x40,0x7c,0x40,0x13,0xfc,0x10,0x60,0x10,0x90,0x3d,0x10,0x27,0xfc,0x64, +0x08,0x25,0xe8,0x25,0x28,0x25,0x28,0x3d,0xe8,0x00,0x08,0x00,0x18,0x00,0x00,0x00, +0x40,0x3e,0x78,0x22,0xd0,0x3f,0x30,0x08,0xc8,0x2f,0x74,0x3a,0x50,0x6f,0xf0,0x08, +0x20,0x0f,0xfc,0x08,0x00,0x0f,0xf8,0x2a,0x88,0x45,0x70,0x00,0x00,0x09,0x00,0x09, +0x00,0x09,0x00,0x13,0xfc,0x12,0x80,0x34,0x80,0x58,0xf8,0x10,0x80,0x10,0x80,0x10, +0xf8,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x00,0x00,0x08,0x08,0x49,0x48,0x29, +0x48,0x2a,0x48,0x08,0x48,0x3e,0x48,0x22,0x48,0x3e,0x48,0x22,0x48,0x3e,0x48,0x22, +0x48,0x22,0x08,0x22,0x08,0x26,0x18,0x00,0x00,0x01,0x00,0x01,0x00,0x79,0x00,0x4b, +0xfc,0x4a,0x80,0x4c,0x80,0x48,0xf8,0x48,0x80,0x48,0x80,0x48,0xf8,0x78,0x80,0x00, +0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x10,0x40,0x10,0x40,0x17,0xfc,0x7c,0xa4,0x14, +0xa8,0x11,0x18,0x13,0x00,0x19,0xfc,0x72,0x40,0x14,0x78,0x10,0x40,0x10,0x78,0x10, +0x40,0x30,0x40,0x00,0x00,0x01,0x00,0x01,0x00,0x79,0x00,0x49,0xfc,0x4a,0x40,0x4a, +0x40,0x7c,0x7c,0x48,0x40,0x48,0x40,0x48,0x7c,0x48,0x40,0x78,0x40,0x00,0x40,0x00, +0x40,0x00,0x00,0x22,0x00,0x12,0xf8,0x14,0x88,0x7f,0x88,0x08,0x88,0x2a,0xf8,0x2a, +0x88,0x2a,0x88,0x2a,0xf8,0x3e,0x88,0x08,0x88,0x08,0x88,0x11,0x08,0x22,0x18,0x00, +0x00,0x10,0x00,0x13,0xf8,0x12,0xa8,0x7e,0xa8,0x12,0xa8,0x1a,0xa8,0x17,0xfc,0x36, +0xa8,0x32,0xa8,0x52,0xa8,0x12,0xa8,0x12,0xa8,0x12,0xa8,0x12,0x18,0x00,0x00,0x01, +0x00,0x01,0x00,0x7f,0xfc,0x44,0x84,0x44,0x84,0x0a,0x78,0x12,0x00,0x07,0xfc,0x19, +0x00,0x61,0xf8,0x01,0x00,0x01,0xf8,0x01,0x00,0x01,0x00,0x00,0x00,0x10,0x40,0x10, +0x40,0x1f,0xfc,0x28,0xa0,0x45,0x10,0x7f,0xfc,0x01,0x00,0x1f,0xf0,0x11,0x10,0x13, +0xe0,0x05,0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x7f, +0xfc,0x01,0x00,0x7f,0xfc,0x42,0x44,0x4c,0x84,0x03,0x40,0x02,0x30,0x7f,0xc8,0x05, +0x40,0x19,0x30,0x61,0x08,0x01,0x00,0x00,0x00,0x08,0x50,0x08,0x50,0x14,0x50,0x13, +0xfc,0x22,0x50,0x5c,0x50,0x09,0xfc,0x7e,0x00,0x08,0xf8,0x2a,0x88,0x1c,0xf8,0x18, +0x88,0x0e,0xf8,0x70,0x00,0x00,0x00,0x08,0x88,0x0a,0x48,0x09,0x48,0x7f,0x10,0x08, +0x60,0x1c,0x40,0x1b,0xfc,0x1a,0x90,0x28,0x90,0x29,0xd0,0x49,0x20,0x08,0x30,0x08, +0xc8,0x0b,0x08,0x00,0x00,0x08,0x20,0x08,0x20,0x1e,0xf8,0x24,0x20,0x7e,0x20,0x2b, +0xfc,0x3e,0x20,0x2a,0x20,0x3e,0xf8,0x04,0x20,0x32,0x20,0x2a,0x20,0x29,0xfc,0x40, +0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x1f,0xfc,0x14,0xa0,0x23,0x10,0x49,0x20,0x09, +0x20,0x7f,0xfc,0x09,0x20,0x09,0x20,0x09,0xe0,0x08,0x00,0x0f,0xf8,0x00,0x00,0x00, +0x00,0x00,0x40,0x1f,0x40,0x11,0x40,0x1f,0x48,0x11,0x48,0x1f,0x50,0x00,0x60,0x7f, +0xc0,0x04,0x40,0x17,0x44,0x14,0x44,0x1c,0x3c,0x26,0x00,0x41,0xfc,0x00,0x00,0x00, +0x00,0x1f,0xf0,0x12,0x90,0x12,0x90,0x12,0x90,0x12,0x90,0x12,0x90,0x7f,0xfc,0x12, +0x90,0x12,0x90,0x12,0x90,0x12,0x90,0x12,0x90,0x10,0x30,0x00,0x00,0x00,0x08,0x3f, +0x48,0x21,0x48,0x21,0x48,0x3f,0x48,0x24,0x48,0x24,0x48,0x3f,0x48,0x35,0x48,0x55, +0x48,0x55,0x48,0x17,0x08,0x14,0x08,0x04,0x18,0x00,0x00,0x01,0x00,0x7f,0xfc,0x48, +0x04,0x4f,0xf8,0x19,0x90,0x66,0x60,0x14,0x30,0x1f,0xec,0x60,0x00,0x3f,0xf8,0x05, +0x40,0x19,0x30,0x61,0x08,0x03,0x00,0x00,0x00,0x11,0x24,0x11,0x24,0x12,0x48,0x7c, +0x90,0x12,0x48,0x11,0xa4,0x10,0x40,0x14,0x78,0x18,0x88,0x71,0x90,0x12,0x50,0x10, +0x20,0x10,0xc0,0x33,0x00,0x00,0x00,0x10,0x00,0x11,0xf0,0x11,0x10,0x7d,0xf0,0x11, +0x10,0x1f,0xfc,0x14,0x80,0x1f,0xf8,0x74,0x88,0x17,0xc8,0x14,0xa8,0x17,0x90,0x1c, +0xe8,0x30,0x84,0x00,0x00,0x10,0x40,0x17,0xfc,0x15,0x04,0x7d,0xf8,0x13,0x68,0x16, +0xf0,0x11,0x90,0x1b,0xf8,0x74,0x04,0x13,0xf8,0x11,0x50,0x12,0x48,0x14,0x48,0x30, +0xc0,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x7f,0x40,0x08,0x40,0x18,0x40,0x1c, +0x40,0x1a,0x40,0x29,0x40,0x29,0x40,0x48,0x40,0x08,0x44,0x08,0x44,0x08,0x3c,0x00, +0x00,0x02,0x00,0x02,0xf0,0x34,0x90,0x0c,0x94,0x1a,0x94,0x69,0x0c,0x0a,0x00,0x7f, +0xf8,0x1c,0x88,0x1a,0x50,0x2a,0x50,0x48,0x20,0x08,0xd0,0x0b,0x0c,0x00,0x00,0x04, +0x40,0x7f,0xfc,0x04,0x60,0x3f,0xfc,0x24,0x88,0x28,0x50,0x31,0xfc,0x29,0x60,0x25, +0xf8,0x25,0x20,0x25,0xf8,0x3a,0x20,0x24,0x20,0x21,0xfc,0x00,0x00,0x08,0x48,0x08, +0x48,0x7c,0x90,0x14,0xfc,0x15,0x90,0x23,0x90,0x48,0xf8,0x08,0x90,0x7f,0x90,0x1c, +0xf8,0x1a,0x90,0x29,0x90,0x48,0x90,0x08,0xfc,0x00,0x00,0x02,0x00,0x04,0x00,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x1d,0x70,0x01,0x00,0x1d,0x70,0x01, +0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x00,0x00,0x08,0x20,0x09,0xfc,0x1e,0x20,0x24, +0xf8,0x7e,0x20,0x2b,0xfc,0x3e,0x00,0x2a,0xf8,0x3e,0x88,0x04,0xf8,0x3a,0x88,0x2e, +0xf8,0x28,0x88,0x40,0x98,0x00,0x00,0x10,0x08,0x17,0xa8,0x14,0xa8,0x7c,0xa8,0x14, +0xa8,0x17,0xa8,0x12,0x28,0x1a,0x28,0x73,0xa8,0x12,0xa8,0x14,0xa8,0x14,0x88,0x18, +0x88,0x33,0x18,0x00,0x00,0x08,0x20,0x09,0xfc,0x14,0x20,0x12,0xf8,0x22,0x20,0x5d, +0xfc,0x08,0x00,0x7e,0xf8,0x08,0x88,0x2a,0xf8,0x1c,0x88,0x18,0xf8,0x0e,0x88,0x70, +0x98,0x00,0x00,0x08,0x20,0x08,0x20,0x1e,0x20,0x25,0xfc,0x7e,0x50,0x2a,0x48,0x3e, +0x94,0x2b,0x54,0x3e,0x50,0x04,0x20,0x32,0x30,0x2a,0x50,0x28,0x88,0x43,0x04,0x00, +0x00,0x00,0x00,0x00,0x00,0x1f,0xf0,0x12,0x90,0x12,0x90,0x12,0x90,0x12,0x90,0x12, +0x90,0x12,0x90,0x12,0x90,0x12,0x90,0x12,0x90,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00, +0x00,0x07,0xfc,0x78,0xa0,0x48,0xa0,0x4b,0xf8,0x4a,0xa8,0x7a,0xa8,0x4a,0xa8,0x4a, +0xa8,0x4b,0x38,0x4a,0x08,0x7a,0x08,0x03,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x3f, +0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xf0,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x80,0x05, +0x40,0x19,0x30,0x69,0x2c,0x09,0x20,0x15,0x50,0x2b,0xa8,0x09,0x20,0x15,0x50,0x23, +0x88,0x7f,0xfc,0x01,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x02,0x80,0x04,0x60,0x3f, +0x90,0x02,0x00,0x7f,0xfc,0x04,0xc0,0x09,0x20,0x16,0x50,0x61,0x8c,0x0e,0x20,0x00, +0x40,0x01,0x80,0x1e,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x21,0x08,0x21, +0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x3f, +0xf8,0x00,0x00,0x00,0x00,0x10,0x40,0x10,0x60,0x10,0x90,0x1b,0xe8,0x34,0x40,0x37, +0xfc,0x30,0xa0,0x51,0x10,0x16,0x4c,0x11,0xa0,0x10,0x48,0x11,0x90,0x10,0x60,0x13, +0x80,0x00,0x00,0x12,0xa0,0x12,0xa0,0x17,0xe0,0x7a,0xbc,0x12,0xa8,0x1f,0xc8,0x10, +0x28,0x1f,0xa8,0x74,0xb0,0x17,0x90,0x14,0x90,0x17,0xa8,0x14,0xc8,0x35,0x84,0x00, +0x00,0x14,0x40,0x14,0x40,0x3f,0x40,0x14,0x7c,0x14,0x88,0x7f,0x88,0x01,0x48,0x3e, +0x50,0x22,0x30,0x3e,0x20,0x22,0x30,0x3e,0x50,0x22,0x88,0x27,0x04,0x00,0x00,0x08, +0x50,0x08,0x48,0x08,0x48,0x7f,0xfc,0x08,0x40,0x19,0xf8,0x1c,0x40,0x1b,0xfc,0x2a, +0x28,0x28,0x28,0x48,0x10,0x08,0x34,0x08,0xcc,0x0b,0x04,0x00,0x00,0x11,0x00,0x11, +0xf8,0x11,0x28,0x17,0xe8,0x36,0x90,0x3d,0xa8,0x51,0x44,0x16,0x48,0x11,0x50,0x17, +0xfc,0x18,0xe0,0x29,0x50,0x26,0x4c,0x40,0x40,0x00,0x00,0x00,0x00,0x03,0xf8,0x7e, +0xa8,0x12,0xa8,0x12,0xa8,0x12,0xa8,0x7f,0xfc,0x12,0xa8,0x12,0xa8,0x12,0xa8,0x1e, +0xa8,0x62,0xa8,0x02,0xa8,0x02,0x18,0x00,0x00,0x01,0x00,0x3f,0xfc,0x04,0x20,0x02, +0x40,0x1f,0xfc,0x12,0x80,0x12,0x80,0x17,0xf8,0x18,0x80,0x17,0xf0,0x20,0x80,0x20, +0x80,0x5f,0xfc,0x00,0x00,0x00,0x00,0x10,0x40,0x1f,0xfc,0x24,0x90,0x4f,0xe0,0x08, +0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x04,0x40,0x7f,0xfc,0x04, +0x40,0x18,0x40,0x00,0x00,0x10,0x40,0x1f,0xfc,0x24,0x90,0x4f,0xe0,0x08,0x20,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x7f,0xfc,0x16,0x90,0x63,0x6c,0x3f,0xf0,0x0d,0x60,0x31, +0x18,0x00,0x00,0x00,0x00,0x7f,0xfc,0x01,0x00,0x1f,0xf0,0x02,0x80,0x05,0x40,0x19, +0x30,0x6f,0xec,0x09,0x20,0x09,0x20,0x0f,0xe0,0x09,0x20,0x01,0xf0,0x3e,0x08,0x00, +0x00,0x01,0x10,0x3b,0xf8,0x01,0x10,0x7f,0xfc,0x02,0xa8,0x3f,0xf4,0x01,0x10,0x3d, +0xf0,0x01,0x10,0x3d,0xf0,0x25,0x10,0x25,0xf0,0x3d,0x90,0x02,0x0c,0x00,0x00,0x04, +0x20,0x3f,0xf8,0x04,0x20,0x7f,0xfc,0x0a,0x50,0x1f,0xe8,0x68,0x24,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x06,0x60,0x38,0x18,0x00,0x00,0x00,0x20,0x7f, +0xb0,0x0c,0x28,0x0c,0xfc,0x3f,0x50,0x2d,0x54,0x2d,0xac,0x35,0x38,0x37,0x48,0x21, +0x50,0x3f,0xb0,0x21,0x30,0x3f,0x48,0x01,0x84,0x00,0x00,0x08,0x00,0x0f,0xf8,0x1f, +0x48,0x72,0x30,0x0d,0x48,0x33,0x84,0x0d,0x60,0x77,0xdc,0x04,0x40,0x07,0xc0,0x07, +0xd0,0x04,0xa0,0x07,0x60,0x38,0x18,0x00,0x00,0x08,0x08,0x08,0x10,0x7f,0xe0,0x08, +0x80,0x3e,0x80,0x2a,0xfc,0x3e,0x90,0x2a,0x90,0x3e,0x90,0x08,0x90,0x7f,0x10,0x09, +0x10,0x0a,0x10,0x08,0x10,0x00,0x00,0x08,0x18,0x7f,0xe0,0x3e,0x80,0x2a,0xfc,0x3e, +0x90,0x2a,0x90,0x7f,0x90,0x09,0x10,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x10,0x10,0x1f, +0xf0,0x00,0x00,0x00,0x00,0x00,0x50,0x7e,0x48,0x10,0x40,0x13,0xf8,0x1c,0x40,0x27, +0xf8,0x24,0x40,0x57,0xfc,0x18,0x28,0x08,0x28,0x10,0x10,0x10,0x34,0x20,0xcc,0x43, +0x04,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x10,0x40,0x10,0x40,0x37,0xfc,0x50, +0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x13,0xf8,0x10,0x00,0x00, +0x00,0x08,0x00,0x0b,0xf8,0x08,0x10,0x10,0x20,0x10,0x40,0x30,0x40,0x50,0x40,0x17, +0xfc,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0xc0,0x00,0x00,0x08, +0x00,0x0f,0xf8,0x08,0x08,0x17,0xe8,0x10,0x08,0x30,0x08,0x53,0xc8,0x12,0x48,0x12, +0x48,0x12,0x48,0x13,0xc8,0x10,0x08,0x10,0x08,0x10,0x18,0x00,0x00,0x08,0x40,0x08, +0x40,0x0f,0xfc,0x10,0x40,0x13,0xf8,0x32,0x48,0x52,0x48,0x13,0xf8,0x12,0x40,0x11, +0x40,0x10,0x80,0x10,0xc0,0x13,0x30,0x1c,0x0c,0x00,0x00,0x04,0x08,0x04,0x48,0x7f, +0xc8,0x04,0x48,0x3f,0x48,0x25,0x48,0x25,0x48,0x27,0x48,0x0c,0x48,0x0e,0x48,0x15, +0x48,0x25,0x08,0x44,0x08,0x04,0x18,0x00,0x00,0x00,0x00,0x7f,0xf8,0x00,0x08,0x3f, +0xc8,0x00,0x08,0x00,0x08,0x1f,0x88,0x10,0x88,0x10,0x88,0x10,0x88,0x1f,0x88,0x00, +0x08,0x00,0x08,0x00,0x30,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x1f,0xf0,0x11, +0x10,0x11,0x10,0x11,0x10,0x1f,0xf0,0x11,0x00,0x0a,0x00,0x06,0x00,0x07,0x00,0x18, +0xc0,0x60,0x3c,0x00,0x00,0x00,0x00,0x3e,0xfc,0x22,0x04,0x22,0x74,0x3e,0x04,0x00, +0x74,0x7f,0x54,0x55,0x54,0x55,0x54,0x7f,0x54,0x55,0x74,0x55,0x04,0x55,0x04,0x43, +0x0c,0x00,0x00,0x00,0x00,0x7f,0xf8,0x44,0x88,0x44,0x88,0x44,0x88,0x44,0x88,0x48, +0x98,0x48,0x98,0x50,0x78,0x60,0x08,0x40,0x08,0x7f,0xf8,0x00,0x00,0x00,0x00,0x00, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x00,0x00,0x00,0x00,0x10, +0x40,0x10,0x40,0x10,0x40,0x10,0x50,0x7c,0x88,0x24,0x9c,0x27,0xe4,0x24,0x00,0x75, +0xf8,0x49,0x08,0x0d,0x08,0x15,0x08,0x61,0xf8,0x00,0x00,0x00,0x00,0x08,0x20,0x08, +0x20,0x09,0xfc,0x08,0x20,0x7e,0x20,0x12,0xf8,0x12,0xa8,0x12,0xa8,0x3c,0xa8,0x24, +0xa8,0x06,0xa8,0x0a,0xb0,0x30,0x20,0x00,0x20,0x00,0x00,0x01,0x00,0x31,0x00,0x0b, +0xfc,0x02,0x48,0x0c,0xc0,0x11,0x30,0x66,0x0c,0x01,0x00,0x7f,0xfc,0x02,0x20,0x07, +0x40,0x08,0xc0,0x03,0x30,0x3c,0x08,0x00,0x00,0x00,0x00,0x3f,0xf0,0x00,0x20,0x00, +0x40,0x00,0x80,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x1f,0xf8,0x10,0x08,0x1f,0xf8,0x10, +0x00,0x1f,0xfc,0x12,0x40,0x13,0xc8,0x14,0xf0,0x1d,0x40,0x23,0x40,0x22,0x44,0x4c, +0x44,0x30,0x3c,0x00,0x00,0x02,0x00,0x02,0x00,0x7f,0xfc,0x02,0x00,0x02,0x00,0x3f, +0xf0,0x22,0x10,0x22,0x10,0x22,0x10,0x22,0x10,0x22,0x10,0x22,0x60,0x02,0x00,0x02, +0x00,0x00,0x00,0x08,0x00,0x09,0xfc,0x3e,0x20,0x22,0x20,0x22,0xf8,0x3e,0xa8,0x20, +0xa8,0x20,0xa8,0x3e,0xa8,0x22,0xa8,0x22,0xb0,0x22,0x20,0x3e,0x20,0x20,0x20,0x00, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x1f,0xf0,0x01, +0x00,0x04,0x90,0x14,0x88,0x14,0x04,0x24,0x24,0x44,0x20,0x03,0xe0,0x00,0x00,0x00, +0x00,0x1f,0xf0,0x11,0x10,0x11,0x10,0x1f,0xf0,0x11,0x10,0x11,0x10,0x1f,0xf0,0x01, +0x00,0x14,0x90,0x14,0x88,0x24,0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x11,0x00,0x11, +0x18,0x11,0xe0,0x7d,0x00,0x11,0x04,0x10,0xfc,0x10,0x00,0x1d,0xf8,0x71,0x08,0x11, +0x08,0x11,0xf8,0x11,0x08,0x11,0xf8,0x30,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x1f,0xe0,0x04,0x20,0x04,0x40,0x02,0x40,0x01, +0x80,0x03,0x40,0x0c,0x30,0x70,0x0c,0x00,0x00,0x00,0x80,0x7e,0x80,0x02,0x80,0x04, +0xfc,0x09,0x10,0x09,0x90,0x0e,0x90,0x78,0x50,0x08,0x60,0x08,0x20,0x08,0x50,0x08, +0x90,0x0b,0x08,0x1c,0x04,0x00,0x00,0x12,0x08,0x12,0x10,0x12,0x60,0x7f,0xc0,0x12, +0x40,0x1e,0x7c,0x12,0x48,0x1e,0x48,0x12,0x48,0x7f,0x48,0x14,0x88,0x12,0x88,0x23, +0x08,0x40,0x08,0x00,0x00,0x08,0x80,0x08,0x80,0x08,0xfc,0x7f,0x20,0x11,0xa0,0x12, +0xb8,0x1c,0xe8,0x17,0xa8,0x14,0xa8,0x14,0xa8,0x24,0xb8,0x24,0xa0,0x44,0x84,0x18, +0x7c,0x00,0x00,0x20,0x00,0x20,0x70,0x3f,0x80,0x20,0x08,0x20,0x08,0x1f,0xf8,0x00, +0x00,0x1f,0xe0,0x10,0x20,0x1f,0xe0,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00,0x00, +0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x7f,0xfc,0x08,0x40,0x1c,0x40,0x1b,0xf8,0x1b, +0x08,0x28,0x90,0x28,0x90,0x48,0x60,0x08,0x60,0x09,0x90,0x0e,0x0c,0x00,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x11,0x00,0x11,0x00,0x11,0xf8,0x11,0x00,0x11,0x00,0x11, +0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x7f, +0xfc,0x08,0x80,0x08,0x80,0x0e,0x88,0x12,0x88,0x12,0x90,0x2a,0xa0,0x44,0xc0,0x04, +0x80,0x08,0x80,0x10,0x84,0x20,0x84,0x40,0x7c,0x00,0x00,0x00,0x60,0x01,0x80,0x1f, +0x00,0x11,0x00,0x11,0x00,0x11,0x78,0x1f,0x80,0x10,0x80,0x10,0x40,0x10,0x40,0x10, +0x24,0x13,0x14,0x1c,0x0c,0x60,0x04,0x00,0x00,0x12,0x00,0x52,0xfc,0x34,0x10,0x27, +0x10,0x35,0x7c,0x55,0x54,0x17,0x54,0x34,0x54,0x37,0x54,0x55,0x54,0x15,0x5c,0x17, +0x50,0x14,0x10,0x30,0x10,0x00,0x00,0x08,0x20,0x08,0x20,0x08,0x20,0x7e,0x20,0x04, +0xa0,0x08,0xbc,0x0c,0xa0,0x1a,0xa0,0x2a,0xa0,0x48,0xa0,0x08,0xa0,0x08,0xa0,0x0b, +0xfc,0x08,0x00,0x00,0x00,0x01,0x20,0x06,0x20,0x3c,0x20,0x04,0x20,0x04,0x20,0x7f, +0x20,0x0c,0x40,0x0e,0x40,0x15,0x60,0x15,0x50,0x24,0x88,0x44,0x98,0x07,0xe4,0x04, +0x04,0x00,0x00,0x01,0x00,0x01,0x20,0x02,0x20,0x1c,0x40,0x03,0x80,0x01,0x20,0x02, +0x18,0x7f,0xe4,0x01,0x00,0x09,0x20,0x09,0x10,0x11,0x08,0x21,0x08,0x01,0x00,0x00, +0x00,0x08,0x08,0x08,0x30,0x0a,0xe0,0x72,0xa0,0x14,0xa0,0x0c,0xfc,0x12,0xa0,0x7e, +0xa0,0x08,0x90,0x2c,0x90,0x2a,0x94,0x2a,0xac,0x48,0xcc,0x0b,0x04,0x00,0x00,0x08, +0x80,0x08,0x98,0x2f,0xe0,0x28,0x80,0x28,0x84,0x2f,0x7c,0x72,0x40,0x0c,0xc0,0x03, +0x30,0x7f,0xc8,0x05,0x40,0x19,0x30,0x61,0x08,0x01,0x00,0x00,0x00,0x00,0x40,0x3c, +0x40,0x24,0x40,0x27,0xfc,0x3c,0x40,0x24,0x40,0x27,0xf8,0x3d,0x08,0x24,0x90,0x24, +0x90,0x24,0x60,0x24,0x60,0x25,0x90,0x4e,0x0c,0x00,0x00,0x01,0x00,0x3d,0x18,0x25, +0xe0,0x25,0x04,0x25,0x04,0x3c,0xfc,0x24,0x00,0x24,0xf8,0x3c,0x88,0x24,0xf8,0x24, +0x88,0x24,0x88,0x24,0xf8,0x4c,0x00,0x00,0x00,0x00,0x00,0x7f,0xfc,0x02,0x00,0x02, +0x40,0x04,0x30,0x3f,0xc8,0x01,0x00,0x01,0x00,0x1f,0xf0,0x01,0x00,0x01,0x00,0x01, +0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x10,0x00,0x11,0xf8,0x11,0x08,0x7d,0xf8,0x09, +0x08,0x09,0xf8,0x11,0x08,0x19,0x08,0x35,0xf8,0x54,0xa0,0x11,0x20,0x11,0x24,0x12, +0x24,0x14,0x1c,0x00,0x00,0x00,0x00,0x3d,0xf8,0x00,0x08,0x7e,0x08,0x01,0xf8,0x3c, +0x08,0x01,0xe8,0x3d,0x28,0x01,0x28,0x3d,0xe8,0x24,0x08,0x24,0x08,0x3c,0x08,0x00, +0x30,0x00,0x00,0x00,0x40,0x3c,0x40,0x01,0xf8,0x7e,0x40,0x00,0x40,0x3f,0xfc,0x00, +0x10,0x3c,0x10,0x03,0xfc,0x3d,0x10,0x24,0x90,0x24,0x90,0x3c,0x10,0x00,0x30,0x00, +0x00,0x00,0x30,0x3c,0x28,0x00,0x28,0x7f,0xfc,0x00,0x20,0x3c,0x20,0x03,0xe0,0x3c, +0xa0,0x00,0x90,0x3c,0xb0,0x24,0xd4,0x27,0x0c,0x3c,0x0c,0x00,0x04,0x00,0x00,0x00, +0x40,0x3c,0x40,0x00,0x40,0x7f,0xfc,0x00,0x40,0x3c,0x40,0x03,0xf8,0x3c,0x40,0x00, +0xb0,0x3d,0xa8,0x25,0x84,0x26,0x94,0x24,0x90,0x3c,0x70,0x00,0x00,0x00,0x40,0x3e, +0x40,0x01,0x7c,0x7d,0xa4,0x00,0x28,0x3c,0xb0,0x03,0x50,0x3c,0x48,0x00,0x84,0x3d, +0xf8,0x25,0x08,0x25,0x08,0x25,0x08,0x3d,0xf8,0x00,0x00,0x11,0x00,0x09,0xf8,0x0a, +0x50,0x04,0xe0,0x19,0x30,0x6f,0xec,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x06,0x60,0x38,0x18,0x00,0x00,0x00,0x00,0x3c,0xf8,0x24,0x88,0x24, +0xf8,0x3c,0x88,0x24,0xf8,0x3c,0x40,0x24,0xfc,0x25,0x54,0x3e,0x54,0x18,0x94,0x15, +0x24,0x24,0x44,0x42,0x18,0x00,0x00,0x0a,0x48,0x0a,0x48,0x0a,0x50,0x0a,0xfc,0x2a, +0x90,0x2f,0x90,0x2a,0xf8,0x2a,0x90,0x2a,0x90,0x2a,0xf8,0x2f,0x90,0x3b,0x90,0x61, +0xfc,0x00,0x00,0x00,0x00,0x08,0x00,0x09,0xf8,0x14,0x08,0x1a,0xf8,0x2a,0x08,0x7e, +0xe8,0x22,0xa8,0x3e,0xa8,0x22,0xa8,0x3e,0xa8,0x24,0xe8,0x26,0x08,0x3a,0x08,0x60, +0x18,0x00,0x00,0x01,0x00,0x09,0x00,0x09,0xf8,0x09,0x00,0x7f,0xfc,0x29,0x28,0x25, +0x48,0x3f,0xf8,0x23,0x88,0x25,0x48,0x29,0x28,0x21,0x08,0x3f,0xf8,0x00,0x00,0x00, +0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x0f,0xe0,0x09,0x20,0x0f,0xe0,0x01,0x00,0x1f, +0xf0,0x01,0x10,0x7f,0xfc,0x01,0x10,0x1f,0xf0,0x01,0x00,0x03,0x00,0x00,0x00,0x08, +0x10,0x0a,0x10,0x0b,0x10,0x12,0x90,0x12,0x50,0x32,0x50,0x52,0x10,0x12,0x10,0x12, +0x10,0x12,0x10,0x12,0xb0,0x13,0x28,0x1c,0x44,0x10,0x84,0x00,0x00,0x08,0x40,0x08, +0x40,0x0b,0xf8,0x10,0x40,0x10,0x40,0x37,0xfc,0x50,0x10,0x10,0x10,0x17,0xfc,0x12, +0x10,0x11,0x10,0x11,0x10,0x10,0x10,0x10,0x30,0x00,0x00,0x00,0x00,0x13,0xf0,0x12, +0x10,0x12,0x10,0x13,0xf0,0x12,0x10,0x12,0x10,0x13,0xf0,0x10,0x80,0x04,0x80,0x04, +0x80,0x08,0x84,0x10,0x84,0x60,0x7c,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x40, +0x04,0x4f,0xe4,0x00,0x40,0x01,0x80,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x01,0x00,0x01, +0x00,0x7f,0xfc,0x00,0x40,0x00,0x40,0x7f,0xfc,0x08,0x40,0x04,0x40,0x04,0x40,0x00, +0x40,0x00,0xc0,0x00,0x00,0x08,0x20,0x04,0x40,0x7f,0xfc,0x08,0x20,0x32,0xc8,0x0c, +0x30,0x12,0x48,0x7f,0xfc,0x01,0x00,0x14,0x90,0x14,0x88,0x24,0x24,0x44,0x24,0x03, +0xe0,0x00,0x00,0x10,0x40,0x10,0x40,0x13,0xf8,0x7c,0x40,0x10,0x40,0x17,0xfc,0x10, +0x10,0x10,0x10,0x1f,0xfc,0x71,0x10,0x10,0x90,0x10,0x90,0x10,0x10,0x30,0x30,0x00, +0x00,0x00,0x40,0x00,0x40,0x7b,0xf8,0x48,0x40,0x48,0x40,0x4f,0xfc,0x78,0x10,0x48, +0x10,0x4f,0xfc,0x49,0x10,0x48,0x90,0x78,0x90,0x00,0x10,0x00,0x30,0x00,0x00,0x01, +0x00,0x01,0x00,0x21,0x00,0x11,0x00,0x11,0xfc,0x02,0x44,0x02,0x48,0x14,0x40,0x10, +0x40,0x20,0xa0,0x20,0xa0,0x41,0x10,0x46,0x08,0x18,0x04,0x00,0x00,0x11,0x10,0x08, +0x90,0x08,0xa0,0x47,0xfc,0x21,0x10,0x21,0x10,0x01,0x54,0x06,0x64,0x12,0xa8,0x11, +0x98,0x21,0x10,0x22,0xa8,0x4f,0xfc,0x40,0x44,0x00,0x00,0x10,0x80,0x08,0x80,0x08, +0x80,0x40,0xa0,0x21,0x10,0x21,0x38,0x0f,0xc4,0x00,0x00,0x13,0xf8,0x12,0x08,0x22, +0x08,0x22,0x08,0x43,0xf8,0x40,0x00,0x00,0x00,0x00,0x00,0x7f,0xfc,0x11,0x10,0x61, +0x0c,0x3f,0xf8,0x23,0x18,0x2d,0x68,0x2b,0x58,0x33,0x98,0x2d,0x68,0x25,0x28,0x2b, +0x58,0x31,0x88,0x21,0x18,0x00,0x00,0x00,0x00,0x7f,0xfc,0x11,0x10,0x3f,0xf8,0x5b, +0xb4,0x15,0x50,0x1b,0xb0,0x15,0x50,0x3f,0xf8,0x01,0x00,0x1f,0xf0,0x01,0x20,0x7f, +0xfc,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x0f,0xfc,0x48,0x40,0x28,0x40,0x2b, +0xf8,0x08,0x40,0x1f,0xfc,0x28,0x10,0x4f,0xfc,0x12,0x10,0x11,0x10,0x21,0x10,0x40, +0x30,0x00,0x00,0x01,0x10,0x7c,0x90,0x10,0xa0,0x17,0xfc,0x11,0x10,0x21,0x10,0x39, +0x54,0x6e,0x64,0x29,0x98,0x28,0x88,0x29,0x10,0x3a,0xa8,0x07,0xfc,0x00,0x44,0x00, +0x00,0x00,0x00,0x1f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xfc,0x01,0x00,0x09, +0x20,0x09,0x10,0x11,0x08,0x11,0x08,0x21,0x04,0x41,0x04,0x03,0x00,0x00,0x00,0x00, +0x00,0x7f,0xf8,0x01,0x00,0x02,0x00,0x3f,0xf0,0x24,0x90,0x24,0x90,0x24,0x90,0x24, +0x90,0x24,0x90,0x24,0x90,0x24,0x90,0x24,0x90,0x20,0x30,0x00,0x00,0x00,0x00,0x7f, +0xfc,0x08,0x20,0x08,0x20,0x0f,0xe0,0x08,0x20,0x08,0x20,0x0f,0xe0,0x08,0x20,0x08, +0x38,0x0f,0xe0,0x78,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x01,0x00,0x01,0x00,0x02, +0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x1f,0xf0,0x10,0x10,0x10,0x10,0x1f,0xf0,0x10, +0x10,0x10,0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04, +0x40,0x00,0x40,0x3d,0xf8,0x24,0x40,0x27,0xfc,0x3c,0x10,0x27,0xfc,0x25,0x10,0x3c, +0x90,0x00,0x90,0x00,0x30,0x00,0x00,0x02,0x20,0x04,0x20,0x39,0xfc,0x08,0x88,0x08, +0x48,0x7e,0x50,0x09,0xfc,0x08,0x20,0x3e,0x20,0x23,0xfc,0x22,0x20,0x22,0x20,0x3e, +0x20,0x00,0x20,0x00,0x00,0x10,0x80,0x08,0x80,0x08,0x80,0x40,0xf8,0x21,0x08,0x21, +0x08,0x02,0x90,0x0c,0x50,0x08,0x20,0x08,0x20,0x10,0x40,0x10,0x80,0x23,0x00,0x2c, +0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x1f,0xfc,0x12,0x40,0x1f,0xf8,0x12,0x48,0x12, +0x48,0x1f,0xf8,0x14,0x40,0x17,0xc8,0x24,0x70,0x24,0x44,0x47,0x44,0x18,0x3c,0x00, +0x00,0x00,0x50,0x00,0x48,0x00,0x48,0x7f,0xfc,0x00,0x40,0x00,0x40,0x3f,0xc0,0x04, +0x20,0x04,0x20,0x04,0x20,0x04,0x14,0x07,0x94,0x78,0x0c,0x00,0x04,0x00,0x00,0x01, +0x20,0x39,0x30,0x07,0xe8,0x7a,0xa8,0x02,0xa0,0x3f,0xfc,0x00,0x28,0x3b,0xa8,0x02, +0xb0,0x3b,0x90,0x2a,0xb4,0x2b,0xac,0x38,0x4c,0x00,0x84,0x00,0x00,0x00,0x40,0x00, +0x80,0x7d,0xf0,0x55,0x10,0x55,0xf0,0x55,0x10,0x7d,0xf0,0x55,0xfc,0x55,0x00,0x55, +0xfc,0x7d,0x54,0x02,0xac,0x02,0x84,0x04,0x18,0x00,0x00,0x10,0x40,0x10,0x40,0x10, +0x40,0x1f,0x7c,0x28,0xa0,0x24,0x90,0x45,0x10,0x00,0x00,0x1f,0xf0,0x00,0x00,0x00, +0x00,0x00,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x08,0x20,0x08,0x20,0x7f,0x20,0x08, +0x20,0x3e,0xf8,0x2a,0xa8,0x3e,0xa8,0x2a,0xa8,0x3e,0xf8,0x08,0xa8,0x7f,0xa8,0x08, +0xa8,0x08,0xf8,0x08,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x40,0x04,0x41, +0x04,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x04,0x40,0x04,0x20,0x08,0x10,0x10, +0x08,0x60,0x08,0x00,0x00,0x00,0x00,0x3f,0xf8,0x01,0x00,0x7f,0xfc,0x41,0x04,0x5d, +0x74,0x0f,0x38,0x00,0x00,0x7f,0xfc,0x01,0x80,0x01,0x60,0x01,0x10,0x01,0x00,0x01, +0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x3c,0x07,0xc0,0x7c, +0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x08,0x04,0x08,0x03,0xf8,0x00, +0x00,0x00,0x80,0x00,0x80,0x7c,0x80,0x44,0x88,0x44,0x88,0x44,0x90,0x44,0xa0,0x44, +0xc0,0x47,0x80,0x44,0x80,0x7c,0x80,0x00,0x84,0x00,0x84,0x00,0x7c,0x00,0x00,0x08, +0x40,0x08,0x40,0x3e,0x40,0x09,0xf0,0x7f,0x50,0x22,0x50,0x12,0xd0,0x14,0x50,0x7f, +0x70,0x08,0xb0,0x3e,0x90,0x08,0x94,0x09,0x14,0x0a,0x0c,0x00,0x00,0x01,0x00,0x09, +0x00,0x09,0x00,0x09,0x00,0x1f,0xf0,0x11,0x00,0x21,0x00,0x7f,0xfc,0x01,0x00,0x02, +0x80,0x02,0x80,0x04,0x40,0x18,0x30,0x60,0x0c,0x00,0x00,0x10,0x20,0x10,0x20,0x11, +0xfc,0x15,0x40,0x7b,0x40,0x2b,0x78,0x29,0xa0,0x29,0x20,0x7b,0xfc,0x55,0x20,0x1a, +0x30,0x12,0x50,0x64,0x88,0x09,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x40, +0x04,0x5f,0xf4,0x02,0x80,0x04,0x60,0x3f,0x90,0x01,0x00,0x1f,0xf0,0x01,0x00,0x01, +0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x30,0x1f,0xd0,0x11,0x10,0x09,0x20,0x7f, +0xfc,0x03,0x80,0x0d,0x60,0x71,0x1c,0x01,0x00,0x14,0x90,0x14,0x88,0x24,0x24,0x44, +0x24,0x03,0xe0,0x00,0x00,0x10,0x00,0x0b,0xf8,0x0a,0x08,0x43,0xf8,0x22,0x08,0x22, +0x08,0x03,0xf8,0x10,0xa0,0x14,0xa8,0x12,0xa8,0x22,0xb0,0x20,0xa0,0x4f,0xfc,0x40, +0x00,0x00,0x00,0x10,0x40,0x08,0x40,0x0f,0xfc,0x40,0xe0,0x21,0x50,0x26,0x4c,0x00, +0xa0,0x13,0x58,0x1e,0x4c,0x11,0x50,0x20,0xe0,0x21,0x50,0x46,0x4c,0x40,0xc0,0x00, +0x00,0x00,0x80,0x00,0x80,0x0f,0xfc,0x49,0x00,0x29,0x00,0x2b,0xf8,0x0a,0x40,0x1c, +0x40,0x2f,0xfc,0x48,0xc0,0x10,0xa0,0x11,0x10,0x22,0x08,0x4c,0x04,0x00,0x00,0x06, +0x30,0x38,0xc0,0x3f,0xfc,0x24,0x90,0x25,0x10,0x4f,0xe0,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x06,0x60,0x38,0x18,0x00,0x00,0x01,0x00,0x01, +0x00,0x7f,0xfc,0x41,0x04,0x41,0x04,0x1f,0xf0,0x01,0x00,0x0f,0xe0,0x01,0x00,0x7f, +0xfc,0x02,0x80,0x04,0x40,0x18,0x30,0x60,0x0c,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04, +0x40,0x08,0x00,0x08,0x78,0x7f,0x48,0x22,0x50,0x14,0x50,0x7f,0x48,0x00,0x44,0x3e, +0x44,0x22,0x44,0x3e,0x58,0x22,0x40,0x00,0x00,0x10,0x40,0x1f,0xfc,0x28,0xa0,0x45, +0x10,0x08,0x40,0x0c,0xf8,0x17,0x90,0x14,0xe0,0x37,0x5c,0x55,0xf8,0x14,0xe0,0x15, +0x50,0x16,0x4c,0x10,0x40,0x00,0x00,0x08,0x00,0x0b,0xf8,0x0a,0x48,0x12,0x48,0x13, +0xf8,0x32,0x48,0x52,0x48,0x13,0xf8,0x10,0x40,0x11,0x20,0x15,0x28,0x15,0x04,0x19, +0x14,0x10,0xf0,0x00,0x00,0x08,0x80,0x08,0x98,0x2f,0xe0,0x28,0x84,0x28,0x84,0x2e, +0x7c,0x71,0x00,0x01,0x00,0x7f,0xfc,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01, +0x00,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x05,0x40,0x01,0x00,0x3f, +0xf8,0x00,0x10,0x00,0x20,0x00,0xc0,0x13,0x00,0x1c,0x00,0x26,0x00,0x41,0xfc,0x00, +0x00,0x00,0x00,0x1f,0xf8,0x10,0x08,0x1f,0xf8,0x14,0x90,0x12,0xa0,0x1f,0xfc,0x13, +0xe0,0x1c,0x98,0x1f,0xfc,0x11,0x20,0x23,0xa0,0x20,0xe0,0x4f,0x18,0x00,0x00,0x04, +0x40,0x7f,0xfc,0x04,0x40,0x01,0x00,0x14,0x90,0x14,0x88,0x24,0x28,0x03,0xe0,0x08, +0x20,0x36,0xd8,0x35,0xd4,0x51,0x44,0x55,0x50,0x0c,0x30,0x00,0x00,0x08,0x40,0x0b, +0xfc,0x10,0x00,0x64,0xf0,0x18,0x90,0x0c,0xf0,0x12,0x00,0x7d,0xf8,0x09,0x08,0x2d, +0xe8,0x2b,0xa8,0x2b,0xe8,0x49,0x08,0x09,0x18,0x00,0x00,0x01,0x00,0x02,0x80,0x04, +0x40,0x19,0x30,0x61,0x0c,0x0f,0xe0,0x01,0x00,0x3f,0xf8,0x00,0x00,0x0f,0xe0,0x08, +0x20,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xfc,0x44,0x04,0x44, +0x04,0x07,0xf0,0x04,0x00,0x07,0xc0,0x04,0x40,0x00,0x40,0x7f,0xfc,0x00,0x40,0x00, +0x40,0x00,0x80,0x03,0x00,0x00,0x00,0x04,0x08,0x08,0x08,0x1f,0x08,0x11,0x08,0x1f, +0xfc,0x11,0x08,0x1f,0x48,0x11,0xa8,0x1f,0x28,0x73,0x08,0x05,0x08,0x19,0x08,0x61, +0x08,0x03,0x18,0x00,0x00,0x10,0x40,0x10,0x40,0x10,0xa0,0x7d,0x50,0x16,0x4c,0x11, +0xf0,0x10,0x40,0x1f,0xfc,0x70,0x00,0x11,0xf0,0x11,0x10,0x11,0x10,0x11,0xf0,0x30, +0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x3e,0x40,0x08,0x7c,0x08,0x88,0x7f,0x48,0x14, +0x48,0x36,0x50,0x35,0x30,0x55,0x20,0x14,0x30,0x24,0x50,0x24,0x88,0x4d,0x04,0x00, +0x00,0x08,0x10,0x08,0x90,0x14,0x50,0x12,0x50,0x23,0x10,0x7e,0x90,0x08,0x90,0x7e, +0x1c,0x08,0x70,0x2d,0x90,0x2a,0x10,0x2a,0x10,0x48,0x10,0x18,0x10,0x00,0x00,0x01, +0x10,0x1f,0xf0,0x01,0x20,0x7f,0xfc,0x01,0x00,0x07,0xe0,0x1c,0x20,0x67,0xe0,0x04, +0x20,0x07,0xe0,0x00,0x00,0x24,0x88,0x22,0x44,0x42,0x44,0x00,0x00,0x08,0x40,0x08, +0x40,0x08,0x40,0x7e,0x40,0x04,0x40,0x09,0xf8,0x0c,0x40,0x1a,0x40,0x2a,0x40,0x48, +0x40,0x08,0x40,0x08,0x40,0x0b,0xfc,0x08,0x00,0x00,0x00,0x08,0x20,0x08,0x20,0x0a, +0x20,0x72,0xb0,0x14,0xa8,0x0c,0xa8,0x12,0xa4,0x7f,0x24,0x09,0x28,0x2c,0x78,0x2a, +0x10,0x2a,0x20,0x48,0xc0,0x0b,0x00,0x00,0x00,0x01,0x00,0x01,0x10,0x1f,0xf0,0x01, +0x20,0x01,0x40,0x7f,0xfc,0x01,0x00,0x07,0xf0,0x1c,0x10,0x67,0xf0,0x04,0x10,0x04, +0x10,0x07,0xf0,0x00,0x00,0x00,0x00,0x00,0x88,0x39,0x08,0x03,0xc8,0x7e,0x48,0x03, +0xfc,0x3a,0x48,0x03,0xe8,0x3a,0x78,0x07,0xd8,0x38,0xc8,0x29,0x48,0x2e,0x48,0x38, +0x48,0x20,0xd8,0x00,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x01,0x00,0x1f,0xf0,0x11, +0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01, +0x00,0x00,0x00,0x00,0x40,0x20,0x40,0x13,0xfc,0x12,0x90,0x03,0xfc,0x02,0x90,0x72, +0xf0,0x12,0x90,0x14,0x00,0x15,0xa8,0x19,0x54,0x1a,0x54,0x26,0x00,0x41,0xfc,0x00, +0x00,0x08,0x20,0x08,0x20,0x08,0x20,0x3f,0xfc,0x2b,0x04,0x2b,0x40,0x2a,0x48,0x3e, +0x48,0x08,0x50,0x0c,0x60,0x0a,0x40,0x0f,0x44,0x71,0x44,0x00,0x3c,0x00,0x00,0x00, +0x00,0x1f,0x78,0x12,0x48,0x12,0x50,0x12,0x50,0x7f,0x60,0x06,0x50,0x06,0x48,0x0a, +0x44,0x0a,0x44,0x12,0x64,0x22,0x58,0x42,0x40,0x06,0x40,0x00,0x00,0x09,0x20,0x09, +0x20,0x09,0x20,0x17,0xf8,0x11,0x20,0x31,0x20,0x5f,0xfc,0x10,0x00,0x13,0xf0,0x12, +0x10,0x13,0xf0,0x12,0x10,0x12,0x10,0x13,0xf0,0x00,0x00,0x08,0x00,0x08,0x00,0x08, +0x00,0x0f,0xf8,0x10,0x08,0x10,0x08,0x24,0x08,0x42,0x08,0x01,0x08,0x01,0x08,0x00, +0x08,0x00,0x08,0x00,0x08,0x00,0x30,0x00,0x00,0x00,0x00,0x0f,0xf0,0x08,0x10,0x08, +0x10,0x08,0x10,0x0f,0xf0,0x09,0x00,0x09,0x00,0x08,0x80,0x08,0x80,0x10,0x40,0x10, +0x20,0x20,0x10,0x40,0x0c,0x00,0x00,0x08,0x80,0x08,0x80,0x08,0x80,0x7f,0xf8,0x09, +0x08,0x1a,0x08,0x1c,0x88,0x1a,0x48,0x2a,0x48,0x28,0x08,0x48,0x08,0x08,0x08,0x08, +0x08,0x08,0x30,0x00,0x00,0x08,0x80,0x08,0x80,0x08,0x80,0x0a,0xf8,0x2a,0x88,0x2d, +0x08,0x29,0x88,0x4a,0x48,0x08,0x48,0x08,0x08,0x14,0x08,0x12,0x08,0x22,0x08,0x40, +0x30,0x00,0x00,0x00,0x78,0x3f,0x90,0x12,0x20,0x3f,0xf8,0x24,0x48,0x3f,0xf8,0x1e, +0x10,0x13,0xfc,0x1e,0x90,0x12,0x50,0x1e,0x50,0x14,0x10,0x1e,0x10,0x61,0x30,0x00, +0x00,0x00,0x40,0x7f,0xc0,0x0c,0x40,0x0c,0x78,0x3f,0x88,0x2d,0x88,0x2d,0x48,0x35, +0x28,0x37,0x28,0x21,0x08,0x3f,0x08,0x21,0x08,0x21,0x08,0x3f,0x30,0x00,0x00,0x03, +0x00,0x0c,0xf8,0x79,0x88,0x49,0x88,0x2a,0x88,0x2c,0xf8,0x7f,0xa0,0x08,0xa0,0x1c, +0xa0,0x1a,0xa0,0x2a,0x90,0x49,0x10,0x09,0x08,0x0a,0x04,0x00,0x00,0x08,0x00,0x09, +0xf8,0x15,0x08,0x13,0xf8,0x23,0x08,0x5d,0xf8,0x08,0x80,0x7e,0xfc,0x09,0x54,0x2a, +0x54,0x1c,0x94,0x19,0x24,0x0e,0x44,0x70,0x18,0x00,0x00,0x04,0x40,0x04,0x40,0x7f, +0xfc,0x04,0x40,0x01,0x00,0x01,0x00,0x7f,0xfc,0x02,0x00,0x07,0xf0,0x1c,0x10,0x64, +0x10,0x04,0x10,0x07,0xf0,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x48, +0x04,0x48,0x04,0x0e,0xf8,0x08,0x88,0x7f,0x48,0x08,0x50,0x2a,0x30,0x29,0x20,0x49, +0x50,0x08,0x88,0x19,0x04,0x00,0x00,0x00,0x00,0x7e,0xf8,0x02,0x08,0x02,0x08,0x3e, +0xf8,0x20,0x80,0x3e,0xf8,0x22,0x88,0x12,0x48,0x0e,0x38,0x1a,0x68,0x62,0x88,0x02, +0x08,0x0c,0x30,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x05,0x40,0x7f,0xfc,0x04, +0x00,0x1f,0xf0,0x64,0x10,0x07,0xf0,0x01,0x00,0x24,0x88,0x24,0xa4,0x44,0x24,0x03, +0xe0,0x00,0x00,0x02,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x01,0x00,0x01,0x00,0x01, +0x00,0x1f,0xf0,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00, +0x00,0x00,0x00,0x7f,0x00,0x13,0xf8,0x12,0x88,0x1e,0x88,0x12,0x88,0x12,0x48,0x1e, +0x50,0x12,0x50,0x12,0x20,0x1e,0x60,0x62,0x90,0x03,0x08,0x02,0x04,0x00,0x00,0x01, +0x00,0x01,0x00,0x7f,0xfc,0x40,0x04,0x40,0x44,0x00,0x40,0x7f,0xfc,0x00,0x40,0x08, +0x40,0x04,0x40,0x04,0x40,0x00,0x40,0x00,0x40,0x00,0xc0,0x00,0x00,0x00,0x20,0x00, +0xc0,0x1f,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x09,0x00,0x09, +0x00,0x0f,0xf0,0x11,0x00,0x21,0x00,0x7f,0xfc,0x03,0x80,0x05,0x40,0x19,0x30,0x61, +0x0c,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x40,0x7f,0x40,0x11,0x40,0x11, +0xf8,0x1e,0x40,0x24,0x40,0x27,0xfc,0x54,0xe0,0x08,0xe0,0x09,0x50,0x0a,0x48,0x14, +0x44,0x60,0x40,0x00,0x40,0x00,0x00,0x08,0x40,0x48,0x40,0x33,0xfc,0x12,0x04,0x32, +0x14,0x48,0x10,0x0f,0xfc,0x18,0x10,0x29,0x10,0x48,0x90,0x08,0x90,0x08,0x10,0x30, +0x10,0x10,0x30,0x00,0x00,0x00,0x40,0x01,0x40,0x7d,0x40,0x11,0xf8,0x12,0x40,0x14, +0x40,0x7f,0xfc,0x10,0xe0,0x10,0xe0,0x11,0x50,0x1e,0x48,0x64,0x44,0x00,0x40,0x00, +0x40,0x00,0x00,0x04,0x08,0x19,0xf0,0x70,0x40,0x17,0xfc,0x10,0x40,0x7f,0xf8,0x12, +0x48,0x1b,0xf8,0x36,0x48,0x37,0xf8,0x50,0x40,0x13,0xf8,0x10,0x40,0x17,0xfc,0x00, +0x00,0x00,0x08,0x3b,0xf0,0x28,0x40,0x2f,0xfc,0x38,0x40,0x2b,0xf8,0x2a,0x48,0x3b, +0xf8,0x2a,0x48,0x2b,0xf8,0x28,0x40,0x2b,0xf8,0x28,0x40,0x4f,0xfc,0x00,0x00,0x08, +0x00,0x0b,0xfc,0x3d,0x40,0x09,0x78,0x09,0xc8,0x7f,0x68,0x09,0x58,0x29,0xd0,0x2f, +0x58,0x29,0x68,0x3b,0xe4,0x28,0x44,0x26,0x40,0x41,0xfc,0x00,0x00,0x10,0x00,0x0f, +0xfc,0x09,0x40,0x41,0x40,0x27,0xf8,0x25,0x48,0x05,0x48,0x15,0x58,0x16,0x38,0x14, +0x08,0x27,0xf8,0x24,0x08,0x47,0xf8,0x40,0x00,0x00,0x00,0x08,0x20,0x04,0x40,0x7f, +0xfc,0x01,0x00,0x02,0x00,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x10, +0x10,0x10,0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x08,0x00,0x0f,0xfc,0x08,0x40,0x1f, +0xfc,0x18,0x44,0x3b,0x5c,0x50,0x00,0x17,0xfc,0x10,0x40,0x13,0xf8,0x12,0xa8,0x12, +0xa8,0x12,0xa8,0x12,0xb8,0x00,0x00,0x00,0x30,0x01,0xd0,0x3e,0x10,0x12,0x20,0x09, +0x40,0x7f,0xfc,0x40,0x04,0x5f,0xe4,0x04,0x20,0x02,0x40,0x01,0x80,0x01,0x80,0x06, +0x60,0x38,0x18,0x00,0x00,0x00,0x00,0x03,0xf8,0x7a,0x08,0x4a,0x08,0x4a,0x08,0x4b, +0xf8,0x48,0xa0,0x48,0xa0,0x48,0xa0,0x79,0x20,0x01,0x20,0x02,0x24,0x04,0x24,0x18, +0x1c,0x00,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x01,0x00,0x1f,0xf0,0x02,0x00,0x7f, +0xfc,0x04,0x20,0x7f,0xfc,0x08,0x20,0x14,0x20,0x22,0x20,0x42,0x20,0x00,0x60,0x00, +0x00,0x10,0x18,0x13,0xe8,0x12,0x48,0x7d,0x50,0x11,0x20,0x17,0xfc,0x14,0x04,0x11, +0xf4,0x1c,0x90,0x70,0xa0,0x10,0x60,0x10,0x60,0x11,0x90,0x36,0x0c,0x00,0x00,0x11, +0x08,0x11,0x08,0x17,0xc8,0x79,0x3c,0x17,0xc8,0x10,0x28,0x3b,0xd8,0x36,0x58,0x37, +0xc8,0x54,0x48,0x52,0x88,0x13,0xc8,0x1e,0x08,0x10,0x18,0x00,0x00,0x08,0x08,0x09, +0xf4,0x0b,0x44,0x72,0xa8,0x14,0x90,0x0d,0xfc,0x13,0x04,0x7f,0xf4,0x0c,0x90,0x2a, +0x90,0x2a,0x60,0x28,0x60,0x49,0x90,0x0e,0x0c,0x00,0x00,0x00,0x00,0x3f,0xf8,0x01, +0x00,0x7f,0xfc,0x41,0x04,0x5d,0x74,0x01,0x00,0x7f,0xfc,0x02,0x00,0x3f,0xf8,0x24, +0x48,0x24,0x48,0x24,0x48,0x24,0x58,0x00,0x00,0x00,0x00,0x3f,0xf8,0x21,0x08,0x21, +0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x22,0x88,0x22,0x88,0x24,0x48,0x28,0x28,0x20, +0x08,0x3f,0xf8,0x00,0x00,0x00,0x00,0x04,0x00,0x25,0xf8,0x24,0x88,0x24,0x88,0x24, +0x88,0x24,0x88,0x24,0x50,0x24,0x50,0x26,0x60,0x3c,0x20,0xe4,0x60,0x04,0x90,0x07, +0x08,0x04,0x04,0x00,0x00,0x00,0x00,0x3f,0xf8,0x22,0x08,0x22,0x08,0x2f,0xc8,0x22, +0x08,0x3f,0xe8,0x20,0x08,0x2f,0xc8,0x28,0x48,0x28,0x48,0x4f,0xc8,0x40,0x08,0x80, +0x18,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x40,0x04,0x4f,0xe4,0x00,0x00,0x00, +0x00,0x7f,0xfc,0x01,0x00,0x09,0x20,0x09,0x10,0x11,0x08,0x21,0x08,0x03,0x00,0x00, +0x00,0x08,0x40,0x08,0x50,0x7f,0x48,0x00,0x48,0x3f,0xfc,0x22,0x40,0x22,0x60,0x3e, +0x60,0x08,0x60,0x2c,0xa0,0x2a,0xa0,0x2b,0x24,0x4a,0x24,0x18,0x1c,0x00,0x00,0x08, +0x08,0x08,0x88,0x08,0x88,0x08,0x88,0x2c,0xc8,0x2a,0xa8,0x2a,0xa8,0x48,0x88,0x08, +0x88,0x08,0x88,0x10,0x88,0x10,0x88,0x20,0x08,0x40,0x08,0x00,0x00,0x08,0x80,0x08, +0x80,0x0c,0xfc,0x15,0x10,0x16,0xa0,0x34,0xe0,0x57,0x3c,0x14,0x40,0x15,0x90,0x14, +0x60,0x15,0x88,0x14,0x10,0x10,0x60,0x13,0x80,0x00,0x00,0x02,0x20,0x3c,0x24,0x08, +0xa4,0x7e,0xa8,0x1d,0x50,0x2a,0x50,0x4a,0x88,0x09,0x04,0x01,0x00,0x14,0x90,0x14, +0x88,0x24,0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x10,0x40,0x10,0x40,0x10,0xa0,0x7c, +0xa0,0x11,0x10,0x13,0xf8,0x14,0x04,0x1c,0x00,0x71,0xf0,0x11,0x10,0x11,0x10,0x11, +0x10,0x11,0x10,0x31,0xf0,0x00,0x00,0x12,0x08,0x0a,0x48,0x0a,0x48,0x42,0x48,0x27, +0x68,0x26,0xd8,0x0a,0xd8,0x02,0x48,0x12,0x48,0x12,0x48,0x24,0x48,0x24,0x48,0x48, +0x48,0x50,0x08,0x00,0x00,0x00,0x30,0x1f,0xc0,0x01,0x00,0x7f,0xfc,0x03,0x80,0x05, +0x40,0x19,0x30,0x6f,0xcc,0x02,0x40,0x02,0x78,0x04,0x48,0x04,0x08,0x18,0x08,0x60, +0x70,0x00,0x00,0x02,0x20,0x0c,0x20,0x38,0x20,0x08,0x24,0x08,0xa4,0x7e,0xa8,0x08, +0xb0,0x1d,0x20,0x1a,0x20,0x2a,0x60,0x48,0x50,0x08,0x90,0x09,0x08,0x0a,0x04,0x00, +0x00,0x08,0x40,0x08,0x40,0x10,0x78,0x64,0xc8,0x19,0x30,0x0c,0x20,0x12,0xd0,0x7d, +0x08,0x08,0x64,0x2c,0x10,0x2a,0x00,0x2a,0xc0,0x48,0x30,0x08,0x08,0x00,0x00,0x10, +0x40,0x13,0xf8,0x14,0x48,0x67,0xfc,0x28,0x48,0x1b,0xf8,0x26,0x48,0x7f,0x58,0x12, +0xe8,0x3b,0xf8,0x36,0xe8,0x37,0x58,0x52,0x58,0x14,0x48,0x00,0x00,0x00,0x00,0x7f, +0xf8,0x22,0x88,0x16,0x58,0x1a,0x68,0x63,0x88,0x06,0x18,0x1f,0xe0,0x10,0x20,0x1f, +0xe0,0x10,0x20,0x10,0x20,0x1f,0xe0,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x01,0x00,0x7f, +0xfc,0x02,0x80,0x0c,0x60,0x30,0x18,0x00,0x00,0x01,0x00,0x02,0x00,0x0f,0xe0,0x0a, +0x20,0x09,0x20,0x09,0x20,0x08,0x20,0x7f,0xfc,0x09,0x20,0x09,0x20,0x11,0x20,0x11, +0x20,0x21,0x20,0x40,0x60,0x00,0x00,0x04,0x40,0x7f,0xfc,0x05,0x40,0x02,0x00,0x1f, +0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x05,0x20,0x05,0x50,0x09,0xfc,0x11, +0x04,0x60,0xfc,0x00,0x00,0x01,0x00,0x02,0x00,0x1f,0xf0,0x12,0x90,0x12,0x90,0x7f, +0xfc,0x00,0x40,0x09,0x88,0x17,0x90,0x61,0x60,0x09,0x40,0x11,0x30,0x61,0x0c,0x01, +0x00,0x00,0x00,0x04,0x40,0x3f,0x7c,0x12,0x78,0x7f,0x88,0x1e,0x78,0x12,0x40,0x1e, +0x70,0x12,0x44,0x17,0x3c,0x7f,0xfc,0x06,0x90,0x7c,0x60,0x07,0x30,0x38,0x0c,0x00, +0x00,0x12,0x48,0x1f,0x7c,0x34,0xd0,0x5f,0x78,0x14,0x50,0x1f,0x7c,0x00,0x00,0x7f, +0xfc,0x00,0x00,0x07,0xc0,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x00,0x00,0x01, +0x10,0x3d,0x18,0x27,0xd4,0x24,0x14,0x3f,0x90,0x0a,0xfc,0x2a,0x90,0x2f,0x90,0x29, +0x30,0x2b,0xb0,0x2b,0x70,0x3d,0x54,0x61,0x94,0x03,0x0c,0x00,0x00,0x08,0x00,0x08, +0xf8,0x7f,0x88,0x08,0xf8,0x3e,0x00,0x2b,0xfc,0x3e,0x88,0x2a,0xf8,0x3e,0x88,0x08, +0xf8,0x7f,0x8c,0x08,0xf8,0x0b,0x88,0x08,0x08,0x00,0x00,0x00,0x00,0x23,0xf8,0x12, +0x48,0x13,0xf8,0x02,0x48,0x03,0xf8,0x72,0x08,0x13,0xe8,0x15,0x28,0x15,0xe8,0x19, +0x28,0x18,0x18,0x26,0x00,0x41,0xfc,0x00,0x00,0x08,0x20,0x04,0x20,0x04,0x40,0x7f, +0xfc,0x02,0x80,0x1f,0xf0,0x12,0x90,0x14,0xb0,0x18,0x70,0x10,0x10,0x1f,0xf0,0x10, +0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x00,0x08,0x7e,0x88,0x18,0xa8,0x18,0xa8,0x7e, +0xa8,0x5b,0xf8,0x5b,0xf8,0x5a,0xa8,0x6e,0xa8,0x42,0xa8,0x7e,0xa8,0x43,0x28,0x7f, +0x28,0x02,0x08,0x00,0x00,0x08,0x80,0x0f,0xf8,0x18,0x80,0x1f,0xf0,0x28,0x80,0x4f, +0xf0,0x08,0x80,0x0f,0xf8,0x01,0x00,0x7f,0xfc,0x03,0x80,0x0d,0x60,0x71,0x1c,0x01, +0x00,0x00,0x00,0x00,0x20,0x7f,0x40,0x0c,0xf8,0x0c,0xa8,0x3f,0xf8,0x2d,0xa8,0x2d, +0xf8,0x35,0x60,0x37,0x68,0x21,0x68,0x3f,0xb4,0x21,0xbc,0x3f,0x24,0x01,0x1c,0x00, +0x00,0x04,0x40,0x04,0x40,0x04,0x40,0x08,0x40,0x08,0x40,0x1f,0xfc,0x28,0x40,0x48, +0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0x08, +0x80,0x08,0x40,0x08,0x40,0x17,0xfc,0x10,0x40,0x30,0x40,0x50,0x40,0x13,0xf8,0x10, +0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x17,0xfc,0x10,0x00,0x00,0x00,0x01,0x00,0x01, +0x00,0x7f,0xfc,0x02,0x40,0x02,0x20,0x04,0x70,0x3f,0x88,0x02,0x40,0x02,0x40,0x04, +0x40,0x04,0x40,0x08,0x44,0x10,0x44,0x60,0x3c,0x00,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x12,0x10,0x11,0x10,0x21,0x20,0x4f, +0xfc,0x08,0x40,0x10,0x40,0x12,0x40,0x32,0x78,0x52,0x40,0x12,0x40,0x13,0x40,0x14, +0xc0,0x14,0x60,0x18,0x1c,0x00,0x00,0x00,0x90,0x00,0x88,0x00,0x88,0x7f,0xfc,0x00, +0x80,0x08,0x88,0x08,0x88,0x0b,0x50,0x7c,0x50,0x08,0x20,0x08,0x60,0x10,0x94,0x11, +0x0c,0x20,0x04,0x00,0x00,0x00,0x00,0x1f,0xc0,0x04,0x80,0x03,0x00,0x7f,0xf8,0x03, +0x30,0x0d,0x40,0x33,0x00,0x7f,0xfc,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01, +0x00,0x00,0x00,0x10,0x40,0x08,0x40,0x08,0x40,0x40,0x40,0x20,0x40,0x27,0xfc,0x00, +0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x10,0x40,0x10,0x40,0x20,0x40,0x20,0x40,0x00, +0x00,0x10,0x40,0x08,0x40,0x0a,0x40,0x42,0x78,0x22,0x40,0x22,0x40,0x0f,0xfc,0x10, +0x00,0x16,0x08,0x11,0x30,0x20,0x00,0x20,0xa0,0x43,0x18,0x4c,0x04,0x00,0x00,0x11, +0x20,0x49,0x28,0x22,0x24,0x3e,0x24,0x2a,0x20,0x3f,0xfc,0x2a,0x20,0x3e,0x20,0x00, +0x20,0x7f,0x60,0x00,0x50,0x3e,0x90,0x23,0x08,0x3e,0x04,0x00,0x00,0x10,0x88,0x10, +0xc8,0x15,0x28,0x65,0x30,0x2a,0xfc,0x18,0x90,0x24,0x90,0x7d,0x50,0x13,0x5c,0x39, +0x50,0x35,0x50,0x35,0xb0,0x51,0x90,0x11,0x0c,0x00,0x00,0x00,0x30,0x1f,0xc0,0x01, +0x00,0x7f,0xfc,0x01,0x00,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x01, +0x00,0x3f,0xf8,0x01,0x00,0x7f,0xfc,0x00,0x00,0x08,0x20,0x08,0x20,0x15,0xfc,0x12, +0x50,0x22,0x48,0x5c,0x9c,0x09,0xf4,0x7e,0x50,0x08,0x50,0x2a,0x50,0x1c,0x90,0x18, +0x94,0x0f,0x14,0x72,0x0c,0x00,0x00,0x08,0x00,0x09,0xf8,0x08,0x88,0x0f,0x88,0x08, +0x88,0x08,0x50,0x7f,0x50,0x08,0x50,0x0a,0x20,0x29,0x20,0x29,0x50,0x28,0x90,0x49, +0x08,0x1a,0x04,0x00,0x00,0x00,0x00,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x11,0x10,0x11, +0xd0,0x12,0x50,0x12,0x50,0x15,0x50,0x18,0x90,0x10,0x94,0x21,0x0c,0x22,0x0c,0x44, +0x04,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x40,0x04,0x48,0x04,0x0f,0xf8,0x10, +0x80,0x13,0xf0,0x32,0x10,0x52,0x10,0x13,0xf0,0x12,0x10,0x12,0x10,0x13,0xf0,0x00, +0x00,0x12,0x00,0x0a,0x00,0x0b,0xf8,0x42,0x48,0x22,0x48,0x2f,0xc8,0x02,0x28,0x13, +0x30,0x16,0xb0,0x16,0x90,0x2a,0x30,0x2a,0x48,0x42,0x88,0x47,0x04,0x00,0x00,0x10, +0x00,0x11,0xf8,0x11,0x08,0x7d,0x08,0x09,0x08,0x09,0xf8,0x10,0xa0,0x18,0xa0,0x34, +0xa0,0x54,0xa0,0x11,0x20,0x11,0x24,0x12,0x24,0x14,0x1c,0x00,0x00,0x10,0x20,0x10, +0x20,0x15,0xfc,0x65,0x04,0x2a,0x84,0x18,0xf8,0x24,0xa0,0x7d,0x78,0x13,0x48,0x39, +0x78,0x35,0x48,0x35,0x48,0x51,0x48,0x11,0x78,0x00,0x00,0x01,0x00,0x1f,0xf0,0x01, +0x10,0x7f,0xfc,0x01,0x10,0x1f,0xf0,0x29,0x28,0x25,0x48,0x3f,0xf8,0x23,0x88,0x25, +0x48,0x39,0x38,0x21,0x08,0x41,0x08,0x00,0x00,0x04,0x40,0x7f,0x40,0x1f,0xf0,0x12, +0x50,0x1f,0xd0,0x3e,0x70,0x0c,0x54,0x74,0x8c,0x0d,0x04,0x01,0x00,0x1f,0xf0,0x01, +0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x04,0x40,0x7f,0x40,0x01,0xf0,0x1e,0x50,0x12, +0x50,0x1f,0xd0,0x3e,0x50,0x06,0x74,0x7c,0x8c,0x05,0x0c,0x0e,0x04,0x24,0x88,0x22, +0x44,0x42,0x44,0x00,0x00,0x01,0x00,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x1f, +0xf0,0x01,0x00,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x3f,0xf8,0x00, +0x00,0x00,0x00,0x11,0x00,0x11,0xbc,0x21,0x40,0x49,0x40,0x0f,0xc0,0x11,0x3c,0x11, +0x88,0x35,0x88,0x55,0x48,0x15,0x48,0x15,0x48,0x19,0x08,0x11,0x08,0x11,0x18,0x00, +0x00,0x00,0x80,0x20,0x90,0x10,0x88,0x1f,0xfc,0x00,0x80,0x02,0xa0,0x72,0x90,0x12, +0x90,0x14,0x88,0x14,0x88,0x18,0x88,0x18,0x80,0x26,0x00,0x41,0xfc,0x00,0x00,0x08, +0x80,0x08,0x90,0x09,0x18,0x17,0xe4,0x11,0x20,0x31,0x24,0x52,0x9c,0x14,0xf0,0x11, +0x10,0x13,0x20,0x14,0xc0,0x10,0xc0,0x13,0x30,0x1c,0x0c,0x00,0x00,0x00,0x40,0x10, +0x50,0x10,0x98,0x57,0xe4,0x54,0xa0,0x54,0xa4,0x55,0x9c,0x56,0xf0,0x54,0x90,0x7d, +0xa0,0x42,0x40,0x00,0xa0,0x03,0x18,0x0c,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0x3f, +0xf8,0x01,0x00,0x1f,0xf0,0x02,0x80,0x7f,0xfc,0x04,0x40,0x1f,0xf0,0x68,0x2c,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x00,0x00,0x00,0x18,0x7b,0xe8,0x4a,0x48,0x49, +0x50,0x79,0x20,0x4f,0xfc,0x4d,0x14,0x79,0xf8,0x4a,0xd0,0x4e,0xd0,0x79,0xfc,0x01, +0x10,0x02,0x10,0x04,0x10,0x00,0x00,0x00,0x40,0x10,0x50,0x10,0x88,0x13,0xfc,0x7e, +0xa4,0x04,0xa4,0x45,0x9c,0x26,0xf0,0x28,0x90,0x29,0x90,0x0e,0x60,0x70,0x60,0x01, +0x90,0x06,0x0c,0x00,0x00,0x00,0x30,0x01,0xd0,0x3e,0x10,0x11,0x20,0x09,0x40,0x7f, +0xfc,0x48,0x14,0x4e,0xfc,0x12,0x90,0x32,0x90,0x0d,0xfc,0x04,0x10,0x18,0x10,0x60, +0x10,0x00,0x00,0x00,0x20,0x3f,0x30,0x28,0x48,0x3f,0xf4,0x28,0x50,0x3e,0x54,0x28, +0xcc,0x3f,0x78,0x02,0x48,0x2a,0xd0,0x2b,0x30,0x22,0x30,0x44,0xc8,0x1b,0x04,0x00, +0x00,0x01,0x10,0x01,0x10,0x22,0x20,0x13,0xfc,0x16,0x20,0x06,0x20,0x0b,0xf8,0x12, +0x20,0x12,0x20,0x23,0xf8,0x22,0x20,0x42,0x20,0x42,0x20,0x03,0xfc,0x00,0x00,0x10, +0x08,0x10,0x30,0x23,0xe0,0x4a,0x20,0x0b,0xfc,0x12,0x20,0x12,0xf8,0x32,0x88,0x52, +0xf8,0x12,0x88,0x12,0xf8,0x14,0x88,0x14,0xf8,0x18,0x88,0x00,0x00,0x08,0x00,0x08, +0x00,0x0f,0xf8,0x10,0x08,0x1f,0x88,0x28,0x88,0x48,0x88,0x0f,0x88,0x08,0x88,0x08, +0x88,0x0f,0x88,0x00,0x08,0x00,0x08,0x00,0x30,0x00,0x00,0x10,0x08,0x10,0x30,0x13, +0xe0,0x7e,0x20,0x13,0xfc,0x1a,0x20,0x36,0xf8,0x36,0x88,0x32,0xf8,0x52,0x88,0x54, +0xf8,0x14,0x88,0x18,0xf8,0x10,0x88,0x00,0x00,0x00,0x80,0x7e,0x80,0x10,0xf8,0x11, +0x08,0x1f,0xe8,0x25,0x28,0x25,0x28,0x55,0xe8,0x09,0x28,0x09,0x28,0x09,0xe8,0x10, +0x08,0x20,0x08,0x40,0x30,0x00,0x00,0x10,0x40,0x0f,0xfc,0x08,0x00,0x41,0xf0,0x21, +0x10,0x21,0xf0,0x00,0x00,0x13,0xf8,0x10,0x10,0x10,0x60,0x27,0xfc,0x20,0x40,0x40, +0x40,0x40,0xc0,0x00,0x00,0x11,0x10,0x09,0x20,0x4b,0xf8,0x22,0x40,0x27,0xf0,0x0a, +0x40,0x0b,0xf0,0x12,0x40,0x23,0xf8,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01, +0x00,0x00,0x00,0x20,0x00,0x1f,0x78,0x19,0x48,0x4f,0x78,0x29,0x48,0x2f,0x78,0x08, +0x08,0x0b,0xe8,0x18,0x88,0x1b,0xe8,0x28,0x88,0x2b,0xe8,0x48,0x08,0x48,0x18,0x00, +0x00,0x00,0x18,0x00,0xe0,0x1f,0x80,0x10,0x80,0x1f,0xfc,0x10,0x80,0x17,0xf0,0x14, +0x10,0x17,0xf0,0x14,0x10,0x27,0xf0,0x24,0x10,0x47,0xf0,0x00,0x00,0x00,0x00,0x08, +0x40,0x08,0x4c,0x0a,0x70,0x73,0xc0,0x14,0x48,0x0d,0x48,0x13,0x48,0x7f,0x48,0x09, +0x48,0x2d,0xf8,0x2a,0x40,0x2a,0x44,0x48,0x44,0x08,0x3c,0x00,0x00,0x02,0x48,0x42, +0x48,0x22,0x48,0x24,0x90,0x04,0x90,0x09,0x20,0x04,0x90,0x74,0x90,0x12,0x48,0x12, +0x48,0x12,0x48,0x18,0x00,0x26,0x00,0x41,0xfc,0x00,0x00,0x01,0x10,0x20,0xa0,0x17, +0xfc,0x10,0xc0,0x03,0xf8,0x02,0xd8,0x73,0x38,0x13,0xf8,0x10,0x10,0x17,0xfc,0x11, +0x10,0x18,0x90,0x26,0x30,0x41,0xfc,0x00,0x00,0x00,0x20,0x7f,0xfc,0x0c,0x00,0x0c, +0x78,0x3f,0x48,0x2d,0x78,0x2d,0x00,0x35,0x78,0x37,0x08,0x21,0x10,0x3f,0xfc,0x21, +0x10,0x3f,0x10,0x00,0x30,0x00,0x00,0x00,0x00,0x23,0xfc,0x2a,0x20,0x2a,0x40,0x2a, +0xf8,0x2a,0x88,0x2a,0xf8,0x2a,0x88,0x2a,0xf8,0x2a,0x88,0x2a,0xf8,0x22,0x30,0x22, +0xc8,0x43,0x04,0x00,0x00,0x00,0x00,0x08,0xf0,0x08,0x90,0x0e,0x90,0x12,0x90,0x12, +0x90,0x32,0x90,0x4a,0x90,0x0c,0x90,0x04,0x94,0x0d,0x14,0x12,0x0c,0x21,0x80,0x40, +0x7c,0x00,0x00,0x08,0x00,0x09,0xf8,0x08,0x48,0x7e,0x48,0x04,0x48,0x05,0x48,0x09, +0x48,0x1e,0x48,0x2a,0x48,0x49,0x48,0x08,0x88,0x08,0x88,0x09,0x08,0x0a,0x30,0x00, +0x00,0x00,0x08,0x3f,0x10,0x00,0xe0,0x1e,0x80,0x12,0x80,0x12,0xfc,0x12,0x90,0x1e, +0x90,0x10,0x90,0x10,0x90,0x11,0x10,0x11,0x10,0x22,0x10,0x40,0x10,0x00,0x00,0x00, +0x00,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x1f,0xf0,0x01,0x10,0x1f,0xe0,0x01,0x40,0x7f, +0xfc,0x07,0xe0,0x1c,0x20,0x67,0xe0,0x04,0x20,0x07,0xe0,0x00,0x00,0x00,0x00,0x03, +0xf8,0x7a,0xa8,0x4b,0xf8,0x48,0x44,0x4b,0xf8,0x78,0x50,0x4f,0xfc,0x48,0xf8,0x4b, +0x88,0x4c,0xf8,0x78,0x88,0x00,0xf8,0x00,0x00,0x00,0x00,0x10,0x40,0x08,0x40,0x0b, +0xfc,0x40,0x48,0x20,0x50,0x27,0xfc,0x00,0x40,0x10,0x80,0x13,0xf8,0x1d,0x08,0x21, +0xf8,0x21,0x08,0x41,0xf8,0x40,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x1f,0xfc,0x11, +0x20,0x11,0x20,0x1f,0xfc,0x11,0x20,0x11,0x20,0x11,0xe0,0x11,0x20,0x20,0x00,0x2a, +0x48,0x49,0x24,0x11,0x24,0x00,0x00,0x08,0x40,0x08,0x48,0x0b,0xf8,0x72,0x50,0x0c, +0x50,0x0f,0xfc,0x12,0x40,0x7e,0xf8,0x09,0x88,0x2e,0x88,0x2a,0xf8,0x2a,0x88,0x48, +0x88,0x08,0xf8,0x00,0x00,0x00,0x00,0x3f,0xf8,0x24,0x48,0x3f,0xf8,0x01,0x10,0x1f, +0xe0,0x01,0x40,0x7f,0xfc,0x04,0x00,0x1f,0xe0,0x64,0x20,0x07,0xe0,0x04,0x20,0x07, +0xe0,0x00,0x00,0x01,0x00,0x1f,0xf0,0x01,0x10,0x7f,0xfc,0x01,0x10,0x1f,0xf0,0x01, +0x00,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x00, +0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x1f,0xf0,0x12,0x90,0x1f,0xf0,0x01,0x20,0x0f, +0xf0,0x01,0x40,0x7f,0xfc,0x1c,0x10,0x67,0xf0,0x04,0x10,0x07,0xf0,0x00,0x00,0x04, +0x40,0x7f,0xfc,0x04,0x40,0x3c,0x48,0x01,0xf8,0x7e,0x50,0x03,0xfc,0x3c,0x40,0x00, +0xf8,0x3d,0x88,0x02,0xf8,0x3c,0x88,0x24,0x88,0x3c,0xf8,0x00,0x00,0x00,0x40,0x3c, +0x40,0x01,0xf8,0x7c,0x48,0x00,0x50,0x3f,0xfc,0x00,0x40,0x3c,0xf8,0x01,0x88,0x3e, +0xf8,0x24,0x88,0x24,0x88,0x3c,0xf8,0x00,0x00,0x00,0x00,0x00,0x40,0x3c,0x40,0x24, +0x40,0x27,0xf8,0x3c,0x48,0x24,0x48,0x24,0x48,0x3c,0x48,0x24,0x48,0x24,0x48,0x26, +0x88,0x38,0x88,0x61,0x08,0x02,0x30,0x00,0x00,0x08,0x00,0x09,0xf8,0x14,0x88,0x12, +0x88,0x22,0x88,0x7e,0x50,0x08,0x50,0x7f,0x50,0x08,0x20,0x2c,0x20,0x2a,0x50,0x2a, +0x90,0x49,0x08,0x1a,0x04,0x00,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x7f, +0xfc,0x04,0x40,0x04,0x40,0x04,0x40,0x0f,0x80,0x08,0x80,0x01,0x40,0x02,0x20,0x0c, +0x10,0x30,0x10,0x00,0x00,0x00,0x80,0x00,0x80,0x1f,0xfc,0x10,0x00,0x17,0xf0,0x11, +0x20,0x10,0xc0,0x1f,0xfc,0x10,0x88,0x10,0x90,0x20,0x80,0x20,0x80,0x40,0x80,0x01, +0x80,0x00,0x00,0x10,0x40,0x10,0x40,0x20,0xa0,0x49,0x10,0x0a,0x08,0x15,0xf4,0x10, +0x40,0x37,0xfc,0x50,0x40,0x11,0x50,0x11,0x48,0x12,0x44,0x14,0x44,0x10,0xc0,0x00, +0x00,0x08,0x00,0x08,0x00,0x7e,0xf8,0x12,0x88,0x12,0x88,0x3c,0x88,0x06,0xf8,0x18, +0x00,0x61,0x00,0x14,0x90,0x14,0x88,0x24,0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x10, +0x20,0x13,0xa0,0x1a,0xa0,0x26,0xf8,0x27,0xa8,0x7a,0xa8,0x12,0xa8,0x7f,0xa8,0x12, +0xa8,0x56,0xe8,0x3b,0xc8,0x36,0x48,0x1c,0x88,0x61,0x30,0x00,0x00,0x00,0x40,0x3c, +0x40,0x24,0xa0,0x28,0x90,0x31,0x08,0x2b,0xf4,0x24,0x40,0x27,0xfc,0x24,0x40,0x25, +0x50,0x39,0x48,0x22,0x44,0x24,0x44,0x20,0xc0,0x00,0x00,0x09,0x00,0x09,0xfc,0x0b, +0x10,0x15,0xf0,0x19,0x10,0x31,0xf0,0x50,0x00,0x1f,0xfc,0x12,0x00,0x13,0xf8,0x14, +0xa8,0x19,0x28,0x12,0x48,0x10,0xb0,0x00,0x00,0x0a,0x88,0x09,0x50,0x0f,0xfc,0x15, +0xe4,0x15,0x24,0x33,0xf0,0x52,0x10,0x13,0xf0,0x12,0x10,0x13,0xf0,0x12,0x10,0x13, +0xf0,0x13,0x10,0x1c,0x08,0x00,0x00,0x00,0x40,0x3e,0x48,0x25,0x50,0x27,0xf8,0x24, +0x40,0x3f,0xfc,0x24,0xa0,0x25,0x50,0x3e,0x48,0x27,0xf4,0x24,0x90,0x24,0x90,0x25, +0x10,0x4e,0x60,0x00,0x00,0x00,0x00,0x3f,0xf8,0x20,0x20,0x20,0xc0,0x27,0x00,0x24, +0x00,0x27,0xf8,0x24,0x40,0x24,0x40,0x28,0x40,0x28,0x40,0x30,0x40,0x3f,0xfc,0x00, +0x00,0x00,0x00,0x01,0x40,0x06,0x40,0x3c,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x7f, +0xfc,0x04,0x40,0x04,0x40,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0x40,0x40,0x00, +0x00,0x00,0x00,0x7f,0xf8,0x02,0x08,0x02,0x08,0x04,0x08,0x18,0x08,0x60,0x70,0x00, +0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x00, +0x40,0x01,0x50,0x79,0x48,0x4a,0x44,0x4c,0x44,0x4b,0xf8,0x4a,0x08,0x4b,0xf8,0x4a, +0x08,0x4b,0xf8,0x7a,0x08,0x02,0x08,0x02,0x08,0x02,0x18,0x00,0x00,0x01,0x00,0x01, +0x00,0x7f,0xfc,0x08,0x20,0x04,0x40,0x3f,0xf8,0x24,0x88,0x24,0x98,0x2f,0xf8,0x34, +0x48,0x24,0x48,0x27,0xc8,0x20,0x08,0x20,0x18,0x00,0x00,0x00,0x00,0x01,0xf0,0x79, +0x10,0x49,0xf0,0x49,0x10,0x49,0xf0,0x48,0x00,0x48,0x00,0x4b,0xf8,0x7a,0x08,0x03, +0xf8,0x02,0x08,0x03,0xf8,0x00,0x00,0x00,0x00,0x11,0x10,0x09,0x20,0x7f,0xfc,0x47, +0xc4,0x44,0x44,0x17,0xf0,0x1f,0xc0,0x10,0x08,0x0f,0xf8,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x08,0x1c,0x4b,0xe4,0x2a,0x48,0x29,0x30,0x08, +0x10,0x1f,0xfc,0x69,0x10,0x08,0x90,0x09,0x30,0x7f,0xfc,0x02,0x80,0x04,0x40,0x18, +0x30,0x60,0x0c,0x00,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x08,0x20,0x04,0x40,0x7f, +0xfc,0x01,0x00,0x02,0x00,0x7f,0xfc,0x04,0x40,0x0f,0x40,0x10,0xc0,0x03,0x30,0x3c, +0x08,0x00,0x00,0x10,0x00,0x11,0xf0,0x11,0x10,0x11,0xf0,0x7d,0x10,0x25,0x10,0x25, +0xf0,0x24,0x00,0x7b,0xf8,0x4a,0x08,0x0f,0xf8,0x16,0x08,0x22,0x08,0x43,0xf8,0x00, +0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x49,0x24,0x45,0x24,0x05,0x40,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x08,0x20,0x08,0x60,0x00,0x00,0x08, +0x18,0x08,0x60,0x0f,0x88,0x4a,0x48,0x29,0x50,0x29,0x20,0x08,0x10,0x0f,0xfc,0x19, +0x10,0x68,0x90,0x08,0x90,0x08,0x10,0x08,0x10,0x08,0x30,0x00,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x09,0x20,0x09,0x10,0x11,0x08,0x11,0x08,0x21,0x04,0x41, +0x04,0x01,0x00,0x01,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x09, +0x20,0x09,0x10,0x11,0x08,0x11,0x14,0x21,0x14,0x41,0x20,0x03,0x20,0x00,0x40,0x00, +0x80,0x01,0x00,0x06,0x00,0x38,0x00,0x00,0x00,0x01,0x00,0x11,0x10,0x09,0x10,0x09, +0x20,0x3f,0xf8,0x20,0x08,0x27,0xc8,0x24,0x48,0x24,0x48,0x24,0x48,0x27,0xc8,0x20, +0x08,0x20,0x08,0x20,0x18,0x00,0x00,0x00,0x80,0x00,0x80,0x1f,0xfc,0x10,0x00,0x10, +0x80,0x10,0x80,0x10,0x80,0x1f,0xf8,0x10,0x80,0x10,0x80,0x10,0x80,0x20,0x80,0x3f, +0xfc,0x40,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x1f,0xfc,0x10,0x00,0x10,0x80,0x10, +0x80,0x1f,0xfc,0x11,0xc0,0x11,0xa0,0x12,0xa0,0x12,0x90,0x24,0x88,0x28,0x84,0x40, +0x80,0x00,0x00,0x00,0x80,0x00,0x80,0x1f,0xfc,0x12,0x20,0x1a,0xa0,0x17,0x20,0x1f, +0xbc,0x18,0xc8,0x1f,0xa8,0x1d,0xb0,0x2f,0x90,0x2c,0xb0,0x48,0xc8,0x09,0x84,0x00, +0x00,0x04,0x10,0x3f,0x90,0x0a,0x20,0x7f,0xa8,0x00,0x48,0x1f,0x10,0x11,0x10,0x1f, +0x24,0x11,0x44,0x1f,0x08,0x04,0x08,0x7f,0x90,0x04,0x20,0x04,0x40,0x00,0x00,0x00, +0x00,0x0f,0xe0,0x00,0x40,0x00,0x84,0x79,0x24,0x0f,0xe8,0x09,0x30,0x0f,0xe0,0x11, +0x10,0x1f,0xf0,0x21,0x08,0x41,0x04,0x01,0x00,0x03,0x00,0x00,0x00,0x10,0x40,0x10, +0x40,0x11,0x60,0x7d,0x50,0x11,0x48,0x12,0x48,0x12,0x54,0x1c,0x54,0x70,0xe0,0x10, +0x20,0x10,0x40,0x10,0x80,0x13,0x00,0x3c,0x00,0x00,0x00,0x10,0x00,0x13,0xf8,0x10, +0x88,0x7c,0x88,0x10,0x88,0x11,0x08,0x11,0x30,0x16,0x00,0x19,0xf8,0x71,0x08,0x11, +0x08,0x11,0x08,0x11,0xf8,0x30,0x00,0x00,0x00,0x11,0x10,0x09,0x20,0x7f,0xfc,0x40, +0x04,0x4f,0xe4,0x08,0x20,0x0f,0xf0,0x1f,0xc0,0x01,0x00,0x1f,0xf0,0x01,0x00,0x7f, +0xfc,0x01,0x00,0x03,0x00,0x00,0x00,0x10,0x40,0x17,0xfc,0x10,0x40,0x7f,0xf8,0x10, +0x48,0x17,0xfc,0x10,0x48,0x1b,0xf8,0x70,0x40,0x11,0x78,0x11,0x40,0x13,0x40,0x14, +0xc0,0x38,0x3c,0x00,0x00,0x00,0x00,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x10,0x10,0x1f, +0xf0,0x03,0x40,0x3c,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x08,0x40,0x10,0x40,0x20, +0x40,0x00,0x00,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x00, +0x00,0x00,0x00,0x3f,0xf8,0x20,0x08,0x3f,0xf8,0x20,0x08,0x3f,0xf8,0x00,0x00,0x00, +0x00,0x00,0x00,0x03,0xf8,0x78,0x88,0x48,0x88,0x48,0x88,0x49,0x08,0x79,0x30,0x4a, +0x00,0x49,0xf8,0x49,0x08,0x49,0x08,0x79,0x08,0x01,0xf8,0x00,0x00,0x00,0x00,0x00, +0x00,0x1f,0xe0,0x10,0x20,0x1f,0xe0,0x10,0x20,0x1f,0xe0,0x00,0x00,0x00,0x00,0x7c, +0xf8,0x44,0x88,0x7c,0xf8,0x44,0x88,0x7c,0xf8,0x00,0x00,0x00,0x00,0x08,0x70,0x08, +0x10,0x08,0x90,0x7e,0x90,0x08,0x90,0x1d,0x08,0x1b,0x48,0x1a,0x44,0x28,0x40,0x28, +0xa0,0x48,0x90,0x09,0x18,0x0f,0xe4,0x08,0x04,0x00,0x00,0x08,0x20,0x09,0x24,0x08, +0xa4,0x7e,0xa8,0x08,0x20,0x18,0xf8,0x1c,0x88,0x1a,0xf8,0x2a,0x88,0x28,0xf8,0x48, +0x88,0x08,0x88,0x08,0x88,0x08,0x98,0x00,0x00,0x08,0x20,0x09,0xfc,0x08,0x50,0x7f, +0xfc,0x08,0x00,0x1c,0xf8,0x1a,0x88,0x1a,0xf8,0x28,0x88,0x28,0xf8,0x48,0x20,0x0b, +0xfc,0x08,0x20,0x08,0x20,0x00,0x00,0x10,0x90,0x10,0x90,0x11,0x20,0x7f,0xfc,0x13, +0x20,0x15,0xf8,0x39,0x20,0x35,0xf8,0x35,0x20,0x51,0xfc,0x50,0x00,0x12,0xa8,0x12, +0x54,0x14,0x54,0x00,0x00,0x10,0x00,0x0f,0xf8,0x08,0x88,0x40,0x88,0x21,0x08,0x21, +0x08,0x02,0x30,0x04,0x00,0x13,0xf8,0x12,0x08,0x22,0x08,0x22,0x08,0x43,0xf8,0x40, +0x00,0x00,0x00,0x10,0x40,0x0c,0x48,0x0a,0x48,0x41,0x50,0x21,0x60,0x23,0xf8,0x02, +0x08,0x13,0xf8,0x12,0x08,0x13,0xf8,0x22,0x08,0x22,0x08,0x42,0x08,0x42,0x18,0x00, +0x00,0x10,0x40,0x08,0x40,0x0a,0x78,0x42,0x40,0x22,0x40,0x2f,0xfc,0x00,0x50,0x12, +0x48,0x12,0x54,0x14,0xd4,0x28,0x20,0x20,0x40,0x41,0x80,0x4e,0x00,0x00,0x00,0x22, +0x00,0x12,0x78,0x12,0x48,0x4f,0xc8,0x22,0x48,0x22,0x78,0x07,0x48,0x16,0xc8,0x16, +0xf8,0x1a,0x48,0x2a,0x48,0x22,0x48,0x42,0x78,0x42,0x00,0x00,0x00,0x08,0x40,0x08, +0x40,0x0b,0xfc,0x0a,0x40,0x2c,0xd0,0x2b,0xf8,0x28,0x90,0x48,0x90,0x0f,0xfc,0x08, +0xa0,0x14,0xa0,0x13,0x24,0x22,0x24,0x44,0x1c,0x00,0x00,0x04,0x40,0x04,0x40,0x08, +0x80,0x0f,0xf8,0x18,0x80,0x2f,0xf0,0x48,0x80,0x0f,0xf0,0x08,0x80,0x0f,0xfc,0x00, +0x00,0x24,0x88,0x22,0x44,0x42,0x44,0x00,0x00,0x00,0x00,0x3f,0xf8,0x24,0x88,0x24, +0x88,0x25,0x30,0x3e,0x00,0x25,0xf8,0x25,0x08,0x25,0x08,0x3d,0xf8,0x00,0x00,0x24, +0x88,0x22,0x44,0x42,0x44,0x00,0x00,0x00,0x80,0x00,0x80,0x0f,0xfc,0x48,0x00,0x28, +0x00,0x2f,0xf8,0x08,0x40,0x18,0x40,0x2a,0x78,0x4a,0x40,0x12,0x40,0x12,0x40,0x2f, +0xfc,0x40,0x00,0x00,0x00,0x01,0x00,0x09,0x20,0x11,0x18,0x63,0x24,0x00,0xc0,0x07, +0x00,0x7f,0xf0,0x08,0x10,0x0f,0xf0,0x08,0x10,0x0f,0xf0,0x08,0x10,0x0f,0xf0,0x00, +0x00,0x00,0x00,0x00,0x40,0x7e,0x44,0x11,0x44,0x11,0x48,0x10,0x50,0x11,0xf8,0x3d, +0x08,0x25,0xf8,0x65,0x08,0x25,0xf8,0x25,0x08,0x25,0x08,0x3d,0x08,0x01,0x18,0x00, +0x00,0x00,0x90,0x7e,0x90,0x10,0xa0,0x11,0xfc,0x11,0x20,0x3f,0xf8,0x25,0x20,0x65, +0xf8,0x25,0x20,0x25,0xfc,0x24,0x00,0x3e,0xa8,0x02,0x54,0x04,0x04,0x00,0x00,0x11, +0x10,0x10,0x90,0x10,0xa0,0x7f,0xfc,0x08,0x40,0x08,0x40,0x13,0xf8,0x18,0x40,0x34, +0x40,0x57,0xfc,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x00,0x00,0x02,0x80,0x0c, +0x80,0x38,0x80,0x09,0xfc,0x09,0x20,0x7e,0x20,0x08,0xb0,0x1c,0xa8,0x1a,0xa8,0x2b, +0x24,0x49,0x24,0x0a,0x24,0x08,0x20,0x08,0x60,0x00,0x00,0x01,0x00,0x1f,0xf0,0x04, +0x40,0x7f,0xfc,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x01, +0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x00,0x00,0x10,0x40,0x10,0x40,0x1f,0xfc,0x28, +0xa0,0x25,0x10,0x42,0x10,0x01,0xe0,0x1f,0x00,0x01,0x00,0x7f,0xfc,0x02,0x80,0x04, +0x40,0x18,0x30,0x60,0x0c,0x00,0x00,0x08,0x20,0x4a,0x20,0x2b,0xfc,0x2d,0x00,0x09, +0x20,0x7f,0x20,0x09,0x20,0x1d,0xf8,0x1b,0x20,0x2b,0x20,0x49,0x20,0x0a,0x20,0x0b, +0xfc,0x0c,0x00,0x00,0x00,0x08,0x00,0x0b,0xf8,0x0a,0x48,0x72,0x48,0x14,0x48,0x0c, +0x88,0x12,0xb0,0x7f,0x00,0x09,0xf8,0x2d,0x08,0x2b,0x08,0x2b,0x08,0x49,0xf8,0x08, +0x00,0x00,0x00,0x01,0x00,0x21,0x08,0x11,0x08,0x11,0x10,0x01,0x00,0x1f,0xf0,0x10, +0x10,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x30,0x00, +0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x00,0x00,0x3f,0xf8,0x20,0x08,0x3f,0xf8,0x20,0x08,0x3f,0xf8,0x00,0x00,0x04, +0x40,0x7f,0xfc,0x04,0x40,0x08,0x3c,0x0f,0xc8,0x4a,0x48,0x29,0x30,0x28,0x10,0x0b, +0xfc,0x19,0x10,0x68,0x90,0x08,0x90,0x08,0x10,0x08,0x30,0x00,0x00,0x04,0x40,0x7f, +0xfc,0x04,0x40,0x08,0x80,0x0f,0xf8,0x18,0x80,0x1f,0xf0,0x28,0x80,0x4f,0xf0,0x08, +0x80,0x0f,0xf8,0x14,0x90,0x22,0x48,0x42,0x44,0x00,0x00,0x10,0xc0,0x17,0x3c,0x21, +0x00,0x4f,0xc0,0x09,0x3c,0x17,0xc8,0x15,0x48,0x37,0xc8,0x55,0x48,0x17,0xc8,0x11, +0x08,0x17,0xc8,0x11,0x88,0x1e,0x18,0x00,0x00,0x11,0x10,0x09,0x20,0x7f,0xfc,0x40, +0x04,0x4f,0xe4,0x08,0x20,0x0f,0xe0,0x01,0x00,0x7f,0xfc,0x02,0x90,0x0c,0xa0,0x74, +0x40,0x07,0x30,0x18,0x0c,0x00,0x00,0x00,0x60,0x3c,0x20,0x00,0xa0,0x7e,0x90,0x00, +0x90,0x3d,0x48,0x01,0x48,0x3e,0x44,0x00,0x40,0x3c,0x60,0x24,0x90,0x24,0x90,0x3f, +0xe8,0x20,0x08,0x00,0x00,0x00,0x00,0x3d,0xfc,0x00,0x20,0x7e,0x20,0x00,0xa0,0x3c, +0xa0,0x00,0xb8,0x3c,0xa0,0x00,0xa0,0x3c,0xa0,0x24,0xa0,0x24,0xa0,0x3f,0xfc,0x00, +0x00,0x00,0x00,0x00,0x00,0x3d,0xf8,0x00,0x48,0x7e,0x48,0x00,0x88,0x3c,0x88,0x01, +0x30,0x3e,0x00,0x01,0xf8,0x3d,0x08,0x25,0x08,0x25,0x08,0x3d,0xf8,0x00,0x00,0x00, +0x00,0x01,0x10,0x3c,0x90,0x00,0xa0,0x7f,0xfc,0x00,0x40,0x3c,0x40,0x03,0xf8,0x3c, +0x40,0x00,0x40,0x3f,0xfc,0x24,0x40,0x24,0x40,0x3c,0x40,0x00,0x40,0x00,0x00,0x02, +0x00,0x07,0xe0,0x18,0xc0,0x7f,0xf0,0x11,0x10,0x1f,0xf0,0x13,0x18,0x0d,0x90,0x72, +0xa0,0x0d,0xc0,0x32,0xa0,0x0c,0x98,0x30,0x84,0x03,0x00,0x00,0x00,0x11,0x10,0x09, +0x20,0x7f,0xfc,0x47,0xc4,0x44,0x44,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x06,0x60,0x38,0x18,0x00,0x00,0x08,0x3c,0x4f,0xc8,0x29, +0x50,0x1f,0xfc,0x69,0x10,0x08,0xb0,0x7f,0xfc,0x02,0x80,0x1f,0xf0,0x14,0xb0,0x18, +0xf0,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x00,0x00,0x08,0x00,0x09,0xfc,0x14,0x20,0x12, +0x20,0x22,0xa0,0x5c,0xa0,0x08,0xb8,0x7e,0xa0,0x08,0xa0,0x2a,0xa0,0x1c,0xa0,0x18, +0xa0,0x0f,0xfc,0x70,0x00,0x00,0x00,0x08,0x18,0x08,0xe0,0x15,0xfc,0x12,0x20,0x22, +0xf8,0x5c,0xa8,0x08,0xf8,0x7e,0xa8,0x08,0xf8,0x2a,0x20,0x1c,0xf8,0x18,0x20,0x0f, +0xfc,0x70,0x00,0x00,0x00,0x08,0x20,0x09,0xf8,0x14,0x90,0x13,0xfc,0x22,0xf8,0x5c, +0xa8,0x08,0xf8,0x7e,0xa8,0x08,0xf8,0x2a,0x20,0x1d,0xf8,0x18,0x20,0x0f,0xfc,0x70, +0x00,0x00,0x00,0x00,0x40,0x3f,0xf8,0x24,0x90,0x2b,0xfc,0x28,0x00,0x31,0xf0,0x29, +0x10,0x25,0xf0,0x25,0x10,0x25,0xf0,0x38,0x40,0x27,0xfc,0x20,0x40,0x20,0x40,0x00, +0x00,0x14,0x20,0x15,0x24,0x7f,0xa4,0x14,0xa8,0x1c,0x20,0x08,0xf8,0x3e,0x88,0x2a, +0xf8,0x3e,0x88,0x08,0xf8,0x7f,0x88,0x08,0x88,0x08,0x88,0x08,0x98,0x00,0x00,0x02, +0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0xf0,0x02,0x00,0x02,0x00,0x02, +0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x11,0x00,0x09,0x00,0x05,0x00,0x03, +0x00,0x03,0x00,0x04,0xc0,0x18,0x30,0x60,0x0c,0x00,0x00,0x00,0x00,0x0f,0xe0,0x00, +0x40,0x00,0x88,0x3d,0x48,0x05,0x50,0x09,0x20,0x09,0x20,0x11,0x10,0x21,0x08,0x43, +0x04,0x00,0x00,0x3f,0xf8,0x00,0x00,0x00,0x00,0x00,0x60,0x1f,0x80,0x01,0x00,0x3f, +0xf8,0x09,0x20,0x7f,0xfc,0x09,0x20,0x3f,0xf8,0x03,0x80,0x05,0x40,0x19,0x30,0x61, +0x0c,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x7f,0xf8,0x40,0x08,0x40,0x08,0x07, +0x80,0x04,0x80,0x04,0x80,0x04,0x80,0x04,0x80,0x08,0x80,0x08,0x80,0x10,0x88,0x20, +0x88,0x40,0x78,0x00,0x00,0x01,0x08,0x1e,0x28,0x04,0x28,0x3f,0xa8,0x15,0x28,0x7f, +0xe8,0x15,0x28,0x15,0x28,0x3f,0xa8,0x0e,0x28,0x15,0x28,0x25,0x08,0x44,0x08,0x04, +0x18,0x00,0x00,0x00,0x50,0x10,0x48,0x10,0x48,0x13,0xfc,0x7e,0x40,0x12,0x48,0x13, +0xa8,0x12,0xa8,0x16,0xb0,0x1a,0x90,0x64,0x90,0x06,0xb4,0x09,0xcc,0x10,0x04,0x00, +0x00,0x00,0x00,0x11,0xf0,0x11,0x10,0x11,0xf0,0x7d,0x10,0x11,0xf0,0x10,0x00,0x17, +0xfc,0x15,0x00,0x1b,0xf8,0x64,0xa8,0x01,0x28,0x02,0x48,0x00,0xb0,0x00,0x00,0x00, +0x40,0x17,0xfc,0x11,0x10,0x12,0xa8,0x7f,0xfc,0x10,0xa0,0x13,0xf8,0x10,0xa0,0x17, +0xfc,0x18,0xc8,0x63,0x30,0x0d,0x50,0x01,0x88,0x06,0x04,0x00,0x00,0x10,0x40,0x13, +0xfc,0x11,0xa8,0x12,0xa4,0x7f,0xfc,0x24,0xa0,0x25,0xf8,0x24,0xa0,0x7b,0xfc,0x48, +0xc8,0x0f,0xb0,0x14,0x90,0x20,0xc8,0x43,0x04,0x00,0x00,0x11,0x10,0x09,0x20,0x7f, +0xfc,0x40,0x04,0x4f,0xe4,0x08,0x20,0x0f,0xe0,0x01,0x00,0x1f,0xf0,0x11,0x10,0x11, +0x10,0x11,0x10,0x11,0x60,0x01,0x00,0x00,0x00,0x10,0x40,0x13,0xf8,0x10,0x40,0x19, +0xf0,0x34,0x40,0x37,0xfc,0x30,0x00,0x51,0xf0,0x11,0x10,0x11,0xf0,0x11,0x10,0x11, +0xf0,0x11,0x10,0x11,0x30,0x00,0x00,0x10,0x00,0x17,0xfc,0x10,0x40,0x7d,0xf0,0x11, +0x10,0x11,0xf0,0x17,0xfc,0x1e,0xd4,0x72,0xf8,0x14,0xf4,0x11,0x90,0x16,0x60,0x10, +0xf0,0x37,0x0c,0x00,0x00,0x02,0x00,0x02,0x00,0x07,0xe0,0x0c,0x40,0x32,0x80,0x03, +0x80,0x0d,0x60,0x71,0x1c,0x1f,0xf0,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01, +0x00,0x00,0x00,0x08,0x20,0x08,0x20,0x08,0x20,0x7f,0xfc,0x08,0x20,0x1d,0x20,0x1b, +0x20,0x1a,0xa0,0x28,0xa0,0x28,0x60,0x48,0x60,0x08,0x50,0x09,0x88,0x0e,0x04,0x00, +0x00,0x10,0x80,0x08,0x80,0x09,0xf0,0x42,0x20,0x24,0x40,0x23,0xf8,0x00,0x48,0x0f, +0xfc,0x10,0x48,0x13,0xf8,0x20,0x40,0x20,0x40,0x40,0x40,0x40,0xc0,0x00,0x00,0x08, +0x40,0x08,0x50,0x08,0x48,0x48,0x48,0x2f,0xfc,0x28,0x40,0x08,0x40,0x08,0x40,0x18, +0xa0,0x28,0xa0,0x49,0x10,0x0a,0x10,0x0c,0x08,0x08,0x04,0x00,0x00,0x00,0x00,0x0f, +0xe0,0x09,0x20,0x0f,0xe0,0x09,0x20,0x0f,0xe0,0x00,0x00,0x7f,0xfc,0x48,0x24,0x4f, +0xe4,0x08,0x20,0x0f,0xe0,0x08,0x20,0x7f,0xfc,0x00,0x00,0x04,0x40,0x1b,0xfc,0x71, +0x10,0x12,0xa8,0x17,0xfc,0x7c,0xa0,0x13,0xf8,0x18,0xa0,0x37,0xfc,0x34,0xe8,0x57, +0x90,0x10,0xb0,0x10,0xc8,0x13,0x04,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x1f, +0xe0,0x00,0x48,0x3d,0x88,0x05,0x50,0x19,0x30,0x63,0x0c,0x0f,0xe0,0x00,0x00,0x24, +0x88,0x22,0x44,0x42,0x44,0x00,0x00,0x00,0x40,0x3f,0xfc,0x01,0x10,0x7e,0xa8,0x03, +0xfc,0x3c,0xa0,0x01,0xf8,0x3c,0xa0,0x03,0xfc,0x3c,0xe8,0x27,0x90,0x24,0xb0,0x3c, +0xc8,0x07,0x04,0x00,0x00,0x00,0x20,0x7f,0xfc,0x0c,0x88,0x0d,0x54,0x3f,0xfc,0x2e, +0x50,0x2e,0xf8,0x36,0x50,0x37,0xfc,0x22,0x68,0x3f,0xd0,0x22,0x50,0x3e,0x68,0x03, +0x84,0x00,0x00,0x08,0x20,0x08,0x20,0x15,0xfc,0x13,0x04,0x22,0x00,0x5d,0xfc,0x08, +0x20,0x7e,0xa0,0x08,0xb8,0x2a,0xa0,0x1c,0xa0,0x19,0x60,0x0f,0x20,0x72,0x1c,0x00, +0x00,0x00,0x00,0x07,0xf8,0x74,0x08,0x57,0xf8,0x54,0x60,0x57,0xf0,0x55,0x50,0x55, +0xf0,0x54,0x40,0x77,0xf8,0x0a,0xa8,0x0b,0xd8,0x12,0x08,0x22,0x18,0x00,0x00,0x00, +0x20,0x10,0x20,0x13,0xfc,0x10,0x20,0x7e,0xf8,0x12,0x88,0x12,0xf8,0x12,0x88,0x16, +0xf8,0x1a,0x88,0x62,0xf8,0x02,0x00,0x03,0xfc,0x00,0x00,0x00,0x00,0x08,0x40,0x08, +0x40,0x14,0x40,0x12,0xfc,0x29,0x20,0x7e,0x20,0x22,0xf8,0x3e,0xa8,0x22,0xa8,0x3e, +0xa8,0x24,0xa8,0x26,0xb8,0x3a,0x20,0x60,0x20,0x00,0x00,0x10,0x20,0x10,0x28,0x10, +0x24,0x7f,0xfc,0x10,0x20,0x10,0x20,0x17,0xe0,0x11,0x20,0x19,0x20,0x71,0x10,0x11, +0x50,0x11,0x94,0x1e,0x0c,0x30,0x04,0x00,0x00,0x08,0x20,0x08,0x20,0x09,0xfc,0x7e, +0x20,0x09,0x78,0x19,0x48,0x1d,0x78,0x1b,0x48,0x2b,0x78,0x29,0x48,0x49,0x78,0x09, +0x00,0x09,0xfc,0x08,0x00,0x00,0x00,0x00,0x20,0x7e,0x20,0x11,0xfc,0x10,0x20,0x1d, +0x78,0x25,0x48,0x25,0x78,0x55,0x48,0x19,0x78,0x09,0x48,0x11,0x78,0x11,0x00,0x61, +0xfc,0x00,0x00,0x00,0x00,0x10,0x00,0x13,0xf8,0x12,0xa8,0x12,0xa8,0x17,0xf8,0x35, +0x00,0x39,0xf8,0x52,0x88,0x17,0xe8,0x1a,0xa8,0x17,0xe8,0x24,0xa8,0x20,0xf8,0x47, +0x30,0x00,0x00,0x11,0x20,0x11,0x30,0x17,0xe8,0x66,0xa8,0x2a,0xa0,0x1b,0xfc,0x24, +0x20,0x7f,0xa8,0x12,0xa8,0x3b,0x90,0x36,0x90,0x37,0xb4,0x52,0x4c,0x10,0x84,0x00, +0x00,0x01,0x20,0x7d,0x30,0x2f,0xe8,0x2a,0xa8,0x3a,0xa0,0x2f,0xfc,0x28,0x20,0x3b, +0xa8,0x2a,0xa8,0x2f,0xb0,0x3a,0x90,0x6b,0xb4,0x0a,0x4c,0x08,0x84,0x00,0x00,0x04, +0x00,0x07,0xe0,0x08,0x40,0x10,0x80,0x7f,0xf0,0x11,0x10,0x11,0x10,0x11,0x10,0x1f, +0xf0,0x10,0x00,0x10,0x00,0x10,0x04,0x10,0x04,0x0f,0xfc,0x00,0x00,0x10,0x20,0x1e, +0x20,0x24,0x20,0x48,0xf8,0x3e,0xa8,0x2a,0xa8,0x3e,0xa8,0x2a,0xf8,0x2a,0x20,0x3e, +0x20,0x22,0x30,0x22,0x28,0x22,0x3c,0x47,0xc4,0x00,0x00,0x01,0x00,0x01,0x00,0x02, +0x80,0x04,0x40,0x19,0x30,0x6f,0xec,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xf0,0x09, +0x10,0x08,0xa0,0x0e,0x60,0x70,0x1c,0x00,0x00,0x08,0x20,0x0c,0x20,0x12,0x20,0x2a, +0xf8,0x48,0xa8,0x3e,0xa8,0x22,0xa8,0x3e,0xf8,0x22,0x20,0x3e,0x20,0x24,0x30,0x26, +0x28,0x3a,0x3c,0x61,0xc4,0x00,0x00,0x00,0x00,0x1f,0xfc,0x10,0x00,0x17,0xf0,0x10, +0x00,0x1f,0xfc,0x12,0x48,0x23,0xb0,0x5c,0x2c,0x00,0x20,0x7f,0xfc,0x04,0x20,0x02, +0x20,0x00,0x60,0x00,0x00,0x00,0x00,0x1f,0xf8,0x10,0x08,0x10,0x08,0x1f,0xf8,0x11, +0x00,0x11,0x00,0x1f,0xe0,0x11,0x20,0x11,0x20,0x12,0x20,0x22,0x24,0x24,0x24,0x48, +0x1c,0x00,0x00,0x08,0x40,0x08,0x40,0x0b,0xf8,0x12,0x48,0x12,0x48,0x33,0xf8,0x52, +0x48,0x12,0x48,0x13,0xf8,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x00, +0x00,0x08,0x00,0x09,0xf0,0x08,0x00,0x17,0xfc,0x10,0x00,0x33,0xf8,0x50,0x00,0x13, +0xf8,0x10,0x00,0x13,0xf8,0x12,0x08,0x12,0x08,0x13,0xf8,0x10,0x00,0x00,0x00,0x08, +0x00,0x0b,0xf0,0x08,0x10,0x13,0xf0,0x10,0x10,0x33,0xf0,0x50,0x00,0x1f,0xfc,0x18, +0x04,0x1b,0xf4,0x11,0x20,0x10,0xc0,0x13,0x30,0x1c,0x0c,0x00,0x00,0x00,0x00,0x1f, +0xf8,0x10,0x00,0x17,0xf0,0x10,0x00,0x1f,0xfc,0x14,0x90,0x27,0x60,0x58,0x1c,0x0f, +0xf0,0x08,0x10,0x08,0x10,0x0f,0xf0,0x00,0x00,0x00,0x00,0x10,0x00,0x11,0xfc,0x11, +0x00,0x11,0x00,0x7d,0xf8,0x25,0x00,0x25,0xfc,0x25,0x68,0x79,0x68,0x4d,0x70,0x0a, +0x50,0x12,0x50,0x24,0x68,0x41,0x84,0x00,0x00,0x01,0x00,0x7f,0xfc,0x40,0x04,0x49, +0xf4,0x08,0x10,0x49,0xf0,0x28,0x10,0x2b,0xfc,0x0a,0x04,0x1f,0xf8,0x68,0x90,0x08, +0x60,0x08,0xf0,0x0b,0x0c,0x00,0x00,0x01,0x00,0x7f,0xfc,0x40,0x64,0x5f,0xa4,0x05, +0x40,0x7f,0xfc,0x05,0x40,0x19,0x30,0x6f,0xec,0x09,0x20,0x0f,0xe0,0x09,0x20,0x0f, +0xe0,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x80,0x00,0x40,0x02,0x40,0x02,0x00,0x02, +0x00,0x12,0x10,0x12,0x08,0x12,0x04,0x22,0x04,0x42,0x00,0x02,0x10,0x02,0x10,0x01, +0xf0,0x00,0x00,0x10,0x40,0x17,0xfc,0x10,0x40,0x19,0xf0,0x35,0x10,0x35,0xf0,0x31, +0x10,0x51,0xf0,0x11,0x10,0x11,0xf0,0x17,0xfc,0x10,0xa0,0x11,0x10,0x16,0x08,0x00, +0x00,0x10,0x00,0x13,0xfc,0x12,0x00,0x7e,0x00,0x12,0xf8,0x12,0x00,0x13,0xfc,0x1e, +0xc8,0x72,0xc8,0x12,0xb0,0x14,0xa0,0x14,0x90,0x18,0xc8,0x33,0x04,0x00,0x00,0x08, +0x08,0x08,0x10,0x7f,0xe0,0x22,0x80,0x12,0x80,0x14,0xfc,0x7f,0x90,0x08,0x90,0x7e, +0x90,0x1c,0x90,0x1b,0x10,0x29,0x10,0x4a,0x10,0x08,0x10,0x00,0x00,0x00,0x00,0x3f, +0xf8,0x24,0x48,0x14,0x48,0x14,0x50,0x7f,0xfc,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x3f, +0xf8,0x03,0x80,0x0d,0x60,0x31,0x18,0x09,0x20,0x08,0x20,0x7f,0xfc,0x18,0x60,0x1c, +0x70,0x2a,0xa8,0x49,0x24,0x08,0x20,0x00,0x00,0x10,0x40,0x17,0xfc,0x10,0x40,0x7f, +0xf8,0x10,0xa0,0x17,0xfc,0x39,0x10,0x36,0xe8,0x34,0x44,0x53,0xf8,0x50,0xe0,0x11, +0x50,0x16,0x4c,0x10,0x40,0x00,0x00,0x10,0x00,0x0b,0xf0,0x08,0x10,0x43,0xf0,0x20, +0x10,0x23,0xf0,0x00,0x00,0x1f,0xfc,0x18,0x04,0x1b,0xf4,0x21,0x20,0x20,0xc0,0x41, +0xe0,0x4e,0x1c,0x00,0x00,0x10,0x00,0x0b,0xfc,0x0a,0xa4,0x44,0xa0,0x20,0xa4,0x21, +0x1c,0x02,0x40,0x10,0x40,0x17,0xfc,0x10,0xe0,0x21,0x50,0x22,0x48,0x44,0x44,0x40, +0x40,0x00,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x21,0x08,0x21,0x08,0x3f,0xf8,0x21, +0x08,0x21,0x08,0x3f,0xf8,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00, +0x00,0x00,0x80,0x00,0x80,0x0f,0xfc,0x48,0x80,0x29,0x40,0x2a,0x30,0x0c,0x4c,0x19, +0x80,0x28,0x20,0x48,0xc8,0x13,0x10,0x10,0x20,0x20,0xc0,0x47,0x00,0x00,0x00,0x01, +0x00,0x7f,0xfc,0x01,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x7f,0xfc,0x04,0x40,0x18,0x30,0x60,0x08,0x00,0x00,0x10,0x40,0x10, +0x40,0x10,0x40,0x7f,0xf8,0x0a,0x48,0x0a,0x48,0x13,0xf8,0x1a,0x48,0x36,0x48,0x57, +0xf8,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x00,0x00,0x01,0x00,0x3f,0xf8,0x01, +0x00,0x1f,0xf0,0x02,0x80,0x7f,0xfc,0x04,0x40,0x0f,0xa0,0x11,0x10,0x6f,0xec,0x03, +0x80,0x0d,0x60,0x31,0x18,0x01,0x00,0x00,0x00,0x10,0x40,0x10,0x40,0x14,0x40,0x67, +0xf8,0x1a,0x48,0x1a,0x48,0x27,0xf8,0x7e,0x48,0x12,0x48,0x1b,0xf8,0x34,0x40,0x34, +0x40,0x50,0x40,0x10,0x40,0x00,0x00,0x00,0x00,0x3f,0xfc,0x21,0x00,0x21,0x00,0x3f, +0xf0,0x20,0x10,0x20,0x10,0x20,0x10,0x3f,0xf0,0x21,0x00,0x21,0x00,0x21,0x00,0x3f, +0xfc,0x00,0x00,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x04,0x40,0x00, +0x00,0x01,0x00,0x04,0x90,0x14,0x48,0x14,0x44,0x24,0x04,0x44,0x20,0x04,0x20,0x03, +0xe0,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x08,0x0c,0x3f,0x70,0x12,0x40,0x14, +0x40,0x7f,0x7c,0x08,0x48,0x7f,0x48,0x1c,0x48,0x2a,0x88,0x4a,0x88,0x09,0x08,0x00, +0x00,0x08,0x00,0x08,0xf8,0x7f,0x88,0x22,0x88,0x14,0xf8,0x7f,0x88,0x08,0xf8,0x7f, +0x88,0x1c,0xf8,0x1a,0x60,0x2a,0x60,0x48,0xa4,0x09,0x24,0x0a,0x1c,0x00,0x00,0x00, +0x40,0x3c,0x40,0x00,0x60,0x7e,0xa0,0x00,0x90,0x3d,0x28,0x02,0x44,0x3d,0x90,0x00, +0x20,0x3c,0x44,0x25,0x88,0x24,0x10,0x3c,0x60,0x03,0x80,0x00,0x00,0x01,0x00,0x02, +0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x24,0x0f,0xe8,0x08,0x30,0x0f,0xe0,0x78, +0x60,0x01,0xa0,0x06,0x20,0x38,0x20,0x00,0x60,0x00,0x00,0x01,0x00,0x01,0x00,0x3f, +0xf8,0x08,0x20,0x04,0x20,0x04,0x40,0x7f,0xfc,0x01,0x00,0x01,0x00,0x3f,0xf8,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x01,0x10,0x21,0x10,0x12,0x20,0x13, +0xfc,0x06,0x20,0x0a,0x20,0x73,0xf8,0x12,0x20,0x13,0xf8,0x12,0x20,0x13,0xfc,0x1a, +0x00,0x26,0x00,0x41,0xfc,0x00,0x00,0x08,0x20,0x08,0x20,0x14,0x20,0x12,0x20,0x22, +0x20,0x5d,0xfc,0x08,0x20,0x7e,0x20,0x08,0x20,0x2a,0x20,0x1c,0x20,0x18,0x20,0x0e, +0x20,0x70,0x20,0x00,0x00,0x00,0x00,0x3f,0xf8,0x01,0x00,0x7f,0xfc,0x41,0x04,0x5d, +0x74,0x0f,0x38,0x00,0x00,0x1f,0xf8,0x10,0x00,0x1f,0xfc,0x14,0x90,0x27,0x60,0x58, +0x1c,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x03, +0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x10,0x10,0x20,0x08,0x40,0x04,0x00, +0x00,0x08,0x00,0x08,0x00,0x0b,0xf8,0x10,0x00,0x10,0x00,0x30,0x00,0x50,0x00,0x10, +0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x17,0xfc,0x10,0x00,0x10,0x00,0x00,0x00,0x00, +0x00,0x7f,0xf8,0x02,0x08,0x02,0x08,0x02,0x08,0x02,0x08,0x1e,0x08,0x07,0x08,0x04, +0x88,0x08,0x48,0x08,0x08,0x10,0x08,0x20,0x08,0x40,0x70,0x00,0x00,0x00,0x80,0x1f, +0xfc,0x12,0x40,0x1f,0xf8,0x12,0x48,0x1f,0xf8,0x17,0xcc,0x14,0x70,0x27,0x44,0x58, +0xbc,0x0f,0xf0,0x00,0x80,0x3f,0xfc,0x00,0x00,0x00,0x00,0x00,0x30,0x03,0xc0,0x3d, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x3f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xe0,0x00,0x20,0x1f, +0xe0,0x00,0x20,0x1f,0xe0,0x3e,0xf8,0x08,0x88,0x0e,0xf8,0x30,0x40,0x7f,0xfc,0x04, +0x40,0x02,0x40,0x00,0xc0,0x00,0x00,0x04,0x40,0x3f,0xf8,0x04,0x40,0x07,0xc0,0x04, +0x40,0x07,0xc0,0x04,0x40,0x7f,0xfc,0x12,0x80,0x12,0x88,0x14,0x78,0x18,0x00,0x1f, +0xf8,0x10,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x08,0x10,0x08,0x10,0x0f,0xf0,0x09, +0x00,0x10,0x80,0x10,0x40,0x23,0x30,0x40,0x8c,0x00,0x00,0x0f,0x00,0x00,0xc0,0x00, +0x20,0x00,0x00,0x00,0x00,0x3f,0xf8,0x28,0x88,0x3e,0x50,0x22,0x60,0x3e,0x90,0x29, +0x0c,0x3f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x08,0x60,0x00, +0x00,0x00,0x00,0x3d,0xf0,0x00,0x90,0x7e,0x90,0x00,0x90,0x3c,0x90,0x00,0xb0,0x3c, +0xd0,0x01,0x90,0x3c,0x90,0x24,0x94,0x25,0x0c,0x3d,0x0c,0x22,0x04,0x00,0x00,0x00, +0x00,0x27,0xe0,0x11,0x20,0x11,0x20,0x01,0x20,0x01,0x20,0x0f,0xe0,0x71,0x20,0x11, +0x10,0x11,0x14,0x11,0x0c,0x19,0x04,0x26,0x00,0x41,0xfc,0x00,0x00,0x00,0x40,0x3c, +0x40,0x27,0xfc,0x28,0x40,0x2b,0xf8,0x32,0x48,0x2b,0xf8,0x26,0x48,0x27,0xf8,0x24, +0x40,0x27,0xfc,0x38,0x40,0x20,0x40,0x20,0x40,0x00,0x00,0x14,0x00,0x15,0xf8,0x7f, +0x48,0x14,0x48,0x1c,0x48,0x08,0xc8,0x3e,0x68,0x2a,0x58,0x3e,0x48,0x08,0x48,0x7f, +0x88,0x08,0x88,0x09,0x08,0x0a,0x30,0x00,0x00,0x10,0x40,0x1f,0x7c,0x28,0xa0,0x45, +0x10,0x00,0x00,0x7f,0xf8,0x00,0x08,0x3f,0xe8,0x00,0x08,0x1f,0x88,0x10,0x88,0x1f, +0x88,0x10,0x88,0x00,0x18,0x00,0x00,0x00,0x00,0x3f,0xc0,0x02,0xf8,0x7a,0xa8,0x03, +0xa8,0x3a,0xa8,0x02,0xa8,0x3b,0x98,0x02,0x90,0x3a,0xd0,0x2b,0xb0,0x2e,0xa8,0x38, +0xc8,0x20,0x84,0x00,0x00,0x10,0x00,0x17,0xfc,0x20,0x40,0x48,0x80,0x09,0xf8,0x11, +0x08,0x25,0xf8,0x45,0x08,0x09,0xf8,0x09,0x08,0x11,0xf8,0x20,0x90,0x43,0x08,0x0c, +0x04,0x00,0x00,0x00,0x40,0x7f,0xc0,0x0c,0x40,0x0c,0x7c,0x3f,0xa0,0x2d,0xa0,0x2d, +0x3c,0x35,0x20,0x37,0x20,0x21,0x3c,0x3f,0x20,0x21,0x20,0x3f,0x20,0x00,0x20,0x00, +0x00,0x00,0x00,0x7f,0xf8,0x40,0x08,0x52,0x28,0x49,0x28,0x45,0x48,0x5c,0x48,0x43, +0x88,0x40,0xc8,0x41,0x28,0x46,0x08,0x58,0x08,0x7f,0xf8,0x00,0x00,0x00,0x00,0x00, +0x00,0x1f,0xfc,0x10,0x08,0x1f,0xc8,0x10,0x08,0x17,0x88,0x14,0xfc,0x14,0xc8,0x17, +0xa8,0x14,0xa8,0x12,0x88,0x23,0x08,0x23,0x88,0x4c,0x18,0x00,0x00,0x00,0x00,0x27, +0xfc,0x10,0x00,0x13,0xf8,0x02,0x08,0x02,0x08,0x73,0xf8,0x12,0x10,0x11,0x10,0x11, +0x20,0x17,0xfc,0x18,0x00,0x26,0x00,0x41,0xfc,0x00,0x00,0x01,0x00,0x01,0x00,0x79, +0x00,0x49,0x00,0x49,0xfc,0x4a,0x48,0x4a,0x50,0x4c,0x40,0x48,0x40,0x78,0xa0,0x48, +0xa0,0x41,0x10,0x06,0x08,0x18,0x04,0x00,0x00,0x00,0x30,0x1f,0xc0,0x01,0x00,0x3f, +0xf8,0x09,0x20,0x09,0x20,0x7f,0xfc,0x09,0x20,0x09,0x20,0x3f,0xf8,0x01,0x00,0x01, +0x00,0x3f,0xf8,0x00,0x00,0x00,0x00,0x08,0x20,0x08,0x20,0x3c,0x20,0x25,0xfc,0x25, +0x24,0x3d,0x24,0x21,0x24,0x21,0x24,0x3d,0x24,0x25,0x24,0x25,0x38,0x3c,0x20,0x20, +0x20,0x00,0x20,0x00,0x00,0x10,0x90,0x10,0x90,0x11,0x20,0x7d,0xfc,0x13,0x20,0x15, +0x20,0x11,0xf8,0x15,0x20,0x19,0x20,0x71,0xf8,0x11,0x20,0x11,0x20,0x11,0xfc,0x31, +0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x08,0x01,0x88,0x7f,0x90,0x05,0x60,0x05, +0x40,0x09,0x20,0x09,0x20,0x11,0x10,0x21,0x08,0x41,0x04,0x01,0x00,0x03,0x00,0x00, +0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x0a,0x40,0x2a,0xfc,0x2c,0xa8,0x29,0x30,0x4a, +0x20,0x08,0x20,0x0c,0x60,0x12,0x50,0x12,0x90,0x21,0x08,0x42,0x04,0x00,0x00,0x00, +0x18,0x7b,0xe0,0x48,0x40,0x4b,0xf8,0x79,0x50,0x49,0x50,0x4f,0xfc,0x79,0x50,0x49, +0x50,0x4b,0xf8,0x78,0x40,0x00,0x40,0x07,0xfc,0x00,0x00,0x00,0x00,0x08,0x40,0x4a, +0x40,0x2b,0xf0,0x2c,0x50,0x08,0x54,0x7e,0x94,0x09,0x2c,0x1c,0x20,0x1a,0x20,0x2b, +0xfc,0x48,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x00,0x00,0x00,0x00,0x3e,0xf8,0x12, +0x48,0x0e,0x38,0x32,0xc8,0x07,0x18,0x01,0x00,0x3f,0xf8,0x04,0x20,0x0b,0x50,0x11, +0x88,0x7f,0xfc,0x01,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x0f, +0xe0,0x08,0x20,0x7f,0xfc,0x08,0x20,0x0f,0xe0,0x03,0x10,0x0d,0x10,0x74,0xa0,0x04, +0x40,0x07,0x30,0x38,0x0c,0x00,0x00,0x02,0x10,0x21,0x20,0x17,0xfc,0x10,0x80,0x01, +0x88,0x0e,0xc8,0x71,0x70,0x16,0xe0,0x11,0x50,0x16,0x48,0x10,0x44,0x19,0x80,0x26, +0x00,0x41,0xfc,0x00,0x00,0x00,0x40,0x7f,0x40,0x0c,0xf0,0x0c,0x50,0x3f,0x50,0x2d, +0x54,0x2d,0x94,0x35,0x2c,0x37,0x20,0x21,0xfc,0x3f,0x20,0x21,0x20,0x3f,0x20,0x00, +0x20,0x00,0x00,0x08,0x48,0x08,0x48,0x14,0x90,0x12,0xfc,0x23,0x90,0x5e,0x90,0x08, +0xf8,0x7e,0x90,0x08,0x90,0x2a,0xf8,0x1c,0x90,0x18,0x90,0x0e,0xfc,0x70,0x80,0x00, +0x00,0x08,0x18,0x09,0xe0,0x14,0x20,0x13,0xfc,0x22,0xa8,0x5c,0xa8,0x09,0xfc,0x7e, +0xa8,0x08,0xa8,0x2b,0xfc,0x1c,0x20,0x18,0x20,0x0f,0xfc,0x70,0x00,0x00,0x00,0x00, +0x20,0x3e,0x20,0x25,0xfc,0x29,0x40,0x30,0x78,0x28,0xc8,0x27,0x78,0x25,0x48,0x25, +0x78,0x25,0x48,0x39,0x48,0x21,0x58,0x22,0x80,0x24,0x7c,0x00,0x00,0x00,0x40,0x02, +0x48,0x7e,0x48,0x13,0xf8,0x10,0x00,0x17,0xfc,0x7c,0x40,0x13,0xf8,0x12,0xa8,0x16, +0xa8,0x1a,0xa8,0x62,0xa8,0x02,0xa8,0x02,0x18,0x00,0x00,0x00,0x20,0x3e,0x20,0x25, +0xfc,0x2d,0x20,0x2c,0x78,0x7e,0x48,0x43,0xf8,0x7d,0x48,0x25,0x78,0x3d,0x48,0x25, +0x48,0x3d,0x58,0x26,0x80,0x2c,0x7c,0x00,0x00,0x11,0x10,0x11,0x10,0x1f,0xf0,0x01, +0x00,0x7f,0xfc,0x40,0x04,0x4f,0xe4,0x00,0x00,0x7f,0xfc,0x01,0x20,0x09,0x10,0x11, +0x08,0x21,0x08,0x03,0x00,0x00,0x00,0x01,0x00,0x11,0x10,0x1f,0xf0,0x01,0x00,0x7f, +0xfc,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x3f,0xf8,0x20,0x08,0x27,0xc8,0x24,0x48,0x27, +0xc8,0x20,0x18,0x00,0x00,0x49,0x40,0x29,0x40,0x2a,0x40,0x7f,0x7c,0x1c,0x88,0x1a, +0x88,0x2b,0x48,0x48,0x50,0x7f,0x30,0x12,0x20,0x3a,0x30,0x04,0x50,0x1a,0x88,0x61, +0x04,0x00,0x00,0x08,0x00,0x09,0xfc,0x09,0x00,0x7f,0x08,0x09,0x08,0x19,0x48,0x1d, +0x30,0x1b,0x10,0x2b,0x30,0x29,0x48,0x49,0x88,0x09,0x00,0x09,0xfc,0x08,0x00,0x00, +0x00,0x08,0x80,0x08,0xf8,0x3f,0x48,0x09,0x58,0x09,0xf8,0x7e,0x88,0x09,0xb0,0x28, +0xf8,0x2f,0x48,0x29,0x58,0x39,0xf8,0x28,0x88,0x27,0x30,0x41,0xfc,0x00,0x00,0x10, +0x48,0x10,0x48,0x3e,0x90,0x52,0xfc,0x57,0x90,0x7f,0x90,0x52,0xf8,0x2c,0x90,0x3e, +0x90,0x52,0xf8,0x56,0x90,0x7e,0x90,0x52,0xfc,0x2c,0x80,0x00,0x00,0x10,0x00,0x13, +0xf8,0x12,0x08,0x7f,0xf8,0x12,0x40,0x12,0x40,0x13,0xfc,0x1e,0x40,0x72,0x40,0x15, +0xf8,0x15,0x08,0x19,0x08,0x11,0xf8,0x30,0x00,0x00,0x00,0x08,0x10,0x08,0x10,0x08, +0x20,0x7f,0x40,0x08,0x88,0x1c,0x08,0x1a,0x10,0x1a,0x20,0x28,0xc4,0x28,0x04,0x48, +0x08,0x08,0x10,0x08,0x60,0x09,0x80,0x00,0x00,0x10,0x00,0x11,0xf0,0x11,0x10,0x7f, +0xf0,0x11,0x10,0x19,0xf0,0x34,0x00,0x37,0xf8,0x32,0x08,0x53,0xf8,0x52,0x08,0x12, +0x08,0x13,0xf8,0x10,0x00,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x05,0x40,0x7f, +0xfc,0x40,0x04,0x4f,0xe4,0x08,0x20,0x0f,0xe0,0x08,0x00,0x0f,0xf0,0x08,0x10,0x08, +0x10,0x0f,0xf0,0x00,0x00,0x08,0x00,0x09,0xfc,0x3f,0x20,0x2a,0x40,0x2c,0xf8,0x28, +0x88,0x3e,0xf8,0x22,0x88,0x32,0xf8,0x2c,0x88,0x24,0xf8,0x2a,0x50,0x32,0x88,0x43, +0x04,0x00,0x00,0x01,0x00,0x05,0x60,0x19,0x18,0x63,0x24,0x00,0xc0,0x03,0x40,0x0f, +0xf8,0x78,0x80,0x0f,0xf0,0x08,0x80,0x0f,0xf0,0x08,0x80,0x0f,0xfc,0x08,0x00,0x00, +0x00,0x10,0x00,0x11,0xf8,0x11,0x08,0x7d,0xf8,0x09,0x20,0x0b,0x20,0x13,0xfc,0x1d, +0x20,0x35,0x20,0x53,0xf8,0x12,0x88,0x12,0x88,0x14,0xf8,0x10,0x00,0x00,0x00,0x23, +0x90,0x10,0x90,0x15,0x64,0x43,0x28,0x23,0xf0,0x24,0x08,0x0b,0xf4,0x12,0x10,0x13, +0xf0,0x12,0x20,0x21,0x20,0x21,0x40,0x4f,0xfc,0x40,0x00,0x00,0x00,0x10,0x00,0x17, +0xf8,0x14,0xc8,0x7e,0xa8,0x13,0xb8,0x14,0xc8,0x11,0x98,0x1c,0x80,0x73,0xf0,0x12, +0x10,0x13,0xf0,0x12,0x10,0x13,0xf0,0x30,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00, +0x40,0x00,0x40,0x7f,0xfc,0x00,0x40,0x08,0x40,0x04,0x40,0x02,0x40,0x02,0x40,0x00, +0x40,0x00,0x40,0x00,0x40,0x01,0xc0,0x00,0x00,0x12,0x20,0x12,0x20,0x12,0x20,0x12, +0x20,0x7f,0xfc,0x12,0x20,0x12,0x20,0x12,0x20,0x13,0xe0,0x10,0x00,0x10,0x00,0x10, +0x00,0x1f,0xf8,0x00,0x00,0x00,0x00,0x22,0x00,0x12,0x7c,0x1f,0x90,0x42,0x78,0x2f, +0xc8,0x2a,0xf8,0x0a,0xc8,0x0f,0xf8,0x12,0x48,0x17,0x78,0x26,0xb0,0x2a,0xa8,0x52, +0x44,0x42,0x84,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x7f,0x78,0x00,0x88,0x3e, +0x88,0x2b,0x10,0x2a,0x10,0x3e,0x30,0x2a,0x30,0x2a,0x48,0x3e,0x88,0x01,0x04,0x02, +0x04,0x00,0x00,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x00, +0x00,0x7f,0xfc,0x09,0x00,0x09,0xf0,0x09,0x00,0x15,0x00,0x23,0x00,0x40,0xfc,0x00, +0x00,0x00,0x80,0x0f,0xfc,0x40,0x80,0x23,0xf0,0x20,0x90,0x0f,0xfc,0x00,0x90,0x13, +0xf0,0x10,0x80,0x2f,0xfc,0x21,0x20,0x43,0xe0,0x40,0xd0,0x0f,0x08,0x00,0x00,0x14, +0x08,0x14,0x48,0x1f,0x48,0x24,0x48,0x44,0x48,0x7f,0xc8,0x04,0x48,0x3f,0x48,0x25, +0x48,0x25,0x48,0x25,0x48,0x26,0x48,0x24,0x08,0x04,0x18,0x00,0x00,0x08,0x40,0x3e, +0x40,0x09,0xf0,0x7f,0x50,0x15,0xd0,0x2b,0x50,0x7e,0x70,0x08,0x94,0x7f,0x0c,0x01, +0x00,0x3f,0xf0,0x02,0x10,0x0c,0x10,0x30,0xe0,0x00,0x00,0x10,0x20,0x11,0x20,0x11, +0x20,0x11,0x20,0x7d,0xfc,0x26,0x20,0x26,0x20,0x24,0x20,0x79,0xf8,0x48,0x20,0x0c, +0x20,0x14,0x20,0x63,0xfc,0x00,0x00,0x00,0x00,0x08,0x00,0x0b,0xfc,0x10,0x40,0x24, +0x40,0x45,0x40,0x09,0x40,0x09,0x78,0x19,0x40,0x29,0x40,0x49,0x40,0x09,0x40,0x09, +0x40,0x0f,0xfc,0x08,0x00,0x00,0x00,0x10,0x40,0x11,0x40,0x11,0x40,0x13,0xf8,0x3a, +0x40,0x34,0x40,0x34,0x40,0x53,0xf8,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x17, +0xfc,0x10,0x00,0x00,0x00,0x00,0x90,0x00,0x88,0x00,0x88,0x3f,0xfc,0x20,0x80,0x20, +0x90,0x3e,0x90,0x22,0x50,0x22,0x60,0x22,0x20,0x22,0x64,0x4c,0x94,0x41,0x0c,0x80, +0x04,0x00,0x00,0x00,0x80,0x7f,0x80,0x08,0x80,0x08,0xfc,0x29,0x10,0x2f,0x90,0x2a, +0x90,0x28,0x50,0x28,0x60,0x28,0x20,0x2e,0x60,0x38,0x90,0x63,0x08,0x0c,0x04,0x00, +0x00,0x08,0x40,0x7f,0x40,0x3e,0x7c,0x2a,0xc8,0x3f,0x28,0x1c,0x30,0x2a,0xc8,0x49, +0x04,0x3f,0xf8,0x01,0x00,0x09,0xe0,0x09,0x00,0x09,0x00,0x7f,0xfc,0x00,0x00,0x00, +0x00,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x09,0x00,0x09,0x00,0x1f, +0xf8,0x21,0x00,0x0f,0xe0,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x40,0x03, +0xf8,0x78,0x40,0x49,0xf0,0x48,0x40,0x4f,0xfc,0x78,0x00,0x49,0xf0,0x49,0x10,0x49, +0xf0,0x49,0x10,0x79,0xf0,0x01,0x10,0x01,0x30,0x00,0x00,0x10,0x40,0x13,0xfc,0x10, +0x40,0x7d,0xf8,0x10,0x48,0x1b,0xfc,0x34,0x48,0x35,0xf8,0x30,0x40,0x57,0xfc,0x50, +0x90,0x11,0xd0,0x10,0x70,0x13,0x88,0x00,0x00,0x10,0x00,0x17,0xfc,0x10,0xa0,0x7c, +0xa0,0x10,0xa0,0x13,0xf8,0x3a,0xa8,0x36,0xa8,0x36,0xa8,0x53,0x38,0x53,0x18,0x12, +0x08,0x13,0xf8,0x10,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x01,0x00,0x01,0x00,0x01, +0x00,0x11,0x00,0x11,0xf0,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x7f, +0xfc,0x00,0x00,0x00,0x00,0x10,0x80,0x0f,0xf8,0x08,0x80,0x47,0xf0,0x20,0x80,0x2f, +0xfc,0x00,0x00,0x03,0xf0,0x12,0x10,0x13,0xf0,0x22,0x10,0x23,0xf0,0x42,0x10,0x42, +0x30,0x00,0x00,0x08,0x20,0x08,0xa0,0x28,0xa0,0x28,0xa0,0x3f,0xfc,0x29,0x20,0x2a, +0x20,0x48,0x20,0x0d,0xf8,0x78,0x20,0x08,0x20,0x08,0x20,0x0b,0xfc,0x08,0x00,0x00, +0x00,0x01,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x1f,0xf8,0x11,0x00,0x21,0x00,0x41, +0x00,0x1f,0xf0,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00, +0x90,0x00,0x88,0x1f,0xfc,0x10,0x90,0x1e,0x90,0x12,0x60,0x22,0x64,0x4c,0x9c,0x1f, +0xf4,0x12,0x90,0x12,0x90,0x12,0x90,0x7f,0xfc,0x00,0x00,0x00,0x00,0x08,0x20,0x4b, +0xfc,0x2a,0x20,0x2c,0xf8,0x08,0x20,0x7f,0xfc,0x08,0x00,0x1c,0xf8,0x1a,0x88,0x2a, +0xf8,0x48,0x88,0x08,0xf8,0x08,0x88,0x08,0x98,0x00,0x00,0x00,0x00,0x7f,0x80,0x12, +0x78,0x1e,0x48,0x1e,0x48,0x13,0x48,0x7e,0x78,0x02,0x00,0x3f,0xf8,0x01,0x00,0x1f, +0xf0,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01, +0x00,0x3f,0xf8,0x00,0x00,0x1f,0xf0,0x11,0x10,0x11,0x10,0x1f,0xf0,0x10,0x00,0x10, +0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x14,0x08,0x1f,0x48,0x24,0x48,0x7f,0xc8,0x04, +0x48,0x3f,0xc8,0x24,0x88,0x25,0x98,0x01,0x00,0x7f,0xfc,0x0c,0x90,0x74,0x60,0x07, +0x30,0x38,0x0c,0x00,0x00,0x00,0x00,0x7f,0xfc,0x04,0x80,0x04,0x80,0x04,0x80,0x3f, +0xf8,0x24,0x88,0x24,0x88,0x28,0x98,0x28,0x78,0x30,0x08,0x20,0x08,0x3f,0xf8,0x00, +0x00,0x00,0x00,0x00,0x20,0x3c,0x28,0x00,0x24,0x7f,0xfc,0x01,0x20,0x3d,0x28,0x01, +0xe8,0x3d,0x68,0x01,0x50,0x3d,0x50,0x25,0x54,0x26,0xec,0x3e,0x4c,0x04,0x84,0x00, +0x00,0x08,0x18,0x7e,0xe0,0x08,0x80,0x0e,0xfc,0x78,0x90,0x19,0x10,0x07,0xc0,0x7f, +0xfc,0x00,0x00,0x07,0xc0,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00, +0x20,0x3d,0xfc,0x00,0x20,0x7e,0xf8,0x00,0x20,0x3f,0xfc,0x00,0x00,0x3c,0xf8,0x00, +0x88,0x3c,0xf8,0x24,0x88,0x24,0xf8,0x3c,0x88,0x00,0x98,0x00,0x00,0x02,0x08,0x22, +0x10,0x12,0x60,0x1f,0xc0,0x02,0x7c,0x02,0x50,0x03,0xd0,0x7e,0x50,0x12,0x90,0x12, +0x90,0x17,0x10,0x18,0x10,0x26,0x00,0x41,0xfc,0x00,0x00,0x00,0x00,0x7f,0xf8,0x0c, +0x48,0x0c,0x78,0x3f,0x48,0x2d,0x78,0x2d,0x50,0x35,0x7c,0x37,0x90,0x21,0x78,0x3f, +0x10,0x21,0x10,0x3f,0xfc,0x00,0x00,0x00,0x00,0x01,0x00,0x3f,0xf8,0x01,0x00,0x1f, +0xf0,0x01,0x00,0x7f,0xfc,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x08,0x20,0x08,0x60,0x00,0x00,0x08,0x40,0x7f,0x40,0x08,0x78,0x3e,0x90,0x09, +0x20,0x7f,0xf8,0x00,0x28,0x3f,0xfc,0x22,0x28,0x3e,0xf8,0x22,0x20,0x3e,0x20,0x22, +0x20,0x26,0x60,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x04,0x40,0x02,0x80,0x03, +0x80,0x0c,0x60,0x78,0x3c,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x10,0x20,0x20, +0x20,0x00,0x00,0x03,0x10,0x04,0x90,0x38,0xa0,0x09,0xf8,0x09,0x08,0x7f,0x08,0x09, +0xf8,0x1c,0x60,0x1a,0x60,0x2a,0xa0,0x48,0xa0,0x09,0x24,0x0a,0x24,0x0c,0x1c,0x00, +0x00,0x00,0x40,0x3c,0x78,0x24,0x90,0x25,0x20,0x27,0xfc,0x3d,0x00,0x25,0x78,0x25, +0x48,0x3d,0x48,0x25,0x70,0x25,0x40,0x25,0x44,0x26,0x44,0x4c,0x3c,0x00,0x00,0x08, +0x40,0x0f,0xf8,0x18,0x80,0x1f,0xf0,0x28,0x80,0x4f,0xf0,0x08,0x80,0x0f,0xfc,0x00, +0x00,0x3f,0xf0,0x02,0x60,0x01,0x80,0x07,0x60,0x38,0x1c,0x00,0x00,0x00,0x80,0x00, +0x80,0x1f,0xfc,0x12,0x20,0x1f,0xfc,0x12,0x20,0x13,0xe0,0x10,0x80,0x17,0xf8,0x14, +0x88,0x24,0x88,0x24,0x88,0x44,0xb0,0x00,0x80,0x00,0x00,0x10,0x90,0x10,0x90,0x10, +0x90,0x1b,0xfc,0x34,0x90,0x34,0x90,0x37,0xfc,0x50,0x00,0x11,0xf8,0x11,0x08,0x11, +0xf8,0x11,0x08,0x11,0xf8,0x10,0x00,0x00,0x00,0x00,0x50,0x00,0x48,0x1f,0xfc,0x12, +0x40,0x13,0xc8,0x12,0x48,0x1f,0xc8,0x12,0x28,0x17,0x30,0x16,0xb0,0x2a,0xb4,0x32, +0x4c,0x42,0x8c,0x06,0x04,0x00,0x00,0x00,0x10,0x00,0x60,0x0f,0x80,0x08,0x00,0x08, +0x00,0x0f,0xfc,0x08,0x40,0x08,0x40,0x09,0xc0,0x10,0x70,0x10,0x48,0x20,0x40,0x40, +0x40,0x00,0x40,0x00,0x00,0x04,0x40,0x04,0x40,0x3f,0xf8,0x04,0x40,0x04,0x40,0x7f, +0xfc,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00, +0x00,0x00,0x00,0x08,0x08,0x08,0x30,0x08,0xc0,0x7e,0x80,0x08,0x80,0x18,0xfc,0x1c, +0x90,0x1a,0x90,0x2a,0x90,0x28,0x90,0x49,0x10,0x09,0x10,0x0a,0x10,0x0c,0x10,0x00, +0x00,0x00,0x00,0x3f,0xfc,0x02,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x07,0xf8,0x0c, +0x08,0x0c,0x08,0x14,0x08,0x24,0x08,0x44,0x08,0x07,0xf8,0x00,0x00,0x00,0x00,0x04, +0x40,0x1b,0xfc,0x70,0x40,0x13,0xf8,0x10,0x40,0x7f,0xfc,0x11,0x08,0x19,0xf8,0x35, +0x08,0x35,0xf8,0x51,0x08,0x11,0xf8,0x11,0x98,0x16,0x04,0x00,0x00,0x10,0x40,0x1f, +0x7c,0x28,0xa0,0x45,0x50,0x08,0x50,0x7f,0xfc,0x08,0x50,0x3f,0xfc,0x08,0x00,0x7f, +0xf8,0x1c,0x88,0x2a,0xf8,0x49,0x88,0x08,0xf8,0x00,0x00,0x08,0x20,0x09,0xfc,0x0a, +0x20,0x72,0xf8,0x14,0x20,0x0f,0xfc,0x12,0x88,0x7e,0xf8,0x08,0x88,0x2c,0xf8,0x2a, +0x88,0x2a,0xf8,0x48,0xc8,0x0b,0x04,0x00,0x00,0x01,0x00,0x39,0x38,0x01,0x00,0x3a, +0xb8,0x02,0x40,0x04,0x20,0x1f,0xf0,0x68,0x2c,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x08,0x20,0x08,0x60,0x00,0x00,0x01,0x00,0x3f,0xf8,0x01,0x00,0x1f,0xf0,0x01, +0x00,0x7f,0xfc,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x06, +0x60,0x38,0x18,0x00,0x00,0x01,0x00,0x01,0x00,0x1f,0xf0,0x01,0x00,0x01,0x00,0x7f, +0xfc,0x02,0x40,0x12,0x50,0x12,0x48,0x22,0x44,0x44,0x44,0x04,0x40,0x08,0x40,0x10, +0xc0,0x00,0x00,0x00,0x20,0x3e,0x20,0x22,0x20,0x23,0xfc,0x3e,0x50,0x08,0x50,0x28, +0xd8,0x2e,0xd8,0x29,0x54,0x2a,0x54,0x2e,0x90,0x38,0x90,0x61,0x10,0x02,0x30,0x00, +0x00,0x00,0x20,0x3d,0xfc,0x24,0x20,0x24,0xf8,0x3c,0x20,0x2b,0xfc,0x08,0x88,0x2e, +0xf8,0x28,0x88,0x28,0xf8,0x28,0x88,0x2e,0xf8,0x38,0xc8,0x63,0x04,0x00,0x00,0x00, +0x00,0x7f,0xfc,0x10,0x40,0x10,0x80,0x11,0xf8,0x3d,0x08,0x25,0xf8,0x65,0x08,0x25, +0xf8,0x25,0x08,0x25,0xf8,0x3c,0x90,0x03,0x08,0x0c,0x04,0x00,0x00,0x10,0x00,0x11, +0xf8,0x10,0x48,0x13,0x48,0x1c,0x48,0x70,0x48,0x10,0x48,0x10,0x48,0x12,0x48,0x12, +0x88,0x0e,0x88,0x01,0x08,0x06,0x08,0x18,0x30,0x00,0x00,0x10,0x40,0x10,0x40,0x12, +0x48,0x7e,0x48,0x12,0x48,0x13,0xf8,0x10,0x40,0x10,0x40,0x1a,0x48,0x72,0x48,0x12, +0x48,0x12,0x48,0x13,0xf8,0x30,0x00,0x00,0x00,0x10,0x40,0x10,0x40,0x13,0xf8,0x7d, +0x10,0x10,0xa0,0x17,0xfc,0x10,0x40,0x17,0xfc,0x18,0x90,0x70,0x90,0x11,0xe0,0x10, +0x30,0x10,0xc8,0x37,0x08,0x00,0x00,0x10,0x00,0x13,0xfc,0x10,0x90,0x7c,0xf0,0x10, +0x90,0x10,0xf0,0x10,0x9c,0x1f,0xf0,0x71,0x18,0x10,0xb0,0x10,0x00,0x10,0xa0,0x13, +0x18,0x3c,0x04,0x00,0x00,0x10,0x08,0x10,0x30,0x11,0xc0,0x7d,0x00,0x11,0x00,0x11, +0xfc,0x11,0x20,0x1d,0x20,0x71,0x20,0x12,0x20,0x12,0x20,0x14,0x20,0x18,0x20,0x30, +0x20,0x00,0x00,0x00,0x00,0x3c,0xf0,0x00,0x90,0x7e,0x94,0x00,0x94,0x3d,0x0c,0x02, +0x00,0x3d,0xf8,0x00,0x88,0x3c,0x90,0x24,0x50,0x24,0x20,0x3c,0xd0,0x07,0x0c,0x00, +0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x44,0x84,0x44,0x88,0x08,0x78,0x10,0x00,0x13, +0xf8,0x1c,0x48,0x70,0x48,0x10,0x88,0x12,0x88,0x0f,0x08,0x02,0x30,0x00,0x00,0x10, +0x40,0x10,0x40,0x1f,0xfc,0x28,0xa0,0x45,0x10,0x1e,0x78,0x12,0x48,0x1e,0x48,0x12, +0x48,0x1e,0x48,0x14,0x48,0x12,0x70,0x1d,0x40,0x70,0x40,0x00,0x00,0x01,0x10,0x3c, +0x90,0x00,0xa0,0x7f,0xf8,0x01,0x08,0x3d,0x08,0x01,0xf8,0x3c,0x60,0x00,0x60,0x3c, +0x60,0x24,0xa0,0x24,0xa4,0x3d,0x24,0x02,0x1c,0x00,0x00,0x00,0x00,0x3f,0xf8,0x01, +0x00,0x7f,0xfc,0x41,0x04,0x5d,0x74,0x01,0x00,0x1c,0x70,0x00,0x00,0x1f,0xf0,0x00, +0x10,0x1f,0xf0,0x00,0x10,0x1f,0xf0,0x00,0x00,0x08,0x40,0x08,0x40,0x0a,0x78,0x72, +0x90,0x15,0x20,0x0c,0xf8,0x12,0xa8,0x7e,0xa8,0x09,0xf8,0x2c,0x80,0x2a,0x80,0x2a, +0x84,0x48,0x84,0x08,0x7c,0x00,0x00,0x00,0x30,0x00,0xc0,0x1f,0x00,0x01,0x00,0x01, +0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x1f, +0xf0,0x00,0x00,0x00,0x00,0x08,0x44,0x09,0x24,0x08,0xa8,0x3e,0x90,0x2a,0xf8,0x2a, +0xa8,0x2a,0xf8,0x3e,0xa8,0x28,0xf8,0x0c,0x20,0x0b,0xfc,0x0e,0x20,0x70,0x20,0x00, +0x20,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x12,0x48,0x12,0x48,0x32,0x48,0x52, +0x48,0x12,0x48,0x12,0x48,0x12,0x48,0x12,0x48,0x12,0x48,0x13,0xf8,0x10,0x00,0x00, +0x00,0x01,0x00,0x09,0x00,0x09,0x00,0x0f,0xf0,0x11,0x00,0x21,0x00,0x7f,0xfc,0x02, +0x80,0x02,0x80,0x04,0x80,0x04,0x80,0x08,0x84,0x10,0x84,0x60,0x7c,0x00,0x00,0x00, +0x20,0x00,0xc0,0x1f,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x02, +0x00,0x02,0x00,0x03,0xf8,0x02,0x00,0x02,0x00,0x02,0x00,0x3f,0xf0,0x20,0x10,0x20, +0x10,0x20,0x10,0x20,0x10,0x3f,0xf0,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x7f, +0xfc,0x40,0x04,0x5f,0xf4,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x00,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x1f, +0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x00,0x40,0x7f,0xfc,0x08,0x40,0x04, +0x40,0x00,0x40,0x00,0xc0,0x00,0x00,0x01,0x00,0x01,0x00,0x09,0x20,0x09,0x10,0x11, +0x08,0x21,0x08,0x03,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x02,0x80,0x04,0x40,0x18, +0x30,0x60,0x0c,0x00,0x00,0x08,0x08,0x08,0x88,0x08,0x88,0x08,0x88,0x08,0x88,0x08, +0x88,0x08,0x88,0x08,0x88,0x08,0x88,0x08,0x88,0x10,0x88,0x10,0x08,0x20,0x08,0x40, +0x08,0x00,0x00,0x11,0x50,0x49,0x48,0x2a,0x48,0x24,0x40,0x3e,0x7c,0x2b,0xc0,0x3e, +0x48,0x2a,0x48,0x3e,0x50,0x08,0x30,0x7f,0x24,0x08,0xd4,0x0b,0x0c,0x08,0x04,0x00, +0x00,0x00,0x00,0x3f,0xfc,0x00,0x00,0x1f,0xf8,0x10,0x08,0x1f,0xf8,0x10,0x00,0x1f, +0xf8,0x19,0x48,0x15,0x28,0x27,0x38,0x39,0xc8,0x41,0x08,0x03,0x18,0x00,0x00,0x10, +0x00,0x17,0xf8,0x10,0x88,0x7f,0xf8,0x14,0x40,0x14,0xc8,0x13,0xb8,0x19,0x20,0x77, +0xf8,0x11,0x20,0x1f,0xfc,0x11,0x10,0x16,0x08,0x38,0x08,0x00,0x00,0x08,0x40,0x08, +0x40,0x08,0xa0,0x7e,0xa0,0x09,0x10,0x1e,0x08,0x1b,0xfc,0x1a,0x40,0x28,0x40,0x2b, +0xf8,0x48,0x40,0x08,0x40,0x0f,0xfc,0x08,0x00,0x00,0x00,0x08,0x80,0x08,0x80,0x08, +0xfc,0x7f,0x00,0x0a,0x00,0x1c,0xf8,0x1a,0xa8,0x1a,0xa8,0x28,0xa8,0x2b,0xfc,0x48, +0x88,0x08,0x88,0x08,0x88,0x08,0x98,0x00,0x00,0x01,0x00,0x02,0x00,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x01,0x08,0x3f,0x90,0x03,0xe0,0x05,0x40,0x19, +0x30,0x61,0x0c,0x03,0x00,0x00,0x00,0x10,0x90,0x08,0x88,0x08,0xf8,0x47,0x80,0x20, +0xf0,0x23,0x80,0x00,0xf8,0x17,0x90,0x10,0x50,0x10,0x60,0x20,0x64,0x21,0x94,0x46, +0x0c,0x40,0x04,0x00,0x00,0x10,0x40,0x09,0x40,0x09,0x40,0x41,0xf8,0x22,0x40,0x24, +0x40,0x07,0xfc,0x10,0xa0,0x10,0xa0,0x11,0x20,0x21,0x20,0x22,0x24,0x44,0x24,0x48, +0x1c,0x00,0x00,0x10,0x80,0x48,0x80,0x2b,0xe0,0x20,0xa0,0x08,0xa4,0x11,0x24,0x22, +0x1c,0x41,0x00,0x3f,0xf8,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x00, +0x00,0x11,0x20,0x09,0x20,0x0f,0xf8,0x41,0x20,0x2f,0xfc,0x23,0x30,0x02,0xd0,0x14, +0x88,0x1b,0xf4,0x12,0x10,0x23,0xf0,0x22,0x10,0x43,0xf0,0x42,0x10,0x00,0x00,0x08, +0x20,0x04,0x40,0x7f,0xfc,0x00,0x00,0x3e,0x48,0x22,0x48,0x3e,0x48,0x3e,0x48,0x22, +0x48,0x26,0x18,0x00,0x00,0x24,0x88,0x22,0x44,0x42,0x44,0x00,0x00,0x10,0x00,0x17, +0xfc,0x10,0x00,0x13,0xf8,0x16,0x08,0x37,0xf8,0x3a,0x00,0x53,0xf8,0x12,0x48,0x1b, +0x68,0x16,0xd8,0x23,0x68,0x24,0x48,0x48,0xd8,0x00,0x00,0x08,0x80,0x08,0x80,0x08, +0x80,0x7f,0xfc,0x11,0x00,0x11,0xfc,0x1e,0x28,0x14,0xb0,0x14,0xa0,0x14,0xbc,0x24, +0xa0,0x24,0xa0,0x45,0x60,0x1a,0x1c,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x44, +0x84,0x48,0x84,0x10,0x78,0x0f,0xf0,0x08,0x40,0x08,0x40,0x7f,0xfc,0x03,0x40,0x0c, +0x40,0x70,0x40,0x00,0xc0,0x00,0x00,0x10,0x40,0x1f,0xfc,0x28,0xa0,0x4d,0x30,0x04, +0x40,0x7f,0xfc,0x00,0x00,0x3e,0x48,0x22,0x48,0x3e,0x48,0x22,0x48,0x3e,0x48,0x22, +0x08,0x26,0x18,0x00,0x00,0x08,0x20,0x08,0x40,0x0a,0xf8,0x72,0x88,0x14,0xf8,0x0c, +0x88,0x12,0xf8,0x7f,0x20,0x0d,0xe4,0x2a,0x78,0x2a,0xb0,0x29,0x28,0x4a,0x24,0x08, +0x60,0x00,0x00,0x10,0x90,0x10,0x98,0x17,0xf4,0x64,0x94,0x18,0x90,0x1b,0xfc,0x25, +0x50,0x7f,0x74,0x11,0x54,0x3b,0x78,0x35,0x78,0x35,0x94,0x52,0x2c,0x10,0x44,0x00, +0x00,0x04,0x40,0x3f,0xf8,0x01,0x00,0x0f,0xf0,0x01,0x00,0x7f,0xfc,0x10,0x80,0x08, +0x80,0x41,0xfc,0x22,0x48,0x0c,0x50,0x10,0xa0,0x21,0x10,0x26,0x0c,0x00,0x00,0x00, +0x20,0x3c,0x40,0x25,0xf8,0x25,0x08,0x25,0xf8,0x3d,0x08,0x25,0xf8,0x24,0x20,0x3d, +0xe4,0x24,0x78,0x24,0xb0,0x25,0x28,0x26,0x24,0x4c,0x60,0x00,0x00,0x08,0x10,0x08, +0x10,0x08,0x10,0x0e,0xfc,0x12,0x90,0x12,0x90,0x32,0x90,0x4a,0x90,0x05,0xfc,0x04, +0x10,0x04,0x10,0x08,0x10,0x10,0x10,0x20,0x10,0x00,0x00,0x04,0x70,0x08,0x10,0x1e, +0x50,0x12,0x50,0x1a,0x88,0x16,0x88,0x17,0x04,0x1e,0xf8,0x72,0x88,0x1a,0x88,0x1a, +0x88,0x2a,0x88,0x22,0xf8,0x46,0x00,0x00,0x00,0x04,0x40,0x7f,0xfc,0x05,0x40,0x1f, +0xfc,0x12,0x40,0x1f,0xf8,0x12,0x48,0x1f,0xf8,0x13,0xfc,0x12,0x00,0x23,0xfc,0x2a, +0xa4,0x49,0x54,0x10,0x18,0x00,0x00,0x00,0x40,0x3c,0x40,0x00,0xa0,0x7e,0xa0,0x01, +0x10,0x3e,0x08,0x03,0xfc,0x3c,0x40,0x00,0x40,0x3d,0xf0,0x24,0x40,0x24,0x40,0x3f, +0xfc,0x00,0x00,0x00,0x00,0x00,0x50,0x3c,0x48,0x24,0x7c,0x27,0xc0,0x3c,0x78,0x27, +0xc0,0x3c,0x7c,0x27,0xc8,0x24,0x48,0x3c,0x30,0x18,0x24,0x14,0xd4,0x27,0x0c,0x40, +0x04,0x00,0x00,0x00,0x50,0x3e,0x48,0x22,0x78,0x23,0xc0,0x3e,0x78,0x09,0xc0,0x28, +0x7c,0x2f,0xc8,0x28,0x48,0x28,0x30,0x2e,0x24,0x38,0x54,0x61,0x8c,0x06,0x04,0x00, +0x00,0x00,0x00,0x27,0xf8,0x10,0x88,0x17,0xf8,0x04,0x44,0x03,0xfc,0x71,0x20,0x17, +0xf8,0x11,0x20,0x1f,0xfc,0x10,0xa0,0x1b,0x18,0x26,0x04,0x41,0xfc,0x00,0x00,0x00, +0x00,0x27,0xfc,0x10,0xa0,0x13,0xf8,0x02,0xa8,0x03,0xf8,0x70,0x80,0x1f,0xfc,0x13, +0xf0,0x1c,0x28,0x11,0xe4,0x19,0x10,0x26,0xf0,0x41,0xfc,0x00,0x00,0x08,0x40,0x08, +0x50,0x14,0x48,0x13,0xfc,0x22,0x40,0x5d,0xf8,0x08,0x40,0x7f,0xfc,0x08,0x48,0x2a, +0x28,0x1c,0x30,0x18,0x34,0x0e,0xcc,0x73,0x04,0x00,0x00,0x08,0x20,0x08,0x20,0x14, +0xa0,0x12,0xa0,0x22,0xf8,0x5c,0xa0,0x09,0x20,0x7f,0xfc,0x08,0x50,0x2a,0x50,0x1c, +0x90,0x18,0x94,0x0f,0x14,0x72,0x0c,0x00,0x00,0x00,0x00,0x3e,0xf8,0x22,0x88,0x3e, +0xf8,0x22,0x88,0x3e,0xf8,0x21,0x08,0x21,0x08,0x22,0x88,0x22,0x88,0x24,0x48,0x28, +0x28,0x20,0x08,0x20,0x18,0x00,0x00,0x08,0x88,0x08,0x48,0x1e,0x50,0x25,0xfc,0x7e, +0x20,0x2a,0x20,0x3e,0xf8,0x2a,0x20,0x3e,0x20,0x05,0xfc,0x32,0x20,0x2a,0x20,0x28, +0x20,0x40,0x20,0x00,0x00,0x08,0x20,0x04,0x20,0x04,0x40,0x7f,0xfc,0x00,0x00,0x3e, +0x48,0x22,0x48,0x22,0x48,0x3e,0x48,0x22,0x48,0x3e,0x48,0x22,0x48,0x22,0x08,0x26, +0x18,0x00,0x00,0x08,0x20,0x04,0x40,0x3f,0xf8,0x01,0x00,0x1f,0xf0,0x01,0x00,0x3f, +0xf8,0x09,0x20,0x7f,0xfc,0x00,0x00,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x00,0x00,0x00, +0x00,0x22,0x08,0x12,0x08,0x1f,0xd0,0x42,0x20,0x2f,0xa0,0x2a,0xbc,0x0f,0xa8,0x0a, +0xa8,0x1f,0xa8,0x12,0x28,0x3f,0xe8,0x22,0x48,0x42,0x48,0x42,0x88,0x00,0x00,0x08, +0x20,0x08,0x28,0x0f,0x24,0x19,0xfc,0x15,0x20,0x32,0x60,0x4a,0x50,0x0c,0x90,0x19, +0x08,0x60,0x04,0x14,0x90,0x12,0x48,0x22,0x44,0x40,0x04,0x00,0x00,0x01,0x00,0x01, +0x00,0x02,0x80,0x04,0x40,0x18,0x30,0x60,0x0c,0x1f,0xf0,0x01,0x00,0x01,0x00,0x0f, +0xe0,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x10,0x88,0x12,0x48,0x11, +0x50,0x7d,0x20,0x0b,0xf8,0x0a,0x48,0x13,0xf8,0x1a,0x48,0x37,0xf8,0x54,0x40,0x17, +0xfc,0x10,0x40,0x10,0x40,0x10,0x40,0x00,0x00,0x08,0x88,0x09,0xfc,0x0a,0x20,0x72, +0xf8,0x14,0x20,0x0f,0xfc,0x12,0xa8,0x7e,0x70,0x09,0xfc,0x2c,0x00,0x2a,0xf8,0x2a, +0x88,0x48,0xf8,0x08,0x00,0x00,0x00,0x01,0x10,0x3c,0xa0,0x27,0xfc,0x24,0x40,0x25, +0xf8,0x3c,0x40,0x27,0xfc,0x25,0x50,0x3f,0xfc,0x24,0x00,0x25,0xf8,0x25,0x08,0x25, +0xf8,0x4c,0x00,0x00,0x00,0x10,0x00,0x57,0xfc,0x36,0x00,0x3a,0xf8,0x12,0xa8,0x7e, +0xf8,0x12,0xa8,0x1a,0xf8,0x36,0x20,0x36,0xf8,0x52,0x20,0x14,0x20,0x17,0xfc,0x18, +0x00,0x00,0x00,0x01,0x10,0x00,0xa0,0x7b,0xf8,0x4a,0x48,0x4b,0xf8,0x4a,0x48,0x4b, +0xf8,0x48,0x00,0x49,0xf0,0x49,0x10,0x79,0xf0,0x01,0x10,0x01,0xf0,0x00,0x00,0x00, +0x00,0x22,0x00,0x14,0xf8,0x7f,0x88,0x2a,0xf8,0x2a,0x88,0x3e,0xf8,0x2a,0x88,0x09, +0x08,0x11,0x18,0x2f,0xe0,0x01,0x00,0x01,0x00,0x7f,0xf8,0x00,0x00,0x00,0x00,0x00, +0x00,0x11,0xf0,0x11,0x10,0x55,0x10,0x55,0x10,0x55,0xf0,0x55,0x10,0x55,0x10,0x55, +0xf0,0x7d,0x10,0x45,0x10,0x41,0x10,0x0f,0xfc,0x00,0x00,0x00,0x00,0x11,0x20,0x11, +0x20,0x17,0xf8,0x7d,0x20,0x11,0x20,0x17,0xfc,0x10,0x00,0x1f,0xf0,0x72,0x10,0x13, +0xf0,0x12,0x10,0x12,0x10,0x13,0xf0,0x30,0x00,0x00,0x00,0x01,0xc0,0x04,0x20,0x18, +0x10,0x7f,0xfc,0x15,0x50,0x13,0x90,0x1f,0xf0,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x08,0x20,0x04,0x40,0x3f,0xf8,0x21, +0x08,0x3f,0xf8,0x21,0x08,0x3f,0xf8,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x04,0x20,0x04,0x20,0x7f,0xfc,0x0e,0x60,0x15, +0xb0,0x65,0x2c,0x04,0x20,0x7f,0xf8,0x01,0x10,0x11,0x20,0x11,0xf0,0x19,0x00,0x27, +0x00,0x41,0xfc,0x00,0x00,0x04,0x00,0x45,0xf0,0x29,0x10,0x11,0x10,0x31,0x10,0x49, +0xf0,0x09,0x10,0x19,0x10,0x19,0xf0,0x29,0x10,0x49,0x10,0x09,0x10,0x0f,0xfc,0x30, +0x00,0x00,0x00,0x00,0x20,0x7e,0x20,0x03,0xfc,0x0c,0x50,0x08,0x98,0x2b,0xe4,0x28, +0x10,0x2d,0x50,0x29,0x50,0x29,0x50,0x29,0x50,0x2f,0x54,0x3a,0x54,0x64,0x0c,0x00, +0x00,0x00,0x40,0x7e,0x40,0x07,0xfc,0x08,0x40,0x0b,0xf8,0x2a,0x48,0x2e,0x48,0x2b, +0xf8,0x28,0xe0,0x28,0xe0,0x29,0x50,0x2e,0x48,0x38,0x44,0x60,0x40,0x00,0x00,0x01, +0x10,0x7d,0x10,0x17,0xfc,0x11,0x10,0x13,0xb8,0x3b,0x54,0x2d,0x10,0x6b,0xfc,0x28, +0x48,0x2a,0x40,0x3a,0x78,0x23,0x40,0x04,0xc0,0x08,0x3c,0x00,0x00,0x10,0x00,0x11, +0xf0,0x11,0x10,0x7d,0x10,0x09,0x10,0x09,0xf0,0x11,0x10,0x19,0x10,0x35,0xf0,0x57, +0x10,0x11,0x10,0x11,0x10,0x17,0xfc,0x10,0x00,0x00,0x00,0x02,0x00,0x0c,0xf8,0x38, +0x88,0x08,0x88,0x08,0x88,0x7f,0xf8,0x08,0x88,0x1c,0x88,0x1a,0xf8,0x2a,0x88,0x48, +0x88,0x08,0x88,0x0b,0xfc,0x08,0x00,0x00,0x00,0x08,0x00,0x4a,0xf8,0x2a,0x88,0x2c, +0x88,0x08,0x88,0x7e,0xf8,0x08,0x88,0x1c,0x88,0x1a,0xf8,0x2a,0x88,0x48,0x88,0x08, +0x88,0x0b,0xfc,0x08,0x00,0x00,0x00,0x01,0x00,0x3f,0xf8,0x01,0x00,0x1f,0xf0,0x01, +0x00,0x7f,0xfc,0x02,0x40,0x0c,0xc0,0x03,0x30,0x7f,0xc8,0x05,0x40,0x19,0x30,0x61, +0x08,0x01,0x00,0x00,0x00,0x08,0x00,0x08,0xf8,0x0a,0x88,0x72,0x88,0x14,0x88,0x0c, +0xf8,0x12,0x88,0x7f,0x88,0x0c,0xf8,0x2a,0x88,0x2a,0x88,0x28,0x88,0x4b,0xfc,0x08, +0x00,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x10,0x18,0x1e,0xe0,0x24,0x20,0x7e, +0x20,0x2b,0xfc,0x3e,0x70,0x2a,0x70,0x3e,0xa8,0x35,0x24,0x2a,0x20,0x40,0x20,0x00, +0x00,0x00,0x08,0x3c,0x30,0x00,0xc0,0x7e,0x80,0x00,0x80,0x3c,0xfc,0x00,0x90,0x3c, +0x90,0x00,0xb0,0x3c,0x98,0x25,0x14,0x25,0x10,0x3e,0x10,0x00,0x10,0x00,0x00,0x00, +0x00,0x3d,0xf0,0x25,0x10,0x29,0x10,0x29,0x10,0x31,0xf0,0x29,0x10,0x25,0x10,0x25, +0xf0,0x25,0x10,0x39,0x10,0x21,0x10,0x2f,0xfc,0x20,0x00,0x00,0x00,0x04,0x80,0x22, +0xb8,0x13,0x28,0x1f,0xe8,0x01,0x38,0x05,0x68,0x05,0x68,0x77,0xf8,0x15,0x28,0x11, +0x48,0x12,0x48,0x1c,0x98,0x26,0x00,0x41,0xfc,0x00,0x00,0x03,0x00,0x1c,0xf0,0x10, +0x10,0x1e,0xf0,0x10,0x10,0x1f,0xf0,0x00,0x00,0x15,0x50,0x13,0x30,0x19,0x90,0x15, +0x54,0x15,0x4c,0x19,0x8c,0x66,0x04,0x00,0x00,0x09,0x10,0x08,0xa0,0x0b,0xf8,0x12, +0x48,0x13,0xf8,0x32,0x48,0x53,0xf8,0x10,0x00,0x11,0xf0,0x11,0x10,0x11,0xf0,0x11, +0x10,0x11,0xf0,0x10,0x00,0x00,0x00,0x04,0x08,0x06,0x48,0x09,0x48,0x14,0xc8,0x3f, +0x48,0x51,0x48,0x1f,0x48,0x11,0x48,0x1f,0x48,0x10,0x48,0x3f,0x48,0x31,0x08,0x5f, +0x08,0x00,0x18,0x00,0x00,0x00,0x00,0x7f,0xf8,0x02,0x88,0x02,0x88,0x22,0x88,0x12, +0x88,0x0c,0x50,0x04,0x50,0x04,0x60,0x0a,0x20,0x0a,0x60,0x10,0x90,0x21,0x08,0x42, +0x04,0x00,0x00,0x12,0x90,0x0a,0xa0,0x7f,0xfc,0x04,0x40,0x3f,0xf8,0x01,0x00,0x1f, +0xf0,0x01,0x00,0x7f,0xfc,0x12,0x00,0x1f,0xf8,0x12,0x90,0x7e,0x70,0x03,0x8c,0x00, +0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x1f,0xf0,0x60,0x0c,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x10,0x00,0x1f,0xf0,0x28,0x10,0x0f,0xf0,0x00,0x00,0x01, +0x00,0x7f,0xfc,0x01,0x00,0x3d,0x78,0x25,0x48,0x25,0x48,0x3d,0x78,0x01,0x00,0x7f, +0xfc,0x08,0x90,0x08,0xa0,0x08,0x40,0x0e,0x30,0x70,0x0c,0x00,0x00,0x08,0x40,0x08, +0x40,0x08,0x40,0x48,0x40,0x28,0x40,0x2f,0xfc,0x08,0x40,0x08,0x40,0x18,0x40,0x18, +0x40,0x28,0x40,0x48,0x40,0x0b,0xf8,0x08,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x3f, +0xf8,0x01,0x00,0x1f,0xf0,0x02,0x80,0x7f,0xfc,0x04,0xc0,0x1f,0x30,0x61,0x0c,0x1f, +0xf0,0x02,0x80,0x0c,0x60,0x30,0x18,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x05, +0x08,0x35,0x68,0x09,0x10,0x1d,0x68,0x65,0xc8,0x19,0x30,0x15,0xa8,0x66,0xc8,0x04, +0x40,0x18,0x30,0x60,0x0c,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x40,0x04,0x41, +0x04,0x01,0x00,0x7f,0xfc,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x01, +0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x1f,0xf8,0x10,0x08,0x1f,0xf8,0x12,0x20,0x17, +0xf8,0x14,0x88,0x17,0xf8,0x14,0x88,0x17,0xf8,0x22,0x10,0x23,0xf0,0x42,0x10,0x03, +0xf0,0x00,0x00,0x00,0x00,0x3f,0xfc,0x20,0x80,0x20,0x80,0x27,0xf0,0x24,0x90,0x24, +0x90,0x24,0x90,0x24,0x90,0x24,0x90,0x24,0xe0,0x20,0x80,0x3f,0xfc,0x00,0x00,0x00, +0x00,0x09,0x00,0x29,0x00,0x3f,0xf8,0x2a,0xa8,0x4c,0xa8,0x19,0x28,0x6a,0x48,0x08, +0xb0,0x01,0x00,0x14,0x90,0x14,0x88,0x24,0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x08, +0x00,0x08,0xf8,0x7e,0x88,0x08,0xf8,0x1c,0x88,0x1a,0xf8,0x2a,0x88,0x48,0xf8,0x09, +0x00,0x04,0x90,0x24,0x88,0x24,0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x10,0x40,0x10, +0x40,0x13,0xf8,0x7e,0x48,0x13,0xf8,0x12,0x48,0x13,0xf8,0x10,0x40,0x1f,0xf8,0x71, +0x10,0x10,0xa0,0x10,0x40,0x11,0xb0,0x36,0x0c,0x00,0x00,0x10,0x00,0x11,0xf0,0x10, +0x10,0x7d,0xf0,0x10,0x10,0x11,0xf0,0x10,0x00,0x1f,0xfc,0x74,0x48,0x13,0xf8,0x12, +0x48,0x12,0x48,0x12,0x70,0x30,0x40,0x00,0x00,0x10,0x08,0x10,0x30,0x13,0xc0,0x7c, +0x40,0x17,0xfc,0x10,0x40,0x13,0xf8,0x1e,0x48,0x73,0xf8,0x12,0x48,0x13,0xf8,0x10, +0x40,0x10,0x40,0x30,0x40,0x00,0x00,0x10,0x00,0x13,0xf8,0x10,0x90,0x7c,0x60,0x10, +0xf0,0x17,0x4c,0x10,0x40,0x1f,0xf8,0x72,0x48,0x13,0xf8,0x12,0x48,0x10,0x50,0x10, +0x78,0x37,0x84,0x00,0x00,0x10,0x00,0x11,0xf0,0x11,0x10,0x7d,0xf0,0x10,0x00,0x17, +0xbc,0x14,0xa4,0x1f,0xbc,0x70,0x40,0x17,0xfc,0x10,0xe0,0x11,0x50,0x16,0x4c,0x30, +0x40,0x00,0x00,0x00,0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x1f,0xf0,0x10,0x10,0x1f, +0xf0,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00, +0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x3f,0xf8,0x24,0x48,0x3f,0xf8,0x24,0x48,0x3f, +0xf8,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x12, +0x10,0x09,0x10,0x09,0x20,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x01, +0x00,0x7f,0xfc,0x03,0x80,0x0d,0x60,0x71,0x1c,0x01,0x00,0x00,0x00,0x10,0x40,0x10, +0x40,0x10,0xa0,0x7f,0xf0,0x12,0x08,0x15,0xf4,0x39,0x10,0x35,0xf0,0x35,0xf0,0x51, +0x00,0x53,0xf8,0x15,0x08,0x11,0xf8,0x10,0x00,0x00,0x00,0x10,0xa0,0x17,0xfc,0x10, +0xa0,0x7f,0xf8,0x12,0xa8,0x13,0xf8,0x3a,0xa8,0x37,0xf8,0x35,0xf0,0x51,0x10,0x51, +0xf0,0x11,0x10,0x11,0xf0,0x10,0x00,0x00,0x00,0x10,0xa0,0x0f,0xfc,0x08,0xa0,0x43, +0xf8,0x22,0xa8,0x23,0xf8,0x02,0xa8,0x0b,0xf8,0x09,0xf0,0x09,0x10,0x11,0xf0,0x11, +0x10,0x21,0xf0,0x20,0x00,0x00,0x00,0x10,0x00,0x11,0xf0,0x11,0x10,0x15,0xf0,0x34, +0x00,0x3b,0xb8,0x32,0xa8,0x53,0xb8,0x10,0x40,0x17,0xfc,0x18,0xe0,0x25,0x50,0x26, +0x4c,0x40,0x40,0x00,0x00,0x01,0x00,0x03,0xe0,0x0c,0x40,0x30,0x80,0x1f,0xf0,0x01, +0x10,0x7f,0xfc,0x01,0x10,0x01,0x10,0x1f,0xf0,0x01,0x00,0x01,0x00,0x01,0x00,0x03, +0x00,0x00,0x00,0x00,0x80,0x0f,0xfc,0x08,0x40,0x4b,0xf8,0x2a,0x48,0x2b,0xf8,0x0a, +0x48,0x1b,0xf8,0x28,0x40,0x4b,0xf8,0x10,0x90,0x10,0x60,0x21,0xb0,0x4e,0x0c,0x00, +0x00,0x08,0x00,0x09,0xf8,0x09,0x08,0x7f,0x08,0x09,0x08,0x19,0xf8,0x1d,0x08,0x1b, +0x08,0x2b,0xf8,0x29,0x08,0x49,0x08,0x09,0x08,0x09,0xf8,0x08,0x00,0x00,0x00,0x01, +0x00,0x01,0x00,0x7f,0xfc,0x44,0x44,0x45,0x3c,0x09,0x40,0x12,0x30,0x0f,0xc8,0x01, +0x00,0x14,0x90,0x14,0x88,0x24,0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x10,0xa0,0x57, +0xfc,0x34,0xa0,0x3b,0xf8,0x12,0xa8,0x7f,0xf8,0x12,0xa8,0x3b,0xf8,0x35,0xf0,0x55, +0x10,0x51,0xf0,0x11,0x10,0x11,0xf0,0x10,0x00,0x00,0x00,0x08,0x30,0x08,0x90,0x0a, +0x90,0x72,0xa8,0x15,0x24,0x0c,0x50,0x12,0xf8,0x7e,0x48,0x0c,0x20,0x2a,0xe8,0x2a, +0xc4,0x29,0x54,0x4a,0x50,0x08,0x30,0x00,0x00,0x08,0x20,0x08,0x20,0x0b,0xfc,0x73, +0x04,0x15,0x00,0x0c,0xf8,0x12,0x00,0x7f,0xfc,0x0c,0x20,0x2a,0xa8,0x2a,0xa4,0x29, +0x24,0x48,0x20,0x08,0x60,0x00,0x00,0x00,0x70,0x7e,0x90,0x24,0x90,0x25,0x48,0x3e, +0x64,0x24,0x90,0x25,0xf8,0x3c,0x48,0x24,0xa0,0x25,0xa8,0x3d,0x84,0x66,0x94,0x04, +0x90,0x04,0x70,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x1f,0xf0,0x10, +0x10,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01, +0x00,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x08,0x40,0x48,0x40,0x28, +0x40,0x2f,0xfc,0x08,0x40,0x18,0x40,0x28,0x40,0x48,0x40,0x0b,0xf8,0x08,0x00,0x00, +0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x7f,0xfc,0x08,0x80,0x1f,0x98,0x72,0xe0,0x0c, +0x84,0x74,0x7c,0x04,0x40,0x7f,0xfc,0x04,0x40,0x08,0x40,0x30,0x40,0x00,0x00,0x08, +0x20,0x7f,0xfc,0x09,0x20,0x02,0x80,0x0d,0x60,0x7f,0xfc,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x10,0x00,0x17,0xf0,0x24,0x10,0x47,0xf0,0x00,0x00,0x04,0x40,0x7f, +0xfc,0x04,0x40,0x11,0xf0,0x09,0x10,0x49,0xf0,0x23,0xb8,0x22,0xa8,0x0b,0xf8,0x08, +0x40,0x17,0xfc,0x11,0xf0,0x26,0x4c,0x20,0x40,0x00,0x00,0x04,0x40,0x24,0x40,0x17, +0xfc,0x04,0x40,0x1c,0x40,0x65,0xf8,0x05,0x00,0x01,0x00,0x7f,0xfc,0x04,0x90,0x1c, +0x90,0x64,0x60,0x07,0x30,0x18,0x0c,0x00,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x01, +0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x09,0x00,0x09,0xf8,0x09,0x00,0x09,0x00,0x15, +0x00,0x23,0x00,0x40,0xfc,0x00,0x00,0x02,0x10,0x21,0x10,0x11,0x20,0x17,0xf8,0x00, +0x80,0x00,0x80,0x7f,0xfc,0x10,0xc0,0x11,0x20,0x11,0x10,0x12,0x08,0x1c,0x08,0x26, +0x00,0x41,0xfc,0x00,0x00,0x00,0xa0,0x27,0xfc,0x10,0xa0,0x13,0xf8,0x02,0xa8,0x03, +0xf8,0x72,0xa8,0x13,0xf8,0x11,0x10,0x11,0xf0,0x11,0x10,0x19,0xf0,0x26,0x00,0x41, +0xfc,0x00,0x00,0x08,0x20,0x08,0x20,0x14,0x50,0x12,0xf8,0x23,0x04,0x5c,0xf8,0x08, +0x88,0x7e,0xf8,0x08,0xf8,0x2a,0x80,0x1d,0xfc,0x19,0x84,0x0e,0xfc,0x70,0x84,0x00, +0x00,0x00,0x00,0x3f,0xf8,0x01,0x00,0x7f,0xfc,0x41,0x04,0x5d,0x74,0x00,0x00,0x08, +0xf8,0x7f,0x88,0x1c,0xf8,0x1a,0x88,0x29,0xf8,0x48,0x88,0x08,0xf8,0x00,0x00,0x00, +0x00,0x3f,0xf8,0x28,0x88,0x3e,0x50,0x28,0x70,0x3f,0xac,0x28,0x20,0x3e,0xf8,0x02, +0xa8,0x2a,0xf8,0x2a,0xa8,0x2a,0x28,0x42,0x3c,0x0d,0xc4,0x00,0x00,0x08,0x80,0x09, +0xf0,0x0e,0x20,0x13,0xf8,0x12,0x48,0x33,0xf8,0x50,0x40,0x11,0x88,0x16,0xd0,0x11, +0x60,0x16,0xb0,0x11,0x28,0x16,0x24,0x10,0xc0,0x00,0x00,0x01,0x10,0x10,0xa0,0x13, +0xf8,0x12,0x48,0x7f,0xf8,0x12,0x48,0x13,0xf8,0x10,0x00,0x15,0xf0,0x19,0x10,0x61, +0xf0,0x01,0x10,0x01,0xf0,0x00,0x00,0x00,0x00,0x11,0x10,0x10,0xa0,0x13,0xf8,0x1a, +0x48,0x37,0xf8,0x36,0x48,0x33,0xf8,0x50,0x00,0x11,0xf0,0x11,0x10,0x11,0xf0,0x11, +0x10,0x11,0xf0,0x10,0x00,0x00,0x00,0x01,0x20,0x3f,0xfc,0x29,0x28,0x28,0x24,0x3b, +0xfc,0x2a,0x20,0x2b,0xe8,0x3b,0xa8,0x2b,0xe8,0x2b,0x50,0x2b,0xd4,0x2b,0x9c,0x2d, +0xec,0x58,0x44,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x50,0x00,0x48,0x1f,0xfc,0x10, +0x40,0x1f,0xc8,0x19,0x28,0x1f,0xa8,0x18,0xb0,0x1f,0x90,0x29,0x34,0x2f,0xcc,0x48, +0x84,0x00,0x00,0x01,0x10,0x3c,0xa0,0x25,0xf8,0x25,0x48,0x3d,0xf8,0x25,0x48,0x3d, +0xf8,0x24,0x00,0x25,0xf0,0x3d,0x10,0x19,0xf0,0x15,0x10,0x25,0x10,0x41,0xf0,0x00, +0x00,0x00,0x40,0x22,0x40,0x12,0x40,0x13,0xf8,0x04,0x40,0x0f,0xfc,0x70,0x00,0x13, +0xf0,0x12,0x10,0x12,0x10,0x13,0xf0,0x18,0x00,0x26,0x00,0x41,0xfc,0x00,0x00,0x08, +0x00,0x0b,0xf8,0x0a,0x08,0x12,0x08,0x13,0xf8,0x30,0x40,0x50,0x40,0x12,0x40,0x12, +0x78,0x12,0x40,0x12,0x40,0x13,0x40,0x14,0xc0,0x18,0x3c,0x00,0x00,0x08,0x08,0x0f, +0xa8,0x0c,0xa8,0x14,0xa8,0x17,0xa8,0x34,0xa8,0x54,0xa8,0x17,0xa8,0x14,0xa8,0x14, +0xa8,0x17,0xa8,0x13,0x08,0x14,0x88,0x18,0x18,0x00,0x00,0x00,0x08,0x3e,0x48,0x22, +0x48,0x22,0x48,0x3e,0x48,0x22,0x48,0x3e,0x48,0x22,0x48,0x22,0x48,0x3e,0x48,0x14, +0x48,0x12,0x08,0x22,0x08,0x40,0x18,0x00,0x00,0x00,0x00,0x3e,0xf8,0x22,0x88,0x22, +0x88,0x3e,0x88,0x22,0x88,0x22,0x88,0x3e,0x88,0x28,0x88,0x24,0x88,0x26,0x88,0x3a, +0xf0,0x62,0x80,0x00,0x80,0x00,0x00,0x01,0x00,0x02,0x00,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x01,0x00,0x24,0x88,0x24,0xa4,0x44, +0x24,0x03,0xe0,0x00,0x00,0x10,0x00,0x13,0xf8,0x12,0x08,0x7e,0x08,0x12,0x08,0x13, +0xf8,0x10,0x40,0x16,0x40,0x1a,0x78,0x72,0x40,0x12,0x40,0x13,0x40,0x14,0xc0,0x38, +0x3c,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x1f,0xf0,0x11,0x10,0x11, +0x10,0x1f,0xf0,0x03,0x80,0x03,0x40,0x05,0x20,0x19,0x10,0x61,0x0c,0x01,0x00,0x00, +0x00,0x20,0x08,0x17,0x88,0x14,0xa8,0x44,0xa8,0x27,0xa8,0x24,0xa8,0x07,0xa8,0x14, +0xa8,0x14,0xa8,0x17,0xa8,0x23,0x08,0x22,0x88,0x44,0x88,0x48,0x18,0x00,0x00,0x00, +0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0xf0,0x01,0x00,0x11,0x00,0x11, +0xf0,0x11,0x00,0x19,0x00,0x15,0x00,0x23,0x00,0x40,0xfc,0x00,0x00,0x00,0x40,0x20, +0x40,0x17,0xfc,0x10,0x40,0x03,0xf8,0x02,0x48,0x72,0x48,0x13,0xf8,0x10,0xe0,0x11, +0x50,0x16,0x4c,0x18,0x40,0x26,0x00,0x41,0xfc,0x00,0x00,0x09,0x20,0x09,0x10,0x0a, +0x08,0x14,0x88,0x10,0x80,0x31,0x40,0x51,0x20,0x12,0x10,0x17,0xf8,0x1a,0x14,0x12, +0x10,0x12,0x10,0x13,0xf0,0x10,0x00,0x00,0x00,0x00,0x00,0x1f,0xf0,0x10,0x10,0x1f, +0xf0,0x10,0x78,0x1f,0x80,0x17,0xf0,0x14,0x90,0x17,0xf0,0x1f,0xf8,0x18,0xa8,0x2f, +0xd8,0x28,0x08,0x48,0x18,0x00,0x00,0x00,0x20,0x3c,0x28,0x24,0x24,0x27,0xfc,0x3c, +0x20,0x24,0xa8,0x3c,0xa8,0x27,0xe8,0x24,0x90,0x3c,0x90,0x18,0xb4,0x14,0xac,0x24, +0xcc,0x40,0x84,0x00,0x00,0x10,0x80,0x10,0x80,0x10,0xfc,0x7f,0x00,0x12,0x80,0x10, +0xf8,0x1d,0x20,0x16,0x20,0x17,0xfc,0x14,0x60,0x24,0x50,0x24,0x90,0x45,0x08,0x1a, +0x04,0x00,0x00,0x08,0x20,0x08,0x20,0x0b,0xfc,0x72,0x20,0x14,0xf8,0x0c,0x00,0x13, +0xfc,0x7f,0x04,0x09,0x54,0x2c,0x50,0x2a,0x50,0x2a,0x94,0x48,0x94,0x09,0x0c,0x00, +0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x08,0x40,0x08,0x40,0x0c,0x60,0x12,0x90,0x23, +0x10,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x10, +0x40,0x10,0x40,0x10,0x40,0x7c,0x40,0x09,0xf8,0x0b,0x48,0x13,0x48,0x3d,0x48,0x55, +0xf8,0x13,0x48,0x11,0x48,0x11,0x48,0x11,0xf8,0x10,0x00,0x00,0x00,0x04,0x40,0x04, +0x40,0x3f,0xf8,0x04,0x40,0x07,0xc0,0x04,0x40,0x07,0xc0,0x04,0x40,0x04,0x40,0x7f, +0xfc,0x00,0x00,0x04,0x40,0x18,0x30,0x60,0x08,0x00,0x00,0x12,0x10,0x11,0x10,0x11, +0x20,0x7f,0xfc,0x10,0x00,0x17,0xa8,0x14,0xa8,0x17,0xa8,0x1c,0xa8,0x77,0xa8,0x14, +0xa8,0x14,0x88,0x14,0x88,0x35,0x98,0x00,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x7f, +0xfc,0x04,0x00,0x05,0xf8,0x08,0x10,0x18,0x20,0x28,0x40,0x4f,0xfc,0x08,0x40,0x08, +0x40,0x08,0x40,0x08,0xc0,0x00,0x00,0x00,0x08,0x7c,0x30,0x07,0xe0,0x08,0x50,0x0b, +0x90,0x10,0xa0,0x10,0x48,0x1b,0xf4,0x70,0x44,0x11,0x50,0x11,0x48,0x12,0x44,0x14, +0x44,0x30,0x40,0x00,0x00,0x08,0x20,0x04,0x40,0x7f,0xfc,0x02,0x80,0x1f,0xf0,0x12, +0xd0,0x14,0x50,0x1f,0xf0,0x1f,0xf0,0x00,0x40,0x7f,0xfc,0x08,0x40,0x04,0x40,0x00, +0xc0,0x00,0x00,0x10,0x00,0x11,0xf0,0x11,0x10,0x7d,0xf0,0x10,0x00,0x13,0xf8,0x12, +0x08,0x1f,0xf8,0x72,0x08,0x13,0xf8,0x12,0x08,0x13,0xf8,0x11,0x98,0x36,0x04,0x00, +0x00,0x08,0x10,0x08,0x10,0x08,0x10,0x7f,0xfc,0x08,0x10,0x18,0x10,0x1c,0x90,0x1a, +0x50,0x2a,0x50,0x28,0x10,0x48,0x10,0x08,0x10,0x08,0x10,0x08,0x30,0x00,0x00,0x00, +0x0c,0x2f,0xf0,0x11,0x28,0x12,0x48,0x02,0xd0,0x03,0x30,0x0e,0x48,0x72,0xfc,0x12, +0xa8,0x12,0xa4,0x13,0x24,0x1e,0x20,0x26,0x00,0x41,0xfc,0x00,0x00,0x08,0x40,0x08, +0x40,0x0a,0x40,0x12,0x48,0x12,0x78,0x33,0xc8,0x5e,0x48,0x12,0x48,0x12,0x48,0x12, +0x58,0x12,0x40,0x12,0x04,0x12,0x04,0x11,0xfc,0x00,0x00,0x02,0x00,0x03,0xe0,0x04, +0x20,0x0a,0x40,0x31,0x80,0x01,0x40,0x06,0x7c,0x38,0x84,0x03,0x88,0x0c,0x50,0x00, +0x60,0x00,0xc0,0x07,0x00,0x38,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x7f,0xfc,0x01,0x00,0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x0a,0x20,0x11, +0x10,0x21,0x08,0x40,0x04,0x00,0x00,0x10,0x40,0x08,0x40,0x08,0x40,0x40,0x40,0x27, +0xfc,0x20,0x40,0x00,0x40,0x10,0xc0,0x10,0xa0,0x11,0x20,0x21,0x90,0x22,0x50,0x44, +0x48,0x48,0x04,0x00,0x00,0x00,0x20,0x3c,0x20,0x00,0x20,0x7f,0xfc,0x01,0x04,0x3e, +0x80,0x00,0x80,0x3c,0x98,0x00,0xe0,0x3c,0x80,0x24,0x80,0x24,0x84,0x3c,0x84,0x00, +0x7c,0x00,0x00,0x00,0x18,0x03,0xe0,0x78,0x40,0x4b,0xf8,0x49,0x50,0x49,0x50,0x4f, +0xfc,0x49,0x50,0x49,0x50,0x7b,0xf8,0x00,0x40,0x00,0x40,0x0f,0xfc,0x00,0x00,0x00, +0x00,0x00,0x80,0x7f,0xfc,0x48,0x80,0x71,0xf8,0x53,0x08,0x4d,0xf8,0x49,0x08,0x71, +0xf8,0x41,0x08,0x41,0x18,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00, +0x18,0x00,0xe8,0x3f,0x08,0x12,0x10,0x09,0x20,0x08,0x40,0x01,0x00,0x7f,0xfc,0x02, +0x20,0x04,0x20,0x07,0x40,0x08,0xc0,0x03,0x30,0x3c,0x08,0x00,0x00,0x10,0x40,0x13, +0xfc,0x10,0x80,0x19,0xf8,0x36,0x20,0x37,0xfc,0x30,0x00,0x51,0xf8,0x11,0x08,0x11, +0xf8,0x11,0x08,0x11,0xf8,0x11,0x08,0x11,0x18,0x00,0x00,0x08,0x00,0x09,0xfc,0x08, +0x20,0x7e,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x0e,0x20,0x78,0x20,0x08,0x20,0x08, +0x20,0x08,0x20,0x08,0x20,0x18,0x60,0x00,0x00,0x08,0x20,0x08,0x20,0x0b,0xfc,0x7e, +0x04,0x0a,0x84,0x18,0x80,0x18,0x88,0x1c,0x90,0x2a,0xe0,0x2a,0x80,0x48,0x80,0x08, +0x84,0x08,0x84,0x08,0x7c,0x00,0x00,0x04,0x20,0x08,0x20,0x1f,0xfc,0x13,0x04,0x1b, +0x44,0x16,0x40,0x16,0x48,0x7f,0x50,0x12,0x60,0x1a,0x40,0x1a,0x40,0x2a,0x44,0x22, +0x44,0x46,0x3c,0x00,0x00,0x08,0x40,0x0b,0xfc,0x08,0x80,0x7f,0xf8,0x09,0x20,0x1b, +0xfc,0x1c,0x00,0x1b,0xf8,0x2b,0x08,0x2b,0xf8,0x49,0x08,0x09,0xf8,0x09,0x08,0x09, +0x18,0x00,0x00,0x00,0x20,0x3c,0x20,0x24,0x20,0x2b,0xfc,0x2a,0x04,0x32,0x80,0x28, +0x80,0x24,0x98,0x24,0xe0,0x24,0x80,0x24,0x80,0x38,0x84,0x20,0x84,0x20,0x7c,0x00, +0x00,0x00,0x20,0x3f,0x20,0x28,0x20,0x3e,0x20,0x29,0xfc,0x3e,0x20,0x28,0x20,0x3e, +0x70,0x02,0x50,0x2a,0x50,0x2a,0xc8,0x2a,0xa8,0x45,0x24,0x1a,0x04,0x00,0x00,0x00, +0x44,0x3f,0x24,0x28,0xa8,0x3e,0x90,0x28,0xf8,0x3e,0xa8,0x28,0xf8,0x3e,0xa8,0x02, +0xf8,0x2a,0x20,0x2b,0xfc,0x2a,0x20,0x42,0x20,0x0c,0x20,0x00,0x00,0x08,0x40,0x08, +0x40,0x08,0x40,0x10,0x40,0x17,0xfc,0x30,0xe0,0x50,0xe0,0x11,0x50,0x11,0x50,0x12, +0x48,0x15,0xf4,0x10,0x40,0x10,0x40,0x10,0x40,0x00,0x00,0x01,0x10,0x11,0x10,0x11, +0x20,0x13,0xfc,0x7f,0x20,0x15,0x20,0x11,0xf8,0x11,0x20,0x15,0x20,0x19,0xf8,0x61, +0x20,0x01,0x20,0x01,0xfc,0x00,0x00,0x00,0x00,0x08,0x10,0x08,0x10,0x08,0x10,0x7f, +0xfc,0x04,0x10,0x04,0x10,0x24,0x90,0x14,0x50,0x0c,0x50,0x0c,0x10,0x0a,0x10,0x12, +0x10,0x20,0x10,0x40,0x30,0x00,0x00,0x00,0x08,0x7f,0x08,0x08,0x08,0x10,0x08,0x7f, +0xfc,0x55,0x08,0x55,0x48,0x55,0x28,0x55,0x28,0x55,0x08,0x55,0x08,0x55,0x08,0x55, +0x08,0x43,0x18,0x00,0x00,0x08,0x90,0x08,0x88,0x10,0xfc,0x17,0xc0,0x30,0x40,0x50, +0x24,0x10,0x14,0x11,0x0c,0x01,0x00,0x11,0x10,0x11,0x10,0x11,0x10,0x1f,0xf0,0x00, +0x00,0x00,0x00,0x09,0x20,0x09,0x20,0x7f,0xfc,0x09,0x20,0x0f,0xe0,0x00,0x00,0x7f, +0xfc,0x41,0x04,0x5f,0xf4,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x60,0x01,0x00,0x00, +0x00,0x08,0x40,0x08,0x40,0x13,0xf8,0x24,0x40,0x04,0x40,0x0f,0xfc,0x18,0x10,0x28, +0x10,0x4f,0xfc,0x09,0x10,0x08,0x90,0x08,0x90,0x08,0x10,0x08,0x30,0x00,0x00,0x02, +0x00,0x02,0x40,0x04,0x30,0x7f,0xe8,0x00,0x04,0x0f,0xe0,0x08,0x20,0x08,0x20,0x0f, +0xe0,0x01,0x00,0x24,0x88,0x24,0xa4,0x44,0x24,0x03,0xe0,0x00,0x00,0x08,0x40,0x12, +0x48,0x7f,0x70,0x00,0x44,0x3e,0x3c,0x22,0x48,0x3e,0x70,0x22,0x44,0x26,0x3c,0x01, +0x10,0x24,0x88,0x24,0xa4,0x44,0x24,0x03,0xe0,0x00,0x00,0x04,0x40,0x1f,0x50,0x04, +0x48,0x7f,0xfc,0x15,0x40,0x1f,0x48,0x15,0x48,0x1f,0x28,0x0a,0x28,0x3f,0xb0,0x0a, +0x14,0x7f,0xac,0x19,0x4c,0x60,0x84,0x00,0x00,0x08,0x20,0x08,0x20,0x3e,0xf8,0x08, +0x20,0x7f,0xfc,0x14,0x30,0x12,0x50,0x22,0x88,0x4f,0xe4,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x08,0x20,0x0f,0xe0,0x00,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x01,0x00,0x0f, +0xe0,0x02,0x80,0x7f,0xfc,0x05,0x40,0x19,0x30,0x6d,0x6c,0x03,0x80,0x0d,0x60,0x31, +0x18,0x03,0x00,0x00,0x00,0x11,0x50,0x09,0x50,0x0f,0xfc,0x41,0x50,0x21,0xf0,0x20, +0x00,0x07,0xfc,0x04,0x48,0x1b,0xf8,0x12,0x48,0x22,0x48,0x22,0x48,0x42,0x70,0x40, +0x40,0x00,0x00,0x00,0x40,0x3c,0x40,0x24,0x40,0x24,0x50,0x3c,0x88,0x24,0x9c,0x27, +0xe4,0x3c,0x00,0x25,0xf8,0x25,0x08,0x25,0x08,0x25,0x08,0x25,0xf8,0x4c,0x00,0x00, +0x00,0x00,0x00,0x3e,0x78,0x25,0x48,0x25,0x48,0x24,0x78,0x3c,0x48,0x24,0x78,0x27, +0x64,0x3d,0x58,0x25,0x50,0x25,0x68,0x25,0x84,0x26,0x80,0x4c,0x7c,0x00,0x00,0x04, +0x40,0x04,0x40,0x7f,0xfc,0x05,0x40,0x01,0x00,0x02,0x40,0x04,0x30,0x7f,0xc8,0x00, +0x04,0x1f,0xf0,0x10,0x10,0x10,0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x02,0x90,0x04, +0x88,0x18,0x7c,0x6f,0xc0,0x08,0x20,0x09,0x14,0x09,0x0c,0x7f,0xfc,0x03,0x10,0x0c, +0x90,0x74,0xa0,0x04,0x40,0x07,0x30,0x38,0x0c,0x00,0x00,0x02,0x90,0x04,0x88,0x1b, +0xfc,0x68,0x40,0x08,0x34,0x0f,0xec,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x06,0x60,0x38,0x18,0x00,0x00,0x00,0x00,0x23,0xf0,0x12,0x10,0x13, +0xf0,0x02,0x10,0x03,0xf0,0x72,0x88,0x12,0x48,0x12,0x30,0x12,0xd0,0x1f,0x08,0x18, +0x08,0x26,0x00,0x41,0xfc,0x00,0x00,0x00,0x40,0x23,0xf8,0x10,0x48,0x17,0xfc,0x00, +0x48,0x03,0xf8,0x74,0x48,0x12,0x50,0x12,0xe0,0x11,0x50,0x16,0x48,0x18,0xc8,0x26, +0x00,0x41,0xfc,0x00,0x00,0x01,0x10,0x3c,0x90,0x24,0xa0,0x2b,0xfc,0x28,0x40,0x30, +0xe8,0x2b,0x68,0x24,0xb0,0x27,0x30,0x24,0x70,0x38,0xa8,0x23,0x24,0x20,0x20,0x20, +0xc0,0x00,0x00,0x02,0x90,0x04,0xbc,0x1f,0xc0,0x68,0x24,0x08,0x1c,0x1f,0xf4,0x11, +0x10,0x1f,0xf0,0x11,0x10,0x3f,0xf8,0x01,0x00,0x7f,0xfc,0x24,0x88,0x42,0x44,0x00, +0x00,0x08,0x00,0x08,0xf8,0x1e,0xa8,0x24,0xa8,0x7e,0xf8,0x2a,0xa8,0x3e,0xf8,0x2a, +0x88,0x3e,0xf8,0x04,0xd8,0x3a,0xd8,0x2f,0x78,0x29,0x08,0x42,0x18,0x00,0x00,0x04, +0x90,0x04,0x88,0x04,0x88,0x08,0x80,0x08,0xfc,0x1f,0x40,0x28,0x40,0x48,0x40,0x08, +0x20,0x08,0x20,0x08,0x14,0x08,0x14,0x08,0x0c,0x08,0x04,0x00,0x00,0x01,0x00,0x01, +0x00,0x02,0x00,0x04,0x40,0x08,0x30,0x7f,0xc8,0x00,0x04,0x00,0x00,0x1f,0xf0,0x10, +0x10,0x10,0x10,0x10,0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x02,0x80,0x02,0x80,0x04,0x40,0x04, +0x40,0x08,0x20,0x10,0x10,0x60,0x0c,0x00,0x00,0x10,0x80,0x10,0x80,0x1f,0xf8,0x29, +0x20,0x46,0x10,0x3f,0xf0,0x01,0x10,0x3f,0xf0,0x21,0x00,0x3f,0xf8,0x03,0x08,0x05, +0x08,0x19,0x30,0x61,0x00,0x00,0x00,0x00,0x00,0x7f,0xf8,0x0c,0x48,0x0c,0x78,0x3f, +0x48,0x2d,0x78,0x2d,0x00,0x2d,0xfc,0x37,0x10,0x21,0x50,0x3f,0x5c,0x21,0x50,0x3f, +0xb0,0x01,0x1c,0x00,0x00,0x00,0x00,0x3f,0xfc,0x22,0x20,0x3e,0xf8,0x22,0x88,0x3e, +0xf8,0x00,0x88,0x7f,0xf8,0x08,0x88,0x2e,0xf8,0x28,0x50,0x38,0x88,0x2d,0x08,0x43, +0xfc,0x00,0x00,0x00,0x80,0x1f,0xfc,0x12,0xa0,0x15,0xfc,0x1f,0xf8,0x15,0x10,0x15, +0xfc,0x13,0xe0,0x12,0x20,0x13,0xf8,0x22,0x00,0x23,0xf8,0x49,0x48,0x12,0xb0,0x00, +0x00,0x10,0x80,0x08,0x80,0x0f,0xf8,0x42,0x20,0x21,0x40,0x2f,0xfc,0x00,0x00,0x17, +0xf0,0x14,0x90,0x17,0xf0,0x24,0x90,0x27,0xf4,0x44,0x84,0x40,0x7c,0x00,0x00,0x22, +0x40,0x12,0x78,0x1f,0xc0,0x45,0x78,0x25,0x08,0x3f,0xf8,0x00,0x40,0x0f,0x78,0x19, +0x40,0x1f,0x78,0x29,0x40,0x2f,0x78,0x49,0x44,0x4b,0x3c,0x00,0x00,0x01,0x00,0x01, +0x00,0x01,0xf8,0x01,0x00,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x01, +0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x07,0xfc,0x78, +0x40,0x48,0x88,0x49,0xc8,0x4e,0x50,0x48,0xe0,0x49,0x20,0x4e,0x70,0x78,0xa8,0x03, +0x24,0x0c,0x20,0x00,0x20,0x00,0xc0,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x40, +0x04,0x40,0x64,0x01,0x80,0x1e,0x00,0x02,0x00,0x03,0xfc,0x7e,0x00,0x02,0x00,0x02, +0x08,0x02,0x08,0x01,0xf8,0x00,0x00,0x08,0x08,0x08,0x30,0x09,0xc0,0x7e,0x40,0x08, +0x40,0x08,0x40,0x08,0x7c,0x0f,0xc0,0x18,0x40,0x68,0x40,0x08,0x40,0x08,0x44,0x08, +0x44,0x18,0x3c,0x00,0x00,0x10,0x00,0x11,0xf8,0x11,0x08,0x7d,0x08,0x11,0x08,0x11, +0xf8,0x11,0x40,0x1d,0x40,0x71,0x20,0x11,0x20,0x12,0x10,0x12,0x10,0x14,0x08,0x38, +0x04,0x00,0x00,0x10,0x00,0x13,0xfc,0x10,0x40,0x7c,0x40,0x10,0x80,0x10,0x80,0x11, +0xf8,0x13,0x08,0x1d,0x08,0x79,0x08,0x11,0x08,0x11,0x08,0x11,0xf8,0x30,0x00,0x00, +0x00,0x10,0x00,0x0b,0xf8,0x0a,0x08,0x42,0x08,0x22,0x08,0x23,0xf8,0x02,0x40,0x12, +0x40,0x12,0x40,0x12,0x20,0x24,0x20,0x24,0x10,0x48,0x08,0x50,0x04,0x00,0x00,0x20, +0x00,0x17,0xf8,0x10,0x88,0x47,0xf8,0x20,0x88,0x27,0xf8,0x02,0x20,0x13,0xf8,0x16, +0x40,0x1b,0xf0,0x22,0x40,0x23,0xf0,0x42,0x40,0x43,0xfc,0x00,0x00,0x00,0x00,0x03, +0xfc,0x7c,0x40,0x10,0x80,0x11,0xc8,0x16,0x48,0x7c,0xf0,0x11,0x20,0x16,0x70,0x10, +0xa8,0x1b,0x24,0x6c,0x20,0x00,0x20,0x00,0xc0,0x00,0x00,0x00,0x08,0x3c,0x30,0x01, +0xc0,0x7e,0x40,0x00,0x40,0x3c,0x40,0x00,0x7c,0x3d,0xc0,0x00,0x40,0x3c,0x40,0x24, +0x40,0x24,0x44,0x3c,0x44,0x00,0x3c,0x00,0x00,0x08,0x00,0x09,0xfc,0x15,0x54,0x13, +0xfc,0x22,0x20,0x5c,0xf8,0x08,0x20,0x7f,0xfc,0x08,0x50,0x2b,0xfc,0x1c,0x20,0x18, +0xf8,0x0e,0x20,0x70,0x20,0x00,0x00,0x20,0x00,0x17,0xf0,0x15,0x50,0x47,0xf0,0x22, +0x00,0x23,0xf8,0x05,0x08,0x1f,0xc8,0x15,0x48,0x17,0xc8,0x25,0x48,0x21,0xe8,0x4e, +0x28,0x40,0x30,0x00,0x00,0x00,0x90,0x3c,0x90,0x01,0xfc,0x7e,0xd0,0x00,0x40,0x3f, +0xfc,0x00,0x40,0x3c,0x80,0x00,0xf8,0x3d,0x88,0x26,0x88,0x24,0x88,0x24,0x88,0x3c, +0xf8,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x7f,0xfc,0x08,0x20,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x08,0x38,0x0f,0xe0,0x78,0x20,0x00,0x20,0x00,0x20,0x00, +0x00,0x00,0x00,0x1f,0xf0,0x11,0x10,0x11,0x10,0x17,0xd0,0x15,0x50,0x15,0x50,0x15, +0x50,0x15,0x50,0x15,0x50,0x15,0xd4,0x21,0x0c,0x21,0x0c,0x41,0x04,0x00,0x00,0x08, +0x20,0x09,0x24,0x08,0xa4,0x3e,0xa8,0x2a,0x20,0x2a,0xf8,0x2a,0x88,0x3e,0xf8,0x28, +0x88,0x0c,0xf8,0x0a,0x88,0x0f,0x88,0x70,0x88,0x00,0x98,0x00,0x00,0x00,0x00,0x1f, +0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0xf0,0x00,0x00,0x04, +0x40,0x04,0x20,0x08,0x10,0x10,0x08,0x60,0x08,0x00,0x00,0x00,0x00,0x00,0xf8,0x7c, +0x88,0x44,0x88,0x44,0x88,0x44,0x88,0x44,0x88,0x44,0x88,0x44,0x88,0x7c,0x88,0x00, +0xf0,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x08,0x00,0x0b,0xf0,0x0a,0x10,0x12, +0x10,0x12,0x10,0x33,0xf0,0x52,0x10,0x12,0x10,0x12,0x10,0x13,0xf0,0x10,0x00,0x10, +0x00,0x1f,0xfc,0x10,0x00,0x00,0x00,0x00,0x40,0x23,0xf8,0x10,0x40,0x17,0xfc,0x01, +0x10,0x00,0xa0,0x77,0xfc,0x10,0x40,0x13,0xf8,0x10,0x40,0x17,0xfc,0x18,0x40,0x26, +0x40,0x41,0xfc,0x00,0x00,0x00,0x00,0x1f,0xfc,0x10,0x00,0x17,0xf8,0x10,0x00,0x10, +0x00,0x1f,0xfc,0x12,0x88,0x12,0x48,0x12,0x50,0x22,0x20,0x22,0x90,0x43,0x08,0x0c, +0x04,0x00,0x00,0x02,0x00,0x7f,0xfc,0x06,0x40,0x1a,0xb0,0x67,0xfc,0x0c,0x80,0x17, +0xe0,0x04,0x80,0x07,0xf8,0x00,0x20,0x7f,0xfc,0x04,0x20,0x02,0x20,0x00,0x60,0x00, +0x00,0x01,0x08,0x3c,0x88,0x24,0x90,0x25,0xf8,0x25,0x08,0x3d,0x08,0x25,0xf8,0x24, +0x60,0x3c,0x60,0x24,0x60,0x24,0xa0,0x24,0xa4,0x25,0x24,0x4e,0x1c,0x00,0x00,0x00, +0x00,0x3e,0xf8,0x02,0x08,0x3e,0xf8,0x20,0x80,0x22,0x88,0x1e,0x78,0x04,0x40,0x3f, +0xf8,0x04,0x40,0x7f,0xfc,0x04,0x40,0x18,0x30,0x60,0x08,0x00,0x00,0x00,0x00,0x3f, +0xf8,0x24,0x48,0x3e,0x48,0x22,0x30,0x3e,0x30,0x24,0xc8,0x3f,0x04,0x01,0x00,0x3f, +0xf8,0x08,0x20,0x04,0x40,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x40,0x12, +0x48,0x12,0x48,0x02,0x48,0x02,0x48,0x72,0x48,0x12,0x48,0x12,0x48,0x13,0xf8,0x10, +0x00,0x18,0x00,0x26,0x00,0x41,0xfc,0x00,0x00,0x10,0x00,0x13,0xb8,0x12,0xa8,0x7e, +0xa8,0x12,0xa8,0x13,0xb8,0x3a,0xa8,0x36,0xa8,0x37,0xb8,0x52,0xa8,0x52,0xa8,0x14, +0xc8,0x14,0xc8,0x19,0x98,0x00,0x00,0x04,0x40,0x04,0x20,0x08,0x10,0x11,0x10,0x01, +0x00,0x02,0x80,0x04,0x40,0x18,0x30,0x6f,0xec,0x08,0x20,0x08,0x20,0x08,0x20,0x0f, +0xe0,0x00,0x00,0x00,0x00,0x08,0x00,0x4b,0xf8,0x32,0x48,0x12,0x48,0x33,0xf8,0x4a, +0x48,0x0a,0x48,0x1b,0xf8,0x28,0x40,0x4b,0xf8,0x08,0x40,0x08,0x40,0x3f,0xfc,0x10, +0x00,0x00,0x00,0x08,0x00,0x08,0xf8,0x1e,0x20,0x25,0xfc,0x7f,0x24,0x2b,0xb8,0x3e, +0xec,0x2a,0x00,0x3e,0xf8,0x04,0x08,0x3b,0xf8,0x2e,0x08,0x28,0xf8,0x40,0x00,0x00, +0x00,0x11,0x10,0x10,0xa0,0x17,0xfc,0x78,0xa0,0x13,0xf8,0x1a,0xb8,0x37,0x18,0x37, +0xf8,0x33,0xf8,0x50,0x10,0x57,0xfc,0x11,0x10,0x10,0x90,0x10,0x30,0x00,0x00,0x00, +0x90,0x3c,0x90,0x00,0xa0,0x7f,0xfc,0x01,0x20,0x3f,0x20,0x01,0xf8,0x3d,0x20,0x01, +0x20,0x3d,0xf8,0x25,0x20,0x25,0x20,0x3d,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x0f, +0xe0,0x08,0x20,0x0a,0x20,0x09,0x20,0x09,0x20,0x08,0x20,0x7f,0xfc,0x08,0x20,0x08, +0x20,0x10,0x20,0x10,0x20,0x20,0x20,0x40,0x60,0x00,0x00,0x12,0x10,0x09,0x10,0x09, +0x20,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x11,0x10,0x1f,0xf0,0x01,0x00,0x7f, +0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x01,0x10,0x01,0x10,0x7f,0xfc,0x49, +0x10,0x4b,0xf8,0x4a,0x48,0x4b,0xf8,0x48,0x40,0x4b,0xf8,0x48,0x40,0x7f,0xfc,0x00, +0xa0,0x03,0x18,0x0c,0x04,0x00,0x00,0x00,0x00,0x11,0xf0,0x11,0x10,0x11,0x10,0x7d, +0x10,0x11,0xf0,0x11,0x10,0x11,0x10,0x15,0x10,0x19,0xf0,0x60,0x00,0x00,0x00,0x0f, +0xfc,0x00,0x00,0x00,0x00,0x10,0x00,0x11,0xf0,0x11,0x10,0x7d,0x10,0x11,0x10,0x11, +0xf0,0x11,0x10,0x15,0x10,0x19,0x10,0x71,0xf0,0x10,0x00,0x10,0x00,0x17,0xfc,0x30, +0x00,0x00,0x00,0x10,0x00,0x13,0xfc,0x12,0xa4,0x7c,0xa0,0x11,0x24,0x12,0x5c,0x10, +0x40,0x1f,0xfc,0x70,0xe0,0x11,0x50,0x12,0x48,0x14,0x44,0x10,0x40,0x30,0x40,0x00, +0x00,0x00,0x00,0x0f,0xe0,0x08,0x20,0x08,0x20,0x08,0x20,0x0f,0xe0,0x08,0x20,0x08, +0x20,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x14, +0x40,0x14,0x40,0x7f,0x40,0x14,0xfc,0x3e,0xa4,0x2b,0x28,0x3e,0x30,0x08,0x20,0x3e, +0x20,0x08,0x60,0x7f,0x50,0x14,0x90,0x23,0x08,0x42,0x04,0x00,0x00,0x10,0x40,0x08, +0x48,0x0a,0x48,0x42,0xd0,0x24,0xa0,0x21,0x18,0x06,0x44,0x10,0x48,0x12,0x48,0x12, +0xd0,0x24,0xa0,0x21,0x20,0x42,0x10,0x4c,0x0c,0x00,0x00,0x11,0x10,0x0f,0xfc,0x09, +0x10,0x41,0xf0,0x21,0x10,0x21,0xf0,0x01,0x10,0x1f,0xfc,0x14,0xa0,0x14,0xa4,0x25, +0x1c,0x26,0x00,0x47,0xfc,0x40,0x00,0x00,0x00,0x01,0x00,0x11,0x10,0x11,0x10,0x1f, +0xf0,0x00,0x00,0x1f,0xfc,0x10,0x80,0x10,0x88,0x14,0x88,0x15,0x50,0x29,0x40,0x22, +0x20,0x44,0x10,0x18,0x0c,0x00,0x00,0x10,0x00,0x13,0xfc,0x10,0x00,0x3f,0xf8,0x29, +0x08,0x49,0x08,0x09,0xf8,0x7f,0x08,0x09,0x08,0x08,0x90,0x14,0x90,0x12,0x20,0x23, +0xfc,0x40,0x00,0x00,0x00,0x00,0x40,0x12,0x48,0x12,0x48,0x13,0xf8,0x7c,0x00,0x0b, +0xfc,0x48,0x40,0x2b,0xf8,0x2a,0xa8,0x32,0xa8,0x1e,0xa8,0x72,0xa8,0x02,0xa8,0x02, +0x18,0x00,0x00,0x10,0x40,0x1f,0x7c,0x28,0xa0,0x45,0x10,0x12,0x10,0x09,0x20,0x1f, +0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x01,0x00,0x00, +0x00,0x08,0x20,0x08,0x20,0x12,0xfc,0x64,0x84,0x19,0x00,0x0d,0xfc,0x12,0x20,0x7e, +0xa0,0x08,0xb8,0x2c,0xa0,0x2a,0xa0,0x2b,0x60,0x49,0x30,0x0a,0x0c,0x00,0x00,0x00, +0x40,0x7e,0x40,0x24,0x40,0x25,0xfc,0x3d,0x44,0x25,0x44,0x24,0x40,0x3c,0x60,0x24, +0x60,0x26,0x60,0x3c,0xa0,0x64,0xa4,0x05,0x24,0x06,0x1c,0x00,0x00,0x00,0x00,0x3d, +0xf0,0x25,0x10,0x25,0x10,0x3d,0x10,0x25,0xf0,0x25,0x10,0x3d,0x10,0x25,0x10,0x25, +0xf0,0x24,0x00,0x24,0x00,0x27,0xfc,0x4c,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x09, +0x10,0x09,0xf0,0x1d,0x00,0x23,0xfc,0x41,0x00,0x0f,0xe0,0x09,0x20,0x09,0x20,0x0f, +0xe0,0x09,0x20,0x01,0xf0,0x3e,0x08,0x00,0x00,0x00,0x00,0x3f,0x0c,0x01,0xf0,0x7d, +0x10,0x02,0x50,0x3a,0x50,0x07,0x5c,0x39,0x50,0x05,0x50,0x3b,0x50,0x2a,0xfc,0x2b, +0x00,0x3c,0xc0,0x28,0x3c,0x00,0x00,0x08,0x40,0x08,0xb8,0x15,0x28,0x13,0x28,0x23, +0xe8,0x5d,0x4c,0x09,0x04,0x7f,0xf8,0x09,0x48,0x2b,0x28,0x1d,0xf0,0x1b,0x10,0x0d, +0x28,0x71,0xc4,0x00,0x00,0x00,0x00,0x7f,0xf8,0x40,0x88,0x40,0x88,0x7f,0xf8,0x40, +0x88,0x48,0x88,0x44,0x88,0x44,0x88,0x40,0x88,0x40,0x88,0x41,0x88,0x40,0x08,0x7f, +0xf8,0x00,0x00,0x00,0x40,0x17,0xfc,0x10,0x00,0x13,0xf8,0x7e,0xa8,0x12,0xe8,0x12, +0x08,0x13,0xf8,0x15,0x10,0x19,0xf0,0x61,0x10,0x01,0xf0,0x00,0x00,0x0f,0xfc,0x00, +0x00,0x00,0x88,0x7a,0x48,0x09,0x10,0x0b,0xf8,0x7a,0x48,0x43,0xf8,0x42,0x48,0x7b, +0xf8,0x08,0x40,0x0f,0xfc,0x08,0x40,0x08,0x40,0x10,0x40,0x60,0x40,0x00,0x00,0x04, +0x08,0x04,0x10,0x65,0x60,0x55,0x40,0x56,0x40,0x44,0x7c,0x7f,0xc8,0x4c,0x48,0x4e, +0x48,0x55,0x48,0x65,0x88,0x44,0x88,0x7f,0x08,0x00,0x08,0x00,0x00,0x00,0x1c,0x07, +0xe4,0x7a,0x48,0x49,0x30,0x4b,0xf8,0x48,0x80,0x7f,0xfc,0x48,0x80,0x49,0xf0,0x49, +0x10,0x7a,0xa0,0x0c,0x40,0x09,0xb0,0x16,0x0c,0x00,0x00,0x10,0x40,0x17,0xfc,0x10, +0x00,0x7f,0xf8,0x12,0xa8,0x12,0xe8,0x3a,0x08,0x37,0xf8,0x35,0x10,0x51,0xf0,0x51, +0x10,0x11,0xf0,0x10,0x00,0x17,0xfc,0x00,0x00,0x06,0x00,0x38,0xf0,0x20,0x90,0x20, +0x90,0x3c,0x94,0x21,0x14,0x22,0x0c,0x3d,0xf8,0x20,0x88,0x20,0x90,0x3c,0x50,0x60, +0x20,0x20,0xd0,0x23,0x0c,0x00,0x00,0x00,0x00,0x1f,0xf0,0x11,0x10,0x11,0x10,0x1f, +0xf0,0x11,0x10,0x11,0x10,0x1f,0xf0,0x01,0x00,0x7f,0xf8,0x02,0x08,0x04,0x08,0x18, +0x08,0x60,0x70,0x00,0x00,0x00,0x20,0x3c,0x28,0x00,0xa8,0x7e,0xb0,0x01,0x20,0x3c, +0x50,0x00,0x88,0x3c,0x24,0x00,0xa4,0x3c,0xa8,0x25,0x30,0x24,0x50,0x3c,0x88,0x03, +0x04,0x00,0x00,0x08,0x40,0x08,0x40,0x0f,0xfc,0x10,0x40,0x15,0xf0,0x35,0x10,0x55, +0xf0,0x15,0x10,0x15,0xf0,0x15,0x10,0x15,0xf0,0x14,0x00,0x17,0xfc,0x10,0x00,0x00, +0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x3f,0xf8,0x48,0x88,0x48,0x88,0x08,0x88,0x7f, +0x88,0x08,0x88,0x0c,0x88,0x14,0x88,0x12,0xf8,0x22,0x00,0x40,0x00,0x00,0x00,0x00, +0x40,0x12,0x40,0x12,0x40,0x12,0x48,0x7e,0x78,0x13,0xc8,0x16,0x48,0x12,0x48,0x12, +0x48,0x16,0x70,0x1a,0x40,0x62,0x04,0x02,0x04,0x01,0xfc,0x00,0x00,0x00,0x20,0x7c, +0xa0,0x04,0xa0,0x04,0xa8,0x3c,0xb8,0x20,0xe8,0x23,0xa8,0x3c,0xa8,0x04,0xa8,0x04, +0xb8,0x04,0xa0,0x04,0x84,0x08,0x84,0x30,0x7c,0x00,0x00,0x00,0x20,0x7e,0x10,0x24, +0x10,0x24,0x40,0x3c,0x40,0x24,0x40,0x25,0x48,0x3d,0x44,0x25,0x44,0x26,0x44,0x3e, +0x40,0x64,0x48,0x04,0x48,0x04,0x38,0x00,0x00,0x10,0x00,0x10,0x00,0x1f,0xf8,0x24, +0x88,0x7f,0x88,0x0c,0x88,0x0a,0xf8,0x12,0x00,0x2f,0xe0,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x10,0x40,0x0a,0x40,0x0a,0x40,0x42,0x48,0x22, +0x78,0x23,0xc8,0x0e,0x48,0x02,0x48,0x0a,0x48,0x0a,0x70,0x12,0x40,0x12,0x04,0x22, +0x04,0x21,0xfc,0x00,0x00,0x00,0x80,0x00,0x80,0x0f,0xfc,0x4a,0x00,0x2a,0x00,0x2b, +0xf8,0x0d,0x28,0x19,0x28,0x2f,0xe8,0x49,0x28,0x11,0x28,0x12,0xa8,0x24,0xb8,0x48, +0x00,0x00,0x00,0x02,0x90,0x0c,0x90,0x38,0xa0,0x09,0xfc,0x0b,0x20,0x7f,0x20,0x09, +0xf8,0x1d,0x20,0x1b,0x20,0x2b,0xf8,0x49,0x20,0x09,0x20,0x09,0xfc,0x08,0x00,0x00, +0x00,0x00,0x00,0x3f,0xf8,0x24,0x48,0x3f,0xf8,0x00,0x80,0x7f,0xfc,0x00,0x80,0x27, +0xe0,0x24,0x20,0x27,0xe0,0x24,0x20,0x27,0xe0,0x20,0x00,0x3f,0xfc,0x00,0x00,0x00, +0x80,0x7f,0x80,0x10,0x80,0x14,0xfc,0x23,0x10,0x7f,0x90,0x0a,0x90,0x08,0x50,0x3e, +0x60,0x08,0x20,0x08,0x60,0x0e,0x90,0x71,0x08,0x06,0x04,0x00,0x00,0x11,0x00,0x11, +0x00,0x11,0x38,0x7d,0xe8,0x56,0xa8,0x56,0xa8,0x54,0xa8,0x7f,0xe8,0x50,0xa8,0x18, +0xa8,0x15,0x68,0x1f,0x78,0x62,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x27,0xf8,0x14, +0x08,0x17,0xf8,0x05,0x10,0x04,0xa0,0x77,0xf8,0x14,0x40,0x15,0xf0,0x14,0x40,0x1b, +0xf8,0x18,0x40,0x26,0x40,0x41,0xfc,0x00,0x00,0x00,0x20,0x3f,0xa0,0x28,0xa8,0x3e, +0xb8,0x28,0xe8,0x3f,0xa8,0x28,0xa8,0x3e,0xa8,0x02,0xa8,0x2a,0xb8,0x2a,0xa0,0x2a, +0x84,0x42,0x84,0x0c,0x7c,0x00,0x00,0x10,0x40,0x1f,0xfc,0x28,0xa0,0x45,0x10,0x7e, +0xf0,0x08,0x90,0x0e,0xd4,0x71,0x2c,0x01,0x00,0x7f,0xfc,0x03,0x80,0x0d,0x60,0x71, +0x1c,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x02,0x40,0x1c,0xc0,0x05, +0x20,0x03,0xf0,0x7e,0x08,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x00, +0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x1f,0xfc,0x14,0x90,0x25, +0x10,0x44,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0x30,0x00, +0x00,0x08,0x40,0x08,0x40,0x1f,0xfc,0x14,0xa0,0x23,0x10,0x42,0x10,0x7f,0xf0,0x11, +0x10,0x11,0x90,0x11,0x50,0x1e,0x50,0x72,0x14,0x04,0x14,0x08,0x0c,0x00,0x00,0x04, +0x40,0x7f,0xfc,0x05,0x40,0x7f,0xf8,0x02,0x40,0x0c,0xc0,0x03,0x30,0x7f,0xc8,0x0f, +0xe0,0x09,0x20,0x0f,0xe0,0x09,0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x27, +0xfc,0x10,0x80,0x11,0x88,0x0e,0xc8,0x01,0x50,0x76,0x60,0x10,0xd0,0x13,0x48,0x1c, +0x44,0x10,0x44,0x19,0x80,0x26,0x00,0x41,0xfc,0x00,0x00,0x02,0x20,0x04,0x20,0x38, +0xa0,0x08,0xa0,0x08,0xf8,0x7e,0xa0,0x09,0x20,0x1d,0xfc,0x1a,0x20,0x2a,0x60,0x48, +0x50,0x08,0x90,0x09,0x08,0x0a,0x04,0x00,0x00,0x01,0x00,0x7f,0xfc,0x44,0x84,0x44, +0x94,0x08,0x70,0x3f,0xf8,0x02,0x40,0x04,0x70,0x3f,0x88,0x01,0x00,0x1f,0xf0,0x01, +0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x05,0x40,0x02, +0x80,0x04,0x40,0x19,0x30,0x61,0x0c,0x1f,0xf0,0x01,0x00,0x05,0x40,0x19,0x30,0x61, +0x08,0x01,0x00,0x00,0x00,0x10,0x40,0x10,0x40,0x17,0xfc,0x11,0x10,0x78,0xa0,0x2b, +0xf8,0x2a,0x48,0x2b,0xf8,0x2a,0x48,0x7a,0xe8,0x5a,0xa8,0x16,0xe8,0x22,0xa8,0x42, +0x18,0x00,0x00,0x04,0x40,0x3f,0xf8,0x01,0x00,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x0f, +0xf0,0x0c,0x10,0x17,0xf0,0x14,0x10,0x27,0xf0,0x44,0x10,0x07,0xf0,0x00,0x00,0x00, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x21,0x08,0x21,0x08,0x21,0x08,0x21, +0x08,0x3f,0xf8,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x08, +0x40,0x08,0x40,0x08,0x40,0x17,0xfc,0x14,0x44,0x34,0x44,0x54,0x44,0x14,0x44,0x17, +0xfc,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x00,0x00,0x01,0x00,0x01, +0x00,0x7f,0xfc,0x40,0x04,0x41,0x04,0x01,0x00,0x1f,0xf0,0x11,0x10,0x11,0x10,0x1f, +0xf0,0x11,0x10,0x11,0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x1f, +0xf0,0x11,0x10,0x11,0x10,0x11,0x10,0x1f,0xf0,0x01,0x00,0x01,0x00,0x04,0x90,0x24, +0x88,0x24,0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x10,0x40,0x10,0x40,0x10,0x40,0x7c, +0x40,0x13,0xf8,0x12,0x48,0x12,0x48,0x1e,0x48,0x73,0xf8,0x12,0x48,0x12,0x48,0x12, +0x48,0x13,0xf8,0x30,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x08,0x10,0x0f,0xf0,0x08, +0x90,0x08,0x40,0x17,0xe0,0x14,0x50,0x27,0xc8,0x44,0x44,0x07,0xc0,0x00,0x00,0x3f, +0xf8,0x00,0x00,0x00,0x00,0x08,0x80,0x08,0x40,0x08,0x40,0x7f,0xfc,0x08,0x40,0x18, +0x40,0x1c,0x40,0x1b,0xf8,0x2a,0x40,0x28,0x40,0x48,0x40,0x08,0x40,0x0f,0xfc,0x08, +0x00,0x00,0x00,0x10,0x80,0x08,0x40,0x08,0x40,0x47,0xfc,0x20,0x40,0x20,0x40,0x00, +0x40,0x13,0xf8,0x10,0x40,0x10,0x40,0x20,0x40,0x20,0x40,0x4f,0xfc,0x40,0x00,0x00, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x1f,0xf0,0x11,0x10,0x11,0x10,0x11,0x10,0x1f, +0xf0,0x01,0x00,0x01,0x20,0x01,0x10,0x01,0xf8,0x7e,0x04,0x00,0x04,0x00,0x00,0x01, +0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x01,0x00,0x03, +0x08,0x0c,0xb0,0x74,0xc0,0x04,0x40,0x07,0x30,0x38,0x0c,0x00,0x00,0x00,0x80,0x3c, +0x40,0x00,0x40,0x7f,0xfc,0x00,0x40,0x3c,0x40,0x00,0x40,0x3f,0xf8,0x00,0x40,0x3c, +0x40,0x24,0x40,0x24,0x40,0x3f,0xfc,0x00,0x00,0x00,0x00,0x00,0x08,0x7f,0x88,0x0c, +0x08,0x0c,0x08,0x3f,0xfc,0x2d,0x08,0x2d,0x48,0x35,0x28,0x37,0x28,0x21,0x08,0x3f, +0x08,0x21,0x08,0x3f,0x08,0x00,0x18,0x00,0x00,0x08,0x20,0x08,0x20,0x15,0xfc,0x12, +0x20,0x22,0xf8,0x5c,0x20,0x09,0xfc,0x7e,0x48,0x09,0xfc,0x2a,0x48,0x1c,0xa8,0x19, +0x28,0x0e,0x08,0x70,0x18,0x00,0x00,0x00,0x40,0x3f,0x20,0x28,0x20,0x3f,0xfc,0x28, +0x20,0x3e,0x20,0x28,0x20,0x3e,0xf8,0x02,0x20,0x2a,0x20,0x2a,0x20,0x2a,0x20,0x43, +0xfc,0x0c,0x00,0x00,0x00,0x10,0x00,0x13,0xf8,0x10,0x40,0x7f,0xfc,0x14,0x44,0x17, +0x5c,0x39,0xf0,0x34,0x00,0x37,0xfc,0x50,0x80,0x50,0xf0,0x10,0x10,0x10,0x10,0x10, +0x60,0x00,0x00,0x20,0x20,0x1f,0x20,0x12,0xf8,0x42,0x28,0x26,0xb0,0x2a,0xfc,0x03, +0x20,0x17,0x78,0x1b,0xc8,0x22,0xf8,0x26,0xc8,0x5a,0x48,0x42,0x78,0x4c,0x00,0x00, +0x00,0x04,0x80,0x44,0x88,0x2b,0xf8,0x10,0x90,0x30,0xa0,0x4f,0xfc,0x08,0x80,0x19, +0xf8,0x2b,0x08,0x4d,0xf8,0x09,0x08,0x09,0x08,0x31,0xf8,0x10,0x00,0x00,0x00,0x04, +0x40,0x04,0x40,0x7f,0xfc,0x05,0x40,0x01,0x00,0x7f,0xfc,0x40,0x04,0x00,0x00,0x7f, +0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x08,0x20,0x7f, +0xfc,0x09,0x20,0x01,0x08,0x1f,0xf0,0x01,0x20,0x7f,0xfc,0x01,0x00,0x07,0xf0,0x1c, +0x10,0x67,0xf0,0x04,0x10,0x07,0xf0,0x00,0x00,0x00,0x00,0x00,0x20,0x3c,0x20,0x25, +0xfc,0x25,0x04,0x3d,0x04,0x24,0x00,0x3d,0xfc,0x24,0x20,0x24,0x20,0x3c,0x20,0x18, +0x20,0x14,0x20,0x24,0x20,0x40,0x60,0x00,0x00,0x00,0x00,0x7f,0xfc,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x04,0x80,0x04,0x80,0x04,0x90,0x24,0x90,0x14, +0xa0,0x14,0xc0,0x04,0x80,0x06,0xa0,0x0c,0x90,0x78,0x90,0x08,0x80,0x10,0x84,0x20, +0x84,0x40,0x7c,0x00,0x00,0x00,0x00,0x07,0xf8,0x44,0x88,0x24,0x88,0x27,0xe8,0x04, +0x88,0x17,0xf8,0x14,0x08,0x25,0xe8,0x25,0x28,0x45,0x28,0x49,0xe8,0x08,0x08,0x10, +0x18,0x00,0x00,0x01,0x50,0x01,0x50,0x7f,0xfc,0x49,0x50,0x49,0x70,0x49,0x00,0x49, +0xf8,0x48,0x40,0x4f,0xfc,0x78,0xe0,0x01,0x50,0x06,0x48,0x18,0x44,0x00,0x40,0x00, +0x00,0x01,0x00,0x7f,0xfc,0x48,0x44,0x7f,0x78,0x14,0x40,0x7f,0x78,0x00,0x08,0x3e, +0x78,0x22,0x40,0x3e,0x78,0x22,0x40,0x3e,0x7c,0x22,0x44,0x26,0x3c,0x00,0x00,0x10, +0x40,0x10,0x40,0x10,0x40,0x7c,0x7c,0x54,0x40,0x54,0x40,0x54,0x40,0x55,0xf8,0x55, +0x08,0x5d,0x08,0x51,0x08,0x11,0x08,0x11,0xf8,0x10,0x00,0x00,0x00,0x10,0x00,0x11, +0xf8,0x11,0x00,0x7d,0xf0,0x55,0x00,0x55,0xf0,0x55,0x00,0x57,0xfc,0x55,0x48,0x5d, +0x50,0x51,0x20,0x11,0x50,0x11,0x88,0x16,0x04,0x00,0x00,0x00,0x80,0x00,0x80,0x1f, +0xfc,0x10,0x00,0x10,0x00,0x1f,0xfc,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x10, +0x40,0x20,0x40,0x20,0x40,0x40,0xc0,0x00,0x00,0x00,0x00,0x3f,0xf0,0x02,0x10,0x02, +0x10,0x3f,0xf0,0x22,0x00,0x22,0x00,0x3f,0xf8,0x02,0x08,0x02,0x08,0x02,0x08,0x02, +0x30,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x79,0xf8,0x09,0x00,0x09,0xf0,0x79, +0x00,0x41,0xf0,0x41,0x00,0x7f,0xfc,0x09,0x48,0x09,0x50,0x09,0x20,0x09,0x50,0x11, +0x88,0x66,0x04,0x00,0x00,0x00,0x10,0x3f,0x90,0x24,0xa0,0x24,0xa0,0x2e,0xc8,0x24, +0x88,0x3f,0x90,0x20,0x90,0x2e,0xa4,0x2a,0x84,0x2a,0x88,0x2e,0x88,0x2a,0x90,0x41, +0xa0,0x00,0x00,0x12,0x20,0x1a,0xa0,0x2a,0xa0,0x4a,0xa0,0x1f,0xfc,0x10,0x48,0x2f, +0xc8,0x62,0x28,0x22,0x28,0x2f,0xb0,0x22,0x10,0x23,0xb0,0x2c,0x48,0x20,0x84,0x00, +0x00,0x22,0x20,0x2a,0xa0,0x4f,0xbc,0x10,0x48,0x3f,0xa8,0x52,0x28,0x17,0x90,0x13, +0xb0,0x1c,0x48,0x01,0x04,0x14,0x90,0x14,0x88,0x24,0x24,0x43,0xe4,0x00,0x00,0x10, +0xa0,0x10,0xa0,0x10,0xa8,0x7e,0xa8,0x11,0xb0,0x11,0xa0,0x10,0xb0,0x1d,0xa8,0x72, +0xa4,0x14,0xa4,0x11,0x20,0x11,0x24,0x12,0x24,0x34,0x1c,0x00,0x00,0x10,0x00,0x11, +0xf0,0x11,0x10,0x7d,0xf0,0x55,0x10,0x7d,0xf0,0x54,0x00,0x57,0xfc,0x7d,0x00,0x13, +0xf8,0x14,0xa8,0x11,0x28,0x12,0x48,0x10,0xb0,0x00,0x00,0x08,0x00,0x08,0xf8,0x7f, +0x88,0x08,0x88,0x3e,0x88,0x22,0xf8,0x3e,0x88,0x22,0x88,0x3e,0xf8,0x08,0x88,0x7f, +0x88,0x08,0x88,0x09,0x08,0x0a,0x18,0x00,0x00,0x22,0x00,0x12,0x78,0x1f,0xc8,0x42, +0x48,0x2f,0x48,0x29,0x78,0x0f,0x48,0x19,0x48,0x1f,0x78,0x22,0x48,0x3f,0xc8,0x42, +0x48,0x42,0x88,0x43,0x18,0x00,0x00,0x29,0x50,0x29,0x50,0x2b,0xfc,0x29,0x50,0x3d, +0x50,0x21,0x70,0x21,0x00,0x39,0xf8,0x28,0x40,0x2f,0xfc,0x28,0xe0,0x29,0x50,0x2e, +0x4c,0x48,0x40,0x00,0x00,0x00,0x00,0x3f,0x80,0x24,0xfc,0x24,0x90,0x24,0x90,0x3f, +0x90,0x24,0x90,0x24,0x90,0x24,0x90,0x3f,0x90,0x00,0x10,0x00,0x10,0x00,0x10,0x00, +0x30,0x00,0x00,0x00,0xa0,0x78,0xa0,0x48,0xa8,0x4a,0xa8,0x79,0xb0,0x49,0xa0,0x48, +0xb0,0x79,0xa8,0x4e,0xa4,0x48,0xa4,0x79,0x20,0x01,0x24,0x02,0x24,0x04,0x1c,0x00, +0x00,0x00,0x40,0x7c,0x40,0x2b,0xfc,0x28,0x40,0x3b,0xf8,0x2a,0xa8,0x2a,0xa8,0x3b, +0xf8,0x2a,0x48,0x2c,0xa0,0x3a,0xa8,0x6a,0x84,0x0c,0x94,0x08,0x70,0x00,0x00,0x00, +0x00,0x3c,0xf8,0x24,0x80,0x24,0xf0,0x3c,0x80,0x24,0xf0,0x24,0x80,0x3f,0xfc,0x24, +0xc8,0x24,0xa8,0x24,0x90,0x24,0xb0,0x24,0xc8,0x4f,0x04,0x00,0x00,0x00,0x00,0x3d, +0xf0,0x25,0x10,0x25,0xf0,0x25,0x10,0x3d,0xf0,0x24,0x00,0x27,0xfc,0x3d,0x00,0x25, +0xf8,0x26,0xa8,0x25,0x28,0x26,0x48,0x4c,0xb0,0x00,0x00,0x08,0xa8,0x08,0xa8,0x09, +0xfc,0x3e,0xa8,0x2a,0xa8,0x2a,0xb8,0x2a,0x80,0x3e,0xfc,0x28,0x20,0x0d,0xfc,0x0a, +0x70,0x0e,0xa8,0x73,0x24,0x00,0x20,0x00,0x00,0x00,0x00,0x3d,0xf8,0x01,0x48,0x7f, +0x48,0x01,0xf8,0x3d,0x48,0x01,0xf8,0x3d,0x08,0x01,0xe8,0x3d,0xa8,0x25,0xa8,0x26, +0xe8,0x3e,0x08,0x00,0x18,0x00,0x00,0x01,0x50,0x3d,0x50,0x03,0xfc,0x7d,0x50,0x01, +0x50,0x3d,0x70,0x01,0x00,0x3d,0xf8,0x00,0x40,0x3f,0xfc,0x24,0xe0,0x25,0x50,0x3e, +0x4c,0x00,0x40,0x00,0x00,0x08,0x00,0x09,0xf8,0x3e,0x48,0x08,0x48,0x08,0x88,0x7e, +0xb0,0x09,0x00,0x28,0xf8,0x2e,0x88,0x28,0x88,0x38,0xf8,0x28,0x00,0x46,0x00,0x41, +0xfc,0x00,0x00,0x00,0xa0,0x3c,0xa0,0x24,0xa8,0x26,0xa8,0x3d,0xb0,0x09,0xa0,0x28, +0xb0,0x2d,0xa8,0x2a,0xa4,0x28,0xa4,0x2d,0x20,0x39,0x24,0x62,0x24,0x04,0x1c,0x00, +0x00,0x08,0x50,0x08,0x50,0x14,0x50,0x13,0x54,0x22,0xd4,0x5c,0xd8,0x08,0x50,0x7e, +0xd8,0x09,0x54,0x2a,0x54,0x1c,0x90,0x18,0x94,0x0f,0x14,0x72,0x0c,0x00,0x00,0x00, +0x00,0x0f,0xf0,0x08,0x00,0x0f,0xe0,0x08,0x00,0x0f,0xe0,0x08,0x00,0x7f,0xfc,0x09, +0x10,0x08,0x90,0x08,0xa0,0x08,0x40,0x0f,0x30,0x70,0x0c,0x00,0x00,0x00,0x00,0x7f, +0xfc,0x10,0x40,0x10,0x80,0x11,0xf8,0x11,0x08,0x11,0xf8,0x11,0x08,0x11,0xf8,0x11, +0x08,0x11,0xf8,0x10,0x90,0x33,0x08,0x0c,0x04,0x00,0x00,0x01,0x00,0x02,0x00,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x0f,0xfc,0x08,0x00,0x0f,0xfc,0x29, +0x24,0x24,0x94,0x24,0x04,0x40,0x18,0x00,0x00,0x08,0x40,0x08,0x40,0x7f,0x40,0x08, +0x40,0x3f,0xf8,0x2a,0x48,0x2a,0x48,0x3e,0x48,0x1c,0x48,0x1a,0x48,0x2a,0x88,0x48, +0x88,0x09,0x08,0x0a,0x30,0x00,0x00,0x10,0x40,0x11,0x40,0x11,0x78,0x7d,0x40,0x11, +0x40,0x17,0xfc,0x11,0x50,0x1d,0x48,0x72,0x54,0x14,0xd4,0x10,0x20,0x10,0x40,0x11, +0x80,0x3e,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x7f,0xfc,0x00,0x80,0x27,0xf0,0x24, +0x10,0x27,0xf0,0x24,0x10,0x27,0xf0,0x24,0x10,0x27,0xf0,0x20,0x00,0x3f,0xfc,0x00, +0x00,0x00,0x00,0x02,0x08,0x3d,0x08,0x24,0x90,0x24,0xa0,0x3f,0xf8,0x24,0x40,0x24, +0x40,0x3f,0xfc,0x24,0x40,0x24,0xa0,0x24,0x90,0x25,0x10,0x26,0x08,0x4c,0x04,0x00, +0x00,0x10,0x40,0x08,0x40,0x08,0x40,0x40,0x40,0x27,0xfc,0x24,0x44,0x04,0x44,0x10, +0x60,0x10,0x60,0x20,0xa0,0x20,0xa0,0x41,0x24,0x42,0x24,0x44,0x1c,0x00,0x00,0x00, +0x40,0x00,0x40,0x7c,0xa0,0x10,0xa0,0x11,0x10,0x12,0x48,0x7c,0x84,0x13,0x20,0x10, +0x40,0x11,0x88,0x1c,0x10,0x60,0x20,0x00,0xc0,0x07,0x00,0x00,0x00,0x04,0x30,0x19, +0xc0,0x77,0xfc,0x10,0x40,0x13,0xf8,0x1f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x06,0x60,0x38,0x18,0x00,0x00,0x08,0x20,0x09,0xfc,0x14, +0x20,0x12,0xf8,0x22,0x88,0x5c,0xf8,0x08,0x88,0x7e,0xf8,0x08,0x88,0x2a,0xf8,0x1d, +0xfc,0x18,0x50,0x0e,0x88,0x71,0x04,0x00,0x00,0x00,0x40,0x3c,0x40,0x27,0xfc,0x28, +0x40,0x2b,0xf8,0x32,0x48,0x2b,0xf8,0x26,0x48,0x27,0xf8,0x24,0xe0,0x39,0x50,0x22, +0x48,0x24,0x44,0x20,0x40,0x00,0x00,0x10,0x40,0x08,0x40,0x0b,0xf8,0x40,0x48,0x27, +0xfc,0x20,0x48,0x03,0xf8,0x10,0x40,0x13,0xf8,0x10,0x40,0x27,0xfc,0x20,0x40,0x40, +0x40,0x40,0x40,0x00,0x00,0x01,0x10,0x3c,0xa0,0x2b,0xfc,0x30,0xc8,0x2f,0x68,0x24, +0xb0,0x27,0x70,0x38,0xa8,0x23,0x24,0x21,0xc0,0x1f,0xf8,0x01,0x00,0x7f,0xfc,0x00, +0x00,0x00,0x00,0x08,0x90,0x08,0x90,0x08,0xa0,0x7f,0xfc,0x09,0x20,0x1b,0x20,0x1d, +0xf8,0x1b,0x20,0x2b,0x20,0x29,0xf8,0x49,0x20,0x09,0x20,0x09,0xfc,0x08,0x00,0x00, +0x00,0x10,0x10,0x12,0x20,0x11,0x78,0x7d,0x48,0x10,0x48,0x10,0x78,0x3b,0x40,0x35, +0x78,0x35,0x48,0x51,0x48,0x51,0x78,0x11,0x48,0x12,0x80,0x14,0x7c,0x00,0x00,0x00, +0x40,0x20,0x80,0x13,0xf0,0x12,0x10,0x02,0x10,0x03,0xf0,0x72,0x00,0x13,0xf0,0x12, +0x10,0x12,0x10,0x13,0xf0,0x18,0x00,0x26,0x00,0x41,0xfc,0x00,0x00,0x10,0x10,0x12, +0x20,0x19,0x78,0x25,0x48,0x24,0x48,0x78,0x78,0x13,0x40,0x7d,0x78,0x11,0x48,0x55, +0x48,0x39,0x78,0x31,0x00,0x1e,0x80,0x64,0x7c,0x00,0x00,0x00,0x80,0x00,0x80,0x0f, +0xfc,0x48,0x00,0x2b,0xf0,0x29,0x20,0x08,0xc0,0x1b,0xf8,0x2a,0x48,0x4b,0xf8,0x12, +0x48,0x13,0xf8,0x22,0x48,0x42,0x58,0x00,0x00,0x00,0x00,0x27,0xf8,0x11,0x20,0x10, +0xc0,0x03,0xf8,0x02,0x48,0x73,0xf8,0x12,0x48,0x13,0xf8,0x12,0x48,0x12,0x48,0x1a, +0x58,0x26,0x00,0x41,0xfc,0x00,0x00,0x00,0x00,0x17,0xfc,0x14,0x04,0x13,0xf8,0x7c, +0x40,0x11,0xc8,0x16,0x68,0x10,0xb0,0x13,0x30,0x1c,0x68,0x61,0xa4,0x06,0x20,0x00, +0x20,0x00,0xc0,0x00,0x00,0x08,0x00,0x08,0xf8,0x08,0x88,0x7e,0xc8,0x08,0xa8,0x1c, +0x88,0x1b,0xfc,0x1b,0x08,0x29,0x48,0x29,0x28,0x49,0x08,0x0b,0xfc,0x0a,0x08,0x08, +0x30,0x00,0x00,0x10,0x00,0x13,0xf8,0x12,0x08,0x7f,0xf8,0x12,0x48,0x12,0x48,0x13, +0xf8,0x1e,0x48,0x72,0x68,0x12,0x58,0x13,0xf8,0x12,0x08,0x13,0xf8,0x30,0x00,0x00, +0x00,0x12,0x00,0x12,0x78,0x12,0x48,0x7f,0xc8,0x12,0x78,0x1a,0x48,0x37,0xf8,0x36, +0x48,0x32,0x48,0x53,0x78,0x52,0xb0,0x14,0xb4,0x14,0x54,0x19,0x8c,0x00,0x00,0x08, +0x00,0x0b,0xf8,0x0a,0x48,0x12,0x48,0x12,0x48,0x32,0x48,0x53,0xf8,0x12,0x48,0x12, +0x48,0x12,0x48,0x12,0x48,0x12,0x48,0x13,0xf8,0x10,0x00,0x00,0x00,0x10,0x40,0x0b, +0xf8,0x08,0x40,0x41,0xf0,0x20,0x40,0x27,0xfc,0x01,0x10,0x11,0xf0,0x11,0x10,0x11, +0xf0,0x21,0x10,0x21,0xf0,0x41,0x90,0x46,0x08,0x00,0x00,0x08,0x00,0x0b,0xfc,0x08, +0x40,0x7e,0x40,0x08,0x40,0x18,0x80,0x1c,0xf8,0x1a,0x88,0x2b,0x88,0x29,0x88,0x4a, +0x88,0x0c,0x88,0x08,0xf8,0x08,0x00,0x00,0x00,0x00,0x40,0x20,0x40,0x10,0x40,0x10, +0x40,0x00,0x40,0x07,0xfc,0x70,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x18, +0x40,0x26,0x00,0x41,0xfc,0x00,0x00,0x04,0x40,0x7f,0xfc,0x05,0x40,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x0f,0xfc,0x08,0x00,0x0f,0xfc,0x29,0x24,0x24, +0x94,0x40,0x18,0x00,0x00,0x10,0x00,0x13,0xf8,0x26,0x48,0x69,0xb0,0x18,0x90,0x11, +0x68,0x2a,0x48,0x7f,0xf8,0x12,0x48,0x39,0x68,0x34,0xb0,0x35,0x90,0x52,0x28,0x14, +0x44,0x00,0x00,0x08,0x00,0x09,0xdc,0x15,0x54,0x13,0xdc,0x22,0x00,0x5c,0xf8,0x08, +0x00,0x7f,0xfc,0x08,0x40,0x2a,0x78,0x1c,0x88,0x18,0x08,0x0e,0x08,0x70,0x30,0x00, +0x00,0x10,0x40,0x10,0x40,0x13,0xf8,0x7c,0x40,0x11,0xf0,0x18,0xa0,0x37,0xfc,0x35, +0x10,0x33,0xf8,0x55,0x14,0x51,0xf0,0x11,0x10,0x11,0xf0,0x11,0x10,0x00,0x00,0x10, +0x80,0x0b,0xf0,0x0a,0x90,0x43,0xf0,0x20,0x80,0x2f,0xfc,0x02,0x10,0x13,0xf0,0x12, +0x10,0x13,0xf0,0x22,0x10,0x23,0xf0,0x43,0x10,0x4c,0x08,0x00,0x00,0x00,0x00,0x17, +0xfc,0x10,0x40,0x12,0x48,0x7d,0x48,0x11,0x50,0x10,0x40,0x17,0xfc,0x10,0x40,0x1c, +0x40,0x60,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x7f,0xfc,0x01, +0x00,0x1f,0xf0,0x00,0x00,0x7f,0xfc,0x42,0x84,0x5f,0xf4,0x12,0x90,0x1f,0xf0,0x02, +0x80,0x02,0x80,0x7f,0xfc,0x00,0x00,0x00,0x00,0x10,0x00,0x13,0xf8,0x10,0x40,0x13, +0xfc,0x7e,0x44,0x2b,0x5c,0x28,0x40,0x2f,0xfc,0x28,0x40,0x73,0xf8,0x5a,0xa8,0x16, +0xa8,0x22,0xa8,0x42,0xb8,0x00,0x00,0x10,0x40,0x10,0x40,0x14,0x40,0x64,0x40,0x1b, +0xf8,0x1a,0x48,0x26,0x48,0x7e,0x48,0x13,0xf8,0x1a,0x48,0x36,0x48,0x36,0x48,0x53, +0xf8,0x10,0x00,0x00,0x00,0x00,0x10,0x00,0xe0,0x0f,0x20,0x09,0x20,0x09,0x20,0x09, +0x20,0x09,0x20,0x09,0x20,0x09,0x10,0x09,0x10,0x11,0x10,0x11,0x08,0x21,0x08,0x41, +0x04,0x00,0x00,0x00,0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x1f,0xf0,0x01,0x00,0x01, +0x00,0x3f,0xf8,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x30,0x01,0x00,0x00, +0x00,0x08,0x40,0x08,0x40,0x14,0x40,0x12,0x78,0x22,0x88,0x5c,0x88,0x09,0x48,0x7e, +0x28,0x08,0x28,0x2a,0x08,0x1c,0x08,0x18,0x08,0x0e,0x08,0x70,0x30,0x00,0x00,0x10, +0x20,0x10,0x40,0x7f,0xf8,0x52,0x88,0x14,0xf8,0x28,0x88,0x3e,0xf8,0x68,0xfc,0x3e, +0x80,0x28,0xfc,0x3e,0x54,0x29,0xac,0x3f,0x44,0x22,0x18,0x00,0x00,0x01,0x00,0x7f, +0xfc,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x00,0x00,0x7f,0xfc,0x40,0x04,0x5f, +0xf4,0x01,0x00,0x01,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x08,0x18,0x0b,0xe0,0x0a, +0x40,0x12,0x40,0x12,0x40,0x33,0xfc,0x52,0x20,0x12,0x20,0x12,0x20,0x13,0x90,0x1c, +0x14,0x10,0x0c,0x17,0xfc,0x10,0x04,0x00,0x00,0x08,0x40,0x0f,0xfc,0x08,0x00,0x11, +0xf0,0x11,0x10,0x31,0xf0,0x50,0x00,0x17,0xfc,0x14,0x04,0x13,0xf8,0x10,0x40,0x10, +0x40,0x10,0x40,0x10,0xc0,0x00,0x00,0x08,0x80,0x08,0x80,0x08,0xf8,0x10,0x80,0x13, +0xf0,0x32,0x10,0x53,0xf0,0x12,0x10,0x13,0xf0,0x12,0x10,0x13,0xf0,0x11,0x20,0x16, +0x10,0x18,0x08,0x00,0x00,0x22,0x08,0x12,0x48,0x14,0x48,0x7f,0x48,0x09,0x48,0x7f, +0x48,0x48,0x48,0x7f,0x48,0x59,0x48,0x19,0x48,0x2e,0x48,0x48,0x08,0x08,0x08,0x08, +0x18,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0xf8,0x01,0x00,0x1f,0xf0,0x10,0x10,0x1f, +0xf0,0x10,0x10,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x04,0x40,0x18,0x30,0x60,0x08,0x00, +0x00,0x00,0x00,0x0f,0xe0,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00,0x00,0x3f,0xf8,0x01, +0x00,0x01,0x00,0x1f,0xf0,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00, +0x00,0x11,0xf0,0x11,0x10,0x11,0xf0,0x7d,0x10,0x11,0xf0,0x10,0x00,0x17,0xfc,0x10, +0x40,0x1e,0x78,0x62,0x40,0x03,0x40,0x04,0xc0,0x08,0x3c,0x00,0x00,0x01,0x00,0x01, +0x00,0x7f,0xfc,0x40,0x04,0x40,0x04,0x1f,0xf0,0x01,0x00,0x09,0x00,0x09,0xf0,0x09, +0x00,0x09,0x00,0x15,0x00,0x23,0x00,0x40,0xfc,0x00,0x00,0x01,0x00,0x01,0x00,0x3f, +0xf8,0x08,0x20,0x04,0x40,0x7f,0xfc,0x41,0x04,0x5f,0xf4,0x11,0x10,0x11,0x10,0x11, +0x10,0x11,0x10,0x11,0x60,0x01,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x1f,0xfc,0x10, +0x30,0x13,0xc0,0x12,0x40,0x12,0x40,0x13,0xfc,0x12,0x20,0x12,0x20,0x13,0x90,0x1c, +0x14,0x27,0xec,0x40,0x04,0x00,0x00,0x00,0x80,0x00,0x80,0x1f,0xfc,0x10,0x18,0x1e, +0xe0,0x12,0x20,0x14,0x20,0x1f,0xfc,0x12,0x20,0x1a,0x20,0x14,0xf8,0x26,0x00,0x29, +0x80,0x50,0x7c,0x00,0x00,0x00,0x08,0x00,0x30,0x7b,0xc0,0x08,0x40,0x10,0x40,0x10, +0x40,0x3f,0xfc,0x08,0x40,0x48,0x40,0x28,0x40,0x13,0xf8,0x18,0x00,0x26,0x00,0x41, +0xfc,0x00,0x00,0x08,0x40,0x04,0x40,0x04,0x80,0x3f,0xf0,0x01,0x10,0x3f,0xf0,0x21, +0x00,0x3f,0xf8,0x23,0x08,0x03,0x08,0x05,0x08,0x19,0x70,0x61,0x00,0x01,0x00,0x00, +0x00,0x11,0x10,0x10,0x90,0x10,0xa0,0x1b,0xf8,0x34,0x48,0x37,0xf8,0x32,0x40,0x53, +0xfc,0x12,0xc4,0x10,0xc4,0x11,0x44,0x12,0x58,0x14,0x40,0x10,0x40,0x00,0x00,0x10, +0x18,0x11,0xe0,0x11,0x20,0x7d,0x20,0x11,0x20,0x11,0xfc,0x11,0x20,0x1d,0x20,0x71, +0x20,0x11,0xd0,0x16,0x14,0x10,0x0c,0x17,0xfc,0x30,0x04,0x00,0x00,0x10,0x00,0x17, +0x18,0x11,0xe0,0x7a,0x20,0x12,0x20,0x17,0x20,0x11,0xfc,0x1d,0x20,0x75,0x20,0x12, +0x20,0x12,0xf8,0x15,0x00,0x18,0xc0,0x30,0x3c,0x00,0x00,0x10,0x00,0x11,0xf0,0x11, +0x10,0x7d,0xf0,0x11,0x10,0x11,0xf0,0x10,0x00,0x1f,0xfc,0x70,0x40,0x12,0x78,0x12, +0x40,0x13,0x40,0x14,0xc0,0x38,0x3c,0x00,0x00,0x09,0x10,0x08,0x90,0x08,0xa0,0x7f, +0xf8,0x08,0x48,0x1b,0xf8,0x1e,0x40,0x1b,0xfc,0x2a,0xc4,0x28,0xc4,0x49,0x44,0x0a, +0x58,0x0c,0x40,0x08,0x40,0x00,0x00,0x10,0x00,0x0b,0xfc,0x08,0x20,0x40,0x20,0x20, +0x20,0x20,0x20,0x00,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x10,0x20,0x10,0x20,0x20, +0x20,0x20,0x60,0x00,0x00,0x00,0x20,0x7e,0x20,0x13,0xfc,0x12,0x04,0x12,0x00,0x21, +0xfc,0x3c,0x20,0x64,0xa0,0x24,0xb8,0x24,0xa0,0x24,0xa0,0x3d,0xa0,0x02,0x60,0x04, +0x1c,0x00,0x00,0x10,0x40,0x10,0x40,0x10,0x7c,0x7c,0x40,0x09,0xf8,0x09,0x08,0x11, +0xf8,0x19,0x08,0x35,0xf8,0x55,0x08,0x11,0xf8,0x10,0x90,0x11,0x08,0x16,0x04,0x00, +0x00,0x02,0x00,0x0d,0xf8,0x39,0x08,0x09,0x08,0x09,0xf8,0x7e,0x00,0x09,0xf8,0x1c, +0x40,0x1a,0x40,0x2b,0xf8,0x48,0x40,0x08,0x40,0x0b,0xfc,0x08,0x00,0x00,0x00,0x10, +0x40,0x10,0x40,0x17,0xfc,0x65,0x10,0x28,0xa0,0x13,0xfc,0x2a,0x44,0x7c,0x40,0x13, +0xf8,0x5a,0x48,0x56,0x48,0x56,0x48,0x52,0x58,0x10,0x40,0x00,0x00,0x08,0x00,0x13, +0x8c,0x3c,0xf0,0x25,0x10,0x35,0x10,0x2f,0x90,0x2c,0xfc,0x7e,0x90,0x26,0x90,0x2d, +0x10,0x2d,0x7c,0x2e,0x80,0x24,0x60,0x4c,0x1c,0x00,0x00,0x00,0x00,0x3c,0x00,0x01, +0xfc,0x7e,0x20,0x00,0x20,0x3c,0x20,0x00,0x20,0x3c,0x20,0x00,0x20,0x3c,0x20,0x24, +0x20,0x24,0x20,0x3c,0x20,0x00,0x60,0x00,0x00,0x00,0x20,0x3c,0x20,0x01,0xfc,0x7e, +0x88,0x00,0x50,0x3d,0xfc,0x01,0x24,0x3e,0xf8,0x00,0xa8,0x3c,0xa8,0x24,0xa8,0x24, +0xb8,0x24,0x20,0x3c,0x20,0x00,0x00,0x00,0x20,0x3e,0x20,0x23,0xfc,0x22,0x88,0x3e, +0x50,0x09,0xfc,0x09,0x24,0x2f,0xf8,0x28,0xa8,0x28,0xa8,0x28,0xa8,0x2e,0xb8,0x38, +0x20,0x60,0x20,0x00,0x00,0x00,0x18,0x27,0xe0,0x14,0x40,0x17,0xfc,0x04,0x40,0x07, +0xfc,0x04,0x40,0x77,0xf8,0x1a,0x48,0x1a,0x48,0x12,0x70,0x18,0x40,0x26,0x00,0x41, +0xfc,0x00,0x00,0x03,0x00,0x3c,0x78,0x24,0x48,0x24,0x50,0x24,0x50,0x3f,0xe0,0x24, +0x50,0x24,0x48,0x22,0x44,0x3a,0xc4,0x61,0xe4,0x00,0xd8,0x7e,0x40,0x00,0x40,0x00, +0x00,0x11,0x00,0x0a,0x78,0x7f,0xc8,0x0c,0x50,0x3f,0x50,0x2d,0x60,0x33,0x50,0x3f, +0x48,0x3f,0x44,0x04,0x44,0x7f,0xe4,0x0a,0x58,0x11,0x40,0x20,0x40,0x00,0x00,0x08, +0x00,0x09,0xfc,0x14,0x20,0x12,0x20,0x22,0x20,0x5c,0x20,0x08,0x20,0x7e,0x20,0x08, +0x20,0x2a,0x20,0x1c,0x20,0x18,0x20,0x0e,0x20,0x70,0x60,0x00,0x00,0x00,0x00,0x07, +0xc0,0x24,0x48,0x27,0xc8,0x27,0xc8,0x24,0x48,0x27,0xc8,0x3e,0xf8,0x02,0x80,0x7e, +0xfc,0x12,0x90,0x12,0x90,0x22,0x90,0x42,0x90,0x00,0x00,0x10,0x00,0x0b,0xf8,0x0a, +0x08,0x42,0x08,0x23,0xf8,0x22,0x80,0x02,0x80,0x02,0x98,0x12,0xe0,0x12,0x80,0x24, +0x80,0x24,0x84,0x48,0x84,0x50,0x7c,0x00,0x00,0x10,0x40,0x10,0x40,0x17,0xfc,0x7d, +0x10,0x10,0xa0,0x13,0xf8,0x12,0x48,0x1f,0xf8,0x72,0x48,0x12,0xe8,0x12,0xa8,0x12, +0xe8,0x12,0x08,0x32,0x18,0x00,0x00,0x10,0x00,0x17,0xf8,0x10,0x88,0x7f,0xf8,0x10, +0x88,0x17,0xf8,0x11,0x20,0x1f,0xf8,0x76,0x40,0x13,0xf0,0x12,0x40,0x13,0xf0,0x12, +0x40,0x33,0xfc,0x00,0x00,0x08,0x40,0x08,0x40,0x7f,0x40,0x22,0x40,0x14,0x7c,0x7f, +0x90,0x49,0x90,0x7f,0x50,0x49,0x50,0x5d,0x20,0x55,0x20,0x5d,0x50,0x41,0x88,0x43, +0x04,0x00,0x00,0x10,0x40,0x08,0x40,0x0f,0xfc,0x42,0x10,0x21,0x20,0x27,0xf8,0x04, +0x88,0x17,0xf8,0x14,0x88,0x15,0xe8,0x25,0x28,0x25,0xe8,0x44,0x08,0x44,0x18,0x00, +0x00,0x10,0x80,0x10,0x80,0x20,0x80,0x7c,0xf8,0x45,0x08,0x45,0x08,0x46,0x88,0x7c, +0x48,0x44,0x48,0x44,0x08,0x44,0x08,0x7c,0x08,0x00,0x08,0x00,0x30,0x00,0x00,0x08, +0x40,0x08,0x40,0x1f,0xfc,0x14,0xa0,0x23,0x10,0x41,0x00,0x1f,0xf0,0x11,0x10,0x11, +0x10,0x1f,0xf0,0x11,0x10,0x11,0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x00,0x40,0x20, +0x40,0x17,0xfc,0x10,0xa0,0x03,0xf8,0x02,0x48,0x73,0xf8,0x12,0x48,0x12,0xe8,0x12, +0xa8,0x12,0xe8,0x1a,0x18,0x26,0x00,0x41,0xfc,0x00,0x00,0x10,0x40,0x10,0x40,0x1b, +0xfc,0x25,0x10,0x24,0xa0,0x7b,0xf8,0x12,0x48,0x7f,0xf8,0x12,0x48,0x56,0xe8,0x3a, +0xa8,0x32,0xe8,0x1e,0x08,0x62,0x18,0x00,0x00,0x10,0x00,0x0f,0xf8,0x08,0x88,0x40, +0x88,0x27,0xf8,0x24,0x40,0x07,0xf8,0x10,0x88,0x14,0xc8,0x13,0xb8,0x22,0xa8,0x24, +0xc8,0x40,0x88,0x43,0x30,0x00,0x00,0x08,0x18,0x08,0xe0,0x7f,0x80,0x08,0xfc,0x0e, +0x90,0x78,0x90,0x09,0x10,0x1a,0x10,0x00,0x00,0x0f,0xe0,0x08,0x20,0x08,0x20,0x0f, +0xe0,0x00,0x00,0x00,0x00,0x11,0x20,0x11,0x20,0x2f,0xe0,0x4b,0x20,0x0a,0xfc,0x1f, +0xc8,0x10,0x48,0x37,0xa8,0x54,0xa8,0x17,0xb0,0x14,0x90,0x17,0xb0,0x14,0xc8,0x15, +0x84,0x00,0x00,0x11,0x20,0x11,0x20,0x17,0xe0,0x7b,0x20,0x12,0xfc,0x1f,0xc8,0x10, +0x48,0x1f,0xa8,0x74,0xa8,0x17,0xb0,0x14,0x90,0x17,0xb0,0x14,0xc8,0x35,0x84,0x00, +0x00,0x11,0x20,0x11,0x20,0x7f,0xe0,0x11,0x20,0x7e,0xbc,0x57,0xc8,0x7c,0x68,0x57, +0xa8,0x7e,0xa8,0x13,0x90,0x7e,0x90,0x13,0xb0,0x12,0xc8,0x12,0x84,0x00,0x00,0x00, +0x40,0x22,0x40,0x12,0x40,0x13,0xf8,0x04,0x40,0x08,0x40,0x7f,0xfc,0x10,0xc0,0x10, +0xa0,0x11,0x10,0x12,0x08,0x18,0x08,0x26,0x00,0x41,0xfc,0x00,0x00,0x08,0x20,0x08, +0x20,0x14,0xa0,0x12,0xa0,0x22,0xf8,0x5c,0xa0,0x09,0x20,0x7f,0xfc,0x08,0x20,0x2a, +0x60,0x1c,0x50,0x18,0x90,0x0f,0x08,0x72,0x04,0x00,0x00,0x02,0x80,0x02,0x80,0x02, +0x80,0x1f,0xf0,0x12,0x90,0x12,0x90,0x1f,0xf0,0x12,0x90,0x12,0x90,0x7f,0xfc,0x00, +0x00,0x04,0x40,0x18,0x30,0x60,0x08,0x00,0x00,0x00,0x40,0x10,0x40,0x17,0xfc,0x10, +0x40,0x7d,0xf0,0x11,0x10,0x11,0xf0,0x11,0x10,0x11,0xf0,0x1d,0x10,0x61,0xf0,0x07, +0xfc,0x01,0x90,0x06,0x08,0x00,0x00,0x00,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01, +0x00,0x3f,0xf8,0x01,0x00,0x03,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x10, +0x10,0x60,0x0c,0x00,0x00,0x00,0x00,0x1f,0xf8,0x10,0x08,0x1f,0xf8,0x12,0x48,0x12, +0x40,0x1f,0xf8,0x12,0x40,0x1f,0xfc,0x12,0x48,0x12,0x50,0x22,0x20,0x23,0x90,0x5c, +0x0c,0x00,0x00,0x00,0x80,0x00,0x80,0x1f,0xfc,0x10,0x80,0x10,0x80,0x10,0xfc,0x10, +0x80,0x10,0x80,0x17,0xf8,0x14,0x08,0x24,0x08,0x24,0x08,0x47,0xf8,0x00,0x00,0x00, +0x00,0x10,0x38,0x0b,0xc0,0x08,0x40,0x47,0xfc,0x20,0xa0,0x21,0x10,0x02,0x88,0x14, +0x84,0x12,0xd0,0x12,0xa8,0x24,0xa4,0x28,0xa4,0x40,0x80,0x41,0x80,0x00,0x00,0x10, +0x20,0x13,0xfc,0x16,0xf8,0x66,0xa8,0x2a,0xf8,0x1a,0xa8,0x26,0xf8,0x7e,0x20,0x13, +0xfc,0x3a,0xb4,0x37,0x2c,0x36,0xf8,0x52,0x20,0x15,0xfc,0x00,0x00,0x06,0x88,0x38, +0x88,0x08,0x88,0x08,0x88,0x7f,0xfc,0x08,0x88,0x08,0x88,0x08,0x88,0x3e,0xf8,0x22, +0x88,0x22,0x88,0x22,0x88,0x3e,0xf8,0x00,0x00,0x00,0x00,0x00,0x20,0x3e,0x20,0x22, +0x20,0x22,0x3c,0x3e,0x20,0x22,0x20,0x3e,0x20,0x22,0xf8,0x22,0x88,0x3e,0x88,0x14, +0x88,0x12,0x88,0x22,0xf8,0x40,0x00,0x00,0x00,0x08,0x00,0x08,0xf8,0x7f,0x00,0x08, +0x00,0x3e,0x00,0x2b,0xfc,0x3e,0x20,0x2a,0x20,0x3e,0x20,0x08,0x50,0x7f,0x48,0x08, +0x78,0x09,0xc4,0x08,0x04,0x00,0x00,0x08,0x00,0x09,0xfc,0x7f,0x20,0x08,0x40,0x3e, +0xf8,0x22,0x88,0x3e,0xf8,0x22,0x88,0x3e,0xf8,0x22,0x88,0x7f,0xf8,0x0c,0x50,0x12, +0x88,0x63,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0xf8,0x01,0x00,0x0f,0xe0,0x08, +0x20,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x24,0x88,0x22,0x44,0x42, +0x44,0x00,0x00,0x08,0x00,0x0b,0xf8,0x08,0x00,0x10,0x00,0x10,0x00,0x37,0xfc,0x50, +0x80,0x10,0x80,0x10,0xa0,0x11,0x10,0x11,0x08,0x12,0x38,0x1f,0xc4,0x10,0x04,0x00, +0x00,0x00,0x00,0x3f,0x70,0x21,0x50,0x21,0x50,0x3f,0x54,0x2a,0x94,0x2a,0x8c,0x3f, +0xf8,0x2a,0x48,0x3f,0x50,0x2c,0x30,0x4a,0x30,0x52,0xc8,0x23,0x04,0x00,0x00,0x20, +0x00,0x1f,0xb8,0x18,0xa8,0x08,0xa8,0x4f,0xa8,0x2a,0xac,0x2a,0xc4,0x0f,0xfc,0x1a, +0xa8,0x1a,0xa8,0x2f,0xd0,0x2b,0x30,0x54,0xc8,0x48,0x84,0x00,0x00,0x00,0x00,0x3f, +0xf8,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x3f,0xf8,0x21,0x08,0x21,0x08,0x21, +0x08,0x21,0x08,0x21,0x08,0x3f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x01, +0x00,0x7f,0xfc,0x41,0x04,0x5d,0x74,0x01,0x00,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x11, +0x10,0x1f,0xf4,0x01,0x04,0x00,0xfc,0x00,0x00,0x00,0x30,0x00,0xc0,0x3f,0x00,0x01, +0x00,0x1f,0xf0,0x11,0x10,0x11,0x10,0x11,0x10,0x1f,0xf0,0x03,0x40,0x05,0x20,0x09, +0x24,0x11,0x04,0x60,0xfc,0x00,0x00,0x00,0x40,0x00,0x40,0x78,0x40,0x48,0x40,0x4b, +0xf8,0x48,0x40,0x48,0x40,0x48,0x40,0x48,0x40,0x78,0x40,0x00,0x40,0x00,0x40,0x0f, +0xfc,0x00,0x00,0x00,0x00,0x00,0x40,0x10,0x48,0x13,0xf8,0x10,0x50,0x7c,0x60,0x17, +0xfc,0x10,0x40,0x11,0xf8,0x17,0x08,0x1d,0xf8,0x61,0x08,0x01,0x08,0x01,0xf8,0x00, +0x00,0x00,0x00,0x30,0x40,0x08,0xa0,0x61,0x10,0x17,0xfc,0x00,0x40,0x0f,0xfc,0x11, +0x50,0x26,0x48,0x21,0xc0,0x01,0x00,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00, +0x00,0x08,0x00,0x09,0xfc,0x08,0x20,0x08,0x20,0x7e,0x20,0x12,0x40,0x12,0x40,0x12, +0xf8,0x3c,0x88,0x25,0x88,0x06,0x88,0x0a,0x88,0x30,0xf8,0x00,0x00,0x00,0x00,0x00, +0x00,0x1f,0xf8,0x10,0x08,0x1f,0xf8,0x10,0x88,0x17,0xf0,0x10,0xa0,0x1f,0xfc,0x11, +0xf0,0x17,0x10,0x19,0xf0,0x21,0x10,0x41,0xf0,0x00,0x00,0x00,0x00,0x10,0x40,0x10, +0x40,0x23,0xf8,0x48,0x40,0x08,0x40,0x17,0xfc,0x10,0x40,0x32,0x40,0x52,0x78,0x12, +0x40,0x12,0x40,0x15,0x40,0x18,0xc0,0x10,0x3c,0x00,0x00,0x00,0x40,0x0c,0x40,0x02, +0x40,0x00,0x40,0x18,0x40,0x04,0x40,0x00,0x40,0x00,0x7c,0x07,0xc0,0x78,0x40,0x00, +0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x08,0x20,0x08,0x20,0x08,0x20,0x7f, +0x20,0x08,0x20,0x19,0xfc,0x1c,0x20,0x1a,0x20,0x2a,0x20,0x28,0x20,0x48,0x20,0x08, +0x20,0x0b,0xfc,0x08,0x00,0x00,0x00,0x10,0x40,0x08,0x40,0x0f,0xfc,0x44,0x90,0x27, +0xfc,0x24,0x90,0x04,0xf0,0x14,0x00,0x17,0xf8,0x15,0x10,0x24,0xa0,0x28,0x40,0x49, +0xb0,0x56,0x0c,0x00,0x00,0x0e,0x90,0x02,0x90,0x24,0x64,0x14,0x44,0x08,0x28,0x1f, +0xf0,0x20,0x08,0x4f,0xe4,0x08,0x20,0x0f,0xe0,0x04,0x40,0x04,0x80,0x3f,0xf8,0x00, +0x00,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x07,0xe0,0x18,0x80,0x7f, +0xf0,0x11,0x10,0x11,0x10,0x1f,0xf0,0x03,0x00,0x05,0x44,0x19,0x24,0x60,0xfc,0x00, +0x00,0x00,0x40,0x3c,0x48,0x27,0xf8,0x24,0x50,0x3c,0x50,0x27,0xfc,0x3c,0x40,0x24, +0xf8,0x25,0x88,0x3e,0xf8,0x18,0x88,0x14,0x88,0x24,0xf8,0x40,0x00,0x00,0x00,0x00, +0x80,0x20,0x80,0x11,0x40,0x11,0x20,0x02,0x10,0x0f,0xf8,0x70,0x84,0x1f,0xf8,0x12, +0xa0,0x12,0x90,0x14,0x88,0x19,0x88,0x26,0x00,0x41,0xfc,0x00,0x00,0x08,0x00,0x08, +0x78,0x3f,0x48,0x09,0x50,0x0a,0x50,0x7f,0xe0,0x08,0x50,0x1f,0x48,0x31,0x44,0x5f, +0x44,0x11,0x64,0x11,0x58,0x1f,0x40,0x00,0x40,0x00,0x00,0x08,0x20,0x08,0x20,0x15, +0xfc,0x13,0x50,0x23,0xfc,0x7d,0x50,0x09,0x70,0x7f,0x00,0x09,0xf8,0x2b,0x48,0x1d, +0x50,0x1a,0x20,0x0e,0x50,0x75,0x8c,0x00,0x00,0x00,0x18,0x7f,0xe0,0x11,0x20,0x11, +0x20,0x11,0x20,0x21,0xfc,0x3d,0x20,0x65,0x20,0x25,0x10,0x25,0xd0,0x27,0x14,0x3c, +0x0c,0x01,0xfc,0x00,0x04,0x00,0x00,0x00,0x00,0x7f,0xfc,0x11,0x00,0x11,0x00,0x11, +0xfc,0x3d,0x20,0x25,0x20,0x65,0x38,0x25,0x28,0x25,0x28,0x26,0x48,0x3e,0x48,0x04, +0x88,0x09,0x30,0x00,0x00,0x08,0x00,0x09,0xf8,0x7e,0x88,0x12,0x48,0x12,0x50,0x3c, +0x20,0x06,0xd0,0x39,0x0c,0x01,0x00,0x3f,0xf0,0x01,0x10,0x02,0x10,0x0c,0x10,0x30, +0xe0,0x00,0x00,0x00,0x80,0x00,0x80,0x1f,0xfc,0x12,0x20,0x1f,0xfc,0x12,0x20,0x13, +0xe0,0x10,0x00,0x17,0xf0,0x12,0x20,0x11,0x40,0x20,0xc0,0x23,0x30,0x5c,0x0c,0x00, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x08, +0x00,0x09,0xf8,0x08,0x88,0x08,0x88,0x7e,0x88,0x12,0x48,0x12,0x50,0x12,0x50,0x3c, +0x20,0x24,0x20,0x06,0x50,0x0a,0x88,0x31,0x04,0x00,0x00,0x00,0x00,0x08,0x00,0x08, +0x00,0x7f,0xf8,0x12,0x88,0x12,0x50,0x3c,0x20,0x04,0xd0,0x1b,0x0c,0x61,0x00,0x04, +0x90,0x24,0x88,0x24,0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x08,0x08,0x0f,0xe8,0x09, +0x28,0x11,0xa8,0x12,0x68,0x3f,0xe8,0x51,0x28,0x11,0x28,0x17,0xe8,0x11,0x28,0x11, +0x28,0x11,0xc8,0x1e,0x08,0x10,0x18,0x00,0x00,0x01,0x00,0x11,0x10,0x09,0x20,0x7f, +0xfc,0x40,0x04,0x4f,0xe4,0x08,0x20,0x08,0x20,0x0f,0xe0,0x02,0x80,0x02,0x80,0x04, +0x84,0x18,0x84,0x60,0x7c,0x00,0x00,0x01,0x00,0x01,0x00,0x03,0xf0,0x0c,0x20,0x32, +0x40,0x01,0x80,0x03,0x40,0x0c,0x30,0x73,0x0c,0x00,0x80,0x00,0x00,0x07,0x00,0x00, +0xc0,0x00,0x20,0x00,0x00,0x00,0x40,0x00,0x40,0x27,0xfc,0x10,0x40,0x13,0xf8,0x02, +0x48,0x0b,0xf8,0x0a,0x48,0x13,0xf8,0x10,0xe0,0x21,0x50,0x22,0x48,0x2c,0x44,0x00, +0x40,0x00,0x00,0x00,0x00,0x3f,0xf8,0x01,0x08,0x01,0x08,0x01,0x08,0x01,0x08,0x02, +0x08,0x02,0x08,0x02,0x08,0x04,0x08,0x04,0x08,0x08,0x08,0x10,0x08,0x20,0x30,0x00, +0x00,0x00,0x80,0x1f,0xfc,0x10,0x80,0x17,0xf0,0x10,0x90,0x1f,0xfc,0x10,0x90,0x17, +0xf0,0x10,0x00,0x17,0xf0,0x24,0x10,0x24,0x10,0x47,0xf0,0x00,0x00,0x00,0x00,0x01, +0x10,0x11,0x10,0x17,0xfc,0x11,0x10,0x7d,0x50,0x10,0xa0,0x11,0x10,0x17,0xfc,0x14, +0x00,0x1b,0xf8,0x62,0x08,0x02,0x08,0x03,0xf8,0x00,0x00,0x00,0x00,0x00,0x40,0x13, +0xfc,0x12,0x40,0x13,0xf8,0x7e,0x48,0x13,0xfc,0x12,0x48,0x13,0xf8,0x12,0x00,0x1f, +0xf8,0x65,0x08,0x05,0x08,0x09,0xf8,0x10,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x7f, +0xfc,0x04,0x40,0x1f,0xf0,0x64,0x0c,0x07,0xc0,0x04,0x00,0x07,0xc0,0x04,0x00,0x7f, +0xfc,0x02,0x80,0x04,0x60,0x3f,0x90,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x40, +0x04,0x00,0x00,0x7f,0xfc,0x04,0x00,0x04,0x00,0x0f,0xf0,0x0c,0x10,0x14,0x10,0x24, +0x10,0x47,0xf0,0x00,0x00,0x00,0x00,0x01,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x08,0x00,0x0f,0xfc,0x08,0x00,0x0f,0xfc,0x22,0x24,0x22,0x24,0x3f, +0xe4,0x00,0x38,0x00,0x00,0x00,0x40,0x11,0xf0,0x11,0x10,0x55,0xf0,0x55,0x10,0x55, +0xf0,0x55,0x00,0x55,0xfc,0x55,0x00,0x7d,0xfc,0x43,0x54,0x02,0xac,0x04,0x84,0x08, +0x18,0x00,0x00,0x10,0x80,0x10,0x80,0x10,0xfc,0x18,0x80,0x37,0xf8,0x36,0x08,0x33, +0xf8,0x52,0x08,0x13,0xf8,0x10,0x40,0x1f,0xfc,0x10,0x40,0x10,0x40,0x10,0x40,0x00, +0x00,0x10,0x00,0x11,0xe0,0x11,0x20,0x7d,0x24,0x11,0x24,0x12,0x1c,0x14,0x00,0x1f, +0xf0,0x71,0x10,0x11,0x20,0x10,0xc0,0x10,0xc0,0x13,0x30,0x3c,0x0c,0x00,0x00,0x11, +0x10,0x11,0x10,0x17,0xfc,0x7d,0x10,0x11,0x50,0x10,0xa0,0x1b,0x18,0x15,0xf4,0x30, +0x00,0x53,0xf8,0x12,0x08,0x12,0x08,0x13,0xf8,0x30,0x00,0x00,0x00,0x01,0x00,0x01, +0x00,0x7f,0xfc,0x01,0x00,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x03, +0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x00,0x00,0x10,0xa0,0x10,0xa0,0x10, +0xa8,0x7e,0xa8,0x11,0xb0,0x39,0xa0,0x34,0xb0,0x35,0xa8,0x56,0xa4,0x50,0xa4,0x11, +0x20,0x11,0x24,0x12,0x24,0x14,0x1c,0x00,0x00,0x10,0x40,0x10,0x40,0x13,0xfc,0x7c, +0x40,0x11,0xf8,0x10,0x40,0x3f,0xfc,0x34,0x90,0x37,0xfc,0x51,0x10,0x52,0x90,0x14, +0x90,0x10,0x10,0x10,0x30,0x00,0x00,0x10,0x40,0x10,0x40,0x13,0xfc,0x7c,0x40,0x13, +0xf8,0x12,0x48,0x3b,0xf8,0x36,0x48,0x37,0xf8,0x50,0xe0,0x51,0x50,0x16,0x48,0x10, +0x44,0x10,0x40,0x00,0x00,0x01,0x00,0x21,0x00,0x11,0xfc,0x02,0x48,0x0a,0x50,0x14, +0xa0,0x21,0x10,0x22,0x0c,0x1f,0xf0,0x12,0x90,0x12,0x90,0x12,0x90,0x7f,0xfc,0x00, +0x00,0x00,0x00,0x11,0x00,0x09,0x00,0x09,0x00,0x43,0xf8,0x23,0x08,0x25,0xe8,0x0a, +0x88,0x17,0xf8,0x10,0x88,0x12,0xa8,0x22,0xa8,0x23,0xe8,0x42,0x28,0x40,0x30,0x00, +0x00,0x10,0x00,0x0b,0xf0,0x0a,0x10,0x43,0xf0,0x22,0x10,0x23,0xf0,0x00,0x00,0x1f, +0xfc,0x12,0x00,0x23,0xf8,0x24,0xa8,0x49,0x28,0x42,0x48,0x40,0xb0,0x00,0x00,0x10, +0x40,0x08,0x40,0x0f,0xfc,0x40,0x40,0x23,0xf8,0x20,0x40,0x07,0xfc,0x08,0x90,0x0f, +0xfc,0x11,0x10,0x12,0x90,0x24,0x90,0x28,0x10,0x20,0x30,0x00,0x00,0x08,0x00,0x09, +0xfc,0x08,0x20,0x0a,0x20,0x2a,0x20,0x2c,0x20,0x28,0x20,0x48,0x20,0x08,0x20,0x0c, +0x20,0x12,0x20,0x12,0x20,0x20,0x20,0x40,0x60,0x00,0x00,0x11,0xc8,0x10,0x48,0x16, +0xb0,0x15,0xa4,0x39,0xf8,0x32,0x08,0x35,0xf4,0x51,0x10,0x11,0xf0,0x19,0x10,0x14, +0x90,0x24,0xa0,0x27,0xfc,0x40,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x11,0x10,0x09, +0x10,0x09,0x20,0x01,0x00,0x3f,0xf0,0x00,0x10,0x00,0x10,0x1f,0xf0,0x00,0x10,0x00, +0x10,0x3f,0xf0,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x0f,0xfc,0x48,0x00,0x2f, +0xf8,0x28,0x00,0x0b,0xf0,0x1a,0x10,0x2a,0x10,0x4b,0xf0,0x12,0x20,0x11,0x20,0x21, +0x40,0x4f,0xfc,0x00,0x00,0x10,0x40,0x10,0x40,0x13,0xf8,0x7c,0x40,0x05,0xf0,0x08, +0x40,0x0b,0xfc,0x14,0x90,0x37,0xfc,0x51,0x90,0x12,0x50,0x14,0x50,0x10,0x10,0x10, +0x30,0x00,0x00,0x10,0x40,0x10,0x40,0x1f,0xfc,0x28,0xa0,0x45,0x10,0x1f,0xf0,0x01, +0x00,0x3f,0xf8,0x00,0x40,0x7f,0xfc,0x08,0x40,0x04,0x40,0x04,0x40,0x00,0xc0,0x00, +0x00,0x08,0x40,0x08,0x40,0x1f,0xfc,0x14,0xa0,0x23,0x90,0x42,0x80,0x04,0x40,0x1f, +0xf0,0x60,0x0c,0x0f,0xe0,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x08, +0x40,0x08,0x40,0x1f,0xfc,0x14,0xa0,0x23,0x10,0x5f,0xf8,0x10,0x08,0x17,0xe8,0x10, +0x08,0x13,0xc8,0x12,0x48,0x12,0x48,0x13,0xc8,0x10,0x18,0x00,0x00,0x10,0x40,0x57, +0xfc,0x36,0x40,0x3b,0xf8,0x12,0x48,0x7f,0xfc,0x12,0x48,0x1b,0xf8,0x36,0x00,0x37, +0xf8,0x53,0x08,0x15,0x08,0x15,0xf8,0x19,0x00,0x00,0x00,0x08,0x20,0x08,0x20,0x0b, +0xfc,0x72,0x40,0x14,0x50,0x0c,0x98,0x13,0xe4,0x7e,0x50,0x0c,0x50,0x2a,0x50,0x2a, +0x90,0x28,0x94,0x49,0x14,0x0a,0x0c,0x00,0x00,0x00,0x08,0x7f,0xc8,0x08,0x48,0x0c, +0x48,0x12,0x48,0x7d,0x48,0x09,0x48,0x08,0x48,0x7f,0x48,0x08,0x48,0x08,0x48,0x0f, +0x08,0x70,0x08,0x00,0x18,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x60,0x0f,0x80,0x01, +0x00,0x7f,0xfc,0x09,0x20,0x0f,0xe0,0x09,0x20,0x0f,0xe0,0x01,0x00,0x3f,0xf8,0x01, +0x00,0x7f,0xfc,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x11,0xf0,0x09,0x10,0x49, +0xf0,0x21,0x10,0x21,0xf0,0x0f,0xfc,0x09,0x00,0x13,0xf8,0x1c,0xa8,0x23,0x48,0x20, +0xb0,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x39,0x50,0x28,0xe0,0x2b,0xf8,0x38, +0xa0,0x2f,0xfc,0x29,0x50,0x3b,0x58,0x2c,0xe4,0x2b,0x50,0x28,0x48,0x58,0xc0,0x00, +0x00,0x00,0x10,0x3c,0x10,0x00,0x10,0x7e,0x10,0x01,0xfc,0x3c,0x10,0x01,0x10,0x3c, +0x90,0x00,0x90,0x3c,0x10,0x24,0x10,0x24,0x10,0x3c,0x10,0x00,0x30,0x00,0x00,0x02, +0x48,0x3d,0x50,0x27,0xf8,0x24,0xa0,0x3f,0xfc,0x25,0x10,0x26,0xe8,0x27,0xfc,0x3c, +0x00,0x24,0xf0,0x24,0x00,0x25,0xf8,0x25,0x08,0x4d,0xf8,0x00,0x00,0x00,0x00,0x7f, +0xfc,0x00,0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x1f,0xf0,0x10,0x10,0x08,0x20,0x04, +0x20,0x04,0x40,0x00,0x80,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x20,0x3e,0x24,0x23, +0xf8,0x22,0x70,0x3e,0xa8,0x29,0x24,0x08,0x60,0x2e,0xf8,0x28,0x88,0x28,0xf8,0x28, +0x88,0x2e,0x88,0x38,0xf8,0x60,0x08,0x00,0x00,0x00,0xa0,0x20,0xa0,0x14,0xa8,0x12, +0xa8,0x02,0xb0,0x00,0xa0,0x71,0xb0,0x12,0xa8,0x1d,0x28,0x11,0x24,0x12,0x24,0x1c, +0x1c,0x26,0x00,0x41,0xfc,0x00,0x00,0x00,0x10,0x23,0xe0,0x10,0x40,0x17,0xfc,0x00, +0xe0,0x01,0x50,0x77,0xec,0x10,0xa0,0x10,0xb8,0x11,0x28,0x12,0x08,0x1c,0x30,0x26, +0x00,0x41,0xfc,0x00,0x00,0x08,0xe8,0x08,0x68,0x15,0x74,0x12,0x94,0x22,0xf8,0x5d, +0x08,0x09,0xfc,0x7e,0x88,0x08,0xf8,0x2a,0x90,0x1c,0x50,0x18,0x60,0x0f,0xfc,0x70, +0x00,0x00,0x00,0x01,0x00,0x79,0x00,0x49,0x00,0x53,0xf8,0x65,0x08,0x59,0xe8,0x4a, +0x88,0x4f,0xf8,0x48,0x88,0x4a,0xa8,0x72,0xa8,0x43,0xe8,0x40,0x08,0x40,0x30,0x00, +0x00,0x00,0x00,0x7f,0xfc,0x00,0x20,0x3e,0x40,0x22,0xf8,0x22,0x88,0x3e,0xf8,0x22, +0x88,0x12,0xf8,0x14,0x88,0x08,0xf8,0x0e,0x50,0x71,0x88,0x06,0x04,0x00,0x00,0x02, +0x48,0x39,0x50,0x2b,0xf8,0x28,0xa0,0x2f,0xfc,0x39,0xf0,0x2b,0x48,0x2d,0xf4,0x39, +0xf0,0x29,0x40,0x29,0xfc,0x2b,0x54,0x2a,0xac,0x5c,0x18,0x00,0x00,0x00,0x00,0x3e, +0xf8,0x22,0x88,0x3e,0xf8,0x22,0x88,0x3e,0xf8,0x20,0x28,0x3f,0x28,0x2f,0xf8,0x2a, +0xa8,0x2e,0xa8,0x2a,0x28,0x27,0x28,0x38,0x78,0x00,0x00,0x11,0xa0,0x1e,0x20,0x12, +0x20,0x3f,0xf8,0x2f,0xa8,0x6a,0xa8,0x2f,0xa8,0x2a,0xa8,0x2f,0xa8,0x22,0x28,0x2f, +0xa8,0x22,0x28,0x23,0xc8,0x2c,0x98,0x00,0x00,0x06,0x40,0x38,0x40,0x08,0x40,0xff, +0xf8,0x08,0x48,0x3e,0x48,0x2a,0x48,0x3e,0x48,0x2a,0x48,0x3e,0x48,0x08,0x88,0x3e, +0x88,0x0f,0x08,0x72,0x30,0x00,0x00,0x00,0x00,0x7f,0xf8,0x40,0x08,0x40,0x08,0x5f, +0xe8,0x40,0x08,0x4f,0xc8,0x48,0x48,0x48,0x48,0x48,0x48,0x4f,0xc8,0x40,0x08,0x40, +0x08,0x40,0x18,0x00,0x00,0x11,0x10,0x09,0x20,0x7f,0xfc,0x40,0x04,0x4f,0xe4,0x08, +0x20,0x08,0x20,0x0f,0xe0,0x01,0x00,0x1f,0xf0,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00, +0x00,0x00,0x00,0x21,0x20,0x1f,0xfc,0x10,0x80,0x03,0xf0,0x72,0x10,0x13,0xf0,0x12, +0x10,0x1b,0xf0,0x64,0x00,0x03,0xf8,0x7f,0xfc,0x04,0x40,0x02,0x40,0x00,0xc0,0x00, +0x00,0x10,0x40,0x13,0xf8,0x11,0x10,0x17,0xfc,0x38,0x00,0x37,0xf8,0x36,0x48,0x53, +0xf8,0x12,0x48,0x13,0xf8,0x10,0x40,0x13,0xf8,0x10,0x40,0x17,0xfc,0x00,0x00,0x10, +0x40,0x13,0xf8,0x11,0x10,0x7f,0xfc,0x10,0x00,0x13,0xf8,0x12,0x48,0x17,0xf8,0x1a, +0x48,0x73,0xf8,0x10,0x40,0x13,0xf8,0x10,0x40,0x37,0xfc,0x00,0x00,0x10,0x00,0x0f, +0xf8,0x0c,0x08,0x44,0x08,0x27,0xf8,0x24,0x08,0x05,0xe8,0x15,0x28,0x15,0x28,0x15, +0x28,0x25,0xe8,0x24,0x08,0x44,0x08,0x44,0x18,0x00,0x00,0x00,0x40,0x7b,0xf8,0x49, +0x10,0x48,0xa0,0x7f,0xfc,0x4a,0x48,0x4b,0xf8,0x7a,0x48,0x4b,0xf8,0x48,0x40,0x7b, +0xf8,0x00,0x40,0x0f,0xfc,0x00,0x00,0x00,0x00,0x01,0x00,0x1f,0xf0,0x04,0x40,0x7f, +0xfc,0x00,0x00,0x0f,0xe0,0x09,0x20,0x0f,0xe0,0x09,0x20,0x0f,0xe0,0x01,0x00,0x1f, +0xf0,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x3d,0xfc,0x25,0x04,0x25,0x04,0x3d, +0xfc,0x25,0x04,0x25,0x74,0x3d,0x54,0x25,0x54,0x25,0x54,0x25,0x74,0x25,0x04,0x25, +0x04,0x4d,0x0c,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x0c,0x40,0x08,0x00,0x1f, +0xf8,0x24,0x08,0x4f,0xc8,0x12,0x08,0x3f,0xe8,0x12,0x48,0x12,0x48,0x1f,0xc8,0x00, +0x30,0x00,0x00,0x02,0x10,0x21,0x20,0x1f,0xfc,0x10,0x80,0x03,0xf0,0x02,0x10,0x73, +0xf0,0x12,0x10,0x13,0xf0,0x12,0x10,0x12,0x10,0x1b,0xf0,0x26,0x00,0x41,0xfc,0x00, +0x00,0x08,0x00,0x09,0xf8,0x15,0x08,0x13,0x08,0x23,0xf8,0x5d,0x08,0x09,0xe8,0x7f, +0xa8,0x09,0xa8,0x2b,0xa8,0x1d,0xe8,0x19,0x08,0x0f,0x08,0x71,0x18,0x00,0x00,0x00, +0x40,0x10,0x40,0x10,0x78,0x10,0x40,0x54,0x40,0x57,0xfc,0x54,0x00,0x57,0xfc,0x54, +0x60,0x54,0x50,0x54,0x48,0x7c,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x20,0x40,0x26, +0x80,0x39,0xf0,0x21,0x10,0x23,0xf0,0x1f,0x10,0x11,0xf0,0x11,0xfc,0x7f,0x00,0x11, +0xfc,0x11,0x54,0x12,0xac,0x12,0x84,0x14,0x18,0x00,0x00,0x00,0x00,0x3f,0xfc,0x22, +0x40,0x2f,0xf0,0x22,0x40,0x21,0x00,0x3f,0xf8,0x22,0x00,0x27,0xf0,0x2a,0x10,0x33, +0xf0,0x20,0x00,0x3f,0xfc,0x00,0x00,0x00,0x00,0x10,0x00,0x11,0xf0,0x21,0x10,0x49, +0xf0,0x09,0x10,0x11,0xf0,0x10,0x00,0x37,0xfc,0x50,0x10,0x17,0xfc,0x11,0x10,0x10, +0x90,0x10,0x10,0x10,0x30,0x00,0x00,0x10,0x40,0x10,0x40,0x27,0xfc,0x48,0x40,0x0b, +0xf8,0x12,0xa8,0x12,0xa8,0x33,0xf8,0x53,0x08,0x10,0xd0,0x15,0x28,0x15,0x04,0x19, +0x14,0x10,0xf0,0x00,0x00,0x20,0x40,0x10,0x40,0x17,0xfc,0x40,0x40,0x23,0xf8,0x20, +0x00,0x03,0xfc,0x12,0x08,0x14,0xa0,0x10,0xa0,0x20,0xa0,0x21,0x24,0x42,0x24,0x4c, +0x1c,0x00,0x00,0x08,0x40,0x08,0x40,0x2b,0xf8,0x28,0x40,0x3c,0x40,0x2b,0xfc,0x28, +0x10,0x48,0x10,0x0f,0xfc,0x79,0x10,0x08,0x90,0x08,0x90,0x08,0x10,0x08,0x30,0x00, +0x00,0x08,0x00,0x0f,0xf8,0x08,0x48,0x7f,0x50,0x2a,0x20,0x29,0x50,0x59,0x8c,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00, +0x30,0x1f,0xc0,0x01,0x00,0x7f,0xfc,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x04, +0x80,0x04,0x80,0x04,0x80,0x08,0x84,0x10,0x84,0x60,0x7c,0x00,0x00,0x10,0x40,0x1f, +0xfc,0x28,0xa0,0x45,0x10,0x0f,0xf8,0x08,0x80,0x0f,0xf0,0x08,0x80,0x0f,0xf0,0x08, +0x80,0x0f,0xfc,0x29,0x24,0x24,0x94,0x40,0x18,0x00,0x00,0x01,0x00,0x3f,0xf8,0x01, +0x00,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x00,0x00,0x0f,0xe0,0x09,0x20,0x7f,0xfc,0x09, +0x20,0x1f,0xf8,0x10,0x20,0x00,0xc0,0x00,0x00,0x04,0x40,0x44,0x40,0x28,0x40,0x13, +0xf8,0x32,0x48,0x4a,0x48,0x0a,0x48,0x1b,0xf8,0x2a,0x48,0x48,0x50,0x08,0x48,0x08, +0x78,0x37,0x84,0x10,0x04,0x00,0x00,0x00,0x40,0x3c,0x40,0x03,0xfc,0x7c,0x40,0x01, +0xf8,0x3c,0x00,0x03,0xf8,0x3e,0x08,0x02,0xa8,0x3c,0xa0,0x24,0xa0,0x24,0xa4,0x25, +0x24,0x3e,0x1c,0x00,0x00,0x08,0x18,0x09,0xe0,0x09,0x00,0x7f,0x00,0x09,0xfc,0x1d, +0x40,0x1b,0x40,0x1b,0x78,0x29,0x48,0x2a,0x48,0x4a,0x88,0x0c,0x88,0x09,0x08,0x0a, +0x30,0x00,0x00,0x10,0x80,0x11,0xf0,0x16,0x40,0x7f,0xf8,0x12,0x48,0x13,0xf8,0x38, +0x80,0x35,0xe8,0x36,0x68,0x51,0xb0,0x56,0x68,0x11,0xa4,0x16,0x20,0x10,0xc0,0x00, +0x00,0x00,0x00,0x07,0xc0,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x3c,0x78,0x20, +0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x3f,0xf8,0x00,0x00,0x00,0x00,0x01, +0x00,0x01,0x00,0x7f,0xfc,0x44,0x84,0x44,0x84,0x08,0x88,0x11,0x78,0x01,0x00,0x7f, +0xfc,0x01,0x00,0x02,0x80,0x04,0x40,0x18,0x30,0x60,0x0c,0x00,0x00,0x10,0x40,0x10, +0xb8,0x13,0x28,0x7e,0x28,0x13,0xac,0x12,0x4c,0x3a,0x04,0x37,0xf8,0x36,0x28,0x52, +0xa8,0x53,0x10,0x16,0x30,0x12,0x48,0x12,0x04,0x00,0x00,0x00,0x00,0x1f,0xf8,0x10, +0x08,0x10,0x08,0x1f,0xf8,0x10,0x80,0x1f,0xf8,0x18,0x88,0x18,0x88,0x1f,0xf8,0x28, +0x88,0x28,0x88,0x4f,0xf8,0x00,0x00,0x00,0x00,0x01,0x10,0x7f,0xfc,0x02,0x80,0x04, +0x40,0x1f,0xe4,0x10,0x5c,0x1f,0xc4,0x10,0x40,0x1f,0xf0,0x10,0x00,0x1f,0xf8,0x29, +0x48,0x24,0xa8,0x40,0x30,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x05, +0x40,0x01,0x00,0x01,0xf8,0x01,0x00,0x01,0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x1f, +0xf0,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x40,0x04,0x5f,0xf4,0x01, +0x00,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x04,0x40,0x18,0x30,0x60, +0x08,0x00,0x00,0x00,0x00,0x7f,0xfc,0x04,0x80,0x04,0x80,0x3f,0xf8,0x24,0x88,0x24, +0x98,0x24,0x98,0x28,0x78,0x30,0x08,0x3f,0xf8,0x20,0x08,0x3f,0xf8,0x00,0x00,0x00, +0x00,0x24,0x20,0x1f,0x20,0x14,0x78,0x4f,0x90,0x24,0x20,0x3f,0xf8,0x00,0x28,0x1f, +0xfc,0x19,0x28,0x2f,0xf8,0x29,0x20,0x4f,0x20,0x49,0x20,0x4b,0x60,0x00,0x00,0x02, +0x00,0x02,0x7c,0x73,0x90,0x5e,0x20,0x52,0xf8,0x5a,0xc8,0x5a,0xf8,0x5a,0xc8,0x5f, +0xf8,0x52,0x48,0x72,0x78,0x02,0xb0,0x02,0xa8,0x01,0xc4,0x00,0x00,0x02,0x00,0x02, +0x30,0x03,0xc0,0x7e,0x00,0x22,0x20,0x22,0x20,0x22,0x20,0x22,0x20,0x3f,0xe0,0x22, +0x00,0x02,0x00,0x02,0x04,0x02,0x04,0x01,0xfc,0x00,0x00,0x10,0x40,0x17,0xfc,0x10, +0x00,0x19,0xf0,0x35,0x10,0x35,0xf0,0x30,0x00,0x53,0xf0,0x10,0x20,0x10,0x40,0x17, +0xfc,0x10,0x40,0x10,0x40,0x10,0xc0,0x00,0x00,0x08,0x40,0x08,0x40,0x7f,0x40,0x00, +0x40,0x3e,0xfc,0x22,0x90,0x3f,0x90,0x00,0x50,0x3e,0x50,0x04,0x20,0x0e,0x20,0x78, +0x50,0x09,0x88,0x1e,0x04,0x00,0x00,0x10,0x40,0x08,0x40,0x08,0x7c,0x47,0xc0,0x20, +0x48,0x22,0x48,0x02,0x48,0x0a,0x48,0x0b,0xf8,0x0a,0x40,0x10,0x40,0x10,0x44,0x20, +0x44,0x20,0x3c,0x00,0x00,0x00,0x00,0x3f,0xfc,0x24,0x40,0x24,0x88,0x27,0x48,0x3c, +0x70,0x24,0xa0,0x27,0x30,0x3c,0x70,0x24,0xa8,0x27,0x24,0x24,0x20,0x24,0x20,0x4c, +0xc0,0x00,0x00,0x00,0x18,0x23,0xe0,0x12,0x20,0x13,0xfc,0x02,0x20,0x02,0xf8,0x72, +0x88,0x12,0xf8,0x12,0x88,0x14,0xf8,0x14,0x88,0x18,0xf8,0x26,0x00,0x41,0xfc,0x00, +0x00,0x08,0x00,0x09,0xfc,0x0f,0x20,0x78,0x40,0x08,0xf8,0x2a,0x88,0x2a,0xf8,0x2a, +0x88,0x2a,0xf8,0x3e,0x88,0x28,0xf8,0x0a,0x50,0x0a,0x88,0x07,0x04,0x00,0x00,0x00, +0x30,0x1f,0xc0,0x01,0x00,0x01,0x00,0x7f,0xfc,0x02,0x80,0x04,0x40,0x18,0x30,0x6f, +0xec,0x08,0x20,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x08,0x20,0x3f,0xf8,0x01,0x00,0x7f,0xfc,0x4d,0x64,0x41,0x04,0x1f, +0xf0,0x00,0x00,0x7f,0xfc,0x04,0x60,0x3f,0x90,0x00,0x00,0x08,0x20,0x08,0x20,0x14, +0x3c,0x13,0xe0,0x22,0x28,0x5c,0xa8,0x08,0xa8,0x7e,0xa8,0x08,0xf8,0x2a,0xa0,0x1c, +0x20,0x18,0x24,0x0e,0x24,0x70,0x1c,0x00,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x02, +0x80,0x04,0x40,0x18,0x30,0x67,0xcc,0x00,0x00,0x3f,0xf8,0x01,0x00,0x05,0x40,0x19, +0x30,0x61,0x08,0x03,0x00,0x00,0x00,0x00,0x00,0x7f,0x78,0x09,0x48,0x09,0x50,0x3f, +0x50,0x09,0x60,0x09,0x50,0x3f,0x48,0x09,0x44,0x09,0x44,0x11,0x64,0x11,0x58,0x21, +0x40,0x46,0x40,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x21,0x08,0x21, +0x08,0x22,0x88,0x22,0x48,0x24,0x28,0x28,0x28,0x20,0x08,0x20,0x08,0x20,0x08,0x20, +0x18,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x0f,0xfc,0x09,0x00,0x11,0x00,0x21, +0xf8,0x41,0x00,0x01,0x00,0x01,0xf8,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00, +0x00,0x00,0x00,0x1f,0xf0,0x10,0x10,0x11,0x10,0x11,0x10,0x15,0x10,0x15,0xd0,0x15, +0x10,0x15,0x10,0x15,0x10,0x15,0x14,0x3f,0xec,0x20,0x0c,0x40,0x04,0x00,0x00,0x04, +0x40,0x04,0x40,0x7f,0xfc,0x14,0x40,0x10,0x48,0x3e,0x90,0x28,0xfc,0x49,0x90,0x7e, +0xf8,0x08,0x90,0x14,0xf8,0x12,0x90,0x22,0xfc,0x40,0x80,0x00,0x00,0x00,0x20,0x3a, +0x28,0x01,0xa8,0x7d,0x70,0x00,0x20,0x38,0xfc,0x07,0x70,0x39,0x70,0x01,0xa8,0x39, +0xa4,0x29,0x20,0x2b,0x20,0x3c,0xc0,0x28,0x3c,0x00,0x00,0x25,0x28,0x15,0x28,0x1f, +0xb0,0x45,0x7c,0x2f,0xd0,0x2a,0xd0,0x0f,0xfc,0x12,0x50,0x1f,0xd0,0x22,0x7c,0x2f, +0xd0,0x43,0x50,0x44,0xfc,0x58,0x40,0x00,0x00,0x10,0x40,0x10,0x40,0x13,0xfc,0x7c, +0x40,0x10,0xa0,0x11,0x10,0x13,0xf8,0x1c,0x04,0x77,0xf8,0x11,0x40,0x11,0x50,0x12, +0x48,0x14,0x48,0x30,0xc0,0x00,0x00,0x08,0x00,0x08,0xf8,0x14,0x88,0x12,0xb8,0x22, +0xa8,0x5c,0xa8,0x09,0xfc,0x7f,0x04,0x09,0x74,0x2b,0x54,0x1d,0x54,0x19,0x74,0x0f, +0x04,0x71,0x0c,0x00,0x00,0x11,0x10,0x10,0x90,0x10,0xa0,0x7f,0xfc,0x14,0xa0,0x13, +0xf8,0x3a,0xa8,0x36,0xa8,0x36,0xb8,0x53,0x18,0x53,0xf8,0x12,0x08,0x13,0xf8,0x10, +0x00,0x00,0x00,0x00,0x08,0x3f,0x88,0x28,0xa8,0x3e,0xa8,0x28,0xa8,0x3e,0xa8,0x28, +0xa8,0x3e,0xa8,0x02,0xa8,0x2a,0xa8,0x2a,0xa8,0x2a,0xa8,0x45,0x08,0x1a,0x08,0x00, +0x00,0x10,0x00,0x13,0xf8,0x16,0x48,0x67,0xf8,0x2a,0x48,0x1b,0xf8,0x24,0x40,0x7f, +0xf8,0x12,0x48,0x3b,0xf8,0x36,0x48,0x37,0xfc,0x52,0x44,0x10,0x3c,0x00,0x00,0x00, +0x00,0x03,0xf8,0x7c,0xc8,0x56,0xa8,0x55,0x10,0x55,0xb0,0x7e,0x48,0x57,0xf8,0x54, +0xa8,0x56,0xa8,0x7d,0x10,0x41,0x90,0x02,0x68,0x04,0x44,0x00,0x00,0x01,0x00,0x01, +0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x3f,0xf8,0x24,0x48,0x22,0x88,0x2f,0xe8,0x21, +0x08,0x2f,0xe8,0x21,0x08,0x21,0x08,0x21,0x18,0x00,0x00,0x10,0x40,0x10,0x40,0x13, +0xfc,0x7c,0x40,0x13,0xf8,0x13,0x28,0x3a,0xc8,0x37,0xf8,0x36,0x48,0x53,0xf8,0x52, +0x48,0x12,0x48,0x12,0x48,0x12,0x18,0x00,0x00,0x08,0x40,0x08,0x40,0x7f,0x40,0x08, +0x40,0x3e,0xfc,0x2a,0xa8,0x3f,0x30,0x2a,0x20,0x3e,0x20,0x08,0x60,0x7f,0x50,0x08, +0x90,0x09,0x08,0x0a,0x04,0x00,0x00,0x14,0x48,0x14,0x48,0x7f,0x50,0x14,0xfc,0x3e, +0x90,0x2b,0x90,0x3e,0xf8,0x08,0x90,0x3e,0x90,0x08,0xf8,0x7f,0x90,0x14,0x90,0x22, +0xfc,0x40,0x80,0x00,0x00,0x10,0x80,0x08,0x80,0x08,0x80,0x40,0x80,0x27,0xfc,0x21, +0x10,0x01,0x10,0x09,0x10,0x0b,0x90,0x0a,0x60,0x10,0x20,0x10,0x50,0x21,0x88,0x26, +0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x1f,0xf8,0x10,0x08,0x10,0x08,0x1f,0xf8,0x12,0x00,0x12,0x00,0x12, +0x38,0x13,0xc0,0x12,0x00,0x12,0x00,0x22,0x04,0x22,0x04,0x41,0xfc,0x00,0x00,0x00, +0x50,0x1f,0x48,0x00,0x48,0x00,0x40,0x7f,0xfc,0x00,0x40,0x00,0x40,0x1f,0x20,0x00, +0x20,0x00,0x20,0x01,0x90,0x0e,0x14,0x70,0x0c,0x00,0x04,0x00,0x00,0x01,0x00,0x21, +0x00,0x11,0x00,0x13,0xfc,0x02,0x40,0x04,0x40,0x79,0x50,0x11,0x48,0x12,0x44,0x14, +0x44,0x10,0x40,0x18,0xc0,0x26,0x00,0x41,0xfc,0x00,0x00,0x08,0x00,0x08,0x00,0x08, +0x00,0x1f,0xf8,0x10,0x08,0x28,0x08,0x49,0x88,0x0e,0x08,0x08,0x08,0x08,0x48,0x08, +0x48,0x07,0xc8,0x00,0x08,0x00,0x30,0x00,0x00,0x00,0x00,0x3d,0xfc,0x25,0x00,0x25, +0x00,0x3d,0x78,0x25,0x00,0x3d,0xfc,0x25,0x60,0x25,0x64,0x3d,0x58,0x19,0x50,0x15, +0x50,0x22,0x68,0x45,0x84,0x00,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x21,0x08,0x21, +0x88,0x22,0x48,0x25,0x28,0x29,0x28,0x21,0x88,0x22,0x48,0x24,0x28,0x28,0x28,0x20, +0x08,0x20,0x18,0x00,0x00,0x08,0x00,0x08,0x00,0x09,0xfc,0x3e,0x20,0x2a,0x20,0x2a, +0x20,0x2a,0x20,0x2a,0x20,0x3e,0x20,0x2c,0x20,0x0a,0x20,0x0f,0x20,0x19,0xfc,0x60, +0x00,0x00,0x00,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x7f,0xfc,0x08,0x20,0x08, +0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00, +0x00,0x00,0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0xf0,0x10, +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x03, +0x40,0x7c,0x40,0x11,0x40,0x49,0x40,0x2a,0x40,0x24,0x40,0x3f,0x40,0x02,0x40,0x04, +0x40,0x07,0x40,0x7c,0x40,0x04,0x44,0x04,0x44,0x0c,0x3c,0x00,0x00,0x0f,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x03,0x80,0x02,0x80,0x04,0x40,0x04, +0x40,0x08,0x20,0x10,0x10,0x20,0x08,0x40,0x04,0x00,0x00,0x08,0x00,0x08,0x00,0x08, +0xf8,0x08,0x88,0x7e,0x88,0x12,0x88,0x12,0x88,0x12,0x88,0x3c,0x88,0x24,0x88,0x06, +0x88,0x0a,0x88,0x10,0xf8,0x20,0x00,0x00,0x00,0x00,0x00,0x1f,0xf8,0x10,0x08,0x10, +0x08,0x1f,0xf8,0x10,0x80,0x10,0x88,0x1f,0xc8,0x11,0xb0,0x12,0xa0,0x24,0x90,0x38, +0x88,0x40,0x84,0x01,0x80,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x00, +0x00,0x04,0x40,0x3c,0x78,0x04,0x40,0x3c,0x78,0x04,0x40,0x3c,0x78,0x04,0x40,0x7f, +0xfc,0x00,0x00,0x00,0x00,0x08,0x18,0x0b,0xe0,0x08,0x40,0x10,0x40,0x10,0x40,0x30, +0x40,0x57,0xfc,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x13,0xf8,0x10, +0x00,0x00,0x00,0x08,0x00,0x08,0x1c,0x09,0xe0,0x08,0x20,0x7e,0x20,0x12,0x20,0x12, +0x20,0x13,0xfc,0x3c,0x20,0x24,0x20,0x06,0x20,0x0a,0x20,0x11,0xfc,0x20,0x00,0x00, +0x00,0x00,0x00,0x3f,0xf0,0x01,0x10,0x0d,0x10,0x03,0x10,0x02,0x90,0x0c,0x10,0x30, +0x60,0x01,0x00,0x04,0x90,0x24,0x88,0x24,0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x00, +0x00,0x3d,0xf8,0x00,0x48,0x7f,0xc8,0x00,0x68,0x3c,0x88,0x01,0x30,0x3c,0x40,0x00, +0xa0,0x3d,0xa8,0x25,0x84,0x26,0x94,0x24,0x90,0x3c,0x70,0x00,0x00,0x10,0x00,0x0b, +0xf8,0x08,0x40,0x47,0xfc,0x24,0x44,0x27,0x58,0x00,0x40,0x0f,0xfc,0x08,0x80,0x13, +0xf8,0x12,0xa8,0x22,0xa8,0x22,0xa8,0x22,0xb8,0x00,0x00,0x10,0x00,0x13,0xfc,0x11, +0x50,0x7e,0x4c,0x07,0xf8,0x0a,0xd8,0x0b,0xf8,0x1a,0xd8,0x37,0x68,0x56,0xd8,0x13, +0xf8,0x12,0xd8,0x13,0x68,0x12,0x58,0x00,0x00,0x10,0x80,0x10,0x80,0x10,0x80,0x7d, +0xfc,0x09,0x20,0x0a,0x20,0x10,0xb0,0x18,0xa8,0x34,0xa8,0x55,0x24,0x11,0x24,0x12, +0x24,0x10,0x20,0x10,0x60,0x00,0x00,0x01,0x00,0x7f,0xfc,0x43,0x04,0x54,0xa4,0x14, +0x50,0x23,0xc8,0x1f,0xf0,0x12,0x90,0x1f,0xf0,0x00,0x00,0x7f,0xfc,0x01,0x00,0x01, +0x00,0x03,0x00,0x00,0x00,0x04,0x40,0x7f,0xfc,0x0c,0x40,0x0f,0xf8,0x12,0x48,0x2f, +0xc8,0x44,0xe8,0x09,0x08,0x13,0x30,0x00,0x80,0x24,0x88,0x24,0x24,0x44,0x24,0x03, +0xe0,0x00,0x00,0x09,0x10,0x49,0x10,0x37,0xfc,0x11,0x10,0x31,0x10,0x48,0x00,0x0b, +0xf8,0x1a,0x48,0x2a,0x48,0x4b,0xf8,0x0a,0x48,0x0a,0x48,0x33,0xf8,0x10,0x00,0x00, +0x00,0x08,0x40,0x08,0x40,0x3f,0xf0,0x08,0x50,0x7f,0x50,0x15,0xd0,0x2b,0x50,0x7e, +0x74,0x08,0x94,0x0f,0x0c,0x70,0x00,0x24,0x88,0x22,0x44,0x42,0x44,0x00,0x00,0x08, +0x00,0x08,0x00,0x1f,0xf8,0x10,0x80,0x20,0x80,0x4f,0xf0,0x08,0x80,0x08,0x80,0x08, +0x80,0x7f,0xfc,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x01,0x00,0x01, +0x00,0x02,0x80,0x04,0x40,0x1f,0xf0,0x60,0x0c,0x0f,0xe0,0x00,0x40,0x01,0x80,0x04, +0x90,0x24,0x88,0x24,0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x10,0x40,0x10,0x40,0x10, +0xa0,0x7d,0x10,0x13,0xf8,0x14,0x04,0x13,0xf8,0x1c,0x10,0x70,0xa0,0x11,0x50,0x15, +0x48,0x15,0x14,0x19,0x14,0x30,0xf0,0x00,0x00,0x12,0x30,0x12,0x28,0x13,0xa8,0x7a, +0xa0,0x16,0xfc,0x15,0xa0,0x1d,0x30,0x13,0x50,0x1a,0x48,0x74,0x84,0x18,0x00,0x15, +0x48,0x14,0xa4,0x38,0xa4,0x00,0x00,0x11,0x20,0x11,0x28,0x15,0xe4,0x15,0x64,0x3b, +0x7c,0x32,0xa0,0x36,0xa0,0x59,0x50,0x12,0x50,0x14,0x88,0x18,0x04,0x25,0x48,0x24, +0xa4,0x48,0xa4,0x00,0x00,0x08,0x40,0x4a,0x40,0x2a,0x40,0x2c,0x7c,0x08,0x40,0x7e, +0x40,0x08,0x40,0x1d,0xf8,0x1b,0x08,0x2b,0x08,0x49,0x08,0x09,0x08,0x09,0xf8,0x08, +0x00,0x00,0x00,0x00,0x00,0x3f,0xc0,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04, +0x78,0x04,0x08,0x04,0x08,0x08,0x08,0x08,0x08,0x10,0x08,0x20,0x08,0x40,0x70,0x00, +0x00,0x00,0x00,0x07,0xfc,0x78,0xa0,0x08,0xa0,0x13,0xf8,0x12,0xa8,0x3a,0xa8,0x0a, +0xb8,0x4b,0x08,0x2a,0x08,0x13,0xf8,0x18,0x00,0x26,0x00,0x41,0xfc,0x00,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x3f,0xf0,0x00,0x10,0x00,0x20,0x00,0x20,0x00,0x40,0x00, +0x80,0x11,0x00,0x1a,0x00,0x14,0x00,0x23,0x00,0x40,0xfc,0x00,0x00,0x08,0x20,0x08, +0x20,0x7f,0xfc,0x1c,0x70,0x1a,0x70,0x2a,0xa8,0x49,0x24,0x09,0x20,0x01,0x00,0x1f, +0xf0,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x01,0x00,0x7f,0xfc,0x09, +0x20,0x0f,0xe0,0x01,0x00,0x7f,0xfc,0x4a,0xa4,0x37,0xd8,0x02,0x80,0x7f,0xfc,0x06, +0x90,0x7c,0x60,0x07,0x30,0x38,0x0c,0x00,0x00,0x10,0x88,0x12,0x48,0x11,0x50,0x19, +0x20,0x34,0x40,0x34,0x20,0x33,0x28,0x52,0xa8,0x12,0x48,0x12,0x48,0x12,0xa8,0x13, +0x08,0x13,0xf8,0x10,0x00,0x00,0x00,0x10,0xa0,0x0b,0xf8,0x0a,0xa8,0x43,0xf8,0x22, +0xa8,0x27,0xfc,0x04,0x00,0x05,0xf0,0x14,0x00,0x17,0xfc,0x25,0x48,0x25,0x30,0x49, +0xd0,0x56,0x0c,0x00,0x00,0x10,0x40,0x10,0x40,0x14,0x40,0x67,0xf8,0x1a,0x48,0x1a, +0x48,0x26,0x48,0x7e,0xa8,0x12,0x98,0x1b,0x18,0x36,0x08,0x36,0x08,0x52,0x08,0x12, +0x18,0x00,0x00,0x08,0x40,0x08,0x40,0x0c,0x4c,0x12,0x70,0x7d,0x44,0x01,0x44,0x3e, +0x3c,0x22,0x40,0x3e,0x4c,0x22,0x70,0x3e,0x40,0x22,0x44,0x22,0x44,0x26,0x3c,0x00, +0x00,0x00,0x88,0x3e,0x48,0x25,0x48,0x25,0x10,0x3c,0x20,0x25,0x18,0x25,0x98,0x3d, +0x68,0x25,0x28,0x25,0x58,0x25,0x98,0x25,0x08,0x25,0xf8,0x4c,0x00,0x00,0x00,0x00, +0xa0,0x3b,0xf8,0x2a,0xa8,0x2b,0xf8,0x3a,0xa8,0x2b,0xfc,0x2a,0x00,0x3a,0xf8,0x2a, +0x00,0x2b,0xfc,0x2a,0xc8,0x2a,0xb0,0x2c,0xd0,0x5b,0x0c,0x00,0x00,0x02,0x80,0x1f, +0xf0,0x12,0x90,0x1f,0xf0,0x12,0x90,0x1f,0xfc,0x10,0x00,0x17,0xf0,0x10,0x00,0x1f, +0xfc,0x12,0x90,0x12,0x60,0x23,0xb0,0x5c,0x0c,0x00,0x00,0x00,0x00,0x7e,0xf8,0x02, +0x88,0x7e,0x88,0x02,0xf8,0x3a,0x88,0x2a,0xf8,0x2a,0x88,0x2a,0xf8,0x2a,0x50,0x3a, +0x50,0x02,0x54,0x02,0x94,0x0d,0x0c,0x00,0x00,0x00,0x00,0x3f,0xf8,0x04,0x90,0x12, +0x60,0x09,0x80,0x07,0xc0,0x19,0x30,0x6f,0xec,0x09,0x20,0x09,0x20,0x0f,0xe0,0x01, +0x10,0x01,0xf8,0x7e,0x04,0x00,0x00,0x00,0x00,0x3f,0xf8,0x21,0x08,0x21,0x08,0x21, +0x08,0x21,0x08,0x3f,0xf8,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x04,0x20, +0x04,0x1f,0xfc,0x00,0x00,0x10,0x00,0x13,0xf8,0x12,0x48,0x7e,0x48,0x12,0x48,0x12, +0x48,0x13,0xf8,0x1e,0x00,0x72,0x00,0x12,0x00,0x12,0x00,0x12,0x04,0x12,0x04,0x31, +0xfc,0x00,0x00,0x10,0x10,0x13,0xe8,0x12,0x48,0x7d,0x50,0x17,0xfc,0x10,0xe0,0x11, +0x50,0x1a,0x48,0x77,0xfc,0x12,0x48,0x13,0xf8,0x12,0x48,0x13,0xf8,0x32,0x08,0x00, +0x00,0x00,0x00,0x7f,0xfc,0x1f,0xf0,0x12,0x90,0x1f,0xf0,0x14,0x00,0x7f,0xf8,0x1c, +0x88,0x3e,0xf8,0x2a,0x88,0x3e,0xf8,0x7f,0x88,0x09,0x08,0x0a,0x18,0x00,0x00,0x08, +0x00,0x09,0xf8,0x09,0x48,0x7f,0x48,0x09,0x48,0x19,0x48,0x1d,0xf8,0x1b,0x00,0x2b, +0x00,0x29,0x00,0x49,0x00,0x09,0x04,0x09,0x04,0x08,0xfc,0x00,0x00,0x10,0x40,0x08, +0x40,0x0b,0xfc,0x42,0x48,0x22,0x50,0x22,0x40,0x03,0xf8,0x13,0x08,0x12,0x90,0x12, +0x90,0x24,0x60,0x24,0x60,0x49,0x90,0x56,0x0c,0x00,0x00,0x10,0x20,0x08,0xc0,0x0b, +0x08,0x42,0x30,0x22,0xc0,0x22,0xc8,0x02,0xc8,0x12,0xb0,0x12,0xa0,0x12,0x90,0x24, +0x90,0x24,0x88,0x48,0x84,0x50,0x80,0x00,0x00,0x00,0x00,0x3e,0xf8,0x08,0x20,0x3e, +0xf8,0x08,0x20,0x0e,0xfc,0x70,0x00,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x10,0x00,0x10, +0x04,0x10,0x04,0x0f,0xfc,0x00,0x00,0x00,0x20,0x7e,0x20,0x11,0xfc,0x11,0x28,0x11, +0x30,0x21,0x20,0x3d,0xf8,0x65,0x88,0x25,0x50,0x25,0x50,0x26,0x20,0x3e,0x50,0x25, +0x88,0x0e,0x04,0x00,0x00,0x30,0x40,0x0b,0xfc,0x62,0x48,0x0b,0xf8,0x12,0x90,0x24, +0x60,0x27,0x9c,0x09,0x00,0x7f,0xfc,0x02,0x20,0x07,0x40,0x08,0xe0,0x03,0x10,0x3c, +0x08,0x00,0x00,0x00,0x00,0x3f,0xf8,0x24,0x48,0x3f,0xf8,0x0f,0xf8,0x08,0x80,0x0f, +0xf0,0x08,0x80,0x0f,0xf0,0x08,0x80,0x0f,0xfc,0x29,0x24,0x24,0x94,0x40,0x38,0x00, +0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x04,0x40,0x1f,0xf0,0x11,0x10,0x11, +0x10,0x1f,0xf0,0x10,0x00,0x10,0x00,0x10,0x04,0x10,0x04,0x0f,0xfc,0x00,0x00,0x00, +0x00,0x1f,0xf8,0x11,0x00,0x1f,0xf0,0x11,0x00,0x1f,0xf0,0x11,0x00,0x1f,0xfc,0x00, +0x04,0x09,0x24,0x24,0x94,0x24,0x04,0x20,0x04,0x40,0x38,0x00,0x00,0x08,0xa0,0x08, +0xa0,0x08,0xa0,0x17,0xbc,0x10,0xa0,0x30,0xa0,0x57,0xbc,0x10,0xa0,0x10,0xa0,0x17, +0xbc,0x10,0xa0,0x11,0x20,0x12,0x20,0x14,0x20,0x00,0x00,0x00,0x80,0x1f,0xfc,0x10, +0x00,0x13,0x90,0x18,0xd4,0x15,0x24,0x12,0x18,0x1f,0xf8,0x11,0x44,0x1f,0xf8,0x21, +0x40,0x22,0x40,0x44,0x44,0x18,0x3c,0x00,0x00,0x10,0x00,0x13,0xf8,0x10,0x40,0x7c, +0x40,0x13,0xf8,0x10,0x40,0x10,0x40,0x13,0xf8,0x18,0x40,0x70,0x40,0x17,0xfc,0x10, +0x40,0x10,0x40,0x30,0x40,0x00,0x00,0x10,0xa0,0x10,0xa0,0x10,0xa0,0x7f,0xbc,0x10, +0xa0,0x10,0xa0,0x17,0xbc,0x18,0xa0,0x70,0xa0,0x17,0xbc,0x10,0xa0,0x11,0x20,0x12, +0x20,0x34,0x20,0x00,0x00,0x00,0x40,0x3e,0x40,0x22,0x40,0x22,0x40,0x3e,0xfc,0x22, +0x90,0x3f,0x90,0x22,0x50,0x22,0x50,0x3e,0x20,0x14,0x20,0x12,0x50,0x22,0x88,0x41, +0x04,0x00,0x00,0x08,0x00,0x09,0xfc,0x08,0x20,0x7e,0x20,0x08,0x20,0x1c,0x70,0x1a, +0x68,0x1a,0xa8,0x28,0xa4,0x29,0x24,0x4a,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x00, +0x00,0x00,0x00,0x7f,0xfc,0x00,0x80,0x03,0xc0,0x0d,0x30,0x71,0x08,0x01,0x04,0x1f, +0xf0,0x12,0x90,0x12,0x90,0x12,0x90,0x12,0x90,0x7f,0xfc,0x00,0x00,0x00,0x00,0x28, +0x40,0x28,0x80,0x2b,0xf8,0x2a,0x48,0x3f,0xf8,0x22,0x48,0x23,0xf8,0x3a,0xa8,0x28, +0xa0,0x29,0x20,0x2f,0xfc,0x28,0x20,0x28,0x20,0x48,0x20,0x00,0x00,0x04,0x80,0x04, +0x88,0x7c,0xf0,0x04,0x80,0x1c,0x84,0x64,0x7c,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x08,0x20,0x08,0x20,0x08,0x60,0x00,0x00,0x00,0x20,0x3c,0x20,0x24, +0x20,0x27,0xfc,0x3c,0x20,0x24,0x20,0x25,0xfc,0x3d,0x24,0x25,0x24,0x25,0x24,0x25, +0x24,0x25,0x2c,0x24,0x20,0x4c,0x20,0x00,0x00,0x02,0x40,0x7e,0x7c,0x02,0x40,0x3e, +0x78,0x02,0x40,0x7c,0x7c,0x05,0x40,0x7f,0xfc,0x09,0x20,0x0f,0xe0,0x09,0x20,0x0f, +0xe0,0x7f,0xfc,0x01,0x00,0x00,0x00,0x00,0x00,0x7f,0xf8,0x0c,0x08,0x0c,0x08,0x3f, +0x08,0x2d,0x78,0x2d,0x40,0x35,0x40,0x37,0x40,0x21,0x40,0x3f,0x40,0x21,0x44,0x21, +0x44,0x3f,0x3c,0x00,0x00,0x08,0x40,0x08,0x40,0x0f,0xfc,0x12,0x10,0x11,0x10,0x31, +0x20,0x5f,0xfc,0x10,0x00,0x13,0xf8,0x12,0x08,0x12,0x08,0x12,0x08,0x13,0xf8,0x10, +0x00,0x00,0x00,0x00,0x40,0x10,0x40,0x13,0xfc,0x11,0x10,0x7c,0x90,0x10,0xa0,0x17, +0xfc,0x10,0x00,0x11,0xf8,0x1d,0x08,0x61,0x08,0x01,0x08,0x01,0xf8,0x00,0x00,0x00, +0x00,0x10,0x90,0x10,0x90,0x13,0xfc,0x10,0x90,0x7c,0xf0,0x24,0x90,0x24,0xf0,0x24, +0x40,0x7f,0xfc,0x48,0xe0,0x0d,0x50,0x16,0x48,0x64,0x44,0x00,0x40,0x00,0x00,0x08, +0x80,0x08,0x80,0x08,0xfc,0x7f,0x00,0x0a,0xf8,0x18,0xa8,0x1c,0xa8,0x1b,0xfc,0x2a, +0xa8,0x28,0xa8,0x49,0xfc,0x09,0x08,0x08,0x08,0x08,0x30,0x00,0x00,0x08,0x90,0x08, +0x90,0x0b,0xfc,0x7e,0x90,0x08,0xf0,0x18,0x90,0x1c,0xf0,0x1a,0x40,0x2b,0xfc,0x28, +0xe0,0x49,0x50,0x0e,0x48,0x08,0x44,0x08,0x40,0x00,0x00,0x08,0x90,0x08,0x90,0x0b, +0xfc,0x0a,0x90,0x2c,0xf0,0x28,0x90,0x28,0xf0,0x48,0x40,0x0b,0xfc,0x08,0xe0,0x14, +0xd0,0x13,0x48,0x26,0x44,0x40,0x40,0x00,0x00,0x04,0x00,0x45,0xf8,0x29,0x08,0x11, +0x08,0x31,0xf8,0x49,0x08,0x09,0xf8,0x19,0x08,0x19,0x08,0x29,0xf8,0x48,0x90,0x08, +0x88,0x09,0x04,0x32,0x04,0x00,0x00,0x00,0x00,0x3f,0xf8,0x24,0x48,0x3f,0xf8,0x00, +0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x06, +0x60,0x38,0x18,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x1f,0xf0,0x00, +0x00,0x7f,0xfc,0x40,0x04,0x44,0x84,0x04,0x80,0x04,0x80,0x08,0x84,0x10,0x84,0x60, +0x7c,0x00,0x00,0x00,0x20,0x3e,0x20,0x23,0xfc,0x22,0x88,0x3e,0x48,0x22,0x50,0x3f, +0xfc,0x22,0x00,0x22,0xf8,0x3e,0x88,0x14,0x88,0x12,0x88,0x22,0xf8,0x40,0x00,0x00, +0x00,0x00,0x40,0x3c,0x40,0x27,0xfc,0x29,0x10,0x28,0x90,0x30,0xa0,0x2b,0xfc,0x24, +0x00,0x25,0xf8,0x25,0x08,0x39,0x08,0x21,0x08,0x21,0xf8,0x20,0x00,0x00,0x00,0x00, +0x00,0x21,0xf0,0x10,0x00,0x17,0xfc,0x00,0x00,0x01,0xf0,0x70,0x00,0x11,0xf0,0x10, +0x00,0x11,0xf0,0x11,0x10,0x19,0xf0,0x26,0x00,0x41,0xfc,0x00,0x00,0x08,0x00,0x08, +0xf8,0x08,0xa8,0x3e,0xf8,0x2a,0xa8,0x2a,0xf8,0x2a,0x20,0x3e,0xf8,0x28,0xa8,0x0c, +0xf8,0x0a,0xa8,0x0f,0xf8,0x70,0xa4,0x00,0x1c,0x00,0x00,0x02,0x00,0x0d,0xfc,0x38, +0x20,0x09,0x28,0x08,0xa8,0x7e,0xb0,0x08,0x20,0x1d,0xfc,0x1a,0x20,0x2a,0x20,0x48, +0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x00,0x00,0x10,0x08,0x11,0xc8,0x10,0x48,0x3e, +0x48,0x29,0xc8,0x49,0x08,0x09,0x08,0x7f,0xc8,0x09,0x48,0x0c,0x48,0x12,0x48,0x12, +0x48,0x20,0x48,0x41,0x88,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x06, +0x20,0x38,0x24,0x08,0xa4,0x7e,0xa8,0x1c,0xb0,0x1b,0x20,0x2a,0x50,0x48,0x50,0x08, +0x88,0x09,0x04,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x10,0x80,0x13,0xf8,0x32, +0x08,0x52,0x08,0x12,0x08,0x13,0xf8,0x12,0x08,0x12,0x08,0x12,0x08,0x13,0xf8,0x10, +0x00,0x00,0x00,0x00,0x08,0x3e,0x48,0x02,0x48,0x3e,0x48,0x02,0x48,0x7f,0xc8,0x04, +0x48,0x25,0x48,0x15,0x48,0x16,0x48,0x1d,0x48,0x64,0x88,0x04,0x08,0x0c,0x18,0x00, +0x00,0x10,0x48,0x17,0xfc,0x10,0x40,0x13,0xf8,0x7e,0x48,0x13,0xf8,0x12,0x48,0x13, +0xf8,0x10,0x10,0x17,0xfc,0x11,0x10,0x10,0x90,0x10,0x10,0x10,0x30,0x00,0x00,0x10, +0x20,0x10,0x20,0x10,0x40,0x7c,0x80,0x13,0xf8,0x12,0x08,0x12,0x08,0x1e,0x08,0x73, +0xf8,0x12,0x08,0x12,0x08,0x12,0x08,0x13,0xf8,0x30,0x00,0x00,0x00,0x08,0x20,0x08, +0x20,0x08,0x40,0x7f,0xf8,0x09,0x08,0x19,0x08,0x1d,0x08,0x1b,0xf8,0x2b,0x08,0x29, +0x08,0x49,0x08,0x09,0x08,0x09,0xf8,0x08,0x00,0x00,0x00,0x10,0x40,0x08,0x40,0x08, +0x80,0x43,0xf8,0x22,0x08,0x22,0x08,0x02,0x08,0x13,0xf8,0x12,0x08,0x12,0x08,0x22, +0x08,0x22,0x08,0x43,0xf8,0x40,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x02,0x00,0x1f, +0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x10, +0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x1f,0xfc,0x24,0xa0,0x43, +0x30,0x10,0x40,0x09,0xf8,0x41,0x08,0x29,0x08,0x09,0xf8,0x11,0x08,0x11,0x08,0x21, +0xf8,0x20,0x00,0x00,0x00,0x08,0x20,0x4a,0x20,0x2a,0x40,0x2c,0xf8,0x08,0x88,0x7e, +0x88,0x08,0x88,0x1c,0xf8,0x1a,0x88,0x2a,0x88,0x48,0x88,0x08,0x88,0x08,0xf8,0x08, +0x00,0x00,0x00,0x04,0x20,0x08,0x20,0x1e,0x40,0x12,0xf8,0x1a,0x88,0x16,0x88,0x16, +0x88,0x7f,0xf8,0x12,0x88,0x1a,0x88,0x1a,0x88,0x2a,0x88,0x22,0xf8,0x46,0x00,0x00, +0x00,0x04,0x40,0x7f,0xfc,0x04,0x50,0x10,0x48,0x0f,0xfc,0x4a,0x48,0x23,0xf8,0x22, +0x48,0x13,0xf8,0x10,0x10,0x2f,0xfc,0x21,0x10,0x40,0x90,0x40,0x30,0x00,0x00,0x00, +0x80,0x20,0x80,0x11,0x00,0x13,0xf0,0x02,0x10,0x02,0x10,0x73,0xf0,0x12,0x10,0x12, +0x10,0x12,0x10,0x13,0xf0,0x18,0x00,0x26,0x00,0x41,0xfc,0x00,0x00,0x00,0x00,0x79, +0xf0,0x49,0x10,0x49,0xf0,0x49,0xf0,0x78,0xa0,0x4b,0xf8,0x48,0xa0,0x4f,0xfc,0x49, +0x50,0x4b,0x58,0x7c,0xe4,0x03,0x58,0x00,0xc0,0x00,0x00,0x11,0x20,0x09,0x20,0x0f, +0xfc,0x41,0x20,0x23,0xf0,0x22,0x10,0x03,0xf0,0x12,0x10,0x13,0xf0,0x10,0x80,0x2f, +0xfc,0x20,0xc0,0x43,0x30,0x4c,0x0c,0x00,0x00,0x10,0x00,0x11,0xf0,0x11,0x10,0x15, +0xf0,0x35,0xf0,0x38,0xa0,0x33,0xf8,0x50,0xa0,0x17,0xfc,0x19,0x50,0x17,0x58,0x24, +0xe4,0x23,0x58,0x40,0xc0,0x00,0x00,0x10,0x50,0x10,0x48,0x17,0xfc,0x64,0x40,0x2b, +0xf8,0x1a,0x48,0x27,0xf8,0x7e,0x48,0x13,0xf8,0x38,0x10,0x37,0xfc,0x35,0x10,0x50, +0x90,0x10,0x30,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x1f,0xf0,0x10, +0x10,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x02,0x80,0x0c,0x60,0x70, +0x1c,0x00,0x00,0x00,0x08,0x3f,0x08,0x28,0xd0,0x3e,0x30,0x28,0x28,0x3e,0x44,0x28, +0x88,0x3f,0x48,0x02,0x50,0x2a,0x30,0x2a,0x20,0x2a,0x50,0x42,0x88,0x0d,0x04,0x00, +0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x01,0x00,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x01, +0x00,0x03,0xf0,0x0e,0x20,0x31,0x40,0x01,0x80,0x06,0x60,0x78,0x1c,0x00,0x00,0x00, +0x00,0x3f,0xf0,0x02,0x00,0x42,0x08,0x47,0x28,0x51,0x28,0x49,0xc8,0x4b,0x48,0x45, +0x28,0x59,0x28,0x43,0x08,0x40,0x08,0x7f,0xf8,0x00,0x00,0x00,0x00,0x08,0x40,0x08, +0x40,0x1f,0xfc,0x28,0xa0,0x45,0x10,0x08,0x00,0x08,0xf8,0x7f,0x88,0x08,0xf8,0x1c, +0x88,0x1a,0xf8,0x2a,0x88,0x48,0xf8,0x08,0x00,0x00,0x00,0x00,0xa0,0x7e,0x90,0x11, +0x08,0x12,0x48,0x10,0x40,0x3c,0xa0,0x24,0xa0,0x65,0x10,0x27,0xf8,0x25,0x14,0x25, +0x10,0x3d,0x10,0x01,0xf0,0x00,0x00,0x00,0x00,0x10,0x40,0x1f,0xfc,0x28,0xa0,0x45, +0x10,0x1f,0xf8,0x01,0x20,0x7f,0xfc,0x03,0x00,0x0f,0xf0,0x74,0x10,0x07,0xf0,0x04, +0x10,0x07,0xf0,0x00,0x00,0x00,0x00,0x00,0x40,0x7f,0x40,0x3e,0xfc,0x23,0x48,0x3e, +0x30,0x21,0xcc,0x4f,0xe0,0x01,0x20,0x7f,0xfc,0x01,0x20,0x3f,0xf8,0x01,0x00,0x7f, +0xfc,0x01,0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x1f,0xfc,0x14,0xa0,0x23,0x18,0x5f, +0xe0,0x01,0x00,0x7f,0xfc,0x01,0x00,0x0f,0xe0,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00, +0x00,0x00,0x00,0x10,0x70,0x13,0xfc,0x12,0x58,0x7f,0xe8,0x12,0xf8,0x1a,0xa8,0x36, +0xf8,0x36,0xa8,0x32,0xf8,0x54,0x00,0x55,0xf8,0x19,0x68,0x11,0x68,0x17,0xfc,0x00, +0x00,0x10,0x18,0x13,0xe8,0x12,0x48,0x7d,0x50,0x57,0xfc,0x54,0xe0,0x55,0x50,0x57, +0xf8,0x55,0x54,0x5d,0xf0,0x51,0x50,0x11,0x50,0x11,0xf0,0x10,0x00,0x00,0x00,0x00, +0x00,0x3c,0xf0,0x24,0x90,0x24,0x90,0x3c,0x90,0x24,0x90,0x24,0x90,0x3c,0x90,0x24, +0x90,0x24,0x90,0x24,0x94,0x25,0x14,0x25,0x14,0x4e,0x0c,0x00,0x00,0x08,0x00,0x08, +0xf8,0x08,0xa8,0x0a,0xa8,0x2a,0xa8,0x2c,0xa8,0x28,0xf8,0x48,0xa8,0x08,0xa8,0x08, +0xa8,0x14,0xa8,0x12,0xa8,0x22,0xf8,0x40,0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x1f, +0xf0,0x10,0x10,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x00,0x00,0x3f,0xf8,0x21,0x08,0x3f, +0xf8,0x21,0x08,0x3f,0xf8,0x00,0x00,0x00,0x00,0x07,0xc0,0x00,0x40,0x00,0x40,0x04, +0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x08,0x20,0x08,0x20,0x08,0x20,0x10,0x10,0x10, +0x10,0x20,0x08,0x40,0x04,0x00,0x00,0x08,0x20,0x08,0x20,0x14,0x20,0x12,0x20,0x23, +0xfc,0x5c,0x20,0x08,0x70,0x7e,0x70,0x08,0xa8,0x2b,0x24,0x1c,0xf8,0x18,0x20,0x0e, +0x20,0x70,0x20,0x00,0x00,0x23,0x90,0x10,0x90,0x15,0x64,0x43,0x28,0x22,0x10,0x27, +0xf8,0x09,0x24,0x01,0x20,0x1f,0xfc,0x11,0x20,0x21,0x20,0x22,0x24,0x44,0x24,0x58, +0x1c,0x00,0x00,0x1e,0x90,0x02,0x90,0x24,0x64,0x14,0x44,0x08,0x28,0x1f,0xf0,0x22, +0x48,0x42,0x44,0x3f,0xf8,0x02,0x40,0x04,0x40,0x04,0x44,0x18,0x44,0x60,0x3c,0x00, +0x00,0x00,0x68,0x7f,0x28,0x0c,0xd4,0x0c,0x54,0x3f,0x88,0x2d,0xfc,0x2d,0x50,0x35, +0x50,0x37,0xfc,0x21,0x50,0x3f,0x50,0x21,0x94,0x3f,0x94,0x01,0x0c,0x00,0x00,0x00, +0x10,0x1f,0x60,0x1e,0x88,0x10,0x30,0x7f,0xc4,0x12,0x18,0x3d,0xe0,0x01,0x00,0x7f, +0xfc,0x02,0x00,0x07,0xf0,0x1a,0x20,0x61,0xc0,0x1e,0x7c,0x00,0x00,0x04,0x50,0x04, +0x48,0x04,0x48,0x08,0x40,0x08,0x7c,0x1f,0xc8,0x28,0x48,0x48,0x50,0x08,0x30,0x08, +0x20,0x08,0x64,0x08,0x94,0x0b,0x0c,0x08,0x04,0x00,0x00,0x00,0x00,0x3f,0xf8,0x24, +0x48,0x3f,0xf8,0x00,0x00,0x1e,0x48,0x7f,0xc8,0x00,0x48,0x1e,0x48,0x00,0x48,0x3f, +0x48,0x21,0x48,0x3f,0x08,0x20,0x18,0x00,0x00,0x10,0x80,0x10,0x80,0x10,0x80,0x7f, +0xfc,0x10,0x80,0x10,0x80,0x10,0xf8,0x1c,0x88,0x70,0xc8,0x11,0x50,0x11,0x30,0x12, +0x30,0x14,0xc8,0x3b,0x04,0x00,0x00,0x08,0x40,0x08,0x40,0x1f,0xfc,0x14,0xa0,0x23, +0x10,0x44,0x50,0x04,0x48,0x0b,0xfc,0x18,0x48,0x28,0x30,0x48,0x20,0x08,0xd4,0x0b, +0x0c,0x08,0x04,0x00,0x00,0x00,0x00,0x3e,0xf8,0x22,0x88,0x3e,0xf8,0x22,0x88,0x3e, +0xf8,0x25,0x48,0x25,0x28,0x29,0xe8,0x3f,0x48,0x28,0xa8,0x2b,0x68,0x28,0x28,0x20, +0x18,0x00,0x00,0x10,0x40,0x10,0x80,0x11,0xf0,0x7d,0x10,0x15,0xf0,0x15,0x10,0x15, +0xf0,0x17,0xfc,0x17,0x00,0x13,0xfc,0x21,0x54,0x22,0xac,0x42,0x84,0x04,0x18,0x00, +0x00,0x01,0x04,0x01,0x08,0x7f,0xf0,0x54,0xa0,0x52,0xa0,0x53,0x3c,0x5f,0xe8,0x52, +0x28,0x5f,0xe8,0x77,0x28,0x56,0xa8,0x4a,0xc8,0x12,0x48,0x02,0x88,0x00,0x00,0x00, +0x40,0x10,0x40,0x17,0xfc,0x10,0x00,0x7d,0xf0,0x11,0x10,0x11,0xf0,0x10,0x00,0x17, +0xf8,0x1c,0x08,0x65,0xe8,0x05,0x28,0x05,0xe8,0x04,0x18,0x00,0x00,0x08,0x20,0x08, +0x20,0x08,0x50,0x3e,0x50,0x2a,0x88,0x2b,0xfc,0x2a,0x00,0x3e,0x00,0x0a,0xf8,0x0c, +0x88,0x0a,0x88,0x0f,0x88,0x70,0xf8,0x00,0x00,0x00,0x00,0x08,0x40,0x08,0x80,0x0f, +0xf8,0x18,0x80,0x2f,0xf0,0x48,0x80,0x0f,0xf0,0x08,0x80,0x0f,0xf8,0x01,0x00,0x7f, +0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x08,0x40,0x0a,0x48,0x09,0x48,0x11, +0x50,0x10,0x40,0x33,0xf8,0x50,0x40,0x10,0x40,0x17,0xfc,0x10,0x40,0x10,0x40,0x10, +0x40,0x10,0x40,0x10,0x40,0x00,0x00,0x08,0x08,0x49,0x48,0x29,0x48,0x2a,0x48,0x08, +0x48,0x7f,0x48,0x08,0x48,0x08,0x48,0x7f,0x48,0x08,0x48,0x08,0x48,0x08,0x08,0x08, +0x08,0x08,0x18,0x00,0x00,0x01,0x00,0x01,0x00,0x11,0x10,0x09,0x10,0x09,0x20,0x3f, +0xf8,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x00,0x00,0x00,0x00,0x1f,0xf8,0x10,0x00,0x10,0x00,0x1f,0xf0,0x12,0x10,0x12, +0x10,0x12,0x20,0x11,0x20,0x11,0x40,0x10,0x80,0x21,0x40,0x26,0x30,0x58,0x0c,0x00, +0x00,0x08,0x00,0x0a,0xfc,0x4a,0x80,0x2c,0x80,0x28,0xf8,0x7e,0x88,0x08,0x88,0x08, +0xc8,0x0f,0x50,0x79,0x30,0x11,0x20,0x12,0x50,0x22,0x88,0x44,0x04,0x00,0x00,0x10, +0x00,0x11,0xf0,0x11,0x10,0x7d,0x10,0x55,0x10,0x55,0x90,0x55,0x50,0x55,0x50,0x55, +0x50,0x5d,0x10,0x51,0x10,0x12,0x14,0x12,0x14,0x14,0x0c,0x00,0x00,0x12,0x00,0x12, +0x38,0x17,0xa8,0x7c,0xa8,0x16,0xac,0x15,0xac,0x15,0xc4,0x1f,0xf8,0x74,0xa8,0x16, +0xa8,0x16,0x90,0x1a,0xb0,0x18,0xc8,0x31,0x84,0x00,0x00,0x01,0x00,0x7d,0x7c,0x11, +0x10,0x17,0xd0,0x10,0x90,0x14,0x90,0x7a,0xfc,0x13,0x10,0x11,0x10,0x11,0x10,0x1e, +0x90,0x62,0x90,0x04,0x7c,0x08,0x00,0x00,0x00,0x08,0x00,0x09,0xfc,0x09,0x00,0x7f, +0x00,0x09,0xf8,0x19,0x88,0x1d,0x88,0x1b,0x50,0x2b,0x50,0x29,0x20,0x49,0x20,0x0a, +0x50,0x0a,0x88,0x0d,0x04,0x00,0x00,0x10,0x00,0x09,0xf8,0x09,0x08,0x41,0x08,0x21, +0x08,0x21,0x08,0x01,0x08,0x09,0x30,0x09,0x00,0x09,0x00,0x11,0x00,0x11,0x04,0x21, +0x04,0x20,0xfc,0x00,0x00,0x10,0x00,0x09,0xf0,0x09,0x10,0x41,0x10,0x21,0x10,0x21, +0x90,0x01,0x50,0x09,0x50,0x09,0x10,0x09,0x10,0x11,0x10,0x12,0x14,0x22,0x14,0x24, +0x0c,0x00,0x00,0x28,0x00,0x29,0xfc,0x29,0x00,0x29,0x00,0x3f,0xf8,0x21,0x88,0x21, +0x88,0x3d,0x50,0x25,0x50,0x25,0x20,0x26,0x20,0x26,0x50,0x45,0x88,0x46,0x04,0x00, +0x00,0x04,0x00,0x45,0xf8,0x29,0x08,0x11,0x08,0x31,0x08,0x49,0x08,0x09,0x08,0x19, +0x30,0x29,0x00,0x49,0x00,0x09,0x00,0x09,0x04,0x09,0x04,0x30,0xfc,0x00,0x00,0x00, +0x80,0x7c,0xfc,0x12,0x90,0x12,0x90,0x12,0x90,0x12,0x90,0x7e,0xfc,0x12,0x90,0x12, +0x90,0x10,0x90,0x1d,0x10,0x61,0x10,0x02,0xfc,0x04,0x00,0x00,0x00,0x00,0x40,0x02, +0x48,0x7d,0x48,0x55,0x50,0x54,0x40,0x57,0xf8,0x7c,0x40,0x54,0x40,0x57,0xfc,0x54, +0x40,0x54,0x40,0x7c,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x10,0x40,0x3f,0xc0,0x5f, +0x7c,0x15,0xc8,0x7f,0x48,0x15,0x30,0x3f,0xd8,0x23,0x44,0x0c,0xc0,0x03,0x30,0x3f, +0xc8,0x0d,0x60,0x31,0x18,0x01,0x00,0x00,0x00,0x04,0x00,0x08,0x70,0x1e,0x50,0x12, +0x50,0x1a,0x54,0x16,0x94,0x17,0x0c,0x7f,0xf8,0x12,0x88,0x1a,0x50,0x1a,0x50,0x2a, +0x20,0x22,0x50,0x47,0x8c,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x10,0x38,0x0b, +0xc8,0x49,0x50,0x27,0xfc,0x20,0xe0,0x0b,0xf8,0x0d,0x54,0x11,0xf0,0x11,0x50,0x21, +0xf0,0x21,0x10,0x00,0x00,0x00,0x00,0x3e,0xfc,0x22,0x80,0x22,0x80,0x3e,0xf8,0x22, +0xc8,0x3e,0xc8,0x22,0xc8,0x22,0xa8,0x3e,0xb0,0x19,0x10,0x15,0x30,0x22,0xc8,0x47, +0x04,0x00,0x00,0x10,0x40,0x1f,0xfc,0x28,0xa0,0x4d,0x10,0x7f,0xf8,0x08,0x88,0x3e, +0x88,0x2a,0x88,0x3e,0x88,0x2a,0xb0,0x3e,0x80,0x08,0x84,0x7f,0x84,0x08,0x7c,0x00, +0x00,0x00,0x30,0x01,0xc0,0x3f,0x10,0x11,0x10,0x09,0x20,0x09,0x40,0x7f,0xfc,0x01, +0x00,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x01,0x00,0x00,0x00,0x08, +0x00,0x0b,0xfc,0x08,0x20,0x0a,0x40,0x2b,0xf8,0x2d,0x08,0x29,0xf8,0x49,0x08,0x09, +0xf8,0x0d,0x08,0x13,0xf8,0x12,0x90,0x21,0x08,0x46,0x04,0x00,0x00,0x1c,0x00,0x05, +0xfc,0x14,0x20,0x14,0x40,0x12,0xf8,0x22,0x88,0x3f,0xf8,0x52,0x88,0x12,0xf8,0x12, +0x88,0x12,0xf8,0x22,0x50,0x2d,0x88,0x42,0x04,0x00,0x00,0x08,0x00,0x0c,0xfc,0x12, +0x80,0x2a,0x80,0x48,0xf8,0x3e,0xc8,0x22,0xc8,0x3e,0xc8,0x22,0xa8,0x3e,0xb0,0x24, +0x90,0x27,0x30,0x39,0xc8,0x63,0x04,0x00,0x00,0x10,0x80,0x10,0xf0,0x11,0x20,0x7e, +0x40,0x17,0xf8,0x12,0x48,0x12,0x48,0x1f,0xf8,0x72,0x68,0x10,0xa0,0x10,0xa0,0x11, +0x24,0x12,0x24,0x34,0x1c,0x00,0x00,0x00,0x80,0x00,0xf0,0x79,0x20,0x4a,0x40,0x4f, +0xf8,0x4a,0x48,0x7a,0x48,0x4b,0xf8,0x4a,0xa8,0x48,0xa0,0x79,0x20,0x49,0x24,0x42, +0x24,0x04,0x1c,0x00,0x00,0x00,0x30,0x3f,0xd0,0x11,0x10,0x09,0x20,0x7f,0xfc,0x03, +0x80,0x05,0x40,0x19,0x30,0x7f,0xfc,0x11,0x10,0x1f,0xf0,0x11,0x10,0x11,0x10,0x1f, +0xf0,0x00,0x00,0x08,0x00,0x3e,0x70,0x32,0x54,0x2a,0x8c,0x7f,0xf8,0x2a,0x50,0x2a, +0x70,0x47,0x8c,0x1f,0xf0,0x12,0x90,0x12,0x90,0x12,0x90,0x7f,0xfc,0x00,0x00,0x00, +0x00,0x08,0x00,0x3e,0x70,0x32,0x54,0x2a,0x8c,0x7f,0xf8,0x2a,0x50,0x2a,0x30,0x47, +0xcc,0x3f,0xf8,0x02,0x00,0x0f,0xf0,0x74,0x10,0x07,0xf0,0x04,0x10,0x00,0x00,0x04, +0x40,0x7f,0xfc,0x04,0x60,0x1f,0xd0,0x09,0x20,0x7f,0xfc,0x05,0x40,0x19,0x30,0x6f, +0xec,0x09,0x20,0x0f,0xe0,0x09,0x20,0x0f,0xe0,0x08,0x20,0x00,0x00,0x01,0x00,0x01, +0x00,0x7f,0xfc,0x12,0x50,0x12,0x48,0x24,0x44,0x49,0xc4,0x0f,0xe0,0x09,0x20,0x09, +0x20,0x0f,0xe0,0x01,0x20,0x01,0xf0,0x3e,0x08,0x00,0x00,0x00,0x00,0x3f,0xfc,0x21, +0x40,0x21,0x40,0x2f,0x78,0x21,0x40,0x2f,0x78,0x21,0x40,0x2f,0x78,0x22,0x40,0x22, +0x40,0x24,0x40,0x3f,0xfc,0x20,0x00,0x00,0x00,0x02,0x00,0x04,0x00,0x1f,0xf0,0x11, +0x10,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x04,0x40,0x08,0x40,0x7f,0xfc,0x00, +0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x7f,0xfc,0x01,0x00,0x03,0xc0,0x05, +0x30,0x19,0x08,0x61,0x04,0x01,0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x1f, +0xf0,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0xf8,0x08,0x08,0x08,0x08,0x7e,0x08,0x12, +0x08,0x12,0xf8,0x12,0x80,0x3c,0x80,0x24,0x80,0x06,0x80,0x0a,0x84,0x10,0x84,0x20, +0x7c,0x00,0x00,0x00,0x80,0x00,0x80,0x1f,0xfc,0x10,0x00,0x14,0x40,0x14,0x40,0x14, +0x44,0x17,0xc8,0x14,0x70,0x14,0x40,0x14,0x40,0x25,0x44,0x26,0x44,0x58,0x3c,0x00, +0x00,0x10,0x40,0x10,0x40,0x23,0xfc,0x4a,0x48,0x0a,0x50,0x12,0x40,0x13,0xf8,0x32, +0x88,0x52,0x90,0x12,0x50,0x12,0x60,0x14,0x60,0x15,0x90,0x1e,0x0c,0x00,0x00,0x02, +0x80,0x02,0x80,0x3e,0xf8,0x02,0x80,0x3e,0xf8,0x02,0x80,0x7e,0xfc,0x04,0x80,0x01, +0x00,0x14,0x90,0x14,0x88,0x24,0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x00,0x00,0x3f, +0xfc,0x00,0x00,0x1f,0xf8,0x10,0x08,0x1f,0xf8,0x11,0x40,0x1f,0x78,0x11,0x40,0x1f, +0x78,0x21,0x40,0x3e,0x7c,0x42,0x40,0x04,0x40,0x00,0x00,0x12,0x20,0x12,0x20,0x12, +0x20,0x7e,0x24,0x12,0x24,0x13,0xe8,0x12,0x30,0x1e,0x20,0x72,0x20,0x12,0x20,0x12, +0x20,0x12,0xe4,0x13,0x24,0x3c,0x1c,0x00,0x00,0x10,0x40,0x10,0x40,0x13,0xfc,0x7e, +0x48,0x12,0x50,0x12,0x40,0x13,0xf8,0x1e,0x88,0x72,0x90,0x12,0x50,0x12,0x60,0x14, +0x60,0x15,0x90,0x3e,0x0c,0x00,0x00,0x02,0x40,0x3e,0x7c,0x02,0x40,0x3e,0x7c,0x02, +0x40,0x7c,0x7c,0x05,0x40,0x09,0x00,0x7f,0xfc,0x04,0x40,0x02,0x80,0x03,0x80,0x0c, +0x60,0x70,0x1c,0x00,0x00,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x88,0x10,0x88,0x1f, +0x90,0x10,0xa0,0x10,0xc0,0x10,0x80,0x10,0x80,0x11,0x80,0x16,0x84,0x18,0x84,0x60, +0x7c,0x00,0x00,0x10,0x40,0x08,0x28,0x08,0x28,0x40,0x88,0x20,0x90,0x22,0x90,0x02, +0xb0,0x12,0xa8,0x14,0xc4,0x14,0xc4,0x28,0x80,0x21,0x88,0x42,0x88,0x44,0x78,0x00, +0x00,0x00,0x80,0x00,0x80,0x0f,0xfc,0x48,0x40,0x2b,0xfc,0x2a,0x48,0x0a,0x50,0x1b, +0xf0,0x2b,0x10,0x4a,0xa0,0x12,0xa0,0x14,0x40,0x25,0xb0,0x4e,0x0c,0x00,0x00,0x00, +0x80,0x00,0x80,0x1f,0xfc,0x10,0x88,0x10,0x90,0x10,0x80,0x1f,0xf0,0x12,0x10,0x11, +0x20,0x11,0x20,0x10,0xc0,0x20,0xc0,0x23,0x30,0x4c,0x0c,0x00,0x00,0x00,0x40,0x7c, +0x40,0x10,0x80,0x13,0xf8,0x12,0x48,0x13,0xf8,0x3e,0x48,0x27,0xf8,0x64,0xa0,0x25, +0x20,0x27,0xfc,0x3c,0x20,0x20,0x20,0x00,0x20,0x00,0x00,0x04,0x40,0x18,0x20,0x70, +0x28,0x10,0x88,0x10,0x88,0x7e,0x90,0x12,0x90,0x1a,0xb0,0x36,0xa8,0x34,0xc4,0x50, +0x84,0x11,0x88,0x12,0x88,0x14,0x78,0x00,0x00,0x10,0xa0,0x10,0xa0,0x14,0xa0,0x67, +0xbc,0x18,0xa0,0x10,0xa0,0x2b,0xbc,0x7c,0xa0,0x18,0xa0,0x37,0xbc,0x35,0x20,0x31, +0x20,0x52,0x20,0x14,0x20,0x00,0x00,0x00,0x00,0x3f,0xf8,0x24,0x48,0x3f,0xf8,0x08, +0x40,0x12,0x58,0x7f,0x60,0x3e,0x44,0x22,0x3c,0x3e,0x40,0x22,0x58,0x3e,0x60,0x22, +0x44,0x26,0x3c,0x00,0x00,0x00,0x00,0x3d,0xf8,0x25,0x48,0x25,0x48,0x25,0x48,0x3d, +0x48,0x25,0xf8,0x25,0x00,0x3d,0x00,0x25,0x00,0x25,0x00,0x25,0x04,0x25,0x04,0x4c, +0xfc,0x00,0x00,0x10,0x20,0x10,0x20,0x10,0x20,0x7d,0xfc,0x09,0x28,0x0b,0x30,0x13, +0xf8,0x3d,0x88,0x55,0x50,0x13,0x50,0x12,0x20,0x12,0x50,0x15,0x88,0x1e,0x04,0x00, +0x00,0x00,0x50,0x3c,0x50,0x00,0x50,0x7f,0xdc,0x00,0x50,0x3c,0x50,0x03,0xdc,0x3c, +0x50,0x00,0x50,0x3c,0xdc,0x27,0x90,0x24,0x90,0x3d,0x10,0x02,0x10,0x00,0x00,0x02, +0x80,0x3f,0xf8,0x02,0x88,0x3f,0xf8,0x22,0x80,0x3f,0xfc,0x18,0x84,0x6f,0xe8,0x08, +0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x06,0x60,0x38,0x18,0x00,0x00,0x00,0x10,0x27, +0x90,0x14,0xfc,0x14,0xc8,0x07,0xa8,0x04,0x30,0x77,0xfc,0x1c,0x90,0x14,0x90,0x14, +0xfc,0x17,0x90,0x1c,0x10,0x26,0x10,0x41,0xfc,0x00,0x00,0x02,0x40,0x02,0x40,0x02, +0x40,0x3e,0x7c,0x02,0x40,0x02,0x40,0x3e,0x7c,0x02,0x40,0x02,0x40,0x7e,0x7c,0x04, +0x40,0x04,0x40,0x08,0x40,0x10,0x40,0x00,0x00,0x00,0x00,0x1f,0xc8,0x02,0x70,0x0e, +0x50,0x32,0x48,0x12,0x28,0x12,0x18,0x7f,0xc8,0x12,0x50,0x12,0x70,0x22,0x28,0x22, +0x24,0x42,0x14,0x02,0x0c,0x00,0x00,0x10,0x00,0x15,0xf8,0x12,0x50,0x7e,0x20,0x10, +0xf8,0x10,0xa8,0x3e,0xf8,0x36,0xa8,0x36,0xf8,0x52,0xa8,0x52,0xa8,0x12,0x98,0x15, +0x80,0x18,0x7c,0x00,0x00,0x10,0x40,0x1f,0xfc,0x28,0xa0,0x45,0x10,0x12,0x20,0x7f, +0xfc,0x12,0xa8,0x1e,0xb0,0x12,0xf8,0x1e,0xc8,0x12,0xa8,0x7f,0x90,0x15,0x68,0x63, +0x84,0x00,0x00,0x09,0x20,0x09,0x20,0x0f,0xf8,0x11,0x20,0x17,0xfc,0x34,0x00,0x57, +0xf8,0x16,0x48,0x17,0xf8,0x16,0x48,0x17,0xf8,0x1a,0x48,0x12,0x48,0x12,0x18,0x00, +0x00,0x00,0x00,0x1f,0xf8,0x10,0x08,0x10,0x08,0x1f,0xf8,0x10,0x68,0x17,0x80,0x10, +0xf0,0x17,0x80,0x10,0xfc,0x1f,0x80,0x20,0x80,0x20,0x84,0x40,0x7c,0x00,0x00,0x12, +0x20,0x1a,0xa0,0x2a,0xa0,0x4a,0xa0,0x1f,0xfc,0x18,0x48,0x20,0xc8,0x7f,0xe8,0x26, +0x28,0x26,0x30,0x2a,0x90,0x2b,0x30,0x32,0xc8,0x20,0x04,0x00,0x00,0x09,0x20,0x09, +0x20,0x09,0x20,0x7f,0x24,0x09,0x24,0x19,0xe8,0x1d,0x30,0x1b,0x20,0x2b,0x20,0x29, +0x20,0x49,0x20,0x09,0x64,0x09,0xa4,0x0e,0x1c,0x00,0x00,0x00,0x00,0x1f,0xf0,0x11, +0x10,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x10,0x80,0x10,0x98,0x1f,0xe0,0x10, +0x80,0x10,0x84,0x1e,0x84,0x70,0x7c,0x00,0x00,0x00,0x00,0x7e,0xfc,0x08,0x20,0x3e, +0xf8,0x08,0x20,0x0e,0xfc,0x70,0x80,0x10,0x80,0x10,0x98,0x1f,0xe0,0x10,0x80,0x10, +0x84,0x1e,0x84,0x70,0x7c,0x00,0x00,0x00,0x00,0x1f,0xf8,0x11,0x08,0x11,0x08,0x1f, +0xf8,0x10,0x00,0x17,0xf0,0x14,0x10,0x17,0xf0,0x14,0x10,0x27,0xf0,0x24,0x10,0x47, +0xf0,0x00,0x00,0x00,0x00,0x08,0x20,0x04,0x20,0x04,0x40,0x3f,0xf8,0x01,0x00,0x1f, +0xf0,0x01,0x00,0x7f,0xfc,0x01,0x00,0x7f,0xfc,0x02,0x80,0x04,0x40,0x18,0x30,0x60, +0x0c,0x00,0x00,0x01,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x1f,0xf0,0x11, +0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x04,0x40,0x7f,0xfc,0x04,0x40,0x18,0x40,0x00, +0x00,0x08,0x40,0x08,0x40,0x08,0x78,0x7e,0x88,0x08,0x90,0x1d,0x50,0x1a,0x20,0x1a, +0x50,0x28,0xc8,0x29,0x24,0x48,0x00,0x09,0xc0,0x08,0x30,0x08,0x08,0x00,0x00,0x04, +0x40,0x18,0x80,0x73,0xf8,0x12,0x48,0x13,0xf8,0x7e,0x48,0x13,0xf8,0x18,0xa8,0x35, +0x20,0x37,0xfc,0x50,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x00,0x00,0x00,0x00,0x3f, +0xf8,0x22,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x22,0x40,0x24,0x48,0x24,0x48,0x28, +0x38,0x30,0x00,0x20,0x00,0x3f,0xfc,0x20,0x00,0x00,0x00,0x00,0x00,0x7f,0xfc,0x01, +0x08,0x01,0x10,0x09,0x20,0x09,0x00,0x09,0x00,0x09,0xf0,0x09,0x00,0x09,0x00,0x15, +0x00,0x13,0x00,0x21,0x80,0x40,0x7c,0x00,0x00,0x00,0x10,0x1f,0x60,0x12,0x88,0x1e, +0x30,0x7f,0xc4,0x12,0x18,0x3f,0xe0,0x04,0x80,0x14,0x98,0x17,0xe0,0x14,0x80,0x14, +0x84,0x17,0x84,0x78,0x7c,0x00,0x00,0x01,0x00,0x01,0x00,0x3f,0xfc,0x04,0x20,0x02, +0x40,0x1f,0xfc,0x10,0x20,0x10,0xc0,0x17,0x10,0x10,0x60,0x13,0x84,0x20,0x18,0x20, +0x60,0x47,0x80,0x00,0x00,0x00,0x40,0x3c,0x40,0x27,0xfc,0x24,0xe0,0x3d,0x50,0x26, +0x4c,0x24,0xa0,0x3f,0x58,0x26,0x4c,0x25,0x50,0x24,0xe0,0x27,0x58,0x24,0x44,0x4c, +0xc0,0x00,0x00,0x04,0x40,0x7f,0xfc,0x05,0x40,0x3f,0xf0,0x01,0x00,0x7f,0xfc,0x04, +0x88,0x1a,0x78,0x63,0xe0,0x06,0x40,0x19,0x80,0x03,0x80,0x0c,0x60,0x70,0x1c,0x00, +0x00,0x00,0x10,0x3c,0x10,0x24,0x10,0x24,0x10,0x27,0xfc,0x3c,0x10,0x25,0x10,0x24, +0x90,0x3c,0x90,0x24,0x10,0x24,0x10,0x24,0x10,0x24,0x10,0x4c,0x30,0x00,0x00,0x00, +0x00,0x78,0x78,0x0f,0xc8,0x09,0x08,0x39,0x38,0x23,0xa0,0x22,0xa0,0x3a,0xb8,0x2b, +0xa8,0x0a,0x88,0x0a,0x88,0x0b,0x88,0x0a,0x88,0x30,0x30,0x00,0x00,0x02,0x00,0x01, +0x10,0x00,0x90,0x04,0x90,0x04,0x20,0x04,0x20,0x24,0x50,0x24,0x48,0x24,0x84,0x45, +0x04,0x46,0x00,0x04,0x10,0x1c,0x10,0x63,0xf0,0x00,0x00,0x00,0x00,0x1f,0xf0,0x11, +0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x09,0x20,0x7f,0xfc,0x09,0x20,0x1f,0xf0,0x01, +0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x00,0x00,0x10,0x40,0x1f,0xfc,0x25,0x20,0x5f, +0xf0,0x01,0x10,0x7f,0xfc,0x01,0x10,0x1f,0xf0,0x01,0x00,0x1f,0xf0,0x01,0x00,0x3f, +0xf8,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x27,0xfc,0x10,0x00,0x11,0xf0,0x01, +0x10,0x01,0xf0,0x70,0x00,0x13,0xf8,0x12,0x48,0x13,0xf8,0x12,0x48,0x13,0xf8,0x2c, +0x00,0x43,0xfc,0x00,0x00,0x10,0x40,0x10,0x40,0x10,0xa0,0x7c,0xa0,0x11,0x10,0x1b, +0xf8,0x34,0x04,0x34,0x00,0x37,0xfc,0x50,0xa0,0x50,0x90,0x11,0x38,0x17,0xc4,0x10, +0x04,0x00,0x00,0x10,0x00,0x11,0xfc,0x11,0x20,0x11,0x20,0x7d,0x20,0x25,0xf8,0x25, +0x08,0x25,0x08,0x79,0xf8,0x49,0x20,0x0d,0x20,0x15,0x20,0x21,0xfc,0x40,0x00,0x00, +0x00,0x10,0x1c,0x13,0xe4,0x12,0x48,0x11,0x30,0x7f,0xfc,0x24,0x40,0x27,0xfc,0x24, +0x40,0x74,0xf8,0x48,0xc8,0x09,0x30,0x16,0x30,0x24,0xc8,0x43,0x04,0x00,0x00,0x08, +0x00,0x09,0xf8,0x0a,0x48,0x72,0x48,0x14,0x48,0x0c,0x48,0x13,0xfc,0x7e,0x48,0x08, +0x48,0x2c,0x48,0x2a,0x48,0x2a,0x48,0x49,0xfc,0x08,0x00,0x00,0x00,0x00,0x00,0x7f, +0xfc,0x01,0x00,0x02,0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0xf0,0x10, +0x10,0x10,0x10,0x10,0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x04, +0xc8,0x7b,0xb8,0x02,0xa8,0x3c,0xc8,0x01,0x98,0x38,0xc0,0x03,0x30,0x3d,0xcc,0x28, +0x20,0x29,0xc8,0x38,0x30,0x2b,0xc0,0x00,0x00,0x08,0x40,0x08,0x40,0x0f,0xfc,0x10, +0x40,0x13,0xf8,0x30,0x40,0x57,0xfc,0x10,0xc0,0x11,0x48,0x13,0x30,0x15,0x20,0x11, +0x50,0x11,0x88,0x16,0x04,0x00,0x00,0x04,0x10,0x07,0x10,0x04,0x20,0x3f,0xa8,0x29, +0x48,0x2e,0x10,0x38,0x94,0x27,0x24,0x2a,0x08,0x2a,0x08,0x2a,0x10,0x2a,0x20,0x32, +0x04,0x41,0xfc,0x00,0x00,0x10,0x00,0x17,0xfc,0x10,0xa0,0x7f,0xf8,0x12,0xa8,0x1b, +0xf8,0x34,0x00,0x35,0xf0,0x30,0x00,0x57,0xfc,0x51,0x50,0x12,0x48,0x14,0x48,0x10, +0xc0,0x00,0x00,0x01,0x00,0x11,0x00,0x09,0x08,0x09,0x88,0x01,0x90,0x7d,0x60,0x05, +0x40,0x09,0x20,0x09,0x20,0x11,0x10,0x21,0x08,0x41,0x04,0x01,0x00,0x03,0x00,0x00, +0x00,0x10,0x00,0x0f,0xfc,0x08,0xa0,0x43,0xf8,0x22,0xa8,0x23,0xf8,0x00,0x00,0x13, +0xf8,0x10,0x00,0x17,0xfc,0x21,0x50,0x22,0x48,0x44,0x48,0x40,0xc0,0x00,0x00,0x00, +0x08,0x7f,0x30,0x19,0xd0,0x7f,0x50,0x5b,0x50,0x7f,0x50,0x01,0x50,0x3d,0x50,0x01, +0x50,0x7f,0x70,0x19,0x50,0x36,0x78,0x53,0xd8,0x34,0x04,0x00,0x00,0x00,0x00,0x7f, +0xfc,0x02,0x80,0x1f,0xf0,0x12,0x90,0x1f,0xf0,0x00,0x00,0x1f,0xf0,0x00,0x00,0x7f, +0xfc,0x05,0x40,0x19,0x30,0x61,0x08,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x3f, +0xf8,0x01,0x00,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x03,0x10,0x04,0x90,0x1c,0xa0,0x64, +0x40,0x04,0x20,0x07,0x10,0x38,0x0c,0x00,0x00,0x00,0x00,0x3d,0xfc,0x00,0x20,0x7f, +0x28,0x00,0xa8,0x3c,0xb0,0x00,0x20,0x3f,0xfc,0x00,0x20,0x3c,0x20,0x24,0x20,0x24, +0x20,0x24,0x20,0x3c,0x20,0x00,0x00,0x04,0x80,0x18,0x80,0x66,0x80,0x14,0xf8,0x19, +0x08,0x6a,0x08,0x0c,0x88,0x14,0x48,0x64,0x48,0x0c,0x08,0x14,0x08,0x64,0x08,0x04, +0x08,0x18,0x30,0x00,0x00,0x00,0x80,0x3f,0xfc,0x24,0x00,0x3f,0xf8,0x24,0x48,0x2f, +0x48,0x29,0x78,0x2f,0x48,0x29,0x48,0x2f,0x78,0x24,0x48,0x3f,0xc8,0x44,0x88,0x45, +0x18,0x00,0x00,0x11,0x10,0x11,0x10,0x17,0xfc,0x7d,0x10,0x11,0x10,0x10,0x00,0x1b, +0xf8,0x12,0x48,0x32,0x48,0x53,0xf8,0x12,0x48,0x12,0x48,0x13,0xf8,0x30,0x00,0x00, +0x00,0x00,0x80,0x00,0x80,0x0f,0xfc,0x48,0x00,0x2b,0xf8,0x28,0x40,0x0b,0xf8,0x1a, +0x48,0x6a,0x68,0x0a,0x98,0x13,0x18,0x12,0x08,0x22,0x08,0x42,0x18,0x00,0x00,0x02, +0x20,0x0c,0x20,0x38,0x20,0x08,0xb0,0x08,0xa8,0x7e,0xa4,0x08,0xa4,0x1d,0x28,0x1a, +0x68,0x2a,0x30,0x48,0x10,0x08,0x20,0x08,0xc0,0x0b,0x00,0x00,0x00,0x04,0x40,0x04, +0x40,0x7f,0xfc,0x04,0x40,0x04,0x40,0x1f,0xf0,0x11,0x10,0x11,0x10,0x1f,0xf0,0x11, +0x10,0x11,0x10,0x11,0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x08,0x90,0x08,0x90,0x15, +0xfc,0x12,0x90,0x22,0x90,0x7c,0x00,0x09,0xf8,0x7f,0x48,0x09,0x48,0x2b,0xf8,0x1d, +0x48,0x19,0x48,0x0f,0xf8,0x70,0x00,0x00,0x00,0x08,0x08,0x08,0xf0,0x14,0x80,0x12, +0x80,0x22,0xfc,0x5c,0x90,0x08,0x90,0x7e,0x90,0x09,0xfc,0x2a,0x00,0x1c,0x50,0x18, +0x48,0x0e,0x84,0x71,0x04,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x3e, +0xf8,0x00,0x00,0x7f,0xfc,0x08,0x20,0x2c,0xb0,0x2a,0xa8,0x2a,0xa4,0x49,0x24,0x08, +0x20,0x18,0x60,0x00,0x00,0x08,0x00,0x09,0xfc,0x08,0x40,0x3e,0x50,0x2a,0x88,0x2b, +0xfc,0x2a,0x24,0x3e,0x20,0x2a,0xf8,0x0c,0x20,0x0a,0x20,0x0e,0x20,0x73,0xfc,0x00, +0x00,0x00,0x00,0x08,0x20,0x08,0xf8,0x1e,0x28,0x25,0xfc,0x7e,0x68,0x2a,0x70,0x3e, +0xc4,0x2b,0x3c,0x3e,0xf8,0x04,0x88,0x3a,0xf8,0x2e,0x88,0x28,0xf8,0x40,0x88,0x00, +0x00,0x00,0x00,0x0f,0xc0,0x08,0x40,0x08,0x40,0x08,0x40,0x0f,0xc0,0x00,0x00,0x00, +0x00,0x7c,0xf8,0x44,0x88,0x44,0x88,0x44,0x88,0x7c,0xf8,0x00,0x00,0x00,0x00,0x11, +0x10,0x11,0x10,0x11,0x20,0x7f,0xe0,0x11,0x08,0x19,0x08,0x37,0x90,0x37,0x50,0x33, +0x64,0x55,0x04,0x55,0x08,0x11,0x08,0x11,0x10,0x11,0x20,0x00,0x00,0x10,0x20,0x13, +0xe8,0x10,0x24,0x7f,0xfc,0x08,0xa0,0x08,0xa0,0x4a,0xa0,0x2a,0xe0,0x12,0x90,0x12, +0x90,0x1a,0xb4,0x2a,0xcc,0x27,0x0c,0x40,0x04,0x00,0x00,0x10,0x30,0x0b,0xc0,0x0a, +0x00,0x42,0x00,0x23,0xf8,0x22,0x20,0x02,0x20,0x12,0x20,0x1f,0xfc,0x20,0x00,0x22, +0x20,0x42,0x10,0x44,0x08,0x48,0x08,0x00,0x00,0x22,0x00,0x12,0xfc,0x1a,0x10,0x4b, +0xa0,0x2a,0x78,0x3f,0xc8,0x03,0x78,0x16,0xc8,0x16,0xf8,0x2f,0x48,0x29,0x78,0x42, +0x30,0x44,0x48,0x49,0x84,0x00,0x00,0x01,0x80,0x04,0x40,0x1f,0xf0,0x62,0x4c,0x0c, +0xc0,0x3f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x06, +0x60,0x38,0x18,0x00,0x00,0x01,0x00,0x3f,0xfc,0x20,0x08,0x5f,0xf0,0x09,0x30,0x33, +0xc8,0x7f,0xe0,0x08,0x20,0x0f,0xe0,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x06,0x60,0x38, +0x18,0x00,0x00,0x08,0x00,0x09,0xfc,0x2e,0x20,0x28,0x40,0x28,0xf8,0x7f,0x88,0x0c, +0xf8,0x2a,0x88,0x29,0xf8,0x49,0x88,0x1a,0xf8,0x04,0x50,0x18,0x88,0x63,0x04,0x00, +0x00,0x10,0x40,0x10,0x40,0x10,0x40,0x3f,0x40,0x40,0x7c,0x3e,0x88,0x2a,0x88,0x2b, +0x48,0x7f,0x50,0x2a,0x30,0x2a,0x20,0x7f,0x50,0x43,0x88,0x06,0x04,0x00,0x00,0x22, +0x00,0x13,0xfc,0x14,0x80,0x7f,0x80,0x14,0xf0,0x14,0x90,0x14,0xd0,0x7f,0xb0,0x14, +0xb0,0x14,0x90,0x14,0x94,0x24,0xec,0x27,0x0c,0x44,0x04,0x00,0x00,0x00,0x00,0x7f, +0xfc,0x00,0x80,0x00,0x80,0x01,0x00,0x03,0x80,0x05,0x60,0x19,0x10,0x61,0x08,0x01, +0x04,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x04,0x10,0x04,0x10,0x04, +0x10,0x08,0x10,0x0b,0xfc,0x18,0x10,0x29,0x10,0x48,0x90,0x08,0x90,0x08,0x10,0x08, +0x10,0x08,0x10,0x08,0x10,0x08,0x30,0x00,0x00,0x00,0x40,0x10,0x80,0x13,0xf0,0x12, +0x10,0x7f,0xf0,0x12,0x00,0x13,0xf8,0x12,0x08,0x13,0xf8,0x1c,0x40,0x67,0xfc,0x00, +0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x01, +0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x80,0x02,0x80,0x02,0x40,0x04,0x20,0x18, +0x10,0x60,0x0c,0x00,0x00,0x10,0x00,0x11,0xf0,0x10,0x10,0x11,0xf0,0x7c,0x10,0x25, +0xf0,0x24,0x00,0x27,0xfc,0x7a,0x44,0x4b,0xf8,0x0e,0x48,0x12,0x48,0x22,0x70,0x40, +0x40,0x00,0x00,0x01,0x00,0x7f,0xfc,0x40,0x04,0x5f,0xf4,0x00,0x00,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x00,0x00,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x00, +0x00,0x00,0x00,0x7f,0xfc,0x40,0x04,0x5f,0xf4,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x00,0x00,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x00,0x00,0x02, +0x00,0x02,0x00,0x02,0x00,0x7f,0xfc,0x04,0x80,0x04,0x80,0x0f,0xf8,0x08,0x88,0x18, +0x88,0x28,0x88,0x48,0x88,0x08,0x88,0x08,0xb0,0x00,0x80,0x00,0x00,0x00,0x80,0x00, +0x80,0x1f,0xfc,0x11,0x10,0x11,0x10,0x12,0x10,0x13,0xfc,0x16,0x10,0x1a,0x90,0x12, +0x50,0x12,0x50,0x22,0x10,0x22,0x10,0x42,0x30,0x00,0x00,0x10,0x40,0x10,0x40,0x10, +0x40,0x17,0xfc,0x38,0xa0,0x35,0x20,0x35,0xfc,0x53,0x24,0x15,0x24,0x19,0x24,0x11, +0x24,0x11,0x38,0x10,0x20,0x10,0x20,0x00,0x00,0x10,0x40,0x10,0x40,0x10,0x40,0x7f, +0xf8,0x10,0x40,0x10,0x40,0x10,0x40,0x1f,0xfc,0x70,0x40,0x10,0xa0,0x10,0xa0,0x11, +0x10,0x16,0x08,0x38,0x04,0x00,0x00,0x0a,0x40,0x7f,0x40,0x08,0x40,0x3e,0x40,0x2a, +0xfc,0x3e,0x90,0x2b,0x90,0x3e,0x50,0x08,0x50,0x7f,0x20,0x1e,0x20,0x12,0x50,0x23, +0x88,0x4e,0x04,0x00,0x00,0x04,0x60,0x0c,0x30,0x32,0x48,0x03,0x80,0x0c,0x60,0x70, +0xdc,0x0f,0x00,0x08,0x00,0x0f,0xf8,0x08,0x80,0x10,0x80,0x10,0x80,0x20,0x80,0x40, +0x80,0x00,0x00,0x08,0x20,0x04,0x40,0x3f,0xf8,0x22,0x90,0x12,0x90,0x12,0xa0,0x7f, +0xfc,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00, +0x00,0x10,0x08,0x08,0x70,0x0f,0x88,0x44,0x48,0x22,0x50,0x22,0x00,0x03,0xf8,0x10, +0x30,0x10,0x40,0x17,0xfc,0x20,0x40,0x20,0x40,0x40,0x40,0x40,0xc0,0x00,0x00,0x04, +0x40,0x04,0x20,0x08,0x10,0x10,0x08,0x24,0x48,0x04,0x40,0x04,0x40,0x02,0x80,0x02, +0x80,0x01,0x00,0x02,0x80,0x04,0x40,0x18,0x30,0x60,0x0c,0x00,0x00,0x10,0x40,0x10, +0x40,0x1f,0xfc,0x28,0xa0,0x45,0x10,0x08,0x10,0x08,0x10,0x17,0xfc,0x11,0x10,0x30, +0x90,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x30,0x00,0x00,0x00,0x80,0x1f,0xfc,0x11, +0x10,0x13,0xfc,0x16,0x90,0x1a,0x50,0x12,0x50,0x12,0xb0,0x2f,0xf8,0x29,0xc8,0x4a, +0xa8,0x09,0x48,0x0a,0x28,0x08,0x18,0x00,0x00,0x01,0x00,0x01,0xf0,0x1f,0xfc,0x17, +0x28,0x11,0xe0,0x17,0xf8,0x14,0x88,0x17,0xf8,0x14,0x88,0x17,0xf8,0x22,0x10,0x23, +0xf0,0x42,0x10,0x02,0x30,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x05, +0x40,0x01,0x00,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x01,0x00,0x02,0x80,0x04,0x40,0x18, +0x30,0x60,0x0c,0x00,0x00,0x01,0x08,0x3c,0x90,0x03,0xfc,0x7e,0xa8,0x01,0xa8,0x3d, +0xb0,0x03,0xfc,0x3c,0x00,0x01,0xf8,0x3d,0x08,0x25,0xf8,0x25,0x08,0x3d,0xf8,0x00, +0x00,0x00,0x00,0x02,0x00,0x07,0xe0,0x18,0xc0,0x61,0x00,0x1f,0xf0,0x10,0x10,0x1f, +0xf0,0x10,0x10,0x1f,0xf0,0x10,0x10,0x1f,0xf0,0x02,0x40,0x0c,0x30,0x70,0x08,0x00, +0x00,0x00,0x10,0x3d,0xf8,0x24,0x14,0x24,0x14,0x3f,0xfc,0x24,0x50,0x3d,0x50,0x25, +0x70,0x25,0x50,0x3d,0x50,0x19,0x74,0x15,0xcc,0x27,0x0c,0x40,0x04,0x00,0x00,0x04, +0x20,0x04,0x20,0x3f,0xa0,0x04,0x20,0x04,0x20,0x7f,0xf0,0x04,0x28,0x14,0x24,0x17, +0xa4,0x14,0x20,0x14,0x20,0x2c,0x20,0x26,0x00,0x41,0xfc,0x00,0x00,0x01,0x00,0x02, +0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x00,0x0f,0xf0,0x08,0x10,0x0f,0xf0,0x01, +0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x88,0x3c,0x88,0x24, +0x88,0x29,0x08,0x29,0xfc,0x33,0x08,0x2b,0x48,0x25,0x28,0x25,0x28,0x25,0x08,0x25, +0x08,0x39,0x08,0x21,0x08,0x21,0x18,0x00,0x00,0x09,0x00,0x09,0x00,0x09,0xfc,0x12, +0x00,0x13,0xf0,0x35,0x50,0x51,0x50,0x1f,0xfc,0x12,0x50,0x12,0x50,0x17,0xfc,0x14, +0x10,0x10,0x10,0x10,0x60,0x00,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x7f,0xfc,0x16, +0xa8,0x12,0xa8,0x17,0xfc,0x1a,0xa8,0x72,0xa8,0x17,0xfc,0x10,0x00,0x15,0x48,0x14, +0xa4,0x38,0xa4,0x00,0x00,0x00,0x50,0x1f,0x48,0x00,0x48,0x00,0x40,0x7f,0xfc,0x04, +0x40,0x04,0x40,0x17,0xc0,0x14,0x40,0x14,0x20,0x14,0x24,0x17,0x94,0x78,0x0c,0x00, +0x04,0x00,0x00,0x08,0x00,0x08,0x00,0x1f,0xf8,0x2a,0xa0,0x7f,0xfc,0x0a,0xa0,0x3f, +0xf8,0x08,0x20,0x0f,0xf8,0x12,0xa0,0x6a,0xa0,0x0d,0xfc,0x18,0x20,0x60,0x20,0x00, +0x00,0x04,0x40,0x7f,0xfc,0x14,0x40,0x1f,0xf8,0x12,0x48,0x3f,0xe8,0x22,0x28,0x5f, +0xc8,0x12,0x48,0x1f,0xc8,0x12,0x48,0x1f,0xc8,0x12,0x48,0x12,0xf0,0x00,0x00,0x04, +0x40,0x7f,0xfc,0x04,0x40,0x10,0x00,0x1f,0xf8,0x2a,0xa0,0x4a,0xa0,0x7f,0xfc,0x0a, +0xa0,0x0a,0xa0,0x7f,0xfc,0x14,0x90,0x22,0x48,0x42,0x44,0x00,0x00,0x08,0x00,0x08, +0x78,0x7f,0x48,0x22,0x50,0x12,0x50,0x14,0x60,0x7f,0x50,0x00,0x48,0x3e,0x44,0x22, +0x44,0x22,0x64,0x22,0x58,0x3e,0x40,0x00,0x40,0x00,0x00,0x08,0x10,0x08,0x10,0x3e, +0x10,0x09,0xfc,0x08,0x10,0x7f,0x10,0x08,0x90,0x08,0x50,0x3e,0x50,0x08,0x10,0x08, +0x10,0x0e,0x10,0x70,0x10,0x00,0x30,0x00,0x00,0x10,0x00,0x13,0xf8,0x12,0x38,0x7f, +0xc8,0x12,0x48,0x1b,0xf8,0x37,0x58,0x37,0x58,0x33,0xf8,0x53,0x6c,0x52,0x5c,0x14, +0x7c,0x17,0x84,0x18,0x04,0x00,0x00,0x00,0x00,0x1f,0xf0,0x10,0xd0,0x1f,0x10,0x11, +0x10,0x17,0xd0,0x15,0x50,0x15,0x50,0x17,0xd0,0x15,0x10,0x11,0x54,0x21,0xec,0x2e, +0x2c,0x40,0x04,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x7f,0xfc,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x3c,0x7f,0xe0,0x00, +0x20,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x3e,0x78,0x22,0xc8,0x23, +0x50,0x3e,0x30,0x08,0xc8,0x2f,0xfc,0x28,0x88,0x2e,0x88,0x38,0xf8,0x60,0x00,0x00, +0x00,0x08,0x40,0x08,0x50,0x08,0x48,0x10,0x48,0x10,0x40,0x37,0xfc,0x50,0x40,0x10, +0x40,0x10,0x40,0x10,0xa0,0x10,0xa0,0x11,0x10,0x16,0x08,0x18,0x04,0x00,0x00,0x00, +0x08,0x7f,0x48,0x00,0x48,0x3e,0x48,0x22,0x48,0x3e,0x48,0x00,0x48,0x7f,0x48,0x49, +0x48,0x7f,0x48,0x49,0x48,0x49,0x08,0x7f,0x08,0x41,0x18,0x00,0x00,0x11,0x00,0x11, +0x00,0x21,0xfc,0x4b,0xf0,0x0d,0x10,0x11,0xf0,0x11,0x10,0x31,0xf0,0x50,0x80,0x11, +0xf0,0x16,0xa0,0x10,0x40,0x11,0xb0,0x1e,0x0c,0x00,0x00,0x10,0x00,0x13,0xf8,0x10, +0x00,0x7d,0xf0,0x55,0x10,0x55,0xf0,0x54,0x00,0x57,0xf8,0x56,0x48,0x5e,0x48,0x53, +0xf8,0x12,0x48,0x13,0xf8,0x10,0x00,0x00,0x00,0x00,0x00,0x3d,0xf8,0x25,0x08,0x25, +0x08,0x25,0x30,0x3d,0x00,0x25,0xf8,0x25,0x88,0x3d,0x50,0x25,0x50,0x25,0x20,0x25, +0x50,0x25,0x88,0x4d,0x04,0x00,0x00,0x10,0x00,0x13,0xf8,0x10,0x00,0x7d,0xf0,0x09, +0x10,0x09,0xf0,0x10,0x00,0x1b,0xf8,0x36,0x48,0x57,0xf8,0x12,0x48,0x12,0x48,0x13, +0xf8,0x10,0x00,0x00,0x00,0x00,0x80,0x3c,0x80,0x24,0xfc,0x25,0xf8,0x3e,0x88,0x24, +0xf8,0x24,0x88,0x3c,0xf8,0x24,0x40,0x24,0xf8,0x27,0x50,0x24,0x20,0x24,0xd0,0x4f, +0x0c,0x00,0x00,0x11,0x00,0x11,0x00,0x13,0xfc,0x7d,0xf0,0x09,0x10,0x0b,0xf0,0x13, +0x10,0x1d,0xf0,0x34,0x80,0x51,0xf0,0x16,0xa0,0x10,0x40,0x11,0xb0,0x16,0x0c,0x00, +0x00,0x00,0x00,0x7f,0xfc,0x1f,0xf0,0x12,0x90,0x1f,0xf0,0x11,0x00,0x29,0xfc,0x4b, +0x10,0x15,0xf0,0x31,0x10,0x51,0xf0,0x13,0xa0,0x10,0xe0,0x17,0x1c,0x00,0x00,0x12, +0xa8,0x0a,0xa8,0x0a,0xa8,0x42,0xa8,0x23,0xb8,0x22,0x08,0x03,0xf8,0x12,0x08,0x13, +0xb8,0x12,0xa8,0x22,0xa8,0x24,0xa8,0x44,0xa8,0x48,0x08,0x00,0x00,0x04,0x80,0x04, +0x80,0x3f,0xf0,0x04,0x90,0x04,0x90,0x3f,0xf0,0x24,0x90,0x24,0x80,0x3f,0xf8,0x24, +0x88,0x08,0x88,0x08,0x88,0x10,0xb0,0x20,0x80,0x00,0x00,0x08,0x40,0x08,0x40,0x08, +0x40,0x7e,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x0c,0x80,0x78,0xa0,0x08,0x90,0x09, +0x08,0x09,0x38,0x0f,0xc4,0x18,0x04,0x00,0x00,0x11,0x20,0x09,0x20,0x0f,0xf8,0x41, +0x28,0x21,0x28,0x27,0xf8,0x05,0x20,0x15,0x20,0x17,0xfc,0x11,0x24,0x21,0x24,0x22, +0x38,0x42,0x20,0x44,0x20,0x00,0x00,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x10, +0x80,0x10,0x80,0x30,0x80,0x51,0x00,0x11,0x20,0x11,0x10,0x12,0x08,0x12,0x78,0x1f, +0x84,0x10,0x04,0x00,0x00,0x09,0x00,0x29,0x00,0x29,0x00,0x29,0xf8,0x3e,0xa8,0x2a, +0xa8,0x4c,0xa8,0x09,0x28,0x0d,0x28,0x7a,0x48,0x08,0x48,0x08,0x88,0x09,0x08,0x08, +0x30,0x00,0x00,0x08,0x48,0x08,0x48,0x1e,0x48,0x24,0x88,0x7e,0xfc,0x2b,0x88,0x3e, +0xc8,0x2a,0xa8,0x3e,0xa8,0x04,0x88,0x3a,0x88,0x2e,0x88,0x28,0x88,0x40,0x98,0x00, +0x00,0x07,0xc0,0x00,0x40,0x08,0x40,0x08,0x20,0x10,0x20,0x10,0x10,0x3f,0xe8,0x42, +0x24,0x02,0x20,0x02,0x20,0x04,0x20,0x04,0x20,0x08,0x20,0x10,0xc0,0x00,0x00,0x01, +0x00,0x01,0x00,0x79,0x00,0x4b,0xf8,0x4a,0xa8,0x4a,0xa8,0x4c,0xa8,0x49,0x28,0x49, +0x48,0x4a,0x48,0x7c,0x48,0x00,0x88,0x01,0x08,0x00,0x30,0x00,0x00,0x00,0x40,0x03, +0xf8,0x79,0x50,0x4f,0xfc,0x49,0x10,0x4b,0xf8,0x4a,0x08,0x4b,0xf8,0x4a,0x08,0x4b, +0xf8,0x7a,0x08,0x03,0xf8,0x01,0x10,0x0e,0x0c,0x00,0x00,0x00,0x40,0x13,0xf8,0x11, +0x50,0x17,0xfc,0x7d,0x10,0x13,0xf8,0x12,0x08,0x13,0xf8,0x16,0x08,0x1b,0xf8,0x62, +0x08,0x03,0xf8,0x03,0x30,0x1c,0x0c,0x00,0x00,0x10,0x40,0x13,0xf8,0x11,0x50,0x1f, +0xfc,0x35,0x10,0x37,0xf8,0x32,0x08,0x53,0xf8,0x12,0x08,0x13,0xf8,0x12,0x08,0x13, +0xf8,0x11,0x30,0x16,0x0c,0x00,0x00,0x10,0xe0,0x10,0x20,0x11,0x20,0x7d,0x20,0x11, +0x10,0x12,0x10,0x13,0xf8,0x1c,0x94,0x70,0x90,0x10,0x90,0x11,0x10,0x11,0x10,0x12, +0x10,0x34,0x60,0x00,0x00,0x08,0x20,0x08,0x20,0x7f,0xfc,0x1c,0x60,0x1a,0xb0,0x29, +0x28,0x48,0x24,0x01,0x10,0x09,0x10,0x09,0xa0,0x12,0x80,0x04,0x40,0x18,0x30,0x60, +0x0c,0x00,0x00,0x01,0x00,0x7f,0xfc,0x06,0x60,0x1c,0x90,0x6f,0xfc,0x18,0x80,0x2f, +0xe0,0x08,0x80,0x1f,0xf8,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x00,0x00,0x00, +0x00,0x08,0xe0,0x4a,0x20,0x2a,0xa0,0x2c,0xa0,0x08,0x90,0x7f,0x10,0x09,0xf8,0x1e, +0x54,0x1a,0x50,0x2a,0x50,0x48,0x90,0x08,0x90,0x09,0x10,0x0a,0x60,0x00,0x00,0x09, +0x20,0x3f,0xf8,0x07,0xc0,0x19,0x30,0x6f,0xfc,0x09,0x20,0x0f,0xe0,0x09,0x20,0x0f, +0xe0,0x3f,0xf8,0x04,0x40,0x7f,0xfc,0x0c,0x60,0x30,0x18,0x00,0x00,0x08,0xe0,0x08, +0x20,0x0a,0xa0,0x72,0xa0,0x14,0x90,0x0d,0x10,0x13,0xf8,0x7e,0x54,0x0c,0x50,0x2a, +0x50,0x2a,0x90,0x28,0x90,0x49,0x10,0x0a,0x60,0x00,0x00,0x00,0x00,0x3f,0xf8,0x01, +0x00,0x7f,0xfc,0x41,0x04,0x7d,0x74,0x1d,0x38,0x07,0xc0,0x04,0x40,0x18,0x30,0x6f, +0xec,0x02,0x20,0x04,0x20,0x18,0xc0,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7f, +0xfc,0x08,0x20,0x08,0x20,0x04,0x40,0x04,0x40,0x02,0x80,0x01,0x00,0x02,0x80,0x04, +0x40,0x18,0x30,0x60,0x0c,0x00,0x00,0x00,0x00,0x7c,0xf8,0x44,0x88,0x7c,0xf8,0x44, +0x88,0x7c,0xf8,0x5f,0xe8,0x48,0x48,0x4f,0xc8,0x48,0x48,0x4f,0xc8,0x48,0x48,0x5f, +0xc8,0x40,0x58,0x00,0x00,0x00,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x3f,0xf8,0x21, +0x08,0x21,0x08,0x22,0x88,0x22,0x48,0x24,0x28,0x28,0x28,0x20,0x08,0x20,0x08,0x20, +0x18,0x00,0x00,0x0a,0x10,0x09,0x10,0x09,0x20,0x17,0xf8,0x11,0x20,0x31,0x20,0x51, +0x20,0x1f,0xfc,0x11,0x20,0x11,0x20,0x12,0x20,0x12,0x20,0x14,0x20,0x18,0x20,0x00, +0x00,0x00,0xe0,0x0f,0x00,0x08,0x00,0x08,0x00,0x0f,0xf8,0x08,0x40,0x08,0x40,0x08, +0x40,0x08,0x40,0x7f,0xfc,0x00,0x00,0x04,0x40,0x18,0x30,0x60,0x08,0x00,0x00,0x00, +0x00,0x13,0xfc,0x12,0x04,0x13,0xfc,0x7e,0x8c,0x12,0x50,0x13,0xfc,0x12,0x50,0x16, +0x50,0x1b,0xfc,0x64,0x90,0x04,0x90,0x09,0x10,0x12,0x10,0x00,0x00,0x08,0x40,0x49, +0x40,0x2a,0x7c,0x7f,0xc8,0x5d,0x30,0x5b,0x30,0x6b,0xc8,0x41,0x04,0x1f,0xf0,0x11, +0x10,0x11,0x10,0x11,0x10,0x11,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x01, +0x00,0x11,0x10,0x09,0x10,0x09,0x20,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x08,0x40,0x2a,0x40,0x1c,0x7c,0x7f, +0xc8,0x5d,0x28,0x5b,0x30,0x69,0xc8,0x4b,0x44,0x04,0x40,0x7f,0xfc,0x04,0x40,0x04, +0x40,0x08,0x40,0x10,0x40,0x00,0x00,0x08,0x00,0x0b,0xfc,0x08,0x40,0x7e,0x40,0x09, +0xf8,0x19,0x48,0x1d,0x48,0x1b,0x68,0x2b,0x98,0x29,0x98,0x49,0x08,0x09,0x08,0x09, +0x08,0x09,0x18,0x00,0x00,0x08,0x20,0x04,0x20,0x04,0x40,0x7f,0xfc,0x04,0x40,0x04, +0x40,0x24,0x48,0x14,0x48,0x14,0x50,0x14,0x60,0x04,0x40,0x04,0x40,0x7f,0xfc,0x00, +0x00,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x4d,0x40,0x29,0x7c,0x2a, +0xc8,0x7f,0x48,0x49,0x28,0x5d,0x30,0x5b,0x10,0x6b,0x30,0x49,0x48,0x4b,0x84,0x00, +0x00,0x00,0x00,0x7c,0xf8,0x44,0x88,0x7c,0xf8,0x44,0x88,0x7c,0xf8,0x41,0x08,0x41, +0x08,0x5f,0xe8,0x43,0x08,0x45,0x08,0x59,0x08,0x43,0x08,0x40,0x18,0x00,0x00,0x01, +0x20,0x3d,0x24,0x25,0x28,0x29,0xf0,0x29,0x20,0x31,0x24,0x29,0xe4,0x27,0x5c,0x24, +0x40,0x27,0xf8,0x38,0x40,0x20,0x40,0x27,0xfc,0x20,0x00,0x00,0x00,0x01,0x00,0x11, +0x10,0x09,0x10,0x09,0x20,0x01,0x00,0x7f,0xfc,0x03,0x80,0x03,0x80,0x05,0x40,0x19, +0x30,0x61,0x0c,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x7f,0xfc,0x01, +0x00,0x02,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x04,0x40,0x18,0x30,0x60,0x08,0x00,0x00,0x08,0x10,0x0b,0x90,0x0a,0xfc,0x12, +0xa8,0x12,0xa8,0x33,0xa8,0x52,0x7c,0x12,0x10,0x17,0x90,0x16,0xfc,0x1a,0x90,0x12, +0x90,0x13,0x90,0x10,0x10,0x00,0x00,0x00,0x20,0x1e,0x20,0x13,0xfc,0x1e,0x88,0x10, +0x50,0x3f,0xfc,0x32,0x20,0x5f,0xfc,0x12,0x20,0x01,0x20,0x1f,0xf0,0x01,0x00,0x7f, +0xfc,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x0f,0xfc,0x48,0x10,0x2b,0x90,0x2a, +0xfc,0x0a,0xa8,0x1b,0xb0,0x2a,0x7c,0x4b,0x90,0x16,0xfc,0x16,0x90,0x2b,0x90,0x42, +0x10,0x00,0x00,0x00,0x20,0x7f,0x40,0x08,0xf8,0x3e,0x88,0x08,0xf8,0x0f,0x88,0x70, +0xf8,0x00,0x00,0x7f,0xfc,0x02,0x00,0x07,0xf0,0x1c,0x10,0x67,0xf0,0x00,0x00,0x00, +0x00,0x00,0x08,0x3f,0x48,0x21,0x48,0x21,0x48,0x21,0x48,0x3f,0x48,0x08,0x48,0x08, +0x48,0x0f,0x48,0x09,0x48,0x11,0x48,0x11,0x08,0x21,0x08,0x46,0x18,0x00,0x00,0x49, +0x20,0x2a,0x20,0x7f,0x7c,0x49,0xc8,0x5d,0x30,0x6b,0xd0,0x4f,0xec,0x08,0x20,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x04,0x40,0x7f, +0xfc,0x04,0x40,0x1f,0xf8,0x12,0x48,0x1f,0xf8,0x00,0x90,0x1f,0xfc,0x10,0x48,0x14, +0x48,0x12,0x30,0x22,0x34,0x20,0xcc,0x43,0x04,0x00,0x00,0x08,0x40,0x08,0x40,0x1f, +0xfc,0x24,0x90,0x5f,0xf0,0x11,0x10,0x12,0x90,0x14,0x50,0x10,0x88,0x1f,0x90,0x10, +0xe0,0x13,0x84,0x1c,0x84,0x70,0x7c,0x00,0x00,0x08,0x00,0x0f,0xf8,0x08,0x00,0x13, +0xf0,0x12,0x10,0x33,0xf0,0x52,0x00,0x13,0xf8,0x16,0xa8,0x16,0xa8,0x1b,0xf8,0x12, +0xa8,0x12,0xa8,0x12,0x18,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x02,0x40,0x12, +0x50,0x12,0x48,0x24,0xc4,0x4a,0x04,0x03,0xe0,0x04,0x40,0x1a,0x80,0x01,0x80,0x06, +0x60,0x78,0x1c,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x0f,0xfc,0x08, +0x00,0x08,0x00,0x0f,0xe0,0x08,0x20,0x08,0x20,0x10,0x20,0x10,0x20,0x20,0x20,0x40, +0x20,0x00,0x00,0x10,0x40,0x1f,0xfc,0x24,0x90,0x7f,0xfc,0x00,0x00,0x1f,0xf8,0x10, +0x08,0x1f,0xf8,0x10,0x00,0x1f,0xf8,0x29,0x48,0x2f,0xf8,0x49,0x48,0x09,0x58,0x00, +0x00,0x10,0x00,0x13,0xfc,0x60,0x00,0x29,0xf8,0x11,0x08,0x19,0xf8,0x25,0x00,0x7b, +0xfc,0x11,0x54,0x5b,0xfc,0x57,0x54,0x55,0x54,0x51,0x54,0x11,0x0c,0x00,0x00,0x00, +0x00,0x20,0x00,0x17,0xf8,0x10,0x88,0x00,0x88,0x00,0x88,0x70,0x88,0x11,0x08,0x11, +0x08,0x12,0x08,0x14,0x30,0x18,0x00,0x26,0x00,0x41,0xfc,0x00,0x00,0x00,0x00,0x23, +0xfc,0x12,0x00,0x12,0x00,0x03,0xf0,0x03,0x10,0x72,0x90,0x12,0x60,0x12,0x20,0x14, +0xd0,0x17,0x08,0x18,0x08,0x26,0x00,0x41,0xfc,0x00,0x00,0x00,0x00,0x27,0xfc,0x10, +0x00,0x13,0xf8,0x02,0x08,0x03,0xf8,0x72,0x00,0x13,0xf8,0x16,0xa8,0x17,0xf8,0x1a, +0xa8,0x1a,0xa8,0x26,0x18,0x41,0xfc,0x00,0x00,0x08,0x00,0x0f,0xfc,0x08,0x40,0x13, +0xf8,0x12,0x48,0x33,0xf8,0x52,0x48,0x13,0xf8,0x12,0x48,0x11,0x40,0x10,0x80,0x10, +0xc0,0x11,0x30,0x16,0x0c,0x00,0x00,0x08,0x40,0x08,0x40,0x1e,0x40,0x24,0x40,0x7f, +0xf8,0x2a,0x48,0x2a,0x48,0x3e,0x48,0x2c,0x88,0x0c,0x88,0x15,0x08,0x16,0x34,0x24, +0x04,0x43,0xfc,0x00,0x00,0x10,0x40,0x10,0x78,0x10,0x90,0x13,0x20,0x7d,0xf8,0x25, +0x48,0x25,0x48,0x25,0xf8,0x79,0x68,0x48,0x60,0x0c,0xa0,0x14,0xa4,0x21,0x24,0x46, +0x1c,0x00,0x00,0x01,0x00,0x01,0x00,0x02,0x40,0x04,0x30,0x3f,0xc8,0x04,0x40,0x04, +0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0x00, +0x00,0x28,0x80,0x28,0xfc,0x7c,0x90,0x29,0x7c,0x39,0x54,0x13,0x7c,0x7d,0x54,0x55, +0x7c,0x55,0x54,0x7d,0x50,0x11,0x20,0x7d,0x30,0x11,0x48,0x11,0x84,0x00,0x00,0x08, +0x00,0x0b,0xf8,0x0a,0x08,0x12,0x08,0x13,0xf8,0x30,0x40,0x50,0x40,0x17,0xfc,0x10, +0xe0,0x11,0x50,0x12,0x48,0x14,0x44,0x10,0x40,0x10,0x40,0x00,0x00,0x08,0x50,0x08, +0x48,0x17,0xfc,0x1a,0x40,0x29,0xf8,0x7f,0x48,0x09,0x48,0x7f,0xf8,0x01,0x48,0x3d, +0x48,0x25,0xf8,0x25,0x48,0x3d,0x48,0x25,0x58,0x00,0x00,0x08,0x28,0x08,0x24,0x15, +0xfc,0x12,0x20,0x22,0xf8,0x5c,0xa8,0x08,0xa8,0x7e,0xf8,0x08,0xa8,0x2a,0xa8,0x1c, +0xf8,0x18,0xa8,0x0e,0xa8,0x70,0x98,0x00,0x00,0x00,0x00,0x3f,0xf8,0x21,0x28,0x3f, +0xf8,0x21,0x08,0x2f,0xe8,0x29,0x28,0x2f,0xe8,0x29,0x28,0x2f,0xe8,0x29,0x28,0x29, +0x68,0x3f,0xf8,0x20,0x08,0x00,0x00,0x10,0x50,0x10,0x48,0x17,0xfc,0x7c,0x40,0x13, +0xf8,0x12,0x48,0x12,0x48,0x1f,0xf8,0x72,0x48,0x12,0x48,0x13,0xf8,0x12,0x48,0x12, +0x48,0x32,0x58,0x00,0x00,0x01,0x00,0x09,0x00,0x09,0xf0,0x09,0x00,0x09,0x00,0x7f, +0xfc,0x01,0x00,0x09,0x20,0x09,0x10,0x11,0x28,0x23,0x48,0x01,0x80,0x06,0x00,0x78, +0x00,0x00,0x00,0x01,0x20,0x01,0x10,0x7f,0xfc,0x01,0x00,0x1f,0xf0,0x11,0x10,0x11, +0x10,0x1f,0xf0,0x11,0x10,0x11,0x10,0x1f,0xf0,0x11,0x10,0x11,0x10,0x11,0x30,0x00, +0x00,0x10,0x50,0x10,0x48,0x13,0xfc,0x7c,0x40,0x0b,0xf8,0x0a,0x48,0x16,0x48,0x3b, +0xf8,0x56,0x48,0x16,0x48,0x13,0xf8,0x12,0x48,0x12,0x48,0x12,0x58,0x00,0x00,0x08, +0x28,0x08,0x24,0x7f,0xfc,0x08,0x20,0x3e,0xf8,0x2a,0xa8,0x3e,0xa8,0x2a,0xf8,0x3e, +0xa8,0x08,0xa8,0x7f,0xf8,0x08,0xa8,0x08,0xa8,0x08,0xb8,0x00,0x00,0x04,0x40,0x18, +0x40,0x77,0xfc,0x10,0x40,0x13,0xf8,0x7e,0x48,0x13,0xf8,0x1a,0x48,0x37,0xf8,0x34, +0x40,0x52,0xa8,0x12,0x84,0x14,0x94,0x10,0x70,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04, +0x40,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x7f,0xfc,0x05,0x40,0x1f, +0xf0,0x61,0x2c,0x06,0x20,0x18,0xc0,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x7f,0xfc,0x19,0x30,0x6f,0xec,0x01, +0x00,0x3f,0xf8,0x00,0x00,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x7f,0xfc,0x0a,0x20,0x1b,0x50,0x6a,0xac,0x12, +0xa0,0x06,0x00,0x00,0x00,0x00,0x80,0x00,0x90,0x00,0x88,0x1f,0xfc,0x10,0x80,0x10, +0x88,0x10,0x88,0x10,0x50,0x10,0x50,0x10,0x20,0x10,0x64,0x21,0x94,0x26,0x0c,0x40, +0x04,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x7f,0xfc,0x07,0xc0,0x1c,0x70,0x67,0xcc,0x04,0x40,0x07,0xc0,0x04,0x40,0x00, +0x00,0x00,0x00,0x0f,0xf0,0x09,0x10,0x08,0x90,0x08,0x90,0x7f,0xfc,0x12,0x10,0x11, +0x10,0x11,0x10,0x10,0x10,0x3f,0xfc,0x20,0x20,0x00,0x20,0x00,0xc0,0x00,0x00,0x10, +0x40,0x1f,0x7c,0x28,0x90,0x45,0x58,0x17,0xfc,0x09,0xf0,0x49,0x50,0x21,0xf0,0x29, +0x50,0x09,0xf0,0x17,0xfc,0x11,0x10,0x20,0x90,0x20,0x30,0x00,0x00,0x04,0x40,0x7f, +0xfc,0x05,0x40,0x01,0x00,0x3f,0xf8,0x08,0x20,0x04,0x40,0x7f,0xfc,0x00,0x00,0x0f, +0xe0,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x0a,0x20,0x0a,0x20,0x0a, +0x20,0x1f,0xa0,0x12,0x7c,0x32,0x48,0x53,0xc8,0x12,0xa8,0x12,0xa8,0x12,0xb0,0x14, +0x90,0x14,0xb0,0x18,0xc8,0x13,0x04,0x00,0x00,0x08,0x40,0x08,0x40,0x0b,0xf8,0x10, +0x40,0x13,0xf8,0x30,0xa0,0x57,0xfc,0x11,0x50,0x13,0xf8,0x14,0x44,0x13,0xf8,0x10, +0x40,0x10,0x40,0x10,0x40,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x1f,0xf8,0x10, +0x08,0x3f,0x88,0x40,0x88,0x00,0x88,0x1f,0x88,0x10,0xb0,0x10,0x00,0x10,0x04,0x10, +0x04,0x0f,0xfc,0x00,0x00,0x00,0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x1f,0xf0,0x01, +0x00,0x01,0x00,0x7f,0xfc,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x01, +0x00,0x00,0x00,0x08,0x00,0x08,0xf8,0x3e,0x88,0x08,0x88,0x7f,0xb0,0x22,0x80,0x12, +0xf8,0x14,0xc8,0x7f,0xa8,0x08,0xb0,0x3e,0x90,0x08,0xb0,0x08,0xc8,0x08,0x84,0x00, +0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x01,0x00,0x1f,0xf0,0x02,0x80,0x7f,0xfc,0x09, +0x20,0x17,0xd0,0x61,0x0c,0x1f,0xf0,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x01, +0x00,0x01,0x00,0x7f,0xfc,0x40,0x04,0x40,0x04,0x1f,0xf0,0x01,0x00,0x01,0x00,0x1f, +0xf0,0x01,0x00,0x01,0x20,0x01,0x10,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x40,0x10, +0xf8,0x13,0x90,0x10,0x60,0x54,0xb0,0x57,0x4c,0x57,0xf8,0x54,0x40,0x55,0xf0,0x7c, +0x40,0x47,0xfc,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x11,0x10,0x1f,0xf0,0x02, +0x00,0x07,0xe0,0x3c,0x40,0x03,0x80,0x0d,0x60,0x77,0xdc,0x01,0x00,0x0f,0xe0,0x01, +0x00,0x3f,0xf8,0x01,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x11,0x10,0x11,0x10,0x1f, +0xf0,0x00,0x00,0x1e,0x78,0x12,0x48,0x1e,0x78,0x12,0x48,0x1e,0x78,0x12,0x48,0x22, +0x88,0x22,0x88,0x47,0x18,0x00,0x00,0x00,0x80,0x00,0x80,0x1f,0xfc,0x11,0x00,0x11, +0xf8,0x12,0x08,0x17,0xc8,0x18,0x48,0x13,0xc8,0x12,0x70,0x12,0x00,0x22,0x04,0x22, +0x04,0x41,0xfc,0x00,0x00,0x11,0x00,0x11,0x00,0x11,0xf8,0x7e,0x08,0x13,0xc8,0x14, +0x48,0x10,0x48,0x1f,0xc8,0x72,0x48,0x12,0x30,0x12,0x00,0x12,0x04,0x12,0x04,0x31, +0xfc,0x00,0x00,0x10,0x40,0x10,0x40,0x13,0xf8,0x7c,0x40,0x11,0xf0,0x10,0xa0,0x1f, +0xfc,0x11,0x50,0x33,0xf8,0x54,0x44,0x13,0xf8,0x10,0x40,0x10,0x40,0x30,0x40,0x00, +0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x7f,0x40,0x08,0xfc,0x08,0x88,0x0f,0x88,0x0a, +0x48,0x0a,0x50,0x12,0x30,0x12,0x20,0x22,0x50,0x43,0x88,0x0e,0x04,0x00,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x02,0x00,0x02,0x00,0x03,0xf0,0x02,0x10,0x02, +0x10,0x04,0x10,0x04,0x10,0x08,0x10,0x10,0x10,0x20,0xe0,0x00,0x00,0x00,0x00,0x1e, +0x78,0x12,0x48,0x12,0x48,0x12,0x48,0x1e,0x78,0x12,0x48,0x12,0x48,0x1e,0x78,0x12, +0x48,0x12,0x88,0x22,0x88,0x23,0x08,0x46,0x18,0x00,0x00,0x10,0x40,0x08,0x40,0x08, +0x40,0x43,0xf8,0x20,0x40,0x20,0x40,0x07,0xfc,0x00,0x40,0x08,0x40,0x08,0x90,0x10, +0x88,0x11,0x38,0x27,0xc4,0x20,0x04,0x00,0x00,0x11,0x00,0x09,0x00,0x09,0x00,0x43, +0xf8,0x22,0x08,0x27,0xc8,0x08,0x48,0x03,0xc8,0x0a,0x70,0x0a,0x00,0x12,0x00,0x12, +0x04,0x22,0x04,0x21,0xfc,0x00,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x3f,0xf8,0x00,0x60,0x01,0x80,0x01,0x00,0x03,0x00,0x14,0x90,0x22, +0x48,0x42,0x44,0x00,0x00,0x00,0x80,0x7e,0x80,0x10,0xf8,0x11,0x08,0x13,0xe8,0x20, +0x28,0x3c,0x28,0x65,0xe8,0x25,0x30,0x25,0x00,0x25,0x00,0x3d,0x04,0x01,0x04,0x00, +0xfc,0x00,0x00,0x10,0x20,0x12,0x38,0x15,0xc8,0x65,0x30,0x28,0xe8,0x18,0x24,0x27, +0xf8,0x7d,0x20,0x19,0xf8,0x35,0x20,0x35,0xfc,0x31,0x20,0x52,0xe0,0x14,0x3c,0x00, +0x00,0x00,0x80,0x3c,0x80,0x24,0xfc,0x25,0x04,0x3d,0xe4,0x26,0x24,0x24,0x24,0x3d, +0xe4,0x25,0x38,0x25,0x00,0x25,0x00,0x25,0x04,0x25,0x04,0x4c,0xfc,0x00,0x00,0x04, +0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x05,0x40,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01, +0xf0,0x02,0x10,0x02,0x10,0x04,0x10,0x18,0x10,0x60,0x60,0x00,0x00,0x04,0x40,0x04, +0x40,0x7f,0xfc,0x04,0x40,0x7c,0xf8,0x44,0x88,0x44,0x88,0x7c,0xf8,0x44,0x88,0x44, +0x88,0x44,0xf8,0x7c,0x88,0x01,0x08,0x02,0x18,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04, +0xc0,0x21,0xf0,0x1f,0x20,0x10,0xe0,0x03,0x5c,0x7f,0xf8,0x10,0x40,0x13,0xf8,0x10, +0x40,0x17,0xfc,0x2c,0x40,0x43,0xfc,0x00,0x00,0x08,0x40,0x08,0x78,0x08,0xd0,0x3f, +0x20,0x2a,0x70,0x2b,0xac,0x2a,0xf8,0x3e,0x20,0x28,0xf8,0x0c,0x20,0x0b,0xfc,0x0e, +0x20,0x70,0x20,0x00,0x20,0x00,0x00,0x01,0x00,0x7f,0xfc,0x09,0xf0,0x09,0x10,0x11, +0xf0,0x77,0xfc,0x11,0x50,0x16,0x4c,0x11,0x40,0x03,0x10,0x0c,0xa0,0x74,0x40,0x07, +0x30,0x18,0x0c,0x00,0x00,0x00,0x40,0x3c,0x40,0x00,0x40,0x7f,0xfc,0x00,0x40,0x3c, +0x40,0x00,0x78,0x3c,0x48,0x00,0x48,0x3c,0x88,0x24,0x88,0x25,0x08,0x3e,0x08,0x04, +0x30,0x00,0x00,0x02,0x80,0x1f,0xf0,0x12,0x90,0x1f,0xf0,0x12,0x90,0x1f,0xf0,0x00, +0x00,0x7f,0xfc,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x04,0x40,0x7f,0xfc,0x00,0x00,0x00, +0x00,0x04,0x00,0x04,0x78,0x3f,0xc8,0x04,0x50,0x04,0x50,0x3f,0xe0,0x04,0x50,0x04, +0x48,0x7f,0xc4,0x04,0x44,0x08,0x64,0x08,0x58,0x10,0x40,0x20,0x40,0x00,0x00,0x08, +0x40,0x08,0x78,0x14,0xd0,0x13,0x20,0x22,0x70,0x5d,0xac,0x08,0xf8,0x7e,0x20,0x08, +0xf8,0x2a,0x20,0x1d,0xfc,0x18,0x20,0x0e,0x20,0x70,0x20,0x00,0x00,0x08,0x40,0x0c, +0x40,0x12,0x78,0x2a,0x88,0x49,0xe8,0x3e,0x28,0x22,0x28,0x3e,0xe8,0x22,0xb0,0x3e, +0x80,0x24,0x80,0x26,0x84,0x3a,0x84,0x60,0x7c,0x00,0x00,0x00,0x00,0x1f,0xf0,0x10, +0x10,0x1f,0xf0,0x12,0x10,0x17,0xd0,0x14,0x50,0x17,0xd0,0x14,0x50,0x17,0xf4,0x14, +0x0c,0x27,0xfc,0x2d,0x54,0x52,0xe4,0x00,0x00,0x00,0x10,0x3f,0x20,0x2d,0x78,0x2d, +0x48,0x2d,0x78,0x3f,0x48,0x2d,0x78,0x2d,0x7c,0x2d,0x40,0x3f,0x7c,0x2d,0x2c,0x2d, +0x54,0x2d,0x44,0x5b,0x98,0x00,0x00,0x00,0x18,0x00,0xe0,0x3f,0x00,0x01,0x00,0x01, +0x00,0x1f,0xf0,0x00,0x10,0x00,0x20,0x00,0x40,0x09,0x80,0x0e,0x00,0x14,0x00,0x23, +0x00,0x40,0xfc,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x10,0x00,0x10, +0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x0f,0xf8,0x00, +0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x0f,0xfc,0x11,0x10,0x10,0xa0,0x37,0xfc,0x54, +0x44,0x1f,0xfc,0x10,0x40,0x10,0xf8,0x10,0x88,0x11,0x08,0x16,0x08,0x18,0x30,0x00, +0x00,0x04,0x08,0x04,0x48,0x3f,0xc8,0x11,0x48,0x09,0x48,0x0a,0x48,0x7f,0xc8,0x00, +0x48,0x1f,0x48,0x11,0x48,0x11,0x48,0x11,0x08,0x1f,0x08,0x00,0x18,0x00,0x00,0x00, +0x40,0x10,0x40,0x10,0x40,0x17,0xfc,0x7c,0x40,0x10,0x40,0x10,0x40,0x10,0x78,0x10, +0x88,0x1c,0x88,0x61,0x08,0x02,0x08,0x04,0x08,0x08,0x30,0x00,0x00,0x08,0x20,0x08, +0x20,0x08,0x20,0x09,0xfc,0x7e,0x40,0x12,0x40,0x12,0x78,0x12,0x48,0x3c,0x48,0x24, +0x48,0x06,0x88,0x0a,0x88,0x11,0x08,0x22,0x30,0x00,0x00,0x10,0x00,0x13,0xf8,0x12, +0x08,0x7f,0xf8,0x56,0x08,0x57,0xf8,0x55,0xf0,0x55,0x10,0x55,0xf0,0x55,0x10,0x59, +0xf0,0x11,0x10,0x11,0xf0,0x10,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x08, +0x00,0x08,0x00,0x08,0x00,0x07,0xf0,0x01,0x00,0x04,0x80,0x04,0x90,0x24,0x08,0x24, +0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x10,0x40,0x10,0x40,0x10,0x40,0x17,0xfc,0x39, +0x00,0x35,0x00,0x35,0x00,0x51,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x10, +0xf8,0x10,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x00,0x00,0x1f,0xf0,0x10,0x10,0x1f, +0xf0,0x10,0x80,0x1f,0xfc,0x10,0x80,0x10,0xf0,0x11,0x10,0x22,0x10,0x2c,0x10,0x70, +0x60,0x00,0x00,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x3f, +0xf8,0x04,0x40,0x7f,0xfc,0x09,0x20,0x15,0x50,0x67,0xcc,0x19,0x30,0x03,0x00,0x00, +0x00,0x08,0x00,0x08,0xf8,0x7f,0x88,0x20,0xf8,0x20,0x88,0x20,0xf8,0x1f,0x08,0x02, +0x30,0x3f,0xf8,0x01,0x00,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x08, +0x20,0x08,0x20,0x7f,0xfc,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x01,0x00,0x7f, +0xfc,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x00,0x00,0x08,0x40,0x08, +0x40,0x0b,0xfc,0x7e,0x40,0x09,0xf8,0x1c,0xa0,0x1b,0xfc,0x1b,0x50,0x2b,0xf8,0x2c, +0x44,0x4b,0xf8,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0x00,0x00,0x3f,0xf8,0x20, +0x08,0x3f,0xf8,0x20,0x08,0x3f,0xf8,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x08,0x20,0x08,0x20,0x0a,0x20,0x73, +0xfc,0x14,0x40,0x0c,0x40,0x12,0x78,0x7d,0x48,0x0c,0x48,0x2a,0x48,0x2a,0x88,0x28, +0x88,0x49,0x08,0x0a,0x30,0x00,0x00,0x00,0x40,0x3c,0x40,0x24,0x40,0x27,0xfc,0x3c, +0x40,0x24,0x40,0x24,0x78,0x3c,0x48,0x24,0x48,0x24,0x88,0x24,0x88,0x25,0x08,0x26, +0x08,0x4c,0x30,0x00,0x00,0x01,0x08,0x39,0x08,0x2f,0xd0,0x29,0x10,0x2f,0xe0,0x38, +0x08,0x2b,0xc8,0x2a,0x50,0x3b,0xe4,0x2a,0x44,0x29,0x88,0x29,0xc8,0x2e,0x10,0x58, +0x20,0x00,0x00,0x01,0x10,0x39,0x10,0x03,0xfc,0x7d,0x10,0x01,0xf0,0x3d,0x10,0x01, +0xf0,0x3c,0x40,0x03,0xfc,0x3c,0xe0,0x25,0x50,0x26,0x48,0x3c,0x44,0x20,0x40,0x00, +0x00,0x04,0x40,0x18,0x40,0x6a,0x80,0x25,0xf8,0x19,0x08,0x69,0xf8,0x0d,0x08,0x15, +0xf8,0x64,0x60,0x0c,0x60,0x14,0xa0,0x64,0xa4,0x05,0x24,0x1a,0x1c,0x00,0x00,0x06, +0x00,0x38,0xf8,0x24,0x48,0x26,0x48,0x3a,0x88,0x6f,0xf8,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x06,0x60,0x38,0x18,0x00,0x00,0x08,0x40,0x08, +0x40,0x14,0x50,0x12,0x88,0x23,0xf4,0x5c,0xa0,0x08,0xa0,0x7f,0xf8,0x09,0x20,0x2a, +0x20,0x1d,0xfc,0x18,0x20,0x0e,0x20,0x70,0x20,0x00,0x00,0x00,0x40,0x3c,0x40,0x24, +0x40,0x2b,0xfc,0x28,0x40,0x30,0x40,0x28,0x78,0x24,0x48,0x24,0x48,0x24,0x88,0x24, +0x88,0x39,0x08,0x22,0x08,0x24,0x30,0x00,0x00,0x00,0x40,0x00,0x50,0x78,0x48,0x48, +0x48,0x48,0x40,0x4f,0xfc,0x48,0x40,0x48,0x40,0x48,0x60,0x48,0xa0,0x78,0x90,0x01, +0x10,0x06,0x08,0x18,0x04,0x00,0x00,0x08,0x00,0x09,0xfc,0x08,0x20,0x7f,0x40,0x0a, +0xf8,0x4a,0x88,0x2c,0xf8,0x28,0x88,0x7f,0xf8,0x0c,0x88,0x12,0xf8,0x12,0x50,0x20, +0x88,0x43,0x04,0x00,0x00,0x04,0x80,0x04,0x80,0x04,0x88,0x04,0x88,0x7c,0x90,0x04, +0xa0,0x04,0xc0,0x04,0x80,0x04,0x80,0x1c,0x80,0x64,0x80,0x04,0x84,0x04,0x84,0x04, +0x7c,0x00,0x00,0x08,0xa0,0x0a,0xa8,0x09,0xb0,0x17,0xfc,0x11,0x10,0x30,0xa0,0x57, +0xfc,0x10,0x40,0x13,0xf8,0x10,0x40,0x17,0xfc,0x10,0xa0,0x13,0x10,0x1c,0x0c,0x00, +0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0x00,0x02,0x80,0x02,0x40,0x02, +0x20,0x02,0x20,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x00,0x00,0x00, +0x00,0x0f,0xe0,0x09,0x20,0x0f,0xe0,0x09,0x20,0x0f,0xe0,0x1f,0xf0,0x01,0x00,0x7f, +0xfc,0x15,0x50,0x2f,0xe8,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x10,0xa0,0x12, +0xa8,0x11,0xb0,0x7f,0xfc,0x11,0x10,0x10,0xa0,0x13,0xf8,0x1c,0x40,0x71,0xf0,0x10, +0x40,0x17,0xfc,0x10,0xa0,0x13,0x10,0x3c,0x0c,0x00,0x00,0x08,0x40,0x08,0x40,0x08, +0x40,0x7f,0x40,0x08,0x60,0x18,0x50,0x1c,0x48,0x1a,0x44,0x2a,0x44,0x28,0x40,0x48, +0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0x08,0x80,0x08,0x80,0x28,0x80,0x28, +0x80,0x3e,0xfc,0x29,0x10,0x29,0x90,0x4a,0x90,0x0e,0x50,0x78,0x60,0x08,0x20,0x08, +0x50,0x09,0x88,0x0e,0x04,0x00,0x00,0x00,0x40,0x78,0x40,0x4b,0xf8,0x48,0x40,0x7f, +0xfc,0x49,0x20,0x49,0x24,0x7a,0x5c,0x4c,0x40,0x4b,0xf8,0x78,0x40,0x00,0x40,0x0f, +0xfc,0x00,0x00,0x00,0x00,0x04,0x40,0x19,0xf8,0x71,0x08,0x11,0xf8,0x11,0x08,0x7d, +0xf8,0x10,0x40,0x19,0x58,0x36,0x64,0x35,0x90,0x50,0x60,0x11,0x88,0x10,0x30,0x13, +0xc0,0x00,0x00,0x08,0x00,0x08,0x00,0x14,0xf8,0x12,0x88,0x22,0x88,0x5c,0x88,0x08, +0x88,0x7e,0x88,0x08,0x88,0x2a,0x88,0x1c,0x88,0x18,0x88,0x0e,0xf8,0x70,0x00,0x00, +0x00,0x08,0x40,0x08,0x40,0x3f,0x40,0x08,0x40,0x7f,0xf8,0x41,0x48,0x7e,0x48,0x04, +0x48,0x08,0x48,0x0e,0x48,0x78,0x88,0x08,0x88,0x09,0x08,0x1a,0x30,0x00,0x00,0x10, +0x00,0x09,0xe0,0x09,0x20,0x41,0x24,0x21,0x24,0x22,0x1c,0x04,0x00,0x0b,0xf0,0x09, +0x10,0x10,0x90,0x10,0xa0,0x20,0x40,0x21,0xb0,0x2e,0x0c,0x00,0x00,0x00,0x40,0x7f, +0x40,0x08,0x40,0x08,0x50,0x0e,0x88,0x12,0x8c,0x13,0xf4,0x2a,0x00,0x45,0xf8,0x05, +0x08,0x09,0x08,0x11,0x08,0x21,0xf8,0x40,0x00,0x00,0x00,0x00,0x00,0x13,0xfc,0x12, +0x04,0x13,0xfc,0x7e,0x20,0x12,0xa8,0x12,0xa8,0x12,0xa8,0x16,0xf8,0x1b,0x24,0x65, +0x24,0x05,0x24,0x09,0xfc,0x11,0x04,0x00,0x00,0x10,0x00,0x11,0xf8,0x11,0x08,0x7d, +0xf8,0x55,0x08,0x55,0xf8,0x56,0x48,0x55,0x50,0x57,0xfc,0x54,0xa0,0x58,0xa0,0x11, +0x24,0x12,0x24,0x14,0x1c,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x04,0x40,0x09, +0x20,0x1f,0xf0,0x61,0x0c,0x05,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x04,0x40,0x08, +0x40,0x10,0x40,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x03, +0x80,0x05,0x40,0x05,0x40,0x09,0x20,0x11,0x10,0x2f,0xe8,0x41,0x04,0x01,0x00,0x01, +0x00,0x00,0x00,0x06,0x00,0x7b,0xf8,0x2a,0x48,0x1c,0x48,0x7f,0x68,0x1c,0xd8,0x1a, +0xd8,0x2a,0x48,0x7e,0xd8,0x2b,0x68,0x3e,0x48,0x2a,0x48,0x3e,0x48,0x22,0xd8,0x00, +0x00,0x00,0x00,0x0f,0xc0,0x08,0x40,0x08,0x40,0x08,0x40,0x0a,0x40,0x09,0x40,0x09, +0x40,0x09,0x40,0x08,0x40,0x10,0x40,0x10,0x44,0x20,0x44,0x40,0x3c,0x00,0x00,0x03, +0xc0,0x08,0x40,0x08,0x20,0x1f,0xf0,0x21,0x28,0x42,0x24,0x0c,0x20,0x30,0xc0,0x1f, +0xf0,0x12,0x90,0x12,0x90,0x12,0x90,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x80,0x1f, +0xfc,0x12,0x10,0x1f,0xfc,0x17,0x38,0x1a,0xd4,0x12,0x30,0x17,0xc0,0x10,0x80,0x17, +0xf8,0x20,0x80,0x3f,0xfc,0x40,0x80,0x01,0x80,0x00,0x00,0x00,0x80,0x00,0x80,0x1f, +0xfc,0x12,0x10,0x1f,0xfc,0x17,0x38,0x1a,0xd4,0x12,0x90,0x17,0xfc,0x10,0x80,0x23, +0xf8,0x2e,0x08,0x43,0xf8,0x02,0x08,0x00,0x00,0x01,0x00,0x1f,0xfc,0x12,0x20,0x1f, +0xfc,0x17,0x70,0x1a,0xa8,0x17,0xf4,0x14,0x90,0x17,0xf0,0x17,0xf0,0x21,0xa8,0x22, +0xfc,0x4c,0x84,0x30,0x7c,0x00,0x00,0x00,0x80,0x00,0x80,0x1f,0xfc,0x12,0x20,0x12, +0x20,0x1f,0xfc,0x12,0x20,0x17,0x70,0x16,0xf0,0x1a,0xa8,0x13,0x24,0x22,0x20,0x42, +0x20,0x02,0x20,0x00,0x00,0x10,0x00,0x13,0xf8,0x12,0x48,0x12,0x48,0x7f,0xf8,0x12, +0x48,0x12,0x48,0x13,0xf8,0x10,0x40,0x1f,0xf8,0x60,0x40,0x00,0x40,0x0f,0xfc,0x00, +0x00,0x00,0x00,0x08,0x20,0x08,0x20,0x08,0x20,0x09,0xf8,0x7e,0x20,0x12,0x20,0x13, +0xfc,0x12,0x70,0x3c,0x70,0x24,0xa8,0x07,0x24,0x0a,0x20,0x12,0x20,0x20,0x20,0x00, +0x00,0x00,0x40,0x00,0x40,0x78,0x40,0x4b,0xf8,0x48,0x40,0x48,0x40,0x7f,0xfc,0x48, +0xe0,0x48,0xe0,0x49,0x50,0x7a,0x48,0x04,0x44,0x08,0x40,0x00,0x40,0x00,0x00,0x08, +0x80,0x08,0x80,0x08,0x80,0x7f,0xfc,0x09,0x10,0x1a,0x90,0x1c,0x90,0x1a,0x50,0x2a, +0x60,0x28,0x20,0x48,0x60,0x08,0x90,0x0b,0x08,0x08,0x04,0x00,0x00,0x08,0x00,0x08, +0x00,0x1f,0xfc,0x10,0x00,0x2f,0xe0,0x49,0x20,0x09,0x20,0x7f,0xfc,0x09,0x20,0x09, +0x20,0x1f,0xf8,0x10,0x20,0x00,0x20,0x00,0xc0,0x00,0x00,0x00,0x00,0x03,0xf8,0x7a, +0x48,0x4a,0x48,0x4b,0xf8,0x4a,0x48,0x4a,0x48,0x4b,0xf8,0x48,0x40,0x7b,0xf8,0x00, +0x40,0x00,0x40,0x0f,0xfc,0x00,0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x0b,0xfc,0x7e, +0x40,0x09,0xf0,0x19,0x10,0x1d,0xf0,0x1b,0x10,0x2b,0xf0,0x29,0x10,0x49,0xf0,0x0f, +0xfc,0x09,0x90,0x0e,0x08,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x08,0x20,0x7f,0xfc,0x05,0x40,0x1f,0xf0,0x69,0x2c,0x09,0x20,0x09, +0x60,0x01,0x00,0x00,0x00,0x00,0x90,0x3c,0x90,0x27,0xfc,0x24,0x90,0x25,0xf8,0x3d, +0x08,0x25,0xf8,0x25,0x08,0x3d,0xf8,0x24,0x40,0x27,0xfc,0x24,0xa0,0x25,0x10,0x4e, +0x0c,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x7f,0xfc,0x0a,0x44,0x1a,0x44,0x1c, +0x60,0x1a,0x60,0x2a,0x60,0x28,0xa0,0x48,0xa0,0x09,0x24,0x0a,0x24,0x0c,0x1c,0x00, +0x00,0x08,0x20,0x08,0x20,0x1e,0x20,0x25,0xfc,0x7e,0x40,0x2a,0x78,0x3e,0xc8,0x2a, +0xf8,0x3f,0x48,0x04,0x78,0x3a,0x48,0x2e,0x48,0x28,0x48,0x40,0x58,0x00,0x00,0x08, +0x00,0x09,0xfc,0x08,0x20,0x7e,0x20,0x08,0x20,0x19,0x20,0x1d,0x3c,0x1b,0x20,0x2b, +0x20,0x29,0x20,0x49,0x20,0x09,0x20,0x0f,0xfc,0x08,0x00,0x00,0x00,0x08,0x88,0x08, +0x50,0x1f,0xfc,0x24,0x50,0x7e,0xf8,0x2a,0xa8,0x3e,0xd8,0x2a,0xf8,0x3e,0xf8,0x04, +0x10,0x33,0xfc,0x2a,0x90,0x28,0x50,0x40,0x30,0x00,0x00,0x11,0x08,0x11,0x08,0x11, +0x08,0x7d,0xfc,0x12,0xa8,0x12,0xa8,0x3e,0xa8,0x35,0xa8,0x34,0xfc,0x51,0x08,0x51, +0x08,0x12,0x08,0x14,0x08,0x18,0x08,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7f, +0xfc,0x02,0x40,0x02,0x40,0x12,0x50,0x12,0x48,0x22,0x44,0x42,0x44,0x04,0x40,0x04, +0x40,0x08,0x40,0x10,0xc0,0x00,0x00,0x08,0x00,0x0b,0xf8,0x0a,0x08,0x12,0x08,0x13, +0xf8,0x30,0x00,0x53,0xf8,0x10,0x40,0x10,0x40,0x17,0xfc,0x10,0x60,0x10,0x90,0x13, +0x08,0x1c,0x04,0x00,0x00,0x00,0x00,0x3f,0xf0,0x08,0x10,0x08,0x10,0x08,0x20,0x04, +0x20,0x04,0x40,0x02,0x40,0x02,0x80,0x01,0x00,0x02,0x80,0x04,0x40,0x18,0x30,0x60, +0x0c,0x00,0x00,0x10,0x40,0x10,0x40,0x10,0x40,0x7f,0xfc,0x10,0x40,0x10,0x40,0x13, +0xf8,0x1c,0xe0,0x70,0xe0,0x11,0x50,0x12,0x48,0x14,0x44,0x10,0x40,0x30,0x40,0x00, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x1f,0xf0,0x01, +0x00,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x01,0x00,0x00,0x00,0x10, +0x40,0x08,0x40,0x08,0x40,0x47,0xfc,0x20,0x40,0x20,0x40,0x03,0xf8,0x08,0xe0,0x08, +0xe0,0x09,0x50,0x11,0x50,0x12,0x48,0x24,0x44,0x20,0x40,0x00,0x00,0x01,0x00,0x21, +0x00,0x11,0xfc,0x12,0x00,0x07,0xf0,0x00,0x40,0x70,0x80,0x11,0x00,0x12,0x04,0x12, +0x04,0x11,0xfc,0x18,0x00,0x26,0x00,0x41,0xfc,0x00,0x00,0x08,0x00,0x0b,0xf8,0x0a, +0x08,0x12,0x08,0x13,0xf8,0x32,0x20,0x52,0x20,0x12,0x90,0x14,0x50,0x14,0x48,0x18, +0x04,0x11,0x80,0x10,0x60,0x10,0x10,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x3f, +0xf8,0x29,0x48,0x2b,0xf8,0x3b,0xd8,0x25,0xd8,0x2b,0xf8,0x3f,0x68,0x25,0x58,0x2f, +0xf8,0x35,0x08,0x25,0x18,0x00,0x00,0x00,0x80,0x1f,0xfc,0x12,0x10,0x1f,0xfc,0x13, +0x30,0x16,0xd8,0x1b,0xf4,0x12,0x10,0x13,0xf0,0x10,0x80,0x27,0xf8,0x24,0x08,0x47, +0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xfc,0x02,0x00,0x02,0x00,0x02,0x00,0x03, +0xf0,0x02,0x10,0x02,0x10,0x04,0x10,0x04,0x10,0x08,0x10,0x10,0x10,0x20,0x10,0x40, +0x60,0x00,0x00,0x10,0x00,0x11,0xf0,0x11,0x10,0x19,0xf0,0x35,0x10,0x37,0xf8,0x32, +0xa8,0x53,0xf8,0x10,0x00,0x17,0xf8,0x10,0x90,0x10,0x60,0x11,0xb0,0x1e,0x0c,0x00, +0x00,0x21,0x20,0x11,0x20,0x1f,0xf8,0x41,0x20,0x2f,0xfc,0x20,0x80,0x0f,0xf8,0x18, +0x88,0x1a,0xa8,0x2a,0xa8,0x2a,0xa8,0x4b,0xe8,0x48,0x08,0x48,0x18,0x00,0x00,0x10, +0x00,0x0b,0xf0,0x0a,0x10,0x43,0xf0,0x22,0x10,0x27,0xf8,0x05,0x28,0x17,0xf8,0x10, +0x00,0x23,0xf0,0x21,0x20,0x40,0xc0,0x41,0xe0,0x4e,0x1c,0x00,0x00,0x04,0x40,0x7f, +0xfc,0x04,0x40,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x1f,0xf0,0x12,0x90,0x3f, +0xf0,0x04,0x40,0x03,0x80,0x06,0x60,0x78,0x18,0x00,0x00,0x00,0x40,0x00,0x40,0x7b, +0xf8,0x48,0x40,0x48,0x40,0x4f,0xfc,0x48,0xe0,0x48,0xe0,0x49,0x50,0x4a,0x48,0x7c, +0x44,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x01,0x00,0x1f,0xf0,0x01, +0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01, +0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x08,0x20,0x10,0x20,0x3e,0xf8,0x2a,0x20,0x3e, +0x20,0x2b,0xfc,0x3e,0x70,0x0c,0x70,0x0d,0xa8,0x0d,0x24,0x16,0xa0,0x17,0xa0,0x24, +0x04,0x43,0xfc,0x00,0x00,0x00,0x00,0x3f,0xf0,0x20,0x10,0x20,0x10,0x20,0x10,0x20, +0x10,0x3f,0xf0,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x08,0x20,0x08,0x1f, +0xf8,0x00,0x00,0x10,0x40,0x1f,0xfc,0x28,0xa0,0x4d,0x30,0x3f,0xf8,0x08,0x20,0x0f, +0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x7f,0xfc,0x04,0x40,0x18,0x30,0x60,0x08,0x00, +0x00,0x00,0x00,0x11,0xfc,0x11,0x24,0x11,0x24,0x55,0xfc,0x55,0x24,0x55,0x24,0x55, +0xfc,0x54,0x20,0x54,0x20,0x7c,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x01, +0x00,0x01,0x00,0x7f,0xfc,0x42,0x04,0x45,0x50,0x15,0x48,0x14,0x84,0x25,0x24,0x07, +0xe0,0x19,0x00,0x11,0x10,0x11,0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x01,0x00,0x01, +0x00,0x7f,0xfc,0x43,0x44,0x54,0x94,0x15,0x28,0x27,0xe4,0x19,0x00,0x0f,0xe0,0x09, +0x20,0x0f,0xe0,0x01,0x00,0x01,0xf0,0x3e,0x08,0x00,0x00,0x10,0x40,0x08,0x40,0x0f, +0xfc,0x40,0x40,0x23,0xf8,0x20,0xa0,0x07,0xfc,0x11,0x10,0x13,0xe8,0x10,0x44,0x23, +0xf8,0x20,0xa0,0x41,0x10,0x46,0x0c,0x00,0x00,0x04,0x40,0x7f,0xfc,0x05,0x40,0x01, +0x00,0x7f,0xfc,0x0f,0xe0,0x08,0x20,0x7f,0xfc,0x08,0x20,0x0f,0xe0,0x0c,0x88,0x74, +0x50,0x07,0x30,0x38,0x0c,0x00,0x00,0x04,0x40,0x18,0x40,0x70,0xa0,0x11,0x10,0x12, +0xe8,0x7c,0x04,0x13,0xf8,0x18,0x10,0x34,0x60,0x34,0x28,0x52,0xa4,0x12,0x84,0x14, +0x90,0x10,0x70,0x00,0x00,0x00,0x18,0x3d,0xe0,0x25,0x00,0x25,0x0c,0x3d,0x70,0x25, +0x64,0x25,0x64,0x3d,0x68,0x25,0x50,0x25,0x50,0x25,0x50,0x26,0x48,0x26,0x44,0x4c, +0x40,0x00,0x00,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0xb0,0x7e,0xa8,0x12,0xa8,0x12, +0xa4,0x13,0x2c,0x3d,0x28,0x24,0x70,0x06,0x10,0x0a,0x20,0x30,0xc0,0x03,0x00,0x00, +0x00,0x08,0x08,0x4a,0x30,0x2b,0xc0,0x2c,0x40,0x08,0x40,0x7f,0xf8,0x08,0x40,0x1c, +0x40,0x1b,0xfc,0x2a,0x40,0x48,0x40,0x08,0x44,0x08,0x44,0x08,0x3c,0x00,0x00,0x00, +0x00,0x1f,0xf8,0x10,0x08,0x10,0x08,0x1f,0xf8,0x10,0x80,0x10,0x80,0x1f,0xfc,0x10, +0x40,0x10,0x40,0x10,0x24,0x16,0x14,0x18,0x0c,0x60,0x04,0x00,0x00,0x00,0x00,0x79, +0xf8,0x49,0x08,0x49,0x08,0x79,0xf8,0x49,0x20,0x49,0x20,0x79,0xfc,0x49,0x20,0x49, +0x20,0x79,0x10,0x01,0x54,0x01,0x8c,0x06,0x04,0x00,0x00,0x00,0x80,0x3e,0x80,0x04, +0xfc,0x19,0x90,0x0a,0x50,0x7e,0x20,0x0a,0xd0,0x1b,0x4c,0x1c,0x40,0x2b,0xf8,0x48, +0x48,0x08,0x88,0x09,0x08,0x1a,0x30,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x1f, +0xf0,0x12,0x90,0x1f,0xf0,0x00,0x00,0x7f,0xfc,0x41,0x04,0x43,0xe4,0x1e,0x40,0x01, +0x80,0x03,0x00,0x3c,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x1f,0xf8,0x1a,0xa0,0x2a, +0xa0,0x7f,0xf8,0x0a,0xa0,0x0a,0xa0,0x0a,0xa0,0x7f,0xfc,0x00,0x00,0x24,0x88,0x22, +0x44,0x42,0x44,0x00,0x00,0x02,0x00,0x02,0x40,0x02,0x20,0x04,0xf0,0x3f,0x08,0x09, +0x00,0x0f,0xf0,0x11,0x00,0x21,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x00,0x00,0x00,0x00,0x1f,0xf0,0x02,0x20,0x01,0x40,0x00,0x80,0x7f,0xfc,0x00, +0x88,0x01,0x90,0x02,0x80,0x04,0x80,0x18,0x80,0x60,0x80,0x00,0x80,0x01,0x80,0x00, +0x00,0x00,0x00,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x41,0x04,0x5d,0x74,0x01,0x40,0x3e, +0x7c,0x14,0xd0,0x7f,0x70,0x1b,0xac,0x2c,0xf8,0x48,0x48,0x19,0x98,0x00,0x00,0x04, +0x20,0x3e,0x40,0x05,0xf8,0x04,0x88,0x7f,0xf8,0x14,0x88,0x14,0xf8,0x3c,0xfc,0x34, +0x80,0x34,0xfc,0x36,0x54,0x3f,0xac,0x63,0x44,0x02,0x18,0x00,0x00,0x08,0x20,0x08, +0x20,0x09,0xfc,0x7e,0x00,0x08,0xf8,0x18,0x88,0x1c,0x88,0x1a,0xf8,0x2a,0x20,0x28, +0xb0,0x48,0xa8,0x09,0x24,0x0a,0x24,0x08,0x60,0x00,0x00,0x10,0x00,0x13,0xfc,0x10, +0x48,0x11,0x50,0x7d,0x78,0x25,0xc0,0x26,0x3c,0x25,0xf8,0x75,0x08,0x49,0xf8,0x0d, +0x08,0x15,0xf8,0x61,0x08,0x01,0x18,0x00,0x00,0x08,0x20,0x08,0x20,0x08,0xf8,0x08, +0x88,0x7e,0x88,0x12,0xf8,0x12,0x88,0x12,0xf8,0x3a,0xa4,0x24,0xa8,0x06,0x90,0x0a, +0xb0,0x30,0xc8,0x03,0x04,0x00,0x00,0x00,0x00,0x7f,0xfc,0x40,0x04,0x4f,0xe4,0x08, +0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x01,0x00,0x7f,0xfc,0x00,0x00,0x04,0x40,0x18, +0x30,0x60,0x08,0x00,0x00,0x02,0x00,0x02,0x00,0x07,0xe0,0x04,0x20,0x0c,0x40,0x12, +0x80,0x21,0x00,0x02,0x00,0x07,0xf8,0x1c,0x08,0x64,0x08,0x04,0x08,0x04,0x08,0x07, +0xf8,0x00,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x18,0x30,0x6f,0xec,0x00,0x00,0x3c, +0xf8,0x24,0x88,0x24,0x88,0x24,0x88,0x24,0x88,0x3c,0xf0,0x00,0x80,0x00,0x80,0x00, +0x00,0x00,0x00,0x7c,0xf8,0x44,0x88,0x44,0x88,0x44,0x88,0x7c,0xf8,0x44,0x88,0x44, +0x88,0x44,0x88,0x44,0xf8,0x7d,0x08,0x01,0x08,0x02,0x08,0x04,0x18,0x00,0x00,0x00, +0x00,0x3e,0xf8,0x22,0x88,0x3e,0xf8,0x22,0x88,0x3e,0xf8,0x01,0x08,0x02,0x18,0x1f, +0xf0,0x12,0x90,0x12,0x90,0x12,0x90,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x80,0x24, +0x90,0x12,0x90,0x12,0xa0,0x00,0x80,0x0f,0xf8,0x71,0xc0,0x11,0xa0,0x12,0x90,0x14, +0x88,0x10,0x80,0x18,0x80,0x26,0x00,0x41,0xfc,0x00,0x00,0x08,0x40,0x08,0x40,0x14, +0x78,0x12,0x88,0x22,0x90,0x5d,0x50,0x08,0x20,0x7e,0x40,0x08,0xf8,0x2b,0x88,0x1c, +0x88,0x18,0x88,0x0e,0xf8,0x70,0x00,0x00,0x00,0x00,0x40,0x00,0x80,0x7b,0xf0,0x4a, +0x10,0x4b,0xf0,0x4a,0x10,0x4b,0xf0,0x4b,0xfc,0x4a,0x00,0x4b,0xfc,0x7a,0xa4,0x05, +0x54,0x05,0x04,0x08,0x18,0x00,0x00,0x10,0x00,0x17,0xfc,0x10,0x80,0x10,0xa0,0x7d, +0x10,0x27,0xf8,0x24,0x48,0x24,0x40,0x77,0xf8,0x48,0x40,0x0c,0x40,0x14,0x40,0x27, +0xfc,0x40,0x00,0x00,0x00,0x08,0x80,0x28,0x80,0x28,0x80,0x28,0x88,0x3e,0x88,0x28, +0x90,0x48,0xa0,0x08,0xc0,0x0e,0x80,0x78,0x80,0x08,0x80,0x08,0x84,0x08,0x84,0x08, +0x7c,0x00,0x00,0x10,0x20,0x08,0x28,0x08,0x24,0x47,0xfc,0x24,0x20,0x27,0xe8,0x05, +0x28,0x17,0x68,0x17,0xb0,0x15,0x10,0x25,0xb0,0x2a,0x54,0x4c,0x8c,0x50,0x04,0x00, +0x00,0x04,0x00,0x07,0xc0,0x08,0x80,0x11,0x00,0x7f,0xf0,0x11,0x10,0x11,0x10,0x1f, +0xf0,0x02,0x80,0x02,0x80,0x04,0x80,0x08,0x84,0x10,0x84,0x60,0x7c,0x00,0x00,0x08, +0x20,0x08,0x40,0x08,0xf8,0x7e,0x88,0x08,0xf8,0x1c,0x88,0x1a,0xf8,0x1a,0x20,0x29, +0xfc,0x29,0x24,0x49,0x24,0x09,0x24,0x09,0x38,0x08,0x20,0x00,0x00,0x10,0x40,0x10, +0x80,0x25,0xf0,0x69,0x10,0x11,0xf0,0x19,0x10,0x25,0xf0,0x7a,0x40,0x13,0xf8,0x5a, +0x48,0x56,0x48,0x52,0x48,0x52,0x70,0x10,0x40,0x00,0x00,0x10,0x00,0x17,0xfc,0x14, +0x40,0x64,0x80,0x1b,0xf8,0x1a,0xa8,0x26,0xa8,0x7e,0xe8,0x12,0xa8,0x3a,0xe8,0x36, +0xa8,0x36,0xa8,0x53,0xf8,0x10,0x00,0x00,0x00,0x00,0x00,0x7f,0xfc,0x01,0x00,0x02, +0x00,0x7f,0xf8,0x48,0x48,0x48,0x48,0x4f,0xc8,0x48,0x48,0x4f,0xc8,0x48,0x48,0x48, +0x48,0x7f,0xf8,0x00,0x00,0x00,0x00,0x08,0x00,0x09,0xfc,0x7e,0x40,0x08,0x80,0x3f, +0xfc,0x09,0x54,0x7f,0x74,0x11,0x54,0x1d,0x74,0x25,0x54,0x55,0xfc,0x08,0x00,0x16, +0x00,0x61,0xfc,0x00,0x00,0x10,0xa0,0x10,0xa0,0x17,0xfc,0x7c,0xa0,0x11,0xf0,0x11, +0x10,0x19,0xf0,0x11,0x10,0x31,0xf0,0x50,0x40,0x17,0xfc,0x10,0xa0,0x11,0x10,0x36, +0x0c,0x00,0x00,0x08,0x90,0x08,0x90,0x0b,0xfc,0x7e,0x90,0x09,0xf8,0x1d,0x08,0x1b, +0xf8,0x1b,0x08,0x29,0xf8,0x28,0x40,0x4f,0xfc,0x08,0xa0,0x09,0x10,0x0e,0x0c,0x00, +0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x01,0x10,0x01,0x08,0x1f,0xfc,0x11, +0x00,0x10,0x90,0x10,0x90,0x10,0x60,0x10,0x64,0x21,0x9c,0x46,0x04,0x00,0x00,0x01, +0x00,0x01,0x00,0x7f,0xfc,0x08,0x00,0x08,0x00,0x07,0xf8,0x01,0x00,0x02,0x00,0x7f, +0xfc,0x04,0x20,0x0f,0x40,0x10,0xc0,0x03,0x30,0x3c,0x08,0x00,0x00,0x1f,0xf0,0x00, +0x60,0x01,0x80,0x01,0x00,0x7f,0xfc,0x01,0x00,0x03,0x00,0x1f,0xf0,0x12,0x90,0x12, +0x90,0x12,0x90,0x12,0x90,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x30,0x01,0xc0,0x1e, +0x00,0x02,0x00,0x02,0x00,0x3f,0xf8,0x02,0x00,0x02,0x00,0x7f,0xfc,0x02,0x00,0x02, +0x00,0x02,0x04,0x02,0x04,0x01,0xfc,0x00,0x00,0x08,0x00,0x4b,0xf8,0x30,0x10,0x10, +0x60,0x37,0xfc,0x48,0x40,0x08,0xc0,0x1b,0xf8,0x2a,0xa8,0x4a,0xa8,0x0a,0xa8,0x0a, +0xa8,0x0f,0xfc,0x30,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x08,0x00,0x07, +0xf0,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x00,0x00,0x00,0x00,0x10,0x00,0x13,0xf8,0x17,0x28,0x66,0xa8,0x1a,0xc8,0x1b, +0xf8,0x26,0x48,0x7f,0xf8,0x12,0x88,0x3a,0x88,0x36,0x88,0x36,0x78,0x52,0x08,0x12, +0x18,0x00,0x00,0x08,0x08,0x08,0x30,0x7f,0xc0,0x08,0x40,0x7e,0x58,0x09,0xe0,0x7e, +0x40,0x08,0x5c,0x1d,0xe0,0x1a,0x40,0x2a,0x40,0x48,0x44,0x08,0x44,0x08,0x3c,0x00, +0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x7f,0xfc,0x4f,0xe4,0x00,0x00,0x7f,0xfc,0x03, +0x48,0x3d,0xd0,0x06,0xa0,0x39,0x90,0x06,0x88,0x78,0x84,0x03,0x00,0x00,0x00,0x08, +0x20,0x0f,0x20,0x08,0xf8,0x1f,0x28,0x10,0x30,0x37,0xfc,0x50,0x20,0x17,0x78,0x10, +0xc8,0x17,0x78,0x15,0x48,0x15,0x48,0x17,0x78,0x10,0x00,0x00,0x00,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x03,0x80,0x03,0x80,0x05,0x40,0x09,0x20,0x11, +0x10,0x21,0x08,0x41,0x04,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x30,0x3f,0x28,0x25, +0x28,0x3f,0xfc,0x25,0x20,0x3f,0x20,0x04,0x50,0x3f,0x50,0x06,0x88,0x78,0x04,0x14, +0x90,0x12,0x48,0x22,0x44,0x40,0x04,0x00,0x00,0x00,0x00,0x1f,0xf0,0x10,0x10,0x10, +0x10,0x10,0x10,0x1f,0xf0,0x10,0x10,0x10,0x10,0x1f,0xf0,0x10,0x10,0x10,0x10,0x10, +0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x03,0x80,0x05, +0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x1f,0xf0,0x01,0x00,0x01,0x00,0x01,0x00,0x7f, +0xfc,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x0f,0xf8,0x12,0x48,0x12, +0x48,0x22,0x48,0x44,0x48,0x04,0x48,0x08,0x88,0x10,0x88,0x01,0x08,0x02,0x08,0x00, +0x30,0x00,0x00,0x09,0x08,0x0c,0x88,0x12,0x90,0x2b,0xfc,0x48,0x90,0x3c,0x90,0x24, +0x90,0x3f,0xfc,0x24,0x90,0x3c,0x90,0x28,0x90,0x25,0x10,0x3b,0x10,0x62,0x10,0x00, +0x00,0x01,0x10,0x01,0x08,0x01,0x08,0x01,0x00,0x7f,0xfc,0x03,0x00,0x03,0x00,0x03, +0x00,0x05,0x00,0x05,0x00,0x09,0x00,0x11,0x04,0x21,0x04,0x40,0xfc,0x00,0x00,0x00, +0x00,0x3f,0xfc,0x00,0x00,0x1f,0xf8,0x10,0x08,0x1f,0xf8,0x10,0x80,0x10,0x80,0x1f, +0xfc,0x10,0x80,0x21,0x40,0x22,0x20,0x4c,0x10,0x30,0x0c,0x00,0x00,0x08,0x00,0x09, +0xf8,0x4a,0x48,0x2a,0x48,0x2c,0x48,0x09,0x48,0x7e,0xc8,0x0c,0x68,0x1a,0x58,0x1a, +0x48,0x28,0x88,0x48,0x88,0x09,0x08,0x0a,0x30,0x00,0x00,0x09,0x20,0x7f,0xfc,0x09, +0x20,0x09,0xe0,0x08,0x00,0x0f,0xf8,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08, +0x20,0x0f,0xe0,0x06,0x60,0x38,0x18,0x00,0x00,0x00,0x00,0x7c,0xf8,0x44,0x88,0x7c, +0xf8,0x44,0x88,0x7c,0xf8,0x40,0x08,0x4f,0xc8,0x48,0x48,0x48,0x48,0x48,0x48,0x4f, +0xc8,0x40,0x08,0x40,0x18,0x00,0x00,0x00,0x00,0x7c,0xf8,0x44,0x88,0x7c,0xf8,0x44, +0x88,0x7c,0xf8,0x42,0x08,0x41,0x08,0x45,0x08,0x54,0x28,0x54,0x58,0x64,0x58,0x43, +0xc8,0x40,0x18,0x00,0x00,0x08,0x20,0x08,0x20,0x0a,0x20,0x73,0xfc,0x14,0x88,0x0c, +0x88,0x12,0x88,0x7d,0x50,0x08,0x50,0x2c,0x20,0x2a,0x20,0x2a,0x50,0x49,0x88,0x0e, +0x04,0x00,0x00,0x00,0x00,0x7c,0xf8,0x44,0x88,0x7c,0xf8,0x44,0x88,0x7c,0xf8,0x40, +0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x18,0x00, +0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x0f,0xf0,0x09,0x10,0x15,0x10,0x13,0x10,0x21, +0x10,0x42,0xd0,0x02,0x30,0x04,0x1c,0x08,0x10,0x10,0x20,0x00,0xc0,0x00,0x00,0x01, +0x00,0x11,0x00,0x11,0x00,0x11,0x30,0x11,0xd0,0x17,0x10,0x19,0x10,0x71,0x10,0x11, +0x10,0x11,0x10,0x11,0x60,0x10,0x04,0x10,0x04,0x0f,0xfc,0x00,0x00,0x00,0x80,0x00, +0x80,0x20,0x80,0x10,0xa0,0x11,0x10,0x01,0x38,0x07,0xc4,0x10,0x00,0x13,0xf8,0x22, +0x08,0x22,0x08,0x42,0x08,0x43,0xf8,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x7f, +0xfc,0x08,0x80,0x08,0x80,0x10,0xf0,0x11,0x90,0x31,0x50,0x53,0x20,0x14,0xa0,0x10, +0x40,0x10,0xa0,0x13,0x10,0x1c,0x0c,0x00,0x00,0x02,0xc0,0x0c,0x30,0x32,0x48,0x01, +0x80,0x06,0x60,0x78,0x1c,0x3f,0xf8,0x12,0x50,0x1e,0x70,0x12,0x48,0x1e,0x44,0x13, +0x44,0x7e,0x78,0x02,0x40,0x00,0x00,0x00,0x00,0x7f,0xf8,0x12,0x48,0x12,0x50,0x1e, +0x50,0x12,0x60,0x12,0x50,0x1e,0x48,0x12,0x44,0x13,0x44,0x1e,0x64,0x62,0x58,0x02, +0x40,0x02,0x40,0x00,0x00,0x00,0x00,0x3f,0xf8,0x2a,0x90,0x2a,0x60,0x3e,0x20,0x2b, +0xfc,0x2a,0x28,0x3e,0x30,0x08,0x20,0x3e,0x20,0x08,0x20,0x0e,0x20,0x70,0x20,0x00, +0x60,0x00,0x00,0x00,0x80,0x7c,0x80,0x04,0x80,0x05,0xfc,0x3d,0x20,0x26,0x20,0x20, +0xb0,0x3c,0xa8,0x04,0xa8,0x05,0x24,0x05,0x24,0x06,0x24,0x08,0x20,0x30,0x60,0x00, +0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x1f,0xf0,0x11,0x00,0x21,0x00,0x01,0x00,0x7f, +0xfc,0x01,0x00,0x02,0x80,0x02,0x40,0x04,0x20,0x18,0x10,0x60,0x0c,0x00,0x00,0x00, +0x00,0x1f,0xfc,0x10,0x00,0x10,0x00,0x13,0xf0,0x12,0x10,0x12,0x10,0x12,0x10,0x12, +0x10,0x12,0x60,0x12,0x00,0x22,0x04,0x22,0x04,0x41,0xfc,0x00,0x00,0x10,0x00,0x11, +0xe0,0x21,0x20,0x49,0x24,0x09,0x24,0x12,0x1c,0x14,0x00,0x37,0xf0,0x51,0x10,0x11, +0x20,0x10,0xc0,0x10,0xc0,0x13,0x30,0x1c,0x0c,0x00,0x00,0x08,0x40,0x08,0x40,0x0a, +0x40,0x72,0xf8,0x14,0x88,0x0d,0x08,0x12,0x88,0x7e,0x48,0x08,0x48,0x2c,0x08,0x2a, +0x08,0x2a,0x08,0x48,0x08,0x08,0x30,0x00,0x00,0x04,0x40,0x7f,0xfc,0x05,0x40,0x27, +0xc8,0x14,0x50,0x0f,0xe0,0x14,0x58,0x67,0xc4,0x01,0x00,0x7f,0xfc,0x03,0x80,0x0d, +0x60,0x71,0x1c,0x01,0x00,0x00,0x00,0x00,0x00,0x3c,0xf8,0x00,0x88,0x7e,0x88,0x00, +0x88,0x3c,0xf8,0x00,0xa0,0x3c,0xa0,0x00,0xa0,0x3c,0xa0,0x25,0x10,0x25,0x10,0x3e, +0x08,0x04,0x04,0x00,0x00,0x00,0x00,0x3f,0xf8,0x24,0x48,0x27,0xf8,0x3c,0x48,0x2b, +0xf8,0x08,0x90,0x2d,0xfc,0x2b,0x20,0x29,0xf8,0x29,0x20,0x2f,0xf8,0x39,0x20,0x61, +0xfc,0x00,0x00,0x00,0x20,0x09,0xfc,0x08,0x20,0x08,0xf8,0x7e,0x20,0x05,0xfc,0x24, +0x00,0x14,0xf8,0x14,0x88,0x08,0xf8,0x0e,0x88,0x70,0xf8,0x00,0x88,0x00,0x98,0x00, +0x00,0x10,0x40,0x10,0x80,0x13,0x38,0x7e,0xa8,0x12,0xa8,0x1a,0xa8,0x36,0xa8,0x36, +0xa8,0x32,0xa8,0x53,0xa8,0x14,0xb8,0x11,0x20,0x11,0x20,0x12,0x20,0x00,0x00,0x04, +0x40,0x7f,0xfc,0x0c,0x40,0x2a,0x40,0x1c,0x40,0x7f,0x7c,0x1c,0x90,0x2a,0x90,0x7f, +0x50,0x12,0x60,0x3c,0x20,0x04,0x50,0x1a,0x88,0x63,0x04,0x00,0x00,0x10,0x20,0x12, +0xf8,0x19,0xa8,0x25,0xf8,0x24,0x20,0x79,0xfc,0x10,0x70,0x7f,0x50,0x11,0x70,0x55, +0x78,0x39,0x48,0x31,0x78,0x1e,0xc0,0x64,0x7c,0x00,0x00,0x10,0x40,0x10,0x40,0x10, +0xa0,0x19,0x10,0x37,0xf8,0x34,0x04,0x37,0xa8,0x54,0xa8,0x17,0xa8,0x14,0xa8,0x17, +0xa8,0x14,0xa8,0x14,0x88,0x15,0x98,0x00,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x1f, +0xf0,0x7e,0x9c,0x12,0x90,0x1e,0x90,0x1e,0x90,0x12,0x10,0x17,0x30,0x24,0x88,0x24, +0xa4,0x44,0x24,0x03,0xe0,0x00,0x00,0x10,0x40,0x08,0x40,0x08,0x40,0x40,0x40,0x23, +0xf8,0x22,0x48,0x02,0x48,0x0a,0x48,0x0b,0xf8,0x0a,0x48,0x12,0x48,0x12,0x48,0x23, +0xf8,0x20,0x00,0x00,0x00,0x00,0x80,0x0f,0xfc,0x08,0xc0,0x4f,0x30,0x29,0xfc,0x2b, +0xa8,0x0a,0xa8,0x1b,0xa8,0x2b,0xa8,0x4a,0x98,0x10,0xc0,0x15,0x28,0x25,0x14,0x48, +0xf4,0x00,0x00,0x00,0x40,0x38,0x40,0x00,0xa0,0x7d,0x10,0x03,0xf8,0x3c,0x04,0x03, +0xa8,0x3a,0xa8,0x03,0xa8,0x3a,0xa8,0x2b,0xa8,0x2a,0xa8,0x3a,0x88,0x02,0x98,0x00, +0x00,0x10,0x40,0x10,0x40,0x7e,0xa0,0x10,0xa0,0x7d,0x10,0x57,0xf8,0x7c,0x04,0x57, +0xa8,0x7e,0xa8,0x13,0xa8,0x7e,0xa8,0x13,0xa8,0x12,0x88,0x12,0x98,0x00,0x00,0x00, +0x90,0x00,0x90,0x79,0x20,0x49,0xfc,0x4b,0x20,0x4b,0x20,0x4d,0xf8,0x49,0x20,0x49, +0x20,0x49,0xf8,0x79,0x20,0x01,0x20,0x01,0xfc,0x00,0x00,0x00,0x00,0x08,0x80,0x08, +0x80,0x08,0x80,0x17,0xfc,0x11,0x00,0x31,0x00,0x52,0x00,0x13,0xf8,0x15,0x08,0x19, +0x08,0x11,0x08,0x11,0x08,0x11,0xf8,0x10,0x00,0x00,0x00,0x08,0x00,0x0f,0xfc,0x08, +0x40,0x11,0xf0,0x11,0xf0,0x31,0x10,0x5f,0xfc,0x1b,0x54,0x12,0xe8,0x14,0xf4,0x11, +0xa0,0x16,0x40,0x11,0xb0,0x1e,0x0c,0x00,0x00,0x00,0x00,0x1f,0xe0,0x04,0xc0,0x03, +0x00,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x01,0x00,0x7f,0xf8,0x02, +0x08,0x0c,0x08,0x70,0x70,0x00,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x7f,0xfc,0x02, +0x00,0x02,0x00,0x07,0xf0,0x06,0x10,0x05,0x20,0x09,0x40,0x08,0x80,0x11,0x40,0x26, +0x30,0x58,0x0c,0x00,0x00,0x02,0x00,0x02,0x00,0x7f,0xfc,0x42,0x04,0x7f,0xf8,0x04, +0x00,0x07,0xf0,0x0c,0x10,0x0f,0xf0,0x14,0x10,0x27,0xf0,0x44,0x10,0x04,0x10,0x04, +0x30,0x00,0x00,0x01,0x00,0x05,0x20,0x25,0x28,0x39,0xc8,0x2b,0x58,0x2b,0x58,0x25, +0x28,0x27,0x38,0x2b,0x58,0x3f,0xf8,0x21,0x08,0x21,0x08,0x3f,0xf8,0x00,0x00,0x00, +0x00,0x08,0x80,0x08,0x80,0x15,0xfc,0x15,0x10,0x36,0xa0,0x54,0x40,0x15,0xb0,0x16, +0x0c,0x11,0x00,0x04,0x90,0x24,0x88,0x24,0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x00, +0x00,0x7f,0xfc,0x02,0x00,0x0f,0xe0,0x0f,0xe0,0x08,0x20,0x7f,0xfc,0x45,0x34,0x57, +0xe8,0x23,0xe4,0x0e,0x40,0x31,0x80,0x07,0x60,0x78,0x1c,0x00,0x00,0x10,0x00,0x11, +0xf0,0x11,0x10,0x7d,0xf0,0x10,0x00,0x17,0xfc,0x11,0x10,0x1d,0xf0,0x71,0x10,0x11, +0xf0,0x11,0x1c,0x11,0xf0,0x17,0x10,0x30,0x10,0x00,0x00,0x02,0x00,0x02,0x00,0x7f, +0xfc,0x04,0x00,0x04,0x00,0x0f,0xf0,0x0c,0x10,0x17,0xf0,0x24,0x10,0x47,0xf0,0x04, +0x10,0x04,0x10,0x04,0x10,0x04,0x30,0x00,0x00,0x10,0x40,0x10,0x40,0x10,0x40,0x7c, +0x40,0x13,0xf8,0x12,0x48,0x3a,0x48,0x36,0x48,0x37,0xf8,0x52,0x48,0x12,0x48,0x12, +0x48,0x13,0xf8,0x10,0x00,0x00,0x00,0x10,0x00,0x0f,0xf8,0x08,0x90,0x40,0x60,0x23, +0xf8,0x22,0x48,0x03,0xf8,0x12,0x48,0x13,0xf8,0x20,0x40,0x2f,0xfc,0x40,0x84,0x43, +0x04,0x4c,0x18,0x00,0x00,0x10,0x00,0x0b,0xf8,0x08,0xb0,0x40,0x40,0x23,0xf8,0x22, +0x48,0x02,0x48,0x0b,0xf8,0x0a,0x48,0x0a,0x48,0x13,0xf8,0x12,0x48,0x22,0x48,0x22, +0x58,0x00,0x00,0x09,0x10,0x48,0x90,0x30,0xa0,0x17,0xfc,0x30,0xa0,0x4b,0xf8,0x0a, +0xa8,0x1a,0xa8,0x2b,0x38,0x4a,0x18,0x0b,0xf8,0x0a,0x08,0x33,0xf8,0x10,0x00,0x00, +0x00,0x21,0x20,0x11,0x28,0x12,0x24,0x7f,0xa4,0x0c,0x20,0x3f,0xfc,0x2d,0x20,0x2d, +0x20,0x37,0x30,0x33,0x50,0x3f,0x50,0x21,0x88,0x3f,0x88,0x01,0x04,0x00,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x21,0x08,0x21,0x08,0x21,0x08,0x3f, +0xf8,0x21,0x08,0x21,0x08,0x21,0x08,0x3f,0xf8,0x00,0x00,0x00,0x00,0x10,0x40,0x10, +0x40,0x10,0x40,0x7f,0xfc,0x08,0x40,0x08,0x40,0x18,0x80,0x14,0xf8,0x35,0x88,0x51, +0x88,0x12,0x88,0x14,0x88,0x10,0xf8,0x10,0x00,0x00,0x00,0x10,0xa0,0x10,0x90,0x11, +0x08,0x7e,0x48,0x08,0x40,0x0a,0xa0,0x14,0xa0,0x19,0x10,0x37,0xf8,0x55,0x14,0x11, +0x10,0x11,0x10,0x11,0xf0,0x10,0x00,0x00,0x00,0x00,0x18,0x3d,0xe0,0x00,0x40,0x7f, +0xfc,0x00,0xe0,0x3d,0x50,0x02,0x48,0x3d,0xe4,0x00,0xa0,0x3c,0xb8,0x24,0xa8,0x25, +0x08,0x3d,0x08,0x02,0x30,0x00,0x00,0x02,0x20,0x22,0x20,0x12,0x20,0x1f,0xfc,0x02, +0x40,0x02,0x7c,0x73,0x88,0x12,0x90,0x12,0xfc,0x14,0x90,0x14,0x90,0x19,0xb0,0x26, +0x00,0x41,0xfc,0x00,0x00,0x00,0x00,0x0f,0xe0,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00, +0x00,0x3f,0xf8,0x21,0x08,0x21,0x08,0x3f,0xf8,0x20,0x00,0x20,0x00,0x20,0x04,0x1f, +0xfc,0x00,0x00,0x01,0x80,0x3e,0x78,0x04,0x48,0x3f,0xd0,0x15,0x50,0x15,0x60,0x7f, +0xd0,0x15,0x48,0x15,0x44,0x3f,0xc4,0x04,0x64,0x04,0x58,0x07,0x40,0x38,0x40,0x00, +0x00,0x08,0x48,0x08,0x48,0x08,0x90,0x7f,0xfc,0x09,0x90,0x0a,0x90,0x0c,0xf8,0x0c, +0x90,0x14,0x90,0x16,0xf8,0x29,0x90,0x4f,0x90,0x38,0xfc,0x00,0x00,0x00,0x00,0x00, +0x20,0x7f,0x20,0x00,0x20,0x3e,0xf8,0x22,0xa8,0x3e,0xa8,0x00,0xa8,0x7f,0xf8,0x55, +0xa8,0x67,0x30,0x5f,0x28,0x49,0x38,0x49,0xe4,0x4b,0x04,0x00,0x00,0x01,0x00,0x01, +0x00,0x01,0xf8,0x02,0x08,0x02,0x08,0x05,0x10,0x08,0x90,0x10,0x60,0x00,0x20,0x00, +0x40,0x00,0x80,0x01,0x00,0x06,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x1f,0xf0,0x02, +0x20,0x01,0x40,0x01,0x80,0x7f,0xfc,0x01,0x08,0x01,0x10,0x01,0x20,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x02,0x80,0x04, +0x40,0x18,0x30,0x6f,0xec,0x01,0x00,0x01,0x00,0x3f,0xf8,0x09,0x20,0x09,0x10,0x11, +0x08,0x21,0x08,0x03,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x07,0xf0,0x04,0x00,0x04, +0x00,0x07,0xc0,0x00,0x40,0x00,0x40,0x7f,0xfc,0x00,0x40,0x00,0x40,0x00,0x40,0x00, +0x40,0x03,0x80,0x00,0x00,0x12,0x10,0x09,0x20,0x7f,0xfc,0x10,0x20,0x17,0xd0,0x3f, +0xf8,0x40,0x04,0x07,0xc0,0x00,0x00,0x07,0xc0,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f, +0xe0,0x00,0x00,0x09,0x00,0x31,0x38,0x2f,0xe8,0x27,0xc8,0x35,0x58,0x27,0xc8,0x25, +0x48,0x37,0xd8,0x2f,0xe8,0x21,0x08,0x7f,0xfc,0x04,0x40,0x18,0x30,0x60,0x08,0x00, +0x00,0x00,0x00,0x3f,0xfc,0x12,0x20,0x0c,0x40,0x08,0xf8,0x7f,0x88,0x09,0xf8,0x0a, +0x88,0x0c,0xf8,0x08,0x88,0x08,0xf8,0x08,0x50,0x08,0x88,0x1b,0x04,0x00,0x00,0x10, +0x40,0x17,0xfc,0x14,0x40,0x27,0xf8,0x24,0x48,0x67,0xfc,0x24,0x48,0x27,0xf8,0x24, +0x40,0x27,0xf8,0x2a,0x48,0x2b,0xf8,0x32,0x48,0x22,0x58,0x00,0x00,0x08,0x40,0x08, +0x40,0x08,0x40,0x12,0x40,0x53,0xf8,0x24,0x48,0x14,0x48,0x08,0x48,0x0c,0x48,0x12, +0x48,0x16,0x88,0x3a,0x88,0x61,0x08,0x02,0x30,0x00,0x00,0x08,0x08,0x08,0x30,0x09, +0xe0,0x08,0x20,0x7e,0x20,0x12,0x20,0x13,0xfc,0x12,0x20,0x3c,0x20,0x24,0x60,0x06, +0x50,0x0a,0x90,0x31,0x08,0x02,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x44, +0x44,0x44,0x24,0x09,0x10,0x12,0x90,0x04,0x40,0x18,0x30,0x6f,0xec,0x08,0x20,0x08, +0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x00,0x80,0x1f,0xfc,0x10,0x80,0x17,0xf0,0x10, +0x90,0x1f,0xfc,0x10,0x90,0x17,0xf0,0x10,0x80,0x17,0xf0,0x24,0x90,0x27,0xf0,0x44, +0x90,0x04,0xb0,0x00,0x00,0x10,0x00,0x11,0xf0,0x11,0x10,0x7d,0xf0,0x11,0x10,0x11, +0xf0,0x10,0x00,0x1f,0xfc,0x71,0x00,0x13,0xf8,0x14,0xa8,0x11,0x28,0x12,0x48,0x30, +0xb0,0x00,0x00,0x10,0x38,0x13,0xc8,0x12,0x48,0x7d,0x50,0x11,0x20,0x10,0x40,0x13, +0xf8,0x18,0x40,0x77,0xfc,0x10,0x40,0x12,0x48,0x12,0x48,0x13,0xf8,0x30,0x00,0x00, +0x00,0x10,0x40,0x10,0x40,0x17,0xfc,0x79,0x28,0x11,0x28,0x16,0xfc,0x12,0xd0,0x19, +0x50,0x72,0xfc,0x17,0xd0,0x11,0x7c,0x11,0x50,0x12,0x50,0x34,0x7c,0x00,0x00,0x00, +0x00,0x07,0xf8,0x78,0x88,0x4b,0xb8,0x48,0x88,0x4f,0xf8,0x79,0x20,0x4b,0xf8,0x4e, +0x40,0x4b,0xf0,0x4a,0x40,0x7b,0xf0,0x02,0x40,0x03,0xf8,0x00,0x00,0x10,0x00,0x11, +0xf0,0x11,0x10,0x7d,0xf0,0x11,0x10,0x19,0xf0,0x34,0x00,0x37,0xfc,0x31,0x00,0x53, +0xf8,0x54,0xa8,0x11,0x28,0x12,0x48,0x10,0xb0,0x00,0x00,0x08,0x88,0x08,0x50,0x09, +0xfc,0x7e,0x20,0x08,0xf8,0x18,0x20,0x1d,0xfc,0x1b,0x24,0x2a,0xb8,0x28,0x70,0x48, +0xa8,0x0b,0x24,0x08,0x20,0x08,0x60,0x00,0x00,0x11,0x10,0x08,0x90,0x08,0xa0,0x47, +0xfc,0x20,0x40,0x20,0x40,0x03,0xf8,0x08,0x40,0x08,0x40,0x0f,0xfc,0x10,0x40,0x10, +0x40,0x20,0x40,0x20,0x40,0x00,0x00,0x10,0x40,0x08,0x40,0x0f,0xfc,0x44,0x04,0x25, +0x14,0x21,0x48,0x02,0x48,0x10,0xa0,0x11,0x10,0x23,0xf8,0x25,0x14,0x41,0x10,0x41, +0xf0,0x40,0x00,0x00,0x00,0x10,0x40,0x10,0x40,0x17,0xfc,0x14,0x04,0x35,0x10,0x35, +0x48,0x3a,0x48,0x50,0xa0,0x11,0x10,0x1e,0x0c,0x15,0xf0,0x25,0x10,0x21,0x10,0x41, +0xf0,0x00,0x00,0x00,0x00,0x3f,0xf0,0x22,0x10,0x22,0x10,0x22,0x10,0x3f,0xf0,0x22, +0x10,0x22,0x10,0x3f,0xf0,0x22,0x10,0x22,0x10,0x22,0x10,0x42,0x10,0x80,0x30,0x00, +0x00,0x01,0x00,0x7f,0xfc,0x44,0x44,0x4c,0x44,0x12,0xb8,0x3f,0xf0,0x01,0x00,0x0f, +0xe0,0x01,0x00,0x3f,0xf8,0x00,0x00,0x24,0x88,0x22,0x44,0x42,0x44,0x00,0x00,0x08, +0x20,0x04,0x20,0x04,0x40,0x3f,0xf8,0x01,0x00,0x01,0x00,0x1f,0xf0,0x01,0x00,0x01, +0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x09, +0xf8,0x4a,0x48,0x2b,0xf8,0x2c,0x48,0x09,0xf8,0x7e,0x90,0x19,0xfc,0x1b,0x20,0x19, +0xf8,0x1b,0x20,0x2d,0xf8,0x29,0x20,0x41,0xfc,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04, +0x40,0x09,0x20,0x7f,0xfc,0x09,0x20,0x09,0xe0,0x0f,0xf0,0x01,0x00,0x3f,0xf8,0x03, +0x80,0x0d,0x60,0x71,0x1c,0x01,0x00,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x01, +0x00,0x7f,0xfc,0x44,0x44,0x49,0x24,0x12,0x90,0x04,0x40,0x18,0x30,0x6f,0xec,0x08, +0x20,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00,0x00,0x7f,0xfc,0x02,0x80,0x1f,0xf0,0x12, +0x90,0x12,0x90,0x1f,0xf0,0x02,0x00,0x7f,0xfc,0x04,0x40,0x0f,0x40,0x08,0xc0,0x03, +0x30,0x3c,0x08,0x00,0x00,0x00,0x08,0x3c,0x30,0x03,0xc8,0x7e,0x48,0x01,0x50,0x3d, +0x20,0x03,0xf8,0x3c,0x40,0x03,0xfc,0x38,0x40,0x2a,0x48,0x2a,0x48,0x2a,0x48,0x3b, +0xf8,0x00,0x00,0x00,0x00,0x3f,0xf8,0x24,0xa0,0x24,0x40,0x3d,0xf8,0x29,0x48,0x09, +0x48,0x2f,0xf8,0x29,0x48,0x29,0x48,0x29,0xf8,0x2f,0x48,0x39,0x48,0x61,0x58,0x00, +0x00,0x00,0x3c,0x27,0xc8,0x12,0x48,0x11,0x50,0x01,0x20,0x03,0xf8,0x70,0x40,0x17, +0xfc,0x12,0x48,0x12,0x48,0x12,0x48,0x1b,0xf8,0x26,0x00,0x41,0xfc,0x00,0x00,0x00, +0x00,0x3d,0xf0,0x25,0x10,0x29,0xf0,0x29,0x10,0x31,0xf0,0x28,0x00,0x27,0xfc,0x25, +0x00,0x25,0xf8,0x3a,0xa8,0x24,0xa8,0x21,0x48,0x22,0xb0,0x00,0x00,0x04,0x40,0x3f, +0xf8,0x01,0x00,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x05,0x40,0x1f,0xf0,0x67,0xcc,0x04, +0x40,0x07,0xe0,0x05,0x20,0x06,0xc0,0x38,0x38,0x00,0x00,0x14,0x40,0x12,0x40,0x2a, +0x7c,0x0c,0xa8,0x13,0x30,0x3e,0x20,0x52,0x50,0x1f,0x88,0x01,0x04,0x14,0x90,0x14, +0x88,0x24,0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x10,0x80,0x10,0x80,0x13,0x78,0x7e, +0x48,0x12,0x48,0x12,0x48,0x12,0x48,0x1e,0x48,0x72,0x48,0x13,0xc8,0x1e,0x70,0x10, +0x40,0x10,0x40,0x30,0x40,0x00,0x00,0x14,0x40,0x12,0x40,0x22,0x40,0x48,0x40,0x08, +0xfc,0x14,0xa8,0x13,0x30,0x22,0x20,0x7e,0x20,0x22,0x60,0x22,0x50,0x22,0x90,0x3f, +0x08,0x02,0x04,0x00,0x00,0x10,0x08,0x08,0x30,0x0b,0xc0,0x40,0x40,0x20,0x40,0x20, +0x40,0x07,0xfc,0x10,0x40,0x10,0x40,0x20,0xa0,0x20,0xa0,0x41,0x10,0x42,0x08,0x4c, +0x04,0x00,0x00,0x11,0x20,0x09,0x10,0x0a,0x08,0x42,0x48,0x24,0x40,0x20,0xa0,0x01, +0x20,0x12,0x10,0x17,0xf8,0x1a,0x14,0x22,0x10,0x22,0x10,0x43,0xf0,0x40,0x00,0x00, +0x00,0x00,0x00,0x3f,0xf8,0x12,0x48,0x0a,0x28,0x0e,0x38,0x32,0xc8,0x07,0x18,0x01, +0x00,0x3f,0xf8,0x04,0x40,0x02,0x40,0x02,0x80,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00, +0x00,0x7f,0xf8,0x12,0x98,0x1a,0x68,0x66,0x98,0x0f,0xe0,0x09,0x20,0x0f,0xe0,0x09, +0x20,0x1f,0xf0,0x04,0x40,0x7f,0xfc,0x0c,0x60,0x70,0x18,0x00,0x00,0x10,0x40,0x08, +0x40,0x0f,0xfc,0x44,0x04,0x24,0x00,0x23,0xfc,0x00,0x40,0x12,0x40,0x12,0x78,0x22, +0x40,0x22,0x40,0x43,0x40,0x44,0xc0,0x48,0x3c,0x00,0x00,0x00,0x00,0x3f,0xf8,0x24, +0x48,0x3f,0xf8,0x10,0x88,0x14,0x90,0x64,0xfc,0x19,0x90,0x16,0xf8,0x7e,0x90,0x2c, +0xf8,0x2a,0x90,0x48,0xfc,0x08,0x00,0x00,0x00,0x08,0x00,0x08,0xf8,0x08,0xa8,0x3e, +0xf8,0x2a,0xa8,0x2a,0xf8,0x2a,0x48,0x3e,0xd0,0x28,0x28,0x0d,0xfc,0x0a,0xa4,0x0e, +0xa8,0x71,0x24,0x00,0x20,0x00,0x00,0x10,0x00,0x13,0xf8,0x12,0x48,0x7e,0x48,0x0b, +0xf8,0x0a,0x48,0x17,0xf8,0x18,0x40,0x37,0xfc,0x54,0xe0,0x11,0x50,0x12,0x48,0x14, +0x44,0x10,0x40,0x00,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x09,0x20,0x05,0x20,0x05, +0x40,0x7f,0xfc,0x01,0x00,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x01, +0x00,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x05,0x40,0x01,0x00,0x3f,0xf8,0x09, +0x20,0x05,0x40,0x7f,0xfc,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x00, +0x00,0x08,0x00,0x09,0xfc,0x7f,0x20,0x08,0x40,0x3e,0xf8,0x2a,0x88,0x2a,0xf8,0x3e, +0x88,0x1c,0xf8,0x1a,0x88,0x2a,0xf8,0x48,0x50,0x08,0x88,0x0b,0x04,0x00,0x00,0x00, +0x00,0x3f,0xf8,0x01,0x00,0x7f,0xfc,0x41,0x04,0x5d,0x74,0x0f,0x38,0x00,0x00,0x1f, +0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x00,0x00,0x00,0x00,0x10,0x80,0x08, +0x80,0x08,0xf0,0x41,0x10,0x23,0x20,0x24,0xc0,0x00,0xc0,0x13,0x30,0x1f,0xfc,0x22, +0x10,0x22,0x10,0x42,0x10,0x43,0xf0,0x40,0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x0a, +0x78,0x72,0x88,0x14,0xd0,0x0d,0x20,0x12,0x50,0x7e,0x88,0x09,0xfc,0x2c,0x88,0x2a, +0x88,0x2a,0x88,0x48,0xf8,0x08,0x00,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x04, +0xc0,0x10,0xf0,0x09,0x90,0x4a,0x60,0x20,0x60,0x25,0x90,0x0f,0xfc,0x11,0x10,0x11, +0x10,0x21,0xf0,0x20,0x00,0x00,0x00,0x00,0x20,0x7f,0xa0,0x0c,0x38,0x0c,0x48,0x3f, +0xd0,0x2d,0x30,0x2d,0x30,0x35,0x48,0x37,0xfc,0x21,0x48,0x3f,0x48,0x21,0x48,0x3f, +0x78,0x00,0x00,0x00,0x00,0x02,0x40,0x0c,0x40,0x38,0x40,0x08,0x40,0x08,0x40,0x7f, +0x40,0x08,0x40,0x08,0x40,0x3e,0x40,0x22,0x40,0x22,0x40,0x22,0x44,0x3e,0x44,0x00, +0x3c,0x00,0x00,0x02,0x00,0x0c,0x00,0x32,0xf8,0x22,0x88,0x32,0xc8,0x2a,0xa8,0x2a, +0xa8,0x22,0x88,0x22,0x88,0x2e,0x88,0x74,0xf0,0x04,0x80,0x08,0x80,0x10,0x80,0x00, +0x00,0x11,0x10,0x11,0x10,0x1f,0xf0,0x00,0x00,0x1f,0xf0,0x10,0xd0,0x1f,0x10,0x17, +0xd0,0x15,0x50,0x17,0xd0,0x15,0x54,0x21,0xec,0x2e,0x2c,0x40,0x04,0x00,0x00,0x10, +0x00,0x17,0xbc,0x14,0xa4,0x7f,0xbc,0x14,0xa4,0x37,0xbc,0x3c,0x44,0x3f,0xfc,0x55, +0xf4,0x55,0x54,0x15,0xf4,0x14,0xe4,0x17,0x5c,0x14,0x4c,0x00,0x00,0x20,0x20,0x17, +0xe0,0x15,0x20,0x47,0xbc,0x24,0xc0,0x27,0x80,0x05,0x38,0x17,0xc0,0x10,0x00,0x17, +0xf8,0x25,0x28,0x25,0x28,0x5f,0xfc,0x40,0x00,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04, +0x40,0x3f,0x40,0x24,0x7c,0x3e,0x80,0x3f,0x00,0x24,0x78,0x3f,0x00,0x1f,0xf0,0x12, +0x90,0x12,0x90,0x7f,0xfc,0x00,0x00,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0x40,0x3e, +0xf8,0x22,0x88,0x3e,0xf8,0x21,0x08,0x2f,0xe8,0x27,0xc8,0x25,0x48,0x27,0xc8,0x23, +0x88,0x2d,0x68,0x21,0x18,0x00,0x00,0x00,0x40,0x7e,0x40,0x48,0xfc,0x7d,0x00,0x48, +0x78,0x7e,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x02,0x80,0x0c, +0x84,0x70,0x7c,0x00,0x00,0x01,0x08,0x06,0x48,0x3c,0x48,0x04,0x48,0x04,0x48,0x7f, +0x48,0x0c,0x48,0x0e,0x48,0x15,0x48,0x15,0x48,0x24,0x48,0x44,0x08,0x04,0x08,0x04, +0x18,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x01,0x00,0x1f,0xf0,0x11,0x10,0x11, +0x10,0x1f,0xf0,0x09,0x00,0x05,0x00,0x02,0x00,0x05,0x80,0x18,0x60,0x60,0x1c,0x00, +0x00,0x00,0x00,0x1f,0xf8,0x10,0x08,0x1f,0xf8,0x12,0x80,0x14,0xfc,0x1b,0x90,0x12, +0xf0,0x14,0x90,0x1c,0xf0,0x14,0xf8,0x27,0x90,0x24,0x60,0x47,0x9c,0x00,0x00,0x01, +0x00,0x01,0x00,0x7f,0xfc,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x0f,0xe0,0x00, +0xc0,0x01,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x01,0x08,0x3e, +0x48,0x04,0x48,0x7f,0xc8,0x0e,0x48,0x15,0x48,0x64,0x98,0x05,0x00,0x3f,0xf8,0x03, +0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01,0x00,0x00,0x00,0x00,0x00,0x03,0xf8,0x7e, +0x48,0x12,0x48,0x13,0xf8,0x12,0x48,0x7e,0x48,0x13,0xf8,0x10,0x40,0x10,0x40,0x1b, +0xf8,0x60,0x40,0x00,0x40,0x07,0xfc,0x00,0x00,0x00,0x40,0x07,0xfc,0x7e,0x28,0x12, +0xa8,0x12,0x68,0x12,0x98,0x7f,0xf8,0x10,0x40,0x17,0xfc,0x14,0x64,0x1c,0x94,0x67, +0xf4,0x04,0x14,0x04,0x0c,0x00,0x00,0x00,0x80,0x00,0x80,0x0f,0xfc,0x48,0x48,0x29, +0xa8,0x2f,0x28,0x09,0x28,0x1f,0xe8,0x29,0x28,0x4b,0xa8,0x13,0x68,0x15,0x48,0x29, +0x08,0x41,0x18,0x00,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x0f,0xe0,0x09,0x20,0x0f, +0xe0,0x09,0x20,0x3f,0xf8,0x01,0x00,0x7f,0xfc,0x0c,0x90,0x74,0x60,0x07,0x30,0x38, +0x0c,0x00,0x00,0x10,0x00,0x13,0xf8,0x12,0x48,0x7e,0x48,0x0b,0xf8,0x0a,0x48,0x16, +0x48,0x1b,0xf8,0x34,0x40,0x57,0xf8,0x10,0x40,0x10,0x40,0x17,0xfc,0x10,0x00,0x00, +0x00,0x00,0x00,0x1f,0xf0,0x11,0x10,0x11,0x10,0x1f,0xf0,0x11,0x10,0x11,0x10,0x1f, +0xf0,0x01,0x00,0x3f,0xf8,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x08, +0x48,0x08,0x48,0x7f,0x50,0x26,0xfc,0x3a,0xd0,0x37,0x50,0x3e,0x78,0x08,0x50,0x7f, +0x50,0x4d,0x78,0x53,0x50,0x7f,0x50,0x41,0x7c,0x43,0x40,0x00,0x00,0x00,0x40,0x3c, +0x40,0x27,0xf8,0x28,0x40,0x2b,0xfc,0x30,0xa0,0x29,0x24,0x26,0x5c,0x24,0x40,0x27, +0xf8,0x38,0x40,0x20,0x40,0x27,0xfc,0x20,0x00,0x00,0x00,0x10,0x40,0x10,0x40,0x23, +0xf8,0x48,0x48,0x0f,0xfc,0x10,0x48,0x13,0xf8,0x30,0x40,0x53,0xf8,0x10,0x40,0x17, +0xfc,0x10,0x40,0x10,0x40,0x10,0x40,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x21, +0x08,0x16,0x50,0x02,0x80,0x19,0xb0,0x62,0x4c,0x0f,0xa0,0x01,0x00,0x7f,0xfc,0x01, +0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x00, +0x20,0x08,0x20,0x04,0x20,0x04,0x20,0x02,0x20,0x02,0x40,0x02,0x40,0x00,0x80,0x7f, +0xfc,0x00,0x00,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04,0xc0,0x13,0xf0,0x10,0x90,0x2f, +0xfc,0x48,0x90,0x13,0xf0,0x30,0x80,0x57,0xf8,0x10,0x80,0x1f,0xfc,0x10,0x80,0x10, +0x80,0x00,0x00,0x10,0x40,0x10,0x40,0x17,0xfc,0x7c,0x00,0x13,0xf8,0x12,0x08,0x12, +0x08,0x1f,0xf8,0x70,0x40,0x11,0x50,0x11,0x48,0x12,0x44,0x14,0x44,0x30,0xc0,0x00, +0x00,0x00,0x40,0x00,0x40,0x7c,0x78,0x54,0x88,0x55,0x50,0x56,0x20,0x7c,0x50,0x55, +0x88,0x56,0xfc,0x54,0x88,0x54,0x88,0x7c,0x88,0x00,0xf8,0x00,0x00,0x00,0x00,0x08, +0x04,0x37,0xa4,0x32,0xa4,0x2a,0xa4,0x3c,0xa4,0x65,0xa4,0x0a,0x24,0x1f,0x24,0x64, +0xa4,0x3f,0xa4,0x15,0x24,0x0e,0x04,0x07,0x84,0x78,0x0c,0x00,0x00,0x10,0x40,0x08, +0x40,0x0f,0xfc,0x40,0xa0,0x21,0x10,0x27,0xe8,0x00,0x08,0x12,0xa0,0x12,0xa0,0x22, +0xa0,0x22,0xa0,0x42,0xa4,0x44,0xa4,0x48,0x1c,0x00,0x00,0x21,0x00,0x16,0xf8,0x14, +0x28,0x45,0x28,0x24,0xa8,0x25,0xc8,0x0e,0x58,0x10,0x80,0x17,0xf0,0x24,0x90,0x27, +0xf0,0x44,0x90,0x47,0xf0,0x40,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x7f,0xfc,0x10, +0x60,0x10,0x90,0x13,0xf8,0x7c,0x08,0x11,0x50,0x11,0x50,0x11,0x50,0x1e,0x50,0x62, +0x54,0x04,0x54,0x08,0x0c,0x00,0x00,0x06,0x00,0x39,0xf8,0x20,0x48,0x24,0x48,0x26, +0x88,0x39,0x08,0x62,0x30,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x11,0x10,0x1f, +0xf0,0x00,0x00,0x00,0x00,0x00,0x40,0x7c,0x40,0x13,0xfc,0x10,0x60,0x10,0x90,0x3f, +0xe8,0x24,0x08,0x65,0x50,0x25,0x50,0x25,0x50,0x25,0x50,0x3d,0x54,0x02,0x54,0x04, +0x0c,0x00,0x00,0x08,0x20,0x4a,0x20,0x2a,0x20,0x2c,0x20,0x09,0xfc,0x7e,0x08,0x08, +0x88,0x1c,0x48,0x1a,0x48,0x2a,0x50,0x48,0x50,0x08,0x20,0x0b,0xfc,0x08,0x00,0x00, +0x00,0x00,0x40,0x3c,0x40,0x24,0xf8,0x29,0x90,0x2a,0x60,0x30,0xf0,0x2b,0x4c,0x25, +0x40,0x25,0xf8,0x26,0x40,0x39,0xf8,0x20,0x40,0x27,0xfc,0x20,0x00,0x00,0x00,0x01, +0x00,0x01,0x00,0x3f,0xf8,0x04,0x40,0x7f,0xfc,0x00,0x00,0x1f,0xf0,0x11,0x10,0x1f, +0xf0,0x11,0x10,0x1f,0xf0,0x01,0x04,0x01,0x04,0x00,0xfc,0x00,0x00,0x08,0x80,0x08, +0xf8,0x7f,0x80,0x22,0xf8,0x14,0x08,0x7f,0xf8,0x00,0x80,0x3e,0xf8,0x22,0x80,0x3e, +0xf8,0x22,0x80,0x3e,0xf8,0x22,0x84,0x26,0x7c,0x00,0x00,0x08,0x00,0x0b,0xf0,0x0a, +0x10,0x12,0x10,0x12,0x10,0x33,0xf0,0x50,0x80,0x11,0x00,0x17,0xf8,0x14,0x08,0x14, +0x08,0x14,0x08,0x17,0xf8,0x10,0x00,0x00,0x00,0x01,0x00,0x01,0xf0,0x1f,0xfc,0x11, +0xe8,0x1f,0x10,0x10,0xf0,0x17,0xf0,0x14,0x90,0x17,0xf0,0x14,0x90,0x27,0xf8,0x2a, +0x44,0x4a,0x34,0x11,0xf0,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x7f,0xfc,0x08, +0xa0,0x09,0x28,0x0e,0x48,0x0a,0x70,0x0a,0xe0,0x13,0x50,0x12,0x50,0x22,0x48,0x42, +0x44,0x0c,0x40,0x00,0x00,0x01,0x00,0x01,0xf0,0x1f,0xfc,0x11,0x28,0x1f,0xf0,0x14, +0x90,0x17,0xf0,0x14,0x90,0x17,0xf0,0x10,0x80,0x2f,0xf8,0x20,0x88,0x43,0x08,0x0c, +0x30,0x00,0x00,0x00,0x00,0x3f,0xf0,0x00,0x20,0x00,0x40,0x01,0x80,0x01,0x00,0x01, +0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x03,0x00,0x00, +0x00,0x01,0x00,0x7f,0xfc,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x00,0x00,0x7f, +0xfc,0x40,0x04,0x44,0x84,0x04,0x80,0x04,0x84,0x18,0x84,0x60,0x7c,0x00,0x00,0x08, +0x40,0x08,0x40,0x0f,0xfc,0x14,0xa4,0x13,0x18,0x33,0xf8,0x55,0x14,0x11,0xf0,0x11, +0x10,0x11,0xf0,0x12,0x48,0x12,0x44,0x14,0x44,0x10,0xc0,0x00,0x00,0x00,0x00,0x7f, +0xfc,0x01,0x00,0x01,0x00,0x3f,0xf8,0x21,0x08,0x29,0x28,0x29,0x28,0x29,0x28,0x29, +0x28,0x2f,0xe8,0x20,0x08,0x20,0x08,0x20,0x18,0x00,0x00,0x00,0x40,0x00,0x40,0x23, +0xf8,0x10,0x40,0x17,0xfc,0x00,0xa0,0x11,0x24,0x16,0x9c,0x20,0xf0,0x21,0x10,0x46, +0xa0,0x40,0x40,0x01,0xb0,0x0e,0x0c,0x00,0x00,0x01,0x00,0x7f,0xfc,0x41,0x04,0x7f, +0xfc,0x24,0x48,0x1f,0xf0,0x68,0x2c,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x05,0x60,0x09, +0x10,0x31,0x08,0x03,0x00,0x00,0x00,0x08,0x10,0x4a,0x90,0x2a,0x50,0x2c,0x50,0x09, +0x10,0x7e,0x90,0x08,0x90,0x1c,0x1c,0x1a,0x70,0x2b,0x90,0x48,0x10,0x08,0x10,0x08, +0x10,0x08,0x10,0x00,0x00,0x10,0x00,0x0b,0xf0,0x40,0x90,0x22,0x90,0x0a,0x98,0x0d, +0x14,0x12,0x64,0x21,0x00,0x7f,0xfc,0x03,0x80,0x05,0x40,0x19,0x30,0x61,0x0c,0x01, +0x00,0x00,0x00,0x10,0x40,0x08,0x40,0x0f,0xfc,0x40,0x00,0x23,0xf8,0x22,0x08,0x02, +0x08,0x13,0xf8,0x10,0x40,0x12,0x50,0x22,0x48,0x24,0x44,0x48,0x44,0x40,0xc0,0x00, +0x00,0x0c,0x88,0x4a,0x48,0x32,0x50,0x11,0xf0,0x31,0x50,0x49,0x50,0x09,0xf0,0x19, +0x50,0x29,0x50,0x49,0xf0,0x0a,0x54,0x0a,0x4c,0x0c,0x4c,0x38,0x44,0x00,0x00,0x00, +0x80,0x0f,0xfc,0x08,0x40,0x4f,0xfc,0x2a,0xa8,0x29,0x10,0x0b,0xf8,0x1d,0x14,0x29, +0xf0,0x49,0x10,0x11,0xf0,0x12,0x48,0x24,0x44,0x40,0xc0,0x00,0x00,0x00,0x40,0x78, +0x40,0x4f,0xfc,0x4a,0xa8,0x79,0x10,0x4b,0xf8,0x4d,0x14,0x79,0xf0,0x49,0x10,0x49, +0xf0,0x7a,0x48,0x02,0x44,0x04,0x44,0x00,0xc0,0x00,0x00,0x04,0x40,0x18,0x40,0x73, +0xf8,0x10,0x40,0x17,0xfc,0x7c,0xa0,0x11,0x24,0x1a,0x9c,0x34,0xf0,0x35,0x90,0x52, +0x60,0x10,0x60,0x11,0x90,0x1e,0x0c,0x00,0x00,0x10,0x00,0x55,0xf0,0x35,0x10,0x39, +0xf0,0x11,0x10,0x7f,0xfc,0x11,0x50,0x19,0xf0,0x35,0x50,0x35,0xf0,0x53,0xf8,0x10, +0x40,0x17,0xfc,0x10,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x0f,0xe0,0x08,0x20,0x08, +0x20,0x0f,0xe0,0x08,0x20,0x0f,0xf0,0x0a,0x10,0x09,0x20,0x08,0xc0,0x08,0x40,0x0e, +0x30,0x70,0x0c,0x00,0x00,0x00,0x20,0x3c,0x20,0x01,0xfc,0x7e,0x00,0x00,0xf8,0x3c, +0x88,0x00,0x88,0x3c,0xf8,0x00,0x20,0x3c,0xb0,0x24,0xa8,0x25,0x24,0x3e,0x24,0x00, +0x60,0x00,0x00,0x00,0x40,0x20,0x40,0x17,0xfc,0x12,0xa8,0x01,0x10,0x03,0xf8,0x75, +0x14,0x11,0xf0,0x11,0x10,0x11,0xf0,0x12,0x48,0x14,0x44,0x2c,0xc0,0x43,0xfc,0x00, +0x00,0x00,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x08,0x20,0x7f,0xfc,0x00,0x00,0x0f, +0xe0,0x09,0x20,0x0f,0xe0,0x09,0x20,0x1f,0xf0,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00, +0x40,0x3c,0x40,0x25,0xf8,0x28,0x40,0x33,0xfc,0x28,0xa0,0x25,0x24,0x26,0x9c,0x24, +0xf0,0x25,0x10,0x3a,0xa0,0x20,0x40,0x21,0xb0,0x2e,0x0c,0x00,0x00,0x08,0x00,0x09, +0xfc,0x14,0x20,0x12,0x40,0x22,0xf8,0x5c,0x88,0x00,0xf8,0x7e,0x88,0x12,0xf8,0x12, +0x88,0x12,0xf8,0x1c,0x50,0x10,0x88,0x13,0x04,0x00,0x00,0x02,0x00,0x02,0x00,0x02, +0x00,0x02,0x00,0x7f,0xf8,0x02,0x08,0x02,0x08,0x02,0x08,0x04,0x08,0x04,0x08,0x08, +0x08,0x10,0x08,0x20,0x08,0x40,0x30,0x00,0x00,0x10,0x00,0x11,0xf0,0x14,0x10,0x65, +0xf0,0x18,0x10,0x1b,0xfc,0x26,0x40,0x7d,0x64,0x19,0x68,0x34,0xd0,0x35,0x50,0x36, +0x48,0x50,0x44,0x10,0xc0,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0xa0,0x11,0x10,0x13, +0xf8,0x34,0x04,0x5b,0xf8,0x12,0xa8,0x12,0xa8,0x13,0xf8,0x12,0xa8,0x12,0xa8,0x12, +0xa8,0x12,0x18,0x00,0x00,0x00,0x00,0x1f,0xfc,0x10,0x00,0x17,0xf0,0x14,0x90,0x17, +0xf0,0x14,0x90,0x17,0xf0,0x10,0x80,0x17,0xf0,0x10,0x80,0x20,0x80,0x3f,0xfc,0x40, +0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x7f,0xfc,0x08,0x40,0x0c,0x60,0x1a, +0xe0,0x1a,0xd0,0x29,0x50,0x4a,0x48,0x08,0x44,0x08,0x40,0x08,0x40,0x08,0x40,0x00, +0x00,0x22,0x20,0x12,0x20,0x12,0x20,0x4f,0xfc,0x22,0x20,0x23,0x30,0x06,0xf0,0x16, +0xe8,0x1a,0xa8,0x1b,0x24,0x22,0x20,0x22,0x20,0x42,0x20,0x42,0x20,0x00,0x00,0x10, +0x40,0x12,0x48,0x11,0x50,0x17,0xfc,0x34,0xe0,0x39,0x50,0x56,0x4c,0x11,0x48,0x11, +0xfc,0x1a,0xa8,0x16,0xa8,0x21,0x7c,0x22,0x08,0x44,0x08,0x00,0x00,0x01,0x10,0x01, +0x10,0x7d,0x10,0x17,0xfc,0x11,0x10,0x11,0x90,0x7f,0x78,0x13,0x78,0x13,0x54,0x15, +0x94,0x1d,0x10,0x61,0x10,0x01,0x10,0x01,0x10,0x00,0x00,0x01,0x00,0x7d,0x00,0x51, +0xf8,0x52,0x00,0x7b,0xf0,0x4d,0x10,0x49,0x10,0x49,0xf0,0x78,0x00,0x53,0xb8,0x52, +0xa8,0x7e,0xa8,0x03,0xb8,0x00,0x00,0x00,0x00,0x10,0x40,0x10,0x40,0x7e,0xa0,0x10, +0xa0,0x7d,0x10,0x57,0xf8,0x7c,0x04,0x57,0xf8,0x7e,0xa8,0x12,0xa8,0x7f,0xf8,0x12, +0xa8,0x12,0xa8,0x12,0x18,0x00,0x00,0x00,0x40,0x3e,0x48,0x25,0x50,0x2b,0xfc,0x30, +0xe0,0x29,0x50,0x26,0x4c,0x25,0x48,0x25,0xfc,0x26,0x68,0x3b,0xa8,0x24,0xfc,0x21, +0x08,0x26,0x08,0x00,0x00,0x08,0x20,0x08,0xa8,0x1e,0x70,0x25,0xfc,0x7e,0x70,0x2a, +0xa8,0x3f,0x24,0x2a,0xa8,0x3e,0xfc,0x05,0x68,0x33,0xe8,0x2a,0x7c,0x28,0x88,0x41, +0x08,0x00,0x00,0x04,0x20,0x04,0xa8,0x3f,0x70,0x2a,0xfc,0x3f,0x70,0x2b,0xa8,0x2b, +0x64,0x3f,0x48,0x2a,0xfc,0x2f,0xa8,0x2a,0xa8,0x2a,0x7c,0x2f,0x88,0x59,0x08,0x00, +0x00,0x00,0x80,0x03,0x7c,0x7e,0x14,0x12,0x94,0x12,0xd4,0x13,0x24,0x7c,0x4c,0x13, +0xf8,0x12,0x48,0x13,0xf8,0x1e,0x48,0x62,0x48,0x03,0xf8,0x00,0x00,0x00,0x00,0x00, +0x00,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x30,0x08,0x09,0x30,0x0d, +0x60,0x71,0x18,0x1f,0xf4,0x01,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x10,0x00,0x0f, +0xfc,0x08,0x00,0x43,0xf8,0x22,0x08,0x23,0xf8,0x02,0x48,0x12,0x40,0x13,0xfc,0x24, +0x40,0x24,0x60,0x48,0x90,0x53,0x08,0x4c,0x04,0x00,0x00,0x00,0x00,0x1f,0xf0,0x11, +0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf0,0x02,0x40,0x1c,0xc0,0x03,0x30,0x7f,0xc8,0x05, +0x40,0x19,0x30,0x61,0x08,0x01,0x00,0x00,0x00,0x08,0x00,0x4a,0xfc,0x2a,0x20,0x2c, +0x40,0x7f,0xf8,0x1c,0x88,0x1a,0xf8,0x2a,0x88,0x48,0xf8,0x7f,0x88,0x08,0xf8,0x14, +0x50,0x22,0x88,0x43,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x18, +0x30,0x6f,0xec,0x00,0x00,0x1f,0xf0,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x01, +0x00,0x01,0x00,0x00,0x00,0x04,0x40,0x04,0x40,0x04,0xa0,0x08,0xa0,0x09,0x10,0x1b, +0xf8,0x2c,0x04,0x4b,0xf8,0x08,0x48,0x08,0x48,0x08,0x48,0x08,0x70,0x08,0x40,0x08, +0x40,0x00,0x00,0x08,0x08,0x0f,0xe8,0x0a,0x28,0x12,0x28,0x13,0xa8,0x34,0xa8,0x54, +0xa8,0x1a,0xa8,0x11,0xa8,0x11,0x28,0x11,0x28,0x12,0x08,0x14,0x08,0x18,0x18,0x00, +0x00,0x00,0x80,0x00,0x80,0x21,0x40,0x11,0x20,0x12,0x10,0x05,0xe8,0x08,0x04,0x17, +0xf8,0x10,0x88,0x20,0x88,0x20,0x88,0x40,0xf0,0x40,0x80,0x00,0x80,0x00,0x00,0x01, +0xa0,0x1e,0x20,0x10,0x20,0x10,0x20,0x1f,0xfc,0x14,0x24,0x14,0x24,0x17,0x24,0x15, +0x24,0x15,0x24,0x15,0x44,0x29,0x44,0x29,0x84,0x57,0x18,0x00,0x00,0x11,0x10,0x11, +0x10,0x1f,0xf0,0x18,0x10,0x0d,0xfc,0x12,0x20,0x1e,0xf8,0x20,0x88,0x7e,0xf8,0x0a, +0xf8,0x0a,0x88,0x0c,0xf8,0x08,0xc8,0x0b,0x04,0x00,0x00,0x10,0x40,0x10,0x40,0x10, +0xa0,0x18,0xa0,0x35,0x10,0x37,0xf8,0x34,0x04,0x53,0xf8,0x10,0x48,0x10,0x48,0x10, +0x48,0x10,0x70,0x10,0x40,0x10,0x40,0x00,0x00,0x00,0x40,0x00,0x40,0x7c,0xa0,0x10, +0xa0,0x11,0x10,0x12,0xe8,0x7c,0x04,0x13,0xf8,0x10,0x48,0x14,0x48,0x18,0x48,0x60, +0x70,0x00,0x40,0x00,0x40,0x00,0x00,0x08,0x40,0x08,0x40,0x08,0x40,0x7e,0x40,0x04, +0x40,0x08,0x40,0x08,0x40,0x1c,0x40,0x2a,0x40,0x4a,0x40,0x08,0x40,0x08,0x44,0x08, +0x44,0x08,0x3c,0x00,0x00,0x04,0x40,0x04,0x40,0x7f,0xfc,0x05,0x40,0x02,0x80,0x04, +0x40,0x1f,0xf0,0x60,0x0c,0x1f,0xf0,0x01,0x10,0x01,0x10,0x01,0x60,0x01,0x00,0x01, +0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x14,0xa0,0x12,0xa0,0x23,0x10,0x5d,0xe8,0x08, +0x04,0x7f,0xf8,0x08,0x48,0x2a,0x48,0x1c,0x48,0x18,0x70,0x0e,0x40,0x70,0x40,0x00, +0x00,0x08,0x20,0x08,0x20,0x7e,0xf8,0x08,0x28,0x3f,0xfc,0x00,0x28,0x3e,0xf8,0x01, +0x20,0x7e,0xa4,0x08,0xb8,0x2c,0x70,0x2b,0xa8,0x4a,0x24,0x18,0x60,0x00,0x00,0x00, +0x00,0x3f,0xf8,0x01,0x00,0x7f,0xfc,0x41,0x04,0x79,0x74,0x1d,0x38,0x02,0x80,0x0f, +0xe0,0x70,0x1c,0x1f,0xf0,0x01,0x10,0x01,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x3f, +0xf8,0x01,0x00,0x7f,0xfc,0x41,0x04,0x5d,0x74,0x01,0x00,0x0f,0xe0,0x00,0x00,0x3f, +0xf8,0x12,0x90,0x0a,0xa0,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xfc,0x3e, +0xf8,0x22,0x88,0x2b,0xa8,0x1f,0xfc,0x12,0x40,0x1f,0xf8,0x12,0x48,0x1f,0xf8,0x17, +0x58,0x24,0x60,0x47,0x44,0x18,0x3c,0x00,0x00,0x04,0x10,0x14,0x10,0x17,0xa8,0x14, +0x28,0x7f,0xc4,0x24,0xfc,0x35,0x80,0x2e,0xfc,0x3f,0x94,0x2e,0x94,0x35,0x98,0x24, +0x90,0x3f,0x90,0x00,0x10,0x00,0x00,0x00,0x00,0x3f,0xfc,0x22,0x20,0x3f,0xfc,0x27, +0x30,0x2a,0xe8,0x32,0xa4,0x22,0x20,0x27,0xf0,0x24,0x10,0x27,0xf0,0x44,0x10,0x47, +0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xfc,0x22,0x20,0x22,0x20,0x3f,0xfc,0x27, +0x70,0x2a,0xa8,0x32,0xa4,0x20,0x80,0x24,0xf0,0x24,0x80,0x44,0x80,0x5f,0xfc,0x00, +0x00,0x00,0x00,0x00,0x08,0x7f,0x48,0x08,0x48,0x08,0x48,0x0e,0x48,0x12,0x48,0x12, +0x48,0x2a,0x48,0x46,0x48,0x04,0x48,0x04,0x48,0x08,0x08,0x10,0x08,0x20,0x18,0x00, +0x00,0x01,0x00,0x09,0x20,0x09,0x10,0x11,0x28,0x23,0x44,0x01,0x84,0x06,0x80,0x78, +0x80,0x0f,0xf8,0x01,0x08,0x02,0x08,0x04,0x08,0x18,0x08,0x60,0x30,0x00,0x00,0x00, +0x08,0x7f,0x88,0x08,0x48,0x0f,0x48,0x11,0x48,0x29,0x48,0x06,0x48,0x04,0x48,0x18, +0x08,0x60,0x18,0x14,0x90,0x12,0x48,0x22,0x44,0x40,0x04,0x00,0x00,0x00,0x08,0x3f, +0xc8,0x08,0x48,0x0f,0x48,0x19,0x48,0x26,0x48,0x0d,0x48,0x31,0x18,0x7f,0xfc,0x03, +0x10,0x0c,0xa0,0x74,0xc0,0x07,0x30,0x38,0x0c,0x00,0x00,0x00,0x80,0x1f,0xfc,0x12, +0x20,0x1f,0xfc,0x11,0x40,0x17,0xf0,0x11,0x50,0x1f,0xfc,0x11,0x50,0x17,0xf0,0x23, +0x60,0x2d,0x50,0x71,0x4c,0x01,0x40,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x02, +0x40,0x12,0x50,0x12,0x48,0x22,0x44,0x44,0xc4,0x01,0x00,0x14,0x90,0x14,0x88,0x24, +0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x10,0x40,0x12,0x48,0x11,0x50,0x1b,0xfc,0x34, +0xe0,0x35,0x50,0x36,0x4c,0x52,0x48,0x13,0xfc,0x12,0xa8,0x15,0xa8,0x11,0x7c,0x12, +0x08,0x1c,0x08,0x00,0x00,0x20,0x20,0x15,0xfc,0x12,0x20,0x42,0xf8,0x20,0xa8,0x20, +0xf8,0x0e,0xa8,0x12,0xf8,0x12,0x20,0x23,0xfc,0x22,0x20,0x42,0x20,0x45,0xa0,0x48, +0x7c,0x00,0x00,0x10,0x40,0x10,0x40,0x17,0xfc,0x10,0x40,0x17,0xf8,0x36,0x48,0x3b, +0xf8,0x52,0x48,0x13,0xf8,0x10,0xe0,0x19,0x50,0x26,0x48,0x24,0x44,0x40,0x40,0x00, +0x00,0x10,0x40,0x1f,0x7c,0x24,0x90,0x5f,0xfc,0x12,0x20,0x1f,0xfc,0x17,0xf0,0x11, +0x50,0x1f,0xfc,0x11,0x50,0x2f,0xf0,0x27,0x70,0x59,0x4c,0x01,0x40,0x00,0x00,0x10, +0x40,0x10,0x40,0x17,0xfc,0x64,0x40,0x1b,0xf8,0x1a,0x48,0x27,0xf8,0x7e,0x48,0x1b, +0xf8,0x34,0xe0,0x35,0x50,0x32,0x48,0x54,0x44,0x10,0x40,0x00,0x00,0x01,0x10,0x7d, +0x10,0x2e,0xe8,0x2a,0xa8,0x39,0x10,0x2a,0xa8,0x2f,0xfc,0x38,0xa4,0x2a,0xa8,0x2e, +0xa8,0x3b,0xb8,0x6a,0xa8,0x09,0x20,0x0a,0x20,0x00,0x00,0x04,0x40,0x7f,0xfc,0x04, +0x40,0x20,0x40,0x17,0xfc,0x12,0x48,0x03,0xf8,0x72,0x48,0x13,0xf8,0x10,0x40,0x17, +0xfc,0x18,0x40,0x26,0x40,0x41,0xfc,0x00,0x00,0x00,0x40,0x20,0x40,0x17,0xfc,0x10, +0x40,0x03,0xf8,0x02,0x48,0x73,0xf8,0x12,0x48,0x13,0xf8,0x10,0x40,0x17,0xfc,0x18, +0x40,0x26,0x40,0x41,0xfc,0x00,0x00,0x08,0x20,0x08,0x20,0x15,0xfc,0x12,0x20,0x22, +0xf8,0x5c,0xa8,0x08,0xf8,0x7e,0xa8,0x08,0xf8,0x2a,0x70,0x1c,0xa8,0x19,0x24,0x0e, +0x20,0x70,0x20,0x00,0x00,0x00,0x00,0x0f,0xe0,0x08,0x20,0x08,0x20,0x08,0x20,0x0f, +0xe0,0x01,0x00,0x02,0x00,0x1f,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0xf0,0x00, +0x00,0x00,0x00,0x02,0x00,0x07,0xc0,0x19,0x00,0x7f,0xf0,0x11,0x10,0x1f,0xf0,0x11, +0x10,0x1f,0xf0,0x12,0x48,0x6f,0xe4,0x08,0x20,0x0f,0xe0,0x08,0x20,0x0f,0xe0,0x00, +0x00,0x10,0x80,0x11,0xf0,0x16,0x40,0x7f,0xf8,0x12,0x48,0x1b,0xf8,0x36,0x48,0x37, +0xf8,0x32,0xa8,0x53,0xf4,0x55,0x14,0x11,0xf0,0x11,0x10,0x11,0xf0,0x00,0x00,0x08, +0x00,0x09,0xfc,0x08,0x00,0x0a,0xf8,0x2a,0x88,0x2c,0x88,0x28,0x88,0x48,0xf8,0x08, +0x80,0x08,0x80,0x15,0x00,0x13,0x00,0x22,0x00,0x44,0x00,0x00,0x00,0x00,0x40,0x3e, +0x40,0x22,0x78,0x22,0x88,0x3e,0xd0,0x23,0x50,0x3e,0x20,0x22,0x50,0x23,0xfc,0x3e, +0x88,0x14,0x88,0x12,0x88,0x22,0xf8,0x40,0x00,0x00,0x00,0x00,0x40,0x3e,0x40,0x22, +0x78,0x22,0x88,0x3e,0xd0,0x09,0x20,0x08,0x50,0x2e,0x88,0x29,0xfc,0x28,0x88,0x28, +0x88,0x2e,0x88,0x38,0xf8,0x60,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x01,0x00,0x7f, +0xfc,0x41,0x04,0x5d,0x74,0x01,0x00,0x3e,0x78,0x23,0xd0,0x3e,0x70,0x0f,0xfc,0x28, +0x88,0x2e,0xf8,0x70,0x88,0x00,0x00,0x12,0x10,0x09,0x10,0x09,0x20,0x7f,0xfc,0x40, +0x04,0x41,0x04,0x01,0x00,0x3f,0xf0,0x01,0x10,0x02,0x10,0x02,0x10,0x04,0x10,0x18, +0x10,0x60,0x60,0x00,0x00,0x01,0x00,0x0f,0xe0,0x09,0x20,0x7f,0xfc,0x09,0x20,0x0f, +0xe0,0x01,0x00,0x0f,0xe0,0x09,0x20,0x7f,0xfc,0x04,0x40,0x0f,0x40,0x01,0xc0,0x3e, +0x30,0x00,0x00,0x00,0x80,0x00,0x80,0x1f,0xfc,0x12,0x00,0x12,0x38,0x17,0xa8,0x14, +0xa8,0x17,0xb0,0x14,0xa8,0x17,0xa4,0x25,0x24,0x25,0xb8,0x46,0xa0,0x18,0x20,0x00, +0x00,0x00,0x00,0x1f,0xf0,0x01,0x00,0x0f,0xe0,0x01,0x00,0x01,0x00,0x3f,0xf8,0x04, +0x40,0x04,0x40,0x7f,0xfc,0x04,0x40,0x04,0x40,0x08,0x40,0x10,0x40,0x00,0x00,0x08, +0x00,0x08,0xf8,0x3e,0x88,0x22,0x88,0x22,0x88,0x3e,0xf8,0x22,0x88,0x3e,0x88,0x28, +0xf8,0x24,0x88,0x27,0x08,0x39,0x08,0x62,0x08,0x04,0x18,0x00,0x00,0x08,0x40,0x0a, +0x48,0x09,0x50,0x7f,0xfc,0x08,0xe0,0x0d,0x50,0x1a,0x48,0x1a,0x40,0x2b,0xfc,0x48, +0x90,0x09,0xd0,0x08,0x20,0x08,0xd0,0x0f,0x08,0x00,0x00,0x11,0x00,0x11,0x3c,0x17, +0xa4,0x7c,0xa8,0x14,0xa8,0x17,0xb0,0x3c,0xa8,0x3f,0xa4,0x36,0x24,0x55,0x24,0x54, +0xa4,0x15,0x78,0x16,0x60,0x18,0x20,0x00,0x00,0x10,0x80,0x08,0x80,0x0b,0xf0,0x42, +0x10,0x22,0x10,0x23,0xf0,0x02,0x10,0x13,0xf0,0x12,0x88,0x22,0x48,0x22,0x50,0x42, +0x20,0x43,0x90,0x4c,0x0c,0x00,0x00,0x20,0x00,0x17,0xf8,0x14,0x08,0x47,0xf8,0x24, +0x00,0x27,0xfc,0x04,0x40,0x17,0xf8,0x17,0x68,0x16,0xd8,0x2a,0x48,0x2b,0x68,0x52, +0xd8,0x42,0x58,0x00,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x40,0x04,0x49,0x04,0x09, +0x00,0x0f,0xf0,0x11,0x00,0x21,0x00,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01, +0x00,0x00,0x00,0x04,0x40,0x44,0x40,0x29,0xf0,0x11,0x10,0x31,0x10,0x49,0xf0,0x09, +0x10,0x19,0xf0,0x29,0x48,0x49,0x28,0x09,0x30,0x09,0x50,0x09,0x88,0x36,0x04,0x00, +0x00,0x10,0x40,0x1f,0x7c,0x29,0xa0,0x45,0x10,0x3f,0xf8,0x08,0x20,0x04,0x40,0x7f, +0xfc,0x11,0x10,0x1f,0xf0,0x11,0x10,0x1f,0xf4,0x01,0x04,0x00,0xfc,0x00,0x00,0x01, +0x00,0x01,0x10,0x1f,0xf0,0x01,0x20,0x01,0x40,0x7f,0xfc,0x03,0x00,0x02,0x00,0x06, +0x30,0x1b,0xc0,0x62,0x00,0x02,0x08,0x02,0x08,0x01,0xf8,0x00,0x00,0x04,0x80,0x3f, +0xf8,0x0a,0xf0,0x7f,0x10,0x1e,0xf0,0x12,0x80,0x1e,0xf0,0x12,0x84,0x16,0x7c,0x7f, +0xfc,0x07,0xc0,0x04,0x78,0x7f,0xc0,0x00,0x40,0x00,0x00,0x10,0x88,0x12,0x48,0x11, +0x50,0x7d,0xf0,0x55,0x50,0x55,0x50,0x55,0xf0,0x7d,0x50,0x51,0x50,0x19,0xf0,0x15, +0x54,0x1d,0x4c,0x62,0x4c,0x04,0x44,0x00,0x00,0x08,0x00,0x08,0x78,0x3e,0x48,0x22, +0x50,0x22,0x50,0x3e,0x60,0x22,0x50,0x3e,0x48,0x24,0x44,0x22,0x44,0x27,0x64,0x39, +0x58,0x60,0x40,0x00,0x40,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x7f,0xfc,0x00, +0x00,0x00,0x00,0x04,0x40,0x04,0x20,0x08,0x10,0x08,0x10,0x10,0x08,0x20,0x08,0x40, +0x08,0x00,0x00,0x00,0x00,0x04,0x20,0x7f,0xfc,0x0e,0x70,0x15,0xa8,0x25,0x24,0x5f, +0xfc,0x12,0x40,0x1f,0xf8,0x12,0x48,0x1f,0xf8,0x17,0x58,0x24,0x60,0x47,0x44,0x18, +0x3c,0x00,0x00,0x10,0x00,0x11,0xf0,0x10,0x10,0x7d,0xf0,0x08,0x10,0x0b,0xfc,0x18, +0x40,0x16,0x64,0x35,0x68,0x50,0xd0,0x11,0x50,0x16,0x48,0x10,0x44,0x10,0xc0,0x00, +0x00,0x00,0x40,0x3c,0x40,0x24,0x40,0x24,0x40,0x27,0xf8,0x3c,0x48,0x24,0x48,0x24, +0x48,0x3c,0x48,0x24,0x48,0x24,0x88,0x24,0x88,0x25,0x08,0x4e,0x30,0x00,0x00,0x08, +0x00,0x08,0xf8,0x14,0x08,0x12,0xf8,0x22,0x08,0x5d,0xfc,0x08,0x20,0x7f,0x24,0x08, +0xb8,0x2a,0x70,0x1c,0x68,0x19,0xa4,0x0e,0x20,0x70,0x60,0x00,0x00,0x00,0x40,0x38, +0x40,0x00,0xa0,0x7c,0xa0,0x01,0x10,0x3b,0xf8,0x04,0x04,0x3b,0xf8,0x02,0xa8,0x3a, +0xa8,0x2b,0xf8,0x2a,0xa8,0x3a,0xa8,0x02,0x18,0x00,0x00,0x08,0x18,0x0b,0xe0,0x08, +0x40,0x17,0xfc,0x10,0xe0,0x31,0x50,0x52,0x48,0x10,0x40,0x17,0xfc,0x10,0x90,0x11, +0xd0,0x10,0x20,0x10,0xd0,0x17,0x08,0x00,0x00,0x02,0x00,0x04,0x00,0x38,0xf8,0x08, +0x88,0x08,0x88,0x7f,0x88,0x08,0x88,0x1c,0x88,0x1a,0x88,0x2a,0x88,0x48,0x88,0x08, +0xf8,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x08,0x3c,0x30,0x01,0xc0,0x7e,0x40,0x00, +0x40,0x3f,0xfc,0x00,0x40,0x3c,0x40,0x01,0xf8,0x3d,0x08,0x25,0x08,0x25,0x08,0x3d, +0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xfc,0x01,0x00,0x03,0xc0,0x0d,0x30,0x71, +0x08,0x01,0x00,0x3f,0xf8,0x01,0x00,0x09,0xf0,0x09,0x00,0x09,0x00,0x7f,0xfc,0x00, +0x00,0x00,0x00,0x00,0x40,0x3c,0x40,0x27,0xfc,0x24,0x40,0x3c,0x40,0x24,0xf8,0x3c, +0x88,0x25,0xf8,0x26,0x88,0x3c,0xf8,0x18,0x88,0x14,0x88,0x24,0x88,0x40,0x98,0x00, +0x00,0x00,0x40,0x3c,0x40,0x25,0xf8,0x24,0x48,0x3c,0x48,0x24,0x88,0x25,0x30,0x3d, +0x10,0x27,0xfc,0x25,0x54,0x25,0x54,0x25,0x54,0x26,0x64,0x4c,0xcc,0x00,0x00,0x00, +0x90,0x00,0x88,0x7f,0xfc,0x00,0x90,0x1e,0x90,0x12,0x60,0x1e,0x64,0x07,0x9c,0x79, +0x04,0x04,0x90,0x24,0x88,0x24,0x24,0x44,0x24,0x03,0xe0,0x00,0x00,0x08,0x40,0x08, +0x40,0x09,0xf0,0x7e,0x50,0x08,0x50,0x0c,0x94,0x1b,0x54,0x1a,0x4c,0x28,0x40,0x4b, +0xfc,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x00,0x00,0x08,0x30,0x7f,0x28,0x25, +0xfc,0x3c,0x60,0x08,0xa4,0x2d,0x1c,0x5a,0x00,0x0f,0xe0,0x08,0x20,0x0f,0xf8,0x08, +0x00,0x0f,0xfc,0x29,0x24,0x44,0x98,0x00,0x00,0x00,0x00,0x3f,0xf8,0x02,0x00,0x02, +0x00,0x07,0xe0,0x05,0x20,0x04,0xa0,0x04,0xa0,0x0a,0x20,0x09,0x40,0x09,0x40,0x00, +0x40,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x00,0x00,0x00,0x00,0x0f, +0xe0,0x08,0x20,0x08,0x20,0x0f,0xe0,0x08,0x20,0x08,0x20,0x0f,0xe0,0x00,0x00,0x00, +0x00,0x7f,0xfc,0x00,0x00,0x08,0x00,0x09,0xdc,0x1f,0x54,0x25,0xdc,0x7e,0x00,0x2a, +0xf8,0x3e,0x00,0x2b,0xfc,0x3e,0x40,0x04,0x78,0x32,0x88,0x2a,0x08,0x28,0x08,0x40, +0x30,0x00,0x00,0x00,0x20,0x3c,0x20,0x03,0xfc,0x7e,0x04,0x02,0x18,0x3d,0xe0,0x00, +0x40,0x3c,0x7c,0x03,0xc0,0x3c,0x40,0x24,0x40,0x24,0x44,0x3c,0x44,0x00,0x3c,0x00, +0x00,0x04,0x40,0x7f,0xfc,0x05,0x40,0x7f,0xfc,0x04,0x40,0x07,0xc0,0x3f,0xf8,0x24, +0x48,0x27,0xc8,0x21,0x18,0x7f,0xfc,0x05,0x40,0x19,0x30,0x61,0x0c,0x00,0x00,0x04, +0x40,0x7f,0xfc,0x04,0x40,0x1f,0xfc,0x14,0xa0,0x13,0x20,0x1f,0xfc,0x1a,0xb4,0x1a, +0xd8,0x1f,0x90,0x1a,0xb0,0x12,0x30,0x24,0x48,0x48,0x84,0x00,0x00,0x10,0x40,0x10, +0x40,0x13,0xfc,0x7e,0x04,0x15,0x04,0x19,0xf8,0x35,0x68,0x37,0x68,0x32,0xe8,0x54, +0xb8,0x50,0xa0,0x11,0x24,0x12,0x24,0x14,0x1c,0x00,0x00,0x10,0x40,0x08,0x40,0x0f, +0xfc,0x42,0xa8,0x24,0xa4,0x29,0x64,0x03,0xf0,0x10,0x10,0x13,0xf0,0x12,0x00,0x27, +0xf8,0x24,0x08,0x40,0x08,0x40,0x70,0x00,0x00,0x00,0x40,0x7c,0x40,0x13,0xfc,0x12, +0x04,0x11,0x00,0x21,0xf8,0x3d,0x68,0x65,0x68,0x26,0xe8,0x26,0xb8,0x24,0xa0,0x3d, +0x24,0x02,0x24,0x04,0x1c,0x00,0x00,0x00,0x40,0x3c,0x40,0x27,0xfc,0x26,0x04,0x25, +0x00,0x3d,0xf8,0x25,0x68,0x27,0x68,0x3e,0xe8,0x24,0xb8,0x24,0xa0,0x25,0x24,0x26, +0x24,0x4c,0x1c}; + +#endif \ No newline at end of file diff --git a/libpcsxcore/socket.c b/libpcsxcore/socket.c new file mode 100644 index 0000000..2e0dc87 --- /dev/null +++ b/libpcsxcore/socket.c @@ -0,0 +1,254 @@ +/* Pcsx - Pc Psx Emulator + * Copyright (C) 1999-2003 Pcsx Team + * + * 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, see . + */ + +#ifdef _WIN32 +#include +#endif + +#include "psxcommon.h" +#include "socket.h" + +#ifndef _WIN32 +#include +#include +#include +#include +#include +#include +#endif + +static int server_socket = 0; +static int client_socket = 0; + +static char tbuf[513]; +static int ptr = 0; + +#define PORT_NUMBER 12345 + +int StartServer() { + struct in_addr localhostaddr; + struct sockaddr_in localsocketaddr; + +#ifdef _WIN32 + WSADATA wsaData; + + if (WSAStartup(MAKEWORD(2, 0), &wsaData) != 0) + return -1; +#endif + + server_socket = socket(AF_INET, SOCK_STREAM, 0); + +#ifdef _WIN32 + if (server_socket == INVALID_SOCKET) + return -1; +#else + if (server_socket == -1) + return -1; +#endif + + SetsNonblock(); + + memset((void *)&localhostaddr, 0, sizeof(localhostaddr)); + memset(&localsocketaddr, 0, sizeof(struct sockaddr_in)); + +#ifdef _WIN32 + localhostaddr.S_un.S_addr = htonl(INADDR_ANY); +#else + localhostaddr.s_addr = htonl(INADDR_ANY); +#endif + localsocketaddr.sin_family = AF_INET; + localsocketaddr.sin_addr = localhostaddr; + localsocketaddr.sin_port = htons(PORT_NUMBER); + + if (bind(server_socket, (struct sockaddr *) &localsocketaddr, sizeof(localsocketaddr)) < 0) + return -1; + + if (listen(server_socket, 1) != 0) + return -1; + + return 0; +} + +void StopServer() { +#ifdef _WIN32 + shutdown(server_socket, SD_BOTH); + closesocket(server_socket); + WSACleanup(); +#else + shutdown(server_socket, SHUT_RDWR); + close(server_socket); +#endif +} + +void GetClient() { + int new_socket; + char hello[256]; + + new_socket = accept(server_socket, 0, 0); + +#ifdef _WIN32 + if (new_socket == INVALID_SOCKET) + return; +#else + if (new_socket == -1) + return; +#endif + if (client_socket) + CloseClient(); + client_socket = new_socket; + +#ifndef _WIN32 + { + int flags; + flags = fcntl(client_socket, F_GETFL, 0); + fcntl(client_socket, F_SETFL, flags | O_NONBLOCK); + } +#endif + + sprintf(hello, "000 PCSX Version %s - Debug console\r\n", PACKAGE_VERSION); + WriteSocket(hello, strlen(hello)); + ptr = 0; +} + +void CloseClient() { + if (client_socket) { +#ifdef _WIN32 + shutdown(client_socket, SD_BOTH); + closesocket(client_socket); +#else + shutdown(client_socket, SHUT_RDWR); + close(client_socket); +#endif + client_socket = 0; + } +} + +int HasClient() { + return client_socket ? 1 : 0; +} + +int ReadSocket(char * buffer, int len) { + int r; + char * endl; + + if (!client_socket) + return -1; + + r = recv(client_socket, tbuf + ptr, 512 - ptr, 0); + + if (r == 0) { + client_socket = 0; + if (!ptr) + return 0; + } +#ifdef _WIN32 + if (r == SOCKET_ERROR) +#else + if (r == -1) +#endif + { + if (ptr == 0) + return -1; + r = 0; + } + ptr += r; + tbuf[ptr] = 0; + + endl = strstr(tbuf, "\r\n"); + + if (endl) { + r = endl - tbuf; + strncpy(buffer, tbuf, r); + + r += 2; + memmove(tbuf, tbuf + r, 512 - r); + ptr -= r; + memset(tbuf + r, 0, 512 - r); + r -= 2; + + } else { + r = 0; + } + + buffer[r] = 0; + + return r; +} + +int RawReadSocket(char * buffer, int len) { + int r; + int mlen = len < ptr ? len : ptr; + + if (!client_socket) + return -1; + + if (ptr) { + memcpy(buffer, tbuf, mlen); + ptr -= mlen; + memmove(tbuf, tbuf + mlen, 512 - mlen); + } + + if (len - mlen) + r = recv(client_socket, buffer + mlen, len - mlen, 0); + + if (r == 0) { + client_socket = 0; + if (!ptr) + return 0; + } +#ifdef _WIN32 + if (r == SOCKET_ERROR) +#else + if (r == -1) +#endif + { + if (ptr == 0) + return -1; + r = 0; + } + + r += mlen; + + return r; +} + +void WriteSocket(char * buffer, int len) { + if (!client_socket) + return; + + send(client_socket, buffer, len, 0); +} + +void SetsBlock() { +#ifdef _WIN32 + u_long b = 0; + ioctlsocket(server_socket, FIONBIO, &b); +#else + int flags = fcntl(server_socket, F_GETFL, 0); + fcntl(server_socket, F_SETFL, flags & ~O_NONBLOCK); +#endif +} + +void SetsNonblock() { +#ifdef _WIN32 + u_long b = 1; + ioctlsocket(server_socket, FIONBIO, &b); +#else + int flags = fcntl(server_socket, F_GETFL, 0); + fcntl(server_socket, F_SETFL, flags | O_NONBLOCK); +#endif +} diff --git a/libpcsxcore/socket.h b/libpcsxcore/socket.h new file mode 100644 index 0000000..7ee0deb --- /dev/null +++ b/libpcsxcore/socket.h @@ -0,0 +1,43 @@ +/* Pcsx - Pc Psx Emulator + * Copyright (C) 1999-2003 Pcsx Team + * + * 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, see . + */ + +#ifndef __SOCKET_H__ +#define __SOCKET_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +int StartServer(); +void StopServer(); + +void GetClient(); +void CloseClient(); + +int HasClient(); + +int ReadSocket(char * buffer, int len); +int RawReadSocket(char * buffer, int len); +void WriteSocket(char * buffer, int len); + +void SetsBlock(); +void SetsNonblock(); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/spu.c b/libpcsxcore/spu.c new file mode 100644 index 0000000..a60c047 --- /dev/null +++ b/libpcsxcore/spu.c @@ -0,0 +1,28 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +/* +* Sound (SPU) functions. +*/ + +#include "spu.h" + +void CALLBACK SPUirq(void) { + psxHu32ref(0x1070) |= SWAPu32(0x200); +} diff --git a/libpcsxcore/spu.h b/libpcsxcore/spu.h new file mode 100644 index 0000000..85010cb --- /dev/null +++ b/libpcsxcore/spu.h @@ -0,0 +1,47 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#ifndef __SPU_H__ +#define __SPU_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "psxcommon.h" +#include "plugins.h" +#include "r3000a.h" +#include "psxmem.h" + +#define H_SPUirqAddr 0x0da4 +#define H_SPUaddr 0x0da6 +#define H_SPUdata 0x0da8 +#define H_SPUctrl 0x0daa +#define H_SPUstat 0x0dae +#define H_SPUon1 0x0d88 +#define H_SPUon2 0x0d8a +#define H_SPUoff1 0x0d8c +#define H_SPUoff2 0x0d8e + +void CALLBACK SPUirq(void); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libpcsxcore/system.h b/libpcsxcore/system.h new file mode 100644 index 0000000..ed4ad06 --- /dev/null +++ b/libpcsxcore/system.h @@ -0,0 +1,44 @@ +/*************************************************************************** + * Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team * + * * + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA. * + ***************************************************************************/ + +#ifndef __SYSTEM_H__ +#define __SYSTEM_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +int SysInit(); // Init mem and plugins +void SysReset(); // Resets mem +//void SysPrintf(const char *fmt, ...); // Printf used by bios syscalls +#define SysPrintf printf +void SysMessage(const char *fmt, ...); // Message used to print msg to users +#define SysMessage printf +void *SysLoadLibrary(const char *lib); // Loads Library +void *SysLoadSym(void *lib, const char *sym); // Loads Symbol from Library +const char *SysLibError(); // Gets previous error loading sysbols +void SysCloseLibrary(void *lib); // Closes Library +void SysUpdate(); // Called on VBlank (to update i.e. pads) +void SysRunGui(); // Returns to the Gui +void SysClose(); // Close mem and plugins + +#ifdef __cplusplus +} +#endif +#endif diff --git a/plugins/dfxvideo/.deps/cfg.Plo b/plugins/dfxvideo/.deps/cfg.Plo new file mode 100644 index 0000000..b2e69f4 --- /dev/null +++ b/plugins/dfxvideo/.deps/cfg.Plo @@ -0,0 +1,210 @@ +cfg.lo: cfg.c /usr/include/stdc-predef.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h externals.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/X11/Xlib.h \ + /usr/include/X11/X.h /usr/include/X11/Xfuncproto.h \ + /usr/include/X11/Xosdefs.h /usr/include/X11/Xutil.h \ + /usr/include/X11/keysym.h /usr/include/X11/keysymdef.h \ + /usr/include/math.h /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h \ + /usr/include/X11/cursorfont.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h cfg.h gpu.h + +/usr/include/stdc-predef.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +externals.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/X11/Xlib.h: + +/usr/include/X11/X.h: + +/usr/include/X11/Xfuncproto.h: + +/usr/include/X11/Xosdefs.h: + +/usr/include/X11/Xutil.h: + +/usr/include/X11/keysym.h: + +/usr/include/X11/keysymdef.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/X11/cursorfont.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +cfg.h: + +gpu.h: diff --git a/plugins/dfxvideo/.deps/draw.Plo b/plugins/dfxvideo/.deps/draw.Plo new file mode 100644 index 0000000..44df69b --- /dev/null +++ b/plugins/dfxvideo/.deps/draw.Plo @@ -0,0 +1,227 @@ +draw.lo: draw.c /usr/include/stdc-predef.h externals.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/X11/Xlib.h \ + /usr/include/X11/X.h /usr/include/X11/Xfuncproto.h \ + /usr/include/X11/Xosdefs.h /usr/include/X11/Xutil.h \ + /usr/include/X11/keysym.h /usr/include/X11/keysymdef.h \ + /usr/include/math.h /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h \ + /usr/include/X11/cursorfont.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h gpu.h draw.h prim.h menu.h \ + interp.h swap.h /usr/include/x86_64-linux-gnu/sys/ipc.h \ + /usr/include/x86_64-linux-gnu/bits/ipctypes.h \ + /usr/include/x86_64-linux-gnu/bits/ipc.h \ + /usr/include/x86_64-linux-gnu/sys/shm.h \ + /usr/include/x86_64-linux-gnu/bits/shm.h \ + /usr/include/X11/extensions/Xv.h /usr/include/X11/extensions/Xvlib.h \ + /usr/include/X11/extensions/XShm.h /usr/include/X11/extensions/shm.h \ + hq2x.h hq3x.h + +/usr/include/stdc-predef.h: + +externals.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/X11/Xlib.h: + +/usr/include/X11/X.h: + +/usr/include/X11/Xfuncproto.h: + +/usr/include/X11/Xosdefs.h: + +/usr/include/X11/Xutil.h: + +/usr/include/X11/keysym.h: + +/usr/include/X11/keysymdef.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/X11/cursorfont.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +gpu.h: + +draw.h: + +prim.h: + +menu.h: + +interp.h: + +swap.h: + +/usr/include/x86_64-linux-gnu/sys/ipc.h: + +/usr/include/x86_64-linux-gnu/bits/ipctypes.h: + +/usr/include/x86_64-linux-gnu/bits/ipc.h: + +/usr/include/x86_64-linux-gnu/sys/shm.h: + +/usr/include/x86_64-linux-gnu/bits/shm.h: + +/usr/include/X11/extensions/Xv.h: + +/usr/include/X11/extensions/Xvlib.h: + +/usr/include/X11/extensions/XShm.h: + +/usr/include/X11/extensions/shm.h: + +hq2x.h: + +hq3x.h: diff --git a/plugins/dfxvideo/.deps/fps.Plo b/plugins/dfxvideo/.deps/fps.Plo new file mode 100644 index 0000000..4a644ca --- /dev/null +++ b/plugins/dfxvideo/.deps/fps.Plo @@ -0,0 +1,204 @@ +fps.lo: fps.c /usr/include/stdc-predef.h /usr/include/unistd.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h externals.h \ + /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/wchar.h /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/X11/Xlib.h \ + /usr/include/X11/X.h /usr/include/X11/Xfuncproto.h \ + /usr/include/X11/Xosdefs.h /usr/include/X11/Xutil.h \ + /usr/include/X11/keysym.h /usr/include/X11/keysymdef.h \ + /usr/include/math.h /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h \ + /usr/include/X11/cursorfont.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h fps.h gpu.h + +/usr/include/stdc-predef.h: + +/usr/include/unistd.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +externals.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/X11/Xlib.h: + +/usr/include/X11/X.h: + +/usr/include/X11/Xfuncproto.h: + +/usr/include/X11/Xosdefs.h: + +/usr/include/X11/Xutil.h: + +/usr/include/X11/keysym.h: + +/usr/include/X11/keysymdef.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/X11/cursorfont.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +fps.h: + +gpu.h: diff --git a/plugins/dfxvideo/.deps/gpu.Plo b/plugins/dfxvideo/.deps/gpu.Plo new file mode 100644 index 0000000..246fa89 --- /dev/null +++ b/plugins/dfxvideo/.deps/gpu.Plo @@ -0,0 +1,214 @@ +gpu.lo: gpu.c /usr/include/stdc-predef.h ../../include/config.h \ + externals.h /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/X11/Xlib.h \ + /usr/include/X11/X.h /usr/include/X11/Xfuncproto.h \ + /usr/include/X11/Xosdefs.h /usr/include/X11/Xutil.h \ + /usr/include/X11/keysym.h /usr/include/X11/keysymdef.h \ + /usr/include/math.h /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h \ + /usr/include/X11/cursorfont.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h gpu.h draw.h cfg.h prim.h \ + ../../libpcsxcore/psemu_plugin_defs.h menu.h key.h fps.h swap.h \ + /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h + +/usr/include/stdc-predef.h: + +../../include/config.h: + +externals.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/X11/Xlib.h: + +/usr/include/X11/X.h: + +/usr/include/X11/Xfuncproto.h: + +/usr/include/X11/Xosdefs.h: + +/usr/include/X11/Xutil.h: + +/usr/include/X11/keysym.h: + +/usr/include/X11/keysymdef.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/X11/cursorfont.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +gpu.h: + +draw.h: + +cfg.h: + +prim.h: + +../../libpcsxcore/psemu_plugin_defs.h: + +menu.h: + +key.h: + +fps.h: + +swap.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: diff --git a/plugins/dfxvideo/.deps/key.Plo b/plugins/dfxvideo/.deps/key.Plo new file mode 100644 index 0000000..69042b8 --- /dev/null +++ b/plugins/dfxvideo/.deps/key.Plo @@ -0,0 +1,192 @@ +key.lo: key.c /usr/include/stdc-predef.h externals.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/X11/Xlib.h \ + /usr/include/X11/X.h /usr/include/X11/Xfuncproto.h \ + /usr/include/X11/Xosdefs.h /usr/include/X11/Xutil.h \ + /usr/include/X11/keysym.h /usr/include/X11/keysymdef.h \ + /usr/include/math.h /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h \ + /usr/include/X11/cursorfont.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h menu.h gpu.h draw.h key.h + +/usr/include/stdc-predef.h: + +externals.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/X11/Xlib.h: + +/usr/include/X11/X.h: + +/usr/include/X11/Xfuncproto.h: + +/usr/include/X11/Xosdefs.h: + +/usr/include/X11/Xutil.h: + +/usr/include/X11/keysym.h: + +/usr/include/X11/keysymdef.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/X11/cursorfont.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +menu.h: + +gpu.h: + +draw.h: + +key.h: diff --git a/plugins/dfxvideo/.deps/main.Po b/plugins/dfxvideo/.deps/main.Po new file mode 100644 index 0000000..cf9fbf3 --- /dev/null +++ b/plugins/dfxvideo/.deps/main.Po @@ -0,0 +1,1854 @@ +main.o: gpucfg-0.1df/main.c /usr/include/stdc-predef.h \ + /usr/include/gtk-2.0/gtk/gtk.h /usr/include/gtk-2.0/gdk/gdk.h \ + /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h \ + /usr/include/glib-2.0/gio/gio.h /usr/include/glib-2.0/gio/giotypes.h \ + /usr/include/glib-2.0/gio/gioenums.h /usr/include/glib-2.0/glib-object.h \ + /usr/include/glib-2.0/gobject/gbinding.h /usr/include/glib-2.0/glib.h \ + /usr/include/glib-2.0/glib/galloca.h /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/float.h \ + /usr/include/glib-2.0/glib/gversionmacros.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/xlocale.h \ + /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gasyncqueue.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gatomic.h /usr/include/glib-2.0/glib/gerror.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/glib-2.0/glib/gquark.h /usr/include/glib-2.0/glib/gutils.h \ + /usr/include/glib-2.0/glib/gbacktrace.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/glib-2.0/glib/gbase64.h \ + /usr/include/glib-2.0/glib/gbitlock.h \ + /usr/include/glib-2.0/glib/gbookmarkfile.h \ + /usr/include/glib-2.0/glib/gbytes.h \ + /usr/include/glib-2.0/glib/gcharset.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ + /usr/include/glib-2.0/glib/gdatetime.h \ + /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ + /usr/include/dirent.h /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/glib-2.0/glib/genviron.h \ + /usr/include/glib-2.0/glib/gfileutils.h \ + /usr/include/glib-2.0/glib/ggettext.h /usr/include/glib-2.0/glib/ghash.h \ + /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/ghmac.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/ghook.h \ + /usr/include/glib-2.0/glib/ghostutils.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ + /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gkeyfile.h \ + /usr/include/glib-2.0/glib/gmappedfile.h \ + /usr/include/glib-2.0/glib/gmarkup.h \ + /usr/include/glib-2.0/glib/gmessages.h \ + /usr/include/glib-2.0/glib/gvariant.h \ + /usr/include/glib-2.0/glib/gvarianttype.h \ + /usr/include/glib-2.0/glib/goption.h \ + /usr/include/glib-2.0/glib/gpattern.h \ + /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ + /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ + /usr/include/glib-2.0/glib/gregex.h \ + /usr/include/glib-2.0/glib/gscanner.h \ + /usr/include/glib-2.0/glib/gsequence.h \ + /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gslice.h \ + /usr/include/glib-2.0/glib/gspawn.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h \ + /usr/include/glib-2.0/glib/gstringchunk.h \ + /usr/include/glib-2.0/glib/gtestutils.h \ + /usr/include/glib-2.0/glib/gthreadpool.h \ + /usr/include/glib-2.0/glib/gtimer.h \ + /usr/include/glib-2.0/glib/gtrashstack.h \ + /usr/include/glib-2.0/glib/gtree.h \ + /usr/include/glib-2.0/glib/gurifuncs.h \ + /usr/include/glib-2.0/glib/gversion.h \ + /usr/include/glib-2.0/glib/deprecated/gallocator.h \ + /usr/include/glib-2.0/glib/deprecated/gcache.h \ + /usr/include/glib-2.0/glib/deprecated/gcompletion.h \ + /usr/include/glib-2.0/glib/deprecated/gmain.h \ + /usr/include/glib-2.0/glib/deprecated/grel.h \ + /usr/include/glib-2.0/glib/deprecated/gthread.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/pthread.h \ + /usr/include/sched.h /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/glib-2.0/glib/glib-autocleanups.h \ + /usr/include/glib-2.0/gobject/gobject.h \ + /usr/include/glib-2.0/gobject/gtype.h \ + /usr/include/glib-2.0/gobject/gvalue.h \ + /usr/include/glib-2.0/gobject/gparam.h \ + /usr/include/glib-2.0/gobject/gclosure.h \ + /usr/include/glib-2.0/gobject/gsignal.h \ + /usr/include/glib-2.0/gobject/gmarshal.h \ + /usr/include/glib-2.0/gobject/gboxed.h \ + /usr/include/glib-2.0/gobject/glib-types.h \ + /usr/include/glib-2.0/gobject/genums.h \ + /usr/include/glib-2.0/gobject/gparamspecs.h \ + /usr/include/glib-2.0/gobject/gsourceclosure.h \ + /usr/include/glib-2.0/gobject/gtypemodule.h \ + /usr/include/glib-2.0/gobject/gtypeplugin.h \ + /usr/include/glib-2.0/gobject/gvaluearray.h \ + /usr/include/glib-2.0/gobject/gvaluetypes.h \ + /usr/include/glib-2.0/gobject/gobject-autocleanups.h \ + /usr/include/glib-2.0/gio/gaction.h \ + /usr/include/glib-2.0/gio/gactiongroup.h \ + /usr/include/glib-2.0/gio/gactiongroupexporter.h \ + /usr/include/glib-2.0/gio/gactionmap.h \ + /usr/include/glib-2.0/gio/gappinfo.h \ + /usr/include/glib-2.0/gio/gapplication.h \ + /usr/include/glib-2.0/gio/gapplicationcommandline.h \ + /usr/include/glib-2.0/gio/gasyncinitable.h \ + /usr/include/glib-2.0/gio/ginitable.h \ + /usr/include/glib-2.0/gio/gasyncresult.h \ + /usr/include/glib-2.0/gio/gbufferedinputstream.h \ + /usr/include/glib-2.0/gio/gfilterinputstream.h \ + /usr/include/glib-2.0/gio/ginputstream.h \ + /usr/include/glib-2.0/gio/gbufferedoutputstream.h \ + /usr/include/glib-2.0/gio/gfilteroutputstream.h \ + /usr/include/glib-2.0/gio/goutputstream.h \ + /usr/include/glib-2.0/gio/gbytesicon.h \ + /usr/include/glib-2.0/gio/gcancellable.h \ + /usr/include/glib-2.0/gio/gcharsetconverter.h \ + /usr/include/glib-2.0/gio/gconverter.h \ + /usr/include/glib-2.0/gio/gcontenttype.h \ + /usr/include/glib-2.0/gio/gconverterinputstream.h \ + /usr/include/glib-2.0/gio/gconverteroutputstream.h \ + /usr/include/glib-2.0/gio/gcredentials.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/glib-2.0/gio/gdatagrambased.h \ + /usr/include/glib-2.0/gio/gdatainputstream.h \ + /usr/include/glib-2.0/gio/gdataoutputstream.h \ + /usr/include/glib-2.0/gio/gdbusaddress.h \ + /usr/include/glib-2.0/gio/gdbusauthobserver.h \ + /usr/include/glib-2.0/gio/gdbusconnection.h \ + /usr/include/glib-2.0/gio/gdbuserror.h \ + /usr/include/glib-2.0/gio/gdbusintrospection.h \ + /usr/include/glib-2.0/gio/gdbusmessage.h \ + /usr/include/glib-2.0/gio/gdbusmethodinvocation.h \ + /usr/include/glib-2.0/gio/gdbusnameowning.h \ + /usr/include/glib-2.0/gio/gdbusnamewatching.h \ + /usr/include/glib-2.0/gio/gdbusproxy.h \ + /usr/include/glib-2.0/gio/gdbusserver.h \ + /usr/include/glib-2.0/gio/gdbusutils.h \ + /usr/include/glib-2.0/gio/gdrive.h \ + /usr/include/glib-2.0/gio/gdtlsclientconnection.h \ + /usr/include/glib-2.0/gio/gdtlsconnection.h \ + /usr/include/glib-2.0/gio/gdtlsserverconnection.h \ + /usr/include/glib-2.0/gio/gemblemedicon.h \ + /usr/include/glib-2.0/gio/gicon.h /usr/include/glib-2.0/gio/gemblem.h \ + /usr/include/glib-2.0/gio/gfileattribute.h \ + /usr/include/glib-2.0/gio/gfileenumerator.h \ + /usr/include/glib-2.0/gio/gfile.h /usr/include/glib-2.0/gio/gfileicon.h \ + /usr/include/glib-2.0/gio/gfileinfo.h \ + /usr/include/glib-2.0/gio/gfileinputstream.h \ + /usr/include/glib-2.0/gio/gfileiostream.h \ + /usr/include/glib-2.0/gio/giostream.h \ + /usr/include/glib-2.0/gio/gioerror.h \ + /usr/include/glib-2.0/gio/gfilemonitor.h \ + /usr/include/glib-2.0/gio/gfilenamecompleter.h \ + /usr/include/glib-2.0/gio/gfileoutputstream.h \ + /usr/include/glib-2.0/gio/ginetaddress.h \ + /usr/include/glib-2.0/gio/ginetaddressmask.h \ + /usr/include/glib-2.0/gio/ginetsocketaddress.h \ + /usr/include/glib-2.0/gio/gsocketaddress.h \ + /usr/include/glib-2.0/gio/gioenumtypes.h \ + /usr/include/glib-2.0/gio/giomodule.h /usr/include/glib-2.0/gmodule.h \ + /usr/include/glib-2.0/gio/gioscheduler.h \ + /usr/include/glib-2.0/gio/gloadableicon.h \ + /usr/include/glib-2.0/gio/gmemoryinputstream.h \ + /usr/include/glib-2.0/gio/gmemoryoutputstream.h \ + /usr/include/glib-2.0/gio/gmount.h \ + /usr/include/glib-2.0/gio/gmountoperation.h \ + /usr/include/glib-2.0/gio/gnativevolumemonitor.h \ + /usr/include/glib-2.0/gio/gvolumemonitor.h \ + /usr/include/glib-2.0/gio/gnetworkaddress.h \ + /usr/include/glib-2.0/gio/gnetworkmonitor.h \ + /usr/include/glib-2.0/gio/gnetworkservice.h \ + /usr/include/glib-2.0/gio/gpermission.h \ + /usr/include/glib-2.0/gio/gpollableinputstream.h \ + /usr/include/glib-2.0/gio/gpollableoutputstream.h \ + /usr/include/glib-2.0/gio/gpollableutils.h \ + /usr/include/glib-2.0/gio/gpropertyaction.h \ + /usr/include/glib-2.0/gio/gproxy.h \ + /usr/include/glib-2.0/gio/gproxyaddress.h \ + /usr/include/glib-2.0/gio/gproxyaddressenumerator.h \ + /usr/include/glib-2.0/gio/gsocketaddressenumerator.h \ + /usr/include/glib-2.0/gio/gproxyresolver.h \ + /usr/include/glib-2.0/gio/gresolver.h \ + /usr/include/glib-2.0/gio/gresource.h \ + /usr/include/glib-2.0/gio/gseekable.h \ + /usr/include/glib-2.0/gio/gsettingsschema.h \ + /usr/include/glib-2.0/gio/gsettings.h \ + /usr/include/glib-2.0/gio/gsimpleaction.h \ + /usr/include/glib-2.0/gio/gsimpleactiongroup.h \ + /usr/include/glib-2.0/gio/gactiongroup.h \ + /usr/include/glib-2.0/gio/gactionmap.h \ + /usr/include/glib-2.0/gio/gsimpleasyncresult.h \ + /usr/include/glib-2.0/gio/gsimpleiostream.h \ + /usr/include/glib-2.0/gio/gsimplepermission.h \ + /usr/include/glib-2.0/gio/gsocketclient.h \ + /usr/include/glib-2.0/gio/gsocketconnectable.h \ + /usr/include/glib-2.0/gio/gsocketconnection.h \ + /usr/include/glib-2.0/gio/gsocket.h \ + /usr/include/glib-2.0/gio/gsocketcontrolmessage.h \ + /usr/include/glib-2.0/gio/gsocketlistener.h \ + /usr/include/glib-2.0/gio/gsocketservice.h \ + /usr/include/glib-2.0/gio/gsrvtarget.h \ + /usr/include/glib-2.0/gio/gsimpleproxyresolver.h \ + /usr/include/glib-2.0/gio/gtask.h \ + /usr/include/glib-2.0/gio/gsubprocess.h \ + /usr/include/glib-2.0/gio/gsubprocesslauncher.h \ + /usr/include/glib-2.0/gio/gtcpconnection.h \ + /usr/include/glib-2.0/gio/gtcpwrapperconnection.h \ + /usr/include/glib-2.0/gio/gtestdbus.h \ + /usr/include/glib-2.0/gio/gthemedicon.h \ + /usr/include/glib-2.0/gio/gthreadedsocketservice.h \ + /usr/include/glib-2.0/gio/gtlsbackend.h \ + /usr/include/glib-2.0/gio/gtlscertificate.h \ + /usr/include/glib-2.0/gio/gtlsclientconnection.h \ + /usr/include/glib-2.0/gio/gtlsconnection.h \ + /usr/include/glib-2.0/gio/gtlsdatabase.h \ + /usr/include/glib-2.0/gio/gtlsfiledatabase.h \ + /usr/include/glib-2.0/gio/gtlsinteraction.h \ + /usr/include/glib-2.0/gio/gtlsserverconnection.h \ + /usr/include/glib-2.0/gio/gtlspassword.h \ + /usr/include/glib-2.0/gio/gvfs.h /usr/include/glib-2.0/gio/gvolume.h \ + /usr/include/glib-2.0/gio/gzlibcompressor.h \ + /usr/include/glib-2.0/gio/gzlibdecompressor.h \ + /usr/include/glib-2.0/gio/gdbusinterface.h \ + /usr/include/glib-2.0/gio/gdbusinterfaceskeleton.h \ + /usr/include/glib-2.0/gio/gdbusobject.h \ + /usr/include/glib-2.0/gio/gdbusobjectskeleton.h \ + /usr/include/glib-2.0/gio/gdbusobjectproxy.h \ + /usr/include/glib-2.0/gio/gdbusobjectmanager.h \ + /usr/include/glib-2.0/gio/gdbusobjectmanagerclient.h \ + /usr/include/glib-2.0/gio/gdbusobjectmanagerserver.h \ + /usr/include/glib-2.0/gio/gdbusactiongroup.h \ + /usr/include/glib-2.0/gio/giotypes.h \ + /usr/include/glib-2.0/gio/gremoteactiongroup.h \ + /usr/include/glib-2.0/gio/gmenumodel.h /usr/include/glib-2.0/gio/gmenu.h \ + /usr/include/glib-2.0/gio/gmenuexporter.h \ + /usr/include/glib-2.0/gio/gdbusmenumodel.h \ + /usr/include/glib-2.0/gio/gnotification.h \ + /usr/include/glib-2.0/gio/glistmodel.h \ + /usr/include/glib-2.0/gio/gliststore.h \ + /usr/include/glib-2.0/gio/gio-autocleanups.h \ + /usr/include/gtk-2.0/gdk/gdkscreen.h /usr/include/cairo/cairo.h \ + /usr/include/cairo/cairo-version.h /usr/include/cairo/cairo-features.h \ + /usr/include/cairo/cairo-deprecated.h \ + /usr/include/gtk-2.0/gdk/gdktypes.h /usr/include/pango-1.0/pango/pango.h \ + /usr/include/pango-1.0/pango/pango-attributes.h \ + /usr/include/pango-1.0/pango/pango-font.h \ + /usr/include/pango-1.0/pango/pango-coverage.h \ + /usr/include/pango-1.0/pango/pango-types.h \ + /usr/include/pango-1.0/pango/pango-gravity.h \ + /usr/include/pango-1.0/pango/pango-matrix.h \ + /usr/include/pango-1.0/pango/pango-script.h \ + /usr/include/pango-1.0/pango/pango-language.h \ + /usr/include/pango-1.0/pango/pango-bidi-type.h \ + /usr/include/pango-1.0/pango/pango-break.h \ + /usr/include/pango-1.0/pango/pango-item.h \ + /usr/include/pango-1.0/pango/pango-context.h \ + /usr/include/pango-1.0/pango/pango-fontmap.h \ + /usr/include/pango-1.0/pango/pango-fontset.h \ + /usr/include/pango-1.0/pango/pango-engine.h \ + /usr/include/pango-1.0/pango/pango-glyph.h \ + /usr/include/pango-1.0/pango/pango-enum-types.h \ + /usr/include/pango-1.0/pango/pango-features.h \ + /usr/include/pango-1.0/pango/pango-glyph-item.h \ + /usr/include/pango-1.0/pango/pango-layout.h \ + /usr/include/pango-1.0/pango/pango-tabs.h \ + /usr/include/pango-1.0/pango/pango-renderer.h \ + /usr/include/pango-1.0/pango/pango-utils.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h \ + /usr/lib/x86_64-linux-gnu/gtk-2.0/include/gdkconfig.h \ + /usr/include/gtk-2.0/gdk/gdkdisplay.h \ + /usr/include/gtk-2.0/gdk/gdkevents.h /usr/include/gtk-2.0/gdk/gdkcolor.h \ + /usr/include/gtk-2.0/gdk/gdkdnd.h /usr/include/gtk-2.0/gdk/gdkinput.h \ + /usr/include/gtk-2.0/gdk/gdkcairo.h /usr/include/gtk-2.0/gdk/gdkpixbuf.h \ + /usr/include/gtk-2.0/gdk/gdkrgb.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h \ + /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-autocleanups.h \ + /usr/include/pango-1.0/pango/pangocairo.h \ + /usr/include/gtk-2.0/gdk/gdkcursor.h \ + /usr/include/gtk-2.0/gdk/gdkdisplaymanager.h \ + /usr/include/gtk-2.0/gdk/gdkdrawable.h /usr/include/gtk-2.0/gdk/gdkgc.h \ + /usr/include/gtk-2.0/gdk/gdkenumtypes.h \ + /usr/include/gtk-2.0/gdk/gdkfont.h /usr/include/gtk-2.0/gdk/gdkimage.h \ + /usr/include/gtk-2.0/gdk/gdkkeys.h /usr/include/gtk-2.0/gdk/gdkpango.h \ + /usr/include/gtk-2.0/gdk/gdkpixmap.h \ + /usr/include/gtk-2.0/gdk/gdkproperty.h \ + /usr/include/gtk-2.0/gdk/gdkregion.h \ + /usr/include/gtk-2.0/gdk/gdkselection.h \ + /usr/include/gtk-2.0/gdk/gdkspawn.h \ + /usr/include/gtk-2.0/gdk/gdktestutils.h \ + /usr/include/gtk-2.0/gdk/gdkwindow.h \ + /usr/include/gtk-2.0/gdk/gdkvisual.h \ + /usr/include/gtk-2.0/gtk/gtkaboutdialog.h \ + /usr/include/gtk-2.0/gtk/gtkdialog.h \ + /usr/include/gtk-2.0/gtk/gtkwindow.h \ + /usr/include/gtk-2.0/gtk/gtkaccelgroup.h \ + /usr/include/gtk-2.0/gtk/gtkenums.h /usr/include/gtk-2.0/gtk/gtkbin.h \ + /usr/include/gtk-2.0/gtk/gtkcontainer.h \ + /usr/include/gtk-2.0/gtk/gtkwidget.h \ + /usr/include/gtk-2.0/gtk/gtkobject.h \ + /usr/include/gtk-2.0/gtk/gtktypeutils.h \ + /usr/include/gtk-2.0/gtk/gtktypebuiltins.h \ + /usr/include/gtk-2.0/gtk/gtkdebug.h \ + /usr/include/gtk-2.0/gtk/gtkadjustment.h \ + /usr/include/gtk-2.0/gtk/gtkstyle.h \ + /usr/include/gtk-2.0/gtk/gtksettings.h /usr/include/gtk-2.0/gtk/gtkrc.h \ + /usr/include/atk-1.0/atk/atk.h /usr/include/atk-1.0/atk/atkobject.h \ + /usr/include/atk-1.0/atk/atkversion.h \ + /usr/include/atk-1.0/atk/atkstate.h \ + /usr/include/atk-1.0/atk/atkrelationtype.h \ + /usr/include/atk-1.0/atk/atkaction.h \ + /usr/include/atk-1.0/atk/atkcomponent.h \ + /usr/include/atk-1.0/atk/atkutil.h \ + /usr/include/atk-1.0/atk/atkdocument.h \ + /usr/include/atk-1.0/atk/atkeditabletext.h \ + /usr/include/atk-1.0/atk/atktext.h \ + /usr/include/atk-1.0/atk/atk-enum-types.h \ + /usr/include/atk-1.0/atk/atkgobjectaccessible.h \ + /usr/include/atk-1.0/atk/atkhyperlink.h \ + /usr/include/atk-1.0/atk/atkhyperlinkimpl.h \ + /usr/include/atk-1.0/atk/atkhypertext.h \ + /usr/include/atk-1.0/atk/atkimage.h \ + /usr/include/atk-1.0/atk/atknoopobject.h \ + /usr/include/atk-1.0/atk/atknoopobjectfactory.h \ + /usr/include/atk-1.0/atk/atkobjectfactory.h \ + /usr/include/atk-1.0/atk/atkplug.h /usr/include/atk-1.0/atk/atkrange.h \ + /usr/include/atk-1.0/atk/atkregistry.h \ + /usr/include/atk-1.0/atk/atkobjectfactory.h \ + /usr/include/atk-1.0/atk/atkrelation.h \ + /usr/include/atk-1.0/atk/atkrelationset.h \ + /usr/include/atk-1.0/atk/atkselection.h \ + /usr/include/atk-1.0/atk/atksocket.h \ + /usr/include/atk-1.0/atk/atkstateset.h \ + /usr/include/atk-1.0/atk/atkstreamablecontent.h \ + /usr/include/atk-1.0/atk/atktable.h \ + /usr/include/atk-1.0/atk/atktablecell.h \ + /usr/include/atk-1.0/atk/atkmisc.h /usr/include/atk-1.0/atk/atkvalue.h \ + /usr/include/atk-1.0/atk/atkwindow.h \ + /usr/include/gtk-2.0/gtk/gtkaccellabel.h \ + /usr/include/gtk-2.0/gtk/gtklabel.h /usr/include/gtk-2.0/gtk/gtkmisc.h \ + /usr/include/gtk-2.0/gtk/gtkmenu.h \ + /usr/include/gtk-2.0/gtk/gtkmenushell.h \ + /usr/include/gtk-2.0/gtk/gtkaccelmap.h \ + /usr/include/gtk-2.0/gtk/gtkaccessible.h \ + /usr/include/gtk-2.0/gtk/gtkaction.h \ + /usr/include/gtk-2.0/gtk/gtkactiongroup.h \ + /usr/include/gtk-2.0/gtk/gtkactivatable.h \ + /usr/include/gtk-2.0/gtk/gtkalignment.h \ + /usr/include/gtk-2.0/gtk/gtkarrow.h \ + /usr/include/gtk-2.0/gtk/gtkaspectframe.h \ + /usr/include/gtk-2.0/gtk/gtkframe.h \ + /usr/include/gtk-2.0/gtk/gtkassistant.h \ + /usr/include/gtk-2.0/gtk/gtkbbox.h /usr/include/gtk-2.0/gtk/gtkbox.h \ + /usr/include/gtk-2.0/gtk/gtkbindings.h \ + /usr/include/gtk-2.0/gtk/gtkbuildable.h \ + /usr/include/gtk-2.0/gtk/gtkbuilder.h \ + /usr/include/gtk-2.0/gtk/gtkbutton.h /usr/include/gtk-2.0/gtk/gtkimage.h \ + /usr/include/gtk-2.0/gtk/gtkcalendar.h \ + /usr/include/gtk-2.0/gtk/gtksignal.h \ + /usr/include/gtk-2.0/gtk/gtkmarshal.h \ + /usr/include/gtk-2.0/gtk/gtkcelleditable.h \ + /usr/include/gtk-2.0/gtk/gtkcelllayout.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderer.h \ + /usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h \ + /usr/include/gtk-2.0/gtk/gtktreemodel.h \ + /usr/include/gtk-2.0/gtk/gtktreesortable.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendereraccel.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderertext.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderercombo.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererprogress.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererspin.h \ + /usr/include/gtk-2.0/gtk/gtkcellrendererspinner.h \ + /usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h \ + /usr/include/gtk-2.0/gtk/gtkcellview.h \ + /usr/include/gtk-2.0/gtk/gtkcheckbutton.h \ + /usr/include/gtk-2.0/gtk/gtktogglebutton.h \ + /usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkitem.h \ + /usr/include/gtk-2.0/gtk/gtkclipboard.h \ + /usr/include/gtk-2.0/gtk/gtkselection.h \ + /usr/include/gtk-2.0/gtk/gtktextiter.h \ + /usr/include/gtk-2.0/gtk/gtktexttag.h \ + /usr/include/gtk-2.0/gtk/gtktextchild.h \ + /usr/include/gtk-2.0/gtk/gtkcolorbutton.h \ + /usr/include/gtk-2.0/gtk/gtkcolorsel.h \ + /usr/include/gtk-2.0/gtk/gtkvbox.h \ + /usr/include/gtk-2.0/gtk/gtkcolorseldialog.h \ + /usr/include/gtk-2.0/gtk/gtkcombobox.h \ + /usr/include/gtk-2.0/gtk/gtktreeview.h /usr/include/gtk-2.0/gtk/gtkdnd.h \ + /usr/include/gtk-2.0/gtk/gtkentry.h \ + /usr/include/gtk-2.0/gtk/gtkeditable.h \ + /usr/include/gtk-2.0/gtk/gtkimcontext.h \ + /usr/include/gtk-2.0/gtk/gtkentrybuffer.h \ + /usr/include/gtk-2.0/gtk/gtkentrycompletion.h \ + /usr/include/gtk-2.0/gtk/gtkliststore.h \ + /usr/include/gtk-2.0/gtk/gtktreemodelfilter.h \ + /usr/include/gtk-2.0/gtk/gtkcomboboxentry.h \ + /usr/include/gtk-2.0/gtk/gtkcomboboxtext.h \ + /usr/include/gtk-2.0/gtk/gtkdrawingarea.h \ + /usr/include/gtk-2.0/gtk/gtkeventbox.h \ + /usr/include/gtk-2.0/gtk/gtkexpander.h \ + /usr/include/gtk-2.0/gtk/gtkfixed.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooser.h \ + /usr/include/gtk-2.0/gtk/gtkfilefilter.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h \ + /usr/include/gtk-2.0/gtk/gtkhbox.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h \ + /usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h \ + /usr/include/gtk-2.0/gtk/gtkfontbutton.h \ + /usr/include/gtk-2.0/gtk/gtkfontsel.h /usr/include/gtk-2.0/gtk/gtkgc.h \ + /usr/include/gtk-2.0/gtk/gtkhandlebox.h \ + /usr/include/gtk-2.0/gtk/gtkhbbox.h /usr/include/gtk-2.0/gtk/gtkhpaned.h \ + /usr/include/gtk-2.0/gtk/gtkpaned.h /usr/include/gtk-2.0/gtk/gtkhruler.h \ + /usr/include/gtk-2.0/gtk/gtkruler.h /usr/include/gtk-2.0/gtk/gtkhscale.h \ + /usr/include/gtk-2.0/gtk/gtkscale.h /usr/include/gtk-2.0/gtk/gtkrange.h \ + /usr/include/gtk-2.0/gtk/gtkhscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkhseparator.h \ + /usr/include/gtk-2.0/gtk/gtkseparator.h \ + /usr/include/gtk-2.0/gtk/gtkhsv.h \ + /usr/include/gtk-2.0/gtk/gtkiconfactory.h \ + /usr/include/gtk-2.0/gtk/gtkicontheme.h \ + /usr/include/gtk-2.0/gtk/gtkiconview.h \ + /usr/include/gtk-2.0/gtk/gtktooltip.h \ + /usr/include/gtk-2.0/gtk/gtkimagemenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkimcontextsimple.h \ + /usr/include/gtk-2.0/gtk/gtkimmulticontext.h \ + /usr/include/gtk-2.0/gtk/gtkinfobar.h \ + /usr/include/gtk-2.0/gtk/gtkinvisible.h \ + /usr/include/gtk-2.0/gtk/gtklayout.h \ + /usr/include/gtk-2.0/gtk/gtklinkbutton.h \ + /usr/include/gtk-2.0/gtk/gtkmain.h /usr/include/gtk-2.0/gtk/gtkmenubar.h \ + /usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoolitem.h \ + /usr/include/gtk-2.0/gtk/gtktooltips.h \ + /usr/include/gtk-2.0/gtk/gtksizegroup.h \ + /usr/include/gtk-2.0/gtk/gtkmessagedialog.h \ + /usr/include/gtk-2.0/gtk/gtkmodules.h \ + /usr/include/gtk-2.0/gtk/gtkmountoperation.h \ + /usr/include/gtk-2.0/gtk/gtknotebook.h \ + /usr/include/gtk-2.0/gtk/gtkoffscreenwindow.h \ + /usr/include/gtk-2.0/gtk/gtkorientable.h \ + /usr/include/gtk-2.0/gtk/gtkpagesetup.h \ + /usr/include/gtk-2.0/gtk/gtkpapersize.h \ + /usr/include/gtk-2.0/gtk/gtkplug.h /usr/include/gtk-2.0/gtk/gtksocket.h \ + /usr/include/gtk-2.0/gtk/gtkprintcontext.h \ + /usr/include/gtk-2.0/gtk/gtkprintoperation.h \ + /usr/include/gtk-2.0/gtk/gtkprintsettings.h \ + /usr/include/gtk-2.0/gtk/gtkprintoperationpreview.h \ + /usr/include/gtk-2.0/gtk/gtkprogressbar.h \ + /usr/include/gtk-2.0/gtk/gtkprogress.h \ + /usr/include/gtk-2.0/gtk/gtkradioaction.h \ + /usr/include/gtk-2.0/gtk/gtktoggleaction.h \ + /usr/include/gtk-2.0/gtk/gtkradiobutton.h \ + /usr/include/gtk-2.0/gtk/gtkradiomenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h \ + /usr/include/gtk-2.0/gtk/gtkrecentaction.h \ + /usr/include/gtk-2.0/gtk/gtkrecentmanager.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooser.h \ + /usr/include/gtk-2.0/gtk/gtkrecentfilter.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooserdialog.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchoosermenu.h \ + /usr/include/gtk-2.0/gtk/gtkrecentchooserwidget.h \ + /usr/include/gtk-2.0/gtk/gtkscalebutton.h \ + /usr/include/gtk-2.0/gtk/gtkscrolledwindow.h \ + /usr/include/gtk-2.0/gtk/gtkvscrollbar.h \ + /usr/include/gtk-2.0/gtk/gtkviewport.h \ + /usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h \ + /usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h \ + /usr/include/gtk-2.0/gtk/gtkshow.h \ + /usr/include/gtk-2.0/gtk/gtkspinbutton.h \ + /usr/include/gtk-2.0/gtk/gtkspinner.h \ + /usr/include/gtk-2.0/gtk/gtkstatusbar.h \ + /usr/include/gtk-2.0/gtk/gtkstatusicon.h \ + /usr/include/gtk-2.0/gtk/gtkstock.h /usr/include/gtk-2.0/gtk/gtktable.h \ + /usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h \ + /usr/include/gtk-2.0/gtk/gtktextbuffer.h \ + /usr/include/gtk-2.0/gtk/gtktexttagtable.h \ + /usr/include/gtk-2.0/gtk/gtktextmark.h \ + /usr/include/gtk-2.0/gtk/gtktextbufferrichtext.h \ + /usr/include/gtk-2.0/gtk/gtktextview.h \ + /usr/include/gtk-2.0/gtk/gtktoolbar.h \ + /usr/include/gtk-2.0/gtk/gtkpixmap.h \ + /usr/include/gtk-2.0/gtk/gtktoolitemgroup.h \ + /usr/include/gtk-2.0/gtk/gtktoolpalette.h \ + /usr/include/gtk-2.0/gtk/gtktoolshell.h \ + /usr/include/gtk-2.0/gtk/gtktestutils.h \ + /usr/include/gtk-2.0/gtk/gtktreednd.h \ + /usr/include/gtk-2.0/gtk/gtktreemodelsort.h \ + /usr/include/gtk-2.0/gtk/gtktreeselection.h \ + /usr/include/gtk-2.0/gtk/gtktreestore.h \ + /usr/include/gtk-2.0/gtk/gtkuimanager.h \ + /usr/include/gtk-2.0/gtk/gtkvbbox.h \ + /usr/include/gtk-2.0/gtk/gtkversion.h \ + /usr/include/gtk-2.0/gtk/gtkvolumebutton.h \ + /usr/include/gtk-2.0/gtk/gtkvpaned.h \ + /usr/include/gtk-2.0/gtk/gtkvruler.h \ + /usr/include/gtk-2.0/gtk/gtkvscale.h \ + /usr/include/gtk-2.0/gtk/gtkvseparator.h \ + /usr/include/gtk-2.0/gtk/gtktext.h /usr/include/gtk-2.0/gtk/gtktree.h \ + /usr/include/gtk-2.0/gtk/gtktreeitem.h \ + /usr/include/gtk-2.0/gtk/gtkclist.h /usr/include/gtk-2.0/gtk/gtkcombo.h \ + /usr/include/gtk-2.0/gtk/gtkctree.h /usr/include/gtk-2.0/gtk/gtkcurve.h \ + /usr/include/gtk-2.0/gtk/gtkfilesel.h \ + /usr/include/gtk-2.0/gtk/gtkgamma.h \ + /usr/include/gtk-2.0/gtk/gtkinputdialog.h \ + /usr/include/gtk-2.0/gtk/gtkitemfactory.h \ + /usr/include/gtk-2.0/gtk/gtklist.h \ + /usr/include/gtk-2.0/gtk/gtklistitem.h \ + /usr/include/gtk-2.0/gtk/gtkoldeditable.h \ + /usr/include/gtk-2.0/gtk/gtkoptionmenu.h \ + /usr/include/gtk-2.0/gtk/gtkpreview.h \ + /usr/include/gtk-2.0/gtk/gtktipsquery.h \ + /usr/include/libglade-2.0/glade/glade.h \ + /usr/include/libglade-2.0/glade/glade-init.h \ + /usr/include/libglade-2.0/glade/glade-xml.h ../../include/config.h \ + /usr/include/libintl.h /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h + +/usr/include/stdc-predef.h: + +/usr/include/gtk-2.0/gtk/gtk.h: + +/usr/include/gtk-2.0/gdk/gdk.h: + +/usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h: + +/usr/include/glib-2.0/gio/gio.h: + +/usr/include/glib-2.0/gio/giotypes.h: + +/usr/include/glib-2.0/gio/gioenums.h: + +/usr/include/glib-2.0/glib-object.h: + +/usr/include/glib-2.0/gobject/gbinding.h: + +/usr/include/glib-2.0/glib.h: + +/usr/include/glib-2.0/glib/galloca.h: + +/usr/include/glib-2.0/glib/gtypes.h: + +/usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h: + +/usr/include/glib-2.0/glib/gmacros.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/float.h: + +/usr/include/glib-2.0/glib/gversionmacros.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/xlocale.h: + +/usr/include/glib-2.0/glib/garray.h: + +/usr/include/glib-2.0/glib/gasyncqueue.h: + +/usr/include/glib-2.0/glib/gthread.h: + +/usr/include/glib-2.0/glib/gatomic.h: + +/usr/include/glib-2.0/glib/gerror.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/glib-2.0/glib/gquark.h: + +/usr/include/glib-2.0/glib/gutils.h: + +/usr/include/glib-2.0/glib/gbacktrace.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/glib-2.0/glib/gbase64.h: + +/usr/include/glib-2.0/glib/gbitlock.h: + +/usr/include/glib-2.0/glib/gbookmarkfile.h: + +/usr/include/glib-2.0/glib/gbytes.h: + +/usr/include/glib-2.0/glib/gcharset.h: + +/usr/include/glib-2.0/glib/gchecksum.h: + +/usr/include/glib-2.0/glib/gconvert.h: + +/usr/include/glib-2.0/glib/gdataset.h: + +/usr/include/glib-2.0/glib/gdate.h: + +/usr/include/glib-2.0/glib/gdatetime.h: + +/usr/include/glib-2.0/glib/gtimezone.h: + +/usr/include/glib-2.0/glib/gdir.h: + +/usr/include/dirent.h: + +/usr/include/x86_64-linux-gnu/bits/dirent.h: + +/usr/include/glib-2.0/glib/genviron.h: + +/usr/include/glib-2.0/glib/gfileutils.h: + +/usr/include/glib-2.0/glib/ggettext.h: + +/usr/include/glib-2.0/glib/ghash.h: + +/usr/include/glib-2.0/glib/glist.h: + +/usr/include/glib-2.0/glib/gmem.h: + +/usr/include/glib-2.0/glib/gnode.h: + +/usr/include/glib-2.0/glib/ghmac.h: + +/usr/include/glib-2.0/glib/gchecksum.h: + +/usr/include/glib-2.0/glib/ghook.h: + +/usr/include/glib-2.0/glib/ghostutils.h: + +/usr/include/glib-2.0/glib/giochannel.h: + +/usr/include/glib-2.0/glib/gmain.h: + +/usr/include/glib-2.0/glib/gpoll.h: + +/usr/include/glib-2.0/glib/gslist.h: + +/usr/include/glib-2.0/glib/gstring.h: + +/usr/include/glib-2.0/glib/gunicode.h: + +/usr/include/glib-2.0/glib/gkeyfile.h: + +/usr/include/glib-2.0/glib/gmappedfile.h: + +/usr/include/glib-2.0/glib/gmarkup.h: + +/usr/include/glib-2.0/glib/gmessages.h: + +/usr/include/glib-2.0/glib/gvariant.h: + +/usr/include/glib-2.0/glib/gvarianttype.h: + +/usr/include/glib-2.0/glib/goption.h: + +/usr/include/glib-2.0/glib/gpattern.h: + +/usr/include/glib-2.0/glib/gprimes.h: + +/usr/include/glib-2.0/glib/gqsort.h: + +/usr/include/glib-2.0/glib/gqueue.h: + +/usr/include/glib-2.0/glib/grand.h: + +/usr/include/glib-2.0/glib/gregex.h: + +/usr/include/glib-2.0/glib/gscanner.h: + +/usr/include/glib-2.0/glib/gsequence.h: + +/usr/include/glib-2.0/glib/gshell.h: + +/usr/include/glib-2.0/glib/gslice.h: + +/usr/include/glib-2.0/glib/gspawn.h: + +/usr/include/glib-2.0/glib/gstrfuncs.h: + +/usr/include/glib-2.0/glib/gstringchunk.h: + +/usr/include/glib-2.0/glib/gtestutils.h: + +/usr/include/glib-2.0/glib/gthreadpool.h: + +/usr/include/glib-2.0/glib/gtimer.h: + +/usr/include/glib-2.0/glib/gtrashstack.h: + +/usr/include/glib-2.0/glib/gtree.h: + +/usr/include/glib-2.0/glib/gurifuncs.h: + +/usr/include/glib-2.0/glib/gversion.h: + +/usr/include/glib-2.0/glib/deprecated/gallocator.h: + +/usr/include/glib-2.0/glib/deprecated/gcache.h: + +/usr/include/glib-2.0/glib/deprecated/gcompletion.h: + +/usr/include/glib-2.0/glib/deprecated/gmain.h: + +/usr/include/glib-2.0/glib/deprecated/grel.h: + +/usr/include/glib-2.0/glib/deprecated/gthread.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/x86_64-linux-gnu/bits/sched.h: + +/usr/include/x86_64-linux-gnu/bits/setjmp.h: + +/usr/include/glib-2.0/glib/glib-autocleanups.h: + +/usr/include/glib-2.0/gobject/gobject.h: + +/usr/include/glib-2.0/gobject/gtype.h: + +/usr/include/glib-2.0/gobject/gvalue.h: + +/usr/include/glib-2.0/gobject/gparam.h: + +/usr/include/glib-2.0/gobject/gclosure.h: + +/usr/include/glib-2.0/gobject/gsignal.h: + +/usr/include/glib-2.0/gobject/gmarshal.h: + +/usr/include/glib-2.0/gobject/gboxed.h: + +/usr/include/glib-2.0/gobject/glib-types.h: + +/usr/include/glib-2.0/gobject/genums.h: + +/usr/include/glib-2.0/gobject/gparamspecs.h: + +/usr/include/glib-2.0/gobject/gsourceclosure.h: + +/usr/include/glib-2.0/gobject/gtypemodule.h: + +/usr/include/glib-2.0/gobject/gtypeplugin.h: + +/usr/include/glib-2.0/gobject/gvaluearray.h: + +/usr/include/glib-2.0/gobject/gvaluetypes.h: + +/usr/include/glib-2.0/gobject/gobject-autocleanups.h: + +/usr/include/glib-2.0/gio/gaction.h: + +/usr/include/glib-2.0/gio/gactiongroup.h: + +/usr/include/glib-2.0/gio/gactiongroupexporter.h: + +/usr/include/glib-2.0/gio/gactionmap.h: + +/usr/include/glib-2.0/gio/gappinfo.h: + +/usr/include/glib-2.0/gio/gapplication.h: + +/usr/include/glib-2.0/gio/gapplicationcommandline.h: + +/usr/include/glib-2.0/gio/gasyncinitable.h: + +/usr/include/glib-2.0/gio/ginitable.h: + +/usr/include/glib-2.0/gio/gasyncresult.h: + +/usr/include/glib-2.0/gio/gbufferedinputstream.h: + +/usr/include/glib-2.0/gio/gfilterinputstream.h: + +/usr/include/glib-2.0/gio/ginputstream.h: + +/usr/include/glib-2.0/gio/gbufferedoutputstream.h: + +/usr/include/glib-2.0/gio/gfilteroutputstream.h: + +/usr/include/glib-2.0/gio/goutputstream.h: + +/usr/include/glib-2.0/gio/gbytesicon.h: + +/usr/include/glib-2.0/gio/gcancellable.h: + +/usr/include/glib-2.0/gio/gcharsetconverter.h: + +/usr/include/glib-2.0/gio/gconverter.h: + +/usr/include/glib-2.0/gio/gcontenttype.h: + +/usr/include/glib-2.0/gio/gconverterinputstream.h: + +/usr/include/glib-2.0/gio/gconverteroutputstream.h: + +/usr/include/glib-2.0/gio/gcredentials.h: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/x86_64-linux-gnu/bits/unistd.h: + +/usr/include/glib-2.0/gio/gdatagrambased.h: + +/usr/include/glib-2.0/gio/gdatainputstream.h: + +/usr/include/glib-2.0/gio/gdataoutputstream.h: + +/usr/include/glib-2.0/gio/gdbusaddress.h: + +/usr/include/glib-2.0/gio/gdbusauthobserver.h: + +/usr/include/glib-2.0/gio/gdbusconnection.h: + +/usr/include/glib-2.0/gio/gdbuserror.h: + +/usr/include/glib-2.0/gio/gdbusintrospection.h: + +/usr/include/glib-2.0/gio/gdbusmessage.h: + +/usr/include/glib-2.0/gio/gdbusmethodinvocation.h: + +/usr/include/glib-2.0/gio/gdbusnameowning.h: + +/usr/include/glib-2.0/gio/gdbusnamewatching.h: + +/usr/include/glib-2.0/gio/gdbusproxy.h: + +/usr/include/glib-2.0/gio/gdbusserver.h: + +/usr/include/glib-2.0/gio/gdbusutils.h: + +/usr/include/glib-2.0/gio/gdrive.h: + +/usr/include/glib-2.0/gio/gdtlsclientconnection.h: + +/usr/include/glib-2.0/gio/gdtlsconnection.h: + +/usr/include/glib-2.0/gio/gdtlsserverconnection.h: + +/usr/include/glib-2.0/gio/gemblemedicon.h: + +/usr/include/glib-2.0/gio/gicon.h: + +/usr/include/glib-2.0/gio/gemblem.h: + +/usr/include/glib-2.0/gio/gfileattribute.h: + +/usr/include/glib-2.0/gio/gfileenumerator.h: + +/usr/include/glib-2.0/gio/gfile.h: + +/usr/include/glib-2.0/gio/gfileicon.h: + +/usr/include/glib-2.0/gio/gfileinfo.h: + +/usr/include/glib-2.0/gio/gfileinputstream.h: + +/usr/include/glib-2.0/gio/gfileiostream.h: + +/usr/include/glib-2.0/gio/giostream.h: + +/usr/include/glib-2.0/gio/gioerror.h: + +/usr/include/glib-2.0/gio/gfilemonitor.h: + +/usr/include/glib-2.0/gio/gfilenamecompleter.h: + +/usr/include/glib-2.0/gio/gfileoutputstream.h: + +/usr/include/glib-2.0/gio/ginetaddress.h: + +/usr/include/glib-2.0/gio/ginetaddressmask.h: + +/usr/include/glib-2.0/gio/ginetsocketaddress.h: + +/usr/include/glib-2.0/gio/gsocketaddress.h: + +/usr/include/glib-2.0/gio/gioenumtypes.h: + +/usr/include/glib-2.0/gio/giomodule.h: + +/usr/include/glib-2.0/gmodule.h: + +/usr/include/glib-2.0/gio/gioscheduler.h: + +/usr/include/glib-2.0/gio/gloadableicon.h: + +/usr/include/glib-2.0/gio/gmemoryinputstream.h: + +/usr/include/glib-2.0/gio/gmemoryoutputstream.h: + +/usr/include/glib-2.0/gio/gmount.h: + +/usr/include/glib-2.0/gio/gmountoperation.h: + +/usr/include/glib-2.0/gio/gnativevolumemonitor.h: + +/usr/include/glib-2.0/gio/gvolumemonitor.h: + +/usr/include/glib-2.0/gio/gnetworkaddress.h: + +/usr/include/glib-2.0/gio/gnetworkmonitor.h: + +/usr/include/glib-2.0/gio/gnetworkservice.h: + +/usr/include/glib-2.0/gio/gpermission.h: + +/usr/include/glib-2.0/gio/gpollableinputstream.h: + +/usr/include/glib-2.0/gio/gpollableoutputstream.h: + +/usr/include/glib-2.0/gio/gpollableutils.h: + +/usr/include/glib-2.0/gio/gpropertyaction.h: + +/usr/include/glib-2.0/gio/gproxy.h: + +/usr/include/glib-2.0/gio/gproxyaddress.h: + +/usr/include/glib-2.0/gio/gproxyaddressenumerator.h: + +/usr/include/glib-2.0/gio/gsocketaddressenumerator.h: + +/usr/include/glib-2.0/gio/gproxyresolver.h: + +/usr/include/glib-2.0/gio/gresolver.h: + +/usr/include/glib-2.0/gio/gresource.h: + +/usr/include/glib-2.0/gio/gseekable.h: + +/usr/include/glib-2.0/gio/gsettingsschema.h: + +/usr/include/glib-2.0/gio/gsettings.h: + +/usr/include/glib-2.0/gio/gsimpleaction.h: + +/usr/include/glib-2.0/gio/gsimpleactiongroup.h: + +/usr/include/glib-2.0/gio/gactiongroup.h: + +/usr/include/glib-2.0/gio/gactionmap.h: + +/usr/include/glib-2.0/gio/gsimpleasyncresult.h: + +/usr/include/glib-2.0/gio/gsimpleiostream.h: + +/usr/include/glib-2.0/gio/gsimplepermission.h: + +/usr/include/glib-2.0/gio/gsocketclient.h: + +/usr/include/glib-2.0/gio/gsocketconnectable.h: + +/usr/include/glib-2.0/gio/gsocketconnection.h: + +/usr/include/glib-2.0/gio/gsocket.h: + +/usr/include/glib-2.0/gio/gsocketcontrolmessage.h: + +/usr/include/glib-2.0/gio/gsocketlistener.h: + +/usr/include/glib-2.0/gio/gsocketservice.h: + +/usr/include/glib-2.0/gio/gsrvtarget.h: + +/usr/include/glib-2.0/gio/gsimpleproxyresolver.h: + +/usr/include/glib-2.0/gio/gtask.h: + +/usr/include/glib-2.0/gio/gsubprocess.h: + +/usr/include/glib-2.0/gio/gsubprocesslauncher.h: + +/usr/include/glib-2.0/gio/gtcpconnection.h: + +/usr/include/glib-2.0/gio/gtcpwrapperconnection.h: + +/usr/include/glib-2.0/gio/gtestdbus.h: + +/usr/include/glib-2.0/gio/gthemedicon.h: + +/usr/include/glib-2.0/gio/gthreadedsocketservice.h: + +/usr/include/glib-2.0/gio/gtlsbackend.h: + +/usr/include/glib-2.0/gio/gtlscertificate.h: + +/usr/include/glib-2.0/gio/gtlsclientconnection.h: + +/usr/include/glib-2.0/gio/gtlsconnection.h: + +/usr/include/glib-2.0/gio/gtlsdatabase.h: + +/usr/include/glib-2.0/gio/gtlsfiledatabase.h: + +/usr/include/glib-2.0/gio/gtlsinteraction.h: + +/usr/include/glib-2.0/gio/gtlsserverconnection.h: + +/usr/include/glib-2.0/gio/gtlspassword.h: + +/usr/include/glib-2.0/gio/gvfs.h: + +/usr/include/glib-2.0/gio/gvolume.h: + +/usr/include/glib-2.0/gio/gzlibcompressor.h: + +/usr/include/glib-2.0/gio/gzlibdecompressor.h: + +/usr/include/glib-2.0/gio/gdbusinterface.h: + +/usr/include/glib-2.0/gio/gdbusinterfaceskeleton.h: + +/usr/include/glib-2.0/gio/gdbusobject.h: + +/usr/include/glib-2.0/gio/gdbusobjectskeleton.h: + +/usr/include/glib-2.0/gio/gdbusobjectproxy.h: + +/usr/include/glib-2.0/gio/gdbusobjectmanager.h: + +/usr/include/glib-2.0/gio/gdbusobjectmanagerclient.h: + +/usr/include/glib-2.0/gio/gdbusobjectmanagerserver.h: + +/usr/include/glib-2.0/gio/gdbusactiongroup.h: + +/usr/include/glib-2.0/gio/giotypes.h: + +/usr/include/glib-2.0/gio/gremoteactiongroup.h: + +/usr/include/glib-2.0/gio/gmenumodel.h: + +/usr/include/glib-2.0/gio/gmenu.h: + +/usr/include/glib-2.0/gio/gmenuexporter.h: + +/usr/include/glib-2.0/gio/gdbusmenumodel.h: + +/usr/include/glib-2.0/gio/gnotification.h: + +/usr/include/glib-2.0/gio/glistmodel.h: + +/usr/include/glib-2.0/gio/gliststore.h: + +/usr/include/glib-2.0/gio/gio-autocleanups.h: + +/usr/include/gtk-2.0/gdk/gdkscreen.h: + +/usr/include/cairo/cairo.h: + +/usr/include/cairo/cairo-version.h: + +/usr/include/cairo/cairo-features.h: + +/usr/include/cairo/cairo-deprecated.h: + +/usr/include/gtk-2.0/gdk/gdktypes.h: + +/usr/include/pango-1.0/pango/pango.h: + +/usr/include/pango-1.0/pango/pango-attributes.h: + +/usr/include/pango-1.0/pango/pango-font.h: + +/usr/include/pango-1.0/pango/pango-coverage.h: + +/usr/include/pango-1.0/pango/pango-types.h: + +/usr/include/pango-1.0/pango/pango-gravity.h: + +/usr/include/pango-1.0/pango/pango-matrix.h: + +/usr/include/pango-1.0/pango/pango-script.h: + +/usr/include/pango-1.0/pango/pango-language.h: + +/usr/include/pango-1.0/pango/pango-bidi-type.h: + +/usr/include/pango-1.0/pango/pango-break.h: + +/usr/include/pango-1.0/pango/pango-item.h: + +/usr/include/pango-1.0/pango/pango-context.h: + +/usr/include/pango-1.0/pango/pango-fontmap.h: + +/usr/include/pango-1.0/pango/pango-fontset.h: + +/usr/include/pango-1.0/pango/pango-engine.h: + +/usr/include/pango-1.0/pango/pango-glyph.h: + +/usr/include/pango-1.0/pango/pango-enum-types.h: + +/usr/include/pango-1.0/pango/pango-features.h: + +/usr/include/pango-1.0/pango/pango-glyph-item.h: + +/usr/include/pango-1.0/pango/pango-layout.h: + +/usr/include/pango-1.0/pango/pango-tabs.h: + +/usr/include/pango-1.0/pango/pango-renderer.h: + +/usr/include/pango-1.0/pango/pango-utils.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/lib/x86_64-linux-gnu/gtk-2.0/include/gdkconfig.h: + +/usr/include/gtk-2.0/gdk/gdkdisplay.h: + +/usr/include/gtk-2.0/gdk/gdkevents.h: + +/usr/include/gtk-2.0/gdk/gdkcolor.h: + +/usr/include/gtk-2.0/gdk/gdkdnd.h: + +/usr/include/gtk-2.0/gdk/gdkinput.h: + +/usr/include/gtk-2.0/gdk/gdkcairo.h: + +/usr/include/gtk-2.0/gdk/gdkpixbuf.h: + +/usr/include/gtk-2.0/gdk/gdkrgb.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h: + +/usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-autocleanups.h: + +/usr/include/pango-1.0/pango/pangocairo.h: + +/usr/include/gtk-2.0/gdk/gdkcursor.h: + +/usr/include/gtk-2.0/gdk/gdkdisplaymanager.h: + +/usr/include/gtk-2.0/gdk/gdkdrawable.h: + +/usr/include/gtk-2.0/gdk/gdkgc.h: + +/usr/include/gtk-2.0/gdk/gdkenumtypes.h: + +/usr/include/gtk-2.0/gdk/gdkfont.h: + +/usr/include/gtk-2.0/gdk/gdkimage.h: + +/usr/include/gtk-2.0/gdk/gdkkeys.h: + +/usr/include/gtk-2.0/gdk/gdkpango.h: + +/usr/include/gtk-2.0/gdk/gdkpixmap.h: + +/usr/include/gtk-2.0/gdk/gdkproperty.h: + +/usr/include/gtk-2.0/gdk/gdkregion.h: + +/usr/include/gtk-2.0/gdk/gdkselection.h: + +/usr/include/gtk-2.0/gdk/gdkspawn.h: + +/usr/include/gtk-2.0/gdk/gdktestutils.h: + +/usr/include/gtk-2.0/gdk/gdkwindow.h: + +/usr/include/gtk-2.0/gdk/gdkvisual.h: + +/usr/include/gtk-2.0/gtk/gtkaboutdialog.h: + +/usr/include/gtk-2.0/gtk/gtkdialog.h: + +/usr/include/gtk-2.0/gtk/gtkwindow.h: + +/usr/include/gtk-2.0/gtk/gtkaccelgroup.h: + +/usr/include/gtk-2.0/gtk/gtkenums.h: + +/usr/include/gtk-2.0/gtk/gtkbin.h: + +/usr/include/gtk-2.0/gtk/gtkcontainer.h: + +/usr/include/gtk-2.0/gtk/gtkwidget.h: + +/usr/include/gtk-2.0/gtk/gtkobject.h: + +/usr/include/gtk-2.0/gtk/gtktypeutils.h: + +/usr/include/gtk-2.0/gtk/gtktypebuiltins.h: + +/usr/include/gtk-2.0/gtk/gtkdebug.h: + +/usr/include/gtk-2.0/gtk/gtkadjustment.h: + +/usr/include/gtk-2.0/gtk/gtkstyle.h: + +/usr/include/gtk-2.0/gtk/gtksettings.h: + +/usr/include/gtk-2.0/gtk/gtkrc.h: + +/usr/include/atk-1.0/atk/atk.h: + +/usr/include/atk-1.0/atk/atkobject.h: + +/usr/include/atk-1.0/atk/atkversion.h: + +/usr/include/atk-1.0/atk/atkstate.h: + +/usr/include/atk-1.0/atk/atkrelationtype.h: + +/usr/include/atk-1.0/atk/atkaction.h: + +/usr/include/atk-1.0/atk/atkcomponent.h: + +/usr/include/atk-1.0/atk/atkutil.h: + +/usr/include/atk-1.0/atk/atkdocument.h: + +/usr/include/atk-1.0/atk/atkeditabletext.h: + +/usr/include/atk-1.0/atk/atktext.h: + +/usr/include/atk-1.0/atk/atk-enum-types.h: + +/usr/include/atk-1.0/atk/atkgobjectaccessible.h: + +/usr/include/atk-1.0/atk/atkhyperlink.h: + +/usr/include/atk-1.0/atk/atkhyperlinkimpl.h: + +/usr/include/atk-1.0/atk/atkhypertext.h: + +/usr/include/atk-1.0/atk/atkimage.h: + +/usr/include/atk-1.0/atk/atknoopobject.h: + +/usr/include/atk-1.0/atk/atknoopobjectfactory.h: + +/usr/include/atk-1.0/atk/atkobjectfactory.h: + +/usr/include/atk-1.0/atk/atkplug.h: + +/usr/include/atk-1.0/atk/atkrange.h: + +/usr/include/atk-1.0/atk/atkregistry.h: + +/usr/include/atk-1.0/atk/atkobjectfactory.h: + +/usr/include/atk-1.0/atk/atkrelation.h: + +/usr/include/atk-1.0/atk/atkrelationset.h: + +/usr/include/atk-1.0/atk/atkselection.h: + +/usr/include/atk-1.0/atk/atksocket.h: + +/usr/include/atk-1.0/atk/atkstateset.h: + +/usr/include/atk-1.0/atk/atkstreamablecontent.h: + +/usr/include/atk-1.0/atk/atktable.h: + +/usr/include/atk-1.0/atk/atktablecell.h: + +/usr/include/atk-1.0/atk/atkmisc.h: + +/usr/include/atk-1.0/atk/atkvalue.h: + +/usr/include/atk-1.0/atk/atkwindow.h: + +/usr/include/gtk-2.0/gtk/gtkaccellabel.h: + +/usr/include/gtk-2.0/gtk/gtklabel.h: + +/usr/include/gtk-2.0/gtk/gtkmisc.h: + +/usr/include/gtk-2.0/gtk/gtkmenu.h: + +/usr/include/gtk-2.0/gtk/gtkmenushell.h: + +/usr/include/gtk-2.0/gtk/gtkaccelmap.h: + +/usr/include/gtk-2.0/gtk/gtkaccessible.h: + +/usr/include/gtk-2.0/gtk/gtkaction.h: + +/usr/include/gtk-2.0/gtk/gtkactiongroup.h: + +/usr/include/gtk-2.0/gtk/gtkactivatable.h: + +/usr/include/gtk-2.0/gtk/gtkalignment.h: + +/usr/include/gtk-2.0/gtk/gtkarrow.h: + +/usr/include/gtk-2.0/gtk/gtkaspectframe.h: + +/usr/include/gtk-2.0/gtk/gtkframe.h: + +/usr/include/gtk-2.0/gtk/gtkassistant.h: + +/usr/include/gtk-2.0/gtk/gtkbbox.h: + +/usr/include/gtk-2.0/gtk/gtkbox.h: + +/usr/include/gtk-2.0/gtk/gtkbindings.h: + +/usr/include/gtk-2.0/gtk/gtkbuildable.h: + +/usr/include/gtk-2.0/gtk/gtkbuilder.h: + +/usr/include/gtk-2.0/gtk/gtkbutton.h: + +/usr/include/gtk-2.0/gtk/gtkimage.h: + +/usr/include/gtk-2.0/gtk/gtkcalendar.h: + +/usr/include/gtk-2.0/gtk/gtksignal.h: + +/usr/include/gtk-2.0/gtk/gtkmarshal.h: + +/usr/include/gtk-2.0/gtk/gtkcelleditable.h: + +/usr/include/gtk-2.0/gtk/gtkcelllayout.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderer.h: + +/usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h: + +/usr/include/gtk-2.0/gtk/gtktreemodel.h: + +/usr/include/gtk-2.0/gtk/gtktreesortable.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendereraccel.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderertext.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderercombo.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererprogress.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererspin.h: + +/usr/include/gtk-2.0/gtk/gtkcellrendererspinner.h: + +/usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h: + +/usr/include/gtk-2.0/gtk/gtkcellview.h: + +/usr/include/gtk-2.0/gtk/gtkcheckbutton.h: + +/usr/include/gtk-2.0/gtk/gtktogglebutton.h: + +/usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkitem.h: + +/usr/include/gtk-2.0/gtk/gtkclipboard.h: + +/usr/include/gtk-2.0/gtk/gtkselection.h: + +/usr/include/gtk-2.0/gtk/gtktextiter.h: + +/usr/include/gtk-2.0/gtk/gtktexttag.h: + +/usr/include/gtk-2.0/gtk/gtktextchild.h: + +/usr/include/gtk-2.0/gtk/gtkcolorbutton.h: + +/usr/include/gtk-2.0/gtk/gtkcolorsel.h: + +/usr/include/gtk-2.0/gtk/gtkvbox.h: + +/usr/include/gtk-2.0/gtk/gtkcolorseldialog.h: + +/usr/include/gtk-2.0/gtk/gtkcombobox.h: + +/usr/include/gtk-2.0/gtk/gtktreeview.h: + +/usr/include/gtk-2.0/gtk/gtkdnd.h: + +/usr/include/gtk-2.0/gtk/gtkentry.h: + +/usr/include/gtk-2.0/gtk/gtkeditable.h: + +/usr/include/gtk-2.0/gtk/gtkimcontext.h: + +/usr/include/gtk-2.0/gtk/gtkentrybuffer.h: + +/usr/include/gtk-2.0/gtk/gtkentrycompletion.h: + +/usr/include/gtk-2.0/gtk/gtkliststore.h: + +/usr/include/gtk-2.0/gtk/gtktreemodelfilter.h: + +/usr/include/gtk-2.0/gtk/gtkcomboboxentry.h: + +/usr/include/gtk-2.0/gtk/gtkcomboboxtext.h: + +/usr/include/gtk-2.0/gtk/gtkdrawingarea.h: + +/usr/include/gtk-2.0/gtk/gtkeventbox.h: + +/usr/include/gtk-2.0/gtk/gtkexpander.h: + +/usr/include/gtk-2.0/gtk/gtkfixed.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooser.h: + +/usr/include/gtk-2.0/gtk/gtkfilefilter.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h: + +/usr/include/gtk-2.0/gtk/gtkhbox.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h: + +/usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h: + +/usr/include/gtk-2.0/gtk/gtkfontbutton.h: + +/usr/include/gtk-2.0/gtk/gtkfontsel.h: + +/usr/include/gtk-2.0/gtk/gtkgc.h: + +/usr/include/gtk-2.0/gtk/gtkhandlebox.h: + +/usr/include/gtk-2.0/gtk/gtkhbbox.h: + +/usr/include/gtk-2.0/gtk/gtkhpaned.h: + +/usr/include/gtk-2.0/gtk/gtkpaned.h: + +/usr/include/gtk-2.0/gtk/gtkhruler.h: + +/usr/include/gtk-2.0/gtk/gtkruler.h: + +/usr/include/gtk-2.0/gtk/gtkhscale.h: + +/usr/include/gtk-2.0/gtk/gtkscale.h: + +/usr/include/gtk-2.0/gtk/gtkrange.h: + +/usr/include/gtk-2.0/gtk/gtkhscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkhseparator.h: + +/usr/include/gtk-2.0/gtk/gtkseparator.h: + +/usr/include/gtk-2.0/gtk/gtkhsv.h: + +/usr/include/gtk-2.0/gtk/gtkiconfactory.h: + +/usr/include/gtk-2.0/gtk/gtkicontheme.h: + +/usr/include/gtk-2.0/gtk/gtkiconview.h: + +/usr/include/gtk-2.0/gtk/gtktooltip.h: + +/usr/include/gtk-2.0/gtk/gtkimagemenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkimcontextsimple.h: + +/usr/include/gtk-2.0/gtk/gtkimmulticontext.h: + +/usr/include/gtk-2.0/gtk/gtkinfobar.h: + +/usr/include/gtk-2.0/gtk/gtkinvisible.h: + +/usr/include/gtk-2.0/gtk/gtklayout.h: + +/usr/include/gtk-2.0/gtk/gtklinkbutton.h: + +/usr/include/gtk-2.0/gtk/gtkmain.h: + +/usr/include/gtk-2.0/gtk/gtkmenubar.h: + +/usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoolitem.h: + +/usr/include/gtk-2.0/gtk/gtktooltips.h: + +/usr/include/gtk-2.0/gtk/gtksizegroup.h: + +/usr/include/gtk-2.0/gtk/gtkmessagedialog.h: + +/usr/include/gtk-2.0/gtk/gtkmodules.h: + +/usr/include/gtk-2.0/gtk/gtkmountoperation.h: + +/usr/include/gtk-2.0/gtk/gtknotebook.h: + +/usr/include/gtk-2.0/gtk/gtkoffscreenwindow.h: + +/usr/include/gtk-2.0/gtk/gtkorientable.h: + +/usr/include/gtk-2.0/gtk/gtkpagesetup.h: + +/usr/include/gtk-2.0/gtk/gtkpapersize.h: + +/usr/include/gtk-2.0/gtk/gtkplug.h: + +/usr/include/gtk-2.0/gtk/gtksocket.h: + +/usr/include/gtk-2.0/gtk/gtkprintcontext.h: + +/usr/include/gtk-2.0/gtk/gtkprintoperation.h: + +/usr/include/gtk-2.0/gtk/gtkprintsettings.h: + +/usr/include/gtk-2.0/gtk/gtkprintoperationpreview.h: + +/usr/include/gtk-2.0/gtk/gtkprogressbar.h: + +/usr/include/gtk-2.0/gtk/gtkprogress.h: + +/usr/include/gtk-2.0/gtk/gtkradioaction.h: + +/usr/include/gtk-2.0/gtk/gtktoggleaction.h: + +/usr/include/gtk-2.0/gtk/gtkradiobutton.h: + +/usr/include/gtk-2.0/gtk/gtkradiomenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h: + +/usr/include/gtk-2.0/gtk/gtkrecentaction.h: + +/usr/include/gtk-2.0/gtk/gtkrecentmanager.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooser.h: + +/usr/include/gtk-2.0/gtk/gtkrecentfilter.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooserdialog.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchoosermenu.h: + +/usr/include/gtk-2.0/gtk/gtkrecentchooserwidget.h: + +/usr/include/gtk-2.0/gtk/gtkscalebutton.h: + +/usr/include/gtk-2.0/gtk/gtkscrolledwindow.h: + +/usr/include/gtk-2.0/gtk/gtkvscrollbar.h: + +/usr/include/gtk-2.0/gtk/gtkviewport.h: + +/usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h: + +/usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h: + +/usr/include/gtk-2.0/gtk/gtkshow.h: + +/usr/include/gtk-2.0/gtk/gtkspinbutton.h: + +/usr/include/gtk-2.0/gtk/gtkspinner.h: + +/usr/include/gtk-2.0/gtk/gtkstatusbar.h: + +/usr/include/gtk-2.0/gtk/gtkstatusicon.h: + +/usr/include/gtk-2.0/gtk/gtkstock.h: + +/usr/include/gtk-2.0/gtk/gtktable.h: + +/usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h: + +/usr/include/gtk-2.0/gtk/gtktextbuffer.h: + +/usr/include/gtk-2.0/gtk/gtktexttagtable.h: + +/usr/include/gtk-2.0/gtk/gtktextmark.h: + +/usr/include/gtk-2.0/gtk/gtktextbufferrichtext.h: + +/usr/include/gtk-2.0/gtk/gtktextview.h: + +/usr/include/gtk-2.0/gtk/gtktoolbar.h: + +/usr/include/gtk-2.0/gtk/gtkpixmap.h: + +/usr/include/gtk-2.0/gtk/gtktoolitemgroup.h: + +/usr/include/gtk-2.0/gtk/gtktoolpalette.h: + +/usr/include/gtk-2.0/gtk/gtktoolshell.h: + +/usr/include/gtk-2.0/gtk/gtktestutils.h: + +/usr/include/gtk-2.0/gtk/gtktreednd.h: + +/usr/include/gtk-2.0/gtk/gtktreemodelsort.h: + +/usr/include/gtk-2.0/gtk/gtktreeselection.h: + +/usr/include/gtk-2.0/gtk/gtktreestore.h: + +/usr/include/gtk-2.0/gtk/gtkuimanager.h: + +/usr/include/gtk-2.0/gtk/gtkvbbox.h: + +/usr/include/gtk-2.0/gtk/gtkversion.h: + +/usr/include/gtk-2.0/gtk/gtkvolumebutton.h: + +/usr/include/gtk-2.0/gtk/gtkvpaned.h: + +/usr/include/gtk-2.0/gtk/gtkvruler.h: + +/usr/include/gtk-2.0/gtk/gtkvscale.h: + +/usr/include/gtk-2.0/gtk/gtkvseparator.h: + +/usr/include/gtk-2.0/gtk/gtktext.h: + +/usr/include/gtk-2.0/gtk/gtktree.h: + +/usr/include/gtk-2.0/gtk/gtktreeitem.h: + +/usr/include/gtk-2.0/gtk/gtkclist.h: + +/usr/include/gtk-2.0/gtk/gtkcombo.h: + +/usr/include/gtk-2.0/gtk/gtkctree.h: + +/usr/include/gtk-2.0/gtk/gtkcurve.h: + +/usr/include/gtk-2.0/gtk/gtkfilesel.h: + +/usr/include/gtk-2.0/gtk/gtkgamma.h: + +/usr/include/gtk-2.0/gtk/gtkinputdialog.h: + +/usr/include/gtk-2.0/gtk/gtkitemfactory.h: + +/usr/include/gtk-2.0/gtk/gtklist.h: + +/usr/include/gtk-2.0/gtk/gtklistitem.h: + +/usr/include/gtk-2.0/gtk/gtkoldeditable.h: + +/usr/include/gtk-2.0/gtk/gtkoptionmenu.h: + +/usr/include/gtk-2.0/gtk/gtkpreview.h: + +/usr/include/gtk-2.0/gtk/gtktipsquery.h: + +/usr/include/libglade-2.0/glade/glade.h: + +/usr/include/libglade-2.0/glade/glade-init.h: + +/usr/include/libglade-2.0/glade/glade-xml.h: + +../../include/config.h: + +/usr/include/libintl.h: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/string.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: diff --git a/plugins/dfxvideo/.deps/menu.Plo b/plugins/dfxvideo/.deps/menu.Plo new file mode 100644 index 0000000..6f94aa7 --- /dev/null +++ b/plugins/dfxvideo/.deps/menu.Plo @@ -0,0 +1,191 @@ +menu.lo: menu.c /usr/include/stdc-predef.h externals.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/X11/Xlib.h \ + /usr/include/X11/X.h /usr/include/X11/Xfuncproto.h \ + /usr/include/X11/Xosdefs.h /usr/include/X11/Xutil.h \ + /usr/include/X11/keysym.h /usr/include/X11/keysymdef.h \ + /usr/include/math.h /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h \ + /usr/include/X11/cursorfont.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h draw.h menu.h gpu.h + +/usr/include/stdc-predef.h: + +externals.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/X11/Xlib.h: + +/usr/include/X11/X.h: + +/usr/include/X11/Xfuncproto.h: + +/usr/include/X11/Xosdefs.h: + +/usr/include/X11/Xutil.h: + +/usr/include/X11/keysym.h: + +/usr/include/X11/keysymdef.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/X11/cursorfont.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +draw.h: + +menu.h: + +gpu.h: diff --git a/plugins/dfxvideo/.deps/prim.Plo b/plugins/dfxvideo/.deps/prim.Plo new file mode 100644 index 0000000..500db05 --- /dev/null +++ b/plugins/dfxvideo/.deps/prim.Plo @@ -0,0 +1,193 @@ +prim.lo: prim.c /usr/include/stdc-predef.h externals.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/X11/Xlib.h \ + /usr/include/X11/X.h /usr/include/X11/Xfuncproto.h \ + /usr/include/X11/Xosdefs.h /usr/include/X11/Xutil.h \ + /usr/include/X11/keysym.h /usr/include/X11/keysymdef.h \ + /usr/include/math.h /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h \ + /usr/include/X11/cursorfont.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h gpu.h draw.h soft.h swap.h + +/usr/include/stdc-predef.h: + +externals.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/X11/Xlib.h: + +/usr/include/X11/X.h: + +/usr/include/X11/Xfuncproto.h: + +/usr/include/X11/Xosdefs.h: + +/usr/include/X11/Xutil.h: + +/usr/include/X11/keysym.h: + +/usr/include/X11/keysymdef.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/X11/cursorfont.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +gpu.h: + +draw.h: + +soft.h: + +swap.h: diff --git a/plugins/dfxvideo/.deps/soft.Plo b/plugins/dfxvideo/.deps/soft.Plo new file mode 100644 index 0000000..713287b --- /dev/null +++ b/plugins/dfxvideo/.deps/soft.Plo @@ -0,0 +1,196 @@ +soft.lo: soft.c /usr/include/stdc-predef.h externals.h \ + /usr/include/stdio.h /usr/include/features.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/X11/Xlib.h \ + /usr/include/X11/X.h /usr/include/X11/Xfuncproto.h \ + /usr/include/X11/Xosdefs.h /usr/include/X11/Xutil.h \ + /usr/include/X11/keysym.h /usr/include/X11/keysymdef.h \ + /usr/include/math.h /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h \ + /usr/include/X11/cursorfont.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h soft.h gpu.h prim.h menu.h \ + swap.h + +/usr/include/stdc-predef.h: + +externals.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/X11/Xlib.h: + +/usr/include/X11/X.h: + +/usr/include/X11/Xfuncproto.h: + +/usr/include/X11/Xosdefs.h: + +/usr/include/X11/Xutil.h: + +/usr/include/X11/keysym.h: + +/usr/include/X11/keysymdef.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/X11/cursorfont.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +soft.h: + +gpu.h: + +prim.h: + +menu.h: + +swap.h: diff --git a/plugins/dfxvideo/.deps/zn.Plo b/plugins/dfxvideo/.deps/zn.Plo new file mode 100644 index 0000000..4c1be49 --- /dev/null +++ b/plugins/dfxvideo/.deps/zn.Plo @@ -0,0 +1,184 @@ +zn.lo: zn.c /usr/include/stdc-predef.h externals.h /usr/include/stdio.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \ + /usr/include/endian.h /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/sigset.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/sys/sysmacros.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \ + /usr/include/x86_64-linux-gnu/bits/string2.h \ + /usr/include/x86_64-linux-gnu/bits/string3.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/X11/Xlib.h \ + /usr/include/X11/X.h /usr/include/X11/Xfuncproto.h \ + /usr/include/X11/Xosdefs.h /usr/include/X11/Xutil.h \ + /usr/include/X11/keysym.h /usr/include/X11/keysymdef.h \ + /usr/include/math.h /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/huge_val.h \ + /usr/include/x86_64-linux-gnu/bits/huge_valf.h \ + /usr/include/x86_64-linux-gnu/bits/huge_vall.h \ + /usr/include/x86_64-linux-gnu/bits/inf.h \ + /usr/include/x86_64-linux-gnu/bits/nan.h \ + /usr/include/x86_64-linux-gnu/bits/mathdef.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathinline.h \ + /usr/include/X11/cursorfont.h \ + /usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h + +/usr/include/stdc-predef.h: + +externals.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/x86_64-linux-gnu/bits/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/stdio2.h: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap-16.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/sigset.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/select2.h: + +/usr/include/x86_64-linux-gnu/sys/sysmacros.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/x86_64-linux-gnu/bits/string.h: + +/usr/include/x86_64-linux-gnu/bits/string2.h: + +/usr/include/x86_64-linux-gnu/bits/string3.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/X11/Xlib.h: + +/usr/include/X11/X.h: + +/usr/include/X11/Xfuncproto.h: + +/usr/include/X11/Xosdefs.h: + +/usr/include/X11/Xutil.h: + +/usr/include/X11/keysym.h: + +/usr/include/X11/keysymdef.h: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/huge_val.h: + +/usr/include/x86_64-linux-gnu/bits/huge_valf.h: + +/usr/include/x86_64-linux-gnu/bits/huge_vall.h: + +/usr/include/x86_64-linux-gnu/bits/inf.h: + +/usr/include/x86_64-linux-gnu/bits/nan.h: + +/usr/include/x86_64-linux-gnu/bits/mathdef.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathinline.h: + +/usr/include/X11/cursorfont.h: + +/usr/lib/gcc/x86_64-linux-gnu/6/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: diff --git a/plugins/dfxvideo/Makefile b/plugins/dfxvideo/Makefile new file mode 100644 index 0000000..18c259d --- /dev/null +++ b/plugins/dfxvideo/Makefile @@ -0,0 +1,826 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# plugins/dfxvideo/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + + + +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/pcsx +pkgincludedir = $(includedir)/pcsx +pkglibdir = $(libdir)/pcsx +pkglibexecdir = $(libexecdir)/pcsx +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-pc-linux-gnu +host_triplet = x86_64-pc-linux-gnu +target_triplet = x86_64-pc-linux-gnu +#am__append_1 = i386.asm +#am__append_2 = -DUSE_NASM=1 +bin_PROGRAMS = cfgDFXVideo$(EXEEXT) +subdir = plugins/dfxvideo +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(gladedir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +libDFXVideo_la_LIBADD = +am__libDFXVideo_la_SOURCES_DIST = gpu.c cfg.c draw.c fps.c key.c \ + menu.c prim.c soft.c zn.c i386.asm +#am__objects_1 = i386.lo +am_libDFXVideo_la_OBJECTS = gpu.lo cfg.lo draw.lo fps.lo key.lo \ + menu.lo prim.lo soft.lo zn.lo $(am__objects_1) +libDFXVideo_la_OBJECTS = $(am_libDFXVideo_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +libDFXVideo_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(libDFXVideo_la_LDFLAGS) $(LDFLAGS) -o \ + $@ +PROGRAMS = $(bin_PROGRAMS) +am_cfgDFXVideo_OBJECTS = main.$(OBJEXT) +cfgDFXVideo_OBJECTS = $(am_cfgDFXVideo_OBJECTS) +am__DEPENDENCIES_1 = +cfgDFXVideo_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir)/include +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libDFXVideo_la_SOURCES) $(cfgDFXVideo_SOURCES) +DIST_SOURCES = $(am__libDFXVideo_la_SOURCES_DIST) \ + $(cfgDFXVideo_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(glade_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ + $(top_srcdir)/mkinstalldirs +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/tjw/src/pcsxr-1.9.92/missing aclocal-1.15 +ALSA_CFLAGS = +ALSA_LIBS = +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AUTOCONF = ${SHELL} /home/tjw/src/pcsxr-1.9.92/missing autoconf +AUTOHEADER = ${SHELL} /home/tjw/src/pcsxr-1.9.92/missing autoheader +AUTOMAKE = ${SHELL} /home/tjw/src/pcsxr-1.9.92/missing automake-1.15 +AWK = mawk +CC = gcc +CCAS = gcc +CCASDEPMODE = depmode=gcc3 +CCASFLAGS = -g -O2 +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EXEEXT = +FGREP = /bin/grep -F +GETTEXT_MACRO_VERSION = 0.19 +GETTEXT_PACKAGE = pcsx +GLADE2_CFLAGS = -pthread -I/usr/include/libglade-2.0 -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libxml2 +GLADE2_LIBS = -lglade-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -lxml2 +GLIB2_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include +GLIB2_LIBS = -lglib-2.0 +GMSGFMT = /usr/bin/msgfmt +GMSGFMT_015 = /usr/bin/msgfmt +GREP = /bin/grep +GTK2_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 +GTK2_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +INTLLIBS = +INTL_MACOSX_LIBS = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = -ldl -lnsl +LIBCDIO_CFLAGS = +LIBCDIO_LIBS = +LIBICONV = -liconv +LIBINTL = +LIBOBJS = +LIBS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBICONV = -liconv +LTLIBINTL = +LTLIBOBJS = +LT_SYS_LIBRARY_PATH = +MAINT = # +MAKEINFO = ${SHELL} /home/tjw/src/pcsxr-1.9.92/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /bin/mkdir -p +MSGFMT = /usr/bin/msgfmt +MSGFMT_015 = /usr/bin/msgfmt +MSGMERGE = /usr/bin/msgmerge +NASM = +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = pcsx +PACKAGE_BUGREPORT = +PACKAGE_NAME = pcsx +PACKAGE_STRING = pcsx 1.9 +PACKAGE_TARNAME = pcsx +PACKAGE_URL = +PACKAGE_VERSION = 1.9 +PATH_SEPARATOR = : +PEOPSXGL = +PKG_CONFIG = /usr/bin/pkg-config +PKG_CONFIG_LIBDIR = +PKG_CONFIG_PATH = +POSUB = po +PULSEAUDIO_CFLAGS = +PULSEAUDIO_LIBS = +RANLIB = ranlib +SDL_CFLAGS = -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT +SDL_CONFIG = /usr/bin/sdl-config +SDL_LIBS = -L/usr/lib/x86_64-linux-gnu -lSDL +SED = /bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +USE_NLS = yes +VERSION = 1.9 +XGETTEXT = /usr/bin/xgettext +XGETTEXT_015 = /usr/bin/xgettext +XGETTEXT_EXTRA_OPTIONS = +abs_builddir = /home/tjw/src/pcsxr-1.9.92/plugins/dfxvideo +abs_srcdir = /home/tjw/src/pcsxr-1.9.92/plugins/dfxvideo +abs_top_builddir = /home/tjw/src/pcsxr-1.9.92 +abs_top_srcdir = /home/tjw/src/pcsxr-1.9.92 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_DUMPBIN = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/lib/games/psemu/ +build = x86_64-pc-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = pc +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-pc-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = pc +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/tjw/src/pcsxr-1.9.92/install-sh +libdir = ${exec_prefix}/lib/games/psemu/ +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +runstatedir = ${localstatedir}/run +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target = x86_64-pc-linux-gnu +target_alias = +target_cpu = x86_64 +target_os = linux-gnu +target_vendor = pc +top_build_prefix = ../../ +top_builddir = ../.. +top_srcdir = ../.. +STRIP_FPIC = sh $(top_srcdir)/strip_fPIC.sh +SUFFIXES = .asm +INCLUDES = -DPIXMAPDIR=\"${datadir}/pixmaps/\" \ + -DLOCALE_DIR=\"${datadir}/locale/\" \ + -DDATADIR=\"${datadir}/psemu/\" $(GTK2_CFLAGS) \ + $(GLADE2_CFLAGS) -I/usr/X11R6/include -I../../libpcsxcore \ + -I../../include $(am__append_2) +lib_LTLIBRARIES = libDFXVideo.la +libDFXVideo_la_SOURCES = gpu.c cfg.c draw.c fps.c key.c menu.c prim.c \ + soft.c zn.c $(am__append_1) +libDFXVideo_la_LDFLAGS = -module -avoid-version -L/usr/X11R6/lib64 \ + -L/usr/X11R6/lib -lX11 -lXv -lXext -lm +cfgDFXVideo_SOURCES = gpucfg-0.1df/main.c +cfgDFXVideo_LDADD = $(GTK2_LIBS) $(GLADE2_LIBS) -L/usr/X11R6/lib -lXext +glade_DATA = gpucfg-0.1df/dfxvideo.glade2 +gladedir = $(datadir)/psemu/ +EXTRA_DIST = $(glade_DATA) +all: all-am + +.SUFFIXES: +.SUFFIXES: .asm .c .lo .o .obj +$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/dfxvideo/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/dfxvideo/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: # $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): # $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libDFXVideo.la: $(libDFXVideo_la_OBJECTS) $(libDFXVideo_la_DEPENDENCIES) $(EXTRA_libDFXVideo_la_DEPENDENCIES) + $(AM_V_CCLD)$(libDFXVideo_la_LINK) -rpath $(libdir) $(libDFXVideo_la_OBJECTS) $(libDFXVideo_la_LIBADD) $(LIBS) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +cfgDFXVideo$(EXEEXT): $(cfgDFXVideo_OBJECTS) $(cfgDFXVideo_DEPENDENCIES) $(EXTRA_cfgDFXVideo_DEPENDENCIES) + @rm -f cfgDFXVideo$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(cfgDFXVideo_OBJECTS) $(cfgDFXVideo_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/cfg.Plo +include ./$(DEPDIR)/draw.Plo +include ./$(DEPDIR)/fps.Plo +include ./$(DEPDIR)/gpu.Plo +include ./$(DEPDIR)/key.Plo +include ./$(DEPDIR)/main.Po +include ./$(DEPDIR)/menu.Plo +include ./$(DEPDIR)/prim.Plo +include ./$(DEPDIR)/soft.Plo +include ./$(DEPDIR)/zn.Plo + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c -o $@ $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +# $(AM_V_CC)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $< + +main.o: gpucfg-0.1df/main.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT main.o -MD -MP -MF $(DEPDIR)/main.Tpo -c -o main.o `test -f 'gpucfg-0.1df/main.c' || echo '$(srcdir)/'`gpucfg-0.1df/main.c + $(AM_V_at)$(am__mv) $(DEPDIR)/main.Tpo $(DEPDIR)/main.Po +# $(AM_V_CC)source='gpucfg-0.1df/main.c' object='main.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o main.o `test -f 'gpucfg-0.1df/main.c' || echo '$(srcdir)/'`gpucfg-0.1df/main.c + +main.obj: gpucfg-0.1df/main.c + $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT main.obj -MD -MP -MF $(DEPDIR)/main.Tpo -c -o main.obj `if test -f 'gpucfg-0.1df/main.c'; then $(CYGPATH_W) 'gpucfg-0.1df/main.c'; else $(CYGPATH_W) '$(srcdir)/gpucfg-0.1df/main.c'; fi` + $(AM_V_at)$(am__mv) $(DEPDIR)/main.Tpo $(DEPDIR)/main.Po +# $(AM_V_CC)source='gpucfg-0.1df/main.c' object='main.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o main.obj `if test -f 'gpucfg-0.1df/main.c'; then $(CYGPATH_W) 'gpucfg-0.1df/main.c'; else $(CYGPATH_W) '$(srcdir)/gpucfg-0.1df/main.c'; fi` + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-gladeDATA: $(glade_DATA) + @$(NORMAL_INSTALL) + @list='$(glade_DATA)'; test -n "$(gladedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(gladedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(gladedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(gladedir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(gladedir)" || exit $$?; \ + done + +uninstall-gladeDATA: + @$(NORMAL_UNINSTALL) + @list='$(glade_DATA)'; test -n "$(gladedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(gladedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA) +install-binPROGRAMS: install-libLTLIBRARIES + +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(gladedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-gladeDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-gladeDATA \ + uninstall-libLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ + clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-binPROGRAMS install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-gladeDATA install-html install-html-am \ + install-info install-info-am install-libLTLIBRARIES \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-binPROGRAMS uninstall-gladeDATA \ + uninstall-libLTLIBRARIES + +.PRECIOUS: Makefile + + +.asm.lo: + $(LIBTOOL) --tag=CC --mode=compile \ + $(STRIP_FPIC) $(NASM) -f elf -d ELF -I${srcdir}/ $< + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/plugins/dfxvideo/Makefile.am b/plugins/dfxvideo/Makefile.am new file mode 100644 index 0000000..89ba770 --- /dev/null +++ b/plugins/dfxvideo/Makefile.am @@ -0,0 +1,36 @@ +STRIP_FPIC = sh $(top_srcdir)/strip_fPIC.sh + +SUFFIXES = .asm + +.asm.lo: + $(LIBTOOL) --tag=CC --mode=compile \ + $(STRIP_FPIC) $(NASM) -f elf -d ELF -I${srcdir}/ $< + +INCLUDES = -DPIXMAPDIR=\"${datadir}/pixmaps/\" \ + -DLOCALE_DIR=\"${datadir}/locale/\" \ + -DDATADIR=\"${datadir}/psemu/\" \ + $(GTK2_CFLAGS) $(GLADE2_CFLAGS) -I/usr/X11R6/include \ + -I../../libpcsxcore \ + -I../../include + +bindir = @libdir@/games/psemu/ +libdir = @libdir@/games/psemu/ + +lib_LTLIBRARIES = libDFXVideo.la + +libDFXVideo_la_SOURCES = gpu.c cfg.c draw.c fps.c key.c menu.c prim.c soft.c zn.c +if X86_NASM +libDFXVideo_la_SOURCES += i386.asm +INCLUDES += -DUSE_NASM=1 +endif +libDFXVideo_la_LDFLAGS = -module -avoid-version +libDFXVideo_la_LDFLAGS += -L/usr/X11R6/lib64 -L/usr/X11R6/lib \ + -lX11 -lXv -lXext -lm + +bin_PROGRAMS = cfgDFXVideo +cfgDFXVideo_SOURCES = gpucfg-0.1df/main.c +cfgDFXVideo_LDADD = $(GTK2_LIBS) $(GLADE2_LIBS) -L/usr/X11R6/lib -lXext + +glade_DATA = gpucfg-0.1df/dfxvideo.glade2 +gladedir = $(datadir)/psemu/ +EXTRA_DIST = $(glade_DATA) diff --git a/plugins/dfxvideo/Makefile.in b/plugins/dfxvideo/Makefile.in new file mode 100644 index 0000000..7dfc649 --- /dev/null +++ b/plugins/dfxvideo/Makefile.in @@ -0,0 +1,826 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +@X86_NASM_TRUE@am__append_1 = i386.asm +@X86_NASM_TRUE@am__append_2 = -DUSE_NASM=1 +bin_PROGRAMS = cfgDFXVideo$(EXEEXT) +subdir = plugins/dfxvideo +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(gladedir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +libDFXVideo_la_LIBADD = +am__libDFXVideo_la_SOURCES_DIST = gpu.c cfg.c draw.c fps.c key.c \ + menu.c prim.c soft.c zn.c i386.asm +@X86_NASM_TRUE@am__objects_1 = i386.lo +am_libDFXVideo_la_OBJECTS = gpu.lo cfg.lo draw.lo fps.lo key.lo \ + menu.lo prim.lo soft.lo zn.lo $(am__objects_1) +libDFXVideo_la_OBJECTS = $(am_libDFXVideo_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libDFXVideo_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(libDFXVideo_la_LDFLAGS) $(LDFLAGS) -o \ + $@ +PROGRAMS = $(bin_PROGRAMS) +am_cfgDFXVideo_OBJECTS = main.$(OBJEXT) +cfgDFXVideo_OBJECTS = $(am_cfgDFXVideo_OBJECTS) +am__DEPENDENCIES_1 = +cfgDFXVideo_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libDFXVideo_la_SOURCES) $(cfgDFXVideo_SOURCES) +DIST_SOURCES = $(am__libDFXVideo_la_SOURCES_DIST) \ + $(cfgDFXVideo_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(glade_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ + $(top_srcdir)/mkinstalldirs +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLADE2_CFLAGS = @GLADE2_CFLAGS@ +GLADE2_LIBS = @GLADE2_LIBS@ +GLIB2_CFLAGS = @GLIB2_CFLAGS@ +GLIB2_LIBS = @GLIB2_LIBS@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +GTK2_CFLAGS = @GTK2_CFLAGS@ +GTK2_LIBS = @GTK2_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@ +LIBCDIO_LIBS = @LIBCDIO_LIBS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NASM = @NASM@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PEOPSXGL = @PEOPSXGL@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +PULSEAUDIO_CFLAGS = @PULSEAUDIO_CFLAGS@ +PULSEAUDIO_LIBS = @PULSEAUDIO_LIBS@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_CONFIG = @SDL_CONFIG@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @libdir@/games/psemu/ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@/games/psemu/ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +STRIP_FPIC = sh $(top_srcdir)/strip_fPIC.sh +SUFFIXES = .asm +INCLUDES = -DPIXMAPDIR=\"${datadir}/pixmaps/\" \ + -DLOCALE_DIR=\"${datadir}/locale/\" \ + -DDATADIR=\"${datadir}/psemu/\" $(GTK2_CFLAGS) \ + $(GLADE2_CFLAGS) -I/usr/X11R6/include -I../../libpcsxcore \ + -I../../include $(am__append_2) +lib_LTLIBRARIES = libDFXVideo.la +libDFXVideo_la_SOURCES = gpu.c cfg.c draw.c fps.c key.c menu.c prim.c \ + soft.c zn.c $(am__append_1) +libDFXVideo_la_LDFLAGS = -module -avoid-version -L/usr/X11R6/lib64 \ + -L/usr/X11R6/lib -lX11 -lXv -lXext -lm +cfgDFXVideo_SOURCES = gpucfg-0.1df/main.c +cfgDFXVideo_LDADD = $(GTK2_LIBS) $(GLADE2_LIBS) -L/usr/X11R6/lib -lXext +glade_DATA = gpucfg-0.1df/dfxvideo.glade2 +gladedir = $(datadir)/psemu/ +EXTRA_DIST = $(glade_DATA) +all: all-am + +.SUFFIXES: +.SUFFIXES: .asm .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/dfxvideo/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/dfxvideo/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libDFXVideo.la: $(libDFXVideo_la_OBJECTS) $(libDFXVideo_la_DEPENDENCIES) $(EXTRA_libDFXVideo_la_DEPENDENCIES) + $(AM_V_CCLD)$(libDFXVideo_la_LINK) -rpath $(libdir) $(libDFXVideo_la_OBJECTS) $(libDFXVideo_la_LIBADD) $(LIBS) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +cfgDFXVideo$(EXEEXT): $(cfgDFXVideo_OBJECTS) $(cfgDFXVideo_DEPENDENCIES) $(EXTRA_cfgDFXVideo_DEPENDENCIES) + @rm -f cfgDFXVideo$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(cfgDFXVideo_OBJECTS) $(cfgDFXVideo_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/draw.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fps.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpu.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/key.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/menu.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prim.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/soft.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zn.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +main.o: gpucfg-0.1df/main.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT main.o -MD -MP -MF $(DEPDIR)/main.Tpo -c -o main.o `test -f 'gpucfg-0.1df/main.c' || echo '$(srcdir)/'`gpucfg-0.1df/main.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/main.Tpo $(DEPDIR)/main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpucfg-0.1df/main.c' object='main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o main.o `test -f 'gpucfg-0.1df/main.c' || echo '$(srcdir)/'`gpucfg-0.1df/main.c + +main.obj: gpucfg-0.1df/main.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT main.obj -MD -MP -MF $(DEPDIR)/main.Tpo -c -o main.obj `if test -f 'gpucfg-0.1df/main.c'; then $(CYGPATH_W) 'gpucfg-0.1df/main.c'; else $(CYGPATH_W) '$(srcdir)/gpucfg-0.1df/main.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/main.Tpo $(DEPDIR)/main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpucfg-0.1df/main.c' object='main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o main.obj `if test -f 'gpucfg-0.1df/main.c'; then $(CYGPATH_W) 'gpucfg-0.1df/main.c'; else $(CYGPATH_W) '$(srcdir)/gpucfg-0.1df/main.c'; fi` + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-gladeDATA: $(glade_DATA) + @$(NORMAL_INSTALL) + @list='$(glade_DATA)'; test -n "$(gladedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(gladedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(gladedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(gladedir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(gladedir)" || exit $$?; \ + done + +uninstall-gladeDATA: + @$(NORMAL_UNINSTALL) + @list='$(glade_DATA)'; test -n "$(gladedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(gladedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA) +install-binPROGRAMS: install-libLTLIBRARIES + +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(gladedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-gladeDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-gladeDATA \ + uninstall-libLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ + clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-binPROGRAMS install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-gladeDATA install-html install-html-am \ + install-info install-info-am install-libLTLIBRARIES \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-binPROGRAMS uninstall-gladeDATA \ + uninstall-libLTLIBRARIES + +.PRECIOUS: Makefile + + +.asm.lo: + $(LIBTOOL) --tag=CC --mode=compile \ + $(STRIP_FPIC) $(NASM) -f elf -d ELF -I${srcdir}/ $< + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/plugins/dfxvideo/cfg.c b/plugins/dfxvideo/cfg.c new file mode 100644 index 0000000..ca796cb --- /dev/null +++ b/plugins/dfxvideo/cfg.c @@ -0,0 +1,293 @@ +/*************************************************************************** + cfg.c - description + ------------------- + begin : Sun Oct 28 2001 + copyright : (C) 2001 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ + +#define _IN_CFG + +#include +#include +#include + +#undef FALSE +#undef TRUE +#define MAKELONG(low,high) ((unsigned long)(((unsigned short)(low)) | (((unsigned long)((unsigned short)(high))) << 16))) + +#include "externals.h" +#include "cfg.h" +#include "gpu.h" + + +// CONFIG FILE helpers.... +// some helper macros: + +#define GetValue(name, var) \ + p = strstr(pB, name); \ + if (p != NULL) { \ + p+=strlen(name); \ + while ((*p == ' ') || (*p == '=')) p++; \ + if (*p != '\n') var = atoi(p); \ + } + +#define GetFloatValue(name, var) \ + p = strstr(pB, name); \ + if (p != NULL) { \ + p+=strlen(name); \ + while ((*p == ' ') || (*p == '=')) p++; \ + if (*p != '\n') var = (float)atof(p); \ + } + +#define SetValue(name, var) \ + p = strstr(pB, name); \ + if (p != NULL) { \ + p+=strlen(name); \ + while ((*p == ' ') || (*p == '=')) p++; \ + if (*p != '\n') { \ + len = sprintf(t1, "%d", var); \ + strncpy(p, t1, len); \ + if (p[len] != ' ' && p[len] != '\n' && p[len] != 0) p[len] = ' '; \ + } \ + } \ + else { \ + size+=sprintf(pB+size, "%s = %d\n", name, var); \ + } + +#define SetFloatValue(name, var) \ + p = strstr(pB, name); \ + if (p != NULL) { \ + p+=strlen(name); \ + while ((*p == ' ') || (*p == '=')) p++; \ + if (*p != '\n') { \ + len = sprintf(t1, "%.1f", (double)var); \ + strncpy(p, t1, len); \ + if (p[len] != ' ' && p[len] != '\n' && p[len] != 0) p[len] = ' '; \ + } \ + } \ + else { \ + size+=sprintf(pB+size, "%s = %.1f\n", name, (double)var); \ + } +#if 0 +static void ReadConfigFile() +{ + struct stat buf; + FILE *in;char t[256];int len, size; + char * pB, * p; + + + strcpy(t,"dfxvideo.cfg"); + in = fopen(t,"rb"); + + if (stat(t, &buf) == -1) return; + size = buf.st_size; + + in = fopen(t,"rb"); + if (!in) return; + + pB=(char *)malloc(size + 1); + memset(pB,0,size + 1); + + len = fread(pB, 1, size, in); + fclose(in); + + GetValue("ResX", iResX); + if(iResX<20) iResX=20; + iResX=(iResX/4)*4; + + GetValue("ResY", iResY); + if(iResY<20) iResY=20; + iResY=(iResY/4)*4; + + iWinSize=MAKELONG(iResX,iResY); + + GetValue("NoStretch", iUseNoStretchBlt); + + GetValue("Dithering", iUseDither); + + GetValue("FullScreen", iWindowMode); + if(iWindowMode!=0) iWindowMode=0; + else iWindowMode=1; + + GetValue("ShowFPS", iShowFPS); + if(iShowFPS<0) iShowFPS=0; + if(iShowFPS>1) iShowFPS=1; + + GetValue("Maintain43", iMaintainAspect); + if(iMaintainAspect<0) iMaintainAspect=0; + if(iMaintainAspect>1) iMaintainAspect=1; + + GetValue("UseFrameLimit", UseFrameLimit); + if(UseFrameLimit<0) UseFrameLimit=0; + if(UseFrameLimit>1) UseFrameLimit=1; + + GetValue("UseFrameSkip", UseFrameSkip); + if(UseFrameSkip<0) UseFrameSkip=0; + if(UseFrameSkip>1) UseFrameSkip=1; + + GetValue("FPSDetection", iFrameLimit); + if(iFrameLimit<1) iFrameLimit=1; + if(iFrameLimit>2) iFrameLimit=2; + + GetFloatValue("FrameRate", fFrameRate); + fFrameRate/=10; + if(fFrameRate<10.0f) fFrameRate=10.0f; + if(fFrameRate>1000.0f) fFrameRate=1000.0f; + + GetValue("CfgFixes", dwCfgFixes); + + GetValue("UseFixes", iUseFixes); + if(iUseFixes<0) iUseFixes=0; + if(iUseFixes>1) iUseFixes=1; + + free(pB); +} + +void ExecCfg(char *arg) { + char cfg[256]; + struct stat buf; + + strcpy(cfg, "./cfgDFXVideo"); + if (stat(cfg, &buf) != -1) { + if (fork() == 0) { + execl(cfg, "cfgDFXVideo", arg, NULL); + exit(0); + } + return; + } + + strcpy(cfg, "./cfg/cfgDFXVideo"); + if (stat(cfg, &buf) != -1) { + if (fork() == 0) { + execl(cfg, "cfgDFXVideo", arg, NULL); + exit(0); + } + return; + } + + sprintf(cfg, "%s/.pcsx/plugins/cfg/cfgDFXVideo", getenv("HOME")); + if (stat(cfg, &buf) != -1) { + if (fork() == 0) { + execl(cfg, "cfgDFXVideo", arg, NULL); + exit(0); + } + return; + } + + printf("ERROR: cfgDFXVideo file not found!\n"); +} + +void SoftDlgProc(void) +{ + ExecCfg("CFG"); +} + +void AboutDlgProc(void) +{ + char args[256]; + + sprintf(args, "ABOUT"); + ExecCfg(args); +} +#endif +void ReadGPUConfig(void) +{ + // defaults + iResX=640;iResY=480; + iWinSize=MAKELONG(iResX,iResY); + iColDepth=32; + iWindowMode=1; + iMaintainAspect=0; + UseFrameLimit=1; + UseFrameSkip=0; + iFrameLimit=2; + fFrameRate=200.0f; + dwCfgFixes=0; + iUseFixes=0; + iUseNoStretchBlt=0; + iUseDither=0; + iShowFPS=0; + + // read sets + //ReadConfigFile(); + + // additional checks + if(!iColDepth) iColDepth=32; + if(iUseFixes) dwActFixes=dwCfgFixes; + SetFixes(); +} +#if 0 +void WriteConfig(void) { + + struct stat buf; + FILE *out;char t[256];int len, size; + char * pB, * p; char t1[8]; + +strcpy(t,"dfxvideo.cfg"); +out = fopen(t,"rb"); + + if (stat(t, &buf) != -1) size = buf.st_size; + else size = 0; + + out = fopen(t,"rb"); + if (!out) { + // defaults + iResX=640;iResY=480; + iColDepth=32; + iWindowMode=1; + iMaintainAspect=0; + UseFrameLimit=0; + UseFrameSkip=0; + iFrameLimit=2; + fFrameRate=200.0f; + dwCfgFixes=0; + iUseFixes=0; + iUseNoStretchBlt=0; + iUseDither=0; + iShowFPS=0; + + size = 0; + pB=(char *)malloc(4096); + memset(pB,0,4096); + } + else { + pB=(char *)malloc(size+4096); + memset(pB,0,size+4096); + + len = fread(pB, 1, size, out); + fclose(out); + } + + SetValue("ResX", iResX); + SetValue("ResY", iResY); + SetValue("NoStretch", iUseNoStretchBlt); + SetValue("Dithering", iUseDither); + SetValue("FullScreen", !iWindowMode); + SetValue("ShowFPS", iShowFPS); + SetValue("Maintain43", iMaintainAspect); + SetValue("UseFrameLimit", UseFrameLimit); + SetValue("UseFrameSkip", UseFrameSkip); + SetValue("FPSDetection", iFrameLimit); + SetFloatValue("FrameRate", fFrameRate); + SetValue("CfgFixes", (unsigned int)dwCfgFixes); + SetValue("UseFixes", iUseFixes); + + out = fopen(t,"wb"); + if (!out) return; + + len = fwrite(pB, 1, size, out); + fclose(out); + + free(pB); +} +#endif \ No newline at end of file diff --git a/plugins/dfxvideo/cfg.h b/plugins/dfxvideo/cfg.h new file mode 100644 index 0000000..05a94e2 --- /dev/null +++ b/plugins/dfxvideo/cfg.h @@ -0,0 +1,28 @@ +/*************************************************************************** + cfg.h - description + ------------------- + begin : Sun Oct 28 2001 + copyright : (C) 2001 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ + +#ifndef _GPU_CFG_H_ +#define _GPU_CFG_H_ + +void ReadGPUConfig(void); +void WriteConfig(void); +void ReadWinSizeConfig(void); + +void SoftDlgProc(void); +void AboutDlgProc(void); + +#endif // _GPU_CFG_H_ diff --git a/plugins/dfxvideo/draw.backup.c b/plugins/dfxvideo/draw.backup.c new file mode 100644 index 0000000..fe7f87a --- /dev/null +++ b/plugins/dfxvideo/draw.backup.c @@ -0,0 +1,2047 @@ +/*************************************************************************** + draw.c - description + ------------------- + begin : Sun Oct 28 2001 + copyright : (C) 2001 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ + +#define _IN_DRAW + +#include "externals.h" +#include "gpu.h" +#include "draw.h" +#include "prim.h" +#include "menu.h" +#include "interp.h" +#include "swap.h" + +// misc globals +int iResX; +int iResY; +long lLowerpart; +BOOL bIsFirstFrame = TRUE; +BOOL bCheckMask = FALSE; +unsigned short sSetMask = 0; +unsigned long lSetMask = 0; +int iDesktopCol = 16; +int iShowFPS = 0; +int iWinSize; +int iMaintainAspect = 0; +int iUseNoStretchBlt = 0; +int iFastFwd = 0; +int iDebugMode = 0; +int iFVDisplay = 0; +PSXPoint_t ptCursorPoint[8]; +unsigned short usCursorActive = 0; + +//unsigned int LUT16to32[65536]; +//unsigned int RGBtoYUV[65536]; + +#include +#include +#include +#include +#include +int xv_port = -1; +int xv_id = -1; +int xv_depth = 0; +int yuv_port = -1; +int yuv_id = -1; +int use_yuv = 0; +int xv_vsync = 0; + +XShmSegmentInfo shminfo; +int finalw,finalh; + +extern XvImage *XvShmCreateImage(Display*, XvPortID, int, char*, int, int, XShmSegmentInfo*); + +#include + +// prototypes +void hq2x_32( unsigned char * srcPtr, DWORD srcPitch, unsigned char * dstPtr, int width, int height); +void hq3x_32( unsigned char * srcPtr, DWORD srcPitch, unsigned char * dstPtr, int width, int height); + +//////////////////////////////////////////////////////////////////////// +// generic 2xSaI helpers +//////////////////////////////////////////////////////////////////////// + +void * pSaISmallBuff=NULL; +void * pSaIBigBuff=NULL; + +#define GET_RESULT(A, B, C, D) ((A != C || A != D) - (B != C || B != D)) + +static __inline int GetResult1(DWORD A, DWORD B, DWORD C, DWORD D, DWORD E) +{ + int x = 0; + int y = 0; + int r = 0; + if (A == C) x+=1; else if (B == C) y+=1; + if (A == D) x+=1; else if (B == D) y+=1; + if (x <= 1) r+=1; + if (y <= 1) r-=1; + return r; +} + +static __inline int GetResult2(DWORD A, DWORD B, DWORD C, DWORD D, DWORD E) +{ + int x = 0; + int y = 0; + int r = 0; + if (A == C) x+=1; else if (B == C) y+=1; + if (A == D) x+=1; else if (B == D) y+=1; + if (x <= 1) r-=1; + if (y <= 1) r+=1; + return r; +} + +#define colorMask8 0x00FEFEFE +#define lowPixelMask8 0x00010101 +#define qcolorMask8 0x00FCFCFC +#define qlowpixelMask8 0x00030303 + +#define INTERPOLATE8(A, B) ((((A & colorMask8) >> 1) + ((B & colorMask8) >> 1) + (A & B & lowPixelMask8))) +#define Q_INTERPOLATE8(A, B, C, D) (((((A & qcolorMask8) >> 2) + ((B & qcolorMask8) >> 2) + ((C & qcolorMask8) >> 2) + ((D & qcolorMask8) >> 2) \ + + ((((A & qlowpixelMask8) + (B & qlowpixelMask8) + (C & qlowpixelMask8) + (D & qlowpixelMask8)) >> 2) & qlowpixelMask8)))) + + +void Super2xSaI_ex8(unsigned char *srcPtr, DWORD srcPitch, + unsigned char *dstBitmap, int width, int height) +{ + DWORD dstPitch = srcPitch<<1; + DWORD srcPitchHalf = srcPitch>>1; + int finWidth = srcPitch>>2; + DWORD line; + DWORD *dP; + DWORD *bP; + int iXA,iXB,iXC,iYA,iYB,iYC,finish; + DWORD color4, color5, color6; + DWORD color1, color2, color3; + DWORD colorA0, colorA1, colorA2, colorA3, + colorB0, colorB1, colorB2, colorB3, + colorS1, colorS2; + DWORD product1a, product1b, + product2a, product2b; + + finalw=width<<1; + finalh=height<<1; + + line = 0; + + { + for (; height; height-=1) + { + bP = (DWORD *)srcPtr; + dP = (DWORD *)(dstBitmap + line*dstPitch); + for (finish = width; finish; finish -= 1 ) + { +//--------------------------------------- B1 B2 +// 4 5 6 S2 +// 1 2 3 S1 +// A1 A2 + if(finish==finWidth) iXA=0; + else iXA=1; + if(finish>4) {iXB=1;iXC=2;} + else + if(finish>3) {iXB=1;iXC=1;} + else {iXB=0;iXC=0;} + if(line==0) {iYA=0;} + else {iYA=finWidth;} + if(height>4) {iYB=finWidth;iYC=srcPitchHalf;} + else + if(height>3) {iYB=finWidth;iYC=finWidth;} + else {iYB=0;iYC=0;} + + colorB0 = *(bP- iYA - iXA); + colorB1 = *(bP- iYA); + colorB2 = *(bP- iYA + iXB); + colorB3 = *(bP- iYA + iXC); + + color4 = *(bP - iXA); + color5 = *(bP); + color6 = *(bP + iXB); + colorS2 = *(bP + iXC); + + color1 = *(bP + iYB - iXA); + color2 = *(bP + iYB); + color3 = *(bP + iYB + iXB); + colorS1= *(bP + iYB + iXC); + + colorA0 = *(bP + iYC - iXA); + colorA1 = *(bP + iYC); + colorA2 = *(bP + iYC + iXB); + colorA3 = *(bP + iYC + iXC); + + if (color2 == color6 && color5 != color3) + { + product2b = product1b = color2; + } + else + if (color5 == color3 && color2 != color6) + { + product2b = product1b = color5; + } + else + if (color5 == color3 && color2 == color6) + { + register int r = 0; + + r += GET_RESULT ((color6&0x00ffffff), (color5&0x00ffffff), (color1&0x00ffffff), (colorA1&0x00ffffff)); + r += GET_RESULT ((color6&0x00ffffff), (color5&0x00ffffff), (color4&0x00ffffff), (colorB1&0x00ffffff)); + r += GET_RESULT ((color6&0x00ffffff), (color5&0x00ffffff), (colorA2&0x00ffffff), (colorS1&0x00ffffff)); + r += GET_RESULT ((color6&0x00ffffff), (color5&0x00ffffff), (colorB2&0x00ffffff), (colorS2&0x00ffffff)); + + if (r > 0) + product2b = product1b = color6; + else + if (r < 0) + product2b = product1b = color5; + else + { + product2b = product1b = INTERPOLATE8(color5, color6); + } + } + else + { + if (color6 == color3 && color3 == colorA1 && color2 != colorA2 && color3 != colorA0) + product2b = Q_INTERPOLATE8 (color3, color3, color3, color2); + else + if (color5 == color2 && color2 == colorA2 && colorA1 != color3 && color2 != colorA3) + product2b = Q_INTERPOLATE8 (color2, color2, color2, color3); + else + product2b = INTERPOLATE8 (color2, color3); + + if (color6 == color3 && color6 == colorB1 && color5 != colorB2 && color6 != colorB0) + product1b = Q_INTERPOLATE8 (color6, color6, color6, color5); + else + if (color5 == color2 && color5 == colorB2 && colorB1 != color6 && color5 != colorB3) + product1b = Q_INTERPOLATE8 (color6, color5, color5, color5); + else + product1b = INTERPOLATE8 (color5, color6); + } + + if (color5 == color3 && color2 != color6 && color4 == color5 && color5 != colorA2) + product2a = INTERPOLATE8(color2, color5); + else + if (color5 == color1 && color6 == color5 && color4 != color2 && color5 != colorA0) + product2a = INTERPOLATE8(color2, color5); + else + product2a = color2; + + if (color2 == color6 && color5 != color3 && color1 == color2 && color2 != colorB2) + product1a = INTERPOLATE8(color2, color5); + else + if (color4 == color2 && color3 == color2 && color1 != color5 && color2 != colorB0) + product1a = INTERPOLATE8(color2, color5); + else + product1a = color5; + + *dP=product1a; + *(dP+1)=product1b; + *(dP+(srcPitchHalf))=product2a; + *(dP+1+(srcPitchHalf))=product2b; + + bP += 1; + dP += 2; + }//end of for ( finish= width etc..) + + line += 2; + srcPtr += srcPitch; + }; //endof: for (; height; height--) + } +} + +//////////////////////////////////////////////////////////////////////// + +void Std2xSaI_ex8(unsigned char *srcPtr, DWORD srcPitch, + unsigned char *dstBitmap, int width, int height) +{ + DWORD dstPitch = srcPitch<<1; + DWORD srcPitchHalf = srcPitch>>1; + int finWidth = srcPitch>>2; + DWORD line; + DWORD *dP; + DWORD *bP; + int iXA,iXB,iXC,iYA,iYB,iYC,finish; + + finalw=width<<1; + finalh=height<<1; + + DWORD colorA, colorB; + DWORD colorC, colorD, + colorE, colorF, colorG, colorH, + colorI, colorJ, colorK, colorL, + colorM, colorN, colorO, colorP; + DWORD product, product1, product2; + + line = 0; + + { + for (; height; height-=1) + { + bP = (DWORD *)srcPtr; + dP = (DWORD *)(dstBitmap + line*dstPitch); + for (finish = width; finish; finish -= 1 ) + { +//--------------------------------------- +// Map of the pixels: I|E F|J +// G|A B|K +// H|C D|L +// M|N O|P + if(finish==finWidth) iXA=0; + else iXA=1; + if(finish>4) {iXB=1;iXC=2;} + else + if(finish>3) {iXB=1;iXC=1;} + else {iXB=0;iXC=0;} + if(line==0) {iYA=0;} + else {iYA=finWidth;} + if(height>4) {iYB=finWidth;iYC=srcPitchHalf;} + else + if(height>3) {iYB=finWidth;iYC=finWidth;} + else {iYB=0;iYC=0;} + + colorI = *(bP- iYA - iXA); + colorE = *(bP- iYA); + colorF = *(bP- iYA + iXB); + colorJ = *(bP- iYA + iXC); + + colorG = *(bP - iXA); + colorA = *(bP); + colorB = *(bP + iXB); + colorK = *(bP + iXC); + + colorH = *(bP + iYB - iXA); + colorC = *(bP + iYB); + colorD = *(bP + iYB + iXB); + colorL = *(bP + iYB + iXC); + + colorM = *(bP + iYC - iXA); + colorN = *(bP + iYC); + colorO = *(bP + iYC + iXB); + colorP = *(bP + iYC + iXC); + + + if((colorA == colorD) && (colorB != colorC)) + { + if(((colorA == colorE) && (colorB == colorL)) || + ((colorA == colorC) && (colorA == colorF) && + (colorB != colorE) && (colorB == colorJ))) + { + product = colorA; + } + else + { + product = INTERPOLATE8(colorA, colorB); + } + + if(((colorA == colorG) && (colorC == colorO)) || + ((colorA == colorB) && (colorA == colorH) && + (colorG != colorC) && (colorC == colorM))) + { + product1 = colorA; + } + else + { + product1 = INTERPOLATE8(colorA, colorC); + } + product2 = colorA; + } + else + if((colorB == colorC) && (colorA != colorD)) + { + if(((colorB == colorF) && (colorA == colorH)) || + ((colorB == colorE) && (colorB == colorD) && + (colorA != colorF) && (colorA == colorI))) + { + product = colorB; + } + else + { + product = INTERPOLATE8(colorA, colorB); + } + + if(((colorC == colorH) && (colorA == colorF)) || + ((colorC == colorG) && (colorC == colorD) && + (colorA != colorH) && (colorA == colorI))) + { + product1 = colorC; + } + else + { + product1=INTERPOLATE8(colorA, colorC); + } + product2 = colorB; + } + else + if((colorA == colorD) && (colorB == colorC)) + { + if (colorA == colorB) + { + product = colorA; + product1 = colorA; + product2 = colorA; + } + else + { + register int r = 0; + product1 = INTERPOLATE8(colorA, colorC); + product = INTERPOLATE8(colorA, colorB); + + r += GetResult1 (colorA&0x00FFFFFF, colorB&0x00FFFFFF, colorG&0x00FFFFFF, colorE&0x00FFFFFF, colorI&0x00FFFFFF); + r += GetResult2 (colorB&0x00FFFFFF, colorA&0x00FFFFFF, colorK&0x00FFFFFF, colorF&0x00FFFFFF, colorJ&0x00FFFFFF); + r += GetResult2 (colorB&0x00FFFFFF, colorA&0x00FFFFFF, colorH&0x00FFFFFF, colorN&0x00FFFFFF, colorM&0x00FFFFFF); + r += GetResult1 (colorA&0x00FFFFFF, colorB&0x00FFFFFF, colorL&0x00FFFFFF, colorO&0x00FFFFFF, colorP&0x00FFFFFF); + + if (r > 0) + product2 = colorA; + else + if (r < 0) + product2 = colorB; + else + { + product2 = Q_INTERPOLATE8(colorA, colorB, colorC, colorD); + } + } + } + else + { + product2 = Q_INTERPOLATE8(colorA, colorB, colorC, colorD); + + if ((colorA == colorC) && (colorA == colorF) && + (colorB != colorE) && (colorB == colorJ)) + { + product = colorA; + } + else + if ((colorB == colorE) && (colorB == colorD) && (colorA != colorF) && (colorA == colorI)) + { + product = colorB; + } + else + { + product = INTERPOLATE8(colorA, colorB); + } + + if ((colorA == colorB) && (colorA == colorH) && + (colorG != colorC) && (colorC == colorM)) + { + product1 = colorA; + } + else + if ((colorC == colorG) && (colorC == colorD) && + (colorA != colorH) && (colorA == colorI)) + { + product1 = colorC; + } + else + { + product1 = INTERPOLATE8(colorA, colorC); + } + } + +////////////////////////// + + *dP=colorA; + *(dP+1)=product; + *(dP+(srcPitchHalf))=product1; + *(dP+1+(srcPitchHalf))=product2; + + bP += 1; + dP += 2; + }//end of for ( finish= width etc..) + + line += 2; + srcPtr += srcPitch; + }; //endof: for (; height; height--) + } +} + +//////////////////////////////////////////////////////////////////////// + +void SuperEagle_ex8(unsigned char *srcPtr, DWORD srcPitch, + unsigned char *dstBitmap, int width, int height) +{ + DWORD dstPitch = srcPitch<<1; + DWORD srcPitchHalf = srcPitch>>1; + int finWidth = srcPitch>>2; + DWORD line; + DWORD *dP; + DWORD *bP; + int iXA,iXB,iXC,iYA,iYB,iYC,finish; + DWORD color4, color5, color6; + DWORD color1, color2, color3; + DWORD colorA1, colorA2, + colorB1, colorB2, + colorS1, colorS2; + DWORD product1a, product1b, + product2a, product2b; + + finalw=width<<1; + finalh=height<<1; + + line = 0; + + { + for (; height; height-=1) + { + bP = (DWORD *)srcPtr; + dP = (DWORD *)(dstBitmap + line*dstPitch); + for (finish = width; finish; finish -= 1 ) + { + if(finish==finWidth) iXA=0; + else iXA=1; + if(finish>4) {iXB=1;iXC=2;} + else + if(finish>3) {iXB=1;iXC=1;} + else {iXB=0;iXC=0;} + if(line==0) {iYA=0;} + else {iYA=finWidth;} + if(height>4) {iYB=finWidth;iYC=srcPitchHalf;} + else + if(height>3) {iYB=finWidth;iYC=finWidth;} + else {iYB=0;iYC=0;} + + colorB1 = *(bP- iYA); + colorB2 = *(bP- iYA + iXB); + + color4 = *(bP - iXA); + color5 = *(bP); + color6 = *(bP + iXB); + colorS2 = *(bP + iXC); + + color1 = *(bP + iYB - iXA); + color2 = *(bP + iYB); + color3 = *(bP + iYB + iXB); + colorS1= *(bP + iYB + iXC); + + colorA1 = *(bP + iYC); + colorA2 = *(bP + iYC + iXB); + + if(color2 == color6 && color5 != color3) + { + product1b = product2a = color2; + if((color1 == color2) || + (color6 == colorB2)) + { + product1a = INTERPOLATE8(color2, color5); + product1a = INTERPOLATE8(color2, product1a); + } + else + { + product1a = INTERPOLATE8(color5, color6); + } + + if((color6 == colorS2) || + (color2 == colorA1)) + { + product2b = INTERPOLATE8(color2, color3); + product2b = INTERPOLATE8(color2, product2b); + } + else + { + product2b = INTERPOLATE8(color2, color3); + } + } + else + if (color5 == color3 && color2 != color6) + { + product2b = product1a = color5; + + if ((colorB1 == color5) || + (color3 == colorS1)) + { + product1b = INTERPOLATE8(color5, color6); + product1b = INTERPOLATE8(color5, product1b); + } + else + { + product1b = INTERPOLATE8(color5, color6); + } + + if ((color3 == colorA2) || + (color4 == color5)) + { + product2a = INTERPOLATE8(color5, color2); + product2a = INTERPOLATE8(color5, product2a); + } + else + { + product2a = INTERPOLATE8(color2, color3); + } + } + else + if (color5 == color3 && color2 == color6) + { + register int r = 0; + + r += GET_RESULT ((color6&0x00ffffff), (color5&0x00ffffff), (color1&0x00ffffff), (colorA1&0x00ffffff)); + r += GET_RESULT ((color6&0x00ffffff), (color5&0x00ffffff), (color4&0x00ffffff), (colorB1&0x00ffffff)); + r += GET_RESULT ((color6&0x00ffffff), (color5&0x00ffffff), (colorA2&0x00ffffff), (colorS1&0x00ffffff)); + r += GET_RESULT ((color6&0x00ffffff), (color5&0x00ffffff), (colorB2&0x00ffffff), (colorS2&0x00ffffff)); + + if (r > 0) + { + product1b = product2a = color2; + product1a = product2b = INTERPOLATE8(color5, color6); + } + else + if (r < 0) + { + product2b = product1a = color5; + product1b = product2a = INTERPOLATE8(color5, color6); + } + else + { + product2b = product1a = color5; + product1b = product2a = color2; + } + } + else + { + product2b = product1a = INTERPOLATE8(color2, color6); + product2b = Q_INTERPOLATE8(color3, color3, color3, product2b); + product1a = Q_INTERPOLATE8(color5, color5, color5, product1a); + + product2a = product1b = INTERPOLATE8(color5, color3); + product2a = Q_INTERPOLATE8(color2, color2, color2, product2a); + product1b = Q_INTERPOLATE8(color6, color6, color6, product1b); + } + +//////////////////////////////// + + *dP=product1a; + *(dP+1)=product1b; + *(dP+(srcPitchHalf))=product2a; + *(dP+1+(srcPitchHalf))=product2b; + + bP += 1; + dP += 2; + }//end of for ( finish= width etc..) + + line += 2; + srcPtr += srcPitch; + }; //endof: for (; height; height--) + } +} + +///////////////////////// + +//#include + +static __inline void scale2x_32_def_whole(uint32_t* dst0, uint32_t* dst1, const uint32_t* src0, const uint32_t* src1, const uint32_t* src2, unsigned count) +{ + + //assert(count >= 2); + + // first pixel + if (src0[0] != src2[0] && src1[0] != src1[1]) { + dst0[0] = src1[0] == src0[0] ? src0[0] : src1[0]; + dst0[1] = src1[1] == src0[0] ? src0[0] : src1[0]; + dst1[0] = src1[0] == src2[0] ? src2[0] : src1[0]; + dst1[1] = src1[1] == src2[0] ? src2[0] : src1[0]; + } else { + dst0[0] = src1[0]; + dst0[1] = src1[0]; + dst1[0] = src1[0]; + dst1[1] = src1[0]; + } + ++src0; + ++src1; + ++src2; + dst0 += 2; + dst1 += 2; + + // central pixels + count -= 2; + while (count) { + if (src0[0] != src2[0] && src1[-1] != src1[1]) { + dst0[0] = src1[-1] == src0[0] ? src0[0] : src1[0]; + dst0[1] = src1[1] == src0[0] ? src0[0] : src1[0]; + dst1[0] = src1[-1] == src2[0] ? src2[0] : src1[0]; + dst1[1] = src1[1] == src2[0] ? src2[0] : src1[0]; + } else { + dst0[0] = src1[0]; + dst0[1] = src1[0]; + dst1[0] = src1[0]; + dst1[1] = src1[0]; + } + + ++src0; + ++src1; + ++src2; + dst0 += 2; + dst1 += 2; + --count; + } + + // last pixel + if (src0[0] != src2[0] && src1[-1] != src1[0]) { + dst0[0] = src1[-1] == src0[0] ? src0[0] : src1[0]; + dst0[1] = src1[0] == src0[0] ? src0[0] : src1[0]; + dst1[0] = src1[-1] == src2[0] ? src2[0] : src1[0]; + dst1[1] = src1[0] == src2[0] ? src2[0] : src1[0]; + } else { + dst0[0] = src1[0]; + dst0[1] = src1[0]; + dst1[0] = src1[0]; + dst1[1] = src1[0]; + } +} + +void Scale2x_ex8(unsigned char *srcPtr, DWORD srcPitch, + unsigned char *dstPtr, int width, int height) +{ + //const int srcpitch = srcPitch; + const int dstPitch = srcPitch<<1; + + int count = height; + + finalw=width<<1; + finalh=height<<1; + + uint32_t *dst0 = (uint32_t *)dstPtr; + uint32_t *dst1 = dst0 + (dstPitch >> 2); + + uint32_t *src0 = (uint32_t *)srcPtr; + uint32_t *src1 = src0 + (srcPitch >> 2); + uint32_t *src2 = src1 + (srcPitch >> 2); + scale2x_32_def_whole(dst0, dst1, src0, src0, src1, width); + + count -= 2; + while(count) { + dst0 += dstPitch >> 1; + dst1 += dstPitch >> 1; + scale2x_32_def_whole(dst0, dst1, src0, src0, src1, width); + src0 = src1; + src1 = src2; + src2 += srcPitch >> 2; + --count; + } + dst0 += dstPitch >> 1; + dst1 += dstPitch >> 1; + scale2x_32_def_whole(dst0, dst1, src0, src1, src1, width); + +} + +//////////////////////////////////////////////////////////////////////// + +static __inline void scale3x_32_def_whole(uint32_t* dst0, uint32_t* dst1, uint32_t* dst2, const uint32_t* src0, const uint32_t* src1, const uint32_t* src2, unsigned count) +{ + //assert(count >= 2); + + //first pixel + if (src0[0] != src2[0] && src1[0] != src1[1]) { + dst0[0] = src1[0]; + dst0[1] = (src1[0] == src0[0] && src1[0] != src0[1]) || (src1[1] == src0[0] && src1[0] != src0[0]) ? src0[0] : src1[0]; + dst0[2] = src1[1] == src0[0] ? src1[1] : src1[0]; + dst1[0] = (src1[0] == src0[0] && src1[0] != src2[0]) || (src1[0] == src2[0] && src1[0] != src0[0]) ? src1[0] : src1[0]; + dst1[1] = src1[0]; + dst1[2] = (src1[1] == src0[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src0[1]) ? src1[1] : src1[0]; + dst2[0] = src1[0]; + dst2[1] = (src1[0] == src2[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src2[0]) ? src2[0] : src1[0]; + dst2[2] = src1[1] == src2[0] ? src1[1] : src1[0]; + } else { + dst0[0] = src1[0]; + dst0[1] = src1[0]; + dst0[2] = src1[0]; + dst1[0] = src1[0]; + dst1[1] = src1[0]; + dst1[2] = src1[0]; + dst2[0] = src1[0]; + dst2[1] = src1[0]; + dst2[2] = src1[0]; + } + ++src0; + ++src1; + ++src2; + dst0 += 3; + dst1 += 3; + dst2 += 3; + + //central pixels + count -= 2; + while (count) { + if (src0[0] != src2[0] && src1[-1] != src1[1]) { + dst0[0] = src1[-1] == src0[0] ? src1[-1] : src1[0]; + dst0[1] = (src1[-1] == src0[0] && src1[0] != src0[1]) || (src1[1] == src0[0] && src1[0] != src0[-1]) ? src0[0] : src1[0]; + dst0[2] = src1[1] == src0[0] ? src1[1] : src1[0]; + dst1[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0]; + dst1[1] = src1[0]; + dst1[2] = (src1[1] == src0[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src0[1]) ? src1[1] : src1[0]; + dst2[0] = src1[-1] == src2[0] ? src1[-1] : src1[0]; + dst2[1] = (src1[-1] == src2[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src2[-1]) ? src2[0] : src1[0]; + dst2[2] = src1[1] == src2[0] ? src1[1] : src1[0]; + } else { + dst0[0] = src1[0]; + dst0[1] = src1[0]; + dst0[2] = src1[0]; + dst1[0] = src1[0]; + dst1[1] = src1[0]; + dst1[2] = src1[0]; + dst2[0] = src1[0]; + dst2[1] = src1[0]; + dst2[2] = src1[0]; + } + + ++src0; + ++src1; + ++src2; + dst0 += 3; + dst1 += 3; + dst2 += 3; + --count; + } + + // last pixel + if (src0[0] != src2[0] && src1[-1] != src1[0]) { + dst0[0] = src1[-1] == src0[0] ? src1[-1] : src1[0]; + dst0[1] = (src1[-1] == src0[0] && src1[0] != src0[0]) || (src1[0] == src0[0] && src1[0] != src0[-1]) ? src0[0] : src1[0]; + dst0[2] = src1[0]; + dst1[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0]; + dst1[1] = src1[0]; + dst1[2] = (src1[0] == src0[0] && src1[0] != src2[0]) || (src1[0] == src2[0] && src1[0] != src0[0]) ? src1[0] : src1[0]; + dst2[0] = src1[-1] == src2[0] ? src1[-1] : src1[0]; + dst2[1] = (src1[-1] == src2[0] && src1[0] != src2[0]) || (src1[0] == src2[0] && src1[0] != src2[-1]) ? src2[0] : src1[0]; + dst2[2] = src1[0]; + } else { + dst0[0] = src1[0]; + dst0[1] = src1[0]; + dst0[2] = src1[0]; + dst1[0] = src1[0]; + dst1[1] = src1[0]; + dst1[2] = src1[0]; + dst2[0] = src1[0]; + dst2[1] = src1[0]; + dst2[2] = src1[0]; + } +} + + +void Scale3x_ex8(unsigned char *srcPtr, DWORD srcPitch, + unsigned char *dstPtr, int width, int height) +{ + int count = height; + + int dstPitch = srcPitch*3; + int dstRowPixels = dstPitch>>2; + + finalw=width*3; + finalh=height*3; + + uint32_t *dst0 = (uint32_t *)dstPtr; + uint32_t *dst1 = dst0 + dstRowPixels; + uint32_t *dst2 = dst1 + dstRowPixels; + + uint32_t *src0 = (uint32_t *)srcPtr; + uint32_t *src1 = src0 + (srcPitch >> 2); + uint32_t *src2 = src1 + (srcPitch >> 2); + scale3x_32_def_whole(dst0, dst1, dst2, src0, src0, src2, width); + + count -= 2; + while(count) { + dst0 += dstRowPixels*3; + dst1 += dstRowPixels*3; + dst2 += dstRowPixels*3; + + scale3x_32_def_whole(dst0, dst1, dst2, src0, src1, src2, width); + src0 = src1; + src1 = src2; + src2 += srcPitch >> 2; + --count; + } + + dst0 += dstRowPixels*3; + dst1 += dstRowPixels*3; + dst2 += dstRowPixels*3; + + scale3x_32_def_whole(dst0, dst1, dst2, src0, src1, src1, width); +} + + +//////////////////////////////////////////////////////////////////////// + +#ifndef MAX +#define MAX(a,b) (((a) > (b)) ? (a) : (b)) +#define MIN(a,b) (((a) < (b)) ? (a) : (b)) +#endif + + +//////////////////////////////////////////////////////////////////////// +// X STUFF :) +//////////////////////////////////////////////////////////////////////// + + +static Cursor cursor; +XVisualInfo vi; +static XVisualInfo *myvisual; +Display *display; +static Colormap colormap; +Window window; +static GC hGC; +static XImage * Ximage; +static XvImage * XCimage; +static XImage * XFimage; +static XImage * XPimage=0 ; +char * Xpixels; +char * pCaptionText; + +static int fx=0; + + +static Atom xv_intern_atom_if_exists( Display *display, char const * atom_name ) +{ + XvAttribute * attributes; + int attrib_count,i; + Atom xv_atom = None; + + attributes = XvQueryPortAttributes( display, xv_port, &attrib_count ); + if( attributes!=NULL ) + { + for ( i = 0; i < attrib_count; ++i ) + { + if ( strcmp(attributes[i].name, atom_name ) == 0 ) + { + xv_atom = XInternAtom( display, atom_name, False ); + break; // found what we want, break out + } + } + XFree( attributes ); + } + + return xv_atom; +} + + + +// close display + +void DestroyDisplay(void) +{ + if(display) + { + XFreeColormap(display, colormap); + if(hGC) + { + XFreeGC(display,hGC); + hGC = 0; + } + if(Ximage) + { + XDestroyImage(Ximage); + Ximage=0; + } + if(XCimage) + { + XFree(XCimage); + XCimage=0; + } + if(XFimage) + { + XDestroyImage(XFimage); + XFimage=0; + } + + XShmDetach(display,&shminfo); + shmdt(shminfo.shmaddr); + shmctl(shminfo.shmid,IPC_RMID,NULL); + + Atom atom_vsync = xv_intern_atom_if_exists(display, "XV_SYNC_TO_VBLANK"); + if (atom_vsync != None) { + XvSetPortAttribute(display, xv_port, atom_vsync, xv_vsync); + } + + XSync(display,False); + + XCloseDisplay(display); + } +} + +static int depth=0; +int root_window_id=0; + + +// Create display + +void CreateDisplay(void) +{ + XSetWindowAttributes winattr; + int myscreen; + Screen * screen; + XEvent event; + XSizeHints hints; + XWMHints wm_hints; + MotifWmHints mwmhints; + Atom mwmatom; + + Atom delwindow; + + XGCValues gcv; + int i; + + int ret, j, p; + int formats; + unsigned int p_num_adaptors=0, p_num_ports=0; + + XvAdaptorInfo *ai; + XvImageFormatValues *fo; + + // Open display + display = XOpenDisplay(NULL); + + if (!display) + { + fprintf (stderr,"Failed to open display!!!\n"); + DestroyDisplay(); + return; + } + + myscreen=DefaultScreen(display); + + // desktop fullscreen switch + if (!iWindowMode) fx = 1; + + screen=DefaultScreenOfDisplay(display); + + root_window_id=RootWindow(display,DefaultScreen(display)); + + //Look for an Xvideo RGB port + ret = XvQueryAdaptors(display, root_window_id, &p_num_adaptors, &ai); + if (ret != Success) { + if (ret == XvBadExtension) + printf("XvBadExtension returned at XvQueryExtension.\n"); + else + if (ret == XvBadAlloc) + printf("XvBadAlloc returned at XvQueryExtension.\n"); + else + printf("other error happaned at XvQueryAdaptors.\n"); + + exit(-1); + } + + depth = DefaultDepth(display, myscreen); + + for (i = 0; i < p_num_adaptors; i++) { + p_num_ports = ai[i].base_id + ai[i].num_ports; + for (p = ai[i].base_id; p < p_num_ports; p++) { + fo = XvListImageFormats(display, p, &formats); + for (j = 0; j < formats; j++) { + //backup YUV mode + //hmm, should I bother check guid == 55595659-0000-0010-8000-00aa00389b71? + //and check byte order? fo[j].byte_order == LSBFirst +#ifdef __BIG_ENDIAN__ + if ( fo[j].type == XvYUV && fo[j].bits_per_pixel == 16 && fo[j].format == XvPacked && strncmp("YUYV", fo[j].component_order, 5) == 0 ) +#else + if ( fo[j].type == XvYUV && fo[j].bits_per_pixel == 16 && fo[j].format == XvPacked && strncmp("UYVY", fo[j].component_order, 5) == 0 ) +#endif + { + yuv_port = p; + yuv_id = fo[j].id; + } + if (fo[j].type == XvRGB && fo[j].bits_per_pixel == 32) + { + xv_port = p; + xv_id = fo[j].id; + xv_depth = fo[j].depth; + printf("RGB mode found. id: %x, depth: %d\n", xv_id, xv_depth); + + if (xv_depth != depth) { + printf("Warning: Depth does not match screen depth (%d)\n", depth); + } + else { + //break out of loops + j = formats; + p = p_num_ports; + i = p_num_adaptors; + } + } + } + if (fo) + XFree(fo); + } + } + if (p_num_adaptors > 0) + XvFreeAdaptorInfo(ai); + if (xv_port == -1 && yuv_port == -1) + { + printf("RGB & YUV not found. Quitting.\n"); + exit(-1); + } + else if (xv_port == -1 && yuv_port != -1) + { + use_yuv = 1; + printf("RGB not found. Using YUV.\n"); + xv_port = yuv_port; + xv_id = yuv_id; + } + else if (xv_depth && xv_depth != depth && yuv_port != -1) + { + use_yuv = 1; + printf("Acceptable RGB mode not found. Using YUV.\n"); + xv_port = yuv_port; + xv_id = yuv_id; + } + + Atom atom_vsync = xv_intern_atom_if_exists(display, "XV_SYNC_TO_VBLANK"); + if (atom_vsync != None) { + XvGetPortAttribute(display, xv_port, atom_vsync, &xv_vsync); + XvSetPortAttribute(display, xv_port, atom_vsync, 0); + } + +myvisual = 0; + +if(XMatchVisualInfo(display,myscreen, depth, TrueColor, &vi)) + myvisual = &vi; + +if (!myvisual) +{ + fprintf(stderr,"Failed to obtain visual!\n"); + DestroyDisplay(); + return; +} + + if(myvisual->red_mask==0x00007c00 && + myvisual->green_mask==0x000003e0 && + myvisual->blue_mask==0x0000001f) + {iColDepth=15;} + else + if(myvisual->red_mask==0x0000f800 && + myvisual->green_mask==0x000007e0 && + myvisual->blue_mask==0x0000001f) + {iColDepth=16;} + else + if(myvisual->red_mask==0x00ff0000 && + myvisual->green_mask==0x0000ff00 && + myvisual->blue_mask==0x000000ff) + {iColDepth=32;} + else + { + iColDepth=0; +/* fprintf(stderr,"COLOR DEPTH NOT SUPPORTED!\n"); + fprintf(stderr,"r: %08lx\n",myvisual->red_mask); + fprintf(stderr,"g: %08lx\n",myvisual->green_mask); + fprintf(stderr,"b: %08lx\n",myvisual->blue_mask); + DestroyDisplay(); + return;*/ + } + + // pffff... much work for a simple blank cursor... oh, well... + if(iWindowMode) cursor=XCreateFontCursor(display,XC_trek); + else + { + Pixmap p1,p2; + XImage * img; + XColor b,w; + char * idata; + XGCValues GCv; + GC GCc; + + memset(&b,0,sizeof(XColor)); + memset(&w,0,sizeof(XColor)); + idata=(char *)malloc(8); + memset(idata,0,8); + + p1=XCreatePixmap(display,RootWindow(display,myvisual->screen),8,8,1); + p2=XCreatePixmap(display,RootWindow(display,myvisual->screen),8,8,1); + + img = XCreateImage(display,myvisual->visual, + 1,XYBitmap,0,idata,8,8,8,1); + + GCv.function = GXcopy; + GCv.foreground = ~0; + GCv.background = 0; + GCv.plane_mask = AllPlanes; + GCc = XCreateGC(display,p1, + (GCFunction|GCForeground|GCBackground|GCPlaneMask),&GCv); + + XPutImage(display, p1,GCc,img,0,0,0,0,8,8); + XPutImage(display, p2,GCc,img,0,0,0,0,8,8); + XFreeGC(display, GCc); + + cursor = XCreatePixmapCursor(display,p1,p2,&b,&w,0,0); + + XFreePixmap(display,p1); + XFreePixmap(display,p2); + XDestroyImage(img); // will free idata as well + } + + colormap=XCreateColormap(display,root_window_id, + myvisual->visual,AllocNone); + + winattr.background_pixel=0; + winattr.border_pixel=WhitePixelOfScreen(screen); + winattr.bit_gravity=ForgetGravity; + winattr.win_gravity=NorthWestGravity; + winattr.backing_store=NotUseful; + + winattr.override_redirect=False; + winattr.save_under=False; + winattr.event_mask=0; + winattr.do_not_propagate_mask=0; + winattr.colormap=colormap; + winattr.cursor=None; + + window=XCreateWindow(display,root_window_id, + 0,0,iResX,iResY, + 0,myvisual->depth, + InputOutput,myvisual->visual, + CWBorderPixel | CWBackPixel | + CWEventMask | CWDontPropagate | + CWColormap | CWCursor, + &winattr); + + if(!window) + { + fprintf(stderr,"Failed in XCreateWindow()!!!\n"); + DestroyDisplay(); + return; + } + + delwindow = XInternAtom(display,"WM_DELETE_WINDOW",0); + XSetWMProtocols(display, window, &delwindow, 1); + + hints.flags=USPosition|USSize; + hints.base_width = iResX; + hints.base_height = iResY; + + wm_hints.input=1; + wm_hints.flags=InputHint; + + XSetWMHints(display,window,&wm_hints); + XSetWMNormalHints(display,window,&hints); + if(pCaptionText) + XStoreName(display,window,pCaptionText); + else XStoreName(display,window,"P.E.Op.S SoftX PSX Gpu"); + + XDefineCursor(display,window,cursor); + + // hack to get rid of window title bar + if (fx) + { + mwmhints.flags=MWM_HINTS_DECORATIONS; + mwmhints.decorations=0; + mwmatom=XInternAtom(display,"_MOTIF_WM_HINTS",0); + XChangeProperty(display,window,mwmatom,mwmatom,32, + PropModeReplace,(unsigned char *)&mwmhints,4); + } + + // key stuff + XSelectInput(display, + window, + FocusChangeMask | ExposureMask | + KeyPressMask | KeyReleaseMask + ); + + XMapRaised(display,window); + XClearWindow(display,window); + XWindowEvent(display,window,ExposureMask,&event); + + if (fx) // fullscreen + { + XResizeWindow(display,window,screen->width,screen->height); + + hints.min_width = hints.max_width = hints.base_width = screen->width; + hints.min_height= hints.max_height = hints.base_height = screen->height; + + XSetWMNormalHints(display,window,&hints); + + // set the window layer for GNOME + { + XEvent xev; + + memset(&xev, 0, sizeof(xev)); + xev.xclient.type = ClientMessage; + xev.xclient.serial = 0; + xev.xclient.send_event = 1; + xev.xclient.message_type = XInternAtom(display, "_NET_WM_STATE", 0); + xev.xclient.window = window; + xev.xclient.format = 32; + xev.xclient.data.l[0] = 1; + xev.xclient.data.l[1] = XInternAtom(display, "_NET_WM_STATE_FULLSCREEN", 0); + xev.xclient.data.l[2] = 0; + xev.xclient.data.l[3] = 0; + xev.xclient.data.l[4] = 0; + + XSendEvent(display, root_window_id, 0, + SubstructureRedirectMask | SubstructureNotifyMask, &xev); + } + } + + gcv.graphics_exposures = False; + hGC = XCreateGC(display,window, + GCGraphicsExposures, &gcv); + if(!hGC) + { + fprintf(stderr,"No gfx context!!!\n"); + DestroyDisplay(); + } + + + + Xpixels = (char *)malloc(220*15*4); + memset(Xpixels,255,220*15*4); + XFimage = XCreateImage(display,myvisual->visual, + depth, ZPixmap, 0, + (char *)Xpixels, + 220, 15, + depth>16 ? 32 : 16, + 0); + + Xpixels = (char *)malloc(8*8*4); + memset(Xpixels,0,8*8*4); + XCimage = XvCreateImage(display,xv_port,xv_id, + (char *)Xpixels, 8, 8); + + +/* +Allocate max that could be needed: +Big(est?) PSX res: 640x512 +32bpp (times 4) +2xsai func= 3xwidth,3xheight += approx 11.8mb +*/ +shminfo.shmid = shmget(IPC_PRIVATE, 640*512*4*3*3, IPC_CREAT | 0777); +shminfo.shmaddr = shmat(shminfo.shmid, 0, 0); +shminfo.readOnly = 0; + + if (!XShmAttach(display, &shminfo)) { + printf("XShmAttach failed !\n"); + exit (-1); + } +} + +void (*p2XSaIFunc) (unsigned char *, DWORD, unsigned char *, int, int); +unsigned char *pBackBuffer = 0; + +void BlitScreen32(unsigned char *surf, int32_t x, int32_t y) +{ + unsigned char *pD; + unsigned int startxy; + uint32_t lu; + unsigned short s; + unsigned short row, column; + unsigned short dx = PreviousPSXDisplay.Range.x1; + unsigned short dy = PreviousPSXDisplay.DisplayMode.y; + + int32_t lPitch = PSXDisplay.DisplayMode.x << 2; + + uint32_t *destpix; + + if (PreviousPSXDisplay.Range.y0) // centering needed? + { + memset(surf, 0, (PreviousPSXDisplay.Range.y0 >> 1) * lPitch); + + dy -= PreviousPSXDisplay.Range.y0; + surf += (PreviousPSXDisplay.Range.y0 >> 1) * lPitch; + + memset(surf + dy * lPitch, + 0, ((PreviousPSXDisplay.Range.y0 + 1) >> 1) * lPitch); + } + + if (PreviousPSXDisplay.Range.x0) + { + for (column = 0; column < dy; column++) + { + destpix = (uint32_t *)(surf + (column * lPitch)); + memset(destpix, 0, PreviousPSXDisplay.Range.x0 << 2); + } + surf += PreviousPSXDisplay.Range.x0 << 2; + } + + if (PSXDisplay.RGB24) + { + for (column = 0; column < dy; column++) + { + startxy = ((1024) * (column + y)) + x; + pD = (unsigned char *)&psxVuw[startxy]; + destpix = (uint32_t *)(surf + (column * lPitch)); + for (row = 0; row < dx; row++) + { + lu = *((uint32_t *)pD); + destpix[row] = + 0xff000000 | (RED(lu) << 16) | (GREEN(lu) << 8) | (BLUE(lu)); + pD += 3; + } + } + } + else + { + for (column = 0;column> 7) & 0xf8)) | 0xff000000; + } + } + } +} + +void BlitToYUV(unsigned char * surf,int32_t x,int32_t y) +{ + unsigned char * pD; + unsigned int startxy; + uint32_t lu;unsigned short s; + unsigned short row,column; + unsigned short dx = PreviousPSXDisplay.Range.x1; + unsigned short dy = PreviousPSXDisplay.DisplayMode.y; + int Y,U,V, R,G,B; + + int32_t lPitch = PSXDisplay.DisplayMode.x << 2; + uint32_t *destpix; + + if (PreviousPSXDisplay.Range.y0) // centering needed? + { + for (column = 0; column < (PreviousPSXDisplay.Range.y0 >> 1); column++) + { + destpix = (uint32_t *)(surf + column * lPitch); + for (row = 0; row < dx; row++) + { + destpix[row] = (4 << 24) | (128 << 16) | (4 << 8) | 128; + } + } + + dy -= PreviousPSXDisplay.Range.y0; + surf += (PreviousPSXDisplay.Range.y0 >> 1) * lPitch; + + for (column = 0; column < (PreviousPSXDisplay.Range.y0 + 1) >> 1; column++) + { + destpix = (uint32_t *)(surf + (dy + column) * lPitch); + for (row = 0; row < dx; row++) + { + destpix[row] = (4 << 24) | (128 << 16) | (4 << 8) | 128; + } + } + } + + if (PreviousPSXDisplay.Range.x0) + { + for (column = 0; column < dy; column++) + { + destpix = (uint32_t *)(surf + (column * lPitch)); + for (row = 0; row < PreviousPSXDisplay.Range.x0; row++) + { + destpix[row] = (4 << 24) | (128 << 16) | (4 << 8) | 128; + } + } + surf += PreviousPSXDisplay.Range.x0 << 2; + } + + if (PSXDisplay.RGB24) + { + for (column = 0; column < dy; column++) + { + startxy = (1024 * (column + y)) + x; + pD = (unsigned char *)&psxVuw[startxy]; + destpix = (uint32_t *)(surf + (column * lPitch)); + for (row = 0; row < dx; row++) + { + lu = *((uint32_t *)pD); + + R = RED(lu); + G = GREEN(lu); + B = BLUE(lu); + + Y = min(abs(R * 2104 + G * 4130 + B * 802 + 4096 + 131072) >> 13, 235); + U = min(abs(R * -1214 + G * -2384 + B * 3598 + 4096 + 1048576) >> 13, 240); + V = min(abs(R * 3598 + G * -3013 + B * -585 + 4096 + 1048576) >> 13, 240); + +#ifdef __BIG_ENDIAN__ + destpix[row] = Y << 24 | U << 16 | Y << 8 | V; +#else + destpix[row] = Y << 24 | V << 16 | Y << 8 | U; +#endif + pD += 3; + } + } + } + else + { + for (column = 0; column < dy; column++) + { + startxy = (1024 * (column + y)) + x; + destpix = (uint32_t *)(surf + (column * lPitch)); + for (row = 0; row < dx; row++) + { + s = GETLE16(&psxVuw[startxy++]); + + R = (s << 3) &0xf8; + G = (s >> 2) &0xf8; + B = (s >> 7) &0xf8; + + Y = min(abs(R * 2104 + G * 4130 + B * 802 + 4096 + 131072) >> 13, 235); + U = min(abs(R * -1214 + G * -2384 + B * 3598 + 4096 + 1048576) >> 13, 240); + V = min(abs(R * 3598 + G * -3013 + B * -585 + 4096 + 1048576) >> 13, 240); + +#ifdef __BIG_ENDIAN__ + destpix[row] = Y << 24 | U << 16 | Y << 8 | V; +#else + destpix[row] = Y << 24 | V << 16 | Y << 8 | U; +#endif + } + } + } +} + +//dst will have half the pitch (32bit to 16bit) +void RGB2YUV(uint32_t *s, int width, int height, uint32_t *d) +{ + int x,y; + int R,G,B, Y1,Y2,U,V; + + for (y=0; y>1; x++) { + R = (*s >> 16) & 0xff; + G = (*s >> 8) & 0xff; + B = *s & 0xff; + s++; + + Y1 = min(abs(R * 2104 + G * 4130 + B * 802 + 4096 + 131072) >> 13, 235); + U = min(abs(R * -1214 + G * -2384 + B * 3598 + 4096 + 1048576) >> 13, 240); + V = min(abs(R * 3598 + G * -3013 + B * -585 + 4096 + 1048576) >> 13, 240); + + R = (*s >> 16) & 0xff; + G = (*s >> 8) & 0xff; + B = *s & 0xff; + s++; + + Y2 = min(abs(R * 2104 + G * 4130 + B * 802 + 4096 + 131072) >> 13, 235); + +#ifdef __BIG_ENDIAN__ + *d = V | Y2 << 8 | U << 16 | Y1 << 24; +#else + *d = U | Y1 << 8 | V << 16 | Y2 << 24; +#endif + d++; + } + } +} + +extern time_t tStart; + +//Note: dest x,y,w,h are both input and output variables +inline void MaintainAspect(unsigned int *dx,unsigned int *dy,unsigned int *dw,unsigned int *dh) +{ + //Currently just 4/3 aspect ratio + int t; + + if (*dw * 3 > *dh * 4) { + t = *dh * 4.0f / 3; //new width aspect + *dx = (*dw - t) / 2; //centering + *dw = t; + } else { + t = *dw * 3.0f / 4; + *dy = (*dh - t) / 2; + *dh = t; + } +} + +void DoBufferSwap(void) +{ + Screen *screen; + Window _dw; + XvImage *xvi; + unsigned int dstx, dsty, srcy = 0; + unsigned int _d, _w, _h; //don't care about _d + + finalw = PSXDisplay.DisplayMode.x; + finalh = PSXDisplay.DisplayMode.y; + + if (finalw == 0 || finalh == 0) + return; + + XSync(display,False); + + if(use_yuv) { + if (iUseNoStretchBlt==0 || finalw > 320 || finalh > 256) { + BlitToYUV((unsigned char *)shminfo.shmaddr, PSXDisplay.DisplayPosition.x, PSXDisplay.DisplayPosition.y); + finalw <<= 1; + } else { + BlitScreen32((unsigned char *)pBackBuffer, PSXDisplay.DisplayPosition.x, PSXDisplay.DisplayPosition.y); + p2XSaIFunc(pBackBuffer, finalw<<2, (unsigned char *)pSaIBigBuff,finalw,finalh); + RGB2YUV( (uint32_t*)pSaIBigBuff, finalw, finalh, (uint32_t*)shminfo.shmaddr); + } + } else if(iUseNoStretchBlt==0 || finalw > 320 || finalh > 256) { + BlitScreen32((unsigned char *)shminfo.shmaddr, PSXDisplay.DisplayPosition.x, PSXDisplay.DisplayPosition.y); + } else { + BlitScreen32((unsigned char *)pBackBuffer, PSXDisplay.DisplayPosition.x, PSXDisplay.DisplayPosition.y); + p2XSaIFunc(pBackBuffer, finalw<<2, (unsigned char *)shminfo.shmaddr,finalw,finalh); + } + + XGetGeometry(display, window, &_dw, (int *)&_d, (int *)&_d, &_w, &_h, &_d, &_d); + if (use_yuv) { + xvi = XvShmCreateImage(display, yuv_port, yuv_id, 0, finalw, finalh, &shminfo); + } else + xvi = XvShmCreateImage(display, xv_port, xv_id, 0, finalw, finalh, &shminfo); + + xvi->data = shminfo.shmaddr; + + screen=DefaultScreenOfDisplay(display); + //screennum = DefaultScreen(display); + + if (!iWindowMode) { + _w = screen->width; + _h = screen->height; + } + + dstx = 0; + dsty = 0; + + if (iMaintainAspect) + MaintainAspect(&dstx, &dsty, &_w, &_h); + + if (ulKeybits&KEY_SHOWFPS) //to avoid flicker, don't paint overtop FPS bar + { + srcy = 15 * finalh / _h; + dsty += 15; + } + + XvShmPutImage(display, xv_port, window, hGC, xvi, + 0,srcy, //src x,y + finalw,finalh, //src w,h + dstx,dsty, //dst x,y + _w,_h, //dst w,h + 1 + ); + + if(ulKeybits&KEY_SHOWFPS) //DisplayText(); // paint menu text + { + if(szDebugText[0] && ((time(NULL) - tStart) < 2)) + { + strcpy(szDispBuf,szDebugText); + } + else + { + szDebugText[0]=0; + strcat(szDispBuf,szMenuBuf); + } + + //XPutImage(display,window,hGC, XFimage, + // 0, 0, 0, 0, 220,15); + XFree(xvi); + xvi = XvCreateImage(display, xv_port, xv_id, XFimage->data, 220, 15); + XvPutImage(display, xv_port, window, hGC, xvi, + 0,0, //src x,y + 220,15, //src w,h + 0,0, //dst x,y + 220,15 //dst w,h + ); + + XDrawString(display,window,hGC,2,13,szDispBuf,strlen(szDispBuf)); + } + + //if(XPimage) DisplayPic(); + + + XFree(xvi); +} + +void DoClearScreenBuffer(void) // CLEAR DX BUFFER +{ + Window _dw; + unsigned int _d, _w, _h; //don't care about _d + + XGetGeometry(display, window, &_dw, (int *)&_d, (int *)&_d, &_w, &_h, &_d, &_d); + + XvPutImage(display, xv_port, window, hGC, XCimage, + 0, 0, 8, 8, 0, 0, _w, _h); + //XSync(display,False); +} + +void DoClearFrontBuffer(void) // CLEAR DX BUFFER +{/* + XPutImage(display,window,hGC, XCimage, + 0, 0, 0, 0, iResX, iResY); + XSync(display,False);*/ +} + +int Xinitialize() +{ + iDesktopCol=32; + + + if(iUseNoStretchBlt>0) + { + pBackBuffer=(unsigned char *)malloc(640*512*sizeof(uint32_t)); + memset(pBackBuffer,0,640*512*sizeof(uint32_t)); + if (use_yuv) { + pSaIBigBuff=malloc(640*512*4*3*3); + memset(pSaIBigBuff,0,640*512*4*3*3); + } + } + + p2XSaIFunc=NULL; + + if(iUseNoStretchBlt==1) + { + p2XSaIFunc=Std2xSaI_ex8; + } + + if(iUseNoStretchBlt==2) + { + p2XSaIFunc=Super2xSaI_ex8; + } + + if(iUseNoStretchBlt==3) + { + p2XSaIFunc=SuperEagle_ex8; + } + + if(iUseNoStretchBlt==4) + { + p2XSaIFunc=Scale2x_ex8; + } + if(iUseNoStretchBlt==5) + { + p2XSaIFunc=Scale3x_ex8; + } + if(iUseNoStretchBlt==6) + { + p2XSaIFunc=hq2x_32; + } + if(iUseNoStretchBlt==7) + { + p2XSaIFunc=hq3x_32; + } + + bUsingTWin=FALSE; + + InitMenu(); + + bIsFirstFrame = FALSE; // done + + if(iShowFPS) + { + iShowFPS=0; + ulKeybits|=KEY_SHOWFPS; + szDispBuf[0]=0; + BuildDispMenu(0); + } + + return 0; +} + +void Xcleanup() // X CLEANUP +{ + CloseMenu(); + + if(iUseNoStretchBlt>0) + { + if(pBackBuffer) free(pBackBuffer); + pBackBuffer=0; + if(pSaIBigBuff) free(pSaIBigBuff); + pSaIBigBuff=0; + } +} + +unsigned long ulInitDisplay(void) +{ + CreateDisplay(); // x stuff + Xinitialize(); // init x + return (unsigned long)display; +} + +void CloseDisplay(void) +{ + Xcleanup(); // cleanup dx + DestroyDisplay(); +} + +void CreatePic(unsigned char * pMem) +{ + unsigned char * p=(unsigned char *)malloc(128*96*4); + unsigned char * ps; int x,y; + + ps=p; + + if(iDesktopCol==16) + { + unsigned short s; + for(y=0;y<96;y++) + { + for(x=0;x<128;x++) + { + s=(*(pMem+0))>>3; + s|=((*(pMem+1))&0xfc)<<3; + s|=((*(pMem+2))&0xf8)<<8; + pMem+=3; + *((unsigned short *)(ps+y*256+x*2))=s; + } + } + } + else + if(iDesktopCol==15) + { + unsigned short s; + for(y=0;y<96;y++) + { + for(x=0;x<128;x++) + { + s=(*(pMem+0))>>3; + s|=((*(pMem+1))&0xfc)<<2; + s|=((*(pMem+2))&0xf8)<<7; + pMem+=3; + *((unsigned short *)(ps+y*256+x*2))=s; + } + } + } + else + if(iDesktopCol==32) + { + uint32_t l; + for(y=0;y<96;y++) + { + for(x=0;x<128;x++) + { + l= *(pMem+0); + l|=(*(pMem+1))<<8; + l|=(*(pMem+2))<<16; + pMem+=3; + *((uint32_t *)(ps+y*512+x*4))=l; + } + } + } + + XPimage = XCreateImage(display,myvisual->visual, + depth, ZPixmap, 0, + (char *)p, + 128, 96, + depth>16 ? 32 : 16, + 0); +} + +void DestroyPic(void) +{ + if(XPimage) + { /* + XPutImage(display,window,hGC, XCimage, + 0, 0, 0, 0, iResX, iResY);*/ + XDestroyImage(XPimage); + XPimage=0; + } +} + +void DisplayPic(void) +{ + XPutImage(display,window,hGC, XPimage, + 0, 0, iResX-128, 0,128,96); +} + +void ShowGpuPic(void) +{ +} + +void ShowTextGpuPic(void) +{ +} + +static void hq2x_32_def(uint32_t * dst0, uint32_t * dst1, const uint32_t * src0, const uint32_t * src1, const uint32_t * src2, unsigned count) +{ + static unsigned char cache_vert_mask[640]; + unsigned char cache_horiz_mask = 0; + + unsigned i; + unsigned char mask; + uint32_t c[9]; + + if (src0 == src1) //processing first row + memset(cache_vert_mask, 0, count); + + for(i=0;i0) { + c[0] = src0[-1]; + c[3] = src1[-1]; + c[6] = src2[-1]; + } else { + c[0] = c[1]; + c[3] = c[4]; + c[6] = c[7]; + } + + if (i> 2); + + uint32_t *src0 = (uint32_t *)srcPtr; + uint32_t *src1 = src0 + (srcPitch >> 2); + uint32_t *src2 = src1 + (srcPitch >> 2); + hq2x_32_def(dst0, dst1, src0, src0, src1, width); + + + count -= 2; + while(count) { + dst0 += dstPitch >> 1; //next 2 lines (dstPitch / 4 char per int * 2) + dst1 += dstPitch >> 1; + hq2x_32_def(dst0, dst1, src0, src1, src2, width); + src0 = src1; + src1 = src2; + src2 += srcPitch >> 2; + --count; + } + dst0 += dstPitch >> 1; + dst1 += dstPitch >> 1; + hq2x_32_def(dst0, dst1, src0, src1, src1, width); +} + +static void hq3x_32_def(uint32_t* dst0, uint32_t* dst1, uint32_t* dst2, const uint32_t* src0, const uint32_t* src1, const uint32_t* src2, unsigned count) +{ + static unsigned char cache_vert_mask[640]; + unsigned char cache_horiz_mask = 0; + + unsigned i; + unsigned char mask; + uint32_t c[9]; + + if (src0 == src1) //processing first row + memset(cache_vert_mask, 0, count); + + for(i=0;i0) { + c[0] = src0[-1]; + c[3] = src1[-1]; + c[6] = src2[-1]; + } else { + c[0] = c[1]; + c[3] = c[4]; + c[6] = c[7]; + } + + if (i>2; + + finalw=width*3; + finalh=height*3; + + uint32_t *dst0 = (uint32_t *)dstPtr; + uint32_t *dst1 = dst0 + dstRowPixels; + uint32_t *dst2 = dst1 + dstRowPixels; + + uint32_t *src0 = (uint32_t *)srcPtr; + uint32_t *src1 = src0 + (srcPitch >> 2); + uint32_t *src2 = src1 + (srcPitch >> 2); + hq3x_32_def(dst0, dst1, dst2, src0, src0, src2, width); + + count -= 2; + while(count) { + dst0 += dstRowPixels * 3; + dst1 += dstRowPixels * 3; + dst2 += dstRowPixels * 3; + + hq3x_32_def(dst0, dst1, dst2, src0, src1, src2, width); + src0 = src1; + src1 = src2; + src2 += srcPitch >> 2; + --count; + } + dst0 += dstRowPixels * 3; + dst1 += dstRowPixels * 3; + dst2 += dstRowPixels * 3; + + hq3x_32_def(dst0, dst1, dst2, src0, src1, src1, width); + +} diff --git a/plugins/dfxvideo/draw.c b/plugins/dfxvideo/draw.c new file mode 100644 index 0000000..4336036 --- /dev/null +++ b/plugins/dfxvideo/draw.c @@ -0,0 +1,275 @@ +/*************************************************************************** + draw.c - description + ------------------- + begin : Sun Oct 28 2001 + copyright : (C) 2001 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ + +#define _IN_DRAW + +#include "externals.h" +#include "gpu.h" +#include "draw.h" +#include "prim.h" +#include "menu.h" +#include "interp.h" +#include "swap.h" + +// misc globals +int iResX; +int iResY; +long lLowerpart; +BOOL bIsFirstFrame = TRUE; +BOOL bCheckMask = FALSE; +unsigned short sSetMask = 0; +unsigned long lSetMask = 0; +int iDesktopCol = 16; +int iShowFPS = 0; +int iWinSize; +int iMaintainAspect = 0; +int iUseNoStretchBlt = 0; +int iFastFwd = 0; +int iDebugMode = 0; +int iFVDisplay = 0; +PSXPoint_t ptCursorPoint[8]; +unsigned short usCursorActive = 0; + +//unsigned int LUT16to32[65536]; +//unsigned int RGBtoYUV[65536]; + +#include + +#include +#include + +int xv_port = -1; +int xv_id = -1; +int xv_depth = 0; +int yuv_port = -1; +int yuv_id = -1; +int use_yuv = 0; +int xv_vsync = 0; + +int finalw,finalh; + + +#include + + +static SDL_Surface *sdl_display; +static SDL_Surface *sdl_ximage; + + + +char * Xpixels; +char * pCaptionText; + +static int fx=0; + + + +// close display + +void DestroyDisplay(void) +{ + SDL_FreeSurface(sdl_ximage); + SDL_FreeSurface(sdl_display); + SDL_Quit(); + +} + +static int depth=32; +int root_window_id=0; + + +// Create display +SDL_Rect srcrect; +SDL_Rect dstrect; +void CreateDisplay(void) +{ +if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK)<0) + { + printf ("(x) Failed to Init SDL!!!\n"); + } +else { + printf("sdl subsystem ok\n"); + sdl_display = SDL_SetVideoMode(iResX,iResY, depth,SDL_HWSURFACE); + sdl_ximage= SDL_CreateRGBSurface(SDL_HWSURFACE,iResX,iResY,depth,0x00ff0000,0x0000ff00,0x000000ff,0); +} + +} + + +void BlitSDL32(SDL_Surface *surface, int32_t x, int32_t y) +{ + unsigned char *pD; + unsigned int startxy; + uint32_t lu, lr, lg, lb; + unsigned short s; + unsigned short row, column; + unsigned short dx = PreviousPSXDisplay.Range.x1; + unsigned short dy = PreviousPSXDisplay.DisplayMode.y; + + int32_t lPitch = surface->pitch;//PSXDisplay.DisplayMode.x << 2; + + uint32_t *destpix; +/* + if (PreviousPSXDisplay.Range.y0) // centering needed? + { + memset(surf, 0, (PreviousPSXDisplay.Range.y0 >> 1) * lPitch); + + dy -= PreviousPSXDisplay.Range.y0; + surf += (PreviousPSXDisplay.Range.y0 >> 1) * lPitch; + + memset(surf + dy * lPitch, + 0, ((PreviousPSXDisplay.Range.y0 + 1) >> 1) * lPitch); + } + + + if (PreviousPSXDisplay.Range.x0) + { + for (column = 0; column < dy; column++) + { + destpix = (uint32_t *)(surf + (column * lPitch)); + memset(destpix, 0, PreviousPSXDisplay.Range.x0 << 2); + } + surf += PreviousPSXDisplay.Range.x0 << 2; + } + */ + if (SDL_MUSTLOCK(surface)) SDL_LockSurface(surface); + if (PSXDisplay.RGB24) + { + //printf("blt 1\n"); + for (column = 0; column < dy; column++) + { + startxy = ((1024) * (column + y)) + x; + //pD = (unsigned char *)&psxVuw[startxy]; + pD = &psxVub[startxy*2]; + destpix = (uint32_t *)(surface->pixels + (column * lPitch)); + for (row = 0; row < dx; row++) + { + //printf("column %d %d %d\n",column, dy, row); + + lr = pD[0]; + lg = pD[1]; + lb = pD[2]; + #ifdef __EMSCRIPTEN__ + destpix[row] = + 0xff000000 | (lb << 16) | (lg << 8) | (lr); + #else + destpix[row] = + 0xff000000 | (lr << 16) | (lg << 8) | (lb); + #endif + + pD += 3; + } + } + } + else + { + //printf("blt 2\n"); + for (column = 0;columnpixels + (column * lPitch)); + for (row = 0; row < dx; row++) + { + //printf("blt row %d\n", row); + s = GETLE16(&psxVuw[startxy++]); + //printf("blt s %d\n", s); + #ifdef __EMSCRIPTEN__ + destpix[row] = + (((s << 3) & 0xf8) | ((s << 6) & 0xf800) | ((s << 9) & 0xf80000)) | 0xff000000; + #else + destpix[row] = + (((s << 19) & 0xf80000) | ((s << 6) & 0xf800) | ((s >> 7) & 0xf8)) | 0xff000000; + #endif + //printf("blt d %x\n", destpix[row]); + } + } + } + if (SDL_MUSTLOCK(surface)) SDL_UnlockSurface(surface); + //printf("blt 3\n"); +} +extern time_t tStart; + +//Note: dest x,y,w,h are both input and output variables +inline void MaintainAspect(unsigned int *dx,unsigned int *dy,unsigned int *dw,unsigned int *dh) +{ + //Currently just 4/3 aspect ratio + int t; + + if (*dw * 3 > *dh * 4) { + t = *dh * 4.0f / 3; //new width aspect + *dx = (*dw - t) / 2; //centering + *dw = t; + } else { + t = *dw * 3.0f / 4; + *dy = (*dh - t) / 2; + *dh = t; + } +} + + +void DoBufferSwap(void) +{ +#ifdef __EMSCRIPTEN__ + BlitSDL32(sdl_ximage, PSXDisplay.DisplayPosition.x, PSXDisplay.DisplayPosition.y); + SDL_Flip(sdl_ximage); + dstrect.x=0; + dstrect.y=0; + dstrect.w=iResX; + dstrect.h=iResY; + srcrect.x=0; + srcrect.y=0; + srcrect.w=PSXDisplay.DisplayMode.x; + srcrect.h=PSXDisplay.DisplayMode.y; + SDL_BlitScaled(sdl_ximage, &srcrect, sdl_display, &dstrect); +#else + BlitSDL32(sdl_display, PSXDisplay.DisplayPosition.x, PSXDisplay.DisplayPosition.y); +#endif + SDL_Flip(sdl_display); +} + +void DoClearScreenBuffer(void) // CLEAR DX BUFFER +{ + +} + +void DoClearFrontBuffer(void) // CLEAR DX BUFFER +{ +} + +unsigned long ulInitDisplay(void) +{ + CreateDisplay(); // x stuff + return (unsigned long) 1; +} + +void CloseDisplay(void) +{ + DestroyDisplay(); +} + + + + +void ShowGpuPic(void) +{ +} + +void ShowTextGpuPic(void) +{ +} diff --git a/plugins/dfxvideo/draw.h b/plugins/dfxvideo/draw.h new file mode 100644 index 0000000..2454a1f --- /dev/null +++ b/plugins/dfxvideo/draw.h @@ -0,0 +1,46 @@ +/*************************************************************************** + draw.h - description + ------------------- + begin : Sun Oct 28 2001 + copyright : (C) 2001 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ + +#ifndef _GPU_DRAW_H_ +#define _GPU_DRAW_H_ + +void DoBufferSwap(void); +void DoClearScreenBuffer(void); +void DoClearFrontBuffer(void); +unsigned long ulInitDisplay(void); +void CloseDisplay(void); +void CreatePic(unsigned char * pMem); +void DestroyPic(void); +void DisplayPic(void); +void ShowGpuPic(void); +void ShowTextGpuPic(void); + +typedef struct { +#define MWM_HINTS_DECORATIONS 2 + long flags; + long functions; + long decorations; + long input_mode; +} MotifWmHints; + +#ifdef _WINDOWS +void MoveScanLineArea(HWND hwnd); +#endif + +/////////////////////////////////////////////////////////////////////// + +#endif // _GPU_DRAW_H_ diff --git a/plugins/dfxvideo/externals.h b/plugins/dfxvideo/externals.h new file mode 100644 index 0000000..531e7a3 --- /dev/null +++ b/plugins/dfxvideo/externals.h @@ -0,0 +1,307 @@ +/*************************************************************************** + externals.h - description + ------------------- + begin : Sun Oct 28 2001 + copyright : (C) 2001 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ + +#define INFO_TW 0 +#define INFO_DRAWSTART 1 +#define INFO_DRAWEND 2 +#define INFO_DRAWOFF 3 + +#define SHADETEXBIT(x) ((x>>24) & 0x1) +#define SEMITRANSBIT(x) ((x>>25) & 0x1) +#define PSXRGB(r,g,b) ((g<<10)|(b<<5)|r) + +#define DATAREGISTERMODES unsigned short + +#define DR_NORMAL 0 +#define DR_VRAMTRANSFER 1 + + +#define GPUSTATUS_ODDLINES 0x80000000 +#define GPUSTATUS_DMABITS 0x60000000 // Two bits +#define GPUSTATUS_READYFORCOMMANDS 0x10000000 +#define GPUSTATUS_READYFORVRAM 0x08000000 +#define GPUSTATUS_IDLE 0x04000000 +#define GPUSTATUS_DISPLAYDISABLED 0x00800000 +#define GPUSTATUS_INTERLACED 0x00400000 +#define GPUSTATUS_RGB24 0x00200000 +#define GPUSTATUS_PAL 0x00100000 +#define GPUSTATUS_DOUBLEHEIGHT 0x00080000 +#define GPUSTATUS_WIDTHBITS 0x00070000 // Three bits +#define GPUSTATUS_MASKENABLED 0x00001000 +#define GPUSTATUS_MASKDRAWN 0x00000800 +#define GPUSTATUS_DRAWINGALLOWED 0x00000400 +#define GPUSTATUS_DITHER 0x00000200 + +#define GPUIsBusy (lGPUstatusRet &= ~GPUSTATUS_IDLE) +#define GPUIsIdle (lGPUstatusRet |= GPUSTATUS_IDLE) + +#define GPUIsNotReadyForCommands (lGPUstatusRet &= ~GPUSTATUS_READYFORCOMMANDS) +#define GPUIsReadyForCommands (lGPUstatusRet |= GPUSTATUS_READYFORCOMMANDS) + +#define __inline inline +#define CALLBACK + +#include +#include +#include +#include +#include +#include + +///////////////////////////////////////////////////////////////////////////// + +typedef struct VRAMLOADTTAG +{ + short x; + short y; + short Width; + short Height; + short RowsRemaining; + short ColsRemaining; + unsigned short *ImagePtr; +} VRAMLoad_t; + +///////////////////////////////////////////////////////////////////////////// + +typedef struct PSXPOINTTAG +{ + int32_t x; + int32_t y; +} PSXPoint_t; + +typedef struct PSXSPOINTTAG +{ + short x; + short y; +} PSXSPoint_t; + +typedef struct PSXRECTTAG +{ + short x0; + short x1; + short y0; + short y1; +} PSXRect_t; + +// linux defines for some windows stuff + +#define FALSE 0 +#define TRUE 1 +#define BOOL unsigned short +#define LOWORD(l) ((unsigned short)(l)) +#define HIWORD(l) ((unsigned short)(((uint32_t)(l) >> 16) & 0xFFFF)) +#define max(a,b) (((a) > (b)) ? (a) : (b)) +#define min(a,b) (((a) < (b)) ? (a) : (b)) +#define DWORD uint32_t +#define __int64 long long int + +typedef struct RECTTAG +{ + int left; + int top; + int right; + int bottom; +}RECT; + + + +///////////////////////////////////////////////////////////////////////////// + +typedef struct TWINTAG +{ + PSXRect_t Position; +} TWin_t; + +///////////////////////////////////////////////////////////////////////////// + +typedef struct PSXDISPLAYTAG +{ + PSXPoint_t DisplayModeNew; + PSXPoint_t DisplayMode; + PSXPoint_t DisplayPosition; + PSXPoint_t DisplayEnd; + + int32_t Double; + int32_t Height; + int32_t PAL; + int32_t InterlacedNew; + int32_t Interlaced; + int32_t RGB24New; + int32_t RGB24; + PSXSPoint_t DrawOffset; + int32_t Disabled; + PSXRect_t Range; + +} PSXDisplay_t; + +///////////////////////////////////////////////////////////////////////////// + +// draw.c + +#ifndef _IN_DRAW + +extern char * pCaptionText; + +extern int iResX; +extern int iResY; +extern int32_t GlobalTextAddrX,GlobalTextAddrY,GlobalTextTP; +extern int32_t GlobalTextREST,GlobalTextABR,GlobalTextPAGE; +extern short ly0,lx0,ly1,lx1,ly2,lx2,ly3,lx3; +extern long lLowerpart; +extern BOOL bIsFirstFrame; +extern int iWinSize; +extern BOOL bCheckMask; +extern unsigned short sSetMask; +extern unsigned long lSetMask; +extern BOOL bDeviceOK; +extern short g_m1; +extern short g_m2; +extern short g_m3; +extern short DrawSemiTrans; +extern int iUseGammaVal; +extern int iMaintainAspect; +extern int iDesktopCol; +extern int iUseNoStretchBlt; +extern int iShowFPS; +extern int iFastFwd; +extern int iDebugMode; +extern int iFVDisplay; +extern PSXPoint_t ptCursorPoint[]; +extern unsigned short usCursorActive; + + +#endif + +// prim.c + +#ifndef _IN_PRIMDRAW + +extern BOOL bUsingTWin; +extern TWin_t TWin; +//extern unsigned long clutid; +extern void (*primTableJ[256])(unsigned char *); +extern void (*primTableSkip[256])(unsigned char *); +extern unsigned short usMirror; +extern int iDither; +extern uint32_t dwCfgFixes; +extern uint32_t dwActFixes; +extern uint32_t dwEmuFixes; +extern int iUseFixes; +extern int iUseDither; +extern BOOL bDoVSyncUpdate; +extern int32_t drawX; +extern int32_t drawY; +extern int32_t drawW; +extern int32_t drawH; + +#endif + +// gpu.c + +#ifndef _IN_GPU + +extern VRAMLoad_t VRAMWrite; +extern VRAMLoad_t VRAMRead; +extern DATAREGISTERMODES DataWriteMode; +extern DATAREGISTERMODES DataReadMode; +extern int iColDepth; +extern int iWindowMode; +extern char szDispBuf[]; +extern char szMenuBuf[]; +extern char szDebugText[]; +extern short sDispWidths[]; +extern BOOL bDebugText; +//extern unsigned int iMaxDMACommandCounter; +//extern unsigned long dwDMAChainStop; +extern PSXDisplay_t PSXDisplay; +extern PSXDisplay_t PreviousPSXDisplay; +extern BOOL bSkipNextFrame; +extern long lGPUstatusRet; +//extern long drawingLines; +extern unsigned char * psxVSecure; +extern unsigned char * psxVub; +extern signed char * psxVsb; +extern unsigned short * psxVuw; +extern signed short * psxVsw; +extern uint32_t * psxVul; +extern int32_t * psxVsl; +extern unsigned short * psxVuw_eom; +extern BOOL bChangeWinMode; +extern long lSelectedSlot; +extern BOOL bInitCap; +extern DWORD dwLaceCnt; +extern uint32_t lGPUInfoVals[]; +extern uint32_t ulStatusControl[]; + +#endif + +// menu.c + +#ifndef _IN_MENU + +extern uint32_t dwCoreFlags; + +#endif + +// key.c + +#ifndef _IN_KEY + +extern unsigned long ulKeybits; + +#endif + +// fps.c + +#ifndef _IN_FPS + +extern int UseFrameLimit; +extern int UseFrameSkip; +extern float fFrameRate; +extern int iFrameLimit; +extern float fFrameRateHz; +extern float fps_skip; +extern float fps_cur; + +#endif + +// key.c + +#ifndef _IN_KEY + +#endif + +// cfg.c + +#ifndef _IN_CFG + + +#endif + +// zn.c + +#ifndef _IN_ZN + +extern uint32_t dwGPUVersion; +extern int iGPUHeight; +extern int iGPUHeightMask; +extern int GlobalTextIL; +extern int iTileCheat; + +#endif + + diff --git a/plugins/dfxvideo/fps.c b/plugins/dfxvideo/fps.c new file mode 100644 index 0000000..2edcd30 --- /dev/null +++ b/plugins/dfxvideo/fps.c @@ -0,0 +1,357 @@ +/*************************************************************************** + fps.c - description + ------------------- + begin : Sun Oct 28 2001 + copyright : (C) 2001 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ + +#define _IN_FPS + +#include + +#include "externals.h" +#include "fps.h" +#include "gpu.h" + +// FPS stuff +float fFrameRateHz=0; +DWORD dwFrameRateTicks=16; +float fFrameRate; +int iFrameLimit; +int UseFrameLimit=0; +int UseFrameSkip=0; + +// FPS skipping / limit +BOOL bInitCap = TRUE; +float fps_skip = 0; +float fps_cur = 0; + +#define MAXLACE 16 + +void CheckFrameRate(void) +{ + if(UseFrameSkip) // skipping mode? + { + if(!(dwActFixes&0x80)) // not old skipping mode? + { + dwLaceCnt++; // -> store cnt of vsync between frames + if(dwLaceCnt>=MAXLACE && UseFrameLimit) // -> if there are many laces without screen toggling, + { // do std frame limitation + if(dwLaceCnt==MAXLACE) bInitCap=TRUE; + FrameCap(); + } + } + else if(UseFrameLimit) FrameCap(); + calcfps(); // -> calc fps display in skipping mode + } + else // non-skipping mode: + { + if(UseFrameLimit) FrameCap(); // -> do it + if(ulKeybits&KEY_SHOWFPS) calcfps(); // -> and calc fps display + } +} + +#define TIMEBASE 100000 + +unsigned long timeGetTime() +{ + struct timeval tv; + gettimeofday(&tv, 0); // well, maybe there are better ways + return tv.tv_sec * 100000 + tv.tv_usec/10; // to do that, but at least it works +} + +void FrameCap (void) +{ + static unsigned long curticks, lastticks, _ticks_since_last_update; + static unsigned int TicksToWait = 0; + int overslept=0, tickstogo=0; + BOOL Waiting = TRUE; + + { + curticks = timeGetTime(); + _ticks_since_last_update = curticks - lastticks; + + if((_ticks_since_last_update > TicksToWait) || + (curticks dwFrameRateTicks) + TicksToWait=0; + else + TicksToWait=dwFrameRateTicks - overslept; + } + else + { + while (Waiting) + { + curticks = timeGetTime(); + _ticks_since_last_update = curticks - lastticks; + tickstogo = TicksToWait - _ticks_since_last_update; + if ((_ticks_since_last_update > TicksToWait) || + (curticks < lastticks) || tickstogo < overslept) + { + Waiting = FALSE; + lastticks = curticks; + overslept = _ticks_since_last_update - TicksToWait; + TicksToWait = dwFrameRateTicks - overslept; + return; + } + if (tickstogo >= 200 && !(dwActFixes&16)) + usleep(tickstogo*10 - 200); + } + } + } +} + +#define MAXSKIP 120 + +void FrameSkip(void) +{ + static int iNumSkips=0,iAdditionalSkip=0; // number of additional frames to skip + static DWORD dwLastLace=0; // helper var for frame limitation + static DWORD curticks, lastticks, _ticks_since_last_update; + int tickstogo=0; + static int overslept=0; + + if(!dwLaceCnt) return; // important: if no updatelace happened, we ignore it completely + + if(iNumSkips) // we are in skipping mode? + { + dwLastLace+=dwLaceCnt; // -> calc frame limit helper (number of laces) + bSkipNextFrame = TRUE; // -> we skip next frame + iNumSkips--; // -> ok, one done + } + else // ok, no additional skipping has to be done... + { // we check now, if some limitation is needed, or a new skipping has to get started + DWORD dwWaitTime; + + if(bInitCap || bSkipNextFrame) // first time or we skipped before? + { + if(UseFrameLimit && !bInitCap) // frame limit wanted and not first time called? + { + DWORD dwT=_ticks_since_last_update; // -> that's the time of the last drawn frame + dwLastLace+=dwLaceCnt; // -> and that's the number of updatelace since the start of the last drawn frame + + curticks = timeGetTime(); // -> now we calc the time of the last drawn frame + the time we spent skipping + _ticks_since_last_update= dwT+curticks - lastticks; + + dwWaitTime=dwLastLace*dwFrameRateTicks; // -> and now we calc the time the real psx would have needed + + if(_ticks_since_last_update we were too fast? + { + if((dwWaitTime-_ticks_since_last_update)> // -> some more security, to prevent + (60*dwFrameRateTicks)) // wrong waiting times + _ticks_since_last_update=dwWaitTime; + + while(_ticks_since_last_update loop until we have reached the real psx time + { // (that's the additional limitation, yup) + curticks = timeGetTime(); + _ticks_since_last_update = dwT+curticks - lastticks; + } + } + else // we were still too slow ?!!? + { + if(iAdditionalSkip well, somewhen we really have to stop skipping on very slow systems + { + iAdditionalSkip++; // -> inc our watchdog var + dwLaceCnt=0; // -> reset lace count + lastticks = timeGetTime(); + return; // -> done, we will skip next frame to get more speed + } + } + } + + bInitCap=FALSE; // -> ok, we have inited the frameskip func + iAdditionalSkip=0; // -> init additional skip + bSkipNextFrame=FALSE; // -> we don't skip the next frame + lastticks = timeGetTime(); // -> we store the start time of the next frame + dwLaceCnt=0; // -> and we start to count the laces + dwLastLace=0; + _ticks_since_last_update=0; + return; // -> done, the next frame will get drawn + } + + bSkipNextFrame=FALSE; // init the frame skip signal to 'no skipping' first + + curticks = timeGetTime(); // get the current time (we are now at the end of one drawn frame) + _ticks_since_last_update = curticks - lastticks; + + dwLastLace=dwLaceCnt; // store curr count (frame limitation helper) + dwWaitTime=dwLaceCnt*dwFrameRateTicks; // calc the 'real psx lace time' + if (dwWaitTime >= overslept) + dwWaitTime-=overslept; + + if(_ticks_since_last_update>dwWaitTime) // hey, we needed way too long for that frame... + { + if(UseFrameLimit) // if limitation, we skip just next frame, + { // and decide after, if we need to do more + iNumSkips=0; + } + else + { + iNumSkips=_ticks_since_last_update/dwWaitTime; // -> calc number of frames to skip to catch up + iNumSkips--; // -> since we already skip next frame, one down + if(iNumSkips>MAXSKIP) iNumSkips=MAXSKIP; // -> well, somewhere we have to draw a line + } + bSkipNextFrame = TRUE; // -> signal for skipping the next frame + } + else // we were faster than real psx? fine :) + if(UseFrameLimit) // frame limit used? so we wait til the 'real psx time' has been reached + { + if(dwLaceCnt>MAXLACE) // -> security check + _ticks_since_last_update=dwWaitTime; + + while(_ticks_since_last_update just do a waiting loop... + { + curticks = timeGetTime(); + _ticks_since_last_update = curticks - lastticks; + + tickstogo = dwWaitTime - _ticks_since_last_update; + if (tickstogo-overslept >= 200 && !(dwActFixes&16)) + usleep(tickstogo*10 - 200); + } + } + overslept = _ticks_since_last_update - dwWaitTime; + if (overslept < 0) + overslept = 0; + lastticks = timeGetTime(); // ok, start time of the next frame + } + + dwLaceCnt=0; // init lace counter +} + +void calcfps(void) +{ + static unsigned long curticks,_ticks_since_last_update,lastticks; + static long fps_cnt = 0; + static unsigned long fps_tck = 1; + static long fpsskip_cnt = 0; + static unsigned long fpsskip_tck = 1; + + { + curticks = timeGetTime(); + _ticks_since_last_update=curticks-lastticks; + + if(UseFrameSkip && !UseFrameLimit && _ticks_since_last_update) + fps_skip=min(fps_skip,((float)TIMEBASE/(float)_ticks_since_last_update+1.0f)); + + lastticks = curticks; + } + + if(UseFrameSkip && UseFrameLimit) + { + fpsskip_tck += _ticks_since_last_update; + + if(++fpsskip_cnt==2) + { + fps_skip = (float)2000/(float)fpsskip_tck; + fps_skip +=6.0f; + fpsskip_cnt = 0; + fpsskip_tck = 1; + } + } + + fps_tck += _ticks_since_last_update; + + if(++fps_cnt==20) + { + fps_cur = (float)(TIMEBASE*20)/(float)fps_tck; + + fps_cnt = 0; + fps_tck = 1; + + //if(UseFrameLimit && fps_cur>fFrameRateHz) // optical adjust ;) avoids flickering fps display + //fps_cur=fFrameRateHz; + } + +} + +void PCFrameCap (void) +{ + static unsigned long curticks, lastticks, _ticks_since_last_update; + static unsigned long TicksToWait = 0; + BOOL Waiting = TRUE; + + while (Waiting) + { + curticks = timeGetTime(); + _ticks_since_last_update = curticks - lastticks; + if ((_ticks_since_last_update > TicksToWait) || + (curticks < lastticks)) + { + Waiting = FALSE; + lastticks = curticks; + TicksToWait = (TIMEBASE/ (unsigned long)fFrameRateHz); + } + } +} + +void PCcalcfps(void) +{ + static unsigned long curticks,_ticks_since_last_update,lastticks; + static long fps_cnt = 0; + static float fps_acc = 0; + float CurrentFPS=0; + + curticks = timeGetTime(); + _ticks_since_last_update=curticks-lastticks; + if(_ticks_since_last_update) + CurrentFPS=(float)TIMEBASE/(float)_ticks_since_last_update; + else CurrentFPS = 0; + lastticks = curticks; + + fps_acc += CurrentFPS; + + if(++fps_cnt==10) + { + fps_cur = fps_acc / 10; + fps_acc = 0; + fps_cnt = 0; + } + + fps_skip=CurrentFPS+1.0f; +} + +void SetAutoFrameCap(void) +{ + if(iFrameLimit==1) + { + fFrameRateHz = fFrameRate; + dwFrameRateTicks=(TIMEBASE*100 / (unsigned long)(fFrameRateHz*100)); + return; + } + + if(dwActFixes&32) + { + if (PSXDisplay.Interlaced) + fFrameRateHz = PSXDisplay.PAL?50.0f:60.0f; + else fFrameRateHz = PSXDisplay.PAL?25.0f:30.0f; + } + else + { + fFrameRateHz = PSXDisplay.PAL?50.0f:59.94f; + dwFrameRateTicks=(TIMEBASE*100 / (unsigned long)(fFrameRateHz*100)); + } +} + +void SetFPSHandler(void) +{ +} + +void InitFPS(void) +{ + if(!fFrameRate) fFrameRate=200.0f; + if(fFrameRateHz==0) fFrameRateHz=fFrameRate; // set user framerate + dwFrameRateTicks=(TIMEBASE / (unsigned long)fFrameRateHz); +} diff --git a/plugins/dfxvideo/fps.h b/plugins/dfxvideo/fps.h new file mode 100644 index 0000000..ff7e72b --- /dev/null +++ b/plugins/dfxvideo/fps.h @@ -0,0 +1,31 @@ +/*************************************************************************** + fps.h - description + ------------------- + begin : Sun Oct 28 2001 + copyright : (C) 2001 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ + +#ifndef _FPS_INTERNALS_H +#define _FPS_INTERNALS_H + +void FrameCap(void); +void FrameSkip(void); +void calcfps(void); +void PCFrameCap (void); +void PCcalcfps(void); +void SetAutoFrameCap(void); +void SetFPSHandler(void); +void InitFPS(void); +void CheckFrameRate(void); + +#endif // _FPS_INTERNALS_H diff --git a/plugins/dfxvideo/gpu.c b/plugins/dfxvideo/gpu.c new file mode 100644 index 0000000..728fdb8 --- /dev/null +++ b/plugins/dfxvideo/gpu.c @@ -0,0 +1,1560 @@ +/*************************************************************************** + gpu.c - description + ------------------- + begin : Sun Oct 28 2001 + copyright : (C) 2001 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ + +#ifndef _MACGL +#include "config.h" +#endif + +#define _IN_GPU + +#include "externals.h" +#include "gpu.h" +#include "draw.h" +#include "cfg.h" +#include "prim.h" +#include "stdint.h" +#include "psemu_plugin_defs.h" +#include "menu.h" +#include "key.h" +#include "fps.h" +#include "swap.h" + +#ifdef ENABLE_NLS +#include +#include +#define _(x) gettext(x) +#define N_(x) (x) +#else +#define _(x) (x) +#define N_(x) (x) +#endif + +//////////////////////////////////////////////////////////////////////// +// PPDK developer must change libraryName field and can change revision and build +//////////////////////////////////////////////////////////////////////// + +static const unsigned char version = 1; // do not touch - library for PSEmu 1.x +static const unsigned char revision = 1; +static const unsigned char build = 17; // increase that with each version + +#ifdef _MACGL +static char *libraryName = N_("SoftGL Driver"); +static char *libraryInfo = N_("P.E.Op.S. SoftGL Driver V1.17\nCoded by Pete Bernert and the P.E.Op.S. team\n"); +#else +static char *libraryName = N_("XVideo Driver"); +static char *libraryInfo = N_("P.E.Op.S. Xvideo Driver V1.17\nCoded by Pete Bernert and the P.E.Op.S. team\n"); +#endif + +static char *PluginAuthor = N_("Pete Bernert and the P.E.Op.S. team"); + +//////////////////////////////////////////////////////////////////////// +// memory image of the PSX vram +//////////////////////////////////////////////////////////////////////// + +unsigned char *psxVSecure; +unsigned char *psxVub; +signed char *psxVsb; +unsigned short *psxVuw; +unsigned short *psxVuw_eom; +signed short *psxVsw; +uint32_t *psxVul; +int32_t *psxVsl; + +//////////////////////////////////////////////////////////////////////// +// GPU globals +//////////////////////////////////////////////////////////////////////// + +static long lGPUdataRet; +long lGPUstatusRet; +char szDispBuf[64]; +char szMenuBuf[36]; +char szDebugText[512]; +uint32_t ulStatusControl[256]; + +static uint32_t gpuDataM[256]; +static unsigned char gpuCommand = 0; +static long gpuDataC = 0; +static long gpuDataP = 0; + +VRAMLoad_t VRAMWrite; +VRAMLoad_t VRAMRead; +DATAREGISTERMODES DataWriteMode; +DATAREGISTERMODES DataReadMode; + +BOOL bSkipNextFrame = FALSE; +DWORD dwLaceCnt=0; +int iColDepth; +int iWindowMode; +short sDispWidths[8] = {256,320,512,640,368,384,512,640}; +PSXDisplay_t PSXDisplay; +PSXDisplay_t PreviousPSXDisplay; +long lSelectedSlot=0; +BOOL bChangeWinMode=FALSE; +BOOL bDoLazyUpdate=FALSE; +uint32_t lGPUInfoVals[16]; +static int iFakePrimBusy=0; + +//////////////////////////////////////////////////////////////////////// +// some misc external display funcs +//////////////////////////////////////////////////////////////////////// + +#include +time_t tStart; + +void CALLBACK GPUdisplayText(char * pText) // some debug func +{ + if(!pText) {szDebugText[0]=0;return;} + if(strlen(pText)>511) return; + time(&tStart); + strcpy(szDebugText,pText); +} + +//////////////////////////////////////////////////////////////////////// + +void CALLBACK GPUdisplayFlags(unsigned long dwFlags) // some info func +{ + //dwCoreFlags=dwFlags; + //BuildDispMenu(0); +} + +//////////////////////////////////////////////////////////////////////// +// stuff to make this a true PDK module +//////////////////////////////////////////////////////////////////////// + +char * GPUgetLibInfos(void) +{ + return _(libraryInfo); +} + +//////////////////////////////////////////////////////////////////////// +// Snapshot func +//////////////////////////////////////////////////////////////////////// + +static char * pGetConfigInfos(int iCfg) +{ + char szO[2][4]={"off","on "}; + char szTxt[256]; + char * pB = (char *)malloc(32767); + + if (!pB) return NULL; + *pB = 0; + //----------------------------------------------------// + sprintf(szTxt,"Plugin: %s %d.%d.%d\r\n",libraryName,version,revision,build); + strcat(pB,szTxt); + sprintf(szTxt,"Author: %s\r\n\r\n",PluginAuthor); + strcat(pB,szTxt); + //----------------------------------------------------// + if(iCfg && iWindowMode) + sprintf(szTxt,"Resolution/Color:\r\n- %dx%d ",LOWORD(iWinSize),HIWORD(iWinSize)); + else + sprintf(szTxt,"Resolution/Color:\r\n- %dx%d ",iResX,iResY); + strcat(pB,szTxt); + if(iWindowMode && iCfg) + strcpy(szTxt,"Window mode\r\n"); + else + if(iWindowMode) + sprintf(szTxt,"Window mode - [%d Bit]\r\n",iDesktopCol); + else + sprintf(szTxt,"Fullscreen - [%d Bit]\r\n",iColDepth); + strcat(pB,szTxt); + + sprintf(szTxt,"Stretch mode: %d\r\n",iUseNoStretchBlt); + strcat(pB,szTxt); + sprintf(szTxt,"Dither mode: %d\r\n\r\n",iUseDither); + strcat(pB,szTxt); + //----------------------------------------------------// + sprintf(szTxt,"Framerate:\r\n- FPS limit: %s\r\n",szO[UseFrameLimit]); + strcat(pB,szTxt); + sprintf(szTxt,"- Frame skipping: %s",szO[UseFrameSkip]); + strcat(pB,szTxt); + if(iFastFwd) strcat(pB," (fast forward)"); + strcat(pB,"\r\n"); + if(iFrameLimit==2) + strcpy(szTxt,"- FPS limit: Auto\r\n\r\n"); + else sprintf(szTxt,"- FPS limit: %.1f\r\n\r\n",fFrameRate); + strcat(pB,szTxt); + //----------------------------------------------------// +#ifndef _MACGL + strcpy(szTxt,"Misc:\r\n- MaintainAspect: "); + if(iMaintainAspect == 0) strcat(szTxt,"disabled"); + else + if(iMaintainAspect == 1) strcat(szTxt,"enabled"); + strcat(szTxt,"\r\n"); + strcat(pB,szTxt); +#endif + sprintf(szTxt,"- Game fixes: %s [%08x]\r\n",szO[iUseFixes],dwCfgFixes); + strcat(pB,szTxt); + //----------------------------------------------------// + return pB; +} + +static void DoTextSnapShot(int iNum) +{ + FILE *txtfile; + char szTxt[256]; + char *pB; + + sprintf(szTxt,"%s/pcsx%04d.txt",getenv("HOME"),iNum); + + if ((txtfile = fopen(szTxt, "wb")) == NULL) + return; + + pB = pGetConfigInfos(0); + if (pB) + { + fwrite(pB, strlen(pB), 1, txtfile); + free(pB); + } + fclose(txtfile); +} + +void CALLBACK GPUmakeSnapshot(void) +{ + FILE *bmpfile; + char filename[256]; + unsigned char header[0x36]; + long size, height; + unsigned char line[1024 * 3]; + short i, j; + unsigned char empty[2] = {0,0}; + unsigned short color; + unsigned long snapshotnr = 0; + unsigned char *pD; + + height = PreviousPSXDisplay.DisplayMode.y; + + size = height * PreviousPSXDisplay.Range.x1 * 3 + 0x38; + + // fill in proper values for BMP + + // hardcoded BMP header + memset(header, 0, 0x36); + header[0] = 'B'; + header[1] = 'M'; + header[2] = size & 0xff; + header[3] = (size >> 8) & 0xff; + header[4] = (size >> 16) & 0xff; + header[5] = (size >> 24) & 0xff; + header[0x0a] = 0x36; + header[0x0e] = 0x28; + header[0x12] = PreviousPSXDisplay.Range.x1 % 256; + header[0x13] = PreviousPSXDisplay.Range.x1 / 256; + header[0x16] = height % 256; + header[0x17] = height / 256; + header[0x1a] = 0x01; + header[0x1c] = 0x18; + header[0x26] = 0x12; + header[0x27] = 0x0B; + header[0x2A] = 0x12; + header[0x2B] = 0x0B; + + // increment snapshot value & try to get filename + do + { + snapshotnr++; + sprintf(filename, "%s/pcsx%04ld.bmp", getenv("HOME"), snapshotnr); + + bmpfile = fopen(filename,"rb"); + if (bmpfile == NULL) + break; + + fclose(bmpfile); + } + while(TRUE); + + // try opening new snapshot file + if ((bmpfile = fopen(filename,"wb")) == NULL) + return; + + fwrite(header, 0x36, 1, bmpfile); + for (i = height + PSXDisplay.DisplayPosition.y - 1; i >= PSXDisplay.DisplayPosition.y; i--) + { + pD = (unsigned char *)&psxVuw[i * 1024 + PSXDisplay.DisplayPosition.x]; + for (j = 0; j < PreviousPSXDisplay.Range.x1; j++) + { + if (PSXDisplay.RGB24) + { + uint32_t lu = *(uint32_t *)pD; + line[j * 3 + 2] = RED(lu); + line[j * 3 + 1] = GREEN(lu); + line[j * 3 + 0] = BLUE(lu); + pD += 3; + } + else + { + color = GETLE16(pD); + line[j * 3 + 2] = (color << 3) & 0xf1; + line[j * 3 + 1] = (color >> 2) & 0xf1; + line[j * 3 + 0] = (color >> 7) & 0xf1; + pD += 2; + } + } + fwrite(line, PreviousPSXDisplay.Range.x1 * 3, 1, bmpfile); + } + fwrite(empty, 0x2, 1, bmpfile); + fclose(bmpfile); + + DoTextSnapShot(snapshotnr); +} + +//////////////////////////////////////////////////////////////////////// +// INIT, will be called after lib load... well, just do some var init... +//////////////////////////////////////////////////////////////////////// + +long CALLBACK GPUinit() // GPU INIT +{ + memset(ulStatusControl,0,256*sizeof(uint32_t)); // init save state scontrol field + + szDebugText[0] = 0; // init debug text buffer + + psxVSecure = (unsigned char *)malloc((iGPUHeight*2)*1024 + (1024*1024)); // always alloc one extra MB for soft drawing funcs security + if (!psxVSecure) + return -1; + + //!!! ATTENTION !!! + psxVub=psxVSecure + 512 * 1024; // security offset into double sized psx vram! + + psxVsb=(signed char *)psxVub; // different ways of accessing PSX VRAM + psxVsw=(signed short *)psxVub; + psxVsl=(int32_t *)psxVub; + psxVuw=(unsigned short *)psxVub; + psxVul=(uint32_t *)psxVub; + + psxVuw_eom=psxVuw+1024*iGPUHeight; // pre-calc of end of vram + + memset(psxVSecure,0x00,(iGPUHeight*2)*1024 + (1024*1024)); + memset(lGPUInfoVals,0x00,16*sizeof(uint32_t)); + + SetFPSHandler(); + + PSXDisplay.RGB24 = FALSE; // init some stuff + PSXDisplay.Interlaced = FALSE; + PSXDisplay.DrawOffset.x = 0; + PSXDisplay.DrawOffset.y = 0; + PSXDisplay.DisplayMode.x= 320; + PSXDisplay.DisplayMode.y= 240; + PreviousPSXDisplay.DisplayMode.x= 320; + PreviousPSXDisplay.DisplayMode.y= 240; + PSXDisplay.Disabled = FALSE; + PreviousPSXDisplay.Range.x0 =0; + PreviousPSXDisplay.Range.y0 =0; + PSXDisplay.Range.x0=0; + PSXDisplay.Range.x1=0; + PreviousPSXDisplay.DisplayModeNew.y=0; + PSXDisplay.Double = 1; + lGPUdataRet = 0x400; + + DataWriteMode = DR_NORMAL; + + // Reset transfer values, to prevent mis-transfer of data + memset(&VRAMWrite, 0, sizeof(VRAMLoad_t)); + memset(&VRAMRead, 0, sizeof(VRAMLoad_t)); + + // device initialised already ! + lGPUstatusRet = 0x14802000; + GPUIsIdle; + GPUIsReadyForCommands; + bDoVSyncUpdate = TRUE; + + return 0; +} + +//////////////////////////////////////////////////////////////////////// +// Here starts all... +//////////////////////////////////////////////////////////////////////// + + +long GPUopen(unsigned long * disp,char * CapText,char * CfgFile) +{ + unsigned long d; + + pCaptionText=CapText; + + + ReadGPUConfig(); // read registry + + InitFPS(); + + bIsFirstFrame = TRUE; // we have to init later + bDoVSyncUpdate = TRUE; + + d=ulInitDisplay(); // setup x + + if(disp) + *disp=d; // wanna x pointer? ok + + if(d) return 0; + return -1; +} + + +//////////////////////////////////////////////////////////////////////// +// time to leave... +//////////////////////////////////////////////////////////////////////// + +long CALLBACK GPUclose() // GPU CLOSE +{ + + //ReleaseKeyHandler(); // de-subclass window + + CloseDisplay(); // shutdown direct draw + + return 0; +} + +//////////////////////////////////////////////////////////////////////// +// I shot the sheriff +//////////////////////////////////////////////////////////////////////// + +long CALLBACK GPUshutdown() // GPU SHUTDOWN +{ + free(psxVSecure); + + return 0; // nothinh to do +} + +//////////////////////////////////////////////////////////////////////// +// Update display (swap buffers) +//////////////////////////////////////////////////////////////////////// +int updated_display=0; +void updateDisplay(void) // UPDATE DISPLAY +{ + if(PSXDisplay.Disabled) // disable? + { + DoClearFrontBuffer(); // -> clear frontbuffer + return; // -> and bye + } + + if(dwActFixes&32) // pc fps calculation fix + { + if(UseFrameLimit) PCFrameCap(); // -> brake + if(UseFrameSkip || ulKeybits&KEY_SHOWFPS) + PCcalcfps(); + } + + if(ulKeybits&KEY_SHOWFPS) // make fps display buf + { + sprintf(szDispBuf,"FPS %06.1f",fps_cur); + } + + if(iFastFwd) // fastfwd ? + { + static int fpscount; UseFrameSkip=1; + + if(!bSkipNextFrame) DoBufferSwap(); // -> to skip or not to skip + if(fpscount%6) // -> skip 6/7 frames + bSkipNextFrame = TRUE; + else bSkipNextFrame = FALSE; + fpscount++; + if(fpscount >= (int)fFrameRateHz) fpscount = 0; + return; + } + + if(UseFrameSkip) // skip ? + { + if(!bSkipNextFrame) DoBufferSwap(); // -> to skip or not to skip + if(dwActFixes&0xa0) // -> pc fps calculation fix/old skipping fix + { + if((fps_skip < fFrameRateHz) && !(bSkipNextFrame)) // -> skip max one in a row + {bSkipNextFrame = TRUE; fps_skip=fFrameRateHz;} + else bSkipNextFrame = FALSE; + } + else FrameSkip(); + } + else // no skip ? + { + DoBufferSwap(); // -> swap + updated_display = 1; + } +} + +//////////////////////////////////////////////////////////////////////// +// roughly emulated screen centering bits... not complete !!! +//////////////////////////////////////////////////////////////////////// + +void ChangeDispOffsetsX(void) // X CENTER +{ + long lx,l; + + if(!PSXDisplay.Range.x1) return; + + l=PreviousPSXDisplay.DisplayMode.x; + + l*=(long)PSXDisplay.Range.x1; + l/=2560;lx=l;l&=0xfffffff8; + + if(l==PreviousPSXDisplay.Range.y1) return; // abusing range.y1 for + PreviousPSXDisplay.Range.y1=(short)l; // storing last x range and test + + if(lx>=PreviousPSXDisplay.DisplayMode.x) + { + PreviousPSXDisplay.Range.x1= + (short)PreviousPSXDisplay.DisplayMode.x; + PreviousPSXDisplay.Range.x0=0; + } + else + { + PreviousPSXDisplay.Range.x1=(short)l; + + PreviousPSXDisplay.Range.x0= + (PSXDisplay.Range.x0-500)/8; + + if(PreviousPSXDisplay.Range.x0<0) + PreviousPSXDisplay.Range.x0=0; + + if((PreviousPSXDisplay.Range.x0+lx)> + PreviousPSXDisplay.DisplayMode.x) + { + PreviousPSXDisplay.Range.x0= + (short)(PreviousPSXDisplay.DisplayMode.x-lx); + PreviousPSXDisplay.Range.x0+=2; //??? + + PreviousPSXDisplay.Range.x1+=(short)(lx-l); + + PreviousPSXDisplay.Range.x1-=2; // makes linux stretching easier + + } + + + // some linux alignment security + PreviousPSXDisplay.Range.x0=PreviousPSXDisplay.Range.x0>>1; + PreviousPSXDisplay.Range.x0=PreviousPSXDisplay.Range.x0<<1; + PreviousPSXDisplay.Range.x1=PreviousPSXDisplay.Range.x1>>1; + PreviousPSXDisplay.Range.x1=PreviousPSXDisplay.Range.x1<<1; + + + DoClearScreenBuffer(); + } + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// + +void ChangeDispOffsetsY(void) // Y CENTER +{ + int iT,iO=PreviousPSXDisplay.Range.y0; + int iOldYOffset=PreviousPSXDisplay.DisplayModeNew.y; + +// new + + if((PreviousPSXDisplay.DisplayModeNew.x+PSXDisplay.DisplayModeNew.y)>iGPUHeight) + { + int dy1=iGPUHeight-PreviousPSXDisplay.DisplayModeNew.x; + int dy2=(PreviousPSXDisplay.DisplayModeNew.x+PSXDisplay.DisplayModeNew.y)-iGPUHeight; + + if(dy1>=dy2) + { + PreviousPSXDisplay.DisplayModeNew.y=-dy2; + } + else + { + PSXDisplay.DisplayPosition.y=0; + PreviousPSXDisplay.DisplayModeNew.y=-dy1; + } + } + else PreviousPSXDisplay.DisplayModeNew.y=0; + +// eon + + if(PreviousPSXDisplay.DisplayModeNew.y!=iOldYOffset) // if old offset!=new offset: recalc height + { + PSXDisplay.Height = PSXDisplay.Range.y1 - + PSXDisplay.Range.y0 + + PreviousPSXDisplay.DisplayModeNew.y; + PSXDisplay.DisplayModeNew.y=PSXDisplay.Height*PSXDisplay.Double; + } + +// + + if(PSXDisplay.PAL) iT=48; else iT=28; + + if(PSXDisplay.Range.y0>=iT) + { + PreviousPSXDisplay.Range.y0= + (short)((PSXDisplay.Range.y0-iT-4)*PSXDisplay.Double); + if(PreviousPSXDisplay.Range.y0<0) + PreviousPSXDisplay.Range.y0=0; + PSXDisplay.DisplayModeNew.y+= + PreviousPSXDisplay.Range.y0; + } + else + PreviousPSXDisplay.Range.y0=0; + + if(iO!=PreviousPSXDisplay.Range.y0) + { + DoClearScreenBuffer(); + } +} + +//////////////////////////////////////////////////////////////////////// +// check if update needed +//////////////////////////////////////////////////////////////////////// + +void updateDisplayIfChanged(void) // UPDATE DISPLAY IF CHANGED +{ + if ((PSXDisplay.DisplayMode.y == PSXDisplay.DisplayModeNew.y) && + (PSXDisplay.DisplayMode.x == PSXDisplay.DisplayModeNew.x)) + { + if((PSXDisplay.RGB24 == PSXDisplay.RGB24New) && + (PSXDisplay.Interlaced == PSXDisplay.InterlacedNew)) return; + } + + PSXDisplay.RGB24 = PSXDisplay.RGB24New; // get new infos + + PSXDisplay.DisplayMode.y = PSXDisplay.DisplayModeNew.y; + PSXDisplay.DisplayMode.x = PSXDisplay.DisplayModeNew.x; + PreviousPSXDisplay.DisplayMode.x= // previous will hold + min(640,PSXDisplay.DisplayMode.x); // max 640x512... that's + PreviousPSXDisplay.DisplayMode.y= // the size of my + min(512,PSXDisplay.DisplayMode.y); // back buffer surface + PSXDisplay.Interlaced = PSXDisplay.InterlacedNew; + + PSXDisplay.DisplayEnd.x= // calc end of display + PSXDisplay.DisplayPosition.x+ PSXDisplay.DisplayMode.x; + PSXDisplay.DisplayEnd.y= + PSXDisplay.DisplayPosition.y+ PSXDisplay.DisplayMode.y+PreviousPSXDisplay.DisplayModeNew.y; + PreviousPSXDisplay.DisplayEnd.x= + PreviousPSXDisplay.DisplayPosition.x+ PSXDisplay.DisplayMode.x; + PreviousPSXDisplay.DisplayEnd.y= + PreviousPSXDisplay.DisplayPosition.y+ PSXDisplay.DisplayMode.y+PreviousPSXDisplay.DisplayModeNew.y; + + ChangeDispOffsetsX(); + + if(iFrameLimit==2) SetAutoFrameCap(); // -> set it + + if(UseFrameSkip) updateDisplay(); // stupid stuff when frame skipping enabled +} + +//////////////////////////////////////////////////////////////////////// + +#ifndef _MACGL + +#include "draw.h" + +void ChangeWindowMode(void) // TOGGLE FULLSCREEN - WINDOW +{ + +} + +#endif + +//////////////////////////////////////////////////////////////////////// +// gun cursor func: player=0-7, x=0-511, y=0-255 +//////////////////////////////////////////////////////////////////////// + +void CALLBACK GPUcursor(int iPlayer,int x,int y) +{ + if(iPlayer<0) return; + if(iPlayer>7) return; + + usCursorActive|=(1<511) x=511; + if(y<0) y=0; + if(y>255) y=255; + + ptCursorPoint[iPlayer].x=x; + ptCursorPoint[iPlayer].y=y; +} + +//////////////////////////////////////////////////////////////////////// +// update lace is called evry VSync +//////////////////////////////////////////////////////////////////////// + +void CALLBACK GPUupdateLace(void) // VSYNC +{ + if(!(dwActFixes&1)) + lGPUstatusRet^=0x80000000; // odd/even bit + + if(!(dwActFixes&32)) // std fps limitation? + CheckFrameRate(); + + if(PSXDisplay.Interlaced) // interlaced mode? + { + if(bDoVSyncUpdate && PSXDisplay.DisplayMode.x>0 && PSXDisplay.DisplayMode.y>0) + { + updateDisplay(); + } + } + else // non-interlaced? + { + if(dwActFixes&64) // lazy screen update fix + { + if(bDoLazyUpdate && !UseFrameSkip) + updateDisplay(); + bDoLazyUpdate=FALSE; + } + else + { + if(bDoVSyncUpdate && !UseFrameSkip) // some primitives drawn? + updateDisplay(); // -> update display + } + } +#ifndef _MACGL + if(bChangeWinMode) ChangeWindowMode(); // toggle full - window mode +#endif + bDoVSyncUpdate=FALSE; // vsync done +} + +//////////////////////////////////////////////////////////////////////// +// process read request from GPU status register +//////////////////////////////////////////////////////////////////////// + + +uint32_t CALLBACK GPUreadStatus(void) // READ STATUS +{ + if(dwActFixes&1) + { + static int iNumRead=0; // odd/even hack + if((iNumRead++)==2) + { + iNumRead=0; + lGPUstatusRet^=0x80000000; // interlaced bit toggle... we do it on every 3 read status... needed by some games (like ChronoCross) with old epsxe versions (1.5.2 and older) + } + } + + if(iFakePrimBusy) // 27.10.2007 - PETE : emulating some 'busy' while drawing... pfff + { + iFakePrimBusy--; + + if(iFakePrimBusy&1) // we do a busy-idle-busy-idle sequence after/while drawing prims + { + GPUIsBusy; + GPUIsNotReadyForCommands; + } + else + { + GPUIsIdle; + GPUIsReadyForCommands; + } + } + return lGPUstatusRet; +} + +//////////////////////////////////////////////////////////////////////// +// processes data send to GPU status register +// these are always single packet commands. +//////////////////////////////////////////////////////////////////////// + +void CALLBACK GPUwriteStatus(uint32_t gdata) // WRITE STATUS +{ + uint32_t lCommand=(gdata>>24)&0xff; + + ulStatusControl[lCommand]=gdata; // store command for freezing + + switch(lCommand) + { + //--------------------------------------------------// + // reset gpu + case 0x00: + memset(lGPUInfoVals,0x00,16*sizeof(uint32_t)); + lGPUstatusRet=0x14802000; + PSXDisplay.Disabled=1; + DataWriteMode=DataReadMode=DR_NORMAL; + PSXDisplay.DrawOffset.x=PSXDisplay.DrawOffset.y=0; + drawX=drawY=0;drawW=drawH=0; + sSetMask=0;lSetMask=0;bCheckMask=FALSE; + usMirror=0; + GlobalTextAddrX=0;GlobalTextAddrY=0; + GlobalTextTP=0;GlobalTextABR=0; + PSXDisplay.RGB24=FALSE; + PSXDisplay.Interlaced=FALSE; + bUsingTWin = FALSE; + return; + //--------------------------------------------------// + // dis/enable display + case 0x03: + + PreviousPSXDisplay.Disabled = PSXDisplay.Disabled; + PSXDisplay.Disabled = (gdata & 1); + + if(PSXDisplay.Disabled) + lGPUstatusRet|=GPUSTATUS_DISPLAYDISABLED; + else lGPUstatusRet&=~GPUSTATUS_DISPLAYDISABLED; + return; + + //--------------------------------------------------// + // setting transfer mode + case 0x04: + gdata &= 0x03; // Only want the lower two bits + + DataWriteMode=DataReadMode=DR_NORMAL; + if(gdata==0x02) DataWriteMode=DR_VRAMTRANSFER; + if(gdata==0x03) DataReadMode =DR_VRAMTRANSFER; + lGPUstatusRet&=~GPUSTATUS_DMABITS; // Clear the current settings of the DMA bits + lGPUstatusRet|=(gdata << 29); // Set the DMA bits according to the received data + + return; + //--------------------------------------------------// + // setting display position + case 0x05: + { + PreviousPSXDisplay.DisplayPosition.x = PSXDisplay.DisplayPosition.x; + PreviousPSXDisplay.DisplayPosition.y = PSXDisplay.DisplayPosition.y; + +//////// +/* + PSXDisplay.DisplayPosition.y = (short)((gdata>>10)&0x3ff); + if (PSXDisplay.DisplayPosition.y & 0x200) + PSXDisplay.DisplayPosition.y |= 0xfffffc00; + if(PSXDisplay.DisplayPosition.y<0) + { + PreviousPSXDisplay.DisplayModeNew.y=PSXDisplay.DisplayPosition.y/PSXDisplay.Double; + PSXDisplay.DisplayPosition.y=0; + } + else PreviousPSXDisplay.DisplayModeNew.y=0; +*/ + +// new + if(iGPUHeight==1024) + { + if(dwGPUVersion==2) + PSXDisplay.DisplayPosition.y = (short)((gdata>>12)&0x3ff); + else PSXDisplay.DisplayPosition.y = (short)((gdata>>10)&0x3ff); + } + else PSXDisplay.DisplayPosition.y = (short)((gdata>>10)&0x1ff); + + // store the same val in some helper var, we need it on later compares + PreviousPSXDisplay.DisplayModeNew.x=PSXDisplay.DisplayPosition.y; + + if((PSXDisplay.DisplayPosition.y+PSXDisplay.DisplayMode.y)>iGPUHeight) + { + int dy1=iGPUHeight-PSXDisplay.DisplayPosition.y; + int dy2=(PSXDisplay.DisplayPosition.y+PSXDisplay.DisplayMode.y)-iGPUHeight; + + if(dy1>=dy2) + { + PreviousPSXDisplay.DisplayModeNew.y=-dy2; + } + else + { + PSXDisplay.DisplayPosition.y=0; + PreviousPSXDisplay.DisplayModeNew.y=-dy1; + } + } + else PreviousPSXDisplay.DisplayModeNew.y=0; +// eon + + PSXDisplay.DisplayPosition.x = (short)(gdata & 0x3ff); + PSXDisplay.DisplayEnd.x= + PSXDisplay.DisplayPosition.x+ PSXDisplay.DisplayMode.x; + PSXDisplay.DisplayEnd.y= + PSXDisplay.DisplayPosition.y+ PSXDisplay.DisplayMode.y + PreviousPSXDisplay.DisplayModeNew.y; + PreviousPSXDisplay.DisplayEnd.x= + PreviousPSXDisplay.DisplayPosition.x+ PSXDisplay.DisplayMode.x; + PreviousPSXDisplay.DisplayEnd.y= + PreviousPSXDisplay.DisplayPosition.y+ PSXDisplay.DisplayMode.y + PreviousPSXDisplay.DisplayModeNew.y; + + bDoVSyncUpdate=TRUE; + + if (!(PSXDisplay.Interlaced)) // stupid frame skipping option + { + if(UseFrameSkip) updateDisplay(); + if(dwActFixes&64) bDoLazyUpdate=TRUE; + } + }return; + //--------------------------------------------------// + // setting width + case 0x06: + + PSXDisplay.Range.x0=(short)(gdata & 0x7ff); + PSXDisplay.Range.x1=(short)((gdata>>12) & 0xfff); + + PSXDisplay.Range.x1-=PSXDisplay.Range.x0; + + ChangeDispOffsetsX(); + + return; + //--------------------------------------------------// + // setting height + case 0x07: + { + + PSXDisplay.Range.y0=(short)(gdata & 0x3ff); + PSXDisplay.Range.y1=(short)((gdata>>10) & 0x3ff); + + PreviousPSXDisplay.Height = PSXDisplay.Height; + + PSXDisplay.Height = PSXDisplay.Range.y1 - + PSXDisplay.Range.y0 + + PreviousPSXDisplay.DisplayModeNew.y; + + if(PreviousPSXDisplay.Height!=PSXDisplay.Height) + { + PSXDisplay.DisplayModeNew.y=PSXDisplay.Height*PSXDisplay.Double; + + ChangeDispOffsetsY(); + + updateDisplayIfChanged(); + } + return; + } + //--------------------------------------------------// + // setting display infos + case 0x08: + + PSXDisplay.DisplayModeNew.x = + sDispWidths[(gdata & 0x03) | ((gdata & 0x40) >> 4)]; + + if (gdata&0x04) PSXDisplay.Double=2; + else PSXDisplay.Double=1; + + PSXDisplay.DisplayModeNew.y = PSXDisplay.Height*PSXDisplay.Double; + + ChangeDispOffsetsY(); + + PSXDisplay.PAL = (gdata & 0x08)?TRUE:FALSE; // if 1 - PAL mode, else NTSC + PSXDisplay.RGB24New = (gdata & 0x10)?TRUE:FALSE; // if 1 - TrueColor + PSXDisplay.InterlacedNew = (gdata & 0x20)?TRUE:FALSE; // if 1 - Interlace + + lGPUstatusRet&=~GPUSTATUS_WIDTHBITS; // Clear the width bits + lGPUstatusRet|= + (((gdata & 0x03) << 17) | + ((gdata & 0x40) << 10)); // Set the width bits + + if(PSXDisplay.InterlacedNew) + { + if(!PSXDisplay.Interlaced) + { + PreviousPSXDisplay.DisplayPosition.x = PSXDisplay.DisplayPosition.x; + PreviousPSXDisplay.DisplayPosition.y = PSXDisplay.DisplayPosition.y; + } + lGPUstatusRet|=GPUSTATUS_INTERLACED; + } + else lGPUstatusRet&=~GPUSTATUS_INTERLACED; + + if (PSXDisplay.PAL) + lGPUstatusRet|=GPUSTATUS_PAL; + else lGPUstatusRet&=~GPUSTATUS_PAL; + + if (PSXDisplay.Double==2) + lGPUstatusRet|=GPUSTATUS_DOUBLEHEIGHT; + else lGPUstatusRet&=~GPUSTATUS_DOUBLEHEIGHT; + + if (PSXDisplay.RGB24New) + lGPUstatusRet|=GPUSTATUS_RGB24; + else lGPUstatusRet&=~GPUSTATUS_RGB24; + + updateDisplayIfChanged(); + + return; + //--------------------------------------------------// + // ask about GPU version and other stuff + case 0x10: + + gdata&=0xff; + + switch(gdata) + { + case 0x02: + lGPUdataRet=lGPUInfoVals[INFO_TW]; // tw infos + return; + case 0x03: + lGPUdataRet=lGPUInfoVals[INFO_DRAWSTART]; // draw start + return; + case 0x04: + lGPUdataRet=lGPUInfoVals[INFO_DRAWEND]; // draw end + return; + case 0x05: + case 0x06: + lGPUdataRet=lGPUInfoVals[INFO_DRAWOFF]; // draw offset + return; + case 0x07: + if(dwGPUVersion==2) + lGPUdataRet=0x01; + else lGPUdataRet=0x02; // gpu type + return; + case 0x08: + case 0x0F: // some bios addr? + lGPUdataRet=0xBFC03720; + return; + } + return; + //--------------------------------------------------// + } +} + +//////////////////////////////////////////////////////////////////////// +// vram read/write helpers, needed by LEWPY's optimized vram read/write :) +//////////////////////////////////////////////////////////////////////// + +__inline static void FinishedVRAMWrite(void) +{ +/* +// NEWX + if(!PSXDisplay.Interlaced && UseFrameSkip) // stupid frame skipping + { + VRAMWrite.Width +=VRAMWrite.x; + VRAMWrite.Height+=VRAMWrite.y; + if(VRAMWrite.x=PSXDisplay.DisplayPosition.x && + VRAMWrite.y=PSXDisplay.DisplayPosition.y) + updateDisplay(); + } +*/ + + // Set register to NORMAL operation + DataWriteMode = DR_NORMAL; + // Reset transfer values, to prevent mis-transfer of data + VRAMWrite.x = 0; + VRAMWrite.y = 0; + VRAMWrite.Width = 0; + VRAMWrite.Height = 0; + VRAMWrite.ColsRemaining = 0; + VRAMWrite.RowsRemaining = 0; +} + +__inline static void FinishedVRAMRead(void) +{ + // Set register to NORMAL operation + DataReadMode = DR_NORMAL; + // Reset transfer values, to prevent mis-transfer of data + VRAMRead.x = 0; + VRAMRead.y = 0; + VRAMRead.Width = 0; + VRAMRead.Height = 0; + VRAMRead.ColsRemaining = 0; + VRAMRead.RowsRemaining = 0; + + // Indicate GPU is no longer ready for VRAM data in the STATUS REGISTER + lGPUstatusRet&=~GPUSTATUS_READYFORVRAM; +} + +//////////////////////////////////////////////////////////////////////// +// core read from vram +//////////////////////////////////////////////////////////////////////// + +void CALLBACK GPUreadDataMem(uint32_t * pMem, int iSize) +{ + int i; + + if(DataReadMode!=DR_VRAMTRANSFER) return; + + GPUIsBusy; + + // adjust read ptr, if necessary + while(VRAMRead.ImagePtr>=psxVuw_eom) + VRAMRead.ImagePtr-=iGPUHeight*1024; + while(VRAMRead.ImagePtr 0) && (VRAMRead.RowsRemaining > 0)) + { + // lower 16 bit + lGPUdataRet=(uint32_t)GETLE16(VRAMRead.ImagePtr); + + VRAMRead.ImagePtr++; + if(VRAMRead.ImagePtr>=psxVuw_eom) VRAMRead.ImagePtr-=iGPUHeight*1024; + VRAMRead.RowsRemaining --; + + if(VRAMRead.RowsRemaining<=0) + { + VRAMRead.RowsRemaining = VRAMRead.Width; + VRAMRead.ColsRemaining--; + VRAMRead.ImagePtr += 1024 - VRAMRead.Width; + if(VRAMRead.ImagePtr>=psxVuw_eom) VRAMRead.ImagePtr-=iGPUHeight*1024; + } + + // higher 16 bit (always, even if it's an odd width) + lGPUdataRet|=(uint32_t)GETLE16(VRAMRead.ImagePtr)<<16; + PUTLE32(pMem, lGPUdataRet); pMem++; + + if(VRAMRead.ColsRemaining <= 0) + {FinishedVRAMRead();goto ENDREAD;} + + VRAMRead.ImagePtr++; + if(VRAMRead.ImagePtr>=psxVuw_eom) VRAMRead.ImagePtr-=iGPUHeight*1024; + VRAMRead.RowsRemaining--; + if(VRAMRead.RowsRemaining<=0) + { + VRAMRead.RowsRemaining = VRAMRead.Width; + VRAMRead.ColsRemaining--; + VRAMRead.ImagePtr += 1024 - VRAMRead.Width; + if(VRAMRead.ImagePtr>=psxVuw_eom) VRAMRead.ImagePtr-=iGPUHeight*1024; + } + if(VRAMRead.ColsRemaining <= 0) + {FinishedVRAMRead();goto ENDREAD;} + } + else {FinishedVRAMRead();goto ENDREAD;} + } + +ENDREAD: + GPUIsIdle; +} + + +//////////////////////////////////////////////////////////////////////// + +uint32_t CALLBACK GPUreadData(void) +{ + uint32_t l; + GPUreadDataMem(&l,1); + return lGPUdataRet; +} + +//////////////////////////////////////////////////////////////////////// +// processes data send to GPU data register +// extra table entries for fixing polyline troubles +//////////////////////////////////////////////////////////////////////// + +const unsigned char primTableCX[256] = +{ + // 00 + 0,0,3,0,0,0,0,0, + // 08 + 0,0,0,0,0,0,0,0, + // 10 + 0,0,0,0,0,0,0,0, + // 18 + 0,0,0,0,0,0,0,0, + // 20 + 4,4,4,4,7,7,7,7, + // 28 + 5,5,5,5,9,9,9,9, + // 30 + 6,6,6,6,9,9,9,9, + // 38 + 8,8,8,8,12,12,12,12, + // 40 + 3,3,3,3,0,0,0,0, + // 48 +// 5,5,5,5,6,6,6,6, // FLINE + 254,254,254,254,254,254,254,254, + // 50 + 4,4,4,4,0,0,0,0, + // 58 +// 7,7,7,7,9,9,9,9, // GLINE + 255,255,255,255,255,255,255,255, + // 60 + 3,3,3,3,4,4,4,4, + // 68 + 2,2,2,2,3,3,3,3, // 3=SPRITE1??? + // 70 + 2,2,2,2,3,3,3,3, + // 78 + 2,2,2,2,3,3,3,3, + // 80 + 4,0,0,0,0,0,0,0, + // 88 + 0,0,0,0,0,0,0,0, + // 90 + 0,0,0,0,0,0,0,0, + // 98 + 0,0,0,0,0,0,0,0, + // a0 + 3,0,0,0,0,0,0,0, + // a8 + 0,0,0,0,0,0,0,0, + // b0 + 0,0,0,0,0,0,0,0, + // b8 + 0,0,0,0,0,0,0,0, + // c0 + 3,0,0,0,0,0,0,0, + // c8 + 0,0,0,0,0,0,0,0, + // d0 + 0,0,0,0,0,0,0,0, + // d8 + 0,0,0,0,0,0,0,0, + // e0 + 0,1,1,1,1,1,1,0, + // e8 + 0,0,0,0,0,0,0,0, + // f0 + 0,0,0,0,0,0,0,0, + // f8 + 0,0,0,0,0,0,0,0 +}; + +void CALLBACK GPUwriteDataMem(uint32_t * pMem, int iSize) +{ + unsigned char command; + uint32_t gdata=0; + int i=0; + GPUIsBusy; + GPUIsNotReadyForCommands; + +STARTVRAM: + + if(DataWriteMode==DR_VRAMTRANSFER) + { + BOOL bFinished=FALSE; + + // make sure we are in vram + while(VRAMWrite.ImagePtr>=psxVuw_eom) + VRAMWrite.ImagePtr-=iGPUHeight*1024; + while(VRAMWrite.ImagePtr0) + { + while(VRAMWrite.RowsRemaining>0) + { + if(i>=iSize) {goto ENDVRAM;} + i++; + + gdata=GETLE32(pMem); pMem++; + + PUTLE16(VRAMWrite.ImagePtr, (unsigned short)gdata); VRAMWrite.ImagePtr++; + if(VRAMWrite.ImagePtr>=psxVuw_eom) VRAMWrite.ImagePtr-=iGPUHeight*1024; + VRAMWrite.RowsRemaining --; + + if(VRAMWrite.RowsRemaining <= 0) + { + VRAMWrite.ColsRemaining--; + if (VRAMWrite.ColsRemaining <= 0) // last pixel is odd width + { + gdata=(gdata&0xFFFF)|(((uint32_t)GETLE16(VRAMWrite.ImagePtr))<<16); + FinishedVRAMWrite(); + bDoVSyncUpdate=TRUE; + goto ENDVRAM; + } + VRAMWrite.RowsRemaining = VRAMWrite.Width; + VRAMWrite.ImagePtr += 1024 - VRAMWrite.Width; + } + + PUTLE16(VRAMWrite.ImagePtr, (unsigned short)(gdata>>16)); VRAMWrite.ImagePtr++; + if(VRAMWrite.ImagePtr>=psxVuw_eom) VRAMWrite.ImagePtr-=iGPUHeight*1024; + VRAMWrite.RowsRemaining --; + } + + VRAMWrite.RowsRemaining = VRAMWrite.Width; + VRAMWrite.ColsRemaining--; + VRAMWrite.ImagePtr += 1024 - VRAMWrite.Width; + bFinished=TRUE; + } + + FinishedVRAMWrite(); + if(bFinished) bDoVSyncUpdate=TRUE; + } + +ENDVRAM: + + if(DataWriteMode==DR_NORMAL) + { + void (* *primFunc)(unsigned char *); + if(bSkipNextFrame) primFunc=primTableSkip; + else primFunc=primTableJ; + + for(;i>24) & 0xff); + +//if(command>=0xb0 && command<0xc0) auxprintf("b0 %x!!!!!!!!!\n",command); + + if(primTableCX[command]) + { + gpuDataC = primTableCX[command]; + gpuCommand = command; + PUTLE32(&gpuDataM[0], gdata); + gpuDataP = 1; + } + else continue; + } + else + { + PUTLE32(&gpuDataM[gpuDataP], gdata); + if(gpuDataC>128) + { + if((gpuDataC==254 && gpuDataP>=3) || + (gpuDataC==255 && gpuDataP>=4 && !(gpuDataP&1))) + { + if((gpuDataM[gpuDataP] & 0xF000F000) == 0x50005000) + gpuDataP=gpuDataC-1; + } + } + gpuDataP++; + } + + if(gpuDataP == gpuDataC) + { + gpuDataC=gpuDataP=0; + primFunc[gpuCommand]((unsigned char *)gpuDataM); + if(dwEmuFixes&0x0001 || dwActFixes&0x0400) // hack for emulating "gpu busy" in some games + iFakePrimBusy=4; + } + } + } + + lGPUdataRet=gdata; + + GPUIsReadyForCommands; + GPUIsIdle; +} + +//////////////////////////////////////////////////////////////////////// + +void CALLBACK GPUwriteData(uint32_t gdata) +{ + PUTLE32(&gdata, gdata); + GPUwriteDataMem(&gdata,1); +} + +//////////////////////////////////////////////////////////////////////// +// this functions will be removed soon (or 'soonish')... not really needed, but some emus want them +//////////////////////////////////////////////////////////////////////// + +void CALLBACK GPUsetMode(unsigned long gdata) +{ +// Peops does nothing here... +// DataWriteMode=(gdata&1)?DR_VRAMTRANSFER:DR_NORMAL; +// DataReadMode =(gdata&2)?DR_VRAMTRANSFER:DR_NORMAL; +} + +long CALLBACK GPUgetMode(void) +{ + long iT=0; + + if(DataWriteMode==DR_VRAMTRANSFER) iT|=0x1; + if(DataReadMode ==DR_VRAMTRANSFER) iT|=0x2; + return iT; +} + +//////////////////////////////////////////////////////////////////////// +// call config dlg +//////////////////////////////////////////////////////////////////////// + +long CALLBACK GPUconfigure(void) +{ + //SoftDlgProc(); + + return 0; +} + +//////////////////////////////////////////////////////////////////////// +// sets all kind of act fixes +//////////////////////////////////////////////////////////////////////// + +void SetFixes(void) + { + if(dwActFixes&0x02) sDispWidths[4]=384; + else sDispWidths[4]=368; + } + +//////////////////////////////////////////////////////////////////////// +// process gpu commands +//////////////////////////////////////////////////////////////////////// + +unsigned long lUsedAddr[3]; + +__inline static BOOL CheckForEndlessLoop(unsigned long laddr) +{ + if(laddr==lUsedAddr[1]) return TRUE; + if(laddr==lUsedAddr[2]) return TRUE; + + if(laddr 2000000) break; + if(CheckForEndlessLoop(addr)) break; + + count = baseAddrB[addr+3]; + + dmaMem=addr+4; + + if(count>0) GPUwriteDataMem(&baseAddrL[dmaMem>>2],count); + + addr = GETLE32(&baseAddrL[addr>>2])&0xffffff; + } + while (addr != 0xffffff); + + GPUIsIdle; + + return 0; +} + +//////////////////////////////////////////////////////////////////////// +// show about dlg +//////////////////////////////////////////////////////////////////////// + + +void CALLBACK GPUabout(void) // ABOUT +{ + //AboutDlgProc(); + return; +} + +//////////////////////////////////////////////////////////////////////// +// We are ever fine ;) +//////////////////////////////////////////////////////////////////////// + +long CALLBACK GPUtest(void) +{ + // if test fails this function should return negative value for error (unable to continue) + // and positive value for warning (can continue but output might be crappy) + return 0; +} + +//////////////////////////////////////////////////////////////////////// +// Freeze +//////////////////////////////////////////////////////////////////////// + +typedef struct GPUFREEZETAG +{ + uint32_t ulFreezeVersion; // should be always 1 for now (set by main emu) + uint32_t ulStatus; // current gpu status + uint32_t ulControl[256]; // latest control register values + unsigned char psxVRam[1024*1024*2]; // current VRam image (full 2 MB for ZN) +} GPUFreeze_t; + +//////////////////////////////////////////////////////////////////////// + +long CALLBACK GPUfreeze(uint32_t ulGetFreezeData,GPUFreeze_t * pF) +{ + //----------------------------------------------------// + if(ulGetFreezeData==2) // 2: info, which save slot is selected? (just for display) + { + long lSlotNum=*((long *)pF); + if(lSlotNum<0) return 0; + if(lSlotNum>8) return 0; + lSelectedSlot=lSlotNum+1; + //BuildDispMenu(0); + return 1; + } + //----------------------------------------------------// + if(!pF) return 0; // some checks + if(pF->ulFreezeVersion!=1) return 0; + + if(ulGetFreezeData==1) // 1: get data + { + pF->ulStatus=lGPUstatusRet; + memcpy(pF->ulControl,ulStatusControl,256*sizeof(uint32_t)); + memcpy(pF->psxVRam, psxVub, 1024*iGPUHeight*2); + + return 1; + } + + if(ulGetFreezeData!=0) return 0; // 0: set data + + lGPUstatusRet=pF->ulStatus; + memcpy(ulStatusControl,pF->ulControl,256*sizeof(uint32_t)); + memcpy(psxVub, pF->psxVRam, 1024*iGPUHeight*2); + +// RESET TEXTURE STORE HERE, IF YOU USE SOMETHING LIKE THAT + + GPUwriteStatus(ulStatusControl[0]); + GPUwriteStatus(ulStatusControl[1]); + GPUwriteStatus(ulStatusControl[2]); + GPUwriteStatus(ulStatusControl[3]); + GPUwriteStatus(ulStatusControl[8]); // try to repair things + GPUwriteStatus(ulStatusControl[6]); + GPUwriteStatus(ulStatusControl[7]); + GPUwriteStatus(ulStatusControl[5]); + GPUwriteStatus(ulStatusControl[4]); + + return 1; +} + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////// +// SAVE STATE DISPLAY STUFF +//////////////////////////////////////////////////////////////////////// + +// font 0-9, 24x20 pixels, 1 byte = 4 dots +// 00 = black +// 01 = white +// 10 = red +// 11 = transparent + +extern unsigned char cFont[10][120]; +//////////////////////////////////////////////////////////////////////// + +inline void PaintPicDot(unsigned char * p,unsigned char c) +{ + + if(c==0) {*p++=0x00;*p++=0x00;*p=0x00;return;} // black + if(c==1) {*p++=0xff;*p++=0xff;*p=0xff;return;} // white + if(c==2) {*p++=0x00;*p++=0x00;*p=0xff;return;} // red + // transparent +} + +//////////////////////////////////////////////////////////////////////// +// the main emu allocs 128x96x3 bytes, and passes a ptr +// to it in pMem... the plugin has to fill it with +// 8-8-8 bit BGR screen data (Win 24 bit BMP format +// without header). +// Beware: the func can be called at any time, +// so you have to use the frontbuffer to get a fully +// rendered picture + +// LINUX version: + +void GPUgetScreenPic(unsigned char * pMem) +{ + +} + + +//////////////////////////////////////////////////////////////////////// +// func will be called with 128x96x3 BGR data. +// the plugin has to store the data and display +// it in the upper right corner. +// If the func is called with a NULL ptr, you can +// release your picture data and stop displaying +// the screen pic + +void CALLBACK GPUshowScreenPic(unsigned char * pMem) +{ + /* + DestroyPic(); // destroy old pic data + if(pMem==0) return; // done + CreatePic(pMem); // create new pic... don't free pMem or something like that... just read from it + */ +} + +void CALLBACK GPUsetfix(uint32_t dwFixBits) +{ + dwEmuFixes=dwFixBits; +} diff --git a/plugins/dfxvideo/gpu.h b/plugins/dfxvideo/gpu.h new file mode 100644 index 0000000..e8730f2 --- /dev/null +++ b/plugins/dfxvideo/gpu.h @@ -0,0 +1,60 @@ +/*************************************************************************** + gpu.h - description + ------------------- + begin : Sun Oct 28 2001 + copyright : (C) 2001 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ + +#ifndef _GPU_INTERNALS_H +#define _GPU_INTERNALS_H + +#define OPAQUEON 10 +#define OPAQUEOFF 11 + +#define KEY_RESETTEXSTORE 1 +#define KEY_SHOWFPS 2 +#define KEY_RESETOPAQUE 4 +#define KEY_RESETDITHER 8 +#define KEY_RESETFILTER 16 +#define KEY_RESETADVBLEND 32 +//#define KEY_BLACKWHITE 64 +#define KEY_BADTEXTURES 128 +#define KEY_CHECKTHISOUT 256 + +#if !defined(__BIG_ENDIAN__) || defined(__x86_64__) || defined(__i386__) +#ifndef __LITTLE_ENDIAN__ +#define __LITTLE_ENDIAN__ +#endif +#endif + +#ifdef __LITTLE_ENDIAN__ +#define RED(x) (x & 0xff) +#define BLUE(x) ((x>>16) & 0xff) +#define GREEN(x) ((x>>8) & 0xff) +#define COLOR(x) (x & 0xffffff) +#elif defined __BIG_ENDIAN__ +#define RED(x) ((x>>24) & 0xff) +#define BLUE(x) ((x>>8) & 0xff) +#define GREEN(x) ((x>>16) & 0xff) +#define COLOR(x) SWAP32(x & 0xffffff) +#endif + +///////////////////////////////////////////////////////////////////////////// + +void updateDisplay(void); +void SetAutoFrameCap(void); +void SetFixes(void); + +///////////////////////////////////////////////////////////////////////////// + +#endif // _GPU_INTERNALS_H diff --git a/plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2 b/plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2 new file mode 100644 index 0000000..ded3c1a --- /dev/null +++ b/plugins/dfxvideo/gpucfg-0.1df/dfxvideo.glade2 @@ -0,0 +1,625 @@ + + + + + + True + 10 + Configure X11 Video + False + True + center + dialog + + + + True + vertical + 6 + + + True + 0 + + + True + 6 + 6 + 12 + 12 + + + True + vertical + + + True + 3 + 2 + 30 + 6 + + + True + 0 + Initial Window Size: + + + GTK_FILL + + + + + + True + 0 + Stretching: + + + 1 + 2 + GTK_FILL + + + + + + True + 0 + Dithering: + + + 2 + 3 + GTK_FILL + + + + + + True + 0 + 0: None +1: 2xSai +2: 2xSuperSai +3: SuperEagle +4: Scale2x +5: Scale3x +6: HQ2X +7: HQ3X + + + 1 + 2 + 1 + 2 + GTK_FILL + GTK_FILL + + + + + True + 1 + 0: Off (fastest) +1: Game dependant +2: Always + + + 1 + 2 + 2 + 3 + GTK_FILL + GTK_FILL + + + + + True + 10 + + + True + 2 + 320x240 +640x480 +800x600 +1024x768 +1152x864 +1280x1024 +1600x1200 + + + 0 + + + + + Fullscreen + True + True + False + True + Toggle windowed/fullscreen mode. + True + True + + + False + False + 1 + + + + + 1 + 2 + + + + + 0 + + + + + True + + + Maintain 4:3 Aspect Ratio + True + True + False + True + True + + + False + False + 0 + + + + + 1 + + + + + + + + + True + <b>Screen</b> + True + + + label_item + + + + + 0 + + + + + True + 0 + + + True + 6 + 6 + 12 + 12 + + + True + vertical + + + Show FPS + True + True + False + Toggle whether the FPS will be shown. + True + True + + + False + False + 0 + + + + + Enable frame skipping + True + True + False + Skip frames when rendering. + True + True + + + False + False + 1 + + + + + True + 3 + 12 + + + Set FPS + True + True + False + Enable this if games display too quickly. + True + True + + + GTK_FILL + + + + + + True + True + 4 + 200.0 + + + 1 + 2 + + + + + + + Autodetect FPS limit + True + True + False + True + True + True + True + + + 2 + 3 + + + + + False + False + 2 + + + + + + + + + True + <b>Framerate</b> + True + + + label_item + + + + + 1 + + + + + True + 0 + + + True + 6 + 6 + 12 + 12 + + + True + vertical + + + Use game fixes + True + True + False + True + True + + + False + False + 0 + + + + + True + 19 + + + True + 6 + 2 + 16 + + + Disable CPU Saving + True + True + False + For precise framerate + True + True + + + 4 + 5 + GTK_FILL + + + + + + Odd/even bit hack + True + True + False + Chrono Cross + True + True + + + GTK_FILL + + + + + + PC FPS calculation + True + True + False + Better FPS limit in some + True + True + + + 5 + 6 + GTK_FILL + + + + + + Expand screen width + True + True + False + Capcom fighting games + True + True + + + 1 + 2 + GTK_FILL + + + + + + Ignore brightness color + True + True + False + Black screens in Lunar + True + True + + + 2 + 3 + GTK_FILL + + + + + + Disable coordinate check + True + True + False + Compatibility mode + True + True + + + 3 + 4 + GTK_FILL + + + + + + Lazy screen update + True + True + False + True + Pandemonium 2 + True + True + + + 1 + 2 + GTK_FILL + + + + + + Old frame skipping + True + True + False + True + Skip every second frame + True + True + + + 1 + 2 + 1 + 2 + GTK_FILL + + + + + + Repeated flat tex triangles + True + True + False + True + Needed by Dark Forces + True + True + + + 1 + 2 + 2 + 3 + GTK_FILL + + + + + + Draw quads with triangles + True + True + False + True + better g-colors, worse textures + True + True + + + 1 + 2 + 3 + 4 + GTK_FILL + + + + + + Fake 'gpu busy' states + True + True + False + True + Toggle busy flags after drawing + True + True + + + 1 + 2 + 4 + 5 + GTK_FILL + + + + + + + + + + + 1 + + + + + + + + + True + <b>Compatibility</b> + True + + + label_item + + + + + 2 + + + + + True + 12 + end + + + gtk-close + True + True + True + False + True + + + False + False + 0 + + + + + 3 + + + + + + diff --git a/plugins/dfxvideo/gpucfg-0.1df/main.c b/plugins/dfxvideo/gpucfg-0.1df/main.c new file mode 100644 index 0000000..ddc9929 --- /dev/null +++ b/plugins/dfxvideo/gpucfg-0.1df/main.c @@ -0,0 +1,464 @@ +#include +#include + +#include "config.h" + +#ifdef ENABLE_NLS +#include +#include +#endif + +#include +#include +#include +#include +#include + +void SaveConfig(GtkWidget *widget, gpointer user_datal); + +#define READBINARY "rb" +#define WRITEBINARY "wb" +#define CONFIG_FILENAME "dfxvideo.cfg" + +enum { + VIDMODE_320x200 = 0, + VIDMODE_640x480, + VIDMODE_800x600, + VIDMODE_1024x768, + VIDMODE_1152x864, + VIDMODE_1280x1024, + VIDMODE_1600x1200 +}; /* Video_modes */ + +/*ADB static GtkWidget * wndMain=0;*/ + +/* This function checks for the value being outside the accepted range, + and returns the appropriate boundary value */ +int set_limit (char *p, int len, int lower, int upper) +{ + int val = 0; + + if (p) + val = atoi(p + len); + /* printf("Checking for val %d greater than %d and lower than %d, ", val, lower, upper);*/ + if (val < lower) + val = lower; + if (val > upper) + val = upper; + /* printf ("val is now %d\n", val);*/ + return val; +} + +void on_about_clicked(GtkWidget *widget, gpointer user_data) +{ + gtk_widget_destroy (widget); + exit (0); +} + +void set_widget_sensitive(GtkWidget *widget, gpointer user_data) +{ + gtk_widget_set_sensitive (widget, (int)user_data); +} + +void on_fullscreen_toggled(GtkWidget *widget, gpointer user_data) +{ + GtkWidget *check, *resCombo2; + GladeXML *xml; + xml = (GladeXML*) user_data; + + check = glade_xml_get_widget(xml, "checkFullscreen"); + resCombo2 = glade_xml_get_widget(xml, "resCombo2"); + + set_widget_sensitive(resCombo2, !gtk_toggle_button_get_active(check)); +} + +void on_use_fixes_toggled(GtkWidget *widget, gpointer user_data) +{ + GtkWidget *check, *table_fixes; + GladeXML *xml; + xml = (GladeXML*) user_data; + check = glade_xml_get_widget (xml, "checkUseFixes"); + + table_fixes = glade_xml_get_widget (xml, "table_fixes"); + + /* Set the state of each of the fixes to the value of the use fixes toggle */ + gtk_container_foreach (GTK_CONTAINER (table_fixes), (GtkCallback) set_widget_sensitive, + (void *)gtk_toggle_button_get_active (check)); +} + +void on_fps_toggled(GtkWidget *widget, gpointer user_data) +{ + GtkWidget *checkSetFPS, *checkAutoFPSLimit, *entryFPS; + GladeXML *xml; + + xml = (GladeXML*) user_data; + checkSetFPS = glade_xml_get_widget(xml, "checkSetFPS"); + checkAutoFPSLimit = glade_xml_get_widget(xml, "checkAutoFPSLimit"); + entryFPS = glade_xml_get_widget(xml, "entryFPS"); + + set_widget_sensitive(entryFPS, + gtk_toggle_button_get_active(checkSetFPS) && !gtk_toggle_button_get_active(checkAutoFPSLimit)); + set_widget_sensitive(checkAutoFPSLimit, gtk_toggle_button_get_active(checkSetFPS)); +} + +void OnConfigClose(GtkWidget *widget, gpointer user_data) +{ + GladeXML *xml = (GladeXML *)user_data; + + gtk_widget_destroy(glade_xml_get_widget(xml, "CfgWnd")); + gtk_exit(0); +} + +int +main (int argc, char *argv[]) +{ + GtkWidget *CfgWnd, *widget; + GladeXML *xml; + FILE *in;char t[256];int len,val; + float valf; + char * pB, * p; + char cfg[255]; + int i; + char tempstr[50]; + +#ifdef ENABLE_NLS + setlocale (LC_ALL, ""); + bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + textdomain (GETTEXT_PACKAGE); +#endif + + if (argc!=2) { + printf("Usage: cfgDFXVideo {ABOUT | CFG}\n"); + return 0; + } + if(strcmp(argv[1],"CFG")!=0 && strcmp(argv[1],"ABOUT")!=0) { + printf("Usage: cfgDFXVideo {ABOUT | CFG}\n"); + return 0; + } + + gtk_set_locale (); + gtk_init (&argc, &argv); + + + if (strcmp(argv[1], "ABOUT") == 0) { + const char *authors[]= {"Pete Bernert and the P.E.Op.S. team", "Ryan Schultz", "Andrew Burton", NULL}; + widget = gtk_about_dialog_new (); + gtk_about_dialog_set_name (GTK_ABOUT_DIALOG (widget), "P.E.Op.S PCSX Video Plugin"); + gtk_about_dialog_set_version (GTK_ABOUT_DIALOG (widget), "1.17"); + gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (widget), authors); + gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (widget), "http://pcsx-df.sourceforge.net/"); + + g_signal_connect_data(GTK_OBJECT(widget), "response", + GTK_SIGNAL_FUNC(on_about_clicked), NULL, NULL, G_CONNECT_AFTER); + + gtk_widget_show (widget); + gtk_main(); + + return 0; + } + + xml = glade_xml_new(DATADIR "dfxvideo.glade2", "CfgWnd", NULL); + if (!xml) { + g_warning("We could not load the interface!"); + return -1; + } + + /*ADB wndMain = glade_xml_get_widget(xml, "CfgWnd");*/ + + strcpy(cfg, CONFIG_FILENAME); + + in = fopen(cfg,READBINARY); + /* ADB TODO This is bad - asking for problems; need to read in line by line */ + if(in) + { + pB=(char *)malloc(32767); + memset(pB,0,32767); + len = fread(pB, 1, 32767, in); + fclose(in); + } + else{ pB=0;printf("Couldn't find config file %s\n", cfg);} +/* ADB TODO Parse this like we parse the config file in PCSX - use common functions! */ + val=1; + if(pB) + { + strcpy(t,"\nResX");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} + val = set_limit (p, len, 0, 1600); + } + + if (val == 1600) val = VIDMODE_1600x1200; + else if (val == 1280) val = VIDMODE_1280x1024; + else if (val == 1152) val = VIDMODE_1152x864; + else if (val == 1024) val = VIDMODE_1024x768; + else if (val == 800) val = VIDMODE_800x600; + else if (val == 640) val = VIDMODE_640x480; + else if (val == 320) val = VIDMODE_320x200; + + gtk_combo_box_set_active(GTK_COMBO_BOX (glade_xml_get_widget(xml, "resCombo2")), val); + + val=0; + if(pB) + { + strcpy(t,"\nNoStretch");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} + + val = set_limit (p, len, 0, 9); + } + + gtk_combo_box_set_active(GTK_COMBO_BOX (glade_xml_get_widget(xml, "stretchCombo2")), val); + + val=0; + if(pB) + { + strcpy(t,"\nDithering");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} + + val = set_limit (p, len, 0, 2); + } + + gtk_combo_box_set_active(GTK_COMBO_BOX (glade_xml_get_widget(xml, "ditherCombo2")), val); + + val=0; + if(pB) + { + strcpy(t,"\nMaintain43");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} + + val = set_limit (p, len, 0, 1); + } + + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "maintain43")), val); + + val=0; //ADB Leave - these are default values + if(pB) + { + strcpy(t,"\nFullScreen");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} + + val = set_limit (p, len, 0, 1); + } + + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "checkFullscreen")), val); + + val=0; + if(pB) + { + strcpy(t,"\nShowFPS");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} + + val = set_limit (p, len, 0, 1); + } + + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "checkShowFPS")), val); + + val=1; + if(pB) + { + strcpy(t,"\nUseFrameLimit");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} + + val = set_limit (p, len, 0, 1); + } + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "checkSetFPS")), val); + + val=0; + if(pB) + { + strcpy(t,"\nFPSDetection");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} + + val = set_limit (p, len, 1, 2); + } + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "checkAutoFPSLimit")), (val-1)); + + val=0; + if(pB) + { + strcpy(t,"\nUseFrameSkip");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} + val = set_limit (p, len, 0, 1); + } + + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "checkFrameSkip")), val); + + valf=200; + if(pB) + { + strcpy(t,"\nFrameRate");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} + if(p) valf=(float)atoi(p+len) / 10; + if(valf<1) valf=1; + if(valf>500) valf=500; + } + sprintf(tempstr,"%.1f",valf); + gtk_entry_set_text(glade_xml_get_widget(xml, "entryFPS"),tempstr); + + val=0; + if(pB) + { + strcpy(t,"\nUseFixes");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} + + val = set_limit (p, len, 0, 1); + } + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "checkUseFixes")), val); + + + if(pB) + { + strcpy(t,"\nCfgFixes");p=strstr(pB,t);if(p) {p=strstr(p,"=");len=1;} + if (p) + val = atoi(p + len); + } + + for (i=0; i<11; i++) + { + sprintf(tempstr, "checkFix%d", i+1); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (glade_xml_get_widget (xml, tempstr)), (val>>i)&1 ); + } + + + if(pB) free(pB); + + widget = glade_xml_get_widget(xml, "CfgWnd"); + g_signal_connect_data(GTK_OBJECT(widget), "destroy", + GTK_SIGNAL_FUNC(SaveConfig), xml, NULL, 0); + + widget = glade_xml_get_widget(xml, "btn_close"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnConfigClose), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "checkFullscreen"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(on_fullscreen_toggled), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "checkUseFixes"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(on_use_fixes_toggled), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "checkSetFPS"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(on_fps_toggled), xml, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "checkAutoFPSLimit"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(on_fps_toggled), xml, NULL, G_CONNECT_AFTER); + + on_fullscreen_toggled(widget, (gpointer) xml); + on_fps_toggled(widget, (gpointer) xml); + on_use_fixes_toggled(widget, (gpointer) xml); + + gtk_main (); + return 0; +} + + +void SetCfgVal(char * pB,char * pE,int val) +{ + char * p, *ps, *pC;char t[32]; + + sprintf(t,"%d",val); + + p=strstr(pB,pE); + if(p) + { + p=strstr(p,"="); + if(!p) return; + p++; + while(*p && *p!='\n' && (*p<'0' || *p>'9')) p++; + if(*p==0 || *p=='\n') return; + ps=p; + while(*p>='0' && *p<='9') p++; + pC=(char *)malloc(32767); + strcpy(pC,p); + strcpy(ps,t); + strcat(pB,pC); + free(pC); + } + else + { + strcat(pB,pE); + strcat(pB," = "); + strcat(pB,t); + strcat(pB,"\n"); + } +} + +void SaveConfig(GtkWidget *widget, gpointer user_data) +{ + FILE *in;int len,val;char * pB; + GladeXML *xml; + char cfg[255]; + char tempstr[50]; + int i; + struct stat buf; + + pB=(char *)malloc(32767); + memset(pB,0,32767); + + strcpy(cfg, CONFIG_FILENAME); + + /* ADB TODO Why do we read this in just to replace it again? */ + in = fopen(cfg,READBINARY); + if(in) + { + len = fread(pB, 1, 32767, in); + fclose(in); + } + xml = (GladeXML*) user_data; + + val = gtk_combo_box_get_active (GTK_COMBO_BOX (glade_xml_get_widget (xml, "resCombo2"))); + + if (val == VIDMODE_320x200) { SetCfgVal(pB,"\nResX",320); SetCfgVal(pB,"\nResY",240); } + else if (val == VIDMODE_640x480) { SetCfgVal(pB,"\nResX",640); SetCfgVal(pB,"\nResY",480); } + else if (val == VIDMODE_800x600) { SetCfgVal(pB,"\nResX",800); SetCfgVal(pB,"\nResY",600); } + else if (val == VIDMODE_1024x768) { SetCfgVal(pB,"\nResX",1024); SetCfgVal(pB,"\nResY",768); } + else if (val == VIDMODE_1152x864) { SetCfgVal(pB,"\nResX",1152); SetCfgVal(pB,"\nResY",864); } + else if (val == VIDMODE_1280x1024) { SetCfgVal(pB,"\nResX",1280); SetCfgVal(pB,"\nResY",1024); } + else if (val == VIDMODE_1600x1200) { SetCfgVal(pB,"\nResX",1600); SetCfgVal(pB,"\nResY",1200); } + + val = gtk_combo_box_get_active (GTK_COMBO_BOX (glade_xml_get_widget (xml, "stretchCombo2"))); + SetCfgVal(pB,"\nNoStretch",val); + + val = gtk_combo_box_get_active (GTK_COMBO_BOX (glade_xml_get_widget (xml, "ditherCombo2"))); + SetCfgVal(pB,"\nDithering",val); + + val = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (glade_xml_get_widget (xml, "maintain43"))); + SetCfgVal(pB,"\nMaintain43",val); + + val = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (glade_xml_get_widget (xml, "checkFullscreen"))); + SetCfgVal(pB,"\nFullScreen",val); + + val = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (glade_xml_get_widget (xml, "checkShowFPS"))); + SetCfgVal(pB,"\nShowFPS",val); + + val = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (glade_xml_get_widget (xml, "checkSetFPS"))); + SetCfgVal(pB,"\nUseFrameLimit",val); + + val = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (glade_xml_get_widget (xml, "checkAutoFPSLimit"))); + SetCfgVal(pB,"\nFPSDetection",val+1); + + val = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (glade_xml_get_widget (xml, "checkFrameSkip"))); + SetCfgVal(pB,"\nUseFrameSkip",val); + + //Framerate stored *10 + val = atof(gtk_entry_get_text(glade_xml_get_widget(xml, "entryFPS"))) * 10; + SetCfgVal(pB,"\nFrameRate",val); + + val = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (glade_xml_get_widget (xml, "checkUseFixes"))); + SetCfgVal(pB,"\nUseFixes",val); + + + val = 0; + for (i=0; i<11; i++) + { + sprintf(tempstr, "checkFix%d", i+1); + if( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (glade_xml_get_widget (xml, tempstr))) ) + val |= 1 << i; + } + + SetCfgVal(pB,"\nCfgFixes",val); + + + + if((in=fopen(cfg, WRITEBINARY))!=NULL) + { + fwrite(pB,strlen(pB),1,in); + fclose(in); + } + + free(pB); + + // Close the window and exit control from the plugin + gtk_exit (0); +} diff --git a/plugins/dfxvideo/hq2x.h b/plugins/dfxvideo/hq2x.h new file mode 100644 index 0000000..e69b8e1 --- /dev/null +++ b/plugins/dfxvideo/hq2x.h @@ -0,0 +1,1870 @@ +#define P0 dst0[0] +#define P1 dst0[1] +#define P2 dst1[0] +#define P3 dst1[1] +#define MUR interp_32_diff(c[1], c[5]) +#define MDR interp_32_diff(c[5], c[7]) +#define MDL interp_32_diff(c[7], c[3]) +#define MUL interp_32_diff(c[3], c[1]) +#define IC(p0) c[p0] +#define I11(p0,p1) interp_32_11(c[p0], c[p1]) +#define I211(p0,p1,p2) interp_32_211(c[p0], c[p1], c[p2]) +#define I31(p0,p1) interp_32_31(c[p0], c[p1]) +#define I332(p0,p1,p2) interp_32_332(c[p0], c[p1], c[p2]) +#define I431(p0,p1,p2) interp_32_431(c[p0], c[p1], c[p2]) +#define I521(p0,p1,p2) interp_32_521(c[p0], c[p1], c[p2]) +#define I53(p0,p1) interp_32_53(c[p0], c[p1]) +#define I611(p0,p1,p2) interp_32_611(c[p0], c[p1], c[p2]) +#define I71(p0,p1) interp_32_71(c[p0], c[p1]) +#define I772(p0,p1,p2) interp_32_772(c[p0], c[p1], c[p2]) +#define I97(p0,p1) interp_32_97(c[p0], c[p1]) +#define I1411(p0,p1,p2) interp_32_1411(c[p0], c[p1], c[p2]) +#define I151(p0,p1) interp_32_151(c[p0], c[p1]) + +case 0 : +case 1 : +case 4 : +case 5 : +case 32 : +case 33 : +case 36 : +case 37 : +case 128 : +case 129 : +case 132 : +case 133 : +case 160 : +case 161 : +case 164 : +case 165 : +{ + P0 = I211(4, 1, 3); + P1 = I211(4, 1, 5); + P2 = I211(4, 3, 7); + P3 = I211(4, 5, 7); +} break; +case 2 : +case 34 : +case 130 : +case 162 : +{ + P0 = I31(4, 0); + P1 = I31(4, 2); + P2 = I211(4, 3, 7); + P3 = I211(4, 5, 7); +} break; +case 3 : +case 35 : +case 131 : +case 163 : +{ + P0 = I31(4, 3); + P1 = I31(4, 2); + P2 = I211(4, 3, 7); + P3 = I211(4, 5, 7); +} break; +case 6 : +case 38 : +case 134 : +case 166 : +{ + P0 = I31(4, 0); + P1 = I31(4, 5); + P2 = I211(4, 3, 7); + P3 = I211(4, 5, 7); +} break; +case 7 : +case 39 : +case 135 : +case 167 : +{ + P0 = I31(4, 3); + P1 = I31(4, 5); + P2 = I211(4, 3, 7); + P3 = I211(4, 5, 7); +} break; +case 8 : +case 12 : +case 136 : +case 140 : +{ + P0 = I31(4, 0); + P1 = I211(4, 1, 5); + P2 = I31(4, 6); + P3 = I211(4, 5, 7); +} break; +case 9 : +case 13 : +case 137 : +case 141 : +{ + P0 = I31(4, 1); + P1 = I211(4, 1, 5); + P2 = I31(4, 6); + P3 = I211(4, 5, 7); +} break; +case 10 : +case 138 : +{ + P1 = I31(4, 2); + P2 = I31(4, 6); + P3 = I211(4, 5, 7); + if (MUL) { + P0 = I31(4, 0); + } else { + P0 = I211(4, 1, 3); + } +} break; +case 11 : +case 139 : +{ + P1 = I31(4, 2); + P2 = I31(4, 6); + P3 = I211(4, 5, 7); + if (MUL) { + P0 = IC(4); + } else { + P0 = I211(4, 1, 3); + } +} break; +case 14 : +case 142 : +{ + P2 = I31(4, 6); + P3 = I211(4, 5, 7); + if (MUL) { + P0 = I31(4, 0); + P1 = I31(4, 5); + } else { + P0 = I332(1, 3, 4); + P1 = I521(4, 1, 5); + } +} break; +case 15 : +case 143 : +{ + P2 = I31(4, 6); + P3 = I211(4, 5, 7); + if (MUL) { + P0 = IC(4); + P1 = I31(4, 5); + } else { + P0 = I332(1, 3, 4); + P1 = I521(4, 1, 5); + } +} break; +case 16 : +case 17 : +case 48 : +case 49 : +{ + P0 = I211(4, 1, 3); + P1 = I31(4, 2); + P2 = I211(4, 3, 7); + P3 = I31(4, 8); +} break; +case 18 : +case 50 : +{ + P0 = I31(4, 0); + P2 = I211(4, 3, 7); + P3 = I31(4, 8); + if (MUR) { + P1 = I31(4, 2); + } else { + P1 = I211(4, 1, 5); + } +} break; +case 19 : +case 51 : +{ + P2 = I211(4, 3, 7); + P3 = I31(4, 8); + if (MUR) { + P0 = I31(4, 3); + P1 = I31(4, 2); + } else { + P0 = I521(4, 1, 3); + P1 = I332(1, 5, 4); + } +} break; +case 20 : +case 21 : +case 52 : +case 53 : +{ + P0 = I211(4, 1, 3); + P1 = I31(4, 1); + P2 = I211(4, 3, 7); + P3 = I31(4, 8); +} break; +case 22 : +case 54 : +{ + P0 = I31(4, 0); + P2 = I211(4, 3, 7); + P3 = I31(4, 8); + if (MUR) { + P1 = IC(4); + } else { + P1 = I211(4, 1, 5); + } +} break; +case 23 : +case 55 : +{ + P2 = I211(4, 3, 7); + P3 = I31(4, 8); + if (MUR) { + P0 = I31(4, 3); + P1 = IC(4); + } else { + P0 = I521(4, 1, 3); + P1 = I332(1, 5, 4); + } +} break; +case 24 : +case 66 : +{ + P0 = I31(4, 0); + P1 = I31(4, 2); + P2 = I31(4, 6); + P3 = I31(4, 8); +} break; +case 25 : +{ + P0 = I31(4, 1); + P1 = I31(4, 2); + P2 = I31(4, 6); + P3 = I31(4, 8); +} break; +case 26 : +case 31 : +case 95 : +{ + P2 = I31(4, 6); + P3 = I31(4, 8); + if (MUL) { + P0 = IC(4); + } else { + P0 = I211(4, 1, 3); + } + if (MUR) { + P1 = IC(4); + } else { + P1 = I211(4, 1, 5); + } +} break; +case 27 : +case 75 : +{ + P1 = I31(4, 2); + P2 = I31(4, 6); + P3 = I31(4, 8); + if (MUL) { + P0 = IC(4); + } else { + P0 = I211(4, 1, 3); + } +} break; +case 28 : +{ + P0 = I31(4, 0); + P1 = I31(4, 1); + P2 = I31(4, 6); + P3 = I31(4, 8); +} break; +case 29 : +{ + P0 = I31(4, 1); + P1 = I31(4, 1); + P2 = I31(4, 6); + P3 = I31(4, 8); +} break; +case 30 : +case 86 : +{ + P0 = I31(4, 0); + P2 = I31(4, 6); + P3 = I31(4, 8); + if (MUR) { + P1 = IC(4); + } else { + P1 = I211(4, 1, 5); + } +} break; +case 40 : +case 44 : +case 168 : +case 172 : +{ + P0 = I31(4, 0); + P1 = I211(4, 1, 5); + P2 = I31(4, 7); + P3 = I211(4, 5, 7); +} break; +case 41 : +case 45 : +case 169 : +case 173 : +{ + P0 = I31(4, 1); + P1 = I211(4, 1, 5); + P2 = I31(4, 7); + P3 = I211(4, 5, 7); +} break; +case 42 : +case 170 : +{ + P1 = I31(4, 2); + P3 = I211(4, 5, 7); + if (MUL) { + P0 = I31(4, 0); + P2 = I31(4, 7); + } else { + P0 = I332(1, 3, 4); + P2 = I521(4, 3, 7); + } +} break; +case 43 : +case 171 : +{ + P1 = I31(4, 2); + P3 = I211(4, 5, 7); + if (MUL) { + P0 = IC(4); + P2 = I31(4, 7); + } else { + P0 = I332(1, 3, 4); + P2 = I521(4, 3, 7); + } +} break; +case 46 : +case 174 : +{ + P1 = I31(4, 5); + P2 = I31(4, 7); + P3 = I211(4, 5, 7); + if (MUL) { + P0 = I31(4, 0); + } else { + P0 = I611(4, 1, 3); + } +} break; +case 47 : +case 175 : +{ + P1 = I31(4, 5); + P2 = I31(4, 7); + P3 = I211(4, 5, 7); + if (MUL) { + P0 = IC(4); + } else { + P0 = I1411(4, 1, 3); + } +} break; +case 56 : +{ + P0 = I31(4, 0); + P1 = I31(4, 2); + P2 = I31(4, 7); + P3 = I31(4, 8); +} break; +case 57 : +{ + P0 = I31(4, 1); + P1 = I31(4, 2); + P2 = I31(4, 7); + P3 = I31(4, 8); +} break; +case 58 : +{ + P2 = I31(4, 7); + P3 = I31(4, 8); + if (MUL) { + P0 = I31(4, 0); + } else { + P0 = I611(4, 1, 3); + } + if (MUR) { + P1 = I31(4, 2); + } else { + P1 = I611(4, 1, 5); + } +} break; +case 59 : +{ + P2 = I31(4, 7); + P3 = I31(4, 8); + if (MUL) { + P0 = IC(4); + } else { + P0 = I211(4, 1, 3); + } + if (MUR) { + P1 = I31(4, 2); + } else { + P1 = I611(4, 1, 5); + } +} break; +case 60 : +{ + P0 = I31(4, 0); + P1 = I31(4, 1); + P2 = I31(4, 7); + P3 = I31(4, 8); +} break; +case 61 : +{ + P0 = I31(4, 1); + P1 = I31(4, 1); + P2 = I31(4, 7); + P3 = I31(4, 8); +} break; +case 62 : +{ + P0 = I31(4, 0); + P2 = I31(4, 7); + P3 = I31(4, 8); + if (MUR) { + P1 = IC(4); + } else { + P1 = I211(4, 1, 5); + } +} break; +case 63 : +{ + P2 = I31(4, 7); + P3 = I31(4, 8); + if (MUL) { + P0 = IC(4); + } else { + P0 = I1411(4, 1, 3); + } + if (MUR) { + P1 = IC(4); + } else { + P1 = I211(4, 1, 5); + } +} break; +case 64 : +case 65 : +case 68 : +case 69 : +{ + P0 = I211(4, 1, 3); + P1 = I211(4, 1, 5); + P2 = I31(4, 6); + P3 = I31(4, 8); +} break; +case 67 : +{ + P0 = I31(4, 3); + P1 = I31(4, 2); + P2 = I31(4, 6); + P3 = I31(4, 8); +} break; +case 70 : +{ + P0 = I31(4, 0); + P1 = I31(4, 5); + P2 = I31(4, 6); + P3 = I31(4, 8); +} break; +case 71 : +{ + P0 = I31(4, 3); + P1 = I31(4, 5); + P2 = I31(4, 6); + P3 = I31(4, 8); +} break; +case 72 : +case 76 : +{ + P0 = I31(4, 0); + P1 = I211(4, 1, 5); + P3 = I31(4, 8); + if (MDL) { + P2 = I31(4, 6); + } else { + P2 = I211(4, 3, 7); + } +} break; +case 73 : +case 77 : +{ + P1 = I211(4, 1, 5); + P3 = I31(4, 8); + if (MDL) { + P0 = I31(4, 1); + P2 = I31(4, 6); + } else { + P0 = I521(4, 3, 1); + P2 = I332(3, 7, 4); + } +} break; +case 74 : +case 107 : +case 123 : +{ + P1 = I31(4, 2); + P3 = I31(4, 8); + if (MDL) { + P2 = IC(4); + } else { + P2 = I211(4, 3, 7); + } + if (MUL) { + P0 = IC(4); + } else { + P0 = I211(4, 1, 3); + } +} break; +case 78 : +{ + P1 = I31(4, 5); + P3 = I31(4, 8); + if (MDL) { + P2 = I31(4, 6); + } else { + P2 = I611(4, 3, 7); + } + if (MUL) { + P0 = I31(4, 0); + } else { + P0 = I611(4, 1, 3); + } +} break; +case 79 : +{ + P1 = I31(4, 5); + P3 = I31(4, 8); + if (MDL) { + P2 = I31(4, 6); + } else { + P2 = I611(4, 3, 7); + } + if (MUL) { + P0 = IC(4); + } else { + P0 = I211(4, 1, 3); + } +} break; +case 80 : +case 81 : +{ + P0 = I211(4, 1, 3); + P1 = I31(4, 2); + P2 = I31(4, 6); + if (MDR) { + P3 = I31(4, 8); + } else { + P3 = I211(4, 5, 7); + } +} break; +case 82 : +case 214 : +case 222 : +{ + P0 = I31(4, 0); + P2 = I31(4, 6); + if (MDR) { + P3 = IC(4); + } else { + P3 = I211(4, 5, 7); + } + if (MUR) { + P1 = IC(4); + } else { + P1 = I211(4, 1, 5); + } +} break; +case 83 : +{ + P0 = I31(4, 3); + P2 = I31(4, 6); + if (MDR) { + P3 = I31(4, 8); + } else { + P3 = I611(4, 5, 7); + } + if (MUR) { + P1 = I31(4, 2); + } else { + P1 = I611(4, 1, 5); + } +} break; +case 84 : +case 85 : +{ + P0 = I211(4, 1, 3); + P2 = I31(4, 6); + if (MDR) { + P1 = I31(4, 1); + P3 = I31(4, 8); + } else { + P1 = I521(4, 5, 1); + P3 = I332(5, 7, 4); + } +} break; +case 87 : +{ + P0 = I31(4, 3); + P2 = I31(4, 6); + if (MDR) { + P3 = I31(4, 8); + } else { + P3 = I611(4, 5, 7); + } + if (MUR) { + P1 = IC(4); + } else { + P1 = I211(4, 1, 5); + } +} break; +case 88 : +case 248 : +case 250 : +{ + P0 = I31(4, 0); + P1 = I31(4, 2); + if (MDL) { + P2 = IC(4); + } else { + P2 = I211(4, 3, 7); + } + if (MDR) { + P3 = IC(4); + } else { + P3 = I211(4, 5, 7); + } +} break; +case 89 : +{ + P0 = I31(4, 1); + P1 = I31(4, 2); + if (MDL) { + P2 = I31(4, 6); + } else { + P2 = I611(4, 3, 7); + } + if (MDR) { + P3 = I31(4, 8); + } else { + P3 = I611(4, 5, 7); + } +} break; +case 90 : +{ + if (MDL) { + P2 = I31(4, 6); + } else { + P2 = I611(4, 3, 7); + } + if (MDR) { + P3 = I31(4, 8); + } else { + P3 = I611(4, 5, 7); + } + if (MUL) { + P0 = I31(4, 0); + } else { + P0 = I611(4, 1, 3); + } + if (MUR) { + P1 = I31(4, 2); + } else { + P1 = I611(4, 1, 5); + } +} break; +case 91 : +{ + if (MDL) { + P2 = I31(4, 6); + } else { + P2 = I611(4, 3, 7); + } + if (MDR) { + P3 = I31(4, 8); + } else { + P3 = I611(4, 5, 7); + } + if (MUL) { + P0 = IC(4); + } else { + P0 = I211(4, 1, 3); + } + if (MUR) { + P1 = I31(4, 2); + } else { + P1 = I611(4, 1, 5); + } +} break; +case 92 : +{ + P0 = I31(4, 0); + P1 = I31(4, 1); + if (MDL) { + P2 = I31(4, 6); + } else { + P2 = I611(4, 3, 7); + } + if (MDR) { + P3 = I31(4, 8); + } else { + P3 = I611(4, 5, 7); + } +} break; +case 93 : +{ + P0 = I31(4, 1); + P1 = I31(4, 1); + if (MDL) { + P2 = I31(4, 6); + } else { + P2 = I611(4, 3, 7); + } + if (MDR) { + P3 = I31(4, 8); + } else { + P3 = I611(4, 5, 7); + } +} break; +case 94 : +{ + if (MDL) { + P2 = I31(4, 6); + } else { + P2 = I611(4, 3, 7); + } + if (MDR) { + P3 = I31(4, 8); + } else { + P3 = I611(4, 5, 7); + } + if (MUL) { + P0 = I31(4, 0); + } else { + P0 = I611(4, 1, 3); + } + if (MUR) { + P1 = IC(4); + } else { + P1 = I211(4, 1, 5); + } +} break; +case 96 : +case 97 : +case 100 : +case 101 : +{ + P0 = I211(4, 1, 3); + P1 = I211(4, 1, 5); + P2 = I31(4, 3); + P3 = I31(4, 8); +} break; +case 98 : +{ + P0 = I31(4, 0); + P1 = I31(4, 2); + P2 = I31(4, 3); + P3 = I31(4, 8); +} break; +case 99 : +{ + P0 = I31(4, 3); + P1 = I31(4, 2); + P2 = I31(4, 3); + P3 = I31(4, 8); +} break; +case 102 : +{ + P0 = I31(4, 0); + P1 = I31(4, 5); + P2 = I31(4, 3); + P3 = I31(4, 8); +} break; +case 103 : +{ + P0 = I31(4, 3); + P1 = I31(4, 5); + P2 = I31(4, 3); + P3 = I31(4, 8); +} break; +case 104 : +case 108 : +{ + P0 = I31(4, 0); + P1 = I211(4, 1, 5); + P3 = I31(4, 8); + if (MDL) { + P2 = IC(4); + } else { + P2 = I211(4, 3, 7); + } +} break; +case 105 : +case 109 : +{ + P1 = I211(4, 1, 5); + P3 = I31(4, 8); + if (MDL) { + P0 = I31(4, 1); + P2 = IC(4); + } else { + P0 = I521(4, 3, 1); + P2 = I332(3, 7, 4); + } +} break; +case 106 : +case 120 : +{ + P0 = I31(4, 0); + P1 = I31(4, 2); + P3 = I31(4, 8); + if (MDL) { + P2 = IC(4); + } else { + P2 = I211(4, 3, 7); + } +} break; +case 110 : +{ + P0 = I31(4, 0); + P1 = I31(4, 5); + P3 = I31(4, 8); + if (MDL) { + P2 = IC(4); + } else { + P2 = I211(4, 3, 7); + } +} break; +case 111 : +{ + P1 = I31(4, 5); + P3 = I31(4, 8); + if (MDL) { + P2 = IC(4); + } else { + P2 = I211(4, 3, 7); + } + if (MUL) { + P0 = IC(4); + } else { + P0 = I1411(4, 1, 3); + } +} break; +case 112 : +case 113 : +{ + P0 = I211(4, 1, 3); + P1 = I31(4, 2); + if (MDR) { + P2 = I31(4, 3); + P3 = I31(4, 8); + } else { + P2 = I521(4, 7, 3); + P3 = I332(5, 7, 4); + } +} break; +case 114 : +{ + P0 = I31(4, 0); + P2 = I31(4, 3); + if (MDR) { + P3 = I31(4, 8); + } else { + P3 = I611(4, 5, 7); + } + if (MUR) { + P1 = I31(4, 2); + } else { + P1 = I611(4, 1, 5); + } +} break; +case 115 : +{ + P0 = I31(4, 3); + P2 = I31(4, 3); + if (MDR) { + P3 = I31(4, 8); + } else { + P3 = I611(4, 5, 7); + } + if (MUR) { + P1 = I31(4, 2); + } else { + P1 = I611(4, 1, 5); + } +} break; +case 116 : +case 117 : +{ + P0 = I211(4, 1, 3); + P1 = I31(4, 1); + P2 = I31(4, 3); + if (MDR) { + P3 = I31(4, 8); + } else { + P3 = I611(4, 5, 7); + } +} break; +case 118 : +{ + P0 = I31(4, 0); + P2 = I31(4, 3); + P3 = I31(4, 8); + if (MUR) { + P1 = IC(4); + } else { + P1 = I211(4, 1, 5); + } +} break; +case 119 : +{ + P2 = I31(4, 3); + P3 = I31(4, 8); + if (MUR) { + P0 = I31(4, 3); + P1 = IC(4); + } else { + P0 = I521(4, 1, 3); + P1 = I332(1, 5, 4); + } +} break; +case 121 : +{ + P0 = I31(4, 1); + P1 = I31(4, 2); + if (MDL) { + P2 = IC(4); + } else { + P2 = I211(4, 3, 7); + } + if (MDR) { + P3 = I31(4, 8); + } else { + P3 = I611(4, 5, 7); + } +} break; +case 122 : +{ + if (MDL) { + P2 = IC(4); + } else { + P2 = I211(4, 3, 7); + } + if (MDR) { + P3 = I31(4, 8); + } else { + P3 = I611(4, 5, 7); + } + if (MUL) { + P0 = I31(4, 0); + } else { + P0 = I611(4, 1, 3); + } + if (MUR) { + P1 = I31(4, 2); + } else { + P1 = I611(4, 1, 5); + } +} break; +case 124 : +{ + P0 = I31(4, 0); + P1 = I31(4, 1); + P3 = I31(4, 8); + if (MDL) { + P2 = IC(4); + } else { + P2 = I211(4, 3, 7); + } +} break; +case 125 : +{ + P1 = I31(4, 1); + P3 = I31(4, 8); + if (MDL) { + P0 = I31(4, 1); + P2 = IC(4); + } else { + P0 = I521(4, 3, 1); + P2 = I332(3, 7, 4); + } +} break; +case 126 : +{ + P0 = I31(4, 0); + P3 = I31(4, 8); + if (MDL) { + P2 = IC(4); + } else { + P2 = I211(4, 3, 7); + } + if (MUR) { + P1 = IC(4); + } else { + P1 = I211(4, 1, 5); + } +} break; +case 127 : +{ + P3 = I31(4, 8); + if (MDL) { + P2 = IC(4); + } else { + P2 = I211(4, 3, 7); + } + if (MUL) { + P0 = IC(4); + } else { + P0 = I1411(4, 1, 3); + } + if (MUR) { + P1 = IC(4); + } else { + P1 = I211(4, 1, 5); + } +} break; +case 144 : +case 145 : +case 176 : +case 177 : +{ + P0 = I211(4, 1, 3); + P1 = I31(4, 2); + P2 = I211(4, 3, 7); + P3 = I31(4, 7); +} break; +case 146 : +case 178 : +{ + P0 = I31(4, 0); + P2 = I211(4, 3, 7); + if (MUR) { + P1 = I31(4, 2); + P3 = I31(4, 7); + } else { + P1 = I332(1, 5, 4); + P3 = I521(4, 5, 7); + } +} break; +case 147 : +case 179 : +{ + P0 = I31(4, 3); + P2 = I211(4, 3, 7); + P3 = I31(4, 7); + if (MUR) { + P1 = I31(4, 2); + } else { + P1 = I611(4, 1, 5); + } +} break; +case 148 : +case 149 : +case 180 : +case 181 : +{ + P0 = I211(4, 1, 3); + P1 = I31(4, 1); + P2 = I211(4, 3, 7); + P3 = I31(4, 7); +} break; +case 150 : +case 182 : +{ + P0 = I31(4, 0); + P2 = I211(4, 3, 7); + if (MUR) { + P1 = IC(4); + P3 = I31(4, 7); + } else { + P1 = I332(1, 5, 4); + P3 = I521(4, 5, 7); + } +} break; +case 151 : +case 183 : +{ + P0 = I31(4, 3); + P2 = I211(4, 3, 7); + P3 = I31(4, 7); + if (MUR) { + P1 = IC(4); + } else { + P1 = I1411(4, 1, 5); + } +} break; +case 152 : +{ + P0 = I31(4, 0); + P1 = I31(4, 2); + P2 = I31(4, 6); + P3 = I31(4, 7); +} break; +case 153 : +{ + P0 = I31(4, 1); + P1 = I31(4, 2); + P2 = I31(4, 6); + P3 = I31(4, 7); +} break; +case 154 : +{ + P2 = I31(4, 6); + P3 = I31(4, 7); + if (MUL) { + P0 = I31(4, 0); + } else { + P0 = I611(4, 1, 3); + } + if (MUR) { + P1 = I31(4, 2); + } else { + P1 = I611(4, 1, 5); + } +} break; +case 155 : +{ + P1 = I31(4, 2); + P2 = I31(4, 6); + P3 = I31(4, 7); + if (MUL) { + P0 = IC(4); + } else { + P0 = I211(4, 1, 3); + } +} break; +case 156 : +{ + P0 = I31(4, 0); + P1 = I31(4, 1); + P2 = I31(4, 6); + P3 = I31(4, 7); +} break; +case 157 : +{ + P0 = I31(4, 1); + P1 = I31(4, 1); + P2 = I31(4, 6); + P3 = I31(4, 7); +} break; +case 158 : +{ + P2 = I31(4, 6); + P3 = I31(4, 7); + if (MUL) { + P0 = I31(4, 0); + } else { + P0 = I611(4, 1, 3); + } + if (MUR) { + P1 = IC(4); + } else { + P1 = I211(4, 1, 5); + } +} break; +case 159 : +{ + P2 = I31(4, 6); + P3 = I31(4, 7); + if (MUL) { + P0 = IC(4); + } else { + P0 = I211(4, 1, 3); + } + if (MUR) { + P1 = IC(4); + } else { + P1 = I1411(4, 1, 5); + } +} break; +case 184 : +{ + P0 = I31(4, 0); + P1 = I31(4, 2); + P2 = I31(4, 7); + P3 = I31(4, 7); +} break; +case 185 : +{ + P0 = I31(4, 1); + P1 = I31(4, 2); + P2 = I31(4, 7); + P3 = I31(4, 7); +} break; +case 186 : +{ + P2 = I31(4, 7); + P3 = I31(4, 7); + if (MUL) { + P0 = I31(4, 0); + } else { + P0 = I611(4, 1, 3); + } + if (MUR) { + P1 = I31(4, 2); + } else { + P1 = I611(4, 1, 5); + } +} break; +case 187 : +{ + P1 = I31(4, 2); + P3 = I31(4, 7); + if (MUL) { + P0 = IC(4); + P2 = I31(4, 7); + } else { + P0 = I332(1, 3, 4); + P2 = I521(4, 3, 7); + } +} break; +case 188 : +{ + P0 = I31(4, 0); + P1 = I31(4, 1); + P2 = I31(4, 7); + P3 = I31(4, 7); +} break; +case 189 : +{ + P0 = I31(4, 1); + P1 = I31(4, 1); + P2 = I31(4, 7); + P3 = I31(4, 7); +} break; +case 190 : +{ + P0 = I31(4, 0); + P2 = I31(4, 7); + if (MUR) { + P1 = IC(4); + P3 = I31(4, 7); + } else { + P1 = I332(1, 5, 4); + P3 = I521(4, 5, 7); + } +} break; +case 191 : +{ + P2 = I31(4, 7); + P3 = I31(4, 7); + if (MUL) { + P0 = IC(4); + } else { + P0 = I1411(4, 1, 3); + } + if (MUR) { + P1 = IC(4); + } else { + P1 = I1411(4, 1, 5); + } +} break; +case 192 : +case 193 : +case 196 : +case 197 : +{ + P0 = I211(4, 1, 3); + P1 = I211(4, 1, 5); + P2 = I31(4, 6); + P3 = I31(4, 5); +} break; +case 194 : +{ + P0 = I31(4, 0); + P1 = I31(4, 2); + P2 = I31(4, 6); + P3 = I31(4, 5); +} break; +case 195 : +{ + P0 = I31(4, 3); + P1 = I31(4, 2); + P2 = I31(4, 6); + P3 = I31(4, 5); +} break; +case 198 : +{ + P0 = I31(4, 0); + P1 = I31(4, 5); + P2 = I31(4, 6); + P3 = I31(4, 5); +} break; +case 199 : +{ + P0 = I31(4, 3); + P1 = I31(4, 5); + P2 = I31(4, 6); + P3 = I31(4, 5); +} break; +case 200 : +case 204 : +{ + P0 = I31(4, 0); + P1 = I211(4, 1, 5); + if (MDL) { + P2 = I31(4, 6); + P3 = I31(4, 5); + } else { + P2 = I332(3, 7, 4); + P3 = I521(4, 7, 5); + } +} break; +case 201 : +case 205 : +{ + P0 = I31(4, 1); + P1 = I211(4, 1, 5); + P3 = I31(4, 5); + if (MDL) { + P2 = I31(4, 6); + } else { + P2 = I611(4, 3, 7); + } +} break; +case 202 : +{ + P1 = I31(4, 2); + P3 = I31(4, 5); + if (MDL) { + P2 = I31(4, 6); + } else { + P2 = I611(4, 3, 7); + } + if (MUL) { + P0 = I31(4, 0); + } else { + P0 = I611(4, 1, 3); + } +} break; +case 203 : +{ + P1 = I31(4, 2); + P2 = I31(4, 6); + P3 = I31(4, 5); + if (MUL) { + P0 = IC(4); + } else { + P0 = I211(4, 1, 3); + } +} break; +case 206 : +{ + P1 = I31(4, 5); + P3 = I31(4, 5); + if (MDL) { + P2 = I31(4, 6); + } else { + P2 = I611(4, 3, 7); + } + if (MUL) { + P0 = I31(4, 0); + } else { + P0 = I611(4, 1, 3); + } +} break; +case 207 : +{ + P2 = I31(4, 6); + P3 = I31(4, 5); + if (MUL) { + P0 = IC(4); + P1 = I31(4, 5); + } else { + P0 = I332(1, 3, 4); + P1 = I521(4, 1, 5); + } +} break; +case 208 : +case 209 : +{ + P0 = I211(4, 1, 3); + P1 = I31(4, 2); + P2 = I31(4, 6); + if (MDR) { + P3 = IC(4); + } else { + P3 = I211(4, 5, 7); + } +} break; +case 210 : +case 216 : +{ + P0 = I31(4, 0); + P1 = I31(4, 2); + P2 = I31(4, 6); + if (MDR) { + P3 = IC(4); + } else { + P3 = I211(4, 5, 7); + } +} break; +case 211 : +{ + P0 = I31(4, 3); + P1 = I31(4, 2); + P2 = I31(4, 6); + if (MDR) { + P3 = IC(4); + } else { + P3 = I211(4, 5, 7); + } +} break; +case 212 : +case 213 : +{ + P0 = I211(4, 1, 3); + P2 = I31(4, 6); + if (MDR) { + P1 = I31(4, 1); + P3 = IC(4); + } else { + P1 = I521(4, 5, 1); + P3 = I332(5, 7, 4); + } +} break; +case 215 : +{ + P0 = I31(4, 3); + P2 = I31(4, 6); + if (MDR) { + P3 = IC(4); + } else { + P3 = I211(4, 5, 7); + } + if (MUR) { + P1 = IC(4); + } else { + P1 = I1411(4, 1, 5); + } +} break; +case 217 : +{ + P0 = I31(4, 1); + P1 = I31(4, 2); + P2 = I31(4, 6); + if (MDR) { + P3 = IC(4); + } else { + P3 = I211(4, 5, 7); + } +} break; +case 218 : +{ + if (MDL) { + P2 = I31(4, 6); + } else { + P2 = I611(4, 3, 7); + } + if (MDR) { + P3 = IC(4); + } else { + P3 = I211(4, 5, 7); + } + if (MUL) { + P0 = I31(4, 0); + } else { + P0 = I611(4, 1, 3); + } + if (MUR) { + P1 = I31(4, 2); + } else { + P1 = I611(4, 1, 5); + } +} break; +case 219 : +{ + P1 = I31(4, 2); + P2 = I31(4, 6); + if (MDR) { + P3 = IC(4); + } else { + P3 = I211(4, 5, 7); + } + if (MUL) { + P0 = IC(4); + } else { + P0 = I211(4, 1, 3); + } +} break; +case 220 : +{ + P0 = I31(4, 0); + P1 = I31(4, 1); + if (MDL) { + P2 = I31(4, 6); + } else { + P2 = I611(4, 3, 7); + } + if (MDR) { + P3 = IC(4); + } else { + P3 = I211(4, 5, 7); + } +} break; +case 221 : +{ + P0 = I31(4, 1); + P2 = I31(4, 6); + if (MDR) { + P1 = I31(4, 1); + P3 = IC(4); + } else { + P1 = I521(4, 5, 1); + P3 = I332(5, 7, 4); + } +} break; +case 223 : +{ + P2 = I31(4, 6); + if (MDR) { + P3 = IC(4); + } else { + P3 = I211(4, 5, 7); + } + if (MUL) { + P0 = IC(4); + } else { + P0 = I211(4, 1, 3); + } + if (MUR) { + P1 = IC(4); + } else { + P1 = I1411(4, 1, 5); + } +} break; +case 224 : +case 225 : +case 228 : +case 229 : +{ + P0 = I211(4, 1, 3); + P1 = I211(4, 1, 5); + P2 = I31(4, 3); + P3 = I31(4, 5); +} break; +case 226 : +{ + P0 = I31(4, 0); + P1 = I31(4, 2); + P2 = I31(4, 3); + P3 = I31(4, 5); +} break; +case 227 : +{ + P0 = I31(4, 3); + P1 = I31(4, 2); + P2 = I31(4, 3); + P3 = I31(4, 5); +} break; +case 230 : +{ + P0 = I31(4, 0); + P1 = I31(4, 5); + P2 = I31(4, 3); + P3 = I31(4, 5); +} break; +case 231 : +{ + P0 = I31(4, 3); + P1 = I31(4, 5); + P2 = I31(4, 3); + P3 = I31(4, 5); +} break; +case 232 : +case 236 : +{ + P0 = I31(4, 0); + P1 = I211(4, 1, 5); + if (MDL) { + P2 = IC(4); + P3 = I31(4, 5); + } else { + P2 = I332(3, 7, 4); + P3 = I521(4, 7, 5); + } +} break; +case 233 : +case 237 : +{ + P0 = I31(4, 1); + P1 = I211(4, 1, 5); + P3 = I31(4, 5); + if (MDL) { + P2 = IC(4); + } else { + P2 = I1411(4, 3, 7); + } +} break; +case 234 : +{ + P1 = I31(4, 2); + P3 = I31(4, 5); + if (MDL) { + P2 = IC(4); + } else { + P2 = I211(4, 3, 7); + } + if (MUL) { + P0 = I31(4, 0); + } else { + P0 = I611(4, 1, 3); + } +} break; +case 235 : +{ + P1 = I31(4, 2); + P3 = I31(4, 5); + if (MDL) { + P2 = IC(4); + } else { + P2 = I1411(4, 3, 7); + } + if (MUL) { + P0 = IC(4); + } else { + P0 = I211(4, 1, 3); + } +} break; +case 238 : +{ + P0 = I31(4, 0); + P1 = I31(4, 5); + if (MDL) { + P2 = IC(4); + P3 = I31(4, 5); + } else { + P2 = I332(3, 7, 4); + P3 = I521(4, 7, 5); + } +} break; +case 239 : +{ + P1 = I31(4, 5); + P3 = I31(4, 5); + if (MDL) { + P2 = IC(4); + } else { + P2 = I1411(4, 3, 7); + } + if (MUL) { + P0 = IC(4); + } else { + P0 = I1411(4, 1, 3); + } +} break; +case 240 : +case 241 : +{ + P0 = I211(4, 1, 3); + P1 = I31(4, 2); + if (MDR) { + P2 = I31(4, 3); + P3 = IC(4); + } else { + P2 = I521(4, 7, 3); + P3 = I332(5, 7, 4); + } +} break; +case 242 : +{ + P0 = I31(4, 0); + P2 = I31(4, 3); + if (MDR) { + P3 = IC(4); + } else { + P3 = I211(4, 5, 7); + } + if (MUR) { + P1 = I31(4, 2); + } else { + P1 = I611(4, 1, 5); + } +} break; +case 243 : +{ + P0 = I31(4, 3); + P1 = I31(4, 2); + if (MDR) { + P2 = I31(4, 3); + P3 = IC(4); + } else { + P2 = I521(4, 7, 3); + P3 = I332(5, 7, 4); + } +} break; +case 244 : +case 245 : +{ + P0 = I211(4, 1, 3); + P1 = I31(4, 1); + P2 = I31(4, 3); + if (MDR) { + P3 = IC(4); + } else { + P3 = I1411(4, 5, 7); + } +} break; +case 246 : +{ + P0 = I31(4, 0); + P2 = I31(4, 3); + if (MDR) { + P3 = IC(4); + } else { + P3 = I1411(4, 5, 7); + } + if (MUR) { + P1 = IC(4); + } else { + P1 = I211(4, 1, 5); + } +} break; +case 247 : +{ + P0 = I31(4, 3); + P2 = I31(4, 3); + if (MDR) { + P3 = IC(4); + } else { + P3 = I1411(4, 5, 7); + } + if (MUR) { + P1 = IC(4); + } else { + P1 = I1411(4, 1, 5); + } +} break; +case 249 : +{ + P0 = I31(4, 1); + P1 = I31(4, 2); + if (MDL) { + P2 = IC(4); + } else { + P2 = I1411(4, 3, 7); + } + if (MDR) { + P3 = IC(4); + } else { + P3 = I211(4, 5, 7); + } +} break; +case 251 : +{ + P1 = I31(4, 2); + if (MDL) { + P2 = IC(4); + } else { + P2 = I1411(4, 3, 7); + } + if (MDR) { + P3 = IC(4); + } else { + P3 = I211(4, 5, 7); + } + if (MUL) { + P0 = IC(4); + } else { + P0 = I211(4, 1, 3); + } +} break; +case 252 : +{ + P0 = I31(4, 0); + P1 = I31(4, 1); + if (MDL) { + P2 = IC(4); + } else { + P2 = I211(4, 3, 7); + } + if (MDR) { + P3 = IC(4); + } else { + P3 = I1411(4, 5, 7); + } +} break; +case 253 : +{ + P0 = I31(4, 1); + P1 = I31(4, 1); + if (MDL) { + P2 = IC(4); + } else { + P2 = I1411(4, 3, 7); + } + if (MDR) { + P3 = IC(4); + } else { + P3 = I1411(4, 5, 7); + } +} break; +case 254 : +{ + P0 = I31(4, 0); + if (MDL) { + P2 = IC(4); + } else { + P2 = I211(4, 3, 7); + } + if (MDR) { + P3 = IC(4); + } else { + P3 = I1411(4, 5, 7); + } + if (MUR) { + P1 = IC(4); + } else { + P1 = I211(4, 1, 5); + } +} break; +case 255 : +{ + if (MDL) { + P2 = IC(4); + } else { + P2 = I1411(4, 3, 7); + } + if (MDR) { + P3 = IC(4); + } else { + P3 = I1411(4, 5, 7); + } + if (MUL) { + P0 = IC(4); + } else { + P0 = I1411(4, 1, 3); + } + if (MUR) { + P1 = IC(4); + } else { + P1 = I1411(4, 1, 5); + } +} break; + +#undef P0 +#undef P1 +#undef P2 +#undef P3 +#undef MUR +#undef MDR +#undef MDL +#undef MUL +#undef IC +#undef I11 +#undef I211 +#undef I31 +#undef I332 +#undef I431 +#undef I521 +#undef I53 +#undef I611 +#undef I71 +#undef I772 +#undef I97 +#undef I1411 +#undef I151 diff --git a/plugins/dfxvideo/hq3x.h b/plugins/dfxvideo/hq3x.h new file mode 100644 index 0000000..4809b79 --- /dev/null +++ b/plugins/dfxvideo/hq3x.h @@ -0,0 +1,2970 @@ +/* + * This file is part of the Advance project. + * + * Copyright (C) 2004 Andrea Mazzoleni + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * In addition, as a special exception, Andrea Mazzoleni + * gives permission to link the code of this program with + * the MAME library (or with modified versions of MAME that use the + * same license as MAME), and distribute linked combinations including + * the two. You must obey the GNU General Public License in all + * respects for all of the code used other than MAME. If you modify + * this file, you may extend this exception to your version of the + * file, but you are not obligated to do so. If you do not wish to + * do so, delete this exception statement from your version. + */ + +/* + * This effect is a rewritten implementation of the hq effect made by Maxim Stepin + */ + +#define P0 dst0[0] +#define P1 dst0[1] +#define P2 dst0[2] +#define P3 dst1[0] +#define P4 dst1[1] +#define P5 dst1[2] +#define P6 dst2[0] +#define P7 dst2[1] +#define P8 dst2[2] +#define MUR interp_32_diff(c[1], c[5]) +#define MDR interp_32_diff(c[5], c[7]) +#define MDL interp_32_diff(c[7], c[3]) +#define MUL interp_32_diff(c[3], c[1]) +#define IC(p0) c[p0] +#define I11(p0,p1) interp_32_11(c[p0], c[p1]) +#define I211(p0,p1,p2) interp_32_211(c[p0], c[p1], c[p2]) +#define I31(p0,p1) interp_32_31(c[p0], c[p1]) +#define I332(p0,p1,p2) interp_32_332(c[p0], c[p1], c[p2]) +#define I431(p0,p1,p2) interp_32_431(c[p0], c[p1], c[p2]) +#define I521(p0,p1,p2) interp_32_521(c[p0], c[p1], c[p2]) +#define I53(p0,p1) interp_32_53(c[p0], c[p1]) +#define I611(p0,p1,p2) interp_32_611(c[p0], c[p1], c[p2]) +#define I71(p0,p1) interp_32_71(c[p0], c[p1]) +#define I772(p0,p1,p2) interp_32_772(c[p0], c[p1], c[p2]) +#define I97(p0,p1) interp_32_97(c[p0], c[p1]) +#define I1411(p0,p1,p2) interp_32_1411(c[p0], c[p1], c[p2]) +#define I151(p0,p1) interp_32_151(c[p0], c[p1]) + +case 0 : +case 1 : +case 4 : +case 5 : +case 32 : +case 33 : +case 36 : +case 37 : +case 128 : +case 129 : +case 132 : +case 133 : +case 160 : +case 161 : +case 164 : +case 165 : +{ +P0 = I211(4, 1, 3); +P1 = I31(4,1); +P2 = I211(4, 1, 5); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I211(4, 3, 7); +P7 = I31(4, 7); +P8 = I211(4, 5, 7); + +} break; +case 2 : +case 34 : +case 130 : +case 162 : +{ +P0 = I31(4, 0); +P1 = IC(4); +P2 = I31(4, 2); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I211(4, 3, 7); +P7 = I31(4, 7); +P8 = I211(4, 5, 7); +} break; +case 3 : +case 35 : +case 131 : +case 163 : +{ +P0 = I31(4, 3); +P1 = IC(4); +P2 = I31(4, 2); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I211(4, 3, 7); +P7 = I31(4, 7); +P8 = I211(4, 5, 7); +} break; +case 6 : +case 38 : +case 134 : +case 166 : +{ +P0 = I31(4, 0); +P1 = IC(4); +P2 = I31(4,5); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I211(4, 3, 7); +P7 = I31(4, 7); +P8 = I211(4, 5, 7); +} break; +case 7 : +case 39 : +case 135 : +case 167 : +{ +P0 = I31(4, 3); +P1 = IC(4); +P2 = I31(4,5); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I211(4, 3, 7); +P7 = I31(4, 7); +P8 = I211(4, 5, 7); +} break; +case 8 : +case 12 : +case 136 : +case 140 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I211(4, 1, 5); +P3 = IC(4); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I211(4, 5, 7); +} break; +case 9 : +case 13 : +case 137 : +case 141 : +{ +P0 = I31(4,1); +P1 = I31(4,1); +P2 = I211(4, 1, 5); +P3 = IC(4); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I211(4, 5, 7); +} break; +case 10 : +case 138 : +{ +P2 = I31(4, 2); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I211(4, 5, 7); +if (MUL) { + P0 = I31(4, 0); + P1 = IC(4); + P3 = IC(4); +} else { + P0 = I772(1, 3, 4); + P1 = I71(4, 1); + P3 = I71(4, 3); +} +} break; +case 11 : +case 139 : +{ +P2 = I31(4, 2); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I211(4, 5, 7); +if (MUL) { + P0 = IC(4); + P1 = IC(4); + P3 = IC(4); +} else { + P0 = I772(1, 3, 4); + P1 = I71(4, 1); + P3 = I71(4, 3); +} +} break; +case 14 : +case 142 : +{ +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I211(4, 5, 7); +if (MUL) { + P0 = I31(4, 0); + P1 = IC(4); + P2 = I31(4,5); + P3 = IC(4); +} else { + P0 = I11(1, 3); + P1 = I31(1, 4); + P2 = I211(4, 1, 5); + P3 = I31(4, 3); +} +} break; +case 15 : +case 143 : +{ +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I211(4, 5, 7); +if (MUL) { + P0 = IC(4); + P1 = IC(4); + P2 = I31(4,5); + P3 = IC(4); +} else { + P0 = I11(1, 3); + P1 = I31(1, 4); + P2 = I211(4, 1, 5); + P3 = I31(4, 3); +} +} break; +case 16 : +case 17 : +case 48 : +case 49 : +{ +P0 = I211(4, 1, 3); +P1 = I31(4,1); +P2 = I31(4, 2); +P3 = I31(4, 3); +P4 = IC(4); +P5 = IC(4); +P6 = I211(4, 3, 7); +P7 = I31(4, 7); +P8 = I31(4, 8); +} break; +case 18 : +case 50 : +{ +P0 = I31(4, 0); +P3 = I31(4, 3); +P4 = IC(4); +P6 = I211(4, 3, 7); +P7 = I31(4, 7); +P8 = I31(4, 8); +if (MUR) { + P1 = IC(4); + P2 = I31(4, 2); + P5 = IC(4); +} else { + P1 = I71(4, 1); + P2 = I772(1, 5, 4); + P5 = I71(4, 5); +} +} break; +case 19 : +case 51 : +{ +P3 = I31(4, 3); +P4 = IC(4); +P6 = I211(4, 3, 7); +P7 = I31(4, 7); +P8 = I31(4, 8); +if (MUR) { + P0 = I31(4, 3); + P1 = IC(4); + P2 = I31(4, 2); + P5 = IC(4); +} else { + P0 = I211(4, 1, 3); + P1 = I31(1, 4); + P2 = I11(1, 5); + P5 = I31(4,5); +} +} break; +case 20 : +case 21 : +case 52 : +case 53 : +{ +P0 = I211(4, 1, 3); +P1 = I31(4,1); +P2 = I31(4,1); +P3 = I31(4, 3); +P4 = IC(4); +P5 = IC(4); +P6 = I211(4, 3, 7); +P7 = I31(4, 7); +P8 = I31(4, 8); +} break; +case 22 : +case 54 : +{ +P0 = I31(4, 0); +P3 = I31(4, 3); +P4 = IC(4); +P6 = I211(4, 3, 7); +P7 = I31(4, 7); +P8 = I31(4, 8); +if (MUR) { + P1 = IC(4); + P2 = IC(4); + P5 = IC(4); +} else { + P1 = I71(4, 1); + P2 = I772(1, 5, 4); + P5 = I71(4, 5); +} +} break; +case 23 : +case 55 : +{ +P3 = I31(4, 3); +P4 = IC(4); +P6 = I211(4, 3, 7); +P7 = I31(4, 7); +P8 = I31(4, 8); +if (MUR) { + P0 = I31(4, 3); + P1 = IC(4); + P2 = IC(4); + P5 = IC(4); +} else { + P0 = I211(4, 1, 3); + P1 = I31(1, 4); + P2 = I11(1, 5); + P5 = I31(4,5); +} +} break; +case 24 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I31(4, 2); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I31(4, 8); +} break; +case 25 : +{ +P0 = I31(4,1); +P1 = I31(4,1); +P2 = I31(4, 2); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I31(4, 8); +} break; +case 26 : +case 31 : +{ +P1 = IC(4); +P4 = IC(4); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I31(4, 8); +if (MUL) { + P0 = IC(4); + P3 = IC(4); +} else { + P0 = I772(1, 3, 4); + P3 = I71(4, 3); +} +if (MUR) { + P2 = IC(4); + P5 = IC(4); +} else { + P2 = I772(1, 5, 4); + P5 = I71(4, 5); +} +} break; +case 27 : +{ +P2 = I31(4, 2); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I31(4, 8); +if (MUL) { + P0 = IC(4); + P1 = IC(4); + P3 = IC(4); +} else { + P0 = I772(1, 3, 4); + P1 = I71(4, 1); + P3 = I71(4, 3); +} +} break; +case 28 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I31(4,1); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I31(4, 8); +} break; +case 29 : +{ +P0 = I31(4,1); +P1 = I31(4,1); +P2 = I31(4,1); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I31(4, 8); +} break; +case 30 : +{ +P0 = I31(4, 0); +P3 = IC(4); +P4 = IC(4); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I31(4, 8); +if (MUR) { + P1 = IC(4); + P2 = IC(4); + P5 = IC(4); +} else { + P1 = I71(4, 1); + P2 = I772(1, 5, 4); + P5 = I71(4, 5); +} +} break; +case 40 : +case 44 : +case 168 : +case 172 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I211(4, 1, 5); +P3 = IC(4); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 7); +P7 = I31(4, 7); +P8 = I211(4, 5, 7); +} break; +case 41 : +case 45 : +case 169 : +case 173 : +{ +P0 = I31(4,1); +P1 = I31(4,1); +P2 = I211(4, 1, 5); +P3 = IC(4); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 7); +P7 = I31(4, 7); +P8 = I211(4, 5, 7); +} break; +case 42 : +case 170 : +{ +P2 = I31(4, 2); +P4 = IC(4); +P5 = I31(4,5); +P7 = I31(4, 7); +P8 = I211(4, 5, 7); +if (MUL) { + P0 = I31(4, 0); + P1 = IC(4); + P3 = IC(4); + P6 = I31(4, 7); +} else { + P0 = I11(1, 3); + P1 = I31(4,1); + P3 = I31(3, 4); + P6 = I211(4, 3, 7); +} +} break; +case 43 : +case 171 : +{ +P2 = I31(4, 2); +P4 = IC(4); +P5 = I31(4,5); +P7 = I31(4, 7); +P8 = I211(4, 5, 7); +if (MUL) { + P0 = IC(4); + P1 = IC(4); + P3 = IC(4); + P6 = I31(4, 7); +} else { + P0 = I11(1, 3); + P1 = I31(4,1); + P3 = I31(3, 4); + P6 = I211(4, 3, 7); +} +} break; +case 46 : +case 174 : +{ +P1 = IC(4); +P2 = I31(4,5); +P3 = IC(4); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 7); +P7 = I31(4, 7); +P8 = I211(4, 5, 7); +if (MUL) { + P0 = I31(4, 0); +} else { + P0 = I211(4, 1, 3); +} +} break; +case 47 : +case 175 : +{ +P1 = IC(4); +P2 = I31(4,5); +P3 = IC(4); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 7); +P7 = I31(4, 7); +P8 = I211(4, 5, 7); +if (MUL) { + P0 = IC(4); +} else { + P0 = I211(4, 1, 3); +} +} break; +case 56 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I31(4, 2); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 7); +P7 = I31(4, 7); +P8 = I31(4, 8); +} break; +case 57 : +{ +P0 = I31(4,1); +P1 = I31(4,1); +P2 = I31(4, 2); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 7); +P7 = I31(4, 7); +P8 = I31(4, 8); +} break; +case 58 : +{ +P1 = IC(4); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 7); +P7 = I31(4, 7); +P8 = I31(4, 8); +if (MUL) { + P0 = I31(4, 0); +} else { + P0 = I211(4, 1, 3); +} +if (MUR) { + P2 = I31(4, 2); +} else { + P2 = I211(4, 1, 5); +} +} break; +case 59 : +{ +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 7); +P7 = I31(4, 7); +P8 = I31(4, 8); +if (MUL) { + P0 = IC(4); + P1 = IC(4); + P3 = IC(4); +} else { + P0 = I772(1, 3, 4); + P1 = I71(4, 1); + P3 = I71(4, 3); +} +if (MUR) { + P2 = I31(4, 2); +} else { + P2 = I211(4, 1, 5); +} +} break; +case 60 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I31(4,1); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 7); +P7 = I31(4, 7); +P8 = I31(4, 8); +} break; +case 61 : +{ +P0 = I31(4,1); +P1 = I31(4,1); +P2 = I31(4,1); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 7); +P7 = I31(4, 7); +P8 = I31(4, 8); +} break; +case 62 : +{ +P0 = I31(4, 0); +P3 = IC(4); +P4 = IC(4); +P6 = I31(4, 7); +P7 = I31(4, 7); +P8 = I31(4, 8); +if (MUR) { + P1 = IC(4); + P2 = IC(4); + P5 = IC(4); +} else { + P1 = I71(4, 1); + P2 = I772(1, 5, 4); + P5 = I71(4, 5); +} +} break; +case 63 : +{ +P1 = IC(4); +P3 = IC(4); +P4 = IC(4); +P6 = I31(4, 7); +P7 = I31(4, 7); +P8 = I31(4, 8); +if (MUL) { + P0 = IC(4); +} else { + P0 = I211(4, 1, 3); +} +if (MUR) { + P2 = IC(4); + P5 = IC(4); +} else { + P2 = I772(1, 5, 4); + P5 = I71(4, 5); +} +} break; +case 64 : +case 65 : +case 68 : +case 69 : +{ +P0 = I211(4, 1, 3); +P1 = I31(4,1); +P2 = I211(4, 1, 5); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 6); +P7 = IC(4); +P8 = I31(4, 8); +} break; +case 66 : +{ +P0 = I31(4, 0); +P1 = IC(4); +P2 = I31(4, 2); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 6); +P7 = IC(4); +P8 = I31(4, 8); +} break; +case 67 : +{ +P0 = I31(4, 3); +P1 = IC(4); +P2 = I31(4, 2); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 6); +P7 = IC(4); +P8 = I31(4, 8); +} break; +case 70 : +{ +P0 = I31(4, 0); +P1 = IC(4); +P2 = I31(4,5); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 6); +P7 = IC(4); +P8 = I31(4, 8); +} break; +case 71 : +{ +P0 = I31(4, 3); +P1 = IC(4); +P2 = I31(4,5); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 6); +P7 = IC(4); +P8 = I31(4, 8); +} break; +case 72 : +case 76 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I211(4, 1, 5); +P4 = IC(4); +P5 = I31(4,5); +P8 = I31(4, 8); +if (MDL) { + P3 = IC(4); + P6 = I31(4, 6); + P7 = IC(4); +} else { + P3 = I71(4, 3); + P6 = I772(3, 7, 4); + P7 = I71(4, 7); +} +} break; +case 73 : +case 77 : +{ +P1 = I31(4,1); +P2 = I211(4, 1, 5); +P4 = IC(4); +P5 = I31(4,5); +P8 = I31(4, 8); +if (MDL) { + P0 = I31(4,1); + P3 = IC(4); + P6 = I31(4, 6); + P7 = IC(4); +} else { + P0 = I211(4, 1, 3); + P3 = I31(3, 4); + P6 = I11(3, 7); + P7 = I31(4, 7); +} +} break; +case 74 : +case 107 : +{ +P2 = I31(4, 2); +P3 = IC(4); +P4 = IC(4); +P5 = I31(4,5); +P8 = I31(4, 8); +if (MDL) { + P6 = IC(4); + P7 = IC(4); +} else { + P6 = I772(3, 7, 4); + P7 = I71(4, 7); +} +if (MUL) { + P0 = IC(4); + P1 = IC(4); +} else { + P0 = I772(1, 3, 4); + P1 = I71(4, 1); +} +} break; +case 75 : +{ +P2 = I31(4, 2); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 6); +P7 = IC(4); +P8 = I31(4, 8); +if (MUL) { + P0 = IC(4); + P1 = IC(4); + P3 = IC(4); +} else { + P0 = I772(1, 3, 4); + P1 = I71(4, 1); + P3 = I71(4, 3); +} +} break; +case 78 : +{ +P1 = IC(4); +P2 = I31(4,5); +P3 = IC(4); +P4 = IC(4); +P5 = I31(4,5); +P7 = IC(4); +P8 = I31(4, 8); +if (MDL) { + P6 = I31(4, 6); +} else { + P6 = I211(4, 3, 7); +} +if (MUL) { + P0 = I31(4, 0); +} else { + P0 = I211(4, 1, 3); +} +} break; +case 79 : +{ +P2 = I31(4,5); +P4 = IC(4); +P5 = I31(4,5); +P7 = IC(4); +P8 = I31(4, 8); +if (MDL) { + P6 = I31(4, 6); +} else { + P6 = I211(4, 3, 7); +} +if (MUL) { + P0 = IC(4); + P1 = IC(4); + P3 = IC(4); +} else { + P0 = I772(1, 3, 4); + P1 = I71(4, 1); + P3 = I71(4, 3); +} +} break; +case 80 : +case 81 : +{ +P0 = I211(4, 1, 3); +P1 = I31(4,1); +P2 = I31(4, 2); +P3 = I31(4, 3); +P4 = IC(4); +P6 = I31(4, 6); +if (MDR) { + P5 = IC(4); + P7 = IC(4); + P8 = I31(4, 8); +} else { + P5 = I71(4, 5); + P7 = I71(4, 7); + P8 = I772(5, 7, 4); +} +} break; +case 82 : +case 214 : +{ +P0 = I31(4, 0); +P3 = I31(4, 3); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 6); +if (MDR) { + P7 = IC(4); + P8 = IC(4); +} else { + P7 = I71(4, 7); + P8 = I772(5, 7, 4); +} +if (MUR) { + P1 = IC(4); + P2 = IC(4); +} else { + P1 = I71(4, 1); + P2 = I772(1, 5, 4); +} +} break; +case 83 : +{ +P0 = I31(4, 3); +P1 = IC(4); +P3 = I31(4, 3); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 6); +P7 = IC(4); +if (MDR) { + P8 = I31(4, 8); +} else { + P8 = I211(4, 5, 7); +} +if (MUR) { + P2 = I31(4, 2); +} else { + P2 = I211(4, 1, 5); +} +} break; +case 84 : +case 85 : +{ +P0 = I211(4, 1, 3); +P1 = I31(4,1); +P3 = I31(4, 3); +P4 = IC(4); +P6 = I31(4, 6); +if (MDR) { + P2 = I31(4,1); + P5 = IC(4); + P7 = IC(4); + P8 = I31(4, 8); +} else { + P2 = I211(4, 1, 5); + P5 = I31(5, 4); + P7 = I31(4, 7); + P8 = I11(5, 7); +} +} break; +case 86 : +{ +P0 = I31(4, 0); +P3 = I31(4, 3); +P4 = IC(4); +P6 = I31(4, 6); +P7 = IC(4); +P8 = I31(4, 8); +if (MUR) { + P1 = IC(4); + P2 = IC(4); + P5 = IC(4); +} else { + P1 = I71(4, 1); + P2 = I772(1, 5, 4); + P5 = I71(4, 5); +} +} break; +case 87 : +{ +P0 = I31(4, 3); +P3 = I31(4, 3); +P4 = IC(4); +P6 = I31(4, 6); +P7 = IC(4); +if (MDR) { + P8 = I31(4, 8); +} else { + P8 = I211(4, 5, 7); +} +if (MUR) { + P1 = IC(4); + P2 = IC(4); + P5 = IC(4); +} else { + P1 = I71(4, 1); + P2 = I772(1, 5, 4); + P5 = I71(4, 5); +} +} break; +case 88 : +case 248 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I31(4, 2); +P4 = IC(4); +P7 = IC(4); +if (MDL) { + P3 = IC(4); + P6 = IC(4); +} else { + P3 = I71(4, 3); + P6 = I772(3, 7, 4); +} +if (MDR) { + P5 = IC(4); + P8 = IC(4); +} else { + P5 = I71(4, 5); + P8 = I772(5, 7, 4); +} +} break; +case 89 : +{ +P0 = I31(4,1); +P1 = I31(4,1); +P2 = I31(4, 2); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P7 = IC(4); +if (MDL) { + P6 = I31(4, 6); +} else { + P6 = I211(4, 3, 7); +} +if (MDR) { + P8 = I31(4, 8); +} else { + P8 = I211(4, 5, 7); +} +} break; +case 90 : +{ +P1 = IC(4); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P7 = IC(4); +if (MDL) { + P6 = I31(4, 6); +} else { + P6 = I211(4, 3, 7); +} +if (MDR) { + P8 = I31(4, 8); +} else { + P8 = I211(4, 5, 7); +} +if (MUL) { + P0 = I31(4, 0); +} else { + P0 = I211(4, 1, 3); +} +if (MUR) { + P2 = I31(4, 2); +} else { + P2 = I211(4, 1, 5); +} +} break; +case 91 : +{ +P4 = IC(4); +P5 = IC(4); +P7 = IC(4); +if (MDL) { + P6 = I31(4, 6); +} else { + P6 = I211(4, 3, 7); +} +if (MDR) { + P8 = I31(4, 8); +} else { + P8 = I211(4, 5, 7); +} +if (MUL) { + P0 = IC(4); + P1 = IC(4); + P3 = IC(4); +} else { + P0 = I772(1, 3, 4); + P1 = I71(4, 1); + P3 = I71(4, 3); +} +if (MUR) { + P2 = I31(4, 2); +} else { + P2 = I211(4, 1, 5); +} +} break; +case 92 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I31(4,1); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P7 = IC(4); +if (MDL) { + P6 = I31(4, 6); +} else { + P6 = I211(4, 3, 7); +} +if (MDR) { + P8 = I31(4, 8); +} else { + P8 = I211(4, 5, 7); +} +} break; +case 93 : +{ +P0 = I31(4,1); +P1 = I31(4,1); +P2 = I31(4,1); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P7 = IC(4); +if (MDL) { + P6 = I31(4, 6); +} else { + P6 = I211(4, 3, 7); +} +if (MDR) { + P8 = I31(4, 8); +} else { + P8 = I211(4, 5, 7); +} +} break; +case 94 : +{ +P3 = IC(4); +P4 = IC(4); +P7 = IC(4); +if (MDL) { + P6 = I31(4, 6); +} else { + P6 = I211(4, 3, 7); +} +if (MDR) { + P8 = I31(4, 8); +} else { + P8 = I211(4, 5, 7); +} +if (MUL) { + P0 = I31(4, 0); +} else { + P0 = I211(4, 1, 3); +} +if (MUR) { + P1 = IC(4); + P2 = IC(4); + P5 = IC(4); +} else { + P1 = I71(4, 1); + P2 = I772(1, 5, 4); + P5 = I71(4, 5); +} +} break; +case 95 : +{ +P1 = IC(4); +P4 = IC(4); +P6 = I31(4, 6); +P7 = IC(4); +P8 = I31(4, 8); +if (MUL) { + P0 = IC(4); + P3 = IC(4); +} else { + P0 = I772(1, 3, 4); + P3 = I71(4, 3); +} +if (MUR) { + P2 = IC(4); + P5 = IC(4); +} else { + P2 = I772(1, 5, 4); + P5 = I71(4, 5); +} +} break; +case 96 : +case 97 : +case 100 : +case 101 : +{ +P0 = I211(4, 1, 3); +P1 = I31(4,1); +P2 = I211(4, 1, 5); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 3); +P7 = IC(4); +P8 = I31(4, 8); +} break; +case 98 : +{ +P0 = I31(4, 0); +P1 = IC(4); +P2 = I31(4, 2); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 3); +P7 = IC(4); +P8 = I31(4, 8); +} break; +case 99 : +{ +P0 = I31(4, 3); +P1 = IC(4); +P2 = I31(4, 2); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 3); +P7 = IC(4); +P8 = I31(4, 8); +} break; +case 102 : +{ +P0 = I31(4, 0); +P1 = IC(4); +P2 = I31(4,5); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 3); +P7 = IC(4); +P8 = I31(4, 8); +} break; +case 103 : +{ +P0 = I31(4, 3); +P1 = IC(4); +P2 = I31(4,5); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 3); +P7 = IC(4); +P8 = I31(4, 8); +} break; +case 104 : +case 108 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I211(4, 1, 5); +P4 = IC(4); +P5 = I31(4,5); +P8 = I31(4, 8); +if (MDL) { + P3 = IC(4); + P6 = IC(4); + P7 = IC(4); +} else { + P3 = I71(4, 3); + P6 = I772(3, 7, 4); + P7 = I71(4, 7); +} +} break; +case 105 : +case 109 : +{ +P1 = I31(4,1); +P2 = I211(4, 1, 5); +P4 = IC(4); +P5 = I31(4,5); +P8 = I31(4, 8); +if (MDL) { + P0 = I31(4,1); + P3 = IC(4); + P6 = IC(4); + P7 = IC(4); +} else { + P0 = I211(4, 1, 3); + P3 = I31(3, 4); + P6 = I11(3, 7); + P7 = I31(4, 7); +} +} break; +case 106 : +{ +P0 = I31(4, 0); +P1 = IC(4); +P2 = I31(4, 2); +P4 = IC(4); +P5 = I31(4,5); +P8 = I31(4, 8); +if (MDL) { + P3 = IC(4); + P6 = IC(4); + P7 = IC(4); +} else { + P3 = I71(4, 3); + P6 = I772(3, 7, 4); + P7 = I71(4, 7); +} +} break; +case 110 : +{ +P0 = I31(4, 0); +P1 = IC(4); +P2 = I31(4,5); +P4 = IC(4); +P5 = I31(4,5); +P8 = I31(4, 8); +if (MDL) { + P3 = IC(4); + P6 = IC(4); + P7 = IC(4); +} else { + P3 = I71(4, 3); + P6 = I772(3, 7, 4); + P7 = I71(4, 7); +} +} break; +case 111 : +{ +P1 = IC(4); +P2 = I31(4,5); +P3 = IC(4); +P4 = IC(4); +P5 = I31(4,5); +P8 = I31(4, 8); +if (MDL) { + P6 = IC(4); + P7 = IC(4); +} else { + P6 = I772(3, 7, 4); + P7 = I71(4, 7); +} +if (MUL) { + P0 = IC(4); +} else { + P0 = I211(4, 1, 3); +} +} break; +case 112 : +case 113 : +{ +P0 = I211(4, 1, 3); +P1 = I31(4,1); +P2 = I31(4, 2); +P3 = I31(4, 3); +P4 = IC(4); +if (MDR) { + P5 = IC(4); + P6 = I31(4, 3); + P7 = IC(4); + P8 = I31(4, 8); +} else { + P5 = I31(4,5); + P6 = I211(4, 3, 7); + P7 = I31(7, 4); + P8 = I11(5, 7); +} +} break; +case 114 : +{ +P0 = I31(4, 0); +P1 = IC(4); +P3 = I31(4, 3); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 3); +P7 = IC(4); +if (MDR) { + P8 = I31(4, 8); +} else { + P8 = I211(4, 5, 7); +} +if (MUR) { + P2 = I31(4, 2); +} else { + P2 = I211(4, 1, 5); +} +} break; +case 115 : +{ +P0 = I31(4, 3); +P1 = IC(4); +P3 = I31(4, 3); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 3); +P7 = IC(4); +if (MDR) { + P8 = I31(4, 8); +} else { + P8 = I211(4, 5, 7); +} +if (MUR) { + P2 = I31(4, 2); +} else { + P2 = I211(4, 1, 5); +} +} break; +case 116 : +case 117 : +{ +P0 = I211(4, 1, 3); +P1 = I31(4,1); +P2 = I31(4,1); +P3 = I31(4, 3); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 3); +P7 = IC(4); +if (MDR) { + P8 = I31(4, 8); +} else { + P8 = I211(4, 5, 7); +} +} break; +case 118 : +{ +P0 = I31(4, 0); +P3 = I31(4, 3); +P4 = IC(4); +P6 = I31(4, 3); +P7 = IC(4); +P8 = I31(4, 8); +if (MUR) { + P1 = IC(4); + P2 = IC(4); + P5 = IC(4); +} else { + P1 = I71(4, 1); + P2 = I772(1, 5, 4); + P5 = I71(4, 5); +} +} break; +case 119 : +{ +P3 = I31(4, 3); +P4 = IC(4); +P6 = I31(4, 3); +P7 = IC(4); +P8 = I31(4, 8); +if (MUR) { + P0 = I31(4, 3); + P1 = IC(4); + P2 = IC(4); + P5 = IC(4); +} else { + P0 = I211(4, 1, 3); + P1 = I31(1, 4); + P2 = I11(1, 5); + P5 = I31(4,5); +} +} break; +case 120 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I31(4, 2); +P4 = IC(4); +P5 = IC(4); +P8 = I31(4, 8); +if (MDL) { + P3 = IC(4); + P6 = IC(4); + P7 = IC(4); +} else { + P3 = I71(4, 3); + P6 = I772(3, 7, 4); + P7 = I71(4, 7); +} +} break; +case 121 : +{ +P0 = I31(4,1); +P1 = I31(4,1); +P2 = I31(4, 2); +P4 = IC(4); +P5 = IC(4); +if (MDL) { + P3 = IC(4); + P6 = IC(4); + P7 = IC(4); +} else { + P3 = I71(4, 3); + P6 = I772(3, 7, 4); + P7 = I71(4, 7); +} +if (MDR) { + P8 = I31(4, 8); +} else { + P8 = I211(4, 5, 7); +} +} break; +case 122 : +{ +P1 = IC(4); +P4 = IC(4); +P5 = IC(4); +if (MDL) { + P3 = IC(4); + P6 = IC(4); + P7 = IC(4); +} else { + P3 = I71(4, 3); + P6 = I772(3, 7, 4); + P7 = I71(4, 7); +} +if (MDR) { + P8 = I31(4, 8); +} else { + P8 = I211(4, 5, 7); +} +if (MUL) { + P0 = I31(4, 0); +} else { + P0 = I211(4, 1, 3); +} +if (MUR) { + P2 = I31(4, 2); +} else { + P2 = I211(4, 1, 5); +} +} break; +case 123 : +{ +P2 = I31(4, 2); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P8 = I31(4, 8); +if (MDL) { + P6 = IC(4); + P7 = IC(4); +} else { + P6 = I772(3, 7, 4); + P7 = I71(4, 7); +} +if (MUL) { + P0 = IC(4); + P1 = IC(4); +} else { + P0 = I772(1, 3, 4); + P1 = I71(4, 1); +} +} break; +case 124 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I31(4,1); +P4 = IC(4); +P5 = IC(4); +P8 = I31(4, 8); +if (MDL) { + P3 = IC(4); + P6 = IC(4); + P7 = IC(4); +} else { + P3 = I71(4, 3); + P6 = I772(3, 7, 4); + P7 = I71(4, 7); +} +} break; +case 125 : +{ +P1 = I31(4,1); +P2 = I31(4,1); +P4 = IC(4); +P5 = IC(4); +P8 = I31(4, 8); +if (MDL) { + P0 = I31(4,1); + P3 = IC(4); + P6 = IC(4); + P7 = IC(4); +} else { + P0 = I211(4, 1, 3); + P3 = I31(3, 4); + P6 = I11(3, 7); + P7 = I31(4, 7); +} +} break; +case 126 : +{ +P0 = I31(4, 0); +P4 = IC(4); +P8 = I31(4, 8); +if (MDL) { + P3 = IC(4); + P6 = IC(4); + P7 = IC(4); +} else { + P3 = I71(4, 3); + P6 = I772(3, 7, 4); + P7 = I71(4, 7); +} +if (MUR) { + P1 = IC(4); + P2 = IC(4); + P5 = IC(4); +} else { + P1 = I71(4, 1); + P2 = I772(1, 5, 4); + P5 = I71(4, 5); +} +} break; +case 127 : +{ +P4 = IC(4); +P8 = I31(4, 8); +if (MDL) { + P6 = IC(4); + P7 = IC(4); +} else { + P6 = I772(3, 7, 4); + P7 = I71(4, 7); +} +if (MUL) { + P0 = IC(4); + P1 = IC(4); + P3 = IC(4); +} else { + P0 = I211(4, 1, 3); + P1 = I71(4, 1); + P3 = I71(4, 3); +} +if (MUR) { + P2 = IC(4); + P5 = IC(4); +} else { + P2 = I772(1, 5, 4); + P5 = I71(4, 5); +} +} break; +case 144 : +case 145 : +case 176 : +case 177 : +{ +P0 = I211(4, 1, 3); +P1 = I31(4,1); +P2 = I31(4, 2); +P3 = I31(4, 3); +P4 = IC(4); +P5 = IC(4); +P6 = I211(4, 3, 7); +P7 = I31(4, 7); +P8 = I31(4, 7); +} break; +case 146 : +case 178 : +{ +P0 = I31(4, 0); +P3 = I31(4, 3); +P4 = IC(4); +P6 = I211(4, 3, 7); +P7 = I31(4, 7); +if (MUR) { + P1 = IC(4); + P2 = I31(4, 2); + P5 = IC(4); + P8 = I31(4, 7); +} else { + P1 = I31(4,1); + P2 = I11(1, 5); + P5 = I31(5, 4); + P8 = I211(4, 5, 7); +} +} break; +case 147 : +case 179 : +{ +P0 = I31(4, 3); +P1 = IC(4); +P3 = I31(4, 3); +P4 = IC(4); +P5 = IC(4); +P6 = I211(4, 3, 7); +P7 = I31(4, 7); +P8 = I31(4, 7); +if (MUR) { + P2 = I31(4, 2); +} else { + P2 = I211(4, 1, 5); +} +} break; +case 148 : +case 149 : +case 180 : +case 181 : +{ +P0 = I211(4, 1, 3); +P1 = I31(4,1); +P2 = I31(4,1); +P3 = I31(4, 3); +P4 = IC(4); +P5 = IC(4); +P6 = I211(4, 3, 7); +P7 = I31(4, 7); +P8 = I31(4, 7); +} break; +case 150 : +case 182 : +{ +P0 = I31(4, 0); +P3 = I31(4, 3); +P4 = IC(4); +P6 = I211(4, 3, 7); +P7 = I31(4, 7); +if (MUR) { + P1 = IC(4); + P2 = IC(4); + P5 = IC(4); + P8 = I31(4, 7); +} else { + P1 = I31(4,1); + P2 = I11(1, 5); + P5 = I31(5, 4); + P8 = I211(4, 5, 7); +} +} break; +case 151 : +case 183 : +{ +P0 = I31(4, 3); +P1 = IC(4); +P3 = I31(4, 3); +P4 = IC(4); +P5 = IC(4); +P6 = I211(4, 3, 7); +P7 = I31(4, 7); +P8 = I31(4, 7); +if (MUR) { + P2 = IC(4); +} else { + P2 = I211(4, 1, 5); +} +} break; +case 152 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I31(4, 2); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I31(4, 7); +} break; +case 153 : +{ +P0 = I31(4,1); +P1 = I31(4,1); +P2 = I31(4, 2); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I31(4, 7); +} break; +case 154 : +{ +P1 = IC(4); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I31(4, 7); +if (MUL) { + P0 = I31(4, 0); +} else { + P0 = I211(4, 1, 3); +} +if (MUR) { + P2 = I31(4, 2); +} else { + P2 = I211(4, 1, 5); +} +} break; +case 155 : +{ +P2 = I31(4, 2); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I31(4, 7); +if (MUL) { + P0 = IC(4); + P1 = IC(4); + P3 = IC(4); +} else { + P0 = I772(1, 3, 4); + P1 = I71(4, 1); + P3 = I71(4, 3); +} +} break; +case 156 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I31(4,1); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I31(4, 7); +} break; +case 157 : +{ +P0 = I31(4,1); +P1 = I31(4,1); +P2 = I31(4,1); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I31(4, 7); +} break; +case 158 : +{ +P3 = IC(4); +P4 = IC(4); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I31(4, 7); +if (MUL) { + P0 = I31(4, 0); +} else { + P0 = I211(4, 1, 3); +} +if (MUR) { + P1 = IC(4); + P2 = IC(4); + P5 = IC(4); +} else { + P1 = I71(4, 1); + P2 = I772(1, 5, 4); + P5 = I71(4, 5); +} +} break; +case 159 : +{ +P1 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 6); +P7 = I31(4, 7); +P8 = I31(4, 7); +if (MUL) { + P0 = IC(4); + P3 = IC(4); +} else { + P0 = I772(1, 3, 4); + P3 = I71(4, 3); +} +if (MUR) { + P2 = IC(4); +} else { + P2 = I211(4, 1, 5); +} +} break; +case 184 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I31(4, 2); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 7); +P7 = I31(4, 7); +P8 = I31(4, 7); +} break; +case 185 : +{ +P0 = I31(4,1); +P1 = I31(4,1); +P2 = I31(4, 2); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 7); +P7 = I31(4, 7); +P8 = I31(4, 7); +} break; +case 186 : +{ +P1 = IC(4); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 7); +P7 = I31(4, 7); +P8 = I31(4, 7); +if (MUL) { + P0 = I31(4, 0); +} else { + P0 = I211(4, 1, 3); +} +if (MUR) { + P2 = I31(4, 2); +} else { + P2 = I211(4, 1, 5); +} +} break; +case 187 : +{ +P2 = I31(4, 2); +P4 = IC(4); +P5 = IC(4); +P7 = I31(4, 7); +P8 = I31(4, 7); +if (MUL) { + P0 = IC(4); + P1 = IC(4); + P3 = IC(4); + P6 = I31(4, 7); +} else { + P0 = I11(1, 3); + P1 = I31(4,1); + P3 = I31(3, 4); + P6 = I211(4, 3, 7); +} +} break; +case 188 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I31(4,1); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 7); +P7 = I31(4, 7); +P8 = I31(4, 7); +} break; +case 189 : +{ +P0 = I31(4,1); +P1 = I31(4,1); +P2 = I31(4,1); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 7); +P7 = I31(4, 7); +P8 = I31(4, 7); +} break; +case 190 : +{ +P0 = I31(4, 0); +P3 = IC(4); +P4 = IC(4); +P6 = I31(4, 7); +P7 = I31(4, 7); +if (MUR) { + P1 = IC(4); + P2 = IC(4); + P5 = IC(4); + P8 = I31(4, 7); +} else { + P1 = I31(4,1); + P2 = I11(1, 5); + P5 = I31(5, 4); + P8 = I211(4, 5, 7); +} +} break; +case 191 : +{ +P1 = IC(4); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 7); +P7 = I31(4, 7); +P8 = I31(4, 7); +if (MUL) { + P0 = IC(4); +} else { + P0 = I211(4, 1, 3); +} +if (MUR) { + P2 = IC(4); +} else { + P2 = I211(4, 1, 5); +} +} break; +case 192 : +case 193 : +case 196 : +case 197 : +{ +P0 = I211(4, 1, 3); +P1 = I31(4,1); +P2 = I211(4, 1, 5); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 6); +P7 = IC(4); +P8 = I31(4,5); +} break; +case 194 : +{ +P0 = I31(4, 0); +P1 = IC(4); +P2 = I31(4, 2); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 6); +P7 = IC(4); +P8 = I31(4,5); +} break; +case 195 : +{ +P0 = I31(4, 3); +P1 = IC(4); +P2 = I31(4, 2); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 6); +P7 = IC(4); +P8 = I31(4,5); +} break; +case 198 : +{ +P0 = I31(4, 0); +P1 = IC(4); +P2 = I31(4,5); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 6); +P7 = IC(4); +P8 = I31(4,5); +} break; +case 199 : +{ +P0 = I31(4, 3); +P1 = IC(4); +P2 = I31(4,5); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 6); +P7 = IC(4); +P8 = I31(4,5); +} break; +case 200 : +case 204 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I211(4, 1, 5); +P4 = IC(4); +P5 = I31(4,5); +if (MDL) { + P3 = IC(4); + P6 = I31(4, 6); + P7 = IC(4); + P8 = I31(4,5); +} else { + P3 = I31(4, 3); + P6 = I11(3, 7); + P7 = I31(7, 4); + P8 = I211(4, 5, 7); +} +} break; +case 201 : +case 205 : +{ +P0 = I31(4,1); +P1 = I31(4,1); +P2 = I211(4, 1, 5); +P3 = IC(4); +P4 = IC(4); +P5 = I31(4,5); +P7 = IC(4); +P8 = I31(4,5); +if (MDL) { + P6 = I31(4, 6); +} else { + P6 = I211(4, 3, 7); +} +} break; +case 202 : +{ +P1 = IC(4); +P2 = I31(4, 2); +P3 = IC(4); +P4 = IC(4); +P5 = I31(4,5); +P7 = IC(4); +P8 = I31(4,5); +if (MDL) { + P6 = I31(4, 6); +} else { + P6 = I211(4, 3, 7); +} +if (MUL) { + P0 = I31(4, 0); +} else { + P0 = I211(4, 1, 3); +} +} break; +case 203 : +{ +P2 = I31(4, 2); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 6); +P7 = IC(4); +P8 = I31(4,5); +if (MUL) { + P0 = IC(4); + P1 = IC(4); + P3 = IC(4); +} else { + P0 = I772(1, 3, 4); + P1 = I71(4, 1); + P3 = I71(4, 3); +} +} break; +case 206 : +{ +P1 = IC(4); +P2 = I31(4,5); +P3 = IC(4); +P4 = IC(4); +P5 = I31(4,5); +P7 = IC(4); +P8 = I31(4,5); +if (MDL) { + P6 = I31(4, 6); +} else { + P6 = I211(4, 3, 7); +} +if (MUL) { + P0 = I31(4, 0); +} else { + P0 = I211(4, 1, 3); +} +} break; +case 207 : +{ +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 6); +P7 = IC(4); +P8 = I31(4,5); +if (MUL) { + P0 = IC(4); + P1 = IC(4); + P2 = I31(4,5); + P3 = IC(4); +} else { + P0 = I11(1, 3); + P1 = I31(1, 4); + P2 = I211(4, 1, 5); + P3 = I31(4, 3); +} +} break; +case 208 : +case 209 : +{ +P0 = I211(4, 1, 3); +P1 = I31(4,1); +P2 = I31(4, 2); +P3 = I31(4, 3); +P4 = IC(4); +P6 = I31(4, 6); +if (MDR) { + P5 = IC(4); + P7 = IC(4); + P8 = IC(4); +} else { + P5 = I71(4, 5); + P7 = I71(4, 7); + P8 = I772(5, 7, 4); +} +} break; +case 210 : +{ +P0 = I31(4, 0); +P1 = IC(4); +P2 = I31(4, 2); +P3 = I31(4, 3); +P4 = IC(4); +P6 = I31(4, 6); +if (MDR) { + P5 = IC(4); + P7 = IC(4); + P8 = IC(4); +} else { + P5 = I71(4, 5); + P7 = I71(4, 7); + P8 = I772(5, 7, 4); +} +} break; +case 211 : +{ +P0 = I31(4, 3); +P1 = IC(4); +P2 = I31(4, 2); +P3 = I31(4, 3); +P4 = IC(4); +P6 = I31(4, 6); +if (MDR) { + P5 = IC(4); + P7 = IC(4); + P8 = IC(4); +} else { + P5 = I71(4, 5); + P7 = I71(4, 7); + P8 = I772(5, 7, 4); +} +} break; +case 212 : +case 213 : +{ +P0 = I211(4, 1, 3); +P1 = I31(4,1); +P3 = I31(4, 3); +P4 = IC(4); +P6 = I31(4, 6); +if (MDR) { + P2 = I31(4,1); + P5 = IC(4); + P7 = IC(4); + P8 = IC(4); +} else { + P2 = I211(4, 1, 5); + P5 = I31(5, 4); + P7 = I31(4, 7); + P8 = I11(5, 7); +} +} break; +case 215 : +{ +P0 = I31(4, 3); +P1 = IC(4); +P3 = I31(4, 3); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 6); +if (MDR) { + P7 = IC(4); + P8 = IC(4); +} else { + P7 = I71(4, 7); + P8 = I772(5, 7, 4); +} +if (MUR) { + P2 = IC(4); +} else { + P2 = I211(4, 1, 5); +} +} break; +case 216 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I31(4, 2); +P3 = IC(4); +P4 = IC(4); +P6 = I31(4, 6); +if (MDR) { + P5 = IC(4); + P7 = IC(4); + P8 = IC(4); +} else { + P5 = I71(4, 5); + P7 = I71(4, 7); + P8 = I772(5, 7, 4); +} +} break; +case 217 : +{ +P0 = I31(4,1); +P1 = I31(4,1); +P2 = I31(4, 2); +P3 = IC(4); +P4 = IC(4); +P6 = I31(4, 6); +if (MDR) { + P5 = IC(4); + P7 = IC(4); + P8 = IC(4); +} else { + P5 = I71(4, 5); + P7 = I71(4, 7); + P8 = I772(5, 7, 4); +} +} break; +case 218 : +{ +P1 = IC(4); +P3 = IC(4); +P4 = IC(4); +if (MDL) { + P6 = I31(4, 6); +} else { + P6 = I211(4, 3, 7); +} +if (MDR) { + P5 = IC(4); + P7 = IC(4); + P8 = IC(4); +} else { + P5 = I71(4, 5); + P7 = I71(4, 7); + P8 = I772(5, 7, 4); +} +if (MUL) { + P0 = I31(4, 0); +} else { + P0 = I211(4, 1, 3); +} +if (MUR) { + P2 = I31(4, 2); +} else { + P2 = I211(4, 1, 5); +} +} break; +case 219 : +{ +P2 = I31(4, 2); +P4 = IC(4); +P6 = I31(4, 6); +if (MDR) { + P5 = IC(4); + P7 = IC(4); + P8 = IC(4); +} else { + P5 = I71(4, 5); + P7 = I71(4, 7); + P8 = I772(5, 7, 4); +} +if (MUL) { + P0 = IC(4); + P1 = IC(4); + P3 = IC(4); +} else { + P0 = I772(1, 3, 4); + P1 = I71(4, 1); + P3 = I71(4, 3); +} +} break; +case 220 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I31(4,1); +P3 = IC(4); +P4 = IC(4); +if (MDL) { + P6 = I31(4, 6); +} else { + P6 = I211(4, 3, 7); +} +if (MDR) { + P5 = IC(4); + P7 = IC(4); + P8 = IC(4); +} else { + P5 = I71(4, 5); + P7 = I71(4, 7); + P8 = I772(5, 7, 4); +} +} break; +case 221 : +{ +P0 = I31(4,1); +P1 = I31(4,1); +P3 = IC(4); +P4 = IC(4); +P6 = I31(4, 6); +if (MDR) { + P2 = I31(4,1); + P5 = IC(4); + P7 = IC(4); + P8 = IC(4); +} else { + P2 = I211(4, 1, 5); + P5 = I31(5, 4); + P7 = I31(4, 7); + P8 = I11(5, 7); +} +} break; +case 222 : +{ +P0 = I31(4, 0); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 6); +if (MDR) { + P7 = IC(4); + P8 = IC(4); +} else { + P7 = I71(4, 7); + P8 = I772(5, 7, 4); +} +if (MUR) { + P1 = IC(4); + P2 = IC(4); +} else { + P1 = I71(4, 1); + P2 = I772(1, 5, 4); +} +} break; +case 223 : +{ +P4 = IC(4); +P6 = I31(4, 6); +if (MDR) { + P7 = IC(4); + P8 = IC(4); +} else { + P7 = I71(4, 7); + P8 = I772(5, 7, 4); +} +if (MUL) { + P0 = IC(4); + P3 = IC(4); +} else { + P0 = I772(1, 3, 4); + P3 = I71(4, 3); +} +if (MUR) { + P1 = IC(4); + P2 = IC(4); + P5 = IC(4); +} else { + P1 = I71(4, 1); + P2 = I211(4, 1, 5); + P5 = I71(4, 5); +} +} break; +case 224 : +case 225 : +case 228 : +case 229 : +{ +P0 = I211(4, 1, 3); +P1 = I31(4,1); +P2 = I211(4, 1, 5); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 3); +P7 = IC(4); +P8 = I31(4,5); +} break; +case 226 : +{ +P0 = I31(4, 0); +P1 = IC(4); +P2 = I31(4, 2); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 3); +P7 = IC(4); +P8 = I31(4,5); +} break; +case 227 : +{ +P0 = I31(4, 3); +P1 = IC(4); +P2 = I31(4, 2); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 3); +P7 = IC(4); +P8 = I31(4,5); +} break; +case 230 : +{ +P0 = I31(4, 0); +P1 = IC(4); +P2 = I31(4,5); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 3); +P7 = IC(4); +P8 = I31(4,5); +} break; +case 231 : +{ +P0 = I31(4, 3); +P1 = IC(4); +P2 = I31(4,5); +P3 = I31(4, 3); +P4 = IC(4); +P5 = I31(4,5); +P6 = I31(4, 3); +P7 = IC(4); +P8 = I31(4,5); +} break; +case 232 : +case 236 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I211(4, 1, 5); +P4 = IC(4); +P5 = I31(4,5); +if (MDL) { + P3 = IC(4); + P6 = IC(4); + P7 = IC(4); + P8 = I31(4,5); +} else { + P3 = I31(4, 3); + P6 = I11(3, 7); + P7 = I31(7, 4); + P8 = I211(4, 5, 7); +} +} break; +case 233 : +case 237 : +{ +P0 = I31(4,1); +P1 = I31(4,1); +P2 = I211(4, 1, 5); +P3 = IC(4); +P4 = IC(4); +P5 = I31(4,5); +P7 = IC(4); +P8 = I31(4,5); +if (MDL) { + P6 = IC(4); +} else { + P6 = I211(4, 3, 7); +} +} break; +case 234 : +{ +P1 = IC(4); +P2 = I31(4, 2); +P4 = IC(4); +P5 = I31(4,5); +P8 = I31(4,5); +if (MDL) { + P3 = IC(4); + P6 = IC(4); + P7 = IC(4); +} else { + P3 = I71(4, 3); + P6 = I772(3, 7, 4); + P7 = I71(4, 7); +} +if (MUL) { + P0 = I31(4, 0); +} else { + P0 = I211(4, 1, 3); +} +} break; +case 235 : +{ +P2 = I31(4, 2); +P3 = IC(4); +P4 = IC(4); +P5 = I31(4,5); +P7 = IC(4); +P8 = I31(4,5); +if (MDL) { + P6 = IC(4); +} else { + P6 = I211(4, 3, 7); +} +if (MUL) { + P0 = IC(4); + P1 = IC(4); +} else { + P0 = I772(1, 3, 4); + P1 = I71(4, 1); +} +} break; +case 238 : +{ +P0 = I31(4, 0); +P1 = IC(4); +P2 = I31(4,5); +P4 = IC(4); +P5 = I31(4,5); +if (MDL) { + P3 = IC(4); + P6 = IC(4); + P7 = IC(4); + P8 = I31(4,5); +} else { + P3 = I31(4, 3); + P6 = I11(3, 7); + P7 = I31(7, 4); + P8 = I211(4, 5, 7); +} +} break; +case 239 : +{ +P1 = IC(4); +P2 = I31(4,5); +P3 = IC(4); +P4 = IC(4); +P5 = I31(4,5); +P7 = IC(4); +P8 = I31(4,5); +if (MDL) { + P6 = IC(4); +} else { + P6 = I211(4, 3, 7); +} +if (MUL) { + P0 = IC(4); +} else { + P0 = I211(4, 1, 3); +} +} break; +case 240 : +case 241 : +{ +P0 = I211(4, 1, 3); +P1 = I31(4,1); +P2 = I31(4, 2); +P3 = I31(4, 3); +P4 = IC(4); +if (MDR) { + P5 = IC(4); + P6 = I31(4, 3); + P7 = IC(4); + P8 = IC(4); +} else { + P5 = I31(4,5); + P6 = I211(4, 3, 7); + P7 = I31(7, 4); + P8 = I11(5, 7); +} +} break; +case 242 : +{ +P0 = I31(4, 0); +P1 = IC(4); +P3 = I31(4, 3); +P4 = IC(4); +P6 = I31(4, 3); +if (MDR) { + P5 = IC(4); + P7 = IC(4); + P8 = IC(4); +} else { + P5 = I71(4, 5); + P7 = I71(4, 7); + P8 = I772(5, 7, 4); +} +if (MUR) { + P2 = I31(4, 2); +} else { + P2 = I211(4, 1, 5); +} +} break; +case 243 : +{ +P0 = I31(4, 3); +P1 = IC(4); +P2 = I31(4, 2); +P3 = I31(4, 3); +P4 = IC(4); +if (MDR) { + P5 = IC(4); + P6 = I31(4, 3); + P7 = IC(4); + P8 = IC(4); +} else { + P5 = I31(4,5); + P6 = I211(4, 3, 7); + P7 = I31(7, 4); + P8 = I11(5, 7); +} +} break; +case 244 : +case 245 : +{ +P0 = I211(4, 1, 3); +P1 = I31(4,1); +P2 = I31(4,1); +P3 = I31(4, 3); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 3); +P7 = IC(4); +if (MDR) { + P8 = IC(4); +} else { + P8 = I211(4, 5, 7); +} +} break; +case 246 : +{ +P0 = I31(4, 0); +P3 = I31(4, 3); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 3); +P7 = IC(4); +if (MDR) { + P8 = IC(4); +} else { + P8 = I211(4, 5, 7); +} +if (MUR) { + P1 = IC(4); + P2 = IC(4); +} else { + P1 = I71(4, 1); + P2 = I772(1, 5, 4); +} +} break; +case 247 : +{ +P0 = I31(4, 3); +P1 = IC(4); +P3 = I31(4, 3); +P4 = IC(4); +P5 = IC(4); +P6 = I31(4, 3); +P7 = IC(4); +if (MDR) { + P8 = IC(4); +} else { + P8 = I211(4, 5, 7); +} +if (MUR) { + P2 = IC(4); +} else { + P2 = I211(4, 1, 5); +} +} break; +case 249 : +{ +P0 = I31(4,1); +P1 = I31(4,1); +P2 = I31(4, 2); +P3 = IC(4); +P4 = IC(4); +P7 = IC(4); +if (MDL) { + P6 = IC(4); +} else { + P6 = I211(4, 3, 7); +} +if (MDR) { + P5 = IC(4); + P8 = IC(4); +} else { + P5 = I71(4, 5); + P8 = I772(5, 7, 4); +} +} break; +case 250 : +{ +P0 = I31(4, 0); +P1 = IC(4); +P2 = I31(4, 2); +P4 = IC(4); +P7 = IC(4); +if (MDL) { + P3 = IC(4); + P6 = IC(4); +} else { + P3 = I71(4, 3); + P6 = I772(3, 7, 4); +} +if (MDR) { + P5 = IC(4); + P8 = IC(4); +} else { + P5 = I71(4, 5); + P8 = I772(5, 7, 4); +} +} break; +case 251 : +{ +P2 = I31(4, 2); +P4 = IC(4); +if (MDL) { + P3 = IC(4); + P6 = IC(4); + P7 = IC(4); +} else { + P3 = I71(4, 3); + P6 = I211(4, 3, 7); + P7 = I71(4, 7); +} +if (MDR) { + P5 = IC(4); + P8 = IC(4); +} else { + P5 = I71(4, 5); + P8 = I772(5, 7, 4); +} +if (MUL) { + P0 = IC(4); + P1 = IC(4); +} else { + P0 = I772(1, 3, 4); + P1 = I71(4, 1); +} +} break; +case 252 : +{ +P0 = I31(4, 0); +P1 = I31(4,1); +P2 = I31(4,1); +P4 = IC(4); +P5 = IC(4); +P7 = IC(4); +if (MDL) { + P3 = IC(4); + P6 = IC(4); +} else { + P3 = I71(4, 3); + P6 = I772(3, 7, 4); +} +if (MDR) { + P8 = IC(4); +} else { + P8 = I211(4, 5, 7); +} +} break; +case 253 : +{ +P0 = I31(4,1); +P1 = I31(4,1); +P2 = I31(4,1); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P7 = IC(4); +if (MDL) { + P6 = IC(4); +} else { + P6 = I211(4, 3, 7); +} +if (MDR) { + P8 = IC(4); +} else { + P8 = I211(4, 5, 7); +} +} break; +case 254 : +{ +P0 = I31(4, 0); +P4 = IC(4); +if (MDL) { + P3 = IC(4); + P6 = IC(4); +} else { + P3 = I71(4, 3); + P6 = I772(3, 7, 4); +} +if (MDR) { + P5 = IC(4); + P7 = IC(4); + P8 = IC(4); +} else { + P5 = I71(4, 5); + P7 = I71(4, 7); + P8 = I211(4, 5, 7); +} +if (MUR) { + P1 = IC(4); + P2 = IC(4); +} else { + P1 = I71(4, 1); + P2 = I772(1, 5, 4); +} +} break; +case 255 : +{ +P1 = IC(4); +P3 = IC(4); +P4 = IC(4); +P5 = IC(4); +P7 = IC(4); +if (MDL) { + P6 = IC(4); +} else { + P6 = I211(4, 3, 7); +} +if (MDR) { + P8 = IC(4); +} else { + P8 = I211(4, 5, 7); +} +if (MUL) { + P0 = IC(4); +} else { + P0 = I211(4, 1, 3); +} +if (MUR) { + P2 = IC(4); +} else { + P2 = I211(4, 1, 5); +} +} break; + +#undef P0 +#undef P1 +#undef P2 +#undef P3 +#undef P4 +#undef P5 +#undef P6 +#undef P7 +#undef P8 +#undef MUR +#undef MDR +#undef MDL +#undef MUL +#undef IC +#undef I11 +#undef I211 +#undef I31 +#undef I332 +#undef I431 +#undef I521 +#undef I53 +#undef I611 +#undef I71 +#undef I772 +#undef I97 +#undef I1411 +#undef I151 diff --git a/plugins/dfxvideo/i386.asm b/plugins/dfxvideo/i386.asm new file mode 100644 index 0000000..86d6e23 --- /dev/null +++ b/plugins/dfxvideo/i386.asm @@ -0,0 +1,67 @@ +; i386.asm - description +; ------------------- +; begin : Sun Nov 08 2001 +; copyright : (C) 2001 by Pete Bernert +; email : BlackDove@addcom.de + +; ported from inline gcc to nasm by linuzappz + + +; 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. See also the license.txt file for * +; additional informations. * + + +bits 32 + +section .text + +%include "macros.inc" + +NEWSYM i386_BGR24to16 + push ebp + mov ebp, esp + push ebx + push edx + + mov eax, [ebp+8] ; this can hold the G value + mov ebx, eax ; this can hold the R value + mov edx, eax ; this can hold the B value + shr ebx, 3 ; move the R value + and edx, 00f80000h ; mask the B value + shr edx, 9 ; move the B value + and eax, 00f800h ; mask the G value + shr eax, 6 ; move the G value + and ebx, 0000001fh ; mask the R value + or eax, ebx ; add R to G value + or eax, edx ; add B to RG value + pop edx + pop ebx + mov esp, ebp + pop ebp + ret + +NEWSYM i386_shl10idiv + push ebp + mov ebp, esp + push ebx + push edx + + mov eax, [ebp+8] + mov ebx, [ebp+12] + mov edx, eax + shl eax, 10 + sar edx, 22 + idiv ebx + + pop edx + pop ebx + mov esp, ebp + pop ebp + ret +%ifidn __OUTPUT_FORMAT__,elf +section .note.GNU-stack noalloc noexec nowrite progbits +%endif + diff --git a/plugins/dfxvideo/interp.h b/plugins/dfxvideo/interp.h new file mode 100644 index 0000000..3043237 --- /dev/null +++ b/plugins/dfxvideo/interp.h @@ -0,0 +1,298 @@ +/* + * This file is part of the Advance project. + * + * Copyright (C) 2003 Andrea Mazzoleni + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * In addition, as a special exception, Andrea Mazzoleni + * gives permission to link the code of this program with + * the MAME library (or with modified versions of MAME that use the + * same license as MAME), and distribute linked combinations including + * the two. You must obey the GNU General Public License in all + * respects for all of the code used other than MAME. If you modify + * this file, you may extend this exception to your version of the + * file, but you are not obligated to do so. If you do not wish to + * do so, delete this exception statement from your version. + */ + +#ifndef __INTERP_H +#define __INTERP_H + +/***************************************************************************/ +/* Basic types */ + +/***************************************************************************/ +/* interpolation */ + +static unsigned interp_mask[2]; +static unsigned interp_bits_per_pixel; + +#define INTERP_16_MASK_1(v) (v & interp_mask[0]) +#define INTERP_16_MASK_2(v) (v & interp_mask[1]) + +static __inline unsigned short interp_16_521(unsigned short p1, unsigned short p2, unsigned short p3) +{ + return INTERP_16_MASK_1((INTERP_16_MASK_1(p1)*5 + INTERP_16_MASK_1(p2)*2 + INTERP_16_MASK_1(p3)*1) / 8) + | INTERP_16_MASK_2((INTERP_16_MASK_2(p1)*5 + INTERP_16_MASK_2(p2)*2 + INTERP_16_MASK_2(p3)*1) / 8); +} + +static __inline unsigned short interp_16_332(unsigned short p1, unsigned short p2, unsigned short p3) +{ + return INTERP_16_MASK_1((INTERP_16_MASK_1(p1)*3 + INTERP_16_MASK_1(p2)*3 + INTERP_16_MASK_1(p3)*2) / 8) + | INTERP_16_MASK_2((INTERP_16_MASK_2(p1)*3 + INTERP_16_MASK_2(p2)*3 + INTERP_16_MASK_2(p3)*2) / 8); +} + +static __inline unsigned short interp_16_611(unsigned short p1, unsigned short p2, unsigned short p3) +{ + return INTERP_16_MASK_1((INTERP_16_MASK_1(p1)*6 + INTERP_16_MASK_1(p2) + INTERP_16_MASK_1(p3)) / 8) + | INTERP_16_MASK_2((INTERP_16_MASK_2(p1)*6 + INTERP_16_MASK_2(p2) + INTERP_16_MASK_2(p3)) / 8); +} + +static __inline unsigned short interp_16_71(unsigned short p1, unsigned short p2) +{ + return INTERP_16_MASK_1((INTERP_16_MASK_1(p1)*7 + INTERP_16_MASK_1(p2)) / 8) + | INTERP_16_MASK_2((INTERP_16_MASK_2(p1)*7 + INTERP_16_MASK_2(p2)) / 8); +} + +static __inline unsigned short interp_16_211(unsigned short p1, unsigned short p2, unsigned short p3) +{ + return INTERP_16_MASK_1((INTERP_16_MASK_1(p1)*2 + INTERP_16_MASK_1(p2) + INTERP_16_MASK_1(p3)) / 4) + | INTERP_16_MASK_2((INTERP_16_MASK_2(p1)*2 + INTERP_16_MASK_2(p2) + INTERP_16_MASK_2(p3)) / 4); +} + +static __inline unsigned short interp_16_772(unsigned short p1, unsigned short p2, unsigned short p3) +{ + return INTERP_16_MASK_1(((INTERP_16_MASK_1(p1) + INTERP_16_MASK_1(p2))*7 + INTERP_16_MASK_1(p3)*2) / 16) + | INTERP_16_MASK_2(((INTERP_16_MASK_2(p1) + INTERP_16_MASK_2(p2))*7 + INTERP_16_MASK_2(p3)*2) / 16); +} + +static __inline unsigned short interp_16_11(unsigned short p1, unsigned short p2) +{ + return INTERP_16_MASK_1((INTERP_16_MASK_1(p1) + INTERP_16_MASK_1(p2)) / 2) + | INTERP_16_MASK_2((INTERP_16_MASK_2(p1) + INTERP_16_MASK_2(p2)) / 2); +} + +static __inline unsigned short interp_16_31(unsigned short p1, unsigned short p2) +{ + return INTERP_16_MASK_1((INTERP_16_MASK_1(p1)*3 + INTERP_16_MASK_1(p2)) / 4) + | INTERP_16_MASK_2((INTERP_16_MASK_2(p1)*3 + INTERP_16_MASK_2(p2)) / 4); +} + +static __inline unsigned short interp_16_1411(unsigned short p1, unsigned short p2, unsigned short p3) +{ + return INTERP_16_MASK_1((INTERP_16_MASK_1(p1)*14 + INTERP_16_MASK_1(p2) + INTERP_16_MASK_1(p3)) / 16) + | INTERP_16_MASK_2((INTERP_16_MASK_2(p1)*14 + INTERP_16_MASK_2(p2) + INTERP_16_MASK_2(p3)) / 16); +} + +static __inline unsigned short interp_16_431(unsigned short p1, unsigned short p2, unsigned short p3) +{ + return INTERP_16_MASK_1((INTERP_16_MASK_1(p1)*4 + INTERP_16_MASK_1(p2)*3 + INTERP_16_MASK_1(p3)) / 8) + | INTERP_16_MASK_2((INTERP_16_MASK_2(p1)*4 + INTERP_16_MASK_2(p2)*3 + INTERP_16_MASK_2(p3)) / 8); +} + +static __inline unsigned short interp_16_53(unsigned short p1, unsigned short p2) +{ + return INTERP_16_MASK_1((INTERP_16_MASK_1(p1)*5 + INTERP_16_MASK_1(p2)*3) / 8) + | INTERP_16_MASK_2((INTERP_16_MASK_2(p1)*5 + INTERP_16_MASK_2(p2)*3) / 8); +} + +static __inline unsigned short interp_16_151(unsigned short p1, unsigned short p2) +{ + return INTERP_16_MASK_1((INTERP_16_MASK_1(p1)*15 + INTERP_16_MASK_1(p2)) / 16) + | INTERP_16_MASK_2((INTERP_16_MASK_2(p1)*15 + INTERP_16_MASK_2(p2)) / 16); +} + +static __inline unsigned short interp_16_97(unsigned short p1, unsigned short p2) +{ + return INTERP_16_MASK_1((INTERP_16_MASK_1(p1)*9 + INTERP_16_MASK_1(p2)*7) / 16) + | INTERP_16_MASK_2((INTERP_16_MASK_2(p1)*9 + INTERP_16_MASK_2(p2)*7) / 16); +} + +#define INTERP_32_MASK_1(v) (v & 0xFF00FF) +#define INTERP_32_MASK_2(v) (v & 0x00FF00) + +static __inline unsigned int interp_32_521(unsigned int p1, unsigned int p2, unsigned int p3) +{ + return INTERP_32_MASK_1((INTERP_32_MASK_1(p1)*5 + INTERP_32_MASK_1(p2)*2 + INTERP_32_MASK_1(p3)*1) / 8) + | INTERP_32_MASK_2((INTERP_32_MASK_2(p1)*5 + INTERP_32_MASK_2(p2)*2 + INTERP_32_MASK_2(p3)*1) / 8); +} + +static __inline unsigned int interp_32_332(unsigned int p1, unsigned int p2, unsigned int p3) +{ + return INTERP_32_MASK_1((INTERP_32_MASK_1(p1)*3 + INTERP_32_MASK_1(p2)*3 + INTERP_32_MASK_1(p3)*2) / 8) + | INTERP_32_MASK_2((INTERP_32_MASK_2(p1)*3 + INTERP_32_MASK_2(p2)*3 + INTERP_32_MASK_2(p3)*2) / 8); +} + +static __inline unsigned int interp_32_211(unsigned int p1, unsigned int p2, unsigned int p3) +{ + return INTERP_32_MASK_1((INTERP_32_MASK_1(p1)*2 + INTERP_32_MASK_1(p2) + INTERP_32_MASK_1(p3)) / 4) + | INTERP_32_MASK_2((INTERP_32_MASK_2(p1)*2 + INTERP_32_MASK_2(p2) + INTERP_32_MASK_2(p3)) / 4); +} + +static __inline unsigned int interp_32_611(unsigned int p1, unsigned int p2, unsigned int p3) +{ + return INTERP_32_MASK_1((INTERP_32_MASK_1(p1)*6 + INTERP_32_MASK_1(p2) + INTERP_32_MASK_1(p3)) / 8) + | INTERP_32_MASK_2((INTERP_32_MASK_2(p1)*6 + INTERP_32_MASK_2(p2) + INTERP_32_MASK_2(p3)) / 8); +} + +static __inline unsigned int interp_32_71(unsigned int p1, unsigned int p2) +{ + return INTERP_32_MASK_1((INTERP_32_MASK_1(p1)*7 + INTERP_32_MASK_1(p2)) / 8) + | INTERP_32_MASK_2((INTERP_32_MASK_2(p1)*7 + INTERP_32_MASK_2(p2)) / 8); +} + +static __inline unsigned int interp_32_772(unsigned int p1, unsigned int p2, unsigned int p3) +{ + return INTERP_32_MASK_1(((INTERP_32_MASK_1(p1) + INTERP_32_MASK_1(p2))*7 + INTERP_32_MASK_1(p3)*2) / 16) + | INTERP_32_MASK_2(((INTERP_32_MASK_2(p1) + INTERP_32_MASK_2(p2))*7 + INTERP_32_MASK_2(p3)*2) / 16); +} + +static __inline unsigned int interp_32_11(unsigned int p1, unsigned int p2) +{ + return INTERP_32_MASK_1((INTERP_32_MASK_1(p1) + INTERP_32_MASK_1(p2)) / 2) + | INTERP_32_MASK_2((INTERP_32_MASK_2(p1) + INTERP_32_MASK_2(p2)) / 2); +} + +static __inline unsigned int interp_32_31(unsigned int p1, unsigned int p2) +{ + return INTERP_32_MASK_1((INTERP_32_MASK_1(p1)*3 + INTERP_32_MASK_1(p2)) / 4) + | INTERP_32_MASK_2((INTERP_32_MASK_2(p1)*3 + INTERP_32_MASK_2(p2)) / 4); +} + +static __inline unsigned int interp_32_1411(unsigned int p1, unsigned int p2, unsigned int p3) +{ + return INTERP_32_MASK_1((INTERP_32_MASK_1(p1)*14 + INTERP_32_MASK_1(p2) + INTERP_32_MASK_1(p3)) / 16) + | INTERP_32_MASK_2((INTERP_32_MASK_2(p1)*14 + INTERP_32_MASK_2(p2) + INTERP_32_MASK_2(p3)) / 16); +} + +static __inline unsigned int interp_32_431(unsigned int p1, unsigned int p2, unsigned int p3) +{ + return INTERP_32_MASK_1((INTERP_32_MASK_1(p1)*4 + INTERP_32_MASK_1(p2)*3 + INTERP_32_MASK_1(p3)) / 8) + | INTERP_32_MASK_2((INTERP_32_MASK_2(p1)*4 + INTERP_32_MASK_2(p2)*3 + INTERP_32_MASK_2(p3)) / 8); +} + +static __inline unsigned int interp_32_53(unsigned int p1, unsigned int p2) +{ + return INTERP_32_MASK_1((INTERP_32_MASK_1(p1)*5 + INTERP_32_MASK_1(p2)*3) / 8) + | INTERP_32_MASK_2((INTERP_32_MASK_2(p1)*5 + INTERP_32_MASK_2(p2)*3) / 8); +} + +static __inline unsigned int interp_32_151(unsigned int p1, unsigned int p2) +{ + return INTERP_32_MASK_1((INTERP_32_MASK_1(p1)*15 + INTERP_32_MASK_1(p2)) / 16) + | INTERP_32_MASK_2((INTERP_32_MASK_2(p1)*15 + INTERP_32_MASK_2(p2)) / 16); +} + +static __inline unsigned int interp_32_97(unsigned int p1, unsigned int p2) +{ + return INTERP_32_MASK_1((INTERP_32_MASK_1(p1)*9 + INTERP_32_MASK_1(p2)*7) / 16) + | INTERP_32_MASK_2((INTERP_32_MASK_2(p1)*9 + INTERP_32_MASK_2(p2)*7) / 16); +} + +/***************************************************************************/ +/* diff */ + +#define INTERP_Y_LIMIT (0x30*4) +#define INTERP_U_LIMIT (0x07*4) +#define INTERP_V_LIMIT (0x06*8) + +inline static int interp_16_diff(unsigned short p1, unsigned short p2) +{ + int r, g, b; + int y, u, v; + + if (p1 == p2) + return 0; + + if (interp_bits_per_pixel == 16) { + b = (int)((p1 & 0x1F) - (p2 & 0x1F)) << 3; + g = (int)((p1 & 0x7E0) - (p2 & 0x7E0)) >> 3; + r = (int)((p1 & 0xF800) - (p2 & 0xF800)) >> 8; + } else { + b = (int)((p1 & 0x1F) - (p2 & 0x1F)) << 3; + g = (int)((p1 & 0x3E0) - (p2 & 0x3E0)) >> 2; + r = (int)((p1 & 0x7C00) - (p2 & 0x7C00)) >> 7; + } + + y = r + g + b; + u = r - b; + v = -r + 2*g - b; + + if (y < -INTERP_Y_LIMIT || y > INTERP_Y_LIMIT) + return 1; + + if (u < -INTERP_U_LIMIT || u > INTERP_U_LIMIT) + return 1; + + if (v < -INTERP_V_LIMIT || v > INTERP_V_LIMIT) + return 1; + + return 0; +} + +inline static int interp_32_diff(unsigned int p1, unsigned int p2) +{ + int r, g, b; + int y, u, v; + + if ((p1 & 0xF8F8F8) == (p2 & 0xF8F8F8)) + return 0; + + b = (int)((p1 & 0xFF) - (p2 & 0xFF)); + g = (int)((p1 & 0xFF00) - (p2 & 0xFF00)) >> 8; + r = (int)((p1 & 0xFF0000) - (p2 & 0xFF0000)) >> 16; + + y = r + g + b; + u = r - b; + v = -r + 2*g - b; + + if (y < -INTERP_Y_LIMIT || y > INTERP_Y_LIMIT) + return 1; + + if (u < -INTERP_U_LIMIT || u > INTERP_U_LIMIT) + return 1; + + if (v < -INTERP_V_LIMIT || v > INTERP_V_LIMIT) + return 1; + + return 0; +} + +#if 0 + +static void interp_set(unsigned bits_per_pixel) +{ + interp_bits_per_pixel = bits_per_pixel; + + switch (bits_per_pixel) { + case 15 : + interp_mask[0] = 0x7C1F; + interp_mask[1] = 0x03E0; + break; + case 16 : + interp_mask[0] = 0xF81F; + interp_mask[1] = 0x07E0; + break; + case 32 : + interp_mask[0] = 0xFF00FF; + interp_mask[1] = 0x00FF00; + break; + } +} + +#endif + +#endif diff --git a/plugins/dfxvideo/key.c b/plugins/dfxvideo/key.c new file mode 100644 index 0000000..6fc3eed --- /dev/null +++ b/plugins/dfxvideo/key.c @@ -0,0 +1,96 @@ +/*************************************************************************** + key.c - description + ------------------- + begin : Sun Oct 28 2001 + copyright : (C) 2001 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ + +#define _IN_KEY + +#include "externals.h" +#include "menu.h" +#include "gpu.h" +#include "draw.h" +#include "key.h" + +#define VK_INSERT 65379 +#define VK_HOME 65360 +#define VK_PRIOR 65365 +#define VK_NEXT 65366 +#define VK_END 65367 +#define VK_DEL 65535 +#define VK_F5 65474 + +void GPUmakeSnapshot(void); + +unsigned long ulKeybits=0; +#if 0 +void GPUkeypressed(int keycode) +{ + switch(keycode) + { + case 0xFFC9: //X11 key: F12 + case ((1<<29) | 0xFF0D): //special keycode from pcsx-df: alt-enter + bChangeWinMode=TRUE; + break; + case VK_F5: + GPUmakeSnapshot(); + break; + + case VK_INSERT: + if(iUseFixes) {iUseFixes=0;dwActFixes=0;} + else {iUseFixes=1;dwActFixes=dwCfgFixes;} + SetFixes(); + if(iFrameLimit==2) SetAutoFrameCap(); + break; + + case VK_DEL: + if(ulKeybits&KEY_SHOWFPS) + { + ulKeybits&=~KEY_SHOWFPS; + DoClearScreenBuffer(); + } + else + { + ulKeybits|=KEY_SHOWFPS; + szDispBuf[0]=0; + BuildDispMenu(0); + } + break; + + case VK_PRIOR: BuildDispMenu(-1); break; + case VK_NEXT: BuildDispMenu( 1); break; + case VK_END: SwitchDispMenu(1); break; + case VK_HOME: SwitchDispMenu(-1); break; + case 0x60: + { + iFastFwd = 1 - iFastFwd; + bSkipNextFrame = FALSE; + UseFrameSkip = iFastFwd; + BuildDispMenu(0); + break; + } +#ifdef _MACGL + default: { void HandleKey(int keycode); HandleKey(keycode); } +#endif + } +} + +void SetKeyHandler(void) +{ +} + +void ReleaseKeyHandler(void) +{ +} +#endif \ No newline at end of file diff --git a/plugins/dfxvideo/key.h b/plugins/dfxvideo/key.h new file mode 100644 index 0000000..5f85cb6 --- /dev/null +++ b/plugins/dfxvideo/key.h @@ -0,0 +1,24 @@ +/*************************************************************************** + key.h - description + ------------------- + begin : Sun Oct 28 2001 + copyright : (C) 2001 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ + +#ifndef _KEY_INTERNALS_H +#define _KEY_INTERNALS_H + +void SetKeyHandler(void); +void ReleaseKeyHandler(void); + +#endif // _KEY_INTERNALS_H diff --git a/plugins/dfxvideo/macros.inc b/plugins/dfxvideo/macros.inc new file mode 100644 index 0000000..4782928 --- /dev/null +++ b/plugins/dfxvideo/macros.inc @@ -0,0 +1,40 @@ +; macros.inc - description +; ------------------- +; begin : Sun Nov 08 2001 +; based on ZSNES macros.mac +; email : linuzappz@pcsx.net + +; 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. See also the license.txt file for * +; additional informations. * + + +%ifdef __WIN32__ + +%imacro EXTSYM 1-* +%rep %0 + extern _%1 + %define %1 _%1 +%rotate 1 +%endrep +%endmacro + +%imacro NEWSYM 1 + global _%1 + _%1: + %1: +%endmacro + +%else + +%define EXTSYM extern + +%imacro NEWSYM 1 + global %1 + %1: +%endmacro + +%endif + diff --git a/plugins/dfxvideo/menu.c b/plugins/dfxvideo/menu.c new file mode 100644 index 0000000..fc6e475 --- /dev/null +++ b/plugins/dfxvideo/menu.c @@ -0,0 +1,167 @@ +/*************************************************************************** + menu.c - description + ------------------- + begin : Sun Oct 28 2001 + copyright : (C) 2001 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ + +#define _IN_MENU + +#include "externals.h" +#include "draw.h" +#include "menu.h" +#include "gpu.h" + +unsigned long dwCoreFlags = 0; + +// create lists/stuff for fonts (actually there are no more lists, but I am too lazy to change the func names ;) +void InitMenu(void) +{ +} + +// kill existing lists/fonts +void CloseMenu(void) +{ + //DestroyPic(); +} + +// DISPLAY FPS/MENU TEXT + +#include +extern time_t tStart; + +int iMPos=0; // menu arrow pos + +void DisplayText(void) // DISPLAY TEXT +{ +} + +// Build Menu buffer (== Dispbuffer without FPS)... +void BuildDispMenu(int iInc) +{ + if(!(ulKeybits&KEY_SHOWFPS)) return; // mmm, cheater ;) + + iMPos+=iInc; // up or down + if(iMPos<0) iMPos=3; // wrap around + if(iMPos>3) iMPos=0; + + strcpy(szMenuBuf," FL FS DI GF "); // main menu items + + if(UseFrameLimit) // set marks + { + if(iFrameLimit==1) szMenuBuf[2] = '+'; + else szMenuBuf[2] = '*'; + } + if(iFastFwd) szMenuBuf[7] = '~'; + else + if(UseFrameSkip) szMenuBuf[7] = '*'; + + if(iUseDither) // set marks + { + if(iUseDither==1) szMenuBuf[12] = '+'; + else szMenuBuf[12] = '*'; + } + + if(dwActFixes) szMenuBuf[17] = '*'; + + if(dwCoreFlags&1) szMenuBuf[23] = 'A'; + if(dwCoreFlags&2) szMenuBuf[23] = 'M'; + + if(dwCoreFlags&0xff00) //A/M/G/D + { + if((dwCoreFlags&0x0f00)==0x0000) // D + szMenuBuf[23] = 'D'; + else + if((dwCoreFlags&0x0f00)==0x0100) // A + szMenuBuf[23] = 'A'; + else + if((dwCoreFlags&0x0f00)==0x0200) // M + szMenuBuf[23] = 'M'; + else + if((dwCoreFlags&0x0f00)==0x0300) // G + szMenuBuf[23] = 'G'; + + szMenuBuf[24]='0'+(char)((dwCoreFlags&0xf000)>>12); // number + } + + + if(lSelectedSlot) szMenuBuf[26] = '0'+(char)lSelectedSlot; + + szMenuBuf[(iMPos+1)*5]='<'; // set arrow + +} + +// Some menu action... +void SwitchDispMenu(int iStep) // SWITCH DISP MENU +{ + if(!(ulKeybits&KEY_SHOWFPS)) return; // tststs + + switch(iMPos) + { + case 0: // frame limit + { + int iType=0; + bInitCap = TRUE; + + if(UseFrameLimit) iType=iFrameLimit; + iType+=iStep; + if(iType<0) iType=2; + if(iType>2) iType=0; + if(iType==0) UseFrameLimit=0; + else + { + UseFrameLimit=1; + iFrameLimit=iType; + SetAutoFrameCap(); + } + } break; + + case 1: // frame skip + bInitCap = TRUE; + if(iStep>0) + { + if(!UseFrameSkip) {UseFrameSkip=1;iFastFwd = 0;} + else + { + if(!iFastFwd) iFastFwd=1; + else {UseFrameSkip=0;iFastFwd = 0;} + } + } + else + { + if(!UseFrameSkip) {UseFrameSkip=1;iFastFwd = 1;} + else + { + if(iFastFwd) iFastFwd=0; + else {UseFrameSkip=0;iFastFwd = 0;} + } + } + bSkipNextFrame=FALSE; + break; + + case 2: // dithering + iUseDither+=iStep; + if(iUseDither<0) iUseDither=2; + if(iUseDither>2) iUseDither=0; + break; + + case 3: // special fixes + if(iUseFixes) {iUseFixes=0;dwActFixes=0;} + else {iUseFixes=1;dwActFixes=dwCfgFixes;} + SetFixes(); + if(iFrameLimit==2) SetAutoFrameCap(); + break; + } + + BuildDispMenu(0); // update info +} diff --git a/plugins/dfxvideo/menu.h b/plugins/dfxvideo/menu.h new file mode 100644 index 0000000..ac24418 --- /dev/null +++ b/plugins/dfxvideo/menu.h @@ -0,0 +1,27 @@ +/*************************************************************************** + menu.h - description + ------------------- + begin : Sun Oct 28 2001 + copyright : (C) 2001 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ + +#ifndef _GPU_MENU_H_ +#define _GPU_MENU_H_ + +void DisplayText(void); +void CloseMenu(void); +void InitMenu(void); +void BuildDispMenu(int iInc); +void SwitchDispMenu(int iStep); + +#endif // _GPU_MENU_H_ diff --git a/plugins/dfxvideo/prim.c b/plugins/dfxvideo/prim.c new file mode 100644 index 0000000..9a51d38 --- /dev/null +++ b/plugins/dfxvideo/prim.c @@ -0,0 +1,1658 @@ +/*************************************************************************** + prim.c - description + ------------------- + begin : Sun Oct 28 2001 + copyright : (C) 2001 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ + +#define _IN_PRIMDRAW + +#include "externals.h" +#include "gpu.h" +#include "draw.h" +#include "soft.h" +#include "swap.h" + +//////////////////////////////////////////////////////////////////////// +// globals +//////////////////////////////////////////////////////////////////////// + +BOOL bUsingTWin=FALSE; +TWin_t TWin; +//unsigned long clutid; // global clut +unsigned short usMirror=0; // sprite mirror +int iDither=0; +int32_t drawX; +int32_t drawY; +int32_t drawW; +int32_t drawH; +uint32_t dwCfgFixes; +uint32_t dwActFixes=0; +uint32_t dwEmuFixes=0; +int iUseFixes; +int iUseDither=0; +BOOL bDoVSyncUpdate=FALSE; + +//////////////////////////////////////////////////////////////////////// +// Some ASM color convertion by LEWPY +//////////////////////////////////////////////////////////////////////// + +#ifdef USE_NASM + +#define BGR24to16 i386_BGR24to16 +__inline static unsigned short BGR24to16 (uint32_t BGR); + +#else + +__inline static unsigned short BGR24to16 (uint32_t BGR) +{ + return (unsigned short)(((BGR>>3)&0x1f)|((BGR&0xf80000)>>9)|((BGR&0xf800)>>6)); +} + +#endif + +//////////////////////////////////////////////////////////////////////// +// Update global TP infos +//////////////////////////////////////////////////////////////////////// + +__inline static void UpdateGlobalTP(unsigned short gdata) +{ + GlobalTextAddrX = (gdata << 6) & 0x3c0; // texture addr + + if(iGPUHeight==1024) + { + if(dwGPUVersion==2) + { + GlobalTextAddrY =((gdata & 0x60 ) << 3); + GlobalTextIL =(gdata & 0x2000) >> 13; + GlobalTextABR = (unsigned short)((gdata >> 7) & 0x3); + GlobalTextTP = (gdata >> 9) & 0x3; + if(GlobalTextTP==3) GlobalTextTP=2; + usMirror =0; + lGPUstatusRet = (lGPUstatusRet & 0xffffe000 ) | (gdata & 0x1fff ); + + // tekken dithering? right now only if dithering is forced by user + if(iUseDither==2) iDither=2; else iDither=0; + + return; + } + else + { + GlobalTextAddrY = (unsigned short)(((gdata << 4) & 0x100) | ((gdata >> 2) & 0x200)); + } + } + else GlobalTextAddrY = (gdata << 4) & 0x100; + + GlobalTextTP = (gdata >> 7) & 0x3; // tex mode (4,8,15) + + if(GlobalTextTP==3) GlobalTextTP=2; // seen in Wild9 :( + + GlobalTextABR = (gdata >> 5) & 0x3; // blend mode + + lGPUstatusRet&=~0x000001ff; // Clear the necessary bits + lGPUstatusRet|=(gdata & 0x01ff); // set the necessary bits + + switch(iUseDither) + { + case 0: + iDither=0; + break; + case 1: + if(lGPUstatusRet&0x0200) iDither=2; + else iDither=0; + break; + case 2: + iDither=2; + break; + } +} + +//////////////////////////////////////////////////////////////////////// + +__inline static void SetRenderMode(uint32_t DrawAttributes) +{ + DrawSemiTrans = (SEMITRANSBIT(DrawAttributes)) ? TRUE : FALSE; + + if(SHADETEXBIT(DrawAttributes)) + {g_m1=g_m2=g_m3=128;} + else + { + if((dwActFixes&4) && ((DrawAttributes&0x00ffffff)==0)) + DrawAttributes|=0x007f7f7f; + + g_m1=(short)(DrawAttributes&0xff); + g_m2=(short)((DrawAttributes>>8)&0xff); + g_m3=(short)((DrawAttributes>>16)&0xff); + } +} + +//////////////////////////////////////////////////////////////////////// + +// oki, here are the psx gpu coord rules: poly coords are +// 11 bit signed values (-1024...1023). If the x or y distance +// exceeds 1024, the polygon will not be drawn. +// Since quads are treated as two triangles by the real gpu, +// this 'discard rule' applies to each of the quad's triangle +// (so one triangle can be drawn, the other one discarded). +// Also, y drawing is wrapped at 512 one time, +// then it will get negative (and therefore not drawn). The +// 'CheckCoord' funcs are a simple (not comlete!) approach to +// do things right, I will add a better detection soon... the +// current approach will be easier to do in hw/accel plugins, imho + +// 11 bit signed +#define SIGNSHIFT 21 +#define CHKMAX_X 1024 +#define CHKMAX_Y 512 + +void AdjustCoord4() +{ + lx0=(short)(((int)lx0<>SIGNSHIFT); + lx1=(short)(((int)lx1<>SIGNSHIFT); + lx2=(short)(((int)lx2<>SIGNSHIFT); + lx3=(short)(((int)lx3<>SIGNSHIFT); + ly0=(short)(((int)ly0<>SIGNSHIFT); + ly1=(short)(((int)ly1<>SIGNSHIFT); + ly2=(short)(((int)ly2<>SIGNSHIFT); + ly3=(short)(((int)ly3<>SIGNSHIFT); +} + +void AdjustCoord3() +{ + lx0=(short)(((int)lx0<>SIGNSHIFT); + lx1=(short)(((int)lx1<>SIGNSHIFT); + lx2=(short)(((int)lx2<>SIGNSHIFT); + ly0=(short)(((int)ly0<>SIGNSHIFT); + ly1=(short)(((int)ly1<>SIGNSHIFT); + ly2=(short)(((int)ly2<>SIGNSHIFT); +} + +void AdjustCoord2() +{ + lx0=(short)(((int)lx0<>SIGNSHIFT); + lx1=(short)(((int)lx1<>SIGNSHIFT); + ly0=(short)(((int)ly0<>SIGNSHIFT); + ly1=(short)(((int)ly1<>SIGNSHIFT); +} + +void AdjustCoord1() +{ + lx0=(short)(((int)lx0<>SIGNSHIFT); + ly0=(short)(((int)ly0<>SIGNSHIFT); + + if(lx0<-512 && PSXDisplay.DrawOffset.x<=-512) + lx0+=2048; + + if(ly0<-512 && PSXDisplay.DrawOffset.y<=-512) + ly0+=2048; +} + +//////////////////////////////////////////////////////////////////////// +// special checks... nascar, syphon filter 2, mgs +//////////////////////////////////////////////////////////////////////// + +// xenogears FT4: not removed correctly right now... the tri 0,1,2 +// should get removed, the tri 1,2,3 should stay... pfff + +// x -466 1023 180 1023 +// y 20 -228 222 -100 + + +__inline static BOOL CheckCoord4() +{ + if(lx0<0) + { + if(((lx1-lx0)>CHKMAX_X) || + ((lx2-lx0)>CHKMAX_X)) + { + if(lx3<0) + { + if((lx1-lx3)>CHKMAX_X) return TRUE; + if((lx2-lx3)>CHKMAX_X) return TRUE; + } + } + } + if(lx1<0) + { + if((lx0-lx1)>CHKMAX_X) return TRUE; + if((lx2-lx1)>CHKMAX_X) return TRUE; + if((lx3-lx1)>CHKMAX_X) return TRUE; + } + if(lx2<0) + { + if((lx0-lx2)>CHKMAX_X) return TRUE; + if((lx1-lx2)>CHKMAX_X) return TRUE; + if((lx3-lx2)>CHKMAX_X) return TRUE; + } + if(lx3<0) + { + if(((lx1-lx3)>CHKMAX_X) || + ((lx2-lx3)>CHKMAX_X)) + { + if(lx0<0) + { + if((lx1-lx0)>CHKMAX_X) return TRUE; + if((lx2-lx0)>CHKMAX_X) return TRUE; + } + } + } + + + if(ly0<0) + { + if((ly1-ly0)>CHKMAX_Y) return TRUE; + if((ly2-ly0)>CHKMAX_Y) return TRUE; + } + if(ly1<0) + { + if((ly0-ly1)>CHKMAX_Y) return TRUE; + if((ly2-ly1)>CHKMAX_Y) return TRUE; + if((ly3-ly1)>CHKMAX_Y) return TRUE; + } + if(ly2<0) + { + if((ly0-ly2)>CHKMAX_Y) return TRUE; + if((ly1-ly2)>CHKMAX_Y) return TRUE; + if((ly3-ly2)>CHKMAX_Y) return TRUE; + } + if(ly3<0) + { + if((ly1-ly3)>CHKMAX_Y) return TRUE; + if((ly2-ly3)>CHKMAX_Y) return TRUE; + } + + return FALSE; +} + +__inline static BOOL CheckCoord3() +{ + if(lx0<0) + { + if((lx1-lx0)>CHKMAX_X) return TRUE; + if((lx2-lx0)>CHKMAX_X) return TRUE; + } + if(lx1<0) + { + if((lx0-lx1)>CHKMAX_X) return TRUE; + if((lx2-lx1)>CHKMAX_X) return TRUE; + } + if(lx2<0) + { + if((lx0-lx2)>CHKMAX_X) return TRUE; + if((lx1-lx2)>CHKMAX_X) return TRUE; + } + if(ly0<0) + { + if((ly1-ly0)>CHKMAX_Y) return TRUE; + if((ly2-ly0)>CHKMAX_Y) return TRUE; + } + if(ly1<0) + { + if((ly0-ly1)>CHKMAX_Y) return TRUE; + if((ly2-ly1)>CHKMAX_Y) return TRUE; + } + if(ly2<0) + { + if((ly0-ly2)>CHKMAX_Y) return TRUE; + if((ly1-ly2)>CHKMAX_Y) return TRUE; + } + + return FALSE; +} + + +__inline static BOOL CheckCoord2() +{ + if(lx0<0) + { + if((lx1-lx0)>CHKMAX_X) return TRUE; + } + if(lx1<0) + { + if((lx0-lx1)>CHKMAX_X) return TRUE; + } + if(ly0<0) + { + if((ly1-ly0)>CHKMAX_Y) return TRUE; + } + if(ly1<0) + { + if((ly0-ly1)>CHKMAX_Y) return TRUE; + } + + return FALSE; +} + +__inline static BOOL CheckCoordL(short slx0,short sly0,short slx1,short sly1) +{ + if(slx0<0) + { + if((slx1-slx0)>CHKMAX_X) return TRUE; + } + if(slx1<0) + { + if((slx0-slx1)>CHKMAX_X) return TRUE; + } + if(sly0<0) + { + if((sly1-sly0)>CHKMAX_Y) return TRUE; + } + if(sly1<0) + { + if((sly0-sly1)>CHKMAX_Y) return TRUE; + } + + return FALSE; +} + + +//////////////////////////////////////////////////////////////////////// +// mask stuff... used in silent hill +//////////////////////////////////////////////////////////////////////// + +void cmdSTP(unsigned char * baseAddr) +{ + uint32_t gdata = GETLE32(&((uint32_t*)baseAddr)[0]); + + lGPUstatusRet&=~0x1800; // Clear the necessary bits + lGPUstatusRet|=((gdata & 0x03) << 11); // Set the necessary bits + + if(gdata&1) {sSetMask=0x8000;lSetMask=0x80008000;} + else {sSetMask=0; lSetMask=0; } + + if(gdata&2) bCheckMask=TRUE; + else bCheckMask=FALSE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: Set texture page infos +//////////////////////////////////////////////////////////////////////// + +void cmdTexturePage(unsigned char * baseAddr) +{ + uint32_t gdata = GETLE32(&((uint32_t*)baseAddr)[0]); + + lGPUstatusRet&=~0x000007ff; + lGPUstatusRet|=(gdata & 0x07ff); + + usMirror=gdata&0x3000; + + UpdateGlobalTP((unsigned short)gdata); + GlobalTextREST = (gdata&0x00ffffff)>>9; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: turn on/off texture window +//////////////////////////////////////////////////////////////////////// + +void cmdTextureWindow(unsigned char *baseAddr) +{ + uint32_t gdata = GETLE32(&((uint32_t*)baseAddr)[0]); + + uint32_t YAlign,XAlign; + + lGPUInfoVals[INFO_TW]=gdata&0xFFFFF; + + if(gdata & 0x020) + TWin.Position.y1 = 8; // xxxx1 + else if (gdata & 0x040) + TWin.Position.y1 = 16; // xxx10 + else if (gdata & 0x080) + TWin.Position.y1 = 32; // xx100 + else if (gdata & 0x100) + TWin.Position.y1 = 64; // x1000 + else if (gdata & 0x200) + TWin.Position.y1 = 128; // 10000 + else + TWin.Position.y1 = 256; // 00000 + + // Texture window size is determined by the least bit set of the relevant 5 bits + + if (gdata & 0x001) + TWin.Position.x1 = 8; // xxxx1 + else if (gdata & 0x002) + TWin.Position.x1 = 16; // xxx10 + else if (gdata & 0x004) + TWin.Position.x1 = 32; // xx100 + else if (gdata & 0x008) + TWin.Position.x1 = 64; // x1000 + else if (gdata & 0x010) + TWin.Position.x1 = 128; // 10000 + else + TWin.Position.x1 = 256; // 00000 + + // Re-calculate the bit field, because we can't trust what is passed in the data + + + YAlign = (uint32_t)(32 - (TWin.Position.y1 >> 3)); + XAlign = (uint32_t)(32 - (TWin.Position.x1 >> 3)); + + // Absolute position of the start of the texture window + + TWin.Position.y0 = (short)(((gdata >> 15) & YAlign) << 3); + TWin.Position.x0 = (short)(((gdata >> 10) & XAlign) << 3); + + if((TWin.Position.x0 == 0 && // tw turned off + TWin.Position.y0 == 0 && + TWin.Position.x1 == 0 && + TWin.Position.y1 == 0) || + (TWin.Position.x1 == 256 && + TWin.Position.y1 == 256)) + { + bUsingTWin = FALSE; // -> just do it + } + else // otherwise + { + bUsingTWin = TRUE; // -> tw turned on + } +} + +//////////////////////////////////////////////////////////////////////// +// cmd: start of drawing area... primitives will be clipped inside +//////////////////////////////////////////////////////////////////////// + + + +void cmdDrawAreaStart(unsigned char * baseAddr) +{ + uint32_t gdata = GETLE32(&((uint32_t*)baseAddr)[0]); + + drawX = gdata & 0x3ff; // for soft drawing + + if(dwGPUVersion==2) + { + lGPUInfoVals[INFO_DRAWSTART]=gdata&0x3FFFFF; + drawY = (gdata>>12)&0x3ff; + if(drawY>=1024) drawY=1023; // some security + } + else + { + lGPUInfoVals[INFO_DRAWSTART]=gdata&0xFFFFF; + drawY = (gdata>>10)&0x3ff; + if(drawY>=512) drawY=511; // some security + } +} + +//////////////////////////////////////////////////////////////////////// +// cmd: end of drawing area... primitives will be clipped inside +//////////////////////////////////////////////////////////////////////// + +void cmdDrawAreaEnd(unsigned char * baseAddr) +{ + uint32_t gdata = GETLE32(&((uint32_t*)baseAddr)[0]); + + drawW = gdata & 0x3ff; // for soft drawing + + if(dwGPUVersion==2) + { + lGPUInfoVals[INFO_DRAWEND]=gdata&0x3FFFFF; + drawH = (gdata>>12)&0x3ff; + if(drawH>=1024) drawH=1023; // some security + } + else + { + lGPUInfoVals[INFO_DRAWEND]=gdata&0xFFFFF; + drawH = (gdata>>10)&0x3ff; + if(drawH>=512) drawH=511; // some security + } +} + +//////////////////////////////////////////////////////////////////////// +// cmd: draw offset... will be added to prim coords +//////////////////////////////////////////////////////////////////////// + +void cmdDrawOffset(unsigned char * baseAddr) +{ + uint32_t gdata = GETLE32(&((uint32_t*)baseAddr)[0]); + + PSXDisplay.DrawOffset.x = (short)(gdata & 0x7ff); + + if(dwGPUVersion==2) + { + lGPUInfoVals[INFO_DRAWOFF]=gdata&0x7FFFFF; + PSXDisplay.DrawOffset.y = (short)((gdata>>12) & 0x7ff); + } + else + { + lGPUInfoVals[INFO_DRAWOFF]=gdata&0x3FFFFF; + PSXDisplay.DrawOffset.y = (short)((gdata>>11) & 0x7ff); + } + + PSXDisplay.DrawOffset.y=(short)(((int)PSXDisplay.DrawOffset.y<<21)>>21); + PSXDisplay.DrawOffset.x=(short)(((int)PSXDisplay.DrawOffset.x<<21)>>21); +} + +//////////////////////////////////////////////////////////////////////// +// cmd: load image to vram +//////////////////////////////////////////////////////////////////////// + +void primLoadImage(unsigned char * baseAddr) +{ + unsigned short *sgpuData = ((unsigned short *) baseAddr); + + VRAMWrite.x = GETLEs16(&sgpuData[2])&0x3ff; + VRAMWrite.y = GETLEs16(&sgpuData[3])&iGPUHeightMask; + VRAMWrite.Width = GETLEs16(&sgpuData[4]); + VRAMWrite.Height = GETLEs16(&sgpuData[5]); + + DataWriteMode = DR_VRAMTRANSFER; + + VRAMWrite.ImagePtr = psxVuw + (VRAMWrite.y<<10) + VRAMWrite.x; + VRAMWrite.RowsRemaining = VRAMWrite.Width; + VRAMWrite.ColsRemaining = VRAMWrite.Height; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: vram -> psx mem +//////////////////////////////////////////////////////////////////////// + +void primStoreImage(unsigned char * baseAddr) +{ + unsigned short *sgpuData = ((unsigned short *) baseAddr); + + VRAMRead.x = GETLEs16(&sgpuData[2])&0x03ff; + VRAMRead.y = GETLEs16(&sgpuData[3])&iGPUHeightMask; + VRAMRead.Width = GETLEs16(&sgpuData[4]); + VRAMRead.Height = GETLEs16(&sgpuData[5]); + + VRAMRead.ImagePtr = psxVuw + (VRAMRead.y<<10) + VRAMRead.x; + VRAMRead.RowsRemaining = VRAMRead.Width; + VRAMRead.ColsRemaining = VRAMRead.Height; + + DataReadMode = DR_VRAMTRANSFER; + + lGPUstatusRet |= GPUSTATUS_READYFORVRAM; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: blkfill - NO primitive! Doesn't care about draw areas... +//////////////////////////////////////////////////////////////////////// + +void primBlkFill(unsigned char * baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + short *sgpuData = ((short *) baseAddr); + + short sX = GETLEs16(&sgpuData[2]); + short sY = GETLEs16(&sgpuData[3]); + short sW = GETLEs16(&sgpuData[4]) & 0x3ff; + short sH = GETLEs16(&sgpuData[5]) & 0x3ff; + + sW = (sW+15) & ~15; + + // Increase H & W if they are one short of full values, because they never can be full values + if (sH >= 1023) sH=1024; + if (sW >= 1023) sW=1024; + + // x and y of end pos + sW+=sX; + sH+=sY; + + FillSoftwareArea(sX, sY, sW, sH, BGR24to16(GETLE32(&gpuData[0]))); + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: move image vram -> vram +//////////////////////////////////////////////////////////////////////// + +void primMoveImage(unsigned char * baseAddr) +{ + short *sgpuData = ((short *) baseAddr); + + short imageY0,imageX0,imageY1,imageX1,imageSX,imageSY,i,j; + + imageX0 = GETLEs16(&sgpuData[2])&0x03ff; + imageY0 = GETLEs16(&sgpuData[3])&iGPUHeightMask; + imageX1 = GETLEs16(&sgpuData[4])&0x03ff; + imageY1 = GETLEs16(&sgpuData[5])&iGPUHeightMask; + imageSX = GETLEs16(&sgpuData[6]); + imageSY = GETLEs16(&sgpuData[7]); + + if((imageX0 == imageX1) && (imageY0 == imageY1)) return; + if(imageSX<=0) return; + if(imageSY<=0) return; + + // ZN SF2: screwed moves + // + // move sgpuData[2],sgpuData[3],sgpuData[4],sgpuData[5],sgpuData[6],sgpuData[7] + // + // move 365 182 32723 -21846 17219 15427 + // move 127 160 147 -1 20817 13409 + // move 141 165 16275 -21862 -32126 13442 + // move 161 136 24620 -1 16962 13388 + // move 168 138 32556 -13090 -29556 15500 + // + // and here's the hack for it: + + if(iGPUHeight==1024 && GETLEs16(&sgpuData[7])>1024) return; + + if((imageY0+imageSY)>iGPUHeight || + (imageX0+imageSX)>1024 || + (imageY1+imageSY)>iGPUHeight || + (imageX1+imageSX)>1024) + { + int i,j; + for(j=0;j>1; + + SRCPtr = (uint32_t *)(psxVuw + (1024*imageY0) + imageX0); + DSTPtr = (uint32_t *)(psxVuw + (1024*imageY1) + imageX1); + + LineOffset = 512 - dx; + + for(j=0;j=PSXDisplay.DisplayPosition.x && + imageY1=PSXDisplay.DisplayPosition.y) + updateDisplay(); + } +*/ + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: draw free-size Tile +//////////////////////////////////////////////////////////////////////// + +//#define SMALLDEBUG +//#include + +void primTileS(unsigned char * baseAddr) +{ + uint32_t *gpuData = ((uint32_t*)baseAddr); + short *sgpuData = ((short *) baseAddr); + short sW = GETLEs16(&sgpuData[4]) & 0x3ff; + short sH = GETLEs16(&sgpuData[5]) & iGPUHeightMask; // mmm... limit tiles to 0x1ff or height? + + lx0 = GETLEs16(&sgpuData[2]); + ly0 = GETLEs16(&sgpuData[3]); + + if(!(dwActFixes&8)) AdjustCoord1(); + + // x and y of start + ly2 = ly3 = ly0+sH +PSXDisplay.DrawOffset.y; + ly0 = ly1 = ly0 +PSXDisplay.DrawOffset.y; + lx1 = lx2 = lx0+sW +PSXDisplay.DrawOffset.x; + lx0 = lx3 = lx0 +PSXDisplay.DrawOffset.x; + + DrawSemiTrans = (SEMITRANSBIT(GETLE32(&gpuData[0]))) ? TRUE : FALSE; + + if(!(iTileCheat && sH==32 && GETLE32(&gpuData[0])==0x60ffffff)) // special cheat for certain ZiNc games + FillSoftwareAreaTrans(lx0,ly0,lx2,ly2, + BGR24to16(GETLE32(&gpuData[0]))); + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: draw 1 dot Tile (point) +//////////////////////////////////////////////////////////////////////// + +void primTile1(unsigned char * baseAddr) +{ + uint32_t *gpuData = ((uint32_t*)baseAddr); + short *sgpuData = ((short *) baseAddr); + short sH = 1; + short sW = 1; + + lx0 = GETLEs16(&sgpuData[2]); + ly0 = GETLEs16(&sgpuData[3]); + + if(!(dwActFixes&8)) AdjustCoord1(); + + // x and y of start + ly2 = ly3 = ly0+sH +PSXDisplay.DrawOffset.y; + ly0 = ly1 = ly0 +PSXDisplay.DrawOffset.y; + lx1 = lx2 = lx0+sW +PSXDisplay.DrawOffset.x; + lx0 = lx3 = lx0 +PSXDisplay.DrawOffset.x; + + DrawSemiTrans = (SEMITRANSBIT(GETLE32(&gpuData[0]))) ? TRUE : FALSE; + + FillSoftwareAreaTrans(lx0,ly0,lx2,ly2, + BGR24to16(GETLE32(&gpuData[0]))); // Takes Start and Offset + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: draw 8 dot Tile (small rect) +//////////////////////////////////////////////////////////////////////// + +void primTile8(unsigned char * baseAddr) +{ + uint32_t *gpuData = ((uint32_t*)baseAddr); + short *sgpuData = ((short *) baseAddr); + short sH = 8; + short sW = 8; + + lx0 = GETLEs16(&sgpuData[2]); + ly0 = GETLEs16(&sgpuData[3]); + + if(!(dwActFixes&8)) AdjustCoord1(); + + // x and y of start + ly2 = ly3 = ly0+sH +PSXDisplay.DrawOffset.y; + ly0 = ly1 = ly0 +PSXDisplay.DrawOffset.y; + lx1 = lx2 = lx0+sW +PSXDisplay.DrawOffset.x; + lx0 = lx3 = lx0 +PSXDisplay.DrawOffset.x; + + DrawSemiTrans = (SEMITRANSBIT(GETLE32(&gpuData[0]))) ? TRUE : FALSE; + + FillSoftwareAreaTrans(lx0,ly0,lx2,ly2, + BGR24to16(GETLE32(&gpuData[0]))); // Takes Start and Offset + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: draw 16 dot Tile (medium rect) +//////////////////////////////////////////////////////////////////////// + +void primTile16(unsigned char * baseAddr) +{ + uint32_t *gpuData = ((uint32_t*)baseAddr); + short *sgpuData = ((short *) baseAddr); + short sH = 16; + short sW = 16; + + lx0 = GETLEs16(&sgpuData[2]); + ly0 = GETLEs16(&sgpuData[3]); + + if(!(dwActFixes&8)) AdjustCoord1(); + + // x and y of start + ly2 = ly3 = ly0+sH +PSXDisplay.DrawOffset.y; + ly0 = ly1 = ly0 +PSXDisplay.DrawOffset.y; + lx1 = lx2 = lx0+sW +PSXDisplay.DrawOffset.x; + lx0 = lx3 = lx0 +PSXDisplay.DrawOffset.x; + + DrawSemiTrans = (SEMITRANSBIT(GETLE32(&gpuData[0]))) ? TRUE : FALSE; + + FillSoftwareAreaTrans(lx0,ly0,lx2,ly2, + BGR24to16(GETLE32(&gpuData[0]))); // Takes Start and Offset + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: small sprite (textured rect) +//////////////////////////////////////////////////////////////////////// + +void primSprt8(unsigned char * baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + short *sgpuData = ((short *) baseAddr); + + lx0 = GETLEs16(&sgpuData[2]); + ly0 = GETLEs16(&sgpuData[3]); + + if(!(dwActFixes&8)) AdjustCoord1(); + + SetRenderMode(GETLE32(&gpuData[0])); + + if(bUsingTWin) DrawSoftwareSpriteTWin(baseAddr,8,8); + else + if(usMirror) DrawSoftwareSpriteMirror(baseAddr,8,8); + else DrawSoftwareSprite(baseAddr,8,8, + baseAddr[8], + baseAddr[9]); + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: medium sprite (textured rect) +//////////////////////////////////////////////////////////////////////// + +void primSprt16(unsigned char * baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + short *sgpuData = ((short *) baseAddr); + + lx0 = GETLEs16(&sgpuData[2]); + ly0 = GETLEs16(&sgpuData[3]); + + if(!(dwActFixes&8)) AdjustCoord1(); + + SetRenderMode(GETLE32(&gpuData[0])); + + if(bUsingTWin) DrawSoftwareSpriteTWin(baseAddr,16,16); + else + if(usMirror) DrawSoftwareSpriteMirror(baseAddr,16,16); + else DrawSoftwareSprite(baseAddr,16,16, + baseAddr[8], + baseAddr[9]); + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: free-size sprite (textured rect) +//////////////////////////////////////////////////////////////////////// + +// func used on texture coord wrap +void primSprtSRest(unsigned char * baseAddr,unsigned short type) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + short *sgpuData = ((short *) baseAddr); + unsigned short sTypeRest=0; + + short s; + short sX = GETLEs16(&sgpuData[2]); + short sY = GETLEs16(&sgpuData[3]); + short sW = GETLEs16(&sgpuData[6]) & 0x3ff; + short sH = GETLEs16(&sgpuData[7]) & 0x1ff; + short tX = baseAddr[8]; + short tY = baseAddr[9]; + + switch(type) + { + case 1: + s=256-baseAddr[8]; + sW-=s; + sX+=s; + tX=0; + break; + case 2: + s=256-baseAddr[9]; + sH-=s; + sY+=s; + tY=0; + break; + case 3: + s=256-baseAddr[8]; + sW-=s; + sX+=s; + tX=0; + s=256-baseAddr[9]; + sH-=s; + sY+=s; + tY=0; + break; + case 4: + s=512-baseAddr[8]; + sW-=s; + sX+=s; + tX=0; + break; + case 5: + s=512-baseAddr[9]; + sH-=s; + sY+=s; + tY=0; + break; + case 6: + s=512-baseAddr[8]; + sW-=s; + sX+=s; + tX=0; + s=512-baseAddr[9]; + sH-=s; + sY+=s; + tY=0; + break; + } + + SetRenderMode(GETLE32(&gpuData[0])); + + if(tX+sW>256) {sW=256-tX;sTypeRest+=1;} + if(tY+sH>256) {sH=256-tY;sTypeRest+=2;} + + lx0 = sX; + ly0 = sY; + + if(!(dwActFixes&8)) AdjustCoord1(); + + DrawSoftwareSprite(baseAddr,sW,sH,tX,tY); + + if(sTypeRest && type<4) + { + if(sTypeRest&1 && type==1) primSprtSRest(baseAddr,4); + if(sTypeRest&2 && type==2) primSprtSRest(baseAddr,5); + if(sTypeRest==3 && type==3) primSprtSRest(baseAddr,6); + } + +} + +//////////////////////////////////////////////////////////////////////// + +void primSprtS(unsigned char * baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + short *sgpuData = ((short *) baseAddr); + short sW,sH; + + lx0 = GETLEs16(&sgpuData[2]); + ly0 = GETLEs16(&sgpuData[3]); + + if(!(dwActFixes&8)) AdjustCoord1(); + + sW = GETLEs16(&sgpuData[6]) & 0x3ff; + sH = GETLEs16(&sgpuData[7]) & 0x1ff; + + SetRenderMode(GETLE32(&gpuData[0])); + + if(bUsingTWin) DrawSoftwareSpriteTWin(baseAddr,sW,sH); + else + if(usMirror) DrawSoftwareSpriteMirror(baseAddr,sW,sH); + else + { + unsigned short sTypeRest=0; + short tX=baseAddr[8]; + short tY=baseAddr[9]; + + if(tX+sW>256) {sW=256-tX;sTypeRest+=1;} + if(tY+sH>256) {sH=256-tY;sTypeRest+=2;} + + DrawSoftwareSprite(baseAddr,sW,sH,tX,tY); + + if(sTypeRest) + { + if(sTypeRest&1) primSprtSRest(baseAddr,1); + if(sTypeRest&2) primSprtSRest(baseAddr,2); + if(sTypeRest==3) primSprtSRest(baseAddr,3); + } + + } + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: flat shaded Poly4 +//////////////////////////////////////////////////////////////////////// + +void primPolyF4(unsigned char *baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + short *sgpuData = ((short *) baseAddr); + + lx0 = GETLEs16(&sgpuData[2]); + ly0 = GETLEs16(&sgpuData[3]); + lx1 = GETLEs16(&sgpuData[4]); + ly1 = GETLEs16(&sgpuData[5]); + lx2 = GETLEs16(&sgpuData[6]); + ly2 = GETLEs16(&sgpuData[7]); + lx3 = GETLEs16(&sgpuData[8]); + ly3 = GETLEs16(&sgpuData[9]); + + if(!(dwActFixes&8)) + { + AdjustCoord4(); + if(CheckCoord4()) return; + } + + offsetPSX4(); + DrawSemiTrans = (SEMITRANSBIT(GETLE32(&gpuData[0]))) ? TRUE : FALSE; + + drawPoly4F(GETLE32(&gpuData[0])); + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: smooth shaded Poly4 +//////////////////////////////////////////////////////////////////////// + +void primPolyG4(unsigned char * baseAddr) +{ + uint32_t *gpuData = (uint32_t *)baseAddr; + short *sgpuData = ((short *) baseAddr); + + lx0 = GETLEs16(&sgpuData[2]); + ly0 = GETLEs16(&sgpuData[3]); + lx1 = GETLEs16(&sgpuData[6]); + ly1 = GETLEs16(&sgpuData[7]); + lx2 = GETLEs16(&sgpuData[10]); + ly2 = GETLEs16(&sgpuData[11]); + lx3 = GETLEs16(&sgpuData[14]); + ly3 = GETLEs16(&sgpuData[15]); + + if(!(dwActFixes&8)) + { + AdjustCoord4(); + if(CheckCoord4()) return; + } + + offsetPSX4(); + DrawSemiTrans = (SEMITRANSBIT(GETLE32(&gpuData[0]))) ? TRUE : FALSE; + + drawPoly4G(GETLE32(&gpuData[0]), GETLE32(&gpuData[2]), + GETLE32(&gpuData[4]), GETLE32(&gpuData[6])); + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: flat shaded Texture3 +//////////////////////////////////////////////////////////////////////// + +void primPolyFT3(unsigned char * baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + short *sgpuData = ((short *) baseAddr); + + lx0 = GETLEs16(&sgpuData[2]); + ly0 = GETLEs16(&sgpuData[3]); + lx1 = GETLEs16(&sgpuData[6]); + ly1 = GETLEs16(&sgpuData[7]); + lx2 = GETLEs16(&sgpuData[10]); + ly2 = GETLEs16(&sgpuData[11]); + + lLowerpart=GETLE32(&gpuData[4])>>16; + UpdateGlobalTP((unsigned short)lLowerpart); + + if(!(dwActFixes&8)) + { + AdjustCoord3(); + if(CheckCoord3()) return; + } + + offsetPSX3(); + SetRenderMode(GETLE32(&gpuData[0])); + + drawPoly3FT(baseAddr); + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: flat shaded Texture4 +//////////////////////////////////////////////////////////////////////// + +void primPolyFT4(unsigned char * baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + short *sgpuData = ((short *) baseAddr); + + lx0 = GETLEs16(&sgpuData[2]); + ly0 = GETLEs16(&sgpuData[3]); + lx1 = GETLEs16(&sgpuData[6]); + ly1 = GETLEs16(&sgpuData[7]); + lx2 = GETLEs16(&sgpuData[10]); + ly2 = GETLEs16(&sgpuData[11]); + lx3 = GETLEs16(&sgpuData[14]); + ly3 = GETLEs16(&sgpuData[15]); + + lLowerpart=GETLE32(&gpuData[4])>>16; + UpdateGlobalTP((unsigned short)lLowerpart); + + if(!(dwActFixes&8)) + { + AdjustCoord4(); + if(CheckCoord4()) return; + } + + offsetPSX4(); + + SetRenderMode(GETLE32(&gpuData[0])); + + drawPoly4FT(baseAddr); + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: smooth shaded Texture3 +//////////////////////////////////////////////////////////////////////// + +void primPolyGT3(unsigned char *baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + short *sgpuData = ((short *) baseAddr); + + lx0 = GETLEs16(&sgpuData[2]); + ly0 = GETLEs16(&sgpuData[3]); + lx1 = GETLEs16(&sgpuData[8]); + ly1 = GETLEs16(&sgpuData[9]); + lx2 = GETLEs16(&sgpuData[14]); + ly2 = GETLEs16(&sgpuData[15]); + + lLowerpart=GETLE32(&gpuData[5])>>16; + UpdateGlobalTP((unsigned short)lLowerpart); + + if(!(dwActFixes&8)) + { + AdjustCoord3(); + if(CheckCoord3()) return; + } + + offsetPSX3(); + DrawSemiTrans = (SEMITRANSBIT(GETLE32(&gpuData[0]))) ? TRUE : FALSE; + + if(SHADETEXBIT(GETLE32(&gpuData[0]))) + { + gpuData[0] = (gpuData[0]&HOST2LE32(0xff000000))|HOST2LE32(0x00808080); + gpuData[3] = (gpuData[3]&HOST2LE32(0xff000000))|HOST2LE32(0x00808080); + gpuData[6] = (gpuData[6]&HOST2LE32(0xff000000))|HOST2LE32(0x00808080); + } + + drawPoly3GT(baseAddr); + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: smooth shaded Poly3 +//////////////////////////////////////////////////////////////////////// + +void primPolyG3(unsigned char *baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + short *sgpuData = ((short *) baseAddr); + + lx0 = GETLEs16(&sgpuData[2]); + ly0 = GETLEs16(&sgpuData[3]); + lx1 = GETLEs16(&sgpuData[6]); + ly1 = GETLEs16(&sgpuData[7]); + lx2 = GETLEs16(&sgpuData[10]); + ly2 = GETLEs16(&sgpuData[11]); + + if(!(dwActFixes&8)) + { + AdjustCoord3(); + if(CheckCoord3()) return; + } + + offsetPSX3(); + DrawSemiTrans = (SEMITRANSBIT(GETLE32(&gpuData[0]))) ? TRUE : FALSE; + + drawPoly3G(GETLE32(&gpuData[0]), GETLE32(&gpuData[2]), GETLE32(&gpuData[4])); + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: smooth shaded Texture4 +//////////////////////////////////////////////////////////////////////// + +void primPolyGT4(unsigned char *baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + short *sgpuData = ((short *) baseAddr); + + lx0 = GETLEs16(&sgpuData[2]); + ly0 = GETLEs16(&sgpuData[3]); + lx1 = GETLEs16(&sgpuData[8]); + ly1 = GETLEs16(&sgpuData[9]); + lx2 = GETLEs16(&sgpuData[14]); + ly2 = GETLEs16(&sgpuData[15]); + lx3 = GETLEs16(&sgpuData[20]); + ly3 = GETLEs16(&sgpuData[21]); + + lLowerpart=GETLE32(&gpuData[5])>>16; + UpdateGlobalTP((unsigned short)lLowerpart); + + if(!(dwActFixes&8)) + { + AdjustCoord4(); + if(CheckCoord4()) return; + } + + offsetPSX4(); + DrawSemiTrans = (SEMITRANSBIT(GETLE32(&gpuData[0]))) ? TRUE : FALSE; + + if(SHADETEXBIT(GETLE32(&gpuData[0]))) + { + gpuData[0] = (gpuData[0]&HOST2LE32(0xff000000))|HOST2LE32(0x00808080); + gpuData[3] = (gpuData[3]&HOST2LE32(0xff000000))|HOST2LE32(0x00808080); + gpuData[6] = (gpuData[6]&HOST2LE32(0xff000000))|HOST2LE32(0x00808080); + gpuData[9] = (gpuData[9]&HOST2LE32(0xff000000))|HOST2LE32(0x00808080); + } + + drawPoly4GT(baseAddr); + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: smooth shaded Poly3 +//////////////////////////////////////////////////////////////////////// + +void primPolyF3(unsigned char *baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + short *sgpuData = ((short *) baseAddr); + + lx0 = GETLEs16(&sgpuData[2]); + ly0 = GETLEs16(&sgpuData[3]); + lx1 = GETLEs16(&sgpuData[4]); + ly1 = GETLEs16(&sgpuData[5]); + lx2 = GETLEs16(&sgpuData[6]); + ly2 = GETLEs16(&sgpuData[7]); + + if(!(dwActFixes&8)) + { + AdjustCoord3(); + if(CheckCoord3()) return; + } + + offsetPSX3(); + SetRenderMode(GETLE32(&gpuData[0])); + + drawPoly3F(GETLE32(&gpuData[0])); + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: skipping shaded polylines +//////////////////////////////////////////////////////////////////////// + +void primLineGSkip(unsigned char *baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + int iMax=255; + int i=2; + + ly1 = (short)((GETLE32(&gpuData[1])>>16) & 0xffff); + lx1 = (short)(GETLE32(&gpuData[1]) & 0xffff); + + while(!(((GETLE32(&gpuData[i]) & 0xF000F000) == 0x50005000) && i>=4)) + { + i++; + ly1 = (short)((GETLE32(&gpuData[i])>>16) & 0xffff); + lx1 = (short)(GETLE32(&gpuData[i]) & 0xffff); + i++;if(i>iMax) break; + } +} + +//////////////////////////////////////////////////////////////////////// +// cmd: shaded polylines +//////////////////////////////////////////////////////////////////////// + +void primLineGEx(unsigned char *baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + int iMax=255; + uint32_t lc0,lc1; + short slx0,slx1,sly0,sly1;int i=2;BOOL bDraw=TRUE; + + sly1 = (short)((GETLE32(&gpuData[1])>>16) & 0xffff); + slx1 = (short)(GETLE32(&gpuData[1]) & 0xffff); + + if(!(dwActFixes&8)) + { + slx1=(short)(((int)slx1<>SIGNSHIFT); + sly1=(short)(((int)sly1<>SIGNSHIFT); + } + + lc1 = gpuData[0] & 0xffffff; + + DrawSemiTrans = (SEMITRANSBIT(GETLE32(&gpuData[0]))) ? TRUE : FALSE; + + while(!(((GETLE32(&gpuData[i]) & 0xF000F000) == 0x50005000) && i>=4)) + { + sly0=sly1; slx0=slx1; lc0=lc1; + lc1=GETLE32(&gpuData[i]) & 0xffffff; + + i++; + + // no check needed on gshaded polyline positions + // if((gpuData[i] & 0xF000F000) == 0x50005000) break; + + sly1 = (short)((GETLE32(&gpuData[i])>>16) & 0xffff); + slx1 = (short)(GETLE32(&gpuData[i]) & 0xffff); + + if(!(dwActFixes&8)) + { + slx1=(short)(((int)slx1<>SIGNSHIFT); + sly1=(short)(((int)sly1<>SIGNSHIFT); + if(CheckCoordL(slx0,sly0,slx1,sly1)) bDraw=FALSE; else bDraw=TRUE; + } + + if ((lx0 != lx1) || (ly0 != ly1)) + { + ly0=sly0; + lx0=slx0; + ly1=sly1; + lx1=slx1; + + offsetPSX2(); + if(bDraw) DrawSoftwareLineShade(lc0, lc1); + } + i++; + if(i>iMax) break; + } + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: shaded polyline2 +//////////////////////////////////////////////////////////////////////// + +void primLineG2(unsigned char *baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + short *sgpuData = ((short *) baseAddr); + + lx0 = GETLEs16(&sgpuData[2]); + ly0 = GETLEs16(&sgpuData[3]); + lx1 = GETLEs16(&sgpuData[6]); + ly1 = GETLEs16(&sgpuData[7]); + + if(!(dwActFixes&8)) + { + AdjustCoord2(); + if(CheckCoord2()) return; + } + + if((lx0 == lx1) && (ly0 == ly1)) {lx1++;ly1++;} + + DrawSemiTrans = (SEMITRANSBIT(GETLE32(&gpuData[0]))) ? TRUE : FALSE; + offsetPSX2(); + DrawSoftwareLineShade(GETLE32(&gpuData[0]),GETLE32(&gpuData[2])); + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: skipping flat polylines +//////////////////////////////////////////////////////////////////////// + +void primLineFSkip(unsigned char *baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + int i=2,iMax=255; + + ly1 = (short)((GETLE32(&gpuData[1])>>16) & 0xffff); + lx1 = (short)(GETLE32(&gpuData[1]) & 0xffff); + + while(!(((GETLE32(&gpuData[i]) & 0xF000F000) == 0x50005000) && i>=3)) + { + ly1 = (short)((GETLE32(&gpuData[i])>>16) & 0xffff); + lx1 = (short)(GETLE32(&gpuData[i]) & 0xffff); + i++;if(i>iMax) break; + } +} + +//////////////////////////////////////////////////////////////////////// +// cmd: drawing flat polylines +//////////////////////////////////////////////////////////////////////// + +void primLineFEx(unsigned char *baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + int iMax; + short slx0,slx1,sly0,sly1;int i=2;BOOL bDraw=TRUE; + + iMax=255; + + sly1 = (short)((GETLE32(&gpuData[1])>>16) & 0xffff); + slx1 = (short)(GETLE32(&gpuData[1]) & 0xffff); + if(!(dwActFixes&8)) + { + slx1=(short)(((int)slx1<>SIGNSHIFT); + sly1=(short)(((int)sly1<>SIGNSHIFT); + } + + SetRenderMode(GETLE32(&gpuData[0])); + + while(!(((GETLE32(&gpuData[i]) & 0xF000F000) == 0x50005000) && i>=3)) + { + sly0 = sly1;slx0=slx1; + sly1 = (short)((GETLE32(&gpuData[i])>>16) & 0xffff); + slx1 = (short)(GETLE32(&gpuData[i]) & 0xffff); + if(!(dwActFixes&8)) + { + slx1=(short)(((int)slx1<>SIGNSHIFT); + sly1=(short)(((int)sly1<>SIGNSHIFT); + + if(CheckCoordL(slx0,sly0,slx1,sly1)) bDraw=FALSE; else bDraw=TRUE; + } + + ly0=sly0; + lx0=slx0; + ly1=sly1; + lx1=slx1; + + offsetPSX2(); + if(bDraw) DrawSoftwareLineFlat(GETLE32(&gpuData[0])); + + i++;if(i>iMax) break; + } + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: drawing flat polyline2 +//////////////////////////////////////////////////////////////////////// + +void primLineF2(unsigned char *baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + short *sgpuData = ((short *) baseAddr); + + lx0 = GETLEs16(&sgpuData[2]); + ly0 = GETLEs16(&sgpuData[3]); + lx1 = GETLEs16(&sgpuData[4]); + ly1 = GETLEs16(&sgpuData[5]); + + if(!(dwActFixes&8)) + { + AdjustCoord2(); + if(CheckCoord2()) return; + } + + if((lx0 == lx1) && (ly0 == ly1)) {lx1++;ly1++;} + + offsetPSX2(); + SetRenderMode(GETLE32(&gpuData[0])); + + DrawSoftwareLineFlat(GETLE32(&gpuData[0])); + + bDoVSyncUpdate=TRUE; +} + +//////////////////////////////////////////////////////////////////////// +// cmd: well, easiest command... not implemented +//////////////////////////////////////////////////////////////////////// + +void primNI(unsigned char *bA) +{ +} + +//////////////////////////////////////////////////////////////////////// +// cmd func ptr table +//////////////////////////////////////////////////////////////////////// + + +void (*primTableJ[256])(unsigned char *) = +{ + // 00 + primNI,primNI,primBlkFill,primNI,primNI,primNI,primNI,primNI, + // 08 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 10 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 18 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 20 + primPolyF3,primPolyF3,primPolyF3,primPolyF3,primPolyFT3,primPolyFT3,primPolyFT3,primPolyFT3, + // 28 + primPolyF4,primPolyF4,primPolyF4,primPolyF4,primPolyFT4,primPolyFT4,primPolyFT4,primPolyFT4, + // 30 + primPolyG3,primPolyG3,primPolyG3,primPolyG3,primPolyGT3,primPolyGT3,primPolyGT3,primPolyGT3, + // 38 + primPolyG4,primPolyG4,primPolyG4,primPolyG4,primPolyGT4,primPolyGT4,primPolyGT4,primPolyGT4, + // 40 + primLineF2,primLineF2,primLineF2,primLineF2,primNI,primNI,primNI,primNI, + // 48 + primLineFEx,primLineFEx,primLineFEx,primLineFEx,primLineFEx,primLineFEx,primLineFEx,primLineFEx, + // 50 + primLineG2,primLineG2,primLineG2,primLineG2,primNI,primNI,primNI,primNI, + // 58 + primLineGEx,primLineGEx,primLineGEx,primLineGEx,primLineGEx,primLineGEx,primLineGEx,primLineGEx, + // 60 + primTileS,primTileS,primTileS,primTileS,primSprtS,primSprtS,primSprtS,primSprtS, + // 68 + primTile1,primTile1,primTile1,primTile1,primNI,primNI,primNI,primNI, + // 70 + primTile8,primTile8,primTile8,primTile8,primSprt8,primSprt8,primSprt8,primSprt8, + // 78 + primTile16,primTile16,primTile16,primTile16,primSprt16,primSprt16,primSprt16,primSprt16, + // 80 + primMoveImage,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 88 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 90 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 98 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // a0 + primLoadImage,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // a8 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // b0 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // b8 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // c0 + primStoreImage,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // c8 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // d0 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // d8 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // e0 + primNI,cmdTexturePage,cmdTextureWindow,cmdDrawAreaStart,cmdDrawAreaEnd,cmdDrawOffset,cmdSTP,primNI, + // e8 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // f0 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // f8 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI +}; + +//////////////////////////////////////////////////////////////////////// +// cmd func ptr table for skipping +//////////////////////////////////////////////////////////////////////// + +void (*primTableSkip[256])(unsigned char *) = +{ + // 00 + primNI,primNI,primBlkFill,primNI,primNI,primNI,primNI,primNI, + // 08 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 10 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 18 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 20 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 28 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 30 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 38 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 40 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 48 + primLineFSkip,primLineFSkip,primLineFSkip,primLineFSkip,primLineFSkip,primLineFSkip,primLineFSkip,primLineFSkip, + // 50 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 58 + primLineGSkip,primLineGSkip,primLineGSkip,primLineGSkip,primLineGSkip,primLineGSkip,primLineGSkip,primLineGSkip, + // 60 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 68 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 70 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 78 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 80 + primMoveImage,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 88 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 90 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // 98 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // a0 + primLoadImage,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // a8 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // b0 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // b8 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // c0 + primStoreImage,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // c8 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // d0 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // d8 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // e0 + primNI,cmdTexturePage,cmdTextureWindow,cmdDrawAreaStart,cmdDrawAreaEnd,cmdDrawOffset,cmdSTP,primNI, + // e8 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // f0 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI, + // f8 + primNI,primNI,primNI,primNI,primNI,primNI,primNI,primNI +}; diff --git a/plugins/dfxvideo/prim.h b/plugins/dfxvideo/prim.h new file mode 100644 index 0000000..c37c12b --- /dev/null +++ b/plugins/dfxvideo/prim.h @@ -0,0 +1,24 @@ +/*************************************************************************** + prim.h - description + ------------------- + begin : Sun Oct 28 2001 + copyright : (C) 2001 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ + +#ifndef _PRIMDRAW_H_ +#define _PRIMDRAW_H_ + +void UploadScreen (long Position); +void PrepareFullScreenUpload (long Position); + +#endif // _PRIMDRAW_H_ diff --git a/plugins/dfxvideo/soft.c b/plugins/dfxvideo/soft.c new file mode 100644 index 0000000..005c488 --- /dev/null +++ b/plugins/dfxvideo/soft.c @@ -0,0 +1,8485 @@ +/*************************************************************************** + soft.c - description + ------------------- + begin : Sun Oct 28 2001 + copyright : (C) 2001 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ + +#define _IN_SOFT + +#include "externals.h" +#include "soft.h" + +//#define VC_INLINE +#include "gpu.h" +#include "prim.h" +#include "menu.h" +#include "swap.h" +#undef __inline +#define __inline inline static + +//////////////////////////////////////////////////////////////////////////////////// +// "NO EDGE BUFFER" POLY VERSION... FUNCS BASED ON FATMAP.TXT FROM MRI / Doomsday +//////////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////////// +// defines +//////////////////////////////////////////////////////////////////////////////////// + +// switches for painting textured quads as 2 triangles (small glitches, but better shading!) +// can be toggled by game fix 0x200 in version 1.17 anyway, so let the defines enabled! + +#define POLYQUAD3 +#define POLYQUAD3GT + +// fast solid loops... a bit more additional code, of course + +#define FASTSOLID + +// psx blending mode 3 with 25% incoming color (instead 50% without the define) + +#define HALFBRIGHTMODE3 + +// color decode defines + +#define XCOL1(x) (x & 0x1f) +#define XCOL2(x) (x & 0x3e0) +#define XCOL3(x) (x & 0x7c00) + +#define XCOL1D(x) (x & 0x1f) +#define XCOL2D(x) ((x>>5) & 0x1f) +#define XCOL3D(x) ((x>>10) & 0x1f) + +#define X32TCOL1(x) ((x & 0x001f001f)<<7) +#define X32TCOL2(x) ((x & 0x03e003e0)<<2) +#define X32TCOL3(x) ((x & 0x7c007c00)>>3) + +#define X32COL1(x) (x & 0x001f001f) +#define X32COL2(x) ((x>>5) & 0x001f001f) +#define X32COL3(x) ((x>>10) & 0x001f001f) + +#define X32ACOL1(x) (x & 0x001e001e) +#define X32ACOL2(x) ((x>>5) & 0x001e001e) +#define X32ACOL3(x) ((x>>10) & 0x001e001e) + +#define X32BCOL1(x) (x & 0x001c001c) +#define X32BCOL2(x) ((x>>5) & 0x001c001c) +#define X32BCOL3(x) ((x>>10) & 0x001c001c) + +#define X32PSXCOL(r,g,b) ((g<<10)|(b<<5)|r) + +#define XPSXCOL(r,g,b) ((g&0x7c00)|(b&0x3e0)|(r&0x1f)) + +//////////////////////////////////////////////////////////////////////////////////// +// soft globals +//////////////////////////////////////////////////////////////////////////////////// + +short g_m1=255,g_m2=255,g_m3=255; +short DrawSemiTrans=FALSE; +short Ymin; +short Ymax; + +short ly0,lx0,ly1,lx1,ly2,lx2,ly3,lx3; // global psx vertex coords +int32_t GlobalTextAddrX,GlobalTextAddrY,GlobalTextTP; +int32_t GlobalTextREST,GlobalTextABR,GlobalTextPAGE; + +//////////////////////////////////////////////////////////////////////// +// POLYGON OFFSET FUNCS +//////////////////////////////////////////////////////////////////////// + +void offsetPSXLine(void) +{ + short x0,x1,y0,y1,dx,dy;float px,py; + + x0 = lx0+1+PSXDisplay.DrawOffset.x; + x1 = lx1+1+PSXDisplay.DrawOffset.x; + y0 = ly0+1+PSXDisplay.DrawOffset.y; + y1 = ly1+1+PSXDisplay.DrawOffset.y; + + dx=x1-x0; + dy=y1-y0; + + // tricky line width without sqrt + + if(dx>=0) + { + if(dy>=0) + { + px=0.5f; + if(dx>dy) py=-0.5f; + else if(dxdy) px= 0.5f; + else if(dx=0) + { + py=0.5f; + dx=-dx; + if(dx>dy) px=-0.5f; + else if(dxdy) py=-0.5f; + else if(dx>10; + x-=(y<<10); + + coeff = dithertable[(y&3)*4+(x&3)]; + + rlow = r&7; glow = g&7; blow = b&7; + + r>>=3; g>>=3; b>>=3; + + if ((r < 0x1F) && rlow > coeff) r++; + if ((g < 0x1F) && glow > coeff) g++; + if ((b < 0x1F) && blow > coeff) b++; + + PUTLE16(pdest, ((unsigned short)b<<10) | + ((unsigned short)g<<5) | + (unsigned short)r | sM); +} + +///////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////// + +__inline void GetShadeTransCol_Dither(unsigned short * pdest, int32_t m1, int32_t m2, int32_t m3) +{ + int32_t r,g,b; + + if(bCheckMask && (*pdest & HOST2LE16(0x8000))) return; + + if(DrawSemiTrans) + { + r=((XCOL1D(GETLE16(pdest)))<<3); + b=((XCOL2D(GETLE16(pdest)))<<3); + g=((XCOL3D(GETLE16(pdest)))<<3); + + if(GlobalTextABR==0) + { + r=(r>>1)+(m1>>1); + b=(b>>1)+(m2>>1); + g=(g>>1)+(m3>>1); + } + else + if(GlobalTextABR==1) + { + r+=m1; + b+=m2; + g+=m3; + } + else + if(GlobalTextABR==2) + { + r-=m1; + b-=m2; + g-=m3; + if(r&0x80000000) r=0; + if(b&0x80000000) b=0; + if(g&0x80000000) g=0; + } + else + { +#ifdef HALFBRIGHTMODE3 + r+=(m1>>2); + b+=(m2>>2); + g+=(m3>>2); +#else + r+=(m1>>1); + b+=(m2>>1); + g+=(m3>>1); +#endif + } + } + else + { + r=m1; + b=m2; + g=m3; + } + + if(r&0x7FFFFF00) r=0xff; + if(b&0x7FFFFF00) b=0xff; + if(g&0x7FFFFF00) g=0xff; + + Dither16(pdest,r,b,g,sSetMask); +} + +//////////////////////////////////////////////////////////////////////// + +__inline void GetShadeTransCol(unsigned short * pdest,unsigned short color) +{ + if(bCheckMask && (*pdest & HOST2LE16(0x8000))) return; + + if(DrawSemiTrans) + { + int32_t r,g,b; + + if(GlobalTextABR==0) + { + PUTLE16(pdest, (((GETLE16(pdest)&0x7bde)>>1)+(((color)&0x7bde)>>1))|sSetMask);//0x8000; + return; +/* + r=(XCOL1(*pdest)>>1)+((XCOL1(color))>>1); + b=(XCOL2(*pdest)>>1)+((XCOL2(color))>>1); + g=(XCOL3(*pdest)>>1)+((XCOL3(color))>>1); +*/ + } + else + if(GlobalTextABR==1) + { + r=(XCOL1(GETLE16(pdest)))+((XCOL1(color))); + b=(XCOL2(GETLE16(pdest)))+((XCOL2(color))); + g=(XCOL3(GETLE16(pdest)))+((XCOL3(color))); + } + else + if(GlobalTextABR==2) + { + r=(XCOL1(GETLE16(pdest)))-((XCOL1(color))); + b=(XCOL2(GETLE16(pdest)))-((XCOL2(color))); + g=(XCOL3(GETLE16(pdest)))-((XCOL3(color))); + if(r&0x80000000) r=0; + if(b&0x80000000) b=0; + if(g&0x80000000) g=0; + } + else + { +#ifdef HALFBRIGHTMODE3 + r=(XCOL1(GETLE16(pdest)))+((XCOL1(color))>>2); + b=(XCOL2(GETLE16(pdest)))+((XCOL2(color))>>2); + g=(XCOL3(GETLE16(pdest)))+((XCOL3(color))>>2); +#else + r=(XCOL1(GETLE16(pdest)))+((XCOL1(color))>>1); + b=(XCOL2(GETLE16(pdest)))+((XCOL2(color))>>1); + g=(XCOL3(GETLE16(pdest)))+((XCOL3(color))>>1); +#endif + } + + if(r&0x7FFFFFE0) r=0x1f; + if(b&0x7FFFFC00) b=0x3e0; + if(g&0x7FFF8000) g=0x7c00; + + PUTLE16(pdest, (XPSXCOL(r,g,b))|sSetMask);//0x8000; + } + else PUTLE16(pdest, color|sSetMask); +} + +//////////////////////////////////////////////////////////////////////// + +__inline void GetShadeTransCol32(uint32_t * pdest,uint32_t color) +{ + if(DrawSemiTrans) + { + int32_t r,g,b; + + if(GlobalTextABR==0) + { + if(!bCheckMask) + { + PUTLE32(pdest, (((GETLE32(pdest)&0x7bde7bde)>>1)+(((color)&0x7bde7bde)>>1))|lSetMask);//0x80008000; + return; + } + r=(X32ACOL1(GETLE32(pdest))>>1)+((X32ACOL1(color))>>1); + b=(X32ACOL2(GETLE32(pdest))>>1)+((X32ACOL2(color))>>1); + g=(X32ACOL3(GETLE32(pdest))>>1)+((X32ACOL3(color))>>1); + } + else + if(GlobalTextABR==1) + { + r=(X32COL1(GETLE32(pdest)))+((X32COL1(color))); + b=(X32COL2(GETLE32(pdest)))+((X32COL2(color))); + g=(X32COL3(GETLE32(pdest)))+((X32COL3(color))); + } + else + if(GlobalTextABR==2) + { + int32_t sr,sb,sg,src,sbc,sgc,c; + src=XCOL1(color);sbc=XCOL2(color);sgc=XCOL3(color); + c=GETLE32(pdest)>>16; + sr=(XCOL1(c))-src; if(sr&0x8000) sr=0; + sb=(XCOL2(c))-sbc; if(sb&0x8000) sb=0; + sg=(XCOL3(c))-sgc; if(sg&0x8000) sg=0; + r=((int32_t)sr)<<16;b=((int32_t)sb)<<11;g=((int32_t)sg)<<6; + c=LOWORD(GETLE32(pdest)); + sr=(XCOL1(c))-src; if(sr&0x8000) sr=0; + sb=(XCOL2(c))-sbc; if(sb&0x8000) sb=0; + sg=(XCOL3(c))-sgc; if(sg&0x8000) sg=0; + r|=sr;b|=sb>>5;g|=sg>>10; + } + else + { +#ifdef HALFBRIGHTMODE3 + r=(X32COL1(GETLE32(pdest)))+((X32BCOL1(color))>>2); + b=(X32COL2(GETLE32(pdest)))+((X32BCOL2(color))>>2); + g=(X32COL3(GETLE32(pdest)))+((X32BCOL3(color))>>2); +#else + r=(X32COL1(GETLE32(pdest)))+((X32ACOL1(color))>>1); + b=(X32COL2(GETLE32(pdest)))+((X32ACOL2(color))>>1); + g=(X32COL3(GETLE32(pdest)))+((X32ACOL3(color))>>1); +#endif + } + + if(r&0x7FE00000) r=0x1f0000|(r&0xFFFF); + if(r&0x7FE0) r=0x1f |(r&0xFFFF0000); + if(b&0x7FE00000) b=0x1f0000|(b&0xFFFF); + if(b&0x7FE0) b=0x1f |(b&0xFFFF0000); + if(g&0x7FE00000) g=0x1f0000|(g&0xFFFF); + if(g&0x7FE0) g=0x1f |(g&0xFFFF0000); + + if(bCheckMask) + { + uint32_t ma=GETLE32(pdest); + PUTLE32(pdest, (X32PSXCOL(r,g,b))|lSetMask);//0x80008000; + if(ma&0x80000000) PUTLE32(pdest, (ma&0xFFFF0000)|(*pdest&0xFFFF)); + if(ma&0x00008000) PUTLE32(pdest, (ma&0xFFFF) |(*pdest&0xFFFF0000)); + return; + } + PUTLE32(pdest, (X32PSXCOL(r,g,b))|lSetMask);//0x80008000; + } + else + { + if(bCheckMask) + { + uint32_t ma=GETLE32(pdest); + PUTLE32(pdest, color|lSetMask);//0x80008000; + if(ma&0x80000000) PUTLE32(pdest, (ma&0xFFFF0000)|(GETLE32(pdest)&0xFFFF)); + if(ma&0x00008000) PUTLE32(pdest, (ma&0xFFFF) |(GETLE32(pdest)&0xFFFF0000)); + return; + } + + PUTLE32(pdest, color|lSetMask);//0x80008000; + } +} + +//////////////////////////////////////////////////////////////////////// + +__inline void GetTextureTransColG(unsigned short * pdest,unsigned short color) +{ + int32_t r,g,b;unsigned short l; + + if(color==0) return; + + if(bCheckMask && (*pdest & HOST2LE16(0x8000))) return; + + l=sSetMask|(color&0x8000); + + if(DrawSemiTrans && (color&0x8000)) + { + if(GlobalTextABR==0) + { + unsigned short d; + d =(GETLE16(pdest)&0x7bde)>>1; + color =((color) &0x7bde)>>1; + r=(XCOL1(d))+((((XCOL1(color)))* g_m1)>>7); + b=(XCOL2(d))+((((XCOL2(color)))* g_m2)>>7); + g=(XCOL3(d))+((((XCOL3(color)))* g_m3)>>7); + +/* + r=(XCOL1(*pdest)>>1)+((((XCOL1(color))>>1)* g_m1)>>7); + b=(XCOL2(*pdest)>>1)+((((XCOL2(color))>>1)* g_m2)>>7); + g=(XCOL3(*pdest)>>1)+((((XCOL3(color))>>1)* g_m3)>>7); +*/ + } + else + if(GlobalTextABR==1) + { + r=(XCOL1(GETLE16(pdest)))+((((XCOL1(color)))* g_m1)>>7); + b=(XCOL2(GETLE16(pdest)))+((((XCOL2(color)))* g_m2)>>7); + g=(XCOL3(GETLE16(pdest)))+((((XCOL3(color)))* g_m3)>>7); + } + else + if(GlobalTextABR==2) + { + r=(XCOL1(GETLE16(pdest)))-((((XCOL1(color)))* g_m1)>>7); + b=(XCOL2(GETLE16(pdest)))-((((XCOL2(color)))* g_m2)>>7); + g=(XCOL3(GETLE16(pdest)))-((((XCOL3(color)))* g_m3)>>7); + if(r&0x80000000) r=0; + if(b&0x80000000) b=0; + if(g&0x80000000) g=0; + } + else + { +#ifdef HALFBRIGHTMODE3 + r=(XCOL1(GETLE16(pdest)))+((((XCOL1(color))>>2)* g_m1)>>7); + b=(XCOL2(GETLE16(pdest)))+((((XCOL2(color))>>2)* g_m2)>>7); + g=(XCOL3(GETLE16(pdest)))+((((XCOL3(color))>>2)* g_m3)>>7); +#else + r=(XCOL1(GETLE16(pdest)))+((((XCOL1(color))>>1)* g_m1)>>7); + b=(XCOL2(GETLE16(pdest)))+((((XCOL2(color))>>1)* g_m2)>>7); + g=(XCOL3(GETLE16(pdest)))+((((XCOL3(color))>>1)* g_m3)>>7); +#endif + } + } + else + { + r=((XCOL1(color))* g_m1)>>7; + b=((XCOL2(color))* g_m2)>>7; + g=((XCOL3(color))* g_m3)>>7; + } + + if(r&0x7FFFFFE0) r=0x1f; + if(b&0x7FFFFC00) b=0x3e0; + if(g&0x7FFF8000) g=0x7c00; + + PUTLE16(pdest, (XPSXCOL(r,g,b))|l); +} + +//////////////////////////////////////////////////////////////////////// + +__inline void GetTextureTransColG_S(unsigned short * pdest,unsigned short color) +{ + int32_t r,g,b;unsigned short l; + + if(color==0) return; + + l=sSetMask|(color&0x8000); + + r=((XCOL1(color))* g_m1)>>7; + b=((XCOL2(color))* g_m2)>>7; + g=((XCOL3(color))* g_m3)>>7; + + if(r&0x7FFFFFE0) r=0x1f; + if(b&0x7FFFFC00) b=0x3e0; + if(g&0x7FFF8000) g=0x7c00; + + PUTLE16(pdest, (XPSXCOL(r,g,b))|l); +} + +//////////////////////////////////////////////////////////////////////// + +__inline void GetTextureTransColG_SPR(unsigned short * pdest,unsigned short color) +{ + int32_t r,g,b;unsigned short l; + + if(color==0) return; + + if(bCheckMask && (GETLE16(pdest) & 0x8000)) return; + + l=sSetMask|(color&0x8000); + + if(DrawSemiTrans && (color&0x8000)) + { + if(GlobalTextABR==0) + { + unsigned short d; + d =(GETLE16(pdest)&0x7bde)>>1; + color =((color) &0x7bde)>>1; + r=(XCOL1(d))+((((XCOL1(color)))* g_m1)>>7); + b=(XCOL2(d))+((((XCOL2(color)))* g_m2)>>7); + g=(XCOL3(d))+((((XCOL3(color)))* g_m3)>>7); + +/* + r=(XCOL1(*pdest)>>1)+((((XCOL1(color))>>1)* g_m1)>>7); + b=(XCOL2(*pdest)>>1)+((((XCOL2(color))>>1)* g_m2)>>7); + g=(XCOL3(*pdest)>>1)+((((XCOL3(color))>>1)* g_m3)>>7); +*/ + } + else + if(GlobalTextABR==1) + { + r=(XCOL1(GETLE16(pdest)))+((((XCOL1(color)))* g_m1)>>7); + b=(XCOL2(GETLE16(pdest)))+((((XCOL2(color)))* g_m2)>>7); + g=(XCOL3(GETLE16(pdest)))+((((XCOL3(color)))* g_m3)>>7); + } + else + if(GlobalTextABR==2) + { + r=(XCOL1(GETLE16(pdest)))-((((XCOL1(color)))* g_m1)>>7); + b=(XCOL2(GETLE16(pdest)))-((((XCOL2(color)))* g_m2)>>7); + g=(XCOL3(GETLE16(pdest)))-((((XCOL3(color)))* g_m3)>>7); + if(r&0x80000000) r=0; + if(b&0x80000000) b=0; + if(g&0x80000000) g=0; + } + else + { +#ifdef HALFBRIGHTMODE3 + r=(XCOL1(GETLE16(pdest)))+((((XCOL1(color))>>2)* g_m1)>>7); + b=(XCOL2(GETLE16(pdest)))+((((XCOL2(color))>>2)* g_m2)>>7); + g=(XCOL3(GETLE16(pdest)))+((((XCOL3(color))>>2)* g_m3)>>7); +#else + r=(XCOL1(GETLE16(pdest)))+((((XCOL1(color))>>1)* g_m1)>>7); + b=(XCOL2(GETLE16(pdest)))+((((XCOL2(color))>>1)* g_m2)>>7); + g=(XCOL3(GETLE16(pdest)))+((((XCOL3(color))>>1)* g_m3)>>7); +#endif + } + } + else + { + r=((XCOL1(color))* g_m1)>>7; + b=((XCOL2(color))* g_m2)>>7; + g=((XCOL3(color))* g_m3)>>7; + } + + if(r&0x7FFFFFE0) r=0x1f; + if(b&0x7FFFFC00) b=0x3e0; + if(g&0x7FFF8000) g=0x7c00; + + PUTLE16(pdest, (XPSXCOL(r,g,b))|l); +} + +//////////////////////////////////////////////////////////////////////// + +__inline void GetTextureTransColG32(uint32_t * pdest,uint32_t color) +{ + int32_t r,g,b,l; + + if(color==0) return; + + l=lSetMask|(color&0x80008000); + + if(DrawSemiTrans && (color&0x80008000)) + { + if(GlobalTextABR==0) + { + r=((((X32TCOL1(GETLE32(pdest)))+((X32COL1(color)) * g_m1))&0xFF00FF00)>>8); + b=((((X32TCOL2(GETLE32(pdest)))+((X32COL2(color)) * g_m2))&0xFF00FF00)>>8); + g=((((X32TCOL3(GETLE32(pdest)))+((X32COL3(color)) * g_m3))&0xFF00FF00)>>8); + } + else + if(GlobalTextABR==1) + { + r=(X32COL1(GETLE32(pdest)))+(((((X32COL1(color)))* g_m1)&0xFF80FF80)>>7); + b=(X32COL2(GETLE32(pdest)))+(((((X32COL2(color)))* g_m2)&0xFF80FF80)>>7); + g=(X32COL3(GETLE32(pdest)))+(((((X32COL3(color)))* g_m3)&0xFF80FF80)>>7); + } + else + if(GlobalTextABR==2) + { + int32_t t; + r=(((((X32COL1(color)))* g_m1)&0xFF80FF80)>>7); + t=(GETLE32(pdest)&0x001f0000)-(r&0x003f0000); if(t&0x80000000) t=0; + r=(GETLE32(pdest)&0x0000001f)-(r&0x0000003f); if(r&0x80000000) r=0; + r|=t; + + b=(((((X32COL2(color)))* g_m2)&0xFF80FF80)>>7); + t=((GETLE32(pdest)>>5)&0x001f0000)-(b&0x003f0000); if(t&0x80000000) t=0; + b=((GETLE32(pdest)>>5)&0x0000001f)-(b&0x0000003f); if(b&0x80000000) b=0; + b|=t; + + g=(((((X32COL3(color)))* g_m3)&0xFF80FF80)>>7); + t=((GETLE32(pdest)>>10)&0x001f0000)-(g&0x003f0000); if(t&0x80000000) t=0; + g=((GETLE32(pdest)>>10)&0x0000001f)-(g&0x0000003f); if(g&0x80000000) g=0; + g|=t; + } + else + { +#ifdef HALFBRIGHTMODE3 + r=(X32COL1(GETLE32(pdest)))+(((((X32BCOL1(color))>>2)* g_m1)&0xFF80FF80)>>7); + b=(X32COL2(GETLE32(pdest)))+(((((X32BCOL2(color))>>2)* g_m2)&0xFF80FF80)>>7); + g=(X32COL3(GETLE32(pdest)))+(((((X32BCOL3(color))>>2)* g_m3)&0xFF80FF80)>>7); +#else + r=(X32COL1(GETLE32(pdest)))+(((((X32ACOL1(color))>>1)* g_m1)&0xFF80FF80)>>7); + b=(X32COL2(GETLE32(pdest)))+(((((X32ACOL2(color))>>1)* g_m2)&0xFF80FF80)>>7); + g=(X32COL3(GETLE32(pdest)))+(((((X32ACOL3(color))>>1)* g_m3)&0xFF80FF80)>>7); +#endif + } + + if(!(color&0x8000)) + { + r=(r&0xffff0000)|((((X32COL1(color))* g_m1)&0x0000FF80)>>7); + b=(b&0xffff0000)|((((X32COL2(color))* g_m2)&0x0000FF80)>>7); + g=(g&0xffff0000)|((((X32COL3(color))* g_m3)&0x0000FF80)>>7); + } + if(!(color&0x80000000)) + { + r=(r&0xffff)|((((X32COL1(color))* g_m1)&0xFF800000)>>7); + b=(b&0xffff)|((((X32COL2(color))* g_m2)&0xFF800000)>>7); + g=(g&0xffff)|((((X32COL3(color))* g_m3)&0xFF800000)>>7); + } + + } + else + { + r=(((X32COL1(color))* g_m1)&0xFF80FF80)>>7; + b=(((X32COL2(color))* g_m2)&0xFF80FF80)>>7; + g=(((X32COL3(color))* g_m3)&0xFF80FF80)>>7; + } + + if(r&0x7FE00000) r=0x1f0000|(r&0xFFFF); + if(r&0x7FE0) r=0x1f |(r&0xFFFF0000); + if(b&0x7FE00000) b=0x1f0000|(b&0xFFFF); + if(b&0x7FE0) b=0x1f |(b&0xFFFF0000); + if(g&0x7FE00000) g=0x1f0000|(g&0xFFFF); + if(g&0x7FE0) g=0x1f |(g&0xFFFF0000); + + if(bCheckMask) + { + uint32_t ma=GETLE32(pdest); + + PUTLE32(pdest, (X32PSXCOL(r,g,b))|l); + + if((color&0xffff)==0 ) PUTLE32(pdest, (ma&0xffff)|(GETLE32(pdest)&0xffff0000)); + if((color&0xffff0000)==0) PUTLE32(pdest, (ma&0xffff0000)|(GETLE32(pdest)&0xffff)); + if(ma&0x80000000) PUTLE32(pdest, (ma&0xFFFF0000)|(GETLE32(pdest)&0xFFFF)); + if(ma&0x00008000) PUTLE32(pdest, (ma&0xFFFF) |(GETLE32(pdest)&0xFFFF0000)); + + return; + } + if((color&0xffff)==0 ) {PUTLE32(pdest, (GETLE32(pdest)&0xffff)|(((X32PSXCOL(r,g,b))|l)&0xffff0000));return;} + if((color&0xffff0000)==0) {PUTLE32(pdest, (GETLE32(pdest)&0xffff0000)|(((X32PSXCOL(r,g,b))|l)&0xffff));return;} + + PUTLE32(pdest, (X32PSXCOL(r,g,b))|l); +} + +//////////////////////////////////////////////////////////////////////// + +__inline void GetTextureTransColG32_S(uint32_t * pdest,uint32_t color) +{ + int32_t r,g,b; + + if(color==0) return; + + r=(((X32COL1(color))* g_m1)&0xFF80FF80)>>7; + b=(((X32COL2(color))* g_m2)&0xFF80FF80)>>7; + g=(((X32COL3(color))* g_m3)&0xFF80FF80)>>7; + + if(r&0x7FE00000) r=0x1f0000|(r&0xFFFF); + if(r&0x7FE0) r=0x1f |(r&0xFFFF0000); + if(b&0x7FE00000) b=0x1f0000|(b&0xFFFF); + if(b&0x7FE0) b=0x1f |(b&0xFFFF0000); + if(g&0x7FE00000) g=0x1f0000|(g&0xFFFF); + if(g&0x7FE0) g=0x1f |(g&0xFFFF0000); + + if((color&0xffff)==0) {PUTLE32(pdest, (GETLE32(pdest)&0xffff)|(((X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000))&0xffff0000));return;} + if((color&0xffff0000)==0) {PUTLE32(pdest, (GETLE32(pdest)&0xffff0000)|(((X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000))&0xffff));return;} + + PUTLE32(pdest, (X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000)); +} + +//////////////////////////////////////////////////////////////////////// + +__inline void GetTextureTransColG32_SPR(uint32_t * pdest,uint32_t color) +{ + int32_t r,g,b; + + if(color==0) return; + + if(DrawSemiTrans && (color&0x80008000)) + { + if(GlobalTextABR==0) + { + r=((((X32TCOL1(GETLE32(pdest)))+((X32COL1(color)) * g_m1))&0xFF00FF00)>>8); + b=((((X32TCOL2(GETLE32(pdest)))+((X32COL2(color)) * g_m2))&0xFF00FF00)>>8); + g=((((X32TCOL3(GETLE32(pdest)))+((X32COL3(color)) * g_m3))&0xFF00FF00)>>8); + } + else + if(GlobalTextABR==1) + { + r=(X32COL1(GETLE32(pdest)))+(((((X32COL1(color)))* g_m1)&0xFF80FF80)>>7); + b=(X32COL2(GETLE32(pdest)))+(((((X32COL2(color)))* g_m2)&0xFF80FF80)>>7); + g=(X32COL3(GETLE32(pdest)))+(((((X32COL3(color)))* g_m3)&0xFF80FF80)>>7); + } + else + if(GlobalTextABR==2) + { + int32_t t; + r=(((((X32COL1(color)))* g_m1)&0xFF80FF80)>>7); + t=(GETLE32(pdest)&0x001f0000)-(r&0x003f0000); if(t&0x80000000) t=0; + r=(GETLE32(pdest)&0x0000001f)-(r&0x0000003f); if(r&0x80000000) r=0; + r|=t; + + b=(((((X32COL2(color)))* g_m2)&0xFF80FF80)>>7); + t=((GETLE32(pdest)>>5)&0x001f0000)-(b&0x003f0000); if(t&0x80000000) t=0; + b=((GETLE32(pdest)>>5)&0x0000001f)-(b&0x0000003f); if(b&0x80000000) b=0; + b|=t; + + g=(((((X32COL3(color)))* g_m3)&0xFF80FF80)>>7); + t=((GETLE32(pdest)>>10)&0x001f0000)-(g&0x003f0000); if(t&0x80000000) t=0; + g=((GETLE32(pdest)>>10)&0x0000001f)-(g&0x0000003f); if(g&0x80000000) g=0; + g|=t; + } + else + { +#ifdef HALFBRIGHTMODE3 + r=(X32COL1(GETLE32(pdest)))+(((((X32BCOL1(color))>>2)* g_m1)&0xFF80FF80)>>7); + b=(X32COL2(GETLE32(pdest)))+(((((X32BCOL2(color))>>2)* g_m2)&0xFF80FF80)>>7); + g=(X32COL3(GETLE32(pdest)))+(((((X32BCOL3(color))>>2)* g_m3)&0xFF80FF80)>>7); +#else + r=(X32COL1(GETLE32(pdest)))+(((((X32ACOL1(color))>>1)* g_m1)&0xFF80FF80)>>7); + b=(X32COL2(GETLE32(pdest)))+(((((X32ACOL2(color))>>1)* g_m2)&0xFF80FF80)>>7); + g=(X32COL3(GETLE32(pdest)))+(((((X32ACOL3(color))>>1)* g_m3)&0xFF80FF80)>>7); +#endif + } + + if(!(color&0x8000)) + { + r=(r&0xffff0000)|((((X32COL1(color))* g_m1)&0x0000FF80)>>7); + b=(b&0xffff0000)|((((X32COL2(color))* g_m2)&0x0000FF80)>>7); + g=(g&0xffff0000)|((((X32COL3(color))* g_m3)&0x0000FF80)>>7); + } + if(!(color&0x80000000)) + { + r=(r&0xffff)|((((X32COL1(color))* g_m1)&0xFF800000)>>7); + b=(b&0xffff)|((((X32COL2(color))* g_m2)&0xFF800000)>>7); + g=(g&0xffff)|((((X32COL3(color))* g_m3)&0xFF800000)>>7); + } + + } + else + { + r=(((X32COL1(color))* g_m1)&0xFF80FF80)>>7; + b=(((X32COL2(color))* g_m2)&0xFF80FF80)>>7; + g=(((X32COL3(color))* g_m3)&0xFF80FF80)>>7; + } + + if(r&0x7FE00000) r=0x1f0000|(r&0xFFFF); + if(r&0x7FE0) r=0x1f |(r&0xFFFF0000); + if(b&0x7FE00000) b=0x1f0000|(b&0xFFFF); + if(b&0x7FE0) b=0x1f |(b&0xFFFF0000); + if(g&0x7FE00000) g=0x1f0000|(g&0xFFFF); + if(g&0x7FE0) g=0x1f |(g&0xFFFF0000); + + if(bCheckMask) + { + uint32_t ma=GETLE32(pdest); + + PUTLE32(pdest, (X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000)); + + if((color&0xffff)==0 ) PUTLE32(pdest, (ma&0xffff)|(GETLE32(pdest)&0xffff0000)); + if((color&0xffff0000)==0) PUTLE32(pdest, (ma&0xffff0000)|(GETLE32(pdest)&0xffff)); + if(ma&0x80000000) PUTLE32(pdest, (ma&0xFFFF0000)|(GETLE32(pdest)&0xFFFF)); + if(ma&0x00008000) PUTLE32(pdest, (ma&0xFFFF) |(GETLE32(pdest)&0xFFFF0000)); + + return; + } + if((color&0xffff)==0 ) {PUTLE32(pdest, (GETLE32(pdest)&0xffff)|(((X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000))&0xffff0000));return;} + if((color&0xffff0000)==0) {PUTLE32(pdest, (GETLE32(pdest)&0xffff0000)|(((X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000))&0xffff));return;} + + PUTLE32(pdest, (X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000)); +} + +//////////////////////////////////////////////////////////////////////// + +__inline void GetTextureTransColGX_Dither(unsigned short * pdest,unsigned short color,int32_t m1,int32_t m2,int32_t m3) +{ + int32_t r,g,b; + + if(color==0) return; + + if(bCheckMask && (*pdest & HOST2LE16(0x8000))) return; + + m1=(((XCOL1D(color)))*m1)>>4; + m2=(((XCOL2D(color)))*m2)>>4; + m3=(((XCOL3D(color)))*m3)>>4; + + if(DrawSemiTrans && (color&0x8000)) + { + r=((XCOL1D(GETLE16(pdest)))<<3); + b=((XCOL2D(GETLE16(pdest)))<<3); + g=((XCOL3D(GETLE16(pdest)))<<3); + + if(GlobalTextABR==0) + { + r=(r>>1)+(m1>>1); + b=(b>>1)+(m2>>1); + g=(g>>1)+(m3>>1); + } + else + if(GlobalTextABR==1) + { + r+=m1; + b+=m2; + g+=m3; + } + else + if(GlobalTextABR==2) + { + r-=m1; + b-=m2; + g-=m3; + if(r&0x80000000) r=0; + if(b&0x80000000) b=0; + if(g&0x80000000) g=0; + } + else + { +#ifdef HALFBRIGHTMODE3 + r+=(m1>>2); + b+=(m2>>2); + g+=(m3>>2); +#else + r+=(m1>>1); + b+=(m2>>1); + g+=(m3>>1); +#endif + } + } + else + { + r=m1; + b=m2; + g=m3; + } + + if(r&0x7FFFFF00) r=0xff; + if(b&0x7FFFFF00) b=0xff; + if(g&0x7FFFFF00) g=0xff; + + Dither16(pdest,r,b,g,sSetMask|(color&0x8000)); + +} + +//////////////////////////////////////////////////////////////////////// + +__inline void GetTextureTransColGX(unsigned short * pdest,unsigned short color,short m1,short m2,short m3) +{ + int32_t r,g,b;unsigned short l; + + if(color==0) return; + + if(bCheckMask && (*pdest & HOST2LE16(0x8000))) return; + + l=sSetMask|(color&0x8000); + + if(DrawSemiTrans && (color&0x8000)) + { + if(GlobalTextABR==0) + { + unsigned short d; + d =(GETLE16(pdest)&0x7bde)>>1; + color =((color) &0x7bde)>>1; + r=(XCOL1(d))+((((XCOL1(color)))* m1)>>7); + b=(XCOL2(d))+((((XCOL2(color)))* m2)>>7); + g=(XCOL3(d))+((((XCOL3(color)))* m3)>>7); +/* + r=(XCOL1(*pdest)>>1)+((((XCOL1(color))>>1)* m1)>>7); + b=(XCOL2(*pdest)>>1)+((((XCOL2(color))>>1)* m2)>>7); + g=(XCOL3(*pdest)>>1)+((((XCOL3(color))>>1)* m3)>>7); +*/ + } + else + if(GlobalTextABR==1) + { + r=(XCOL1(GETLE16(pdest)))+((((XCOL1(color)))* m1)>>7); + b=(XCOL2(GETLE16(pdest)))+((((XCOL2(color)))* m2)>>7); + g=(XCOL3(GETLE16(pdest)))+((((XCOL3(color)))* m3)>>7); + } + else + if(GlobalTextABR==2) + { + r=(XCOL1(GETLE16(pdest)))-((((XCOL1(color)))* m1)>>7); + b=(XCOL2(GETLE16(pdest)))-((((XCOL2(color)))* m2)>>7); + g=(XCOL3(GETLE16(pdest)))-((((XCOL3(color)))* m3)>>7); + if(r&0x80000000) r=0; + if(b&0x80000000) b=0; + if(g&0x80000000) g=0; + } + else + { +#ifdef HALFBRIGHTMODE3 + r=(XCOL1(GETLE16(pdest)))+((((XCOL1(color))>>2)* m1)>>7); + b=(XCOL2(GETLE16(pdest)))+((((XCOL2(color))>>2)* m2)>>7); + g=(XCOL3(GETLE16(pdest)))+((((XCOL3(color))>>2)* m3)>>7); +#else + r=(XCOL1(GETLE16(pdest)))+((((XCOL1(color))>>1)* m1)>>7); + b=(XCOL2(GETLE16(pdest)))+((((XCOL2(color))>>1)* m2)>>7); + g=(XCOL3(GETLE16(pdest)))+((((XCOL3(color))>>1)* m3)>>7); +#endif + } + } + else + { + r=((XCOL1(color))* m1)>>7; + b=((XCOL2(color))* m2)>>7; + g=((XCOL3(color))* m3)>>7; + } + + if(r&0x7FFFFFE0) r=0x1f; + if(b&0x7FFFFC00) b=0x3e0; + if(g&0x7FFF8000) g=0x7c00; + + PUTLE16(pdest, (XPSXCOL(r,g,b))|l); +} + +//////////////////////////////////////////////////////////////////////// + +__inline void GetTextureTransColGX_S(unsigned short * pdest,unsigned short color,short m1,short m2,short m3) +{ + int32_t r,g,b; + + if(color==0) return; + + r=((XCOL1(color))* m1)>>7; + b=((XCOL2(color))* m2)>>7; + g=((XCOL3(color))* m3)>>7; + + if(r&0x7FFFFFE0) r=0x1f; + if(b&0x7FFFFC00) b=0x3e0; + if(g&0x7FFF8000) g=0x7c00; + + PUTLE16(pdest, (XPSXCOL(r,g,b))|sSetMask|(color&0x8000)); +} + +//////////////////////////////////////////////////////////////////////// + +__inline void GetTextureTransColGX32_S(uint32_t * pdest,uint32_t color,short m1,short m2,short m3) +{ + int32_t r,g,b; + + if(color==0) return; + + r=(((X32COL1(color))* m1)&0xFF80FF80)>>7; + b=(((X32COL2(color))* m2)&0xFF80FF80)>>7; + g=(((X32COL3(color))* m3)&0xFF80FF80)>>7; + + if(r&0x7FE00000) r=0x1f0000|(r&0xFFFF); + if(r&0x7FE0) r=0x1f |(r&0xFFFF0000); + if(b&0x7FE00000) b=0x1f0000|(b&0xFFFF); + if(b&0x7FE0) b=0x1f |(b&0xFFFF0000); + if(g&0x7FE00000) g=0x1f0000|(g&0xFFFF); + if(g&0x7FE0) g=0x1f |(g&0xFFFF0000); + + if((color&0xffff)==0) {PUTLE32(pdest, (GETLE32(pdest)&0xffff)|(((X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000))&0xffff0000));return;} + if((color&0xffff0000)==0) {PUTLE32(pdest, (GETLE32(pdest)&0xffff0000)|(((X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000))&0xffff));return;} + + PUTLE32(pdest, (X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000)); +} + +//////////////////////////////////////////////////////////////////////// +// FILL FUNCS +//////////////////////////////////////////////////////////////////////// + +void FillSoftwareAreaTrans(short x0,short y0,short x1, // FILL AREA TRANS + short y1,unsigned short col) +{ + short j,i,dx,dy; + + if(y0>y1) return; + if(x0>x1) return; + + if(x1drawW) return; + if(y0>drawH) return; + + x1=min(x1,drawW+1); + y1=min(y1,drawH+1); + x0=max(x0,drawX); + y0=max(y0,drawY); + + if(y0>=iGPUHeight) return; + if(x0>1023) return; + + if(y1>iGPUHeight) y1=iGPUHeight; + if(x1>1024) x1=1024; + + dx=x1-x0;dy=y1-y0; + + if(dx==1 && dy==1 && x0==1020 && y0==511) // special fix for pinball game... emu protection??? + { +/* +m->v 1020 511 1 1 +writedatamem 0x00000000 1 +tile1 newcol 7fff (orgcol 0xffffff), oldvram 0 +v->m 1020 511 1 1 +readdatamem 0x00007fff 1 +m->v 1020 511 1 1 +writedatamem 0x00000000 1 +tile1 newcol 8000 (orgcol 0xffffff), oldvram 0 +v->m 1020 511 1 1 +readdatamem 0x00008000 1 +*/ + + static int iCheat=0; + col+=iCheat; + if(iCheat==1) iCheat=0; else iCheat=1; + } + + + if(dx&1) // slow fill + { + unsigned short *DSTPtr; + unsigned short LineOffset; + DSTPtr = psxVuw + (1024*y0) + x0; + LineOffset = 1024 - dx; + for(i=0;i>=1; + DSTPtr = (uint32_t *)(psxVuw + (1024*y0) + x0); + LineOffset = 512 - dx; + + if(!bCheckMask && !DrawSemiTrans) + { + for(i=0;iy1) return; + if(x0>x1) return; + + if(y0>=iGPUHeight) return; + if(x0>1023) return; + + if(y1>iGPUHeight) y1=iGPUHeight; + if(x1>1024) x1=1024; + + dx=x1-x0;dy=y1-y0; + if(dx&1) + { + unsigned short *DSTPtr; + unsigned short LineOffset; + + DSTPtr = psxVuw + (1024*y0) + x0; + LineOffset = 1024 - dx; + + for(i=0;i>=1; + DSTPtr = (uint32_t *)(psxVuw + (1024*y0) + x0); + LineOffset = 512 - dx; + + for(i=0;iy - v1->y; + if(height == 0) return 0; + delta_right_x = (v2->x - v1->x) / height; + right_x = v1->x; + + right_section_height = height; + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline int LeftSection_F(void) +{ + soft_vertex * v1 = left_array[ left_section ]; + soft_vertex * v2 = left_array[ left_section-1 ]; + + int height = v2->y - v1->y; + if(height == 0) return 0; + delta_left_x = (v2->x - v1->x) / height; + left_x = v1->x; + + left_section_height = height; + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline BOOL NextRow_F(void) +{ + if(--left_section_height<=0) + { + if(--left_section <= 0) {return TRUE;} + if(LeftSection_F() <= 0) {return TRUE;} + } + else + { + left_x += delta_left_x; + } + + if(--right_section_height<=0) + { + if(--right_section<=0) {return TRUE;} + if(RightSection_F() <=0) {return TRUE;} + } + else + { + right_x += delta_right_x; + } + return FALSE; +} + +//////////////////////////////////////////////////////////////////////// + +__inline BOOL SetupSections_F(short x1, short y1, short x2, short y2, short x3, short y3) +{ + soft_vertex * v1, * v2, * v3; + int height,longest; + + v1 = vtx; v1->x=x1<<16;v1->y=y1; + v2 = vtx+1; v2->x=x2<<16;v2->y=y2; + v3 = vtx+2; v3->x=x3<<16;v3->y=y3; + + if(v1->y > v2->y) { soft_vertex * v = v1; v1 = v2; v2 = v; } + if(v1->y > v3->y) { soft_vertex * v = v1; v1 = v3; v3 = v; } + if(v2->y > v3->y) { soft_vertex * v = v2; v2 = v3; v3 = v; } + + height = v3->y - v1->y; + if(height == 0) {return FALSE;} + longest = (((v2->y - v1->y) << 16) / height) * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + if(longest == 0) {return FALSE;} + + if(longest < 0) + { + right_array[0] = v3; + right_array[1] = v2; + right_array[2] = v1; + right_section = 2; + left_array[0] = v3; + left_array[1] = v1; + left_section = 1; + + if(LeftSection_F() <= 0) return FALSE; + if(RightSection_F() <= 0) + { + right_section--; + if(RightSection_F() <= 0) return FALSE; + } + } + else + { + left_array[0] = v3; + left_array[1] = v2; + left_array[2] = v1; + left_section = 2; + right_array[0] = v3; + right_array[1] = v1; + right_section = 1; + + if(RightSection_F() <= 0) return FALSE; + if(LeftSection_F() <= 0) + { + left_section--; + if(LeftSection_F() <= 0) return FALSE; + } + } + + Ymin=v1->y; + Ymax=min(v3->y-1,drawH); + + return TRUE; +} + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + +__inline int RightSection_G(void) +{ + soft_vertex * v1 = right_array[ right_section ]; + soft_vertex * v2 = right_array[ right_section-1 ]; + + int height = v2->y - v1->y; + if(height == 0) return 0; + delta_right_x = (v2->x - v1->x) / height; + right_x = v1->x; + + right_section_height = height; + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline int LeftSection_G(void) +{ + soft_vertex * v1 = left_array[ left_section ]; + soft_vertex * v2 = left_array[ left_section-1 ]; + + int height = v2->y - v1->y; + if(height == 0) return 0; + delta_left_x = (v2->x - v1->x) / height; + left_x = v1->x; + + delta_left_R = ((v2->R - v1->R)) / height; + left_R = v1->R; + delta_left_G = ((v2->G - v1->G)) / height; + left_G = v1->G; + delta_left_B = ((v2->B - v1->B)) / height; + left_B = v1->B; + + left_section_height = height; + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline BOOL NextRow_G(void) +{ + if(--left_section_height<=0) + { + if(--left_section <= 0) {return TRUE;} + if(LeftSection_G() <= 0) {return TRUE;} + } + else + { + left_x += delta_left_x; + left_R += delta_left_R; + left_G += delta_left_G; + left_B += delta_left_B; + } + + if(--right_section_height<=0) + { + if(--right_section<=0) {return TRUE;} + if(RightSection_G() <=0) {return TRUE;} + } + else + { + right_x += delta_right_x; + } + return FALSE; +} + +//////////////////////////////////////////////////////////////////////// + +__inline BOOL SetupSections_G(short x1,short y1,short x2,short y2,short x3,short y3,int32_t rgb1, int32_t rgb2, int32_t rgb3) +{ + soft_vertex * v1, * v2, * v3; + int height,longest,temp; + + v1 = vtx; v1->x=x1<<16;v1->y=y1; + v1->R=(rgb1) & 0x00ff0000; + v1->G=(rgb1<<8) & 0x00ff0000; + v1->B=(rgb1<<16) & 0x00ff0000; + v2 = vtx+1; v2->x=x2<<16;v2->y=y2; + v2->R=(rgb2) & 0x00ff0000; + v2->G=(rgb2<<8) & 0x00ff0000; + v2->B=(rgb2<<16) & 0x00ff0000; + v3 = vtx+2; v3->x=x3<<16;v3->y=y3; + v3->R=(rgb3) & 0x00ff0000; + v3->G=(rgb3<<8) & 0x00ff0000; + v3->B=(rgb3<<16) & 0x00ff0000; + + if(v1->y > v2->y) { soft_vertex * v = v1; v1 = v2; v2 = v; } + if(v1->y > v3->y) { soft_vertex * v = v1; v1 = v3; v3 = v; } + if(v2->y > v3->y) { soft_vertex * v = v2; v2 = v3; v3 = v; } + + height = v3->y - v1->y; + if(height == 0) {return FALSE;} + temp=(((v2->y - v1->y) << 16) / height); + longest = temp * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + if(longest == 0) {return FALSE;} + + if(longest < 0) + { + right_array[0] = v3; + right_array[1] = v2; + right_array[2] = v1; + right_section = 2; + left_array[0] = v3; + left_array[1] = v1; + left_section = 1; + + if(LeftSection_G() <= 0) return FALSE; + if(RightSection_G() <= 0) + { + right_section--; + if(RightSection_G() <= 0) return FALSE; + } + if(longest > -0x1000) longest = -0x1000; + } + else + { + left_array[0] = v3; + left_array[1] = v2; + left_array[2] = v1; + left_section = 2; + right_array[0] = v3; + right_array[1] = v1; + right_section = 1; + + if(RightSection_G() <= 0) return FALSE; + if(LeftSection_G() <= 0) + { + left_section--; + if(LeftSection_G() <= 0) return FALSE; + } + if(longest < 0x1000) longest = 0x1000; + } + + Ymin=v1->y; + Ymax=min(v3->y-1,drawH); + + delta_right_R=shl10idiv(temp*((v3->R - v1->R)>>10)+((v1->R - v2->R)<<6),longest); + delta_right_G=shl10idiv(temp*((v3->G - v1->G)>>10)+((v1->G - v2->G)<<6),longest); + delta_right_B=shl10idiv(temp*((v3->B - v1->B)>>10)+((v1->B - v2->B)<<6),longest); + + return TRUE; +} + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + +__inline int RightSection_FT(void) +{ + soft_vertex * v1 = right_array[ right_section ]; + soft_vertex * v2 = right_array[ right_section-1 ]; + + int height = v2->y - v1->y; + if(height == 0) return 0; + delta_right_x = (v2->x - v1->x) / height; + right_x = v1->x; + + right_section_height = height; + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline int LeftSection_FT(void) +{ + soft_vertex * v1 = left_array[ left_section ]; + soft_vertex * v2 = left_array[ left_section-1 ]; + + int height = v2->y - v1->y; + if(height == 0) return 0; + delta_left_x = (v2->x - v1->x) / height; + left_x = v1->x; + + delta_left_u = ((v2->u - v1->u)) / height; + left_u = v1->u; + delta_left_v = ((v2->v - v1->v)) / height; + left_v = v1->v; + + left_section_height = height; + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline BOOL NextRow_FT(void) +{ + if(--left_section_height<=0) + { + if(--left_section <= 0) {return TRUE;} + if(LeftSection_FT() <= 0) {return TRUE;} + } + else + { + left_x += delta_left_x; + left_u += delta_left_u; + left_v += delta_left_v; + } + + if(--right_section_height<=0) + { + if(--right_section<=0) {return TRUE;} + if(RightSection_FT() <=0) {return TRUE;} + } + else + { + right_x += delta_right_x; + } + return FALSE; +} + +//////////////////////////////////////////////////////////////////////// + +__inline BOOL SetupSections_FT(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3) +{ + soft_vertex * v1, * v2, * v3; + int height,longest,temp; + + v1 = vtx; v1->x=x1<<16;v1->y=y1; + v1->u=tx1<<16;v1->v=ty1<<16; + v2 = vtx+1; v2->x=x2<<16;v2->y=y2; + v2->u=tx2<<16;v2->v=ty2<<16; + v3 = vtx+2; v3->x=x3<<16;v3->y=y3; + v3->u=tx3<<16;v3->v=ty3<<16; + + if(v1->y > v2->y) { soft_vertex * v = v1; v1 = v2; v2 = v; } + if(v1->y > v3->y) { soft_vertex * v = v1; v1 = v3; v3 = v; } + if(v2->y > v3->y) { soft_vertex * v = v2; v2 = v3; v3 = v; } + + height = v3->y - v1->y; + if(height == 0) {return FALSE;} + + temp=(((v2->y - v1->y) << 16) / height); + longest = temp * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + + if(longest == 0) {return FALSE;} + + if(longest < 0) + { + right_array[0] = v3; + right_array[1] = v2; + right_array[2] = v1; + right_section = 2; + left_array[0] = v3; + left_array[1] = v1; + left_section = 1; + + if(LeftSection_FT() <= 0) return FALSE; + if(RightSection_FT() <= 0) + { + right_section--; + if(RightSection_FT() <= 0) return FALSE; + } + if(longest > -0x1000) longest = -0x1000; + } + else + { + left_array[0] = v3; + left_array[1] = v2; + left_array[2] = v1; + left_section = 2; + right_array[0] = v3; + right_array[1] = v1; + right_section = 1; + + if(RightSection_FT() <= 0) return FALSE; + if(LeftSection_FT() <= 0) + { + left_section--; + if(LeftSection_FT() <= 0) return FALSE; + } + if(longest < 0x1000) longest = 0x1000; + } + + Ymin=v1->y; + Ymax=min(v3->y-1,drawH); + + delta_right_u=shl10idiv(temp*((v3->u - v1->u)>>10)+((v1->u - v2->u)<<6),longest); + delta_right_v=shl10idiv(temp*((v3->v - v1->v)>>10)+((v1->v - v2->v)<<6),longest); + +/* +Mmm... adjust neg tex deltas... will sometimes cause slight +texture distortions + + longest>>=16; + if(longest) + { + if(longest<0) longest=-longest; + if(delta_right_u<0) + delta_right_u-=delta_right_u/longest; + if(delta_right_v<0) + delta_right_v-=delta_right_v/longest; + } +*/ + + return TRUE; +} + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + +__inline int RightSection_GT(void) +{ + soft_vertex * v1 = right_array[ right_section ]; + soft_vertex * v2 = right_array[ right_section-1 ]; + + int height = v2->y - v1->y; + if(height == 0) return 0; + delta_right_x = (v2->x - v1->x) / height; + right_x = v1->x; + + right_section_height = height; + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline int LeftSection_GT(void) +{ + soft_vertex * v1 = left_array[ left_section ]; + soft_vertex * v2 = left_array[ left_section-1 ]; + + int height = v2->y - v1->y; + if(height == 0) return 0; + delta_left_x = (v2->x - v1->x) / height; + left_x = v1->x; + + delta_left_u = ((v2->u - v1->u)) / height; + left_u = v1->u; + delta_left_v = ((v2->v - v1->v)) / height; + left_v = v1->v; + + delta_left_R = ((v2->R - v1->R)) / height; + left_R = v1->R; + delta_left_G = ((v2->G - v1->G)) / height; + left_G = v1->G; + delta_left_B = ((v2->B - v1->B)) / height; + left_B = v1->B; + + left_section_height = height; + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline BOOL NextRow_GT(void) +{ + if(--left_section_height<=0) + { + if(--left_section <= 0) {return TRUE;} + if(LeftSection_GT() <= 0) {return TRUE;} + } + else + { + left_x += delta_left_x; + left_u += delta_left_u; + left_v += delta_left_v; + left_R += delta_left_R; + left_G += delta_left_G; + left_B += delta_left_B; + } + + if(--right_section_height<=0) + { + if(--right_section<=0) {return TRUE;} + if(RightSection_GT() <=0) {return TRUE;} + } + else + { + right_x += delta_right_x; + } + return FALSE; +} + +//////////////////////////////////////////////////////////////////////// + +__inline BOOL SetupSections_GT(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, int32_t rgb1, int32_t rgb2, int32_t rgb3) +{ + soft_vertex * v1, * v2, * v3; + int height,longest,temp; + + v1 = vtx; v1->x=x1<<16;v1->y=y1; + v1->u=tx1<<16;v1->v=ty1<<16; + v1->R=(rgb1) & 0x00ff0000; + v1->G=(rgb1<<8) & 0x00ff0000; + v1->B=(rgb1<<16) & 0x00ff0000; + + v2 = vtx+1; v2->x=x2<<16;v2->y=y2; + v2->u=tx2<<16;v2->v=ty2<<16; + v2->R=(rgb2) & 0x00ff0000; + v2->G=(rgb2<<8) & 0x00ff0000; + v2->B=(rgb2<<16) & 0x00ff0000; + + v3 = vtx+2; v3->x=x3<<16;v3->y=y3; + v3->u=tx3<<16;v3->v=ty3<<16; + v3->R=(rgb3) & 0x00ff0000; + v3->G=(rgb3<<8) & 0x00ff0000; + v3->B=(rgb3<<16) & 0x00ff0000; + + if(v1->y > v2->y) { soft_vertex * v = v1; v1 = v2; v2 = v; } + if(v1->y > v3->y) { soft_vertex * v = v1; v1 = v3; v3 = v; } + if(v2->y > v3->y) { soft_vertex * v = v2; v2 = v3; v3 = v; } + + height = v3->y - v1->y; + if(height == 0) {return FALSE;} + + temp=(((v2->y - v1->y) << 16) / height); + longest = temp * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + + if(longest == 0) {return FALSE;} + + if(longest < 0) + { + right_array[0] = v3; + right_array[1] = v2; + right_array[2] = v1; + right_section = 2; + left_array[0] = v3; + left_array[1] = v1; + left_section = 1; + + if(LeftSection_GT() <= 0) return FALSE; + if(RightSection_GT() <= 0) + { + right_section--; + if(RightSection_GT() <= 0) return FALSE; + } + + if(longest > -0x1000) longest = -0x1000; + } + else + { + left_array[0] = v3; + left_array[1] = v2; + left_array[2] = v1; + left_section = 2; + right_array[0] = v3; + right_array[1] = v1; + right_section = 1; + + if(RightSection_GT() <= 0) return FALSE; + if(LeftSection_GT() <= 0) + { + left_section--; + if(LeftSection_GT() <= 0) return FALSE; + } + if(longest < 0x1000) longest = 0x1000; + } + + Ymin=v1->y; + Ymax=min(v3->y-1,drawH); + + delta_right_R=shl10idiv(temp*((v3->R - v1->R)>>10)+((v1->R - v2->R)<<6),longest); + delta_right_G=shl10idiv(temp*((v3->G - v1->G)>>10)+((v1->G - v2->G)<<6),longest); + delta_right_B=shl10idiv(temp*((v3->B - v1->B)>>10)+((v1->B - v2->B)<<6),longest); + + delta_right_u=shl10idiv(temp*((v3->u - v1->u)>>10)+((v1->u - v2->u)<<6),longest); + delta_right_v=shl10idiv(temp*((v3->v - v1->v)>>10)+((v1->v - v2->v)<<6),longest); + + +/* +Mmm... adjust neg tex deltas... will sometimes cause slight +texture distortions + longest>>=16; + if(longest) + { + if(longest<0) longest=-longest; + if(delta_right_u<0) + delta_right_u-=delta_right_u/longest; + if(delta_right_v<0) + delta_right_v-=delta_right_v/longest; + } +*/ + + + return TRUE; +} + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + +__inline int RightSection_F4(void) +{ + soft_vertex * v1 = right_array[ right_section ]; + soft_vertex * v2 = right_array[ right_section-1 ]; + + int height = v2->y - v1->y; + right_section_height = height; + right_x = v1->x; + if(height == 0) + { + return 0; + } + delta_right_x = (v2->x - v1->x) / height; + + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline int LeftSection_F4(void) +{ + soft_vertex * v1 = left_array[ left_section ]; + soft_vertex * v2 = left_array[ left_section-1 ]; + + int height = v2->y - v1->y; + left_section_height = height; + left_x = v1->x; + if(height == 0) + { + return 0; + } + delta_left_x = (v2->x - v1->x) / height; + + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline BOOL NextRow_F4(void) +{ + if(--left_section_height<=0) + { + if(--left_section > 0) + while(LeftSection_F4()<=0) + { + if(--left_section <= 0) break; + } + } + else + { + left_x += delta_left_x; + } + + if(--right_section_height<=0) + { + if(--right_section > 0) + while(RightSection_F4()<=0) + { + if(--right_section<=0) break; + } + } + else + { + right_x += delta_right_x; + } + return FALSE; +} + +//////////////////////////////////////////////////////////////////////// + +__inline BOOL SetupSections_F4(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4) +{ + soft_vertex * v1, * v2, * v3, * v4; + int height,width,longest1,longest2; + + v1 = vtx; v1->x=x1<<16;v1->y=y1; + v2 = vtx+1; v2->x=x2<<16;v2->y=y2; + v3 = vtx+2; v3->x=x3<<16;v3->y=y3; + v4 = vtx+3; v4->x=x4<<16;v4->y=y4; + + if(v1->y > v2->y) { soft_vertex * v = v1; v1 = v2; v2 = v; } + if(v1->y > v3->y) { soft_vertex * v = v1; v1 = v3; v3 = v; } + if(v1->y > v4->y) { soft_vertex * v = v1; v1 = v4; v4 = v; } + if(v2->y > v3->y) { soft_vertex * v = v2; v2 = v3; v3 = v; } + if(v2->y > v4->y) { soft_vertex * v = v2; v2 = v4; v4 = v; } + if(v3->y > v4->y) { soft_vertex * v = v3; v3 = v4; v4 = v; } + + height = v4->y - v1->y; if(height == 0) height =1; + width = (v4->x - v1->x)>>16; + longest1 = (((v2->y - v1->y) << 16) / height) * width + (v1->x - v2->x); + longest2 = (((v3->y - v1->y) << 16) / height) * width + (v1->x - v3->x); + + if(longest1 < 0) // 2 is right + { + if(longest2 < 0) // 3 is right + { + left_array[0] = v4; + left_array[1] = v1; + left_section = 1; + + height = v3->y - v1->y; if(height == 0) height=1; + longest1 = (((v2->y - v1->y) << 16) / height) * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + if(longest1 >= 0) + { + right_array[0] = v4; // 1 + right_array[1] = v3; // 3 + right_array[2] = v1; // 4 + right_section = 2; + } + else + { + height = v4->y - v2->y; if(height == 0) height=1; + longest1 = (((v3->y - v2->y) << 16) / height) * ((v4->x - v2->x)>>16) + (v2->x - v3->x); + if(longest1 >= 0) + { + right_array[0] = v4; // 1 + right_array[1] = v2; // 2 + right_array[2] = v1; // 4 + right_section = 2; + } + else + { + right_array[0] = v4; // 1 + right_array[1] = v3; // 2 + right_array[2] = v2; // 3 + right_array[3] = v1; // 4 + right_section = 3; + } + } + } + else + { + left_array[0] = v4; + left_array[1] = v3; // 1 + left_array[2] = v1; // 2 + left_section = 2; // 3 + right_array[0] = v4; // 4 + right_array[1] = v2; + right_array[2] = v1; + right_section = 2; + } + } + else + { + if(longest2 < 0) + { + left_array[0] = v4; // 1 + left_array[1] = v2; // 2 + left_array[2] = v1; // 3 + left_section = 2; // 4 + right_array[0] = v4; + right_array[1] = v3; + right_array[2] = v1; + right_section = 2; + } + else + { + right_array[0] = v4; + right_array[1] = v1; + right_section = 1; + + height = v3->y - v1->y; if(height == 0) height=1; + longest1 = (((v2->y - v1->y) << 16) / height) * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + if(longest1<0) + { + left_array[0] = v4; // 1 + left_array[1] = v3; // 3 + left_array[2] = v1; // 4 + left_section = 2; + } + else + { + height = v4->y - v2->y; if(height == 0) height=1; + longest1 = (((v3->y - v2->y) << 16) / height) * ((v4->x - v2->x)>>16) + (v2->x - v3->x); + if(longest1<0) + { + left_array[0] = v4; // 1 + left_array[1] = v2; // 2 + left_array[2] = v1; // 4 + left_section = 2; + } + else + { + left_array[0] = v4; // 1 + left_array[1] = v3; // 2 + left_array[2] = v2; // 3 + left_array[3] = v1; // 4 + left_section = 3; + } + } + } + } + + while(LeftSection_F4()<=0) + { + if(--left_section <= 0) break; + } + + while(RightSection_F4()<=0) + { + if(--right_section <= 0) break; + } + + Ymin=v1->y; + Ymax=min(v4->y-1,drawH); + + return TRUE; +} + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + +__inline int RightSection_FT4(void) +{ + soft_vertex * v1 = right_array[ right_section ]; + soft_vertex * v2 = right_array[ right_section-1 ]; + + int height = v2->y - v1->y; + right_section_height = height; + right_x = v1->x; + right_u = v1->u; + right_v = v1->v; + if(height == 0) + { + return 0; + } + delta_right_x = (v2->x - v1->x) / height; + delta_right_u = (v2->u - v1->u) / height; + delta_right_v = (v2->v - v1->v) / height; + + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline int LeftSection_FT4(void) +{ + soft_vertex * v1 = left_array[ left_section ]; + soft_vertex * v2 = left_array[ left_section-1 ]; + + int height = v2->y - v1->y; + left_section_height = height; + left_x = v1->x; + left_u = v1->u; + left_v = v1->v; + if(height == 0) + { + return 0; + } + delta_left_x = (v2->x - v1->x) / height; + delta_left_u = (v2->u - v1->u) / height; + delta_left_v = (v2->v - v1->v) / height; + + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline BOOL NextRow_FT4(void) +{ + if(--left_section_height<=0) + { + if(--left_section > 0) + while(LeftSection_FT4()<=0) + { + if(--left_section <= 0) break; + } + } + else + { + left_x += delta_left_x; + left_u += delta_left_u; + left_v += delta_left_v; + } + + if(--right_section_height<=0) + { + if(--right_section > 0) + while(RightSection_FT4()<=0) + { + if(--right_section<=0) break; + } + } + else + { + right_x += delta_right_x; + right_u += delta_right_u; + right_v += delta_right_v; + } + return FALSE; +} + +//////////////////////////////////////////////////////////////////////// + +__inline BOOL SetupSections_FT4(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4) +{ + soft_vertex * v1, * v2, * v3, * v4; + int height,width,longest1,longest2; + + v1 = vtx; v1->x=x1<<16;v1->y=y1; + v1->u=tx1<<16;v1->v=ty1<<16; + + v2 = vtx+1; v2->x=x2<<16;v2->y=y2; + v2->u=tx2<<16;v2->v=ty2<<16; + + v3 = vtx+2; v3->x=x3<<16;v3->y=y3; + v3->u=tx3<<16;v3->v=ty3<<16; + + v4 = vtx+3; v4->x=x4<<16;v4->y=y4; + v4->u=tx4<<16;v4->v=ty4<<16; + + if(v1->y > v2->y) { soft_vertex * v = v1; v1 = v2; v2 = v; } + if(v1->y > v3->y) { soft_vertex * v = v1; v1 = v3; v3 = v; } + if(v1->y > v4->y) { soft_vertex * v = v1; v1 = v4; v4 = v; } + if(v2->y > v3->y) { soft_vertex * v = v2; v2 = v3; v3 = v; } + if(v2->y > v4->y) { soft_vertex * v = v2; v2 = v4; v4 = v; } + if(v3->y > v4->y) { soft_vertex * v = v3; v3 = v4; v4 = v; } + + height = v4->y - v1->y; if(height == 0) height =1; + width = (v4->x - v1->x)>>16; + longest1 = (((v2->y - v1->y) << 16) / height) * width + (v1->x - v2->x); + longest2 = (((v3->y - v1->y) << 16) / height) * width + (v1->x - v3->x); + + if(longest1 < 0) // 2 is right + { + if(longest2 < 0) // 3 is right + { + left_array[0] = v4; + left_array[1] = v1; + left_section = 1; + + height = v3->y - v1->y; if(height == 0) height=1; + longest1 = (((v2->y - v1->y) << 16) / height) * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + if(longest1 >= 0) + { + right_array[0] = v4; // 1 + right_array[1] = v3; // 3 + right_array[2] = v1; // 4 + right_section = 2; + } + else + { + height = v4->y - v2->y; if(height == 0) height=1; + longest1 = (((v3->y - v2->y) << 16) / height) * ((v4->x - v2->x)>>16) + (v2->x - v3->x); + if(longest1 >= 0) + { + right_array[0] = v4; // 1 + right_array[1] = v2; // 2 + right_array[2] = v1; // 4 + right_section = 2; + } + else + { + right_array[0] = v4; // 1 + right_array[1] = v3; // 2 + right_array[2] = v2; // 3 + right_array[3] = v1; // 4 + right_section = 3; + } + } + } + else + { + left_array[0] = v4; + left_array[1] = v3; // 1 + left_array[2] = v1; // 2 + left_section = 2; // 3 + right_array[0] = v4; // 4 + right_array[1] = v2; + right_array[2] = v1; + right_section = 2; + } + } + else + { + if(longest2 < 0) + { + left_array[0] = v4; // 1 + left_array[1] = v2; // 2 + left_array[2] = v1; // 3 + left_section = 2; // 4 + right_array[0] = v4; + right_array[1] = v3; + right_array[2] = v1; + right_section = 2; + } + else + { + right_array[0] = v4; + right_array[1] = v1; + right_section = 1; + + height = v3->y - v1->y; if(height == 0) height=1; + longest1 = (((v2->y - v1->y) << 16) / height) * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + if(longest1<0) + { + left_array[0] = v4; // 1 + left_array[1] = v3; // 3 + left_array[2] = v1; // 4 + left_section = 2; + } + else + { + height = v4->y - v2->y; if(height == 0) height=1; + longest1 = (((v3->y - v2->y) << 16) / height) * ((v4->x - v2->x)>>16) + (v2->x - v3->x); + if(longest1<0) + { + left_array[0] = v4; // 1 + left_array[1] = v2; // 2 + left_array[2] = v1; // 4 + left_section = 2; + } + else + { + left_array[0] = v4; // 1 + left_array[1] = v3; // 2 + left_array[2] = v2; // 3 + left_array[3] = v1; // 4 + left_section = 3; + } + } + } + } + + while(LeftSection_FT4()<=0) + { + if(--left_section <= 0) break; + } + + while(RightSection_FT4()<=0) + { + if(--right_section <= 0) break; + } + + Ymin=v1->y; + Ymax=min(v4->y-1,drawH); + + return TRUE; +} + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + +__inline int RightSection_GT4(void) +{ + soft_vertex * v1 = right_array[ right_section ]; + soft_vertex * v2 = right_array[ right_section-1 ]; + + int height = v2->y - v1->y; + right_section_height = height; + right_x = v1->x; + right_u = v1->u; + right_v = v1->v; + right_R = v1->R; + right_G = v1->G; + right_B = v1->B; + + if(height == 0) + { + return 0; + } + delta_right_x = (v2->x - v1->x) / height; + delta_right_u = (v2->u - v1->u) / height; + delta_right_v = (v2->v - v1->v) / height; + delta_right_R = (v2->R - v1->R) / height; + delta_right_G = (v2->G - v1->G) / height; + delta_right_B = (v2->B - v1->B) / height; + + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline int LeftSection_GT4(void) +{ + soft_vertex * v1 = left_array[ left_section ]; + soft_vertex * v2 = left_array[ left_section-1 ]; + + int height = v2->y - v1->y; + left_section_height = height; + left_x = v1->x; + left_u = v1->u; + left_v = v1->v; + left_R = v1->R; + left_G = v1->G; + left_B = v1->B; + + if(height == 0) + { + return 0; + } + delta_left_x = (v2->x - v1->x) / height; + delta_left_u = (v2->u - v1->u) / height; + delta_left_v = (v2->v - v1->v) / height; + delta_left_R = (v2->R - v1->R) / height; + delta_left_G = (v2->G - v1->G) / height; + delta_left_B = (v2->B - v1->B) / height; + + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline BOOL NextRow_GT4(void) +{ + if(--left_section_height<=0) + { + if(--left_section > 0) + while(LeftSection_GT4()<=0) + { + if(--left_section <= 0) break; + } + } + else + { + left_x += delta_left_x; + left_u += delta_left_u; + left_v += delta_left_v; + left_R += delta_left_R; + left_G += delta_left_G; + left_B += delta_left_B; + } + + if(--right_section_height<=0) + { + if(--right_section > 0) + while(RightSection_GT4()<=0) + { + if(--right_section<=0) break; + } + } + else + { + right_x += delta_right_x; + right_u += delta_right_u; + right_v += delta_right_v; + right_R += delta_right_R; + right_G += delta_right_G; + right_B += delta_right_B; + } + return FALSE; +} + +//////////////////////////////////////////////////////////////////////// + +__inline BOOL SetupSections_GT4(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,int32_t rgb1,int32_t rgb2,int32_t rgb3,int32_t rgb4) +{ + soft_vertex * v1, * v2, * v3, * v4; + int height,width,longest1,longest2; + + v1 = vtx; v1->x=x1<<16;v1->y=y1; + v1->u=tx1<<16;v1->v=ty1<<16; + v1->R=(rgb1) & 0x00ff0000; + v1->G=(rgb1<<8) & 0x00ff0000; + v1->B=(rgb1<<16) & 0x00ff0000; + + v2 = vtx+1; v2->x=x2<<16;v2->y=y2; + v2->u=tx2<<16;v2->v=ty2<<16; + v2->R=(rgb2) & 0x00ff0000; + v2->G=(rgb2<<8) & 0x00ff0000; + v2->B=(rgb2<<16) & 0x00ff0000; + + v3 = vtx+2; v3->x=x3<<16;v3->y=y3; + v3->u=tx3<<16;v3->v=ty3<<16; + v3->R=(rgb3) & 0x00ff0000; + v3->G=(rgb3<<8) & 0x00ff0000; + v3->B=(rgb3<<16) & 0x00ff0000; + + v4 = vtx+3; v4->x=x4<<16;v4->y=y4; + v4->u=tx4<<16;v4->v=ty4<<16; + v4->R=(rgb4) & 0x00ff0000; + v4->G=(rgb4<<8) & 0x00ff0000; + v4->B=(rgb4<<16) & 0x00ff0000; + + if(v1->y > v2->y) { soft_vertex * v = v1; v1 = v2; v2 = v; } + if(v1->y > v3->y) { soft_vertex * v = v1; v1 = v3; v3 = v; } + if(v1->y > v4->y) { soft_vertex * v = v1; v1 = v4; v4 = v; } + if(v2->y > v3->y) { soft_vertex * v = v2; v2 = v3; v3 = v; } + if(v2->y > v4->y) { soft_vertex * v = v2; v2 = v4; v4 = v; } + if(v3->y > v4->y) { soft_vertex * v = v3; v3 = v4; v4 = v; } + + height = v4->y - v1->y; if(height == 0) height =1; + width = (v4->x - v1->x)>>16; + longest1 = (((v2->y - v1->y) << 16) / height) * width + (v1->x - v2->x); + longest2 = (((v3->y - v1->y) << 16) / height) * width + (v1->x - v3->x); + + if(longest1 < 0) // 2 is right + { + if(longest2 < 0) // 3 is right + { + left_array[0] = v4; + left_array[1] = v1; + left_section = 1; + + height = v3->y - v1->y; if(height == 0) height=1; + longest1 = (((v2->y - v1->y) << 16) / height) * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + if(longest1 >= 0) + { + right_array[0] = v4; // 1 + right_array[1] = v3; // 3 + right_array[2] = v1; // 4 + right_section = 2; + } + else + { + height = v4->y - v2->y; if(height == 0) height=1; + longest1 = (((v3->y - v2->y) << 16) / height) * ((v4->x - v2->x)>>16) + (v2->x - v3->x); + if(longest1 >= 0) + { + right_array[0] = v4; // 1 + right_array[1] = v2; // 2 + right_array[2] = v1; // 4 + right_section = 2; + } + else + { + right_array[0] = v4; // 1 + right_array[1] = v3; // 2 + right_array[2] = v2; // 3 + right_array[3] = v1; // 4 + right_section = 3; + } + } + } + else + { + left_array[0] = v4; + left_array[1] = v3; // 1 + left_array[2] = v1; // 2 + left_section = 2; // 3 + right_array[0] = v4; // 4 + right_array[1] = v2; + right_array[2] = v1; + right_section = 2; + } + } + else + { + if(longest2 < 0) + { + left_array[0] = v4; // 1 + left_array[1] = v2; // 2 + left_array[2] = v1; // 3 + left_section = 2; // 4 + right_array[0] = v4; + right_array[1] = v3; + right_array[2] = v1; + right_section = 2; + } + else + { + right_array[0] = v4; + right_array[1] = v1; + right_section = 1; + + height = v3->y - v1->y; if(height == 0) height=1; + longest1 = (((v2->y - v1->y) << 16) / height) * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + if(longest1<0) + { + left_array[0] = v4; // 1 + left_array[1] = v3; // 3 + left_array[2] = v1; // 4 + left_section = 2; + } + else + { + height = v4->y - v2->y; if(height == 0) height=1; + longest1 = (((v3->y - v2->y) << 16) / height) * ((v4->x - v2->x)>>16) + (v2->x - v3->x); + if(longest1<0) + { + left_array[0] = v4; // 1 + left_array[1] = v2; // 2 + left_array[2] = v1; // 4 + left_section = 2; + } + else + { + left_array[0] = v4; // 1 + left_array[1] = v3; // 2 + left_array[2] = v2; // 3 + left_array[3] = v1; // 4 + left_section = 3; + } + } + } + } + + while(LeftSection_GT4()<=0) + { + if(--left_section <= 0) break; + } + + while(RightSection_GT4()<=0) + { + if(--right_section <= 0) break; + } + + Ymin=v1->y; + Ymax=min(v4->y-1,drawH); + + return TRUE; +} + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +// POLY FUNCS +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////// +// POLY 3/4 FLAT SHADED +//////////////////////////////////////////////////////////////////////// + +__inline void drawPoly3Fi(short x1,short y1,short x2,short y2,short x3,short y3,int32_t rgb) +{ + int i,j,xmin,xmax,ymin,ymax; + unsigned short color;uint32_t lcolor; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_F(x1,y1,x2,y2,x3,y3)) return; + + ymax=Ymax; + + color = ((rgb & 0x00f80000)>>9) | ((rgb & 0x0000f800)>>6) | ((rgb & 0x000000f8)>>3); + lcolor=lSetMask|(((uint32_t)(color))<<16)|color; + + for(ymin=Ymin;ymin> 16; if(drawX>xmin) xmin=drawX; + xmax=(right_x >> 16)-1; if(drawW> 16; if(drawX>xmin) xmin=drawX; + xmax=(right_x >> 16)-1; if(drawWdrawW && lx1>drawW && lx2>drawW && lx3>drawW) return; + if(ly0>drawH && ly1>drawH && ly2>drawH && ly3>drawH) return; + if(lx0=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_F4(lx0,ly0,lx1,ly1,lx2,ly2,lx3,ly3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin>9) | ((rgb & 0x0000f800)>>6) | ((rgb & 0x000000f8)>>3); + lcolor= lSetMask|(((uint32_t)(color))<<16)|color; + +#ifdef FASTSOLID + + if(!bCheckMask && !DrawSemiTrans) + { + color |=sSetMask; + for (i=ymin;i<=ymax;i++) + { + xmin=left_x >> 16; if(drawX>xmin) xmin=drawX; + xmax=(right_x >> 16)-1; if(drawW> 16; if(drawX>xmin) xmin=drawX; + xmax=(right_x >> 16)-1; if(drawWdrawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16); + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; + + GetTextureTransColG32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16); + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; + + GetTextureTransColG32((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TEx4_IL(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3,short clX, short clY) +{ + int i,j,xmin,xmax,ymin,ymax,n_xi,n_yi,TXV; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,XAdjust; + int32_t clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16); + + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + XAdjust=((posX+difX)>>16); + + TXV=(posY+difY)>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + GetTextureTransColG32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16); + + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + XAdjust=((posX+difX)>>16); + + TXV=(posY+difY)>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + GetTextureTransColG32((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TEx4_TW(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3,short clX, short clY) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,XAdjust; + int32_t clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin>1); + + difX=delta_right_u;difX2=difX<<1; + difY=delta_right_v;difY2=difY<<1; + +#ifdef FASTSOLID + + if(!bCheckMask && !DrawSemiTrans) + { + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16);//-1; //!!!!!!!!!!!!!!!! + if(xmax>xmin) xmax--; + + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16)%TWin.Position.x1; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; + + GetTextureTransColG32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16)%TWin.Position.x1; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; + + GetTextureTransColG32((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +#ifdef POLYQUAD3 + +void drawPoly4TEx4_TRI(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + drawPoly3TEx4(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + clX,clY); + drawPoly3TEx4(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + clX,clY); +} + +#endif + +// more exact: + +void drawPoly4TEx4(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY,YAdjust,clutP,XAdjust; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16); + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; + + GetTextureTransColG32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16); + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; + + GetTextureTransColG32((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TEx4_IL(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + int32_t num; + int32_t i,j=0,xmin,xmax,ymin,ymax,n_xi,n_yi,TXV; + int32_t difX, difY, difX2, difY2; + int32_t posX=0,posY=0,YAdjust,clutP,XAdjust; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16); + + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + XAdjust=((posX+difX)>>16); + + TXV=(posY+difY)>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + GetTextureTransColG32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + posX+=difX2; + posY+=difY2; + } + + if(j==xmax) + { + XAdjust=(posX>>16); + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + + } + if(NextRow_FT4()) return; + } +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16); + + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + XAdjust=((posX+difX)>>16); + + TXV=(posY+difY)>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + GetTextureTransColG32((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TEx4_TW(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY,YAdjust,clutP,XAdjust; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin>1); + +#ifdef FASTSOLID + + if(!bCheckMask && !DrawSemiTrans) + { + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16)%TWin.Position.x1; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; + + GetTextureTransColG32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16)%TWin.Position.x1; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; + + GetTextureTransColG32((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TEx4_TW_S(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY,YAdjust,clutP,XAdjust; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin>1); + +#ifdef FASTSOLID + + if(!bCheckMask && !DrawSemiTrans) + { + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16)%TWin.Position.x1; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; + + GetTextureTransColG32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16)%TWin.Position.x1; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; + + GetTextureTransColG32_SPR((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG_SPR(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } +} +//////////////////////////////////////////////////////////////////////// +// POLY 3 F-SHADED TEX PAL 8 +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TEx8(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3,short clX, short clY) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + ((posX+difX)>>16)]; + GetTextureTransColG32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + + if(j==xmax) + { + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + ((posX+difX)>>16)]; + GetTextureTransColG32((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + + if(j==xmax) + { + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + + } + if(NextRow_FT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TEx8_IL(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3,short clX, short clY) +{ + int i,j,xmin,xmax,ymin,ymax,n_xi,n_yi,TXV,TXU; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + TXU=(posX+difX)>>16; + TXV=(posY+difY)>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + GetTextureTransColG32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + + if(j==xmax) + { + TXU=posX>>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + TXU=(posX+difX)>>16; + TXV=(posY+difY)>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + GetTextureTransColG32((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + + if(j==xmax) + { + TXU=posX>>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + + } + if(NextRow_FT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TEx8_TW(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3,short clX, short clY) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16);//-1; //!!!!!!!!!!!!!!!! + if(xmax>xmin) xmax--; + + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(((posX+difX)>>16)%TWin.Position.x1)]; + GetTextureTransColG32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + + if(j==xmax) + { + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(((posX+difX)>>16)%TWin.Position.x1)]; + GetTextureTransColG32((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + + if(j==xmax) + { + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + + } + if(NextRow_FT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +#ifdef POLYQUAD3 + +void drawPoly4TEx8_TRI(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + drawPoly3TEx8(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + clX,clY); + + drawPoly3TEx8(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + clX,clY); +} + +#endif + +// more exact: + +void drawPoly4TEx8(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + ((posX+difX)>>16)]; + GetTextureTransColG32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + ((posX+difX)>>16)]; + GetTextureTransColG32((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TEx8_IL(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax,n_xi,n_yi,TXV,TXU; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + TXU=(posX+difX)>>16; + TXV=(posY+difY)>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + GetTextureTransColG32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + TXU=posX>>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + TXU=(posX+difX)>>16; + TXV=(posY+difY)>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + GetTextureTransColG32((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + TXU=posX>>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TEx8_TW(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(((posX+difX)>>16)%TWin.Position.x1)]; + GetTextureTransColG32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + tC1 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(((posX+difX)>>16)%TWin.Position.x1)]; + GetTextureTransColG32((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + tC1 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TEx8_TW_S(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(((posX+difX)>>16)%TWin.Position.x1)]; + GetTextureTransColG32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + tC1 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(((posX+difX)>>16)%TWin.Position.x1)]; + GetTextureTransColG32_SPR((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + tC1 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + GetTextureTransColG_SPR(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// +// POLY 3 F-SHADED TEX 15 BIT +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TD(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16)+GlobalTextAddrY)<<10)+((posX+difX)>>16)+GlobalTextAddrX]))<<16)| + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+((posX)>>16)+GlobalTextAddrX])); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX])); + } + if(NextRow_FT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16)+GlobalTextAddrY)<<10)+((posX+difX)>>16)+GlobalTextAddrX]))<<16)| + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+((posX)>>16)+GlobalTextAddrX])); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX])); + } + if(NextRow_FT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TD_TW(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX+difX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))<<16)| + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0])); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0])); + } + if(NextRow_FT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX+difX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))<<16)| + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0])); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0])); + } + if(NextRow_FT()) + { + return; + } + } +} + + +//////////////////////////////////////////////////////////////////////// + +#ifdef POLYQUAD3 + +void drawPoly4TD_TRI(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4) +{ + drawPoly3TD(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4); + drawPoly3TD(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4); +} + +#endif + +// more exact: + +void drawPoly4TD(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)+GlobalTextAddrY)<<10)+((posX+difX)>>16)+GlobalTextAddrX]))<<16)| + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+((posX)>>16)+GlobalTextAddrX])); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX])); + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)+GlobalTextAddrY)<<10)+((posX+difX)>>16)+GlobalTextAddrX]))<<16)| + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+((posX)>>16)+GlobalTextAddrX])); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX])); + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TD_TW(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX+difX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))<<16)| + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY)<<10)+TWin.Position.y0+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0])); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0])); + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX+difX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))<<16)| + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0])); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0])); + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TD_TW_S(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX+difX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))<<16)| + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY)<<10)+TWin.Position.y0+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0])); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0])); + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX+difX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))<<16)| + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0])); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG_SPR(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0])); + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// +// POLY 3/4 G-SHADED +//////////////////////////////////////////////////////////////////////// + +__inline void drawPoly3Gi(short x1,short y1,short x2,short y2,short x3,short y3,int32_t rgb1, int32_t rgb2, int32_t rgb3) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_G(x1,y1,x2,y2,x3,y3,rgb1,rgb2,rgb3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1;if(drawW=xmin) + { + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>3)&0x001f0000)| + (((cR1) >> 9)&0x7c00)|(((cG1) >> 14)&0x03e0)|(((cB1) >> 19)&0x001f))|lSetMask); + + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + PUTLE16(&psxVuw[(i<<10)+j], (((cR1 >> 9)&0x7c00)|((cG1 >> 14)&0x03e0)|((cB1 >> 19)&0x001f))|sSetMask); + } + if(NextRow_G()) return; + } + return; + } + +#endif + + if(iDither==2) + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1;if(drawW=xmin) + { + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16),(cG1>>16),(cR1>>16)); + + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_G()) return; + } + else + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1;if(drawW=xmin) + { + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin> 9)&0x7c00)|((cG1 >> 14)&0x03e0)|((cB1 >> 19)&0x001f)); + + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_G()) return; + } + +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3G(int32_t rgb1, int32_t rgb2, int32_t rgb3) +{ + drawPoly3Gi(lx0,ly0,lx1,ly1,lx2,ly2,rgb1,rgb2,rgb3); +} + +// draw two g-shaded tris for right psx shading emulation + +void drawPoly4G(int32_t rgb1, int32_t rgb2, int32_t rgb3, int32_t rgb4) +{ + drawPoly3Gi(lx1,ly1,lx3,ly3,lx2,ly2, + rgb2,rgb4,rgb3); + drawPoly3Gi(lx0,ly0,lx1,ly1,lx2,ly2, + rgb1,rgb2,rgb3); +} + +//////////////////////////////////////////////////////////////////////// +// POLY 3/4 G-SHADED TEX PAL4 +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TGEx4(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short clX, short clY,int32_t col1, int32_t col2, int32_t col3) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,clutP,XAdjust; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3,col1,col2,col3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=((right_x) >> 16)-1; //!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16); + tC1 = psxVub[((posY>>5)&0xFFFFF800)+YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16); + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; + + GetTextureTransColGX32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16, + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000)); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + } + if(NextRow_GT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + if(iDither) + GetTextureTransColGX_Dither(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TGEx4_IL(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short clX, short clY,int32_t col1, int32_t col2, int32_t col3) +{ + int i,j,xmin,xmax,ymin,ymax,n_xi,n_yi,TXV; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,clutP,XAdjust; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3,col1,col2,col3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=((right_x) >> 16)-1; //!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16); + + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + XAdjust=((posX+difX)>>16); + + TXV=(posY+difY)>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + GetTextureTransColGX32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16, + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000)); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + } + if(NextRow_GT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16); + + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + if(iDither) + GetTextureTransColGX_Dither(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TGEx4_TW(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short clX, short clY,int32_t col1, int32_t col2, int32_t col3) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,clutP,XAdjust; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3,col1,col2,col3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin>1); + + difR=delta_right_R; + difG=delta_right_G; + difB=delta_right_B; + difR2=difR<<1; + difG2=difG<<1; + difB2=difB<<1; + + difX=delta_right_u;difX2=difX<<1; + difY=delta_right_v;difY2=difY<<1; + +#ifdef FASTSOLID + + if(!bCheckMask && !DrawSemiTrans && !iDither) + { + for (i=ymin;i<=ymax;i++) + { + xmin=((left_x) >> 16); + xmax=((right_x) >> 16)-1; //!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16)%TWin.Position.x1; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; + GetTextureTransColGX32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16, + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000)); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + { + XAdjust=(posX>>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + } + if(NextRow_GT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + if(iDither) + GetTextureTransColGX_Dither(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +// note: the psx is doing g-shaded quads as two g-shaded tris, +// like the following func... sadly texturing is not 100% +// correct that way, so small texture distortions can +// happen... + +void drawPoly4TGEx4_TRI_IL(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, + short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, + short clX, short clY, + int32_t col1, int32_t col2, int32_t col3, int32_t col4) +{ + drawPoly3TGEx4_IL(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + clX,clY, + col2,col4,col3); + drawPoly3TGEx4_IL(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + clX,clY, + col1,col2,col3); +} + +#ifdef POLYQUAD3GT + +void drawPoly4TGEx4_TRI(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, + short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, + short clX, short clY, + int32_t col1, int32_t col2, int32_t col3, int32_t col4) +{ + drawPoly3TGEx4(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + clX,clY, + col2,col4,col3); + drawPoly3TGEx4(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + clX,clY, + col1,col2,col3); +} + +#endif + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TGEx4(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, + short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, + short clX, short clY, + int32_t col1, int32_t col2, int32_t col4, int32_t col3) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY,YAdjust,clutP,XAdjust; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4,col1,col2,col3,col4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + cR1=left_R; + cG1=left_G; + cB1=left_B; + difR=(right_R-cR1)/num; + difG=(right_G-cG1)/num; + difB=(right_B-cB1)/num; + difR2=difR<<1; + difG2=difG<<1; + difB2=difB<<1; + + if(xmin>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16); + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; + + GetTextureTransColGX32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16, + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000)); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + } + if(NextRow_GT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + cR1=left_R; + cG1=left_G; + cB1=left_B; + difR=(right_R-cR1)/num; + difG=(right_G-cG1)/num; + difB=(right_B-cB1)/num; + difR2=difR<<1; + difG2=difG<<1; + difB2=difB<<1; + + if(xmin>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + if(iDither) + GetTextureTransColGX_Dither(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TGEx4_TW(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, + short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, + short clX, short clY, + int32_t col1, int32_t col2, int32_t col3, int32_t col4) +{ + drawPoly3TGEx4_TW(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + clX,clY, + col2,col4,col3); + + drawPoly3TGEx4_TW(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + clX,clY, + col1,col2,col3); +} + +//////////////////////////////////////////////////////////////////////// +// POLY 3/4 G-SHADED TEX PAL8 +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TGEx8(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short clX, short clY,int32_t col1, int32_t col2, int32_t col3) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3,col1,col2,col3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; // !!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>5)&(int32_t)0xFFFFF800)+YAdjust+((posX>>16))]; + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (((posX+difX)>>16))]; + GetTextureTransColGX32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16, + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000)); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + { + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+((posX>>16))]; + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + } + if(NextRow_GT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>5)&(int32_t)0xFFFFF800)+YAdjust+((posX>>16))]; + if(iDither) + GetTextureTransColGX_Dither(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TGEx8_IL(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short clX, short clY,int32_t col1, int32_t col2, int32_t col3) +{ + int i,j,xmin,xmax,ymin,ymax,n_xi,n_yi,TXV,TXU; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3,col1,col2,col3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; // !!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + TXU=(posX+difX)>>16; + TXV=(posY+difY)>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + GetTextureTransColGX32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16, + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000)); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + { + TXU=posX>>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + } + if(NextRow_GT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + if(iDither) + GetTextureTransColGX_Dither(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TGEx8_TW(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short clX, short clY,int32_t col1, int32_t col2, int32_t col3) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3,col1,col2,col3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; // !!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(((posX+difX)>>16)%TWin.Position.x1)]; + + GetTextureTransColGX32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16, + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000)); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + { + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + } + if(NextRow_GT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + if(iDither) + GetTextureTransColGX_Dither(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +// note: two g-shaded tris: small texture distortions can happen + +void drawPoly4TGEx8_TRI_IL(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, + short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, + short clX, short clY, + int32_t col1, int32_t col2, int32_t col3, int32_t col4) +{ + drawPoly3TGEx8_IL(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + clX,clY, + col2,col4,col3); + drawPoly3TGEx8_IL(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + clX,clY, + col1,col2,col3); +} + +#ifdef POLYQUAD3GT + +void drawPoly4TGEx8_TRI(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, + short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, + short clX, short clY, + int32_t col1, int32_t col2, int32_t col3, int32_t col4) +{ + drawPoly3TGEx8(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + clX,clY, + col2,col4,col3); + drawPoly3TGEx8(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + clX,clY, + col1,col2,col3); +} + +#endif + +void drawPoly4TGEx8(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, + short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, + short clX, short clY, + int32_t col1, int32_t col2, int32_t col4, int32_t col3) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4,col1,col2,col3,col4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + cR1=left_R; + cG1=left_G; + cB1=left_B; + difR=(right_R-cR1)/num; + difG=(right_G-cG1)/num; + difB=(right_B-cB1)/num; + difR2=difR<<1; + difG2=difG<<1; + difB2=difB<<1; + + if(xmin>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + ((posX+difX)>>16)]; + + GetTextureTransColGX32_S((uint32_t *)&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16, + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000)); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + { + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + } + if(NextRow_GT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + cR1=left_R; + cG1=left_G; + cB1=left_B; + difR=(right_R-cR1)/num; + difG=(right_G-cG1)/num; + difB=(right_B-cB1)/num; + difR2=difR<<1; + difG2=difG<<1; + difB2=difB<<1; + + if(xmin>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + if(iDither) + GetTextureTransColGX_Dither(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TGEx8_TW(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, + short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, + short clX, short clY, + int32_t col1, int32_t col2, int32_t col3, int32_t col4) +{ + drawPoly3TGEx8_TW(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + clX,clY, + col2,col4,col3); + drawPoly3TGEx8_TW(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + clX,clY, + col1,col2,col3); +} + +//////////////////////////////////////////////////////////////////////// +// POLY 3 G-SHADED TEX 15 BIT +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TGD(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3,int32_t col1, int32_t col2, int32_t col3) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3,col1,col2,col3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16)+GlobalTextAddrY)<<10)+((posX+difX)>>16)+GlobalTextAddrX]))<<16)| + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+((posX)>>16)+GlobalTextAddrX]), + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000)); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + if(NextRow_GT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TGD_TW(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3,int32_t col1, int32_t col2, int32_t col3) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3,col1,col2,col3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX+difX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))<<16)| + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]), + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000)); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + if(NextRow_GT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +// note: two g-shaded tris: small texture distortions can happen + +#ifdef POLYQUAD3GT + +void drawPoly4TGD_TRI(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, int32_t col1, int32_t col2, int32_t col3, int32_t col4) +{ + drawPoly3TGD(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + col2,col4,col3); + drawPoly3TGD(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + col1,col2,col3); +} + +#endif + +void drawPoly4TGD(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, int32_t col1, int32_t col2, int32_t col4, int32_t col3) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4,col1,col2,col3,col4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + cR1=left_R; + cG1=left_G; + cB1=left_B; + difR=(right_R-cR1)/num; + difG=(right_G-cG1)/num; + difB=(right_B-cB1)/num; + difR2=difR<<1; + difG2=difG<<1; + difB2=difB<<1; + + if(xmin>16)+GlobalTextAddrY)<<10)+((posX+difX)>>16)+GlobalTextAddrX]))<<16)| + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+((posX)>>16)+GlobalTextAddrX]), + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000)); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + if(NextRow_GT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + cR1=left_R; + cG1=left_G; + cB1=left_B; + difR=(right_R-cR1)/num; + difG=(right_G-cG1)/num; + difB=(right_B-cB1)/num; + difR2=difR<<1; + difG2=difG<<1; + difB2=difB<<1; + + if(xmin>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TGD_TW(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, int32_t col1, int32_t col2, int32_t col3, int32_t col4) +{ + drawPoly3TGD_TW(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + col2,col4,col3); + drawPoly3TGD_TW(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + col1,col2,col3); +} + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + + +/* +// no real rect test, but it does its job the way I need it +__inline BOOL IsNoRect(void) +{ + if(lx0==lx1 && lx2==lx3) return FALSE; + if(lx0==lx2 && lx1==lx3) return FALSE; + if(lx0==lx3 && lx1==lx2) return FALSE; + return TRUE; +} +*/ + +// real rect test +__inline BOOL IsNoRect(void) +{ + if(!(dwActFixes&0x200)) return FALSE; + + if(ly0==ly1) + { + if(lx1==lx3 && ly3==ly2 && lx2==lx0) return FALSE; + if(lx1==lx2 && ly2==ly3 && lx3==lx0) return FALSE; + return TRUE; + } + + if(ly0==ly2) + { + if(lx2==lx3 && ly3==ly1 && lx1==lx0) return FALSE; + if(lx2==lx1 && ly1==ly3 && lx3==lx0) return FALSE; + return TRUE; + } + + if(ly0==ly3) + { + if(lx3==lx2 && ly2==ly1 && lx1==lx0) return FALSE; + if(lx3==lx1 && ly1==ly2 && lx2==lx0) return FALSE; + return TRUE; + } + return TRUE; +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3FT(unsigned char * baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + + if(GlobalTextIL && GlobalTextTP<2) + { + if(GlobalTextTP==0) + drawPoly3TEx4_IL(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + else + drawPoly3TEx8_IL(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + } + + if(!bUsingTWin && !(dwActFixes&0x100)) + { + switch(GlobalTextTP) // depending on texture mode + { + case 0: + drawPoly3TEx4(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 1: + drawPoly3TEx8(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 2: + drawPoly3TD(lx0,ly0,lx1,ly1,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff)); + return; + } + return; + } + + switch(GlobalTextTP) // depending on texture mode + { + case 0: + drawPoly3TEx4_TW(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 1: + drawPoly3TEx8_TW(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 2: + drawPoly3TD_TW(lx0,ly0,lx1,ly1,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff)); + return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4FT(unsigned char * baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + + if(GlobalTextIL && GlobalTextTP<2) + { + if(GlobalTextTP==0) + drawPoly4TEx4_IL(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + else + drawPoly4TEx8_IL(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + } + + if(!bUsingTWin) + { +#ifdef POLYQUAD3GT + if(IsNoRect()) + { + switch (GlobalTextTP) + { + case 0: + drawPoly4TEx4_TRI(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 1: + drawPoly4TEx8_TRI(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 2: + drawPoly4TD_TRI(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff)); + return; + } + return; + } +#endif + + switch (GlobalTextTP) + { + case 0: // grandia investigations needed + drawPoly4TEx4(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 1: + drawPoly4TEx8(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 2: + drawPoly4TD(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff)); + return; + } + return; + } + + switch (GlobalTextTP) + { + case 0: + drawPoly4TEx4_TW(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 1: + drawPoly4TEx8_TW(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 2: + drawPoly4TD_TW(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff)); + return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3GT(unsigned char * baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + + if(GlobalTextIL && GlobalTextTP<2) + { + if(GlobalTextTP==0) + drawPoly3TGEx4_IL(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6])); + else + drawPoly3TGEx8_IL(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6])); + return; + } + + if(!bUsingTWin) + { + switch (GlobalTextTP) + { + case 0: + drawPoly3TGEx4(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6])); + return; + case 1: + drawPoly3TGEx8(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6])); + return; + case 2: + drawPoly3TGD(lx0,ly0,lx1,ly1,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6])); + return; + } + return; + } + + switch(GlobalTextTP) + { + case 0: + drawPoly3TGEx4_TW(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6])); + return; + case 1: + drawPoly3TGEx8_TW(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6])); + return; + case 2: + drawPoly3TGD_TW(lx0,ly0,lx1,ly1,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6])); + return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4GT(unsigned char *baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + + if(GlobalTextIL && GlobalTextTP<2) + { + if(GlobalTextTP==0) + drawPoly4TGEx4_TRI_IL(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0),((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + else + drawPoly4TGEx8_TRI_IL(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0),((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + return; + } + + if(!bUsingTWin) + { +#ifdef POLYQUAD3GT + if(IsNoRect()) + { + switch (GlobalTextTP) + { + case 0: + drawPoly4TGEx4_TRI(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0),((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + + return; + case 1: + drawPoly4TGEx8_TRI(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0),((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + return; + case 2: + drawPoly4TGD_TRI(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff),((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + return; + } + return; + } +#endif + + switch (GlobalTextTP) + { + case 0: + drawPoly4TGEx4(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0),((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + + return; + case 1: + drawPoly4TGEx8(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0),((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + return; + case 2: + drawPoly4TGD(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff),((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + return; + } + return; + } + + switch (GlobalTextTP) + { + case 0: + drawPoly4TGEx4_TW(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0),((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + return; + case 1: + drawPoly4TGEx8_TW(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0),((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + return; + case 2: + drawPoly4TGD_TW(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff),((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + return; + } +} + +//////////////////////////////////////////////////////////////////////// +// SPRITE FUNCS +//////////////////////////////////////////////////////////////////////// + +void DrawSoftwareSpriteTWin(unsigned char * baseAddr,int32_t w,int32_t h) +{ + uint32_t *gpuData = (uint32_t *)baseAddr; + short sx0,sy0,sx1,sy1,sx2,sy2,sx3,sy3; + short tx0,ty0,tx1,ty1,tx2,ty2,tx3,ty3; + + sx0=lx0; + sy0=ly0; + + sx0=sx3=sx0+PSXDisplay.DrawOffset.x; + sx1=sx2=sx0+w; + sy0=sy1=sy0+PSXDisplay.DrawOffset.y; + sy2=sy3=sy0+h; + + tx0=tx3=GETLE32(&gpuData[2])&0xff; + tx1=tx2=tx0+w; + ty0=ty1=(GETLE32(&gpuData[2])>>8)&0xff; + ty2=ty3=ty0+h; + + switch (GlobalTextTP) + { + case 0: + drawPoly4TEx4_TW_S(sx0,sy0,sx1,sy1,sx2,sy2,sx3,sy3, + tx0,ty0,tx1,ty1,tx2,ty2,tx3,ty3, + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 1: + drawPoly4TEx8_TW_S(sx0,sy0,sx1,sy1,sx2,sy2,sx3,sy3, + tx0,ty0,tx1,ty1,tx2,ty2,tx3,ty3, + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 2: + drawPoly4TD_TW_S(sx0,sy0,sx1,sy1,sx2,sy2,sx3,sy3, + tx0,ty0,tx1,ty1,tx2,ty2,tx3,ty3); + return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void DrawSoftwareSpriteMirror(unsigned char * baseAddr,int32_t w,int32_t h) +{ + int32_t sprtY,sprtX,sprtW,sprtH,lXDir,lYDir; + int32_t clutY0,clutX0,clutP,textX0,textY0,sprtYa,sprCY,sprCX,sprA; + short tC; + uint32_t *gpuData = (uint32_t *)baseAddr; + sprtY = ly0; + sprtX = lx0; + sprtH = h; + sprtW = w; + clutY0 = (GETLE32(&gpuData[2])>>22) & iGPUHeightMask; + clutX0 = (GETLE32(&gpuData[2])>>12) & 0x3f0; + clutP = (clutY0<<11) + (clutX0<<1); + textY0 = ((GETLE32(&gpuData[2])>>8) & 0x000000ff) + GlobalTextAddrY; + textX0 = (GETLE32(&gpuData[2]) & 0x000000ff); + + sprtX+=PSXDisplay.DrawOffset.x; + sprtY+=PSXDisplay.DrawOffset.y; + +// while (sprtX>1023) sprtX-=1024; +// while (sprtY>MAXYLINESMIN1) sprtY-=MAXYLINES; + + if(sprtX>drawW) + { +// if((sprtX+sprtW)>1023) sprtX-=1024; +// else return; + return; + } + + if(sprtY>drawH) + { +// if ((sprtY+sprtH)>MAXYLINESMIN1) sprtY-=MAXYLINES; +// else return; + return; + } + + if(sprtYdrawH) sprtH=drawH-sprtY+1; + if((sprtX+sprtW)>drawW) sprtW=drawW-sprtX+1; + + if(usMirror&0x1000) lXDir=-1; else lXDir=1; + if(usMirror&0x2000) lYDir=-1; else lYDir=1; + + switch (GlobalTextTP) + { + case 0: // texture is 4-bit + + sprtW=sprtW/2; + textX0=(GlobalTextAddrX<<1)+(textX0>>1); + sprtYa=(sprtY<<10); + clutP=(clutY0<<10)+clutX0; + for (sprCY=0;sprCY>4)&0xf)])); + GetTextureTransColG_SPR(&psxVuw[sprA+1],GETLE16(&psxVuw[clutP+(tC&0xf)])); + } + return; + + case 1: + + clutP>>=1; + for(sprCY=0;sprCYdrawW) return; + if(sprtY>drawH) return; + + tdx=tx+sprtW; + tdy=ty+sprtH; + + sprtW+=sprtX; + sprtH+=sprtY; + + // Pete is too lazy to make a faster version ;) + + if(GlobalTextTP==0) + drawPoly4TEx4_IL(sprtX,sprtY,sprtX,sprtH,sprtW,sprtH,sprtW,sprtY, + tx,ty, tx,tdy, tdx,tdy, tdx,ty, + (GETLE32(&gpuData[2])>>12) & 0x3f0, ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + + + else + drawPoly4TEx8_IL(sprtX,sprtY,sprtX,sprtH,sprtW,sprtH,sprtW,sprtY, + tx,ty, tx,tdy, tdx,tdy, tdx,ty, + (GETLE32(&gpuData[2])>>12) & 0x3f0, ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); +} + +//////////////////////////////////////////////////////////////////////// + +void DrawSoftwareSprite(unsigned char * baseAddr,short w,short h,int32_t tx,int32_t ty) +{ + int32_t sprtY,sprtX,sprtW,sprtH; + int32_t clutY0,clutX0,clutP,textX0,textY0,sprtYa,sprCY,sprCX,sprA; + short tC,tC2; + uint32_t *gpuData = (uint32_t *)baseAddr; + unsigned char * pV; + BOOL bWT,bWS; + + if(GlobalTextIL && GlobalTextTP<2) + {DrawSoftwareSprite_IL(baseAddr,w,h,tx,ty);return;} + + sprtY = ly0; + sprtX = lx0; + sprtH = h; + sprtW = w; + clutY0 = (GETLE32(&gpuData[2])>>22) & iGPUHeightMask; + clutX0 = (GETLE32(&gpuData[2])>>12) & 0x3f0; + + clutP = (clutY0<<11) + (clutX0<<1); + + textY0 =ty+ GlobalTextAddrY; + textX0 =tx; + + sprtX+=PSXDisplay.DrawOffset.x; + sprtY+=PSXDisplay.DrawOffset.y; + + //while (sprtX>1023) sprtX-=1024; + //while (sprtY>MAXYLINESMIN1) sprtY-=MAXYLINES; + + if(sprtX>drawW) + { +// if((sprtX+sprtW)>1023) sprtX-=1024; +// else return; + return; + } + + if(sprtY>drawH) + { +// if ((sprtY+sprtH)>MAXYLINESMIN1) sprtY-=MAXYLINES; +// else return; + return; + } + + if(sprtYdrawH) sprtH=drawH-sprtY+1; + if((sprtX+sprtW)>drawW) sprtW=drawW-sprtX+1; + + + bWT=FALSE; + bWS=FALSE; + + switch (GlobalTextTP) + { + case 0: + + if(textX0&1) {bWS=TRUE;sprtW--;} + if(sprtW&1) bWT=TRUE; + + sprtW=sprtW>>1; + textX0=(GlobalTextAddrX<<1)+(textX0>>1)+(textY0<<11); + sprtYa=(sprtY<<10)+sprtX; + clutP=(clutY0<<10)+clutX0; + +#ifdef FASTSOLID + + if(!bCheckMask && !DrawSemiTrans) + { + for (sprCY=0;sprCY>4)&0xf)])); + } + + for (sprCX=0;sprCX>4)&0xf)]))<<16)| + GETLE16(&psxVuw[clutP+(tC&0x0f)])); + } + + if(bWT) + { + tC=*pV; + GetTextureTransColG_S(&psxVuw[sprA],GETLE16(&psxVuw[clutP+(tC&0x0f)])); + } + } + return; + } + +#endif + + for (sprCY=0;sprCY>4)&0xf)])); + } + + for (sprCX=0;sprCX>4)&0xf)])<<16))| + GETLE16(&psxVuw[clutP+(tC&0x0f)])); + } + + if(bWT) + { + tC=*pV; + GetTextureTransColG_SPR(&psxVuw[sprA],GETLE16(&psxVuw[clutP+(tC&0x0f)])); + } + } + return; + + case 1: + clutP>>=1;sprtW--; + textX0+=(GlobalTextAddrX<<1) + (textY0<<11); + +#ifdef FASTSOLID + + if(!bCheckMask && !DrawSemiTrans) + { + for(sprCY=0;sprCY 0) + { + dr = ((int32_t)r1 - (int32_t)r0) / dx; + dg = ((int32_t)g1 - (int32_t)g0) / dx; + db = ((int32_t)b1 - (int32_t)b0) / dx; + } + else + { + dr = ((int32_t)r1 - (int32_t)r0); + dg = ((int32_t)g1 - (int32_t)g0); + db = ((int32_t)b1 - (int32_t)b0); + } + + d = 2*dy - dx; /* Initial value of d */ + incrE = 2*dy; /* incr. used for move to E */ + incrSE = 2*(dy - dx); /* incr. used for move to SE */ + + if ((x0>=drawX)&&(x0=drawY)&&(y0> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + while(x0 < x1) + { + if (d <= 0) + { + d = d + incrE; /* Choose E */ + } + else + { + d = d + incrSE; /* Choose SE */ + y0++; + } + x0++; + + r0+=dr; + g0+=dg; + b0+=db; + + if ((x0>=drawX)&&(x0=drawY)&&(y0> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + } +} + +/////////////////////////////////////////////////////////////////////// + +void Line_S_SE_Shade(int x0, int y0, int x1, int y1, uint32_t rgb0, uint32_t rgb1) +{ + int dx, dy, incrS, incrSE, d; + uint32_t r0, g0, b0, r1, g1, b1; + int32_t dr, dg, db; + + r0 = (rgb0 & 0x00ff0000); + g0 = (rgb0 & 0x0000ff00) << 8; + b0 = (rgb0 & 0x000000ff) << 16; + r1 = (rgb1 & 0x00ff0000); + g1 = (rgb1 & 0x0000ff00) << 8; + b1 = (rgb1 & 0x000000ff) << 16; + + dx = x1 - x0; + dy = y1 - y0; + + if (dy > 0) + { + dr = ((int32_t)r1 - (int32_t)r0) / dy; + dg = ((int32_t)g1 - (int32_t)g0) / dy; + db = ((int32_t)b1 - (int32_t)b0) / dy; + } + else + { + dr = ((int32_t)r1 - (int32_t)r0); + dg = ((int32_t)g1 - (int32_t)g0); + db = ((int32_t)b1 - (int32_t)b0); + } + + d = 2*dx - dy; /* Initial value of d */ + incrS = 2*dx; /* incr. used for move to S */ + incrSE = 2*(dx - dy); /* incr. used for move to SE */ + + if ((x0>=drawX)&&(x0=drawY)&&(y0> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + while(y0 < y1) + { + if (d <= 0) + { + d = d + incrS; /* Choose S */ + } + else + { + d = d + incrSE; /* Choose SE */ + x0++; + } + y0++; + + r0+=dr; + g0+=dg; + b0+=db; + + if ((x0>=drawX)&&(x0=drawY)&&(y0> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + } +} + +/////////////////////////////////////////////////////////////////////// + +void Line_N_NE_Shade(int x0, int y0, int x1, int y1, uint32_t rgb0, uint32_t rgb1) +{ + int dx, dy, incrN, incrNE, d; + uint32_t r0, g0, b0, r1, g1, b1; + int32_t dr, dg, db; + + r0 = (rgb0 & 0x00ff0000); + g0 = (rgb0 & 0x0000ff00) << 8; + b0 = (rgb0 & 0x000000ff) << 16; + r1 = (rgb1 & 0x00ff0000); + g1 = (rgb1 & 0x0000ff00) << 8; + b1 = (rgb1 & 0x000000ff) << 16; + + dx = x1 - x0; + dy = -(y1 - y0); + + if (dy > 0) + { + dr = ((int32_t)r1 - (int32_t)r0) / dy; + dg = ((int32_t)g1 - (int32_t)g0) / dy; + db = ((int32_t)b1 - (int32_t)b0) / dy; + } + else + { + dr = ((int32_t)r1 - (int32_t)r0); + dg = ((int32_t)g1 - (int32_t)g0); + db = ((int32_t)b1 - (int32_t)b0); + } + + d = 2*dx - dy; /* Initial value of d */ + incrN = 2*dx; /* incr. used for move to N */ + incrNE = 2*(dx - dy); /* incr. used for move to NE */ + + if ((x0>=drawX)&&(x0=drawY)&&(y0> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + while(y0 > y1) + { + if (d <= 0) + { + d = d + incrN; /* Choose N */ + } + else + { + d = d + incrNE; /* Choose NE */ + x0++; + } + y0--; + + r0+=dr; + g0+=dg; + b0+=db; + + if ((x0>=drawX)&&(x0=drawY)&&(y0> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + } +} + +/////////////////////////////////////////////////////////////////////// + +void Line_E_NE_Shade(int x0, int y0, int x1, int y1, uint32_t rgb0, uint32_t rgb1) +{ + int dx, dy, incrE, incrNE, d; + uint32_t r0, g0, b0, r1, g1, b1; + int32_t dr, dg, db; + + r0 = (rgb0 & 0x00ff0000); + g0 = (rgb0 & 0x0000ff00) << 8; + b0 = (rgb0 & 0x000000ff) << 16; + r1 = (rgb1 & 0x00ff0000); + g1 = (rgb1 & 0x0000ff00) << 8; + b1 = (rgb1 & 0x000000ff) << 16; + + dx = x1 - x0; + dy = -(y1 - y0); + + if (dx > 0) + { + dr = ((int32_t)r1 - (int32_t)r0) / dx; + dg = ((int32_t)g1 - (int32_t)g0) / dx; + db = ((int32_t)b1 - (int32_t)b0) / dx; + } + else + { + dr = ((int32_t)r1 - (int32_t)r0); + dg = ((int32_t)g1 - (int32_t)g0); + db = ((int32_t)b1 - (int32_t)b0); + } + + d = 2*dy - dx; /* Initial value of d */ + incrE = 2*dy; /* incr. used for move to E */ + incrNE = 2*(dy - dx); /* incr. used for move to NE */ + + if ((x0>=drawX)&&(x0=drawY)&&(y0> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + while(x0 < x1) + { + if (d <= 0) + { + d = d + incrE; /* Choose E */ + } + else + { + d = d + incrNE; /* Choose NE */ + y0--; + } + x0++; + + r0+=dr; + g0+=dg; + b0+=db; + + if ((x0>=drawX)&&(x0=drawY)&&(y0> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + } +} + +/////////////////////////////////////////////////////////////////////// + +void VertLineShade(int x, int y0, int y1, uint32_t rgb0, uint32_t rgb1) +{ + int y, dy; + uint32_t r0, g0, b0, r1, g1, b1; + int32_t dr, dg, db; + + r0 = (rgb0 & 0x00ff0000); + g0 = (rgb0 & 0x0000ff00) << 8; + b0 = (rgb0 & 0x000000ff) << 16; + r1 = (rgb1 & 0x00ff0000); + g1 = (rgb1 & 0x0000ff00) << 8; + b1 = (rgb1 & 0x000000ff) << 16; + + dy = (y1 - y0); + + if (dy > 0) + { + dr = ((int32_t)r1 - (int32_t)r0) / dy; + dg = ((int32_t)g1 - (int32_t)g0) / dy; + db = ((int32_t)b1 - (int32_t)b0) / dy; + } + else + { + dr = ((int32_t)r1 - (int32_t)r0); + dg = ((int32_t)g1 - (int32_t)g0); + db = ((int32_t)b1 - (int32_t)b0); + } + + if (y0 < drawY) + { + r0+=dr*(drawY - y0); + g0+=dg*(drawY - y0); + b0+=db*(drawY - y0); + y0 = drawY; + } + + if (y1 > drawH) + y1 = drawH; + + for (y = y0; y <= y1; y++) + { + GetShadeTransCol(&psxVuw[(y<<10)+x],(unsigned short)(((r0 >> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + r0+=dr; + g0+=dg; + b0+=db; + } +} + +/////////////////////////////////////////////////////////////////////// + +void HorzLineShade(int y, int x0, int x1, uint32_t rgb0, uint32_t rgb1) +{ + int x, dx; + uint32_t r0, g0, b0, r1, g1, b1; + int32_t dr, dg, db; + + r0 = (rgb0 & 0x00ff0000); + g0 = (rgb0 & 0x0000ff00) << 8; + b0 = (rgb0 & 0x000000ff) << 16; + r1 = (rgb1 & 0x00ff0000); + g1 = (rgb1 & 0x0000ff00) << 8; + b1 = (rgb1 & 0x000000ff) << 16; + + dx = (x1 - x0); + + if (dx > 0) + { + dr = ((int32_t)r1 - (int32_t)r0) / dx; + dg = ((int32_t)g1 - (int32_t)g0) / dx; + db = ((int32_t)b1 - (int32_t)b0) / dx; + } + else + { + dr = ((int32_t)r1 - (int32_t)r0); + dg = ((int32_t)g1 - (int32_t)g0); + db = ((int32_t)b1 - (int32_t)b0); + } + + if (x0 < drawX) + { + r0+=dr*(drawX - x0); + g0+=dg*(drawX - x0); + b0+=db*(drawX - x0); + x0 = drawX; + } + + if (x1 > drawW) + x1 = drawW; + + for (x = x0; x <= x1; x++) + { + GetShadeTransCol(&psxVuw[(y<<10)+x],(unsigned short)(((r0 >> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + r0+=dr; + g0+=dg; + b0+=db; + } +} + +/////////////////////////////////////////////////////////////////////// + +void Line_E_SE_Flat(int x0, int y0, int x1, int y1, unsigned short colour) +{ + int dx, dy, incrE, incrSE, d, x, y; + + dx = x1 - x0; + dy = y1 - y0; + d = 2*dy - dx; /* Initial value of d */ + incrE = 2*dy; /* incr. used for move to E */ + incrSE = 2*(dy - dx); /* incr. used for move to SE */ + x = x0; + y = y0; + if ((x>=drawX)&&(x=drawY)&&(y=drawX)&&(x=drawY)&&(y=drawX)&&(x=drawY)&&(y=drawX)&&(x=drawY)&&(y=drawX)&&(x=drawY)&&(y y1) + { + if (d <= 0) + { + d = d + incrN; /* Choose N */ + y--; + } + else + { + d = d + incrNE; /* Choose NE */ + x++; + y--; + } + if ((x>=drawX)&&(x=drawY)&&(y=drawX)&&(x=drawY)&&(y=drawX)&&(x=drawY)&&(y drawH) + y1 = drawH; + + for (y = y0; y <= y1; y++) + GetShadeTransCol(&psxVuw[(y<<10)+x], colour); +} + +/////////////////////////////////////////////////////////////////////// + +void HorzLineFlat(int y, int x0, int x1, unsigned short colour) +{ + int x; + + if (x0 < drawX) + x0 = drawX; + + if (x1 > drawW) + x1 = drawW; + + for (x = x0; x <= x1; x++) + GetShadeTransCol(&psxVuw[(y << 10) + x], colour); +} + +/////////////////////////////////////////////////////////////////////// + +/* Bresenham Line drawing function */ +void DrawSoftwareLineShade(int32_t rgb0, int32_t rgb1) +{ + short x0, y0, x1, y1, xt, yt; + int32_t rgbt; + double m, dy, dx; + + if (lx0 > drawW && lx1 > drawW) return; + if (ly0 > drawH && ly1 > drawH) return; + if (lx0 < drawX && lx1 < drawX) return; + if (ly0 < drawY && ly1 < drawY) return; + if (drawY >= drawH) return; + if (drawX >= drawW) return; + + x0 = lx0; + y0 = ly0; + x1 = lx1; + y1 = ly1; + + dx = x1 - x0; + dy = y1 - y0; + + if (dx == 0) + { + if (dy > 0) + VertLineShade(x0, y0, y1, rgb0, rgb1); + else + VertLineShade(x0, y1, y0, rgb1, rgb0); + } + else + if (dy == 0) + { + if (dx > 0) + HorzLineShade(y0, x0, x1, rgb0, rgb1); + else + HorzLineShade(y0, x1, x0, rgb1, rgb0); + } + else + { + if (dx < 0) + { + xt = x0; + yt = y0; + rgbt = rgb0; + x0 = x1; + y0 = y1; + rgb0 = rgb1; + x1 = xt; + y1 = yt; + rgb1 = rgbt; + + dx = x1 - x0; + dy = y1 - y0; + } + + m = dy / dx; + + if (m >= 0) + { + if (m > 1) + Line_S_SE_Shade(x0, y0, x1, y1, rgb0, rgb1); + else + Line_E_SE_Shade(x0, y0, x1, y1, rgb0, rgb1); + } + else + if (m < -1) + Line_N_NE_Shade(x0, y0, x1, y1, rgb0, rgb1); + else + Line_E_NE_Shade(x0, y0, x1, y1, rgb0, rgb1); + } +} + +/////////////////////////////////////////////////////////////////////// + +void DrawSoftwareLineFlat(int32_t rgb) +{ + short x0, y0, x1, y1, xt, yt; + double m, dy, dx; + unsigned short colour = 0; + + if (lx0 > drawW && lx1 > drawW) return; + if (ly0 > drawH && ly1 > drawH) return; + if (lx0 < drawX && lx1 < drawX) return; + if (ly0 < drawY && ly1 < drawY) return; + if (drawY >= drawH) return; + if (drawX >= drawW) return; + + colour = ((rgb & 0x00f80000) >> 9) | ((rgb & 0x0000f800) >> 6) | ((rgb & 0x000000f8) >> 3); + + x0 = lx0; + y0 = ly0; + x1 = lx1; + y1 = ly1; + + dx = x1 - x0; + dy = y1 - y0; + + if (dx == 0) + { + if (dy == 0) + return; // Nothing to draw + else if (dy > 0) + VertLineFlat(x0, y0, y1, colour); + else + VertLineFlat(x0, y1, y0, colour); + } + else + if (dy == 0) + { + if (dx > 0) + HorzLineFlat(y0, x0, x1, colour); + else + HorzLineFlat(y0, x1, x0, colour); + } + else + { + if (dx < 0) + { + xt = x0; + yt = y0; + x0 = x1; + y0 = y1; + x1 = xt; + y1 = yt; + + dx = x1 - x0; + dy = y1 - y0; + } + + m = dy/dx; + + if (m >= 0) + { + if (m > 1) + Line_S_SE_Flat(x0, y0, x1, y1, colour); + else + Line_E_SE_Flat(x0, y0, x1, y1, colour); + } + else + if (m < -1) + Line_N_NE_Flat(x0, y0, x1, y1, colour); + else + Line_E_NE_Flat(x0, y0, x1, y1, colour); + } +} + +/////////////////////////////////////////////////////////////////////// diff --git a/plugins/dfxvideo/soft.h b/plugins/dfxvideo/soft.h new file mode 100644 index 0000000..f52d5c0 --- /dev/null +++ b/plugins/dfxvideo/soft.h @@ -0,0 +1,42 @@ +/*************************************************************************** + soft.h - description + ------------------- + begin : Sun Oct 28 2001 + copyright : (C) 2001 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ + +#ifndef _GPU_SOFT_H_ +#define _GPU_SOFT_H_ + +void offsetPSXLine(void); +void offsetPSX2(void); +void offsetPSX3(void); +void offsetPSX4(void); + +void FillSoftwareAreaTrans(short x0,short y0,short x1,short y1,unsigned short col); +void FillSoftwareArea(short x0,short y0,short x1,short y1,unsigned short col); +void drawPoly3G(int32_t rgb1, int32_t rgb2, int32_t rgb3); +void drawPoly4G(int32_t rgb1, int32_t rgb2, int32_t rgb3, int32_t rgb4); +void drawPoly3F(int32_t rgb); +void drawPoly4F(int32_t rgb); +void drawPoly4FT(unsigned char * baseAddr); +void drawPoly4GT(unsigned char * baseAddr); +void drawPoly3FT(unsigned char * baseAddr); +void drawPoly3GT(unsigned char * baseAddr); +void DrawSoftwareSprite(unsigned char * baseAddr,short w,short h,int32_t tx,int32_t ty); +void DrawSoftwareSpriteTWin(unsigned char * baseAddr,int32_t w,int32_t h); +void DrawSoftwareSpriteMirror(unsigned char * baseAddr,int32_t w,int32_t h); +void DrawSoftwareLineShade(int32_t rgb0, int32_t rgb1); +void DrawSoftwareLineFlat(int32_t rgb); + +#endif // _GPU_SOFT_H_ diff --git a/plugins/dfxvideo/soft_modified.c b/plugins/dfxvideo/soft_modified.c new file mode 100644 index 0000000..d236d80 --- /dev/null +++ b/plugins/dfxvideo/soft_modified.c @@ -0,0 +1,8521 @@ +/*************************************************************************** + soft.c - description + ------------------- + begin : Sun Oct 28 2001 + copyright : (C) 2001 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ +#ifdef ASMJS_HACK +#define __W(stmt) { uint32_t tmp=psxVuw[(i<<10)+j+1]; \ + uint32_t * tmp_ptr = &tmp; \ + tmp = (tmp<<16)|psxVuw[(i<<10)+j]; \ + stmt; \ + psxVuw[(i<<10)+j]=tmp&0xffff;\ + psxVuw[(i<<10)+j+1]=tmp>>16;} + +#define __W2(stmt) { uint32_t tmp=psxVuw[sprA+1]; \ + uint32_t * tmp_ptr = &tmp; \ + tmp = (tmp<<16)|psxVuw[sprA]; \ + stmt; \ + psxVuw[sprA]=tmp&0xffff;\ + psxVuw[sprA+1]=tmp>>16;} +#else +#define __W(stmt) { uint32_t *tmp_ptr=(uint32_t *)(&psxVuw[(i<<10)+j]); \ + stmt; } + +#define __W2(stmt) { uint32_t *tmp_ptr=(uint32_t *)(&psxVuw[sprA]); \ + stmt; } +#endif +#define _IN_SOFT + +#include "externals.h" +#include "soft.h" + +//#define VC_INLINE +#include "gpu.h" +#include "prim.h" +#include "menu.h" +#include "swap.h" + +//////////////////////////////////////////////////////////////////////////////////// +// "NO EDGE BUFFER" POLY VERSION... FUNCS BASED ON FATMAP.TXT FROM MRI / Doomsday +//////////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////////// +// defines +//////////////////////////////////////////////////////////////////////////////////// + +// switches for painting textured quads as 2 triangles (small glitches, but better shading!) +// can be toggled by game fix 0x200 in version 1.17 anyway, so let the defines enabled! + +#define POLYQUAD3 +#define POLYQUAD3GT + +// fast solid loops... a bit more additional code, of course + +#define FASTSOLID + +// psx blending mode 3 with 25% incoming color (instead 50% without the define) + +#define HALFBRIGHTMODE3 + +// color decode defines + +#define XCOL1(x) (x & 0x1f) +#define XCOL2(x) (x & 0x3e0) +#define XCOL3(x) (x & 0x7c00) + +#define XCOL1D(x) (x & 0x1f) +#define XCOL2D(x) ((x>>5) & 0x1f) +#define XCOL3D(x) ((x>>10) & 0x1f) + +#define X32TCOL1(x) ((x & 0x001f001f)<<7) +#define X32TCOL2(x) ((x & 0x03e003e0)<<2) +#define X32TCOL3(x) ((x & 0x7c007c00)>>3) + +#define X32COL1(x) (x & 0x001f001f) +#define X32COL2(x) ((x>>5) & 0x001f001f) +#define X32COL3(x) ((x>>10) & 0x001f001f) + +#define X32ACOL1(x) (x & 0x001e001e) +#define X32ACOL2(x) ((x>>5) & 0x001e001e) +#define X32ACOL3(x) ((x>>10) & 0x001e001e) + +#define X32BCOL1(x) (x & 0x001c001c) +#define X32BCOL2(x) ((x>>5) & 0x001c001c) +#define X32BCOL3(x) ((x>>10) & 0x001c001c) + +#define X32PSXCOL(r,g,b) ((g<<10)|(b<<5)|r) + +#define XPSXCOL(r,g,b) ((g&0x7c00)|(b&0x3e0)|(r&0x1f)) + +//////////////////////////////////////////////////////////////////////////////////// +// soft globals +//////////////////////////////////////////////////////////////////////////////////// + +short g_m1=255,g_m2=255,g_m3=255; +short DrawSemiTrans=FALSE; +short Ymin; +short Ymax; + +short ly0,lx0,ly1,lx1,ly2,lx2,ly3,lx3; // global psx vertex coords +int32_t GlobalTextAddrX,GlobalTextAddrY,GlobalTextTP; +int32_t GlobalTextREST,GlobalTextABR,GlobalTextPAGE; + +//////////////////////////////////////////////////////////////////////// +// POLYGON OFFSET FUNCS +//////////////////////////////////////////////////////////////////////// + +void offsetPSXLine(void) +{ + short x0,x1,y0,y1,dx,dy;float px,py; + + x0 = lx0+1+PSXDisplay.DrawOffset.x; + x1 = lx1+1+PSXDisplay.DrawOffset.x; + y0 = ly0+1+PSXDisplay.DrawOffset.y; + y1 = ly1+1+PSXDisplay.DrawOffset.y; + + dx=x1-x0; + dy=y1-y0; + + // tricky line width without sqrt + + if(dx>=0) + { + if(dy>=0) + { + px=0.5f; + if(dx>dy) py=-0.5f; + else if(dxdy) px= 0.5f; + else if(dx=0) + { + py=0.5f; + dx=-dx; + if(dx>dy) px=-0.5f; + else if(dxdy) py=-0.5f; + else if(dx>10; + x-=(y<<10); + + coeff = dithertable[(y&3)*4+(x&3)]; + + rlow = r&7; glow = g&7; blow = b&7; + + r>>=3; g>>=3; b>>=3; + + if ((r < 0x1F) && rlow > coeff) r++; + if ((g < 0x1F) && glow > coeff) g++; + if ((b < 0x1F) && blow > coeff) b++; + + PUTLE16(pdest, ((unsigned short)b<<10) | + ((unsigned short)g<<5) | + (unsigned short)r | sM); +} + +///////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////// + +__inline static void GetShadeTransCol_Dither(unsigned short * pdest, int32_t m1, int32_t m2, int32_t m3) +{ + int32_t r,g,b; + + if(bCheckMask && (*pdest & HOST2LE16(0x8000))) return; + + if(DrawSemiTrans) + { + r=((XCOL1D(GETLE16(pdest)))<<3); + b=((XCOL2D(GETLE16(pdest)))<<3); + g=((XCOL3D(GETLE16(pdest)))<<3); + + if(GlobalTextABR==0) + { + r=(r>>1)+(m1>>1); + b=(b>>1)+(m2>>1); + g=(g>>1)+(m3>>1); + } + else + if(GlobalTextABR==1) + { + r+=m1; + b+=m2; + g+=m3; + } + else + if(GlobalTextABR==2) + { + r-=m1; + b-=m2; + g-=m3; + if(r&0x80000000) r=0; + if(b&0x80000000) b=0; + if(g&0x80000000) g=0; + } + else + { +#ifdef HALFBRIGHTMODE3 + r+=(m1>>2); + b+=(m2>>2); + g+=(m3>>2); +#else + r+=(m1>>1); + b+=(m2>>1); + g+=(m3>>1); +#endif + } + } + else + { + r=m1; + b=m2; + g=m3; + } + + if(r&0x7FFFFF00) r=0xff; + if(b&0x7FFFFF00) b=0xff; + if(g&0x7FFFFF00) g=0xff; + + Dither16(pdest,r,b,g,sSetMask); +} + +//////////////////////////////////////////////////////////////////////// + +__inline static void GetShadeTransCol(unsigned short * pdest,unsigned short color) +{ + if(bCheckMask && (*pdest & HOST2LE16(0x8000))) return; + + if(DrawSemiTrans) + { + int32_t r,g,b; + + if(GlobalTextABR==0) + { + PUTLE16(pdest, (((GETLE16(pdest)&0x7bde)>>1)+(((color)&0x7bde)>>1))|sSetMask);//0x8000; + return; +/* + r=(XCOL1(*pdest)>>1)+((XCOL1(color))>>1); + b=(XCOL2(*pdest)>>1)+((XCOL2(color))>>1); + g=(XCOL3(*pdest)>>1)+((XCOL3(color))>>1); +*/ + } + else + if(GlobalTextABR==1) + { + r=(XCOL1(GETLE16(pdest)))+((XCOL1(color))); + b=(XCOL2(GETLE16(pdest)))+((XCOL2(color))); + g=(XCOL3(GETLE16(pdest)))+((XCOL3(color))); + } + else + if(GlobalTextABR==2) + { + r=(XCOL1(GETLE16(pdest)))-((XCOL1(color))); + b=(XCOL2(GETLE16(pdest)))-((XCOL2(color))); + g=(XCOL3(GETLE16(pdest)))-((XCOL3(color))); + if(r&0x80000000) r=0; + if(b&0x80000000) b=0; + if(g&0x80000000) g=0; + } + else + { +#ifdef HALFBRIGHTMODE3 + r=(XCOL1(GETLE16(pdest)))+((XCOL1(color))>>2); + b=(XCOL2(GETLE16(pdest)))+((XCOL2(color))>>2); + g=(XCOL3(GETLE16(pdest)))+((XCOL3(color))>>2); +#else + r=(XCOL1(GETLE16(pdest)))+((XCOL1(color))>>1); + b=(XCOL2(GETLE16(pdest)))+((XCOL2(color))>>1); + g=(XCOL3(GETLE16(pdest)))+((XCOL3(color))>>1); +#endif + } + + if(r&0x7FFFFFE0) r=0x1f; + if(b&0x7FFFFC00) b=0x3e0; + if(g&0x7FFF8000) g=0x7c00; + + PUTLE16(pdest, (XPSXCOL(r,g,b))|sSetMask);//0x8000; + } + else PUTLE16(pdest, color|sSetMask); +} + +//////////////////////////////////////////////////////////////////////// + +__inline static void GetShadeTransCol32(uint32_t * pdest,uint32_t color) +{ + if(DrawSemiTrans) + { + int32_t r,g,b; + + if(GlobalTextABR==0) + { + if(!bCheckMask) + { + PUTLE32(pdest, (((GETLE32(pdest)&0x7bde7bde)>>1)+(((color)&0x7bde7bde)>>1))|lSetMask);//0x80008000; + return; + } + r=(X32ACOL1(GETLE32(pdest))>>1)+((X32ACOL1(color))>>1); + b=(X32ACOL2(GETLE32(pdest))>>1)+((X32ACOL2(color))>>1); + g=(X32ACOL3(GETLE32(pdest))>>1)+((X32ACOL3(color))>>1); + } + else + if(GlobalTextABR==1) + { + r=(X32COL1(GETLE32(pdest)))+((X32COL1(color))); + b=(X32COL2(GETLE32(pdest)))+((X32COL2(color))); + g=(X32COL3(GETLE32(pdest)))+((X32COL3(color))); + } + else + if(GlobalTextABR==2) + { + int32_t sr,sb,sg,src,sbc,sgc,c; + src=XCOL1(color);sbc=XCOL2(color);sgc=XCOL3(color); + c=GETLE32(pdest)>>16; + sr=(XCOL1(c))-src; if(sr&0x8000) sr=0; + sb=(XCOL2(c))-sbc; if(sb&0x8000) sb=0; + sg=(XCOL3(c))-sgc; if(sg&0x8000) sg=0; + r=((int32_t)sr)<<16;b=((int32_t)sb)<<11;g=((int32_t)sg)<<6; + c=LOWORD(GETLE32(pdest)); + sr=(XCOL1(c))-src; if(sr&0x8000) sr=0; + sb=(XCOL2(c))-sbc; if(sb&0x8000) sb=0; + sg=(XCOL3(c))-sgc; if(sg&0x8000) sg=0; + r|=sr;b|=sb>>5;g|=sg>>10; + } + else + { +#ifdef HALFBRIGHTMODE3 + r=(X32COL1(GETLE32(pdest)))+((X32BCOL1(color))>>2); + b=(X32COL2(GETLE32(pdest)))+((X32BCOL2(color))>>2); + g=(X32COL3(GETLE32(pdest)))+((X32BCOL3(color))>>2); +#else + r=(X32COL1(GETLE32(pdest)))+((X32ACOL1(color))>>1); + b=(X32COL2(GETLE32(pdest)))+((X32ACOL2(color))>>1); + g=(X32COL3(GETLE32(pdest)))+((X32ACOL3(color))>>1); +#endif + } + + if(r&0x7FE00000) r=0x1f0000|(r&0xFFFF); + if(r&0x7FE0) r=0x1f |(r&0xFFFF0000); + if(b&0x7FE00000) b=0x1f0000|(b&0xFFFF); + if(b&0x7FE0) b=0x1f |(b&0xFFFF0000); + if(g&0x7FE00000) g=0x1f0000|(g&0xFFFF); + if(g&0x7FE0) g=0x1f |(g&0xFFFF0000); + + if(bCheckMask) + { + uint32_t ma=GETLE32(pdest); + PUTLE32(pdest, (X32PSXCOL(r,g,b))|lSetMask);//0x80008000; + if(ma&0x80000000) PUTLE32(pdest, (ma&0xFFFF0000)|(*pdest&0xFFFF)); + if(ma&0x00008000) PUTLE32(pdest, (ma&0xFFFF) |(*pdest&0xFFFF0000)); + return; + } + PUTLE32(pdest, (X32PSXCOL(r,g,b))|lSetMask);//0x80008000; + } + else + { + if(bCheckMask) + { + uint32_t ma=GETLE32(pdest); + PUTLE32(pdest, color|lSetMask);//0x80008000; + if(ma&0x80000000) PUTLE32(pdest, (ma&0xFFFF0000)|(GETLE32(pdest)&0xFFFF)); + if(ma&0x00008000) PUTLE32(pdest, (ma&0xFFFF) |(GETLE32(pdest)&0xFFFF0000)); + return; + } + + PUTLE32(pdest, color|lSetMask);//0x80008000; + } +} + +//////////////////////////////////////////////////////////////////////// + +__inline static void GetTextureTransColG(unsigned short * pdest,unsigned short color) +{ + int32_t r,g,b;unsigned short l; + + if(color==0) return; + + if(bCheckMask && (*pdest & HOST2LE16(0x8000))) return; + + l=sSetMask|(color&0x8000); + + if(DrawSemiTrans && (color&0x8000)) + { + if(GlobalTextABR==0) + { + unsigned short d; + d =(GETLE16(pdest)&0x7bde)>>1; + color =((color) &0x7bde)>>1; + r=(XCOL1(d))+((((XCOL1(color)))* g_m1)>>7); + b=(XCOL2(d))+((((XCOL2(color)))* g_m2)>>7); + g=(XCOL3(d))+((((XCOL3(color)))* g_m3)>>7); + +/* + r=(XCOL1(*pdest)>>1)+((((XCOL1(color))>>1)* g_m1)>>7); + b=(XCOL2(*pdest)>>1)+((((XCOL2(color))>>1)* g_m2)>>7); + g=(XCOL3(*pdest)>>1)+((((XCOL3(color))>>1)* g_m3)>>7); +*/ + } + else + if(GlobalTextABR==1) + { + r=(XCOL1(GETLE16(pdest)))+((((XCOL1(color)))* g_m1)>>7); + b=(XCOL2(GETLE16(pdest)))+((((XCOL2(color)))* g_m2)>>7); + g=(XCOL3(GETLE16(pdest)))+((((XCOL3(color)))* g_m3)>>7); + } + else + if(GlobalTextABR==2) + { + r=(XCOL1(GETLE16(pdest)))-((((XCOL1(color)))* g_m1)>>7); + b=(XCOL2(GETLE16(pdest)))-((((XCOL2(color)))* g_m2)>>7); + g=(XCOL3(GETLE16(pdest)))-((((XCOL3(color)))* g_m3)>>7); + if(r&0x80000000) r=0; + if(b&0x80000000) b=0; + if(g&0x80000000) g=0; + } + else + { +#ifdef HALFBRIGHTMODE3 + r=(XCOL1(GETLE16(pdest)))+((((XCOL1(color))>>2)* g_m1)>>7); + b=(XCOL2(GETLE16(pdest)))+((((XCOL2(color))>>2)* g_m2)>>7); + g=(XCOL3(GETLE16(pdest)))+((((XCOL3(color))>>2)* g_m3)>>7); +#else + r=(XCOL1(GETLE16(pdest)))+((((XCOL1(color))>>1)* g_m1)>>7); + b=(XCOL2(GETLE16(pdest)))+((((XCOL2(color))>>1)* g_m2)>>7); + g=(XCOL3(GETLE16(pdest)))+((((XCOL3(color))>>1)* g_m3)>>7); +#endif + } + } + else + { + r=((XCOL1(color))* g_m1)>>7; + b=((XCOL2(color))* g_m2)>>7; + g=((XCOL3(color))* g_m3)>>7; + } + + if(r&0x7FFFFFE0) r=0x1f; + if(b&0x7FFFFC00) b=0x3e0; + if(g&0x7FFF8000) g=0x7c00; + + PUTLE16(pdest, (XPSXCOL(r,g,b))|l); +} + +//////////////////////////////////////////////////////////////////////// + +__inline static void GetTextureTransColG_S(unsigned short * pdest,unsigned short color) +{ + int32_t r,g,b;unsigned short l; + + if(color==0) return; + + l=sSetMask|(color&0x8000); + + r=((XCOL1(color))* g_m1)>>7; + b=((XCOL2(color))* g_m2)>>7; + g=((XCOL3(color))* g_m3)>>7; + + if(r&0x7FFFFFE0) r=0x1f; + if(b&0x7FFFFC00) b=0x3e0; + if(g&0x7FFF8000) g=0x7c00; + + PUTLE16(pdest, (XPSXCOL(r,g,b))|l); +} + +//////////////////////////////////////////////////////////////////////// + +__inline static void GetTextureTransColG_SPR(unsigned short * pdest,unsigned short color) +{ + int32_t r,g,b;unsigned short l; + + if(color==0) return; + + if(bCheckMask && (GETLE16(pdest) & 0x8000)) return; + + l=sSetMask|(color&0x8000); + + if(DrawSemiTrans && (color&0x8000)) + { + if(GlobalTextABR==0) + { + unsigned short d; + d =(GETLE16(pdest)&0x7bde)>>1; + color =((color) &0x7bde)>>1; + r=(XCOL1(d))+((((XCOL1(color)))* g_m1)>>7); + b=(XCOL2(d))+((((XCOL2(color)))* g_m2)>>7); + g=(XCOL3(d))+((((XCOL3(color)))* g_m3)>>7); + +/* + r=(XCOL1(*pdest)>>1)+((((XCOL1(color))>>1)* g_m1)>>7); + b=(XCOL2(*pdest)>>1)+((((XCOL2(color))>>1)* g_m2)>>7); + g=(XCOL3(*pdest)>>1)+((((XCOL3(color))>>1)* g_m3)>>7); +*/ + } + else + if(GlobalTextABR==1) + { + r=(XCOL1(GETLE16(pdest)))+((((XCOL1(color)))* g_m1)>>7); + b=(XCOL2(GETLE16(pdest)))+((((XCOL2(color)))* g_m2)>>7); + g=(XCOL3(GETLE16(pdest)))+((((XCOL3(color)))* g_m3)>>7); + } + else + if(GlobalTextABR==2) + { + r=(XCOL1(GETLE16(pdest)))-((((XCOL1(color)))* g_m1)>>7); + b=(XCOL2(GETLE16(pdest)))-((((XCOL2(color)))* g_m2)>>7); + g=(XCOL3(GETLE16(pdest)))-((((XCOL3(color)))* g_m3)>>7); + if(r&0x80000000) r=0; + if(b&0x80000000) b=0; + if(g&0x80000000) g=0; + } + else + { +#ifdef HALFBRIGHTMODE3 + r=(XCOL1(GETLE16(pdest)))+((((XCOL1(color))>>2)* g_m1)>>7); + b=(XCOL2(GETLE16(pdest)))+((((XCOL2(color))>>2)* g_m2)>>7); + g=(XCOL3(GETLE16(pdest)))+((((XCOL3(color))>>2)* g_m3)>>7); +#else + r=(XCOL1(GETLE16(pdest)))+((((XCOL1(color))>>1)* g_m1)>>7); + b=(XCOL2(GETLE16(pdest)))+((((XCOL2(color))>>1)* g_m2)>>7); + g=(XCOL3(GETLE16(pdest)))+((((XCOL3(color))>>1)* g_m3)>>7); +#endif + } + } + else + { + r=((XCOL1(color))* g_m1)>>7; + b=((XCOL2(color))* g_m2)>>7; + g=((XCOL3(color))* g_m3)>>7; + } + + if(r&0x7FFFFFE0) r=0x1f; + if(b&0x7FFFFC00) b=0x3e0; + if(g&0x7FFF8000) g=0x7c00; + + PUTLE16(pdest, (XPSXCOL(r,g,b))|l); +} + +//////////////////////////////////////////////////////////////////////// + +__inline static void GetTextureTransColG32(uint32_t * pdest,uint32_t color) +{ + int32_t r,g,b,l; + + if(color==0) return; + + l=lSetMask|(color&0x80008000); + + if(DrawSemiTrans && (color&0x80008000)) + { + if(GlobalTextABR==0) + { + r=((((X32TCOL1(GETLE32(pdest)))+((X32COL1(color)) * g_m1))&0xFF00FF00)>>8); + b=((((X32TCOL2(GETLE32(pdest)))+((X32COL2(color)) * g_m2))&0xFF00FF00)>>8); + g=((((X32TCOL3(GETLE32(pdest)))+((X32COL3(color)) * g_m3))&0xFF00FF00)>>8); + } + else + if(GlobalTextABR==1) + { + r=(X32COL1(GETLE32(pdest)))+(((((X32COL1(color)))* g_m1)&0xFF80FF80)>>7); + b=(X32COL2(GETLE32(pdest)))+(((((X32COL2(color)))* g_m2)&0xFF80FF80)>>7); + g=(X32COL3(GETLE32(pdest)))+(((((X32COL3(color)))* g_m3)&0xFF80FF80)>>7); + } + else + if(GlobalTextABR==2) + { + int32_t t; + r=(((((X32COL1(color)))* g_m1)&0xFF80FF80)>>7); + t=(GETLE32(pdest)&0x001f0000)-(r&0x003f0000); if(t&0x80000000) t=0; + r=(GETLE32(pdest)&0x0000001f)-(r&0x0000003f); if(r&0x80000000) r=0; + r|=t; + + b=(((((X32COL2(color)))* g_m2)&0xFF80FF80)>>7); + t=((GETLE32(pdest)>>5)&0x001f0000)-(b&0x003f0000); if(t&0x80000000) t=0; + b=((GETLE32(pdest)>>5)&0x0000001f)-(b&0x0000003f); if(b&0x80000000) b=0; + b|=t; + + g=(((((X32COL3(color)))* g_m3)&0xFF80FF80)>>7); + t=((GETLE32(pdest)>>10)&0x001f0000)-(g&0x003f0000); if(t&0x80000000) t=0; + g=((GETLE32(pdest)>>10)&0x0000001f)-(g&0x0000003f); if(g&0x80000000) g=0; + g|=t; + } + else + { +#ifdef HALFBRIGHTMODE3 + r=(X32COL1(GETLE32(pdest)))+(((((X32BCOL1(color))>>2)* g_m1)&0xFF80FF80)>>7); + b=(X32COL2(GETLE32(pdest)))+(((((X32BCOL2(color))>>2)* g_m2)&0xFF80FF80)>>7); + g=(X32COL3(GETLE32(pdest)))+(((((X32BCOL3(color))>>2)* g_m3)&0xFF80FF80)>>7); +#else + r=(X32COL1(GETLE32(pdest)))+(((((X32ACOL1(color))>>1)* g_m1)&0xFF80FF80)>>7); + b=(X32COL2(GETLE32(pdest)))+(((((X32ACOL2(color))>>1)* g_m2)&0xFF80FF80)>>7); + g=(X32COL3(GETLE32(pdest)))+(((((X32ACOL3(color))>>1)* g_m3)&0xFF80FF80)>>7); +#endif + } + + if(!(color&0x8000)) + { + r=(r&0xffff0000)|((((X32COL1(color))* g_m1)&0x0000FF80)>>7); + b=(b&0xffff0000)|((((X32COL2(color))* g_m2)&0x0000FF80)>>7); + g=(g&0xffff0000)|((((X32COL3(color))* g_m3)&0x0000FF80)>>7); + } + if(!(color&0x80000000)) + { + r=(r&0xffff)|((((X32COL1(color))* g_m1)&0xFF800000)>>7); + b=(b&0xffff)|((((X32COL2(color))* g_m2)&0xFF800000)>>7); + g=(g&0xffff)|((((X32COL3(color))* g_m3)&0xFF800000)>>7); + } + + } + else + { + r=(((X32COL1(color))* g_m1)&0xFF80FF80)>>7; + b=(((X32COL2(color))* g_m2)&0xFF80FF80)>>7; + g=(((X32COL3(color))* g_m3)&0xFF80FF80)>>7; + } + + if(r&0x7FE00000) r=0x1f0000|(r&0xFFFF); + if(r&0x7FE0) r=0x1f |(r&0xFFFF0000); + if(b&0x7FE00000) b=0x1f0000|(b&0xFFFF); + if(b&0x7FE0) b=0x1f |(b&0xFFFF0000); + if(g&0x7FE00000) g=0x1f0000|(g&0xFFFF); + if(g&0x7FE0) g=0x1f |(g&0xFFFF0000); + + if(bCheckMask) + { + uint32_t ma=GETLE32(pdest); + + PUTLE32(pdest, (X32PSXCOL(r,g,b))|l); + + if((color&0xffff)==0 ) PUTLE32(pdest, (ma&0xffff)|(GETLE32(pdest)&0xffff0000)); + if((color&0xffff0000)==0) PUTLE32(pdest, (ma&0xffff0000)|(GETLE32(pdest)&0xffff)); + if(ma&0x80000000) PUTLE32(pdest, (ma&0xFFFF0000)|(GETLE32(pdest)&0xFFFF)); + if(ma&0x00008000) PUTLE32(pdest, (ma&0xFFFF) |(GETLE32(pdest)&0xFFFF0000)); + + return; + } + if((color&0xffff)==0 ) {PUTLE32(pdest, (GETLE32(pdest)&0xffff)|(((X32PSXCOL(r,g,b))|l)&0xffff0000));return;} + if((color&0xffff0000)==0) {PUTLE32(pdest, (GETLE32(pdest)&0xffff0000)|(((X32PSXCOL(r,g,b))|l)&0xffff));return;} + + PUTLE32(pdest, (X32PSXCOL(r,g,b))|l); +} + +//////////////////////////////////////////////////////////////////////// + +__inline static void GetTextureTransColG32_S(uint32_t * pdest,uint32_t color) +{ + int32_t r,g,b; + + if(color==0) return; + + r=(((X32COL1(color))* g_m1)&0xFF80FF80)>>7; + b=(((X32COL2(color))* g_m2)&0xFF80FF80)>>7; + g=(((X32COL3(color))* g_m3)&0xFF80FF80)>>7; + + if(r&0x7FE00000) r=0x1f0000|(r&0xFFFF); + if(r&0x7FE0) r=0x1f |(r&0xFFFF0000); + if(b&0x7FE00000) b=0x1f0000|(b&0xFFFF); + if(b&0x7FE0) b=0x1f |(b&0xFFFF0000); + if(g&0x7FE00000) g=0x1f0000|(g&0xFFFF); + if(g&0x7FE0) g=0x1f |(g&0xFFFF0000); + + if((color&0xffff)==0) {PUTLE32(pdest, (GETLE32(pdest)&0xffff)|(((X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000))&0xffff0000));return;} + if((color&0xffff0000)==0) {PUTLE32(pdest, (GETLE32(pdest)&0xffff0000)|(((X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000))&0xffff));return;} + + PUTLE32(pdest, (X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000)); +} + +//////////////////////////////////////////////////////////////////////// + +__inline static void GetTextureTransColG32_SPR(uint32_t * pdest,uint32_t color) +{ + int32_t r,g,b; + + if(color==0) return; + + if(DrawSemiTrans && (color&0x80008000)) + { + if(GlobalTextABR==0) + { + r=((((X32TCOL1(GETLE32(pdest)))+((X32COL1(color)) * g_m1))&0xFF00FF00)>>8); + b=((((X32TCOL2(GETLE32(pdest)))+((X32COL2(color)) * g_m2))&0xFF00FF00)>>8); + g=((((X32TCOL3(GETLE32(pdest)))+((X32COL3(color)) * g_m3))&0xFF00FF00)>>8); + } + else + if(GlobalTextABR==1) + { + r=(X32COL1(GETLE32(pdest)))+(((((X32COL1(color)))* g_m1)&0xFF80FF80)>>7); + b=(X32COL2(GETLE32(pdest)))+(((((X32COL2(color)))* g_m2)&0xFF80FF80)>>7); + g=(X32COL3(GETLE32(pdest)))+(((((X32COL3(color)))* g_m3)&0xFF80FF80)>>7); + } + else + if(GlobalTextABR==2) + { + int32_t t; + r=(((((X32COL1(color)))* g_m1)&0xFF80FF80)>>7); + t=(GETLE32(pdest)&0x001f0000)-(r&0x003f0000); if(t&0x80000000) t=0; + r=(GETLE32(pdest)&0x0000001f)-(r&0x0000003f); if(r&0x80000000) r=0; + r|=t; + + b=(((((X32COL2(color)))* g_m2)&0xFF80FF80)>>7); + t=((GETLE32(pdest)>>5)&0x001f0000)-(b&0x003f0000); if(t&0x80000000) t=0; + b=((GETLE32(pdest)>>5)&0x0000001f)-(b&0x0000003f); if(b&0x80000000) b=0; + b|=t; + + g=(((((X32COL3(color)))* g_m3)&0xFF80FF80)>>7); + t=((GETLE32(pdest)>>10)&0x001f0000)-(g&0x003f0000); if(t&0x80000000) t=0; + g=((GETLE32(pdest)>>10)&0x0000001f)-(g&0x0000003f); if(g&0x80000000) g=0; + g|=t; + } + else + { +#ifdef HALFBRIGHTMODE3 + r=(X32COL1(GETLE32(pdest)))+(((((X32BCOL1(color))>>2)* g_m1)&0xFF80FF80)>>7); + b=(X32COL2(GETLE32(pdest)))+(((((X32BCOL2(color))>>2)* g_m2)&0xFF80FF80)>>7); + g=(X32COL3(GETLE32(pdest)))+(((((X32BCOL3(color))>>2)* g_m3)&0xFF80FF80)>>7); +#else + r=(X32COL1(GETLE32(pdest)))+(((((X32ACOL1(color))>>1)* g_m1)&0xFF80FF80)>>7); + b=(X32COL2(GETLE32(pdest)))+(((((X32ACOL2(color))>>1)* g_m2)&0xFF80FF80)>>7); + g=(X32COL3(GETLE32(pdest)))+(((((X32ACOL3(color))>>1)* g_m3)&0xFF80FF80)>>7); +#endif + } + + if(!(color&0x8000)) + { + r=(r&0xffff0000)|((((X32COL1(color))* g_m1)&0x0000FF80)>>7); + b=(b&0xffff0000)|((((X32COL2(color))* g_m2)&0x0000FF80)>>7); + g=(g&0xffff0000)|((((X32COL3(color))* g_m3)&0x0000FF80)>>7); + } + if(!(color&0x80000000)) + { + r=(r&0xffff)|((((X32COL1(color))* g_m1)&0xFF800000)>>7); + b=(b&0xffff)|((((X32COL2(color))* g_m2)&0xFF800000)>>7); + g=(g&0xffff)|((((X32COL3(color))* g_m3)&0xFF800000)>>7); + } + + } + else + { + r=(((X32COL1(color))* g_m1)&0xFF80FF80)>>7; + b=(((X32COL2(color))* g_m2)&0xFF80FF80)>>7; + g=(((X32COL3(color))* g_m3)&0xFF80FF80)>>7; + } + + if(r&0x7FE00000) r=0x1f0000|(r&0xFFFF); + if(r&0x7FE0) r=0x1f |(r&0xFFFF0000); + if(b&0x7FE00000) b=0x1f0000|(b&0xFFFF); + if(b&0x7FE0) b=0x1f |(b&0xFFFF0000); + if(g&0x7FE00000) g=0x1f0000|(g&0xFFFF); + if(g&0x7FE0) g=0x1f |(g&0xFFFF0000); + + if(bCheckMask) + { + uint32_t ma=GETLE32(pdest); + + PUTLE32(pdest, (X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000)); + + if((color&0xffff)==0 ) PUTLE32(pdest, (ma&0xffff)|(GETLE32(pdest)&0xffff0000)); + if((color&0xffff0000)==0) PUTLE32(pdest, (ma&0xffff0000)|(GETLE32(pdest)&0xffff)); + if(ma&0x80000000) PUTLE32(pdest, (ma&0xFFFF0000)|(GETLE32(pdest)&0xFFFF)); + if(ma&0x00008000) PUTLE32(pdest, (ma&0xFFFF) |(GETLE32(pdest)&0xFFFF0000)); + + return; + } + if((color&0xffff)==0 ) {PUTLE32(pdest, (GETLE32(pdest)&0xffff)|(((X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000))&0xffff0000));return;} + if((color&0xffff0000)==0) {PUTLE32(pdest, (GETLE32(pdest)&0xffff0000)|(((X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000))&0xffff));return;} + + PUTLE32(pdest, (X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000)); +} + +//////////////////////////////////////////////////////////////////////// + +__inline static void GetTextureTransColGX_Dither(unsigned short * pdest,unsigned short color,int32_t m1,int32_t m2,int32_t m3) +{ + int32_t r,g,b; + + if(color==0) return; + + if(bCheckMask && (*pdest & HOST2LE16(0x8000))) return; + + m1=(((XCOL1D(color)))*m1)>>4; + m2=(((XCOL2D(color)))*m2)>>4; + m3=(((XCOL3D(color)))*m3)>>4; + + if(DrawSemiTrans && (color&0x8000)) + { + r=((XCOL1D(GETLE16(pdest)))<<3); + b=((XCOL2D(GETLE16(pdest)))<<3); + g=((XCOL3D(GETLE16(pdest)))<<3); + + if(GlobalTextABR==0) + { + r=(r>>1)+(m1>>1); + b=(b>>1)+(m2>>1); + g=(g>>1)+(m3>>1); + } + else + if(GlobalTextABR==1) + { + r+=m1; + b+=m2; + g+=m3; + } + else + if(GlobalTextABR==2) + { + r-=m1; + b-=m2; + g-=m3; + if(r&0x80000000) r=0; + if(b&0x80000000) b=0; + if(g&0x80000000) g=0; + } + else + { +#ifdef HALFBRIGHTMODE3 + r+=(m1>>2); + b+=(m2>>2); + g+=(m3>>2); +#else + r+=(m1>>1); + b+=(m2>>1); + g+=(m3>>1); +#endif + } + } + else + { + r=m1; + b=m2; + g=m3; + } + + if(r&0x7FFFFF00) r=0xff; + if(b&0x7FFFFF00) b=0xff; + if(g&0x7FFFFF00) g=0xff; + + Dither16(pdest,r,b,g,sSetMask|(color&0x8000)); + +} + +//////////////////////////////////////////////////////////////////////// + +__inline static void GetTextureTransColGX(unsigned short * pdest,unsigned short color,short m1,short m2,short m3) +{ + int32_t r,g,b;unsigned short l; + + if(color==0) return; + + if(bCheckMask && (*pdest & HOST2LE16(0x8000))) return; + + l=sSetMask|(color&0x8000); + + if(DrawSemiTrans && (color&0x8000)) + { + if(GlobalTextABR==0) + { + unsigned short d; + d =(GETLE16(pdest)&0x7bde)>>1; + color =((color) &0x7bde)>>1; + r=(XCOL1(d))+((((XCOL1(color)))* m1)>>7); + b=(XCOL2(d))+((((XCOL2(color)))* m2)>>7); + g=(XCOL3(d))+((((XCOL3(color)))* m3)>>7); +/* + r=(XCOL1(*pdest)>>1)+((((XCOL1(color))>>1)* m1)>>7); + b=(XCOL2(*pdest)>>1)+((((XCOL2(color))>>1)* m2)>>7); + g=(XCOL3(*pdest)>>1)+((((XCOL3(color))>>1)* m3)>>7); +*/ + } + else + if(GlobalTextABR==1) + { + r=(XCOL1(GETLE16(pdest)))+((((XCOL1(color)))* m1)>>7); + b=(XCOL2(GETLE16(pdest)))+((((XCOL2(color)))* m2)>>7); + g=(XCOL3(GETLE16(pdest)))+((((XCOL3(color)))* m3)>>7); + } + else + if(GlobalTextABR==2) + { + r=(XCOL1(GETLE16(pdest)))-((((XCOL1(color)))* m1)>>7); + b=(XCOL2(GETLE16(pdest)))-((((XCOL2(color)))* m2)>>7); + g=(XCOL3(GETLE16(pdest)))-((((XCOL3(color)))* m3)>>7); + if(r&0x80000000) r=0; + if(b&0x80000000) b=0; + if(g&0x80000000) g=0; + } + else + { +#ifdef HALFBRIGHTMODE3 + r=(XCOL1(GETLE16(pdest)))+((((XCOL1(color))>>2)* m1)>>7); + b=(XCOL2(GETLE16(pdest)))+((((XCOL2(color))>>2)* m2)>>7); + g=(XCOL3(GETLE16(pdest)))+((((XCOL3(color))>>2)* m3)>>7); +#else + r=(XCOL1(GETLE16(pdest)))+((((XCOL1(color))>>1)* m1)>>7); + b=(XCOL2(GETLE16(pdest)))+((((XCOL2(color))>>1)* m2)>>7); + g=(XCOL3(GETLE16(pdest)))+((((XCOL3(color))>>1)* m3)>>7); +#endif + } + } + else + { + r=((XCOL1(color))* m1)>>7; + b=((XCOL2(color))* m2)>>7; + g=((XCOL3(color))* m3)>>7; + } + + if(r&0x7FFFFFE0) r=0x1f; + if(b&0x7FFFFC00) b=0x3e0; + if(g&0x7FFF8000) g=0x7c00; + + PUTLE16(pdest, (XPSXCOL(r,g,b))|l); +} + +//////////////////////////////////////////////////////////////////////// + +__inline static void GetTextureTransColGX_S(unsigned short * pdest,unsigned short color,short m1,short m2,short m3) +{ + int32_t r,g,b; + + if(color==0) return; + + r=((XCOL1(color))* m1)>>7; + b=((XCOL2(color))* m2)>>7; + g=((XCOL3(color))* m3)>>7; + + if(r&0x7FFFFFE0) r=0x1f; + if(b&0x7FFFFC00) b=0x3e0; + if(g&0x7FFF8000) g=0x7c00; + + PUTLE16(pdest, (XPSXCOL(r,g,b))|sSetMask|(color&0x8000)); +} + +//////////////////////////////////////////////////////////////////////// + +__inline static void GetTextureTransColGX32_S(uint32_t * pdest,uint32_t color,short m1,short m2,short m3) +{ + int32_t r,g,b; + + if(color==0) return; + + r=(((X32COL1(color))* m1)&0xFF80FF80)>>7; + b=(((X32COL2(color))* m2)&0xFF80FF80)>>7; + g=(((X32COL3(color))* m3)&0xFF80FF80)>>7; + + if(r&0x7FE00000) r=0x1f0000|(r&0xFFFF); + if(r&0x7FE0) r=0x1f |(r&0xFFFF0000); + if(b&0x7FE00000) b=0x1f0000|(b&0xFFFF); + if(b&0x7FE0) b=0x1f |(b&0xFFFF0000); + if(g&0x7FE00000) g=0x1f0000|(g&0xFFFF); + if(g&0x7FE0) g=0x1f |(g&0xFFFF0000); + + if((color&0xffff)==0) {PUTLE32(pdest, (GETLE32(pdest)&0xffff)|(((X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000))&0xffff0000));return;} + if((color&0xffff0000)==0) {PUTLE32(pdest, (GETLE32(pdest)&0xffff0000)|(((X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000))&0xffff));return;} + + PUTLE32(pdest, (X32PSXCOL(r,g,b))|lSetMask|(color&0x80008000)); +} + +//////////////////////////////////////////////////////////////////////// +// FILL FUNCS +//////////////////////////////////////////////////////////////////////// + +void FillSoftwareAreaTrans(short x0,short y0,short x1, // FILL AREA TRANS + short y1,unsigned short col) +{ + short j,i,dx,dy; + + if(y0>y1) return; + if(x0>x1) return; + + if(x1drawW) return; + if(y0>drawH) return; + + x1=min(x1,drawW+1); + y1=min(y1,drawH+1); + x0=max(x0,drawX); + y0=max(y0,drawY); + + if(y0>=iGPUHeight) return; + if(x0>1023) return; + + if(y1>iGPUHeight) y1=iGPUHeight; + if(x1>1024) x1=1024; + + dx=x1-x0;dy=y1-y0; + + if(dx==1 && dy==1 && x0==1020 && y0==511) // special fix for pinball game... emu protection??? + { +/* +m->v 1020 511 1 1 +writedatamem 0x00000000 1 +tile1 newcol 7fff (orgcol 0xffffff), oldvram 0 +v->m 1020 511 1 1 +readdatamem 0x00007fff 1 +m->v 1020 511 1 1 +writedatamem 0x00000000 1 +tile1 newcol 8000 (orgcol 0xffffff), oldvram 0 +v->m 1020 511 1 1 +readdatamem 0x00008000 1 +*/ + + static int iCheat=0; + col+=iCheat; + if(iCheat==1) iCheat=0; else iCheat=1; + } + + + if(dx&1) // slow fill + { + unsigned short *DSTPtr; + unsigned short LineOffset; + DSTPtr = psxVuw + (1024*y0) + x0; + LineOffset = 1024 - dx; + for(i=0;i>=1; + //DSTPtr = (uint32_t *)(psxVuw + (1024*y0) + x0); + DSTPtr = (psxVuw + (1024*y0) + x0); + LineOffset = 512 - dx; + + if(!bCheckMask && !DrawSemiTrans) + { + for(i=0;i>16); + } + DSTPtr += (LineOffset*2); + } + } + else + { + for(i=0;i>16; + DSTPtr+=2; + } + DSTPtr += (LineOffset*2); + } + } + } +} +//////////////////////////////////////////////////////////////////////// + +void FillSoftwareArea(short x0,short y0,short x1, // FILL AREA (BLK FILL) + short y1,unsigned short col) // no draw area check here! +{ + short j,i,dx,dy; + + if(y0>y1) return; + if(x0>x1) return; + + if(y0>=iGPUHeight) return; + if(x0>1023) return; + + if(y1>iGPUHeight) y1=iGPUHeight; + if(x1>1024) x1=1024; + + dx=x1-x0;dy=y1-y0; + if(dx&1) + { + unsigned short *DSTPtr; + unsigned short LineOffset; + + DSTPtr = psxVuw + (1024*y0) + x0; + LineOffset = 1024 - dx; + + for(i=0;i>=1; + DSTPtr = (psxVuw + (1024*y0) + x0); + LineOffset = 512 - dx; + + for(i=0;i>16); } + DSTPtr += LineOffset*2; + } + } +} + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +// EDGE INTERPOLATION +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + +typedef struct SOFTVTAG +{ + int x,y; + int u,v; + int32_t R,G,B; +} soft_vertex; + +static soft_vertex vtx[4]; +static soft_vertex * left_array[4], * right_array[4]; +static int left_section, right_section; +static int left_section_height, right_section_height; +static int left_x, delta_left_x, right_x, delta_right_x; +static int left_u, delta_left_u, left_v, delta_left_v; +static int right_u, delta_right_u, right_v, delta_right_v; +static int left_R, delta_left_R, right_R, delta_right_R; +static int left_G, delta_left_G, right_G, delta_right_G; +static int left_B, delta_left_B, right_B, delta_right_B; + +#ifdef USE_NASM + +// NASM version (external): +#define shl10idiv i386_shl10idiv + +__inline int shl10idiv(int x, int y); + +#else + +__inline static int shl10idiv(int x, int y) +{ + __int64 bi=x; + bi<<=10; + return bi/y; +} + +#endif + +#if 0 + +// GNUC long long int version: + +__inline int shl10idiv(int x, int y) +{ + long long int bi=x; + bi<<=10; + return bi/y; +} + +#endif + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + +__inline static int RightSection_F(void) +{ + soft_vertex * v1 = right_array[ right_section ]; + soft_vertex * v2 = right_array[ right_section-1 ]; + + int height = v2->y - v1->y; + if(height == 0) return 0; + delta_right_x = (v2->x - v1->x) / height; + right_x = v1->x; + + right_section_height = height; + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static int LeftSection_F(void) +{ + soft_vertex * v1 = left_array[ left_section ]; + soft_vertex * v2 = left_array[ left_section-1 ]; + + int height = v2->y - v1->y; + if(height == 0) return 0; + delta_left_x = (v2->x - v1->x) / height; + left_x = v1->x; + + left_section_height = height; + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static BOOL NextRow_F(void) +{ + if(--left_section_height<=0) + { + if(--left_section <= 0) {return TRUE;} + if(LeftSection_F() <= 0) {return TRUE;} + } + else + { + left_x += delta_left_x; + } + + if(--right_section_height<=0) + { + if(--right_section<=0) {return TRUE;} + if(RightSection_F() <=0) {return TRUE;} + } + else + { + right_x += delta_right_x; + } + return FALSE; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static BOOL SetupSections_F(short x1, short y1, short x2, short y2, short x3, short y3) +{ + soft_vertex * v1, * v2, * v3; + int height,longest; + + v1 = vtx; v1->x=x1<<16;v1->y=y1; + v2 = vtx+1; v2->x=x2<<16;v2->y=y2; + v3 = vtx+2; v3->x=x3<<16;v3->y=y3; + + if(v1->y > v2->y) { soft_vertex * v = v1; v1 = v2; v2 = v; } + if(v1->y > v3->y) { soft_vertex * v = v1; v1 = v3; v3 = v; } + if(v2->y > v3->y) { soft_vertex * v = v2; v2 = v3; v3 = v; } + + height = v3->y - v1->y; + if(height == 0) {return FALSE;} + longest = (((v2->y - v1->y) << 16) / height) * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + if(longest == 0) {return FALSE;} + + if(longest < 0) + { + right_array[0] = v3; + right_array[1] = v2; + right_array[2] = v1; + right_section = 2; + left_array[0] = v3; + left_array[1] = v1; + left_section = 1; + + if(LeftSection_F() <= 0) return FALSE; + if(RightSection_F() <= 0) + { + right_section--; + if(RightSection_F() <= 0) return FALSE; + } + } + else + { + left_array[0] = v3; + left_array[1] = v2; + left_array[2] = v1; + left_section = 2; + right_array[0] = v3; + right_array[1] = v1; + right_section = 1; + + if(RightSection_F() <= 0) return FALSE; + if(LeftSection_F() <= 0) + { + left_section--; + if(LeftSection_F() <= 0) return FALSE; + } + } + + Ymin=v1->y; + Ymax=min(v3->y-1,drawH); + + return TRUE; +} + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + +__inline static int RightSection_G(void) +{ + soft_vertex * v1 = right_array[ right_section ]; + soft_vertex * v2 = right_array[ right_section-1 ]; + + int height = v2->y - v1->y; + if(height == 0) return 0; + delta_right_x = (v2->x - v1->x) / height; + right_x = v1->x; + + right_section_height = height; + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static int LeftSection_G(void) +{ + soft_vertex * v1 = left_array[ left_section ]; + soft_vertex * v2 = left_array[ left_section-1 ]; + + int height = v2->y - v1->y; + if(height == 0) return 0; + delta_left_x = (v2->x - v1->x) / height; + left_x = v1->x; + + delta_left_R = ((v2->R - v1->R)) / height; + left_R = v1->R; + delta_left_G = ((v2->G - v1->G)) / height; + left_G = v1->G; + delta_left_B = ((v2->B - v1->B)) / height; + left_B = v1->B; + + left_section_height = height; + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static BOOL NextRow_G(void) +{ + if(--left_section_height<=0) + { + if(--left_section <= 0) {return TRUE;} + if(LeftSection_G() <= 0) {return TRUE;} + } + else + { + left_x += delta_left_x; + left_R += delta_left_R; + left_G += delta_left_G; + left_B += delta_left_B; + } + + if(--right_section_height<=0) + { + if(--right_section<=0) {return TRUE;} + if(RightSection_G() <=0) {return TRUE;} + } + else + { + right_x += delta_right_x; + } + return FALSE; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static BOOL SetupSections_G(short x1,short y1,short x2,short y2,short x3,short y3,int32_t rgb1, int32_t rgb2, int32_t rgb3) +{ + soft_vertex * v1, * v2, * v3; + int height,longest,temp; + + v1 = vtx; v1->x=x1<<16;v1->y=y1; + v1->R=(rgb1) & 0x00ff0000; + v1->G=(rgb1<<8) & 0x00ff0000; + v1->B=(rgb1<<16) & 0x00ff0000; + v2 = vtx+1; v2->x=x2<<16;v2->y=y2; + v2->R=(rgb2) & 0x00ff0000; + v2->G=(rgb2<<8) & 0x00ff0000; + v2->B=(rgb2<<16) & 0x00ff0000; + v3 = vtx+2; v3->x=x3<<16;v3->y=y3; + v3->R=(rgb3) & 0x00ff0000; + v3->G=(rgb3<<8) & 0x00ff0000; + v3->B=(rgb3<<16) & 0x00ff0000; + + if(v1->y > v2->y) { soft_vertex * v = v1; v1 = v2; v2 = v; } + if(v1->y > v3->y) { soft_vertex * v = v1; v1 = v3; v3 = v; } + if(v2->y > v3->y) { soft_vertex * v = v2; v2 = v3; v3 = v; } + + height = v3->y - v1->y; + if(height == 0) {return FALSE;} + temp=(((v2->y - v1->y) << 16) / height); + longest = temp * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + if(longest == 0) {return FALSE;} + + if(longest < 0) + { + right_array[0] = v3; + right_array[1] = v2; + right_array[2] = v1; + right_section = 2; + left_array[0] = v3; + left_array[1] = v1; + left_section = 1; + + if(LeftSection_G() <= 0) return FALSE; + if(RightSection_G() <= 0) + { + right_section--; + if(RightSection_G() <= 0) return FALSE; + } + if(longest > -0x1000) longest = -0x1000; + } + else + { + left_array[0] = v3; + left_array[1] = v2; + left_array[2] = v1; + left_section = 2; + right_array[0] = v3; + right_array[1] = v1; + right_section = 1; + + if(RightSection_G() <= 0) return FALSE; + if(LeftSection_G() <= 0) + { + left_section--; + if(LeftSection_G() <= 0) return FALSE; + } + if(longest < 0x1000) longest = 0x1000; + } + + Ymin=v1->y; + Ymax=min(v3->y-1,drawH); + + delta_right_R=shl10idiv(temp*((v3->R - v1->R)>>10)+((v1->R - v2->R)<<6),longest); + delta_right_G=shl10idiv(temp*((v3->G - v1->G)>>10)+((v1->G - v2->G)<<6),longest); + delta_right_B=shl10idiv(temp*((v3->B - v1->B)>>10)+((v1->B - v2->B)<<6),longest); + + return TRUE; +} + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + +__inline static int RightSection_FT(void) +{ + soft_vertex * v1 = right_array[ right_section ]; + soft_vertex * v2 = right_array[ right_section-1 ]; + + int height = v2->y - v1->y; + if(height == 0) return 0; + delta_right_x = (v2->x - v1->x) / height; + right_x = v1->x; + + right_section_height = height; + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static int LeftSection_FT(void) +{ + soft_vertex * v1 = left_array[ left_section ]; + soft_vertex * v2 = left_array[ left_section-1 ]; + + int height = v2->y - v1->y; + if(height == 0) return 0; + delta_left_x = (v2->x - v1->x) / height; + left_x = v1->x; + + delta_left_u = ((v2->u - v1->u)) / height; + left_u = v1->u; + delta_left_v = ((v2->v - v1->v)) / height; + left_v = v1->v; + + left_section_height = height; + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static BOOL NextRow_FT(void) +{ + if(--left_section_height<=0) + { + if(--left_section <= 0) {return TRUE;} + if(LeftSection_FT() <= 0) {return TRUE;} + } + else + { + left_x += delta_left_x; + left_u += delta_left_u; + left_v += delta_left_v; + } + + if(--right_section_height<=0) + { + if(--right_section<=0) {return TRUE;} + if(RightSection_FT() <=0) {return TRUE;} + } + else + { + right_x += delta_right_x; + } + return FALSE; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static BOOL SetupSections_FT(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3) +{ + soft_vertex * v1, * v2, * v3; + int height,longest,temp; + + v1 = vtx; v1->x=x1<<16;v1->y=y1; + v1->u=tx1<<16;v1->v=ty1<<16; + v2 = vtx+1; v2->x=x2<<16;v2->y=y2; + v2->u=tx2<<16;v2->v=ty2<<16; + v3 = vtx+2; v3->x=x3<<16;v3->y=y3; + v3->u=tx3<<16;v3->v=ty3<<16; + + if(v1->y > v2->y) { soft_vertex * v = v1; v1 = v2; v2 = v; } + if(v1->y > v3->y) { soft_vertex * v = v1; v1 = v3; v3 = v; } + if(v2->y > v3->y) { soft_vertex * v = v2; v2 = v3; v3 = v; } + + height = v3->y - v1->y; + if(height == 0) {return FALSE;} + + temp=(((v2->y - v1->y) << 16) / height); + longest = temp * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + + if(longest == 0) {return FALSE;} + + if(longest < 0) + { + right_array[0] = v3; + right_array[1] = v2; + right_array[2] = v1; + right_section = 2; + left_array[0] = v3; + left_array[1] = v1; + left_section = 1; + + if(LeftSection_FT() <= 0) return FALSE; + if(RightSection_FT() <= 0) + { + right_section--; + if(RightSection_FT() <= 0) return FALSE; + } + if(longest > -0x1000) longest = -0x1000; + } + else + { + left_array[0] = v3; + left_array[1] = v2; + left_array[2] = v1; + left_section = 2; + right_array[0] = v3; + right_array[1] = v1; + right_section = 1; + + if(RightSection_FT() <= 0) return FALSE; + if(LeftSection_FT() <= 0) + { + left_section--; + if(LeftSection_FT() <= 0) return FALSE; + } + if(longest < 0x1000) longest = 0x1000; + } + + Ymin=v1->y; + Ymax=min(v3->y-1,drawH); + + delta_right_u=shl10idiv(temp*((v3->u - v1->u)>>10)+((v1->u - v2->u)<<6),longest); + delta_right_v=shl10idiv(temp*((v3->v - v1->v)>>10)+((v1->v - v2->v)<<6),longest); + +/* +Mmm... adjust neg tex deltas... will sometimes cause slight +texture distortions + + longest>>=16; + if(longest) + { + if(longest<0) longest=-longest; + if(delta_right_u<0) + delta_right_u-=delta_right_u/longest; + if(delta_right_v<0) + delta_right_v-=delta_right_v/longest; + } +*/ + + return TRUE; +} + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + +__inline static int RightSection_GT(void) +{ + soft_vertex * v1 = right_array[ right_section ]; + soft_vertex * v2 = right_array[ right_section-1 ]; + + int height = v2->y - v1->y; + if(height == 0) return 0; + delta_right_x = (v2->x - v1->x) / height; + right_x = v1->x; + + right_section_height = height; + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static int LeftSection_GT(void) +{ + soft_vertex * v1 = left_array[ left_section ]; + soft_vertex * v2 = left_array[ left_section-1 ]; + + int height = v2->y - v1->y; + if(height == 0) return 0; + delta_left_x = (v2->x - v1->x) / height; + left_x = v1->x; + + delta_left_u = ((v2->u - v1->u)) / height; + left_u = v1->u; + delta_left_v = ((v2->v - v1->v)) / height; + left_v = v1->v; + + delta_left_R = ((v2->R - v1->R)) / height; + left_R = v1->R; + delta_left_G = ((v2->G - v1->G)) / height; + left_G = v1->G; + delta_left_B = ((v2->B - v1->B)) / height; + left_B = v1->B; + + left_section_height = height; + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static BOOL NextRow_GT(void) +{ + if(--left_section_height<=0) + { + if(--left_section <= 0) {return TRUE;} + if(LeftSection_GT() <= 0) {return TRUE;} + } + else + { + left_x += delta_left_x; + left_u += delta_left_u; + left_v += delta_left_v; + left_R += delta_left_R; + left_G += delta_left_G; + left_B += delta_left_B; + } + + if(--right_section_height<=0) + { + if(--right_section<=0) {return TRUE;} + if(RightSection_GT() <=0) {return TRUE;} + } + else + { + right_x += delta_right_x; + } + return FALSE; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static BOOL SetupSections_GT(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, int32_t rgb1, int32_t rgb2, int32_t rgb3) +{ + soft_vertex * v1, * v2, * v3; + int height,longest,temp; + + v1 = vtx; v1->x=x1<<16;v1->y=y1; + v1->u=tx1<<16;v1->v=ty1<<16; + v1->R=(rgb1) & 0x00ff0000; + v1->G=(rgb1<<8) & 0x00ff0000; + v1->B=(rgb1<<16) & 0x00ff0000; + + v2 = vtx+1; v2->x=x2<<16;v2->y=y2; + v2->u=tx2<<16;v2->v=ty2<<16; + v2->R=(rgb2) & 0x00ff0000; + v2->G=(rgb2<<8) & 0x00ff0000; + v2->B=(rgb2<<16) & 0x00ff0000; + + v3 = vtx+2; v3->x=x3<<16;v3->y=y3; + v3->u=tx3<<16;v3->v=ty3<<16; + v3->R=(rgb3) & 0x00ff0000; + v3->G=(rgb3<<8) & 0x00ff0000; + v3->B=(rgb3<<16) & 0x00ff0000; + + if(v1->y > v2->y) { soft_vertex * v = v1; v1 = v2; v2 = v; } + if(v1->y > v3->y) { soft_vertex * v = v1; v1 = v3; v3 = v; } + if(v2->y > v3->y) { soft_vertex * v = v2; v2 = v3; v3 = v; } + + height = v3->y - v1->y; + if(height == 0) {return FALSE;} + + temp=(((v2->y - v1->y) << 16) / height); + longest = temp * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + + if(longest == 0) {return FALSE;} + + if(longest < 0) + { + right_array[0] = v3; + right_array[1] = v2; + right_array[2] = v1; + right_section = 2; + left_array[0] = v3; + left_array[1] = v1; + left_section = 1; + + if(LeftSection_GT() <= 0) return FALSE; + if(RightSection_GT() <= 0) + { + right_section--; + if(RightSection_GT() <= 0) return FALSE; + } + + if(longest > -0x1000) longest = -0x1000; + } + else + { + left_array[0] = v3; + left_array[1] = v2; + left_array[2] = v1; + left_section = 2; + right_array[0] = v3; + right_array[1] = v1; + right_section = 1; + + if(RightSection_GT() <= 0) return FALSE; + if(LeftSection_GT() <= 0) + { + left_section--; + if(LeftSection_GT() <= 0) return FALSE; + } + if(longest < 0x1000) longest = 0x1000; + } + + Ymin=v1->y; + Ymax=min(v3->y-1,drawH); + + delta_right_R=shl10idiv(temp*((v3->R - v1->R)>>10)+((v1->R - v2->R)<<6),longest); + delta_right_G=shl10idiv(temp*((v3->G - v1->G)>>10)+((v1->G - v2->G)<<6),longest); + delta_right_B=shl10idiv(temp*((v3->B - v1->B)>>10)+((v1->B - v2->B)<<6),longest); + + delta_right_u=shl10idiv(temp*((v3->u - v1->u)>>10)+((v1->u - v2->u)<<6),longest); + delta_right_v=shl10idiv(temp*((v3->v - v1->v)>>10)+((v1->v - v2->v)<<6),longest); + + +/* +Mmm... adjust neg tex deltas... will sometimes cause slight +texture distortions + longest>>=16; + if(longest) + { + if(longest<0) longest=-longest; + if(delta_right_u<0) + delta_right_u-=delta_right_u/longest; + if(delta_right_v<0) + delta_right_v-=delta_right_v/longest; + } +*/ + + + return TRUE; +} + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + +__inline static int RightSection_F4(void) +{ + soft_vertex * v1 = right_array[ right_section ]; + soft_vertex * v2 = right_array[ right_section-1 ]; + + int height = v2->y - v1->y; + right_section_height = height; + right_x = v1->x; + if(height == 0) + { + return 0; + } + delta_right_x = (v2->x - v1->x) / height; + + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static int LeftSection_F4(void) +{ + soft_vertex * v1 = left_array[ left_section ]; + soft_vertex * v2 = left_array[ left_section-1 ]; + + int height = v2->y - v1->y; + left_section_height = height; + left_x = v1->x; + if(height == 0) + { + return 0; + } + delta_left_x = (v2->x - v1->x) / height; + + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static BOOL NextRow_F4(void) +{ + if(--left_section_height<=0) + { + if(--left_section > 0) + while(LeftSection_F4()<=0) + { + if(--left_section <= 0) break; + } + } + else + { + left_x += delta_left_x; + } + + if(--right_section_height<=0) + { + if(--right_section > 0) + while(RightSection_F4()<=0) + { + if(--right_section<=0) break; + } + } + else + { + right_x += delta_right_x; + } + return FALSE; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static BOOL SetupSections_F4(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4) +{ + soft_vertex * v1, * v2, * v3, * v4; + int height,width,longest1,longest2; + + v1 = vtx; v1->x=x1<<16;v1->y=y1; + v2 = vtx+1; v2->x=x2<<16;v2->y=y2; + v3 = vtx+2; v3->x=x3<<16;v3->y=y3; + v4 = vtx+3; v4->x=x4<<16;v4->y=y4; + + if(v1->y > v2->y) { soft_vertex * v = v1; v1 = v2; v2 = v; } + if(v1->y > v3->y) { soft_vertex * v = v1; v1 = v3; v3 = v; } + if(v1->y > v4->y) { soft_vertex * v = v1; v1 = v4; v4 = v; } + if(v2->y > v3->y) { soft_vertex * v = v2; v2 = v3; v3 = v; } + if(v2->y > v4->y) { soft_vertex * v = v2; v2 = v4; v4 = v; } + if(v3->y > v4->y) { soft_vertex * v = v3; v3 = v4; v4 = v; } + + height = v4->y - v1->y; if(height == 0) height =1; + width = (v4->x - v1->x)>>16; + longest1 = (((v2->y - v1->y) << 16) / height) * width + (v1->x - v2->x); + longest2 = (((v3->y - v1->y) << 16) / height) * width + (v1->x - v3->x); + + if(longest1 < 0) // 2 is right + { + if(longest2 < 0) // 3 is right + { + left_array[0] = v4; + left_array[1] = v1; + left_section = 1; + + height = v3->y - v1->y; if(height == 0) height=1; + longest1 = (((v2->y - v1->y) << 16) / height) * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + if(longest1 >= 0) + { + right_array[0] = v4; // 1 + right_array[1] = v3; // 3 + right_array[2] = v1; // 4 + right_section = 2; + } + else + { + height = v4->y - v2->y; if(height == 0) height=1; + longest1 = (((v3->y - v2->y) << 16) / height) * ((v4->x - v2->x)>>16) + (v2->x - v3->x); + if(longest1 >= 0) + { + right_array[0] = v4; // 1 + right_array[1] = v2; // 2 + right_array[2] = v1; // 4 + right_section = 2; + } + else + { + right_array[0] = v4; // 1 + right_array[1] = v3; // 2 + right_array[2] = v2; // 3 + right_array[3] = v1; // 4 + right_section = 3; + } + } + } + else + { + left_array[0] = v4; + left_array[1] = v3; // 1 + left_array[2] = v1; // 2 + left_section = 2; // 3 + right_array[0] = v4; // 4 + right_array[1] = v2; + right_array[2] = v1; + right_section = 2; + } + } + else + { + if(longest2 < 0) + { + left_array[0] = v4; // 1 + left_array[1] = v2; // 2 + left_array[2] = v1; // 3 + left_section = 2; // 4 + right_array[0] = v4; + right_array[1] = v3; + right_array[2] = v1; + right_section = 2; + } + else + { + right_array[0] = v4; + right_array[1] = v1; + right_section = 1; + + height = v3->y - v1->y; if(height == 0) height=1; + longest1 = (((v2->y - v1->y) << 16) / height) * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + if(longest1<0) + { + left_array[0] = v4; // 1 + left_array[1] = v3; // 3 + left_array[2] = v1; // 4 + left_section = 2; + } + else + { + height = v4->y - v2->y; if(height == 0) height=1; + longest1 = (((v3->y - v2->y) << 16) / height) * ((v4->x - v2->x)>>16) + (v2->x - v3->x); + if(longest1<0) + { + left_array[0] = v4; // 1 + left_array[1] = v2; // 2 + left_array[2] = v1; // 4 + left_section = 2; + } + else + { + left_array[0] = v4; // 1 + left_array[1] = v3; // 2 + left_array[2] = v2; // 3 + left_array[3] = v1; // 4 + left_section = 3; + } + } + } + } + + while(LeftSection_F4()<=0) + { + if(--left_section <= 0) break; + } + + while(RightSection_F4()<=0) + { + if(--right_section <= 0) break; + } + + Ymin=v1->y; + Ymax=min(v4->y-1,drawH); + + return TRUE; +} + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + +__inline static int RightSection_FT4(void) +{ + soft_vertex * v1 = right_array[ right_section ]; + soft_vertex * v2 = right_array[ right_section-1 ]; + + int height = v2->y - v1->y; + right_section_height = height; + right_x = v1->x; + right_u = v1->u; + right_v = v1->v; + if(height == 0) + { + return 0; + } + delta_right_x = (v2->x - v1->x) / height; + delta_right_u = (v2->u - v1->u) / height; + delta_right_v = (v2->v - v1->v) / height; + + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static int LeftSection_FT4(void) +{ + soft_vertex * v1 = left_array[ left_section ]; + soft_vertex * v2 = left_array[ left_section-1 ]; + + int height = v2->y - v1->y; + left_section_height = height; + left_x = v1->x; + left_u = v1->u; + left_v = v1->v; + if(height == 0) + { + return 0; + } + delta_left_x = (v2->x - v1->x) / height; + delta_left_u = (v2->u - v1->u) / height; + delta_left_v = (v2->v - v1->v) / height; + + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static BOOL NextRow_FT4(void) +{ + if(--left_section_height<=0) + { + if(--left_section > 0) + while(LeftSection_FT4()<=0) + { + if(--left_section <= 0) break; + } + } + else + { + left_x += delta_left_x; + left_u += delta_left_u; + left_v += delta_left_v; + } + + if(--right_section_height<=0) + { + if(--right_section > 0) + while(RightSection_FT4()<=0) + { + if(--right_section<=0) break; + } + } + else + { + right_x += delta_right_x; + right_u += delta_right_u; + right_v += delta_right_v; + } + return FALSE; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static BOOL SetupSections_FT4(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4) +{ + soft_vertex * v1, * v2, * v3, * v4; + int height,width,longest1,longest2; + + v1 = vtx; v1->x=x1<<16;v1->y=y1; + v1->u=tx1<<16;v1->v=ty1<<16; + + v2 = vtx+1; v2->x=x2<<16;v2->y=y2; + v2->u=tx2<<16;v2->v=ty2<<16; + + v3 = vtx+2; v3->x=x3<<16;v3->y=y3; + v3->u=tx3<<16;v3->v=ty3<<16; + + v4 = vtx+3; v4->x=x4<<16;v4->y=y4; + v4->u=tx4<<16;v4->v=ty4<<16; + + if(v1->y > v2->y) { soft_vertex * v = v1; v1 = v2; v2 = v; } + if(v1->y > v3->y) { soft_vertex * v = v1; v1 = v3; v3 = v; } + if(v1->y > v4->y) { soft_vertex * v = v1; v1 = v4; v4 = v; } + if(v2->y > v3->y) { soft_vertex * v = v2; v2 = v3; v3 = v; } + if(v2->y > v4->y) { soft_vertex * v = v2; v2 = v4; v4 = v; } + if(v3->y > v4->y) { soft_vertex * v = v3; v3 = v4; v4 = v; } + + height = v4->y - v1->y; if(height == 0) height =1; + width = (v4->x - v1->x)>>16; + longest1 = (((v2->y - v1->y) << 16) / height) * width + (v1->x - v2->x); + longest2 = (((v3->y - v1->y) << 16) / height) * width + (v1->x - v3->x); + + if(longest1 < 0) // 2 is right + { + if(longest2 < 0) // 3 is right + { + left_array[0] = v4; + left_array[1] = v1; + left_section = 1; + + height = v3->y - v1->y; if(height == 0) height=1; + longest1 = (((v2->y - v1->y) << 16) / height) * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + if(longest1 >= 0) + { + right_array[0] = v4; // 1 + right_array[1] = v3; // 3 + right_array[2] = v1; // 4 + right_section = 2; + } + else + { + height = v4->y - v2->y; if(height == 0) height=1; + longest1 = (((v3->y - v2->y) << 16) / height) * ((v4->x - v2->x)>>16) + (v2->x - v3->x); + if(longest1 >= 0) + { + right_array[0] = v4; // 1 + right_array[1] = v2; // 2 + right_array[2] = v1; // 4 + right_section = 2; + } + else + { + right_array[0] = v4; // 1 + right_array[1] = v3; // 2 + right_array[2] = v2; // 3 + right_array[3] = v1; // 4 + right_section = 3; + } + } + } + else + { + left_array[0] = v4; + left_array[1] = v3; // 1 + left_array[2] = v1; // 2 + left_section = 2; // 3 + right_array[0] = v4; // 4 + right_array[1] = v2; + right_array[2] = v1; + right_section = 2; + } + } + else + { + if(longest2 < 0) + { + left_array[0] = v4; // 1 + left_array[1] = v2; // 2 + left_array[2] = v1; // 3 + left_section = 2; // 4 + right_array[0] = v4; + right_array[1] = v3; + right_array[2] = v1; + right_section = 2; + } + else + { + right_array[0] = v4; + right_array[1] = v1; + right_section = 1; + + height = v3->y - v1->y; if(height == 0) height=1; + longest1 = (((v2->y - v1->y) << 16) / height) * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + if(longest1<0) + { + left_array[0] = v4; // 1 + left_array[1] = v3; // 3 + left_array[2] = v1; // 4 + left_section = 2; + } + else + { + height = v4->y - v2->y; if(height == 0) height=1; + longest1 = (((v3->y - v2->y) << 16) / height) * ((v4->x - v2->x)>>16) + (v2->x - v3->x); + if(longest1<0) + { + left_array[0] = v4; // 1 + left_array[1] = v2; // 2 + left_array[2] = v1; // 4 + left_section = 2; + } + else + { + left_array[0] = v4; // 1 + left_array[1] = v3; // 2 + left_array[2] = v2; // 3 + left_array[3] = v1; // 4 + left_section = 3; + } + } + } + } + + while(LeftSection_FT4()<=0) + { + if(--left_section <= 0) break; + } + + while(RightSection_FT4()<=0) + { + if(--right_section <= 0) break; + } + + Ymin=v1->y; + Ymax=min(v4->y-1,drawH); + + return TRUE; +} + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + +__inline static int RightSection_GT4(void) +{ + soft_vertex * v1 = right_array[ right_section ]; + soft_vertex * v2 = right_array[ right_section-1 ]; + + int height = v2->y - v1->y; + right_section_height = height; + right_x = v1->x; + right_u = v1->u; + right_v = v1->v; + right_R = v1->R; + right_G = v1->G; + right_B = v1->B; + + if(height == 0) + { + return 0; + } + delta_right_x = (v2->x - v1->x) / height; + delta_right_u = (v2->u - v1->u) / height; + delta_right_v = (v2->v - v1->v) / height; + delta_right_R = (v2->R - v1->R) / height; + delta_right_G = (v2->G - v1->G) / height; + delta_right_B = (v2->B - v1->B) / height; + + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static int LeftSection_GT4(void) +{ + soft_vertex * v1 = left_array[ left_section ]; + soft_vertex * v2 = left_array[ left_section-1 ]; + + int height = v2->y - v1->y; + left_section_height = height; + left_x = v1->x; + left_u = v1->u; + left_v = v1->v; + left_R = v1->R; + left_G = v1->G; + left_B = v1->B; + + if(height == 0) + { + return 0; + } + delta_left_x = (v2->x - v1->x) / height; + delta_left_u = (v2->u - v1->u) / height; + delta_left_v = (v2->v - v1->v) / height; + delta_left_R = (v2->R - v1->R) / height; + delta_left_G = (v2->G - v1->G) / height; + delta_left_B = (v2->B - v1->B) / height; + + return height; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static BOOL NextRow_GT4(void) +{ + if(--left_section_height<=0) + { + if(--left_section > 0) + while(LeftSection_GT4()<=0) + { + if(--left_section <= 0) break; + } + } + else + { + left_x += delta_left_x; + left_u += delta_left_u; + left_v += delta_left_v; + left_R += delta_left_R; + left_G += delta_left_G; + left_B += delta_left_B; + } + + if(--right_section_height<=0) + { + if(--right_section > 0) + while(RightSection_GT4()<=0) + { + if(--right_section<=0) break; + } + } + else + { + right_x += delta_right_x; + right_u += delta_right_u; + right_v += delta_right_v; + right_R += delta_right_R; + right_G += delta_right_G; + right_B += delta_right_B; + } + return FALSE; +} + +//////////////////////////////////////////////////////////////////////// + +__inline static BOOL SetupSections_GT4(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,int32_t rgb1,int32_t rgb2,int32_t rgb3,int32_t rgb4) +{ + soft_vertex * v1, * v2, * v3, * v4; + int height,width,longest1,longest2; + + v1 = vtx; v1->x=x1<<16;v1->y=y1; + v1->u=tx1<<16;v1->v=ty1<<16; + v1->R=(rgb1) & 0x00ff0000; + v1->G=(rgb1<<8) & 0x00ff0000; + v1->B=(rgb1<<16) & 0x00ff0000; + + v2 = vtx+1; v2->x=x2<<16;v2->y=y2; + v2->u=tx2<<16;v2->v=ty2<<16; + v2->R=(rgb2) & 0x00ff0000; + v2->G=(rgb2<<8) & 0x00ff0000; + v2->B=(rgb2<<16) & 0x00ff0000; + + v3 = vtx+2; v3->x=x3<<16;v3->y=y3; + v3->u=tx3<<16;v3->v=ty3<<16; + v3->R=(rgb3) & 0x00ff0000; + v3->G=(rgb3<<8) & 0x00ff0000; + v3->B=(rgb3<<16) & 0x00ff0000; + + v4 = vtx+3; v4->x=x4<<16;v4->y=y4; + v4->u=tx4<<16;v4->v=ty4<<16; + v4->R=(rgb4) & 0x00ff0000; + v4->G=(rgb4<<8) & 0x00ff0000; + v4->B=(rgb4<<16) & 0x00ff0000; + + if(v1->y > v2->y) { soft_vertex * v = v1; v1 = v2; v2 = v; } + if(v1->y > v3->y) { soft_vertex * v = v1; v1 = v3; v3 = v; } + if(v1->y > v4->y) { soft_vertex * v = v1; v1 = v4; v4 = v; } + if(v2->y > v3->y) { soft_vertex * v = v2; v2 = v3; v3 = v; } + if(v2->y > v4->y) { soft_vertex * v = v2; v2 = v4; v4 = v; } + if(v3->y > v4->y) { soft_vertex * v = v3; v3 = v4; v4 = v; } + + height = v4->y - v1->y; if(height == 0) height =1; + width = (v4->x - v1->x)>>16; + longest1 = (((v2->y - v1->y) << 16) / height) * width + (v1->x - v2->x); + longest2 = (((v3->y - v1->y) << 16) / height) * width + (v1->x - v3->x); + + if(longest1 < 0) // 2 is right + { + if(longest2 < 0) // 3 is right + { + left_array[0] = v4; + left_array[1] = v1; + left_section = 1; + + height = v3->y - v1->y; if(height == 0) height=1; + longest1 = (((v2->y - v1->y) << 16) / height) * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + if(longest1 >= 0) + { + right_array[0] = v4; // 1 + right_array[1] = v3; // 3 + right_array[2] = v1; // 4 + right_section = 2; + } + else + { + height = v4->y - v2->y; if(height == 0) height=1; + longest1 = (((v3->y - v2->y) << 16) / height) * ((v4->x - v2->x)>>16) + (v2->x - v3->x); + if(longest1 >= 0) + { + right_array[0] = v4; // 1 + right_array[1] = v2; // 2 + right_array[2] = v1; // 4 + right_section = 2; + } + else + { + right_array[0] = v4; // 1 + right_array[1] = v3; // 2 + right_array[2] = v2; // 3 + right_array[3] = v1; // 4 + right_section = 3; + } + } + } + else + { + left_array[0] = v4; + left_array[1] = v3; // 1 + left_array[2] = v1; // 2 + left_section = 2; // 3 + right_array[0] = v4; // 4 + right_array[1] = v2; + right_array[2] = v1; + right_section = 2; + } + } + else + { + if(longest2 < 0) + { + left_array[0] = v4; // 1 + left_array[1] = v2; // 2 + left_array[2] = v1; // 3 + left_section = 2; // 4 + right_array[0] = v4; + right_array[1] = v3; + right_array[2] = v1; + right_section = 2; + } + else + { + right_array[0] = v4; + right_array[1] = v1; + right_section = 1; + + height = v3->y - v1->y; if(height == 0) height=1; + longest1 = (((v2->y - v1->y) << 16) / height) * ((v3->x - v1->x)>>16) + (v1->x - v2->x); + if(longest1<0) + { + left_array[0] = v4; // 1 + left_array[1] = v3; // 3 + left_array[2] = v1; // 4 + left_section = 2; + } + else + { + height = v4->y - v2->y; if(height == 0) height=1; + longest1 = (((v3->y - v2->y) << 16) / height) * ((v4->x - v2->x)>>16) + (v2->x - v3->x); + if(longest1<0) + { + left_array[0] = v4; // 1 + left_array[1] = v2; // 2 + left_array[2] = v1; // 4 + left_section = 2; + } + else + { + left_array[0] = v4; // 1 + left_array[1] = v3; // 2 + left_array[2] = v2; // 3 + left_array[3] = v1; // 4 + left_section = 3; + } + } + } + } + + while(LeftSection_GT4()<=0) + { + if(--left_section <= 0) break; + } + + while(RightSection_GT4()<=0) + { + if(--right_section <= 0) break; + } + + Ymin=v1->y; + Ymax=min(v4->y-1,drawH); + + return TRUE; +} + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +// POLY FUNCS +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////// +// POLY 3/4 FLAT SHADED +//////////////////////////////////////////////////////////////////////// + +__inline static void drawPoly3Fi(short x1,short y1,short x2,short y2,short x3,short y3,int32_t rgb) +{ + int i,j,xmin,xmax,ymin,ymax; + unsigned short color;uint32_t lcolor; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_F(x1,y1,x2,y2,x3,y3)) return; + + ymax=Ymax; + + color = ((rgb & 0x00f80000)>>9) | ((rgb & 0x0000f800)>>6) | ((rgb & 0x000000f8)>>3); + lcolor=lSetMask|(((uint32_t)(color))<<16)|color; + + for(ymin=Ymin;ymin> 16; if(drawX>xmin) xmin=drawX; + xmax=(right_x >> 16)-1; if(drawW> 16; if(drawX>xmin) xmin=drawX; + xmax=(right_x >> 16)-1; if(drawWdrawW && lx1>drawW && lx2>drawW && lx3>drawW) return; + if(ly0>drawH && ly1>drawH && ly2>drawH && ly3>drawH) return; + if(lx0=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_F4(lx0,ly0,lx1,ly1,lx2,ly2,lx3,ly3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin>9) | ((rgb & 0x0000f800)>>6) | ((rgb & 0x000000f8)>>3); + lcolor= lSetMask|(((uint32_t)(color))<<16)|color; + +#ifdef FASTSOLID + + if(!bCheckMask && !DrawSemiTrans) + { + color |=sSetMask; + for (i=ymin;i<=ymax;i++) + { + xmin=left_x >> 16; if(drawX>xmin) xmin=drawX; + xmax=(right_x >> 16)-1; if(drawW> 16; if(drawX>xmin) xmin=drawX; + xmax=(right_x >> 16)-1; if(drawWdrawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16); + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; + __W(GetTextureTransColG32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16); + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; + __W( + GetTextureTransColG32(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TEx4_IL(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3,short clX, short clY) +{ + int i,j,xmin,xmax,ymin,ymax,n_xi,n_yi,TXV; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,XAdjust; + int32_t clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16); + + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + XAdjust=((posX+difX)>>16); + + TXV=(posY+difY)>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + __W(GetTextureTransColG32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16); + + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + XAdjust=((posX+difX)>>16); + + TXV=(posY+difY)>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; +__W( + + GetTextureTransColG32(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TEx4_TW(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3,short clX, short clY) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,XAdjust; + int32_t clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin>1); + + difX=delta_right_u;difX2=difX<<1; + difY=delta_right_v;difY2=difY<<1; + +#ifdef FASTSOLID + + if(!bCheckMask && !DrawSemiTrans) + { + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16);//-1; //!!!!!!!!!!!!!!!! + if(xmax>xmin) xmax--; + + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16)%TWin.Position.x1; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; +__W( + GetTextureTransColG32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16)%TWin.Position.x1; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; +__W( + GetTextureTransColG32(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +#ifdef POLYQUAD3 + +void drawPoly4TEx4_TRI(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + drawPoly3TEx4(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + clX,clY); + drawPoly3TEx4(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + clX,clY); +} + +#endif + +// more exact: + +void drawPoly4TEx4(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY,YAdjust,clutP,XAdjust; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16); + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; +__W( + GetTextureTransColG32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16); + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; +__W( + GetTextureTransColG32(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TEx4_IL(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + int32_t num; + int32_t i,j=0,xmin,xmax,ymin,ymax,n_xi,n_yi,TXV; + int32_t difX, difY, difX2, difY2; + int32_t posX=0,posY=0,YAdjust,clutP,XAdjust; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16); + + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + XAdjust=((posX+difX)>>16); + + TXV=(posY+difY)>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; +__W( + GetTextureTransColG32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + posX+=difX2; + posY+=difY2; + } + + if(j==xmax) + { + XAdjust=(posX>>16); + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + + } + if(NextRow_FT4()) return; + } +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16); + + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + XAdjust=((posX+difX)>>16); + + TXV=(posY+difY)>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; +__W( + GetTextureTransColG32(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TEx4_TW(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY,YAdjust,clutP,XAdjust; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin>1); + +#ifdef FASTSOLID + + if(!bCheckMask && !DrawSemiTrans) + { + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16)%TWin.Position.x1; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; +__W( + GetTextureTransColG32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16)%TWin.Position.x1; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; +__W( + GetTextureTransColG32(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TEx4_TW_S(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY,YAdjust,clutP,XAdjust; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin>1); + +#ifdef FASTSOLID + + if(!bCheckMask && !DrawSemiTrans) + { + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16)%TWin.Position.x1; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; +__W( + GetTextureTransColG32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16)%TWin.Position.x1; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; +__W( + GetTextureTransColG32_SPR(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + XAdjust=(posX>>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColG_SPR(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } +} +//////////////////////////////////////////////////////////////////////// +// POLY 3 F-SHADED TEX PAL 8 +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TEx8(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3,short clX, short clY) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + ((posX+difX)>>16)]; + __W( + GetTextureTransColG32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + + if(j==xmax) + { + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + ((posX+difX)>>16)]; + __W( + GetTextureTransColG32(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + + if(j==xmax) + { + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + + } + if(NextRow_FT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TEx8_IL(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3,short clX, short clY) +{ + int i,j,xmin,xmax,ymin,ymax,n_xi,n_yi,TXV,TXU; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + TXU=(posX+difX)>>16; + TXV=(posY+difY)>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; +__W( + GetTextureTransColG32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + + if(j==xmax) + { + TXU=posX>>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + TXU=(posX+difX)>>16; + TXV=(posY+difY)>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; +__W( + GetTextureTransColG32(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + + if(j==xmax) + { + TXU=posX>>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + + } + if(NextRow_FT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TEx8_TW(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3,short clX, short clY) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16);//-1; //!!!!!!!!!!!!!!!! + if(xmax>xmin) xmax--; + + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(((posX+difX)>>16)%TWin.Position.x1)]; + __W( + GetTextureTransColG32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + + if(j==xmax) + { + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(((posX+difX)>>16)%TWin.Position.x1)]; + __W( + GetTextureTransColG32(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + + if(j==xmax) + { + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + + } + if(NextRow_FT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +#ifdef POLYQUAD3 + +void drawPoly4TEx8_TRI(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + drawPoly3TEx8(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + clX,clY); + + drawPoly3TEx8(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + clX,clY); +} + +#endif + +// more exact: + +void drawPoly4TEx8(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + ((posX+difX)>>16)]; + __W(GetTextureTransColG32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + ((posX+difX)>>16)]; + __W(GetTextureTransColG32(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TEx8_IL(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax,n_xi,n_yi,TXV,TXU; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + TXU=(posX+difX)>>16; + TXV=(posY+difY)>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + __W(GetTextureTransColG32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + TXU=posX>>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + TXU=(posX+difX)>>16; + TXV=(posY+difY)>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + __W(GetTextureTransColG32(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + TXU=posX>>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TEx8_TW(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(((posX+difX)>>16)%TWin.Position.x1)]; + __W(GetTextureTransColG32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + tC1 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(((posX+difX)>>16)%TWin.Position.x1)]; + __W(GetTextureTransColG32(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + tC1 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + GetTextureTransColG(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TEx8_TW_S(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4,short clX, short clY) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(((posX+difX)>>16)%TWin.Position.x1)]; + __W(GetTextureTransColG32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + tC1 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + GetTextureTransColG_S(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(((posX+difX)>>16)%TWin.Position.x1)]; + __W(GetTextureTransColG32_SPR(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16)); + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + { + tC1 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + GetTextureTransColG_SPR(&psxVuw[(i<<10)+j],GETLE16(&psxVuw[clutP+tC1])); + } + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// +// POLY 3 F-SHADED TEX 15 BIT +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TD(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16)+GlobalTextAddrY)<<10)+((posX+difX)>>16)+GlobalTextAddrX]))<<16)| + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+((posX)>>16)+GlobalTextAddrX]))); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX])); + } + if(NextRow_FT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16)+GlobalTextAddrY)<<10)+((posX+difX)>>16)+GlobalTextAddrX]))<<16)| + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+((posX)>>16)+GlobalTextAddrX]))); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX])); + } + if(NextRow_FT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TD_TW(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX+difX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))<<16)| + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0])); + } + if(NextRow_FT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + + if(xmin>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX+difX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))<<16)| + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0])); + } + if(NextRow_FT()) + { + return; + } + } +} + + +//////////////////////////////////////////////////////////////////////// + +#ifdef POLYQUAD3 + +void drawPoly4TD_TRI(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4) +{ + drawPoly3TD(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4); + drawPoly3TD(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4); +} + +#endif + +// more exact: + +void drawPoly4TD(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)+GlobalTextAddrY)<<10)+((posX+difX)>>16)+GlobalTextAddrX]))<<16)| + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+((posX)>>16)+GlobalTextAddrX]))); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX])); + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)+GlobalTextAddrY)<<10)+((posX+difX)>>16)+GlobalTextAddrX]))<<16)| + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+((posX)>>16)+GlobalTextAddrX]))); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX])); + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TD_TW(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX+difX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))<<16)| + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY)<<10)+TWin.Position.y0+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0])); + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX+difX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))<<16)| + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0])); + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TD_TW_S(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_FT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX+difX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))<<16)| + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY)<<10)+TWin.Position.y0+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0])); + } + if(NextRow_FT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + if(xmin>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX+difX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))<<16)| + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))); + + posX+=difX2; + posY+=difY2; + } + if(j==xmax) + GetTextureTransColG_SPR(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0])); + } + if(NextRow_FT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// +// POLY 3/4 G-SHADED +//////////////////////////////////////////////////////////////////////// + +__inline static void drawPoly3Gi(short x1,short y1,short x2,short y2,short x3,short y3,int32_t rgb1, int32_t rgb2, int32_t rgb3) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_G(x1,y1,x2,y2,x3,y3,rgb1,rgb2,rgb3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1;if(drawW=xmin) + { + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>3)&0x001f0000)| + (((cR1) >> 9)&0x7c00)|(((cG1) >> 14)&0x03e0)|(((cB1) >> 19)&0x001f))|lSetMask)); + + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + PUTLE16(&psxVuw[(i<<10)+j], (((cR1 >> 9)&0x7c00)|((cG1 >> 14)&0x03e0)|((cB1 >> 19)&0x001f))|sSetMask); + } + if(NextRow_G()) return; + } + return; + } + +#endif + + if(iDither==2) + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1;if(drawW=xmin) + { + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16),(cG1>>16),(cR1>>16)); + + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_G()) return; + } + else + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1;if(drawW=xmin) + { + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin> 9)&0x7c00)|((cG1 >> 14)&0x03e0)|((cB1 >> 19)&0x001f)); + + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_G()) return; + } + +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3G(int32_t rgb1, int32_t rgb2, int32_t rgb3) +{ + drawPoly3Gi(lx0,ly0,lx1,ly1,lx2,ly2,rgb1,rgb2,rgb3); +} + +// draw two g-shaded tris for right psx shading emulation + +void drawPoly4G(int32_t rgb1, int32_t rgb2, int32_t rgb3, int32_t rgb4) +{ + drawPoly3Gi(lx1,ly1,lx3,ly3,lx2,ly2, + rgb2,rgb4,rgb3); + drawPoly3Gi(lx0,ly0,lx1,ly1,lx2,ly2, + rgb1,rgb2,rgb3); +} + +//////////////////////////////////////////////////////////////////////// +// POLY 3/4 G-SHADED TEX PAL4 +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TGEx4(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short clX, short clY,int32_t col1, int32_t col2, int32_t col3) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,clutP,XAdjust; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3,col1,col2,col3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=((right_x) >> 16)-1; //!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16); + tC1 = psxVub[((posY>>5)&0xFFFFF800)+YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16); + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; + + __W(GetTextureTransColGX32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16, + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000))); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + } + if(NextRow_GT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + if(iDither) + GetTextureTransColGX_Dither(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TGEx4_IL(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short clX, short clY,int32_t col1, int32_t col2, int32_t col3) +{ + int i,j,xmin,xmax,ymin,ymax,n_xi,n_yi,TXV; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,clutP,XAdjust; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3,col1,col2,col3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=((right_x) >> 16)-1; //!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16); + + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + XAdjust=((posX+difX)>>16); + + TXV=(posY+difY)>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + __W(GetTextureTransColGX32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16, + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000))); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + } + if(NextRow_GT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16); + + TXV=posY>>16; + n_xi = ( ( XAdjust >> 2 ) & ~0x3c ) + ( ( TXV << 2 ) & 0x3c ); + n_yi = ( TXV & ~0xf ) + ( ( XAdjust >> 4 ) & 0xf ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((XAdjust & 0x03)<<2)) & 0x0f ; + + if(iDither) + GetTextureTransColGX_Dither(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TGEx4_TW(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short clX, short clY,int32_t col1, int32_t col2, int32_t col3) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,clutP,XAdjust; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3,col1,col2,col3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin>1); + + difR=delta_right_R; + difG=delta_right_G; + difB=delta_right_B; + difR2=difR<<1; + difG2=difG<<1; + difB2=difB<<1; + + difX=delta_right_u;difX2=difX<<1; + difY=delta_right_v;difY2=difY<<1; + +#ifdef FASTSOLID + + if(!bCheckMask && !DrawSemiTrans && !iDither) + { + for (i=ymin;i<=ymax;i++) + { + xmin=((left_x) >> 16); + xmax=((right_x) >> 16)-1; //!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16)%TWin.Position.x1; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; + __W(GetTextureTransColGX32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16, + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000))); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + { + XAdjust=(posX>>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + } + if(NextRow_GT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16)%TWin.Position.x1; + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + if(iDither) + GetTextureTransColGX_Dither(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +// note: the psx is doing g-shaded quads as two g-shaded tris, +// like the following func... sadly texturing is not 100% +// correct that way, so small texture distortions can +// happen... + +void drawPoly4TGEx4_TRI_IL(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, + short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, + short clX, short clY, + int32_t col1, int32_t col2, int32_t col3, int32_t col4) +{ + drawPoly3TGEx4_IL(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + clX,clY, + col2,col4,col3); + drawPoly3TGEx4_IL(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + clX,clY, + col1,col2,col3); +} + +#ifdef POLYQUAD3GT + +void drawPoly4TGEx4_TRI(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, + short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, + short clX, short clY, + int32_t col1, int32_t col2, int32_t col3, int32_t col4) +{ + drawPoly3TGEx4(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + clX,clY, + col2,col4,col3); + drawPoly3TGEx4(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + clX,clY, + col1,col2,col3); +} + +#endif + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TGEx4(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, + short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, + short clX, short clY, + int32_t col1, int32_t col2, int32_t col4, int32_t col3) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY,YAdjust,clutP,XAdjust; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4,col1,col2,col3,col4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + cR1=left_R; + cG1=left_G; + cB1=left_B; + difR=(right_R-cR1)/num; + difG=(right_G-cG1)/num; + difB=(right_B-cB1)/num; + difR2=difR<<1; + difG2=difG<<1; + difB2=difB<<1; + + if(xmin>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + XAdjust=((posX+difX)>>16); + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC2=(tC2>>((XAdjust&1)<<2))&0xf; + + __W(GetTextureTransColGX32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16, + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000))); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + { + XAdjust=(posX>>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + } + if(NextRow_GT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + cR1=left_R; + cG1=left_G; + cB1=left_B; + difR=(right_R-cR1)/num; + difG=(right_G-cG1)/num; + difB=(right_B-cB1)/num; + difR2=difR<<1; + difG2=difG<<1; + difB2=difB<<1; + + if(xmin>16); + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (XAdjust>>1)]; + tC1=(tC1>>((XAdjust&1)<<2))&0xf; + if(iDither) + GetTextureTransColGX_Dither(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TGEx4_TW(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, + short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, + short clX, short clY, + int32_t col1, int32_t col2, int32_t col3, int32_t col4) +{ + drawPoly3TGEx4_TW(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + clX,clY, + col2,col4,col3); + + drawPoly3TGEx4_TW(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + clX,clY, + col1,col2,col3); +} + +//////////////////////////////////////////////////////////////////////// +// POLY 3/4 G-SHADED TEX PAL8 +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TGEx8(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short clX, short clY,int32_t col1, int32_t col2, int32_t col3) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3,col1,col2,col3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; // !!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>5)&(int32_t)0xFFFFF800)+YAdjust+((posX>>16))]; + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + (((posX+difX)>>16))]; + __W(GetTextureTransColGX32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16, + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000))); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + { + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+((posX>>16))]; + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + } + if(NextRow_GT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>5)&(int32_t)0xFFFFF800)+YAdjust+((posX>>16))]; + if(iDither) + GetTextureTransColGX_Dither(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TGEx8_IL(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short clX, short clY,int32_t col1, int32_t col2, int32_t col3) +{ + int i,j,xmin,xmax,ymin,ymax,n_xi,n_yi,TXV,TXU; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3,col1,col2,col3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; // !!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + TXU=(posX+difX)>>16; + TXV=(posY+difY)>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC2= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + __W(GetTextureTransColGX32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16, + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000))); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + { + TXU=posX>>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + } + if(NextRow_GT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16; + TXV=posY>>16; + n_xi = ( ( TXU >> 1 ) & ~0x78 ) + ( ( TXU << 2 ) & 0x40 ) + ( ( TXV << 3 ) & 0x38 ); + n_yi = ( TXV & ~0x7 ) + ( ( TXU >> 5 ) & 0x7 ); + + tC1= (GETLE16(&psxVuw[(n_yi<<10)+YAdjust+n_xi]) >> ((TXU & 0x01)<<3)) & 0xff; + + if(iDither) + GetTextureTransColGX_Dither(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TGEx8_TW(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short clX, short clY,int32_t col1, int32_t col2, int32_t col3) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3,col1,col2,col3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; // !!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + tC2 = psxVub[((((posY+difY)>>16)%TWin.Position.y1)<<11)+ + YAdjust+(((posX+difX)>>16)%TWin.Position.x1)]; + + __W(GetTextureTransColGX32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16, + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000))); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + { + tC1 = psxVub[(((posY>>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + } + if(NextRow_GT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16)%TWin.Position.y1)<<11)+ + YAdjust+((posX>>16)%TWin.Position.x1)]; + if(iDither) + GetTextureTransColGX_Dither(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +// note: two g-shaded tris: small texture distortions can happen + +void drawPoly4TGEx8_TRI_IL(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, + short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, + short clX, short clY, + int32_t col1, int32_t col2, int32_t col3, int32_t col4) +{ + drawPoly3TGEx8_IL(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + clX,clY, + col2,col4,col3); + drawPoly3TGEx8_IL(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + clX,clY, + col1,col2,col3); +} + +#ifdef POLYQUAD3GT + +void drawPoly4TGEx8_TRI(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, + short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, + short clX, short clY, + int32_t col1, int32_t col2, int32_t col3, int32_t col4) +{ + drawPoly3TGEx8(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + clX,clY, + col2,col4,col3); + drawPoly3TGEx8(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + clX,clY, + col1,col2,col3); +} + +#endif + +void drawPoly4TGEx8(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, + short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, + short clX, short clY, + int32_t col1, int32_t col2, int32_t col4, int32_t col3) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY,YAdjust,clutP; + short tC1,tC2; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4,col1,col2,col3,col4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + cR1=left_R; + cG1=left_G; + cB1=left_B; + difR=(right_R-cR1)/num; + difG=(right_G-cG1)/num; + difB=(right_B-cB1)/num; + difR2=difR<<1; + difG2=difG<<1; + difB2=difB<<1; + + if(xmin>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + tC2 = psxVub[(((posY+difY)>>5)&(int32_t)0xFFFFF800)+YAdjust+ + ((posX+difX)>>16)]; + + __W(GetTextureTransColGX32_S(tmp_ptr, + GETLE16(&psxVuw[clutP+tC1])| + ((int32_t)GETLE16(&psxVuw[clutP+tC2]))<<16, + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000))); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + { + tC1 = psxVub[((posY>>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + } + if(NextRow_GT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + cR1=left_R; + cG1=left_G; + cB1=left_B; + difR=(right_R-cR1)/num; + difG=(right_G-cG1)/num; + difB=(right_B-cB1)/num; + difR2=difR<<1; + difG2=difG<<1; + difB2=difB<<1; + + if(xmin>5)&(int32_t)0xFFFFF800)+YAdjust+(posX>>16)]; + if(iDither) + GetTextureTransColGX_Dither(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[clutP+tC1]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TGEx8_TW(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, + short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, + short clX, short clY, + int32_t col1, int32_t col2, int32_t col3, int32_t col4) +{ + drawPoly3TGEx8_TW(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + clX,clY, + col2,col4,col3); + drawPoly3TGEx8_TW(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + clX,clY, + col1,col2,col3); +} + +//////////////////////////////////////////////////////////////////////// +// POLY 3 G-SHADED TEX 15 BIT +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TGD(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3,int32_t col1, int32_t col2, int32_t col3) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3,col1,col2,col3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16)+GlobalTextAddrY)<<10)+((posX+difX)>>16)+GlobalTextAddrX]))<<16)| + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+((posX)>>16)+GlobalTextAddrX]), + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000))); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + if(NextRow_GT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3TGD_TW(short x1, short y1, short x2, short y2, short x3, short y3, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3,int32_t col1, int32_t col2, int32_t col3) +{ + int i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY,difX2, difY2; + int32_t posX,posY; + + if(x1>drawW && x2>drawW && x3>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT(x1,y1,x2,y2,x3,y3,tx1,ty1,tx2,ty2,tx3,ty3,col1,col2,col3)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX+difX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]))<<16)| + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + (((posX)>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]), + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000))); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + if(NextRow_GT()) + { + return; + } + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16)-1; //!!!!!!!!!!!!!!!!!! + if(drawW=xmin) + { + posX=left_u; + posY=left_v; + cR1=left_R; + cG1=left_G; + cB1=left_B; + + if(xmin>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[((((posY>>16)%TWin.Position.y1)+GlobalTextAddrY+TWin.Position.y0)<<10)+ + ((posX>>16)%TWin.Position.x1)+GlobalTextAddrX+TWin.Position.x0]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT()) + { + return; + } + } +} + +//////////////////////////////////////////////////////////////////////// + +// note: two g-shaded tris: small texture distortions can happen + +#ifdef POLYQUAD3GT + +void drawPoly4TGD_TRI(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, int32_t col1, int32_t col2, int32_t col3, int32_t col4) +{ + drawPoly3TGD(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + col2,col4,col3); + drawPoly3TGD(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + col1,col2,col3); +} + +#endif + +void drawPoly4TGD(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, int32_t col1, int32_t col2, int32_t col4, int32_t col3) +{ + int32_t num; + int32_t i,j,xmin,xmax,ymin,ymax; + int32_t cR1,cG1,cB1; + int32_t difR,difB,difG,difR2,difB2,difG2; + int32_t difX, difY, difX2, difY2; + int32_t posX,posY; + + if(x1>drawW && x2>drawW && x3>drawW && x4>drawW) return; + if(y1>drawH && y2>drawH && y3>drawH && y4>drawH) return; + if(x1=drawH) return; + if(drawX>=drawW) return; + + if(!SetupSections_GT4(x1,y1,x2,y2,x3,y3,x4,y4,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4,col1,col2,col3,col4)) return; + + ymax=Ymax; + + for(ymin=Ymin;ymin> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + cR1=left_R; + cG1=left_G; + cB1=left_B; + difR=(right_R-cR1)/num; + difG=(right_G-cG1)/num; + difB=(right_B-cB1)/num; + difR2=difR<<1; + difG2=difG<<1; + difB2=difB<<1; + + if(xmin>16)+GlobalTextAddrY)<<10)+((posX+difX)>>16)+GlobalTextAddrX]))<<16)| + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+((posX)>>16)+GlobalTextAddrX]), + (cB1>>16)|((cB1+difB)&0xff0000), + (cG1>>16)|((cG1+difG)&0xff0000), + (cR1>>16)|((cR1+difR)&0xff0000))); + posX+=difX2; + posY+=difY2; + cR1+=difR2; + cG1+=difG2; + cB1+=difB2; + } + if(j==xmax) + GetTextureTransColGX_S(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX]), + (cB1>>16),(cG1>>16),(cR1>>16)); + } + if(NextRow_GT4()) return; + } + return; + } + +#endif + + for (i=ymin;i<=ymax;i++) + { + xmin=(left_x >> 16); + xmax=(right_x >> 16); + + if(xmax>=xmin) + { + posX=left_u; + posY=left_v; + + num=(xmax-xmin); + if(num==0) num=1; + difX=(right_u-posX)/num; + difY=(right_v-posY)/num; + difX2=difX<<1; + difY2=difY<<1; + + cR1=left_R; + cG1=left_G; + cB1=left_B; + difR=(right_R-cR1)/num; + difG=(right_G-cG1)/num; + difB=(right_B-cB1)/num; + difR2=difR<<1; + difG2=difG<<1; + difB2=difB<<1; + + if(xmin>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX]), + (cB1>>16),(cG1>>16),(cR1>>16)); + else + GetTextureTransColGX(&psxVuw[(i<<10)+j], + GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX]), + (cB1>>16),(cG1>>16),(cR1>>16)); + posX+=difX; + posY+=difY; + cR1+=difR; + cG1+=difG; + cB1+=difB; + } + } + if(NextRow_GT4()) return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4TGD_TW(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, int32_t col1, int32_t col2, int32_t col3, int32_t col4) +{ + drawPoly3TGD_TW(x2,y2,x3,y3,x4,y4, + tx2,ty2,tx3,ty3,tx4,ty4, + col2,col4,col3); + drawPoly3TGD_TW(x1,y1,x2,y2,x4,y4, + tx1,ty1,tx2,ty2,tx4,ty4, + col1,col2,col3); +} + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// + + +/* +// no real rect test, but it does its job the way I need it +__inline BOOL IsNoRect(void) +{ + if(lx0==lx1 && lx2==lx3) return FALSE; + if(lx0==lx2 && lx1==lx3) return FALSE; + if(lx0==lx3 && lx1==lx2) return FALSE; + return TRUE; +} +*/ + +// real rect test +__inline static BOOL IsNoRect(void) +{ + if(!(dwActFixes&0x200)) return FALSE; + + if(ly0==ly1) + { + if(lx1==lx3 && ly3==ly2 && lx2==lx0) return FALSE; + if(lx1==lx2 && ly2==ly3 && lx3==lx0) return FALSE; + return TRUE; + } + + if(ly0==ly2) + { + if(lx2==lx3 && ly3==ly1 && lx1==lx0) return FALSE; + if(lx2==lx1 && ly1==ly3 && lx3==lx0) return FALSE; + return TRUE; + } + + if(ly0==ly3) + { + if(lx3==lx2 && ly2==ly1 && lx1==lx0) return FALSE; + if(lx3==lx1 && ly1==ly2 && lx2==lx0) return FALSE; + return TRUE; + } + return TRUE; +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3FT(unsigned char * baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + + if(GlobalTextIL && GlobalTextTP<2) + { + if(GlobalTextTP==0) + drawPoly3TEx4_IL(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + else + drawPoly3TEx8_IL(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + } + + if(!bUsingTWin && !(dwActFixes&0x100)) + { + switch(GlobalTextTP) // depending on texture mode + { + case 0: + drawPoly3TEx4(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 1: + drawPoly3TEx8(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 2: + drawPoly3TD(lx0,ly0,lx1,ly1,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff)); + return; + } + return; + } + + switch(GlobalTextTP) // depending on texture mode + { + case 0: + drawPoly3TEx4_TW(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 1: + drawPoly3TEx8_TW(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 2: + drawPoly3TD_TW(lx0,ly0,lx1,ly1,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff)); + return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4FT(unsigned char * baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + + if(GlobalTextIL && GlobalTextTP<2) + { + if(GlobalTextTP==0) + drawPoly4TEx4_IL(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + else + drawPoly4TEx8_IL(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + } + + if(!bUsingTWin) + { +#ifdef POLYQUAD3GT + if(IsNoRect()) + { + switch (GlobalTextTP) + { + case 0: + drawPoly4TEx4_TRI(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 1: + drawPoly4TEx8_TRI(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 2: + drawPoly4TD_TRI(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff)); + return; + } + return; + } +#endif + + switch (GlobalTextTP) + { + case 0: // grandia investigations needed + drawPoly4TEx4(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 1: + drawPoly4TEx8(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 2: + drawPoly4TD(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff)); + return; + } + return; + } + + switch (GlobalTextTP) + { + case 0: + drawPoly4TEx4_TW(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 1: + drawPoly4TEx8_TW(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff), ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 2: + drawPoly4TD_TW(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[4]) & 0x000000ff), ((GETLE32(&gpuData[4])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),(GETLE32(&gpuData[6]) & 0x000000ff), ((GETLE32(&gpuData[6])>>8) & 0x000000ff)); + return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly3GT(unsigned char * baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + + if(GlobalTextIL && GlobalTextTP<2) + { + if(GlobalTextTP==0) + drawPoly3TGEx4_IL(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6])); + else + drawPoly3TGEx8_IL(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6])); + return; + } + + if(!bUsingTWin) + { + switch (GlobalTextTP) + { + case 0: + drawPoly3TGEx4(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6])); + return; + case 1: + drawPoly3TGEx8(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6])); + return; + case 2: + drawPoly3TGD(lx0,ly0,lx1,ly1,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6])); + return; + } + return; + } + + switch(GlobalTextTP) + { + case 0: + drawPoly3TGEx4_TW(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6])); + return; + case 1: + drawPoly3TGEx8_TW(lx0,ly0,lx1,ly1,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6])); + return; + case 2: + drawPoly3TGD_TW(lx0,ly0,lx1,ly1,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6])); + return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void drawPoly4GT(unsigned char *baseAddr) +{ + uint32_t *gpuData = ((uint32_t *) baseAddr); + + if(GlobalTextIL && GlobalTextTP<2) + { + if(GlobalTextTP==0) + drawPoly4TGEx4_TRI_IL(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0),((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + else + drawPoly4TGEx8_TRI_IL(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0),((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + return; + } + + if(!bUsingTWin) + { +#ifdef POLYQUAD3GT + if(IsNoRect()) + { + switch (GlobalTextTP) + { + case 0: + drawPoly4TGEx4_TRI(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0),((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + + return; + case 1: + drawPoly4TGEx8_TRI(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0),((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + return; + case 2: + drawPoly4TGD_TRI(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff),((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + return; + } + return; + } +#endif + + switch (GlobalTextTP) + { + case 0: + drawPoly4TGEx4(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0),((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + + return; + case 1: + drawPoly4TGEx8(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0),((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + return; + case 2: + drawPoly4TGD(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff),((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + return; + } + return; + } + + switch (GlobalTextTP) + { + case 0: + drawPoly4TGEx4_TW(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0),((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + return; + case 1: + drawPoly4TGEx8_TW(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2, + (GETLE32(&gpuData[2]) & 0x000000ff), ((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff), + ((GETLE32(&gpuData[2])>>12) & 0x3f0),((GETLE32(&gpuData[2])>>22) & iGPUHeightMask), + GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + return; + case 2: + drawPoly4TGD_TW(lx0,ly0,lx1,ly1,lx3,ly3,lx2,ly2,(GETLE32(&gpuData[2]) & 0x000000ff),((GETLE32(&gpuData[2])>>8) & 0x000000ff), (GETLE32(&gpuData[5]) & 0x000000ff), ((GETLE32(&gpuData[5])>>8) & 0x000000ff),(GETLE32(&gpuData[11]) & 0x000000ff), ((GETLE32(&gpuData[11])>>8) & 0x000000ff),(GETLE32(&gpuData[8]) & 0x000000ff), ((GETLE32(&gpuData[8])>>8) & 0x000000ff),GETLE32(&gpuData[0]),GETLE32(&gpuData[3]),GETLE32(&gpuData[6]),GETLE32(&gpuData[9])); + return; + } +} + +//////////////////////////////////////////////////////////////////////// +// SPRITE FUNCS +//////////////////////////////////////////////////////////////////////// + +void DrawSoftwareSpriteTWin(unsigned char * baseAddr,int32_t w,int32_t h) +{ + uint32_t *gpuData = (uint32_t *)baseAddr; + short sx0,sy0,sx1,sy1,sx2,sy2,sx3,sy3; + short tx0,ty0,tx1,ty1,tx2,ty2,tx3,ty3; + + sx0=lx0; + sy0=ly0; + + sx0=sx3=sx0+PSXDisplay.DrawOffset.x; + sx1=sx2=sx0+w; + sy0=sy1=sy0+PSXDisplay.DrawOffset.y; + sy2=sy3=sy0+h; + + tx0=tx3=GETLE32(&gpuData[2])&0xff; + tx1=tx2=tx0+w; + ty0=ty1=(GETLE32(&gpuData[2])>>8)&0xff; + ty2=ty3=ty0+h; + + switch (GlobalTextTP) + { + case 0: + drawPoly4TEx4_TW_S(sx0,sy0,sx1,sy1,sx2,sy2,sx3,sy3, + tx0,ty0,tx1,ty1,tx2,ty2,tx3,ty3, + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 1: + drawPoly4TEx8_TW_S(sx0,sy0,sx1,sy1,sx2,sy2,sx3,sy3, + tx0,ty0,tx1,ty1,tx2,ty2,tx3,ty3, + ((GETLE32(&gpuData[2])>>12) & 0x3f0), ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + return; + case 2: + drawPoly4TD_TW_S(sx0,sy0,sx1,sy1,sx2,sy2,sx3,sy3, + tx0,ty0,tx1,ty1,tx2,ty2,tx3,ty3); + return; + } +} + +//////////////////////////////////////////////////////////////////////// + +void DrawSoftwareSpriteMirror(unsigned char * baseAddr,int32_t w,int32_t h) +{ + int32_t sprtY,sprtX,sprtW,sprtH,lXDir,lYDir; + int32_t clutY0,clutX0,clutP,textX0,textY0,sprtYa,sprCY,sprCX,sprA; + short tC; + uint32_t *gpuData = (uint32_t *)baseAddr; + sprtY = ly0; + sprtX = lx0; + sprtH = h; + sprtW = w; + clutY0 = (GETLE32(&gpuData[2])>>22) & iGPUHeightMask; + clutX0 = (GETLE32(&gpuData[2])>>12) & 0x3f0; + clutP = (clutY0<<11) + (clutX0<<1); + textY0 = ((GETLE32(&gpuData[2])>>8) & 0x000000ff) + GlobalTextAddrY; + textX0 = (GETLE32(&gpuData[2]) & 0x000000ff); + + sprtX+=PSXDisplay.DrawOffset.x; + sprtY+=PSXDisplay.DrawOffset.y; + +// while (sprtX>1023) sprtX-=1024; +// while (sprtY>MAXYLINESMIN1) sprtY-=MAXYLINES; + + if(sprtX>drawW) + { +// if((sprtX+sprtW)>1023) sprtX-=1024; +// else return; + return; + } + + if(sprtY>drawH) + { +// if ((sprtY+sprtH)>MAXYLINESMIN1) sprtY-=MAXYLINES; +// else return; + return; + } + + if(sprtYdrawH) sprtH=drawH-sprtY+1; + if((sprtX+sprtW)>drawW) sprtW=drawW-sprtX+1; + + if(usMirror&0x1000) lXDir=-1; else lXDir=1; + if(usMirror&0x2000) lYDir=-1; else lYDir=1; + + switch (GlobalTextTP) + { + case 0: // texture is 4-bit + + sprtW=sprtW/2; + textX0=(GlobalTextAddrX<<1)+(textX0>>1); + sprtYa=(sprtY<<10); + clutP=(clutY0<<10)+clutX0; + for (sprCY=0;sprCY>4)&0xf)])); + GetTextureTransColG_SPR(&psxVuw[sprA+1],GETLE16(&psxVuw[clutP+(tC&0xf)])); + } + return; + + case 1: + + clutP>>=1; + for(sprCY=0;sprCYdrawW) return; + if(sprtY>drawH) return; + + tdx=tx+sprtW; + tdy=ty+sprtH; + + sprtW+=sprtX; + sprtH+=sprtY; + + // Pete is too lazy to make a faster version ;) + + if(GlobalTextTP==0) + drawPoly4TEx4_IL(sprtX,sprtY,sprtX,sprtH,sprtW,sprtH,sprtW,sprtY, + tx,ty, tx,tdy, tdx,tdy, tdx,ty, + (GETLE32(&gpuData[2])>>12) & 0x3f0, ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); + + + else + drawPoly4TEx8_IL(sprtX,sprtY,sprtX,sprtH,sprtW,sprtH,sprtW,sprtY, + tx,ty, tx,tdy, tdx,tdy, tdx,ty, + (GETLE32(&gpuData[2])>>12) & 0x3f0, ((GETLE32(&gpuData[2])>>22) & iGPUHeightMask)); +} + +//////////////////////////////////////////////////////////////////////// + +void DrawSoftwareSprite(unsigned char * baseAddr,short w,short h,int32_t tx,int32_t ty) +{ + int32_t sprtY,sprtX,sprtW,sprtH; + int32_t clutY0,clutX0,clutP,textX0,textY0,sprtYa,sprCY,sprCX,sprA; + short tC,tC2; + uint32_t *gpuData = (uint32_t *)baseAddr; + unsigned char * pV; + BOOL bWT,bWS; + + if(GlobalTextIL && GlobalTextTP<2) + {DrawSoftwareSprite_IL(baseAddr,w,h,tx,ty);return;} + + sprtY = ly0; + sprtX = lx0; + sprtH = h; + sprtW = w; + clutY0 = (GETLE32(&gpuData[2])>>22) & iGPUHeightMask; + clutX0 = (GETLE32(&gpuData[2])>>12) & 0x3f0; + + clutP = (clutY0<<11) + (clutX0<<1); + + textY0 =ty+ GlobalTextAddrY; + textX0 =tx; + + sprtX+=PSXDisplay.DrawOffset.x; + sprtY+=PSXDisplay.DrawOffset.y; + + //while (sprtX>1023) sprtX-=1024; + //while (sprtY>MAXYLINESMIN1) sprtY-=MAXYLINES; + + if(sprtX>drawW) + { +// if((sprtX+sprtW)>1023) sprtX-=1024; +// else return; + return; + } + + if(sprtY>drawH) + { +// if ((sprtY+sprtH)>MAXYLINESMIN1) sprtY-=MAXYLINES; +// else return; + return; + } + + if(sprtYdrawH) sprtH=drawH-sprtY+1; + if((sprtX+sprtW)>drawW) sprtW=drawW-sprtX+1; + + + bWT=FALSE; + bWS=FALSE; + + switch (GlobalTextTP) + { + case 0: + + if(textX0&1) {bWS=TRUE;sprtW--;} + if(sprtW&1) bWT=TRUE; + + sprtW=sprtW>>1; + textX0=(GlobalTextAddrX<<1)+(textX0>>1)+(textY0<<11); + sprtYa=(sprtY<<10)+sprtX; + clutP=(clutY0<<10)+clutX0; + +#ifdef FASTSOLID + + if(!bCheckMask && !DrawSemiTrans) + { + for (sprCY=0;sprCY>4)&0xf)])); + } + + for (sprCX=0;sprCX>4)&0xf)]))<<16)| + GETLE16(&psxVuw[clutP+(tC&0x0f)]))); + } + + if(bWT) + { + tC=*pV; + GetTextureTransColG_S(&psxVuw[sprA],GETLE16(&psxVuw[clutP+(tC&0x0f)])); + } + } + return; + } + +#endif + + for (sprCY=0;sprCY>4)&0xf)])); + } + + for (sprCX=0;sprCX>4)&0xf)])<<16))| + GETLE16(&psxVuw[clutP+(tC&0x0f)]))); + } + + if(bWT) + { + tC=*pV; + GetTextureTransColG_SPR(&psxVuw[sprA],GETLE16(&psxVuw[clutP+(tC&0x0f)])); + } + } + return; + + case 1: + clutP>>=1;sprtW--; + textX0+=(GlobalTextAddrX<<1) + (textY0<<11); + +#ifdef FASTSOLID + + if(!bCheckMask && !DrawSemiTrans) + { + for(sprCY=0;sprCY 0) + { + dr = ((int32_t)r1 - (int32_t)r0) / dx; + dg = ((int32_t)g1 - (int32_t)g0) / dx; + db = ((int32_t)b1 - (int32_t)b0) / dx; + } + else + { + dr = ((int32_t)r1 - (int32_t)r0); + dg = ((int32_t)g1 - (int32_t)g0); + db = ((int32_t)b1 - (int32_t)b0); + } + + d = 2*dy - dx; /* Initial value of d */ + incrE = 2*dy; /* incr. used for move to E */ + incrSE = 2*(dy - dx); /* incr. used for move to SE */ + + if ((x0>=drawX)&&(x0=drawY)&&(y0> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + while(x0 < x1) + { + if (d <= 0) + { + d = d + incrE; /* Choose E */ + } + else + { + d = d + incrSE; /* Choose SE */ + y0++; + } + x0++; + + r0+=dr; + g0+=dg; + b0+=db; + + if ((x0>=drawX)&&(x0=drawY)&&(y0> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + } +} + +/////////////////////////////////////////////////////////////////////// + +void Line_S_SE_Shade(int x0, int y0, int x1, int y1, uint32_t rgb0, uint32_t rgb1) +{ + int dx, dy, incrS, incrSE, d; + uint32_t r0, g0, b0, r1, g1, b1; + int32_t dr, dg, db; + + r0 = (rgb0 & 0x00ff0000); + g0 = (rgb0 & 0x0000ff00) << 8; + b0 = (rgb0 & 0x000000ff) << 16; + r1 = (rgb1 & 0x00ff0000); + g1 = (rgb1 & 0x0000ff00) << 8; + b1 = (rgb1 & 0x000000ff) << 16; + + dx = x1 - x0; + dy = y1 - y0; + + if (dy > 0) + { + dr = ((int32_t)r1 - (int32_t)r0) / dy; + dg = ((int32_t)g1 - (int32_t)g0) / dy; + db = ((int32_t)b1 - (int32_t)b0) / dy; + } + else + { + dr = ((int32_t)r1 - (int32_t)r0); + dg = ((int32_t)g1 - (int32_t)g0); + db = ((int32_t)b1 - (int32_t)b0); + } + + d = 2*dx - dy; /* Initial value of d */ + incrS = 2*dx; /* incr. used for move to S */ + incrSE = 2*(dx - dy); /* incr. used for move to SE */ + + if ((x0>=drawX)&&(x0=drawY)&&(y0> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + while(y0 < y1) + { + if (d <= 0) + { + d = d + incrS; /* Choose S */ + } + else + { + d = d + incrSE; /* Choose SE */ + x0++; + } + y0++; + + r0+=dr; + g0+=dg; + b0+=db; + + if ((x0>=drawX)&&(x0=drawY)&&(y0> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + } +} + +/////////////////////////////////////////////////////////////////////// + +void Line_N_NE_Shade(int x0, int y0, int x1, int y1, uint32_t rgb0, uint32_t rgb1) +{ + int dx, dy, incrN, incrNE, d; + uint32_t r0, g0, b0, r1, g1, b1; + int32_t dr, dg, db; + + r0 = (rgb0 & 0x00ff0000); + g0 = (rgb0 & 0x0000ff00) << 8; + b0 = (rgb0 & 0x000000ff) << 16; + r1 = (rgb1 & 0x00ff0000); + g1 = (rgb1 & 0x0000ff00) << 8; + b1 = (rgb1 & 0x000000ff) << 16; + + dx = x1 - x0; + dy = -(y1 - y0); + + if (dy > 0) + { + dr = ((int32_t)r1 - (int32_t)r0) / dy; + dg = ((int32_t)g1 - (int32_t)g0) / dy; + db = ((int32_t)b1 - (int32_t)b0) / dy; + } + else + { + dr = ((int32_t)r1 - (int32_t)r0); + dg = ((int32_t)g1 - (int32_t)g0); + db = ((int32_t)b1 - (int32_t)b0); + } + + d = 2*dx - dy; /* Initial value of d */ + incrN = 2*dx; /* incr. used for move to N */ + incrNE = 2*(dx - dy); /* incr. used for move to NE */ + + if ((x0>=drawX)&&(x0=drawY)&&(y0> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + while(y0 > y1) + { + if (d <= 0) + { + d = d + incrN; /* Choose N */ + } + else + { + d = d + incrNE; /* Choose NE */ + x0++; + } + y0--; + + r0+=dr; + g0+=dg; + b0+=db; + + if ((x0>=drawX)&&(x0=drawY)&&(y0> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + } +} + +/////////////////////////////////////////////////////////////////////// + +void Line_E_NE_Shade(int x0, int y0, int x1, int y1, uint32_t rgb0, uint32_t rgb1) +{ + int dx, dy, incrE, incrNE, d; + uint32_t r0, g0, b0, r1, g1, b1; + int32_t dr, dg, db; + + r0 = (rgb0 & 0x00ff0000); + g0 = (rgb0 & 0x0000ff00) << 8; + b0 = (rgb0 & 0x000000ff) << 16; + r1 = (rgb1 & 0x00ff0000); + g1 = (rgb1 & 0x0000ff00) << 8; + b1 = (rgb1 & 0x000000ff) << 16; + + dx = x1 - x0; + dy = -(y1 - y0); + + if (dx > 0) + { + dr = ((int32_t)r1 - (int32_t)r0) / dx; + dg = ((int32_t)g1 - (int32_t)g0) / dx; + db = ((int32_t)b1 - (int32_t)b0) / dx; + } + else + { + dr = ((int32_t)r1 - (int32_t)r0); + dg = ((int32_t)g1 - (int32_t)g0); + db = ((int32_t)b1 - (int32_t)b0); + } + + d = 2*dy - dx; /* Initial value of d */ + incrE = 2*dy; /* incr. used for move to E */ + incrNE = 2*(dy - dx); /* incr. used for move to NE */ + + if ((x0>=drawX)&&(x0=drawY)&&(y0> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + while(x0 < x1) + { + if (d <= 0) + { + d = d + incrE; /* Choose E */ + } + else + { + d = d + incrNE; /* Choose NE */ + y0--; + } + x0++; + + r0+=dr; + g0+=dg; + b0+=db; + + if ((x0>=drawX)&&(x0=drawY)&&(y0> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + } +} + +/////////////////////////////////////////////////////////////////////// + +void VertLineShade(int x, int y0, int y1, uint32_t rgb0, uint32_t rgb1) +{ + int y, dy; + uint32_t r0, g0, b0, r1, g1, b1; + int32_t dr, dg, db; + + r0 = (rgb0 & 0x00ff0000); + g0 = (rgb0 & 0x0000ff00) << 8; + b0 = (rgb0 & 0x000000ff) << 16; + r1 = (rgb1 & 0x00ff0000); + g1 = (rgb1 & 0x0000ff00) << 8; + b1 = (rgb1 & 0x000000ff) << 16; + + dy = (y1 - y0); + + if (dy > 0) + { + dr = ((int32_t)r1 - (int32_t)r0) / dy; + dg = ((int32_t)g1 - (int32_t)g0) / dy; + db = ((int32_t)b1 - (int32_t)b0) / dy; + } + else + { + dr = ((int32_t)r1 - (int32_t)r0); + dg = ((int32_t)g1 - (int32_t)g0); + db = ((int32_t)b1 - (int32_t)b0); + } + + if (y0 < drawY) + { + r0+=dr*(drawY - y0); + g0+=dg*(drawY - y0); + b0+=db*(drawY - y0); + y0 = drawY; + } + + if (y1 > drawH) + y1 = drawH; + + for (y = y0; y <= y1; y++) + { + GetShadeTransCol(&psxVuw[(y<<10)+x],(unsigned short)(((r0 >> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + r0+=dr; + g0+=dg; + b0+=db; + } +} + +/////////////////////////////////////////////////////////////////////// + +void HorzLineShade(int y, int x0, int x1, uint32_t rgb0, uint32_t rgb1) +{ + int x, dx; + uint32_t r0, g0, b0, r1, g1, b1; + int32_t dr, dg, db; + + r0 = (rgb0 & 0x00ff0000); + g0 = (rgb0 & 0x0000ff00) << 8; + b0 = (rgb0 & 0x000000ff) << 16; + r1 = (rgb1 & 0x00ff0000); + g1 = (rgb1 & 0x0000ff00) << 8; + b1 = (rgb1 & 0x000000ff) << 16; + + dx = (x1 - x0); + + if (dx > 0) + { + dr = ((int32_t)r1 - (int32_t)r0) / dx; + dg = ((int32_t)g1 - (int32_t)g0) / dx; + db = ((int32_t)b1 - (int32_t)b0) / dx; + } + else + { + dr = ((int32_t)r1 - (int32_t)r0); + dg = ((int32_t)g1 - (int32_t)g0); + db = ((int32_t)b1 - (int32_t)b0); + } + + if (x0 < drawX) + { + r0+=dr*(drawX - x0); + g0+=dg*(drawX - x0); + b0+=db*(drawX - x0); + x0 = drawX; + } + + if (x1 > drawW) + x1 = drawW; + + for (x = x0; x <= x1; x++) + { + GetShadeTransCol(&psxVuw[(y<<10)+x],(unsigned short)(((r0 >> 9)&0x7c00)|((g0 >> 14)&0x03e0)|((b0 >> 19)&0x001f))); + r0+=dr; + g0+=dg; + b0+=db; + } +} + +/////////////////////////////////////////////////////////////////////// + +void Line_E_SE_Flat(int x0, int y0, int x1, int y1, unsigned short colour) +{ + int dx, dy, incrE, incrSE, d, x, y; + + dx = x1 - x0; + dy = y1 - y0; + d = 2*dy - dx; /* Initial value of d */ + incrE = 2*dy; /* incr. used for move to E */ + incrSE = 2*(dy - dx); /* incr. used for move to SE */ + x = x0; + y = y0; + if ((x>=drawX)&&(x=drawY)&&(y=drawX)&&(x=drawY)&&(y=drawX)&&(x=drawY)&&(y=drawX)&&(x=drawY)&&(y=drawX)&&(x=drawY)&&(y y1) + { + if (d <= 0) + { + d = d + incrN; /* Choose N */ + y--; + } + else + { + d = d + incrNE; /* Choose NE */ + x++; + y--; + } + if ((x>=drawX)&&(x=drawY)&&(y=drawX)&&(x=drawY)&&(y=drawX)&&(x=drawY)&&(y drawH) + y1 = drawH; + + for (y = y0; y <= y1; y++) + GetShadeTransCol(&psxVuw[(y<<10)+x], colour); +} + +/////////////////////////////////////////////////////////////////////// + +void HorzLineFlat(int y, int x0, int x1, unsigned short colour) +{ + int x; + + if (x0 < drawX) + x0 = drawX; + + if (x1 > drawW) + x1 = drawW; + + for (x = x0; x <= x1; x++) + GetShadeTransCol(&psxVuw[(y << 10) + x], colour); +} + +/////////////////////////////////////////////////////////////////////// + +/* Bresenham Line drawing function */ +void DrawSoftwareLineShade(int32_t rgb0, int32_t rgb1) +{ + short x0, y0, x1, y1, xt, yt; + int32_t rgbt; + double m, dy, dx; + + if (lx0 > drawW && lx1 > drawW) return; + if (ly0 > drawH && ly1 > drawH) return; + if (lx0 < drawX && lx1 < drawX) return; + if (ly0 < drawY && ly1 < drawY) return; + if (drawY >= drawH) return; + if (drawX >= drawW) return; + + x0 = lx0; + y0 = ly0; + x1 = lx1; + y1 = ly1; + + dx = x1 - x0; + dy = y1 - y0; + + if (dx == 0) + { + if (dy > 0) + VertLineShade(x0, y0, y1, rgb0, rgb1); + else + VertLineShade(x0, y1, y0, rgb1, rgb0); + } + else + if (dy == 0) + { + if (dx > 0) + HorzLineShade(y0, x0, x1, rgb0, rgb1); + else + HorzLineShade(y0, x1, x0, rgb1, rgb0); + } + else + { + if (dx < 0) + { + xt = x0; + yt = y0; + rgbt = rgb0; + x0 = x1; + y0 = y1; + rgb0 = rgb1; + x1 = xt; + y1 = yt; + rgb1 = rgbt; + + dx = x1 - x0; + dy = y1 - y0; + } + + m = dy / dx; + + if (m >= 0) + { + if (m > 1) + Line_S_SE_Shade(x0, y0, x1, y1, rgb0, rgb1); + else + Line_E_SE_Shade(x0, y0, x1, y1, rgb0, rgb1); + } + else + if (m < -1) + Line_N_NE_Shade(x0, y0, x1, y1, rgb0, rgb1); + else + Line_E_NE_Shade(x0, y0, x1, y1, rgb0, rgb1); + } +} + +/////////////////////////////////////////////////////////////////////// + +void DrawSoftwareLineFlat(int32_t rgb) +{ + short x0, y0, x1, y1, xt, yt; + double m, dy, dx; + unsigned short colour = 0; + + if (lx0 > drawW && lx1 > drawW) return; + if (ly0 > drawH && ly1 > drawH) return; + if (lx0 < drawX && lx1 < drawX) return; + if (ly0 < drawY && ly1 < drawY) return; + if (drawY >= drawH) return; + if (drawX >= drawW) return; + + colour = ((rgb & 0x00f80000) >> 9) | ((rgb & 0x0000f800) >> 6) | ((rgb & 0x000000f8) >> 3); + + x0 = lx0; + y0 = ly0; + x1 = lx1; + y1 = ly1; + + dx = x1 - x0; + dy = y1 - y0; + + if (dx == 0) + { + if (dy == 0) + return; // Nothing to draw + else if (dy > 0) + VertLineFlat(x0, y0, y1, colour); + else + VertLineFlat(x0, y1, y0, colour); + } + else + if (dy == 0) + { + if (dx > 0) + HorzLineFlat(y0, x0, x1, colour); + else + HorzLineFlat(y0, x1, x0, colour); + } + else + { + if (dx < 0) + { + xt = x0; + yt = y0; + x0 = x1; + y0 = y1; + x1 = xt; + y1 = yt; + + dx = x1 - x0; + dy = y1 - y0; + } + + m = dy/dx; + + if (m >= 0) + { + if (m > 1) + Line_S_SE_Flat(x0, y0, x1, y1, colour); + else + Line_E_SE_Flat(x0, y0, x1, y1, colour); + } + else + if (m < -1) + Line_N_NE_Flat(x0, y0, x1, y1, colour); + else + Line_E_NE_Flat(x0, y0, x1, y1, colour); + } +} + +/////////////////////////////////////////////////////////////////////// diff --git a/plugins/dfxvideo/swap.h b/plugins/dfxvideo/swap.h new file mode 100644 index 0000000..75e5bc3 --- /dev/null +++ b/plugins/dfxvideo/swap.h @@ -0,0 +1,45 @@ +#include + +// byteswappings + +#define SWAP16(x) ({ uint16_t y=(x); (((y)>>8 & 0xff) | ((y)<<8 & 0xff00)); }) +#define SWAP32(x) ({ uint32_t y=(x); (((y)>>24 & 0xfful) | ((y)>>8 & 0xff00ul) | ((y)<<8 & 0xff0000ul) | ((y)<<24 & 0xff000000ul)); }) + +#ifdef __BIG_ENDIAN__ + +// big endian config +#define HOST2LE32(x) SWAP32(x) +#define HOST2BE32(x) (x) +#define LE2HOST32(x) SWAP32(x) +#define BE2HOST32(x) (x) + +#define HOST2LE16(x) SWAP16(x) +#define HOST2BE16(x) (x) +#define LE2HOST16(x) SWAP16(x) +#define BE2HOST16(x) (x) + +#else + +// little endian config +#define HOST2LE32(x) (x) +#define HOST2BE32(x) SWAP32(x) +#define LE2HOST32(x) (x) +#define BE2HOST32(x) SWAP32(x) + +#define HOST2LE16(x) (x) +#define HOST2BE16(x) SWAP16(x) +#define LE2HOST16(x) (x) +#define BE2HOST16(x) SWAP16(x) + +#endif + +#define GETLEs16(X) ((int16_t)GETLE16((uint16_t *)X)) +#define GETLEs32(X) ((int16_t)GETLE32((uint16_t *)X)) + + +#define GETLE16(X) LE2HOST16(*(uint16_t *)X) +#define GETLE32(X) LE2HOST32(*(uint32_t *)X) +#define GETLE16D(X) ({uint32_t val = GETLE32(X); (val<<16 | val >> 16);}) +#define PUTLE16(X, Y) do{*((uint16_t *)X)=HOST2LE16((uint16_t)Y);}while(0) +#define PUTLE32(X, Y) do{*((uint32_t *)X)=HOST2LE16((uint32_t)Y);}while(0) + diff --git a/plugins/dfxvideo/zn.c b/plugins/dfxvideo/zn.c new file mode 100644 index 0000000..276f7a6 --- /dev/null +++ b/plugins/dfxvideo/zn.c @@ -0,0 +1,256 @@ +/*************************************************************************** + zn.c - description + ------------------- + begin : Sat Jan 31 2004 + copyright : (C) 2004 by Pete Bernert + email : BlackDove@addcom.de + ***************************************************************************/ +/*************************************************************************** + * * + * 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. See also the license.txt file for * + * additional informations. * + * * + ***************************************************************************/ + +#define _IN_ZN + +#include "externals.h" + +// --------------------------------------------------- // +// - psx gpu plugin interface prototypes-------------- // +// --------------------------------------------------- // + +long GPUopen(unsigned long *disp, const char *CapText, const char *CfgFile); + +void CALLBACK GPUdisplayText(char * pText); +void CALLBACK GPUdisplayFlags(uint32_t dwFlags); +void CALLBACK GPUmakeSnapshot(void); +long CALLBACK GPUinit(); +long CALLBACK GPUclose(); +long CALLBACK GPUshutdown(); +void CALLBACK GPUcursor(int iPlayer,int x,int y); +void CALLBACK GPUupdateLace(void); +uint32_t CALLBACK GPUreadStatus(void); +void CALLBACK GPUwriteStatus(uint32_t gdata); +void CALLBACK GPUreadDataMem(uint32_t * pMem, int iSize); +uint32_t CALLBACK GPUreadData(void); +void CALLBACK GPUwriteDataMem(uint32_t * pMem, int iSize); +void CALLBACK GPUwriteData(uint32_t gdata); +void CALLBACK GPUsetMode(uint32_t gdata); +long CALLBACK GPUgetMode(void); +long CALLBACK GPUdmaChain(uint32_t * baseAddrL, uint32_t addr); +long CALLBACK GPUconfigure(void); +void CALLBACK GPUabout(void); +long CALLBACK GPUtest(void); +long CALLBACK GPUfreeze(uint32_t ulGetFreezeData,void * pF); +void CALLBACK GPUgetScreenPic(unsigned char * pMem); +void CALLBACK GPUshowScreenPic(unsigned char * pMem); + +void CALLBACK GPUkeypressed(int keycode); + + +// --------------------------------------------------- // +// - zn gpu interface -------------------------------- // +// --------------------------------------------------- // + +uint32_t dwGPUVersion=0; +int iGPUHeight=512; +int iGPUHeightMask=511; +int GlobalTextIL=0; +int iTileCheat=0; +#if 0 +// --------------------------------------------------- // +// --------------------------------------------------- // +// --------------------------------------------------- // + +typedef struct GPUOTAG + { + uint32_t Version; // Version of structure - currently 1 + long hWnd; // Window handle + uint32_t ScreenRotation; // 0 = 0CW, 1 = 90CW, 2 = 180CW, 3 = 270CW = 90CCW + uint32_t GPUVersion; // 0 = a, 1 = b, 2 = c + const char* GameName; // NULL terminated string + const char* CfgFile; // NULL terminated string + } GPUConfiguration_t; + +// --------------------------------------------------- // +// --------------------------------------------------- // +// --------------------------------------------------- // + +void CALLBACK ZN_GPUdisplayFlags(uint32_t dwFlags) +{ + GPUdisplayFlags(dwFlags); +} + +// --------------------------------------------------- // + +void CALLBACK ZN_GPUmakeSnapshot(void) +{ + GPUmakeSnapshot(); +} + +// --------------------------------------------------- // + +long CALLBACK ZN_GPUinit() +{ // we always set the vram size to 2MB, if the ZN interface is used + iGPUHeight=1024; + iGPUHeightMask=1023; + + return GPUinit(); +} + +// --------------------------------------------------- // + +long CALLBACK ZN_GPUopen(void * vcfg) +{ + GPUConfiguration_t * cfg=(GPUConfiguration_t *)vcfg; + long lret; + + if(!cfg) return -1; + if(cfg->Version!=1) return -1; + + lret = GPUopen(&cfg->hWnd, cfg->GameName, cfg->CfgFile); + + +/* + if(!lstrcmp(cfg->GameName,"kikaioh") || + !lstrcmp(cfg->GameName,"sr2j") || + !lstrcmp(cfg->GameName,"rvschool_a")) + iTileCheat=1; +*/ + + // some ZN games seem to erase the cluts with a 'white' TileS... strange.. + // I've added a cheat to avoid this issue. We can set it globally (for + // all ZiNc games) without much risk + + iTileCheat=1; + + dwGPUVersion=cfg->GPUVersion; + + return lret; +} + +// --------------------------------------------------- // + +long CALLBACK ZN_GPUclose() +{ + return GPUclose(); +} + +// --------------------------------------------------- // + +long CALLBACK ZN_GPUshutdown() +{ + return GPUshutdown(); +} + +// --------------------------------------------------- // + +void CALLBACK ZN_GPUupdateLace(void) +{ + GPUupdateLace(); +} + +// --------------------------------------------------- // + +uint32_t CALLBACK ZN_GPUreadStatus(void) +{ + return GPUreadStatus(); +} + +// --------------------------------------------------- // + +void CALLBACK ZN_GPUwriteStatus(uint32_t gdata) +{ + GPUwriteStatus(gdata); +} + +// --------------------------------------------------- // + +long CALLBACK ZN_GPUdmaSliceOut(uint32_t *baseAddrL, uint32_t addr, uint32_t iSize) +{ + GPUreadDataMem(baseAddrL+addr,iSize); + return 0; +} + +// --------------------------------------------------- // + +uint32_t CALLBACK ZN_GPUreadData(void) +{ + return GPUreadData(); +} + +// --------------------------------------------------- // + +void CALLBACK ZN_GPUsetMode(uint32_t gdata) +{ + GPUsetMode(gdata); +} + +// --------------------------------------------------- // + +long CALLBACK ZN_GPUgetMode(void) +{ + return GPUgetMode(); +} + +// --------------------------------------------------- // + +long CALLBACK ZN_GPUdmaSliceIn(uint32_t *baseAddrL, uint32_t addr, uint32_t iSize) +{ + GPUwriteDataMem(baseAddrL+addr,iSize); + return 0; +} +// --------------------------------------------------- // + +void CALLBACK ZN_GPUwriteData(uint32_t gdata) +{ + GPUwriteDataMem(&gdata,1); +} + +// --------------------------------------------------- // + +long CALLBACK ZN_GPUdmaChain(uint32_t * baseAddrL, uint32_t addr) +{ + return GPUdmaChain(baseAddrL,addr); +} + +// --------------------------------------------------- // + +long CALLBACK ZN_GPUtest(void) +{ + return GPUtest(); +} + +// --------------------------------------------------- // + +long CALLBACK ZN_GPUfreeze(uint32_t ulGetFreezeData,void * pF) +{ + return GPUfreeze(ulGetFreezeData,pF); +} + +// --------------------------------------------------- // + +void CALLBACK ZN_GPUgetScreenPic(unsigned char * pMem) +{ + GPUgetScreenPic(pMem); +} + +// --------------------------------------------------- // + +void CALLBACK ZN_GPUshowScreenPic(unsigned char * pMem) +{ + GPUshowScreenPic(pMem); +} + +// --------------------------------------------------- // + +void CALLBACK ZN_GPUkeypressed(int keycode) +{ + // GPUkeypressed(keycode); +} + +#endif \ No newline at end of file diff --git a/plugins/nullspu/register.h b/plugins/nullspu/register.h new file mode 100644 index 0000000..52128b7 --- /dev/null +++ b/plugins/nullspu/register.h @@ -0,0 +1,121 @@ +#define H_SPUirqAddr 0x0da4 +#define H_SPUaddr 0x0da6 +#define H_SPUdata 0x0da8 +#define H_SPUctrl 0x0daa +#define H_SPUstat 0x0dae +#define H_SPUon1 0x0d88 +#define H_SPUon2 0x0d8a +#define H_SPUoff1 0x0d8c +#define H_SPUoff2 0x0d8e +#define H_FMod1 0x0d90 +#define H_FMod2 0x0d92 +#define H_Noise1 0x0d94 +#define H_Noise2 0x0d96 +#define H_RVBon1 0x0d98 +#define H_RVBon2 0x0d9a +#define H_SPUIsOn1 0x0d9c +#define H_SPUIsOn2 0x0d9e +#define H_CDLeft 0x0db0 +#define H_CDRight 0x0db2 +#define H_Reverb 0x0dc0 + +#define H_SPUPitch0 0x0c04 +#define H_SPUPitch1 0x0c14 +#define H_SPUPitch2 0x0c24 +#define H_SPUPitch3 0x0c34 +#define H_SPUPitch4 0x0c44 +#define H_SPUPitch5 0x0c54 +#define H_SPUPitch6 0x0c64 +#define H_SPUPitch7 0x0c74 +#define H_SPUPitch8 0x0c84 +#define H_SPUPitch9 0x0c94 +#define H_SPUPitch10 0x0ca4 +#define H_SPUPitch11 0x0cb4 +#define H_SPUPitch12 0x0cc4 +#define H_SPUPitch13 0x0cd4 +#define H_SPUPitch14 0x0ce4 +#define H_SPUPitch15 0x0cf4 +#define H_SPUPitch16 0x0d04 +#define H_SPUPitch17 0x0d14 +#define H_SPUPitch18 0x0d24 +#define H_SPUPitch19 0x0d34 +#define H_SPUPitch20 0x0d44 +#define H_SPUPitch21 0x0d54 +#define H_SPUPitch22 0x0d64 +#define H_SPUPitch23 0x0d74 + +#define H_SPUStartAdr0 0x0c06 +#define H_SPUStartAdr1 0x0c16 +#define H_SPUStartAdr2 0x0c26 +#define H_SPUStartAdr3 0x0c36 +#define H_SPUStartAdr4 0x0c46 +#define H_SPUStartAdr5 0x0c56 +#define H_SPUStartAdr6 0x0c66 +#define H_SPUStartAdr7 0x0c76 +#define H_SPUStartAdr8 0x0c86 +#define H_SPUStartAdr9 0x0c96 +#define H_SPUStartAdr10 0x0ca6 +#define H_SPUStartAdr11 0x0cb6 +#define H_SPUStartAdr12 0x0cc6 +#define H_SPUStartAdr13 0x0cd6 +#define H_SPUStartAdr14 0x0ce6 +#define H_SPUStartAdr15 0x0cf6 +#define H_SPUStartAdr16 0x0d06 +#define H_SPUStartAdr17 0x0d16 +#define H_SPUStartAdr18 0x0d26 +#define H_SPUStartAdr19 0x0d36 +#define H_SPUStartAdr20 0x0d46 +#define H_SPUStartAdr21 0x0d56 +#define H_SPUStartAdr22 0x0d66 +#define H_SPUStartAdr23 0x0d76 + +#define H_SPULoopAdr0 0x0c0e +#define H_SPULoopAdr1 0x0c1e +#define H_SPULoopAdr2 0x0c2e +#define H_SPULoopAdr3 0x0c3e +#define H_SPULoopAdr4 0x0c4e +#define H_SPULoopAdr5 0x0c5e +#define H_SPULoopAdr6 0x0c6e +#define H_SPULoopAdr7 0x0c7e +#define H_SPULoopAdr8 0x0c8e +#define H_SPULoopAdr9 0x0c9e +#define H_SPULoopAdr10 0x0cae +#define H_SPULoopAdr11 0x0cbe +#define H_SPULoopAdr12 0x0cce +#define H_SPULoopAdr13 0x0cde +#define H_SPULoopAdr14 0x0cee +#define H_SPULoopAdr15 0x0cfe +#define H_SPULoopAdr16 0x0d0e +#define H_SPULoopAdr17 0x0d1e +#define H_SPULoopAdr18 0x0d2e +#define H_SPULoopAdr19 0x0d3e +#define H_SPULoopAdr20 0x0d4e +#define H_SPULoopAdr21 0x0d5e +#define H_SPULoopAdr22 0x0d6e +#define H_SPULoopAdr23 0x0d7e + +#define H_SPU_ADSRLevel0 0x0c08 +#define H_SPU_ADSRLevel1 0x0c18 +#define H_SPU_ADSRLevel2 0x0c28 +#define H_SPU_ADSRLevel3 0x0c38 +#define H_SPU_ADSRLevel4 0x0c48 +#define H_SPU_ADSRLevel5 0x0c58 +#define H_SPU_ADSRLevel6 0x0c68 +#define H_SPU_ADSRLevel7 0x0c78 +#define H_SPU_ADSRLevel8 0x0c88 +#define H_SPU_ADSRLevel9 0x0c98 +#define H_SPU_ADSRLevel10 0x0ca8 +#define H_SPU_ADSRLevel11 0x0cb8 +#define H_SPU_ADSRLevel12 0x0cc8 +#define H_SPU_ADSRLevel13 0x0cd8 +#define H_SPU_ADSRLevel14 0x0ce8 +#define H_SPU_ADSRLevel15 0x0cf8 +#define H_SPU_ADSRLevel16 0x0d08 +#define H_SPU_ADSRLevel17 0x0d18 +#define H_SPU_ADSRLevel18 0x0d28 +#define H_SPU_ADSRLevel19 0x0d38 +#define H_SPU_ADSRLevel20 0x0d48 +#define H_SPU_ADSRLevel21 0x0d58 +#define H_SPU_ADSRLevel22 0x0d68 +#define H_SPU_ADSRLevel23 0x0d78 + diff --git a/plugins/nullspu/spunull.c b/plugins/nullspu/spunull.c new file mode 100644 index 0000000..b759914 --- /dev/null +++ b/plugins/nullspu/spunull.c @@ -0,0 +1,510 @@ +///////////////////////////////////////////////////////// + +#define PSE_LT_SPU 4 +#define PSE_SPU_ERR_SUCCESS 0 +#define PSE_SPU_ERR -60 +#define PSE_SPU_ERR_NOTCONFIGURED PSE_SPU_ERR -1 +#define PSE_SPU_ERR_INIT PSE_SPU_ERR -2 + +///////////////////////////////////////////////////////// +// main emu calls: +// 0. Get type/name/version +// 1. Init +// 2. SetCallbacks +// 3. SetConfigFile +// 4. Open +// 5. Dma/register/xa calls... +// 6. Close +// 7. Shutdown +///////////////////////////////////////////////////////// + +#include +#include +#include +#include "xa.h" +#include "register.h" +// some ms windows compatibility define +#undef CALLBACK +#define CALLBACK + +//////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////// + +static const unsigned char version = 1; +static const unsigned char revision = 1; +static const unsigned char build = 1; +static char * libraryName = "Pete's Null Audio Driver"; +static char * libraryInfo = "Pete's Null Audio Driver V1.1\nCoded by Pete Bernert\n"; + +//////////////////////////////////////////////////////////////////////// + +unsigned short regArea[10000]; // psx buffer +unsigned short spuMem[256*1024]; +unsigned char * spuMemC; +unsigned char * pSpuIrq=0; + +unsigned short spuCtrl, spuStat, spuIrq=0; // some vars to store psx reg infos +unsigned long spuAddr=0xffffffff; // address into spu mem +//char * pConfigFile=0; + +//////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////// + +void (CALLBACK *irqCallback)(void)=0; // func of main emu, called on spu irq +void (CALLBACK *cddavCallback)(unsigned short,unsigned short)=0; + +//////////////////////////////////////////////////////////////////////// +// CODE AREA +//////////////////////////////////////////////////////////////////////// + +void CALLBACK SPUwriteRegister(unsigned long reg, unsigned short val) +{ + unsigned long r=reg&0xfff; + regArea[(r-0xc00)>>1] = val; + + if(r>=0x0c00 && r<0x0d80) + { + //int ch=(r>>4)-0xc0; + switch(r&0x0f) + { + //------------------------------------------------// l volume + case 0: + //SetVolumeL(ch,val); + return; + //------------------------------------------------// r volume + case 2: + //SetVolumeR(ch,val); + return; + //------------------------------------------------// pitch + case 4: + //SetPitch(ch,val); + return; + //------------------------------------------------// start + case 6: + //s_chan[ch].pStart=spuMemC+((unsigned long) val<<3); + return; + //------------------------------------------------// adsr level + case 8: + return; + //------------------------------------------------// adsr rate + case 10: + return; + //------------------------------------------------// adsr volume + case 12: + return; + //------------------------------------------------// loop adr + case 14: + return; + //------------------------------------------------// + } + return; + } + + switch(r) + { + //-------------------------------------------------// + case H_SPUaddr: + spuAddr = (unsigned long) val<<3; + return; + //-------------------------------------------------// + case H_SPUdata: + spuMem[spuAddr>>1] = val; + spuAddr+=2; + if(spuAddr>0x7ffff) spuAddr=0; + return; + //-------------------------------------------------// + case H_SPUctrl: + spuCtrl=val; + return; + //-------------------------------------------------// + case H_SPUstat: + spuStat=val & 0xf800; + return; + //-------------------------------------------------// + case H_SPUirqAddr: + spuIrq = val; + pSpuIrq=spuMemC+((unsigned long) val<<3); + return; + //-------------------------------------------------// + case H_SPUon1: + //SoundOn(0,16,val); + return; + //-------------------------------------------------// + case H_SPUon2: + //SoundOn(16,24,val); + return; + //-------------------------------------------------// + case H_SPUoff1: + //SoundOff(0,16,val); + return; + //-------------------------------------------------// + case H_SPUoff2: + //SoundOff(16,24,val); + return; + //-------------------------------------------------// + case H_CDLeft: + if(cddavCallback) cddavCallback(0,val); + return; + case H_CDRight: + if(cddavCallback) cddavCallback(1,val); + return; + //-------------------------------------------------// + case H_FMod1: + //FModOn(0,16,val); + return; + //-------------------------------------------------// + case H_FMod2: + //FModOn(16,24,val); + return; + //-------------------------------------------------// + case H_Noise1: + //NoiseOn(0,16,val); + return; + //-------------------------------------------------// + case H_Noise2: + //NoiseOn(16,24,val); + return; + //-------------------------------------------------// + case H_RVBon1: + //ReverbOn(0,16,val); + return; + //-------------------------------------------------// + case H_RVBon2: + //ReverbOn(16,24,val); + return; + //-------------------------------------------------// + case H_Reverb: + return; + } +} + +//////////////////////////////////////////////////////////////////////// + +unsigned short CALLBACK SPUreadRegister(unsigned long reg) +{ + unsigned long r=reg&0xfff; + + if(r>=0x0c00 && r<0x0d80) + { + switch(r&0x0f) + { + case 12: // adsr vol + { + //int ch=(r>>4)-0xc0; + static unsigned short adsr_dummy_vol=0; + adsr_dummy_vol=!adsr_dummy_vol; + return adsr_dummy_vol; + } + + case 14: // return curr loop adr + { + //int ch=(r>>4)-0xc0; + return 0; + } + } + } + + switch(r) + { + case H_SPUctrl: + return spuCtrl; + + case H_SPUstat: + return spuStat; + + case H_SPUaddr: + return (unsigned short)(spuAddr>>3); + + case H_SPUdata: + { + unsigned short s=spuMem[spuAddr>>1]; + spuAddr+=2; + if(spuAddr>0x7ffff) spuAddr=0; + return s; + } + + case H_SPUirqAddr: + return spuIrq; + } + return regArea[(r-0xc00)>>1]; +} + +//////////////////////////////////////////////////////////////////////// + +unsigned short CALLBACK SPUreadDMA(void) +{ + unsigned short s=spuMem[spuAddr>>1]; + spuAddr+=2; + if(spuAddr>0x7ffff) spuAddr=0; + return s; +} + +//////////////////////////////////////////////////////////////////////// + +void CALLBACK SPUwriteDMA(unsigned short val) +{ + spuMem[spuAddr>>1] = val; // spu addr got by writeregister + spuAddr+=2; // inc spu addr + if(spuAddr>0x7ffff) spuAddr=0; // wrap +} + +//////////////////////////////////////////////////////////////////////// + +void CALLBACK SPUwriteDMAMem(unsigned short * pusPSXMem,int iSize) +{ + int i; + for(i=0;i>1] = *pusPSXMem++; // spu addr got by writeregister + spuAddr+=2; // inc spu addr + if(spuAddr>0x7ffff) spuAddr=0; // wrap + } +} + +//////////////////////////////////////////////////////////////////////// + +void CALLBACK SPUreadDMAMem(unsigned short * pusPSXMem,int iSize) +{ + int i; + for(i=0;i>1]; // spu addr got by writeregister + spuAddr+=2; // inc spu addr + if(spuAddr>0x7ffff) spuAddr=0; // wrap + } +} + +//////////////////////////////////////////////////////////////////////// +// XA AUDIO +//////////////////////////////////////////////////////////////////////// + +void CALLBACK SPUplayADPCMchannel(xa_decode_t *xap) +{ +} + +//////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////// +// INIT/EXIT STUFF +//////////////////////////////////////////////////////////////////////// + +long CALLBACK SPUinit(void) +{ + spuMemC=(unsigned char *)spuMem; // just small setup + return 0; +} + +//////////////////////////////////////////////////////////////////////// + +int bSPUIsOpen=0; + +long CALLBACK SPUopen(void) +{ + if(bSPUIsOpen) return 0; + + bSPUIsOpen=1; + + //if(pConfigFile) ReadConfigFile(pConfigFile); + + return PSE_SPU_ERR_SUCCESS; +} + +//////////////////////////////////////////////////////////////////////// + +void SPUsetConfigFile(char * pCfg) +{ + //pConfigFile=pCfg; +} + +//////////////////////////////////////////////////////////////////////// + +long CALLBACK SPUclose(void) +{ + if(!bSPUIsOpen) return 0; + bSPUIsOpen=0; + return 0; +} + +//////////////////////////////////////////////////////////////////////// + +long CALLBACK SPUshutdown(void) +{ + return 0; +} + +//////////////////////////////////////////////////////////////////////// +// MISC STUFF +//////////////////////////////////////////////////////////////////////// + +long CALLBACK SPUtest(void) +{ + return 0; +} + +//////////////////////////////////////////////////////////////////////// +// this functions will be called once, +// passes a callback that should be called on SPU-IRQ + +void CALLBACK SPUregisterCallback(void (CALLBACK *callback)(void)) +{ + irqCallback = callback; +} + +void CALLBACK SPUregisterCDDAVolume(void (CALLBACK *CDDAVcallback)(unsigned short,unsigned short)) +{ + cddavCallback = CDDAVcallback; +} + +//////////////////////////////////////////////////////////////////////// + +char * SPUgetLibInfos(void) +{ + return libraryInfo; +} + +//////////////////////////////////////////////////////////////////////// + +typedef struct +{ + char szSPUName[8]; + unsigned long ulFreezeVersion; + unsigned long ulFreezeSize; + unsigned char cSPUPort[0x200]; + unsigned char cSPURam[0x80000]; + xa_decode_t xaS; +} SPUFreeze_t; + +typedef struct +{ + unsigned long Future[256]; + +} SPUNULLFreeze_t; + +//////////////////////////////////////////////////////////////////////// + +long CALLBACK SPUfreeze(unsigned long ulFreezeMode,SPUFreeze_t * pF) +{ + int i; + + if(!pF) return 0; + + if(ulFreezeMode) + { + if(ulFreezeMode==1) + memset(pF,0,sizeof(SPUFreeze_t)+sizeof(SPUNULLFreeze_t)); + + strcpy(pF->szSPUName,"PBNUL"); + pF->ulFreezeVersion=1; + pF->ulFreezeSize=sizeof(SPUFreeze_t)+sizeof(SPUNULLFreeze_t); + + if(ulFreezeMode==2) return 1; + + memcpy(pF->cSPURam,spuMem,0x80000); + memcpy(pF->cSPUPort,regArea,0x200); + // dummy: + memset(&pF->xaS,0,sizeof(xa_decode_t)); + return 1; + } + + if(ulFreezeMode!=0) return 0; + + memcpy(spuMem,pF->cSPURam,0x80000); + memcpy(regArea,pF->cSPUPort,0x200); + + for(i=0;i<0x100;i++) + { + if(i!=H_SPUon1-0xc00 && i!=H_SPUon2-0xc00) + SPUwriteRegister(0x1f801c00+i*2,regArea[i]); + } + SPUwriteRegister(H_SPUon1,regArea[(H_SPUon1-0xc00)/2]); + SPUwriteRegister(H_SPUon2,regArea[(H_SPUon2-0xc00)/2]); + + return 1; +} + + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +// UNUSED WINDOWS FUNCS... YOU SHOULDN'T USE THEM IN LINUX + +long CALLBACK SPUconfigure(void) +{ + return 0; +} + +void CALLBACK SPUabout(void) +{ +} + +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +// OLD PSEMU 1 FUNCS... YOU SHOULDN'T USE THEM + +unsigned short CALLBACK SPUgetOne(unsigned long val) +{ + if(spuAddr!=0xffffffff) + { + return SPUreadDMA(); + } + if(val>=512*1024) val=512*1024-1; + return spuMem[val>>1]; +} + +void CALLBACK SPUputOne(unsigned long val,unsigned short data) +{ + if(spuAddr!=0xffffffff) + { + SPUwriteDMA(data); + return; + } + if(val>=512*1024) val=512*1024-1; + spuMem[val>>1] = data; +} + +void CALLBACK SPUplaySample(unsigned char ch) +{ +} + +void CALLBACK SPUsetAddr(unsigned char ch, unsigned short waddr) +{ + //s_chan[ch].pStart=spuMemC+((unsigned long) waddr<<3); +} + +void CALLBACK SPUsetPitch(unsigned char ch, unsigned short pitch) +{ + //SetPitch(ch,pitch); +} + +void CALLBACK SPUsetVolumeL(unsigned char ch, short vol) +{ + //SetVolumeL(ch,vol); +} + +void CALLBACK SPUsetVolumeR(unsigned char ch, short vol) +{ + //SetVolumeR(ch,vol); +} + +void CALLBACK SPUstartChannels1(unsigned short channels) +{ + //SoundOn(0,16,channels); +} + +void CALLBACK SPUstartChannels2(unsigned short channels) +{ + //SoundOn(16,24,channels); +} + +void CALLBACK SPUstopChannels1(unsigned short channels) +{ + //SoundOff(0,16,channels); +} + +void CALLBACK SPUstopChannels2(unsigned short channels) +{ + //SoundOff(16,24,channels); +} diff --git a/plugins/nullspu/xa.h b/plugins/nullspu/xa.h new file mode 100644 index 0000000..cd38f96 --- /dev/null +++ b/plugins/nullspu/xa.h @@ -0,0 +1,22 @@ +//============================================ +//=== Audio XA decoding +//=== Kazzuya +//============================================ + +typedef struct +{ + long y0, y1; +} ADPCM_Decode_t; + +typedef struct +{ + int freq; + int nbits; + int stereo; + int nsamples; + ADPCM_Decode_t left, right; + short pcm[16384]; +} xa_decode_t; + + + diff --git a/plugins/sdlinput/analog.c b/plugins/sdlinput/analog.c new file mode 100644 index 0000000..cb8fe97 --- /dev/null +++ b/plugins/sdlinput/analog.c @@ -0,0 +1,183 @@ +/* + * Copyright (c) 2009, Wei Mingzhi . + * All Rights Reserved. + * + * 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, see . + */ + +#include "pad.h" + +void InitAnalog() { + g.PadState[0].AnalogStatus[ANALOG_LEFT][0] = 127; + g.PadState[0].AnalogStatus[ANALOG_LEFT][1] = 127; + g.PadState[0].AnalogStatus[ANALOG_RIGHT][0] = 127; + g.PadState[0].AnalogStatus[ANALOG_RIGHT][1] = 127; + g.PadState[1].AnalogStatus[ANALOG_LEFT][0] = 127; + g.PadState[1].AnalogStatus[ANALOG_LEFT][1] = 127; + g.PadState[1].AnalogStatus[ANALOG_RIGHT][0] = 127; + g.PadState[1].AnalogStatus[ANALOG_RIGHT][1] = 127; + + memset(g.PadState[0].AnalogKeyStatus, 0, sizeof(g.PadState[0].AnalogKeyStatus)); + memset(g.PadState[1].AnalogKeyStatus, 0, sizeof(g.PadState[1].AnalogKeyStatus)); +} + +void CheckAnalog() { + int i, j, k, val; + uint8_t n; + + for (i = 0; i < 2; i++) { + if (g.cfg.PadDef[i].Type != PSE_PAD_TYPE_ANALOGPAD) { + continue; + } + + for (j = 0; j < ANALOG_TOTAL; j++) { + for (k = 0; k < 4; k++) { + if (g.PadState[i].AnalogKeyStatus[j][k]) { + switch (k) { + case ANALOG_XP: g.PadState[i].AnalogStatus[j][0] = 255; k++; break; + case ANALOG_XM: g.PadState[i].AnalogStatus[j][0] = 0; break; + case ANALOG_YP: g.PadState[i].AnalogStatus[j][1] = 255; k++; break; + case ANALOG_YM: g.PadState[i].AnalogStatus[j][1] = 0; break; + } + continue; + } + + switch (g.cfg.PadDef[i].AnalogDef[j][k].JoyEvType) { + case AXIS: + n = abs(g.cfg.PadDef[i].AnalogDef[j][k].J.Axis) - 1; + + if (g.cfg.PadDef[i].AnalogDef[j][k].J.Axis > 0) { + val = SDL_JoystickGetAxis(g.PadState[i].JoyDev, n); + if (val >= 0) { + val += 32640; + val /= 256; + + switch (k) { + case ANALOG_XP: g.PadState[i].AnalogStatus[j][0] = val; break; + case ANALOG_XM: g.PadState[i].AnalogStatus[j][0] = 255 - val; break; + case ANALOG_YP: g.PadState[i].AnalogStatus[j][1] = val; break; + case ANALOG_YM: g.PadState[i].AnalogStatus[j][1] = 255 - val; break; + } + } + } else if (g.cfg.PadDef[i].AnalogDef[j][k].J.Axis < 0) { + val = SDL_JoystickGetAxis(g.PadState[i].JoyDev, n); + if (val <= 0) { + val += 32640; + val /= 256; + + switch (k) { + case ANALOG_XP: g.PadState[i].AnalogStatus[j][0] = 255 - val; break; + case ANALOG_XM: g.PadState[i].AnalogStatus[j][0] = val; break; + case ANALOG_YP: g.PadState[i].AnalogStatus[j][1] = 255 - val; break; + case ANALOG_YM: g.PadState[i].AnalogStatus[j][1] = val; break; + } + } + } + break; + + case HAT: + n = (g.cfg.PadDef[i].AnalogDef[j][k].J.Hat >> 8); + + g.PadState[i].AnalogStatus[j][0] = 0; + + if (SDL_JoystickGetHat(g.PadState[i].JoyDev, n) & (g.cfg.PadDef[i].AnalogDef[j][k].J.Hat & 0xFF)) { + switch (k) { + case ANALOG_XP: g.PadState[i].AnalogStatus[j][0] = 255; k++; break; + case ANALOG_XM: g.PadState[i].AnalogStatus[j][0] = 0; break; + case ANALOG_YP: g.PadState[i].AnalogStatus[j][1] = 255; k++; break; + case ANALOG_YM: g.PadState[i].AnalogStatus[j][1] = 0; break; + } + } else { + switch (k) { + case ANALOG_XP: g.PadState[i].AnalogStatus[j][0] = 127; break; + case ANALOG_XM: g.PadState[i].AnalogStatus[j][0] = 127; break; + case ANALOG_YP: g.PadState[i].AnalogStatus[j][1] = 127; break; + case ANALOG_YM: g.PadState[i].AnalogStatus[j][1] = 127; break; + } + } + break; + + case BUTTON: + /*if (SDL_JoystickGetButton(g.PadState[i].JoyDev, g.cfg.PadDef[i].AnalogDef[j][k].J.Button)) { + switch (k) { + case ANALOG_XP: g.PadState[i].AnalogStatus[j][0] = 255; k++; break; + case ANALOG_XM: g.PadState[i].AnalogStatus[j][0] = 0; break; + case ANALOG_YP: g.PadState[i].AnalogStatus[j][1] = 255; k++; break; + case ANALOG_YM: g.PadState[i].AnalogStatus[j][1] = 0; break; + } + } else*/ { + switch (k) { + case ANALOG_XP: g.PadState[i].AnalogStatus[j][0] = 127; break; + case ANALOG_XM: g.PadState[i].AnalogStatus[j][0] = 127; break; + case ANALOG_YP: g.PadState[i].AnalogStatus[j][1] = 127; break; + case ANALOG_YM: g.PadState[i].AnalogStatus[j][1] = 127; break; + } + } + break; + + default: + switch (k) { + case ANALOG_XP: g.PadState[i].AnalogStatus[j][0] = 127; break; + case ANALOG_XM: g.PadState[i].AnalogStatus[j][0] = 127; break; + case ANALOG_YP: g.PadState[i].AnalogStatus[j][1] = 127; break; + case ANALOG_YM: g.PadState[i].AnalogStatus[j][1] = 127; break; + } + break; + } + } + } + } +} + +int AnalogKeyPressed(uint16_t Key) { + int i, j, k; + + for (i = 0; i < 2; i++) { + if (g.cfg.PadDef[i].Type != PSE_PAD_TYPE_ANALOGPAD) { + continue; + } + + for (j = 0; j < ANALOG_TOTAL; j++) { + for (k = 0; k < 4; k++) { + if (g.cfg.PadDef[i].AnalogDef[j][k].Key == Key) { + g.PadState[i].AnalogKeyStatus[j][k] = 1; + return 1; + } + } + } + } + + return 0; +} + +int AnalogKeyReleased(uint16_t Key) { + int i, j, k; + + for (i = 0; i < 2; i++) { + if (g.cfg.PadDef[i].Type != PSE_PAD_TYPE_ANALOGPAD) { + continue; + } + + for (j = 0; j < ANALOG_TOTAL; j++) { + for (k = 0; k < 4; k++) { + if (g.cfg.PadDef[i].AnalogDef[j][k].Key == Key) { + g.PadState[i].AnalogKeyStatus[j][k] = 0; + return 1; + } + } + } + } + + return 0; +} diff --git a/plugins/sdlinput/cfg-gtk2.c b/plugins/sdlinput/cfg-gtk2.c new file mode 100644 index 0000000..cfbd8fa --- /dev/null +++ b/plugins/sdlinput/cfg-gtk2.c @@ -0,0 +1,738 @@ +/* + * Copyright (c) 2009, Wei Mingzhi . + * All Rights Reserved. + * + * 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, see . + */ + +#include "cfg.c" + +#include +#include +#include +#include + +GtkWidget *MainWindow; + +const int DPad[DKEY_TOTAL] = { + DKEY_UP, + DKEY_DOWN, + DKEY_LEFT, + DKEY_RIGHT, + DKEY_CROSS, + DKEY_CIRCLE, + DKEY_SQUARE, + DKEY_TRIANGLE, + DKEY_L1, + DKEY_R1, + DKEY_L2, + DKEY_R2, + DKEY_SELECT, + DKEY_START, + DKEY_L3, + DKEY_R3 +}; + +const char *DPadText[DKEY_TOTAL] = { + N_("D-Pad Up"), + N_("D-Pad Down"), + N_("D-Pad Left"), + N_("D-Pad Right"), + N_("Cross"), + N_("Circle"), + N_("Square"), + N_("Triangle"), + N_("L1"), + N_("R1"), + N_("L2"), + N_("R2"), + N_("Select"), + N_("Start"), + N_("L3"), + N_("R3") +}; + +const char *AnalogText[] = { + N_("L-Stick Right"), + N_("L-Stick Left"), + N_("L-Stick Down"), + N_("L-Stick Up"), + N_("R-Stick Right"), + N_("R-Stick Left"), + N_("R-Stick Down"), + N_("R-Stick Up") +}; + +static int GetSelectedKeyIndex(int padnum) { + GladeXML *xml; + GtkTreeSelection *selection; + GtkTreeIter iter; + GtkTreeModel *model; + GtkTreePath *path; + gboolean selected; + int i; + + xml = glade_get_widget_tree(MainWindow); + + selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(glade_xml_get_widget(xml, padnum == 0 ? "treeview1" : "treeview2"))); + selected = gtk_tree_selection_get_selected(selection, &model, &iter); + + if (!selected) { + return -1; + } + + path = gtk_tree_model_get_path(model, &iter); + i = *gtk_tree_path_get_indices(path); + gtk_tree_path_free(path); + + return i; +} + +static void GetKeyDescription(char *buf, int joynum, int key) { + const char *hatname[16] = {_("Centered"), _("Up"), _("Right"), _("Rightup"), + _("Down"), "", _("Rightdown"), "", _("Left"), _("Leftup"), "", "", + _("Leftdown"), "", "", ""}; + + switch (g.cfg.PadDef[joynum].KeyDef[key].JoyEvType) { + case BUTTON: + sprintf(buf, _("Joystick: Button %d"), g.cfg.PadDef[joynum].KeyDef[key].J.Button); + break; + + case AXIS: + sprintf(buf, _("Joystick: Axis %d%c"), abs(g.cfg.PadDef[joynum].KeyDef[key].J.Axis) - 1, + g.cfg.PadDef[joynum].KeyDef[key].J.Axis > 0 ? '+' : '-'); + break; + + case HAT: + sprintf(buf, _("Joystick: Hat %d %s"), (g.cfg.PadDef[joynum].KeyDef[key].J.Hat >> 8), + hatname[g.cfg.PadDef[joynum].KeyDef[key].J.Hat & 0x0F]); + break; + + case NONE: + default: + buf[0] = '\0'; + break; + } + + if (g.cfg.PadDef[joynum].KeyDef[key].Key != 0) { + if (buf[0] != '\0') { + strcat(buf, " / "); + } + + strcat(buf, _("Keyboard:")); + strcat(buf, " "); + strcat(buf, XKeysymToString(g.cfg.PadDef[joynum].KeyDef[key].Key)); + } else if (buf[0] == '\0') { + strcpy(buf, _("(Not Set)")); + } +} + +static void GetAnalogDescription(char *buf, int joynum, int analognum, int dir) { + const char *hatname[16] = {_("Centered"), _("Up"), _("Right"), _("Rightup"), + _("Down"), "", _("Rightdown"), "", _("Left"), _("Leftup"), "", "", + _("Leftdown"), "", "", ""}; + + switch (g.cfg.PadDef[joynum].AnalogDef[analognum][dir].JoyEvType) { + case BUTTON: + sprintf(buf, _("Joystick: Button %d"), g.cfg.PadDef[joynum].AnalogDef[analognum][dir].J.Button); + break; + + case AXIS: + sprintf(buf, _("Joystick: Axis %d%c"), abs(g.cfg.PadDef[joynum].AnalogDef[analognum][dir].J.Axis) - 1, + g.cfg.PadDef[joynum].AnalogDef[analognum][dir].J.Axis > 0 ? '+' : '-'); + break; + + case HAT: + sprintf(buf, _("Joystick: Hat %d %s"), (g.cfg.PadDef[joynum].AnalogDef[analognum][dir].J.Hat >> 8), + hatname[g.cfg.PadDef[joynum].AnalogDef[analognum][dir].J.Hat & 0x0F]); + break; + + case NONE: + default: + buf[0] = '\0'; + break; + } + + if (g.cfg.PadDef[joynum].AnalogDef[analognum][dir].Key != 0) { + if (buf[0] != '\0') { + strcat(buf, " / "); + } + + strcat(buf, _("Keyboard:")); + strcat(buf, " "); + strcat(buf, XKeysymToString(g.cfg.PadDef[joynum].AnalogDef[analognum][dir].Key)); + } else if (buf[0] == '\0') { + strcpy(buf, _("(Not Set)")); + } +} + +static void UpdateKeyList() { + const char *widgetname[2] = {"treeview1", "treeview2"}; + + GladeXML *xml; + GtkWidget *widget; + GtkListStore *store; + GtkTreeIter iter; + int i, j; + char buf[256]; + + xml = glade_get_widget_tree(MainWindow); + + for (i = 0; i < 2; i++) { + int total; + + if (g.cfg.PadDef[i].Type == PSE_PAD_TYPE_ANALOGPAD) { + total = DKEY_TOTAL; + } else { + total = DKEY_TOTAL - 2; + } + + widget = glade_xml_get_widget(xml, widgetname[i]); + + store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); + + for (j = 0; j < total; j++) { + gtk_list_store_append(store, &iter); + GetKeyDescription(buf, i, DPad[j]); + gtk_list_store_set(store, &iter, 0, _(DPadText[j]), 1, buf, -1); + } + + if (g.cfg.PadDef[i].Type == PSE_PAD_TYPE_ANALOGPAD) { + for (j = 0; j < 8; j++) { + gtk_list_store_append(store, &iter); + GetAnalogDescription(buf, i, j / 4, j % 4); + gtk_list_store_set(store, &iter, 0, _(AnalogText[j]), 1, buf, -1); + } + } + + gtk_tree_view_set_model(GTK_TREE_VIEW(widget), GTK_TREE_MODEL(store)); + g_object_unref(G_OBJECT(store)); + gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(widget), TRUE); + gtk_widget_show(widget); + } +} + +static void UpdateKey() { + const char *widgetname[2] = {"treeview1", "treeview2"}; + int i, index; + GladeXML *xml; + GtkWidget *widget; + GtkTreeModel *model; + GtkTreeIter iter; + GValue value = {0, }; + char buf[256]; + + xml = glade_get_widget_tree(MainWindow); + + for (i = 0; i < 2; i++) { + index = GetSelectedKeyIndex(i); + if (index == -1) continue; + + widget = glade_xml_get_widget(xml, widgetname[i]); + gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)), &model, &iter); + + if (index < DKEY_TOTAL) { + GetKeyDescription(buf, i, DPad[index]); + } else { + GetAnalogDescription(buf, i, (index - DKEY_TOTAL) / 4, (index - DKEY_TOTAL) % 4); + } + + g_value_init(&value, G_TYPE_STRING); + g_value_set_string(&value, buf); + gtk_list_store_set_value(GTK_LIST_STORE(model), &iter, 1, &value); + } +} + +static void OnConfigExit(GtkWidget *widget, gpointer user_data) { + SavePADConfig(); + + gtk_widget_destroy(widget); + SDL_Quit(); + + gtk_exit(0); +} + +static void TreeSelectionChanged(GtkTreeSelection *selection, gpointer user_data) { + GladeXML *xml; + GtkTreeIter iter; + GtkTreeModel *model; + GtkTreePath *path; + + gboolean selected; + int i; + + selected = gtk_tree_selection_get_selected(selection, &model, &iter); + + if (selected) { + path = gtk_tree_model_get_path(model, &iter); + i = *gtk_tree_path_get_indices(path); + gtk_tree_path_free(path); + + // If a row was selected, and the row is not blank, we can now enable + // some of the disabled widgets + xml = glade_get_widget_tree(MainWindow); + + if ((int)user_data == 0) { + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btnchange1")), TRUE); + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btnreset1")), TRUE); + } else { + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btnchange2")), TRUE); + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btnreset2")), TRUE); + } + } else { + xml = glade_get_widget_tree(MainWindow); + + if ((int)user_data == 0) { + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btnchange1")), FALSE); + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btnreset1")), FALSE); + } else { + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btnchange2")), FALSE); + gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(xml, "btnreset2")), FALSE); + } + } +} + +static void OnDeviceChanged(GtkWidget *widget, gpointer user_data) { + int n = (int)user_data, current = gtk_combo_box_get_active(GTK_COMBO_BOX(widget)); + current--; + g.cfg.PadDef[n].DevNum = current; +} + +static void OnTypeChanged(GtkWidget *widget, gpointer user_data) { + int n = (int)user_data, current = gtk_combo_box_get_active(GTK_COMBO_BOX(widget)); + g.cfg.PadDef[n].Type = (current == 0 ? PSE_PAD_TYPE_STANDARD : PSE_PAD_TYPE_ANALOGPAD); + + UpdateKeyList(); +} + +static void OnThreadedToggled(GtkWidget *widget, gpointer user_data) { + g.cfg.Threaded = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); +} + +static void ReadDKeyEvent(int padnum, int key) { + SDL_Joystick *js; + time_t t; + GdkEvent *ge; + int i; + Sint16 axis, numAxes = 0, InitAxisPos[256], PrevAxisPos[256]; + + if (g.cfg.PadDef[padnum].DevNum >= 0) { + js = SDL_JoystickOpen(g.cfg.PadDef[padnum].DevNum); + SDL_JoystickEventState(SDL_IGNORE); + + SDL_JoystickUpdate(); + + numAxes = SDL_JoystickNumAxes(js); + if (numAxes > 256) numAxes = 256; + + for (i = 0; i < numAxes; i++) { + InitAxisPos[i] = PrevAxisPos[i] = SDL_JoystickGetAxis(js, i); + } + } else { + js = NULL; + } + + t = time(NULL); + + while (time(NULL) < t + 10) { + // check joystick events + if (js != NULL) { + SDL_JoystickUpdate(); + + for (i = 0; i < SDL_JoystickNumButtons(js); i++) { + if (SDL_JoystickGetButton(js, i)) { + g.cfg.PadDef[padnum].KeyDef[key].JoyEvType = BUTTON; + g.cfg.PadDef[padnum].KeyDef[key].J.Button = i; + goto end; + } + } + + for (i = 0; i < numAxes; i++) { + axis = SDL_JoystickGetAxis(js, i); + if (abs(axis) > 16383 && (abs(axis - InitAxisPos[i]) > 4096 || abs(axis - PrevAxisPos[i]) > 4096)) { + g.cfg.PadDef[padnum].KeyDef[key].JoyEvType = AXIS; + g.cfg.PadDef[padnum].KeyDef[key].J.Axis = (i + 1) * (axis > 0 ? 1 : -1); + goto end; + } + PrevAxisPos[i] = axis; + } + + for (i = 0; i < SDL_JoystickNumHats(js); i++) { + axis = SDL_JoystickGetHat(js, i); + if (axis != SDL_HAT_CENTERED) { + g.cfg.PadDef[padnum].KeyDef[key].JoyEvType = HAT; + + if (axis & SDL_HAT_UP) { + g.cfg.PadDef[padnum].KeyDef[key].J.Hat = ((i << 8) | SDL_HAT_UP); + } else if (axis & SDL_HAT_DOWN) { + g.cfg.PadDef[padnum].KeyDef[key].J.Hat = ((i << 8) | SDL_HAT_DOWN); + } else if (axis & SDL_HAT_LEFT) { + g.cfg.PadDef[padnum].KeyDef[key].J.Hat = ((i << 8) | SDL_HAT_LEFT); + } else if (axis & SDL_HAT_RIGHT) { + g.cfg.PadDef[padnum].KeyDef[key].J.Hat = ((i << 8) | SDL_HAT_RIGHT); + } + + goto end; + } + } + } + + // check keyboard events + while ((ge = gdk_event_get()) != NULL) { + if (ge->type == GDK_KEY_PRESS) { + if (ge->key.keyval != XK_Escape) { + g.cfg.PadDef[padnum].KeyDef[key].Key = ge->key.keyval; + } + gdk_event_free(ge); + goto end; + } + gdk_event_free(ge); + } + + usleep(5000); + } + +end: + if (js != NULL) { + SDL_JoystickClose(js); + } +} + +static void ReadAnalogEvent(int padnum, int analognum, int analogdir) { + SDL_Joystick *js; + time_t t; + GdkEvent *ge; + int i; + Sint16 axis, numAxes = 0, InitAxisPos[256], PrevAxisPos[256]; + + if (g.cfg.PadDef[padnum].DevNum >= 0) { + js = SDL_JoystickOpen(g.cfg.PadDef[padnum].DevNum); + SDL_JoystickEventState(SDL_IGNORE); + + SDL_JoystickUpdate(); + + numAxes = SDL_JoystickNumAxes(js); + if (numAxes > 256) numAxes = 256; + + for (i = 0; i < SDL_JoystickNumAxes(js); i++) { + InitAxisPos[i] = PrevAxisPos[i] = SDL_JoystickGetAxis(js, i); + } + } else { + js = NULL; + } + + t = time(NULL); + + while (time(NULL) < t + 10) { + // check joystick events + if (js != NULL) { + SDL_JoystickUpdate(); + + for (i = 0; i < SDL_JoystickNumButtons(js); i++) { + if (SDL_JoystickGetButton(js, i)) { + g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].JoyEvType = BUTTON; + g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].J.Button = i; + goto end; + } + } + + for (i = 0; i < numAxes; i++) { + axis = SDL_JoystickGetAxis(js, i); + if (abs(axis) > 16383 && (abs(axis - InitAxisPos[i]) > 4096 || abs(axis - PrevAxisPos[i]) > 4096)) { + g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].JoyEvType = AXIS; + g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].J.Axis = (i + 1) * (axis > 0 ? 1 : -1); + goto end; + } + PrevAxisPos[i] = axis; + } + + for (i = 0; i < SDL_JoystickNumHats(js); i++) { + axis = SDL_JoystickGetHat(js, i); + if (axis != SDL_HAT_CENTERED) { + g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].JoyEvType = HAT; + + if (axis & SDL_HAT_UP) { + g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].J.Hat = ((i << 8) | SDL_HAT_UP); + } else if (axis & SDL_HAT_DOWN) { + g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].J.Hat = ((i << 8) | SDL_HAT_DOWN); + } else if (axis & SDL_HAT_LEFT) { + g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].J.Hat = ((i << 8) | SDL_HAT_LEFT); + } else if (axis & SDL_HAT_RIGHT) { + g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].J.Hat = ((i << 8) | SDL_HAT_RIGHT); + } + + goto end; + } + } + } + + // check keyboard events + while ((ge = gdk_event_get()) != NULL) { + if (ge->type == GDK_KEY_PRESS) { + if (ge->key.keyval != XK_Escape) { + g.cfg.PadDef[padnum].AnalogDef[analognum][analogdir].Key = ge->key.keyval; + } + gdk_event_free(ge); + goto end; + } + gdk_event_free(ge); + } + + usleep(5000); + } + +end: + if (js != NULL) { + SDL_JoystickClose(js); + } +} + +static void OnChangeClicked(GtkWidget *widget, gpointer user_data) { + int pad = (int)user_data; + int index = GetSelectedKeyIndex(pad); + + if (index == -1) return; + + if (index < DKEY_TOTAL) { + ReadDKeyEvent(pad, DPad[index]); + } else { + index -= DKEY_TOTAL; + ReadAnalogEvent(pad, index / 4, index % 4); + } + + UpdateKey(); +} + +static void OnResetClicked(GtkWidget *widget, gpointer user_data) { + int pad = (int)user_data; + int index = GetSelectedKeyIndex(pad); + + if (index == -1) return; + + if (index < DKEY_TOTAL) { + g.cfg.PadDef[pad].KeyDef[DPad[index]].Key = 0; + g.cfg.PadDef[pad].KeyDef[DPad[index]].JoyEvType = NONE; + g.cfg.PadDef[pad].KeyDef[DPad[index]].J.Button = 0; + } else { + index -= DKEY_TOTAL; + g.cfg.PadDef[pad].AnalogDef[index / 4][index % 4].Key = 0; + g.cfg.PadDef[pad].AnalogDef[index / 4][index % 4].JoyEvType = NONE; + g.cfg.PadDef[pad].AnalogDef[index / 4][index % 4].J.Button = 0; + } + + UpdateKey(); +} + +static void PopulateDevList() { + const char *widgetname[2] = {"combodev1", "combodev2"}; + int i, j, n; + GtkWidget *widget; + GladeXML *xml; + GtkTreeIter iter; + GtkListStore *store; + GtkCellRenderer *renderer; + char buf[256]; + + xml = glade_get_widget_tree(MainWindow); + + for (i = 0; i < 2; i++) { + widget = glade_xml_get_widget(xml, widgetname[i]); + + renderer = gtk_cell_renderer_text_new(); + gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(widget), renderer, FALSE); + gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(widget), renderer, "text", 0); + + store = gtk_list_store_new(1, G_TYPE_STRING); + + gtk_list_store_append(store, &iter); + gtk_list_store_set(store, &iter, 0, _("None"), -1); + + n = SDL_NumJoysticks(); + for (j = 0; j < n; j++) { + sprintf(buf, "%d: %s", j + 1, SDL_JoystickName(j)); + gtk_list_store_append(store, &iter); + gtk_list_store_set(store, &iter, 0, buf, -1); + } + + gtk_combo_box_set_model(GTK_COMBO_BOX(widget), GTK_TREE_MODEL(store)); + + n = g.cfg.PadDef[i].DevNum + 1; + if (n > SDL_NumJoysticks()) { + n = 0; + g.cfg.PadDef[i].DevNum = -1; + } + + gtk_combo_box_set_active(GTK_COMBO_BOX(widget), n); + } +} + +long PADconfigure() { + GladeXML *xml; + GtkWidget *widget; + GtkTreeSelection *treesel; + GtkTreeViewColumn *column; + GtkCellRenderer *renderer; + + if (SDL_Init(SDL_INIT_JOYSTICK) == -1) { + fprintf(stderr, "Failed to initialize SDL!\n"); + return -1; + } + + LoadPADConfig(); + + xml = glade_xml_new(DATADIR "dfinput.glade2", "CfgWnd", NULL); + if (xml == NULL) { + g_warning("We could not load the interface!"); + return -1; + } + + MainWindow = glade_xml_get_widget(xml, "CfgWnd"); + gtk_window_set_title(GTK_WINDOW(MainWindow), _("Gamepad/Keyboard Input Configuration")); + + widget = glade_xml_get_widget(xml, "treeview1"); + + // column for key + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes(_("Key"), + renderer, "text", 0, NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(widget), column); + + // column for button + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes(_("Button"), + renderer, "text", 1, NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(widget), column); + + treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)); + gtk_tree_selection_set_mode(treesel, GTK_SELECTION_SINGLE); + + g_signal_connect_data(G_OBJECT(treesel), "changed", + G_CALLBACK(TreeSelectionChanged), (gpointer)0, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "treeview2"); + + // column for key + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes(_("Key"), + renderer, "text", 0, NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(widget), column); + + // column for button + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes(_("Button"), + renderer, "text", 1, NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(widget), column); + + treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)); + gtk_tree_selection_set_mode(treesel, GTK_SELECTION_SINGLE); + + g_signal_connect_data(G_OBJECT(treesel), "changed", + G_CALLBACK(TreeSelectionChanged), (gpointer)1, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "CfgWnd"); + g_signal_connect_data(GTK_OBJECT(widget), "delete_event", + GTK_SIGNAL_FUNC(OnConfigExit), NULL, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btnclose"); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnConfigExit), NULL, NULL, G_CONNECT_AFTER); + + PopulateDevList(); + UpdateKeyList(); + + widget = glade_xml_get_widget(xml, "checkmt"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), g.cfg.Threaded); + g_signal_connect_data(GTK_OBJECT(widget), "toggled", + GTK_SIGNAL_FUNC(OnThreadedToggled), NULL, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "combodev1"); + g_signal_connect_data(GTK_OBJECT(widget), "changed", + GTK_SIGNAL_FUNC(OnDeviceChanged), (gpointer)0, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "combodev2"); + g_signal_connect_data(GTK_OBJECT(widget), "changed", + GTK_SIGNAL_FUNC(OnDeviceChanged), (gpointer)1, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "combotype1"); + gtk_combo_box_set_active(GTK_COMBO_BOX(widget), + g.cfg.PadDef[0].Type == PSE_PAD_TYPE_ANALOGPAD ? 1 : 0); + g_signal_connect_data(GTK_OBJECT(widget), "changed", + GTK_SIGNAL_FUNC(OnTypeChanged), (gpointer)0, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "combotype2"); + gtk_combo_box_set_active(GTK_COMBO_BOX(widget), + g.cfg.PadDef[1].Type == PSE_PAD_TYPE_ANALOGPAD ? 1 : 0); + g_signal_connect_data(GTK_OBJECT(widget), "changed", + GTK_SIGNAL_FUNC(OnTypeChanged), (gpointer)1, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btnchange1"); + gtk_widget_set_sensitive(widget, FALSE); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnChangeClicked), (gpointer)0, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btnreset1"); + gtk_widget_set_sensitive(widget, FALSE); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnResetClicked), (gpointer)0, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btnchange2"); + gtk_widget_set_sensitive(widget, FALSE); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnChangeClicked), (gpointer)1, NULL, G_CONNECT_AFTER); + + widget = glade_xml_get_widget(xml, "btnreset2"); + gtk_widget_set_sensitive(widget, FALSE); + g_signal_connect_data(GTK_OBJECT(widget), "clicked", + GTK_SIGNAL_FUNC(OnResetClicked), (gpointer)1, NULL, G_CONNECT_AFTER); + + gtk_widget_show(MainWindow); + gtk_main(); + + return 0; +} + +void PADabout() { + const char *authors[]= {"Wei Mingzhi ", NULL}; + GtkWidget *widget; + + widget = gtk_about_dialog_new(); + gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(widget), "Gamepad/Keyboard Input"); + gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(widget), "1.1"); + gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(widget), authors); + gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(widget), "http://www.codeplex.com/pcsxr/"); + + gtk_dialog_run(GTK_DIALOG(widget)); + gtk_widget_destroy(widget); +} + +int main(int argc, char *argv[]) { +#ifdef ENABLE_NLS + setlocale(LC_ALL, ""); + bindtextdomain(GETTEXT_PACKAGE, LOCALE_DIR); + bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); + textdomain(GETTEXT_PACKAGE); +#endif + + gtk_set_locale(); + gtk_init(&argc, &argv); + + if (argc > 1 && !strcmp(argv[1], "-about")) { + PADabout(); + } else { + PADconfigure(); + } + + gtk_exit(0); + return 0; +} diff --git a/plugins/sdlinput/cfg.c b/plugins/sdlinput/cfg.c new file mode 100644 index 0000000..c281f2b --- /dev/null +++ b/plugins/sdlinput/cfg.c @@ -0,0 +1,347 @@ +/* + * Copyright (c) 2009, Wei Mingzhi . + * All Rights Reserved. + * + * 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, see . + */ + +#include "pad.h" + +#define CONFIG_FILE "dfinput.cfg" + +GLOBALDATA g; + +static void SetDefaultConfig() { + memset(&g.cfg, 0, sizeof(g.cfg)); + + g.cfg.Threaded = 1; + + g.cfg.PadDef[0].DevNum = 0; + g.cfg.PadDef[1].DevNum = 1; + + g.cfg.PadDef[0].Type = PSE_PAD_TYPE_STANDARD; + g.cfg.PadDef[1].Type = PSE_PAD_TYPE_STANDARD; + + // Pad1 keyboard + g.cfg.PadDef[0].KeyDef[DKEY_SELECT].Key = SDLK_c; + g.cfg.PadDef[0].KeyDef[DKEY_START].Key = SDLK_v; + g.cfg.PadDef[0].KeyDef[DKEY_UP].Key = SDLK_UP; + g.cfg.PadDef[0].KeyDef[DKEY_RIGHT].Key = SDLK_RIGHT; + g.cfg.PadDef[0].KeyDef[DKEY_DOWN].Key = SDLK_DOWN; + g.cfg.PadDef[0].KeyDef[DKEY_LEFT].Key = SDLK_LEFT; + g.cfg.PadDef[0].KeyDef[DKEY_L2].Key = SDLK_e; + g.cfg.PadDef[0].KeyDef[DKEY_R2].Key = SDLK_t; + g.cfg.PadDef[0].KeyDef[DKEY_L1].Key = SDLK_w; + g.cfg.PadDef[0].KeyDef[DKEY_R1].Key = SDLK_r; + g.cfg.PadDef[0].KeyDef[DKEY_TRIANGLE].Key = SDLK_d; + g.cfg.PadDef[0].KeyDef[DKEY_CIRCLE].Key = SDLK_x; + g.cfg.PadDef[0].KeyDef[DKEY_CROSS].Key = SDLK_z; + g.cfg.PadDef[0].KeyDef[DKEY_SQUARE].Key = SDLK_s; + + // Pad1 joystick + // Xbox 360 controller setting + g.cfg.PadDef[0].KeyDef[DKEY_SELECT].JoyEvType = BUTTON; + g.cfg.PadDef[0].KeyDef[DKEY_SELECT].J.Button = 6; + g.cfg.PadDef[0].KeyDef[DKEY_START].JoyEvType = BUTTON; + g.cfg.PadDef[0].KeyDef[DKEY_START].J.Button = 7; + g.cfg.PadDef[0].KeyDef[DKEY_UP].JoyEvType = AXIS; + g.cfg.PadDef[0].KeyDef[DKEY_UP].J.Axis = -2; + g.cfg.PadDef[0].KeyDef[DKEY_RIGHT].JoyEvType = AXIS; + g.cfg.PadDef[0].KeyDef[DKEY_RIGHT].J.Axis = 1; + g.cfg.PadDef[0].KeyDef[DKEY_DOWN].JoyEvType = AXIS; + g.cfg.PadDef[0].KeyDef[DKEY_DOWN].J.Axis = 2; + g.cfg.PadDef[0].KeyDef[DKEY_LEFT].JoyEvType = AXIS; + g.cfg.PadDef[0].KeyDef[DKEY_LEFT].J.Axis = -1; + g.cfg.PadDef[0].KeyDef[DKEY_L2].JoyEvType = BUTTON; + g.cfg.PadDef[0].KeyDef[DKEY_L2].J.Button = 4; + g.cfg.PadDef[0].KeyDef[DKEY_L1].JoyEvType = BUTTON; + g.cfg.PadDef[0].KeyDef[DKEY_L1].J.Button = 9; + g.cfg.PadDef[0].KeyDef[DKEY_R2].JoyEvType = BUTTON; + g.cfg.PadDef[0].KeyDef[DKEY_R2].J.Button = 5; + g.cfg.PadDef[0].KeyDef[DKEY_R1].JoyEvType = BUTTON; + g.cfg.PadDef[0].KeyDef[DKEY_R1].J.Button = 10; + g.cfg.PadDef[0].KeyDef[DKEY_TRIANGLE].JoyEvType = BUTTON; + g.cfg.PadDef[0].KeyDef[DKEY_TRIANGLE].J.Button = 3; + g.cfg.PadDef[0].KeyDef[DKEY_CIRCLE].JoyEvType = BUTTON; + g.cfg.PadDef[0].KeyDef[DKEY_CIRCLE].J.Button = 1; + g.cfg.PadDef[0].KeyDef[DKEY_CROSS].JoyEvType = BUTTON; + g.cfg.PadDef[0].KeyDef[DKEY_CROSS].J.Button = 0; + g.cfg.PadDef[0].KeyDef[DKEY_SQUARE].JoyEvType = BUTTON; + g.cfg.PadDef[0].KeyDef[DKEY_SQUARE].J.Button = 2; + + // Pad2 joystick + g.cfg.PadDef[1].KeyDef[DKEY_SELECT].JoyEvType = BUTTON; + g.cfg.PadDef[1].KeyDef[DKEY_SELECT].J.Button = 8; + g.cfg.PadDef[1].KeyDef[DKEY_START].JoyEvType = BUTTON; + g.cfg.PadDef[1].KeyDef[DKEY_START].J.Button = 9; + g.cfg.PadDef[1].KeyDef[DKEY_UP].JoyEvType = AXIS; + g.cfg.PadDef[1].KeyDef[DKEY_UP].J.Axis = -2; + g.cfg.PadDef[1].KeyDef[DKEY_RIGHT].JoyEvType = AXIS; + g.cfg.PadDef[1].KeyDef[DKEY_RIGHT].J.Axis = 1; + g.cfg.PadDef[1].KeyDef[DKEY_DOWN].JoyEvType = AXIS; + g.cfg.PadDef[1].KeyDef[DKEY_DOWN].J.Axis = 2; + g.cfg.PadDef[1].KeyDef[DKEY_LEFT].JoyEvType = AXIS; + g.cfg.PadDef[1].KeyDef[DKEY_LEFT].J.Axis = -1; + g.cfg.PadDef[1].KeyDef[DKEY_L2].JoyEvType = BUTTON; + g.cfg.PadDef[1].KeyDef[DKEY_L2].J.Button = 4; + g.cfg.PadDef[1].KeyDef[DKEY_L1].JoyEvType = BUTTON; + g.cfg.PadDef[1].KeyDef[DKEY_L1].J.Button = 6; + g.cfg.PadDef[1].KeyDef[DKEY_R2].JoyEvType = BUTTON; + g.cfg.PadDef[1].KeyDef[DKEY_R2].J.Button = 5; + g.cfg.PadDef[1].KeyDef[DKEY_R1].JoyEvType = BUTTON; + g.cfg.PadDef[1].KeyDef[DKEY_R1].J.Button = 7; + g.cfg.PadDef[1].KeyDef[DKEY_TRIANGLE].JoyEvType = BUTTON; + g.cfg.PadDef[1].KeyDef[DKEY_TRIANGLE].J.Button = 0; + g.cfg.PadDef[1].KeyDef[DKEY_CIRCLE].JoyEvType = BUTTON; + g.cfg.PadDef[1].KeyDef[DKEY_CIRCLE].J.Button = 1; + g.cfg.PadDef[1].KeyDef[DKEY_CROSS].JoyEvType = BUTTON; + g.cfg.PadDef[1].KeyDef[DKEY_CROSS].J.Button = 2; + g.cfg.PadDef[1].KeyDef[DKEY_SQUARE].JoyEvType = BUTTON; + g.cfg.PadDef[1].KeyDef[DKEY_SQUARE].J.Button = 3; +} + +void LoadPADConfig() { + FILE *fp; + char buf[256]; + int current, a, b, c; + + SetDefaultConfig(); + + fp = fopen(CONFIG_FILE, "r"); + if (fp == NULL) { + return; + } + + current = 0; + + while (fgets(buf, 256, fp) != NULL) { + if (strncmp(buf, "Threaded=", 9) == 0) { + g.cfg.Threaded = atoi(&buf[9]); + } else if (strncmp(buf, "[PAD", 4) == 0) { + current = atoi(&buf[4]) - 1; + if (current < 0) { + current = 0; + } else if (current > 1) { + current = 1; + } + } else if (strncmp(buf, "DevNum=", 7) == 0) { + g.cfg.PadDef[current].DevNum = atoi(&buf[7]); + } else if (strncmp(buf, "Type=", 5) == 0) { + g.cfg.PadDef[current].Type = atoi(&buf[5]); + } else if (strncmp(buf, "Select=", 7) == 0) { + sscanf(buf, "Select=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].KeyDef[DKEY_SELECT].Key = a; + g.cfg.PadDef[current].KeyDef[DKEY_SELECT].JoyEvType = b; + g.cfg.PadDef[current].KeyDef[DKEY_SELECT].J.d = c; + } else if (strncmp(buf, "L3=", 3) == 0) { + sscanf(buf, "L3=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].KeyDef[DKEY_L3].Key = a; + g.cfg.PadDef[current].KeyDef[DKEY_L3].JoyEvType = b; + g.cfg.PadDef[current].KeyDef[DKEY_L3].J.d = c; + } else if (strncmp(buf, "R3=", 3) == 0) { + sscanf(buf, "R3=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].KeyDef[DKEY_R3].Key = a; + g.cfg.PadDef[current].KeyDef[DKEY_R3].JoyEvType = b; + g.cfg.PadDef[current].KeyDef[DKEY_R3].J.d = c; + } else if (strncmp(buf, "Start=", 6) == 0) { + sscanf(buf, "Start=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].KeyDef[DKEY_START].Key = a; + g.cfg.PadDef[current].KeyDef[DKEY_START].JoyEvType = b; + g.cfg.PadDef[current].KeyDef[DKEY_START].J.d = c; + } else if (strncmp(buf, "Up=", 3) == 0) { + sscanf(buf, "Up=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].KeyDef[DKEY_UP].Key = a; + g.cfg.PadDef[current].KeyDef[DKEY_UP].JoyEvType = b; + g.cfg.PadDef[current].KeyDef[DKEY_UP].J.d = c; + } else if (strncmp(buf, "Right=", 6) == 0) { + sscanf(buf, "Right=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].KeyDef[DKEY_RIGHT].Key = a; + g.cfg.PadDef[current].KeyDef[DKEY_RIGHT].JoyEvType = b; + g.cfg.PadDef[current].KeyDef[DKEY_RIGHT].J.d = c; + } else if (strncmp(buf, "Down=", 5) == 0) { + sscanf(buf, "Down=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].KeyDef[DKEY_DOWN].Key = a; + g.cfg.PadDef[current].KeyDef[DKEY_DOWN].JoyEvType = b; + g.cfg.PadDef[current].KeyDef[DKEY_DOWN].J.d = c; + } else if (strncmp(buf, "Left=", 5) == 0) { + sscanf(buf, "Left=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].KeyDef[DKEY_LEFT].Key = a; + g.cfg.PadDef[current].KeyDef[DKEY_LEFT].JoyEvType = b; + g.cfg.PadDef[current].KeyDef[DKEY_LEFT].J.d = c; + } else if (strncmp(buf, "L2=", 3) == 0) { + sscanf(buf, "L2=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].KeyDef[DKEY_L2].Key = a; + g.cfg.PadDef[current].KeyDef[DKEY_L2].JoyEvType = b; + g.cfg.PadDef[current].KeyDef[DKEY_L2].J.d = c; + } else if (strncmp(buf, "R2=", 3) == 0) { + sscanf(buf, "R2=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].KeyDef[DKEY_R2].Key = a; + g.cfg.PadDef[current].KeyDef[DKEY_R2].JoyEvType = b; + g.cfg.PadDef[current].KeyDef[DKEY_R2].J.d = c; + } else if (strncmp(buf, "L1=", 3) == 0) { + sscanf(buf, "L1=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].KeyDef[DKEY_L1].Key = a; + g.cfg.PadDef[current].KeyDef[DKEY_L1].JoyEvType = b; + g.cfg.PadDef[current].KeyDef[DKEY_L1].J.d = c; + } else if (strncmp(buf, "R1=", 3) == 0) { + sscanf(buf, "R1=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].KeyDef[DKEY_R1].Key = a; + g.cfg.PadDef[current].KeyDef[DKEY_R1].JoyEvType = b; + g.cfg.PadDef[current].KeyDef[DKEY_R1].J.d = c; + } else if (strncmp(buf, "Triangle=", 9) == 0) { + sscanf(buf, "Triangle=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].KeyDef[DKEY_TRIANGLE].Key = a; + g.cfg.PadDef[current].KeyDef[DKEY_TRIANGLE].JoyEvType = b; + g.cfg.PadDef[current].KeyDef[DKEY_TRIANGLE].J.d = c; + } else if (strncmp(buf, "Circle=", 7) == 0) { + sscanf(buf, "Circle=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].KeyDef[DKEY_CIRCLE].Key = a; + g.cfg.PadDef[current].KeyDef[DKEY_CIRCLE].JoyEvType = b; + g.cfg.PadDef[current].KeyDef[DKEY_CIRCLE].J.d = c; + } else if (strncmp(buf, "Cross=", 6) == 0) { + sscanf(buf, "Cross=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].KeyDef[DKEY_CROSS].Key = a; + g.cfg.PadDef[current].KeyDef[DKEY_CROSS].JoyEvType = b; + g.cfg.PadDef[current].KeyDef[DKEY_CROSS].J.d = c; + } else if (strncmp(buf, "Square=", 7) == 0) { + sscanf(buf, "Square=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].KeyDef[DKEY_SQUARE].Key = a; + g.cfg.PadDef[current].KeyDef[DKEY_SQUARE].JoyEvType = b; + g.cfg.PadDef[current].KeyDef[DKEY_SQUARE].J.d = c; + } else if (strncmp(buf, "LeftAnalogXP=", 13) == 0) { + sscanf(buf, "LeftAnalogXP=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].AnalogDef[ANALOG_LEFT][ANALOG_XP].Key = a; + g.cfg.PadDef[current].AnalogDef[ANALOG_LEFT][ANALOG_XP].JoyEvType = b; + g.cfg.PadDef[current].AnalogDef[ANALOG_LEFT][ANALOG_XP].J.d = c; + } else if (strncmp(buf, "LeftAnalogXM=", 13) == 0) { + sscanf(buf, "LeftAnalogXM=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].AnalogDef[ANALOG_LEFT][ANALOG_XM].Key = a; + g.cfg.PadDef[current].AnalogDef[ANALOG_LEFT][ANALOG_XM].JoyEvType = b; + g.cfg.PadDef[current].AnalogDef[ANALOG_LEFT][ANALOG_XM].J.d = c; + } else if (strncmp(buf, "LeftAnalogYP=", 13) == 0) { + sscanf(buf, "LeftAnalogYP=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].AnalogDef[ANALOG_LEFT][ANALOG_YP].Key = a; + g.cfg.PadDef[current].AnalogDef[ANALOG_LEFT][ANALOG_YP].JoyEvType = b; + g.cfg.PadDef[current].AnalogDef[ANALOG_LEFT][ANALOG_YP].J.d = c; + } else if (strncmp(buf, "LeftAnalogYM=", 13) == 0) { + sscanf(buf, "LeftAnalogYM=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].AnalogDef[ANALOG_LEFT][ANALOG_YM].Key = a; + g.cfg.PadDef[current].AnalogDef[ANALOG_LEFT][ANALOG_YM].JoyEvType = b; + g.cfg.PadDef[current].AnalogDef[ANALOG_LEFT][ANALOG_YM].J.d = c; + } else if (strncmp(buf, "RightAnalogXP=", 14) == 0) { + sscanf(buf, "RightAnalogXP=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].AnalogDef[ANALOG_RIGHT][ANALOG_XP].Key = a; + g.cfg.PadDef[current].AnalogDef[ANALOG_RIGHT][ANALOG_XP].JoyEvType = b; + g.cfg.PadDef[current].AnalogDef[ANALOG_RIGHT][ANALOG_XP].J.d = c; + } else if (strncmp(buf, "RightAnalogXM=", 14) == 0) { + sscanf(buf, "RightAnalogXM=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].AnalogDef[ANALOG_RIGHT][ANALOG_XM].Key = a; + g.cfg.PadDef[current].AnalogDef[ANALOG_RIGHT][ANALOG_XM].JoyEvType = b; + g.cfg.PadDef[current].AnalogDef[ANALOG_RIGHT][ANALOG_XM].J.d = c; + } else if (strncmp(buf, "RightAnalogYP=", 14) == 0) { + sscanf(buf, "RightAnalogYP=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].AnalogDef[ANALOG_RIGHT][ANALOG_YP].Key = a; + g.cfg.PadDef[current].AnalogDef[ANALOG_RIGHT][ANALOG_YP].JoyEvType = b; + g.cfg.PadDef[current].AnalogDef[ANALOG_RIGHT][ANALOG_YP].J.d = c; + } else if (strncmp(buf, "RightAnalogYM=", 14) == 0) { + sscanf(buf, "RightAnalogYM=%d,%d,%d", &a, &b, &c); + g.cfg.PadDef[current].AnalogDef[ANALOG_RIGHT][ANALOG_YM].Key = a; + g.cfg.PadDef[current].AnalogDef[ANALOG_RIGHT][ANALOG_YM].JoyEvType = b; + g.cfg.PadDef[current].AnalogDef[ANALOG_RIGHT][ANALOG_YM].J.d = c; + } + } + + fclose(fp); +} + +void SavePADConfig() { + FILE *fp; + int i; + + fp = fopen(CONFIG_FILE, "w"); + if (fp == NULL) { + return; + } + + fprintf(fp, "[CONFIG]\n"); + fprintf(fp, "Threaded=%d\n", g.cfg.Threaded); + fprintf(fp, "\n"); + + for (i = 0; i < 2; i++) { + fprintf(fp, "[PAD%d]\n", i + 1); + fprintf(fp, "DevNum=%d\n", g.cfg.PadDef[i].DevNum); + fprintf(fp, "Type=%d\n", g.cfg.PadDef[i].Type); + + fprintf(fp, "Select=%d,%d,%d\n", g.cfg.PadDef[i].KeyDef[DKEY_SELECT].Key, + g.cfg.PadDef[i].KeyDef[DKEY_SELECT].JoyEvType, g.cfg.PadDef[i].KeyDef[DKEY_SELECT].J.d); + fprintf(fp, "L3=%d,%d,%d\n", g.cfg.PadDef[i].KeyDef[DKEY_L3].Key, + g.cfg.PadDef[i].KeyDef[DKEY_L3].JoyEvType, g.cfg.PadDef[i].KeyDef[DKEY_L3].J.d); + fprintf(fp, "R3=%d,%d,%d\n", g.cfg.PadDef[i].KeyDef[DKEY_R3].Key, + g.cfg.PadDef[i].KeyDef[DKEY_R3].JoyEvType, g.cfg.PadDef[i].KeyDef[DKEY_R3].J.d); + fprintf(fp, "Start=%d,%d,%d\n", g.cfg.PadDef[i].KeyDef[DKEY_START].Key, + g.cfg.PadDef[i].KeyDef[DKEY_START].JoyEvType, g.cfg.PadDef[i].KeyDef[DKEY_START].J.d); + fprintf(fp, "Up=%d,%d,%d\n", g.cfg.PadDef[i].KeyDef[DKEY_UP].Key, + g.cfg.PadDef[i].KeyDef[DKEY_UP].JoyEvType, g.cfg.PadDef[i].KeyDef[DKEY_UP].J.d); + fprintf(fp, "Right=%d,%d,%d\n", g.cfg.PadDef[i].KeyDef[DKEY_RIGHT].Key, + g.cfg.PadDef[i].KeyDef[DKEY_RIGHT].JoyEvType, g.cfg.PadDef[i].KeyDef[DKEY_RIGHT].J.d); + fprintf(fp, "Down=%d,%d,%d\n", g.cfg.PadDef[i].KeyDef[DKEY_DOWN].Key, + g.cfg.PadDef[i].KeyDef[DKEY_DOWN].JoyEvType, g.cfg.PadDef[i].KeyDef[DKEY_DOWN].J.d); + fprintf(fp, "Left=%d,%d,%d\n", g.cfg.PadDef[i].KeyDef[DKEY_LEFT].Key, + g.cfg.PadDef[i].KeyDef[DKEY_LEFT].JoyEvType, g.cfg.PadDef[i].KeyDef[DKEY_LEFT].J.d); + fprintf(fp, "L2=%d,%d,%d\n", g.cfg.PadDef[i].KeyDef[DKEY_L2].Key, + g.cfg.PadDef[i].KeyDef[DKEY_L2].JoyEvType, g.cfg.PadDef[i].KeyDef[DKEY_L2].J.d); + fprintf(fp, "R2=%d,%d,%d\n", g.cfg.PadDef[i].KeyDef[DKEY_R2].Key, + g.cfg.PadDef[i].KeyDef[DKEY_R2].JoyEvType, g.cfg.PadDef[i].KeyDef[DKEY_R2].J.d); + fprintf(fp, "L1=%d,%d,%d\n", g.cfg.PadDef[i].KeyDef[DKEY_L1].Key, + g.cfg.PadDef[i].KeyDef[DKEY_L1].JoyEvType, g.cfg.PadDef[i].KeyDef[DKEY_L1].J.d); + fprintf(fp, "R1=%d,%d,%d\n", g.cfg.PadDef[i].KeyDef[DKEY_R1].Key, + g.cfg.PadDef[i].KeyDef[DKEY_R1].JoyEvType, g.cfg.PadDef[i].KeyDef[DKEY_R1].J.d); + fprintf(fp, "Triangle=%d,%d,%d\n", g.cfg.PadDef[i].KeyDef[DKEY_TRIANGLE].Key, + g.cfg.PadDef[i].KeyDef[DKEY_TRIANGLE].JoyEvType, g.cfg.PadDef[i].KeyDef[DKEY_TRIANGLE].J.d); + fprintf(fp, "Circle=%d,%d,%d\n", g.cfg.PadDef[i].KeyDef[DKEY_CIRCLE].Key, + g.cfg.PadDef[i].KeyDef[DKEY_CIRCLE].JoyEvType, g.cfg.PadDef[i].KeyDef[DKEY_CIRCLE].J.d); + fprintf(fp, "Cross=%d,%d,%d\n", g.cfg.PadDef[i].KeyDef[DKEY_CROSS].Key, + g.cfg.PadDef[i].KeyDef[DKEY_CROSS].JoyEvType, g.cfg.PadDef[i].KeyDef[DKEY_CROSS].J.d); + fprintf(fp, "Square=%d,%d,%d\n", g.cfg.PadDef[i].KeyDef[DKEY_SQUARE].Key, + g.cfg.PadDef[i].KeyDef[DKEY_SQUARE].JoyEvType, g.cfg.PadDef[i].KeyDef[DKEY_SQUARE].J.d); + fprintf(fp, "LeftAnalogXP=%d,%d,%d\n", g.cfg.PadDef[i].AnalogDef[ANALOG_LEFT][ANALOG_XP].Key, + g.cfg.PadDef[i].AnalogDef[ANALOG_LEFT][ANALOG_XP].JoyEvType, + g.cfg.PadDef[i].AnalogDef[ANALOG_LEFT][ANALOG_XP].J.d); + fprintf(fp, "LeftAnalogXM=%d,%d,%d\n", g.cfg.PadDef[i].AnalogDef[ANALOG_LEFT][ANALOG_XM].Key, + g.cfg.PadDef[i].AnalogDef[ANALOG_LEFT][ANALOG_XM].JoyEvType, + g.cfg.PadDef[i].AnalogDef[ANALOG_LEFT][ANALOG_XM].J.d); + fprintf(fp, "LeftAnalogYP=%d,%d,%d\n", g.cfg.PadDef[i].AnalogDef[ANALOG_LEFT][ANALOG_YP].Key, + g.cfg.PadDef[i].AnalogDef[ANALOG_LEFT][ANALOG_YP].JoyEvType, + g.cfg.PadDef[i].AnalogDef[ANALOG_LEFT][ANALOG_YP].J.d); + fprintf(fp, "LeftAnalogYM=%d,%d,%d\n", g.cfg.PadDef[i].AnalogDef[ANALOG_LEFT][ANALOG_YM].Key, + g.cfg.PadDef[i].AnalogDef[ANALOG_LEFT][ANALOG_YM].JoyEvType, + g.cfg.PadDef[i].AnalogDef[ANALOG_LEFT][ANALOG_YM].J.d); + fprintf(fp, "RightAnalogXP=%d,%d,%d\n", g.cfg.PadDef[i].AnalogDef[ANALOG_RIGHT][ANALOG_XP].Key, + g.cfg.PadDef[i].AnalogDef[ANALOG_RIGHT][ANALOG_XP].JoyEvType, + g.cfg.PadDef[i].AnalogDef[ANALOG_RIGHT][ANALOG_XP].J.d); + fprintf(fp, "RightAnalogXM=%d,%d,%d\n", g.cfg.PadDef[i].AnalogDef[ANALOG_RIGHT][ANALOG_XM].Key, + g.cfg.PadDef[i].AnalogDef[ANALOG_RIGHT][ANALOG_XM].JoyEvType, + g.cfg.PadDef[i].AnalogDef[ANALOG_RIGHT][ANALOG_XM].J.d); + fprintf(fp, "RightAnalogYP=%d,%d,%d\n", g.cfg.PadDef[i].AnalogDef[ANALOG_RIGHT][ANALOG_YP].Key, + g.cfg.PadDef[i].AnalogDef[ANALOG_RIGHT][ANALOG_YP].JoyEvType, + g.cfg.PadDef[i].AnalogDef[ANALOG_RIGHT][ANALOG_YP].J.d); + fprintf(fp, "RightAnalogYM=%d,%d,%d\n", g.cfg.PadDef[i].AnalogDef[ANALOG_RIGHT][ANALOG_YM].Key, + g.cfg.PadDef[i].AnalogDef[ANALOG_RIGHT][ANALOG_YM].JoyEvType, + g.cfg.PadDef[i].AnalogDef[ANALOG_RIGHT][ANALOG_YM].J.d); + + fprintf(fp, "\n"); + } + + fclose(fp); +} diff --git a/plugins/sdlinput/pad.c b/plugins/sdlinput/pad.c new file mode 100644 index 0000000..4f563aa --- /dev/null +++ b/plugins/sdlinput/pad.c @@ -0,0 +1,355 @@ +/* + * Copyright (c) 2009, Wei Mingzhi . + * All Rights Reserved. + * + * 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, see . + */ + +#include "pad.h" + + +long PADinit(long flags) { + LoadPADConfig(); + + g.PadState[0].PadMode = 0; + g.PadState[0].PadID = 0x41; + g.PadState[1].PadMode = 0; + g.PadState[1].PadID = 0x41; + g.PadState[0].JoyKeyStatus = 0xFFFF; + g.PadState[1].JoyKeyStatus = 0xFFFF; + + return PSE_PAD_ERR_SUCCESS; +} + +long PADshutdown(void) { + PADclose(); + return PSE_PAD_ERR_SUCCESS; +} +#ifdef __EMSCRIPTEN__ +#include +#include +EM_BOOL gamepad_callback(int eventType, const EmscriptenGamepadEvent *gamepadEvent, void *userData) +{ + printf("eventtype %d\n", eventType); + InitSDLJoy(); + return 0; +}; + +#endif +long PADopen(unsigned long *Disp) { + if (!g.Opened) { + printf("PADopen\n"); + if (SDL_WasInit(SDL_INIT_EVERYTHING)) { + if (SDL_InitSubSystem(SDL_INIT_JOYSTICK) == -1) { + return PSE_PAD_ERR_FAILURE; + } + } else if (SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_NOPARACHUTE) == -1) { + return PSE_PAD_ERR_FAILURE; + } + InitSDLJoy(); + InitKeyboard(); + #ifdef __EMSCRIPTEN__ + emscripten_set_gamepadconnected_callback(0,1,gamepad_callback); + emscripten_set_gamepaddisconnected_callback(0,1,gamepad_callback); + #endif + g.KeyLeftOver = 0; + } + + g.Opened = 1; + + return PSE_PAD_ERR_SUCCESS; +} + +long PADclose(void) { + if (g.Opened) { + DestroySDLJoy(); + DestroyKeyboard(); + } + + g.Opened = 0; + + return PSE_PAD_ERR_SUCCESS; +} + +long PADquery(void) { + return PSE_PAD_USE_PORT1 | PSE_PAD_USE_PORT2; +} + +static void UpdateInput(void) { + CheckJoy(); + CheckKeyboard(); +} + +static uint8_t stdpar[2][8] = { + {0xFF, 0x5A, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80}, + {0xFF, 0x5A, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80} +}; + +static uint8_t unk46[2][8] = { + {0xFF, 0x5A, 0x00, 0x00, 0x01, 0x02, 0x00, 0x0A}, + {0xFF, 0x5A, 0x00, 0x00, 0x01, 0x02, 0x00, 0x0A} +}; + +static uint8_t unk47[2][8] = { + {0xFF, 0x5A, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00}, + {0xFF, 0x5A, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00} +}; + +static uint8_t unk4c[2][8] = { + {0xFF, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0xFF, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} +}; + +static uint8_t unk4d[2][8] = { + {0xFF, 0x5A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, + {0xFF, 0x5A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF} +}; + +static uint8_t stdcfg[2][8] = { + {0xFF, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0xFF, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} +}; + +static uint8_t stdmode[2][8] = { + {0xFF, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0xFF, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} +}; + +static uint8_t stdmodel[2][8] = { + {0xFF, + 0x5A, + 0x01, // 03 - dualshock2, 01 - dualshock + 0x02, // number of modes + 0x01, // current mode: 01 - analog, 00 - digital + 0x02, + 0x01, + 0x00}, + {0xFF, + 0x5A, + 0x01, // 03 - dualshock2, 01 - dualshock + 0x02, // number of modes + 0x01, // current mode: 01 - analog, 00 - digital + 0x02, + 0x01, + 0x00} +}; + +static uint8_t CurPad = 0, CurByte = 0, CurCmd = 0, CmdLen = 0; + +unsigned char PADstartPoll(int pad) { + CurPad = pad - 1; + CurByte = 0; + + return 0xFF; +} + +unsigned char PADpoll(unsigned char value) { + + static uint8_t *buf = NULL; + uint16_t n; + if (CurByte == 0) { + CurByte++; + + // Don't enable Analog/Vibration for a standard pad + if (g.cfg.PadDef[CurPad].Type != PSE_PAD_TYPE_ANALOGPAD) { + CurCmd = CMD_READ_DATA_AND_VIBRATE; + } else { + CurCmd = value; + } + + switch (CurCmd) { + case CMD_CONFIG_MODE: + CmdLen = 8; + buf = stdcfg[CurPad]; + if (stdcfg[CurPad][3] == 0xFF) return 0xF3; + else return g.PadState[CurPad].PadID; + + case CMD_SET_MODE_AND_LOCK: + CmdLen = 8; + buf = stdmode[CurPad]; + return 0xF3; + + case CMD_QUERY_MODEL_AND_MODE: + CmdLen = 8; + buf = stdmodel[CurPad]; + buf[4] = g.PadState[CurPad].PadMode; + return 0xF3; + + case CMD_QUERY_ACT: + CmdLen = 8; + buf = unk46[CurPad]; + return 0xF3; + + case CMD_QUERY_COMB: + CmdLen = 8; + buf = unk47[CurPad]; + return 0xF3; + + case CMD_QUERY_MODE: + CmdLen = 8; + buf = unk4c[CurPad]; + return 0xF3; + + case CMD_VIBRATION_TOGGLE: + CmdLen = 8; + buf = unk4d[CurPad]; + return 0xF3; + + case CMD_READ_DATA_AND_VIBRATE: + default: + UpdateInput(); + + n = g.PadState[CurPad].KeyStatus; + n &= g.PadState[CurPad].JoyKeyStatus; + + stdpar[CurPad][2] = n & 0xFF; + stdpar[CurPad][3] = n >> 8; + + if (g.PadState[CurPad].PadMode == 1) { + CmdLen = 8; + + stdpar[CurPad][4] = g.PadState[CurPad].AnalogStatus[ANALOG_RIGHT][0]; + stdpar[CurPad][5] = g.PadState[CurPad].AnalogStatus[ANALOG_RIGHT][1]; + stdpar[CurPad][6] = g.PadState[CurPad].AnalogStatus[ANALOG_LEFT][0]; + stdpar[CurPad][7] = g.PadState[CurPad].AnalogStatus[ANALOG_LEFT][1]; + } else { + CmdLen = 4; + } + + buf = stdpar[CurPad]; + return g.PadState[CurPad].PadID; + } + } + + switch (CurCmd) { + case CMD_CONFIG_MODE: + if (CurByte == 2) { + switch (value) { + case 0: + buf[2] = 0; + buf[3] = 0; + break; + + case 1: + buf[2] = 0xFF; + buf[3] = 0xFF; + break; + } + } + break; + + case CMD_SET_MODE_AND_LOCK: + if (CurByte == 2) { + g.PadState[CurPad].PadMode = value; + g.PadState[CurPad].PadID = value ? 0x73 : 0x41; + } + break; + + case CMD_QUERY_ACT: + if (CurByte == 2) { + switch (value) { + case 0: // default + buf[5] = 0x02; + buf[6] = 0x00; + buf[7] = 0x0A; + break; + + case 1: // Param std conf change + buf[5] = 0x01; + buf[6] = 0x01; + buf[7] = 0x14; + break; + } + } + break; + + case CMD_QUERY_MODE: + if (CurByte == 2) { + switch (value) { + case 0: // mode 0 - digital mode + buf[5] = PSE_PAD_TYPE_STANDARD; + break; + + case 1: // mode 1 - analog mode + buf[5] = PSE_PAD_TYPE_ANALOGPAD; + break; + } + } + break; + } + + if (CurByte >= CmdLen) return 0; + return buf[CurByte++]; +} + +static long PADreadPort(int num, PadDataS *pad) { + UpdateInput(); + + pad->buttonStatus = (g.PadState[num].KeyStatus & g.PadState[num].JoyKeyStatus); + + // ePSXe different from pcsx, swap bytes + pad->buttonStatus = (pad->buttonStatus >> 8) | (pad->buttonStatus << 8); + + switch (g.cfg.PadDef[num].Type) { + case PSE_PAD_TYPE_ANALOGPAD: // Analog Controller SCPH-1150 + pad->controllerType = PSE_PAD_TYPE_ANALOGPAD; + pad->rightJoyX = g.PadState[num].AnalogStatus[ANALOG_RIGHT][0]; + pad->rightJoyY = g.PadState[num].AnalogStatus[ANALOG_RIGHT][1]; + pad->leftJoyX = g.PadState[num].AnalogStatus[ANALOG_LEFT][0]; + pad->leftJoyY = g.PadState[num].AnalogStatus[ANALOG_LEFT][1]; + break; + + case PSE_PAD_TYPE_STANDARD: // Standard Pad SCPH-1080, SCPH-1150 + default: + pad->controllerType = PSE_PAD_TYPE_STANDARD; + break; + } + + return PSE_PAD_ERR_SUCCESS; +} + +long PADreadPort1(PadDataS *pad) { + return PADreadPort(0, pad); +} + +long PADreadPort2(PadDataS *pad) { + return PADreadPort(1, pad); +} + +long PADkeypressed(void) { + long s; + + CheckKeyboard(); + + s = g.KeyLeftOver; + g.KeyLeftOver = 0; + + return s; +} + +#ifndef _MACOSX + +long PADconfigure(void) { + return PSE_PAD_ERR_SUCCESS; +} + +void PADabout(void) { + +} + +#endif + +long PADtest(void) { + return PSE_PAD_ERR_SUCCESS; +} diff --git a/plugins/sdlinput/pad.h b/plugins/sdlinput/pad.h new file mode 100644 index 0000000..daf88cf --- /dev/null +++ b/plugins/sdlinput/pad.h @@ -0,0 +1,187 @@ +/* + * Copyright (c) 2009, Wei Mingzhi . + * All Rights Reserved. + * + * 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, see . + */ + +#ifndef PAD_H_ +#define PAD_H_ + +// not using thread +#define volatile + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef _MACOSX +#include "config.h" +#endif + +#include +#include +#include +#include +#include +#include + +#include +//#include + +#include "psemu_plugin_defs.h" + +#ifdef ENABLE_NLS +#include +#include +#define _(x) gettext(x) +#define N_(x) (x) +#else +#define _(x) (x) +#define N_(x) (x) +#endif + +enum { + DKEY_SELECT = 0, + DKEY_L3, + DKEY_R3, + DKEY_START, + DKEY_UP, + DKEY_RIGHT, + DKEY_DOWN, + DKEY_LEFT, + DKEY_L2, + DKEY_R2, + DKEY_L1, + DKEY_R1, + DKEY_TRIANGLE, + DKEY_CIRCLE, + DKEY_CROSS, + DKEY_SQUARE, + + DKEY_TOTAL +}; + +enum { + ANALOG_LEFT = 0, + ANALOG_RIGHT, + + ANALOG_TOTAL +}; + +enum { NONE = 0, AXIS, HAT, BUTTON }; + +typedef struct tagKeyDef { + uint8_t JoyEvType; + union { + int16_t d; + int16_t Axis; // positive=axis+, negative=axis-, abs(Axis)-1=axis index + uint16_t Hat; // 8-bit for hat number, 8-bit for direction + uint16_t Button; // button number + } J; + SDLKey Key; +} KEYDEF; + +enum { ANALOG_XP = 0, ANALOG_XM, ANALOG_YP, ANALOG_YM }; + +typedef struct tagPadDef { + int8_t DevNum; + uint16_t Type; + KEYDEF KeyDef[DKEY_TOTAL]; + KEYDEF AnalogDef[ANALOG_TOTAL][4]; +} PADDEF; + +typedef struct tagConfig { + uint8_t Threaded; + PADDEF PadDef[2]; +} CONFIG; + +typedef struct tagPadState { + SDL_Joystick *JoyDev; + uint8_t PadMode; + uint8_t PadID; + volatile uint16_t KeyStatus; + volatile uint16_t JoyKeyStatus; + volatile uint8_t AnalogStatus[ANALOG_TOTAL][2]; // 0-255 where 127 is center position + volatile uint8_t AnalogKeyStatus[ANALOG_TOTAL][4]; +} PADSTATE; + +typedef struct tagGlobalData { + CONFIG cfg; + + uint8_t Opened; + //Display *Disp; + + PADSTATE PadState[2]; + volatile long KeyLeftOver; +} GLOBALDATA; + +extern GLOBALDATA g; + +enum { + CMD_READ_DATA_AND_VIBRATE = 0x42, + CMD_CONFIG_MODE = 0x43, + CMD_SET_MODE_AND_LOCK = 0x44, + CMD_QUERY_MODEL_AND_MODE = 0x45, + CMD_QUERY_ACT = 0x46, // ?? + CMD_QUERY_COMB = 0x47, // ?? + CMD_QUERY_MODE = 0x4C, // QUERY_MODE ?? + CMD_VIBRATION_TOGGLE = 0x4D, +}; + +// cfg.c functions... +void LoadPADConfig(); +void SavePADConfig(); + +// sdljoy.c functions... +void InitSDLJoy(); +void DestroySDLJoy(); +void CheckJoy(); + +// xkb.c functions... +void InitKeyboard(); +void DestroyKeyboard(); +void CheckKeyboard(); + +// analog.c functions... +void InitAnalog(); +void CheckAnalog(); +int AnalogKeyPressed(uint16_t Key); +int AnalogKeyReleased(uint16_t Key); + +// pad.c functions... +/* +char *PSEgetLibName(void); +uint32_t PSEgetLibType(void); +uint32_t PSEgetLibVersion(void); +*/ +long PADinit(long flags); +long PADshutdown(void); +long PADopen(unsigned long *Disp); +long PADclose(void); +long PADquery(void); +unsigned char PADstartPoll(int pad); +unsigned char PADpoll(unsigned char value); +long PADreadPort1(PadDataS *pad); +long PADreadPort2(PadDataS *pad); +long PADkeypressed(void); +long PADconfigure(void); +void PADabout(void); +long PADtest(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/plugins/sdlinput/sdljoy.c b/plugins/sdlinput/sdljoy.c new file mode 100644 index 0000000..b101676 --- /dev/null +++ b/plugins/sdlinput/sdljoy.c @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2009, Wei Mingzhi . + * All Rights Reserved. + * + * 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, see . + */ + +#include "pad.h" + +void InitSDLJoy() { + uint8_t i; + + g.PadState[0].JoyKeyStatus = 0xFFFF; + g.PadState[1].JoyKeyStatus = 0xFFFF; + printf("InitSDLJoy devnum=%d\n", SDL_NumJoysticks()); + + for (i = 0; i < 2; i++) { + if (g.cfg.PadDef[i].DevNum >= 0) { + g.PadState[i].JoyDev = SDL_JoystickOpen(g.cfg.PadDef[i].DevNum); + printf("joydev %d = %p\n",i, g.PadState[i].JoyDev); + if(g.PadState[i].JoyDev){ + printf("numAxes %d\n",SDL_JoystickNumAxes(g.PadState[i].JoyDev)); + printf("numButtons %d\n",SDL_JoystickNumButtons(g.PadState[i].JoyDev)); + printf("numHats %d\n",SDL_JoystickNumHats(g.PadState[i].JoyDev)); + } + } else { + g.PadState[i].JoyDev = NULL; + } + } + + SDL_JoystickEventState(SDL_IGNORE); + + InitAnalog(); +} + +void DestroySDLJoy() { + uint8_t i; + + if (SDL_WasInit(SDL_INIT_JOYSTICK)) { + for (i = 0; i < 2; i++) { + if (g.PadState[i].JoyDev != NULL) { + SDL_JoystickClose(g.PadState[i].JoyDev); + } + } + } + + for (i = 0; i < 2; i++) { + g.PadState[i].JoyDev = NULL; + } +} + +void CheckJoy() { + uint8_t i, j, n; + + SDL_JoystickUpdate(); + + for (i = 0; i < 2; i++) { + if (g.PadState[i].JoyDev == NULL) { + continue; + } + #if 0 + for(j=0;j 0) { + if (SDL_JoystickGetAxis(g.PadState[i].JoyDev, n) > 16383) { + g.PadState[i].JoyKeyStatus &= ~(1 << j); + } else { + g.PadState[i].JoyKeyStatus |= (1 << j); + } + } else if (g.cfg.PadDef[i].KeyDef[j].J.Axis < 0) { + if (SDL_JoystickGetAxis(g.PadState[i].JoyDev, n) < -16383) { + g.PadState[i].JoyKeyStatus &= ~(1 << j); + } else { + g.PadState[i].JoyKeyStatus |= (1 << j); + } + } + break; + + case HAT: + n = (g.cfg.PadDef[i].KeyDef[j].J.Hat >> 8); + + if (SDL_JoystickGetHat(g.PadState[i].JoyDev, n) & (g.cfg.PadDef[i].KeyDef[j].J.Hat & 0xFF)) { + g.PadState[i].JoyKeyStatus &= ~(1 << j); + } else { + g.PadState[i].JoyKeyStatus |= (1 << j); + } + break; + + case BUTTON: + if (SDL_JoystickGetButton(g.PadState[i].JoyDev, g.cfg.PadDef[i].KeyDef[j].J.Button)) { + g.PadState[i].JoyKeyStatus &= ~(1 << j); + } else { + g.PadState[i].JoyKeyStatus |= (1 << j); + } + break; + + default: + break; + } + } + } + + CheckAnalog(); +} diff --git a/plugins/sdlinput/xkb.c b/plugins/sdlinput/xkb.c new file mode 100644 index 0000000..d59ae93 --- /dev/null +++ b/plugins/sdlinput/xkb.c @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2009, Wei Mingzhi . + * All Rights Reserved. + * + * 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, see . + */ + +#include "pad.h" + +void InitKeyboard() { + g.PadState[0].KeyStatus = 0xFFFF; + g.PadState[1].KeyStatus = 0xFFFF; +} + +void DestroyKeyboard() { +} + +void CheckKeyboard() { + uint8_t i, j, found; + SDL_Event evt; + SDLKey Key; + + while (SDL_PollEvent(&evt)) { + switch (evt.type) { + case SDL_KEYDOWN: + Key = evt.key.keysym.sym; + found = 0; + for (i = 0; i < 2; i++) { + for (j = 0; j < DKEY_TOTAL; j++) { + if (g.cfg.PadDef[i].KeyDef[j].Key == Key) { + found = 1; + g.PadState[i].KeyStatus &= ~(1 << j); + } + } + } + if (!found ) { + g.KeyLeftOver = Key; + } + return; + + case SDL_KEYUP: + Key = evt.key.keysym.sym; + found = 0; + for (i = 0; i < 2; i++) { + for (j = 0; j < DKEY_TOTAL; j++) { + if (g.cfg.PadDef[i].KeyDef[j].Key == Key) { + found = 1; + g.PadState[i].KeyStatus |= (1 << j); + } + } + } + if (!found ) { + g.KeyLeftOver = ((long)Key | 0x40000000); + } + break; +/* + case ClientMessage: + xce = (XClientMessageEvent *)&evt; + if (xce->message_type == wmprotocols && (Atom)xce->data.l[0] == wmdelwindow) { + // Fake an ESC key if user clicked the close button on window + g.KeyLeftOver = XK_Escape; + return; + } + break; + */ + } + } +} diff --git a/shell.html b/shell.html new file mode 100644 index 0000000..96d964a --- /dev/null +++ b/shell.html @@ -0,0 +1,280 @@ + + + + + + PCSX emulator(port by tjw, compiled by emscripten) + + + +

+ PCSX emulator (compiled by emscripten) +

+
+
+
+
Downloading...
+
+
+
+ + + +
+ + + Resize canvas + Lock/hide mouse pointer     + + + + + + +
+ +
+ + + + {{{ SCRIPT }}} + + + +
+

psx .iso or .bin are needed in order to play.

+ Keys are mapped as followings. Or you can use a Xbox 360 controller + +
+  // Pad1 keyboard
+	g.cfg.PadDef[0].KeyDef[DKEY_SELECT].Key = SDLK_c;
+	g.cfg.PadDef[0].KeyDef[DKEY_START].Key = SDLK_v;
+	g.cfg.PadDef[0].KeyDef[DKEY_UP].Key = SDLK_UP;
+	g.cfg.PadDef[0].KeyDef[DKEY_RIGHT].Key = SDLK_RIGHT;
+	g.cfg.PadDef[0].KeyDef[DKEY_DOWN].Key = SDLK_DOWN;
+	g.cfg.PadDef[0].KeyDef[DKEY_LEFT].Key = SDLK_LEFT;
+	g.cfg.PadDef[0].KeyDef[DKEY_L2].Key = SDLK_e;
+	g.cfg.PadDef[0].KeyDef[DKEY_R2].Key = SDLK_t;
+	g.cfg.PadDef[0].KeyDef[DKEY_L1].Key = SDLK_w;
+	g.cfg.PadDef[0].KeyDef[DKEY_R1].Key = SDLK_r;
+	g.cfg.PadDef[0].KeyDef[DKEY_TRIANGLE].Key = SDLK_d;
+	g.cfg.PadDef[0].KeyDef[DKEY_CIRCLE].Key = SDLK_x;
+	g.cfg.PadDef[0].KeyDef[DKEY_CROSS].Key = SDLK_z;
+	g.cfg.PadDef[0].KeyDef[DKEY_SQUARE].Key = SDLK_s;
+
+
+
+
+ +