| 
	
	package
	 positron.harness;
 import
	 java.io.BufferedReader;
 import
	 java.io.ByteArrayInputStream;
 import
	 java.io.File;
 import
	 java.io.FileInputStream;
 import
	 java.io.IOException;
 import
	 java.io.InputStream;
 import
	 java.io.InputStreamReader;
 import
	 java.io.OutputStream;
 import
	 java.io.PrintWriter;
 import
	 java.io.UnsupportedEncodingException;
 import
	 java.net.ServerSocket;
 import
	 java.net.Socket;
 import
	 java.net.URLEncoder;
 import
	 java.util.Date;
 import
	 java.util.Enumeration;
 import
	 java.util.HashMap;
 import
	 java.util.Locale;
 import
	 java.util.Map;
 import
	 java.util.Properties;
 import
	 java.util.StringTokenizer;
 import
	 java.util.TimeZone;
 
 /**
 * A simple, tiny, nicely embeddable HTTP 1.0 server in Java
 *
 * This class has been trivially modified from its original form, taken from
 * 
	http://elonen.iki.fi/code/nanohttpd/NanoHTTPD.java
 *
 * <p> NanoHTTPD version 1.1,
 * Copyright © 2001,2005-2007 Jarno Elonen (elonen@iki.fi, 
	http://iki.fi/elonen/
	)
 *
 * <p><b>Features + limitations: </b><ul>
 *
 *    <li> Only one Java file </li>
 *    <li> Java 1.1 compatible </li>
 *    <li> Released as open source, Modified BSD licence </li>
 *    <li> No fixed config files, logging, authorization etc. (Implement yourself if you need them.) </li>
 *    <li> Supports parameter parsing of GET and POST methods </li>
 *    <li> Supports both dynamic content and file serving </li>
 *    <li> Never caches anything </li>
 *    <li> Doesn't limit bandwidth, request time or simultaneous connections </li>
 *    <li> Default code serves files and shows all HTTP parameters and headers</li>
 *    <li> File server supports directory listing, index.html and index.htm </li>
 *    <li> File server does the 301 redirection trick for directories without '/'</li>
 *    <li> File server supports simple skipping for files (continue download) </li>
 *    <li> File server uses current directory as a web root </li>
 *    <li> File server serves also very long files without memory overhead </li>
 *    <li> Contains a built-in list of most common mime types </li>
 *    <li> All header names are converted lowercase so they don't vary between browsers/clients </li>
 *
 * </ul>
 *
 * <p><b>Ways to use: </b><ul>
 *
 *    <li> Run as a standalone app, serves files from current directory and shows requests</li>
 *    <li> Subclass serve() and embed to your own program </li>
 *    <li> Call serveFile() from serve() with your own base directory </li>
 *
 * </ul>
 *
 * See the end of the source file for distribution license
 * (Modified BSD licence)
 */
 public
	 
	class
	 NanoHTTPD
 {
 //
	 ==================================================
 //
	 API parts
 //
	 ==================================================
 
 /**
 * Override this to customize the server.<p>
 *
 * (By default, this delegates to serveFile() and allows directory listing.)
 *
 * @parm uri    Percent-decoded URI without parameters, for example "/index.cgi"
 * @parm method    "GET", "POST" etc.
 
 |