~kris/9p

9hist

b02f37fe0b2146f4bf9c3b9390e2b463e3d04276 — David du Colombier 34 years ago 06c52a4
Plan 9 from Bell Labs 1991-09-27
15 files changed, 4069 insertions(+), 3971 deletions(-)

D gnot/boot.c
M gnot/boot.h
M gnot/dat.h
M gnot/fns.h
M gnot/main.c
M pc/devfloppy.c
M pc/main.c
M pc/vga.c
M port/devenv.c
M port/devscsi.c
M port/devwren.c
M port/fault.c
M port/portfns.h
M power/main.c
M ss/main.c
D gnot/boot.c => gnot/boot.c +0 -832
@@ 1,832 0,0 @@
#include <u.h>
#include <libc.h>
#include <fcall.h>

#define DEFSYS "Nfs"

enum
{
	CtrlD	= 4,
	Cr	= 13,
};

char	*net;
char	*netdev;

Fcall	hdr;
char	*scmd;
char 	bootdevice;
int	authenticated;

char	bootline[64];
char	bootuser[NAMELEN];
char	password[NAMELEN];
char	username[NAMELEN];
char	sys[NAMELEN];
char	buf[4*1024];

int format;
int manual;

/*
 *  predeclared
 */
void	bootparams(void);
int	outin(char *, char *, int);
void	prerror(char *);
void	error(char *);
int	dkdial(char *);
void	nop(int);
void	session(int);
int	cache(int);
void	sendmsg(int, char *);
void	connect(int);
void	kill(int);
void	passwd(void);
int	authenticate(int);
void	termtype(char*);
void	setuser(char*);
int	fileserver(void);
int	inconfs(void);
int	asyncfs(char*);
int	localfs(int);
void	dkconfig(int);
void	srvcreate(char*, int);
void	settime(int);

/*
 * Ethernet type stations boot over ether or use dk via RS232.
 */
main(int argc, char *argv[])
{
	int fd;
	int fromserver;

	open("#c/cons", OREAD);
	open("#c/cons", OWRITE);
	open("#c/cons", OWRITE);
	termtype("at&t gnot 1");

	/*
	 *  get parameters passed by boot rom to kernel
	 */
	bootparams();

	/*
	 *  prompt for user if the boot rom didn't authenticate
	 */
	if(!authenticated){
		strcpy(username, "none");
		outin("user", username, sizeof(username));
	} else {
		strcpy(username, bootuser);
	}
	setuser(username);

	/*
	 *  make the root a union
	 */
	if(bind("/", "/", MREPL) < 0)
		error("bind");

	/*
	 *  connect to file systems
	 */
	switch(fileserver()){
	case 'a':
		asyncfs("B19200");
		localfs(0);
		fromserver = 1;
		break;
	case 'A':
		asyncfs("B9600");
		localfs(0);
		fromserver = 1;
		break;
	case 'i':
		inconfs();
		localfs(0);
		fromserver = 1;
		break;
	default:
		localfs(1);
		fromserver = 0;
		break;
	}
	settime(fromserver);

	/*
	 *  put a default net into the name space
	 */
	if(netdev){
		sprint(buf, "/net/%s", net);
		bind(netdev, buf, MREPL);
		bind(netdev, "/net/net", MREPL);
	}
	if(net){
		sprint(buf, "/lib/netaddr.%s", net);
		bind(buf, "/lib/netaddr.net", MREPL);
	}

	if(manual)
		execl("/68020/init", "init", "-m", 0);
	else
		execl("/68020/init", "init", 0);
	error("/68020/init");
}

/*
 *  read arguments passed by kernel as
 *  environment variables
 */
void
bootparams(void)
{
	int f;
	char *cp;

	format = 0;
	manual = 0;
	f = open("#e/bootline", OREAD);
	if(f >= 0){
		read(f, bootline, sizeof(bootline)-1);
		close(f);
		cp = bootline;
		while(cp = strchr(cp, ' ')){
			if(*++cp != '-')
				continue;
			while(*cp && *cp!=' ')
				switch(*cp++){
				case 'f':
					format = 1;
					break;
				case 'm':
					manual = 1;
					break;
				}
		}
	}
	f = open("#e/bootdevice", OREAD);
	if(f >= 0){
		read(f, &bootdevice, 1);
		close(f);
	}
	f = open("#e/bootuser", OREAD);
	if(f >= 0){
		read(f, &bootuser, sizeof(bootuser));
		close(f);
	}
	f = open("#e/bootserver", OREAD);
	if(f >= 0){
		read(f, sys, sizeof(sys));
		close(f);
	} else
		strcpy(sys, DEFSYS);
	if(bootdevice != 's')
		authenticated = 1;
}

/*
 *  set flavor of terminal
 */
void
termtype(char *t)
{
	int fd;

	fd = create("#e/terminal", 1, 0666);
	if(fd < 0)
		error("terminal");
	if(write(fd, t, strlen(t)) < 0)
		error("terminal");
	close(fd);
}

/*
 *  get user and password if the
 *  boot rom didn't authenticate
 */
void
setuser(char *name)
{
	int fd;

	/*
	 *  set user id
	 */
	fd = open("#c/user", OWRITE|OTRUNC);
	if(fd >= 0){
		write(fd, username, strlen(username));
		close(fd);
	}
}

#define FS "remote fs is (9)600 serial, (1)9200 serial, (n)ot used"
/*
 *  if we've booted off the disk, figure out where to get the
 *  file service from
 */
int
fileserver(void)
{
	char reply[4];

	if(bootdevice != 's')
		return bootdevice;

	for(;;){
		strcpy(reply, "n");
		strcpy(sys, DEFSYS);
		outin(FS, reply, sizeof(reply));
		switch(reply[0]){
		case 'i':
			return 'i';
		case 'n':
			return 'n';
		case '1':
			return 'a';
		case '9':
			return 'A';
		}
	}
}

/*
 *  configure the datakit
 */
void
dkconfig(int cfd)
{
	sendmsg(cfd, "push dkmux");
	if(authenticated)
		sendmsg(cfd, "config 1 16 norestart");
	else
		sendmsg(cfd, "config 1 16 restart");

	/*
	 *  fork a process to hold the device channel open
	 *  forever
	 */
	switch(fork()){
	case -1:
		break;
	case 0:
		for(;;)
			sleep(60*1000);
		exit(0);
	default:
		close(cfd);
		break;
	}
}

int
dkdial(char *arg)
{
	int fd, cfd;
	int i;
	long n;

	sprint(buf, "connect %s", arg);
	n = strlen(buf);

	for(i = 0; ; i++){
		fd = open("#k/2/data", ORDWR);
		if(fd < 0)
			error("opening #k/2/data");
		cfd = open("#k/2/ctl", ORDWR);
		if(cfd < 0)
			error("opening #k/2/ctl");

		if(write(cfd, buf, n)==n && authenticate(fd)==0)
			break;
		if(i == 5)
			return -1;
		close(fd);
		close(cfd);
		sleep(500);
	}
	sendmsg(cfd, "init");
	close(cfd);
	net = "dk";
	netdev = "#k";
	return fd;	
}

/*
 *  connect to a file system over the serial line
 */
int
asyncfs(char *baud)
{
	int fd, cfd, dfd;
	char reply[4];

	if(!authenticated){
		passwd();
		outin("server", sys, sizeof(sys));
	}

	cfd = open("#t/tty0ctl", ORDWR);
	if(cfd < 0)
		error("opening #t/tty0ctl");
	sendmsg(cfd, baud);

	dfd = open("#t/tty0", ORDWR);
	if(dfd < 0)
		error("opening #t/tty0");
	connect(dfd);
	close(dfd);
	sendmsg(cfd, "push async");

	dkconfig(cfd);
	for(;;){
		fd = dkdial(sys);
		if(fd >= 0)
			break;
		print("can't connect, retrying...\n");
		sleep(1000);
	}

	nop(fd);
	session(fd);
	fd = cache(fd);
	srvcreate(sys, fd);
	srvcreate("boot", fd);
	if(mount(fd, "/", MAFTER|MCREATE, "", "") < 0)
		error("mount");
	close(fd);

	return 0;
}

/*
 *  connect to a file system over the incon
 */
int
inconfs(void)
{
	int fd, cfd, dfd;
	char reply[4];

	if(!authenticated){
		passwd();
		outin("server", sys, sizeof(sys));
	}
	cfd = open("#i/ctl", ORDWR);
	if(cfd < 0)
		error("opening #i/ctl");

	dkconfig(cfd);
	for(;;){
		fd = dkdial(sys);
		if(fd >= 0)
			break;
		print("can't connect, retrying...\n");
		sleep(1000);
	}

	nop(fd);
	session(fd);
	fd = cache(fd);
	srvcreate(sys, fd);
	srvcreate("boot", fd);
	if(mount(fd, "/", MAFTER|MCREATE, "", "") < 0)
		error("mount");
	close(fd);

	return 0;
}

/*
 *  plug the local file system into the name space
 */
int
localfs(int bootfs)
{
	ulong i;
	int p[2];
	Dir d;
	char sbuf[32];
	char rbuf[32];
	char *mtpt;

	if(dirstat("/kfs", &d) < 0)
		return -1;
	if(dirstat("#w/hd0fs", &d) < 0)
		return -1;

	print("local\n");

	/*
	 *  because kfs uses /dev/time, /dev/pid, and /proc/#
	 */
	if(bind("#c", "/dev", MREPL) < 0)
		error("bind #c");
	if(bind("#p", "/proc", MREPL) < 0)
		error("bind #p");

	if(pipe(p)<0)
		error("pipe");
	switch(fork()){
	case -1:
		error("fork");
	case 0:
		sprint(sbuf, "%d", p[0]);
		sprint(rbuf, "%d", p[1]);
		execl("/kfs", "kfs", "-f", "#w/hd0fs", "-s", sbuf, rbuf, 0);
		error("can't exec kfs");
	default:
		break;
	}

	close(p[1]);

/*
 *  NEW KERNEL - these can both be MAFTER
 */
	if(bootfs){
		mtpt = "/";
		if(mount(p[0], mtpt, MAFTER|MCREATE, "", "") < 0)
			error("mount");
		srvcreate("boot", p[0]);
	} else {
		mtpt = "/n/kfs";
		if(mount(p[0], mtpt, MREPL|MCREATE, "", "") < 0)
			error("mount");
	}
	
	close(p[0]);

	return 0;
}

void
srvcreate(char *name, int fd)
{
	char *srvname;
	int f;

	srvname = strrchr(name, '/');
	if(srvname)
		srvname++;
	else
		srvname = name;

	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);
}

/*
 *  set the system time
 */
void
settime(int fromserver)
{
	int n, f;
	Dir dir;
	char dirbuf[DIRLEN];
	char *srvname;

	print("time...");
	if(!fromserver){
		/*
		 *  set the time from the real time clock or file system
		 */
		f = open("#r/rtc", ORDWR);
		if(f > 0){
			if((n = read(f, dirbuf, sizeof(dirbuf)-1)) < 0)
				error("reading rtc");
			dirbuf[n] = 0;
			close(f);
		} else
			fromserver = 1;
	}
	if(fromserver){
		/*
		 *  set the time from the access time of the root
		 *  of the file server
		 */
		f = open("#s/boot", ORDWR);
		if(f < 0)
			return;
		if(mount(f, "/n/boot", MREPL, "", "") < 0){
			close(f);
			return;
		}
		close(f);
		if(stat("/n/boot", dirbuf) < 0)
			error("stat");
		convM2D(dirbuf, &dir);
		sprint(dirbuf, "%ld", dir.atime);
/*		unmount(0, "/n/boot"); /**/
		/*
		 *  set real time clock if there is one
		 */
		f = open("#r/rtc", ORDWR);
		if(f > 0){
			if(write(f, dirbuf, strlen(dirbuf)) < 0)
				error("writing rtc");
			close(f);
		}
		close(f);
	}
	f = open("#c/time", OWRITE);
	write(f, dirbuf, strlen(dirbuf));
	close(f);
}

/*
 * authenticate with r70
 */
int
authenticate(int fd)
{
	int n;

	for(;;) {
		n = read(fd, buf, sizeof(buf));
		if(n != 2){
			passwd();
			return -1;
		}
		buf[2] = '\0';
		if(strcmp(buf, "OK") == 0)
			return 0;
		else if(strcmp(buf, "CH") == 0) {
			sprint(buf, "%s\n%s\n", username, password);
			write(fd, buf, strlen(buf));	
		} else  if(strcmp(buf, "NO") == 0) {
			passwd();
			sprint(buf, "%s\n%s\n", username, password);
			write(fd, buf, strlen(buf));	
		}
	}
}

/*
 *  send nop to file server
 */
void
nop(int fd)
{
	long n;

	print("nop...");
	hdr.type = Tnop;
	hdr.tag = NOTAG;
	n = convS2M(&hdr, buf);
	if(write(fd, buf, n) != n)
		error("write nop");
	n = read(fd, buf, sizeof buf);
	if(n==2 && buf[0]=='O' && buf[1]=='K')
		n = read(fd, buf, sizeof buf);
	if(n <= 0)
		error("read nop");
	if(convM2S(buf, &hdr, n) == 0) {
		print("n = %d; buf = %#.2x %#.2x %#.2x %#.2x\n",
			n, buf[0], buf[1], buf[2], buf[3]);
		error("format nop");
	}
	if(hdr.type != Rnop)
		error("not Rnop");
}

/*
 *  send session to file server
 */
void
session(int fd)
{
	long n;

	print("session...");
	hdr.type = Tsession;
	hdr.tag = NOTAG;
	n = convS2M(&hdr, buf);
	if(write(fd, buf, n) != n)
		error("write session");
	n = read(fd, buf, sizeof buf);
	if(n <= 0)
		error("read session");
	if(convM2S(buf, &hdr, n) == 0)
		error("format session");
	if(hdr.type == Rerror){
		print("error %s;", hdr.ename);
		error(hdr.ename);
	}
	if(hdr.type != Rsession)
		error("not Rsession");
}

/*
 *  see if we have a cache file system server in the kernel,
 *  and use it if we do
 */
int
cache(int fd)
{
	ulong i;
	int p[2];
	Dir d;

	/*
	 *  if there's no /cfs, just return the fd to the
	 *  file server
	 */
	if(dirstat("/cfs", &d) < 0)
		return fd;
	if(dirstat("#w/hd0cache", &d) < 0)
		return fd;
	print("cfs...");

	/*
	 *  if we have a cfs, give it the file server as fd 0
	 *  and requests on fd 1
	 */
	if(pipe(p)<0)
		error("pipe");
	switch(fork()){
	case -1:
		error("fork");
	case 0:
		close(p[1]);
		dup(fd, 0);
		close(fd);
		dup(p[0], 1);
		close(p[0]);
		if(format)
			execl("/cfs", "bootcfs", "-fs", "-p", "#w/hd0cache", 0);
		else
			execl("/cfs", "bootcfs", "-s", "-p", "#w/hd0cache", 0);
		break;
	default:
		close(p[0]);
		close(fd);
		fd = p[1];
		break;
	}
	return fd;
}

void
sendmsg(int fd, char *msg)
{
	int n;

	n = strlen(msg);
	if(write(fd, msg, n) != n)
		error(msg);
}

/*
 *  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;
}
void
connect(int fd)
{
	char xbuf[128];
	int i, pid, n, rcons;

	print("[ctrl-d to attach fs]\n");

	switch(pid = fork()) {
	case -1:
		error("fork failed");
	case 0:
		for(;;) {
			n = read(fd, xbuf, sizeof(xbuf));
			if(n < 0) {
				errstr(xbuf);
				print("[remote read error (%s)]\n", xbuf);
				for(;;);
			}
			for(i = 0; i < n; i++)
				if(xbuf[i] == Cr)
					xbuf[i] = ' ';
			write(1, xbuf, n);
		}
	default:
		rcons = open("#c/rcons", OREAD);
		if(rcons < 0)
			error("opening rcons");

		for(;;) {
			read(rcons, xbuf, 1);
			switch(xbuf[0]) {
			case CtrlD:
				kill(pid);
				close(rcons);
				return;
			default:
				n = write(fd, xbuf, 1);
				if(n < 0) {
					errstr(xbuf);
					kill(pid);
					close(rcons);
					print("[remote write error (%s)]\n", xbuf);
				}
			}
		}
	}
}

void
kill(int pid)
{
	char xbuf[32];
	int f;

	sprint(xbuf, "/proc/%d/note", pid);
	f = open(xbuf, OWRITE);
	write(f, "die", 3);
	close(f);
}

void
passwd(void)
{
	Dir d;
	char c;
	int i, n, fd, p[2];

	fd = open("#c/rcons", OREAD);
	if(fd < 0)
		error("can't open #c/rcons; please reboot");
 Prompt:		
	print("password: ");
	n = 0;
	do{
		do{
			i = read(fd, &c, 1);
			if(i < 0)
				error("can't read #c/rcons; please reboot");
		}while(i == 0);
		switch(c){
		case '\n':
			break;
		case '\b':
			if(n > 0)
				n--;
			break;
		case 'u' - 'a' + 1:		/* cntrl-u */
			print("\n");
			goto Prompt;
		default:
			password[n++] = c;
			break;
		}
	}while(c != '\n' && n < sizeof(password));
	password[n] = '\0';
	close(fd);
	print("\n");
}

M gnot/boot.h => gnot/boot.h +3683 -2900
@@ 1,8 1,8 @@
ulong bootcode[]={
	0x000000107,
	0x000003446,
	0x000000778,
	0x0000012b0,
	0x000003cbe,
	0x000000b3c,
	0x0000012e8,
	0x000000000,
	0x000002020,
	0x000000000,


@@ 10,977 10,1170 @@ ulong bootcode[]={
	0x04feffff0,
	0x02c7c0000,
	0x0dffe2d40,
	0x0801e486f,
	0x08026486f,
	0x000142f2f,
	0x00014610c,
	0x02f006100,
	0x011e24fef,
	0x0181e4fef,
	0x0001c4e75,
	0x0518f42a7,
	0x0486e8122,
	0x06100141c,
	0x0598f42a7,
	0x0486e8442,
	0x061001cb2,
	0x048780001,
	0x0486e812a,
	0x061001410,
	0x0486e844a,
	0x061001ca6,
	0x048780001,
	0x0486e8132,
	0x061001404,
	0x0486e813a,
	0x061000298,
	0x061000164,
	0x0486e8452,
	0x061001c9a,
	0x06100018c,
	0x04aae8006,
	0x066000148,
	0x0486e8146,
	0x0486e998e,
	0x061001342,
	0x066000170,
	0x0486e845a,
	0x0486e9cee,
	0x061001bac,
	0x04878001c,
	0x0486e998e,
	0x0486e814b,
	0x061000e8a,
	0x0486e998e,
	0x0610002c4,
	0x0486e9cee,
	0x0486e845f,
	0x061001196,
	0x0486e9cee,
	0x06100036a,
	0x042a7486e,
	0x08152486e,
	0x081506100,
	0x013884a80,
	0x08466486e,
	0x084646100,
	0x01c264a80,
	0x06c0a486e,
	0x081546100,
	0x00e3e588f,
	0x0610002e8,
	0x04fef0040,
	0x084686100,
	0x0114a588f,
	0x06100038e,
	0x04fef003c,
	0x07241b280,
	0x0670000e2,
	0x06700010a,
	0x07261b280,
	0x0670000c4,
	0x0670000ec,
	0x07269b280,
	0x0670000aa,
	0x0670000d4,
	0x0726cb280,
	0x0670000bc,
	0x048780001,
	0x06100067c,
	0x04282588f,
	0x02f026100,
	0x008984aae,
	0x080326730,
	0x02f2e800a,
	0x0486e8166,
	0x0486e877a,
	0x06100123a,
	0x061000474,
	0x0588f486e,
	0x0847a6100,
	0x017bc4aae,
	0x0803e6730,
	0x02f2e800e,
	0x0486e847c,
	0x0486e8b3e,
	0x061001876,
	0x042a7486e,
	0x0877a2f2e,
	0x080326100,
	0x0132442a7,
	0x0486e816e,
	0x02f2e8032,
	0x061001316,
	0x08b3e2f2e,
	0x0803e6100,
	0x01bba42a7,
	0x0486e8484,
	0x02f2e803e,
	0x061001bac,
	0x04fef0024,
	0x04aae800a,
	0x04aae800e,
	0x067222f2e,
	0x0800a486e,
	0x08177486e,
	0x0877a6100,
	0x0120442a7,
	0x0486e8187,
	0x0486e877a,
	0x0610012ee,
	0x0800e486e,
	0x0848d486e,
	0x08b3e6100,
	0x0184042a7,
	0x0486e849d,
	0x0486e8b3e,
	0x061001b84,
	0x04fef0018,
	0x04aae802e,
	0x0486e9bd6,
	0x0486e84ae,
	0x0486e8b3e,
	0x06100181e,
	0x04aae803a,
	0x0672042a7,
	0x0486e81a9,
	0x0486e81a4,
	0x0486e8198,
	0x06100120a,
	0x0486e81bd,
	0x061000d8c,
	0x04fef0020,
	0x0486e84bc,
	0x0486e84b7,
	0x0486e8b3e,
	0x061001958,
	0x0486e8b3e,
	0x061001080,
	0x04fef0028,
	0x04e7542a7,
	0x0486e81b8,
	0x0486e81ac,
	0x0610011ee,
	0x0598f60e0,
	0x061000500,
	0x042a76100,
	0x005d27401,
	0x0486e84c4,
	0x0486e84bf,
	0x0486e8b3e,
	0x061001938,
	0x060de6100,
	0x005662f00,
	0x06100034e,
	0x0588f6000,
	0x0ff54486e,
	0x081596100,
	0x003ca42a7,
	0x0610005bc,
	0x07401508f,
	0x06000ff3e,
	0x0486e8160,
	0x0610003b4,
	0x042a76100,
	0x005a67401,
	0x0508f6000,
	0x0ff28486e,
	0x09956486e,
	0x0998e6100,
	0x011fc4fef,
	0x0ff426100,
	0x008d42f00,
	0x06100033e,
	0x0588f6000,
	0x0ff32486e,
	0x0846d6100,
	0x00930588f,
	0x02f006100,
	0x00328588f,
	0x06000ff1c,
	0x0486e8474,
	0x06100091a,
	0x0588f2f00,
	0x061000312,
	0x0588f6000,
	0x0ff06486e,
	0x09cb6486e,
	0x09cee6100,
	0x01a3e4fef,
	0x0fff46000,
	0x0fec4518f,
	0x042ae802a,
	0x042ae802e,
	0x042a7486e,
	0x081c96100,
	0x012824a80,
	0x06d744878,
	0x0003f486e,
	0x099162f00,
	0x02f400018,
	0x061001272,
	0x02f2f0018,
	0x061001240,
	0x0fe9c598f,
	0x042ae8036,
	0x042ae803a,
	0x048780040,
	0x0486e9c76,
	0x0486e84c7,
	0x061000192,
	0x04a806654,
	0x0207c0000,
	0x079144878,
	0x07c744878,
	0x000202f08,
	0x06100116a,
	0x0610019c0,
	0x020404a80,
	0x04fef0018,
	0x067405288,
	0x00c10002d,
	0x04feffff0,
	0x066e04a10,
	0x067dc0c10,
	0x0002067d6,
	0x0101849c0,
	0x04fef0018,
	0x07266b200,
	0x06714726d,
	0x0b2006706,
	0x04fefffe8,
	0x060dc7001,
	0x02d40802e,
	0x060f27001,
	0x02d40802a,
	0x060ea42a7,
	0x0486e81d5,
	0x061001200,
	0x04a806d1e,
	0x048780001,
	0x0486e8036,
	0x02f002f40,
	0x000206100,
	0x011f02f2f,
	0x000206100,
	0x011be4fef,
	0x0001042a7,
	0x0486e81e3,
	0x0610011d4,
	0x04a806d1e,
	0x04878001c,
	0x0486e9956,
	0x02f002f40,
	0x000286100,
	0x011c42f2f,
	0x000286100,
	0x011924fef,
	0x0001042a7,
	0x0486e81ef,
	0x0610011a8,
	0x04a806d2e,
	0x0508f673c,
	0x052880c10,
	0x0002d66e6,
	0x04a1067e2,
	0x00c100020,
	0x067dc1018,
	0x049c04fef,
	0x0000c7266,
	0x0b2006714,
	0x0726db200,
	0x067064fef,
	0x0fff460dc,
	0x070012d40,
	0x0803a60f2,
	0x070012d40,
	0x0803660ea,
	0x048780002,
	0x0486e8012,
	0x0486e84d0,
	0x06100012a,
	0x04a806c00,
	0x00114486e,
	0x084e36100,
	0x019b8588f,
	0x02f00486e,
	0x084db486e,
	0x09c766100,
	0x019c04a80,
	0x0660000ca,
	0x0746c7069,
	0x0b08242e7,
	0x02d428042,
	0x044df6708,
	0x07061b082,
	0x0660000a6,
	0x070012d40,
	0x080064878,
	0x0001c486e,
	0x09cb6486e,
	0x085016100,
	0x000d84aae,
	0x080066778,
	0x04878001c,
	0x0486e97f6,
	0x0486e9bba,
	0x0486e850a,
	0x0610000c2,
	0x04a806c0e,
	0x0486e8515,
	0x0486e9bba,
	0x06100193c,
	0x0508f4878,
	0x0001c486e,
	0x09bd6486e,
	0x085236100,
	0x000a04878,
	0x0001c486e,
	0x09d8a486e,
	0x0852b6100,
	0x00090207c,
	0x00000609c,
	0x04a9042e7,
	0x02d488032,
	0x044df6714,
	0x02f10486e,
	0x09d8a6100,
	0x018dc206e,
	0x080324a80,
	0x06608508f,
	0x04fef0058,
	0x04e75d1fc,
	0x000000014,
	0x0508f60d0,
	0x0486e851c,
	0x0486e9bba,
	0x0610018d8,
	0x0598f609a,
	0x07041b082,
	0x06600ff5c,
	0x06000ff52,
	0x0486e84f6,
	0x0610018d2,
	0x0588f2f00,
	0x0486e84eb,
	0x0486e9c76,
	0x0610018da,
	0x0242e8042,
	0x04a804fef,
	0x0000c6600,
	0x0ff167473,
	0x06000ff10,
	0x0102e8012,
	0x049c02400,
	0x04feffff4,
	0x06000ff00,
	0x04fefffc0,
	0x02f2f0044,
	0x0486e8534,
	0x0486f0008,
	0x0610015c6,
	0x042370161,
	0x0005442a7,
	0x0486f0010,
	0x06100193e,
	0x04a806c08,
	0x070ff4fef,
	0x000544e75,
	0x0206f0060,
	0x04868ffff,
	0x02f2f0060,
	0x02f002f40,
	0x000306100,
	0x011982f2f,
	0x000306100,
	0x011660c2e,
	0x000738036,
	0x067067001,
	0x02d408006,
	0x04fef0038,
	0x04e75486e,
	0x081fd486e,
	0x097f66100,
	0x010c8518f,
	0x060dc598f,
	0x0487801b6,
	0x048780001,
	0x0486e8201,
	0x061001136,
	0x04a8042e7,
	0x02f40000e,
	0x044df6c0a,
	0x0486e820d,
	0x061000bcc,
	0x0588f2f2f,
	0x000146100,
	0x010a6588f,
	0x02f002f2f,
	0x000182f2f,
	0x0005c6100,
	0x019224a80,
	0x06d064237,
	0x009250068,
	0x02f2f005c,
	0x0610018e6,
	0x042804fef,
	0x000644e75,
	0x0598f4878,
	0x00011486e,
	0x0853a6100,
	0x018f44a80,
	0x042e72f40,
	0x0000a44df,
	0x06d24486e,
	0x09cee6100,
	0x0181c588f,
	0x02f00486e,
	0x09cee2f2f,
	0x000106100,
	0x018e82f2f,
	0x000146100,
	0x0113e4a80,
	0x06c0a486e,
	0x082166100,
	0x00ba6588f,
	0x02f2f0018,
	0x0610010ec,
	0x04fef0020,
	0x04e75598f,
	0x048780011,
	0x0486e821f,
	0x0610010fc,
	0x04a8042e7,
	0x02f40000a,
	0x044df6d24,
	0x0486e998e,
	0x061001058,
	0x0588f2f00,
	0x0486e998e,
	0x02f2f0010,
	0x0610010f0,
	0x02f2f0014,
	0x0610010ac,
	0x04fef0010,
	0x04fef000c,
	0x04e75598f,
	0x0142e8036,
	0x00c020073,
	0x067081002,
	0x049c0588f,
	0x04e75486e,
	0x08227486f,
	0x000046100,
	0x01004486e,
	0x08229486e,
	0x097f66100,
	0x00ff84878,
	0x00004486f,
	0x00014486e,
	0x0822d6100,
	0x00b40102f,
	0x0001c49c0,
	0x04fef001c,
	0x07231b200,
	0x067267239,
	0x0b200671a,
	0x07269b200,
	0x0670e726e,
	0x0b2006702,
	0x060b4706e,
	0x0588f4e75,
	0x07069588f,
	0x04e757041,
	0x0588f4e75,
	0x07061588f,
	0x04e75486e,
	0x082642f2f,
	0x018a44fef,
	0x000104fef,
	0x0000c4e75,
	0x04feffefc,
	0x0242e8042,
	0x07073b082,
	0x067082002,
	0x04fef0104,
	0x04e752f36,
	0x001628032,
	0x00004486e,
	0x08542486f,
	0x000086100,
	0x00a7a206f,
	0x0000c4aae,
	0x08006673a,
	0x0486e826f,
	0x02f086100,
	0x00a666100,
	0x0101e4fef,
	0x0001072ff,
	0x0b2806720,
	0x04281b280,
	0x0670c2f2f,
	0x000046100,
	0x00fee588f,
	0x04e754879,
	0x00000ea60,
	0x061001010,
	0x0588f60f2,
	0x060ee486e,
	0x082852f08,
	0x061000a2c,
	0x060c44fef,
	0x0fff02f2f,
	0x0150c1f76,
	0x001628032,
	0x00010010c,
	0x0422f010d,
	0x0486e855a,
	0x0486f0110,
	0x0610017a4,
	0x048780004,
	0x0486f0118,
	0x0486f001c,
	0x061000d8e,
	0x0102f0120,
	0x049c04fef,
	0x000207265,
	0x0b0016d28,
	0x06e08706c,
	0x04fef0104,
	0x04e757269,
	0x0b2006710,
	0x0726eb200,
	0x06702609a,
	0x042804fef,
	0x001044e75,
	0x070694fef,
	0x001044e75,
	0x07231b200,
	0x0670e7239,
	0x0b20066e2,
	0x070414fef,
	0x001044e75,
	0x070614fef,
	0x001044e75,
	0x02f2f0004,
	0x0610009d2,
	0x02f2f0008,
	0x061000ace,
	0x02f2f000c,
	0x061000b84,
	0x02f002f40,
	0x00014486e,
	0x08299486e,
	0x0877a6100,
	0x00eb0486e,
	0x0877a6100,
	0x00f462f40,
	0x0001042af,
	0x000144878,
	0x00002486e,
	0x082a46100,
	0x00fc24a80,
	0x042e72f40,
	0x0002644df,
	0x06c0a486e,
	0x082ae6100,
	0x00a3a588f,
	0x048780002,
	0x0486e82c0,
	0x061000fa0,
	0x02f400028,
	0x04aaf0028,
	0x0855c6100,
	0x006be2f2f,
	0x00018486e,
	0x09bba6100,
	0x006b2486e,
	0x08564486e,
	0x085634878,
	0x00006486e,
	0x085612f2f,
	0x000306100,
	0x017c64a80,
	0x06c0a486e,
	0x082c96100,
	0x00a1a588f,
	0x02f2f0020,
	0x0486e877a,
	0x02f2f0030,
	0x061000f94,
	0x0b0af002c,
	0x0660e2f2f,
	0x000386100,
	0x00606588f,
	0x04a806734,
	0x07005b0af,
	0x000306608,
	0x070ff4fef,
	0x0003c4e75,
	0x02f2f0038,
	0x061000f2c,
	0x02f2f0038,
	0x061000f24,
	0x0487801f4,
	0x061000f4c,
	0x052af003c,
	0x04fef0028,
	0x06000ff68,
	0x0486e82da,
	0x02f2f0038,
	0x061000960,
	0x02f2f003c,
	0x061000efc,
	0x02d7c0000,
	0x062dd800a,
	0x02d7c0000,
	0x062e08032,
	0x0202f0044,
	0x04fef0048,
	0x085656100,
	0x00cba588f,
	0x02f2f0034,
	0x061001792,
	0x042a76106,
	0x04fef0038,
	0x04e754fef,
	0x0fff04aae,
	0x080066618,
	0x061000b76,
	0x04878001c,
	0x0486e97f6,
	0x0486e82e5,
	0x06100099e,
	0x04fef000c,
	0x048780002,
	0x0486e82ec,
	0x061000ed8,
	0x02f400010,
	0x04aaf0010,
	0x06c0a486e,
	0x082f76100,
	0x00952588f,
	0x02f2f001c,
	0x02f2f0014,
	0x0610008f0,
	0x048780002,
	0x0486e830a,
	0x061000eac,
	0x02f40001c,
	0x04aaf001c,
	0x06c0a486e,
	0x083126100,
	0x00926588f,
	0x02f2f001c,
	0x0610009aa,
	0x02f2f0020,
	0x061000e64,
	0x0486e8322,
	0x02f2f002c,
	0x0610008b4,
	0x02f2f0030,
	0x06100fe28,
	0x0486e97f6,
	0x06100fe7c,
	0x04a806d6a,
	0x02f002f40,
	0x000406100,
	0x005ca2f2f,
	0x000406100,
	0x006c62f2f,
	0x000446100,
	0x0077c2f00,
	0x02f40004c,
	0x0486e97f6,
	0x0610002b6,
	0x02f2f0050,
	0x0486e8349,
	0x0610002aa,
	0x0486e8351,
	0x0486e8350,
	0x048780006,
	0x0486e834e,
	0x02f2f0068,
	0x061000e16,
	0x04a806c0a,
	0x0486e8352,
	0x06100089c,
	0x0588f2f2f,
	0x0006c6100,
	0x00de24280,
	0x04fef0074,
	0x04e75486e,
	0x0832d6100,
	0x00bf84878,
	0x003e86100,
	0x00dfa4fef,
	0x0000c6000,
	0x0ff744fef,
	0x0fff04aae,
	0x080066618,
	0x061000a56,
	0x04878001c,
	0x0486e97f6,
	0x0486e8358,
	0x06100087e,
	0x04fef000c,
	0x048780002,
	0x0486e835f,
	0x061000db8,
	0x02f400010,
	0x04aaf0010,
	0x06c0a486e,
	0x083666100,
	0x00832588f,
	0x02f2f0010,
	0x06100fd50,
	0x0486e97f6,
	0x06100fda4,
	0x04a806d6a,
	0x02f002f40,
	0x000206100,
	0x004f22f2f,
	0x000206100,
	0x005ee2f2f,
	0x000246100,
	0x006a42f00,
	0x02f40002c,
	0x0486e97f6,
	0x0610001de,
	0x02f2f0030,
	0x0486e8391,
	0x0610001d2,
	0x0486e8399,
	0x0486e8398,
	0x048780006,
	0x0486e8396,
	0x02f2f0048,
	0x061000d3e,
	0x04a806c0a,
	0x0486e839a,
	0x0610007c4,
	0x0588f2f2f,
	0x0004c6100,
	0x00d0a4280,
	0x04fef0054,
	0x04e75486e,
	0x083756100,
	0x00b204878,
	0x003e86100,
	0x00d224fef,
	0x0000c6000,
	0x0ff744fef,
	0x0ff3c486f,
	0x00044486e,
	0x083a06100,
	0x01c544a80,
	0x0ff04486f,
	0x0007c486e,
	0x0856b6100,
	0x027724a80,
	0x06c0870ff,
	0x04fef00cc,
	0x04e75486f,
	0x0004c486e,
	0x083a56100,
	0x01c3c4a80,
	0x04fef0104,
	0x04e752f36,
	0x001628032,
	0x0000c486e,
	0x08570486f,
	0x000106100,
	0x013f4486f,
	0x00090486f,
	0x000186100,
	0x027464a80,
	0x06c0870ff,
	0x04fef00d4,
	0x04fef0118,
	0x04e75486e,
	0x083ae6100,
	0x00ad442a7,
	0x0486e83b8,
	0x0486e83b5,
	0x061000c8e,
	0x085786100,
	0x0130442a7,
	0x0486e8584,
	0x0486e8581,
	0x061001718,
	0x04a806c0a,
	0x0486e83bd,
	0x061000744,
	0x0486e8589,
	0x061000c3c,
	0x0588f42a7,
	0x0486e83c8,
	0x0486e83c5,
	0x061000c72,
	0x0486e8594,
	0x0486e8591,
	0x0610016fc,
	0x04a806c0a,
	0x0486e83ce,
	0x061000728,
	0x0486e859a,
	0x061000c20,
	0x0588f486f,
	0x000e46100,
	0x00c624a80,
	0x001286100,
	0x016ec4a80,
	0x06c0a486e,
	0x083d66100,
	0x00712588f,
	0x061000c74,
	0x04fef0030,
	0x085a26100,
	0x00c0a588f,
	0x0610016fe,
	0x04fef003c,
	0x072ffb280,
	0x0670000de,
	0x0670000f0,
	0x04281b280,
	0x067000084,
	0x02f2f00bc,
	0x061000c40,
	0x04aaf00cc,
	0x06746207c,
	0x00000640b,
	0x0486e8410,
	0x0486e840f,
	0x048780006,
	0x067000096,
	0x02f2f00f4,
	0x0610016ca,
	0x04aaf0104,
	0x067502f7c,
	0x0000065ce,
	0x0003c2f2f,
	0x000f4486e,
	0x085d26100,
	0x005a2486e,
	0x085d8486e,
	0x085d74878,
	0x000062f2f,
	0x000502f2f,
	0x0010c6100,
	0x016b64a80,
	0x06c0a486e,
	0x085d96100,
	0x00baa588f,
	0x042a76100,
	0x0061a2f2f,
	0x001146100,
	0x0167c4280,
	0x04fef0124,
	0x04e75207c,
	0x0000065dd,
	0x0486e85e7,
	0x0486e85e6,
	0x048780004,
	0x02f082f2f,
	0x000cc6100,
	0x00c3c4a80,
	0x001046100,
	0x016764a80,
	0x06c0a486e,
	0x084116100,
	0x006c2588f,
	0x02f2f00d0,
	0x0486e8417,
	0x06100009e,
	0x02f2f00d8,
	0x061000bfc,
	0x042804fef,
	0x000e84e75,
	0x0207c0000,
	0x0641a486e,
	0x08424486e,
	0x084234878,
	0x000042f08,
	0x02f2f00cc,
	0x061000bf6,
	0x04a80518f,
	0x06cce486e,
	0x084256100,
	0x0067a588f,
	0x060c22f2f,
	0x000b8486e,
	0x083e0486f,
	0x0002c6100,
	0x00aac2f2f,
	0x000c8486e,
	0x083e3486f,
	0x000186100,
	0x00a9c42a7,
	0x0486f0020,
	0x0486f0044,
	0x0486e83fb,
	0x0486e83f2,
	0x0486e83ef,
	0x0486e83eb,
	0x0486e83e6,
	0x061000aaa,
	0x0486e83fe,
	0x06100062c,
	0x04fef003c,
	0x06000ff2e,
	0x0486e83db,
	0x06100061c,
	0x0588f60a2,
	0x0518f4878,
	0x0002f2f2f,
	0x000106100,
	0x00b062400,
	0x06700008a,
	0x052822f02,
	0x0486e842b,
	0x0486e877a,
	0x061000a3a,
	0x0487801b6,
	0x085e86100,
	0x00b6a588f,
	0x048780001,
	0x0486e877a,
	0x061000b3a,
	0x04a8042e7,
	0x02f400022,
	0x044df6c0a,
	0x0486e8431,
	0x0610005d0,
	0x0588f2f2f,
	0x00030486e,
	0x08438486e,
	0x0877a6100,
	0x00a04486e,
	0x0877a6100,
	0x00a9a588f,
	0x02f00486e,
	0x0877a2f2f,
	0x000346100,
	0x00b322f00,
	0x0486e877a,
	0x061000a80,
	0x0588f221f,
	0x0b280670a,
	0x0486e843b,
	0x06100058c,
	0x0588f2f2f,
	0x000386100,
	0x00ad24fef,
	0x000444e75,
	0x0242f0014,
	0x06000ff74,
	0x04fefff0c,
	0x0486e8441,
	0x0610008de,
	0x04aaf00fc,
	0x066504878,
	0x0610005d8,
	0x0518f60ba,
	0x02f2f00f0,
	0x0486e85ac,
	0x0486f0064,
	0x0610012ca,
	0x02f2f0100,
	0x0486e85af,
	0x0486f0050,
	0x0610012ba,
	0x042a7486f,
	0x00058486f,
	0x0007c486e,
	0x085be486f,
	0x00028486e,
	0x085bb486e,
	0x085b7486e,
	0x085b26100,
	0x013ea486e,
	0x085c16100,
	0x00b124fef,
	0x0003c6000,
	0x0ff1c486e,
	0x085a76100,
	0x00b02588f,
	0x060a24fef,
	0x0ffcc4aae,
	0x080066618,
	0x06100101a,
	0x04878001c,
	0x0486e9bba,
	0x0486e85ee,
	0x061000b0a,
	0x04fef000c,
	0x02ebc0000,
	0x07bb8227c,
	0x0000061b4,
	0x04a916720,
	0x02f172f11,
	0x02f490028,
	0x0610014ce,
	0x0226f0028,
	0x04a806600,
	0x001e47004,
	0x0d0892f40,
	0x00008508f,
	0x02f17486e,
	0x085f56100,
	0x01150222f,
	0x0000841ef,
	0x000242f48,
	0x0002042af,
	0x0002c7004,
	0x0b0af002c,
	0x06f087001,
	0x0b0816600,
	0x001804aae,
	0x080226600,
	0x000b24878,
	0x00002486e,
	0x084496100,
	0x00aca4a80,
	0x06f000150,
	0x048780073,
	0x0486f0014,
	0x02f002f40,
	0x001046100,
	0x00ab82200,
	0x086016100,
	0x015744a80,
	0x06c10486e,
	0x0860a6100,
	0x00a3e70ff,
	0x04fef0048,
	0x04e754878,
	0x0000d486e,
	0x0861b2f00,
	0x02f40004c,
	0x061001566,
	0x0222f004c,
	0x04a806c16,
	0x02f016100,
	0x0151c486e,
	0x086296100,
	0x00a0e70ff,
	0x04fef0058,
	0x04e754878,
	0x0000c486e,
	0x086372f01,
	0x06100153a,
	0x0222f0058,
	0x04a806c16,
	0x02f016100,
	0x014f0486e,
	0x086446100,
	0x009e270ff,
	0x04fef0064,
	0x04e754878,
	0x0000c486e,
	0x086512f01,
	0x06100150e,
	0x04a806c18,
	0x02f2f0064,
	0x0610014c6,
	0x0486e865e,
	0x0610009b8,
	0x070ff4fef,
	0x000704e75,
	0x070012d40,
	0x080224fef,
	0x0002c486f,
	0x0000c486f,
	0x000286100,
	0x00a4c4a80,
	0x06c0870ff,
	0x04fef0044,
	0x04e754878,
	0x00002486e,
	0x0866b6100,
	0x014ac4a80,
	0x042e72f40,
	0x0010a44df,
	0x06c0e486e,
	0x084506100,
	0x0052a222f,
	0x0010c588f,
	0x042371920,
	0x0001c2f2f,
	0x001046100,
	0x00a664fef,
	0x000184aaf,
	0x000fc6700,
	0x000d44878,
	0x0004244df,
	0x06c10486e,
	0x0867a6100,
	0x0096e70ff,
	0x04fef0050,
	0x04e754878,
	0x00002486e,
	0x0845c6100,
	0x00a724a80,
	0x06c064fef,
	0x001004e75,
	0x0486e846d,
	0x0486e846c,
	0x042a7486e,
	0x084642f00,
	0x02f40010c,
	0x061000a4a,
	0x0206f010c,
	0x04a806c0c,
	0x02f086100,
	0x00a1e4fef,
	0x001184e75,
	0x086916100,
	0x014844a80,
	0x042e72f40,
	0x0004e44df,
	0x06c182f2f,
	0x000486100,
	0x0144c486e,
	0x0869f6100,
	0x0093e70ff,
	0x04fef005c,
	0x04e75486f,
	0x000246100,
	0x01394588f,
	0x02f00486f,
	0x000282f2f,
	0x000546100,
	0x014604a80,
	0x06c202f2f,
	0x000586100,
	0x014182f2f,
	0x000586100,
	0x01410486f,
	0x000386100,
	0x012ca70ff,
	0x04fef006c,
	0x04e752d7c,
	0x0000066b3,
	0x0800e2d7c,
	0x0000066b9,
	0x0803e202f,
	0x000544fef,
	0x000604e75,
	0x02f012f41,
	0x0000c6100,
	0x011be1f80,
	0x001610024,
	0x052af0024,
	0x04878002e,
	0x02f2f0010,
	0x0610012cc,
	0x052802200,
	0x052af0038,
	0x04fef000c,
	0x06000fe44,
	0x0d3fc0000,
	0x00018508f,
	0x06000fdfa,
	0x0486e86c3,
	0x02f2f0008,
	0x061000868,
	0x0206f000c,
	0x04aae8006,
	0x0673a486e,
	0x086ce2f08,
	0x061000854,
	0x06100139e,
	0x04fef0010,
	0x072ffb280,
	0x067204281,
	0x0b280670c,
	0x02f2f0004,
	0x06100136e,
	0x0588f4e75,
	0x048790000,
	0x0ea606100,
	0x01390588f,
	0x060f260ee,
	0x0486e86e4,
	0x02f086100,
	0x00a12486f,
	0x00028486e,
	0x0846e6100,
	0x00a3c4a80,
	0x06c0a486e,
	0x084766100,
	0x004aa588f,
	0x0486f00a4,
	0x0486f0034,
	0x061000a34,
	0x02f2f010c,
	0x0486e847b,
	0x0486f0040,
	0x0610008d2,
	0x0081a60c4,
	0x04feffff0,
	0x02f2f0014,
	0x0486e86f8,
	0x0486e8b3e,
	0x061000fd6,
	0x0486e8b3e,
	0x061001292,
	0x02f400010,
	0x042af0014,
	0x048780002,
	0x0486e847f,
	0x0610009f4,
	0x02f400134,
	0x04aaf0134,
	0x06f32486f,
	0x0004c6100,
	0x00952588f,
	0x02f00486f,
	0x000502f2f,
	0x0013c6100,
	0x009ea4a80,
	0x0486e8703,
	0x061001342,
	0x04a8042e7,
	0x02f400026,
	0x044df6c0a,
	0x0486e870d,
	0x061000828,
	0x0588f4878,
	0x00002486e,
	0x0871f6100,
	0x013202f40,
	0x000284aaf,
	0x000286c0a,
	0x0486e8728,
	0x061000808,
	0x0588f2f2f,
	0x00020486e,
	0x08b3e2f2f,
	0x000306100,
	0x01314b0af,
	0x0002c660e,
	0x02f2f0038,
	0x0610003de,
	0x0588f4a80,
	0x067347005,
	0x0b0af0030,
	0x0660870ff,
	0x04fef003c,
	0x04e752f2f,
	0x000386100,
	0x012ac2f2f,
	0x000386100,
	0x012a44878,
	0x001f46100,
	0x012cc52af,
	0x0003c4fef,
	0x000286000,
	0x0ff68486e,
	0x087392f2f,
	0x000386100,
	0x0074e2f2f,
	0x0003c6100,
	0x0127c2d7c,
	0x00000673c,
	0x0800e2d7c,
	0x00000673f,
	0x0803e202f,
	0x000444fef,
	0x000484e75,
	0x0518f4aae,
	0x080066618,
	0x061000c9e,
	0x04878001c,
	0x0486e9bba,
	0x0486e8744,
	0x06100078e,
	0x04fef000c,
	0x048780002,
	0x0486e874b,
	0x06100125a,
	0x02f400008,
	0x04aaf0008,
	0x06c0a486e,
	0x084866100,
	0x00452588f,
	0x02f2f0140,
	0x061000998,
	0x04fef0010,
	0x02f2f0134,
	0x06100098c,
	0x04fef0048,
	0x048780001,
	0x0486e8492,
	0x0610009a0,
	0x02f4000f8,
	0x0486f0010,
	0x061000904,
	0x0588f2f00,
	0x087526100,
	0x00742588f,
	0x02f2f0008,
	0x06100fe72,
	0x0486e9bba,
	0x06100fec6,
	0x04a806d06,
	0x04fef0018,
	0x04e75486e,
	0x087616100,
	0x00dcc4878,
	0x003e86100,
	0x012284fef,
	0x0000c60d8,
	0x04fefffd4,
	0x04aae8006,
	0x066186100,
	0x00c2c4878,
	0x0001c486e,
	0x09bba486e,
	0x0877d6100,
	0x0071c4fef,
	0x0000c2f36,
	0x001628032,
	0x00008486e,
	0x08784486f,
	0x000086100,
	0x00e584878,
	0x00002486f,
	0x000106100,
	0x011d42f40,
	0x000384aaf,
	0x000386c0a,
	0x0486f0014,
	0x02f2f0100,
	0x06100099c,
	0x02f2f0104,
	0x061000958,
	0x04fef0110,
	0x04e757001,
	0x02f400104,
	0x0508f6000,
	0x0fee6598f,
	0x048781000,
	0x0486e877a,
	0x0610006bc,
	0x0588f2f2f,
	0x000442f2f,
	0x0003c6100,
	0x0065a2f36,
	0x001628032,
	0x00008486e,
	0x0878d486f,
	0x000246100,
	0x00e184878,
	0x00002486f,
	0x0002c6100,
	0x011942f40,
	0x000504aaf,
	0x000506c0a,
	0x0486f0030,
	0x06100067c,
	0x0588f2f2f,
	0x000506100,
	0x00a382f2f,
	0x000546100,
	0x0114c486e,
	0x087932f2f,
	0x000606100,
	0x0060a2f2f,
	0x000646100,
	0x0fd90486e,
	0x09bba6100,
	0x0fde44a80,
	0x06d064fef,
	0x000744e75,
	0x0486e879e,
	0x061000cea,
	0x0487803e8,
	0x061001146,
	0x04fef000c,
	0x060d8518f,
	0x04878002f,
	0x02f2f0010,
	0x06100095e,
	0x022007002,
	0x0b081670c,
	0x0610005ca,
	0x070ff4fef,
	0x000104e75,
	0x0422e877c,
	0x0486e849a,
	0x0486e877a,
	0x061000870,
	0x04a806608,
	0x042804fef,
	0x000184e75,
	0x0486e849d,
	0x0486e877a,
	0x061000858,
	0x04a806634,
	0x0486e9972,
	0x0486e998e,
	0x0486e84a0,
	0x0486e877a,
	0x0610007d6,
	0x0486e877a,
	0x06100086c,
	0x0610010ae,
	0x024006700,
	0x0008a5282,
	0x02f02486e,
	0x087ba486e,
	0x08b3e6100,
	0x00d884878,
	0x001b64878,
	0x00001486e,
	0x08b3e6100,
	0x010e24a80,
	0x042e72f40,
	0x0002244df,
	0x06c0a486e,
	0x087c06100,
	0x005e6588f,
	0x02f2f0030,
	0x0486e87c7,
	0x0486e8b3e,
	0x061000d52,
	0x0486e8b3e,
	0x06100100e,
	0x0588f2f00,
	0x0486e877a,
	0x02f2f003c,
	0x061000904,
	0x04fef0038,
	0x06000ff7e,
	0x0486e84a7,
	0x0486e877a,
	0x061000814,
	0x04a804fef,
	0x000246600,
	0x0ff686100,
	0x00548486e,
	0x09972486e,
	0x0998e486e,
	0x084aa486e,
	0x0877a6100,
	0x00788486e,
	0x0877a6100,
	0x0081e588f,
	0x0486e8b3e,
	0x02f2f0034,
	0x0610010da,
	0x02f00486e,
	0x0877a2f2f,
	0x000206100,
	0x008b64fef,
	0x0001c6000,
	0x0ff30598f,
	0x0486e84b1,
	0x06100068e,
	0x01d7c0032,
	0x0977a3d7c,
	0x0ffff977e,
	0x0486e877a,
	0x0486e977a,
	0x0610010e8,
	0x08b3e6100,
	0x00ff4588f,
	0x0221fb280,
	0x0670a486e,
	0x087ca6100,
	0x005a2588f,
	0x02f2f0038,
	0x06100107a,
	0x04fef0044,
	0x04e75242f,
	0x000146000,
	0x0ff744fef,
	0x0ff0c486e,
	0x087d06100,
	0x00c2c4aaf,
	0x000fc6650,
	0x048780002,
	0x0486e87d8,
	0x061001072,
	0x04a806d00,
	0x001504878,
	0x00073486f,
	0x000142f00,
	0x02f400104,
	0x061001060,
	0x0220042e7,
	0x02f40010a,
	0x044df6c0e,
	0x0486e87df,
	0x061000540,
	0x0222f010c,
	0x0588f4237,
	0x01920001c,
	0x02f2f0104,
	0x06100100e,
	0x04fef0018,
	0x04aaf00fc,
	0x0670000d4,
	0x048780002,
	0x0486e87eb,
	0x06100101a,
	0x04a806c06,
	0x04fef0100,
	0x04e75486e,
	0x087fc486e,
	0x087fb42a7,
	0x0486e87f3,
	0x02f002f40,
	0x00010486e,
	0x0877a2f2f,
	0x0001c6100,
	0x0087ab0af,
	0x00018670a,
	0x0486e84b8,
	0x0610002e0,
	0x0588f4878,
	0x0010c6100,
	0x00ff2206f,
	0x0010c4a80,
	0x06c0c2f08,
	0x061000fc6,
	0x04fef0118,
	0x04e752f08,
	0x061000fba,
	0x0486f0028,
	0x0486e87fd,
	0x061000fe4,
	0x04a806c0a,
	0x0486e8805,
	0x0610004c0,
	0x0588f486f,
	0x000a4486f,
	0x000346100,
	0x0105c2f2f,
	0x0010c486e,
	0x0880a486f,
	0x000406100,
	0x00c204878,
	0x00002486e,
	0x0880e6100,
	0x00f9c2f40,
	0x001344aaf,
	0x001346f32,
	0x0486f004c,
	0x061000ec6,
	0x0588f2f00,
	0x0486f0050,
	0x02f2f013c,
	0x061000f92,
	0x04a806c0a,
	0x0486e8815,
	0x061000468,
	0x0588f2f2f,
	0x001406100,
	0x00f404fef,
	0x000102f2f,
	0x001346100,
	0x00f344fef,
	0x000484878,
	0x00001486e,
	0x088216100,
	0x00f482f40,
	0x000f8486f,
	0x000106100,
	0x00e78588f,
	0x02f00486f,
	0x000142f2f,
	0x001006100,
	0x00f442f2f,
	0x001046100,
	0x00f004fef,
	0x001104e75,
	0x070012f40,
	0x00104508f,
	0x06000fee6,
	0x0598f4878,
	0x01000486e,
	0x0877a2f2f,
	0x000286100,
	0x008482200,
	0x08b3e2f2f,
	0x000106100,
	0x00f062200,
	0x07002b081,
	0x066080c2e,
	0x0004f877a,
	0x0677c4a81,
	0x042e72f41,
	0x0002644df,
	0x06e0e486e,
	0x084c26100,
	0x002aa222f,
	0x00028588f,
	0x02f01486e,
	0x0977a486e,
	0x0877a6100,
	0x009c24a80,
	0x06638102e,
	0x0877d49c0,
	0x02f00102e,
	0x0877c49c0,
	0x02f00102e,
	0x0877b49c0,
	0x02f00102e,
	0x0877a49c0,
	0x02f002f2f,
	0x00040486e,
	0x084cb6100,
	0x005dc486e,
	0x084f26100,
	0x0025e4fef,
	0x0001c0c2e,
	0x00033977a,
	0x0670c6100,
	0x0091870ff,
	0x04fef0010,
	0x04e75422e,
	0x08b40486e,
	0x08829486e,
	0x08b3e6100,
	0x00de44a80,
	0x066084280,
	0x04fef0018,
	0x04e75486e,
	0x0882c486e,
	0x08b3e6100,
	0x00dcc4a80,
	0x06634486e,
	0x09cd2486e,
	0x09cee486e,
	0x0882f486e,
	0x08b3e6100,
	0x00b24486e,
	0x08b3e6100,
	0x00de0588f,
	0x02f00486e,
	0x08b3e2f2f,
	0x0003c6100,
	0x00eac4fef,
	0x000386000,
	0x0ff7e486e,
	0x08836486e,
	0x08b3e6100,
	0x00d884a80,
	0x04fef0024,
	0x06600ff68,
	0x061000896,
	0x0486e9cd2,
	0x0486e9cee,
	0x0486e8839,
	0x0486e8b3e,
	0x061000ad6,
	0x0486e8b3e,
	0x061000d92,
	0x0588f2f00,
	0x0486e8b3e,
	0x02f2f0020,
	0x061000e5e,
	0x04fef001c,
	0x06000ff30,
	0x0598f486e,
	0x088406100,
	0x009dc1d7c,
	0x000329b3e,
	0x03d7cffff,
	0x09b42486e,
	0x08b3e486e,
	0x09b3e6100,
	0x017102f00,
	0x02f400010,
	0x0486e8b3e,
	0x02f2f001c,
	0x061000e22,
	0x0b0af0018,
	0x0670a486e,
	0x084fd6100,
	0x0024a588f,
	0x04fef0034,
	0x04e750c2e,
	0x0004b877b,
	0x06600ff7c,
	0x088476100,
	0x002f6588f,
	0x048781000,
	0x0486e877a,
	0x02f2f0034,
	0x0610007a2,
	0x022004fef,
	0x0000c6000,
	0x0ff62598f,
	0x0486e8506,
	0x06100058a,
	0x01d7c0034,
	0x0977a3d7c,
	0x0ffff977e,
	0x0486e877a,
	0x0486e977a,
	0x061000fe4,
	0x02f002f40,
	0x00010486e,
	0x0877a2f2f,
	0x0001c6100,
	0x00776b0af,
	0x00018670a,
	0x0486e8511,
	0x0610001dc,
	0x0588f4878,
	0x01000486e,
	0x0877a2f2f,
	0x000286100,
	0x007442f40,
	0x000244aaf,
	0x000246e0a,
	0x0486e851f,
	0x0610001b8,
	0x0588f2f2f,
	0x00024486e,
	0x0977a486e,
	0x0877a6100,
	0x008d24a80,
	0x0660a486e,
	0x0852c6100,
	0x0019a588f,
	0x00c2e0037,
	0x0977a6618,
	0x0486e9780,
	0x0486e853b,
	0x0610004fa,
	0x0486e9780,
	0x06100017c,
	0x04fef000c,
	0x00c2e0035,
	0x0977a670a,
	0x0486e8545,
	0x061000168,
	0x0486e8b3e,
	0x02f2f0028,
	0x061000df0,
	0x022007002,
	0x0b0816608,
	0x00c2e004f,
	0x08b3e677c,
	0x04a8142e7,
	0x02f410026,
	0x044df6e0e,
	0x0486e8851,
	0x0610002c0,
	0x0222f0028,
	0x0588f2f01,
	0x0486e9b3e,
	0x0486e8b3e,
	0x061000fea,
	0x04a806638,
	0x0102e8b41,
	0x049c02f00,
	0x0102e8b40,
	0x049c02f00,
	0x0102e8b3f,
	0x049c02f00,
	0x0102e8b3e,
	0x049c02f00,
	0x02f2f0040,
	0x0486e885a,
	0x06100092a,
	0x0486e8881,
	0x061000274,
	0x04fef001c,
	0x00c2e0033,
	0x09b3e670a,
	0x0486e888c,
	0x061000260,
	0x0588f4fef,
	0x000344e75,
	0x04fefff80,
	0x04857486e,
	0x085526100,
	0x0161c4a80,
	0x00c2e004b,
	0x08b3f6600,
	0x0ff7c4878,
	0x01000486e,
	0x08b3e2f2f,
	0x000346100,
	0x00d4a2200,
	0x04fef000c,
	0x06000ff62,
	0x0598f486e,
	0x088956100,
	0x008d81d7c,
	0x000349b3e,
	0x03d7cffff,
	0x09b42486e,
	0x08b3e486e,
	0x09b3e6100,
	0x0160c2f00,
	0x02f400010,
	0x0486e8b3e,
	0x02f2f001c,
	0x061000d1e,
	0x0b0af0018,
	0x0670a486e,
	0x088a06100,
	0x001f2588f,
	0x048781000,
	0x0486e8b3e,
	0x02f2f0028,
	0x061000cec,
	0x02f400024,
	0x04aaf0024,
	0x06e0a486e,
	0x088ae6100,
	0x001ce588f,
	0x02f2f0024,
	0x0486e9b3e,
	0x0486e8b3e,
	0x061000efa,
	0x04a80660a,
	0x0486e88bb,
	0x0610001b0,
	0x0588f0c2e,
	0x000379b3e,
	0x06618486e,
	0x09b44486e,
	0x088ca6100,
	0x00848486e,
	0x09b446100,
	0x001924fef,
	0x0000c0c2e,
	0x000359b3e,
	0x0670a486e,
	0x088d46100,
	0x0017e588f,
	0x04fef0034,
	0x04e754fef,
	0x0ff48486f,
	0x00038486e,
	0x088e16100,
	0x01c424a80,
	0x06c0a202f,
	0x0008c4fef,
	0x000884e75,
	0x0486f0008,
	0x0486e8557,
	0x061001602,
	0x000c44fef,
	0x000c04e75,
	0x02f360162,
	0x08032000c,
	0x0486e88e6,
	0x0486f0010,
	0x0610008c2,
	0x0486f004c,
	0x0486f0018,
	0x061001c14,
	0x04a806c0a,
	0x0202f0094,
	0x04fef0090,
	0x0202f00d8,
	0x04fef00d4,
	0x04e75486e,
	0x085636100,
	0x00498486f,
	0x000886100,
	0x0065e4a80,
	0x088f16100,
	0x007d0486f,
	0x000cc6100,
	0x00bf04a80,
	0x06c0a486e,
	0x0856a6100,
	0x088f86100,
	0x0010e588f,
	0x061000670,
	0x04fef0018,
	0x061000c02,
	0x04fef0024,
	0x072ffb280,
	0x06700009e,
	0x04281b280,
	0x067222f2f,
	0x000746100,
	0x0063e2f2f,
	0x000886100,
	0x006362f6f,
	0x00080008c,
	0x000ac6100,
	0x00bd02f2f,
	0x000c06100,
	0x00bc82f6f,
	0x000b800c4,
	0x0508f202f,
	0x000844fef,
	0x000804e75,
	0x02f2f0078,
	0x06100061c,
	0x000bc4fef,
	0x000b84e75,
	0x02f2f00b0,
	0x061000bae,
	0x042a72f2f,
	0x0008c6100,
	0x0061e2f2f,
	0x000906100,
	0x0060a4878,
	0x000c46100,
	0x00bb02f2f,
	0x000c86100,
	0x00b9c4878,
	0x000012f2f,
	0x000886100,
	0x0060a2f2f,
	0x0008c6100,
	0x005f64aae,
	0x0802a6720,
	0x042a7486e,
	0x08588486e,
	0x08585486e,
	0x08581486e,
	0x08579486e,
	0x085746100,
	0x004fc4fef,
	0x000c06100,
	0x00b9c2f2f,
	0x000c46100,
	0x00b884aae,
	0x080366720,
	0x042a7486f,
	0x00020486e,
	0x08913486e,
	0x0890f486e,
	0x08907486e,
	0x089026100,
	0x009564fef,
	0x0003460a2,
	0x042a7486e,
	0x085a7486e,
	0x085a4486e,
	0x085a1486e,
	0x08599486e,
	0x085946100,
	0x004dc4fef,
	0x042a7486f,
	0x00020486e,
	0x08926486e,
	0x08923486e,
	0x0891b486e,
	0x089166100,
	0x009364fef,
	0x000346082,
	0x0486e856f,
	0x0486e88fd,
	0x06158588f,
	0x06082598f,
	0x02f2f000c,
	0x061000530,
	0x061000a8e,
	0x02f002f40,
	0x000082f2f,
	0x000142f2f,
	0x000146100,
	0x005c6b0af,
	0x00b58b0af,
	0x000106708,
	0x02f2f001c,
	0x0612c588f,
	0x04fef0014,
	0x04e754fef,
	0x0ffc04857,
	0x0610005ae,
	0x061000bc0,
	0x0486f0004,
	0x02f2f004c,
	0x0486e85b3,
	0x0486e8929,
	0x048780002,
	0x0610003e6,
	0x06100071e,
	0x04fef0054,
	0x04e754fef,
	0x0ffc04857,
	0x06100058a,
	0x061000b9c,
	0x0486f0004,
	0x02f2f004c,
	0x0486e85c1,
	0x0486e8937,
	0x048780002,
	0x0610003c2,
	0x0610006fa,
	0x042a76100,
	0x0031c4fef,
	0x006544fef,
	0x000584e75,
	0x04feffefc,
	0x02f2f010c,
	0x02f2f010c,
	0x0486e85cf,
	0x06100033a,
	0x0486e8945,
	0x061000672,
	0x02f2f011c,
	0x0486f0010,
	0x042a76100,
	0x005302200,
	0x00ac22200,
	0x04fef0018,
	0x067da42e7,
	0x02f400102,
	0x044df6c0c,
	0x0486e85d8,
	0x0486e894e,
	0x0619c222f,
	0x00104588f,
	0x07001b081,


@@ 988,31 1181,237 @@ ulong bootcode[]={
	0x01920ffff,
	0x048572f2f,
	0x001106100,
	0x00454222f,
	0x009b2222f,
	0x00108508f,
	0x020014fef,
	0x001044e75,
	0x04fefffb4,
	0x042a7486e,
	0x089706100,
	0x00a6c4a80,
	0x06c10486e,
	0x089796100,
	0x008fe70ff,
	0x04fef0058,
	0x04e754878,
	0x01000486e,
	0x08b3e2f00,
	0x02f400058,
	0x061000a4c,
	0x04a806c10,
	0x0486e898c,
	0x0610008d8,
	0x070ff4fef,
	0x000644e75,
	0x0486e899c,
	0x0486e8b3e,
	0x061000a44,
	0x022404a80,
	0x06610486e,
	0x089a26100,
	0x005c070ff,
	0x04fef006c,
	0x04e755c89,
	0x042af005c,
	0x07006b0af,
	0x0005c6f08,
	0x07001b089,
	0x06600027c,
	0x02f2f0060,
	0x0610009ce,
	0x048780006,
	0x0486e806e,
	0x0486f0038,
	0x0610007e2,
	0x01f7c0008,
	0x000481f7c,
	0x000060049,
	0x0422f004a,
	0x01f7c0001,
	0x0004b1f7c,
	0x00008004c,
	0x0422f004d,
	0x01f7c0006,
	0x0004e1f7c,
	0x00004004f,
	0x0422f0050,
	0x01f7c0001,
	0x000514878,
	0x000042f2f,
	0x0008041ef,
	0x00044d1fc,
	0x000000026,
	0x02f086100,
	0x007944878,
	0x00001486e,
	0x089b86100,
	0x009884a80,
	0x042e72f40,
	0x0008644df,
	0x06c10486e,
	0x089c16100,
	0x0081270ff,
	0x04fef0090,
	0x04e754878,
	0x00002486e,
	0x089cf6100,
	0x009604a80,
	0x042e72f40,
	0x0009244df,
	0x06c10486e,
	0x089d96100,
	0x007ea70ff,
	0x04fef0098,
	0x04e754878,
	0x0000e486e,
	0x089e82f2f,
	0x000946100,
	0x0094c4a80,
	0x06c10486e,
	0x089f66100,
	0x007c670ff,
	0x04fef00a4,
	0x04e752f7c,
	0x000006b3c,
	0x00060486e,
	0x089fe6100,
	0x004b84878,
	0x0002c486f,
	0x0006c2f2f,
	0x000a86100,
	0x009184a80,
	0x06c10486e,
	0x08a036100,
	0x0079270ff,
	0x04fef00b4,
	0x04e754878,
	0x00640486e,
	0x08b3e2f2f,
	0x000b46100,
	0x008e2226f,
	0x0007c4a80,
	0x06c10486e,
	0x08a0d6100,
	0x0076a70ff,
	0x04fef00c0,
	0x04e750c29,
	0x00008000c,
	0x066080c29,
	0x00006000d,
	0x067164878,
	0x001f46100,
	0x008b8486e,
	0x08a5d6100,
	0x0044c4fef,
	0x00020608e,
	0x04a290014,
	0x066e40c29,
	0x000020015,
	0x066dc4281,
	0x0122f0093,
	0x02f014869,
	0x0001c41ef,
	0x00088d1fc,
	0x000000026,
	0x02f086100,
	0x00652226f,
	0x000884a80,
	0x04fef000c,
	0x066b44280,
	0x01029001b,
	0x02f004280,
	0x01029001a,
	0x02f004280,
	0x010290019,
	0x02f004280,
	0x010290018,
	0x02f004280,
	0x010290017,
	0x02f004280,
	0x010290016,
	0x02f00486e,
	0x08a182f2f,
	0x000e06100,
	0x004a42f2f,
	0x000e4486e,
	0x08a396100,
	0x003c82f2f,
	0x000e06100,
	0x007f42f2f,
	0x000e06100,
	0x007ec4878,
	0x00001486e,
	0x08a3d6100,
	0x008044a80,
	0x042e72f40,
	0x000f244df,
	0x06c10486e,
	0x08a456100,
	0x0068e70ff,
	0x04fef00f8,
	0x04e754878,
	0x000064877,
	0x0016200b8,
	0x00020486f,
	0x000b06100,
	0x005d44878,
	0x000044877,
	0x0016200c4,
	0x0002641ef,
	0x000bc5c88,
	0x02f086100,
	0x005bc4878,
	0x0000c486f,
	0x000c42f2f,
	0x001106100,
	0x007c4226f,
	0x001144a80,
	0x06c162f09,
	0x06100077a,
	0x0486e8a53,
	0x061000634,
	0x070ff4fef,
	0x001204e75,
	0x02f096100,
	0x007644280,
	0x04fef011c,
	0x04e75137c,
	0x00030fffe,
	0x0137c0078,
	0x0ffff4869,
	0x0fffe2f49,
	0x0005c6100,
	0x00526222f,
	0x000601f80,
	0x019200046,
	0x04878003a,
	0x02f2f0060,
	0x061000634,
	0x052802240,
	0x052af0068,
	0x04fef000c,
	0x06000fd3a,
	0x04fefff70,
	0x0486e85fa,
	0x0486e8a5f,
	0x0610002de,
	0x0610004cc,
	0x061000726,
	0x02f40000c,
	0x0588f72ff,
	0x0b2806700,
	0x000fc4281,
	0x0b2806700,
	0x0009842a7,
	0x0486e8637,
	0x0610004b8,
	0x0486e8a9c,
	0x061000712,
	0x02f400008,
	0x04aaf0008,
	0x06c0a486e,
	0x086406100,
	0x0ff32588f,
	0x08aa56100,
	0x0fbfa588f,
	0x048780001,
	0x0486f001c,
	0x02f2f0010,
	0x06100049a,
	0x0610006f4,
	0x0102f0024,
	0x049c04fef,
	0x000147204,


@@ 1020,34 1419,34 @@ ulong bootcode[]={
	0x048780001,
	0x0486f0014,
	0x02f2f009c,
	0x06100048c,
	0x0610006e6,
	0x04a804fef,
	0x0000c6c28,
	0x0486f0010,
	0x061000482,
	0x06100075c,
	0x02f2f000c,
	0x06100009a,
	0x02f2f0008,
	0x061000430,
	0x06100068a,
	0x0486f001c,
	0x0486e864e,
	0x0486e8ab3,
	0x06100024a,
	0x04fef0014,
	0x0518f609c,
	0x02f2f0008,
	0x061762f2f,
	0x000046100,
	0x0040e4fef,
	0x006684fef,
	0x000984e75,
	0x048780080,
	0x0486f0014,
	0x02f2f009c,
	0x061000422,
	0x06100067c,
	0x026006c16,
	0x0486f001c,
	0x06100042e,
	0x061000708,
	0x0486f0020,
	0x0486e861d,
	0x0486e8a82,
	0x061000206,
	0x060fe4282,
	0x0b4836c18,


@@ 1060,48 1459,48 @@ ulong bootcode[]={
	0x02f03486f,
	0x000204878,
	0x000016100,
	0x003ee4fef,
	0x006484fef,
	0x0001860a4,
	0x0486e8611,
	0x06100fe54,
	0x0486e8a76,
	0x06100fb1c,
	0x0588f6098,
	0x04fefffdc,
	0x02f2f0028,
	0x0486e8669,
	0x0486e8ace,
	0x0486f000c,
	0x061000282,
	0x048780001,
	0x0486f0014,
	0x0610003a4,
	0x0610005fe,
	0x048780003,
	0x0486e8677,
	0x0486e8adc,
	0x02f002f40,
	0x000206100,
	0x003aa2f2f,
	0x006042f2f,
	0x000206100,
	0x003664fef,
	0x005c04fef,
	0x000484e75,
	0x04fefff74,
	0x042a7486e,
	0x0867b6100,
	0x003764a80,
	0x08ae06100,
	0x005d04a80,
	0x042e72f40,
	0x0001244df,
	0x06c0a486e,
	0x086846100,
	0x0fdee588f,
	0x0486e86a7,
	0x08ae96100,
	0x0fab6588f,
	0x0486e8b0c,
	0x06100015a,
	0x042af0018,
	0x048780001,
	0x0486f0024,
	0x02f2f001c,
	0x06100034a,
	0x0610005a4,
	0x02f400028,
	0x04aaf0028,
	0x06c0a486e,
	0x086b26100,
	0x0fdbe588f,
	0x08b176100,
	0x0fa86588f,
	0x04aaf0028,
	0x04fef000c,
	0x067d2102f,


@@ 1114,7 1513,7 @@ ulong bootcode[]={
	0x06748202f,
	0x0000c1daf,
	0x000140920,
	0x0997252af,
	0x09cd252af,
	0x0000c0c2f,
	0x0000a0014,
	0x06710701c,


@@ 1123,14 1522,14 @@ ulong bootcode[]={
	0x06e924fef,
	0x0000c202f,
	0x0000c4236,
	0x009209972,
	0x009209cd2,
	0x02f2f0008,
	0x0610002ac,
	0x0486e86d7,
	0x061000506,
	0x0486e8b3c,
	0x0610000ca,
	0x04fef0094,
	0x04e75486e,
	0x086d56100,
	0x08b3a6100,
	0x000bc598f,
	0x06000ff56,
	0x060b84aaf,


@@ 1140,9 1539,9 @@ ulong bootcode[]={
	0x042817021,
	0x0b0816f1e,
	0x04ab61d20,
	0x09892660e,
	0x09bf2660e,
	0x02daf0008,
	0x01d209892,
	0x01d209bf2,
	0x07001588f,
	0x04e755281,
	0x07021b081,


@@ 1152,31 1551,31 @@ ulong bootcode[]={
	0x000084282,
	0x07021b082,
	0x06f182036,
	0x02d209892,
	0x02d209bf2,
	0x0b0886606,
	0x042b62d20,
	0x098925282,
	0x09bf25282,
	0x07021b082,
	0x06ee8588f,
	0x04e754aaf,
	0x000046606,
	0x042a7610c,
	0x0588f486e,
	0x0805a6104,
	0x080566104,
	0x0588f4e75,
	0x0518f7220,
	0x04a816d22,
	0x02eb61d20,
	0x098924a97,
	0x09bf24a97,
	0x067122f41,
	0x0000442b6,
	0x01d209892,
	0x01d209bf2,
	0x04eb70151,
	0x0222f0004,
	0x053814a81,
	0x06cde2f2f,
	0x0000c6100,
	0x001dc4fef,
	0x004364fef,
	0x0000c4e75,
	0x04fefeff8,
	0x041ef100c,


@@ 1186,20 1585,20 @@ ulong bootcode[]={
	0x0d1fc0000,
	0x010002f08,
	0x0486f0014,
	0x061001274,
	0x06100154e,
	0x0220041ef,
	0x000189288,
	0x02f01486f,
	0x0001c4878,
	0x000016100,
	0x001de2400,
	0x004382400,
	0x042e72f40,
	0x0001e44df,
	0x06c1a52ae,
	0x08002700a,
	0x0b0ae8002,
	0x06e0e486e,
	0x0804a6100,
	0x080466100,
	0x0ff70242f,
	0x00020588f,
	0x020024fef,


@@ 1212,269 1611,335 @@ ulong bootcode[]={
	0x0d1fc0000,
	0x010002f08,
	0x0486f0014,
	0x06100120c,
	0x0610014e6,
	0x0220041ef,
	0x000189288,
	0x02f01486f,
	0x0001c2f2f,
	0x010246100,
	0x001762400,
	0x003d02400,
	0x042e72f40,
	0x0001e44df,
	0x06c1a52ae,
	0x08002700a,
	0x0b0ae8002,
	0x06e0e486e,
	0x0804a6100,
	0x080466100,
	0x0ff08242f,
	0x00020588f,
	0x020024fef,
	0x010244e75,
	0x0518f226f,
	0x0000c2eae,
	0x0802641ef,
	0x0802a41ef,
	0x000105888,
	0x02f082f2f,
	0x000144869,
	0x010002f09,
	0x0610011a8,
	0x061001482,
	0x02d6f0010,
	0x0802690af,
	0x0802a90af,
	0x0001c4fef,
	0x000184e75,
	0x041ef0004,
	0x058882f08,
	0x02f2f0008,
	0x0610000de,
	0x0508f4e75,
	0x0206f0004,
	0x0142f000b,
	0x067121218,
	0x0670ab202,
	0x066f82008,
	0x053804e75,
	0x042804e75,
	0x04a1866fc,
	0x020085380,
	0x04e75246f,
	0x00004226f,
	0x000081019,
	0x0670eb01a,
	0x067f86d04,
	0x0518f206f,
	0x0000c4282,
	0x042830c10,
	0x000206700,
	0x001000c10,
	0x000096700,
	0x000f80c10,
	0x0002d6700,
	0x000d60c10,
	0x0002b6700,
	0x000ce0c10,
	0x000306606,
	0x04a280001,
	0x066340c10,
	0x000306d06,
	0x00c100039,
	0x06f0c4a83,
	0x067024482,
	0x02002508f,
	0x04e752002,
	0x02202d281,
	0x0d281d081,
	0x0d0801218,
	0x049c1d081,
	0x090bc0000,
	0x000302400,
	0x060cc0c28,
	0x000780001,
	0x067240c28,
	0x000580001,
	0x0671c0c10,
	0x000306dc2,
	0x00c100037,
	0x06ebce782,
	0x0121849c1,
	0x0d48194bc,
	0x000000030,
	0x060e45488,
	0x00c100030,
	0x06d060c10,
	0x000396f32,
	0x00c100061,
	0x06d060c10,
	0x000666f36,
	0x00c100041,
	0x06d8c0c10,
	0x000466e86,
	0x0e9821218,
	0x049c1d481,
	0x094bc0000,
	0x000370c10,
	0x000306dd4,
	0x00c100039,
	0x06ecee982,
	0x0121849c1,
	0x0d48194bc,
	0x000000030,
	0x060b2e982,
	0x0121849c1,
	0x0d48194bc,
	0x000000057,
	0x060a20c18,
	0x0002d6602,
	0x076010c10,
	0x000206708,
	0x00c100009,
	0x06600ff20,
	0x0528860ee,
	0x052886000,
	0x0fef62f2f,
	0x000046100,
	0x0fee4588f,
	0x04e7541ef,
	0x000045888,
	0x02f082f2f,
	0x000086100,
	0x00216508f,
	0x04e75202f,
	0x0000c671a,
	0x0246f0004,
	0x0226f0008,
	0x0b30a6606,
	0x0538066f8,
	0x04e756d04,
	0x070ff4e75,
	0x070014e75,
	0x04a1266f8,
	0x042804e75,
	0x0202f000c,
	0x06f4c246f,
	0x00004226f,
	0x00008b5c9,
	0x062462209,
	0x0c2bc0000,
	0x000036710,
	0x053806d32,
	0x014d92209,
	0x0c2bc0000,
	0x0000366f0,
	0x090bc0000,
	0x000106d10,
	0x024d924d9,
	0x024d924d9,
	0x090bc0000,
	0x000106cf0,
	0x0d0bc0000,
	0x0000f6d06,
	0x014d95380,
	0x06cfa202f,
	0x000044e75,
	0x0d3c0d5c0,
	0x02209c2bc,
	0x000000003,
	0x067105380,
	0x06de81521,
	0x02209c2bc,
	0x000000003,
	0x066f090bc,
	0x000000010,
	0x06d102521,
	0x025212521,
	0x0252190bc,
	0x000000010,
	0x06cf0d0bc,
	0x00000000f,
	0x06dbc1521,
	0x053806db6,
	0x060f84fef,
	0x0ffc04857,
	0x0610001f8,
	0x0206f0048,
	0x0b0fc0000,
	0x067044a10,
	0x06616486f,
	0x00004486e,
	0x0825e4878,
	0x000026100,
	0x0fd4c4fef,
	0x000504e75,
	0x0486f0004,
	0x02f08486e,
	0x082564878,
	0x000026100,
	0x0fd34588f,
	0x060e4206f,
	0x00004142f,
	0x0000b6712,
	0x01218670a,
	0x0b20266f8,
	0x020085380,
	0x04e754280,
	0x04e754a18,
	0x066fc2008,
	0x053804e75,
	0x0246f0004,
	0x0226f0008,
	0x014d966fc,
	0x0202f0004,
	0x04e75226f,
	0x000044a19,
	0x0670c2449,
	0x04a1966fc,
	0x093ca2009,
	0x04e757000,
	0x04e75598f,
	0x0222f0008,
	0x04a2f000f,
	0x0660e42a7,
	0x01019670e,
	0x0b01a67f8,
	0x06d0470ff,
	0x04e757001,
	0x04e754a12,
	0x066f84280,
	0x04e75246f,
	0x00004226f,
	0x0000814d9,
	0x066fc202f,
	0x000044e75,
	0x0226f0004,
	0x04a19670c,
	0x024494a19,
	0x066fc93ca,
	0x020094e75,
	0x070004e75,
	0x0242f000c,
	0x0226f0008,
	0x0206f0004,
	0x053826d06,
	0x01010b019,
	0x067164a82,
	0x06c044280,
	0x04e751010,
	0x049c01229,
	0x0ffff49c1,
	0x090814e75,
	0x04a1866dc,
	0x042804e75,
	0x0598f222f,
	0x000084a2f,
	0x0000f660e,
	0x042a72f01,
	0x06100ff48,
	0x04fef000c,
	0x04e754297,
	0x0102f000f,
	0x049c02f00,
	0x02f016100,
	0x0ff7c4fef,
	0x0000c4e75,
	0x04297102f,
	0x0000f49c0,
	0x02f002f01,
	0x06100ff66,
	0x02200670a,
	0x02f400008,
	0x05281508f,
	0x060e4202f,
	0x000084fef,
	0x0000c4e75,
	0x070024e40,
	0x04e757015,
	0x0ff322200,
	0x0670a2f40,
	0x000085281,
	0x0508f60e4,
	0x0202f0008,
	0x04fef000c,
	0x04e757002,
	0x04e404e75,
	0x070084e40,
	0x04e757004,
	0x070154e40,
	0x04e757008,
	0x04e404e75,
	0x070164e40,
	0x04e757005,
	0x070044e40,
	0x04e757016,
	0x04e404e75,
	0x070074e40,
	0x04e757009,
	0x070054e40,
	0x04e757007,
	0x04e404e75,
	0x0700d4e40,
	0x04e75700e,
	0x070094e40,
	0x04e75700d,
	0x04e404e75,
	0x0700f4e40,
	0x04e757011,
	0x0700e4e40,
	0x04e75700f,
	0x04e404e75,
	0x070124e40,
	0x04e757014,
	0x070114e40,
	0x04e757012,
	0x04e404e75,
	0x070014e40,
	0x04e75598f,
	0x0206f0008,
	0x04878001c,
	0x02f082f48,
	0x070144e40,
	0x04e754fef,
	0x0fff4206f,
	0x000141010,
	0x049c04a80,
	0x042e72f40,
	0x0000644df,
	0x0660a202f,
	0x000104fef,
	0x0000c4e75,
	0x02f086100,
	0x0fef82f40,
	0x000042f2f,
	0x000082f2f,
	0x000146100,
	0x01e18701c,
	0x0d1af000c,
	0x04878001c,
	0x02f2f0010,
	0x000186100,
	0x0fe8e2200,
	0x04a81673a,
	0x02f2f000c,
	0x02f2f0024,
	0x02f012f41,
	0x000206100,
	0x0fee84a80,
	0x0660a202f,
	0x000204fef,
	0x000244e75,
	0x02f2f001c,
	0x048770162,
	0x00020001c,
	0x061001dfe,
	0x0701cd1af,
	0x000184878,
	0x0001c2f2f,
	0x0001c4877,
	0x00162002c,
	0x000386100,
	0x01de4226f,
	0x00030206f,
	0x00024701c,
	0x0d1c04280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x042811228,
	0x000027410,
	0x0e5a18081,
	0x042811228,
	0x000037418,
	0x0e5a18081,
	0x023400054,
	0x058884280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x042811228,
	0x000027410,
	0x0e5a18081,
	0x042811228,
	0x000037418,
	0x0e5a18081,
	0x023400058,
	0x058884280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x042811228,
	0x000027410,
	0x0e5a18081,
	0x042811228,
	0x000037418,
	0x0e5a18081,
	0x02340005c,
	0x058884280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x042811228,
	0x000027410,
	0x0e5a18081,
	0x042811228,
	0x000037418,
	0x0e5a18081,
	0x023400060,
	0x058884280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x042811228,
	0x000027410,
	0x0e5a18081,
	0x042811228,
	0x000037418,
	0x0e5a18081,
	0x023400064,
	0x058884280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x042811228,
	0x000027410,
	0x0e5a18081,
	0x042811228,
	0x000037418,
	0x0e5a18081,
	0x02340006c,
	0x050884280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400070,
	0x054884280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400072,
	0x054882008,
	0x090af002c,
	0x04fef0028,
	0x04e75598f,
	0x0226f000c,
	0x0206f0008,
	0x012984280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400004,
	0x054881011,
	0x049c07232,
	0x0b0016d10,
	0x07253b001,
	0x06e0a3036,
	0x00b208036,
	0x04efb0000,
	0x04280588f,
	0x04e754280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400002,
	0x054884878,
	0x0001e2f08,
	0x02f480008,
	0x048690022,
	0x061001c36,
	0x0206f000c,
	0x0701ed1c0,
	0x04fef000c,
	0x0202f0008,
	0x0d0af0010,
	0x0b0886608,
	0x0202f0010,
	0x0588f4e75,
	0x04280588f,
	0x04e754280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400002,
	0x054884878,
	0x000240001,
	0x06100fe58,
	0x022004a81,
	0x04fef0014,
	0x066c64280,
	0x04fef0018,
	0x04e757001,
	0x04e404e75,
	0x0598f206f,
	0x000084878,
	0x0001c2f08,
	0x02f480008,
	0x048690006,
	0x061001bea,
	0x02f2f0014,
	0x06100fd46,
	0x0701cd1af,
	0x0000c4878,
	0x000242f2f,
	0x0001c2f2f,
	0x000104877,
	0x001620020,
	0x000226100,
	0x01bd0206f,
	0x000187024,
	0x0d1c04fef,
	0x000186098,
	0x0001c6100,
	0x0fd2c701c,
	0x0d1af0018,
	0x04878001c,
	0x02f2f001c,
	0x048770162,
	0x0002c0038,
	0x06100fd12,
	0x0226f0030,
	0x0206f0024,
	0x0701cd1c0,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080814281,
	0x012280002,
	0x07410e5a1,
	0x080814281,
	0x012280003,
	0x07418e5a1,
	0x080812340,
	0x000545888,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x000025488,
	0x080814281,
	0x012280002,
	0x07410e5a1,
	0x080814281,
	0x012280003,
	0x07418e5a1,
	0x080812340,
	0x000585888,
	0x042801010,
	0x042811228,
	0x00001e181,


@@ 1485,7 1950,7 @@ ulong bootcode[]={
	0x012280003,
	0x07418e5a1,
	0x080812340,
	0x000085888,
	0x0005c5888,
	0x042801010,
	0x042811228,
	0x00001e181,


@@ 1496,101 1961,97 @@ ulong bootcode[]={
	0x012280003,
	0x07418e5a1,
	0x080812340,
	0x0000c5888,
	0x06000ff2a,
	0x000605888,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080814281,
	0x012280002,
	0x07410e5a1,
	0x080814281,
	0x012280003,
	0x07418e5a1,
	0x080812340,
	0x000645888,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080814281,
	0x012280002,
	0x07410e5a1,
	0x080814281,
	0x012280003,
	0x07418e5a1,
	0x080812340,
	0x0006c5088,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x000025488,
	0x000705488,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x0000a5488,
	0x04878001c,
	0x000725488,
	0x0200890af,
	0x0002c4fef,
	0x000284e75,
	0x0598f226f,
	0x0000c206f,
	0x000081298,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x000045488,
	0x0101149c0,
	0x07232b001,
	0x06d107253,
	0x0b0016e0a,
	0x030360b20,
	0x082024efb,
	0x000004280,
	0x0588f4e75,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x000025488,
	0x04878001e,
	0x02f082f48,
	0x000084869,
	0x0000c6100,
	0x01b18206f,
	0x0000c701c,
	0x000226100,
	0x0fb64206f,
	0x0000c701e,
	0x0d1c04fef,
	0x0000c6000,
	0x0fee04280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400002,
	0x054886000,
	0x0fec84280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400002,
	0x054884878,
	0x000742f08,
	0x02f480008,
	0x048690006,
	0x061001aca,
	0x0206f000c,
	0x07074d1c0,
	0x04fef000c,
	0x06000fe92,
	0x0000c202f,
	0x00008d0af,
	0x00010b088,
	0x06608202f,
	0x00010588f,
	0x04e754280,
	0x0588f4e75,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x000025488,
	0x048780074,
	0x04878001c,
	0x02f082f48,
	0x000084869,
	0x000066100,
	0x01a94206f,
	0x0000c7074,
	0x0d1c04fef,
	0x0000c6000,
	0x0fe5c4280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400002,
	0x054886000,
	0x0fe444280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400002,
	0x054886000,
	0x0fe2c4280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400002,
	0x054886000,
	0x0fe144280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400002,
	0x054886000,
	0x0fdfc4280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400002,
	0x054886000,
	0x0fde44280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400002,
	0x054884280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x02340000a,
	0x054886000,
	0x0fdb84280,
	0x0fb18701c,
	0x0d1af000c,
	0x048780024,
	0x02f2f0010,
	0x048770162,
	0x000200022,
	0x06100fafe,
	0x0206f0018,
	0x07024d1c0,
	0x04fef0018,
	0x060984280,
	0x010104281,
	0x012280001,
	0x0e1818081,


@@ 1605,36 2066,8 @@ ulong bootcode[]={
	0x042811228,
	0x000037418,
	0x0e5a18081,
	0x023400006,
	0x050884280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x02340000a,
	0x054885288,
	0x02348000e,
	0x02029000a,
	0x0d1c06000,
	0x0fd544280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400002,
	0x054884280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x02340000a,
	0x054885288,
	0x02348000e,
	0x02029000a,
	0x0d1c06000,
	0x0fd1c4280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400002,
	0x054884280,
	0x023400008,
	0x058884280,
	0x010104281,
	0x012280001,
	0x0e1818081,


@@ 1644,14 2077,9 @@ ulong bootcode[]={
	0x042811228,
	0x000037418,
	0x0e5a18081,
	0x023400006,
	0x050884280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x02340000a,
	0x054886000,
	0x0fcc44280,
	0x02340000c,
	0x058886000,
	0x0ff2a4280,
	0x010104281,
	0x012280001,
	0x0e1818081,


@@ 1660,38 2088,134 @@ ulong bootcode[]={
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x03340000a,
	0x054884878,
	0x0001c2f08,
	0x02f480008,
	0x04869000c,
	0x06100fa46,
	0x0206f000c,
	0x0701cd1c0,
	0x04fef000c,
	0x06000fee0,
	0x042801010,
	0x042811228,
	0x000027410,
	0x0e5a18081,
	0x042811228,
	0x000037418,
	0x0e5a18081,
	0x023400008,
	0x058884280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x042811228,
	0x000027410,
	0x0e5a18081,
	0x00001e181,
	0x080813340,
	0x000025488,
	0x06000fec8,
	0x042801010,
	0x042811228,
	0x000037418,
	0x0e5a18081,
	0x02340000c,
	0x058886000,
	0x0fc544280,
	0x00001e181,
	0x080813340,
	0x000025488,
	0x048780074,
	0x02f082f48,
	0x000084869,
	0x000066100,
	0x0f9f8206f,
	0x0000c7074,
	0x0d1c04fef,
	0x0000c6000,
	0x0fe924280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400002,
	0x054884878,
	0x0001c2f08,
	0x000742f08,
	0x02f480008,
	0x04869000c,
	0x061001856,
	0x0226f0018,
	0x048690006,
	0x06100f9c2,
	0x0206f000c,
	0x0701cd1c0,
	0x07074d1c0,
	0x04fef000c,
	0x06000fe5c,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x000025488,
	0x06000fe44,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x000025488,
	0x06000fe2c,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x000025488,
	0x06000fe14,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x000025488,
	0x06000fdfc,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x000025488,
	0x06000fde4,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x000025488,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080812340,
	0x0000a5488,
	0x06000fdb8,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x000025488,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080814281,
	0x012280002,
	0x07410e5a1,
	0x080814281,
	0x012280003,
	0x07418e5a1,
	0x080812340,
	0x000065088,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080812340,
	0x0000a5488,
	0x052882348,
	0x0000e2029,
	0x0000ad1c0,
	0x06000fd54,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x000025488,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080812340,
	0x0000a5488,
	0x052882348,
	0x0000e2029,
	0x0000ad1c0,
	0x06000fd1c,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x000025488,
	0x042801010,
	0x042811228,
	0x00001e181,


@@ 1702,10 2226,13 @@ ulong bootcode[]={
	0x012280003,
	0x07418e5a1,
	0x080812340,
	0x000065888,
	0x013580028,
	0x04fef000c,
	0x06000fbea,
	0x000065088,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080812340,
	0x0000a5488,
	0x06000fcc4,
	0x042801010,
	0x042811228,
	0x00001e181,


@@ 1733,15 2260,7 @@ ulong bootcode[]={
	0x07418e5a1,
	0x080812340,
	0x0000c5888,
	0x06000fb7a,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x000025488,
	0x013580028,
	0x06000fb5e,
	0x06000fbc2,
	0x06000fc54,
	0x042801010,
	0x042811228,
	0x00001e181,


@@ 1751,28 2270,24 @@ ulong bootcode[]={
	0x02f082f48,
	0x000084869,
	0x0000c6100,
	0x0175c206f,
	0x0f784226f,
	0x00018206f,
	0x0000c701c,
	0x0d1c04fef,
	0x0000c6000,
	0x0fb244280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400002,
	0x054886000,
	0x0fb0c4280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400002,
	0x054884280,
	0x0d1c04280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x03340000a,
	0x054886000,
	0x0fae04280,
	0x042811228,
	0x000027410,
	0x0e5a18081,
	0x042811228,
	0x000037418,
	0x0e5a18081,
	0x023400006,
	0x058881358,
	0x000284fef,
	0x0000c6000,
	0x0fbea4280,
	0x010104281,
	0x012280001,
	0x0e1818081,


@@ 1800,7 2315,15 @@ ulong bootcode[]={
	0x0e5a18081,
	0x02340000c,
	0x058886000,
	0x0fa704280,
	0x0fb7a4280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400002,
	0x054881358,
	0x000286000,
	0x0fb5e6000,
	0x0fbc24280,
	0x010104281,
	0x012280001,
	0x0e1818081,


@@ 1808,147 2331,219 @@ ulong bootcode[]={
	0x054884878,
	0x0001c2f08,
	0x02f480008,
	0x048690006,
	0x061001672,
	0x0701cd1af,
	0x0000c4878,
	0x0001c2f2f,
	0x000104877,
	0x001620020,
	0x000226100,
	0x01658701c,
	0x0d1af0018,
	0x04878001c,
	0x02f2f001c,
	0x048770162,
	0x0002c003e,
	0x06100163e,
	0x0206f0024,
	0x04869000c,
	0x06100f68a,
	0x0206f000c,
	0x0701cd1c0,
	0x04fef0024,
	0x06000fa06,
	0x06000fa02,
	0x04fef000c,
	0x06000fb24,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x000065488,
	0x06000f9ea,
	0x048780040,
	0x000025488,
	0x06000fb0c,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x000025488,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x0000a5488,
	0x06000fae0,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x000025488,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080814281,
	0x012280002,
	0x07410e5a1,
	0x080814281,
	0x012280003,
	0x07418e5a1,
	0x080812340,
	0x000085888,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080814281,
	0x012280002,
	0x07410e5a1,
	0x080814281,
	0x012280003,
	0x07418e5a1,
	0x080812340,
	0x0000c5888,
	0x06000fa70,
	0x042801010,
	0x042811228,
	0x00001e181,
	0x080813340,
	0x000025488,
	0x04878001c,
	0x02f082f48,
	0x000084869,
	0x000066100,
	0x01600206f,
	0x0000c7040,
	0x0f5a0701c,
	0x0d1af000c,
	0x04878001c,
	0x02f2f0010,
	0x048770162,
	0x000200022,
	0x06100f586,
	0x0701cd1af,
	0x000184878,
	0x0001c2f2f,
	0x0001c4877,
	0x00162002c,
	0x0003e6100,
	0x0f56c206f,
	0x00024701c,
	0x0d1c04fef,
	0x0000c6000,
	0x0f9c86000,
	0x0f9c46000,
	0x0f9c06000,
	0x0f9bc6000,
	0x0f9b8598f,
	0x0226f0008,
	0x0206f000c,
	0x010d13029,
	0x000041080,
	0x042803029,
	0x00004e088,
	0x011400001,
	0x054881011,
	0x049c07232,
	0x0b0016d10,
	0x07253b001,
	0x06e0a3036,
	0x00b20807a,
	0x04efb0000,
	0x04280588f,
	0x04e753029,
	0x000021080,
	0x030290002,
	0x048c0e080,
	0x011400001,
	0x054884878,
	0x0001e4869,
	0x000222f08,
	0x02f48000c,
	0x06100157a,
	0x000246000,
	0x0fa066000,
	0x0fa024280,
	0x010104281,
	0x012280001,
	0x0e1818081,
	0x033400006,
	0x054886000,
	0x0f9ea4878,
	0x000402f08,
	0x02f480008,
	0x048690006,
	0x06100f52e,
	0x0206f000c,
	0x0701ed1c0,
	0x07040d1c0,
	0x04fef000c,
	0x0200890af,
	0x0000c588f,
	0x04e753029,
	0x000021080,
	0x06000f9c8,
	0x06000f9c4,
	0x06000f9c0,
	0x06000f9bc,
	0x06000f9b8,
	0x0598f226f,
	0x00008206f,
	0x0000c10d1,
	0x030290004,
	0x010804280,
	0x030290004,
	0x0e0881140,
	0x000015488,
	0x0101149c0,
	0x07232b001,
	0x06d107253,
	0x0b0016e0a,
	0x030360b20,
	0x082464efb,
	0x000004280,
	0x0588f4e75,
	0x030290002,
	0x048c0e080,
	0x011400001,
	0x054884878,
	0x0001c4869,
	0x000062f08,
	0x02f48000c,
	0x06100153e,
	0x0701cd1af,
	0x0000c4878,
	0x000244877,
	0x001620018,
	0x000222f2f,
	0x000146100,
	0x01524206f,
	0x000187024,
	0x010803029,
	0x0000248c0,
	0x0e0801140,
	0x000015488,
	0x04878001e,
	0x048690022,
	0x02f082f48,
	0x0000c6100,
	0x0f4a8206f,
	0x0000c701e,
	0x0d1c04fef,
	0x0001860a8,
	0x0000c2008,
	0x090af000c,
	0x0588f4e75,
	0x030290002,
	0x010803029,
	0x0000248c0,
	0x0e0801140,
	0x000015488,
	0x020290008,
	0x010802029,
	0x00008e088,
	0x04878001c,
	0x048690006,
	0x02f082f48,
	0x0000c6100,
	0x0f46c701c,
	0x0d1af000c,
	0x048780024,
	0x048770162,
	0x000180022,
	0x02f2f0014,
	0x06100f452,
	0x0206f0018,
	0x07024d1c0,
	0x04fef0018,
	0x060a83029,
	0x000021080,
	0x030290002,
	0x048c0e080,
	0x011400001,
	0x054882029,
	0x000081080,
	0x020290008,
	0x07210e2a8,
	0x011400002,
	0x020290008,
	0x07218e2a8,
	0x011400003,
	0x058882029,
	0x0000c1080,
	0x02029000c,
	0x0e0881140,
	0x000012029,
	0x0000c7210,
	0x000087210,
	0x0e2a81140,
	0x000022029,
	0x0000c7218,
	0x000087218,
	0x0e2a81140,
	0x000035888,
	0x06000ff3e,
	0x02029000c,
	0x010802029,
	0x0000ce088,
	0x011400001,
	0x02029000c,
	0x07210e2a8,
	0x011400002,
	0x02029000c,
	0x07218e2a8,
	0x011400003,
	0x058886000,
	0x0ff3e3029,
	0x000021080,
	0x030290002,
	0x048c0e080,
	0x011400001,
	0x054883029,
	0x0000a1080,
	0x03029000a,
	0x048c0e080,
	0x011400001,
	0x054884878,
	0x0001c4869,
	0x0000c2f08,
	0x02f48000c,
	0x06100f39e,
	0x0206f000c,
	0x0701cd1c0,
	0x04fef000c,
	0x06000fef4,
	0x030290002,
	0x010803029,
	0x0000248c0,
	0x0e0801140,
	0x000015488,
	0x03029000a,
	0x06000fedc,
	0x030290002,
	0x010803029,
	0x0000a48c0,
	0x0000248c0,
	0x0e0801140,
	0x000015488,
	0x04878001c,
	0x04869000c,
	0x048780074,
	0x048690006,
	0x02f082f48,
	0x0000c6100,
	0x01470206f,
	0x0000c701c,
	0x0f350206f,
	0x0000c7074,
	0x0d1c04fef,
	0x0000c6000,
	0x0fef43029,
	0x000021080,
	0x030290002,
	0x048c0e080,
	0x011400001,
	0x054886000,
	0x0fedc3029,
	0x0fea63029,
	0x000021080,
	0x030290002,
	0x048c0e080,


@@ 1957,65 2552,106 @@ ulong bootcode[]={
	0x000744869,
	0x000062f08,
	0x02f48000c,
	0x061001422,
	0x06100f31a,
	0x0206f000c,
	0x07074d1c0,
	0x04fef000c,
	0x06000fea6,
	0x06000fe70,
	0x030290002,
	0x010803029,
	0x0000248c0,
	0x0e0801140,
	0x000015488,
	0x048780074,
	0x048690006,
	0x02f082f48,
	0x0000c6100,
	0x013ec206f,
	0x0000c7074,
	0x0d1c04fef,
	0x0000c6000,
	0x0fe703029,
	0x000021080,
	0x030290002,
	0x048c0e080,
	0x011400001,
	0x054886000,
	0x0fe583029,
	0x000021080,
	0x06000fe58,
	0x030290002,
	0x048c0e080,
	0x011400001,
	0x054886000,
	0x0fe403029,
	0x000021080,
	0x010803029,
	0x0000248c0,
	0x0e0801140,
	0x000015488,
	0x06000fe40,
	0x030290002,
	0x048c0e080,
	0x011400001,
	0x054886000,
	0x0fe283029,
	0x000021080,
	0x010803029,
	0x0000248c0,
	0x0e0801140,
	0x000015488,
	0x06000fe28,
	0x030290002,
	0x048c0e080,
	0x011400001,
	0x054886000,
	0x0fe103029,
	0x000021080,
	0x010803029,
	0x0000248c0,
	0x0e0801140,
	0x000015488,
	0x06000fe10,
	0x030290002,
	0x048c0e080,
	0x010803029,
	0x0000248c0,
	0x0e0801140,
	0x000015488,
	0x06000fdf8,
	0x030290002,
	0x010803029,
	0x0000248c0,
	0x0e0801140,
	0x000015488,
	0x02029000a,
	0x010802029,
	0x0000ae080,
	0x011400001,
	0x054886000,
	0x0fdf83029,
	0x0fdce3029,
	0x000021080,
	0x030290002,
	0x048c0e080,
	0x011400001,
	0x054882029,
	0x0000a1080,
	0x000061080,
	0x020290006,
	0x0e0801140,
	0x000012029,
	0x000067210,
	0x0e2a01140,
	0x000022029,
	0x000067218,
	0x0e2a01140,
	0x000034228,
	0x000044228,
	0x000054228,
	0x000064228,
	0x000075088,
	0x02029000a,
	0x010802029,
	0x0000ae080,
	0x011400001,
	0x054885288,
	0x02f29000a,
	0x02f29000e,
	0x02f082f48,
	0x0000c6100,
	0x0f1f4206f,
	0x0000c2037,
	0x001620014,
	0x0000ad1c0,
	0x04fef000c,
	0x06000fd44,
	0x030290002,
	0x010803029,
	0x0000248c0,
	0x0e0801140,
	0x000015488,
	0x06000fdce,
	0x02029000a,
	0x010802029,
	0x0000ae080,
	0x011400001,
	0x054885288,
	0x02f29000a,
	0x02f29000e,
	0x02f082f48,
	0x0000c6100,
	0x0f1a4206f,
	0x0000c2037,
	0x001620014,
	0x0000ad1c0,
	0x04fef000c,
	0x06000fcf4,
	0x030290002,
	0x010803029,
	0x0000248c0,


@@ 2040,42 2676,47 @@ ulong bootcode[]={
	0x02029000a,
	0x0e0801140,
	0x000015488,
	0x052882f29,
	0x0000a2f29,
	0x0000e2f08,
	0x02f48000c,
	0x0610012c6,
	0x0206f000c,
	0x020370162,
	0x00014000a,
	0x0d1c04fef,
	0x0000c6000,
	0x0fd443029,
	0x000021080,
	0x06000fc90,
	0x030290002,
	0x048c0e080,
	0x011400001,
	0x054882029,
	0x0000a1080,
	0x02029000a,
	0x010803029,
	0x0000248c0,
	0x0e0801140,
	0x000015488,
	0x052882f29,
	0x0000a2f29,
	0x0000e2f08,
	0x02f48000c,
	0x061001276,
	0x0206f000c,
	0x020370162,
	0x00014000a,
	0x0d1c04fef,
	0x0000c6000,
	0x0fcf43029,
	0x000021080,
	0x030290002,
	0x048c0e080,
	0x020290008,
	0x010802029,
	0x00008e088,
	0x011400001,
	0x054882029,
	0x020290008,
	0x07210e2a8,
	0x011400002,
	0x020290008,
	0x07218e2a8,
	0x011400003,
	0x058882029,
	0x0000c1080,
	0x02029000c,
	0x0e0881140,
	0x000012029,
	0x0000c7210,
	0x0e2a81140,
	0x000022029,
	0x0000c7218,
	0x0e2a81140,
	0x000035888,
	0x06000fc24,
	0x030290002,
	0x010803029,
	0x0000248c0,
	0x0e0801140,
	0x000015488,
	0x04878001c,
	0x04869000c,
	0x02f082f48,
	0x0000c6100,
	0x0f098226f,
	0x00014206f,
	0x0000c701c,
	0x0d1c02029,
	0x000061080,
	0x020290006,
	0x0e0801140,


@@ 2085,70 2726,76 @@ ulong bootcode[]={
	0x000022029,
	0x000067218,
	0x0e2a01140,
	0x000034228,
	0x000044228,
	0x000054228,
	0x000064228,
	0x000075088,
	0x02029000a,
	0x010802029,
	0x0000ae080,
	0x011400001,
	0x054886000,
	0x0fc903029,
	0x000021080,
	0x000035888,
	0x010e90028,
	0x04fef000c,
	0x06000fbbc,
	0x030290002,
	0x048c0e080,
	0x010803029,
	0x0000248c0,
	0x0e0801140,
	0x000015488,
	0x020290008,
	0x010802029,
	0x00008e088,
	0x011400001,
	0x054882029,
	0x000081080,
	0x020290008,
	0x07210e2a8,
	0x011400002,
	0x020290008,
	0x07218e2a8,
	0x011400003,
	0x058882029,
	0x0000c1080,
	0x02029000c,
	0x0e0881140,
	0x000012029,
	0x000087210,
	0x0000c7210,
	0x0e2a81140,
	0x000022029,
	0x000087218,
	0x0000c7218,
	0x0e2a81140,
	0x000035888,
	0x02029000c,
	0x010802029,
	0x0000ce088,
	0x06000fb50,
	0x030290002,
	0x010803029,
	0x0000248c0,
	0x0e0801140,
	0x000015488,
	0x010e90028,
	0x06000fb34,
	0x06000fb88,
	0x030290002,
	0x010803029,
	0x0000248c0,
	0x0e0801140,
	0x000015488,
	0x04878001c,
	0x04869000c,
	0x02f082f48,
	0x0000c6100,
	0x0efa4206f,
	0x0000c701c,
	0x0d1c04fef,
	0x0000c6000,
	0x0fafa3029,
	0x000021080,
	0x030290002,
	0x048c0e080,
	0x011400001,
	0x02029000c,
	0x07210e2a8,
	0x011400002,
	0x02029000c,
	0x07218e2a8,
	0x011400003,
	0x058886000,
	0x0fc243029,
	0x054886000,
	0x0fae23029,
	0x000021080,
	0x030290002,
	0x048c0e080,
	0x011400001,
	0x054884878,
	0x0001c4869,
	0x0000c2f08,
	0x02f48000c,
	0x06100116a,
	0x0226f0014,
	0x0206f000c,
	0x0701cd1c0,
	0x020290006,
	0x010802029,
	0x00006e080,
	0x054883029,
	0x0000a1080,
	0x03029000a,
	0x048c0e080,
	0x011400001,
	0x020290006,
	0x07210e2a0,
	0x011400002,
	0x020290006,
	0x07218e2a0,
	0x011400003,
	0x0588810e9,
	0x000284fef,
	0x0000c6000,
	0x0fbbc3029,
	0x054886000,
	0x0fab63029,
	0x000021080,
	0x030290002,
	0x048c0e080,


@@ 2175,1117 2822,1012 @@ ulong bootcode[]={
	0x07218e2a8,
	0x011400003,
	0x058886000,
	0x0fb503029,
	0x000021080,
	0x030290002,
	0x048c0e080,
	0x011400001,
	0x0548810e9,
	0x000286000,
	0x0fb346000,
	0x0fb883029,
	0x0fa4a3029,
	0x000021080,
	0x030290002,
	0x048c0e080,
	0x011400001,
	0x054884878,
	0x0001c4869,
	0x0000c2f08,
	0x000062f08,
	0x02f48000c,
	0x061001076,
	0x0206f000c,
	0x0701cd1c0,
	0x04fef000c,
	0x06000fafa,
	0x030290002,
	0x010803029,
	0x0000248c0,
	0x0e0801140,
	0x000015488,
	0x06000fae2,
	0x030290002,
	0x010803029,
	0x0000248c0,
	0x0e0801140,
	0x000015488,
	0x03029000a,
	0x010803029,
	0x0000a48c0,
	0x0e0801140,
	0x000015488,
	0x06000fab6,
	0x030290002,
	0x010803029,
	0x0000248c0,
	0x0e0801140,
	0x000015488,
	0x020290008,
	0x010802029,
	0x00008e088,
	0x011400001,
	0x020290008,
	0x07210e2a8,
	0x011400002,
	0x020290008,
	0x07218e2a8,
	0x011400003,
	0x058882029,
	0x0000c1080,
	0x02029000c,
	0x0e0881140,
	0x000012029,
	0x0000c7210,
	0x0e2a81140,
	0x000022029,
	0x0000c7218,
	0x0e2a81140,
	0x000035888,
	0x06000fa4a,
	0x030290002,
	0x010803029,
	0x0000248c0,
	0x0e0801140,
	0x06100eebe,
	0x0701cd1af,
	0x0000c4878,
	0x0001c4877,
	0x001620018,
	0x000222f2f,
	0x000146100,
	0x0eea4701c,
	0x0d1af0018,
	0x04878001c,
	0x048770162,
	0x00024003e,
	0x02f2f0020,
	0x06100ee8a,
	0x0206f0024,
	0x0701cd1c0,
	0x04fef0024,
	0x06000f9e0,
	0x06000f9dc,
	0x030290006,
	0x010804280,
	0x030290006,
	0x0e0881140,
	0x000015488,
	0x04878001c,
	0x06000f9c4,
	0x048780040,
	0x048690006,
	0x02f082f48,
	0x0000c6100,
	0x00f90701c,
	0x0d1af000c,
	0x04878001c,
	0x048770162,
	0x000180022,
	0x02f2f0014,
	0x061000f76,
	0x0701cd1af,
	0x000184878,
	0x0001c4877,
	0x001620024,
	0x0003e2f2f,
	0x000206100,
	0x00f5c206f,
	0x00024701c,
	0x0ee4c206f,
	0x0000c7040,
	0x0d1c04fef,
	0x000246000,
	0x0f9e06000,
	0x0f9dc3029,
	0x000061080,
	0x042803029,
	0x00006e088,
	0x011400001,
	0x054886000,
	0x0f9c44878,
	0x000404869,
	0x000062f08,
	0x02f48000c,
	0x061000f1e,
	0x0206f000c,
	0x07040d1c0,
	0x04fef000c,
	0x06000f9a2,
	0x06000f99e,
	0x06000f99a,
	0x06000f996,
	0x06000f992,
	0x04fefff8c,
	0x048572f2f,
	0x0007c6100,
	0x0f0b072ff,
	0x0b2806608,
	0x070ff4fef,
	0x0007c4e75,
	0x02f2f0084,
	0x0486f000c,
	0x06100f0a8,
	0x042804fef,
	0x000844e75,
	0x02d7c0000,
	0x04a9486de,
	0x0000c6000,
	0x0f9a26000,
	0x0f99e6000,
	0x0f99a6000,
	0x0f9966000,
	0x0f9924fef,
	0x0ff8c4857,
	0x02f2f007c,
	0x06100f030,
	0x072ffb280,
	0x0660870ff,
	0x04fef007c,
	0x04e752f2f,
	0x00084486f,
	0x0000c6100,
	0x0f0a84280,
	0x04fef0084,
	0x04e752d7c,
	0x0000053aa,
	0x0811a1d7c,
	0x000019dd1,
	0x01d7c0001,
	0x099d51d7c,
	0x0000199d7,
	0x09dd31d7c,
	0x000019dc9,
	0x01d7c0001,
	0x099cd1d7c,
	0x000019a12,
	0x09e0e1d7c,
	0x000019e12,
	0x01d7c0001,
	0x09a161d7c,
	0x000019a1f,
	0x02d7c0000,
	0x0470486e2,
	0x09e1b2d7c,
	0x00000501a,
	0x0811e1d7c,
	0x000029e0a,
	0x01d7c0002,
	0x09a0e1d7c,
	0x000029a19,
	0x09e151d7c,
	0x000029e1e,
	0x01d7c0002,
	0x09a221d7c,
	0x000029a02,
	0x02d7c0000,
	0x04ae686e6,
	0x09dfe2d7c,
	0x0000053fc,
	0x081221d7c,
	0x000039e0b,
	0x01d7c0003,
	0x09a0f1d7c,
	0x000039a10,
	0x09e0c1d7c,
	0x000039e0d,
	0x01d7c0003,
	0x09a111d7c,
	0x0000399ef,
	0x01d7c0003,
	0x099f12d7c,
	0x000004a36,
	0x086ea1d7c,
	0x000049a0d,
	0x09deb1d7c,
	0x000039ded,
	0x02d7c0000,
	0x04a5c86ee,
	0x01d7c0005,
	0x09a1d2d7c,
	0x000004a7a,
	0x086f21d7c,
	0x0000699cf,
	0x070072d40,
	0x080164878,
	0x000804878,
	0x00001486e,
	0x098126100,
	0x00eba422e,
	0x09812422e,
	0x0981b422e,
	0x0981c422e,
	0x098374fef,
	0x0000c4e75,
	0x04aae8016,
	0x066046100,
	0x0ff30022f,
	0x0007f0007,
	0x07028b0ae,
	0x080166e04,
	0x070014e75,
	0x0202e8016,
	0x0122f0007,
	0x049c11d80,
	0x0192099aa,
	0x052ae8016,
	0x0122f0007,
	0x049c11036,
	0x0192099aa,
	0x049c02daf,
	0x000080d20,
	0x086da4280,
	0x04e754fef,
	0x0ffe42a2f,
	0x0002c226f,
	0x000282f6e,
	0x080120004,
	0x02eae8022,
	0x0266f0020,
	0x0202f0024,
	0x053802d40,
	0x08022282e,
	0x08022988b,
	0x042822002,
	0x0b4846c16,
	0x010312910,
	0x049c02600,
	0x0707fc083,
	0x04a360920,
	0x098126600,
	0x00186d3c2,
	0x0d7c22d4b,
	0x080122002,
	0x0d5ae8026,
	0x0101949c0,
	0x024007025,
	0x0b082675e,
	0x04a826626,
	0x0b7ee8022,
	0x06506266e,
	0x08022538b,
	0x0b7ee8022,
	0x064024213,
	0x02d6f0004,
	0x080122d57,
	0x08022200b,
	0x04fef001c,
	0x04e75b7ee,
	0x080226402,
	0x016c252ae,
	0x08026700a,
	0x0b0826606,
	0x042ae8026,
	0x060807009,
	0x0b0826600,
	0x0ff7a7007,
	0x0d0ae8026,
	0x0c0bcffff,
	0x0fff82d40,
	0x080266000,
	0x0ff66347c,
	0x0fc182f7c,
	0x0fffffc18,
	0x0001442af,
	0x000101019,
	0x0534c8126,
	0x01d7c0004,
	0x09e092d7c,
	0x000005372,
	0x0812a1d7c,
	0x000059e19,
	0x02d7c0000,
	0x05390812e,
	0x01d7c0006,
	0x09dcb7007,
	0x02d40800a,
	0x048780080,
	0x048780001,
	0x0486e9d0a,
	0x061000e1c,
	0x0422e9d0a,
	0x0422e9d13,
	0x0422e9d14,
	0x0422e9d2f,
	0x04fef000c,
	0x04e754aae,
	0x0800a6604,
	0x06100ff30,
	0x0022f007f,
	0x000077028,
	0x0b0ae800a,
	0x06e047001,
	0x04e75202e,
	0x0800a122f,
	0x0000749c1,
	0x01d801920,
	0x09da652ae,
	0x0800a122f,
	0x0000749c1,
	0x010361920,
	0x09da649c0,
	0x02daf0008,
	0x00d208116,
	0x042804e75,
	0x04fefffe4,
	0x02a2f002c,
	0x0226f0028,
	0x02f6e801a,
	0x000042eae,
	0x0802e266f,
	0x00020202f,
	0x000245380,
	0x02d40802e,
	0x0282e802e,
	0x0988b4282,
	0x02002b484,
	0x06c161031,
	0x0291049c0,
	0x02600707f,
	0x0c0834a36,
	0x009209d0a,
	0x066000186,
	0x0d3c2d7c2,
	0x02d4b801a,
	0x02002d5ae,
	0x0802a1019,
	0x049c02400,
	0x02f490028,
	0x04a826606,
	0x053896000,
	0x0ff42702e,
	0x0b0826610,
	0x0b4fcfc18,
	0x06604347c,
	0x0000042af,
	0x0001460d6,
	0x07031b082,
	0x06e467039,
	0x0b0826d40,
	0x042837030,
	0x0b0826e06,
	0x07039b082,
	0x06c10b4fc,
	0x0fc186604,
	0x0244360bc,
	0x02f430014,
	0x060b62003,
	0x02203d281,
	0x0d281d081,
	0x0d080d082,
	0x090bc0000,
	0x000302600,
	0x07025b082,
	0x0675e4a82,
	0x06626b7ee,
	0x0802e6506,
	0x0266e802e,
	0x0538bb7ee,
	0x0802e6402,
	0x042132d6f,
	0x00004801a,
	0x02d57802e,
	0x0200b4fef,
	0x0001c4e75,
	0x0b7ee802e,
	0x0640216c2,
	0x052ae802a,
	0x0700ab082,
	0x0660642ae,
	0x0802a6080,
	0x07009b082,
	0x06600ff7a,
	0x07007d0ae,
	0x0802ac0bc,
	0x0fffffff8,
	0x02d40802a,
	0x06000ff66,
	0x0347cfc18,
	0x02f7cffff,
	0x0fc180014,
	0x042af0010,
	0x0101949c0,
	0x024002f49,
	0x0002860c2,
	0x000284a82,
	0x066065389,
	0x06000ff42,
	0x0702eb082,
	0x06610b4fc,
	0x0fc186604,
	0x0347c0000,
	0x042af0014,
	0x060d67031,
	0x0b0826e46,
	0x07039b082,
	0x06d404283,
	0x07030b082,
	0x06606b4fc,
	0x0fc1866b4,
	0x0702ab082,
	0x0661c2430,
	0x059905885,
	0x02005b4fc,
	0x0fc186606,
	0x024426000,
	0x0ff662f42,
	0x06e067039,
	0x0b0826c10,
	0x0b4fcfc18,
	0x066042443,
	0x060bc2f43,
	0x0001460b6,
	0x020032203,
	0x0d281d281,
	0x0d081d080,
	0x0d08290bc,
	0x000000030,
	0x026001019,
	0x049c02400,
	0x02f490028,
	0x060c27030,
	0x0b0826606,
	0x0b4fcfc18,
	0x066b4702a,
	0x0b082661c,
	0x024305990,
	0x058852005,
	0x0b4fcfc18,
	0x066062442,
	0x06000ff66,
	0x02f420014,
	0x06000ff5e,
	0x0c4bc0000,
	0x0007f2f02,
	0x02f2f0014,
	0x02f2f001c,
	0x02f0a2f4a,
	0x000282f05,
	0x02f450040,
	0x010362920,
	0x09da649c0,
	0x020760d20,
	0x081164e90,
	0x02a2f0040,
	0x0266e801a,
	0x0246f002c,
	0x0226f003c,
	0x04a806c0e,
	0x0448081af,
	0x000244fef,
	0x000146000,
	0x0ff5ec4bc,
	0x00000007f,
	0x02f022f2f,
	0x000142f2f,
	0x0001c2f0a,
	0x02f4a0028,
	0x02f052f45,
	0x000401036,
	0x0292099aa,
	0x049c02076,
	0x00d2086da,
	0x04e902a2f,
	0x00040266e,
	0x08012246f,
	0x0002c226f,
	0x0003c4a80,
	0x06c0e4480,
	0x081af0024,
	0x0ff10da80,
	0x04fef0014,
	0x06000ff10,
	0x0da804fef,
	0x000146000,
	0x0fe5a1783,
	0x029105282,
	0x06000fe58,
	0x0222f0008,
	0x00c81ffff,
	0x0fc186708,
	0x07002c0af,
	0x000106614,
	0x06000fe5a,
	0x017832910,
	0x052826000,
	0x0fe58222f,
	0x000080c81,
	0x0fffffc18,
	0x067087002,
	0x0c0af0010,
	0x066142f2f,
	0x0000c2f01,
	0x02f2f000c,
	0x02f012f2f,
	0x0000c6100,
	0x0020e4fef,
	0x0000c4e75,
	0x0448160e8,
	0x04fefffbc,
	0x0242f0058,
	0x0226f0048,
	0x0206f0050,
	0x02e2f0054,
	0x02a174284,
	0x0367c0000,
	0x02c02726f,
	0x0b4816d00,
	0x001c86e00,
	0x001a47c08,
	0x0347c0000,
	0x07078c087,
	0x07228b081,
	0x06d000156,
	0x06e00011c,
	0x028117004,
	0x02f400014,
	0x07020c087,
	0x066064a84,
	0x06d0000fe,
	0x0422f0041,
	0x0741c7040,
	0x0c0876700,
	0x000da2005,
	0x04c460801,
	0x026017030,
	0x0d6807039,
	0x0b0836c04,
	0x07027d680,
	0x022021f83,
	0x06100020e,
	0x04fef000c,
	0x04e754481,
	0x060e84fef,
	0x0ffbc242f,
	0x00058226f,
	0x00048206f,
	0x000502e2f,
	0x000542a17,
	0x04284367c,
	0x000002c02,
	0x0726fb481,
	0x06d0001c8,
	0x06e0001a4,
	0x07c08347c,
	0x000007078,
	0x0c0877228,
	0x0b0816d00,
	0x001566e00,
	0x0011c2811,
	0x070042f40,
	0x000147020,
	0x0c0876606,
	0x04a846d00,
	0x000fe422f,
	0x00041741c,
	0x07040c087,
	0x0670000da,
	0x020054c46,
	0x008012601,
	0x07030d680,
	0x07039b083,
	0x06c047027,
	0x0d6802202,
	0x01f832920,
	0x000247002,
	0x0b0826f7c,
	0x07004c087,
	0x0671a0c37,
	0x000302920,
	0x000246710,
	0x07008b086,
	0x066385382,
	0x01fbc0030,
	0x029200024,
	0x0b4fc0000,
	0x0670a5382,
	0x01fbc002d,
	0x029200024,
	0x07002b082,
	0x06f7c7004,
	0x0c087671a,
	0x00c370030,
	0x02f074878,
	0x0fc182f2f,
	0x000544877,
	0x029200030,
	0x06100ff0c,
	0x0202f0024,
	0x04fef0054,
	0x04e757010,
	0x0b08666cc,
	0x0b6fc0000,
	0x067165382,
	0x01fbc0058,
	0x029200024,
	0x067107008,
	0x0b0866638,
	0x053821fbc,
	0x000302920,
	0x00024b4fc,
	0x00000670a,
	0x0002460b0,
	0x053821fbc,
	0x0002d2920,
	0x000242f07,
	0x04878fc18,
	0x02f2f0054,
	0x048772920,
	0x000306100,
	0x0ff0c202f,
	0x000244fef,
	0x000544e75,
	0x07010b086,
	0x066ccb6fc,
	0x000006716,
	0x053821fbc,
	0x000582920,
	0x000245382,
	0x01fbc0030,
	0x029200024,
	0x060b05382,
	0x01fbc0078,
	0x029200024,
	0x060e87040,
	0x0c087673e,
	0x020054c46,
	0x008012a00,
	0x0b0fcfc18,
	0x06708701e,
	0x09088b082,
	0x06f127040,
	0x0c0876706,
	0x04a856f00,
	0x0ff5e4a84,
	0x06f00ff58,
	0x053827040,
	0x0c0876600,
	0x0ff2a2004,
	0x04c460001,
	0x026016000,
	0x0ff262004,
	0x04c460001,
	0x0280060c0,
	0x04484347c,
	0x000016000,
	0x0fefc7230,
	0x0b280671e,
	0x07248b280,
	0x0670c2811,
	0x000782920,
	0x0002460e8,
	0x07040c087,
	0x0673e2005,
	0x04c460801,
	0x02a00b0fc,
	0x0fc186708,
	0x0701e9088,
	0x0b0826f12,
	0x07040c087,
	0x067064a85,
	0x06f00ff5e,
	0x04a846f00,
	0x0ff585382,
	0x07040c087,
	0x06600ff2a,
	0x020044c46,
	0x000012601,
	0x06000ff26,
	0x020044c46,
	0x000012800,
	0x060c04484,
	0x0347c0001,
	0x06000fefc,
	0x07230b280,
	0x0671e7248,
	0x0b280670c,
	0x028117004,
	0x02f400014,
	0x06000fed8,
	0x02a117004,
	0x02f400014,
	0x06000fecc,
	0x028113404,
	0x042843802,
	0x070042f40,
	0x000146000,
	0x0fed82a11,
	0x0feba7208,
	0x0b280672a,
	0x07210b280,
	0x067127220,
	0x0b28066c4,
	0x028117004,
	0x02f400014,
	0x06000fe9c,
	0x028113404,
	0x0380248c4,
	0x070042f40,
	0x000146000,
	0x0fecc2811,
	0x034044284,
	0x038027004,
	0x02f400014,
	0x06000feba,
	0x07208b280,
	0x0672a7210,
	0x0b2806712,
	0x07220b280,
	0x066c42811,
	0x0fe8a2811,
	0x070042f40,
	0x000146000,
	0x0fe9c2811,
	0x034043802,
	0x048c47004,
	0x02f400014,
	0x06000fe8a,
	0x028117004,
	0x02f400014,
	0x06000fe7e,
	0x07275b286,
	0x0670e7278,
	0x0b2866600,
	0x0fe547c10,
	0x06000fe4e,
	0x08ebc0000,
	0x000207c0a,
	0x06000fe42,
	0x07258b282,
	0x0670a7264,
	0x0b2826600,
	0x0fe3460ea,
	0x0367c0001,
	0x060d8518f,
	0x02f2f000c,
	0x06100eacc,
	0x0266f0010,
	0x0246e8022,
	0x0262f0014,
	0x0226f0018,
	0x0206e8012,
	0x022000c83,
	0x0fffffc18,
	0x067064a83,
	0x06c000084,
	0x0101b49c0,
	0x024006734,
	0x0b2fcfc18,
	0x06706b2fc,
	0x000006fec,
	0x0b1ca6406,
	0x010c22d48,
	0x0801252ae,
	0x08026700a,
	0x0b0826642,
	0x042ae8026,
	0x0b2fcfc18,
	0x067ce5389,
	0x0101b49c0,
	0x0240066cc,
	0x0fe7e7275,
	0x0b286670e,
	0x07278b286,
	0x06600fe54,
	0x07c106000,
	0x0fe4e8ebc,
	0x000000020,
	0x07c0a6000,
	0x0fe427258,
	0x0b282670a,
	0x07264b282,
	0x06600fe34,
	0x060ea367c,
	0x0000160d8,
	0x0518f2f2f,
	0x0000c6100,
	0x0ea18266f,
	0x00010246e,
	0x0802e262f,
	0x00014226f,
	0x00018206e,
	0x0801a2200,
	0x00c83ffff,
	0x0fc186704,
	0x04a836d06,
	0x04fef000c,
	0x04e752403,
	0x04482b282,
	0x06cf2b1ca,
	0x0640810fc,
	0x000202d48,
	0x0801252ae,
	0x080265281,
	0x060e87009,
	0x0b08266bc,
	0x07007d0ae,
	0x08026c0bc,
	0x0fffffff8,
	0x02d408026,
	0x060aa2001,
	0x0b2836c00,
	0x0ff78b1ca,
	0x0640810fc,
	0x000202d48,
	0x0801252ae,
	0x080265281,
	0x060e4598f,
	0x04aae8016,
	0x066306100,
	0x0fa14262f,
	0x000182f03,
	0x02f2f0018,
	0x02f2f0018,
	0x02f2f0018,
	0x02f2f0018,
	0x012363920,
	0x099aa49c1,
	0x020761d20,
	0x086da4e90,
	0x04fef0018,
	0x04e751ebc,
	0x0002a202f,
	0x000181f40,
	0x000011f7c,
	0x0002a0002,
	0x0422f0003,
	0x04878fc18,
	0x042a7486f,
	0x0fc186706,
	0x04a836c00,
	0x00084101b,
	0x049c02400,
	0x06734b2fc,
	0x0fc186706,
	0x0b2fc0000,
	0x06fecb1ca,
	0x0640610c2,
	0x02d48801a,
	0x052ae802a,
	0x0700ab082,
	0x0664242ae,
	0x0802ab2fc,
	0x0fc1867ce,
	0x05389101b,
	0x049c02400,
	0x066cc0c83,
	0x0fffffc18,
	0x067044a83,
	0x06d064fef,
	0x0000c4e75,
	0x024034482,
	0x0b2826cf2,
	0x0b1ca6408,
	0x010fc0020,
	0x02d48801a,
	0x052ae802a,
	0x0528160e8,
	0x07009b082,
	0x066bc7007,
	0x0d0ae802a,
	0x0c0bcffff,
	0x0fff82d40,
	0x0802a60aa,
	0x02001b283,
	0x06c00ff78,
	0x0b1ca6408,
	0x010fc0020,
	0x02d48801a,
	0x052ae802a,
	0x0528160e4,
	0x0598f4aae,
	0x0800a6630,
	0x06100fa14,
	0x0262f0018,
	0x02f032f2f,
	0x000182f2f,
	0x000182f2f,
	0x000182f2f,
	0x000181236,
	0x039209da6,
	0x049c12076,
	0x01d208116,
	0x04e904fef,
	0x000184e75,
	0x01ebc002a,
	0x0202f0018,
	0x01f400001,
	0x01f7c002a,
	0x00002422f,
	0x000034878,
	0x0fc1842a7,
	0x0486f0008,
	0x06100feda,
	0x042804fef,
	0x000104e75,
	0x0598f2037,
	0x001610008,
	0x01e80422f,
	0x000014878,
	0x0fc182f2f,
	0x00010486f,
	0x000086100,
	0x0feda4280,
	0x0feb47004,
	0x04fef0010,
	0x04e75598f,
	0x020370161,
	0x000081e80,
	0x0422f0001,
	0x04878fc18,
	0x02f2f0010,
	0x0486f0008,
	0x06100feb4,
	0x04e752f2f,
	0x000102f2f,
	0x000102f2f,
	0x000102f37,
	0x001610010,
	0x06100fc68,
	0x070044fef,
	0x000104e75,
	0x02f2f0010,
	0x02f2f0010,
	0x02f2f0010,
	0x02f370161,
	0x000106100,
	0x0fc687004,
	0x04fef0010,
	0x04e75202e,
	0x08012b0ae,
	0x08022640c,
	0x01dbc0025,
	0x001618012,
	0x052ae8012,
	0x042804e75,
	0x0202f0014,
	0x07268b081,
	0x06d2a6e04,
	0x070f04e75,
	0x0726cb280,
	0x0670e7275,
	0x0b2806704,
	0x042804e75,
	0x070e04e75,
	0x07008c0af,
	0x000106704,
	0x070c04e75,
	0x070f84e75,
	0x07223b280,
	0x06714722b,
	0x0b280670a,
	0x0722db280,
	0x066d670fe,
	0x04e7570ff,
	0x04e7570fc,
	0x04e754fef,
	0x0ff74f237,
	0x055000161,
	0x00090f22f,
	0x075000034,
	0x0f2277500,
	0x0610008bc,
	0x04a80671c,
	0x02f2f00a4,
	0x04878fc18,
	0x02f2f00a4,
	0x0486e803a,
	0x06100fbc2,
	0x070084fef,
	0x000a44e75,
	0x048780001,
	0x0f22f5400,
	0x00040f227,
	0x074006100,
	0x008e44a80,
	0x0202e801a,
	0x0b0ae802e,
	0x0640c1dbc,
	0x000250161,
	0x0801a52ae,
	0x0801a4280,
	0x04e75202f,
	0x000147268,
	0x0b0816d2a,
	0x06e0470f0,
	0x04e75726c,
	0x0b280670e,
	0x07275b280,
	0x067044280,
	0x04e7570e0,
	0x04e757008,
	0x0c0af0010,
	0x0670470c0,
	0x04e7570f8,
	0x04e757223,
	0x0b2806714,
	0x0722bb280,
	0x0670a722d,
	0x0b28066d6,
	0x070fe4e75,
	0x070ff4e75,
	0x070fc4e75,
	0x04fefff74,
	0x0f2375500,
	0x001610090,
	0x0f22f7500,
	0x00034f227,
	0x075006100,
	0x0081e4a80,
	0x0671c2f2f,
	0x000b04878,
	0x000a44878,
	0x0fc182f2f,
	0x000b0486e,
	0x0803e6100,
	0x0fb907008,
	0x04fef00b0,
	0x000a4486e,
	0x082466100,
	0x0fbc27008,
	0x04fef00a4,
	0x04e754878,
	0x0fffff22f,
	0x05400004c,
	0x00001f22f,
	0x054000040,
	0x0f2277400,
	0x0610008b2,
	0x061000846,
	0x04a80671c,
	0x02f2f00bc,
	0x02f2f00b0,
	0x04878fc18,
	0x02f2f00bc,
	0x0486e8043,
	0x06100fb5e,
	0x02f2f00b0,
	0x0486e824a,
	0x06100fb90,
	0x070084fef,
	0x000bc4e75,
	0x042af0030,
	0x0f22f543a,
	0x00054f293,
	0x00016f22f,
	0x054000054,
	0x0f200001a,
	0x0f22f7400,
	0x0005452af,
	0x0003042af,
	0x000207041,
	0x0b0af00c0,
	0x06e0a705a,
	0x0b0af00c0,
	0x06c0004bc,
	0x042af0040,
	0x0f22f543a,
	0x00054f281,
	0x000e2486f,
	0x000b04e75,
	0x04878ffff,
	0x0f22f5400,
	0x0004cf227,
	0x074006100,
	0x008144a80,
	0x0671c2f2f,
	0x000bc4878,
	0x0fc182f2f,
	0x000bc486e,
	0x0824f6100,
	0x0fb5e7008,
	0x04fef00bc,
	0x04e7542af,
	0x00030f22f,
	0x0543a0054,
	0x0f2930016,
	0x0f22f5400,
	0x00054f200,
	0x0001af22f,
	0x074000054,
	0x052af0030,
	0x042af0020,
	0x07041b0af,
	0x000c06e0a,
	0x0705ab0af,
	0x000c06c00,
	0x004bc42af,
	0x00040f22f,
	0x054000058,
	0x0f2277400,
	0x0610004ac,
	0x0f22f4000,
	0x0004cf23c,
	0x054233fd3,
	0x044135547,
	0x05a32f22f,
	0x06000004c,
	0x0543a0054,
	0x0f28100e2,
	0x0486f0040,
	0x0f22f5400,
	0x00058f227,
	0x074006100,
	0x004acf22f,
	0x04000004c,
	0x0f23c5423,
	0x03fd34413,
	0x055475a32,
	0x0f22f6000,
	0x0004c202f,
	0x0004ce280,
	0x02f400048,
	0x044802f00,
	0x0610005d4,
	0x0f22f5423,
	0x00064f22f,
	0x074000054,
	0x0202f004c,
	0x0e2802f40,
	0x000484480,
	0x090af0050,
	0x02f006100,
	0x005d4f22f,
	0x054230064,
	0x0f22f7400,
	0x00054202f,
	0x0004c90af,
	0x000502f00,
	0x0610005ba,
	0x0f22f5423,
	0x00058f200,
	0x00100f23c,
	0x040000000,
	0x00001f200,
	0x00838f295,
	0x0003053af,
	0x00054202f,
	0x0005090af,
	0x000542f00,
	0x06100058e,
	0x0f22f5423,
	0x0005cf200,
	0x00100f23c,
	0x040000000,
	0x00001f200,
	0x00838588f,
	0x0f292ffd4,
	0x005baf22f,
	0x054230058,
	0x0f2000100,
	0x0f23c4000,
	0x00000000a,
	0x000000001,
	0x0f2000838,
	0x04fef0014,
	0x0f2920030,
	0x052af0040,
	0x0202f003c,
	0x090af0040,
	0x0f2950030,
	0x053af0054,
	0x0202f0050,
	0x090af0054,
	0x02f006100,
	0x0054cf22f,
	0x054230048,
	0x0058ef22f,
	0x05423005c,
	0x0f2000100,
	0x0f23c4000,
	0x00000000a,
	0x000000001,
	0x0f2000838,
	0x0588ff295,
	0x0ffd40caf,
	0x0fffffc18,
	0x000b86606,
	0x070062f40,
	0x000b87067,
	0x0b0af00c0,
	0x066084aaf,
	0x000b86e00,
	0x003a6701e,
	0x0b0af00b8,
	0x06c06701e,
	0x02f4000b8,
	0x07802d8af,
	0x000b87066,
	0x0b0af00c0,
	0x0660a202f,
	0x00040d880,
	0x06e027801,
	0x07020b084,
	0x042e72f44,
	0x0003644df,
	0x06e187065,
	0x0b0af00c0,
	0x0660670ff,
	0x02f4000b8,
	0x070652f40,
	0x000c06000,
	0x0fea8f22f,
	0x054000054,
	0x0f22f7400,
	0x0004c4aaf,
	0x000406c26,
	0x070ff90af,
	0x0588ff292,
	0x0ffd4f23c,
	0x040000000,
	0x0000af200,
	0x008384fef,
	0x00014f292,
	0x0003052af,
	0x00040202f,
	0x0003c90af,
	0x000402f00,
	0x0610004a6,
	0x0282f0038,
	0x0f2277400,
	0x0f22f5400,
	0x00058f21f,
	0x05423f22f,
	0x074000050,
	0x0588f4283,
	0x0b6846c6a,
	0x06100054c,
	0x0f22f5423,
	0x00048f200,
	0x00100f23c,
	0x040000000,
	0x0000af200,
	0x00838588f,
	0x0f295ffd4,
	0x00cafffff,
	0x0fc1800b8,
	0x066067006,
	0x02f4000b8,
	0x07067b0af,
	0x000c06608,
	0x04aaf00b8,
	0x06e0003a6,
	0x0701eb0af,
	0x000b86c06,
	0x0701e2f40,
	0x000b87802,
	0x0d8af00b8,
	0x07066b0af,
	0x000c0660a,
	0x0202f0040,
	0x090832f43,
	0x000384a80,
	0x06d0002ca,
	0x0d8806e02,
	0x078017020,
	0x0b08442e7,
	0x02f440036,
	0x044df6e18,
	0x07065b0af,
	0x000c06606,
	0x070ff2f40,
	0x000b87065,
	0x02f4000c0,
	0x06000fea8,
	0x0f22f5400,
	0x00054f22f,
	0x07400004c,
	0x04aaf0040,
	0x06c2670ff,
	0x090af0040,
	0x02f006100,
	0x00470f22f,
	0x054800050,
	0x0f20000a0,
	0x004a6282f,
	0x00038f227,
	0x07400f22f,
	0x054000058,
	0x0f21f5423,
	0x0f22f7400,
	0x00048f227,
	0x074806100,
	0x004b0262f,
	0x00044282f,
	0x00040f202,
	0x06000f202,
	0x04000f22f,
	0x054230050,
	0x00050588f,
	0x04283b684,
	0x06c6a202f,
	0x000409083,
	0x02f430038,
	0x04a806d00,
	0x002ca2f00,
	0x061000470,
	0x0f22f5480,
	0x00058f200,
	0x000a8f22f,
	0x074800058,
	0x07030d082,
	0x022031f80,
	0x039200091,
	0x05283b684,
	0x04fef000c,
	0x06d967605,
	0x074ffd484,
	0x06d362002,
	0x041f72920,
	0x000851010,
	0x049c0d083,
	0x010804283,
	0x00c370039,
	0x029200085,
	0x06f162002,
	0x041f72920,
	0x000851010,
	0x049c090bc,
	0x00000000a,
	0x010805283,
	0x053826cca,
	0x07c014a83,
	0x0670c1f7c,
	0x000310084,
	0x052af0040,
	0x042864282,
	0x04aaf0030,
	0x0670001fe,
	0x01fbc002d,
	0x02920005c,
	0x052824283,
	0x07801d8af,
	0x000b82a2f,
	0x000b87067,
	0x0b0af00c0,
	0x0661470fb,
	0x0b0af0040,
	0x06e0c202f,
	0x00040b0af,
	0x000b86f00,
	0x001b07066,
	0x0b0af00c0,
	0x0661c262f,
	0x000404483,
	0x06c024283,
	0x0b6af00b8,
	0x06f022604,
	0x0202f0040,
	0x0d8806c02,
	0x042844a83,
	0x06f222003,
	0x0d084b085,
	0x0660a1fbc,
	0x0002e2920,
	0x00050f200,
	0x000a0f22f,
	0x074000048,
	0x0f2277480,
	0x0610004b0,
	0x0262f0044,
	0x0282f0040,
	0x0f2026000,
	0x0f2024000,
	0x0f22f5423,
	0x00050f22f,
	0x054800058,
	0x0f20000a8,
	0x0f22f7480,
	0x000587030,
	0x0d0822203,
	0x01f803920,
	0x000915283,
	0x0b6844fef,
	0x0000c6d96,
	0x0760574ff,
	0x0d4846d36,
	0x0200241f7,
	0x029200085,
	0x0101049c0,
	0x0d0831080,
	0x042830c37,
	0x000392920,
	0x000856f16,
	0x0200241f7,
	0x029200085,
	0x0101049c0,
	0x090bc0000,
	0x0000a1080,
	0x052835382,
	0x06cca7c01,
	0x04a83670c,
	0x01f7c0031,
	0x0008452af,
	0x000404286,
	0x042824aaf,
	0x000306700,
	0x001fe1fbc,
	0x0002d2920,
	0x0005c5282,
	0x01fbc0030,
	0x02920005c,
	0x052825383,
	0x04a836ede,
	0x04a846f28,
	0x042837801,
	0x0d8af00b8,
	0x02a2f00b8,
	0x07067b0af,
	0x000c06614,
	0x070fbb0af,
	0x000406e0c,
	0x0202f0040,
	0x0b0af00b8,
	0x06f0001b0,
	0x07066b0af,
	0x000c0661c,
	0x0262f0040,
	0x044836c02,
	0x04283b6af,
	0x000b86f02,
	0x02604202f,
	0x00040d880,
	0x06c024284,
	0x04a836f22,
	0x02003d084,
	0x0b085660a,
	0x01fbc002e,
	0x02920005c,
	0x052822202,
	0x01fb76920,
	0x000842920,
	0x052821fbc,
	0x000302920,
	0x0005c5282,
	0x052865384,
	0x04a846ed8,
	0x07004c0af,
	0x000bc6700,
	0x000e82003,
	0x053834a83,
	0x06ede4a84,
	0x06f282003,
	0x0d084b085,
	0x0660a1fbc,
	0x0002e2920,
	0x0005c5282,
	0x07065b0af,
	0x000c0672a,
	0x07067b0af,
	0x000c06722,
	0x042372920,
	0x0005c2f2f,
	0x000bc4878,
	0x0fc182f2f,
	0x000bc486f,
	0x000686100,
	0x0f7d47008,
	0x04fef00bc,
	0x04e754aaf,
	0x000206700,
	0x0008e1fbc,
	0x000452920,
	0x0005c5282,
	0x0262f0040,
	0x06c701fbc,
	0x0002d2920,
	0x022021fb7,
	0x069200084,
	0x02920005c,
	0x052825286,
	0x053844a84,
	0x06ed87004,
	0x0c0af00bc,
	0x0670000e8,
	0x02003d084,
	0x0b085660a,
	0x01fbc002e,
	0x02920005c,
	0x052827065,
	0x0b0af00c0,
	0x0672a7067,
	0x0b0af00c0,
	0x067224237,
	0x02920005c,
	0x02f2f00bc,
	0x04878fc18,
	0x02f2f00bc,
	0x0486f0068,
	0x06100f7d4,
	0x070084fef,
	0x000bc4e75,
	0x04aaf0020,
	0x06700008e,
	0x01fbc0045,
	0x02920005c,
	0x05282262f,
	0x000406c70,
	0x01fbc002d,
	0x02920005c,
	0x052824483,
	0x07064b083,
	0x06e262003,
	0x04c7c0801,
	0x000000064,
	0x0d0bc0000,
	0x000302202,
	0x01f802920,
	0x0005c5282,
	0x044837064,
	0x0b0836e26,
	0x020034c7c,
	0x008010000,
	0x00064d0bc,
	0x000642601,
	0x020034c7c,
	0x008010000,
	0x0000ad0bc,
	0x000000030,
	0x022021f80,
	0x02920005c,
	0x052822003,
	0x04c7c0801,
	0x000000064,
	0x026012003,
	0x04c7c0801,
	0x00000000a,
	0x0d0bc0000,
	0x000302202,
	0x02001d0bc,
	0x000000030,
	0x01f802920,
	0x0005c5282,
	0x020034c7c,
	0x008010000,
	0x0000a2001,
	0x0d0bc0000,
	0x000301f80,
	0x06000ff58,
	0x01fbc002b,
	0x02920005c,
	0x052826090,
	0x01fbc0065,
	0x02920005c,
	0x052826000,
	0x0ff581fbc,
	0x0002b2920,
	0x0005c5282,
	0x060901fbc,
	0x000652920,
	0x0005c5282,
	0x06000ff72,
	0x07067b0af,
	0x000c0670a,
	0x07068b0af,
	0x000c06600,
	0x0ff1c76ff,
	0x0d6826d0a,
	0x00c370030,
	0x03920005c,
	0x067222803,
	0x06d00ff06,
	0x00c37002e,
	0x04920005c,
	0x0660e2403,
	0x0b8836700,
	0x0fef45282,
	0x06000feee,
	0x0538460e0,
	0x0538360ce,
	0x076ff96af,
	0x000406c02,
	0x042832a2f,
	0x000b89aaf,
	0x000407068,
	0x02f4000c0,
	0x06000fe38,
	0x07001c0af,
	0x000bc6700,
	0x0fe061fbc,
	0x0002b2920,
	0x0005c5282,
	0x06000fdf8,
	0x0f22f5400,
	0x0004cf23c,
	0x040230000,
	0x0000af22f,
	0x07400004c,
	0x0f2277400,
	0x0610001ea,
	0x0262f0040,
	0x0282f003c,
	0x0f2026000,
	0x0f2024000,
	0x0f22f5480,
	0x00054f200,
	0x000a8f22f,
	0x074800054,
	0x0598f6000,
	0x0fd3c53af,
	0x000b86000,
	0x0fc567001,
	0x02f400020,
	0x07020d1af,
	0x0ff727067,
	0x0b0af00c0,
	0x0670a7068,
	0x0b0af00c0,
	0x06600ff1c,
	0x076ffd682,
	0x06d0a0c37,
	0x000303920,
	0x0005c6722,
	0x028036d00,
	0x0ff060c37,
	0x0002e4920,
	0x0005c660e,
	0x02403b883,
	0x06700fef4,
	0x052826000,
	0x0feee5384,
	0x060e05383,
	0x060ce76ff,
	0x096af0040,
	0x06c024283,
	0x02a2f00b8,
	0x09aaf0040,
	0x070682f40,
	0x000c06000,
	0x0fb38518f,
	0x0fe387001,
	0x0c0af00bc,
	0x06700fe06,
	0x01fbc002b,
	0x02920005c,
	0x052826000,
	0x0fdf8f22f,
	0x05400004c,
	0x0f23c4023,
	0x00000000a,
	0x0f22f7400,
	0x0004cf227,
	0x074006100,
	0x001ea262f,
	0x00040282f,
	0x0003cf202,
	0x06000f202,
	0x04000f22f,
	0x054800054,
	0x0f20000a8,
	0x0f22f7480,
	0x00054598f,
	0x06000fd3c,
	0x053af00b8,
	0x06000fc56,
	0x070012f40,
	0x000207020,
	0x0d1af00c0,
	0x06000fb38,
	0x0518ff22f,
	0x05500000c,
	0x0206f0014,
	0x0f200083a,
	0x0f28e0010,
	0x04290f23c,
	0x040000000,
	0x00000508f,
	0x04e75f217,
	0x075002017,
	0x07214e2a0,
	0x0c0bc0000,
	0x007ff90bc,
	0x0000003fe,
	0x020800297,
	0x0800fffff,
	0x000973fe0,
	0x00000f217,
	0x05400508f,
	0x04e75518f,
	0x0f22f5500,
	0x0000c206f,
	0x0000c242f,
	0x00014f200,
	0x0083af28e,
	0x000104290,
	0x0f23c4000,
	0x000000000,
	0x0508f4e75,
	0x0f2177500,
	0x020177214,
	0x0e2a0c0bc,
	0x0000ef23c,
	0x040000000,
	0x00000508f,
	0x04e75f217,
	0x075002017,
	0x07214e2a0,
	0x0c0bc0000,
	0x007ffd480,
	0x06e0cf23c,
	0x040000000,
	0x00000508f,
	0x04e750c82,
	0x0000007ff,
	0x090bc0000,
	0x003fe2080,
	0x00297800f,
	0x0ffff0097,
	0x03fe00000,
	0x06d0cf23c,
	0x040000000,
	0x00000508f,
	0x04e750297,
	0x0800fffff,
	0x020027214,
	0x0e3a08197,
	0x0f2175400,
	0x0508f4e75,
	0x0518ff22f,
	0x05500000c,
	0x0242f0014,
	0x0f200083a,
	0x0f28e000e,
	0x0f23c4000,
	0x000000000,
	0x0508f4e75,
	0x0f2177500,
	0x020177214,
	0x0e2a0c0bc,
	0x04feffff4,
	0x0206f0018,
	0x0f22f5500,
	0x00010f23c,
	0x040000000,
	0x00001f200,
	0x00838f295,
	0x00018f23c,
	0x040000000,
	0x00000f210,
	0x07400f200,
	0x008004fef,
	0x0000c4e75,
	0x0f22f7500,
	0x00004242f,
	0x000047214,
	0x0e2a2c4bc,
	0x0000007ff,
	0x0d4806e0c,
	0x0f23c4000,
	0x000000000,
	0x0508f4e75,
	0x00c820000,
	0x007ff6d0c,
	0x0f23c4000,
	0x000000000,
	0x0508f4e75,
	0x00297800f,
	0x0ffff2002,
	0x07214e3a0,
	0x08197f217,
	0x05400508f,
	0x04e754fef,
	0x0fff4206f,
	0x00018f22f,
	0x055000010,
	0x0f23c4000,
	0x000000001,
	0x0f2000838,
	0x0f2950018,
	0x0f23c4000,
	0x000000000,
	0x094bc0000,
	0x003fe7015,
	0x0b0826d2c,
	0x0203c001f,
	0x0ffffe4a0,
	0x04680c1af,
	0x0000442af,
	0x00008f22f,
	0x054000004,
	0x0f2107400,
	0x0f2000800,
	0x04fef000c,
	0x04e75f22f,
	0x075000004,
	0x0242f0004,
	0x07214e2a2,
	0x0c4bc0000,
	0x007ff94bc,
	0x0000003fe,
	0x07015b082,
	0x06d2c203c,
	0x0001fffff,
	0x0e4a04680,
	0x0c1af0004,
	0x042af0008,
	0x0f22f5400,
	0x00004f210,
	0x07400f200,
	0x00800f22f,
	0x054280004,
	0x04fef000c,
	0x04e757035,
	0x0b0826de0,
	0x072ead282,
	0x0203c7fff,
	0x0ffffe2a0,
	0x04680c1af,
	0x0000860cc,
	0x0598f222f,
	0x000086c1c,
	0x020014480,
	0x02f0061f0,
	0x0f2000080,
	0x0f23c4000,
	0x000000001,
	0x0f2000420,
	0x0508f4e75,
	0x0700ab081,
	0x06f0cf236,
	0x040001d20,
	0x08072588f,
	0x04e752401,
	0x0e2822001,
	0x090822e82,
	0x02f0061bc,
	0x0f22f5428,
	0x000044fef,
	0x0000c4e75,
	0x07035b082,
	0x06de072ea,
	0x0d282203c,
	0x07fffffff,
	0x0e2a04680,
	0x0c1af0008,
	0x060cc598f,
	0x0222f0008,
	0x06c1c2001,
	0x044802f00,
	0x061f0f200,
	0x00080f23c,
	0x040000000,
	0x00001f200,
	0x00420508f,
	0x04e75700a,
	0x0b0816f0c,
	0x0f2364000,
	0x01d208076,
	0x0588f4e75,
	0x02401e282,
	0x020019082,
	0x02e822f00,
	0x061bcf227,
	0x074002f2f,
	0x0000c61b2,
	0x0588ff21f,
	0x05423508f,
	0x04e75518f,
	0x0f22f543a,
	0x0000cf293,
	0x00054486f,
	0x0000cf22f,
	0x054000010,
	0x0f200001a,
	0x0f2277400,
	0x02f2f000c,
	0x061b2588f,
	0x0f21f5423,
	0x0508f4e75,
	0x0518ff22f,
	0x0543a000c,
	0x0f2930054,
	0x06100feee,
	0x0f2000100,
	0x0f200003a,
	0x0f2810016,
	0x0f22f5400,
	0x00018f23c,
	0x040220000,
	0x00001f22f,
	0x074000018,
	0x0f22f5400,
	0x00018f200,
	0x0001af22f,
	0x074000018,
	0x0f22f5400,
	0x000184fef,
	0x000144e75,
	0x0486f000c,
	0x0f22f5400,
	0x00010f200,
	0x0001af227,
	0x00010f227,
	0x074006100,
	0x0feeef200,
	0x00100f200,
	0x0003af281,
	0x00016f22f,
	0x054000018,
	0x0f23c4022,
	0x000000001,
	0x0f22f7400,
	0x00018f22f,
	0x054000018,
	0x0f200001a,
	0x0f22f7400,
	0x00018f22f,
	0x054000018,
	0x04fef0014,
	0x04e75486f,
	0x0000cf22f,
	0x054000010,
	0x0f2277400,
	0x06100fea0,
	0x060e0f22f,
	0x054800004,
	0x0f200049a,
	0x0f2277480,
	0x06100ff7e,
	0x0f200001a,
	0x0508f4e75,
	0x0202f000c,
	0x06f4c246f,
	0x00004226f,
	0x00008b5c9,
	0x062462209,
	0x0c2bc0000,
	0x000036710,
	0x053806d32,
	0x014d92209,
	0x0c2bc0000,
	0x0000366f0,
	0x090bc0000,
	0x000106d10,
	0x024d924d9,
	0x024d924d9,
	0x090bc0000,
	0x000106cf0,
	0x0d0bc0000,
	0x0000f6d06,
	0x014d95380,
	0x06cfa202f,
	0x000044e75,
	0x0d3c0d5c0,
	0x02209c2bc,
	0x000000003,
	0x067105380,
	0x06de81521,
	0x02209c2bc,
	0x000000003,
	0x066f090bc,
	0x000000010,
	0x06d102521,
	0x025212521,
	0x0252190bc,
	0x000000010,
	0x06cf0d0bc,
	0x00000000f,
	0x06dbc1521,
	0x053806db6,
	0x060f8202f,
	0x0fea060e0,
	0x0f22f5480,
	0x00004f200,
	0x0049af227,
	0x074806100,
	0x0ff7ef200,
	0x0001a508f,
	0x04e75202f,
	0x0000c6f3e,
	0x0226f0004,
	0x04281122f,


@@ 3366,31 3908,146 @@ ulong bootcode[]={
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000007072,
	0x0696e7420,
	0x06572726f,
	0x072730000,
	0x000006e6f,
	0x06e2d7a65,
	0x0726f2065,
	0x078697420,
	0x073746174,
	0x075730000,
	0x00000ffff,
	0x0ffffffff,
	0x000000000,
	0x000010000,
	0x0000a0000,
	0x000640000,
	0x003e80000,
	0x027100001,
	0x086a0000f,
	0x042400098,
	0x0968005f5,
	0x0e1003b9a,
	0x0ca000000,
	0x0630c0000,
	0x0631d0000,
	0x063510000,
	0x063566500,
	0x000000000,
	0x0635a0000,
	0x0636d0000,
	0x063970000,
	0x0639c6500,
	0x000000000,
	0x063a00000,
	0x063a70000,
	0x063c50000,
	0x063ca6e00,
	0x000000000,
	0x063ce0000,
	0x063da0000,
	0x064020000,
	0x064073900,
	0x000000000,
	0x0640b0000,
	0x064190000,
	0x064370000,
	0x0643c6500,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x052e80000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x062ec3133,
	0x0352e3130,
	0x0342e3131,
	0x0372e3330,
	0x000000000,
	0x000000000,
	0x062f33133,
	0x0352e3130,
	0x0342e3131,
	0x0372e3331,
	0x000000000,
	0x000000000,
	0x062f93133,
	0x0352e3130,
	0x0342e3131,
	0x0372e3332,
	0x000000000,
	0x000000000,
	0x063013133,
	0x0352e3130,
	0x0342e3131,
	0x0372e3200,
	0x000000000,
	0x000000000,
	0x063053133,
	0x0352e3130,
	0x0342e3131,
	0x0372e3333,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000004e61,
	0x04e002b49,
	0x06e66002d,
	0x0496e6600,
	0x000007072,
	0x0696e7420,
	0x06572726f,
	0x072730000,
	0x000006e6f,
	0x06e2d7a65,
	0x0726f2065,
	0x078697420,
	0x073746174,
	0x075730000,
	0x000000000,
	0x000010000,
	0x0000a0000,
	0x000640000,
	0x003e80000,
	0x027100001,
	0x086a0000f,
	0x042400098,
	0x0968005f5,
	0x0e1003b9a,
	0x0ca000680,
	0x000002573,
	0x03a202573,
	0x00a002573,
	0x00a000000,
	0x000000680,
	0x0067c0678,
	0x006740002,
	0x00652063a,


@@ 3424,16 4081,98 @@ ulong bootcode[]={
	0x001960160,
	0x0014800fe,
	0x000920044,
	0x000082363,
	0x00008626f,
	0x06f746573,
	0x00068656c,
	0x069780073,
	0x070696e64,
	0x06c650072,
	0x037300066,
	0x06f726e61,
	0x078006d69,
	0x07073206d,
	0x061676e75,
	0x06d203330,
	0x030300028,
	0x039293630,
	0x030207365,
	0x07269616c,
	0x02c202831,
	0x029393230,
	0x030207365,
	0x07269616c,
	0x02c202865,
	0x029746865,
	0x0726e6574,
	0x02c202869,
	0x029696e63,
	0x06f6e0074,
	0x074793100,
	0x068643000,
	0x06e657874,
	0x020737461,
	0x074696f6e,
	0x020363830,
	0x034300028,
	0x039293630,
	0x030207365,
	0x07269616c,
	0x02c202831,
	0x029393230,
	0x030207365,
	0x07269616c,
	0x02c202865,
	0x029746865,
	0x0726e6574,
	0x000747479,
	0x030006864,
	0x031007361,
	0x066617269,
	0x000283929,
	0x036303020,
	0x073657269,
	0x0616c2c20,
	0x028312939,
	0x032303020,
	0x073657269,
	0x0616c0074,
	0x074793000,
	0x068643000,
	0x061742674,
	0x020676e6f,
	0x074203100,
	0x028392936,
	0x030302073,
	0x065726961,
	0x06c2c2028,
	0x031293932,
	0x030302073,
	0x065726961,
	0x06c2c2028,
	0x06929696e,
	0x0636f6e00,
	0x074747930,
	0x000686430,
	0x00073756e,
	0x020737061,
	0x072632073,
	0x06c630028,
	0x039293630,
	0x030207365,
	0x07269616c,
	0x02c202831,
	0x029393230,
	0x030207365,
	0x07269616c,
	0x000747479,
	0x031006864,
	0x030002363,
	0x02f636f6e,
	0x073002363,
	0x02f636f6e,
	0x073002363,
	0x02f636f6e,
	0x073006174,
	0x026742067,
	0x06e6f7420,
	0x031006e6f,
	0x073006e6f,
	0x06e650075,
	0x073657200,
	0x02f002f00,


@@ 3441,131 4180,185 @@ ulong bootcode[]={
	0x000423139,
	0x032303000,
	0x042393630,
	0x030002f6e,
	0x065742f25,
	0x073002f6e,
	0x065742f6e,
	0x06574002f,
	0x06c69622f,
	0x06e657461,
	0x06464722e,
	0x02573002f,
	0x06c69622f,
	0x06e657461,
	0x06464722e,
	0x06e657400,
	0x02f363830,
	0x032302f69,
	0x030000a00,
	0x02f6e6574,
	0x02f257300,
	0x02f6e6574,
	0x02f6e6574,
	0x0002f6c69,
	0x0622f6e65,
	0x074616464,
	0x0722e2573,
	0x0002f6c69,
	0x0622f6e65,
	0x074616464,
	0x0722e6e65,
	0x074002f25,
	0x0732f696e,
	0x069740069,
	0x06e697400,
	0x0696e6974,
	0x0002d6d00,
	0x02f363830,
	0x032302f69,
	0x02d6d0069,
	0x06e697400,
	0x0696e6974,
	0x0002f3638,
	0x03032302f,
	0x0696e6974,
	0x00023652f,
	0x0626f6f74,
	0x06c696e65,
	0x00023652f,
	0x02d740062,
	0x06f6f746c,
	0x0696e6500,
	0x0626f6f74,
	0x064657669,
	0x063650023,
	0x0652f626f,
	0x06f747573,
	0x065720023,
	0x0652f626f,
	0x063650062,
	0x06f6f7470,
	0x028290062,
	0x06f6f7470,
	0x028290068,
	0x061726420,
	0x06469736b,
	0x020006861,
	0x072642064,
	0x069736b20,
	0x000626f6f,
	0x074757365,
	0x07200626f,
	0x06f747365,
	0x072766572,
	0x0004e6673,
	0x00023652f,
	0x07465726d,
	0x0696e616c,
	0x000746572,
	0x06d696e61,
	0x06c007465,
	0x0726d696e,
	0x0616c0023,
	0x0632f7573,
	0x06572006e,
	0x0004e6673,
	0x00072656d,
	0x06f746520,
	0x066732069,
	0x073202839,
	0x029363030,
	0x020736572,
	0x069616c2c,
	0x020283129,
	0x039323030,
	0x020736572,
	0x069616c2c,
	0x020286e29,
	0x06f742075,
	0x073656400,
	0x000626f6f,
	0x074657300,
	0x0626f6f74,
	0x065730063,
	0x070757479,
	0x070650074,
	0x065726d69,
	0x06e616c00,
	0x023652f25,
	0x073002363,
	0x02f757365,
	0x072007265,
	0x06d6f7465,
	0x020667320,
	0x06f6e2025,
	0x0732c2028,
	0x06e296f6e,
	0x065003900,
	0x0626f6f74,
	0x0002f0000,
	0x0006d6f75,
	0x06e74002f,
	0x06b667300,
	0x023772f25,
	0x073667300,
	0x06c6f6361,
	0x06c2e2e2e,
	0x000236300,
	0x02f646576,
	0x00062696e,
	0x064202363,
	0x000237000,
	0x02f70726f,
	0x063006269,
	0x06e642023,
	0x070007069,
	0x070650066,
	0x06f726b00,
	0x025640025,
	0x064002f6b,
	0x06673006b,
	0x06673002d,
	0x066002d73,
	0x00063616e,
	0x027742065,
	0x078656320,
	0x06b667300,
	0x02f00626f,
	0x06f740000,
	0x0006d6f75,
	0x06e74002f,
	0x06e2f6b66,
	0x073000000,
	0x06d6f756e,
	0x074007365,
	0x072766572,
	0x000736572,
	0x07665723a,
	0x02025730a,
	0x000236c2f,
	0x0312f6374,
	0x06c006f70,
	0x0656e696e,
	0x06720236c,
	0x02f312f63,
	0x0746c0063,
	0x06f6e6e65,
	0x063742030,
	0x078393030,
	0x000636f6e,
	0x06e656374,
	0x020307839,
	0x030300070,
	0x075736820,
	0x06e6f6574,
	0x068657200,
	0x070757368,
	0x020646b6d,
	0x075780063,
	0x06f6e6669,
	0x067203120,
	0x03136206e,
	0x06f726573,
	0x074617274,
	0x0206e6f65,
	0x074686572,
	0x000636f6e,
	0x066696720,
	0x031203136,
	0x020726573,
	0x074617274,
	0x000636f6e,
	0x06e656374,
	0x020257300,
	0x0236b2f32,
	0x06e6f6e65,
	0x07400636f,
	0x06e666967,
	0x0206e6f6e,
	0x065740023,
	0x06e6e6f6e,
	0x065742f32,
	0x02f646174,
	0x061006f70,
	0x0656e696e,
	0x06720236b,
	0x02f322f64,
	0x061746100,
	0x0236b2f32,
	0x06720236e,
	0x06e6f6e65,
	0x0742f322f,
	0x064617461,
	0x000236e6e,
	0x06f6e6574,
	0x02f322f63,
	0x0746c006f,
	0x070656e69,
	0x06e672023,
	0x06e6e6f6e,
	0x065742f32,
	0x02f63746c,
	0x0006e6f6e,
	0x065740023,
	0x06e6e6f6e,
	0x065740070,
	0x075736820,
	0x0646b6d75,
	0x07800636f,
	0x06e666967,
	0x020312031,
	0x036206e6f,
	0x072657374,
	0x061727400,
	0x0636f6e66,
	0x069672031,
	0x020313620,
	0x072657374,
	0x061727400,
	0x0636f6e6e,
	0x065637420,
	0x025730023,
	0x06b2f322f,
	0x064617461,
	0x0006f7065,
	0x06e696e67,
	0x020236b2f,
	0x0322f6374,
	0x06c00696e,
	0x069740064,
	0x06b00236b,
	0x000736572,
	0x076657200,
	0x023742f74,
	0x074793063,
	0x0746c006f,
	0x070656e69,
	0x06e672023,
	0x0742f7474,
	0x079306374,
	0x06c002374,
	0x02f747479,
	0x030006f70,
	0x0656e696e,
	0x067202374,
	0x02f747479,
	0x030007075,
	0x073682061,
	0x073796e63,
	0x00063616e,
	0x027742063,
	0x06f6e6e65,
	0x063742c20,
	0x072657472,
	0x079696e67,
	0x02e2e2e0a,
	0x000626f6f,
	0x074002f00,
	0x000006d6f,
	0x0756e7400,
	0x0322f6461,
	0x074610023,
	0x06b2f322f,
	0x063746c00,
	0x06f70656e,
	0x0696e6720,
	0x0236b2f32,
	0x02f63746c,
	0x000696e69,
	0x07400646b,
	0x000236b00,
	0x073657276,
	0x065720023,
	0x0692f6374,


@@ 3580,257 4373,247 @@ ulong bootcode[]={
	0x072657472,
	0x079696e67,
	0x02e2e2e0a,
	0x000626f6f,
	0x074002f00,
	0x000006d6f,
	0x0756e7400,
	0x02f6b6673,
	0x00023772f,
	0x068643066,
	0x073006c6f,
	0x063616c0a,
	0x000236300,
	0x02f646576,
	0x00062696e,
	0x064202363,
	0x000237000,
	0x02f70726f,
	0x063006269,
	0x06e642023,
	0x070007069,
	0x070650066,
	0x06f726b00,
	0x025640025,
	0x064002f6b,
	0x06673006b,
	0x06673002d,
	0x066002377,
	0x02f686430,
	0x06673002d,
	0x073006361,
	0x000736572,
	0x076657200,
	0x023742f25,
	0x07363746c,
	0x00023742f,
	0x025730070,
	0x075736820,
	0x06173796e,
	0x063006361,
	0x06e277420,
	0x065786563,
	0x0206b6673,
	0x0002f0000,
	0x0006d6f75,
	0x06e740062,
	0x06f6f7400,
	0x02f6e2f6b,
	0x066730000,
	0x0006d6f75,
	0x06e740023,
	0x0732f2573,
	0x000637265,
	0x061746500,
	0x025640077,
	0x0636f6e6e,
	0x06563742c,
	0x020726574,
	0x07279696e,
	0x0672e2e2e,
	0x00a002373,
	0x02f257300,
	0x063726561,
	0x074650025,
	0x064007772,
	0x069746500,
	0x074696d65,
	0x02e2e2e00,
	0x023722f72,
	0x074630072,
	0x065616469,
	0x06e672072,
	0x074630023,
	0x0732f626f,
	0x06f74002f,
	0x06e2f626f,
	0x06f740000,
	0x0002f6e2f,
	0x0626f6f74,
	0x000737461,
	0x07400256c,
	0x064002372,
	0x02f727463,
	0x000777269,
	0x074696e67,
	0x020727463,
	0x00023632f,
	0x074696d65,
	0x0004f4b00,
	0x043480025,
	0x0730a2573,
	0x00a004e4f,
	0x00025730a,
	0x025730a00,
	0x06e6f702e,
	0x02e2e0077,
	0x072697465,
	0x00074696d,
	0x0652e2e2e,
	0x00023722f,
	0x072746300,
	0x072656164,
	0x0696e6720,
	0x072746300,
	0x023732f62,
	0x06f6f7400,
	0x02f6e2f62,
	0x06f6f7400,
	0x000002f6e,
	0x02f626f6f,
	0x074007374,
	0x061740025,
	0x06c640023,
	0x0722f7274,
	0x063007772,
	0x06974696e,
	0x067207274,
	0x063002363,
	0x02f74696d,
	0x065004f4b,
	0x000434800,
	0x025730a25,
	0x0730a004e,
	0x04f002573,
	0x00a25730a,
	0x0006e6f70,
	0x0206e6f70,
	0x000726561,
	0x064206e6f,
	0x070006e20,
	0x03d202564,
	0x03b206275,
	0x066203d20,
	0x025232e32,
	0x078202523,
	0x02e327820,
	0x025232e32,
	0x078202523,
	0x02e32780a,
	0x000666f72,
	0x06d617420,
	0x06e6f7000,
	0x06e6f7420,
	0x0526e6f70,
	0x000736573,
	0x073696f6e,
	0x02e2e2e00,
	0x077726974,
	0x065206e6f,
	0x070007265,
	0x06164206e,
	0x06f70006e,
	0x0203d2025,
	0x0643b2062,
	0x07566203d,
	0x02025232e,
	0x032782025,
	0x0232e3278,
	0x02025232e,
	0x032782025,
	0x0232e3278,
	0x00a00666f,
	0x0726d6174,
	0x0206e6f70,
	0x0006e6f74,
	0x020526e6f,
	0x070007365,
	0x065207365,
	0x07373696f,
	0x06e2e2e2e,
	0x000777269,
	0x074652073,
	0x065737369,
	0x06f6e0072,
	0x065616420,
	0x073657373,
	0x0696f6e00,
	0x0666f726d,
	0x061742073,
	0x06e007265,
	0x061642073,
	0x065737369,
	0x06f6e0065,
	0x072726f72,
	0x02025733b,
	0x0006e6f74,
	0x020527365,
	0x06f6e0066,
	0x06f726d61,
	0x074207365,
	0x07373696f,
	0x06e002f63,
	0x066730023,
	0x0772f6864,
	0x030636163,
	0x068650063,
	0x066732e2e,
	0x02e007069,
	0x070650066,
	0x06f726b00,
	0x02f636673,
	0x000626f6f,
	0x074636673,
	0x0002d6673,
	0x0002d7000,
	0x023772f68,
	0x064306361,
	0x063686500,
	0x02f636673,
	0x06e006572,
	0x0726f7220,
	0x025733b00,
	0x06e6f7420,
	0x052736573,
	0x073696f6e,
	0x0002f6366,
	0x073002377,
	0x02f257363,
	0x061636865,
	0x000636673,
	0x02e2e2e00,
	0x070697065,
	0x000666f72,
	0x06b002f63,
	0x066730062,
	0x06f6f7463,
	0x06673002d,
	0x06673002d,
	0x070002f63,
	0x066730062,
	0x06f6f7463,
	0x06673002d,
	0x073002d70,
	0x000626f6f,
	0x074636673,
	0x0002d7300,
	0x02d700023,
	0x0772f6864,
	0x030636163,
	0x068650062,
	0x0743a2025,
	0x0733a2025,
	0x0730a0062,
	0x06f6f743a,
	0x02025733a,
	0x02025730a,
	0x000626f6f,
	0x0743a2025,
	0x0733a2025,
	0x0730a0025,
	0x0735b2573,
	0x05d3a2000,
	0x063616e27,
	0x074207265,
	0x061642023,
	0x0632f636f,
	0x06e733b20,
	0x0706c6561,
	0x073652072,
	0x065626f6f,
	0x074005b63,
	0x074726c2d,
	0x06420746f,
	0x020617474,
	0x061636820,
	0x066735d0a,
	0x000666f72,
	0x06b206661,
	0x0696c6564,
	0x0005b7265,
	0x06d6f7465,
	0x020726561,
	0x064206572,
	0x0726f7220,
	0x028257329,
	0x05d0a0023,
	0x0632f7263,
	0x06f6e7300,
	0x06f70656e,
	0x0696e6720,
	0x072636f6e,
	0x073005b72,
	0x0656d6f74,
	0x065207772,
	0x069746520,
	0x06572726f,
	0x072202825,
	0x073295d0a,
	0x0002f7072,
	0x06f632f25,
	0x0642f6e6f,
	0x074650064,
	0x069650023,
	0x0632f7263,
	0x06f6e7300,
	0x063616e27,
	0x074206f70,
	0x0656e2023,
	0x0632f7263,
	0x06f6e733b,
	0x020706c65,
	0x061736520,
	0x07265626f,
	0x06f740070,
	0x061737377,
	0x06f72643a,
	0x00025735b,
	0x025735d3a,
	0x020006361,
	0x06e277420,
	0x072656164,
	0x02023632f,
	0x072636f6e,
	0x0733b2070,
	0x06c656173,
	0x0636f6e73,
	0x03b20706c,
	0x065617365,
	0x020726562,
	0x06f6f7400,
	0x0236c2f73,
	0x074617473,
	0x000617270,
	0x03a206f70,
	0x0656e2023,
	0x06c2f7374,
	0x061747300,
	0x06172703a,
	0x020726561,
	0x064207374,
	0x061747300,
	0x061646472,
	0x03a006172,
	0x0703a206e,
	0x06f206574,
	0x068657220,
	0x061646472,
	0x065737300,
	0x0236c2f33,
	0x02f63746c,
	0x0006f7065,
	0x06e20236c,
	0x02f332f63,
	0x0746c0023,
	0x06c2f332f,
	0x064617461,
	0x0006f7065,
	0x06e20236c,
	0x02f332f64,
	0x061746100,
	0x0636f6e6e,
	0x065637420,
	0x030783830,
	0x03600636f,
	0x06e6e6563,
	0x074006172,
	0x070200077,
	0x072697465,
	0x020726571,
	0x000726561,
	0x064207265,
	0x0706c7900,
	0x0636f6e6e,
	0x065637420,
	0x0252e3278,
	0x0252e3278,
	0x0252e3278,
	0x0252e3278,
	0x0252e3278,
	0x0252e3278,
	0x00025730a,
	0x00023612f,
	0x064617461,
	0x0006f7065,
	0x06e206172,
	0x0702f6461,
	0x074610077,
	0x072697465,
	0x020617270,
	0x0002e005b,
	0x06374726c,
	0x02d642074,
	0x06f206174,
	0x074616368,
	0x02066735d,
	0x00a00666f,
	0x0726b2066,
	0x061696c65,
	0x064005b72,
	0x0656d6f74,
	0x065207265,
	0x0626f6f74,
	0x0000a000a,
	0x000000000,
	0x049d20000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x000000000,
	0x00003bde,
	0x061642065,
	0x072726f72,
	0x020282573,
	0x0295d0a00,
	0x023632f72,
	0x0636f6e73,
	0x0006f7065,
	0x06e696e67,
	0x02072636f,
	0x06e73005b,
	0x072656d6f,
	0x074652077,
	0x072697465,
	0x020657272,
	0x06f722028,
	0x02573295d,
	0x00a002f70,
	0x0726f632f,
	0x025642f6e,
	0x06f746500,
	0x064696500,
	0x023632f72,
	0x0636f6e73,
	0x00063616e,
	0x02774206f,
	0x070656e20,
	0x023632f72,
	0x0636f6e73,
	0x03b20706c,
	0x065617365,
	0x020726562,
	0x06f6f7400,
	0x070617373,
	0x0776f7264,
	0x03a200063,
	0x0616e2774,
	0x020726561,
	0x064202363,
	0x02f72636f,
	0x06e733b20,
	0x0706c6561,
	0x073652072,
	0x065626f6f,
	0x074000a00,
	0x00a000000,
	0x0000481a,
	0x0,
};

M gnot/dat.h => gnot/dat.h +5 -22
@@ 9,8 9,7 @@ typedef struct MMUCache	MMUCache;
typedef struct Mach	Mach;
typedef struct PMMU	PMMU;
typedef struct Portpage	Portpage;
typedef struct Scsi	Scsi;
typedef struct Scsidata	Scsidata;
typedef struct Scsibuf	Scsibuf;
typedef struct Ureg	Ureg;
typedef struct User	User;



@@ 177,27 176,11 @@ extern Portpage portpage;
extern int	portispaged;
extern int	(*portservice[])(void);

/*
 *  for SCSI bus
 */
struct Scsidata
{
	uchar *	base;
	uchar *	lim;
	uchar *	ptr;
};

struct Scsi
struct Scsibuf
{
	QLock;
	ulong	pid;
	ushort	target, lun;
	ushort	rflag;
	ushort	status;
	Scsidata cmd;
	Scsidata data;
	uchar *	save;
	uchar	cmdblk[16];
	void	*virt;
	void	*phys;
	Scsibuf	*next;
};

#define	NERR	25

M gnot/fns.h => gnot/fns.h +8 -6
@@ 40,17 40,19 @@ void	restfpregs(FPsave*);
void	screeninit(void);
void	screenputc(int);
void	screenputs(char*, int);
Scsibuf	*scsialloc(ulong);
int	scsibread(int, Scsibuf*, long, long, long);
int	scsibwrite(int, Scsibuf*, long, long, long);
Scsibuf	*scsibuf(void);
int	scsicap(int, void*);
void	scsifree(Scsibuf*);
int	scsiready(int);
int	scsisense(int, void *);
int	scsicap(int, uchar *);
Scsi*	scsicmd(int, int, long);
void	scsictrlintr(void);
void	scsidmaintr(void);
int	scsiexec(Scsi *, int);
void	scsiinit(void);
int	scsiready(int);
uchar*	scsirecv(uchar *);
void	scsireset(void);
void	scsirun(void);
int	scsisense(int, uchar *);
uchar*	scsixmit(uchar *);
int	spl1(void);
void	spldone(void);

M gnot/main.c => gnot/main.c +6 -18
@@ 121,24 121,12 @@ init0(void)
	u->slash = (*devtab[0].attach)(0);
	u->dot = clone(u->slash, 0);
	if(!waserror()){
		c = namec("#e/terminal", Acreate, OWRITE, 0600);
		(*devtab[c->type].write)(c, "at&t gnot 1", strlen("at&t gnot 1"), 0);
		close(c);
		c = namec("#e/cputype", Acreate, OWRITE, 0600);
		(*devtab[c->type].write)(c, "68020", strlen("68020"), 0);
		close(c);
		c = namec("#e/bootuser", Acreate, OWRITE, 0600);
		(*devtab[c->type].write)(c, bootuser, strlen(bootuser), 0);
		close(c);
		c = namec("#e/bootline", Acreate, OWRITE, 0600);
		(*devtab[c->type].write)(c, bootline, strlen(bootline), 0);
		close(c);
		c = namec("#e/bootserver", Acreate, OWRITE, 0600);
		(*devtab[c->type].write)(c, bootserver, strlen(bootserver), 0);
		close(c);
		c = namec("#e/bootdevice", Acreate, OWRITE, 0600);
		(*devtab[c->type].write)(c, bootdevice, strlen(bootdevice), 0);
		close(c);
		ksetenv("terminal", "at&t gnot 1");
		ksetenv("cputype", "68020");
		ksetenv("bootuser", bootuser);
		ksetenv("bootline", bootline);
		ksetenv("bootserver", bootserver);
		ksetenv("bootdevice", bootdevice);
		poperror();
	}


M pc/devfloppy.c => pc/devfloppy.c +3 -0
@@ 420,6 420,7 @@ floppywrite(Chan *c, void *a, long n)
	long rv, i;
	char *aa = a;
	int dev;
extern void vgaset(char*);

	rv = 0;
	dp = &fl.d[c->qid.path & ~Qmask];


@@ 452,6 453,8 @@ floppywrite(Chan *c, void *a, long n)
		} else if(SNCMP(aa, "reset") == 0){
			fl.confused = 1;
			floppyon(dp);
		} else if(SNCMP(aa, "v") == 0){
			vgaset(aa+1);
		}
		qunlock(&fl);
		break;

M pc/main.c => pc/main.c +2 -6
@@ 79,12 79,8 @@ init0(void)
	chandevinit();

	if(!waserror()){
		c = namec("#e/terminal", Acreate, OWRITE, 0600);
		(*devtab[c->type].write)(c, "safari", strlen("next station 68040"), 0);
		close(c);
		c = namec("#e/cputype", Acreate, OWRITE, 0600);
		(*devtab[c->type].write)(c, "386", strlen("68020"), 0);
		close(c);
		ksetenv("terminal", "safari");
		ksetenv("cputype", "386");
		poperror();
	}
	touser();

M pc/vga.c => pc/vga.c +27 -37
@@ 106,43 106,6 @@ vgardplane(int p)
}

/*
 *  partial screen munching squares
 */
#define	DELTA	1
#define	DADDR	((long *) 0)
#define	SIDE	256
void
munch(void)
{
	ulong x,y,i,d;
	uchar *screen, tab[8], *p;

	screen = (uchar *)SCREENMEM;
	d=0;
	tab[0] = 0x80;
	tab[1] = 0x40;
	tab[2] = 0x20;
	tab[3] = 0x10;
	tab[4] = 0x08;
	tab[5] = 0x04;
	tab[6] = 0x02;
	tab[7] = 0x01;

	for(i=0; i<MAXY*(MAXX/8); i++)
		screen[i]=0;

	for(;;){
		for(x=0; x<SIDE; x++){
			y = (x^d) % SIDE;
			p = &screen[y*(MAXX/8) + (x/8)];
			y = *p;
			*p = y ^ tab[x&7];
		}
		d+=DELTA;
	}
}

/*
 *  Set up for 4 separately addressed bit planes.  Each plane is 
 */
void


@@ 270,3 233,30 @@ mouseclock(void)
{
	mouseupdate(1);
}

vgaset(char *cmd)
{
	int set;
	int reg;
	int val;

	set = *cmd++;
	cmd++;
	reg = strtoul(cmd, &cmd, 0);
	cmd++;
	val = strtoul(cmd, &cmd, 0);
	switch(set){
	case 'a':
		arout(reg, val);
		break;
	case 'g':
		grout(reg, val);
		break;
	case 'c':
		crout(reg, val);
		break;
	case 's':
		srout(reg, val);
		break;
	}
}

M port/devenv.c => port/devenv.c +15 -0
@@ 543,3 543,18 @@ dumpenv(void)
			i += ev->n*sizeof(Envval);
	print(" %d free enval chars\n", i+((char *)envalloc.end-(char*)envalloc.vfree));
}

/*
 *  to let the kernel set environment variables
 */
void
ksetenv(char *ename, char *eval)
{
	Chan *c;
	char buf[2*NAMELEN];

	sprint(buf, "#e/%s", ename);
	c = namec(buf, Acreate, OWRITE, 0600);
	(*devtab[c->type].write)(c, eval, strlen(eval), 0);
	close(c);
}

M port/devscsi.c => port/devscsi.c +258 -75
@@ 7,12 7,63 @@
#include	"devtab.h"
#include	"io.h"

int	scsiintr(void);

#define	DPRINT	if(debug)kprint

enum {
	Qdir, Qcmd, Qdata, Qdebug,
typedef struct Scsi	Scsi;
typedef struct Scsidata	Scsidata;

#define Nbuf	4
#define DATASIZE (8*1024)
enum
{
	ScsiTestunit	= 0x00,
	ScsiExtsens	= 0x03,
	ScsiGetcap	= 0x25,
	ScsiRead	= 0x08,
	ScsiWrite	= 0x0a,

	/*
	 * data direction
	 */
	ScsiIn		= 1,
	ScsiOut		= 0,
};

struct Scsidata
{
	uchar	*base;
	uchar	*lim;
	uchar	*ptr;
};

struct Scsi
{
	QLock;
	ulong	pid;
	ushort	target;
	ushort	lun;
	ushort	rflag;
	ushort	status;
	Scsidata cmd;
	Scsidata data;
	Scsibuf	*b;
	uchar	*save;
	uchar	cmdblk[16];
};

struct{
	Lock;
	Scsibuf	*free;
}scsibufalloc;

static Scsi	staticcmd;	/* BUG: should be one per scsi device */

enum
{
	Qdir,
	Qcmd,
	Qdata,
	Qdebug,
};

static Dirtab scsidir[]={


@@ 20,22 71,13 @@ static Dirtab scsidir[]={
	"data",		{Qdata},	0,	0600,
	"debug",	{Qdebug},	1,	0600,
};

#define	NSCSI	(sizeof scsidir/sizeof(Dirtab))

static Scsi	staticcmd;	/* BUG */
#define	DATASIZE	(8*1024)
static uchar	datablk[DATASIZE];	/* BUG */

static int	debugs[8];
static int	isscsi;
static int	ownid = 0x08|7; /* enable advanced features */

void *
dmaalloc(ulong n)
{
	return ialloc(n, 0);
}
int	scsiexec(Scsi*, int);
int	scsiintr(void);

static int
scsigen1(Chan *c, long qid, Dir *dp)


@@ 77,12 119,6 @@ scsigen(Chan *c, Dirtab *tab, long ntab, long s, Dir *dp)
	return scsigen1(c, (c->qid.path&~CHDIR)+s+1, dp);
}

void
scsireset(void)
{
	addportintr(scsiintr);
}

Chan *
scsiattach(char *param)
{


@@ 138,7 174,8 @@ long
scsiread(Chan *c, char *a, long n, ulong offset)
{
	Scsi *cmd = &staticcmd;
	if (n == 0)

	if(n == 0)
		return 0;
	if(c->qid.path & CHDIR)
		return devdirread(c, a, n, 0, 0, scsigen);


@@ 149,9 186,9 @@ scsiread(Chan *c, char *a, long n, ulong offset)
			n = 1;
		}else
			n = 0;
	}else switch((int)(c->qid.path & 0xf)){
	}else switch(c->qid.path & 0xf){
	case Qcmd:
		if (n < 4)
		if(n < 4)
			error(Ebadarg);
		if(canqlock(cmd)){
			qunlock(cmd);


@@ 160,8 197,10 @@ scsiread(Chan *c, char *a, long n, ulong offset)
		if(cmd->pid != u->p->pid)
			error(Egreg);
		n = 4;
		*a++ = 0; *a++ = 0;
		*a++ = cmd->status>>8; *a = cmd->status;
		*a++ = 0;
		*a++ = 0;
		*a++ = cmd->status >> 8;
		*a = cmd->status;
		cmd->pid = 0;
		qunlock(cmd);
		break;


@@ 174,19 213,26 @@ scsiread(Chan *c, char *a, long n, ulong offset)
			error(Egreg);
		if (n > DATASIZE)
			error(Ebadarg);
		cmd->data.base = datablk;
		cmd->b = scsibuf();
		cmd->data.base = cmd->b->virt;
		if(waserror()){
			scsifree(cmd->b);
			nexterror();
		}
		cmd->data.lim = cmd->data.base + n;
		cmd->data.ptr = cmd->data.base;
		cmd->save = cmd->data.base;
		scsiexec(cmd, 1);
		scsiexec(cmd, ScsiIn);
		n = cmd->data.ptr - cmd->data.base;
		memmove(a, cmd->data.base, n);
		poperror();
		scsifree(cmd->b);
		break;
	case Qdebug:
		if (offset == 0) {
		if(offset == 0){
			n=1;
			*a="01"[debugs[(c->qid.path>>4)&7]!=0];
		} else
		}else
			n = 0;
		break;
	default:


@@ 199,6 245,7 @@ long
scsiwrite(Chan *c, char *a, long n, ulong offset)
{
	Scsi *cmd = &staticcmd;

	if(c->qid.path==1 && n>0){
		if(offset == 0){
			n = 1;


@@ 206,9 253,9 @@ scsiwrite(Chan *c, char *a, long n, ulong offset)
			scsireset();
		}else
			n = 0;
	}else switch ((int)c->qid.path & 0xf){
	}else switch(c->qid.path & 0xf){
	case Qcmd:
		if (n < 6 || n > sizeof cmd->cmdblk)
		if(n < 6 || n > sizeof cmd->cmdblk)
			error(Ebadarg);
		qlock(cmd);
		cmd->pid = u->p->pid;


@@ 229,19 276,26 @@ scsiwrite(Chan *c, char *a, long n, ulong offset)
			error(Egreg);
		if (n > DATASIZE)
			error(Ebadarg);
		cmd->data.base = datablk;
		cmd->b = scsibuf();
		cmd->data.base = cmd->b->virt;
		if(waserror()){
			scsifree(cmd->b);
			nexterror();
		}
		cmd->data.lim = cmd->data.base + n;
		cmd->data.ptr = cmd->data.base;
		cmd->save = cmd->data.base;
		memmove(cmd->data.base, a, n);
		scsiexec(cmd, 0);
		scsiexec(cmd, ScsiOut);
		n = cmd->data.ptr - cmd->data.base;
		poperror();
		scsifree(cmd->b);
		break;
	case Qdebug:
		if (offset == 0) {
		if(offset == 0){
			debugs[(c->qid.path>>4)&7] = (*a=='1');
			n = 1;
		} else
		}else
			n = 0;
		break;
	default:


@@ 263,37 317,39 @@ scsiwstat(Chan *c, char *dp)
}

Scsi *
scsicmd(int dev, int cmdbyte, long size)
scsicmd(int dev, int cmdbyte, Scsibuf *b, long size)
{
	Scsi *cmd = &staticcmd;

	if(size > DATASIZE)
		panic("scsicmd %d", size);
	qlock(cmd);
	cmd->target = dev>>3;
	cmd->lun = dev&7;
	cmd->target = dev >> 3;
	cmd->lun = dev & 7;
	cmd->cmd.base = cmd->cmdblk;
	cmd->cmd.ptr = cmd->cmd.base;
	memset(cmd->cmdblk, 0, sizeof cmd->cmdblk);
	cmd->cmdblk[0] = cmdbyte;
	switch(cmdbyte>>5){
	switch(cmdbyte >> 5){
	case 0:
		cmd->cmd.lim = &cmd->cmdblk[6]; break;
		cmd->cmd.lim = &cmd->cmdblk[6];
		break;
	case 1:
		cmd->cmd.lim = &cmd->cmdblk[10]; break;
		cmd->cmd.lim = &cmd->cmdblk[10];
		break;
	default:
		cmd->cmd.lim = &cmd->cmdblk[12]; break;
		cmd->cmd.lim = &cmd->cmdblk[12];
		break;
	}
	switch(cmdbyte){
	case 0x00:	/* test unit ready */
	case ScsiTestunit:
		break;
	case 0x03:	/* read sense data */
	case ScsiExtsens:
		cmd->cmdblk[4] = size;
		break;
	case 0x25:	/* read capacity */
	case ScsiGetcap:
		break;
	}
	cmd->data.base = datablk;
	cmd->b = b;
	cmd->data.base = b->virt;
	cmd->data.lim = cmd->data.base + size;
	cmd->data.ptr = cmd->data.base;
	cmd->save = cmd->data.base;


@@ 303,12 359,20 @@ scsicmd(int dev, int cmdbyte, long size)
int
scsiready(int dev)
{
	Scsi *cmd = scsicmd(dev, 0x00, 0);
	Scsi *cmd;
	int status;

	status = scsiexec(cmd, 0);
	cmd = scsicmd(dev, ScsiTestunit, scsibuf(), 0);
	if(waserror()){
		scsifree(cmd->b);
		qunlock(cmd);
		nexterror();
	}
	status = scsiexec(cmd, ScsiOut);
	poperror();
	scsifree(cmd->b);
	qunlock(cmd);
	if ((status&0xff00) != 0x6000)
	if((status&0xff00) != 0x6000)
		error(Eio);
	return status&0xff;
}


@@ 316,13 380,21 @@ scsiready(int dev)
int
scsisense(int dev, void *p)
{
	Scsi *cmd = scsicmd(dev, 0x03, 18);
	Scsi *cmd;
	int status;

	status = scsiexec(cmd, 1);
	cmd = scsicmd(dev, ScsiExtsens, scsibuf(), 18);
	if(waserror()){
		scsifree(cmd->b);
		qunlock(cmd);
		nexterror();
	}
	status = scsiexec(cmd, ScsiIn);
	memmove(p, cmd->data.base, 18);
	poperror();
	scsifree(cmd->b);
	qunlock(cmd);
	if ((status&0xff00) != 0x6000)
	if((status&0xff00) != 0x6000)
		error(Eio);
	return status&0xff;
}


@@ 330,17 402,113 @@ scsisense(int dev, void *p)
int
scsicap(int dev, void *p)
{
	Scsi *cmd = scsicmd(dev, 0x25, 8);
	Scsi *cmd;
	int status;

	status = scsiexec(cmd, 1);
	cmd = scsicmd(dev, ScsiGetcap, scsibuf(), 8);
	if(waserror()){
		scsifree(cmd->b);
		qunlock(cmd);
		nexterror();
	}
	status = scsiexec(cmd, ScsiIn);
	memmove(p, cmd->data.base, 8);
	poperror();
	scsifree(cmd->b);
	qunlock(cmd);
	if ((status&0xff00) != 0x6000)
	if((status&0xff00) != 0x6000)
		error(Eio);
	return status&0xff;
}

int
scsibread(int dev, Scsibuf *b, long n, long blocksize, long blockno)
{
	Scsi *cmd;

	cmd = scsicmd(dev, ScsiRead, b, n*blocksize);
	if(waserror()){
		qunlock(cmd);
		nexterror();
	}
	cmd->cmdblk[1] = blockno >> 16;
	cmd->cmdblk[2] = blockno >> 8;
	cmd->cmdblk[3] = blockno;
	cmd->cmdblk[4] = n;
	scsiexec(cmd, ScsiIn);
	n = cmd->data.ptr - cmd->data.base;
	poperror();
	qunlock(cmd);
	return n;
}

int
scsibwrite(int dev, Scsibuf *b, long n, long blocksize, long blockno)
{
	Scsi *cmd;

	cmd = scsicmd(dev, ScsiWrite, b, n*blocksize);
	if(waserror()){
		qunlock(cmd);
		nexterror();
	}
	cmd->cmdblk[1] = blockno >> 16;
	cmd->cmdblk[2] = blockno >> 8;
	cmd->cmdblk[3] = blockno;
	cmd->cmdblk[4] = n;
	scsiexec(cmd, ScsiOut);
	n = cmd->data.ptr - cmd->data.base;
	poperror();
	qunlock(cmd);
	return n;
}

/*
 * allocate a scsi buf of any length
 * must be called at ialloc time and never freed
 */
Scsibuf *
scsialloc(ulong n)
{
	Scsibuf *b;
	uchar *x;
	long m;

	b = ialloc(sizeof *b, 0);
	b->virt = b->phys = ialloc(n, 0);
	return b;
}

/*
 * get a scsi io buffer of DATASIZE size
 */
Scsibuf *
scsibuf(void)
{
	Scsibuf *b;

	for(;;) {
		lock(&scsibufalloc);
		if(b = scsibufalloc.free) {
			scsibufalloc.free = b->next;
			unlock(&scsibufalloc);
			return b;
		}

		unlock(&scsibufalloc);
		resrcwait("no scsi buffers");
	}
}

void
scsifree(Scsibuf *b)
{
	lock(&scsibufalloc);
	b->next = scsibufalloc.free;
	scsibufalloc.free = b;
	unlock(&scsibufalloc);
}

typedef struct Scsictl {
	uchar	asr;
	uchar	data;


@@ 385,6 553,7 @@ enum Aux_status {
	PE=0x02, DBR=0x01,
};

static int	isscsi;
static QLock	scsilock;
static Rendez	scsirendez;
static uchar	*datap;


@@ 394,6 563,37 @@ static void
nop(void)
{}

void
scsireset(void)
{
	static int alloced = 0;
	int i;

	addportintr(scsiintr);
	if(!alloced){
		for(i = 0; i < Nbuf; i++)
			scsifree(scsialloc(DATASIZE));
		alloced = 1;
	}
}

void
scsiinit(void)
{
	isscsi = portprobe("scsi", -1, Scsiaddr, -1, 0L);
	if (isscsi >= 0) {
		DEV->stat = Scsirst;
		WAIT; nop(); WAIT;
		DEV->stat = Inten;
		while (DEV->stat & (INTRQ|DMA))
			nop();
		ownid &= 0x0f; /* possibly advanced features */
		ownid |= 0x80; /* 16MHz */
		PUT(Own_id, ownid);
		PUT(Cmd, Reset);
	}
}

static int
scsidone(void *arg)
{


@@ 453,23 653,6 @@ scsirun(void)
}

void
scsiinit(void)
{
	isscsi = portprobe("scsi", -1, Scsiaddr, -1, 0L);
	if (isscsi >= 0) {
		DEV->stat = Scsirst;
		WAIT; nop(); WAIT;
		DEV->stat = Inten;
		while (DEV->stat & (INTRQ|DMA))
			nop();
		ownid &= 0x0f; /* possibly advanced features */
		ownid |= 0x80; /* 16MHz */
		PUT(Own_id, ownid);
		PUT(Cmd, Reset);
	}
}

void
scsireset0(void)
{
	PUT(Control, 0x29);	/* burst DMA, halt on parity error */

M port/devwren.c => port/devwren.c +48 -57
@@ 7,18 7,20 @@
#include	"devtab.h"
#include	"io.h"

#define DATASIZE	(8*1024)

typedef struct Partition	Partition;
typedef struct Drive		Drive;

enum {
	Npart=		8+2,	/* 8 sub partitions, disk, and partition */
	Ndisk=		64,	/* maximum disks */
	Ndisk=		64,	/* maximum disks; must be power of 2 or change DRIVE */

	/* file types */
	Qdir=		0,
};
#define PART(x)		((x)&0xF)
#define DRIVE(x)	(((x)>>4)&0x7)
#define DRIVE(x)	(((x)>>4)&(Ndisk-1))
#define MKQID(d,p)	(((d)<<4) | (p))

struct Partition


@@ 38,8 40,6 @@ struct Drive

static Drive	wren[Ndisk];

#define	DATASIZE	(8*1024)	/* BUG */

static void	wrenpart(int);
static long	wrenio(Drive *, Partition *, int, char *, ulong, ulong);



@@ 86,17 86,19 @@ wrengen(Chan *c, Dirtab *tab, long ntab, long s, Dir *dirp)
	ulong l;

	qid.vers = 0;
	drive = s/Npart;
	s = s % Npart;
	drive = c->dev;
	if(drive >= Ndisk)
		return -1;
	dp = &wren[drive];

	if(s >= dp->npart)
		return 0;
		return -1;

	pp = &dp->p[s];
	sprint(name, "hd%d%s", drive, pp->name);
	if(drive & 7)
		sprint(name, "hd%d.%d%s", drive>>3, drive&7, pp->name);
	else
		sprint(name, "hd%d%s", drive>>3, pp->name);
	name[NAMELEN] = 0;
	qid.path = MKQID(drive, s);
	l = (pp->end - pp->start) * dp->bytes;


@@ 188,6 190,8 @@ wrenread(Chan *c, char *a, long n, ulong offset)
		return devdirread(c, a, n, 0, 0, wrengen);

	d = &wren[DRIVE(c->qid.path)];
	if(d->npart == 0)
		errors("bad drive");
	p = &d->p[PART(c->qid.path)];
	return wrenio(d, p, 0, a, n, offset);
}


@@ 199,6 203,8 @@ wrenwrite(Chan *c, char *a, long n, ulong offset)
	Partition *p;

	d = &wren[DRIVE(c->qid.path)];
	if(d->npart == 0)
		errors("bad drive");
	p = &d->p[PART(c->qid.path)];
	return wrenio(d, p, 1, a, n, offset);
}


@@ 206,8 212,7 @@ wrenwrite(Chan *c, char *a, long n, ulong offset)
static long
wrenio(Drive *d, Partition *p, int write, char *a, ulong n, ulong offset)
{
	Scsi *cmd;
	void *b;
	Scsibuf *b;
	ulong block;

	if(n % d->bytes || offset % d->bytes)


@@ 222,26 227,20 @@ wrenio(Drive *d, Partition *p, int write, char *a, ulong n, ulong offset)
		n = p->end - block;
	if(n == 0)
		return 0;
	if(write)
		cmd = scsicmd(d->drive, 0x0a, n*d->bytes);
	else
		cmd = scsicmd(d->drive, 0x08, n*d->bytes);
	b = scsibuf();
	if(waserror()){
		qunlock(cmd);
		scsifree(b);
		nexterror();
	}
	cmd->cmdblk[1] = block>>16;
	cmd->cmdblk[2] = block>>8;
	cmd->cmdblk[3] = block;
	cmd->cmdblk[4] = n;
	if(write)
		memmove(cmd->data.base, a, n*d->bytes);
	scsiexec(cmd, !write);
	n = cmd->data.ptr - cmd->data.base;
	if(!write)
		memmove(a, cmd->data.base, n);
	qunlock(cmd);
	if(write){
		memmove(b->virt, a, n*d->bytes);
		n = scsibwrite(d->drive, b, n, d->bytes, block);
	}else{
		n = scsibread(d->drive, b, n, d->bytes, block);
		memmove(a, b->virt, n);
	}
	poperror();
	scsifree(b);
	return n;
}



@@ 252,13 251,11 @@ wrenio(Drive *d, Partition *p, int write, char *a, ulong n, ulong offset)
static void
wrenpart(int dev)
{
	Scsi *cmd;
	Drive *dp;
	Partition *pp;
	uchar buf[32];
	char *b;
	char *line[Npart+1];
	char *field[3];
	Scsibuf *b;
	char *rawpart, *line[Npart+1], *field[3];
	ulong n;
	int i;



@@ 267,8 264,7 @@ wrenpart(int dev)
	scsicap(dev, buf);
	dp = &wren[dev];
	dp->drive = dev;
	if(dp->npart)
		return;

	/*
	 *  we always have a partition for the whole disk
	 *  and one for the partition table


@@ 287,39 283,34 @@ wrenpart(int dev)
	/*
	 *  read partition table from disk, null terminate
	 */
	cmd = scsicmd(dev, 0x08, dp->bytes);
	b = scsibuf();
	if(waserror()){
		qunlock(cmd);
		scsifree(b);
		nexterror();
	}
	n = dp->p[0].end-1;
	cmd->cmdblk[1] = n>>16;
	cmd->cmdblk[2] = n>>8;
	cmd->cmdblk[3] = n;
	cmd->cmdblk[4] = 1;
	scsiexec(cmd, 1);
	cmd->data.base[dp->bytes-1] = 0;
	scsibread(dev, b, 1, dp->bytes, dp->p[0].end-1);
	rawpart = b->virt;
	rawpart[dp->bytes-1] = 0;

	/*
	 *  parse partition table.
	 */
	n = getfields((char *)cmd->data.base, line, Npart+1, '\n');
	if(strncmp(line[0], MAGIC, sizeof(MAGIC)-1) != 0)
		goto out;
	for(i = 1; i < n; i++){
		pp++;
		if(getfields(line[i], field, 3, ' ') != 3){
			break;
	n = getfields(rawpart, line, Npart+1, '\n');
	if(strncmp(line[0], MAGIC, sizeof(MAGIC)-1) == 0){
		for(i = 1; i < n; i++){
			pp++;
			if(getfields(line[i], field, 3, ' ') != 3){
				break;
			}
			strncpy(pp->name, field[0], NAMELEN);
			pp->start = strtoul(field[1], 0, 0);
			pp->end = strtoul(field[2], 0, 0);
			if(pp->start > pp->end || pp->start >= dp->p[0].end){
				break;
			}
			dp->npart++;
		}
		strncpy(pp->name, field[0], NAMELEN);
		pp->start = strtoul(field[1], 0, 0);
		pp->end = strtoul(field[2], 0, 0);
		if(pp->start > pp->end || pp->start >= dp->p[0].end){
			break;
		}
		dp->npart++;
	}
out:
	qunlock(cmd);
	poperror();
	scsifree(b);
}

M port/fault.c => port/fault.c +10 -9
@@ 294,15 294,16 @@ seg(Proc *p, ulong addr, int dolock)

	et = &p->seg[NSEG];
	for(s = p->seg; s < et; s++)
		if(n = *s)
		if(addr >= n->base && addr < n->top) {
			if(dolock == 0)
				return n;

			qlock(&n->lk);
			if(addr >= n->base && addr < n->top)
				return n;
			qunlock(&n->lk);
		if(n = *s){
			if(addr >= n->base && addr < n->top) {
				if(dolock == 0)
					return n;
	
				qlock(&n->lk);
				if(addr >= n->base && addr < n->top)
					return n;
				qunlock(&n->lk);
			}
		}

	return 0;

M port/portfns.h => port/portfns.h +1 -0
@@ 101,6 101,7 @@ void	kbdrepeat(int);
void	kickpager(void);
int	kprint(char*, ...);
void	kproc(char*, void(*)(void*), void*);
void	ksetenv(char*, char*);
void	lights(int);
void	lock(Lock*);
void	lockinit(void);

M power/main.c => power/main.c +1 -3
@@ 230,9 230,7 @@ init0(void)
	chandevinit();

	if(!waserror()){
		c = namec("#e/cputype", Acreate, OWRITE, 0600);
		(*devtab[c->type].write)(c, "mips", strlen("mips"), 0);
		close(c);
		ksetenv("cputype", "mips");
		poperror();
	}


M ss/main.c => ss/main.c +2 -6
@@ 111,12 111,8 @@ init0(void)
	u->dot = clone(u->slash, 0);

	if(!waserror()){
		c = namec("#e/terminal", Acreate, OWRITE, 0600);
		(*devtab[c->type].write)(c, "sun sparc slc", strlen("sun sparc slc"), 0);
		close(c);
		c = namec("#e/cputype", Acreate, OWRITE, 0600);
		(*devtab[c->type].write)(c, "sparc", strlen("sparc"), 0);
		close(c);
		ksetenv("terminal", "sun sparc slc");
		ksetenv("cputype", "sparc");
		poperror();
	}