From: Toni Wilen Date: Sat, 3 Oct 2015 17:03:58 +0000 (+0300) Subject: KS 1.1 and older HD support. X-Git-Tag: 3200~42 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=f0babdd708571d028af586c269a17eb0e22119a2;p=francis%2Fwinuae.git KS 1.1 and older HD support. --- diff --git a/expansion.cpp b/expansion.cpp index 5cd6fa6e..9e27a21f 100644 --- a/expansion.cpp +++ b/expansion.cpp @@ -194,11 +194,11 @@ static bool isnonautoconfig(int v) static bool ks12orolder(void) { /* check if Kickstart version is below 1.3 */ - return kickstart_version - && (/* Kickstart 1.0 & 1.1! */ - kickstart_version == 0xFFFF - /* Kickstart < 1.3 */ - || kickstart_version < 34); + return kickstart_version && kickstart_version < 34; +} +static bool ks11orolder(void) +{ + return kickstart_version && kickstart_version < 33; } @@ -1391,11 +1391,17 @@ bool expansion_is_next_board_fastram(void) * Filesystem device */ -static addrbank *expamem_map_filesys (void) +static void expamem_map_filesys_update(void) { - uaecptr a; - + /* 68k code needs to know this. */ + uaecptr a = here(); + org(rtarea_base + RTAREA_FSBOARD); + dl(filesys_start + 0x2000); + org(a); +} +static addrbank *expamem_map_filesys (void) +{ // Warn if PPC doing autoconfig and UAE expansion enabled static bool warned; if (!warned && regs.halted < 0) { @@ -1406,11 +1412,7 @@ static addrbank *expamem_map_filesys (void) filesys_start = expamem_z2_pointer; map_banks_z2(&filesys_bank, filesys_start >> 16, 1); - /* 68k code needs to know this. */ - a = here (); - org (rtarea_base + RTAREA_FSBOARD); - dl (filesys_start + 0x2000); - org (a); + expamem_map_filesys_update(); return &filesys_bank; } @@ -1418,6 +1420,40 @@ static addrbank *expamem_map_filesys (void) #define FILESYS_BOOTPOINT 0x01e6 #define FILESYS_DIAGAREA 0x2000 +#if KS12_BOOT_HACK +static void add_ks12_boot_hack(void) +{ + uaecptr name = ds(_T("UAE boot")); + align(2); + uaecptr code = here(); + // allocate fake diagarea + dl(0x48e73f3e); // movem.l d2-d7/a2-a6,-(sp) + dw(0x203c); // move.l #x,d0 + dl(0x0300); + dw(0x7201); // moveq #1,d1 + dl(0x4eaeff3a); // jsr -0xc6(a6) + dw(0x2440); // move.l d0,a2 ;diag area + dw(0x9bcd); // sub.l a5,a5 ;expansionbase + dw(0x97cb); // sub.l a3,a3 ;configdev + dw(0x4eb9); // jsr + dl(ROM_filesys_diagentry); + dl(0x4cdf7cfc); // movem.l (sp)+,d2-d7/a2-a6 + dw(0x4e75); + // struct Resident + uaecptr addr = here(); + dw(0x4afc); + dl(addr); + dl(addr + 26); + db(1); // RTF_COLDSTART + db(kickstart_version); // version + db(0); // NT_UNKNOWN + db(1); // priority + dl(name); + dl(name); + dl(code); +} +#endif + static addrbank* expamem_init_filesys (int devnum) { bool ks12 = ks12orolder(); @@ -1463,38 +1499,8 @@ static addrbank* expamem_init_filesys (int devnum) do_put_mem_word ((uae_u16 *)(expamem + FILESYS_DIAGAREA + FILESYS_BOOTPOINT), 0x4EF9); /* JMP */ do_put_mem_long ((uae_u32 *)(expamem + FILESYS_DIAGAREA + FILESYS_BOOTPOINT + 2), EXPANSION_bootcode); -#if KS12_BOOT_HACK - if (ks12) { - uaecptr name = ds(_T("UAE boot")); - align(2); - uaecptr code = here(); - // allocate fake diagarea - dl(0x48e73f3e); // movem.l d2-d7/a2-a6,-(sp) - dw(0x203c); // move.l #x,d0 - dl(0x0300); - dw(0x7201); // moveq #1,d1 - dl(0x4eaeff3a); // jsr -0xc6(a6) - dw(0x2440); // move.l d0,a2 ;diag area - dw(0x9bcd); // sub.l a5,a5 ;expansionbase - dw(0x97cb); // sub.l a3,a3 ;configdev - dw(0x4eb9); // jsr - dl(ROM_filesys_diagentry); - dl(0x4cdf7cfc); // movem.l (sp)+,d2-d7/a2-a6 - dw(0x4e75); - // struct Resident - uaecptr addr = here(); - dw(0x4afc); - dl(addr); - dl(addr + 26); - db(1); // RTF_COLDSTART - db(1); // version - db(0); // NT_UNKNOWN - db(0); // priority - dl(name); - dl(name); - dl(code); - } -#endif + if (ks12) + add_ks12_boot_hack(); memcpy (filesys_bank.baseaddr, expamem, 0x3000); return NULL; @@ -2010,6 +2016,12 @@ void expamem_reset (void) /* warn user */ #if KS12_BOOT_HACK do_mount = -1; + if (ks11orolder()) { + filesys_start = 0xe90000; + map_banks_z2(&filesys_bank, filesys_start >> 16, 1); + expamem_init_filesys(0); + expamem_map_filesys_update(); + } #else write_log(_T("Kickstart version is below 1.3! Disabling automount devices.\n")); do_mount = 0; diff --git a/filesys.asm b/filesys.asm index 9eb65084..b172f5e8 100644 --- a/filesys.asm +++ b/filesys.asm @@ -24,6 +24,8 @@ ; 2009.12.27 console hook ; 2010.05.27 Z3Chip ; 2011.12.17 built-in CDFS support +; 2015.09.27 KS 1.2 boot hack supported +; 2015.09.28 KS 1.2 boot hack improved, 1.1 and older BCPL-only DOS support. AllocMem = -198 FreeMem = -210 @@ -48,6 +50,7 @@ NRF_WAIT_REPLY = 8 NRF_NOTIFY_INITIAL = 16 NRF_MAGIC = $80000000 +; normal filehandler segment entrypoint dc.l 16 ; 4 our_seglist: dc.l 0 ; 8 /* NextSeg */ @@ -61,7 +64,7 @@ startjmp: dc.l exter_server-start ;4 28 dc.l bootcode-start ;5 32 dc.l setup_exter-start ;6 36 - dc.l 0 ;7 40 + dc.l bcplwrapper-start ;7 40 dc.l clipboard_init-start ;8 44 ;52 @@ -74,6 +77,25 @@ bootcode: jsr (a0) rts +; BCPL filehandler segment entry point +; for KS 1.1 and older. + cnop 0,4 + dc.l (bcpl_end-bcpl_start)/4+1 +our_bcpl_seglist: + dc.l 0 + dc.l (bcpl_end-bcpl_start)/4+1 +bcpl_start: + ; d1 = startup packet + lsl.l #2,d1 + move.l d1,d7 + bra.w filesys_mainloop_bcpl + cnop 0,4 + dc.l 0 + dc.l 1 + dc.l 4 + dc.l 2 +bcpl_end: + residenthack movem.l d0-d2/a0-a2/a6,-(sp) @@ -151,6 +173,10 @@ filesys_init: move.w #$FFEC,d0 ; filesys base bsr getrtbase move.l (a0),a5 + moveq #0,d5 + moveq #0,d0 + cmp.w #33,20(a6) ; 1.1 or older? + bcs.s FSIN_explibok lea.l explibname(pc),a1 ; expansion lib name moveq #36,d0 moveq #1,d5 @@ -166,6 +192,8 @@ FSIN_explibok: ; create fake configdev exg a4,a6 + move.l a6,d0 + beq.s .nocd jsr -$030(a6) ;expansion/AllocConfigDev tst.l d0 beq.s .nocd @@ -226,8 +254,14 @@ FSIN_units_ok: FSIN_none: move.l 4.w,a6 + move.l a4,d0 + beq.s .noexpclose move.l a4,a1 jsr -414(a6) ; CloseLibrary +.noexpclose + + cmp.w #34,20(a6) ; 1.2 or older? + bcs.s FSIN_tooold ; add MegaChipRAM moveq #3,d4 ; MEMF_CHIP | MEMF_PUBLIC @@ -238,6 +272,7 @@ FSIN_ksold move.w #$FF80,d0 bsr.w getrtbase jsr (a0) ; d1 = size, a1 = start address + move.l d0,d5 move.l a1,a0 move.l d1,d0 beq.s FSIN_fchip_done @@ -247,6 +282,23 @@ FSIN_ksold jsr -618(a6) ; AddMemList FSIN_fchip_done + ; add >2MB-6MB chip RAM to memory list (if not already done) + lea $210000,a1 + ; do not add if RAM detected already + jsr -$216(a6) ; TypeOfMem + tst.l d0 + bne.s FSIN_chip_done + move.l d4,d1 + moveq #-10,d2 + move.l #$200000,a0 + move.l d5,d0 + sub.l a0,d0 + bcs.b FSIN_chip_done + beq.b FSIN_chip_done + sub.l a1,a1 + jsr -618(a6) ; AddMemList +FSIN_chip_done + lea fstaskname(pc),a0 lea fsmounttask(pc),a1 moveq #10,d0 @@ -257,6 +309,8 @@ FSIN_fchip_done bsr.w getrtbase jsr (a0) +FSIN_tooold + movem.l (sp)+,d0-d7/a0-a6 general_ret: rts @@ -1009,7 +1063,7 @@ action_exall ; mount harddrives, virtual or hdf make_dev: ; IN: A0 param_packet, D6: unit_no -; D7: b0=autoboot,b1=onthefly,b2=v36+,b3=force manual add + ; D7: b0=autoboot,b1=onthefly,b2=v36+,b3=force manual add ; A4: expansionbase bsr.w fsres @@ -1064,7 +1118,7 @@ mountalways do_mount: move.l a4,a6 move.l a0,-(sp) - jsr -144(a6) ; MakeDosNode() + bsr.w makedosnode move.l (sp)+,a0 ; parmpacket move.l a0,a1 move.l d0,a3 ; devicenode @@ -1103,6 +1157,13 @@ nordbfs2: tst.l d3 bmi.w general_ret + move.l 4.w,a6 + move.l a1,-(sp) + lea bcplfsname(pc),a1 + jsr -$126(a6) ; FindTask + move.l (sp)+,a1 + move.l d0,d1 + move.w #$FF18,d0 ; update dn_SegList if needed (filesys_dev_bootfilesys) bsr.w getrtbase jsr (a0) @@ -1114,12 +1175,17 @@ nordbfs2: MKDV_is_filesys: move.l #6000,20(a3) ; dn_StackSize - lea.l our_seglist(pc),a0 + lea our_seglist(pc),a0 + moveq #-1,d0 + move.l a4,d1 + bne.s .expgv + lea our_bcpl_seglist(pc),a0 + moveq #0,d0 +.expgv + move.l d0,36(a3) ; dn_GlobalVec move.l a0,d0 lsr.l #2,d0 move.l d0,32(a3) ; dn_SegList - moveq #-1,d0 - move.l d0,36(a3) ; dn_GlobalVec MKDV_doboot: btst #3,d7 @@ -1161,7 +1227,7 @@ MKDV_noboot: .nob moveq #-128,d0 move.l a4,a6 ; expansion base - jsr -150(a6) ; AddDosNode + bsr.w adddosnode btst #1,d7 beq.s .noproc btst #2,d7 @@ -1189,8 +1255,7 @@ MKDV_noboot: clr.b (a1) move.l 4.w,a6 lea doslibname(pc),a1 - moveq #0,d0 - jsr -$0228(a6) ; OpenLibrary + jsr -$0198(a6) ; OldOpenLibrary move.l d0,a6 move.l a2,d1 move.l sp,d3 @@ -1265,6 +1330,8 @@ clockreset: .cr rts filesys_mainloop: + moveq #0,d7 +filesys_mainloop_bcpl: move.l 4.w,a6 sub.l a1,a1 jsr -294(a6) ; FindTask @@ -1273,8 +1340,7 @@ filesys_mainloop: ; Open DOS library lea.l doslibname(pc),a1 - moveq.l #0,d0 - jsr -552(a6) ; OpenLibrary + jsr -$198(a6) ; OpenLibrary move.l d0,a2 ; Allocate some memory. Usage: @@ -1321,12 +1387,15 @@ filesys_mainloop: moveq.l #0,d5 ; No commands queued. ; Fetch our startup packet + move.l d7,d3 + bne.s .got_bcpl move.l a5,a0 jsr -384(a6) ; WaitPort move.l a5,a0 jsr -372(a6) ; GetMsg move.l d0,a4 - move.l 10(a4),d3 ; ln_Name + move.l 10(a4),d3 ; ln_Name -> startup dos packet +.got_bcpl move.w #$FF40,d0 ; startup_handler bsr.w getrtbase moveq.l #0,d0 @@ -2694,6 +2763,165 @@ bootres_code: rts +; KS 1.1 and older don't have expansion.library +; emulate missing functions + +makedosnode: + cmp.w #0,a6 + beq.s makedosnodec + jsr -144(a6) ; MakeDosNode() + rts +makedosnodec + movem.l d2-d7/a2-a6,-(sp) + move.l a0,a2 + move.l 4.w,a6 + move.l #44+16+4*17+128,d0 + move.l #65536+1,d1 + jsr -$c6(a6) + move.l d0,a3 ;devicenode + lea 44(a3),a4 ;fssm + lea 16(a4),a5 ;environ + lea 4*17(a5),a6 + + move.l a5,a1 + lea 4*4(a2),a0 + moveq #17-1,d0 +.cenv + move.l (a0)+,(a1)+ + dbf d0,.cenv + + move.l a6,a0 + move.l (a2),a1 + addq.l #1,a0 +.copy1 + move.b (a1)+,(a0)+ + bne.s .copy1 + move.l a0,d0 + addq.l #3,d0 + and.b #~3,d0 + move.l d0,d6 + move.l a0,d0 + subq.l #2,d0 + sub.l a6,d0 + move.b d0,(a6) + + move.l d6,a0 + move.l 1*4(a2),a1 + addq.l #1,a0 +.copy2 + move.b (a1)+,(a0)+ + bne.s .copy2 + move.l a0,d0 + subq.l #2,d0 + sub.l d6,d0 + move.l d6,a0 + move.b d0,(a0) + + move.l 2*4(a2),(a4) ;fssm_unit + move.l d6,d0 + lsr.l #2,d0 + move.l d0,4(a4) ;fssm_device + lea 4*4(a2),a0 + move.l a5,d0 + lsr.l #2,d0 + move.l d0,8(a4) ;fssm_Environ + move.l 3*4(a2),12(a4) ;fssm_flags + + move.l a4,d0 + lsr.l #2,d0 + move.l d0,28(a3) ;dn_startup + move.l a6,d0 + lsr.l #2,d0 + move.l d0,40(a3) ;dn_name + moveq #10,d0 + move.l d0,24(a3) ;dn_priority + move.l #4000,20(a3) ;dn_stack + + move.l a3,d0 + + movem.l (sp)+,d2-d7/a2-a6 + rts + +adddosnode: + ;d0 = bootpri + ;d1 = flags + ;a0 = devicenode + cmp.w #0,a6 + beq.s adddosnodec + jsr -150(a6) ; AddDosNode + rts +adddosnodec + movem.l d2-d4/a2-a6,-(sp) + move.l a0,a2 + move.l 4.w,a6 + lea doslibname(pc),a1 + jsr -$0198(a6) ; OldOpenLibrary + move.l d0,a5 + + move.l 34(a5),a0 ;dl_root + move.l 24(a0),d0 ;rn_info + lsl.l #2,d0 + move.l d0,a3 ;dosinfo + + move.l 4(a3),(a2) + move.l a2,d0 + lsr.l #2,d0 + move.l d0,4(a3) + + move.l a5,a1 + move.l 4.w,a6 + jsr -$019e(a6); CloseLibrary + movem.l (sp)+,d2-d4/a2-a6 + rts + + ;wrap BCPL filesystem call to non-BCPL filesystem + ;d1 = dospacket that BCPL entry point fetched + ;We need to put dospacket back in the pr_MsgPort. + + cnop 0,4 + dc.l (bcplwrapper_end-bcplwrapper_start)/4+1 +bcplwrapper: + dc.l 0 + dc.l (bcplwrapper_end-bcplwrapper_start)/4+1 +bcplwrapper_start: + move.l d1,d2 + move.l 4.w,a6 + sub.l a1,a1 + jsr -$126(a6) ;FindTask + move.l d0,a0 + lea 92(a0),a0 ;pr_MsgPort + lsl.l #2,d2 + move.l d2,a1 + move.l (a1),a1 ;dp_Link = Message + jsr -$16e(a6) ;PutMsg + move.l d2,d1 + lea wb13ffspatches(pc),a1 + move.w #$FF2C,d0 + bsr.w getrtbase + jsr (a0) + jmp (a0) + ;CopyMem() patches +wb13ffspatches: + moveq #$30,d0 + bra.s copymem + moveq #$28,d0 + bra.s copymem + move.l d6,d0 + bra.s copymem + move.l d6,d0 +copymem: + move.b (a0)+,(a1)+ + subq.l #1,d0 + bgt.s copymem + rts + + cnop 0,4 + dc.l 0 + dc.l 1 + dc.l 4 + dc.l 2 +bcplwrapper_end: + getrtbase: lea start-8-4(pc),a0 and.l #$FFFF,d0 @@ -2723,6 +2951,7 @@ gfxlibname: dc.b 'graphics.library',0 explibname: dc.b 'expansion.library',0 fsresname: dc.b 'FileSystem.resource',0 fchipname: dc.b 'megachip memory',0 +bcplfsname: dc.b "File System",0 even rom_end: diff --git a/filesys.cpp b/filesys.cpp index 77b1aeaa..57a31227 100644 --- a/filesys.cpp +++ b/filesys.cpp @@ -134,7 +134,7 @@ static void aino_test_init (a_inode *aino) } -uaecptr filesys_initcode; +uaecptr filesys_initcode, filesys_initcode_ptr; static uae_u32 fsdevname, fshandlername, filesys_configdev; static uae_u32 cdfs_devname, cdfs_handlername; static int filesys_in_interrupt; @@ -6877,6 +6877,12 @@ void filesys_prepare_reset (void) static int trackdisk_hack_state; static int putmsg_hack_state; static int putmsg_hack_filesystemtask; +static uae_u32 ks12hack_deviceproc; + +static bool bcplonlydos(void) +{ + return kickstart_version && kickstart_version < 33; +} static const uae_u8 bootblock_ofs[] = { 0x44,0x4f,0x53,0x00,0xc0,0x20,0x0f,0x19,0x00,0x00,0x03,0x70,0x43,0xfa,0x00,0x18, @@ -6889,14 +6895,15 @@ static uae_u32 REGPARAM2 filesys_putmsg_return(TrapContext *context) uaecptr message = m68k_areg(regs, 1); uaecptr dospacket = get_long(message + 10); UnitInfo *uip = mountinfo.ui; - if (uip[0].parmpacket) { - uae_u32 port = get_long(uip[0].parmpacket + PP_DEVICEPROC); + if (!ks12hack_deviceproc && uip[0].parmpacket) + ks12hack_deviceproc = get_long(uip[0].parmpacket + PP_DEVICEPROC); + if (ks12hack_deviceproc) { + uae_u32 port = ks12hack_deviceproc; if (port) { - write_log(_T("KS 1.2 automount hack: patch boot handler process.\n")); uaecptr proc = get_long(get_long(4) + 276); // ThisTask put_long(proc + 168, port); // pr_FileSystemTask m68k_areg(regs, 0) = port; - //write_log(_T("DP=%08x Proc %08x pr_FileSystemTask=%08x\n"), dospacket, proc, port); + write_log(_T("Pre-KS 1.3 automount hack: patch boot handler process. DP=%08x Proc %08x pr_FileSystemTask=%08x.\n"), dospacket, proc, port); } } return m68k_dreg(regs, 0); @@ -6914,7 +6921,7 @@ static uae_u32 REGPARAM2 filesys_putmsg(TrapContext *context) // write_log(_T("Port=%08x Msg=%08x DP=%08x dp_Link=%08x dp_Port=%08x dp_Type=%d\n"), // m68k_areg(regs, 0), m68k_areg(regs, 1), dospacket, get_long(dospacket), get_long(dospacket + 4), type); if (type == ACTION_LOCATE_OBJECT) { - write_log(_T("KS 1.2 automount hack: init drives.\n")); + write_log(_T("Pre-KS 1.3 automount hack: init drives.\n")); putmsg_hack_state = 0; if (putmsg_hack_filesystemtask) { m68k_areg(regs, 7) -= 4; @@ -6948,12 +6955,13 @@ static uae_u32 REGPARAM2 filesys_doio(TrapContext *context) { case 2: // CMD_READ { + // trackdisk.device reading boot block uae_u8 *d = get_real_address(data); memset(d, 0, 1024); memcpy(d, bootblock_ofs, sizeof bootblock_ofs); put_long(ioreq + 32, len); // io_Actual trackdisk_hack_state = 0; - write_log(_T("KS 1.2 automount hack: DF0: boot block faked.\n")); + write_log(_T("Pre-KS 1.3 automount hack: DF0: boot block faked.\n")); } break; case 9: // TD_MOTOR @@ -6999,6 +7007,7 @@ static uae_u32 REGPARAM2 filesys_diagentry (TrapContext *context) write_log (_T("filesystem: diagentry %08x configdev %08x\n"), resaddr, filesys_configdev); + tmp = resaddr; if (ROM_hardfile_resid != 0) { /* Build a struct Resident. This will set up and initialize * the uae.device */ @@ -7012,7 +7021,8 @@ static uae_u32 REGPARAM2 filesys_diagentry (TrapContext *context) put_long (resaddr + 0x16, ROM_hardfile_init); /* calls filesys_init */ } resaddr += 0x1A; - tmp = resaddr; + if (!KS12_BOOT_HACK || expansion) + tmp = resaddr; /* The good thing about this function is that it always gets called * when we boot. So we could put all sorts of stuff that wants to be done * here. @@ -7043,7 +7053,7 @@ static uae_u32 REGPARAM2 filesys_diagentry (TrapContext *context) /* scan for Residents and return pointer to array of them */ residents = resaddr; - while (tmp < residents && tmp > start) { + while (tmp < residents && tmp >= start) { if (get_word (tmp) == 0x4AFC && get_long (tmp + 0x2) == tmp) { put_word (resaddr, 0x227C); /* move.l #tmp,a1 */ @@ -7067,6 +7077,7 @@ static uae_u32 REGPARAM2 filesys_diagentry (TrapContext *context) trackdisk_hack_state = 0; putmsg_hack_state = 0; putmsg_hack_filesystemtask = 0; + ks12hack_deviceproc = 0; if (KS12_BOOT_HACK && nr_units() && filesys_configdev == 0) { resaddr_hack = resaddr; @@ -7112,12 +7123,19 @@ static uae_u32 REGPARAM2 filesys_diagentry (TrapContext *context) put_word(resaddr + 12, -0x1a4); resaddr += 14; put_long(resaddr + 0, 0x4cdf7fff); // movem.l (sp)+,d0-d7/a0-a6 - put_word(resaddr + 4, 0x4e75); // rts + resaddr += 4; + + uaecptr temp = here(); + org(filesys_initcode_ptr); + dl(resaddr); + org(temp); + + put_word(resaddr, 0x4e75); // rts resaddr = resaddr_hack; if (trackdisk_hack_state) { - // KS 1.2 trackdisk.device boot block injection hack. Patch DoIO() + // Pre-KS 1.3 trackdisk.device boot block injection hack. Patch DoIO() put_word(resaddr + 0, 0x224e); // move.l a6,a1 put_word(resaddr + 2, 0x307c); // move.w #x,a0 put_word(resaddr + 4, -0x1c8); @@ -7130,7 +7148,7 @@ static uae_u32 REGPARAM2 filesys_diagentry (TrapContext *context) resaddr += 22; } - // KS 1.2 automount hack. Patch PutMsg() + // Pre-KS 1.3 automount hack. Patch PutMsg() put_word(resaddr + 0, 0x224e); // move.l a6,a1 put_word(resaddr + 2, 0x307c); // move.w #x,a0 put_word(resaddr + 4, -0x16e); @@ -7142,11 +7160,10 @@ static uae_u32 REGPARAM2 filesys_diagentry (TrapContext *context) put_long(resaddr + 18, ROM_filesys_putmsg_original); resaddr += 22; + // filesys.asm make_dev D7 do_put_mem_word((uae_u16 *)(filesys_bank.baseaddr + 0x2112), 1 | 2 | 8); } - - m68k_areg (regs, 0) = residents; if (currprefs.uae_hide_autoconfig && expansion) { @@ -7214,7 +7231,12 @@ static uae_u32 REGPARAM2 filesys_dev_bootfilesys (TrapContext *context) if (pf & (1 << i)) put_long (devicenode + 4 + i * 4, get_long (parmpacket + PP_FSHDSTART + 8 + 4 + i * 4)); } - put_long (devicenode + 4 + 7 * 4, fsptr >> 2); // seglist + uaecptr seglist = fsptr >> 2; + if (bcplonlydos()) { + put_long(devicenode + 4 + 3 * 4, seglist); + seglist = (get_long(rtarea_base + bootrom_header + 4 + 6 * 4) + rtarea_base + bootrom_header) >> 2; + } + put_long(devicenode + 4 + 7 * 4, seglist); return 1; } dostype = get_long (parmpacket + 80); @@ -7224,8 +7246,15 @@ static uae_u32 REGPARAM2 filesys_dev_bootfilesys (TrapContext *context) if (dostype2 == dostype) { uae_u32 pf = get_long (fsnode + 22); // fse_PatchFlags for (int i = 0; i < 32; i++) { - if (pf & (1 << i)) - put_long (devicenode + 4 + i * 4, get_long (fsnode + 22 + 4 + i * 4)); + if (pf & (1 << i)) { + uae_u32 data = get_long(fsnode + 22 + 4 + i * 4); + if (i == 7 && bcplonlydos()) { // seglist + // point seglist to bcpl wrapper and put original seglist in dn_Handler + put_long(devicenode + 4 + 3 * 4, get_long(fsnode + 22 + 4 + 7 * 4)); + data = (get_long(rtarea_base + bootrom_header + 4 + 6 * 4) + rtarea_base + bootrom_header) >> 2; + } + put_long(devicenode + 4 + i * 4, data); + } } return 1; } @@ -7239,6 +7268,50 @@ static uae_u32 REGPARAM2 filesys_dev_bootfilesys (TrapContext *context) } put_long (devicenode + 4 + 7 * 4, 0); // seglist } + + uaecptr file_system_proc = m68k_dreg(regs, 1); + if (bcplonlydos() && file_system_proc && get_long(devicenode + 4 + 7 * 4) == 0) { + // 1.1 or older, seglist == 0: get ROM OFS seglist from "File System" process. + // 1.2 and newer automatically use ROM OFS if seglist is zero. + // d1 = "File System" process pointer. + uaecptr p = get_long(file_system_proc + 0x80) << 2; // pr_SegList + if (p) { + uae_u32 cnt = get_long(p); + if (cnt > 0 && cnt < 16) { + uaecptr handlerseg = get_long(p + cnt * 4); + write_log(_T("Pre-KS 1.2 handler segment %08x.\n"), handlerseg << 2); + put_long(devicenode + 4 + 7 * 4, handlerseg); + } + } + } + + return 0; +} + +// called from bcplwrapper +static uae_u32 REGPARAM2 filesys_bcpl_wrapper(TrapContext *context) +{ + const int patches[] = { 0x782, 0x7b8, 0x159c, 0x15b4, 0 }; + uaecptr devicenode = get_long(m68k_dreg(regs, 1) + 0x1c) << 2; + // fetch original seglist from dn_Handler + uaecptr seglist = get_long(devicenode + 4 + 3 * 4) << 2; + uaecptr patchfunc = m68k_areg(regs, 1); + seglist += 4; + m68k_areg(regs, 0) = seglist; + for (int i = 0; patches[i]; i++) { + int offset = patches[i]; + if (get_long(seglist + offset + 2) != 0x4eaefd90) { + write_log(_T("FFS patch failed, comparison mismatch.\n")); + return 0; + } + } + for (int i = 0; patches[i]; i++) { + int offset = patches[i]; + put_word(seglist + offset, 0x4eb9); + put_long(seglist + offset + 2, patchfunc); + patchfunc += 4; + } + write_log(_T("FFS pre-1.2 patched\n")); return 0; } @@ -7339,6 +7412,8 @@ static int device_isdup (uaecptr expbase, TCHAR *devname) int len, i; TCHAR dname[256]; + if (!expbase) + return 0; bnode = get_long (expbase + 74); /* expansion.library bootnode list */ while (get_long (bnode)) { dnode = get_long (bnode + 16); /* device node */ @@ -7479,14 +7554,14 @@ static void dump_rdb (UnitInfo *uip, struct hardfiledata *hfd, uae_u8 *bufrdb, u write_log (_T("RDB: PART block %d:\n"), partblock); if (!legalrdbblock (uip, partblock)) { write_log (_T("RDB: corrupt PART pointer %d\n"), partblock); - dumprdbblock(bufrdb, partblock); + dumprdbblock(i == 0 ? bufrdb : buf, partblock); break; } memset (buf, 0, readblocksize); hdf_read (hfd, buf, partblock * hfd->ci.blocksize, readblocksize); if (!rdb_checksum ("PART", buf, partblock)) { write_log (_T("RDB: checksum error PART block %d\n"), partblock); - dumprdbblock(bufrdb, partblock); + dumprdbblock(buf, partblock); break; } dump_partinfo (hfd, buf); @@ -7502,14 +7577,14 @@ static void dump_rdb (UnitInfo *uip, struct hardfiledata *hfd, uae_u8 *bufrdb, u write_log (_T("RDB: LSEG block %d:\n"), fileblock); if (!legalrdbblock (uip, fileblock)) { write_log (_T("RDB: corrupt FSHD pointer %d\n"), fileblock); - dumprdbblock(bufrdb, fileblock); + dumprdbblock(i == 0 ? bufrdb : buf, fileblock); break; } memset (buf, 0, readblocksize); hdf_read (hfd, buf, fileblock * hfd->ci.blocksize, readblocksize); if (!rdb_checksum ("FSHD", buf, fileblock)) { write_log (_T("RDB: checksum error FSHD block %d\n"), fileblock); - dumprdbblock(bufrdb, fileblock); + dumprdbblock(buf, fileblock); break; } uae_u32 dostype = rl (buf + 32); @@ -7635,7 +7710,7 @@ static int rdb_mount (UnitInfo *uip, int unit_no, int partnum, uaecptr parmpacke if (!rdb_checksum ("PART", buf, partblock)) { err = -2; write_log(_T("RDB: checksum error in PART block %d\n"), partblock); - dumprdbblock(bufrdb, partblock); + dumprdbblock(buf, partblock); goto error; } } @@ -7706,14 +7781,13 @@ static int rdb_mount (UnitInfo *uip, int unit_no, int partnum, uaecptr parmpacke } if (!legalrdbblock (uip, fileblock)) { write_log (_T("RDB: corrupt FSHD pointer %d\n"), fileblock); - dumprdbblock(bufrdb, fileblock); goto error; } memset (buf, 0, readblocksize); hdf_read (hfd, buf, fileblock * hfd->ci.blocksize, readblocksize); if (!rdb_checksum ("FSHD", buf, fileblock)) { write_log (_T("RDB: checksum error in FSHD block %d\n"), fileblock); - dumprdbblock(bufrdb, fileblock); + dumprdbblock(buf, fileblock); goto error; } fileblock = rl (buf + 16); @@ -7748,7 +7822,7 @@ static int rdb_mount (UnitInfo *uip, int unit_no, int partnum, uaecptr parmpacke hdf_read (hfd, buf, lsegblock * hfd->ci.blocksize, readblocksize); if (!rdb_checksum("LSEG", buf, lsegblock)) { write_log(_T("RDB: checksum error in LSEG block %d\n"), lsegblock); - dumprdbblock(bufrdb, lsegblock); + dumprdbblock(buf, lsegblock); goto error; } lsegblock = rl (buf + 16); @@ -7796,7 +7870,7 @@ static void addfakefilesys (uaecptr parmpacket, uae_u32 dostype, int ver, int re put_long (parmpacket + PP_FSHDSTART + 12 + 5 * 4, ci->priority); flags |= 0x20; } - put_long (parmpacket + PP_FSHDSTART + 12 + 8 * 4, dostype == 0x444f5300 ? 0 : -1); // globvec + put_long (parmpacket + PP_FSHDSTART + 12 + 8 * 4, dostype == 0x444f5300 || bcplonlydos() ? 0 : -1); // globvec // if OFS = seglist -> NULL if (dostype == 0x444f5300) flags &= ~0x080; @@ -7992,7 +8066,7 @@ static void get_new_device (int type, uaecptr parmpacket, TCHAR **devname, uaecp (uae_u32)(mountinfo.ui[unit_no].hf.virtsize), mountinfo.ui[unit_no].rootdir); } - + /* Fill in per-unit fields of a parampacket */ static uae_u32 REGPARAM2 filesys_dev_storeinfo (TrapContext *context) { @@ -8006,8 +8080,11 @@ static uae_u32 REGPARAM2 filesys_dev_storeinfo (TrapContext *context) struct uaedev_config_info *ci = &uip[unit_no].hf.ci; uip[unit_no].parmpacket = parmpacket; - put_long (parmpacket + PP_ADDTOFSRES, 0); - put_long (parmpacket + PP_FSSIZE, 0); + if (!ks12hack_deviceproc) + ks12hack_deviceproc = get_long(parmpacket + PP_DEVICEPROC); + put_long(parmpacket + PP_DEVICEPROC, 0); + put_long(parmpacket + PP_ADDTOFSRES, 0); + put_long(parmpacket + PP_FSSIZE, 0); if (iscd) { TCHAR *cdname = NULL; uaecptr cdname_amiga; @@ -8275,6 +8352,10 @@ void filesys_install (void) calltrap (deftrap2 (filesys_dev_storeinfo, 0, _T("filesys_dev_storeinfo"))); dw (RTS); + org(rtarea_base + 0xFF2C); + calltrap(deftrap2(filesys_bcpl_wrapper, 0, _T("filesys_bcpl_wrapper"))); + dw(RTS); + org (rtarea_base + 0xFF30); calltrap (deftrap2 (filesys_handler, 0, _T("filesys_handler"))); dw (RTS); diff --git a/filesys_bootrom.cpp b/filesys_bootrom.cpp index b8b08db0..3ce4e37a 100644 --- a/filesys_bootrom.cpp +++ b/filesys_bootrom.cpp @@ -1,89 +1,102 @@ db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00); - db(0x60); db(0x02); db(0x00); db(0x09); db(0x60); db(0x00); db(0x0b); db(0x44); - db(0x00); db(0x00); db(0x08); db(0xc4); db(0x00); db(0x00); db(0x00); db(0xe0); - db(0x00); db(0x00); db(0x02); db(0x84); db(0x00); db(0x00); db(0x00); db(0x24); - db(0x00); db(0x00); db(0x03); db(0x92); db(0x00); db(0x00); db(0x00); db(0x00); - db(0x00); db(0x00); db(0x13); db(0xe8); db(0x43); db(0xfa); db(0x19); db(0x5c); + db(0x60); db(0x02); db(0x00); db(0x09); db(0x60); db(0x00); db(0x0b); db(0xc6); + db(0x00); db(0x00); db(0x09); db(0x2c); db(0x00); db(0x00); db(0x01); db(0x04); + db(0x00); db(0x00); db(0x02); db(0xec); db(0x00); db(0x00); db(0x00); db(0x24); + db(0x00); db(0x00); db(0x03); db(0xfa); db(0x00); db(0x00); db(0x1a); db(0x08); + db(0x00); db(0x00); db(0x14); db(0x6e); db(0x43); db(0xfa); db(0x1b); db(0x44); db(0x4e); db(0xae); db(0xff); db(0xa0); db(0x20); db(0x40); db(0x20); db(0x28); db(0x00); db(0x16); db(0x20); db(0x40); db(0x4e); db(0x90); db(0x4e); db(0x75); - db(0x48); db(0xe7); db(0xe0); db(0xe2); db(0x30); db(0x3c); db(0xff); db(0x38); - db(0x72); db(0x11); db(0x61); db(0x00); db(0x18); db(0x38); db(0x4e); db(0x90); - db(0x4a); db(0x80); db(0x67); db(0x4c); db(0x2c); db(0x78); db(0x00); db(0x04); - db(0x0c); db(0x6e); db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x40); - db(0x70); db(0x14); db(0x24); db(0x00); db(0x72); db(0x01); db(0x4e); db(0xae); - db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x32); db(0x24); db(0x40); - db(0x20); db(0x4a); db(0x43); db(0xfa); db(0x00); db(0x60); db(0x20); db(0xd9); - db(0x59); db(0x82); db(0x66); db(0xfa); db(0x4e); db(0xae); db(0xff); db(0x88); - db(0x22); db(0x4e); db(0x30); db(0x7c); db(0xff); db(0xb8); db(0x20); db(0x0a); - db(0x4e); db(0xae); db(0xfe); db(0x5c); db(0x25); db(0x40); db(0x00); db(0x0e); - db(0x41); db(0xfa); db(0x00); db(0x14); db(0x25); db(0x48); db(0x00); db(0x08); - db(0x4e); db(0xae); db(0xfd); db(0x84); db(0x4e); db(0xae); db(0xff); db(0x82); - db(0x4c); db(0xdf); db(0x47); db(0x07); db(0x4e); db(0x75); db(0x20); db(0x57); - db(0x20); db(0x68); db(0x00); db(0x02); db(0x2f); db(0x08); db(0x4e); db(0x90); - db(0x20); db(0x5f); db(0x58); db(0x8f); db(0x48); db(0xe7); db(0xff); db(0x7e); - db(0x22); db(0x4e); db(0x20); db(0x08); db(0x30); db(0x7c); db(0xff); db(0xb8); - db(0x4e); db(0xae); db(0xfe); db(0x5c); db(0x61); db(0x00); db(0x13); db(0x2a); - db(0x61); db(0x00); db(0x16); db(0xf0); db(0x4c); db(0xdf); db(0x7e); db(0xff); - db(0x4e); db(0x75); db(0x00); db(0x00); db(0x08); db(0x00); db(0x00); db(0x02); - db(0x67); db(0x06); db(0x4e); db(0xb9); db(0x00); db(0xf0); db(0x00); db(0x00); - db(0x4e); db(0xf9); db(0x00); db(0xf0); db(0x00); db(0x00); db(0x00); db(0x00); - db(0x48); db(0xe7); db(0xff); db(0xfe); db(0x2c); db(0x78); db(0x00); db(0x04); - db(0x30); db(0x3c); db(0xff); db(0xec); db(0x61); db(0x00); db(0x17); db(0x8e); - db(0x2a); db(0x50); db(0x43); db(0xfa); db(0x18); db(0xbd); db(0x70); db(0x24); + db(0x00); db(0x00); db(0x00); db(0x07); db(0x00); db(0x00); db(0x00); db(0x00); + db(0x00); db(0x00); db(0x00); db(0x07); db(0xe5); db(0x89); db(0x2e); db(0x01); + db(0x60); db(0x00); db(0x0b); db(0x84); db(0x00); db(0x00); db(0x00); db(0x00); + db(0x00); db(0x00); db(0x00); db(0x01); db(0x00); db(0x00); db(0x00); db(0x04); + db(0x00); db(0x00); db(0x00); db(0x02); db(0x48); db(0xe7); db(0xe0); db(0xe2); + db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x11); db(0x61); db(0x00); + db(0x19); db(0xfc); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x4c); + db(0x2c); db(0x78); db(0x00); db(0x04); db(0x0c); db(0x6e); db(0x00); db(0x25); + db(0x00); db(0x14); db(0x65); db(0x40); db(0x70); db(0x14); db(0x24); db(0x00); + db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80); + db(0x67); db(0x32); db(0x24); db(0x40); db(0x20); db(0x4a); db(0x43); db(0xfa); + db(0x00); db(0x60); db(0x20); db(0xd9); db(0x59); db(0x82); db(0x66); db(0xfa); + db(0x4e); db(0xae); db(0xff); db(0x88); db(0x22); db(0x4e); db(0x30); db(0x7c); + db(0xff); db(0xb8); db(0x20); db(0x0a); db(0x4e); db(0xae); db(0xfe); db(0x5c); + db(0x25); db(0x40); db(0x00); db(0x0e); db(0x41); db(0xfa); db(0x00); db(0x14); + db(0x25); db(0x48); db(0x00); db(0x08); db(0x4e); db(0xae); db(0xfd); db(0x84); + db(0x4e); db(0xae); db(0xff); db(0x82); db(0x4c); db(0xdf); db(0x47); db(0x07); + db(0x4e); db(0x75); db(0x20); db(0x57); db(0x20); db(0x68); db(0x00); db(0x02); + db(0x2f); db(0x08); db(0x4e); db(0x90); db(0x20); db(0x5f); db(0x58); db(0x8f); + db(0x48); db(0xe7); db(0xff); db(0x7e); db(0x22); db(0x4e); db(0x20); db(0x08); + db(0x30); db(0x7c); db(0xff); db(0xb8); db(0x4e); db(0xae); db(0xfe); db(0x5c); + db(0x61); db(0x00); db(0x13); db(0x8c); db(0x61); db(0x00); db(0x17); db(0x54); + db(0x4c); db(0xdf); db(0x7e); db(0xff); db(0x4e); db(0x75); db(0x00); db(0x00); + db(0x08); db(0x00); db(0x00); db(0x02); db(0x67); db(0x06); db(0x4e); db(0xb9); + db(0x00); db(0xf0); db(0x00); db(0x00); db(0x4e); db(0xf9); db(0x00); db(0xf0); + db(0x00); db(0x00); db(0x00); db(0x00); db(0x48); db(0xe7); db(0xff); db(0xfe); + db(0x2c); db(0x78); db(0x00); db(0x04); db(0x30); db(0x3c); db(0xff); db(0xec); + db(0x61); db(0x00); db(0x19); db(0x52); db(0x2a); db(0x50); db(0x7a); db(0x00); + db(0x70); db(0x00); db(0x0c); db(0x6e); db(0x00); db(0x21); db(0x00); db(0x14); + db(0x65); db(0x1c); db(0x43); db(0xfa); db(0x1a); db(0x75); db(0x70); db(0x24); db(0x7a); db(0x01); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80); - db(0x66); db(0x0c); db(0x43); db(0xfa); db(0x18); db(0xad); db(0x70); db(0x00); + db(0x66); db(0x0c); db(0x43); db(0xfa); db(0x1a); db(0x65); db(0x70); db(0x00); db(0x7a); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x28); db(0x40); - db(0xc9); db(0x4e); db(0x4e); db(0xae); db(0xff); db(0xd0); db(0x4a); db(0x80); - db(0x67); db(0x2c); db(0x20); db(0x40); db(0x43); db(0xfa); db(0xfe); db(0xe2); - db(0x20); db(0x09); db(0x42); db(0x40); db(0x21); db(0x40); db(0x00); db(0x20); - db(0x21); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x00); db(0x00); db(0x24); - db(0x31); db(0x7c); db(0x01); db(0x04); db(0x00); db(0x10); db(0x31); db(0x7c); - db(0x07); db(0xdb); db(0x00); db(0x14); db(0x70); db(0x01); db(0x21); db(0x40); - db(0x00); db(0x16); db(0x4e); db(0xae); db(0xff); db(0xe2); db(0xc9); db(0x4e); - db(0x4a); db(0xad); db(0x01); db(0x0c); db(0x67); db(0x00); db(0x00); db(0x62); - db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x38); db(0x22); db(0x3c); - db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); - db(0x26); db(0x40); db(0x27); db(0x4c); db(0x01); db(0xa8); db(0x7c); db(0x00); - db(0xbc); db(0x6d); db(0x01); db(0x0e); db(0x64); db(0x32); db(0x2f); db(0x06); - db(0x2e); db(0x2d); db(0x01); db(0x10); db(0x4a); db(0x45); db(0x67); db(0x04); - db(0x08); db(0xc7); db(0x00); db(0x02); db(0x2f); db(0x0b); db(0x20); db(0x4b); - db(0x61); db(0x00); db(0x07); db(0x42); db(0x26); db(0x5f); db(0x27); db(0x41); - db(0x01); db(0xa4); db(0x0c); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe); - db(0x67); db(0x08); db(0x48); db(0x46); db(0x52); db(0x46); db(0x48); db(0x46); - db(0x60); db(0xd6); db(0x2c); db(0x1f); db(0x52); db(0x46); db(0x60); db(0xc8); - db(0x2c); db(0x78); db(0x00); db(0x04); db(0x22); db(0x4b); db(0x20); db(0x3c); - db(0x00); db(0x00); db(0x02); db(0x38); db(0x4e); db(0xae); db(0xff); db(0x2e); - db(0x2c); db(0x78); db(0x00); db(0x04); db(0x22); db(0x4c); db(0x4e); db(0xae); - db(0xfe); db(0x62); db(0x78); db(0x03); db(0x0c); db(0x6e); db(0x00); db(0x24); + db(0xc9); db(0x4e); db(0x20); db(0x0e); db(0x67); db(0x34); db(0x4e); db(0xae); + db(0xff); db(0xd0); db(0x4a); db(0x80); db(0x67); db(0x2c); db(0x20); db(0x40); + db(0x43); db(0xfa); db(0xfe); db(0xae); db(0x20); db(0x09); db(0x42); db(0x40); + db(0x21); db(0x40); db(0x00); db(0x20); db(0x21); db(0x7c); db(0x00); db(0x01); + db(0x00); db(0x00); db(0x00); db(0x24); db(0x31); db(0x7c); db(0x01); db(0x04); + db(0x00); db(0x10); db(0x31); db(0x7c); db(0x07); db(0xdb); db(0x00); db(0x14); + db(0x70); db(0x01); db(0x21); db(0x40); db(0x00); db(0x16); db(0x4e); db(0xae); + db(0xff); db(0xe2); db(0xc9); db(0x4e); db(0x4a); db(0xad); db(0x01); db(0x0c); + db(0x67); db(0x00); db(0x00); db(0x62); db(0x20); db(0x3c); db(0x00); db(0x00); + db(0x02); db(0x38); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); + db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x26); db(0x40); db(0x27); db(0x4c); + db(0x01); db(0xa8); db(0x7c); db(0x00); db(0xbc); db(0x6d); db(0x01); db(0x0e); + db(0x64); db(0x32); db(0x2f); db(0x06); db(0x2e); db(0x2d); db(0x01); db(0x10); + db(0x4a); db(0x45); db(0x67); db(0x04); db(0x08); db(0xc7); db(0x00); db(0x02); + db(0x2f); db(0x0b); db(0x20); db(0x4b); db(0x61); db(0x00); db(0x07); db(0x76); + db(0x26); db(0x5f); db(0x27); db(0x41); db(0x01); db(0xa4); db(0x0c); db(0x80); + db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x08); db(0x48); db(0x46); + db(0x52); db(0x46); db(0x48); db(0x46); db(0x60); db(0xd6); db(0x2c); db(0x1f); + db(0x52); db(0x46); db(0x60); db(0xc8); db(0x2c); db(0x78); db(0x00); db(0x04); + db(0x22); db(0x4b); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x38); + db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x2c); db(0x78); db(0x00); db(0x04); + db(0x20); db(0x0c); db(0x67); db(0x06); db(0x22); db(0x4c); db(0x4e); db(0xae); + db(0xfe); db(0x62); db(0x0c); db(0x6e); db(0x00); db(0x22); db(0x00); db(0x14); + db(0x65); db(0x6e); db(0x78); db(0x03); db(0x0c); db(0x6e); db(0x00); db(0x24); db(0x00); db(0x14); db(0x65); db(0x04); db(0x00); db(0x44); db(0x01); db(0x00); - db(0x30); db(0x3c); db(0xff); db(0x80); db(0x61); db(0x00); db(0x16); db(0xae); - db(0x4e); db(0x90); db(0x20); db(0x49); db(0x20); db(0x01); db(0x67); db(0x0c); - db(0x22); db(0x04); db(0x74); db(0xfb); db(0x43); db(0xfa); db(0x17); db(0xf9); - db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x41); db(0xfa); db(0x17); db(0x63); + db(0x30); db(0x3c); db(0xff); db(0x80); db(0x61); db(0x00); db(0x18); db(0x56); + db(0x4e); db(0x90); db(0x2a); db(0x00); db(0x20); db(0x49); db(0x20); db(0x01); + db(0x67); db(0x0c); db(0x22); db(0x04); db(0x74); db(0xfb); db(0x43); db(0xfa); + db(0x19); db(0x9f); db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x43); db(0xf9); + db(0x00); db(0x21); db(0x00); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xea); + db(0x4a); db(0x80); db(0x66); db(0x18); db(0x22); db(0x04); db(0x74); db(0xf6); + db(0x20); db(0x7c); db(0x00); db(0x20); db(0x00); db(0x00); db(0x20); db(0x05); + db(0x90); db(0x88); db(0x65); db(0x08); db(0x67); db(0x06); db(0x93); db(0xc9); + db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x41); db(0xfa); db(0x18); db(0xe3); db(0x43); db(0xfa); db(0x00); db(0x54); db(0x70); db(0x0a); db(0x61); db(0x00); - db(0x0c); db(0xae); db(0x22); db(0x40); db(0x72); db(0x01); db(0x30); db(0x3c); - db(0xff); db(0x48); db(0x61); db(0x00); db(0x16); db(0x80); db(0x4e); db(0x90); + db(0x0c); db(0xcc); db(0x22); db(0x40); db(0x72); db(0x01); db(0x30); db(0x3c); + db(0xff); db(0x48); db(0x61); db(0x00); db(0x18); db(0x00); db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x7f); db(0xff); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x24); db(0x00); db(0x28); db(0x01); db(0x26); db(0x09); db(0x24); db(0x48); db(0x43); db(0xfa); - db(0x17); db(0x6a); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); + db(0x18); db(0xea); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x67); db(0x14); db(0x2c); db(0x40); db(0x22); db(0x0a); db(0xe4); db(0x8b); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x22); db(0x4e); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x4c); db(0xdf); db(0x44); db(0x1c); db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d); - db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x41); db(0xfa); db(0x17); db(0x0e); + db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x41); db(0xfa); db(0x18); db(0x8e); db(0x43); db(0xfa); db(0x00); db(0x16); db(0x70); db(0x0f); db(0x22); db(0x3c); db(0x00); db(0x00); db(0x1f); db(0x40); db(0x61); db(0x00); db(0xff); db(0xa8); db(0x60); db(0xdc); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00); db(0x72); db(0x02); db(0x30); db(0x3c); - db(0xff); db(0x48); db(0x61); db(0x00); db(0x16); db(0x08); db(0x4e); db(0x90); - db(0x22); db(0x00); db(0x6b); db(0x04); db(0x61); db(0x00); db(0x08); db(0x26); + db(0xff); db(0x48); db(0x61); db(0x00); db(0x17); db(0x88); db(0x4e); db(0x90); + db(0x22); db(0x00); db(0x6b); db(0x04); db(0x61); db(0x00); db(0x08); db(0x40); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x00); db(0x20); - db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x15); db(0xee); + db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x17); db(0x6e); db(0x70); db(0x00); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0xa2); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x30); db(0x3c); - db(0xff); db(0x50); db(0x61); db(0x00); db(0x15); db(0xd8); db(0x70); db(0x02); + db(0xff); db(0x50); db(0x61); db(0x00); db(0x17); db(0x58); db(0x70); db(0x02); db(0x4e); db(0x90); db(0x0c); db(0x40); db(0x00); db(0x01); db(0x6d); db(0x00); db(0x00); db(0x7c); db(0x6e); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0xe4); db(0x0c); db(0x40); db(0x00); db(0x02); db(0x6e); db(0x08); @@ -101,29 +114,29 @@ db(0x00); db(0x18); db(0x25); db(0x49); db(0x00); db(0x1a); db(0x20); db(0x69); db(0x00); db(0x10); db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0x00); db(0xff); db(0x74); db(0x30); db(0x3c); db(0xff); db(0x50); - db(0x61); db(0x00); db(0x15); db(0x4a); db(0x70); db(0x04); db(0x4e); db(0x90); + db(0x61); db(0x00); db(0x16); db(0xca); db(0x70); db(0x04); db(0x4e); db(0x90); db(0x70); db(0x01); db(0x4c); db(0xdf); db(0x04); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xc0); db(0xe0); db(0x30); db(0x3c); db(0xff); db(0x38); - db(0x72); db(0x12); db(0x61); db(0x00); db(0x15); db(0x30); db(0x4e); db(0x90); + db(0x72); db(0x12); db(0x61); db(0x00); db(0x16); db(0xb0); db(0x4e); db(0x90); db(0x24); db(0x40); db(0x70); db(0x16); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40); db(0x13); db(0x7c); db(0x00); db(0x02); db(0x00); db(0x08); db(0x13); db(0x7c); - db(0x00); db(0xf6); db(0x00); db(0x09); db(0x41); db(0xfa); db(0x15); db(0xbd); + db(0x00); db(0xf6); db(0x00); db(0x09); db(0x41); db(0xfa); db(0x17); db(0x3d); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x00); db(0x16); db(0x23); db(0x48); db(0x00); db(0x12); db(0x23); db(0x4a); db(0x00); db(0x0e); db(0x70); db(0x05); db(0x4e); db(0xae); db(0xff); db(0x58); db(0x4c); db(0xdf); db(0x07); db(0x03); db(0x4e); db(0x75); db(0x52); db(0x91); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xc0); db(0xc0); db(0x61); db(0x00); - db(0xfc); db(0xa0); db(0x70); db(0x1a); db(0x22); db(0x3c); db(0x00); db(0x01); + db(0xfc); db(0x5c); db(0x70); db(0x1a); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40); - db(0x41); db(0xfa); db(0x15); db(0x90); db(0x23); db(0x48); db(0x00); db(0x0a); + db(0x41); db(0xfa); db(0x17); db(0x10); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa); db(0xfe); db(0xd2); db(0x23); db(0x48); db(0x00); db(0x0e); db(0x41); db(0xfa); db(0xfe); db(0xca); db(0x23); db(0x48); db(0x00); db(0x12); db(0x33); db(0x7c); db(0x02); db(0x14); db(0x00); db(0x08); db(0x70); db(0x03); db(0x4e); db(0xae); db(0xff); db(0x58); db(0x61); db(0x00); db(0xff); db(0x72); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x04); db(0x61); db(0x00); - db(0x14); db(0xa4); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x04); - db(0x61); db(0x00); db(0x0b); db(0x18); db(0x4c); db(0xdf); db(0x03); db(0x03); + db(0x16); db(0x24); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x04); + db(0x61); db(0x00); db(0x0b); db(0x36); db(0x4c); db(0xdf); db(0x03); db(0x03); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xc0); db(0xf2); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x24); db(0x48); db(0x26); db(0x49); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0xbe); db(0x22); db(0x3c); db(0x00); db(0x01); @@ -132,7 +145,7 @@ db(0x00); db(0x00); db(0x00); db(0x0e); db(0x52); db(0x40); db(0x0c); db(0x40); db(0x00); db(0x8c); db(0x66); db(0xf2); db(0x20); db(0x0a); db(0xe4); db(0x88); db(0x21); db(0x40); db(0x00); db(0x36); db(0x22); db(0x48); db(0x41); db(0xfa); - db(0x15); db(0x12); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x20); db(0x6b); + db(0x16); db(0x92); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x20); db(0x6b); db(0x01); db(0x9c); db(0x41); db(0xe8); db(0x00); db(0x12); db(0x4e); db(0xae); db(0xff); db(0x10); db(0x4c); db(0xdf); db(0x4f); db(0x03); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x7f); db(0x7e); db(0x2c); db(0x78); db(0x00); db(0x04); @@ -169,14 +182,14 @@ db(0x7e); db(0x00); db(0x60); db(0xf2); db(0x48); db(0xe7); db(0x40); db(0xf2); db(0x26); db(0x48); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x41); db(0xee); db(0x01); db(0x50); db(0x20); db(0x50); db(0x4a); db(0x90); db(0x67); db(0x1a); - db(0x22); db(0x68); db(0x00); db(0x0a); db(0x45); db(0xfa); db(0x14); db(0x6d); + db(0x22); db(0x68); db(0x00); db(0x0a); db(0x45); db(0xfa); db(0x15); db(0xed); db(0x10); db(0x19); db(0x12); db(0x1a); db(0xb0); db(0x01); db(0x66); db(0x06); db(0x4a); db(0x00); db(0x67); db(0x46); db(0x60); db(0xf2); db(0x20); db(0x50); db(0x60); db(0xe2); db(0x70); db(0x20); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x08); db(0x00); db(0x08); db(0x41); db(0xfa); - db(0x14); db(0x43); db(0x25); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa); - db(0x13); db(0xb2); db(0x25); db(0x48); db(0x00); db(0x0e); db(0x41); db(0xea); + db(0x15); db(0xc3); db(0x25); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa); + db(0x15); db(0x32); db(0x25); db(0x48); db(0x00); db(0x0e); db(0x41); db(0xea); db(0x00); db(0x12); db(0x20); db(0x88); db(0x58); db(0x90); db(0x21); db(0x48); db(0x00); db(0x08); db(0x41); db(0xee); db(0x01); db(0x50); db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xff); db(0x0a); db(0x20); db(0x4a); db(0x27); db(0x48); @@ -281,8 +294,8 @@ db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x20); db(0x6c); db(0x00); db(0x24); db(0x4a); db(0x90); db(0x4e); db(0x75); db(0x61); db(0x00); db(0xfc); db(0x76); db(0x21); db(0x40); db(0x01); db(0x9c); db(0x2f); db(0x08); db(0x30); db(0x3c); - db(0xff); db(0xec); db(0x61); db(0x00); db(0x0f); db(0xa8); db(0x2a); db(0x50); - db(0x30); db(0x3c); db(0xff); db(0x28); db(0x61); db(0x00); db(0x0f); db(0x9e); + db(0xff); db(0xec); db(0x61); db(0x00); db(0x11); db(0x28); db(0x2a); db(0x50); + db(0x30); db(0x3c); db(0xff); db(0x28); db(0x61); db(0x00); db(0x11); db(0x1e); db(0x22); db(0x48); db(0x20); db(0x5f); db(0x42); db(0xa8); db(0x01); db(0x90); db(0x42); db(0xa8); db(0x01); db(0x94); db(0x4e); db(0x91); db(0x26); db(0x00); db(0x0c); db(0x43); db(0xff); db(0xfe); db(0x67); db(0x00); db(0xf9); db(0x0e); @@ -290,11 +303,11 @@ db(0x2f); db(0x08); db(0x72); db(0x01); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x5f); db(0x21); db(0x40); db(0x01); db(0x94); db(0x4a); db(0x83); db(0x6a); db(0x0e); db(0x22); db(0x48); - db(0x30); db(0x3c); db(0xff); db(0x20); db(0x61); db(0x00); db(0x0f); db(0x5e); + db(0x30); db(0x3c); db(0xff); db(0x20); db(0x61); db(0x00); db(0x10); db(0xde); db(0x4e); db(0x90); db(0x60); db(0x26); db(0x2c); db(0x4c); db(0x2f); db(0x08); - db(0x4e); db(0xae); db(0xff); db(0x70); db(0x20); db(0x5f); db(0x22); db(0x48); + db(0x61); db(0x00); db(0x0f); db(0x72); db(0x20); db(0x5f); db(0x22); db(0x48); db(0x26); db(0x40); db(0x30); db(0x3c); db(0xff); db(0x20); db(0x61); db(0x00); - db(0x0f); db(0x44); db(0x4e); db(0x90); db(0x70); db(0x00); db(0x27); db(0x40); + db(0x10); db(0xc4); db(0x4e); db(0x90); db(0x70); db(0x00); db(0x27); db(0x40); db(0x00); db(0x08); db(0x27); db(0x40); db(0x00); db(0x10); db(0x27); db(0x40); db(0x00); db(0x20); db(0x20); db(0x69); db(0x01); db(0x94); db(0x4a); db(0xa9); db(0x01); db(0x90); db(0x67); db(0x2c); db(0x20); db(0x08); db(0x67); db(0x32); @@ -305,420 +318,424 @@ db(0x23); db(0x48); db(0x01); db(0x94); db(0x4a); db(0x80); db(0x67); db(0x0a); db(0x4a); db(0xa9); db(0x01); db(0x98); db(0x67); db(0x04); db(0x61); db(0x00); db(0xfa); db(0x62); db(0x4a); db(0x83); db(0x6b); db(0x00); db(0xf8); db(0x76); - db(0x30); db(0x3c); db(0xff); db(0x18); db(0x61); db(0x00); db(0x0e); db(0xe6); - db(0x4e); db(0x90); db(0x20); db(0x03); db(0x16); db(0x29); db(0x00); db(0x4f); - db(0x4a); db(0x80); db(0x66); db(0x1a); db(0x27); db(0x7c); db(0x00); db(0x00); - db(0x17); db(0x70); db(0x00); db(0x14); db(0x41); db(0xfa); db(0xf6); db(0x4e); - db(0x20); db(0x08); db(0xe4); db(0x88); db(0x27); db(0x40); db(0x00); db(0x20); - db(0x70); db(0xff); db(0x27); db(0x40); db(0x00); db(0x24); db(0x08); db(0x07); - db(0x00); db(0x03); db(0x66); db(0x48); db(0x08); db(0x07); db(0x00); db(0x00); - db(0x67); db(0x42); db(0x0c); db(0x03); db(0x00); db(0x80); db(0x67); db(0x3c); - db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0x14); db(0x22); db(0x3c); + db(0x2c); db(0x78); db(0x00); db(0x04); db(0x2f); db(0x09); db(0x43); db(0xfa); + db(0x11); db(0xcf); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x22); db(0x5f); + db(0x22); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x18); db(0x61); db(0x00); + db(0x10); db(0x54); db(0x4e); db(0x90); db(0x20); db(0x03); db(0x16); db(0x29); + db(0x00); db(0x4f); db(0x4a); db(0x80); db(0x66); db(0x24); db(0x27); db(0x7c); + db(0x00); db(0x00); db(0x17); db(0x70); db(0x00); db(0x14); db(0x41); db(0xfa); + db(0xf5); db(0xd4); db(0x70); db(0xff); db(0x22); db(0x0c); db(0x66); db(0x06); + db(0x41); db(0xfa); db(0xf6); db(0x0a); db(0x70); db(0x00); db(0x27); db(0x40); + db(0x00); db(0x24); db(0x20); db(0x08); db(0xe4); db(0x88); db(0x27); db(0x40); + db(0x00); db(0x20); db(0x08); db(0x07); db(0x00); db(0x03); db(0x66); db(0x48); + db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x42); db(0x0c); db(0x03); + db(0x00); db(0x80); db(0x67); db(0x3c); db(0x2c); db(0x78); db(0x00); db(0x04); + db(0x70); db(0x14); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); + db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40); db(0x30); db(0x3c); + db(0x10); db(0x00); db(0x80); db(0x03); db(0x33); db(0x40); db(0x00); db(0x08); + db(0x23); db(0x6d); db(0x01); db(0x04); db(0x00); db(0x0a); db(0x23); db(0x4b); + db(0x00); db(0x10); db(0x41); db(0xec); db(0x00); db(0x4a); db(0x4e); db(0xae); + db(0xff); db(0x7c); db(0x4e); db(0xae); db(0xfe); db(0xf2); db(0x4e); db(0xae); + db(0xff); db(0x76); db(0x72); db(0x00); db(0x70); db(0x00); db(0x4e); db(0x75); + db(0x76); db(0x00); db(0x24); db(0x49); db(0x20); db(0x4b); db(0x72); db(0x00); + db(0x22); db(0x41); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x08); + db(0x08); db(0x07); db(0x00); db(0x02); db(0x67); db(0x02); db(0x72); db(0x01); + db(0x70); db(0x80); db(0x2c); db(0x4c); db(0x61); db(0x00); db(0x0f); db(0x0e); + db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x6a); db(0x08); db(0x07); + db(0x00); db(0x02); db(0x66); db(0x64); db(0x20); db(0x52); db(0x74); db(0x02); + db(0x52); db(0x82); db(0x4a); db(0x30); db(0x28); db(0xfd); db(0x66); db(0xf8); + db(0x2c); db(0x78); db(0x00); db(0x04); db(0x06); db(0x82); db(0x00); db(0x00); + db(0x10); db(0x04); db(0x20); db(0x02); db(0x72); db(0x01); db(0x4e); db(0xae); + db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x42); db(0x20); db(0x52); + db(0x24); db(0x40); db(0x22); db(0x4a); db(0x12); db(0xd8); db(0x66); db(0xfc); + db(0x13); db(0x7c); db(0x00); db(0x3a); db(0xff); db(0xff); db(0x42); db(0x11); + db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x10); db(0x74); + db(0x4e); db(0xae); db(0xfe); db(0x68); db(0x2c); db(0x40); db(0x22); db(0x0a); + db(0x26); db(0x0f); db(0x4f); db(0xea); db(0x10); db(0x04); db(0x4e); db(0xae); + db(0xff); db(0x52); db(0x2e); db(0x43); db(0x26); db(0x01); db(0x22); db(0x4e); + db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62); + db(0x22); db(0x4a); db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x2e); + db(0x22); db(0x03); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); + db(0x3f); db(0x3e); db(0x2c); db(0x01); db(0x7e); db(0x06); db(0x2c); db(0x78); + db(0x00); db(0x04); db(0x43); db(0xfa); db(0x10); db(0x65); db(0x70); db(0x24); + db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x66); db(0x0e); + db(0x08); db(0x87); db(0x00); db(0x02); db(0x43); db(0xfa); db(0x10); db(0x53); + db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x28); db(0x40); + db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x38); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); - db(0x22); db(0x40); db(0x30); db(0x3c); db(0x10); db(0x00); db(0x80); db(0x03); - db(0x33); db(0x40); db(0x00); db(0x08); db(0x23); db(0x6d); db(0x01); db(0x04); - db(0x00); db(0x0a); db(0x23); db(0x4b); db(0x00); db(0x10); db(0x41); db(0xec); - db(0x00); db(0x4a); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x4e); db(0xae); - db(0xfe); db(0xf2); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x72); db(0x00); - db(0x70); db(0x00); db(0x4e); db(0x75); db(0x76); db(0x00); db(0x24); db(0x49); - db(0x20); db(0x4b); db(0x72); db(0x00); db(0x22); db(0x41); db(0x08); db(0x07); - db(0x00); db(0x01); db(0x67); db(0x08); db(0x08); db(0x07); db(0x00); db(0x02); - db(0x67); db(0x02); db(0x72); db(0x01); db(0x70); db(0x80); db(0x2c); db(0x4c); - db(0x4e); db(0xae); db(0xff); db(0x6a); db(0x08); db(0x07); db(0x00); db(0x01); - db(0x67); db(0x6c); db(0x08); db(0x07); db(0x00); db(0x02); db(0x66); db(0x66); - db(0x20); db(0x52); db(0x74); db(0x02); db(0x52); db(0x82); db(0x4a); db(0x30); - db(0x28); db(0xfd); db(0x66); db(0xf8); db(0x2c); db(0x78); db(0x00); db(0x04); - db(0x06); db(0x82); db(0x00); db(0x00); db(0x10); db(0x04); db(0x20); db(0x02); - db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80); - db(0x67); db(0x44); db(0x20); db(0x52); db(0x24); db(0x40); db(0x22); db(0x4a); - db(0x12); db(0xd8); db(0x66); db(0xfc); db(0x13); db(0x7c); db(0x00); db(0x3a); - db(0xff); db(0xff); db(0x42); db(0x11); db(0x2c); db(0x78); db(0x00); db(0x04); - db(0x43); db(0xfa); db(0x0f); db(0x10); db(0x70); db(0x00); db(0x4e); db(0xae); - db(0xfd); db(0xd8); db(0x2c); db(0x40); db(0x22); db(0x0a); db(0x26); db(0x0f); - db(0x4f); db(0xea); db(0x10); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x52); - db(0x2e); db(0x43); db(0x26); db(0x01); db(0x22); db(0x4e); db(0x2c); db(0x78); - db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4a); - db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x22); db(0x03); - db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e); - db(0x2c); db(0x01); db(0x7e); db(0x06); db(0x2c); db(0x78); db(0x00); db(0x04); - db(0x43); db(0xfa); db(0x0e); db(0xff); db(0x70); db(0x24); db(0x4e); db(0xae); - db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x66); db(0x0e); db(0x08); db(0x87); - db(0x00); db(0x02); db(0x43); db(0xfa); db(0x0e); db(0xed); db(0x70); db(0x00); - db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x28); db(0x40); db(0x20); db(0x3c); - db(0x00); db(0x00); db(0x02); db(0x38); db(0x22); db(0x3c); db(0x00); db(0x01); - db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40); - db(0x4a); db(0x80); db(0x67); db(0x2c); db(0x21); db(0x4c); db(0x01); db(0xa8); - db(0x48); db(0xe7); db(0x00); db(0x8a); db(0x61); db(0x00); db(0xfd); db(0xd6); - db(0x4c); db(0xdf); db(0x51); db(0x00); db(0x0c); db(0x80); db(0xff); db(0xff); - db(0xff); db(0xfe); db(0x67); db(0x08); db(0x48); db(0x46); db(0x52); db(0x46); - db(0x48); db(0x46); db(0x60); db(0xe4); db(0x22); db(0x48); db(0x20); db(0x3c); - db(0x00); db(0x00); db(0x02); db(0x38); db(0x4e); db(0xae); db(0xff); db(0x2e); - db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x4c); db(0xdf); - db(0x7c); db(0xfc); db(0x4e); db(0x75); db(0x30); db(0x3c); db(0xff); db(0x58); - db(0x61); db(0x00); db(0x0d); db(0x5a); db(0x70); db(0x03); db(0x4e); db(0x90); - db(0x22); db(0x6b); db(0x00); db(0xa8); db(0x23); db(0x40); db(0x00); db(0x20); - db(0x67); db(0x16); db(0x70); db(0x00); db(0x23); db(0x40); db(0x00); db(0x24); - db(0x33); db(0x7c); db(0x00); db(0x0b); db(0x00); db(0x1c); db(0x13); db(0x7c); - db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38); - db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x93); db(0xc9); - db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x20); db(0x40); db(0x4b); db(0xe8); - db(0x00); db(0x5c); db(0x43); db(0xfa); db(0x0e); db(0x26); db(0x70); db(0x00); - db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x24); db(0x40); db(0x20); db(0x3c); - db(0x00); db(0x00); db(0x00); db(0xb9); db(0x22); db(0x3c); db(0x00); db(0x01); - db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x26); db(0x40); - db(0x7c); db(0x00); db(0x26); db(0x86); db(0x27); db(0x46); db(0x00); db(0x04); - db(0x27); db(0x46); db(0x00); db(0x08); db(0x27); db(0x4a); db(0x00); db(0xa0); - db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x93); db(0xc9); db(0x4e); db(0xae); - db(0xfe); db(0xda); db(0x27); db(0x40); db(0x00); db(0xb0); db(0x41); db(0xfa); - db(0x0c); db(0xf2); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); - db(0x02); db(0xc4); db(0x27); db(0x40); db(0x00); db(0xa4); db(0x41); db(0xfa); - db(0x0c); db(0xef); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); - db(0x02); db(0xb4); db(0x27); db(0x40); db(0x00); db(0xa8); db(0x7a); db(0x00); - db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x80); db(0x20); db(0x4d); - db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x26); db(0x2c); - db(0x00); db(0x0a); db(0x30); db(0x3c); db(0xff); db(0x40); db(0x61); db(0x00); - db(0x0c); db(0xac); db(0x70); db(0x00); db(0x4e); db(0x90); db(0x24); db(0x00); - db(0x70); db(0x01); db(0x61); db(0x00); db(0xf9); db(0xd6); db(0x08); db(0x02); - db(0x00); db(0x01); db(0x67); db(0x06); db(0x70); db(0x01); db(0x61); db(0x00); - db(0xfb); db(0x3e); db(0x60); db(0x00); db(0x01); db(0x44); db(0x20); db(0x4d); - db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x4a); db(0x80); - db(0x66); db(0x10); db(0x70); db(0x00); db(0x12); db(0x2d); db(0x00); db(0x0f); - db(0x03); db(0xc0); db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); - db(0xfe); db(0xc2); db(0x08); db(0x2b); db(0x00); db(0x00); db(0x00); db(0xad); - db(0x67); db(0x0a); db(0x61); db(0x00); db(0xff); db(0x08); db(0x08); db(0xab); - db(0x00); db(0x00); db(0x00); db(0xad); db(0x08); db(0x2b); db(0x00); db(0x01); - db(0x00); db(0xad); db(0x67); db(0x0a); db(0x61); db(0x00); db(0x0b); db(0xf8); - db(0x08); db(0xab); db(0x00); db(0x01); db(0x00); db(0xad); db(0x4a); db(0x2b); - db(0x00); db(0xac); db(0x67); db(0x24); db(0x30); db(0x3c); db(0xff); db(0x58); - db(0x61); db(0x00); db(0x0c); db(0x42); db(0x70); db(0x01); db(0x4e); db(0x90); - db(0x4a); db(0x80); db(0x67); db(0x04); db(0x61); db(0x00); db(0xfb); db(0xb6); - db(0x42); db(0x2b); db(0x00); db(0xac); db(0x30); db(0x3c); db(0xff); db(0x58); - db(0x61); db(0x00); db(0x0c); db(0x2a); db(0x70); db(0x02); db(0x4e); db(0x90); - db(0x20); db(0x0c); db(0x67); db(0x56); db(0x0c); db(0x6c); db(0x00); db(0x26); - db(0x00); db(0x12); db(0x66); db(0x4e); db(0x0c); db(0xac); db(0x40); db(0x00); - db(0x00); db(0x00); db(0x00); db(0x14); db(0x66); db(0x44); db(0x0c); db(0x6c); - db(0x12); db(0x34); db(0x00); db(0x18); db(0x66); db(0x3c); db(0x20); db(0x6c); - db(0x00); db(0x1a); db(0x20); db(0x28); db(0x00); db(0x0c); db(0x02); db(0x80); - db(0x80); db(0x00); db(0x00); db(0x08); db(0x0c); db(0x80); db(0x80); db(0x00); - db(0x00); db(0x08); db(0x66); db(0x1a); db(0x02); db(0xa8); db(0x7f); db(0xff); - db(0xff); db(0xff); db(0x00); db(0x0c); db(0x20); db(0x68); db(0x00); db(0x10); - db(0x22); db(0x4c); db(0x12); db(0xbc); db(0x00); db(0x08); db(0x4e); db(0xae); - db(0xfe); db(0x92); db(0x60); db(0x00); db(0xff); db(0x4a); db(0x22); db(0x4c); - db(0x70); db(0x26); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x60); db(0x00); - db(0xff); db(0x3e); db(0x74); db(0xfe); db(0x20); db(0x0c); db(0x67); db(0x14); - db(0x26); db(0x2c); db(0x00); db(0x0a); db(0x66); db(0x42); db(0x74); db(0xff); - db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x0b); db(0xb6); - db(0x70); db(0x01); db(0x4e); db(0x90); db(0x45); db(0xeb); db(0x00); db(0x04); - db(0x20); db(0x52); db(0x20); db(0x08); db(0x67); db(0x00); db(0xff); db(0x18); - db(0x22); db(0x50); db(0x20); db(0x40); db(0x20); db(0x28); db(0x00); db(0x04); - db(0xb4); db(0x80); db(0x66); db(0x16); db(0x48); db(0xe7); db(0x00); db(0xc0); - db(0x28); db(0x68); db(0x00); db(0x0a); db(0x61); db(0x4a); db(0x53); db(0x85); - db(0x4c); db(0xdf); db(0x03); db(0x00); db(0x24); db(0x89); db(0x20); db(0x49); - db(0x60); db(0xd8); db(0x24); db(0x48); db(0x20); db(0x49); db(0x60); db(0xd2); - db(0x0c); db(0x85); db(0x00); db(0x00); db(0x00); db(0x14); db(0x65); db(0x00); - db(0x00); db(0x0a); db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x04); - db(0x60); db(0x12); db(0x61); db(0x5e); db(0x30); db(0x3c); db(0xff); db(0x30); - db(0x61); db(0x00); db(0x0b); db(0x62); db(0x4e); db(0x90); db(0x4a); db(0x80); - db(0x67); db(0x0e); db(0x52); db(0x85); db(0x28); db(0xab); db(0x00); db(0x04); - db(0x27); db(0x4c); db(0x00); db(0x04); db(0x60); db(0x00); db(0xfe); db(0xc0); - db(0x28); db(0x43); db(0x61); db(0x04); db(0x60); db(0x00); db(0xfe); db(0xb8); - db(0x0c); db(0xac); db(0x00); db(0x00); db(0x00); db(0x1f); db(0x00); db(0x08); - db(0x66); db(0x04); db(0x61); db(0x00); db(0xfa); db(0x9e); db(0x0c); db(0xac); - db(0x00); db(0x00); db(0x04); db(0x09); db(0x00); db(0x08); db(0x66); db(0x14); - db(0x61); db(0x00); db(0xfa); db(0xcc); db(0x66); db(0x0e); db(0x30); db(0x3c); - db(0xff); db(0x58); db(0x61); db(0x00); db(0x0b); db(0x20); db(0x70); db(0x00); - db(0x4e); db(0x90); db(0x60); db(0xec); db(0x22); db(0x54); db(0x20); db(0x6c); - db(0x00); db(0x04); db(0x29); db(0x4d); db(0x00); db(0x04); db(0x4e); db(0xee); - db(0xfe); db(0x92); db(0x2f); db(0x05); db(0x7a); db(0xfc); db(0x24); db(0x53); - db(0x2e); db(0x0a); db(0x22); db(0x0a); db(0x67); db(0x00); db(0x00); db(0x0c); - db(0x52); db(0x85); db(0x67); db(0x1e); db(0x22); db(0x4a); db(0x24); db(0x52); - db(0x60); db(0xf0); db(0x52); db(0x85); db(0x67); db(0x3c); db(0x24); db(0x47); - db(0x70); db(0x18); db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); - db(0x52); db(0x46); db(0x24); db(0x40); db(0x24); db(0x87); db(0x2e); db(0x0a); - db(0x60); db(0xe8); db(0x20); db(0x12); db(0x67); db(0x24); db(0x20); db(0x40); - db(0x20); db(0x10); db(0x67); db(0x1e); db(0x20); db(0x40); db(0x20); db(0x10); - db(0x67); db(0x18); db(0x70); db(0x00); db(0x22); db(0x80); db(0x22); db(0x4a); - db(0x24); db(0x51); db(0x70); db(0x18); db(0x4e); db(0xae); db(0xff); db(0x2e); - db(0x06); db(0x86); db(0x00); db(0x01); db(0x00); db(0x00); db(0x20); db(0x0a); - db(0x66); db(0xec); db(0x26); db(0x87); db(0x2a); db(0x1f); db(0x4e); db(0x75); - db(0x20); db(0x88); db(0x58); db(0x90); db(0x42); db(0xa8); db(0x00); db(0x04); - db(0x21); db(0x48); db(0x00); db(0x08); db(0x4e); db(0x75); db(0x48); db(0xe7); - db(0x20); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0xff); - db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x91); db(0xc8); db(0x24); db(0x00); - db(0x6b); db(0x32); db(0x70); db(0x22); db(0x22); db(0x3c); db(0x00); db(0x01); - db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x91); db(0xc8); - db(0x24); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x1e); db(0x15); db(0x7c); - db(0x00); db(0x04); db(0x00); db(0x08); db(0x15); db(0x42); db(0x00); db(0x0f); - db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x25); db(0x40); - db(0x00); db(0x10); db(0x41); db(0xea); db(0x00); db(0x14); db(0x61); db(0x00); - db(0xff); db(0xb0); db(0x20); db(0x4a); db(0x20); db(0x08); db(0x4c); db(0xdf); - db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22); - db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4a); db(0x80); db(0x67); db(0x24); - db(0x24); db(0x40); db(0x24); db(0x01); db(0x66); db(0x02); db(0x74); db(0x30); - db(0x20); db(0x02); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); - db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40); db(0x11); db(0x7c); - db(0x00); db(0x0a); db(0x00); db(0x08); db(0x31); db(0x42); db(0x00); db(0x12); - db(0x21); db(0x4a); db(0x00); db(0x0e); db(0x4a); db(0x80); db(0x4c); db(0xdf); - db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x30); db(0x22); - db(0x24); db(0x48); db(0x24); db(0x00); db(0x26); db(0x01); db(0x2c); db(0x78); - db(0x00); db(0x04); db(0x61); db(0x00); db(0xff); db(0x6a); db(0x22); db(0x03); - db(0x61); db(0x00); db(0xff); db(0xb2); db(0x67); db(0x18); db(0x20); db(0x4a); - db(0x22); db(0x40); db(0x24); db(0x40); db(0x20); db(0x02); db(0x72); db(0x00); - db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x22); db(0x00); db(0x70); db(0x00); - db(0x4a); db(0x81); db(0x66); db(0x02); db(0x20); db(0x0a); db(0x4a); db(0x80); - db(0x4c); db(0xdf); db(0x44); db(0x0c); db(0x4e); db(0x75); db(0x48); db(0xe7); - db(0x38); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x28); db(0x00); - db(0x24); db(0x08); db(0x26); db(0x09); db(0x20); db(0x3c); db(0x00); db(0x00); - db(0x08); db(0x5c); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); - db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00); - db(0x00); db(0x34); db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x01); - db(0x00); db(0x08); db(0x15); db(0x44); db(0x00); db(0x09); db(0x25); db(0x42); - db(0x00); db(0x0a); db(0x47); db(0xea); db(0x00); db(0x5c); db(0x25); db(0x4b); - db(0x00); db(0x3a); db(0x47); db(0xeb); db(0x08); db(0x00); db(0x25); db(0x4b); - db(0x00); db(0x3e); db(0x25); db(0x4b); db(0x00); db(0x36); db(0x22); db(0x4a); - db(0x24); db(0x43); db(0x97); db(0xcb); db(0x24); db(0x09); db(0x4e); db(0xae); - db(0xfe); db(0xe6); db(0x20); db(0x02); db(0x4c); db(0xdf); db(0x4c); db(0x1c); - db(0x4e); db(0x75); db(0x41); db(0xfa); db(0x0a); db(0x1e); db(0x43); db(0xfa); - db(0x01); db(0x30); db(0x70); db(0x13); db(0x61); db(0x00); db(0xff); db(0x98); - db(0x4e); db(0x75); db(0x22); db(0x6d); db(0x02); db(0x0c); db(0x33); db(0x7c); - db(0x00); db(0x0a); db(0x00); db(0x1c); db(0x13); db(0x7c); db(0x00); db(0x01); - db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x22); db(0x6d); - db(0x02); db(0x0c); db(0x25); db(0x69); db(0x00); db(0x20); db(0x00); db(0x0e); - db(0x25); db(0x69); db(0x00); db(0x24); db(0x00); db(0x12); db(0x22); db(0x6d); - db(0x02); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); - db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x4e); db(0x75); db(0x42); db(0xaa); - db(0x00); db(0x0e); db(0x42); db(0xaa); db(0x00); db(0x12); db(0x22); db(0x6d); - db(0x02); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); - db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x4e); db(0x75); db(0x48); db(0xe7); - db(0xf8); db(0xfe); db(0x2a); db(0x48); db(0x95); db(0xca); db(0x97); db(0xcb); - db(0x99); db(0xcc); db(0x78); db(0x00); db(0x2c); db(0x6d); db(0x00); db(0x18); - db(0x20); db(0x6d); db(0x00); db(0x14); db(0x20); db(0x28); db(0x00); db(0x3c); - db(0x67); db(0x5c); db(0x20); db(0x40); db(0x41); db(0xe8); db(0x00); db(0x2c); - db(0x28); db(0x48); db(0x4e); db(0xae); db(0xfc); db(0xe8); db(0x72); db(0xff); - db(0x74); db(0xff); db(0xb2); db(0x80); db(0x67); db(0x48); db(0x26); db(0x00); - db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x41); db(0xed); db(0x00); db(0xc0); - db(0x70); db(0x66); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xed); - db(0x00); db(0xc0); db(0x38); db(0x28); db(0x00); db(0x64); db(0x2c); db(0x6d); - db(0x00); db(0x18); db(0x91); db(0xc8); db(0x43); db(0xed); db(0x00); db(0x38); - db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x58); db(0x22); db(0x3c); - db(0x80); db(0x00); db(0x10); db(0x00); db(0x24); db(0x03); db(0x4e); db(0xae); - db(0xfd); db(0x0c); db(0x72); db(0xff); db(0x74); db(0xff); db(0x4a); db(0x80); - db(0x6b); db(0x0c); db(0x45); db(0xed); db(0x00); db(0x38); db(0x22); db(0x2a); - db(0x00); db(0x32); db(0x24); db(0x2a); db(0x00); db(0x36); db(0x20); db(0x2c); - db(0x00); db(0x1c); db(0xb8); db(0x6d); db(0x00); db(0x2c); db(0x66); db(0x12); - db(0xb0); db(0xad); db(0x00); db(0x28); db(0x66); db(0x0c); db(0xb2); db(0xad); - db(0x00); db(0x20); db(0x66); db(0x06); db(0xb4); db(0xad); db(0x00); db(0x24); - db(0x67); db(0x40); db(0x2b); db(0x40); db(0x00); db(0x28); db(0x2b); db(0x41); - db(0x00); db(0x20); db(0x2b); db(0x42); db(0x00); db(0x24); db(0x3b); db(0x44); - db(0x00); db(0x2c); db(0x91); db(0xc8); db(0x43); db(0xed); db(0x00); db(0x90); - db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x58); db(0x22); db(0x3c); - db(0x80); db(0x00); db(0x00); db(0x00); db(0x24); db(0x03); db(0x4e); db(0xae); - db(0xfd); db(0x0c); db(0x4a); db(0x80); db(0x6b); db(0x04); db(0x47); db(0xed); - db(0x00); db(0x90); db(0x34); db(0x2d); db(0x00); db(0x2c); db(0x30); db(0x3c); - db(0xff); db(0x38); db(0x72); db(0x01); db(0x61); db(0x00); db(0x08); db(0x56); - db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x7f); db(0x1f); db(0x4e); db(0x75); - db(0x2c); db(0x78); db(0x00); db(0x04); db(0x3e); db(0x2e); db(0x00); db(0x14); - db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x7c); db(0x00); - db(0x01); db(0xc6); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); - db(0x28); db(0x40); db(0x70); db(0x14); db(0x22); db(0x4c); db(0x4e); db(0xae); - db(0xfe); db(0xd4); db(0x70); db(0x00); db(0x30); db(0x3c); db(0x02); db(0x3c); + db(0x20); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x2c); db(0x21); db(0x4c); + db(0x01); db(0xa8); db(0x48); db(0xe7); db(0x00); db(0x8a); db(0x61); db(0x00); + db(0xfd); db(0xbc); db(0x4c); db(0xdf); db(0x51); db(0x00); db(0x0c); db(0x80); + db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x08); db(0x48); db(0x46); + db(0x52); db(0x46); db(0x48); db(0x46); db(0x60); db(0xe4); db(0x22); db(0x48); + db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x38); db(0x4e); db(0xae); + db(0xff); db(0x2e); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x62); + db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x4e); db(0x75); db(0x30); db(0x3c); + db(0xff); db(0x58); db(0x61); db(0x00); db(0x0e); db(0xc0); db(0x70); db(0x03); + db(0x4e); db(0x90); db(0x22); db(0x6b); db(0x00); db(0xa8); db(0x23); db(0x40); + db(0x00); db(0x20); db(0x67); db(0x16); db(0x70); db(0x00); db(0x23); db(0x40); + db(0x00); db(0x24); db(0x33); db(0x7c); db(0x00); db(0x0b); db(0x00); db(0x1c); + db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae); + db(0xfe); db(0x38); db(0x4e); db(0x75); db(0x7e); db(0x00); db(0x2c); db(0x78); + db(0x00); db(0x04); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); + db(0x20); db(0x40); db(0x4b); db(0xe8); db(0x00); db(0x5c); db(0x43); db(0xfa); + db(0x0f); db(0x8a); db(0x4e); db(0xae); db(0xfe); db(0x68); db(0x24); db(0x40); + db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0xb9); db(0x22); db(0x3c); + db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); + db(0x26); db(0x40); db(0x7c); db(0x00); db(0x26); db(0x86); db(0x27); db(0x46); + db(0x00); db(0x04); db(0x27); db(0x46); db(0x00); db(0x08); db(0x27); db(0x4a); + db(0x00); db(0xa0); db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x93); db(0xc9); + db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x27); db(0x40); db(0x00); db(0xb0); + db(0x41); db(0xfa); db(0x0e); db(0x58); db(0x70); db(0x00); db(0x72); db(0x00); + db(0x61); db(0x00); db(0x02); db(0xc8); db(0x27); db(0x40); db(0x00); db(0xa4); + db(0x41); db(0xfa); db(0x0e); db(0x55); db(0x70); db(0x00); db(0x72); db(0x00); + db(0x61); db(0x00); db(0x02); db(0xb8); db(0x27); db(0x40); db(0x00); db(0xa8); + db(0x7a); db(0x00); db(0x26); db(0x07); db(0x66); db(0x12); db(0x20); db(0x4d); + db(0x4e); db(0xae); db(0xfe); db(0x80); db(0x20); db(0x4d); db(0x4e); db(0xae); + db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x26); db(0x2c); db(0x00); db(0x0a); + db(0x30); db(0x3c); db(0xff); db(0x40); db(0x61); db(0x00); db(0x0e); db(0x0e); + db(0x70); db(0x00); db(0x4e); db(0x90); db(0x24); db(0x00); db(0x70); db(0x01); + db(0x61); db(0x00); db(0xf9); db(0xb8); db(0x08); db(0x02); db(0x00); db(0x01); + db(0x67); db(0x06); db(0x70); db(0x01); db(0x61); db(0x00); db(0xfb); db(0x20); + db(0x60); db(0x00); db(0x01); db(0x44); db(0x20); db(0x4d); db(0x4e); db(0xae); + db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x4a); db(0x80); db(0x66); db(0x10); + db(0x70); db(0x00); db(0x12); db(0x2d); db(0x00); db(0x0f); db(0x03); db(0xc0); + db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2); + db(0x08); db(0x2b); db(0x00); db(0x00); db(0x00); db(0xad); db(0x67); db(0x0a); + db(0x61); db(0x00); db(0xff); db(0x04); db(0x08); db(0xab); db(0x00); db(0x00); + db(0x00); db(0xad); db(0x08); db(0x2b); db(0x00); db(0x01); db(0x00); db(0xad); + db(0x67); db(0x0a); db(0x61); db(0x00); db(0x0b); db(0xfa); db(0x08); db(0xab); + db(0x00); db(0x01); db(0x00); db(0xad); db(0x4a); db(0x2b); db(0x00); db(0xac); + db(0x67); db(0x24); db(0x30); db(0x3c); db(0xff); db(0x58); db(0x61); db(0x00); + db(0x0d); db(0xa4); db(0x70); db(0x01); db(0x4e); db(0x90); db(0x4a); db(0x80); + db(0x67); db(0x04); db(0x61); db(0x00); db(0xfb); db(0x98); db(0x42); db(0x2b); + db(0x00); db(0xac); db(0x30); db(0x3c); db(0xff); db(0x58); db(0x61); db(0x00); + db(0x0d); db(0x8c); db(0x70); db(0x02); db(0x4e); db(0x90); db(0x20); db(0x0c); + db(0x67); db(0x56); db(0x0c); db(0x6c); db(0x00); db(0x26); db(0x00); db(0x12); + db(0x66); db(0x4e); db(0x0c); db(0xac); db(0x40); db(0x00); db(0x00); db(0x00); + db(0x00); db(0x14); db(0x66); db(0x44); db(0x0c); db(0x6c); db(0x12); db(0x34); + db(0x00); db(0x18); db(0x66); db(0x3c); db(0x20); db(0x6c); db(0x00); db(0x1a); + db(0x20); db(0x28); db(0x00); db(0x0c); db(0x02); db(0x80); db(0x80); db(0x00); + db(0x00); db(0x08); db(0x0c); db(0x80); db(0x80); db(0x00); db(0x00); db(0x08); + db(0x66); db(0x1a); db(0x02); db(0xa8); db(0x7f); db(0xff); db(0xff); db(0xff); + db(0x00); db(0x0c); db(0x20); db(0x68); db(0x00); db(0x10); db(0x22); db(0x4c); + db(0x12); db(0xbc); db(0x00); db(0x08); db(0x4e); db(0xae); db(0xfe); db(0x92); + db(0x60); db(0x00); db(0xff); db(0x4a); db(0x22); db(0x4c); db(0x70); db(0x26); + db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x60); db(0x00); db(0xff); db(0x3e); + db(0x74); db(0xfe); db(0x20); db(0x0c); db(0x67); db(0x14); db(0x26); db(0x2c); + db(0x00); db(0x0a); db(0x66); db(0x42); db(0x74); db(0xff); db(0x30); db(0x3c); + db(0xff); db(0x50); db(0x61); db(0x00); db(0x0d); db(0x18); db(0x70); db(0x01); + db(0x4e); db(0x90); db(0x45); db(0xeb); db(0x00); db(0x04); db(0x20); db(0x52); + db(0x20); db(0x08); db(0x67); db(0x00); db(0xff); db(0x18); db(0x22); db(0x50); + db(0x20); db(0x40); db(0x20); db(0x28); db(0x00); db(0x04); db(0xb4); db(0x80); + db(0x66); db(0x16); db(0x48); db(0xe7); db(0x00); db(0xc0); db(0x28); db(0x68); + db(0x00); db(0x0a); db(0x61); db(0x4a); db(0x53); db(0x85); db(0x4c); db(0xdf); + db(0x03); db(0x00); db(0x24); db(0x89); db(0x20); db(0x49); db(0x60); db(0xd8); + db(0x24); db(0x48); db(0x20); db(0x49); db(0x60); db(0xd2); db(0x0c); db(0x85); + db(0x00); db(0x00); db(0x00); db(0x14); db(0x65); db(0x00); db(0x00); db(0x0a); + db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x04); db(0x60); db(0x12); + db(0x61); db(0x5e); db(0x30); db(0x3c); db(0xff); db(0x30); db(0x61); db(0x00); + db(0x0c); db(0xc4); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x0e); + db(0x52); db(0x85); db(0x28); db(0xab); db(0x00); db(0x04); db(0x27); db(0x4c); + db(0x00); db(0x04); db(0x60); db(0x00); db(0xfe); db(0xc0); db(0x28); db(0x43); + db(0x61); db(0x04); db(0x60); db(0x00); db(0xfe); db(0xb8); db(0x0c); db(0xac); + db(0x00); db(0x00); db(0x00); db(0x1f); db(0x00); db(0x08); db(0x66); db(0x04); + db(0x61); db(0x00); db(0xfa); db(0x80); db(0x0c); db(0xac); db(0x00); db(0x00); + db(0x04); db(0x09); db(0x00); db(0x08); db(0x66); db(0x14); db(0x61); db(0x00); + db(0xfa); db(0xae); db(0x66); db(0x0e); db(0x30); db(0x3c); db(0xff); db(0x58); + db(0x61); db(0x00); db(0x0c); db(0x82); db(0x70); db(0x00); db(0x4e); db(0x90); + db(0x60); db(0xec); db(0x22); db(0x54); db(0x20); db(0x6c); db(0x00); db(0x04); + db(0x29); db(0x4d); db(0x00); db(0x04); db(0x4e); db(0xee); db(0xfe); db(0x92); + db(0x2f); db(0x05); db(0x7a); db(0xfc); db(0x24); db(0x53); db(0x2e); db(0x0a); + db(0x22); db(0x0a); db(0x67); db(0x00); db(0x00); db(0x0c); db(0x52); db(0x85); + db(0x67); db(0x1e); db(0x22); db(0x4a); db(0x24); db(0x52); db(0x60); db(0xf0); + db(0x52); db(0x85); db(0x67); db(0x3c); db(0x24); db(0x47); db(0x70); db(0x18); + db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x52); db(0x46); + db(0x24); db(0x40); db(0x24); db(0x87); db(0x2e); db(0x0a); db(0x60); db(0xe8); + db(0x20); db(0x12); db(0x67); db(0x24); db(0x20); db(0x40); db(0x20); db(0x10); + db(0x67); db(0x1e); db(0x20); db(0x40); db(0x20); db(0x10); db(0x67); db(0x18); + db(0x70); db(0x00); db(0x22); db(0x80); db(0x22); db(0x4a); db(0x24); db(0x51); + db(0x70); db(0x18); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x06); db(0x86); + db(0x00); db(0x01); db(0x00); db(0x00); db(0x20); db(0x0a); db(0x66); db(0xec); + db(0x26); db(0x87); db(0x2a); db(0x1f); db(0x4e); db(0x75); db(0x20); db(0x88); + db(0x58); db(0x90); db(0x42); db(0xa8); db(0x00); db(0x04); db(0x21); db(0x48); + db(0x00); db(0x08); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22); + db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0xff); db(0x4e); db(0xae); + db(0xfe); db(0xb6); db(0x91); db(0xc8); db(0x24); db(0x00); db(0x6b); db(0x32); + db(0x70); db(0x22); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); + db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x91); db(0xc8); db(0x24); db(0x40); + db(0x4a); db(0x80); db(0x67); db(0x1e); db(0x15); db(0x7c); db(0x00); db(0x04); + db(0x00); db(0x08); db(0x15); db(0x42); db(0x00); db(0x0f); db(0x93); db(0xc9); + db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x25); db(0x40); db(0x00); db(0x10); + db(0x41); db(0xea); db(0x00); db(0x14); db(0x61); db(0x00); db(0xff); db(0xb0); + db(0x20); db(0x4a); db(0x20); db(0x08); db(0x4c); db(0xdf); db(0x44); db(0x04); + db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22); db(0x2c); db(0x78); + db(0x00); db(0x04); db(0x4a); db(0x80); db(0x67); db(0x24); db(0x24); db(0x40); + db(0x24); db(0x01); db(0x66); db(0x02); db(0x74); db(0x30); db(0x20); db(0x02); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); - db(0xff); db(0x3a); db(0x2a); db(0x40); db(0x47); db(0xed); db(0x00); db(0x16); - db(0x27); db(0x4e); db(0x00); db(0x10); db(0x27); db(0x4c); db(0x00); db(0x08); - db(0x27); db(0x46); db(0x00); db(0x0c); db(0x70); db(0xff); db(0x37); db(0x40); - db(0x00); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x05); - db(0x61); db(0x00); db(0x07); db(0xfa); db(0x20); db(0x0d); db(0x06); db(0x80); - db(0x00); db(0x00); db(0x02); db(0x10); db(0x4e); db(0x90); db(0x43); db(0xed); - db(0x00); db(0x00); db(0x13); db(0x7c); db(0x00); db(0x02); db(0x00); db(0x08); - db(0x13); db(0x7c); db(0x00); db(0x05); db(0x00); db(0x09); db(0x41); db(0xfa); - db(0x08); db(0x7a); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa); - db(0x02); db(0xf4); db(0x23); db(0x48); db(0x00); db(0x12); db(0x23); db(0x4d); - db(0x00); db(0x0e); db(0x70); db(0x05); db(0x4e); db(0xae); db(0xff); db(0x58); - db(0x20); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x70); db(0x00); - db(0x53); db(0xab); db(0x00); db(0x1c); db(0x6a); db(0x06); db(0x70); db(0x0a); - db(0x27); db(0x40); db(0x00); db(0x1c); db(0x4a); db(0xab); db(0x00); db(0x14); - db(0x66); db(0x16); db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xe0); - db(0x43); db(0xfa); db(0x08); db(0xb4); db(0x70); db(0x00); db(0x4e); db(0xae); - db(0xfd); db(0xd8); db(0x27); db(0x40); db(0x00); db(0x14); db(0x67); db(0xd0); - db(0x4a); db(0xab); db(0x00); db(0x18); db(0x66); db(0x18); db(0x4a); db(0xab); - db(0x00); db(0x1c); db(0x66); db(0xc4); db(0x43); db(0xfa); db(0x08); db(0xaa); - db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x27); db(0x40); - db(0x00); db(0x18); db(0x67); db(0x00); db(0xff); db(0xb4); db(0x4a); db(0xad); - db(0x02); db(0x08); db(0x66); db(0x38); db(0x4a); db(0xab); db(0x00); db(0x1c); - db(0x66); db(0xa6); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee); - db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x07); db(0x6e); db(0x4e); db(0xae); - db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x76); - db(0x4a); db(0x82); db(0x67); db(0x8c); db(0x41); db(0xfa); db(0x07); db(0x5c); - db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0xfd); db(0x2e); - db(0x2b); db(0x40); db(0x02); db(0x08); db(0x67); db(0x00); db(0x02); db(0x32); - db(0x60); db(0x00); db(0xff); db(0x76); db(0x4a); db(0xad); db(0x02); db(0x0c); - db(0x66); db(0x48); db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0x00); - db(0xff); db(0x68); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee); - db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x07); db(0x3b); db(0x4e); db(0xae); - db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x76); - db(0x4a); db(0x82); db(0x67); db(0x00); db(0xff); db(0x4c); db(0x41); db(0xfa); - db(0x07); db(0x27); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); - db(0xfc); db(0xec); db(0x2b); db(0x40); db(0x02); db(0x0c); db(0x67); db(0x00); - db(0x01); db(0xf0); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x00); - db(0x61); db(0x00); db(0x06); db(0xf2); db(0x4e); db(0x90); db(0x60); db(0x00); - db(0xff); db(0x28); db(0x0c); db(0x47); db(0x00); db(0x24); db(0x65); db(0x12); - db(0x53); db(0xab); db(0x00); db(0x34); db(0x6a); db(0x0c); db(0x20); db(0x4b); - db(0x61); db(0x00); db(0xfd); db(0xb4); db(0x70); db(0x32); db(0x27); db(0x40); - db(0x00); db(0x34); db(0x22); db(0x6d); db(0x02); db(0x08); db(0x45); db(0xed); - db(0x01); db(0x3c); db(0x33); db(0x7c); db(0x00); db(0x0b); db(0x00); db(0x1c); - db(0x23); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x16); db(0x00); db(0x24); - db(0x23); db(0x4a); db(0x00); db(0x28); db(0x10); db(0x2d); db(0x02); db(0x10); - db(0x0c); db(0x47); db(0x00); db(0x27); db(0x65); db(0x00); db(0x01); db(0x52); - db(0x08); db(0x00); db(0x00); db(0x01); db(0x67); db(0x00); db(0x01); db(0x4a); - db(0x41); db(0xed); db(0x01); db(0x68); db(0x25); db(0x48); db(0x00); db(0x0a); - db(0x15); db(0x7c); db(0x00); db(0x13); db(0x00); db(0x04); db(0x15); db(0x7c); - db(0x00); db(0x03); db(0x00); db(0x05); db(0x42); db(0x90); db(0x42); db(0xa8); - db(0x00); db(0x04); db(0x42); db(0xa8); db(0x00); db(0x08); db(0x42); db(0x68); - db(0x00); db(0x0c); db(0x42); db(0x6a); db(0x00); db(0x06); db(0x61); db(0x00); - db(0x01); db(0x72); db(0x31); db(0x6d); db(0x02); db(0x1a); db(0x00); db(0x0e); - db(0x42); db(0x68); db(0x00); db(0x10); db(0x31); db(0x6d); db(0x02); db(0x1c); - db(0x00); db(0x12); db(0x42); db(0x68); db(0x00); db(0x14); db(0x31); db(0x6d); - db(0x02); db(0x14); db(0x00); db(0x16); db(0x42); db(0x68); db(0x00); db(0x18); - db(0x31); db(0x6d); db(0x02); db(0x16); db(0x00); db(0x1a); db(0x43); db(0xed); - db(0x01); db(0x88); db(0x21); db(0x49); db(0x00); db(0x1c); db(0x22); db(0xfc); - db(0x80); db(0x03); db(0xa0); db(0x06); db(0x30); db(0x2d); db(0x02); db(0x30); - db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x22); db(0xfc); - db(0x80); db(0x03); db(0xa0); db(0x07); db(0x22); db(0xed); db(0x02); db(0x32); - db(0x70); db(0x00); db(0x30); db(0x2d); db(0x02); db(0x20); db(0x6b); db(0x08); - db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x09); db(0x22); db(0xc0); - db(0x30); db(0x2d); db(0x02); db(0x22); db(0x6b); db(0x08); db(0x22); db(0xfc); - db(0x80); db(0x03); db(0xa0); db(0x0a); db(0x22); db(0xc0); db(0x30); db(0x2d); - db(0x02); db(0x18); db(0x6b); db(0x14); db(0x22); db(0xfc); db(0x80); db(0x03); - db(0xa0); db(0x02); db(0x22); db(0xc0); db(0x30); db(0x2d); db(0x02); db(0x1e); - db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x01); db(0x22); db(0xc0); - db(0x30); db(0x2d); db(0x02); db(0x24); db(0x6b); db(0x10); db(0x22); db(0xfc); - db(0x80); db(0x03); db(0xa0); db(0x03); db(0x30); db(0x2d); db(0x02); db(0x2a); - db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x30); db(0x2d); - db(0x02); db(0x26); db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03); - db(0xa0); db(0x04); db(0x30); db(0x2d); db(0x02); db(0x2c); db(0x48); db(0xc0); - db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x30); db(0x2d); db(0x02); db(0x28); - db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x05); - db(0x30); db(0x2d); db(0x02); db(0x2e); db(0x48); db(0xc0); db(0xe1); db(0x80); - db(0x22); db(0xc0); db(0x70); db(0x00); db(0x30); db(0x2d); db(0x02); db(0x36); - db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x08); - db(0x22); db(0xc0); db(0x42); db(0x91); db(0x61); db(0x00); db(0xfc); db(0x68); - db(0x36); db(0x3c); db(0x00); db(0x68); db(0x74); db(0x01); db(0x28); db(0x2d); - db(0x02); db(0x32); db(0x20); db(0x04); db(0xc0); db(0x82); db(0x22); db(0x2b); - db(0x00); db(0x04); db(0xc2); db(0x82); db(0xb2); db(0x80); db(0x67); db(0x22); - db(0x42); db(0x92); db(0x35); db(0x7c); db(0x02); db(0x00); db(0x00); db(0x04); - db(0x42); db(0xaa); db(0x00); db(0x0a); db(0x32); db(0x03); db(0x4a); db(0x00); - db(0x66); db(0x04); db(0x08); db(0xc1); db(0x00); db(0x07); db(0x35); db(0x41); - db(0x00); db(0x06); db(0x42); db(0x6a); db(0x00); db(0x08); db(0x61); db(0x00); - db(0xfc); db(0x2e); db(0x52); db(0x43); db(0xd4); db(0x42); db(0x0c); db(0x42); - db(0x00); db(0x08); db(0x66); db(0xc6); db(0x27); db(0x44); db(0x00); db(0x04); - db(0x10); db(0x2d); db(0x02); db(0x10); db(0x08); db(0x00); db(0x00); db(0x00); - db(0x67); db(0x00); db(0xfd); db(0x8e); db(0x42); db(0x92); db(0x35); db(0x7c); - db(0x04); db(0x00); db(0x00); db(0x04); db(0x42); db(0x6a); db(0x00); db(0x06); - db(0x61); db(0x00); db(0x00); db(0x38); db(0x20); db(0x6b); db(0x00); db(0x14); - db(0x30); db(0x2d); db(0x02); db(0x38); db(0x32); db(0x28); db(0x00); db(0x30); - db(0xd2); db(0x41); db(0x90); db(0x41); db(0x6a); db(0x02); db(0x70); db(0x00); - db(0x35); db(0x40); db(0x00); db(0x0a); db(0x30); db(0x2d); db(0x02); db(0x3a); - db(0x32); db(0x28); db(0x00); db(0x2e); db(0xd2); db(0x41); db(0x90); db(0x41); - db(0x6a); db(0x02); db(0x70); db(0x00); db(0x35); db(0x40); db(0x00); db(0x0c); - db(0x61); db(0x00); db(0xfb); db(0xa0); db(0x60); db(0x00); db(0xfd); db(0x4a); - db(0x4e); db(0x75); db(0x22); db(0x2d); db(0x02); db(0x32); db(0x70); db(0x00); - db(0x08); db(0x01); db(0x00); db(0x00); db(0x67); db(0x04); db(0x08); db(0xc0); - db(0x00); db(0x0e); db(0x08); db(0x01); db(0x00); db(0x01); db(0x67); db(0x04); - db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x08); db(0x01); db(0x00); db(0x02); - db(0x67); db(0x04); db(0x08); db(0xc0); db(0x00); db(0x0c); db(0x35); db(0x40); - db(0x00); db(0x08); db(0x4e); db(0x75); db(0x4a); db(0xa9); db(0x02); db(0x08); - db(0x67); db(0x14); db(0x4a); db(0xa9); db(0x02); db(0x0c); db(0x67); db(0x0e); - db(0x30); db(0x29); db(0x02); db(0x12); db(0xb0); db(0x69); db(0x00); db(0x16); - db(0x67); db(0x14); db(0x33); db(0x40); db(0x00); db(0x16); db(0x2c); db(0x69); - db(0x00); db(0x26); db(0x20); db(0x29); db(0x00); db(0x22); db(0x22); db(0x69); - db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x53); db(0x69); - db(0x00); db(0x46); db(0x6a); db(0x12); db(0x33); db(0x7c); db(0x00); db(0x32); - db(0x00); db(0x46); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x02); - db(0x61); db(0x00); db(0x04); db(0xa2); db(0x4e); db(0x90); db(0x41); db(0xf9); - db(0x00); db(0xdf); db(0xf0); db(0x00); db(0x70); db(0x00); db(0x4e); db(0x75); - db(0x48); db(0xe7); db(0x00); db(0x06); db(0x30); db(0x3c); db(0xff); db(0x38); - db(0x72); db(0x11); db(0x61); db(0x00); db(0x04); db(0x88); db(0x4e); db(0x90); - db(0x08); db(0x00); db(0x00); db(0x00); db(0x67); db(0x42); db(0x2c); db(0x78); - db(0x00); db(0x04); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0x88); + db(0xff); db(0x3a); db(0x20); db(0x40); db(0x11); db(0x7c); db(0x00); db(0x0a); + db(0x00); db(0x08); db(0x31); db(0x42); db(0x00); db(0x12); db(0x21); db(0x4a); + db(0x00); db(0x0e); db(0x4a); db(0x80); db(0x4c); db(0xdf); db(0x44); db(0x04); + db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x30); db(0x22); db(0x24); db(0x48); + db(0x24); db(0x00); db(0x26); db(0x01); db(0x2c); db(0x78); db(0x00); db(0x04); + db(0x61); db(0x00); db(0xff); db(0x6a); db(0x22); db(0x03); db(0x61); db(0x00); + db(0xff); db(0xb2); db(0x67); db(0x18); db(0x20); db(0x4a); db(0x22); db(0x40); + db(0x24); db(0x40); db(0x20); db(0x02); db(0x72); db(0x00); db(0x4e); db(0xae); + db(0xfe); db(0x44); db(0x22); db(0x00); db(0x70); db(0x00); db(0x4a); db(0x81); + db(0x66); db(0x02); db(0x20); db(0x0a); db(0x4a); db(0x80); db(0x4c); db(0xdf); + db(0x44); db(0x0c); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x32); + db(0x2c); db(0x78); db(0x00); db(0x04); db(0x28); db(0x00); db(0x24); db(0x08); + db(0x26); db(0x09); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x08); db(0x5c); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); - db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0x40); - db(0x2a); db(0x40); db(0x2b); db(0x4e); db(0x00); db(0x14); db(0x30); db(0x3c); - db(0xff); db(0x38); db(0x72); db(0x0e); db(0x61); db(0x00); db(0x04); db(0x56); - db(0x20); db(0x0d); db(0x4e); db(0x90); db(0x41); db(0xfa); db(0x04); db(0xd6); - db(0x43); db(0xfa); db(0x01); db(0x12); db(0x70); db(0xf6); db(0x22); db(0x3c); - db(0x00); db(0x00); db(0x27); db(0x10); db(0x61); db(0x00); db(0xed); db(0xc8); - db(0x70); db(0x00); db(0x4c); db(0xdf); db(0x60); db(0x00); db(0x4e); db(0x75); - db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0a); db(0x61); db(0x00); - db(0x04); db(0x2c); db(0x4e); db(0x90); db(0x4e); db(0x75); db(0x61); db(0xf0); - db(0x20); db(0x0d); db(0x67); db(0x1c); db(0x2c); db(0x6d); db(0x00); db(0x14); - db(0x20); db(0x2d); db(0x00); db(0x18); db(0x67); db(0x06); db(0x22); db(0x40); - db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4d); db(0x20); db(0x3c); - db(0x00); db(0x00); db(0x00); db(0x88); db(0x4e); db(0xae); db(0xff); db(0x2e); - db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x3e); - db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x41); db(0xfa); db(0x04); db(0x64); - db(0x22); db(0x08); db(0x24); db(0x3c); db(0x00); db(0x00); db(0x03); db(0xed); - db(0x4e); db(0xae); db(0xff); db(0xe2); db(0x28); db(0x00); db(0x67); db(0x4c); - db(0x45); db(0xed); db(0x00); db(0x68); db(0x42); db(0x92); db(0x34); db(0xaa); - db(0x00); db(0x02); db(0x24); db(0x0a); db(0x54); db(0x82); db(0x76); db(0x02); - db(0x22); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xd6); db(0xb6); db(0x80); - db(0x66); db(0x32); db(0x0c); db(0x92); db(0x50); db(0x4e); db(0x54); db(0x52); - db(0x66); db(0xe4); db(0x24); db(0x0a); db(0x76); db(0x04); db(0x22); db(0x04); - db(0x4e); db(0xae); db(0xff); db(0xd6); db(0x24); db(0x0a); db(0x76); db(0x20); - db(0x22); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xd6); db(0xb6); db(0x80); - db(0x66); db(0x12); db(0x4a); db(0x6a); db(0x00); db(0x10); db(0x66); db(0xc4); - db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x10); db(0x61); db(0x00); - db(0x03); db(0x9c); db(0x4e); db(0x90); db(0x22); db(0x04); db(0x67); db(0x04); - db(0x4e); db(0xae); db(0xff); db(0xdc); db(0x4c); db(0xdf); db(0x7c); db(0x1c); - db(0x4e); db(0x75); db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x41); db(0xfa); - db(0x03); db(0xdc); db(0x22); db(0x08); db(0x74); db(0xfe); db(0x4e); db(0xae); - db(0xff); db(0xac); db(0x22); db(0x00); db(0x67); db(0x34); db(0x4e); db(0xae); - db(0xff); db(0xa6); db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x45); db(0xed); - db(0x00); db(0x38); db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6); - db(0x15); db(0x40); db(0x00); db(0x14); db(0x41); db(0xfa); db(0x03); db(0xcc); - db(0x24); db(0x88); db(0x25); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x12); - db(0x00); db(0x0c); db(0x25); db(0x6d); db(0x00); db(0x08); db(0x00); db(0x10); - db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x22); db(0x0a); db(0x4e); db(0xae); - db(0xfc); db(0x88); db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x4e); db(0x75); + db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0x34); + db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x08); + db(0x15); db(0x44); db(0x00); db(0x09); db(0x25); db(0x42); db(0x00); db(0x0a); + db(0x47); db(0xea); db(0x00); db(0x5c); db(0x25); db(0x4b); db(0x00); db(0x3a); + db(0x47); db(0xeb); db(0x08); db(0x00); db(0x25); db(0x4b); db(0x00); db(0x3e); + db(0x25); db(0x4b); db(0x00); db(0x36); db(0x22); db(0x4a); db(0x24); db(0x43); + db(0x97); db(0xcb); db(0x24); db(0x09); db(0x4e); db(0xae); db(0xfe); db(0xe6); + db(0x20); db(0x02); db(0x4c); db(0xdf); db(0x4c); db(0x1c); db(0x4e); db(0x75); + db(0x41); db(0xfa); db(0x0b); db(0x80); db(0x43); db(0xfa); db(0x01); db(0x30); + db(0x70); db(0x13); db(0x61); db(0x00); db(0xff); db(0x98); db(0x4e); db(0x75); + db(0x22); db(0x6d); db(0x02); db(0x0c); db(0x33); db(0x7c); db(0x00); db(0x0a); + db(0x00); db(0x1c); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); + db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x22); db(0x6d); db(0x02); db(0x0c); + db(0x25); db(0x69); db(0x00); db(0x20); db(0x00); db(0x0e); db(0x25); db(0x69); + db(0x00); db(0x24); db(0x00); db(0x12); db(0x22); db(0x6d); db(0x02); db(0x08); + db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae); + db(0xfe); db(0x38); db(0x4e); db(0x75); db(0x42); db(0xaa); db(0x00); db(0x0e); + db(0x42); db(0xaa); db(0x00); db(0x12); db(0x22); db(0x6d); db(0x02); db(0x08); + db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae); + db(0xfe); db(0x38); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xf8); db(0xfe); + db(0x2a); db(0x48); db(0x95); db(0xca); db(0x97); db(0xcb); db(0x99); db(0xcc); + db(0x78); db(0x00); db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x20); db(0x6d); + db(0x00); db(0x14); db(0x20); db(0x28); db(0x00); db(0x3c); db(0x67); db(0x5c); + db(0x20); db(0x40); db(0x41); db(0xe8); db(0x00); db(0x2c); db(0x28); db(0x48); + db(0x4e); db(0xae); db(0xfc); db(0xe8); db(0x72); db(0xff); db(0x74); db(0xff); + db(0xb2); db(0x80); db(0x67); db(0x48); db(0x26); db(0x00); db(0x2c); db(0x6d); + db(0x00); db(0x14); db(0x41); db(0xed); db(0x00); db(0xc0); db(0x70); db(0x66); + db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xed); db(0x00); db(0xc0); + db(0x38); db(0x28); db(0x00); db(0x64); db(0x2c); db(0x6d); db(0x00); db(0x18); + db(0x91); db(0xc8); db(0x43); db(0xed); db(0x00); db(0x38); db(0x70); db(0x00); + db(0x30); db(0x3c); db(0x00); db(0x58); db(0x22); db(0x3c); db(0x80); db(0x00); + db(0x10); db(0x00); db(0x24); db(0x03); db(0x4e); db(0xae); db(0xfd); db(0x0c); + db(0x72); db(0xff); db(0x74); db(0xff); db(0x4a); db(0x80); db(0x6b); db(0x0c); + db(0x45); db(0xed); db(0x00); db(0x38); db(0x22); db(0x2a); db(0x00); db(0x32); + db(0x24); db(0x2a); db(0x00); db(0x36); db(0x20); db(0x2c); db(0x00); db(0x1c); + db(0xb8); db(0x6d); db(0x00); db(0x2c); db(0x66); db(0x12); db(0xb0); db(0xad); + db(0x00); db(0x28); db(0x66); db(0x0c); db(0xb2); db(0xad); db(0x00); db(0x20); + db(0x66); db(0x06); db(0xb4); db(0xad); db(0x00); db(0x24); db(0x67); db(0x40); + db(0x2b); db(0x40); db(0x00); db(0x28); db(0x2b); db(0x41); db(0x00); db(0x20); + db(0x2b); db(0x42); db(0x00); db(0x24); db(0x3b); db(0x44); db(0x00); db(0x2c); + db(0x91); db(0xc8); db(0x43); db(0xed); db(0x00); db(0x90); db(0x70); db(0x00); + db(0x30); db(0x3c); db(0x00); db(0x58); db(0x22); db(0x3c); db(0x80); db(0x00); + db(0x00); db(0x00); db(0x24); db(0x03); db(0x4e); db(0xae); db(0xfd); db(0x0c); + db(0x4a); db(0x80); db(0x6b); db(0x04); db(0x47); db(0xed); db(0x00); db(0x90); + db(0x34); db(0x2d); db(0x00); db(0x2c); db(0x30); db(0x3c); db(0xff); db(0x38); + db(0x72); db(0x01); db(0x61); db(0x00); db(0x09); db(0xb8); db(0x4e); db(0x90); + db(0x4c); db(0xdf); db(0x7f); db(0x1f); db(0x4e); db(0x75); db(0x2c); db(0x78); + db(0x00); db(0x04); db(0x3e); db(0x2e); db(0x00); db(0x14); db(0x70); db(0xff); + db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x7c); db(0x00); db(0x01); db(0xc6); + db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x28); db(0x40); + db(0x70); db(0x14); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0xd4); + db(0x70); db(0x00); db(0x30); db(0x3c); db(0x02); db(0x3c); db(0x22); db(0x3c); + db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); + db(0x2a); db(0x40); db(0x47); db(0xed); db(0x00); db(0x16); db(0x27); db(0x4e); + db(0x00); db(0x10); db(0x27); db(0x4c); db(0x00); db(0x08); db(0x27); db(0x46); + db(0x00); db(0x0c); db(0x70); db(0xff); db(0x37); db(0x40); db(0x00); db(0x00); + db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x05); db(0x61); db(0x00); + db(0x09); db(0x5c); db(0x20); db(0x0d); db(0x06); db(0x80); db(0x00); db(0x00); + db(0x02); db(0x10); db(0x4e); db(0x90); db(0x43); db(0xed); db(0x00); db(0x00); + db(0x13); db(0x7c); db(0x00); db(0x02); db(0x00); db(0x08); db(0x13); db(0x7c); + db(0x00); db(0x05); db(0x00); db(0x09); db(0x41); db(0xfa); db(0x09); db(0xdc); + db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x02); db(0xf4); + db(0x23); db(0x48); db(0x00); db(0x12); db(0x23); db(0x4d); db(0x00); db(0x0e); + db(0x70); db(0x05); db(0x4e); db(0xae); db(0xff); db(0x58); db(0x20); db(0x06); + db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x70); db(0x00); db(0x53); db(0xab); + db(0x00); db(0x1c); db(0x6a); db(0x06); db(0x70); db(0x0a); db(0x27); db(0x40); + db(0x00); db(0x1c); db(0x4a); db(0xab); db(0x00); db(0x14); db(0x66); db(0x16); + db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xe0); db(0x43); db(0xfa); + db(0x0a); db(0x16); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); + db(0x27); db(0x40); db(0x00); db(0x14); db(0x67); db(0xd0); db(0x4a); db(0xab); + db(0x00); db(0x18); db(0x66); db(0x18); db(0x4a); db(0xab); db(0x00); db(0x1c); + db(0x66); db(0xc4); db(0x43); db(0xfa); db(0x0a); db(0x0c); db(0x70); db(0x00); + db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x27); db(0x40); db(0x00); db(0x18); + db(0x67); db(0x00); db(0xff); db(0xb4); db(0x4a); db(0xad); db(0x02); db(0x08); + db(0x66); db(0x38); db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xa6); + db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e); + db(0x43); db(0xfa); db(0x08); db(0xd0); db(0x4e); db(0xae); db(0xfe); db(0xec); + db(0x24); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4a); db(0x82); + db(0x67); db(0x8c); db(0x41); db(0xfa); db(0x08); db(0xbe); db(0x70); db(0x00); + db(0x72); db(0x00); db(0x61); db(0x00); db(0xfd); db(0x2e); db(0x2b); db(0x40); + db(0x02); db(0x08); db(0x67); db(0x00); db(0x02); db(0x32); db(0x60); db(0x00); + db(0xff); db(0x76); db(0x4a); db(0xad); db(0x02); db(0x0c); db(0x66); db(0x48); + db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0x00); db(0xff); db(0x68); + db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e); + db(0x43); db(0xfa); db(0x08); db(0x9d); db(0x4e); db(0xae); db(0xfe); db(0xec); + db(0x24); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4a); db(0x82); + db(0x67); db(0x00); db(0xff); db(0x4c); db(0x41); db(0xfa); db(0x08); db(0x89); + db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0xfc); db(0xec); + db(0x2b); db(0x40); db(0x02); db(0x0c); db(0x67); db(0x00); db(0x01); db(0xf0); + db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x00); db(0x61); db(0x00); + db(0x08); db(0x54); db(0x4e); db(0x90); db(0x60); db(0x00); db(0xff); db(0x28); + db(0x0c); db(0x47); db(0x00); db(0x24); db(0x65); db(0x12); db(0x53); db(0xab); + db(0x00); db(0x34); db(0x6a); db(0x0c); db(0x20); db(0x4b); db(0x61); db(0x00); + db(0xfd); db(0xb4); db(0x70); db(0x32); db(0x27); db(0x40); db(0x00); db(0x34); + db(0x22); db(0x6d); db(0x02); db(0x08); db(0x45); db(0xed); db(0x01); db(0x3c); + db(0x33); db(0x7c); db(0x00); db(0x0b); db(0x00); db(0x1c); db(0x23); db(0x7c); + db(0x00); db(0x00); db(0x00); db(0x16); db(0x00); db(0x24); db(0x23); db(0x4a); + db(0x00); db(0x28); db(0x10); db(0x2d); db(0x02); db(0x10); db(0x0c); db(0x47); + db(0x00); db(0x27); db(0x65); db(0x00); db(0x01); db(0x52); db(0x08); db(0x00); + db(0x00); db(0x01); db(0x67); db(0x00); db(0x01); db(0x4a); db(0x41); db(0xed); + db(0x01); db(0x68); db(0x25); db(0x48); db(0x00); db(0x0a); db(0x15); db(0x7c); + db(0x00); db(0x13); db(0x00); db(0x04); db(0x15); db(0x7c); db(0x00); db(0x03); + db(0x00); db(0x05); db(0x42); db(0x90); db(0x42); db(0xa8); db(0x00); db(0x04); + db(0x42); db(0xa8); db(0x00); db(0x08); db(0x42); db(0x68); db(0x00); db(0x0c); + db(0x42); db(0x6a); db(0x00); db(0x06); db(0x61); db(0x00); db(0x01); db(0x72); + db(0x31); db(0x6d); db(0x02); db(0x1a); db(0x00); db(0x0e); db(0x42); db(0x68); + db(0x00); db(0x10); db(0x31); db(0x6d); db(0x02); db(0x1c); db(0x00); db(0x12); + db(0x42); db(0x68); db(0x00); db(0x14); db(0x31); db(0x6d); db(0x02); db(0x14); + db(0x00); db(0x16); db(0x42); db(0x68); db(0x00); db(0x18); db(0x31); db(0x6d); + db(0x02); db(0x16); db(0x00); db(0x1a); db(0x43); db(0xed); db(0x01); db(0x88); + db(0x21); db(0x49); db(0x00); db(0x1c); db(0x22); db(0xfc); db(0x80); db(0x03); + db(0xa0); db(0x06); db(0x30); db(0x2d); db(0x02); db(0x30); db(0x48); db(0xc0); + db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x22); db(0xfc); db(0x80); db(0x03); + db(0xa0); db(0x07); db(0x22); db(0xed); db(0x02); db(0x32); db(0x70); db(0x00); + db(0x30); db(0x2d); db(0x02); db(0x20); db(0x6b); db(0x08); db(0x22); db(0xfc); + db(0x80); db(0x03); db(0xa0); db(0x09); db(0x22); db(0xc0); db(0x30); db(0x2d); + db(0x02); db(0x22); db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03); + db(0xa0); db(0x0a); db(0x22); db(0xc0); db(0x30); db(0x2d); db(0x02); db(0x18); + db(0x6b); db(0x14); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x02); + db(0x22); db(0xc0); db(0x30); db(0x2d); db(0x02); db(0x1e); db(0x22); db(0xfc); + db(0x80); db(0x03); db(0xa0); db(0x01); db(0x22); db(0xc0); db(0x30); db(0x2d); + db(0x02); db(0x24); db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03); + db(0xa0); db(0x03); db(0x30); db(0x2d); db(0x02); db(0x2a); db(0x48); db(0xc0); + db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x30); db(0x2d); db(0x02); db(0x26); + db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x04); + db(0x30); db(0x2d); db(0x02); db(0x2c); db(0x48); db(0xc0); db(0xe1); db(0x80); + db(0x22); db(0xc0); db(0x30); db(0x2d); db(0x02); db(0x28); db(0x6b); db(0x10); + db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x05); db(0x30); db(0x2d); + db(0x02); db(0x2e); db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0); + db(0x70); db(0x00); db(0x30); db(0x2d); db(0x02); db(0x36); db(0x6b); db(0x08); + db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x08); db(0x22); db(0xc0); + db(0x42); db(0x91); db(0x61); db(0x00); db(0xfc); db(0x68); db(0x36); db(0x3c); + db(0x00); db(0x68); db(0x74); db(0x01); db(0x28); db(0x2d); db(0x02); db(0x32); + db(0x20); db(0x04); db(0xc0); db(0x82); db(0x22); db(0x2b); db(0x00); db(0x04); + db(0xc2); db(0x82); db(0xb2); db(0x80); db(0x67); db(0x22); db(0x42); db(0x92); + db(0x35); db(0x7c); db(0x02); db(0x00); db(0x00); db(0x04); db(0x42); db(0xaa); + db(0x00); db(0x0a); db(0x32); db(0x03); db(0x4a); db(0x00); db(0x66); db(0x04); + db(0x08); db(0xc1); db(0x00); db(0x07); db(0x35); db(0x41); db(0x00); db(0x06); + db(0x42); db(0x6a); db(0x00); db(0x08); db(0x61); db(0x00); db(0xfc); db(0x2e); + db(0x52); db(0x43); db(0xd4); db(0x42); db(0x0c); db(0x42); db(0x00); db(0x08); + db(0x66); db(0xc6); db(0x27); db(0x44); db(0x00); db(0x04); db(0x10); db(0x2d); + db(0x02); db(0x10); db(0x08); db(0x00); db(0x00); db(0x00); db(0x67); db(0x00); + db(0xfd); db(0x8e); db(0x42); db(0x92); db(0x35); db(0x7c); db(0x04); db(0x00); + db(0x00); db(0x04); db(0x42); db(0x6a); db(0x00); db(0x06); db(0x61); db(0x00); + db(0x00); db(0x38); db(0x20); db(0x6b); db(0x00); db(0x14); db(0x30); db(0x2d); + db(0x02); db(0x38); db(0x32); db(0x28); db(0x00); db(0x30); db(0xd2); db(0x41); + db(0x90); db(0x41); db(0x6a); db(0x02); db(0x70); db(0x00); db(0x35); db(0x40); + db(0x00); db(0x0a); db(0x30); db(0x2d); db(0x02); db(0x3a); db(0x32); db(0x28); + db(0x00); db(0x2e); db(0xd2); db(0x41); db(0x90); db(0x41); db(0x6a); db(0x02); + db(0x70); db(0x00); db(0x35); db(0x40); db(0x00); db(0x0c); db(0x61); db(0x00); + db(0xfb); db(0xa0); db(0x60); db(0x00); db(0xfd); db(0x4a); db(0x4e); db(0x75); + db(0x22); db(0x2d); db(0x02); db(0x32); db(0x70); db(0x00); db(0x08); db(0x01); + db(0x00); db(0x00); db(0x67); db(0x04); db(0x08); db(0xc0); db(0x00); db(0x0e); + db(0x08); db(0x01); db(0x00); db(0x01); db(0x67); db(0x04); db(0x08); db(0xc0); + db(0x00); db(0x0d); db(0x08); db(0x01); db(0x00); db(0x02); db(0x67); db(0x04); + db(0x08); db(0xc0); db(0x00); db(0x0c); db(0x35); db(0x40); db(0x00); db(0x08); + db(0x4e); db(0x75); db(0x4a); db(0xa9); db(0x02); db(0x08); db(0x67); db(0x14); + db(0x4a); db(0xa9); db(0x02); db(0x0c); db(0x67); db(0x0e); db(0x30); db(0x29); + db(0x02); db(0x12); db(0xb0); db(0x69); db(0x00); db(0x16); db(0x67); db(0x14); + db(0x33); db(0x40); db(0x00); db(0x16); db(0x2c); db(0x69); db(0x00); db(0x26); + db(0x20); db(0x29); db(0x00); db(0x22); db(0x22); db(0x69); db(0x00); db(0x1e); + db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x53); db(0x69); db(0x00); db(0x46); + db(0x6a); db(0x12); db(0x33); db(0x7c); db(0x00); db(0x32); db(0x00); db(0x46); + db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x02); db(0x61); db(0x00); + db(0x06); db(0x04); db(0x4e); db(0x90); db(0x41); db(0xf9); db(0x00); db(0xdf); + db(0xf0); db(0x00); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); + db(0x00); db(0x06); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x11); + db(0x61); db(0x00); db(0x05); db(0xea); db(0x4e); db(0x90); db(0x08); db(0x00); + db(0x00); db(0x00); db(0x67); db(0x42); db(0x2c); db(0x78); db(0x00); db(0x04); + db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0x88); db(0x22); db(0x3c); + db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); + db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0x40); db(0x2a); db(0x40); + db(0x2b); db(0x4e); db(0x00); db(0x14); db(0x30); db(0x3c); db(0xff); db(0x38); + db(0x72); db(0x0e); db(0x61); db(0x00); db(0x05); db(0xb8); db(0x20); db(0x0d); + db(0x4e); db(0x90); db(0x41); db(0xfa); db(0x06); db(0x38); db(0x43); db(0xfa); + db(0x01); db(0x14); db(0x70); db(0xf6); db(0x22); db(0x3c); db(0x00); db(0x00); + db(0x27); db(0x10); db(0x61); db(0x00); db(0xed); db(0xaa); db(0x70); db(0x00); + db(0x4c); db(0xdf); db(0x60); db(0x00); db(0x4e); db(0x75); db(0x30); db(0x3c); + db(0xff); db(0x38); db(0x72); db(0x0a); db(0x61); db(0x00); db(0x05); db(0x8e); + db(0x4e); db(0x90); db(0x4e); db(0x75); db(0x61); db(0xf0); db(0x20); db(0x0d); + db(0x67); db(0x1c); db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x20); db(0x2d); + db(0x00); db(0x18); db(0x67); db(0x06); db(0x22); db(0x40); db(0x4e); db(0xae); + db(0xfe); db(0x62); db(0x22); db(0x4d); db(0x20); db(0x3c); db(0x00); db(0x00); + db(0x00); db(0x88); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x70); db(0x00); + db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x3e); db(0x2c); db(0x6d); + db(0x00); db(0x18); db(0x41); db(0xfa); db(0x05); db(0xc6); db(0x22); db(0x08); + db(0x24); db(0x3c); db(0x00); db(0x00); db(0x03); db(0xed); db(0x4e); db(0xae); + db(0xff); db(0xe2); db(0x28); db(0x00); db(0x67); db(0x4c); db(0x45); db(0xed); + db(0x00); db(0x68); db(0x42); db(0x92); db(0x34); db(0xaa); db(0x00); db(0x02); + db(0x24); db(0x0a); db(0x54); db(0x82); db(0x76); db(0x02); db(0x22); db(0x04); + db(0x4e); db(0xae); db(0xff); db(0xd6); db(0xb6); db(0x80); db(0x66); db(0x32); + db(0x0c); db(0x92); db(0x50); db(0x4e); db(0x54); db(0x52); db(0x66); db(0xe4); + db(0x24); db(0x0a); db(0x76); db(0x04); db(0x22); db(0x04); db(0x4e); db(0xae); + db(0xff); db(0xd6); db(0x24); db(0x0a); db(0x76); db(0x20); db(0x22); db(0x04); + db(0x4e); db(0xae); db(0xff); db(0xd6); db(0xb6); db(0x80); db(0x66); db(0x12); + db(0x4a); db(0x6a); db(0x00); db(0x10); db(0x66); db(0xc4); db(0x30); db(0x3c); + db(0xff); db(0x38); db(0x72); db(0x10); db(0x61); db(0x00); db(0x04); db(0xfe); + db(0x4e); db(0x90); db(0x22); db(0x04); db(0x67); db(0x04); db(0x4e); db(0xae); + db(0xff); db(0xdc); db(0x4c); db(0xdf); db(0x7c); db(0x1c); db(0x4e); db(0x75); + db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x41); db(0xfa); db(0x05); db(0x3e); + db(0x22); db(0x08); db(0x74); db(0xfe); db(0x4e); db(0xae); db(0xff); db(0xac); + db(0x22); db(0x00); db(0x67); db(0x34); db(0x4e); db(0xae); db(0xff); db(0xa6); + db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x45); db(0xed); db(0x00); db(0x38); + db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x15); db(0x40); + db(0x00); db(0x14); db(0x41); db(0xfa); db(0x05); db(0x2e); db(0x24); db(0x88); + db(0x25); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x12); db(0x00); db(0x0c); + db(0x25); db(0x6d); db(0x00); db(0x08); db(0x00); db(0x10); db(0x2c); db(0x6d); + db(0x00); db(0x18); db(0x22); db(0x0a); db(0x4e); db(0xae); db(0xfc); db(0x88); + db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x4e); db(0x75); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0d); db(0x61); db(0x00); - db(0x03); db(0x2c); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x00); - db(0xfe); db(0xfe); db(0x2a); db(0x40); db(0x2c); db(0x6d); db(0x00); db(0x14); + db(0x04); db(0x8c); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x00); + db(0xfe); db(0xfc); db(0x2a); db(0x40); db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x2b); db(0x40); - db(0x00); db(0x08); db(0x43); db(0xfa); db(0x04); db(0x16); db(0x70); db(0x00); + db(0x00); db(0x08); db(0x43); db(0xfa); db(0x05); db(0x76); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2b); db(0x40); db(0x00); db(0x18); - db(0x67); db(0x00); db(0xfe); db(0xdc); db(0x2c); db(0x40); db(0x72); db(0x32); - db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x41); db(0xfa); db(0x03); db(0x32); + db(0x67); db(0x00); db(0xfe); db(0xda); db(0x2c); db(0x40); db(0x72); db(0x32); + db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x41); db(0xfa); db(0x04); db(0x92); db(0x22); db(0x08); db(0x74); db(0xfe); db(0x4e); db(0xae); db(0xff); db(0xac); db(0x4a); db(0x80); db(0x67); db(0xea); db(0x22); db(0x00); db(0x4e); db(0xae); db(0xff); db(0xa6); db(0x72); db(0x32); db(0x4e); db(0xae); db(0xff); db(0x3a); - db(0x41); db(0xfa); db(0x03); db(0x1c); db(0x22); db(0x08); db(0x74); db(0xfe); + db(0x41); db(0xfa); db(0x04); db(0x7c); db(0x22); db(0x08); db(0x74); db(0xfe); db(0x4e); db(0xae); db(0xff); db(0xac); db(0x4a); db(0x80); db(0x67); db(0x00); - db(0xfe); db(0xa6); db(0x22); db(0x00); db(0x4e); db(0xae); db(0xff); db(0xa6); - db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x61); db(0x00); db(0xf8); db(0x20); + db(0xfe); db(0xa4); db(0x22); db(0x00); db(0x4e); db(0xae); db(0xff); db(0xa6); + db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x61); db(0x00); db(0xf8); db(0x1e); db(0x72); db(0x00); db(0x32); db(0x3c); db(0x00); db(0x34); db(0x61); db(0x00); - db(0xf8); db(0x64); db(0x28); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x00); - db(0xfe); db(0x86); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d); + db(0xf8); db(0x62); db(0x28); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x00); + db(0xfe); db(0x84); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x72); db(0x00); db(0x20); db(0x2d); - db(0x00); db(0x0c); db(0x41); db(0xfa); db(0x02); db(0xf5); db(0x22); db(0x4c); + db(0x00); db(0x0c); db(0x41); db(0xfa); db(0x04); db(0x55); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x4a); db(0x80); db(0x66); db(0xe2); db(0x20); db(0x6c); db(0x00); db(0x14); db(0x0c); db(0x68); db(0x00); db(0x25); - db(0x00); db(0x14); db(0x64); db(0x0c); db(0x61); db(0x00); db(0xfe); db(0x4a); + db(0x00); db(0x14); db(0x64); db(0x0c); db(0x61); db(0x00); db(0xfe); db(0x48); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x60); db(0xf8); - db(0x61); db(0x00); db(0xfe); db(0xe8); db(0x41); db(0xed); db(0x00); db(0x1c); + db(0x61); db(0x00); db(0xfe); db(0xe6); db(0x41); db(0xed); db(0x00); db(0x1c); db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x24); db(0x39); db(0x7c); db(0x00); db(0x0c); db(0x00); db(0x1c); db(0x2b); db(0x4d); db(0x00); db(0x2c); db(0x41); db(0xfa); db(0x01); db(0x60); db(0x2b); db(0x48); db(0x00); db(0x24); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0f); - db(0x61); db(0x00); db(0x02); db(0x42); db(0x4e); db(0x90); db(0x4a); db(0xad); + db(0x61); db(0x00); db(0x03); db(0xa2); db(0x4e); db(0x90); db(0x4a); db(0xad); db(0x00); db(0x00); db(0x66); db(0x1c); db(0x70); db(0x00); db(0x74); db(0x00); db(0x14); db(0x2d); db(0x00); db(0x4c); db(0x05); db(0xc0); db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x05); db(0x00); - db(0x67); db(0x06); db(0x61); db(0x00); db(0xfe); db(0x20); db(0x60); db(0xe4); + db(0x67); db(0x06); db(0x61); db(0x00); db(0xfe); db(0x1e); db(0x60); db(0xe4); db(0x20); db(0x2d); db(0x00); db(0x00); db(0x67); db(0x00); db(0x00); db(0x76); db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x2b); db(0x40); db(0x00); db(0x04); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0c); - db(0x61); db(0x00); db(0x02); db(0x02); db(0x4e); db(0x90); db(0x4a); db(0x80); + db(0x61); db(0x00); db(0x03); db(0x62); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x40); db(0x4a); db(0xad); db(0x00); db(0x04); db(0x67); db(0x3a); db(0x39); db(0x7c); db(0x00); db(0x03); db(0x00); db(0x1c); db(0x42); db(0x2c); db(0x00); db(0x1f); db(0x42); db(0xac); db(0x00); db(0x20); db(0x29); db(0x6d); @@ -745,7 +762,7 @@ db(0x00); db(0x34); db(0x29); db(0x48); db(0x00); db(0x28); db(0x20); db(0x02); db(0x51); db(0x80); db(0x29); db(0x40); db(0x00); db(0x24); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x30); db(0x3c); db(0xff); db(0x38); - db(0x72); db(0x0b); db(0x61); db(0x00); db(0x01); db(0x28); db(0x20); db(0x2c); + db(0x72); db(0x0b); db(0x61); db(0x00); db(0x02); db(0x88); db(0x20); db(0x2c); db(0x00); db(0x20); db(0x4e); db(0x90); db(0x22); db(0x4a); db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x4a); db(0xac); db(0x00); db(0x20); db(0x67); db(0x00); db(0xfe); db(0xda); db(0x41); db(0xed); db(0x00); db(0x30); @@ -759,30 +776,74 @@ db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x2c); db(0x5f); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x74); db(0xff); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x11); db(0x61); db(0x00); - db(0x00); db(0xbc); db(0x4e); db(0x90); db(0x08); db(0x00); db(0x00); db(0x01); + db(0x02); db(0x1c); db(0x4e); db(0x90); db(0x08); db(0x00); db(0x00); db(0x01); db(0x67); db(0x38); db(0x74); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x7c); - db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x00); db(0xce); + db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x02); db(0x2e); db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x4a); db(0x80); db(0x67); db(0x1e); db(0x20); db(0x40); db(0x43); db(0xfa); db(0x00); db(0x22); db(0x24); db(0x68); db(0xff); db(0xe4); db(0x21); db(0x49); db(0xff); db(0xe4); db(0x22); db(0x48); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x65); db(0x61); db(0x00); - db(0x00); db(0x84); db(0x4e); db(0x90); db(0x74); db(0x01); db(0x4e); db(0xae); + db(0x01); db(0xe4); db(0x4e); db(0x90); db(0x74); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x20); db(0x02); db(0x4e); db(0x75); db(0x59); db(0x8f); db(0x48); db(0xe7); db(0xc0); db(0x80); db(0x30); db(0x3c); db(0xff); db(0x38); - db(0x72); db(0x66); db(0x61); db(0x00); db(0x00); db(0x68); db(0x4e); db(0x90); + db(0x72); db(0x66); db(0x61); db(0x00); db(0x01); db(0xc8); db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x01); db(0x03); db(0x4e); db(0x75); db(0x2c); db(0x78); - db(0x00); db(0x04); db(0x41); db(0xfa); db(0x01); db(0x51); db(0x43); db(0xfa); + db(0x00); db(0x04); db(0x41); db(0xfa); db(0x02); db(0xb1); db(0x43); db(0xfa); db(0x00); db(0x14); db(0x70); db(0x0f); db(0x22); db(0x3c); db(0x00); db(0x00); - db(0x1f); db(0x40); db(0x61); db(0x00); db(0xe9); db(0xd2); db(0x4e); db(0x75); + db(0x1f); db(0x40); db(0x61); db(0x00); db(0xe9); db(0xb2); db(0x4e); db(0x75); db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0x00); db(0x43); db(0xfa); - db(0x01); db(0x3a); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x72); db(0x02); - db(0x30); db(0x3c); db(0xff); db(0x3c); db(0x61); db(0x00); db(0x00); db(0x26); + db(0x02); db(0x9a); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x72); db(0x02); + db(0x30); db(0x3c); db(0xff); db(0x3c); db(0x61); db(0x00); db(0x01); db(0x86); db(0x24); db(0x48); db(0x72); db(0x01); db(0x4e); db(0x90); db(0x4a); db(0x81); db(0x67); db(0x0c); db(0x26); db(0x41); db(0x4e); db(0xae); db(0xfe); db(0x08); db(0x72); db(0x02); db(0x20); db(0x4b); db(0x4e); db(0x92); db(0x22); db(0x4e); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62); - db(0x4e); db(0x75); db(0x4e); db(0x75); db(0x41); db(0xfa); db(0xe7); db(0x76); + db(0x4e); db(0x75); db(0x4e); db(0x75); db(0xbc); db(0xfc); db(0x00); db(0x00); + db(0x67); db(0x06); db(0x4e); db(0xae); db(0xff); db(0x70); db(0x4e); db(0x75); + db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x24); db(0x48); db(0x2c); db(0x78); + db(0x00); db(0x04); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x01); db(0x00); + db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); + db(0xff); db(0x3a); db(0x26); db(0x40); db(0x49); db(0xeb); db(0x00); db(0x2c); + db(0x4b); db(0xec); db(0x00); db(0x10); db(0x4d); db(0xed); db(0x00); db(0x44); + db(0x22); db(0x4d); db(0x41); db(0xea); db(0x00); db(0x10); db(0x70); db(0x10); + db(0x22); db(0xd8); db(0x51); db(0xc8); db(0xff); db(0xfc); db(0x20); db(0x4e); + db(0x22); db(0x52); db(0x52); db(0x88); db(0x10); db(0xd9); db(0x66); db(0xfc); + db(0x20); db(0x08); db(0x56); db(0x80); db(0x02); db(0x00); db(0x00); db(0xfc); + db(0x2c); db(0x00); db(0x20); db(0x08); db(0x55); db(0x80); db(0x90); db(0x8e); + db(0x1c); db(0x80); db(0x20); db(0x46); db(0x22); db(0x6a); db(0x00); db(0x04); + db(0x52); db(0x88); db(0x10); db(0xd9); db(0x66); db(0xfc); db(0x20); db(0x08); + db(0x55); db(0x80); db(0x90); db(0x86); db(0x20); db(0x46); db(0x10); db(0x80); + db(0x28); db(0xaa); db(0x00); db(0x08); db(0x20); db(0x06); db(0xe4); db(0x88); + db(0x29); db(0x40); db(0x00); db(0x04); db(0x41); db(0xea); db(0x00); db(0x10); + db(0x20); db(0x0d); db(0xe4); db(0x88); db(0x29); db(0x40); db(0x00); db(0x08); + db(0x29); db(0x6a); db(0x00); db(0x0c); db(0x00); db(0x0c); db(0x20); db(0x0c); + db(0xe4); db(0x88); db(0x27); db(0x40); db(0x00); db(0x1c); db(0x20); db(0x0e); + db(0xe4); db(0x88); db(0x27); db(0x40); db(0x00); db(0x28); db(0x70); db(0x0a); + db(0x27); db(0x40); db(0x00); db(0x18); db(0x27); db(0x7c); db(0x00); db(0x00); + db(0x0f); db(0xa0); db(0x00); db(0x14); db(0x20); db(0x0b); db(0x4c); db(0xdf); + db(0x7c); db(0xfc); db(0x4e); db(0x75); db(0xbc); db(0xfc); db(0x00); db(0x00); + db(0x67); db(0x06); db(0x4e); db(0xae); db(0xff); db(0x6a); db(0x4e); db(0x75); + db(0x48); db(0xe7); db(0x38); db(0x3e); db(0x24); db(0x48); db(0x2c); db(0x78); + db(0x00); db(0x04); db(0x43); db(0xfa); db(0x01); db(0x96); db(0x4e); db(0xae); + db(0xfe); db(0x68); db(0x2a); db(0x40); db(0x20); db(0x6d); db(0x00); db(0x22); + db(0x20); db(0x28); db(0x00); db(0x18); db(0xe5); db(0x88); db(0x26); db(0x40); + db(0x24); db(0xab); db(0x00); db(0x04); db(0x20); db(0x0a); db(0xe4); db(0x88); + db(0x27); db(0x40); db(0x00); db(0x04); db(0x22); db(0x4d); db(0x2c); db(0x78); + db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x4c); db(0xdf); + db(0x7c); db(0x1c); db(0x4e); db(0x75); db(0x00); db(0x00); db(0x00); db(0x16); + db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x16); + db(0x24); db(0x01); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x93); db(0xc9); + db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x20); db(0x40); db(0x41); db(0xe8); + db(0x00); db(0x5c); db(0xe5); db(0x8a); db(0x22); db(0x42); db(0x22); db(0x51); + db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x22); db(0x02); db(0x43); db(0xfa); + db(0x00); db(0x0e); db(0x30); db(0x3c); db(0xff); db(0x2c); db(0x61); db(0x00); + db(0x00); db(0x2c); db(0x4e); db(0x90); db(0x4e); db(0xd0); db(0x70); db(0x30); + db(0x60); db(0x0a); db(0x70); db(0x28); db(0x60); db(0x06); db(0x20); db(0x06); + db(0x60); db(0x02); db(0x20); db(0x06); db(0x12); db(0xd8); db(0x53); db(0x80); + db(0x6e); db(0xfa); db(0x4e); db(0x75); db(0x00); db(0x00); db(0x00); db(0x00); + db(0x00); db(0x00); db(0x00); db(0x01); db(0x00); db(0x00); db(0x00); db(0x04); + db(0x00); db(0x00); db(0x00); db(0x02); db(0x41); db(0xfa); db(0xe5); db(0x8e); db(0x02); db(0x80); db(0x00); db(0x00); db(0xff); db(0xff); db(0xd1); db(0xc0); db(0x4e); db(0x75); db(0x69); db(0x6e); db(0x70); db(0x75); db(0x74); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x74); @@ -827,6 +888,7 @@ db(0x79); db(0x73); db(0x74); db(0x65); db(0x6d); db(0x2e); db(0x72); db(0x65); db(0x73); db(0x6f); db(0x75); db(0x72); db(0x63); db(0x65); db(0x00); db(0x6d); db(0x65); db(0x67); db(0x61); db(0x63); db(0x68); db(0x69); db(0x70); db(0x20); - db(0x6d); db(0x65); db(0x6d); db(0x6f); db(0x72); db(0x79); db(0x00); db(0x00); - db(0x00); db(0x00); db(0x03); db(0xf2); + db(0x6d); db(0x65); db(0x6d); db(0x6f); db(0x72); db(0x79); db(0x00); db(0x46); + db(0x69); db(0x6c); db(0x65); db(0x20); db(0x53); db(0x79); db(0x73); db(0x74); + db(0x65); db(0x6d); db(0x00); db(0x00); db(0x00); db(0x00); db(0x03); db(0xf2); diff --git a/hardfile.cpp b/hardfile.cpp index 06f64dac..6d04a92b 100644 --- a/hardfile.cpp +++ b/hardfile.cpp @@ -2347,7 +2347,7 @@ void hardfile_reset (void) if (hfpd->base && valid_address (hfpd->base, 36) && get_word (hfpd->base + 32) > 0) { for (j = 0; j < MAX_ASYNC_REQUESTS; j++) { uaecptr request; - if ((request = hfpd->d_request[i])) + if ((request = hfpd->d_request[j])) abort_async (hfpd, request, 0, 0); } } @@ -2395,12 +2395,8 @@ void hardfile_install (void) dw (0); /* initcode */ -#if 0 - initcode = here (); - calltrap (deftrap (hardfile_init)); dw (RTS); -#else initcode = filesys_initcode; -#endif + /* Open */ openfunc = here (); calltrap (deftrap (hardfile_open)); dw (RTS); @@ -2458,5 +2454,6 @@ void hardfile_install (void) dl (0x00000100); /* ??? */ dl (functable); dl (datatable); + filesys_initcode_ptr = here(); dl (initcode); } diff --git a/include/autoconf.h b/include/autoconf.h index 27e91753..cb792d10 100644 --- a/include/autoconf.h +++ b/include/autoconf.h @@ -50,7 +50,7 @@ extern uaecptr ROM_filesys_resname, ROM_filesys_resid; extern uaecptr ROM_filesys_diagentry; extern uaecptr ROM_hardfile_resname, ROM_hardfile_resid; extern uaecptr ROM_hardfile_init; -extern uaecptr filesys_initcode; +extern uaecptr filesys_initcode, filesys_initcode_ptr; extern int is_hardfile (int unit_no); extern int nr_units (void); diff --git a/memory.cpp b/memory.cpp index 8742f651..ad8a9322 100644 --- a/memory.cpp +++ b/memory.cpp @@ -1530,8 +1530,12 @@ chk_sum: #endif kickstart_version = (kickmem_bank.baseaddr[12] << 8) | kickmem_bank.baseaddr[13]; - if (kickstart_version == 0xffff) - kickstart_version = 0; + if (kickstart_version == 0xffff) { + // 1.0-1.1 and older + kickstart_version = (kickmem_bank.baseaddr[16] << 8) | kickmem_bank.baseaddr[17]; + if (kickstart_version > 33) + kickstart_version = 0; + } zfile_fclose (f); return 1; err: