7/&w      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv non-portable (not tested) experimentalwxyz{|}wxyz{|}wxyz{|}non-portable (not tested) experimental:;<=>?@ABCDEFG0Inserts a header with the given name and value.  Allows duplicate header names. 6Adds the new header only if no previous header shares  the same name. )Removes old headers with duplicate name. Inserts multiple headers. H)Gets a list of headers with a particular :. IJ6Lookup presence of specific Name in a list of Headers 3 Returns the value from the first matching header. KLMNO~.Joins consecutive lines where the second line  begins with ' ' or '\t'. P  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP987;<:6  !"#$%&'()*+,-./012345C=>@ABDGEHFJKLMNO?I:;<=>?@ABCDEFGHIJKLMNO non-portable (not tested) experimentalPQRSTUVWPQRSTUVWSTUVWPQRPQRQRSTUVWTUVWnon-portable (not tested) experimentalhttp@henning-thielemann.de XYZ[\]^_` XYZ[\]^_` ^]XYZ[\_` XYZ[\YZ[\]^_`abcdefabcdefcbadefabcdefghghghghnon-portable (not tested) experimental%in contrast to built-in (,,)%, its mappend implementation is lazy ij8Receive and parse a HTTP request from the given Stream. -Should be used for server side interactions. "Reads and parses request headers. >Process request body (called after successful getRequestHead) kBVery simple function, send a HTTP response over the given stream. ;This could be improved on to use different transfer types. 4Used when we know exactly how many bytes to expect. 'Used when nothing about data is known, . Unfortunately waiting for a socket closure ' causes bad behaviour. Here we just ( take data once and give up the rest. A necessary feature of HTTP/1.1 =Also the only transfer variety likely to return any footers. 0Also the only transfer method for infinite data )and the prefered one for generated data. 2Maybe in the future we will have a sensible thing 4 to do here, at that time we might want to change  the name. DRemove leading crlfs then call readTillEmpty2 (not required by RFC) 'Read lines until an empty line (CRLF), - also accepts a connection close as end of  input, which is not an HTTP/1.1 compliant * thing to do - so probably indicates an  error condition. -Read the next line and feed it to an action. )If the read line ends with an exception, 'the subsequent action is not executed. #Thus readLine is handled strictly. ijkijkijklmnopqrlmnopqrolmnpqrlmnmnopqrstuchunk size, only relevant for [. v'dictionary for read and write methods  chunk size stuvstuvsttuv                      ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcGdefghijkhiGefglmnopqrsGtlmqulm v w x y z { |} ~ http-monad-0.1Network.Monad.HTTP.HeaderNetwork.Monad.BodyNetwork.Monad.TransferNetwork.Monad.ReaderNetwork.Monad.Transfer.IONetwork.Monad.HTTPNetwork.Monad.Transfer.Offline#Network.Monad.Transfer.ChunkyLazyIONetwork.Monad.ExceptionNetwork.Monad.Utility HTTP-4000.1.0Network.HTTP.HeadersHeaderHdrCacheControl HdrConnectionHdrDate HdrPragmaHdrTransferEncoding HdrUpgradeHdrVia HdrAcceptHdrAcceptCharsetHdrAcceptEncodingHdrAcceptLanguageHdrAuthorization HdrCookie HdrExpectHdrFromHdrHostHdrIfModifiedSince HdrIfMatchHdrIfNoneMatch HdrIfRangeHdrIfUnmodifiedSinceHdrMaxForwardsHdrProxyAuthorizationHdrRange HdrReferer HdrUserAgentHdrAge HdrLocationHdrProxyAuthenticate HdrPublic HdrRetryAfter HdrServer HdrSetCookieHdrTE HdrTrailerHdrVary HdrWarningHdrWWWAuthenticateHdrAllowHdrContentBaseHdrContentEncodingHdrContentLanguageHdrContentLengthHdrContentLocation HdrContentMD5HdrContentRangeHdrContentTypeHdrETag HdrExpiresHdrLastModifiedHdrContentTransferEncoding HdrCustom HeaderName setHeaders getHeaders HasHeadersNameTconsgetNamegetValue dictionarysetManygetMany modifyManyconsNameinsertinsertIfMissingreplace insertMany retrieveMany matchNamefindfindManylookupparse parseManyWarnparseManyStraightCharTypefromChartoCharC fromStringtoString isLineTermisEmptyConsreadLine readBlock writeBlockAsyncExceptionalSyncExceptional liftIOSync liftIOAsynctransferrunsendreceiverespondBodysplitAt breakAfter withBufferlengthAsyncExceptionalTmapbindappendcontinueswitchswitchM joinExtendedcrlfspChunkedResponse Behaviour DieHorribly ExpectEntityDoneRetryContinueAsynchronousExceptionalSynchronousExceptionalrequestMethodDictparseRequestHeadparseResponseHead matchResponsesendMaingetResponseHeadwithResponseHeadswitchResponse fixHostHeader findConnCloseuriToAuthorityStringgetRequestHeadprocessRequestassembleHeaderBodylinearTransferStrLenlinearTransferhopefulTransferforceCRchunkedTransferchunkedTransferLoopuglyDeathTransferreadTillEmpty1readTillEmpty2readLineSwitchreadBlockChunky