]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
2610b1
authorToni Wilen <twilen@winuae.net>
Mon, 3 Jun 2013 17:42:48 +0000 (20:42 +0300)
committerToni Wilen <twilen@winuae.net>
Mon, 3 Jun 2013 17:42:48 +0000 (20:42 +0300)
28 files changed:
a2091.cpp
blitter.cpp
cfgfile.cpp
cia.cpp
debug.cpp
drawing.cpp
enforcer.cpp
filesys.cpp
filesys_bootrom.cpp
fpp.cpp
include/inputdevice.h
include/newcpu.h
include/options.h
inputdevice.cpp
memory.cpp
newcpu.cpp
od-win32/direct3d.cpp
od-win32/inttypes.h [new file with mode: 0644]
od-win32/keyboard_win32.cpp
od-win32/resources/resource.h
od-win32/resources/winuae.rc
od-win32/resources/winuae_minimal.rc
od-win32/win32.cpp
od-win32/win32.h
od-win32/win32gui.cpp
od-win32/winuae_msvc11/winuae_msvc.vcxproj
od-win32/winuae_msvc11/winuae_msvc.vcxproj.filters
od-win32/winuaechangelog.txt

index d85681d659673849c3b5a11124d6c2ab8876f9e0..fb6c24d7106cb858366a82d63bf792a6aef26043 100644 (file)
--- a/a2091.cpp
+++ b/a2091.cpp
@@ -8,7 +8,9 @@
 */
 
 #define A2091_DEBUG 0
+#define A2091_DEBUG_IO 0
 #define A3000_DEBUG 0
+#define A3000_DEBUG_IO 0
 #define WD33C93_DEBUG 0
 #define WD33C93_DEBUG_PIO 0
 
@@ -526,7 +528,7 @@ static bool wd_do_transfer_in (void)
                        setphase (0x46);
                }
                scsi_start_transfer (scsi);
-       } else if (wdregs[WD_COMMAND_PHASE] == 0x46) {
+       } else if (wdregs[WD_COMMAND_PHASE] == 0x46 || wdregs[WD_COMMAND_PHASE] == 0x47) {
                setphase (0x50);
                wd_phase = CSR_XFER_DONE | PHS_MESS_IN;
                scsi_start_transfer (scsi);
@@ -750,10 +752,7 @@ static void wd_cmd_trans_info (void)
                scsi->data_len = gettc ();
        } else if (wdregs[WD_COMMAND_PHASE] == 0x45) {
                scsi_emulate_analyze (scsi);
-       } else if (wdregs[WD_COMMAND_PHASE] == 0x47) {
-               scsi->direction = -1; // status
-               scsi->data_len = 1;
-       } else if (wdregs[WD_COMMAND_PHASE] == 0x46) {
+       } else if (wdregs[WD_COMMAND_PHASE] == 0x46 || wdregs[WD_COMMAND_PHASE] == 0x47) {
                scsi->buffer[0] = scsi->status;
                wdregs[WD_TARGET_LUN] = scsi->status;
                scsi->direction = -1; // status
@@ -821,8 +820,15 @@ static void wd_cmd_reset (bool irq)
        scsi = NULL;
        scsidelay_irq[0] = 0;
        scsidelay_irq[1] = 0;
-       if (irq)
-               set_status ((wdregs[0] & 0x08) ? 1 : 0, 200);
+       auxstatus = 0;
+       wd_data_avail = 0;
+       if (irq) {
+               set_status ((wdregs[0] & 0x08) ? 1 : 0, 50);
+       } else {
+               dmac_dma = 0;
+               dmac_istr = 0;
+               dmac_cntr = 0;
+       }
 }
 
 static void wd_cmd_abort (void)
@@ -1066,7 +1072,7 @@ static uae_u32 dmac_read_word (uaecptr addr)
                        dmac_istr |= ISTR_FE_FLG;
                break;
        }
-#if A2091_DEBUG > 0
+#if A2091_DEBUG_IO > 0
        write_log (_T("dmac_wget %04X=%04X PC=%08X\n"), addr, v, M68K_GETPC);
 #endif
        return v;
@@ -1103,7 +1109,7 @@ static uae_u32 dmac_read_byte (uaecptr addr)
                        v >>= 8;
                break;
        }
-#if A2091_DEBUG > 0
+#if A2091_DEBUG_IO > 0
        write_log (_T("dmac_bget %04X=%02X PC=%08X\n"), addr, v, M68K_GETPC);
 #endif
        return v;
@@ -1116,7 +1122,7 @@ static void dmac_write_word (uaecptr addr, uae_u32 b)
        if (addr >= ROM_OFFSET)
                return;
 
-#if A2091_DEBUG > 0
+#if A2091_DEBUG_IO > 0
        write_log (_T("dmac_wput %04X=%04X PC=%08X\n"), addr, b & 65535, M68K_GETPC);
 #endif
 
@@ -1174,7 +1180,7 @@ static void dmac_write_byte (uaecptr addr, uae_u32 b)
        if (addr >= ROM_OFFSET)
                return;
 
-#if A2091_DEBUG > 0
+#if A2091_DEBUG_IO > 0
        write_log (_T("dmac_bput %04X=%02X PC=%08X\n"), addr, b & 255, M68K_GETPC);
 #endif
 
@@ -1320,7 +1326,7 @@ static void mbdmac_write_word (uae_u32 addr, uae_u32 val)
 {
        if (currprefs.cs_mbdmac > 1)
                return;
-#if A3000_DEBUG > 1
+#if A3000_DEBUG_IO > 1
        write_log (_T("DMAC_WWRITE %08X=%04X PC=%08X\n"), addr, val & 0xffff, M68K_GETPC);
 #endif
        addr &= 0xfffe;
@@ -1377,7 +1383,7 @@ static void mbdmac_write_byte (uae_u32 addr, uae_u32 val)
 {
        if (currprefs.cs_mbdmac > 1)
                return;
-#if A3000_DEBUG > 1
+#if A3000_DEBUG_IO > 1
        write_log (_T("DMAC_BWRITE %08X=%02X PC=%08X\n"), addr, val & 0xff, M68K_GETPC);
 #endif
        addr &= 0xffff;
@@ -1404,7 +1410,7 @@ static void mbdmac_write_byte (uae_u32 addr, uae_u32 val)
 
 static uae_u32 mbdmac_read_word (uae_u32 addr)
 {
-#if A3000_DEBUG > 1
+#if A3000_DEBUG_IO > 1
        uae_u32 vaddr = addr;
 #endif
        uae_u32 v = 0xffffffff;
@@ -1456,7 +1462,7 @@ static uae_u32 mbdmac_read_word (uae_u32 addr)
                v = 0;
                break;
        }
-#if A3000_DEBUG > 1
+#if A3000_DEBUG_IO > 1
        write_log (_T("DMAC_WREAD %08X=%04X PC=%X\n"), vaddr, v & 0xffff, M68K_GETPC);
 #endif
        return v;
@@ -1464,7 +1470,7 @@ static uae_u32 mbdmac_read_word (uae_u32 addr)
 
 static uae_u32 mbdmac_read_byte (uae_u32 addr)
 {
-#if A3000_DEBUG > 1
+#if A3000_DEBUG_IO > 1
        uae_u32 vaddr = addr;
 #endif
        uae_u32 v = 0xffffffff;
@@ -1489,7 +1495,7 @@ static uae_u32 mbdmac_read_byte (uae_u32 addr)
                        v >>= 8;
                break;
        }
-#if A3000_DEBUG > 1
+#if A3000_DEBUG_IO > 1
        write_log (_T("DMAC_BREAD %08X=%02X PC=%X\n"), vaddr, v & 0xff, M68K_GETPC);
 #endif
        return v;
index 4044ab93cfa2f8a04de0bc0f7f3f7785c5a7cf7e..12bf642bccc0b6abe0f121a2598530c0b8db10be 100644 (file)
@@ -7,7 +7,8 @@
 * (c) 2002 - 2005 Toni Wilen
 */
 
-#define SPEEDUP
+#define SPEEDUP 1
+#define BLITTER_DEBUG 0
 
 #include "sysconfig.h"
 #include "sysdeps.h"
@@ -28,7 +29,7 @@
 // 4 = no D
 // 8 = instant
 
-#ifdef BLITTER_DEBUG
+#if BLITTER_DEBUG
 int log_blitter = 1;
 #else
 int log_blitter = 0;
@@ -399,7 +400,7 @@ static void blitter_dofast (void)
                bltdpt += (blt_info.hblitsize * 2 + blt_info.bltdmod) * blt_info.vblitsize;
        }
 
-#ifdef SPEEDUP
+#if SPEEDUP
        if (blitfunc_dofast[mt] && !blitfill) {
                (*blitfunc_dofast[mt])(bltadatptr, bltbdatptr, bltcdatptr, bltddatptr, &blt_info);
        } else
@@ -498,7 +499,7 @@ static void blitter_dofast_desc (void)
                bltddatptr = bltdpt;
                bltdpt -= (blt_info.hblitsize * 2 + blt_info.bltdmod) * blt_info.vblitsize;
        }
-#ifdef SPEEDUP
+#if SPEEDUP
        if (blitfunc_dofast_desc[mt] && !blitfill) {
                (*blitfunc_dofast_desc[mt])(bltadatptr, bltbdatptr, bltcdatptr, bltddatptr, &blt_info);
        } else
index f7e2acb44145c9627d63cf7ed2d7acaab6c6ff9f..ae429583b7c4249aa7067ab194b1fd0caa71f744 100644 (file)
@@ -1153,6 +1153,8 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
        cfgfile_write_bool (f, _T("cpu_cycle_exact"), p->cpu_cycle_exact);
        cfgfile_write_bool (f, _T("blitter_cycle_exact"), p->blitter_cycle_exact);
        cfgfile_write_bool (f, _T("cycle_exact"), p->cpu_cycle_exact && p->blitter_cycle_exact ? 1 : 0);
+       cfgfile_dwrite_bool (f, _T("fpu_no_unimplemented"), p->fpu_no_unimplemented);
+
        cfgfile_write_bool (f, _T("rtg_nocustom"), p->picasso96_nocustom);
        cfgfile_write (f, _T("rtg_modes"), _T("0x%x"), p->picasso96_modeflags);
 
@@ -2913,6 +2915,7 @@ static int cfgfile_parse_hardware (struct uae_prefs *p, const TCHAR *option, TCH
                return 1;
 
        if (cfgfile_yesno (option, value, _T("immediate_blits"), &p->immediate_blits)
+               || cfgfile_yesno (option, value, _T("fpu_no_unimplemented"), &p->fpu_no_unimplemented)
                || cfgfile_yesno (option, value, _T("cd32cd"), &p->cs_cd32cd)
                || cfgfile_yesno (option, value, _T("cd32c2p"), &p->cs_cd32c2p)
                || cfgfile_yesno (option, value, _T("cd32nvram"), &p->cs_cd32nvram)
@@ -4710,6 +4713,7 @@ void default_prefs (struct uae_prefs *p, int type)
        p->mmu_model = 0;
        p->cpu060_revision = 6;
        p->fpu_revision = -1;
+       p->fpu_no_unimplemented = false;
        p->m68k_speed = 0;
        p->cpu_compatible = 1;
        p->address_space_24 = 1;
@@ -4988,6 +4992,7 @@ static int bip_a3000 (struct uae_prefs *p, int config, int compa, int romcheck)
        p->chipmem_size = 0x200000;
        p->cpu_model = 68030;
        p->fpu_model = 68882;
+       p->fpu_no_unimplemented = true;
        if (compa == 0)
                p->mmu_model = 68030;
        else
diff --git a/cia.cpp b/cia.cpp
index 74bc12b0ef8e3358ee5808231dc1e33792c331f2..43c9a23d71f665dd282e18e81127f1a39b8cc607 100644 (file)
--- a/cia.cpp
+++ b/cia.cpp
 
 #define CIAA_DEBUG_R 0
 #define CIAA_DEBUG_W 0
+#define CIAA_DEBUG_IRQ 0
+
 #define CIAB_DEBUG_R 0
 #define CIAB_DEBUG_W 0
+#define CIAB_DEBUG_IRQ 0
+
 #define DONGLE_DEBUG 0
 #define KB_DEBUG 0
 #define CLOCK_DEBUG 0
@@ -122,6 +126,9 @@ static void ICRB(uae_u32 data)
 static void RethinkICRA (void)
 {
        if (ciaaicr) {
+#if CIAA_DEBUG_IRQ
+               write_log (_T("CIAA IRQ %02X\n"), ciaaicr);
+#endif
                if (currprefs.cpu_cycle_exact)
                        event2_newevent_xx (-1, 2 * CYCLE_UNIT + CYCLE_UNIT / 2, 0x0008, ICRA);
                else
@@ -132,6 +139,9 @@ static void RethinkICRA (void)
 static void RethinkICRB (void)
 {
        if (ciabicr) {
+#if CIAB_DEBUG_IRQ
+               write_log (_T("CIAB IRQ %02X\n"), ciabicr);
+#endif
                if (currprefs.cpu_cycle_exact)
                        event2_newevent_xx (-1, 2 * CYCLE_UNIT + CYCLE_UNIT / 2, 0x2000, ICRB);
                else
@@ -441,6 +451,9 @@ static int checkalarm (unsigned long tod, unsigned long alarm, int inc)
                return 1;
        if (!inc)
                return 0;
+       /* Amix workaround */
+       if (currprefs.mmu_model)
+               return 0;
        /* emulate buggy TODMED counter.
        * it counts: .. 29 2A 2B 2C 2D 2E 2F 20 30 31 32 ..
        * (2F->20->30 only takes couple of cycles but it will trigger alarm..
@@ -464,6 +477,9 @@ STATIC_INLINE void ciab_checkalarm (int inc)
                        return;
        }
        if (checkalarm (ciabtod, ciabalarm, inc)) {
+#if CIAB_DEBUG_IRQ
+               write_log (_T("CIAB tod %08x %08x\n"), ciabtod, ciabalarm);
+#endif
                ciabicr |= 4;
                RethinkICRB ();
        }
@@ -472,6 +488,9 @@ STATIC_INLINE void ciab_checkalarm (int inc)
 STATIC_INLINE void ciaa_checkalarm (int inc)
 {
        if (checkalarm (ciaatod, ciaaalarm, inc)) {
+#if CIAA_DEBUG_IRQ
+               write_log (_T("CIAA tod %08x %08x\n"), ciaatod, ciaaalarm);
+#endif
                ciaaicr |= 4;
                RethinkICRA ();
        }
@@ -908,6 +927,9 @@ static uae_u8 ReadCIAA (unsigned int addr)
                }
                return (uae_u8)(ciaatol >> 16);
        case 12:
+#if KB_DEBUG
+               write_log (_T("CIAA serial port: %02x %08x\n"), ciaasdr, M68K_GETPC);
+#endif
                return ciaasdr;
        case 13:
                tmp = ciaaicr_reg;
@@ -1168,6 +1190,9 @@ static void WriteCIAA (uae_u16 addr, uae_u8 val)
                ciaasdr = val;
                if ((ciaacra & 0x41) == 0x41 && ciaasdr_cnt == 0)
                        ciaasdr_cnt = 8 * 2;
+#if KB_DEBUG
+               write_log (_T("CIAA serial port write: %02x cnt=%d PC=%08x\n"), ciaasdr, ciaasdr_cnt, M68K_GETPC);
+#endif
                CIA_calctimers ();
                break;
        case 13:
index 303878c7a5b71b589efb0d2c83839c0f9023f3b5..7780569549d468533c4d3ec01e79d5f08526d3af 100644 (file)
--- a/debug.cpp
+++ b/debug.cpp
@@ -133,7 +133,8 @@ static TCHAR help[] = {
        _T("  s \"<string>\"/<values> [<addr>] [<length>]\n")
        _T("                        Search for string/bytes.\n")
        _T("  T or Tt               Show exec tasks and their PCs.\n")
-       _T("  Td,Tl,Tr,Ts,Ti,TO     Show devices, libraries, resources, residents, interrupts, doslist.\n")
+       _T("  Td,Tl,Tr,Tp,Ts,TS,Ti,TO,TM Show devs, libs, resources, ports, semaphores,\n")
+       _T("                        residents, interrupts, doslist and memorylist.\n")
        _T("  b                     Step to previous state capture position.\n")
        _T("  M<a/b/s> <val>        Enable or disable audio channels, bitplanes or sprites.\n")
        _T("  sp <addr> [<addr2][<size>] Dump sprite information.\n")
@@ -2764,25 +2765,25 @@ static void show_exec_tasks (void)
        }
 }
 
-static uaecptr get_base (const uae_char *name)
+static uaecptr get_base (const uae_char *name, int offset)
 {
        uaecptr v = get_long_debug (4);
        addrbank *b = &get_mem_bank(v);
 
        if (!b || !b->check (v, 400) || b->flags != ABFLAG_RAM)
                return 0;
-       v += 378; // liblist
+       v += offset;
        while (v = get_long_debug (v)) {
                uae_u32 v2;
                uae_u8 *p;
                b = &get_mem_bank (v);
-               if (!b || !b->check (v, 32) || b->flags != ABFLAG_RAM)
+               if (!b || !b->check (v, 32) || (b->flags != ABFLAG_RAM && b->flags != ABFLAG_ROMIN))
                        goto fail;
                v2 = get_long_debug (v + 10); // name
                b = &get_mem_bank (v2);
                if (!b || !b->check (v2, 20))
                        goto fail;
-               if (b->flags == ABFLAG_ROM || b->flags == ABFLAG_RAM) {
+               if (b->flags == ABFLAG_ROM || b->flags == ABFLAG_RAM || b->flags == ABFLAG_ROMIN) {
                        p = b->xlateaddr (v2);
                        if (!memcmp (p, name, strlen (name) + 1))
                                return v;
@@ -2800,14 +2801,15 @@ static TCHAR *getfrombstr(uaecptr pp)
        return au_copy (s, p[0] + 1, (char*)p + 1);
 }
 
-static void show_exec_lists (TCHAR t)
+static void show_exec_lists (TCHAR *t)
 {
        uaecptr execbase = get_long_debug (4);
        uaecptr list = 0, node;
-       TCHAR c = _totupper (t);
+       TCHAR c = t[0];
+       TCHAR c2 = t[1];
 
-       if (c == 'O') { // doslist
-               uaecptr dosbase = get_base ("dos.library");
+       if (c == 'o' || c == 'O') { // doslist
+               uaecptr dosbase = get_base ("dos.library", 378);
                if (dosbase) {
                        uaecptr rootnode = get_long_debug (dosbase + 34);
                        uaecptr dosinfo = get_long_debug (rootnode + 24) << 2;
@@ -2831,7 +2833,7 @@ static void show_exec_lists (TCHAR t)
                        console_out_f (_T("can't find dos.library\n"));
                }
                return;
-       } else if (c == 'I') { // interrupts
+       } else if (c == 'i' || c == 'I') { // interrupts
                static const int it[] = {  1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0 };
                static const int it2[] = { 1, 1, 1, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 6, 6, 7 };
                list = execbase + 84;
@@ -2882,7 +2884,7 @@ static void show_exec_lists (TCHAR t)
                        list += 12;
                }
                return;
-       } else if (c == 'S') { // residents
+       } else if (c == 'R') { // residents
                list = get_long (execbase + 300);
                while (list) {
                        uaecptr resident = get_long_debug (list);
@@ -2910,26 +2912,96 @@ static void show_exec_lists (TCHAR t)
                        list += 4;
                }
                return;
+       } else if (c == 'f' || c== 'F') { // filesystem.resource
+               uaecptr fs = get_base ("FileSystem.resource", 336);
+               if (fs) {
+                       static const TCHAR *fsnames[] = {
+                               _T("DosType"),
+                               _T("Version"),
+                               _T("PatchFlags"),
+                               _T("Type"),
+                               _T("Task"),
+                               _T("Lock"),
+                               _T("Handler"),
+                               _T("StackSize"),
+                               _T("Priority"),
+                               _T("Startup"),
+                               _T("SegList"),
+                               _T("GlobalVec"),
+                               NULL
+                       };
+                       uae_u8 *addr = get_real_address (get_long_debug (fs + 14));
+                       TCHAR *name = addr ? au ((char*)addr) : au ("<null>");
+                       my_trim (name);
+                       console_out_f (_T("%08x: '%s'\n"), fs, name);
+                       xfree (name);
+                       node = get_long_debug (fs + 18);
+                       while (get_long_debug (node)) {
+                               TCHAR *name = au ((char*)get_real_address (get_long_debug (node + 10)));
+                               my_trim (name);
+                               console_out_f (_T("%08x: '%s'\n"), node, name);
+                               xfree (name);
+                               for (int i = 0; fsnames[i]; i++) {
+                                       uae_u32 v = get_long_debug (node + 14 + i * 4);
+                                       console_out_f (_T("%16s = %08x %d\n"), fsnames[i], v, v);
+                               }
+                               console_out_f (_T("\n"));
+                               node = get_long_debug (node);
+                       }
+
+               } else {
+                       console_out_f (_T("FileSystem.resource not found.\n"));
+               }
+               return;
+       } else if (c == 'm' || c == 'M') { // memory
+               list = execbase + 322;
+               node = get_long_debug (list);
+               while (get_long_debug (node)) {
+                       TCHAR *name = au ((char*)get_real_address (get_long_debug (node + 10)));
+                       uae_u16 v = get_word_debug (node + 8);
+                       console_out_f (_T("%08x %d %d %s\n"), node, (int)((v >> 8) & 0xff), (uae_s8)(v & 0xff), name);
+                       xfree (name);
+                       console_out_f (_T("Attributes %04x First %08x Lower %08x Upper %08x Free %d\n"),
+                               get_word_debug (node + 14), get_long_debug (node + 16), get_long_debug (node + 20), 
+                               get_long_debug (node + 24), get_long_debug (node + 28));
+                       uaecptr mc = get_long_debug (node + 16);
+                       while (mc) {
+                               uae_u32 mc1 = get_long_debug (mc);
+                               uae_u32 mc2 = get_long_debug (mc + 4);
+                               console_out_f (_T(" %08x: %08x-%08x,%08x,%08x (%d)\n"), mc, mc, mc + mc2, mc1, mc2, mc2);
+                               mc = mc1;
+                       }
+                       console_out_f (_T("\n"));
+                       node = get_long_debug (node);
+               }
+               return;
        }
 
        switch (c)
        {
-       case 'R':
+       case 'r': // resources
                list = execbase + 336;
                break;
-       case 'D':
+       case 'd': // devices
                list = execbase + 350;
                break;
-       case 'L':
+       case 'l': // libraries
                list = execbase + 378;
                break;
+       case 'p': // ports
+               list = execbase + 392;
+               break;
+       case 's': // semaphores
+               list = execbase + 532;
+               break;
        }
        if (list == 0)
                return;
        node = get_long_debug (list);
        while (get_long_debug (node)) {
                TCHAR *name = au ((char*)get_real_address (get_long_debug (node + 10)));
-               console_out_f (_T("%08x %s\n"), node, name);
+               uae_u16 v = get_word_debug (node + 8);
+               console_out_f (_T("%08x %d %d %s\n"), node, (int)((v >> 8) & 0xff), (uae_s8)(v & 0xff), name);
                xfree (name);
                node = get_long_debug (node);
        }
@@ -3637,7 +3709,7 @@ static BOOL debug_line (TCHAR *input)
                        if (inptr[0] == 't' || inptr[0] == 0)
                                show_exec_tasks ();
                        else
-                               show_exec_lists (inptr[0]);
+                               show_exec_lists (&inptr[0]);
                        break;
                case 't':
                        no_trace_exceptions = 0;
index 43756176fc03fb823cd3cd39f23a0bc6743a44ec..f0d9bdc0b1e0d94f7df376ec2ada01a5053c7935 100644 (file)
@@ -693,6 +693,7 @@ where do we start drawing the playfield, where do we start drawing the right bor
 All of these are forced into the visible window (VISIBLE_LEFT_BORDER .. VISIBLE_RIGHT_BORDER).
 PLAYFIELD_START and PLAYFIELD_END are in window coordinates.  */
 static int playfield_start, playfield_end;
+static int real_playfield_start, real_playfield_end;
 static int linetoscr_diw_start, linetoscr_diw_end;
 static int native_ddf_left, native_ddf_right;
 #if 0
@@ -737,6 +738,11 @@ static void pfield_init_linetoscr (void)
        native_ddf_left = coord_hw_to_window_x (ddf_left);
        native_ddf_right = coord_hw_to_window_x (ddf_right);
 
+       if (native_ddf_left < 0)
+               native_ddf_left = 0;
+       if (native_ddf_right < native_ddf_left)
+               native_ddf_right = native_ddf_left;
+
        linetoscr_diw_start = dp_for_drawing->diwfirstword;
        linetoscr_diw_end = dp_for_drawing->diwlastword;
 
@@ -763,6 +769,9 @@ static void pfield_init_linetoscr (void)
        if (playfield_end > visible_right_border)
                playfield_end = visible_right_border;
 
+       real_playfield_end = playfield_end;
+       real_playfield_start = playfield_start;
+
        // Sprite hpos don't include DIW_DDF_OFFSET and can appear 1 lores pixel
        // before first bitplane pixel appears.
        // This means "bordersprite" condition is possible under OCS/ECS too. Argh!
@@ -832,6 +841,7 @@ static void pfield_init_linetoscr (void)
 
        if (dip_for_drawing->nr_sprites == 0)
                return;
+
        /* We need to clear parts of apixels.  */
        if (linetoscr_diw_start < native_ddf_left) {
                int size = res_shift_from_window (native_ddf_left - linetoscr_diw_start);
@@ -1734,9 +1744,9 @@ STATIC_INLINE void draw_sprites_ecs (struct sprite_entry *e)
        }
 }
 
-#if 0
+#ifdef AGA
 /* clear possible bitplane data outside DIW area */
-static void clear_bitplane_border (void)
+static void clear_bitplane_border_aga (void)
 {
        int len, shift = res_shift;
        uae_u8 v = 0;
@@ -2320,6 +2330,10 @@ static void pfield_draw_line (struct vidbuffer *vb, int lineno, int gfx_ypos, in
 
                if (dip_for_drawing->nr_sprites) {
                        int i;
+#ifdef AGA
+                       if (colors_for_drawing.bordersprite)
+                               clear_bitplane_border_aga ();
+#endif
 
                        for (i = 0; i < dip_for_drawing->nr_sprites; i++) {
 #ifdef AGA
index 945c94d7b4011ec5f1a1ffd8294ac6399297c06b..5743837198da97f668f903e693b03fb01856d02a 100644 (file)
@@ -118,6 +118,7 @@ static int enforcer_decode_hunk_and_offset (TCHAR *buf, uae_u32 pc)
 {
        uae_u32 sysbase = get_long (4);
        uae_u32 semaphore_list = sysbase + 532;
+       uae_u32 library_list = sysbase + 378;
 
        /* First step is searching for the SegTracker semaphore */
        uae_u32 node = amiga_list_first (semaphore_list);
@@ -179,6 +180,41 @@ static int enforcer_decode_hunk_and_offset (TCHAR *buf, uae_u32 pc)
                        node = amiga_node_next (node);
                }
        }
+
+       node = amiga_list_first (library_list);
+       while (node) {
+               uae_u32 string = get_long (node + 10); /* ln_Name */
+               uae_u8 *native_string = amiga2native (string, 100);
+
+               if (native_string) {
+                       if (!strcmp ((char*)native_string, "debug.library"))
+                               break;
+               }
+               node = amiga_node_next (node);
+       }
+
+       /* AROS debug.library */
+       if (node) {
+               uae_u32 seg_list = node + 34; /* sizeof(struct Library) */
+
+               node = amiga_list_first (seg_list);
+               while (node) {
+                       uae_u32 start = get_long (node + 12);
+                       uae_u32 end = get_long (node + 16);
+                       if (pc > start && pc < end) {
+                               TCHAR *native_name;
+                               uae_u32 hunk = get_long (node + 28);
+                               uae_u32 offset = pc - (get_long (node + 8) << 2);
+                               uaecptr mod = get_long (node + 20);
+                               native_name = au ((char*)amiga2native (mod + 24, 100));
+                               _stprintf (buf, _T("----> %08lx - \"%s\" Hunk %04lx Offset %08lx\n"), pc, native_name, hunk, offset);
+                               xfree (native_name);
+                               return 1;
+                       }
+                       node = amiga_node_next (node);
+               }
+
+       }
        return 0;
 }
 
@@ -255,22 +291,30 @@ static void enforcer_display_hit (const TCHAR *addressmode, uae_u32 pc, uaecptr
        }
 
        /* Segtracker output */
-       a7 = m68k_areg (regs, 7);
-       if (get_long (a7 - 4) != pc) {
-               if (enforcer_decode_hunk_and_offset (buf, pc)) {
-                       _tcscpy (enforcer_buf_ptr, buf);
-                       enforcer_buf_ptr += _tcslen (enforcer_buf_ptr);
-               }
+       if (enforcer_decode_hunk_and_offset (buf, pc)) {
+               _tcscpy (enforcer_buf_ptr, buf);
+               enforcer_buf_ptr += _tcslen (enforcer_buf_ptr);
        }
 
+       uae_u32 oldaddrs[BACKTRACELONGS];
+       a7 = m68k_areg (regs, 7);
        for (i = 0; i < BACKTRACELONGS; i++) {
+               uae_u32 addr;
                a7 += 4;
-               if (enforcer_decode_hunk_and_offset (buf, get_long (a7))) {
-                       int l = _tcslen (buf);
-
-                       if (ENFORCER_BUF_SIZE - (enforcer_buf_ptr - enforcer_buf) > l + 256) {
-                               _tcscpy (enforcer_buf_ptr, buf);
-                               enforcer_buf_ptr += l;
+               addr = get_long (a7);
+               for (j = 0; j < i; j++) {
+                       if (oldaddrs[j] == addr)
+                               break;
+               }
+               oldaddrs[i] = addr;
+               if (j == i && addr != pc) {
+                       if (enforcer_decode_hunk_and_offset (buf, addr)) {
+                               int l = _tcslen (buf);
+
+                               if (ENFORCER_BUF_SIZE - (enforcer_buf_ptr - enforcer_buf) > l + 256) {
+                                       _tcscpy (enforcer_buf_ptr, buf);
+                                       enforcer_buf_ptr += l;
+                               }
                        }
                }
        }
index fff087718e172ce4a72ceb4614b4e3f3b2ca3f7a..c68697b6992c1e8db7d06b8aa1fe79addcbe4842 100644 (file)
@@ -6258,8 +6258,9 @@ static uae_u32 REGPARAM2 filesys_diagentry (TrapContext *context)
 #define PP_FSPTR 404
 #define PP_ADDTOFSRES 408
 #define PP_FSRES 412
-#define PP_EXPLIB 416
-#define PP_FSHDSTART 420
+#define PP_FSRES_CREATED 416
+#define PP_EXPLIB 420
+#define PP_FSHDSTART 424
 
 static uae_u32 REGPARAM2 filesys_dev_bootfilesys (TrapContext *context)
 {
@@ -6851,7 +6852,10 @@ static void addfakefilesys (uaecptr parmpacket, uae_u32 dostype, int ver, int re
                put_long (parmpacket + PP_FSHDSTART + 12 + 5 * 4, ci->priority);
                flags |= 0x20;
        }
-       put_long (parmpacket + PP_FSHDSTART + 12 + 8 * 4, kickstart_version < 36 && dostype == 0x444f5300 ? 0 : -1); // globvec
+       put_long (parmpacket + PP_FSHDSTART + 12 + 8 * 4, dostype == 0x444f5300 ? 0 : -1); // globvec
+       // if OFS = seglist -> NULL
+       if ((dostype & 0xffffff00) == 0x444f5300)
+               flags &= ~0x080;
        put_long (parmpacket + PP_FSHDSTART + 8, flags); // patchflags
 }
 
@@ -6905,6 +6909,11 @@ static int dofakefilesys (UnitInfo *uip, uaecptr parmpacket, struct uaedev_confi
                addfakefilesys (parmpacket, dostype, ver, rev, ci);
                return FILESYS_HARDFILE;
        }
+       if ((dostype & 0xffffff00) == 0x444f5300 && (!uip->filesysdir || !uip->filesysdir[0])) {
+               write_log (_T("RDB: OFS, using ROM default FS.\n"));
+               return FILESYS_HARDFILE;
+       }
+
        tmp[0] = 0;
        if (uip->filesysdir && _tcslen (uip->filesysdir) > 0) {
                _tcscpy (tmp, uip->filesysdir);
@@ -6928,10 +6937,7 @@ static int dofakefilesys (UnitInfo *uip, uaecptr parmpacket, struct uaedev_confi
        zf = zfile_fopen (tmp, _T("rb"), ZFD_NORMAL);
        if (!zf) {
                addfakefilesys (parmpacket, dostype, ver, rev, ci);
-               write_log (_T("RDB: filesys not found\n"));
-               if ((dostype & 0xffffff00) == 0x444f5300)
-                       return FILESYS_HARDFILE;
-               write_log (_T("RDB: mounted without filesys\n"));
+               write_log (_T("RDB: filesys not found, mounted without filesys\n"));
                return FILESYS_HARDFILE;
        }
 
@@ -7004,7 +7010,7 @@ static int dofakefilesys (UnitInfo *uip, uaecptr parmpacket, struct uaedev_confi
        zfile_fclose (zf);
        uip->rdb_filesyssize = size;
 
-       // DOS\0 is not in fs.resource
+       // DOS\0 is not in fs.resource and fs.resource already existed?
        if (dostype == 0x444f5300 && oldversion < 0)
                oldversion = 0;
        put_long (parmpacket + PP_FSSIZE, uip->rdb_filesyssize);
index c65f0759f94445b93f136e5c41cf4485aea76c64..ea72d730413555bcc2493b89f319da7e2e8faa3d 100644 (file)
@@ -1,13 +1,13 @@
  db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
- db(0x60); db(0x02); db(0x00); db(0x09); db(0x60); db(0x00); db(0x0b); db(0x12);
- db(0x00); db(0x00); db(0x08); db(0xae); db(0x00); db(0x00); db(0x00); db(0xe0);
- db(0x00); db(0x00); db(0x02); db(0x74); db(0x00); db(0x00); db(0x00); db(0x24);
- db(0x00); db(0x00); db(0x03); db(0x82); db(0x00); db(0x00); db(0x00); db(0x00);
- db(0x00); db(0x00); db(0x13); db(0xa0); db(0x43); db(0xfa); db(0x18); db(0xa9);
+ db(0x60); db(0x02); db(0x00); db(0x09); db(0x60); db(0x00); db(0x0b); db(0x4c);
+ db(0x00); db(0x00); db(0x08); db(0xe8); db(0x00); db(0x00); db(0x00); db(0xe0);
+ db(0x00); db(0x00); db(0x02); db(0xa8); db(0x00); db(0x00); db(0x00); db(0x24);
+ db(0x00); db(0x00); db(0x03); db(0xb6); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x00); db(0x00); db(0x13); db(0xda); db(0x43); db(0xfa); db(0x18); db(0xe5);
  db(0x4e); db(0xae); db(0xff); db(0xa0); db(0x20); db(0x40); db(0x20); db(0x28);
  db(0x00); db(0x16); db(0x20); db(0x40); db(0x4e); db(0x90); db(0x4e); db(0x75);
  db(0x48); db(0xe7); db(0xe0); db(0xe2); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x11); db(0x61); db(0x00); db(0x17); db(0x92); db(0x4e); db(0x90);
+ db(0x72); db(0x11); db(0x61); db(0x00); db(0x17); db(0xce); db(0x4e); db(0x90);
  db(0x4a); db(0x80); db(0x67); db(0x4c); db(0x2c); db(0x78); db(0x00); db(0x04);
  db(0x0c); db(0x6e); db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x40);
  db(0x70); db(0x14); db(0x24); db(0x00); db(0x72); db(0x01); db(0x4e); db(0xae);
  db(0x20); db(0x68); db(0x00); db(0x02); db(0x2f); db(0x08); db(0x4e); db(0x90);
  db(0x20); db(0x5f); db(0x58); db(0x8f); db(0x48); db(0xe7); db(0xff); db(0x7e);
  db(0x22); db(0x4e); db(0x20); db(0x08); db(0x30); db(0x7c); db(0xff); db(0xb8);
- db(0x4e); db(0xae); db(0xfe); db(0x5c); db(0x61); db(0x00); db(0x12); db(0xe2);
- db(0x61); db(0x00); db(0x16); db(0xa8); db(0x4c); db(0xdf); db(0x7e); db(0xff);
+ db(0x4e); db(0xae); db(0xfe); db(0x5c); db(0x61); db(0x00); db(0x13); db(0x1c);
+ db(0x61); db(0x00); db(0x16); db(0xe4); db(0x4c); db(0xdf); db(0x7e); db(0xff);
  db(0x4e); db(0x75); db(0x00); db(0x00); db(0x08); db(0x00); db(0x00); db(0x02);
  db(0x67); db(0x06); db(0x4e); db(0xb9); db(0x00); db(0xf0); db(0x00); db(0x00);
  db(0x4e); db(0xf9); db(0x00); db(0xf0); db(0x00); db(0x00); db(0x00); db(0x00);
  db(0x48); db(0xe7); db(0xff); db(0xfe); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x30); db(0x3c); db(0xff); db(0xec); db(0x61); db(0x00); db(0x16); db(0xe8);
- db(0x2a); db(0x50); db(0x43); db(0xfa); db(0x18); db(0x0a); db(0x70); db(0x24);
+ db(0x30); db(0x3c); db(0xff); db(0xec); db(0x61); db(0x00); db(0x17); db(0x24);
+ db(0x2a); db(0x50); db(0x43); db(0xfa); db(0x18); db(0x46); db(0x70); db(0x24);
  db(0x7a); db(0x01); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80);
- db(0x66); db(0x0c); db(0x43); db(0xfa); db(0x17); db(0xfa); db(0x70); db(0x00);
+ db(0x66); db(0x0c); db(0x43); db(0xfa); db(0x18); db(0x36); db(0x70); db(0x00);
  db(0x7a); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x28); db(0x40);
  db(0x4a); db(0xad); db(0x01); db(0x0c); db(0x67); db(0x00); db(0x00); db(0x5c);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x30); db(0x22); db(0x3c);
+ db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x34); db(0x22); db(0x3c);
  db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x26); db(0x40); db(0x27); db(0x4c); db(0x01); db(0xa0); db(0x7c); db(0x00);
+ db(0x26); db(0x40); db(0x27); db(0x4c); db(0x01); db(0xa4); db(0x7c); db(0x00);
  db(0xbc); db(0x6d); db(0x01); db(0x0e); db(0x64); db(0x2c); db(0x2f); db(0x06);
  db(0x7e); db(0x01); db(0x4a); db(0x45); db(0x67); db(0x04); db(0x08); db(0xc7);
  db(0x00); db(0x02); db(0x2f); db(0x0b); db(0x20); db(0x4b); db(0x61); db(0x00);
- db(0x07); db(0x66); db(0x26); db(0x5f); db(0x0c); db(0x80); db(0xff); db(0xff);
+ db(0x07); db(0xa0); db(0x26); db(0x5f); db(0x0c); db(0x80); db(0xff); db(0xff);
  db(0xff); db(0xfe); db(0x67); db(0x08); db(0x48); db(0x46); db(0x52); db(0x46);
  db(0x48); db(0x46); db(0x60); db(0xdc); db(0x2c); db(0x1f); db(0x52); db(0x46);
  db(0x60); db(0xce); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x22); db(0x4b);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x30); db(0x4e); db(0xae);
+ db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x34); db(0x4e); db(0xae);
  db(0xff); db(0x2e); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x22); db(0x4c);
- db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x78); db(0x03); db(0x0c); db(0x6e);
- db(0x00); db(0x24); db(0x00); db(0x14); db(0x65); db(0x04); db(0x00); db(0x44);
- db(0x01); db(0x00); db(0x43); db(0xf9); db(0x00); db(0x21); db(0x00); db(0x00);
- db(0x4e); db(0xae); db(0xfd); db(0xea); db(0x4a); db(0x80); db(0x66); db(0x20);
- db(0x30); db(0x3c); db(0xff); db(0x80); db(0x61); db(0x00); db(0x16); db(0x38);
- db(0x4e); db(0x90); db(0x22); db(0x04); db(0x74); db(0xf6); db(0x20); db(0x7c);
- db(0x00); db(0x20); db(0x00); db(0x00); db(0x90); db(0x88); db(0x65); db(0x08);
- db(0x67); db(0x06); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfd); db(0x96);
- db(0x30); db(0x3c); db(0xff); db(0x80); db(0x61); db(0x00); db(0x16); db(0x18);
- db(0x4e); db(0x90); db(0x20); db(0x49); db(0x20); db(0x01); db(0x67); db(0x0c);
- db(0x22); db(0x04); db(0x74); db(0xfb); db(0x43); db(0xfa); db(0x17); db(0x56);
- db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x41); db(0xfa); db(0x16); db(0xcd);
- db(0x43); db(0xfa); db(0x00); db(0x54); db(0x70); db(0x0a); db(0x61); db(0x00);
- db(0x0c); db(0x76); db(0x22); db(0x40); db(0x72); db(0x01); db(0x30); db(0x3c);
- db(0xff); db(0x48); db(0x61); db(0x00); db(0x15); db(0xea); db(0x4e); db(0x90);
- db(0x4c); db(0xdf); db(0x7f); db(0xff); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0x38); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x24); db(0x00);
- db(0x28); db(0x01); db(0x26); db(0x09); db(0x24); db(0x48); db(0x43); db(0xfa);
- db(0x16); db(0xc7); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
- db(0x4a); db(0x80); db(0x67); db(0x14); db(0x2c); db(0x40); db(0x22); db(0x0a);
- db(0xe4); db(0x8b); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x22); db(0x4e);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62);
- db(0x4c); db(0xdf); db(0x44); db(0x1c); db(0x4e); db(0x75); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d);
- db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x41); db(0xfa); db(0x16); db(0x78);
- db(0x43); db(0xfa); db(0x00); db(0x16); db(0x70); db(0x0f); db(0x22); db(0x3c);
- db(0x00); db(0x00); db(0x1f); db(0x40); db(0x61); db(0x00); db(0xff); db(0xa8);
- db(0x60); db(0xdc); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x10);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x72); db(0x02); db(0x30); db(0x3c);
- db(0xff); db(0x48); db(0x61); db(0x00); db(0x15); db(0x72); db(0x4e); db(0x90);
- db(0x22); db(0x00); db(0x6b); db(0x04); db(0x61); db(0x00); db(0x08); db(0x04);
- db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x00); db(0x20);
- db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x15); db(0x58);
- db(0x70); db(0x00); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x00);
- db(0x00); db(0xa2); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x30); db(0x3c);
- db(0xff); db(0x50); db(0x61); db(0x00); db(0x15); db(0x42); db(0x70); db(0x02);
- db(0x4e); db(0x90); db(0x0c); db(0x40); db(0x00); db(0x01); db(0x6d); db(0x00);
- db(0x00); db(0x7c); db(0x6e); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0x92);
- db(0x60); db(0xe4); db(0x0c); db(0x40); db(0x00); db(0x02); db(0x6e); db(0x08);
- db(0x20); db(0x01); db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x60); db(0xd6);
- db(0x0c); db(0x40); db(0x00); db(0x03); db(0x6e); db(0x06); db(0x4e); db(0xae);
- db(0xfe); db(0x86); db(0x60); db(0xca); db(0x0c); db(0x40); db(0x00); db(0x04);
- db(0x6e); db(0x06); db(0x4e); db(0xae); db(0xff); db(0x4c); db(0x60); db(0xbe);
- db(0x0c); db(0x40); db(0x00); db(0x05); db(0x6e); db(0x46); db(0x48); db(0xe7);
- db(0x00); db(0xc0); db(0x70); db(0x26); db(0x22); db(0x3c); db(0x00); db(0x01);
- db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4c); db(0xdf);
- db(0x03); db(0x00); db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x08);
- db(0x00); db(0x08); db(0x25); db(0x48); db(0x00); db(0x0e); db(0x35); db(0x7c);
- db(0x00); db(0x26); db(0x00); db(0x12); db(0x25); db(0x7c); db(0x40); db(0x00);
- db(0x00); db(0x00); db(0x00); db(0x14); db(0x35); db(0x7c); db(0x12); db(0x34);
- db(0x00); db(0x18); db(0x25); db(0x49); db(0x00); db(0x1a); db(0x20); db(0x69);
- db(0x00); db(0x10); db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xfe); db(0x92);
- db(0x60); db(0x00); db(0xff); db(0x74); db(0x30); db(0x3c); db(0xff); db(0x50);
- db(0x61); db(0x00); db(0x14); db(0xb4); db(0x70); db(0x04); db(0x4e); db(0x90);
- db(0x70); db(0x01); db(0x4c); db(0xdf); db(0x04); db(0x00); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0xc0); db(0xe0); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x12); db(0x61); db(0x00); db(0x14); db(0x9a); db(0x4e); db(0x90);
- db(0x24); db(0x40); db(0x70); db(0x16); db(0x22); db(0x3c); db(0x00); db(0x01);
- db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40);
- db(0x13); db(0x7c); db(0x00); db(0x02); db(0x00); db(0x08); db(0x13); db(0x7c);
- db(0x00); db(0xf6); db(0x00); db(0x09); db(0x41); db(0xfa); db(0x15); db(0x27);
- db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x00); db(0x16);
- db(0x23); db(0x48); db(0x00); db(0x12); db(0x23); db(0x4a); db(0x00); db(0x0e);
- db(0x70); db(0x05); db(0x4e); db(0xae); db(0xff); db(0x58); db(0x4c); db(0xdf);
- db(0x07); db(0x03); db(0x4e); db(0x75); db(0x52); db(0x91); db(0x70); db(0x00);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xc0); db(0xc0); db(0x61); db(0x00);
- db(0xfc); db(0xb0); db(0x70); db(0x1a); db(0x22); db(0x3c); db(0x00); db(0x01);
- db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40);
- db(0x41); db(0xfa); db(0x14); db(0xfa); db(0x23); db(0x48); db(0x00); db(0x0a);
- db(0x41); db(0xfa); db(0xfe); db(0xd2); db(0x23); db(0x48); db(0x00); db(0x0e);
- db(0x41); db(0xfa); db(0xfe); db(0xca); db(0x23); db(0x48); db(0x00); db(0x12);
- db(0x33); db(0x7c); db(0x02); db(0x14); db(0x00); db(0x08); db(0x70); db(0x03);
- db(0x4e); db(0xae); db(0xff); db(0x58); db(0x61); db(0x00); db(0xff); db(0x72);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x04); db(0x61); db(0x00);
- db(0x14); db(0x0e); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x04);
- db(0x61); db(0x00); db(0x0a); db(0xe0); db(0x4c); db(0xdf); db(0x03); db(0x03);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xc0); db(0xf2); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x24); db(0x48); db(0x26); db(0x49); db(0x20); db(0x3c);
- db(0x00); db(0x00); db(0x00); db(0xbe); db(0x22); db(0x3c); db(0x00); db(0x01);
- db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40);
- db(0x70); db(0x00); db(0x43); db(0xeb); db(0x01); db(0xa4); db(0x11); db(0xb1);
- db(0x00); db(0x00); db(0x00); db(0x0e); db(0x52); db(0x40); db(0x0c); db(0x40);
- db(0x00); db(0x8c); db(0x66); db(0xf2); db(0x20); db(0x0a); db(0xe4); db(0x88);
- db(0x21); db(0x40); db(0x00); db(0x36); db(0x22); db(0x48); db(0x41); db(0xfa);
- db(0x14); db(0x7c); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x20); db(0x6b);
- db(0x01); db(0x9c); db(0x41); db(0xe8); db(0x00); db(0x12); db(0x4e); db(0xae);
- db(0xff); db(0x10); db(0x4c); db(0xdf); db(0x4f); db(0x03); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x7f); db(0x7e); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x24); db(0x48); db(0x0c); db(0x9a); db(0x00); db(0x00); db(0x03); db(0xf3);
- db(0x66); db(0x00); db(0x00); db(0xe4); db(0x50); db(0x8a); db(0x2e); db(0x2a);
- db(0x00); db(0x04); db(0x9e); db(0x92); db(0x50); db(0x8a); db(0x52); db(0x87);
- db(0x26); db(0x4a); db(0x20); db(0x07); db(0xd0); db(0x80); db(0xd0); db(0x80);
- db(0xd7); db(0xc0); db(0x28); db(0x4a); db(0x9b); db(0xcd); db(0x7c); db(0x00);
- db(0x24); db(0x12); db(0x72); db(0x01); db(0x08); db(0x02); db(0x00); db(0x1e);
- db(0x67); db(0x04); db(0x08); db(0xc1); db(0x00); db(0x01); db(0x08); db(0xc1);
- db(0x00); db(0x10); db(0xe5); db(0x8a); db(0x66); db(0x04); db(0x42); db(0x9a);
- db(0x60); db(0x20); db(0x50); db(0x82); db(0x20); db(0x02); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0xa0);
- db(0x20); db(0x40); db(0x20); db(0xc2); db(0x24); db(0xc8); db(0x22); db(0x0d);
- db(0x67); db(0x06); db(0x20); db(0x08); db(0xe4); db(0x88); db(0x2a); db(0x80);
- db(0x2a); db(0x48); db(0x52); db(0x86); db(0xbe); db(0x86); db(0x66); db(0xc0);
- db(0x7c); db(0x00); db(0x22); db(0x06); db(0xd2); db(0x81); db(0xd2); db(0x81);
- db(0x20); db(0x74); db(0x18); db(0x00); db(0x58); db(0x88); db(0x26); db(0x1b);
- db(0x28); db(0x1b); db(0xe5); db(0x8c); db(0x0c); db(0x83); db(0x00); db(0x00);
- db(0x03); db(0xe9); db(0x67); db(0x08); db(0x0c); db(0x83); db(0x00); db(0x00);
- db(0x03); db(0xea); db(0x66); db(0x0c); db(0x20); db(0x04); db(0x4a); db(0x80);
- db(0x67); db(0x0e); db(0x10); db(0xdb); db(0x53); db(0x80); db(0x60); db(0xf6);
- db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xeb); db(0x66); db(0x4e);
- db(0x26); db(0x1b); db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xec);
- db(0x66); db(0x28); db(0x22); db(0x06); db(0xd2); db(0x81); db(0xd2); db(0x81);
- db(0x20); db(0x74); db(0x18); db(0x00); db(0x58); db(0x88); db(0x20); db(0x1b);
- db(0x67); db(0xe6); db(0x22); db(0x1b); db(0xd2); db(0x81); db(0xd2); db(0x81);
- db(0x26); db(0x34); db(0x18); db(0x00); db(0x58); db(0x83); db(0x24); db(0x1b);
- db(0xd7); db(0xb0); db(0x28); db(0x00); db(0x53); db(0x80); db(0x66); db(0xf6);
- db(0x60); db(0xe4); db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xf2);
- db(0x66); db(0x14); db(0x52); db(0x86); db(0xbe); db(0x86); db(0x66); db(0x00);
- db(0xff); db(0x8a); db(0x7e); db(0x01); db(0x20); db(0x54); db(0x20); db(0x07);
- db(0x4c); db(0xdf); db(0x7e); db(0xfe); db(0x4e); db(0x75); db(0x91); db(0xc8);
- db(0x7e); db(0x00); db(0x60); db(0xf2); db(0x48); db(0xe7); db(0x40); db(0xe2);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x41); db(0xee); db(0x01); db(0x50);
- db(0x20); db(0x50); db(0x4a); db(0x90); db(0x67); db(0x1a); db(0x22); db(0x68);
- db(0x00); db(0x0a); db(0x45); db(0xfa); db(0x13); db(0xcc); db(0x10); db(0x19);
- db(0x12); db(0x1a); db(0xb0); db(0x01); db(0x66); db(0x06); db(0x4a); db(0x00);
- db(0x67); db(0x42); db(0x60); db(0xf2); db(0x20); db(0x50); db(0x60); db(0xe2);
- db(0x70); db(0x20); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x24); db(0x40); db(0x15); db(0x7c);
- db(0x00); db(0x08); db(0x00); db(0x08); db(0x41); db(0xfa); db(0x13); db(0xa2);
- db(0x25); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x13); db(0x1e);
- db(0x25); db(0x48); db(0x00); db(0x0e); db(0x41); db(0xea); db(0x00); db(0x12);
- db(0x20); db(0x88); db(0x58); db(0x90); db(0x21); db(0x48); db(0x00); db(0x08);
- db(0x41); db(0xee); db(0x01); db(0x50); db(0x22); db(0x4a); db(0x4e); db(0xae);
- db(0xff); db(0x0a); db(0x20); db(0x4a); db(0x20); db(0x08); db(0x4c); db(0xdf);
- db(0x47); db(0x02); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x01); db(0x02);
- db(0x2e); db(0x00); db(0x4a); db(0x2b); db(0x00); db(0x4c); db(0x67); db(0x7c);
- db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x0c); db(0x6e); db(0x00); db(0x25);
- db(0x00); db(0x14); db(0x65); db(0x3e); db(0x72); db(0x0e); db(0x4e); db(0xae);
- db(0xfd); db(0x66); db(0x02); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe);
- db(0x67); db(0x62); db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x0a);
- db(0x41); db(0xeb); db(0x00); db(0x20); db(0x22); db(0x08); db(0x4e); db(0xae);
- db(0xfd); db(0x5a); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12);
+ db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x30); db(0x3c); db(0xff); db(0x80);
+ db(0x61); db(0x00); db(0x16); db(0x90); db(0x4e); db(0x90); db(0x4e); db(0xae);
+ db(0xff); db(0x88); db(0x41); db(0xee); db(0x01); db(0x42); db(0x20); db(0x50);
+ db(0x4a); db(0x90); db(0x67); db(0x54); db(0x22); db(0x28); db(0x00); db(0x14);
+ db(0x42); db(0x41); db(0x4a); db(0x81); db(0x66); db(0xf0); db(0x32); db(0x28);
+ db(0x00); db(0x0e); db(0x02); db(0x41); db(0x00); db(0x02); db(0x67); db(0xe6);
+ db(0x90); db(0xa8); db(0x00); db(0x18); db(0x6b); db(0x3a); db(0x67); db(0x38);
+ db(0x42); db(0x78); db(0x01); db(0x40); db(0x22); db(0x28); db(0x00); db(0x18);
+ db(0xd1); db(0xa8); db(0x00); db(0x18); db(0xd1); db(0xa8); db(0x00); db(0x1c);
+ db(0xd1); db(0xae); db(0x00); db(0x3e); db(0x20); db(0x68); db(0x00); db(0x10);
+ db(0x4a); db(0x90); db(0x67); db(0x04); db(0x20); db(0x50); db(0x60); db(0xf8);
+ db(0x24); db(0x08); db(0xd4); db(0xa8); db(0x00); db(0x04); db(0xb2); db(0x82);
+ db(0x67); db(0x0a); db(0x20); db(0x81); db(0x22); db(0x41); db(0x42); db(0x99);
+ db(0x22); db(0x80); db(0x60); db(0x04); db(0xd1); db(0xa8); db(0x00); db(0x04);
+ db(0x4e); db(0xae); db(0xff); db(0x82); db(0x30); db(0x3c); db(0xff); db(0x80);
+ db(0x61); db(0x00); db(0x16); db(0x20); db(0x4e); db(0x90); db(0x20); db(0x49);
+ db(0x20); db(0x01); db(0x67); db(0x0c); db(0x22); db(0x04); db(0x74); db(0xfb);
+ db(0x43); db(0xfa); db(0x17); db(0x5e); db(0x4e); db(0xae); db(0xfd); db(0x96);
+ db(0x41); db(0xfa); db(0x16); db(0xd5); db(0x43); db(0xfa); db(0x00); db(0x54);
+ db(0x70); db(0x0a); db(0x61); db(0x00); db(0x0c); db(0x7c); db(0x22); db(0x40);
+ db(0x72); db(0x01); db(0x30); db(0x3c); db(0xff); db(0x48); db(0x61); db(0x00);
+ db(0x15); db(0xf2); db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x7f); db(0xff);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x22); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x24); db(0x00); db(0x28); db(0x01); db(0x26); db(0x09);
+ db(0x24); db(0x48); db(0x43); db(0xfa); db(0x16); db(0xcf); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x67); db(0x14);
+ db(0x2c); db(0x40); db(0x22); db(0x0a); db(0xe4); db(0x8b); db(0x4e); db(0xae);
+ db(0xff); db(0x76); db(0x22); db(0x4e); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x4c); db(0xdf); db(0x44); db(0x1c);
+ db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0x00);
+ db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2);
+ db(0x41); db(0xfa); db(0x16); db(0x80); db(0x43); db(0xfa); db(0x00); db(0x16);
+ db(0x70); db(0x0f); db(0x22); db(0x3c); db(0x00); db(0x00); db(0x1f); db(0x40);
+ db(0x61); db(0x00); db(0xff); db(0xa8); db(0x60); db(0xdc); db(0x00); db(0x00);
+ db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x72); db(0x02); db(0x30); db(0x3c); db(0xff); db(0x48); db(0x61); db(0x00);
+ db(0x15); db(0x7a); db(0x4e); db(0x90); db(0x22); db(0x00); db(0x6b); db(0x04);
+ db(0x61); db(0x00); db(0x08); db(0x0a); db(0x70); db(0x00); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0x00); db(0x20); db(0x30); db(0x3c); db(0xff); db(0x50);
+ db(0x61); db(0x00); db(0x15); db(0x60); db(0x70); db(0x00); db(0x4e); db(0x90);
+ db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0xa2); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00);
+ db(0x15); db(0x4a); db(0x70); db(0x02); db(0x4e); db(0x90); db(0x0c); db(0x40);
+ db(0x00); db(0x01); db(0x6d); db(0x00); db(0x00); db(0x7c); db(0x6e); db(0x06);
+ db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0xe4); db(0x0c); db(0x40);
+ db(0x00); db(0x02); db(0x6e); db(0x08); db(0x20); db(0x01); db(0x4e); db(0xae);
+ db(0xfe); db(0xbc); db(0x60); db(0xd6); db(0x0c); db(0x40); db(0x00); db(0x03);
+ db(0x6e); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0x86); db(0x60); db(0xca);
+ db(0x0c); db(0x40); db(0x00); db(0x04); db(0x6e); db(0x06); db(0x4e); db(0xae);
+ db(0xff); db(0x4c); db(0x60); db(0xbe); db(0x0c); db(0x40); db(0x00); db(0x05);
+ db(0x6e); db(0x46); db(0x48); db(0xe7); db(0x00); db(0xc0); db(0x70); db(0x26);
+ db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x4c); db(0xdf); db(0x03); db(0x00); db(0x24); db(0x40);
+ db(0x15); db(0x7c); db(0x00); db(0x08); db(0x00); db(0x08); db(0x25); db(0x48);
+ db(0x00); db(0x0e); db(0x35); db(0x7c); db(0x00); db(0x26); db(0x00); db(0x12);
+ db(0x25); db(0x7c); db(0x40); db(0x00); db(0x00); db(0x00); db(0x00); db(0x14);
+ db(0x35); db(0x7c); db(0x12); db(0x34); db(0x00); db(0x18); db(0x25); db(0x49);
+ db(0x00); db(0x1a); db(0x20); db(0x69); db(0x00); db(0x10); db(0x22); db(0x4a);
+ db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0x00); db(0xff); db(0x74);
+ db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x14); db(0xbc);
+ db(0x70); db(0x04); db(0x4e); db(0x90); db(0x70); db(0x01); db(0x4c); db(0xdf);
+ db(0x04); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xc0); db(0xe0);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x12); db(0x61); db(0x00);
+ db(0x14); db(0xa2); db(0x4e); db(0x90); db(0x24); db(0x40); db(0x70); db(0x16);
+ db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x22); db(0x40); db(0x13); db(0x7c); db(0x00); db(0x02);
+ db(0x00); db(0x08); db(0x13); db(0x7c); db(0x00); db(0xf6); db(0x00); db(0x09);
+ db(0x41); db(0xfa); db(0x15); db(0x2f); db(0x23); db(0x48); db(0x00); db(0x0a);
+ db(0x41); db(0xfa); db(0x00); db(0x16); db(0x23); db(0x48); db(0x00); db(0x12);
+ db(0x23); db(0x4a); db(0x00); db(0x0e); db(0x70); db(0x05); db(0x4e); db(0xae);
+ db(0xff); db(0x58); db(0x4c); db(0xdf); db(0x07); db(0x03); db(0x4e); db(0x75);
+ db(0x52); db(0x91); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0xc0); db(0xc0); db(0x61); db(0x00); db(0xfc); db(0x7c); db(0x70); db(0x1a);
+ db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x22); db(0x40); db(0x41); db(0xfa); db(0x15); db(0x02);
+ db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa); db(0xfe); db(0xd2);
+ db(0x23); db(0x48); db(0x00); db(0x0e); db(0x41); db(0xfa); db(0xfe); db(0xca);
+ db(0x23); db(0x48); db(0x00); db(0x12); db(0x33); db(0x7c); db(0x02); db(0x14);
+ db(0x00); db(0x08); db(0x70); db(0x03); db(0x4e); db(0xae); db(0xff); db(0x58);
+ db(0x61); db(0x00); db(0xff); db(0x72); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x04); db(0x61); db(0x00); db(0x14); db(0x16); db(0x4e); db(0x90);
+ db(0x4a); db(0x80); db(0x67); db(0x04); db(0x61); db(0x00); db(0x0a); db(0xe6);
+ db(0x4c); db(0xdf); db(0x03); db(0x03); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0xc0); db(0xf2); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x24); db(0x48);
+ db(0x26); db(0x49); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0xbe);
+ db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x20); db(0x40); db(0x70); db(0x00); db(0x43); db(0xeb);
+ db(0x01); db(0xa8); db(0x11); db(0xb1); db(0x00); db(0x00); db(0x00); db(0x0e);
+ db(0x52); db(0x40); db(0x0c); db(0x40); db(0x00); db(0x8c); db(0x66); db(0xf2);
+ db(0x20); db(0x0a); db(0xe4); db(0x88); db(0x21); db(0x40); db(0x00); db(0x36);
+ db(0x22); db(0x48); db(0x41); db(0xfa); db(0x14); db(0x84); db(0x23); db(0x48);
+ db(0x00); db(0x0a); db(0x20); db(0x6b); db(0x01); db(0x9c); db(0x41); db(0xe8);
+ db(0x00); db(0x12); db(0x4e); db(0xae); db(0xff); db(0x10); db(0x4c); db(0xdf);
+ db(0x4f); db(0x03); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x7f); db(0x7e);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x24); db(0x48); db(0x0c); db(0x9a);
+ db(0x00); db(0x00); db(0x03); db(0xf3); db(0x66); db(0x00); db(0x00); db(0xe4);
+ db(0x50); db(0x8a); db(0x2e); db(0x2a); db(0x00); db(0x04); db(0x9e); db(0x92);
+ db(0x50); db(0x8a); db(0x52); db(0x87); db(0x26); db(0x4a); db(0x20); db(0x07);
+ db(0xd0); db(0x80); db(0xd0); db(0x80); db(0xd7); db(0xc0); db(0x28); db(0x4a);
+ db(0x9b); db(0xcd); db(0x7c); db(0x00); db(0x24); db(0x12); db(0x72); db(0x01);
+ db(0x08); db(0x02); db(0x00); db(0x1e); db(0x67); db(0x04); db(0x08); db(0xc1);
+ db(0x00); db(0x01); db(0x08); db(0xc1); db(0x00); db(0x10); db(0xe5); db(0x8a);
+ db(0x66); db(0x04); db(0x42); db(0x9a); db(0x60); db(0x20); db(0x50); db(0x82);
+ db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80);
+ db(0x67); db(0x00); db(0x00); db(0xa0); db(0x20); db(0x40); db(0x20); db(0xc2);
+ db(0x24); db(0xc8); db(0x22); db(0x0d); db(0x67); db(0x06); db(0x20); db(0x08);
+ db(0xe4); db(0x88); db(0x2a); db(0x80); db(0x2a); db(0x48); db(0x52); db(0x86);
+ db(0xbe); db(0x86); db(0x66); db(0xc0); db(0x7c); db(0x00); db(0x22); db(0x06);
+ db(0xd2); db(0x81); db(0xd2); db(0x81); db(0x20); db(0x74); db(0x18); db(0x00);
+ db(0x58); db(0x88); db(0x26); db(0x1b); db(0x28); db(0x1b); db(0xe5); db(0x8c);
+ db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xe9); db(0x67); db(0x08);
+ db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xea); db(0x66); db(0x0c);
+ db(0x20); db(0x04); db(0x4a); db(0x80); db(0x67); db(0x0e); db(0x10); db(0xdb);
+ db(0x53); db(0x80); db(0x60); db(0xf6); db(0x0c); db(0x83); db(0x00); db(0x00);
+ db(0x03); db(0xeb); db(0x66); db(0x4e); db(0x26); db(0x1b); db(0x0c); db(0x83);
+ db(0x00); db(0x00); db(0x03); db(0xec); db(0x66); db(0x28); db(0x22); db(0x06);
+ db(0xd2); db(0x81); db(0xd2); db(0x81); db(0x20); db(0x74); db(0x18); db(0x00);
+ db(0x58); db(0x88); db(0x20); db(0x1b); db(0x67); db(0xe6); db(0x22); db(0x1b);
+ db(0xd2); db(0x81); db(0xd2); db(0x81); db(0x26); db(0x34); db(0x18); db(0x00);
+ db(0x58); db(0x83); db(0x24); db(0x1b); db(0xd7); db(0xb0); db(0x28); db(0x00);
+ db(0x53); db(0x80); db(0x66); db(0xf6); db(0x60); db(0xe4); db(0x0c); db(0x83);
+ db(0x00); db(0x00); db(0x03); db(0xf2); db(0x66); db(0x14); db(0x52); db(0x86);
+ db(0xbe); db(0x86); db(0x66); db(0x00); db(0xff); db(0x8a); db(0x7e); db(0x01);
+ db(0x20); db(0x54); db(0x20); db(0x07); db(0x4c); db(0xdf); db(0x7e); db(0xfe);
+ db(0x4e); db(0x75); db(0x91); db(0xc8); db(0x7e); db(0x00); db(0x60); db(0xf2);
+ db(0x48); db(0xe7); db(0x40); db(0xf2); db(0x26); db(0x48); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x41); db(0xee); db(0x01); db(0x50); db(0x20); db(0x50);
+ db(0x4a); db(0x90); db(0x67); db(0x1a); db(0x22); db(0x68); db(0x00); db(0x0a);
+ db(0x45); db(0xfa); db(0x13); db(0xd2); db(0x10); db(0x19); db(0x12); db(0x1a);
+ db(0xb0); db(0x01); db(0x66); db(0x06); db(0x4a); db(0x00); db(0x67); db(0x46);
+ db(0x60); db(0xf2); db(0x20); db(0x50); db(0x60); db(0xe2); db(0x70); db(0x20);
+ db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x08);
+ db(0x00); db(0x08); db(0x41); db(0xfa); db(0x13); db(0xa8); db(0x25); db(0x48);
+ db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x13); db(0x24); db(0x25); db(0x48);
+ db(0x00); db(0x0e); db(0x41); db(0xea); db(0x00); db(0x12); db(0x20); db(0x88);
+ db(0x58); db(0x90); db(0x21); db(0x48); db(0x00); db(0x08); db(0x41); db(0xee);
+ db(0x01); db(0x50); db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xff); db(0x0a);
+ db(0x20); db(0x4a); db(0x27); db(0x48); db(0x01); db(0xa0); db(0x20); db(0x08);
+ db(0x4c); db(0xdf); db(0x4f); db(0x02); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x01); db(0x02); db(0x2e); db(0x00); db(0x4a); db(0x2b); db(0x00); db(0x4c);
+ db(0x67); db(0x7c); db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x0c); db(0x6e);
+ db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x3e); db(0x72); db(0x0e);
+ db(0x4e); db(0xae); db(0xfd); db(0x66); db(0x02); db(0x80); db(0xff); db(0xff);
+ db(0xff); db(0xfe); db(0x67); db(0x62); db(0x08); db(0x07); db(0x00); db(0x00);
+ db(0x67); db(0x0a); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x22); db(0x08);
+ db(0x4e); db(0xae); db(0xfd); db(0x5a); db(0x08); db(0x07); db(0x00); db(0x01);
+ db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x66); db(0x0c);
+ db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x22); db(0x2b); db(0x00); db(0xb4);
+ db(0x4e); db(0xae); db(0xfd); db(0x5a); db(0x72); db(0x0e); db(0x4e); db(0xae);
+ db(0xfd); db(0x6c); db(0x60); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x08); db(0x07); db(0x00); db(0x00);
+ db(0x67); db(0x08); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x61); db(0x00);
+ db(0x00); db(0xac); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12);
  db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x66); db(0x0c); db(0x50); db(0xeb);
- db(0x00); db(0x9e); db(0x22); db(0x2b); db(0x00); db(0xb4); db(0x4e); db(0xae);
- db(0xfd); db(0x5a); db(0x72); db(0x0e); db(0x4e); db(0xae); db(0xfd); db(0x6c);
- db(0x60); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
- db(0xff); db(0x7c); db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x08);
- db(0x41); db(0xeb); db(0x00); db(0x20); db(0x61); db(0x00); db(0x00); db(0xac);
- db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12); db(0x4a); db(0x2b);
- db(0x00); db(0x9e); db(0x66); db(0x0c); db(0x50); db(0xeb); db(0x00); db(0x9e);
- db(0x20); db(0x6b); db(0x00); db(0xb4); db(0x61); db(0x00); db(0x00); db(0x94);
- db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4c); db(0xdf); db(0x40); db(0x80);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x01); db(0x22); db(0x2e); db(0x00);
- db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x0c); db(0x6e); db(0x00); db(0x25);
- db(0x00); db(0x14); db(0x65); db(0x3e); db(0x72); db(0x0e); db(0x4e); db(0xae);
- db(0xfd); db(0x66); db(0x02); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe);
- db(0x67); db(0x62); db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x0a);
- db(0x41); db(0xeb); db(0x00); db(0x20); db(0x22); db(0x08); db(0x4e); db(0xae);
- db(0xfd); db(0x60); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12);
+ db(0x00); db(0x9e); db(0x20); db(0x6b); db(0x00); db(0xb4); db(0x61); db(0x00);
+ db(0x00); db(0x94); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4c); db(0xdf);
+ db(0x40); db(0x80); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x01); db(0x22);
+ db(0x2e); db(0x00); db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x0c); db(0x6e);
+ db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x3e); db(0x72); db(0x0e);
+ db(0x4e); db(0xae); db(0xfd); db(0x66); db(0x02); db(0x80); db(0xff); db(0xff);
+ db(0xff); db(0xfe); db(0x67); db(0x62); db(0x08); db(0x07); db(0x00); db(0x00);
+ db(0x67); db(0x0a); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x22); db(0x08);
+ db(0x4e); db(0xae); db(0xfd); db(0x60); db(0x08); db(0x07); db(0x00); db(0x01);
+ db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x67); db(0x0c);
+ db(0x42); db(0x2b); db(0x00); db(0x9e); db(0x22); db(0x2b); db(0x00); db(0xb4);
+ db(0x4e); db(0xae); db(0xfd); db(0x60); db(0x72); db(0x0e); db(0x4e); db(0xae);
+ db(0xfd); db(0x6c); db(0x60); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x08); db(0x07); db(0x00); db(0x00);
+ db(0x67); db(0x08); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x61); db(0x00);
+ db(0x00); db(0x44); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12);
  db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x67); db(0x0c); db(0x42); db(0x2b);
- db(0x00); db(0x9e); db(0x22); db(0x2b); db(0x00); db(0xb4); db(0x4e); db(0xae);
- db(0xfd); db(0x60); db(0x72); db(0x0e); db(0x4e); db(0xae); db(0xfd); db(0x6c);
- db(0x60); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
- db(0xff); db(0x7c); db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x08);
- db(0x41); db(0xeb); db(0x00); db(0x20); db(0x61); db(0x00); db(0x00); db(0x44);
- db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12); db(0x4a); db(0x2b);
- db(0x00); db(0x9e); db(0x67); db(0x0c); db(0x42); db(0x2b); db(0x00); db(0x9e);
- db(0x20); db(0x6b); db(0x00); db(0xb4); db(0x61); db(0x00); db(0x00); db(0x2c);
- db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4c); db(0xdf); db(0x44); db(0x80);
- db(0x4e); db(0x75); db(0x22); db(0x48); db(0x20); db(0x6b); db(0x00); db(0xa0);
- db(0x20); db(0x68); db(0x00); db(0x22); db(0x20); db(0x68); db(0x00); db(0x18);
- db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x22); db(0xa8); db(0x00); db(0x04);
- db(0x20); db(0x09); db(0xe4); db(0x88); db(0x21); db(0x40); db(0x00); db(0x04);
- db(0x4e); db(0x75); db(0x24); db(0x48); db(0x20); db(0x6b); db(0x00); db(0xa0);
- db(0x20); db(0x68); db(0x00); db(0x22); db(0x20); db(0x68); db(0x00); db(0x18);
- db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x22); db(0x68); db(0x00); db(0x04);
- db(0xd3); db(0xc9); db(0xd3); db(0xc9); db(0xb3); db(0xca); db(0x66); db(0x06);
- db(0x21); db(0x52); db(0x00); db(0x04); db(0x60); db(0x18); db(0x20); db(0x09);
- db(0x67); db(0x0e); db(0x20); db(0x11); db(0xd0); db(0x80); db(0xd0); db(0x80);
- db(0xb5); db(0xc0); db(0x67); db(0x04); db(0x22); db(0x40); db(0x60); db(0xee);
- db(0x20); db(0x09); db(0x67); db(0x02); db(0x22); db(0x92); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x20); db(0x22); db(0x74); db(0x16); db(0x9f); db(0xc2);
- db(0x24); db(0x4f); db(0x32); db(0x02); db(0x42); db(0x32); db(0x10); db(0xff);
- db(0x53); db(0x41); db(0x66); db(0xf8); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x72); db(0x0f); db(0x4a); db(0x80); db(0x67); db(0x02); db(0x72); db(0x10);
- db(0x15); db(0x41); db(0x00); db(0x04); db(0x35); db(0x7c); db(0x08); db(0x00);
- db(0x00); db(0x08); db(0x22); db(0x6b); db(0x00); db(0xa4); db(0x33); db(0x7c);
- db(0x00); db(0x0b); db(0x00); db(0x1c); db(0x23); db(0x7c); db(0x00); db(0x00);
- db(0x00); db(0x16); db(0x00); db(0x24); db(0x23); db(0x4a); db(0x00); db(0x28);
- db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); db(0x22); db(0x6b);
- db(0x00); db(0xa8); db(0x33); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x1c);
- db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae);
- db(0xfe); db(0x38); db(0x22); db(0x6b); db(0x00); db(0xa8); db(0x25); db(0x69);
- db(0x00); db(0x20); db(0x00); db(0x0e); db(0x25); db(0x69); db(0x00); db(0x24);
- db(0x00); db(0x12); db(0x22); db(0x6b); db(0x00); db(0xa4); db(0x4e); db(0xae);
- db(0xfe); db(0x38); db(0xdf); db(0xc2); db(0x4c); db(0xdf); db(0x44); db(0x04);
- db(0x4e); db(0x75); db(0x4a); db(0x00); db(0x67); db(0x26); db(0x4a); db(0x2b);
- db(0x00); db(0x4c); db(0x66); db(0x36); db(0x70); db(0x00); db(0x4a); db(0x33);
- db(0x00); db(0x4d); db(0x67); db(0x04); db(0x52); db(0x00); db(0x60); db(0xf6);
- db(0x17); db(0x40); db(0x00); db(0x4c); db(0x67); db(0x24); db(0x20); db(0x01);
- db(0x61); db(0x00); db(0xfd); db(0xf2); db(0x70); db(0x01); db(0x61); db(0x00);
- db(0xff); db(0x60); db(0x60); db(0x16); db(0x4a); db(0x2b); db(0x00); db(0x4c);
- db(0x67); db(0x10); db(0x42); db(0x2b); db(0x00); db(0x4c); db(0x20); db(0x01);
- db(0x61); db(0x00); db(0xfe); db(0x68); db(0x70); db(0x00); db(0x61); db(0x00);
- db(0xff); db(0x48); db(0x4e); db(0x75); db(0x4a); db(0xac); db(0x00); db(0x14);
- db(0x67); db(0x0a); db(0x70); db(0x00); db(0x72); db(0x01); db(0x61); db(0x00);
- db(0xff); db(0xb2); db(0x4e); db(0x75); db(0x70); db(0x01); db(0x72); db(0x03);
- db(0x61); db(0x00); db(0xff); db(0xa8); db(0x4e); db(0x75); db(0x10); db(0x2b);
- db(0x00); db(0xac); db(0x6b); db(0x0a); db(0x70); db(0x01); db(0x72); db(0x03);
- db(0x61); db(0x00); db(0xff); db(0x98); db(0x4e); db(0x75); db(0x72); db(0x01);
- db(0x0c); db(0x00); db(0x00); db(0xfe); db(0x66); db(0x02); db(0x72); db(0x03);
- db(0x70); db(0x00); db(0x61); db(0x00); db(0xff); db(0x86); db(0x4e); db(0x75);
- db(0x20); db(0x6c); db(0x00); db(0x24); db(0x4a); db(0x90); db(0x67); db(0x0c);
- db(0x4a); db(0xa8); db(0x00); db(0x08); db(0x66); db(0x0a); db(0x4a); db(0xa8);
- db(0x00); db(0x0c); db(0x66); db(0x04); db(0x70); db(0x01); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2a); db(0x48); db(0x24); db(0x6c);
- db(0x00); db(0x18); db(0x2e); db(0x15); db(0x7a); db(0x00); db(0x4a); db(0x87);
- db(0x67); db(0x70); db(0x20); db(0x0a); db(0x67); db(0x6c); db(0x7c); db(0x00);
- db(0x22); db(0x2d); db(0x00); db(0x08); db(0x67); db(0x12); db(0x24); db(0x2a);
- db(0x00); db(0x04); db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x4e); db(0xae);
- db(0xfc); db(0x34); db(0x4a); db(0x80); db(0x66); db(0x02); db(0x50); db(0xc6);
- db(0x22); db(0x2d); db(0x00); db(0x0c); db(0x67); db(0x1c); db(0x20); db(0x41);
- db(0x22); db(0x4a); db(0x2f); db(0x0a); db(0x45); db(0xec); db(0x00); db(0x20);
- db(0x48); db(0x7a); db(0x00); db(0x08); db(0x2f); db(0x28); db(0x00); db(0x08);
- db(0x4e); db(0x75); db(0x24); db(0x5f); db(0x4a); db(0x80); db(0x66); db(0x02);
- db(0x50); db(0xc6); db(0x4a); db(0x06); db(0x67); db(0x24); db(0x20); db(0x2a);
- db(0x00); db(0x04); db(0x90); db(0x8a); db(0x4a); db(0x92); db(0x66); db(0x0a);
- db(0x20); db(0x05); db(0x67); db(0x10); db(0x20); db(0x40); db(0x42); db(0x90);
- db(0x60); db(0x0a); db(0x20); db(0x52); db(0x22); db(0x4a); db(0x22); db(0xd8);
- db(0x59); db(0x80); db(0x6a); db(0xfa); db(0x53); db(0x95); db(0x53); db(0x87);
- db(0x60); db(0x94); db(0x2a); db(0x0a); db(0x24); db(0x52); db(0x53); db(0x87);
- db(0x60); db(0x8c); db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x20); db(0x6c);
- db(0x00); db(0x24); db(0x4a); db(0x90); db(0x4e); db(0x75); db(0x61); db(0x00);
- db(0xfc); db(0x7c); db(0x21); db(0x40); db(0x01); db(0x9c); db(0x2f); db(0x08);
- db(0x30); db(0x3c); db(0xff); db(0xec); db(0x61); db(0x00); db(0x0f); db(0x18);
- db(0x2a); db(0x50); db(0x30); db(0x3c); db(0xff); db(0x28); db(0x61); db(0x00);
- db(0x0f); db(0x0e); db(0x22); db(0x48); db(0x20); db(0x5f); db(0x42); db(0xa8);
- db(0x01); db(0x90); db(0x42); db(0xa8); db(0x01); db(0x94); db(0x4e); db(0x91);
- db(0x26); db(0x00); db(0x0c); db(0x43); db(0xff); db(0xfe); db(0x67); db(0x00);
- db(0xf9); db(0x14); db(0x20); db(0x28); db(0x01); db(0x90); db(0x67); db(0x14);
- db(0x6b); db(0x12); db(0x2f); db(0x08); db(0x72); db(0x01); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x5f);
- db(0x21); db(0x40); db(0x01); db(0x94); db(0x4a); db(0x83); db(0x6a); db(0x0e);
- db(0x22); db(0x48); db(0x30); db(0x3c); db(0xff); db(0x20); db(0x61); db(0x00);
- db(0x0e); db(0xce); db(0x4e); db(0x90); db(0x60); db(0x26); db(0x2c); db(0x4c);
- db(0x2f); db(0x08); db(0x4e); db(0xae); db(0xff); db(0x70); db(0x20); db(0x5f);
- db(0x22); db(0x48); db(0x26); db(0x40); db(0x30); db(0x3c); db(0xff); db(0x20);
- db(0x61); db(0x00); db(0x0e); db(0xb4); db(0x4e); db(0x90); db(0x70); db(0x00);
- db(0x27); db(0x40); db(0x00); db(0x08); db(0x27); db(0x40); db(0x00); db(0x10);
- db(0x27); db(0x40); db(0x00); db(0x20); db(0x20); db(0x69); db(0x01); db(0x94);
- db(0x4a); db(0xa9); db(0x01); db(0x90); db(0x67); db(0x2c); db(0x20); db(0x08);
- db(0x67); db(0x32); db(0x61); db(0x00); db(0xfa); db(0xec); db(0x48); db(0xe7);
- db(0x80); db(0xc0); db(0x20); db(0x29); db(0x01); db(0x90); db(0x22); db(0x69);
- db(0x01); db(0x94); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
- db(0xff); db(0x2e); db(0x4c); db(0xdf); db(0x03); db(0x01); db(0x42); db(0xa9);
- db(0x01); db(0x90); db(0x23); db(0x48); db(0x01); db(0x94); db(0x4a); db(0x80);
- db(0x67); db(0x0a); db(0x4a); db(0xa9); db(0x01); db(0x98); db(0x67); db(0x04);
- db(0x61); db(0x00); db(0xfa); db(0x68); db(0x4a); db(0x83); db(0x6b); db(0x00);
- db(0xf8); db(0x7c); db(0x30); db(0x3c); db(0xff); db(0x18); db(0x61); db(0x00);
- db(0x0e); db(0x56); db(0x4e); db(0x90); db(0x20); db(0x03); db(0x16); db(0x29);
- db(0x00); db(0x4f); db(0x4a); db(0x80); db(0x66); db(0x1a); db(0x27); db(0x7c);
- db(0x00); db(0x00); db(0x17); db(0x70); db(0x00); db(0x14); db(0x41); db(0xfa);
- db(0xf6); db(0x64); db(0x20); db(0x08); db(0xe4); db(0x88); db(0x27); db(0x40);
- db(0x00); db(0x20); db(0x70); db(0xff); db(0x27); db(0x40); db(0x00); db(0x24);
- db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x40); db(0x0c); db(0x03);
- db(0x00); db(0x80); db(0x67); db(0x3a); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x70); db(0x14); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40); db(0x30); db(0x3c);
- db(0x10); db(0x00); db(0x80); db(0x03); db(0x33); db(0x40); db(0x00); db(0x08);
- db(0x23); db(0x6d); db(0x01); db(0x04); db(0x00); db(0x0a); db(0x23); db(0x4b);
- db(0x00); db(0x10); db(0x41); db(0xec); db(0x00); db(0x4a); db(0x4e); db(0xae);
- db(0xff); db(0x7c); db(0x4e); db(0xae); db(0xfe); db(0xf2); db(0x4e); db(0xae);
- db(0xff); db(0x76); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x24); db(0x49);
- db(0x20); db(0x4b); db(0x72); db(0x00); db(0x22); db(0x41); db(0x08); db(0x07);
- db(0x00); db(0x01); db(0x67); db(0x08); db(0x08); db(0x07); db(0x00); db(0x02);
- db(0x67); db(0x02); db(0x72); db(0x01); db(0x70); db(0x80); db(0x2c); db(0x4c);
- db(0x4e); db(0xae); db(0xff); db(0x6a); db(0x08); db(0x07); db(0x00); db(0x01);
- db(0x67); db(0x5c); db(0x08); db(0x07); db(0x00); db(0x02); db(0x66); db(0x56);
- db(0x20); db(0x52); db(0x74); db(0x02); db(0x52); db(0x82); db(0x4a); db(0x30);
- db(0x28); db(0xfd); db(0x66); db(0xf8); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x20); db(0x02); db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x4a); db(0x80); db(0x67); db(0x3a); db(0x20); db(0x52); db(0x24); db(0x40);
- db(0x22); db(0x4a); db(0x12); db(0xd8); db(0x66); db(0xfc); db(0x13); db(0x7c);
- db(0x00); db(0x3a); db(0xff); db(0xff); db(0x42); db(0x11); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x43); db(0xfa); db(0x0e); db(0x83); db(0x70); db(0x00);
- db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2c); db(0x40); db(0x22); db(0x0a);
- db(0x4e); db(0xae); db(0xff); db(0x52); db(0x22); db(0x4e); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4a);
- db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x70); db(0x00);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2c); db(0x01);
- db(0x7e); db(0x06); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa);
- db(0x0e); db(0x7e); db(0x70); db(0x24); db(0x4e); db(0xae); db(0xfd); db(0xd8);
- db(0x4a); db(0x80); db(0x66); db(0x0e); db(0x08); db(0x87); db(0x00); db(0x02);
- db(0x43); db(0xfa); db(0x0e); db(0x6c); db(0x70); db(0x00); db(0x4e); db(0xae);
- db(0xfd); db(0xd8); db(0x28); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00);
- db(0x02); db(0x30); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40); db(0x4a); db(0x80);
- db(0x67); db(0x2c); db(0x21); db(0x4c); db(0x01); db(0xa0); db(0x48); db(0xe7);
- db(0x00); db(0x8a); db(0x61); db(0x00); db(0xfd); db(0xf2); db(0x4c); db(0xdf);
- db(0x51); db(0x00); db(0x0c); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe);
- db(0x67); db(0x08); db(0x48); db(0x46); db(0x52); db(0x46); db(0x48); db(0x46);
- db(0x60); db(0xe4); db(0x22); db(0x48); db(0x20); db(0x3c); db(0x00); db(0x00);
- db(0x02); db(0x30); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x22); db(0x4c);
- db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x4c); db(0xdf); db(0x7c); db(0xfc);
- db(0x4e); db(0x75); db(0x30); db(0x3c); db(0xff); db(0x58); db(0x61); db(0x00);
- db(0x0c); db(0xe6); db(0x70); db(0x03); db(0x4e); db(0x90); db(0x22); db(0x6b);
- db(0x00); db(0xa8); db(0x23); db(0x40); db(0x00); db(0x20); db(0x67); db(0x16);
- db(0x70); db(0x00); db(0x23); db(0x40); db(0x00); db(0x24); db(0x33); db(0x7c);
- db(0x00); db(0x0b); db(0x00); db(0x1c); db(0x13); db(0x7c); db(0x00); db(0x01);
+ db(0x00); db(0x9e); db(0x20); db(0x6b); db(0x00); db(0xb4); db(0x61); db(0x00);
+ db(0x00); db(0x2c); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4c); db(0xdf);
+ db(0x44); db(0x80); db(0x4e); db(0x75); db(0x22); db(0x48); db(0x20); db(0x6b);
+ db(0x00); db(0xa0); db(0x20); db(0x68); db(0x00); db(0x22); db(0x20); db(0x68);
+ db(0x00); db(0x18); db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x22); db(0xa8);
+ db(0x00); db(0x04); db(0x20); db(0x09); db(0xe4); db(0x88); db(0x21); db(0x40);
+ db(0x00); db(0x04); db(0x4e); db(0x75); db(0x24); db(0x48); db(0x20); db(0x6b);
+ db(0x00); db(0xa0); db(0x20); db(0x68); db(0x00); db(0x22); db(0x20); db(0x68);
+ db(0x00); db(0x18); db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x22); db(0x68);
+ db(0x00); db(0x04); db(0xd3); db(0xc9); db(0xd3); db(0xc9); db(0xb3); db(0xca);
+ db(0x66); db(0x06); db(0x21); db(0x52); db(0x00); db(0x04); db(0x60); db(0x18);
+ db(0x20); db(0x09); db(0x67); db(0x0e); db(0x20); db(0x11); db(0xd0); db(0x80);
+ db(0xd0); db(0x80); db(0xb5); db(0xc0); db(0x67); db(0x04); db(0x22); db(0x40);
+ db(0x60); db(0xee); db(0x20); db(0x09); db(0x67); db(0x02); db(0x22); db(0x92);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22); db(0x74); db(0x16);
+ db(0x9f); db(0xc2); db(0x24); db(0x4f); db(0x32); db(0x02); db(0x42); db(0x32);
+ db(0x10); db(0xff); db(0x53); db(0x41); db(0x66); db(0xf8); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x72); db(0x0f); db(0x4a); db(0x80); db(0x67); db(0x02);
+ db(0x72); db(0x10); db(0x15); db(0x41); db(0x00); db(0x04); db(0x35); db(0x7c);
+ db(0x08); db(0x00); db(0x00); db(0x08); db(0x22); db(0x6b); db(0x00); db(0xa4);
+ db(0x33); db(0x7c); db(0x00); db(0x0b); db(0x00); db(0x1c); db(0x23); db(0x7c);
+ db(0x00); db(0x00); db(0x00); db(0x16); db(0x00); db(0x24); db(0x23); db(0x4a);
+ db(0x00); db(0x28); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e);
+ db(0x22); db(0x6b); db(0x00); db(0xa8); db(0x33); db(0x7c); db(0x00); db(0x0a);
+ db(0x00); db(0x1c); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e);
+ db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x22); db(0x6b); db(0x00); db(0xa8);
+ db(0x25); db(0x69); db(0x00); db(0x20); db(0x00); db(0x0e); db(0x25); db(0x69);
+ db(0x00); db(0x24); db(0x00); db(0x12); db(0x22); db(0x6b); db(0x00); db(0xa4);
+ db(0x4e); db(0xae); db(0xfe); db(0x38); db(0xdf); db(0xc2); db(0x4c); db(0xdf);
+ db(0x44); db(0x04); db(0x4e); db(0x75); db(0x4a); db(0x00); db(0x67); db(0x26);
+ db(0x4a); db(0x2b); db(0x00); db(0x4c); db(0x66); db(0x36); db(0x70); db(0x00);
+ db(0x4a); db(0x33); db(0x00); db(0x4d); db(0x67); db(0x04); db(0x52); db(0x00);
+ db(0x60); db(0xf6); db(0x17); db(0x40); db(0x00); db(0x4c); db(0x67); db(0x24);
+ db(0x20); db(0x01); db(0x61); db(0x00); db(0xfd); db(0xf2); db(0x70); db(0x01);
+ db(0x61); db(0x00); db(0xff); db(0x60); db(0x60); db(0x16); db(0x4a); db(0x2b);
+ db(0x00); db(0x4c); db(0x67); db(0x10); db(0x42); db(0x2b); db(0x00); db(0x4c);
+ db(0x20); db(0x01); db(0x61); db(0x00); db(0xfe); db(0x68); db(0x70); db(0x00);
+ db(0x61); db(0x00); db(0xff); db(0x48); db(0x4e); db(0x75); db(0x4a); db(0xac);
+ db(0x00); db(0x14); db(0x67); db(0x0a); db(0x70); db(0x00); db(0x72); db(0x01);
+ db(0x61); db(0x00); db(0xff); db(0xb2); db(0x4e); db(0x75); db(0x70); db(0x01);
+ db(0x72); db(0x03); db(0x61); db(0x00); db(0xff); db(0xa8); db(0x4e); db(0x75);
+ db(0x10); db(0x2b); db(0x00); db(0xac); db(0x6b); db(0x0a); db(0x70); db(0x01);
+ db(0x72); db(0x03); db(0x61); db(0x00); db(0xff); db(0x98); db(0x4e); db(0x75);
+ db(0x72); db(0x01); db(0x0c); db(0x00); db(0x00); db(0xfe); db(0x66); db(0x02);
+ db(0x72); db(0x03); db(0x70); db(0x00); db(0x61); db(0x00); db(0xff); db(0x86);
+ db(0x4e); db(0x75); db(0x20); db(0x6c); db(0x00); db(0x24); db(0x4a); db(0x90);
+ db(0x67); db(0x0c); db(0x4a); db(0xa8); db(0x00); db(0x08); db(0x66); db(0x0a);
+ db(0x4a); db(0xa8); db(0x00); db(0x0c); db(0x66); db(0x04); db(0x70); db(0x01);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2a); db(0x48);
+ db(0x24); db(0x6c); db(0x00); db(0x18); db(0x2e); db(0x15); db(0x7a); db(0x00);
+ db(0x4a); db(0x87); db(0x67); db(0x70); db(0x20); db(0x0a); db(0x67); db(0x6c);
+ db(0x7c); db(0x00); db(0x22); db(0x2d); db(0x00); db(0x08); db(0x67); db(0x12);
+ db(0x24); db(0x2a); db(0x00); db(0x04); db(0x2c); db(0x6b); db(0x00); db(0xa0);
+ db(0x4e); db(0xae); db(0xfc); db(0x34); db(0x4a); db(0x80); db(0x66); db(0x02);
+ db(0x50); db(0xc6); db(0x22); db(0x2d); db(0x00); db(0x0c); db(0x67); db(0x1c);
+ db(0x20); db(0x41); db(0x22); db(0x4a); db(0x2f); db(0x0a); db(0x45); db(0xec);
+ db(0x00); db(0x20); db(0x48); db(0x7a); db(0x00); db(0x08); db(0x2f); db(0x28);
+ db(0x00); db(0x08); db(0x4e); db(0x75); db(0x24); db(0x5f); db(0x4a); db(0x80);
+ db(0x66); db(0x02); db(0x50); db(0xc6); db(0x4a); db(0x06); db(0x67); db(0x24);
+ db(0x20); db(0x2a); db(0x00); db(0x04); db(0x90); db(0x8a); db(0x4a); db(0x92);
+ db(0x66); db(0x0a); db(0x20); db(0x05); db(0x67); db(0x10); db(0x20); db(0x40);
+ db(0x42); db(0x90); db(0x60); db(0x0a); db(0x20); db(0x52); db(0x22); db(0x4a);
+ db(0x22); db(0xd8); db(0x59); db(0x80); db(0x6a); db(0xfa); db(0x53); db(0x95);
+ db(0x53); db(0x87); db(0x60); db(0x94); db(0x2a); db(0x0a); db(0x24); db(0x52);
+ db(0x53); db(0x87); db(0x60); db(0x8c); db(0x4c); db(0xdf); db(0x7c); db(0xfc);
+ db(0x20); db(0x6c); db(0x00); db(0x24); db(0x4a); db(0x90); db(0x4e); db(0x75);
+ db(0x61); db(0x00); db(0xfc); db(0x76); db(0x21); db(0x40); db(0x01); db(0x9c);
+ db(0x2f); db(0x08); db(0x30); db(0x3c); db(0xff); db(0xec); db(0x61); db(0x00);
+ db(0x0f); db(0x1a); db(0x2a); db(0x50); db(0x30); db(0x3c); db(0xff); db(0x28);
+ db(0x61); db(0x00); db(0x0f); db(0x10); db(0x22); db(0x48); db(0x20); db(0x5f);
+ db(0x42); db(0xa8); db(0x01); db(0x90); db(0x42); db(0xa8); db(0x01); db(0x94);
+ db(0x4e); db(0x91); db(0x26); db(0x00); db(0x0c); db(0x43); db(0xff); db(0xfe);
+ db(0x67); db(0x00); db(0xf9); db(0x0e); db(0x20); db(0x28); db(0x01); db(0x90);
+ db(0x67); db(0x14); db(0x6b); db(0x12); db(0x2f); db(0x08); db(0x72); db(0x01);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x20); db(0x5f); db(0x21); db(0x40); db(0x01); db(0x94); db(0x4a); db(0x83);
+ db(0x6a); db(0x0e); db(0x22); db(0x48); db(0x30); db(0x3c); db(0xff); db(0x20);
+ db(0x61); db(0x00); db(0x0e); db(0xd0); db(0x4e); db(0x90); db(0x60); db(0x26);
+ db(0x2c); db(0x4c); db(0x2f); db(0x08); db(0x4e); db(0xae); db(0xff); db(0x70);
+ db(0x20); db(0x5f); db(0x22); db(0x48); db(0x26); db(0x40); db(0x30); db(0x3c);
+ db(0xff); db(0x20); db(0x61); db(0x00); db(0x0e); db(0xb6); db(0x4e); db(0x90);
+ db(0x70); db(0x00); db(0x27); db(0x40); db(0x00); db(0x08); db(0x27); db(0x40);
+ db(0x00); db(0x10); db(0x27); db(0x40); db(0x00); db(0x20); db(0x20); db(0x69);
+ db(0x01); db(0x94); db(0x4a); db(0xa9); db(0x01); db(0x90); db(0x67); db(0x2c);
+ db(0x20); db(0x08); db(0x67); db(0x32); db(0x61); db(0x00); db(0xfa); db(0xe6);
+ db(0x48); db(0xe7); db(0x80); db(0xc0); db(0x20); db(0x29); db(0x01); db(0x90);
+ db(0x22); db(0x69); db(0x01); db(0x94); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x4c); db(0xdf); db(0x03); db(0x01);
+ db(0x42); db(0xa9); db(0x01); db(0x90); db(0x23); db(0x48); db(0x01); db(0x94);
+ db(0x4a); db(0x80); db(0x67); db(0x0a); db(0x4a); db(0xa9); db(0x01); db(0x98);
+ db(0x67); db(0x04); db(0x61); db(0x00); db(0xfa); db(0x62); db(0x4a); db(0x83);
+ db(0x6b); db(0x00); db(0xf8); db(0x76); db(0x30); db(0x3c); db(0xff); db(0x18);
+ db(0x61); db(0x00); db(0x0e); db(0x58); db(0x4e); db(0x90); db(0x20); db(0x03);
+ db(0x16); db(0x29); db(0x00); db(0x4f); db(0x4a); db(0x80); db(0x66); db(0x1a);
+ db(0x27); db(0x7c); db(0x00); db(0x00); db(0x17); db(0x70); db(0x00); db(0x14);
+ db(0x41); db(0xfa); db(0xf6); db(0x2a); db(0x20); db(0x08); db(0xe4); db(0x88);
+ db(0x27); db(0x40); db(0x00); db(0x20); db(0x70); db(0xff); db(0x27); db(0x40);
+ db(0x00); db(0x24); db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x40);
+ db(0x0c); db(0x03); db(0x00); db(0x80); db(0x67); db(0x3a); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x70); db(0x14); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40);
+ db(0x30); db(0x3c); db(0x10); db(0x00); db(0x80); db(0x03); db(0x33); db(0x40);
+ db(0x00); db(0x08); db(0x23); db(0x6d); db(0x01); db(0x04); db(0x00); db(0x0a);
+ db(0x23); db(0x4b); db(0x00); db(0x10); db(0x41); db(0xec); db(0x00); db(0x4a);
+ db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x4e); db(0xae); db(0xfe); db(0xf2);
+ db(0x4e); db(0xae); db(0xff); db(0x76); db(0x70); db(0x00); db(0x4e); db(0x75);
+ db(0x24); db(0x49); db(0x20); db(0x4b); db(0x72); db(0x00); db(0x22); db(0x41);
+ db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x08); db(0x08); db(0x07);
+ db(0x00); db(0x02); db(0x67); db(0x02); db(0x72); db(0x01); db(0x70); db(0x80);
+ db(0x2c); db(0x4c); db(0x4e); db(0xae); db(0xff); db(0x6a); db(0x08); db(0x07);
+ db(0x00); db(0x01); db(0x67); db(0x5c); db(0x08); db(0x07); db(0x00); db(0x02);
+ db(0x66); db(0x56); db(0x20); db(0x52); db(0x74); db(0x02); db(0x52); db(0x82);
+ db(0x4a); db(0x30); db(0x28); db(0xfd); db(0x66); db(0xf8); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x20); db(0x02); db(0x72); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x3a); db(0x20); db(0x52);
+ db(0x24); db(0x40); db(0x22); db(0x4a); db(0x12); db(0xd8); db(0x66); db(0xfc);
+ db(0x13); db(0x7c); db(0x00); db(0x3a); db(0xff); db(0xff); db(0x42); db(0x11);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x0e); db(0x85);
+ db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2c); db(0x40);
+ db(0x22); db(0x0a); db(0x4e); db(0xae); db(0xff); db(0x52); db(0x22); db(0x4e);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62);
+ db(0x22); db(0x4a); db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x2e);
+ db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e);
+ db(0x2c); db(0x01); db(0x7e); db(0x06); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x43); db(0xfa); db(0x0e); db(0x80); db(0x70); db(0x24); db(0x4e); db(0xae);
+ db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x66); db(0x0e); db(0x08); db(0x87);
+ db(0x00); db(0x02); db(0x43); db(0xfa); db(0x0e); db(0x6e); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x28); db(0x40); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x02); db(0x34); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40);
+ db(0x4a); db(0x80); db(0x67); db(0x2c); db(0x21); db(0x4c); db(0x01); db(0xa4);
+ db(0x48); db(0xe7); db(0x00); db(0x8a); db(0x61); db(0x00); db(0xfd); db(0xf2);
+ db(0x4c); db(0xdf); db(0x51); db(0x00); db(0x0c); db(0x80); db(0xff); db(0xff);
+ db(0xff); db(0xfe); db(0x67); db(0x08); db(0x48); db(0x46); db(0x52); db(0x46);
+ db(0x48); db(0x46); db(0x60); db(0xe4); db(0x22); db(0x48); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x02); db(0x34); db(0x4e); db(0xae); db(0xff); db(0x2e);
+ db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x4c); db(0xdf);
+ db(0x7c); db(0xfc); db(0x4e); db(0x75); db(0x30); db(0x3c); db(0xff); db(0x58);
+ db(0x61); db(0x00); db(0x0c); db(0xe8); db(0x70); db(0x03); db(0x4e); db(0x90);
+ db(0x22); db(0x6b); db(0x00); db(0xa8); db(0x23); db(0x40); db(0x00); db(0x20);
+ db(0x67); db(0x16); db(0x70); db(0x00); db(0x23); db(0x40); db(0x00); db(0x24);
+ db(0x33); db(0x7c); db(0x00); db(0x0b); db(0x00); db(0x1c); db(0x13); db(0x7c);
+ db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38);
+ db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x93); db(0xc9);
+ db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x20); db(0x40); db(0x4b); db(0xe8);
+ db(0x00); db(0x5c); db(0x43); db(0xfa); db(0x0d); db(0xa7); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x24); db(0x40); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x00); db(0xb9); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x26); db(0x40);
+ db(0x7c); db(0x00); db(0x26); db(0x86); db(0x27); db(0x46); db(0x00); db(0x04);
+ db(0x27); db(0x46); db(0x00); db(0x08); db(0x27); db(0x4a); db(0x00); db(0xa0);
+ db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x93); db(0xc9); db(0x4e); db(0xae);
+ db(0xfe); db(0xda); db(0x27); db(0x40); db(0x00); db(0xb0); db(0x41); db(0xfa);
+ db(0x0c); db(0x80); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00);
+ db(0x02); db(0xae); db(0x27); db(0x40); db(0x00); db(0xa4); db(0x41); db(0xfa);
+ db(0x0c); db(0x7d); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00);
+ db(0x02); db(0x9e); db(0x27); db(0x40); db(0x00); db(0xa8); db(0x7a); db(0x00);
+ db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x80); db(0x20); db(0x4d);
+ db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x26); db(0x2c);
+ db(0x00); db(0x0a); db(0x30); db(0x3c); db(0xff); db(0x40); db(0x61); db(0x00);
+ db(0x0c); db(0x3a); db(0x70); db(0x00); db(0x4e); db(0x90); db(0x24); db(0x00);
+ db(0x70); db(0x01); db(0x61); db(0x00); db(0xf9); db(0xf2); db(0x08); db(0x02);
+ db(0x00); db(0x01); db(0x67); db(0x06); db(0x70); db(0x01); db(0x61); db(0x00);
+ db(0xfb); db(0x5a); db(0x60); db(0x00); db(0x01); db(0x2e); db(0x20); db(0x4d);
+ db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x4a); db(0x80);
+ db(0x66); db(0x10); db(0x70); db(0x00); db(0x12); db(0x2d); db(0x00); db(0x0f);
+ db(0x03); db(0xc0); db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae);
+ db(0xfe); db(0xc2); db(0x4a); db(0x2b); db(0x00); db(0xad); db(0x67); db(0x08);
+ db(0x61); db(0x00); db(0xff); db(0x0a); db(0x42); db(0x2b); db(0x00); db(0xad);
+ db(0x4a); db(0x2b); db(0x00); db(0xac); db(0x67); db(0x24); db(0x30); db(0x3c);
+ db(0xff); db(0x58); db(0x61); db(0x00); db(0x0b); db(0xe6); db(0x70); db(0x01);
+ db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x04); db(0x61); db(0x00);
+ db(0xfb); db(0xe8); db(0x42); db(0x2b); db(0x00); db(0xac); db(0x30); db(0x3c);
+ db(0xff); db(0x58); db(0x61); db(0x00); db(0x0b); db(0xce); db(0x70); db(0x02);
+ db(0x4e); db(0x90); db(0x20); db(0x0c); db(0x67); db(0x56); db(0x0c); db(0x6c);
+ db(0x00); db(0x26); db(0x00); db(0x12); db(0x66); db(0x4e); db(0x0c); db(0xac);
+ db(0x40); db(0x00); db(0x00); db(0x00); db(0x00); db(0x14); db(0x66); db(0x44);
+ db(0x0c); db(0x6c); db(0x12); db(0x34); db(0x00); db(0x18); db(0x66); db(0x3c);
+ db(0x20); db(0x6c); db(0x00); db(0x1a); db(0x20); db(0x28); db(0x00); db(0x0c);
+ db(0x02); db(0x80); db(0x80); db(0x00); db(0x00); db(0x08); db(0x0c); db(0x80);
+ db(0x80); db(0x00); db(0x00); db(0x08); db(0x66); db(0x1a); db(0x02); db(0xa8);
+ db(0x7f); db(0xff); db(0xff); db(0xff); db(0x00); db(0x0c); db(0x20); db(0x68);
+ db(0x00); db(0x10); db(0x22); db(0x4c); db(0x12); db(0xbc); db(0x00); db(0x08);
+ db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0x00); db(0xff); db(0x60);
+ db(0x22); db(0x4c); db(0x70); db(0x26); db(0x4e); db(0xae); db(0xff); db(0x2e);
+ db(0x60); db(0x00); db(0xff); db(0x54); db(0x74); db(0xfe); db(0x20); db(0x0c);
+ db(0x67); db(0x14); db(0x26); db(0x2c); db(0x00); db(0x0a); db(0x66); db(0x42);
+ db(0x74); db(0xff); db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00);
+ db(0x0b); db(0x5a); db(0x70); db(0x01); db(0x4e); db(0x90); db(0x45); db(0xeb);
+ db(0x00); db(0x04); db(0x20); db(0x52); db(0x20); db(0x08); db(0x67); db(0x00);
+ db(0xff); db(0x2e); db(0x22); db(0x50); db(0x20); db(0x40); db(0x20); db(0x28);
+ db(0x00); db(0x04); db(0xb4); db(0x80); db(0x66); db(0x16); db(0x48); db(0xe7);
+ db(0x00); db(0xc0); db(0x28); db(0x68); db(0x00); db(0x0a); db(0x61); db(0x4a);
+ db(0x53); db(0x85); db(0x4c); db(0xdf); db(0x03); db(0x00); db(0x24); db(0x89);
+ db(0x20); db(0x49); db(0x60); db(0xd8); db(0x24); db(0x48); db(0x20); db(0x49);
+ db(0x60); db(0xd2); db(0x0c); db(0x85); db(0x00); db(0x00); db(0x00); db(0x14);
+ db(0x65); db(0x00); db(0x00); db(0x0a); db(0x70); db(0x01); db(0x29); db(0x40);
+ db(0x00); db(0x04); db(0x60); db(0x12); db(0x61); db(0x5e); db(0x30); db(0x3c);
+ db(0xff); db(0x30); db(0x61); db(0x00); db(0x0b); db(0x06); db(0x4e); db(0x90);
+ db(0x4a); db(0x80); db(0x67); db(0x0e); db(0x52); db(0x85); db(0x28); db(0xab);
+ db(0x00); db(0x04); db(0x27); db(0x4c); db(0x00); db(0x04); db(0x60); db(0x00);
+ db(0xfe); db(0xd6); db(0x28); db(0x43); db(0x61); db(0x04); db(0x60); db(0x00);
+ db(0xfe); db(0xce); db(0x0c); db(0xac); db(0x00); db(0x00); db(0x00); db(0x1f);
+ db(0x00); db(0x08); db(0x66); db(0x04); db(0x61); db(0x00); db(0xfa); db(0xd0);
+ db(0x0c); db(0xac); db(0x00); db(0x00); db(0x04); db(0x09); db(0x00); db(0x08);
+ db(0x66); db(0x14); db(0x61); db(0x00); db(0xfa); db(0xfe); db(0x66); db(0x0e);
+ db(0x30); db(0x3c); db(0xff); db(0x58); db(0x61); db(0x00); db(0x0a); db(0xc4);
+ db(0x70); db(0x00); db(0x4e); db(0x90); db(0x60); db(0xec); db(0x22); db(0x54);
+ db(0x20); db(0x6c); db(0x00); db(0x04); db(0x29); db(0x4d); db(0x00); db(0x04);
+ db(0x4e); db(0xee); db(0xfe); db(0x92); db(0x2f); db(0x05); db(0x7a); db(0xfc);
+ db(0x24); db(0x53); db(0x2e); db(0x0a); db(0x22); db(0x0a); db(0x67); db(0x00);
+ db(0x00); db(0x0c); db(0x52); db(0x85); db(0x67); db(0x1e); db(0x22); db(0x4a);
+ db(0x24); db(0x52); db(0x60); db(0xf0); db(0x52); db(0x85); db(0x67); db(0x3c);
+ db(0x24); db(0x47); db(0x70); db(0x18); db(0x72); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x52); db(0x46); db(0x24); db(0x40); db(0x24); db(0x87);
+ db(0x2e); db(0x0a); db(0x60); db(0xe8); db(0x20); db(0x12); db(0x67); db(0x24);
+ db(0x20); db(0x40); db(0x20); db(0x10); db(0x67); db(0x1e); db(0x20); db(0x40);
+ db(0x20); db(0x10); db(0x67); db(0x18); db(0x70); db(0x00); db(0x22); db(0x80);
+ db(0x22); db(0x4a); db(0x24); db(0x51); db(0x70); db(0x18); db(0x4e); db(0xae);
+ db(0xff); db(0x2e); db(0x06); db(0x86); db(0x00); db(0x01); db(0x00); db(0x00);
+ db(0x20); db(0x0a); db(0x66); db(0xec); db(0x26); db(0x87); db(0x2a); db(0x1f);
+ db(0x4e); db(0x75); db(0x20); db(0x88); db(0x58); db(0x90); db(0x42); db(0xa8);
+ db(0x00); db(0x04); db(0x21); db(0x48); db(0x00); db(0x08); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0x20); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x91); db(0xc8);
+ db(0x24); db(0x00); db(0x6b); db(0x32); db(0x70); db(0x22); db(0x22); db(0x3c);
+ db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x91); db(0xc8); db(0x24); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x1e);
+ db(0x15); db(0x7c); db(0x00); db(0x04); db(0x00); db(0x08); db(0x15); db(0x42);
+ db(0x00); db(0x0f); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda);
+ db(0x25); db(0x40); db(0x00); db(0x10); db(0x41); db(0xea); db(0x00); db(0x14);
+ db(0x61); db(0x00); db(0xff); db(0xb0); db(0x20); db(0x4a); db(0x20); db(0x08);
+ db(0x4c); db(0xdf); db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x20); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4a); db(0x80);
+ db(0x67); db(0x24); db(0x24); db(0x40); db(0x24); db(0x01); db(0x66); db(0x02);
+ db(0x74); db(0x30); db(0x20); db(0x02); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40);
+ db(0x11); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x08); db(0x31); db(0x42);
+ db(0x00); db(0x12); db(0x21); db(0x4a); db(0x00); db(0x0e); db(0x4a); db(0x80);
+ db(0x4c); db(0xdf); db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x30); db(0x22); db(0x24); db(0x48); db(0x24); db(0x00); db(0x26); db(0x01);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x61); db(0x00); db(0xff); db(0x6a);
+ db(0x22); db(0x03); db(0x61); db(0x00); db(0xff); db(0xb2); db(0x67); db(0x18);
+ db(0x20); db(0x4a); db(0x22); db(0x40); db(0x24); db(0x40); db(0x20); db(0x02);
+ db(0x72); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x22); db(0x00);
+ db(0x70); db(0x00); db(0x4a); db(0x81); db(0x66); db(0x02); db(0x20); db(0x0a);
+ db(0x4a); db(0x80); db(0x4c); db(0xdf); db(0x44); db(0x0c); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0x38); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x28); db(0x00); db(0x24); db(0x08); db(0x26); db(0x09); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x08); db(0x5c); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80);
+ db(0x67); db(0x00); db(0x00); db(0x34); db(0x24); db(0x40); db(0x15); db(0x7c);
+ db(0x00); db(0x01); db(0x00); db(0x08); db(0x15); db(0x44); db(0x00); db(0x09);
+ db(0x25); db(0x42); db(0x00); db(0x0a); db(0x47); db(0xea); db(0x00); db(0x5c);
+ db(0x25); db(0x4b); db(0x00); db(0x3a); db(0x47); db(0xeb); db(0x08); db(0x00);
+ db(0x25); db(0x4b); db(0x00); db(0x3e); db(0x25); db(0x4b); db(0x00); db(0x36);
+ db(0x22); db(0x4a); db(0x24); db(0x43); db(0x97); db(0xcb); db(0x24); db(0x09);
+ db(0x4e); db(0xae); db(0xfe); db(0xe6); db(0x20); db(0x02); db(0x4c); db(0xdf);
+ db(0x4c); db(0x1c); db(0x4e); db(0x75); db(0x41); db(0xfa); db(0x09); db(0xc2);
+ db(0x43); db(0xfa); db(0x01); db(0x30); db(0x70); db(0x13); db(0x61); db(0x00);
+ db(0xff); db(0x98); db(0x4e); db(0x75); db(0x22); db(0x6d); db(0x02); db(0x0c);
+ db(0x33); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x1c); db(0x13); db(0x7c);
+ db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38);
+ db(0x22); db(0x6d); db(0x02); db(0x0c); db(0x25); db(0x69); db(0x00); db(0x20);
+ db(0x00); db(0x0e); db(0x25); db(0x69); db(0x00); db(0x24); db(0x00); db(0x12);
+ db(0x22); db(0x6d); db(0x02); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x01);
  db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x4e); db(0x75);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x93); db(0xc9); db(0x4e); db(0xae);
- db(0xfe); db(0xda); db(0x20); db(0x40); db(0x4b); db(0xe8); db(0x00); db(0x5c);
- db(0x43); db(0xfa); db(0x0d); db(0xa5); db(0x70); db(0x00); db(0x4e); db(0xae);
- db(0xfd); db(0xd8); db(0x24); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00);
- db(0x00); db(0xb9); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x26); db(0x40); db(0x7c); db(0x00);
- db(0x26); db(0x86); db(0x27); db(0x46); db(0x00); db(0x04); db(0x27); db(0x46);
- db(0x00); db(0x08); db(0x27); db(0x4a); db(0x00); db(0xa0); db(0x50); db(0xeb);
- db(0x00); db(0x9e); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda);
- db(0x27); db(0x40); db(0x00); db(0xb0); db(0x41); db(0xfa); db(0x0c); db(0x7e);
- db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0x02); db(0xae);
- db(0x27); db(0x40); db(0x00); db(0xa4); db(0x41); db(0xfa); db(0x0c); db(0x7b);
- db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0x02); db(0x9e);
- db(0x27); db(0x40); db(0x00); db(0xa8); db(0x7a); db(0x00); db(0x20); db(0x4d);
- db(0x4e); db(0xae); db(0xfe); db(0x80); db(0x20); db(0x4d); db(0x4e); db(0xae);
- db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x26); db(0x2c); db(0x00); db(0x0a);
- db(0x30); db(0x3c); db(0xff); db(0x40); db(0x61); db(0x00); db(0x0c); db(0x38);
- db(0x70); db(0x00); db(0x4e); db(0x90); db(0x24); db(0x00); db(0x70); db(0x01);
- db(0x61); db(0x00); db(0xf9); db(0xf2); db(0x08); db(0x02); db(0x00); db(0x01);
- db(0x67); db(0x06); db(0x70); db(0x01); db(0x61); db(0x00); db(0xfb); db(0x5a);
- db(0x60); db(0x00); db(0x01); db(0x2e); db(0x20); db(0x4d); db(0x4e); db(0xae);
- db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x4a); db(0x80); db(0x66); db(0x10);
- db(0x70); db(0x00); db(0x12); db(0x2d); db(0x00); db(0x0f); db(0x03); db(0xc0);
- db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2);
- db(0x4a); db(0x2b); db(0x00); db(0xad); db(0x67); db(0x08); db(0x61); db(0x00);
- db(0xff); db(0x0a); db(0x42); db(0x2b); db(0x00); db(0xad); db(0x4a); db(0x2b);
- db(0x00); db(0xac); db(0x67); db(0x24); db(0x30); db(0x3c); db(0xff); db(0x58);
- db(0x61); db(0x00); db(0x0b); db(0xe4); db(0x70); db(0x01); db(0x4e); db(0x90);
- db(0x4a); db(0x80); db(0x67); db(0x04); db(0x61); db(0x00); db(0xfb); db(0xe8);
- db(0x42); db(0x2b); db(0x00); db(0xac); db(0x30); db(0x3c); db(0xff); db(0x58);
- db(0x61); db(0x00); db(0x0b); db(0xcc); db(0x70); db(0x02); db(0x4e); db(0x90);
- db(0x20); db(0x0c); db(0x67); db(0x56); db(0x0c); db(0x6c); db(0x00); db(0x26);
- db(0x00); db(0x12); db(0x66); db(0x4e); db(0x0c); db(0xac); db(0x40); db(0x00);
- db(0x00); db(0x00); db(0x00); db(0x14); db(0x66); db(0x44); db(0x0c); db(0x6c);
- db(0x12); db(0x34); db(0x00); db(0x18); db(0x66); db(0x3c); db(0x20); db(0x6c);
- db(0x00); db(0x1a); db(0x20); db(0x28); db(0x00); db(0x0c); db(0x02); db(0x80);
- db(0x80); db(0x00); db(0x00); db(0x08); db(0x0c); db(0x80); db(0x80); db(0x00);
- db(0x00); db(0x08); db(0x66); db(0x1a); db(0x02); db(0xa8); db(0x7f); db(0xff);
- db(0xff); db(0xff); db(0x00); db(0x0c); db(0x20); db(0x68); db(0x00); db(0x10);
- db(0x22); db(0x4c); db(0x12); db(0xbc); db(0x00); db(0x08); db(0x4e); db(0xae);
- db(0xfe); db(0x92); db(0x60); db(0x00); db(0xff); db(0x60); db(0x22); db(0x4c);
- db(0x70); db(0x26); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x60); db(0x00);
- db(0xff); db(0x54); db(0x74); db(0xfe); db(0x20); db(0x0c); db(0x67); db(0x14);
- db(0x26); db(0x2c); db(0x00); db(0x0a); db(0x66); db(0x42); db(0x74); db(0xff);
- db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x0b); db(0x58);
- db(0x70); db(0x01); db(0x4e); db(0x90); db(0x45); db(0xeb); db(0x00); db(0x04);
- db(0x20); db(0x52); db(0x20); db(0x08); db(0x67); db(0x00); db(0xff); db(0x2e);
- db(0x22); db(0x50); db(0x20); db(0x40); db(0x20); db(0x28); db(0x00); db(0x04);
- db(0xb4); db(0x80); db(0x66); db(0x16); db(0x48); db(0xe7); db(0x00); db(0xc0);
- db(0x28); db(0x68); db(0x00); db(0x0a); db(0x61); db(0x4a); db(0x53); db(0x85);
- db(0x4c); db(0xdf); db(0x03); db(0x00); db(0x24); db(0x89); db(0x20); db(0x49);
- db(0x60); db(0xd8); db(0x24); db(0x48); db(0x20); db(0x49); db(0x60); db(0xd2);
- db(0x0c); db(0x85); db(0x00); db(0x00); db(0x00); db(0x14); db(0x65); db(0x00);
- db(0x00); db(0x0a); db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x04);
- db(0x60); db(0x12); db(0x61); db(0x5e); db(0x30); db(0x3c); db(0xff); db(0x30);
- db(0x61); db(0x00); db(0x0b); db(0x04); db(0x4e); db(0x90); db(0x4a); db(0x80);
- db(0x67); db(0x0e); db(0x52); db(0x85); db(0x28); db(0xab); db(0x00); db(0x04);
- db(0x27); db(0x4c); db(0x00); db(0x04); db(0x60); db(0x00); db(0xfe); db(0xd6);
- db(0x28); db(0x43); db(0x61); db(0x04); db(0x60); db(0x00); db(0xfe); db(0xce);
- db(0x0c); db(0xac); db(0x00); db(0x00); db(0x00); db(0x1f); db(0x00); db(0x08);
- db(0x66); db(0x04); db(0x61); db(0x00); db(0xfa); db(0xd0); db(0x0c); db(0xac);
- db(0x00); db(0x00); db(0x04); db(0x09); db(0x00); db(0x08); db(0x66); db(0x14);
- db(0x61); db(0x00); db(0xfa); db(0xfe); db(0x66); db(0x0e); db(0x30); db(0x3c);
- db(0xff); db(0x58); db(0x61); db(0x00); db(0x0a); db(0xc2); db(0x70); db(0x00);
- db(0x4e); db(0x90); db(0x60); db(0xec); db(0x22); db(0x54); db(0x20); db(0x6c);
- db(0x00); db(0x04); db(0x29); db(0x4d); db(0x00); db(0x04); db(0x4e); db(0xee);
- db(0xfe); db(0x92); db(0x2f); db(0x05); db(0x7a); db(0xfc); db(0x24); db(0x53);
- db(0x2e); db(0x0a); db(0x22); db(0x0a); db(0x67); db(0x00); db(0x00); db(0x0c);
- db(0x52); db(0x85); db(0x67); db(0x1e); db(0x22); db(0x4a); db(0x24); db(0x52);
- db(0x60); db(0xf0); db(0x52); db(0x85); db(0x67); db(0x3c); db(0x24); db(0x47);
- db(0x70); db(0x18); db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x52); db(0x46); db(0x24); db(0x40); db(0x24); db(0x87); db(0x2e); db(0x0a);
- db(0x60); db(0xe8); db(0x20); db(0x12); db(0x67); db(0x24); db(0x20); db(0x40);
- db(0x20); db(0x10); db(0x67); db(0x1e); db(0x20); db(0x40); db(0x20); db(0x10);
- db(0x67); db(0x18); db(0x70); db(0x00); db(0x22); db(0x80); db(0x22); db(0x4a);
- db(0x24); db(0x51); db(0x70); db(0x18); db(0x4e); db(0xae); db(0xff); db(0x2e);
- db(0x06); db(0x86); db(0x00); db(0x01); db(0x00); db(0x00); db(0x20); db(0x0a);
- db(0x66); db(0xec); db(0x26); db(0x87); db(0x2a); db(0x1f); db(0x4e); db(0x75);
- db(0x20); db(0x88); db(0x58); db(0x90); db(0x42); db(0xa8); db(0x00); db(0x04);
- db(0x21); db(0x48); db(0x00); db(0x08); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0x20); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0xff);
- db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x91); db(0xc8); db(0x24); db(0x00);
- db(0x6b); db(0x32); db(0x70); db(0x22); db(0x22); db(0x3c); db(0x00); db(0x01);
- db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x91); db(0xc8);
- db(0x24); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x1e); db(0x15); db(0x7c);
- db(0x00); db(0x04); db(0x00); db(0x08); db(0x15); db(0x42); db(0x00); db(0x0f);
- db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x25); db(0x40);
- db(0x00); db(0x10); db(0x41); db(0xea); db(0x00); db(0x14); db(0x61); db(0x00);
- db(0xff); db(0xb0); db(0x20); db(0x4a); db(0x20); db(0x08); db(0x4c); db(0xdf);
- db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4a); db(0x80); db(0x67); db(0x24);
- db(0x24); db(0x40); db(0x24); db(0x01); db(0x66); db(0x02); db(0x74); db(0x30);
- db(0x20); db(0x02); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40); db(0x11); db(0x7c);
- db(0x00); db(0x0a); db(0x00); db(0x08); db(0x31); db(0x42); db(0x00); db(0x12);
- db(0x21); db(0x4a); db(0x00); db(0x0e); db(0x4a); db(0x80); db(0x4c); db(0xdf);
- db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x30); db(0x22);
- db(0x24); db(0x48); db(0x24); db(0x00); db(0x26); db(0x01); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x61); db(0x00); db(0xff); db(0x6a); db(0x22); db(0x03);
- db(0x61); db(0x00); db(0xff); db(0xb2); db(0x67); db(0x18); db(0x20); db(0x4a);
- db(0x22); db(0x40); db(0x24); db(0x40); db(0x20); db(0x02); db(0x72); db(0x00);
- db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x22); db(0x00); db(0x70); db(0x00);
- db(0x4a); db(0x81); db(0x66); db(0x02); db(0x20); db(0x0a); db(0x4a); db(0x80);
- db(0x4c); db(0xdf); db(0x44); db(0x0c); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0x38); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x28); db(0x00);
- db(0x24); db(0x08); db(0x26); db(0x09); db(0x20); db(0x3c); db(0x00); db(0x00);
- db(0x08); db(0x5c); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00);
- db(0x00); db(0x34); db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x01);
- db(0x00); db(0x08); db(0x15); db(0x44); db(0x00); db(0x09); db(0x25); db(0x42);
- db(0x00); db(0x0a); db(0x47); db(0xea); db(0x00); db(0x5c); db(0x25); db(0x4b);
- db(0x00); db(0x3a); db(0x47); db(0xeb); db(0x08); db(0x00); db(0x25); db(0x4b);
- db(0x00); db(0x3e); db(0x25); db(0x4b); db(0x00); db(0x36); db(0x22); db(0x4a);
- db(0x24); db(0x43); db(0x97); db(0xcb); db(0x24); db(0x09); db(0x4e); db(0xae);
- db(0xfe); db(0xe6); db(0x20); db(0x02); db(0x4c); db(0xdf); db(0x4c); db(0x1c);
- db(0x4e); db(0x75); db(0x41); db(0xfa); db(0x09); db(0xc0); db(0x43); db(0xfa);
- db(0x01); db(0x30); db(0x70); db(0x13); db(0x61); db(0x00); db(0xff); db(0x98);
- db(0x4e); db(0x75); db(0x22); db(0x6d); db(0x02); db(0x0c); db(0x33); db(0x7c);
- db(0x00); db(0x0a); db(0x00); db(0x1c); db(0x13); db(0x7c); db(0x00); db(0x01);
- db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x22); db(0x6d);
- db(0x02); db(0x0c); db(0x25); db(0x69); db(0x00); db(0x20); db(0x00); db(0x0e);
- db(0x25); db(0x69); db(0x00); db(0x24); db(0x00); db(0x12); db(0x22); db(0x6d);
- db(0x02); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e);
- db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x4e); db(0x75); db(0x42); db(0xaa);
- db(0x00); db(0x0e); db(0x42); db(0xaa); db(0x00); db(0x12); db(0x22); db(0x6d);
- db(0x02); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e);
- db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0xf8); db(0xfe); db(0x2a); db(0x48); db(0x95); db(0xca); db(0x97); db(0xcb);
- db(0x99); db(0xcc); db(0x78); db(0x00); db(0x2c); db(0x6d); db(0x00); db(0x18);
- db(0x20); db(0x6d); db(0x00); db(0x14); db(0x20); db(0x28); db(0x00); db(0x3c);
- db(0x67); db(0x5c); db(0x20); db(0x40); db(0x41); db(0xe8); db(0x00); db(0x2c);
- db(0x28); db(0x48); db(0x4e); db(0xae); db(0xfc); db(0xe8); db(0x72); db(0xff);
- db(0x74); db(0xff); db(0xb2); db(0x80); db(0x67); db(0x48); db(0x26); db(0x00);
- db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x41); db(0xed); db(0x00); db(0xc0);
- db(0x70); db(0x66); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xed);
- db(0x00); db(0xc0); db(0x38); db(0x28); db(0x00); db(0x64); db(0x2c); db(0x6d);
- db(0x00); db(0x18); db(0x91); db(0xc8); db(0x43); db(0xed); db(0x00); db(0x38);
- db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x58); db(0x22); db(0x3c);
- db(0x80); db(0x00); db(0x10); db(0x00); db(0x24); db(0x03); db(0x4e); db(0xae);
- db(0xfd); db(0x0c); db(0x72); db(0xff); db(0x74); db(0xff); db(0x4a); db(0x80);
- db(0x6b); db(0x0c); db(0x45); db(0xed); db(0x00); db(0x38); db(0x22); db(0x2a);
- db(0x00); db(0x32); db(0x24); db(0x2a); db(0x00); db(0x36); db(0x20); db(0x2c);
- db(0x00); db(0x1c); db(0xb8); db(0x6d); db(0x00); db(0x2c); db(0x66); db(0x12);
- db(0xb0); db(0xad); db(0x00); db(0x28); db(0x66); db(0x0c); db(0xb2); db(0xad);
- db(0x00); db(0x20); db(0x66); db(0x06); db(0xb4); db(0xad); db(0x00); db(0x24);
- db(0x67); db(0x40); db(0x2b); db(0x40); db(0x00); db(0x28); db(0x2b); db(0x41);
- db(0x00); db(0x20); db(0x2b); db(0x42); db(0x00); db(0x24); db(0x3b); db(0x44);
- db(0x00); db(0x2c); db(0x91); db(0xc8); db(0x43); db(0xed); db(0x00); db(0x90);
- db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x58); db(0x22); db(0x3c);
- db(0x80); db(0x00); db(0x00); db(0x00); db(0x24); db(0x03); db(0x4e); db(0xae);
- db(0xfd); db(0x0c); db(0x4a); db(0x80); db(0x6b); db(0x04); db(0x47); db(0xed);
- db(0x00); db(0x90); db(0x34); db(0x2d); db(0x00); db(0x2c); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x01); db(0x61); db(0x00); db(0x07); db(0xf8);
- db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x7f); db(0x1f); db(0x4e); db(0x75);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x3e); db(0x2e); db(0x00); db(0x14);
- db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x7c); db(0x00);
- db(0x01); db(0xc6); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda);
- db(0x28); db(0x40); db(0x70); db(0x14); db(0x22); db(0x4c); db(0x4e); db(0xae);
- db(0xfe); db(0xd4); db(0x70); db(0x00); db(0x30); db(0x3c); db(0x02); db(0x3c);
- db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x2a); db(0x40); db(0x47); db(0xed); db(0x00); db(0x16);
- db(0x27); db(0x4e); db(0x00); db(0x10); db(0x27); db(0x4c); db(0x00); db(0x08);
- db(0x27); db(0x46); db(0x00); db(0x0c); db(0x70); db(0xff); db(0x37); db(0x40);
- db(0x00); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x05);
- db(0x61); db(0x00); db(0x07); db(0x9c); db(0x20); db(0x0d); db(0x06); db(0x80);
- db(0x00); db(0x00); db(0x02); db(0x10); db(0x4e); db(0x90); db(0x43); db(0xed);
- db(0x00); db(0x00); db(0x13); db(0x7c); db(0x00); db(0x02); db(0x00); db(0x08);
- db(0x13); db(0x7c); db(0x00); db(0x05); db(0x00); db(0x09); db(0x41); db(0xfa);
- db(0x08); db(0x1c); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa);
- db(0x02); db(0xf4); db(0x23); db(0x48); db(0x00); db(0x12); db(0x23); db(0x4d);
- db(0x00); db(0x0e); db(0x70); db(0x05); db(0x4e); db(0xae); db(0xff); db(0x58);
- db(0x20); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x70); db(0x00);
- db(0x53); db(0xab); db(0x00); db(0x1c); db(0x6a); db(0x06); db(0x70); db(0x0a);
- db(0x27); db(0x40); db(0x00); db(0x1c); db(0x4a); db(0xab); db(0x00); db(0x14);
- db(0x66); db(0x16); db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xe0);
- db(0x43); db(0xfa); db(0x08); db(0x49); db(0x70); db(0x00); db(0x4e); db(0xae);
- db(0xfd); db(0xd8); db(0x27); db(0x40); db(0x00); db(0x14); db(0x67); db(0xd0);
- db(0x4a); db(0xab); db(0x00); db(0x18); db(0x66); db(0x18); db(0x4a); db(0xab);
- db(0x00); db(0x1c); db(0x66); db(0xc4); db(0x43); db(0xfa); db(0x08); db(0x3f);
- db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x27); db(0x40);
- db(0x00); db(0x18); db(0x67); db(0x00); db(0xff); db(0xb4); db(0x4a); db(0xad);
- db(0x02); db(0x08); db(0x66); db(0x38); db(0x4a); db(0xab); db(0x00); db(0x1c);
- db(0x66); db(0xa6); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee);
- db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x07); db(0x10); db(0x4e); db(0xae);
- db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x76);
- db(0x4a); db(0x82); db(0x67); db(0x8c); db(0x41); db(0xfa); db(0x06); db(0xfe);
- db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0xfd); db(0x2e);
- db(0x2b); db(0x40); db(0x02); db(0x08); db(0x67); db(0x00); db(0x02); db(0x32);
- db(0x60); db(0x00); db(0xff); db(0x76); db(0x4a); db(0xad); db(0x02); db(0x0c);
- db(0x66); db(0x48); db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0x00);
- db(0xff); db(0x68); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee);
- db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x06); db(0xdd); db(0x4e); db(0xae);
- db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x76);
- db(0x4a); db(0x82); db(0x67); db(0x00); db(0xff); db(0x4c); db(0x41); db(0xfa);
- db(0x06); db(0xc9); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00);
- db(0xfc); db(0xec); db(0x2b); db(0x40); db(0x02); db(0x0c); db(0x67); db(0x00);
- db(0x01); db(0xf0); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x00);
- db(0x61); db(0x00); db(0x06); db(0x94); db(0x4e); db(0x90); db(0x60); db(0x00);
- db(0xff); db(0x28); db(0x0c); db(0x47); db(0x00); db(0x24); db(0x65); db(0x12);
- db(0x53); db(0xab); db(0x00); db(0x34); db(0x6a); db(0x0c); db(0x20); db(0x4b);
- db(0x61); db(0x00); db(0xfd); db(0xb4); db(0x70); db(0x32); db(0x27); db(0x40);
- db(0x00); db(0x34); db(0x22); db(0x6d); db(0x02); db(0x08); db(0x45); db(0xed);
- db(0x01); db(0x3c); db(0x33); db(0x7c); db(0x00); db(0x0b); db(0x00); db(0x1c);
- db(0x23); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x16); db(0x00); db(0x24);
- db(0x23); db(0x4a); db(0x00); db(0x28); db(0x10); db(0x2d); db(0x02); db(0x10);
- db(0x0c); db(0x47); db(0x00); db(0x27); db(0x65); db(0x00); db(0x01); db(0x52);
- db(0x08); db(0x00); db(0x00); db(0x01); db(0x67); db(0x00); db(0x01); db(0x4a);
- db(0x41); db(0xed); db(0x01); db(0x68); db(0x25); db(0x48); db(0x00); db(0x0a);
- db(0x15); db(0x7c); db(0x00); db(0x13); db(0x00); db(0x04); db(0x15); db(0x7c);
- db(0x00); db(0x03); db(0x00); db(0x05); db(0x42); db(0x90); db(0x42); db(0xa8);
- db(0x00); db(0x04); db(0x42); db(0xa8); db(0x00); db(0x08); db(0x42); db(0x68);
- db(0x00); db(0x0c); db(0x42); db(0x6a); db(0x00); db(0x06); db(0x61); db(0x00);
- db(0x01); db(0x72); db(0x31); db(0x6d); db(0x02); db(0x1a); db(0x00); db(0x0e);
- db(0x42); db(0x68); db(0x00); db(0x10); db(0x31); db(0x6d); db(0x02); db(0x1c);
- db(0x00); db(0x12); db(0x42); db(0x68); db(0x00); db(0x14); db(0x31); db(0x6d);
- db(0x02); db(0x14); db(0x00); db(0x16); db(0x42); db(0x68); db(0x00); db(0x18);
- db(0x31); db(0x6d); db(0x02); db(0x16); db(0x00); db(0x1a); db(0x43); db(0xed);
- db(0x01); db(0x88); db(0x21); db(0x49); db(0x00); db(0x1c); db(0x22); db(0xfc);
- db(0x80); db(0x03); db(0xa0); db(0x06); db(0x30); db(0x2d); db(0x02); db(0x30);
- db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x22); db(0xfc);
- db(0x80); db(0x03); db(0xa0); db(0x07); db(0x22); db(0xed); db(0x02); db(0x32);
- db(0x70); db(0x00); db(0x30); db(0x2d); db(0x02); db(0x20); db(0x6b); db(0x08);
- db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x09); db(0x22); db(0xc0);
- db(0x30); db(0x2d); db(0x02); db(0x22); db(0x6b); db(0x08); db(0x22); db(0xfc);
- db(0x80); db(0x03); db(0xa0); db(0x0a); db(0x22); db(0xc0); db(0x30); db(0x2d);
- db(0x02); db(0x18); db(0x6b); db(0x14); db(0x22); db(0xfc); db(0x80); db(0x03);
- db(0xa0); db(0x02); db(0x22); db(0xc0); db(0x30); db(0x2d); db(0x02); db(0x1e);
- db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x01); db(0x22); db(0xc0);
- db(0x30); db(0x2d); db(0x02); db(0x24); db(0x6b); db(0x10); db(0x22); db(0xfc);
- db(0x80); db(0x03); db(0xa0); db(0x03); db(0x30); db(0x2d); db(0x02); db(0x2a);
+ db(0x42); db(0xaa); db(0x00); db(0x0e); db(0x42); db(0xaa); db(0x00); db(0x12);
+ db(0x22); db(0x6d); db(0x02); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x01);
+ db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0xf8); db(0xfe); db(0x2a); db(0x48); db(0x95); db(0xca);
+ db(0x97); db(0xcb); db(0x99); db(0xcc); db(0x78); db(0x00); db(0x2c); db(0x6d);
+ db(0x00); db(0x18); db(0x20); db(0x6d); db(0x00); db(0x14); db(0x20); db(0x28);
+ db(0x00); db(0x3c); db(0x67); db(0x5c); db(0x20); db(0x40); db(0x41); db(0xe8);
+ db(0x00); db(0x2c); db(0x28); db(0x48); db(0x4e); db(0xae); db(0xfc); db(0xe8);
+ db(0x72); db(0xff); db(0x74); db(0xff); db(0xb2); db(0x80); db(0x67); db(0x48);
+ db(0x26); db(0x00); db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x41); db(0xed);
+ db(0x00); db(0xc0); db(0x70); db(0x66); db(0x4e); db(0xae); db(0xff); db(0x7c);
+ db(0x41); db(0xed); db(0x00); db(0xc0); db(0x38); db(0x28); db(0x00); db(0x64);
+ db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x91); db(0xc8); db(0x43); db(0xed);
+ db(0x00); db(0x38); db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x58);
+ db(0x22); db(0x3c); db(0x80); db(0x00); db(0x10); db(0x00); db(0x24); db(0x03);
+ db(0x4e); db(0xae); db(0xfd); db(0x0c); db(0x72); db(0xff); db(0x74); db(0xff);
+ db(0x4a); db(0x80); db(0x6b); db(0x0c); db(0x45); db(0xed); db(0x00); db(0x38);
+ db(0x22); db(0x2a); db(0x00); db(0x32); db(0x24); db(0x2a); db(0x00); db(0x36);
+ db(0x20); db(0x2c); db(0x00); db(0x1c); db(0xb8); db(0x6d); db(0x00); db(0x2c);
+ db(0x66); db(0x12); db(0xb0); db(0xad); db(0x00); db(0x28); db(0x66); db(0x0c);
+ db(0xb2); db(0xad); db(0x00); db(0x20); db(0x66); db(0x06); db(0xb4); db(0xad);
+ db(0x00); db(0x24); db(0x67); db(0x40); db(0x2b); db(0x40); db(0x00); db(0x28);
+ db(0x2b); db(0x41); db(0x00); db(0x20); db(0x2b); db(0x42); db(0x00); db(0x24);
+ db(0x3b); db(0x44); db(0x00); db(0x2c); db(0x91); db(0xc8); db(0x43); db(0xed);
+ db(0x00); db(0x90); db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x58);
+ db(0x22); db(0x3c); db(0x80); db(0x00); db(0x00); db(0x00); db(0x24); db(0x03);
+ db(0x4e); db(0xae); db(0xfd); db(0x0c); db(0x4a); db(0x80); db(0x6b); db(0x04);
+ db(0x47); db(0xed); db(0x00); db(0x90); db(0x34); db(0x2d); db(0x00); db(0x2c);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x01); db(0x61); db(0x00);
+ db(0x07); db(0xfa); db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x7f); db(0x1f);
+ db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x3e); db(0x2e);
+ db(0x00); db(0x14); db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6);
+ db(0x7c); db(0x00); db(0x01); db(0xc6); db(0x93); db(0xc9); db(0x4e); db(0xae);
+ db(0xfe); db(0xda); db(0x28); db(0x40); db(0x70); db(0x14); db(0x22); db(0x4c);
+ db(0x4e); db(0xae); db(0xfe); db(0xd4); db(0x70); db(0x00); db(0x30); db(0x3c);
+ db(0x02); db(0x3c); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x2a); db(0x40); db(0x47); db(0xed);
+ db(0x00); db(0x16); db(0x27); db(0x4e); db(0x00); db(0x10); db(0x27); db(0x4c);
+ db(0x00); db(0x08); db(0x27); db(0x46); db(0x00); db(0x0c); db(0x70); db(0xff);
+ db(0x37); db(0x40); db(0x00); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x05); db(0x61); db(0x00); db(0x07); db(0x9e); db(0x20); db(0x0d);
+ db(0x06); db(0x80); db(0x00); db(0x00); db(0x02); db(0x10); db(0x4e); db(0x90);
+ db(0x43); db(0xed); db(0x00); db(0x00); db(0x13); db(0x7c); db(0x00); db(0x02);
+ db(0x00); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x05); db(0x00); db(0x09);
+ db(0x41); db(0xfa); db(0x08); db(0x1e); db(0x23); db(0x48); db(0x00); db(0x0a);
+ db(0x41); db(0xfa); db(0x02); db(0xf4); db(0x23); db(0x48); db(0x00); db(0x12);
+ db(0x23); db(0x4d); db(0x00); db(0x0e); db(0x70); db(0x05); db(0x4e); db(0xae);
+ db(0xff); db(0x58); db(0x20); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0xc2);
+ db(0x70); db(0x00); db(0x53); db(0xab); db(0x00); db(0x1c); db(0x6a); db(0x06);
+ db(0x70); db(0x0a); db(0x27); db(0x40); db(0x00); db(0x1c); db(0x4a); db(0xab);
+ db(0x00); db(0x14); db(0x66); db(0x16); db(0x4a); db(0xab); db(0x00); db(0x1c);
+ db(0x66); db(0xe0); db(0x43); db(0xfa); db(0x08); db(0x4b); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x27); db(0x40); db(0x00); db(0x14);
+ db(0x67); db(0xd0); db(0x4a); db(0xab); db(0x00); db(0x18); db(0x66); db(0x18);
+ db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xc4); db(0x43); db(0xfa);
+ db(0x08); db(0x41); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
+ db(0x27); db(0x40); db(0x00); db(0x18); db(0x67); db(0x00); db(0xff); db(0xb4);
+ db(0x4a); db(0xad); db(0x02); db(0x08); db(0x66); db(0x38); db(0x4a); db(0xab);
+ db(0x00); db(0x1c); db(0x66); db(0xa6); db(0x4e); db(0xae); db(0xff); db(0x7c);
+ db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x07); db(0x12);
+ db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae);
+ db(0xff); db(0x76); db(0x4a); db(0x82); db(0x67); db(0x8c); db(0x41); db(0xfa);
+ db(0x07); db(0x00); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00);
+ db(0xfd); db(0x2e); db(0x2b); db(0x40); db(0x02); db(0x08); db(0x67); db(0x00);
+ db(0x02); db(0x32); db(0x60); db(0x00); db(0xff); db(0x76); db(0x4a); db(0xad);
+ db(0x02); db(0x0c); db(0x66); db(0x48); db(0x4a); db(0xab); db(0x00); db(0x1c);
+ db(0x66); db(0x00); db(0xff); db(0x68); db(0x4e); db(0xae); db(0xff); db(0x7c);
+ db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x06); db(0xdf);
+ db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae);
+ db(0xff); db(0x76); db(0x4a); db(0x82); db(0x67); db(0x00); db(0xff); db(0x4c);
+ db(0x41); db(0xfa); db(0x06); db(0xcb); db(0x70); db(0x00); db(0x72); db(0x00);
+ db(0x61); db(0x00); db(0xfc); db(0xec); db(0x2b); db(0x40); db(0x02); db(0x0c);
+ db(0x67); db(0x00); db(0x01); db(0xf0); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x00); db(0x61); db(0x00); db(0x06); db(0x96); db(0x4e); db(0x90);
+ db(0x60); db(0x00); db(0xff); db(0x28); db(0x0c); db(0x47); db(0x00); db(0x24);
+ db(0x65); db(0x12); db(0x53); db(0xab); db(0x00); db(0x34); db(0x6a); db(0x0c);
+ db(0x20); db(0x4b); db(0x61); db(0x00); db(0xfd); db(0xb4); db(0x70); db(0x32);
+ db(0x27); db(0x40); db(0x00); db(0x34); db(0x22); db(0x6d); db(0x02); db(0x08);
+ db(0x45); db(0xed); db(0x01); db(0x3c); db(0x33); db(0x7c); db(0x00); db(0x0b);
+ db(0x00); db(0x1c); db(0x23); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x16);
+ db(0x00); db(0x24); db(0x23); db(0x4a); db(0x00); db(0x28); db(0x10); db(0x2d);
+ db(0x02); db(0x10); db(0x0c); db(0x47); db(0x00); db(0x27); db(0x65); db(0x00);
+ db(0x01); db(0x52); db(0x08); db(0x00); db(0x00); db(0x01); db(0x67); db(0x00);
+ db(0x01); db(0x4a); db(0x41); db(0xed); db(0x01); db(0x68); db(0x25); db(0x48);
+ db(0x00); db(0x0a); db(0x15); db(0x7c); db(0x00); db(0x13); db(0x00); db(0x04);
+ db(0x15); db(0x7c); db(0x00); db(0x03); db(0x00); db(0x05); db(0x42); db(0x90);
+ db(0x42); db(0xa8); db(0x00); db(0x04); db(0x42); db(0xa8); db(0x00); db(0x08);
+ db(0x42); db(0x68); db(0x00); db(0x0c); db(0x42); db(0x6a); db(0x00); db(0x06);
+ db(0x61); db(0x00); db(0x01); db(0x72); db(0x31); db(0x6d); db(0x02); db(0x1a);
+ db(0x00); db(0x0e); db(0x42); db(0x68); db(0x00); db(0x10); db(0x31); db(0x6d);
+ db(0x02); db(0x1c); db(0x00); db(0x12); db(0x42); db(0x68); db(0x00); db(0x14);
+ db(0x31); db(0x6d); db(0x02); db(0x14); db(0x00); db(0x16); db(0x42); db(0x68);
+ db(0x00); db(0x18); db(0x31); db(0x6d); db(0x02); db(0x16); db(0x00); db(0x1a);
+ db(0x43); db(0xed); db(0x01); db(0x88); db(0x21); db(0x49); db(0x00); db(0x1c);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x06); db(0x30); db(0x2d);
+ db(0x02); db(0x30); db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x07); db(0x22); db(0xed);
+ db(0x02); db(0x32); db(0x70); db(0x00); db(0x30); db(0x2d); db(0x02); db(0x20);
+ db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x09);
+ db(0x22); db(0xc0); db(0x30); db(0x2d); db(0x02); db(0x22); db(0x6b); db(0x08);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x0a); db(0x22); db(0xc0);
+ db(0x30); db(0x2d); db(0x02); db(0x18); db(0x6b); db(0x14); db(0x22); db(0xfc);
+ db(0x80); db(0x03); db(0xa0); db(0x02); db(0x22); db(0xc0); db(0x30); db(0x2d);
+ db(0x02); db(0x1e); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x01);
+ db(0x22); db(0xc0); db(0x30); db(0x2d); db(0x02); db(0x24); db(0x6b); db(0x10);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x03); db(0x30); db(0x2d);
+ db(0x02); db(0x2a); db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0);
+ db(0x30); db(0x2d); db(0x02); db(0x26); db(0x6b); db(0x10); db(0x22); db(0xfc);
+ db(0x80); db(0x03); db(0xa0); db(0x04); db(0x30); db(0x2d); db(0x02); db(0x2c);
  db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x30); db(0x2d);
- db(0x02); db(0x26); db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03);
- db(0xa0); db(0x04); db(0x30); db(0x2d); db(0x02); db(0x2c); db(0x48); db(0xc0);
- db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x30); db(0x2d); db(0x02); db(0x28);
- db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x05);
- db(0x30); db(0x2d); db(0x02); db(0x2e); db(0x48); db(0xc0); db(0xe1); db(0x80);
- db(0x22); db(0xc0); db(0x70); db(0x00); db(0x30); db(0x2d); db(0x02); db(0x36);
- db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x08);
- db(0x22); db(0xc0); db(0x42); db(0x91); db(0x61); db(0x00); db(0xfc); db(0x68);
- db(0x36); db(0x3c); db(0x00); db(0x68); db(0x74); db(0x01); db(0x28); db(0x2d);
- db(0x02); db(0x32); db(0x20); db(0x04); db(0xc0); db(0x82); db(0x22); db(0x2b);
- db(0x00); db(0x04); db(0xc2); db(0x82); db(0xb2); db(0x80); db(0x67); db(0x22);
- db(0x42); db(0x92); db(0x35); db(0x7c); db(0x02); db(0x00); db(0x00); db(0x04);
- db(0x42); db(0xaa); db(0x00); db(0x0a); db(0x32); db(0x03); db(0x4a); db(0x00);
- db(0x66); db(0x04); db(0x08); db(0xc1); db(0x00); db(0x07); db(0x35); db(0x41);
- db(0x00); db(0x06); db(0x42); db(0x6a); db(0x00); db(0x08); db(0x61); db(0x00);
- db(0xfc); db(0x2e); db(0x52); db(0x43); db(0xd4); db(0x42); db(0x0c); db(0x42);
- db(0x00); db(0x08); db(0x66); db(0xc6); db(0x27); db(0x44); db(0x00); db(0x04);
- db(0x10); db(0x2d); db(0x02); db(0x10); db(0x08); db(0x00); db(0x00); db(0x00);
- db(0x67); db(0x00); db(0xfd); db(0x8e); db(0x42); db(0x92); db(0x35); db(0x7c);
- db(0x04); db(0x00); db(0x00); db(0x04); db(0x42); db(0x6a); db(0x00); db(0x06);
- db(0x61); db(0x00); db(0x00); db(0x38); db(0x20); db(0x6b); db(0x00); db(0x14);
- db(0x30); db(0x2d); db(0x02); db(0x38); db(0x32); db(0x28); db(0x00); db(0x30);
- db(0xd2); db(0x41); db(0x90); db(0x41); db(0x6a); db(0x02); db(0x70); db(0x00);
- db(0x35); db(0x40); db(0x00); db(0x0a); db(0x30); db(0x2d); db(0x02); db(0x3a);
- db(0x32); db(0x28); db(0x00); db(0x2e); db(0xd2); db(0x41); db(0x90); db(0x41);
- db(0x6a); db(0x02); db(0x70); db(0x00); db(0x35); db(0x40); db(0x00); db(0x0c);
- db(0x61); db(0x00); db(0xfb); db(0xa0); db(0x60); db(0x00); db(0xfd); db(0x4a);
- db(0x4e); db(0x75); db(0x22); db(0x2d); db(0x02); db(0x32); db(0x70); db(0x00);
- db(0x08); db(0x01); db(0x00); db(0x00); db(0x67); db(0x04); db(0x08); db(0xc0);
- db(0x00); db(0x0e); db(0x08); db(0x01); db(0x00); db(0x01); db(0x67); db(0x04);
- db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x08); db(0x01); db(0x00); db(0x02);
- db(0x67); db(0x04); db(0x08); db(0xc0); db(0x00); db(0x0c); db(0x35); db(0x40);
- db(0x00); db(0x08); db(0x4e); db(0x75); db(0x4a); db(0xa9); db(0x02); db(0x08);
- db(0x67); db(0x14); db(0x4a); db(0xa9); db(0x02); db(0x0c); db(0x67); db(0x0e);
- db(0x30); db(0x29); db(0x02); db(0x12); db(0xb0); db(0x69); db(0x00); db(0x16);
- db(0x67); db(0x14); db(0x33); db(0x40); db(0x00); db(0x16); db(0x2c); db(0x69);
- db(0x00); db(0x26); db(0x20); db(0x29); db(0x00); db(0x22); db(0x22); db(0x69);
- db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x53); db(0x69);
- db(0x00); db(0x46); db(0x6a); db(0x12); db(0x33); db(0x7c); db(0x00); db(0x32);
- db(0x00); db(0x46); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x02);
- db(0x61); db(0x00); db(0x04); db(0x44); db(0x4e); db(0x90); db(0x41); db(0xf9);
- db(0x00); db(0xdf); db(0xf0); db(0x00); db(0x70); db(0x00); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x00); db(0x06); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x11); db(0x61); db(0x00); db(0x04); db(0x2a); db(0x4e); db(0x90);
- db(0x08); db(0x00); db(0x00); db(0x00); db(0x67); db(0x42); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0x88);
- db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0x40);
- db(0x2a); db(0x40); db(0x2b); db(0x4e); db(0x00); db(0x14); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x0e); db(0x61); db(0x00); db(0x03); db(0xf8);
- db(0x20); db(0x0d); db(0x4e); db(0x90); db(0x41); db(0xfa); db(0x04); db(0x78);
- db(0x43); db(0xfa); db(0x01); db(0x12); db(0x70); db(0xf6); db(0x22); db(0x3c);
- db(0x00); db(0x00); db(0x27); db(0x10); db(0x61); db(0x00); db(0xee); db(0x00);
- db(0x70); db(0x00); db(0x4c); db(0xdf); db(0x60); db(0x00); db(0x4e); db(0x75);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0a); db(0x61); db(0x00);
- db(0x03); db(0xce); db(0x4e); db(0x90); db(0x4e); db(0x75); db(0x61); db(0xf0);
- db(0x20); db(0x0d); db(0x67); db(0x1c); db(0x2c); db(0x6d); db(0x00); db(0x14);
- db(0x20); db(0x2d); db(0x00); db(0x18); db(0x67); db(0x06); db(0x22); db(0x40);
- db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4d); db(0x20); db(0x3c);
- db(0x00); db(0x00); db(0x00); db(0x88); db(0x4e); db(0xae); db(0xff); db(0x2e);
- db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x3e);
- db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x41); db(0xfa); db(0x04); db(0x06);
- db(0x22); db(0x08); db(0x24); db(0x3c); db(0x00); db(0x00); db(0x03); db(0xed);
- db(0x4e); db(0xae); db(0xff); db(0xe2); db(0x28); db(0x00); db(0x67); db(0x4c);
- db(0x45); db(0xed); db(0x00); db(0x68); db(0x42); db(0x92); db(0x34); db(0xaa);
- db(0x00); db(0x02); db(0x24); db(0x0a); db(0x54); db(0x82); db(0x76); db(0x02);
- db(0x22); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xd6); db(0xb6); db(0x80);
- db(0x66); db(0x32); db(0x0c); db(0x92); db(0x50); db(0x4e); db(0x54); db(0x52);
- db(0x66); db(0xe4); db(0x24); db(0x0a); db(0x76); db(0x04); db(0x22); db(0x04);
- db(0x4e); db(0xae); db(0xff); db(0xd6); db(0x24); db(0x0a); db(0x76); db(0x20);
- db(0x22); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xd6); db(0xb6); db(0x80);
- db(0x66); db(0x12); db(0x4a); db(0x6a); db(0x00); db(0x10); db(0x66); db(0xc4);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x10); db(0x61); db(0x00);
- db(0x03); db(0x3e); db(0x4e); db(0x90); db(0x22); db(0x04); db(0x67); db(0x04);
- db(0x4e); db(0xae); db(0xff); db(0xdc); db(0x4c); db(0xdf); db(0x7c); db(0x1c);
- db(0x4e); db(0x75); db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x41); db(0xfa);
- db(0x03); db(0x7e); db(0x22); db(0x08); db(0x74); db(0xfe); db(0x4e); db(0xae);
- db(0xff); db(0xac); db(0x22); db(0x00); db(0x67); db(0x34); db(0x4e); db(0xae);
- db(0xff); db(0xa6); db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x45); db(0xed);
- db(0x00); db(0x38); db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6);
- db(0x15); db(0x40); db(0x00); db(0x14); db(0x41); db(0xfa); db(0x03); db(0x6e);
- db(0x24); db(0x88); db(0x25); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x12);
- db(0x00); db(0x0c); db(0x25); db(0x6d); db(0x00); db(0x08); db(0x00); db(0x10);
- db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x22); db(0x0a); db(0x4e); db(0xae);
- db(0xfc); db(0x88); db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x4e); db(0x75);
- db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0d); db(0x61); db(0x00);
- db(0x02); db(0xce); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x00);
- db(0xfe); db(0xfe); db(0x2a); db(0x40); db(0x2c); db(0x6d); db(0x00); db(0x14);
- db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x2b); db(0x40);
- db(0x00); db(0x08); db(0x43); db(0xfa); db(0x03); db(0xab); db(0x70); db(0x00);
- db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2b); db(0x40); db(0x00); db(0x18);
- db(0x67); db(0x00); db(0xfe); db(0xdc); db(0x2c); db(0x40); db(0x72); db(0x32);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x41); db(0xfa); db(0x02); db(0xd4);
+ db(0x02); db(0x28); db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03);
+ db(0xa0); db(0x05); db(0x30); db(0x2d); db(0x02); db(0x2e); db(0x48); db(0xc0);
+ db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x70); db(0x00); db(0x30); db(0x2d);
+ db(0x02); db(0x36); db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03);
+ db(0xa0); db(0x08); db(0x22); db(0xc0); db(0x42); db(0x91); db(0x61); db(0x00);
+ db(0xfc); db(0x68); db(0x36); db(0x3c); db(0x00); db(0x68); db(0x74); db(0x01);
+ db(0x28); db(0x2d); db(0x02); db(0x32); db(0x20); db(0x04); db(0xc0); db(0x82);
+ db(0x22); db(0x2b); db(0x00); db(0x04); db(0xc2); db(0x82); db(0xb2); db(0x80);
+ db(0x67); db(0x22); db(0x42); db(0x92); db(0x35); db(0x7c); db(0x02); db(0x00);
+ db(0x00); db(0x04); db(0x42); db(0xaa); db(0x00); db(0x0a); db(0x32); db(0x03);
+ db(0x4a); db(0x00); db(0x66); db(0x04); db(0x08); db(0xc1); db(0x00); db(0x07);
+ db(0x35); db(0x41); db(0x00); db(0x06); db(0x42); db(0x6a); db(0x00); db(0x08);
+ db(0x61); db(0x00); db(0xfc); db(0x2e); db(0x52); db(0x43); db(0xd4); db(0x42);
+ db(0x0c); db(0x42); db(0x00); db(0x08); db(0x66); db(0xc6); db(0x27); db(0x44);
+ db(0x00); db(0x04); db(0x10); db(0x2d); db(0x02); db(0x10); db(0x08); db(0x00);
+ db(0x00); db(0x00); db(0x67); db(0x00); db(0xfd); db(0x8e); db(0x42); db(0x92);
+ db(0x35); db(0x7c); db(0x04); db(0x00); db(0x00); db(0x04); db(0x42); db(0x6a);
+ db(0x00); db(0x06); db(0x61); db(0x00); db(0x00); db(0x38); db(0x20); db(0x6b);
+ db(0x00); db(0x14); db(0x30); db(0x2d); db(0x02); db(0x38); db(0x32); db(0x28);
+ db(0x00); db(0x30); db(0xd2); db(0x41); db(0x90); db(0x41); db(0x6a); db(0x02);
+ db(0x70); db(0x00); db(0x35); db(0x40); db(0x00); db(0x0a); db(0x30); db(0x2d);
+ db(0x02); db(0x3a); db(0x32); db(0x28); db(0x00); db(0x2e); db(0xd2); db(0x41);
+ db(0x90); db(0x41); db(0x6a); db(0x02); db(0x70); db(0x00); db(0x35); db(0x40);
+ db(0x00); db(0x0c); db(0x61); db(0x00); db(0xfb); db(0xa0); db(0x60); db(0x00);
+ db(0xfd); db(0x4a); db(0x4e); db(0x75); db(0x22); db(0x2d); db(0x02); db(0x32);
+ db(0x70); db(0x00); db(0x08); db(0x01); db(0x00); db(0x00); db(0x67); db(0x04);
+ db(0x08); db(0xc0); db(0x00); db(0x0e); db(0x08); db(0x01); db(0x00); db(0x01);
+ db(0x67); db(0x04); db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x08); db(0x01);
+ db(0x00); db(0x02); db(0x67); db(0x04); db(0x08); db(0xc0); db(0x00); db(0x0c);
+ db(0x35); db(0x40); db(0x00); db(0x08); db(0x4e); db(0x75); db(0x4a); db(0xa9);
+ db(0x02); db(0x08); db(0x67); db(0x14); db(0x4a); db(0xa9); db(0x02); db(0x0c);
+ db(0x67); db(0x0e); db(0x30); db(0x29); db(0x02); db(0x12); db(0xb0); db(0x69);
+ db(0x00); db(0x16); db(0x67); db(0x14); db(0x33); db(0x40); db(0x00); db(0x16);
+ db(0x2c); db(0x69); db(0x00); db(0x26); db(0x20); db(0x29); db(0x00); db(0x22);
+ db(0x22); db(0x69); db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0xbc);
+ db(0x53); db(0x69); db(0x00); db(0x46); db(0x6a); db(0x12); db(0x33); db(0x7c);
+ db(0x00); db(0x32); db(0x00); db(0x46); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x02); db(0x61); db(0x00); db(0x04); db(0x46); db(0x4e); db(0x90);
+ db(0x41); db(0xf9); db(0x00); db(0xdf); db(0xf0); db(0x00); db(0x70); db(0x00);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x00); db(0x06); db(0x30); db(0x3c);
+ db(0xff); db(0x38); db(0x72); db(0x11); db(0x61); db(0x00); db(0x04); db(0x2c);
+ db(0x4e); db(0x90); db(0x08); db(0x00); db(0x00); db(0x00); db(0x67); db(0x42);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x20); db(0x3c); db(0x00); db(0x00);
+ db(0x00); db(0x88); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00);
+ db(0x00); db(0x40); db(0x2a); db(0x40); db(0x2b); db(0x4e); db(0x00); db(0x14);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0e); db(0x61); db(0x00);
+ db(0x03); db(0xfa); db(0x20); db(0x0d); db(0x4e); db(0x90); db(0x41); db(0xfa);
+ db(0x04); db(0x7a); db(0x43); db(0xfa); db(0x01); db(0x14); db(0x70); db(0xf6);
+ db(0x22); db(0x3c); db(0x00); db(0x00); db(0x27); db(0x10); db(0x61); db(0x00);
+ db(0xed); db(0xfa); db(0x70); db(0x00); db(0x4c); db(0xdf); db(0x60); db(0x00);
+ db(0x4e); db(0x75); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0a);
+ db(0x61); db(0x00); db(0x03); db(0xd0); db(0x4e); db(0x90); db(0x4e); db(0x75);
+ db(0x61); db(0xf0); db(0x20); db(0x0d); db(0x67); db(0x1c); db(0x2c); db(0x6d);
+ db(0x00); db(0x14); db(0x20); db(0x2d); db(0x00); db(0x18); db(0x67); db(0x06);
+ db(0x22); db(0x40); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4d);
+ db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0x88); db(0x4e); db(0xae);
+ db(0xff); db(0x2e); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x38); db(0x3e); db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x41); db(0xfa);
+ db(0x04); db(0x08); db(0x22); db(0x08); db(0x24); db(0x3c); db(0x00); db(0x00);
+ db(0x03); db(0xed); db(0x4e); db(0xae); db(0xff); db(0xe2); db(0x28); db(0x00);
+ db(0x67); db(0x4c); db(0x45); db(0xed); db(0x00); db(0x68); db(0x42); db(0x92);
+ db(0x34); db(0xaa); db(0x00); db(0x02); db(0x24); db(0x0a); db(0x54); db(0x82);
+ db(0x76); db(0x02); db(0x22); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xd6);
+ db(0xb6); db(0x80); db(0x66); db(0x32); db(0x0c); db(0x92); db(0x50); db(0x4e);
+ db(0x54); db(0x52); db(0x66); db(0xe4); db(0x24); db(0x0a); db(0x76); db(0x04);
+ db(0x22); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xd6); db(0x24); db(0x0a);
+ db(0x76); db(0x20); db(0x22); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xd6);
+ db(0xb6); db(0x80); db(0x66); db(0x12); db(0x4a); db(0x6a); db(0x00); db(0x10);
+ db(0x66); db(0xc4); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x10);
+ db(0x61); db(0x00); db(0x03); db(0x40); db(0x4e); db(0x90); db(0x22); db(0x04);
+ db(0x67); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xdc); db(0x4c); db(0xdf);
+ db(0x7c); db(0x1c); db(0x4e); db(0x75); db(0x2c); db(0x6d); db(0x00); db(0x18);
+ db(0x41); db(0xfa); db(0x03); db(0x80); db(0x22); db(0x08); db(0x74); db(0xfe);
+ db(0x4e); db(0xae); db(0xff); db(0xac); db(0x22); db(0x00); db(0x67); db(0x34);
+ db(0x4e); db(0xae); db(0xff); db(0xa6); db(0x2c); db(0x6d); db(0x00); db(0x14);
+ db(0x45); db(0xed); db(0x00); db(0x38); db(0x70); db(0xff); db(0x4e); db(0xae);
+ db(0xfe); db(0xb6); db(0x15); db(0x40); db(0x00); db(0x14); db(0x41); db(0xfa);
+ db(0x03); db(0x70); db(0x24); db(0x88); db(0x25); db(0x7c); db(0x00); db(0x00);
+ db(0x00); db(0x12); db(0x00); db(0x0c); db(0x25); db(0x6d); db(0x00); db(0x08);
+ db(0x00); db(0x10); db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x22); db(0x0a);
+ db(0x4e); db(0xae); db(0xfc); db(0x88); db(0x2c); db(0x6d); db(0x00); db(0x14);
+ db(0x4e); db(0x75); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x10);
+ db(0x00); db(0x00); db(0x00); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x0d); db(0x61); db(0x00); db(0x02); db(0xce); db(0x4e); db(0x90);
+ db(0x4a); db(0x80); db(0x67); db(0x00); db(0xfe); db(0xfc); db(0x2a); db(0x40);
+ db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x93); db(0xc9); db(0x4e); db(0xae);
+ db(0xfe); db(0xda); db(0x2b); db(0x40); db(0x00); db(0x08); db(0x43); db(0xfa);
+ db(0x03); db(0xab); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
+ db(0x2b); db(0x40); db(0x00); db(0x18); db(0x67); db(0x00); db(0xfe); db(0xda);
+ db(0x2c); db(0x40); db(0x72); db(0x32); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x41); db(0xfa); db(0x02); db(0xd4); db(0x22); db(0x08); db(0x74); db(0xfe);
+ db(0x4e); db(0xae); db(0xff); db(0xac); db(0x4a); db(0x80); db(0x67); db(0xea);
+ db(0x22); db(0x00); db(0x4e); db(0xae); db(0xff); db(0xa6); db(0x72); db(0x32);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x41); db(0xfa); db(0x02); db(0xbe);
  db(0x22); db(0x08); db(0x74); db(0xfe); db(0x4e); db(0xae); db(0xff); db(0xac);
- db(0x4a); db(0x80); db(0x67); db(0xea); db(0x22); db(0x00); db(0x4e); db(0xae);
- db(0xff); db(0xa6); db(0x72); db(0x32); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x41); db(0xfa); db(0x02); db(0xbe); db(0x22); db(0x08); db(0x74); db(0xfe);
- db(0x4e); db(0xae); db(0xff); db(0xac); db(0x4a); db(0x80); db(0x67); db(0x00);
- db(0xfe); db(0xa6); db(0x22); db(0x00); db(0x4e); db(0xae); db(0xff); db(0xa6);
- db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x61); db(0x00); db(0xf8); db(0x20);
- db(0x72); db(0x00); db(0x32); db(0x3c); db(0x00); db(0x34); db(0x61); db(0x00);
- db(0xf8); db(0x64); db(0x28); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x00);
- db(0xfe); db(0x86); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d);
- db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x72); db(0x00); db(0x20); db(0x2d);
- db(0x00); db(0x0c); db(0x41); db(0xfa); db(0x02); db(0x97); db(0x22); db(0x4c);
- db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x4a); db(0x80); db(0x66); db(0xe2);
- db(0x20); db(0x6c); db(0x00); db(0x14); db(0x0c); db(0x68); db(0x00); db(0x25);
- db(0x00); db(0x14); db(0x64); db(0x0c); db(0x61); db(0x00); db(0xfe); db(0x4a);
- db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x60); db(0xf8);
- db(0x61); db(0x00); db(0xfe); db(0xe8); db(0x41); db(0xed); db(0x00); db(0x1c);
- db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x01); db(0x29); db(0x40);
- db(0x00); db(0x24); db(0x39); db(0x7c); db(0x00); db(0x0c); db(0x00); db(0x1c);
- db(0x2b); db(0x4d); db(0x00); db(0x2c); db(0x41); db(0xfa); db(0x01); db(0x60);
- db(0x2b); db(0x48); db(0x00); db(0x24); db(0x22); db(0x4c); db(0x4e); db(0xae);
- db(0xfe); db(0x38); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0f);
- db(0x61); db(0x00); db(0x01); db(0xe4); db(0x4e); db(0x90); db(0x4a); db(0xad);
- db(0x00); db(0x00); db(0x66); db(0x1c); db(0x70); db(0x00); db(0x74); db(0x00);
- db(0x14); db(0x2d); db(0x00); db(0x4c); db(0x05); db(0xc0); db(0x08); db(0xc0);
- db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x05); db(0x00);
- db(0x67); db(0x06); db(0x61); db(0x00); db(0xfe); db(0x20); db(0x60); db(0xe4);
- db(0x20); db(0x2d); db(0x00); db(0x00); db(0x67); db(0x00); db(0x00); db(0x76);
- db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x2b); db(0x40);
- db(0x00); db(0x04); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0c);
- db(0x61); db(0x00); db(0x01); db(0xa4); db(0x4e); db(0x90); db(0x4a); db(0x80);
- db(0x67); db(0x40); db(0x4a); db(0xad); db(0x00); db(0x04); db(0x67); db(0x3a);
- db(0x39); db(0x7c); db(0x00); db(0x03); db(0x00); db(0x1c); db(0x42); db(0x2c);
- db(0x00); db(0x1f); db(0x42); db(0xac); db(0x00); db(0x20); db(0x29); db(0x6d);
- db(0x00); db(0x00); db(0x00); db(0x24); db(0x29); db(0x6d); db(0x00); db(0x04);
- db(0x00); db(0x28); db(0x42); db(0xac); db(0x00); db(0x2c); db(0x42); db(0xac);
- db(0x00); db(0x30); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38);
- db(0x2b); db(0x6c); db(0x00); db(0x30); db(0x00); db(0x10); db(0x39); db(0x7c);
- db(0x00); db(0x04); db(0x00); db(0x1c); db(0x22); db(0x4c); db(0x4e); db(0xae);
- db(0xfe); db(0x38); db(0x20); db(0x2d); db(0x00); db(0x00); db(0x42); db(0xad);
- db(0x00); db(0x00); db(0x22); db(0x2d); db(0x00); db(0x04); db(0x67); db(0x00);
- db(0xff); db(0x74); db(0x22); db(0x41); db(0x4e); db(0xae); db(0xff); db(0x2e);
- db(0x60); db(0x00); db(0xff); db(0x6a); db(0x39); db(0x7c); db(0x00); db(0x02);
- db(0x00); db(0x1c); db(0x41); db(0xed); db(0x00); db(0x30); db(0x42); db(0x90);
- db(0x42); db(0xa8); db(0x00); db(0x04); db(0x42); db(0x2c); db(0x00); db(0x1f);
- db(0x42); db(0xac); db(0x00); db(0x2c); db(0x42); db(0xac); db(0x00); db(0x30);
- db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x08); db(0x29); db(0x40);
+ db(0x4a); db(0x80); db(0x67); db(0x00); db(0xfe); db(0xa4); db(0x22); db(0x00);
+ db(0x4e); db(0xae); db(0xff); db(0xa6); db(0x2c); db(0x6d); db(0x00); db(0x14);
+ db(0x61); db(0x00); db(0xf8); db(0x1e); db(0x72); db(0x00); db(0x32); db(0x3c);
+ db(0x00); db(0x34); db(0x61); db(0x00); db(0xf8); db(0x62); db(0x28); db(0x40);
+ db(0x4a); db(0x80); db(0x67); db(0x00); db(0xfe); db(0x84); db(0x70); db(0x00);
+ db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2);
+ db(0x72); db(0x00); db(0x20); db(0x2d); db(0x00); db(0x0c); db(0x41); db(0xfa);
+ db(0x02); db(0x97); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x44);
+ db(0x4a); db(0x80); db(0x66); db(0xe2); db(0x20); db(0x6c); db(0x00); db(0x14);
+ db(0x0c); db(0x68); db(0x00); db(0x25); db(0x00); db(0x14); db(0x64); db(0x0c);
+ db(0x61); db(0x00); db(0xfe); db(0x48); db(0x70); db(0x00); db(0x4e); db(0xae);
+ db(0xfe); db(0xc2); db(0x60); db(0xf8); db(0x61); db(0x00); db(0xfe); db(0xe6);
+ db(0x41); db(0xed); db(0x00); db(0x1c); db(0x29); db(0x48); db(0x00); db(0x28);
+ db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x24); db(0x39); db(0x7c);
+ db(0x00); db(0x0c); db(0x00); db(0x1c); db(0x2b); db(0x4d); db(0x00); db(0x2c);
+ db(0x41); db(0xfa); db(0x01); db(0x60); db(0x2b); db(0x48); db(0x00); db(0x24);
+ db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x30); db(0x3c);
+ db(0xff); db(0x38); db(0x72); db(0x0f); db(0x61); db(0x00); db(0x01); db(0xe4);
+ db(0x4e); db(0x90); db(0x4a); db(0xad); db(0x00); db(0x00); db(0x66); db(0x1c);
+ db(0x70); db(0x00); db(0x74); db(0x00); db(0x14); db(0x2d); db(0x00); db(0x4c);
+ db(0x05); db(0xc0); db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae);
+ db(0xfe); db(0xc2); db(0x05); db(0x00); db(0x67); db(0x06); db(0x61); db(0x00);
+ db(0xfe); db(0x1e); db(0x60); db(0xe4); db(0x20); db(0x2d); db(0x00); db(0x00);
+ db(0x67); db(0x00); db(0x00); db(0x76); db(0x72); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x2b); db(0x40); db(0x00); db(0x04); db(0x30); db(0x3c);
+ db(0xff); db(0x38); db(0x72); db(0x0c); db(0x61); db(0x00); db(0x01); db(0xa4);
+ db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x40); db(0x4a); db(0xad);
+ db(0x00); db(0x04); db(0x67); db(0x3a); db(0x39); db(0x7c); db(0x00); db(0x03);
+ db(0x00); db(0x1c); db(0x42); db(0x2c); db(0x00); db(0x1f); db(0x42); db(0xac);
+ db(0x00); db(0x20); db(0x29); db(0x6d); db(0x00); db(0x00); db(0x00); db(0x24);
+ db(0x29); db(0x6d); db(0x00); db(0x04); db(0x00); db(0x28); db(0x42); db(0xac);
+ db(0x00); db(0x2c); db(0x42); db(0xac); db(0x00); db(0x30); db(0x22); db(0x4c);
+ db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x2b); db(0x6c); db(0x00); db(0x30);
+ db(0x00); db(0x10); db(0x39); db(0x7c); db(0x00); db(0x04); db(0x00); db(0x1c);
+ db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x20); db(0x2d);
+ db(0x00); db(0x00); db(0x42); db(0xad); db(0x00); db(0x00); db(0x22); db(0x2d);
+ db(0x00); db(0x04); db(0x67); db(0x00); db(0xff); db(0x74); db(0x22); db(0x41);
+ db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x60); db(0x00); db(0xff); db(0x6a);
+ db(0x39); db(0x7c); db(0x00); db(0x02); db(0x00); db(0x1c); db(0x41); db(0xed);
+ db(0x00); db(0x30); db(0x42); db(0x90); db(0x42); db(0xa8); db(0x00); db(0x04);
+ db(0x42); db(0x2c); db(0x00); db(0x1f); db(0x42); db(0xac); db(0x00); db(0x2c);
+ db(0x42); db(0xac); db(0x00); db(0x30); db(0x29); db(0x48); db(0x00); db(0x28);
+ db(0x70); db(0x08); db(0x29); db(0x40); db(0x00); db(0x24); db(0x22); db(0x4c);
+ db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x0c); db(0xad); db(0x46); db(0x4f);
+ db(0x52); db(0x4d); db(0x00); db(0x30); db(0x66); db(0x52); db(0x20); db(0x2d);
+ db(0x00); db(0x34); db(0x67); db(0x4c); db(0x6b); db(0x4a); db(0x2b); db(0x6c);
+ db(0x00); db(0x30); db(0x00); db(0x10); db(0x50); db(0x80); db(0x24); db(0x00);
+ db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80);
+ db(0x67); db(0x36); db(0x24); db(0x40); db(0x20); db(0x4a); db(0x20); db(0xed);
+ db(0x00); db(0x30); db(0x20); db(0xed); db(0x00); db(0x34); db(0x29); db(0x48);
+ db(0x00); db(0x28); db(0x20); db(0x02); db(0x51); db(0x80); db(0x29); db(0x40);
  db(0x00); db(0x24); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38);
- db(0x0c); db(0xad); db(0x46); db(0x4f); db(0x52); db(0x4d); db(0x00); db(0x30);
- db(0x66); db(0x52); db(0x20); db(0x2d); db(0x00); db(0x34); db(0x67); db(0x4c);
- db(0x6b); db(0x4a); db(0x2b); db(0x6c); db(0x00); db(0x30); db(0x00); db(0x10);
- db(0x50); db(0x80); db(0x24); db(0x00); db(0x72); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x36); db(0x24); db(0x40);
- db(0x20); db(0x4a); db(0x20); db(0xed); db(0x00); db(0x30); db(0x20); db(0xed);
- db(0x00); db(0x34); db(0x29); db(0x48); db(0x00); db(0x28); db(0x20); db(0x02);
- db(0x51); db(0x80); db(0x29); db(0x40); db(0x00); db(0x24); db(0x22); db(0x4c);
- db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x0b); db(0x61); db(0x00); db(0x00); db(0xca); db(0x20); db(0x2c);
- db(0x00); db(0x20); db(0x4e); db(0x90); db(0x22); db(0x4a); db(0x20); db(0x02);
- db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x4a); db(0xac); db(0x00); db(0x20);
- db(0x67); db(0x00); db(0xfe); db(0xda); db(0x41); db(0xed); db(0x00); db(0x30);
- db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x01); db(0x29); db(0x40);
- db(0x00); db(0x24); db(0x42); db(0xac); db(0x00); db(0x20); db(0x22); db(0x4c);
- db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x60); db(0xde); db(0x41); db(0xe8);
- db(0xff); db(0xe4); db(0x20); db(0x29); db(0x00); db(0x08); db(0xb0); db(0xa8);
- db(0x00); db(0x10); db(0x67); db(0x1a); db(0x21); db(0x40); db(0x00); db(0x10);
- db(0x2f); db(0x0e); db(0x2c); db(0x68); db(0x00); db(0x14); db(0x22); db(0x68);
- db(0x00); db(0x08); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d);
- db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x2c); db(0x5f); db(0x70); db(0x00);
- db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x74); db(0xff);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x11); db(0x61); db(0x00);
- db(0x00); db(0x5e); db(0x4e); db(0x90); db(0x08); db(0x00); db(0x00); db(0x01);
- db(0x67); db(0x38); db(0x74); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x7c);
- db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x00); db(0x70);
- db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x4a); db(0x80); db(0x67); db(0x1e);
- db(0x20); db(0x40); db(0x43); db(0xfa); db(0x00); db(0x22); db(0x24); db(0x68);
- db(0xff); db(0xe4); db(0x21); db(0x49); db(0xff); db(0xe4); db(0x22); db(0x48);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x65); db(0x61); db(0x00);
- db(0x00); db(0x26); db(0x4e); db(0x90); db(0x74); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x76); db(0x20); db(0x02); db(0x4e); db(0x75); db(0x59); db(0x8f);
- db(0x48); db(0xe7); db(0xc0); db(0x80); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x66); db(0x61); db(0x00); db(0x00); db(0x0a); db(0x4e); db(0x90);
- db(0x4c); db(0xdf); db(0x01); db(0x03); db(0x4e); db(0x75); db(0x41); db(0xfa);
- db(0xe8); db(0x1c); db(0x02); db(0x80); db(0x00); db(0x00); db(0xff); db(0xff);
- db(0xd1); db(0xc0); db(0x4e); db(0x75); db(0x69); db(0x6e); db(0x70); db(0x75);
- db(0x74); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65);
- db(0x00); db(0x74); db(0x69); db(0x6d); db(0x65); db(0x72); db(0x2e); db(0x64);
- db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x63); db(0x6f);
- db(0x6e); db(0x73); db(0x6f); db(0x6c); db(0x65); db(0x2e); db(0x64); db(0x65);
- db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x44); db(0x45); db(0x56);
- db(0x53); db(0x00); db(0x44); db(0x45); db(0x56); db(0x53); db(0x3a); db(0x00);
- db(0x44); db(0x45); db(0x56); db(0x53); db(0x3a); db(0x63); db(0x6c); db(0x69);
- db(0x70); db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64); db(0x2e); db(0x64);
- db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x52); db(0x41);
- db(0x4d); db(0x3a); db(0x00); db(0x63); db(0x6c); db(0x69); db(0x70); db(0x62);
- db(0x6f); db(0x61); db(0x72); db(0x64); db(0x2e); db(0x64); db(0x65); db(0x76);
- db(0x69); db(0x63); db(0x65); db(0x00); db(0x52); db(0x41); db(0x4d); db(0x3a);
- db(0x45); db(0x6e); db(0x76); db(0x2f); db(0x53); db(0x79); db(0x73); db(0x2f);
- db(0x50); db(0x6f); db(0x69); db(0x6e); db(0x74); db(0x65); db(0x72); db(0x2e);
- db(0x70); db(0x72); db(0x65); db(0x66); db(0x73); db(0x00); db(0x55); db(0x41);
- db(0x45); db(0x20); db(0x63); db(0x6c); db(0x69); db(0x70); db(0x62); db(0x6f);
- db(0x61); db(0x72); db(0x64); db(0x20); db(0x73); db(0x68); db(0x61); db(0x72);
- db(0x69); db(0x6e); db(0x67); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20);
- db(0x6d); db(0x6f); db(0x75); db(0x73); db(0x65); db(0x20); db(0x64); db(0x72);
- db(0x69); db(0x76); db(0x65); db(0x72); db(0x00); db(0x55); db(0x41); db(0x45);
- db(0x20); db(0x68); db(0x65); db(0x61); db(0x72); db(0x74); db(0x20); db(0x62);
- db(0x65); db(0x61); db(0x74); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20);
- db(0x66); db(0x69); db(0x6c); db(0x65); db(0x73); db(0x79); db(0x73); db(0x74);
- db(0x65); db(0x6d); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x66);
- db(0x73); db(0x20); db(0x61); db(0x75); db(0x74); db(0x6f); db(0x6d); db(0x6f);
- db(0x75); db(0x6e); db(0x74); db(0x65); db(0x72); db(0x00); db(0x55); db(0x41);
- db(0x45); db(0x20); db(0x66); db(0x73); db(0x20); db(0x61); db(0x75); db(0x74);
- db(0x6f); db(0x6d); db(0x6f); db(0x75); db(0x6e); db(0x74); db(0x20); db(0x70);
- db(0x72); db(0x6f); db(0x63); db(0x65); db(0x73); db(0x73); db(0x00); db(0x64);
- db(0x6f); db(0x73); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61);
- db(0x72); db(0x79); db(0x00); db(0x69); db(0x6e); db(0x74); db(0x75); db(0x69);
- db(0x74); db(0x69); db(0x6f); db(0x6e); db(0x2e); db(0x6c); db(0x69); db(0x62);
- db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x67); db(0x72); db(0x61);
- db(0x70); db(0x68); db(0x69); db(0x63); db(0x73); db(0x2e); db(0x6c); db(0x69);
- db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x65); db(0x78);
- db(0x70); db(0x61); db(0x6e); db(0x73); db(0x69); db(0x6f); db(0x6e); db(0x2e);
- db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00);
- db(0x46); db(0x69); db(0x6c); db(0x65); db(0x53); db(0x79); db(0x73); db(0x74);
- db(0x65); db(0x6d); db(0x2e); db(0x72); db(0x65); db(0x73); db(0x6f); db(0x75);
- db(0x72); db(0x63); db(0x65); db(0x00); db(0x6d); db(0x65); db(0x67); db(0x61);
- db(0x63); db(0x68); db(0x69); db(0x70); db(0x20); db(0x6d); db(0x65); db(0x6d);
- db(0x6f); db(0x72); db(0x79); db(0x00); db(0x00); db(0x00); db(0x03); db(0xf2);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0b); db(0x61); db(0x00);
+ db(0x00); db(0xca); db(0x20); db(0x2c); db(0x00); db(0x20); db(0x4e); db(0x90);
+ db(0x22); db(0x4a); db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x2e);
+ db(0x4a); db(0xac); db(0x00); db(0x20); db(0x67); db(0x00); db(0xfe); db(0xda);
+ db(0x41); db(0xed); db(0x00); db(0x30); db(0x29); db(0x48); db(0x00); db(0x28);
+ db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x24); db(0x42); db(0xac);
+ db(0x00); db(0x20); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38);
+ db(0x60); db(0xde); db(0x41); db(0xe8); db(0xff); db(0xe4); db(0x20); db(0x29);
+ db(0x00); db(0x08); db(0xb0); db(0xa8); db(0x00); db(0x10); db(0x67); db(0x1a);
+ db(0x21); db(0x40); db(0x00); db(0x10); db(0x2f); db(0x0e); db(0x2c); db(0x68);
+ db(0x00); db(0x14); db(0x22); db(0x68); db(0x00); db(0x08); db(0x70); db(0x00);
+ db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xbc);
+ db(0x2c); db(0x5f); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x74); db(0xff); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x11); db(0x61); db(0x00); db(0x00); db(0x5e); db(0x4e); db(0x90);
+ db(0x08); db(0x00); db(0x00); db(0x01); db(0x67); db(0x38); db(0x74); db(0x00);
+ db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e);
+ db(0x43); db(0xfa); db(0x00); db(0x70); db(0x4e); db(0xae); db(0xfe); db(0xec);
+ db(0x4a); db(0x80); db(0x67); db(0x1e); db(0x20); db(0x40); db(0x43); db(0xfa);
+ db(0x00); db(0x22); db(0x24); db(0x68); db(0xff); db(0xe4); db(0x21); db(0x49);
+ db(0xff); db(0xe4); db(0x22); db(0x48); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x65); db(0x61); db(0x00); db(0x00); db(0x26); db(0x4e); db(0x90);
+ db(0x74); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x20); db(0x02);
+ db(0x4e); db(0x75); db(0x59); db(0x8f); db(0x48); db(0xe7); db(0xc0); db(0x80);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x66); db(0x61); db(0x00);
+ db(0x00); db(0x0a); db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x01); db(0x03);
+ db(0x4e); db(0x75); db(0x41); db(0xfa); db(0xe7); db(0xe0); db(0x02); db(0x80);
+ db(0x00); db(0x00); db(0xff); db(0xff); db(0xd1); db(0xc0); db(0x4e); db(0x75);
+ db(0x69); db(0x6e); db(0x70); db(0x75); db(0x74); db(0x2e); db(0x64); db(0x65);
+ db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x74); db(0x69); db(0x6d);
+ db(0x65); db(0x72); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63);
+ db(0x65); db(0x00); db(0x63); db(0x6f); db(0x6e); db(0x73); db(0x6f); db(0x6c);
+ db(0x65); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65);
+ db(0x00); db(0x44); db(0x45); db(0x56); db(0x53); db(0x00); db(0x44); db(0x45);
+ db(0x56); db(0x53); db(0x3a); db(0x00); db(0x44); db(0x45); db(0x56); db(0x53);
+ db(0x3a); db(0x63); db(0x6c); db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61);
+ db(0x72); db(0x64); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63);
+ db(0x65); db(0x00); db(0x52); db(0x41); db(0x4d); db(0x3a); db(0x00); db(0x63);
+ db(0x6c); db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64);
+ db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00);
+ db(0x52); db(0x41); db(0x4d); db(0x3a); db(0x45); db(0x6e); db(0x76); db(0x2f);
+ db(0x53); db(0x79); db(0x73); db(0x2f); db(0x50); db(0x6f); db(0x69); db(0x6e);
+ db(0x74); db(0x65); db(0x72); db(0x2e); db(0x70); db(0x72); db(0x65); db(0x66);
+ db(0x73); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x63); db(0x6c);
+ db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64); db(0x20);
+ db(0x73); db(0x68); db(0x61); db(0x72); db(0x69); db(0x6e); db(0x67); db(0x00);
+ db(0x55); db(0x41); db(0x45); db(0x20); db(0x6d); db(0x6f); db(0x75); db(0x73);
+ db(0x65); db(0x20); db(0x64); db(0x72); db(0x69); db(0x76); db(0x65); db(0x72);
+ db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x68); db(0x65); db(0x61);
+ db(0x72); db(0x74); db(0x20); db(0x62); db(0x65); db(0x61); db(0x74); db(0x00);
+ db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x69); db(0x6c); db(0x65);
+ db(0x73); db(0x79); db(0x73); db(0x74); db(0x65); db(0x6d); db(0x00); db(0x55);
+ db(0x41); db(0x45); db(0x20); db(0x66); db(0x73); db(0x20); db(0x61); db(0x75);
+ db(0x74); db(0x6f); db(0x6d); db(0x6f); db(0x75); db(0x6e); db(0x74); db(0x65);
+ db(0x72); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x73);
+ db(0x20); db(0x61); db(0x75); db(0x74); db(0x6f); db(0x6d); db(0x6f); db(0x75);
+ db(0x6e); db(0x74); db(0x20); db(0x70); db(0x72); db(0x6f); db(0x63); db(0x65);
+ db(0x73); db(0x73); db(0x00); db(0x64); db(0x6f); db(0x73); db(0x2e); db(0x6c);
+ db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x69);
+ db(0x6e); db(0x74); db(0x75); db(0x69); db(0x74); db(0x69); db(0x6f); db(0x6e);
+ db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79);
+ db(0x00); db(0x67); db(0x72); db(0x61); db(0x70); db(0x68); db(0x69); db(0x63);
+ db(0x73); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72);
+ db(0x79); db(0x00); db(0x65); db(0x78); db(0x70); db(0x61); db(0x6e); db(0x73);
+ db(0x69); db(0x6f); db(0x6e); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72);
+ db(0x61); db(0x72); db(0x79); db(0x00); db(0x46); db(0x69); db(0x6c); db(0x65);
+ db(0x53); db(0x79); db(0x73); db(0x74); db(0x65); db(0x6d); db(0x2e); db(0x72);
+ db(0x65); db(0x73); db(0x6f); db(0x75); db(0x72); db(0x63); db(0x65); db(0x00);
+ db(0x6d); db(0x65); db(0x67); db(0x61); db(0x63); db(0x68); db(0x69); db(0x70);
+ db(0x20); db(0x6d); db(0x65); db(0x6d); db(0x6f); db(0x72); db(0x79); db(0x00);
+ db(0x00); db(0x00); db(0x03); db(0xf2);
 
diff --git a/fpp.cpp b/fpp.cpp
index 185fd100be08c10c5d1dee523a46db51d86dfd67..f89992b6fcf473e9c3971ce4e2845218dba9fd88 100644 (file)
--- a/fpp.cpp
+++ b/fpp.cpp
@@ -29,6 +29,7 @@
 #include "debug.h"
 
 #define DEBUG_FPP 0
+#define EXCEPTION_FPP 1
 
 STATIC_INLINE int isinrom (void)
 {
@@ -189,43 +190,86 @@ static void fpu_format_error (void)
 #endif
 }
 
-static void fpu_op_illg2 (uae_u16 opcode, uae_u32 ea, uaecptr oldpc)
+#define FPU_EXP_UNIMP_INS 0
+#define FPU_EXP_DISABLED 1
+#define FPU_EXP_UNIMP_DATATYPE 2
+
+static void fpu_op_unimp (uae_u16 opcode, uae_u32 ea, uaecptr oldpc, int type)
 {
-       if ((currprefs.cpu_model == 68060 && (currprefs.fpu_model == 0 || (regs.pcr & 2)))
-               || (currprefs.cpu_model == 68040 && currprefs.fpu_model == 0)) {
-                       /* 68040 unimplemented/68060 FPU disabled exception.
-                       * Line F exception with different stack frame.. */
-                       uaecptr newpc = m68k_getpc ();
-                       regs.t0 = regs.t1 = 0;
-                       MakeSR ();
-                       if (!regs.s) {
-                               regs.usp = m68k_areg (regs, 7);
-                               m68k_areg (regs, 7) = regs.isp;
-                       }
-                       regs.s = 1;
-                       if (currprefs.cpu_model == 68060) {
-                               m68k_areg (regs, 7) -= 4;
-                               x_put_long (m68k_areg (regs, 7), oldpc);
-                               m68k_areg (regs, 7) -= 4;
-                               x_put_long (m68k_areg (regs, 7), ea);
-                               m68k_areg (regs, 7) -= 2;
-                               x_put_word (m68k_areg (regs, 7), 0x4000 + 11 * 4);
-                       } else {
-                               m68k_areg (regs, 7) -= 4;
-                               x_put_long (m68k_areg (regs, 7), ea);
-                               m68k_areg (regs, 7) -= 2;
-                               x_put_word (m68k_areg (regs, 7), 0x2000 + 11 * 4);
-                       }
+       /* 68040 unimplemented/68060 FPU disabled exception.
+       * Line F exception with different stack frame.. */
+       int vector = 11;
+       uaecptr newpc = m68k_getpc ();
+       static int warned = 20;
+
+       regs.t0 = regs.t1 = 0;
+       MakeSR ();
+       if (!regs.s) {
+               regs.usp = m68k_areg (regs, 7);
+               m68k_areg (regs, 7) = regs.isp;
+       }
+       regs.s = 1;
+       if (currprefs.cpu_model == 68060) {
+               regs.fpiar = oldpc;
+               if (type == FPU_EXP_DISABLED) {
+                       m68k_areg (regs, 7) -= 4;
+                       x_put_long (m68k_areg (regs, 7), oldpc);
+                       m68k_areg (regs, 7) -= 4;
+                       x_put_long (m68k_areg (regs, 7), ea);
+                       m68k_areg (regs, 7) -= 2;
+                       x_put_word (m68k_areg (regs, 7), 0x4000 + vector * 4);
+               } else if (type == FPU_EXP_UNIMP_INS) {
+                       // PC = next instruction
+                       oldpc = newpc;
+                       m68k_areg (regs, 7) -= 4;
+                       x_put_long (m68k_areg (regs, 7), ea);
+                       m68k_areg (regs, 7) -= 2;
+                       x_put_word (m68k_areg (regs, 7), 0x2000 + vector * 4);
+                       //activate_debugger ();
+               } else { // FPU_EXP_UNIMP_DATATYPE
+                       vector = 60;
+                       m68k_areg (regs, 7) -= 2;
+                       x_put_word (m68k_areg (regs, 7), 0x0000 + vector * 4);
+               }
+       } else if (currprefs.cpu_model == 68040) {
+               regs.fpiar = oldpc;
+               if (type == FPU_EXP_UNIMP_INS) {
+                       // PC = next instruction
+                       oldpc = newpc;
                        m68k_areg (regs, 7) -= 4;
-                       x_put_long (m68k_areg (regs, 7), newpc);
+                       x_put_long (m68k_areg (regs, 7), ea);
                        m68k_areg (regs, 7) -= 2;
-                       x_put_word (m68k_areg (regs, 7), regs.sr);
-                       write_log (_T("68040/060 FPU disabled exception OP=%04X EA=%08X PC=%08X\n"), opcode, ea, oldpc);
-                       newpc = x_get_long (regs.vbr + 11 * 4);
-                       m68k_setpc (newpc);
+                       x_put_word (m68k_areg (regs, 7), 0x2000 + vector * 4);
+               } else { // FPU_EXP_UNIMP_DATATYPE
+                       vector = 55;
+                       m68k_areg (regs, 7) -= 4;
+                       x_put_long (m68k_areg (regs, 7), ea);
+                       m68k_areg (regs, 7) -= 2;
+                       x_put_word (m68k_areg (regs, 7), 0x2000 + vector * 4);
+               }
+       }
+       m68k_areg (regs, 7) -= 4;
+       x_put_long (m68k_areg (regs, 7), newpc);
+       m68k_areg (regs, 7) -= 2;
+       x_put_word (m68k_areg (regs, 7), regs.sr);
+       newpc = x_get_long (regs.vbr + vector * 4);
+       if (warned > 0) {
+               write_log (_T("FPU EXCEPTION %d OP=%04X EA=%08X PC=%08X -> %08X\n"), type, opcode, ea, oldpc, newpc);
+#if EXCEPTION_FPP == 0
+               warned--;
+#endif
+       }
+       m68k_setpc (newpc);
 #ifdef JIT
-                       set_special (SPCFLAG_END_COMPILE);
+       set_special (SPCFLAG_END_COMPILE);
 #endif
+}
+
+static void fpu_op_illg2 (uae_u16 opcode, uae_u32 ea, uaecptr oldpc)
+{
+       if ((currprefs.cpu_model == 68060 && (currprefs.fpu_model == 0 || (regs.pcr & 2)))
+               || (currprefs.cpu_model == 68040 && currprefs.fpu_model == 0)) {
+                       fpu_op_unimp (opcode, ea, oldpc, FPU_EXP_DISABLED);
                        return;
        }
        m68k_setpc (oldpc);
@@ -237,20 +281,140 @@ static void fpu_op_illg (uae_u16 opcode, uaecptr oldpc)
        fpu_op_illg2 (opcode, 0, oldpc);
 }
 
+
+static void fpu_noinst (uae_u16 opcode, uaecptr pc)
+{
+#if EXCEPTION_FPP
+       write_log (_T("Unknown FPU instruction %04X %08X\n"), opcode, pc);
+#endif
+       m68k_setpc (pc);
+       op_illg (opcode);
+}
+
 static bool fault_if_no_fpu (uae_u16 opcode, uae_u32 extra, uaecptr ea, uaecptr oldpc)
 {
        if ((regs.pcr & 2) || currprefs.fpu_model <= 0) {
-//             write_log (_T("no FPU: %04x %08x PC=%08x\n"), opcode, extra, oldpc);
+#if EXCEPTION_FPP
+               write_log (_T("no FPU: %04x %08x PC=%08x\n"), opcode, extra, oldpc);
+#endif
                fpu_op_illg2 (opcode, ea, oldpc);
                return true;
        }
        return false;
 }
 
+static bool fault_if_unimplemented_680x0 (uae_u16 opcode, uae_u32 extra, uaecptr ea, uaecptr oldpc)
+{
+       if (fault_if_no_fpu (opcode, extra, ea, oldpc))
+               return true;
+       if (currprefs.cpu_model >= 68040 && currprefs.fpu_model && currprefs.fpu_no_unimplemented) {
+               uae_u16 v = extra & 0x7f;
+               switch (v)
+               {
+                       case 0x01: /* FINT */
+                       case 0x03: /* FINTRZ */
+                       // Unimplemented only in 68040.
+                       if (currprefs.cpu_model == 68040) {
+                               fpu_op_unimp (opcode, ea, oldpc, FPU_EXP_UNIMP_INS);
+                               return true;
+                       }
+                       return false;
+               
+                       case 0x02: /* FSINH */
+                       case 0x06: /* FLOGNP1 */
+                       case 0x08: /* FETOXM1 */
+                       case 0x09: /* FTANH */
+                       case 0x0a: /* FATAN */
+                       case 0x0c: /* FASIN */
+                       case 0x0d: /* FATANH */
+                       case 0x0e: /* FSIN */
+                       case 0x0f: /* FTAN */
+                       case 0x10: /* FETOX */
+                       case 0x11: /* FTWOTOX */
+                       case 0x12: /* FTENTOX */
+                       case 0x14: /* FLOGN */
+                       case 0x15: /* FLOG10 */
+                       case 0x16: /* FLOG2 */
+                       case 0x19: /* FCOSH */
+                       case 0x1c: /* FACOS */
+                       case 0x1d: /* FCOS */
+                       case 0x1e: /* FGETEXP */
+                       case 0x1f: /* FGETMAN */
+                       case 0x30: /* FSINCOS */
+                       case 0x31: /* FSINCOS */
+                       case 0x32: /* FSINCOS */
+                       case 0x33: /* FSINCOS */
+                       case 0x34: /* FSINCOS */
+                       case 0x35: /* FSINCOS */
+                       case 0x36: /* FSINCOS */
+                       case 0x37: /* FSINCOS */
+                       case 0x21: /* FMOD */
+                       case 0x25: /* FREM */
+                       case 0x26: /* FSCALE */
+                       fpu_op_unimp (opcode, ea, oldpc, FPU_EXP_UNIMP_INS);
+                       return true;
+               }
+       }
+       return false;
+}
+
+static bool fault_if_unimplemented_6888x (uae_u16 opcode, uae_u32 extra, uaecptr oldpc)
+{
+       if ((currprefs.fpu_model == 68881 || currprefs.fpu_model == 68882) && currprefs.fpu_no_unimplemented) {
+               uae_u16 v = extra & 0x7f;
+               /* 68040/68060 only variants. 6888x = F-line exception. */
+               switch (v)
+               {
+                       case 0x62: /* FSADD */
+                       case 0x66: /* FDADD */
+                       case 0x68: /* FSSUB */
+                       case 0x6c: /* FDSUB */
+                       case 0x5a: /* FSNEG */
+                       case 0x5e: /* FDNEG */
+                       case 0x58: /* FSABS */
+                       case 0x5c: /* FDABS */
+                       case 0x63: /* FSMUL */
+                       case 0x67: /* FDMUL */
+                       case 0x41: /* FSSQRT */
+                       case 0x45: /* FDSQRT */
+                               fpu_noinst (opcode, oldpc);
+                       return true;
+               }
+       }
+       return false;
+}
+
+static bool fault_if_4060 (uae_u16 opcode, uae_u32 extra, uaecptr ea, uaecptr oldpc, int type)
+{
+       if (currprefs.cpu_model >= 68040 && currprefs.fpu_model && currprefs.fpu_no_unimplemented) {
+               // do not emulate missing datatype yet, much more complex
+               // requires pre and post exceptions..
+               if (type == FPU_EXP_UNIMP_DATATYPE)
+                       return false;
+               fpu_op_unimp (opcode, ea, oldpc, type);
+               return true;
+       }
+       return false;
+}
+
+static bool fault_if_no_fpu_u (uae_u16 opcode, uae_u32 extra, uaecptr ea, uaecptr oldpc)
+{
+       if (fault_if_no_fpu (opcode, extra, ea, oldpc))
+               return true;
+       if (currprefs.cpu_model == 68060 && currprefs.fpu_model && currprefs.fpu_no_unimplemented) {
+               // 68060 FTRAP, FDBcc or FScc are not implemented.
+               fpu_op_unimp (opcode, ea, m68k_getpc (), FPU_EXP_UNIMP_INS);
+               return true;
+       }
+       return false;
+}
+
 static bool fault_if_no_6888x (uae_u16 opcode, uae_u32 extra, uaecptr oldpc)
 {
        if (currprefs.cpu_model < 68040 && currprefs.fpu_model <= 0) {
-//             write_log (_T("6888x no FPU: %04x %08x PC=%08x\n"), opcode, extra, oldpc);
+#if EXCEPTION_FPP
+               write_log (_T("6888x no FPU: %04x %08x PC=%08x\n"), opcode, extra, oldpc);
+#endif
                m68k_setpc (oldpc);
                op_illg (opcode);
                return true;
@@ -258,13 +422,6 @@ static bool fault_if_no_6888x (uae_u16 opcode, uae_u32 extra, uaecptr oldpc)
        return false;
 }
 
-static         void fpu_noinst (uae_u16 opcode, uaecptr pc)
-{
-//     write_log (_T("Unknown FPU instruction %04X %08X\n"), opcode, pc);
-       m68k_setpc (pc);
-       op_illg (opcode);
-}
-
 
 static int get_fpu_version (void)
 {
@@ -561,7 +718,7 @@ STATIC_INLINE int get_fp_value (uae_u32 opcode, uae_u16 extra, fptype *src, uaec
                        }
        }
 
-       if (fault_if_no_fpu (opcode, extra, ad, oldpc))
+       if (fault_if_unimplemented_680x0 (opcode, extra, ad, oldpc))
                return -1;
 
        switch (size)
@@ -574,6 +731,8 @@ STATIC_INLINE int get_fp_value (uae_u32 opcode, uae_u16 extra, fptype *src, uaec
                        break;
                case 2:
                        {
+                               if (fault_if_4060 (opcode, extra, ad, oldpc, FPU_EXP_UNIMP_DATATYPE))
+                                       return -1;
                                uae_u32 wrd1, wrd2, wrd3;
                                wrd1 = x_cp_get_long (ad);
                                ad += 4;
@@ -585,6 +744,8 @@ STATIC_INLINE int get_fp_value (uae_u32 opcode, uae_u16 extra, fptype *src, uaec
                        break;
                case 3:
                        {
+                               if (fault_if_4060 (opcode, extra, ad, oldpc, FPU_EXP_UNIMP_DATATYPE))
+                                       return -1;
                                uae_u32 wrd1, wrd2, wrd3;
                                wrd1 = x_cp_get_long (ad);
                                ad += 4;
@@ -716,6 +877,8 @@ STATIC_INLINE int put_fp_value (fptype value, uae_u32 opcode, uae_u16 extra, uae
                        break;
                case 2:
                        {
+                               if (fault_if_4060 (opcode, extra, ad, oldpc, FPU_EXP_UNIMP_DATATYPE))
+                                       return -1;
                                uae_u32 wrd1, wrd2, wrd3;
                                from_exten (value, &wrd1, &wrd2, &wrd3);
                                x_cp_put_long (ad, wrd1);
@@ -727,6 +890,8 @@ STATIC_INLINE int put_fp_value (fptype value, uae_u32 opcode, uae_u16 extra, uae
                        break;
                case 3:
                        {
+                               if (fault_if_4060 (opcode, extra, ad, oldpc, FPU_EXP_UNIMP_DATATYPE))
+                                       return -1;
                                uae_u32 wrd1, wrd2, wrd3;
                                from_pack (value, &wrd1, &wrd2, &wrd3);
                                x_cp_put_long (ad, wrd1);
@@ -904,7 +1069,7 @@ void fpuop_dbcc (uae_u32 opcode, uae_u16 extra)
                return;
 
        disp = (uae_s32) (uae_s16) x_next_iword ();
-       if (fault_if_no_fpu (opcode, extra, pc + disp, pc - 4))
+       if (fault_if_no_fpu_u (opcode, extra, pc + disp, pc - 4))
                return;
        regs.fpiar = pc - 4;
        cc = fpp_cond (extra & 0x3f);
@@ -930,7 +1095,7 @@ void fpuop_scc (uae_u32 opcode, uae_u16 extra)
        if (!isinrom ())
                write_log (_T("fscc_opp at %08lx\n"), m68k_getpc ());
 #endif
-       if (fault_if_no_fpu (opcode, extra, 0, pc))
+       if (fault_if_no_fpu_u (opcode, extra, 0, pc))
                return;
 
        regs.fpiar = pc;
@@ -958,7 +1123,7 @@ void fpuop_trapcc (uae_u32 opcode, uaecptr oldpc, uae_u16 extra)
        if (!isinrom ())
                write_log (_T("ftrapcc_opp at %08lx\n"), m68k_getpc ());
 #endif
-       if (fault_if_no_fpu (opcode, extra, 0, oldpc))
+       if (fault_if_no_fpu_u (opcode, extra, 0, oldpc))
                return;
 
        regs.fpiar = oldpc;
@@ -1656,6 +1821,11 @@ static void fpuop_arithmetic2 (uae_u32 opcode, uae_u16 extra)
                                MAKE_FPSR (regs.fp[reg]);
                                return;
                        }
+
+                       // 6888x does not have special exceptions, check immediately
+                       if (fault_if_unimplemented_6888x (opcode, extra, pc))
+                               return;
+
                        v = get_fp_value (opcode, extra, &src, pc);
                        if (v <= 0) {
                                if (v == 0)
@@ -1663,6 +1833,10 @@ static void fpuop_arithmetic2 (uae_u32 opcode, uae_u16 extra)
                                return;
                        }
 
+                       // get_fp_value() checked this, but only if EA was nonzero (non-register)
+                       if (fault_if_unimplemented_680x0 (opcode, extra, 0, pc))
+                               return;
+
                        regs.fpiar =  pc;
 
                        switch (extra & 0x7f)
@@ -1717,8 +1891,8 @@ static void fpuop_arithmetic2 (uae_u32 opcode, uae_u16 extra)
                                        regs.fp[reg] = fp_round_to_zero (src);
                                        break;
                                case 0x04: /* FSQRT */
-                               case 0x41:
-                               case 0x45:
+                               case 0x41: /* FSSQRT */
+                               case 0x45: /* FDSQRT */
                                        regs.fp[reg] = sqrt (src);
                                        if ((extra & 0x44) == 0x40)
                                                fround (reg);
@@ -1770,8 +1944,8 @@ static void fpuop_arithmetic2 (uae_u32 opcode, uae_u16 extra)
                                        regs.fp[reg] = *fp_l2_e * log (src);
                                        break;
                                case 0x18: /* FABS */
-                               case 0x58:
-                               case 0x5c:
+                               case 0x58: /* FSABS */
+                               case 0x5c: /* FDABS */
                                        regs.fp[reg] = src < 0 ? -src : src;
                                        if ((extra & 0x44) == 0x40)
                                                fround (reg);
@@ -1780,8 +1954,8 @@ static void fpuop_arithmetic2 (uae_u32 opcode, uae_u16 extra)
                                        regs.fp[reg] = cosh (src);
                                        break;
                                case 0x1a: /* FNEG */
-                               case 0x5a:
-                               case 0x5e:
+                               case 0x5a: /* FSNEG */
+                               case 0x5e: /* FDNEG */
                                        regs.fp[reg] = -src;
                                        if ((extra & 0x44) == 0x40)
                                                fround (reg);
@@ -1814,8 +1988,8 @@ static void fpuop_arithmetic2 (uae_u32 opcode, uae_u16 extra)
                                        }
                                        break;
                                case 0x20: /* FDIV */
-                               case 0x60:
-                               case 0x64:
+                               case 0x60: /* FSDIV */
+                               case 0x64: /* FDADD */
                                        regs.fp[reg] /= src;
                                        if ((extra & 0x44) == 0x40)
                                                fround (reg);
@@ -1827,15 +2001,15 @@ static void fpuop_arithmetic2 (uae_u32 opcode, uae_u16 extra)
                                        }
                                        break;
                                case 0x22: /* FADD */
-                               case 0x62:
-                               case 0x66:
+                               case 0x62: /* FSADD */
+                               case 0x66: /* FDADD */
                                        regs.fp[reg] += src;
                                        if ((extra & 0x44) == 0x40)
                                                fround (reg);
                                        break;
                                case 0x23: /* FMUL */
-                               case 0x63:
-                               case 0x67:
+                               case 0x63: /* FSMUL */
+                               case 0x67: /* FDMUL */
                                        regs.fp[reg] *= src;
                                        if ((extra & 0x44) == 0x40)
                                                fround (reg);
@@ -1862,8 +2036,8 @@ static void fpuop_arithmetic2 (uae_u32 opcode, uae_u16 extra)
                                        regs.fp[reg] *= src;
                                        break;
                                case 0x28: /* FSUB */
-                               case 0x68:
-                               case 0x6c:
+                               case 0x68: /* FSSUB */
+                               case 0x6c: /* FDSUB */
                                        regs.fp[reg] -= src;
                                        if ((extra & 0x44) == 0x40)
                                                fround (reg);
index 6daa730e254ae3ca41962b8584ffe261f1dfc451..6db86e0e8221d538226571a3ee9d85ab7f7ce3ad 100644 (file)
@@ -80,6 +80,7 @@ struct inputevent {
 #define ID_FLAG_GAMEPORTSCUSTOM1 4
 #define ID_FLAG_GAMEPORTSCUSTOM2 8
 #define ID_FLAG_INVERTTOGGLE 16
+#define ID_FLAG_INVERT 32
 
 #define ID_FLAG_GAMEPORTSCUSTOM_MASK (ID_FLAG_GAMEPORTSCUSTOM1 | ID_FLAG_GAMEPORTSCUSTOM2)
 #define ID_FLAG_AUTOFIRE_MASK (ID_FLAG_TOGGLE | ID_FLAG_INVERTTOGGLE | ID_FLAG_AUTOFIRE)
@@ -114,6 +115,7 @@ struct inputevent {
 #define IDEV_MAPPED_INVERTTOGGLE 8
 #define IDEV_MAPPED_GAMEPORTSCUSTOM1 16
 #define IDEV_MAPPED_GAMEPORTSCUSTOM2 32
+#define IDEV_MAPPED_INVERT 64
 #define IDEV_MAPPED_QUALIFIER1          0x000000100000000
 #define IDEV_MAPPED_QUALIFIER2          0x000000400000000
 #define IDEV_MAPPED_QUALIFIER3          0x000001000000000
index 31957fb0c511641aa90cc78b9209866237a0f7a6..9a9bf4764056478067cc3ed3f068e31e75b6ab1a 100644 (file)
@@ -409,7 +409,6 @@ extern void init_m68k_full (void);
 extern void m68k_go (int);
 extern void m68k_dumpstate (uaecptr *);
 extern void m68k_dumpstate (uaecptr, uaecptr *);
-extern void m68k_reset (int);
 extern int getDivu68kCycles (uae_u32 dividend, uae_u16 divisor);
 extern int getDivs68kCycles (uae_s32 dividend, uae_s16 divisor);
 extern void divbyzero_special (bool issigned, uae_s32 dst);
index da7df1c7f5f8119bfcdaeacedb84ff734110b7c7..b5218e7a84252b0e58aa9b7a19a07b9685857e60 100644 (file)
@@ -9,7 +9,7 @@
 
 #define UAEMAJOR 2
 #define UAEMINOR 6
-#define UAESUBREV 0
+#define UAESUBREV 1
 
 typedef enum { KBD_LANG_US, KBD_LANG_DK, KBD_LANG_DE, KBD_LANG_SE, KBD_LANG_FR, KBD_LANG_IT, KBD_LANG_ES } KbdLang;
 
@@ -447,6 +447,7 @@ struct uae_prefs {
        int fpu_model;
        int fpu_revision;
        bool cpu_compatible;
+       bool fpu_no_unimplemented;
        bool address_space_24;
        bool picasso96_nocustom;
        int picasso96_modeflags;
index 29e6f37118e8382bcdd5cb07d59b92db3e3edfa5..6a096855084056ac9c34a5253be4c78d6095b500 100644 (file)
@@ -61,6 +61,8 @@
 int inputdevice_logging = 0;
 extern int tablet_log;
 
+#define COMPA_RESERVED_FLAGS ID_FLAG_INVERT
+
 #define ID_FLAG_CANRELEASE 0x1000
 #define ID_FLAG_TOGGLED 0x2000
 #define ID_FLAG_CUSTOMEVENT_TOGGLED1 0x4000
@@ -2976,7 +2978,7 @@ static int handle_input_event (int nr, int state, int max, int autofire, bool ca
                return 0;
 
 #ifdef _WIN32
-       // ignore norrmal GUI event if forced gui key is in use
+       // ignore normal GUI event if forced gui key is in use
        if (currprefs.win32_guikey >= 0 && nr == INPUTEVENT_SPC_ENTERGUI)
                return 0;
 #endif
@@ -3697,23 +3699,23 @@ static bool process_custom_event (struct uae_input_device *id, int offset, int s
        return true;
 }
 
-static void setbuttonstateall (struct uae_input_device *id, struct uae_input_device2 *id2, int button, int state)
+static void setbuttonstateall (struct uae_input_device *id, struct uae_input_device2 *id2, int button, int buttonstate)
 {
        static frame_time_t switchdevice_timeout;
        int i;
        uae_u32 mask = 1 << button;
        uae_u32 omask = id2 ? id2->buttonmask & mask : 0;
-       uae_u32 nmask = (state ? 1 : 0) << button;
+       uae_u32 nmask = (buttonstate ? 1 : 0) << button;
        uae_u64 qualmask[MAX_INPUT_SUB_EVENT];
        bool qualonly;
 
-       if (input_play && state)
+       if (input_play && buttonstate)
                inprec_realtime ();
        if (input_play)
                return;
        if (!id->enabled) {
                frame_time_t t = read_processor_time ();
-               if (state) {
+               if (buttonstate) {
                        switchdevice_timeout = t;
                } else {
                        int port = button;
@@ -3731,7 +3733,7 @@ static void setbuttonstateall (struct uae_input_device *id, struct uae_input_dev
        bool didcustom = false;
 
        for (i = 0; i < MAX_INPUT_SUB_EVENT; i++) {
-               int sub = sublevdir[state == 0 ? 1 : 0][i];
+               int sub = sublevdir[buttonstate == 0 ? 1 : 0][i];
                uae_u64 *flagsp = &id->flags[ID_BUTTON_OFFSET + button][sub];
                int evt = id->eventid[ID_BUTTON_OFFSET + button][sub];
                TCHAR *custom = id->custom[ID_BUTTON_OFFSET + button][sub];
@@ -3739,6 +3741,16 @@ static void setbuttonstateall (struct uae_input_device *id, struct uae_input_dev
                int autofire = (flags & ID_FLAG_AUTOFIRE) ? 1 : 0;
                int toggle = (flags & ID_FLAG_TOGGLE) ? 1 : 0;
                int inverttoggle = (flags & ID_FLAG_INVERTTOGGLE) ? 1 : 0;
+               int invert = (flags & ID_FLAG_INVERT) ? 1 : 0;
+               int state;
+
+               if (buttonstate < 0) {
+                       state = buttonstate;
+               } else if (invert) {
+                       state = buttonstate ? 0 : 1;
+               } else {
+                       state = buttonstate;
+               }
 
                if (!state) {
                        didcustom |= process_custom_event (id, ID_BUTTON_OFFSET + button, state, qualmask, autofire, i);
@@ -3798,7 +3810,7 @@ static void setbuttonstateall (struct uae_input_device *id, struct uae_input_dev
                queue_input_event (-1, NULL, -1, 0, 0, 1);
 
        if (id2 && ((omask ^ nmask) & mask)) {
-               if (state)
+               if (buttonstate)
                        id2->buttonmask |= mask;
                else
                        id2->buttonmask &= ~mask;
@@ -4326,7 +4338,7 @@ static void setcompakb (int *kb, int *srcmap, int index, int af)
                                        if (uid->extra[l] == id) {
                                                inputdevice_sparecopy (uid, l, 0);
                                                uid->eventid[l][0] = srcmap[k];
-                                               uid->flags[l][0] = 0;
+                                               uid->flags[l][0] &= COMPA_RESERVED_FLAGS;
                                                uid->port[l][0] = index + 1;
                                                xfree (uid->custom[l][0]);
                                                uid->custom[l][0] = NULL;
@@ -4411,7 +4423,7 @@ static void clearevent (struct uae_input_device *uid, int evt)
                for (int j = 0; j < MAX_INPUT_SUB_EVENT; j++) {
                        if (uid->eventid[i][j] == evt) {
                                uid->eventid[i][j] = 0;
-                               uid->flags[i][j] = 0;
+                               uid->flags[i][j] &= COMPA_RESERVED_FLAGS;
                                xfree (uid->custom[i][j]);
                                uid->custom[i][j] = NULL;
                        }
@@ -4424,7 +4436,7 @@ static void clearkbrevent (struct uae_input_device *uid, int evt)
                for (int j = 0; j < MAX_INPUT_SUB_EVENT; j++) {
                        if (uid->eventid[i][j] == evt) {
                                uid->eventid[i][j] = 0;
-                               uid->flags[i][j] = 0;
+                               uid->flags[i][j] &= COMPA_RESERVED_FLAGS;
                                xfree (uid->custom[i][j]);
                                uid->custom[i][j] = NULL;
                                if (j == 0)
@@ -4504,7 +4516,7 @@ static void cleardevgp (struct uae_input_device *uid, int num, bool nocustom, in
                                if (nocustom && (uid[num].flags[i][j] & ID_FLAG_GAMEPORTSCUSTOM_MASK))
                                        continue;
                                uid[num].eventid[i][j] = 0;
-                               uid[num].flags[i][j] = 0;
+                               uid[num].flags[i][j] &= COMPA_RESERVED_FLAGS;
                                xfree (uid[num].custom[i][j]);
                                uid[num].custom[i][j] = NULL;
                                uid[num].port[i][j] = 0;
@@ -4522,7 +4534,7 @@ static void cleardevkbrgp (struct uae_input_device *uid, int num, bool nocustom,
                                if (nocustom && (uid[num].flags[i][j] & ID_FLAG_GAMEPORTSCUSTOM_MASK))
                                        continue;
                                uid[num].eventid[i][j] = 0;
-                               uid[num].flags[i][j] = 0;
+                               uid[num].flags[i][j] &= COMPA_RESERVED_FLAGS;
                                xfree (uid[num].custom[i][j]);
                                uid[num].custom[i][j] = NULL;
                                uid[num].port[i][j] = 0;
@@ -5436,7 +5448,7 @@ static void rqualifiers (uae_u64 flags, bool release)
        }
 }
 
-static int inputdevice_translatekeycode_2 (int keyboard, int scancode, int state, bool qualifiercheckonly)
+static int inputdevice_translatekeycode_2 (int keyboard, int scancode, int keystate, bool qualifiercheckonly)
 {
        struct uae_input_device *na = &keyboards[keyboard];
        int j, k;
@@ -5459,13 +5471,23 @@ static int inputdevice_translatekeycode_2 (int keyboard, int scancode, int state
                        if (qualonly)
                                qualifiercheckonly = true;
                        for (k = 0; k < MAX_INPUT_SUB_EVENT; k++) {/* send key release events in reverse order */
-                               uae_u64 *flagsp = &na->flags[j][sublevdir[state == 0 ? 1 : 0][k]];
-                               int evt = na->eventid[j][sublevdir[state == 0 ? 1 : 0][k]];
+                               uae_u64 *flagsp = &na->flags[j][sublevdir[keystate == 0 ? 1 : 0][k]];
+                               int evt = na->eventid[j][sublevdir[keystate == 0 ? 1 : 0][k]];
                                uae_u64 flags = *flagsp;
                                int autofire = (flags & ID_FLAG_AUTOFIRE) ? 1 : 0;
                                int toggle = (flags & ID_FLAG_TOGGLE) ? 1 : 0;
                                int inverttoggle = (flags & ID_FLAG_INVERTTOGGLE) ? 1 : 0;
+                               int invert = (flags & ID_FLAG_INVERT) ? 1 : 0;
                                int toggled;
+                               int state;
+
+                               if (keystate < 0) {
+                                       state = keystate;
+                               } else if (invert) {
+                                       state = keystate ? 0 : 1;
+                               } else {
+                                       state = keystate;
+                               }
 
                                setqualifiers (evt, state > 0);
 
@@ -6031,6 +6053,8 @@ int inputdevice_get_mapping (int devnum, int num, uae_u64 *pflags, int *pport, T
                flags |= IDEV_MAPPED_TOGGLE;
        if (flag & ID_FLAG_INVERTTOGGLE)
                flags |= IDEV_MAPPED_INVERTTOGGLE;
+       if (flag & ID_FLAG_INVERT)
+               flags |= IDEV_MAPPED_INVERT;
        if (flag & ID_FLAG_GAMEPORTSCUSTOM1)
                flags |= IDEV_MAPPED_GAMEPORTSCUSTOM1;
        if (flag & ID_FLAG_GAMEPORTSCUSTOM2)
@@ -6083,12 +6107,13 @@ int inputdevice_set_mapping (int devnum, int num, const TCHAR *name, TCHAR *cust
                return 0;
        if (data >= 0) {
                amask = events[eid].allow_mask;
-               flag &= ~(ID_FLAG_AUTOFIRE_MASK | ID_FLAG_GAMEPORTSCUSTOM_MASK | IDEV_MAPPED_QUALIFIER_MASK);
+               flag &= ~(ID_FLAG_AUTOFIRE_MASK | ID_FLAG_GAMEPORTSCUSTOM_MASK | IDEV_MAPPED_QUALIFIER_MASK | ID_FLAG_INVERT);
                if (amask & AM_AF) {
                        flag |= (flags & IDEV_MAPPED_AUTOFIRE_SET) ? ID_FLAG_AUTOFIRE : 0;
                        flag |= (flags & IDEV_MAPPED_TOGGLE) ? ID_FLAG_TOGGLE : 0;
                        flag |= (flags & IDEV_MAPPED_INVERTTOGGLE) ? ID_FLAG_INVERTTOGGLE : 0;
                }
+               flag |= (flags & IDEV_MAPPED_INVERT) ? ID_FLAG_INVERT : 0;
                flag |= (flags & IDEV_MAPPED_GAMEPORTSCUSTOM1) ? ID_FLAG_GAMEPORTSCUSTOM1 : 0;
                flag |= (flags & IDEV_MAPPED_GAMEPORTSCUSTOM2) ? ID_FLAG_GAMEPORTSCUSTOM2 : 0;
                flag |= flags & IDEV_MAPPED_QUALIFIER_MASK;
@@ -6597,8 +6622,12 @@ void setjoystickstate (int joy, int axis, int state, int max)
                        switchdevice (&joysticks[joy], axis * 2 + (v1 < 0 ? 0 : 1), false);
                return;
        }
-       for (i = 0; i < MAX_INPUT_SUB_EVENT; i++)
-               handle_input_event (id->eventid[ID_AXIS_OFFSET + axis][i], state, max, id->flags[ID_AXIS_OFFSET + axis][i] & ID_FLAG_AUTOFIRE, true, false);
+       for (i = 0; i < MAX_INPUT_SUB_EVENT; i++) {
+               uae_u64 flags = id->flags[ID_AXIS_OFFSET + axis][i];
+               if (flags & ID_FLAG_INVERT)
+                       state = -state;
+               handle_input_event (id->eventid[ID_AXIS_OFFSET + axis][i], state, max, flags & ID_FLAG_AUTOFIRE, true, false);
+       }
        id2->states[axis] = state;
 }
 int getjoystickstate (int joy)
@@ -6663,8 +6692,12 @@ void setmousestate (int mouse, int axis, int data, int isabs)
        diff = (int)fract[mouse][axis];
        v += diff;
        fract[mouse][axis] -= diff;
-       for (i = 0; i < MAX_INPUT_SUB_EVENT; i++)
+       for (i = 0; i < MAX_INPUT_SUB_EVENT; i++) {
+               uae_u64 flags = id->flags[ID_AXIS_OFFSET + axis][i];
+               if (!isabs && (flags & ID_FLAG_INVERT))
+                       v = -v;
                handle_input_event (id->eventid[ID_AXIS_OFFSET + axis][i], v, 0, 0, true, false);
+       }
 }
 
 int getmousestate (int joy)
index b9a8e7f4cca1a6afbd4bec5065ba6167e4a44dfd..62c23554900ef8936e1de83a30f7d40606cd5729 100644 (file)
@@ -2311,7 +2311,9 @@ static void fill_ce_banks (void)
        // data cachable regions
        memset (ce_cachable, 0, sizeof ce_cachable);
        memset (ce_cachable + (0x00200000 >> 16), 1, currprefs.fastmem_size >> 16);
-       memset (ce_cachable + (0x10000000 >> 16), 1, currprefs.z3fastmem_size >> 16);
+       memset (ce_cachable + (0x00c00000 >> 16), 1, currprefs.bogomem_size >> 16);
+       memset (ce_cachable + (z3fastmem_start >> 16), 1, currprefs.z3fastmem_size >> 16);
+       memset (ce_cachable + (z3fastmem2_start >> 16), 1, currprefs.z3fastmem2_size >> 16);
 
        if (&get_mem_bank (0) == &chipmem_bank) {
                for (i = 0; i < (0x200000 >> 16); i++)
index 39a70dcf048a899153cd71c20714b5a1138405c6..283db3c5b4153528b4dcdc5e206b1f69287abe16 100644 (file)
@@ -3268,7 +3268,7 @@ void m68k_mull (uae_u32 opcode, uae_u32 src, uae_u16 extra)
 
 #endif
 
-void m68k_reset (int hardreset)
+static void m68k_reset (bool hardreset)
 {
        regs.spcflags = 0;
        regs.ipl = regs.ipl_pin = 0;
@@ -4346,13 +4346,14 @@ retry:
                        f.x = regflags.x;
                        pc = regs.instruction_pc = m68k_getpc ();
 
+                       do_cycles (cpu_cycles);
+
                        mmu_opcode = -1;
                        mmu060_state = 0;
                        mmu_opcode = opcode = x_prefetch (0);
                        mmu060_state = 1;
 
                        count_instr (opcode);
-                       do_cycles (cpu_cycles);
                        cpu_cycles = (*cpufunctbl[opcode])(opcode);
 
                        cpu_cycles = adjust_cycles (cpu_cycles);
@@ -4406,10 +4407,11 @@ retry:
                        mmu_restart = true;
                        pc = regs.instruction_pc = m68k_getpc ();
 
+                       do_cycles (cpu_cycles);
+
                        mmu_opcode = -1;
                        mmu_opcode = opcode = x_prefetch (0);
                        count_instr (opcode);
-                       do_cycles (cpu_cycles);
                        cpu_cycles = (*cpufunctbl[opcode])(opcode);
                        cpu_cycles = adjust_cycles (cpu_cycles);
 
@@ -4853,7 +4855,7 @@ void m68k_go (int may_quit)
 #endif
                        set_cycles (start_cycles);
                        custom_reset (hardreset != 0, kbreset);
-                       m68k_reset (hardreset);
+                       m68k_reset (hardreset != 0);
                        if (hardreset) {
                                memory_clear ();
                                write_log (_T("hardreset, memory cleared\n"));
@@ -5936,7 +5938,7 @@ void cpureset (void)
                return;
        }
        pc = m68k_getpc ();
-       if (pc >= currprefs.chipmem_size) {
+       if (pc >= 0xa00000) {
                addrbank *b = &get_mem_bank (pc);
                if (b->check (pc, 2 + 2)) {
                        /* We have memory, hope for the best.. */
index c293c6cdf3b41e5166295022ddf1c8dc7f8ac617..9966f9de007f17431d1ea17b0df35a9df770c809 100644 (file)
@@ -60,6 +60,7 @@ struct shaderdata
        LPDIRECT3DTEXTURE9 lpWorkTexture1;
        LPDIRECT3DTEXTURE9 lpWorkTexture2;
        LPDIRECT3DTEXTURE9 lpTempTexture;
+       LPDIRECT3DVOLUMETEXTURE9 lpHq2xLookupTexture;
        LPD3DXEFFECT pEffect;
        // Technique stuff
        D3DXHANDLE m_PreprocessTechnique1EffectHandle;
@@ -82,7 +83,6 @@ struct shaderdata
        LPDIRECT3DTEXTURE9 masktexture;
        int masktexture_w, masktexture_h;
 };
-static LPDIRECT3DVOLUMETEXTURE9 lpHq2xLookupTexture;
 static LPDIRECT3DTEXTURE9 lpPostTempTexture;
 
 #define MAX_SHADERS 10
@@ -777,7 +777,7 @@ static const char *fx20 = {
 "}\n"
 };     
 
-static bool psEffect_LoadEffect (const TCHAR *shaderfile, int full, struct shaderdata *s)
+static bool psEffect_LoadEffect (const TCHAR *shaderfile, int full, struct shaderdata *s, int num)
 {
        int ret = 0;
        LPD3DXEFFECTCOMPILER EffectCompiler = NULL;
@@ -896,9 +896,9 @@ end:
        }
 
        if (ret)
-               write_log (_T("%s: pixelshader filter '%s' enabled\n"), D3DHEAD, tmp);
+               write_log (_T("%s: pixelshader filter '%s':%d enabled\n"), D3DHEAD, tmp, num);
        else
-               write_log (_T("%s: pixelshader filter '%s' failed to initialize\n"), D3DHEAD, tmp);
+               write_log (_T("%s: pixelshader filter '%s':%d failed to initialize\n"), D3DHEAD, tmp, num);
        s->pEffect = effect;
        return effect != NULL;
 }
@@ -959,7 +959,7 @@ static int psEffect_SetMatrices (D3DXMATRIXA16 *matProj, D3DXMATRIXA16 *matView,
        return 1;
 }
 
-static int psEffect_SetTextures (LPDIRECT3DTEXTURE9 lpSource, LPDIRECT3DVOLUMETEXTURE9 lpHq2xLookupTexture, struct shaderdata *s)
+static int psEffect_SetTextures (LPDIRECT3DTEXTURE9 lpSource, struct shaderdata *s)
 {
        HRESULT hr;
        D3DXVECTOR4 fDims, fTexelSize;
@@ -988,7 +988,7 @@ static int psEffect_SetTextures (LPDIRECT3DTEXTURE9 lpSource, LPDIRECT3DVOLUMETE
                }
        }
        if (m_Hq2xLookupTextureHandle) {
-               hr = s->pEffect->SetTexture (m_Hq2xLookupTextureHandle, lpHq2xLookupTexture);
+               hr = s->pEffect->SetTexture (m_Hq2xLookupTextureHandle, s->lpHq2xLookupTexture);
                if (FAILED (hr)) {
                        write_log (_T("%s: SetTextures:lpHq2xLookupTexture %s\n"), D3DHEAD, D3D_ErrorString (hr));
                        return 0;
@@ -1148,19 +1148,27 @@ static int createamigatexture (int w, int h)
                return 0;
        write_log (_T("%s: %d*%d texture allocated, bits per pixel %d\n"), D3DHEAD, w, h, t_depth);
        if (psActive) {
-               D3DLOCKED_BOX lockedBox;
                for (int i = 0; i < MAX_SHADERS; i++) {
+                       int w2, h2;
                        if (shaders[i].type == SHADERTYPE_BEFORE) {
+                               w2 = worktex_width;
+                               h2 = worktex_height;
                                if (!allocextratextures (&shaders[i], w, h))
                                        return 0;
+                       } else {
+                               w2 = window_w;
+                               h2 = window_h;
+                       }
+                       if (shaders[i].type == SHADERTYPE_BEFORE || shaders[i].type == SHADERTYPE_AFTER) {
+                               D3DLOCKED_BOX lockedBox;
+                               if (FAILED (hr = shaders[i].lpHq2xLookupTexture->LockBox (0, &lockedBox, NULL, 0))) {
+                                       write_log (_T("%s: Failed to lock box of volume texture: %s\n"), D3DHEAD, D3D_ErrorString (hr));
+                                       return 0;
+                               }
+                               BuildHq2xLookupTexture (w2, h2, w, h,  (unsigned char*)lockedBox.pBits);
+                               shaders[i].lpHq2xLookupTexture->UnlockBox (0);
                        }
                }
-               if (FAILED (hr = lpHq2xLookupTexture->LockBox (0, &lockedBox, NULL, 0))) {
-                       write_log (_T("%s: Failed to lock box of volume texture: %s\n"), D3DHEAD, D3D_ErrorString (hr));
-                       return 0;
-               }
-               BuildHq2xLookupTexture (worktex_width, worktex_height, w, h,  (unsigned char*)lockedBox.pBits);
-               lpHq2xLookupTexture->UnlockBox (0);
        }
        return 1;
 }
@@ -1196,6 +1204,12 @@ static int createtexture (int ow, int oh, int win_w, int win_h)
                                if (!allocextratextures (&shaders[i], window_w, window_h))
                                        return 0;
                        }
+                       if (psActive) {
+                               if (FAILED (hr = d3ddev->CreateVolumeTexture (256, 16, 256, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &shaders[i].lpHq2xLookupTexture, NULL))) {
+                                       write_log (_T("%s: Failed to create volume texture: %s\n"), D3DHEAD, D3D_ErrorString (hr));
+                                       return 0;
+                               }
+                       }
                }
        }
 
@@ -1208,14 +1222,6 @@ static int createtexture (int ow, int oh, int win_w, int win_h)
        }
        write_log (_T("%s: working texture allocated pre %d*%d, post %d*%d, bits per pixel %d\n"), D3DHEAD, w, h, window_w, window_h, t_depth);
        texelsize.x = 1.0f / w; texelsize.y = 1.0f / h; texelsize.z = 1; texelsize.w = 1; 
-
-       if (psActive) {
-               if (FAILED (hr = d3ddev->CreateVolumeTexture (256, 16, 256, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &lpHq2xLookupTexture, NULL))) {
-                       write_log (_T("%s: Failed to create volume texture: %s\n"), D3DHEAD, D3D_ErrorString (hr));
-                       return 0;
-               }
-
-       }
        return 1;
 }
 
@@ -1878,10 +1884,6 @@ static void freetextures (void)
                texture->Release ();
                texture = NULL;
        }
-       if (lpHq2xLookupTexture) {
-               lpHq2xLookupTexture->Release ();
-               lpHq2xLookupTexture = NULL;
-       }
        for (int i = 0; i < MAX_SHADERS; i++) {
                struct shaderdata *s = &shaders[i];
                if (s->lpTempTexture) {
@@ -1896,6 +1898,10 @@ static void freetextures (void)
                        s->lpWorkTexture2->Release ();
                        s->lpWorkTexture2 = NULL;
                }
+               if (s->lpHq2xLookupTexture) {
+                       s->lpHq2xLookupTexture->Release ();
+                       s->lpHq2xLookupTexture = NULL;
+               }
        }
        if (lpPostTempTexture) {
                lpPostTempTexture->Release();
@@ -1996,14 +2002,14 @@ static int restoredeviceobjects (void)
 
        while (shaderon > 0) {
                shaders[SHADER_POST].type = SHADERTYPE_POST;
-               if (!psEffect_LoadEffect (psEnabled ? _T("_winuae.fx") : _T("_winuae_old.fx"), false, &shaders[SHADER_POST])) {
+               if (!psEffect_LoadEffect (psEnabled ? _T("_winuae.fx") : _T("_winuae_old.fx"), false, &shaders[SHADER_POST], -1)) {
                        shaderon = 0;
                        break;
                }
                for (int i = 0; i < MAX_FILTERSHADERS; i++) {
                        if (currprefs.gfx_filtershader[i][0]) {
                                struct shaderdata *s = allocshaderslot (SHADERTYPE_BEFORE);
-                               if (!psEffect_LoadEffect (currprefs.gfx_filtershader[i], true, s)) {
+                               if (!psEffect_LoadEffect (currprefs.gfx_filtershader[i], true, s, i)) {
                                        currprefs.gfx_filtershader[i][0] = changed_prefs.gfx_filtershader[i][0] = 0;
                                        break;
                                }
@@ -2016,7 +2022,7 @@ static int restoredeviceobjects (void)
                for (int i = 0; i < MAX_FILTERSHADERS; i++) {
                        if (currprefs.gfx_filtershader[i + MAX_FILTERSHADERS][0]) {
                                struct shaderdata *s = allocshaderslot (SHADERTYPE_AFTER);
-                               if (!psEffect_LoadEffect (currprefs.gfx_filtershader[i + MAX_FILTERSHADERS], true, s)) {
+                               if (!psEffect_LoadEffect (currprefs.gfx_filtershader[i + MAX_FILTERSHADERS], true, s, i + MAX_FILTERSHADERS)) {
                                        currprefs.gfx_filtershader[i + MAX_FILTERSHADERS][0] = changed_prefs.gfx_filtershader[i + MAX_FILTERSHADERS][0] = 0;
                                        break;
                                }
@@ -2651,7 +2657,7 @@ static LPDIRECT3DTEXTURE9 processshader(LPDIRECT3DTEXTURE9 srctex, struct shader
        LPDIRECT3DSURFACE9 lpNewRenderTarget;
        LPDIRECT3DTEXTURE9 lpWorkTexture;
 
-       if (!psEffect_SetTextures (srctex, lpHq2xLookupTexture, s))
+       if (!psEffect_SetTextures (srctex, s))
                return NULL;
        if (s->psPreProcess) {
                if (!psEffect_SetMatrices (&m_matPreProj, &m_matPreView, &m_matPreWorld, s))
diff --git a/od-win32/inttypes.h b/od-win32/inttypes.h
new file mode 100644 (file)
index 0000000..e69de29
index 3bf98e1baa6371995a91ac0e251d99d1995cc362..063855c51b9204058eb9142f762d7eb63a0b8c0f 100644 (file)
@@ -415,7 +415,10 @@ void my_kbd_handler (int keyboard, int scancode, int newstate)
        
        if (newstate) {
                int defaultguikey = amode ? DIK_F12 : DIK_NUMLOCK;
-               if (currprefs.win32_guikey >= 0) {
+               if (currprefs.win32_guikey >= 0x100) {
+                       if (scancode == DIK_F12)
+                               return;
+               } else if (currprefs.win32_guikey >= 0) {
                        if (scancode_new == defaultguikey && currprefs.win32_guikey != scancode_new) {
                                scancode = 0;
                                if (specialpressed () && ctrlpressed() && shiftpressed() && altpressed ())
index 4c2b485b64b696299e690fad721bba90b413eb09..88997cd1c1974641d61cd6bcffd3e37324922cf1 100644 (file)
 #define IDC_FPU1                        1225
 #define IDC_FPU2                        1226
 #define IDC_FPU3                        1227
+#define IDC_FPU_UNIMPLEMENTED           1228
 #define IDC_SOUNDSETTINGS               1229
 #define IDC_8BIT                        1230
 #define IDC_16BIT                       1231
index ee08fe0c6b7770f1b7522bc36babfddf35c7d721..4c6ea1e9db73f06bf02d33543f60357df928a560 100644 (file)
@@ -192,54 +192,56 @@ BEGIN
     EDITTEXT        IDC_MBRAM2,240,171,40,12,ES_CENTER | ES_READONLY
 END
 
-IDD_CPU DIALOGEX 0, 0, 396, 259
+IDD_CPU DIALOGEX 0, 0, 396, 270
 STYLE DS_LOCALEDIT | DS_SETFONT | DS_3DLOOK | DS_CONTROL | WS_CHILD
 FONT 8, "MS Sans Serif", 0, 0, 0x0
 BEGIN
-    GROUPBOX        "CPU",IDC_STATIC,1,1,99,160,BS_LEFT
+    GROUPBOX        "CPU",IDC_STATIC,1,1,109,160,BS_LEFT
     CONTROL         "68000",IDC_CPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,8,15,63,10
     CONTROL         "68010",IDC_CPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,29,63,10
     CONTROL         "68020",IDC_CPU2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,42,63,10
     CONTROL         "68030",IDC_CPU3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,56,63,10
     CONTROL         "68040",IDC_CPU4,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,70,63,10
     CONTROL         "68060",IDC_CPU5,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,84,63,10
-    CONTROL         "24-bit addressing",IDC_COMPATIBLE24,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,101,87,11
+    CONTROL         "24-bit addressing",IDC_COMPATIBLE24,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,101,97,12
     CONTROL         "More compatible [] Emulate 68000's prefetch registers. More compatible but slower.",IDC_COMPATIBLE,
-                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,115,87,11
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,115,97,11
     CONTROL         "JIT [] Enable just-in-time CPU emulator. Significantly increases the speed of the CPU emulation. Requires 68020 or higher CPU.",IDC_JITENABLE,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,128,87,11
-    CONTROL         "MMU [] 68030 or 68040 MMU emulation. Not compatible with JIT.",IDC_MMUENABLE,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,142,87,11
-    GROUPBOX        "CPU Emulation Speed",IDC_STATIC,110,3,284,96
-    CONTROL         "Fastest possible",IDC_CS_HOST,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_GROUP | WS_TABSTOP,115,18,195,10
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,128,97,11
+    CONTROL         "MMU [] 68030, 68040 and 68060 MMU emulation. Not compatible with JIT.",IDC_MMUENABLE,
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,142,96,11
+    GROUPBOX        "CPU Emulation Speed",IDC_STATIC,120,3,274,96
+    CONTROL         "Fastest possible",IDC_CS_HOST,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_GROUP | WS_TABSTOP,125,18,195,10
     CONTROL         "Approximate A500/A1200 or cycle-exact",IDC_CS_68000,
-                    "Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,115,32,195,10
-    CONTROL         "Slider1",IDC_SPEED,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,116,50,192,20
-    RTEXT           "CPU Speed",IDC_STATIC,115,78,55,9,SS_CENTERIMAGE
-    EDITTEXT        IDC_CPUTEXT,178,77,30,12,ES_CENTER | ES_READONLY
-    RTEXT           "CPU Idle",IDC_STATIC,213,78,62,9
-    CONTROL         "",IDC_CPUIDLE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,282,73,69,21
-    GROUPBOX        "Cycle-exact CPU Emulation Speed",IDC_STATIC,110,105,284,55
-    RTEXT           "CPU Frequency",IDC_STATIC,113,129,67,10,SS_CENTERIMAGE
-    COMBOBOX        IDC_CPU_FREQUENCY,189,128,46,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    EDITTEXT        IDC_CPU_FREQUENCY2,242,127,70,15
-    GROUPBOX        "FPU",IDC_STATIC,1,167,99,91,BS_LEFT
+                    "Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,125,32,195,10
+    CONTROL         "Slider1",IDC_SPEED,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,126,50,192,20
+    RTEXT           "CPU Speed",IDC_STATIC,125,78,55,9,SS_CENTERIMAGE
+    EDITTEXT        IDC_CPUTEXT,188,77,30,12,ES_CENTER | ES_READONLY
+    RTEXT           "CPU Idle",IDC_STATIC,223,78,62,9
+    CONTROL         "",IDC_CPUIDLE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,292,73,69,21
+    GROUPBOX        "Cycle-exact CPU Emulation Speed",IDC_STATIC,120,105,274,55
+    RTEXT           "CPU Frequency",IDC_STATIC,123,129,67,10,SS_CENTERIMAGE
+    COMBOBOX        IDC_CPU_FREQUENCY,199,128,46,75,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    EDITTEXT        IDC_CPU_FREQUENCY2,252,127,70,15
+    GROUPBOX        "FPU",IDC_STATIC,1,167,109,99,BS_LEFT
     CONTROL         "None",IDC_FPU0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,8,182,87,10
     CONTROL         "68881",IDC_FPU1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,196,87,10
     CONTROL         "68882",IDC_FPU2,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,209,87,10
-    CONTROL         "CPU internal",IDC_FPU3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,223,87,10
+    CONTROL         "CPU internal",IDC_FPU3,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8,223,93,10
     CONTROL         "More compatible [] More compatible but slower FPU emulation.",IDC_COMPATIBLE_FPU,
-                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,242,87,10
-    GROUPBOX        "Advanced JIT Settings",IDC_STATIC,110,167,284,91
-    RTEXT           "Cache size:",IDC_STATIC,117,187,66,10,SS_CENTERIMAGE
-    CONTROL         "Slider1",IDC_CACHE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,186,181,115,20
-    EDITTEXT        IDC_CACHETEXT,305,186,30,12,ES_CENTER | ES_READONLY
-    CONTROL         "Hard flush",IDC_HARDFLUSH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,214,84,11
-    CONTROL         "Constant jump",IDC_CONSTJUMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,228,84,11
-    CONTROL         "FPU support",IDC_JITFPU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,242,84,11
-    CONTROL         "No flags",IDC_NOFLAGS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,217,214,68,11
-    CONTROL         "Direct",IDC_TRUST0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,289,214,72,10
-    CONTROL         "Indirect",IDC_TRUST1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,289,228,72,10
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,239,94,10
+    GROUPBOX        "Advanced JIT Settings",IDC_STATIC,120,167,274,99
+    RTEXT           "Cache size:",IDC_STATIC,127,187,66,10,SS_CENTERIMAGE
+    CONTROL         "Slider1",IDC_CACHE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_TOP | WS_TABSTOP,196,181,115,20
+    EDITTEXT        IDC_CACHETEXT,315,186,30,12,ES_CENTER | ES_READONLY
+    CONTROL         "Hard flush",IDC_HARDFLUSH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,130,214,84,11
+    CONTROL         "Constant jump",IDC_CONSTJUMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,130,228,84,11
+    CONTROL         "FPU support",IDC_JITFPU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,130,242,84,11
+    CONTROL         "No flags",IDC_NOFLAGS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,227,214,68,11
+    CONTROL         "Direct",IDC_TRUST0,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,299,214,72,10
+    CONTROL         "Indirect",IDC_TRUST1,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,299,228,72,10
+    CONTROL         "Unimplemented emu [] Emulate 68040/060 FPU unimplemented instructions",IDC_FPU_UNIMPLEMENTED,
+                    "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,8,252,96,10
 END
 
 IDD_FLOPPY DIALOGEX 0, 0, 396, 261
@@ -1133,8 +1135,8 @@ END
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 2,5,2,0
- PRODUCTVERSION 2,5,2,0
+ FILEVERSION 2,6,1,0
+ PRODUCTVERSION 2,6,1,0
  FILEFLAGSMASK 0x3fL
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -1150,12 +1152,12 @@ BEGIN
         BLOCK "040904b0"
         BEGIN
             VALUE "FileDescription", "WinUAE"
-            VALUE "FileVersion", "2.6.0.0"
+            VALUE "FileVersion", "2.6.1.0"
             VALUE "InternalName", "WinUAE"
             VALUE "LegalCopyright", "© 1996-2013 under the GNU Public License (GPL)"
             VALUE "OriginalFilename", "WinUAE.exe"
             VALUE "ProductName", "WinUAE"
-            VALUE "ProductVersion", "2.6.0.0"
+            VALUE "ProductVersion", "2.6.1.0"
         END
     END
     BLOCK "VarFileInfo"
index eb55c65c66049d22e41b9ee7d9202dd02fe09d9f..3d161fd3c5dd4b41093737b1eb694ed0048df6f7 100644 (file)
@@ -1133,8 +1133,8 @@ END
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 2,5,2,0
- PRODUCTVERSION 2,5,2,0
+ FILEVERSION 2,6,0,0
+ PRODUCTVERSION 2,6,0,0
  FILEFLAGSMASK 0x3fL
 #ifdef _DEBUG
  FILEFLAGS 0x1L
index 2dfee1e8185cee1764d6676a2345b2de0ca68e5e..a4299752efe6f843413c5fa8381087556f43370d 100644 (file)
@@ -2461,7 +2461,7 @@ void logging_init (void)
                SystemInfo.wProcessorArchitecture, SystemInfo.wProcessorLevel, SystemInfo.wProcessorRevision,
                SystemInfo.dwNumberOfProcessors, filedate);
        write_log (_T("\n(c) 1995-2001 Bernd Schmidt   - Core UAE concept and implementation.")
-               _T("\n(c) 1998-2012 Toni Wilen      - Win32 port, core code updates.")
+               _T("\n(c) 1998-2013 Toni Wilen      - Win32 port, core code updates.")
                _T("\n(c) 1996-2001 Brian King      - Win32 port, Picasso96 RTG, and GUI.")
                _T("\n(c) 1996-1999 Mathias Ortmann - Win32 port and bsdsocket support.")
                _T("\n(c) 2000-2001 Bernd Meyer     - JIT engine.")
@@ -4193,11 +4193,13 @@ static void WIN32_HandleRegistryStuff (void)
        fetch_path (_T("ConfigurationPath"), path, sizeof (path) / sizeof (TCHAR));
        path[_tcslen (path) - 1] = 0;
        if (GetFileAttributes (path) == 0xffffffff) {
+               TCHAR path2[MAX_DPATH];
+               _tcscpy (path2, path);
                createdir (path);
                _tcscat (path, _T("\\Host"));
                createdir (path);
-               fetch_path (_T("ConfigurationPath"), path, sizeof (path) / sizeof (TCHAR));
-               _tcscat (path, _T("Hardware"));
+               _tcscpy (path, path2);
+               _tcscat (path, _T("\\Hardware"));
                createdir (path);
        }
        fetch_path (_T("StatefilePath"), path, sizeof (path) / sizeof (TCHAR));
index ae9e73c924d7a07f483d4ed97b4470c64695f6d1..0c422d0bc9c17ca0bb07753a12950782c71b8981 100644 (file)
 #define GETBDM(x) (((x) - ((x / 10000) * 10000)) / 100)
 #define GETBDD(x) ((x) % 100)
 
-#define WINUAEPUBLICBETA 0
+#define WINUAEPUBLICBETA 1
 #define LANG_DLL 1
 
 #if WINUAEPUBLICBETA
-#define WINUAEBETA _T("")
+#define WINUAEBETA _T("1")
 #else
 #define WINUAEBETA _T("")
 #endif
-#define WINUAEDATE MAKEBD(2013, 5, 16)
+#define WINUAEDATE MAKEBD(2013, 6, 3)
 #define WINUAEEXTRA _T("")
 //#define WINUAEEXTRA _T("AmiKit Preview")
 //#define WINUAEEXTRA _T("Amiga Forever Edition")
index fcf05f112002f3c95363f9b377bd47342c4ed1cf..b760030c46137c051336743db451049dca6d6cb8 100644 (file)
@@ -3420,7 +3420,7 @@ static void set_lventry_input (HWND list, int index)
        int i, sub, port;
        TCHAR name[256];
        TCHAR custom[MAX_DPATH];
-       TCHAR af[32], toggle[32];
+       TCHAR af[32], toggle[32], invert[32];
        uae_u64 flags;
 
        inputdevice_get_mapping (input_selected_device, index, &flags, &port, name, custom, input_selected_sub_num);
@@ -3439,15 +3439,19 @@ static void set_lventry_input (HWND list, int index)
        else if (flags & IDEV_MAPPED_AUTOFIRE_POSSIBLE)
                WIN32GUI_LoadUIString (IDS_NO, toggle, sizeof toggle / sizeof (TCHAR));
        else
-               _tcscpy (toggle, _T("-"));      
+               _tcscpy (toggle, _T("-"));
        if (port > 0) {
                TCHAR tmp[256];
                _tcscpy (tmp, name);
                _stprintf (name, _T("[PORT%d] %s"), port, tmp);
        }
+       _tcscpy (invert, _T("-"));
+       if (flags & IDEV_MAPPED_INVERT)
+               WIN32GUI_LoadUIString (IDS_YES, invert, sizeof invert / sizeof (TCHAR));
        ListView_SetItemText (list, index, 1, custom[0] ? custom : name);
        ListView_SetItemText (list, index, 2, af);
        ListView_SetItemText (list, index, 3, toggle);
+       ListView_SetItemText (list, index, 4, invert);
        _tcscpy (name, _T("-"));        
        if (flags & IDEV_MAPPED_QUALIFIER_MASK) {
                TCHAR *p;
@@ -3462,14 +3466,14 @@ static void set_lventry_input (HWND list, int index)
                        }
                }
        }
-       ListView_SetItemText (list, index, 4, name);
+       ListView_SetItemText (list, index, 5, name);
        sub = 0;
        for (i = 0; i < MAX_INPUT_SUB_EVENT; i++) {
                if (inputdevice_get_mapping (input_selected_device, index, &flags, NULL, name, custom, i) || custom[0])
                        sub++;
        }
        _stprintf (name, _T("%d"), sub);
-       ListView_SetItemText (list, index, 5, name);
+       ListView_SetItemText (list, index, 6, name);
 }
 
 static void update_listview_input (HWND hDlg)
@@ -3622,7 +3626,7 @@ static void update_listview_inputmap (HWND hDlg, int deleteindex)
 static int clicked_entry = -1;
 
 #define LOADSAVE_COLUMNS 2
-#define INPUT_COLUMNS 6
+#define INPUT_COLUMNS 7
 #define HARDDISK_COLUMNS 8
 #define DISK_COLUMNS 3
 #define MISC2_COLUMNS 2
@@ -3731,8 +3735,9 @@ void InitializeListView (HWND hDlg)
                WIN32GUI_LoadUIString (IDS_INPUTAMIGAEVENT, column_heading[1], MAX_COLUMN_HEADING_WIDTH);
                WIN32GUI_LoadUIString (IDS_INPUTAUTOFIRE, column_heading[2], MAX_COLUMN_HEADING_WIDTH);
                WIN32GUI_LoadUIString (IDS_INPUTTOGGLE, column_heading[3], MAX_COLUMN_HEADING_WIDTH);
-               WIN32GUI_LoadUIString (IDS_INPUTQUALIFIER, column_heading[4], MAX_COLUMN_HEADING_WIDTH);
-               _tcscpy (column_heading[5], _T("#"));
+               _tcscpy (column_heading[4], _T("Invert"));
+               WIN32GUI_LoadUIString (IDS_INPUTQUALIFIER, column_heading[5], MAX_COLUMN_HEADING_WIDTH);
+               _tcscpy (column_heading[6], _T("#"));
                list = GetDlgItem (hDlg, IDC_INPUTLIST);
 
        } else if (hDlg == pages[INPUTMAP_ID]) {
@@ -3835,7 +3840,8 @@ void InitializeListView (HWND hDlg)
                listview_column_width[2] = 65;
                listview_column_width[3] = 65;
                listview_column_width[4] = 65;
-               listview_column_width[5] = 30;
+               listview_column_width[5] = 65;
+               listview_column_width[6] = 30;
                update_listview_input (hDlg);
 
        } else if (lv_type == LV_INPUTMAP) {
@@ -8466,6 +8472,7 @@ static void enable_for_cpudlg (HWND hDlg)
        ew (hDlg, IDC_JITENABLE, jitenable);
        ew (hDlg, IDC_COMPATIBLE, !workprefs.cpu_cycle_exact);
        ew (hDlg, IDC_COMPATIBLE_FPU, workprefs.fpu_model > 0);
+       ew (hDlg, IDC_FPU_UNIMPLEMENTED, workprefs.fpu_model);
 #if 0
        ew (hDlg, IDC_CPU_MULTIPLIER, workprefs.cpu_cycle_exact);
 #endif
@@ -8500,6 +8507,7 @@ static void values_to_cpudlg (HWND hDlg)
        CheckDlgButton (hDlg, IDC_COMPATIBLE, workprefs.cpu_compatible);
        CheckDlgButton (hDlg, IDC_COMPATIBLE24, workprefs.address_space_24);
        CheckDlgButton (hDlg, IDC_COMPATIBLE_FPU, workprefs.fpu_strict);
+       CheckDlgButton (hDlg, IDC_FPU_UNIMPLEMENTED, !workprefs.fpu_no_unimplemented);
        SendDlgItemMessage (hDlg, IDC_CPUIDLE, TBM_SETPOS, TRUE, workprefs.cpu_idle == 0 ? 0 : 12 - workprefs.cpu_idle / 15);
        cpu = (workprefs.cpu_model - 68000) / 10;
        if (cpu >= 5)
@@ -8548,6 +8556,7 @@ static void values_from_cpudlg (HWND hDlg)
 
        workprefs.cpu_compatible = workprefs.cpu_cycle_exact | (ischecked (hDlg, IDC_COMPATIBLE) ? 1 : 0);
        workprefs.fpu_strict = ischecked (hDlg, IDC_COMPATIBLE_FPU) ? 1 : 0;
+       workprefs.fpu_no_unimplemented = ischecked (hDlg, IDC_FPU_UNIMPLEMENTED) ? 0 : 1;
        workprefs.address_space_24 = ischecked (hDlg, IDC_COMPATIBLE24) ? 1 : 0;
        workprefs.m68k_speed = ischecked (hDlg, IDC_CS_HOST) ? -1 : 0;
        workprefs.m68k_speed_throttle = SendMessage (GetDlgItem (hDlg, IDC_SPEED), TBM_GETPOS, 0, 0) * 100;
@@ -13464,6 +13473,25 @@ static void input_qualifiers (HWND hDlg)
                name, custom, flags, -1, input_selected_sub_num);
 #endif
 }
+
+static void input_invert (void)
+{
+       int evt;
+       uae_u64 flags;
+       TCHAR name[256];
+       TCHAR custom[MAX_DPATH];
+
+       if (input_selected_device < 0 || input_selected_widget < 0)
+               return;
+       evt = inputdevice_get_mapping (input_selected_device, input_selected_widget,
+               &flags, NULL, name, custom, input_selected_sub_num);
+       if (evt <= 0)
+               return;
+       flags ^= IDEV_MAPPED_INVERT;
+       inputdevice_set_mapping (input_selected_device, input_selected_widget,
+               name, custom, flags, -1, input_selected_sub_num);
+}
+
 static void input_toggletoggle (void)
 {
        int evt;
@@ -13610,8 +13638,10 @@ static INT_PTR CALLBACK InputDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM
                                        } else if (column == 3 && entry == oldentry) {
                                                input_toggletoggle ();
                                        } else if (column == 4 && entry == oldentry) {
+                                               input_invert ();
+                                       } else if (column == 5 && entry == oldentry) {
                                                input_qualifiers (hDlg);
-                                       } else if (column == 5) {
+                                       } else if (column == 6) {
                                                input_selected_sub_num++;
                                                if (input_selected_sub_num >= MAX_INPUT_SUB_EVENT)
                                                        input_selected_sub_num = 0;
index c831dd704af3ffa22c146b42efa3436fd9feee31..58258992acfb72807d5556a0456c8459e0a7a7e3 100644 (file)
     <ClCompile>
       <AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\include;..\..;..\;..\resources;..\osdep;..\sounddep;..\..\prowizard\include;..\tun;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\include;..\..;..\;..\resources;..\osdep;..\sounddep;..\..\prowizard\include;..\..\slirp;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WINVER=0x0500;_DEBUG;WIN32_IE=0x0700;WIN32;_CRT_SECURE_NO_WARNINGS;D3D_DEBUG_INFO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <PreprocessToFile>false</PreprocessToFile>
       <PreprocessSuppressLineNumbers>false</PreprocessSuppressLineNumbers>
index 93a5175c0c722e2e0bf9f5468af4f302801d4b39..c1c7459ddad142639a229eb6966d5d420dc81cf0 100644 (file)
@@ -44,6 +44,9 @@
     <Filter Include="unpackers\chd">
       <UniqueIdentifier>{dd8bf794-572a-4d08-9cae-b280eb493e54}</UniqueIdentifier>
     </Filter>
+    <Filter Include="slirp">
+      <UniqueIdentifier>{7abef0b5-1d8e-4f43-baa6-ff61760bc330}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\ahidsound_dsonly.cpp">
index b8386a6ddc7ea31d03fc5039942e592de24f5f46..cad0528d09d9897814ffc85fa847d302cb5e374f 100644 (file)
@@ -1,6 +1,37 @@
 
 - restore only single input target to default.
 
+- KS 1.3 OFS hardfile fix. Apparently 1.3 L:FastFileSystem does not support OFS.
+  Use ROM built-in FS if OFS partition and hardfile FileSys path is empty. (2.6.0)
+- Added emulation of unimplemented FPU instruction exceptions.
+  New FPU "Unimplemented emu" option added to GUI: ticked = emulate all instructions
+  (old behavior), Unticked = instructions not emulated, unimplemented instructions
+  generate exceptions: 
+  6888x: S or D variants are not supported (FSADD, FDADD etc..), 68040/060 only.
+  68040: usual removed instructions and FINT/FINTZ
+  68060: usual removed instructions, FTRAP, FDBcc and FScc. FINT and FINTZ are back.
+  68040/060 unimplemented datatype (packed decimal) is still emulated normally because
+  unimplemented datatype exception requires special pre and post FPU-only exceptions.
+  (This is not guaranteed to be perfect, not that easy to test fully)
+- Hardware/software reset didn't reset SCSI emulation fully.
+- A3000 KS 1.4 scsi driver wasn't fully compatible with SCSI emulation, write command
+  got stuck in never ending loop. Only reads worked. (WD SCSI chip is quite flexible,
+  it allows multiple and very different ways to send and process SCSI commands)
+- Non-prefetch CPU mode RESET/JMP (An) combination detection did only check if it was
+  located in chip ram, it didn't check Z2 Fast.
+- Input panel Invert option added. Button and key presses become releases and vice versa.
+  Joystick and mouse (if relative) movement is inverted.
+- winuaeenforcer aros m68k debug.library segtracker-like support added.
+- Added Tf debugger command that lists FileSystem.resource contents.
+- Added system memory list dump option to debugger ('Tm')
+- Merge >2M chip RAM with original chip ram pool instead of creating new one.
+- Bitplane data (usually horizontally repeating) was visible if sprites were visible
+  in border regions. (2.6.0)
+- Do not emulate CIA TOD bug if MMU emulation is enabled, workaround for Amix boot hang.
+  (Until real problem is found)
+
+2.6.0
+
 Beta 21 (RC2)
 
 - Ultimate Body Blows CD32 pad button problem fix. Hopefully this last minute update does not