Merge remote-tracking branch 'contiki-msp430/master'
diff --git a/contiki-msp430/Makefile b/contiki-msp430/Makefile
new file mode 100644
index 0000000..de44e43
--- /dev/null
+++ b/contiki-msp430/Makefile
@@ -0,0 +1,139 @@
+# Copyright (c) 2002, Adam Dunkels.
+# All rights reserved. 
+#
+# Redistribution and use in source and binary forms, with or without 
+# modification, are permitted provided that the following conditions 
+# are met: 
+# 1. Redistributions of source code must retain the above copyright 
+#    notice, this list of conditions and the following disclaimer. 
+# 2. Redistributions in binary form must reproduce the above copyright 
+#    notice, this list of conditions and the following disclaimer in the 
+#    documentation and/or other materials provided with the distribution. 
+# 3. The name of the author may not be used to endorse or promote
+#    products derived from this software without specific prior
+#    written permission.  
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+#
+# This file is part of the Contiki desktop environment
+#
+# $Id: Makefile,v 1.4 2005/04/18 22:46:02 oliverschmidt Exp $
+#
+
+all: contiki wireless-2 wireless-3	
+
+CONTIKI=../contiki
+
+include $(CONTIKI)/Makefile.common
+include Makefile.depend
+
+CC=msp430-gcc
+LD=msp430-ld
+AS=msp430-as
+OBJCOPY=msp430-objcopy
+CFLAGS=-Os -I$(CONTIKI)/apps -I$(CONTIKI)/ctk -I$(CONTIKI)/ek \
+       -I$(CONTIKI)/lib -I$(CONTIKI)/uip \
+       -Iapps -Ictk -Imsp430 -Iuip -Iconf \
+       -DWITH_UIP -DWITH_ASCII \
+       -Wall -g -I../uip -I. -mmcu=msp430x149
+LDFLAGS=-mmcu=msp430x149 -Wl,-Map=contiki.map,--cref
+
+%.o: %.c
+	$(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+
+%.o: apps/%.c
+	$(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+
+%.o: msp430/%.c
+	$(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+
+%.o: uip/%.c
+	$(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+
+%.o: $(CONTIKICC65)/uip/%.c
+	$(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+%.o: $(CONTIKI)/apps/%.c
+	$(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+%.o: $(CONTIKI)/ctk/%.c
+	$(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+%.o: $(CONTIKI)/ek/%.c
+	$(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+%.o: $(CONTIKI)/lib/%.c
+	$(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+%.o: $(CONTIKI)/uip/%.c
+	$(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+
+%.srec:
+	$(OBJCOPY) -O srec $< $@
+
+clean:
+	rm -f *.o *~ *core contiki contiki.srec *.lst *.map
+
+depend:
+	gcc $(CCDEPFLAGS) -MM -Iapps -Ictk -Imsp430 -Iuip -Iconf \
+	-I$(CONTIKI)/lib -I$(CONTIKI)/ek \
+	-I$(CONTIKI)/ctk -I$(CONTIKI)/apps -I$(CONTIKI)/uip \
+	*.c */*.c $(CONTIKI)/*/*.c > Makefile.depend
+
+contiki: contiki-main.o strncasecmp.o sensors.o msp430.o \
+ sensorcheck.o \
+ dispatcher.o \
+ uip.o uip_arch.o uip-signal.o uip_main.o uip-fw.o \
+ rs232.o rs232dev.o slip-tr1001-drv.o tr1001.o \
+# ctk.o ctk-vncserver.o libconio.o vnc-server.o vnc-out.o ctk-vncfont.o \
+# program-handler.o sensorview.o sensorview-dsc.o \
+# $(WEBSERVER) 
+	$(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^
+
+wireless-2: wireless-main-2.o strncasecmp.o sensors.o msp430.o \
+ sensorcheck.o \
+ dispatcher.o \
+ uip.o uip_arch.o uip-signal.o uip_main.o uip-fw.o \
+ rs232.o tr1001-drv.o tr1001.o \
+# ctk.o ctk-vncserver.o libconio.o vnc-server.o vnc-out.o ctk-vncfont.o \
+# program-handler.o sensorview.o sensorview-dsc.o \
+# $(WEBSERVER) 
+	$(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^
+
+wireless-3: wireless-main-3.o strncasecmp.o sensors.o msp430.o \
+ sensorcheck.o \
+ dispatcher.o \
+ uip.o uip_arch.o uip-signal.o uip_main.o uip-fw.o \
+ rs232.o tr1001-drv.o tr1001.o $(WEBSERVER) \
+# ctk.o ctk-vncserver.o libconio.o vnc-server.o vnc-out.o ctk-vncfont.o \
+# program-handler.o sensorview.o sensorview-dsc.o \
+# $(WEBSERVER) 
+	$(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^
+
+
+erase:
+	jtag/pyjtag/jtag.py -l /dev/ppi0 -e
+
+upload: erase
+	jtag/pyjtag/jtag.py -l /dev/ppi0 -D -D -S -R 2048 -p contiki
+	jtag/pyjtag/jtag.py -l /dev/ppi0 -D -r
+
+upload-wireless-2: erase
+	jtag/pyjtag/jtag.py -l /dev/ppi0 -D -D -S -R 2048 -p wireless-2
+	jtag/pyjtag/jtag.py -l /dev/ppi0 -D -r
+
+upload-wireless-3: erase
+	jtag/pyjtag/jtag.py -l /dev/ppi0 -D -D -S -R 2048 -p wireless-3
+	jtag/pyjtag/jtag.py -l /dev/ppi0 -D -r
+
+upload-remote: contiki
+	scp contiki sidewalker.sics.se:/tmp
+	ssh sidewalker.sics.se "/adam/contiki-msp430/jtag/pyjtag/jtag.py -l /dev/ppi0 -e"
+	ssh sidewalker.sics.se "/adam/contiki-msp430/jtag/pyjtag/jtag.py -l /dev/ppi0 -D -D -S -R 2048 -p /tmp/contiki"
+	ssh sidewalker.sics.se "/adam/contiki-msp430/jtag/pyjtag/jtag.py -l /dev/ppi0 -r"
+
diff --git a/contiki-msp430/Makefile.depend b/contiki-msp430/Makefile.depend
new file mode 100644
index 0000000..e48b154
--- /dev/null
+++ b/contiki-msp430/Makefile.depend
@@ -0,0 +1,427 @@
+contiki-main.o: contiki-main.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ctk/ctk-draw.h ../contiki/ctk/ctk-vncserver.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/uip_main.h \
+ ../contiki/uip/uip_arp.h ../contiki/uip/resolv.h apps/webserver.h \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h \
+ ../contiki/apps/about-dsc.h ../contiki/apps/netconf-dsc.h \
+ ../contiki/apps/processes-dsc.h ../contiki/apps/www-dsc.h \
+ ../contiki/apps/webserver-dsc.h apps/sensorview-dsc.h \
+ msp430/sensors.h msp430/msp430.h msp430/rs232.h
+test.o: test.c msp430/rs232.h
+httpd-cgi.o: apps/httpd-cgi.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/apps/httpd.h apps/httpd-cgi.h \
+ apps/httpd-fs.h ../contiki/lib/petsciiconv.h msp430/sensors.h \
+ msp430/tr1001.h
+httpd-fs.o: apps/httpd-fs.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/apps/httpd.h apps/httpd-fs.h \
+ apps/httpd-fsdata.h apps/httpd-fsdata.c
+httpd-fsdata.o: apps/httpd-fsdata.c
+httpd.o: apps/httpd.c ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/ek/dispatcher.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/apps/httpd.h apps/httpd-fs.h apps/httpd-fsdata.h \
+ apps/httpd-cgi.h
+procprint.o: apps/procprint.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/loader.h \
+ msp430/rs232.h
+sensorcheck.o: apps/sensorcheck.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/loader.h \
+ msp430/sensors.h ../contiki/uip/uip-signal.h
+sensorview-dsc.o: apps/sensorview-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+sensorview.o: apps/sensorview.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/loader.h \
+ msp430/sensors.h
+webclient.o: apps/webclient.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/apps/webclient.h \
+ ../contiki/apps/http-strings.h \
+ ../contiki/apps/http-user-agent-string.h ../contiki/uip/resolv.h \
+ ../contiki/uip/uip_main.h conf/www-conf.h
+webserver.o: apps/webserver.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/apps/http-strings.h ../contiki/uip/uip_main.h \
+ ../contiki/lib/petsciiconv.h ../contiki/ek/loader.h apps/webserver.h \
+ ../contiki/apps/httpd.h
+slip-main.o: contiki-dtnsn/slip-main.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ctk/ctk-draw.h ../contiki/ctk/ctk-vncserver.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/uip_main.h \
+ ../contiki/uip/uip_arp.h ../contiki/uip/resolv.h apps/webserver.h \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h \
+ ../contiki/apps/about-dsc.h ../contiki/apps/netconf-dsc.h \
+ ../contiki/apps/processes-dsc.h ../contiki/apps/www-dsc.h \
+ ../contiki/apps/webserver-dsc.h apps/sensorview-dsc.h \
+ msp430/sensors.h msp430/msp430.h msp430/rs232.h
+slip-tr1001-drv.o: contiki-dtnsn/slip-tr1001-drv.c \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/uip/uip_arp.h ../contiki/uip/uip-signal.h uip/rs232dev.h \
+ msp430/tr1001.h ../contiki/ek/loader.h ../contiki/uip/uip-fw.h
+wireless-main-2.o: contiki-dtnsn/wireless-main-2.c \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/ctk/ctk-vncserver.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h msp430/msp430.h ../contiki/uip/uip_main.h \
+ ../contiki/uip/uip_arp.h ../contiki/uip/resolv.h apps/webserver.h \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h \
+ ../contiki/apps/about-dsc.h ../contiki/apps/netconf-dsc.h \
+ ../contiki/apps/processes-dsc.h ../contiki/apps/www-dsc.h \
+ ../contiki/apps/webserver-dsc.h apps/sensorview-dsc.h \
+ msp430/sensors.h msp430/rs232.h
+wireless-main-3.o: contiki-dtnsn/wireless-main-3.c \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/ctk/ctk-vncserver.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/uip_main.h ../contiki/uip/uip_arp.h \
+ ../contiki/uip/resolv.h apps/webserver.h \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h \
+ ../contiki/apps/about-dsc.h ../contiki/apps/netconf-dsc.h \
+ ../contiki/apps/processes-dsc.h ../contiki/apps/www-dsc.h \
+ ../contiki/apps/webserver-dsc.h apps/sensorview-dsc.h \
+ msp430/sensors.h msp430/msp430.h msp430/rs232.h
+wireless-main.o: contiki-dtnsn/wireless-main.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ctk/ctk-draw.h ../contiki/ctk/ctk-vncserver.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h msp430/msp430.h \
+ ../contiki/uip/uip_main.h ../contiki/uip/uip_arp.h \
+ ../contiki/uip/resolv.h apps/webserver.h \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h \
+ ../contiki/apps/about-dsc.h ../contiki/apps/netconf-dsc.h \
+ ../contiki/apps/processes-dsc.h ../contiki/apps/www-dsc.h \
+ ../contiki/apps/webserver-dsc.h apps/sensorview-dsc.h \
+ msp430/sensors.h msp430/rs232.h
+msp430.o: msp430/msp430.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ctk/ctk-draw.h ../contiki/ctk/ctk-vncserver.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/uip_main.h \
+ ../contiki/uip/uip_arp.h ../contiki/uip/resolv.h apps/webserver.h \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h \
+ ../contiki/apps/about-dsc.h ../contiki/apps/netconf-dsc.h \
+ ../contiki/apps/processes-dsc.h ../contiki/apps/www-dsc.h \
+ ../contiki/apps/webserver-dsc.h apps/sensorview-dsc.h \
+ msp430/sensors.h msp430/rs232.h
+rs232.o: msp430/rs232.c msp430/rs232.h
+sensors.o: msp430/sensors.c
+tr1001.o: msp430/tr1001.c msp430/tr1001.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h msp430/sensors.h
+rs232-backup.o: uip/rs232-backup.c msp430/rs232.h
+rs232dev.o: uip/rs232dev.c msp430/rs232.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h
+slip-drv.o: uip/slip-drv.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip_arp.h \
+ ../contiki/uip/uip-signal.h uip/rs232dev.h ../contiki/ek/loader.h
+tr1001-drv.o: uip/tr1001-drv.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip_arp.h \
+ ../contiki/uip/uip-signal.h msp430/tr1001.h ../contiki/ek/loader.h \
+ ../contiki/uip/uip-fw.h
+uip_arch.o: uip/uip_arch.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip_arch.h
+about-dsc.o: ../contiki/apps/about-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+about.o: ../contiki/apps/about.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ctk/ctk-draw.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/lib/petsciiconv.h ../contiki/ek/loader.h
+calc-dsc.o: ../contiki/apps/calc-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+calc.o: ../contiki/apps/calc.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/loader.h
+email-dsc.o: ../contiki/apps/email-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+email.o: ../contiki/apps/email.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/apps/smtp.h \
+ ../contiki/uip/uip_main.h ../contiki/lib/petsciiconv.h \
+ ../contiki/ek/loader.h ../contiki/lib/ctk-textedit.h
+html-strings.o: ../contiki/apps/html-strings.c
+htmlparser.o: ../contiki/apps/htmlparser.c \
+ ../contiki/apps/htmlparser.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/apps/html-strings.h conf/www-conf.h
+http-strings.o: ../contiki/apps/http-strings.c
+http-user-agent-string.o: ../contiki/apps/http-user-agent-string.c
+httpd-cgi.o: ../contiki/apps/httpd-cgi.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/apps/httpd.h \
+ ../contiki/apps/httpd-cgi.h ../contiki/apps/httpd-fs.h \
+ ../contiki/lib/petsciiconv.h
+httpd-fs.o: ../contiki/apps/httpd-fs.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/apps/httpd.h \
+ ../contiki/apps/httpd-fs.h ../contiki/apps/httpd-fsdata.h \
+ ../contiki/apps/httpd-fsdata.c
+httpd-fsdata.o: ../contiki/apps/httpd-fsdata.c
+httpd.o: ../contiki/apps/httpd.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/apps/httpd.h \
+ ../contiki/apps/httpd-fs.h ../contiki/apps/httpd-fsdata.h \
+ ../contiki/apps/httpd-cgi.h
+netconf-dsc.o: ../contiki/apps/netconf-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+netconf.o: ../contiki/apps/netconf.c ../contiki/uip/uip_main.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/uip/uip_arp.h ../contiki/uip/resolv.h ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/ctk/ctk-draw.h ../contiki/ek/loader.h
+processes-dsc.o: ../contiki/apps/processes-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+processes.o: ../contiki/apps/processes.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/loader.h
+program-handler.o: ../contiki/apps/program-handler.c \
+ ../contiki/lib/petsciiconv.h ../contiki/uip/uip_main.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/uip/resolv.h ../contiki/ek/loader.h \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h
+shell-dsc.o: ../contiki/apps/shell-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+shell-gui.o: ../contiki/apps/shell-gui.c \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/loader.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h \
+ ../contiki/uip/uip_main.h ../contiki/uip/uip_arp.h \
+ ../contiki/uip/resolv.h ../contiki/apps/shell.h \
+ ../contiki/uip/uip-signal.h
+simpletelnet.o: ../contiki/apps/simpletelnet.c \
+ ../contiki/lib/petsciiconv.h ../contiki/uip/uip_main.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/uip/resolv.h \
+ ../contiki/apps/telnet.h ../contiki/apps/simpletelnet.h \
+ ../contiki/ek/loader.h
+smtp-strings.o: ../contiki/apps/smtp-strings.c
+smtp.o: ../contiki/apps/smtp.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/apps/smtp.h \
+ ../contiki/apps/smtp-strings.h
+telnet-dsc.o: ../contiki/apps/telnet-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+telnet.o: ../contiki/apps/telnet.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/apps/telnet.h
+telnetd-dsc.o: ../contiki/apps/telnetd-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+telnetd.o: ../contiki/apps/telnetd.c ../contiki/apps/program-handler.h \
+ ../contiki/ek/dsc.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/loader.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/ek/dispatcher.h ../contiki/ek/arg.h \
+ ../contiki/uip/uip_main.h ../contiki/lib/petsciiconv.h \
+ ../contiki/uip/uip_arp.h ../contiki/uip/resolv.h \
+ ../contiki/lib/memb.h ../contiki/apps/shell.h \
+ ../contiki/uip/uip-signal.h
+vnc-dsc.o: ../contiki/apps/vnc-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+vnc-viewer.o: ../contiki/apps/vnc-viewer.c ../contiki/apps/vnc-draw.h \
+ ../contiki/uip/uip_arch.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/apps/vnc-viewer.h
+vnc.o: ../contiki/apps/vnc.c ../contiki/lib/petsciiconv.h \
+ ../contiki/uip/uip_main.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/uip/resolv.h \
+ ../contiki/apps/telnet.h ../contiki/apps/vnc.h \
+ ../contiki/apps/vnc-draw.h ../contiki/uip/uip_arch.h \
+ ../contiki/apps/vnc-viewer.h conf/vnc-conf.h ../contiki/ek/loader.h
+webclient.o: ../contiki/apps/webclient.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/apps/webclient.h \
+ ../contiki/apps/http-strings.h \
+ ../contiki/apps/http-user-agent-string.h ../contiki/uip/resolv.h \
+ ../contiki/uip/uip_main.h conf/www-conf.h
+webserver-dsc.o: ../contiki/apps/webserver-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+webserver.o: ../contiki/apps/webserver.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/apps/http-strings.h ../contiki/uip/uip_main.h \
+ ../contiki/lib/petsciiconv.h ../contiki/ek/loader.h \
+ ../contiki/apps/webserver.h ../contiki/apps/httpd.h
+www-dsc.o: ../contiki/apps/www-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+www.o: ../contiki/apps/www.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/apps/webclient.h \
+ ../contiki/apps/http-strings.h \
+ ../contiki/apps/http-user-agent-string.h ../contiki/apps/htmlparser.h \
+ ../contiki/uip/resolv.h ../contiki/lib/petsciiconv.h \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h \
+ ../contiki/ek/loader.h conf/www-conf.h
+ctk-conio.o: ../contiki/ctk/ctk-conio.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ctk/ctk-draw.h conf/ctk-conio-conf.h
+ctk-vncfont.o: ../contiki/ctk/ctk-vncfont.c
+ctk-vncserver.o: ../contiki/ctk/ctk-vncserver.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ctk/ctk-draw.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/ek/loader.h ../contiki/ctk/vnc-server.h \
+ ../contiki/ctk/vnc-out.h ../contiki/ctk/ctk-vncserver.h \
+ conf/ctk-vncserver-conf.h ../contiki/lib/libconio.h \
+ conf/libconio-conf.h
+ctk.o: ../contiki/ctk/ctk.c ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/ctk/ctk-mouse.h
+vnc-out.o: ../contiki/ctk/vnc-out.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ctk/vnc-server.h \
+ ../contiki/ctk/vnc-out.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/lib/libconio.h \
+ conf/libconio-conf.h conf/ctk-vncserver-conf.h \
+ ../contiki/ctk/ctk-vncfont.h ../contiki/ctk/ctk-mouse.h
+vnc-server.o: ../contiki/ctk/vnc-server.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ctk/vnc-server.h \
+ ../contiki/ctk/vnc-out.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h
+arg.o: ../contiki/ek/arg.c ../contiki/ek/arg.h
+dispatcher.o: ../contiki/ek/dispatcher.c ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/ek/dispatcher.h ../contiki/lib/cc.h \
+ conf/cc-conf.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/uip-signal.h
+ek.o: ../contiki/ek/ek.c ../contiki/ek/ek.h conf/ek-conf.h
+ctk-textedit.o: ../contiki/lib/ctk-textedit.c \
+ ../contiki/lib/ctk-textedit.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h
+libconio.o: ../contiki/lib/libconio.c ../contiki/lib/libconio.h \
+ conf/libconio-conf.h
+memb.o: ../contiki/lib/memb.c ../contiki/lib/memb.h
+petsciiconv.o: ../contiki/lib/petsciiconv.c
+strncasecmp.o: ../contiki/lib/strncasecmp.c
+resolv.o: ../contiki/uip/resolv.c ../contiki/uip/resolv.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/uip/uip-signal.h
+uip-fw.o: ../contiki/uip/uip-fw.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip_arch.h ../contiki/uip/uip-fw.h
+uip-signal.o: ../contiki/uip/uip-signal.c ../contiki/uip/uip-signal.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h
+uip.o: ../contiki/uip/uip.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip_arch.h
+uip_arp.o: ../contiki/uip/uip_arp.c ../contiki/uip/uip_arp.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h
+uip_main.o: ../contiki/uip/uip_main.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip_arp.h \
+ ../contiki/uip/uip_main.h
diff --git a/contiki-msp430/apps/httpd-cgi.c b/contiki-msp430/apps/httpd-cgi.c
new file mode 100644
index 0000000..f9cc3f1
--- /dev/null
+++ b/contiki-msp430/apps/httpd-cgi.c
@@ -0,0 +1,207 @@
+/*
+ * Copyright (c) 2001, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright 
+ *    notice, this list of conditions and the following disclaimer in the 
+ *    documentation and/or other materials provided with the distribution. 
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id: httpd-cgi.c,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+
+/*
+ * This file includes functions that are called by the web server
+ * scripts. The functions takes no argument, and the return value is
+ * interpreted as follows. A zero means that the function did not
+ * complete and should be invoked for the next packet as well. A
+ * non-zero value indicates that the function has completed and that
+ * the web server should move along to the next script line.
+ *
+ */
+
+#include "uip.h"
+#include "httpd.h"
+#include "httpd-cgi.h"
+#include "httpd-fs.h"
+
+#include "petsciiconv.h"
+
+#ifdef __CBM__
+#include <cbm.h>
+#include <c64.h>
+#endif /* __CBM__ */
+
+#include <stdio.h>
+#include <string.h>
+
+#include "sensors.h"
+
+static u8_t sensors(void);
+static u8_t tcp_stats(void);
+static u8_t processes(void);
+
+const httpd_cgifunction httpd_cgitab[3] = {
+  sensors,    /* CGI function "a" */
+  tcp_stats,     /* CGI function "b" */
+  processes,     /* CGI function "c" */
+};
+
+static const char closed[] =   /*  "CLOSED",*/
+{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0};
+static const char syn_rcvd[] = /*  "SYN-RCVD",*/
+{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56, 
+ 0x44,  0};
+static const char syn_sent[] = /*  "SYN-SENT",*/
+{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e, 
+ 0x54,  0};
+static const char established[] = /*  "ESTABLISHED",*/
+{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 
+ 0x45, 0x44, 0};
+static const char fin_wait_1[] = /*  "FIN-WAIT-1",*/
+{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 
+ 0x54, 0x2d, 0x31, 0};
+static const char fin_wait_2[] = /*  "FIN-WAIT-2",*/
+{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49, 
+ 0x54, 0x2d, 0x32, 0};
+static const char closing[] = /*  "CLOSING",*/
+{0x43, 0x4c, 0x4f, 0x53, 0x49, 
+ 0x4e, 0x47, 0};
+static const char time_wait[] = /*  "TIME-WAIT,"*/
+{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41, 
+ 0x49, 0x54, 0};
+static const char last_ack[] = /*  "LAST-ACK"*/
+{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43, 
+ 0x4b, 0};
+
+static const char * const states[] = {
+  closed,
+  syn_rcvd,
+  syn_sent,
+  established,
+  fin_wait_1,
+  fin_wait_2,
+  closing,
+  time_wait,
+  last_ack};
+  
+
+/*-----------------------------------------------------------------------------------*/
+static u8_t
+sensors(void)
+{
+  if(uip_acked()) {
+    return 1;
+  }
+  sprintf((char *)uip_appdata,
+	  "<li>Microphone 0x%x<br><li>Battery 0x%x<br><li>Temp %d<br><li>Extern 0x%x<br>",
+	  sensors_mic, sensors_battery, sensors_temp, sensors_extern);
+  uip_send(uip_appdata, strlen((char *)uip_appdata));
+  return 0;
+}
+/*-----------------------------------------------------------------------------------*/
+static u8_t
+tcp_stats(void)
+{
+  struct uip_conn *conn;  
+
+  if(uip_acked()) {
+    /* If the previously sent data has been acknowledged, we move
+       forward one connection. */
+    if(++hs->count == UIP_CONNS) {
+      /* If all connections has been printed out, we are done and
+	 return 1. */
+      return 1;
+    }
+  }
+
+  conn = &uip_conns[hs->count];
+  while((conn->tcpstateflags & TS_MASK) == CLOSED) {
+    if(++hs->count == UIP_CONNS) {
+      /* If all connections has been printed out, we are done and
+	 return 1. */
+      return 1;
+    }
+    conn = &uip_conns[hs->count];
+  }
+
+  sprintf((char *)uip_appdata,
+	  "<tr><td>%d</td><td>%u.%u.%u.%u:%u</td><td>%s</td><td>%u</td><td>%u</td><td>%c %c</td></tr>\r\n",
+	  htons(conn->lport),
+	  htons(conn->ripaddr[0]) >> 8,
+	  htons(conn->ripaddr[0]) & 0xff,
+	  htons(conn->ripaddr[1]) >> 8,
+	  htons(conn->ripaddr[1]) & 0xff,
+	  htons(conn->rport),
+	  states[conn->tcpstateflags & TS_MASK],
+	  conn->nrtx,
+	  conn->timer,
+	  (uip_outstanding(conn))? '*':' ',
+	  (uip_stopped(conn))? '!':' ');
+  uip_send(uip_appdata, strlen((char *)uip_appdata));
+
+  return 0;
+}
+/*-----------------------------------------------------------------------------------*/
+static u8_t
+processes(void)
+{
+  u8_t i;
+  struct dispatcher_proc *p;
+
+
+  p = DISPATCHER_PROCS();
+  for(i = 0; i < hs->count; ++i) {
+    if(p != NULL) {
+      p = p->next;
+    }
+  }
+
+  if(uip_acked()) {
+    /* If the previously sent data has been acknowledged, we move
+       forward one connection. */
+    ++hs->count;
+    if(p != NULL) {
+      p = p->next;
+    }
+    if(p == NULL) {
+      /* If all processes have been printed out, we are done and
+	 return 1. */
+      return 1;
+    }
+  }
+
+  sprintf((char *)uip_appdata,
+	  "<tr align=\"center\"><td>%3d</td><td>%s</td><td>0x%04x</td><td>0x%04x</td><td>0x%04x</td></tr>\r\n",
+	  p->id, p->name,
+	  p->idle, p->signalhandler, p->uiphandler);
+  uip_send(uip_appdata, strlen((char *)uip_appdata));
+  return 0;
+}
+/*-----------------------------------------------------------------------------------*/
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/apps/httpd-cgi.h b/contiki-msp430/apps/httpd-cgi.h
new file mode 100644
index 0000000..dd19d94
--- /dev/null
+++ b/contiki-msp430/apps/httpd-cgi.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2001, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright 
+ *    notice, this list of conditions and the following disclaimer in the 
+ *    documentation and/or other materials provided with the distribution. 
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id: httpd-cgi.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+
+#ifndef __HTTPD_CGI_H__
+#define __HTTPD_CGI_H__
+
+typedef u8_t (* httpd_cgifunction)(void);
+
+extern const httpd_cgifunction httpd_cgitab[3];
+
+#endif /* __HTTPD_CGI_H__ */
diff --git a/contiki-msp430/apps/httpd-fs.c b/contiki-msp430/apps/httpd-fs.c
new file mode 100644
index 0000000..d97dcfb
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs.c
@@ -0,0 +1,133 @@
+/*
+ * Copyright (c) 2001, Swedish Institute of Computer Science.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright 
+ *    notice, this list of conditions and the following disclaimer in the 
+ *    documentation and/or other materials provided with the distribution. 
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by the Swedish Institute
+ *      of Computer Science and its contributors.
+ * 4. Neither the name of the Institute nor the names of its contributors 
+ *    may be used to endorse or promote products derived from this software 
+ *    without specific prior written permission. 
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE. 
+ *
+ * This file is part of the lwIP TCP/IP stack.
+ * 
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id: httpd-fs.c,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ */
+
+#include "uip.h"
+#include "httpd.h"
+#include "httpd-fs.h"
+#include "httpd-fsdata.h"
+
+#include "httpd-fsdata.c"
+
+#if HTTPD_FS_STATISTICS
+static u16_t count[HTTPD_FS_NUMFILES];
+#endif /* HTTPD_FS_STATISTICS */
+
+/*-----------------------------------------------------------------------------------*/
+static u8_t
+httpd_fs_strcmp(const char *str1, const char *str2)
+{
+  u8_t i;
+  i = 0;
+ loop:
+
+  if(str2[i] == 0 ||
+     str1[i] == '\r' || 
+     str1[i] == '\n') {
+    return 0;
+  }
+
+  if(str1[i] != str2[i]) {
+    return 1;
+  }
+
+
+  ++i;
+  goto loop;
+}
+/*-----------------------------------------------------------------------------------*/
+int
+httpd_fs_open(const char *name, struct httpd_fs_file *file)
+{
+#if HTTPD_FS_STATISTICS
+  u16_t i = 0;
+#endif /* HTTPD_FS_STATISTICS */
+  struct httpd_fsdata_file_noconst *f;
+
+  for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;
+      f != NULL;
+      f = (struct httpd_fsdata_file_noconst *)f->next) {
+
+    if(httpd_fs_strcmp(name, f->name) == 0) {
+      file->data = f->data;
+      file->len = f->len;
+#if HTTPD_FS_STATISTICS
+      ++count[i];
+#endif /* HTTPD_FS_STATISTICS */
+      return 1;
+    }
+#if HTTPD_FS_STATISTICS
+    ++i;
+#endif /* HTTPD_FS_STATISTICS */
+
+  }
+  return 0;
+}
+/*-----------------------------------------------------------------------------------*/
+void
+httpd_fs_init(void)
+{
+#if HTTPD_FS_STATISTICS
+  u16_t i;
+  for(i = 0; i < HTTPD_FS_NUMFILES; i++) {
+    count[i] = 0;
+  }
+#endif /* HTTPD_FS_STATISTICS */
+}
+/*-----------------------------------------------------------------------------------*/
+#if HTTPD_FS_STATISTICS
+u16_t httpd_fs_count
+(char *name)
+{
+  struct httpd_fsdata_file_noconst *f;
+  u16_t i;
+
+  i = 0;
+  for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;
+      f != NULL;
+      f = (struct httpd_fsdata_file_noconst *)f->next) {
+
+    if(httpd_fs_strcmp(name, f->name) == 0) {
+      return count[i];
+    }
+    ++i;
+  }
+  return 0;
+}
+#endif /* HTTPD_FS_STATISTICS */
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/apps/httpd-fs.h b/contiki-msp430/apps/httpd-fs.h
new file mode 100644
index 0000000..5f07e57
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2001, Swedish Institute of Computer Science.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright 
+ *    notice, this list of conditions and the following disclaimer in the 
+ *    documentation and/or other materials provided with the distribution. 
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by the Swedish Institute
+ *      of Computer Science and its contributors.
+ * 4. Neither the name of the Institute nor the names of its contributors 
+ *    may be used to endorse or promote products derived from this software 
+ *    without specific prior written permission. 
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE. 
+ *
+ * This file is part of the lwIP TCP/IP stack.
+ * 
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id: httpd-fs.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ */
+#ifndef __HTTPD_FS_H__
+#define __HTTPD_FS_H__
+
+#include "uip.h"
+
+#define HTTPD_FS_STATISTICS 0
+
+struct httpd_fs_file {
+  const unsigned char *data;
+  int len;
+};
+
+/* file must be allocated by caller and will be filled in
+   by the function. */
+int httpd_fs_open(const char *name, struct httpd_fs_file *file);
+
+#ifdef HTTPD_FS_STATISTICS
+#if HTTPD_FS_STATISTICS == 1  
+u32_t httpd_fs_count(char *name);
+u32_t httpd_fs_total(void);
+void httpd_fs_inc(void);
+#endif /* HTTPD_FS_STATISTICS */
+#endif /* HTTPD_FS_STATISTICS */
+
+void httpd_fs_init(void);
+
+#endif /* __HTTPD_FS_H__ */
diff --git a/contiki-msp430/apps/httpd-fs/404.html b/contiki-msp430/apps/httpd-fs/404.html
new file mode 100644
index 0000000..a17711d
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/404.html
@@ -0,0 +1,8 @@
+<html>
+  <body bgcolor="white">
+    <center>
+      <h1>404 - file not found</h1>
+      <h3>Go <a href="/">here</a> instead.</h3>
+    </center>
+  </body>
+</html>
\ No newline at end of file
diff --git a/contiki-msp430/apps/httpd-fs/cgi/processes b/contiki-msp430/apps/httpd-fs/cgi/processes
new file mode 100644
index 0000000..22d144c
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/cgi/processes
@@ -0,0 +1,8 @@
+i /header.html
+# 
+t <h1>System processes</h1><br><table width="100%">
+t <tr><th>ID</th><th>Name</th><th>Idle handler</th><th>Signal handler</th><th>TCP/IP handler</th> </tr>
+c c
+t </table>
+i /footer.plain
+.
\ No newline at end of file
diff --git a/contiki-msp430/apps/httpd-fs/cgi/sensors b/contiki-msp430/apps/httpd-fs/cgi/sensors
new file mode 100644
index 0000000..d4a911d
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/cgi/sensors
@@ -0,0 +1,7 @@
+i /header.html
+# 
+t <h1>Sensors</h1><br> <ul>
+c a
+t </ul>
+i /footer.plain
+.
\ No newline at end of file
diff --git a/contiki-msp430/apps/httpd-fs/cgi/tcp b/contiki-msp430/apps/httpd-fs/cgi/tcp
new file mode 100644
index 0000000..26eda16
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/cgi/tcp
@@ -0,0 +1,8 @@
+i /header.html
+# 
+t <h1>Current connections</h1><br> <table width="100%">
+t <tr><th>Local</th><th>Remote</th><th>State</th><th>Retransmissions</th><th>Timer</th><th>Flags</th> </tr>
+c b
+t </table>
+i /footer.plain
+.
\ No newline at end of file
diff --git a/contiki-msp430/apps/httpd-fs/footer.plain b/contiki-msp430/apps/httpd-fs/footer.plain
new file mode 100644
index 0000000..ac4a1f7
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/footer.plain
@@ -0,0 +1,11 @@
+<center>
+[<a href="/">Front page</a> |		      
+<a href="/cgi/tcp">Network connections</a> |
+<a href="/cgi/processes">Processes</a> |
+<a href="/cgi/sensors">Sensors</a>]
+</center><br>			
+<p align="right">
+/<a href="http://www.sics.se/%7eadam/">Adam Dunkels</a>
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/contiki-msp430/apps/httpd-fs/header.html b/contiki-msp430/apps/httpd-fs/header.html
new file mode 100644
index 0000000..8302605
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/header.html
@@ -0,0 +1,2 @@
+<html><head><title>Contiki / uIP on MSP430 demo-server</title></head>
+<body bgcolor="white" text="black">
diff --git a/contiki-msp430/apps/httpd-fs/img/screenshot.png b/contiki-msp430/apps/httpd-fs/img/screenshot.png
new file mode 100644
index 0000000..1175867
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/img/screenshot.png
Binary files differ
diff --git a/contiki-msp430/apps/httpd-fs/index.html b/contiki-msp430/apps/httpd-fs/index.html
new file mode 100644
index 0000000..049ea5a
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/index.html
@@ -0,0 +1,41 @@
+<h1><a href="http://dunkels.com/adam/contiki/">Contiki</a> / <a
+href="http://dunkels.com/adam/uip/">uIP</a> on MSP430</h1>
+<p>
+The web pages you are watching are served by a <a
+href="http://dunkels.com/adam/contiki/apps/webserver.html">web
+server</a> running under the <a
+href="http://dunkels.com/adam/contiki/">Contiki operating system</a>
+on a small <a
+href="http://www.inf.fu-berlin.de/inst/ag-tech/esb/english/">sensor
+board</a> developed by <a
+href="http://www.inf.fu-berlin.de/inst/ag-tech/">the CST group</a> at
+<a href="http://www.fu-berlin.de">FU Berlin</a>. The sensor board is
+equipped with a TI MSP430 micrcontroller with 2048 bytes of RAM and 60
+kilobytes of flash ROM, as well as a number of sensors. The sensors
+can measure vibration, temperature, IR-light, sound, tilt and motion.
+</p>
+
+<h2>Internet connectivity</h2>			    
+<p>
+The sensor board is directly connected to the Internet through the
+RS232 interface on the board, and is running the <a
+href="http://dunkels.com/adam/uip/">uIP TCP/IP stack</a> on which
+Contiki is based.
+</p>
+			      
+<h2>Memory usage</h2>
+<p>
+The entire Contiki MSP430 system uses only about 1800 bytes RAM, of
+which 280 bytes is used for the virtual screen and 300 bytes for
+network buffers. All code and web pages are stored in the
+microcontroller's on-chip flash ROM.
+</p>
+<p align="right">
+/<a href="http://www.sics.se/%7eadam/">Adam Dunkels</a>
+</p>
+</td>
+</tr>
+</table>
+    
+</body>
+</html>
\ No newline at end of file
diff --git a/contiki-msp430/apps/httpd-fs/vnc.html b/contiki-msp430/apps/httpd-fs/vnc.html
new file mode 100644
index 0000000..75ee3a8
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/vnc.html
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Contiki / uIP on MSP430 demo-server</title>
+</head>
+<body bgcolor="#e0e0e0" text="black">
+<table width="100%" cellspacing=0 cellpadding=0 border=0><tr valign="top">
+<td width="25%" valign="top">
+<br>
+<a href="/">Front page</a><br>
+<br>		      
+<a href="/vnc.html">Virtual desktop</a><br>
+<br>		      
+<a href="/cgi/tcp">Network connections</a><br>
+<br>			
+<a href="/cgi/processes">Processes</a><br>
+<br>			
+<a href="/cgi/sensors">Sensors</a><br>
+<br>			
+<td class="content">
+<h1>Virtual Contiki Desktop</h1>			      
+
+<p>
+This small sensor board has no monitor or other kind of display, but
+it still is possible to access the Contiki system's virtual desktop
+using VNC.</p>
+			      
+<h3>Java client</h3>
+<p>
+The Java client makes it possible to access the virtual
+Contiki display directly from the web browser. It requires
+Java to be turned on in the browser.
+</p>
+<p>
+When asked for a password, just click the "Ok" button
+without typing in any password.
+</p>
+<center>
+<b><a href="#" onClick='window.open("vncjava.html",
+"Contiki",
+"toolbar=no,location=no,status=yes,menubar=no,scrollbars=yes,resizable=yes");'>Click
+here to launch in new window</a></b></center>
+<br>
+<center><b><a href="vncjava.html">Click here to launch in
+this window</a></b>
+</center>
+
+<p>
+The server can only have one connection at a time. In order to avoid
+monopolization of the connections, each user is only allowed to use
+the display for a short while.
+</p>
+    
+<h3>Download VNC client</h3>
+<p>
+If you don't have Java installed, you can download a free VNC client
+program from <a href="http://www.realvnc.com">RealVNC</a>. Start the
+program with <b>193.10.67.150:0</b> as the display.
+</p>
+	   
+<h3>Unix/X clients</h3>
+<p>
+Unix/X VNC clients need the <tt>-bgr233</tt> option to work. Use the
+following command:
+</p>
+<center><tt>vncviewer -bgr233 193.10.67.150:0</tt></center>
+<p align="right">
+/<a href="http://dunkels.com/adam/">Adam Dunkels</a>
+</p>
+</td>
+</tr>
+</table>
+    
+  </body>
+</html>
diff --git a/contiki-msp430/apps/httpd-fs/vncjava.html b/contiki-msp430/apps/httpd-fs/vncjava.html
new file mode 100644
index 0000000..42f1aab
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/vncjava.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Virtual Contiki Screen</title>
+  </head>
+
+  <body>
+    <center>
+      <applet code="vncviewer.class" archive="vncviewer.jar"
+	      width="280" height="160">
+	<param name="PORT" value="5900">
+	  Java must be enabled in your web browser for this to work.
+      </applet>
+    </center>
+  </body>
+</html>
diff --git a/contiki-msp430/apps/httpd-fs/vncviewer.jar b/contiki-msp430/apps/httpd-fs/vncviewer.jar
new file mode 100644
index 0000000..c1ebd81
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/vncviewer.jar
Binary files differ
diff --git a/contiki-msp430/apps/httpd-fsdata.c b/contiki-msp430/apps/httpd-fsdata.c
new file mode 100644
index 0000000..e883f56
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fsdata.c
@@ -0,0 +1,2203 @@
+static const unsigned char data_img_screenshot_png[] __attribute__ ((aligned (2))) = {
+	/* /img/screenshot.png */
+	0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x70, 0x6e, 0x67, 0,
+	0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 
+	0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 
+	0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69, 
+	0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31, 
+	0x20, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64, 
+	0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 
+	0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 
+	0x69, 0x6b, 0x69, 0x2f, 0x29, 0xd, 0xa, 0x43, 0x6f, 0x6e, 
+	0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 
+	0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67, 
+	0xd, 0xa, 0xd, 0xa, 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 
+	0x1a, 0xa, 00, 00, 00, 0xd, 0x49, 0x48, 0x44, 0x52, 
+	00, 00, 00, 0x8c, 00, 00, 00, 0x48, 0x8, 0x2, 
+	00, 00, 00, 0xab, 0xdb, 0x8a, 0xcb, 00, 00, 0x3, 
+	0x2f, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0xed, 0x9c, 0xd1, 
+	0x95, 0xdb, 0x20, 0x10, 0x45, 0x51, 0x4e, 0x4a, 0x49, 0x8a, 
+	0xa1, 0x80, 0x75, 0x17, 0xeb, 0x62, 0x5c, 0x86, 0xf2, 0x2f, 
+	0x8a, 0x71, 0x7a, 0xd1, 0x7e, 0x8c, 0x4c, 0xf0, 0x80, 0x6, 
+	0x18, 0x63, 0x69, 0xe7, 0xe4, 0xdd, 0xa3, 0xf, 0xaf, 0xc, 
+	0x32, 0xcc, 0xd5, 0x80, 0x8c, 0xa5, 0x9d, 0xd6, 0x75, 0x75, 
+	0xe0, 0x7b, 0xf3, 0xe3, 0xec, 0x6, 0x80, 0x3a, 0x90, 0x64, 
+	00, 0x48, 0x32, 00, 0x24, 0x19, 00, 0x92, 0xc, 00, 
+	0x49, 0x6, 0x80, 0x24, 0x3, 0x54, 0x25, 0x4d, 0x6c, 0xb, 
+	0x61, 0x8a, 0x84, 0x30, 0xe5, 0x5, 0x4c, 0x6c, 0xdf, 0xaf, 
+	0xb, 0x22, 0x6b, 0x5, 0xc7, 0x36, 0xe7, 0xdc, 0xb2, 0xfc, 
+	0x7b, 0x9d, 0x17, 0xd8, 0xdb, 0x96, 0xa5, 0x50, 0x3e, 0xdd, 
+	0x93, 0x1e, 0x79, 0xaf, 0xcc, 0xa8, 0x8d, 0x8e, 0x49, 0x4d, 
+	0x2a, 0x7e, 0xe8, 0x5e, 0xad, 0xbc, 0x70, 0xb1, 0x5f, 0xfd, 
+	0x5b, 0xc5, 0x41, 0xb7, 0xa4, 0x62, 0x2b, 0x9, 0xea, 0x3, 
+	0xbd, 0x60, 0x7b, 0x9e, 0xcf, 0x8c, 0x83, 0x64, 0xc8, 0x92, 
+	0xd2, 0x10, 0xe7, 0xbd, 0x28, 0xf6, 0x2b, 0x3f, 0xe, 0xeb, 
+	0x57, 0xb1, 0x16, 0xdb, 0x73, 0x82, 0x24, 0xd6, 0xab, 0xd8, 
+	0xac, 0xfc, 0x2c, 0x63, 0xad, 0x64, 0xc2, 0xf6, 0xaa, 0xbc, 
+	0x2f, 0x93, 0xd2, 0xd7, 0xf2, 0x1e, 0xa1, 0x85, 0xf9, 0xe8, 
+	0x92, 0x47, 0xa3, 0x21, 0xe7, 0xde, 0x2f, 0xa9, 0xda, 0xe1, 
+	0x62, 0xdd, 0xa2, 0xf, 0x26, 0x72, 0xd0, 0x60, 0x52, 0xcf, 
+	0xa4, 0xfc, 0x7c, 0x17, 0x72, 0x82, 0x25, 0x84, 0xdc, 0xdf, 
+	0x73, 0x24, 0xb1, 0x39, 0x49, 0x38, 0x77, 0x56, 0x71, 0xd6, 
+	0x61, 0x53, 0x42, 0x71, 0x9e, 0xe8, 0x9d, 0x36, 0xba, 0x24, 
+	0xa5, 0x7, 0x17, 0x3e, 0x85, 0xf5, 0x2b, 0x6f, 0x52, 0x35, 
+	0x93, 0x8e, 0x1e, 0xee, 0x7a, 0xc7, 0x6e, 0x21, 0xe2, 0x6c, 
+	0x8a, 0x62, 0x7, 0x64, 0x27, 0xef, 0x70, 0x49, 0x2c, 0x6a, 
+	0x69, 0x2f, 0x58, 0x99, 0x5c, 0xa4, 0x70, 0x26, 0xb5, 0xcc, 
+	0x64, 0xbd, 0x92, 0xa6, 0x75, 0xcd, 0xa6, 0xbf, 0x27, 0x6a, 
+	0x57, 0x87, 0xa0, 0xc6, 0x34, 0xb9, 0x65, 0x71, 0xde, 0xcb, 
+	0xa5, 0x24, 0xb, 0x15, 0x49, 0xbf, 0xa7, 0xcb, 0xd9, 0x7d, 
+	0xfc, 0x2f, 0xb8, 0xaf, 0xb3, 0xf0, 0x2e, 0x56, 0x1c, 0xc, 
+	00, 0x49, 0x6, 0x80, 0x24, 0x3, 0x40, 0x92, 0x1, 0x20, 
+	0xc9, 00, 0x90, 0x64, 00, 0x48, 0x32, 0xc0, 0xcf, 0xb3, 
+	0x1b, 0x60, 0x8a, 0x5f, 0x7f, 0xc6, 0x1c, 0xe7, 0xef, 0x47, 
+	0x57, 0x71, 0x48, 0xea, 0xc3, 0xfb, 0xf9, 0xc5, 0x23, 0x84, 
+	0xd0, 0xbd, 0x3e, 00, 0x49, 0xdd, 0xa4, 0x51, 0x26, 0x67, 
+	0x7b, 0x71, 0xcf, 0xdf, 0xd5, 0x39, 0x86, 0x24, 0x25, 0x4c, 
+	0x40, 0x1e, 0xfd, 0x10, 0x2e, 0xf4, 0xae, 0x2c, 0xb2, 0x5, 
+	0x48, 0xd2, 0x90, 0xc7, 0x5d, 0x70, 0x10, 0xc2, 0xc5, 0xfb, 
+	0xd9, 0xfb, 0x59, 0xed, 0x9, 0x92, 0x94, 0xa4, 0x59, 0x52, 
+	0x2d, 0x49, 0x9e, 0xd4, 0x9f, 0x5, 0x49, 0xdd, 0xa4, 0x39, 
+	0xd1, 0x9e, 0x1c, 0xaf, 0x78, 0x82, 0x24, 0x25, 0xbd, 0x11, 
+	0xc7, 0x9c, 0x74, 0x28, 0x14, 0x6e, 0x45, 0xd0, 0xd5, 0xc9, 
+	0x4, 0x49, 0x1a, 0x74, 0xb1, 0xc6, 0x85, 0xc3, 0xa1, 0xbc, 
+	0x32, 0x76, 0x29, 0x80, 0x24, 0xd, 0xed, 0x99, 0x34, 0x44, 
+	0x27, 0x24, 0x69, 0xe8, 0xa, 0xfd, 0xeb, 0x2b, 0x49, 0x90, 
+	0xa4, 0xa1, 0x1a, 0xf7, 0xf6, 0x6f, 0x51, 0x2d, 0x40, 0x92, 
+	0x86, 0x96, 0x4c, 0x1a, 0x65, 0xc8, 0x41, 0x92, 0x9a, 0x3d, 
+	0x7, 0x63, 0x73, 0x88, 0x80, 0xa4, 0x6e, 0x68, 0xc5, 0x41, 
+	0x48, 0xa6, 0xd4, 0x90, 0xb0, 0x2, 0xdb, 0xe, 0x24, 0xe9, 
+	0x29, 0xae, 0x7c, 0xef, 0xfd, 0x89, 0x65, 0xa1, 0x43, 0xa1, 
+	0x70, 0xef, 0x25, 0xd3, 0xd8, 0x81, 0x8e, 0x80, 0x24, 0x25, 
+	0x71, 0x99, 0xb5, 0x38, 0xb8, 0x8d, 0x5, 0x37, 0xa2, 0x68, 
+	0x60, 0xbf, 0xe6, 0xc5, 0x8d, 0x15, 0x4b, 0xfd, 0x61, 0x4e, 
+	0x3a, 0x81, 0xc6, 0x5f, 0x5d, 0x87, 0x8c, 0x7e, 0x90, 0xd4, 
+	0x4d, 0x1e, 0xf7, 0x77, 0xcc, 0x43, 0x29, 0x90, 0xd4, 0xc7, 
+	0xc1, 0x4b, 0xab, 0x4, 0x24, 0x6d, 0xf8, 0xcf, 0x8f, 0xf8, 
+	0x9c, 0x57, 0x8, 0x6f, 0x96, 0xd1, 0x79, 0xff, 0x1e, 0x2e, 
+	0x1c, 0x36, 0xbc, 0x77, 0x21, 0xb8, 0xeb, 0xf5, 0x12, 0x42, 
+	0xf5, 0xa9, 0xbc, 0xa3, 0x41, 0x26, 0x71, 0x42, 0xb8, 0x84, 
+	0xe0, 0x9c, 0x73, 0xde, 0xcf, 0x2c, 0xb7, 0x6e, 0xb7, 0x39, 
+	0x2a, 0xa4, 0x3d, 0x79, 0x19, 0x5d, 0x2d, 0xb9, 0x49, 0x90, 
+	0xb4, 0x41, 0x71, 0x7c, 0x5c, 0xad, 0x51, 0x28, 0xdd, 0xf5, 
+	0xba, 0x85, 0x8f, 0x2, 0xed, 0x9c, 0xa3, 0x9d, 0x14, 0x65, 
+	0xaa, 0x12, 0xcb, 0x10, 0xb4, 0x3f, 0x9a, 0x68, 0xac, 0x25, 
+	0x3, 0x49, 0x1b, 0x2c, 0x81, 0xe8, 0xf5, 0xed, 0x36, 0x3f, 
+	0xde, 0xdd, 0x8a, 0x51, 0x70, 0xe3, 0x1a, 0x4f, 0x8, 0x4f, 
+	0x65, 0xd2, 0xdb, 0x1f, 0xd2, 0x75, 0xa0, 0x58, 0x8b, 0x8e, 
+	0x53, 0xac, 0x25, 00, 0x49, 0x1b, 0x94, 0x2b, 0xd9, 0xe2, 
+	0x5b, 0x25, 0x82, 0x45, 0xb5, 0xb4, 0x18, 0x21, 0x5c, 0x97, 
+	0x17, 0x6b, 0x9, 0x40, 0xd2, 0x6, 0x1b, 0xee, 0xd8, 0x9e, 
+	0xe2, 0xe8, 0x94, 0x4e, 0x2d, 0xc5, 0x5a, 0x31, 0xfa, 0xec, 
+	0xf6, 0xd5, 0x98, 0x46, 0x69, 0x19, 0x1, 0xfc, 0x8b, 0x80, 
+	0x7, 0xa3, 0x1e, 0x6b, 0x51, 0x71, 0xbf, 0x4b, 0x16, 0x90, 
+	0x49, 0xf, 0x3a, 0x9f, 0x19, 0x3a, 0x12, 0x7c, 0x4f, 0x32, 
+	00, 0x24, 0x19, 00, 0x92, 0xc, 00, 0x49, 0x6, 0x80, 
+	0x24, 0x3, 0x40, 0x92, 0x1, 0x20, 0xc9, 00, 0xd5, 0x7f, 
+	0x4a, 0x8, 0xce, 0x7, 0x99, 0x64, 00, 0x48, 0x32, 00, 
+	0x24, 0x19, 00, 0x92, 0xc, 00, 0x49, 0x6, 0x80, 0x24, 
+	0x3, 0x40, 0x92, 0x1, 0xbe, 00, 0x25, 0xf7, 0xec, 0x34, 
+	0x6f, 0xda, 0x21, 0x5b, 00, 00, 00, 0x11, 0x74, 0x45, 
+	0x58, 0x74, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 00, 
+	0x56, 0x4e, 0x43, 0x3a, 0x20, 0x75, 0x56, 0x4e, 0x43, 0xe7, 
+	0x8d, 0x67, 0x90, 00, 00, 00, 00, 0x49, 0x45, 0x4e, 
+	0x44, 0xae, 0x42, 0x60, 0x82, };
+
+static const unsigned char data_cgi_sensors[] __attribute__ ((aligned (2))) = {
+	/* /cgi/sensors */
+	0x2f, 0x63, 0x67, 0x69, 0x2f, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0,
+0,
+	0x69, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 
+	0x68, 0x74, 0x6d, 0x6c, 0xa, 0x23, 0x20, 0xa, 0x74, 0x20, 
+	0x3c, 0x68, 0x31, 0x3e, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 
+	0x73, 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 
+	0x20, 0x3c, 0x75, 0x6c, 0x3e, 0xa, 0x63, 0x20, 0x61, 0xa, 
+	0x74, 0x20, 0x3c, 0x2f, 0x75, 0x6c, 0x3e, 0xa, 0x69, 0x20, 
+	0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x6c, 
+	0x61, 0x69, 0x6e, 0xa, 0x2e, };
+
+static const unsigned char data_cgi_processes[] __attribute__ ((aligned (2))) = {
+	/* /cgi/processes */
+	0x2f, 0x63, 0x67, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0,
+0,
+	0x69, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 
+	0x68, 0x74, 0x6d, 0x6c, 0xa, 0x23, 0x20, 0xa, 0x74, 0x20, 
+	0x3c, 0x68, 0x31, 0x3e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 
+	0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 
+	0x3c, 0x2f, 0x68, 0x31, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 
+	0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 
+	0x68, 0x3d, 0x22, 0x31, 0x30, 0x30, 0x25, 0x22, 0x3e, 0xa, 
+	0x74, 0x20, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 
+	0x49, 0x44, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 
+	0x3e, 0x4e, 0x61, 0x6d, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 
+	0x3c, 0x74, 0x68, 0x3e, 0x49, 0x64, 0x6c, 0x65, 0x20, 0x68, 
+	0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 
+	0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x53, 0x69, 0x67, 0x6e, 0x61, 
+	0x6c, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x3c, 
+	0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x43, 
+	0x50, 0x2f, 0x49, 0x50, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 
+	0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x20, 0x3c, 0x2f, 
+	0x74, 0x72, 0x3e, 0xa, 0x63, 0x20, 0x63, 0xa, 0x74, 0x20, 
+	0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xa, 0x69, 
+	0x20, 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x70, 
+	0x6c, 0x61, 0x69, 0x6e, 0xa, 0x2e, };
+
+static const unsigned char data_cgi_tcp[] __attribute__ ((aligned (2))) = {
+	/* /cgi/tcp */
+	0x2f, 0x63, 0x67, 0x69, 0x2f, 0x74, 0x63, 0x70, 0,
+0,
+	0x69, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 
+	0x68, 0x74, 0x6d, 0x6c, 0xa, 0x23, 0x20, 0xa, 0x74, 0x20, 
+	0x3c, 0x68, 0x31, 0x3e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 
+	0x74, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 
+	0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0x3c, 0x62, 
+	0x72, 0x3e, 0x20, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 
+	0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x31, 0x30, 0x30, 
+	0x25, 0x22, 0x3e, 0xa, 0x74, 0x20, 0x3c, 0x74, 0x72, 0x3e, 
+	0x3c, 0x74, 0x68, 0x3e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 
+	0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 
+	0x6d, 0x6f, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 
+	0x74, 0x68, 0x3e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 
+	0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 
+	0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 
+	0x6e, 0x73, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 
+	0x3e, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 
+	0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 
+	0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x20, 0x3c, 0x2f, 0x74, 0x72, 
+	0x3e, 0xa, 0x63, 0x20, 0x62, 0xa, 0x74, 0x20, 0x3c, 0x2f, 
+	0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xa, 0x69, 0x20, 0x2f, 
+	0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x6c, 0x61, 
+	0x69, 0x6e, 0xa, 0x2e, };
+
+static const unsigned char data_header_html[] __attribute__ ((aligned (2))) = {
+	/* /header.html */
+	0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
+0,
+	0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 
+	0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 
+	0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69, 
+	0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31, 
+	0x20, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64, 
+	0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 
+	0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 
+	0x69, 0x6b, 0x69, 0x2f, 0x29, 0xd, 0xa, 0x43, 0x6f, 0x6e, 
+	0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 
+	0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 
+	0xd, 0xa, 0xd, 0xa, 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 
+	0x59, 0x50, 0x45, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 
+	0x55, 0x42, 0x4c, 0x49, 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 
+	0x57, 0x33, 0x43, 0x2f, 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 
+	0x54, 0x4d, 0x4c, 0x20, 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 
+	0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 
+	0x6c, 0x2f, 0x2f, 0x45, 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 
+	0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 
+	0x33, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 
+	0x74, 0x6d, 0x6c, 0x34, 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 
+	0x2e, 0x64, 0x74, 0x64, 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 
+	0x6d, 0x6c, 0x3e, 0xa, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 
+	0xa, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x43, 0x6f, 
+	0x6e, 0x74, 0x69, 0x6b, 0x69, 0x20, 0x2f, 0x20, 0x75, 0x49, 
+	0x50, 0x20, 0x6f, 0x6e, 0x20, 0x4d, 0x53, 0x50, 0x34, 0x33, 
+	0x30, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x2d, 0x73, 0x65, 0x72, 
+	0x76, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 
+	0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 
+	0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 
+	0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x65, 0x30, 0x65, 0x30, 
+	0x65, 0x30, 0x22, 0x20, 0x74, 0x65, 0x78, 0x74, 0x3d, 0x22, 
+	0x62, 0x6c, 0x61, 0x63, 0x6b, 0x22, 0x3e, 0xa, 0x3c, 0x74, 
+	0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 
+	0x3d, 0x22, 0x31, 0x30, 0x30, 0x25, 0x22, 0x20, 0x63, 0x65, 
+	0x6c, 0x6c, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x3d, 
+	0x30, 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x70, 0x61, 0x64, 0x64, 
+	0x69, 0x6e, 0x67, 0x3d, 0x30, 0x20, 0x62, 0x6f, 0x72, 0x64, 
+	0x65, 0x72, 0x3d, 0x30, 0x3e, 0x3c, 0x74, 0x72, 0x20, 0x76, 
+	0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x74, 0x6f, 0x70, 
+	0x22, 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x20, 0x77, 0x69, 0x64, 
+	0x74, 0x68, 0x3d, 0x22, 0x32, 0x35, 0x25, 0x22, 0x20, 0x76, 
+	0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x74, 0x6f, 0x70, 
+	0x22, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x61, 
+	0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 
+	0x46, 0x72, 0x6f, 0x6e, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 
+	0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 
+	0x62, 0x72, 0x3e, 0x9, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 
+	0x20, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 
+	0x22, 0x2f, 0x76, 0x6e, 0x63, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 
+	0x22, 0x3e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x20, 
+	0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x3c, 0x2f, 0x61, 
+	0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 
+	0x9, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xa, 0x3c, 
+	0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63, 
+	0x67, 0x69, 0x2f, 0x74, 0x63, 0x70, 0x22, 0x3e, 0x4e, 0x65, 
+	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 
+	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 
+	0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 
+	0x9, 0x9, 0x9, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 
+	0x66, 0x3d, 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x70, 0x72, 
+	0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x3e, 0x50, 
+	0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 
+	0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 
+	0x3e, 0x9, 0x9, 0x9, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 
+	0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x73, 
+	0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x22, 0x3e, 0x53, 0x65, 
+	0x6e, 0x73, 0x6f, 0x72, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 
+	0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x9, 0x9, 
+	0x9, 0xa, 0x3c, 0x74, 0x64, 0x20, 0x63, 0x6c, 0x61, 0x73, 
+	0x73, 0x3d, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 
+	0x22, 0x3e, 0xa, };
+
+static const unsigned char data_404_html[] __attribute__ ((aligned (2))) = {
+	/* /404.html */
+	0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
+	0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34, 
+	0x30, 0x34, 0x20, 0x46, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 
+	0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53, 
+	0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 
+	0x74, 0x69, 0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 
+	0x2e, 0x31, 0x20, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 
+	0x2f, 0x64, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 
+	0x6f, 0x6d, 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 
+	0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2f, 0x29, 0xd, 0xa, 0x43, 
+	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 
+	0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 
+	0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 
+	0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x62, 0x6f, 0x64, 0x79, 
+	0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 
+	0x77, 0x68, 0x69, 0x74, 0x65, 0x22, 0x3e, 0xa, 0x20, 0x20, 
+	0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 
+	0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 
+	0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 
+	0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 
+	0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0xa, 0x20, 0x20, 0x20, 
+	0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 
+	0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 
+	0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 
+	0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 
+	0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 
+	0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 
+	0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 
+	0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, };
+
+static const unsigned char data_index_html[] __attribute__ ((aligned (2))) = {
+	/* /index.html */
+	0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
+	0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 
+	0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 
+	0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69, 
+	0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31, 
+	0x20, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64, 
+	0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 
+	0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 
+	0x69, 0x6b, 0x69, 0x2f, 0x29, 0xd, 0xa, 0x43, 0x6f, 0x6e, 
+	0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 
+	0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 
+	0xd, 0xa, 0xd, 0xa, 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 
+	0x59, 0x50, 0x45, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 
+	0x55, 0x42, 0x4c, 0x49, 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 
+	0x57, 0x33, 0x43, 0x2f, 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 
+	0x54, 0x4d, 0x4c, 0x20, 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 
+	0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 
+	0x6c, 0x2f, 0x2f, 0x45, 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 
+	0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 
+	0x33, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 
+	0x74, 0x6d, 0x6c, 0x34, 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 
+	0x2e, 0x64, 0x74, 0x64, 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 
+	0x6d, 0x6c, 0x3e, 0xa, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 
+	0xa, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x43, 0x6f, 
+	0x6e, 0x74, 0x69, 0x6b, 0x69, 0x20, 0x2f, 0x20, 0x75, 0x49, 
+	0x50, 0x20, 0x6f, 0x6e, 0x20, 0x4d, 0x53, 0x50, 0x34, 0x33, 
+	0x30, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x2d, 0x73, 0x65, 0x72, 
+	0x76, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 
+	0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 
+	0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 
+	0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x65, 0x30, 0x65, 0x30, 
+	0x65, 0x30, 0x22, 0x20, 0x74, 0x65, 0x78, 0x74, 0x3d, 0x22, 
+	0x62, 0x6c, 0x61, 0x63, 0x6b, 0x22, 0x3e, 0xa, 0x3c, 0x74, 
+	0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 
+	0x3d, 0x22, 0x31, 0x30, 0x30, 0x25, 0x22, 0x20, 0x63, 0x65, 
+	0x6c, 0x6c, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x3d, 
+	0x30, 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x70, 0x61, 0x64, 0x64, 
+	0x69, 0x6e, 0x67, 0x3d, 0x30, 0x20, 0x62, 0x6f, 0x72, 0x64, 
+	0x65, 0x72, 0x3d, 0x30, 0x3e, 0x3c, 0x74, 0x72, 0x20, 0x76, 
+	0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x74, 0x6f, 0x70, 
+	0x22, 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x20, 0x77, 0x69, 0x64, 
+	0x74, 0x68, 0x3d, 0x22, 0x32, 0x35, 0x25, 0x22, 0x20, 0x76, 
+	0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x74, 0x6f, 0x70, 
+	0x22, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x61, 
+	0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 
+	0x46, 0x72, 0x6f, 0x6e, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 
+	0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 
+	0x62, 0x72, 0x3e, 0x9, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 
+	0x20, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 
+	0x22, 0x2f, 0x76, 0x6e, 0x63, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 
+	0x22, 0x3e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x20, 
+	0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x3c, 0x2f, 0x61, 
+	0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 
+	0x9, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xa, 0x3c, 
+	0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63, 
+	0x67, 0x69, 0x2f, 0x74, 0x63, 0x70, 0x22, 0x3e, 0x4e, 0x65, 
+	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 
+	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 
+	0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 
+	0x9, 0x9, 0x9, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 
+	0x66, 0x3d, 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x70, 0x72, 
+	0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x3e, 0x50, 
+	0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 
+	0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 
+	0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 
+	0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x73, 0x65, 0x6e, 0x73, 
+	0x6f, 0x72, 0x73, 0x22, 0x3e, 0x53, 0x65, 0x6e, 0x73, 0x6f, 
+	0x72, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 
+	0xa, 0x3c, 0x62, 0x72, 0x3e, 0x9, 0x9, 0x9, 0x20, 0x20, 
+	0x20, 0x20, 0xa, 0x3c, 0x74, 0x64, 0x20, 0x63, 0x6c, 0x61, 
+	0x73, 0x73, 0x3d, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 
+	0x74, 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x31, 0x3e, 0x3c, 0x61, 
+	0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 
+	0x70, 0x3a, 0x2f, 0x2f, 0x64, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 
+	0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x64, 0x61, 0x6d, 
+	0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2f, 0x22, 
+	0x3e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x3c, 0x2f, 
+	0x61, 0x3e, 0x20, 0x2f, 0x20, 0x3c, 0x61, 0xa, 0x68, 0x72, 
+	0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 
+	0x2f, 0x64, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 
+	0x6f, 0x6d, 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 
+	0x70, 0x2f, 0x22, 0x3e, 0x75, 0x49, 0x50, 0x3c, 0x2f, 0x61, 
+	0x3e, 0x20, 0x6f, 0x6e, 0x20, 0x4d, 0x53, 0x50, 0x34, 0x33, 
+	0x30, 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0xa, 0x3c, 0x70, 0x3e, 
+	0xa, 0x54, 0x68, 0x65, 0x20, 0x77, 0x65, 0x62, 0x20, 0x70, 
+	0x61, 0x67, 0x65, 0x73, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x61, 
+	0x72, 0x65, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 
+	0x67, 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 
+	0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x3c, 0x61, 
+	0xa, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 
+	0x70, 0x3a, 0x2f, 0x2f, 0x64, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 
+	0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x64, 0x61, 0x6d, 
+	0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2f, 0x61, 
+	0x70, 0x70, 0x73, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 
+	0x76, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 
+	0x77, 0x65, 0x62, 0xa, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 
+	0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 
+	0x6e, 0x67, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x74, 
+	0x68, 0x65, 0x20, 0x3c, 0x61, 0xa, 0x68, 0x72, 0x65, 0x66, 
+	0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64, 
+	0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 
+	0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 
+	0x69, 0x6b, 0x69, 0x2f, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x74, 
+	0x69, 0x6b, 0x69, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 
+	0x69, 0x6e, 0x67, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 
+	0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x6f, 0x6e, 0x20, 0x61, 0x20, 
+	0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x20, 0x3c, 0x61, 0xa, 0x68, 
+	0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 
+	0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x69, 0x6e, 0x66, 0x2e, 
+	0x66, 0x75, 0x2d, 0x62, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x2e, 
+	0x64, 0x65, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x2f, 0x61, 0x67, 
+	0x2d, 0x74, 0x65, 0x63, 0x68, 0x2f, 0x65, 0x73, 0x62, 0x2f, 
+	0x65, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x2f, 0x22, 0x3e, 
+	0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0xa, 0x62, 0x6f, 0x61, 
+	0x72, 0x64, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x64, 0x65, 0x76, 
+	0x65, 0x6c, 0x6f, 0x70, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 
+	0x3c, 0x61, 0xa, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 
+	0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 
+	0x69, 0x6e, 0x66, 0x2e, 0x66, 0x75, 0x2d, 0x62, 0x65, 0x72, 
+	0x6c, 0x69, 0x6e, 0x2e, 0x64, 0x65, 0x2f, 0x69, 0x6e, 0x73, 
+	0x74, 0x2f, 0x61, 0x67, 0x2d, 0x74, 0x65, 0x63, 0x68, 0x2f, 
+	0x22, 0x3e, 0x74, 0x68, 0x65, 0x20, 0x43, 0x53, 0x54, 0x20, 
+	0x67, 0x72, 0x6f, 0x75, 0x70, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 
+	0x61, 0x74, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 
+	0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 
+	0x77, 0x77, 0x2e, 0x66, 0x75, 0x2d, 0x62, 0x65, 0x72, 0x6c, 
+	0x69, 0x6e, 0x2e, 0x64, 0x65, 0x22, 0x3e, 0x46, 0x55, 0x20, 
+	0x42, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x3c, 0x2f, 0x61, 0x3e, 
+	0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x6e, 0x73, 
+	0x6f, 0x72, 0x20, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x20, 0x69, 
+	0x73, 0xa, 0x65, 0x71, 0x75, 0x69, 0x70, 0x70, 0x65, 0x64, 
+	0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x54, 0x49, 
+	0x20, 0x4d, 0x53, 0x50, 0x34, 0x33, 0x30, 0x20, 0x6d, 0x69, 
+	0x63, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 
+	0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x32, 0x30, 
+	0x34, 0x38, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x6f, 
+	0x66, 0x20, 0x52, 0x41, 0x4d, 0x20, 0x61, 0x6e, 0x64, 0x20, 
+	0x36, 0x30, 0xa, 0x6b, 0x69, 0x6c, 0x6f, 0x62, 0x79, 0x74, 
+	0x65, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x6c, 0x61, 0x73, 
+	0x68, 0x20, 0x52, 0x4f, 0x4d, 0x2c, 0x20, 0x61, 0x73, 0x20, 
+	0x77, 0x65, 0x6c, 0x6c, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 
+	0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 
+	0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x2e, 0x20, 0x54, 
+	0x68, 0x65, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 
+	0xa, 0x63, 0x61, 0x6e, 0x20, 0x6d, 0x65, 0x61, 0x73, 0x75, 
+	0x72, 0x65, 0x20, 0x76, 0x69, 0x62, 0x72, 0x61, 0x74, 0x69, 
+	0x6f, 0x6e, 0x2c, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72, 
+	0x61, 0x74, 0x75, 0x72, 0x65, 0x2c, 0x20, 0x49, 0x52, 0x2d, 
+	0x6c, 0x69, 0x67, 0x68, 0x74, 0x2c, 0x20, 0x73, 0x6f, 0x75, 
+	0x6e, 0x64, 0x2c, 0x20, 0x74, 0x69, 0x6c, 0x74, 0x20, 0x61, 
+	0x6e, 0x64, 0x20, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 
+	0xa, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0xa, 0x3c, 0x68, 0x32, 
+	0x3e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 
+	0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 
+	0x74, 0x79, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0x9, 0x9, 0x9, 
+	0x20, 0x20, 0x20, 0x20, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x54, 
+	0x68, 0x65, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x20, 
+	0x62, 0x6f, 0x61, 0x72, 0x64, 0x20, 0x69, 0x73, 0x20, 0x64, 
+	0x69, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x20, 0x63, 0x6f, 
+	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 
+	0x20, 0x74, 0x68, 0x65, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 
+	0x6e, 0x65, 0x74, 0x20, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 
+	0x68, 0x20, 0x74, 0x68, 0x65, 0xa, 0x52, 0x53, 0x32, 0x33, 
+	0x32, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 
+	0x65, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 
+	0x6f, 0x61, 0x72, 0x64, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 
+	0x69, 0x73, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 
+	0x20, 0x74, 0x68, 0x65, 0x20, 0x3c, 0x61, 0xa, 0x68, 0x72, 
+	0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 
+	0x2f, 0x64, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 
+	0x6f, 0x6d, 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x75, 0x69, 
+	0x70, 0x2f, 0x22, 0x3e, 0x75, 0x49, 0x50, 0x20, 0x54, 0x43, 
+	0x50, 0x2f, 0x49, 0x50, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6b, 
+	0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x6f, 0x6e, 0x20, 0x77, 0x68, 
+	0x69, 0x63, 0x68, 0xa, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 
+	0x69, 0x20, 0x69, 0x73, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 
+	0x2e, 0xa, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x9, 0x9, 0x9, 
+	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xa, 0x3c, 0x68, 0x32, 
+	0x3e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x64, 
+	0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x3c, 0x2f, 0x68, 0x32, 
+	0x3e, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x49, 0x6e, 0x20, 0x61, 
+	0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 
+	0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x74, 
+	0x68, 0x69, 0x73, 0x20, 0x77, 0x65, 0x62, 0x20, 0x73, 0x65, 
+	0x72, 0x76, 0x65, 0x72, 0x2c, 0x20, 0x74, 0x68, 0x69, 0x73, 
+	0x20, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x65, 0x6e, 
+	0x73, 0x6f, 0x72, 0x20, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x20, 
+	0x61, 0x6c, 0x73, 0x6f, 0xa, 0x68, 0x61, 0x73, 0x20, 0x61, 
+	0x20, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x43, 
+	0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x20, 0x64, 0x65, 0x73, 
+	0x6b, 0x74, 0x6f, 0x70, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
+	0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x6d, 
+	0x6f, 0x74, 0x65, 0x6c, 0x79, 0x20, 0x61, 0x63, 0x63, 0x65, 
+	0x73, 0x73, 0x65, 0x64, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 
+	0x20, 0x56, 0x4e, 0x43, 0x2c, 0xa, 0x64, 0x69, 0x72, 0x65, 
+	0x63, 0x74, 0x6c, 0x79, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 
+	0x79, 0x6f, 0x75, 0x72, 0x20, 0x77, 0x65, 0x62, 0x20, 0x62, 
+	0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x2e, 0x20, 0x42, 0x65, 
+	0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 
+	0x68, 0x65, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x20, 
+	0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 
+	0x73, 0x20, 0x6f, 0x66, 0xa, 0x74, 0x68, 0x65, 0x20, 0x73, 
+	0x79, 0x73, 0x74, 0x65, 0x6d, 0x2c, 0x20, 0x74, 0x68, 0x65, 
+	0x20, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x64, 
+	0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x20, 0x69, 0x73, 0x20, 
+	0x76, 0x65, 0x72, 0x79, 0x20, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 
+	0x20, 0x28, 0x31, 0x32, 0x30, 0x78, 0x35, 0x36, 0x20, 0x70, 
+	0x69, 0x78, 0x65, 0x6c, 0x73, 0x29, 0x2e, 0x20, 0x53, 0x65, 
+	0x65, 0x20, 0x74, 0x68, 0x65, 0xa, 0x3c, 0x61, 0x20, 0x68, 
+	0x72, 0x65, 0x66, 0x3d, 0x22, 0x76, 0x6e, 0x63, 0x2e, 0x68, 
+	0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x76, 0x69, 0x72, 0x74, 0x75, 
+	0x61, 0x6c, 0x20, 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 
+	0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x70, 0x61, 0x67, 0x65, 0x2e, 
+	0xa, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x3c, 0x63, 0x65, 0x6e, 
+	0x74, 0x65, 0x72, 0x3e, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73, 
+	0x72, 0x63, 0x3d, 0x22, 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x73, 
+	0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x2e, 
+	0x70, 0x6e, 0x67, 0x22, 0x3e, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 
+	0x74, 0x65, 0x72, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4d, 
+	0x65, 0x6d, 0x6f, 0x72, 0x79, 0x20, 0x75, 0x73, 0x61, 0x67, 
+	0x65, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x3c, 0x70, 0x3e, 
+	0xa, 0x54, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x74, 0x69, 0x72, 
+	0x65, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x20, 
+	0x4d, 0x53, 0x50, 0x34, 0x33, 0x30, 0x20, 0x73, 0x79, 0x73, 
+	0x74, 0x65, 0x6d, 0x20, 0x75, 0x73, 0x65, 0x73, 0x20, 0x6f, 
+	0x6e, 0x6c, 0x79, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 
+	0x31, 0x38, 0x30, 0x30, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 
+	0x20, 0x52, 0x41, 0x4d, 0x2c, 0x20, 0x6f, 0x66, 0xa, 0x77, 
+	0x68, 0x69, 0x63, 0x68, 0x20, 0x32, 0x38, 0x30, 0x20, 0x62, 
+	0x79, 0x74, 0x65, 0x73, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 
+	0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 
+	0x20, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x73, 
+	0x63, 0x72, 0x65, 0x65, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 
+	0x33, 0x30, 0x30, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 
+	0x66, 0x6f, 0x72, 0xa, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 
+	0x6b, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x2e, 
+	0x20, 0x41, 0x6c, 0x6c, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, 
+	0x61, 0x6e, 0x64, 0x20, 0x77, 0x65, 0x62, 0x20, 0x70, 0x61, 
+	0x67, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x74, 
+	0x6f, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 
+	0x65, 0xa, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x63, 0x6f, 0x6e, 
+	0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x27, 0x73, 0x20, 
+	0x6f, 0x6e, 0x2d, 0x63, 0x68, 0x69, 0x70, 0x20, 0x66, 0x6c, 
+	0x61, 0x73, 0x68, 0x20, 0x52, 0x4f, 0x4d, 0x2e, 0xa, 0x3c, 
+	0x2f, 0x70, 0x3e, 0xa, 0x3c, 0x70, 0x20, 0x61, 0x6c, 0x69, 
+	0x67, 0x6e, 0x3d, 0x22, 0x72, 0x69, 0x67, 0x68, 0x74, 0x22, 
+	0x3e, 0xa, 0x2f, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 
+	0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 
+	0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 
+	0x2f, 0x25, 0x37, 0x65, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x22, 
+	0x3e, 0x41, 0x64, 0x61, 0x6d, 0x20, 0x44, 0x75, 0x6e, 0x6b, 
+	0x65, 0x6c, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x2f, 
+	0x70, 0x3e, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 
+	0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, 0x2f, 0x74, 0x61, 0x62, 
+	0x6c, 0x65, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0xa, 0x3c, 
+	0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 
+	0x74, 0x6d, 0x6c, 0x3e, };
+
+static const unsigned char data_vnc_html[] __attribute__ ((aligned (2))) = {
+	/* /vnc.html */
+	0x2f, 0x76, 0x6e, 0x63, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
+	0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 
+	0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 
+	0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69, 
+	0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31, 
+	0x20, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64, 
+	0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 
+	0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 
+	0x69, 0x6b, 0x69, 0x2f, 0x29, 0xd, 0xa, 0x43, 0x6f, 0x6e, 
+	0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 
+	0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 
+	0xd, 0xa, 0xd, 0xa, 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 
+	0x59, 0x50, 0x45, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 
+	0x55, 0x42, 0x4c, 0x49, 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 
+	0x57, 0x33, 0x43, 0x2f, 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 
+	0x54, 0x4d, 0x4c, 0x20, 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 
+	0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 
+	0x6c, 0x2f, 0x2f, 0x45, 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 
+	0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 
+	0x33, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 
+	0x74, 0x6d, 0x6c, 0x34, 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 
+	0x2e, 0x64, 0x74, 0x64, 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 
+	0x6d, 0x6c, 0x3e, 0xa, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 
+	0xa, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x43, 0x6f, 
+	0x6e, 0x74, 0x69, 0x6b, 0x69, 0x20, 0x2f, 0x20, 0x75, 0x49, 
+	0x50, 0x20, 0x6f, 0x6e, 0x20, 0x4d, 0x53, 0x50, 0x34, 0x33, 
+	0x30, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x2d, 0x73, 0x65, 0x72, 
+	0x76, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 
+	0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 
+	0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 
+	0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x65, 0x30, 0x65, 0x30, 
+	0x65, 0x30, 0x22, 0x20, 0x74, 0x65, 0x78, 0x74, 0x3d, 0x22, 
+	0x62, 0x6c, 0x61, 0x63, 0x6b, 0x22, 0x3e, 0xa, 0x3c, 0x74, 
+	0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 
+	0x3d, 0x22, 0x31, 0x30, 0x30, 0x25, 0x22, 0x20, 0x63, 0x65, 
+	0x6c, 0x6c, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x3d, 
+	0x30, 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x70, 0x61, 0x64, 0x64, 
+	0x69, 0x6e, 0x67, 0x3d, 0x30, 0x20, 0x62, 0x6f, 0x72, 0x64, 
+	0x65, 0x72, 0x3d, 0x30, 0x3e, 0x3c, 0x74, 0x72, 0x20, 0x76, 
+	0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x74, 0x6f, 0x70, 
+	0x22, 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x20, 0x77, 0x69, 0x64, 
+	0x74, 0x68, 0x3d, 0x22, 0x32, 0x35, 0x25, 0x22, 0x20, 0x76, 
+	0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x74, 0x6f, 0x70, 
+	0x22, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x61, 
+	0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 
+	0x46, 0x72, 0x6f, 0x6e, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 
+	0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 
+	0x62, 0x72, 0x3e, 0x9, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 
+	0x20, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 
+	0x22, 0x2f, 0x76, 0x6e, 0x63, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 
+	0x22, 0x3e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x20, 
+	0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x3c, 0x2f, 0x61, 
+	0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 
+	0x9, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xa, 0x3c, 
+	0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63, 
+	0x67, 0x69, 0x2f, 0x74, 0x63, 0x70, 0x22, 0x3e, 0x4e, 0x65, 
+	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 
+	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 
+	0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 
+	0x9, 0x9, 0x9, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 
+	0x66, 0x3d, 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x70, 0x72, 
+	0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x3e, 0x50, 
+	0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 
+	0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 
+	0x3e, 0x9, 0x9, 0x9, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 
+	0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x73, 
+	0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x22, 0x3e, 0x53, 0x65, 
+	0x6e, 0x73, 0x6f, 0x72, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 
+	0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x9, 0x9, 
+	0x9, 0xa, 0x3c, 0x74, 0x64, 0x20, 0x63, 0x6c, 0x61, 0x73, 
+	0x73, 0x3d, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 
+	0x22, 0x3e, 0xa, 0x3c, 0x68, 0x31, 0x3e, 0x56, 0x69, 0x72, 
+	0x74, 0x75, 0x61, 0x6c, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69, 
+	0x6b, 0x69, 0x20, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 
+	0x3c, 0x2f, 0x68, 0x31, 0x3e, 0x9, 0x9, 0x9, 0x20, 0x20, 
+	0x20, 0x20, 0x20, 0x20, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 
+	0x54, 0x68, 0x69, 0x73, 0x20, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 
+	0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x20, 0x62, 0x6f, 
+	0x61, 0x72, 0x64, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6e, 0x6f, 
+	0x20, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x20, 0x6f, 
+	0x72, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x6b, 0x69, 
+	0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x64, 0x69, 0x73, 0x70, 
+	0x6c, 0x61, 0x79, 0x2c, 0x20, 0x62, 0x75, 0x74, 0xa, 0x69, 
+	0x74, 0x20, 0x73, 0x74, 0x69, 0x6c, 0x6c, 0x20, 0x69, 0x73, 
+	0x20, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 
+	0x74, 0x6f, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 
+	0x74, 0x68, 0x65, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 
+	0x69, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x27, 0x73, 
+	0x20, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x64, 
+	0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0xa, 0x75, 0x73, 0x69, 
+	0x6e, 0x67, 0x20, 0x56, 0x4e, 0x43, 0x2e, 0x3c, 0x2f, 0x70, 
+	0x3e, 0xa, 0x9, 0x9, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 
+	0x20, 0xa, 0x3c, 0x68, 0x33, 0x3e, 0x4a, 0x61, 0x76, 0x61, 
+	0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x3c, 0x2f, 0x68, 
+	0x33, 0x3e, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x54, 0x68, 0x65, 
+	0x20, 0x4a, 0x61, 0x76, 0x61, 0x20, 0x63, 0x6c, 0x69, 0x65, 
+	0x6e, 0x74, 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x73, 0x20, 0x69, 
+	0x74, 0x20, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 
+	0x20, 0x74, 0x6f, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 
+	0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x69, 0x72, 0x74, 0x75, 
+	0x61, 0x6c, 0xa, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 
+	0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x64, 
+	0x69, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x20, 0x66, 0x72, 
+	0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x65, 0x62, 
+	0x20, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x2e, 0x20, 
+	0x49, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 
+	0x73, 0xa, 0x4a, 0x61, 0x76, 0x61, 0x20, 0x74, 0x6f, 0x20, 
+	0x62, 0x65, 0x20, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 
+	0x6f, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 
+	0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x2e, 0xa, 0x3c, 
+	0x2f, 0x70, 0x3e, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x57, 0x68, 
+	0x65, 0x6e, 0x20, 0x61, 0x73, 0x6b, 0x65, 0x64, 0x20, 0x66, 
+	0x6f, 0x72, 0x20, 0x61, 0x20, 0x70, 0x61, 0x73, 0x73, 0x77, 
+	0x6f, 0x72, 0x64, 0x2c, 0x20, 0x6a, 0x75, 0x73, 0x74, 0x20, 
+	0x63, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x74, 0x68, 0x65, 0x20, 
+	0x22, 0x4f, 0x6b, 0x22, 0x20, 0x62, 0x75, 0x74, 0x74, 0x6f, 
+	0x6e, 0xa, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 
+	0x74, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x20, 
+	0x61, 0x6e, 0x79, 0x20, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 
+	0x72, 0x64, 0x2e, 0xa, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x3c, 
+	0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0x3c, 0x62, 
+	0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 
+	0x23, 0x22, 0x20, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 
+	0x3d, 0x27, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x6f, 
+	0x70, 0x65, 0x6e, 0x28, 0x22, 0x76, 0x6e, 0x63, 0x6a, 0x61, 
+	0x76, 0x61, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x2c, 0xa, 
+	0x22, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x22, 0x2c, 
+	0xa, 0x22, 0x74, 0x6f, 0x6f, 0x6c, 0x62, 0x61, 0x72, 0x3d, 
+	0x6e, 0x6f, 0x2c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 
+	0x6e, 0x3d, 0x6e, 0x6f, 0x2c, 0x73, 0x74, 0x61, 0x74, 0x75, 
+	0x73, 0x3d, 0x79, 0x65, 0x73, 0x2c, 0x6d, 0x65, 0x6e, 0x75, 
+	0x62, 0x61, 0x72, 0x3d, 0x6e, 0x6f, 0x2c, 0x73, 0x63, 0x72, 
+	0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x72, 0x73, 0x3d, 0x79, 0x65, 
+	0x73, 0x2c, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x61, 0x62, 0x6c, 
+	0x65, 0x3d, 0x79, 0x65, 0x73, 0x22, 0x29, 0x3b, 0x27, 0x3e, 
+	0x43, 0x6c, 0x69, 0x63, 0x6b, 0xa, 0x68, 0x65, 0x72, 0x65, 
+	0x20, 0x74, 0x6f, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 
+	0x20, 0x69, 0x6e, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x77, 0x69, 
+	0x6e, 0x64, 0x6f, 0x77, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 
+	0x62, 0x3e, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 
+	0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x63, 0x65, 
+	0x6e, 0x74, 0x65, 0x72, 0x3e, 0x3c, 0x62, 0x3e, 0x3c, 0x61, 
+	0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x76, 0x6e, 0x63, 
+	0x6a, 0x61, 0x76, 0x61, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 
+	0x3e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x68, 0x65, 0x72, 
+	0x65, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 
+	0x68, 0x20, 0x69, 0x6e, 0xa, 0x74, 0x68, 0x69, 0x73, 0x20, 
+	0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x3c, 0x2f, 0x61, 0x3e, 
+	0x3c, 0x2f, 0x62, 0x3e, 0xa, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 
+	0x74, 0x65, 0x72, 0x3e, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa, 
+	0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 
+	0x20, 0x63, 0x61, 0x6e, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 
+	0x68, 0x61, 0x76, 0x65, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x63, 
+	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 
+	0x61, 0x74, 0x20, 0x61, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x2e, 
+	0x20, 0x49, 0x6e, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x20, 
+	0x74, 0x6f, 0x20, 0x61, 0x76, 0x6f, 0x69, 0x64, 0xa, 0x6d, 
+	0x6f, 0x6e, 0x6f, 0x70, 0x6f, 0x6c, 0x69, 0x7a, 0x61, 0x74, 
+	0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 
+	0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 
+	0x6e, 0x73, 0x2c, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x75, 
+	0x73, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x6e, 0x6c, 
+	0x79, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x20, 
+	0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0xa, 0x74, 0x68, 0x65, 
+	0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x66, 
+	0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x68, 0x6f, 0x72, 0x74, 
+	0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x2e, 0xa, 0x3c, 0x2f, 
+	0x70, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0xa, 0x3c, 0x68, 
+	0x33, 0x3e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 
+	0x20, 0x56, 0x4e, 0x43, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 
+	0x74, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x3c, 0x70, 0x3e, 
+	0xa, 0x49, 0x66, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x64, 0x6f, 
+	0x6e, 0x27, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x4a, 
+	0x61, 0x76, 0x61, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 
+	0x6c, 0x65, 0x64, 0x2c, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x63, 
+	0x61, 0x6e, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 
+	0x64, 0x20, 0x61, 0x20, 0x66, 0x72, 0x65, 0x65, 0x20, 0x56, 
+	0x4e, 0x43, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0xa, 
+	0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x66, 0x72, 
+	0x6f, 0x6d, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 
+	0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 
+	0x77, 0x77, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x76, 0x6e, 0x63, 
+	0x2e, 0x63, 0x6f, 0x6d, 0x22, 0x3e, 0x52, 0x65, 0x61, 0x6c, 
+	0x56, 0x4e, 0x43, 0x3c, 0x2f, 0x61, 0x3e, 0x2e, 0x20, 0x53, 
+	0x74, 0x61, 0x72, 0x74, 0x20, 0x74, 0x68, 0x65, 0xa, 0x70, 
+	0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x77, 0x69, 0x74, 
+	0x68, 0x20, 0x3c, 0x62, 0x3e, 0x31, 0x39, 0x33, 0x2e, 0x31, 
+	0x30, 0x2e, 0x36, 0x37, 0x2e, 0x31, 0x35, 0x30, 0x3a, 0x30, 
+	0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 
+	0x65, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x2e, 
+	0xa, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 
+	0xa, 0x3c, 0x68, 0x33, 0x3e, 0x55, 0x6e, 0x69, 0x78, 0x2f, 
+	0x58, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x3c, 
+	0x2f, 0x68, 0x33, 0x3e, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x55, 
+	0x6e, 0x69, 0x78, 0x2f, 0x58, 0x20, 0x56, 0x4e, 0x43, 0x20, 
+	0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x6e, 0x65, 
+	0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3c, 0x74, 0x74, 
+	0x3e, 0x2d, 0x62, 0x67, 0x72, 0x32, 0x33, 0x33, 0x3c, 0x2f, 
+	0x74, 0x74, 0x3e, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 
+	0x20, 0x74, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x20, 
+	0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0xa, 0x66, 0x6f, 
+	0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 
+	0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x3a, 0xa, 0x3c, 0x2f, 0x70, 
+	0x3e, 0xa, 0x3c, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 
+	0x3c, 0x74, 0x74, 0x3e, 0x76, 0x6e, 0x63, 0x76, 0x69, 0x65, 
+	0x77, 0x65, 0x72, 0x20, 0x2d, 0x62, 0x67, 0x72, 0x32, 0x33, 
+	0x33, 0x20, 0x31, 0x39, 0x33, 0x2e, 0x31, 0x30, 0x2e, 0x36, 
+	0x37, 0x2e, 0x31, 0x35, 0x30, 0x3a, 0x30, 0x3c, 0x2f, 0x74, 
+	0x74, 0x3e, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 
+	0x3e, 0xa, 0x3c, 0x70, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 
+	0x3d, 0x22, 0x72, 0x69, 0x67, 0x68, 0x74, 0x22, 0x3e, 0xa, 
+	0x2f, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 
+	0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64, 0x75, 0x6e, 
+	0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 
+	0x64, 0x61, 0x6d, 0x2f, 0x22, 0x3e, 0x41, 0x64, 0x61, 0x6d, 
+	0x20, 0x44, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x3c, 0x2f, 
+	0x61, 0x3e, 0xa, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x3c, 0x2f, 
+	0x74, 0x64, 0x3e, 0xa, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 
+	0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xa, 0x20, 
+	0x20, 0x20, 0x20, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 
+	0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 
+	0x3e, 0xa, };
+
+static const unsigned char data_vncjava_html[] __attribute__ ((aligned (2))) = {
+	/* /vncjava.html */
+	0x2f, 0x76, 0x6e, 0x63, 0x6a, 0x61, 0x76, 0x61, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
+	0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 
+	0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 
+	0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69, 
+	0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31, 
+	0x20, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64, 
+	0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 
+	0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 
+	0x69, 0x6b, 0x69, 0x2f, 0x29, 0xd, 0xa, 0x43, 0x6f, 0x6e, 
+	0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 
+	0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 
+	0xd, 0xa, 0xd, 0xa, 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 
+	0x59, 0x50, 0x45, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 
+	0x55, 0x42, 0x4c, 0x49, 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 
+	0x57, 0x33, 0x43, 0x2f, 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 
+	0x54, 0x4d, 0x4c, 0x20, 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 
+	0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 
+	0x6c, 0x2f, 0x2f, 0x45, 0x4e, 0x22, 0x3e, 0xa, 0x3c, 0x68, 
+	0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 
+	0x61, 0x64, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 
+	0x69, 0x74, 0x6c, 0x65, 0x3e, 0x56, 0x69, 0x72, 0x74, 0x75, 
+	0x61, 0x6c, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 
+	0x20, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x3c, 0x2f, 0x74, 
+	0x69, 0x74, 0x6c, 0x65, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 
+	0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, 
+	0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 
+	0x3c, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 
+	0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x61, 0x70, 0x70, 0x6c, 
+	0x65, 0x74, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x3d, 0x22, 0x76, 
+	0x6e, 0x63, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x2e, 0x63, 
+	0x6c, 0x61, 0x73, 0x73, 0x22, 0x20, 0x61, 0x72, 0x63, 0x68, 
+	0x69, 0x76, 0x65, 0x3d, 0x22, 0x76, 0x6e, 0x63, 0x76, 0x69, 
+	0x65, 0x77, 0x65, 0x72, 0x2e, 0x6a, 0x61, 0x72, 0x22, 0xa, 
+	0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 
+	0x74, 0x68, 0x3d, 0x22, 0x32, 0x38, 0x30, 0x22, 0x20, 0x68, 
+	0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x22, 0x31, 0x36, 0x30, 
+	0x22, 0x3e, 0xa, 0x9, 0x3c, 0x70, 0x61, 0x72, 0x61, 0x6d, 
+	0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x50, 0x4f, 0x52, 
+	0x54, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 
+	0x35, 0x39, 0x30, 0x30, 0x22, 0x3e, 0xa, 0x9, 0x20, 0x20, 
+	0x4a, 0x61, 0x76, 0x61, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 
+	0x62, 0x65, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 
+	0x20, 0x69, 0x6e, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, 0x77, 
+	0x65, 0x62, 0x20, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 
+	0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 
+	0x74, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0xa, 0x20, 
+	0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x61, 0x70, 0x70, 
+	0x6c, 0x65, 0x74, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 
+	0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 
+	0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 
+	0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, };
+
+static const unsigned char data_vncviewer_jar[] __attribute__ ((aligned (2))) = {
+	/* /vncviewer.jar */
+	0x2f, 0x76, 0x6e, 0x63, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x2e, 0x6a, 0x61, 0x72, 0,
+0,
+	0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32, 
+	0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72, 
+	0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69, 
+	0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31, 
+	0x20, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64, 
+	0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 
+	0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 
+	0x69, 0x6b, 0x69, 0x2f, 0x29, 0xd, 0xa, 0x43, 0x6f, 0x6e, 
+	0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 
+	0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69, 
+	0x6e, 0xd, 0xa, 0xd, 0xa, 0x50, 0x4b, 0x3, 0x4, 0xa, 
+	00, 00, 00, 00, 00, 0x16, 0xa9, 0xda, 0x2c, 00, 
+	00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 
+	00, 0x9, 00, 00, 00, 0x4d, 0x45, 0x54, 0x41, 0x2d, 
+	0x49, 0x4e, 0x46, 0x2f, 0x50, 0x4b, 0x3, 0x4, 0xa, 00, 
+	00, 00, 00, 00, 0x16, 0xa9, 0xda, 0x2c, 0x1e, 0xb9, 
+	0xd9, 0x17, 0x2d, 00, 00, 00, 0x2d, 00, 00, 00, 
+	0x14, 00, 00, 00, 0x4d, 0x45, 0x54, 0x41, 0x2d, 0x49, 
+	0x4e, 0x46, 0x2f, 0x4d, 0x41, 0x4e, 0x49, 0x46, 0x45, 0x53, 
+	0x54, 0x2e, 0x4d, 0x46, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 
+	0x73, 0x74, 0x2d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 
+	0x3a, 0x20, 0x31, 0x2e, 0x30, 0xa, 0x43, 0x72, 0x65, 0x61, 
+	0x74, 0x65, 0x64, 0x2d, 0x42, 0x79, 0x3a, 0x20, 0x30, 0x2e, 
+	0x39, 0x32, 0x2d, 0x67, 0x63, 0x63, 0xa, 0xa, 00, 0x50, 
+	0x4b, 0x3, 0x4, 0xa, 00, 00, 00, 0x8, 00, 0xe3, 
+	0xa5, 0xda, 0x2c, 0x5f, 0xeb, 0x71, 0x9a, 0xd7, 0xd, 00, 
+	00, 0x8, 0x19, 00, 00, 0xf, 00, 00, 00, 0x76, 
+	0x6e, 0x63, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x2e, 0x63, 
+	0x6c, 0x61, 0x73, 0x73, 0x8d, 0x57, 0xb, 0x7c, 0x5c, 0x65, 
+	0x95, 0xff, 0x9f, 0xcc, 0x24, 0xf7, 0xe6, 0xf6, 0xb6, 0x99, 
+	0x4e, 0x9b, 0xb4, 0xa1, 0x25, 0xc, 0x2d, 0xa5, 0xc9, 0xa4, 
+	0x69, 0xa4, 0x90, 0x82, 0xd, 0x6d, 0x69, 0xd2, 0xa6, 0x1d, 
+	0x48, 0x93, 0x90, 0xf4, 0x41, 0x5a, 0x1e, 0xbd, 0x99, 0xb9, 
+	0x49, 0xa6, 0x9d, 0xdc, 0x19, 0xee, 0xdc, 0x49, 0x9a, 0xf2, 
+	0x70, 0x15, 0x5d, 0x5d, 0xb5, 0x2e, 0xec, 0xaa, 0xbb, 0xc5, 
+	0x67, 0x5, 0xd, 0x50, 0x94, 0x16, 0x9a, 0x69, 0x35, 0x55, 
+	0x4, 0x56, 0x50, 0xc4, 0x15, 0x4, 0x77, 0x75, 0x57, 0x59, 
+	0x16, 0x9f, 0xab, 0xeb, 0x1b, 0xd7, 0x7d, 0x9, 0x9e, 0x73, 
+	0xef, 0xbc, 0x92, 0xe, 0xbf, 0x9f, 0xc9, 0x6f, 0xbe, 0xef, 
+	0xbb, 0xe7, 0x3b, 0xe7, 0x7c, 0xe7, 0xfd, 0x9d, 0xef, 0xd9, 
+	0xd7, 0xbf, 0xf0, 0x25, 0xf8, 0xd0, 0x42, 0xef, 0xd2, 0x30, 
+	0x89, 0x7, 0xaa, 0x71, 0x18, 0xf, 0xca, 0xf0, 0x90, 0xc6, 
+	0xc3, 0x9, 0x5, 0xf, 0x6b, 0xa8, 0xf4, 0xc0, 0x9f, 0x55, 
+	0xf0, 0x39, 0xd, 0x2a, 0x1e, 0x91, 0x8f, 0x93, 0xb2, 0x3a, 
+	0xa5, 0xe0, 0x51, 0xd, 0xba, 0xb7, 0xfd, 0x98, 0x86, 0xd3, 
+	0x98, 0x56, 0x90, 0xd5, 0x10, 0xf0, 0x20, 0x67, 0x14, 0x9c, 
+	0xd5, 0xb0, 0x8, 0x9f, 0x57, 0xf0, 0x5, 0x15, 0x33, 0x1a, 
+	0x6a, 0x71, 0x4e, 0xe0, 0x5f, 0xd4, 0xf0, 0x25, 0x3c, 0x2e, 
+	0xe8, 0x5f, 0x56, 0xf0, 0x84, 0x86, 0x65, 0x82, 0xbe, 0xc, 
+	0x4f, 0xca, 0xf0, 0x94, 0xf0, 0xfb, 0x7, 0x39, 0xfb, 0x2b, 
+	0x32, 0x3c, 0xad, 0xe0, 0x19, 0xd, 0x2b, 0xf0, 0x55, 0xd9, 
+	0xfb, 0x9a, 0xc, 0xcf, 0xa, 0xdd, 0xd7, 0x85, 0xc3, 0x73, 
+	0xb2, 0xf1, 0xd, 0x5, 0xff, 0xa8, 0xe1, 0x9b, 0x78, 0x5e, 
+	0x86, 0x17, 0x84, 0xe4, 0x5b, 0x82, 0xf5, 0xa2, 0xc, 0x2f, 
+	0x69, 0xf8, 0x36, 0xfe, 0x49, 0xc1, 0x3f, 0x2b, 0xf8, 0x8e, 
+	0x9c, 0xfb, 0x5d, 0x19, 0xfe, 0x45, 0xc3, 0x65, 0xf8, 0x57, 
+	0x59, 0x7d, 0x4f, 0x56, 0xdf, 0xaf, 0xc6, 0xcb, 0xf8, 0x37, 
+	0x5, 0xaf, 0x68, 0xb8, 0xa, 0xf, 0xa8, 0xf8, 0x77, 0x99, 
+	0x5f, 0xad, 0xe6, 0x9d, 0x1f, 0xc8, 0xea, 0x87, 0x2a, 0x7e, 
+	0x24, 0x1f, 0x3f, 0x96, 0xf, 0x66, 0xff, 0x13, 0xfc, 0x54, 
+	0xa8, 0xfe, 0x43, 0x86, 0x9f, 0xa9, 0xf8, 0xb9, 0xec, 0xfd, 
+	0xa7, 0x86, 0x5f, 0xe0, 0x97, 0xd5, 0x6c, 0xa6, 0x5f, 0x69, 
+	0xf8, 0x35, 0x7e, 0xa3, 0xe1, 0xb7, 0xf8, 0x9d, 0xc, 0xaf, 
+	0x89, 0xe9, 0x7e, 0x2f, 0xab, 0xff, 0x12, 0xbc, 0x3f, 0x68, 
+	0xf8, 0x6f, 0xfc, 0x8f, 0x20, 0xff, 0xaf, 0x8a, 0xff, 0x53, 
+	0xf1, 0xff, 0xa, 0xfe, 0xa8, 0xe2, 0x75, 0xd, 0xfd, 0x38, 
+	0xa7, 0xe2, 0xd, 0xd6, 0x8b, 0xa0, 0x12, 0x31, 0x6b, 0xaa, 
+	0x90, 0xc1, 0xa7, 0x92, 0x9f, 0xe9, 0xa8, 0x52, 0xa5, 0x2a, 
+	0x99, 0x15, 0x95, 0x54, 0x99, 0xab, 0x59, 0x4b, 0xd2, 0x58, 
+	0x3, 0x9a, 0x27, 0x9f, 0xba, 0xe0, 0xce, 0xaf, 0xa6, 0x5, 
+	0x54, 0xa3, 0x52, 0x40, 0xb8, 0x2c, 0x14, 0x48, 0x50, 0xa1, 
+	0x45, 0x2a, 0x2d, 0xd6, 0x30, 0x8a, 0x73, 0xec, 0x2b, 0xaa, 
+	0x55, 0xa9, 0x4e, 0x8, 0x97, 0xb0, 0x9b, 0x69, 0xa9, 0x46, 
+	0xf5, 0x74, 0x81, 0x4a, 0xcb, 0x58, 0x38, 0x5a, 0xae, 0xd2, 
+	0x85, 0x2a, 0x35, 0x68, 0x74, 0x11, 0x85, 0x64, 0xf3, 0x62, 
+	0x95, 0x56, 0x8, 0xc5, 0x4a, 0x85, 0x2e, 0x51, 0x68, 0x95, 
+	0x42, 0x97, 0x12, 0xfc, 0xa3, 0xc9, 0xb4, 0x43, 0x8, 0x76, 
+	0x1f, 0x34, 0xc6, 0x8d, 0xd6, 0x84, 0x61, 0x8d, 0xb4, 0xe, 
+	0x38, 0x76, 0xdc, 0x1a, 0x69, 0xe7, 0xbd, 0x54, 0xd2, 0xe6, 
+	0x3d, 0x8a, 0x10, 0x7c, 0xf6, 0xf0, 0x10, 0x41, 0xeb, 0xe6, 
+	0xa9, 0xcf, 0x4e, 0x3a, 0x49, 0xde, 0xad, 0xe6, 0xf5, 0xae, 
+	0x51, 0xdb, 0x34, 0x62, 0xb3, 0xc9, 0x3d, 0x18, 0x23, 0x28, 
+	0x23, 0x76, 0x3c, 0x36, 0x64, 0x8c, 0x10, 0x96, 0x7a, 0xdb, 
+	0xc6, 0x84, 0xd3, 0xba, 0x9d, 0x61, 0x1d, 0xc6, 0x48, 0xb7, 
+	0x31, 0x99, 0xcc, 0x38, 0x8c, 0x34, 0x6f, 0x28, 0xe3, 0x38, 
+	0x49, 0xab, 0xcf, 0xb0, 0xcc, 0x4, 0x21, 0x50, 0x44, 0x74, 
+	0x21, 0x8c, 0x10, 0x88, 0xc5, 0xd3, 0xd1, 0xa4, 0x65, 0x99, 
+	0x51, 0xa7, 0xc3, 0x45, 0x25, 0x2c, 0x2c, 0x62, 0x79, 0x20, 
+	0x46, 0x9b, 0x6f, 0x64, 0x9c, 0x51, 0xd3, 0x72, 0xe2, 0x51, 
+	0xc3, 0x49, 0xda, 0x84, 0xda, 0xee, 0x12, 0x40, 0x3c, 0x77, 
+	0x80, 0x48, 0x6d, 0x5a, 0xd1, 0x64, 0x8c, 0xf5, 0x4b, 0x13, 
+	0x2a, 0xf6, 0xb3, 0x66, 0x9a, 0xb5, 0xad, 0x8, 0x51, 0x47, 
+	0x92, 0x4e, 0x57, 0x32, 0x9a, 0xe1, 0x25, 0xed, 0x23, 0x54, 
+	0x5d, 0x1d, 0xb7, 0xe2, 0xce, 0x26, 0x56, 0xbf, 0xb1, 0x69, 
+	0xf, 0xdb, 0xa3, 0x33, 0x19, 0x33, 0x9, 0x35, 0xdd, 0x71, 
+	0xcb, 0xec, 0xc9, 0x8c, 0xd, 0x99, 0xf6, 0x2e, 0x63, 0x28, 
+	0xc1, 0x10, 0xbf, 0xa0, 0x31, 0x7a, 0x26, 0x15, 0x33, 0x1c, 
+	0xfe, 0xae, 0x6b, 0x2c, 0x55, 0xd8, 0x48, 0x8d, 0xc6, 0xa3, 
+	0xe9, 0x76, 0xe1, 0xe0, 0xb3, 0x33, 0x2c, 0x7f, 0x5d, 0x4e, 
+	0x9f, 0x2d, 0x56, 0x6c, 0x4b, 0x51, 0x48, 0xa6, 0xd3, 0xb6, 
+	0x1d, 0x8e, 0x9a, 0x29, 0x11, 0x97, 0x5, 0x58, 0x1a, 0x4b, 
+	0xba, 0xa6, 0x8e, 0x26, 0x13, 0x11, 0x66, 0x1f, 0x37, 0x12, 
+	0xf1, 0xb4, 0xab, 0xa, 0x41, 0x4f, 0x9b, 0x4e, 0x89, 0xd4, 
+	0x55, 0x46, 0xd4, 0x83, 0xaf, 0x2a, 0x39, 0x77, 0xdb, 0x38, 
+	0xf3, 0x6d, 0x2f, 0xf1, 0x4b, 0xef, 0xd0, 0x41, 0x3e, 0xb3, 
+	0xbd, 0x89, 0xf5, 0xaa, 0x4e, 0xb0, 0xd3, 0x73, 0x7a, 0xea, 
+	0x6c, 0x10, 0x7b, 0x32, 0xe5, 0x74, 0x4c, 0x3a, 0x26, 0x7f, 
+	0x2e, 0x69, 0xdc, 0xdf, 0x71, 0x7e, 0x2c, 0x88, 0xec, 0xb, 
+	0xc4, 0xad, 0x7d, 0x86, 0x6d, 0x8c, 0x99, 0x8e, 0x69, 0x33, 
+	0xea, 0xfc, 0x59, 00, 0xc2, 0xea, 0xc6, 0xf3, 0x9, 0xf7, 
+	0x35, 0x95, 0xb, 0x2c, 0x6d, 0xd8, 0x70, 0x8c, 0xc4, 0x36, 
+	0xdb, 0x76, 0x3d, 0x55, 0x86, 0x4c, 0xce, 0xd3, 0x6, 0x92, 
+	0x19, 0x3b, 0x6a, 0x76, 0xc5, 0xc5, 0xc2, 0xb, 0xc6, 0xad, 
+	0xe8, 0x78, 0xdc, 0x9c, 0x30, 0xed, 0xb5, 0x82, 0xac, 0xe3, 
+	0x6e, 0xdc, 0xa3, 0xe3, 0x7d, 0x78, 0xbf, 0x8e, 0xf, 0xe0, 
+	0xaf, 0x75, 0x1c, 0xc7, 0x3d, 0x84, 0x45, 0x65, 0x5c, 0xae, 
+	0xe3, 0xaf, 0xf0, 0x5e, 0x8e, 0xa2, 0xb9, 0xf1, 0xc9, 0x1c, 
+	0x68, 0xb5, 0x8e, 0xb7, 0xe3, 0x1d, 0x3a, 0x35, 0xa, 0x71, 
+	0x5d, 0xf9, 0x10, 0xd5, 0x71, 0x17, 0xde, 0xa9, 0x50, 0x93, 
+	0x4e, 0x61, 0x6a, 0x66, 0x39, 0x66, 0xc7, 0xa7, 0x8e, 0x77, 
+	0xe1, 0x2f, 0xf9, 0xe0, 0x2, 0xb4, 0x2b, 0x91, 0x9c, 0xc8, 
+	0x13, 0xde, 0x4d, 0x6b, 0x38, 0x58, 0xe6, 0x84, 0x2a, 0xeb, 
+	0xb5, 0xb5, 0x10, 0xd0, 0xa2, 0xc6, 0xa7, 0x75, 0xbc, 0x1b, 
+	0xef, 0x51, 0xa8, 0x45, 0xa7, 0xb5, 0xac, 0x13, 0xb5, 0xd2, 
+	0x5b, 0x8, 0xcb, 0xe6, 0xa, 0xd3, 0xc9, 0x21, 0xe1, 0xd8, 
+	0x46, 0xdc, 0x72, 0xd2, 0x3a, 0x5d, 0x86, 0x3b, 0x75, 0x5a, 
+	0x27, 0xc3, 0xe5, 0x74, 0x85, 0x8e, 0xbf, 0x17, 0x53, 0xdc, 
+	0x2b, 0x3a, 0x54, 0xb3, 0x95, 0x3a, 0xd, 0x6b, 0xdc, 0x48, 
+	0xcb, 0xe9, 0x6d, 0x3a, 0xad, 0xa7, 0x2b, 0x75, 0xba, 0x4a, 
+	0x86, 0xb7, 0xa, 0xef, 0xd, 0x32, 0xb4, 0xbb, 0xa6, 0x2a, 
+	0xda, 0xa3, 0x10, 0x73, 0xa, 0x5d, 0xad, 0xd3, 0x46, 0x41, 
+	0xd9, 0x44, 0x9b, 0x75, 0xdc, 0xcf, 0xa2, 0xd1, 0x35, 0x72, 
+	0xca, 0x16, 0xdc, 0xa9, 0x50, 0x87, 0x4e, 0x9d, 0x42, 0xd9, 
+	0x50, 0xa4, 0x8c, 0x58, 0xec, 0x77, 0x3b, 0x93, 0x72, 0xcc, 
+	0x58, 0x81, 0x9, 0xe7, 0x50, 0xbe, 0x46, 0xe8, 0xb8, 0xd, 
+	0xb7, 0xeb, 0xb8, 0x83, 0x59, 0xb0, 0x34, 0x5b, 0x75, 0xbc, 
+	0xd, 0x7f, 0xa1, 0xd3, 0x36, 0xdc, 0xa3, 0x50, 0x97, 0x4e, 
+	0xdb, 0x69, 0x47, 0xde, 0xe8, 0x25, 0x9e, 0xef, 0xc8, 0xc, 
+	0xf, 0x4b, 0x2c, 0xad, 0xea, 0xef, 0xea, 0x8, 0xa5, 0x4d, 
+	0x7b, 0xdc, 0xb4, 0x43, 0xe9, 0x4c, 0x4a, 0xa, 0x51, 0x3a, 
+	0x94, 0xca, 0xa5, 0x43, 0x88, 0xa1, 0x69, 0x3e, 0x2b, 0xa4, 
+	0x73, 0x69, 0xba, 0x56, 0xa7, 0xeb, 0x44, 0xc8, 0x8, 0x75, 
+	0x73, 0xd2, 0xae, 0xd5, 0x69, 0xa7, 0x48, 0xdb, 0xa3, 0x53, 
+	0xaf, 0xc8, 0xdf, 0x27, 0xea, 0x5c, 0x4f, 0xfd, 0x9c, 0x4e, 
+	0x3d, 0xc9, 0xd0, 0xec, 0xf8, 0x8, 0x59, 0xa6, 0x19, 0x33, 
+	0x63, 0x3a, 0xd, 0xd0, 0x2e, 0x85, 0x76, 0xeb, 0xb4, 0x87, 
+	0xf6, 0xea, 0x74, 0x3, 0xd, 0x2a, 0xb4, 0x4f, 0xa7, 0xfd, 
+	0xb4, 0x59, 0xa1, 0x1b, 0x75, 0xba, 0x89, 0xfa, 0x75, 0xba, 
+	0x99, 0x6e, 0xd1, 0xe9, 0x80, 0xf0, 0x32, 0x68, 0x48, 0xa7, 
+	0x28, 0xc5, 0x14, 0x32, 0x75, 0x1a, 0x16, 0x82, 0x11, 0xe1, 
+	0xbe, 0x7c, 0x4f, 0x4f, 0xe7, 0x5c, 0xf6, 0xe9, 0x4c, 0x34, 
+	0xea, 0x9e, 0x40, 0xa8, 0x2f, 0xb3, 0x3d, 0x6c, 0x70, 0x64, 
+	0xc7, 0xf2, 0xae, 0x88, 0x27, 0x5b, 0x23, 0xbd, 0x25, 0x56, 
+	0xc, 0xbf, 0x29, 0x45, 0xa8, 0x25, 0xe4, 0x24, 0x93, 0xa1, 
+	0x31, 0xc3, 0x9a, 0xc, 0xb1, 0xcd, 0x24, 0x69, 0x57, 0xec, 
+	0xb6, 0xe, 0x59, 0xc9, 0x9, 0x2b, 0x54, 0x86, 0xc8, 0x36, 
+	0xd3, 0x99, 0x84, 0xc3, 0xa6, 0x1a, 0xa5, 0x38, 0x1f, 0x96, 
+	0x36, 0x2d, 0xa9, 0x1a, 0xa1, 0x68, 0x22, 0xce, 0x48, 0x21, 
+	0x29, 0x5c, 0x3a, 0x1d, 0x14, 0xcd, 0xe, 0x89, 0x77, 0x3, 
+	0x5b, 0xcd, 0xf4, 0x21, 0x27, 0x99, 0xa, 0x59, 0x9c, 0xd5, 
+	0xa1, 0x78, 0x9a, 0xe9, 0x12, 0xb8, 0xbd, 0x4, 0x9e, 0x8e, 
+	0x1f, 0xc9, 0xc1, 0xc7, 0x70, 0x27, 0x17, 0xb4, 0xd0, 0x61, 
+	0x5e, 0x5a, 0xe2, 0xe2, 0x8f, 0x48, 0x18, 0x1e, 0x15, 0x57, 
+	0x24, 0x39, 0x23, 0x29, 0x45, 0xb7, 0x2a, 0x64, 0xeb, 0x94, 
+	0x26, 0xae, 0x8c, 0x5a, 0xb1, 0x88, 0xeb, 0x94, 0x91, 0xd3, 
+	0xc6, 0xe5, 0xb4, 0x62, 0x36, 0x75, 0x1b, 0x43, 0x52, 0xff, 
+	0xf5, 0x62, 0x6e, 0x88, 0x63, 0x26, 0x4, 0xc9, 0xbf, 0xa3, 
+	0x77, 0x60, 0x97, 0x8e, 0x4f, 0xe1, 0x3e, 0x9d, 0xe, 0xd3, 
+	0xa4, 0x42, 0x47, 0x74, 0xba, 0x8d, 0x36, 0x13, 0xa0, 0xd3, 
+	0xed, 0x74, 0x7, 0xdb, 0x5e, 0x10, 0x42, 0xa9, 0x7c, 0x21, 
+	0xa, 0x59, 0x49, 0x27, 0x94, 0x4e, 0x99, 0xd1, 0xf8, 0x70, 
+	0x5c, 0xec, 0xeb, 0xef, 0xeb, 0xed, 0x67, 0xff, 0xb2, 0x5c, 
+	0x6f, 0x23, 0x8e, 0xbf, 0xb7, 0xd3, 0x3b, 0x38, 0x18, 0xde, 
+	0xc, 0x5d, 0xa7, 0xbb, 0xe8, 0x9d, 0x5e, 0x22, 0x79, 0xe5, 
+	0x86, 0xef, 0x36, 0x4f, 0xc8, 0x54, 0x2a, 0x61, 0x3a, 0xad, 
+	0x5b, 0xdc, 0x29, 0xf, 0x74, 0x3, 0xb7, 0x3f, 0x63, 0x59, 
+	0xde, 0x35, 0xb0, 0xa4, 0xb4, 0x92, 0xe5, 0xc1, 0x6e, 0x2d, 
+	0xab, 0x4c, 0x3b, 0x86, 0x5d, 0x20, 0x13, 0x85, 0x39, 0xa1, 
+	0x1d, 0x4e, 0x67, 0x39, 0xa0, 0x9a, 0xab, 0xb9, 0x57, 0x33, 
+	0x38, 0xf1, 0x4b, 0x2a, 0xb8, 0x7, 0xdb, 0x69, 0x58, 0xc6, 
+	0x88, 0x69, 0xbb, 0x6c, 0xaa, 0x1a, 0x23, 0x91, 0x88, 0x2c, 
+	0x4a, 0xf9, 0x8c, 0xa5, 0x92, 0x16, 0xbb, 0x92, 0xef, 0x5b, 
+	0x36, 0xb2, 0x27, 0x88, 0xcf, 0x88, 0xb1, 0xe2, 0xe1, 0x12, 
+	0x5e, 0x5, 0xb4, 0xf6, 0xa6, 0x72, 0x40, 0x16, 0x42, 0x2e, 
+	0xeb, 0x89, 0x78, 0xcc, 0x19, 0x95, 0xfb, 0xc4, 0x8a, 0x8e, 
+	0x4a, 0x69, 0x5e, 0xc0, 0x92, 0x95, 0x54, 0x1e, 0xc2, 0x15, 
+	0x65, 0x59, 0x9e, 0x77, 0xbb, 0x97, 0xd0, 0x78, 0x57, 0x47, 
+	0x63, 0x77, 0xc1, 0xa0, 0x2e, 0x40, 0x99, 0x30, 0xe3, 0x23, 
+	0xa3, 0xce, 0x61, 0xce, 0xd8, 0xad, 0x85, 0xaf, 0x49, 0xae, 
+	0x1d, 0xe3, 0x7c, 0xcb, 0x79, 0x77, 0x68, 0x95, 0x99, 0xb3, 
+	0x6a, 0x2d, 0xa7, 0x7d, 0xd4, 0x4c, 0xa7, 0x7b, 0x92, 0xf6, 
+	0x98, 0x91, 0xc8, 0x5f, 0x89, 0xb3, 0x4a, 0x18, 0x97, 0xf4, 
+	0xe4, 0x84, 0x87, 0x5d, 0x93, 0xe2, 0x32, 0xe2, 0xc, 0x38, 
+	0x46, 0xf4, 0xd0, 0x2e, 0xdb, 0x88, 0x32, 0x44, 0x75, 0x92, 
+	0x5e, 0x6d, 0x21, 0x2c, 0x6e, 0x2c, 0x7b, 0x1d, 0x55, 0xc6, 
+	0x53, 0x46, 0xec, 0x70, 0x6e, 0x9e, 0x9c, 0x75, 0x59, 0x78, 
+	0x97, 0x26, 0x7, 0xd1, 0x84, 0x21, 0x37, 0xfc, 0xc5, 0x65, 
+	0xee, 0xaa, 0xc8, 0x1c, 0xdd, 0xdc, 0x7b, 0x72, 0x8f, 0x57, 
+	0xa1, 0x76, 0xa6, 0x47, 0x66, 0xb1, 0x1b, 0x98, 0x4c, 0x3b, 
+	0xe6, 0x18, 0x3b, 0xc8, 0x75, 0x76, 0x6d, 0x77, 0x3e, 0xf5, 
+	0xfb, 0x3c, 0xa1, 0x99, 0x72, 0xac, 0x5d, 0xec, 0x9f, 0x4a, 
+	0x71, 0x9a, 0x12, 0xd6, 0x94, 0xbb, 0x1a, 0xcf, 0x3, 0x79, 
+	0x35, 0x53, 0x7a, 0x29, 0xaf, 0x60, 0xee, 0x34, 0xe, 0x8a, 
+	0xf3, 0x96, 0x35, 0x46, 0xfe, 0xc, 0xdc, 0xb8, 0x25, 0xb8, 
+	0x8b, 0xca, 0x8, 0xc2, 0x7e, 0x71, 0x6d, 0x99, 0xe0, 0x6a, 
+	0x54, 0x33, 0x61, 0xc7, 0x1d, 0xb3, 0x54, 0x29, 0x57, 0x4b, 
+	0xe9, 0x5e, 0x6, 0xa2, 0xa3, 0xe6, 0x98, 0xe9, 0xb6, 0x48, 
+	0xdc, 0x4d, 0x55, 0xc4, 0x39, 0x4a, 0xea, 0xb, 0x7a, 0x6d, 
+	0xe5, 0x7b, 0x3e, 0x62, 0xa5, 0x32, 0x45, 0xdd, 0x96, 0xbc, 
+	0xc9, 0x96, 0xf4, 0x93, 0xcc, 0xb1, 0x2b, 0x93, 0x48, 0xb0, 
+	0x7, 0x2a, 0xb9, 0xb, 0x11, 0x5b, 0xaa, 0x29, 0x23, 0x9d, 
+	0x9e, 0x48, 0xda, 0x6c, 0x8b, 0xc5, 0xc5, 0x28, 0xdb, 0x65, 
+	0x1e, 0x76, 0xba, 0xe2, 0x66, 0x42, 0x9a, 0xcc, 0xba, 0x59, 
+	0xd0, 0xd2, 0x6c, 0x18, 0x31, 0x1d, 0x1, 0xcd, 0xb6, 0x7f, 
+	0x2e, 0x10, 0xaa, 0x12, 0xa6, 0x35, 0x22, 0xa1, 0x5e, 0x9d, 
+	0xce, 0xc, 0xa5, 0x73, 0xc0, 0x3a, 0xce, 0xae, 0xf2, 0xf1, 
+	0x61, 0x9b, 0x8e, 0x2d, 0xd1, 0xc9, 0x2c, 0x73, 0x6d, 0x92, 
+	0xca, 0xb8, 0xfb, 0x3b, 0xdc, 0x5c, 0xac, 0x48, 0xf2, 0x77, 
+	0x5d, 0x41, 0xe5, 0xde, 0x8c, 0x53, 0xaa, 0xef, 0xe2, 0x72, 
+	0x70, 0x66, 0xe9, 0x1a, 0x94, 0xa5, 0x14, 0xa5, 0x23, 0x22, 
+	0x6f, 0x95, 0x6d, 0x8e, 0x25, 0xc7, 0x4b, 0xaa, 0xc8, 0x9c, 
+	0xb4, 0xdd, 0x93, 0xf7, 0x42, 0xa7, 0x5b, 0xb9, 0x23, 0x6e, 
+	0xc7, 0xe9, 0x7a, 0x61, 0xc0, 0xf5, 0xa4, 0x7, 0x98, 0x17, 
+	0xf3, 0xea, 0x74, 0x8f, 0x21, 0x3e, 0x9, 0xc, 0x4b, 0x91, 
+	0x1b, 0x72, 0x7d, 0xbe, 0xd7, 0xcb, 0xed, 0x85, 0x25, 0xa0, 
+	0x1d, 0x6e, 0xda, 0x31, 0x5a, 0xdc, 0x9a, 0x9b, 0x5c, 0xb, 
+	0xdd, 0xa3, 0x6, 0x66, 0xb7, 0x99, 0x8d, 0xfb, 0xbd, 0xea, 
+	0x53, 0x2c, 0xdb, 0x6e, 0x93, 0xc9, 0x3b, 0x5c, 0xdd, 0x46, 
+	0xcc, 0x39, 0xcf, 0x88, 0x5c, 0xbf, 0xe9, 0x3a, 0x56, 0x34, 
+	0xdb, 0x92, 0x60, 0xbe, 0x95, 0x51, 0x6e, 0x3d, 0xa5, 0x63, 
+	0x4e, 0xb3, 0x90, 0x2c, 0xee, 0x88, 0x14, 0x98, 0x98, 0xd9, 
+	0x61, 0x8, 0x30, 0x90, 0x4f, 0x4f, 0x8b, 0x2b, 0xed, 0xee, 
+	0xfe, 0x6e, 0xa6, 0xd5, 0x4b, 0xbf, 0x3d, 0xa7, 0xee, 0x70, 
+	0x1f, 0x2c, 0x55, 0xe6, 0xad, 0x19, 0x23, 0x91, 0x9e, 0xd3, 
+	0x3e, 0x96, 0xf4, 0xb8, 0xb, 0x67, 0xf7, 0x29, 0x23, 0x52, 
+	0x69, 0x39, 0x9c, 0xec, 0xb4, 0xe9, 0x9a, 0xbb, 0x6c, 0xd7, 
+	0xc9, 0x1, 0xac, 0xf3, 0x9, 0x25, 0x3d, 0xed, 0xa5, 0x7f, 
+	0x56, 0x6, 0xca, 0xfb, 0x23, 0x9a, 0xb1, 0x6d, 0x36, 0x46, 
+	0xfe, 0x45, 0x34, 0xbb, 0xd4, 0xe4, 0xde, 0x44, 0xb8, 0x98, 
+	0x5f, 0xa7, 0x93, 0x20, 0x1c, 0xc1, 0x3c, 0x40, 0xda, 0x23, 
+	0xc8, 0x1f, 0x77, 0x48, 0xee, 0xcc, 0xfd, 0x91, 0x3b, 0x73, 
+	0x53, 0xea, 0xce, 0xdc, 0x79, 0xba, 0x33, 0xf7, 0x98, 0xee, 
+	0xcc, 0x7d, 0xa2, 0x3b, 0x73, 0x47, 0xeb, 0xce, 0xdc, 0xfe, 
+	0xba, 0xf3, 0xd1, 0x1c, 0x3d, 0x77, 0xc2, 0x3c, 0x2e, 0x60, 
+	0xfe, 0xdc, 0x1d, 0xf3, 0xf8, 0x37, 0xfc, 0xb5, 0x1e, 0x15, 
+	0xbc, 0x2, 0x82, 0xe1, 0x33, 0xa0, 0x70, 0x40, 0x3b, 0xa7, 
+	0x4d, 0xa3, 0x22, 0xec, 0x9b, 0x86, 0xef, 0x14, 0x43, 0x9, 
+	0x7f, 0x2b, 0x7b, 0xf0, 0xf3, 0x78, 0x21, 0xfc, 0x54, 0xc3, 
+	0x77, 0x6a, 0x1a, 0xb, 0x79, 0x4d, 0xf8, 0x60, 0x81, 0xc7, 
+	0x75, 0xbc, 0x2f, 0x3c, 0x56, 0x86, 0xb3, 0xf0, 0x87, 0x67, 
+	0x50, 0x39, 0x78, 0x6, 0x55, 0xd3, 0x50, 0x78, 0xa9, 0xe, 
+	0x32, 0xdf, 0xea, 0x69, 0x68, 0xe1, 0xd3, 0xd0, 0xb2, 0x98, 
+	0x57, 0x64, 0x5a, 0xc7, 0x4f, 0x64, 0xe0, 0x5a, 0x26, 0xed, 
+	0x41, 0xd, 0xfa, 0xf8, 0xd5, 0x7e, 0x3d, 0xbf, 0xea, 0xfb, 
+	0x79, 0xf7, 0x43, 0xf8, 0x70, 0x8e, 0x71, 0x3d, 0xff, 0x2a, 
+	0x84, 0xa2, 0x48, 0x56, 0xe5, 0x9e, 0xb4, 0x9b, 0xc7, 0xbf, 
+	0xcb, 0x9f, 0xcf, 0xfd, 0x67, 0x15, 0x7c, 0xc, 0x7d, 0x82, 
+	0xf, 0xd4, 0xf9, 0xec, 0xf9, 0xd3, 0x58, 0x10, 0xe6, 0x3, 
+	0x17, 0x64, 0x51, 0xc3, 0xa0, 00, 0x83, 0x16, 0x4e, 0xb3, 
+	0x86, 0xa7, 0x11, 0x9c, 0xc1, 0xa2, 0x41, 0x9f, 0xcf, 0x77, 
+	0x6, 0x8b, 0xbd, 0xbd, 0xda, 0xc1, 0x60, 0xdd, 0x19, 0x2c, 
+	0x99, 0xc6, 0x52, 0xde, 0x5d, 0x9a, 0x45, 0xbd, 0x20, 0x79, 
+	0xcb, 0xb, 0xf6, 0xce, 0x60, 0x19, 0x93, 0x2e, 0xef, 0x6e, 
+	0x66, 0x73, 0x5c, 0xd8, 0x1c, 0x8, 0x4e, 0xa3, 0x41, 0xb8, 
+	0xa, 0x4a, 0x73, 0x16, 0x17, 0xc9, 0x11, 0x41, 0xc1, 0x63, 
+	0xb5, 0x43, 0xfc, 0xbb, 0x78, 0x6, 0x2b, 0x44, 0xdd, 0x95, 
+	0x3b, 0x9b, 0x6b, 0xa6, 0x71, 0x89, 0xc, 0xab, 0x4, 0x7f, 
+	0x8d, 0x8b, 0xbc, 0x26, 0x87, 0x79, 0xa9, 0xc7, 0x7d, 0x35, 
+	0x7f, 0x37, 0x4e, 0x21, 0xb0, 0x93, 0xe7, 0xb0, 0x6c, 0x32, 
+	0xd2, 0x9a, 0x53, 0xac, 0xd0, 0x4, 0x4e, 0xe2, 0x31, 0x34, 
+	0xe5, 0xd4, 0x1d, 0x76, 0x6d, 0x70, 0x13, 0x87, 0xc3, 0xcd, 
+	0x58, 0x84, 0x3, 0x68, 0x80, 0x81, 0x56, 0xc, 0xe1, 0x6a, 
+	0x44, 0xd1, 0x89, 0x18, 0x7a, 0x61, 0x61, 0x2f, 0x92, 0xb8, 
+	0x11, 0x29, 0x86, 0xde, 0xca, 0x5f, 0x36, 0x73, 0xc8, 0x70, 
+	0xe8, 0x4c, 0x70, 0xb8, 0x4c, 0x72, 0x40, 0x1c, 0x61, 0xf7, 
+	0xdf, 0xc6, 0x66, 0xba, 0x9d, 0x1b, 0xb0, 0x3b, 0xf8, 0x1d, 
+	0x74, 0x17, 0x3e, 0xcd, 0xe1, 0xf2, 0x30, 0x87, 0xc8, 0x63, 
+	0xbc, 0x73, 0x96, 0x83, 0xe2, 0xcb, 0x6c, 0x48, 0xc8, 0x2b, 
+	0x81, 0x6d, 0xcd, 0xe6, 0xac, 0x78, 0x96, 0xcd, 0x59, 0xcd, 
+	0x66, 0x7d, 0xb9, 0x8c, 0xfe, 0x45, 0xcd, 0x9a, 0x3, 0xb1, 
+	0x69, 0xb4, 0x34, 0x7, 0xd6, 0x4d, 0x63, 0x6d, 0xce, 0x2a, 
+	0x4a, 0xde, 0x2a, 0x4a, 0x5e, 0x57, 0xdf, 0xc6, 0x29, 0x3a, 
+	0x2a, 0x80, 0x9e, 0x96, 0x27, 0x3d, 0x78, 0xeb, 0x14, 0x2a, 
+	0x37, 0xf8, 0x5b, 0x9e, 0x9a, 0x82, 0xb6, 0xa1, 0xb2, 0xe5, 
+	0xa9, 0xfa, 0xca, 0xc7, 0xd9, 0xb, 0x97, 0xd, 0xf2, 0xe6, 
+	0x3a, 0xfe, 0x5d, 0xce, 0xe6, 0xbb, 0x62, 0x1a, 0x6d, 0xbc, 
+	0x6c, 0xcb, 0x62, 0xfd, 0xa3, 0xb8, 0x72, 0x6, 0x57, 0xb1, 
+	0xc, 0x6f, 0xd, 0x6e, 0xc8, 0xa2, 0x5d, 0xa0, 0xa7, 0x71, 
+	0x75, 0x16, 0x1b, 0x83, 0x9b, 0xa, 0x9f, 0x9b, 0xf9, 0x33, 
+	0x8b, 0x6b, 0xb2, 0xd8, 0xe2, 0x11, 0x75, 0x78, 0x53, 0xe7, 
+	0x9, 0x89, 0x78, 0x5a, 0x9c, 0x8f, 0x20, 0xfe, 0x2d, 0xcb, 
+	0xad, 0x1b, 0x99, 0x6d, 0x70, 0x2b, 0x13, 0xf8, 0x37, 0x4e, 
+	0xe1, 0x57, 0x81, 0xc0, 0x39, 0x75, 0x83, 0xdf, 0xe3, 0xb5, 
+	0xad, 0xde, 0x9f, 0x45, 0x97, 0x8, 0x7a, 0x1a, 0xdb, 0xb3, 
+	0xd8, 0xb1, 0xa1, 0xb2, 0xbe, 0x32, 0x8b, 0x48, 0x40, 0xbd, 
+	0x1f, 0xf3, 0xeb, 0x2b, 0x7d, 0x1, 0x35, 0x8b, 0x6b, 0x73, 
+	0xb0, 0x7b, 0x31, 0xdf, 0x53, 0xe8, 0xba, 0x29, 0x9c, 0x8, 
+	0xa8, 0xcc, 0xa3, 0x8a, 0x31, 0xdc, 0xad, 0xfa, 0x2a, 0x5f, 
+	0x16, 0xdd, 0xee, 0x72, 0xbd, 0x32, 0x5, 0xbd, 0xbe, 0xaa, 
+	0x56, 0xf1, 0xed, 0xe2, 0x47, 0x62, 0xad, 0x12, 0x50, 0x8f, 
+	0xbf, 0xf1, 0x3b, 0xef, 0xac, 0x9d, 0x72, 0x56, 0x4f, 0xee, 
+	0xdc, 0x2c, 0x7a, 0xd7, 0xab, 0xb5, 0xea, 0x43, 0x6e, 0x9a, 
+	0x6e, 0x85, 0xf7, 0x57, 0x91, 0x93, 0xb9, 0x91, 0x7f, 0x1b, 
+	0x44, 0xe6, 0xbe, 0x9c, 0xcc, 0xed, 0xf2, 0x71, 0xbd, 0xa7, 
+	0xb1, 0x27, 0x41, 0xd3, 0xc, 0xfa, 0x7, 0x83, 0x3, 0x67, 
+	0xb0, 0xeb, 0x71, 0x59, 0xe5, 0x8d, 0xb6, 0x9b, 0xad, 0x54, 
+	0xab, 0x7a, 0x6, 0x92, 0xbd, 0xe5, 0xc7, 0x5e, 0xcf, 0xe4, 
+	0xfc, 0xb3, 0xe7, 0x14, 0xf3, 0xef, 0xe1, 0x44, 0xba, 0x1, 
+	0x6f, 0xe1, 0xf9, 0x16, 0xfe, 0xcf, 0xa7, 0xd8, 0xb3, 0x58, 
+	0xc7, 0xe3, 0xbd, 0x50, 0x39, 0x62, 0xe6, 0xe3, 0xa3, 0x1c, 
+	0x77, 0x1f, 0xc3, 0x52, 0x7c, 0x9c, 0x93, 0xfe, 0x13, 0x58, 
+	0x89, 0x4f, 0x72, 0x6c, 0x1e, 0x47, 0x1b, 0xf7, 0xdb, 0x9b, 
+	0x70, 0x1f, 0x3a, 0xf0, 0x20, 0xcb, 0x7b, 0x2, 0xdb, 0xf1, 
+	0x59, 0xe6, 0xf2, 0x8, 0x73, 0x3b, 0xc9, 0x9c, 0x1e, 0xe5, 
+	0xb8, 0x3d, 0xcd, 0x91, 0x97, 0xe5, 0x52, 0x75, 0x96, 0xa1, 
+	0x33, 0xbc, 0xfa, 0x22, 0xbe, 0xc3, 0x91, 0xf6, 0xa, 0x9e, 
+	0xc0, 0xab, 0x78, 0x12, 0x3f, 0xc2, 0x57, 0xf0, 0x73, 0x3c, 
+	0x8d, 0x3f, 0xe0, 0xab, 0xe4, 0xc3, 0xd7, 0x68, 0x9, 0xbe, 
+	0x4e, 0x17, 0xe1, 0x39, 0xba, 0x14, 0xdf, 0xa0, 0x26, 0x3c, 
+	0x4f, 0xad, 0x78, 0x81, 0x9f, 0x9a, 0x2f, 0xd2, 0x76, 0xbc, 
+	0xc4, 0xf, 0xb6, 0x17, 0x69, 0x2f, 0xbe, 0x47, 0x51, 0xbc, 
+	0xcc, 0x4f, 0x87, 0x57, 0xe8, 0xfd, 0x78, 0x95, 0x3e, 0x88, 
+	0x1f, 0xd0, 0x87, 0xf1, 0x43, 0x3a, 0x86, 0x1f, 0xd3, 0x71, 
+	0xfc, 0x84, 0x1e, 0xc0, 0x4f, 0xe9, 0x4, 0x7e, 0x46, 0xd3, 
+	0xf8, 0x5, 0xbd, 0x80, 0x13, 0xf4, 0x6d, 0xbc, 0x46, 0xdf, 
+	0xc7, 0xef, 0x71, 0x8c, 0x35, 0x91, 0xe2, 0xd4, 0xef, 0x6a, 
+	0x94, 0x8b, 0x70, 0x8e, 0x75, 0x9f, 0x1b, 0x11, 0xa3, 0x62, 
+	0xc8, 0xbd, 0x85, 0xd0, 0xb9, 0xc1, 0x9b, 0x6, 0x4b, 0xc2, 
+	0x6e, 0x5f, 0x21, 0xce, 0xf6, 0xf3, 0xca, 0x8b, 0xb3, 0x92, 
+	0xed, 0x1b, 0xb, 0xdb, 0x37, 0x49, 0x54, 0xde, 0x5c, 0xf8, 
+	0xbc, 0xa5, 0x18, 0x95, 0x59, 0x1c, 0x28, 0x96, 0xaf, 0x6, 
+	0x28, 0x3c, 0xfe, 0x91, 0x6d, 0xfb, 0x6, 0x6a, 0x88, 0xfb, 
+	0x2, 0xd6, 0xbe, 0x8d, 0xfc, 0x88, 0x92, 0x82, 0x11, 0x52, 
+	0x67, 0xc9, 0xfb, 0x91, 0x42, 0x81, 0xfd, 0x18, 0xd7, 0x4a, 
+	0x89, 0x6, 0x43, 0xa, 0xb3, 0xc1, 0x27, 0x54, 0x84, 0x7, 
+	0x4f, 0xc3, 0xd8, 0xe7, 0x3f, 0xc0, 0x9f, 0xfe, 0xde, 0x39, 
+	00, 0xdf, 0x5c, 0x40, 0xa5, 00, 0xda, 0x9e, 0xc6, 0x72, 
+	0x4f, 0xb6, 0xa1, 0x63, 0x6e, 0x89, 0x6b, 0x73, 0xb1, 0x18, 
+	0x29, 0x8b, 0xe8, 0x14, 0xd4, 0x6e, 0x4e, 0xde, 0xf0, 0x29, 
+	0xd7, 0x2c, 0x37, 0x60, 0x7f, 0xa1, 00, 0xad, 0x60, 0x51, 
+	0x25, 0x8d, 0x2a, 0xa9, 0x96, 0x85, 0xad, 0xc3, 0x6a, 0x76, 
+	0xd5, 0x55, 0xb4, 0x14, 0x11, 0xaa, 0xc7, 0x7e, 0x5a, 0x8e, 
+	0x3, 0xd4, 0xc0, 0xb7, 0xd6, 0x47, 0x59, 0x44, 0x4f, 0xd4, 
+	0xbb, 0xb9, 0x78, 0xc8, 0x6d, 0xd1, 0xd7, 0x7c, 0x1a, 0x31, 
+	0x29, 0x75, 0x9f, 0x41, 0x97, 0x58, 0xd9, 0xf4, 0x4c, 0x31, 
+	0xec, 0x99, 0x78, 0x24, 0xcc, 0x9e, 0x6a, 0x9b, 0xc1, 0xe8, 
+	0x60, 0x30, 0x7e, 0x6, 0x7, 0x7b, 0xc2, 0x6e, 0x5d, 0xe, 
+	0x34, 0x4, 0x1a, 0x72, 0x95, 0xb9, 0xa5, 0xa4, 0x5a, 0xf2, 
+	0xbd, 0x71, 0xc8, 0xf7, 0x70, 0xc1, 0x84, 0x6b, 0xe5, 0x6e, 
+	0xa4, 0x4d, 0x98, 0x47, 0xd7, 0x60, 0x11, 0x6d, 0xc3, 0x12, 
+	0xea, 0x42, 0x3, 0x7, 0xca, 0x4a, 0xda, 0x81, 0x16, 0x8a, 
+	0x60, 0x23, 0x5d, 0x8b, 0x4e, 0x7e, 0xf3, 0x6f, 0xa7, 0x6e, 
+	0xf4, 0xf0, 0xd3, 0x95, 0xb8, 0xc4, 0xe5, 0xa5, 0x5b, 0xc9, 
+	0x66, 0x94, 0x9b, 0x42, 0x9, 0xfb, 0xf9, 0x86, 0xf3, 0x17, 
+	0x99, 0x6a, 0x62, 0x5f, 0x7e, 0x74, 0x56, 0xf2, 0x9b, 0x92, 
+	0x38, 0xd6, 0xcf, 0x27, 0xf0, 0x95, 0x23, 0x38, 0xc2, 0x4, 
+	0xb7, 0xf1, 0xd7, 0x27, 0x38, 0x2d, 0x3c, 0x82, 0xdd, 0xec, 
+	0x2a, 0xb9, 0xd8, 0x9a, 0xa4, 0x26, 0xf4, 0xac, 0xf1, 0x71, 
+	0x65, 0x8f, 0xb4, 0x48, 0x3d, 0x90, 0xc5, 0x7a, 0xff, 0x14, 
+	0xe6, 0xb5, 0xd4, 0xfa, 0xb9, 0x1a, 0xf8, 0xa9, 0xd6, 0x2f, 
+	0xd5, 0xe0, 0xb5, 0x62, 0x6c, 0x5c, 0xc0, 0xa6, 0x3, 0xbd, 
+	0x97, 0x59, 0xbe, 0xf, 0x1, 0x3a, 0x8a, 0x7a, 0xfa, 00, 
+	0x2b, 0x76, 0x14, 0x8d, 0xf4, 0x21, 0xc6, 0x38, 0x5e, 0x88, 
+	0x6, 0x87, 0xd, 0x2c, 0xd1, 0x70, 0x4d, 0x38, 0x1c, 0x4c, 
+	0x30, 0xeb, 0xb1, 0x69, 0xb7, 0x76, 0xae, 0x7b, 0x86, 0x6f, 
+	0x21, 0x36, 0x99, 0x95, 0x45, 0x32, 0x7, 0x9, 0xa6, 0xb2, 
+	0xb8, 0xf5, 0x18, 0xaa, 0xc3, 0x41, 0x9b, 0x6f, 0x97, 0x70, 
+	0x30, 0xcd, 0x25, 0x67, 0xac, 0x3b, 0xdc, 0x7c, 0x16, 0xce, 
+	0x34, 0x2e, 0x2f, 0x9e, 0xec, 0x39, 0xf9, 0x93, 0x6c, 0xd2, 
+	0xe3, 0x8, 0xd2, 0xa7, 0x70, 0x21, 0xdd, 0x87, 0x26, 0xba, 
+	0x1f, 0xad, 0x9c, 0x57, 0x57, 0xd2, 0x83, 0xd8, 0x4c, 0xf, 
+	0x31, 0x26, 0xbf, 0xb0, 0xb, 0x17, 0xbe, 0xcf, 0x75, 0xf2, 
+	0xea, 0x30, 0x7, 0x4d, 0xa6, 0xa7, 0xe5, 0x19, 0x34, 0x2c, 
+	0x3f, 0x86, 0xb, 0xc2, 0xb9, 0xb4, 0x60, 0x60, 0x7b, 0x70, 
+	0x3c, 0x9f, 0x2f, 0x6b, 0x5a, 0x4e, 0xce, 0xee, 0x24, 0xe8, 
+	0x73, 0xa8, 0xa2, 0x47, 0xb0, 0x80, 0x4e, 0x62, 0x15, 0x3d, 
+	0xca, 0x3b, 0xf7, 0xf3, 0x95, 0xe4, 0x31, 0x8e, 0xe7, 0x6e, 
+	0xf2, 0x36, 0xe, 0x99, 0xe6, 0x5c, 0xc4, 0x48, 0x94, 0x34, 
+	0x73, 0x90, 0xec, 0x3c, 0x2f, 0x48, 0xa, 0x57, 0xea, 0x59, 
+	0x4c, 0x70, 0x8c, 0xcc, 0xd5, 0xe7, 0x39, 0x28, 0xf4, 0x4d, 
+	0xd6, 0xe9, 0x79, 0x2c, 0xa6, 0x6f, 0xe1, 0x12, 0x7a, 0x11, 
+	0x61, 0x7a, 0x9, 0x6b, 0xb9, 0x36, 0x5c, 0x41, 0xdf, 0x65, 
+	0xcc, 0xcf, 0xb8, 0x35, 0x76, 0xea, 0x4f, 0x50, 0x4b, 0x3, 
+	0x4, 0xa, 00, 00, 00, 0x8, 00, 0x16, 0xa9, 0xda, 
+	0x2c, 0xc9, 0xa0, 0xa1, 0x6c, 0x47, 0xf, 00, 00, 0x1f, 
+	0x1e, 00, 00, 0xe, 00, 00, 00, 0x72, 0x66, 0x62, 
+	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6c, 0x61, 0x73, 
+	0x73, 0x85, 0x57, 0xb, 0x7c, 0x54, 0xd5, 0x99, 0xff, 0xce, 
+	0x9d, 0xc7, 0xbd, 0x99, 0xdc, 0x90, 0x9b, 0x81, 0x49, 0x8, 
+	0x33, 0x81, 0x41, 0x4, 0xc2, 0x4c, 0x2, 0xd1, 0x20, 0xef, 
+	0x67, 0x22, 0x81, 0x48, 0x1e, 0x98, 0x4, 0x10, 0xf0, 0xc1, 
+	0x24, 0x73, 0x93, 0xc, 0x24, 0x33, 0x71, 0x66, 0x92, 0x40, 
+	0x5b, 0xa1, 0xf, 0xd9, 0x3e, 0x5c, 0xbb, 0x4b, 0x95, 0x5a, 
+	0xac, 0x94, 0xa0, 0x54, 0xdc, 0x15, 0x6d, 0xed, 0x92, 0x60, 
+	0x85, 0xea, 0x5a, 0x6b, 0x45, 0x57, 0xdd, 0x76, 0xeb, 0x76, 
+	0x77, 0xbb, 0xdb, 0x56, 0xd7, 0xdd, 0xfa, 0xd6, 0xee, 0x5a, 
+	0xbb, 0x8f, 0x3e, 0xe8, 0xff, 0xbb, 0xf7, 0xce, 0xdc, 0x99, 
+	0x21, 0xb4, 0xf3, 0xfb, 0xcd, 0xf7, 0x3a, 0xdf, 0xf9, 0xce, 
+	0xf9, 0x1e, 0xe7, 0x3b, 0xe7, 0xbe, 0xf0, 0xfb, 0x27, 0x9e, 
+	0x24, 0x7, 0xd5, 0x8a, 0x66, 0xf, 0x45, 0xe9, 0xa5, 0x22, 
+	0xea, 0xa1, 0x97, 0x19, 0xfc, 0x3d, 0x83, 0x1f, 0x30, 0xf8, 
+	0x21, 0x83, 0x7f, 0x60, 0xf0, 0x23, 0x99, 0x5e, 0xf1, 0x90, 
+	0x42, 0xff, 0xc8, 0xcc, 0x8f, 0x65, 0xfa, 0x27, 0x99, 0xfe, 
+	0x99, 0xf9, 0x7f, 0xf1, 0x90, 0x4a, 0x3f, 0xf1, 0x50, 0x31, 
+	0xfd, 0x2b, 0x8f, 0xfc, 0x1b, 0xcb, 0x7e, 0xca, 0xd4, 0xcf, 
+	0x98, 0xfa, 0xb9, 0x4c, 0xaf, 0x7a, 0xe8, 0x35, 0xfa, 0x77, 
+	0x56, 0x78, 0x5d, 0xa6, 0xff, 0x90, 0xe9, 0x3f, 0x3d, 0x34, 
+	0x9d, 0x5e, 0x52, 0xe8, 0x17, 0x8c, 0xdf, 0x50, 0xe8, 0x4d, 
+	0xc6, 0x6f, 0x29, 0xf4, 0x36, 0xe3, 0x77, 0x3c, 0x54, 0x41, 
+	0xef, 0xf2, 0xf4, 0xf7, 0x18, 0xbc, 0xaf, 0xd0, 0x7, 0x1e, 
+	0x9a, 0x4f, 0xbf, 0xf4, 0xd0, 0x7f, 0xd1, 0x7f, 0xb3, 0x8d, 
+	0xf, 0x65, 0xfa, 0x15, 0x4b, 0x3e, 0x52, 0xe8, 0xd7, 0x2c, 
+	0xfc, 0x1f, 0x16, 0xfe, 0x2f, 0xeb, 0xfe, 0x1f, 0x83, 0xff, 
+	0x67, 0xf6, 0x37, 0x4c, 0xfd, 0x96, 0xc1, 0xef, 0x18, 0xfc, 
+	0x9e, 0xc1, 0x45, 00, 0x41, 0xc, 0x4, 0x3, 0x89, 0x81, 
+	0x83, 0x81, 0x93, 0x81, 0xb, 0xd3, 0x84, 0x9b, 0x29, 0xd9, 
+	0x23, 0x14, 0x51, 0xc4, 0xac, 0x87, 0xd9, 0x62, 0x6, 0x2a, 
+	0x83, 0x12, 0x6, 0x53, 0x18, 0x94, 0x32, 0xd0, 0x14, 0x51, 
+	0xa6, 0x8, 0xaf, 0x22, 0xa6, 0x2a, 0x62, 0x9a, 0x22, 0x7c, 
+	0x2c, 0x2b, 0x67, 0x50, 0x51, 0x24, 0xa6, 0x8b, 0x4a, 0x6, 
+	0x33, 0x98, 0xf5, 0x7b, 00, 0x2, 0xcc, 0x56, 0x31, 0x98, 
+	0x89, 0x3d, 0x8b, 0x59, 0x4c, 0x5, 0x1d, 0x44, 0x17, 0xb7, 
+	0x30, 0xb8, 0x9e, 0x41, 0x7, 0x83, 0x4e, 0x6, 0x5d, 0xc, 
+	0x14, 0x6, 0x45, 0xc, 0x4a, 0x18, 0xf8, 0x19, 0x5c, 0x64, 
+	0x40, 0x6c, 0x6f, 0x36, 0x5b, 0xbe, 0x82, 0xd9, 0xd7, 0x19, 
+	0xbc, 0xc6, 0xe0, 0xd, 0x6, 0x6f, 0xc9, 0x62, 0x8e, 0x2c, 
+	0xae, 0x14, 0xe4, 0x19, 0xd1, 0x93, 0xa9, 0x58, 0x22, 0xde, 
+	0x9a, 0xea, 0x13, 0xe4, 0x6d, 0xd9, 0x13, 0x19, 0x89, 0x2c, 
+	0x1a, 0x88, 0xc4, 0xfb, 0x16, 0x75, 0xa6, 0x93, 0xb1, 0x78, 
+	0xdf, 0x4a, 0x41, 0x25, 0x8d, 0x89, 0x78, 0x2a, 0x1d, 0x89, 
+	0xa7, 0xb7, 0x45, 0x6, 0x86, 0x75, 0xcc, 00, 0x1f, 0x6f, 
+	0x8a, 0xc4, 0x6, 0xf4, 0xa8, 0x20, 0xd1, 0xc, 0x6b, 0x44, 
+	0x82, 0xdc, 0x6d, 0x89, 0xf5, 0xc3, 0xe9, 0x7e, 0xe6, 0x84, 
+	0x20, 0x79, 0x5b, 0xbc, 0x27, 0xc3, 0x4a, 0x88, 0xa6, 0xc5, 
+	0xb6, 0x6f, 0x86, 0x39, 0x8b, 0xce, 0x58, 0x98, 0x62, 0xf1, 
+	0x5d, 0x89, 0x44, 0x6b, 0x24, 0xbe, 0x5f, 0x50, 0x59, 0x53, 
+	0x32, 0x32, 0xa8, 0x77, 0xf, 0xf7, 0xf6, 0xea, 0xc9, 0xad, 
+	0x43, 0xd1, 0x48, 0x1a, 0x6b, 0x4e, 0xed, 0xd4, 0xd3, 0x8d, 
+	0x89, 0x81, 0xc4, 0x70, 0xb2, 0x35, 0x32, 0xb4, 0x21, 0x8e, 
+	0xad, 0xe9, 0x29, 0x41, 0xce, 0x6, 0x7d, 0x60, 00, 0x16, 
+	0x3b, 0xf5, 0x24, 0xbc, 0x68, 0x1c, 0x4e, 0x77, 0xe9, 0xfb, 
+	0xd2, 0xbc, 0xa4, 0x3, 0x66, 0x31, 0x63, 0x4b, 0x6c, 0x9f, 
+	0x3e, 0xd0, 0x94, 0x48, 0xe, 0x46, 0xd2, 0x30, 0xd1, 0x14, 
+	0xdb, 0x77, 0xa9, 0x9, 0x15, 0x6a, 0x1b, 0xe2, 0x3d, 0x89, 
+	0x28, 0x7c, 0x5, 0x3b, 0xfd, 0x92, 0xb5, 0x3b, 0xf4, 0x5b, 
+	0x87, 0xf5, 0x14, 0xe6, 0x2b, 0x9b, 0xf5, 0xfd, 0x1b, 0x46, 
+	0xf4, 0xb8, 0xb1, 0x80, 0x13, 0x33, 0xb7, 0x24, 0x62, 0xf1, 
+	0xb4, 0x9e, 0xcc, 0xca, 0x5c, 0x1c, 0xaa, 0x81, 0x18, 0xb8, 
+	0x9c, 0x9d, 0xb8, 0x5, 0x15, 0x67, 0xec, 0x77, 0x44, 0x46, 
+	0x5, 0x69, 0x19, 0xae, 0x31, 0x31, 0xb4, 0xbf, 0x43, 0xef, 
+	0x49, 0xe7, 0x2a, 0x74, 0x6c, 0x80, 0xd, 0x5b, 0xc1, 0xe0, 
+	0x4b, 0x33, 0xfc, 0x26, 0x98, 0x44, 0xc8, 0xe0, 0x76, 0x7f, 
+	0x82, 0x37, 0xe4, 0x1c, 0x4a, 0x24, 0x19, 0xa5, 0x12, 0x3d, 
+	0x7b, 0x11, 0x35, 0x33, 0x75, 0x71, 0x3d, 0xbd, 0xa8, 0x13, 
+	0x2, 0x3d, 0x8d, 0xcc, 0x49, 0x31, 0xb8, 0x54, 0x69, 0xe, 
+	0xc4, 0x12, 0x8b, 0xae, 0x8d, 0xa4, 0x23, 0xcd, 0xf1, 0xa1, 
+	0xe1, 0x34, 0x52, 0xab, 0x47, 0x6, 0x59, 0x21, 0x1, 0x85, 
+	0xf2, 0xac, 0x42, 0xfb, 0x70, 0x3a, 0x77, 0x54, 0x8b, 0xc5, 
+	0xdb, 0x38, 0x78, 0x3, 0x5b, 0x92, 0x89, 0x74, 0xa2, 0x27, 
+	0x81, 0x50, 0x8b, 0x9d, 0xf8, 0x8f, 0x60, 0xcb, 0x2d, 0x23, 
+	0xf1, 0x9e, 0x91, 0x98, 0x3e, 0xaa, 0x27, 0xa1, 0x58, 0x9c, 
+	0x32, 0x12, 0xd0, 0x1a, 0xd9, 0x93, 0x48, 0xda, 0x5c, 0x2c, 
+	0x6e, 0x70, 0x51, 0x3d, 0xb5, 0x37, 0x9d, 0x18, 0x6a, 0x43, 
+	0x5c, 0x61, 0xb2, 0xd7, 0x8e, 0xef, 0xf6, 0x58, 0x34, 0xdd, 
+	0x8f, 0x8d, 0xe7, 0x88, 0x36, 0xe9, 0xb1, 0xbe, 0x7e, 0xf8, 
+	0xa4, 0x76, 0xc7, 0xd2, 0xa9, 0x2d, 0x7a, 0xd2, 0x48, 0xa0, 
+	0x20, 0x57, 0x54, 0x1f, 0x62, 0xd5, 0xa2, 0xee, 0x58, 0xdf, 
+	0x86, 0x78, 0x34, 0x16, 0x89, 0xa3, 0xa, 0xd3, 0xc9, 0x61, 
+	0xdd, 0xcc, 0x27, 0x8a, 0x2f, 0xa9, 0x47, 0x5b, 0x23, 0xfb, 
+	0x90, 0xa4, 0xbe, 0xa4, 0xae, 0xc7, 0xd, 0x52, 0xee, 0x46, 
+	0xb5, 0x9a, 0x42, 0x8c, 0x76, 0xf6, 0xc7, 0x7a, 0x61, 0xd8, 
+	0x63, 0x8c, 0x5b, 0x4c, 0x11, 0x6b, 0x58, 0xb4, 0x3a, 0x6c, 
+	0x64, 0xbb, 0x8d, 0x33, 0x82, 0x98, 0x14, 0xf, 0x5b, 0xc9, 
+	0xef, 0x49, 0xdf, 0x90, 0xc7, 0xed, 0xc8, 0xe3, 0xb6, 0xe7, 
+	0x71, 0x9b, 0x70, 0x80, 0x6c, 0x2e, 0x93, 0x36, 0xd8, 0xee, 
+	0xb1, 0x52, 0xdd, 0x99, 0xec, 0xb9, 0x21, 0x9f, 0x85, 0x39, 
+	0x45, 0xe7, 0x2, 0x6a, 0x18, 0xee, 0x45, 0x3a, 0x76, 0x35, 
+	0xc0, 0x60, 0x86, 0x6f, 0xd1, 0xe1, 0x66, 0xf1, 0x90, 0x59, 
+	0x65, 0xad, 0x91, 0x14, 0x92, 0xac, 0x26, 0x6, 0xa2, 0xad, 
+	0xb0, 0xda, 0x1b, 0xc3, 0xa1, 0x85, 0xdb, 0xab, 0x62, 0xf1, 
+	0x58, 0x7a, 0x8d, 0xa0, 0xd9, 0xd5, 0x97, 0x1e, 0xdc, 0xe6, 
+	0x9c, 0x14, 0x2d, 0xd8, 0x86, 0x3a, 0x69, 0x4c, 0x44, 0x91, 
+	0x81, 0xd2, 0x96, 0x58, 0x5c, 0x6f, 0x1b, 0x1e, 0xec, 0xd6, 
+	0x93, 0x5d, 0x91, 0x6e, 0x2e, 0x27, 0xcf, 0x86, 0x7d, 0x3d, 
+	0x88, 0x2f, 0x7a, 00, 0x4c, 0xba, 0x7a, 0x6, 0x12, 0x29, 
+	0x8, 0x1d, 0xd5, 0x3c, 0x67, 0xa, 0x2a, 0x21, 0xba, 0x2d, 
+	0xa7, 0x41, 0x94, 0x8e, 0x26, 0x63, 0x69, 0x3d, 0x57, 0x62, 
+	0xa8, 0xf0, 0xf9, 0xed, 0xec, 0xe9, 0xd7, 0x7, 0xcd, 0x99, 
+	0xcd, 0x19, 0x45, 0xf3, 0x38, 0x34, 0x63, 0x93, 0x96, 0xa2, 
+	0x79, 0x52, 0x4d, 0x81, 0xcf, 0x16, 0xb4, 0xea, 0xa9, 0x54, 
+	0xa4, 0x4f, 0xef, 0xda, 0x3f, 0xa4, 0x5b, 0xf2, 0x49, 0x7a, 
+	0x40, 0x60, 0x52, 0xb9, 0x11, 0xf8, 0x28, 0x6a, 0x40, 0xe5, 
+	0x61, 0xfb, 0x50, 0x55, 0x19, 0x1b, 0xf8, 0x23, 0xc7, 0xb9, 
+	0xba, 0x19, 0xbf, 0x9d, 0xec, 0xe5, 0x54, 0x43, 0xb5, 0xb0, 
+	0x5f, 0x94, 0x40, 0x61, 0xe7, 0xce, 0x66, 0xe3, 0xc7, 0x5a, 
+	0x65, 0x19, 0xad, 0x9c, 0x76, 0xe1, 0xae, 0xde, 0x95, 0x3b, 
+	0x98, 0xdb, 0x11, 0x60, 0xd6, 0x4a, 0x4a, 0x64, 0x34, 0xbd, 
+	0xc8, 0x10, 0x19, 0x69, 0x28, 0x31, 0x34, 0x33, 0xbd, 0x4, 
+	0x1, 0xaf, 0x36, 0x37, 0x51, 0x6e, 0xc8, 0x33, 0xc9, 0xcd, 
+	0x8c, 0x73, 0x93, 0xab, 0x36, 0x56, 0xf0, 0x74, 0xa2, 0xd2, 
+	0x7b, 0xf4, 0x26, 0xa3, 0x3, 0x94, 0x24, 0x7b, 0xbb, 0x8d, 
+	0x43, 0xb9, 0x90, 0x57, 0x50, 0xe9, 0x51, 0x3a, 0xa3, 0xd2, 
+	0x17, 0xe9, 0x2f, 0x54, 0xfa, 0x2b, 0xfa, 0x6b, 0x95, 0x4e, 
+	0x53, 0x4c, 0xa5, 0xbf, 0xa4, 0xc3, 0x2a, 0xfd, 0x19, 0xf5, 
+	0xaa, 0xf4, 0x59, 0x8a, 0x21, 0x21, 0x5, 0xed, 0x1, 0x93, 
+	0xc4, 0x5c, 0x95, 0x3e, 0x47, 0x9f, 0x17, 0x54, 0x71, 0x99, 
+	0xe, 0x21, 0xc8, 0x9f, 0x19, 0x69, 0x30, 0x62, 0xa8, 0x47, 
+	0x73, 0x46, 0x55, 0x31, 0x4f, 0xcc, 0x67, 0x33, 0xd5, 0xc, 
+	0x16, 0xa8, 0xf4, 0x5, 0xba, 0x43, 0x15, 0x21, 0x11, 0x56, 
+	0xe9, 0xcf, 0xe9, 0x4e, 0x95, 0xfe, 0x86, 0xce, 0x20, 0x8, 
+	0x76, 0x5d, 0x66, 0xcb, 0x4c, 0x16, 0x35, 0xaa, 0xa8, 0xc5, 
+	0x96, 0xc5, 0x42, 0xb1, 0x28, 0xa3, 0x82, 0x35, 0x9a, 0xdb, 
+	0xb3, 0x2a, 0x88, 0x47, 0x61, 0x41, 0x9b, 0x3b, 0x40, 0xc0, 
+	0x36, 0xa1, 0xfb, 0x5, 0x55, 0x51, 0x27, 0xae, 0x42, 0x2, 
+	0x82, 0xdc, 0x4, 0xd, 0xee, 0x6a, 0x54, 0x4e, 0x30, 0x96, 
+	0xa, 0xc6, 0x13, 0xe9, 0x60, 0x24, 0x1e, 0xec, 0x68, 0x6a, 
+	0x8, 0x9a, 0x8d, 0x48, 0x15, 0xf5, 0x62, 0x31, 0x6f, 0xf1, 
+	0x1a, 0x95, 0xbe, 0xc4, 0x91, 0xb9, 0x8b, 0xe3, 0xa1, 0xb2, 
+	0x42, 0x5d, 0x5d, 0xfd, 0x42, 0xfc, 0x3d, 0xaa, 0x58, 0x22, 
+	0x96, 0xca, 0x62, 0x99, 0x2a, 0x96, 0x8b, 0x45, 0xaa, 0x58, 
+	0x41, 0x8f, 0xa3, 0x55, 0x15, 0x6e, 0x80, 0x4d, 0xa0, 0xd9, 
+	0x2d, 0xdc, 0x1a, 0xdf, 0x1b, 0x4f, 0x8c, 0xc6, 0x83, 0x11, 
+	0x14, 0x3d, 0x52, 0x14, 0xeb, 0x89, 0xf0, 0x8e, 0x83, 0x29, 
+	0xa3, 0xfe, 0x83, 0xbd, 0xc9, 0xc4, 0x60, 0xce, 0xe2, 0xd8, 
+	0xda, 0x72, 0x7a, 0x41, 0x15, 0xab, 0xe8, 0x71, 0x95, 0x8e, 
+	0xf0, 0xea, 0x5f, 0x6, 0x10, 0xab, 0x99, 0xbd, 0x87, 0xd9, 
+	0xaf, 0x30, 0x38, 0xca, 0xa9, 0xbb, 0x97, 0xc1, 0x57, 0x99, 
+	0xbd, 0x8f, 0xc1, 0x31, 0x6, 0x5f, 0x63, 0x70, 0x9c, 0xc1, 
+	0x18, 0x4f, 0x5b, 0x23, 0xd6, 0xaa, 0x74, 0x37, 0xf5, 0xca, 
+	0x62, 0x1d, 0x18, 0xd8, 0x10, 0xeb, 0x45, 0x83, 0x4a, 0x27, 
+	0x58, 0xe1, 0x7e, 0x6, 0xf, 0x30, 0x38, 0xc9, 0xe0, 0xeb, 
+	0xc, 0x1e, 0x64, 0x4f, 0xab, 0x73, 0xe, 0x41, 0xd0, 0xec, 
+	0x4f, 0xc1, 0x24, 0xce, 0x8, 0x3c, 0x1b, 0xd0, 0x83, 0xe9, 
+	0x44, 0x22, 0x38, 0x10, 0x49, 0xf6, 0xe9, 0x2b, 0x82, 0x68, 
+	0xed, 0xe8, 0x96, 0xae, 0x60, 0x24, 0x1d, 0xac, 0x6, 0x5d, 
+	0x83, 0x3f, 0xb2, 0x7a, 0x8a, 0xd, 0x3d, 0x44, 0x31, 0x59, 
+	0x34, 0xaa, 0xe2, 0x5a, 0xde, 0xc5, 0x6, 0x96, 0x3c, 0xcc, 
+	0xe0, 0x79, 0x76, 0xcd, 0xcb, 0xb2, 0x26, 0x6, 0xcb, 0xc5, 
+	0x46, 0x55, 0x6c, 0xe2, 0x81, 0xe7, 0xe8, 0x82, 0x4a, 0x8f, 
+	0xf0, 0xea, 0x4a, 0xa6, 0x54, 0xf3, 0x22, 0xda, 0xde, 0xbd, 
+	0xc7, 0x38, 0xa5, 0xe5, 0x93, 0x35, 0x2e, 0xa3, 0xf3, 0xf4, 
+	0xe9, 0xe9, 0xbc, 0x4a, 0xac, 0xa8, 0x5e, 0x90, 0xbd, 0xa7, 
+	0xf2, 0x2f, 0xb1, 0xca, 0xea, 0x49, 0x7, 0xc, 0x33, 0xd3, 
+	0x27, 0x1f, 0xe3, 0xa1, 0x52, 0xac, 0x90, 0x7b, 0xe1, 0xb1, 
+	0xf2, 0x82, 0xcb, 0x5d, 0x85, 0x39, 0x65, 0xdc, 0xd5, 0x9f, 
+	0x4c, 0x8c, 0x9a, 0x9d, 0xb3, 0x74, 0x8, 0x1b, 0x86, 0x52, 
+	0xa4, 0x67, 0x6f, 0x57, 0x32, 0xd2, 0x3, 0x49, 0x91, 0xd1, 
+	0xa3, 0x86, 0x7, 0x6, 0xf6, 0xf3, 0xc9, 0xde, 0xd5, 0xc0, 
+	0xb, 0xb9, 0x23, 0x43, 0x43, 0x7a, 0x1c, 0x2f, 0x9d, 0x9a, 
+	0x49, 0x9c, 0x5d, 0x70, 0x89, 0xc8, 0xac, 0x73, 0xac, 0xe9, 
+	0xc7, 0xc1, 0xbf, 0xfc, 0xa8, 0x92, 0x4e, 0x98, 0x12, 0x41, 
+	0xd3, 0xaa, 0x2f, 0xd5, 0x83, 0x86, 0x6f, 0xb2, 0xe5, 0xb6, 
+	0xf1, 0x1d, 0xa9, 0xa7, 0x1b, 0xf6, 0xa7, 0xf9, 0xf5, 0xc3, 
+	0x4d, 0x70, 0x57, 0x83, 0x11, 0xa9, 0x69, 0x93, 0x79, 0xe, 
+	0x27, 0x8c, 0xb6, 0x84, 0xdb, 0x94, 0x1d, 0x6b, 0xe6, 0x86, 
+	0x85, 0x9e, 0x67, 0xce, 0x28, 0x63, 0xd1, 0xd6, 0x78, 0x2a, 
+	0xd6, 0x17, 0xe7, 0xfb, 0xd5, 0x78, 0x8c, 0x68, 0xb9, 0x32, 
+	0x5e, 0x4, 0xfd, 0x8b, 0x45, 0x56, 0x34, 0x70, 0x31, 0x54, 
+	0x66, 0xd6, 0x41, 0x27, 0x4b, 0xf3, 0x55, 0x90, 0xb3, 0x98, 
+	0xc2, 0xaa, 0xe6, 0x2c, 0xdc, 0x22, 0xb8, 0xb, 0xa7, 0xe4, 
+	0x37, 0x50, 0x7e, 0xd1, 0xc0, 0x54, 0xd1, 0xa0, 0x7d, 0x5, 
+	0xa, 0x4, 0x5a, 0xe6, 0x1d, 0x19, 0x5b, 0x72, 0xec, 0xd5, 
+	0xf7, 0x53, 0x10, 0x8f, 0xf8, 0x28, 0x9e, 0x5e, 0xcb, 0xf1, 
+	0x95, 0xa0, 0x53, 0x2f, 0xde, 0xa6, 0x7d, 0xfc, 0xa, 0xa5, 
+	0x39, 0xe0, 0xfb, 0x29, 0x96, 0xe5, 0xf7, 0x80, 0xdf, 0x9b, 
+	0xc3, 0xf, 0x80, 0x1f, 0xcc, 0xe1, 0xe3, 0xe0, 0x13, 0x5, 
+	0xfa, 0x43, 0x5, 0xfa, 0xb7, 0x16, 0xe8, 0x27, 0xb, 0xf4, 
+	0x53, 0x5, 0xfa, 0xe9, 0x2, 0xfd, 0xe1, 0x1c, 0x7e, 0x4, 
+	0xfc, 0x68, 0xc1, 0xfc, 0x7d, 0x5, 0xf3, 0xf7, 0x17, 0xcc, 
+	0xff, 0x58, 0xc1, 0xfc, 0x8f, 0xe7, 0xf0, 0x9f, 00, 0x7f, 
+	0x5b, 0xe, 0x7f, 00, 0xfc, 0xc1, 0x1c, 0xfe, 0x93, 0xe0, 
+	0x3f, 0x55, 0xb0, 0xde, 0xa7, 0xb, 0xd6, 0xfb, 0x4c, 0xc1, 
+	0x7a, 0xb7, 0x17, 0xd8, 0x3f, 0x94, 0x67, 0x9f, 0xf8, 0xbe, 
+	0xe1, 0xcf, 0x1, 0xbe, 0x72, 0xc, 0x8c, 0xeb, 0xc5, 0xc0, 
+	0xb8, 0x1a, 0xc, 0x8c, 0x8b, 0xc1, 0xc0, 0xb8, 0xab, 0xc, 
+	0x8c, 0x4b, 0xca, 0xc0, 0x5f, 0xb2, 0xf4, 0xef, 0xb2, 0xf0, 
+	0xdd, 0x96, 0x9d, 0x23, 0x16, 0xff, 0x65, 0xb, 0xdf, 0x63, 
+	0xe1, 0xaf, 0x58, 0xf8, 0xa8, 0x65, 0xe7, 0x5e, 0xb, 0x7f, 
+	0xd5, 0x92, 0xdf, 0x67, 0xe1, 0x63, 0x16, 0xfe, 0x9a, 0x85, 
+	0x8f, 0x5b, 0x78, 0xcc, 0xc2, 0x27, 0x2c, 0x7c, 0xbf, 0x85, 
+	0x1f, 0xb0, 0xf0, 0x49, 0xb, 0x7f, 0xdd, 0xc2, 0xf, 0x5a, 
+	0xf8, 0x94, 0x85, 0x1f, 0xb2, 0x30, 0xae, 0x5b, 0x3, 0x3f, 
+	0x6c, 0xf1, 0xa7, 0x2d, 0xfc, 0x88, 0x81, 0xbd, 0xf8, 0x3f, 
+	0x4a, 0xdf, 0x40, 0x6c, 0xbe, 0x69, 0xac, 0x29, 0x93, 0x13, 
+	0x78, 0x77, 0xe8, 0x2c, 0x89, 0x90, 0x63, 0x9c, 0xa4, 0x90, 
+	0xb6, 0xe9, 0xbc, 0x32, 0x4e, 0xe, 0x66, 0x9c, 0xa1, 0xda, 
+	0x71, 0x72, 0x85, 0xc2, 0xe3, 0xe4, 0xe, 0x5, 0xc6, 0x49, 
+	0xe, 0x9d, 0x23, 0x65, 0x47, 0xe8, 0xc, 0xb8, 0x33, 0x24, 
+	0x9f, 0xa5, 0xa2, 0x71, 0xf2, 0x40, 0x54, 0xbc, 0xe3, 0x1c, 
+	0xa9, 0x2c, 0xf6, 0x4c, 0x50, 0x49, 0xd9, 0x3a, 0x3a, 0x4b, 
+	0x53, 0xce, 0x52, 0xe9, 0x38, 0x69, 0x21, 0x53, 0x56, 0x36, 
+	0x4e, 0xde, 0xc7, 0x88, 0xbf, 0xc7, 0x18, 0x2e, 0xc4, 0x27, 
+	0x2e, 0xd1, 0x66, 0xac, 0xda, 0x48, 0x45, 0xe2, 0x8, 0x95, 
+	0x89, 0xe3, 0x54, 0x4e, 0x2d, 0xe4, 0xa7, 0x56, 0x9c, 0x92, 
+	0x36, 0x9a, 0x4b, 0xed, 0xb4, 0x8c, 0xb6, 0x50, 0x17, 0x75, 
+	0xd0, 0x2d, 0xd4, 0x49, 0xdf, 0x82, 0xb6, 0x13, 0x73, 0x2b, 
+	0x80, 0x71, 0x7b, 0x83, 0xe2, 0x7d, 0x2f, 0x3, 0x96, 0x80, 
+	0x35, 0x73, 0x89, 0xa9, 0xa7, 0x48, 0x69, 0x9, 0x4f, 0x90, 
+	0xef, 0x31, 0xc8, 0x9, 0x3e, 0x79, 0x68, 0x9a, 0xb5, 0xde, 
+	0x14, 0xe2, 0x4f, 0x9e, 0x1b, 0x20, 0xd9, 0x49, 0xa5, 0x74, 
+	0x23, 0xe8, 0x71, 0x58, 0x31, 0xbc, 0x17, 0x1b, 0x61, 0x19, 
+	0x56, 0x44, 0x85, 0xa6, 0x9e, 0x57, 0x5a, 0x60, 0x4a, 0x83, 
+	0x8d, 0xf2, 0xb0, 0xa3, 0x5e, 0xeb, 0x18, 0xa3, 0x23, 0x61, 
+	0x67, 0xbd, 0xd6, 0x34, 0x46, 0x77, 0x86, 0x5d, 0xf5, 0x5a, 
+	0xc3, 0x18, 0x1d, 0xa, 0xbb, 0xeb, 0xb5, 0xe0, 0x18, 0xdd, 
+	0x16, 0x96, 0xeb, 0xb5, 0xba, 0x13, 0x34, 0xcc, 0x78, 0xf9, 
+	0x3, 0x34, 0x18, 0x56, 0xc, 0x5e, 0x67, 0xc, 0xfe, 0xa6, 
+	0xb0, 0xe6, 0x36, 0x4, 0x5d, 0x6, 0x1, 0xc9, 0xe6, 0xb0, 
+	0x6, 0xd5, 0x85, 0x63, 0xd4, 0x10, 0xd6, 0x4c, 0xdd, 0xe5, 
+	0x6, 0x81, 0xa1, 0xba, 0xb0, 0x56, 0x64, 0x48, 0xe6, 0x1b, 
+	0x4, 0x24, 0x33, 0xc3, 0x9a, 0xc7, 0x90, 0xf8, 0xc, 0x2, 
+	0x12, 0x35, 0xac, 0x15, 0xd7, 0x6b, 0x9e, 0xe3, 0x74, 0xf5, 
+	0x39, 0xaa, 0x40, 0xac, 0xa7, 0xef, 0x38, 0x4b, 0x95, 0xde, 
+	0x19, 0x13, 0xe4, 0xe7, 0x54, 00, 0x79, 0x3, 0x26, 0x2d, 
+	0x4f, 0x50, 0x95, 0x77, 0x26, 0xe8, 0x9, 0x9a, 0x75, 0x96, 
+	0x82, 0x4f, 0x85, 0x8c, 0x9d, 0x46, 0xb5, 0x68, 0xbf, 0xb1, 
+	0xc5, 0xa8, 0xe6, 0xe9, 0xdf, 0x6d, 0x6e, 0x2e, 0xba, 0x7b, 
+	0x9c, 0x66, 0x87, 0xcc, 0xdd, 0x18, 0xe3, 0xc6, 0x2e, 0x2c, 
+	0x5, 0x8f, 0xa5, 0x70, 0x85, 0x9d, 0xb4, 0x99, 0x8, 0x29, 
+	0xa1, 0xfc, 0x5d, 0x68, 0x56, 0x25, 0x38, 0x94, 0xa7, 0xd0, 
+	0x74, 0x7e, 0x8c, 0xc6, 0xf1, 0x11, 0xd, 0x8b, 0x72, 0x1c, 
+	0xf2, 0xdc, 0x24, 0x4d, 0x64, 0xc2, 0x4b, 0xab, 0xa0, 0xcf, 
+	0x49, 0x9a, 0x6e, 0x84, 0xd7, 0x3b, 0xc7, 0xa1, 0xa9, 0x61, 
+	0xc7, 0x4, 0x5d, 0x89, 0xad, 0x7a, 0x11, 0xe8, 0xb9, 0xb6, 
+	0x7d, 0xaf, 0x51, 0x84, 0x7, 0xa0, 0x7f, 0x10, 0x49, 0xfa, 
+	0x24, 0xec, 0x7c, 0x2a, 0xcf, 0xe6, 0x59, 0x7a, 0xdc, 0xb2, 
+	0x79, 0x2f, 0xb9, 0xd, 0xdd, 0x5e, 0xce, 0xd6, 0x4, 0xcd, 
+	0x5b, 0xe5, 0x37, 0x8b, 0xbd, 0x81, 0xcc, 0x1f, 0xaf, 0xe7, 
+	0xc7, 0x7f, 0x1d, 0xff, 0x2d, 0x9d, 0xd5, 0x81, 0xf3, 0x4a, 
+	0x1b, 0xd3, 0xb5, 0xc8, 0xae, 0x19, 0xc3, 0xf9, 0x3b, 0x6a, 
+	0x1d, 0x67, 0xa9, 0x9a, 0xa3, 0xe4, 0x3f, 0x9d, 0x1b, 0xd6, 
+	0x5, 0x8, 0x1f, 0xe2, 0x57, 0x65, 0x85, 0x30, 0xbb, 0xc3, 
+	0x2b, 0x48, 0x1, 0xfc, 0x3c, 0xe0, 0x1d, 0x74, 0x25, 0x5a, 
+	0x45, 0xd, 0xe, 0x77, 0x1d, 0x5a, 0xc5, 0x32, 0x34, 0x8b, 
+	0x66, 0xb4, 0x84, 0xcd, 0x38, 0xfe, 0xb9, 0x3b, 0xfe, 0x76, 
+	0x36, 0xa, 0x73, 0x81, 0xb9, 0x28, 0x8b, 0xd8, 0x6d, 0xb8, 
+	0x1f, 0xb2, 0xdd, 0xf6, 0x18, 0xdb, 0x45, 0xed, 0xe2, 0xc4, 
+	0xe6, 0x4e, 0x7e, 0x22, 0x5b, 0xa1, 0x35, 0x8, 0x9, 0xbb, 
+	0x7b, 0x21, 0x64, 0xfa, 0x82, 0xa3, 0x58, 0x63, 0x93, 0xb5, 
+	0x16, 0xb9, 0x70, 0x9c, 0x16, 0xd9, 0x64, 0x5d, 0x86, 0x3c, 
+	0x4a, 0xb2, 0xf3, 0x14, 0x39, 0x71, 0x90, 0xaf, 0xba, 0x54, 
+	0x74, 0xb5, 0x6d, 0xa6, 0xde, 0x26, 0x17, 0xdb, 0xe4, 0x35, 
+	0xb6, 0xc5, 0x25, 0x36, 0xb9, 0xd4, 0x26, 0x97, 0xb9, 0xed, 
+	0x43, 0xb3, 0x7c, 0xfb, 0x64, 0xb1, 0xe, 0x65, 0x3, 0x3d, 
+	0x4e, 0x2b, 0x42, 0x4e, 0x74, 0x17, 0xdb, 0xf7, 0xe, 0x9c, 
+	0x50, 0x42, 0x5a, 0x8b, 0x11, 0xaa, 0x72, 0x78, 0x3c, 0x9b, 
+	0xce, 0x21, 0xa8, 0xe7, 0x69, 0x2d, 0x7d, 0x7, 0x63, 0x4f, 
+	0xd2, 0x4d, 0xf4, 0x14, 0x8a, 0xed, 0x6f, 0x71, 0x5b, 0x3d, 
+	0x8d, 0xc2, 0xf8, 0x2e, 0x42, 0xff, 0xc, 0x3a, 0xf0, 0xf7, 
+	0x10, 0xe6, 0x67, 0xd1, 0x21, 0xbf, 0x8f, 0x2e, 0xf7, 0x1c, 
+	0x3a, 0xda, 0x5, 0x9c, 0xe6, 0xe7, 0x31, 0xfa, 0x77, 0xe0, 
+	0x5e, 0xcc, 0x8b, 0xe1, 0xb9, 0x6c, 0xc9, 0x4, 0x21, 0xe1, 
+	0x4, 0x28, 0xe6, 0x16, 0x57, 0x9e, 0xce, 0xee, 0xc1, 0x6d, 
+	0xc8, 0x5f, 0xc9, 0x9b, 0x77, 0x3e, 0x9b, 0xb8, 0xc5, 0x56, 
+	0xe2, 0xa6, 0x99, 0xf3, 0x56, 0x6d, 0xb7, 0x63, 0xb3, 0xda, 
+	0xf6, 0xc3, 0xec, 0x2f, 0x3f, 0x47, 0xe, 0x5f, 0xa5, 0xa9, 
+	0xf4, 0x5a, 0x9e, 0xad, 0xef, 0x64, 0x6d, 0xfd, 0xc8, 0x90, 
+	0xa1, 0xd7, 0xdb, 0x36, 0xd6, 0xd8, 0xe4, 0x5a, 0x9b, 0x5c, 
+	0x67, 0x93, 0xeb, 0x2d, 0x72, 0xde, 0x38, 0x35, 0x80, 0x5a, 
+	0x83, 0xff, 0xba, 0xdd, 00, 0x35, 0xf, 0xd0, 0x54, 0xa0, 
+	0xb5, 0xf8, 0xaf, 0x67, 0xbe, 0xf6, 0x24, 0x5d, 0x97, 0x5b, 
+	0xc2, 0x8d, 0x66, 0x37, 0x58, 0xc7, 0xdd, 0xe0, 0x5a, 0x93, 
+	0x5e, 0xcf, 0xf4, 0x6, 0x93, 0x5e, 0xc3, 0x74, 0x93, 0x49, 
+	0xaf, 0x65, 0x7a, 0xa3, 0xdd, 0x31, 0x6c, 0xb7, 0xcc, 0x7a, 
+	0x7f, 0x13, 0xe9, 0x79, 0xb, 0xe9, 0x79, 0x1b, 0xe9, 0x79, 
+	0x7, 0xe9, 0x79, 0x97, 0x96, 0xd2, 0xfb, 0xb4, 0x9d, 0x7e, 
+	0x89, 0xcb, 0xeb, 0x57, 0x79, 0xae, 0x3e, 0x99, 0x75, 0x75, 
+	0xa9, 0x15, 0xb6, 0xa, 0xdb, 0x93, 0x4d, 0x36, 0xd9, 0x5c, 
+	0x18, 0xb9, 0xdf, 0x60, 0x89, 0xdf, 0x62, 0x89, 0xdf, 0xe5, 
+	0x99, 0x7b, 0xa, 0x99, 0x37, 0xcd, 0xbd, 0x4, 0x19, 0x37, 
+	0x9f, 0x43, 0x9a, 0xe7, 0xbc, 0xb2, 0xc2, 0x5d, 0xe9, 0x76, 
+	0xb8, 0xbb, 0x2a, 0xdd, 0x4e, 0x9f, 0x2b, 0x53, 0xca, 0xe0, 
+	0x5c, 0x7e, 0x4d, 0xf9, 0x58, 0x19, 0x5d, 0x3c, 0x70, 0x18, 
+	0x8c, 0xdb, 0x9f, 0xa1, 0xe4, 0x40, 0x8e, 0x58, 0x9, 0x64, 
+	0x28, 0xcd, 0x5d, 0x95, 0x23, 0xd7, 0xe4, 0xaa, 0x2c, 0xa9, 
+	0xf8, 0x9c, 0xb9, 0x23, 0x45, 0x3e, 0xa7, 0x49, 0xf3, 0xc9, 
+	0xad, 0x74, 0xe7, 0x75, 0xac, 0x25, 0xe8, 0x83, 0x84, 0xde, 
+	0xe7, 0x16, 0xd3, 0xa9, 0x58, 0x54, 0x52, 0xa5, 0x98, 0x41, 
+	0xf3, 0x84, 0x9f, 0xea, 0x44, 0x80, 0x56, 0x8b, 0x2a, 0xda, 
+	0x28, 0x66, 0xd2, 0x56, 0x31, 0x8b, 0x76, 0x8b, 0x20, 0x25, 
+	0xc4, 0x6c, 0xfa, 0xb8, 0x98, 0x43, 0xb7, 0x8b, 0x2b, 0xf3, 
+	0x9c, 0x7c, 0x1a, 0x85, 0x6b, 0x3a, 0x79, 0x11, 0x32, 0x95, 
+	0x5b, 0x81, 0x36, 0xd, 0x4e, 0x16, 0x57, 0x16, 0x3b, 0xe0, 
+	0x56, 0xb1, 0xec, 0xc7, 0x36, 0x8a, 0x95, 00, 0x43, 0x6c, 
+	0xda, 0x76, 0xb8, 0x58, 0x93, 0x7d, 0xce, 0x5c, 0x56, 0xf1, 
+	0xb9, 0xec, 0x8d, 0x17, 0x63, 0xe3, 0xae, 0x2c, 0xed, 0xf1, 
+	0xb9, 0x73, 0x87, 0x8a, 0x7d, 0xee, 0x2c, 0xad, 0xfa, 0xe4, 
+	0xdc, 0xa1, 0x12, 0x9f, 0x9c, 0xa5, 0xa7, 0xf8, 0x14, 0x3, 
+	0x97, 0xfa, 0x8a, 0xc, 0xac, 0xf9, 0x3c, 0x56, 0x18, 0x8a, 
+	0xf3, 0xc2, 0xd0, 0x44, 0x65, 0x20, 0xaf, 0x42, 0x18, 0xea, 
+	0x11, 0x86, 0xc5, 0xb8, 0xcd, 0xaf, 0xa1, 0xa, 0xb1, 0x84, 
+	0xe6, 0x8a, 0xa5, 0xb4, 0x58, 0x2c, 0xa3, 0x46, 0x7c, 0x69, 
+	0xb6, 0xe3, 0xdb, 0xf5, 0x66, 0xb1, 0x92, 0xf6, 0xe0, 0x83, 
+	0x73, 0x3f, 0xbe, 0x32, 0xf, 0xe1, 0x2b, 0xf1, 0x4e, 0xb1, 
+	0x96, 0x8e, 0x88, 0x75, 0x74, 0x4c, 0x34, 0xd0, 0x83, 0xa2, 
+	0x31, 0x2f, 0x2c, 0xcf, 0xe0, 0x94, 0x9b, 0x61, 0x79, 0x11, 
+	0x32, 0x17, 0xf0, 0xe7, 0x64, 0x39, 0xd0, 0xbf, 0x1b, 0x8d, 
+	0xa5, 0xd6, 0xe1, 0xea, 0xaa, 0x75, 0xd9, 0x69, 0xad, 0x75, 
+	0x5b, 0x59, 0x75, 0x2c, 0x41, 0x2c, 0xb6, 0xd6, 0xca, 0x88, 
+	0xb, 0xae, 0x30, 0x9f, 0x73, 0xa1, 0x36, 0x3d, 0xa3, 0xa2, 
+	0xd8, 0x32, 0x2d, 0x23, 0xd3, 0xdc, 0xb6, 0x30, 0x6b, 0x4b, 
+	0xb3, 0x67, 0x9b, 0x92, 0xdb, 0x9d, 0xc2, 0xe7, 0xc, 0x9c, 
+	0xb8, 0xf8, 0x30, 0x3b, 0x5e, 0x9b, 0xe7, 0xf7, 0xd5, 0x9c, 
+	0x2e, 0x11, 0x23, 0x45, 0xec, 0x25, 0x55, 0xe0, 0x55, 0x2a, 
+	0x6, 0x69, 0xb6, 0x48, 0xd0, 0x7c, 0x31, 0x44, 0x2b, 0xc5, 
+	0xad, 0xf0, 0x39, 0x49, 0x51, 0x91, 0xa2, 0x11, 0xc8, 0xe, 
+	0x8a, 0x11, 0xfa, 0xac, 0x18, 0xcd, 0xf3, 0xf1, 0x59, 0x74, 
+	0x30, 0xb3, 0xc3, 0xdf, 0xd, 0xf, 0x71, 0xe, 0x44, 0x50, 
+	0x43, 0x3b, 0x6d, 0xd, 0x9f, 0xa1, 0xeb, 0xca, 0xc4, 0x47, 
+	0x63, 0x54, 0xcd, 0xed, 0xd2, 0x9, 0x76, 0xb3, 0xa6, 0x1c, 
+	0x38, 0x8a, 0xde, 0xe5, 0xb2, 0x58, 0x19, 0xdc, 0x8c, 0x90, 
+	0xc, 0xee, 0x14, 0x6e, 0x51, 0x43, 0xfd, 0xd7, 0x63, 0x18, 
+	0xe7, 0xe7, 0x5a, 0x78, 0x7, 0xeb, 0x7f, 0x78, 0x60, 0x9c, 
+	0x36, 0x33, 0xdf, 0x12, 0xe2, 0x9, 0x13, 0xc4, 0x56, 0xdb, 
+	0xee, 0x23, 0x25, 0xc, 0x59, 0x1b, 0xe8, 0x76, 0x8b, 0x6e, 
+	0x87, 0x5f, 0x8e, 0x10, 0xe6, 0xb4, 0xec, 0x74, 0xe2, 0xbe, 
+	0x6f, 0x51, 0xba, 0xa, 0x4, 0x60, 0x9d, 0x87, 0xb, 0x85, 
+	0x6c, 0x2c, 0x1b, 0xb4, 0x49, 0xc6, 0x2e, 0x37, 0xd0, 0xfe, 
+	0x47, 0x26, 0xb5, 0x67, 0x7, 0x9c, 0xf7, 0xb2, 0x2f, 0xd8, 
+	0x33, 0xc7, 0x9c, 0x15, 0x1d, 00, 0x2d, 0x13, 0xb4, 0xc5, 
+	0x8e, 0x7d, 0x37, 0xde, 0xf8, 0x24, 0x4e, 0x92, 0x4b, 0x3c, 
+	0x48, 0xa5, 0xe2, 0x14, 0x4d, 0x13, 0xf, 0xd1, 0x4c, 0x71, 
+	0x9a, 0xe6, 0x88, 0x47, 0xa9, 0x46, 0x7c, 0xb, 0x75, 0x87, 
+	0x26, 0x27, 0xc6, 0x51, 0x7b, 0x8f, 0x53, 0x9b, 0x78, 0x82, 
+	0x3a, 0xc5, 0x79, 0xda, 0x25, 0x9e, 0xa4, 0x3e, 0xf1, 0x14, 
+	0xa5, 0xc4, 0xd3, 0x38, 0x86, 0xdf, 0xa5, 0xa3, 0xe2, 0x19, 
+	0x1a, 0x17, 0xdf, 0xa3, 0x97, 0xc5, 0xb3, 0xf4, 0xb6, 0xf8, 
+	0xbe, 0x70, 0x88, 0x17, 0x85, 0x47, 0xbc, 0x24, 0x4a, 0xc5, 
+	0xf, 0xc4, 0x2c, 0xf1, 0xc3, 0xbc, 0x5c, 0x3d, 0x97, 0xcd, 
+	0xd5, 0xf3, 0x90, 0xe1, 0x36, 0x16, 0xb5, 0xd8, 0xf2, 0xf5, 
+	0xab, 0x1d, 0x6b, 0xcc, 0xf0, 0x1f, 0x3e, 0x4e, 0x25, 0x26, 
+	0x75, 0xd7, 0x18, 0xb9, 0x9c, 0x96, 0xf4, 0xae, 0xac, 0xf4, 
+	0xee, 0x31, 0xba, 0x3e, 0x60, 0xbc, 0x52, 0x5a, 0x88, 0x1c, 
+	0x6f, 0xe2, 0xff, 0x81, 0xf1, 0xe, 0x36, 0xf8, 0xec, 0x7f, 
+	0x85, 0x71, 0x9a, 0xf8, 0xd6, 0xc1, 0xc3, 0xc5, 0xdb, 0xb1, 
+	0xfa, 0x14, 0x1d, 0xf3, 0x76, 0x2, 0xde, 0xe3, 0xed, 0x2, 
+	0x3c, 0xec, 0xdd, 0xa, 0x78, 0x87, 0x77, 0x1b, 0xe0, 0xa1, 
+	0xc7, 0x2, 0x5a, 0xf0, 0x7e, 0xba, 0x99, 0x93, 0xeb, 0x42, 
+	0x35, 0x78, 0x6f, 0x97, 0x76, 0x7, 0xb4, 0x83, 0x63, 0x34, 
+	0xa0, 0xdd, 0x82, 0xe1, 0xde, 0xc0, 0xc3, 0xbc, 0xd6, 0x5a, 
+	0xc3, 0x3, 0x32, 0xda, 0x78, 0x88, 0x9f, 0x1f, 0xf8, 0xd7, 
+	0x19, 0x6f, 0xe, 0x6e, 0x5e, 0xe6, 0x23, 0x69, 0x95, 0x77, 
+	0x3b, 0x26, 0x78, 0xbd, 0x37, 00, 0xaa, 0xde, 0x1d, 0x80, 
+	0x6e, 0xef, 0x4e, 0xc0, 0x39, 0x81, 0x32, 0x81, 0xcf, 0x8f, 
+	0x52, 0xc3, 0x6a, 0xb9, 0x77, 0x17, 0x44, 0x5a, 0xc0, 0x7b, 
+	0xe3, 0x9, 0x2a, 0xa, 0x78, 0x77, 0x9d, 0x24, 0xe7, 0x63, 
+	0x79, 0xd5, 0x15, 0xa, 0xe0, 0xb5, 0x74, 0x53, 0xd5, 0x9f, 
+	0x4e, 0xdc, 0x17, 0x70, 0xab, 0x90, 0xf8, 0x29, 0x12, 0xf7, 
+	0x33, 0x92, 0xc5, 0xab, 0xe4, 0x17, 0xaf, 0x51, 0x95, 0x78, 
+	0x9d, 0xae, 0x12, 0x6f, 0xa3, 0x4f, 0xbe, 0x43, 0xbd, 0xe2, 
+	0x5d, 0x1a, 0x10, 0xef, 0x51, 0x52, 0xbc, 0x4f, 0xfb, 0xc4, 
+	0x7, 0x74, 00, 0xaf, 0xa3, 0x83, 0x92, 0x4a, 0x87, 0xa4, 
+	0x12, 0xfa, 0xa2, 0x34, 0x85, 0xe, 0x4b, 0xa5, 0x74, 0x8f, 
+	0xa4, 0xd1, 0x31, 0xc9, 0x4b, 0x17, 0xa4, 0xa9, 0xf4, 0xb2, 
+	0x34, 0x8d, 0x5e, 0x91, 0x7c, 0xf4, 0x13, 0xa9, 0x9c, 0x5e, 
+	0x95, 0x66, 0xd0, 0x1b, 0xd2, 0x4c, 0x7a, 0x4f, 0x9a, 0x45, 
+	0x1f, 0x4a, 0xf3, 0xe9, 0xa2, 0x54, 0x8d, 0x2f, 0x84, 0x1a, 
+	0xe1, 0x92, 0x16, 0x8a, 0x12, 0xa9, 0x4e, 0x4c, 0x95, 0x96, 
+	0x88, 0xa, 0x69, 0xa9, 0x8, 0x48, 0x2b, 0x44, 0x8d, 0xb4, 
+	0xb2, 0x20, 0xc1, 0x17, 0xac, 0x86, 0xf3, 0xb, 0xf3, 0x30, 
+	0xd2, 0xa3, 0x5, 0x25, 0x2a, 0x17, 0xd6, 0x6c, 0x20, 0xdb, 
+	0x7d, 0xb, 0x6, 0xfe, 0xb4, 0xc0, 0x9f, 0x6d, 0x4d, 0x97, 
+	0xc, 0x68, 0x97, 0x1b, 0xb8, 0xcc, 0xc9, 0xb1, 0x6e, 0x3a, 
+	0x3b, 0xc2, 0xf3, 0x38, 0xcd, 0xd2, 0x6, 0x2a, 0x93, 0x9a, 
+	0x28, 0x24, 0x6d, 0xa4, 0x95, 0xd2, 0x26, 0x6a, 0x91, 0x9a, 
+	0x49, 0x97, 0xae, 0x43, 0x34, 0x37, 0x23, 0x7a, 0x2d, 0xf4, 
+	0x88, 0xd4, 0x9a, 0xe7, 0xfd, 0xf3, 0xf4, 0x82, 0xe5, 0xfd, 
+	0xb7, 0xcd, 0xcf, 0x21, 0xba, 0xcd, 0xef, 0x3a, 0x80, 0x95, 
+	0x6e, 0x76, 0x1d, 0x38, 0x8e, 0xc7, 0x8f, 0xf7, 0x16, 0x3f, 
+	0x57, 0x99, 0xe9, 0x2e, 0x12, 0xed, 0x77, 0x1a, 0x83, 0x4e, 
+	0x73, 0x70, 0x37, 0xd8, 0xdc, 0x41, 0xd9, 0x18, 0x94, 0xcd, 
+	0xc1, 0x88, 0x5f, 0xce, 0x1b, 0x44, 0x2b, 0xe3, 0x51, 0xa0, 
+	0xe3, 0xe4, 0xb, 0x79, 0xbb, 0xfd, 0x46, 0x6f, 0xcb, 0x8e, 
+	0x87, 0xfc, 0xe3, 0x74, 0xb3, 0xed, 0x4c, 0x88, 0x6b, 0x55, 
+	0xda, 0x41, 0xaa, 0xb4, 0x93, 0xaa, 0xa4, 0x1b, 0x69, 0x81, 
+	0x74, 0x13, 0xad, 0x90, 0x6e, 0xa1, 0x26, 0x69, 0x37, 0x6d, 
+	0x97, 0xba, 0xe1, 0x54, 0xf, 0x8d, 0x4a, 0x3a, 0x7d, 0x42, 
+	0xea, 0xcd, 0x71, 0x48, 0xe0, 0x2d, 0xc8, 0x9f, 0x1, 0x2f, 
+	0xfe, 0x1, 0x50, 0x4b, 0x3, 0x4, 0xa, 00, 00, 00, 
+	0x8, 00, 0x55, 0x58, 0xda, 0x2c, 0x7a, 0x44, 0x1b, 0x63, 
+	0x14, 0x5, 00, 00, 0xb8, 0x8, 00, 00, 0x19, 00, 
+	00, 00, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 
+	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x6e, 0x65, 
+	0x6c, 0x2e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x7d, 0x55, 0x4d, 
+	0x74, 0x13, 0x55, 0x14, 0xfe, 0x5e, 0x93, 0x74, 0x92, 0xe9, 
+	0x10, 0x42, 0x28, 0xfd, 0xe1, 0xcf, 0x42, 0x29, 0xa4, 0x69, 
+	0x68, 0x51, 0xea, 0x1f, 0x41, 0xa0, 0xd, 0x2d, 0x94, 0x6, 
+	0x5a, 0x6c, 0x5, 0x83, 0x80, 0x4e, 0x93, 0x69, 0x32, 0x6d, 
+	0x98, 0x29, 0x93, 0x49, 0x4b, 0x15, 0xc5, 0x1f, 0xfc, 0x41, 
+	0x14, 0x7f, 0xf0, 0x9f, 0x8d, 0x1b, 0x5c, 0x71, 0x3c, 0x47, 
+	0xf, 0x49, 0xce, 0xb1, 0x1e, 0x77, 0x6e, 0x5c, 0xb8, 0x71, 
+	0xe3, 0xc2, 0x8d, 0x5b, 0xb7, 0x6e, 0x3d, 0x1e, 0xef, 0x9d, 
+	0x49, 0xdb, 0xb4, 0xf4, 0x98, 0x73, 0xf2, 0xe6, 0xbd, 0x7b, 
+	0xef, 0x77, 0xef, 0x7d, 0xf7, 0xbb, 0xef, 0xbd, 0x5f, 0xfe, 
+	0xfd, 0xe1, 0x27, 0x78, 0xb0, 0x17, 0x77, 0x64, 0xec, 0x43, 
+	0x9f, 0x84, 0x7e, 0x3f, 0x12, 0x32, 0xea, 0x70, 0x34, 0x80, 
+	0x1e, 0xc, 0x48, 0x18, 0xf4, 0xe3, 0x98, 0x8c, 0x7a, 0x1c, 
+	0x97, 0x31, 0x84, 0x13, 0x7e, 0xc, 0xb3, 0x3c, 0x29, 0xe1, 
+	0xa4, 0xc, 0x5, 0xa7, 0x78, 0x31, 0x12, 0xc0, 0x28, 0x4e, 
+	0xb3, 0xfa, 0x69, 0x9e, 0x8d, 0xc9, 0x18, 0xc7, 0x33, 0xac, 
+	0x3d, 0x23, 0xe1, 0xac, 0x1f, 0xcf, 0xca, 0x68, 0x44, 0x8a, 
+	0xd, 0xcf, 0xf9, 0xf1, 0x1c, 0x7f, 0xcf, 0xfb, 0x71, 0x41, 
+	0xc2, 0x45, 0x19, 0x5b, 0x38, 0xe0, 0xf3, 0x32, 0xb6, 0xa1, 
+	0x4f, 0xc6, 0xb, 0x50, 0x3, 0x34, 0x9b, 0x60, 0x71, 0x9a, 
+	0x97, 0x19, 0x5e, 0x6a, 0x3c, 0x4c, 0x4a, 0xc8, 0xca, 0xe8, 
+	0x40, 0x8e, 0x17, 0x3a, 0xf, 0x53, 0x1c, 0x6e, 0x3a, 0x80, 
+	0x3c, 0x2e, 0xc9, 0x30, 0x60, 0xfa, 0x31, 0xc3, 0x49, 0x5f, 
+	0xe6, 0xb0, 0x97, 0x25, 0x58, 0x12, 0xa, 0x2, 0x3e, 0x5b, 
+	0xb7, 0xf3, 0x9a, 0x40, 0x28, 0x39, 0xa5, 0xce, 0xaa, 0x3d, 
+	0xea, 0x9c, 0xdd, 0x93, 0x54, 0x27, 0xb4, 0x7c, 0x9c, 0x54, 
+	0x96, 0x66, 0x5b, 0xf3, 0x2, 0xf5, 0x33, 0x96, 0x79, 0x69, 
+	0xc6, 0x16, 0xf0, 0xcf, 0xa8, 0x85, 0xc2, 0x9c, 0x69, 0x65, 
+	0x4, 0x1a, 0x97, 0xcd, 0xc7, 0xb5, 0x2b, 0xf6, 0xa0, 0xae, 
+	0xe5, 0x33, 0x4, 0xa9, 0x33, 0xa7, 0x5, 0x36, 0x2c, 0xeb, 
+	0xfa, 0x8b, 0xb6, 0x6d, 0x1a, 0xa4, 0xa8, 0x3f, 0xa8, 0x1b, 
+	0xba, 0x7d, 0x48, 0xc0, 0x13, 0xe9, 0x3c, 0x23, 0xe0, 0x4d, 
+	0x98, 0x19, 0xa, 0xba, 0x3e, 0xa9, 0x1b, 0xda, 0xa9, 0xe2, 
+	0xa5, 0x9, 0xcd, 0x1a, 0x57, 0x27, 0x38, 0x8d, 0x7a, 0x35, 
+	0x6d, 0xeb, 0xa6, 0x21, 0xd0, 0x11, 0x59, 0xf6, 0x32, 0x30, 
+	0xab, 0x19, 0x76, 0xdc, 0x5d, 0xe7, 0x55, 0x23, 0xdb, 0x33, 
+	0x32, 0x31, 0xa5, 0xa5, 0xed, 0x78, 0xe7, 0x39, 0x1, 0x79, 
+	0xcc, 0x2c, 0x5a, 0x69, 0x6d, 0x50, 0x67, 0x74, 0x8b, 0x5a, 
+	0xb4, 0x73, 0x64, 0xab, 0xa7, 0x55, 0xf6, 0x32, 0xaa, 0x1a, 
+	0x5a, 0xbe, 0x9b, 0x61, 0xa, 0x9e, 0xc4, 0x1, 0x81, 0xe0, 
+	0xca, 0x3d, 0xa, 0x84, 0xcf, 0x9c, 0x4a, 0xb4, 0xf5, 0xad, 
+	00, 0xb1, 0xa9, 0xad, 0xe0, 0x61, 0x3c, 0x22, 0xb0, 0x6e, 
+	0xc9, 0x7e, 0xd0, 0x34, 0xa8, 00, 0x81, 0xe3, 0x5a, 0x7e, 
+	0x56, 0x63, 0x4b, 0xb6, 0x2a, 0x4a, 0x98, 0x55, 0x30, 0x87, 
+	0x2b, 0xa4, 0x18, 0xad, 0x56, 0xe6, 0x80, 0x82, 0x5e, 0x46, 
+	0x86, 0x1f, 0x2c, 0xf, 0x43, 0xe6, 0x15, 0x3c, 0x8a, 0xc7, 
+	0x24, 0xbc, 0xa8, 0xe0, 0x25, 0x5c, 0x55, 0xf0, 0x32, 0x5e, 
+	0x51, 0x70, 0xd, 0x57, 0x25, 0xbc, 0xaa, 0xe0, 0x35, 0x5e, 
+	0xbc, 0x8e, 0x37, 0xa8, 0x2e, 0xab, 0xa, 0x48, 0x85, 0x1d, 
+	0x19, 0x66, 0xfc, 0x75, 0x5, 0x8f, 0xe3, 0x9, 0x1, 0x62, 
+	0x70, 0x3f, 0x87, 0x91, 0x12, 0xb4, 0x7b, 0x5d, 0xb3, 0x4, 
+	0x9a, 0x96, 0x20, 0xc7, 0x2c, 0x3d, 0xd3, 0xaf, 0x66, 0x93, 
+	0xea, 0xbc, 0x59, 0xa4, 0x9c, 0xb7, 0xac, 0x56, 0x24, 0x4c, 
+	0xa3, 0x60, 0x5b, 0xaa, 0x6e, 0xd8, 0x5, 0x9, 0x6f, 0x2a, 
+	0x78, 0xb, 0x6f, 0x2b, 0x78, 0x7, 0x37, 0x14, 0xbc, 0x8b, 
+	0x9b, 0xa, 0xde, 0xc3, 0xfb, 0xa, 0x6e, 0xf1, 0xf2, 0x3, 
+	0xdc, 0xa8, 0x4d, 0x65, 0xc8, 0x28, 0x68, 0x76, 0x81, 0xb3, 
+	0xf8, 0x50, 0xc1, 0x47, 0xf8, 0x58, 0xc1, 0x6d, 0xb6, 0xfa, 
+	0x4, 0x7, 0x24, 0x7c, 0xaa, 0xe0, 0x33, 0x7c, 0x2e, 0xe1, 
+	0xb, 0x5, 0x5f, 0x72, 0xa1, 0x37, 0x8c, 0x99, 0x96, 0x35, 
+	0xdf, 0xdd, 0x36, 0x6e, 0xcd, 0xb7, 0xa9, 0x59, 0x8a, 0xd5, 
+	0xad, 0xe0, 0x2b, 0x5c, 0x17, 0xd8, 0xb8, 0x6, 0x43, 0xb5, 
+	0xbc, 0x54, 0x5, 0x4d, 0x91, 0x1a, 0xb6, 0xc7, 0x6c, 0x4b, 
+	0x37, 0xb2, 0xf1, 0x21, 0x6e, 0x9c, 0xe6, 0xb5, 0x14, 0x8e, 
+	0x66, 0xb9, 0xe2, 0x9, 0xea, 0x56, 0xd3, 0xd0, 0x98, 0x30, 
+	0x89, 0x52, 0x76, 0xa9, 0xb, 0xd7, 0xf4, 0x13, 0x4b, 0xe2, 
+	0x4e, 0x1b, 0x46, 0x1c, 0x68, 0xb0, 0x6, 0x9a, 0x37, 0xa9, 
+	0x98, 0xbe, 0x89, 0xbc, 0x9a, 0x9e, 0x5e, 0x71, 0x28, 0x1c, 
+	0xd, 0x35, 0xf2, 0x3a, 0xc7, 0xa3, 0xa5, 0x65, 0x2d, 0xb3, 
+	0x68, 0xd0, 0x41, 0xd8, 0x18, 0x59, 0x6d, 0xc3, 0x1e, 0x7d, 
+	0x73, 0x39, 0xdd, 0xd6, 0x6a, 0x59, 0xe1, 0x36, 0xa8, 0x49, 
+	0x8c, 0xdd, 0xf4, 0x53, 0x8c, 0x45, 0x37, 0x21, 0x5a, 0xf, 
+	0xa4, 0x73, 0x66, 0x22, 0xa7, 0x5a, 0x74, 0x4, 0x98, 0x51, 
+	0x6f, 0x24, 0xc1, 0xae, 0x36, 0xad, 0xb1, 0xe3, 0xd5, 0xfb, 
+	0x35, 0x6c, 0x2a, 0x31, 0x63, 0x2, 0xe4, 0x66, 0x89, 0xf8, 
+	0x48, 0xed, 0x91, 0x66, 0xd9, 0x49, 0xd5, 0x50, 0xb3, 0x9a, 
+	0x9b, 0x61, 0x20, 0x4b, 0xdd, 0x30, 0xa7, 0x67, 0xec, 0x9c, 
+	0x80, 0x18, 0xa2, 0x1a, 0x10, 0xb2, 0xa6, 0x33, 0x4, 0x7a, 
+	0x57, 0x6c, 0xac, 0x9a, 0x78, 0x3c, 0xf9, 0x3f, 0xdd, 0xe4, 
+	0xf8, 0xf5, 0xa8, 0x19, 0xda, 0x4e, 0x74, 0x4d, 0x70, 0xe7, 
+	0x5a, 0x42, 0xda, 0xe8, 0xa4, 0x9e, 0x27, 0xce, 0x7d, 0xfa, 
+	0x8c, 0x9a, 0xa1, 0xeb, 0x46, 0x8a, 0xc, 0xd, 0xb9, 0x94, 
+	0xd6, 0xeb, 0x4e, 0xcb, 0xad, 0xb8, 0x51, 0xdc, 0x2e, 0x8c, 
+	0x57, 0xcd, 0xe9, 0xe8, 0x29, 0x96, 0x76, 0xb9, 0xa8, 0x15, 
+	0x88, 0x94, 0x74, 0xb1, 0x50, 0xcb, 0xa5, 0x73, 0x6b, 0x90, 
+	0x13, 0x5b, 0xb5, 0xb2, 0x1a, 0x77, 0xc0, 0x83, 0x17, 0x8, 
+	0xd5, 0x7d, 0xb5, 0x8c, 00, 0x86, 0x69, 0xeb, 0x93, 0xf3, 
+	0x6e, 0xf3, 0x30, 0x6d, 0x68, 0xa3, 0xfb, 0x78, 0x1f, 00, 
+	0x1f, 0xfd, 0xe9, 0x5e, 00, 0xff, 0xf6, 0x57, 0xbf, 0xbd, 
+	0xd5, 0x2f, 0x1d, 0x6b, 0xe7, 0x4b, 0xc7, 0x93, 0x46, 0xf, 
+	0x4, 0xdf, 0x38, 0x34, 0xc6, 0x1, 0xf1, 0x7, 0x24, 0x92, 
+	0x40, 0x1c, 0x8c, 0x56, 0x20, 0xa2, 0xb, 0xa8, 0x4b, 0x85, 
+	0x3d, 0xde, 0xa, 0xbc, 0x25, 0xf8, 0xa2, 0xf7, 0xe1, 0x5b, 
+	0x40, 0x7d, 0x2a, 0x2c, 0x79, 0x43, 0xe1, 0xa, 0xfc, 0x65, 
+	0x4, 0x5c, 0x3, 0xd9, 0x35, 0x68, 0xa0, 0x95, 0x92, 0xa, 
+	0xc9, 0x15, 0xac, 0x2b, 0x21, 0x48, 0xd6, 0xc1, 0xef, 0xb1, 
+	0xbe, 0x8c, 0x90, 0x3b, 0xdb, 0x50, 0x46, 0x98, 0x67, 0xa1, 
+	0x68, 0x19, 0x1b, 0xc9, 0xb2, 0x31, 0x15, 0xde, 0x54, 0x41, 
+	0x53, 0x9, 0xcd, 0xae, 0x93, 0x16, 0xd7, 0x49, 0x2b, 0xd9, 
+	0xb4, 0x3a, 0x51, 0x36, 0x7b, 0x43, 0x21, 0x37, 0xca, 0x2, 
+	0xb6, 0xa4, 0x2a, 0xd8, 0x9a, 0x5c, 0xc0, 0x36, 0xfa, 0x6e, 
+	0x3f, 0x19, 0xed, 0x2a, 0xe3, 0xa1, 0x98, 0xa7, 0x84, 0xb6, 
+	0x2e, 0xce, 0x29, 0x56, 0xc6, 0x8e, 0x28, 0x4f, 0xca, 0xd8, 
+	0x79, 0x36, 0xe6, 0x2b, 0xa1, 0x9d, 0xc5, 0xad, 0x8b, 0xe2, 
+	0x56, 0x47, 0x4c, 0xd6, 0xed, 0x31, 0x6f, 0x15, 0xd2, 0xb0, 
+	0xa8, 0x6b, 0x60, 0x1d, 0x4b, 0x82, 0x8b, 0x92, 0xa0, 0x63, 
+	0x1d, 0x92, 0x4b, 0xd8, 0xe5, 0x44, 0x60, 0x4c, 0x7b, 0x6c, 
+	0x1, 0x1d, 0x29, 0x4f, 0xa8, 0xd1, 0xe3, 0xa9, 0x60, 0x77, 
+	0x9, 0x7b, 0x62, 0xa1, 0x48, 0x9, 0x11, 0xc6, 0x35, 0x2f, 
+	0xe2, 0x9a, 0x19, 0xe7, 0xe2, 0x3b, 0xbf, 0xa3, 0xaa, 0xa, 
+	0x1c, 0xa4, 0xf1, 0x16, 0xda, 0x69, 0xdc, 0x5, 0x2f, 0x76, 
+	0x23, 0x8c, 0x3d, 0xf4, 0xe4, 0x75, 0x12, 0x1b, 0x5d, 0x38, 
+	0x82, 0x18, 0x4e, 0xd0, 0x23, 0x3d, 0x8e, 0x6e, 0x5c, 0x20, 
+	0xbe, 0xa6, 0x88, 0x99, 0x2b, 0xa4, 0xb9, 0x49, 0xcc, 0xdc, 
+	0x26, 0x5e, 0xee, 0x10, 0x23, 0x5f, 0x13, 0x1f, 0x77, 0xc9, 
+	0xcb, 0xb7, 0x78, 0xa, 0x15, 0x1c, 0xc6, 0x8f, 0x84, 0xfa, 
+	0x19, 0x7d, 0xf8, 0x15, 0x9, 0xfc, 0x86, 0xa3, 0xf8, 0x1d, 
+	0x3, 0xf8, 0x13, 0x83, 0xf8, 0xb, 0xc7, 0xf1, 0x37, 0xbd, 
+	0x9e, 0xff, 0x60, 0x58, 0xd4, 0x21, 0x29, 0xe8, 0x29, 0x17, 
+	0xf4, 0x92, 0x8b, 0xad, 0x18, 0x11, 0x3b, 0x31, 0x2a, 0xba, 
+	0x70, 0x5a, 0xf4, 0x62, 0x4c, 0xc4, 0x29, 0xda, 0xe, 0xf2, 
+	0x75, 0xc8, 0x65, 0x1a, 0xfd, 0xf4, 0xbe, 0x12, 0xd3, 0xd8, 
+	0xde, 0x75, 0x1f, 0xce, 0xce, 0xef, 0x22, 0x58, 0x9d, 0x36, 
+	0x7f, 0x43, 0xd4, 0x96, 0xd1, 0xe5, 0xbd, 0xe7, 0xb9, 0xb7, 
+	0xb4, 0x97, 0x30, 0xed, 0x2, 0x38, 0x8f, 0x26, 0xca, 0x78, 
+	0x33, 0x2e, 0x62, 0x2b, 0x3d, 0xe9, 0x82, 0x72, 0xae, 0x76, 
+	0xe, 0xcd, 0xea, 0x68, 0x6, 0x22, 0x97, 0x6a, 0x1e, 0xa6, 
+	0xba, 0xec, 0x65, 0xa7, 0xe1, 0x96, 0x32, 0xba, 0x97, 0xb, 
+	0x12, 0x74, 0x42, 0xe6, 0x10, 0x80, 0x4e, 0xe, 0xa7, 0x48, 
+	0x7a, 0x98, 0xd6, 0x75, 0x38, 0xf2, 0x1f, 0x50, 0x4b, 0x3, 
+	0x4, 0xa, 00, 00, 00, 0x8, 00, 0x55, 0x58, 0xda, 
+	0x2c, 0xe7, 0x52, 0x7f, 0x83, 0x46, 0xb, 00, 00, 0xe7, 
+	0x14, 00, 00, 0xf, 00, 00, 00, 0x76, 0x6e, 0x63, 
+	0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x2e, 0x63, 0x6c, 0x61, 
+	0x73, 0x73, 0x9d, 0x57, 0x79, 0x7c, 0x54, 0xf5, 0x11, 0xff, 
+	0xce, 0xdb, 0x4d, 0xde, 0xee, 0xe6, 0x5, 0x92, 0xc0, 0x62, 
+	0x62, 0x2, 0x4, 0x45, 0x5d, 0x2, 0x8, 0x42, 0x5, 0x91, 
+	0xc3, 0x92, 0x10, 0x60, 0x2b, 0xc1, 0x48, 0x82, 0x18, 0x50, 
+	0xcb, 0xb2, 0xfb, 0x92, 0x2c, 0xec, 0xe5, 0xdb, 0xdd, 0x84, 
+	0x58, 0xb5, 0x45, 0x53, 0xad, 0xe2, 0x51, 0x6f, 0xc1, 0x13, 
+	0xf, 0xd6, 0x8a, 0x17, 0x96, 0x6c, 0x54, 0x44, 0xad, 0xb6, 
+	0x5a, 0xad, 0x3d, 0xbc, 0xad, 0xb5, 0xf6, 0xb2, 0xb6, 0xf6, 
+	0xd0, 0x6a, 0x45, 0x5b, 0x5b, 0xa4, 0x33, 0xef, 0xbd, 0x64, 
+	0x77, 0x93, 0xe0, 0x1f, 0xcd, 0x27, 0x6f, 0xe6, 0xf7, 0x9b, 
+	0xdf, 0xfc, 0xe6, 0xfa, 0xcd, 0x6f, 0xe6, 0xb7, 0x2f, 0x7c, 
+	0xf1, 0xd8, 0x13, 0x70, 0x60, 0x3a, 0x4d, 0xf3, 0xa0, 0x15, 
+	0xe7, 0xbb, 0xd1, 0x82, 0x6f, 0xba, 0xf1, 0x2d, 0x6c, 0x91, 
+	0xd1, 0x16, 0x15, 0x17, 0x78, 0x50, 0x84, 0xb, 0x65, 0xd2, 
+	0xeb, 0xc1, 0xb7, 0x71, 0x91, 0x8a, 0x8b, 0x65, 0xf2, 0x1d, 
+	0xf, 0x2e, 0xc1, 0xa5, 0x1e, 0xb8, 0xb1, 0xd5, 0xcd, 0xe4, 
+	0xcb, 0x4, 0x5c, 0x2e, 0xb, 0x57, 0xa8, 0xb8, 0xd2, 0x83, 
+	0x32, 0x7c, 0x57, 0x26, 0x57, 0x79, 0x70, 0x35, 0xae, 0x91, 
+	0xd1, 0xb5, 0x32, 0xba, 0x4e, 0x46, 0xd7, 0x7b, 0x70, 0x3, 
+	0x6e, 0x94, 0xd1, 0x36, 0x15, 0xdb, 0x3d, 0xa8, 0xc2, 0x4d, 
+	0x1e, 0xdc, 0x8c, 0x5b, 0x44, 0xfa, 0xad, 0xc2, 0x65, 0xae, 
+	0xdd, 0x26, 0xe0, 0x76, 0xa1, 0xed, 0x10, 0x70, 0x87, 0x80, 
+	0x3b, 0x45, 0xc9, 0x5d, 0xc2, 0x7c, 0xb7, 0x8a, 0x9d, 0x32, 
+	0xc9, 0x8, 0xb8, 0x47, 0xc0, 0xf7, 0x4, 0xdc, 0xeb, 0xe1, 
+	0x4d, 0xbb, 0x84, 0xf5, 0x3e, 0x99, 0xde, 0x2f, 0xe0, 0x1, 
+	0xe1, 0x7f, 0x50, 0x46, 0xf, 0x79, 0xb0, 0x1b, 0xf, 0x7b, 
+	0xf0, 0x7d, 0xec, 0x11, 0x5a, 0x9f, 0x80, 0xac, 0x80, 0x7e, 
+	0x59, 0x78, 0x44, 0xc5, 0xa3, 0x2a, 0x1e, 0xf3, 0x60, 0x2e, 
+	0xce, 0x77, 0x61, 0xaf, 0xe0, 0xc7, 0x5, 0xec, 0x13, 0xf0, 
+	0x84, 0x7, 0x73, 0xf0, 0xa4, 0x8, 0x79, 0xca, 0x85, 0x1f, 
+	0xb8, 0xf1, 0x34, 0x9e, 0xf1, 0xe0, 0x87, 0xf8, 0x91, 0xa8, 
+	0x7a, 0xd6, 0x85, 0xe7, 0x44, 0xc0, 0x8f, 0xc5, 0xeb, 0xe7, 
+	0x45, 0xde, 0xb, 0x62, 0xfb, 0x4f, 0x64, 0xf4, 0xa2, 0x8c, 
+	0x7e, 0x2a, 0xa3, 0x9f, 0xc9, 0xe6, 0x9f, 0xbb, 0xf1, 0xb, 
+	0xbc, 0x24, 0xd1, 0x7d, 0x59, 0x1c, 0x7d, 0x45, 0xb6, 0xbf, 
+	0x2a, 0xe0, 0x35, 0x15, 0xaf, 0x7b, 0xf0, 0x6, 0xde, 0x54, 
+	0xf1, 0x4b, 0x15, 0x6f, 0x11, 0xa8, 0x8b, 0x50, 0xb2, 0xa2, 
+	0x2b, 0x16, 0xec, 0xa, 0xeb, 0xdd, 0xba, 0x31, 0x9f, 0xe0, 
+	0x30, 0xda, 0x37, 0x10, 0x3c, 0x2b, 0x18, 0x35, 0x1b, 0xf1, 
+	0x54, 0x9c, 0x49, 0x4a, 0x30, 0x4a, 0xa8, 0x5e, 0xb1, 0x31, 
+	0xd0, 0x15, 0x98, 0x11, 0xe8, 0x4e, 0xcd, 0x8, 0x47, 0x3, 
+	0x1d, 0xfa, 0x8c, 0x86, 0x78, 0x24, 0x6e, 0x34, 0xc5, 0x43, 
+	0x7a, 0x84, 0x59, 0x8a, 0x83, 0x32, 0x4b, 0x12, 0xca, 0xd7, 
+	0xe5, 0xf8, 0x4c, 0xe, 0x5e, 0x1c, 0x65, 0x4, 0xba, 0x9b, 
+	0xc3, 0x9b, 0xf5, 0x48, 0xd2, 0x2f, 0x3b, 0x9, 0x65, 0x39, 
+	0x1e, 0x93, 0xc2, 0x3c, 0xce, 0x40, 0x34, 0x9c, 0x14, 0x2d, 
+	0x81, 0x18, 0x8b, 0x4f, 0xe9, 0xa1, 0x26, 0x3d, 0x1a, 0x37, 
+	0x7a, 0xcc, 0xe5, 0x96, 0x78, 0xda, 0x8, 0xa, 0x53, 0x71, 
+	0xc2, 0x94, 0xc2, 0x16, 0xad, 0xab, 0x67, 0x90, 0xec, 0x20, 
+	0x8c, 0xc9, 0x89, 0x5a, 0x66, 0x4, 0x12, 0x9d, 0xe1, 0x60, 
+	0x52, 0x9c, 0x48, 0x76, 0xcc, 0x62, 0x27, 0x12, 0x81, 0x70, 
+	0x2c, 0x65, 0xeb, 0x74, 0x24, 0xc2, 0xcc, 0xee, 0x64, 0xc8, 
+	0x2b, 0xa3, 0x63, 0xba, 0x1e, 0x6a, 0x8d, 0xaf, 0xd2, 0x93, 
+	0x7a, 0xaa, 0x21, 0x12, 0x4e, 0x70, 0x20, 0xd6, 0xb2, 0xf8, 
+	0x5, 0xe1, 0x58, 0x38, 0xb5, 0x88, 0xd, 0xf6, 0xe5, 0x85, 
+	0x64, 0xca, 0x69, 0xbc, 0xad, 0x81, 0xfd, 0xe4, 0x6d, 0x2b, 
+	0xc2, 0x31, 0x7d, 0x65, 0x3a, 0xba, 0x41, 0x37, 0x5a, 0x3, 
+	0x1b, 0x22, 0x4c, 0xf1, 0x34, 0x6e, 0xe, 0xea, 0x89, 0x54, 
+	0x38, 0x1e, 0x63, 0xab, 0x4a, 0x13, 0x86, 0xde, 0xae, 0x1b, 
+	0x86, 0x1e, 0x6a, 0x9, 0x9f, 0xc3, 0x8b, 0xe3, 0x7c, 0x53, 
+	0x72, 0xd6, 0x2d, 0x9, 0x47, 0xf5, 0x58, 0x92, 0x19, 0xd9, 
+	0xbc, 0x92, 0x28, 0x2b, 0x8a, 0xa6, 0xa3, 0x16, 0x5b, 0x71, 
+	0x3a, 0x11, 0x62, 0x8f, 0x85, 0x7f, 0x4, 0x67, 0x44, 0x7d, 
+	0x91, 0xe9, 0x8, 0xc1, 0x9b, 0x30, 0xe2, 0x41, 0x3d, 0x99, 
+	0x5c, 0x19, 0x37, 0xa2, 0x81, 0x88, 0x79, 0x3c, 0x1c, 0x77, 
+	0xf6, 0xcd, 0x27, 0x5c, 0x25, 0x21, 0x8e, 0xf3, 0x2a, 0xfe, 
+	0xd7, 0x83, 0xcc, 0xab, 0xfa, 0xfc, 0xfc, 0x67, 0xd2, 0x3b, 
+	0x3, 0xb1, 0x50, 0x44, 0x6f, 0xec, 0xd2, 0x45, 0xc6, 0x98, 
+	0x3c, 0x25, 0x26, 0x69, 0xfe, 0x14, 0x76, 0xdd, 0x63, 0xc5, 
+	0x78, 0x69, 0x58, 0x9c, 0x1a, 0xc5, 0xce, 0x37, 0x4, 0x62, 
+	0x5d, 0x81, 0xe4, 0xb1, 0xc2, 0xaa, 0x61, 0x13, 0xba, 0x35, 
+	0xac, 0xc6, 0x69, 0x2a, 0x7e, 0xa5, 0x61, 0xd, 0x4e, 0x27, 
+	0x4c, 0x1c, 0x92, 0xc, 0x4b, 0xc2, 0x6, 0x6b, 0xcd, 0xa5, 
+	0x84, 0xec, 0xe9, 0xd1, 0xd0, 0x86, 0xb5, 0x2a, 0xde, 0xd6, 
+	0xf0, 0x6b, 0xbc, 0xc3, 0x62, 0xb, 0x13, 0x43, 0xc3, 0x3a, 
+	0x9c, 0xa1, 0xe2, 0x37, 0x1a, 0x7e, 0x8b, 0xdf, 0x9, 0xff, 
+	0xef, 0x35, 0xfc, 0x1, 0xef, 0x6a, 0xf8, 0xa3, 0x80, 00, 
+	0x38, 0xb, 0xab, 0xe, 0x99, 0xc, 0xc2, 0xff, 0x9e, 0x86, 
+	0xaf, 0x63, 0xbd, 0x8a, 0x3f, 0x69, 0xf8, 0x33, 0xde, 0xd7, 
+	0x70, 0x26, 0xce, 0x92, 0xd1, 0x5f, 0x34, 0xb4, 0xe3, 0x2c, 
+	0x15, 0x7f, 0xd5, 0xf0, 0x37, 0xfc, 0x5d, 0x43, 0x7, 0x42, 
+	0x84, 0x8a, 0xe1, 0xe7, 0x20, 0x22, 0x3e, 0x50, 0xf1, 0xa1, 
+	0x86, 0x7f, 0xe0, 0x23, 0xd, 0x1f, 0xe3, 0x9f, 0x1a, 0x82, 
+	0x8, 0x69, 0x8, 0x63, 0xa3, 0x86, 0x4f, 0xb0, 0x5f, 0xc3, 
+	0xa7, 0xe2, 0xf7, 0x67, 0x2, 0xfe, 0x25, 0x36, 0xfd, 0x1b, 
+	0x3d, 0x9c, 0xa1, 0xa6, 0xa4, 0x48, 0x20, 0xd6, 0x31, 0x63, 
+	0x65, 0xbc, 0x25, 0x1d, 0xec, 0x6c, 0xd2, 0x53, 0x9d, 0xf1, 
+	0x50, 0xa3, 0x61, 0x88, 0x4b, 0x9f, 0xb, 0xdf, 0x7f, 0x4, 
+	0xfc, 0x57, 0xc0, 0x1, 0x1, 0x9b, 0x25, 0x12, 0x5f, 0x88, 
+	0x94, 0x83, 0x3c, 0x25, 0x8, 0x20, 0x52, 0x34, 0x72, 0x90, 
+	0x53, 0xa5, 0x22, 0x8d, 0x8a, 0xb1, 0x5f, 0x25, 0x55, 0x23, 
+	0x17, 0xeb, 0x24, 0x37, 0x3e, 0xd0, 0xc8, 0x43, 0x25, 0x1a, 
+	0x69, 0xbc, 0x8f, 0x4a, 0xb1, 0x9f, 0xcf, 0xcc, 0xd4, 0x19, 
+	0x8e, 0xcf, 0xf0, 0x9f, 0x32, 0x98, 0x6f, 0x9c, 0x2e, 0x39, 
+	0x4b, 0x5a, 0x52, 0x46, 0x38, 0xd6, 0x51, 0x9f, 0x6e, 0xe7, 
+	0xf4, 0xe3, 0xc3, 0x59, 0x1d, 0xdb, 0x14, 0x8b, 0x77, 0xc7, 
+	0x6a, 0x57, 0x2d, 0xad, 0xaf, 0x95, 0x73, 0x61, 0x96, 0x88, 
+	0x5e, 0xab, 0xc7, 0x82, 0xf1, 0x10, 0xb3, 0xd5, 0x6a, 0x34, 
+	0x8a, 0x46, 0xb, 0x28, 0xd3, 0xa8, 0x9c, 0x2a, 0x38, 0x10, 
+	0x34, 0x46, 0xa3, 0xb1, 0x78, 0x97, 0xe0, 0xe3, 0x73, 0x3f, 
+	0x26, 0x55, 0x6b, 0x65, 0x4c, 0x6d, 0x8b, 0x6e, 0x1e, 0x69, 
+	0xda, 0x68, 0xa, 0x24, 0x1a, 0x63, 0xac, 0x43, 0x4f, 0xd6, 
+	0x46, 0x39, 0xff, 0xf8, 0x18, 0x54, 0xf2, 0x6a, 0x34, 0x8e, 
+	0xe, 0x53, 0xa9, 0x52, 0xa3, 0x2a, 0x3a, 0x5c, 0xa3, 0x6a, 
+	0xaa, 0xe0, 0x13, 0xcb, 0x57, 0x6d, 0xb3, 0xd6, 0xa6, 0x7a, 
+	0x12, 0x3a, 0x2b, 0xad, 0xa1, 0xf1, 0x1a, 0x4d, 0x10, 0xa7, 
+	0x26, 0xca, 0xb9, 0xe8, 0x1c, 0x6b, 0xaa, 0x95, 0xd8, 0x74, 
+	0xca, 0x68, 0x12, 0x7, 0x88, 0x8e, 0xc0, 0x46, 0x95, 0x8e, 
+	0xd4, 0x68, 0xb2, 0xc4, 0xe8, 0x28, 0x3e, 0x7, 0x3a, 0x5a, 
+	0xc8, 0xc7, 0x90, 0x4f, 0xa3, 0x29, 0xe4, 0x1b, 0x88, 0x84, 
+	0xe9, 0xf3, 0x60, 0x24, 0x54, 0xaa, 0xd3, 0x68, 0x2a, 0xba, 
+	0x9, 0xee, 0xc1, 0xc4, 0xe5, 0xbb, 0x9a, 0xcb, 0x36, 0x9b, 
+	0xe2, 0x1e, 0xbc, 0xd3, 0x4, 0xd7, 0x40, 0x79, 0x63, 0x91, 
+	0xdd, 0x46, 0x38, 0xa5, 0xb3, 0xab, 0x66, 0x89, 0x5a, 0x2a, 
+	0x57, 0x8b, 0xaf, 0x49, 0x29, 0x5f, 0x9f, 0xb5, 0x6b, 0xfd, 
+	0xfe, 0x81, 0x4b, 0x54, 0x75, 0xc8, 0xea, 0xc7, 0x17, 0xb8, 
+	0x43, 0x4f, 0xad, 0x5a, 0xc6, 0x15, 0xc9, 0xe9, 0xf3, 0x4f, 
+	0xf1, 0x5b, 0x88, 0xb7, 0x94, 0xb5, 0x1b, 0x81, 0xa8, 0xbe, 
+	0xc1, 0x3c, 0x94, 0x35, 0xe1, 0x50, 0xaa, 0x93, 0xab, 0xc, 
+	0xaf, 0x96, 0xe7, 0x91, 0x97, 0xeb, 0xe1, 0x8e, 0x4e, 0xd6, 
+	0x76, 0x4, 0x6b, 0xfb, 0x92, 0xfa, 0xba, 0xae, 0x5e, 0xe4, 
+	0x55, 0xe4, 0xdd, 0x9f, 0x68, 0x22, 0x1e, 0x33, 0xaf, 0x73, 
+	0x49, 0xd0, 0xd0, 0xf9, 0x86, 0xd8, 0x45, 0x6e, 0xa6, 0x6f, 
+	0xa8, 0x14, 0x73, 0x81, 0x3d, 0xd, 0xa5, 0x83, 0x52, 0xcb, 
+	0x86, 0x17, 0xde, 0xb1, 0xac, 0x7a, 0x4, 0xf2, 0xa8, 0x42, 
+	0xa, 0x2b, 0x62, 0x27, 0x7, 0x8a, 0x12, 0x57, 0xa2, 0xfc, 
+	0xd2, 0x96, 0x57, 0x78, 0x8b, 0x7c, 0x56, 0xb8, 0xca, 0x87, 
+	0x2d, 0x72, 0xfc, 0xa5, 0x3e, 0xd9, 0xd2, 0x66, 0xfb, 0x86, 
+	0xaa, 0x1c, 0x1e, 00, 0x93, 0x7e, 0xca, 0x86, 0xa4, 0x6e, 
+	0x74, 0x89, 0xe9, 0x5c, 0xa5, 0xc6, 0x9b, 0x47, 0xb5, 0x34, 
+	0x17, 0xbf, 0xd5, 0x66, 0xe5, 0x5c, 0xa5, 0x9f, 0x9d, 0xd6, 
+	0x93, 0x1c, 0xc, 0x97, 0x59, 0xf3, 0xd6, 0x8a, 0x1, 0x5e, 
+	0xe, 0x4b, 0xa8, 0xc5, 0xdc, 0xda, 0x64, 0xa5, 0x61, 0x2b, 
+	0x67, 0xa1, 0x59, 0x2a, 0xfd, 0xf6, 0xea, 0x30, 0x39, 0x84, 
+	0x9a, 0x11, 0xe9, 0x52, 0x50, 0x97, 0x87, 0x38, 0x6b, 0x2a, 
+	0xd2, 0x83, 0xf3, 0x46, 0xfb, 0x32, 0x71, 0xa1, 0x1d, 0xec, 
+	0x21, 0x25, 0xb9, 0xe5, 0xd3, 0xb, 0x66, 0x6d, 0x5, 0xb3, 
+	0x35, 0x5, 0xb3, 0xe5, 0x4, 0x4d, 0xb4, 0x36, 0xc4, 0x13, 
+	0x3d, 0x56, 0xe5, 0xd6, 0x82, 0xf6, 0xb0, 0xc5, 0x8, 0x9e, 
+	0x5e, 0x38, 0x65, 0x41, 0x2e, 0x99, 0x2e, 0xe6, 0x1d, 0x1c, 
+	0x50, 0x5f, 0x2e, 0x3f, 0x15, 0xe9, 0x9e, 0x55, 0x2b, 0x6, 
+	0xa, 0xc5, 0x92, 0x40, 0x2a, 0xe0, 0x8f, 0x25, 0xd2, 0x29, 
+	0xae, 0xc, 0x7a, 0x20, 0xca, 0x27, 0x73, 0xd8, 0x21, 0x96, 
+	0xd8, 0x1, 0x51, 0xef, 0x97, 0x64, 0xaa, 0x1a, 0xe0, 0xe1, 
+	0x3e, 0x90, 0xd2, 0x8d, 0x2, 0x2e, 0xa7, 0x70, 0xb1, 0xce, 
+	0x94, 0x11, 0x88, 0x25, 0x23, 0x66, 0xb4, 0x5c, 0x49, 0xab, 
+	0x3e, 0x18, 0x85, 0x5d, 0xc5, 0x6a, 0xfb, 0x62, 0x94, 0xab, 
+	0x3d, 0x1c, 0x89, 0x58, 0x4e, 0x95, 0xcb, 0xf6, 0xd5, 0x5c, 
+	0x78, 0x3b, 0x62, 0xdc, 0x1e, 0x3b, 0xe3, 0x6, 0xd3, 0x8a, 
+	0x3, 0x89, 0x84, 0x1e, 0x63, 0xa1, 0xd3, 0xec, 0xdd, 0x79, 
+	0xb5, 0x6c, 0x20, 0x55, 0x87, 0x95, 0x37, 0x76, 0xa5, 0xda, 
+	0xe7, 0xff, 0x92, 0x55, 0x57, 0x2a, 0x6e, 0x51, 0x24, 0xb7, 
+	0x87, 0xf3, 0xcd, 0x97, 0xe4, 0x1d, 0x41, 0x1d, 0x9b, 0xab, 
+	0x59, 0xa7, 0xb2, 0x52, 0x2c, 0xe6, 0x68, 0x96, 0xe5, 0x31, 
+	0xf5, 0x24, 0x53, 0x3a, 0x7, 0xc1, 0x11, 0x4f, 0x4b, 0x1b, 
+	0x1e, 0xc, 0x73, 0x33, 0xef, 0xcd, 0x85, 0x78, 0xcc, 0x8, 
+	0x64, 0x69, 0xde, 0x86, 0xd9, 0xbc, 0x9d, 0xbe, 0x6, 0xf3, 
+	0x66, 0xe4, 0x12, 0xb3, 0x21, 0x9d, 0x6a, 0xd5, 0x37, 0xf3, 
+	0x92, 0xdb, 0x4c, 0xbb, 0x74, 0x24, 0xd2, 0x23, 0x7d, 0x7b, 
+	0x5d, 0xbd, 0x75, 0xa4, 0xee, 0x98, 0x6e, 0x3f, 0x9b, 0xe4, 
+	0x7d, 0x65, 0x5e, 0x73, 0x39, 0x7e, 0x4e, 0x35, 0xbb, 0xc3, 
+	0x87, 0xc2, 0xc9, 0x44, 0x3c, 0x29, 0xef, 0xa9, 0x70, 0x6c, 
+	0xe8, 0x93, 0x20, 0x77, 0x7f, 0xed, 0xbe, 0xaf, 0x84, 0x39, 
+	0xd0, 0xae, 0x8e, 0x78, 0x6a, 0x69, 0x3c, 0x98, 0x4e, 0x9a, 
+	0x49, 0x67, 0xde, 0x1a, 0x7b, 0x5a, 0x6e, 0x5e, 0xad, 0xe6, 
+	0x38, 0x9b, 0xaa, 0x1b, 0x87, 0x7e, 0x2a, 0xb0, 0x59, 0xa5, 
+	0x26, 0xe7, 0xc9, 0x7a, 0xcf, 00, 0x57, 0x2e, 0x4c, 0xad, 
+	0x9d, 0x46, 0xbc, 0xdb, 0x7a, 0x18, 0x8d, 0x4e, 0x58, 0x31, 
+	0x8, 0x4, 0x37, 0xb5, 0x1a, 0x81, 0xa0, 0x8e, 0x5a, 0x7e, 
+	0xa1, 0xb6, 0x2, 0x28, 0xe5, 0x8f, 0x9f, 0x12, 0x90, 0x3f, 
+	0x7e, 0x4a, 0x98, 0x98, 0x9f, 0x9, 0x26, 0xe6, 0x7, 0x81, 
+	0x89, 0xb9, 0x93, 0x9b, 0x98, 0xdb, 0xbb, 0x89, 0xf9, 0x31, 
+	0x60, 0x62, 0x6e, 0xcf, 0x26, 0xd6, 0x6d, 0xdc, 0x6e, 0xf3, 
+	0x75, 0xd8, 0xf3, 0x4e, 0x1b, 0x73, 0x7, 0x67, 0xe8, 0xe2, 
+	0x6f, 0x13, 0x22, 0x50, 0x10, 0x5, 0xe8, 0x48, 0x94, 0xf0, 
+	0xcf, 0xf, 0xe0, 0x95, 0xba, 0x7e, 0x50, 0xdd, 0xd4, 0x3e, 
+	0x28, 0x75, 0x75, 0x7b, 0xa0, 0xec, 0x81, 0xa3, 0xf, 0xce, 
+	0xba, 0xbd, 0x28, 0x6a, 0x2b, 0x73, 0x95, 0xa9, 0x65, 0x27, 
+	0x94, 0xe3, 0xa9, 0x7e, 0x14, 0xf7, 0x41, 0xe5, 0x55, 0x27, 
+	0x93, 0x5c, 0xe, 0x27, 0x93, 0xd5, 0x62, 0x47, 0x71, 0x59, 
+	0x71, 0x16, 0xae, 0xba, 0x72, 0xc2, 0x3e, 0xb8, 0xfb, 0xe0, 
+	0x71, 0x2c, 0xcc, 0xa0, 0x9a, 0x99, 0x3c, 0x35, 0x7b, 0xe1, 
+	0x6e, 0xe3, 0x81, 0x5a, 0x93, 0x45, 0x49, 0x3f, 0xb4, 0x96, 
+	0x5e, 0x85, 0x6a, 0x98, 0x6d, 0xc7, 0xc1, 0x77, 0x45, 0x85, 
+	0x73, 0xf, 0x4a, 0x2d, 0x34, 0xaa, 0xf3, 0x71, 0x57, 0x1f, 
+	0x46, 0xb3, 0xb2, 0xb2, 0xb6, 0xc2, 0x5, 0xd9, 0xcd, 0xdf, 
+	0xe8, 0x7e, 0x94, 0xf7, 0xa1, 0xa2, 0x4e, 0xb6, 0x55, 0x64, 
+	0x31, 0xa6, 0xf, 0x63, 0x4d, 0x23, 0xb, 0x99, 0xb3, 0xf0, 
+	0xf6, 0x61, 0x9c, 0x2c, 0x8c, 0xcb, 0xe2, 0xb0, 0x3e, 0x54, 
+	0xee, 0x66, 0xb7, 0x8, 0x31, 0x86, 0x8b, 0x30, 0x9a, 0xe1, 
+	0x54, 0x38, 0x31, 0x8d, 0x7f, 0x31, 0x4d, 0xc7, 0x58, 0xcc, 
+	0x80, 0xf, 0xc7, 0x31, 0x7d, 0x36, 0x96, 0xe3, 0x78, 0x34, 
+	0xf1, 0xcf, 0x8b, 0xd, 0x8c, 0x23, 0x98, 0x87, 0x2d, 0x98, 
+	0x8f, 0x3b, 0xb0, 0x10, 0xf, 0xe0, 0x24, 0x3c, 0x87, 0xc5, 
+	0x78, 0x19, 0xf5, 0x88, 0xf3, 0x6e, 0x27, 0xcb, 0x9a, 0xc3, 
+	0x5f, 0x2, 0x67, 0x33, 0xe4, 0xd0, 0xe1, 0x58, 0x93, 0x6, 
+	0x8c, 0xdb, 0x8b, 0xaa, 0x21, 0x86, 0xf7, 0xe3, 0xf0, 0x87, 
+	0x6, 0xb5, 0x17, 0x9b, 0x5c, 0x8d, 0xc, 0x8d, 0xff, 0x73, 
+	0xaf, 0x9f, 0x61, 0x12, 0x29, 0x7b, 0x6f, 0x15, 0x7f, 0x8a, 
+	0x70, 0xec, 0x1e, 0xc2, 0xd6, 0xc4, 0x30, 0x3d, 0xc8, 0x36, 
+	0x85, 0x7f, 0x38, 0xa, 0x5b, 0xe9, 0x54, 0x9, 0x89, 0xc3, 
+	0x51, 0x97, 0x45, 0xf5, 0x9a, 0xdc, 0x16, 0x8f, 0xb9, 0xd8, 
+	0xc, 0xd, 0xa7, 0x32, 0xa5, 0xb, 0xdd, 0x56, 0x42, 0x38, 
+	0xe, 0x72, 0x82, 0x94, 0x30, 0x1e, 0x2d, 0xe6, 0xf0, 0xae, 
+	0x2, 0xdb, 0x1c, 0x59, 0xd4, 0xd4, 0xb1, 0xa0, 0xf1, 0x7d, 
+	0x98, 0x50, 0xc7, 0x19, 0x32, 0x31, 0x3, 0x93, 0x23, 0x8b, 
+	0xda, 0x5, 0xd5, 0xf7, 0x4a, 0x8e, 0x29, 0xcf, 0xc0, 0xfa, 
+	0x93, 0xa4, 0x9a, 0xc8, 0xf3, 0x3b, 0xf9, 0xbb, 0x9f, 0xbf, 
+	0x47, 0x2c, 0xbe, 0x49, 0x9c, 0x1f, 0xca, 0x6a, 0x6b, 0x7c, 
+	0x4, 0xa3, 0x89, 0xdb, 0xb0, 0xc4, 0x12, 0x7e, 0xe4, 0x36, 
+	0x9c, 0xc8, 0xa3, 0x9, 0x43, 0x75, 0x66, 0x31, 0x99, 0x47, 
+	0x95, 0x23, 0x90, 0x33, 0x70, 0xae, 0x34, 0xad, 0xb0, 0x5, 
+	0x88, 0x1, 0xf4, 0xa6, 0xad, 0x5f, 0xbc, 0x3b, 0x9c, 0xbf, 
+	0x85, 0xfc, 0xdd, 0x60, 0x27, 0xdc, 0xd1, 0x16, 0x3a, 0xc6, 
+	0x42, 0x3e, 0xb, 0x4d, 0xc9, 0xa2, 0x2e, 0x43, 0x4f, 0x5a, 
+	0x26, 0x49, 0xac, 0x2a, 0x2d, 0xfa, 0x34, 0xb, 0x4d, 0x2f, 
+	0x64, 0x2e, 0x10, 0x34, 0x2d, 0x54, 0x20, 0x70, 0x7a, 0x28, 
+	0x8b, 0x63, 0xc5, 0x85, 0xbc, 0x80, 0x67, 0x48, 0xb7, 0x16, 
+	0x67, 0x64, 0x31, 0x73, 0xd1, 0xe0, 0xf0, 0xb8, 0x39, 0x4e, 
+	0x9b, 0x31, 0xcf, 0xac, 0x2c, 0x66, 0xd9, 0x44, 0x8f, 0xd7, 
+	0x39, 0x2b, 0x8b, 0xd9, 0xf9, 0xe1, 0xc8, 0x59, 0xfb, 0x95, 
+	0x9c, 0x8d, 0x85, 0x3b, 0x2b, 0xb, 0x76, 0x56, 0x8e, 0xb0, 
+	0xd3, 0x31, 0xc7, 0x93, 0xc1, 0xb9, 0x79, 0x56, 0x14, 0xd, 
+	0x8e, 0x8f, 0x9f, 0x53, 0x9c, 0x37, 0x56, 0xf3, 0xc6, 0xae, 
+	0xbc, 0xb1, 0x7b, 0xd0, 0xc0, 0xa2, 0x1, 0x3, 0xbd, 0xc5, 
+	0x5e, 0xd5, 0xeb, 0xf2, 0xba, 0x73, 0x86, 0xe5, 0x16, 0x2b, 
+	0xf3, 0x16, 0x7b, 0x3d, 0xe4, 0xf5, 0x8c, 0xdf, 0x71, 0xb0, 
+	0x37, 0xcf, 0xf1, 0x94, 0x6d, 0x7f, 0x2a, 0xe7, 0xc0, 0x50, 
+	0x72, 0x6, 0x93, 0xf7, 0x62, 0x4e, 0xdb, 0x5e, 0xcc, 0x6d, 
+	0xeb, 0xc7, 0x9, 0x15, 0xf3, 0xb2, 0x66, 0x96, 0xc8, 0x71, 
+	0x67, 0x31, 0x3f, 0x8b, 0x5, 0xfd, 0x58, 0xf8, 0xa4, 0x54, 
+	0x16, 0x8b, 0xb8, 0x68, 0xc7, 0x81, 0x9d, 0x23, 0x25, 0x2e, 
+	0x1f, 0x6d, 0x4d, 0xe6, 0xc0, 0x1a, 0x91, 0x54, 0x71, 0x92, 
+	0x6c, 0x79, 0x18, 0x5f, 0x2d, 0x53, 0xb3, 0x58, 0x9c, 0x39, 
+	0x50, 0x6f, 0x9d, 0x7c, 0xfd, 0xca, 0xcc, 0x81, 0xb9, 0xf9, 
+	0x9a, 0x1a, 0x58, 0x53, 0x75, 0x4e, 0x7, 0x5f, 0x92, 0x14, 
+	0x17, 0x86, 0xbb, 0x71, 0x94, 0x7d, 0x81, 0x5e, 0xe7, 0x82, 
+	0x1, 0xae, 0xd0, 0x95, 0x5c, 0x97, 0x6b, 0xb9, 0x26, 0x1f, 
+	0xc5, 0xf5, 0xd7, 0xc7, 0xb5, 0x77, 0x26, 0xd7, 0xdb, 0x66, 
+	0xae, 0xb4, 0x6b, 0xb8, 0x9c, 0x9c, 0xc1, 0x57, 0x2a, 0xc8, 
+	0xe5, 0x23, 0xc5, 0x57, 0x7f, 0x2b, 0x5f, 0xe1, 0xbb, 0x79, 
+	0xb4, 0x93, 0x2f, 0xdb, 0x2e, 0xf4, 0xe0, 0x45, 0x9c, 0xcb, 
+	0xbf, 0xc4, 0xce, 0xc7, 0x87, 0x5c, 0x72, 0x3e, 0xc5, 0x5, 
+	0x34, 0x17, 0x97, 0xd1, 0x52, 0x5c, 0x41, 0x7e, 0x5c, 0x4d, 
+	0xad, 0xb8, 0x86, 0xd6, 0xe3, 0x3a, 0x4a, 0xe3, 0x7a, 0xba, 
+	0x10, 0x37, 0xd0, 0x76, 0xdc, 0x48, 0xf, 0x62, 0x1b, 0xed, 
+	0xc3, 0x76, 0x7a, 0x15, 0x37, 0xd1, 0x5b, 0xb8, 0x99, 0xde, 
+	0xc3, 0x2d, 0xf4, 0x31, 0x6e, 0xa5, 0x2f, 0x70, 0x9b, 0xe2, 
+	0xc1, 0xed, 0xca, 0x38, 0xec, 0x50, 0x26, 0xe3, 0xe, 0x65, 
+	0x36, 0xee, 0x54, 0x16, 0xe3, 0x2e, 0xa5, 0x19, 0x37, 0x29, 
+	0x6d, 0xd8, 0xa9, 0x24, 0x90, 0x51, 0x2e, 0xc6, 0x3d, 0xca, 
+	0xa5, 0x34, 0x4d, 0xd9, 0x85, 0x88, 0xf2, 0x28, 0xcd, 0x54, 
+	0x5e, 0xa2, 0x59, 0xca, 0xab, 0x74, 0xbc, 0xf2, 0xe, 0x9d, 
+	0xa0, 0xbc, 0x47, 0xf3, 0x94, 0xf7, 0x69, 0x81, 0xf2, 0x11, 
+	0x2d, 0x52, 0x3e, 0xa1, 0xc5, 0x79, 0xc5, 0xe, 0xf2, 0x1b, 
+	0xcd, 0xee, 0x13, 0xcb, 0xb8, 0x9a, 0xa8, 0x4c, 0x79, 0xa3, 
+	0x66, 0x4e, 0x51, 0x6, 0x93, 0xec, 0x94, 0x90, 0xe2, 0xec, 
+	0xb5, 0x73, 0xa8, 0xb4, 0xb3, 0x7a, 0xfd, 0xf8, 0x2c, 0x96, 
+	0xf4, 0x16, 0x91, 0xb7, 0xa8, 0xc6, 0xeb, 0x5c, 0xbf, 0xe3, 
+	0xe0, 0xdb, 0x52, 0xb0, 0xab, 0x6b, 0xc6, 0x7b, 0x39, 0xbe, 
+	0x8d, 0x72, 0xec, 0xf6, 0xd8, 0xbc, 0xd0, 0x83, 0x63, 0xa7, 
+	0x59, 0x47, 0x66, 0x9f, 0x58, 0x2c, 0xb7, 0x74, 0x42, 0x16, 
+	0x4b, 0xfb, 0xb0, 0x2c, 0x8f, 0x79, 0xb9, 0x90, 0x2b, 0x4d, 
+	0xb2, 0x3f, 0x6f, 0xdf, 0x72, 0x3b, 0x8d, 0xc6, 0xda, 0x17, 
+	0xcd, 0x4e, 0x9f, 0xbc, 0xe9, 0xb2, 0x67, 0xcd, 0xeb, 0xcc, 
+	0x12, 0xbf, 0x26, 0x22, 0x96, 0x49, 0xcd, 0x22, 0x4b, 0x76, 
+	0xa5, 0x4d, 0xf3, 0x73, 0x9b, 0x10, 0x9a, 0x7f, 0x37, 0x3b, 
+	0x3c, 0x8f, 0xdb, 0x6f, 0xdb, 0xe0, 0xf1, 0x9e, 0x6, 0x2f, 
+	0xbb, 0xdd, 0x86, 0x62, 0x5a, 0x8b, 0x49, 0x8c, 0xa7, 0xd3, 
+	0x99, 0x98, 0xc7, 0x87, 0xd2, 0x48, 0x1, 0x9c, 0x4a, 0x1b, 
+	0xd0, 0x46, 0x21, 0xb4, 0x93, 0xe, 0x83, 0xda, 0x71, 0x1e, 
+	0x75, 0xe0, 0x12, 0xda, 0xc8, 0x87, 0xb4, 0x9, 0x19, 0x8a, 
+	0xe2, 0x1, 0x8a, 0xa1, 0x8f, 0xe2, 0xd8, 0x47, 0x9, 0x3c, 
+	0x4d, 0x67, 0xe3, 0x79, 0x32, 0xf0, 0x12, 0x25, 0xf1, 0x3a, 
+	0x1f, 0x68, 0x7e, 0x2f, 0x39, 0x7, 0xdf, 0xb0, 0x8b, 0xf5, 
+	0x6b, 0x1c, 0x66, 0xa9, 0x98, 0x97, 0x4b, 0x2c, 0x9f, 0xc5, 
+	0xc5, 0x56, 0x48, 0x4f, 0xde, 0x86, 0xf3, 0xa6, 0xee, 0xc1, 
+	0x8a, 0x5d, 0x66, 0x45, 0x8b, 0x58, 0xcd, 0x9b, 0xae, 0x62, 
+	0xcc, 0xd, 0x9d, 0xae, 0xb6, 0xf1, 0x35, 0x36, 0xbe, 0xd6, 
+	0xc6, 0xfb, 0x19, 0x9f, 0xcc, 0xf8, 0x53, 0x1b, 0x7f, 0x66, 
+	0xe3, 0xcf, 0x5, 0x5b, 0xcd, 0xbd, 0x69, 0x1b, 0x37, 0xd6, 
+	0x2c, 0x56, 0x8a, 0x9a, 0xa9, 0x59, 0x9c, 0x92, 0x41, 0x89, 
+	0x3d, 0x6c, 0xce, 0xc0, 0xd5, 0x34, 0x2d, 0x8b, 0x55, 0xce, 
+	0xfb, 0x1c, 0xf7, 0xb1, 0x71, 0xe5, 0x9c, 0x9d, 0xbd, 0x66, 
+	0x8b, 0x88, 0x99, 0x6d, 0x8b, 0x5b, 0x3, 0xf5, 0xa2, 0x9c, 
+	0x2e, 0xc2, 0x7a, 0xda, 0x8a, 0x8d, 0x74, 0x19, 0x62, 0x74, 
+	0x5, 0xba, 0xe8, 0x4a, 0xf4, 0xb0, 0x1, 0x5b, 0xe8, 0x3a, 
+	0xf4, 0xd2, 0x8d, 0x1c, 0x8c, 0xed, 0xd8, 0x4a, 0x37, 0xf3, 
+	0xae, 0x73, 0xcd, 0x52, 0x7c, 0xde, 0xff, 00, 0x50, 0x4b, 
+	0x3, 0x4, 0xa, 00, 00, 00, 0x8, 00, 0x55, 0x58, 
+	0xda, 0x2c, 0xb6, 0xdd, 0x6b, 0x3d, 0x5, 0x3, 00, 00, 
+	0xbf, 0x5, 00, 00, 0x1f, 00, 00, 00, 0x61, 0x6e, 
+	0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x6f, 
+	0x72, 0x79, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x6f, 0x75, 
+	0x72, 0x63, 0x65, 0x2e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x95, 
+	0x54, 0x5b, 0x4f, 0x13, 0x41, 0x18, 0x3d, 0xd3, 0x6e, 0xaf, 
+	0x6c, 0xab, 0xa2, 0xa8, 0xb5, 0x5c, 0x4, 0x15, 0xcb, 0x96, 
+	0xb6, 0xca, 0xc5, 0xfb, 0x15, 0x10, 0xad, 0x82, 0x1a, 0x24, 
+	0xc6, 0xc8, 0x8b, 0x4b, 0x3b, 0x96, 0x25, 0xed, 0x2e, 0x6c, 
+	0xb7, 0xa2, 0x7f, 0x48, 0x5f, 0x7c, 0xc1, 0x58, 0xd, 0x3e, 
+	0xf8, 0xe8, 0x83, 0x3f, 0xca, 0x78, 0x66, 0x5b, 0x5a, 0x83, 
+	0x48, 0x62, 0x93, 0x39, 0xdf, 0xec, 0xcc, 0x77, 0x39, 0xdf, 
+	0xf9, 0x26, 0xfd, 0xf9, 0xeb, 0xdb, 0x77, 0x4, 0x91, 0xc3, 
+	0x6c, 0x1c, 0x49, 0x64, 0x62, 0x48, 0x60, 0x4c, 0x81, 0xa1, 
+	0x20, 0xab, 0x60, 0x5c, 0x41, 0xae, 0x7, 0x79, 0x14, 0x14, 
+	0x5c, 0x50, 0x70, 0x51, 0xc1, 0x84, 0x82, 0xc9, 0x38, 0x6f, 
+	0xa7, 0x22, 0x98, 0x8e, 0xe0, 0x52, 0x4, 0x97, 0x5, 0x42, 
+	0x5b, 0x56, 0xd9, 0x5b, 0x13, 0x10, 0x45, 0x81, 0xf0, 0x9a, 
+	0xb4, 0x2a, 0x6b, 0x9e, 0x40, 0xa0, 0x54, 0x13, 0x48, 0x2f, 
+	0xac, 0x9b, 0x6f, 0xcc, 0x82, 0xb9, 0xe5, 0x15, 0xac, 0x9a, 
+	0x59, 0x91, 0x85, 0x59, 0xa7, 0xea, 0xb8, 0x8b, 0x4e, 0x59, 
+	0x56, 0xaf, 0xd3, 0x77, 0xc3, 0x7a, 0x2b, 0xab, 0x75, 0xfa, 
+	0xae, 0xcc, 0x10, 0xac, 0x92, 0xc0, 0xe0, 0xde, 0x80, 0xa2, 
+	0xc2, 0x59, 0xc7, 0xae, 0x37, 0x6a, 0xd2, 0x55, 0x31, 0x37, 
+	0x2c, 0xdb, 0xf2, 0x6e, 0x9, 0x8c, 0x64, 0x8a, 0xc5, 0x3, 
+	0xb2, 0xaf, 0xcc, 0x8c, 0x3d, 0x17, 0xd0, 0x66, 0xf9, 0x21, 
+	0x70, 0x68, 0xc1, 0xb2, 0xe5, 0xe3, 0x46, 0x6d, 0x55, 0xba, 
+	0xcb, 0xe6, 0x6a, 0x95, 0x27, 0x3d, 0x66, 0xb9, 0xbc, 0x9b, 
+	0x55, 0x60, 0x38, 0x73, 0x70, 0x59, 0x95, 0x2a, 0x6e, 0xd5, 
+	0xff, 0x23, 0xe0, 0xa5, 0x40, 0xd2, 0x95, 0x35, 0xe7, 0x8d, 
+	0xec, 0x6, 0xd, 0xb8, 0x72, 0xb3, 0x21, 0xeb, 0xde, 0xb2, 
+	0xb3, 0x31, 0xe7, 0x6c, 0xd9, 0xb, 0xf2, 0xb5, 0xb7, 0xa4, 
+	0xb4, 0x5a, 0x92, 0x75, 0x69, 0x97, 0xc9, 0xb2, 0xee, 0x99, 
+	0xae, 0xf7, 0xd4, 0x75, 0xca, 0x8d, 0x92, 0x67, 0x39, 0xb6, 
+	0x40, 0xcc, 0x96, 0x5b, 0x4f, 0xdb, 0x1a, 0x45, 0xd8, 0x6f, 
+	0xb1, 0xe8, 0x33, 0x79, 0xe6, 0x34, 0xdc, 0x92, 0x9c, 0xb7, 
+	0x54, 0x23, 0x83, 0xa6, 0x4d, 0x2, 0x9e, 0x2c, 0x2f, 0xb2, 
+	0x9a, 0xfb, 0xce, 0xa7, 0xd1, 0xba, 0xcf, 0x2b, 0x86, 0x3a, 
+	0x52, 0xb8, 0xa2, 0xe3, 0x30, 0x8e, 0xe8, 0xe8, 0x55, 0x70, 
+	0x14, 0xc7, 0x74, 0xf4, 0xe1, 0xb8, 0x8e, 0x13, 0x38, 0x19, 
+	0xc1, 0x55, 0x1d, 0xd7, 0x70, 0x5d, 0xc7, 0xd, 0xdc, 0xd4, 
+	0x71, 0xb, 0xb7, 0x75, 0xdc, 0x51, 0x9f, 0x77, 0x31, 0xa3, 
+	0x63, 00, 0x83, 0x2, 0xa9, 0x7f, 0xe6, 0x17, 0x38, 0xec, 
+	0x6b, 0x50, 0x35, 0xed, 0x4a, 0xe1, 0xc9, 0xea, 0xba, 0x2c, 
+	0x71, 0xea, 0xfd, 0xfb, 0xc9, 0xd2, 0x6a, 0x49, 0x49, 0x10, 
+	0xcc, 0xa8, 0x6, 0xf6, 0x75, 0xea, 0xea, 0x94, 0xb0, 0x5a, 
+	0xdf, 0xb5, 0x8d, 0xaa, 0xf4, 0x58, 0x46, 0xcb, 0xf8, 0x6d, 
+	0x27, 0xea, 0xd2, 0x9b, 0xb3, 0x6a, 0xd2, 0xae, 0x53, 0x1b, 
+	0xa, 0x12, 0xca, 0x14, 0x3b, 0xe7, 0xdd, 0xc1, 0x53, 0x91, 
+	0xbf, 0x66, 0xf3, 0xc7, 0xb3, 0x50, 0x1, 0x51, 0x6, 0x3c, 
+	0xb0, 0x6c, 0x8f, 0x39, 0x62, 0xdc, 0xee, 0xa, 0x3c, 0xea, 
+	0xb, 0x7c, 0xe0, 0x93, 0x52, 0x5, 0x71, 0x9a, 0xaf, 0x3f, 
+	0x9, 0x8e, 0xb, 0x21, 0x40, 0x29, 0xb, 0xf5, 0xeb, 0x6d, 
+	0x5b, 0xea, 0xeb, 0x5b, 0x4a, 0xec, 0x5b, 0xaa, 0x4c, 0x8c, 
+	0x70, 0xa5, 0x70, 0x8a, 0x51, 0x69, 0xee, 0xe6, 0x11, 0xf0, 
+	0x63, 0x4f, 0x19, 0x5f, 0x21, 0x8c, 0x74, 0x13, 0x1, 0xa3, 
+	0xbf, 0x89, 0xa0, 0x91, 0x6b, 0x42, 0x33, 0x52, 0x5a, 0x13, 
+	0xa1, 0x6d, 0xde, 0x52, 0x27, 0xe5, 0x83, 0x30, 0x71, 0x18, 
+	0x1a, 0x46, 0x10, 0xc3, 0x19, 0x56, 0x3e, 0xcb, 0x1a, 0xe7, 
+	0x98, 0x6d, 0x94, 0x1e, 0x1c, 0x51, 0x3b, 0xe7, 0x27, 0xde, 
+	0x6, 0x68, 0x5d, 0xe3, 0x33, 0xc2, 0xd9, 0xf7, 0xd0, 0xb6, 
+	0xd5, 0xe6, 0x7, 0x12, 0xca, 0x68, 0x3b, 0x88, 0x4, 0x60, 
+	0x64, 0x9b, 0x8, 0xab, 0x4f, 0xae, 00, 0x57, 0x70, 0x7, 
+	0xd1, 0x20, 0xda, 0x7, 0x74, 0x89, 0x5, 0xd0, 0x76, 0x8e, 
+	0xb7, 0x76, 0xc1, 0xe0, 0xae, 0xa7, 0x72, 0xe0, 0xa, 0xf9, 
+	0x7, 0x3b, 0xe8, 0x89, 0xf9, 0xf7, 0x21, 0x3f, 0x6d, 0x97, 
+	0x6b, 0x1e, 0x3d, 0xc4, 0x31, 0x44, 0x61, 0x90, 0xcd, 0x38, 
+	0xb5, 0xc9, 0x91, 0xff, 0x5, 0xc, 0xe1, 0x22, 0x71, 0x2, 
+	0x37, 0x31, 0x89, 0xfb, 0x98, 0x42, 0x5, 0xd3, 0xd8, 0xc4, 
+	0x25, 0x46, 0xd, 0x51, 0xcd, 0x16, 0xff, 0x51, 0xb2, 0x57, 
+	0xfc, 0x93, 0x6d, 0xfe, 0x11, 0xed, 0x3, 0xb4, 0xe0, 0xc7, 
+	0x4e, 0xee, 0x30, 0x2d, 0x70, 0x95, 0x38, 0xdc, 0xe9, 0x39, 
+	0xbf, 0x27, 0x26, 0x6a, 0x8, 0x76, 0xd8, 0xe5, 0x93, 0xe4, 
+	0xbf, 0x1c, 0x58, 0x35, 0xca, 0x97, 0x9d, 0xc0, 0x6d, 0x9e, 
+	0x8e, 0x74, 0x62, 0x53, 0x5c, 0x2a, 0x56, 0x6c, 0xef, 0x29, 
+	0x31, 0x43, 0x3c, 0xd3, 0x71, 0x1b, 0x69, 0x97, 0x8, 0x1b, 
+	0xd9, 0x2f, 0xd0, 0xbb, 0xbe, 0x71, 0xff, 0xf4, 0x1e, 0xc7, 
+	0x38, 0x4f, 0x7b, 0x96, 0x3, 0x69, 0xf9, 0xbf, 0x60, 0xe3, 
+	0x6a, 0xb4, 0x53, 0x2d, 0xf5, 0xb, 0xca, 0xa4, 0xfb, 0x7, 
+	0xfa, 0xb4, 0x5d, 0x5, 0x95, 0x80, 0xfd, 0x6b, 0xe9, 0x57, 
+	0x7, 0xa, 0xd9, 0xcb, 0x71, 0x3, 0x45, 0x3e, 0x9b, 0x87, 
+	0x94, 0xf3, 0x11, 0x65, 0x5b, 0xe4, 0xcd, 0xa8, 0x4f, 0xf9, 
+	0xfc, 0x6f, 0x50, 0x4b, 0x1, 0x2, 0xa, 00, 0xa, 00, 
+	00, 00, 00, 00, 0x16, 0xa9, 0xda, 0x2c, 00, 00, 
+	00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 
+	0x9, 00, 00, 00, 00, 00, 00, 00, 00, 00, 
+	00, 00, 00, 00, 00, 00, 00, 00, 0x4d, 0x45, 
+	0x54, 0x41, 0x2d, 0x49, 0x4e, 0x46, 0x2f, 0x50, 0x4b, 0x1, 
+	0x2, 0xa, 00, 0xa, 00, 00, 00, 00, 00, 0x16, 
+	0xa9, 0xda, 0x2c, 0x1e, 0xb9, 0xd9, 0x17, 0x2d, 00, 00, 
+	00, 0x2d, 00, 00, 00, 0x14, 00, 00, 00, 00, 
+	00, 00, 00, 00, 00, 00, 00, 00, 00, 0x27, 
+	00, 00, 00, 0x4d, 0x45, 0x54, 0x41, 0x2d, 0x49, 0x4e, 
+	0x46, 0x2f, 0x4d, 0x41, 0x4e, 0x49, 0x46, 0x45, 0x53, 0x54, 
+	0x2e, 0x4d, 0x46, 0x50, 0x4b, 0x1, 0x2, 0xa, 00, 0xa, 
+	00, 00, 00, 0x8, 00, 0xe3, 0xa5, 0xda, 0x2c, 0x5f, 
+	0xeb, 0x71, 0x9a, 0xd7, 0xd, 00, 00, 0x8, 0x19, 00, 
+	00, 0xf, 00, 00, 00, 00, 00, 00, 00, 00, 
+	00, 00, 00, 00, 00, 0x86, 00, 00, 00, 0x76, 
+	0x6e, 0x63, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x2e, 0x63, 
+	0x6c, 0x61, 0x73, 0x73, 0x50, 0x4b, 0x1, 0x2, 0xa, 00, 
+	0xa, 00, 00, 00, 0x8, 00, 0x16, 0xa9, 0xda, 0x2c, 
+	0xc9, 0xa0, 0xa1, 0x6c, 0x47, 0xf, 00, 00, 0x1f, 0x1e, 
+	00, 00, 0xe, 00, 00, 00, 00, 00, 00, 00, 
+	00, 00, 00, 00, 00, 00, 0x8a, 0xe, 00, 00, 
+	0x72, 0x66, 0x62, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 
+	0x6c, 0x61, 0x73, 0x73, 0x50, 0x4b, 0x1, 0x2, 0xa, 00, 
+	0xa, 00, 00, 00, 0x8, 00, 0x55, 0x58, 0xda, 0x2c, 
+	0x7a, 0x44, 0x1b, 0x63, 0x14, 0x5, 00, 00, 0xb8, 0x8, 
+	00, 00, 0x19, 00, 00, 00, 00, 00, 00, 00, 
+	00, 00, 00, 00, 00, 00, 0xfd, 0x1d, 00, 00, 
+	0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 
+	0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x6e, 0x65, 0x6c, 0x2e, 
+	0x63, 0x6c, 0x61, 0x73, 0x73, 0x50, 0x4b, 0x1, 0x2, 0xa, 
+	00, 0xa, 00, 00, 00, 0x8, 00, 0x55, 0x58, 0xda, 
+	0x2c, 0xe7, 0x52, 0x7f, 0x83, 0x46, 0xb, 00, 00, 0xe7, 
+	0x14, 00, 00, 0xf, 00, 00, 00, 00, 00, 00, 
+	00, 00, 00, 00, 00, 00, 00, 0x48, 0x23, 00, 
+	00, 0x76, 0x6e, 0x63, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 
+	0x2e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x50, 0x4b, 0x1, 0x2, 
+	0xa, 00, 0xa, 00, 00, 00, 0x8, 00, 0x55, 0x58, 
+	0xda, 0x2c, 0xb6, 0xdd, 0x6b, 0x3d, 0x5, 0x3, 00, 00, 
+	0xbf, 0x5, 00, 00, 0x1f, 00, 00, 00, 00, 00, 
+	00, 00, 00, 00, 00, 00, 00, 00, 0xbb, 0x2e, 
+	00, 00, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 
+	0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x49, 0x6d, 0x61, 0x67, 
+	0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x63, 0x6c, 
+	0x61, 0x73, 0x73, 0x50, 0x4b, 0x5, 0x6, 00, 00, 00, 
+	00, 0x7, 00, 0x7, 00, 0xc3, 0x1, 00, 00, 0xfd, 
+	0x31, 00, 00, 00, 00, };
+
+static const unsigned char data_footer_plain[] __attribute__ ((aligned (2))) = {
+	/* /footer.plain */
+	0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0,
+	0x3c, 0x70, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 
+	0x72, 0x69, 0x67, 0x68, 0x74, 0x22, 0x3e, 0xa, 0x2f, 0x3c, 
+	0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 
+	0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 
+	0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x25, 0x37, 0x65, 
+	0x61, 0x64, 0x61, 0x6d, 0x2f, 0x22, 0x3e, 0x41, 0x64, 0x61, 
+	0x6d, 0x20, 0x44, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x3c, 
+	0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x3c, 
+	0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 
+	0xa, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xa, 
+	0x20, 0x20, 0x20, 0x20, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 
+	0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 
+};
+
+const struct httpd_fsdata_file file_img_screenshot_png[] = {{NULL, data_img_screenshot_png, data_img_screenshot_png + 20, sizeof(data_img_screenshot_png) - 20}};
+
+const struct httpd_fsdata_file file_cgi_sensors[] = {{file_img_screenshot_png, data_cgi_sensors, data_cgi_sensors + 14, sizeof(data_cgi_sensors) - 14}};
+
+const struct httpd_fsdata_file file_cgi_processes[] = {{file_cgi_sensors, data_cgi_processes, data_cgi_processes + 16, sizeof(data_cgi_processes) - 16}};
+
+const struct httpd_fsdata_file file_cgi_tcp[] = {{file_cgi_processes, data_cgi_tcp, data_cgi_tcp + 10, sizeof(data_cgi_tcp) - 10}};
+
+const struct httpd_fsdata_file file_header_html[] = {{file_cgi_tcp, data_header_html, data_header_html + 14, sizeof(data_header_html) - 14}};
+
+const struct httpd_fsdata_file file_404_html[] = {{file_header_html, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}};
+
+const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}};
+
+const struct httpd_fsdata_file file_vnc_html[] = {{file_index_html, data_vnc_html, data_vnc_html + 10, sizeof(data_vnc_html) - 10}};
+
+const struct httpd_fsdata_file file_vncjava_html[] = {{file_vnc_html, data_vncjava_html, data_vncjava_html + 14, sizeof(data_vncjava_html) - 14}};
+
+const struct httpd_fsdata_file file_vncviewer_jar[] = {{file_vncjava_html, data_vncviewer_jar, data_vncviewer_jar + 16, sizeof(data_vncviewer_jar) - 16}};
+
+const struct httpd_fsdata_file file_footer_plain[] = {{file_vncviewer_jar, data_footer_plain, data_footer_plain + 14, sizeof(data_footer_plain) - 14}};
+
+#define HTTPD_FS_ROOT file_footer_plain
+
+#define HTTPD_FS_NUMFILES 11
\ No newline at end of file
diff --git a/contiki-msp430/apps/httpd-fsdata.h b/contiki-msp430/apps/httpd-fsdata.h
new file mode 100644
index 0000000..dca6425
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fsdata.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2001, Swedish Institute of Computer Science.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright 
+ *    notice, this list of conditions and the following disclaimer in the 
+ *    documentation and/or other materials provided with the distribution. 
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by the Swedish Institute
+ *      of Computer Science and its contributors.
+ * 4. Neither the name of the Institute nor the names of its contributors 
+ *    may be used to endorse or promote products derived from this software 
+ *    without specific prior written permission. 
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE. 
+ *
+ * This file is part of the lwIP TCP/IP stack.
+ * 
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id: httpd-fsdata.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ */
+#ifndef __HTTPD_FSDATA_H__
+#define __HTTPD_FSDATA_H__
+
+#include "uipopt.h"
+
+struct httpd_fsdata_file {
+  const struct httpd_fsdata_file *next;
+  const char *name;
+  const char *data;
+  const int len;
+};
+
+struct httpd_fsdata_file_noconst {
+  struct httpd_fsdata_file *next;
+  char *name;
+  char *data;
+  int len;
+};
+
+#endif /* __HTTPD_FSDATA_H__ */
diff --git a/contiki-msp430/apps/httpd.c b/contiki-msp430/apps/httpd.c
new file mode 100644
index 0000000..1cd3582
--- /dev/null
+++ b/contiki-msp430/apps/httpd.c
@@ -0,0 +1,371 @@
+/*
+ * Copyright (c) 2001, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright 
+ *    notice, this list of conditions and the following disclaimer in the 
+ *    documentation and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id: httpd.c,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+
+
+#include "uip.h"
+#include "httpd.h"
+#include "httpd-fs.h"
+#include "httpd-fsdata.h"
+#include "httpd-cgi.h"
+
+/* The HTTP server states: */
+#define HTTP_DEALLOCATED  0
+#define HTTP_NOGET        1
+#define HTTP_FILE         2
+#define HTTP_TEXT         3
+#define HTTP_FUNC         4
+#define HTTP_END          5
+
+#ifdef DEBUG
+#include <stdio.h>
+#define PRINT(x) printf("%s", x)
+#define PRINTLN(x) printf("%s\n", x)
+#else /* DEBUG */
+#define PRINT(x)
+#define PRINTLN(x)
+#endif /* DEBUG */
+
+struct httpd_state *hs;
+
+extern const struct httpd_fsdata_file file_index_html;
+extern const struct httpd_fsdata_file file_404_html;
+
+static void next_scriptline(void);
+static void next_scriptstate(void);
+
+#define ISO_G        0x47
+#define ISO_E        0x45
+#define ISO_T        0x54
+#define ISO_slash    0x2f    
+#define ISO_c        0x63
+#define ISO_g        0x67
+#define ISO_i        0x69
+#define ISO_space    0x20
+#define ISO_nl       0x0a
+#define ISO_cr       0x0d
+#define ISO_a        0x61
+#define ISO_t        0x74
+#define ISO_hash     0x23
+#define ISO_period   0x2e
+
+#define HTTPD_CONF_NUMCONNS UIP_CONNS
+static struct httpd_state conns[HTTPD_CONF_NUMCONNS];
+static u8_t i;
+
+void beep(void);
+
+/*-----------------------------------------------------------------------------------*/
+static struct httpd_state *
+alloc_state(void)
+{
+  
+  for(i = 0; i < HTTPD_CONF_NUMCONNS; ++i) {
+    if(conns[i].state == HTTP_DEALLOCATED) {
+      return &conns[i];
+    }
+  }
+
+  /* We are overloaded! XXX: we'll just kick all other connections! */
+  for(i = 0; i < HTTPD_CONF_NUMCONNS; ++i) {
+    conns[i].state = HTTP_DEALLOCATED;
+  }
+  
+  return NULL;
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+dealloc_state(struct httpd_state *s)
+{
+  s->state = HTTP_DEALLOCATED;
+}
+/*-----------------------------------------------------------------------------------*/
+void
+httpd_init(void)
+{
+  httpd_fs_init();
+  
+  /* Listen to port 80. */
+  dispatcher_uiplisten(HTONS(80));
+
+  for(i = 0; i < HTTPD_CONF_NUMCONNS; ++i) {
+    conns[i].state = HTTP_DEALLOCATED;
+  }
+}
+/*-----------------------------------------------------------------------------------*/
+DISPATCHER_UIPCALL(httpd_appcall, state)
+{
+  struct httpd_fs_file fsfile;  
+  u8_t i;
+  DISPATCHER_UIPCALL_ARG(state);
+
+  hs = (struct httpd_state *)(state);
+  
+  /* We use the uip_ test functions to deduce why we were
+     called. If uip_connected() is non-zero, we were called
+     because a remote host has connected to us. If
+     uip_newdata() is non-zero, we were called because the
+     remote host has sent us new data, and if uip_acked() is
+     non-zero, the remote host has acknowledged the data we
+     previously sent to it. */
+  if(uip_connected()) {
+
+    /* Since we've just been connected, the state pointer should be
+       NULL and we need to allocate a new state object. If we have run
+       out of memory for state objects, we'll have to abort the
+       connection and return. */
+    if(hs == NULL) {
+      hs = alloc_state();
+      if(hs == NULL) {
+	uip_close();
+	return;
+      }
+      dispatcher_markconn(uip_conn, (void *)hs);
+    }
+    /* Since we have just been connected with the remote host, we
+       reset the state for this connection. The ->count variable
+       contains the amount of data that is yet to be sent to the
+       remote host, and the ->state is set to HTTP_NOGET to signal
+       that we haven't received any HTTP GET request for this
+       connection yet. */
+    hs->state = HTTP_NOGET;
+    hs->count = 0;
+    hs->poll = 0;
+  } else if(uip_closed() || uip_aborted()) {
+    if(hs != NULL) {
+      dealloc_state(hs);
+    }
+    return;
+  } else if(uip_poll()) {
+    /* If we are polled ten times, we abort the connection. This is
+       because we don't want connections lingering indefinately in
+       the system. */
+    if(hs != NULL) {
+      if(hs->state == HTTP_DEALLOCATED) {
+	uip_abort();
+      } else if(hs->poll++ >= 100) {
+	uip_abort();
+	dealloc_state(hs);
+      }
+    }
+    return;
+  }
+
+
+  if(uip_newdata() && hs->state == HTTP_NOGET) {
+    hs->poll = 0;
+    /* This is the first data we receive, and it should contain a
+       GET. */
+      
+    /* Check for GET. */
+    if(uip_appdata[0] != ISO_G ||
+       uip_appdata[1] != ISO_E ||
+       uip_appdata[2] != ISO_T ||
+       uip_appdata[3] != ISO_space) {
+      /* If it isn't a GET, we abort the connection. */
+      uip_abort();
+      dealloc_state(hs);
+      return;
+    }
+
+    beep();
+    
+    /* Find the file we are looking for. */
+    for(i = 4; i < 40; ++i) {
+      if(uip_appdata[i] == ISO_space ||
+	 uip_appdata[i] == ISO_cr ||
+	 uip_appdata[i] == ISO_nl) {
+	uip_appdata[i] = 0;
+	break;
+      }
+    }
+
+    PRINT("request for file ");
+    PRINTLN(&uip_appdata[4]);
+    webserver_log_file(uip_conn->ripaddr, &uip_appdata[4]);
+    /* Check for a request for "/". */
+    if(uip_appdata[4] == ISO_slash &&
+       uip_appdata[5] == 0) {
+      httpd_fs_open(file_index_html.name, &fsfile);    
+    } else {
+      if(!httpd_fs_open((const char *)&uip_appdata[4], &fsfile)) {
+	PRINTLN("couldn't open file");
+	httpd_fs_open(file_404_html.name, &fsfile);
+      }
+    } 
+
+    if(uip_appdata[4] == ISO_slash &&
+       uip_appdata[5] == ISO_c &&
+       uip_appdata[6] == ISO_g &&
+       uip_appdata[7] == ISO_i &&
+       uip_appdata[8] == ISO_slash) {
+      /* If the request is for a file that starts with "/cgi/", we
+	 prepare for invoking a script. */	
+      hs->script = fsfile.data;
+      next_scriptstate();
+    } else {
+      hs->script = NULL;
+      /* The web server is now no longer in the HTTP_NOGET state, but
+	 in the HTTP_FILE state since is has now got the GET from
+	 the client and will start transmitting the file. */
+      hs->state = HTTP_FILE;
+
+      /* Point the file pointers in the connection state to point to
+	 the first byte of the file. */
+      hs->dataptr = fsfile.data;
+      hs->count = fsfile.len;	
+    }     
+  }
+
+    
+  if(hs->state != HTTP_FUNC) {
+    /* Check if the client (remote end) has acknowledged any data that
+       we've previously sent. If so, we move the file pointer further
+       into the file and send back more data. If we are out of data to
+       send, we close the connection. */
+    if(uip_acked()) {
+      hs->poll = 0;	
+      if(hs->count >= uip_mss()) {
+	hs->count -= uip_mss();
+	hs->dataptr += uip_mss();
+      } else {
+	hs->count = 0;
+      }
+	
+      if(hs->count == 0) {
+	if(hs->script != NULL) {
+	  next_scriptline();
+	  next_scriptstate();
+	} else {
+	  uip_close();
+	  dealloc_state(hs);
+	}
+      }
+    }         
+  }
+    
+  if(hs->state == HTTP_FUNC) {
+    /* Call the CGI function. */
+#if 1
+    if(httpd_cgitab[hs->script[2] - ISO_a]()) {
+      /* If the function returns non-zero, we jump to the next line
+	 in the script. */
+      next_scriptline();
+      next_scriptstate();
+    }
+#endif
+  }
+
+  if(hs->state != HTTP_FUNC && !uip_poll()) {
+    hs->poll = 0;
+    /* Send a piece of data, but not more than the MSS of the
+       connection. */
+    uip_send(hs->dataptr,
+	     hs->count > uip_mss()? uip_mss(): hs->count);
+  }
+
+  /* Finally, return to uIP. Our outgoing packet will soon be on its
+     way... */
+}
+/*-----------------------------------------------------------------------------------*/
+/* next_scriptline():
+ *
+ * Reads the script until it finds a newline. */
+static void
+next_scriptline(void)
+{
+  /* Loop until we find a newline character. */
+  do {
+    ++(hs->script);
+  } while(hs->script[0] != ISO_nl);
+
+  /* Eat up the newline as well. */
+  ++(hs->script);
+}
+/*-----------------------------------------------------------------------------------*/
+/* next_sciptstate:
+ *
+ * Reads one line of script and decides what to do next.
+ */
+static void
+next_scriptstate(void)
+{
+  struct httpd_fs_file fsfile;
+  u8_t i;
+
+ again:
+  switch(hs->script[0]) {
+  case ISO_t:
+    /* Send a text string. */
+    hs->state = HTTP_TEXT;
+    hs->dataptr = &hs->script[2];
+
+    /* Calculate length of string. */
+    for(i = 0; hs->dataptr[i] != ISO_nl; ++i);
+    hs->count = i;    
+    break;
+  case ISO_c:
+    /* Call a function. */
+    hs->state = HTTP_FUNC;
+    hs->dataptr = NULL;
+    hs->count = 0;
+    uip_reset_acked();
+    break;
+  case ISO_i:   
+    /* Include a file. */
+    hs->state = HTTP_FILE;
+    if(!httpd_fs_open(&hs->script[2], &fsfile)) {
+      uip_abort();
+      dealloc_state(hs);
+    }
+    hs->dataptr = fsfile.data;
+    hs->count = fsfile.len;
+    break;
+  case ISO_hash:
+    /* Comment line. */
+    next_scriptline();
+    goto again;
+    break;
+  case ISO_period:
+    /* End of script. */
+    hs->state = HTTP_END;
+    uip_close();
+    dealloc_state(hs);
+    break;
+  default:
+    uip_abort();
+    dealloc_state(hs);
+    break;
+  }
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/apps/makefsdata b/contiki-msp430/apps/makefsdata
new file mode 100755
index 0000000..89f210d
--- /dev/null
+++ b/contiki-msp430/apps/makefsdata
@@ -0,0 +1,104 @@
+#!/usr/bin/perl
+
+open(OUTPUT, "> httpd-fsdata.c");
+
+chdir("httpd-fs");
+open(FILES, "find . -type f |");
+
+
+while($file = <FILES>) {
+
+    # Do not include files in CVS directories nor backup files.
+    if($file =~ /(CVS|~)/) {
+    	next;
+    }
+    
+    chop($file);
+    
+    open(HEADER, "> /tmp/header") || die $!;
+    if($file =~ /404.html/) {
+      print(HEADER "HTTP/1.0 404 File not found\r\n");
+    } else {
+      print(HEADER "HTTP/1.0 200 OK\r\n");
+    }
+    print(HEADER "Server: Contiki/pre-1.1 (http://dunkels.com/adam/contiki/)\r\n");
+    if($file =~ /\.html$/) {
+	print(HEADER "Content-type: text/html\r\n");
+    } elsif($file =~ /\.gif$/) {
+	print(HEADER "Content-type: image/gif\r\n");
+    } elsif($file =~ /\.png$/) {
+	print(HEADER "Content-type: image/png\r\n");
+    } elsif($file =~ /\.jpg$/) {
+	print(HEADER "Content-type: image/jpeg\r\n");
+    } elsif($file =~ /\.css$/) {
+	print(HEADER "Content-type: text/css\r\n");
+    } else {
+	print(HEADER "Content-type: text/plain\r\n");
+    }
+    print(HEADER "\r\n");
+    close(HEADER);
+
+    unless($file =~ /\.plain$/ || $file =~ /cgi/) {
+	system("cat /tmp/header $file > /tmp/file");
+    } else {
+	system("cp $file /tmp/file");
+    }
+    
+    open(FILE, "/tmp/file");
+    unlink("/tmp/file");
+    unlink("/tmp/header");
+
+    $file =~ s/\.//;
+    $fvar = $file;
+    $fvar =~ s-/-_-g;
+    $fvar =~ s-\.-_-g;
+    print(OUTPUT "static const unsigned char data".$fvar."[] __attribute__ ((aligned (2))) = {\n");
+    print(OUTPUT "\t/* $file */\n\t");
+    for($j = 0; $j < length($file); $j++) {
+	printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1)));
+    }
+    printf(OUTPUT "0,\n");
+
+    if((length($file) & 1) == 0) {
+      printf(OUTPUT "0,\n");
+    }
+    
+    $i = 0;        
+    while(read(FILE, $data, 1)) {
+        if($i == 0) {
+            print(OUTPUT "\t");
+        }
+        printf(OUTPUT "%#02x, ", unpack("C", $data));
+        $i++;
+        if($i == 10) {
+            printf(OUTPUT "\n");
+            $i = 0;
+        }
+
+    }
+    print(OUTPUT "};\n\n");
+    close(FILE);
+    push(@fvars, $fvar);
+    push(@files, $file);
+}
+
+for($i = 0; $i < @fvars; $i++) {
+    $file = $files[$i];
+    $fvar = $fvars[$i];
+
+    if($i == 0) {
+        $prevfile = "NULL";
+    } else {
+        $prevfile = "file" . $fvars[$i - 1];
+    }
+    $len = length($file) + 1;
+    if(($len & 1) == 1) {
+      $len++;
+    }
+    print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, ");
+    print(OUTPUT "data$fvar + ". $len .", ");
+    print(OUTPUT "sizeof(data$fvar) - ". $len ."}};\n\n");
+}
+
+print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n");
+print(OUTPUT "#define HTTPD_FS_NUMFILES $i");
diff --git a/contiki-msp430/apps/makestrings b/contiki-msp430/apps/makestrings
new file mode 100755
index 0000000..0cf6c9e
--- /dev/null
+++ b/contiki-msp430/apps/makestrings
@@ -0,0 +1,39 @@
+#!/usr/bin/perl
+
+
+sub stringify {
+  my $name = shift(@_);
+  open(OUTPUTC, "> $name.c");
+  open(OUTPUTH, "> $name.h");
+  
+  open(FILE, "$name");
+  
+  while(<FILE>) {
+    if(/(.+) "(.+)"/) {
+      $var = $1;
+      $data = $2;
+      
+      $datan = $data;
+      $datan =~ s/\\r/\r/g;
+      $datan =~ s/\\n/\n/g;
+      $datan =~ s/\\0/\0/g;
+      
+      printf(OUTPUTC "const char $var\[%d] = \n", length($datan) + 1);
+      printf(OUTPUTC "/* \"$data\" */\n");
+      printf(OUTPUTC "{");
+      for($j = 0; $j < length($datan); $j++) {
+	printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1)));
+      }
+      printf(OUTPUTC "};\n");
+      
+      printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1);
+      
+    }
+  }
+  close(OUTPUTC);
+  close(OUTPUTH);
+}
+stringify("http-user-agent-string");
+
+exit 0;
+
diff --git a/contiki-msp430/apps/sensorcheck.c b/contiki-msp430/apps/sensorcheck.c
new file mode 100644
index 0000000..7d8095c
--- /dev/null
+++ b/contiki-msp430/apps/sensorcheck.c
@@ -0,0 +1,76 @@
+#include "ctk.h"
+#include "dispatcher.h"
+#include "loader.h"
+#include "sensors.h"
+
+#include "uip-signal.h"
+
+#include <stdio.h>
+
+
+static void sensorcheck_idle(void);   
+static DISPATCHER_SIGHANDLER(sensorcheck_sighandler, s, data);
+static struct dispatcher_proc p =
+  {DISPATCHER_PROC("Sensor check", sensorcheck_idle,
+		   sensorcheck_sighandler, NULL)};
+static ek_id_t id = EK_ID_NONE;
+
+static unsigned char dataavail;
+
+static struct uip_udp_conn *conn;
+static int vib;
+
+/*-----------------------------------------------------------------------------------*/
+LOADER_INIT_FUNC(sensorcheck_init, arg)
+{
+  u16_t server[2];
+  arg_free(arg);
+    
+  if(id == EK_ID_NONE) {
+    id = dispatcher_start(&p);
+    uip_ipaddr(server, 192,168,1,1);
+    conn = uip_udp_new(server, 5125);
+  }
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+sensorcheck_quit(void)
+{
+  dispatcher_exit(&p);
+  id = EK_ID_NONE;
+  LOADER_UNLOAD();
+}
+/*-----------------------------------------------------------------------------------*/
+static
+DISPATCHER_SIGHANDLER(sensorcheck_sighandler, s, data)
+{
+  DISPATCHER_SIGHANDLER_ARGS(s, data);
+
+  if(s == dispatcher_signal_quit) {
+    sensorcheck_quit();
+  }
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+sensorcheck_idle(void)
+{
+  /* Check vibration sensor, and send out data. */
+  if(sensors_vib != vib) {
+    vib = sensors_vib;
+    ++dataavail;
+    if(conn != NULL) {
+      dispatcher_emit(uip_signal_poll_udp, conn, DISPATCHER_BROADCAST);
+    }
+  }
+}
+/*-----------------------------------------------------------------------------------*/
+void
+udp_appcall(void)
+{
+  if(dataavail) {
+    *(int *)uip_appdata = vib;
+    uip_udp_send(sizeof(int));
+    dataavail = 0;
+  }
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/apps/sensorview-dsc.c b/contiki-msp430/apps/sensorview-dsc.c
new file mode 100644
index 0000000..61fc73f
--- /dev/null
+++ b/contiki-msp430/apps/sensorview-dsc.c
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the Contiki desktop environment
+ *
+ * $Id: sensorview-dsc.c,v 1.3 2005/03/18 00:52:32 oliverschmidt Exp $
+ *
+ */
+
+#include "dsc.h"
+
+extern struct ctk_icon sensorview_icon;
+/*-----------------------------------------------------------------------------------*/
+DSC(sensorview_dsc,
+    "Sensors",
+    "sensorview.prg",
+    sensorview_init,
+    &sensorview_icon);
+/*-----------------------------------------------------------------------------------*/
+#if CTK_CONF_ICON_BITMAPS
+static const unsigned char sensorviewicon_bitmap[3*3*8] = {
+  0x00, 0x7f, 0x43, 0x4c, 0x58, 0x53, 0x60, 0x6f,
+  0x00, 0xff, 0x00, 0x7e, 0x00, 0xff, 0x00, 0xff,
+  0x00, 0xfe, 0xc2, 0x32, 0x1a, 0xca, 0x06, 0xf6,
+
+  0x40, 0x5f, 0x40, 0x5f, 0x40, 0x5f, 0x40, 0x4f,
+  0x00, 0xff, 0x00, 0xff, 0x00, 0xfc, 0x01, 0xf3,
+  0x02, 0xfa, 0x02, 0x82, 0x3e, 0xfe, 0xfe, 0xfe,
+
+  0x60, 0x67, 0x50, 0x59, 0x4c, 0x43, 0x7f, 0x00,
+  0x07, 0xe7, 0x0f, 0xef, 0x0f, 0x0f, 0xff, 0x00,
+  0x8e, 0x06, 0x06, 0x06, 0x8e, 0xfe, 0xfe, 0x00
+};
+#endif /* CTK_CONF_ICON_BITMAPS */
+
+#if CTK_CONF_ICON_TEXTMAPS
+static const char sensorviewicon_textmap[9] = {
+  ' ', ' ', 'c',
+  ' ', '?', ' ',
+  '.', ' ', ' '
+};
+#endif /* CTK_CONF_ICON_TEXTMAPS */
+
+#if CTK_CONF_ICONS
+static struct ctk_icon sensorview_icon =
+  {CTK_ICON("Sensors", sensorviewicon_bitmap, sensorviewicon_textmap)};
+#endif /* CTK_CONF_ICONS */
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/apps/sensorview-dsc.h b/contiki-msp430/apps/sensorview-dsc.h
new file mode 100644
index 0000000..69d29ac
--- /dev/null
+++ b/contiki-msp430/apps/sensorview-dsc.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the Contiki desktop environment
+ *
+ * $Id: sensorview-dsc.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+#ifndef __SENSORVIEW_DSC_H__
+#define __SENSORVIEW_DSC_H__
+
+#include "dsc.h"
+
+DSC_HEADER(sensorview_dsc);
+
+#endif /* __SENSORVIEW_DSC_H__ */
diff --git a/contiki-msp430/apps/sensorview.c b/contiki-msp430/apps/sensorview.c
new file mode 100644
index 0000000..846b40a
--- /dev/null
+++ b/contiki-msp430/apps/sensorview.c
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution. 
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgement:
+ *        This product includes software developed by Adam Dunkels. 
+ * 4. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the Contiki desktop environment
+ *
+ * $Id: sensorview.c,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+
+#include "ctk.h"
+#include "dispatcher.h"
+#include "loader.h"
+#include "sensors.h"
+
+#include <stdio.h>
+
+static struct ctk_window window;
+
+#if 1
+static struct ctk_label templabel =
+  {CTK_LABEL(1, 1, 12, 1,"Temperature:")};
+static char tempval[7];
+static struct ctk_label tempvallabel =
+  {CTK_LABEL(4, 3, 6, 1, tempval)};
+#endif 
+
+static void sensorview_idle(void);   
+static DISPATCHER_SIGHANDLER(sensorview_sighandler, s, data);
+static struct dispatcher_proc p =
+  {DISPATCHER_PROC("Sensor view", sensorview_idle,
+		   sensorview_sighandler, NULL)};
+static ek_id_t id = EK_ID_NONE;
+
+/*-----------------------------------------------------------------------------------*/
+LOADER_INIT_FUNC(sensorview_init, arg)
+{
+  arg_free(arg);
+    
+  if(id == EK_ID_NONE) {
+    id = dispatcher_start(&p);
+
+    ctk_window_new(&window, 14, 4, "Sensors");
+#if 1
+    CTK_WIDGET_ADD(&window, &templabel);
+    CTK_WIDGET_ADD(&window, &tempvallabel);
+#endif
+    dispatcher_listen(ctk_signal_window_close);
+  }
+  ctk_window_open(&window);
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+sensorview_quit(void)
+{
+  ctk_window_close(&window);
+  dispatcher_exit(&p);
+  id = EK_ID_NONE;
+  LOADER_UNLOAD();
+}
+/*-----------------------------------------------------------------------------------*/
+static
+DISPATCHER_SIGHANDLER(sensorview_sighandler, s, data)
+{
+  DISPATCHER_SIGHANDLER_ARGS(s, data);
+
+  if(s == dispatcher_signal_quit ||
+     s == ctk_signal_window_close) {
+    sensorview_quit();
+  }
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+sensorview_idle(void)
+{
+  sprintf(tempval, "%d", sensors_temp);
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/apps/shell.c b/contiki-msp430/apps/shell.c
new file mode 100644
index 0000000..9f54ed5
--- /dev/null
+++ b/contiki-msp430/apps/shell.c
@@ -0,0 +1,219 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright 
+ *    notice, this list of conditions and the following disclaimer in the 
+ *    documentation and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the Contiki desktop OS.
+ *
+ * $Id: shell.c,v 1.1 2004/02/18 21:44:19 adamdunkels Exp $
+ *
+ */
+
+#include "program-handler.h"
+#include "loader.h"
+#include "uip.h"
+#include "uip_main.h"
+#include "uip_arp.h"
+#include "resolv.h"
+
+#include "uip-signal.h"
+
+#include "shell.h"
+
+#include <string.h>
+
+
+struct ptentry {
+  char c;
+  void (* pfunc)(char *str);
+};
+
+extern char *shell_prompt_text;
+
+/*-----------------------------------------------------------------------------------*/
+static void
+parse(register char *str, struct ptentry *t)
+{
+  register struct ptentry *p;
+  char *sstr;
+
+  sstr = str;
+  
+  /* Loop over the parse table entries in t in order to find one that
+     matches the first character in str. */
+  for(p = t; p->c != 0; ++p) {
+    if(*str == p->c) {
+      /* Skip rest of the characters up to the first space. */
+      while(*str != ' ') {
+	++str;
+      }
+
+      /* Skip all spaces.*/
+      while(*str == ' ') {
+	++str;
+      }
+
+      /* Call parse table entry function and return. */
+      p->pfunc(str);
+      return;
+    }
+  }
+
+  /* Did not find matching entry in parse table. We just call the
+     default handler supplied by the caller and return. */
+  p->pfunc(str);
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+inttostr(register char *str, unsigned int i)
+{
+  str[0] = '0' + i / 100;
+  if(str[0] == '0') {
+    str[0] = ' ';
+  }
+  str[1] = '0' + (i / 10) % 10;
+  if(str[1] == '0') {
+    str[1] = ' ';
+  }
+  str[2] = '0' + i % 10;
+  str[3] = ' ';
+  str[4] = 0;
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+processes(char *str)
+{
+  static char idstr[5];
+  struct dispatcher_proc *p;
+
+  shell_output("Processes:", "");
+  /* Step through each possible process ID and see if there is a
+     matching process. */
+  for(p = DISPATCHER_PROCS(); p != NULL; p = p->next) {
+    inttostr(idstr, p->id);
+    shell_output(idstr, p->name);
+  }
+}
+/*-----------------------------------------------------------------------------------*/
+static char *
+nullterminate(char *str)
+{
+  char *nt;
+
+  /* Nullterminate string. Start with finding newline character. */
+  for(nt = str; *nt != '\r' &&
+	*nt != '\n'; ++nt);
+
+  /* Replace newline with a null char. */
+  *nt = 0;
+
+  /* Remove trailing spaces. */
+  while(nt > str && *(nt - 1) == ' ') {
+    *(nt - 1) = 0;
+    --nt;
+  }
+  
+  /* Return pointer to null char. */
+  return nt;
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+killproc(char *str)
+{
+  char procnum, j, c;
+  char procstr[5];
+
+  nullterminate(str);
+  
+  procnum = 0;
+  
+  for(j = 0; j < 4; ++j) {
+    c = str[(int)j];
+    if(c >= '0' && c <= '9') {
+      procnum = procnum * 10 + (str[(int)j] - '0');
+    } else {
+      break;
+    }
+  }
+  if(procnum != 0) {
+    inttostr(procstr, procnum);
+    shell_output("Killing process ", procstr);
+    dispatcher_emit(dispatcher_signal_quit, NULL, procnum);
+  } else {
+    shell_output("Could not parse process number", "");
+  }
+  
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+help(char *str)
+{
+  shell_output("Available commands:", "");
+  shell_output("ps   - show processes", "");
+  shell_output("kill - kill process", "");
+  shell_output("quit - quit shell", "");
+  shell_output("?    - show this help", "");      
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+none(char *str)
+{
+}
+/*-----------------------------------------------------------------------------------*/
+static struct ptentry configparsetab[] =
+  {{'k', killproc},   
+   {'p', processes},
+   {'q', shell_quit},
+   {'?', help},
+
+   /* Default action */
+   {0, none}};
+/*-----------------------------------------------------------------------------------*/
+void
+shell_start(void)
+{
+  shell_output("Contiki command shell", "");
+  shell_output("Type '?' for help", "");  
+  shell_prompt(shell_prompt_text); 
+}
+/*-----------------------------------------------------------------------------------*/
+void
+shell_input(char *cmd)
+{
+  parse(cmd, configparsetab);
+  shell_prompt(shell_prompt_text); 
+}
+/*-----------------------------------------------------------------------------------*/
+void
+shell_idle(void)
+{
+}
+/*-----------------------------------------------------------------------------------*/
+void
+shell_init(void)
+{
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/apps/webserver.c b/contiki-msp430/apps/webserver.c
new file mode 100644
index 0000000..3b7cc7c
--- /dev/null
+++ b/contiki-msp430/apps/webserver.c
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution. 
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgement:
+ *        This product includes software developed by Adam Dunkels. 
+ * 4. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the Contiki desktop environment for the C64.
+ *
+ * $Id: webserver.c,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+
+
+#include "ctk.h"
+#include "dispatcher.h"
+#include "http-strings.h"
+#include "uip_main.h"
+#include "petsciiconv.h"
+
+#include "loader.h"
+
+#include "webserver.h"
+#include "httpd.h"
+
+static DISPATCHER_SIGHANDLER(webserver_sighandler, s, data);
+static struct dispatcher_proc p =
+{DISPATCHER_PROC("Web server", NULL, webserver_sighandler,
+		 httpd_appcall)};
+static ek_id_t id;
+
+/*-----------------------------------------------------------------------------------*/
+LOADER_INIT_FUNC(webserver_init, arg)
+{
+  arg_free(arg);
+  if(id == EK_ID_NONE) {
+    id = dispatcher_start(&p);
+
+    httpd_init();
+  }
+
+}
+/*-----------------------------------------------------------------------------------*/
+static
+DISPATCHER_SIGHANDLER(webserver_sighandler, s, data)
+{
+  unsigned char i;
+  DISPATCHER_SIGHANDLER_ARGS(s, data);
+}
+/*-----------------------------------------------------------------------------------*/
+void
+webserver_log_file(u16_t *requester, char *file)
+{
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/apps/webserver.h b/contiki-msp430/apps/webserver.h
new file mode 100644
index 0000000..ec12faa
--- /dev/null
+++ b/contiki-msp430/apps/webserver.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution. 
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgement:
+ *        This product includes software developed by Adam Dunkels. 
+ * 4. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the Contiki desktop environment for the C64.
+ *
+ * $Id: webserver.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+#ifndef __WEBSERVER_H__
+#define __WEBSERVER_H__
+
+void webserver_init(char *arg);
+
+void webserver_log_file(u16_t *requester, char *filename);
+
+#endif /* __WEBSERVER_H__ */
diff --git a/contiki-msp430/conf/cc-conf.h b/contiki-msp430/conf/cc-conf.h
new file mode 100644
index 0000000..f564c25
--- /dev/null
+++ b/contiki-msp430/conf/cc-conf.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution. 
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgement:
+ *        This product includes software developed by Adam Dunkels. 
+ * 4. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the Contiki desktop OS
+ *
+ * $Id: cc-conf.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+#ifndef __CC_CONF_H__
+#define __CC_CONF_H__
+
+#define CC_CONF_REGISTER_ARGS          1
+#define CC_CONF_FUNCTION_POINTER_ARGS  1
+
+#endif /* __CC_CONF_H__ */
+
diff --git a/contiki-msp430/conf/ctk-conf.h b/contiki-msp430/conf/ctk-conf.h
new file mode 100644
index 0000000..abefbef
--- /dev/null
+++ b/contiki-msp430/conf/ctk-conf.h
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution. 
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgement:
+ *        This product includes software developed by Adam Dunkels. 
+ * 4. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the "ctk" console GUI toolkit for cc65
+ *
+ * $Id: ctk-conf.h,v 1.2 2004/06/27 12:50:18 oliverschmidt Exp $
+ *
+ */
+
+#ifndef __CTK_CONF_H__
+#define __CTK_CONF_H__
+
+/*
+ * This file is used for setting various compile time settings for the
+ * CTK GUI toolkit.
+*/
+
+/* Defines which key that is to be used for activating the menus */
+#define CTK_CONF_MENU_KEY             CH_HOME
+
+/* Defines which key that is to be used for switching the frontmost
+   window.  */
+#define CTK_CONF_WINDOWSWITCH_KEY     CH_ESC
+
+/* Defines which key that is to be used for switching to the next
+   widget.  */
+#define CTK_CONF_WIDGETDOWN_KEY       CH_TAB
+
+/* Defines which key that is to be used for switching to the prevoius
+   widget.  */
+#define CTK_CONF_WIDGETUP_KEY         1
+
+/* Toggles support for icons. */
+#define CTK_CONF_ICONS                1 /* 107 bytes */
+
+/* Toggles support for icon bitmaps. */
+#define CTK_CONF_ICON_BITMAPS         1
+
+/* Toggles support for icon textmaps. */
+#define CTK_CONF_ICON_TEXTMAPS        1
+
+/* Toggles support for movable windows. */
+#define CTK_CONF_WINDOWMOVE           1 /* 333 bytes */
+
+/* Toggles support for closable windows. */
+#define CTK_CONF_WINDOWCLOSE          1 /* 14 bytes */
+
+/* Toggles support for menus. */
+#define CTK_CONF_MENUS                1 /* 1384 bytes */
+
+/* Toggles mouse support (must have support functions in the
+architecture specific files to work). */
+#define CTK_CONF_MOUSE_SUPPORT        1
+
+/* Defines the default width of a menu. */
+#define CTK_CONF_MENUWIDTH            16
+/* The maximum number of menu items in each menu. */
+#define CTK_CONF_MAXMENUITEMS         4
+
+#endif /* __CTK_CONF_H__ */
diff --git a/contiki-msp430/conf/ctk-vncserver-conf.h b/contiki-msp430/conf/ctk-vncserver-conf.h
new file mode 100644
index 0000000..6183a17
--- /dev/null
+++ b/contiki-msp430/conf/ctk-vncserver-conf.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution. 
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgement:
+ *        This product includes software developed by Adam Dunkels. 
+ * 4. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the Contiki desktop OS
+ *
+ * $Id: ctk-vncserver-conf.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+#ifndef __CTK_VNCSERVER_CONF_H__
+#define __CTK_VNCSERVER_CONF_H__
+
+#define CTK_VNCSERVER_CONF_NUMCONNS 1
+
+#define CTK_VNCSERVER_CONF_MAX_ICONS 1
+
+#define CTK_VNCSERVER_CONF_SUPPRESS_BLANKS 0
+
+#endif /* __CTK_VNCSERVER_CONF_H__ */
+
diff --git a/contiki-msp430/conf/ek-conf.h b/contiki-msp430/conf/ek-conf.h
new file mode 100644
index 0000000..073bc06
--- /dev/null
+++ b/contiki-msp430/conf/ek-conf.h
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution. 
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgement:
+ *        This product includes software developed by Adam Dunkels. 
+ * 4. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the "ek" event kernel.
+ *
+ * $Id: ek-conf.h,v 1.2 2003/11/27 15:57:32 adamdunkels Exp $
+ *
+ */
+
+
+#ifndef __EK_CONF_H__
+#define __EK_CONF_H__
+
+
+typedef void *ek_data_t;
+
+typedef unsigned char ek_signal_t;
+typedef unsigned char ek_id_t;
+
+/* ek_clock_t: should be defined to be the native clock ticks type
+   used by the underlying system. (Look for time_t or similar.) */
+typedef unsigned short ek_clock_t; 
+
+#define EK_CONF_NUMSIGNALS   16    /* Must be 2^n */
+typedef unsigned char ek_num_signals_t;
+
+#define EK_CONF_NUMTIMERS    4    /* Must be 2^n */
+typedef unsigned char ek_num_timers_t;
+
+#define EK_CONF_NUMLISTENERS  16    /* Must be 2^n */
+typedef unsigned char ek_num_listeners_t;
+
+#define EK_CONF_UNLISTEN 0
+
+#define CLK_TCK 20U
+
+#ifndef NULL
+#define NULL (void *)0
+#endif /* NULL */
+
+
+#endif /* __EK_CONF_H__ */
diff --git a/contiki-msp430/conf/libconio-conf.h b/contiki-msp430/conf/libconio-conf.h
new file mode 100644
index 0000000..b960b50
--- /dev/null
+++ b/contiki-msp430/conf/libconio-conf.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution. 
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgement:
+ *        This product includes software developed by Adam Dunkels. 
+ * 4. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the Contiki desktop OS
+ *
+ * $Id: libconio-conf.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+#ifndef __LIBCONIO_CONF_H__
+#define __LIBCONIO_CONF_H__
+
+#define LIBCONIO_CONF_SCREEN_WIDTH  20
+#define LIBCONIO_CONF_SCREEN_HEIGHT 7
+
+#endif /* __LIBCONIO_CONF_H__ */
+
diff --git a/contiki-msp430/conf/program-handler-conf.h b/contiki-msp430/conf/program-handler-conf.h
new file mode 100644
index 0000000..2948699
--- /dev/null
+++ b/contiki-msp430/conf/program-handler-conf.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2004, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright 
+ *    notice, this list of conditions and the following disclaimer in the 
+ *    documentation and/or other materials provided with the distribution. 
+ * 3. Neither the name of the Institute nor the names of its contributors 
+ *    may be used to endorse or promote products derived from this software 
+ *    without specific prior written permission. 
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
+ * SUCH DAMAGE. 
+ *
+ * This file is part of the Contiki operating system.
+ * 
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id: program-handler-conf.h,v 1.1 2005/02/15 14:59:42 oliverschmidt Exp $
+ */
+#ifndef __PROGRAM_HANDLER_CONF_H__
+#define __PROGRAM_HANDLER_CONF_H__
+
+#define PROGRAM_HANDLER_CONF_MAX_NUMDSCS 10
+
+#endif /* __PROGRAM_HANDLER_CONF_H__ */
diff --git a/contiki-msp430/conf/telnetd-conf.h b/contiki-msp430/conf/telnetd-conf.h
new file mode 100644
index 0000000..bb6bdb7
--- /dev/null
+++ b/contiki-msp430/conf/telnetd-conf.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the Contiki Destop OS
+ *
+ * $Id: telnetd-conf.h,v 1.1 2004/02/18 21:38:15 adamdunkels Exp $
+ *
+ */
+#ifndef __TELNETD_CONF_H__
+
+#define TELNETD_CONF_LINELEN 32
+#define TELNETD_CONF_NUMLINES 12
+
+#endif /* __TELNETD_CONF_H__ */
+
+
+
+
+
+
+
+
diff --git a/contiki-msp430/conf/uip-conf.h b/contiki-msp430/conf/uip-conf.h
new file mode 100644
index 0000000..f9a9236
--- /dev/null
+++ b/contiki-msp430/conf/uip-conf.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution. 
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgement:
+ *        This product includes software developed by Adam Dunkels. 
+ * 4. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the Contiki Destop OS
+ *
+ * $Id: uip-conf.h,v 1.2 2003/11/27 15:57:49 adamdunkels Exp $
+ *
+ */
+#ifndef __UIP_CONF_H__
+
+#define UIP_CONF_MAX_CONNECTIONS 4
+#define UIP_CONF_MAX_LISTENPORTS 4
+#define UIP_CONF_BUFFER_SIZE     160
+
+#define UIP_CONF_LLH_LEN 4
+
+#define UIP_CONF_RESOLV_ENTRIES 1
+
+#define UIP_CONF_PINGADDRCONF   1
+
+#endif /* __UIP_CONF_H__ */
+
+
+
+
+
+
+
+
diff --git a/contiki-msp430/conf/vnc-conf.h b/contiki-msp430/conf/vnc-conf.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/contiki-msp430/conf/vnc-conf.h
diff --git a/contiki-msp430/conf/www-conf.h b/contiki-msp430/conf/www-conf.h
new file mode 100644
index 0000000..7971505
--- /dev/null
+++ b/contiki-msp430/conf/www-conf.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution. 
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgement:
+ *        This product includes software developed by Adam Dunkels. 
+ * 4. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the Contiki desktop environment
+ *
+ * $Id: www-conf.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+#ifndef __WWW_CONF_H__
+#define __WWW_CONF_H__
+
+/* The size of the HTML viewing area. */
+#define WWW_CONF_WEBPAGE_WIDTH 36
+#define WWW_CONF_WEBPAGE_HEIGHT 25
+
+/* The size of the "Back" history. */
+#define WWW_CONF_HISTORY_SIZE 8
+
+/* Defines the maximum length of an URL */
+#define WWW_CONF_MAX_URLLEN 160
+
+/* The maxiumum number of widgets (i.e., hyperlinks, form elements) on
+   a page. */
+#define WWW_CONF_MAX_NUMPAGEWIDGETS 30
+
+/* Turns <center> support on or off; must be on for forms to work. */
+#define WWW_CONF_RENDERSTATE 1
+
+/* Toggles support for HTML forms. */
+#define WWW_CONF_FORMS       1
+
+/* Maximum lengths for various HTML form parameters. */
+#define WWW_CONF_MAX_FORMACTIONLEN  80
+#define WWW_CONF_MAX_FORMNAMELEN    40
+#define WWW_CONF_MAX_INPUTNAMELEN   40
+#define WWW_CONF_MAX_INPUTVALUELEN  40
+
+#define WWW_CONF_PAGEVIEW 1
+#endif /* __WWW_CONF_H__ */
diff --git a/contiki-msp430/contiki-main.c b/contiki-msp430/contiki-main.c
new file mode 100644
index 0000000..812f9a4
--- /dev/null
+++ b/contiki-msp430/contiki-main.c
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the Contiki desktop environment 
+ *
+ * $Id: contiki-main.c,v 1.3 2003/11/27 15:56:57 adamdunkels Exp $
+ *
+ */
+
+#include <io.h>
+#include <signal.h>
+
+
+#include "ctk.h"
+#include "ctk-draw.h"
+#include "ctk-vncserver.h"
+#include "dispatcher.h"
+
+
+#include "uip_main.h"
+#include "uip.h"
+#include "uip_arp.h"
+#include "resolv.h"
+
+#include "webserver.h"
+#include "program-handler.h"
+#include "about-dsc.h"
+#include "netconf-dsc.h"
+#include "processes-dsc.h"
+#include "www-dsc.h"
+#include "webserver-dsc.h"
+
+#include "sensorview-dsc.h"
+
+#include "sensors.h"
+
+#include "uip.h"
+#include "uip_arp.h"
+
+#include "msp430.h"
+
+
+#include "rs232.h"
+void slip_drv_init(char *arg);
+
+
+
+static u16_t addr[2];
+/*-----------------------------------------------------------------------------------*/
+
+int
+main(int argc, char **argv)
+{
+
+  msp430_init();
+
+  rs232_init(0);
+  
+  sensors_init();
+  
+  rs232_print("uip_init()...\n"); 
+  uip_init();
+
+  /*  rs232_print("resolv_init()...\n");
+      resolv_init();*/
+  
+
+  
+#if 0
+  uip_ipaddr(addr, 193,10,67,150);
+  uip_sethostaddr(addr);
+ 
+  /*  uip_ipaddr(addr, 193,10,66,195);
+      resolv_conf(addr);*/
+
+#else
+
+  uip_ipaddr(addr, 172,16,0,2);
+  uip_sethostaddr(addr);
+ 
+  /*  uip_ipaddr(addr, 193,10,66,195);
+      resolv_conf(addr);*/
+#endif
+
+  
+  rs232_print("dispatcher_init()...\n");
+  dispatcher_init();
+
+  
+  rs232_print("slip_drv_init()...\n");  
+  slip_drv_init(NULL);
+
+
+  rs232_print("ctk_init()...\n");  
+  /*  ctk_init();*/
+
+  rs232_print("ctk_vncserver_init()...\n");  
+  /*  ctk_vncserver_init(NULL);  */
+
+  rs232_print("program_handler_init()...\n");  
+  /*  program_handler_init();*/
+
+  /*  rs232_print("processes_init()...\n");  
+      processes_init(NULL);*/
+
+  rs232_print("webserver_init()...\n");  
+  /*  webserver_init(NULL);*/
+
+  sensorcheck_init(NULL);
+  
+  
+  /*  program_handler_add(&directory_dsc, "Directory", 1);*/
+  /*  program_handler_add(&about_dsc, "About", 1);*/
+  /*  program_handler_add(&webserver_dsc, "Web server", 1);*/
+  /*  program_handler_add(&www_dsc, "Web browser", 1);*/
+  /*  program_handler_add(&calc_dsc, "Calculator", 0);*/
+  /*  program_handler_add(&processes_dsc, "Processes", 0);*/
+
+  rs232_print("program_handler_addd()...\n");  
+  /*  program_handler_add(&sensorview_dsc, "Sensors", 1);*/
+  
+
+  rs232_print("dispatcher_run()...\n");
+  beep();
+  dispatcher_run();
+  
+  return 0;
+
+  argv = argv;
+  argc = argc;
+
+
+
+}
+/*-----------------------------------------------------------------------------------*/
+char *arg_alloc(char size) {return NULL;}
+void  arg_init(void) {}
+void  arg_free(char *arg) {}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/ctk/ctk-arch.h b/contiki-msp430/ctk/ctk-arch.h
new file mode 100644
index 0000000..a070db1
--- /dev/null
+++ b/contiki-msp430/ctk/ctk-arch.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution. 
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgement:
+ *        This product includes software developed by Adam Dunkels. 
+ * 4. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the "ctk" console GUI toolkit for cc65
+ *
+ * $Id: ctk-arch.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+#ifndef __CTK_ARCH_H__
+#define __CTK_ARCH_H__
+
+
+#include "ctk-vncarch.h"
+
+
+#endif /* __CTK_ARCH_H__ */
diff --git a/contiki-msp430/msp430/msp430.c b/contiki-msp430/msp430/msp430.c
new file mode 100644
index 0000000..d2b2090
--- /dev/null
+++ b/contiki-msp430/msp430/msp430.c
@@ -0,0 +1,188 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the Contiki desktop environment 
+ *
+ * $Id: msp430.c,v 1.3 2003/11/27 15:58:05 adamdunkels Exp $
+ *
+ */
+
+#include <io.h>
+#include <signal.h>
+
+
+#include "ctk.h"
+#include "ctk-draw.h"
+#include "ctk-vncserver.h"
+#include "dispatcher.h"
+
+
+#include "uip_main.h"
+#include "uip.h"
+#include "uip_arp.h"
+#include "resolv.h"
+
+#include "webserver.h"
+#include "program-handler.h"
+#include "about-dsc.h"
+#include "netconf-dsc.h"
+#include "processes-dsc.h"
+#include "www-dsc.h"
+#include "webserver-dsc.h"
+
+#include "sensorview-dsc.h"
+
+#include "sensors.h"
+
+#include "uip.h"
+#include "uip_arp.h"
+
+
+#include "rs232.h"
+void slip_drv_init(char *arg);
+
+
+#define INTERVAL_5MS      52288U       // 12288 cycles @ 2,4756MHz = 5 ms
+
+
+static u16_t addr[2];
+static ek_clock_t count;
+
+interrupt(TIMERA1_VECTOR) timera1 (void) {
+
+  if(TAIV == 2) {
+    CCR1 += INTERVAL_5MS;
+    ++count;
+    P2OUT ^= 4;  
+  }
+}
+/*-----------------------------------------------------------------------------------*/
+ek_clock_t
+ek_clock(void)
+{
+  return count;
+}
+/*-----------------------------------------------------------------------------------*/
+void
+beep(void)
+{
+  unsigned int i, j;
+  
+  /* Beep. */
+  P2OUT &= 0xFE;
+  P2OUT |= 8;
+  for(i = 0; i < 100; ++i) {
+    j = j * j;
+  }
+  P2OUT &= 0xf7;
+  P2OUT |= 0x01;  
+}
+/*-----------------------------------------------------------------------------------*/
+void
+blink(void)
+{
+  unsigned int i, j;
+  
+  /* Blink yellow LED. */
+  P2OUT &= 0xFB;
+  for(i = 0; i < 140; ++i) {
+    j = j * j;
+  }
+  P2OUT |= 0x04;
+}
+/*-----------------------------------------------------------------------------------*/
+void
+rs232_print(char *cptr)
+{
+  while(*cptr != 0) {
+    rs232_put(*cptr);
+    ++cptr;
+  }
+}
+/*-----------------------------------------------------------------------------------*/
+void
+msp430_timer_init(void)
+{
+  TACTL = TASSEL1 | TACLR | ID_3;                // select SMCLK (2.4576MHz), clear TAR
+
+  // init ccr1 to create the 5 ms interval
+  TACCTL1 = CCIE;                           // CCR1 interrupt enabled, interrupt occurs when timer equals CCR1
+  TACCR1 = INTERVAL_5MS;                    // interrupt after 5ms
+
+  TACTL |= MC1;                         // Start Timer_A in continuous mode 
+
+  eint();   /* Enable interrupts. */
+
+
+}
+/*-----------------------------------------------------------------------------------*/
+void
+msp430_init(void)
+{
+    ////////// Port 1 ////
+  P1SEL = 0x00;
+  P1DIR = 0x81;       // Outputs: P10=IRSend, P17=RS232RTS
+                      // Inputs: P11=Light, P12=IRRec, P13=PIR, P14=Vibration, 
+                      //         P15=Clockalarm, P16=RS232CTS
+  P1OUT = 0x00;
+
+  ////////// Port 2 ////
+  P2SEL = 0x00;       // No Sels
+  P2DIR = 0x7F;       // Outpus: P20..P23=Leds+Beeper, P24..P26=Poti
+                      // Inputs: P27=Taster
+  P2OUT = 0x77;
+  
+  ////////// Port 3 ////
+  P3SEL = 0xE0;       // Sels for P34..P37 to activate UART, 
+  P3DIR = 0x5F;       // Inputs: P30..P33=CON4, P35/P37=RXD Transceiver/RS232
+                      // OutPuts: P36/P38=TXD Transceiver/RS232
+  P3OUT = 0xE0;       // Output a Zero on P34(TXD Transceiver) and turn SELECT off when receiving!!!
+
+  ////////// Port 4 ////
+  P4SEL = 0x00;       // CON5 Stecker
+  P4DIR = 0xFF;
+  P4OUT = 0x00;
+  
+  ////////// Port 5 ////
+  P5SEL = 0x00;       // P50/P51= Clock SDA/SCL, P52/P53/P54=EEPROM SDA/SCL/WP
+  P5DIR = 0xDA;       // P56/P57=Transceiver CNTRL0/1
+  P5OUT = 0x0F;
+  
+  ////////// Port 6 ////
+  P6SEL = 0x00;       // P60=Microphone, P61=PIR digital (same as P13), P62=PIR analog
+  P6DIR = 0x00;       // P63=extern voltage, P64=battery voltage, P65=Receive power
+  P6OUT = 0x00;
+
+  
+  /* Red led on */
+  P2OUT &= 0xfd;  
+  
+  beep();
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/msp430/msp430.h b/contiki-msp430/msp430/msp430.h
new file mode 100644
index 0000000..ab17108
--- /dev/null
+++ b/contiki-msp430/msp430/msp430.h
@@ -0,0 +1,12 @@
+#ifndef __MSP430_H__
+#define __MSP430_H__
+
+
+void msp430_init(void);
+void msp430_timer_init(void);
+void beep(void);
+void blink(void);
+
+unsigned short clock(void);
+
+#endif /* __MSP430_H__ */
diff --git a/contiki-msp430/msp430/rs232.c b/contiki-msp430/msp430/rs232.c
new file mode 100644
index 0000000..9b3a881
--- /dev/null
+++ b/contiki-msp430/msp430/rs232.c
@@ -0,0 +1,189 @@
+/**
+ * \file
+ * RS232 communication device driver for the MSP430.
+ * \author Adam Dunkels <adam@sics.se>
+ *
+ * This file contains an RS232 device driver for the MSP430 microcontroller.
+ *
+ */
+
+#include <io.h>
+#include <signal.h>
+
+#include "rs232.h"
+
+void beep(void);
+void blink(void);
+
+unsigned char lastchar, lastchar_changed;
+
+#define RECVBUF_SIZE 256
+
+static unsigned char recvbuf[RECVBUF_SIZE];
+static unsigned char recvbufptr1 = 0,
+  recvbufptr2 = 0;
+
+interrupt(UART1RX_VECTOR) rs232_rx_usart1(void)
+{
+  volatile unsigned char dummy;
+  
+  /* Check status register for receive errors. */
+  if(URCTL1 & RXERR) {
+    /* Clear error flags by forcing a dummy read. */
+    dummy = RXBUF1;
+  } else {
+    recvbuf[recvbufptr1] = RXBUF1;
+    recvbufptr1 = (recvbufptr1 + 1) % RECVBUF_SIZE;
+  }
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Initalize the RS232 port.
+ *
+ * \param none Not used.
+ * \return An error value or RS_ERR_OK if initialization succeeded.
+ */
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+rs232_init(char none)
+{
+  int j;
+  
+  
+  /* This code taken from the FU Berlin sources and reformatted. */
+  
+#define DELTA 600
+  
+  unsigned int compare, oldcapture = 0;
+  unsigned int i;
+  
+  BCSCTL1 = 0xa4; /* ACLK is devided by 4. RSEL=6 no division for MCLK
+		     and SSMCLK. XT2 is off. */
+  
+  BCSCTL2 = 0x00; /* Init FLL to desired frequency using the 32762Hz
+		     crystal DCO frquenzy = 2,4576 MHz  */
+  
+  WDTCTL = WDTPW + WDTHOLD;             /* Stop WDT */
+  BCSCTL1 |= DIVA1 + DIVA0;             /* ACLK = LFXT1CLK/8 */
+  for(i = 0xffff; i > 0; --i);          /* Delay for XTAL to settle */
+
+  /* Set DCO for 2,4576 Mhz: */
+  CCTL2 = CCIS0 + CM0 + CAP;            /* Define CCR2, CAP, ACLK */
+  TACTL = TASSEL1 + TACLR + MC1;        /* SMCLK, continous mode */
+  while(1) {
+    while((CCTL2 & CCIFG) != CCIFG);    /* Wait until capture occured! */
+    CCTL2 &= ~CCIFG;                    /* Capture occured, clear flag */
+    compare = CCR2;                     /* Get current captured SMCLK */
+    compare = compare - oldcapture;     /* SMCLK difference */
+    oldcapture = CCR2;                  /* Save current captured SMCLK */
+    
+    if(DELTA == compare) {
+      break;                            /* if equal, leave "while(1)" */
+    } else if(DELTA < compare) {        /* DCO is too fast, slow it down */
+      DCOCTL--;
+      if(DCOCTL == 0xFF) {              /* Did DCO role under? */
+	BCSCTL1--;
+      }
+    } else {                            /* -> Select next lower RSEL */
+      DCOCTL++;
+      if(DCOCTL == 0x00) {              /* Did DCO role over? */
+	BCSCTL1++;
+      }
+                                        /* -> Select next higher RSEL  */
+    }
+  }  
+  CCTL2 = 0;                            /* Stop CCR2 function */
+  TACTL = 0;                            /* Stop Timer_A */
+  
+
+    
+  /* RS232 */
+  UCTL1 = CHAR;                         /* 8-bit character */
+  UTCTL1 = SSEL1;                       /* UCLK = MCLK */
+
+#define RS232_SPEED 57600
+  
+  if(RS232_SPEED == 19200) {
+    /* Set RS232 to 19200 */
+    UBR01 = 0x80;                         /* 2,457MHz/19200 = 128 -> 0x80 */
+    UBR11 = 0x00;                         /* */
+    UMCTL1 = 0x00;                        /* no modulation  */
+  } else if(RS232_SPEED == 38400) {
+    /* Set RS232 to 38400 */
+    UBR01 = 0x40;                         /* 2,457MHz/38400 = 64 -> 0x40 */
+    UBR11 = 0x00;                         /* */
+    UMCTL1 = 0x00;                        /* no modulation  */
+  } else if(RS232_SPEED == 57600) {
+    UBR01 = 0x2a;                         /* 2,457MHz/57600 = 42.7 -> 0x2A */
+    UBR11 = 0x00;                         /* */
+    UMCTL1 = 0x5b;                        /* */ 
+  } else if(RS232_SPEED == 115200) {
+    UBR01 = 0x15;                         /* 2,457MHz/115200 = 21.4 -> 0x15 */
+    UBR11 = 0x00;                         /* */
+    UMCTL1 = 0x4a;                        /* */ 
+  }
+  
+  
+  ME2 |= (UTXE1 | URXE1);                 /* Enable USART1 TXD/RXD */
+  IE2 |= URXIE1;                        /* Enable USART1 RX interrupt  */
+  BCSCTL1 &= ~(DIVA1 + DIVA0);          /* remove /8 divisor from ACLK again    */
+
+
+  return RS_ERR_OK;
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Configure the RS232 port.
+ *
+ * \param params RS232 parameters.
+ * \param parity Parity.
+ * \return An error value or RS_ERR_OK if configuration succeeded.
+ */
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+rs232_params(unsigned char params, unsigned char parity)
+{
+  return RS_ERR_OK;
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Get a byte from the serial port.
+ *
+ * \param c A pointer to the location where the byte is to be stored.
+ *
+ * \return An error value or RS_ERR_OK. If no data is available, the
+ * function returns RS_ERR_NO_DATA which is not a fatal error.
+ */
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+rs232_get(char *c)
+{
+  if(recvbufptr1 == recvbufptr2) {
+    return RS_ERR_NO_DATA;
+  }
+  *c = recvbuf[recvbufptr2];
+  recvbufptr2 = (recvbufptr2 + 1) % RECVBUF_SIZE;
+  return RS_ERR_OK;
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Transmit a byte over the serial port.
+ *
+ * \param c A pointer to the location where the byte is to be stored.
+ *
+ * \return An error value or RS_ERR_OK. If the transmission buffer was
+ * full, RS_ERR_OVERFLOW is returned.
+ */
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+rs232_put(char c)
+{
+  /* Loop until the transmission buffer is available. */
+  while ((IFG2 & UTXIFG1) == 0);
+
+  /* Transmit the data. */
+  TXBUF1 = c;
+
+  return RS_ERR_OK;
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/msp430/rs232.h b/contiki-msp430/msp430/rs232.h
new file mode 100644
index 0000000..8db178f
--- /dev/null
+++ b/contiki-msp430/msp430/rs232.h
@@ -0,0 +1,56 @@
+/**
+ * \file
+ * Header file for MSP430 RS232 driver.
+ * \author Adam Dunkels <adam@sics.se>
+ *
+ */
+#ifndef __RS232_H__
+#define __RS232_H__
+
+/* These values were taken from the "rs232.h" include file from cc65,
+   written by Ullrich von Bassewitz. */
+
+#define RS_BAUD_50                      0x00
+#define RS_BAUD_110                     0x01
+#define RS_BAUD_134_5                   0x02
+#define RS_BAUD_300                     0x03
+#define RS_BAUD_600                     0x04
+#define RS_BAUD_1200                    0x05
+#define RS_BAUD_2400                    0x06
+#define RS_BAUD_4800                    0x07
+#define RS_BAUD_9600                    0x08
+#define RS_BAUD_19200                   0x09
+#define RS_BAUD_38400                   0x0A
+#define RS_BAUD_57600                   0x0B
+#define RS_BAUD_115200                  0x0C
+#define RS_BAUD_230400                  0x0D
+
+#define RS_BITS_5                       0x60
+#define RS_BITS_6                       0x40
+#define RS_BITS_7                       0x20
+#define RS_BITS_8                       0x00
+
+#define RS_PAR_NONE                     0x00
+#define RS_PAR_ODD                      0x20
+#define RS_PAR_EVEN                     0x60
+#define RS_PAR_MARK                     0xA0
+#define RS_PAR_SPACE                    0xE0
+
+#define RS_STOP_1                       0x00
+#define RS_STOP_2                       0x80
+
+#define RS_ERR_OK                       0x00    /* Not an error - relax */
+#define RS_ERR_NOT_INITIALIZED          0x01    /* Module not initialized */
+#define RS_ERR_BAUD_TOO_FAST            0x02    /* Cannot handle baud rate */
+#define RS_ERR_BAUD_NOT_AVAIL           0x03    /* Baud rate not available */
+#define RS_ERR_NO_DATA                  0x04    /* Nothing to read */
+#define RS_ERR_OVERFLOW                 0x05    /* No room in send buffer */
+#define RS_ERR_INIT_FAILED              0x06    /* Initialization of RS232 routines f
+ailed */
+
+unsigned char rs232_init(char none);
+unsigned char rs232_params(unsigned char params, unsigned char parity);
+unsigned char rs232_get(char *c);
+unsigned char rs232_put(char c);
+
+#endif /* __RS232_H__ */
diff --git a/contiki-msp430/msp430/sensors.c b/contiki-msp430/msp430/sensors.c
new file mode 100644
index 0000000..e6b42e9
--- /dev/null
+++ b/contiki-msp430/msp430/sensors.c
@@ -0,0 +1,89 @@
+/**
+ * \file
+ * Functions for reading the sensors of the sensor board
+ * \author Based on the work of anonymous students at FU Berlin
+ *
+ *
+ */
+
+#include <io.h>
+#include <signal.h>
+
+#define SENSOR_VIB     (0x10)            // so never change these!!!
+
+volatile unsigned int sensors_mic, /**< On-board microphone. */
+  sensors_extern,                  /**< External sensor. */
+  sensors_battery,                 /**< Battery sensor. */
+  sensors_temp,                    /**< Temperature sensor. */
+  sensors_vib;                     /**< Vibration sensor. */  
+
+/*-----------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Interrupt handler which reads the values of the A/D converters.
+ *
+ */
+/*-----------------------------------------------------------------------------------*/
+interrupt (ADC_VECTOR)
+     sensors_ad_irq(void)
+{
+  unsigned int temp;
+  char vk;
+  
+  sensors_mic     = ADC12MEM0;
+  sensors_extern  = ADC12MEM1;
+  sensors_battery = ADC12MEM2;
+  temp            = ADC12MEM3;
+
+  vk = (temp >> 8);
+  if(vk & 0x80) {
+    vk = ~vk;
+  }
+  sensors_temp = vk;
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Interrupt handler for vibration sensor.
+ *
+ */
+/*-----------------------------------------------------------------------------------*/
+interrupt(PORT1_VECTOR)
+     p1_irq (void)
+{
+  if(P1IFG & SENSOR_VIB) {
+    ++sensors_vib;
+    P1IFG &= ~(SENSOR_VIB);
+  }
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Initialize the sensors. 
+ */
+/*-----------------------------------------------------------------------------------*/
+void
+sensors_init(void)
+{
+
+  /* Set up the ADC. */
+
+  ADC12CTL0 = ADC12ON + REFON + REF2_5V + SHT0_6 + SHT1_6 + MSC;
+  ADC12CTL1 = SHP + CONSEQ_3 + CSTARTADD_0;
+
+  ADC12MCTL0 = INCH_3 + SREF_0;
+  ADC12MCTL1 = INCH_4 + SREF_0;
+  ADC12MCTL2 = INCH_0 + SREF_0;
+  ADC12MCTL3 = INCH_5 + SREF_0 + EOS;
+
+  ADC12IE = 0x0008;
+
+  /* Delay */
+  {unsigned int i,j; for(i = 0x200; i > 0; --i) {j = j*j;}}
+
+  ADC12CTL0 |= ENC;
+  ADC12CTL0 |= ADC12SC;
+
+
+  P1IE |= SENSOR_VIB;
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/msp430/sensors.h b/contiki-msp430/msp430/sensors.h
new file mode 100644
index 0000000..ebc624c
--- /dev/null
+++ b/contiki-msp430/msp430/sensors.h
@@ -0,0 +1,12 @@
+#ifndef __SENSORS_H__
+#define __SENSORS_H__
+
+extern volatile unsigned int sensors_mic, /**< On-board microphone. */
+  sensors_extern,                  /**< External sensor. */
+  sensors_battery,                 /**< Battery sensor. */
+  sensors_temp,                    /**< Temperature sensor. */
+  sensors_vib;                     /**< Vibration sensor. */
+
+void sensors_init(void);
+
+#endif /* __SENSORS_H__ */
diff --git a/contiki-msp430/msp430/tr1001.c b/contiki-msp430/msp430/tr1001.c
new file mode 100644
index 0000000..c4d7752
--- /dev/null
+++ b/contiki-msp430/msp430/tr1001.c
@@ -0,0 +1,678 @@
+/**
+ * \file
+ * Device driver and packet framing for the RFM-TR1001 radio module.
+ * \author FU Berlin (original implementation)
+ * \author Adam Dunkels <adam@sics.se>
+ *
+ * This file implements a device driver for the RFM-TR1001 radio
+ * tranciever as well as a simple packet framing format, simimilar to
+ * PPP (AHDLC) framing.
+ *
+ * \note A lot of the stuff in this file is currently a "hack" form
+ * (particularly the "MAC" stuff and the ackowledgements)!
+ */
+
+#include "tr1001.h"
+#include "uip.h"
+#include "uip-fw.h"
+
+#include "sensors.h"
+
+#include <io.h>
+#include <signal.h>
+
+
+#define RXSTATE_READY   0  /**< \internal Receive state: ready for a
+			      new packet. */
+#define RXSTATE_START1  1  /**< \internal Receive state: first   start
+			      byte read, waiting for second. */
+#define RXSTATE_START2  2  /**< \internal Receive state: second start
+			      byte read, waiting for header. */
+#define RXSTATE_RAWHEADER 3  /**< \internal Receive state: reading raw
+			      packet header, without encoding. */
+#define RXSTATE_HEADER1 4  /**< \internal Receive state: reading
+			      packet header, non-negative byte. */
+#define RXSTATE_HEADER2 5  /**< \internal Receive state: reading
+			      packet header, negative byte. */
+#define RXSTATE_RAWDATA 6  /**< \internal Receive state: reading raw
+			      packet data, without encoding. */
+#define RXSTATE_DATA1   7  /**< \internal Receive state: reading
+			      packet data, non-negative byte. */
+#define RXSTATE_DATA2   8  /**< \internal Receive state: reading
+			      packet data, negative byte. */
+#define RXSTATE_ERROR   9  /**< \internal Receive state: error in
+			      packet reception. */
+#define RXSTATE_FULL    10  /**< \internal Receive state: a full packet
+			      has been received. */
+
+#define NEG(b) (0xff - b)  /**< \internal Logical negation of an 8-bit
+			      quantity. */
+
+/**
+ * \internal
+ * The buffer which holds incoming data.
+ */
+#define RXBUFSIZE UIP_BUFSIZE
+static unsigned char rxbuf[RXBUFSIZE];
+
+/**
+ * \internal
+ * A pointer into the rxbuf buffer which points to the next available byte. 
+ */
+static unsigned short rxpos;
+
+/**
+ * \internal
+ * The length of the packet that currently is being received.
+ */
+static unsigned short rxlen;
+
+/**
+ * \internal
+ * The reception state.
+ */
+static unsigned char rxstate = RXSTATE_READY;
+
+
+/**
+ * \internal
+ * The structure of the packet header.
+ */
+struct tr1001_hdr {
+  u8_t type;      /**< The packet type. */
+  u8_t id;        /**< A packet identifier. */
+  u8_t len[2];    /**< The 16-bit length of the packet in network byte
+		     order. */
+};
+
+/**
+ * \internal The length of the packet header.
+ */
+#define TR1001_HDRLEN 4
+
+/**
+ * \internal 
+ * The "data" packet type.
+ */
+#define TR1001_TYPE_DATA 1
+
+/**
+ * \internal 
+ * The "acknowledgement" packet type.
+ */
+#define TR1001_TYPE_ACK  2
+
+/**
+ * \internal
+ * Determines if the negencoding should be used or not. This
+ * causes each byte which is sent out to be sent twice, first normally
+ * and second with all bits inverted. */
+#define TR1001_CONF_NEGENCODING 1
+
+/**
+ * \internal
+ * The incremental packet identifier.
+ */
+static u8_t packet_id;
+
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Turn on data transmission in On-Off-Keyed mode.
+ */
+/*------------------------------------------------------------------------------*/
+static void
+txook(void)
+{
+  P3SEL = 0xf0;
+  P5OUT |= 0x40;
+  P5OUT &= 0x7f;
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Turn on data reception for the radio tranceiver.
+ */
+/*------------------------------------------------------------------------------*/
+static void
+rxon(void)
+{
+  P3SEL = 0xe0; 
+  P5OUT |= 0xc0; 
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Clear the recevie buffer and reset the receiver state.
+ */
+/*------------------------------------------------------------------------------*/
+static void
+rxclear(void)
+{
+  rxpos = 0;
+  rxstate = RXSTATE_READY;
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Send a byte of data over the radio.
+ *
+ * \param b The byte to be sent.
+ */
+/*------------------------------------------------------------------------------*/
+static void
+send(unsigned char b)
+{
+  /* Wait until the USART0 TX buffer is ready. */
+  while((IFG1 & UTXIFG0) == 0);
+
+  /* Send the byte. */
+  TXBUF0 = b;
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Send a byte of data and its logical negation (all bits inverted)
+ * over the radio.
+ *
+ * \param b The byte to be sent.
+ */
+/*------------------------------------------------------------------------------*/
+static void
+send2(unsigned char b)
+{
+  send(b);
+#if TR1001_CONF_NEGENCODING
+  send(NEG(b));
+#endif /* TR1001_CONF_NEGENCODING */
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * Set the transmission power of the tranciever.
+ *
+ * The sensor board is equipped with a DS1804 100 position trimmer
+ * potentiometer which is used to set the transmission input current
+ * to the radio tranciever chip, thus setting the transmission power
+ * of the radio tranciever.
+ *
+ * This function sets the trimmer potentiometer to a value between 1
+ * and 100.
+ *
+ * \param p The power of the tranciever, between 1 (lowest) and 100
+ * (highest).
+ */
+/*------------------------------------------------------------------------------*/
+void
+tr1001_set_txpower(unsigned char p)
+{
+  int i;
+  
+  /* Clamp maximum power. */
+  if(p > 100) {
+    p = 100;
+  }
+
+  /* First, run the potentiometer down to zero so that we know the
+     start value of the potentiometer. */  
+  P2OUT &= 0xDF;                                /* P25 = 0 (down selected) */
+  P2OUT &= 0xBF;                                /* P26 = 0 (chipselect on) */
+  for(i = 0; i < 102; ++i) {
+    P2OUT &= 0xEF;                              /* P24 = 0 (inc) */
+    P2OUT |= 0x10;    
+  }
+  
+  /* Now, start to increase the value of the potentiometer until it
+     reaches the desired value.*/
+  
+  P2OUT |= 0x20;                                /* P25 = 1 (up selected) */
+  for(i = 0; i < p; ++i) {
+    P2OUT &= 0xEF;                              /* P24 = 0 (inc) */
+    P2OUT |= 0x10;    
+  }
+  P2OUT |= 0x40;                                /* P26 = 1 (chipselect off) */
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * Initialize the radio tranciever.
+ *
+ * Turns on reception of bytes and installs the receive interrupt
+ * handler.
+ */
+/*------------------------------------------------------------------------------*/
+void
+tr1001_init(void)
+{
+  /* Turn on reception. */
+  rxon();
+
+  /* Reset reception state. */
+  rxclear();
+
+    
+  UCTL0 = CHAR;                         /* 8-bit character */
+  UTCTL0 = SSEL1;                       /* UCLK = SMCLK */
+
+#define TR1001_SPEED 19200
+  
+  if(TR1001_SPEED == 19200) {
+    /* Set TR1001 to 19200 */
+    UBR00 = 0x80;                         /* 2,457MHz/19200 = 128 -> 0x80 */
+    UBR10 = 0x00;                         /* */
+    UMCTL0 = 0x00;                        /* no modulation  */
+  } else if(TR1001_SPEED == 38400) {
+    /* Set TR1001 to 38400 */
+    UBR00 = 0x40;                         /* 2,457MHz/38400 = 64 -> 0x40 */
+    UBR10 = 0x00;                         /* */
+    UMCTL0 = 0x00;                        /* no modulation  */
+  } else if(TR1001_SPEED == 57600) {
+    UBR00 = 0x2a;                         /* 2,457MHz/57600 = 42.7 -> 0x2A */
+    UBR10 = 0x00;                         /* */
+    UMCTL0 = 0x5b;                        /* */ 
+  } else if(TR1001_SPEED == 115200) {
+    UBR00 = 0x15;                         /* 2,457MHz/115200 = 21.4 -> 0x15 */
+    UBR10 = 0x00;                         /* */
+    UMCTL0 = 0x4a;                        /* */ 
+  }
+
+#if 0
+  /* 19200 bps */
+  UBR00 = 0x80;                         /* 2,457MHz/19200 = 128 -> 0x80 */
+  UBR10 = 0x00;                         /* */
+  UMCTL0 = 0x00;                        /* no modulation */
+#endif /* 0 */
+  
+  ME1 |= UTXE0 + URXE0;                 /* Enable USART0 TXD/RXD */
+  
+  /* Turn on receive interrupt. */
+  IE1 |= URXIE0;
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * Check if an incoming packet has been received.
+ *
+ * This function checks the receive buffer to see if an entire packet
+ * has been received. The actual reception is handled by an interrupt
+ * handler.
+ * 
+ * \return The length of the received packet, or 0 if no packet has
+ * been received.
+ */
+/*------------------------------------------------------------------------------*/
+unsigned short
+tr1001_poll(void)
+{
+  unsigned short tmplen;
+  
+  if(rxstate == RXSTATE_FULL) {
+    if(rxlen > UIP_BUFSIZE - UIP_LLH_LEN) {
+      rxlen = UIP_BUFSIZE - UIP_LLH_LEN;
+    }
+    memcpy(&uip_buf[UIP_LLH_LEN], rxbuf + TR1001_HDRLEN, rxlen);
+    tmplen = rxlen;
+    rxclear();
+    return tmplen;
+  }
+
+  if(rxstate == RXSTATE_ERROR) {
+    blink();
+    rxclear();
+  }
+  
+  return 0;
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Interrupt handler for the data reception.
+ */
+/*------------------------------------------------------------------------------*/
+interrupt (UART0RX_VECTOR)
+     tr1001_rxhandler(void)
+{
+  unsigned char c;
+
+  c = RXBUF0;
+
+  switch(rxstate) {
+  case RXSTATE_ERROR:
+    /* Do nothing, wait until error has been hendled. */
+    break;
+  case RXSTATE_READY:
+    if(c == 0xff) {
+      rxstate = RXSTATE_START1;
+    }
+    break;
+  case RXSTATE_START1:
+    if(c == 0x01) {
+      rxstate = RXSTATE_START2;
+    } else {
+      rxstate = RXSTATE_READY;
+    }
+    break;
+  case RXSTATE_START2:
+    if(c == 0x7f) {
+#if TR1001_CONF_NEGENCODING
+      rxstate = RXSTATE_HEADER1;
+#else /* TR1001_CONF_NEGENCODING */
+      rxstate = RXSTATE_RAWHEADER;
+#endif /* TR1001_CONF_NEGENCODING */
+    } else {
+      rxstate = RXSTATE_READY;
+    }
+    break;
+  case RXSTATE_RAWHEADER:
+    rxbuf[rxpos] = c;
+    ++rxpos;
+    if(rxpos == TR1001_HDRLEN) {
+      rxlen = ((((struct tr1001_hdr *)rxbuf)->len[0] << 8) +
+	       ((struct tr1001_hdr *)rxbuf)->len[1]);
+      rxstate = RXSTATE_RAWDATA;
+    }
+    break;
+  case RXSTATE_HEADER1:
+    /* Receive a data byte of the header. */
+    rxbuf[rxpos] = c;
+    rxstate = RXSTATE_HEADER2;
+    break;
+  case RXSTATE_HEADER2:
+    /* We should have received the bit-wise negation of the previously
+       received byte, or else something has gone wrong and we set the
+       error flag. */
+    if(NEG(c) == rxbuf[rxpos]) {
+      ++rxpos;
+      if(rxpos == TR1001_HDRLEN) {
+	rxlen = ((((struct tr1001_hdr *)rxbuf)->len[0] << 8) +
+		 ((struct tr1001_hdr *)rxbuf)->len[1]);
+	rxstate = RXSTATE_DATA1;
+      } else {
+	rxstate = RXSTATE_HEADER1;
+      }
+    } else {
+      rxstate = RXSTATE_ERROR;
+    }
+    break;
+  case RXSTATE_DATA1:
+    /* Receive a data byte. */
+    rxbuf[rxpos] = c;
+    rxstate = RXSTATE_DATA2;
+    break;
+  case RXSTATE_DATA2:
+    /* We should have received the bit-wise negation of the previously
+       received byte, or else something has gone wrong and we set the
+       error flag. */
+    if(NEG(c) == rxbuf[rxpos]) {
+      ++rxpos;
+      if(rxpos == rxlen + TR1001_HDRLEN) {
+	rxstate = RXSTATE_FULL;
+      } else if(rxpos > sizeof(rxbuf)) {
+	rxstate = RXSTATE_ERROR;
+      } else {
+	rxstate = RXSTATE_DATA1;
+      }
+    } else {
+      rxstate = RXSTATE_ERROR;
+    }
+    break;
+  case RXSTATE_RAWDATA:
+    rxbuf[rxpos] = c;
+    ++rxpos;
+    if(rxpos == rxlen + TR1001_HDRLEN) {
+      rxstate = RXSTATE_FULL;
+    } else if(rxpos > sizeof(rxbuf)) {
+      rxstate = RXSTATE_ERROR;
+    }
+    break;
+  case RXSTATE_FULL:
+    /* Just drop the incoming byte. */
+    break;
+  default:
+    /* Just drop the incoming byte. */
+    rxstate = RXSTATE_READY;
+    break;
+  }
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ *
+ * A stupid function which causes a small delay based on its argument.
+ *
+ * It is a hack, not intended for "real" use.
+ *
+ */
+/*------------------------------------------------------------------------------*/
+static void
+delay_hack(int d)
+{
+  int i, j = 2;
+  
+  for(i = 0; i < d; ++i) {
+    j = j * j;
+  }
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ *
+ * Prepare a transmission.
+ *
+ * This function does the necessary setup before a packet can be sent
+ * out.  
+ */
+/*------------------------------------------------------------------------------*/
+static void
+prepare_transmission(void)
+{
+  unsigned short i, laststate;
+    
+  /* Delay the transmission for a while. The length of the delay is
+     based on the lowest bits of the battery sensor, which seems to be
+     jumping up and down somewhat unpredictably (but I might very well
+     be wrong). */
+  /*  P2OUT &= 0xFE;*/
+  delay_hack(400 * (sensors_battery & 0x0f));
+  /*  P2OUT |= 0x01;  */
+  
+  /* First check that we don't currently are receiveing a packet, and
+     if so we wait until the reception has been completed. Reception
+     is done with interrupts so it is OK for us to wait in a while()
+     loop. */
+  i = 0;
+  laststate = rxstate;
+  while(rxstate != RXSTATE_READY &&
+	rxstate != RXSTATE_FULL &&
+	rxstate != RXSTATE_ERROR) {
+
+    /* Make sure that we don't stay too long in the same rxstate
+       (which would indicate that the receiving interrupt somehow has
+       locked up). */
+    if(laststate == rxstate) {
+      ++i;
+      if(i == 0xffff) {
+	rxstate = RXSTATE_ERROR;
+	break;
+      }
+    } else {
+      i = 0;
+    }
+    laststate = rxstate;
+  }
+
+  /* Turn on OOK mode with transmission. */
+  txook();
+
+  /* Delay for a while to let the transmitted settle in its new
+     state. */
+  delay_hack(400);
+  
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * Send a packet and wait for an acknowledgement.
+ *
+ * This function calls tr1001_send() to send out a packet, and waits
+ * for an acknowledgement from the receiver.
+ *
+ */
+/*------------------------------------------------------------------------------*/
+u8_t
+tr1001_send_acked(void)
+{
+  unsigned short tmplen, count;
+  struct tr1001_hdr *ackhdr = (struct tr1001_hdr *)rxbuf;
+  ek_clock_t start;
+  
+  
+  tr1001_send();
+
+  start = ek_clock();
+  count = 0;
+  P2OUT &= 0xFB;
+  /* Block while checking if a packet has arrived. */
+  while((volatile u8_t)rxstate != RXSTATE_FULL &&
+	(volatile u8_t)rxstate != RXSTATE_ERROR) {
+    /* Wait no more than one second. */
+    if((ek_clock_t)(ek_clock() - start) > (ek_clock_t)CLK_TCK) {
+      break;
+    }
+  }
+  P2OUT |= 0x04;
+    
+  
+  if(rxstate == RXSTATE_FULL) {
+    if(ackhdr->type == TR1001_TYPE_ACK &&
+       ackhdr->id == packet_id) {
+      beep();
+      rxclear();
+      return UIP_FW_OK;
+    }
+  }
+
+  if(rxstate == RXSTATE_ERROR) {
+    rxclear();
+    blink();
+  }
+  return UIP_FW_DROPPED;
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * Send out a packet from the uip_buf buffer.
+ *
+ * This function causes a packet to be sent out after a small random
+ * delay, but without doing any MAC layer collision detection or
+ * back-offs. The packet is sent with a 4 byte header that contains a
+ * a "type" identifier, an 8-bit packet ID field and the length of the
+ * packet in network byte order.
+ */
+/*------------------------------------------------------------------------------*/
+u8_t
+tr1001_send(void)
+{
+  u8_t *hdr;
+  u16_t hdrlen;
+  u8_t *data;
+  u16_t datalen;
+  int i;
+
+  hdr = &uip_buf[UIP_LLH_LEN];
+  hdrlen = UIP_TCPIP_HLEN;
+  data = uip_appdata;
+  if(uip_len < UIP_TCPIP_HLEN) {
+    datalen = 0;
+  } else {
+    datalen = uip_len - UIP_TCPIP_HLEN;
+  }
+
+  /* Prepare the transmission. */
+  prepare_transmission();
+
+  /* Send first preamble byte. */
+  send(0xaa);
+
+  /* Send second preamble byte. */
+  send(0xaa);
+
+  /* Send sync byte. */
+  send(0x0ff);
+
+  /* Send first start byte. */
+  send(0x01);
+
+  /* Send second start byte. */
+  send(0x07f);
+
+  /* Send packet header. */
+  send2(TR1001_TYPE_DATA);
+  send2(++packet_id);
+  send2(uip_len >> 8);
+  send2(uip_len & 0xff);
+
+  /* Send packet data. */
+  for(i = 0; i < hdrlen; ++i) {
+    send2(hdr[i]);
+  }
+  for(i = 0;i < datalen; ++i) {
+    send2(data[i]);
+  }
+
+  /* Send trailing bytes. */
+  send(0xaa);
+  send(0xaa);
+
+  /* Turn on reception again. */
+  rxon();
+
+  return UIP_FW_OK;
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * Acknowledge a received packet.
+ *
+ * This function sends out an acknowledgement packet for the
+ * previously received packet, which must be present in the uip_buf
+ * buffer.
+ *
+ * \retval UIP_FW_OK The acknowledgement was successfully.
+ * \retval UIP_FW_DROPPED The acknowledgement was dropped before transmission.
+ */
+/*------------------------------------------------------------------------------*/
+u8_t
+tr1001_ack(void)
+{
+  /* Prepare the transmission. */
+  prepare_transmission();
+
+  /* Send first preamble byte. */
+  send(0xaa);
+
+  /* Send second preamble byte. */
+  send(0xaa);
+
+  /* Send sync byte. */
+  send(0x0ff);
+
+  /* Send first start byte. */
+  send(0x01);
+
+  /* Send second start byte. */
+  send(0x07f);
+
+  /* Send packet header. */
+  send2(TR1001_TYPE_ACK);
+  send2(((struct tr1001_hdr *)uip_buf)->id);
+  send2(0);
+  send2(0);
+
+  /* Send trailing bytes. */
+  send(0xaa);
+  send(0xaa);
+
+  /* Turn on reception again. */
+  rxon();
+
+  /*  beep();*/
+    
+  return UIP_FW_OK;
+  
+}
+/*------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/msp430/tr1001.h b/contiki-msp430/msp430/tr1001.h
new file mode 100644
index 0000000..3a76d48
--- /dev/null
+++ b/contiki-msp430/msp430/tr1001.h
@@ -0,0 +1,16 @@
+#ifndef __TR1001_H__
+#define __TR1001_H__
+
+#include "uip.h"
+
+void tr1001_init(void);
+
+void tr1001_set_txpower(unsigned char p);
+
+u8_t tr1001_send(void);
+u8_t tr1001_ack(void);
+u8_t tr1001_send_acked(void);
+unsigned short tr1001_poll(void);
+
+
+#endif /* __TR1001_H__ */
diff --git a/contiki-msp430/uip/rs232.c b/contiki-msp430/uip/rs232.c
new file mode 100644
index 0000000..efa509a
--- /dev/null
+++ b/contiki-msp430/uip/rs232.c
@@ -0,0 +1,198 @@
+/**
+ * \file
+ * RS232 communication device driver for the MSP430.
+ * \author Adam Dunkels <adam@sics.se>
+ *
+ * This file contains an RS232 device driver for the MSP430 microcontroller.
+ *
+ */
+
+#include <io.h>
+#include <signal.h>
+
+#include "rs232.h"
+
+void beep(void);
+
+unsigned char lastchar, lastchar_changed;
+
+#define RECVBUF_SIZE 32
+
+static unsigned char recvbuf[RECVBUF_SIZE];
+static unsigned char recvbufptr1 = 0,
+  recvbufptr2 = 0;
+
+interrupt(UART1RX_VECTOR) rs232_rx_usart1(void)
+{
+  volatile unsigned char dummy;
+  
+  /* Check status register for receive errors. */
+  if(URCTL1 & RXERR) {
+    /* Clear error flags by forcing a dummy read. */
+    dummy = RXBUF1;
+  } else {
+    recvbuf[recvbufptr1] = RXBUF1;
+    recvbufptr1 = (recvbufptr1 + 1) % RECVBUF_SIZE;
+  }
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Initalize the RS232 port.
+ *
+ * \param none Not used.
+ * \return An error value or RS_ERR_OK if initialization succeeded.
+ */
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+rs232_init(char none)
+{
+  /* This code taken from the FU Berlin sources and reformatted. */
+  
+#define DELTA 600
+  
+  unsigned int compare, oldcapture = 0;
+  unsigned int i;
+  
+  BCSCTL1 = 0xa4; /* ACLK is devided by 4. RSEL=6 no division for MCLK
+		     and SSMCLK. XT2 is off. */
+  
+  BCSCTL2 = 0x00; /* Init FLL to desired frequency using the 32762Hz
+		     crystal DCO frquenzy = 2,4576 MHz  */
+  
+  WDTCTL = WDTPW + WDTHOLD;             /* Stop WDT */
+  BCSCTL1 |= DIVA1 + DIVA0;             /* ACLK = LFXT1CLK/8 */
+  for(i = 0xffff; i > 0; --i);          /* Delay for XTAL to settle */
+
+  /* Set DCO for 2,4576 Mhz: */
+  CCTL2 = CCIS0 + CM0 + CAP;            /* Define CCR2, CAP, ACLK */
+  TACTL = TASSEL1 + TACLR + MC1;        /* SMCLK, continous mode */
+  while(1) {
+    while((CCTL2 & CCIFG) != CCIFG);    /* Wait until capture occured! */
+    CCTL2 &= ~CCIFG;                    /* Capture occured, clear flag */
+    compare = CCR2;                     /* Get current captured SMCLK */
+    compare = compare - oldcapture;     /* SMCLK difference */
+    oldcapture = CCR2;                  /* Save current captured SMCLK */
+    
+    if(DELTA == compare) {
+      break;                            /* if equal, leave "while(1)" */
+    } else if(DELTA < compare) {        /* DCO is too fast, slow it down */
+      DCOCTL--;
+      if(DCOCTL == 0xFF) {              /* Did DCO role under? */
+	BCSCTL1--;
+      }
+    } else {                            /* -> Select next lower RSEL */
+      DCOCTL++;
+      if(DCOCTL == 0x00) {              /* Did DCO role over? */
+	BCSCTL1++;
+      }
+                                        /* -> Select next higher RSEL  */
+    }
+  }  
+  CCTL2 = 0;                            /* Stop CCR2 function */
+  TACTL = 0;                            /* Stop Timer_A */
+  
+
+  
+  /*  Radio on 19200 Bit/s */
+#if 0
+  UCTL0 = CHAR;                         /* 8-bit character */
+  UTCTL0 = SSEL1;                       /* UCLK = SMCLK */
+  UBR00 = 0x80;                         /* 2,457MHz/19200 = 128 -> 0x80 */
+  UBR10 = 0x00;                         /* */
+  UMCTL0 = 0x00;                        /* no modulation */
+  ME1 |= UTXE0 + URXE0;                 /* Enable USART0 TXD/RXD */
+  /*IE1 |= URXIE0;*/                        /* Enable USART0 RX interrupt */
+#endif /* 0 */
+  
+  /* RS232 */
+  UCTL1 = CHAR;                         /* 8-bit character */
+  UTCTL1 = SSEL1;                       /* UCLK = MCLK */
+
+#define RS232_SPEED 57600
+  
+  if(RS232_SPEED == 19200) {
+    /* Set RS232 to 19200 */
+    UBR01 = 0x80;                         /* 2,457MHz/19200 = 128 -> 0x80 */
+    UBR11 = 0x00;                         /* */
+    UMCTL1 = 0x00;                        /* no modulation  */
+  } else if(RS232_SPEED == 38400) {
+    /* Set RS232 to 38400 */
+    UBR01 = 0x40;                         /* 2,457MHz/38400 = 64 -> 0x40 */
+    UBR11 = 0x00;                         /* */
+    UMCTL1 = 0x00;                        /* no modulation  */
+  } else if(RS232_SPEED == 57600) {
+    UBR01 = 0x2a;                         /* 2,457MHz/57600 = 42.7 -> 0x2A */
+    UBR11 = 0x00;                         /* */
+    UMCTL1 = 0x5b;                        /* */ 
+  } else if(RS232_SPEED == 115200) {
+    UBR01 = 0x15;                         /* 2,457MHz/115200 = 21.4 -> 0x15 */
+    UBR11 = 0x00;                         /* */
+    UMCTL1 = 0x4a;                        /* */ 
+  }
+  
+  
+  ME2 |= (UTXE1 | URXE1);                 /* Enable USART1 TXD/RXD */
+  IE2 |= URXIE1;                        /* Enable USART1 RX interrupt  */
+  BCSCTL1 &= ~(DIVA1 + DIVA0);          /* remove /8 divisor from ACLK again    */
+
+
+  rs232_put('!');
+  
+  return RS_ERR_OK;
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Configure the RS232 port.
+ *
+ * \param params RS232 parameters.
+ * \param parity Parity.
+ * \return An error value or RS_ERR_OK if configuration succeeded.
+ */
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+rs232_params(unsigned char params, unsigned char parity)
+{
+  return RS_ERR_OK;
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Get a byte from the serial port.
+ *
+ * \param c A pointer to the location where the byte is to be stored.
+ *
+ * \return An error value or RS_ERR_OK. If no data is available, the
+ * function returns RS_ERR_NO_DATA which is not a fatal error.
+ */
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+rs232_get(char *c)
+{
+  if(recvbufptr1 == recvbufptr2) {
+    return RS_ERR_NO_DATA;
+  }
+  *c = recvbuf[recvbufptr2];
+  recvbufptr2 = (recvbufptr2 + 1) % RECVBUF_SIZE;
+  return RS_ERR_OK;
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Transmit a byte over the serial port.
+ *
+ * \param c A pointer to the location where the byte is to be stored.
+ *
+ * \return An error value or RS_ERR_OK. If the transmission buffer was
+ * full, RS_ERR_OVERFLOW is returned.
+ */
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+rs232_put(char c)
+{
+  /* Loop until the transmission buffer is available. */
+  while ((IFG2 & UTXIFG1) == 0);
+
+  /* Transmit the data. */
+  TXBUF1 = c;
+
+  return RS_ERR_OK;
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/uip/rs232.h b/contiki-msp430/uip/rs232.h
new file mode 100644
index 0000000..8db178f
--- /dev/null
+++ b/contiki-msp430/uip/rs232.h
@@ -0,0 +1,56 @@
+/**
+ * \file
+ * Header file for MSP430 RS232 driver.
+ * \author Adam Dunkels <adam@sics.se>
+ *
+ */
+#ifndef __RS232_H__
+#define __RS232_H__
+
+/* These values were taken from the "rs232.h" include file from cc65,
+   written by Ullrich von Bassewitz. */
+
+#define RS_BAUD_50                      0x00
+#define RS_BAUD_110                     0x01
+#define RS_BAUD_134_5                   0x02
+#define RS_BAUD_300                     0x03
+#define RS_BAUD_600                     0x04
+#define RS_BAUD_1200                    0x05
+#define RS_BAUD_2400                    0x06
+#define RS_BAUD_4800                    0x07
+#define RS_BAUD_9600                    0x08
+#define RS_BAUD_19200                   0x09
+#define RS_BAUD_38400                   0x0A
+#define RS_BAUD_57600                   0x0B
+#define RS_BAUD_115200                  0x0C
+#define RS_BAUD_230400                  0x0D
+
+#define RS_BITS_5                       0x60
+#define RS_BITS_6                       0x40
+#define RS_BITS_7                       0x20
+#define RS_BITS_8                       0x00
+
+#define RS_PAR_NONE                     0x00
+#define RS_PAR_ODD                      0x20
+#define RS_PAR_EVEN                     0x60
+#define RS_PAR_MARK                     0xA0
+#define RS_PAR_SPACE                    0xE0
+
+#define RS_STOP_1                       0x00
+#define RS_STOP_2                       0x80
+
+#define RS_ERR_OK                       0x00    /* Not an error - relax */
+#define RS_ERR_NOT_INITIALIZED          0x01    /* Module not initialized */
+#define RS_ERR_BAUD_TOO_FAST            0x02    /* Cannot handle baud rate */
+#define RS_ERR_BAUD_NOT_AVAIL           0x03    /* Baud rate not available */
+#define RS_ERR_NO_DATA                  0x04    /* Nothing to read */
+#define RS_ERR_OVERFLOW                 0x05    /* No room in send buffer */
+#define RS_ERR_INIT_FAILED              0x06    /* Initialization of RS232 routines f
+ailed */
+
+unsigned char rs232_init(char none);
+unsigned char rs232_params(unsigned char params, unsigned char parity);
+unsigned char rs232_get(char *c);
+unsigned char rs232_put(char c);
+
+#endif /* __RS232_H__ */
diff --git a/contiki-msp430/uip/rs232dev.c b/contiki-msp430/uip/rs232dev.c
new file mode 100644
index 0000000..4e96d44
--- /dev/null
+++ b/contiki-msp430/uip/rs232dev.c
@@ -0,0 +1,250 @@
+/*
+ * Copyright (c) 2001, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright 
+ *    notice, this list of conditions and the following disclaimer in the 
+ *    documentation and/or other materials provided with the distribution. 
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id: rs232dev.c,v 1.2 2005/02/23 22:45:38 oliverschmidt Exp $
+ *
+ */
+
+/*
+ * This is a generic implementation of the SLIP protocol over an RS232
+ * (serial) device. While initially intented for the C64, the code can
+ * easily be ported to other platforms as well.
+ *
+ * Huge thanks to Ullrich von Bassewitz <uz@cc65.org> of cc65 fame for
+ * and endless supply of bugfixes, insightsful comments and
+ * suggestions, and improvements to this code!
+ */
+
+#include "rs232.h"
+#include <string.h>
+
+ /* This will include the system specific header files as well */
+#if defined(__CBM__)
+#  include <cbm.h>
+#elif defined(__ATARI__)
+#  include <atari.h>
+#endif
+
+#include "uip.h"
+
+#define SLIP_END     0300
+#define SLIP_ESC     0333
+#define SLIP_ESC_END 0334
+#define SLIP_ESC_ESC 0335
+
+
+#define SIO_RECV(c)  while(rs232_get(&c) == RS_ERR_NO_DATA)
+#define SIO_POLL(c)  (rs232_get(&c) != RS_ERR_NO_DATA)
+#define SIO_SEND(c)  rs232_put(c)
+
+#define MAX_SIZE (UIP_BUFSIZE - UIP_LLH_LEN)
+
+static u8_t slip_buf[MAX_SIZE + 2];
+
+#if MAX_SIZE > 255
+static u16_t len, tmplen;
+#else
+static u8_t len, tmplen;
+#endif /* MAX_SIZE > 255 */
+
+#if 1
+#define printf(x)
+#else
+#include <stdio.h>
+#endif
+
+
+/*-----------------------------------------------------------------------------------*/
+static void
+rs232_err(char err)
+{
+  switch(err) {
+  case RS_ERR_OK:
+    printf("RS232 OK\n");
+    break;
+  case RS_ERR_NOT_INITIALIZED:
+    printf("RS232 not initialized\n");
+    break;
+  case RS_ERR_BAUD_TOO_FAST:
+    printf("RS232 baud too fast\n");
+    break;
+  case RS_ERR_BAUD_NOT_AVAIL:
+    printf("RS232 baud rate not available\n");
+    break;
+  case RS_ERR_NO_DATA:
+    printf("RS232 nothing to read\n");
+    break;
+  case RS_ERR_OVERFLOW:
+    printf("RS232 overflow\n");
+    break;
+  }
+
+}
+/*-----------------------------------------------------------------------------------*/
+/*
+ * rs232dev_send():
+ *
+ * Sends the packet in the uip_buf and uip_appdata buffers. The first
+ * 40 bytes of the packet (the IP and TCP headers) are read from the
+ * uip_buf buffer, and the following bytes (the application data) are
+ * read from the uip_appdata buffer.
+ *
+ */
+/*-----------------------------------------------------------------------------------*/
+void
+rs232dev_send(void)
+{
+#if MAX_SIZE > 255
+  u16_t i;
+#else
+  u8_t i;
+#endif /* MAX_SIZE > 255 */
+  u8_t *ptr;
+  u8_t c;
+
+  SIO_SEND(SLIP_END);
+
+  ptr = &uip_buf[UIP_LLH_LEN];
+  for(i = 0; i < uip_len; ++i) {
+    if(i == UIP_TCPIP_HLEN) {
+      ptr = (char *)uip_appdata;
+    }
+    c = *ptr++;
+    switch(c) {
+    case SLIP_END:
+      SIO_SEND(SLIP_ESC);
+      SIO_SEND(SLIP_ESC_END);
+      break;
+    case SLIP_ESC:
+      SIO_SEND(SLIP_ESC);
+      SIO_SEND(SLIP_ESC_ESC);
+      break;
+    default:
+      SIO_SEND(c);
+      break;
+    }
+  }
+  SIO_SEND(SLIP_END);
+}
+/*-----------------------------------------------------------------------------------*/
+/*
+ * rs232dev_poll():
+ *
+ * Read all avaliable bytes from the RS232 interface into the slip_buf
+ * buffer. If no more bytes are avaliable, it returns with 0 to
+ * indicate that no packet was immediately ready. When a full packet
+ * has been read into the buffer, the packet is copied into the
+ * uip_buf buffer and the length of the packet is returned.
+ *
+ */
+/*-----------------------------------------------------------------------------------*/
+#if MAX_SIZE > 255
+u16_t
+#else 
+u8_t
+#endif /* MAX_SIZE > 255 */
+rs232dev_poll(void)
+{
+  u8_t c;
+  static u8_t lastc;
+  
+  while(SIO_POLL(c)) {
+    /*    printf("c %x\n", c);*/
+    switch(c) {
+    case SLIP_ESC:
+      lastc = c;
+      break;
+      
+    case SLIP_END:
+      lastc = c;
+      /* End marker found, we copy our input buffer to the uip_buf
+	 buffer and return the size of the packet we copied. */
+      memcpy(&uip_buf[UIP_LLH_LEN], slip_buf, len);
+      tmplen = len;
+      len = 0;
+      return tmplen;
+      
+    default:     
+      if(lastc == SLIP_ESC) {
+	lastc = c;
+	/* Previous read byte was an escape byte, so this byte will be
+	   interpreted differently from others. */
+	switch(c) {
+	case SLIP_ESC_END:
+	  c = SLIP_END;
+	  break;
+	case SLIP_ESC_ESC:
+	  c = SLIP_ESC;
+	  break;
+	}
+      } else {
+	lastc = c;
+      }
+      
+      
+      slip_buf[len] = c;
+      ++len;
+      
+      if(len > MAX_SIZE) {
+	len = 0;
+      }
+    
+      break;
+    }
+  }
+  return 0;
+}
+/*-----------------------------------------------------------------------------------*/
+/*
+ * rs232dev_init():
+ *
+ * Initializes the RS232 device and sets the parameters of the device.
+ *
+ */ 
+/*-----------------------------------------------------------------------------------*/
+void
+rs232dev_init(void)
+{
+  char err;
+  
+  err = rs232_init(0);
+  rs232_err(err);
+  err = rs232_params(RS_BAUD_9600 | RS_BITS_8 | RS_STOP_1, RS_PAR_NONE);
+  rs232_err(err);
+
+  len = 0;
+
+  return;
+}
+/*-----------------------------------------------------------------------------------*/
+
diff --git a/contiki-msp430/uip/rs232dev.h b/contiki-msp430/uip/rs232dev.h
new file mode 100644
index 0000000..be9fcec
--- /dev/null
+++ b/contiki-msp430/uip/rs232dev.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2001, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright 
+ *    notice, this list of conditions and the following disclaimer in the 
+ *    documentation and/or other materials provided with the distribution. 
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id: rs232dev.h,v 1.2 2005/01/26 23:36:37 oliverschmidt Exp $
+ *
+ */
+
+#ifndef __RS232DEV_H__
+#define __RS232DEV_H__
+
+#include "uip.h"
+
+void rs232dev_init(void);
+u8_t rs232dev_read(void);
+void rs232dev_send(void);
+
+#if MAX_SIZE > 255
+u16_t rs232dev_poll(void);
+#else 
+u8_t rs232dev_poll(void);
+#endif /* UIP_BUFSIZE > 255 */
+
+#endif /* __RS232DEV_H__ */
diff --git a/contiki-msp430/uip/slip-drv.c b/contiki-msp430/uip/slip-drv.c
new file mode 100644
index 0000000..2cafcf3
--- /dev/null
+++ b/contiki-msp430/uip/slip-drv.c
@@ -0,0 +1,141 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright 
+ *    notice, this list of conditions and the following disclaimer in the 
+ *    documentation and/or other materials provided with the distribution. 
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the Contiki desktop OS fpr the C64
+ *
+ * $Id: slip-drv.c,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+
+
+/* uip_main.c: initialization code and main event loop. */
+
+#include "uip.h"
+#include "uip_arp.h"
+#include "uip-signal.h"
+#include "rs232dev.h"
+#include "loader.h"
+#include "ek.h"
+
+#define BUF ((struct uip_eth_hdr *)&uip_buf[0])
+
+static u8_t i, arptimer;
+static u16_t start, current;
+
+static void slip_drv_idle(void);
+static DISPATCHER_SIGHANDLER(slip_drv_sighandler, s, data);
+static struct dispatcher_proc p =
+  {DISPATCHER_PROC("TCP/IP/SLIP driver", slip_drv_idle,
+		   slip_drv_sighandler, NULL)};
+static ek_id_t id;
+
+
+/*-----------------------------------------------------------------------------------*/
+static void
+timer(void)
+{
+  for(i = 0; i < UIP_CONNS; ++i) {
+    uip_periodic(i);
+    if(uip_len > 0) {
+      rs232dev_send();
+    }
+  }
+
+  for(i = 0; i < UIP_UDP_CONNS; i++) {
+    uip_udp_periodic(i);
+    /* If the above function invocation resulted in data that
+       should be sent out on the network, the global variable
+       uip_len is set to a value > 0. */
+    if(uip_len > 0) {
+      rs232dev_send();
+    }
+  }   
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+slip_drv_idle(void)
+{
+  uip_len = rs232dev_poll();
+  if(uip_len > 0) {
+    uip_input();
+    if(uip_len > 0) {
+      rs232dev_send();
+    }
+  }
+
+  /* Check the clock so see if we should call the periodic uIP
+     processing. */
+  current = ek_clock();
+
+  if((current - start) >= CLK_TCK/2) {
+    timer();
+    start = current;
+  } 
+}
+/*-----------------------------------------------------------------------------------*/
+LOADER_INIT_FUNC(slip_drv_init, arg)
+{
+  arg_free(arg);
+  
+  if(id == EK_ID_NONE) {
+    id = dispatcher_start(&p);
+
+    rs232dev_init();
+    
+    arptimer = 0;
+    start = ek_clock();
+
+    dispatcher_listen(uip_signal_poll);
+    dispatcher_listen(uip_signal_poll_udp);
+    dispatcher_listen(uip_signal_uninstall);    
+  }
+}
+/*-----------------------------------------------------------------------------------*/
+static
+DISPATCHER_SIGHANDLER(slip_drv_sighandler, s, data)
+{
+  DISPATCHER_SIGHANDLER_ARGS(s, data);
+
+  if(s == uip_signal_poll) {
+    uip_periodic_conn(data);
+    if(uip_len > 0) {
+      rs232dev_send();
+    }
+  } else if(s == uip_signal_poll_udp) {
+    uip_udp_periodic_conn(data);
+    if(uip_len > 0) {
+      rs232dev_send();
+    }    
+  } else if(s == dispatcher_signal_quit ||
+     s == uip_signal_uninstall) {
+    dispatcher_exit(&p);
+    id = EK_ID_NONE;
+    LOADER_UNLOAD();   
+  }
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/uip/slipdev-arch.c b/contiki-msp430/uip/slipdev-arch.c
new file mode 100644
index 0000000..84a6a53
--- /dev/null
+++ b/contiki-msp430/uip/slipdev-arch.c
@@ -0,0 +1,5 @@
+#include "rs232.h"
+#include "slipdev.h"
+
+void slipdev_char_put(u8_t c) { rs232_put(c); }
+u8_t slipdev_char_poll(u8_t *c) { return (rs232_get(c) != RS_ERR_NO_DATA); }
diff --git a/contiki-msp430/uip/uip_arch.c b/contiki-msp430/uip/uip_arch.c
new file mode 100644
index 0000000..a6b63c1
--- /dev/null
+++ b/contiki-msp430/uip/uip_arch.c
@@ -0,0 +1,218 @@
+/*
+ * Copyright (c) 2001, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright 
+ *    notice, this list of conditions and the following disclaimer in the 
+ *    documentation and/or other materials provided with the distribution. 
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id: uip_arch.c,v 1.3 2005/02/24 22:07:16 oliverschmidt Exp $
+ *
+ */
+
+
+#include "uip.h"
+#include "uip_arch.h"
+
+#define BUF ((uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
+#define IP_PROTO_TCP    6
+
+/*-----------------------------------------------------------------------------------*/
+#if UIP_BUFSIZE > 255
+/*-----------------------------------------------------------------------------------*/
+void
+uip_add_rcv_nxt(u16_t n)
+{
+  uip_conn->rcv_nxt[3] += (n & 0xff);
+  uip_conn->rcv_nxt[2] += (n >> 8);
+
+  if(uip_conn->rcv_nxt[2] < (n >> 8)) {
+    ++uip_conn->rcv_nxt[1];    
+    if(uip_conn->rcv_nxt[1] == 0) {
+      ++uip_conn->rcv_nxt[0];
+    }
+  }
+  
+  
+  if(uip_conn->rcv_nxt[3] < (n & 0xff)) {
+    ++uip_conn->rcv_nxt[2];  
+    if(uip_conn->rcv_nxt[2] == 0) {
+      ++uip_conn->rcv_nxt[1];    
+      if(uip_conn->rcv_nxt[1] == 0) {
+	++uip_conn->rcv_nxt[0];
+      }
+    }
+  }
+}
+/*-----------------------------------------------------------------------------------*/
+void
+uip_add32(u8_t *op32, u16_t op16)
+{
+  
+  uip_acc32[3] = op32[3] + (op16 & 0xff);
+  uip_acc32[2] = op32[2] + (op16 >> 8);
+  uip_acc32[1] = op32[1];
+  uip_acc32[0] = op32[0];
+  
+  if(uip_acc32[2] < (op16 >> 8)) {
+    ++uip_acc32[1];    
+    if(uip_acc32[1] == 0) {
+      ++uip_acc32[0];
+    }
+  }
+  
+  
+  if(uip_acc32[3] < (op16 & 0xff)) {
+    ++uip_acc32[2];  
+    if(uip_acc32[2] == 0) {
+      ++uip_acc32[1];    
+      if(uip_acc32[1] == 0) {
+	++uip_acc32[0];
+      }
+    }
+  }
+}
+/*-----------------------------------------------------------------------------------*/
+#else /* UIP_BUFSIZE > 255 */
+/*-----------------------------------------------------------------------------------*/
+void
+uip_add_rcv_nxt(u8_t n)
+{
+  uip_conn->rcv_nxt[3] += n;
+  if(uip_conn->rcv_nxt[3] < n) {
+    ++uip_conn->rcv_nxt[2];  
+    if(uip_conn->rcv_nxt[2] == 0) {
+      ++uip_conn->rcv_nxt[1];    
+      if(uip_conn->rcv_nxt[1] == 0) {
+	++uip_conn->rcv_nxt[0];
+      }
+    }
+  }
+}
+/*-----------------------------------------------------------------------------------*/
+void
+uip_add32(u8_t *op32, u8_t op8)
+{
+  uip_acc32[3] = op32[3] + op8;
+  uip_acc32[2] = op32[2];
+  uip_acc32[1] = op32[1];
+  uip_acc32[0] = op32[0];
+  
+  if(uip_acc32[3] < op8) {
+    ++uip_acc32[2];  
+    if(uip_acc32[2] == 0) {
+      ++uip_acc32[1];    
+      if(uip_acc32[1] == 0) {
+	++uip_acc32[0];
+      }
+    }
+  }
+}
+/*-----------------------------------------------------------------------------------*/
+#endif /* UIP_BUFSIZE > 255 */
+
+u16_t
+uip_chksum(u16_t *sdata, u16_t len)
+{
+  u8_t *dataptr;
+  u16_t acc;
+
+  for(acc = 0; len > 1; len -= 2) {
+    acc += *sdata;
+    if(acc < *sdata) {
+      /* Overflow, so we add the carry to acc (i.e., increase by
+         one). */
+      ++acc;
+    }
+    ++sdata;
+  }
+
+  dataptr = sdata;
+  
+  /* add up any odd byte */
+  if(len == 1) {
+    acc += htons(((u16_t)(*dataptr)) << 8);
+    if(acc < htons(((u16_t)(*dataptr)) << 8)) {
+      ++acc;
+    }
+  }
+
+  return acc;
+}
+/*-----------------------------------------------------------------------------------*/
+u16_t
+uip_ipchksum(void)
+{
+  return uip_chksum((u16_t *)&uip_buf[UIP_LLH_LEN], UIP_IPH_LEN);
+}
+/*-----------------------------------------------------------------------------------*/
+u16_t
+uip_tcpchksum(void)
+{
+  u16_t hsum, sum;
+
+  
+  /* Compute the checksum of the TCP header. */
+  hsum = uip_chksum((u16_t *)&uip_buf[UIP_LLH_LEN + UIP_IPH_LEN], UIP_TCPH_LEN);
+
+  /* Compute the checksum of the data in the TCP packet and add it to
+     the TCP header checksum. */
+  sum = uip_chksum((u16_t *)uip_appdata,
+		   (u16_t)(((((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) -
+		   UIP_IPTCPH_LEN)));
+
+
+  if((sum += hsum) < hsum) {
+    ++sum;
+  }
+  
+  if((sum += BUF->srcipaddr[0]) < BUF->srcipaddr[0]) {
+    ++sum;
+  }
+  if((sum += BUF->srcipaddr[1]) < BUF->srcipaddr[1]) {
+    ++sum;
+  }
+  if((sum += BUF->destipaddr[0]) < BUF->destipaddr[0]) {
+    ++sum;
+  }
+  if((sum += BUF->destipaddr[1]) < BUF->destipaddr[1]) {
+    ++sum;
+  }
+  if((sum += (u16_t)HTONS((u16_t)IP_PROTO_TCP)) < (u16_t)HTONS((u16_t)IP_PROTO_TCP)) {
+    ++sum;
+  }
+
+  hsum = (u16_t)HTONS((((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - UIP_IPH_LEN);
+  
+  if((sum += hsum) < hsum) {
+    ++sum;
+  }
+  
+  return sum;
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/uip/uip_arch.h b/contiki-msp430/uip/uip_arch.h
new file mode 100644
index 0000000..6918bb7
--- /dev/null
+++ b/contiki-msp430/uip/uip_arch.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2001, Adam Dunkels.
+ * All rights reserved. 
+ *
+ * Redistribution and use in source and binary forms, with or without 
+ * modification, are permitted provided that the following conditions 
+ * are met: 
+ * 1. Redistributions of source code must retain the above copyright 
+ *    notice, this list of conditions and the following disclaimer. 
+ * 2. Redistributions in binary form must reproduce the above copyright 
+ *    notice, this list of conditions and the following disclaimer in the 
+ *    documentation and/or other materials provided with the distribution. 
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior
+ *    written permission.  
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id: uip_arch.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+
+#ifndef __UIP_ARCH_H__
+#define __UIP_ARCH_H__
+
+#include "uip.h"
+
+#if UIP_BUFSIZE > 255
+void uip_add_rcv_nxt(u16_t n);
+void uip_add32(u8_t *op32, u16_t op16);
+#else
+void uip_add_rcv_nxt(u8_t n);
+void uip_add32(u8_t *op32, u8_t op8);
+#endif /* UIP_BUFSIZE > 255 */
+u16_t uip_ipchksum(void);
+u16_t uip_tcpchksum(void);
+
+#endif /* __UIP_ARCH_H__ */