]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
imported winuaesrc1330b7.zip
authorToni Wilen <twilen@winuae.net>
Sat, 28 Oct 2006 12:00:07 +0000 (15:00 +0300)
committerToni Wilen <twilen@winuae.net>
Mon, 22 Feb 2010 19:29:57 +0000 (21:29 +0200)
108 files changed:
audio.c
blitter.c
catweasel.c
cia.c
core.cw4.c [new file with mode: 0755]
custom.c
expansion.c
filesys.c
gencpu.c
include/autoconf.h
include/catweasel.h
include/memory.h
memory.c
moduleripper.c
newcpu.c
od-win32/bsdsock.c
od-win32/fsdb_win32.c
od-win32/ioport.c
od-win32/machdep/rpt.h
od-win32/mman.c
od-win32/sounddep/sound.c
od-win32/win32.c
od-win32/win32.h
od-win32/win32gfx.c
od-win32/win32gui.c
od-win32/winuae_msvc/winuae_msvc.vcproj
prowizard/INSTALL [deleted file]
prowizard/README [deleted file]
prowizard/_types_ [deleted file]
prowizard/docs/COPYING [deleted file]
prowizard/docs/CREDITS [deleted file]
prowizard/docs/KNOWN_FORMATS [deleted file]
prowizard/docs/MISC [deleted file]
prowizard/docs/TODO [deleted file]
prowizard/docs/changelog [deleted file]
prowizard/makefile [deleted file]
prowizard/makefile.amiga [deleted file]
prowizard/makefile.mingwin32 [deleted file]
prowizard/misc/misc.c
prowizard/prowiz.c
prowizard/rippers/AC1D_packer.c
prowizard/rippers/AMOS-MusicBank.c
prowizard/rippers/ChipTracker.c
prowizard/rippers/Crunchmania-Address.c
prowizard/rippers/Crunchmania-Simple.c [new file with mode: 0755]
prowizard/rippers/DigitalIllusion.c
prowizard/rippers/DoubleAction.c
prowizard/rippers/EurekaPacker.c
prowizard/rippers/FC-M-Packer.c
prowizard/rippers/FuchsTracker.c
prowizard/rippers/FuzzacPacker.c
prowizard/rippers/GNUPacker12.c [new file with mode: 0755]
prowizard/rippers/GPMO.c
prowizard/rippers/GameMusicCreator.c
prowizard/rippers/GnuPlayer.c
prowizard/rippers/HeatseekerMC10.c
prowizard/rippers/HornetPacker.c
prowizard/rippers/KefrensSoundMachine.c
prowizard/rippers/ModuleProtector.c
prowizard/rippers/Mugician.c [new file with mode: 0755]
prowizard/rippers/Newtron.c
prowizard/rippers/NoiseFromHeaven.c
prowizard/rippers/NoisePacker1.c
prowizard/rippers/NoisePacker2.c
prowizard/rippers/NoisePacker3.c
prowizard/rippers/NoiseRunner.c
prowizard/rippers/PhaPacker.c
prowizard/rippers/PolkaPacker.c
prowizard/rippers/PowerMusic.c
prowizard/rippers/ProPacker10.c
prowizard/rippers/ProPacker21.c
prowizard/rippers/ProPacker30.c
prowizard/rippers/Promizer01.c
prowizard/rippers/Promizer10c.c
prowizard/rippers/Promizer18a.c
prowizard/rippers/Promizer20.c
prowizard/rippers/Promizer40.c
prowizard/rippers/Prorunner10.c
prowizard/rippers/Prorunner20.c
prowizard/rippers/QuadraComposer.c
prowizard/rippers/SGT-Packer.c [new file with mode: 0755]
prowizard/rippers/SkytPacker.c
prowizard/rippers/SoundFX.c
prowizard/rippers/SoundTracker26.c
prowizard/rippers/StartrekkerPack.c
prowizard/rippers/StimPacker.c
prowizard/rippers/TMK.c
prowizard/rippers/TetraPack22.c
prowizard/rippers/TheDarkDemon.c
prowizard/rippers/ThePlayer22a.c
prowizard/rippers/ThePlayer30a.c
prowizard/rippers/ThePlayer40.c
prowizard/rippers/ThePlayer41a.c
prowizard/rippers/ThePlayer50a.c
prowizard/rippers/ThePlayer60a.c
prowizard/rippers/ThePlayer61a.c
prowizard/rippers/TrackerPacker1.c
prowizard/rippers/TrackerPacker2.c
prowizard/rippers/TrackerPacker3.c
prowizard/rippers/TreasurePattern.c [new file with mode: 0755]
prowizard/rippers/UnicTracker.c
prowizard/rippers/UnicTracker2.c
prowizard/rippers/WantonPacker.c
prowizard/rippers/XannPlayer.c
prowizard/rippers/ZenPacker.c
prowizard/rippers/extern.h
prowizard/rippers/globals.h
zfile.c

diff --git a/audio.c b/audio.c
index 8f55f9ba2935100dd645da8f722b66a6762d23f0..c485ee8ea721c0c46876e44465bd74a4d54b22b5 100755 (executable)
--- a/audio.c
+++ b/audio.c
@@ -1566,6 +1566,8 @@ void AUDxPER (int nr, uae_u16 v)
 
     if (per < maxhpos * CYCLE_UNIT / 2 && currprefs.produce_sound < 3)
        per = maxhpos * CYCLE_UNIT / 2;
+    else if (per < 4 * CYCLE_UNIT)
+       per = 4 * CYCLE_UNIT;
 
    if (audio_channel[nr].per == PERIOD_MAX - 1 && per != PERIOD_MAX - 1) {
        audio_channel[nr].evtime = CYCLE_UNIT;
index 380b7d3d160950c6f1d47b9b8a5dc6149d83596b..97773884a33de5885d17344a52ce47fd1e09c334 100755 (executable)
--- a/blitter.c
+++ b/blitter.c
@@ -86,15 +86,15 @@ Confirmed blitter 
 F 4*4*ABC- ABCD
 E 4*4*ABC- ABC-
 D 3*4 AB-  ABD
-C 3*4 AB-  AB-
+C 3*3 AB-  AB-
 B 3*3*AC-  ACD
-A 3*3*AC-  AC-
+A 2*2*AC   AC
 9 2*3 A-   AD
-8 2*3 A-   A-
+8 2*2 A-   A-
 7 4 4 -BC- -BCD
 6 4 4 -BC- -BC-
 5 3 4 -B-  -BD
-4 3 4 -B-  -B-
+4 3 3 -B-  -B-
 3 3 3 -C-  -CD
 2 3 3 -C-  -C-
 1 2 3 -D   -D
@@ -136,7 +136,7 @@ static const int blit_cycle_diagram[][10] =
     { 3, 4, 0,2,3,4, 2,3,0 },  /* 7 */
     { 0, 2, 1,0 },             /* 8 */
     { 2, 2, 1,4, 1,0 },                /* 9 */
-    { 0, 3, 1,3,0 },           /* A */
+    { 0, 2, 1,3 },             /* A */
     { 3, 3, 1,3,4, 1,3,0 },    /* B */
     { 2, 3, 1,2,0, 1,2 },      /* C */
     { 3, 3, 1,2,4, 1,2,0 },    /* D */
@@ -152,15 +152,15 @@ static const int blit_cycle_diagram_fill[][10] =
     { 0, 3, 3,5,4 },           /* 1 */
     { 0, 3, 0,3,0 },           /* 2 */
     { 2, 3, 3,5,4, 3,0 },      /* 3 */
-    { 0, 4, 0,2,5,0 },         /* 4 */
+    { 0, 3, 0,2,5 },           /* 4 */
     { 3, 4, 0,2,5,4, 2,0,0 },  /* 5 */
     { 0, 4, 2,3,5,0 },         /* 6 */
     { 3, 4, 2,3,5,4, 2,3,0 },  /* 7 */
-    { 0, 3, 1,5,0 },           /* 8 */
+    { 0, 2, 1,5 },             /* 8 */
     { 2, 3, 1,5,4, 1,0},       /* 9 */
-    { 0, 3, 1,3,5, },          /* A */
+    { 0, 2, 1,3 },             /* A */
     { 3, 3, 1,3,4, 1,3,0 },    /* B */
-    { 2, 4, 1,2,5,0, 1,2 },    /* C */
+    { 2, 3, 1,2,5, 1,2 },      /* C */
     { 3, 4, 1,2,5,4, 1,2,0 },  /* D */
     { 0, 4, 1,2,3,0 },         /* E */
     { 4, 4, 1,2,3,4, 1,2,3,0 } /* F */
@@ -1041,7 +1041,7 @@ void do_blitter (int hpos)
        write_log("blitstart: v=%03.3d h=%03.3d %dx%d %d (%d) d=%d f=%02.2X n=%d pc=%p l=%d dma=%04.4X\n",
            vpos, hpos, blt_info.hblitsize, blt_info.vblitsize, cycles, blit_ch,
            blitdesc ? 1 : 0, blitfill,
-           dmaen(DMA_BLITPRI) ? 1 : 0, m68k_getpc(), blitline, dmacon);
+           dmaen(DMA_BLITPRI) ? 1 : 0, M68K_GETPC, blitline, dmacon);
        blitter_dump ();
     }
 #endif
index 1ca291b090c144de9ed864cb203c6bf49d403a00..8c3d1c967c68f46796b917aaf3433bdee0384514 100755 (executable)
@@ -1,4 +1,6 @@
 
+#include <stdio.h>
+
 #include "sysconfig.h"
 #include "sysdeps.h"
 
@@ -9,6 +11,7 @@
 #include "ioport.h"
 #include "catweasel.h"
 #include "uae.h"
+#include "zfile.h"
 
 #include <catweasl_usr.h>
 
@@ -100,6 +103,7 @@ static uae_u8 get_buttons(void)
 
 int catweasel_read_mouse(int port, int *dx, int *dy, int *buttons)
 {
+    return 0;
     if (!cwc.can_mouse)
        return 0;
     *dx = mouse_x[port];
@@ -286,6 +290,188 @@ void catweasel_do_bput (uaecptr   addr, uae_u32 b)
     //write_log ("P %02.2X %02.2X %d\n", (uae_u8)addr, (uae_u8)b, did_read);
 }
 
+#include "core.cw4.c"
+
+static int cw_config_done(void)
+{
+    return ioport_read (cwc.iobase + 7) & 4;
+}
+static int cw_fpga_ready(void)
+{
+    return ioport_read (cwc.iobase + 7) & 8;
+}
+static void cw_resetFPGA(void)
+{
+    ioport_write (cwc.iobase + 2, 227);
+    ioport_write (cwc.iobase + 3, 0);
+    sleep_millis (10);
+    ioport_write (cwc.iobase + 3, 65);
+}
+
+int catweasel4_configure(void)
+{
+    struct zfile *f;
+
+    ioport_write (cwc.iobase, 241);
+    ioport_write (cwc.iobase + 1, 0);
+    ioport_write (cwc.iobase + 2, 227);
+    ioport_write (cwc.iobase + 3, 65);
+    ioport_write (cwc.iobase + 4, 0);
+    ioport_write (cwc.iobase + 5, 0);
+    ioport_write (cwc.iobase + 0x29, 0);
+    ioport_write (cwc.iobase + 0x2b, 0);
+
+    if (cw_config_done()) {
+       write_log ("CW: FPGA already configured, skipping core upload\n");
+       goto ok;
+    }
+    cw_resetFPGA();
+    sleep_millis(10);
+    if (cw_config_done()) {
+       write_log ("CW: FPGA failed to reset!\n");
+       return 0;
+    }
+    f = zfile_fopen("core.cw4", "rb");
+    if (!f) {
+       f = zfile_fopen_data ("core.cw4.gz", core_len, core);
+       f = zfile_gunzip (f);
+    }
+    write_log ("CW: starting core upload, this will take few seconds\n");
+    for (;;) {
+       uae_u8 b;
+       if (zfile_fread (&b, 1, 1, f) != 1)
+           break;
+       ioport_write (cwc.iobase + 3, (b & 1) ? 67 : 65);
+       while (!cw_fpga_ready());
+       ioport_write (cwc.iobase + 192, b);
+    }
+    if (!cw_config_done()) {
+       write_log ("CW: FPGA didn't accept the core!\n");
+       cw_resetFPGA();
+       return 0;
+    }
+    sleep_millis(10);
+    write_log ("CW: core uploaded successfully\n");
+ok:
+    return 1;
+}
+
+#include <setupapi.h>
+#include <cfgmgr32.h>
+
+#define PCI_CW_MK3 "PCI\\VEN_E159&DEV_0001&SUBSYS_00021212"
+#define PCI_CW_MK4 "PCI\\VEN_E159&DEV_0001&SUBSYS_00035213"
+#define PCI_CW_MK4_BUG "PCI\\VEN_E159&DEV_0001&SUBSYS_00025213"
+
+extern int os_64bit;
+int force_direct_catweasel;
+static int direct_detect(void)
+{
+    HDEVINFO devs;
+    SP_DEVINFO_LIST_DETAIL_DATA devInfoListDetail;
+    SP_DEVINFO_DATA devInfo;
+    int devIndex;
+    int cw = 0;
+
+    if (!os_64bit && !force_direct_catweasel)
+       return 0;
+    devs = SetupDiGetClassDevsEx(NULL, NULL, NULL, DIGCF_ALLCLASSES | DIGCF_PRESENT, NULL, NULL, NULL);
+    if (devs == INVALID_HANDLE_VALUE)
+       return 0;
+    devInfoListDetail.cbSize = sizeof(devInfoListDetail);
+    if(SetupDiGetDeviceInfoListDetail(devs,&devInfoListDetail)) {
+        devInfo.cbSize = sizeof(devInfo);
+       for(devIndex=0;SetupDiEnumDeviceInfo(devs,devIndex,&devInfo);devIndex++) {
+           TCHAR devID[MAX_DEVICE_ID_LEN];
+           if(CM_Get_Device_ID_Ex(devInfo.DevInst,devID,MAX_DEVICE_ID_LEN,0,devInfoListDetail.RemoteMachineHandle)!=CR_SUCCESS)
+               devID[0] = TEXT('\0');
+           if (!memcmp (devID, PCI_CW_MK3, strlen (PCI_CW_MK3))) {
+               if (cw > 3)
+                   break;
+               cw = 3;
+           }
+           if (!memcmp (devID, PCI_CW_MK4, strlen (PCI_CW_MK4)) ||
+               !memcmp (devID, PCI_CW_MK4_BUG, strlen (PCI_CW_MK4_BUG)))
+               cw = 4;
+           if (cw) {
+               SP_DEVINFO_LIST_DETAIL_DATA devInfoListDetail;
+               ULONG status = 0;
+               ULONG problem = 0;
+               LOG_CONF config = 0;
+               BOOL haveConfig = FALSE;
+               ULONG dataSize;
+               PBYTE resDesData;
+               RES_DES prevResDes, resDes;
+               RESOURCEID resId = ResType_IO;
+
+               devInfoListDetail.cbSize = sizeof(devInfoListDetail);
+               if((!SetupDiGetDeviceInfoListDetail(devs,&devInfoListDetail)) ||
+                       (CM_Get_DevNode_Status_Ex(&status,&problem,devInfo.DevInst,0,devInfoListDetail.RemoteMachineHandle)!=CR_SUCCESS))
+                   break;
+               if(!(status & DN_HAS_PROBLEM)) {
+                   if (CM_Get_First_Log_Conf_Ex(&config,
+                                                devInfo.DevInst,
+                                                ALLOC_LOG_CONF,
+                                                devInfoListDetail.RemoteMachineHandle) == CR_SUCCESS) {
+                       haveConfig = TRUE;
+                   }
+               }
+               if(!haveConfig) {
+                   if (CM_Get_First_Log_Conf_Ex(&config,
+                                                devInfo.DevInst,
+                                                FORCED_LOG_CONF,
+                                                devInfoListDetail.RemoteMachineHandle) == CR_SUCCESS) {
+                       haveConfig = TRUE;
+                   }
+               }
+               if(!haveConfig) {
+                   if(!(status & DN_HAS_PROBLEM) || (problem != CM_PROB_HARDWARE_DISABLED)) {
+                       if (CM_Get_First_Log_Conf_Ex(&config,
+                                                    devInfo.DevInst,
+                                                    BOOT_LOG_CONF,
+                                                    devInfoListDetail.RemoteMachineHandle) == CR_SUCCESS) {
+                           haveConfig = TRUE;
+                       }
+                   }
+               }
+               if(!haveConfig)
+                   break;
+               prevResDes = (RES_DES)config;
+               resDes = 0;
+               while(CM_Get_Next_Res_Des_Ex(&resDes,prevResDes,ResType_IO,&resId,0,NULL)==CR_SUCCESS) {
+                   if(prevResDes != config)
+                       CM_Free_Res_Des_Handle(prevResDes);
+                   prevResDes = resDes;
+                   if(CM_Get_Res_Des_Data_Size_Ex(&dataSize,resDes,0,NULL)!=CR_SUCCESS)
+                       continue;
+                   resDesData = malloc (dataSize);
+                   if(!resDesData)
+                       continue;
+                   if(CM_Get_Res_Des_Data_Ex(resDes,resDesData,dataSize,0,NULL)!=CR_SUCCESS) {
+                       free (resDesData);
+                       continue;
+                   }
+                   if (resId == ResType_IO) {
+                       PIO_RESOURCE pIoData = (PIO_RESOURCE)resDesData;
+                       if(pIoData->IO_Header.IOD_Alloc_End-pIoData->IO_Header.IOD_Alloc_Base+1) {
+                           write_log("CW: PCI SCAN: CWMK%d @%I64X - %I64X\n", cw,
+                               pIoData->IO_Header.IOD_Alloc_Base,pIoData->IO_Header.IOD_Alloc_End);
+                           cwc.iobase = (int)pIoData->IO_Header.IOD_Alloc_Base;
+                           cwc.direct_type = cw;
+                       }
+                   }
+                   free (resDesData);
+               }
+               if(prevResDes != config)
+                   CM_Free_Res_Des_Handle(prevResDes);
+               CM_Free_Log_Conf_Handle(config);
+           }
+       }
+    }
+    SetupDiDestroyDeviceInfoList(devs);
+    return cw;
+}
+
 int catweasel_init(void)
 {
     char name[32], tmp[1000];
@@ -295,6 +481,7 @@ int catweasel_init(void)
 
     if (cwc.type)
        return 1;
+    catweasel_detect();
 
     if (currprefs.catweasel >= 100) {
        cwc.type = currprefs.catweasel >= 0x400 ? 3 : 1;
@@ -302,7 +489,9 @@ int catweasel_init(void)
        if (!ioport_init())
            goto fail;
        strcpy(name, "[DIRECT]");
+
     } else {
+
        for (i = 0; i < 4; i++) {
            if (currprefs.catweasel > 0)
                i = currprefs.catweasel;
@@ -313,9 +502,32 @@ int catweasel_init(void)
                break;
        }
        if (handle == INVALID_HANDLE_VALUE) {
-           write_log ("CW: No Catweasel detected\n");
-           goto fail;
+           strcpy(name, "[DIRECT]");
+           if (ioport_init()) {
+               if (cwc.direct_type == 4) {
+                   if (catweasel4_configure()) {
+                       cwc.type = 4;
+                       cwc.can_joy = 2;
+                       cwc.can_sid = 2;
+                       cwc.can_kb = 1;
+                       cwc.can_mouse = 2;
+                   }
+               } else if (cwc.direct_type == 3) {
+                   cwc.type = 3;
+                   cwc.can_joy = 1;
+                   cwc.can_sid = 1;
+                   cwc.can_kb = 1;
+                   cwc.can_mouse = 0;
+               }
+           }
+           if (cwc.type == 0) {
+               write_log ("CW: No Catweasel detected\n");
+               goto fail;
+           }
        }
+    }
+
+    if (!cwc.direct_type) {
        if (!DeviceIoControl (handle, CW_GET_VERSION, 0, 0, buffer, sizeof (buffer), &len, 0)) {
            write_log ("CW: CW_GET_VERSION failed %d\n", GetLastError());
            goto fail;
@@ -343,11 +555,12 @@ int catweasel_init(void)
        if (cwc.type == CATWEASEL_TYPE_MK4 && cwc.can_sid)
            cwc.can_sid = 2;
     }
+
     if (cwc.type == CATWEASEL_TYPE_MK4) {
        if (cwc.can_mouse) {
            int i;
            catweasel_do_bput(3, 0x81);
-           catweasel_do_bput(0xd0, 0); // amiga mouse
+           catweasel_do_bput(0xd0, 4|8); // amiga mouse + pullups
            // clear mouse counters
            for (i = 0; i < 2; i++) {
                catweasel_do_bput(0xc4 + i * 8, 0);
@@ -382,6 +595,8 @@ fail:
 
 void catweasel_free (void)
 {
+    if (cwc.type == 4)
+       catweasel_do_bput(3, 0x61); // enable floppy passthrough
     if (handle != INVALID_HANDLE_VALUE)
        CloseHandle (handle);
     handle = INVALID_HANDLE_VALUE;
@@ -397,20 +612,28 @@ int catweasel_detect (void)
 {
     char name[32];
     int i;
+    static int detected;
 
-    if (handle != INVALID_HANDLE_VALUE)
-       return TRUE;
+    if (detected)
+       return detected < 0 ? 0 : 1;
+
+    detected = -1;
     for (i = 0; i < 4; i++) {
        sprintf (name, "\\\\.\\CAT%u_F0", i);
        handle = CreateFile (name, GENERIC_READ, FILE_SHARE_WRITE|FILE_SHARE_READ, 0,
            OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
-       if (handle != INVALID_HANDLE_VALUE)
+       if (handle != INVALID_HANDLE_VALUE) {
+           CloseHandle (handle);
            break;
+       }
     }
-    if (handle == INVALID_HANDLE_VALUE)
-       return FALSE;
-    CloseHandle (handle);
-    handle = INVALID_HANDLE_VALUE;
+    if (handle == INVALID_HANDLE_VALUE) {
+       if (direct_detect()) {
+           detected = 1;
+           return TRUE;
+       }
+    }
+    detected = 1;
     return TRUE;
 }
 
diff --git a/cia.c b/cia.c
index 87834da13f4dd7804ef8b94bc767922f216b3873..777a28ac936311f10abb68ab3a4d943ce6a8f1ed 100755 (executable)
--- a/cia.c
+++ b/cia.c
@@ -314,18 +314,37 @@ void cia_parallelack (void)
     RethinkICRA();
 }
 
-static void ciab_checkalarm (void)
+static int checkalarm (unsigned long tod, unsigned long alarm, int inc)
 {
-    if (ciabtod != ciabalarm)
-       return;
-    ciabicr |= 4; RethinkICRB();
+    if (tod == alarm)
+       return 1;
+    if (!inc)
+       return 0;
+    /* emulate buggy TODMED counter.
+     * it counts: .. 29 2A 2B 2C 2D 2E 2F 20 30 31 32 ..
+     * (0F->00->10 only takes couple of cycles but it will trigger alarm..
+     */
+    if (tod & 0x000fff)
+       return 0;
+    if (((tod - 1) & 0xfff000) == alarm)
+       return 1;
+    return 0;
 }
 
-static void ciaa_checkalarm (void)
+STATIC_INLINE void ciab_checkalarm (int inc)
 {
-    if (ciaatod != ciaaalarm)
-       return;
-    ciaaicr |= 4; RethinkICRA();
+    if (checkalarm (ciabtod, ciabalarm, inc)) {
+       ciabicr |= 4;
+       RethinkICRB();
+    }
+}
+
+STATIC_INLINE void ciaa_checkalarm (int inc)
+{
+    if (checkalarm (ciaatod, ciaaalarm, inc)) {
+        ciaaicr |= 4;
+       RethinkICRA();
+    }
 }
 
 void CIA_hsync_handler (void)
@@ -333,7 +352,7 @@ void CIA_hsync_handler (void)
     if (ciabtodon) {
        ciabtod++;
        ciabtod &= 0xFFFFFF;
-       ciab_checkalarm ();
+       ciab_checkalarm (1);
     }
 
     if (keys_available() && kback && (ciaacra & 0x40) == 0 && (hsync_counter & 15) == 0) {
@@ -410,7 +429,7 @@ void CIA_vsync_handler ()
                return; /* try not to count backwards */
            ciaatod = nt;
            ciaatod &= 0xffffff;
-           ciaa_checkalarm ();
+           ciaa_checkalarm (0);
            return;
        }
     }
@@ -418,7 +437,7 @@ void CIA_vsync_handler ()
     if (ciaatodon) {
        ciaatod++;
        ciaatod &= 0xFFFFFF;
-       ciaa_checkalarm ();
+       ciaa_checkalarm (1);
     }
 }
 
@@ -451,7 +470,7 @@ static uae_u8 ReadCIAA (unsigned int addr)
     compute_passed_time ();
 
 #ifdef CIA_DEBUG_R
-    write_log("R_CIAA: bfe%x01 %08.8X\n", addr, m68k_getpc());
+    write_log("R_CIAA: bfe%x01 %08.8X\n", addr, M68K_GETPC);
 #endif
 
     switch (addr & 0xf) {
@@ -540,8 +559,10 @@ static uae_u8 ReadCIAA (unsigned int addr)
        else
            return (uae_u8)(ciaatod >> 8);
     case 10:
-       ciaatlatch = 1;
-       ciaatol = ciaatod; /* ??? only if not already latched? */
+       if (!ciaatlatch) { /* only if not already latched. A1200 confirmed. (TW) */
+           ciaatlatch = 1;
+           ciaatol = ciaatod;
+       }
        return (uae_u8)(ciaatol >> 16);
     case 12:
        if (ciaasdr_unread == 1)
@@ -563,7 +584,7 @@ static uae_u8 ReadCIAB (unsigned int addr)
     unsigned int tmp;
 
 #ifdef CIA_DEBUG_R
-    write_log("R_CIAB: bfd%x00 %08.8X\n", addr, m68k_getpc());
+    write_log("R_CIAB: bfd%x00 %08.8X\n", addr, M68K_GETPC);
 #endif
 
     compute_passed_time ();
@@ -636,8 +657,10 @@ static uae_u8 ReadCIAB (unsigned int addr)
        else
            return (uae_u8)(ciabtod >> 8);
     case 10:
-       ciabtlatch = 1;
-       ciabtol = ciabtod;
+       if (!ciabtlatch) {
+           ciabtlatch = 1;
+           ciabtol = ciabtod;
+       }
        return (uae_u8)(ciabtol >> 16);
     case 12:
        return ciabsdr;
@@ -655,7 +678,7 @@ static uae_u8 ReadCIAB (unsigned int addr)
 static void WriteCIAA (uae_u16 addr,uae_u8 val)
 {
 #ifdef CIA_DEBUG_W
-    write_log("W_CIAA: bfe%x01 %02.2X %08.8X\n", addr, val, m68k_getpc());
+    write_log("W_CIAA: bfe%x01 %02.2X %08.8X\n", addr, val, M68K_GETPC);
 #endif
 #ifdef ACTION_REPLAY
     ar_ciaa[addr & 0xf] = val;
@@ -745,7 +768,7 @@ static void WriteCIAA (uae_u16 addr,uae_u8 val)
        } else {
            ciaatod = (ciaatod & ~0xff) | val;
            ciaatodon = 1;
-           ciaa_checkalarm ();
+           ciaa_checkalarm (0);
 #ifdef TOD_HACK
            if (currprefs.tod_hack)
                tod_hack_reset ();
@@ -757,7 +780,6 @@ static void WriteCIAA (uae_u16 addr,uae_u8 val)
            ciaaalarm = (ciaaalarm & ~0xff00) | (val << 8);
        } else {
            ciaatod = (ciaatod & ~0xff00) | (val << 8);
-           //ciaatodon = 0;
        }
        break;
     case 10:
@@ -810,7 +832,7 @@ static void WriteCIAA (uae_u16 addr,uae_u8 val)
 static void WriteCIAB (uae_u16 addr,uae_u8 val)
 {
 #ifdef CIA_DEBUG_W
-    write_log("W_CIAB: bfd%x00 %02.2X %08.8X\n", addr, val, m68k_getpc());
+    write_log("W_CIAB: bfd%x00 %02.2X %08.8X\n", addr, val, M68K_GETPC);
 #endif
 #ifdef ACTION_REPLAY
     ar_ciab[addr & 0xf] = val;
@@ -892,7 +914,7 @@ static void WriteCIAB (uae_u16 addr,uae_u8 val)
        } else {
            ciabtod = (ciabtod & ~0xff) | val;
            ciabtodon = 1;
-           ciab_checkalarm ();
+           ciab_checkalarm (0);
        }
        break;
     case 9:
@@ -900,7 +922,6 @@ static void WriteCIAB (uae_u16 addr,uae_u8 val)
            ciabalarm = (ciabalarm & ~0xff00) | (val << 8);
        } else {
            ciabtod = (ciabtod & ~0xff00) | (val << 8);
-           //ciabtodon = 0;
        }
        break;
     case 10:
@@ -971,7 +992,7 @@ void CIA_reset (void)
        ciaaicr = ciabicr = ciaaimask = ciabimask = 0;
        ciaacra = ciaacrb = ciabcra = ciabcrb = 0x4; /* outmode = toggle; */
        ciaala = ciaalb = ciabla = ciablb = ciaata = ciaatb = ciabta = ciabtb = 0xFFFF;
-       ciaaalarm = ciabalarm = currprefs.cpu_cycle_exact ? 0 : 0xffffff;
+       ciaaalarm = ciabalarm = 0;
        ciabpra = 0x8C; ciabdra = 0;
        div10 = 0;
        ciaasdr_cnt = 0; ciaasdr = 0;
@@ -1003,12 +1024,12 @@ void dumpcia (void)
 {
     console_out ("A: CRA %02x CRB %02x ICR %02x IM %02x TA %04x (%04x) TB %04x (%04x)\n",
           ciaacra, ciaacrb, ciaaicr, ciaaimask, ciaata, ciaala, ciaatb, ciaalb);
-    console_out ("TOD %06x ALARM %06x %c%c\n",
-       ciaatod, ciaaalarm, ciaatlatch ? 'L' : ' ', ciaatodon ? ' ' : 'S');
+    console_out ("TOD %06x (%06x) ALARM %06x %c%c\n",
+       ciaatod, ciaatol, ciaaalarm, ciaatlatch ? 'L' : ' ', ciaatodon ? ' ' : 'S');
     console_out ("B: CRA %02x CRB %02x ICR %02x IM %02x TA %04x (%04x) TB %04x (%04x)\n",
           ciabcra, ciabcrb, ciaaicr, ciabimask, ciabta, ciabla, ciabtb, ciablb);
-    console_out ("TOD %06x ALARM %06x %c%c\n",
-       ciabtod, ciabalarm, ciabtlatch ? 'L' : ' ', ciabtodon ? ' ' : 'S');
+    console_out ("TOD %06x (%06x) ALARM %06x %c%c\n",
+       ciabtod, ciabtol, ciabalarm, ciabtlatch ? 'L' : ' ', ciabtodon ? ' ' : 'S');
 }
 
 /* CIA memory access */
@@ -1083,7 +1104,7 @@ uae_u32 REGPARAM2 cia_bget (uaecptr addr)
        if (currprefs.cpu_level == 0 && currprefs.cpu_compatible)
            v = (addr & 1) ? regs.irc : regs.irc >> 8;
        if (warned > 0) {
-           write_log ("cia_bget: unknown CIA address %x PC=%x\n", addr, m68k_getpc(&regs));
+           write_log ("cia_bget: unknown CIA address %x PC=%x\n", addr, M68K_GETPC);
            warned--;
        }
        break;
@@ -1121,7 +1142,7 @@ uae_u32 REGPARAM2 cia_wget (uaecptr addr)
        if (currprefs.cpu_level == 0 && currprefs.cpu_compatible)
            v = regs.irc;
        if (warned > 0) {
-           write_log ("cia_wget: unknown CIA address %x PC=%x\n", addr, m68k_getpc(&regs));
+           write_log ("cia_wget: unknown CIA address %x PC=%x\n", addr, M68K_GETPC);
            warned--;
        }
        break;
@@ -1472,7 +1493,7 @@ uae_u8 *save_cia (int num, int *len, uae_u8 *dstptr)
     save_u8 (b);
     b = (num ? ciabalarm : ciaaalarm);                 /* alarm LO */
     save_u8 (b);
-    b = (num ? ciabalarm >> 8 : ciaaalarm >>);       /* alarm MED */
+    b = (num ? ciabalarm >> 8 : ciaaalarm >> 8);       /* alarm MED */
     save_u8 (b);
     b = (num ? ciabalarm >> 16 : ciaaalarm >> 16);     /* alarm HI */
     save_u8 (b);
diff --git a/core.cw4.c b/core.cw4.c
new file mode 100755 (executable)
index 0000000..73b0719
--- /dev/null
@@ -0,0 +1,2436 @@
+unsigned char core[] = {
+       0x1f, 0x8b, 0x08, 0x08, 0xd6, 0xd5, 0xed, 0x44,
+       0x02, 0x03, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63,
+       0x77, 0x34, 0x00, 0xac, 0x5b, 0x4d, 0x6c, 0x1c,
+       0x47, 0x76, 0x7e, 0x55, 0x5d, 0x33, 0x2c, 0x52,
+       0x23, 0xb1, 0x86, 0x9a, 0x15, 0xc6, 0x8e, 0x22,
+       0x14, 0x47, 0x8c, 0x40, 0x03, 0x32, 0xd0, 0x32,
+       0x84, 0x40, 0x8b, 0xf0, 0x50, 0x43, 0xd3, 0x06,
+       0xb5, 0x71, 0x00, 0x6a, 0xd7, 0x08, 0xb8, 0x39,
+       0xb5, 0x0c, 0x07, 0x50, 0x90, 0x1c, 0x94, 0x9b,
+       0x76, 0xb1, 0x87, 0x9a, 0xd1, 0xd8, 0x18, 0x19,
+       0xdc, 0x60, 0xe4, 0x93, 0xd6, 0xd9, 0xc3, 0x58,
+       0x09, 0x02, 0x2f, 0x90, 0x03, 0x17, 0xd8, 0x83,
+       0x91, 0x53, 0xcb, 0xd1, 0x41, 0x7b, 0xe3, 0x21,
+       0x07, 0xe5, 0xc6, 0x83, 0x0f, 0xca, 0x8d, 0xd9,
+       0xf8, 0x40, 0x72, 0x28, 0x32, 0xef, 0x55, 0x75,
+       0xf7, 0xf4, 0xfc, 0x51, 0x34, 0xb5, 0x0d, 0x89,
+       0x1c, 0xce, 0x54, 0xbf, 0xae, 0xf7, 0xea, 0x7b,
+       0xdf, 0xfb, 0xa9, 0x9a, 0xa3, 0xa3, 0x8f, 0x8e,
+       0x7e, 0x08, 0x47, 0x7f, 0x9c, 0xcb, 0x96, 0x2a,
+       0xec, 0x72, 0x24, 0x62, 0x53, 0x86, 0xf3, 0x11,
+       0x5f, 0x69, 0x4c, 0x87, 0xa6, 0xf8, 0x0c, 0xaa,
+       0x10, 0xbc, 0xd7, 0x95, 0x96, 0xc1, 0xd0, 0x55,
+       0xb2, 0x8d, 0x1a, 0x5c, 0x89, 0xa1, 0xaa, 0x83,
+       0x8f, 0xbb, 0xb2, 0xd3, 0x78, 0x27, 0x2a, 0xc6,
+       0x95, 0x47, 0x41, 0xf0, 0xb7, 0x50, 0xfa, 0x35,
+       0x7b, 0xbe, 0x07, 0x17, 0x2c, 0x5f, 0x83, 0x19,
+       0xcd, 0x16, 0x6d, 0x71, 0x0b, 0x66, 0x4c, 0xb0,
+       0x0a, 0x67, 0x22, 0xb6, 0x60, 0x45, 0x17, 0x2a,
+       0x86, 0x0f, 0x0b, 0x9b, 0x33, 0x38, 0xf8, 0xac,
+       0xc6, 0xcf, 0x0b, 0x9b, 0x50, 0x89, 0xe9, 0x4e,
+       0x1c, 0x47, 0x83, 0xe7, 0x2c, 0xaf, 0xee, 0xc2,
+       0x6b, 0x5d, 0x0a, 0xb8, 0xc5, 0x1f, 0xa0, 0x01,
+       0x2c, 0x2c, 0x1e, 0xc1, 0x1f, 0xef, 0x7a, 0x94,
+       0x17, 0x26, 0xc1, 0xd9, 0xc8, 0x3d, 0xea, 0xf8,
+       0xe9, 0x00, 0x18, 0x1c, 0x8d, 0xf3, 0x11, 0xd6,
+       0x40, 0xd1, 0x00, 0xcc, 0xd0, 0x1f, 0x2f, 0x5e,
+       0x16, 0x73, 0xb2, 0xc8, 0x46, 0x32, 0x19, 0x38,
+       0x74, 0x99, 0xdc, 0x6b, 0xeb, 0xfe, 0x93, 0x3d,
+       0x15, 0x0e, 0xb4, 0xc6, 0x3f, 0x5b, 0xda, 0xfa,
+       0x41, 0xf2, 0xa1, 0x93, 0x50, 0x07, 0x10, 0x33,
+       0xe9, 0xb3, 0x59, 0xf2, 0x7b, 0xe8, 0xb2, 0x5a,
+       0x00, 0xaf, 0x3f, 0x06, 0x78, 0xc0, 0x41, 0x70,
+       0x14, 0x87, 0x8f, 0xb9, 0x03, 0xb0, 0x88, 0x1f,
+       0xe5, 0x6c, 0x16, 0xe0, 0x7f, 0x71, 0x42, 0xeb,
+       0x08, 0x1c, 0x5c, 0xf2, 0x0f, 0x33, 0xf8, 0x23,
+       0xf2, 0xef, 0x6e, 0xb9, 0x99, 0xd1, 0x24, 0xe2,
+       0x9c, 0xb0, 0x54, 0xf5, 0xd2, 0x18, 0x39, 0xb6,
+       0x40, 0x3f, 0x39, 0xcb, 0x4c, 0xe1, 0xee, 0xe1,
+       0x24, 0xaf, 0xdb, 0xcb, 0x1b, 0x85, 0xfe, 0x97,
+       0x5f, 0x35, 0x2b, 0xb4, 0x55, 0x5b, 0x5d, 0xc6,
+       0x27, 0x09, 0xe8, 0x68, 0x30, 0x2d, 0x87, 0x45,
+       0xb7, 0x72, 0xcf, 0x0e, 0xdc, 0x4c, 0x18, 0x4d,
+       0x2f, 0x62, 0x6d, 0xe9, 0x05, 0xae, 0xd3, 0x53,
+       0xaf, 0x72, 0xd8, 0x1c, 0x27, 0x0c, 0x67, 0xb6,
+       0x06, 0x81, 0x80, 0x92, 0x02, 0xad, 0x00, 0xa1,
+       0x8a, 0x83, 0x4b, 0x1b, 0xf6, 0x16, 0x40, 0x95,
+       0x66, 0x66, 0xa7, 0x68, 0x56, 0xfc, 0x9e, 0x4e,
+       0x2c, 0x01, 0x97, 0xe8, 0xc7, 0x2c, 0xc0, 0xd2,
+       0x38, 0x8c, 0xa0, 0x5a, 0xc5, 0xa7, 0xf8, 0x74,
+       0xbc, 0xe9, 0x22, 0xc0, 0x5d, 0x7d, 0x89, 0x10,
+       0x30, 0xfb, 0x2d, 0xbe, 0xb3, 0xdb, 0xcb, 0x6c,
+       0xc4, 0xfd, 0xda, 0x21, 0x96, 0xd1, 0x33, 0x3d,
+       0x54, 0xc2, 0x09, 0x33, 0x43, 0x18, 0xb8, 0x1b,
+       0x1c, 0xee, 0x71, 0x70, 0x84, 0x3e, 0xcb, 0x52,
+       0xd0, 0x16, 0xbd, 0xda, 0x5c, 0x4b, 0x50, 0x2c,
+       0x15, 0x86, 0x23, 0xc3, 0x09, 0x36, 0xb3, 0x16,
+       0x9f, 0xbb, 0x4c, 0x10, 0x03, 0xa8, 0xbc, 0x99,
+       0x09, 0x53, 0xfb, 0xe9, 0x00, 0xe3, 0x1d, 0xa0,
+       0x95, 0xdd, 0xc4, 0xc6, 0xdb, 0xdf, 0xe1, 0xcc,
+       0xcc, 0x09, 0xb8, 0x29, 0x08, 0x67, 0xb1, 0xfc,
+       0x89, 0x44, 0x9c, 0xdd, 0x94, 0xa8, 0xfe, 0x7f,
+       0xe5, 0x1c, 0x5d, 0x67, 0x6a, 0x8e, 0x5c, 0x29,
+       0x46, 0x8a, 0x39, 0x50, 0x26, 0x38, 0xf3, 0x6a,
+       0xb8, 0x01, 0xea, 0x28, 0x9d, 0x44, 0xcc, 0x4d,
+       0x62, 0xa9, 0x31, 0x57, 0x0e, 0x53, 0x84, 0x33,
+       0x41, 0xaa, 0x48, 0x41, 0x4f, 0xde, 0xd1, 0xf8,
+       0x61, 0xa4, 0xa5, 0xc4, 0x5f, 0xf1, 0x5e, 0xe6,
+       0x4e, 0x0c, 0x6a, 0xf8, 0x86, 0x85, 0x13, 0xe0,
+       0x8c, 0xc3, 0xbb, 0x08, 0x1d, 0x9c, 0x0a, 0x2e,
+       0x9a, 0xb0, 0x64, 0x33, 0xfc, 0xe3, 0x7a, 0xed,
+       0x2f, 0xdc, 0xcc, 0xae, 0x38, 0x37, 0x88, 0x04,
+       0x9a, 0xa3, 0xef, 0xd1, 0x1f, 0x4c, 0xf0, 0xad,
+       0x02, 0x69, 0x76, 0x99, 0xc1, 0x06, 0x03, 0x8d,
+       0x36, 0xe1, 0xd5, 0x69, 0x2f, 0x0c, 0x96, 0x7f,
+       0xb3, 0xef, 0x70, 0xc6, 0x07, 0x71, 0x06, 0x09,
+       0xce, 0xc6, 0xfb, 0x25, 0xe2, 0x70, 0x2b, 0xc3,
+       0xd9, 0x8e, 0x39, 0x47, 0x56, 0x98, 0x92, 0xb0,
+       0x04, 0x5b, 0x39, 0x9c, 0x45, 0x24, 0x49, 0xeb,
+       0x57, 0xa9, 0xe9, 0x66, 0xe6, 0x8c, 0x46, 0x8b,
+       0x85, 0xe1, 0x40, 0x79, 0xe5, 0x43, 0xd8, 0xce,
+       0xe1, 0xec, 0xae, 0xe3, 0xfc, 0x8c, 0xf6, 0x35,
+       0x9f, 0x68, 0xb3, 0x6a, 0x0a, 0x13, 0x03, 0xb1,
+       0xd9, 0x20, 0x9b, 0x21, 0xe8, 0x42, 0x71, 0x71,
+       0xd7, 0x41, 0xc7, 0xf3, 0xd9, 0x1c, 0xf2, 0x59,
+       0xcb, 0xae, 0x24, 0x00, 0x63, 0xba, 0x35, 0x11,
+       0x67, 0xc9, 0xeb, 0x70, 0x1a, 0xb6, 0xe0, 0xc7,
+       0xc4, 0x67, 0xd3, 0x5a, 0x0a, 0x9e, 0x80, 0x96,
+       0x79, 0x84, 0x09, 0x5a, 0xed, 0x62, 0x9e, 0x50,
+       0x5f, 0x79, 0xa1, 0x9a, 0x84, 0x9b, 0x12, 0x72,
+       0xa4, 0xec, 0x66, 0xc2, 0x10, 0x67, 0x86, 0x8c,
+       0x2b, 0x45, 0x5f, 0x1d, 0x36, 0x81, 0xcf, 0xd2,
+       0x21, 0x4b, 0xe0, 0xa9, 0xdb, 0x93, 0xa3, 0x7c,
+       0x7e, 0x40, 0xcb, 0xb7, 0xec, 0x70, 0xa6, 0x1d,
+       0x2c, 0x58, 0x91, 0xa7, 0xee, 0x24, 0x26, 0xe3,
+       0x2c, 0x47, 0x82, 0x55, 0x06, 0xd1, 0x82, 0x6e,
+       0x75, 0x3a, 0x10, 0xee, 0xd1, 0x1d, 0x0b, 0x09,
+       0xce, 0x2c, 0xf1, 0xd9, 0x15, 0x91, 0xe2, 0x2c,
+       0x9c, 0xb8, 0x9a, 0x39, 0x8f, 0xa8, 0xae, 0x6b,
+       0x9c, 0xd9, 0x86, 0xba, 0xa5, 0x61, 0xcd, 0xd3,
+       0xb6, 0xe8, 0xe3, 0xcc, 0x06, 0x29, 0xce, 0xa2,
+       0xc9, 0x38, 0xeb, 0xab, 0xa9, 0xc0, 0xe3, 0x0c,
+       0x71, 0xa5, 0xd6, 0x76, 0x45, 0xba, 0x00, 0x3c,
+       0x22, 0xc0, 0x20, 0xce, 0x78, 0xe6, 0xdc, 0x6c,
+       0x32, 0xce, 0xfc, 0x6a, 0xd2, 0x02, 0xf4, 0x99,
+       0x20, 0xee, 0x65, 0x4c, 0x81, 0xb4, 0x8d, 0x7c,
+       0x06, 0x7c, 0x3e, 0x65, 0x0a, 0x23, 0x5f, 0x85,
+       0xb3, 0x50, 0x91, 0xb0, 0x79, 0x54, 0xf3, 0x53,
+       0xb1, 0x68, 0xb5, 0x13, 0x96, 0xc5, 0x4d, 0x9c,
+       0xc9, 0x75, 0x2b, 0x92, 0xf9, 0xd4, 0xf5, 0xe8,
+       0x02, 0x74, 0x25, 0x23, 0x9c, 0x2d, 0x27, 0x1e,
+       0x8c, 0x38, 0x53, 0xe0, 0xe2, 0xe6, 0x5b, 0x21,
+       0xaa, 0xff, 0xbb, 0xde, 0xc8, 0x0d, 0x19, 0xce,
+       0xda, 0xa3, 0x40, 0xb3, 0x43, 0x94, 0x94, 0x65,
+       0x0b, 0x4e, 0xcd, 0x17, 0xbd, 0x3e, 0x9f, 0x29,
+       0x6f, 0x06, 0x91, 0xd3, 0x67, 0xf8, 0xda, 0x66,
+       0x0e, 0x67, 0x55, 0x9b, 0x2d, 0x40, 0x4c, 0xe3,
+       0x23, 0x20, 0xcc, 0xc2, 0xae, 0x63, 0x0d, 0x0a,
+       0x75, 0x86, 0x49, 0x7a, 0xe2, 0xa6, 0xfa, 0xb7,
+       0xfe, 0x2c, 0xf8, 0x04, 0x9b, 0x99, 0xb5, 0xe4,
+       0xf5, 0xb4, 0x77, 0xe1, 0xa8, 0x59, 0x9a, 0x47,
+       0xa1, 0xff, 0xbc, 0x9b, 0xfa, 0x34, 0xe2, 0x0c,
+       0xd0, 0x1c, 0x9b, 0x99, 0x9a, 0x56, 0x8c, 0x06,
+       0x3a, 0x64, 0x50, 0x5a, 0x4d, 0x59, 0xb8, 0x9c,
+       0x3e, 0x2f, 0x86, 0x47, 0x3e, 0xa0, 0x4c, 0x87,
+       0xcb, 0xe5, 0x97, 0x43, 0x71, 0x73, 0xa9, 0x1b,
+       0x24, 0xf3, 0x09, 0xa2, 0x31, 0xce, 0xc9, 0x1c,
+       0xce, 0x2e, 0xc4, 0x81, 0x5b, 0x25, 0x8c, 0xab,
+       0x0a, 0x2e, 0x11, 0x63, 0x4f, 0x7d, 0xdb, 0x58,
+       0x82, 0x3b, 0x87, 0x43, 0x7c, 0x16, 0x1e, 0x9b,
+       0xbd, 0xa4, 0x33, 0x13, 0x41, 0x8a, 0xb3, 0x14,
+       0x27, 0x96, 0x85, 0x70, 0xcb, 0xa9, 0x79, 0x85,
+       0x3b, 0x9c, 0x91, 0xba, 0x61, 0x0a, 0x33, 0x58,
+       0x91, 0x8b, 0x63, 0x57, 0x13, 0xc7, 0xae, 0x43,
+       0xd0, 0xc7, 0x99, 0x8b, 0x9b, 0xa6, 0x83, 0xc2,
+       0x76, 0x76, 0x55, 0x0e, 0x67, 0x6f, 0x8b, 0x5c,
+       0xdc, 0xbc, 0x39, 0xc6, 0xfc, 0x1a, 0x71, 0xb6,
+       0x40, 0x71, 0x93, 0x3b, 0x35, 0x05, 0x25, 0x99,
+       0x9c, 0x70, 0x76, 0x33, 0x2c, 0x17, 0xe0, 0xd1,
+       0xee, 0x70, 0x78, 0xd4, 0x90, 0x4f, 0x95, 0xc6,
+       0xaf, 0x26, 0x40, 0x30, 0xf4, 0xb7, 0x8b, 0xe8,
+       0x3b, 0x7b, 0x7d, 0x9c, 0x0d, 0xe5, 0x63, 0x67,
+       0xc6, 0x08, 0x8a, 0x3c, 0xce, 0x8a, 0xc0, 0x9d,
+       0x88, 0xd0, 0xb2, 0xd8, 0x7a, 0x9c, 0xc9, 0x06,
+       0x86, 0xc9, 0xfd, 0x52, 0x3f, 0x6e, 0xc2, 0x07,
+       0xdc, 0xa5, 0xba, 0xfe, 0x7a, 0x6f, 0x5c, 0x0e,
+       0x9a, 0xce, 0xe4, 0x7c, 0xb6, 0x00, 0x82, 0x70,
+       0xd6, 0xb8, 0x6a, 0xa7, 0x05, 0xfc, 0xc7, 0x5e,
+       0xa5, 0x1f, 0x37, 0xd5, 0x46, 0x3e, 0x13, 0x6e,
+       0xf1, 0x89, 0xab, 0xb9, 0x0e, 0x1e, 0x67, 0x21,
+       0xbf, 0xf0, 0x8d, 0x9b, 0x30, 0x5c, 0xb5, 0x9f,
+       0x84, 0xc5, 0xc5, 0x5d, 0xca, 0x97, 0xa7, 0x98,
+       0xc3, 0x19, 0xcc, 0xca, 0x9c, 0xa6, 0x53, 0xe3,
+       0x0c, 0xe6, 0x85, 0x5d, 0x7a, 0xca, 0x3c, 0xce,
+       0x3a, 0x53, 0x8a, 0x70, 0x85, 0x38, 0x7b, 0x81,
+       0xbe, 0x75, 0x77, 0x2f, 0x97, 0x9f, 0x61, 0x58,
+       0xc8, 0xc5, 0x4d, 0x39, 0x19, 0x67, 0x7d, 0x3e,
+       0xeb, 0x27, 0xfe, 0x36, 0x84, 0xff, 0xde, 0xcf,
+       0xe5, 0x67, 0xf3, 0x8b, 0x79, 0xf7, 0x1e, 0xa7,
+       0xa6, 0x4d, 0xa8, 0xda, 0x6a, 0x37, 0xb3, 0xb0,
+       0x5c, 0x8c, 0xbd, 0x9a, 0xcd, 0x55, 0x85, 0x06,
+       0x4c, 0xf9, 0xcc, 0x1a, 0xee, 0xf9, 0x2c, 0xa7,
+       0x91, 0xe4, 0x63, 0x70, 0xe6, 0x94, 0x30, 0x73,
+       0xab, 0x2c, 0xe5, 0xb3, 0x37, 0x19, 0xc5, 0xcd,
+       0x79, 0x56, 0xcc, 0xe5, 0x67, 0x7e, 0xd8, 0xf8,
+       0x64, 0x71, 0xf4, 0xba, 0xdf, 0x5f, 0xa8, 0xaa,
+       0x48, 0x71, 0xb6, 0xbe, 0x97, 0x38, 0xba, 0xc8,
+       0xf8, 0x2c, 0xcb, 0xe7, 0xa2, 0xb1, 0x38, 0xa3,
+       0xeb, 0x22, 0x3a, 0xb2, 0x49, 0xf9, 0x0c, 0x85,
+       0x51, 0xf4, 0x60, 0x25, 0x78, 0x4e, 0xab, 0x49,
+       0x36, 0xe3, 0xc4, 0x67, 0xe4, 0x9b, 0xc7, 0xa6,
+       0xa1, 0x09, 0x8f, 0xbc, 0x09, 0xe7, 0x3f, 0x16,
+       0xc9, 0x22, 0x89, 0x37, 0x9c, 0xfe, 0xad, 0x79,
+       0x01, 0xff, 0x77, 0x98, 0xd4, 0x01, 0xd5, 0x87,
+       0x2c, 0x5a, 0x19, 0xe0, 0x9c, 0xab, 0xed, 0xc2,
+       0xd8, 0xd5, 0xa4, 0x5a, 0x10, 0xce, 0x7c, 0xe4,
+       0xf4, 0x98, 0xc3, 0x99, 0xad, 0xd3, 0xab, 0x8d,
+       0x4e, 0x3d, 0xe4, 0x3f, 0x3d, 0x4a, 0xd4, 0xbc,
+       0x14, 0x23, 0xce, 0x02, 0xc4, 0x59, 0x06, 0x8d,
+       0xd9, 0xed, 0xc6, 0x58, 0x9c, 0x51, 0x9d, 0xf0,
+       0x8c, 0xdd, 0xcb, 0xe2, 0x26, 0x06, 0xd1, 0x7b,
+       0x30, 0xb5, 0x0d, 0x4b, 0x72, 0xad, 0x97, 0xc4,
+       0xcd, 0x2a, 0x51, 0x10, 0x2e, 0x7b, 0x98, 0x2b,
+       0xc7, 0xd9, 0xa4, 0x99, 0xe1, 0x75, 0xbb, 0xcf,
+       0x67, 0x2e, 0xa0, 0x48, 0xb8, 0x06, 0x5f, 0xbf,
+       0x4c, 0x52, 0x86, 0x2a, 0x91, 0x23, 0x26, 0x93,
+       0x9b, 0xea, 0x38, 0x61, 0xa9, 0x1d, 0xca, 0x32,
+       0x5a, 0x4e, 0xf9, 0x4c, 0x12, 0xce, 0x8a, 0x80,
+       0xc9, 0xc4, 0x87, 0x47, 0x09, 0x9f, 0x7d, 0x6e,
+       0xda, 0xab, 0xc2, 0xe1, 0x4c, 0xf3, 0xc9, 0x0b,
+       0x90, 0xe2, 0x0c, 0xe4, 0x3f, 0x2c, 0x50, 0x05,
+       0x33, 0x0d, 0x3f, 0x16, 0xe7, 0x39, 0x44, 0x2d,
+       0x8a, 0x9b, 0x2c, 0x4a, 0x71, 0x56, 0x55, 0xcc,
+       0xd5, 0x01, 0x7d, 0x35, 0x05, 0x3f, 0x0e, 0x68,
+       0xfd, 0x6c, 0x35, 0xad, 0x03, 0x94, 0xaa, 0x1e,
+       0x26, 0xf5, 0xa6, 0xc2, 0xd0, 0x6c, 0x9c, 0x30,
+       0x76, 0x8c, 0x6f, 0xa6, 0x38, 0xb3, 0xa8, 0x19,
+       0x3e, 0x6b, 0xa9, 0xcd, 0xa8, 0x76, 0x85, 0x7b,
+       0x4a, 0xae, 0x90, 0x78, 0xe2, 0x33, 0x82, 0xc6,
+       0x3a, 0x74, 0x35, 0xd5, 0xe8, 0x61, 0x06, 0x8f,
+       0x05, 0x3e, 0x19, 0x67, 0x06, 0x22, 0xa7, 0x30,
+       0xfe, 0xe7, 0xbf, 0x12, 0xe8, 0x77, 0x1b, 0x28,
+       0x6a, 0xe6, 0x0f, 0x87, 0x09, 0x3b, 0xaf, 0x23,
+       0x8e, 0xcb, 0x96, 0x66, 0xf6, 0x7e, 0x32, 0xa5,
+       0x0f, 0x26, 0xf0, 0x19, 0x0d, 0x86, 0xf3, 0x51,
+       0xeb, 0x2a, 0x4e, 0xa9, 0xf8, 0xa9, 0xa1, 0x64,
+       0x0f, 0xe1, 0x6f, 0xe7, 0x95, 0xd0, 0xfb, 0xd2,
+       0xd7, 0x01, 0xe7, 0x62, 0x7b, 0x83, 0x70, 0xb6,
+       0xd4, 0x9d, 0x3a, 0xae, 0x0e, 0x48, 0x70, 0xf6,
+       0x34, 0xf8, 0xb9, 0xab, 0x47, 0xed, 0xd4, 0x5d,
+       0x38, 0x27, 0xe1, 0x9e, 0x9e, 0xfa, 0x16, 0xdd,
+       0xa9, 0xe3, 0x53, 0x77, 0x9e, 0x00, 0x44, 0xe4,
+       0x0b, 0x74, 0x01, 0x93, 0x71, 0x16, 0x44, 0xca,
+       0x05, 0xd9, 0xa2, 0xf1, 0x14, 0xe4, 0xec, 0xfe,
+       0x90, 0x66, 0x06, 0xef, 0x13, 0x7b, 0xb5, 0xb5,
+       0x46, 0x9c, 0xd9, 0x4e, 0x2a, 0xec, 0x9f, 0x26,
+       0xfb, 0x26, 0x88, 0x20, 0x62, 0x24, 0x4c, 0xa1,
+       0xb0, 0x16, 0xa6, 0xa1, 0xda, 0x34, 0xd9, 0xa2,
+       0x71, 0x55, 0x1d, 0x0d, 0x99, 0x5b, 0xed, 0x48,
+       0x40, 0x67, 0x45, 0x9c, 0xa9, 0x65, 0x77, 0x43,
+       0x63, 0x4c, 0x5f, 0x23, 0xc1, 0xd9, 0xe7, 0xd2,
+       0xc8, 0xa6, 0x09, 0x7d, 0x5f, 0x03, 0xb5, 0x42,
+       0x84, 0x62, 0xde, 0x0f, 0x4f, 0x77, 0xf3, 0x68,
+       0xf1, 0x38, 0xe3, 0xaf, 0xc4, 0x99, 0xcc, 0xa5,
+       0x66, 0x14, 0xbc, 0x1d, 0xd7, 0x2b, 0xb5, 0x95,
+       0xd6, 0x9b, 0x98, 0xcd, 0x57, 0x7d, 0x59, 0x9e,
+       0xe1, 0x4c, 0x8e, 0xf6, 0x35, 0x12, 0x9c, 0x61,
+       0x7e, 0x16, 0x19, 0x6a, 0x65, 0xe8, 0x64, 0xf6,
+       0x8a, 0xc7, 0x98, 0xc3, 0x6e, 0xef, 0x27, 0x6a,
+       0x56, 0x99, 0x75, 0x85, 0x15, 0xe1, 0x6c, 0xd5,
+       0xe3, 0x6c, 0x28, 0x39, 0x74, 0xc9, 0x64, 0xf2,
+       0x1c, 0x72, 0x73, 0x66, 0xcb, 0x0f, 0x71, 0x62,
+       0xed, 0x2a, 0x32, 0x15, 0x63, 0x5d, 0x2c, 0xf1,
+       0xff, 0xfe, 0x30, 0xa9, 0x37, 0x11, 0xb4, 0x98,
+       0x20, 0x93, 0xe0, 0x0b, 0xa2, 0x9d, 0xe2, 0x2c,
+       0x4c, 0x0b, 0x8c, 0x74, 0xba, 0x7d, 0x3e, 0xd3,
+       0x50, 0x62, 0x21, 0xba, 0xb1, 0x15, 0x8f, 0x04,
+       0x18, 0xb9, 0x61, 0x6f, 0x29, 0x7e, 0xcd, 0xd3,
+       0xb6, 0x80, 0x73, 0xcf, 0x10, 0x2d, 0x98, 0x9a,
+       0x95, 0x3a, 0x53, 0x61, 0x86, 0xb3, 0xa5, 0x34,
+       0xe1, 0x50, 0x7c, 0x20, 0x50, 0x20, 0xce, 0x7e,
+       0xaa, 0x67, 0xb7, 0xd9, 0x45, 0x0d, 0x77, 0xf5,
+       0x39, 0x32, 0xf8, 0xec, 0x0b, 0x56, 0xd2, 0xdd,
+       0x81, 0x7a, 0x73, 0x20, 0x14, 0x96, 0xc8, 0xb7,
+       0x12, 0x61, 0x6b, 0x89, 0xb0, 0xd5, 0xc4, 0x66,
+       0x2a, 0xd0, 0x44, 0x51, 0x69, 0x5f, 0xc3, 0x28,
+       0x67, 0xdd, 0x87, 0x69, 0xbd, 0x69, 0xb4, 0xbe,
+       0x0d, 0x02, 0x17, 0x60, 0xbe, 0x98, 0xf4, 0xc3,
+       0xae, 0xe6, 0xb3, 0x65, 0x3e, 0x80, 0xb3, 0x47,
+       0x08, 0xda, 0x05, 0x14, 0xd6, 0xa4, 0xbe, 0x86,
+       0xf4, 0xd9, 0xf6, 0x1a, 0xe6, 0xb0, 0xbb, 0xc7,
+       0x77, 0xf1, 0xc4, 0xe4, 0xcc, 0x7b, 0xf4, 0xfa,
+       0xf7, 0x23, 0x9d, 0xa4, 0x6c, 0xae, 0xa8, 0x20,
+       0xe8, 0x0d, 0xfe, 0x31, 0xcc, 0x62, 0x83, 0x83,
+       0x6d, 0x8a, 0x34, 0x37, 0x78, 0xf3, 0x68, 0xe2,
+       0x64, 0x4e, 0x7a, 0x55, 0xfa, 0x0d, 0xcc, 0xc3,
+       0xab, 0x63, 0x1e, 0x76, 0xca, 0x99, 0xfd, 0xa7,
+       0xab, 0xea, 0x7c, 0x73, 0xce, 0x0c, 0x62, 0xd4,
+       0x8d, 0x18, 0xbe, 0x7c, 0x1d, 0xa7, 0x7c, 0xf3,
+       0xc0, 0x8b, 0x83, 0x4c, 0xdc, 0x1b, 0x7b, 0xa1,
+       0x37, 0x53, 0x52, 0xe3, 0x27, 0x7f, 0x98, 0xf1,
+       0x5d, 0x1c, 0xff, 0x5c, 0x35, 0x44, 0xea, 0xd9,
+       0x24, 0xe2, 0xd7, 0xec, 0x20, 0x0f, 0x5c, 0x0f,
+       0x0e, 0x53, 0x33, 0x2c, 0xa7, 0xf3, 0x36, 0x95,
+       0x63, 0x6c, 0xa6, 0x0a, 0x03, 0x9f, 0xbb, 0x3b,
+       0xd7, 0xd2, 0xc1, 0x2f, 0xf6, 0x27, 0xb7, 0xca,
+       0xd8, 0x44, 0x5d, 0xfb, 0x96, 0x65, 0xf9, 0xc8,
+       0xa7, 0x5f, 0x4e, 0x26, 0xab, 0xef, 0x7d, 0x55,
+       0x8f, 0x60, 0xa4, 0xbc, 0xb4, 0x89, 0x49, 0xbb,
+       0x13, 0xdb, 0x42, 0x26, 0xdf, 0x9c, 0xee, 0xe7,
+       0x97, 0x3e, 0x41, 0xce, 0x56, 0x85, 0x7f, 0xcf,
+       0xb9, 0x68, 0xbf, 0xc0, 0x09, 0x18, 0xbe, 0x3e,
+       0x9c, 0x1c, 0xf7, 0x5f, 0xd5, 0x92, 0xce, 0xe2,
+       0x42, 0x6a, 0xbb, 0x9d, 0xfd, 0x89, 0x11, 0xe8,
+       0x7b, 0x5d, 0x4e, 0xb2, 0xea, 0x65, 0x2f, 0x7d,
+       0x6a, 0x87, 0xab, 0x4d, 0x8d, 0xc5, 0x64, 0x99,
+       0xe4, 0xf1, 0x34, 0x52, 0xc6, 0x81, 0x1a, 0xef,
+       0xa8, 0x61, 0xd6, 0x83, 0x46, 0x5a, 0xdd, 0x77,
+       0x9a, 0x35, 0x9c, 0xc5, 0x0c, 0x7e, 0x26, 0xdd,
+       0xfd, 0x2b, 0xaf, 0xd4, 0x59, 0x26, 0x8d, 0x27,
+       0xa7, 0xc7, 0xb4, 0x61, 0xf4, 0xfb, 0x19, 0xcd,
+       0x4c, 0xb3, 0x0a, 0xb9, 0x1c, 0x66, 0x34, 0xc8,
+       0x9f, 0xfa, 0x07, 0x38, 0x6a, 0xcb, 0xcd, 0xac,
+       0x30, 0x26, 0x91, 0x97, 0xf0, 0x3b, 0x37, 0xbf,
+       0x69, 0xa8, 0x33, 0xfb, 0x1b, 0xda, 0xa1, 0xc1,
+       0x99, 0xfd, 0x49, 0x84, 0x35, 0x78, 0x17, 0x56,
+       0x0e, 0x3c, 0xf8, 0xda, 0x20, 0xee, 0x63, 0x42,
+       0x60, 0xde, 0x17, 0x0b, 0xf4, 0x30, 0xd1, 0xa0,
+       0xdb, 0xe6, 0xc7, 0xec, 0x57, 0x28, 0xcb, 0x9f,
+       0x2a, 0x6b, 0xdc, 0x0a, 0x32, 0xaa, 0x40, 0xba,
+       0x14, 0x01, 0xab, 0x2e, 0x48, 0x6e, 0xef, 0xf3,
+       0x44, 0x17, 0xd9, 0x74, 0x06, 0xf1, 0xb6, 0x6a,
+       0x4e, 0x04, 0x89, 0x80, 0xa4, 0xa9, 0xa0, 0x13,
+       0x03, 0xea, 0xb4, 0x5d, 0xac, 0x61, 0xbd, 0x97,
+       0xf3, 0x9e, 0x84, 0x0e, 0x54, 0xaa, 0xd0, 0xfc,
+       0x04, 0x70, 0xa5, 0xeb, 0xcd, 0x54, 0x1e, 0xc4,
+       0x02, 0xee, 0x1c, 0x9c, 0x96, 0x60, 0xf3, 0x8e,
+       0xe3, 0x1d, 0x42, 0x3d, 0x3f, 0x35, 0x05, 0x55,
+       0x47, 0x08, 0x42, 0xcb, 0x97, 0x43, 0x16, 0x39,
+       0x21, 0x64, 0xb9, 0xdf, 0x54, 0xca, 0x37, 0x0c,
+       0x19, 0x74, 0x0e, 0x55, 0x86, 0x4d, 0x9b, 0xc2,
+       0x8a, 0x9f, 0x42, 0x71, 0x86, 0xd8, 0xfc, 0xc5,
+       0xde, 0x48, 0x97, 0xe1, 0x14, 0xfb, 0x75, 0xc9,
+       0xad, 0xed, 0x97, 0xa7, 0xb5, 0x99, 0x1e, 0xda,
+       0x26, 0xc3, 0xeb, 0xf9, 0xa9, 0x85, 0x8d, 0xf8,
+       0x9a, 0x80, 0xaf, 0xf7, 0x92, 0x3e, 0xc6, 0x4c,
+       0x9f, 0x34, 0x4e, 0x0b, 0x12, 0xb8, 0xdb, 0x1b,
+       0x4a, 0xe7, 0xf2, 0xbb, 0x28, 0x27, 0x91, 0xaa,
+       0x74, 0x9f, 0x5c, 0x36, 0x77, 0x73, 0x86, 0x67,
+       0x03, 0x66, 0x38, 0x56, 0x54, 0x12, 0xa1, 0x4b,
+       0x03, 0x76, 0x7b, 0x6b, 0x77, 0xe4, 0xd6, 0x93,
+       0x04, 0x14, 0x6b, 0xc5, 0x60, 0x26, 0xee, 0x36,
+       0xa2, 0xe0, 0x94, 0x3b, 0xaf, 0x6c, 0x2c, 0x3f,
+       0xa7, 0x31, 0x80, 0xeb, 0x57, 0x6d, 0x38, 0x65,
+       0xa9, 0xc0, 0xc4, 0xcf, 0x9f, 0xef, 0x9f, 0x1a,
+       0xa6, 0x03, 0x08, 0x99, 0x76, 0x2f, 0x5f, 0x03,
+       0x67, 0xa8, 0xdb, 0x60, 0xda, 0x29, 0x0f, 0x8f,
+       0x7d, 0x2a, 0x9c, 0x14, 0x1c, 0xee, 0xfa, 0xea,
+       0xb4, 0x5b, 0xdf, 0x66, 0x5c, 0xe6, 0xb8, 0x3f,
+       0xf2, 0xe1, 0xf7, 0x8d, 0x96, 0x72, 0x38, 0xd7,
+       0x60, 0xaf, 0x63, 0xb9, 0x63, 0xd4, 0x94, 0x39,
+       0x3e, 0x7a, 0x55, 0xaa, 0x20, 0x07, 0xd5, 0xba,
+       0xd1, 0xcb, 0x73, 0x99, 0x3c, 0xe9, 0x2c, 0x85,
+       0x1f, 0x27, 0x07, 0xdf, 0x39, 0xd8, 0x3f, 0x6d,
+       0xde, 0x92, 0xe2, 0xde, 0x7a, 0x8f, 0xa6, 0x65,
+       0xf8, 0xea, 0xf0, 0x24, 0x89, 0xce, 0x24, 0x53,
+       0x89, 0xc1, 0xf8, 0x72, 0xef, 0xf0, 0x94, 0x36,
+       0x17, 0x83, 0x4f, 0x72, 0x0a, 0xed, 0x1e, 0xa5,
+       0x87, 0x20, 0x78, 0x43, 0x9f, 0x90, 0x16, 0x75,
+       0x62, 0x58, 0x4d, 0x59, 0x63, 0x9d, 0xfe, 0x9a,
+       0x56, 0x40, 0x59, 0xd0, 0xd2, 0x81, 0xdf, 0x94,
+       0xd5, 0x32, 0x59, 0x05, 0x9f, 0xd8, 0x60, 0x7a,
+       0xa0, 0xc6, 0xa9, 0xa9, 0x5d, 0x05, 0x4e, 0x43,
+       0xa4, 0x71, 0x44, 0xc1, 0x72, 0xcb, 0x67, 0x9f,
+       0x1c, 0x62, 0x2d, 0xdb, 0xc1, 0x82, 0x96, 0xb7,
+       0x31, 0xdb, 0xe2, 0xed, 0xe0, 0xcb, 0x02, 0x74,
+       0x18, 0xac, 0x01, 0xff, 0xd1, 0x58, 0x61, 0x6f,
+       0x7f, 0x09, 0x5d, 0x4c, 0x8d, 0x9e, 0xc2, 0x6a,
+       0x9d, 0xba, 0x19, 0x1d, 0x56, 0x23, 0x58, 0x94,
+       0x75, 0xfd, 0x16, 0x66, 0x41, 0x5f, 0x1f, 0x78,
+       0x2d, 0x31, 0xfa, 0xc6, 0xab, 0x50, 0x64, 0xd7,
+       0xc5, 0x87, 0xae, 0x0e, 0x7d, 0x17, 0xb8, 0x6c,
+       0xd4, 0xc6, 0xa8, 0xf8, 0xdb, 0xbf, 0x06, 0xab,
+       0x1f, 0xc1, 0x59, 0xbf, 0x05, 0xb8, 0x88, 0x7f,
+       0xc8, 0x22, 0x33, 0xca, 0x7e, 0xca, 0x94, 0xbc,
+       0xbb, 0x9b, 0x55, 0x36, 0x36, 0x07, 0x31, 0x3b,
+       0x31, 0x1f, 0x15, 0x6e, 0x87, 0xc4, 0x8d, 0xb4,
+       0x0e, 0x68, 0x5a, 0xb4, 0x48, 0xfd, 0x1a, 0xa6,
+       0x89, 0xbb, 0xb9, 0x20, 0x5c, 0x73, 0xc5, 0x98,
+       0xe6, 0x49, 0xb0, 0xe7, 0x7c, 0x8c, 0xbf, 0x6a,
+       0xcc, 0x9e, 0xd2, 0x85, 0x32, 0xc9, 0x6a, 0x48,
+       0x5f, 0x6d, 0x61, 0x8a, 0x78, 0x78, 0x3a, 0x07,
+       0x67, 0x83, 0x0c, 0xee, 0x89, 0x4d, 0xf6, 0xe6,
+       0x86, 0x07, 0xaa, 0x81, 0xa5, 0x9b, 0x20, 0x8d,
+       0xdb, 0xa1, 0x0f, 0x39, 0x5a, 0xfd, 0x17, 0xbb,
+       0x79, 0xa4, 0xfb, 0x6d, 0xba, 0xb5, 0x13, 0xcc,
+       0x4d, 0xca, 0x01, 0xf3, 0x1a, 0x57, 0x5e, 0xde,
+       0x7d, 0x39, 0x42, 0xb0, 0xfc, 0x04, 0x91, 0xc5,
+       0x7a, 0x23, 0x0d, 0x39, 0xb2, 0xea, 0x1d, 0x9f,
+       0x13, 0x1e, 0x1f, 0x50, 0xd2, 0x58, 0x95, 0xac,
+       0xfb, 0x42, 0xef, 0x55, 0x29, 0xe6, 0x58, 0x25,
+       0x4d, 0x4e, 0xa4, 0xe9, 0x07, 0xe2, 0x03, 0x38,
+       0xcd, 0xd4, 0xb2, 0xaa, 0x23, 0x13, 0x46, 0xd9,
+       0xc2, 0x29, 0xf3, 0x33, 0x39, 0xfc, 0x48, 0x9a,
+       0xa5, 0xfd, 0xed, 0xd1, 0xe4, 0xb1, 0x72, 0x2c,
+       0x61, 0xd8, 0xfc, 0x9c, 0x56, 0x06, 0xee, 0xda,
+       0xed, 0x7d, 0xef, 0xe0, 0xe1, 0xa5, 0xa9, 0x44,
+       0x68, 0x27, 0x79, 0x2c, 0x2d, 0xec, 0x8d, 0xc3,
+       0xd7, 0xac, 0x0d, 0xf3, 0x24, 0xd7, 0x79, 0xad,
+       0xf4, 0x20, 0xc7, 0xed, 0x64, 0x93, 0xf5, 0x23,
+       0x4a, 0x15, 0x2f, 0xa8, 0x36, 0x37, 0x81, 0xdb,
+       0xdd, 0x11, 0x9f, 0x69, 0xe4, 0x35, 0xa3, 0xdc,
+       0x90, 0x85, 0xda, 0xf8, 0xfc, 0x02, 0x29, 0xe0,
+       0x0e, 0xcc, 0x77, 0x19, 0xd5, 0x6b, 0xc9, 0x9a,
+       0xd3, 0xcc, 0xda, 0xbb, 0xc4, 0x9a, 0x28, 0xbd,
+       0x9a, 0xdf, 0x18, 0x3c, 0x3e, 0xef, 0xe0, 0xbe,
+       0xcf, 0x2b, 0x9b, 0xcc, 0x89, 0x90, 0x69, 0x15,
+       0x01, 0xd5, 0x7d, 0xda, 0x67, 0x9b, 0x62, 0x70,
+       0x29, 0x3d, 0x32, 0x26, 0x7d, 0xa8, 0x61, 0x93,
+       0xb3, 0x48, 0x47, 0xd1, 0x28, 0xcc, 0x05, 0x39,
+       0x9e, 0x7b, 0xe4, 0x3d, 0x54, 0xf3, 0xfa, 0x63,
+       0x30, 0x6d, 0xda, 0xb2, 0x74, 0xf9, 0x0c, 0x33,
+       0xdf, 0x2c, 0x56, 0x8f, 0xf3, 0x4e, 0xe3, 0xca,
+       0xda, 0x08, 0x5a, 0x34, 0xb3, 0x0b, 0x99, 0x07,
+       0xe0, 0xaf, 0xcd, 0x23, 0x5b, 0x7e, 0xa7, 0xa8,
+       0x9b, 0xa2, 0x84, 0x41, 0xa0, 0x82, 0x61, 0x45,
+       0x63, 0x3d, 0x2c, 0xab, 0xcc, 0x77, 0x2c, 0xf5,
+       0x38, 0x3d, 0x0d, 0x73, 0xe5, 0x2d, 0xdb, 0xe0,
+       0xab, 0x5d, 0x49, 0x54, 0xea, 0x37, 0x81, 0x56,
+       0xa9, 0xaf, 0xb1, 0xcd, 0xa8, 0x77, 0x6e, 0xe6,
+       0x62, 0x6f, 0xb6, 0x52, 0x87, 0x7d, 0x67, 0x2f,
+       0x6d, 0x25, 0x3d, 0xcc, 0x71, 0x84, 0x81, 0xb3,
+       0xa5, 0x53, 0x95, 0x6a, 0x96, 0x36, 0xbc, 0xa7,
+       0xd2, 0xc6, 0x3a, 0x75, 0x3f, 0xd7, 0x0e, 0x68,
+       0x9b, 0xb9, 0xd8, 0xa2, 0xa6, 0x65, 0x94, 0xdc,
+       0xfc, 0x54, 0x57, 0x05, 0x3f, 0x3e, 0x57, 0xa0,
+       0xb6, 0x59, 0x89, 0x27, 0x7d, 0x54, 0x99, 0xb5,
+       0x8e, 0x50, 0x98, 0x9a, 0x2e, 0x82, 0x58, 0xc5,
+       0xb7, 0x16, 0x28, 0x7a, 0x8a, 0x5a, 0xcc, 0xab,
+       0x4c, 0x4e, 0x5e, 0x80, 0xc7, 0xd4, 0x6e, 0x3e,
+       0x0f, 0xfe, 0x5c, 0x51, 0x91, 0x27, 0x58, 0xa7,
+       0x73, 0x23, 0x54, 0x09, 0xff, 0xab, 0x2d, 0x52,
+       0xe7, 0xef, 0x0c, 0x42, 0x67, 0x81, 0x5a, 0x5e,
+       0x0a, 0x96, 0x13, 0xea, 0xcd, 0x4e, 0xc6, 0xa5,
+       0x9b, 0xe0, 0xd7, 0x3f, 0xf1, 0x09, 0x80, 0x91,
+       0x33, 0x15, 0xbd, 0x08, 0xa2, 0x4e, 0xbb, 0x88,
+       0x86, 0x50, 0x42, 0x4a, 0xfc, 0x9a, 0xd2, 0x03,
+       0xe9, 0xd4, 0x0e, 0x6e, 0x8f, 0xa6, 0x2b, 0x7a,
+       0x8c, 0xc1, 0xd2, 0xf3, 0x1e, 0x49, 0x37, 0x2f,
+       0xeb, 0xd7, 0xe3, 0xeb, 0x23, 0xb7, 0x75, 0x15,
+       0xc3, 0x39, 0xe0, 0xd5, 0xec, 0xf3, 0xf4, 0x5a,
+       0x1a, 0x5b, 0x4c, 0x7c, 0xe3, 0xe0, 0xa5, 0x7c,
+       0x42, 0x17, 0xfa, 0xce, 0x99, 0xeb, 0x58, 0x12,
+       0x9f, 0x5d, 0x97, 0x78, 0xbf, 0x82, 0x9f, 0x48,
+       0x6f, 0x23, 0xfd, 0x2c, 0xb3, 0x95, 0x98, 0x1e,
+       0x9e, 0x19, 0xfa, 0x8f, 0x8e, 0xd1, 0xc9, 0x14,
+       0xa3, 0x6d, 0xf9, 0x86, 0x47, 0xec, 0xbb, 0x24,
+       0x0d, 0x6f, 0xf9, 0x97, 0x43, 0x5b, 0x66, 0x4c,
+       0xc7, 0xed, 0x12, 0xbf, 0x0f, 0xe5, 0xc5, 0x76,
+       0x3d, 0x94, 0x15, 0x8c, 0xc6, 0x89, 0xa6, 0x76,
+       0x44, 0x4d, 0x94, 0x6e, 0x9e, 0x70, 0xda, 0x64,
+       0xaf, 0x97, 0x98, 0xf4, 0x27, 0xea, 0x84, 0x66,
+       0x6c, 0x83, 0x6e, 0xf9, 0x9f, 0x03, 0xc4, 0x59,
+       0x17, 0xfe, 0x00, 0x73, 0x71, 0x80, 0x38, 0x23,
+       0xd0, 0x05, 0xef, 0x64, 0xbd, 0xf2, 0x11, 0x35,
+       0xb7, 0x81, 0x59, 0xb6, 0x63, 0x21, 0xbe, 0x5f,
+       0x85, 0xd9, 0xc8, 0x94, 0x34, 0x35, 0xd6, 0xf1,
+       0x4e, 0x33, 0x7b, 0x07, 0xd5, 0xdc, 0xe9, 0x39,
+       0x9c, 0xc5, 0x46, 0xa9, 0x20, 0x81, 0x82, 0xe8,
+       0xfb, 0x50, 0xa8, 0xc7, 0xf8, 0x12, 0x0e, 0x06,
+       0xb8, 0xaf, 0x73, 0x1b, 0x83, 0x41, 0x5d, 0x97,
+       0xc8, 0x66, 0xbf, 0x7a, 0x89, 0xc2, 0x66, 0x8a,
+       0x31, 0x5f, 0xb5, 0xef, 0xc2, 0x8c, 0x41, 0x5b,
+       0x14, 0x0c, 0x2e, 0x7c, 0x39, 0x6b, 0xf1, 0x0e,
+       0xc9, 0xc2, 0xa7, 0x75, 0x69, 0x81, 0x02, 0x3d,
+       0x73, 0x16, 0xda, 0xaa, 0x46, 0xd6, 0x52, 0x97,
+       0xd1, 0xa1, 0x49, 0xf2, 0xb3, 0x7d, 0x45, 0x70,
+       0x8e, 0x25, 0x37, 0x9f, 0x23, 0x9f, 0x2d, 0x52,
+       0x4b, 0xa9, 0x02, 0x4d, 0x32, 0xeb, 0x59, 0x5d,
+       0xbf, 0x3e, 0xc2, 0xa7, 0x0f, 0x2b, 0x8d, 0xa2,
+       0x12, 0x5f, 0xac, 0x74, 0x57, 0xf9, 0x2f, 0xe7,
+       0xd7, 0x10, 0x94, 0x73, 0x9e, 0x91, 0xce, 0x52,
+       0x36, 0x53, 0x3d, 0xf4, 0x08, 0xd6, 0x19, 0x43,
+       0xf4, 0xf7, 0x37, 0xc7, 0xcc, 0x0c, 0x9f, 0xaf,
+       0x8b, 0xc6, 0xd2, 0x39, 0x49, 0x3d, 0xe0, 0xb8,
+       0xfe, 0x34, 0xe1, 0x21, 0x79, 0x68, 0x71, 0x47,
+       0x9f, 0x4b, 0xa3, 0xa4, 0x4a, 0xa1, 0x5a, 0x8a,
+       0xd8, 0x48, 0x68, 0x93, 0x2c, 0x24, 0x84, 0xe3,
+       0xbf, 0x3a, 0x1d, 0x7b, 0xf2, 0x7c, 0x26, 0x12,
+       0x47, 0x57, 0x9d, 0xfd, 0x12, 0x02, 0x40, 0x0b,
+       0x4c, 0x61, 0xcb, 0x9e, 0x19, 0x39, 0xed, 0xce,
+       0xbb, 0xfa, 0xbb, 0xfb, 0xde, 0x48, 0x0e, 0x6f,
+       0x1f, 0x86, 0xac, 0x08, 0x76, 0x4d, 0xcb, 0x48,
+       0x4d, 0xf3, 0x35, 0xa8, 0x21, 0xbe, 0xfc, 0x31,
+       0x84, 0xee, 0x83, 0x4d, 0x0c, 0x28, 0xad, 0x07,
+       0x16, 0x9f, 0x54, 0x2d, 0x71, 0xce, 0xa8, 0xcb,
+       0x6c, 0x29, 0x6d, 0x76, 0xac, 0x9b, 0x6c, 0xf9,
+       0x0f, 0xcc, 0xec, 0x7e, 0xe1, 0xda, 0xb4, 0xc6,
+       0x0a, 0x1d, 0xa6, 0xa3, 0x0a, 0x5a, 0xde, 0x6a,
+       0xf1, 0x6c, 0xd9, 0x1d, 0xf9, 0xb2, 0x98, 0x93,
+       0xce, 0xad, 0xef, 0xbf, 0x60, 0xa5, 0x0e, 0xec,
+       0x20, 0xce, 0x58, 0x55, 0x05, 0x1f, 0xc1, 0x59,
+       0xcb, 0xae, 0xfb, 0xc3, 0x71, 0x08, 0xba, 0x82,
+       0xea, 0x27, 0x95, 0x09, 0xce, 0x96, 0x2c, 0xbb,
+       0x06, 0xc5, 0x2d, 0xf6, 0x43, 0xf0, 0x83, 0x93,
+       0x0d, 0x9c, 0x60, 0xd5, 0x2c, 0x61, 0x40, 0xa1,
+       0x93, 0x2e, 0x10, 0x5b, 0x25, 0x9b, 0xa8, 0x76,
+       0xbb, 0x8e, 0x06, 0x79, 0x92, 0x2c, 0x02, 0xdd,
+       0x36, 0x74, 0x4d, 0x5b, 0x82, 0x1e, 0x82, 0x9e,
+       0x60, 0x65, 0x93, 0x05, 0x4a, 0x6c, 0x70, 0x0d,
+       0xe2, 0x3d, 0x5c, 0x20, 0x3a, 0xdb, 0x80, 0x89,
+       0x69, 0xa4, 0x17, 0xec, 0xb4, 0x2e, 0xd0, 0xa9,
+       0xab, 0x82, 0x17, 0x36, 0xb2, 0x9a, 0x4c, 0x86,
+       0xbe, 0xd7, 0xc5, 0xae, 0x37, 0xe6, 0x3b, 0x8b,
+       0x98, 0xe2, 0x72, 0xbf, 0x4b, 0x68, 0x84, 0x0c,
+       0x05, 0x35, 0x49, 0x5a, 0x1d, 0x87, 0xb3, 0x40,
+       0xf2, 0x9b, 0x9e, 0x43, 0x57, 0xdc, 0xd9, 0x9a,
+       0x06, 0xef, 0x1f, 0x91, 0x48, 0x3d, 0x21, 0x14,
+       0x8d, 0xb8, 0x52, 0x85, 0x2f, 0x56, 0x3e, 0x5f,
+       0xad, 0xdd, 0xb4, 0x4c, 0x34, 0x41, 0x35, 0x49,
+       0xba, 0xe7, 0xb3, 0xed, 0xbd, 0x0c, 0x67, 0x01,
+       0xb2, 0xa2, 0x9c, 0xd0, 0x28, 0x51, 0xb9, 0x28,
+       0x57, 0x74, 0xa1, 0x10, 0x97, 0xb1, 0x59, 0x1f,
+       0xe2, 0xbb, 0xdd, 0x5e, 0x84, 0xef, 0x14, 0x77,
+       0x10, 0x35, 0x81, 0x52, 0xbe, 0x81, 0xae, 0xf3,
+       0x3b, 0x26, 0x43, 0xe9, 0x11, 0xb2, 0xb3, 0x60,
+       0xe6, 0xa2, 0x3b, 0x05, 0xb8, 0xcd, 0xfc, 0xce,
+       0x8b, 0x48, 0x6f, 0xd9, 0x79, 0x89, 0xc6, 0xd2,
+       0x18, 0xdf, 0x14, 0xa0, 0x9a, 0xf8, 0x5e, 0x58,
+       0xa0, 0x69, 0x94, 0x7d, 0x48, 0xcb, 0x8e, 0x2f,
+       0x65, 0xfb, 0x7f, 0x98, 0x36, 0x60, 0xa8, 0x7c,
+       0xb3, 0x20, 0xe7, 0x6b, 0xf3, 0x8f, 0x19, 0x2c,
+       0x5f, 0x00, 0xf1, 0xc8, 0x7f, 0xd2, 0xa6, 0x9c,
+       0xd6, 0x22, 0x74, 0x8a, 0xb0, 0x52, 0xe2, 0xda,
+       0xb8, 0xb2, 0x6f, 0xe6, 0xca, 0x13, 0xbe, 0x96,
+       0xe8, 0x16, 0x0e, 0x7b, 0x80, 0x58, 0x09, 0xf5,
+       0xa7, 0xc8, 0xc9, 0x05, 0x6b, 0xea, 0x2d, 0x9a,
+       0x67, 0x6c, 0x57, 0xaa, 0x05, 0x30, 0xf3, 0x8e,
+       0xcf, 0x16, 0x31, 0x6e, 0x96, 0xac, 0xc3, 0x99,
+       0xbd, 0xa1, 0xa7, 0xdc, 0x06, 0xf4, 0x8e, 0x29,
+       0x4a, 0x0f, 0x5c, 0x31, 0xdc, 0x6e, 0xb8, 0x83,
+       0x9f, 0x07, 0xa1, 0xbe, 0x10, 0xf3, 0x1b, 0x30,
+       0xb5, 0x6c, 0x30, 0x6e, 0x86, 0xde, 0x86, 0x01,
+       0xf1, 0xd9, 0xe6, 0x61, 0x0b, 0xdd, 0x8d, 0x70,
+       0x46, 0xf0, 0xa1, 0x8d, 0x43, 0xe2, 0xf0, 0x63,
+       0x0a, 0xcf, 0x10, 0x84, 0xa3, 0x20, 0x97, 0x27,
+       0x69, 0x87, 0x58, 0x37, 0xb8, 0x8d, 0x5e, 0xf5,
+       0xfc, 0xc8, 0xb2, 0x0e, 0x10, 0xce, 0xca, 0xa0,
+       0xe7, 0x88, 0x28, 0x98, 0xfa, 0xc6, 0x6f, 0x63,
+       0xe2, 0x8f, 0x6c, 0x17, 0x91, 0x27, 0x46, 0x9b,
+       0x7e, 0x10, 0xc2, 0x65, 0xde, 0x34, 0xfa, 0xfc,
+       0x3c, 0xff, 0x04, 0x9f, 0x5f, 0x2b, 0x8a, 0x65,
+       0xf2, 0xb9, 0xba, 0x8b, 0x01, 0x3b, 0x47, 0x19,
+       0x9f, 0x59, 0x77, 0x6a, 0x55, 0xd8, 0x0a, 0x5b,
+       0xf9, 0x7c, 0x05, 0xd7, 0xf5, 0x97, 0x88, 0xb3,
+       0x34, 0x99, 0x4c, 0x8b, 0x16, 0x5d, 0x68, 0x59,
+       0x51, 0x86, 0x2f, 0x10, 0x94, 0xe5, 0x52, 0xad,
+       0x20, 0xa8, 0x3f, 0xdf, 0x14, 0x20, 0x17, 0x1c,
+       0xce, 0xcc, 0xcb, 0x0c, 0x67, 0x44, 0xc9, 0x32,
+       0x97, 0x24, 0x11, 0x45, 0x59, 0x9e, 0x25, 0x2b,
+       0xee, 0x2a, 0x60, 0x8a, 0xce, 0xe9, 0x8c, 0x8c,
+       0x3b, 0xab, 0xd9, 0x18, 0x2a, 0x5a, 0xee, 0xbe,
+       0xc4, 0x44, 0xcb, 0xe3, 0x8c, 0x0e, 0x46, 0xd0,
+       0xd9, 0x81, 0x82, 0x46, 0x7b, 0xfb, 0x23, 0x5f,
+       0x61, 0x0a, 0xd6, 0xac, 0x5a, 0xab, 0xbb, 0xcd,
+       0xba, 0x8b, 0x02, 0xf9, 0x6b, 0x16, 0x23, 0x1d,
+       0xe5, 0xcb, 0x74, 0x6e, 0x16, 0x38, 0x91, 0xdf,
+       0xf3, 0x5e, 0x89, 0x76, 0x67, 0xe4, 0x02, 0x0a,
+       0x72, 0x41, 0x01, 0x6c, 0xad, 0x8a, 0xe9, 0x01,
+       0xaa, 0xf9, 0x01, 0xda, 0x8c, 0x8f, 0x26, 0xb0,
+       0xa6, 0xf6, 0xac, 0xf6, 0x26, 0x03, 0xd3, 0x38,
+       0x6b, 0x5d, 0xa5, 0xe8, 0xcc, 0x59, 0x67, 0xf3,
+       0x78, 0xef, 0x67, 0x7b, 0xad, 0x72, 0xc8, 0x8b,
+       0xb0, 0x5a, 0xe2, 0x91, 0xd3, 0x05, 0xc9, 0xef,
+       0x49, 0xb5, 0x2d, 0xef, 0x27, 0xdb, 0xb8, 0x83,
+       0x1b, 0xcb, 0x18, 0x22, 0x95, 0x58, 0x89, 0x85,
+       0x2c, 0xa8, 0x68, 0xde, 0xf0, 0x69, 0x14, 0x16,
+       0xaf, 0xd0, 0x57, 0x21, 0xcc, 0x06, 0xdc, 0xa4,
+       0x43, 0x46, 0xbb, 0x0d, 0x8c, 0x9b, 0x84, 0x33,
+       0xb8, 0xa1, 0x02, 0x0e, 0x4b, 0x2a, 0x40, 0x9d,
+       0x69, 0xf5, 0x67, 0x45, 0xbf, 0x48, 0xb5, 0x19,
+       0x9f, 0x5d, 0xb5, 0xc1, 0x77, 0xe6, 0x52, 0x0c,
+       0x3f, 0x47, 0xbe, 0xab, 0xfb, 0xb8, 0xe9, 0x70,
+       0xf6, 0x8c, 0xdc, 0x69, 0xd7, 0xa6, 0x7c, 0x96,
+       0xee, 0x43, 0x0a, 0x3a, 0xf0, 0x7c, 0x3f, 0x89,
+       0x11, 0x72, 0xd0, 0x9f, 0x6c, 0x1d, 0x17, 0xff,
+       0x09, 0xbd, 0xba, 0x9d, 0x50, 0x94, 0x03, 0xa5,
+       0xf1, 0xec, 0x5d, 0xdf, 0xf5, 0x41, 0x18, 0xda,
+       0x70, 0x4b, 0xcf, 0xd1, 0x89, 0x72, 0x33, 0x87,
+       0x38, 0xa3, 0x1e, 0x62, 0x91, 0x8d, 0xd9, 0xad,
+       0x66, 0x9b, 0x8a, 0xc7, 0x88, 0x33, 0x19, 0x2d,
+       0x40, 0x5c, 0x26, 0x40, 0xac, 0x58, 0x5f, 0x86,
+       0xe1, 0x63, 0xd7, 0x7a, 0x04, 0xad, 0x39, 0xaa,
+       0x03, 0xca, 0xd3, 0x94, 0x9f, 0xb5, 0x62, 0xa1,
+       0x5a, 0xae, 0x8f, 0x72, 0x33, 0x7f, 0xe4, 0x2b,
+       0xe3, 0xb5, 0x85, 0x06, 0xed, 0x42, 0xbe, 0x0b,
+       0xb2, 0x62, 0x74, 0xd9, 0x6f, 0x49, 0xd2, 0x29,
+       0xaf, 0xbf, 0xaa, 0x61, 0x4e, 0xfb, 0x61, 0xaf,
+       0x7f, 0x0e, 0x2f, 0x9d, 0x44, 0x9d, 0x80, 0xc6,
+       0x26, 0x9c, 0x8a, 0x40, 0x77, 0x7b, 0x9a, 0x18,
+       0xb1, 0x6d, 0xd2, 0x15, 0x8e, 0xfc, 0x1b, 0x2f,
+       0x7a, 0x84, 0x33, 0xac, 0xd6, 0x89, 0xcf, 0xb2,
+       0x3b, 0x8a, 0x32, 0x70, 0xf1, 0x30, 0xd4, 0x7c,
+       0x38, 0x87, 0xc7, 0x29, 0x3f, 0x21, 0x16, 0xe2,
+       0xfe, 0x4b, 0x2d, 0x9e, 0xcf, 0x22, 0x38, 0x47,
+       0xb0, 0x7a, 0xd1, 0xa3, 0xf2, 0x44, 0x19, 0x5e,
+       0x86, 0xe0, 0xef, 0x66, 0x16, 0xa4, 0x62, 0x73,
+       0x9c, 0x55, 0x7e, 0x44, 0x1b, 0x3b, 0x2d, 0xc2,
+       0xc9, 0xe8, 0xcc, 0xe6, 0x20, 0xae, 0x21, 0x34,
+       0xd0, 0xe2, 0x16, 0x2b, 0xba, 0x0b, 0x3e, 0xd5,
+       0x9e, 0x7f, 0x9b, 0x6c, 0xf6, 0x97, 0xfb, 0xb6,
+       0x80, 0x36, 0xb5, 0xf2, 0x2c, 0x3f, 0x13, 0x11,
+       0x54, 0x01, 0x25, 0x9a, 0x2a, 0x43, 0x77, 0x69,
+       0x8b, 0xfe, 0xe1, 0x8d, 0x14, 0x1a, 0xf6, 0x66,
+       0x38, 0x67, 0x62, 0xf5, 0x08, 0x51, 0x83, 0xf9,
+       0x19, 0xa3, 0x73, 0x49, 0x0b, 0xf8, 0x59, 0x64,
+       0x0c, 0xb9, 0xef, 0x97, 0xbd, 0xed, 0x06, 0x52,
+       0xd4, 0x5d, 0xca, 0xcf, 0x7e, 0xa6, 0x82, 0xc8,
+       0x87, 0xc2, 0x4b, 0x4f, 0x03, 0x36, 0xc0, 0x67,
+       0x19, 0xce, 0xd8, 0x45, 0xcb, 0xbe, 0xa3, 0xd5,
+       0xa7, 0xfc, 0x8c, 0xea, 0x00, 0x4c, 0xe6, 0x14,
+       0xdc, 0x83, 0x33, 0x1f, 0x91, 0x09, 0x7a, 0xc8,
+       0x67, 0xc0, 0x29, 0xc5, 0x0e, 0x22, 0x05, 0x2d,
+       0xe2, 0x0d, 0xe1, 0x1d, 0xd9, 0x05, 0x04, 0x36,
+       0x9c, 0x34, 0x33, 0xe0, 0x4f, 0xc9, 0x8b, 0x31,
+       0x3f, 0x03, 0x0f, 0x2a, 0xdf, 0x10, 0xa2, 0xc1,
+       0xbf, 0x77, 0x38, 0xe3, 0x20, 0x64, 0xf3, 0xcc,
+       0xc7, 0xd4, 0x92, 0x54, 0xb2, 0xae, 0x57, 0xd7,
+       0xe1, 0x0c, 0xed, 0xd6, 0xf4, 0xdd, 0xa9, 0x9f,
+       0x27, 0xb4, 0x75, 0x2d, 0x6e, 0xae, 0xc2, 0xfc,
+       0xfc, 0x4c, 0x09, 0x21, 0xa6, 0xaf, 0x88, 0xda,
+       0x1a, 0x9d, 0x56, 0x59, 0xa5, 0xe1, 0x8b, 0x3d,
+       0x84, 0xf4, 0x03, 0x53, 0x41, 0x9c, 0x19, 0xb7,
+       0x9f, 0x56, 0x69, 0x54, 0x94, 0xc5, 0x00, 0xba,
+       0x58, 0x33, 0x62, 0x0c, 0xce, 0xc4, 0x9f, 0x61,
+       0x71, 0x8a, 0xa9, 0xff, 0xe3, 0x68, 0x0e, 0x61,
+       0xdf, 0x92, 0xf9, 0xb3, 0x03, 0xac, 0xba, 0x37,
+       0x50, 0x4d, 0x0b, 0xd7, 0xf9, 0x1b, 0xd3, 0x8d,
+       0x48, 0x66, 0x56, 0x44, 0xb4, 0xd0, 0x99, 0x3c,
+       0x77, 0x52, 0x44, 0x0e, 0x35, 0x61, 0xd4, 0x73,
+       0xac, 0x03, 0x34, 0x65, 0xcd, 0x88, 0x33, 0x77,
+       0x24, 0x78, 0x51, 0xa6, 0xf9, 0x16, 0xcf, 0xc5,
+       0xcd, 0xfe, 0x4a, 0x68, 0x77, 0xc6, 0x98, 0xce,
+       0xe4, 0xf9, 0x8e, 0x98, 0x36, 0x45, 0x87, 0xbe,
+       0x8f, 0xd1, 0x37, 0xef, 0x62, 0x7e, 0xd6, 0xc1,
+       0xf7, 0x5b, 0x64, 0xd2, 0x0a, 0x4e, 0xf2, 0x3a,
+       0xf2, 0x93, 0xac, 0x4b, 0x88, 0x66, 0x50, 0x76,
+       0x58, 0x4b, 0x0a, 0x81, 0x8d, 0x44, 0xd6, 0xa7,
+       0x6a, 0xb3, 0x53, 0x44, 0xee, 0x34, 0x8d, 0x3b,
+       0xc0, 0xba, 0x6f, 0x61, 0x76, 0xb4, 0x25, 0xe8,
+       0xab, 0x1f, 0xfc, 0xaa, 0x96, 0xd6, 0xfc, 0xcd,
+       0x41, 0xeb, 0xe1, 0xa6, 0x5a, 0xb0, 0xb6, 0xc4,
+       0x6f, 0xc3, 0x82, 0x21, 0x9c, 0xb6, 0x60, 0xd9,
+       0xd2, 0xb7, 0xe1, 0x36, 0x72, 0x33, 0xeb, 0x9b,
+       0x22, 0xe4, 0x86, 0x71, 0x08, 0x3e, 0x83, 0xca,
+       0x07, 0xad, 0x6b, 0x58, 0x27, 0xc4, 0xf2, 0x91,
+       0xd0, 0x48, 0x6e, 0xe2, 0x56, 0x07, 0x56, 0x0f,
+       0x76, 0x31, 0x6e, 0x06, 0xff, 0x88, 0x38, 0xc3,
+       0x72, 0x87, 0xbe, 0xb3, 0xd1, 0x0d, 0x70, 0xc1,
+       0xb7, 0x82, 0x9f, 0x69, 0xc7, 0x67, 0x41, 0xae,
+       0x66, 0x72, 0xca, 0xff, 0xa9, 0x62, 0x68, 0x36,
+       0x2c, 0x05, 0x61, 0x76, 0x9b, 0x8e, 0x53, 0xed,
+       0xe8, 0x4b, 0x71, 0xf0, 0x06, 0xcc, 0x22, 0x97,
+       0xab, 0x6d, 0x4a, 0xdd, 0x41, 0x34, 0x0d, 0xb9,
+       0x36, 0xe5, 0x1a, 0x61, 0xf2, 0xcd, 0x85, 0x8f,
+       0x06, 0x2a, 0xd7, 0x1c, 0x13, 0xb9, 0xb3, 0xf2,
+       0x54, 0x38, 0x95, 0x2c, 0xad, 0x54, 0xac, 0x7d,
+       0xcd, 0x4b, 0xeb, 0xf9, 0x1b, 0x8c, 0x9b, 0x98,
+       0x6b, 0x20, 0xce, 0xa6, 0x83, 0xdb, 0xc2, 0xd0,
+       0xd8, 0x65, 0x86, 0x4c, 0x2c, 0xa3, 0x66, 0x69,
+       0xcc, 0x02, 0x70, 0x77, 0xfe, 0xbd, 0x69, 0x00,
+       0xcd, 0xed, 0xbf, 0x67, 0x42, 0xbe, 0x70, 0x86,
+       0x2f, 0x94, 0xf0, 0xa6, 0xfa, 0x9d, 0x23, 0xe2,
+       0x33, 0xf3, 0x54, 0xce, 0xc0, 0x79, 0x09, 0x57,
+       0x75, 0x47, 0xb4, 0x90, 0xe6, 0x9b, 0x6b, 0x38,
+       0xc7, 0xab, 0xba, 0x8f, 0xb3, 0x4c, 0x98, 0xf8,
+       0x73, 0x6b, 0xca, 0xc0, 0x6f, 0x62, 0x9a, 0x49,
+       0xd0, 0x9a, 0xf3, 0xa7, 0x56, 0x01, 0xf9, 0x0c,
+       0x61, 0x09, 0x69, 0x7e, 0xa6, 0xe0, 0x7e, 0x52,
+       0x29, 0xa7, 0xbb, 0x46, 0xa5, 0x1c, 0x9f, 0x55,
+       0xf2, 0x09, 0x4c, 0x0c, 0xe9, 0x37, 0x13, 0x5c,
+       0x48, 0xf5, 0x87, 0x26, 0x09, 0x89, 0x77, 0x7a,
+       0x54, 0x07, 0xc0, 0x77, 0xfa, 0x1c, 0x7d, 0x7b,
+       0x6d, 0x96, 0x6a, 0x5e, 0x91, 0x58, 0x67, 0x76,
+       0x5c, 0xb9, 0x43, 0x47, 0x2d, 0xb9, 0xc7, 0x99,
+       0x07, 0xf4, 0xa6, 0x71, 0xdf, 0x89, 0x28, 0x92,
+       0xa3, 0x47, 0x07, 0x49, 0x32, 0xad, 0x0c, 0x0a,
+       0x3b, 0x0b, 0xe2, 0x07, 0x35, 0x8e, 0xa6, 0xa3,
+       0x03, 0x65, 0xf8, 0x07, 0x93, 0x43, 0x99, 0x23,
+       0x3e, 0x8a, 0xa9, 0x78, 0xd9, 0xac, 0x3d, 0xbe,
+       0xe3, 0xf6, 0x02, 0xd0, 0x9d, 0xf8, 0x1c, 0x61,
+       0xf1, 0x2d, 0xfd, 0xc0, 0xea, 0xaf, 0xf6, 0xec,
+       0xfc, 0x26, 0x96, 0x98, 0xaa, 0xc4, 0x6d, 0x24,
+       0x90, 0x3e, 0x42, 0xd9, 0x84, 0x55, 0x3a, 0x2a,
+       0x85, 0x4f, 0x0e, 0x47, 0xd2, 0xd0, 0xf6, 0xb5,
+       0xd0, 0x2c, 0x3f, 0xc3, 0x32, 0xf8, 0x4b, 0x7c,
+       0x4b, 0xd0, 0x06, 0x5d, 0xac, 0xfd, 0x99, 0xb0,
+       0xe6, 0x1a, 0xb0, 0x2d, 0xd7, 0xd7, 0x08, 0xfe,
+       0x17, 0x2e, 0xc4, 0x70, 0x8f, 0xf8, 0xac, 0x94,
+       0x44, 0x2b, 0xe4, 0xb3, 0x08, 0xeb, 0x4d, 0x96,
+       0xeb, 0x92, 0x11, 0xcb, 0x33, 0x69, 0x83, 0x9d,
+       0x04, 0x67, 0xae, 0xde, 0xdc, 0x81, 0x0b, 0x64,
+       0x97, 0x59, 0x34, 0x80, 0x7a, 0x74, 0x80, 0x78,
+       0x54, 0xe2, 0x1b, 0x2b, 0xb3, 0xe4, 0x9c, 0xce,
+       0xdf, 0xf9, 0x7e, 0x0f, 0xcb, 0x12, 0x97, 0xb5,
+       0x44, 0x68, 0x9b, 0x40, 0xf9, 0x8d, 0x3f, 0x0e,
+       0x50, 0x6a, 0x21, 0xd3, 0xfa, 0x83, 0xa6, 0x29,
+       0x15, 0xec, 0x5b, 0x66, 0xb1, 0xec, 0x86, 0x8e,
+       0xa2, 0xb5, 0x42, 0x99, 0x7c, 0xd9, 0x48, 0x23,
+       0x5d, 0x3e, 0xd0, 0xce, 0xe2, 0xe6, 0xff, 0xd3,
+       0x76, 0x3d, 0x31, 0x6e, 0x1d, 0xe7, 0xfd, 0x9b,
+       0xe1, 0x90, 0x1a, 0xae, 0x59, 0x6b, 0xb8, 0x5e,
+       0x08, 0xb4, 0x2b, 0x18, 0xb3, 0x14, 0x6b, 0x30,
+       0xa9, 0x0b, 0x3c, 0x19, 0x3a, 0xa8, 0x81, 0x02,
+       0x0c, 0x37, 0x8c, 0x4b, 0xa7, 0x3a, 0xac, 0x65,
+       0x1f, 0x94, 0xb6, 0x07, 0x66, 0xe3, 0x00, 0x3e,
+       0x0a, 0x45, 0x0b, 0x28, 0x45, 0x0f, 0x43, 0x9a,
+       0x36, 0xb8, 0x86, 0x0e, 0x94, 0x51, 0x14, 0xdb,
+       0x20, 0x07, 0x5a, 0x71, 0x01, 0x19, 0x48, 0x81,
+       0x75, 0x9b, 0x16, 0x42, 0x4f, 0x5c, 0xc3, 0x07,
+       0x1d, 0xd5, 0x9b, 0x7b, 0x93, 0x9b, 0x1c, 0x7c,
+       0xe8, 0x41, 0x4d, 0x51, 0x60, 0xb9, 0x7f, 0xfb,
+       0x7d, 0x33, 0xf3, 0xc8, 0x47, 0xbe, 0xc7, 0xdd,
+       0x95, 0xed, 0x2c, 0x60, 0x43, 0xdc, 0x7d, 0x9c,
+       0x37, 0x33, 0xef, 0x37, 0xdf, 0xdf, 0xdf, 0xf7,
+       0xbd, 0x98, 0x7a, 0xd2, 0x43, 0xa7, 0x01, 0x55,
+       0xc9, 0x6b, 0xa4, 0x57, 0xad, 0x2d, 0x2a, 0xb4,
+       0x39, 0xea, 0xeb, 0x74, 0x4d, 0xbf, 0xbb, 0x1e,
+       0x89, 0xad, 0x83, 0xa7, 0x4e, 0xa7, 0x2d, 0xfe,
+       0xe9, 0x1f, 0x67, 0xd1, 0xa3, 0xf8, 0x3c, 0x2f,
+       0x28, 0xde, 0x84, 0x5a, 0xe2, 0xef, 0x29, 0x62,
+       0x15, 0x98, 0xbd, 0xaf, 0x3c, 0x8f, 0x74, 0x68,
+       0x67, 0x70, 0xfc, 0xb5, 0x59, 0x5e, 0xd3, 0x8b,
+       0x7f, 0xbd, 0x2b, 0x66, 0x7e, 0x49, 0x97, 0x77,
+       0x4f, 0x60, 0x79, 0xa1, 0xa6, 0xac, 0x39, 0x45,
+       0x4e, 0xd6, 0x48, 0x07, 0x26, 0x05, 0xb2, 0x92,
+       0x3e, 0xb0, 0xfd, 0x4a, 0x56, 0x3e, 0xcc, 0x9c,
+       0x94, 0x66, 0x5e, 0x99, 0x89, 0x7c, 0x4d, 0x2e,
+       0x16, 0x70, 0xff, 0xe0, 0x9b, 0x7b, 0x98, 0x09,
+       0x96, 0xd7, 0x53, 0xef, 0x59, 0xa3, 0x3e, 0x7f,
+       0xf1, 0xfa, 0xf1, 0xd3, 0x27, 0xe9, 0x26, 0x8f,
+       0x72, 0x3e, 0x61, 0xf3, 0xe8, 0xf8, 0x8c, 0xc1,
+       0xd9, 0xb3, 0xfc, 0x6c, 0x1d, 0x25, 0xcf, 0x71,
+       0x2a, 0x11, 0x20, 0x53, 0xe9, 0x8e, 0x65, 0xb3,
+       0xf8, 0x7e, 0x94, 0x2a, 0x32, 0x3e, 0x2f, 0xf5,
+       0x54, 0xc9, 0x85, 0xcc, 0x1f, 0x0a, 0xe1, 0x67,
+       0x54, 0x0f, 0xc9, 0xd3, 0x72, 0xd4, 0x22, 0xb1,
+       0xb3, 0x93, 0x8b, 0xfb, 0xfb, 0xe9, 0x39, 0xe8,
+       0xe9, 0x32, 0x32, 0xd6, 0xa3, 0x4e, 0x40, 0xe0,
+       0x71, 0x97, 0xee, 0xd6, 0x08, 0x85, 0x7e, 0x2e,
+       0xfd, 0x66, 0x82, 0x0a, 0x37, 0xe9, 0xb1, 0x88,
+       0x5f, 0xc4, 0x78, 0xf8, 0x3b, 0x37, 0x53, 0x5d,
+       0xcf, 0x28, 0x21, 0x77, 0x2b, 0x91, 0xa9, 0x50,
+       0x33, 0x7b, 0x2b, 0x4f, 0x62, 0x44, 0x4c, 0x4b,
+       0xbf, 0xac, 0x5f, 0x98, 0x20, 0xea, 0xce, 0x97,
+       0x07, 0xc6, 0x82, 0x1c, 0x6e, 0x80, 0xa8, 0xdb,
+       0x87, 0xd7, 0xed, 0xf7, 0x68, 0x03, 0x75, 0xb8,
+       0xd5, 0x28, 0x3d, 0xa0, 0x79, 0x17, 0xf2, 0xec,
+       0x55, 0x6f, 0xda, 0xa3, 0x2b, 0xa3, 0x2c, 0x25,
+       0x3b, 0x73, 0x38, 0xd8, 0xef, 0x3f, 0xbe, 0xbf,
+       0x02, 0x3f, 0xdf, 0xb3, 0x64, 0xdb, 0x76, 0xb4,
+       0x2c, 0xa1, 0x69, 0x65, 0x2e, 0x18, 0xed, 0x36,
+       0xcd, 0x55, 0x63, 0xb3, 0xf5, 0xcb, 0x37, 0xe6,
+       0x97, 0xf9, 0x13, 0x60, 0xdd, 0xd7, 0xd1, 0x1d,
+       0xac, 0x52, 0x98, 0xa8, 0xb8, 0x32, 0xfc, 0xec,
+       0x7d, 0xc3, 0x9e, 0x2b, 0x44, 0xdb, 0xb2, 0x8b,
+       0x5f, 0x7c, 0xb0, 0xe7, 0xf6, 0x8c, 0x69, 0xdc,
+       0x33, 0x19, 0xf3, 0x43, 0x75, 0x78, 0x6a, 0x46,
+       0x65, 0xa5, 0x4a, 0xd8, 0x5a, 0x9c, 0x8b, 0x9c,
+       0xec, 0x89, 0x54, 0x2e, 0xf4, 0xf4, 0xf9, 0x3e,
+       0x9f, 0x3e, 0x72, 0x05, 0x73, 0x79, 0xf6, 0xf4,
+       0xa9, 0xea, 0xc0, 0x94, 0x0f, 0x47, 0xff, 0xa3,
+       0xc4, 0x87, 0xf2, 0xe9, 0x79, 0x06, 0xfa, 0xe0,
+       0xe9, 0x51, 0x6a, 0x53, 0x17, 0x9b, 0x13, 0x13,
+       0x7f, 0x2a, 0x1d, 0x84, 0x9e, 0x0b, 0x75, 0xf3,
+       0x85, 0x67, 0xd3, 0x8f, 0x2e, 0xe6, 0x12, 0x12,
+       0xd2, 0xef, 0x46, 0xc8, 0xc1, 0x83, 0x67, 0x34,
+       0xfa, 0x24, 0xa9, 0xc8, 0x92, 0x30, 0x5a, 0x3a,
+       0x96, 0x97, 0x27, 0x25, 0xa8, 0x45, 0x68, 0x77,
+       0x51, 0x69, 0x97, 0xd2, 0x3c, 0x99, 0xd5, 0xf1,
+       0xb7, 0xc7, 0x33, 0x67, 0x8e, 0x09, 0x48, 0xcc,
+       0xe4, 0x74, 0x1a, 0x89, 0x98, 0xd9, 0x87, 0x74,
+       0x16, 0xf1, 0xe4, 0x24, 0x1b, 0x97, 0xf3, 0x12,
+       0x21, 0xe1, 0xf8, 0x0d, 0x0e, 0xe6, 0xee, 0xa7,
+       0xcf, 0x26, 0x65, 0x79, 0x2b, 0x95, 0x48, 0x12,
+       0x30, 0x1a, 0x2f, 0x65, 0x5c, 0x2c, 0xa6, 0x54,
+       0x2f, 0x33, 0xf7, 0x20, 0xc5, 0x09, 0x99, 0xe2,
+       0xb8, 0x8b, 0x05, 0x4f, 0x3c, 0xeb, 0x61, 0x02,
+       0xb9, 0x09, 0x7f, 0xd3, 0x0d, 0x67, 0xda, 0xb0,
+       0x38, 0xff, 0xfc, 0xf8, 0x30, 0x8c, 0x92, 0xb8,
+       0xe3, 0xba, 0x9a, 0x2e, 0xd7, 0x86, 0x5b, 0x99,
+       0xb3, 0xa0, 0xf9, 0xed, 0xf1, 0xc2, 0x27, 0x75,
+       0x72, 0x36, 0x93, 0x67, 0x58, 0xbc, 0x5f, 0x7e,
+       0x93, 0x54, 0xeb, 0xad, 0xb3, 0x30, 0x96, 0xd4,
+       0xa9, 0xf2, 0x32, 0x5c, 0x77, 0x74, 0x8a, 0xce,
+       0x9d, 0x1f, 0x48, 0x9f, 0x24, 0x01, 0x76, 0x4f,
+       0x15, 0x18, 0xe6, 0xcc, 0x6a, 0x7e, 0x6b, 0x9c,
+       0x29, 0x07, 0xf8, 0x62, 0x3b, 0xe8, 0x84, 0xb5,
+       0x56, 0xf6, 0xe7, 0xb5, 0x60, 0x12, 0x3e, 0x7a,
+       0x91, 0x42, 0xb1, 0x31, 0xdf, 0x63, 0xf6, 0x19,
+       0xef, 0x52, 0xd1, 0x33, 0x57, 0xa9, 0x85, 0xc8,
+       0xd4, 0x8c, 0x03, 0x13, 0x57, 0x67, 0x62, 0xd6,
+       0xf3, 0xbd, 0xf6, 0xa1, 0x3a, 0xe7, 0xf0, 0x27,
+       0xb7, 0x5e, 0x9c, 0xbc, 0x8b, 0xe1, 0xf1, 0xc4,
+       0x57, 0x45, 0xc7, 0x23, 0x92, 0x79, 0xf1, 0x21,
+       0xe1, 0x23, 0x87, 0x7a, 0x39, 0xfb, 0x25, 0x93,
+       0xb6, 0xd2, 0xc0, 0x5b, 0x15, 0x2e, 0xff, 0x68,
+       0xe3, 0x41, 0x1f, 0x1d, 0xc4, 0x01, 0x0b, 0x38,
+       0xe1, 0xd0, 0x4d, 0xd2, 0x48, 0x61, 0x99, 0x72,
+       0x8e, 0x6c, 0x11, 0x96, 0xfe, 0xc4, 0x41, 0xa3,
+       0xec, 0x76, 0x2d, 0x75, 0xbc, 0xb3, 0x64, 0x9b,
+       0xb1, 0x8b, 0xf9, 0x18, 0x7d, 0x57, 0x3c, 0x15,
+       0x43, 0x53, 0x38, 0x03, 0x41, 0x2d, 0x7c, 0x96,
+       0x76, 0x5e, 0xd9, 0xd8, 0x04, 0xa0, 0xd0, 0xde,
+       0x39, 0x98, 0x59, 0x94, 0xc9, 0x56, 0x15, 0xb3,
+       0xb3, 0xd9, 0x08, 0xcf, 0x49, 0xd3, 0x22, 0x1d,
+       0xdf, 0x28, 0x50, 0x24, 0xea, 0x87, 0x7d, 0x84,
+       0xa7, 0x88, 0x6d, 0x91, 0xe9, 0x0e, 0xf0, 0x50,
+       0x04, 0x35, 0x6f, 0x05, 0x49, 0x1f, 0x3e, 0x64,
+       0x3e, 0x51, 0x2c, 0xbd, 0x96, 0xd1, 0xc6, 0x35,
+       0xad, 0xd9, 0xdd, 0xe7, 0x16, 0xad, 0x10, 0x57,
+       0x4a, 0x15, 0x7a, 0x89, 0x38, 0xba, 0x76, 0x27,
+       0x6b, 0xa5, 0x3a, 0x74, 0xbd, 0xf1, 0x74, 0xe5,
+       0x78, 0x50, 0xba, 0xa1, 0xcf, 0xe1, 0xbf, 0xb5,
+       0x6f, 0x6c, 0x7e, 0xc0, 0x96, 0x87, 0xf0, 0x0c,
+       0x0d, 0xb6, 0x41, 0xdb, 0x76, 0x85, 0x06, 0xcd,
+       0xb9, 0x52, 0x93, 0x08, 0x26, 0x5d, 0x54, 0x48,
+       0xfd, 0x43, 0xfb, 0x5d, 0xd4, 0x20, 0x7f, 0xe2,
+       0xbd, 0x4c, 0x76, 0x1d, 0xd4, 0x23, 0x74, 0xcc,
+       0xb9, 0x5d, 0x8a, 0xda, 0xf9, 0xd1, 0x48, 0xe2,
+       0x71, 0xc2, 0x9b, 0x30, 0xde, 0x01, 0xd9, 0x1c,
+       0x1a, 0xd5, 0x61, 0x43, 0x7e, 0x51, 0x34, 0x80,
+       0xf3, 0x76, 0x1e, 0x7a, 0x7f, 0xa7, 0xd3, 0xcb,
+       0xdc, 0x80, 0x37, 0xdf, 0xfa, 0xc1, 0xd5, 0x15,
+       0xca, 0x25, 0xa1, 0xe1, 0x57, 0x1b, 0x48, 0xbb,
+       0xf2, 0x42, 0xbd, 0xfa, 0x93, 0x0a, 0x7c, 0xd8,
+       0x88, 0x50, 0xa3, 0x3b, 0x1b, 0x90, 0xe1, 0xbe,
+       0x05, 0xa6, 0xb5, 0x8c, 0x89, 0x2b, 0xc2, 0x26,
+       0x78, 0x49, 0xc9, 0x47, 0x41, 0x64, 0xf4, 0x04,
+       0x1b, 0x48, 0x3a, 0xb4, 0xd1, 0x9e, 0xd9, 0x7d,
+       0x98, 0x9c, 0x59, 0xed, 0x4c, 0xaa, 0x5e, 0x42,
+       0x23, 0xb0, 0x0c, 0x79, 0x4d, 0x04, 0x31, 0x31,
+       0x35, 0x8d, 0xb5, 0x26, 0x37, 0x45, 0xe1, 0x0c,
+       0x24, 0xdc, 0xda, 0x53, 0x70, 0x9a, 0x94, 0x48,
+       0xfe, 0xe4, 0x82, 0x22, 0xf3, 0x0e, 0x9d, 0x75,
+       0xf8, 0x88, 0x49, 0xbf, 0xe6, 0xca, 0xee, 0x72,
+       0xe6, 0x49, 0xb6, 0xa7, 0x90, 0x5a, 0x78, 0xfa,
+       0xa0, 0xe8, 0xfe, 0xaf, 0x62, 0xf3, 0xa0, 0x6c,
+       0xa7, 0x03, 0xac, 0xcd, 0x48, 0x6d, 0xb5, 0x48,
+       0x6a, 0x7b, 0x68, 0xa8, 0xe9, 0x01, 0xfc, 0x72,
+       0x1c, 0x0f, 0x6e, 0xb2, 0x0f, 0xb7, 0x9e, 0x8c,
+       0xca, 0x00, 0x4e, 0xd9, 0x91, 0xca, 0xde, 0xf4,
+       0xb6, 0x3c, 0x64, 0xde, 0x26, 0x8c, 0xff, 0x05,
+       0x2a, 0x94, 0x23, 0x96, 0x8c, 0xb7, 0xd5, 0xa6,
+       0x80, 0xa5, 0xb5, 0xab, 0xf1, 0x19, 0xe5, 0xfb,
+       0x22, 0xb3, 0xd2, 0x26, 0xcd, 0xd0, 0xbd, 0x93,
+       0x46, 0xb1, 0x67, 0x34, 0xb4, 0xc2, 0x35, 0xea,
+       0x34, 0x25, 0x2c, 0x9f, 0xc2, 0xaf, 0x5d, 0x77,
+       0xa6, 0x3b, 0x95, 0x25, 0x8a, 0x0c, 0x11, 0x1f,
+       0x5a, 0x2e, 0xd1, 0xde, 0xd7, 0xfd, 0xf4, 0xc4,
+       0xe4, 0x50, 0xd8, 0xd9, 0xb1, 0xcd, 0x8c, 0x81,
+       0x9c, 0x58, 0x11, 0x9b, 0x0e, 0x28, 0x83, 0xfc,
+       0x0b, 0x09, 0x51, 0x6b, 0xe6, 0x96, 0xcc, 0x12,
+       0x26, 0x96, 0xe3, 0xd3, 0xce, 0x58, 0x00, 0xe2,
+       0x74, 0xcd, 0x2d, 0x12, 0x90, 0x8d, 0x9f, 0xbc,
+       0x60, 0xa8, 0x5f, 0x6a, 0xbb, 0xc9, 0x13, 0xe8,
+       0x22, 0xa7, 0xc2, 0x07, 0xb1, 0x33, 0x0c, 0x06,
+       0x5f, 0x39, 0x5d, 0x88, 0x23, 0x1a, 0x13, 0xbe,
+       0x8f, 0x67, 0xb2, 0x4a, 0x12, 0xdb, 0x94, 0x2b,
+       0x54, 0x72, 0xd9, 0x48, 0x17, 0xd7, 0x72, 0xd1,
+       0x85, 0x35, 0x3c, 0x71, 0x92, 0x7d, 0xc8, 0x52,
+       0x69, 0x8f, 0x21, 0xeb, 0x59, 0x18, 0xb5, 0x5e,
+       0x30, 0x61, 0x66, 0x55, 0xfc, 0x00, 0xd4, 0x3c,
+       0xa8, 0x31, 0x2c, 0x0a, 0x4e, 0xd1, 0x83, 0xc8,
+       0xf9, 0x5c, 0xc2, 0xce, 0xa3, 0xda, 0x52, 0x1a,
+       0x35, 0x2d, 0x37, 0xdc, 0xcc, 0xba, 0x30, 0xd3,
+       0x2e, 0x40, 0x43, 0x9f, 0x95, 0x25, 0xc4, 0x51,
+       0xaa, 0x0b, 0x28, 0x10, 0x8c, 0xdf, 0x39, 0x1e,
+       0xf6, 0xfb, 0x31, 0x4b, 0xd1, 0x52, 0x88, 0xfb,
+       0x00, 0x4f, 0xb4, 0x0f, 0x23, 0x3a, 0x3f, 0xf0,
+       0x09, 0x75, 0x01, 0xa3, 0xf5, 0x33, 0x0d, 0xdb,
+       0xfb, 0x21, 0x5e, 0xb4, 0x9c, 0xf7, 0x8f, 0xcd,
+       0x86, 0x9d, 0xd1, 0xa2, 0xf7, 0x11, 0x4b, 0x27,
+       0x17, 0x5a, 0x78, 0x88, 0x05, 0x74, 0x9b, 0x68,
+       0x53, 0x6c, 0xfa, 0xf2, 0x3f, 0xf4, 0x27, 0x29,
+       0xc6, 0xd8, 0x67, 0x5d, 0x79, 0xdb, 0xd5, 0x3b,
+       0xc1, 0x4e, 0x4d, 0x42, 0x51, 0x78, 0xf1, 0xa9,
+       0x76, 0x38, 0x2b, 0x83, 0x59, 0x91, 0x32, 0x4d,
+       0x12, 0xb5, 0x1d, 0x28, 0xe3, 0x7e, 0xde, 0x84,
+       0xbb, 0x6e, 0xff, 0x23, 0xdf, 0x20, 0x46, 0xb6,
+       0x4b, 0x06, 0x97, 0x09, 0xea, 0x90, 0xf6, 0x9c,
+       0xdd, 0x82, 0x67, 0x1f, 0xf1, 0x0a, 0xed, 0xd9,
+       0xb5, 0xe1, 0xb9, 0x27, 0xf4, 0xc0, 0xae, 0xba,
+       0x76, 0x36, 0x32, 0x1d, 0xf4, 0xb5, 0xec, 0xb7,
+       0x46, 0x0c, 0xfc, 0xa3, 0xbf, 0xa6, 0xfd, 0x32,
+       0x7f, 0x4a, 0x14, 0x8a, 0x92, 0xa2, 0x52, 0x38,
+       0x7c, 0x00, 0x1d, 0xad, 0x44, 0xdc, 0x44, 0xa1,
+       0xc0, 0x5c, 0x71, 0xba, 0x96, 0x19, 0xbb, 0x6f,
+       0x3b, 0x3e, 0x36, 0x4e, 0x9b, 0x2f, 0x79, 0xdc,
+       0xfb, 0x26, 0x87, 0x5b, 0x49, 0xcc, 0x36, 0xb3,
+       0x1b, 0xca, 0xad, 0xfb, 0xf0, 0x0b, 0xbd, 0x06,
+       0x9e, 0xdf, 0xd7, 0x75, 0x19, 0x55, 0x9d, 0x2d,
+       0x31, 0x18, 0x7c, 0xb6, 0x02, 0xac, 0xe1, 0x36,
+       0x8c, 0x06, 0x5b, 0x01, 0x78, 0xa3, 0x4d, 0x4a,
+       0x63, 0x95, 0x5f, 0x3d, 0xd6, 0xd2, 0xe1, 0x0c,
+       0x5d, 0xf5, 0xba, 0xf2, 0x38, 0x1b, 0xe8, 0x1f,
+       0x18, 0x68, 0x97, 0xd8, 0xaa, 0x78, 0x29, 0xdd,
+       0x59, 0x0d, 0xf5, 0xc9, 0xa8, 0x75, 0x63, 0x5d,
+       0x52, 0x1c, 0x44, 0xe5, 0x8b, 0x6e, 0x11, 0x6b,
+       0xae, 0xfa, 0x1f, 0xaa, 0x77, 0xc6, 0xde, 0xac,
+       0xd4, 0x1e, 0x12, 0x10, 0xa2, 0xea, 0x62, 0x8e,
+       0xc8, 0x90, 0xe8, 0xe5, 0x45, 0x13, 0xae, 0xa0,
+       0x42, 0x49, 0x04, 0x41, 0x58, 0x88, 0x0c, 0x3c,
+       0x1a, 0x1b, 0x16, 0x85, 0x50, 0x46, 0xdb, 0x7f,
+       0xad, 0x00, 0x44, 0xd5, 0x71, 0x4d, 0x12, 0x56,
+       0xe7, 0x0d, 0x77, 0x57, 0x0a, 0xfa, 0x04, 0xff,
+       0xeb, 0xba, 0xa7, 0xa1, 0xbd, 0x58, 0xb1, 0x37,
+       0xfd, 0x35, 0x8f, 0x0f, 0xb4, 0xd9, 0x06, 0x75,
+       0xd7, 0x58, 0x51, 0xdc, 0x58, 0x71, 0x97, 0x17,
+       0x40, 0x6e, 0xe1, 0x44, 0xcb, 0x4d, 0x21, 0xa3,
+       0xec, 0xce, 0x07, 0x75, 0xfc, 0x3b, 0xd4, 0xbc,
+       0xe9, 0x41, 0x39, 0x05, 0x25, 0xcb, 0x64, 0xd0,
+       0xc0, 0x9f, 0xef, 0x5b, 0x11, 0xc1, 0x85, 0x46,
+       0xdd, 0x08, 0xe5, 0x7a, 0x49, 0x6c, 0xcb, 0x57,
+       0x77, 0x5a, 0x37, 0x45, 0x8e, 0x37, 0xd1, 0x3d,
+       0x8f, 0x32, 0xf4, 0x20, 0xfe, 0xaa, 0x5f, 0xe1,
+       0x9b, 0xb8, 0x39, 0xf6, 0xb2, 0x62, 0xce, 0xe5,
+       0x46, 0xa5, 0x40, 0xc9, 0xd0, 0x42, 0x71, 0xb7,
+       0x6d, 0x85, 0x0f, 0xb4, 0xb3, 0xdb, 0xb4, 0x0d,
+       0xae, 0x2c, 0xff, 0xc5, 0x51, 0xee, 0x36, 0xe2,
+       0xcc, 0x5e, 0x4c, 0x8f, 0x45, 0x09, 0x1d, 0xca,
+       0x66, 0x57, 0xe8, 0xb8, 0x95, 0x14, 0xdc, 0xa2,
+       0x3d, 0xfe, 0x63, 0x4a, 0x26, 0x5c, 0x83, 0xed,
+       0x3d, 0x1b, 0xec, 0x7a, 0xc9, 0x37, 0xc2, 0x9e,
+       0x7f, 0xea, 0x5a, 0x66, 0xa0, 0xdc, 0xb0, 0x19,
+       0xba, 0xc1, 0xe1, 0x8c, 0x42, 0xcf, 0x2e, 0x2a,
+       0xaf, 0x7c, 0xb8, 0x4a, 0xfb, 0x82, 0xfe, 0xff,
+       0x38, 0xb0, 0xc5, 0x88, 0x1e, 0xae, 0x41, 0xa1,
+       0x29, 0xdd, 0x60, 0xaa, 0xdd, 0xac, 0x30, 0xb9,
+       0xb1, 0xa4, 0x6d, 0xa8, 0x25, 0x9f, 0x57, 0xa7,
+       0xa3, 0x15, 0xc1, 0xb8, 0x68, 0xd2, 0xd9, 0x66,
+       0x8e, 0x40, 0x3c, 0xd0, 0xdc, 0x55, 0xfc, 0xd5,
+       0xc7, 0x11, 0xe2, 0xac, 0xa0, 0x14, 0xe2, 0x4c,
+       0xb2, 0x4d, 0x86, 0xc2, 0x4d, 0x7d, 0xd0, 0xa4,
+       0x94, 0xa2, 0xbc, 0x73, 0x8f, 0xd5, 0x32, 0xec,
+       0x16, 0x85, 0xd0, 0x5a, 0x2e, 0xca, 0x25, 0xb2,
+       0x09, 0xf9, 0x3d, 0xfc, 0xe6, 0x0b, 0x8d, 0x9c,
+       0x5c, 0x6e, 0xe0, 0x44, 0xaa, 0xd4, 0xb2, 0x8c,
+       0xc5, 0xd4, 0x47, 0x53, 0x8a, 0x71, 0x16, 0xce,
+       0x4e, 0xb4, 0x40, 0x05, 0x56, 0x92, 0x39, 0x02,
+       0xa9, 0x62, 0xbe, 0x6b, 0x7d, 0x1f, 0x71, 0x06,
+       0xcc, 0x81, 0xd6, 0x99, 0x94, 0x38, 0x5e, 0xc7,
+       0x6b, 0x8c, 0xf3, 0xc1, 0x3a, 0xcd, 0xb0, 0x6b,
+       0x14, 0x1e, 0x74, 0x93, 0x6b, 0x3a, 0xe2, 0x2a,
+       0x81, 0x32, 0x38, 0x07, 0xfd, 0xdd, 0x97, 0x9b,
+       0xd1, 0xbd, 0x10, 0xa0, 0xee, 0xe0, 0xef, 0x7a,
+       0xd2, 0xb5, 0xd4, 0xb1, 0xba, 0x0b, 0xdd, 0xe2,
+       0x27, 0x69, 0x65, 0xd2, 0xa5, 0x8e, 0x12, 0x15,
+       0x3c, 0x9a, 0x7c, 0x93, 0xc2, 0xc9, 0xaa, 0x21,
+       0xb7, 0x64, 0x08, 0x39, 0xc0, 0xe8, 0xa8, 0x27,
+       0x2e, 0xe3, 0x79, 0xaf, 0xba, 0xde, 0x38, 0x77,
+       0x10, 0x2d, 0x55, 0xbd, 0x53, 0xd9, 0x52, 0x7d,
+       0x53, 0xb6, 0x96, 0xbd, 0x52, 0x4c, 0xe9, 0x64,
+       0xb6, 0x0c, 0xb6, 0x59, 0x11, 0x97, 0xda, 0x4d,
+       0x61, 0xcb, 0x91, 0x28, 0x74, 0xea, 0x15, 0xa1,
+       0x45, 0x95, 0xf2, 0x8f, 0xe5, 0xd6, 0xde, 0x6d,
+       0x92, 0x67, 0x7f, 0x09, 0x85, 0xcf, 0x6c, 0xc5,
+       0x9c, 0x23, 0x1a, 0x11, 0x23, 0x9c, 0xa1, 0x3c,
+       0x3b, 0xff, 0x1b, 0x76, 0x31, 0x2d, 0xb6, 0x71,
+       0x1b, 0x50, 0xf8, 0x51, 0xe2, 0x90, 0x7f, 0xd9,
+       0xb9, 0x06, 0x74, 0xb1, 0x21, 0x56, 0x04, 0xf5,
+       0x8c, 0xdb, 0x3d, 0xf0, 0x3a, 0xd7, 0x65, 0x2d,
+       0x3c, 0x79, 0x84, 0xbb, 0x92, 0x53, 0xa3, 0x33,
+       0xdb, 0x88, 0x30, 0x7f, 0x88, 0x24, 0x65, 0xb3,
+       0x29, 0xcf, 0x5d, 0xe8, 0xa0, 0x70, 0xcb, 0x05,
+       0xe1, 0xa6, 0x1c, 0xce, 0x70, 0xe5, 0x12, 0x3f,
+       0x77, 0xdf, 0x23, 0xdf, 0x73, 0x99, 0x46, 0x62,
+       0x8c, 0x5f, 0xdf, 0xe9, 0xa4, 0xf5, 0x71, 0x9f,
+       0xc2, 0x78, 0x4d, 0x8b, 0xda, 0xa7, 0x53, 0xa3,
+       0x83, 0x83, 0xc6, 0xec, 0x16, 0xe4, 0x8c, 0x6b,
+       0x50, 0x02, 0xf6, 0xc0, 0xe3, 0x8c, 0x2c, 0xb3,
+       0x12, 0x7c, 0x6b, 0x9b, 0x09, 0xea, 0x91, 0xe3,
+       0xda, 0x26, 0xb1, 0x55, 0x95, 0x52, 0x28, 0x43,
+       0x26, 0xd0, 0x45, 0x42, 0x50, 0xb6, 0x1d, 0x0b,
+       0x8c, 0x17, 0xa8, 0x67, 0x5c, 0x13, 0xd7, 0x78,
+       0x87, 0x1e, 0x00, 0xca, 0x33, 0x33, 0xb5, 0x40,
+       0x12, 0x2b, 0x23, 0xa2, 0x83, 0xc9, 0x62, 0x13,
+       0x3a, 0x79, 0x3b, 0x9d, 0xb1, 0x67, 0xad, 0x7a,
+       0x53, 0x35, 0x22, 0x9c, 0x59, 0xaf, 0xdf, 0xa7,
+       0x69, 0x6e, 0xdf, 0x2c, 0x4d, 0xb0, 0xac, 0xc1,
+       0x94, 0x63, 0x4d, 0x58, 0x67, 0xfa, 0x06, 0x8f,
+       0x30, 0xd7, 0x56, 0xe7, 0x69, 0xf8, 0xcf, 0x8f,
+       0x5f, 0xb6, 0xd1, 0x5d, 0x43, 0x29, 0xdc, 0xd8,
+       0x8d, 0xa6, 0x56, 0x8d, 0x8e, 0xd6, 0x69, 0x07,
+       0x19, 0x83, 0x91, 0x08, 0x6b, 0x2d, 0x53, 0xaa,
+       0xc6, 0x84, 0x70, 0xd1, 0x96, 0xba, 0x24, 0x9c,
+       0xc2, 0x68, 0xfc, 0xcb, 0x61, 0x0f, 0x2e, 0xe3,
+       0x71, 0xaa, 0x6e, 0x89, 0x6a, 0xdb, 0xdc, 0x91,
+       0x2a, 0x5a, 0xb2, 0xd4, 0x24, 0x01, 0xaf, 0xad,
+       0xa3, 0x60, 0x6f, 0xcc, 0x8f, 0xd6, 0xa2, 0x44,
+       0x24, 0x4a, 0xc2, 0x3e, 0xb9, 0x3b, 0x97, 0x1d,
+       0xe7, 0xee, 0x79, 0x96, 0xd3, 0x4d, 0x6a, 0xdd,
+       0x50, 0xfc, 0xf8, 0xf0, 0x26, 0xee, 0x39, 0xbb,
+       0x0c, 0x8e, 0x50, 0x83, 0x22, 0xec, 0x1a, 0xad,
+       0xf9, 0x45, 0xd2, 0xfc, 0xe7, 0x1e, 0xdb, 0x52,
+       0x06, 0xce, 0x34, 0xe2, 0x4c, 0x10, 0x99, 0x24,
+       0xf7, 0x1b, 0x76, 0x8d, 0x02, 0xf4, 0xcf, 0xb6,
+       0xe0, 0x26, 0x65, 0x56, 0x4b, 0x44, 0x00, 0xa4,
+       0x3d, 0x18, 0x69, 0xdf, 0x7a, 0x8f, 0x0c, 0x68,
+       0xc1, 0x7c, 0x5b, 0x4b, 0x29, 0xb3, 0x70, 0xa6,
+       0xf5, 0xa4, 0x17, 0x6b, 0xcc, 0xbe, 0xa1, 0xa3,
+       0xe9, 0xd4, 0xf5, 0x17, 0x7b, 0x36, 0x7f, 0x19,
+       0xcc, 0xa7, 0xb2, 0x82, 0xc2, 0xa9, 0xd6, 0x64,
+       0xca, 0xeb, 0x4b, 0x8a, 0x27, 0x68, 0xab, 0x52,
+       0x26, 0x9a, 0x2d, 0xd2, 0x0d, 0x9a, 0x2d, 0xf5,
+       0x01, 0xae, 0xb8, 0xeb, 0x07, 0x13, 0xe5, 0x5c,
+       0xbb, 0x71, 0x9d, 0xc4, 0x66, 0xff, 0x40, 0xb7,
+       0xae, 0xa0, 0x47, 0xa6, 0xb8, 0xc9, 0xb5, 0x56,
+       0x40, 0x17, 0x3b, 0x50, 0x18, 0xd4, 0x5d, 0xf6,
+       0xe7, 0x4e, 0x15, 0xd2, 0xf2, 0x4c, 0xfc, 0x2b,
+       0x6a, 0x34, 0xde, 0x69, 0xe7, 0x24, 0x79, 0x89,
+       0xbc, 0x8a, 0x93, 0xbc, 0x61, 0x72, 0xce, 0x95,
+       0xee, 0xc9, 0xff, 0xde, 0x9d, 0x84, 0xf8, 0x73,
+       0xed, 0x60, 0x7f, 0xed, 0xcc, 0xe2, 0x60, 0x4e,
+       0xa5, 0xab, 0x20, 0xef, 0x26, 0xd2, 0x89, 0x36,
+       0xc8, 0xb5, 0x12, 0x01, 0x7b, 0xd4, 0xa6, 0xc9,
+       0xfe, 0x88, 0x06, 0x73, 0xe8, 0x2d, 0xc2, 0x39,
+       0x97, 0x3a, 0x6e, 0xeb, 0xf3, 0xb6, 0x23, 0x53,
+       0xf2, 0x8c, 0x2e, 0xb6, 0x20, 0x46, 0x13, 0x9c,
+       0x11, 0x15, 0x3a, 0xc7, 0xc9, 0x78, 0xd5, 0x72,
+       0x7d, 0xbf, 0xae, 0x51, 0xa1, 0x29, 0x74, 0x48,
+       0x73, 0x6d, 0xa7, 0x37, 0x2d, 0xea, 0x4d, 0x62,
+       0x60, 0x32, 0xdb, 0x2d, 0xa6, 0xa8, 0x41, 0xb6,
+       0x17, 0xa1, 0xe5, 0x89, 0x7b, 0xa2, 0x51, 0x6a,
+       0x7b, 0x9c, 0xc9, 0x1f, 0xaa, 0xe7, 0x28, 0x15,
+       0x81, 0xdf, 0xf8, 0xf5, 0x1e, 0xfe, 0x9d, 0xd2,
+       0xb8, 0xd4, 0x4f, 0x88, 0xca, 0xf2, 0x22, 0xae,
+       0x77, 0x5a, 0xc0, 0x55, 0x1b, 0xe1, 0xb4, 0x99,
+       0x26, 0x81, 0xbf, 0x8e, 0x7a, 0x79, 0xc4, 0x2b,
+       0xb9, 0x1f, 0x53, 0xb9, 0xd5, 0x2a, 0xf1, 0x7a,
+       0xa8, 0xf1, 0xb0, 0x59, 0xb5, 0xa4, 0x56, 0x7e,
+       0x78, 0x64, 0x08, 0x67, 0xff, 0xa3, 0x51, 0x15,
+       0x7e, 0xc7, 0x10, 0x2b, 0x55, 0xa3, 0x88, 0x42,
+       0x33, 0x73, 0x89, 0xda, 0x8c, 0x64, 0xc8, 0xb3,
+       0x6b, 0x68, 0x1e, 0xd8, 0x17, 0x2d, 0x54, 0x4c,
+       0xee, 0xbf, 0x98, 0xef, 0x4d, 0x18, 0xe4, 0x59,
+       0x09, 0x6e, 0x8f, 0x9d, 0x1b, 0xbd, 0xa3, 0x7d,
+       0x1b, 0xb8, 0x29, 0x71, 0xcb, 0x9d, 0xfa, 0x94,
+       0x42, 0xb1, 0x9e, 0x19, 0x57, 0x71, 0xb4, 0x93,
+       0x2e, 0x9b, 0xb0, 0x56, 0xfd, 0x0a, 0x3e, 0xde,
+       0x25, 0x9c, 0xd5, 0xe8, 0xef, 0xcf, 0x2d, 0x97,
+       0x69, 0xe6, 0x78, 0xfb, 0xfe, 0x16, 0x11, 0xdf,
+       0xaf, 0x77, 0xca, 0x97, 0x53, 0x7b, 0x26, 0xa2,
+       0x06, 0x8c, 0xc4, 0xf3, 0x08, 0xaa, 0xe6, 0xf5,
+       0x09, 0x68, 0x73, 0x9a, 0xa3, 0x08, 0xd2, 0xea,
+       0xfe, 0x91, 0x12, 0x64, 0x9f, 0xa1, 0x54, 0x82,
+       0x16, 0x6c, 0x12, 0x49, 0xe9, 0xd5, 0x41, 0xb3,
+       0x4b, 0xa5, 0x1f, 0x77, 0xaa, 0xf9, 0xb4, 0x2f,
+       0x27, 0x48, 0x9e, 0xa1, 0xf0, 0xcb, 0xb9, 0x24,
+       0x2c, 0xdc, 0x23, 0x50, 0xbc, 0x96, 0x83, 0x95,
+       0x8e, 0x2e, 0xc2, 0xf2, 0xed, 0xdd, 0xa0, 0x37,
+       0x55, 0x28, 0x7a, 0x88, 0x24, 0xe1, 0x4c, 0xe6,
+       0x00, 0x32, 0x7b, 0x18, 0x27, 0xfd, 0x59, 0x9b,
+       0xfc, 0x40, 0x42, 0x89, 0xaa, 0xd7, 0x22, 0xc9,
+       0x1e, 0x53, 0x6e, 0xb6, 0xa1, 0x4b, 0x02, 0xd5,
+       0xc2, 0x39, 0xeb, 0x59, 0x60, 0xe7, 0xdb, 0x8d,
+       0x52, 0xc6, 0x58, 0x6e, 0x7c, 0x87, 0x33, 0x60,
+       0xa8, 0x7d, 0x76, 0x50, 0x5e, 0xe4, 0x96, 0x49,
+       0x6d, 0x15, 0x41, 0x1f, 0x50, 0x8f, 0x20, 0xb3,
+       0x5c, 0xe5, 0x02, 0x11, 0x4a, 0x1d, 0x53, 0x6d,
+       0x61, 0xe4, 0x4e, 0xb8, 0x32, 0xf7, 0xf2, 0x19,
+       0x99, 0x57, 0x97, 0xd2, 0x69, 0xac, 0x93, 0x53,
+       0x2d, 0x51, 0xdb, 0x29, 0xb2, 0xe0, 0x2f, 0xb9,
+       0x16, 0xad, 0x02, 0x1e, 0x1d, 0xf7, 0xca, 0x78,
+       0x6a, 0x76, 0xaa, 0x2d, 0xfc, 0x76, 0xaf, 0xc4,
+       0xf1, 0x12, 0xb5, 0x53, 0x41, 0x57, 0x01, 0x71,
+       0xc6, 0x5e, 0x4b, 0x51, 0x13, 0xed, 0x5d, 0x8d,
+       0xa0, 0xc5, 0x25, 0xbd, 0x43, 0xc1, 0xa7, 0xc1,
+       0x36, 0xe8, 0x4f, 0x61, 0x4b, 0xe7, 0xda, 0x6b,
+       0x78, 0x98, 0x5f, 0x29, 0x3f, 0xd8, 0xdd, 0x65,
+       0x28, 0xc2, 0xd0, 0xe4, 0x7a, 0x68, 0xaf, 0x7a,
+       0xa9, 0x44, 0x4e, 0x81, 0xc3, 0xd9, 0x63, 0x92,
+       0x57, 0x73, 0x41, 0x7a, 0xd7, 0xbf, 0xc8, 0x16,
+       0x7a, 0xde, 0x60, 0xbf, 0x36, 0x40, 0x31, 0x83,
+       0x7a, 0xf3, 0x36, 0xe4, 0xa8, 0x67, 0xdc, 0xf0,
+       0xc0, 0x95, 0x82, 0x90, 0x69, 0x9f, 0x33, 0x13,
+       0x3b, 0xd8, 0xd3, 0x39, 0x2d, 0x5b, 0xa4, 0x50,
+       0x80, 0x70, 0x56, 0xa2, 0x36, 0x71, 0x85, 0x20,
+       0xfc, 0xa0, 0xdb, 0x41, 0x93, 0x6a, 0xcf, 0x69,
+       0x3f, 0x66, 0x24, 0x93, 0x7c, 0x2d, 0x78, 0x24,
+       0xad, 0xbe, 0xd2, 0x1b, 0x88, 0xb3, 0xfc, 0xe5,
+       0x0c, 0x1d, 0x40, 0x93, 0xfd, 0x07, 0xe1, 0x92,
+       0x6b, 0x45, 0x87, 0xb3, 0x17, 0x68, 0x8e, 0xce,
+       0xfa, 0x7c, 0x7b, 0x5f, 0xf7, 0xa2, 0xf7, 0x6a,
+       0x8f, 0x60, 0xf9, 0xfb, 0xde, 0x46, 0x12, 0xef,
+       0x53, 0xa4, 0xc2, 0x67, 0xb3, 0xd9, 0x47, 0xa9,
+       0xc8, 0x06, 0x15, 0x1e, 0x2a, 0xb5, 0x06, 0x7a,
+       0x89, 0xaf, 0xd6, 0x24, 0x2a, 0x59, 0x9c, 0xd7,
+       0x1a, 0xd5, 0x23, 0x0d, 0xdf, 0x15, 0x70, 0x65,
+       0x2f, 0x24, 0x28, 0x55, 0x58, 0x9d, 0x9e, 0x04,
+       0x90, 0xb2, 0xf4, 0x26, 0x99, 0xeb, 0x61, 0x1f,
+       0x5c, 0x94, 0x6b, 0xe2, 0x73, 0x96, 0x5c, 0x62,
+       0x04, 0x7d, 0xf4, 0xef, 0x4a, 0xb6, 0xaa, 0x57,
+       0x02, 0x69, 0x56, 0x0e, 0x98, 0x8e, 0x4d, 0x94,
+       0x86, 0x96, 0x99, 0x38, 0x8b, 0xc3, 0x46, 0xc4,
+       0x3f, 0x18, 0x05, 0x8e, 0x14, 0x29, 0xa5, 0xfa,
+       0x7e, 0x5f, 0x8a, 0x8e, 0x72, 0x75, 0x2c, 0x75,
+       0x8a, 0xc2, 0xd5, 0x3c, 0x8d, 0x61, 0x1d, 0xaa,
+       0x25, 0x34, 0x99, 0x78, 0x16, 0xce, 0x0c, 0xb7,
+       0x78, 0x65, 0xcd, 0x48, 0x85, 0x38, 0xe2, 0x6b,
+       0x1c, 0x9f, 0x46, 0x17, 0x3a, 0xf9, 0x08, 0xfe,
+       0x77, 0x0c, 0x77, 0x2d, 0x34, 0x77, 0x84, 0x2c,
+       0x3e, 0xe7, 0xea, 0x01, 0x06, 0x70, 0xe1, 0x53,
+       0x83, 0xd6, 0xf6, 0x06, 0x94, 0xd8, 0xdd, 0x68,
+       0x7e, 0xcf, 0xec, 0x65, 0x74, 0xcb, 0xad, 0x60,
+       0xe2, 0x12, 0x1e, 0xc2, 0x1e, 0x79, 0xae, 0x9f,
+       0xc1, 0x4d, 0x34, 0x43, 0x7b, 0x76, 0xd0, 0x88,
+       0xf4, 0x8f, 0xf6, 0x1c, 0x5a, 0x22, 0xf3, 0xec,
+       0xe8, 0x1d, 0x17, 0xed, 0x95, 0x7d, 0xf4, 0x37,
+       0x5f, 0xa4, 0x00, 0xe5, 0xf9, 0x36, 0xa4, 0xe4,
+       0x99, 0xc3, 0x19, 0xc9, 0xbb, 0xdc, 0xf3, 0x08,
+       0x55, 0xa2, 0x1e, 0xaa, 0x60, 0x9f, 0x91, 0x0f,
+       0xfe, 0xe4, 0xa0, 0xd7, 0x70, 0x84, 0xe7, 0x8a,
+       0xb4, 0x2d, 0xdf, 0x6b, 0xb5, 0x30, 0x8a, 0xdd,
+       0x87, 0x46, 0xea, 0xa0, 0x07, 0xbd, 0x49, 0xec,
+       0xe8, 0x09, 0x20, 0x3d, 0xce, 0x48, 0xd2, 0x6d,
+       0x1e, 0xd9, 0x7c, 0x94, 0x5f, 0x26, 0x9c, 0xe9,
+       0xf0, 0x9c, 0x70, 0x30, 0xcb, 0xe5, 0x06, 0xbc,
+       0xdc, 0x4a, 0xfb, 0x01, 0x08, 0x5a, 0xb2, 0xcf,
+       0x54, 0x3e, 0x87, 0xe6, 0x03, 0xcf, 0x7f, 0x0c,
+       0xca, 0xf5, 0x93, 0x87, 0xa6, 0xee, 0xe7, 0xa3,
+       0xea, 0xc3, 0xe3, 0x88, 0xd5, 0x7a, 0x50, 0x56,
+       0x38, 0xaf, 0xba, 0xd9, 0x24, 0x2b, 0xeb, 0x02,
+       0xa8, 0x65, 0x7c, 0x1a, 0x6b, 0x77, 0xee, 0x15,
+       0x5f, 0x12, 0x69, 0x3f, 0x20, 0xc4, 0x35, 0x24,
+       0xd5, 0xd0, 0xa2, 0xdd, 0xb8, 0x2e, 0x7f, 0xe6,
+       0xea, 0xde, 0x28, 0x13, 0xb5, 0xbe, 0x47, 0x31,
+       0x77, 0x91, 0x8c, 0x6a, 0x15, 0x58, 0x52, 0xfd,
+       0x67, 0xa5, 0x98, 0x67, 0xf2, 0x9f, 0xa6, 0x32,
+       0xe9, 0x0e, 0xf3, 0xe5, 0x3e, 0xce, 0x5c, 0x32,
+       0x4a, 0xf4, 0x59, 0xe5, 0x63, 0xbc, 0xe7, 0x88,
+       0x1d, 0x8d, 0xdf, 0x39, 0xdf, 0x63, 0x59, 0x7d,
+       0x44, 0x48, 0x2a, 0x14, 0xe8, 0xfb, 0xb9, 0x0d,
+       0x1a, 0x78, 0xcd, 0xdb, 0xb4, 0xf8, 0x6b, 0x09,
+       0xc3, 0xfd, 0x52, 0xc3, 0xda, 0x26, 0xaf, 0xbb,
+       0x22, 0x66, 0x72, 0x1e, 0xc9, 0x26, 0x7d, 0x5f,
+       0x10, 0x8e, 0x6c, 0x7e, 0x5b, 0xcf, 0x67, 0x9f,
+       0x24, 0xb5, 0xaf, 0xad, 0x76, 0x09, 0xbd, 0x0d,
+       0x3a, 0x23, 0x1a, 0x6a, 0x37, 0x11, 0x4e, 0x4d,
+       0x2b, 0xb5, 0x80, 0xe1, 0x61, 0xaf, 0xa8, 0xd5,
+       0x5a, 0xc3, 0x56, 0xd4, 0xb2, 0x51, 0xe8, 0x1e,
+       0x23, 0x4e, 0x77, 0xe0, 0xae, 0xa0, 0x5c, 0x7a,
+       0xbf, 0x18, 0xf1, 0x39, 0xd2, 0xa4, 0x45, 0x49,
+       0xff, 0x92, 0xe0, 0xd4, 0x60, 0x0e, 0xee, 0x74,
+       0xf3, 0x65, 0x4a, 0x29, 0x91, 0x31, 0x27, 0x4a,
+       0x3d, 0x11, 0x15, 0xee, 0x8f, 0x77, 0x1b, 0x28,
+       0x6b, 0xb6, 0xc9, 0xc5, 0x7c, 0x85, 0xda, 0x5e,
+       0x5e, 0x93, 0xb8, 0x8c, 0x12, 0xc5, 0x35, 0xce,
+       0x3f, 0xee, 0x5c, 0x54, 0x73, 0xbd, 0xbc, 0xde,
+       0x46, 0x68, 0x9d, 0x7b, 0x62, 0xd0, 0x3c, 0xb8,
+       0x6d, 0x38, 0x82, 0x6e, 0xc0, 0xfe, 0x0a, 0x5e,
+       0x7c, 0x98, 0x43, 0x25, 0xda, 0x66, 0xdf, 0x85,
+       0x87, 0xc7, 0x96, 0xb2, 0xfb, 0x8e, 0x13, 0xe8,
+       0xab, 0xd7, 0x7c, 0x25, 0x15, 0xf8, 0xaa, 0xa1,
+       0xe1, 0x5c, 0x2f, 0x2f, 0xe9, 0x71, 0x58, 0x21,
+       0xf5, 0x51, 0xea, 0xf9, 0xb2, 0xf6, 0x8a, 0xf2,
+       0xb4, 0xe1, 0x08, 0x3e, 0x3f, 0xb0, 0xdf, 0x47,
+       0xa1, 0xb1, 0x83, 0x68, 0x79, 0xa3, 0x5d, 0x2b,
+       0x31, 0xdf, 0x25, 0x56, 0x52, 0xa7, 0x98, 0xeb,
+       0xe4, 0x4a, 0xcd, 0xb7, 0xdf, 0x1a, 0x00, 0x2b,
+       0x8c, 0x56, 0x80, 0x5d, 0x82, 0x1a, 0xba, 0x43,
+       0xda, 0x14, 0x5a, 0x78, 0x03, 0x74, 0x0a, 0xa0,
+       0xbf, 0x19, 0xc1, 0xfa, 0xc1, 0xef, 0xaa, 0x97,
+       0x97, 0x66, 0x5f, 0xaf, 0x63, 0xd6, 0x83, 0xaf,
+       0x5f, 0x0c, 0x9a, 0x4c, 0x96, 0x7e, 0x7d, 0x96,
+       0xd7, 0xda, 0xa4, 0x97, 0xd7, 0x9e, 0xd8, 0x9c,
+       0x4c, 0xb7, 0x3a, 0xbd, 0x3c, 0x9e, 0xfb, 0xfc,
+       0x4f, 0x79, 0xda, 0x94, 0xd6, 0xfd, 0xbd, 0x99,
+       0xe4, 0x87, 0x95, 0xf7, 0x2a, 0x09, 0x2b, 0x82,
+       0xbe, 0xed, 0x2e, 0x6c, 0x2d, 0x5c, 0x4a, 0x3e,
+       0x40, 0xa4, 0x38, 0x97, 0xc8, 0xa4, 0xfb, 0x3e,
+       0xfa, 0xdd, 0xf4, 0xf2, 0xfa, 0x06, 0x98, 0x71,
+       0x94, 0xad, 0xb6, 0x99, 0x42, 0xe6, 0xa4, 0x96,
+       0x11, 0x7c, 0x26, 0x90, 0x1e, 0x37, 0x6e, 0xa9,
+       0xf4, 0x8f, 0x16, 0xa6, 0xdd, 0xe1, 0x6c, 0xa3,
+       0xd9, 0xf0, 0x91, 0xca, 0x48, 0xc6, 0x3e, 0x9a,
+       0x3d, 0x33, 0x8f, 0x49, 0x09, 0xa2, 0x5c, 0x10,
+       0xd6, 0x48, 0x27, 0x1a, 0x78, 0x48, 0x30, 0xdb,
+       0x05, 0x4c, 0x01, 0x0e, 0xd0, 0x3e, 0x69, 0x76,
+       0xee, 0x1c, 0x87, 0xa8, 0x9c, 0xff, 0xe6, 0x7f,
+       0x8e, 0x33, 0xaf, 0x3b, 0x85, 0xd0, 0x96, 0x4f,
+       0x1b, 0xce, 0x34, 0xe4, 0xed, 0xbd, 0x93, 0x72,
+       0x10, 0x2b, 0xa7, 0xc3, 0x61, 0xd2, 0xfc, 0x03,
+       0xc7, 0x1f, 0xee, 0xba, 0x88, 0xb2, 0x0f, 0x44,
+       0x4b, 0x2e, 0xc9, 0xd0, 0x0d, 0x4e, 0x7d, 0x66,
+       0xde, 0xa4, 0x11, 0x73, 0x68, 0x9c, 0xd3, 0xef,
+       0x10, 0x2c, 0x78, 0xac, 0x81, 0xd4, 0x9e, 0x34,
+       0x93, 0xda, 0x72, 0x33, 0x49, 0x3f, 0xda, 0x30,
+       0xd1, 0x34, 0xcd, 0x4e, 0xb9, 0x78, 0x1c, 0x89,
+       0x75, 0xb7, 0x51, 0x9c, 0x8c, 0x17, 0x67, 0x01,
+       0xa1, 0x0a, 0xb9, 0x8f, 0x52, 0xa3, 0x48, 0x85,
+       0x29, 0x96, 0x2f, 0xed, 0xb4, 0xbf, 0x5d, 0x82,
+       0x5f, 0xc2, 0x87, 0x94, 0x34, 0x5d, 0x72, 0xa5,
+       0xcc, 0xf0, 0x07, 0xf3, 0xee, 0xce, 0xff, 0xfd,
+       0x52, 0x95, 0xf0, 0xde, 0xcf, 0xad, 0x17, 0xbf,
+       0x5d, 0xd0, 0x56, 0xda, 0x95, 0x15, 0xfb, 0xe6,
+       0x7d, 0xbb, 0xf6, 0x87, 0xf7, 0x57, 0x21, 0x6f,
+       0x46, 0x07, 0x20, 0x23, 0x27, 0x58, 0xa1, 0xd3,
+       0x02, 0xd3, 0x60, 0x4a, 0x6e, 0xa0, 0x41, 0x22,
+       0x72, 0x55, 0x5c, 0xa6, 0xfa, 0xeb, 0x79, 0xdb,
+       0xdd, 0x7c, 0x52, 0x10, 0xe6, 0x1f, 0xcb, 0x25,
+       0x94, 0x14, 0xff, 0xee, 0xfc, 0xf0, 0x1a, 0x5a,
+       0x05, 0x4b, 0x8d, 0xf5, 0x67, 0xfe, 0xa8, 0xcb,
+       0xdf, 0x1c, 0xdc, 0x3e, 0x22, 0xaa, 0x18, 0x77,
+       0x4f, 0x97, 0x79, 0xbd, 0xca, 0x5d, 0x9c, 0xd8,
+       0x35, 0x98, 0x50, 0x2a, 0x1b, 0x13, 0x32, 0xde,
+       0x01, 0x49, 0xbc, 0x78, 0xe7, 0xfa, 0x76, 0xf1,
+       0xf2, 0xc1, 0xf1, 0xb4, 0x8b, 0x90, 0x0e, 0x05,
+       0x3f, 0x3a, 0xa4, 0xda, 0x93, 0x6d, 0x6d, 0xe2,
+       0x4b, 0x88, 0x7a, 0x67, 0x2c, 0x91, 0xbb, 0x9c,
+       0xe2, 0xd2, 0xcc, 0x91, 0xf1, 0xaa, 0xee, 0xb1,
+       0xd8, 0x4f, 0xbe, 0x3a, 0x9f, 0x96, 0xa7, 0xce,
+       0xc1, 0x83, 0x24, 0x65, 0x4c, 0xaf, 0xce, 0xaa,
+       0x5c, 0xfe, 0x94, 0x44, 0xc7, 0xad, 0x83, 0xec,
+       0xdc, 0x99, 0x38, 0x03, 0x0b, 0x27, 0x9c, 0xa2,
+       0x69, 0xd1, 0xfa, 0xc3, 0x71, 0x98, 0x67, 0xc6,
+       0x99, 0xe6, 0xd6, 0x9a, 0xcc, 0x14, 0x22, 0x13,
+       0xbe, 0x06, 0x18, 0x2d, 0x77, 0x98, 0xe4, 0xf3,
+       0x09, 0xf4, 0xe3, 0xa7, 0x5a, 0x88, 0x99, 0x5f,
+       0x05, 0x4b, 0x76, 0x30, 0xb4, 0x7b, 0x0b, 0xb3,
+       0x90, 0x27, 0x25, 0x3c, 0x75, 0xe6, 0x8d, 0x3e,
+       0x1f, 0xab, 0xc5, 0xd9, 0xd0, 0xf6, 0x69, 0x13,
+       0xd5, 0x93, 0x39, 0xba, 0x47, 0xf6, 0xf3, 0xe3,
+       0xbf, 0x0f, 0xe3, 0xca, 0xe9, 0xed, 0xd4, 0xd9,
+       0x13, 0xa4, 0xb3, 0x8f, 0xff, 0x18, 0xd2, 0xac,
+       0x0f, 0x3f, 0x2a, 0xef, 0x9f, 0xa9, 0x17, 0x0e,
+       0x69, 0x50, 0xed, 0xbf, 0xf4, 0xe6, 0xd1, 0xcc,
+       0xfe, 0xd8, 0xac, 0xfb, 0xa5, 0x91, 0x3a, 0x4b,
+       0xbc, 0x89, 0xd7, 0x24, 0xec, 0xb1, 0x48, 0x59,
+       0x39, 0x83, 0x05, 0x72, 0xfc, 0xd4, 0x9f, 0xfa,
+       0xe1, 0xfc, 0x37, 0x64, 0x66, 0x52, 0xfa, 0x6c,
+       0xc0, 0xf9, 0xea, 0x67, 0x33, 0x7d, 0x46, 0x1f,
+       0x1c, 0x9b, 0x45, 0x19, 0xf2, 0x93, 0xf2, 0xea,
+       0x0b, 0x9e, 0xcc, 0xf1, 0xf4, 0x7b, 0xd3, 0x18,
+       0xe3, 0xda, 0xd3, 0xcc, 0x6c, 0x7a, 0xc7, 0xfa,
+       0xfe, 0xa2, 0x0b, 0xe4, 0x29, 0xfb, 0xaf, 0xd3,
+       0xa7, 0xe1, 0xf3, 0xe3, 0x2c, 0xf9, 0xe4, 0xd7,
+       0x9c, 0x35, 0xd6, 0xaa, 0x0e, 0xea, 0x3f, 0xeb,
+       0x8f, 0x9f, 0xef, 0xce, 0xac, 0x3f, 0x91, 0xe7,
+       0x58, 0xd4, 0x98, 0x14, 0xb1, 0xd8, 0x9d, 0x98,
+       0x44, 0xc9, 0xb5, 0x28, 0x78, 0x72, 0x14, 0x58,
+       0x5e, 0xeb, 0xe8, 0x31, 0x4e, 0x52, 0xe3, 0x6a,
+       0xb1, 0x11, 0xc4, 0x7c, 0xf3, 0x05, 0x31, 0xc3,
+       0x1e, 0xc3, 0x79, 0x52, 0xe0, 0xb4, 0x32, 0x0e,
+       0xe7, 0x39, 0xb4, 0x38, 0x74, 0x01, 0x8b, 0x55,
+       0x4e, 0xf5, 0xeb, 0x59, 0xe3, 0x99, 0x49, 0xcf,
+       0x16, 0xbf, 0xe3, 0x7e, 0x6f, 0x38, 0x54, 0x38,
+       0x91, 0x92, 0xb6, 0x8f, 0xd5, 0x94, 0xa9, 0x69,
+       0x2a, 0x33, 0x5f, 0xd3, 0xc9, 0x50, 0x7d, 0x26,
+       0xb2, 0xe6, 0xc8, 0xa1, 0x1f, 0xec, 0x67, 0x48,
+       0x3e, 0x7e, 0x46, 0x48, 0x98, 0x99, 0xe7, 0x24,
+       0x55, 0x6b, 0xbc, 0x90, 0xd7, 0xc1, 0x32, 0x24,
+       0x9a, 0xb6, 0xf3, 0xe0, 0x58, 0x9e, 0xfc, 0xdb,
+       0xc2, 0xd6, 0x7e, 0x20, 0xe4, 0x26, 0xde, 0x30,
+       0x61, 0x68, 0x0c, 0x99, 0xfd, 0x08, 0x68, 0x2f,
+       0x7d, 0xff, 0xa7, 0x60, 0x76, 0xa9, 0x29, 0x8d,
+       0xdd, 0xee, 0x1e, 0x11, 0xd5, 0x88, 0x95, 0x6d,
+       0x3c, 0xaf, 0x09, 0x25, 0x5f, 0x89, 0x8c, 0x6e,
+       0x6a, 0x41, 0xc3, 0x48, 0x97, 0xa9, 0x08, 0xb3,
+       0x94, 0x31, 0x4b, 0x42, 0xcb, 0xfd, 0xa4, 0xf4,
+       0xe7, 0xf1, 0x9b, 0xc8, 0xe4, 0x22, 0x64, 0x18,
+       0xb4, 0x5a, 0x14, 0x45, 0x23, 0x48, 0xc1, 0x11,
+       0x3f, 0x8c, 0x69, 0x17, 0x59, 0xe5, 0xd4, 0xb8,
+       0xe0, 0x3b, 0x63, 0x63, 0xef, 0x03, 0xa3, 0x8c,
+       0xd6, 0x9f, 0x71, 0x74, 0xc4, 0xea, 0x52, 0xa1,
+       0x17, 0x12, 0xad, 0xaf, 0x83, 0xe6, 0xe8, 0x27,
+       0xcf, 0x9f, 0x7c, 0xf3, 0x4f, 0x79, 0x1c, 0xcc,
+       0x8a, 0xd6, 0xfa, 0x6b, 0x7f, 0x6a, 0x1a, 0x80,
+       0x1f, 0xc4, 0xb0, 0x80, 0x1e, 0x86, 0x62, 0x43,
+       0x2b, 0x2e, 0xf4, 0x0f, 0xad, 0x5c, 0x07, 0x4a,
+       0x75, 0xc0, 0xf7, 0xaa, 0x17, 0x85, 0xce, 0xa9,
+       0xd2, 0x10, 0xae, 0xaa, 0xf2, 0x17, 0x68, 0x70,
+       0xe0, 0xe0, 0x29, 0xfb, 0xec, 0xfc, 0xaf, 0xfe,
+       0xe2, 0x33, 0xa3, 0x2a, 0x80, 0x5e, 0x6a, 0xbe,
+       0x83, 0x1e, 0xfa, 0x5b, 0x1d, 0xf1, 0x90, 0x77,
+       0xcd, 0xbf, 0x89, 0x4d, 0x44, 0x73, 0xb4, 0x1f,
+       0x3c, 0x21, 0xda, 0x46, 0x5a, 0x9c, 0x94, 0x9e,
+       0xeb, 0x5e, 0x0d, 0x2f, 0x4a, 0x9a, 0x3f, 0xdd,
+       0x52, 0x3b, 0xb7, 0xca, 0xba, 0xa2, 0x37, 0xf7,
+       0xcc, 0xb9, 0x33, 0x23, 0x5d, 0x74, 0x6e, 0x7f,
+       0xf2, 0x94, 0x3b, 0xfe, 0x14, 0xe1, 0x93, 0x32,
+       0xdc, 0x47, 0x37, 0x4d, 0x46, 0xae, 0x5a, 0x4a,
+       0xce, 0xac, 0x0f, 0x40, 0x73, 0xb2, 0x59, 0x35,
+       0x89, 0x79, 0xe5, 0xca, 0x15, 0xa8, 0x0f, 0x72,
+       0xfc, 0x95, 0x62, 0x4a, 0x48, 0x65, 0xe1, 0x7f,
+       0x10, 0x03, 0x7c, 0x9e, 0x58, 0xde, 0x83, 0x8c,
+       0xa2, 0x16, 0x7b, 0xe2, 0x19, 0xd0, 0xf5, 0x99,
+       0x53, 0x0a, 0x93, 0x63, 0x4d, 0x46, 0xab, 0x39,
+       0x84, 0x44, 0x60, 0x6b, 0xfa, 0xe6, 0x26, 0xb8,
+       0x0a, 0xf5, 0xd3, 0x1b, 0xee, 0x6d, 0xcd, 0x1c,
+       0x18, 0xdd, 0xdf, 0x9d, 0x76, 0xf1, 0xfb, 0x8a,
+       0xa5, 0x31, 0xe5, 0xc9, 0x72, 0x7f, 0x9b, 0x38,
+       0x9b, 0x7c, 0x30, 0x77, 0x06, 0x59, 0xba, 0x53,
+       0x92, 0x6b, 0xba, 0x61, 0xfd, 0xe6, 0x25, 0xba,
+       0xa8, 0x7a, 0x40, 0xd4, 0xc7, 0x8b, 0xed, 0x96,
+       0x53, 0xa5, 0xbf, 0xff, 0xe0, 0x0a, 0x3e, 0xdc,
+       0xef, 0xea, 0xc7, 0xd5, 0xc5, 0x46, 0x12, 0xcf,
+       0x36, 0x5d, 0x62, 0xb6, 0x5c, 0x98, 0x5a, 0xa0,
+       0xa8, 0x1a, 0x01, 0xb7, 0x76, 0xc5, 0xac, 0xd4,
+       0x3f, 0x79, 0x5a, 0xd6, 0x5f, 0xb0, 0x44, 0x95,
+       0x2d, 0x69, 0xe0, 0xd8, 0xe3, 0x84, 0xf5, 0xa4,
+       0xcf, 0xa2, 0x68, 0x27, 0x9d, 0xd4, 0x26, 0x31,
+       0xe0, 0x49, 0x28, 0x2f, 0x3a, 0xcc, 0xda, 0x2c,
+       0x2f, 0x3d, 0xcd, 0x29, 0x1c, 0x2d, 0x33, 0xbd,
+       0xa3, 0x76, 0x8b, 0x7e, 0x70, 0x68, 0xe7, 0xf6,
+       0x56, 0x25, 0xa7, 0x76, 0xda, 0xb3, 0x98, 0xa5,
+       0xde, 0xde, 0x9c, 0x2d, 0x1d, 0x51, 0xa7, 0xbb,
+       0xe7, 0x73, 0x9d, 0x8c, 0x66, 0x74, 0xfb, 0xae,
+       0xce, 0x43, 0x59, 0x57, 0x9a, 0x3e, 0x6b, 0xfc,
+       0xd1, 0x00, 0x85, 0xe9, 0x07, 0xe6, 0x03, 0x42,
+       0xa2, 0xc9, 0x78, 0x53, 0x0b, 0x55, 0xb0, 0xf8,
+       0x1b, 0xca, 0xaa, 0xd5, 0xbd, 0x99, 0xe6, 0xc6,
+       0x57, 0xaa, 0xb7, 0x0e, 0x2d, 0x63, 0x73, 0x07,
+       0x93, 0x82, 0x6d, 0x8c, 0x2d, 0xd8, 0x30, 0xf4,
+       0xcd, 0x84, 0x17, 0x3d, 0xf3, 0xf2, 0x29, 0x82,
+       0xed, 0x43, 0x7a, 0xc7, 0x04, 0x1b, 0x85, 0xb2,
+       0x58, 0xff, 0x66, 0x29, 0xa3, 0x1e, 0x21, 0xf6,
+       0xcf, 0x65, 0x1a, 0xdb, 0xd7, 0x88, 0x4e, 0x80,
+       0x37, 0x6d, 0xab, 0x9c, 0xe9, 0xcc, 0x0c, 0xa7,
+       0xe5, 0x70, 0x9f, 0xde, 0x8e, 0x08, 0xc1, 0x7c,
+       0x88, 0xdf, 0x02, 0x52, 0x71, 0xfd, 0x35, 0xf4,
+       0x89, 0xd0, 0xc0, 0x83, 0xcd, 0x66, 0xe6, 0xbe,
+       0x8d, 0xaa, 0xce, 0x6e, 0x46, 0x4b, 0x17, 0x68,
+       0xe2, 0xcf, 0x30, 0x28, 0x51, 0x05, 0x69, 0x7e,
+       0x64, 0x2b, 0x16, 0xfd, 0xee, 0xa5, 0x5e, 0x3e,
+       0xcb, 0x6e, 0x5d, 0x7d, 0xe9, 0x1e, 0x8a, 0xae,
+       0x5c, 0xb5, 0x71, 0xbd, 0xc9, 0x66, 0xde, 0xe8,
+       0x18, 0xc9, 0xfb, 0x7b, 0xd4, 0xce, 0xe6, 0xdc,
+       0x3f, 0x5b, 0xf0, 0xa5, 0xbd, 0xb4, 0x55, 0xb7,
+       0xe0, 0x59, 0x0a, 0x58, 0x16, 0xb3, 0xde, 0xd4,
+       0x02, 0x35, 0x7b, 0x6e, 0x40, 0xc4, 0x2e, 0x4a,
+       0x50, 0xcf, 0x66, 0x7f, 0xae, 0xc1, 0xad, 0x03,
+       0x6a, 0x5a, 0x53, 0xa0, 0x9a, 0x29, 0xaa, 0x90,
+       0x76, 0x6f, 0xfc, 0x19, 0xf9, 0x26, 0x1d, 0x4b,
+       0xfd, 0x2c, 0x81, 0x56, 0x87, 0xc2, 0xd0, 0x50,
+       0xae, 0xcf, 0xd7, 0xf0, 0x27, 0x67, 0xa6, 0xe0,
+       0xd0, 0x48, 0x22, 0x05, 0x71, 0x3f, 0x98, 0x0b,
+       0xec, 0xb4, 0xbb, 0x3d, 0x8d, 0x4f, 0xb3, 0x69,
+       0xb3, 0x06, 0x53, 0xd5, 0x02, 0xaa, 0x08, 0x93,
+       0x6b, 0x9b, 0x92, 0x15, 0xaf, 0xcc, 0xee, 0xd9,
+       0x83, 0x3d, 0xda, 0x46, 0xda, 0x32, 0x4a, 0x0c,
+       0x42, 0xcd, 0xe1, 0xac, 0x76, 0x43, 0xab, 0x45,
+       0x38, 0x73, 0x66, 0xc1, 0x0d, 0xa1, 0x96, 0x96,
+       0x11, 0x67, 0x2e, 0x9b, 0xfd, 0xb3, 0x00, 0x14,
+       0x0e, 0x57, 0x0e, 0x5c, 0x67, 0x11, 0x17, 0xf8,
+       0x9e, 0xb2, 0xbc, 0x2a, 0xb3, 0x25, 0x6a, 0x33,
+       0x2c, 0x2f, 0x35, 0x31, 0xbd, 0x24, 0xb8, 0x64,
+       0xaa, 0x9c, 0x58, 0xbf, 0x5f, 0x7a, 0x9c, 0x85,
+       0xec, 0x10, 0x77, 0x6f, 0x96, 0xb2, 0x56, 0x8d,
+       0xd8, 0x2c, 0xce, 0xa6, 0xba, 0xe3, 0x22, 0xe1,
+       0x0c, 0x6d, 0x84, 0xb6, 0x46, 0x9c, 0xb9, 0xfd,
+       0xaf, 0xb8, 0x23, 0x4a, 0x17, 0x0f, 0x8e, 0xec,
+       0xb7, 0x7e, 0xe5, 0x2f, 0xfd, 0x05, 0x78, 0x81,
+       0xcc, 0x47, 0x72, 0x4b, 0xf2, 0x45, 0x38, 0xf3,
+       0xb6, 0xd3, 0x9a, 0x33, 0x44, 0x59, 0x44, 0xe0,
+       0xa9, 0xe4, 0xe3, 0x7b, 0xe5, 0xf6, 0x6d, 0xf1,
+       0x32, 0x7f, 0x95, 0xfe, 0x79, 0x89, 0xc1, 0xcb,
+       0x2d, 0xf7, 0x34, 0xd7, 0xb6, 0xfa, 0x0e, 0x67,
+       0x9b, 0x99, 0x38, 0xbb, 0x30, 0xec, 0x6d, 0xc1,
+       0x8f, 0xb5, 0x28, 0x35, 0x3d, 0x43, 0x73, 0x4b,
+       0x40, 0xbb, 0xe3, 0xba, 0x7c, 0x7d, 0x71, 0x80,
+       0x38, 0xeb, 0xd3, 0x1b, 0x1b, 0x67, 0x70, 0x66,
+       0x1c, 0xce, 0x58, 0x36, 0xce, 0x3e, 0x80, 0x67,
+       0x1f, 0xe5, 0x6e, 0x1a, 0xbc, 0xf8, 0x22, 0x1d,
+       0x7a, 0xf7, 0x46, 0x20, 0x78, 0x8c, 0xcf, 0x9f,
+       0xaa, 0x8a, 0x2e, 0xab, 0x42, 0x9c, 0x18, 0x0c,
+       0x6f, 0x96, 0xf2, 0x38, 0xeb, 0x2d, 0xc6, 0x99,
+       0xc8, 0x69, 0x53, 0x0a, 0xe6, 0x60, 0x65, 0xf2,
+       0xa6, 0x96, 0x9f, 0x92, 0x76, 0xe2, 0x85, 0xa0,
+       0xff, 0x3c, 0xce, 0xa0, 0xd9, 0xe3, 0xae, 0x71,
+       0x4d, 0x26, 0xce, 0x44, 0xc1, 0xa0, 0x79, 0x47,
+       0xf1, 0x7e, 0x2b, 0x96, 0x96, 0x3c, 0xf7, 0x20,
+       0x0c, 0x06, 0xbb, 0x68, 0x6d, 0x4d, 0x14, 0x70,
+       0x51, 0x0f, 0xa0, 0x87, 0x4b, 0xbc, 0xe1, 0xac,
+       0x4b, 0xdd, 0x80, 0xe5, 0x6c, 0x9c, 0x2d, 0x37,
+       0xb8, 0x93, 0x67, 0xb5, 0x86, 0xd7, 0x51, 0x75,
+       0x34, 0xe5, 0xca, 0x0c, 0x86, 0xe3, 0xa4, 0xf2,
+       0x88, 0x19, 0x97, 0x15, 0xc7, 0xd2, 0xce, 0x5c,
+       0xa6, 0xc7, 0x99, 0xcc, 0xb1, 0x99, 0x17, 0xa4,
+       0x6a, 0x37, 0xb3, 0xdb, 0xe3, 0x76, 0x22, 0x27,
+       0x24, 0xdf, 0x42, 0xd0, 0xe1, 0x9e, 0x79, 0x9c,
+       0x01, 0xfb, 0xbd, 0xf4, 0x58, 0x1e, 0x67, 0x8a,
+       0x6f, 0xa8, 0x5c, 0xbb, 0xe3, 0xbc, 0xa3, 0x02,
+       0x75, 0xfe, 0x70, 0xf9, 0x99, 0xc7, 0xbb, 0xb5,
+       0x84, 0x62, 0x78, 0x39, 0x04, 0x5d, 0x6f, 0x3a,
+       0x9c, 0xd9, 0xfc, 0x22, 0x9c, 0xdd, 0xf4, 0xef,
+       0x52, 0xf3, 0x22, 0x88, 0xa2, 0xa6, 0xdc, 0xd5,
+       0x55, 0xde, 0xa2, 0xde, 0x37, 0xac, 0xf0, 0xa9,
+       0x5f, 0xdf, 0xf5, 0x16, 0x8b, 0x14, 0xbd, 0x27,
+       0xac, 0xe3, 0x70, 0x56, 0xde, 0xce, 0xc2, 0x59,
+       0xe1, 0x5e, 0x6f, 0x4b, 0x3e, 0x53, 0x5b, 0xbd,
+       0x83, 0x38, 0x23, 0x86, 0x26, 0xbd, 0xb1, 0xd1,
+       0x92, 0xe7, 0x05, 0x43, 0xea, 0x49, 0x32, 0x38,
+       0xf7, 0xc4, 0x1f, 0x2e, 0x5c, 0x99, 0x7b, 0x39,
+       0x4b, 0x90, 0x67, 0x36, 0xe3, 0x0d, 0xb4, 0x4e,
+       0x9e, 0x3d, 0x3b, 0x62, 0x4e, 0x9e, 0x39, 0x63,
+       0x2c, 0xc6, 0x19, 0xf5, 0x0b, 0xea, 0x85, 0xce,
+       0x22, 0x5e, 0xaf, 0xe2, 0x07, 0x5a, 0x5c, 0xcf,
+       0xbf, 0xd1, 0x2d, 0x23, 0xbd, 0x56, 0x57, 0x85,
+       0xa1, 0x5f, 0x6e, 0x09, 0x58, 0xfc, 0xba, 0xda,
+       0xb6, 0x72, 0x4d, 0xf3, 0x42, 0xa3, 0xc3, 0x30,
+       0x18, 0xef, 0x86, 0x36, 0x24, 0xac, 0x2c, 0xa0,
+       0xd9, 0x68, 0x45, 0x59, 0x66, 0x68, 0xc1, 0x40,
+       0xa3, 0xaf, 0xde, 0x22, 0x79, 0xc6, 0xd9, 0x14,
+       0xb4, 0xd4, 0x34, 0x0f, 0x71, 0x06, 0x65, 0x13,
+       0xa2, 0xb6, 0xac, 0x4e, 0xf2, 0x8c, 0xdc, 0x3d,
+       0x87, 0xb3, 0xd7, 0xd3, 0x38, 0x13, 0xcc, 0xe1,
+       0xcc, 0x54, 0xeb, 0xcc, 0xea, 0x77, 0x51, 0x6f,
+       0x2a, 0x8e, 0x16, 0x5b, 0x2b, 0x58, 0xa3, 0x07,
+       0x13, 0x9c, 0xe5, 0x26, 0x14, 0xf5, 0xf8, 0xcd,
+       0xb6, 0x8b, 0x71, 0xa6, 0xde, 0xd1, 0x3a, 0xb8,
+       0x31, 0x34, 0x91, 0xb6, 0x37, 0x3b, 0xee, 0x8f,
+       0x4d, 0x4c, 0x14, 0x23, 0x34, 0x38, 0x79, 0x86,
+       0xc6, 0xfb, 0x22, 0x9c, 0xb5, 0x3d, 0xce, 0x70,
+       0x3e, 0xb7, 0x75, 0xd0, 0x9b, 0xc4, 0x75, 0x72,
+       0x65, 0xb7, 0x12, 0x1e, 0x8c, 0x6b, 0xf1, 0x7c,
+       0xde, 0xc0, 0x47, 0xd5, 0xf3, 0x06, 0x87, 0xab,
+       0xc1, 0x90, 0x99, 0x67, 0x33, 0x04, 0x8c, 0x2f,
+       0x31, 0x88, 0x0b, 0x34, 0x8d, 0xc3, 0x19, 0xcd,
+       0xec, 0x6f, 0xc6, 0xbd, 0x7c, 0xc4, 0x5f, 0xe5,
+       0x5e, 0x6f, 0x5e, 0xf7, 0xda, 0xc9, 0xdc, 0xf4,
+       0xf2, 0xac, 0x1c, 0xcd, 0x27, 0x38, 0xed, 0x66,
+       0x7d, 0xf5, 0xbd, 0x61, 0xaf, 0x52, 0x7c, 0x66,
+       0x9d, 0x84, 0x1f, 0xc9, 0xb3, 0x56, 0xff, 0xff,
+       0x99, 0xbb, 0x9a, 0x18, 0x37, 0x8f, 0xf3, 0x3c,
+       0x33, 0x1c, 0x52, 0xc3, 0x15, 0x23, 0x0d, 0xd7,
+       0x0b, 0x81, 0x36, 0x54, 0x61, 0x76, 0x2d, 0xa8,
+       0x1b, 0x40, 0x40, 0x3f, 0x0b, 0x42, 0xa1, 0x06,
+       0x32, 0x30, 0xbb, 0xda, 0xa8, 0x74, 0xa0, 0x02,
+       0xb4, 0xdb, 0xc3, 0xaa, 0xc8, 0xe1, 0x5b, 0xd5,
+       0x07, 0xa5, 0xf0, 0x41, 0xbd, 0xa9, 0xb7, 0xe1,
+       0x9a, 0x16, 0x28, 0x77, 0x0f, 0x94, 0x02, 0x14,
+       0x9b, 0x36, 0x07, 0xc6, 0xf5, 0xc1, 0xc7, 0x4d,
+       0x6b, 0x14, 0x4e, 0x90, 0x03, 0x23, 0x08, 0x85,
+       0x7a, 0x13, 0x9a, 0x1e, 0xd4, 0x9e, 0xd4, 0xc2,
+       0x07, 0xf5, 0xa6, 0x04, 0x3d, 0xec, 0x2f, 0xb7,
+       0xf3, 0xbe, 0x33, 0xdf, 0x1f, 0xf9, 0x7d, 0x5c,
+       0xae, 0xac, 0x14, 0xe1, 0x41, 0x12, 0xc5, 0x8f,
+       0xc3, 0xf9, 0x79, 0xe6, 0xfd, 0x99, 0xf7, 0x9d,
+       0xe7, 0x55, 0xae, 0x31, 0xfb, 0xda, 0xb5, 0x38,
+       0xeb, 0x22, 0x9b, 0x8a, 0xfd, 0xa0, 0x04, 0xd3,
+       0xc0, 0x5f, 0x92, 0x73, 0x4e, 0x9e, 0x91, 0x77,
+       0xc7, 0xa3, 0xd5, 0x11, 0xce, 0x96, 0xc8, 0x69,
+       0x0d, 0x7a, 0x33, 0x00, 0x62, 0x9e, 0x2b, 0x0a,
+       0xf5, 0x44, 0x6b, 0xd8, 0xa1, 0xa9, 0x22, 0x40,
+       0x2b, 0x4e, 0x6f, 0x36, 0x4c, 0x01, 0xce, 0x0c,
+       0x45, 0x79, 0xd6, 0x80, 0xad, 0xe8, 0xf5, 0x66,
+       0x2a, 0x0b, 0xe0, 0x27, 0x07, 0x11, 0x21, 0x1d,
+       0x24, 0xfe, 0x39, 0x79, 0x06, 0xda, 0xc9, 0x1a,
+       0x20, 0xbc, 0xc9, 0x73, 0xb2, 0x22, 0xe4, 0x7c,
+       0x45, 0xf3, 0x9a, 0x22, 0xaa, 0x5d, 0x23, 0xe5,
+       0x4b, 0x10, 0x56, 0x68, 0x30, 0x77, 0x6c, 0xcd,
+       0xc9, 0x93, 0x5d, 0x3b, 0x9f, 0x75, 0xab, 0x5a,
+       0x2d, 0xce, 0x38, 0xf9, 0x76, 0x80, 0x38, 0x03,
+       0x30, 0x35, 0x99, 0x56, 0xf5, 0x62, 0x79, 0x36,
+       0x5b, 0xb3, 0x38, 0xa3, 0x17, 0x80, 0xcb, 0xeb,
+       0xef, 0x2c, 0xce, 0xd6, 0xff, 0x44, 0x74, 0x49,
+       0x3d, 0x75, 0x4d, 0x35, 0x5d, 0xb2, 0x57, 0x90,
+       0x35, 0x8d, 0x7c, 0x3f, 0x45, 0x38, 0x2b, 0x61,
+       0xe2, 0x7d, 0xe0, 0xd8, 0x52, 0x48, 0xe8, 0x10,
+       0xb1, 0x7a, 0x88, 0xf9, 0x23, 0x03, 0x6f, 0xd5,
+       0x7f, 0x18, 0xe3, 0x4c, 0xab, 0x13, 0x50, 0x1c,
+       0xaf, 0x40, 0x9e, 0x11, 0xf6, 0x3e, 0xd4, 0xd7,
+       0x9c, 0xf7, 0x92, 0x54, 0xab, 0x1a, 0x44, 0xff,
+       0x82, 0x1d, 0x77, 0xa2, 0xb3, 0x80, 0x3b, 0x00,
+       0xbd, 0x1c, 0x87, 0xb3, 0x90, 0x0a, 0x97, 0x06,
+       0x97, 0x2b, 0xcf, 0xd4, 0x49, 0xd8, 0x41, 0x1c,
+       0xc9, 0x23, 0x57, 0x6d, 0xcf, 0xf8, 0x0d, 0x68,
+       0x66, 0x61, 0xc7, 0x3c, 0xd8, 0x72, 0xc7, 0x1d,
+       0x27, 0x39, 0xd9, 0x70, 0xab, 0xd9, 0x5d, 0x35,
+       0x6c, 0x6d, 0x79, 0xa6, 0x53, 0x0d, 0xea, 0x39,
+       0xf2, 0xec, 0x5f, 0x2c, 0xce, 0xc4, 0xb5, 0x16,
+       0xd9, 0x30, 0xf4, 0x1d, 0x4a, 0x06, 0xcd, 0xc6,
+       0x3c, 0x09, 0xc1, 0x2a, 0x08, 0xe4, 0x93, 0x1d,
+       0xbc, 0x52, 0xb0, 0xa5, 0x89, 0xdf, 0x41, 0x0e,
+       0x67, 0x4d, 0x76, 0x05, 0xe5, 0x19, 0x29, 0x94,
+       0x67, 0x9a, 0x9c, 0xfe, 0x9a, 0x9c, 0x85, 0x8c,
+       0xf0, 0x73, 0x80, 0xb3, 0xd3, 0x90, 0xc2, 0x7a,
+       0x07, 0x13, 0x66, 0xdc, 0xd5, 0x3b, 0x1a, 0xdb,
+       0x67, 0xce, 0x72, 0x14, 0x3a, 0xc8, 0xd7, 0x9b,
+       0xee, 0x80, 0x03, 0xc8, 0xd4, 0x84, 0xab, 0x3e,
+       0x48, 0x34, 0xa6, 0xea, 0x3c, 0x18, 0xc6, 0xb9,
+       0x5a, 0x76, 0xfc, 0xd7, 0x3b, 0x11, 0xce, 0xa8,
+       0x9c, 0xe1, 0x24, 0xaf, 0xd2, 0xae, 0x5c, 0xae,
+       0xe8, 0xa6, 0xe9, 0x4b, 0x8b, 0xb3, 0x01, 0xc4,
+       0x27, 0x06, 0x02, 0xdc, 0x71, 0xbe, 0xb1, 0x65,
+       0x9b, 0x69, 0xec, 0x82, 0x1f, 0xe0, 0x4e, 0xf6,
+       0xc5, 0xf2, 0x7b, 0x56, 0x6f, 0xae, 0xeb, 0x87,
+       0xfc, 0x21, 0x91, 0xa2, 0x06, 0xf6, 0x59, 0x01,
+       0xce, 0xb4, 0x9e, 0xad, 0x5a, 0x9c, 0xd5, 0x3f,
+       0xd7, 0x3e, 0xb6, 0x0a, 0xd5, 0xea, 0xca, 0xf4,
+       0xfb, 0x3b, 0x26, 0x36, 0xf9, 0x15, 0xd6, 0x6e,
+       0xb3, 0xd0, 0xb1, 0x7a, 0x11, 0x56, 0x9d, 0x93,
+       0x22, 0x9c, 0x11, 0x87, 0xb3, 0xa5, 0x20, 0x73,
+       0xa2, 0x2e, 0x9f, 0xed, 0xa2, 0x7d, 0xa6, 0xbc,
+       0x50, 0xbc, 0x8d, 0x7a, 0xd3, 0xfa, 0x01, 0x54,
+       0xeb, 0x13, 0x21, 0x29, 0xc2, 0x99, 0xf5, 0xe5,
+       0x5b, 0x16, 0x67, 0xee, 0x6b, 0x15, 0xd7, 0x18,
+       0x55, 0x4a, 0xec, 0x77, 0xbe, 0x1b, 0x3b, 0x5c,
+       0xcc, 0x38, 0xbd, 0xc9, 0x36, 0x21, 0x17, 0x7e,
+       0x82, 0x7d, 0xc6, 0xc8, 0xb5, 0x26, 0x6c, 0xd4,
+       0x9f, 0x7a, 0xed, 0x15, 0xce, 0x11, 0x53, 0xff,
+       0x29, 0x39, 0x39, 0xec, 0xdc, 0x0f, 0xc4, 0x99,
+       0x81, 0x2b, 0x62, 0x6e, 0xe5, 0x59, 0x50, 0x2f,
+       0x0f, 0x84, 0x5d, 0xcd, 0x35, 0x3d, 0xd3, 0x79,
+       0x10, 0xc8, 0x1c, 0x9c, 0x5d, 0xff, 0xbc, 0xd3,
+       0xa8, 0x97, 0x5a, 0xa4, 0xd6, 0xae, 0x5e, 0x5a,
+       0x20, 0x03, 0x7e, 0xd3, 0x36, 0xd6, 0xb1, 0x2d,
+       0x5f, 0xa2, 0x37, 0xb7, 0xd1, 0x0f, 0xf8, 0x8d,
+       0xb3, 0x8d, 0x4e, 0x08, 0xd0, 0x9b, 0x77, 0x8c,
+       0xd5, 0x9b, 0x0d, 0xb0, 0xcf, 0x8a, 0x70, 0x76,
+       0x6e, 0x40, 0x97, 0xc9, 0xe9, 0xe7, 0x58, 0x51,
+       0x1b, 0x52, 0x5c, 0x41, 0x6f, 0x92, 0xb3, 0xe2,
+       0xca, 0x36, 0x27, 0xb1, 0xaa, 0x53, 0xb5, 0x26,
+       0xe8, 0x4d, 0xfb, 0xa6, 0xcb, 0x6e, 0xa9, 0x99,
+       0xdc, 0xb4, 0x94, 0x45, 0x65, 0x71, 0xd6, 0x20,
+       0x2e, 0x95, 0x3a, 0x9d, 0x7d, 0x63, 0x1f, 0xbe,
+       0x39, 0xd4, 0xe2, 0x1d, 0xdf, 0x18, 0x12, 0x0b,
+       0x5a, 0xbd, 0x19, 0xf2, 0x32, 0xdc, 0x63, 0x3a,
+       0xdf, 0xcd, 0x6b, 0x4c, 0xd2, 0x8a, 0x9e, 0x6b,
+       0x98, 0x1e, 0xc8, 0x33, 0x09, 0x40, 0x00, 0xd2,
+       0xe4, 0xb0, 0x6e, 0x91, 0xfa, 0xa6, 0xea, 0x0f,
+       0x83, 0x2a, 0xea, 0x4d, 0x5a, 0xb5, 0x70, 0xbe,
+       0xaf, 0xd0, 0x0f, 0xe0, 0xde, 0x0f, 0x30, 0x45,
+       0x51, 0x59, 0xad, 0x17, 0x66, 0xc0, 0x11, 0x63,
+       0x56, 0x6f, 0x36, 0x66, 0xb5, 0x00, 0x96, 0xfe,
+       0xf2, 0xe7, 0xa4, 0xb5, 0x9d, 0xc2, 0x99, 0x72,
+       0xf6, 0x19, 0x64, 0x82, 0x10, 0x7a, 0x34, 0xce,
+       0x4c, 0x94, 0xfc, 0x81, 0xd7, 0x74, 0xda, 0x81,
+       0x5c, 0x75, 0x38, 0x8b, 0xd4, 0xc0, 0x87, 0xde,
+       0xdf, 0x7c, 0x42, 0x8b, 0xfc, 0xcd, 0x04, 0x67,
+       0x71, 0xa4, 0x44, 0x92, 0x5b, 0x1a, 0xd3, 0x1e,
+       0xc5, 0x61, 0xe7, 0xdb, 0x09, 0xf7, 0x8e, 0xc7,
+       0x99, 0xd8, 0x24, 0x93, 0xfd, 0x00, 0x46, 0x4a,
+       0x50, 0x11, 0xa0, 0xe7, 0x82, 0xb3, 0x14, 0xf4,
+       0xbf, 0xf5, 0x34, 0xe9, 0x77, 0xac, 0xde, 0xbc,
+       0x54, 0xbd, 0xf0, 0xa8, 0x01, 0xfe, 0xea, 0xbc,
+       0xd7, 0x9b, 0x66, 0xb3, 0x8f, 0x7a, 0x73, 0x3e,
+       0xd7, 0x0f, 0xb8, 0xfe, 0x59, 0x67, 0x55, 0xbc,
+       0xd1, 0xc2, 0x94, 0x33, 0x48, 0x65, 0x6f, 0x54,
+       0x43, 0xab, 0xa1, 0x20, 0x11, 0x74, 0xb0, 0x87,
+       0x38, 0x7b, 0x09, 0xf5, 0x8a, 0x11, 0x67, 0x53,
+       0xf8, 0x01, 0x1e, 0x67, 0x90, 0xe2, 0x0a, 0xda,
+       0xf0, 0xd4, 0x00, 0x84, 0xad, 0xc5, 0x99, 0x1a,
+       0x1c, 0x72, 0x82, 0xd0, 0x70, 0x85, 0x2f, 0x7d,
+       0xcf, 0x9c, 0x1f, 0x90, 0x6b, 0x1e, 0xa0, 0x7d,
+       0xd6, 0x70, 0x29, 0x46, 0x08, 0x1d, 0xb8, 0xb9,
+       0xb0, 0xe0, 0xac, 0x9d, 0x9b, 0xbb, 0xc4, 0x81,
+       0x16, 0x1a, 0x5b, 0xc1, 0xfc, 0x45, 0xa6, 0x59,
+       0x87, 0x59, 0xf1, 0xcf, 0xdb, 0xb9, 0x7e, 0x80,
+       0xb5, 0xcf, 0x96, 0x21, 0xab, 0xb2, 0x4d, 0x06,
+       0x8b, 0x58, 0xb5, 0xf7, 0x46, 0x1f, 0xad, 0x20,
+       0x2b, 0x8b, 0xcc, 0xa1, 0x75, 0xf3, 0xea, 0xba,
+       0xc7, 0x69, 0xd5, 0xfb, 0x01, 0x66, 0x85, 0x35,
+       0xd1, 0x0f, 0x58, 0x01, 0x3e, 0x99, 0x3c, 0x9c,
+       0x69, 0xf2, 0x96, 0x95, 0x9d, 0xa0, 0x37, 0xc1,
+       0x3e, 0xeb, 0x3e, 0xd4, 0x76, 0x01, 0xe8, 0xe7,
+       0xd5, 0x2f, 0x75, 0x38, 0x44, 0xb9, 0xf8, 0xd8,
+       0x9b, 0x07, 0xcc, 0xa9, 0x3c, 0xf4, 0x03, 0x44,
+       0x11, 0xce, 0x3a, 0x98, 0xd8, 0xa5, 0x90, 0x7f,
+       0xd6, 0xe1, 0xcc, 0x6a, 0x04, 0x8b, 0x33, 0xd2,
+       0x3c, 0x30, 0x4b, 0x78, 0xae, 0x81, 0x38, 0x13,
+       0xb7, 0x01, 0x67, 0x01, 0x71, 0x38, 0xd3, 0x85,
+       0xf2, 0xac, 0xd1, 0xb3, 0xda, 0xae, 0xe4, 0xf5,
+       0x2a, 0xb2, 0xa9, 0xd6, 0xba, 0xf4, 0x1d, 0xeb,
+       0x88, 0xd5, 0xe0, 0xd8, 0x66, 0xe0, 0x82, 0x43,
+       0x1b, 0x91, 0x1f, 0x30, 0x8a, 0xb3, 0xe4, 0xaa,
+       0x92, 0xf3, 0x37, 0xb5, 0xbb, 0x6e, 0x03, 0x93,
+       0xba, 0xbe, 0x09, 0xd7, 0x63, 0xb4, 0xa9, 0x07,
+       0xe5, 0xc1, 0x4e, 0x27, 0x08, 0xe8, 0xbd, 0xc1,
+       0xf9, 0x06, 0x8c, 0xf0, 0xa2, 0xd3, 0x9b, 0x0d,
+       0xef, 0x07, 0xdc, 0x0f, 0x16, 0xc6, 0x58, 0x13,
+       0x2d, 0xce, 0xc0, 0xdf, 0x3c, 0xf9, 0x67, 0x64,
+       0xa3, 0x4d, 0x21, 0x75, 0x91, 0xdb, 0xa5, 0xbb,
+       0xa5, 0x56, 0xac, 0x31, 0x47, 0xee, 0x6c, 0x87,
+       0xf4, 0x2a, 0x26, 0x10, 0x7a, 0x3f, 0xc0, 0x36,
+       0xf6, 0xd2, 0xf9, 0x01, 0x27, 0x9f, 0xd3, 0xf1,
+       0x8a, 0x8d, 0x80, 0xb3, 0x7f, 0x84, 0xc4, 0x2e,
+       0x0d, 0xf2, 0xec, 0x5d, 0x6b, 0x9f, 0x69, 0xa8,
+       0xf5, 0x68, 0x1f, 0x6e, 0x5f, 0x95, 0x6a, 0xbf,
+       0x67, 0x62, 0x68, 0xf8, 0x4a, 0xc6, 0x78, 0xae,
+       0xc1, 0x00, 0x67, 0x63, 0x15, 0x1b, 0x05, 0xea,
+       0x4d, 0x0b, 0x2d, 0x97, 0xe2, 0x1a, 0x89, 0xa8,
+       0x5b, 0x04, 0x13, 0x4d, 0xef, 0xec, 0xc3, 0x84,
+       0x57, 0x06, 0xc6, 0xc9, 0x6d, 0x48, 0x1f, 0x04,
+       0x62, 0xd6, 0xb2, 0xb5, 0x0b, 0xba, 0xc8, 0x02,
+       0x36, 0x1a, 0x56, 0x91, 0xf5, 0x8a, 0x61, 0xa2,
+       0x5c, 0x42, 0x79, 0x06, 0xf6, 0xdb, 0x9c, 0x51,
+       0xca, 0xaa, 0x9e, 0xb6, 0xa8, 0x4b, 0x75, 0x04,
+       0xfb, 0xd3, 0xb1, 0xb2, 0xbc, 0x7e, 0x71, 0xf8,
+       0x4a, 0x79, 0x41, 0x64, 0xec, 0x61, 0x3c, 0x9d,
+       0xfe, 0x5d, 0xc8, 0xf2, 0x12, 0x33, 0xa3, 0x0f,
+       0x2b, 0xa1, 0xae, 0xed, 0x27, 0x5c, 0x5e, 0xd0,
+       0x77, 0x8b, 0x54, 0xe5, 0x91, 0x5b, 0xc0, 0xe5,
+       0x15, 0x3d, 0x5c, 0x8b, 0x98, 0xd3, 0x65, 0x5c,
+       0xaf, 0xe2, 0x27, 0x43, 0x32, 0x16, 0xae, 0x66,
+       0x13, 0x83, 0xae, 0xe3, 0x39, 0x2f, 0x3a, 0x02,
+       0x75, 0xb8, 0xcf, 0x5f, 0xdf, 0x9c, 0xfd, 0xeb,
+       0xee, 0xc8, 0xc8, 0xb9, 0x31, 0xe9, 0x64, 0xb7,
+       0xa2, 0x39, 0x23, 0x62, 0x86, 0x2a, 0x5e, 0xce,
+       0x4c, 0x30, 0x37, 0xc3, 0xd4, 0xbc, 0xc4, 0x91,
+       0xa1, 0x95, 0x29, 0x12, 0x04, 0x54, 0x3a, 0x84,
+       0xef, 0x14, 0x99, 0xd8, 0xce, 0x09, 0xb5, 0xb2,
+       0xa3, 0x81, 0x4a, 0x33, 0xb1, 0x52, 0x77, 0x86,
+       0xef, 0x2b, 0xb7, 0x67, 0x42, 0x87, 0x5c, 0xf9,
+       0xcf, 0x79, 0xc1, 0xb9, 0x2a, 0xb2, 0x09, 0x28,
+       0x11, 0x2f, 0x93, 0x5e, 0xf2, 0xbb, 0x7a, 0x73,
+       0x27, 0xa1, 0x74, 0xa0, 0xe9, 0x9b, 0x95, 0x85,
+       0x47, 0xed, 0x98, 0xe0, 0xcd, 0x47, 0x24, 0x9d,
+       0xfb, 0xf3, 0xe5, 0xab, 0x56, 0x9e, 0x62, 0xfe,
+       0xa2, 0xbc, 0x49, 0xa1, 0x64, 0x24, 0x61, 0xc6,
+       0x5f, 0xa2, 0x5d, 0x38, 0x0a, 0x68, 0x22, 0xc5,
+       0x17, 0x95, 0x44, 0x89, 0x31, 0x65, 0x4c, 0x40,
+       0x06, 0x3b, 0xb2, 0x5b, 0x98, 0xf4, 0x73, 0x26,
+       0x27, 0x7a, 0x64, 0x04, 0x67, 0x4b, 0xc0, 0x5a,
+       0xbb, 0x20, 0x39, 0xf7, 0x75, 0xcd, 0x48, 0x44,
+       0xba, 0xdc, 0x3d, 0x80, 0xf0, 0x1d, 0xab, 0x23,
+       0xbf, 0xba, 0x76, 0xe7, 0xe9, 0x75, 0x47, 0x37,
+       0x05, 0x57, 0x31, 0xc6, 0xbb, 0xe7, 0xfe, 0xcb,
+       0x07, 0xa9, 0x63, 0x06, 0x56, 0xc7, 0xcb, 0x21,
+       0x0f, 0x14, 0xa1, 0x7f, 0x4b, 0xff, 0xd0, 0x58,
+       0x6b, 0xad, 0xa4, 0xff, 0x7e, 0x6d, 0xb1, 0xdf,
+       0x23, 0x97, 0xe7, 0x48, 0xeb, 0xcf, 0x59, 0x40,
+       0x43, 0x33, 0xee, 0x55, 0x98, 0x8f, 0x02, 0xfa,
+       0xd9, 0x52, 0x4d, 0x92, 0xba, 0x62, 0xb5, 0x32,
+       0x10, 0x21, 0x43, 0x04, 0x5e, 0x84, 0xcc, 0x8a,
+       0x55, 0xb1, 0xb5, 0xab, 0x66, 0x29, 0x9f, 0xb5,
+       0xde, 0x72, 0xe9, 0x9a, 0x5b, 0xf8, 0x6a, 0xbf,
+       0xf5, 0x07, 0xf2, 0x07, 0xcb, 0xfd, 0x19, 0x51,
+       0x5d, 0x92, 0xa3, 0x3a, 0xdd, 0xbc, 0xbc, 0xb4,
+       0x78, 0xef, 0x97, 0x5b, 0xd6, 0x6a, 0xd1, 0x5f,
+       0xd5, 0x98, 0x0a, 0x36, 0xa0, 0x68, 0x39, 0x93,
+       0xa1, 0xe4, 0xcc, 0x6e, 0x1e, 0x85, 0xab, 0xc9,
+       0xa8, 0xf2, 0x14, 0x8e, 0x30, 0x57, 0x52, 0x45,
+       0xb1, 0x8c, 0xfa, 0x78, 0x7c, 0x59, 0x0a, 0xb6,
+       0x82, 0x33, 0x05, 0x94, 0xb4, 0xd1, 0x25, 0x67,
+       0xa9, 0xf1, 0x54, 0x02, 0xa3, 0x3b, 0xca, 0x6d,
+       0x21, 0x9a, 0x0a, 0xff, 0xb5, 0x89, 0xc6, 0xeb,
+       0x51, 0x63, 0xad, 0x59, 0x8f, 0xaa, 0x8e, 0x61,
+       0x60, 0x30, 0x94, 0xca, 0x9c, 0xc7, 0x4b, 0xab,
+       0xb9, 0x6c, 0xc6, 0x01, 0x66, 0x93, 0xec, 0x1e,
+       0x33, 0x65, 0x08, 0x50, 0xa5, 0xff, 0xb2, 0xeb,
+       0x75, 0x77, 0x7b, 0x2c, 0x94, 0x44, 0xa7, 0x10,
+       0x66, 0x32, 0x43, 0x66, 0x1c, 0x3d, 0x9e, 0xca,
+       0x5a, 0x4d, 0x13, 0xad, 0xf4, 0xc4, 0x84, 0x7d,
+       0xae, 0xa3, 0xeb, 0x7c, 0x7c, 0x24, 0x8e, 0x26,
+       0xf7, 0x24, 0x91, 0x23, 0x81, 0x3a, 0x73, 0x44,
+       0x0e, 0x89, 0xce, 0x6c, 0xfa, 0xb8, 0xaf, 0x86,
+       0xfc, 0x78, 0x18, 0xef, 0xf3, 0xb1, 0xae, 0x68,
+       0x4a, 0x26, 0x84, 0xe6, 0x93, 0xdd, 0x17, 0x57,
+       0xa2, 0x15, 0x87, 0x9e, 0x6f, 0x8e, 0x4c, 0x9f,
+       0x08, 0x24, 0x8b, 0x3a, 0xbb, 0xbd, 0x7f, 0x44,
+       0x46, 0xcd, 0x31, 0x22, 0xa9, 0xba, 0xe7, 0x88,
+       0x74, 0x8e, 0x5d, 0xae, 0x4e, 0xc4, 0x7f, 0x29,
+       0x27, 0x8d, 0x60, 0x7c, 0x4f, 0x0f, 0x32, 0x3f,
+       0x3a, 0x6d, 0x91, 0x5d, 0x5f, 0x22, 0xbe, 0x9f,
+       0x0d, 0x05, 0x36, 0xdd, 0x0d, 0x19, 0xaf, 0x2b,
+       0x79, 0x34, 0xf1, 0x47, 0xe4, 0x11, 0x6a, 0xf3,
+       0xb8, 0x4a, 0x3c, 0x87, 0x4f, 0xc2, 0x88, 0x06,
+       0x3e, 0xfa, 0x38, 0xa0, 0xa4, 0x3a, 0xb2, 0x6b,
+       0xb5, 0x64, 0x31, 0x79, 0xdc, 0x99, 0xad, 0xdd,
+       0x3c, 0x81, 0x3f, 0x5a, 0x53, 0x6a, 0x8a, 0xd5,
+       0x6d, 0xdb, 0x3d, 0x38, 0xd8, 0xcb, 0x3b, 0x9e,
+       0x64, 0x47, 0x75, 0xcd, 0x8c, 0xe2, 0x17, 0x33,
+       0x55, 0xae, 0xee, 0x8d, 0x61, 0x39, 0xbb, 0xdf,
+       0xa6, 0xda, 0xec, 0xbe, 0xcd, 0xde, 0x5e, 0x8a,
+       0xc2, 0x68, 0x9a, 0x17, 0x1f, 0x1b, 0xa1, 0x88,
+       0xdb, 0x5c, 0xdc, 0xce, 0xf4, 0xea, 0xb8, 0xac,
+       0x97, 0x3a, 0x41, 0xb1, 0x95, 0xaf, 0x2f, 0xf7,
+       0x46, 0xca, 0xa2, 0x89, 0x23, 0x37, 0x02, 0x2d,
+       0xfc, 0xe1, 0x2b, 0x87, 0x69, 0xa3, 0x2c, 0xbb,
+       0x5d, 0xfa, 0xb9, 0x1e, 0xff, 0x20, 0x7a, 0x62,
+       0x3c, 0x8e, 0x21, 0xf6, 0xd0, 0x48, 0x64, 0x6d,
+       0x35, 0x36, 0x0d, 0x47, 0xec, 0x24, 0x22, 0xc7,
+       0xd2, 0x0b, 0x36, 0x87, 0x1a, 0x4f, 0xf4, 0x72,
+       0x96, 0x54, 0x69, 0x12, 0xf0, 0x1c, 0x48, 0x9c,
+       0xa0, 0x45, 0xc3, 0x0c, 0x76, 0xc6, 0x97, 0x0a,
+       0x12, 0x4c, 0x18, 0xa4, 0xf2, 0xb0, 0x29, 0x04,
+       0x8a, 0x62, 0x51, 0xf7, 0x24, 0xb9, 0xbd, 0xc7,
+       0x19, 0xc9, 0xe9, 0x97, 0x28, 0x4a, 0x67, 0x13,
+       0x64, 0x74, 0xf1, 0x13, 0x12, 0xbe, 0xef, 0xef,
+       0x8e, 0x4b, 0x29, 0x39, 0x51, 0x70, 0xc1, 0x8f,
+       0xce, 0x65, 0x8d, 0x43, 0xbf, 0xca, 0xa6, 0xb7,
+       0xe7, 0x47, 0x96, 0x57, 0x3a, 0x89, 0x8a, 0x69,
+       0xc1, 0xeb, 0xbf, 0xb8, 0x8b, 0xd6, 0xf7, 0x8a,
+       0x3f, 0x3b, 0x5f, 0x47, 0xa2, 0x10, 0x9c, 0x07,
+       0x97, 0x9b, 0x37, 0xb6, 0x79, 0xa4, 0xa7, 0x6a,
+       0x17, 0x8e, 0x18, 0xc6, 0x0b, 0x7f, 0x68, 0xbc,
+       0x4c, 0x56, 0xf7, 0xe6, 0x52, 0xfd, 0xe5, 0x4d,
+       0x80, 0x09, 0x64, 0xa3, 0x50, 0x95, 0xe2, 0x69,
+       0x52, 0x69, 0xb4, 0x1a, 0x32, 0xa7, 0xec, 0xd2,
+       0x00, 0xb5, 0xac, 0x49, 0x2a, 0x83, 0xa2, 0x68,
+       0x78, 0xb2, 0xa3, 0x83, 0x6a, 0x99, 0x20, 0x8f,
+       0xb7, 0x7d, 0xfc, 0x23, 0x88, 0x60, 0x5f, 0x1f,
+       0xf0, 0x3f, 0x9e, 0x11, 0x21, 0xe1, 0x9f, 0x10,
+       0x95, 0x96, 0x0d, 0x8e, 0x38, 0xac, 0x47, 0xff,
+       0x79, 0x7d, 0x7d, 0x16, 0xea, 0x4d, 0xad, 0x90,
+       0xb2, 0x8b, 0x90, 0xb4, 0xa4, 0xa4, 0x17, 0x8c,
+       0x20, 0x4f, 0xf6, 0x81, 0x90, 0x8b, 0xe9, 0x8b,
+       0x82, 0x5c, 0x83, 0xdc, 0xe9, 0xf9, 0x56, 0x75,
+       0x83, 0xdc, 0x33, 0xcb, 0xd6, 0x96, 0xa9, 0x7e,
+       0x2c, 0xe4, 0xb7, 0x12, 0xf9, 0xeb, 0x72, 0x41,
+       0x7e, 0xf5, 0x96, 0xb8, 0xf7, 0x7e, 0x7f, 0x13,
+       0xf2, 0xa2, 0x6b, 0x0b, 0xec, 0x4e, 0x4d, 0x19,
+       0xd9, 0x92, 0xb3, 0x7a, 0x46, 0xc3, 0xde, 0x84,
+       0x9c, 0x3d, 0x3b, 0x0d, 0x5a, 0xc5, 0x19, 0xe9,
+       0xa9, 0x54, 0x4f, 0xf7, 0x86, 0x27, 0x96, 0x3c,
+       0x5c, 0xfc, 0x92, 0xd6, 0x72, 0x14, 0x92, 0xcc,
+       0x43, 0xce, 0xcc, 0x48, 0x2e, 0xfc, 0x93, 0xbd,
+       0x18, 0x25, 0x8c, 0xb9, 0x7c, 0xab, 0xf5, 0x48,
+       0xf9, 0xe7, 0xa5, 0xd9, 0xb9, 0x7a, 0xc3, 0xd2,
+       0xf7, 0xd4, 0x1a, 0x2b, 0x8e, 0xcb, 0xcb, 0xe5,
+       0x91, 0xa5, 0x0d, 0x17, 0x28, 0x6f, 0x36, 0xad,
+       0xb8, 0xce, 0x41, 0x74, 0x93, 0xbf, 0xc8, 0x98,
+       0xee, 0x0b, 0x53, 0x29, 0xdb, 0xec, 0x85, 0x9d,
+       0x14, 0xe2, 0xb6, 0xb7, 0x33, 0x1e, 0x4c, 0x7a,
+       0xa7, 0xa8, 0xdc, 0xcc, 0x19, 0x15, 0xfd, 0x91,
+       0x96, 0x5b, 0x51, 0x51, 0xc0, 0x7d, 0x91, 0x87,
+       0x69, 0x33, 0x71, 0x8c, 0xed, 0x6c, 0x1b, 0x68,
+       0x26, 0x82, 0x0d, 0xf9, 0x97, 0xc3, 0x39, 0x3d,
+       0xe5, 0xd8, 0x46, 0x8c, 0xb1, 0xf8, 0xd7, 0x93,
+       0x93, 0xac, 0xcd, 0xed, 0x28, 0xb0, 0x9e, 0xd7,
+       0x3f, 0x36, 0xc9, 0xdb, 0x19, 0x99, 0x45, 0xfb,
+       0x3f, 0xcf, 0xf6, 0x93, 0xff, 0xe6, 0xa3, 0xd4,
+       0x04, 0xc5, 0x83, 0x8d, 0xb6, 0x6d, 0x54, 0x2c,
+       0xd0, 0xd9, 0x87, 0xc1, 0x50, 0xe6, 0x74, 0x8a,
+       0x4e, 0x5e, 0x49, 0xe9, 0xda, 0x32, 0x71, 0x55,
+       0x6a, 0xef, 0xb5, 0x98, 0xc3, 0xcc, 0xcf, 0xcf,
+       0xa5, 0xbe, 0x52, 0xd8, 0x62, 0x1f, 0x8f, 0x19,
+       0x50, 0xae, 0x67, 0x9f, 0xdd, 0x1e, 0xe6, 0x02,
+       0xc8, 0xd1, 0xc2, 0xf1, 0x22, 0xf1, 0x98, 0xa5,
+       0xc8, 0x77, 0x18, 0xb2, 0xce, 0x41, 0xf7, 0x30,
+       0x67, 0x5e, 0xb1, 0xde, 0xdb, 0xf4, 0x25, 0x86,
+       0xe3, 0x2f, 0x89, 0xd8, 0xe1, 0xd7, 0xd3, 0x99,
+       0xa1, 0x29, 0x14, 0xf9, 0x89, 0xa3, 0xf1, 0x24,
+       0x87, 0xa8, 0x84, 0xcf, 0x5b, 0xb9, 0x34, 0x4f,
+       0x6e, 0x67, 0x9a, 0x5b, 0x22, 0xaa, 0x77, 0x4c,
+       0x63, 0xc1, 0x1c, 0x1c, 0xb9, 0x7c, 0xd3, 0xbf,
+       0xdc, 0x9c, 0x71, 0x1a, 0xc5, 0x68, 0xd2, 0x58,
+       0x0f, 0xcd, 0x31, 0x1b, 0x6b, 0x1e, 0xb8, 0x2f,
+       0x2e, 0x7e, 0x8f, 0x93, 0xf0, 0x7c, 0x76, 0x5a,
+       0xfb, 0xc7, 0x4d, 0xc9, 0x74, 0xd9, 0x84, 0x72,
+       0x70, 0xbe, 0x41, 0x47, 0x7a, 0x76, 0x1e, 0x33,
+       0x00, 0x8e, 0xf5, 0xba, 0x0b, 0x4e, 0x05, 0x14,
+       0xcf, 0x3b, 0xcb, 0xb3, 0x4b, 0x68, 0x77, 0xeb,
+       0x60, 0xe9, 0x98, 0x8d, 0x05, 0x08, 0xda, 0x0a,
+       0x23, 0x8d, 0x9c, 0x5e, 0x1f, 0x77, 0x59, 0xbe,
+       0xda, 0x71, 0x11, 0xb2, 0xe6, 0xa6, 0xc8, 0x0e,
+       0x53, 0x2d, 0x10, 0x73, 0xff, 0x98, 0x8d, 0x6d,
+       0x41, 0x65, 0xd0, 0xbe, 0xd5, 0x32, 0xb3, 0x70,
+       0x6f, 0x17, 0x94, 0x80, 0x89, 0xeb, 0x33, 0x2a,
+       0x9a, 0x52, 0x54, 0xd1, 0xde, 0xe5, 0xeb, 0x47,
+       0xe2, 0x2c, 0x26, 0x6c, 0x35, 0x47, 0x8a, 0xa0,
+       0x09, 0x56, 0xfd, 0x1d, 0x8f, 0x33, 0xb0, 0x06,
+       0x7c, 0x0e, 0x4d, 0xcc, 0x91, 0x62, 0xe8, 0xb4,
+       0x8a, 0x29, 0x5a, 0x80, 0x6d, 0xb4, 0x11, 0x07,
+       0x60, 0x37, 0x84, 0x7e, 0x53, 0x46, 0xf0, 0x32,
+       0xdf, 0xcd, 0xfb, 0xc6, 0xa7, 0xc5, 0x3d, 0xfb,
+       0x4f, 0x80, 0x86, 0x3c, 0x33, 0x80, 0x21, 0x41,
+       0x63, 0x40, 0xeb, 0xf4, 0x28, 0x2a, 0xca, 0x9c,
+       0x17, 0xfa, 0x96, 0xf5, 0x33, 0x85, 0x8d, 0x01,
+       0x39, 0x64, 0xcd, 0x9c, 0xf8, 0xb5, 0x3a, 0x85,
+       0x97, 0xb1, 0x9e, 0xe3, 0x15, 0x71, 0x2f, 0x40,
+       0x72, 0xa3, 0x3b, 0x35, 0x73, 0xa2, 0x70, 0x9c,
+       0xb7, 0xd1, 0x72, 0xac, 0x3c, 0xf2, 0x38, 0xcb,
+       0x94, 0xc4, 0xcc, 0x9f, 0x33, 0x55, 0x29, 0xec,
+       0xd9, 0x7f, 0xec, 0x62, 0xcf, 0x07, 0xcb, 0x8d,
+       0x2a, 0x06, 0x16, 0x1f, 0x60, 0xcb, 0xbe, 0xb1,
+       0x07, 0x79, 0x72, 0x8c, 0x16, 0x37, 0x06, 0xd5,
+       0xee, 0x3b, 0x7d, 0xfd, 0x70, 0xe1, 0x2d, 0x87,
+       0xb3, 0x56, 0xb2, 0x00, 0x55, 0x95, 0x27, 0xb6,
+       0x79, 0x7b, 0xb6, 0xb0, 0xad, 0x38, 0xa3, 0xbc,
+       0x31, 0x8e, 0x2c, 0x6e, 0xf2, 0x4e, 0xf2, 0x05,
+       0x2f, 0xd4, 0xa6, 0x83, 0xfd, 0xe4, 0x6b, 0xe1,
+       0xc8, 0x54, 0xdf, 0xca, 0x6d, 0x4c, 0x96, 0x48,
+       0xf1, 0x02, 0xa0, 0xce, 0x82, 0xd0, 0x1b, 0x09,
+       0x97, 0x3c, 0x75, 0x98, 0xe3, 0xef, 0xbb, 0xd8,
+       0xcf, 0x53, 0xa9, 0x70, 0xe8, 0x55, 0xd4, 0xd8,
+       0x0b, 0xe8, 0x59, 0xfd, 0x0c, 0xcd, 0xf4, 0xcc,
+       0x35, 0xb2, 0xd1, 0xad, 0x8f, 0x29, 0x98, 0xb2,
+       0x5d, 0x4c, 0x59, 0x08, 0x8d, 0x67, 0x7b, 0x08,
+       0x9d, 0x3b, 0x70, 0xe9, 0x41, 0x40, 0x7b, 0x34,
+       0x0e, 0xb3, 0x9c, 0x4e, 0xc9, 0xb3, 0x24, 0xee,
+       0x54, 0x9b, 0x20, 0x98, 0xee, 0x62, 0x12, 0x78,
+       0x05, 0x23, 0xb7, 0x24, 0x7b, 0x4a, 0x51, 0xf8,
+       0xb5, 0xc2, 0x23, 0xe1, 0xbb, 0x07, 0x88, 0xb3,
+       0x47, 0x3e, 0x80, 0xad, 0x79, 0xc2, 0x95, 0xb9,
+       0x91, 0x93, 0x34, 0x29, 0x48, 0xc1, 0x05, 0xd1,
+       0xd8, 0xab, 0xeb, 0xd8, 0x79, 0x20, 0x1e, 0x67,
+       0x30, 0x21, 0xfe, 0x58, 0xa3, 0x9a, 0x92, 0x67,
+       0x89, 0x7d, 0x7a, 0xbe, 0x5d, 0x6c, 0xf1, 0x7e,
+       0x84, 0xd0, 0xa8, 0xe4, 0x52, 0x32, 0xe7, 0xe0,
+       0x4c, 0xc0, 0x9d, 0x56, 0x3e, 0x69, 0x07, 0x20,
+       0x3d, 0x44, 0x23, 0x59, 0x4d, 0x9f, 0xa9, 0x07,
+       0x65, 0x91, 0x47, 0x17, 0x80, 0x82, 0xcc, 0x2d,
+       0x6c, 0x4c, 0x0d, 0xed, 0x47, 0x7d, 0x3b, 0x4c,
+       0x48, 0xe3, 0x9b, 0x77, 0x41, 0xb9, 0xa7, 0x9e,
+       0x27, 0xd2, 0xbc, 0x97, 0x3d, 0xad, 0x41, 0x65,
+       0xc1, 0x45, 0xb1, 0xa8, 0xfd, 0xd3, 0x5d, 0xb0,
+       0xae, 0x94, 0xd5, 0x9b, 0xae, 0x67, 0x00, 0x0b,
+       0x97, 0x22, 0x41, 0x94, 0xa1, 0x39, 0x1b, 0xa7,
+       0x37, 0xa1, 0xea, 0x45, 0xfd, 0x00, 0x8b, 0x1b,
+       0xff, 0xda, 0xdf, 0x60, 0xc1, 0x91, 0xbe, 0x74,
+       0x1f, 0x9d, 0x78, 0x31, 0x16, 0xbb, 0xb0, 0xc3,
+       0x6c, 0xf4, 0x8a, 0x71, 0xd6, 0x1a, 0xa6, 0xa1,
+       0xe5, 0xcc, 0xa4, 0x1c, 0x9c, 0x25, 0x51, 0x87,
+       0x60, 0xc2, 0x49, 0xca, 0x1f, 0xed, 0x03, 0xce,
+       0xa2, 0x8c, 0x28, 0xac, 0x30, 0x4b, 0xb4, 0x53,
+       0x6c, 0x1b, 0x9d, 0x07, 0x64, 0x34, 0x76, 0x51,
+       0x25, 0x72, 0xa1, 0x78, 0xce, 0xa0, 0xd4, 0x34,
+       0x27, 0xd7, 0x63, 0x9c, 0xc1, 0x93, 0xbd, 0x71,
+       0x9c, 0x25, 0x75, 0x01, 0xe6, 0x26, 0x68, 0x66,
+       0xc7, 0x68, 0x5a, 0x88, 0xb3, 0xb8, 0x62, 0x23,
+       0x9b, 0x42, 0x6d, 0xba, 0x32, 0x09, 0x06, 0x70,
+       0x26, 0x5c, 0x82, 0x21, 0xfc, 0x80, 0xf2, 0x38,
+       0x5b, 0xca, 0x91, 0x67, 0x57, 0x27, 0x58, 0xa8,
+       0xb7, 0x0f, 0x85, 0xc3, 0x19, 0x98, 0x54, 0x9e,
+       0x40, 0xfb, 0xa9, 0x3f, 0x20, 0x4d, 0x99, 0x54,
+       0xc9, 0xbd, 0xff, 0xf3, 0x13, 0x7a, 0x76, 0x69,
+       0x1b, 0x12, 0xec, 0xd4, 0x2f, 0x85, 0xc7, 0x19,
+       0x4f, 0x29, 0xed, 0x1e, 0xa5, 0xa3, 0x85, 0xdc,
+       0xe0, 0xce, 0x4f, 0xb1, 0xde, 0x5c, 0x1d, 0x22,
+       0x06, 0x5e, 0xea, 0x08, 0x67, 0x34, 0xc1, 0x19,
+       0xe8, 0x4d, 0x3a, 0x3a, 0x97, 0xb5, 0x6e, 0xb1,
+       0xde, 0x1c, 0xec, 0xf2, 0x0c, 0xce, 0x46, 0xe5,
+       0x19, 0x1b, 0x93, 0x61, 0x13, 0xe6, 0x6c, 0x07,
+       0x88, 0x5b, 0x13, 0x9c, 0xa1, 0x37, 0x14, 0x85,
+       0xfb, 0x01, 0x67, 0x7c, 0xb4, 0x67, 0x66, 0x82,
+       0xe5, 0x02, 0xc6, 0x9e, 0xd5, 0x9b, 0x03, 0x06,
+       0x38, 0x9b, 0x43, 0x86, 0x4c, 0xd2, 0x73, 0xdd,
+       0x69, 0xa7, 0x70, 0x96, 0x34, 0x70, 0x79, 0x02,
+       0xce, 0x9a, 0xce, 0xdf, 0x7c, 0xac, 0x52, 0x40,
+       0x1b, 0xa8, 0x31, 0x79, 0x96, 0xf6, 0x3c, 0x8b,
+       0x35, 0xba, 0x8f, 0xd5, 0x3d, 0x87, 0xac, 0x8a,
+       0xbb, 0xd2, 0xd9, 0x67, 0xbe, 0x8d, 0x12, 0x5f,
+       0xca, 0xd9, 0x87, 0x67, 0x45, 0xb1, 0x3c, 0x5b,
+       0xdd, 0x45, 0xfb, 0xec, 0xdf, 0x01, 0x67, 0x91,
+       0xef, 0x35, 0x70, 0x96, 0xe6, 0x27, 0xb9, 0x87,
+       0xbb, 0x97, 0x27, 0xf4, 0xec, 0x7b, 0xb0, 0x9d,
+       0xa8, 0xa6, 0x0b, 0x58, 0x3b, 0xf7, 0x22, 0xae,
+       0xd5, 0xc0, 0x75, 0xe7, 0xa2, 0xbb, 0x50, 0x38,
+       0xe2, 0x46, 0x1b, 0x72, 0xa1, 0xb0, 0xb1, 0x27,
+       0x20, 0xcf, 0xa0, 0x78, 0x1e, 0x83, 0x38, 0xd9,
+       0xe9, 0xaf, 0x61, 0xa6, 0xef, 0xb8, 0x7e, 0x9c,
+       0xfa, 0xef, 0x3c, 0x9b, 0x73, 0x12, 0xce, 0x5e,
+       0x0e, 0x49, 0x6c, 0x0f, 0xa8, 0xac, 0xaa, 0xc4,
+       0x37, 0xe3, 0xe1, 0x53, 0x51, 0x3c, 0xcc, 0x9f,
+       0x1d, 0x82, 0x3c, 0xd3, 0xc4, 0x67, 0x81, 0x39,
+       0x93, 0xcc, 0xad, 0xe6, 0x0d, 0xc0, 0x19, 0x1d,
+       0x77, 0x83, 0x75, 0xe1, 0x02, 0x3c, 0x47, 0xfb,
+       0x4c, 0x0e, 0x84, 0xc5, 0x99, 0x58, 0x20, 0xaa,
+       0x83, 0xbb, 0x9a, 0x81, 0xa5, 0xd3, 0x9e, 0xe7,
+       0x74, 0x3c, 0x2b, 0xe2, 0xcb, 0x6e, 0xf1, 0x49,
+       0xc0, 0xe0, 0x30, 0x8b, 0xb3, 0x82, 0xf3, 0x0b,
+       0x11, 0x9f, 0xcd, 0x06, 0x13, 0xa4, 0x86, 0x2f,
+       0x14, 0xf2, 0xd2, 0xd3, 0x62, 0x7a, 0xd5, 0xe9,
+       0x4a, 0x00, 0x7f, 0x68, 0x72, 0xcc, 0x83, 0xb3,
+       0x13, 0xf6, 0xa6, 0xd9, 0xc5, 0x14, 0x9f, 0x7f,
+       0x03, 0xd0, 0xda, 0xed, 0xd3, 0xc7, 0x70, 0xfc,
+       0x3a, 0x76, 0xe4, 0x93, 0xbe, 0xcc, 0x91, 0x1a,
+       0x7c, 0xc2, 0xc1, 0xfc, 0xaf, 0x40, 0x09, 0x6b,
+       0xce, 0x17, 0x7d, 0xc6, 0x3a, 0xfa, 0x11, 0xe2,
+       0x26, 0x2e, 0x00, 0xbc, 0x89, 0xea, 0xd4, 0x91,
+       0x44, 0x9e, 0x15, 0x0b, 0xee, 0xbf, 0xda, 0xf3,
+       0x7c, 0x6e, 0x0c, 0x73, 0xe9, 0x07, 0x58, 0xd1,
+       0xd6, 0x8d, 0xe5, 0xd4, 0x23, 0x4a, 0xa2, 0x8a,
+       0x8d, 0x91, 0xa5, 0x40, 0x21, 0x9b, 0xa8, 0x60,
+       0x35, 0x6b, 0x44, 0xa4, 0xca, 0x58, 0x59, 0x1d,
+       0x60, 0x68, 0x62, 0x2d, 0xa7, 0x41, 0x97, 0xe2,
+       0x43, 0x9e, 0x80, 0xb3, 0xf7, 0x11, 0x67, 0xca,
+       0x25, 0x18, 0x52, 0xe7, 0x62, 0x0e, 0xf8, 0x8f,
+       0x04, 0xe2, 0xec, 0x7e, 0x8e, 0x46, 0x27, 0xe4,
+       0x7a, 0xe1, 0x0e, 0x68, 0x1e, 0x42, 0x7e, 0x1a,
+       0x91, 0xdc, 0xe2, 0xac, 0xb9, 0x14, 0x93, 0x97,
+       0xc3, 0x6b, 0x69, 0xb1, 0x93, 0xd3, 0x33, 0x3e,
+       0xe1, 0x48, 0xa1, 0xbf, 0x4b, 0x52, 0xf5, 0xd5,
+       0x0b, 0x5f, 0x69, 0x42, 0x97, 0xe2, 0x61, 0x02,
+       0x59, 0x47, 0xe0, 0xa7, 0x29, 0x94, 0x19, 0x57,
+       0x20, 0x0f, 0x67, 0xd5, 0x89, 0x3a, 0xe0, 0xe9,
+       0xb6, 0x00, 0xa5, 0xcb, 0x9b, 0x9b, 0x0c, 0xe6,
+       0xcc, 0xe3, 0xcc, 0xc9, 0xb3, 0x94, 0x1f, 0x90,
+       0x26, 0xa4, 0xbe, 0x57, 0x7c, 0x3e, 0x04, 0x54,
+       0xec, 0x4c, 0x11, 0x90, 0x67, 0xa1, 0x20, 0xa6,
+       0x9e, 0x28, 0xa0, 0x1b, 0xeb, 0xef, 0xe5, 0x35,
+       0x56, 0x2d, 0x96, 0x67, 0xb7, 0xed, 0x46, 0xbf,
+       0xda, 0xa5, 0x97, 0x23, 0x9c, 0x81, 0xd8, 0xf6,
+       0xb4, 0x73, 0xa7, 0x06, 0x89, 0xde, 0xec, 0xa5,
+       0xfc, 0x80, 0x62, 0x79, 0x46, 0xf6, 0x38, 0xf0,
+       0x41, 0x62, 0x70, 0x27, 0xcc, 0xfa, 0x9b, 0xb5,
+       0x9c, 0x8a, 0x8d, 0x93, 0x71, 0xb6, 0x08, 0x0b,
+       0x00, 0xda, 0x1c, 0x86, 0x19, 0x1f, 0x65, 0x50,
+       0x12, 0xe1, 0x6c, 0xa4, 0x62, 0x23, 0xb7, 0xd6,
+       0x73, 0xb1, 0x3c, 0x7b, 0xfa, 0x7a, 0x73, 0xa9,
+       0x5e, 0xb9, 0x62, 0xe3, 0xf8, 0xc3, 0xad, 0xbd,
+       0xff, 0xff, 0x9e, 0x25, 0x76, 0xe3, 0xa4, 0x87,
+       0x7f, 0x7e, 0x10, 0x19, 0x02, 0x34, 0xbe, 0xe4,
+       0x6a, 0xd2, 0xa1, 0xfb, 0x9c, 0xe6, 0x0a, 0x7b,
+       0x36, 0x38, 0x88, 0x3e, 0x6d, 0xba, 0x63, 0x25,
+       0xb7, 0x91, 0x9b, 0x08, 0x02, 0x93, 0xd3, 0x33,
+       0x48, 0x0e, 0x29, 0x9c, 0xb3, 0xc3, 0xa9, 0x4f,
+       0x7a, 0x8e, 0x7e, 0xfd, 0xe8, 0x30, 0xc5, 0x62,
+       0x26, 0xa8, 0xe2, 0xee, 0xcd, 0xfb, 0xc0, 0xbe,
+       0xbd, 0xa8, 0x8e, 0x39, 0x67, 0x50, 0xca, 0xb0,
+       0x48, 0xfe, 0x88, 0xe3, 0xf6, 0xec, 0xca, 0xe1,
+       0x6b, 0x85, 0x46, 0x6a, 0xaa, 0xe8, 0x34, 0x14,
+       0x35, 0xb2, 0xf8, 0x11, 0x31, 0xcc, 0x4e, 0xfe,
+       0x37, 0x4a, 0xba, 0x7b, 0x72, 0x58, 0xa4, 0x58,
+       0xc5, 0xf1, 0x1b, 0x7b, 0xba, 0x93, 0x7b, 0xe0,
+       0xff, 0x6a, 0xaf, 0xde, 0x61, 0x52, 0x3e, 0x6a,
+       0x5e, 0x46, 0xc9, 0x7a, 0x13, 0x63, 0xf3, 0x74,
+       0x36, 0x6d, 0x47, 0x26, 0x8e, 0x2a, 0x8d, 0xea,
+       0x54, 0xb8, 0xa9, 0xd5, 0xe9, 0xba, 0x2b, 0xf2,
+       0xc8, 0x70, 0x42, 0x8e, 0x42, 0x89, 0x82, 0xc9,
+       0x82, 0xfc, 0x5e, 0x48, 0xbe, 0x76, 0xcd, 0x70,
+       0x32, 0x21, 0x60, 0x47, 0x17, 0x52, 0xda, 0x2e,
+       0xde, 0x30, 0x70, 0x93, 0xe5, 0xd9, 0xd0, 0x31,
+       0x79, 0x40, 0x14, 0x73, 0x0d, 0xef, 0x46, 0xce,
+       0xa4, 0x94, 0x64, 0x6b, 0x26, 0x67, 0x36, 0x19,
+       0x1d, 0x3b, 0xcf, 0x55, 0xc4, 0x95, 0x64, 0xda,
+       0x89, 0x72, 0xe5, 0x24, 0x51, 0x72, 0x74, 0x15,
+       0xc7, 0x0f, 0x0a, 0xa8, 0xaf, 0x72, 0x99, 0x1d,
+       0xe9, 0x0c, 0xec, 0xa2, 0x79, 0xd2, 0xcd, 0xe6,
+       0x86, 0x8a, 0x6f, 0xb4, 0x03, 0xee, 0x0f, 0x7f,
+       0x0b, 0xdb, 0xe9, 0xf5, 0x35, 0x36, 0x56, 0x8f,
+       0x8e, 0x39, 0x19, 0x98, 0x66, 0xc3, 0x8a, 0x1e,
+       0x98, 0x04, 0xe8, 0x2b, 0xc3, 0x74, 0x55, 0xad,
+       0x68, 0x5e, 0x95, 0xcb, 0x94, 0x8d, 0xa8, 0x9e,
+       0x5a, 0xd4, 0x91, 0x80, 0x2d, 0x1e, 0x01, 0xc0,
+       0x67, 0xaf, 0x77, 0xce, 0x5e, 0x6b, 0x72, 0xee,
+       0x14, 0x45, 0x5d, 0xa7, 0x7d, 0x35, 0xf6, 0xc6,
+       0x85, 0x8e, 0xc9, 0x6b, 0x51, 0x4d, 0xd1, 0x98,
+       0xcb, 0xbe, 0xc9, 0xfa, 0x6d, 0x32, 0xdd, 0x28,
+       0xd7, 0x53, 0x08, 0x12, 0xff, 0x0a, 0x0f, 0x93,
+       0x26, 0x54, 0xb6, 0x57, 0x91, 0xbf, 0xef, 0x2c,
+       0x5e, 0x44, 0xc9, 0x11, 0x21, 0xb2, 0xfe, 0x70,
+       0x4c, 0xcb, 0x7e, 0x83, 0xed, 0xb4, 0x5f, 0xa8,
+       0xe4, 0xf8, 0xb1, 0x05, 0x6e, 0x6f, 0x2f, 0x75,
+       0x38, 0x3f, 0x72, 0x48, 0xbc, 0x70, 0xdc, 0xc6,
+       0xee, 0xec, 0x65, 0x66, 0x42, 0xa7, 0x57, 0x81,
+       0x1d, 0x57, 0x5b, 0x7d, 0x31, 0x69, 0x07, 0x44,
+       0x36, 0xe8, 0xb4, 0xb5, 0x24, 0x9f, 0xe5, 0x52,
+       0x96, 0xc9, 0x9c, 0xd5, 0x90, 0x47, 0xdb, 0x34,
+       0x5f, 0xfd, 0xb6, 0xe5, 0xd9, 0x2b, 0x97, 0x87,
+       0xf6, 0x71, 0x74, 0x96, 0x91, 0x41, 0x94, 0xe4,
+       0x19, 0x6d, 0xf2, 0x08, 0x45, 0x17, 0x2f, 0x40,
+       0x7c, 0x4b, 0x9a, 0x1e, 0x85, 0xdc, 0x49, 0xdd,
+       0x8e, 0x33, 0x49, 0x54, 0x72, 0xf1, 0x35, 0xd3,
+       0x4b, 0x33, 0xe2, 0xbb, 0x4e, 0xc2, 0x4a, 0x77,
+       0x6f, 0x04, 0xf9, 0x6c, 0x0c, 0x19, 0xd3, 0x1b,
+       0x20, 0xdb, 0x07, 0xaf, 0xc3, 0xfc, 0x89, 0xe4,
+       0xd9, 0x71, 0x6b, 0x7d, 0x4f, 0x92, 0x98, 0x9b,
+       0xbb, 0x98, 0x52, 0xbc, 0x84, 0xd5, 0x07, 0x65,
+       0xaa, 0xa0, 0x60, 0xb2, 0xd1, 0x93, 0x83, 0x2a,
+       0x3b, 0x95, 0xed, 0xd4, 0x4c, 0xa8, 0xb8, 0x7d,
+       0xe1, 0x8e, 0xab, 0x9f, 0x6f, 0x27, 0xe6, 0x07,
+       0x2b, 0xfa, 0x5d, 0x13, 0x37, 0xaa, 0xbd, 0xc5,
+       0x60, 0xf2, 0x2d, 0xfd, 0x1d, 0x62, 0x84, 0x21,
+       0x6f, 0x03, 0x5d, 0x61, 0x49, 0x39, 0x1f, 0x5d,
+       0x3b, 0x93, 0x9d, 0xe9, 0xc8, 0xd9, 0x77, 0x9e,
+       0xfb, 0x29, 0xdb, 0x54, 0x68, 0x6a, 0xea, 0x4b,
+       0x96, 0x14, 0xda, 0x33, 0xae, 0x65, 0xa9, 0x50,
+       0xd3, 0x5a, 0xc3, 0x45, 0x40, 0x62, 0x56, 0xb3,
+       0x0a, 0xd7, 0xb5, 0x05, 0xa4, 0xbf, 0x2f, 0xfb,
+       0x5c, 0x29, 0xa4, 0xd6, 0x1e, 0x35, 0xe9, 0x96,
+       0x09, 0xe7, 0x74, 0xb5, 0x9e, 0x0c, 0x14, 0xd2,
+       0x4a, 0xda, 0x21, 0x54, 0x8f, 0xb2, 0x6f, 0x76,
+       0x5d, 0x96, 0x17, 0xa6, 0xfa, 0xe3, 0x9c, 0x75,
+       0x26, 0x9a, 0x74, 0x66, 0x7c, 0x83, 0x30, 0x43,
+       0x66, 0x34, 0xda, 0x9c, 0x5f, 0xe4, 0xd6, 0xf8,
+       0x63, 0x7e, 0x01, 0x68, 0xce, 0x0a, 0x02, 0x31,
+       0x6b, 0x12, 0x86, 0x8a, 0xa9, 0xf1, 0xe1, 0xcd,
+       0x16, 0x34, 0x26, 0xea, 0x13, 0x57, 0x7e, 0x24,
+       0xd5, 0xb0, 0x5e, 0x7c, 0x7e, 0xb6, 0x37, 0x75,
+       0xa2, 0xea, 0x91, 0xba, 0xc6, 0x04, 0x87, 0x9e,
+       0xd1, 0xd5, 0x2d, 0x79, 0xbf, 0x9c, 0x1e, 0x33,
+       0xf5, 0x1c, 0x54, 0x6a, 0x3c, 0xad, 0x3d, 0xf7,
+       0x35, 0x83, 0x3b, 0xa0, 0x1c, 0x4d, 0xae, 0x2a,
+       0xec, 0x8f, 0x8c, 0x93, 0x80, 0x26, 0x74, 0x6d,
+       0x27, 0x07, 0x7b, 0x47, 0xec, 0xe9, 0xea, 0xa4,
+       0xe3, 0x9b, 0xdf, 0x4d, 0x33, 0xf4, 0xe7, 0xe3,
+       0x22, 0xe8, 0xd5, 0x1d, 0xeb, 0xee, 0xe1, 0xc8,
+       0x2c, 0xd1, 0xd4, 0xbf, 0x60, 0xb2, 0xa3, 0x6a,
+       0x7a, 0x11, 0x91, 0x8f, 0x9e, 0x20, 0xee, 0xbe,
+       0x72, 0x25, 0x33, 0xed, 0x8e, 0x60, 0x64, 0xb4,
+       0xe0, 0xb0, 0xf6, 0x7b, 0x82, 0xf9, 0x84, 0x2f,
+       0x9e, 0x27, 0x80, 0x33, 0x73, 0xb6, 0x7f, 0xdc,
+       0xb1, 0x98, 0x63, 0x49, 0xda, 0x6f, 0xb4, 0x9a,
+       0x4e, 0xbe, 0xae, 0xb7, 0xec, 0x1e, 0x98, 0x87,
+       0x7b, 0x03, 0x73, 0xab, 0x92, 0x55, 0x9d, 0xa7,
+       0x37, 0xe6, 0x22, 0xf7, 0xed, 0xc3, 0x73, 0x8d,
+       0x26, 0x5b, 0x71, 0xe9, 0xa7, 0xd8, 0xcb, 0xb7,
+       0xe0, 0x8f, 0x8d, 0x05, 0xce, 0x41, 0x6c, 0x9b,
+       0x5c, 0x91, 0xc3, 0x30, 0x0e, 0x3c, 0x8a, 0x77,
+       0x63, 0xb2, 0x5b, 0x43, 0xc5, 0x27, 0xc4, 0xd0,
+       0x4c, 0x63, 0x18, 0x1d, 0x80, 0xe2, 0xdd, 0x25,
+       0x9c, 0xe7, 0x01, 0x91, 0x83, 0x12, 0x85, 0x7a,
+       0x26, 0x63, 0x2f, 0x88, 0xb8, 0xf1, 0x2d, 0x78,
+       0x6e, 0x15, 0xda, 0xb9, 0xea, 0xc9, 0x87, 0x08,
+       0x39, 0x0d, 0x45, 0x2e, 0x5c, 0x4a, 0xbf, 0xc6,
+       0x1c, 0xbe, 0x70, 0xc6, 0xfd, 0xee, 0x63, 0xd6,
+       0x9e, 0x74, 0x59, 0x4c, 0xa2, 0xef, 0xdd, 0x8c,
+       0x31, 0x84, 0xc3, 0xfc, 0x96, 0x21, 0xc1, 0x52,
+       0x6f, 0xc7, 0xcc, 0x63, 0xf2, 0xb5, 0x6d, 0x8f,
+       0xb2, 0x2e, 0x7c, 0x79, 0x30, 0x58, 0x97, 0xfc,
+       0x6d, 0x3c, 0xdc, 0x35, 0xa3, 0xc3, 0xc4, 0xab,
+       0x29, 0x7d, 0x3b, 0x8c, 0x7f, 0x40, 0xfc, 0xa5,
+       0x38, 0x4b, 0x34, 0x0d, 0x98, 0xda, 0x01, 0x96,
+       0x32, 0x57, 0x5f, 0xe5, 0xae, 0xc2, 0x4a, 0x0c,
+       0x25, 0xac, 0x94, 0x47, 0x49, 0x55, 0xe4, 0x5c,
+       0xed, 0xb5, 0x0f, 0x97, 0x3a, 0xf6, 0x61, 0x57,
+       0xf4, 0x02, 0x3f, 0x77, 0xd5, 0x1c, 0x18, 0xad,
+       0xa9, 0xfe, 0x01, 0xb6, 0x04, 0xf9, 0x09, 0x2c,
+       0x74, 0x18, 0xad, 0x60, 0x61, 0x24, 0x5f, 0x45,
+       0x37, 0xa7, 0x67, 0xc0, 0x15, 0xc1, 0x0d, 0x52,
+       0xb7, 0x04, 0xe9, 0x4f, 0x02, 0x21, 0xa1, 0xb4,
+       0x04, 0x0e, 0x93, 0xe8, 0xd0, 0x7d, 0xf7, 0xc2,
+       0xa3, 0x45, 0xcd, 0xdf, 0xa0, 0x48, 0xad, 0x49,
+       0x73, 0x10, 0x7b, 0x61, 0xd9, 0xee, 0x31, 0x81,
+       0x7a, 0x20, 0x55, 0x48, 0x04, 0xca, 0x9a, 0xdc,
+       0xde, 0x4d, 0x44, 0xbc, 0xa0, 0xd1, 0x81, 0x1e,
+       0x63, 0x44, 0xcc, 0xa5, 0x1b, 0x8a, 0x82, 0xb7,
+       0x97, 0x2c, 0xce, 0xf8, 0x6c, 0x73, 0xdd, 0xa7,
+       0x39, 0x6f, 0xc9, 0x58, 0x6f, 0x28, 0xce, 0xab,
+       0xbf, 0x38, 0x48, 0xed, 0x0f, 0x39, 0xf5, 0x66,
+       0xe2, 0xb9, 0xe9, 0xc9, 0xab, 0xfb, 0x61, 0xfc,
+       0x76, 0x35, 0x21, 0xed, 0x83, 0x9f, 0x3d, 0x91,
+       0xe7, 0x1d, 0x41, 0x77, 0xbf, 0x4c, 0x70, 0x96,
+       0x88, 0x1a, 0xfb, 0x89, 0xf8, 0x22, 0xb5, 0x37,
+       0x17, 0x23, 0x54, 0xa1, 0xc7, 0x5b, 0x17, 0x45,
+       0x1d, 0xd3, 0xf0, 0x6d, 0xc4, 0x99, 0x11, 0xf1,
+       0x88, 0x60, 0xce, 0xfe, 0x69, 0xdf, 0x94, 0xa3,
+       0xc9, 0x09, 0xeb, 0x11, 0x5b, 0x4c, 0x8b, 0x17,
+       0xe4, 0x4c, 0xc1, 0x6a, 0xea, 0x2f, 0x40, 0xa8,
+       0xb5, 0x46, 0x14, 0xab, 0xa6, 0x6a, 0xe6, 0x67,
+       0x7b, 0x49, 0x2e, 0x57, 0xc3, 0xc7, 0x72, 0x02,
+       0x7d, 0x0a, 0x68, 0x2b, 0xab, 0x79, 0x5d, 0x03,
+       0x9c, 0x19, 0x80, 0x12, 0xce, 0xba, 0xe3, 0x8c,
+       0x1b, 0xb8, 0xf4, 0xd0, 0x1a, 0xb1, 0x3b, 0x20,
+       0x55, 0x55, 0xae, 0xe6, 0x43, 0xd7, 0x58, 0x9f,
+       0x49, 0x14, 0xf4, 0xac, 0xf2, 0x99, 0x33, 0x95,
+       0x52, 0x38, 0xa3, 0xee, 0x93, 0xff, 0xda, 0x4f,
+       0x35, 0x36, 0xb3, 0xe1, 0xfe, 0xb1, 0xdc, 0x14,
+       0x24, 0x64, 0x9c, 0xe6, 0xcf, 0x59, 0x45, 0x03,
+       0xe1, 0x81, 0xc3, 0x99, 0x4b, 0xd2, 0x2a, 0x79,
+       0xa5, 0x6b, 0x6d, 0x5a, 0x77, 0xb3, 0x93, 0x5d,
+       0x23, 0x3f, 0x20, 0xdf, 0xb5, 0xeb, 0x54, 0x39,
+       0xf3, 0x90, 0x83, 0x55, 0xb4, 0x9c, 0x27, 0xcf,
+       0x90, 0x43, 0x42, 0x36, 0xdf, 0x2a, 0x5b, 0x9c,
+       0x29, 0xa0, 0x98, 0x93, 0x8c, 0x98, 0xb0, 0x8e,
+       0x38, 0xbb, 0x4c, 0x5f, 0xa4, 0x6e, 0xc8, 0x84,
+       0x5e, 0xa4, 0x19, 0x4d, 0x22, 0xa2, 0x6a, 0x99,
+       0xd7, 0x35, 0xee, 0x4b, 0x07, 0x89, 0x48, 0x06,
+       0x3a, 0x93, 0x2f, 0x50, 0x77, 0xac, 0x3c, 0x0b,
+       0xa2, 0xeb, 0xab, 0x0a, 0x36, 0xae, 0x39, 0xd1,
+       0x86, 0xf4, 0x02, 0x06, 0x38, 0x53, 0x39, 0x38,
+       0x83, 0xcb, 0xed, 0x0d, 0xc0, 0x19, 0x14, 0xcf,
+       0x83, 0xc1, 0x72, 0xa0, 0x61, 0x23, 0x50, 0x28,
+       0x4d, 0xef, 0x46, 0xe0, 0xa2, 0x3a, 0xa4, 0x37,
+       0xb8, 0x95, 0x3a, 0xda, 0xa8, 0x0f, 0xec, 0xbe,
+       0x84, 0x52, 0x93, 0xb1, 0xff, 0x1a, 0xf5, 0xb0,
+       0xeb, 0x70, 0xb6, 0x0a, 0xf2, 0x0c, 0xa6, 0x94,
+       0xcd, 0x5a, 0xd5, 0xa5, 0xff, 0x06, 0x7b, 0x17,
+       0xa8, 0x4f, 0x87, 0x1d, 0xba, 0xa5, 0x11, 0x5a,
+       0x62, 0x8d, 0x5c, 0xb4, 0x33, 0xa0, 0x07, 0x9a,
+       0x41, 0xbd, 0x39, 0x5e, 0x81, 0x32, 0xa1, 0x39,
+       0xab, 0x79, 0xaf, 0x0f, 0x34, 0x71, 0x2d, 0xb2,
+       0x61, 0xff, 0xbd, 0x7c, 0x81, 0x91, 0x46, 0xf5,
+       0x87, 0x4e, 0x6a, 0xcc, 0xbf, 0xd8, 0x7e, 0x4e,
+       0x91, 0x49, 0x09, 0xe5, 0xd9, 0x69, 0x97, 0xf2,
+       0xa5, 0xcf, 0x3d, 0x26, 0x0d, 0x5d, 0x15, 0xf1,
+       0x76, 0x49, 0xcc, 0x77, 0x8a, 0x65, 0xfe, 0xce,
+       0xb9, 0xa2, 0xe7, 0xc0, 0x5b, 0x60, 0xc5, 0xb6,
+       0x41, 0x78, 0xd2, 0xab, 0x04, 0x44, 0x50, 0x84,
+       0x96, 0x35, 0x59, 0x03, 0x5b, 0xbf, 0xd2, 0xd6,
+       0x0d, 0x6f, 0xb4, 0x05, 0x22, 0x5f, 0x9e, 0x35,
+       0xb0, 0xa2, 0x23, 0xd0, 0x11, 0x5a, 0xc9, 0xe8,
+       0xca, 0x9d, 0x01, 0x0b, 0xd8, 0xff, 0x00, 0x91,
+       0x0e, 0xa6, 0x9f, 0xcc, 0xd3, 0x10, 0xaa, 0x75,
+       0x91, 0x72, 0x45, 0xb3, 0x55, 0xf2, 0xc6, 0xdc,
+       0x4a, 0x47, 0x90, 0xb1, 0x2a, 0x4a, 0x30, 0x67,
+       0x95, 0x26, 0x50, 0xeb, 0x29, 0x0e, 0x77, 0xc8,
+       0xc9, 0xef, 0x83, 0x0e, 0x38, 0x89, 0x73, 0xd6,
+       0x28, 0x87, 0x7b, 0x44, 0x9e, 0x87, 0x5b, 0x47,
+       0x33, 0xcb, 0x25, 0x31, 0x8f, 0x9b, 0x97, 0xcf,
+       0xea, 0x0f, 0xc4, 0x1b, 0x55, 0x9e, 0x76, 0xe1,
+       0xa2, 0x0c, 0xc2, 0x79, 0x39, 0xf7, 0x70, 0x6e,
+       0xb3, 0x39, 0xb3, 0x54, 0xb2, 0x38, 0x53, 0x16,
+       0x67, 0xd6, 0x36, 0x9f, 0x5d, 0x03, 0xc2, 0x58,
+       0x55, 0x3e, 0x3f, 0x7b, 0x63, 0x37, 0xbe, 0x35,
+       0x90, 0x4a, 0xec, 0x6b, 0x8c, 0x4a, 0xec, 0xd8,
+       0xe5, 0x37, 0x8e, 0x01, 0x51, 0x94, 0x3c, 0xce,
+       0x2a, 0xb8, 0xa5, 0xa1, 0x1a, 0x92, 0x09, 0x90,
+       0x33, 0xce, 0xcd, 0x0c, 0x2f, 0x45, 0xf4, 0xfa,
+       0xbf, 0x51, 0xf2, 0xf1, 0xc7, 0x59, 0x79, 0x16,
+       0x0d, 0x77, 0x0d, 0x78, 0x15, 0xb6, 0xc8, 0x39,
+       0x51, 0x6a, 0xa9, 0xd3, 0x2b, 0x5e, 0x4c, 0xf2,
+       0xd2, 0x5d, 0xc0, 0x99, 0x22, 0x5f, 0xed, 0xc3,
+       0xc8, 0xa1, 0x18, 0x10, 0xf4, 0xcc, 0x79, 0x31,
+       0x2d, 0xb2, 0x09, 0xbf, 0x0b, 0x0d, 0x2f, 0x8d,
+       0x34, 0xd6, 0x76, 0x01, 0x96, 0x65, 0x52, 0xb2,
+       0x38, 0xb3, 0xdd, 0x91, 0xe8, 0xf2, 0x94, 0xf0,
+       0xec, 0x3f, 0x10, 0x7f, 0xb1, 0x63, 0xaa, 0x01,
+       0x64, 0x34, 0x6d, 0xf2, 0xd2, 0x9a, 0x70, 0xb7,
+       0xb0, 0x1f, 0x5b, 0x50, 0x2a, 0x36, 0x5f, 0xc9,
+       0x29, 0xf2, 0xb1, 0x42, 0x17, 0x89, 0xfa, 0xcc,
+       0xba, 0x53, 0xbd, 0x16, 0xb9, 0x68, 0xde, 0x33,
+       0xea, 0xba, 0xc5, 0x19, 0xbd, 0xd6, 0x72, 0x7a,
+       0xf3, 0xe6, 0xf6, 0xf3, 0xf6, 0x55, 0xc8, 0x0d,
+       0x3b, 0x37, 0x28, 0x5d, 0x21, 0x5e, 0x6f, 0xea,
+       0x53, 0x8f, 0x4b, 0x8d, 0x8c, 0xde, 0x8c, 0xb3,
+       0x06, 0xa8, 0x32, 0xa5, 0xbe, 0x35, 0x1f, 0x60,
+       0x24, 0x5f, 0xd3, 0xb3, 0x00, 0xb1, 0x53, 0x4f,
+       0x41, 0x89, 0x6a, 0x7a, 0x56, 0x05, 0xc8, 0xe5,
+       0xc5, 0x71, 0xce, 0xd7, 0xdc, 0x17, 0x2a, 0x8f,
+       0xb0, 0xa0, 0x60, 0xa6, 0xd4, 0x7d, 0xd4, 0xd8,
+       0x32, 0x72, 0x79, 0x81, 0xd3, 0x80, 0x95, 0x43,
+       0x03, 0xe9, 0x16, 0x00, 0x7b, 0xa6, 0x44, 0xdb,
+       0x0a, 0xc7, 0x60, 0xd6, 0x7e, 0xb8, 0x2a, 0x44,
+       0xb8, 0x50, 0xa3, 0xb8, 0x17, 0x16, 0x7f, 0x2c,
+       0xde, 0x46, 0x2e, 0xb4, 0x40, 0x8d, 0xac, 0x26,
+       0x94, 0xf2, 0xba, 0xb0, 0x0e, 0xa9, 0x08, 0x8a,
+       0x6f, 0xf4, 0x6c, 0x37, 0xae, 0x09, 0x72, 0x43,
+       0x9c, 0x84, 0x2d, 0x4c, 0x25, 0xfd, 0x62, 0x47,
+       0xc9, 0x32, 0xac, 0xb7, 0x15, 0x61, 0x78, 0x53,
+       0x9a, 0x1b, 0xce, 0xd8, 0xac, 0x66, 0xf6, 0x8d,
+       0x4a, 0x88, 0x44, 0xa2, 0x05, 0x38, 0x2f, 0xb9,
+       0x95, 0x76, 0x76, 0xb4, 0xa5, 0x26, 0x14, 0x42,
+       0xdc, 0xea, 0xad, 0x50, 0xf2, 0xb0, 0x05, 0xb5,
+       0x6b, 0xb9, 0xed, 0xbd, 0x3f, 0x5a, 0x65, 0x99,
+       0x89, 0x36, 0x51, 0x2b, 0x74, 0x14, 0xb4, 0xd5,
+       0xc8, 0xd5, 0xfe, 0x18, 0xc4, 0x76, 0xdb, 0xe3,
+       0xcc, 0x0b, 0x2f, 0xb2, 0x0a, 0xf1, 0x00, 0xe9,
+       0x2e, 0x35, 0xaf, 0xf9, 0x41, 0x05, 0x30, 0x47,
+       0x77, 0xe4, 0x09, 0x2b, 0x24, 0x0d, 0xcf, 0x4e,
+       0x5a, 0x48, 0x2f, 0xc2, 0xbf, 0xcf, 0x74, 0x4b,
+       0xab, 0x70, 0xf7, 0xc7, 0x91, 0x79, 0x00, 0xbd,
+       0x20, 0x36, 0xb0, 0xb8, 0xc7, 0xbb, 0x97, 0x69,
+       0xdf, 0xf5, 0x02, 0xa9, 0xe2, 0x66, 0x25, 0x70,
+       0x8c, 0xb4, 0x04, 0x17, 0x24, 0xd9, 0x16, 0x9f,
+       0xfa, 0x3e, 0x7e, 0xe2, 0xdc, 0xb2, 0x0f, 0xb4,
+       0xc5, 0x19, 0x6c, 0x92, 0x99, 0x8a, 0xb5, 0xd4,
+       0x5b, 0xa5, 0x79, 0x17, 0x91, 0x58, 0x3d, 0xe0,
+       0x3c, 0x10, 0x67, 0xf0, 0x16, 0xc5, 0x1a, 0x96,
+       0xba, 0x25, 0x7a, 0x60, 0x24, 0xdc, 0x0a, 0xaf,
+       0x98, 0x07, 0xc1, 0xb8, 0x15, 0xb4, 0x08, 0x8b,
+       0x81, 0x38, 0x43, 0x71, 0x7d, 0x01, 0x78, 0x5a,
+       0x7e, 0xd8, 0x82, 0x6a, 0xaa, 0x81, 0xee, 0x0e,
+       0x9f, 0x93, 0x77, 0xd1, 0xaa, 0x7a, 0x0a, 0xf5,
+       0xf0, 0x20, 0xb5, 0xb0, 0xf4, 0xbf, 0x10, 0xa8,
+       0xfe, 0x6b, 0x52, 0x7d, 0x91, 0xc3, 0xb1, 0x04,
+       0x38, 0xe3, 0x10, 0xc8, 0x6a, 0x61, 0xf9, 0xc6,
+       0x9e, 0x7d, 0x73, 0xca, 0xfe, 0x3e, 0xd6, 0xac,
+       0xb2, 0xce, 0x2b, 0x14, 0xfa, 0xc5, 0x7a, 0x78,
+       0x26, 0x74, 0x13, 0xe6, 0x70, 0xb6, 0x46, 0x44,
+       0x67, 0x29, 0x8e, 0x56, 0x0f, 0x52, 0x3d, 0xab,
+       0x30, 0x87, 0x33, 0x02, 0x2c, 0xad, 0xc4, 0xe3,
+       0x0c, 0x09, 0x4a, 0x04, 0x54, 0x38, 0x03, 0x96,
+       0x2d, 0xa3, 0x58, 0x28, 0x3b, 0x50, 0x49, 0xd5,
+       0xf6, 0xb1, 0x29, 0x4a, 0xe1, 0x3a, 0x37, 0xe5,
+       0xf8, 0xac, 0xd6, 0xc4, 0xca, 0x49, 0xc2, 0x02,
+       0x5a, 0x9c, 0x81, 0x19, 0x2c, 0x10, 0xa1, 0x5d,
+       0x65, 0x77, 0xdd, 0x3d, 0xd8, 0xe2, 0xc6, 0xca,
+       0x33, 0x3c, 0x5a, 0x61, 0x31, 0x19, 0xc8, 0x99,
+       0x59, 0xc5, 0x1c, 0xce, 0xac, 0x12, 0x1d, 0x69,
+       0x4c, 0x49, 0x0e, 0x77, 0xe0, 0xd8, 0x12, 0xb9,
+       0x4d, 0xe7, 0xfb, 0x94, 0x43, 0x72, 0xd9, 0x6c,
+       0xfd, 0x6d, 0x41, 0xab, 0x8c, 0x74, 0x40, 0x09,
+       0x9b, 0x29, 0xbc, 0x70, 0x93, 0xd5, 0x9b, 0x70,
+       0xf3, 0x2c, 0x0a, 0x17, 0xa0, 0xd8, 0x46, 0x19,
+       0x6e, 0xdd, 0x9d, 0x30, 0x1d, 0xf0, 0x41, 0xbd,
+       0xe9, 0xa9, 0xa6, 0xec, 0xdf, 0xb4, 0x37, 0x72,
+       0x8d, 0xd4, 0xe2, 0xcc, 0x9c, 0x60, 0x80, 0xb3,
+       0x30, 0x89, 0x76, 0x59, 0xd0, 0x01, 0xda, 0x17,
+       0xe5, 0xdd, 0x5d, 0x91, 0x34, 0xd5, 0xc6, 0xf9,
+       0xd6, 0x54, 0xbc, 0x09, 0xbb, 0x1e, 0x2a, 0x02,
+       0x44, 0xa9, 0xa6, 0x9a, 0x27, 0x73, 0x46, 0x10,
+       0x67, 0xa1, 0x34, 0xcc, 0x1d, 0x87, 0xaf, 0xea,
+       0x92, 0x22, 0x37, 0x24, 0x99, 0xa3, 0xdf, 0x19,
+       0x42, 0x1d, 0x59, 0x40, 0x0b, 0x55, 0x6b, 0x1c,
+       0xbf, 0x63, 0xa7, 0x0a, 0x10, 0x4d, 0x2b, 0x76,
+       0x6a, 0xd7, 0x73, 0x70, 0x66, 0x15, 0xd2, 0x1c,
+       0x21, 0xb7, 0xb4, 0xee, 0xd6, 0xf1, 0x8c, 0xa3,
+       0x31, 0xdf, 0x6d, 0xd9, 0xdd, 0x0e, 0xab, 0x69,
+       0xed, 0xb3, 0xab, 0x7d, 0xdb, 0x73, 0xc0, 0x19,
+       0xe6, 0x77, 0x9b, 0x13, 0x97, 0xcd, 0xb9, 0xc7,
+       0xf4, 0x4d, 0x59, 0xbd, 0x4d, 0x6a, 0xd1, 0x6a,
+       0x2a, 0xdf, 0xc3, 0xba, 0xc5, 0x19, 0x1c, 0x50,
+       0x0c, 0x00, 0x94, 0xa1, 0xab, 0x50, 0x1b, 0xe3,
+       0x4c, 0xa8, 0xbd, 0x8e, 0xaf, 0xe7, 0x23, 0x4b,
+       0x91, 0x3c, 0x83, 0x06, 0xec, 0x9c, 0xc2, 0x7e,
+       0x88, 0x0e, 0x6a, 0x96, 0xd3, 0x3d, 0xc3, 0x43,
+       0x90, 0x5b, 0xff, 0xd7, 0xda, 0xf5, 0xbb, 0xb6,
+       0x7d, 0x44, 0xf1, 0xbb, 0xf3, 0x49, 0x3e, 0xa9,
+       0x22, 0x9c, 0x15, 0xe1, 0xca, 0x21, 0x94, 0x73,
+       0xdc, 0x14, 0x19, 0x32, 0x28, 0x2d, 0x14, 0x17,
+       0x3a, 0x9c, 0x8d, 0x6b, 0x94, 0x12, 0x8a, 0x92,
+       0x29, 0x74, 0xd2, 0x90, 0x16, 0xd3, 0xc9, 0x7f,
+       0xc2, 0x39, 0x75, 0x41, 0xa4, 0x25, 0x28, 0x10,
+       0x4a, 0x46, 0x91, 0x66, 0xec, 0xe0, 0xd1, 0xa3,
+       0x52, 0x32, 0x64, 0x2a, 0x1e, 0x43, 0xe8, 0x60,
+       0x32, 0x75, 0xe8, 0xd8, 0x41, 0xb6, 0xe4, 0xa8,
+       0xef, 0xdd, 0x7d, 0xef, 0xfb, 0x43, 0xdf, 0xaf,
+       0x64, 0xd9, 0x8d, 0x96, 0x44, 0x96, 0x74, 0xdf,
+       0xbb, 0x77, 0xef, 0xde, 0xef, 0xfb, 0x3c, 0xec,
+       0x49, 0xef, 0xb7, 0xac, 0x69, 0xeb, 0x59, 0xc5,
+       0xea, 0x31, 0x6a, 0x68, 0x29, 0x6c, 0xdc, 0x6a,
+       0xf9, 0xb6, 0xad, 0xbb, 0xd6, 0xd2, 0x80, 0xf6,
+       0x61, 0x9c, 0xb7, 0x43, 0x9a, 0xfd, 0xc2, 0x22,
+       0x9a, 0x2d, 0x72, 0xe0, 0x33, 0xd1, 0x2a, 0x0b,
+       0x73, 0xa7, 0x6b, 0x45, 0xb9, 0xed, 0xfa, 0x86,
+       0xd5, 0xc6, 0x6a, 0x68, 0xf9, 0x4c, 0x32, 0xa6,
+       0x9f, 0x35, 0x24, 0x5d, 0x96, 0x30, 0xf4, 0x21,
+       0xd9, 0xd0, 0x45, 0x7e, 0x8d, 0x9a, 0x5b, 0x7c,
+       0x1c, 0x99, 0x6a, 0x05, 0xf8, 0x0c, 0x0e, 0x32,
+       0x5b, 0x77, 0x31, 0xa5, 0xe7, 0x08, 0x7d, 0x51,
+       0x06, 0x25, 0x8a, 0x98, 0x94, 0x1c, 0x93, 0x0b,
+       0xc6, 0xf7, 0x1d, 0xf2, 0xee, 0x46, 0xcf, 0xe3,
+       0x71, 0xd3, 0x54, 0xcd, 0x5e, 0x39, 0x0c, 0x1d,
+       0x46, 0x16, 0x3f, 0x36, 0xbf, 0x73, 0xf2, 0xec,
+       0x69, 0xdf, 0x7a, 0x4c, 0xfb, 0xa0, 0xb6, 0x58,
+       0x35, 0x42, 0xcf, 0xe6, 0xb0, 0xed, 0xb6, 0x9c,
+       0x93, 0x85, 0x06, 0x4b, 0xc4, 0x67, 0x14, 0xf8,
+       0x0c, 0x4b, 0x75, 0x50, 0x53, 0xdb, 0x70, 0x11,
+       0xf0, 0x59, 0x89, 0xd8, 0x8b, 0x8d, 0x48, 0x2e,
+       0x55, 0x25, 0xba, 0xa1, 0x8a, 0x20, 0x0b, 0xc1,
+       0x05, 0x50, 0x2f, 0x71, 0xdd, 0x05, 0x22, 0xba,
+       0x14, 0xff, 0x89, 0xec, 0xb2, 0x80, 0x66, 0x1a,
+       0xf9, 0x8c, 0xb4, 0xb8, 0x77, 0x8c, 0xab, 0x05,
+       0x8b, 0xb0, 0x0c, 0xab, 0x79, 0x33, 0xc0, 0x3e,
+       0xb3, 0x6a, 0x7d, 0x53, 0x73, 0x09, 0x47, 0x12,
+       0x19, 0x27, 0xff, 0x42, 0x74, 0x44, 0xab, 0x05,
+       0x7c, 0xd6, 0x8c, 0xe4, 0x76, 0x30, 0xc3, 0x5b,
+       0xb4, 0xe6, 0xc2, 0x90, 0x3f, 0x83, 0x21, 0x8b,
+       0xa5, 0xd8, 0x5b, 0x08, 0x3b, 0xdf, 0x76, 0xce,
+       0x67, 0x61, 0x1f, 0xec, 0x33, 0x07, 0x59, 0xd6,
+       0xdb, 0x5d, 0x93, 0x73, 0x6f, 0x8d, 0xbd, 0xed,
+       0x81, 0x6d, 0xdc, 0x15, 0xf2, 0x99, 0xaf, 0x88,
+       0xdb, 0x8b, 0xe9, 0xcd, 0x79, 0x8e, 0x6e, 0xb7,
+       0x85, 0x57, 0xbd, 0xda, 0x81, 0x37, 0x97, 0x0e,
+       0x51, 0x89, 0xa2, 0x31, 0xd7, 0x00, 0xbd, 0x49,
+       0x44, 0x7e, 0xd3, 0x54, 0x71, 0x2b, 0x9d, 0x0a,
+       0xf9, 0x43, 0xdb, 0xd6, 0x82, 0xa0, 0x55, 0x94,
+       0x67, 0x56, 0x7f, 0x27, 0xa0, 0xe1, 0xf9, 0x6c,
+       0xce, 0x09, 0xbf, 0xc0, 0x8d, 0x71, 0x33, 0x23,
+       0x5f, 0x8c, 0x0c, 0x28, 0x3c, 0xd5, 0xe3, 0x30,
+       0xb8, 0xe2, 0x0d, 0x86, 0x53, 0xe9, 0x09, 0x23,
+       0x2e, 0xb7, 0x6c, 0x48, 0x32, 0xed, 0x6f, 0x4a,
+       0x02, 0x16, 0x81, 0xa0, 0xb6, 0xc5, 0x6f, 0xb3,
+       0x8e, 0x57, 0x3f, 0x74, 0xd0, 0x36, 0xa3, 0x4e,
+       0x0e, 0xfa, 0x96, 0xcf, 0x04, 0x79, 0x88, 0x1a,
+       0x7c, 0x15, 0xf5, 0x94, 0xec, 0xa8, 0x2b, 0xe4,
+       0x72, 0x81, 0xe4, 0xd4, 0x02, 0x2d, 0x8e, 0xa9,
+       0xba, 0xd5, 0x85, 0x90, 0xcf, 0xd8, 0x6a, 0x9d,
+       0x3c, 0xef, 0x6d, 0x71, 0x94, 0xd0, 0x82, 0x6a,
+       0x54, 0x28, 0xe8, 0x07, 0x58, 0x33, 0x54, 0x06,
+       0xdd, 0x97, 0xad, 0x89, 0x57, 0x0d, 0x63, 0x13,
+       0x63, 0xaf, 0x07, 0x51, 0x88, 0xda, 0xf1, 0x51,
+       0x3e, 0x2e, 0x09, 0xd7, 0x06, 0xd8, 0x06, 0x1a,
+       0x7e, 0x2f, 0x50, 0xcc, 0x8b, 0xfb, 0x78, 0xd0,
+       0x9f, 0xa9, 0x8f, 0x7a, 0x3f, 0x56, 0xc9, 0x7c,
+       0xac, 0x03, 0xad, 0x17, 0x9b, 0x3b, 0xc8, 0x67,
+       0x20, 0x8c, 0xf1, 0x41, 0x02, 0x3d, 0x0f, 0x8e,
+       0x9a, 0xdc, 0xc1, 0x75, 0x11, 0x82, 0xe8, 0x9c,
+       0xb6, 0x1f, 0x36, 0x86, 0xb2, 0x6c, 0xff, 0x77,
+       0x50, 0x3c, 0xec, 0x0a, 0x7e, 0x53, 0x74, 0xd3,
+       0xb9, 0xc0, 0xb6, 0x4b, 0xee, 0xde, 0x85, 0xa9,
+       0x2d, 0xe0, 0x15, 0x44, 0xbd, 0x18, 0xa4, 0x4c,
+       0x2c, 0x71, 0x9b, 0x43, 0xf3, 0x18, 0x96, 0x08,
+       0x07, 0x47, 0xad, 0x80, 0x9d, 0xd1, 0x06, 0x7d,
+       0xb3, 0xb5, 0x09, 0x44, 0x6c, 0xb5, 0x4c, 0xde,
+       0x84, 0x10, 0x8b, 0xe1, 0x60, 0xb8, 0x9b, 0xb0,
+       0xc3, 0x15, 0x44, 0xad, 0x56, 0x08, 0x39, 0x0b,
+       0x4a, 0xf8, 0x9e, 0x5a, 0x01, 0xbd, 0x89, 0xe2,
+       0xf5, 0xe0, 0xf8, 0xc8, 0x41, 0x64, 0xe7, 0xcd,
+       0xdc, 0x92, 0x9c, 0xb7, 0x41, 0x8e, 0x1d, 0x95,
+       0x7f, 0x09, 0x7c, 0xf4, 0xc1, 0x36, 0xb6, 0x3d,
+       0x0e, 0xb2, 0x70, 0xe1, 0x60, 0x0a, 0x97, 0x09,
+       0xf2, 0xac, 0x2a, 0xe7, 0x5b, 0xe6, 0x6a, 0x17,
+       0xde, 0x80, 0x65, 0xb7, 0x4e, 0xc0, 0xf7, 0x29,
+       0x91, 0xae, 0xed, 0x72, 0xc9, 0x9d, 0x4d, 0x8b,
+       0x75, 0x87, 0x30, 0xec, 0x1e, 0xf2, 0x19, 0x93,
+       0x08, 0xcf, 0x35, 0x5e, 0xe5, 0x15, 0xf2, 0x99,
+       0xb1, 0x11, 0x92, 0x9b, 0xca, 0x1a, 0x2e, 0x26,
+       0xd0, 0x9b, 0x7f, 0x8f, 0xb0, 0xd9, 0x27, 0x98,
+       0x17, 0x5a, 0xcf, 0xe9, 0xe5, 0xdb, 0x38, 0xc7,
+       0x45, 0xcc, 0x14, 0xc0, 0x9a, 0x1b, 0x9d, 0x85,
+       0x9b, 0xa9, 0x2a, 0x2f, 0x1a, 0xf0, 0x99, 0xd2,
+       0xf2, 0x36, 0x17, 0x75, 0xba, 0x48, 0xc1, 0x0f,
+       0x10, 0xf6, 0x6c, 0xd6, 0xd7, 0xf5, 0xf9, 0x3a,
+       0x4f, 0x4d, 0x7f, 0xfd, 0x35, 0x48, 0xc3, 0x73,
+       0x79, 0x8d, 0xac, 0xe2, 0xfd, 0xb6, 0xdc, 0xeb,
+       0x5a, 0xf0, 0xe5, 0xec, 0x8e, 0x8d, 0xed, 0xd3,
+       0x74, 0xf8, 0xff, 0x9c, 0x49, 0xd2, 0xc8, 0xc1,
+       0x5d, 0x1b, 0xd6, 0x32, 0x1e, 0xc6, 0x2e, 0x56,
+       0xe5, 0xf5, 0xdb, 0x90, 0xf8, 0x5a, 0x0e, 0x49,
+       0xe3, 0x27, 0x7b, 0x42, 0xc7, 0xc6, 0x7a, 0xe0,
+       0xe0, 0x78, 0xe4, 0x4e, 0x1e, 0x84, 0x1d, 0x2c,
+       0xb0, 0xd7, 0xe3, 0x21, 0x89, 0xdd, 0xb9, 0xbe,
+       0x40, 0x61, 0x50, 0xdc, 0x8b, 0xbf, 0x17, 0x6b,
+       0x2d, 0x71, 0x51, 0xa2, 0x85, 0xaf, 0x17, 0x7d,
+       0x58, 0x6c, 0xc7, 0xae, 0x5c, 0x89, 0xb2, 0x23,
+       0x43, 0x59, 0xb0, 0x0d, 0x55, 0xcc, 0xa6, 0x99,
+       0xcc, 0x3d, 0x33, 0xb2, 0xcd, 0xee, 0xa8, 0xe2,
+       0xe6, 0x6e, 0x4d, 0xe6, 0xf6, 0x6c, 0x7d, 0x18,
+       0xbc, 0xa1, 0xf0, 0x09, 0x79, 0x7d, 0x1c, 0x37,
+       0xd9, 0xed, 0xa4, 0xd9, 0x43, 0x47, 0x0c, 0x9a,
+       0x98, 0x65, 0x14, 0x76, 0x63, 0x22, 0x78, 0x5b,
+       0x61, 0xb2, 0x99, 0x60, 0x9c, 0xfd, 0xc1, 0x78,
+       0x5a, 0x42, 0x4f, 0x4f, 0x20, 0x4c, 0xcb, 0xab,
+       0x34, 0xfb, 0x6e, 0xe8, 0xc4, 0xd5, 0x90, 0xf1,
+       0xc4, 0x52, 0x10, 0x91, 0xa2, 0xb5, 0xb3, 0x86,
+       0x1e, 0xfa, 0x55, 0x8e, 0xfb, 0xf6, 0xd5, 0x20,
+       0x59, 0xea, 0x8f, 0xf8, 0x19, 0x03, 0xe1, 0x52,
+       0x5d, 0xcf, 0x52, 0x19, 0xaf, 0x5d, 0xb0, 0x54,
+       0x2a, 0xce, 0xb0, 0x46, 0x3a, 0xbe, 0xed, 0xb5,
+       0x61, 0x5c, 0xf5, 0xf0, 0x78, 0x9a, 0x6b, 0x12,
+       0x65, 0xe2, 0x57, 0xbe, 0x8d, 0x89, 0xb3, 0xd4,
+       0xf6, 0xb1, 0xcd, 0x6f, 0x5a, 0x93, 0x41, 0xc8,
+       0x44, 0xb9, 0x01, 0x67, 0x59, 0x11, 0xcd, 0x9c,
+       0x21, 0x16, 0x91, 0x21, 0xde, 0x26, 0xc4, 0x31,
+       0xa9, 0x24, 0x8d, 0x41, 0xb4, 0xf7, 0x5a, 0xf2,
+       0x5d, 0xf4, 0xbc, 0x38, 0xa2, 0x6d, 0x4c, 0xc0,
+       0xd6, 0xd0, 0x16, 0x27, 0x39, 0x91, 0x55, 0xb5,
+       0x85, 0x4e, 0xd6, 0xd3, 0x7d, 0x31, 0x54, 0x18,
+       0x85, 0x04, 0x29, 0xbb, 0xbd, 0xbb, 0xf6, 0x03,
+       0xfd, 0x87, 0xe4, 0x48, 0x65, 0xef, 0xd7, 0xc3,
+       0x32, 0x30, 0x31, 0x5e, 0xdb, 0x4b, 0x91, 0xdd,
+       0x14, 0x0c, 0xfd, 0x54, 0x7f, 0x2e, 0xc8, 0xc6,
+       0x32, 0xec, 0xad, 0xb8, 0x0e, 0xe3, 0x30, 0x8b,
+       0x42, 0xfa, 0xa8, 0x26, 0xb0, 0xeb, 0xc8, 0x77,
+       0x5d, 0x8c, 0x4e, 0xcb, 0x6f, 0xee, 0x5f, 0x5f,
+       0xd0, 0xec, 0x3a, 0xe1, 0x97, 0x0c, 0x7d, 0xab,
+       0x8f, 0xc0, 0xc0, 0x5e, 0x61, 0xa9, 0x3b, 0x74,
+       0x46, 0xcb, 0x22, 0xd3, 0x75, 0xc1, 0x69, 0x5b,
+       0x97, 0x8d, 0xa4, 0x35, 0x83, 0xb1, 0xe7, 0x4b,
+       0xc2, 0x29, 0xa8, 0xe7, 0xc7, 0x9e, 0xb7, 0x6d,
+       0x95, 0x57, 0x18, 0x5f, 0xc3, 0x1c, 0x4c, 0xc6,
+       0xbd, 0x7b, 0xdb, 0x91, 0x1b, 0x0e, 0x1e, 0x0f,
+       0xaa, 0x0f, 0x93, 0x5f, 0xd8, 0x19, 0x69, 0x63,
+       0x3b, 0x3e, 0x0a, 0xe7, 0x71, 0x50, 0xea, 0xa0,
+       0x03, 0x0c, 0x99, 0xde, 0xf7, 0x25, 0xc1, 0x5f,
+       0x9e, 0xc9, 0x4f, 0x47, 0x49, 0xce, 0x61, 0x7e,
+       0xd3, 0xd9, 0x05, 0xa4, 0xc6, 0xfb, 0x48, 0xaf,
+       0x85, 0x21, 0x40, 0xbc, 0x5b, 0xdd, 0x4b, 0x7f,
+       0xa6, 0xad, 0xfb, 0x98, 0x94, 0x17, 0xe2, 0xac,
+       0x11, 0xa5, 0x3a, 0x91, 0x9e, 0x0a, 0x3a, 0x21,
+       0x3d, 0x55, 0xec, 0xd7, 0xcd, 0xb1, 0x83, 0x3f,
+       0x29, 0xe9, 0xfb, 0xef, 0xe9, 0xf8, 0x57, 0x7a,
+       0x71, 0xb1, 0xc1, 0xcf, 0x25, 0xbd, 0xf7, 0x4f,
+       0x66, 0x4e, 0x9e, 0x4d, 0xa8, 0x96, 0x88, 0xd7,
+       0x4d, 0x8d, 0xa2, 0x6c, 0x78, 0x3a, 0x91, 0x58,
+       0x9a, 0x38, 0x9c, 0x70, 0x18, 0x86, 0xdc, 0x22,
+       0x84, 0x78, 0xaa, 0x35, 0x32, 0x0a, 0x66, 0xce,
+       0xe0, 0x0a, 0x36, 0x31, 0xb1, 0x11, 0xd5, 0x05,
+       0xe9, 0xd8, 0x86, 0x89, 0x28, 0xa1, 0x3c, 0xcb,
+       0x8b, 0x79, 0x49, 0x35, 0x98, 0x5e, 0xaa, 0x41,
+       0xdd, 0x53, 0x4c, 0xa6, 0x07, 0xcf, 0x5c, 0xe5,
+       0x67, 0xd3, 0xd3, 0xe6, 0xe8, 0x02, 0x56, 0x10,
+       0xcb, 0xd8, 0x30, 0xfb, 0xb7, 0xfa, 0x29, 0xc9,
+       0x4c, 0x0a, 0xa7, 0x52, 0x8b, 0x19, 0x84, 0x74,
+       0x89, 0xae, 0x90, 0x0b, 0x79, 0x42, 0x6c, 0xf7,
+       0x62, 0xcf, 0x36, 0x13, 0x32, 0xf3, 0x1a, 0x7d,
+       0xb2, 0xd0, 0x62, 0xe1, 0xa8, 0x44, 0x59, 0x08,
+       0xf8, 0x79, 0x74, 0x9a, 0xb5, 0x00, 0x39, 0x95,
+       0x5b, 0xe9, 0x24, 0x1a, 0x1f, 0xf4, 0xa7, 0x73,
+       0x64, 0xb2, 0x3a, 0xf3, 0x8c, 0xac, 0xf8, 0xe1,
+       0x18, 0xfe, 0x19, 0x4f, 0xcf, 0x40, 0x06, 0xf0,
+       0x4e, 0xd9, 0xc0, 0x22, 0x89, 0xe3, 0xdf, 0x3f,
+       0xf7, 0x31, 0x9c, 0xfc, 0x7a, 0x3d, 0xea, 0x8e,
+       0x1f, 0x7f, 0x49, 0x42, 0xb8, 0x91, 0xac, 0xac,
+       0xff, 0x14, 0x14, 0xc4, 0xd6, 0x09, 0x22, 0x3a,
+       0xd9, 0xf9, 0xe6, 0x32, 0x18, 0x49, 0x66, 0xb0,
+       0xaa, 0x9c, 0x68, 0xbd, 0x6c, 0xf7, 0xb5, 0xc9,
+       0xe4, 0x49, 0x3d, 0xfe, 0x43, 0x9a, 0x41, 0xad,
+       0x64, 0x99, 0x3e, 0xb7, 0x62, 0xdb, 0xd5, 0x1b,
+       0x99, 0x44, 0x84, 0xb7, 0x17, 0x9b, 0x9f, 0x0a,
+       0x16, 0x2d, 0x33, 0x79, 0x37, 0x7c, 0xa0, 0xd9,
+       0x39, 0x8e, 0x80, 0xcd, 0x03, 0x04, 0x21, 0x8b,
+       0xf4, 0x1d, 0x4e, 0x4e, 0x4f, 0xda, 0xb9, 0x2c,
+       0x02, 0x0c, 0xd4, 0x45, 0xcb, 0xea, 0x68, 0x6a,
+       0xf5, 0x07, 0xef, 0xfc, 0xcc, 0xbb, 0x56, 0x32,
+       0xc0, 0x09, 0xc9, 0x49, 0x3a, 0x55, 0xe0, 0xc6,
+       0xe2, 0x73, 0x22, 0xd9, 0x42, 0x7c, 0x7f, 0x64,
+       0xc2, 0xee, 0xb5, 0x4a, 0x06, 0x80, 0x9b, 0x4a,
+       0x88, 0x38, 0x7e, 0x64, 0xac, 0x30, 0x0b, 0x35,
+       0x3a, 0xde, 0xa4, 0x0f, 0xee, 0x85, 0xc4, 0x8e,
+       0xc7, 0x86, 0xbb, 0x06, 0x01, 0xee, 0x03, 0xfd,
+       0x38, 0xdc, 0x46, 0x29, 0xc3, 0x5e, 0xcc, 0x1b,
+       0xe9, 0xc1, 0x82, 0xc7, 0x72, 0xe3, 0xe1, 0xfd,
+       0x62, 0xf1, 0x35, 0x61, 0x3a, 0x27, 0xba, 0x56,
+       0xe8, 0x92, 0x27, 0x68, 0xb7, 0x7e, 0x86, 0x78,
+       0x05, 0xbf, 0xd7, 0x89, 0xd4, 0xfc, 0x1e, 0x0c,
+       0x51, 0xab, 0xb9, 0x1a, 0x9f, 0xaa, 0x74, 0xe2,
+       0x04, 0xbc, 0x10, 0xad, 0x8d, 0x90, 0x15, 0x75,
+       0x74, 0xb7, 0x61, 0x61, 0x89, 0xbf, 0x12, 0xee,
+       0xc2, 0xf4, 0xb7, 0xf2, 0x6b, 0xba, 0x09, 0x0a,
+       0x03, 0xac, 0xed, 0xba, 0xa1, 0x9c, 0xac, 0xc9,
+       0x9f, 0xac, 0x5b, 0xa9, 0xcc, 0x1b, 0xc6, 0xab,
+       0x02, 0x26, 0x55, 0xb8, 0x71, 0x4d, 0xcb, 0x4f,
+       0x9c, 0x3c, 0x55, 0xbe, 0x4c, 0x05, 0x3c, 0xed,
+       0x36, 0x18, 0x98, 0x45, 0x89, 0x4e, 0x02, 0xbd,
+       0x55, 0xe7, 0x04, 0x23, 0x8f, 0x97, 0x1b, 0xda,
+       0x7c, 0x08, 0x7f, 0xf1, 0xf7, 0x50, 0x4c, 0x08,
+       0x7e, 0xc8, 0x7d, 0xfd, 0x2a, 0xfc, 0x67, 0x21,
+       0xc9, 0x05, 0x30, 0x19, 0x2d, 0x9d, 0x7d, 0x67,
+       0x3d, 0x0e, 0xdf, 0x28, 0x9d, 0x06, 0x44, 0x78,
+       0x65, 0x9b, 0x2c, 0xb2, 0x00, 0x55, 0x37, 0x00,
+       0x38, 0xb2, 0xdc, 0x62, 0xd1, 0x9b, 0xd2, 0xbd,
+       0xbe, 0x45, 0x24, 0x12, 0x1e, 0x04, 0xd1, 0x08,
+       0xe3, 0x3b, 0x36, 0xd6, 0x07, 0x1e, 0x98, 0x37,
+       0x4b, 0x6a, 0x9b, 0x09, 0xac, 0xe1, 0x6c, 0x68,
+       0xed, 0xa2, 0xfc, 0xa4, 0xe4, 0x99, 0x25, 0xab,
+       0xfb, 0xa0, 0x9e, 0x05, 0xc8, 0x2e, 0xce, 0x74,
+       0x26, 0x14, 0x41, 0x9d, 0x94, 0x68, 0xd4, 0x19,
+       0x86, 0x49, 0x4a, 0x27, 0xc4, 0x2e, 0x2a, 0x86,
+       0x9f, 0x7d, 0x79, 0x1c, 0x56, 0x6c, 0xd2, 0xd9,
+       0xeb, 0x76, 0x22, 0x57, 0xc1, 0x21, 0xa5, 0x6a,
+       0x37, 0xc7, 0x1d, 0x77, 0x77, 0x87, 0x26, 0xa4,
+       0x8d, 0x0a, 0x27, 0xa6, 0x66, 0x38, 0x9d, 0xd1,
+       0x23, 0xee, 0xbd, 0x0b, 0x38, 0xc2, 0x06, 0xa6,
+       0xc6, 0xae, 0x66, 0x7e, 0x7c, 0x4e, 0x59, 0x8e,
+       0x4a, 0x58, 0x65, 0x88, 0x15, 0xae, 0x66, 0xb1,
+       0xa8, 0x94, 0xeb, 0x05, 0x18, 0xa6, 0x52, 0xfb,
+       0x64, 0x12, 0x78, 0xea, 0xf9, 0x8a, 0xf9, 0xaa,
+       0x56, 0x6c, 0x47, 0x2d, 0x3e, 0x13, 0x4d, 0x0e,
+       0x85, 0x26, 0x2c, 0x46, 0x17, 0x27, 0x46, 0x4c,
+       0x20, 0x2f, 0x6c, 0xf4, 0x21, 0x34, 0xd5, 0x74,
+       0xb0, 0x21, 0xdc, 0x05, 0x49, 0x1c, 0x74, 0x97,
+       0x0e, 0x15, 0x48, 0x29, 0x73, 0x43, 0xf9, 0x59,
+       0x6e, 0x81, 0x3e, 0x99, 0xba, 0x9c, 0x99, 0x6a,
+       0x6b, 0xa5, 0x97, 0x5f, 0xb5, 0xd3, 0xc9, 0x9e,
+       0x37, 0x4f, 0x3d, 0xdb, 0xa4, 0xbc, 0xd1, 0xc4,
+       0x6c, 0xeb, 0xa3, 0x20, 0x04, 0xc9, 0x42, 0xbd,
+       0x2b, 0xa7, 0x4c, 0x29, 0x7d, 0x39, 0xce, 0x41,
+       0x66, 0x82, 0x0b, 0xca, 0x8d, 0x59, 0x1f, 0x26,
+       0x76, 0x10, 0x33, 0x0e, 0xd6, 0xc9, 0x9a, 0x84,
+       0x49, 0x33, 0x9f, 0x26, 0x58, 0x99, 0x14, 0x37,
+       0x68, 0x4d, 0xe5, 0x94, 0x5a, 0xfb, 0xdf, 0xb7,
+       0x24, 0x59, 0xc4, 0x67, 0x4f, 0xdf, 0x47, 0x30,
+       0xce, 0xc9, 0x4a, 0x8d, 0xa1, 0x88, 0x8a, 0x01,
+       0x05, 0x50, 0xc4, 0x48, 0xff, 0x5c, 0x97, 0x54,
+       0xb0, 0x56, 0xa0, 0xa0, 0xe8, 0x0d, 0x92, 0xeb,
+       0x90, 0x72, 0x1a, 0x1b, 0x0f, 0xbe, 0xdc, 0x20,
+       0x05, 0x0d, 0x5e, 0x2b, 0xb7, 0x9f, 0xc3, 0x2f,
+       0x31, 0xaf, 0x92, 0xeb, 0xe2, 0x27, 0xad, 0x51,
+       0x57, 0x54, 0xe8, 0xca, 0x0e, 0x7f, 0x45, 0x96,
+       0xd4, 0x9d, 0xad, 0x6e, 0x09, 0xbc, 0x66, 0xac,
+       0x90, 0x58, 0x52, 0xac, 0x45, 0x4a, 0x95, 0x54,
+       0x6c, 0x1b, 0xfe, 0x54, 0x27, 0xf9, 0x47, 0x66,
+       0xc1, 0x46, 0xbd, 0xe0, 0x97, 0xcd, 0xfc, 0x9f,
+       0x7a, 0xa9, 0x36, 0xf7, 0x7d, 0xb7, 0xf4, 0x84,
+       0x82, 0xc3, 0x09, 0xaf, 0xff, 0x00, 0xdb, 0xac,
+       0xe4, 0x13, 0x51, 0xe7, 0x00, 0x00
+};
+
+unsigned int core_len = 19454;
index dc1f98a835c46b1510b5b1d0ec768d65adabd71d..cb25ef7cd2755cb63b9e48a5865dc51578530263 100755 (executable)
--- a/custom.c
+++ b/custom.c
@@ -2659,7 +2659,7 @@ static void doint (void)
 #endif
     imask = intreq & intena;
     if (imask && (intena & 0x4000)) {
-       for (i = 0; i < 14; i++) {
+       for (i = 0; i < 15; i++) {
            if ((imask & (1 << i)) && irqdelay[i] == 0) {
                irqdelay[i] = 1;
                irqcycles[i] = get_cycles ();
@@ -2673,7 +2673,7 @@ STATIC_INLINE void INTENA (uae_u16 v)
     setclr (&intena,v);
 #if 0
     if (v & 0x40)
-       write_log("INTENA %04.4X (%04.4X) %p\n", intena, v, m68k_getpc());
+       write_log("INTENA %04.4X (%04.4X) %p\n", intena, v, M68K_GETPC);
 #endif
     if (v & 0x8000)
        doint ();
@@ -2681,22 +2681,29 @@ STATIC_INLINE void INTENA (uae_u16 v)
 
 void INTREQ_0 (uae_u16 v)
 {
+    int i;
     if (v & (0x80|0x100|0x200|0x400))
        audio_update_irq (v);
-    setclr (&intreq,v);
+    setclr (&intreq, v);
+    if (!(v & 0x8000)) {
+       for (i = 0; i < 15; i++) {
+           if (v & (1 << i))
+               irqdelay[i] = 0;
+       }
+    }
     doint ();
 }
 
 void INTREQ (uae_u16 v)
 {
-    INTREQ_0 (v);
-    serial_check_irq ();
-    rethink_cias ();
 #if 0
-    if (0 || (v & (0x8010)) == 0x8010)
+    if ((v & (0xc000)) == 0xc000)
        write_log("%d INTREQ %04.4X (%04.4X) %x %x %x\n",
-           vpos, intreq, v, m68k_getpc(), cop1lc, cop2lc);
+           vpos, intreq, v, M68K_GETPC, cop1lc, cop2lc);
 #endif
+    INTREQ_0 (v);
+    serial_check_irq ();
+    rethink_cias ();
 }
 
 static void ADKCON (int hpos, uae_u16 v)
@@ -4121,9 +4128,8 @@ static void framewait (void)
     }
     curr_time = start = read_processor_time();
     if (!isvsync()) {
-       do {
-           curr_time = read_processor_time ();
-       } while (rpt_vsync () < 0);
+       while (rpt_vsync () < 0);
+        curr_time = read_processor_time ();
     }
     vsyncmintime = curr_time + vsynctime;
     idletime += read_processor_time() - start;
@@ -4667,7 +4673,7 @@ void dumpcustom (void)
            (unsigned int)diwstrt, (unsigned int)diwstop, (unsigned int)ddfstrt, (unsigned int)ddfstop);
     console_out ("BPLCON 0: %04x 1: %04x 2: %04x 3: %04x 4: %04x\n", bplcon0, bplcon1, bplcon2, bplcon3, bplcon4);
     if (timeframes) {
-       console_out ("Average frame time: %f ms [frames: %d time: %d]\n",
+       console_out ("Average frame time: %.2f ms [frames: %d time: %d]\n",
                    (double)frametime / timeframes, timeframes, frametime);
        if (total_skipped)
            console_out ("Skipped frames: %d\n", total_skipped);
index 72c37e95984776be7de709402d878f102454eedc..d3ed5d0c74b8da46b2db47ecaa48c14a72ede74c 100755 (executable)
@@ -956,7 +956,7 @@ static void allocate_expamem (void)
                allocated_fastmem = 0;
            }
        }
-       clearexec ();
+       memory_hardreset();
     }
     if (allocated_z3fastmem != currprefs.z3fastmem_size) {
        if (z3fastmem)
@@ -973,7 +973,7 @@ static void allocate_expamem (void)
                allocated_z3fastmem = 0;
            }
        }
-       clearexec ();
+       memory_hardreset();
     }
 #ifdef PICASSO96
     if (allocated_gfxmem != currprefs.gfxmem_size) {
@@ -991,7 +991,7 @@ static void allocate_expamem (void)
                allocated_gfxmem = 0;
            }
        }
-       clearexec ();
+       memory_hardreset();
     }
 #endif
 
@@ -1155,6 +1155,16 @@ void expansion_cleanup (void)
 #endif
 }
 
+void expansion_clear(void)
+{
+    if (fastmemory)
+       memset (fastmemory, 0, allocated_fastmem);
+    if (z3fastmem)
+       memset (z3fastmem, 0, allocated_z3fastmem);
+    if (gfxmemory)
+       memset (gfxmemory, 0, allocated_gfxmem);
+}
+
 #ifdef SAVESTATE
 
 /* State save/restore code.  */
index c86ea3101ed72ff944952958b2af3ad58eacaf81..018120c236330d2a23ac7528dd7d6a5b4027e3d4 100755 (executable)
--- a/filesys.c
+++ b/filesys.c
@@ -4039,16 +4039,34 @@ static int rdb_mount (UnitInfo *uip, int unit_no, int partnum, uaecptr parmpacke
        write_log ("FileSystem.resource not found, this shouldn't happen!\n");
        goto error;
     }
+    fsnode = get_long (fsres + 18);
+    while (get_long (fsnode)) {
+       if (get_long (fsnode + 14) == dostype)
+           break;
+       fsnode = get_long (fsnode);
+    }
+    oldversion = oldrevision = -1;
+    if (get_long (fsnode)) {
+       oldversion = get_word (fsnode + 18);
+       oldrevision = get_word (fsnode + 20);
+    } else {
+       fsnode = 0;
+    }
 
     for (;;) {
-       if (fileblock == -1)
+       if (fileblock == -1) {
+           if (!fsnode)
+               write_log ("RDB: required FS %08.8X not in FileSystem.resource or in RDB\n", dostype);
            goto error;
+       }
        if (!legalrdbblock (uip, fileblock)) {
+           write_log("RDB: corrupt FSHD pointer %d\n", fileblock);
            err = -1;
            goto error;
        }
        hdf_read (hfd, buf, fileblock * hfd->blocksize, readblocksize);
        if (!rdb_checksum ("FSHD", buf, fileblock)) {
+           write_log("RDB: checksum error in FSHD block %d\n", fileblock);
            err = -1;
            goto error;
        }
@@ -4056,25 +4074,15 @@ static int rdb_mount (UnitInfo *uip, int unit_no, int partnum, uaecptr parmpacke
        if ((dostype >> 8) == (rl (buf + 32) >> 8))
            break;
     }
-
-    fsnode = get_long (fsres + 18);
-    while (get_long (fsnode)) {
-       if (get_long (fsnode + 14) == dostype)
-           break;
-       fsnode = get_long (fsnode);
-    }
-
-    oldversion = oldrevision = -1;
     newversion = (buf[36] << 8) | buf[37];
     newrevision = (buf[38] << 8) | buf[39];
+
     write_log ("RDB: RDB filesystem %08.8X version %d.%d\n", dostype, newversion, newrevision);
-    if (get_long (fsnode)) {
-       oldversion = get_word (fsnode + 18);
-       oldrevision = get_word (fsnode + 20);
+    if (fsnode) {
        write_log ("RDB: %08.8X in FileSystem.resouce version %d.%d\n", dostype, oldversion, oldrevision);
     }
     if (newversion * 65536 + newrevision <= oldversion * 65536 + oldrevision && oldversion >= 0) {
-       write_log ("RDB: fs in FileSystem.resource is newer or same, ignoring RDB filesystem\n");
+       write_log ("RDB: FS in FileSystem.resource is newer or same, ignoring RDB filesystem\n");
        goto error;
     }
 
index cbb4a206f58ec2f170152b074977aebdc91eaa9b..bfc5c128f4e41f8f82e71e0b0c1dc96e5fa727a3 100755 (executable)
--- a/gencpu.c
+++ b/gencpu.c
@@ -616,12 +616,10 @@ static void genamode (amodes mode, char *reg, wordsizes size, char *name, int ge
 {
     genamode2 (mode, reg, size, name, getv, movem, flags, 0);
 }
-/*
 static void genamode_e3 (amodes mode, char *reg, wordsizes size, char *name, int getv, int movem, int flags, int e3fudge)
 {
     genamode2 (mode, reg, size, name, getv, movem, flags, e3fudge);
 }
-*/
 
 static void genastore_2 (char *from, amodes mode, char *reg, wordsizes size, char *to, int store_dir)
 {
@@ -1512,7 +1510,8 @@ static void gen_opcode (unsigned long int opcode)
            int prefetch_done = 0;
            int dualprefetch = curi->dmode == absl && (curi->smode != Dreg && curi->smode != Areg && curi->smode != imm);
            genamode (curi->smode, "srcreg", curi->size, "src", 1, 0, 0);
-           genamode (curi->dmode, "dstreg", curi->size, "dst", 2, 0, 1 | (dualprefetch ? GF_NOREFILL : 0));
+           /* MOVE.L dx,(ax) exception3 PC points to next instruction. hackhackhack */
+           genamode_e3 (curi->dmode, "dstreg", curi->size, "dst", 2, 0, 1 | (dualprefetch ? GF_NOREFILL : 0), curi->smode == Dreg && curi->dmode == Aind ? 2 : 0);
            if (curi->mnemo == i_MOVEA && curi->size == sz_word)
                printf ("\tsrc = (uae_s32)(uae_s16)src;\n");
            if (curi->dmode == Apdi) {
index f1acc0812b817b0a32e7f1a4456f9a6b90f80336..998bd5387c1ba30167e0efc6bd4b881a69789981 100755 (executable)
@@ -77,6 +77,7 @@ extern void hardfile_reset (void);
 extern void emulib_install (void);
 extern void expansion_init (void);
 extern void expansion_cleanup (void);
+extern void expansion_clear (void);
 
 #define TRAPFLAG_NO_REGSAVE 1
 #define TRAPFLAG_NO_RETVAL 2
index 129ff1d4f257897eb168d34ec1a947f262ab9596..7ae6c458071243d155df41a4eb40e948c384c767 100755 (executable)
@@ -27,6 +27,7 @@ typedef struct catweasel_drive {
 
 typedef struct catweasel_contr {
     int type;                      /* see CATWEASEL_TYPE_* defines below */
+    int direct_type;
     int iobase;                    /* 0 = not present (factory default is 0x320) */
     void (*msdelay)(int ms);       /* microseconds delay routine, provided by host program */
     catweasel_drive drives[2];     /* at most two drives on each controller */
index 1a416eb8715110fdeabf022b6a14fc55273727fb..0764b3c7a5d40723f2c7cb5f6769a5365ab50c71 100755 (executable)
@@ -144,6 +144,7 @@ extern void memory_init (void);
 extern void memory_cleanup (void);
 extern void map_banks (addrbank *bank, int first, int count, int realsize);
 extern void map_overlay (int chip);
+extern void memory_hardreset (void);
 
 #define longget(addr) (call_mem_get_func(get_mem_bank(addr).lget, addr))
 #define wordget(addr) (call_mem_get_func(get_mem_bank(addr).wget, addr))
index e033a02e6feeb4fb4bef2a2afe728749a969deb1..621cedca4ba951f93a79e33c440e567b84275531 100755 (executable)
--- a/memory.c
+++ b/memory.c
@@ -1960,12 +1960,6 @@ static void init_mem_banks (void)
 #endif
 }
 
-void clearexec (void)
-{
-    if (chipmemory)
-       memset (chipmemory + 4, 0,  4);
-}
-
 static void allocate_memory (void)
 {
     if (allocated_chipmem != currprefs.chipmem_size) {
@@ -1983,7 +1977,7 @@ static void allocate_memory (void)
            write_log ("Fatal error: out of memory for chipmem.\n");
            allocated_chipmem = 0;
        } else {
-           clearexec ();
+           memory_hardreset();
            if (memsize != allocated_chipmem)
                memset (chipmemory + allocated_chipmem, 0xff, memsize - allocated_chipmem);
        }
@@ -2009,7 +2003,7 @@ static void allocate_memory (void)
                allocated_bogomem = 0;
            }
        }
-       clearexec ();
+       memory_hardreset();
     }
 #ifdef AUTOCONFIG
     if (allocated_a3000mem != currprefs.a3000mem_size) {
@@ -2027,7 +2021,7 @@ static void allocate_memory (void)
                allocated_a3000mem = 0;
            }
        }
-       clearexec ();
+       memory_hardreset();
     }
 #endif
     if (savestate_state == STATE_RESTORE) {
@@ -2083,7 +2077,7 @@ void memory_reset (void)
        memcpy (currprefs.romfile, changed_prefs.romfile, sizeof currprefs.romfile);
        memcpy (currprefs.romextfile, changed_prefs.romextfile, sizeof currprefs.romextfile);
        if (savestate_state != STATE_RESTORE)
-           clearexec ();
+           memory_hardreset();
        xfree (extendedkickmemory);
        extendedkickmemory = 0;
        extendedkickmem_size = 0;
@@ -2294,6 +2288,15 @@ void memory_cleanup (void)
     #endif
 }
 
+void memory_hardreset(void)
+{
+    if (chipmemory)
+       memset (chipmemory, 0, allocated_chipmem);
+    if (bogomemory)
+       memset (bogomemory, 0, allocated_bogomem);
+    expansion_clear();
+}
+
 void map_banks (addrbank *bank, int start, int size, int realsize)
 {
     int bnr;
index cc05e978eb4cb3327e0e75bd1afbfda197f00c4b..2949d4dd70272a1eb95669f86f1e39513bbb31f4 100755 (executable)
 
 #ifdef PROWIZARD
 
-#include "uae.h"
 #include "options.h"
 #include "memory.h"
-#include "autoconf.h"
 #include "moduleripper.h"
 #include "gui.h"
 
@@ -45,6 +43,8 @@ void moduleripper (void)
     size += currprefs.bogomem_size;
     size += currprefs.z3fastmem_size;
     buf = p = xmalloc (size);
+    if (!buf)
+       return;
     memcpy (p, chipmemory, currprefs.chipmem_size);
     p += currprefs.chipmem_size;
     mc (p, fastmem_start, currprefs.fastmem_size);
@@ -69,7 +69,7 @@ void moduleripper (void)
        notify_user (NUMSG_MODRIP_NOTFOUND);
     else if (!canceled)
        notify_user (NUMSG_MODRIP_FINISHED);
-    free (buf);
+    xfree (buf);
 }
 
 FILE *moduleripper_fopen (const char *name, const char *mode)
index e3e58ba63c17a1226f201e8ab6f5a6d6b633a18c..7ab3f89bc275d13bcfcc10a3858d580556826a4c 100755 (executable)
--- a/newcpu.c
+++ b/newcpu.c
@@ -2142,8 +2142,8 @@ void m68k_go (int may_quit)
            customreset ();
            m68k_reset ();
            if (hardreset) {
-               memset (chipmemory, 0, allocated_chipmem);
-               write_log ("chipmem cleared\n");
+               memory_hardreset();
+               write_log ("hardreset, memory cleared\n");
            }
 #ifdef SAVESTATE
            /* We may have been restoring state, but we're done now.  */
index 523e9b9a53fc4e6a6d1b7068bd11224eb1186cc7..72d683cba711f831104b7fdc8c28945842ef8e4e 100755 (executable)
@@ -1717,11 +1717,13 @@ void host_WaitSelect(TrapContext *context, SB, uae_u32 nfds, uae_u32 readfds, ua
        }
        if (nfds == 0) {
                // No sockets to check, only wait for signals
-               m68k_dreg(&context->regs,0) = wssigs;
-               sigs = CallLib(context, get_long(4),-0x13e); // Wait()
-
-               put_long(sigmp,sigs & wssigs);
+               if (wssigs != 0) {
+                       m68k_dreg(&context->regs, 0) = wssigs;
+                       sigs = CallLib(context, get_long(4),-0x13e); // Wait()
 
+                       put_long(sigmp, sigs & wssigs);
+                       }
+       
                if (readfds)
                        fd_zero(readfds,nfds);
                if (writefds)
index 6314537bb73ff5bc4980b68b035e5f67862c8cb8..5250027da89eb0b4b55d88cb5bbda513ca41c2d0 100755 (executable)
@@ -331,7 +331,7 @@ int fsdb_set_file_attrs (a_inode *aino)
     /* windows dirs go where no dir has gone before...  */
     if (! aino->dir) {
        mode = 0;
-       if ((tmpmask & (A_FIBF_READ | A_FIBF_DELETE)) == 0)
+       if ((tmpmask & (A_FIBF_WRITE | A_FIBF_DELETE)) == 0)
            mode |= FILE_ATTRIBUTE_READONLY;
        if (!(tmpmask & A_FIBF_ARCHIVE))
            mode |= FILE_ATTRIBUTE_ARCHIVE;
@@ -368,21 +368,20 @@ int fsdb_mode_supported (const a_inode *aino)
  * native FS.  Return zero if that is not possible.  */
 int fsdb_mode_representable_p (const a_inode *aino)
 {
-    int mask = aino->amigaos_mode;
-    int m1;
+    int mask = aino->amigaos_mode ^ 15;
 
     if (aino->dir)
        return aino->amigaos_mode == 0;
 
-    /* S set, or E or R clear, means we can't handle it.  */
-    if (mask & (A_FIBF_SCRIPT | A_FIBF_EXECUTE | A_FIBF_READ))
-       return 0;
-    m1 = A_FIBF_DELETE | A_FIBF_WRITE;
-    /* If it's rwed, we are OK... */
-    if ((mask & m1) == 0)
+    if (mask == 15) /* ---RWED == OK */
        return 1;
-    /* We can also represent r-e-, by setting the host's readonly flag.  */
-    if ((mask & m1) == m1)
+    if (!(mask & A_FIBF_EXECUTE)) /* not executable */
+       return 0;
+    if (!(mask & A_FIBF_READ)) /* not readable */
+       return 0;
+    if (mask & A_FIBF_SCRIPT) /* script */
+       return 0;
+    if ((mask & 15) == (A_FIBF_READ | A_FIBF_EXECUTE)) /* ----R-E- == ReadOnly */
        return 1;
     return 0;
 }
index 6816480a4d74d1ce0c781383c14f018dbbd44c0c..d29a6c110c76ee60994af6a89df48e26b8f61c18 100755 (executable)
@@ -13,6 +13,19 @@ typedef int bool;
 #include <windows.h>
 #include "win32.h"
 
+// TVicPORT
+typedef BOOL (_stdcall* OPENTVICPORT)(void);
+static OPENTVICPORT pOpenTVicPort;
+typedef void (_stdcall* CLOSETVICPORT)(void);
+static CLOSETVICPORT pCloseTVicPort;
+typedef BOOL (_stdcall* ISDRIVEROPENED)(void);
+static ISDRIVEROPENED pIsDriverOpened;
+typedef UCHAR (_stdcall* READPORT)(USHORT);
+static READPORT pReadPort;
+typedef UCHAR (_stdcall* WRITEPORT)(USHORT,UCHAR);
+static WRITEPORT pWritePort;
+
+// WINIO
 typedef bool (_stdcall* INITIALIZEWINIO)(void);
 static INITIALIZEWINIO pInitializeWinIo;
 typedef void (_stdcall* SHUTDOWNWINIO)(void);
@@ -21,9 +34,11 @@ typedef bool (_stdcall* GETPORTVAL)(WORD,PDWORD,BYTE);
 static GETPORTVAL pGetPortVal;
 typedef bool (_stdcall* SETPORTVAL)(WORD,DWORD,BYTE);
 static SETPORTVAL pSetPortVal;
+
 static HMODULE ioh;
 
 #ifndef IOPORT_EMU
+#include <TVicPort.h>
 #include <WinIo.h>
 #endif
 
@@ -34,6 +49,33 @@ int ioport_init (void)
     if (initialized)
        return 1;
 #ifndef IOPORT_EMU
+    ioh = WIN32_LoadLibrary ("tvicport.dll");
+    if (ioh) {
+       for (;;) {
+           pOpenTVicPort = (OPENTVICPORT)GetProcAddress (ioh, "OpenTVicPort");
+           pCloseTVicPort = (CLOSETVICPORT)GetProcAddress (ioh, "CloseTVicPort");
+           pIsDriverOpened = (ISDRIVEROPENED)GetProcAddress (ioh, "IsDriverOpened");
+           pReadPort = (READPORT)GetProcAddress (ioh, "ReadPort");
+           pWritePort = (WRITEPORT)GetProcAddress (ioh, "WritePort");
+           if (!pOpenTVicPort || !pCloseTVicPort || !pIsDriverOpened || !pReadPort || !pWritePort) {
+               io_log("incompatible tvicport.dll\n");
+               break;
+           }
+           if (!pOpenTVicPort()) {
+               io_log("tvicport.dll failed to initialize\n");
+               break;
+           }
+           if (!pIsDriverOpened()) {
+               io_log("tvicport.dll failed to initialized!\n");
+               pCloseTVicPort();
+               break;
+           }
+           initialized = 1;
+           io_log ("tvicport.dll initialized");
+           return 1;
+       }
+    }
+    FreeLibrary(ioh);
     ioh = WIN32_LoadLibrary ("winio.dll");
     if (!ioh)
        return 0;
@@ -47,7 +89,7 @@ int ioport_init (void)
        return 0;
     }
     __try {
-       initialized = pInitializeWinIo();
+       initialized = pInitializeWinIo() ? 2 : 0;
     } __except (EXCEPTION_EXECUTE_HANDLER) {
        initialized = 0;
     }
@@ -61,11 +103,12 @@ int ioport_init (void)
 void ioport_free (void)
 {
 #ifndef IOPORT_EMU
-    if (initialized) {
+    if (initialized == 1)
+       pCloseTVicPort();
+    if (initialized == 2)
        pShutdownWinIo();
+    if (initialized)
        FreeLibrary (ioh);
-       io_log ("io freed\n");
-    }
 #endif
     initialized = 0;
 }
@@ -74,7 +117,10 @@ uae_u8 ioport_read (int port)
 {
     DWORD v = 0;
 #ifndef IOPORT_EMU
-    pGetPortVal (port, &v, 1);
+    if (initialized == 1)
+       v = pReadPort (port);
+    else if (initialized == 2)
+       pGetPortVal (port, &v, 1);
 #endif
     io_log ("ioport_read %04.4X returned %02.2X\n", port, v);
     return (uae_u8)v;
@@ -83,7 +129,10 @@ uae_u8 ioport_read (int port)
 void ioport_write (int port, uae_u8 v)
 {
 #ifndef IOPORT_EMU
-    pSetPortVal (port, v, 1);
+    if (initialized == 1)
+       pWritePort (port, v);
+    else if (initialized == 2)
+       pSetPortVal (port, v, 1);
 #endif
     io_log ("ioport_write %04.4X %02.2X\n", port, v);
 }
index 424e98cd502ebf584d7e08bb914907c2edc71112..2db2742c94f68fa114624d33eaf1ea84c0e8cf53 100755 (executable)
@@ -9,55 +9,7 @@
 #ifndef _RPT_H_
 #define _RPT_H_
 
-#ifdef HIBERNATE_TEST
-extern int rpt_skip_trigger;
-#endif
-
 typedef unsigned long frame_time_t;
-
-/* For CPUs that lack the rdtsc instruction or systems that change CPU frequency on the fly (most laptops) */
-extern frame_time_t read_processor_time_qpc(void);
-extern int useqpc;
-
-STATIC_INLINE frame_time_t read_processor_time_qpc (void)
-{
-    LARGE_INTEGER counter;
-    QueryPerformanceCounter( &counter );
-    if (useqpc > 0)
-       return (frame_time_t)(counter.LowPart);
-    return (frame_time_t)(counter.QuadPart >> 6);
-}
-
-STATIC_INLINE frame_time_t read_processor_time (void)
-{
-    frame_time_t foo;
-
-    if (useqpc) /* No RDTSC or RDTSC is not stable */
-       return read_processor_time_qpc();
-
-#if defined(X86_MSVC_ASSEMBLY)
-    {
-       frame_time_t bar;
-       __asm
-       {
-           rdtsc
-           mov foo, eax
-           mov bar, edx
-       }
-       /* very high speed CPU's RDTSC might overflow without this.. */
-       foo >>= 6;
-       foo |= bar << 26;
-    }
-#else
-    foo = 0;
-#endif
-#ifdef HIBERNATE_TEST
-    if (rpt_skip_trigger) {
-       foo += rpt_skip_trigger;
-       rpt_skip_trigger = 0;
-    }
-#endif
-    return foo;
-}
+extern frame_time_t read_processor_time (void);
 
 #endif
index 7028d89c2c99ba25e43670eb8013fdb56423c229..8a2c602d61b74fb74c1d61ba14928f91c41d3847 100755 (executable)
@@ -65,8 +65,8 @@ void init_shm(void)
            size64 <<= 1;
     if (size64 > max_allowed_mman * 1024 * 1024)
        size64 = max_allowed_mman * 1024 * 1024;
-    if (size64 > 0x20000000)
-       size64 = 0x20000000;
+    if (size64 > 0x40000000)
+       size64 = 0x40000000;
     if (size64 < 8 * 1024 * 1024)
        size64 = 8 * 1024 * 1024;
     size = max_z3fastmem = (uae_u32)size64;
index 1ca59f0b4474e955a0e8569225800f7da4b78cbc..4baf508b4c76eeb6f2b427a6bc1a1f64557a99c7 100755 (executable)
 
 #include <math.h>
 
-#define ADJUST_SIZE 20
-#define EXP 1.3
+#define ADJUST_SIZE 100
+#define EXP 1.9
 
-int sound_debug;
+int sound_debug = 0;
 
 static int obtainedfreq;
 static int have_sound;
index d21f3db744c04afd7a4ed16f87e3338f3478d9ca..0b889b0b394396396255f4c352a2aebafb4fd3e9 100755 (executable)
@@ -74,6 +74,7 @@ static OSVERSIONINFO osVersion;
 static SYSTEM_INFO SystemInfo;
 
 int useqpc = 0; /* Set to TRUE to use the QueryPerformanceCounter() function instead of rdtsc() */
+int qpcdivisor = 0;
 int cpu_mmx = 0;
 static int no_rdtsc;
 
@@ -192,6 +193,49 @@ static void dummythread (void *dummy)
     while (!dummythread_die);
 }
 
+
+STATIC_INLINE frame_time_t read_processor_time_qpc (void)
+{
+    LARGE_INTEGER counter;
+    QueryPerformanceCounter(&counter);
+    if (qpcdivisor == 0)
+       return (frame_time_t)(counter.LowPart);
+    return (frame_time_t)(counter.QuadPart >> qpcdivisor);
+}
+
+frame_time_t read_processor_time (void)
+{
+    frame_time_t foo;
+
+    if (useqpc) /* No RDTSC or RDTSC is not stable */
+       return read_processor_time_qpc();
+
+#if defined(X86_MSVC_ASSEMBLY)
+    {
+       frame_time_t bar;
+       __asm
+       {
+           rdtsc
+           mov foo, eax
+           mov bar, edx
+       }
+       /* very high speed CPU's RDTSC might overflow without this.. */
+       foo >>= 6;
+       foo |= bar << 26;
+    }
+#else
+    foo = 0;
+#endif
+#ifdef HIBERNATE_TEST
+    if (rpt_skip_trigger) {
+       foo += rpt_skip_trigger;
+       rpt_skip_trigger = 0;
+    }
+#endif
+    return foo;
+}
+
+
 static uae_u64 win32_read_processor_time (void)
 {
 #if defined(X86_MSVC_ASSEMBLY)
@@ -253,15 +297,17 @@ static int figure_processor_speed (void)
 
     if (QueryPerformanceFrequency(&freq)) {
        qpc_avail = 1;
-       write_log("CLOCKFREQ: QPF %.2fMHz\n", freq.QuadPart / 1000000.0);
        qpfrate = freq.QuadPart;
-        /* we don't want 32-bit overflow */
-       if (qpfrate > 100000000) {
-           qpfrate >>= 6;
+        /* we don't want 32-bit overflow, limit to 100MHz */
+       qpcdivisor = 0;
+       while (qpfrate > 100000000) {
+           qpfrate >>= 1;
+           qpcdivisor++;
            qpc_avail = -1;
        }
+       write_log("CLOCKFREQ: QPF %.2fMHz (DIV=%d)\n", freq.QuadPart / 1000000.0, 1 << qpcdivisor);
        if (SystemInfo.dwNumberOfProcessors > 1)
-           rpt_available = 0; /* RDTSC is weird in SMP-systems */
+           rpt_available = 0; /* RDTSC can be weird in SMP-systems */
     } else {
        write_log("CLOCKREQ: QPF not supported\n");
     }
@@ -273,7 +319,7 @@ static int figure_processor_speed (void)
 
     init_mmtimer();
     SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_HIGHEST);
-    sleep_millis (100);
+    sleep_millis (50);
     dummythread_die = -1;
 
     if (qpc_avail || rpt_available)  {
@@ -285,7 +331,7 @@ static int figure_processor_speed (void)
            clockrateidle = (win32_read_processor_time() - clockrateidle) * 2;
            dummythread_die = 0;
            _beginthread(&dummythread, 0, 0);
-           sleep_millis (100);
+           sleep_millis (50);
            clockrate = win32_read_processor_time();
            sleep_millis (500);
            clockrate = (win32_read_processor_time() - clockrate) * 2;
@@ -358,13 +404,13 @@ static int figure_processor_speed (void)
        limit = 2.5;
        if (mm_timerres && (ratea1 / ratecnt) < limit * clockrate1000) { /* MM-timer is ok */
            timermode = 0;
-           sleep_resolution = (int)(ratea1 * clockrate1000 / (ratecnt * 1000000));
+           sleep_resolution = (int)((1000 * ratea1) / (clockrate1000 * ratecnt));
            timebegin ();
-           write_log ("Using MultiMedia timers (resolution < %.1fms)\n", limit);
+           write_log ("Using MultiMedia timers (resolution < %.1fms) SR=%d\n", limit, sleep_resolution);
        } else if ((ratea2 / ratecnt) < limit * clockrate1000) { /* regular Sleep() is ok */
            timermode = 1;
-           sleep_resolution = (int)(ratea2 * clockrate1000 / (ratecnt * 1000000));
-           write_log ("Using Sleep() (resolution < %.1fms)\n", limit);
+           sleep_resolution = (int)((1000 * ratea2) / (clockrate1000 * ratecnt));
+           write_log ("Using Sleep() (resolution < %.1fms) SR=%d\n", limit, sleep_resolution);
        } else {
            timermode = -1; /* both timers are bad, fall back to busy-wait */
            write_log ("falling back to busy-loop waiting (timer resolution > %.1fms)\n", limit);
@@ -1518,6 +1564,8 @@ int debuggable (void)
 
 int mousehack_allowed (void)
 {
+    if (nr_units (currprefs.mountinfo) == 0)
+       return 0;
     return dinput_winmouse () > 0 && dinput_winmousemode ();
 }
 
@@ -2140,7 +2188,7 @@ static int dxdetect (void)
 #endif
 }
 
-int os_winnt, os_winnt_admin;
+int os_winnt, os_winnt_admin, os_64bit;
 
 static int isadminpriv (void) 
 {
@@ -2206,6 +2254,7 @@ static int osdetect (void)
 {
     os_winnt = 0;
     os_winnt_admin = 0;
+    os_64bit = 0;
 
     pGetNativeSystemInfo = (PGETNATIVESYSTEMINFO)GetProcAddress(
        GetModuleHandle("kernel32.dll"), "GetNativeSystemInfo");
@@ -2225,6 +2274,8 @@ static int osdetect (void)
        }
        if (osVersion.dwPlatformId == VER_PLATFORM_WIN32_NT)
            os_winnt = 1;
+       if (SystemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
+           os_64bit = 1;
     }
 
     if (!os_winnt) {
@@ -2360,7 +2411,8 @@ static void getstartpaths(int start_data)
 }
 
 extern void test (void);
-extern int screenshotmode, b0rken_ati_overlay,postscript_print_debugging,sound_debug;
+extern int screenshotmode, b0rken_ati_overlay, postscript_print_debugging, sound_debug;
+extern int force_direct_catweasel;
 
 static int PASCAL WinMain2 (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,
                    int nCmdShow)
@@ -2419,6 +2471,7 @@ static int PASCAL WinMain2 (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR
        if (!strcmp (arg, "-screenshotbmp")) screenshotmode = 0;
        if (!strcmp (arg, "-psprintdebug")) postscript_print_debugging = 1;
        if (!strcmp (arg, "-sounddebug")) sound_debug = 1;
+       if (!strcmp (arg, "-directcatweasel")) force_direct_catweasel = 1;
        if (!strcmp (arg, "-datapath") && i + 1 < argc) {
            strcpy(start_path_data, argv[i + 1]);
            start_data = 1;
index 8b869ca32a2c337161dd930438414b7e5197072b..2821abdeae2531ff8f2f70f1855f33c7cb75451f 100755 (executable)
@@ -22,7 +22,7 @@ extern int manual_palette_refresh_needed;
 extern int mouseactive, focus;
 extern int ignore_messages_all;
 #define WINUAEBETA 1
-#define WINUAEBETASTR " Beta 5"
+#define WINUAEBETASTR " Beta 7"
 
 extern char start_path_exe[MAX_DPATH];
 extern char start_path_data[MAX_DPATH];
@@ -56,7 +56,7 @@ extern int sound_available;
 extern int framecnt;
 extern char prtname[];
 extern char VersionStr[256];
-extern int os_winnt, os_winnt_admin;
+extern int os_winnt, os_winnt_admin, os_64bit;
 extern int paraport_mask;
 extern int gui_active;
 extern DWORD quickstart;
index 37be4af99cd483c5509a1a85547bc8236f134a0c..55aad9d2cab314b846e240261ea22442b6478dc8 100755 (executable)
@@ -576,6 +576,7 @@ void enumeratedisplays (int multi)
        DirectDraw_EnumDisplays (displaysCallback);
        EnumDisplayMonitors(NULL, NULL, monitorEnumProc, (LPARAM)&cnt);
     } else {
+       write_log ("Multimonitor detection disabled\n");
        Displays[0].primary = 1;
        Displays[0].name = "Display";
        Displays[0].disabled = 0;
index 6081733ec0c3b0ae1b54241f66f71c02875f4fb8..19d69dada1408f0a5d71bf654519842467987e6e 100755 (executable)
@@ -371,7 +371,7 @@ static HWND cachedlist = NULL;
 #define MAX_Z3_MEM 10
 #endif
 #define MIN_P96_MEM 0
-#define MAX_P96_MEM 6
+#define MAX_P96_MEM 7
 #define MIN_M68K_PRIORITY 1
 #define MAX_M68K_PRIORITY 16
 #define MIN_CACHE_SIZE 0
@@ -1418,7 +1418,7 @@ static int msi_chip[] = { 1, 2, 3, 4, 5, 6 };
 static int msi_bogo[] = { 0, 2, 3, 14, 15 };
 static int msi_fast[] = { 0, 3, 4, 5, 6 };
 static int msi_z3fast[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16 };
-static int msi_gfx[] = { 0, 3, 4, 5, 6,7,8};
+static int msi_gfx[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10 };
 
 static int CalculateHardfileSize (HWND hDlg)
 {
@@ -4174,6 +4174,8 @@ static void values_to_memorydlg (HWND hDlg)
      case 0x00800000: mem_size = 4; break;
      case 0x01000000: mem_size = 5; break;
      case 0x02000000: mem_size = 6; break;
+     case 0x04000000: mem_size = 7; break;
+     case 0x08000000: mem_size = 8; break;
     }
     SendDlgItemMessage (hDlg, IDC_P96MEM, TBM_SETPOS, TRUE, mem_size);
     SetDlgItemText (hDlg, IDC_P96RAM, memsize_names[msi_gfx[mem_size]]);
index 3f420e3753480186e6b97a711a33c8e47dceb062..913fe918edcdd14e97cc5d5848c5bdea2abe1049 100755 (executable)
                                RelativePath="..\..\missing.c"
                                >
                        </File>
-                       <File
-                               RelativePath="..\..\moduleripper.c"
-                               >
-                       </File>
                        <File
                                RelativePath="..\..\native2amiga.c"
                                >
                                RelativePath="..\..\prowizard\misc\misc.c"
                                >
                        </File>
+                       <File
+                               RelativePath="..\..\moduleripper.c"
+                               >
+                       </File>
                        <File
                                RelativePath="..\..\prowizard\prowiz.c"
                                >
                                        RelativePath="..\..\prowizard\rippers\Crunchmania-Address.c"
                                        >
                                </File>
+                               <File
+                                       RelativePath="..\..\prowizard\rippers\Crunchmania-Simple.c"
+                                       >
+                               </File>
                                <File
                                        RelativePath="..\..\prowizard\rippers\datacrunchers.c"
                                        >
                                        RelativePath="..\..\prowizard\rippers\GameMusicCreator.c"
                                        >
                                </File>
+                               <File
+                                       RelativePath="..\..\prowizard\rippers\GNUPacker12.c"
+                                       >
+                               </File>
                                <File
                                        RelativePath="..\..\prowizard\rippers\GnuPlayer.c"
                                        >
                                        RelativePath="..\..\prowizard\rippers\ModuleProtector.c"
                                        >
                                </File>
+                               <File
+                                       RelativePath="..\..\prowizard\rippers\Mugician.c"
+                                       >
+                               </File>
                                <File
                                        RelativePath="..\..\prowizard\rippers\Newtron.c"
                                        >
                                        RelativePath="..\..\prowizard\rippers\Prorunner20.c"
                                        >
                                </File>
+                               <File
+                                       RelativePath="..\..\prowizard\rippers\ptktable.h"
+                                       >
+                               </File>
                                <File
                                        RelativePath="..\..\prowizard\rippers\QuadraComposer.c"
                                        >
                                        RelativePath="..\..\prowizard\rippers\RelokIt10.c"
                                        >
                                </File>
+                               <File
+                                       RelativePath="..\..\prowizard\rippers\SGT-Packer.c"
+                                       >
+                               </File>
                                <File
                                        RelativePath="..\..\prowizard\rippers\SkytPacker.c"
                                        >
diff --git a/prowizard/INSTALL b/prowizard/INSTALL
deleted file mode 100755 (executable)
index e18a0c3..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-Installation
-------------
-
-This program does not need any special installation process.
-
-Pro-Wizard-1 (unix) uses DMalloc. You can dl FreeBSD version here :
-http://prdownloads.sourceforge.net/dmalloc/
-For Linux, try http://dmalloc.com
-
-Prowiz.exe (dos) should be compiled with Cygwin32 GCC compiler.
-It'll require the file CYGWIN1.DLL. It should be put somewhere in the PATH 
-(if not present already).
-latest version can be found at:
-ftp://ftp.uni-erlangen.de/pub/pc/gnuwin32/cygwin/mirrors/cygnus/latest/cygwin/
-or on their Web site
-http://www.cygwin.com
-
-Pro-Wizard-1 (amiga) binary is for 68020 chipsets. Compiling the amiga
-version requires at least 8Mb Chip, GCC 2.97.3, ixemul lib and a hell
-of a lot of time :). It was compiled under UAE on FreeBSD.
\ No newline at end of file
diff --git a/prowizard/README b/prowizard/README
deleted file mode 100755 (executable)
index 5ce8201..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-Prowiz4PC: ProWizard for PC
----------------------------
-
-
-Description
------------
-
-Pro-Wizard-1 (for Peecee) is a multi-ripper for music files. (find the
-list in the known formats below). Also, it extracts various data/exe files
-like S404 data files. Most of the music formats are 100% Protracker compatible.
-The ripped formats are mainly amiga formats. I'm beginning to add a few
-other from the Atari ST, now.
-
-Note
-----
-
-USE THIS PROGRAM ONLY AT YOUR OWN RISK !
-If this program destroys your data I'm interested in finding the bug,
-but I'm not responsible for the damages.
-
-Legal issues
-------------
-
-The copyright is GNU GPL. See COPYING file.
-
-Requirements
-------------
-
-prowiz (cmdline tool):
-        At this stage, only Linux/FreeBSD are supported.
-       MS-DOS/WIN* binary are compiled by friends when spare time comes up.
-
-Behaviour
----------
-
-Output, upon finding a known data file, will be 0.extension, 1.extension, etc. .
-These extensions are editable in the file "_types_" (default name). Read the 
-header of this file for specific instructions on how to edit.
-At this stage, I still can't guarantee the program wont crash in certain cases.
-I fixed anything I've found so far, but .. . If you encounter such a case,
-please, send over the data file !.
-
-Motivation
-----------
-
-"I wanted to do it myself" is the main motivation :).
-
-Compiling
----------
-
- A simple 'make' should do the trick.
- Now, if you want a version that contains only the music files (WinUAE ?),
-edit the 'makefile' and remove the '-DINCLUDEALL'. then 'make simple' will
-compile only the needed files.
- Sounds like bad work on the makefile, but I wasn't able to make it any
-simplier. Sorry.
-
-Credits
--------
-
-ProWizard for PC:
-Amiga port:
-        Sylvain "Asle" Chipaux
-        asle@free.fr
-
-Initial port under *nix:
-        Michael Doering
-        mldoering@gmx.net
-
-And various bug reports:
-        look in CREDITS file
-
-There's a web page here : http://asle.free.fr/prowiz
-
-Contact me for any reason. If you think you can help this project to be
-more compatible with different platforms, don't hesitate to contact.
-Bug reports, EXE/Music amiga formats are also welcome !.
diff --git a/prowizard/_types_ b/prowizard/_types_
deleted file mode 100755 (executable)
index 5a2f1cf..0000000
+++ /dev/null
@@ -1,409 +0,0 @@
-###############################################################################
-#                                                                             #
-# _types_ : should be part of Pro-Wizard 1 (for PC/Unix/Amiga).               #
-#                                                                             #
-#                                                                             #
-#                                                                             #
-# 1997-2004 (c) Sylvain "asle" Chipaux                                        #
-#                                                                             #
-###############################################################################
-#
-# Edit the extensions of the known formats
-#
-# BEWARE: Leave the order the way it is !!. It's fastly coded and I didn't
-#        want to spend all night on this small thing !.
-#         Beside the lines with the extensions, there should NOT be any empty
-#        lines !. Add as many lines as you want, as long as you begin them
-#        with '#'.
-#         And last, an extension can be from 2 to 32 chars long.
-#        Also, this file must be is the current directory. If not, the
-#       default extension will be used.
-#
-# NOTE: at now, there should be 126 extensions.
-#
-###############################################################################
-#
-# list starts now ...
-#
-###############################################################################
-##01 : AC1D packer (AC1D_packer)
-ac1d
-#
-##02 : Sound monitor v2 / v3 (SoundMonitor)
-bp
-#
-##03 : FC-M packer (FC_M_packer)
-fc-m
-#
-##04 : Hornet packer (Hornet_packer)
-hrt
-#
-##05 : KRIS tracker (KRIS_tracker)
-kris
-#
-##06 : OPTIMOD's power music (Power_Music)
-PowerMusic
-#
-##07 : Promizer 1.0c (Promizer_10c)
-Promizer10c
-#
-##08 : Promizer 1.8a (Promizer_18a)
-Promizer18a
-#
-##09 : Promizer 2.0 (Promizer_20)
-Promizer20
-#
-##10 : ProRunner v1 (ProRunner_v1)
-ProRunner1
-#
-##11 : ProRunner v2 (ProRunner_v2)
-ProRunner2
-#
-##12 : SKYT packer (SKYT_packer)
-skyt
-#
-##13 : Wanton packer (Wanton_packer)
-WantonPacker
-#
-##14 : XANN packer (XANN_packer)
-xann
-#
-##15 : Module Protector (Module_protector)
-ModuleProtector
-#
-##16 : Digital Illusion (Digital_illusion)
-DigitalIllusion
-#
-##17 : Pha Packer (Pha_packer)
-PhaPacker
-#
-##18 : Promizer 0.1 (Promizer_01)
-Promizer01
-#
-##19 : ProPacker 2.1 (Propacker_21)
-ProPacker21
-#
-##20 : ProPacker 3.0 (Propacker_30)
-ProPacker30
-#
-##21 : Eureka packer (Eureka_packer)
-Eureka
-#
-##22 : StarTrekker pack (Star_pack)
-StarTrekkerPack
-#
-##23 : Protracker (Protracker)
-mod
-#
-##24 : UNIC tracker v1 (UNIC_v1)
-unic1
-#
-##25 : UNIC tracker v2 (UNIC_v2)
-unic2
-#
-##26 : Fuzzac packer (Fuzzac)
-Fuzzac
-#
-##27 : Game music creator (GMC)
-gmc
-#
-##28 : Heatseeker (Heatseeker)
-crb
-#
-##29 : Kefrens sound machine (KSM)
-ksm
-#
-##30 : Noiserunner (Noiserunner)
-Noiserunner
-#
-##31 : NoisePacker v1 (Noisepacker1)
-NoisePacker1
-#
-##32 : NoisePacker v2 (Noisepacker2)
-NoisePacker2
-#
-##33 : NoisePacker v3 (Noisepacker3)
-NoisePacker3
-#
-##34 : The player 4.0A (P40A)
-P40A
-#
-##35 : The player 4.0B (P40B)
-P40B
-#
-##36 : The player 4.1A (P41A)
-P41A
-#
-##37 : Promizer 4.0 (PM40)
-Promizer4
-#
-##38 : Propacker 1.0 (PP10)
-ProPacker1
-#
-##39 : Tracker packer 1.0 (TP1)
-TrackerPacker1
-#
-##40 : Tracker packer 2.0 (TP2)
-TrackerPacker2
-#
-##41 : Tracker packer 3.0 (TP3)
-TrackerPacker3
-#
-##42 : Zen packer (ZEN)
-ZenPacker
-#
-##43 : The player 5.0A (P50A)
-P50A
-#
-##44 : The player 6.0A (P60A)
-P60A
-#
-##45 : StarTrekker (StarTrekker)
-mod
-#
-##46 : StoneCracker 4.04 Data (S404) (also S401,S403,S310 and S300)
-StoneCrackerData
-#
-##47 : StoneCracker 2.70 (exe)
-StoneCracker270
-#
-##48 : The Player 6.1A (P61A)
-P61A
-#
-##49 : STIM_Slamtilt (STIM)
-stim
-#
-##50 : SoundTracker
-mod
-#
-##51 : Tetrapack 2.2 (TPACK22)
-TetraPack22
-#
-##52 : Crunchmania / Normal (CRM2/CRM!) / Address
-CrunchmaniaData
-#
-##53 : Defjam Cruncher 3.2 / 3.2 pro (Defjam_32)
-DefjamCruncher
-#
-##54 : Tetrapack 2.1 (TPACK21)
-Tetrapack21
-#
-##55 : IAM Packer 1.0 data
-ice
-#
-##56 : Byte Killer 1.3 / 2.0 / 3.0 and Pro 1.0
-ByteKiller
-#
-##57 : XPK file
-xpk
-#
-##58 : Imploder (data)
-Imploder
-#
-##59 : Propack (RNC) data
-rnc
-#
-##60 : Double Action 1.0 (exe) (Double_Action)
-DoubleAction
-#
-##61 : Powerpacker 3.0 (exe) (Powerpacker3)
-PowerPacker3
-#
-##62 : Powerpacker 4.0 (exe) (Powerpacker4 & PP4 library)
-PowerPacker4
-#
-##63 : Powerpacker 2.3 (exe) (Powerpacker23)
-PowerPacker23
-#
-##64 : Spike Cruncher (exe) (SpikeCruncher)
-SpikeCruncher
-#
-##65 : Tetrapack 1.02 (exe) (TPACK102)
-Tetrapack102
-#
-##66 : Time Cruncher 1.7 (exe) (TimeCruncher)
-TimeCruncher17
-#
-##67 : MasterCruncher
-MasterCruncher
-#
-##68 : Master Cruncher 3.0 address (MasterCruncher)
-##     Mega Cruncher 1.0 / 1.2
-MegaCruncher
-#
-##69 : JamCracker / Pro (JamCracker)
-jam
-#
-##70 : BSI Future Composer (BSIFC)
-BSI-FC
-#
-##71 : DigiBooster 1.7 (DigiBooster)
-digi
-#
-##72 : Quadra Composer (QuadraComposer)
-qc
-#
-##73 : The Dark Demon (TDD)
-TheDarkDemon
-#
-##74 : Fuchs Tracker (FuchsTracker)
-FuchsTracker
-#
-##75 : Syncro Packer 4.6
-SynchroPacker46
-#
-##76 : TNM Cruncher 1.1 (TNMCruncher)
-TNMCruncher11
-#
-##77 : Super Cuncher 2.7 (SuperCruncher)
-SuperCruncher27
-#
-##78 : PPbk (AMOS PowerPacker Bank) (PP20 inside)
-PPbk
-#
-##79 : Relok It 1.0 (RelokIt)
-RelokIt1
-#
-##80 : StoneCracker 2.92 data
-StoneCracker292data
-#
-##81 : FIRE (RNC clone) Cruncher (data) (FIRE)
-fire
-#
-##82 : Max Packer 1.2 (MaxPacker)
-MaxPacker12
-#
-##83 : SoundFX 1.3 (SoundFX)
-SoundFX13
-#
-##84 : arcD Data Cruncher (arcD)
-arcD
-#
-##85 : PARA Data Cruncher (PARA)
-para
-#
-##86 : CRND Data Cruncher (CRND)
-crnd
-#
-##87 : =SB= Data Cruncher (SB_DataCruncher)
--sb-
-#
-##88 : SF Data Cruncher (SF)
-sf
-#
-##89 : RLE Data Cruncher (RLE)
-RLE
-#
-##90 : Virtual Dreams (VDCO) Data Cruncher (VDCO)
-VDC0
-#
-##91 : SQ Data Cruncher (SQ)
-sq
-#
-##92 : SP Data Cruncher (SP)
-sp
-#
-##93 : SoundTracker 2.6 (ST2)
-ST2
-#
-##94 : IceTracker 1.0 (IT1)
-IT1
-#
-##95 : HQC Cruncher 2.0 (HQC)
-HQC
-#
-##96 : Try-It Cruncher 1.01 (TIC)
-TIC
-#
-##97 : Future Composer 1.0 - 1.3 (FC3)
-FC3
-#
-##98 : Future Composer 1.4 (FC4)
-FC4
-#
-##99 : Amnesty Design (1AM) Data Cruncher
-1AM
-#
-##100 : Amnesty Design (2AM) Data Cruncher
-2AM
-#
-##101 : MED / OctaMED (MMD0/MMD1/MMD2/MMD3)
-med
-#
-##102 : Ace? (Cruncher Data)
-AceCruncherData
-#
-##103 : Newtron packer (real name ?)
-Newtron
-#
-##104 : GPMO (Crunch player ?)
-GPMO
-#
-##105 : Polka Packer
-PolkaPacker
-#
-##106 : GnuPlayer
-GnuPlayer
-#
-##107 : -CJ- Data Cruncher
-CJ_DataCruncher
-#
-##108 : AmBk
-AmBk
-#
-##109 : Master Cruncher 3.0 data
-MasterCruncher3data
-#
-##110 : fasttracker 2
-xm
-#
-##111 : Megacruncher obj
-MegaCruncherObj
-#
-##112 : Turbo Squeezer 6.1
-TurboSqueezer61
-#
-##113 : Stonecracker 2.99d
-StoneCracker299d
-#
-##114 : StoneCracker 3.10
-StoneCracker310
-#
-##115 : StoneCracker 2.99b
-StoneCracker299b
-#
-##116 : StoneCracker 2.99
-StoneCracker299
-#
-##117 : StoneCracker 3.00
-StoneCracker300
-#
-##118 : The Player 3.0a
-ThePlayer30a
-#
-##119 : The Player 2.2a
-ThePlayer22a
-#
-##120 : Noise from Heaven
-NoiseFromHeaven
-#
-##121 : TMK
-tmk
-#
-##122 : DragPack 2.52
-DragPack252
-#
-##123 : DragPack 1.00
-DragPack100
-#
-##124 : Speed Packer 3 (Atari ST)
-SPv3
-#
-##125 : Atomik Packer (ATOM or ATM3) (Atari ST)
-AtomikPackerData
-#
-##126 : Automation Packer 5.* (Atari ST)
-AutomationPackerData
-#
-###############################################################################
-###############################################################################
\ No newline at end of file
diff --git a/prowizard/docs/COPYING b/prowizard/docs/COPYING
deleted file mode 100755 (executable)
index 60549be..0000000
+++ /dev/null
@@ -1,340 +0,0 @@
-                   GNU GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                           Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-\f
-                   GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-\f
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-\f
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-\f
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                           NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                    END OF TERMS AND CONDITIONS
-\f
-           How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) 19yy  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) 19yy name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/prowizard/docs/CREDITS b/prowizard/docs/CREDITS
deleted file mode 100755 (executable)
index 3c8423b..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-Thanks to:
-    Nicolas Franck (Gryzor) for his marvellous Pro-Wizard 2
-    and numerous packed files !.
-                   
-    Mickael Doering for the *nix port and the constructives comments !.
-
-    Thomas Neumann for pointing out a lot of bugs !.
-    your help was valuable !.
-
-    Markus Jaegermeister for pointing out bugs too, and for providing
-    valuable information regarding "exotic formats" !.
-
-    Laurent Clévy for numerous synth descriptions !.
-
-    Xigh for the Mingwin32 port/compiling, and for a couple of tips
-    with the source code.
-
-    all the people who pointed out bugs (recontact me for I've lost
-    your names with the uncountable crash I've had lately..)
diff --git a/prowizard/docs/KNOWN_FORMATS b/prowizard/docs/KNOWN_FORMATS
deleted file mode 100755 (executable)
index 3813023..0000000
+++ /dev/null
@@ -1,242 +0,0 @@
-Known formats (not updated !)
--------------
-
- Note: The order is alphabetically arranged with the extensions.
-
- Note: the string between "()" is the default extension used by
-      Pro-Wizard (for PeeCee) when a music is ripped.
-
- Note: "CPU" is the computer on which the format can be found
-
- Note: "DETECTION" and "SIZE CALC" describe how easy it is to detect the
-      format and to calcutate its size. From the easiest to the hardest :
-      "child's play","easy","some job","good job","hard job".
-       Heh, that's MY point of view ... others might say otherwise for
-      some formats ... .
-
-|  EXT  |          NAME OF THE FORMAT        | CPU | DETECTION | SIZE CALC  |
-|=======|====================================|=====|===========|============|
-| (22A) |The Player 2.2A                     |Amiga|   easy    |  some job  |
-|-------|------------------------------------|-----|-----------|------------|
-| (33A) |The Player 3.3A                     |Amiga|   easy    |  some job  |
-|-------|------------------------------------|-----|-----------|------------|
-| (40A) |The Player 4.0A                     |Amiga|   easy    |  some job  |
-|-------|------------------------------------|-----|-----------|------------|
-| (40B) |The Player 4.0B                     |Amiga|   easy    |  some job  |
-|-------|------------------------------------|-----|-----------|------------|
-| (41A) |The Player 4.1A                     |Amiga|   easy    |  some job  |
-|-------|------------------------------------|-----|-----------|------------|
-| (50A) |The Player 5.0A                     |Amiga| good job! |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (60A) |The Player 6.0A  (no sample pack)   |Amiga| good job! |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (61A) |The Player 6.1A  (no sample pack)   |Amiga| good job! |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (AC1) |AC1D packer                         |Amiga|   easy    |child's play|
-|-------|------------------------------------|-----|-----------|------------|
-| (CRB) |Heatseeker mc1.0                    |Amiga| some job  | hard job ! |
-|-------|------------------------------------|-----|-----------|------------|
-| (DI)  |Digital Illusion                    |Amiga| good job! |child's play|
-|-------|------------------------------------|-----|-----------|------------|
-| (EU)  |Eureka packer                       |Amiga| good job! |child's play|
-|-------|------------------------------------|-----|-----------|------------|
-| (FCM) |FC-M packer                         |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (FT ) |Fuchs Tracker                       |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (FUZ) |Fuzzac packer                       |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (GMC) |Game Music Creator                  |Amiga| some job  |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (GNU) |GnuPlayer                           |Amiga|   easy    |  some job  |
-|-------|------------------------------------|-----|-----------|------------|
-| (GPM) |GPMO (Crunch Player)                |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (HRT) |Hornet packer                       |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (KRS) |Kris Tracker (Chip Tracker)         |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (KSM) |Kefrens Sound Machine               |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (MED) |MED - MMD0/MMD1                     |Amiga|   easy    |child's play|
-|-------|------------------------------------|-----|-----------|------------|
-| (MOD) |Protracker                          |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (MOD) |SoundTracker                        |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (MOD) |StarTrekker                         |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (MP ) |Module protector                    |Amiga| good job! |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (NEW) |Newtron packer                      |Amiga|   easy    |child's play|
-|-------|------------------------------------|-----|-----------|------------|
-| (NRU) |Noiserunner                         |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (NP1) |NoisePacker v1                      |Amiga| some job  |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (NP2) |NoisePacker v2                      |Amiga| some job  |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (NP3) |NoisePacker v3                      |Amiga| some job  |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (P10) |ProPacker v1.0                      |Amiga| some job  |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (P21) |ProPacker v2.1                      |Amiga| good job! |  some job  |
-|-------|------------------------------------|-----|-----------|------------|
-| (P30) |ProPacker v3.0                      |Amiga| good job! |  some job  |
-|-------|------------------------------------|-----|-----------|------------|
-| (PHA) |PHA Packer                          |Amiga| some job  | hard job ! |
-|-------|------------------------------------|-----|-----------|------------|
-| (PM)  |Optimod's Power Music               |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (PM0) |Promizer 0.1                        |Amiga| good job! |child's play|
-|-------|------------------------------------|-----|-----------|------------|
-| (PM1) |Promizer 1.0c                       |Amiga|   easy    |child's play|
-|-------|------------------------------------|-----|-----------|------------|
-| (PMZ) |Promizer 1.8a                       |Amiga|   easy    |child's play|
-|-------|------------------------------------|-----|-----------|------------|
-| (PM2) |Promizer 2.0                        |Amiga|   easy    |child's play|
-|-------|------------------------------------|-----|-----------|------------|
-| (PM4) |Promizer 4.0                        |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (POL) |Polka packer                        |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (PR1) |ProRunner v1                        |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (PR2) |ProRunner v2                        |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (QC ) |Quadra Composer                     |Amiga|   easy    |Child's play|
-|-------|------------------------------------|-----|-----------|------------|
-| (SFX) |Sound FX 1.3                        |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (SKT) |SKYT packer                         |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (STI) |STIM (Slamtilt)                     |Amiga|   easy    |  some job  |
-|-------|------------------------------------|-----|-----------|------------|
-| (STP) |StarTrekker pack                    |Amiga| good job! |child's play|
-|-------|------------------------------------|-----|-----------|------------|
-| (TDD) |The Dark Demon                      |Amiga| some job  |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (TP1) |Tracker Packer v1                   |Amiga|   easy    |child's play|
-|-------|------------------------------------|-----|-----------|------------|
-| (TP2) |Tracker Packer v2                   |Amiga|   easy    | hard job ! |
-|-------|------------------------------------|-----|-----------|------------|
-| (TP3) |Tracker Packer v3                   |Amiga|   easy    | hard job ! |
-|-------|------------------------------------|-----|-----------|------------|
-| (UN1) |UNIC Tracker v1                     |Amiga| hard job! |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (UN2) |UNIC Tracker v2                     |Amiga| hard job! |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (WN)  |Wanton Packer                       |Amiga|   easy    |child's play|
-|-------|------------------------------------|-----|-----------|------------|
-| (XAN) |Xann Packer                         |Amiga| some job  |  some job  |
-|-------|------------------------------------|-----|-----------|------------|
-| (ZEN) |Zen Packer                          |Amiga| some job  |child's play|
-|-------|------------------------------------|-----|-----------|------------|
-
- * that's 60 formats now :)
-
-
- there, now some Synthetic ...
-
-|  EXT  |          NAME OF THE FORMAT        | CPU | DETECTION | SIZE CALC  |
-|=======|====================================|=====|===========|============|
-| (BP*) |Sound Monitor v2/v3                 |Amiga|   easy    |  some job  |
-|-------|------------------------------------|-----|-----------|------------|
-| (BFC) |BSI Future Composer                 |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (FC3) |Future Composer 1.3                 |Amiga|   easy    |    easy    |
-|-------|------------------------------------|-----|-----------|------------|
-| (FC4) |Future Composer 1.4                 |Amiga|   easy    |  some job  |
-|-------|------------------------------------|-----|-----------|------------|
-| (JAM) |JamCracker / Pro                    |Amiga|   easy    |  some job  |
-|-------|------------------------------------|-----|-----------|------------|
-| (SFX) |Sound FX 1.3/1.8                    |Amiga|   easy    |  some job  |
-|-------|------------------------------------|-----|-----------|------------|
-
- * only 7 ... I'm working on that.
-
-
- Also, the data/exe files :
-
-|  EXT  |          NAME OF THE FORMAT           | CPU | DETECTION | SIZE CALC  |
-|=======|=======================================|=====|===========|============|
-| (1AM) |Amnesty Design Data Packer (data)      |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (2AM) |Amnesty Design Data Packer (data)      |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (89A) |$08090A08 Data Cruncher (data)         |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (ARC) |arcD Data Cruncher (data)              |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (BK ) |ByteKiller 1.3/2.0/3.0/Pro 1.0 (exe)   |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (CRM) |Crunchmania / Normal (data)            |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (CRM) |Crunchmania Adress (exe)               |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (CRN) |CRND Data Cruncher (data)              |Amiga|   easy    |    easy    |
-|-------|---------------------------------------|-----|-----------|------------|
-| (DBL) |Double Action 1.0 (exe)                |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (DJM) |Defjam Cruncher 3.2 / 3.2 pro (exe)    |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (FIR) |FIRE (RNC clone) Cruncher (data)       |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (HQC) |HQC Cruncher 2.0 (exe)                 |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (ICE) |Ice! Cruncher (data)                   |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (IMP) |Imploder (data) (ATN!-IMP!-CHFI)       |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (MAX) |Max Packer 1.2 (exe)                   |Amiga|   easy    |  some job  |
-|-------|---------------------------------------|-----|-----------|------------|
-| (MC ) |Master Cruncher 3.0 address (exe)      |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (MC ) |Mega Cruncher 1.0/1.2/Obj (exe)        |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (PAR )|PARA Data Cruncher (data)              |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (PP*) |Powerpacker 2.3/3.0/4.0/4.0 lib (exe)  |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (PP ) |AMOS Powerpacker Bank "PPbk" (data)    |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (RNC) |Propack (Rob Northern Cruncher) (data) |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (RI ) |RelokIt 1.0 (exe)                      |Amiga|   easy    |  some job  |
-|-------|---------------------------------------|-----|-----------|------------|
-| (SB ) |=SB= Data Cruncher (data)              |Amiga|   easy    |child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (SF ) |SF Data Cruncher (data)                |Amiga|   easy    |child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (SPK) |Spike Cruncher (exe)                   |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (STC) |StoneCracker 2.70 (exe)                |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (STC) |StoneCracker 4.04/4.01/4.03/3.10 (data)|Amiga|   easy    |Child's play|
-|       |StoneCracker 3.00 (data)               |     |           |            |
-|-------|---------------------------------------|-----|-----------|------------|
-| (STC) |StoneCracker 2.99(d/b)/3.10/3.00 (exe) |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (SP ) |Syncro Packer 4.6 (exe)                |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (SC ) |Super Cruncher 2.7 (exe)               |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (T**) |Tetrapack 1.02/2.2/2.1 (exe)           |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (TIC) |Try-It Cruncher 1.01 (exe)             |Amiga|   easy    |    easy    |
-|-------|---------------------------------------|-----|-----------|------------|
-| (TC ) |Time Cruncher 1.7 (exe)                |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (TNM) |TNM Cruncher 1.1 (exe)                 |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (TIC) |TurboCruncher 6.1 (exe)                |Amiga|   easy    |    easy    |
-|-------|---------------------------------------|-----|-----------|------------|
-| (VDC) |Virtual Dreams (VDCO) data cruncher    |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-| (XPK) |XPK-ed (data)                          |Amiga|   easy    |Child's play|
-|-------|---------------------------------------|-----|-----------|------------|
-
- * didn't want to do that in the first place ... but there it is and that's
-  about 59 formats recognized now !.
-
-
diff --git a/prowizard/docs/MISC b/prowizard/docs/MISC
deleted file mode 100755 (executable)
index 76150a5..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-Hot thanks
-----------
- - Nicolas Franck (Gryzor) for his marvellous (c) Pro-Wizard-2 :).
-
- - Mickael Doering for the *nix port and the constructives comments !.
-
- - Philippe Anel (Xigh) for compiling the WIN32 version
-
- - Slight for believeing in this wild project !. Wassup bro ?.
-
- - Thomas Neumann for pointing out a lot of bugs !.
-
- - Michael Trier, XtC and many others who sent me stuff to work with :).
-
- - Laurent Clevy for the numerous Synth Formats descriptions !.
-
- - Everyone who'll write to me about this program :).
-
-
-
-Some words
-----------
- And here is another release. Long time since the last :(. Anyway, as
-promised, I put this version online in the hope it will behave correctly
-everywhere .. feedback plz !.
-
- here are some things one ought to know about possible 'failure' of
-Pro-Wizard-1 (for PeeCee) ... meaning this prog might overlook or mistake
-some formats. The "sensibles" formats are :
- - Noisepacker v1 and v2
-  (these two formats are VERY similars ... a NP1 can be recognised as a NP2.
-   Rather harmless I should says, but ..)
- - Unic tracker v1 and v2
-  (These two formats can be recognised as the other ... or even as a ptk but
-   this very case has 0.01% chance to happen :). The first case, however, is
-   most probable ... . The difference isn't that important, mind .. a title !)
- - The Player 6.0A and 6.1A with packed samples are on hold. Jarno *did*
-  answer my old email (thx man !) and sent me a thorough description on
-  how to depack samples. Sadly, I've no time at all to do that these days.
-
- Most of the depackers included are still real gibberish code. I've rewritten
-quite a few yet, but I've found it's very expensive in time to rewritte
-lame old code :(. Not sure I'll finnish this ... .
-
- I've depacked NoiseTracker pack a long time ago ... but I wont include this
-format in ProWiz bcoz my depacker isn't 100% reliable :(. The fact is that
-if there are Arpeggii in the music, I cant find any single way to detect it.
-contact me for more infos :), I'll send you the description I've made ..
-reliable this one !.
-
- One word about the packed data files ... . I've included these format
-because I'm fed-up doing it handly with Hex-ed !. The ripped files are 
-STILL packed !, and you'll need to depack them with tools like XfdDecrunch. 
-If you know how to depack these, you're welcome to send me some source
-code (68k or not).
- Also, I've expanded this to other fairly well used packed EXE. Yet, I still
-dont know how to depack this by myself. Extracting that way saves hours of
-Hex-work .. at least for me :).
-
- One word about JamCracker. Xag version (JamCracker Pro 1.0A) saves a 19 bytes
-title at the end of the module. Prowiz for PC doesn't rip it since it's NOT
-in the original format. That's the only difference in the two versions (even
-if Xag's doc says there's no diff ...). So, if you want the title, just check
-the 19 bytes after the module.
-
- About Sound FX format, v1.3 and v1.8 are the same. Note that I attempted a
-conversion to ptk ... but most of the effects are not supported ... simply
-because I dont know what they do .. (doc please !). So, the conversion is
-only at a beta stage ... the rip is ok though :).
-
-
-
-
-Hellos and Messages
--------------------
- Slight : Les nouvelles se font (toujours) rares :(.
-
- Gryzor : hum ... ca fait une paye !.
-
- Xann   : Contacte moi SVP !!!!!. J'ai, encore une fois, perdu ton addresse !.
-          J'ai retrouve une intro de Silents codee par toi (91 ou 92 je crois)
-          mais le format de la zik est zarb ... ca ressemble a ton "celebre"
-          XANN player, mais ca colle pas vraiment. Tu as fais plusieurs
-          version ? ou est-ce ce "fameux" Xann packer (le vrai) ???.
-
- Buzz   : Keep up the GOOOD work on Exotica.
-
- Xigh   : et ce tracker, bordel !?!?!?.
-
-
-
-Contact the author
-------------------
- Several ways to contact me ..
-
- - Snail mail (new !!)
-               Chipaux "asle" Sylvain
-               19 rue censier, esc C
-               75005 Paris
-               France
-
- - E-Mail
-               asle@free.fr
-               (can get attached binary files).
-               or catch me on Exotica Forum !.
-
-
- - WWW
-               http://asle.free.fr/prowiz/
-               there's always the latest released src version on there
-
-
- - Tel
-               none at now
-
-
-
-Last word
----------
- I'll welcome ANY comment that might arise from this program. Also, new
-formats or bug reports (with Pro-Wizard (for PeeCee) version number !).
-
-
-
- Sylvain "asle" Chipaux.
diff --git a/prowizard/docs/TODO b/prowizard/docs/TODO
deleted file mode 100755 (executable)
index d44acee..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-Things to do
-------------
- - Adding the other formats I've depacked so far :).
-    -> Channel Player 1,2,3 (wont be easy ..)
-
- - Adding the whole lot of other ptk-compatible formats I still dont have
-   decrunched yet :(.
-    -> Pygmy packer (probably will never make it)
-    -> AMOS music bank (what a mess !)
-    -> an alien XANN packer ? (found in an old Silents intro :)
-    -> The Player 3.3
-
- - Adding some PC music format (S3M ...)
-
- - adding various synth formats since I got loads of tracker ! :).
-
-
-
diff --git a/prowizard/docs/changelog b/prowizard/docs/changelog
deleted file mode 100755 (executable)
index d5212b2..0000000
+++ /dev/null
@@ -1,368 +0,0 @@
-CHANGE LOG
-----------
-
-#date format is DDMMYYYY. (from lattest to first)
-
-02102005        Version 1.60
-       
-       Merged test(),rip() and pack() into one file for all formats. Now in rippers/.
-       Renamed Noise From Heaven #2 to Noise From Heaven. All three musicdisk are packed samely.
-       Removed a few printf() that were hidden here and there :)
-       Trashed all the #ifdef DOS and used a -I in the makefile instead (Thanks Laurent Clevy)
-       
-16052005        Version 1.52
-       
-       Fixed DragPack 2.52 size calculation routine and removed the rebuiling (help !)
-       
-15052005        Version 1.51
-       
-       Added some checks for the file opening.
-       Mostly some cleaning/reshaping.
-       
-11072004        Version 1.50
-       
-       Some cleaning because other project wish to used PW4PC (namely WinUAE)
-       Removed SQ/SP/SF data cruncher due to too many fakes files found.
-       New supported (PTK clones) format :
-       - TMK packer (found in a few Eremation demos)
-         not sure I'm compliant with Deliplayer on this one :(.
-       New supported (exe/data)format :
-       - DragPack 2.52 - with rebuilding
-       - DragPack 1.00 is on the way (some trouble with the rebuilding)
-       - Speed Packer 3 (Atari ST) (kindly sent by Mike Mee (thx!))
-       - Atomik Packer (Atari ST) (on sheer description sent by Mike Mee (thx!))
-       - Automation Packer 5.* (Atari ST) (on sheer description sent by Mike Mee (thx!))
-       
-24112003        Version 1.50.b3
-       
-       More Double Action v1.0 to be found
-       _types_ files complete now
-       SKYT debugged (forgot to remove some code)
-       
-23112003        Version 1.50.b2
-
-        Fixed TP1 patternlist handling. Should work with any TP1 now.
-       New supported (PTK clones) format :
-       - Noise From Heaven #2 musicdisk (Iris'2001)
-       - The Player 2.2a (thx to Exotica forum teams)
-       - The Player 3.0a (not really working in fact)
-        New supported (exe/data)format :
-       - StoneCracker 2.99/3.00 - with rebuilding
-       
-23042003        Version 1.50.b1
-
-       Some bugs correction of previous release :(
-       A lot less fake Module Protector/P50a/PP10 should be found
-       Overall PhaPacker (Propacker 1.0) debugging. Should be ok now.
-       FC13/FC14 false test fixed .. all examples should be detected ok now.
-       Various optimizings
-       All RelokIt 1.0 will be ripped.
-       Found a solution for those 00h. Takes nearly no time now :)
-        New supported (PTK clones) formats :
-        - Newtron
-       - GPMO
-       - Polka Packer (Thx Michael Trier for the example !)
-       - GnuPlayer (Thx Kyz for the great description !)
-       - AmBk - Amos Bank (no converting back to Ptk yet)
-       New supported format :
-       - XM
-        New supported (exe/data)formats :
-       - Mega Cruncher Obj EXE packer (old old old :) - with rebuilding
-       - TurboSqueezer 6.1 (1989 !) - no rebuilding !.
-       - StoneCracker 2.99d/2.99b/3.10 - with rebuilding
-       
-09062002        Version 1.49.4 (released on the 7th, mar 2003)
-
-       Some other issues corrected (mem violations ...)
-       Removed the remaining bzero() ... forgot them :(.
-       Amiga port (Crown/Crb's request).
-        New supported (exe/data)formats :
-        - (Ace?) DataCruncher
-
-04052002        Version 1.49.3
-
-       Removed all printf() from rip/*.c to group that in misc/misc.c.
-       Broke the 3 chars limit for extensions of saved files. (thx xigh !)
-
-28122001        Version 1.49.2 (not released)
-
-       Compiling on FreeBSD now, meaning all "hasardous" file reading
-       crashed the prog !. A lot have been corrected (all ?).
-       Removed the counter during search. Couldn't find an "easy"
-       solution :(.
-
-05052001        Version 1.49.1
-
-        More or less standard look-alike doc
-        Replaced bzero() with memset()
-        The Player 4.1a corrected (A cmd signed -> unsigned conversion)
-        Numerous bugfix (mostly to prevent readings outside of file)
-         in ProPacker 2.1, Noisepacker 3, Promizer 0.1.
-        added transco table for sample names in Kefrens Sound Machine modules.
-        New supported (exe/data)formats :
-        - Powerpacker 4.0 Library EXE packer (rare)
-
-20122000        Version 1.49.0
-
-        KRIS depacker/ripper debugged
-        Some useless code removed
-        New supported (synth) formats :
-        - MED (MMD0/MMD1) by Teijo Kinnunen (19??)
-        New supported (exe/data)formats :
-        - Crunchmania Address EXE packer (rather frequent)
-
-01072000        Version 1.48
-
-        New supported (exe/data)formats :
-        - Amnesty Design (1AM) data packer (very rare)
-        - Amnesty Design (2AM) data packer (very rare)
-
-23062000        Version 1.47
-
-        Two new effects added in XANN Packer format.
-        Added another UNIC tracker case ("UNIC" string ..)
-        New supported (exe/data)formats :
-        - BytekillerPro 1.0 - and rebuilding of header (very rare)
-        - HQC Cruncher 2.0 - no rebuild yet (very rare)
-        - Try-It Cruncher 1.01 - with rebuild (very rare)
-          (too few exemple to stick on this ripper ...)
-        New supported (synth) formats :
-        - Future Composer 1.3 (by Supersero / The Superions - 1990 ?)
-        - Future Composer 1.4 (by Supersero / The Superions - 1990)
-
-03042000        Version 1.46
-
-        mainly some small debugging in various tests.
-        all those corrected bugs where pointed out by Thomas Neumann
-        some other are not yet corrected though. I made all the quickies
-        before that hard stuff :).
-
-30111999        Version 1.45.c3
-
-        Finally editable extension are working ... even the last one. I'm
-        working on long extensions now, not only 3 chars.
-        New supported (exe/data)formats :
-        - CRND Data Cruncher (very rare)
-        - =SB= Data Cruncher (very rare)
-        - SF Data Cruncher (rare)
-        - Virtual Dreams (VDCO) Data Cruncher (very rare)
-        - SQ/SP Data Cruncher (missing SA/SC ..)
-        New supported (PTK Clone) formats :
-        - IceTracker 1.0 (IcePic)
-        - Soundtracker 2.6 (Mnemotron / Spreadpoint)
-        More optimizings by removing fopen() funcs. There's but a few
-        formats left to do.
-        Enhanced rebuilding of Time Crunched Binaries (24 last bytes)
-        Debugged Module Protector depacker
-        some internal rewritting ... mostly to speed-up and to
-        shorten more than quite a bit binaries.
-
-06061999        Version 1.44.005
-
-        Major rewritting ... a dozen or so files removed !.
-        Overall bugs corrections (mainly around sizes calculations)
-        A bug in UNIC2 ripper ... some unallocated value :(.
-        Aome debugging in Pha-ripper (still some job)
-        Aome bugs in UNIC1 tester ... stupid bugs, as usual :(.
-        Rrewrote some parts (restructured source code ... less lines)
-        Added another IAM packer (data) case ("ATM5")
-        Added some code to rewrite the header of EXE files with empty and/
-        or no header. Usefull with oldish megademos :). That goes for
-        every supported EXE format. Get the list below.
-        Optimized PTK-depackers by removing the open() and read()
-        functions ... very high speed while depacking now :). done for
-        the following formats (Heh it takes time !!) :
-        - ProRunner v2.0          - SKYT packer         - STIM (Slamtilt) packer
-        - Zen packer              - Xann packer         - Wanton packer
-        - Unic tracker v1/v2      - Tracker packer v3/v2
-        Enhanced detection for the following formats :
-        - Digital Illusion detection (fake DI found)
-        - Startrekker pack (bugged)
-        - Zen packer (crashed the prog sometime)
-        - KRIS tracker (fake KRIS found)
-        - Pha Packer (bugged)
-        - SoundTracker (bugged)
-        - Tracker Packer 3 (bugged)
-        New supported (PTK Clone) formats :
-        - Quadra Composer
-        - The Dark Demon (group name)
-        - Fuchs Tracker (Andreas Fuchs - 1990)
-        New supported (synth) formats :
-        - SoundMonitor v3 (Brian Postma - 1993)
-        - JamCracker / Pro (M. Gemmel - 1989 / Xag of Betrayal - 1990)
-        - BSI Future Composer (Tony Bybell aka Slates of BSI - 1990-1996)
-        - Sound FX 1.3 (Battle Isle) by Christian Haller & Christian A. Weber
-          in 1988. V1.8 is samely copyrighted in 1989.
-        New supported (exe/data)formats :
-        - FIRE (RNC clone) Cruncher (rare)
-        - Max Packer 1.2 (exe rare)
-        - Ice! Cruncher (data ... rare)
-        - arcD Data Cruncher (very rare)
-        - PARA Data Cruncher (very rare)
-        - Propack (RNC) data (Rob Northern Cruncher ... Antic cruncher :)
-          found in a LOT of 88-93 games !.
-        - Double Action 1.0 (exe files) (in some rather old demos !)
-        - Powerpacker 2.3 / 3.0 / 4.0 (exe files)
-        - ByteKiller 2.0 / 3.0 (exe files)
-        - Tetrapack 1.02 (exe files)
-        - Master Cruncher 3.0 addr (exe files)
-        - Mega Cruncher 1.0/1.2 (exe files ... extremly old :)
-        - Spike Cruncher (exe files ... rare)
-        - StoneCracker 2.70 (exe files ... rare)
-        - StoneCracker 3.00 (data)
-        - Syncro Packer 4.6 (exe files ... rare)
-        - TNM Cruncher 1.1 (exe files ... rare)
-        - Super Cruncher 2.7 (exe files ... extremly rare)
-        - AMOS PowerPacker Bank "PPbk" (data)
-        - RelokIt 1.0 (exe files ... rare)
-        Following formats wont be supported :
-        - TPWM Cruncher (Battle Isle - Blue Byte) - Unrippable
-        - Powerpacker 2.0 (PP20) data - Unrippable
-        - StoneCracker 4.04/3.10 (exe file) bcoz it contains a S404 data
-        - Propack RNC (exe files) (RNC data inside)
-        - IAM packer 1.0 too (exe files) (ICE! or ATM5 data inside)
-
-26021999        Version 1.43 (not released)
-
-        Module Protector and Heatseeker detections enhanced
-        (very look alike formats ..)
-        Fake ProPacker 3.0 were found ... corrected.
-        Fake UNIC tracker were found ... corrected.
-        Bad PP20 localisation corrected
-        Removed "converting to ptk" msg when ripping S404 files :)
-        Bug in Phapacker depacker corrected (still some job in there !)
-        Rewrote 20% of Promizer 1.8a depacker ... some problems with
-        the pattern list.
-        Many fake soundtracker were found ... removed a lot !.
-        Fake "damaged _TYPES_ file" error message corrected.
-        New filename when saving. alphabetical letters proved to be not
-        enough for some productions ... so, now, it's numbers !. (max:99999999)
-        good job to code that coz my sources were a bit shitty :)
-        New supported (EXE) format :
-        - Tetrapack 2.2/2.1 (Exe-files, not music file)
-        - Crunchmania / Crunchmania Normal (packed data files)
-        - Defjam Cruncher 3.2 / 3.2 pro (Exe-files)
-        - Stonecracker 4.01 / 4.03 / 3.10 (data)
-        - Byte Killer 1.3 (Exe-files)
-        - XPK-ed files (any format since it's all the same to get the size :)
-        - Imploder (data)
-
-13061998        Version 1.42 (not released)
-
-        Protracker detection bug corrected
-        New supported format :
-        - SoundTracker (15 samples)
-
-20051998        Version 1.41 (20/05/98)
-        Save names not incrementing first letter when
-        ripping "not to be converted files" bug corrected
-        (e.g. PTK,BP,STC,StarTK)
-        New supported format :
-        - STIM (Slamtilt)
-
-22021998        Version 1.40
-
-        SIGSEGV error corrected (bad compiler option).
-        Digital Illusion detection bug corrected.
-        Game Music Creator detection bug corrected.
-        NoisePacker v1 detection bug corrected.
-        ProPacker v1 detection bug corrected.
-        UNIC tracker 2 detection bug corrected.
-        XANN packer detection bug corrected (Grrrr).
-        New depackers added  (all in fact :) :
-        - AC1D packer
-        - Digital Illusion
-        - Eureka packer
-        - FC-M packer
-        - Fuzzac packer
-        - Game Music Creator
-        - Heatseeker mc1.0
-        - Hornet packer
-        - Kris tracker (chip tracker)
-        - Kefrens Sound Machine
-        - Module Protector
-        - Noiserunner
-        - NoisePacker v1,v2 & v3
-        - The Player 4.0A,4.0B,4.1A,5.0A,6.0A & 6.1A
-        - PhaPacker
-        - Promizer 0.1,1.0c,1.8a,2.0,4.0
-        - Power Music
-        - ProPacker 1.0,2.1,3.0
-        - ProRunner v1,v2
-        - SKYT packer
-        - StarTrekker pack
-        - Tracker packer v1,v2,v3
-        - UNIC tracker v1,v2
-        - Wanton packer
-        - XANN packer
-        - ZEN packer
-
-15021998        Version 1.31 (not released)
-
-        Enhanced tests for GMC modules.
-        Enhanced tests for Digital Illusion modules.
-        Enhanced tests for Eureka Packer modules.
-        Enhanced tests for UNIC 1/2 tracker modules.
-        P50A samples can be delta !!!. Argh (corrected).
-        P60A with packed samples cant be ripped for I dont know
-        how to calculate the packed sample sizes.
-        some P50A and P60A where not found bcoz of a lame test.
-        New supported formats :
-        - StarTrekker
-        - StoneCracker v4.04 Data (not a music file !!!)
-        - The Player 6.1A (yep !)
-
-21011998        Version 1.3 (not released)
-
-        Complete rewrite of the package.
-        Enhanced tests for the XANN packer ... again (*SIGH*)
-        Added some sort of counter to display where we are in the file.
-        Somehow, it's useless but it tells the user the prog did not hang :),
-        the bad news is that it slows down a bit the prog :( ... and it's
-        ugly !. I'll try to do better sometime later.
-        New supported formats :
-        - Fuzzac packer
-        - Game Music Creator
-        - Heatseeker mc1.0
-        - Kefrens Sound Machine
-        - Noiserunner
-        - NoisePacker v1
-        - NoisePacker v2
-        - NoisePacker v3
-        - Promizer 4.0
-        - ProPacker v1.0
-        - The Player v4.0A
-        - The Player v4.0B
-        - The Player v4.1A
-        - The Player v5.0A
-        - The Player v6.0A
-        - Tracker Packer v1
-        - Tracker Packer v2
-        - Tracker Packer v3
-        - Zen Packer
-
-12111997        Version 1.2 (not released)
-
-        New supported formats :
-        - UNIC tracker v1
-        - UNIC tracker v2
-        - Protracker (forgot it :).
-
-11111997        Version 1.1 (not released)
-
-        SoundMon size calculation bug corrected (synth smp ..)
-        Enhanced tests for the XANN packer.
-        Added the possibility to edit the default extensions.
-        New supported formats :
-        - AC1D packer
-        - Digital Illusion
-        - Eureka packer
-        - Module protector
-        - Pha packer
-        - Promizer v0.1
-        - ProPacker v2.1
-        - ProPacker v3.0
-        - StarTrekker pack
-
-09111997        Version 1.0 (09/11/97)
-        First version (not released).
diff --git a/prowizard/makefile b/prowizard/makefile
deleted file mode 100755 (executable)
index 4fde918..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-# Makefile for Pro-Wizard 1 (for PeeCee)
-# copyright 1997-2005 Sylvain "asle" Chipaux
-#
-# add -DINCLUDEALL in the '.c.o' case for a compilation with the binaries rippers
-# and type 'make' or 'make prowiz'
-#
-# 'make simple' to compile w/o binaries rippers.
-
-CFLAGS = -O6 -Wall -mpentiumpro -I/usr/local/include \
-       -Wshadow -Wcast-align -Wstrict-prototypes \
-       -Wmissing-prototypes -Wredundant-decls -Wnested-externs
-
-CC = gcc
-
-OFILESWOPACKER = prowiz.o \
-       rippers/AC1D_packer.o rippers/AMOS-MusicBank.o rippers/BP-Soundmonitor.o rippers/BSI-FutureComposer.o rippers/ChipTracker.o rippers/DigiBooster17.o rippers/DigitalIllusion.o rippers/EurekaPacker.o rippers/FC-M-Packer.o rippers/FastTracker2.o rippers/FuchsTracker.o rippers/FutureComposer13.o rippers/FutureComposer14.o rippers/FuzzacPacker.o rippers/GPMO.o rippers/GameMusicCreator.o rippers/GnuPlayer.o rippers/HeatseekerMC10.o rippers/HornetPacker.o rippers/JamCracker.o rippers/KefrensSoundMachine.o rippers/MED-Octamed.o rippers/MOD-compatible.o rippers/ModuleProtector.o rippers/Newtron.o rippers/NoiseFromHeaven.o rippers/NoisePacker1.o rippers/NoisePacker2.o rippers/NoisePacker3.o rippers/NoiseRunner.o rippers/PhaPacker.o rippers/PolkaPacker.o rippers/PowerMusic.o rippers/ProPacker10.o rippers/ProPacker21.o rippers/ProPacker30.o rippers/Promizer01.o rippers/Promizer10c.o rippers/Promizer18a.o rippers/Promizer20.o rippers/Promizer40.o rippers/Prorunner10.o rippers/Prorunner20.o rippers/QuadraComposer.o rippers/SkytPacker.o rippers/SoundFX.o rippers/SoundTracker.o rippers/SoundTracker26.o rippers/StartrekkerPack.o rippers/StimPacker.o rippers/TMK.o rippers/TheDarkDemon.o rippers/ThePlayer22a.o rippers/ThePlayer30a.o rippers/ThePlayer40.o rippers/ThePlayer41a.o rippers/ThePlayer50a.o rippers/ThePlayer60a.o rippers/ThePlayer61a.o rippers/TrackerPacker1.o rippers/TrackerPacker2.o rippers/TrackerPacker3.o rippers/UnicTracker.o rippers/UnicTracker2.o rippers/WantonPacker.o rippers/XannPlayer.o rippers/ZenPacker.o \
-       misc/misc.o misc/testbag.o
-OFILESALL = prowiz.o \
-       rippers/AC1D_packer.o rippers/AMOS-MusicBank.o rippers/BP-Soundmonitor.o rippers/BSI-FutureComposer.o rippers/ChipTracker.o rippers/DigiBooster17.o rippers/DigitalIllusion.o rippers/EurekaPacker.o rippers/FC-M-Packer.o rippers/FastTracker2.o rippers/FuchsTracker.o rippers/FutureComposer13.o rippers/FutureComposer14.o rippers/FuzzacPacker.o rippers/GPMO.o rippers/GameMusicCreator.o rippers/GnuPlayer.o rippers/HeatseekerMC10.o rippers/HornetPacker.o rippers/JamCracker.o rippers/KefrensSoundMachine.o rippers/MED-Octamed.o rippers/MOD-compatible.o rippers/ModuleProtector.o rippers/Newtron.o rippers/NoiseFromHeaven.o rippers/NoisePacker1.o rippers/NoisePacker2.o rippers/NoisePacker3.o rippers/NoiseRunner.o rippers/PhaPacker.o rippers/PolkaPacker.o rippers/PowerMusic.o rippers/ProPacker10.o rippers/ProPacker21.o rippers/ProPacker30.o rippers/Promizer01.o rippers/Promizer10c.o rippers/Promizer18a.o rippers/Promizer20.o rippers/Promizer40.o rippers/Prorunner10.o rippers/Prorunner20.o rippers/QuadraComposer.o rippers/SkytPacker.o rippers/SoundFX.o rippers/SoundTracker.o rippers/SoundTracker26.o rippers/StartrekkerPack.o rippers/StimPacker.o rippers/TMK.o rippers/TheDarkDemon.o rippers/ThePlayer22a.o rippers/ThePlayer30a.o rippers/ThePlayer40.o rippers/ThePlayer41a.o rippers/ThePlayer50a.o rippers/ThePlayer60a.o rippers/ThePlayer61a.o rippers/TrackerPacker1.o rippers/TrackerPacker2.o rippers/TrackerPacker3.o rippers/UnicTracker.o rippers/UnicTracker2.o rippers/WantonPacker.o rippers/XannPlayer.o rippers/ZenPacker.o \
-       rippers/AMOS-PowerPackerBank.o rippers/Bytekiller.o rippers/Crunchmania-Address.o rippers/DefjamCruncher32-pro.o rippers/DoubleAction.o rippers/Dragpack100.o rippers/Dragpack252.o rippers/HQC2.o rippers/MasterCruncher30-Address.o rippers/MaxPacker12.o rippers/MegaCruncher-Object.o rippers/MegaCruncher.o rippers/PowerPacker23.o rippers/PowerPacker30.o rippers/PowerPacker40-library.o rippers/PowerPacker40.o rippers/RelokIt10.o rippers/SpikeCruncher.o rippers/StoneCracker270.o rippers/StoneCracker299.o rippers/StoneCracker299b.o rippers/StoneCracker299d.o rippers/StoneCracker300.o rippers/StoneCracker310.o rippers/SuperCruncher27.o rippers/SyncroPacker46.o rippers/TNMCruncher.o rippers/TetraPack102.o rippers/TetraPack21.o rippers/TetraPack22.o rippers/TimeCruncher17.o rippers/TryItCruncher101.o rippers/TurboSqueezer61.o rippers/datacrunchers.o \
-       misc/misc.o misc/testbag.o
-
-EXEFILE = prowiz.exe
-
-# add -DINCLUDEALL here for a compilation with the binaries rippers
-.c.o:
-       $(CC) -DUNIX -DINCLUDEALL $(CFLAGS) -c $< -o $@
-
-all:   prowiz
-
-simple:        prowiz_wo_packer
-
-prowiz:        $(OFILESALL)
-       $(CC) -o $(EXEFILE) -L/usr/local/lib -ldmalloc $(OFILESALL) 
-
-prowiz_wo_packer:      $(OFILESWOPACKER)
-       $(CC) -o $(EXEFILE) -L/usr/local/lib -ldmalloc $(OFILESWOPACKER)
-
-# 
-clean: clear
-       rm -f *.o
-       rm -f rippers/*.o
-       rm -f misc/*.o
-       rm -f core *.core
-
-#
-clear:
-       rm -f *~ *.*~ rippers/*~ rippers/*.*~ misc/*~ misc/*.*~ include/*~ include/*.*~ *.i *.s
diff --git a/prowizard/makefile.amiga b/prowizard/makefile.amiga
deleted file mode 100755 (executable)
index 99c1bc5..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-# Makefile for Pro-Wizard 1 (for PeeCee)
-# copyright 1997-2005 Sylvain "asle" Chipaux
-# Amiga port (05/2002)
-
-CFLAGS = -Wall -m68020 -IGNU:include -Iinclude
-CC = gcc
-
-# 
-OFILES = prowiz.o \
-       rippers/AC1D_packer.o rippers/AMOS-MusicBank.o rippers/BP-Soundmonitor.o rippers/BSI-FutureComposer.o rippers/ChipTracker.o rippers/DigiBooster17.o rippers/DigitalIllusion.o rippers/EurekaPacker.o rippers/FC-M-Packer.o rippers/FastTracker2.o rippers/FuchsTracker.o rippers/FutureComposer13.o rippers/FutureComposer14.o rippers/FuzzacPacker.o rippers/GPMO.o rippers/GameMusicCreator.o rippers/GnuPlayer.o rippers/HeatseekerMC10.o rippers/HornetPacker.o rippers/JamCracker.o rippers/KefrensSoundMachine.o rippers/MED-Octamed.o rippers/MOD-compatible.o rippers/ModuleProtector.o rippers/Newtron.o rippers/NoiseFromHeaven.o rippers/NoisePacker1.o rippers/NoisePacker2.o rippers/NoisePacker3.o rippers/NoiseRunner.o rippers/PhaPacker.o rippers/PolkaPacker.o rippers/PowerMusic.o rippers/ProPacker10.o rippers/ProPacker21.o rippers/ProPacker30.o rippers/Promizer01.o rippers/Promizer10c.o rippers/Promizer18a.o rippers/Promizer20.o rippers/Promizer40.o rippers/Prorunner10.o rippers/Prorunner20.o rippers/QuadraComposer.o rippers/SkytPacker.o rippers/SoundFX.o rippers/SoundTracker.o rippers/SoundTracker26.o rippers/StartrekkerPack.o rippers/StimPacker.o rippers/TMK.o rippers/TheDarkDemon.o rippers/ThePlayer22a.o rippers/ThePlayer30a.o rippers/ThePlayer40.o rippers/ThePlayer41a.o rippers/ThePlayer50a.o rippers/ThePlayer60a.o rippers/ThePlayer61a.o rippers/TrackerPacker1.o rippers/TrackerPacker2.o rippers/TrackerPacker3.o rippers/UnicTracker.o rippers/UnicTracker2.o rippers/WantonPacker.o rippers/XannPlayer.o rippers/ZenPacker.o \
-       rippers/AMOS-PowerPackerBank.o rippers/Bytekiller.o rippers/Crunchmania-Address.o rippers/DefjamCruncher32-pro.o rippers/DoubleAction.o rippers/Dragpack100.o rippers/Dragpack252.o rippers/HQC2.o rippers/MasterCruncher30-Address.o rippers/MaxPacker12.o rippers/MegaCruncher-Object.o rippers/MegaCruncher.o rippers/PowerPacker23.o rippers/PowerPacker30.o rippers/PowerPacker40-library.o rippers/PowerPacker40.o rippers/RelokIt10.o rippers/SpikeCruncher.o rippers/StoneCracker270.o rippers/StoneCracker299.o rippers/StoneCracker299b.o rippers/StoneCracker299d.o rippers/StoneCracker300.o rippers/StoneCracker310.o rippers/SuperCruncher27.o rippers/SyncroPacker46.o rippers/TNMCruncher.o rippers/TetraPack102.o rippers/TetraPack21.o rippers/TetraPack22.o rippers/TimeCruncher17.o rippers/TryItCruncher101.o rippers/TurboSqueezer61.o rippers/datacrunchers.o \
-       misc/misc.o misc/testbag.o
-
-EXEFILE = prowiz.exe
-
-.c.o:
-       $(CC) -DUNIX $(CFLAGS) -c $< -o zob:pr/$@
-
-prowiz:        $(OFILES)
-       $(CC) -o $(EXEFILE) $(OFILES) 
-
-# 
-clean: clear
-       rm -f *.o
-       rm -f rippers/*.o
-       rm -f misc/*.o
-       rm -f core *.core
-
-#
-clear:
-       rm -f *~ *.*~ rippers/*~ rippers/*.*~ misc/*~ misc/*.*~ include/*~ include/*.*~ 
diff --git a/prowizard/makefile.mingwin32 b/prowizard/makefile.mingwin32
deleted file mode 100755 (executable)
index 04a8665..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-# Makefile for Pro-Wizard 1 (for PeeCee)
-# copyright 1997-2005 Sylvain "asle" Chipaux
-# Fixed for MinGWin32 by Xigh !... Thx
-
-CFLAGS = -O6 -Wall -march=pentiumpro -Iinclude
-CC = gcc
-
-#
-
-OFILESWOPACKER = prowiz.o \
-       rippers/AC1D_packer.o rippers/AMOS-MusicBank.o rippers/BP-Soundmonitor.o rippers/BSI-FutureComposer.o rippers/ChipTracker.o rippers/DigiBooster17.o rippers/DigitalIllusion.o rippers/EurekaPacker.o rippers/FC-M-Packer.o rippers/FastTracker2.o rippers/FuchsTracker.o rippers/FutureComposer13.o rippers/FutureComposer14.o rippers/FuzzacPacker.o rippers/GPMO.o rippers/GameMusicCreator.o rippers/GnuPlayer.o rippers/HeatseekerMC10.o rippers/HornetPacker.o rippers/JamCracker.o rippers/KefrensSoundMachine.o rippers/MED-Octamed.o rippers/MOD-compatible.o rippers/ModuleProtector.o rippers/Newtron.o rippers/NoiseFromHeaven.o rippers/NoisePacker1.o rippers/NoisePacker2.o rippers/NoisePacker3.o rippers/NoiseRunner.o rippers/PhaPacker.o rippers/PolkaPacker.o rippers/PowerMusic.o rippers/ProPacker10.o rippers/ProPacker21.o rippers/ProPacker30.o rippers/Promizer01.o rippers/Promizer10c.o rippers/Promizer18a.o rippers/Promizer20.o rippers/Promizer40.o rippers/Prorunner10.o rippers/Prorunner20.o rippers/QuadraComposer.o rippers/SkytPacker.o rippers/SoundFX.o rippers/SoundTracker.o rippers/SoundTracker26.o rippers/StartrekkerPack.o rippers/StimPacker.o rippers/TMK.o rippers/TheDarkDemon.o rippers/ThePlayer22a.o rippers/ThePlayer30a.o rippers/ThePlayer40.o rippers/ThePlayer41a.o rippers/ThePlayer50a.o rippers/ThePlayer60a.o rippers/ThePlayer61a.o rippers/TrackerPacker1.o rippers/TrackerPacker2.o rippers/TrackerPacker3.o rippers/UnicTracker.o rippers/UnicTracker2.o rippers/WantonPacker.o rippers/XannPlayer.o rippers/ZenPacker.o \
-       misc/misc.o misc/testbag.o
-OFILESALL = prowiz.o \
-       rippers/AC1D_packer.o rippers/AMOS-MusicBank.o rippers/BP-Soundmonitor.o rippers/BSI-FutureComposer.o rippers/ChipTracker.o rippers/DigiBooster17.o rippers/DigitalIllusion.o rippers/EurekaPacker.o rippers/FC-M-Packer.o rippers/FastTracker2.o rippers/FuchsTracker.o rippers/FutureComposer13.o rippers/FutureComposer14.o rippers/FuzzacPacker.o rippers/GPMO.o rippers/GameMusicCreator.o rippers/GnuPlayer.o rippers/HeatseekerMC10.o rippers/HornetPacker.o rippers/JamCracker.o rippers/KefrensSoundMachine.o rippers/MED-Octamed.o rippers/MOD-compatible.o rippers/ModuleProtector.o rippers/Newtron.o rippers/NoiseFromHeaven.o rippers/NoisePacker1.o rippers/NoisePacker2.o rippers/NoisePacker3.o rippers/NoiseRunner.o rippers/PhaPacker.o rippers/PolkaPacker.o rippers/PowerMusic.o rippers/ProPacker10.o rippers/ProPacker21.o rippers/ProPacker30.o rippers/Promizer01.o rippers/Promizer10c.o rippers/Promizer18a.o rippers/Promizer20.o rippers/Promizer40.o rippers/Prorunner10.o rippers/Prorunner20.o rippers/QuadraComposer.o rippers/SkytPacker.o rippers/SoundFX.o rippers/SoundTracker.o rippers/SoundTracker26.o rippers/StartrekkerPack.o rippers/StimPacker.o rippers/TMK.o rippers/TheDarkDemon.o rippers/ThePlayer22a.o rippers/ThePlayer30a.o rippers/ThePlayer40.o rippers/ThePlayer41a.o rippers/ThePlayer50a.o rippers/ThePlayer60a.o rippers/ThePlayer61a.o rippers/TrackerPacker1.o rippers/TrackerPacker2.o rippers/TrackerPacker3.o rippers/UnicTracker.o rippers/UnicTracker2.o rippers/WantonPacker.o rippers/XannPlayer.o rippers/ZenPacker.o \
-       rippers/AMOS-PowerPackerBank.o rippers/Bytekiller.o rippers/Crunchmania-Address.o rippers/DefjamCruncher32-pro.o rippers/DoubleAction.o rippers/Dragpack100.o rippers/Dragpack252.o rippers/HQC2.o rippers/MasterCruncher30-Address.o rippers/MaxPacker12.o rippers/MegaCruncher-Object.o rippers/MegaCruncher.o rippers/PowerPacker23.o rippers/PowerPacker30.o rippers/PowerPacker40-library.o rippers/PowerPacker40.o rippers/RelokIt10.o rippers/SpikeCruncher.o rippers/StoneCracker270.o rippers/StoneCracker299.o rippers/StoneCracker299b.o rippers/StoneCracker299d.o rippers/StoneCracker300.o rippers/StoneCracker310.o rippers/SuperCruncher27.o rippers/SyncroPacker46.o rippers/TNMCruncher.o rippers/TetraPack102.o rippers/TetraPack21.o rippers/TetraPack22.o rippers/TimeCruncher17.o rippers/TryItCruncher101.o rippers/TurboSqueezer61.o rippers/datacrunchers.o \
-       misc/misc.o misc/testbag.o
-
-EXEFILE = prowiz.exe
-
-# add -DINCLUDEALL here for a compilation with the binaries rippers
-.c.o:
-       $(CC) -DDOS $(CFLAGS) -c $< -o $@
-
-prowiz:        $(OFILES)
-       $(CC) -o $(EXEFILE) $(OFILES)
-
-#
-clean: clear
-       -CMD /c "DEL /F /Q *.o"
-       -CMD /c "DEL /F /Q rippers\*.o"
-       -CMD /c "DEL /F /Q misc\*.o"
-       -CMD /c "DEL /F /Q core"
-
-#
-clear:
-       -CMD /c "DEL /F /Q *.*~"
-       -CMD /c "DEL /F /Q rippers\*~"
-       -CMD /c "DEL /F /Q rippers\*.*~"
-       -CMD /c "DEL /F /Q misc\*~"
-       -CMD /c "DEL /F /Q misc\*.*~"
-       -CMD /c "DEL /F /Q include\*~"
-       -CMD /c "DEL /F /Q include\*.*~"
index 512d2f72cb7b6b40ecf241eb7837ddf9f907ff2d..a5ef7e7c6d14314ca092c46f540a3120ae483ca4 100755 (executable)
@@ -7,6 +7,7 @@ extern void write_log (const char *, ...);
  *  at now, when this fonction is called, no global var has been used ...
  * and can be here :). (save for the input file pointer ...)
 */
+#if 0
 void Support_Types ( void )
 {
   long types_file_size, cpt;
@@ -26,7 +27,7 @@ void Support_Types ( void )
   }
 
   /* get "_TYPES_" size */
-  types_file_size = GetFileSizeX ( _TYPES_FILENAME );
+  types_file_size = PWGetFileSize ( _TYPES_FILENAME );
   fseek ( types_file , 0 , 0 ); /* just to be sure. put the fp back at the beginning */
 
   PW_i = 0;  /* will inc up to _KNOWN_FORMATS */
@@ -65,6 +66,7 @@ void Support_Types ( void )
 
   fclose ( types_file );
 }
+#endif
 
 /*Uchar *XighExtensions[_KNOWN_FORMATS+1];*/
 
@@ -204,12 +206,16 @@ void Support_Types_FileDefault ( void )
   strcpy ( Extensions[122], "DragPack100" );
   strcpy ( Extensions[123], "SPv3" );
   strcpy ( Extensions[124], "AtomikPackerData" );
-  strcpy ( Extensions[125], "---" );
+  strcpy ( Extensions[125], "AutomationPackerData" );
+  //  strcpy ( Extensions[125], "TreasurePattern" );
+  strcpy ( Extensions[126], "SGTPacker" );
+  strcpy ( Extensions[127], "GNUPacker12" );
+  strcpy ( Extensions[128], "CrunchmaniaSimple" );
+  strcpy ( Extensions[129], "dmu" );
+  strcpy ( Extensions[130], "---" );
 }
 
 
-
-
 /*
  * saving what's found. Mainly music file here.
  * PW_Start_Address & OutputSize are global .. not everybody likes
index f76df8ac70379d7e75c33b0d59917e533c00596f..03f08f1d4828963edc1231297f08eea71580038e 100755 (executable)
@@ -1,27 +1,14 @@
 /*
  * Pro-Wizard_1.c
  *
- * 1997-2005 (c) Sylvain "Asle" Chipaux
+ * 1997-2006 (c) Sylvain "Asle" Chipaux
  *
 */
 
-#ifdef DOS
-#include "include\globals.h"
-#include "include\extern.h"
-#include "include\vars.h"
-#endif
-
-
-#ifdef UNIX
 #include "rippers/globals.h"
 #include "rippers/extern.h"
 #include "rippers/vars.h"
-#if 0
-#include "include/globals.h"
-#include "include/extern.h"
-#include "include/vars.h"
-#endif
-#endif
+
 
 #if 0
 int main ( int ac , char **av )
@@ -29,12 +16,11 @@ int main ( int ac , char **av )
 int prowizard_search (Uchar *in_data_p, int PW_in_size_p)
 #endif
 {
-  Support_Types ();
+  Support_Types_FileDefault ();
   in_data = in_data_p;
   PW_in_size = PW_in_size_p;
-
 #if 0
-  printf ( "\n\n-<([ Pro-Wizard v1.6 ])>-\n\n" );
+  printf ( "\n\n-<([ Pro-Wizard v1.61a ])>-\n\n" );
 
   if ( ac != 2 )
   {
@@ -55,7 +41,7 @@ int prowizard_search (Uchar *in_data_p, int PW_in_size_p)
   /*printf ( "%x,%x,%x\n" , Extensions[70][0], Extensions[70][1], Extensions[70][2] );*/
 
   /* get input file size */
-  PW_in_size = GetFileSizeX (av[1]);
+  PW_in_size = PWGetFileSize (av[1]);
   fseek ( PW_in , 0 , 0 ); /* probably useless */
   printf ( "input file size : %ld\n" , PW_in_size );
   if ( PW_in_size < MINIMAL_FILE_LENGHT )
@@ -79,7 +65,7 @@ int prowizard_search (Uchar *in_data_p, int PW_in_size_p)
   /********************************************************************/
   /**************************   SEARCH   ******************************/
   /********************************************************************/
-  for ( (long)PW_i=0 ; (long)PW_i<(PW_in_size-MINIMAL_FILE_LENGHT) ; (long)PW_i+=1 )
+  for ( PW_i=0 ; PW_i<(PW_in_size-MINIMAL_FILE_LENGHT) ; PW_i+=1 )
   {
     /* display where we are every 10 Kbytes */
     /*    if ( (PW_i%10240) == 0 )*/
@@ -115,7 +101,7 @@ int prowizard_search (Uchar *in_data_p, int PW_in_size_p)
        }
       }
 
-      /* first, let's take care of the formats with 'ID' value < 0x40 */
+      /* first, let's take care of the formats with 'ID' value <= 0x40 */
       /* "!PM!" : ID of Power Music */
       if ( (in_data[PW_i]   == '!') &&
            (in_data[PW_i+1] == 'P') &&
@@ -129,6 +115,19 @@ int prowizard_search (Uchar *in_data_p, int PW_in_size_p)
           continue;
         }
       }
+      /* Treasure Patterns ?*/
+      /* 0x4000 : ID of Treasure Patterns ? not sure */
+      /*
+      if ( (in_data[PW_i]   == 0x00) )
+      {
+        if ( testTreasure() != BAD )
+        {
+          Rip_Treasure ();
+          Depack_Treasure ();
+          continue;
+        }
+      }
+      */
 #ifdef INCLUDEALL
       /* StoneCracker 2.92 data (ex-$08090A08 data cruncher) */
       if ( (in_data[PW_i]   == 0x08) &&
@@ -287,6 +286,15 @@ int prowizard_search (Uchar *in_data_p, int PW_in_size_p)
         continue;
       }
 
+      /* SGTPacker */
+      /*
+      if ( testSGT() != BAD )
+      {
+        Rip_SGT ();
+        Depack_SGT ();
+        continue;
+      }
+      */
       /* eureka packer */
       if ( testEUREKA() != BAD )
       {
@@ -764,8 +772,7 @@ int prowizard_search (Uchar *in_data_p, int PW_in_size_p)
              (in_data[PW_i+3] == 0x8C) &&
              (in_data[PW_i+4] == 0x4B) &&
              (in_data[PW_i+5] == 0xF9) &&
-             (in_data[PW_i+6] == 0x00) &&
-             ((in_data[PW_i+7] == 0xDF)||(in_data[PW_i+7] == 0x03)) )
+             (in_data[PW_i+6] == 0x00))
         {
           if ( testDefjam32() == BAD )
             break;
@@ -930,11 +937,27 @@ int prowizard_search (Uchar *in_data_p, int PW_in_size_p)
              (in_data[PW_i+14] == 0xD1 ) &&
              (in_data[PW_i+15] == 0xC1 ) )
         {
-          if ( testMegaCruncher12() != BAD )
-          {
-            Rip_MegaCruncher ();
+          if ( testMegaCruncher12() == BAD )
+           break;
+         Rip_MegaCruncher ();
+         break;
+        }
+
+        /* Double Action v1.0 */
+        if ( (in_data[PW_i+1]  == 0xF9 ) &&
+             (in_data[PW_i+2]  == 0x00 ) &&
+             (in_data[PW_i+3]  == 0xDF ) &&
+             (in_data[PW_i+137]== 0xAB ) &&
+             (in_data[PW_i+138]== 0xD1 ) &&
+             (in_data[PW_i+139]== 0xC0 ) &&
+             (in_data[PW_i+140]== 0xD3 ) &&
+             (in_data[PW_i+141]== 0xC0 ) &&
+             (in_data[PW_i+142]== 0x23 ) &&
+             (in_data[PW_i+143]== 0x20 ) )
+        {
+          if ( testDoubleAction10() == BAD )
             break;
-          }
+          Rip_DoubleAction10 ();
           break;
         }
 #endif
@@ -1176,6 +1199,52 @@ int prowizard_search (Uchar *in_data_p, int PW_in_size_p)
           continue;
         }
 
+        /* Crunchmania Address (another)*/
+        if ((in_data[PW_i+1] == 0xe7) &&
+           (in_data[PW_i+14] == 0x20) &&
+           (in_data[PW_i+15] == 0x4C) &&
+           (in_data[PW_i+16] == 0x47) &&
+           (in_data[PW_i+17] == 0xFA) &&
+           (in_data[PW_i+18] == 0x00) &&
+           (in_data[PW_i+19] == 0x0C) &&
+           (in_data[PW_i+24] == 0x51) &&
+           (in_data[PW_i+25] == 0xCF) &&
+           (in_data[PW_i+26] == 0xFF) &&
+           (in_data[PW_i+27] == 0xFC) &&
+           (in_data[PW_i+28] == 0x4E) &&
+           (in_data[PW_i+29] == 0xD0) &&
+           (in_data[PW_i+30] == 0x43) &&
+           (in_data[PW_i+31] == 0xF9) )
+        {
+          if ( testcrunchmaniaAddr() == BAD )
+            break;
+          Rip_CrunchmaniaAddr ();
+          continue;
+        }
+
+        /* Crunchmania Simple */
+        if ((in_data[PW_i+1] == 0xE7) &&
+           (in_data[PW_i+2] == 0xFF) &&
+           (in_data[PW_i+3] == 0xFF) &&
+           (in_data[PW_i+4] == 0x45) &&
+           (in_data[PW_i+5] == 0xFA) &&
+           (in_data[PW_i+6] == 0x01) &&
+           (in_data[PW_i+7] == 0x66) &&
+           (in_data[PW_i+8] == 0x22) &&
+           (in_data[PW_i+9] == 0x1A) &&
+           (in_data[PW_i+10] == 0x24) &&
+           (in_data[PW_i+11] == 0x1A) &&
+           (in_data[PW_i+12] == 0x22) &&
+           (in_data[PW_i+13] == 0x4A) &&
+           (in_data[PW_i+14] == 0x28) &&
+           (in_data[PW_i+15] == 0x7A) )
+       {
+          if ( testcrunchmaniaSimple() == BAD )
+            break;
+          Rip_CrunchmaniaSimple();
+          continue;
+        }
+
         /* RelokIt 1.0 */
         if ( (in_data[PW_i+1]  == 0xE7) &&
              (in_data[PW_i+2]  == 0xFF) &&
@@ -1281,6 +1350,28 @@ int prowizard_search (Uchar *in_data_p, int PW_in_size_p)
           Rip_Dragpack100 ();
           break;
         }
+        /* GNU Packer 1.2 */
+        if ( (in_data[PW_i+1]  == 0xE7) &&
+             (in_data[PW_i+2]  == 0xFF) &&
+             (in_data[PW_i+3]  == 0xFE) &&
+             (in_data[PW_i+4]  == 0x4B) &&
+             (in_data[PW_i+5]  == 0xFA) &&
+             (in_data[PW_i+6]  == 0x02) &&
+             (in_data[PW_i+7]  == 0x32) &&
+             (in_data[PW_i+8]  == 0x4D) &&
+             (in_data[PW_i+9]  == 0xFA) &&
+             (in_data[PW_i+10] == 0x02) &&
+             (in_data[PW_i+11] == 0x46) &&
+             (in_data[PW_i+12] == 0x20) &&
+             (in_data[PW_i+13] == 0x6D) &&
+             (in_data[PW_i+14] == 0x00) &&
+             (in_data[PW_i+15] == 0x0C) )
+        {
+          if ( testGNUPacker12() == BAD )
+            break;
+          Rip_GNUPacker12 ();
+          break;
+        }
 #endif
         break;
 
@@ -1963,6 +2054,18 @@ int prowizard_search (Uchar *in_data_p, int PW_in_size_p)
             break;
           }
         }
+       /* Mugician */
+        if ( ( in_data[PW_i+1] == 'G' ) &&
+             ( in_data[PW_i+2] == 'I' ) &&
+             ( in_data[PW_i+3] == 'C' ) )
+        {
+          /*  */
+          if ( testMUGICIAN() != BAD )
+          {
+            Rip_MUGICIAN ();
+            break;
+          }
+        }
         break;
 
       case 'V': /* "V.2" */
@@ -2239,20 +2342,6 @@ int prowizard_search (Uchar *in_data_p, int PW_in_size_p)
 #endif
        break;
 
-      case 0xA9:
-#ifdef INCLUDEALL
-        /* Double Action v1.0 */
-        if ( (in_data[PW_i+1] == ' ') &&
-             (in_data[PW_i+2] == 'B') )
-        {
-          if ( testDoubleAction10() == BAD )
-            break;
-          Rip_DoubleAction10 ();
-          break;
-        }
-#endif
-        break;
-
       case 0xAC:
           /* AC1D packer ?!? */
         if ( in_data[PW_i+1] == 0x1D )
@@ -2285,6 +2374,7 @@ int prowizard_search (Uchar *in_data_p, int PW_in_size_p)
 
     } /* end of switch */
   }
+
 #if 0
   free ( in_data );
   printf ( "\n" );
index 1fee2642c0039725a867cdfe4b13ef5fb015618b..6924504ec0968bef49370e5b94204e9e69004fdd 100755 (executable)
@@ -97,8 +97,6 @@ void Depack_AC1D ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   memset (Pattern_Addresses , 0 , 128*4);
   BZERO (Pattern_Sizes , 128*4);
index 2760cae5b872427f9aab995b1307f19b2b677f5a..ea3307040454064ff601ec404b0b66b89da83a04 100755 (executable)
@@ -84,8 +84,6 @@ void Depack_AmBk ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   fillPTKtable(poss);
 
index a4ada302717904e736a198e123e2a1f745f04be3..60b8dc4ef2717625ee4087b9324001bfe2822c60 100755 (executable)
@@ -108,8 +108,6 @@ void Depack_KRIS ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   fillPTKtable(poss);
 
index cae86a7c9978aff4705e3cc6e8c47ade75345149..082fb7bebbf22b1d48eac80ff831eed289c63ee9 100755 (executable)
@@ -7,62 +7,74 @@
 
 short testcrunchmaniaAddr ( void )
 {
-  PW_Start_Address = PW_i - 4;
-
-  if ( (in_data[PW_Start_Address+36] != 0x6F ) ||
-       (in_data[PW_Start_Address+37] != 0x14 ) ||
-       (in_data[PW_Start_Address+38] != 0x26 ) ||
-       (in_data[PW_Start_Address+39] != 0x4A ) ||
-       (in_data[PW_Start_Address+40] != 0x49 ) ||
-       (in_data[PW_Start_Address+41] != 0xE9 ) ||
-       (in_data[PW_Start_Address+46] != 0xE4 ) ||
-       (in_data[PW_Start_Address+47] != 0x8F ) ||
-       (in_data[PW_Start_Address+48] != 0x52 ) ||
-       (in_data[PW_Start_Address+49] != 0x87 ) ||
-       (in_data[PW_Start_Address+50] != 0x24 ) ||
-       (in_data[PW_Start_Address+51] != 0x4C ) ||
-       (in_data[PW_Start_Address+52] != 0x28 ) ||
-       (in_data[PW_Start_Address+53] != 0xDB ) ||
-       (in_data[PW_Start_Address+54] != 0x53 ) ||
-       (in_data[PW_Start_Address+55] != 0x87 ) ||
-       (in_data[PW_Start_Address+56] != 0x66 ) ||
-       (in_data[PW_Start_Address+57] != 0xFA ) )
-  {
-    /* should be enough :))) */
-    /*printf ( "#2 Start:%ld\n" , PW_Start_Address );*/
-    return BAD;
-    
+  /*PW_Start_Address = PW_i - 4;*/
+  PW_Start_Address = PW_i;
+
+  if ( (in_data[PW_Start_Address+32] != 0x6F ) ||
+       (in_data[PW_Start_Address+33] != 0x14 ) ||
+       (in_data[PW_Start_Address+34] != 0x26 ) ||
+       (in_data[PW_Start_Address+35] != 0x4A ) ||
+       (in_data[PW_Start_Address+36] != 0x49 ) ||
+       (in_data[PW_Start_Address+37] != 0xE9 ) ||
+       (in_data[PW_Start_Address+42] != 0xE4 ) ||
+       (in_data[PW_Start_Address+43] != 0x8F ) ||
+       (in_data[PW_Start_Address+44] != 0x52 ) ||
+       (in_data[PW_Start_Address+45] != 0x87 ) ||
+       (in_data[PW_Start_Address+46] != 0x24 ) ||
+       (in_data[PW_Start_Address+47] != 0x4C ) ||
+       (in_data[PW_Start_Address+48] != 0x28 ) ||
+       (in_data[PW_Start_Address+49] != 0xDB ) ||
+       (in_data[PW_Start_Address+50] != 0x53 ) ||
+       (in_data[PW_Start_Address+51] != 0x87 ) ||
+       (in_data[PW_Start_Address+52] != 0x66 ) ||
+       (in_data[PW_Start_Address+53] != 0xFA ) )
+  { /* another case ...*/
+    if ( (in_data[PW_Start_Address+36] != 0x22 ) ||
+        (in_data[PW_Start_Address+37] != 0x1A ) ||
+        (in_data[PW_Start_Address+38] != 0x24 ) ||
+        (in_data[PW_Start_Address+39] != 0x1A ) ||
+        (in_data[PW_Start_Address+40] != 0x47 ) ||
+        (in_data[PW_Start_Address+41] != 0xEA ) )
+    {
+      /* should be enough :))) */
+      /*printf ( "#2 Start:%ld\n" , PW_Start_Address );*/
+      return BAD;
+    }
   }
 
 
   /* packed size */
-  PW_l = ( (in_data[PW_Start_Address]*256*256*256) +
-           (in_data[PW_Start_Address+1]*256*256) +
-           (in_data[PW_Start_Address+2]*256) +
-           in_data[PW_Start_Address+3] );
+  PW_j = ( (in_data[PW_Start_Address+6]*256) +
+          in_data[PW_Start_Address+7] )+10;
+
+  PW_l = ( (in_data[PW_Start_Address+PW_j]*256*256*256) +
+          (in_data[PW_Start_Address+PW_j+1]*256*256) +
+          (in_data[PW_Start_Address+PW_j+2]*256) +
+          in_data[PW_Start_Address+PW_j+3] );
 
-  PW_l *= 4;
-  PW_l += 36;
+  PW_l += (40 + PW_j);
+  if ((PW_l%4) != 0)
+    PW_l += 2;
 
 
-  if ( PW_i >= 28 )
+  if ( PW_i >= 32 )
   {
-    if ( (in_data[PW_Start_Address-28]  != 0x00 ) ||
+    if ( (in_data[PW_Start_Address-32]  != 0x00 ) ||
+         (in_data[PW_Start_Address-31]  != 0x00 ) ||
+         (in_data[PW_Start_Address-30]  != 0x03 ) ||
+         (in_data[PW_Start_Address-29]  != 0xF3 ) ||
+         (in_data[PW_Start_Address-28]  != 0x00 ) ||
          (in_data[PW_Start_Address-27]  != 0x00 ) ||
-         (in_data[PW_Start_Address-26]  != 0x03 ) ||
-         (in_data[PW_Start_Address-25]  != 0xF3 ) ||
+         (in_data[PW_Start_Address-26]  != 0x00 ) ||
+         (in_data[PW_Start_Address-25]  != 0x00 ) ||
          (in_data[PW_Start_Address-24]  != 0x00 ) ||
          (in_data[PW_Start_Address-23]  != 0x00 ) ||
          (in_data[PW_Start_Address-22]  != 0x00 ) ||
-         (in_data[PW_Start_Address-21]  != 0x00 ) ||
+         (in_data[PW_Start_Address-21]  != 0x01 ) ||
          (in_data[PW_Start_Address-20]  != 0x00 ) ||
          (in_data[PW_Start_Address-19]  != 0x00 ) ||
          (in_data[PW_Start_Address-18]  != 0x00 ) ||
-         (in_data[PW_Start_Address-17]  != 0x01 ) ||
-         (in_data[PW_Start_Address-16]  != 0x00 ) ||
-         (in_data[PW_Start_Address-15]  != 0x00 ) ||
-         (in_data[PW_Start_Address-14]  != 0x00 ) ||
-         (in_data[PW_Start_Address-13]  != 0x00 ) )
+         (in_data[PW_Start_Address-17]  != 0x00 ) )
     {
       Amiga_EXE_Header = BAD;
     }
@@ -108,13 +120,12 @@ void Rip_CrunchmaniaAddr ( void )
     Amiga_EXE_Header_Block[21] = Amiga_EXE_Header_Block[29] = *(Whatever+2);
     Amiga_EXE_Header_Block[22] = Amiga_EXE_Header_Block[30] = *(Whatever+1);
     Amiga_EXE_Header_Block[23] = Amiga_EXE_Header_Block[31] = *Whatever;
-    PW_Start_Address += 4;
     Save_Rip_Special ( "Crunchmania Address Exe-file", CRM1, Amiga_EXE_Header_Block , 32 );
     free ( Amiga_EXE_Header_Block );
   }
   else
   {
-    PW_Start_Address -= 28;
+    PW_Start_Address -= 32;
     Save_Rip ( "Crunchmania Address Exe-file", CRM1 );
   }
   
diff --git a/prowizard/rippers/Crunchmania-Simple.c b/prowizard/rippers/Crunchmania-Simple.c
new file mode 100755 (executable)
index 0000000..18dfdac
--- /dev/null
@@ -0,0 +1,139 @@
+/* testcrunchmaniaSimple() */
+/* Rip_CrunchmaniaSimple() */
+
+#include "globals.h"
+#include "extern.h"
+
+
+short testcrunchmaniaSimple ( void )
+{
+  PW_Start_Address = PW_i;
+
+  if ( (in_data[PW_Start_Address+16] != 0xFF ) ||
+       (in_data[PW_Start_Address+17] != 0xEC ) ||
+       (in_data[PW_Start_Address+18] != 0xD9 ) ||
+       (in_data[PW_Start_Address+19] != 0xCC ) ||
+       (in_data[PW_Start_Address+20] != 0xD9 ) ||
+       (in_data[PW_Start_Address+21] != 0xCC ) ||
+       (in_data[PW_Start_Address+22] != 0x2A ) ||
+       (in_data[PW_Start_Address+23] != 0x49 ) ||
+       (in_data[PW_Start_Address+24] != 0xD3 ) ||
+       (in_data[PW_Start_Address+25] != 0xC1 ) ||
+       (in_data[PW_Start_Address+26] != 0xD5 ) ||
+       (in_data[PW_Start_Address+27] != 0xC2 ) ||
+       (in_data[PW_Start_Address+28] != 0x30 ) ||
+       (in_data[PW_Start_Address+29] != 0x22 ) ||
+       (in_data[PW_Start_Address+30] != 0x2C ) ||
+       (in_data[PW_Start_Address+31] != 0x22 ) ||
+       (in_data[PW_Start_Address+32] != 0x7E ) ||
+       (in_data[PW_Start_Address+33] != 0x10 ) )
+  {
+    return BAD;
+  }
+
+
+  /* packed size */
+  PW_l = ( (in_data[PW_Start_Address+368]*256*256*256) +
+          (in_data[PW_Start_Address+369]*256*256) +
+          (in_data[PW_Start_Address+370]*256) +
+          in_data[PW_Start_Address+371] );
+
+  PW_l += 422;
+
+  if ( PW_i >= 36 )
+  {
+    if ( (in_data[PW_Start_Address-32]  != 0x00 ) ||
+         (in_data[PW_Start_Address-31]  != 0x00 ) ||
+         (in_data[PW_Start_Address-30]  != 0x03 ) ||
+         (in_data[PW_Start_Address-29]  != 0xF3 ) ||
+         (in_data[PW_Start_Address-28]  != 0x00 ) ||
+         (in_data[PW_Start_Address-27]  != 0x00 ) ||
+         (in_data[PW_Start_Address-26]  != 0x00 ) ||
+         (in_data[PW_Start_Address-25]  != 0x00 ) ||
+         (in_data[PW_Start_Address-24]  != 0x00 ) ||
+         (in_data[PW_Start_Address-23]  != 0x00 ) ||
+         (in_data[PW_Start_Address-22]  != 0x00 ) ||
+         (in_data[PW_Start_Address-21]  != 0x02 ) ||
+         (in_data[PW_Start_Address-20]  != 0x00 ) ||
+         (in_data[PW_Start_Address-19]  != 0x00 ) ||
+         (in_data[PW_Start_Address-18]  != 0x00 ) ||
+         (in_data[PW_Start_Address-17]  != 0x00 ) )
+    {
+      Amiga_EXE_Header = BAD;
+    }
+    else
+      Amiga_EXE_Header = GOOD;
+  }
+  else
+    Amiga_EXE_Header = BAD;
+
+  return GOOD;
+  /* PW_l is the size of the pack */
+}
+
+
+void Rip_CrunchmaniaSimple ( void )
+{
+  /* PW_l is still the whole size */
+
+  Uchar * Amiga_EXE_Header_Block;
+  Uchar * Whatever;
+
+  OutputSize = PW_l;
+
+  CONVERT = BAD;
+
+  if ( Amiga_EXE_Header == BAD )
+  {
+    /* packed size */
+    PW_n = ( (in_data[PW_Start_Address+364]*256*256*256) +
+            (in_data[PW_Start_Address+365]*256*256) +
+            (in_data[PW_Start_Address+366]*256) +
+            in_data[PW_Start_Address+367] );
+
+    OutputSize -= 36;
+    Amiga_EXE_Header_Block = (Uchar *) malloc ( 36 );
+    BZERO ( Amiga_EXE_Header_Block , 36 );
+    Amiga_EXE_Header_Block[2]  = Amiga_EXE_Header_Block[30] = 0x03;
+    Amiga_EXE_Header_Block[3]  = 0xF3;
+    Amiga_EXE_Header_Block[19] = 0x01;
+    Amiga_EXE_Header_Block[31] = 0xE9;
+
+    Amiga_EXE_Header_Block[24] = 0x40;
+    Amiga_EXE_Header_Block[25] = in_data[PW_Start_Address+361];
+    Amiga_EXE_Header_Block[26] = in_data[PW_Start_Address+362];
+    Amiga_EXE_Header_Block[27] = in_data[PW_Start_Address+363];
+
+    /* WARNING !!! WORKS ONLY ON PC !!!       */
+    /* 68k machines code : c1 = *(Whatever+2); */
+    /* 68k machines code : c2 = *(Whatever+3); */
+    PW_j = PW_l - 48;
+    PW_j /= 4;
+    Whatever = (Uchar *) &PW_j;
+    Amiga_EXE_Header_Block[32] = *(Whatever+3);
+    Amiga_EXE_Header_Block[33] = *(Whatever+2);
+    Amiga_EXE_Header_Block[34] = *(Whatever+1);
+    Amiga_EXE_Header_Block[35] = *Whatever;
+
+    if ((PW_n%4) != 0)
+      PW_n += 2;
+    PW_n += 372;
+    PW_n /= 4;
+    Whatever = (Uchar *) &PW_n;
+    Amiga_EXE_Header_Block[20] = *(Whatever+3);
+    Amiga_EXE_Header_Block[21] = *(Whatever+2);
+    Amiga_EXE_Header_Block[22] = *(Whatever+1);
+    Amiga_EXE_Header_Block[23] = *Whatever;
+
+    Save_Rip_Special ( "Crunchmania Simple Exe-file", CrunchmaniaSimple, Amiga_EXE_Header_Block , 36 );
+    free ( Amiga_EXE_Header_Block );
+  }
+  else
+  {
+    PW_Start_Address -= 36;
+    Save_Rip ( "Crunchmania Simple Exe-file", CrunchmaniaSimple );
+  }
+  
+  if ( Save_Status == GOOD )
+    PW_i += 0x66; /* after detection sequence */
+}
index 961e281c72279af02ad690fd5f0533f57bcbc0b3..a41fc56c91a6f8486c144d8ce981f78c21085c68 100755 (executable)
@@ -185,8 +185,6 @@ void Depack_DI ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   fillPTKtable(poss);
 
index bfb066f6e23ac400a202447076e7e2bae9246897..82bcd7455de633ab84062533e2d42112d83fb96b 100755 (executable)
@@ -7,30 +7,9 @@
 
 short testDoubleAction10 ( void )
 {
-  if ( PW_i < 123 )
-  {
-/*printf ( "#1\n" );*/
-    return BAD;
-  }
-  PW_Start_Address = PW_i-123;
-
-  if ( (in_data[PW_Start_Address+8]  != 0x47 ) ||
-       (in_data[PW_Start_Address+9]  != 0xF9 ) ||
-       (in_data[PW_Start_Address+10] != 0x00 ) ||
-       (in_data[PW_Start_Address+11] != 0xDF ) ||
-       (in_data[PW_Start_Address+12] != 0xF0 ) ||
-       (in_data[PW_Start_Address+13] != 0x00 ) ||
-       (in_data[PW_Start_Address+14] != 0x37 ) ||
-       (in_data[PW_Start_Address+15] != 0x7C ) ||
-       (in_data[PW_Start_Address+18] != 0x00 ) ||
-       (in_data[PW_Start_Address+19] != 0x9A ) ||
-       (in_data[PW_Start_Address+26] != 0x43 ) ||
-       (in_data[PW_Start_Address+27] != 0xF9 ) ||
-       (in_data[PW_Start_Address+28] != 0x00 ) ||
-       (in_data[PW_Start_Address+29] != 0xBF ) ||
-       (in_data[PW_Start_Address+30] != 0xD1 ) ||
-       (in_data[PW_Start_Address+31] != 0x00 ) ||
-       (in_data[PW_Start_Address+32] != 0x12 ) ||
+  PW_Start_Address = PW_i;
+
+  if ( (in_data[PW_Start_Address+32] != 0x12 ) ||
        (in_data[PW_Start_Address+33] != 0xBC ) ||
        (in_data[PW_Start_Address+34] != 0x00 ) ||
        (in_data[PW_Start_Address+35] != 0xFD ) )
@@ -43,35 +22,38 @@ short testDoubleAction10 ( void )
 
 
   /* packed size */
-  PW_l = ( (in_data[PW_Start_Address+4]*256*256*256) +
-           (in_data[PW_Start_Address+5]*256*256) +
-           (in_data[PW_Start_Address+6]*256) +
-           in_data[PW_Start_Address+7] );
+  PW_l = ( (in_data[PW_Start_Address-4]*256*256*256) +
+           (in_data[PW_Start_Address-3]*256*256) +
+           (in_data[PW_Start_Address-2]*256) +
+           in_data[PW_Start_Address-1] );
   PW_l *= 4;
   PW_l += 36;
 
   if ( PW_l<0 || PW_l > 2000000)
+  {
+    /* should be enough :))) */
+    /*printf ( "#3 Start:%ld (bad size)\n" , PW_Start_Address );*/
     return BAD;
+  }
 
-
-  if ( PW_i >= 147 )
+  if ( PW_i >= 32 )
   {
-    if ( (in_data[PW_Start_Address-24]  != 0x00 ) ||
+    if ( (in_data[PW_Start_Address-32]  != 0x00 ) ||
+         (in_data[PW_Start_Address-31]  != 0x00 ) ||
+         (in_data[PW_Start_Address-30]  != 0x03 ) ||
+         (in_data[PW_Start_Address-29]  != 0xF3 ) ||
+         (in_data[PW_Start_Address-28]  != 0x00 ) ||
+         (in_data[PW_Start_Address-27]  != 0x00 ) ||
+         (in_data[PW_Start_Address-26]  != 0x00 ) ||
+         (in_data[PW_Start_Address-25]  != 0x00 ) ||
+         (in_data[PW_Start_Address-24]  != 0x00 ) ||
          (in_data[PW_Start_Address-23]  != 0x00 ) ||
-         (in_data[PW_Start_Address-22]  != 0x03 ) ||
-         (in_data[PW_Start_Address-21]  != 0xF3 ) ||
+         (in_data[PW_Start_Address-22]  != 0x00 ) ||
+         (in_data[PW_Start_Address-21]  != 0x01 ) ||
          (in_data[PW_Start_Address-20]  != 0x00 ) ||
          (in_data[PW_Start_Address-19]  != 0x00 ) ||
          (in_data[PW_Start_Address-18]  != 0x00 ) ||
-         (in_data[PW_Start_Address-17]  != 0x00 ) ||
-         (in_data[PW_Start_Address-16]  != 0x00 ) ||
-         (in_data[PW_Start_Address-15]  != 0x00 ) ||
-         (in_data[PW_Start_Address-14]  != 0x00 ) ||
-         (in_data[PW_Start_Address-13]  != 0x01 ) ||
-         (in_data[PW_Start_Address-12]  != 0x00 ) ||
-         (in_data[PW_Start_Address-11]  != 0x00 ) ||
-         (in_data[PW_Start_Address-10]  != 0x00 ) ||
-         (in_data[PW_Start_Address-9]   != 0x00 ) )
+         (in_data[PW_Start_Address-17]  != 0x00 ) )
     {
       Amiga_EXE_Header = BAD;
     }
@@ -92,34 +74,35 @@ void Rip_DoubleAction10 ( void )
 {
   /* PW_l is still the whole size */
 
-  Uchar * Amiga_EXE_Header_Block;
+/*  Uchar * Amiga_EXE_Header_Block;*/
 
   OutputSize = PW_l;
 
   CONVERT = BAD;
   if ( Amiga_EXE_Header == BAD )
   {
-    OutputSize -= 24;
-    Amiga_EXE_Header_Block = (Uchar *) malloc ( 24 );
-    BZERO ( Amiga_EXE_Header_Block , 24 );
-    Amiga_EXE_Header_Block[2]  = 0x03;
-    Amiga_EXE_Header_Block[3]  = 0xF3;
-    Amiga_EXE_Header_Block[11] = 0x01;
-    Amiga_EXE_Header_Block[20] = in_data[PW_Start_Address+4];
-    Amiga_EXE_Header_Block[21] = in_data[PW_Start_Address+5];
-    Amiga_EXE_Header_Block[22] = in_data[PW_Start_Address+6];
-    Amiga_EXE_Header_Block[23] = in_data[PW_Start_Address+7];
-
-    Save_Rip_Special ( "Double Action 1.0 Exe-file", Double_Action, Amiga_EXE_Header_Block , 24 );
-    free ( Amiga_EXE_Header_Block );
+/*     OutputSize -= 24; */
+/*     Amiga_EXE_Header_Block = (Uchar *) malloc ( 24 ); */
+/*     BZERO ( Amiga_EXE_Header_Block , 24 ); */
+/*     Amiga_EXE_Header_Block[2]  = 0x03; */
+/*     Amiga_EXE_Header_Block[3]  = 0xF3; */
+/*     Amiga_EXE_Header_Block[11] = 0x01; */
+/*     Amiga_EXE_Header_Block[20] = in_data[PW_Start_Address+4]; */
+/*     Amiga_EXE_Header_Block[21] = in_data[PW_Start_Address+5]; */
+/*     Amiga_EXE_Header_Block[22] = in_data[PW_Start_Address+6]; */
+/*     Amiga_EXE_Header_Block[23] = in_data[PW_Start_Address+7]; */
+
+/*     Save_Rip_Special ( "Double Action 1.0 Exe-file", Double_Action, Amiga_EXE_Header_Block , 24 ); */
+/*     free ( Amiga_EXE_Header_Block ); */
+    printf ("Double Action 1.0 Exe-file without header detected at %ld. Can't rebuild it, sorry\n", PW_Start_Address);
   }
   else
   {
-    PW_Start_Address -= 24;
+    PW_Start_Address -= 32;
     Save_Rip ( "Double Action 1.0 Exe-file", Double_Action );
   }
 
   if ( Save_Status == GOOD )
-    PW_i += (OutputSize - 149);  /* 147 should do but call it "just to be sure" :) */
+    PW_i += 0xA0;
 }
 
index f48584660a5f284e154529da513fdde02dde8711..2893ab9db116145545b69a9fa563bcca3a8f825a 100755 (executable)
@@ -201,8 +201,6 @@ void Depack_EUREKA ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* read header ... same as ptk */
   fwrite ( &in_data[Where] , 1080 , 1 , out );
index 678d34dba92b3ce575b9fa0ae3a085630864c298..2e7c1d2c594abaad88db289e9c72167a61b27e0c 100755 (executable)
@@ -81,8 +81,6 @@ void Depack_FC_M ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* bypass "FC-M" ID */
   /* bypass what looks like the version number .. */
index e314d456360bf8f1511f11c13956ce57318ab3bd..4dab2cb5f7ba6bbfe96b04ffa7167aabb612c1d8 100755 (executable)
@@ -148,8 +148,6 @@ void Depack_FuchsTracker ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* write empty ptk header */
   Whatever = (Uchar *) malloc ( 1080 );
index 140c404670221716d1dbcae9c52323420feca25c..84ae417dcc242a004f099af6f8f21afac697d73c 100755 (executable)
@@ -114,8 +114,6 @@ void Depack_Fuzzac ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* bypass ID */
   /* bypass 2 unknown bytes */
diff --git a/prowizard/rippers/GNUPacker12.c b/prowizard/rippers/GNUPacker12.c
new file mode 100755 (executable)
index 0000000..89d6cbb
--- /dev/null
@@ -0,0 +1,125 @@
+/* testGNUPacker12() */
+/* Rip_GNUPacker12() */
+
+#include "globals.h"
+#include "extern.h"
+
+
+short testGNUPacker12 ( void )
+{
+  PW_Start_Address = PW_i;
+
+  if ( (in_data[PW_Start_Address+16] != 0x22 ) ||
+       (in_data[PW_Start_Address+17] != 0x48 ) ||
+       (in_data[PW_Start_Address+18] != 0xD3 ) ||
+       (in_data[PW_Start_Address+19] != 0xED ) ||
+       (in_data[PW_Start_Address+20] != 0x00 ) ||
+       (in_data[PW_Start_Address+21] != 0x08 ) ||
+       (in_data[PW_Start_Address+22] != 0x30 ) ||
+       (in_data[PW_Start_Address+23] != 0xDE ) ||
+       (in_data[PW_Start_Address+24] != 0xB1 ) ||
+       (in_data[PW_Start_Address+25] != 0xC9 ) ||
+       (in_data[PW_Start_Address+26] != 0x66 ) ||
+       (in_data[PW_Start_Address+27] != 0x00 ) ||
+       (in_data[PW_Start_Address+28] != 0xFF ) ||
+       (in_data[PW_Start_Address+29] != 0xFA ) ||
+       (in_data[PW_Start_Address+30] != 0x20 ) ||
+       (in_data[PW_Start_Address+31] != 0x6D ) )
+  {
+    /* should be enough :))) */
+/*printf ( "#2 Start:%ld\n" , PW_Start_Address );*/
+    return BAD;
+    
+  }
+
+
+  /* packed size */
+  PW_l = ( (in_data[PW_Start_Address+0x240]*256*256*256) +
+           (in_data[PW_Start_Address+0x241]*256*256) +
+           (in_data[PW_Start_Address+0x242]*256) +
+           in_data[PW_Start_Address+0x243] );
+
+  PW_l += 0x274;
+
+  if ( PW_i >= 32 )
+  {
+    if ( (in_data[PW_Start_Address-32]  != 0x00 ) ||
+         (in_data[PW_Start_Address-31]  != 0x00 ) ||
+         (in_data[PW_Start_Address-30]  != 0x03 ) ||
+         (in_data[PW_Start_Address-29]  != 0xF3 ) ||
+         (in_data[PW_Start_Address-28]  != 0x00 ) ||
+         (in_data[PW_Start_Address-27]  != 0x00 ) ||
+         (in_data[PW_Start_Address-26]  != 0x00 ) ||
+         (in_data[PW_Start_Address-25]  != 0x00 ) ||
+         (in_data[PW_Start_Address-24]  != 0x00 ) ||
+         (in_data[PW_Start_Address-23]  != 0x00 ) ||
+         (in_data[PW_Start_Address-22]  != 0x00 ) ||
+         (in_data[PW_Start_Address-21]  != 0x01 ) ||
+         (in_data[PW_Start_Address-20]  != 0x00 ) ||
+         (in_data[PW_Start_Address-19]  != 0x00 ) ||
+         (in_data[PW_Start_Address-19]  != 0x00 ) ||
+         (in_data[PW_Start_Address-17]  != 0x00 ) )
+    {
+      Amiga_EXE_Header = BAD;
+    }
+    else
+      Amiga_EXE_Header = GOOD;
+  }
+  else
+    Amiga_EXE_Header = BAD;
+
+  return GOOD;
+  /* PW_l is the size of the pack */
+}
+
+
+void Rip_GNUPacker12 ( void )
+{
+  /* PW_l is still the whole size */
+
+  Uchar * Amiga_EXE_Header_Block;
+  Uchar * Whatever;
+
+  OutputSize = PW_l;
+
+  CONVERT = BAD;
+
+  if ( Amiga_EXE_Header == BAD )
+  {
+    OutputSize -= 32;
+    Amiga_EXE_Header_Block = (Uchar *) malloc ( 32 );
+    BZERO ( Amiga_EXE_Header_Block , 32 );
+    Amiga_EXE_Header_Block[2]  = Amiga_EXE_Header_Block[26] = 0x03;
+    Amiga_EXE_Header_Block[3]  = 0xF3;
+    Amiga_EXE_Header_Block[11] = 0x01;
+    Amiga_EXE_Header_Block[27] = 0xE9;
+
+    /* WARNING !!! WORKS ONLY ON PC !!!       */
+    /* 68k machines code : c1 = *(Whatever+2); */
+    /* 68k machines code : c2 = *(Whatever+3); */
+    PW_j = PW_l - 36;
+    PW_j /= 4;
+    Whatever = (Uchar *) &PW_j;
+    Amiga_EXE_Header_Block[20] = Amiga_EXE_Header_Block[28] = *(Whatever+3);
+    Amiga_EXE_Header_Block[21] = Amiga_EXE_Header_Block[29] = *(Whatever+2);
+    Amiga_EXE_Header_Block[22] = Amiga_EXE_Header_Block[30] = *(Whatever+1);
+    Amiga_EXE_Header_Block[23] = Amiga_EXE_Header_Block[31] = *Whatever;
+
+    in_data[PW_Start_Address+OutputSize-4]  = 0x00;
+    in_data[PW_Start_Address+OutputSize-3]  = 0x00;
+    in_data[PW_Start_Address+OutputSize-2]  = 0x03;
+    in_data[PW_Start_Address+OutputSize-1]  = 0xF2;
+
+    Save_Rip_Special ( "GNU Packer 1.2 Exe-file", GNUPacker12, Amiga_EXE_Header_Block , 32 );
+    free ( Amiga_EXE_Header_Block );
+  }
+  else
+  {
+    PW_Start_Address -= 32;
+    Save_Rip ( "GNU Packer 1.2 Exe-file", GNUPacker12 );
+  }
+  
+  if ( Save_Status == GOOD )
+    PW_i += 32;
+}
+
index e2c72a137c8f4a36a7746df25bfb009dc21b0326..f5965e08fb1a20a2a2bd47493dce60bd7ff39969 100755 (executable)
@@ -145,8 +145,6 @@ void Depack_GPMO ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* get whole sample size and patch vols (/2)*/
   for ( i=0 ; i<31 ; i++ )
index c43630f50e87d610e2cdbae76576d7496ace2845..d2f2f85a4eea6ef99593354fb21e8b441c8b0724 100755 (executable)
@@ -183,8 +183,6 @@ void Depack_GMC ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* title */
   Whatever = (Uchar *) malloc ( 1024 );
index cf721af885061328545269ed31230d5e60365a4b..9d09c51d93b4bbea724823b53acf22f0023d4e97 100755 (executable)
@@ -102,8 +102,6 @@ void Depack_GnuPlayer ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
   /*info = fopen ( "info", "w+b" );*/
 
   /* read and write title */
@@ -306,10 +304,10 @@ void Depack_GnuPlayer ( void )
     {
       samp = (in_data[Where]>>4)&0x0f;
       if ( samp & 0x08 ) samp -= 0x10;
-      Whatever[k++] = (Whatever[k-1] + samp);
+      Whatever[k] = (Whatever[k-1] + samp); k++;
       samp = in_data[Where] & 0x0f;
       if ( samp & 0x08 ) samp -= 0x10;
-      Whatever[k++] = (Whatever[k-1] + samp);
+      Whatever[k] = (Whatever[k-1] + samp); k++;
       Where += 1;
     }
     Where -= 1;
index cd3da418800afbe8dd5e0a5c14fe3d27b59e99a8..04c0e5f425d10170ea58003afc0f2d2b94b263c0 100755 (executable)
@@ -192,8 +192,6 @@ void Depack_HEATSEEKER ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* write title */
   Whatever = (Uchar *) malloc (1024);
index 71dc1bb7f088c5ab2e64f8c192175b5569a9892b..86febf4c3fb7d6e9f4bafff9811b1ff4bd58031a 100755 (executable)
@@ -82,8 +82,6 @@ void Depack_HRT ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* read header */
   Whatever = (Uchar *) malloc (1024);
index 3e281c2746916a3b1b40aa1da7ed23e52ab24f72..3161c4c4dc351bb71d367453bfb1a927a74c48d9 100755 (executable)
@@ -125,8 +125,6 @@ void Depack_KSM ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* title */
   Whatever = (Uchar *) malloc ( 1024 );
index 9faa3813fff23691528b865ea8962129d7d7528e..af6774419247d2dc78933af30cfdb449fd262c18 100755 (executable)
@@ -264,8 +264,6 @@ void Depack_MP ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   Whatever = (Uchar *) malloc (64);
   BZERO ( Whatever , 64 );
diff --git a/prowizard/rippers/Mugician.c b/prowizard/rippers/Mugician.c
new file mode 100755 (executable)
index 0000000..954c396
--- /dev/null
@@ -0,0 +1,109 @@
+/* testMUGICIAN() */
+/* Rip_MUGICIAN() */
+
+#include "globals.h"
+#include "extern.h"
+
+short testMUGICIAN ( void )
+{
+  if ( PW_i<2 )
+  {
+    /*printf ( "#0.0 (start:%ld)\n" , PW_Start_Address);*/
+    return BAD;
+  }
+  PW_Start_Address = PW_i-2;
+
+  if (( in_data[PW_Start_Address] != ' ' ) ||
+      ( in_data[PW_Start_Address+1] != 'M' ) ||
+      ( in_data[PW_Start_Address+6] != 'I' ) ||
+      ( in_data[PW_Start_Address+7] != 'A' ) ||
+      ( in_data[PW_Start_Address+8] != 'N' ) ||
+      ( in_data[PW_Start_Address+28] != 0x00 ) ||
+      ( in_data[PW_Start_Address+29] != 0x00 ) ||
+      ( in_data[PW_Start_Address+32] != 0x00 ) ||
+      ( in_data[PW_Start_Address+33] != 0x00 ) ||
+      ( in_data[PW_Start_Address+36] != 0x00 ) ||
+      ( in_data[PW_Start_Address+37] != 0x00 ) ||
+      ( in_data[PW_Start_Address+40] != 0x00 ) ||
+      ( in_data[PW_Start_Address+41] != 0x00 ))
+  {
+    /*printf ( "#0.2 (start:%ld)\n" , PW_Start_Address);*/
+     return BAD;
+  }
+
+  /* number of (real) samples */
+  PW_j = ((in_data[PW_Start_Address + 0x44]*256*256*256)+
+         (in_data[PW_Start_Address + 0x45]*256*256)+
+         (in_data[PW_Start_Address + 0x46]*256)+
+         in_data[PW_Start_Address + 0x47]);
+  /* sample data size */
+  PW_WholeSampleSize = ((in_data[PW_Start_Address + 0x48]*256*256*256)+
+         (in_data[PW_Start_Address + 0x49]*256*256)+
+         (in_data[PW_Start_Address + 0x4A]*256)+
+         in_data[PW_Start_Address + 0x4B]);
+  if (((PW_j != 0) && (PW_WholeSampleSize == 0)) || ((PW_j == 0) && (PW_WholeSampleSize != 0)) || (PW_j>255))
+  {
+    /*printf ( "#1 (start:%ld) (number of samples:%ld)(samplesize:%ld)\n" , PW_Start_Address , PW_j,PW_WholeSampleSize);*/
+    return BAD;
+  }
+
+  /* number of instrument */
+  PW_k = ((in_data[PW_Start_Address + 0x3C]*256*256*256)+
+         (in_data[PW_Start_Address + 0x3D]*256*256)+
+         (in_data[PW_Start_Address + 0x3E]*256)+
+         in_data[PW_Start_Address + 0x3F]);
+  if ( (PW_k == 0) || (PW_k > 255) )
+  {
+    /*printf ( "#2 (start:%ld) (number of samples:%ld)(nbr inst:%ld)\n" , PW_Start_Address , PW_j,PW_k);*/
+    return BAD;
+  }
+
+
+  /*
+    not many checks, here, but, to my point of view, it's unlikely
+    a music format comes anywhere near this one, so ... .
+  */
+  /*  printf ("samplesize:%ld,nbrsmp:%ld,nbrinst:%ld\n",PW_WholeSampleSize,PW_j,PW_k);*/
+  return GOOD;
+}
+
+
+
+void Rip_MUGICIAN ( void )
+{
+  /*
+    PW_WholeSampleSize : sample data size
+    PW_j : number of sample
+    PW_k : number of instrument
+  */
+  OutputSize = (PW_j * 0x20) + (PW_k * 0x10) + PW_WholeSampleSize + 0x1CC;
+
+  /* nbr of patterns */
+  PW_k = ((in_data[PW_Start_Address + 0x1a]*256)+
+         in_data[PW_Start_Address + 0x1b]);
+  OutputSize += (PW_k * 0x100);
+  /* nbr of waveforms */
+  PW_k = ((in_data[PW_Start_Address + 0x40]*256*256*256)+
+         (in_data[PW_Start_Address + 0x41]*256*256)+
+         (in_data[PW_Start_Address + 0x42]*256)+
+         in_data[PW_Start_Address + 0x43]);
+  OutputSize += (PW_k * 0x80);
+  /* nbr of sequences */
+  PW_l = 0;
+  for (PW_j=0;PW_j<8;PW_j++)
+  {
+    PW_k = ((in_data[PW_Start_Address + 0x1c + (PW_j*4)]*256*256*256)+
+           (in_data[PW_Start_Address + 0x1d + (PW_j*4)]*256*256)+
+           (in_data[PW_Start_Address + 0x1e + (PW_j*4)]*256)+
+           in_data[PW_Start_Address + 0x1f + (PW_j*4)]);
+    PW_l += PW_k;
+  }
+    
+  OutputSize += (PW_l * 8);
+
+  CONVERT = BAD;
+  Save_Rip ( "Digital Mugician 1/2 module", dmu );
+  
+  if ( Save_Status == GOOD )
+    PW_i += 24; /* after the ID */
+}
index 8fa4d8fad30512d094ea4105d4acd9ac0d46aa58..f5662d21993f7d1fae184fe4296b9d9ebc911cb3 100755 (executable)
@@ -144,8 +144,6 @@ void Depack_Newtron ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   Whatever = (Uchar *) malloc (64);
   BZERO ( Whatever , 64 );
index f79f598aa1ae43354e42c2a41bca90d50ffe7545..15d471aa76c0909ecc6375d3e47c39b13a881090 100755 (executable)
@@ -134,8 +134,6 @@ void Depack_NFH ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* read and write whole header */
   fwrite ( &in_data[Where] , 1080 , 1 , out );
index fd8c71f5c150d629cb017d50dbcf6720e03cbc90..7c72c8a9a516a1b1c83fc360dabe663964023f94 100755 (executable)
@@ -192,8 +192,6 @@ void Depack_Noisepacker1 ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* read number of sample */
   Whatever = (Uchar *) malloc ( 1024 );
index c5efd09698bd889b80640734ef8679ad9d945743..3243d04dc318dcc2eac20ddbfaa22dce5068eed2 100755 (executable)
@@ -212,8 +212,6 @@ void Depack_Noisepacker2 ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* read number of sample */
   Nbr_Smp = ((in_data[Where]<<4)&0xf0) | ((in_data[Where+1]>>4)&0x0f);
index a6c33c9411cf7eb8eeb8f3100df1577689cd8e39..12d3198e27eeac7092f3d0a07f5300966cd0853f 100755 (executable)
@@ -224,8 +224,6 @@ void Depack_Noisepacker3 ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* read number of sample */
   Nbr_Smp = ((in_data[Where]<<4)&0xf0) | ((in_data[Where+1]>>4)&0x0f);
index e6a7b750312ae1daf60918045e30b9f6d508ae6a..f292b9cc0b68dd8845d462d7c922d81f0a415947 100755 (executable)
@@ -151,8 +151,6 @@ void Depack_Noiserunner ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   Whatever = (Uchar *) malloc (1024);
   BZERO ( Whatever , 1024 );
index 2df3f4d2cdd97009d2620097d2b3a93f10975d99..6c3e0bcc62867f67ca0715a046f480daa27f8768 100755 (executable)
@@ -172,8 +172,6 @@ void Depack_PHA ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
   /*  info = fopen ( "info", "w+b");*/
 
   for ( i=0 ; i<20 ; i++ )   /* title */
index 6641b3645265bfdd8bae50d417ae403a7280f967..395dafc9f5456760aced5dafa09d89b0619b6974 100755 (executable)
@@ -133,8 +133,6 @@ void Depack_Polka ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* takes care of header */
   fwrite ( &in_data[Where], 20, 1, out );
index c27b9d53ae45a4ec5e7ec99c90818d188aa3fc2d..1da5f6377471838ef655112320de4fdcca68d202 100755 (executable)
@@ -92,8 +92,6 @@ void Depack_PM ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* write whole header */
   fwrite ( &in_data[Where] , 950 , 1 , out );
index f7ebb26f2bf866a8f9c6c3dcbae375b0e5c0a107..7de0711b31bdd12497e237c7a13c77b2ce97f76a 100755 (executable)
@@ -187,8 +187,6 @@ void Depack_PP10 ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* write title */
   Whatever = (Uchar *) malloc (1024);
index 5be8437685f3ecec760d0e64d810173741cfc070..92750e8b539cd85f7d35a2ed49de760953885b22 100755 (executable)
@@ -158,8 +158,6 @@ void Depack_PP21 ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   Whatever = (Uchar *) malloc (1024);
   BZERO ( Whatever , 1024 );
index 0ccb604710b7ada9945afa484e1d6dfa6ce26531..e0d6e982f3dd4af1181d3fe37a54885423a74979 100755 (executable)
@@ -199,8 +199,6 @@ void Depack_PP30 ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* title */
   Whatever = (Uchar *) malloc (1024);
index 21ef2d6c8b38934d22350b7f4986819cf658e6a3..db70b5898d3eca7757354001a8ed83f15470d199 100755 (executable)
@@ -188,8 +188,6 @@ void Depack_PM01 ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* write title */
   Whatever = (Uchar *) malloc (1024);
index cc62e1ef84463cedff525ca4123796b9da60c597..199cd962b35297856df8e3b9b5858b10fe89389f 100755 (executable)
@@ -122,8 +122,6 @@ void Depack_PM10c ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
   /*info = fopen ( "info", "w+b");*/
 
   Whatever = (Uchar *) malloc (128);
index a1e40f18a73760dbebc49e0e0a83083b94bfcb61..678ad1672804015afca46af1a33dcc77b3362765 100755 (executable)
@@ -118,8 +118,6 @@ void Depack_PM18a ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   BZERO ( Smp_Fine_Table , 31 );
   BZERO ( OldSmpValue , 4 );
index 28292cbd36de7e80721566f3512ad883dbe29cc8..967e9221be2415084aad7d84f4e3deef1df1c8f8 100755 (executable)
@@ -99,8 +99,6 @@ void Depack_PM20 ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
   /*info = fopen ( "info", "w+b");*/
 
   BZERO ( Pats_Address , 128*4 );
index 77a9ecfe383315f2973f3604e303728b9e3945fb..14c65930edd0410a459ffd6a461b760235eedcc7 100755 (executable)
@@ -122,12 +122,8 @@ void Depack_PM40 ( void )
   fillPTKtable(poss);
 
   in = fopen ( (char *)OutName_final , "r+b" ); /* +b is safe bcoz OutName's just been saved */
-  if (!in)
-    return;
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   BZERO ( Pats_Numbers , 128 );
   BZERO ( Pats_Numbers_tmp , 128 );
index 07fefeaa3675e0c03ca7745cd85305641ff929d1..33f441f57bfd28f07bc34b67f7ac6656fb1100b1 100755 (executable)
@@ -79,8 +79,6 @@ void Depack_PRUN1 ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* read and write whole header */
   fwrite ( &in_data[Where] , 950 , 1 , out );
index 09b2a1e418fbafbf641002df34300a02e206861b..a1ee420dd63d3cb971607468b2cdd658ad4fd82a 100755 (executable)
@@ -93,8 +93,6 @@ void Depack_PRUN2 ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   Whatever = (Uchar *) malloc (1024);
   BZERO (Whatever , 1024);
index 294a7badde5d58784ad41401199d887055eba6e2..94fc7af3e2bf4eff2c47a5a34bbeea416d073c94 100755 (executable)
@@ -94,8 +94,6 @@ void Depack_QuadraComposer ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
 
   BZERO ( SmpAddresses , 32*4 );
diff --git a/prowizard/rippers/SGT-Packer.c b/prowizard/rippers/SGT-Packer.c
new file mode 100755 (executable)
index 0000000..21ba7c8
--- /dev/null
@@ -0,0 +1,241 @@
+/*
+ * SGT-Packer.c
+ * 2006 (C) Sylvain "Asle" Chipaux
+*/
+/* testSGT() */
+/* Rip_SGT() */
+/* Depack_SGT() */
+
+
+#include "globals.h"
+#include "extern.h"
+
+/* rudimentary tests .. shall add others */
+short testSGT ( void )
+{
+  /* test 1 */
+  if ( (PW_i<43) || ((PW_Start_Address+43)>PW_in_size) )
+  {
+    return BAD;
+  }
+
+  /* test 2 */
+  PW_Start_Address = PW_i-43;
+  PW_k = in_data[PW_Start_Address+30];
+  for ( PW_j=0 ; PW_j<PW_k ; PW_j++ )
+  {
+    /* volume > 64 ? */
+    if ( in_data[PW_Start_Address+43+PW_j*16] > 0x40 )
+    {
+      return BAD;
+    }
+    /* pad val != 00h ? */
+    if ( in_data[PW_Start_Address+42+PW_j*16] != 0x00 )
+    {
+      return BAD;
+    }
+  }
+
+  return GOOD;
+}
+
+
+
+/**/
+void Rip_SGT ( void )
+{
+  /* PW_k = number of samples, but we don't care. */
+
+  /* get whole sample size */
+  PW_WholeSampleSize = ((in_data[PW_Start_Address+5]*256*256)+
+                       (in_data[PW_Start_Address+6]*256)+
+                       in_data[PW_Start_Address+7]);
+  /* get add of sample data */
+  PW_k = ((in_data[PW_Start_Address+1]*256*256)+
+         (in_data[PW_Start_Address+2]*256)+
+         in_data[PW_Start_Address+3]);
+
+  OutputSize = PW_k + PW_WholeSampleSize;
+  
+  CONVERT = GOOD;
+  Save_Rip ( "     SGT-Packer    ", SGTPacker );
+  
+  if ( Save_Status == GOOD )
+    PW_i += (OutputSize - 44);  /* 43 should do but call it "just to be sure" :) */
+}
+
+
+/*
+ *   SGT-Packer.c   2006 (c) Asle
+ * ! STILL UNDER DEV !
+*/
+
+void Depack_SGT ( void )
+{
+  Uchar *Whatever;
+  Uchar c1=0x00,c2=0x00;
+  Uchar poss[37][2];
+  Uchar Max=0x00;
+  Uchar Note,Smp,Fx,FxVal;
+  Uchar PatternTableSize=0x00;
+  Uchar NbrPat;
+  long i=0,j=0,l=0,z;
+  long WholeSampleSize;
+  long SmpAddy,PatlistAddy,PatdataAddy;
+  long SmpAddies[31], SmpSizes[31];
+  long NbrSmp;
+  long Where = PW_Start_Address;
+  FILE *out; /*,*debug;*/
+
+  if ( Save_Status == BAD )
+    return;
+
+  sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
+  out = PW_fopen ( Depacked_OutName , "w+b" );
+
+  fillPTKtable(poss);
+
+  WholeSampleSize = ((in_data[Where+5]*256*256)+
+                    (in_data[Where+6]*256)+
+                    in_data[Where+7]);
+  SmpAddy = ((in_data[Where]*256*256*256)+
+            (in_data[Where+1]*256*256)+
+            (in_data[Where+2]*256)+
+            in_data[Where+3])+8+Where;
+  PatlistAddy = ((in_data[Where+20]*256*256*256)+
+                (in_data[Where+21]*256*256)+
+                (in_data[Where+22]*256)+
+                in_data[Where+23])+8+Where;
+  PatdataAddy = ((in_data[Where+24]*256*256*256)+
+                (in_data[Where+25]*256*256)+
+                (in_data[Where+26]*256)+
+                in_data[Where+27])+8+Where;
+  PatternTableSize = in_data[Where+28];
+  NbrPat = in_data[Where+31];
+  NbrSmp = in_data[Where+30];
+
+
+/*  debug = fopen ( "debug" , "w+b" );*/
+
+  Whatever = (Uchar *) malloc (1024);
+  BZERO (Whatever , 1024);
+  /* title */
+  fwrite ( &Whatever[0] , 20 , 1 , out );
+
+  /* read/write sample headers */
+  Where += 32;
+  for ( i=0 ; i<NbrSmp ; i++ )
+  {
+    /* read smp start address */
+    j=(in_data[Where]*256*256*256)+
+      (in_data[Where+1]*256*256)+
+      (in_data[Where+2]*256)+
+       in_data[Where+3];
+    SmpAddies[i] = j;
+
+    /* read lstart address */
+    l=(in_data[Where+4]*256*256*256)+
+      (in_data[Where+5]*256*256)+
+      (in_data[Where+6]*256)+
+       in_data[Where+7];
+
+
+    /* read & write sample size */
+    Whatever[22] = in_data[Where+12];
+    Whatever[23] = in_data[Where+13];
+    SmpSizes[i] = ((Whatever[22]*256)+Whatever[23])*2;
+    //fwrite ( &in_data[Where+12] , 2 , 1 , out );
+
+    /* calculate loop start value */
+    j = j-l;
+
+    /* write fine & vol */
+    Whatever[24] = in_data[Where+10];
+    Whatever[25] = in_data[Where+11];
+    //fwrite ( &in_data[Where] , 2 , 1 , out );
+
+    /* write loop start */
+    /* use of htonl() suggested by Xigh !.*/
+    j/=2;
+    z = htonl(j);
+    Whatever[26] = *((Uchar *)&z+2);
+    Whatever[27] = *((Uchar *)&z+3);
+    //fwrite ( Whatever , 2 , 1 , out );
+
+    /* write loop size */
+    Whatever[28] = in_data[Where+8];
+    Whatever[29] = in_data[Where+9];
+    //fwrite ( &in_data[Where+6] , 2 , 1 , out );
+
+    fwrite ( &Whatever[0] , 30 , 1 , out );
+    BZERO (Whatever , 1024);
+
+    Where += 16;
+  }
+
+  /* OK, sample headers are done */
+
+  /* number of pattern in pattern list */
+  /* Noisetracker restart byte */
+  Where = PatlistAddy;
+  Whatever[0] = PatternTableSize;
+  Whatever[1] = 0x7f;
+  fwrite ( &Whatever[0] , 2 , 1 , out );
+
+
+  /* patternlist now TODO !!!!*/
+  /* pattern table (read,count and write) */
+  for ( i=0 ; i<PatternTableSize ; i++ )
+  {
+    /* get addy of first pointer of each pattern */
+    /* and convert it to char for storage in patternlist */
+    Whatever[i] = (Uchar)(((in_data[Where+(i*256)]*256*256*256)+
+                         (in_data[Where+(i*256)+1]*256*256)+
+                         (in_data[Where+(i*256)+2]*256)+
+                         in_data[Where+(i*256)+3])/256);
+  }
+  Whatever[128] = 'M';
+  Whatever[129] = '.';
+  Whatever[130] = 'K';
+  Whatever[131] = '.';
+  Whatever[132] = 0x00;
+  fwrite ( &Whatever[0] , 132 , 1 , out );
+
+  /* ok, patternlist written */
+  /* pattern data, now */
+  Where = PatdataAddy;
+
+  for ( i=0 ; i<=NbrPat ; i++ )
+  {
+    BZERO ( Whatever , 1024 );
+
+    for ( j=0 ; j<256 ; j+=4 )
+    {
+      /* TODO : depacking */
+      Whatever[j*4] = in_data[Where+(i*1024)+(j*4)];
+      Whatever[j*4+1] = in_data[Where+(i*1024)+(j*4)+1];
+      Whatever[j*4+2] = in_data[Where+(i*1024)+(j*4)+2];
+      Whatever[j*4+3] = in_data[Where+(i*1024)+(j*4)+3];
+    }
+    fwrite (&Whatever[0],1024,1,out);
+  }
+
+  free ( Whatever );
+
+  /* sample data */
+  /* no packing or delta detected, yet */
+  for (i=0; i<NbrSmp; i++)
+  {
+    fwrite ( &in_data[SmpAddy+SmpAddies[i]] , SmpSizes[i] , 1 , out );
+  }
+
+  Crap ( "    SGT-Packer    " , BAD , BAD , out );
+
+  fflush ( out );
+  fclose ( out );
+/*  fclose ( debug );*/
+
+  printf ( "done\n" );
+  return; /* useless ... but */
+}
+
index 4358cf2849b148079d802cc6838be1bbc3f9e3a5..d7695497216e5e8489deb0a48c38baa437224e3e 100755 (executable)
@@ -104,8 +104,6 @@ void Depack_SKYT ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* write title */
   Whatever = (Uchar *) malloc (1024);
index 6208f4abcdf4b4384eaa78caa5d002e874f9f89a..316685946d51d86c13bbc1950fc4085fc76de473 100755 (executable)
@@ -169,12 +169,8 @@ void Depack_SoundFX13 ( void )
     return;
 
   in = fopen ( (char *)OutName_final , "r+b" ); /* +b is safe bcoz OutName's just been saved */
-  if (!in)
-    return;
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* title */
   Whatever = (Uchar *) malloc ( 20 );
index 2f4226daad6f17967d624e3c2571f0c6948953db..5986c62ba4c1e41afe309622f4296395ea271fa0 100755 (executable)
@@ -90,8 +90,6 @@ void Depack_STK26 ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
 
   /* read and write whole header */
index 657fbf7e10408e09b103db67554031c22b5f4078..fa16dbf84075b20b578bd99d27eeefad8479a916 100755 (executable)
@@ -225,8 +225,6 @@ void Depack_STARPACK ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
 
   Whatever = (Uchar *) malloc (1024);
index 0bfdc510c3c2f607e0da24374c1411b9d611770d..eda25009d435c45edda903887f3d9242475b7f76 100755 (executable)
@@ -133,8 +133,6 @@ void Depack_STIM ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* write title */
   Whatever = (Uchar *) malloc (1024);
index 2f3fe6f91e31d156489e370a101db97f6a1de52a..44e929816c03ada4145ff84512782749ea159205 100755 (executable)
@@ -148,8 +148,6 @@ void Depack_TMK ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
   /*info = fopen ( "info", "w+b");*/
 
   Whatever = (Uchar *) malloc (128);
index fe37d2b06581ff2c47a63d44c5d7080d727c2ae4..662cb1cdaa1bfb35c2afb6c54f5b5792992e225f 100755 (executable)
@@ -27,7 +27,7 @@ short testTetrapack_2_2 ( void )
         (in_data[PW_Start_Address+33] != 0xF4 ) )
     {
       /* should be enough :))) */
-      printf ( "#2 Start:%ld\n" , PW_Start_Address );
+      /*printf ( "#2 Start:%ld\n" , PW_Start_Address );*/
       return BAD;
     }
   }
index ec55065eee4d0bb7a9695895b4017f806da0dd47..35af53b59dc2d05d94ff60d6bfea8602b57b3e80 100755 (executable)
@@ -239,8 +239,6 @@ void Depack_TheDarkDemon ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* write ptk header */
   Whatever = (Uchar *) malloc ( 1080 );
index cbdf15990d5875a26f594e1aeb83229d2ed519be..e004d85f795758f8137248135e36188a300f99a1 100755 (executable)
@@ -86,8 +86,6 @@ void Depack_P22 ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
   /*debug = fopen ( "debug", "w+b" );*/
 
   /* read check ID */
index fddac9237f935519da4dc2f22662ecc20a3aa95a..436bb99fce718032f21b1c746814a74a146d7f3f 100755 (executable)
@@ -86,8 +86,6 @@ void Depack_P30 ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
   if ( out == NULL)
   /*  debug = fopen ( "debug", "w+b" );*/
 
index 4b929c7e52e22b5519246a84150d384bd8c84623..2ca9cb18698ab12dc302c49d374c23b7f85637bf 100755 (executable)
@@ -186,8 +186,6 @@ void Depack_P40 ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* read check ID */
   Where += 4;
index e7a4842288490abfe1860b48f2a3ef8b5fc70bd0..8c132db08291c9d54783771a08f8f43de446661c 100755 (executable)
@@ -150,8 +150,6 @@ void Depack_P41A ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* read check ID */
   Where += 4;
index 7c750c0e5c7b77d24c9b33730e304955357f0198..dcd74df4577b5332ad98968aec1397bee1f95d70 100755 (executable)
@@ -310,8 +310,6 @@ void Depack_P50A ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* read sample data address */
   Sample_Data_Address = (in_data[Where]*256)+in_data[Where+1];
index ba7feaaa0f6dc27981c2c994817224c5c22e97bc..9ce658e0673f98c826113d38ba8a78387d0d428f 100755 (executable)
@@ -476,8 +476,6 @@ void Depack_P60A ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* read sample data address */
   Sample_Data_Address = (in_data[Where]*256)+in_data[Where+1];
index 3c9eda53d63be4b769c83cc5f47c014bd25e5ed4..7d9df1d2671b28ffc01d1c0053c4627763a5d721 100755 (executable)
@@ -613,8 +613,6 @@ void Depack_P61A ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* read sample data address */
   Sample_Data_Address = (in_data[Where]*256)+in_data[Where+1];
index 64641f45028820fe8b1228d06d347aa01950c1b9..86da8b195171aec045df7841108543ffbeedbefc 100755 (executable)
@@ -143,8 +143,6 @@ void Depack_TP1 ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* title */
   Whatever = (Uchar *) malloc (65536);
index f5cba4622e5ba1fd2e1b721b5537174f3ffce020..da57d903b54cc1a570561f5d5d11cbd8feec7fc1 100755 (executable)
@@ -221,8 +221,6 @@ void Depack_TP2 ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
   /*info = fopen ( "info", "w+b");*/
 
   /* title */
index f42939484adef176438b2579d9609deb0515f71c..ebf9bc79538fc739626630b3776e712e3a2a3cd3 100755 (executable)
@@ -211,8 +211,6 @@ void Depack_TP3 ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* title */
   Where += 8;
diff --git a/prowizard/rippers/TreasurePattern.c b/prowizard/rippers/TreasurePattern.c
new file mode 100755 (executable)
index 0000000..edb1ca4
--- /dev/null
@@ -0,0 +1,411 @@
+/* test() */
+
+
+#include "globals.h"
+#include "extern.h"
+
+
+short testTreasure ( void )
+{
+
+  PW_Start_Address = PW_i;
+
+  if (in_data[PW_Start_Address+1] > 0x40 ) // more than 64 patterns ?
+  {
+    return BAD;
+  }
+  /* A FAIRE !!!!! */
+  /* sample size ? */
+  PW_l = ( (in_data[PW_Start_Address+28]*256)+
+          in_data[PW_Start_Address+29] );
+  if ( (((PW_l/8)*8) != PW_l) || (PW_l == 0) )
+  {
+/*printf ( "#2 Start: %ld\n" , PW_Start_Address );*/
+    return BAD;
+  }
+  PW_l /= 8;
+  /* PW_l is the number of sample */
+
+  /* test finetunes */
+  for ( PW_k=0 ; PW_k<PW_l ; PW_k++ )
+  {
+    if ( in_data[PW_Start_Address+30+PW_k*8] > 0x0f )
+    {
+/*printf ( "#3 Start: %ld\n" , PW_Start_Address );*/
+      return BAD;
+    }
+  }
+
+  /* test volumes */
+  for ( PW_k=0 ; PW_k<PW_l ; PW_k++ )
+  {
+    if ( in_data[PW_Start_Address+31+PW_k*8] > 0x40 )
+    {
+/*printf ( "#4 Start: %ld\n" , PW_Start_Address );*/
+      return BAD;
+    }
+  }
+
+  /* test sample sizes */
+  PW_WholeSampleSize = 0;
+  for ( PW_k=0 ; PW_k<PW_l ; PW_k++ )
+  {
+    /* size */
+    PW_j = (in_data[PW_Start_Address+PW_k*8+32]*256)+in_data[PW_Start_Address+PW_k*8+33];
+    /* loop start */
+    PW_m = (in_data[PW_Start_Address+PW_k*8+34]*256)+in_data[PW_Start_Address+PW_k*8+35];
+    /* loop size */
+    PW_n = (in_data[PW_Start_Address+PW_k*8+36]*256)+in_data[PW_Start_Address+PW_k*8+37];
+    PW_j *= 2;
+    PW_m *= 2;
+    PW_n *= 2;
+    if ( (PW_j > 0xFFFF) ||
+         (PW_m > 0xFFFF) ||
+         (PW_n > 0xFFFF) )
+    {
+/*printf ( "#5 Start:%ld\n" , PW_Start_Address );*/
+      return BAD;
+    }
+    if ( (PW_m + PW_n) > (PW_j+2) )
+    {
+/*printf ( "#5,1 Start:%ld\n" , PW_Start_Address );*/
+      return BAD;
+    }
+    if ( (PW_m != 0) && (PW_n == 0) )
+    {
+/*printf ( "#5,2 Start:%ld\n" , PW_Start_Address );*/
+      return BAD;
+    }
+    PW_WholeSampleSize += PW_j;
+  }
+  if ( PW_WholeSampleSize <= 4 )
+  {
+/*printf ( "#5,3 Start:%ld\n" , PW_Start_Address );*/
+    return BAD;
+  }
+
+  /* pattern list size */
+  PW_j = in_data[PW_Start_Address+PW_l*8+31];
+  if ( (PW_j==0) || (PW_j>128) )
+  {
+/*printf ( "#6 Start:%ld\n" , PW_Start_Address );*/
+    return BAD;
+  }
+
+  /* PW_j is the size of the pattern list */
+  /* PW_l is the number of sample */
+  /* PW_WholeSampleSize is the sample data size */
+  return GOOD;
+}
+
+
+
+
+void Rip_TP3 ( void )
+{
+  /* PW_j is the size of the pattern list */
+  /* PW_l is the number of sample */
+  /* PW_WholeSampleSize is the sample data size */
+
+
+  PW_m=0;
+  for ( PW_k=0 ; PW_k<PW_j ; PW_k++ )
+  {
+    PW_o = (in_data[PW_Start_Address+PW_l*8+32+PW_k*2]*256)+in_data[PW_Start_Address+PW_l*8+33+PW_k*2];
+    if ( PW_o > PW_m )
+      PW_m = PW_o;
+  }
+  /* PW_m is the highest pattern number */
+  PW_m += 8;
+  /* PW_m is now the size of the track table list */
+  PW_n = 0;
+/*printf ( "highest pattern : %ld (%x)\n" , PW_m , PW_m );*/
+  for ( PW_k=0 ; PW_k<(PW_m/2) ; PW_k++ )
+  {
+    PW_o = (in_data[PW_Start_Address+PW_l*8+32+PW_j*2+PW_k*2]*256)+in_data[PW_Start_Address+PW_l*8+33+PW_j*2+PW_k*2];
+/*printf ( "%4x, " , PW_o );*/
+    if ( PW_o > PW_n )
+      PW_n = PW_o;
+  }
+/*printf ( "\nhighest : %ld (%x)\n" , PW_n , PW_n );*/
+/*printf ( "track data address : %ld (%x)\n" , (34+8*PW_l+2*PW_j+PW_m ),(34+8*PW_l+2*PW_j+PW_m));*/
+  PW_n += (34+8*PW_l+2*PW_j+PW_m);
+/*printf ( "address of last track : %ld\n" , PW_n );*/
+  OutputSize = PW_n;
+  
+
+  /* all vars are availlable now, save PW_WholeSampleSize */
+
+  /* now counting size of the last pattern ... pfiew .. */
+  PW_l = 0;
+  for ( PW_j=0 ; PW_j<64 ; PW_j++ )
+  {
+/*printf ( "%ld," , PW_l );*/
+    if ( (in_data[PW_Start_Address+PW_n+PW_l]&0xC0 ) == 0xC0 )
+    {
+      PW_j += (0x100-in_data[PW_Start_Address+PW_n+PW_l]);
+      PW_j -= 1;
+      PW_l += 1;
+      continue;
+    }
+    if ( (in_data[PW_Start_Address+PW_n+PW_l]&0xC0 ) == 0x80 )
+    {
+      PW_l += 2;
+      continue;
+    }
+    PW_l += 1;
+    if ( (in_data[PW_Start_Address+PW_n+PW_l]&0x0F ) == 0x00 )
+    {
+      PW_l += 1;
+      continue;
+    }
+    PW_l += 2;
+  }
+/*printf ( "\nsize of the last track : %ld\n" , PW_l );*/
+
+  OutputSize += PW_l + 2;  /* +2 for $0000 at the end .. */
+  if ( ((OutputSize/2)*2) != OutputSize )
+    OutputSize += 1;
+  OutputSize += PW_WholeSampleSize;
+
+  CONVERT = GOOD;
+  Save_Rip ( "Tracker Packer v3 module", TP3 );
+  
+  if ( Save_Status == GOOD )
+    PW_i += (OutputSize - 1); /* 0 could be enough */
+}
+
+
+
+/*
+ *   TrackerPacker_v3.c   1998 (c) Asle / ReDoX
+ *
+ * Converts TP3 packed MODs back to PTK MODs
+ ********************************************************
+ * 13 april 1999 : Update
+ *   - no more open() of input file ... so no more fread() !.
+ *     It speeds-up the process quite a bit :).
+ *
+ * 28 November 1999 : Update
+ *   - Some Optimizing for Speed and for Size.
+*/
+
+void Depack_TP3 ( void )
+{
+  Uchar c1=0x00,c2=0x00,c3=0x00;
+  Uchar poss[37][2];
+  Uchar *Whatever;
+  Uchar Note,Smp,Fx,FxVal;
+  Uchar PatMax=0x00;
+  long Track_Address[128][4];
+  long i=0,j=0,k;
+  long Start_Pat_Address=999999l;
+  long Whole_Sample_Size=0;
+  long Max_Track_Address=0;
+  long Where=PW_Start_Address;   /* main pointer to prevent fread() */
+  FILE *out;
+
+  fillPTKtable(poss);
+
+  if ( Save_Status == BAD )
+    return;
+
+  BZERO ( Track_Address , 128*4*4 );
+
+  sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
+  out = PW_fopen ( Depacked_OutName , "w+b" );
+
+  /* title */
+  Where += 8;
+  fwrite ( &in_data[Where] , 20 , 1 , out );
+  Where += 20;
+
+  /* number of sample */
+  j = (in_data[Where]*256)+in_data[Where+1];
+  Where += 2;
+  j /= 8;
+  /*printf ( "number of sample : %ld\n" , j );*/
+
+  Whatever = (Uchar *) malloc ( 1024 );
+  BZERO ( Whatever , 1024 );
+  for ( i=0 ; i<j ; i++ )
+  {
+    /*sample name*/
+    fwrite ( Whatever , 22 , 1 , out );
+
+    /* size */
+    Whole_Sample_Size += (((in_data[Where+2]*256)+in_data[Where+3])*2);
+    fwrite ( &in_data[Where+2] , 2 , 1 , out );
+
+    /* write finetune & Volume */
+    fwrite ( &in_data[Where] , 2 , 1 , out );
+
+    /* loop start & Loop size */
+    fwrite ( &in_data[Where+4] , 4 , 1 , out );
+
+    Where += 8;
+  }
+  Whatever[29] = 0x01;
+  while ( i!=31 )
+  {
+    fwrite ( Whatever , 30 , 1 , out );
+    i++;
+  }
+  /*printf ( "Whole sample size : %ld\n" , Whole_Sample_Size );*/
+
+  /* read size of pattern table */
+  Where += 1;
+  Whatever[256] = in_data[Where++]; /* PatPos*/
+  fwrite ( &Whatever[256] , 1 , 1 , out );
+
+  /* ntk byte */
+  Whatever[0] = 0x7f;
+  fwrite ( &Whatever[0] , 1 , 1 , out );
+
+  for ( i=0 ; i<Whatever[256] ; i++ )
+  {
+    Whatever[i] = ((in_data[Where]*256)+in_data[Where+1])/8;
+    Where += 2;
+    if ( Whatever[i] > PatMax )
+      PatMax = Whatever[i];
+/*fprintf ( info , "%3ld: %ld\n" , i,Pats_Address[i] );*/
+  }
+
+  /* read tracks addresses */
+  /* bypass 4 bytes or not ?!? */
+  /* Here, I choose not :) */
+/*fprintf ( info , "track addresses :\n" );*/
+  for ( i=0 ; i<=PatMax ; i++ )
+  {
+    for ( j=0 ; j<4 ; j++ )
+    {
+      Track_Address[i][j] = (in_data[Where]*256)+in_data[Where+1];
+      Where += 2;
+      if ( Track_Address[i][j] > Max_Track_Address )
+        Max_Track_Address = Track_Address[i][j];
+/*fprintf ( info , "%6ld, " , Track_Address[i][j] );*/
+    }
+/*fprintf ( info , "  (%x)\n" , Max_Track_Address );*/
+  }
+
+  /*printf ( "Highest pattern number : %d\n" , PatMax );*/
+
+  /* write pattern list */
+  fwrite ( Whatever , 128 , 1 , out );
+
+
+  /* ID string */
+  Whatever[0] = 'M';
+  Whatever[1] = '.';
+  Whatever[2] = 'K';
+  Whatever[3] = '.';
+  fwrite ( Whatever , 4 , 1 , out );
+
+  Start_Pat_Address = Where + 2;
+  /*printf ( "address of the first pattern : %ld\n" , Start_Pat_Address );*/
+/*fprintf ( info , "address of the first pattern : %x\n" , Start_Pat_Address );*/
+
+  /* pattern datas */
+  /*printf ( "converting pattern data " );*/
+  for ( i=0 ; i<=PatMax ; i++ )
+  {
+/*fprintf ( info , "\npattern %ld:\n\n" , i );*/
+    BZERO ( Whatever , 1024 );
+    for ( j=0 ; j<4 ; j++ )
+    {
+/*fprintf ( info , "track %ld: (at %ld)\n" , j , Track_Address[i][j]+Start_Pat_Address );*/
+      Where = Track_Address[i][j]+Start_Pat_Address;
+      for ( k=0 ; k<64 ; k++ )
+      {
+        c1 = in_data[Where++];
+/*fprintf ( info , "%ld: %2x," , k , c1 );*/
+        if ( (c1&0xC0) == 0xC0 )
+        {
+/*fprintf ( info , " <--- %d empty lines\n" , (0x100-c1) );*/
+          k += (0x100-c1);
+          k -= 1;
+          continue;
+        }
+        if ( (c1&0xC0) == 0x80 )
+        {
+          c2 = in_data[Where++];
+/*fprintf ( info , "%2x ,\n" , c2 );*/
+          Fx    = (c1>>1)&0x0f;
+          FxVal = c2;
+          if ( (Fx==0x05) || (Fx==0x06) || (Fx==0x0A) )
+          {
+            if ( FxVal > 0x80 )
+              FxVal = 0x100-FxVal;
+            else if ( FxVal <= 0x80 )
+              FxVal = (FxVal<<4)&0xf0;
+          }
+          if ( Fx == 0x08 )
+            Fx = 0x00;
+          Whatever[k*16+j*4+2]  = Fx;
+          Whatever[k*16+j*4+3]  = FxVal;
+          continue;
+        }
+
+        c2 = in_data[Where++];
+/*fprintf ( info , "%2x, " , c2 );*/
+        Smp   = ((c2>>4)&0x0f) | ((c1>>2)&0x10);
+        if ( (c1&0x40) == 0x40 )
+          Note = 0x7f-c1;
+        else
+          Note  = c1&0x3F;
+        Fx    = c2&0x0F;
+        if ( Fx == 0x00 )
+        {
+/*fprintf ( info , " <--- No FX !!\n" );*/
+          Whatever[k*16+j*4] = Smp&0xf0;
+          Whatever[k*16+j*4]   |= poss[Note][0];
+          Whatever[k*16+j*4+1]  = poss[Note][1];
+          Whatever[k*16+j*4+2]  = (Smp<<4)&0xf0;
+          Whatever[k*16+j*4+2] |= Fx;
+          continue;
+        }
+        c3 = in_data[Where++];
+/*fprintf ( info , "%2x\n" , c3 );*/
+        if ( Fx == 0x08 )
+          Fx = 0x00;
+        FxVal = c3;
+        if ( (Fx==0x05) || (Fx==0x06) || (Fx==0x0A) )
+        {
+          if ( FxVal > 0x80 )
+            FxVal = 0x100-FxVal;
+          else if ( FxVal <= 0x80 )
+            FxVal = (FxVal<<4)&0xf0;
+        }
+
+        Whatever[k*16+j*4] = Smp&0xf0;
+        Whatever[k*16+j*4]   |= poss[Note][0];
+        Whatever[k*16+j*4+1]  = poss[Note][1];
+        Whatever[k*16+j*4+2]  = (Smp<<4)&0xf0;
+        Whatever[k*16+j*4+2] |= Fx;
+        Whatever[k*16+j*4+3]  = FxVal;
+      }
+      if ( Where > Max_Track_Address )
+        Max_Track_Address = Where;
+/*fprintf ( info , "%6ld, " , Max_Track_Address );*/
+    }
+    fwrite ( Whatever , 1024 , 1 , out );
+    /*printf ( "." );*/
+  }
+  free ( Whatever );
+  /*printf ( " ok\n" );*/
+
+  /*printf ( "sample data address : %ld\n" , Max_Track_Address );*/
+
+  /* Sample data */
+  if ( ((Max_Track_Address/2)*2) != Max_Track_Address )
+    Max_Track_Address += 1;
+  fwrite ( &in_data[Max_Track_Address] , Whole_Sample_Size , 1 , out );
+
+  Crap ( " Tracker Packer 3 " , BAD , BAD , out );
+
+  fflush ( out );
+  fclose ( out );
+
+  printf ( "done\n" );
+  return; /* useless ... but */
+}
index 67ddc901fda46a93376e1fef1439dc6184b3af68..4a181d93c5a833b893dfadf0815398338497f1a4 100755 (executable)
@@ -514,8 +514,6 @@ void Depack_UNIC ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* title */
   fwrite ( &in_data[Where] , 20 , 1 , out );
index d228f8130e1c368bdfc0f164beb95d190055cbf6..fb1d1eab0eea764e76ace3f9fc2a718a89018dcf 100755 (executable)
@@ -202,8 +202,6 @@ void Depack_UNIC2 ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* title */
   Whatever = (Uchar *) malloc (1028);
index 7181541a862cfe834c6b747e571600b6d6b9f1d7..52b5851c9ad8f04b38073849098c15dc0ac08a8a 100755 (executable)
@@ -77,8 +77,6 @@ void Depack_WN ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* read header */
   fwrite ( &in_data[Where] , 950 , 1 , out );
index 550ca24da663492549dbb0c5ec60d151843f2da4..c9cb037d7c1a61322c14b940de1c137966ac33af 100755 (executable)
@@ -163,8 +163,6 @@ void Depack_XANN ( void )
 
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* title */
   Whatever = (Uchar *) malloc (1024);
index 8da85832ae067e5f761d139fc05ae8441ee110d6..cfe15748dc97d695a5760c126bd87f2b434fc34e 100755 (executable)
@@ -174,8 +174,6 @@ void Depack_ZEN ( void )
   BZERO ( Pattern_Address_Real , 128*4);
   sprintf ( Depacked_OutName , "%ld.mod" , Cpt_Filename-1 );
   out = PW_fopen ( Depacked_OutName , "w+b" );
-  if (!out)
-    return;
 
   /* read pattern table address */
   Pattern_Table_Address = (in_data[Where]*256*256*256)+
index ce71543c53a6a801102a966f0a4f79a374c0909c..b9d339dcd03c2f45108a5aa09d01db9fbe0697f0 100755 (executable)
@@ -13,12 +13,14 @@ extern short testByteKiller_20 ( void );
 extern short testByteKiller30 ( void );
 extern short testbytekillerpro10 ( void );
 extern short testcrunchmaniaAddr ( void );
+extern short testcrunchmaniaSimple ( void );
 extern short testCRND ( void );
 extern short testDefjam32 ( void );
 extern short testDefjam32pro ( void );
 extern short testDoubleAction10 ( void );
 extern short testDragpack100 ( void );
 extern short testDragpack252 ( void );
+extern short testGNUPacker12 (void);
 extern short testHQCCruncher2 ( void );
 extern short testMasterCruncher30addr ( void );
 extern short testMaxPacker12 ( void );
@@ -70,14 +72,15 @@ extern short testKRIS ( void );
 extern short testKSM ( void );
 extern short testMMD0 ( void );
 extern short testMOD ( int );
+extern short testMP_noID ( void );
+extern short testMP_withID ( void );
+extern short testMUGICIAN ( void );
 extern short testNewtron ( void );
 extern short testNFH ( void );
 extern short testNoiserunner ( void );
 extern short testNoisepacker1 ( void );
 extern short testNoisepacker2 ( void );
 extern short testNoisepacker3 ( void );
-extern short testMP_noID ( void );
-extern short testMP_withID ( void );
 extern short testP40A ( void );
 extern short testP41A ( void );
 extern short testP50A ( void );
@@ -100,6 +103,7 @@ extern short testPRUN1 ( void );
 extern short testPRUN2 ( void );
 /*extern short testPTK ( void );*/
 extern short testQuadraComposer ( void );
+extern short testSGT ( void );
 extern short testSKYT ( void );
 extern short testSoundFX13 ( void );
 extern short testSoundTracker ( void );
@@ -111,6 +115,7 @@ extern short testTMK ( void );
 extern short testTP1 ( void );
 extern short testTP2 ( void );
 extern short testTP3 ( void );
+extern short testTreasure ( void );
 extern short testUNIC_noID ( void );
 extern short testUNIC_withID ( void );
 extern short testUNIC_withemptyID ( void );
@@ -127,10 +132,12 @@ extern void Rip_ByteKiller ( void );
 extern void Rip_ByteKiller30 ( void );
 extern void Rip_bytekillerpro10 ( void );
 extern void Rip_CrunchmaniaAddr ( void );
+extern void Rip_CrunchmaniaSimple ( void );
 extern void Rip_Defjam32 ( void );
 extern void Rip_DoubleAction10 ( void );
 extern void Rip_Dragpack100 ( void );
 extern void Rip_Dragpack252 ( void );
+extern void Rip_GNUPacker12 (void);
 extern void Rip_HQCCruncher2 ( void );
 extern void Rip_MasterCruncher30addr ( void );
 extern void Rip_MaxPacker12 ( void );
@@ -181,6 +188,7 @@ extern void Rip_KRIS ( void );
 extern void Rip_KSM ( void );
 extern void Rip_MMD0 ( void );
 extern void Rip_MOD ( int );
+extern void Rip_MUGICIAN ( void );
 extern void Rip_MP_noID ( void );
 extern void Rip_MP_withID ( void );
 extern void Rip_Newtron ( void );
@@ -210,6 +218,7 @@ extern void Rip_PP21 ( void );
 extern void Rip_PP30 ( void );
 /*extern void Rip_PTK ( void );*/
 extern void Rip_QuadraComposer ( void );
+extern void Rip_SGT ( void );
 extern void Rip_SKYT ( void );
 extern void Rip_SoundFX13 ( void );
 extern void Rip_SoundTracker ( void );
@@ -222,6 +231,7 @@ extern void Rip_TMK ( void );
 extern void Rip_TP1 ( void );
 extern void Rip_TP2 ( void );
 extern void Rip_TP3 ( void );
+extern void Rip_Treasure ( void );
 extern void Rip_PRUN2 ( void );
 extern void Rip_PRUN1 ( void );
 extern void Rip_UNIC_withID ( void );
@@ -277,6 +287,7 @@ extern void Depack_PP30 ( void );
 extern void Depack_PRUN1 ( void );
 extern void Depack_PRUN2 ( void );
 extern void Depack_QuadraComposer ( void );
+extern void Depack_SGT ( void );
 extern void Depack_SKYT ( void );
 extern void Depack_STARPACK ( void );
 extern void Depack_STK26 ( void );
@@ -286,6 +297,7 @@ extern void Depack_TMK ( void );
 extern void Depack_TP1 ( void );
 extern void Depack_TP2 ( void );
 extern void Depack_TP3 ( void );
+extern void Depack_Treasure ( void );
 extern void Depack_UNIC ( void );
 extern void Depack_UNIC2 ( void );
 extern void Depack_WN ( void );
@@ -303,9 +315,9 @@ extern short testSpecialCruncherData ( long , long );
 extern void Rip_SpecialCruncherData ( char * , int , int );
 extern short test_1_start ( Ulong );
 extern short test_smps ( long, long, long, Uchar, Uchar );
-extern long  GetFileSizeX ( char * );
+extern long  PWGetFileSize ( char * );
 extern FILE * PW_fopen ( char *, char * );
-extern void fillPTKtable ( Uchar[37][2] );
+extern void fillPTKtable ( Uchar [37][2] );
 
 /* globals */
 /* Some say it's badly coding when using Globals ... sure it is, now what's the solution ? */
index a4140ffdb3d1696d481cddbef76d8a6e960dda20..77b29c12ae9074478a8c838ba6d8aa23c83a8c3f 100755 (executable)
@@ -5,18 +5,13 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#if 0
-#include <sys/param.h>
-#endif
+//#include <sys/param.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 /*#include <gtk/gtk.h>*/
 #ifdef DOS
 #include <winsock.h>
 #endif
-#ifdef DMALLOC
-#include "dmalloc.h"
-#endif
 
 
 typedef unsigned char Uchar;
@@ -31,7 +26,7 @@ __inline Ulong htonl (Ulong v)
 }
 #endif
 
-#define _KNOWN_FORMATS      126
+#define _KNOWN_FORMATS      130
 #define _TYPES_FILENAME     "_types_"
 #define _TYPES_LINE_LENGHT  256
 #define MINIMAL_FILE_LENGHT 64
@@ -174,4 +169,9 @@ enum
   SpeedPacker3Data,
   AtomikPackerData,
   AutomationPackerData,
+  /*  TreasurePattern,*/
+  SGTPacker,
+  GNUPacker12,
+  CrunchmaniaSimple,
+  dmu,
 };
diff --git a/zfile.c b/zfile.c
index 63022c0faca3c08f17f9a24541cad8090bd8c44f..cdda08ee2dba55b2ebaba161a952ffc801cf1a2b 100755 (executable)
--- a/zfile.c
+++ b/zfile.c
@@ -561,7 +561,7 @@ static struct zfile *arcacc_unpack (struct zfile *z, int type)
                    }
                }
            }
-           if (type == 7) {
+           if (type == ArchiveFormat7Zip) {
                if (fi.CompressedFileSize)
                    skipsize = 0;
                skipsize += (int)fi.UncompressedFileSize;