From fafda80b74a110ccc2637b27fcf392784f284d25 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Fri, 1 Feb 1991 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1991-02-01 --- ss/boot.c | 442 ---- ss/boot.h | 6174 ------------------------------------------------- ss/crc_16.h | 35 - ss/devbit.c | 1176 ---------- ss/devcons.c | 1031 --------- ss/devincon.c | 883 ------- ss/devkprof.c | 177 -- ss/errno.h | 64 - ss/fcall.h | 88 - ss/lib.h | 112 - ss/lock.c | 100 - ss/uart.c | 155 -- ss/ureg.h | 45 - 13 files changed, 10482 deletions(-) delete mode 100644 ss/boot.c delete mode 100644 ss/boot.h delete mode 100644 ss/crc_16.h delete mode 100644 ss/devbit.c delete mode 100644 ss/devcons.c delete mode 100644 ss/devincon.c delete mode 100644 ss/devkprof.c delete mode 100644 ss/errno.h delete mode 100644 ss/fcall.h delete mode 100644 ss/lib.h delete mode 100644 ss/lock.c delete mode 100644 ss/uart.c delete mode 100644 ss/ureg.h diff --git a/ss/boot.c b/ss/boot.c deleted file mode 100644 index da84bf9d982670c302e9ab3ef5cde58553bdf9c3..0000000000000000000000000000000000000000 --- a/ss/boot.c +++ /dev/null @@ -1,442 +0,0 @@ -#include -#include -#include - -#define DEFSYS "bootes" - -char *net; -char *netdev; - -Fcall hdr; -char *scmd; - -char buf[4*1024]; -char sys[NAMELEN]; - -int fd; -int cfd; -int efd; - -typedef -struct address { - char *name; - char *cmd; -} Address; - -Address addr[] = { - { "ross", "connect 020701005eff" }, - { "bootes", "connect 080069020205" }, - { "helix", "connect 080069020427" }, - { "spindle", "connect 0800690202df" }, - { "r70", "connect 08002b04265d" }, - { 0 } -}; - -/* - * predeclared - */ -int outin(char *, char *, int); -void prerror(char *); -void error(char *); -void boot(int); -int dkdial(char *); -int nonetdial(char *); -int bitdial(char *); - -/* - * usage: 9b [-a] [server] [file] - * - * default server is `bootes', default file is `/sparc/9' - */ -main(int argc, char *argv[]) -{ - int i; - int manual=0; - char buf[128]; - - open("#c/cons", 0); - open("#c/cons", 1); - open("#c/cons", 1); - - strcpy(buf, "none"); - outin("user", buf, sizeof(buf)); - i = open("#c/user", 2); - if(i >= 0){ - write(i, buf, strlen(buf)); - close(i); - } - i = create("#e/sysname", 1, 0666); - if(i < 0) - error("sysname"); - if(write(i, argv[0], strlen(argv[0])) != strlen(argv[0])) - error("sysname"); - close(i); - - for(i = 0; i < argc; i++) - print("argv[%d] = %s\n", i, argv[i]); - - argv++; - argc--; - - while(argc > 0){ - if(argv[0][0] == '-'){ - if(argv[0][1] == 'm') - manual = 1; - argc--; - argv++; - } else - break; - } - - strcpy(sys, DEFSYS); - switch(argc){ - case 2: - strcpy(sys, argv[1]); - break; - } - - boot(manual); - for(;;){ - if(fd > 0) - close(fd); - if(cfd > 0) - close(cfd); - fd = cfd = 0; - boot(1); - } -} - -int -bitdial(char *arg) -{ - return open("#3/bit3", ORDWR); -} - -int -nonetdial(char *arg) -{ - int efd, cfd, fd; - Address *a; - static int mounted; - - for(a = addr; a->name; a++){ - if(strcmp(a->name, arg) == 0) - break; - } - if(a->name == 0){ - print("can't convert nonet address to ether address\n"); - return -1; - } - - if(!mounted){ - /* - * grab a lance channel, make it recognize ether type 0x900, - * and push the nonet ethernet multiplexor onto it. - */ - efd = open("#l/1/ctl", 2); - if(efd < 0){ - prerror("opening #l/1/ctl"); - return -1; - } - if(write(efd, "connect 0x900", sizeof("connect 0x900")-1)<0){ - close(efd); - prerror("connect 0x900"); - return -1; - } - if(write(efd, "push noether", sizeof("push noether")-1)<0){ - close(efd); - prerror("push noether"); - return -1; - } - if(write(efd, "config nonet", sizeof("config nonet")-1)<0){ - close(efd); - prerror("config nonet"); - return -1; - } - mounted = 1; - } - - /* - * grab a nonet channel and call up the file server - */ - fd = open("#nnonet/2/data", 2); - if(fd < 0) { - prerror("opening #nnonet/2/data"); - return -1; - } - cfd = open("#nnonet/2/ctl", 2); - if(cfd < 0){ - close(fd); - fd = -1; - prerror("opening #nnonet/2/ctl"); - return -1; - } - if(write(cfd, a->cmd, strlen(a->cmd))<0){ - close(cfd); - close(fd); - fd = cfd = -1; - prerror(a->cmd); - return -1; - } - - net = "nonet"; - netdev = "#nnonet"; - return fd; -} - -int -dkdial(char *arg) -{ - int fd; - char cmd[64]; - static int mounted; - - if(!mounted){ - /* - * grab the hsvme and configure it for a datakit - */ - efd = open("#h/ctl", 2); - if(efd < 0){ - prerror("opening #h/ctl"); - return -1; - } - if(write(efd, "push dkmux", sizeof("push dkmux")-1)<0){ - close(efd); - prerror("push dkmux"); - return -1; - } - if(write(efd, "config 4 256 restart dk", sizeof("config 4 256 restart dk")-1)<0){ - close(efd); - prerror("config 4 256 restart dk"); - return -1; - } - mounted = 1; - sleep(2000); /* wait for things to settle down */ - } - - /* - * grab a datakit channel and call up the file server - */ - fd = open("#kdk/5/data", 2); - if(fd < 0) { - prerror("opening #kdk/5/data"); - return -1; - } - cfd = open("#kdk/5/ctl", 2); - if(cfd < 0){ - close(fd); - fd = -1; - prerror("opening #kdk/5/ctl"); - return -1; - } - sprint(cmd, "connect %s", arg); - if(write(cfd, cmd, strlen(cmd))<0){ - close(cfd); - close(fd); - cfd = fd = -1; - prerror(cmd); - return -1; - } - net = "dk"; - netdev = "#kdk"; - return fd; -} - -void -boot(int ask) -{ - int n, f, tries; - char *srvname; - Dir dir; - char dirbuf[DIRLEN]; - - if(ask){ - outin("server", sys, sizeof(sys)); - } - - for(tries = 0; tries < 5; tries++){ - fd = -1; - if(strncmp(sys, "bit!", 4) == 0) - fd = bitdial(srvname = &sys[4]); - else if(strncmp(sys, "dk!", 3) == 0) - fd = dkdial(srvname = &sys[3]); - else if(strncmp(sys, "nonet!", 6) == 0) - fd = nonetdial(srvname = &sys[6]); - else - fd = nonetdial(srvname = sys); - if(fd >= 0) - break; - print("can't connect, retrying...\n"); - sleep(1000); - } - if(fd < 0){ - print("can't connect\n"); - return; - } - - print("nop..."); - hdr.type = Tnop; - hdr.tag = ~0; - n = convS2M(&hdr, buf); - if(write(fd, buf, n) != n){ - print("n = %d\n", n); - prerror("write nop"); - return; - } - reread: - n = read(fd, buf, sizeof buf); - if(n <= 0){ - prerror("read nop"); - return; - } - if(n == 2) - goto reread; - if(convM2S(buf, &hdr, n) == 0) { - print("n = %d; buf = %.2x %.2x %.2x %.2x\n", - n, buf[0], buf[1], buf[2], buf[3]); - prerror("format nop"); - return; - } - if(hdr.type != Rnop){ - prerror("not Rnop"); - return; - } - if(hdr.tag != ~0){ - prerror("tag not ~0"); - return; - } - - print("session..."); - hdr.type = Tsession; - hdr.tag = ~0; - n = convS2M(&hdr, buf); - if(write(fd, buf, n) != n){ - prerror("write session"); - return; - } - n = read(fd, buf, sizeof buf); - if(n <= 0){ - prerror("read session"); - return; - } - if(convM2S(buf, &hdr, n) == 0){ - prerror("format session"); - return; - } - if(hdr.tag != ~0){ - prerror("tag not ~0"); - return; - } - if(hdr.type == Rerror){ - fprint(2, "boot: error %s\n", hdr.ename); - return; - } - if(hdr.type != Rsession){ - prerror("not Rsession"); - return; - } - - print("post..."); - sprint(buf, "#s/%s", srvname); - f = create(buf, 1, 0666); - if(f < 0) - error("create"); - sprint(buf, "%d", fd); - if(write(f, buf, strlen(buf)) != strlen(buf)) - error("write"); - close(f); - f = create("#s/boot", 1, 0666); - if(f < 0) - error("create"); - sprint(buf, "%d", fd); - if(write(f, buf, strlen(buf)) != strlen(buf)) - error("write"); - close(f); - - print("mount..."); - if(bind("/", "/", MREPL) < 0) - error("bind"); - if(mount(fd, "/", MAFTER|MCREATE, "", "") < 0) - error("mount"); - - /* - * set the time from the access time of the root of the file server, - * accessible as /.. - */ - print("time..."); - if(stat("/..", dirbuf) < 0) - error("stat"); - convM2D(dirbuf, &dir); - f = open("#c/time", OWRITE); - sprint(dirbuf, "%ld", dir.atime); - write(f, dirbuf, strlen(dirbuf)); - close(f); - - print("success\n"); - - if(netdev){ - char buf[64]; - sprint(buf, "/net/%s", net); - bind(netdev, buf, MREPL); - bind(netdev, "/net/net", MREPL); - } - if(net){ - char buf[64]; - sprint(buf, "/lib/netaddr.%s", net); - print("binding %s onto /lib/netaddr.net\n", buf); - bind(buf, "/lib/netaddr.net", MREPL); - } - - if(ask) - execl("/sparc/init", "init", "-t", "-m", 0); - else - execl("/sparc/init", "init", "-t", 0); - error("/sparc/init"); -} - -/* - * print error - */ -void -prerror(char *s) -{ - char buf[64]; - - errstr(buf); - fprint(2, "boot: %s: %s\n", s, buf); -} - -/* - * print error and exit - */ -void -error(char *s) -{ - char buf[64]; - - errstr(buf); - fprint(2, "boot: %s: %s\n", s, buf); - exits(0); -} - -/* - * prompt and get input - */ -int -outin(char *prompt, char *def, int len) -{ - int n; - char buf[256]; - - do{ - print("%s[%s]: ", prompt, def); - n = read(0, buf, len); - }while(n==0); - if(n < 0) - error("can't read #c/cons; please reboot"); - if(n != 1){ - buf[n-1] = 0; - strcpy(def, buf); - } - return n; -} diff --git a/ss/boot.h b/ss/boot.h deleted file mode 100644 index fe9567c9382a2b103e17534704d06d9d81161706..0000000000000000000000000000000000000000 --- a/ss/boot.h +++ /dev/null @@ -1,6174 +0,0 @@ -ulong bootcode[]={ - 0x0000002ab, - 0x000005958, - 0x0000006e8, - 0x000001100, - 0x000000000, - 0x000001020, - 0x000000000, - 0x000000000, - 0x082206014, - 0x0de206000, - 0x01d00001f, - 0x08403a3fe, - 0x0ce006014, - 0x090006018, - 0x0ce206004, - 0x0d0206008, - 0x040000007, - 0x001000000, - 0x0ce206004, - 0x04000057d, - 0x001000000, - 0x010bffffd, - 0x001000000, - 0x0822060a0, - 0x0de206000, - 0x0c0206098, - 0x09000b215, - 0x0d0206004, - 0x0c0206008, - 0x040000701, - 0x001000000, - 0x09200b21d, - 0x0d2206004, - 0x090002001, - 0x0d0206008, - 0x0400006fb, - 0x001000000, - 0x09200b225, - 0x0d2206004, - 0x090002001, - 0x0d0206008, - 0x0400006f5, - 0x001000000, - 0x092006018, - 0x0d2206004, - 0x09000b22d, - 0x0d0206008, - 0x04000064b, - 0x001000000, - 0x09200b232, - 0x0d2206004, - 0x090006018, - 0x0d0206008, - 0x092002080, - 0x0d220600c, - 0x0400004f6, - 0x001000000, - 0x09200b237, - 0x0d2206004, - 0x094002002, - 0x0d4206008, - 0x0400006e1, - 0x001000000, - 0x0ce20609c, - 0x080a1c000, - 0x006800013, - 0x001000000, - 0x092006018, - 0x0d2206004, - 0x040000678, - 0x001000000, - 0x0ce206014, - 0x0d200609c, - 0x0d2206004, - 0x090006018, - 0x0d0206008, - 0x0d2006014, - 0x0d220600c, - 0x0400006e8, - 0x001000000, - 0x0d000609c, - 0x0d0206004, - 0x0400006ae, - 0x001000000, - 0x09000b23f, - 0x0d0206004, - 0x094002001, - 0x0d4206008, - 0x0900021b6, - 0x0d020600c, - 0x0400006ac, - 0x001000000, - 0x0ce20609c, - 0x080a1c000, - 0x016800006, - 0x001000000, - 0x09200b24a, - 0x0d2206004, - 0x0400004b4, - 0x001000000, - 0x0d00060a8, - 0x0d0022000, - 0x0d0206004, - 0x040000656, - 0x001000000, - 0x0ce206014, - 0x0d40060a8, - 0x0d402a000, - 0x0d4206004, - 0x040000650, - 0x001000000, - 0x0ce206010, - 0x0d400609c, - 0x0d4206004, - 0x0d20060a8, - 0x0d2026000, - 0x0d2206008, - 0x0d4006010, - 0x0d420600c, - 0x0400006bf, - 0x001000000, - 0x0d2006014, - 0x080a1c009, - 0x002800006, - 0x001000000, - 0x09000b252, - 0x0d0206004, - 0x040000497, - 0x001000000, - 0x0d200609c, - 0x0d2206004, - 0x04000067d, - 0x001000000, - 0x096100000, - 0x0d00060a4, - 0x080a2c008, - 0x016800011, - 0x001000000, - 0x09200b25a, - 0x0d2206004, - 0x0d6206008, - 0x0d620609c, - 0x0932ae002, - 0x0d00060a8, - 0x092024008, - 0x0d2026000, - 0x0d220600c, - 0x04000053b, - 0x001000000, - 0x0d000609c, - 0x096022001, - 0x010bfffef, - 0x001000000, - 0x0d00060a8, - 0x096022004, - 0x0d62060a8, - 0x0d20060a4, - 0x098027fff, - 0x0d82060a4, - 0x080a30000, - 0x004800013, - 0x001000000, - 0x0d202e000, - 0x0d24a6000, - 0x080a2602d, - 0x01280000e, - 0x001000000, - 0x0d002e000, - 0x0d04a2001, - 0x080a2206d, - 0x012800004, - 0x001000000, - 0x092002001, - 0x0d2206098, - 0x098033fff, - 0x09602e004, - 0x0d62060a8, - 0x010bfffed, - 0x001000000, - 0x09000b002, - 0x0d0206004, - 0x09200b269, - 0x0d2206008, - 0x0400005c3, - 0x001000000, - 0x0d00060a4, - 0x080a22002, - 0x00280001e, - 0x001000000, - 0x0d0006098, - 0x0d0206004, - 0x0400001b5, - 0x001000000, - 0x0d600b0d6, - 0x080a2c000, - 0x004800005, - 0x001000000, - 0x0d6206004, - 0x04000063a, - 0x001000000, - 0x0d200b0a6, - 0x080a24000, - 0x004800006, - 0x001000000, - 0x0d000b0a6, - 0x0d0206004, - 0x040000632, - 0x001000000, - 0x0c020b0a6, - 0x0c020b0d6, - 0x090002001, - 0x0d0206004, - 0x0400001a0, - 0x001000000, - 0x0d600b0d6, - 0x010bfffeb, - 0x001000000, - 0x09000b002, - 0x0d0206004, - 0x0d20060a8, - 0x0d2026004, - 0x0d2206008, - 0x04000059c, - 0x001000000, - 0x010bfffdd, - 0x001000000, - 0x08220600c, - 0x0de206000, - 0x09200b270, - 0x0d2206004, - 0x090002002, - 0x0d0206008, - 0x040000636, - 0x001000000, - 0x0d0006000, - 0x08200600c, - 0x081c22008, - 0x001000000, - 0x082206024, - 0x0de206000, - 0x09600b0da, - 0x0d202e000, - 0x080a24000, - 0x00280000d, - 0x001000000, - 0x0d6206014, - 0x0d202e000, - 0x0d2206004, - 0x0d4006028, - 0x0d4206008, - 0x040000554, - 0x001000000, - 0x0d6006014, - 0x080a1c000, - 0x0128000c7, - 0x001000000, - 0x0d6206014, - 0x0d002e000, - 0x080a20000, - 0x01280000b, - 0x001000000, - 0x09200b278, - 0x0d2206004, - 0x0400004c7, - 0x001000000, - 0x08e003fff, - 0x0d0006000, - 0x082006024, - 0x081c22008, - 0x001000000, - 0x0d000b0ae, - 0x080a20000, - 0x01280005c, - 0x001000000, - 0x09000b2a6, - 0x0d0206004, - 0x094002002, - 0x0d4206008, - 0x040000608, - 0x001000000, - 0x080a1c000, - 0x01680000b, - 0x001000000, - 0x09200b2af, - 0x0d2206004, - 0x0400003e5, - 0x001000000, - 0x08e003fff, - 0x0d0006000, - 0x082006024, - 0x081c22008, - 0x001000000, - 0x0ce206020, - 0x0ce206004, - 0x09400b2c0, - 0x0d4206008, - 0x09200200d, - 0x0d220600c, - 0x04000060c, - 0x001000000, - 0x0d6006020, - 0x080a1c000, - 0x01680000e, - 0x001000000, - 0x0d6206004, - 0x0400005cf, - 0x001000000, - 0x09200b2ce, - 0x0d2206004, - 0x0400003cd, - 0x001000000, - 0x08e003fff, - 0x0d0006000, - 0x082006024, - 0x081c22008, - 0x001000000, - 0x0d6206004, - 0x09400b2dc, - 0x0d4206008, - 0x09200200c, - 0x0d220600c, - 0x0400005f5, - 0x001000000, - 0x0d6006020, - 0x080a1c000, - 0x01680000e, - 0x001000000, - 0x0d6206004, - 0x0400005b8, - 0x001000000, - 0x09200b2e9, - 0x0d2206004, - 0x0400003b6, - 0x001000000, - 0x08e003fff, - 0x0d0006000, - 0x082006024, - 0x081c22008, - 0x001000000, - 0x0d6206004, - 0x09400b2f6, - 0x0d4206008, - 0x09200200c, - 0x0d220600c, - 0x0400005de, - 0x001000000, - 0x080a1c000, - 0x01680000f, - 0x001000000, - 0x0d0006020, - 0x0d0206004, - 0x0400005a1, - 0x001000000, - 0x09200b303, - 0x0d2206004, - 0x04000039f, - 0x001000000, - 0x08e003fff, - 0x0d0006000, - 0x082006024, - 0x081c22008, - 0x001000000, - 0x090002001, - 0x0d020b0ae, - 0x09000b310, - 0x0d0206004, - 0x094002002, - 0x0d4206008, - 0x0400005ae, - 0x001000000, - 0x0ce206018, - 0x080a1c000, - 0x01680000b, - 0x001000000, - 0x09200b31f, - 0x0d2206004, - 0x04000038a, - 0x001000000, - 0x08e003fff, - 0x0d0006000, - 0x082006024, - 0x081c22008, - 0x001000000, - 0x09200b336, - 0x0d2206004, - 0x094002002, - 0x0d4206008, - 0x04000059b, - 0x001000000, - 0x0ce20601c, - 0x080a1c000, - 0x016800010, - 0x001000000, - 0x0d0006018, - 0x0d0206004, - 0x040000575, - 0x001000000, - 0x092003fff, - 0x09000b344, - 0x0d0206004, - 0x040000372, - 0x001000000, - 0x08e003fff, - 0x0d0006000, - 0x082006024, - 0x081c22008, - 0x001000000, - 0x0d4006014, - 0x0d402a004, - 0x0d4206004, - 0x040000523, - 0x001000000, - 0x0ce206010, - 0x0d400601c, - 0x0d4206004, - 0x0d0006014, - 0x0d0022004, - 0x0d0206008, - 0x0d4006010, - 0x0d420600c, - 0x040000592, - 0x001000000, - 0x080a1c000, - 0x016800015, - 0x001000000, - 0x0d000601c, - 0x0d0206004, - 0x040000555, - 0x001000000, - 0x0d2006018, - 0x0d2206004, - 0x040000551, - 0x001000000, - 0x090003fff, - 0x0d2006014, - 0x0d2026004, - 0x0d2206004, - 0x04000034d, - 0x001000000, - 0x08e003fff, - 0x0d0006000, - 0x082006024, - 0x081c22008, - 0x001000000, - 0x09000b35a, - 0x0d020b0ba, - 0x09200b360, - 0x0d220b052, - 0x0ce006018, - 0x0d0006000, - 0x082006024, - 0x081c22008, - 0x001000000, - 0x09602e008, - 0x010bfff2b, - 0x001000000, - 0x082206058, - 0x0de206000, - 0x0d000b10a, - 0x080a20000, - 0x012800049, - 0x001000000, - 0x09000b368, - 0x0d0206004, - 0x094002002, - 0x0d4206008, - 0x04000054c, - 0x001000000, - 0x0ce20b0aa, - 0x080a1c000, - 0x01680000b, - 0x001000000, - 0x09200b36f, - 0x0d2206004, - 0x040000328, - 0x001000000, - 0x08e003fff, - 0x0d0006000, - 0x082006058, - 0x081c22008, - 0x001000000, - 0x0ce206004, - 0x09400b37e, - 0x0d4206008, - 0x09200200a, - 0x0d220600c, - 0x040000550, - 0x001000000, - 0x0d600b0aa, - 0x080a1c000, - 0x01680000e, - 0x001000000, - 0x0d6206004, - 0x040000513, - 0x001000000, - 0x09200b389, - 0x0d2206004, - 0x040000311, - 0x001000000, - 0x08e003fff, - 0x0d0006000, - 0x082006058, - 0x081c22008, - 0x001000000, - 0x0d6206004, - 0x09400b394, - 0x0d4206008, - 0x092002017, - 0x0d220600c, - 0x040000539, - 0x001000000, - 0x080a1c000, - 0x01680000f, - 0x001000000, - 0x0d000b0aa, - 0x0d0206004, - 0x0400004fc, - 0x001000000, - 0x09200b3ac, - 0x0d2206004, - 0x0400002fa, - 0x001000000, - 0x08e003fff, - 0x0d0006000, - 0x082006058, - 0x081c22008, - 0x001000000, - 0x090002001, - 0x0d020b10a, - 0x0920027d0, - 0x0d2206004, - 0x040000517, - 0x001000000, - 0x09200b3c4, - 0x0d2206004, - 0x094002002, - 0x0d4206008, - 0x040000505, - 0x001000000, - 0x0ce206054, - 0x080a1c000, - 0x01680000b, - 0x001000000, - 0x09000b3d0, - 0x0d0206004, - 0x0400002e1, - 0x001000000, - 0x08e003fff, - 0x0d0006000, - 0x082006058, - 0x081c22008, - 0x001000000, - 0x09000b3e4, - 0x0d0206004, - 0x094002002, - 0x0d4206008, - 0x0400004f2, - 0x001000000, - 0x0ce20b0a6, - 0x080a1c000, - 0x016800010, - 0x001000000, - 0x0d2006054, - 0x0d2206004, - 0x0400004cc, - 0x001000000, - 0x090003fff, - 0x09200b3ef, - 0x0d2206004, - 0x0400002c9, - 0x001000000, - 0x08e003fff, - 0x0d0006000, - 0x082006058, - 0x081c22008, - 0x001000000, - 0x090006014, - 0x0d0206004, - 0x09200b402, - 0x0d2206008, - 0x0d000605c, - 0x0d020600c, - 0x0400003f0, - 0x001000000, - 0x094006014, - 0x0d4206004, - 0x040000473, - 0x001000000, - 0x0ce206010, - 0x0d400b0a6, - 0x0d4206004, - 0x090006014, - 0x0d0206008, - 0x0d4006010, - 0x0d420600c, - 0x0400004e3, - 0x001000000, - 0x080a1c000, - 0x016800015, - 0x001000000, - 0x0d000b0a6, - 0x0d0206004, - 0x0400004a6, - 0x001000000, - 0x0d2006054, - 0x0d2206004, - 0x0400004a2, - 0x001000000, - 0x090003fff, - 0x0d020b0a6, - 0x092006014, - 0x0d2206004, - 0x04000029e, - 0x001000000, - 0x08e003fff, - 0x0d0006000, - 0x082006058, - 0x081c22008, - 0x001000000, - 0x09000b40d, - 0x0d020b0ba, - 0x09200b410, - 0x0d220b052, - 0x0ce006054, - 0x0d0006000, - 0x082006058, - 0x081c22008, - 0x001000000, - 0x082206154, - 0x0de206000, - 0x0d800b0d6, - 0x0d0006158, - 0x080a20000, - 0x00280000b, - 0x001000000, - 0x09200b415, - 0x0d2206004, - 0x09000b002, - 0x0d0206008, - 0x09200201c, - 0x0d220600c, - 0x0400002ac, - 0x001000000, - 0x0d800b0d6, - 0x096100000, - 0x0d6206148, - 0x080a2e005, - 0x01680001a, - 0x001000000, - 0x090003fff, - 0x0d020b0d6, - 0x09000b002, - 0x0d0206004, - 0x09400b41c, - 0x0d4206008, - 0x090002004, - 0x0d020600c, - 0x040000439, - 0x001000000, - 0x09600b002, - 0x080a1c000, - 0x012800240, - 0x001000000, - 0x09002e004, - 0x0d0206144, - 0x0d0206004, - 0x07ffffe48, - 0x001000000, - 0x098100007, - 0x0d820b0d6, - 0x080a30000, - 0x006800229, - 0x001000000, - 0x080a30000, - 0x01680000a, - 0x001000000, - 0x09200b448, - 0x0d2206004, - 0x040000328, - 0x001000000, - 0x0d0006000, - 0x082006154, - 0x081c22008, - 0x001000000, - 0x09000b457, - 0x0d0206004, - 0x040000320, - 0x001000000, - 0x092002032, - 0x0d228a76e, - 0x090003fff, - 0x0d030a772, - 0x09000a76e, - 0x0d0206004, - 0x09400b76e, - 0x0d4206008, - 0x040000484, - 0x001000000, - 0x0d200b0d6, - 0x0d2206004, - 0x09400b76e, - 0x0d4206008, - 0x0ce206150, - 0x0ce20600c, - 0x040000476, - 0x001000000, - 0x0d6006150, - 0x080a1c00b, - 0x00280000f, - 0x001000000, - 0x09000b45e, - 0x0d0206004, - 0x0d6206008, - 0x040000305, - 0x001000000, - 0x09000b466, - 0x0d0206004, - 0x040000235, - 0x001000000, - 0x0d0006000, - 0x082006154, - 0x081c22008, - 0x001000000, - 0x0d000b0d6, - 0x0d0206004, - 0x09400b76e, - 0x0d4206008, - 0x011000004, - 0x0d020600c, - 0x04000044b, - 0x001000000, - 0x080a1c000, - 0x01480000a, - 0x001000000, - 0x09200b470, - 0x0d2206004, - 0x040000222, - 0x001000000, - 0x0d0006000, - 0x082006154, - 0x081c22008, - 0x001000000, - 0x080a1e002, - 0x012800004, - 0x001000000, - 0x010bfffea, - 0x001000000, - 0x09000b76e, - 0x0d0206004, - 0x09400a76e, - 0x0d4206008, - 0x0ce206150, - 0x0ce20600c, - 0x040000770, - 0x001000000, - 0x080a1c000, - 0x012800020, - 0x001000000, - 0x09200b479, - 0x0d2206004, - 0x0d0006150, - 0x0d0206008, - 0x0d248b76e, - 0x0932a6018, - 0x0933a6018, - 0x0d220600c, - 0x0d048b76f, - 0x0912a2018, - 0x0913a2018, - 0x0d0206010, - 0x0d248b770, - 0x0932a6018, - 0x0933a6018, - 0x0d2206014, - 0x0d048b771, - 0x0912a2018, - 0x0913a2018, - 0x0d0206018, - 0x0400002c4, - 0x001000000, - 0x09200b49c, - 0x0d2206004, - 0x0400001f4, - 0x001000000, - 0x0d0006000, - 0x082006154, - 0x081c22008, - 0x001000000, - 0x0d048a76e, - 0x080a22033, - 0x00280000a, - 0x001000000, - 0x09200b4a7, - 0x0d2206004, - 0x0400001e8, - 0x001000000, - 0x0d0006000, - 0x082006154, - 0x081c22008, - 0x001000000, - 0x0d050a772, - 0x080a23fff, - 0x00280000a, - 0x001000000, - 0x09200b4b0, - 0x0d2206004, - 0x0400001dc, - 0x001000000, - 0x0d0006000, - 0x082006154, - 0x081c22008, - 0x001000000, - 0x09000b4bb, - 0x0d0206004, - 0x0400002a0, - 0x001000000, - 0x092002034, - 0x0d228a76e, - 0x090003fff, - 0x0d030a772, - 0x09000a76e, - 0x0d0206004, - 0x09400b76e, - 0x0d4206008, - 0x040000404, - 0x001000000, - 0x0d200b0d6, - 0x0d2206004, - 0x09400b76e, - 0x0d4206008, - 0x0ce206150, - 0x0ce20600c, - 0x0400003f6, - 0x001000000, - 0x0d4006150, - 0x080a1c00a, - 0x00280000a, - 0x001000000, - 0x09000b4c6, - 0x0d0206004, - 0x0400001ba, - 0x001000000, - 0x0d0006000, - 0x082006154, - 0x081c22008, - 0x001000000, - 0x0d000b0d6, - 0x0d0206004, - 0x09400b76e, - 0x0d4206008, - 0x011000004, - 0x0d020600c, - 0x0400003d0, - 0x001000000, - 0x080a1c000, - 0x01480000a, - 0x001000000, - 0x09200b4d4, - 0x0d2206004, - 0x0400001a7, - 0x001000000, - 0x0d0006000, - 0x082006154, - 0x081c22008, - 0x001000000, - 0x09200b76e, - 0x0d2206004, - 0x09400a76e, - 0x0d4206008, - 0x0ce20600c, - 0x0400006fb, - 0x001000000, - 0x080a1c000, - 0x01280000a, - 0x001000000, - 0x09000b4e1, - 0x0d0206004, - 0x040000195, - 0x001000000, - 0x0d0006000, - 0x082006154, - 0x081c22008, - 0x001000000, - 0x0d250a772, - 0x080a27fff, - 0x00280000a, - 0x001000000, - 0x09000b4f0, - 0x0d0206004, - 0x040000189, - 0x001000000, - 0x0d0006000, - 0x082006154, - 0x081c22008, - 0x001000000, - 0x0d248a76e, - 0x080a26037, - 0x01280000f, - 0x001000000, - 0x090002002, - 0x0d0206004, - 0x09200b4fb, - 0x0d2206008, - 0x09000a76e, - 0x090022008, - 0x0d020600c, - 0x040000277, - 0x001000000, - 0x0d0006000, - 0x082006154, - 0x081c22008, - 0x001000000, - 0x0d248a76e, - 0x080a26035, - 0x00280000a, - 0x001000000, - 0x09000b50b, - 0x0d0206004, - 0x04000016c, - 0x001000000, - 0x0d0006000, - 0x082006154, - 0x081c22008, - 0x001000000, - 0x09200b518, - 0x0d2206004, - 0x040000230, - 0x001000000, - 0x09000b76e, - 0x0d0206004, - 0x09200b520, - 0x0d2206008, - 0x0d0006144, - 0x0d020600c, - 0x040000290, - 0x001000000, - 0x09000b76e, - 0x0d0206004, - 0x094002001, - 0x0d4206008, - 0x0900021b6, - 0x0d020600c, - 0x040000358, - 0x001000000, - 0x0ce20614c, - 0x080a1c000, - 0x016800006, - 0x001000000, - 0x09200b526, - 0x0d2206004, - 0x040000160, - 0x001000000, - 0x09000b76e, - 0x0d0206004, - 0x09200b52d, - 0x0d2206008, - 0x0d000b0d6, - 0x0d020600c, - 0x040000278, - 0x001000000, - 0x09200b76e, - 0x0d2206004, - 0x0400002fb, - 0x001000000, - 0x0ce206018, - 0x09400b76e, - 0x0d4206004, - 0x0400002f6, - 0x001000000, - 0x0ce206014, - 0x0d400614c, - 0x0d4206004, - 0x09200b76e, - 0x0d2206008, - 0x0d4006014, - 0x0d420600c, - 0x040000366, - 0x001000000, - 0x0d2006018, - 0x080a1c009, - 0x002800006, - 0x001000000, - 0x09000b530, - 0x0d0206004, - 0x04000013e, - 0x001000000, - 0x0d200614c, - 0x0d2206004, - 0x040000324, - 0x001000000, - 0x09200b536, - 0x0d2206004, - 0x094002001, - 0x0d4206008, - 0x0920021b6, - 0x0d220600c, - 0x040000322, - 0x001000000, - 0x0ce20614c, - 0x080a1c000, - 0x016800006, - 0x001000000, - 0x09000b53e, - 0x0d0206004, - 0x04000012a, - 0x001000000, - 0x09200b76e, - 0x0d2206004, - 0x09000b545, - 0x0d0206008, - 0x0d200b0d6, - 0x0d220600c, - 0x040000242, - 0x001000000, - 0x09000b76e, - 0x0d0206004, - 0x0400002c5, - 0x001000000, - 0x0ce206018, - 0x09400b76e, - 0x0d4206004, - 0x0400002c0, - 0x001000000, - 0x0ce206014, - 0x0d400614c, - 0x0d4206004, - 0x09200b76e, - 0x0d2206008, - 0x0d4006014, - 0x0d420600c, - 0x040000330, - 0x001000000, - 0x0d2006018, - 0x080a1c009, - 0x002800006, - 0x001000000, - 0x09000b548, - 0x0d0206004, - 0x040000108, - 0x001000000, - 0x0d200614c, - 0x0d2206004, - 0x0400002ee, - 0x001000000, - 0x09000b54e, - 0x0d0206004, - 0x0400001b8, - 0x001000000, - 0x09000b557, - 0x0d0206004, - 0x09400b559, - 0x0d4206008, - 0x0c020600c, - 0x0400002dd, - 0x001000000, - 0x080a1c000, - 0x016800006, - 0x001000000, - 0x09000b55b, - 0x0d0206004, - 0x0400000f2, - 0x001000000, - 0x0d000b0d6, - 0x0d0206004, - 0x09400b560, - 0x0d4206008, - 0x090002006, - 0x0d020600c, - 0x09400b562, - 0x0d4206010, - 0x09000b563, - 0x0d0206014, - 0x0400002e8, - 0x001000000, - 0x080a1c000, - 0x016800006, - 0x001000000, - 0x09200b564, - 0x0d2206004, - 0x0400000df, - 0x001000000, - 0x09000b56a, - 0x0d0206004, - 0x040000193, - 0x001000000, - 0x09000b572, - 0x0d0206004, - 0x09400605c, - 0x0d4206008, - 0x0400002ef, - 0x001000000, - 0x080a1c000, - 0x016800006, - 0x001000000, - 0x09000b576, - 0x0d0206004, - 0x0400000ce, - 0x001000000, - 0x09200605c, - 0x0d2206004, - 0x0900060d0, - 0x0d0206008, - 0x04000093c, - 0x001000000, - 0x09000b57b, - 0x0d0206004, - 0x094002001, - 0x0d4206008, - 0x0400002ca, - 0x001000000, - 0x0ce20614c, - 0x09000605c, - 0x0d0206004, - 0x09200b583, - 0x0d2206008, - 0x0d0006130, - 0x0d020600c, - 0x0400001d9, - 0x001000000, - 0x09000605c, - 0x0d0206004, - 0x04000025c, - 0x001000000, - 0x0ce206018, - 0x0d000614c, - 0x0d0206004, - 0x09200605c, - 0x0d2206008, - 0x0d0006018, - 0x0d020600c, - 0x0400002cc, - 0x001000000, - 0x0d200614c, - 0x0d2206004, - 0x040000292, - 0x001000000, - 0x09000b587, - 0x0d0206004, - 0x04000015c, - 0x001000000, - 0x0d600b0ba, - 0x0d200b052, - 0x080a24000, - 0x002800018, - 0x001000000, - 0x09000601c, - 0x0d0206004, - 0x09200b590, - 0x0d2206008, - 0x0d620600c, - 0x0400001b8, - 0x001000000, - 0x0d200b052, - 0x0d2206004, - 0x09000601c, - 0x0d0206008, - 0x0c020600c, - 0x040000275, - 0x001000000, - 0x0d200b052, - 0x0d2206004, - 0x09000b598, - 0x0d0206008, - 0x0c020600c, - 0x04000026e, - 0x001000000, - 0x0d600b0ba, - 0x080a2c000, - 0x002800016, - 0x001000000, - 0x09000601c, - 0x0d0206004, - 0x09200b5a1, - 0x0d2206008, - 0x0d620600c, - 0x04000019f, - 0x001000000, - 0x09200b5b1, - 0x0d2206004, - 0x09000601c, - 0x0d0206008, - 0x040000131, - 0x001000000, - 0x09200601c, - 0x0d2206004, - 0x09000b5d3, - 0x0d0206008, - 0x0c020600c, - 0x040000256, - 0x001000000, - 0x0d2006158, - 0x080a24000, - 0x002800015, - 0x001000000, - 0x09000b5e4, - 0x0d0206004, - 0x09200b5f0, - 0x0d2206008, - 0x09000b5f5, - 0x0d020600c, - 0x09200b5f8, - 0x0d2206010, - 0x0c0206014, - 0x04000010e, - 0x001000000, - 0x09200b60f, - 0x0d2206004, - 0x04000005f, - 0x001000000, - 0x0d0006000, - 0x082006154, - 0x081c22008, - 0x001000000, - 0x09000b5fb, - 0x0d0206004, - 0x09200b607, - 0x0d2206008, - 0x09000b60c, - 0x0d020600c, - 0x0c0206010, - 0x0400000fd, - 0x001000000, - 0x010bfffef, - 0x001000000, - 0x09000b42c, - 0x0d0206004, - 0x040000104, - 0x001000000, - 0x0920023e8, - 0x0d2206004, - 0x04000025c, - 0x001000000, - 0x0d800b0d6, - 0x0d0006148, - 0x096022001, - 0x010bffdb2, - 0x001000000, - 0x0d6206004, - 0x09400b421, - 0x0d4206008, - 0x092002003, - 0x0d220600c, - 0x0400001f0, - 0x001000000, - 0x09600b002, - 0x080a1c000, - 0x01280000a, - 0x001000000, - 0x09202e003, - 0x0d2206144, - 0x0d2206004, - 0x07ffffce5, - 0x001000000, - 0x098100007, - 0x010bffdb7, - 0x001000000, - 0x0d6206004, - 0x09400b425, - 0x0d4206008, - 0x090002006, - 0x0d020600c, - 0x0400001dd, - 0x001000000, - 0x09600b002, - 0x080a1c000, - 0x01280000a, - 0x001000000, - 0x09002e006, - 0x0d0206144, - 0x0d0206004, - 0x07ffffbf8, - 0x001000000, - 0x098100007, - 0x010bffda4, - 0x001000000, - 0x0d6206144, - 0x0d6206004, - 0x07ffffbf1, - 0x001000000, - 0x098100007, - 0x010bffd9d, - 0x001000000, - 0x082206054, - 0x0de206000, - 0x090006014, - 0x0d0206004, - 0x040000206, - 0x001000000, - 0x092002002, - 0x0d2206004, - 0x09000b61b, - 0x0d0206008, - 0x0d2006058, - 0x0d220600c, - 0x090006014, - 0x0d0206010, - 0x0400000f1, - 0x001000000, - 0x0d0006000, - 0x082006054, - 0x081c22008, - 0x001000000, - 0x082206054, - 0x0de206000, - 0x092006014, - 0x0d2206004, - 0x0400001f2, - 0x001000000, - 0x090002002, - 0x0d0206004, - 0x09200b629, - 0x0d2206008, - 0x0d0006058, - 0x0d020600c, - 0x092006014, - 0x0d2206010, - 0x0400000dd, - 0x001000000, - 0x0c0206004, - 0x04000007a, - 0x001000000, - 0x0d0006000, - 0x082006054, - 0x081c22008, - 0x001000000, - 0x082206114, - 0x0de206000, - 0x09200b637, - 0x0d2206004, - 0x0d0006118, - 0x0d0206008, - 0x0d200611c, - 0x0d220600c, - 0x040000099, - 0x001000000, - 0x0c0206004, - 0x092006010, - 0x0d2206008, - 0x0d4006120, - 0x0d420600c, - 0x0400001e8, - 0x001000000, - 0x096100007, - 0x080a1c000, - 0x012800004, - 0x001000000, - 0x010bfffed, - 0x001000000, - 0x0ce206110, - 0x080a1c000, - 0x016800007, - 0x001000000, - 0x09000b640, - 0x0d0206004, - 0x07fffffcc, - 0x001000000, - 0x0d6006110, - 0x080a2e001, - 0x00280000c, - 0x001000000, - 0x090006010, - 0x09002c008, - 0x0c02a3fff, - 0x0d000611c, - 0x0d0206004, - 0x092006010, - 0x0d2206008, - 0x040000123, - 0x001000000, - 0x0d6006110, - 0x08e10000b, - 0x0d0006000, - 0x082006114, - 0x081c22008, - 0x001000000, - 0x082206008, - 0x09800b6ea, - 0x096100000, - 0x080a2e021, - 0x016800013, - 0x001000000, - 0x0912ae002, - 0x09002000c, - 0x0d0022000, - 0x080a20000, - 0x01280000a, - 0x001000000, - 0x0932ae002, - 0x09202400c, - 0x0d400600c, - 0x0d4226000, - 0x08e002001, - 0x082006008, - 0x081c3e008, - 0x001000000, - 0x09602e001, - 0x010bfffee, - 0x001000000, - 0x08e100000, - 0x082006008, - 0x081c3e008, - 0x001000000, - 0x082206008, - 0x0d800600c, - 0x09600b6ea, - 0x094100000, - 0x080a2a021, - 0x01680000e, - 0x001000000, - 0x0912aa002, - 0x09002000b, - 0x0d0022000, - 0x080a2000c, - 0x012800005, - 0x001000000, - 0x0912aa002, - 0x09002000b, - 0x0c0222000, - 0x09402a001, - 0x010bffff3, - 0x001000000, - 0x082006008, - 0x081c3e008, - 0x001000000, - 0x082206008, - 0x0de206000, - 0x0d000600c, - 0x080a20000, - 0x012800005, - 0x001000000, - 0x0c0206004, - 0x04000000a, - 0x001000000, - 0x09200b0be, - 0x0d2206004, - 0x040000006, - 0x001000000, - 0x0d0006000, - 0x082006008, - 0x081c22008, - 0x001000000, - 0x082206010, - 0x0de206000, - 0x09800b6ea, - 0x094002020, - 0x080a28000, - 0x006800013, - 0x001000000, - 0x0932aa002, - 0x09202400c, - 0x0d6026000, - 0x080a2c000, - 0x00280000a, - 0x001000000, - 0x0d420600c, - 0x0912aa002, - 0x09002000c, - 0x0c0222000, - 0x09fc2e000, - 0x001000000, - 0x09800b6ea, - 0x0d400600c, - 0x09402bfff, - 0x010bfffee, - 0x001000000, - 0x0d2006014, - 0x0d2206004, - 0x040000139, - 0x001000000, - 0x0d0006000, - 0x082006010, - 0x081c22008, - 0x001000000, - 0x08220600c, - 0x0de206000, - 0x0d0006010, - 0x0d0206004, - 0x092006010, - 0x092026004, - 0x0d2206008, - 0x04000014a, - 0x001000000, - 0x0d0006000, - 0x08200600c, - 0x081c22008, - 0x001000000, - 0x01d000004, - 0x09c03a01c, - 0x08220400e, - 0x0de206000, - 0x09600601c, - 0x0d6206004, - 0x01d000004, - 0x09402c00e, - 0x0d4206008, - 0x01d000004, - 0x09c038001, - 0x0d203a020, - 0x0d220600c, - 0x01d000004, - 0x09c038001, - 0x09403a020, - 0x09402a004, - 0x0d4206010, - 0x040000889, - 0x001000000, - 0x09800601c, - 0x090002001, - 0x0d0206004, - 0x0d8206008, - 0x09021c00c, - 0x0d020600c, - 0x04000014e, - 0x001000000, - 0x096100007, - 0x0ce206014, - 0x080a1c000, - 0x01680000d, - 0x001000000, - 0x0d200b0a2, - 0x092026001, - 0x0d220b0a2, - 0x080a2600a, - 0x006800007, - 0x001000000, - 0x09000b05a, - 0x0d0206004, - 0x07fffffaa, - 0x001000000, - 0x0d6006014, - 0x08e10000b, - 0x0d0006000, - 0x01d000004, - 0x09c03a01c, - 0x08200400e, - 0x081c22008, - 0x001000000, - 0x01d000004, - 0x09c03a01c, - 0x08220400e, - 0x0de206000, - 0x09600601c, - 0x0d6206004, - 0x01d000004, - 0x09402c00e, - 0x0d4206008, - 0x01d000004, - 0x09c038001, - 0x0d203a024, - 0x0d220600c, - 0x01d000004, - 0x09c038001, - 0x09403a024, - 0x09402a004, - 0x0d4206010, - 0x040000856, - 0x001000000, - 0x09800601c, - 0x01d000004, - 0x09c038001, - 0x0d003a020, - 0x0d0206004, - 0x0d8206008, - 0x09021c00c, - 0x0d020600c, - 0x040000119, - 0x001000000, - 0x096100007, - 0x0ce206014, - 0x080a1c000, - 0x01680000d, - 0x001000000, - 0x0d200b0a2, - 0x092026001, - 0x0d220b0a2, - 0x080a2600a, - 0x006800007, - 0x001000000, - 0x09000b05a, - 0x0d0206004, - 0x07fffff75, - 0x001000000, - 0x0d6006014, - 0x08e10000b, - 0x0d0006000, - 0x01d000004, - 0x09c03a01c, - 0x08200400e, - 0x081c22008, - 0x001000000, - 0x08220601c, - 0x0de206000, - 0x0d6006020, - 0x0d000b09e, - 0x0d0206014, - 0x0d6206004, - 0x01d000004, - 0x09402c00e, - 0x0d4206008, - 0x0d0006024, - 0x0d020600c, - 0x094006024, - 0x09402a004, - 0x0d4206010, - 0x040000825, - 0x001000000, - 0x0d0006014, - 0x0d020b09e, - 0x0d0006020, - 0x08e21c008, - 0x0d0006000, - 0x08200601c, - 0x081c22008, - 0x001000000, - 0x08220600c, - 0x0da006010, - 0x0d8006014, - 0x09010000d, - 0x09a036001, - 0x0d04a2000, - 0x0952a2018, - 0x0953aa018, - 0x09210000c, - 0x098032001, - 0x0d24a6000, - 0x0972a6018, - 0x0973ae018, - 0x0912aa018, - 0x0913a2018, - 0x0932ae018, - 0x0933a6018, - 0x080a20009, - 0x002800011, - 0x001000000, - 0x0912aa018, - 0x0913a2018, - 0x0932ae018, - 0x0933a6018, - 0x080a20009, - 0x004800006, - 0x001000000, - 0x08e002001, - 0x08200600c, - 0x081c3e008, - 0x001000000, - 0x08e003fff, - 0x08200600c, - 0x081c3e008, - 0x001000000, - 0x0912aa018, - 0x0913a2018, - 0x080a20000, - 0x012bfffdd, - 0x001000000, - 0x08e100000, - 0x08200600c, - 0x081c3e008, - 0x001000000, - 0x082206004, - 0x0d2006008, - 0x0d400600c, - 0x08e1a8009, - 0x08089e003, - 0x012800035, - 0x001000000, - 0x0a20020ff, - 0x0a12c6008, - 0x09b2c6010, - 0x0992c6018, - 0x0808aa003, - 0x00280000d, - 0x001000000, - 0x0d64aa000, - 0x09402a001, - 0x0d62a6000, - 0x092026001, - 0x080a2c000, - 0x012bffff8, - 0x001000000, - 0x0ce006008, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x092026004, - 0x0d602a000, - 0x09402a004, - 0x0808ac00c, - 0x00280001a, - 0x001000000, - 0x0808ac00d, - 0x002800012, - 0x001000000, - 0x0808ac010, - 0x002800008, - 0x001000000, - 0x0d6227ffc, - 0x0808ac011, - 0x012bffff2, - 0x001000000, - 0x010bfffec, - 0x001000000, - 0x08f32e018, - 0x0ce2a7ffc, - 0x09732e010, - 0x0d62a7ffd, - 0x0c02a7ffe, - 0x010bfffe5, - 0x001000000, - 0x09732e018, - 0x0d62a7ffc, - 0x0c02a7ffd, - 0x010bfffe0, - 0x001000000, - 0x0c02a7ffc, - 0x010bfffdd, - 0x001000000, - 0x0d64aa000, - 0x09402a001, - 0x0d62a6000, - 0x092026001, - 0x080a2c000, - 0x012bffffb, - 0x001000000, - 0x010bfffd4, - 0x001000000, - 0x08220600c, - 0x0de206000, - 0x0d0006010, - 0x0d0206004, - 0x0c0206008, - 0x040000db0, - 0x001000000, - 0x0d2006010, - 0x08e21c009, - 0x0d0006000, - 0x08200600c, - 0x081c22008, - 0x001000000, - 0x082206004, - 0x0da006010, - 0x0d800600c, - 0x0d6006008, - 0x09a037fff, - 0x080a34000, - 0x006800009, - 0x001000000, - 0x0d24ae000, - 0x09010000c, - 0x098032001, - 0x0d04a2000, - 0x080a24008, - 0x002800013, - 0x001000000, - 0x080a34000, - 0x016800006, - 0x001000000, - 0x08e100000, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x0ce4ae000, - 0x08f29e018, - 0x08f39e018, - 0x0d04b3fff, - 0x0912a2018, - 0x0913a2018, - 0x08e21c008, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x09210000b, - 0x09602e001, - 0x0d24a6000, - 0x080a24000, - 0x012bfffe0, - 0x001000000, - 0x08e100000, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x082206004, - 0x08e002008, - 0x091d02000, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x082206004, - 0x08e002002, - 0x091d02000, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x082206004, - 0x08e002004, - 0x091d02000, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x082206004, - 0x08e002016, - 0x091d02000, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x082206004, - 0x08e002001, - 0x091d02000, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x082206004, - 0x08e002007, - 0x091d02000, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x082206004, - 0x08e00200d, - 0x091d02000, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x082206004, - 0x08e00200e, - 0x091d02000, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x082206004, - 0x08e00200f, - 0x091d02000, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x082206004, - 0x08e002011, - 0x091d02000, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x082206004, - 0x08e002012, - 0x091d02000, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x082206004, - 0x08e002014, - 0x091d02000, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x082206014, - 0x0de206000, - 0x0d6006018, - 0x0d200601c, - 0x098026001, - 0x0d40ae000, - 0x0d42a6000, - 0x0d252e004, - 0x0d22b2000, - 0x0d252e004, - 0x0932a6010, - 0x0933a6010, - 0x0933a6008, - 0x0d22b2001, - 0x098032002, - 0x0d24ae000, - 0x0932a6018, - 0x0933a6018, - 0x080a26041, - 0x014800130, - 0x001000000, - 0x00280010c, - 0x001000000, - 0x080a2603a, - 0x014800070, - 0x001000000, - 0x002800044, - 0x001000000, - 0x080a26035, - 0x014800020, - 0x001000000, - 0x002800018, - 0x001000000, - 0x080a26032, - 0x002800015, - 0x001000000, - 0x080a26033, - 0x002800012, - 0x001000000, - 0x080a26034, - 0x00280000f, - 0x001000000, - 0x09200b06e, - 0x0d2206004, - 0x0d04ae000, - 0x0912a2018, - 0x0913a2018, - 0x0d0206008, - 0x07ffffe62, - 0x001000000, - 0x08e100000, - 0x0d0006000, - 0x082006014, - 0x081c22008, - 0x001000000, - 0x0d000601c, - 0x08e230008, - 0x0d0006000, - 0x082006014, - 0x081c22008, - 0x001000000, - 0x080a26037, - 0x002800014, - 0x001000000, - 0x080a26038, - 0x002800007, - 0x001000000, - 0x080a26039, - 0x002bffff3, - 0x001000000, - 0x010bfffe4, - 0x001000000, - 0x0d052e00a, - 0x0d02b2000, - 0x0d052e00a, - 0x0912a2010, - 0x0913a2010, - 0x0913a2008, - 0x0d02b2001, - 0x098032002, - 0x010bfffe7, - 0x001000000, - 0x0d8206010, - 0x0d8206004, - 0x09002e008, - 0x0d0206008, - 0x092002040, - 0x0d220600c, - 0x040000c3b, - 0x001000000, - 0x0d0006010, - 0x098022040, - 0x010bfffdb, - 0x001000000, - 0x0d252e002, - 0x0d22b2000, - 0x0d252e002, - 0x0932a6010, - 0x0933a6010, - 0x0933a6008, - 0x0d22b2001, - 0x090032002, - 0x0d0206010, - 0x0d0206004, - 0x09002e008, - 0x0d0206008, - 0x09200201c, - 0x0d220600c, - 0x040000c27, - 0x001000000, - 0x0d0006010, - 0x09002201c, - 0x0d0206010, - 0x0d0206004, - 0x0d0006018, - 0x090022024, - 0x0d0206008, - 0x09200201c, - 0x0d220600c, - 0x040000c1c, - 0x001000000, - 0x0d0006010, - 0x09002201c, - 0x0d0206010, - 0x0d0206004, - 0x0d0006018, - 0x090022040, - 0x0d0206008, - 0x09200201c, - 0x0d220600c, - 0x040000c11, - 0x001000000, - 0x0d0006010, - 0x09802201c, - 0x010bfffb1, - 0x001000000, - 0x080a2603e, - 0x014800061, - 0x001000000, - 0x00280004b, - 0x001000000, - 0x080a2603b, - 0x002800026, - 0x001000000, - 0x080a2603c, - 0x002800011, - 0x001000000, - 0x080a2603d, - 0x002800004, - 0x001000000, - 0x010bfff94, - 0x001000000, - 0x0d252e002, - 0x0d22b2000, - 0x0d252e002, - 0x0932a6010, - 0x0933a6010, - 0x0933a6008, - 0x0d22b2001, - 0x098032002, - 0x010bfff97, - 0x001000000, - 0x0d052e002, - 0x0d02b2000, - 0x0d052e002, - 0x0912a2010, - 0x0913a2010, - 0x0913a2008, - 0x0d02b2001, - 0x098032002, - 0x0d252e008, - 0x0d22b2000, - 0x0d252e008, - 0x0932a6010, - 0x0933a6010, - 0x0933a6008, - 0x0d22b2001, - 0x098032002, - 0x010bfff85, - 0x001000000, - 0x0d052e002, - 0x0d02b2000, - 0x0d052e002, - 0x0912a2010, - 0x0913a2010, - 0x0913a2008, - 0x0d02b2001, - 0x098032002, - 0x0d202e00c, - 0x0d22b2000, - 0x0d202e00c, - 0x093326008, - 0x0d22b2001, - 0x0d202e00c, - 0x093326010, - 0x0d22b2002, - 0x0d202e00c, - 0x093326018, - 0x0d22b2003, - 0x098032004, - 0x0d002e010, - 0x0d02b2000, - 0x0d002e010, - 0x091322008, - 0x0d02b2001, - 0x0d002e010, - 0x091322010, - 0x0d02b2002, - 0x0d002e010, - 0x091322018, - 0x0d02b2003, - 0x098032004, - 0x010bfff63, - 0x001000000, - 0x0d052e002, - 0x0d02b2000, - 0x0d052e002, - 0x0912a2010, - 0x0913a2010, - 0x0913a2008, - 0x0d02b2001, - 0x092032002, - 0x0d2206010, - 0x0d2206004, - 0x09202e00c, - 0x0d2206008, - 0x09000201c, - 0x0d020600c, - 0x040000baf, - 0x001000000, - 0x0d2006010, - 0x09802601c, - 0x010bfff4f, - 0x001000000, - 0x080a2603f, - 0x002800014, - 0x001000000, - 0x080a26040, - 0x002800004, - 0x001000000, - 0x010bfff3a, - 0x001000000, - 0x0d252e002, - 0x0d22b2000, - 0x0d252e002, - 0x0932a6010, - 0x0933a6010, - 0x0933a6008, - 0x0d22b2001, - 0x092032002, - 0x098026001, - 0x0d40ae028, - 0x0d42a6000, - 0x010bfff3a, - 0x001000000, - 0x0d052e002, - 0x0d02b2000, - 0x0d052e002, - 0x0912a2010, - 0x0913a2010, - 0x0913a2008, - 0x0d02b2001, - 0x098032002, - 0x0d202e00c, - 0x0d22b2000, - 0x0d202e00c, - 0x093326008, - 0x0d22b2001, - 0x0d202e00c, - 0x093326010, - 0x0d22b2002, - 0x0d202e00c, - 0x093326018, - 0x0d22b2003, - 0x098032004, - 0x0d002e010, - 0x0d02b2000, - 0x0d002e010, - 0x091322008, - 0x0d02b2001, - 0x0d002e010, - 0x091322010, - 0x0d02b2002, - 0x0d002e010, - 0x091322018, - 0x0d02b2003, - 0x098032004, - 0x010bfff18, - 0x001000000, - 0x0d252e002, - 0x0d22b2000, - 0x0d252e002, - 0x0932a6010, - 0x0933a6010, - 0x0933a6008, - 0x0d22b2001, - 0x098032002, - 0x0d002e00c, - 0x0d02b2000, - 0x0d002e00c, - 0x091322008, - 0x0d02b2001, - 0x0d002e00c, - 0x091322010, - 0x0d02b2002, - 0x0d002e00c, - 0x091322018, - 0x0d02b2003, - 0x098032004, - 0x0d202e010, - 0x0d22b2000, - 0x0d202e010, - 0x093326008, - 0x0d22b2001, - 0x0d202e010, - 0x093326010, - 0x0d22b2002, - 0x0d202e010, - 0x093326018, - 0x0d22b2003, - 0x098032004, - 0x010bffef6, - 0x001000000, - 0x080a26049, - 0x0148000f3, - 0x001000000, - 0x0028000e7, - 0x001000000, - 0x080a26045, - 0x014800092, - 0x001000000, - 0x002800073, - 0x001000000, - 0x080a26042, - 0x00280004c, - 0x001000000, - 0x080a26043, - 0x002800027, - 0x001000000, - 0x080a26044, - 0x002800004, - 0x001000000, - 0x010bffed4, - 0x001000000, - 0x0d252e002, - 0x0d22b2000, - 0x0d252e002, - 0x0932a6010, - 0x0933a6010, - 0x0933a6008, - 0x0d22b2001, - 0x098032002, - 0x0d002e008, - 0x0d02b2000, - 0x0d002e008, - 0x0913a2008, - 0x0d02b2001, - 0x0d002e008, - 0x0913a2010, - 0x0d02b2002, - 0x0d002e008, - 0x0913a2018, - 0x0d02b2003, - 0x0c02b2004, - 0x0c02b2005, - 0x0c02b2006, - 0x0c02b2007, - 0x098032008, - 0x0d202e00c, - 0x0d22b2000, - 0x0d202e00c, - 0x0933a6008, - 0x0d22b2001, - 0x098032002, - 0x010bffec1, - 0x001000000, - 0x0d052e002, - 0x0d02b2000, - 0x0d052e002, - 0x0912a2010, - 0x0913a2010, - 0x0913a2008, - 0x0d02b2001, - 0x098032002, - 0x0d202e00c, - 0x0d22b2000, - 0x0d202e00c, - 0x093326008, - 0x0d22b2001, - 0x0d202e00c, - 0x093326010, - 0x0d22b2002, - 0x0d202e00c, - 0x093326018, - 0x0d22b2003, - 0x098032004, - 0x0d002e010, - 0x0d02b2000, - 0x0d002e010, - 0x091322008, - 0x0d02b2001, - 0x0d002e010, - 0x091322010, - 0x0d02b2002, - 0x0d002e010, - 0x091322018, - 0x0d02b2003, - 0x098032004, - 0x010bffe9f, - 0x001000000, - 0x0d252e002, - 0x0d22b2000, - 0x0d252e002, - 0x0932a6010, - 0x0933a6010, - 0x0933a6008, - 0x0d22b2001, - 0x090032002, - 0x0d0206010, - 0x0d0206004, - 0x09002e00c, - 0x0d0206008, - 0x09200201c, - 0x0d220600c, - 0x040000aeb, - 0x001000000, - 0x0da006018, - 0x0d0006010, - 0x09602201c, - 0x0d0036008, - 0x0d02ae000, - 0x0d0036008, - 0x0913a2008, - 0x0d02ae001, - 0x0d0036008, - 0x0913a2010, - 0x0d02ae002, - 0x0d0036008, - 0x0913a2018, - 0x0d02ae003, - 0x09002e004, - 0x098022001, - 0x0d40b6028, - 0x0d42a2000, - 0x010bffe7b, - 0x001000000, - 0x0d252e002, - 0x0d22b2000, - 0x0d252e002, - 0x0932a6010, - 0x0933a6010, - 0x0933a6008, - 0x0d22b2001, - 0x098032002, - 0x0d002e00c, - 0x0d02b2000, - 0x0d002e00c, - 0x0913a2008, - 0x0d02b2001, - 0x092032002, - 0x090026001, - 0x0d0206010, - 0x0d0206004, - 0x0d002e010, - 0x0d0206008, - 0x0d202e00c, - 0x0d220600c, - 0x040000ac0, - 0x001000000, - 0x0d0006018, - 0x0d002200c, - 0x0d2006010, - 0x098024008, - 0x010bffe5e, - 0x001000000, - 0x080a26046, - 0x002800024, - 0x001000000, - 0x080a26047, - 0x002800011, - 0x001000000, - 0x080a26048, - 0x002800004, - 0x001000000, - 0x010bffe46, - 0x001000000, - 0x0d052e002, - 0x0d02b2000, - 0x0d052e002, - 0x0912a2010, - 0x0913a2010, - 0x0913a2008, - 0x0d02b2001, - 0x098032002, - 0x010bffe49, - 0x001000000, - 0x0d052e002, - 0x0d02b2000, - 0x0d052e002, - 0x0912a2010, - 0x0913a2010, - 0x0913a2008, - 0x0d02b2001, - 0x098032002, - 0x0d202e00c, - 0x0d22b2000, - 0x0d202e00c, - 0x0933a6008, - 0x0d22b2001, - 0x098032002, - 0x010bffe39, - 0x001000000, - 0x0d052e002, - 0x0d02b2000, - 0x0d052e002, - 0x0912a2010, - 0x0913a2010, - 0x0913a2008, - 0x0d02b2001, - 0x098032002, - 0x0d202e008, - 0x0d22b2000, - 0x0d202e008, - 0x0933a6008, - 0x0d22b2001, - 0x0d202e008, - 0x0933a6010, - 0x0d22b2002, - 0x0d202e008, - 0x0933a6018, - 0x0d22b2003, - 0x0c02b2004, - 0x0c02b2005, - 0x0c02b2006, - 0x0c02b2007, - 0x098032008, - 0x0d002e00c, - 0x0d02b2000, - 0x0d002e00c, - 0x0913a2008, - 0x0d02b2001, - 0x092032002, - 0x090026001, - 0x0d0206010, - 0x0d0206004, - 0x0d002e010, - 0x0d0206008, - 0x0d202e00c, - 0x0d220600c, - 0x040000a6e, - 0x001000000, - 0x0d0006018, - 0x0d002200c, - 0x0d2006010, - 0x098024008, - 0x010bffe0c, - 0x001000000, - 0x0d052e002, - 0x0d02b2000, - 0x0d052e002, - 0x0912a2010, - 0x0913a2010, - 0x0913a2008, - 0x0d02b2001, - 0x098032002, - 0x010bffe02, - 0x001000000, - 0x080a2604d, - 0x014800041, - 0x001000000, - 0x00280002b, - 0x001000000, - 0x080a2604a, - 0x00280001e, - 0x001000000, - 0x080a2604b, - 0x002800011, - 0x001000000, - 0x080a2604c, - 0x002800004, - 0x001000000, - 0x010bffde5, - 0x001000000, - 0x0d052e002, - 0x0d02b2000, - 0x0d052e002, - 0x0912a2010, - 0x0913a2010, - 0x0913a2008, - 0x0d02b2001, - 0x098032002, - 0x010bffde8, - 0x001000000, - 0x0d252e002, - 0x0d22b2000, - 0x0d252e002, - 0x0932a6010, - 0x0933a6010, - 0x0933a6008, - 0x0d22b2001, - 0x098032002, - 0x010bffdde, - 0x001000000, - 0x0d252e002, - 0x0d22b2000, - 0x0d252e002, - 0x0932a6010, - 0x0933a6010, - 0x0933a6008, - 0x0d22b2001, - 0x098032002, - 0x010bffdd4, - 0x001000000, - 0x0d052e002, - 0x0d02b2000, - 0x0d052e002, - 0x0912a2010, - 0x0913a2010, - 0x0913a2008, - 0x0d02b2001, - 0x092032002, - 0x0d2206010, - 0x0d2206004, - 0x09202e008, - 0x0d2206008, - 0x090002074, - 0x0d020600c, - 0x040000a20, - 0x001000000, - 0x0d2006010, - 0x098026074, - 0x010bffdc0, - 0x001000000, - 0x080a2604e, - 0x002800011, - 0x001000000, - 0x080a2604f, - 0x002800004, - 0x001000000, - 0x010bffdab, - 0x001000000, - 0x0d252e002, - 0x0d22b2000, - 0x0d252e002, - 0x0932a6010, - 0x0933a6010, - 0x0933a6008, - 0x0d22b2001, - 0x098032002, - 0x010bffdae, - 0x001000000, - 0x0d252e002, - 0x0d22b2000, - 0x0d252e002, - 0x0932a6010, - 0x0933a6010, - 0x0933a6008, - 0x0d22b2001, - 0x090032002, - 0x0d0206010, - 0x0d0206004, - 0x09002e008, - 0x0d0206008, - 0x092002074, - 0x0d220600c, - 0x0400009fa, - 0x001000000, - 0x0d0006010, - 0x098022074, - 0x010bffd9a, - 0x001000000, - 0x082206014, - 0x0de206000, - 0x0d200601c, - 0x0d2206010, - 0x0d2206004, - 0x0d2006018, - 0x0d2206008, - 0x09000201c, - 0x0d020600c, - 0x0400009eb, - 0x001000000, - 0x0d2006010, - 0x09202601c, - 0x0d2206010, - 0x0d2206004, - 0x0d2006018, - 0x09202601c, - 0x0d2206008, - 0x09000201c, - 0x0d020600c, - 0x0400009e0, - 0x001000000, - 0x0d2006010, - 0x09202601c, - 0x0d2206010, - 0x0d2206004, - 0x0d2006018, - 0x092026038, - 0x0d2206008, - 0x09000201c, - 0x0d020600c, - 0x0400009d5, - 0x001000000, - 0x0d4006018, - 0x0d2006010, - 0x09602601c, - 0x0d202a054, - 0x0d22ae000, - 0x0d202a054, - 0x093326008, - 0x0d22ae001, - 0x0d202a054, - 0x093326010, - 0x0d22ae002, - 0x0d202a054, - 0x093326018, - 0x0d22ae003, - 0x09602e004, - 0x0d002a058, - 0x0d02ae000, - 0x0d002a058, - 0x091322008, - 0x0d02ae001, - 0x0d002a058, - 0x091322010, - 0x0d02ae002, - 0x0d002a058, - 0x091322018, - 0x0d02ae003, - 0x09602e004, - 0x0d202a05c, - 0x0d22ae000, - 0x0d202a05c, - 0x093326008, - 0x0d22ae001, - 0x0d202a05c, - 0x093326010, - 0x0d22ae002, - 0x0d202a05c, - 0x093326018, - 0x0d22ae003, - 0x09602e004, - 0x0d002a060, - 0x0d02ae000, - 0x0d002a060, - 0x0913a2008, - 0x0d02ae001, - 0x0d002a060, - 0x0913a2010, - 0x0d02ae002, - 0x0d002a060, - 0x0913a2018, - 0x0d02ae003, - 0x09602e004, - 0x0d202a064, - 0x0d22ae000, - 0x0d202a064, - 0x0933a6008, - 0x0d22ae001, - 0x0d202a064, - 0x0933a6010, - 0x0d22ae002, - 0x0d202a064, - 0x0933a6018, - 0x0d22ae003, - 0x09602e004, - 0x0d002a06c, - 0x0d02ae000, - 0x0d002a06c, - 0x0913a2008, - 0x0d02ae001, - 0x0d002a06c, - 0x0913a2010, - 0x0d02ae002, - 0x0d002a06c, - 0x0913a2018, - 0x0d02ae003, - 0x0c02ae004, - 0x0c02ae005, - 0x0c02ae006, - 0x0c02ae007, - 0x09602e008, - 0x0d252a070, - 0x0d22ae000, - 0x0d252a070, - 0x0932a6010, - 0x0933a6010, - 0x0933a6008, - 0x0d22ae001, - 0x09602e002, - 0x0d052a072, - 0x0d02ae000, - 0x0d052a072, - 0x0912a2010, - 0x0913a2010, - 0x0913a2008, - 0x0d02ae001, - 0x09202e002, - 0x0d000601c, - 0x08e224008, - 0x0d0006000, - 0x082006014, - 0x081c22008, - 0x001000000, - 0x082206014, - 0x0de206000, - 0x0d800601c, - 0x0d2006018, - 0x094026001, - 0x0d24a6000, - 0x0d22b2000, - 0x0d00aa000, - 0x0912a2018, - 0x091322018, - 0x0d20aa001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332004, - 0x09602a002, - 0x0d04b2000, - 0x0912a2018, - 0x0913a2018, - 0x080a22041, - 0x01480017e, - 0x001000000, - 0x002800148, - 0x001000000, - 0x080a2203a, - 0x01480007e, - 0x001000000, - 0x002800050, - 0x001000000, - 0x080a22035, - 0x01480002a, - 0x001000000, - 0x002800018, - 0x001000000, - 0x080a22032, - 0x002800015, - 0x001000000, - 0x080a22033, - 0x002800012, - 0x001000000, - 0x080a22034, - 0x00280000f, - 0x001000000, - 0x09000b07c, - 0x0d0206004, - 0x0d24b2000, - 0x0932a6018, - 0x0933a6018, - 0x0d2206008, - 0x07ffffb3b, - 0x001000000, - 0x08e100000, - 0x0d0006000, - 0x082006014, - 0x081c22008, - 0x001000000, - 0x0d0006018, - 0x0d2006020, - 0x090020009, - 0x080a2000b, - 0x012800007, - 0x001000000, - 0x0ce006020, - 0x0d0006000, - 0x082006014, - 0x081c22008, - 0x001000000, - 0x08e100000, - 0x0d0006000, - 0x082006014, - 0x081c22008, - 0x001000000, - 0x080a22037, - 0x002800016, - 0x001000000, - 0x080a22038, - 0x002800007, - 0x001000000, - 0x080a22039, - 0x002bfffe9, - 0x001000000, - 0x010bfffda, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d033200a, - 0x09602e002, - 0x010bfffdb, - 0x001000000, - 0x090032008, - 0x0d0206004, - 0x0d6206010, - 0x0d6206008, - 0x090002040, - 0x0d020600c, - 0x040000908, - 0x001000000, - 0x0d2006010, - 0x096026040, - 0x010bfffcf, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x090032008, - 0x0d0206004, - 0x0d6206010, - 0x0d6206008, - 0x09000201c, - 0x0d020600c, - 0x0400008f2, - 0x001000000, - 0x0d2006010, - 0x09602601c, - 0x0d000601c, - 0x090022024, - 0x0d0206004, - 0x0d6206010, - 0x0d6206008, - 0x09000201c, - 0x0d020600c, - 0x0400008e7, - 0x001000000, - 0x0d2006010, - 0x09602601c, - 0x0d000601c, - 0x090022040, - 0x0d0206004, - 0x0d6206010, - 0x0d6206008, - 0x09000201c, - 0x0d020600c, - 0x0400008dc, - 0x001000000, - 0x0d2006010, - 0x09602601c, - 0x010bfffa3, - 0x001000000, - 0x080a2203e, - 0x01480007b, - 0x001000000, - 0x002800063, - 0x001000000, - 0x080a2203b, - 0x00280002c, - 0x001000000, - 0x080a2203c, - 0x002800013, - 0x001000000, - 0x080a2203d, - 0x002800004, - 0x001000000, - 0x010bfff86, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x010bfff87, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332008, - 0x09602e002, - 0x010bfff71, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d40ae002, - 0x0952aa018, - 0x09532a018, - 0x0952aa010, - 0x09012000a, - 0x0d20ae003, - 0x0932a6018, - 0x093326018, - 0x0932a6018, - 0x090120009, - 0x0d023200c, - 0x09602e004, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d40ae002, - 0x0952aa018, - 0x09532a018, - 0x0952aa010, - 0x09012000a, - 0x0d20ae003, - 0x0932a6018, - 0x093326018, - 0x0932a6018, - 0x090120009, - 0x0d0232010, - 0x09602e004, - 0x010bfff3d, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x09003200c, - 0x0d0206004, - 0x0d6206010, - 0x0d6206008, - 0x09000201c, - 0x0d020600c, - 0x040000860, - 0x001000000, - 0x0d2006010, - 0x09602601c, - 0x010bfff27, - 0x001000000, - 0x080a2203f, - 0x002800016, - 0x001000000, - 0x080a22040, - 0x002800004, - 0x001000000, - 0x010bfff12, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09202e002, - 0x096026001, - 0x0d24a6000, - 0x0d22b2028, - 0x010bfff10, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d40ae002, - 0x0952aa018, - 0x09532a018, - 0x0952aa010, - 0x09012000a, - 0x0d20ae003, - 0x0932a6018, - 0x093326018, - 0x0932a6018, - 0x090120009, - 0x0d023200c, - 0x09602e004, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d40ae002, - 0x0952aa018, - 0x09532a018, - 0x0952aa010, - 0x09012000a, - 0x0d20ae003, - 0x0932a6018, - 0x093326018, - 0x0932a6018, - 0x090120009, - 0x0d0232010, - 0x09602e004, - 0x010bffedc, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d40ae002, - 0x0952aa018, - 0x09532a018, - 0x0952aa010, - 0x09012000a, - 0x0d20ae003, - 0x0932a6018, - 0x093326018, - 0x0932a6018, - 0x090120009, - 0x0d023200c, - 0x09602e004, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d40ae002, - 0x0952aa018, - 0x09532a018, - 0x0952aa010, - 0x09012000a, - 0x0d20ae003, - 0x0932a6018, - 0x093326018, - 0x0932a6018, - 0x090120009, - 0x0d0232010, - 0x09602e004, - 0x010bffea8, - 0x001000000, - 0x080a22049, - 0x014800121, - 0x001000000, - 0x002800113, - 0x001000000, - 0x080a22045, - 0x0148000b5, - 0x001000000, - 0x002800099, - 0x001000000, - 0x080a22042, - 0x002800068, - 0x001000000, - 0x080a22043, - 0x002800031, - 0x001000000, - 0x080a22044, - 0x002800004, - 0x001000000, - 0x010bffe86, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d40ae002, - 0x0952aa018, - 0x09532a018, - 0x0952aa010, - 0x09012000a, - 0x0d20ae003, - 0x0932a6018, - 0x093326018, - 0x0932a6018, - 0x090120009, - 0x0d0232008, - 0x09602e008, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d023200c, - 0x09602e002, - 0x010bffe69, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d40ae002, - 0x0952aa018, - 0x09532a018, - 0x0952aa010, - 0x09012000a, - 0x0d20ae003, - 0x0932a6018, - 0x093326018, - 0x0932a6018, - 0x090120009, - 0x0d023200c, - 0x09602e004, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d40ae002, - 0x0952aa018, - 0x09532a018, - 0x0952aa010, - 0x09012000a, - 0x0d20ae003, - 0x0932a6018, - 0x093326018, - 0x0932a6018, - 0x090120009, - 0x0d0232010, - 0x09602e004, - 0x010bffe35, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x09003200c, - 0x0d0206004, - 0x0d6206010, - 0x0d6206008, - 0x09000201c, - 0x0d020600c, - 0x040000758, - 0x001000000, - 0x0d800601c, - 0x0d2006010, - 0x09602601c, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d40ae002, - 0x0952aa018, - 0x09532a018, - 0x0952aa010, - 0x09012000a, - 0x0d20ae003, - 0x0932a6018, - 0x093326018, - 0x0932a6018, - 0x090120009, - 0x0d0232008, - 0x09202e004, - 0x096026001, - 0x0d24a6000, - 0x0d22b2028, - 0x010bffe07, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d023200c, - 0x09202e002, - 0x096026001, - 0x0d6232010, - 0x0d203200c, - 0x09602c009, - 0x010bffded, - 0x001000000, - 0x080a22046, - 0x00280002c, - 0x001000000, - 0x080a22047, - 0x002800013, - 0x001000000, - 0x080a22048, - 0x002800004, - 0x001000000, - 0x010bffdd5, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x010bffdd6, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d023200c, - 0x09602e002, - 0x010bffdc0, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d40ae002, - 0x0952aa018, - 0x09532a018, - 0x0952aa010, - 0x09012000a, - 0x0d20ae003, - 0x0932a6018, - 0x093326018, - 0x0932a6018, - 0x090120009, - 0x0d0232008, - 0x09602e008, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d023200c, - 0x09202e002, - 0x096026001, - 0x0d6232010, - 0x0d203200c, - 0x09602c009, - 0x010bffd92, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x010bffd86, - 0x001000000, - 0x080a2204d, - 0x014800049, - 0x001000000, - 0x002800031, - 0x001000000, - 0x080a2204a, - 0x002800022, - 0x001000000, - 0x080a2204b, - 0x002800013, - 0x001000000, - 0x080a2204c, - 0x002800004, - 0x001000000, - 0x010bffd69, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x010bffd6a, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x010bffd5e, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x010bffd52, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x090032008, - 0x0d0206004, - 0x0d6206010, - 0x0d6206008, - 0x090002074, - 0x0d020600c, - 0x040000675, - 0x001000000, - 0x0d2006010, - 0x096026074, - 0x010bffd3c, - 0x001000000, - 0x080a2204e, - 0x002800013, - 0x001000000, - 0x080a2204f, - 0x002800004, - 0x001000000, - 0x010bffd27, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x010bffd28, - 0x001000000, - 0x0d00ae000, - 0x0912a2018, - 0x091322018, - 0x0d20ae001, - 0x0932a6018, - 0x093326018, - 0x0932a6008, - 0x090120009, - 0x0d0332002, - 0x09602e002, - 0x090032008, - 0x0d0206004, - 0x0d6206010, - 0x0d6206008, - 0x090002074, - 0x0d020600c, - 0x04000064b, - 0x001000000, - 0x0d2006010, - 0x096026074, - 0x010bffd12, - 0x001000000, - 0x082206014, - 0x0de206000, - 0x0d6006018, - 0x0d200601c, - 0x0d2206004, - 0x0d6206010, - 0x0d6206008, - 0x09200201c, - 0x0d220600c, - 0x04000063c, - 0x001000000, - 0x0d0006010, - 0x09602201c, - 0x0d200601c, - 0x09202601c, - 0x0d2206004, - 0x0d6206010, - 0x0d6206008, - 0x09200201c, - 0x0d220600c, - 0x040000631, - 0x001000000, - 0x0d0006010, - 0x09602201c, - 0x0d200601c, - 0x092026038, - 0x0d2206004, - 0x0d6206010, - 0x0d6206008, - 0x09200201c, - 0x0d220600c, - 0x040000626, - 0x001000000, - 0x0d600601c, - 0x0d0006010, - 0x09802201c, - 0x0d20b2000, - 0x0932a6018, - 0x093326018, - 0x0d00b2001, - 0x0912a2018, - 0x091322018, - 0x0912a2008, - 0x092124008, - 0x0d40b2002, - 0x0952aa018, - 0x09532a018, - 0x0952aa010, - 0x09212400a, - 0x0d00b2003, - 0x0912a2018, - 0x091322018, - 0x0912a2018, - 0x092124008, - 0x0d222e054, - 0x098032004, - 0x0d20b2000, - 0x0932a6018, - 0x093326018, - 0x0d00b2001, - 0x0912a2018, - 0x091322018, - 0x0912a2008, - 0x092124008, - 0x0d40b2002, - 0x0952aa018, - 0x09532a018, - 0x0952aa010, - 0x09212400a, - 0x0d00b2003, - 0x0912a2018, - 0x091322018, - 0x0912a2018, - 0x092124008, - 0x0d222e058, - 0x098032004, - 0x0d20b2000, - 0x0932a6018, - 0x093326018, - 0x0d00b2001, - 0x0912a2018, - 0x091322018, - 0x0912a2008, - 0x092124008, - 0x0d40b2002, - 0x0952aa018, - 0x09532a018, - 0x0952aa010, - 0x09212400a, - 0x0d00b2003, - 0x0912a2018, - 0x091322018, - 0x0912a2018, - 0x092124008, - 0x0d222e05c, - 0x098032004, - 0x0d20b2000, - 0x0932a6018, - 0x093326018, - 0x0d00b2001, - 0x0912a2018, - 0x091322018, - 0x0912a2008, - 0x092124008, - 0x0d40b2002, - 0x0952aa018, - 0x09532a018, - 0x0952aa010, - 0x09212400a, - 0x0d00b2003, - 0x0912a2018, - 0x091322018, - 0x0912a2018, - 0x092124008, - 0x0d222e060, - 0x098032004, - 0x0d20b2000, - 0x0932a6018, - 0x093326018, - 0x0d00b2001, - 0x0912a2018, - 0x091322018, - 0x0912a2008, - 0x092124008, - 0x0d40b2002, - 0x0952aa018, - 0x09532a018, - 0x0952aa010, - 0x09212400a, - 0x0d00b2003, - 0x0912a2018, - 0x091322018, - 0x0912a2018, - 0x092124008, - 0x0d222e064, - 0x098032004, - 0x0d20b2000, - 0x0932a6018, - 0x093326018, - 0x0d00b2001, - 0x0912a2018, - 0x091322018, - 0x0912a2008, - 0x092124008, - 0x0d40b2002, - 0x0952aa018, - 0x09532a018, - 0x0952aa010, - 0x09212400a, - 0x0d00b2003, - 0x0912a2018, - 0x091322018, - 0x0912a2018, - 0x092124008, - 0x0d222e06c, - 0x098032008, - 0x0d20b2000, - 0x0932a6018, - 0x093326018, - 0x0d00b2001, - 0x0912a2018, - 0x091322018, - 0x0912a2008, - 0x092124008, - 0x0d232e070, - 0x098032002, - 0x0d20b2000, - 0x0932a6018, - 0x093326018, - 0x0d00b2001, - 0x0912a2018, - 0x091322018, - 0x0912a2008, - 0x092124008, - 0x0d232e072, - 0x08e032002, - 0x0d0006018, - 0x08e21c008, - 0x0d0006000, - 0x082006014, - 0x081c22008, - 0x001000000, - 0x082206004, - 0x0da00b056, - 0x09800b666, - 0x0d048600b, - 0x0912a2018, - 0x0913a2018, - 0x0900a207f, - 0x0972a2018, - 0x0973ae018, - 0x080a3601e, - 0x006800006, - 0x001000000, - 0x08e002001, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x0932ae018, - 0x0933a6018, - 0x0932a6018, - 0x0933a6018, - 0x09202400c, - 0x090036001, - 0x0d020b056, - 0x0da2a6000, - 0x0912ae018, - 0x0913a2018, - 0x0912a2018, - 0x0913a2018, - 0x09002000c, - 0x0d04a2000, - 0x0912a2018, - 0x0913a2018, - 0x0912a2002, - 0x09200b116, - 0x090020009, - 0x0d400600c, - 0x0d4222000, - 0x08e100000, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x082206034, - 0x0de206000, - 0x0e2006044, - 0x0d8006040, - 0x0d000b022, - 0x0d020601c, - 0x0d200b01e, - 0x0d2206018, - 0x0e8006038, - 0x0e820b022, - 0x0d200603c, - 0x092027fff, - 0x0d220b01e, - 0x09610000c, - 0x098032001, - 0x0d64ae000, - 0x0972ae018, - 0x0973ae018, - 0x080a2e025, - 0x00280002e, - 0x001000000, - 0x080a2c000, - 0x012800011, - 0x001000000, - 0x0d000b01e, - 0x080a50008, - 0x00a800003, - 0x001000000, - 0x0a8053fff, - 0x0c02d2000, - 0x0d000601c, - 0x0d020b022, - 0x0d2006018, - 0x0d220b01e, - 0x08e100014, - 0x0d0006000, - 0x082006034, - 0x081c22008, - 0x001000000, - 0x0d200b01e, - 0x080a50009, - 0x01a800006, - 0x001000000, - 0x090100014, - 0x0a8052001, - 0x0e820b022, - 0x0d62a2000, - 0x0d000b09e, - 0x090022001, - 0x0d020b09e, - 0x080a2e00a, - 0x012800005, - 0x001000000, - 0x0c020b09e, - 0x010bfffd7, - 0x001000000, - 0x080a2e009, - 0x012bfffd4, - 0x001000000, - 0x0d200b09e, - 0x092026007, - 0x0920a7ff8, - 0x0d220b09e, - 0x010bfffce, - 0x001000000, - 0x09a003c18, - 0x0a6003c18, - 0x0a4100000, - 0x09610000c, - 0x098032001, - 0x0d8206040, - 0x0d64ae000, - 0x0972ae018, - 0x0973ae018, - 0x080a2c000, - 0x012800005, - 0x001000000, - 0x098033fff, - 0x010bfffbf, - 0x001000000, - 0x080a2e02e, - 0x012800009, - 0x001000000, - 0x080a37c18, - 0x012800003, - 0x001000000, - 0x09a100000, - 0x0a6100000, - 0x010bfffec, - 0x001000000, - 0x080a2e031, - 0x006800022, - 0x001000000, - 0x080a2e039, - 0x01480001f, - 0x001000000, - 0x0a0100000, - 0x080a2e030, - 0x006800005, - 0x001000000, - 0x080a2e039, - 0x00480000b, - 0x001000000, - 0x080a37c18, - 0x012800005, - 0x001000000, - 0x09a100010, - 0x010bfffdf, - 0x001000000, - 0x0a6100010, - 0x010bfffdc, - 0x001000000, - 0x0932c2001, - 0x0912a6002, - 0x092024008, - 0x09202400b, - 0x0a0027fd0, - 0x09610000c, - 0x098032001, - 0x0d8206040, - 0x0d64ae000, - 0x0972ae018, - 0x0973ae018, - 0x010bfffe6, - 0x001000000, - 0x080a2e030, - 0x012800007, - 0x001000000, - 0x080a37c18, - 0x002800004, - 0x001000000, - 0x010bfffdd, - 0x001000000, - 0x080a2e02a, - 0x01280000d, - 0x001000000, - 0x0d6046000, - 0x0a2046004, - 0x080a37c18, - 0x012800005, - 0x001000000, - 0x09a10000b, - 0x010bfffb6, - 0x001000000, - 0x0a610000b, - 0x010bfffb3, - 0x001000000, - 0x0960ae07f, - 0x0e2206044, - 0x0e2206004, - 0x0da206030, - 0x0da206008, - 0x0e620602c, - 0x0e620600c, - 0x0e4206028, - 0x0e4206010, - 0x0d6206014, - 0x09200b666, - 0x09202400b, - 0x0d24a6000, - 0x0932a6018, - 0x0933a6018, - 0x0932a6002, - 0x09000b116, - 0x092024008, - 0x0d2026000, - 0x09fc26000, - 0x001000000, - 0x0e800b022, - 0x0e600602c, - 0x0e2006044, - 0x0da006030, - 0x0d8006040, - 0x080a1c000, - 0x016800007, - 0x001000000, - 0x092200007, - 0x0d4006028, - 0x0a4128009, - 0x010bfff91, - 0x001000000, - 0x0a2044007, - 0x010bfff57, - 0x001000000, - 0x082206010, - 0x0de206000, - 0x0d4006018, - 0x080a2bc18, - 0x002800007, - 0x001000000, - 0x0d0006020, - 0x0900a2002, - 0x080a20000, - 0x01280000d, - 0x001000000, - 0x0d0006014, - 0x0d0206004, - 0x0d4206008, - 0x0d000601c, - 0x0d020600c, - 0x04000012c, - 0x001000000, - 0x0d0006000, - 0x082006010, - 0x081c22008, - 0x001000000, - 0x09420000a, - 0x010bffff4, - 0x001000000, - 0x082206058, - 0x0de206000, - 0x0e600606c, - 0x0e2006018, - 0x0e0006068, - 0x0d800605c, - 0x0d6006014, - 0x0c0206020, - 0x080a4e06f, - 0x01480010f, - 0x001000000, - 0x00280010a, - 0x001000000, - 0x080a4e058, - 0x002800102, - 0x001000000, - 0x080a4e064, - 0x0028000fc, - 0x001000000, - 0x0c0206030, - 0x0920c2078, - 0x080a26028, - 0x0148000dc, - 0x001000000, - 0x0028000d4, - 0x001000000, - 0x080a26008, - 0x0028000cb, - 0x001000000, - 0x080a26010, - 0x0028000bb, - 0x001000000, - 0x080a26020, - 0x0028000b2, - 0x001000000, - 0x0e2032000, - 0x0e2206018, - 0x090002004, - 0x0d0206028, - 0x0920c2020, - 0x080a24000, - 0x012800005, - 0x001000000, - 0x080a44000, - 0x0068000a1, - 0x001000000, - 0x0c0286055, - 0x09200201c, - 0x0d2206034, - 0x0e0206068, - 0x0920c2040, - 0x080a24000, - 0x00280008d, - 0x001000000, - 0x0d6206004, - 0x0e6206024, - 0x0e6206008, - 0x0400005b9, - 0x001000000, - 0x0e6006024, - 0x0a4006038, - 0x0e0006068, - 0x0d8006034, - 0x096100007, - 0x09602e030, - 0x080a2e039, - 0x004800003, - 0x001000000, - 0x09602e027, - 0x09204800c, - 0x0d62a6000, - 0x080a32002, - 0x01680003f, - 0x001000000, - 0x0920c2004, - 0x080a24000, - 0x00280000e, - 0x001000000, - 0x09004800c, - 0x0d04a2000, - 0x080a22030, - 0x002800009, - 0x001000000, - 0x080a4e008, - 0x01280001c, - 0x001000000, - 0x098033fff, - 0x09004800c, - 0x094002030, - 0x0d42a2000, - 0x0d0006030, - 0x080a20000, - 0x002800006, - 0x001000000, - 0x098033fff, - 0x09204800c, - 0x09400202d, - 0x0d42a6000, - 0x09004800c, - 0x0d0206004, - 0x0d2006060, - 0x0d2206008, - 0x090003c18, - 0x0d020600c, - 0x0e0206010, - 0x07fffff7e, - 0x001000000, - 0x0ce006028, - 0x0d0006000, - 0x082006058, - 0x081c22008, - 0x001000000, - 0x080a4e010, - 0x012bfffe9, - 0x001000000, - 0x0d2006020, - 0x080a24000, - 0x00280000c, - 0x001000000, - 0x096033fff, - 0x09004800b, - 0x094002058, - 0x0d42a2000, - 0x09802ffff, - 0x09004800c, - 0x094002030, - 0x0d42a2000, - 0x010bfffdb, - 0x001000000, - 0x096033fff, - 0x09004800b, - 0x094002078, - 0x0d42a2000, - 0x010bffff6, - 0x001000000, - 0x0920c2040, - 0x080a24000, - 0x002800029, - 0x001000000, - 0x0d2006014, - 0x0d2206004, - 0x0e6206008, - 0x040000531, - 0x001000000, - 0x0e6006024, - 0x0a4006038, - 0x0e2006018, - 0x0e0006068, - 0x0da006064, - 0x0d8006034, - 0x096100007, - 0x0ce206014, - 0x080a37c18, - 0x002800007, - 0x001000000, - 0x09200201e, - 0x09222400d, - 0x080a30009, - 0x016800010, - 0x001000000, - 0x0900c2040, - 0x080a20000, - 0x002800007, - 0x001000000, - 0x080a2c000, - 0x014800004, - 0x001000000, - 0x010bfffa3, - 0x001000000, - 0x080a44000, - 0x014800004, - 0x001000000, - 0x010bfff9e, - 0x001000000, - 0x090033fff, - 0x0d0206034, - 0x010bfff81, - 0x001000000, - 0x0d0006018, - 0x0d0206004, - 0x0e6206008, - 0x0400004bc, - 0x001000000, - 0x0e6006024, - 0x0a4006038, - 0x0e0006068, - 0x0da006064, - 0x0d6006014, - 0x0d8006034, - 0x0a2100007, - 0x0ce206018, - 0x010bfffd9, - 0x001000000, - 0x0e2206004, - 0x0e6206024, - 0x0e6206008, - 0x0400004d4, - 0x001000000, - 0x0e6006024, - 0x0a4006038, - 0x0e0006068, - 0x0d8006034, - 0x096100007, - 0x010bfff75, - 0x001000000, - 0x0a2200011, - 0x0e2206018, - 0x090002001, - 0x0d0206030, - 0x010bfff5d, - 0x001000000, - 0x0e2032000, - 0x0e2206018, - 0x090002004, - 0x0d0206028, - 0x010bfff50, - 0x001000000, - 0x0d2032000, - 0x0992a6010, - 0x0993b2010, - 0x0912b2010, - 0x0913a2010, - 0x0912a2010, - 0x0913a2010, - 0x0a2100008, - 0x0d0206018, - 0x092002004, - 0x0d2206028, - 0x010bfff43, - 0x001000000, - 0x0e2032000, - 0x0e2206018, - 0x090002004, - 0x0d0206028, - 0x010bfff3d, - 0x001000000, - 0x0e2032000, - 0x0e2206018, - 0x090002004, - 0x0d0206028, - 0x010bfff37, - 0x001000000, - 0x080a26030, - 0x00280000d, - 0x001000000, - 0x080a26048, - 0x002800004, - 0x001000000, - 0x010bfff2b, - 0x001000000, - 0x0d6032000, - 0x0d6206014, - 0x090002004, - 0x0d0206028, - 0x010bfff29, - 0x001000000, - 0x0d0032000, - 0x0992a2010, - 0x0993b2010, - 0x0932b2010, - 0x093326010, - 0x0932a6010, - 0x093326010, - 0x0a2100009, - 0x0d2206018, - 0x090002004, - 0x0d0206028, - 0x010bfff1c, - 0x001000000, - 0x0a600200a, - 0x010bfff05, - 0x001000000, - 0x092002001, - 0x0d2206020, - 0x0a6002010, - 0x010bfff00, - 0x001000000, - 0x0a6002008, - 0x010bffefd, - 0x001000000, - 0x080a4e075, - 0x002800007, - 0x001000000, - 0x080a4e078, - 0x002bffff6, - 0x001000000, - 0x010bffef5, - 0x001000000, - 0x0a0142020, - 0x010bfffec, - 0x001000000, - 0x082206010, - 0x0de206000, - 0x0d2006014, - 0x0d2206004, - 0x07ffff65c, - 0x001000000, - 0x0e8006014, - 0x0e4006018, - 0x0e200b01e, - 0x0e000b09e, - 0x0da00601c, - 0x0d800b022, - 0x096100007, - 0x080a4bc18, - 0x002800005, - 0x001000000, - 0x080a48000, - 0x016800049, - 0x001000000, - 0x0a6100014, - 0x0a8052001, - 0x0e64ce000, - 0x0a72ce018, - 0x0a73ce018, - 0x080a4c000, - 0x002800026, - 0x001000000, - 0x080a37c18, - 0x002800007, - 0x001000000, - 0x080a34000, - 0x014800004, - 0x001000000, - 0x010bffff2, - 0x001000000, - 0x080a30011, - 0x01a800006, - 0x001000000, - 0x09210000c, - 0x098032001, - 0x0d820b022, - 0x0e62a6000, - 0x0a0042001, - 0x0e020b09e, - 0x080a4e00a, - 0x01280000a, - 0x001000000, - 0x0a0100000, - 0x0c020b09e, - 0x080a37c18, - 0x002bfffe1, - 0x001000000, - 0x09a037fff, - 0x010bfffde, - 0x001000000, - 0x080a4e009, - 0x012bffff9, - 0x001000000, - 0x092042007, - 0x0a00a7ff8, - 0x0e020b09e, - 0x010bffff4, - 0x001000000, - 0x080a4bc18, - 0x002800005, - 0x001000000, - 0x080a48000, - 0x006800006, - 0x001000000, - 0x0d0006000, - 0x082006010, - 0x081c22008, - 0x001000000, - 0x09a200012, - 0x080a2c00d, - 0x016bffffa, - 0x001000000, - 0x080a30011, - 0x01a800007, - 0x001000000, - 0x09210000c, - 0x098032001, - 0x0d820b022, - 0x094002020, - 0x0d42a6000, - 0x0a0042001, - 0x0e020b09e, - 0x09602e001, - 0x010bffff2, - 0x001000000, - 0x080a2c012, - 0x016bfffb8, - 0x001000000, - 0x080a30011, - 0x01a800007, - 0x001000000, - 0x09210000c, - 0x098032001, - 0x0d820b022, - 0x094002020, - 0x0d42a6000, - 0x0a0042001, - 0x0e020b09e, - 0x09602e001, - 0x010bffff2, - 0x001000000, - 0x082206014, - 0x0de206000, - 0x09000202a, - 0x0d0286010, - 0x0d2006028, - 0x0d2286011, - 0x09000202a, - 0x0d0286012, - 0x0c0286013, - 0x092006010, - 0x0d2206004, - 0x0c0206008, - 0x090003c18, - 0x0d020600c, - 0x07fffff88, - 0x001000000, - 0x08e100000, - 0x0d0006000, - 0x082006014, - 0x081c22008, - 0x001000000, - 0x082206014, - 0x0de206000, - 0x0d2006018, - 0x0d2026000, - 0x0d2286010, - 0x0c0286011, - 0x090006010, - 0x0d0206004, - 0x0d200601c, - 0x0d2206008, - 0x090003c18, - 0x0d020600c, - 0x07fffff75, - 0x001000000, - 0x08e002004, - 0x0d0006000, - 0x082006014, - 0x081c22008, - 0x001000000, - 0x082206014, - 0x0de206000, - 0x0d2006018, - 0x0d2026000, - 0x0d2206004, - 0x0d000601c, - 0x0d0206008, - 0x0d2006020, - 0x0d220600c, - 0x0d0006024, - 0x0d0206010, - 0x07ffffe27, - 0x001000000, - 0x08e002004, - 0x0d0006000, - 0x082006014, - 0x081c22008, - 0x001000000, - 0x082206004, - 0x0d600b022, - 0x0d000b01e, - 0x080a2c008, - 0x01a800006, - 0x001000000, - 0x09002e001, - 0x0d020b022, - 0x094002025, - 0x0d42ae000, - 0x08e100000, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x082206004, - 0x0d2006018, - 0x080a26068, - 0x014800021, - 0x001000000, - 0x00280001b, - 0x001000000, - 0x080a26023, - 0x002800014, - 0x001000000, - 0x080a2602b, - 0x00280000d, - 0x001000000, - 0x080a2602d, - 0x002800006, - 0x001000000, - 0x08e100000, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x08e003ffe, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x08e003fff, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x08e003ffc, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x08e003ff0, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x080a2606c, - 0x00280000b, - 0x001000000, - 0x080a26075, - 0x002800004, - 0x001000000, - 0x010bfffe6, - 0x001000000, - 0x08e003fe0, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x0d0006014, - 0x0900a2008, - 0x080a20000, - 0x002800006, - 0x001000000, - 0x08e003fc0, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x08e003ff8, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x0822060a0, - 0x0de206000, - 0x0ac006078, - 0x0ea0060b4, - 0x0e80060ac, - 0x0a2006050, - 0x0d00060a4, - 0x0c1022000, - 0x0c3022004, - 0x0c1206048, - 0x0c320604c, - 0x0c0206024, - 0x0c5006048, - 0x0c700604c, - 0x081a88a58, - 0x001000000, - 0x01780000a, - 0x001000000, - 0x0c1006048, - 0x0c300604c, - 0x085a608c0, - 0x0c5206048, - 0x0c720604c, - 0x0d0006024, - 0x090022001, - 0x0d0206024, - 0x0c0206014, - 0x080a56041, - 0x006800005, - 0x001000000, - 0x080a5605a, - 0x004800221, - 0x001000000, - 0x0c0206034, - 0x0c1006048, - 0x0c300604c, - 0x081a80a58, - 0x001000000, - 0x01380005e, - 0x001000000, - 0x0c1006048, - 0x0c300604c, - 0x0c1206004, - 0x0c3206008, - 0x090006034, - 0x0d020600c, - 0x04000045a, - 0x001000000, - 0x0d0006034, - 0x0d020b026, - 0x0c500b026, - 0x085a09902, - 0x0c900b08e, - 0x0cb00b092, - 0x081a08944, - 0x085a09a40, - 0x0c520b026, - 0x0d000b026, - 0x0d0206034, - 0x0d0006034, - 0x0993a2001, - 0x0d8206030, - 0x09020000c, - 0x0d0206004, - 0x0400002b6, - 0x001000000, - 0x0c5006048, - 0x0c700604c, - 0x081a08940, - 0x0c1206038, - 0x0c320603c, - 0x0d0006030, - 0x0d2006034, - 0x090220009, - 0x0d0206004, - 0x0400002ab, - 0x001000000, - 0x0ac006078, - 0x0ea0060b4, - 0x0e80060ac, - 0x0a2006050, - 0x085a00020, - 0x087a00021, - 0x0c1006038, - 0x0c300603c, - 0x08da00942, - 0x081a98a5c, - 0x001000000, - 0x017800014, - 0x001000000, - 0x0d0006034, - 0x090023fff, - 0x0d0206034, - 0x0d0006030, - 0x0d2006034, - 0x090220009, - 0x0d0206004, - 0x040000295, - 0x001000000, - 0x0ac006078, - 0x0ea0060b4, - 0x0e80060ac, - 0x0a2006050, - 0x0c5006038, - 0x0c700603c, - 0x08da08940, - 0x010bfffec, - 0x001000000, - 0x0c100b096, - 0x0c300b09a, - 0x081a98a40, - 0x001000000, - 0x009800014, - 0x001000000, - 0x0d0006034, - 0x090022001, - 0x0d0206034, - 0x0d0006030, - 0x0d2006034, - 0x090220009, - 0x0d0206004, - 0x04000027d, - 0x001000000, - 0x0ac006078, - 0x0ea0060b4, - 0x0e80060ac, - 0x0a2006050, - 0x0c5006038, - 0x0c700603c, - 0x08da08940, - 0x010bfffea, - 0x001000000, - 0x080a53c18, - 0x012800003, - 0x001000000, - 0x0a8002006, - 0x080a56067, - 0x012800005, - 0x001000000, - 0x080a50000, - 0x0148001b1, - 0x001000000, - 0x080a5201e, - 0x004800003, - 0x001000000, - 0x0a800201e, - 0x0e82060ac, - 0x098052002, - 0x080a56066, - 0x012800008, - 0x001000000, - 0x0d2006034, - 0x098030009, - 0x080a30000, - 0x014800003, - 0x001000000, - 0x098002001, - 0x0d8206028, - 0x080a32020, - 0x00680000b, - 0x001000000, - 0x080a56065, - 0x012800004, - 0x001000000, - 0x0a8003fff, - 0x0e82060ac, - 0x0aa002065, - 0x0ea2060b4, - 0x010bfff79, - 0x001000000, - 0x0cd006048, - 0x0cf00604c, - 0x0cd206040, - 0x0cf206044, - 0x0d0006034, - 0x080a20000, - 0x016800012, - 0x001000000, - 0x090003fff, - 0x0d2006034, - 0x090220009, - 0x0d0206004, - 0x040000240, - 0x001000000, - 0x0ac006078, - 0x0ea0060b4, - 0x0e80060ac, - 0x0a2006050, - 0x0d8006028, - 0x0c5006040, - 0x0c7006044, - 0x08da08940, - 0x0cd206040, - 0x0cf206044, - 0x09a100000, - 0x080a3400c, - 0x01680004a, - 0x001000000, - 0x0d2006034, - 0x0da20602c, - 0x09222400d, - 0x080a24000, - 0x006800028, - 0x001000000, - 0x0d2206004, - 0x040000229, - 0x001000000, - 0x0c5006040, - 0x0c7006044, - 0x0c1206038, - 0x0c320603c, - 0x085a089c0, - 0x0c5206004, - 0x0c7206008, - 0x040000170, - 0x001000000, - 0x0ac006078, - 0x0ea0060b4, - 0x0e000602c, - 0x0e80060ac, - 0x0a2006050, - 0x0d8006028, - 0x085a09a40, - 0x0c520b026, - 0x0da00b026, - 0x0da20b026, - 0x0c500b026, - 0x085a09902, - 0x0c9006038, - 0x0cb00603c, - 0x081a08944, - 0x0c5006040, - 0x0c7006044, - 0x08da088c0, - 0x0cd206040, - 0x0cf206044, - 0x090040016, - 0x094036030, - 0x0d42a2001, - 0x09a042001, - 0x010bfffd3, - 0x001000000, - 0x0c500b096, - 0x0c700b09a, - 0x08da18942, - 0x0cd206040, - 0x0cf206044, - 0x0cd206004, - 0x0cf206008, - 0x04000014d, - 0x001000000, - 0x0ac006078, - 0x0ea0060b4, - 0x0e000602c, - 0x0e80060ac, - 0x0a2006050, - 0x0d8006028, - 0x085a09a40, - 0x0c520b026, - 0x0da00b026, - 0x0da20b026, - 0x0c500b026, - 0x085a09902, - 0x0c9006040, - 0x0cb006044, - 0x08da108c2, - 0x0cd206040, - 0x0cf206044, - 0x010bfffe0, - 0x001000000, - 0x09a002005, - 0x098033fff, - 0x080a30000, - 0x006800018, - 0x001000000, - 0x090030016, - 0x0d24a2001, - 0x0932a6018, - 0x0933a6018, - 0x09402400d, - 0x0d42a2001, - 0x09a100000, - 0x090030016, - 0x0d04a2001, - 0x080a22039, - 0x004800009, - 0x001000000, - 0x092030016, - 0x0d44a6001, - 0x0952aa018, - 0x0953aa018, - 0x09422a00a, - 0x0d42a6001, - 0x09a036001, - 0x098033fff, - 0x010bfffe9, - 0x001000000, - 0x0a6002001, - 0x080a34000, - 0x002800008, - 0x001000000, - 0x090002031, - 0x0d0286078, - 0x0d2006034, - 0x092026001, - 0x0d2206034, - 0x0a6100000, - 0x098100000, - 0x0d0006024, - 0x080a20000, - 0x0028000fb, - 0x001000000, - 0x09010000c, - 0x098032001, - 0x092044008, - 0x09000202d, - 0x0d02a6000, - 0x09a100000, - 0x0a0052001, - 0x0a4100014, - 0x080a56067, - 0x01280000a, - 0x001000000, - 0x0d2006034, - 0x080a27ffb, - 0x006800006, - 0x001000000, - 0x0d0006034, - 0x080a20014, - 0x0048000dc, - 0x001000000, - 0x080a56066, - 0x012800012, - 0x001000000, - 0x0d0006034, - 0x09a200008, - 0x080a34000, - 0x016800003, - 0x001000000, - 0x09a100000, - 0x080a34014, - 0x004800003, - 0x001000000, - 0x09a100010, - 0x0d0006034, - 0x0a0040008, - 0x080a40000, - 0x016800003, - 0x001000000, - 0x0a0100000, - 0x080a34000, - 0x004800013, - 0x001000000, - 0x092034010, - 0x080a24012, - 0x012800007, - 0x001000000, - 0x09210000c, - 0x098032001, - 0x090044009, - 0x09200202e, - 0x0d22a2000, - 0x09210000c, - 0x098032001, - 0x090044009, - 0x092002030, - 0x0d22a2000, - 0x09a037fff, - 0x010bfffee, - 0x001000000, - 0x080a40000, - 0x004800016, - 0x001000000, - 0x090034010, - 0x080a20012, - 0x012800007, - 0x001000000, - 0x09210000c, - 0x098032001, - 0x090044009, - 0x09200202e, - 0x0d22a2000, - 0x09210000c, - 0x098032001, - 0x090044009, - 0x094100013, - 0x0a604e001, - 0x09205800a, - 0x0d24a6000, - 0x0d22a2000, - 0x0a0043fff, - 0x010bfffeb, - 0x001000000, - 0x0d20060b0, - 0x0920a6004, - 0x080a24000, - 0x002800072, - 0x001000000, - 0x090034010, - 0x080a20012, - 0x012800007, - 0x001000000, - 0x09210000c, - 0x098032001, - 0x090044009, - 0x09200202e, - 0x0d22a2000, - 0x080a56065, - 0x002800015, - 0x001000000, - 0x080a56067, - 0x002800012, - 0x001000000, - 0x09204400c, - 0x0c02a6000, - 0x0e2206004, - 0x0d00060a8, - 0x0d0206008, - 0x092003c18, - 0x0d220600c, - 0x0d00060b0, - 0x0d0206010, - 0x07ffffc2f, - 0x001000000, - 0x08e002008, - 0x0d0006000, - 0x0820060a0, - 0x081c22008, - 0x001000000, - 0x0d0006014, - 0x080a20000, - 0x002800049, - 0x001000000, - 0x09a032001, - 0x09204400c, - 0x090002045, - 0x0d02a6000, - 0x0d8006034, - 0x080a30000, - 0x01680003a, - 0x001000000, - 0x094036001, - 0x0d4206030, - 0x09204400d, - 0x09000202d, - 0x0d02a6000, - 0x09820000c, - 0x080a32064, - 0x006800016, - 0x001000000, - 0x0d8206020, - 0x0d8206004, - 0x094002064, - 0x0d4206008, - 0x0400001e7, - 0x001000000, - 0x09201e030, - 0x090006050, - 0x0d4006030, - 0x09602a001, - 0x0d6206030, - 0x09002000a, - 0x0d22a2000, - 0x0d2006020, - 0x0d2206004, - 0x094002064, - 0x0d4206008, - 0x04000020d, - 0x001000000, - 0x098100007, - 0x0d8206020, - 0x0d8206004, - 0x09400200a, - 0x0d4206008, - 0x0400001d3, - 0x001000000, - 0x09201e030, - 0x090006050, - 0x0d4006030, - 0x09602a001, - 0x0d6206030, - 0x09002000a, - 0x0d22a2000, - 0x0d2006020, - 0x0d2206004, - 0x09400200a, - 0x0d4206008, - 0x0400001f9, - 0x001000000, - 0x0a2006050, - 0x09001e030, - 0x0d4006030, - 0x09802a001, - 0x09204400a, - 0x0d02a6000, - 0x010bfffae, - 0x001000000, - 0x094036001, - 0x0d4206030, - 0x09004400d, - 0x09200202b, - 0x0d22a2000, - 0x010bfffc9, - 0x001000000, - 0x09a032001, - 0x09204400c, - 0x090002065, - 0x0d02a6000, - 0x010bfffb9, - 0x001000000, - 0x080a56067, - 0x002800007, - 0x001000000, - 0x080a56068, - 0x002800004, - 0x001000000, - 0x010bfff93, - 0x001000000, - 0x09a033fff, - 0x080a34000, - 0x006800007, - 0x001000000, - 0x09204400d, - 0x0d24a6000, - 0x080a26030, - 0x002800015, - 0x001000000, - 0x0a010000d, - 0x080a40000, - 0x006bfff86, - 0x001000000, - 0x092044010, - 0x0d24a6000, - 0x080a2602e, - 0x012800009, - 0x001000000, - 0x09810000d, - 0x080a4000d, - 0x002bfff7d, - 0x001000000, - 0x098032001, - 0x010bfff7a, - 0x001000000, - 0x0a0043fff, - 0x010bffff0, - 0x001000000, - 0x09a037fff, - 0x010bfffe4, - 0x001000000, - 0x090003fff, - 0x0d2006034, - 0x09a220009, - 0x080a34000, - 0x016800003, - 0x001000000, - 0x09a100000, - 0x0d2006034, - 0x0a4250009, - 0x0aa002068, - 0x010bfff1c, - 0x001000000, - 0x0d20060b0, - 0x0920a6001, - 0x080a24000, - 0x002bfff09, - 0x001000000, - 0x09210000c, - 0x098032001, - 0x090044009, - 0x09200202b, - 0x0d22a2000, - 0x010bfff02, - 0x001000000, - 0x0a8053fff, - 0x010bffe50, - 0x001000000, - 0x092002001, - 0x0d2206014, - 0x0aa056020, - 0x0ea2060b4, - 0x010bffddd, - 0x001000000, - 0x082206018, - 0x0de206000, - 0x0c100601c, - 0x0c3006020, - 0x081a80a58, - 0x001000000, - 0x01780001f, - 0x001000000, - 0x0c900601c, - 0x0cb006020, - 0x085a608c4, - 0x0c5206004, - 0x0c7206008, - 0x09000601c, - 0x0d020600c, - 0x040000287, - 0x001000000, - 0x081a80a58, - 0x001000000, - 0x013800007, - 0x001000000, - 0x0c100601c, - 0x0c3006020, - 0x085a0085c, - 0x0c520601c, - 0x0c7206020, - 0x0c500601c, - 0x0c7006020, - 0x081a608c2, - 0x0c120601c, - 0x0c3206020, - 0x0c100601c, - 0x0c3006020, - 0x0d0006000, - 0x082006018, - 0x081c22008, - 0x001000000, - 0x0c500601c, - 0x0c7006020, - 0x0c5206004, - 0x0c7206008, - 0x09000601c, - 0x0d020600c, - 0x04000026b, - 0x001000000, - 0x010bffff2, - 0x001000000, - 0x08220600c, - 0x0de206000, - 0x0c9006010, - 0x0cb006014, - 0x085a608c4, - 0x0c5206004, - 0x0c7206008, - 0x07fffffca, - 0x001000000, - 0x081a608c0, - 0x0d0006000, - 0x08200600c, - 0x081c22008, - 0x001000000, - 0x082206004, - 0x0d2006010, - 0x0d4006008, - 0x0d600600c, - 0x09a02c009, - 0x098028009, - 0x080a2800b, - 0x018800039, - 0x001000000, - 0x080a26004, - 0x006800029, - 0x001000000, - 0x08e1ac00a, - 0x08089e003, - 0x012800025, - 0x001000000, - 0x0808aa003, - 0x002800008, - 0x001000000, - 0x0e04ae000, - 0x09602e001, - 0x0e02aa000, - 0x09402a001, - 0x010bffff9, - 0x001000000, - 0x09223200f, - 0x080a2400a, - 0x00880000e, - 0x001000000, - 0x0e002e000, - 0x0e202e004, - 0x0e022a000, - 0x0e002e008, - 0x0e222a004, - 0x0e202e00c, - 0x09602e010, - 0x0e022a008, - 0x0e222a00c, - 0x09402a010, - 0x010bffff3, - 0x001000000, - 0x092232003, - 0x080a2400a, - 0x008800008, - 0x001000000, - 0x0e002e000, - 0x09602e004, - 0x0e022a000, - 0x09402a004, - 0x010bffff9, - 0x001000000, - 0x080a3400b, - 0x008800008, - 0x001000000, - 0x0e04ae000, - 0x09602e001, - 0x0e02aa000, - 0x09402a001, - 0x010bffff9, - 0x001000000, - 0x0ce006008, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x080a26004, - 0x006800029, - 0x001000000, - 0x08e1b400c, - 0x08089e003, - 0x012800025, - 0x001000000, - 0x0808b6003, - 0x002800008, - 0x001000000, - 0x0e04b7fff, - 0x09a236001, - 0x0e02b3fff, - 0x098232001, - 0x010bffff9, - 0x001000000, - 0x09202e00f, - 0x080a34009, - 0x00880000e, - 0x001000000, - 0x0e0037ffc, - 0x0e2037ff8, - 0x0e0233ffc, - 0x0e0037ff4, - 0x0e2233ff8, - 0x0e2037ff0, - 0x09a236010, - 0x0e0233ff4, - 0x0e2233ff0, - 0x098232010, - 0x010bffff3, - 0x001000000, - 0x09202e003, - 0x080a34009, - 0x008800008, - 0x001000000, - 0x0e0037ffc, - 0x09a236004, - 0x0e0233ffc, - 0x098232004, - 0x010bffff9, - 0x001000000, - 0x080a3400b, - 0x008bfffd1, - 0x001000000, - 0x0e04b7fff, - 0x09a236001, - 0x0e02b3fff, - 0x098232001, - 0x010bffff9, - 0x001000000, - 0x082206014, - 0x0de206000, - 0x0d4006018, - 0x080a28000, - 0x01680000b, - 0x001000000, - 0x09020000a, - 0x0d0206004, - 0x07ffffff8, - 0x001000000, - 0x081a709c0, - 0x0d0006000, - 0x082006014, - 0x081c22008, - 0x001000000, - 0x080a2a00a, - 0x01680000d, - 0x001000000, - 0x0932aa002, - 0x09000b02a, - 0x092024008, - 0x0d2026000, - 0x0d220b026, - 0x0c100b026, - 0x081a01900, - 0x0d0006000, - 0x082006014, - 0x081c22008, - 0x001000000, - 0x0973aa001, - 0x0d6206010, - 0x09222800b, - 0x0d2206004, - 0x07fffffdf, - 0x001000000, - 0x0c1206008, - 0x0c320600c, - 0x0d0006010, - 0x0d0206004, - 0x07fffffd9, - 0x001000000, - 0x0c5006008, - 0x0c700600c, - 0x081a00942, - 0x0d0006000, - 0x082006014, - 0x081c22008, - 0x001000000, - 0x082206004, - 0x0d448600f, - 0x0d2006008, - 0x080a28000, - 0x00280000e, - 0x001000000, - 0x0ce4a6000, - 0x092026001, - 0x080a1c000, - 0x002800006, - 0x001000000, - 0x080a28007, - 0x012bffffa, - 0x001000000, - 0x08e226001, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x0808a6003, - 0x002800009, - 0x001000000, - 0x0ce4a6000, - 0x092026001, - 0x080a1c000, - 0x012bffffa, - 0x001000000, - 0x010bffff4, - 0x001000000, - 0x0a20020ff, - 0x0a12c6008, - 0x09b2c6010, - 0x0992c6018, - 0x0d6026000, - 0x092026004, - 0x0808ac00c, - 0x002800013, - 0x001000000, - 0x0808ac00d, - 0x00280000d, - 0x001000000, - 0x0808ac010, - 0x002800007, - 0x001000000, - 0x0808ac011, - 0x012bffff4, - 0x001000000, - 0x010bfffe0, - 0x001000000, - 0x08e226002, - 0x010bfffde, - 0x001000000, - 0x08e226003, - 0x010bfffdb, - 0x001000000, - 0x08e226004, - 0x010bfffd8, - 0x001000000, - 0x08220600c, - 0x017200000, - 0x0da006010, - 0x0d4006014, - 0x080a28000, - 0x012800003, - 0x001000000, - 0x0c0203fff, - 0x09810000d, - 0x080a3400b, - 0x008800003, - 0x001000000, - 0x09810000b, - 0x096100000, - 0x080a2800c, - 0x01a800006, - 0x001000000, - 0x0952aa001, - 0x09602e001, - 0x010bffffb, - 0x001000000, - 0x098100000, - 0x080a2c000, - 0x00680000c, - 0x001000000, - 0x0992b2001, - 0x080a3400a, - 0x00a800004, - 0x001000000, - 0x09a23400a, - 0x098132001, - 0x09532a001, - 0x09602ffff, - 0x010bffff5, - 0x001000000, - 0x08e10000c, - 0x08200600c, - 0x081c3e008, - 0x001000000, - 0x08220600c, - 0x017200000, - 0x0da006010, - 0x0d4006014, - 0x080a28000, - 0x012800003, - 0x001000000, - 0x0c0203fff, - 0x09810000d, - 0x080a3400b, - 0x008800003, - 0x001000000, - 0x09810000b, - 0x096100000, - 0x080a2800c, - 0x01a800006, - 0x001000000, - 0x0952aa001, - 0x09602e001, - 0x010bffffb, - 0x001000000, - 0x098100000, - 0x080a2c000, - 0x00680000c, - 0x001000000, - 0x0992b2001, - 0x080a3400a, - 0x00a800004, - 0x001000000, - 0x09a23400a, - 0x098132001, - 0x09532a001, - 0x09602ffff, - 0x010bffff5, - 0x001000000, - 0x08e10000d, - 0x08200600c, - 0x081c3e008, - 0x001000000, - 0x08220600c, - 0x0de206000, - 0x0d6006010, - 0x0d4006014, - 0x080a2c000, - 0x016800019, - 0x001000000, - 0x080a28000, - 0x01680000c, - 0x001000000, - 0x09020000b, - 0x0d0206004, - 0x09220000a, - 0x0d2206008, - 0x07fffffa4, - 0x001000000, - 0x0d0006000, - 0x08200600c, - 0x081c22008, - 0x001000000, - 0x09020000b, - 0x0d0206004, - 0x0d4206008, - 0x07fffff9b, - 0x001000000, - 0x08e200007, - 0x0d0006000, - 0x08200600c, - 0x081c22008, - 0x001000000, - 0x080a28000, - 0x01680000c, - 0x001000000, - 0x0d6206004, - 0x09220000a, - 0x0d2206008, - 0x07fffff8e, - 0x001000000, - 0x08e200007, - 0x0d0006000, - 0x08200600c, - 0x081c22008, - 0x001000000, - 0x0d6206004, - 0x0d4206008, - 0x07fffff85, - 0x001000000, - 0x0d0006000, - 0x08200600c, - 0x081c22008, - 0x001000000, - 0x08220600c, - 0x0de206000, - 0x0d6006010, - 0x0d4006014, - 0x080a2c000, - 0x016800019, - 0x001000000, - 0x080a28000, - 0x01680000c, - 0x001000000, - 0x09220000b, - 0x0d2206004, - 0x09020000a, - 0x0d0206008, - 0x07fffff98, - 0x001000000, - 0x0d0006000, - 0x08200600c, - 0x081c22008, - 0x001000000, - 0x09020000b, - 0x0d0206004, - 0x0d4206008, - 0x07fffff8f, - 0x001000000, - 0x08e200007, - 0x0d0006000, - 0x08200600c, - 0x081c22008, - 0x001000000, - 0x080a28000, - 0x01680000c, - 0x001000000, - 0x0d6206004, - 0x09220000a, - 0x0d2206008, - 0x07fffff82, - 0x001000000, - 0x08e200007, - 0x0d0006000, - 0x08200600c, - 0x081c22008, - 0x001000000, - 0x0d6206004, - 0x0d4206008, - 0x07fffff79, - 0x001000000, - 0x0d0006000, - 0x08200600c, - 0x081c22008, - 0x001000000, - 0x082206010, - 0x0de206000, - 0x0d0006014, - 0x0d0022000, - 0x0d0206004, - 0x0d4006018, - 0x0d4206008, - 0x040000044, - 0x001000000, - 0x0d0006014, - 0x0ce222000, - 0x0d0006000, - 0x082006010, - 0x081c22008, - 0x001000000, - 0x082206010, - 0x0de206000, - 0x0d2006014, - 0x0d2026000, - 0x0d2206004, - 0x0d4006018, - 0x0d4206008, - 0x07fffff84, - 0x001000000, - 0x0d2006014, - 0x0ce226000, - 0x0d0006000, - 0x082006010, - 0x081c22008, - 0x001000000, - 0x082206010, - 0x0de206000, - 0x0d2006014, - 0x0d2026000, - 0x0d2206004, - 0x0d4006018, - 0x0d4206008, - 0x07fffffa8, - 0x001000000, - 0x0d2006014, - 0x0ce226000, - 0x0d0006000, - 0x082006010, - 0x081c22008, - 0x001000000, - 0x082206010, - 0x0de206000, - 0x0d2006014, - 0x0d2026000, - 0x0d2206004, - 0x0d4006018, - 0x0d4206008, - 0x07fffff18, - 0x001000000, - 0x0d2006014, - 0x0ce226000, - 0x0d0006000, - 0x082006010, - 0x081c22008, - 0x001000000, - 0x082206010, - 0x0de206000, - 0x0d2006014, - 0x0d2026000, - 0x0d2206004, - 0x0d4006018, - 0x0d4206008, - 0x07fffff30, - 0x001000000, - 0x0d2006014, - 0x0ce226000, - 0x0d0006000, - 0x082006010, - 0x081c22008, - 0x001000000, - 0x082206004, - 0x0ce006008, - 0x08181e000, - 0x0d000600c, - 0x092880000, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224008, - 0x093224000, - 0x08f400000, - 0x082006004, - 0x081c3e008, - 0x001000000, - 0x08220600c, - 0x0c9006010, - 0x0cb006014, - 0x0d4006018, - 0x081a90a58, - 0x001000000, - 0x003800008, - 0x001000000, - 0x0c022a000, - 0x081a00038, - 0x083a00039, - 0x08200600c, - 0x081c3e008, - 0x001000000, - 0x0c9206004, - 0x0cb206008, - 0x0d2006004, - 0x0933a6014, - 0x0920a67ff, - 0x092027c02, - 0x0d222a000, - 0x0d0006004, - 0x01d2003ff, - 0x09c03a3ff, - 0x0900a000e, - 0x0d0206004, - 0x0d2006004, - 0x01d0ff800, - 0x09212400e, - 0x0d2206004, - 0x0c1006004, - 0x0c3006008, - 0x08200600c, - 0x081c3e008, - 0x001000000, - 0x08220600c, - 0x0c9006010, - 0x0cb006014, - 0x081a90a58, - 0x001000000, - 0x003800007, - 0x001000000, - 0x081a00038, - 0x083a00039, - 0x08200600c, - 0x081c3e008, - 0x001000000, - 0x0c9206004, - 0x0cb206008, - 0x0d0006004, - 0x0913a2014, - 0x0900a27ff, - 0x0d2006018, - 0x094024008, - 0x080a28000, - 0x014800007, - 0x001000000, - 0x081a00038, - 0x083a00039, - 0x08200600c, - 0x081c3e008, - 0x001000000, - 0x080a2a7ff, - 0x006800007, - 0x001000000, - 0x081a00038, - 0x083a00039, - 0x08200600c, - 0x081c3e008, - 0x001000000, - 0x0d2006004, - 0x01d2003ff, - 0x09c03a3ff, - 0x0920a400e, - 0x0d2206004, - 0x0912aa014, - 0x0d2006004, - 0x090124008, - 0x0d0206004, - 0x0c1006004, - 0x0c3006008, - 0x08200600c, - 0x081c3e008, - 0x001000000, - 0x082206010, - 0x0d800601c, - 0x0c9006014, - 0x0cb006018, - 0x081a90a5c, - 0x001000000, - 0x017800009, - 0x001000000, - 0x0f1232000, - 0x0f3232004, - 0x081a00024, - 0x083a00025, - 0x082006010, - 0x081c3e008, - 0x001000000, - 0x0c9206008, - 0x0cb20600c, - 0x0d0006008, - 0x0913a2014, - 0x0900a27ff, - 0x096023c02, - 0x080a2e015, - 0x014800013, - 0x001000000, - 0x0d000b10e, - 0x0913a000b, - 0x0901a3fff, - 0x0d4006008, - 0x0900a8008, - 0x0d0206008, - 0x0c020600c, - 0x0c1006008, - 0x0c300600c, - 0x0c1232000, - 0x0c3232004, - 0x0c5006008, - 0x0c700600c, - 0x081a108c2, - 0x082006010, - 0x081c3e008, - 0x001000000, - 0x080a2e035, - 0x014bffff5, - 0x001000000, - 0x09002ffea, - 0x0d200b112, - 0x0913a4008, - 0x0901a3fff, - 0x0d400600c, - 0x0900a8008, - 0x0d020600c, - 0x010bfffec, - 0x001000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000001, - 0x00000000a, - 0x000000064, - 0x0000003e8, - 0x000002710, - 0x0000186a0, - 0x0000f4240, - 0x000989680, - 0x005f5e100, - 0x03b9aca00, - 0x000000000, - 0x000000007, - 0x07072696e, - 0x074206572, - 0x0726f7273, - 0x000000000, - 0x000000000, - 0x062616420, - 0x074797065, - 0x03a202564, - 0x00a006261, - 0x064207479, - 0x070653a20, - 0x025640a00, - 0x000000000, - 0x03fd34413, - 0x055475a32, - 0x040240000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x00d400000, - 0x000000000, - 0x000000000, - 0x06e6f6e2d, - 0x07a65726f, - 0x020657869, - 0x074207374, - 0x061747573, - 0x000000000, - 0x000000000, - 0x00000718c, - 0x000007191, - 0x0000071a6, - 0x0000071ad, - 0x0000071c2, - 0x0000071c8, - 0x0000071dd, - 0x0000071e5, - 0x0000071fa, - 0x0000071fe, - 0x000000000, - 0x000000000, - 0x000000000, - 0x0001fffff, - 0x07fffffff, - 0x00000531c, - 0x00000543c, - 0x000004ce8, - 0x000005530, - 0x000005370, - 0x0000053bc, - 0x000005404, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x0726f7373, - 0x000636f6e, - 0x06e656374, - 0x020303230, - 0x037303130, - 0x030356566, - 0x06600626f, - 0x06f746573, - 0x000636f6e, - 0x06e656374, - 0x020303830, - 0x030363930, - 0x032303230, - 0x035006865, - 0x06c697800, - 0x0636f6e6e, - 0x065637420, - 0x030383030, - 0x036393032, - 0x030343237, - 0x000737069, - 0x06e646c65, - 0x000636f6e, - 0x06e656374, - 0x020303830, - 0x030363930, - 0x032303264, - 0x066007237, - 0x03000636f, - 0x06e6e6563, - 0x074203038, - 0x030303262, - 0x030343236, - 0x035640023, - 0x0632f636f, - 0x06e730023, - 0x0632f636f, - 0x06e730023, - 0x0632f636f, - 0x06e73006e, - 0x06f6e6500, - 0x075736572, - 0x00023632f, - 0x075736572, - 0x00023652f, - 0x07379736e, - 0x0616d6500, - 0x07379736e, - 0x0616d6500, - 0x07379736e, - 0x0616d6500, - 0x061726776, - 0x05b25645d, - 0x0203d2025, - 0x0730a0062, - 0x06f6f7465, - 0x073002333, - 0x02f626974, - 0x033006361, - 0x06e277420, - 0x0636f6e76, - 0x065727420, - 0x06e6f6e65, - 0x074206164, - 0x064726573, - 0x07320746f, - 0x020657468, - 0x065722061, - 0x064647265, - 0x073730a00, - 0x0236c2f31, - 0x02f63746c, - 0x0006f7065, - 0x06e696e67, - 0x020236c2f, - 0x0312f6374, - 0x06c00636f, - 0x06e6e6563, - 0x074203078, - 0x039303000, - 0x0636f6e6e, - 0x065637420, - 0x030783930, - 0x030007075, - 0x07368206e, - 0x06f657468, - 0x065720070, - 0x075736820, - 0x06e6f6574, - 0x068657200, - 0x0636f6e66, - 0x06967206e, - 0x06f6e6574, - 0x000636f6e, - 0x066696720, - 0x06e6f6e65, - 0x07400236e, - 0x06e6f6e65, - 0x0742f322f, - 0x064617461, - 0x0006f7065, - 0x06e696e67, - 0x020236e6e, - 0x06f6e6574, - 0x02f322f64, - 0x061746100, - 0x0236e6e6f, - 0x06e65742f, - 0x0322f6374, - 0x06c006f70, - 0x0656e696e, - 0x06720236e, - 0x06e6f6e65, - 0x0742f322f, - 0x063746c00, - 0x06e6f6e65, - 0x07400236e, - 0x06e6f6e65, - 0x074002368, - 0x02f63746c, - 0x0006f7065, - 0x06e696e67, - 0x02023682f, - 0x063746c00, - 0x070757368, - 0x020646b6d, - 0x075780070, - 0x075736820, - 0x0646b6d75, - 0x07800636f, - 0x06e666967, - 0x020342032, - 0x035362072, - 0x065737461, - 0x072742064, - 0x06b00636f, - 0x06e666967, - 0x020342032, - 0x035362072, - 0x065737461, - 0x072742064, - 0x06b00236b, - 0x0646b2f35, - 0x02f646174, - 0x061006f70, - 0x0656e696e, - 0x06720236b, - 0x0646b2f35, - 0x02f646174, - 0x06100236b, - 0x0646b2f35, - 0x02f63746c, - 0x0006f7065, - 0x06e696e67, - 0x020236b64, - 0x06b2f352f, - 0x063746c00, - 0x0636f6e6e, - 0x065637420, - 0x025730064, - 0x06b00236b, - 0x0646b0073, - 0x065727665, - 0x072006269, - 0x074210064, - 0x06b21006e, - 0x06f6e6574, - 0x021006361, - 0x06e277420, - 0x0636f6e6e, - 0x06563742c, - 0x020726574, - 0x07279696e, - 0x0672e2e2e, - 0x00a006361, - 0x06e277420, - 0x0636f6e6e, - 0x06563740a, - 0x0006e6f70, - 0x02e2e2e00, - 0x06e203d20, - 0x025640a00, - 0x077726974, - 0x065206e6f, - 0x070007265, - 0x06164206e, - 0x06f70006e, - 0x0203d2025, - 0x0643b2062, - 0x07566203d, - 0x020252e32, - 0x07820252e, - 0x032782025, - 0x02e327820, - 0x0252e3278, - 0x00a00666f, - 0x0726d6174, - 0x0206e6f70, - 0x0006e6f74, - 0x020526e6f, - 0x070007461, - 0x067206e6f, - 0x074207e30, - 0x000736573, - 0x073696f6e, - 0x02e2e2e00, - 0x077726974, - 0x065207365, - 0x07373696f, - 0x06e007265, - 0x061642073, - 0x065737369, - 0x06f6e0066, - 0x06f726d61, - 0x074207365, - 0x07373696f, - 0x06e007461, - 0x067206e6f, - 0x074207e30, - 0x000626f6f, - 0x0743a2065, - 0x072726f72, - 0x02025730a, - 0x0006e6f74, - 0x020527365, - 0x07373696f, - 0x06e00706f, - 0x073742e2e, - 0x02e002373, - 0x02f257300, - 0x063726561, - 0x074650025, - 0x064007772, - 0x069746500, - 0x023732f62, - 0x06f6f7400, - 0x063726561, - 0x074650025, - 0x064007772, - 0x069746500, - 0x06d6f756e, - 0x0742e2e2e, - 0x0002f002f, - 0x00062696e, - 0x064002f00, - 0x000006d6f, - 0x0756e7400, - 0x074696d65, - 0x02e2e2e00, - 0x02f2e2e00, - 0x073746174, - 0x00023632f, - 0x074696d65, - 0x000256c64, - 0x000737563, - 0x063657373, - 0x00a002f6e, - 0x065742f25, - 0x073002f6e, - 0x065742f6e, - 0x06574002f, - 0x06c69622f, - 0x06e657461, - 0x06464722e, - 0x025730062, - 0x0696e6469, - 0x06e672025, - 0x073206f6e, - 0x0746f202f, - 0x06c69622f, - 0x06e657461, - 0x06464722e, - 0x06e65740a, - 0x0002f6c69, - 0x0622f6e65, - 0x074616464, - 0x0722e6e65, - 0x074002f73, - 0x070617263, - 0x02f696e69, - 0x07400696e, - 0x06974002d, - 0x074002d6d, - 0x0002f7370, - 0x06172632f, - 0x0696e6974, - 0x000696e69, - 0x074002d74, - 0x0002f7370, - 0x06172632f, - 0x0696e6974, - 0x000626f6f, - 0x0743a2025, - 0x0733a2025, - 0x0730a0062, - 0x06f6f743a, - 0x02025733a, - 0x02025730a, - 0x00025735b, - 0x025735d3a, - 0x020006361, - 0x06e277420, - 0x072656164, - 0x02023632f, - 0x0636f6e73, - 0x03b20706c, - 0x065617365, - 0x020726562, - 0x06f6f7400, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000001, - 0x000060000, - 0x000000001, - 0x000010000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000030003, - 0x000000000, - 0x000000000, - 0x000000000, - 0x000000000, - 0x002000000, - 0x000000000, - 0x000000004, - 0x002030303, - 0x001000000, - 0x001000002, - 0x000000005, - 0x000010000, - 0x002000000, - 0x000000000, - 0x000000000, - 0x00006060, - 0x0, - 0x00006060, - 0x0, -}; diff --git a/ss/crc_16.h b/ss/crc_16.h deleted file mode 100644 index 9a5ad04f4919762732d82919c54bb5298db8b54b..0000000000000000000000000000000000000000 --- a/ss/crc_16.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * CRC 0120001 - */ - 0x0, 0xc0c1, 0xc181, 0x140, 0xc301, 0x3c0, 0x280, 0xc241, - 0xc601, 0x6c0, 0x780, 0xc741, 0x500, 0xc5c1, 0xc481, 0x440, - 0xcc01, 0xcc0, 0xd80, 0xcd41, 0xf00, 0xcfc1, 0xce81, 0xe40, - 0xa00, 0xcac1, 0xcb81, 0xb40, 0xc901, 0x9c0, 0x880, 0xc841, - 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, - 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, - 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, - 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, - 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, - 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, - 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, - 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, - 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, - 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, - 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, - 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, - 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, - 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, - 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, - 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, - 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, - 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, - 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, - 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, - 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, - 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, - 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, - 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, - 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, - 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, - 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, - 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040 diff --git a/ss/devbit.c b/ss/devbit.c deleted file mode 100644 index 22e5ed822f5374802fea564a346642b35d5169a3..0000000000000000000000000000000000000000 --- a/ss/devbit.c +++ /dev/null @@ -1,1176 +0,0 @@ -#include "u.h" -#include "lib.h" -#include "mem.h" -#include "dat.h" -#include "fns.h" -#include "errno.h" - -#include "devtab.h" - -#include -#include - -extern GFont *defont; - -/* - * Device (#b/bitblt) is exclusive use on open, so no locks are necessary - * for i/o - */ - -/* - * Some fields in GBitmaps are overloaded: - * ldepth = -1 means free. - * base is next pointer when free. - * Arena is a word containing N, followed by a pointer to its bitmap, - * followed by N blocks. The bitmap pointer is zero if block is free. - */ - -struct -{ - Ref; - GBitmap *map; /* arena */ - GBitmap *free; /* free list */ - ulong *words; /* storage */ - ulong nwords; /* total in arena */ - ulong *wfree; /* pointer to next free word */ - GFont *font; /* arena; looked up linearly BUG */ - int lastid; /* last allocated bitmap id */ - int lastfid; /* last allocated font id */ - int init; /* freshly opened; init message pending */ - int rid; /* read bitmap id */ - int rminy; /* read miny */ - int rmaxy; /* read maxy */ -}bit; - -#define FREE 0x80000000 -void bitcompact(void); -void bitfree(GBitmap*); -extern GBitmap gscreen; - -struct{ - /* - * First four fields are known in screen.c - */ - int dx; /* interrupt-time delta */ - int dy; - int track; /* update cursor on screen */ - Mouse; - int changed; /* mouse structure changed since last read */ - Rendez r; - int newbuttons; /* interrupt time access only */ -}mouse; - -Cursor arrow = -{ - {-1, -1}, - {0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xC0, 0xFF, 0x00, - 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0xC0, 0xFF, 0xE0, - 0xE7, 0xF0, 0xE3, 0xF8, 0xC1, 0xFC, 0x00, 0xFE, - 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x08, - }, - {0x00, 0x00, 0x7F, 0xC0, 0x7F, 0x00, 0x7C, 0x00, - 0x7E, 0x00, 0x7F, 0x00, 0x6F, 0x80, 0x67, 0xC0, - 0x43, 0xE0, 0x41, 0xF0, 0x00, 0xF8, 0x00, 0x7C, - 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00, - } -}; - -struct{ - Cursor; - Lock; - int visible; /* on screen */ - Rectangle r; /* location */ -}cursor; - -ulong setbits[16]; -GBitmap set = -{ - setbits, - 0, - 1, - 0, - {0, 0, 16, 16} -}; - -ulong clrbits[16]; -GBitmap clr = -{ - clrbits, - 0, - 1, - 0, - {0, 0, 16, 16} -}; - -ulong cursorbackbits[16]; -GBitmap cursorback = -{ - cursorbackbits, - 0, - 1, - 0, - {0, 0, 16, 16} -}; - -void Cursortocursor(Cursor*); -void cursoron(int); -void cursoroff(int); -int mousechanged(void*); - -enum{ - Qdir, - Qbitblt, - Qmouse, - Qscreen, -}; - -Dirtab bitdir[]={ - "bitblt", {Qbitblt}, 0, 0600, - "mouse", {Qmouse}, 0, 0600, - "screen", {Qscreen}, 0, 0400, -}; - -#define NBIT (sizeof bitdir/sizeof(Dirtab)) -#define NINFO 257 - -void -bitreset(void) -{ - int i; - GBitmap *bp; - - bit.map = ialloc(conf.nbitmap * sizeof(GBitmap), 0); - for(i=0,bp=bit.map; ildepth = -1; - bp->base = (ulong*)(bp+1); - } - bp--; - bp->base = 0; - bit.map[0] = gscreen; /* bitmap 0 is screen */ - bit.free = bit.map+1; - bit.lastid = -1; - bit.lastfid = -1; - bit.words = ialloc(conf.nbitbyte, 0); - bit.nwords = conf.nbitbyte/sizeof(ulong); - bit.wfree = bit.words; - bit.font = ialloc(conf.nfont * sizeof(GFont), 0); - bit.font[0] = *defont; - for(i=1; i 1) - panic("bitinit ldepth>1"); - cursorback.ldepth = gscreen.ldepth; - cursoron(1); -} - -Chan* -bitattach(char *spec) -{ - return devattach('b', spec); -} - -Chan* -bitclone(Chan *c, Chan *nc) -{ - nc = devclone(c, nc); - if(c->qid.path != CHDIR) - incref(&bit); - return nc; -} - -int -bitwalk(Chan *c, char *name) -{ - return devwalk(c, name, bitdir, NBIT, devgen); -} - -void -bitstat(Chan *c, char *db) -{ - devstat(c, db, bitdir, NBIT, devgen); -} - -Chan * -bitopen(Chan *c, int omode) -{ - if(c->qid.path == CHDIR){ - if(omode != OREAD) - error(Eperm); - }else if(c->qid.path == Qbitblt){ - lock(&bit); - if(bit.ref){ - unlock(&bit); - error(Einuse); - } - bit.lastid = -1; - bit.lastfid = -1; - bit.rid = -1; - bit.init = 0; - bit.ref = 1; - Cursortocursor(&arrow); - unlock(&bit); - }else - incref(&bit); - c->mode = openmode(omode); - c->flag |= COPEN; - c->offset = 0; - return c; -} - -void -bitcreate(Chan *c, char *name, int omode, ulong perm) -{ - error(Eperm); -} - -void -bitremove(Chan *c) -{ - error(Eperm); -} - -void -bitwstat(Chan *c, char *db) -{ - error(Eperm); -} - -void -bitclose(Chan *c) -{ - int i; - GBitmap *bp; - GFont *fp; - - if(c->qid.path!=CHDIR && (c->flag&COPEN)){ - lock(&bit); - if(--bit.ref == 0){ - for(i=1,bp=&bit.map[1]; ildepth >= 0) - bitfree(bp); - for(i=1,fp=&bit.font[1]; ibits = 0; - } - unlock(&bit); - } -} - -#define GSHORT(p) (((p)[0]<<0) | ((p)[1]<<8)) -#define GLONG(p) ((GSHORT(p)<<0) | (GSHORT(p+2)<<16)) -#define PSHORT(p, v) ((p)[0]=(v), (p)[1]=((v)>>8)) -#define PLONG(p, v) (PSHORT(p, (v)), PSHORT(p+2, (v)>>16)) - -/* - * These macros turn user-level (high bit at left) into internal (whatever) - * bit order. On the gnot they're trivial. - */ -#define U2K(x) (x) -#define K2U(x) (x) - -long -bitread(Chan *c, void *va, long n) -{ - uchar *p, *q; - long miny, maxy, t, x, y; - ulong l, nw, ws; - int off, j; - Fontchar *i; - GBitmap *src; - - if(c->qid.path & CHDIR) - return devdirread(c, va, n, bitdir, NBIT, devgen); - - switch(c->qid.path){ - case Qmouse: - /* - * mouse: - * 'm' 1 - * buttons 1 - * point 8 - */ - if(n < 10) - error(Ebadblt); - Again: - while(mouse.changed == 0) - sleep(&mouse.r, mousechanged, 0); - lock(&cursor); - if(mouse.changed == 0){ - unlock(&cursor); - goto Again; - } - p = va; - p[0] = 'm'; - p[1] = mouse.buttons; - PLONG(p+2, mouse.xy.x); - PLONG(p+6, mouse.xy.y); - mouse.changed = 0; - unlock(&cursor); - n = 10; - break; - - case Qbitblt: - p = va; - /* - * Fuss about and figure out what to say. - */ - if(bit.init){ - /* - * init: - * 'I' 1 - * ldepth 1 - * rectangle 16 - * if count great enough, also - * font info 3*12 - * fontchars 6*(defont->n+1) - */ - if(n < 18) - error(Ebadblt); - p[0] = 'I'; - p[1] = gscreen.ldepth; - PLONG(p+2, gscreen.r.min.x); - PLONG(p+6, gscreen.r.min.y); - PLONG(p+10, gscreen.r.max.x); - PLONG(p+14, gscreen.r.max.y); - if(n >= 18+3*12+6*(defont->n+1)){ - p += 18; - sprint((char*)p, "%11d %11d %11d ", defont->n, - defont->height, defont->ascent); - p += 3*12; - for(i=defont->info,j=0; j<=defont->n; j++,i++,p+=6){ - PSHORT(p, i->x); - p[2] = i->top; - p[3] = i->bottom; - p[4] = i->left; - p[5] = i->width; - } - n = 18+3*12+6*(defont->n+1); - }else - n = 18; - bit.init = 0; - break; - } - if(bit.lastid > 0){ - /* - * allocate: - * 'A' 1 - * bitmap id 2 - */ - if(n < 3) - error(Ebadblt); - p[0] = 'A'; - PSHORT(p+1, bit.lastid); - bit.lastid = -1; - n = 3; - break; - } - if(bit.lastfid > 0){ - /* - * allocate font: - * 'K' 1 - * font id 2 - */ - if(n < 3) - error(Ebadblt); - p[0] = 'K'; - PSHORT(p+1, bit.lastfid); - bit.lastfid = -1; - n = 3; - break; - } - if(bit.rid >= 0){ - /* - * read - * data bytewidth*(maxy-miny) - */ - src = &bit.map[bit.rid]; - if(src->ldepth<0) - error(Ebadbitmap); - off = 0; - if(bit.rid == 0) - off = 1; - miny = bit.rminy; - maxy = bit.rmaxy; - if(miny>maxy || minyr.min.y || maxy>src->r.max.y) - error(Ebadblt); - ws = 1<<(3-src->ldepth); /* pixels per byte */ - /* set l to number of bytes of incoming data per scan line */ - if(src->r.min.x >= 0) - l = (src->r.max.x+ws-1)/ws - src->r.min.x/ws; - else{ /* make positive before divide */ - t = (-src->r.min.x)+ws-1; - t = (t/ws)*ws; - l = (t+src->r.max.x+ws-1)/ws; - } - if(n < l*(maxy-miny)) - error(Ebadblt); - if(off) - cursoroff(1); - n = 0; - p = va; - for(y=miny; yr.min.x, y)); - q += (src->r.min.x&((sizeof(ulong))*ws-1))/ws; - for(x=0; xoffset==0){ - if(n < 5*12) - error(Eio); - sprint(va, "%11d %11d %11d %11d %11d ", - gscreen.ldepth, gscreen.r.min.x, - gscreen.r.min.y, gscreen.r.max.x, - gscreen.r.max.y); - n = 5*12; - break; - } - ws = 1<<(3-gscreen.ldepth); /* pixels per byte */ - l = (gscreen.r.max.x+ws-1)/ws - gscreen.r.min.x/ws; - t = c->offset-5*12; - miny = t/l; - maxy = (t+n)/l; - if(miny >= gscreen.r.max.y) - return 0; - if(maxy >= gscreen.r.max.y) - maxy = gscreen.r.max.y; - n = 0; - p = va; - for(y=miny; yqid.path == CHDIR) - error(Eisdir); - - if(c->qid.path != Qbitblt) - error(Egreg); - - isoff = 0; - if(waserror()){ - if(isoff) - cursoron(1); - nexterror(); - } - p = va; - m = n; - while(m > 0) - switch(*p){ - default: - pprint("bitblt request 0x%x\n", *p); - error(Ebadblt); - - case 'a': - /* - * allocate: - * 'a' 1 - * ldepth 1 - * Rectangle 16 - * next read returns allocated bitmap id - */ - if(m < 18) - error(Ebadblt); - v = *(p+1); - if(v!=0 && v!=1) /* BUG */ - error(Ebadblt); - ws = 1<<(5-v); /* pixels per word */ - if(bit.free == 0) - error(Enobitmap); - rect.min.x = GLONG(p+2); - rect.min.y = GLONG(p+6); - rect.max.x = GLONG(p+10); - rect.max.y = GLONG(p+14); - if(rect.min.x >= 0) - l = (rect.max.x+ws-1)/ws - rect.min.x/ws; - else{ /* make positive before divide */ - t = (-rect.min.x)+ws-1; - t = (t/ws)*ws; - l = (t+rect.max.x+ws-1)/ws; - } - nw = l*Dy(rect); - if(bit.wfree+2+nw > bit.words+bit.nwords){ - bitcompact(); - if(bit.wfree+2+nw > bit.words+bit.nwords) - error(Enobitstore); - } - bp = bit.free; - bit.free = (GBitmap*)(bp->base); - *bit.wfree++ = nw; - *bit.wfree++ = (ulong)bp; - bp->base = bit.wfree; - memset(bp->base, 0, nw*sizeof(ulong)); - bit.wfree += nw; - bp->zero = l*rect.min.y; - if(rect.min.x >= 0) - bp->zero += rect.min.x/ws; - else - bp->zero -= (-rect.min.x+ws-1)/ws; - bp->zero = -bp->zero; - bp->width = l; - bp->ldepth = v; - bp->r = rect; - bp->cache = 0; - bit.lastid = bp-bit.map; - m -= 18; - p += 18; - break; - - case 'b': - /* - * bitblt - * 'b' 1 - * dst id 2 - * dst Point 8 - * src id 2 - * src Rectangle 16 - * code 2 - */ - if(m < 31) - error(Ebadblt); - v = GSHORT(p+1); - dst = &bit.map[v]; - if(v<0 || v>=conf.nbitmap || dst->ldepth < 0) - error(Ebadbitmap); - off = 0; - if(v == 0) - off = 1; - pt.x = GLONG(p+3); - pt.y = GLONG(p+7); - v = GSHORT(p+11); - src = &bit.map[v]; - if(v<0 || v>=conf.nbitmap || src->ldepth < 0) - error(Ebadbitmap); - if(v == 0) - off = 1; - rect.min.x = GLONG(p+13); - rect.min.y = GLONG(p+17); - rect.max.x = GLONG(p+21); - rect.max.y = GLONG(p+25); - v = GSHORT(p+29); - if(off && !isoff){ - cursoroff(1); - isoff = 1; - } - gbitblt(dst, pt, src, rect, v); - m -= 31; - p += 31; - break; - - case 'c': - /* - * cursorswitch - * 'c' 1 - * nothing more: return to arrow; else - * Point 8 - * clr 32 - * set 32 - */ - if(m == 1){ - if(!isoff){ - cursoroff(1); - isoff = 1; - } - Cursortocursor(&arrow); - m -= 1; - p += 1; - break; - } - if(m < 73) - error(Ebadblt); - curs.offset.x = GLONG(p+1); - curs.offset.y = GLONG(p+5); - memcpy(curs.clr, p+9, 2*16); - memcpy(curs.set, p+41, 2*16); - if(!isoff){ - cursoroff(1); - isoff = 1; - } - Cursortocursor(&curs); - m -= 73; - p += 73; - break; - - case 'f': - /* - * free - * 'f' 1 - * id 2 - */ - if(m < 3) - error(Ebadblt); - v = GSHORT(p+1); - dst = &bit.map[v]; - if(v<0 || v>=conf.nbitmap || dst->ldepth<0) - error(Ebadbitmap); - bitfree(dst); - m -= 3; - p += 3; - break; - - case 'g': - /* - * free font (free bitmap separately) - * 'g' 1 - * id 2 - */ - if(m < 3) - error(Ebadblt); - v = GSHORT(p+1); - f = &bit.font[v]; - if(v<0 || v>=conf.nfont || f->bits==0) - error(Ebadfont); - f->bits = 0; - m -= 3; - p += 3; - break; - - case 'i': - /* - * init - * - * 'i' 1 - */ - bit.init = 1; - m -= 1; - p += 1; - break; - - case 'k': - /* - * allocate font - * 'k' 1 - * n 2 - * height 1 - * ascent 1 - * bitmap id 2 - * fontchars 6*(n+1) - * next read returns allocated font id - */ - if(m < 7) - error(Ebadblt); - v = GSHORT(p+1); - if(v<0 || v>NINFO || m<7+6*(v+1)) /* BUG */ - error(Ebadblt); - for(i=1; in = v; - f->height = p[3]; - f->ascent = p[4]; - v = GSHORT(p+5); - dst = &bit.map[v]; - if(v<0 || v>=conf.nbitmap || dst->ldepth<0) - error(Ebadbitmap); - m -= 7; - p += 7; - fcp = f->info; - for(i=0; i<=f->n; i++,fcp++){ - fcp->x = GSHORT(p); - fcp->top = p[2]; - fcp->bottom = p[3]; - fcp->left = p[4]; - fcp->width = p[5]; - fcp->top = p[2]; - p += 6; - m -= 6; - } - bit.lastfid = f - bit.font; - f->bits = dst; - break; - - case 'l': - /* - * line segment - * - * 'l' 1 - * id 2 - * pt1 8 - * pt2 8 - * value 1 - * code 2 - */ - if(m < 22) - error(Ebadblt); - v = GSHORT(p+1); - dst = &bit.map[v]; - if(v<0 || v>=conf.nbitmap || dst->ldepth<0) - error(Ebadbitmap); - off = 0; - if(v == 0) - off = 1; - pt1.x = GLONG(p+3); - pt1.y = GLONG(p+7); - pt2.x = GLONG(p+11); - pt2.y = GLONG(p+15); - t = p[19]; - v = GSHORT(p+20); - if(off && !isoff){ - cursoroff(1); - isoff = 1; - } - gsegment(dst, pt1, pt2, t, v); - m -= 22; - p += 22; - break; - - case 'p': - /* - * point - * - * 'p' 1 - * id 2 - * pt 8 - * value 1 - * code 2 - */ - if(m < 14) - error(Ebadblt); - v = GSHORT(p+1); - dst = &bit.map[v]; - if(v<0 || v>=conf.nbitmap || dst->ldepth<0) - error(Ebadbitmap); - off = 0; - if(v == 0) - off = 1; - pt1.x = GLONG(p+3); - pt1.y = GLONG(p+7); - t = p[11]; - v = GSHORT(p+12); - if(off && !isoff){ - cursoroff(1); - isoff = 1; - } - gpoint(dst, pt1, t, v); - m -= 14; - p += 14; - break; - - case 'r': - /* - * read - * 'r' 1 - * src id 2 - * miny 4 - * maxy 4 - */ - if(m < 11) - error(Ebadblt); - v = GSHORT(p+1); - src = &bit.map[v]; - if(v<0 || v>=conf.nbitmap || src->ldepth<0) - error(Ebadbitmap); - miny = GLONG(p+3); - maxy = GLONG(p+7); - if(miny>maxy || minyr.min.y || maxy>src->r.max.y) - error(Ebadblt); - bit.rid = v; - bit.rminy = miny; - bit.rmaxy = maxy; - p += 11; - m -= 11; - break; - - case 's': - /* - * string - * 's' 1 - * id 2 - * pt 8 - * font id 2 - * code 2 - * string n (null terminated) - */ - if(m < 16) - error(Ebadblt); - v = GSHORT(p+1); - dst = &bit.map[v]; - if(v<0 || v>=conf.nbitmap || dst->ldepth<0) - error(Ebadbitmap); - off = 0; - if(v == 0) - off = 1; - pt.x = GLONG(p+3); - pt.y = GLONG(p+7); - v = GSHORT(p+11); - f = &bit.font[v]; - if(v<0 || v>=conf.nfont || f->bits==0 || f->bits->ldepth<0) - error(Ebadblt); - v = GSHORT(p+13); - p += 15; - m -= 15; - q = memchr(p, 0, m); - if(q == 0) - error(Ebadblt); - if(off && !isoff){ - cursoroff(1); - isoff = 1; - } - gstring(dst, pt, f, (char*)p, v); - q++; - m -= q-p; - p = q; - break; - - case 't': - /* - * texture - * 't' 1 - * dst id 2 - * Rectangle 16 - * src id 2 - * fcode 2 - */ - if(m < 23) - error(Ebadblt); - v = GSHORT(p+1); - dst = &bit.map[v]; - if(v<0 || v>=conf.nbitmap || dst->ldepth<0) - error(Ebadbitmap); - off = 0; - if(v == 0) - off = 1; - rect.min.x = GLONG(p+3); - rect.min.y = GLONG(p+7); - rect.max.x = GLONG(p+11); - rect.max.y = GLONG(p+15); - v = GSHORT(p+19); - src = &bit.map[v]; - if(v<0 || v>=conf.nbitmap || src->ldepth<0) - error(Ebadbitmap); - v = GSHORT(p+21); - x = src->r.min.x; - y = src->r.min.y; - tw = src->r.max.x - x; - th = src->r.max.y - y; - if(x==0 && y==0 && 16%tw == 0 && 16%th == 0){ - GTexture t; - - if(tw==16 && th==16) - for(y=0; y<16; y++) - t.bits[y] = src->base[y]>>16; - else - for(y=0; y<16; y++){ - l = src->base[y%th] >> (32-tw); - for(i=16/tw, ws=l; i > 1; i--) - ws = (ws<r.min.x - * Similarly for y, maxy - */ - if(x > rect.min.x) - x -= ((x-rect.min.x+tw-1)/tw)*tw; - else if(x+tw <= rect.min.x) - x += ((rect.min.x-x)/tw)*tw; - if(y > rect.min.y) - y -= ((y-rect.min.y+th-1)/th)*th; - else if(y+tw <= rect.min.y) - y += ((rect.min.y-y)/th)*th; - maxx = x+tw; - if(maxx < rect.max.x) - maxx += ((rect.max.x-maxx+tw-1)/tw)*tw; - maxy = y+th; - if(maxy < rect.max.y) - maxy += ((rect.max.y-maxy+th-1)/th)*th; - minx = x; - if(off && !isoff){ - cursoroff(1); - isoff = 1; - } - for( ; yr, v); - } - m -= 23; - p += 23; - break; - - case 'w': - /* - * write - * 'w' 1 - * dst id 2 - * miny 4 - * maxy 4 - * data bytewidth*(maxy-miny) - */ - if(m < 11) - error(Ebadblt); - v = GSHORT(p+1); - dst = &bit.map[v]; - if(v<0 || v>=conf.nbitmap || dst->ldepth<0) - error(Ebadbitmap); - off = 0; - if(v == 0) - off = 1; - miny = GLONG(p+3); - maxy = GLONG(p+7); - if(miny>maxy || minyr.min.y || maxy>dst->r.max.y) - error(Ebadblt); - ws = 1<<(3-dst->ldepth); /* pixels per byte */ - /* set l to number of bytes of incoming data per scan line */ - if(dst->r.min.x >= 0) - l = (dst->r.max.x+ws-1)/ws - dst->r.min.x/ws; - else{ /* make positive before divide */ - t = (-dst->r.min.x)+ws-1; - t = (t/ws)*ws; - l = (t+dst->r.max.x+ws-1)/ws; - } - p += 11; - m -= 11; - if(m < l*(maxy-miny)) - error(Ebadblt); - if(off && !isoff){ - cursoroff(1); - isoff = 1; - } - for(y=miny; yr.min.x, y)); - q += (dst->r.min.x&((sizeof(ulong))*ws-1))/ws; - for(x=0; xbase[-1] = 0; - bp->ldepth = -1; - bp->base = (ulong*)bit.free; - bit.free = bp; -} - -QLock bitlock; - -GBitmap * -id2bit(int k) -{ - GBitmap *bp; - bp = &bit.map[k]; - if(k<0 || k>=conf.nbitmap || bp->ldepth < 0) - error(Ebadbitmap); - return bp; -} - -void -bitcompact(void) -{ - ulong *p1, *p2; - - qlock(&bitlock); - p1 = p2 = bit.words; - while(p2 < bit.wfree){ - if(p2[1] == 0){ - p2 += 2 + p2[0]; - continue; - } - if(p1 != p2){ - memcpy(p1, p2, (2+p2[0])*sizeof(ulong)); - ((GBitmap*)p1[1])->base = p1+2; - } - p2 += 2 + p1[0]; - p1 += 2 + p1[0]; - } - bit.wfree = p1; - qunlock(&bitlock); -} - -void -Cursortocursor(Cursor *c) -{ - int i; - - lock(&cursor); - memcpy(&cursor, c, sizeof(Cursor)); - for(i=0; i<16; i++){ - setbits[i] = (c->set[2*i]<<24) + (c->set[2*i+1]<<16); - clrbits[i] = (c->clr[2*i]<<24) + (c->clr[2*i+1]<<16); - } - unlock(&cursor); -} - -void -cursoron(int dolock) -{ - if(dolock) - lock(&cursor); - if(cursor.visible++ == 0){ - cursor.r.min = mouse.xy; - cursor.r.max = add(mouse.xy, Pt(16, 16)); - cursor.r = raddp(cursor.r, cursor.offset); - gbitblt(&cursorback, Pt(0, 0), &gscreen, cursor.r, S); - gbitblt(&gscreen, add(mouse.xy, cursor.offset), - &clr, Rect(0, 0, 16, 16), D&~S); - gbitblt(&gscreen, add(mouse.xy, cursor.offset), - &set, Rect(0, 0, 16, 16), S|D); - } - if(dolock) - unlock(&cursor); -} - -void -cursoroff(int dolock) -{ - if(dolock) - lock(&cursor); - if(--cursor.visible == 0) - gbitblt(&gscreen, cursor.r.min, &cursorback, Rect(0, 0, 16, 16), S); - if(dolock) - unlock(&cursor); -} - -void -mousebuttons(int b) /* called spl5 */ -{ - /* - * It is possible if you click very fast and get bad luck - * you could miss a button click (down up). Doesn't seem - * likely or important enough to worry about. - */ - mouse.newbuttons = b; - mouse.track = 1; /* aggressive but o.k. */ - mouseclock(); -} - -void -mouseclock(void) /* called splhi */ -{ - int x, y; - if(mouse.track && canlock(&cursor)){ - x = mouse.xy.x + mouse.dx; - if(x < gscreen.r.min.x) - x = gscreen.r.min.x; - if(x >= gscreen.r.max.x) - x = gscreen.r.max.x; - y = mouse.xy.y + mouse.dy; - if(y < gscreen.r.min.y) - y = gscreen.r.min.y; - if(y >= gscreen.r.max.y) - y = gscreen.r.max.y; - cursoroff(0); - mouse.xy = Pt(x, y); - cursoron(0); - mouse.dx = 0; - mouse.dy = 0; - mouse.track = 0; - mouse.buttons = mouse.newbuttons; - mouse.changed = 1; - unlock(&cursor); - wakeup(&mouse.r); - } -} - -void -mousechar(int c) -{ - static short msg[5]; - static int nb; - static uchar b[] = {0, 4, 2, 6, 1, 5, 3, 7}; - - if((c&0xF0) == 0x80) - nb=0; - msg[nb] = c; - if(c & 0x80) - msg[nb] |= 0xFF00; /* sign extend */ - if(++nb == 5){ - mouse.newbuttons = b[(msg[0]&7)^7]; - mouse.dx = msg[1]+msg[3]; - mouse.dy = -(msg[2]+msg[4]); - mouse.track = 1; - mouseclock(); - nb = 0; - } -} - -int -mousechanged(void *m) -{ - return mouse.changed; -} diff --git a/ss/devcons.c b/ss/devcons.c deleted file mode 100644 index 43ed3a78676bf9ee0894774eb24f2b4bec4157f1..0000000000000000000000000000000000000000 --- a/ss/devcons.c +++ /dev/null @@ -1,1031 +0,0 @@ -#include "u.h" -#include "lib.h" -#include "mem.h" -#include "dat.h" -#include "fns.h" -#include "io.h" -#include "errno.h" - -#include "devtab.h" - -typedef struct IOQ IOQ; - -static struct -{ - Lock; - int printing; - int c; -}printq; - -#define NQ 2048 -struct IOQ{ - union{ - Lock; - QLock; - }; - uchar buf[NQ]; - uchar *in; - uchar *out; - int state; - Rendez r; -}; - -IOQ lineq; - -struct{ - IOQ; - Lock put; -}klogq; - -struct{ - IOQ; /* qlock to getc; interrupt putc's */ - int c; - int repeat; - int count; -}kbdq; - -Ref raw; /* whether kbd i/o is raw (rcons is open) */ - -/* - * rs232 stream module - */ -typedef struct Rs232 Rs232; -typedef struct IOBQ IOBQ; - -#define NBQ 6 -struct IOBQ{ - Block *bp[NBQ]; - int w; - int r; - int f; -}; -#define NEXT(x) ((x+1)%NBQ) - -struct Rs232{ - QLock; - QLock outlock; - IOQ in; - IOBQ out; - int kstarted; /* true if kproc started */ - Queue *wq; - Alarm *a; /* alarm for waking the rs232 kernel process */ - int started; - int delay; /* time between character input and waking kproc */ - Rendez r; -}; - -Rs232 rs232; - -static void rs232output(Rs232*); -static void rs232input(Rs232*); -static void rs232timer(Alarm*); -static void rs232kproc(void*); -static void rs232open(Queue*, Stream*); -static void rs232close(Queue*); -static void rs232oput(Queue*, Block*); -Qinfo rs232info = -{ - nullput, - rs232oput, - rs232open, - rs232close, - "rs232" -}; - -void -printinit(void) -{ - lock(&printq); /* allocate lock */ - unlock(&printq); - - kbdq.in = kbdq.buf; - kbdq.out = kbdq.buf; - klogq.in = klogq.buf; - klogq.out = klogq.buf; - lineq.in = lineq.buf; - lineq.out = lineq.buf; - rs232.in.in = rs232.in.buf; - rs232.in.out = rs232.in.buf; - qlock(&kbdq); /* allocate qlock */ - qunlock(&kbdq); - lock(&lineq); /* allocate lock */ - unlock(&lineq); - lock(&klogq); /* allocate lock */ - unlock(&klogq); - lock(&klogq.put); /* allocate lock */ - unlock(&klogq.put); - screeninit(); -} - -/* - * Print a string on the console. - */ -void -putstrn(char *str, long n) -{ - int s; - - s = splhi(); - lock(&printq); - printq.printing = 1; - while(--n >= 0) - screenputc(*str++); - printq.printing = 0; - unlock(&printq); - splx(s); -} - -int -cangetc(void *arg) -{ - IOQ *q = (IOQ *)arg; - int n = q->in - q->out; - if (n < 0) - n += sizeof(q->buf); - return n; -} - -int -canputc(void *arg) -{ - IOQ *q = (IOQ *)arg; - return sizeof(q->buf)-cangetc(q)-1; -} - -int -isbrkc(void *arg) -{ - IOQ *q = (IOQ *)arg; - uchar *p; - - for(p=q->out; p!=q->in; ){ - if(raw.ref) - return 1; - if(*p==0x04 || *p=='\n') - return 1; - p++; - if(p >= q->buf+sizeof(q->buf)) - p = q->buf; - } - return 0; -} - -int -getc(IOQ *q) -{ - int c; - - if(q->in == q->out) - return -1; - c = *q->out++; - if(q->out == q->buf+sizeof(q->buf)) - q->out = q->buf; - return c; -} - -int -putc(IOQ *q, int c) -{ - uchar *nextin; - if(q->in >= &q->buf[sizeof(q->buf)-1]) - nextin = q->buf; - else - nextin = q->in+1; - if(nextin == q->out) - return -1; - *q->in = c; - q->in = nextin; - return 0; -} - -void -putstrk(char *str, long n) -{ - int s; - - s = splhi(); - lock(&klogq.put); - while(--n >= 0){ - *klogq.in++ = *str++; - if(klogq.in == klogq.buf+sizeof(klogq.buf)) - klogq.in = klogq.buf; - } - unlock(&klogq.put); - splx(s); - wakeup(&klogq.r); -} - -int -sprint(char *s, char *fmt, ...) -{ - return doprint(s, s+PRINTSIZE, fmt, (&fmt+1)) - s; -} - -int -print(char *fmt, ...) -{ - char buf[PRINTSIZE]; - int n; - - n = doprint(buf, buf+sizeof(buf), fmt, (&fmt+1)) - buf; - putstrn(buf, n); - return n; -} - -int -kprint(char *fmt, ...) -{ - char buf[PRINTSIZE]; - int n; - - n = doprint(buf, buf+sizeof(buf), fmt, (&fmt+1)) - buf; - putstrk(buf, n); - return n; -} - -void -panic(char *fmt, ...) -{ - char buf[PRINTSIZE]; - int n; - - strcpy(buf, "panic: "); - n = doprint(buf+7, buf+sizeof(buf), fmt, (&fmt+1)) - buf; - buf[n] = '\n'; - putstrn(buf, n+1); - exit(); -} -int -pprint(char *fmt, ...) -{ - char buf[2*PRINTSIZE]; - Chan *c; - int n; - - c = u->fd[2]; - if(c==0 || (c->mode!=OWRITE && c->mode!=ORDWR)) - return 0; - n = sprint(buf, "%s %d: ", u->p->text, u->p->pid); - n = doprint(buf+n, buf+sizeof(buf), fmt, (&fmt+1)) - buf; - qlock(c); - if(waserror()){ - qunlock(c); - return 0; - } - (*devtab[c->type].write)(c, buf, n); - c->offset += n; - qunlock(c); - poperror(); - return n; -} - -void -prflush(void) -{ - while(printq.printing) - delay(100); -} - -void -echo(int c) -{ - char ch; - static int ctrlt; - - /* - * ^t hack BUG - */ - if(ctrlt == 2){ - ctrlt = 0; - switch(c){ - case 0x14: - break; /* pass it on */ - case 'l': - lancetoggle(); - return; - case 'm': - mntdump(); - return; - case 'p': - DEBUG(); - return; - case 'q': - dumpqueues(); - return; - case 'r': - reset(); - return; - } - }else if(c == 0x14){ - ctrlt++; - return; - } - ctrlt = 0; - if(raw.ref) - return; - if(c == 0x15) - putstrn("^U\n", 3); - else{ - ch = c; - putstrn(&ch, 1); - } -} - -/* - * Put character into read queue at interrupt time. - * Always called splhi from proc 0. - */ -void -kbdchar(int c) -{ - if(kbdq.repeat == 1){ - kbdq.c = c; - kbdq.count = 0; - kbdq.repeat = 2; - } - echo(c); - *kbdq.in++ = c; - if(kbdq.in == kbdq.buf+sizeof(kbdq.buf)) - kbdq.in = kbdq.buf; - if(raw.ref || c=='\n' || c==0x04) - wakeup(&kbdq.r); -} - -void -kbdrepeat(int rep) -{ - if(rep) - kbdq.repeat = 1; - else - kbdq.repeat = 0; -} - -void -kbdclock(void) -{ - if(kbdq.repeat==2 && (++kbdq.count&1)) - kbdchar(kbdq.c); -} - -int -consactive(void) -{ - return printq.printing; -} - -/* - * I/O interface - */ -enum{ - Qdir, - Qcons, - Qcputime, - Qnull, - Qpgrpid, - Qpid, - Qppid, - Qrcons, - Qtime, - Quser, - Qklog, - Qmsec, - Qclock, - Qrs232ctl = STREAMQID(1, Sctlqid), - Qrs232 = STREAMQID(1, Sdataqid), -}; - -Dirtab consdir[]={ - "cons", {Qcons}, 0, 0600, - "cputime", {Qcputime}, 6*NUMSIZE, 0600, - "null", {Qnull}, 0, 0600, - "pgrpid", {Qpgrpid}, NUMSIZE, 0600, - "pid", {Qpid}, NUMSIZE, 0600, - "ppid", {Qppid}, NUMSIZE, 0600, - "rcons", {Qrcons}, 0, 0600, - "rs232", {Qrs232}, 0, 0600, - "rs232ctl", {Qrs232ctl}, 0, 0600, - "time", {Qtime}, NUMSIZE, 0600, - "user", {Quser}, 0, 0600, - "klog", {Qklog}, 0, 0400, - "msec", {Qmsec}, NUMSIZE, 0400, - "clock", {Qclock}, 2*NUMSIZE, 0400, -}; - -#define NCONS (sizeof consdir/sizeof(Dirtab)) - -static int -consgen(Chan *c, Dirtab *tab, int ntab, int i, Dir *dp) -{ - if(tab==0 || i>=ntab) - return -1; - tab += i; - devdir(c, tab->qid, tab->name, tab->length, tab->perm, dp); - return 1; -} - -ulong boottime; /* seconds since epoch at boot */ - -long -seconds(void) -{ - return boottime + TK2SEC(MACHP(0)->ticks); -} - -int -readnum(ulong off, char *buf, ulong n, ulong val, int size) -{ - char tmp[64]; - Op op = (Op){ tmp, tmp+sizeof(tmp), &val, size-1, 0, FUNSIGN|FLONG }; - - numbconv(&op, 10); - tmp[size-1] = ' '; - if(off >= size) - return 0; - if(off+n > size) - n = size-off; - memcpy(buf, tmp+off, n); - return n; -} - -int -readstr(ulong off, char *buf, ulong n, char *str) -{ - int size; - - size = strlen(str); - if(off >= size) - return 0; - if(off+n > size) - n = size-off; - memcpy(buf, str+off, n); - return n; -} - -void -consreset(void) -{ - duartinit(); -} - -void -consinit(void) -{ -} - -Chan* -consattach(char *spec) -{ - return devattach('c', spec); -} - -Chan* -consclone(Chan *c, Chan *nc) -{ - return devclone(c, nc); -} - -int -conswalk(Chan *c, char *name) -{ - return devwalk(c, name, consdir, NCONS, consgen); -} - -void -consstat(Chan *c, char *dp) -{ - switch(c->qid.path){ - case Qrs232: - streamstat(c, dp, "rs232"); - break; - default: - devstat(c, dp, consdir, NCONS, consgen); - break; - } -} - -Chan* -consopen(Chan *c, int omode) -{ - int ch; - - switch(c->qid.path){ - case Quser: - if(omode==(OWRITE|OTRUNC)){ - /* truncate? */ - if(strcmp(u->p->pgrp->user, "bootes") == 0) /* BUG */ - u->p->pgrp->user[0] = 0; - else - error(Eperm); - } - break; - case Qrcons: - if(incref(&raw) == 1){ - lock(&lineq); - while((ch=getc(&kbdq)) != -1){ - *lineq.in++ = ch; - if(lineq.in == lineq.buf+sizeof(lineq.buf)) - lineq.in = lineq.buf; - } - unlock(&lineq); - } - break; - case Qrs232: - case Qrs232ctl: - streamopen(c, &rs232info); - break; - } - return devopen(c, omode, consdir, NCONS, consgen); -} - -void -conscreate(Chan *c, char *name, int omode, ulong perm) -{ - error(Eperm); -} - -void -consclose(Chan *c) -{ - if(c->qid.path==Qrcons && (c->flag&COPEN)) - decref(&raw); - if(c->stream) - streamclose(c); -} - -long -consread(Chan *c, void *buf, long n) -{ - int ch, i, j, k; - ulong l; - uchar *out; - char *cbuf = buf; - char *user; - int userlen; - char tmp[6*NUMSIZE]; - - if(n <= 0) - return n; - switch(c->qid.path&~CHDIR){ - case Qdir: - return devdirread(c, buf, n, consdir, NCONS, consgen); - - case Qrcons: - case Qcons: - qlock(&kbdq); - if(waserror()){ - qunlock(&kbdq); - nexterror(); - } - while(!cangetc(&lineq)){ - sleep(&kbdq.r, isbrkc, &kbdq); - do{ - lock(&lineq); - ch = getc(&kbdq); - if(raw.ref){ - unlock(&lineq); - goto Default; - } - switch(ch){ - case '\b': - if(lineq.in != lineq.out){ - if(lineq.in == lineq.buf) - lineq.in = lineq.buf+sizeof(lineq.buf); - lineq.in--; - } - break; - case 0x15: - lineq.in = lineq.out; - break; - Default: - default: - *lineq.in++ = ch; - if(lineq.in == lineq.buf+sizeof(lineq.buf)) - lineq.in = lineq.buf; - } - unlock(&lineq); - }while(raw.ref==0 && ch!='\n' && ch!=0x04); - } - i = 0; - while(n > 0){ - ch = getc(&lineq); - if(ch==-1 || (raw.ref==0 && ch==0x04)) - break; - i++; - *cbuf++ = ch; - --n; - } - qunlock(&kbdq); - return i; - - case Qrs232: - return streamread(c, buf, n); - - case Qrs232ctl: -#ifdef asdf - if(c->offset) - return 0; - *(char *)buf = duartinputport(); -#endif - return 0; - - case Qcputime: - k = c->offset; - if(k >= sizeof tmp) - return 0; - if(k+n > sizeof tmp) - n = sizeof tmp - k; - /* easiest to format in a separate buffer and copy out */ - for(i=0; i<6 && NUMSIZE*ip->time[i]; - if(i == TReal) - l = MACHP(0)->ticks - l; - l = TK2MS(l); - readnum(0, tmp+NUMSIZE*i, NUMSIZE, l, NUMSIZE); - } - memcpy(buf, tmp+k, n); - return n; - - case Qpgrpid: - return readnum(c->offset, buf, n, u->p->pgrp->pgrpid, NUMSIZE); - - case Qpid: - return readnum(c->offset, buf, n, u->p->pid, NUMSIZE); - - case Qppid: - return readnum(c->offset, buf, n, u->p->parentpid, NUMSIZE); - - case Qtime: - return readnum(c->offset, buf, n, boottime+TK2SEC(MACHP(0)->ticks), NUMSIZE); - - case Qmsec: - return readnum(c->offset, buf, n, TK2MS(MACHP(0)->ticks), NUMSIZE); - case Qclock: - k = c->offset; - if(k >= 2*NUMSIZE) - return 0; - if(k+n > 2*NUMSIZE) - n = 2*NUMSIZE - k; - readnum(0, tmp, NUMSIZE, MACHP(0)->ticks, NUMSIZE); - readnum(0, tmp+NUMSIZE, NUMSIZE, HZ, NUMSIZE); - memcpy(buf, tmp+k, n); - return n; - - case Quser: - return readstr(c->offset, buf, n, u->p->pgrp->user); - - case Qnull: - return 0; - - case Qklog: - qlock(&klogq); - if(waserror()){ - qunlock(&klogq); - nexterror(); - } - while(!cangetc(&klogq)) - sleep(&klogq.r, cangetc, &klogq); - for(i=0; iqid); - return 0; - } -} - -long -conswrite(Chan *c, void *va, long n) -{ - char cbuf[64]; - char buf[256]; - long l, m; - char *a = va; - - switch(c->qid.path){ - case Qcons: - case Qrcons: - /* - * Damn. Can't page fault in putstrn, so copy the data locally. - */ - l = n; - while(l > 0){ - m = l; - if(m > sizeof buf) - m = sizeof buf; - memcpy(buf, a, m); - putstrn(a, m); - a += m; - l -= m; - } - break; - - case Qrs232: - case Qrs232ctl: - n = streamwrite(c, va, n, 1); - break; - - case Qtime: - if(n<=0 || boottime!=0) /* only one write please */ - return 0; - if(n >= sizeof cbuf) - n = sizeof cbuf - 1; - memcpy(cbuf, a, n); - cbuf[n-1] = 0; - boottime = strtoul(a, 0, 0); - break; - - case Quser: - if(u->p->pgrp->user[0]) /* trying to overwrite /dev/user */ - error(Eperm); - if(c->offset >= NAMELEN-1) - return 0; - if(c->offset+n >= NAMELEN-1) - n = NAMELEN-1 - c->offset; - memcpy(u->p->pgrp->user+c->offset, a, n); - u->p->pgrp->user[c->offset+n] = 0; - break; - - case Qcputime: - case Qpgrpid: - case Qpid: - case Qppid: - error(Eperm); - - case Qnull: - break; - default: - error(Egreg); - } - return n; -} - -void -consremove(Chan *c) -{ - error(Eperm); -} - -void -conswstat(Chan *c, char *dp) -{ - error(Eperm); -} - -/* - * rs232 stream routines - * - * A kernel process, rs232kproc, stages blocks to be output and - * packages input bytes into stream blocks to send upstream. - * The process is awakened whenever the interrupt side is almost - * out of bytes to xmit or 1/16 second has elapsed since a byte - * was input. - */ -static int -rs232empty(void *a) -{ - Rs232 *r; - - r = a; - return r->out.w == r->out.r; -} - -static void -rs232output(Rs232 *r) -{ - int next; - Queue *q; - Block *bp; - long l; - - qlock(&r->outlock); - q = r->wq; - - /* - * free old blocks - */ - for(next = r->out.f; next != r->out.r; next = NEXT(next)){ - freeb(r->out.bp[next]); - r->out.bp[next] = 0; - } - r->out.f = next; - - /* - * stage new blocks - * - * if we run into a control block, wait till the queue - * is empty before doing the control. - */ - for(next = NEXT(r->out.w); next != r->out.f; next = NEXT(next)){ - bp = getq(q); - if(bp == 0) - break; - if(bp->type == M_CTL){ - while(!rs232empty(r)) - sleep(&r->r, rs232empty, r); - l = strtoul((char *)(bp->rptr+1), 0, 0); -#ifdef asdf - switch(*bp->rptr){ - case 'B': - case 'b': - duartbaud(l); - break; - case 'D': - case 'd': - duartdtr(l); - break; - case 'K': - case 'k': - duartbreak(l); - break; - case 'W': - case 'w': - if(l>=0 && l<1000) - r->delay = l; - break; - } -#endif -return; - freeb(bp); - break; - } - r->out.bp[r->out.w] = bp; - r->out.w = next; - } - - /* - * start output, the spl's sync with interrupt level - * this wouldn't work on a multi-processor - */ - splhi(); - if(r->started == 0){ - r->started = 1; -panic("rs232o"); -#ifdef asdf - duartstartrs232o(); -#endif - } - spllo(); - qunlock(&r->outlock); -} - -static void -rs232input(Rs232 *r) -{ - Queue *q; - int c; - Block *bp; - - q = RD(r->wq); - bp = 0; - while((c = getc(&r->in)) >= 0){ - if(bp == 0){ - bp = allocb(64); - bp->flags |= S_DELIM; - } - *bp->wptr++ = c; - if(bp->wptr == bp->lim){ - if(QFULL(q->next)) - freeb(bp); - else - PUTNEXT(q, bp); - bp = 0; - } - } - if(bp){ - if(QFULL(q->next)) - freeb(bp); - else - PUTNEXT(q, bp); - } -} - -static int -rs232stuff(void *arg) -{ - Rs232 *r; - - r = arg; - return (r->in.in != r->in.out) || (r->out.r != r->out.w) - || (r->out.f != r->out.r); -} - -static void -rs232kproc(void *a) -{ - Rs232 *r; - - r = a; - for(;;){ - qlock(r); - if(r->wq != 0){ - rs232output(r); - rs232input(r); - } - qunlock(r); - sleep(&r->r, rs232stuff, r); - } -} - -static void -rs232open(Queue *q, Stream *c) -{ - Rs232 *r; - - r = &rs232; - - RD(q)->ptr = r; - WR(q)->ptr = r; - r->wq = WR(q); - - if(r->kstarted == 0){ - r->in.in = r->in.out = r->in.buf; - kproc("rs232", rs232kproc, r); - r->kstarted = 1; - } -} - -static void -rs232close(Queue *q) -{ - Rs232 *r; - - r = q->ptr; - qlock(r); - r->wq = 0; - qunlock(r); -} - -static void -rs232oput(Queue *q, Block *bp) -{ - if(bp->rptr >= bp->wptr) - freeb(bp); - else - putq(q, bp); - rs232output(q->ptr); -} - -static void -rs232timer(Alarm *a) -{ - Rs232 *r; - - r = a->arg; - cancel(a); - r->a = 0; - wakeup(&r->r); -} - -/* - * called by input interrupt. runs splhi - */ -void -rs232ichar(int c) -{ - Rs232 *r; - - r = &rs232; - if(putc(&r->in, c) < 0) - screenputc('^'); - - /* - * pass upstream within 1/16 second - */ - if(r->a==0){ - if(r->delay == 0) - wakeup(&r->r); - else - r->a = alarm(r->delay, rs232timer, r); - } -} - -/* - * called by output interrupt. runs splhi - */ -int -getrs232o(void) -{ - uchar c; - Rs232 *r; - Block *bp; - - r = &rs232; - if(r->out.r == r->out.w){ - r->started = 0; - return -1; - } - bp = r->out.bp[r->out.r]; - c = *bp->rptr++; - if(bp->rptr >= bp->wptr){ - r->out.r = NEXT(r->out.r); - if(r->out.r==r->out.w || NEXT(r->out.r)==r->out.w) - wakeup(&r->r); - } - return c; -} diff --git a/ss/devincon.c b/ss/devincon.c deleted file mode 100644 index 035cbd7059c1705d195dff793672d2a651472b5a..0000000000000000000000000000000000000000 --- a/ss/devincon.c +++ /dev/null @@ -1,883 +0,0 @@ -#include "u.h" -#include "lib.h" -#include "mem.h" -#include "dat.h" -#include "fns.h" -#include "errno.h" -#include "devtab.h" - -#include "io.h" -#include "ureg.h" - -typedef struct Incon Incon; -typedef struct Device Device; - -#define NOW (MACHP(0)->ticks*MS2HZ) - -#define MICROSECOND USED(NOW) - -#define DPRINT if(0) - -enum { - Minstation= 2, /* lowest station # to poll */ - Maxstation= 15, /* highest station # to poll */ - Nincon= 1, /* number of incons */ - Nin= 32, /* Blocks in the input ring */ - Bsize= 128, /* size of an input ring block */ - Mfifo= 0xff /* a mask, must be 2^n-1, must be > Nin */ -}; - -/* - * incon datakit board - */ -struct Device { - uchar cdata; -#define cpolln cdata - uchar u0; - uchar cstatus; - uchar u1; - uchar creset; - uchar u2; - uchar csend; - uchar u3; - ushort data_cntl; /* data is high byte, cntl is low byte */ - uchar status; -#define cmd status - uchar u5; - uchar reset; - uchar u6; - uchar send; - uchar u7; -}; -#define INCON ((Device *)0x40700000) - -struct Incon { - QLock; - - QLock xmit; /* transmit lock */ - QLock reslock; /* reset lock */ - Device *dev; - int station; /* station number */ - int state; /* chip state */ - Rendez r; /* output process */ - Rendez kr; /* input kernel process */ - ushort chan; /* current input channel */ - Queue *rq; /* read queue */ - int kstarted; /* true if kernel process started */ - - /* input blocks */ - - Block *inb[Nin]; - ushort wi; - ushort ri; - - /* statistics */ - - ulong overflow; /* overflow errors */ - ulong pack0; /* channel 0 */ - ulong crc; /* crc errors */ - ulong in; /* bytes in */ - ulong out; /* bytes out */ -}; - -Incon incon[Nincon]; - -/* - * chip state - */ -enum { - Selecting, - Selected, - Notliving, -}; - -/* - * internal chip registers - */ -#define sel_polln 0 -#define sel_station 1 -#define sel_poll0 2 -#define sel_rcv_cnt 3 -#define sel_rcv_tim 4 -#define sel_tx_cnt 5 - -/* - * CSR bits - */ -#define INCON_RUN 0x80 -#define INCON_STOP 0x00 -#define ENABLE_IRQ 0x40 -#define ENABLE_TX_IRQ 0x20 -#define INCON_ALIVE 0x80 -#define TX_FULL 0x10 -#define TX_EMPTY 0x08 -#define RCV_EMPTY 0x04 -#define OVERFLOW 0x02 -#define CRC_ERROR 0x01 - -/* - * polling constants - */ -#define HT_GNOT 0x30 -#define ST_UNIX 0x04 -#define NCHAN 16 - -static void inconkproc(void*); - -/* - * incon stream module definition - */ -static void inconoput(Queue*, Block*); -static void inconstopen(Queue*, Stream*); -static void inconstclose(Queue*); -Qinfo inconinfo = -{ - nullput, - inconoput, - inconstopen, - inconstclose, - "incon" -}; - -int incondebug; - -/* - * set the incon parameters - */ -void -inconset(Incon *ip, int cnt, int del) -{ - Device *dev; - - if (cnt<1 || cnt>14 || del<1 || del>15) - error(Ebadarg); - - dev = ip->dev; - dev->cmd = sel_rcv_cnt | INCON_RUN; - MICROSECOND; - *(uchar *)&dev->data_cntl = cnt; - MICROSECOND; - dev->cmd = sel_rcv_tim | INCON_RUN; - MICROSECOND; - *(uchar *)&dev->data_cntl = del; - MICROSECOND; - dev->cmd = INCON_RUN | ENABLE_IRQ; -} - -/* - * parse a set request - */ -void -inconsetctl(Incon *ip, Block *bp) -{ - char *field[3]; - int n; - int del; - int cnt; - - del = 15; - n = getfields((char *)bp->rptr, field, 3, ' '); - switch(n){ - default: - freeb(bp); - error(Ebadarg); - case 2: - del = strtol(field[1], 0, 0); - if(del<0 || del>15){ - freeb(bp); - error(Ebadarg); - } - /* fall through */ - case 1: - cnt = strtol(field[0], 0, 0); - if(cnt<0 || cnt>15){ - freeb(bp); - error(Ebadarg); - } - } - inconset(ip, cnt, del); - freeb(bp); -} - -static void -nop(void) -{ -} - -/* - * poll for a station number - */ -void -inconpoll(Incon *ip, int station) -{ - ulong timer; - Device *dev; - - dev = ip->dev; - - /* - * get us to a known state - */ - ip->state = Notliving; - dev->cmd = INCON_STOP; - - /* - * try a station number - */ - dev->cmd = sel_station; - *(uchar *)&dev->data_cntl = station; - dev->cmd = sel_poll0; - *(uchar *)&dev->data_cntl = HT_GNOT; - dev->cmd = sel_rcv_cnt; - *(uchar *)&dev->data_cntl = 3; - dev->cmd = sel_rcv_tim; - *(uchar *)&dev->data_cntl = 15; - dev->cmd = sel_tx_cnt; - *(uchar *)&dev->data_cntl = 1; - dev->cmd = sel_polln; - *(uchar *)&dev->data_cntl = 0x00; - *(uchar *)&dev->data_cntl = ST_UNIX; - *(uchar *)&dev->data_cntl = NCHAN; - *(uchar *)&dev->data_cntl = 'g'; - *(uchar *)&dev->data_cntl = 'n'; - *(uchar *)&dev->data_cntl = 'o'; - *(uchar *)&dev->data_cntl = 't'; - dev->cpolln = 0; - - /* - * poll and wait for ready (or 1/4 second) - */ - ip->state = Selecting; - dev->cmd = INCON_RUN | ENABLE_IRQ; - timer = NOW + 250; - while (NOW < timer) { - nop(); - if(dev->status & INCON_ALIVE){ - ip->station = station; - ip->state = Selected; - break; - } - } -} - -/* - * reset the chip and find a new staion number - */ -void -inconrestart(Incon *ip) -{ - Device *dev; - int i; - - if(!canqlock(&ip->reslock)) - return; - - print("inconrestart\n"); - - /* - * poll for incon station numbers - */ - for(i = Minstation; i <= Maxstation; i++){ - inconpoll(ip, i); - if(ip->state == Selected) - break; - } - switch(ip->state) { - case Selecting: - print("incon[%d] not polled\n", ip-incon); - break; - case Selected: - print("incon[%d] station %d\n", ip-incon, ip->station); - inconset(ip, 3, 15); - break; - default: - print("incon[%d] bollixed\n", ip-incon); - break; - } - qunlock(&ip->reslock); -} - -/* - * reset all incon chips. - */ -void -inconreset(void) -{ - int i; - Incon *ip; - - incon[0].dev = INCON; - incon[0].state = Selected; - incon[0].ri = incon[0].wi = 0; -/* inconset(&incon[0], 3, 15); /**/ - for(i=1; icmd = INCON_STOP; - incon[i].ri = incon[i].wi = 0; - } -} - -void -inconinit(void) -{ -} - -/* - * enable the device for interrupts, spec is the device number - */ -Chan* -inconattach(char *spec) -{ - Incon *ip; - int i; - Chan *c; - - i = strtoul(spec, 0, 0); - if(i >= Nincon) - error(Ebadarg); - ip = &incon[i]; - if(ip->state != Selected) - inconrestart(ip); - - c = devattach('i', spec); - c->dev = i; - c->qid.path = CHDIR; - c->qid.vers = 0; - return c; -} - -Chan* -inconclone(Chan *c, Chan *nc) -{ - return devclone(c, nc); -} - -int -inconwalk(Chan *c, char *name) -{ - return devwalk(c, name, 0, 0, streamgen); -} - -void -inconstat(Chan *c, char *dp) -{ - devstat(c, dp, 0, 0, streamgen); -} - -Chan* -inconopen(Chan *c, int omode) -{ - if(c->qid.path == CHDIR){ - if(omode != OREAD) - error(Eperm); - }else - streamopen(c, &inconinfo); - c->mode = openmode(omode); - c->flag |= COPEN; - c->offset = 0; - return c; -} - -void -inconcreate(Chan *c, char *name, int omode, ulong perm) -{ - error(Eperm); -} - -void -inconclose(Chan *c) -{ - if(c->qid.path != CHDIR) - streamclose(c); -} - -long -inconread(Chan *c, void *buf, long n) -{ - return streamread(c, buf, n); -} - -long -inconwrite(Chan *c, void *buf, long n) -{ - return streamwrite(c, buf, n, 0); -} - -void -inconremove(Chan *c) -{ - error(Eperm); -} - -void -inconwstat(Chan *c, char *dp) -{ - error(Eperm); -} - -/* - * the stream routines - */ - -/* - * create the kernel process for input - */ -static void -inconstopen(Queue *q, Stream *s) -{ - Incon *ip; - char name[32]; - - ip = &incon[s->dev]; - sprint(name, "incon%d", s->dev); - q->ptr = q->other->ptr = ip; - ip->rq = q; - kproc(name, inconkproc, ip); -} - -/* - * kill off the kernel process - */ -static int -kNotliving(void *arg) -{ - Incon *ip; - - ip = (Incon *)arg; - return ip->kstarted == 0; -} -static void -inconstclose(Queue * q) -{ - Incon *ip; - - ip = (Incon *)q->ptr; - qlock(ip); - ip->rq = 0; - qunlock(ip); - wakeup(&ip->kr); - sleep(&ip->r, kNotliving, ip); -} - -/* - * free all blocks of a message in `q', `bp' is the first block - * of the message - */ -static void -freemsg(Queue *q, Block *bp) -{ - for(; bp; bp = getq(q)){ - if(bp->flags & S_DELIM){ - freeb(bp); - return; - } - freeb(bp); - } -} - -/* - * output a block - * - * the first 2 bytes of every message are the channel number, - * low order byte first. the third is a possible trailing control - * character. - */ -void -inconoput(Queue *q, Block *bp) -{ - Device *dev; - Incon *ip; - ulong end; - int chan; - int ctl; - int n, size; - - ip = (Incon *)q->ptr; - - if(bp->type != M_DATA){ - if(streamparse("inconset", bp)) - inconsetctl(ip, bp); - else - freeb(bp); - return; - } - - /* - * get a whole message before handing bytes to the device - */ - if(!putq(q, bp)) - return; - - /* - * one transmitter at a time - */ - qlock(&ip->xmit); - dev = ip->dev; - - /* - * parse message - */ - bp = getq(q); - if(bp->wptr - bp->rptr < 3){ - freemsg(q, bp); - qunlock(&ip->xmit); - return; - } - chan = bp->rptr[0] | (bp->rptr[1]<<8); - ctl = bp->rptr[2]; - bp->rptr += 3; - if(chan<=0) - print("bad channel %d\n", chan); - - if(incondebug) - print("->(%d)%uo %d\n", chan, ctl, bp->wptr - bp->rptr); - - /* - * make sure there's an incon out there - */ - if(!(dev->status&INCON_ALIVE) || ip->state==Notliving){ - inconrestart(ip); - freemsg(q, bp); - qunlock(&ip->xmit); - return; - } - - /* - * send the 8 bit data - */ - for(;;){ - /* - * spin till there is room - */ - for(end = NOW+1000; dev->status & TX_FULL;){ - nop(); /* make sure we don't optimize too much */ - if(NOW > end){ - print("incon output stuck\n"); - freemsg(q, bp); - qunlock(&ip->xmit); - return; - } - } - - /* - * put in next packet - */ - n = bp->wptr - bp->rptr; - if(n > 16) - n = 16; - size = n; - dev->cdata = chan; - while(n--){ - *(uchar *)&dev->data_cntl = *bp->rptr++; - } - - /* - * get next block - */ - if(bp->rptr >= bp->wptr){ - if(bp->flags & S_DELIM){ - freeb(bp); - break; - } - freeb(bp); - bp = getq(q); - if(bp==0) - break; - } - - /* - * end packet - */ - dev->cdata = 0; - } - - /* - * send the control byte if there is one - */ - if(ctl){ - if(size >= 16){ - dev->cdata = 0; - MICROSECOND; - for(end = NOW+1000; dev->status & TX_FULL;){ - nop(); /* make sure we don't optimize too much */ - if(NOW > end){ - print("incon output stuck\n"); - freemsg(q, bp); - qunlock(&ip->xmit); - return; - } - } - dev->cdata = chan; - MICROSECOND; - } - if(dev->status & TX_FULL) - print("inconfull\n"); - dev->cdata = ctl; - } - MICROSECOND; - dev->cdata = 0; - - qunlock(&ip->xmit); - return; -} - -/* - * return true if the raw fifo is non-empty - */ -static int -notempty(void *arg) -{ - Incon *ip; - - ip = (Incon *)arg; - return ip->ri!=ip->wi; -} - -/* - * Read bytes from the raw input circular buffer. - */ -static void -inconkproc(void *arg) -{ - Incon *ip; - Block *bp, *nbp; - int i; - int locked; - - ip = (Incon *)arg; - ip->kstarted = 1; - - /* - * create a number of blocks for input - */ - for(i = 0; i < Nin; i++){ - bp = ip->inb[i] = allocb(Bsize); - bp->wptr += 3; - } - - locked = 0; - if(waserror()){ - if(locked) - qunlock(ip); - ip->kstarted = 0; - wakeup(&ip->r); - return; - } - - for(;;){ - /* - * sleep if input fifo empty - */ - sleep(&ip->kr, notempty, ip); - - /* - * die if the device is closed - */ - USED(locked); - qlock(ip); - locked = 1; - if(ip->rq == 0){ - qunlock(ip); - ip->kstarted = 0; - wakeup(&ip->r); - poperror(); - return; - } - - /* - * send blocks upstream and stage new blocks. if the block is small - * (< 64 bytes) copy into a smaller buffer. - */ - while(ip->ri != ip->wi){ - bp = ip->inb[ip->ri]; - PUTNEXT(ip->rq, bp); - bp = ip->inb[ip->ri] = allocb(Bsize); - bp->wptr += 3; - ip->ri = (ip->ri+1)%Nin; - } - USED(locked); - qunlock(ip); - locked = 0; - } -} - -/* - * drop a single packet - */ -static void -droppacket(Device *dev) -{ - int i; - int c; - - for(i = 0; i < 17; i++){ - c = dev->data_cntl; - if(c==0) - break; - } -} - -/* - * flush the input fifo - */ -static void -flushfifo(Device *dev) -{ - while(!(dev->status & RCV_EMPTY)) - droppacket(dev); -} - -/* - * advance the queue. if we've run out of staged input blocks, - * drop the packet and return 0. otherwise return the next input - * block to fill. - */ -static Block * -nextin(Incon *ip, unsigned int c) -{ - Block *bp; - int next; - - bp = ip->inb[ip->wi]; - bp->base[0] = ip->chan; - bp->base[1] = ip->chan>>8; - bp->base[2] = c; - if(incondebug) - print("<-(%d)%uo %d\n", ip->chan, c, bp->wptr-bp->rptr); - - next = (ip->wi+1)%Nin; - if(next == ip->ri){ - bp->wptr = bp->base+3; - return bp; - } - ip->wi = next; - - return ip->inb[ip->wi]; -} - -/* - * read the packets from the device into the staged input blocks. - * we have to do this at interrupt tevel to turn off the interrupts. - */ -static void -rdpackets(Incon *ip) -{ - Block *bp; - unsigned int c; - Device *dev; - uchar *p; - int first = ip->wi; - - dev = ip->dev; - bp = ip->inb[ip->wi]; - if(bp==0){ - flushfifo(ip->dev); - return; - } - p = bp->wptr; - while(!(dev->status & RCV_EMPTY)){ - /* - * get channel number - */ - c = (dev->data_cntl)>>8; - if(c == 0){ - droppacket(dev); - continue; - } - if(ip->chan != c){ - if(p - bp->rptr > 3){ - bp->wptr = p; - bp = nextin(ip, 0); - p = bp->wptr; - } - ip->chan = c; - } - - /* - * null byte marks end of packet - */ - for(;;){ - if((c=dev->data_cntl)&1) { - /* - * data byte, put in local buffer - */ - *p++ = c>>8; - } else if (c>>=8) { - /* - * control byte ends block - */ - bp->wptr = p; - bp = nextin(ip, c); - p = bp->wptr; - } else { - /* end of packet */ - break; - } - } - - /* - * pass a block on if it doesn't have room for one more - * packet. this way we don't have to check per byte. - */ - if(p + 16 > bp->lim){ - bp->wptr = p; - bp = nextin(ip, 0); - p = bp->wptr; - } - } - bp->wptr = p; - if(bp->wptr != bp->base+3) - nextin(ip, 0); - - if(first != ip->wi)/**/ - wakeup(&ip->kr); -} - -/* - * Receive an incon interrupt. One entry point - * for all types of interrupt. Until we figure out - * how to use more than one incon, this routine only - * is for incon[0]. - */ -inconintr(Ureg *ur) -{ - uchar status; - Incon *ip; - - ip = &incon[0]; - - status = ip->dev->status; - if(!(status & RCV_EMPTY)) - rdpackets(ip); - - /* check for exceptional conditions */ - if(status&(OVERFLOW|CRC_ERROR)){ - if(status&OVERFLOW) - ip->overflow++; - if(status&CRC_ERROR) - ip->crc++; - } - - /* see if it died underneath us */ - if(!(status&INCON_ALIVE)){ - switch(ip->state){ - case Selected: - ip->dev->cmd = INCON_STOP; - print("Incon died\n"); - break; - case Selecting: - print("rejected\n"); - break; - default: - ip->dev->cmd = INCON_STOP; - break; - } - ip->state = Notliving; - } -} - -incontoggle() -{ - incondebug ^= 1; -} diff --git a/ss/devkprof.c b/ss/devkprof.c deleted file mode 100644 index 76ca8bb1156cf87b79a44da4500a75cbab4f20d6..0000000000000000000000000000000000000000 --- a/ss/devkprof.c +++ /dev/null @@ -1,177 +0,0 @@ -#include "u.h" -#include "lib.h" -#include "mem.h" -#include "dat.h" -#include "fns.h" -#include "errno.h" - -#include "devtab.h" - -#define MAXPC (100*1024L) -#define RES 8 -#define LRES 3 -#define NBUF (MAXPC>>LRES) - -long timerbuf[NBUF]; - -enum{ - Kprofdirqid, - Kprofdataqid, - Kprofstartqid, - Kprofstartclrqid, - Kprofstopqid, - Nkproftab=Kprofstopqid, - Kprofmaxqid, -}; -Dirtab kproftab[Nkproftab]={ - "kpdata", Kprofdataqid, NBUF*sizeof timerbuf[0], 0600, - "kpstart", Kprofstartqid, 0, 0600, - "kpstartclr", Kprofstartclrqid, 0, 0600, - "kpstop", Kprofstopqid, 0, 0600, -}; - -void kproftimer(ulong); - -void -kprofreset(void) -{ - kprofp = kproftimer; -} - -void -kprofinit(void) -{ - extern void *etext; - if((((unsigned long)&etext)-KTZERO)>MAXPC) - print("kernel profiling limited to %lud\n", MAXPC); -} - -Chan * -kprofattach(char *spec) -{ - return devattach('t', spec); -} -Chan * -kprofclone(Chan *c, Chan *nc) -{ - return devclone(c, nc); -} - -int -kprofwalk(Chan *c, char *name) -{ - return devwalk(c, name, kproftab, (long)Nkproftab, devgen); -} - -void -kprofstat(Chan *c, char *db) -{ - devstat(c, db, kproftab, (long)Nkproftab, devgen); -} - -Chan * -kprofopen(Chan *c, int omode) -{ - if(c->qid == CHDIR){ - if(omode != OREAD) - error(0, Eperm); - } - c->mode = openmode(omode); - c->flag |= COPEN; - c->offset = 0; - return c; -} - -void -kprofcreate(Chan *c, char *name, int omode, ulong perm) -{ - error(0, Eperm); -} - -void -kprofremove(Chan *c) -{ - error(0, Eperm); -} - -void -kprofwstat(Chan *c, char *dp) -{ - error(0, Eperm); -} - -void -kprofclose(Chan *c) -{ -} - -void -kprofuserstr(Error *e, char *buf) -{ - consuserstr(e, buf); -} - -void -kproferrstr(Error *e, char *buf) -{ - rooterrstr(e, buf); -} - -long -kprofread(Chan *c, void *a, long n) -{ - switch((int)(c->qid&~CHDIR)){ - case Kprofdirqid: - return devdirread(c, a, n, kproftab, Nkproftab, devgen); - case Kprofdataqid: - if(c->offset >= NBUF*sizeof timerbuf[0]){ - n = 0; - break; - } - if(c->offset+n > NBUF*sizeof timerbuf[0]) - n = NBUF*sizeof timerbuf[0]-c->offset; - memcpy(a, ((char *)timerbuf)+c->offset, n); - break; - default: - n=0; - break; - } - return n; -} - -long -kprofwrite(Chan *c, char *a, long n) -{ - switch((int)(c->qid&~CHDIR)){ - case Kprofstartclrqid: - memset((char *)timerbuf, 0, NBUF*sizeof timerbuf[0]); - case Kprofstartqid: - duartstarttimer(); - break; - case Kprofstopqid: - duartstoptimer(); - break; - default: - error(0, Ebadusefd); - } - return n; -} - -void -kproftimer(ulong pc) -{ - /* - * if the pc is coming out of slplo pr splx, then use - * the pc saved when we went splhi. - */ - if(pc>=(ulong)spllo && pc<=(ulong)spldone) - pc = m->splpc; - - timerbuf[0]++; - if(KTZERO<=pc && pc>= LRES; - timerbuf[pc]++; - } else - timerbuf[1]++; -} diff --git a/ss/errno.h b/ss/errno.h deleted file mode 100644 index e178bad2c7eda9a482d6070895c959f4c3ee8408..0000000000000000000000000000000000000000 --- a/ss/errno.h +++ /dev/null @@ -1,64 +0,0 @@ -enum{ - Enevermind, /* never mind */ - Enofd, /* no free file descriptors */ - Ebadfd, /* fd out of range or not open */ - Ebadusefd, /* inappropriate use of fd */ - Ebadarg, /* bad arg in system call */ - Enonexist, /* file does not exist */ - Efilename, /* file name syntax */ - Ebadchar, /* bad character in file name */ - Ebadsharp, /* unknown device in # filename */ - Ebadexec, /* a.out header invalid */ - Eioload, /* i/o error in demand load */ - Eperm, /* permission denied */ - Enotdir, /* not a directory */ - Enochild, /* no living children */ - Enoseg, /* no free segments */ - Ebadmount, /* inconsistent mount */ - Enomount, /* mount table full */ - Enomntdev, /* no free mount devices */ - Eshutdown, /* mounted device shut down */ - Einuse, /* device or object already in use */ - Eio, /* i/o error */ - Eisdir, /* file is a directory */ - Ebaddirread, /* directory read not quantized */ - Esegaddr, /* illegal segment addresses or size */ - Enoenv, /* no free environment resources */ - Eprocdied, /* process exited */ - Enocreate, /* mounted directory forbids creation */ - Enotunion, /* attempt to union with non-mounted directory */ - Emount, /* inconsistent mount */ - Enosrv, /* no free server slots */ - Enoqueue, /* no free stream queues */ - Ebadld, /* illegal line discipline */ - Enostream, /* no free stream heads */ - Etoobig, /* read or write too large */ - Etoosmall, /* read or write too small */ - Ehungup, /* write to hungup stream */ - Ebadnet, /* illegal network address */ - Enoifc, /* bad interface or no free interface slots */ - Enodev, /* no free devices */ - Ebadctl, /* bad process or stream control request */ - Enonote, /* note overflow */ - Eintr, /* interrupted */ - Edestbusy, /* datakit destination busy */ - Enetbusy, /* datakit controller busy */ - Edestotl, /* datakit destination out to lunch */ - Enetotl, /* datakit controller out to lunch */ - Erejected, /* datakit destination rejected call */ - Ebadblt, /* bad bitblt or bitmap request */ - Enobitmap, /* out of bitmap descriptors */ - Enobitstore, /* out of bitmap storage */ - Ebadbitmap, /* unallocated bitmap */ - Ebadfont, /* unallocated font */ - Enofont, /* out of font descriptors */ - Eshortmsg, /* short message */ - Ebadmsg, /* format error or mismatch in message */ - Ebadcnt, /* read count greater than requested */ - Enovmem, /* virtual memory allocation failed */ - Enoasync, /* out of async stream modules */ - Enopipe, /* out of pipes */ - Enofilsys, /* out of filsys resources */ - Enoannounce, /* listening on an unannounced network connection */ - Egreg, /* ken has implemented datakit */ -}; diff --git a/ss/fcall.h b/ss/fcall.h deleted file mode 100644 index f81ca5ea8133853dfb67ff92a623e5df4a22eb1d..0000000000000000000000000000000000000000 --- a/ss/fcall.h +++ /dev/null @@ -1,88 +0,0 @@ -typedef struct Fcall Fcall; - -struct Fcall -{ - char type; - short fid; - short tag; - union - { - struct - { - short newfid; /* T-Clone */ - short oldtag; /* T-Flush */ - Qid qid; /* R-Attach, R-Walk, R-Open, R-Create */ - }; - struct - { - char uname[NAMELEN]; /* T-Attach */ - char aname[NAMELEN]; /* T-Attach */ - char auth[NAMELEN]; /* T-Attach */ - }; - struct - { - char ename[ERRLEN]; /* R-Error */ - }; - struct - { - long perm; /* T-Create */ - char name[NAMELEN]; /* T-Walk, T-Create */ - char mode; /* T-Create, T-Open */ - }; - struct - { - long offset; /* T-Read, T-Write */ - long count; /* T-Read, T-Write, R-Read */ - char *data; /* T-Write, R-Read */ - }; - struct - { - char stat[DIRLEN]; /* T-Wstat, R-Stat */ - }; - }; -}; - -#define MAXFDATA 8192 - -enum -{ - Tnop = 50, - Rnop, - Tsession = 52, - Rsession, -/* Terror = 54, illegal */ - Rerror = 55, - Tflush = 56, - Rflush, - Tattach = 58, - Rattach, - Tclone = 60, - Rclone, - Twalk = 62, - Rwalk, - Topen = 64, - Ropen, - Tcreate = 66, - Rcreate, - Tread = 68, - Rread, - Twrite = 70, - Rwrite, - Tclunk = 72, - Rclunk, - Tremove = 74, - Rremove, - Tstat = 76, - Rstat, - Twstat = 78, - Rwstat, -}; - -int convM2S(char*, Fcall*, int); -int convS2M(Fcall*, char*); - -int convM2D(char*, Dir*); -int convD2M(Dir*, char*); - -int fcallconv(void *, int, int, int, int); -int dirconv(void *, int, int, int, int); diff --git a/ss/lib.h b/ss/lib.h deleted file mode 100644 index f3bbfe09695202b9371f0acbea8543106a9f2b0b..0000000000000000000000000000000000000000 --- a/ss/lib.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * functions (possibly) linked in, complete, from libc. - */ - -/* - * mem routines - */ -extern void *memccpy(void*, void*, int, long); -extern void *memset(void*, int, long); -extern int memcmp(void*, void*, long); -extern void *memcpy(void*, void*, long); -extern void *memchr(void*, int, long); - -/* - * string routines - */ -extern char *strcat(char*, char*); -extern char *strchr(char*, char); -extern int strcmp(char*, char*); -extern char *strcpy(char*, char*); -extern char *strncat(char*, char*, long); -extern char *strncpy(char*, char*, long); -extern int strncmp(char*, char*, long); -extern long strlen(char*); - -/* - * print routines - */ - -#define FUNSIGN 4 -#define FSHORT 2 -#define FLONG 1 - -typedef struct Op Op; -struct Op -{ - char *p; - char *ep; - void *argp; - int f1; - int f2; - int f3; -}; -extern void strconv(char*, Op*, int, int); -extern int numbconv(Op*, int); -extern char *doprint(char*, char*, char*, void*); -extern int fmtinstall(char, int (*)(Op*)); -extern int sprint(char*, char*, ...); -extern int print(char*, ...); - -/* - * one-of-a-kind - */ -extern long strtol(char*, char**, int); -extern ulong strtoul(char*, char**, int); -extern long etext; -extern long edata; -extern long end; -/* - * Syscall data structures - */ - -#define MORDER 0x0003 /* mask for bits defining order of mounting */ -#define MREPL 0x0000 /* mount replaces object */ -#define MBEFORE 0x0001 /* mount goes before others in union directory */ -#define MAFTER 0x0002 /* mount goes after others in union directory */ -#define MCREATE 0x0004 /* permit creation in mounted directory */ -#define MMASK 0x0007 /* all bits on */ - -#define OREAD 0 /* open for read */ -#define OWRITE 1 /* write */ -#define ORDWR 2 /* read and write */ -#define OEXEC 3 /* execute, == read but check execute permission */ -#define OTRUNC 16 /* or'ed in (except for exec), truncate file first */ -#define OCEXEC 32 /* or'ed in, close on exec */ -#define ORCLOSE 64 /* or'ed in, remove on close */ - -typedef struct Qid Qid; -typedef struct Dir Dir; -typedef struct Waitmsg Waitmsg; - -#define ERRLEN 64 -#define DIRLEN 116 -#define NAMELEN 28 - -struct Qid -{ - ulong path; - ulong vers; -}; - -struct Dir -{ - char name[NAMELEN]; - char uid[NAMELEN]; - char gid[NAMELEN]; - Qid qid; - ulong mode; - long atime; - long mtime; - Length; - short type; - short dev; -}; - -struct Waitmsg -{ - int pid; /* of loved one */ - int status; /* unused; a placeholder */ - ulong time[3]; /* of loved one */ - char msg[ERRLEN]; -}; diff --git a/ss/lock.c b/ss/lock.c deleted file mode 100644 index 3ba6565133fcfbac190384591576de07ca2bd0d9..0000000000000000000000000000000000000000 --- a/ss/lock.c +++ /dev/null @@ -1,100 +0,0 @@ -#include "u.h" -#include "lib.h" -#include "mem.h" -#include "dat.h" -#include "fns.h" - -#define PCOFF -1 - -void -lock(Lock *l) -{ - Lock *ll = l; /* so can take address of l */ - int i; - - /* - * Try the fast grab first - */ - if(swap1(&ll->key) == 0){ - ll->pc = ((ulong*)&l)[PCOFF]; - return; - } - for(i=0; i<10000000; i++) - if(swap1(&ll->key) == 0){ - ll->pc = ((ulong*)&l)[PCOFF]; - return; - } - ll->key = 0; -dumpstack(); - panic("lock loop %lux pc %lux held by pc %lux\n", l, ((ulong*)&l)[PCOFF], l->pc); -} - -int -canlock(Lock *l) -{ - Lock *ll = l; /* so can take address of l */ - - if(swap1(&ll->key) == 0){ - ll->pc = ((ulong*)&l)[PCOFF]; - return 1; - } - return 0; -} - -void -unlock(Lock *l) -{ - l->pc = 0; - l->key = 0; -} - -void -qlock(QLock *q) -{ - Proc *p; - - if(canlock(&q->use)) - return; - lock(&q->queue); - if(canlock(&q->use)){ - unlock(&q->queue); - return; - } - p = q->tail; - if(p == 0) - q->head = u->p; - else - p->qnext = u->p; - q->tail = u->p; - u->p->qnext = 0; - u->p->state = Queueing; -/* u->p->qlock = q; /* DEBUG */ - unlock(&q->queue); - sched(); -} - -int -canqlock(QLock *q) -{ - return canlock(&q->use); -} - -void -qunlock(QLock *q) -{ - Proc *p; - - lock(&q->queue); -/* u->p->qlock = 0; /* DEBUG */ - if(q->head){ - p = q->head; - q->head = p->qnext; - if(q->head == 0) - q->tail = 0; - unlock(&q->queue); - ready(p); - }else{ - unlock(&q->use); - unlock(&q->queue); - } -} diff --git a/ss/uart.c b/ss/uart.c deleted file mode 100644 index 7cadbc74effdc373bfa8a19e2b2358ec11ca220b..0000000000000000000000000000000000000000 --- a/ss/uart.c +++ /dev/null @@ -1,155 +0,0 @@ -#include "u.h" -#include "lib.h" -#include "mem.h" -#include "dat.h" -#include "fns.h" - -enum -{ - /* wr 0 */ - ResExtPend= 2<<3, - ResTxPend= 5<<3, - ResErr= 6<<3, - - /* wr 1 */ - TxIntEna= 1<<1, - RxIntDis= 0<<3, - RxIntFirstEna= 1<<3, - RxIntAllEna= 2<<3, - - /* wr 3 */ - RxEna= 1, - Rx5bits= 0<<6, - Rx7bits= 1<<6, - Rx6bits= 2<<6, - Rx8bits= 3<<6, - - /* wr 4 */ - SyncMode= 0<<2, - Rx1stop= 1<<2, - Rx1hstop= 2<<2, - Rx2stop= 3<<2, - X16= 1<<6, - - /* wr 5 */ - TxRTS= 1<<1, - TxEna= 1<<3, - TxBreak= 1<<4, - TxDTR= 1<<7, - Tx5bits= 0<<5, - Tx7bits= 1<<5, - Tx6bits= 2<<5, - Tx8bits= 3<<5, - - /* wr 9 */ - IntEna= 1<<3, - ResetB= 1<<6, - ResetA= 2<<6, - HardReset= 3<<6, - - /* wr 11 */ - TRxCOutBR= 2, - TxClockBR= 2<<3, - RxClockBR= 2<<5, - TRxCOI= 1<<2, - - /* wr 14 */ - BREna= 1, - BRSource= 2, - - /* rr 0 */ - RxReady= 1, - TxReady= 1<<2, - RxDCD= 1<<3, - RxCTS= 1<<5, - RxBreak= 1<<7, - - /* rr 3 */ - ExtPendB= 1, - TxPendB= 1<<1, - RxPendB= 1<<2, - ExtPendA= 1<<3, - TxPendA= 1<<4, - RxPendA= 1<<5, -}; - -typedef struct SCC SCC; -struct SCC -{ - uchar *ptr; /* command/pointer register in Z8530 */ - uchar *data; /* data register in Z8530 */ -}; -SCC scc[2]; -#define SCCV (0x0000) /* was 0x0F000000-0x1000 */ -#define SCCP 0xF1000000 - -#define PRINTING 0x4 -#define MASK 0x1 - -void -sccsetup(void) -{ - ulong pte; - - pte = PTEVALID | - PTEWRITE | - PTEKERNEL | - PTENOCACHE | - PTEIO | - ((SCCP>>PGSHIFT)&0xFFFF) - ; - putpmeg(SCCV, pte); - scc[0].ptr = (uchar*)(SCCV+0); - scc[0].data = (uchar*)(SCCV+2); - scc[1].ptr = (uchar*)(SCCV+4); - scc[1].data = (uchar*)(SCCV+6); -} - -/* - * Access registers using the pointer in register 0. - * This is a bit stupid when accessing register 0. - */ -void -sccwrreg(SCC *sp, int addr, int value) -{ - *sp->ptr = addr; -} - -ushort -sccrdreg(SCC *sp, int addr) -{ - *sp->ptr = addr; - return *sp->ptr; -} - - -/* - * non-spooling non-interrupting get and put - */ -int -sccgetc(void) -{ - uchar ch; - SCC *sp; - - sp = &scc[1]; - while((*sp->ptr&RxReady) == 0) - ; - return *sp->data; -} -void -sccputc(int ch) -{ - SCC *sp; - - sp = &scc[1]; - while((*sp->ptr&TxReady)==0) - ; - *sp->data = ch; -} -void -sccputs(char *s) -{ - while(*s) - sccputc(*s++); -} diff --git a/ss/ureg.h b/ss/ureg.h deleted file mode 100644 index 8433eec95d4b915d80609cf8c6ad2ab46fda7e21..0000000000000000000000000000000000000000 --- a/ss/ureg.h +++ /dev/null @@ -1,45 +0,0 @@ -struct Ureg -{ - ulong r0; /* unnecessary; just for symmetry */ - union{ - ulong sp; /* r1 */ - ulong usp; /* r1 */ - ulong r1; - }; - ulong r2; - ulong r3; - ulong r4; - ulong r5; - ulong r6; - ulong r7; - ulong r8; - ulong r9; - ulong r10; - ulong r11; - ulong r12; - ulong r13; - ulong r14; - ulong r15; - ulong r16; - ulong r17; - ulong r18; - ulong r19; - ulong r20; - ulong r21; - ulong r22; - ulong r23; - ulong r24; - ulong r25; - ulong r26; - ulong r27; - ulong r28; - ulong r29; - ulong r30; - ulong r31; - ulong y; - ulong tbr; - ulong psr; - ulong npc; - ulong pc; - ulong pad; /* so structure is double word aligned */ -};