From b9e28ce35b8f363f7b3b46a3a11aa7de30a4a2cd Mon Sep 17 00:00:00 2001 From: adamdunkels Date: Wed, 3 Feb 2010 16:46:52 +0000 Subject: [PATCH] Compressed the Javascript code to improve loading time; placed the uncompressed code in a separate file --- examples/sky-ip/httpd-fs/sensors.shtml | 99 +-- examples/sky-ip/httpd-fsdata.c | 936 ++++++++++++------------- examples/sky-ip/sensors-script.js | 98 +++ 3 files changed, 545 insertions(+), 588 deletions(-) create mode 100644 examples/sky-ip/sensors-script.js diff --git a/examples/sky-ip/httpd-fs/sensors.shtml b/examples/sky-ip/httpd-fs/sensors.shtml index 5ae61af1c..fb04e3d12 100644 --- a/examples/sky-ip/httpd-fs/sensors.shtml +++ b/examples/sky-ip/httpd-fs/sensors.shtml @@ -1,108 +1,11 @@ %!: /header.html

Node %! nodeid

Reload -

Environment

diff --git a/examples/sky-ip/httpd-fsdata.c b/examples/sky-ip/httpd-fsdata.c index 14758ae7e..7801efb8e 100644 --- a/examples/sky-ip/httpd-fsdata.c +++ b/examples/sky-ip/httpd-fsdata.c @@ -1,502 +1,458 @@ -static const unsigned char data_sensordata_shtml[] = { - /* /sensordata.shtml */ - 0x2f, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x25, 0x21, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, - 0xa, 0}; +/*********Generated by contiki/tools/makefsdata on 2010-02-03*********/ -static const unsigned char data_sensors_shtml[] = { - /* /sensors.shtml */ - 0x2f, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, - 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x6a, 0x61, 0x76, 0x61, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x3e, 0xa, 0x76, - 0x61, 0x72, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x3b, 0xa, - 0xa, 0x69, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x28, 0x35, 0x30, 0x2c, 0x36, 0x30, - 0x29, 0xa, 0x69, 0x2e, 0x73, 0x72, 0x63, 0x20, 0x3d, 0x20, - 0x22, 0x73, 0x70, 0x69, 0x6e, 0x2e, 0x67, 0x69, 0x66, 0x22, - 0xa, 0xa, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x28, 0x29, 0x20, 0x7b, 0xa, - 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x69, 0x6d, 0x67, 0x20, - 0x3d, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, - 0x2e, 0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x42, 0x79, 0x49, 0x64, 0x28, 0x22, 0x73, 0x70, 0x69, - 0x6e, 0x22, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x69, 0x6d, 0x67, - 0x2e, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x48, 0x54, 0x4d, 0x4c, - 0x20, 0x3d, 0x20, 0x27, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, - 0x27, 0x3b, 0xa, 0x20, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x53, - 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x64, 0x61, 0x74, 0x61, 0x28, - 0x29, 0x3b, 0xa, 0x7d, 0xa, 0xa, 0x66, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x53, - 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x64, 0x61, 0x74, 0x61, 0x28, - 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, - 0x72, 0x3b, 0xa, 0x20, 0x20, 0x74, 0x72, 0x79, 0x20, 0x7b, - 0x20, 0x72, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x58, - 0x4d, 0x4c, 0x48, 0x74, 0x74, 0x70, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x28, 0x29, 0x3b, 0x20, 0x7d, 0xa, 0x20, - 0x20, 0x63, 0x61, 0x74, 0x63, 0x68, 0x28, 0x65, 0x29, 0x20, - 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x74, 0x72, 0x79, 0x20, - 0x7b, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x58, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x28, 0x22, 0x4d, 0x73, 0x78, 0x6d, 0x6c, - 0x32, 0x2e, 0x58, 0x4d, 0x4c, 0x48, 0x54, 0x54, 0x50, 0x22, - 0x29, 0x3b, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, 0x63, - 0x61, 0x74, 0x63, 0x68, 0x28, 0x65, 0x29, 0x20, 0x7b, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x72, 0x79, 0x20, - 0x7b, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x58, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x28, 0x22, 0x4d, 0x69, 0x63, 0x72, 0x6f, - 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x58, 0x4d, 0x4c, 0x48, 0x54, - 0x54, 0x50, 0x22, 0x29, 0x3b, 0x20, 0x7d, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x63, 0x61, 0x74, 0x63, 0x68, 0x28, - 0x65, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x28, 0x22, - 0x59, 0x6f, 0x75, 0x72, 0x20, 0x62, 0x72, 0x6f, 0x77, 0x73, - 0x65, 0x72, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, - 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x20, - 0x41, 0x4a, 0x41, 0x58, 0x21, 0x22, 0x29, 0x3b, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x3b, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x7d, 0xa, 0x20, - 0x20, 0x72, 0x2e, 0x6f, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x79, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x69, 0x66, 0x28, 0x72, 0x2e, 0x72, 0x65, 0x61, 0x64, - 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x3d, 0x3d, 0x20, - 0x31, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x76, 0x61, 0x72, 0x20, 0x69, 0x6d, 0x67, 0x20, 0x3d, - 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, - 0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x42, 0x79, 0x49, 0x64, 0x28, 0x22, 0x73, 0x70, 0x69, 0x6e, - 0x22, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x69, 0x6d, 0x67, 0x2e, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x48, - 0x54, 0x4d, 0x4c, 0x20, 0x3d, 0x20, 0x27, 0x3c, 0x69, 0x6d, - 0x67, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x73, 0x70, 0x69, - 0x6e, 0x2e, 0x67, 0x69, 0x66, 0x22, 0x3e, 0x27, 0x3b, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x69, 0x66, 0x28, 0x72, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x79, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x34, - 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x76, 0x61, 0x72, 0x20, 0x69, 0x6d, 0x67, 0x20, 0x3d, 0x20, - 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, - 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, - 0x79, 0x49, 0x64, 0x28, 0x22, 0x73, 0x70, 0x69, 0x6e, 0x22, - 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, - 0x6d, 0x67, 0x2e, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x48, 0x54, - 0x4d, 0x4c, 0x20, 0x3d, 0x20, 0x27, 0x74, 0x6f, 0x6f, 0x6b, - 0x20, 0x27, 0x20, 0x20, 0x2b, 0xa, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x28, - 0x6e, 0x65, 0x77, 0x20, 0x44, 0x61, 0x74, 0x65, 0x28, 0x29, - 0x29, 0x2e, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x28, - 0x29, 0x20, 0x2d, 0x20, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x2e, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x28, 0x29, - 0x29, 0x20, 0x2f, 0x20, 0x31, 0x30, 0x30, 0x30, 0x20, 0x2b, - 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x27, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x27, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x65, 0x76, 0x61, 0x6c, 0x28, 0x72, 0x2e, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x65, 0x78, 0x74, - 0x29, 0x3b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0xa, - 0x20, 0x20, 0x20, 0x7d, 0xa, 0x20, 0x20, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x44, - 0x61, 0x74, 0x65, 0x28, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x72, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x22, 0x47, 0x45, 0x54, - 0x22, 0x2c, 0x20, 0x22, 0x2f, 0x73, 0x65, 0x6e, 0x73, 0x6f, - 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, 0x29, 0x3b, - 0xa, 0x20, 0x20, 0x72, 0x2e, 0x73, 0x65, 0x6e, 0x64, 0x28, - 0x6e, 0x75, 0x6c, 0x6c, 0x29, 0x3b, 0xa, 0x7d, 0xa, 0xa, - 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, - 0x28, 0x65, 0x6c, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x64, - 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x3b, 0xa, 0x20, 0x20, 0x69, 0x66, 0x28, 0x64, 0x2e, - 0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x42, 0x79, 0x49, 0x64, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x64, - 0x2e, 0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x42, 0x79, 0x49, 0x64, 0x28, 0x65, 0x6c, 0x29, 0x3b, - 0xa, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, - 0x69, 0x66, 0x20, 0x28, 0x64, 0x2e, 0x61, 0x6c, 0x6c, 0x29, - 0x20, 0x7b, 0xa, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x64, 0x2e, 0x61, 0x6c, 0x6c, 0x5b, - 0x65, 0x6c, 0x5d, 0x3b, 0xa, 0x20, 0x20, 0x7d, 0xa, 0x7d, - 0xa, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x73, 0x28, 0x65, 0x6c, 0x2c, 0x6e, 0x2c, 0x6d, 0x61, 0x78, - 0x2c, 0x74, 0x65, 0x78, 0x74, 0x29, 0x20, 0x7b, 0xa, 0x20, - 0x20, 0x65, 0x28, 0x65, 0x6c, 0x29, 0x2e, 0x69, 0x6e, 0x6e, - 0x65, 0x72, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x3d, 0x20, 0x27, - 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, - 0x74, 0x68, 0x3d, 0x35, 0x30, 0x34, 0x20, 0x62, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x3d, 0x30, 0x20, 0x63, 0x65, 0x6c, 0x6c, - 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3d, 0x31, 0x20, - 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, - 0x67, 0x3d, 0x30, 0x3e, 0x27, 0x2b, 0xa, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x27, 0x3c, 0x74, - 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x20, 0x77, 0x69, 0x64, 0x74, - 0x68, 0x3d, 0x32, 0x30, 0x30, 0x3e, 0x27, 0x20, 0x2b, 0xa, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x74, 0x65, 0x78, 0x74, 0x20, 0x2b, 0x20, 0x27, 0x3c, 0x2f, - 0x74, 0x64, 0x3e, 0x27, 0x20, 0x2b, 0xa, 0x9, 0x9, 0x20, - 0x20, 0x20, 0x20, 0x27, 0x3c, 0x74, 0x64, 0x20, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3d, 0x27, 0x20, 0x2b, 0x20, 0x28, 0x33, - 0x30, 0x30, 0x2a, 0x6e, 0x2f, 0x6d, 0x61, 0x78, 0x29, 0x20, - 0x2b, 0x20, 0x27, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3d, 0x22, 0x67, 0x72, 0x61, 0x79, 0x22, 0x3e, 0x26, - 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f, 0x74, 0x64, 0x3e, - 0x27, 0x20, 0x2b, 0xa, 0x9, 0x9, 0x20, 0x20, 0x20, 0x20, - 0x27, 0x3c, 0x74, 0x64, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, - 0x3d, 0x27, 0x20, 0x2b, 0x20, 0x28, 0x33, 0x30, 0x30, 0x2d, - 0x33, 0x30, 0x30, 0x2a, 0x6e, 0x2f, 0x6d, 0x61, 0x78, 0x29, - 0x20, 0x2b, 0x20, 0x27, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x3d, 0x22, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x67, - 0x72, 0x61, 0x79, 0x22, 0x3e, 0x26, 0x6e, 0x62, 0x73, 0x70, - 0x3b, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x27, 0x20, 0x2b, 0xa, - 0x9, 0x9, 0x20, 0x20, 0x20, 0x20, 0x27, 0x3c, 0x2f, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x3e, 0x27, 0x3b, 0xa, 0x7d, 0xa, - 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, - 0x63, 0x28, 0x6e, 0x2c, 0x64, 0x29, 0x20, 0x7b, 0xa, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x2e, - 0x74, 0x6f, 0x46, 0x69, 0x78, 0x65, 0x64, 0x28, 0x64, 0x29, - 0x3b, 0xa, 0x7d, 0xa, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x74, 0x28, 0x6d, 0x29, 0x20, 0x7b, 0xa, - 0x20, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x64, 0x63, 0x28, 0x2d, - 0x33, 0x39, 0x2e, 0x36, 0x2b, 0x30, 0x2e, 0x30, 0x31, 0x2a, - 0x6d, 0x2c, 0x20, 0x31, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x73, - 0x28, 0x27, 0x74, 0x65, 0x6d, 0x70, 0x27, 0x2c, 0x6e, 0x2c, - 0x34, 0x30, 0x2c, 0x27, 0x54, 0x65, 0x6d, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x27, 0x2b, 0x6e, 0x2b, - 0x27, 0x20, 0x26, 0x64, 0x65, 0x67, 0x3b, 0x43, 0x27, 0x29, - 0x3b, 0xa, 0x7d, 0xa, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x68, 0x28, 0x6d, 0x29, 0x20, 0x7b, 0xa, - 0x20, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x64, 0x63, 0x28, 0x2d, - 0x34, 0x2b, 0x30, 0x2e, 0x30, 0x34, 0x30, 0x35, 0x2a, 0x6d, - 0x20, 0x2d, 0x20, 0x32, 0x2e, 0x38, 0x65, 0x2d, 0x36, 0x2a, - 0x28, 0x6d, 0x2a, 0x6d, 0x29, 0x2c, 0x20, 0x32, 0x29, 0x3b, - 0xa, 0x20, 0x20, 0x73, 0x28, 0x27, 0x68, 0x75, 0x6d, 0x27, - 0x2c, 0x6e, 0x2c, 0x31, 0x30, 0x30, 0x2c, 0x27, 0x48, 0x75, - 0x6d, 0x69, 0x64, 0x69, 0x74, 0x79, 0x20, 0x27, 0x2b, 0x6e, - 0x2b, 0x27, 0x25, 0x27, 0x29, 0x3b, 0xa, 0x7d, 0xa, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x31, - 0x28, 0x6d, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x6e, 0x20, - 0x3d, 0x20, 0x64, 0x63, 0x28, 0x2e, 0x37, 0x36, 0x32, 0x39, - 0x33, 0x39, 0x34, 0x33, 0x37, 0x35, 0x2a, 0x6d, 0x2c, 0x20, - 0x30, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x73, 0x28, 0x27, 0x6c, - 0x31, 0x27, 0x2c, 0x6e, 0x2c, 0x32, 0x30, 0x30, 0x2c, 0x27, - 0x4c, 0x69, 0x67, 0x68, 0x74, 0x20, 0x31, 0x20, 0x27, 0x2b, - 0x6e, 0x29, 0x3b, 0xa, 0x7d, 0xa, 0x66, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x32, 0x28, 0x6d, 0x29, - 0x20, 0x7b, 0xa, 0x20, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x64, - 0x63, 0x28, 0x2e, 0x34, 0x36, 0x39, 0x33, 0x36, 0x30, 0x33, - 0x2a, 0x6d, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0xa, 0x20, 0x20, - 0x73, 0x28, 0x27, 0x6c, 0x32, 0x27, 0x2c, 0x6e, 0x2c, 0x32, - 0x30, 0x30, 0x2c, 0x27, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x20, - 0x32, 0x20, 0x27, 0x2b, 0x6e, 0x29, 0x3b, 0xa, 0x7d, 0xa, - 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x72, - 0x73, 0x28, 0x6d, 0x29, 0x20, 0x7b, 0xa, 0x20, 0x20, 0x6e, - 0x20, 0x3d, 0x20, 0x6d, 0x20, 0x2b, 0x20, 0x34, 0x35, 0x3b, - 0xa, 0x20, 0x20, 0x73, 0x28, 0x27, 0x72, 0x73, 0x27, 0x2c, - 0x6e, 0x2c, 0x31, 0x30, 0x30, 0x2c, 0x27, 0x52, 0x53, 0x53, - 0x49, 0x20, 0x27, 0x2b, 0x6e, 0x29, 0x3b, 0xa, 0x7d, 0xa, - 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, - 0x28, 0x63, 0x2c, 0x6c, 0x2c, 0x74, 0x2c, 0x72, 0x29, 0x20, - 0x7b, 0xa, 0x20, 0x20, 0x74, 0x6d, 0x3d, 0x63, 0x2b, 0x6c, - 0x3b, 0xa, 0x20, 0x20, 0x63, 0x70, 0x3d, 0x63, 0x2a, 0x31, - 0x2e, 0x38, 0x2f, 0x74, 0x6d, 0x3b, 0xa, 0x20, 0x20, 0x6c, - 0x70, 0x3d, 0x6c, 0x2a, 0x30, 0x2e, 0x30, 0x35, 0x34, 0x35, - 0x2f, 0x74, 0x6d, 0x3b, 0xa, 0x20, 0x20, 0x6c, 0x74, 0x3d, - 0x74, 0x2a, 0x31, 0x37, 0x2e, 0x37, 0x2f, 0x74, 0x6d, 0x3b, - 0xa, 0x20, 0x20, 0x6c, 0x72, 0x3d, 0x72, 0x2a, 0x32, 0x30, - 0x2f, 0x74, 0x6d, 0x3b, 0xa, 0x20, 0x20, 0x6e, 0x3d, 0x63, - 0x70, 0x2b, 0x6c, 0x70, 0x2b, 0x6c, 0x74, 0x2b, 0x6c, 0x72, - 0x3b, 0xa, 0x20, 0x20, 0x73, 0x28, 0x27, 0x70, 0x27, 0x2c, - 0x6e, 0x2c, 0x33, 0x30, 0x2c, 0x27, 0x50, 0x6f, 0x77, 0x65, - 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x27, 0x2b, 0x64, 0x63, 0x28, 0x6e, - 0x2c, 0x32, 0x29, 0x2b, 0x27, 0x20, 0x6d, 0x57, 0x27, 0x29, - 0x3b, 0xa, 0x20, 0x20, 0x73, 0x28, 0x27, 0x70, 0x63, 0x27, - 0x2c, 0x63, 0x70, 0x2c, 0x33, 0x30, 0x2c, 0x27, 0x43, 0x50, - 0x55, 0x20, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x27, 0x2b, - 0x64, 0x63, 0x28, 0x63, 0x70, 0x2c, 0x32, 0x29, 0x2b, 0x27, - 0x20, 0x6d, 0x57, 0x27, 0x29, 0x3b, 0xa, 0x20, 0x20, 0x73, - 0x28, 0x27, 0x70, 0x6c, 0x27, 0x2c, 0x6c, 0x70, 0x2c, 0x33, - 0x30, 0x2c, 0x27, 0x4c, 0x50, 0x4d, 0x20, 0x70, 0x6f, 0x77, - 0x65, 0x72, 0x20, 0x27, 0x2b, 0x64, 0x63, 0x28, 0x6c, 0x70, - 0x2c, 0x32, 0x29, 0x2b, 0x27, 0x20, 0x6d, 0x57, 0x27, 0x29, - 0x3b, 0xa, 0x20, 0x20, 0x73, 0x28, 0x27, 0x70, 0x72, 0x27, - 0x2c, 0x6c, 0x72, 0x2c, 0x33, 0x30, 0x2c, 0x27, 0x52, 0x61, - 0x64, 0x69, 0x6f, 0x20, 0x52, 0x58, 0x20, 0x70, 0x6f, 0x77, - 0x65, 0x72, 0x20, 0x27, 0x2b, 0x64, 0x63, 0x28, 0x6c, 0x72, - 0x2c, 0x32, 0x29, 0x2b, 0x27, 0x20, 0x6d, 0x57, 0x27, 0x29, - 0x3b, 0xa, 0x20, 0x20, 0x73, 0x28, 0x27, 0x70, 0x74, 0x27, - 0x2c, 0x6c, 0x74, 0x2c, 0x33, 0x30, 0x2c, 0x27, 0x52, 0x61, - 0x64, 0x69, 0x6f, 0x20, 0x54, 0x58, 0x20, 0x70, 0x6f, 0x77, - 0x65, 0x72, 0x20, 0x27, 0x2b, 0x64, 0x63, 0x28, 0x6c, 0x74, - 0x2c, 0x32, 0x29, 0x2b, 0x27, 0x20, 0x6d, 0x57, 0x27, 0x29, - 0x3b, 0xa, 0x7d, 0xa, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x69, 0x28, 0x6e, 0x29, 0x20, 0x7b, 0xa, - 0x20, 0x20, 0x65, 0x28, 0x27, 0x69, 0x27, 0x29, 0x2e, 0x69, - 0x6e, 0x6e, 0x65, 0x72, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x3d, - 0x20, 0x6e, 0x3b, 0xa, 0x7d, 0xa, 0x3c, 0x2f, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x3e, 0xa, 0x3c, 0x68, 0x31, 0x3e, - 0x4e, 0x6f, 0x64, 0x65, 0xa, 0x25, 0x21, 0x20, 0x6e, 0x6f, - 0x64, 0x65, 0x69, 0x64, 0xa, 0x3c, 0x2f, 0x68, 0x31, 0x3e, - 0xa, 0x3c, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x6c, 0x69, 0x63, - 0x6b, 0x3d, 0x22, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6e, - 0x73, 0x6f, 0x72, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x3b, - 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x23, 0x22, - 0x3e, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x3c, 0x2f, 0x61, - 0x3e, 0xa, 0xa, 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x20, 0x69, - 0x64, 0x3d, 0x22, 0x73, 0x70, 0x69, 0x6e, 0x22, 0x3e, 0x20, - 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0xa, 0x3c, 0x68, - 0x32, 0x3e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, - 0x65, 0x6e, 0x74, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x3c, - 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x74, 0x65, - 0x6d, 0x70, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, - 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, - 0x68, 0x75, 0x6d, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, - 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4c, 0x69, 0x67, 0x68, - 0x74, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x3c, 0x64, 0x69, - 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x6c, 0x31, 0x22, 0x3e, - 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0x3c, 0x64, 0x69, - 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x6c, 0x32, 0x22, 0x3e, - 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0x3c, 0x68, 0x32, - 0x3e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x3c, 0x2f, 0x68, 0x32, - 0x3e, 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, - 0x22, 0x70, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, - 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, - 0x70, 0x63, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, - 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, - 0x70, 0x6c, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, - 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, - 0x70, 0x72, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, - 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, - 0x70, 0x74, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, - 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, - 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x69, - 0x22, 0x3e, 0x30, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, - 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, - 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0xa, 0xa, 0}; -static const unsigned char data_footer_html[] = { - /* /footer.html */ - 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xa, 0x3c, - 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0}; +const char data_sensordata_shtml[30] = { + /* /sensordata.shtml */ + 0x2f, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x00, + 0x25, 0x21, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, + 0x0a, 0x00}; -static const unsigned char data_spin_gif[] = { - /* /spin.gif */ - 0x2f, 0x73, 0x70, 0x69, 0x6e, 0x2e, 0x67, 0x69, 0x66, 0, - 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x12, 00, 0xf, 00, - 0xf2, 00, 00, 0xff, 0xff, 0xff, 00, 00, 00, 00, - 00, 00, 0x5c, 0x5c, 0x5c, 0xb4, 0xb4, 0xb4, 00, 00, - 00, 00, 00, 00, 00, 00, 00, 0x21, 0xff, 0xb, - 0x4e, 0x45, 0x54, 0x53, 0x43, 0x41, 0x50, 0x45, 0x32, 0x2e, - 0x30, 0x3, 0x1, 00, 00, 00, 0x21, 0xfe, 0x1a, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, - 0x68, 0x20, 0x61, 0x6a, 0x61, 0x78, 0x6c, 0x6f, 0x61, 0x64, - 0x2e, 0x69, 0x6e, 0x66, 0x6f, 00, 0x21, 0xf9, 0x4, 0x9, - 0x5, 00, 00, 00, 0x2c, 00, 00, 00, 00, 0x12, - 00, 0xf, 00, 00, 0x3, 0x1c, 0x8, 0xba, 0xdc, 0xfe, - 0x30, 0xca, 0x49, 0xab, 0xbd, 0x38, 0x57, 0x21, 0x2e, 0xe7, - 0xd6, 0xd7, 0x1, 0x3, 0x5, 0x92, 0x43, 0x9, 0x10, 0x4, - 0xa5, 0x6a, 0x4e, 0x2, 00, 0x21, 0xf9, 0x4, 0x9, 0x5, - 00, 00, 00, 0x2c, 00, 00, 00, 00, 0x12, 00, - 0xf, 00, 00, 0x3, 0x1e, 0x8, 0xba, 0xdc, 0xfe, 0x30, - 0xca, 0x49, 0xab, 0x6d, 0xe2, 0x2, 0xc1, 0x75, 0xd6, 0xca, - 0x30, 0x5c, 0xa2, 0x68, 0x95, 0x23, 0x40, 0x50, 0xa6, 0x4a, - 0xac, 0x17, 0xc, 0x3e, 0x9, 00, 0x21, 0xf9, 0x4, 0x9, - 0x5, 00, 00, 00, 0x2c, 00, 00, 00, 00, 0x12, - 00, 0xf, 00, 00, 0x3, 0x1c, 0x8, 0xba, 0xdc, 0xfe, - 0x30, 0x4a, 0x20, 0xc4, 0xbc, 0x38, 0xab, 0xa1, 0xc1, 0xf8, - 0x1d, 0xd7, 0x29, 0x4, 0xa1, 0x95, 0x65, 0x86, 0x9a, 0x2a, - 0x3b, 0xbe, 0x53, 0x2, 00, 0x21, 0xf9, 0x4, 0x9, 0x5, - 00, 00, 00, 0x2c, 00, 00, 00, 00, 0x12, 00, - 0xf, 00, 00, 0x3, 0x17, 0x8, 0xba, 0xdc, 0xbe, 0xe2, - 0xc9, 0xf9, 0xc6, 0xa0, 0x38, 0x6b, 0x47, 0xb6, 0x22, 0xa0, - 0x7, 0x74, 0x62, 0x69, 0x9e, 0x68, 0x8a, 0x25, 00, 0x21, - 0xf9, 0x4, 0x9, 0x5, 00, 00, 00, 0x2c, 00, 00, - 00, 00, 0x12, 00, 0xf, 00, 00, 0x3, 0x14, 0x8, - 0xba, 0xdc, 0xbe, 0xe3, 0xc9, 0x27, 0x24, 0x21, 0x33, 0xeb, - 0xcd, 0xbb, 0xff, 0x60, 0x28, 0x8e, 0x24, 0x98, 00, 00, - 0x21, 0xf9, 0x4, 0x9, 0x5, 00, 00, 00, 0x2c, 00, - 00, 00, 00, 0x12, 00, 0xf, 00, 00, 0x3, 0x14, - 0x8, 0xba, 0xdc, 0xbe, 0xe4, 0xc9, 0x37, 0xa6, 0xbd, 0x38, - 0x2f, 0xa1, 0xbb, 0xff, 0x60, 0x28, 0x8e, 0x24, 0x90, 00, - 00, 0x21, 0xf9, 0x4, 0x9, 0x5, 00, 00, 00, 0x2c, - 00, 00, 00, 00, 0x12, 00, 0xf, 00, 00, 0x3, - 0x13, 0x8, 0xba, 0xdc, 0xfe, 0x30, 0x2a, 0x22, 0xab, 0xbd, - 0x76, 0xe0, 0xcd, 0xbb, 0x8f, 0xc2, 0x27, 0x8e, 0x57, 0x2, - 00, 0x21, 0xf9, 0x4, 0x9, 0x5, 00, 00, 00, 0x2c, - 00, 00, 00, 00, 0x12, 00, 0xf, 00, 00, 0x3, - 0x14, 0x8, 0xba, 0xdc, 0xfe, 0x30, 0xca, 0x49, 0xab, 0x5, - 0xe4, 0xea, 0xcd, 0x3b, 0x1b, 0x1e, 0x25, 0x8, 0x21, 0x97, - 00, 00, 0x21, 0xf9, 0x4, 0x9, 0x5, 00, 00, 00, - 0x2c, 00, 00, 00, 00, 0x12, 00, 0xf, 00, 00, - 0x3, 0x17, 0x8, 0xba, 0xdc, 0xfe, 0x30, 0xca, 0x49, 0xab, - 0xbd, 0x38, 0xeb, 0xed, 0x88, 0x14, 0x98, 0x20, 0x2a, 0xc3, - 0x40, 0x81, 0x5c, 0x93, 00, 00, 0x3b, 00, 00, 00, - 00, 00, 00, 00, 00, 00, 0}; +const char data_sensors_shtml[2264] = { + /* /sensors.shtml */ + 0x2f, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x00, + 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x0a, 0x3c, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, + 0x22, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x6a, 0x61, 0x76, 0x61, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x3e, 0x0a, 0x76, + 0x61, 0x72, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x3b, 0x69, + 0x3d, 0x6e, 0x65, 0x77, 0x20, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x28, 0x35, 0x30, 0x2c, 0x36, 0x30, 0x29, 0x69, 0x2e, 0x73, + 0x72, 0x63, 0x3d, 0x22, 0x73, 0x70, 0x69, 0x6e, 0x2e, 0x67, + 0x69, 0x66, 0x22, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x28, 0x29, 0x7b, 0x76, + 0x61, 0x72, 0x20, 0x69, 0x6d, 0x67, 0x3d, 0x64, 0x6f, 0x63, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x45, + 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x64, + 0x28, 0x22, 0x73, 0x70, 0x69, 0x6e, 0x22, 0x29, 0x3b, 0x69, + 0x6d, 0x67, 0x2e, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x48, 0x54, + 0x4d, 0x4c, 0x3d, 0x27, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, + 0x27, 0x3b, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, + 0x28, 0x29, 0x7d, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, + 0x28, 0x29, 0x7b, 0x76, 0x61, 0x72, 0x20, 0x72, 0x3b, 0x74, + 0x72, 0x79, 0x7b, 0x72, 0x3d, 0x6e, 0x65, 0x77, 0x20, 0x58, + 0x4d, 0x4c, 0x48, 0x74, 0x74, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x28, 0x29, 0x7d, 0x63, 0x61, 0x74, 0x63, + 0x68, 0x28, 0x65, 0x29, 0x7b, 0x74, 0x72, 0x79, 0x7b, 0x72, + 0x3d, 0x6e, 0x65, 0x77, 0x20, 0x41, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x58, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x28, 0x22, + 0x4d, 0x73, 0x78, 0x6d, 0x6c, 0x32, 0x2e, 0x58, 0x4d, 0x4c, + 0x48, 0x54, 0x54, 0x50, 0x22, 0x29, 0x7d, 0x63, 0x61, 0x74, + 0x63, 0x68, 0x28, 0x65, 0x29, 0x7b, 0x74, 0x72, 0x79, 0x7b, + 0x72, 0x3d, 0x6e, 0x65, 0x77, 0x20, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x58, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x28, + 0x22, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, + 0x2e, 0x58, 0x4d, 0x4c, 0x48, 0x54, 0x54, 0x50, 0x22, 0x29, + 0x7d, 0x63, 0x61, 0x74, 0x63, 0x68, 0x28, 0x65, 0x29, 0x7b, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x28, 0x22, 0x59, 0x6f, 0x75, + 0x72, 0x20, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x20, + 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x41, 0x4a, 0x41, + 0x58, 0x21, 0x22, 0x29, 0x3b, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x7d, 0x7d, 0x7d, + 0x72, 0x2e, 0x6f, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x79, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x3d, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, + 0x29, 0x7b, 0x69, 0x66, 0x28, 0x72, 0x2e, 0x72, 0x65, 0x61, + 0x64, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x3d, 0x3d, 0x31, + 0x29, 0x7b, 0x76, 0x61, 0x72, 0x20, 0x69, 0x6d, 0x67, 0x3d, + 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, + 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, + 0x79, 0x49, 0x64, 0x28, 0x22, 0x73, 0x70, 0x69, 0x6e, 0x22, + 0x29, 0x3b, 0x69, 0x6d, 0x67, 0x2e, 0x69, 0x6e, 0x6e, 0x65, + 0x72, 0x48, 0x54, 0x4d, 0x4c, 0x3d, 0x27, 0x3c, 0x69, 0x6d, + 0x67, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x73, 0x70, 0x69, + 0x6e, 0x2e, 0x67, 0x69, 0x66, 0x22, 0x3e, 0x27, 0x7d, 0x69, + 0x66, 0x28, 0x72, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x79, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x3d, 0x3d, 0x34, 0x29, 0x7b, 0x76, + 0x61, 0x72, 0x20, 0x69, 0x6d, 0x67, 0x3d, 0x64, 0x6f, 0x63, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x45, + 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x64, + 0x28, 0x22, 0x73, 0x70, 0x69, 0x6e, 0x22, 0x29, 0x3b, 0x69, + 0x6d, 0x67, 0x2e, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x48, 0x54, + 0x4d, 0x4c, 0x3d, 0x27, 0x74, 0x6f, 0x6f, 0x6b, 0x20, 0x27, + 0x2b, 0x28, 0x28, 0x6e, 0x65, 0x77, 0x20, 0x44, 0x61, 0x74, + 0x65, 0x28, 0x29, 0x29, 0x2e, 0x67, 0x65, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x28, 0x29, 0x2d, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x2e, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x28, 0x29, + 0x29, 0x2f, 0x31, 0x30, 0x30, 0x30, 0x2b, 0x27, 0x20, 0x73, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x27, 0x3b, 0x65, 0x76, + 0x61, 0x6c, 0x28, 0x72, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x54, 0x65, 0x78, 0x74, 0x29, 0x7d, 0x7d, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x3d, 0x6e, 0x65, 0x77, 0x20, + 0x44, 0x61, 0x74, 0x65, 0x28, 0x29, 0x3b, 0x72, 0x2e, 0x6f, + 0x70, 0x65, 0x6e, 0x28, 0x22, 0x47, 0x45, 0x54, 0x22, 0x2c, + 0x22, 0x2f, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x2c, + 0x74, 0x72, 0x75, 0x65, 0x29, 0x3b, 0x72, 0x2e, 0x73, 0x65, + 0x6e, 0x64, 0x28, 0x6e, 0x75, 0x6c, 0x6c, 0x29, 0x7d, 0x66, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x28, + 0x65, 0x6c, 0x29, 0x7b, 0x64, 0x3d, 0x64, 0x6f, 0x63, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x3b, 0x69, 0x66, 0x28, 0x64, 0x2e, + 0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x42, 0x79, 0x49, 0x64, 0x29, 0x7b, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x45, 0x6c, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x64, 0x28, + 0x65, 0x6c, 0x29, 0x7d, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, + 0x66, 0x28, 0x64, 0x2e, 0x61, 0x6c, 0x6c, 0x29, 0x7b, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x64, 0x2e, 0x61, 0x6c, + 0x6c, 0x5b, 0x65, 0x6c, 0x5d, 0x7d, 0x7d, 0x66, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x73, 0x28, 0x65, 0x6c, + 0x2c, 0x6e, 0x2c, 0x6d, 0x61, 0x78, 0x2c, 0x74, 0x65, 0x78, + 0x74, 0x29, 0x7b, 0x65, 0x28, 0x65, 0x6c, 0x29, 0x2e, 0x69, + 0x6e, 0x6e, 0x65, 0x72, 0x48, 0x54, 0x4d, 0x4c, 0x3d, 0x27, + 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, + 0x74, 0x68, 0x3d, 0x35, 0x30, 0x34, 0x20, 0x62, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x3d, 0x30, 0x20, 0x63, 0x65, 0x6c, 0x6c, + 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3d, 0x31, 0x20, + 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, + 0x67, 0x3d, 0x30, 0x3e, 0x27, 0x2b, 0x27, 0x3c, 0x74, 0x72, + 0x3e, 0x3c, 0x74, 0x64, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, + 0x3d, 0x32, 0x30, 0x30, 0x3e, 0x27, 0x2b, 0x74, 0x65, 0x78, + 0x74, 0x2b, 0x27, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x27, 0x2b, + 0x27, 0x3c, 0x74, 0x64, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, + 0x3d, 0x27, 0x2b, 0x28, 0x33, 0x30, 0x30, 0x2a, 0x6e, 0x2f, + 0x6d, 0x61, 0x78, 0x29, 0x2b, 0x27, 0x20, 0x62, 0x67, 0x63, + 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x67, 0x72, 0x61, 0x79, + 0x22, 0x3e, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f, + 0x74, 0x64, 0x3e, 0x27, 0x2b, 0x27, 0x3c, 0x74, 0x64, 0x20, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x27, 0x2b, 0x28, 0x33, + 0x30, 0x30, 0x2d, 0x33, 0x30, 0x30, 0x2a, 0x6e, 0x2f, 0x6d, + 0x61, 0x78, 0x29, 0x2b, 0x27, 0x20, 0x62, 0x67, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x6c, 0x69, 0x67, 0x68, 0x74, + 0x67, 0x72, 0x61, 0x79, 0x22, 0x3e, 0x26, 0x6e, 0x62, 0x73, + 0x70, 0x3b, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x27, 0x2b, 0x27, + 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0x27, 0x7d, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, + 0x63, 0x28, 0x6e, 0x2c, 0x64, 0x29, 0x7b, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x2e, 0x74, 0x6f, 0x46, 0x69, + 0x78, 0x65, 0x64, 0x28, 0x64, 0x29, 0x7d, 0x66, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x28, 0x6d, 0x29, + 0x7b, 0x6e, 0x3d, 0x64, 0x63, 0x28, 0x2d, 0x33, 0x39, 0x2e, + 0x36, 0x2b, 0x30, 0x2e, 0x30, 0x31, 0x2a, 0x6d, 0x2c, 0x31, + 0x29, 0x3b, 0x73, 0x28, 0x27, 0x74, 0x65, 0x6d, 0x70, 0x27, + 0x2c, 0x6e, 0x2c, 0x34, 0x30, 0x2c, 0x27, 0x54, 0x65, 0x6d, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x27, + 0x2b, 0x6e, 0x2b, 0x27, 0x20, 0x26, 0x64, 0x65, 0x67, 0x3b, + 0x43, 0x27, 0x29, 0x7d, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x68, 0x28, 0x6d, 0x29, 0x7b, 0x6e, 0x3d, + 0x64, 0x63, 0x28, 0x2d, 0x34, 0x2b, 0x30, 0x2e, 0x30, 0x34, + 0x30, 0x35, 0x2a, 0x6d, 0x2d, 0x32, 0x2e, 0x38, 0x65, 0x2d, + 0x36, 0x2a, 0x28, 0x6d, 0x2a, 0x6d, 0x29, 0x2c, 0x32, 0x29, + 0x3b, 0x73, 0x28, 0x27, 0x68, 0x75, 0x6d, 0x27, 0x2c, 0x6e, + 0x2c, 0x31, 0x30, 0x30, 0x2c, 0x27, 0x48, 0x75, 0x6d, 0x69, + 0x64, 0x69, 0x74, 0x79, 0x20, 0x27, 0x2b, 0x6e, 0x2b, 0x27, + 0x25, 0x27, 0x29, 0x7d, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x6c, 0x31, 0x28, 0x6d, 0x29, 0x7b, 0x6e, + 0x3d, 0x64, 0x63, 0x28, 0x2e, 0x37, 0x36, 0x32, 0x39, 0x33, + 0x39, 0x34, 0x33, 0x37, 0x35, 0x2a, 0x6d, 0x2c, 0x30, 0x29, + 0x3b, 0x73, 0x28, 0x27, 0x6c, 0x31, 0x27, 0x2c, 0x6e, 0x2c, + 0x32, 0x30, 0x30, 0x2c, 0x27, 0x4c, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x31, 0x20, 0x27, 0x2b, 0x6e, 0x29, 0x7d, 0x66, 0x75, + 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x32, 0x28, + 0x6d, 0x29, 0x7b, 0x6e, 0x3d, 0x64, 0x63, 0x28, 0x2e, 0x34, + 0x36, 0x39, 0x33, 0x36, 0x30, 0x33, 0x2a, 0x6d, 0x2c, 0x30, + 0x29, 0x3b, 0x73, 0x28, 0x27, 0x6c, 0x32, 0x27, 0x2c, 0x6e, + 0x2c, 0x32, 0x30, 0x30, 0x2c, 0x27, 0x4c, 0x69, 0x67, 0x68, + 0x74, 0x20, 0x32, 0x20, 0x27, 0x2b, 0x6e, 0x29, 0x7d, 0x66, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x73, + 0x28, 0x6d, 0x29, 0x7b, 0x6e, 0x3d, 0x6d, 0x2b, 0x34, 0x35, + 0x3b, 0x73, 0x28, 0x27, 0x72, 0x73, 0x27, 0x2c, 0x6e, 0x2c, + 0x31, 0x30, 0x30, 0x2c, 0x27, 0x52, 0x53, 0x53, 0x49, 0x20, + 0x27, 0x2b, 0x6e, 0x29, 0x7d, 0x66, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x28, 0x63, 0x2c, 0x6c, 0x2c, + 0x74, 0x2c, 0x72, 0x29, 0x7b, 0x74, 0x6d, 0x3d, 0x63, 0x2b, + 0x6c, 0x3b, 0x63, 0x70, 0x3d, 0x63, 0x2a, 0x31, 0x2e, 0x38, + 0x2f, 0x74, 0x6d, 0x3b, 0x6c, 0x70, 0x3d, 0x6c, 0x2a, 0x30, + 0x2e, 0x30, 0x35, 0x34, 0x35, 0x2f, 0x74, 0x6d, 0x3b, 0x6c, + 0x74, 0x3d, 0x74, 0x2a, 0x31, 0x37, 0x2e, 0x37, 0x2f, 0x74, + 0x6d, 0x3b, 0x6c, 0x72, 0x3d, 0x72, 0x2a, 0x32, 0x30, 0x2f, + 0x74, 0x6d, 0x3b, 0x6e, 0x3d, 0x63, 0x70, 0x2b, 0x6c, 0x70, + 0x2b, 0x6c, 0x74, 0x2b, 0x6c, 0x72, 0x3b, 0x73, 0x28, 0x27, + 0x70, 0x27, 0x2c, 0x6e, 0x2c, 0x33, 0x30, 0x2c, 0x27, 0x50, + 0x6f, 0x77, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x75, + 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x27, 0x2b, 0x64, + 0x63, 0x28, 0x6e, 0x2c, 0x32, 0x29, 0x2b, 0x27, 0x20, 0x6d, + 0x57, 0x27, 0x29, 0x3b, 0x73, 0x28, 0x27, 0x70, 0x63, 0x27, + 0x2c, 0x63, 0x70, 0x2c, 0x33, 0x30, 0x2c, 0x27, 0x43, 0x50, + 0x55, 0x20, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x27, 0x2b, + 0x64, 0x63, 0x28, 0x63, 0x70, 0x2c, 0x32, 0x29, 0x2b, 0x27, + 0x20, 0x6d, 0x57, 0x27, 0x29, 0x3b, 0x73, 0x28, 0x27, 0x70, + 0x6c, 0x27, 0x2c, 0x6c, 0x70, 0x2c, 0x33, 0x30, 0x2c, 0x27, + 0x4c, 0x50, 0x4d, 0x20, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x20, + 0x27, 0x2b, 0x64, 0x63, 0x28, 0x6c, 0x70, 0x2c, 0x32, 0x29, + 0x2b, 0x27, 0x20, 0x6d, 0x57, 0x27, 0x29, 0x3b, 0x73, 0x28, + 0x27, 0x70, 0x72, 0x27, 0x2c, 0x6c, 0x72, 0x2c, 0x33, 0x30, + 0x2c, 0x27, 0x52, 0x61, 0x64, 0x69, 0x6f, 0x20, 0x52, 0x58, + 0x20, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x27, 0x2b, 0x64, + 0x63, 0x28, 0x6c, 0x72, 0x2c, 0x32, 0x29, 0x2b, 0x27, 0x20, + 0x6d, 0x57, 0x27, 0x29, 0x3b, 0x73, 0x28, 0x27, 0x70, 0x74, + 0x27, 0x2c, 0x6c, 0x74, 0x2c, 0x33, 0x30, 0x2c, 0x27, 0x52, + 0x61, 0x64, 0x69, 0x6f, 0x20, 0x54, 0x58, 0x20, 0x70, 0x6f, + 0x77, 0x65, 0x72, 0x20, 0x27, 0x2b, 0x64, 0x63, 0x28, 0x6c, + 0x74, 0x2c, 0x32, 0x29, 0x2b, 0x27, 0x20, 0x6d, 0x57, 0x27, + 0x29, 0x7d, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x69, 0x28, 0x6e, 0x29, 0x7b, 0x65, 0x28, 0x27, 0x69, + 0x27, 0x29, 0x2e, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x48, 0x54, + 0x4d, 0x4c, 0x3d, 0x6e, 0x7d, 0x0a, 0x3c, 0x2f, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x3c, 0x68, 0x31, 0x3e, + 0x4e, 0x6f, 0x64, 0x65, 0x0a, 0x25, 0x21, 0x20, 0x6e, 0x6f, + 0x64, 0x65, 0x69, 0x64, 0x0a, 0x3c, 0x2f, 0x68, 0x31, 0x3e, + 0x0a, 0x3c, 0x61, 0x20, 0x6f, 0x6e, 0x63, 0x6c, 0x69, 0x63, + 0x6b, 0x3d, 0x22, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6e, + 0x73, 0x6f, 0x72, 0x64, 0x61, 0x74, 0x61, 0x28, 0x29, 0x3b, + 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x23, 0x22, + 0x3e, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x3c, 0x2f, 0x61, + 0x3e, 0x0a, 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x20, 0x69, 0x64, + 0x3d, 0x22, 0x73, 0x70, 0x69, 0x6e, 0x22, 0x3e, 0x20, 0x3c, + 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x0a, 0x3c, 0x68, 0x32, + 0x3e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0x0a, 0x3c, 0x64, + 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x74, 0x65, 0x6d, + 0x70, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, + 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x68, + 0x75, 0x6d, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, + 0x0a, 0x3c, 0x68, 0x32, 0x3e, 0x4c, 0x69, 0x67, 0x68, 0x74, + 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0x0a, 0x3c, 0x64, 0x69, 0x76, + 0x20, 0x69, 0x64, 0x3d, 0x22, 0x6c, 0x31, 0x22, 0x3e, 0x3c, + 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x64, 0x69, 0x76, + 0x20, 0x69, 0x64, 0x3d, 0x22, 0x6c, 0x32, 0x22, 0x3e, 0x3c, + 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x68, 0x32, 0x3e, + 0x50, 0x6f, 0x77, 0x65, 0x72, 0x3c, 0x2f, 0x68, 0x32, 0x3e, + 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, + 0x70, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, + 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x70, + 0x63, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, + 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x70, + 0x6c, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, + 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x70, + 0x72, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, + 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x70, + 0x74, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, + 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x0a, 0x3c, + 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x69, 0x22, + 0x3e, 0x30, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x25, + 0x21, 0x3a, 0x20, 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, + 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x0a, 0x0a, 0x0a, 0x00}; -static const unsigned char data_neighbors_shtml[] = { - /* /neighbors.shtml */ - 0x2f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0, - 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31, - 0x3e, 0x4e, 0x6f, 0x64, 0x65, 0xa, 0x25, 0x21, 0x20, 0x6e, - 0x6f, 0x64, 0x65, 0x69, 0x64, 0xa, 0x3c, 0x2f, 0x68, 0x31, - 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x69, 0x67, - 0x68, 0x62, 0x6f, 0x72, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, - 0xa, 0x3c, 0x75, 0x6c, 0x3e, 0xa, 0x25, 0x21, 0x20, 0x6e, - 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0xa, 0x3c, - 0x2f, 0x75, 0x6c, 0x3e, 0xa, 0x25, 0x21, 0x3a, 0x20, 0x2f, - 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, - 0x6c, 0xa, 0xa, 0}; +const char data_footer_html[39] = { + /* /footer.html */ + 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x00, + 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0x0a, 0x3c, + 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0a, 0x3c, 0x2f, 0x68, + 0x74, 0x6d, 0x6c, 0x3e, 0x0a, 0x00}; -static const unsigned char data_404_html[] = { - /* /404.html */ - 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 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, -0}; +const char data_spin_gif[507] = { + /* /spin.gif */ + 0x2f, 0x73, 0x70, 0x69, 0x6e, 0x2e, 0x67, 0x69, 0x66, 0x00, + 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x12, 0x00, 0x0f, 0x00, + 0xf2, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5c, 0x5c, 0x5c, 0xb4, 0xb4, 0xb4, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xff, 0x0b, + 0x4e, 0x45, 0x54, 0x53, 0x43, 0x41, 0x50, 0x45, 0x32, 0x2e, + 0x30, 0x03, 0x01, 0x00, 0x00, 0x00, 0x21, 0xfe, 0x1a, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, + 0x68, 0x20, 0x61, 0x6a, 0x61, 0x78, 0x6c, 0x6f, 0x61, 0x64, + 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x00, 0x21, 0xf9, 0x04, 0x09, + 0x05, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x12, + 0x00, 0x0f, 0x00, 0x00, 0x03, 0x1c, 0x08, 0xba, 0xdc, 0xfe, + 0x30, 0xca, 0x49, 0xab, 0xbd, 0x38, 0x57, 0x21, 0x2e, 0xe7, + 0xd6, 0xd7, 0x01, 0x03, 0x05, 0x92, 0x43, 0x09, 0x10, 0x04, + 0xa5, 0x6a, 0x4e, 0x02, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x05, + 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, + 0x0f, 0x00, 0x00, 0x03, 0x1e, 0x08, 0xba, 0xdc, 0xfe, 0x30, + 0xca, 0x49, 0xab, 0x6d, 0xe2, 0x02, 0xc1, 0x75, 0xd6, 0xca, + 0x30, 0x5c, 0xa2, 0x68, 0x95, 0x23, 0x40, 0x50, 0xa6, 0x4a, + 0xac, 0x17, 0x0c, 0x3e, 0x09, 0x00, 0x21, 0xf9, 0x04, 0x09, + 0x05, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x12, + 0x00, 0x0f, 0x00, 0x00, 0x03, 0x1c, 0x08, 0xba, 0xdc, 0xfe, + 0x30, 0x4a, 0x20, 0xc4, 0xbc, 0x38, 0xab, 0xa1, 0xc1, 0xf8, + 0x1d, 0xd7, 0x29, 0x04, 0xa1, 0x95, 0x65, 0x86, 0x9a, 0x2a, + 0x3b, 0xbe, 0x53, 0x02, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x05, + 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, + 0x0f, 0x00, 0x00, 0x03, 0x17, 0x08, 0xba, 0xdc, 0xbe, 0xe2, + 0xc9, 0xf9, 0xc6, 0xa0, 0x38, 0x6b, 0x47, 0xb6, 0x22, 0xa0, + 0x07, 0x74, 0x62, 0x69, 0x9e, 0x68, 0x8a, 0x25, 0x00, 0x21, + 0xf9, 0x04, 0x09, 0x05, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, + 0x00, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x00, 0x03, 0x14, 0x08, + 0xba, 0xdc, 0xbe, 0xe3, 0xc9, 0x27, 0x24, 0x21, 0x33, 0xeb, + 0xcd, 0xbb, 0xff, 0x60, 0x28, 0x8e, 0x24, 0x98, 0x00, 0x00, + 0x21, 0xf9, 0x04, 0x09, 0x05, 0x00, 0x00, 0x00, 0x2c, 0x00, + 0x00, 0x00, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x00, 0x03, 0x14, + 0x08, 0xba, 0xdc, 0xbe, 0xe4, 0xc9, 0x37, 0xa6, 0xbd, 0x38, + 0x2f, 0xa1, 0xbb, 0xff, 0x60, 0x28, 0x8e, 0x24, 0x90, 0x00, + 0x00, 0x21, 0xf9, 0x04, 0x09, 0x05, 0x00, 0x00, 0x00, 0x2c, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x00, 0x03, + 0x13, 0x08, 0xba, 0xdc, 0xfe, 0x30, 0x2a, 0x22, 0xab, 0xbd, + 0x76, 0xe0, 0xcd, 0xbb, 0x8f, 0xc2, 0x27, 0x8e, 0x57, 0x02, + 0x00, 0x21, 0xf9, 0x04, 0x09, 0x05, 0x00, 0x00, 0x00, 0x2c, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x00, 0x03, + 0x14, 0x08, 0xba, 0xdc, 0xfe, 0x30, 0xca, 0x49, 0xab, 0x05, + 0xe4, 0xea, 0xcd, 0x3b, 0x1b, 0x1e, 0x25, 0x08, 0x21, 0x97, + 0x00, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x05, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x00, + 0x03, 0x17, 0x08, 0xba, 0xdc, 0xfe, 0x30, 0xca, 0x49, 0xab, + 0xbd, 0x38, 0xeb, 0xed, 0x88, 0x14, 0x98, 0x20, 0x2a, 0xc3, + 0x40, 0x81, 0x5c, 0x93, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; -static const unsigned char data_header_html[] = { - /* /header.html */ - 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 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, 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, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, 0x20, - 0x6f, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x6c, 0x6f, - 0x61, 0x64, 0x28, 0x29, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x3d, 0x30, 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x70, 0x61, 0x64, - 0x64, 0x69, 0x6e, 0x67, 0x3d, 0x34, 0x20, 0x63, 0x65, 0x6c, - 0x6c, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x3d, 0x34, - 0x3e, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x20, 0x76, - 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x74, 0x6f, 0x70, - 0x22, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x72, - 0x69, 0x67, 0x68, 0x74, 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x31, - 0x3e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x26, 0x6e, - 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f, 0x68, 0x31, 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, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, - 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x2e, - 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4e, 0x65, 0x69, - 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, - 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x53, - 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x3c, 0x2f, 0x61, 0x3e, - 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, - 0x3c, 0x74, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x67, 0x6e, - 0x3d, 0x22, 0x74, 0x6f, 0x70, 0x22, 0x20, 0x61, 0x6c, 0x69, - 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x22, 0x3e, - 0xa, 0}; +const char data_neighbors_shtml[121] = { + /* /neighbors.shtml */ + 0x2f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x00, + 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x0a, 0x3c, 0x68, 0x31, + 0x3e, 0x4e, 0x6f, 0x64, 0x65, 0x0a, 0x25, 0x21, 0x20, 0x6e, + 0x6f, 0x64, 0x65, 0x69, 0x64, 0x0a, 0x3c, 0x2f, 0x68, 0x31, + 0x3e, 0x0a, 0x3c, 0x68, 0x32, 0x3e, 0x4e, 0x65, 0x69, 0x67, + 0x68, 0x62, 0x6f, 0x72, 0x73, 0x3c, 0x2f, 0x68, 0x32, 0x3e, + 0x0a, 0x3c, 0x75, 0x6c, 0x3e, 0x0a, 0x25, 0x21, 0x20, 0x6e, + 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x0a, 0x3c, + 0x2f, 0x75, 0x6c, 0x3e, 0x0a, 0x25, 0x21, 0x3a, 0x20, 0x2f, + 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, + 0x6c, 0x0a, 0x0a, 0x00}; -static const unsigned char data_index_html[] = { - /* /index.html */ - 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0, - 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, 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, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, 0x3e, - 0xa, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x3d, 0x30, 0x20, 0x63, 0x65, 0x6c, - 0x6c, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3d, 0x34, - 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x70, 0x61, 0x63, 0x69, - 0x6e, 0x67, 0x3d, 0x34, 0x3e, 0x3c, 0x74, 0x72, 0x3e, 0x3c, - 0x74, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, - 0x22, 0x74, 0x6f, 0x70, 0x22, 0x20, 0x61, 0x6c, 0x69, 0x67, - 0x6e, 0x3d, 0x22, 0x72, 0x69, 0x67, 0x68, 0x74, 0x22, 0x3e, - 0xa, 0x3c, 0x68, 0x31, 0x3e, 0x43, 0x6f, 0x6e, 0x74, 0x69, - 0x6b, 0x69, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f, - 0x68, 0x31, 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, 0x61, 0x20, 0x68, 0x72, - 0x65, 0x66, 0x3d, 0x22, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, - 0x6f, 0x72, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, - 0x3e, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, - 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x65, - 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, - 0x6c, 0x22, 0x3e, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, - 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, - 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x20, 0x76, 0x61, - 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x74, 0x6f, 0x70, 0x22, - 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, - 0x66, 0x74, 0x22, 0x3e, 0xa, 0x3c, 0x2f, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x3e, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, - 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, -0}; +const char data_404_html[171] = { + /* /404.html */ + 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x00, + 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0a, 0x20, 0x20, 0x3c, + 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, + 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x3e, 0x0a, 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, + 0x0a, 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, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, + 0x79, 0x3e, 0x0a, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, + 0x00}; -const struct httpd_fsdata_file file_sensordata_shtml[] = {{NULL, data_sensordata_shtml, data_sensordata_shtml + 18, sizeof(data_sensordata_shtml) - 18}}; +const char data_header_html[455] = { + /* /header.html */ + 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x00, + 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, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0a, + 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0x0a, 0x3c, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x3e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, + 0x69, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x0a, + 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0x0a, 0x3c, 0x62, + 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, 0x20, + 0x6f, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x6c, 0x6f, + 0x61, 0x64, 0x28, 0x29, 0x22, 0x3e, 0x0a, 0x3c, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x3d, 0x30, 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x70, 0x61, 0x64, + 0x64, 0x69, 0x6e, 0x67, 0x3d, 0x34, 0x20, 0x63, 0x65, 0x6c, + 0x6c, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x3d, 0x34, + 0x3e, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x20, 0x76, + 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x74, 0x6f, 0x70, + 0x22, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x22, 0x3e, 0x0a, 0x3c, 0x68, 0x31, + 0x3e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x26, 0x6e, + 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0x0a, + 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, + 0x0a, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, + 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x2e, + 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4e, 0x65, 0x69, + 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x3c, 0x2f, 0x61, 0x3e, + 0x3c, 0x62, 0x72, 0x3e, 0x0a, 0x3c, 0x61, 0x20, 0x68, 0x72, + 0x65, 0x66, 0x3d, 0x22, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, + 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x53, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x3c, 0x2f, 0x61, 0x3e, + 0x3c, 0x62, 0x72, 0x3e, 0x0a, 0x3c, 0x2f, 0x74, 0x64, 0x3e, + 0x3c, 0x74, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x67, 0x6e, + 0x3d, 0x22, 0x74, 0x6f, 0x70, 0x22, 0x20, 0x61, 0x6c, 0x69, + 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x22, 0x3e, + 0x0a, 0x00}; -const struct httpd_fsdata_file file_sensors_shtml[] = {{file_sensordata_shtml, data_sensors_shtml, data_sensors_shtml + 15, sizeof(data_sensors_shtml) - 15}}; +const char data_index_html[463] = { + /* /index.html */ + 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x00, + 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, 0x0a, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0a, + 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0x0a, 0x3c, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x3e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, + 0x69, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x0a, + 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0x0a, 0x3c, 0x62, + 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, 0x3e, + 0x0a, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x3d, 0x30, 0x20, 0x63, 0x65, 0x6c, + 0x6c, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3d, 0x34, + 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x70, 0x61, 0x63, 0x69, + 0x6e, 0x67, 0x3d, 0x34, 0x3e, 0x3c, 0x74, 0x72, 0x3e, 0x3c, + 0x74, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, + 0x22, 0x74, 0x6f, 0x70, 0x22, 0x20, 0x61, 0x6c, 0x69, 0x67, + 0x6e, 0x3d, 0x22, 0x72, 0x69, 0x67, 0x68, 0x74, 0x22, 0x3e, + 0x0a, 0x3c, 0x68, 0x31, 0x3e, 0x43, 0x6f, 0x6e, 0x74, 0x69, + 0x6b, 0x69, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f, + 0x68, 0x31, 0x3e, 0x0a, 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, 0x0a, 0x3c, 0x61, 0x20, 0x68, 0x72, + 0x65, 0x66, 0x3d, 0x22, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, + 0x6f, 0x72, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, + 0x3e, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, + 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x0a, 0x3c, + 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x65, + 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, + 0x6c, 0x22, 0x3e, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, + 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x0a, 0x3c, + 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x20, 0x76, 0x61, + 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x74, 0x6f, 0x70, 0x22, + 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x6c, 0x65, + 0x66, 0x74, 0x22, 0x3e, 0x0a, 0x3c, 0x2f, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x3e, 0x0a, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, + 0x3e, 0x0a, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0a, + 0x00}; -const struct httpd_fsdata_file file_footer_html[] = {{file_sensors_shtml, data_footer_html, data_footer_html + 13, sizeof(data_footer_html) - 13}}; -const struct httpd_fsdata_file file_spin_gif[] = {{file_footer_html, data_spin_gif, data_spin_gif + 10, sizeof(data_spin_gif) - 10}}; +/* Structure of linked list (all offsets relative to start of section): +struct httpd_fsdata_file { + const struct httpd_fsdata_file *next; //actual flash address of next link + const char *name; //offset to coffee file name + const char *data; //offset to coffee file data + const int len; //length of file data +#if HTTPD_FS_STATISTICS == 1 //not enabled since list is in PROGMEM + u16_t count; //storage for file statistics +#endif +} +*/ +const struct httpd_fsdata_file file_sensordata_shtml[] ={{ NULL, data_sensordata_shtml, data_sensordata_shtml +18, sizeof(data_sensordata_shtml) -18}}; +const struct httpd_fsdata_file file_sensors_shtml[] ={{file_sensordata_shtml, data_sensors_shtml , data_sensors_shtml +15, sizeof(data_sensors_shtml) -15}}; +const struct httpd_fsdata_file file_footer_html[] ={{ file_sensors_shtml, data_footer_html , data_footer_html +13, sizeof(data_footer_html) -13}}; +const struct httpd_fsdata_file file_spin_gif[] ={{ file_footer_html, data_spin_gif , data_spin_gif +10, sizeof(data_spin_gif) -10}}; +const struct httpd_fsdata_file file_neighbors_shtml[] ={{ file_spin_gif, data_neighbors_shtml, data_neighbors_shtml +17, sizeof(data_neighbors_shtml) -17}}; +const struct httpd_fsdata_file file_404_html[] ={{file_neighbors_shtml, data_404_html , data_404_html +10, sizeof(data_404_html) -10}}; +const struct httpd_fsdata_file file_header_html[] ={{ file_404_html, data_header_html , data_header_html +13, sizeof(data_header_html) -13}}; +const struct httpd_fsdata_file file_index_html[] ={{ file_header_html, data_index_html , data_index_html +12, sizeof(data_index_html) -12}}; -const struct httpd_fsdata_file file_neighbors_shtml[] = {{file_spin_gif, data_neighbors_shtml, data_neighbors_shtml + 17, sizeof(data_neighbors_shtml) - 17}}; - -const struct httpd_fsdata_file file_404_html[] = {{file_neighbors_shtml, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}}; - -const struct httpd_fsdata_file file_header_html[] = {{file_404_html, data_header_html, data_header_html + 13, sizeof(data_header_html) - 13}}; - -const struct httpd_fsdata_file file_index_html[] = {{file_header_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}}; - -#define HTTPD_FS_ROOT file_index_html - -#define HTTPD_FS_NUMFILES 8 +#define HTTPD_FS_ROOT file_index_html +#define HTTPD_FS_NUMFILES 8 +#define HTTPD_FS_SIZE 4050 diff --git a/examples/sky-ip/sensors-script.js b/examples/sky-ip/sensors-script.js new file mode 100644 index 000000000..d7f423a3f --- /dev/null +++ b/examples/sky-ip/sensors-script.js @@ -0,0 +1,98 @@ +/* This is the uncompressed version of the script in httpd-fs/sensordata.shtml */ +var start; + +i = new Image(50,60) +i.src = "spin.gif" + +function load() { + var img = document.getElementById("spin"); + img.innerHTML = ' '; + loadData(); +} + +function loadData() { + var r; + try { r = new XMLHttpRequest(); } + catch(e) { + try { r = new ActiveXObject("Msxml2.XMLHTTP"); } + catch(e) { + try { r = new ActiveXObject("Microsoft.XMLHTTP"); } + catch(e) { + alert("Your browser does not support AJAX!"); + return false; + } + } + } + r.onreadystatechange = function() { + if(r.readyState == 1) { + var img = document.getElementById("spin"); + img.innerHTML = ''; + } + if(r.readyState == 4) { + var img = document.getElementById("spin"); + img.innerHTML = 'took ' + + ((new Date()).getTime() - start.getTime()) / 1000 + + ' seconds'; + eval(r.responseText); + } + } + start = new Date(); + r.open("GET", "/sensordata.shtml", true); + r.send(null); +} + +function e(el) { + d = document; + if(d.getElementById) { + return d.getElementById(el); + } else if (d.all) { + return d.all[el]; + } +} +function s(el,n,max,text) { + e(el).innerHTML = ''+ + '' + + '' + + '' + + '
' + + text + '  
'; +} +function dc(n,d) { + return n.toFixed(d); +} +function t(m) { + n = dc(-39.6+0.01*m, 1); + s('temp',n,40,'Temperature '+n+' °C'); +} +function h(m) { + n = dc(-4+0.0405*m - 2.8e-6*(m*m), 2); + s('hum',n,100,'Humidity '+n+'%'); +} +function l1(m) { + n = dc(.7629394375*m, 0); + s('l1',n,200,'Light 1 '+n); +} +function l2(m) { + n = dc(.4693603*m, 0); + s('l2',n,200,'Light 2 '+n); +} +function rs(m) { + n = m + 45; + s('rs',n,100,'RSSI '+n); +} +function p(c,l,t,r) { + tm=c+l; + cp=c*1.8/tm; + lp=l*0.0545/tm; + lt=t*17.7/tm; + lr=r*20/tm; + n=cp+lp+lt+lr; + s('p',n,30,'Power consumption '+dc(n,2)+' mW'); + s('pc',cp,30,'CPU power '+dc(cp,2)+' mW'); + s('pl',lp,30,'LPM power '+dc(lp,2)+' mW'); + s('pr',lr,30,'Radio RX power '+dc(lr,2)+' mW'); + s('pt',lt,30,'Radio TX power '+dc(lt,2)+' mW'); +} +function i(n) { + e('i').innerHTML = n; +}