B="o      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  Debug hooks provisionalSigbjorn Finne <sof@galois.com> portable provisionalSigbjorn Finne <sof@galois.com>V  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVTTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU portable provisionalSigbjorn Finne <sof@galois.com> Execute a primitve curl operation. % NOTE: See warnings about the use of withForeginPtr. ,Allocates a Haskell handle from a C handle. ,Allocates a Haskell handle from a C handle. An empty option map. !Set the IO action for an option, 3 executing the previvous action, if there was one. #Execute all IO actions in the map. 0Replace the actions in a map, with actions that 9 will only be executed the second time they are invoked. $Make a finalizer from an IO action.  portable provisionalSigbjorn Finne <sof@galois.com>%% portable provisionalSigbjorn Finne <sof@galois.com>portable provisionalSigbjorn Finne <sof@galois.com>0Disable content decoding, getting the raw bits.  sync'ed wrt 7.19.2 EDisable transfer decoding; if disabled, curl will turn off chunking. KMax number of milliseconds that a connection attempt may take to complete. 5Max number of milliseconds that a transfer may take. >Send CCC command after FTP connection has been authenticated. Path to file holding user's SSH private key. Path to file holding user's SSH public key. #SSH authentication methods to use. HEnable the SSL session id cache; default is on, so use this to disable. state argument to the above.  callback that'3s injected between socket creation and connection. :Alternative (to user:pass) for FTP authentication; weird. &Specifies throttle for incoming data. ,Specifies throttle value for outgoing data. 2callback for translating UTF8 into host encoding. =callback for doing character translations to network format. ?callback for doing character translations from network format. 8If enabled, perform all steps up until actual transfer.  next three for completeness. MNumber of attempts at finding local ports (using LocalPort as initial base.) 3What local port to use for established connection. HHow to navigate to a file on the remote server (single, multiple CWDs). $Ignore IP address in 227 responses. oIf Content-Length: values are troublesome (wrong, perhaps?), use this option to ignore using them as guidance. %Cookie string to pass cookie engine; ALL scrubs all cookie info; SESS scrubs session ones. 5The string to use when server asks for account info.  state argument to the above.  ;somewhat obscure callback for handling read stream resets.  Twiddle if TLS or SSL is used.  Turn on or off the TCP/IP NODELAY option.  BSize of data to POST; if unspecified (or -1), curl uses strlen(). ;Try enabling the use of SSL for FTP control connections and/or transfers.  Path to user' s .netrc 4Wider alternative for specifying max download size. :Wider alternative for specifying initial transfer offset. TWider alternative of option giving upper bound of uploaded content (-1 => unknown.) Limit the number of bytes you're willing to download. %Whether to resolve wrt IPv4 or IPv6. Amax number of seconds to wait for remote server to ACK commands. 9What preferred authentication schemes to use wrt. proxy. 8Have remote directories be created if not already there 0state argument to pass into the above callback. Mcallback to handle setting up SSL connections; have the power to abort them. 'State your authentication preferences. <For active FTP downloads, try using EPRT command over LPRT. ,Pass on user:pass when following redirects. PAlternatives to standard 200 OK response strings; whatever it takes, I suppose. $Data associated with a Curl handle. .What to report in the Accept-Encoding: header  What type of proxy to use. !GShare handles are used for sharing data among concurrent Curl objects. "$Turn off use of signals internally. #Turn (down, presumably) the buffers the received data is chunked up into (and reported to the WriteFunction.) A hint, library is free to ignore. $IDirectory holding CA certificates; used when verifying peer certificate. %ISignal the start of a cookie session, ignoring previous session cookies. &*state argument to pass to debug callback. '2callback to catch and report transfer operations. (GFTP commands to issue after connection and transfer mode has been set. )=Number of seconds to cache results of DNS lookups in memory. *6Have library uses its MT-unfriendly DNS global cache. +6Make crypto engine the default for crypto operations. ,Name of crypto engine to use. -Format of private key; use ENG to load from a crypto engine. .Filename of private key. /!The format of your certificates (PEM, DER) 0?Attempt the use of EPSV before PASV for passive FTP downloads. 1HWhat HTTP version to use, should you want to drop back for some reason. 2XColon-separated string list of cipher preferences to use for upcoming connection (e.g.,  3DES:+RSA) 3APath to file where additional cookie information will be stored. 4WPerform Common name checking in peer certificate (1=> existence;2=> matches hostname.) 5&Revert to a GET for the next request. 60callback used to handle _incoming_ header data. 7Dmax number of seconds to wait for the initial connection to happen. 8$Path to domain socket of EG Daemon. 9*Path to file used to seed (Open)SSL PRNG. :8Do not reuse the connection of next transfer when done. ;fForce the opening up a new connection rather than try to reuse active connections. Default is not to. <No effect (obsolete.) =-Maximum number of cached active connections. >9List of commands to use for initial telnet negotiations. ?OTry to determine the modification date of remote document; can be queried for. @FMaximum number of Location: redirects to chase down before giving up. AIf verifying peer'7s certificate, use certificates in this file to do so. B@Enable the authentication of peer certificate. Default is True. CKerberos security level (clear, safe,  confidential, private are good values, seemingly.) DZInterface name of outgoing network interface ( network interface, IP address, host name.) E.tunnel all HTTP operations through the proxy. FSize of the POSTed data. G(Numeric) proxy port to use. HHControl if the Referer: field is set upon following Location: redirects I,state argumentto pass to progress callback. Jcallback for showing progress KUse PUT to upload data. LITurn on ASCII transfers for FTP transfers; default is binary (i.e. off). MEHandle auto-redirects by chasing down Location: values in responses. Ncontrol how or if a user',s.netrc will be consulted for user:password O;Control if FTP uploads append rather than overwrite files P'Switch NLST for FTP directory listings QIssue a POST request. R:Control the main dataflow, i.e., True to perform uploads. SEIf status response is >= 300, return an error (and no other output). TUse HEAD instead of GET UControl progress meter V'Display outgoing and incoming headers WControl verbosity XPNot sure what this one does; something about passing it to the output function. Y@List of commands to issue to FTP server after the main request. Z<String holding alternative request command (WebDAV anyone?) [UNumber of secs since Jan 1, 1970. Interpretation is determined by CurlTimeCondition. \+How to interpret a conditional time value. ]AWhat protocol to attempt using (0:default;1:TLS;2:SSLv2;3:SSLv3) ^HPath to file holding initial cookie data; also enables cookie handling. _State /5 pointer argument to pass to WriteFunction callback. `?Sequence of FTP commands to execute prior to the main request. a=If true, convert Unix newlines into CRLFs when transferring. ban alias for the previous. cpassword to the above file. dDfile holding your private SSL certificates (default format is PEM). e(Multipart) POST data. fQEmbellish the outgoing request with the given list of (formatted) header values. g[Set the Cookie: header to the given cookie (name=value pairs, semicolon-separated) string. hCByte offset at which the transfer (HTTP or FTP) should start from. i%Upper bound for request to complete. jLIf the bytes per sec drops below the given value, the operation is aborted. k0Set the User-Agent: header to the given string. l,The string to feed to the FTP PORT command. m-Set the Referer: header to the given string. n(Multipart) POST data. o expected size of uploaded data. p2number of seconds before timing out curl operation/ request. qcallback for supplying outgoing/uploaded data. r"callback to handle incoming data. s|buffer for curl to deposit error messages (must at least CURL_ERROR_SIZE bytes long). Uses standard error if not specified. texternal pointer to pass to as us last argument. vbyte range to fetch wsame thing, but for the proxy. xthe  user:pass string to use yname of proxy zwhat port to use. {Jthe URL to use for next request; can be the full URL or just the authority/ hostname. |external pointer to pass to as us last argument. }~u      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstvwxyz{|}~~u|{zyxwvtsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!            !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstvwxyz{|portable provisionalInitialise a curl instance  / is a record type encoding all the information B embodied in a response to your Curl request. Currently only used , to gather up the results of doing a GET in . The  CurlHeader" class encodes the representation ! of response headers. Similar to . The  CurlBuffer" class encodes the representation 3 of response buffers, allowing you to provide your 1 own app-specific buffer reps to be used..or use 9 one of the standard instances (String and ByteStrings.) 1Should be used once to wrap all uses of libcurl. 3 WARNING: the argument should not return before it A is completely done with curl (e.g., no forking or lazy returns) (Set a list of options on a Curl handle. 4 perform a basic GET, dumping the output on stdout. ? The list of options are set prior performing the GET request.  performs the same request as , but 0 returns the response body as a Haskell string. curlGetResponse url opts performs a GET, returning all the info : it can lay its hands on in the response, a value of type . . The representation of the body is overloaded 5Perform the actions already specified on the handle. 9 Collects useful information about the returned message. " Note that this function sets the  r and 6 options. 5Perform the actions already specified on the handle. 9 Collects useful information about the returned message. " Note that this function sets the  r and 6 options. ? The returned payload is overloaded over the representation of  both headers and body via the  type. 7Performs a curl request using an exisitng curl handle. % The provided URL will overwride any { options that 1 are provided in the list of options. See also: . 2Get the headers associated with a particular URL. B Returns the status line and the key-value pairs for the headers. 2Get the headers associated with a particular URL. B Returns the status line and the key-value pairs for the headers. ' perform a multi-part POST submission. 0 performs. a common POST operation, namely that / of submitting a sequence of name=value pairs. >Imports data into the Haskell world and invokes the callback. >Imports data into the Haskell world and invokes the callback. .The output of Curl is ignored. This function & does not marshall data into Haskell. /Add chunks of data to an IORef as they arrive. /Add chunks of data to an IORef as they arrive.   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU}~u      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstvwxyz{|)/A case insensitive lookup for html attributes.  8Drops whitespace from the beginning and end of strings.  Turns a String lowercase.  rant>In my humble opinion, and considering that a few different packages implement this meager code, this should be in the prelude.</rant  Encode spaces in a URL       VCThe abstract type describing the monadic state of a list of pairs. W7Take a monadic PairsWriter and return a list of pairs. X#Make a list of pairs of pairs like   pairs $ do $ 3 =: ( " is my favourite number or " , 5 )  10 =: ( " pints have I drunk or was it " , 11 ) VWXVXWVWXY+Plain old form: Method, action and inputs. ^Either GET or POST. aKTakes a form and fills out the inputs with the given [ ( String , String ) ].  It is convienent to use the W syntax here.   f : _ <- getFormsByAction "http:// whatever.com"  sendForm $ a f $ W $ do  "author" =: "Johnny"  "message" =: "Nice syntax dewd." bzThe first argument is the action attribute of the form, the second is the method attribute, and the third are the inputs. c$Gets all forms from a list of tags. dThe   which parses all forms. VWXYZ[\]^_`abcde YZ[\]^`_cadeb YZ[\]Z[\]^`__`abcdefPLinks have an address, corresponding to the href attribute, and some inner tex. j%Parse all links from a list of tags. k2The parser responsible for getting all the links. fghijkfghijkfghighijklThe Page datatype. Holds gfs, ZYs, the parsed [   ], the page source, and the page's absolute URL. s<The type of Shpider computations. A state transformer over t and . t_The shpider state holds all the options for shpider transactions, the current page and all the s used when calling curl. |@Run a Shpider computation, returning the result with the state. }1Run a Shpider computation, returning the result. The initial shpider state. S Currently, CurlTimeout is hard wired to 3, and cookies are saved in a file called cookies. ~*An empty page, containing no information. T !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPlmnopqrstuvwxyz{|}~tuvwxyz{lmnopqrs~}|lmnopqrmnopqrstuvwxyz{uvwxyz{|}~^ShpiderCode describes the various contingencies which may occur during a shpider transaction.  Converts a  to a . a  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUaTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  U  jis the second url on the same domain as the first? Note: this will return False if either URL is invalid. %Assumes the given URL is relative to z. True if the url is absolute is the given string of form "mailto:person.com"? is the url a http url? *Get the protocol and domain from a URL eg   getDomain "widdle:// owqueer.co.uk/strangeanticsofsailors/jimmy"  -- "widdle:// owqueer.co.uk" RGet the whole url up to and including the current folder of the present document.   getFolder "widdle:// owqueer.co.uk/strangeanticsofsailors/jimmy"  -- "widdle:// owqueer.co.uk/strangeanticsofsailors/" 'QRSTUVWXYZ[\]^_`abcdefghijklmnopSetting this to q will forbid you to download and sendForm to any site which isn'+t on the domain shared by the url given in . .Set the start page of your shpidering antics. K The start page must be an absolute URL, if not, this will raise an error. #Return the starting URL, as set by  )If onlyDownloadHtml is True, then during downloadE, shpider will make a HEAD request to see if the content type is text/html or application/?xhtml+xml, and only if it is, then it will make a GET request. Set the given page as the z. Return the current page GWhen keepTrack is set, shpider will remember the pages which have been {.  if , has been set, then haveVisited will return q$ if the given URL has been visited. +Parse a given URL and source html into the ml datatype. ! This will set the current page. RFetch whatever is at this address, and attempt to parse the content into a Page. 1 Return the status code with the parsed content. YwithAuthorizedDomain will execute the function if the url given is an authorized domain.  See . 9Send a form to the URL specified in its action attribute &Return the links on the current page. &Return the forms on the current page. %Get all links which match this text. If 7 has been set to true, then isAuthorizedDomain returns q< if the given URL is on the domain and false otherwise. If + has not been set to True, then it returns q. -Get all links whose text matches this regex. 4Get all forms whose action matches the given action  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ r        ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n opqrsstuvwxyz{|}~                                                              !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~l      !"#$%$&$'$()*$+$,)-./01.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P$QRSTRSURSVRSWRSXRSYRSZRS[RS\RS]RS]RS^RS_RS_R`aR`bR`cR`dR`eRfgRfhRfiRfjklmklnkloklpklqklrklskltkluklvklwklxklyklzkl{kl|kl}kl~kl~klklklklklklklklklklklklkl shpider-0.0.2Network.Shpider.CodeNetwork.Shpider.PairsNetwork.Shpider.FormsNetwork.Shpider.LinksNetwork.Shpider.StateNetwork.Shpider.URLNetwork.Shpider.OptionsNetwork.ShpiderNetwork.Shpider.Curl.DebugNetwork.Shpider.Curl.CodeNetwork.Shpider.Curl.TypesNetwork.Shpider.Curl.InfoNetwork.Shpider.Curl.PostNetwork.Shpider.Curl.OptsNetwork.Shpider.Curl.EasyNetwork.Shpider.Curl.CurlNetwork.Shpider.TextUtilstagsoup-parsec-0.0.6Text.HTML.TagSoup.Parsec tagsoup-0.6Text.HTML.TagSoup.Typebase System.IOghc-primGHC.BoolCurlCodeCurlSSLIssuerErrorCurlSSLCRLBadFile CurlAgainCurlSSLShutdownFailedCurlSSHCurlRemoveFileNotFoundCurlSSLCACertBadFile CurlConvReqdCurlConvFailedCurlTFtpNoSuchUserCurlTFtpExistsCurlTFtpUnknownIdCurlTFtpIllegalCurlTFtpDiskFull CurlTFtpPermCurlTFtpNotFoundCurlLoginDeniedCurlSSLEngineInitFailedCurlSendFailRewindCurlFtpSSLFailedCurlFilesizeExceededCurlLDAPInvalidUrlCurlBadContentEncoding CurlSSLCACert CurlSSLCipherCurlSSLCertProblemCurlShareInUse CurlRecvError CurlSendErrorCurlSSLEngineSetFailedCurlSSLEngineNotFoundCurlGotNothingCurlSSLPeerCertificate CurlObsoleteCurlTelnetOptionSyntaxCurlUnknownTelnetOptionCurlTooManyRedirectsCurlBadPasswordEnteredCurlInterfaceFailedCurlBadCallingOrderCurlBadFunctionArgumentCurlAbortedByCallbackCurlFunctionNotFoundCurlLibraryNotFoundCurlLDPAPSearchFailedCurlLDAPCannotBindCurlFileCouldntReadFileCurlBadDownloadResumeCurlSSLConnectErrorCurlHttpPostErrorCurlHttpRangeErrorCurlFtpCouldntGetSizeCurlFtpCouldntUseRestCurlFtpPortFailedCurlFtpCouldntSetAsciiCurlOperationTimeoutCurlOutOfMemory CurlReadErrorCurlFtpCouldnStorFileCurlMalformatErrorCurlWriteErrorCurlHttpReturnedErrorCurlFtpQuoteErrorCurlFtpWriteErrorCurlFtpCouldntRetrFileCurlPartialFileCurlFtpCouldnSetBinaryCurlFtpCantReconnectCurlFtpCantGetHostCurlFtpWeird227FormatCurlFtpWeirdPASVReplyCurlFtpWeirdUserReplyCurlFtpWeirdPassReplyCurlFtpUserPasswordIncorrectCurlFtpAccessDeniedCurlFtpWeirdServerReplyCurlCouldntConnectCurlCouldntResolveHostCurlCouldntResolveProxyCurlUrlMalformatUserCurlUrlMalformatCurlFailedInitCurlUnspportedProtocolCurlOKtoCode PairsWriterpairs=:FormmethodactioninputsMethodPOSTGET fillOutFormmkForm gatherFormsallFormstoFormLink linkAddresslinkText gatherLinksallLinksPagelinksformstagssourceaddrShpider ShpiderStateSShtmlOnlyDownloads startPagedontLeaveDomaincurlOpts currentPagevisited runShpiderSt runShpider emptyPage ShpiderCodeUnsupportedCurlStatusTimeOutUnsupportedProtocolNoHost WrongDataOffSite HttpError InvalidURLOkccToSh isSameDomain mkAbsoluteUrl isAbsoluteUrlisMailtoisHttp getDomain getFolder stayOnDomain setStartPage getStartPageonlyDownloadHtmlsetCurrentPagegetCurrentPage keepTrack haveVisited parsePagedownloadwithAuthorizedDomainsendForm currentLinks currentFormsgetLinksByTextisAuthorizedDomaingetLinksByTextRegexgetFormsByActiondebugcurlPrimmkCurlmkCurlWithCleanupom_emptyom_set om_cleanupom_dupmkIOfin OptionMapCurlSlist_LLongLongPort URLStringCurlHmanual_cleanup runCleanup shareCleanup updateCleanup InfoValueIListIDoubleILongIStringInfo FtpEntryPath LastSocket CookieList SslEngines NumConnectsOSErrnoProxyAuthAvail HttpAuthAvailHttpConnectCodePrivate RedirectCount RedirectTime ContentTypeStartTransferTimeContentLengthUploadContentLengthDownloadFiletimeSslVerifyResult RequestSize HeaderSize SpeedUpload SpeedDownload SizeDownload SizeUploadPreTransferTime ConnectTimeNameLookupTime TotalTime ResponseCode EffectiveUrlgetInfo curl_formfreecurl_slist_freecurl_slist_appendContent ContentString ContentBuffer ContentFileHttpPostpostName contentTypecontent extraHeadersshowNameHeadermultiformStringsizeof_httppost marshallPosts marshallPostCurlHttpContentDecodingCurlHttpTransferDecodingCurlConnectTimeoutMS CurlTimeoutMS CurlFtpSSLCCCCurlSSHPrivateKeyFileCurlSSHPublicKeyFileCurlSSHAuthTypesCurlSSLSessionIdCacheCurlSockOptDataCurlSockOptFunctionCurlFtpAlternativeToUserCurlMaxRecvSpeedLargeCurlMaxSendSpeedLargeCurlConvFromUtf8FunctionCurlConvToNetworkFunctionCurlConvFromNetworkFunctionCurlConnectOnlyCurlLocalPortRange CurlLocalPortCurlFtpFileMethodCurlFtpSkipPASVIPCurlIgnoreContentLengthCurlCookieListCurlFtpAccount CurlIOCTLDataCurlIOCTLFunctionCurlFtpSSLAuthCurlTCPNoDelayCurlPostFieldSizeLarge CurlFtpSSL CurlNetrcFileCurlMaxFileSizeLargeCurlResumeFromLargeCurlInFileSizeLargeCurlMaxFileSize CurlIPResolveCurlFtpResponseTimeout CurlProxyAuthCurlFtpCreateMissingDirsCurlSSLCtxDataCurlSSLCtxFunction CurlHttpAuthCurlFtppUseEPRTCurlUnrestrictedAuthCurlHttp200Aliases CurlPrivate CurlEncoding CurlProxyType CurlShare CurlNoSignalCurlBufferSize CurlCAPathCurlCookieSession CurlDebugDataCurlDebugFunction CurlPreQuoteCurlDNSCacheTimeoutCurlDNSUseGlobalCacheCurlSSLEngineDefault CurlSSLEngineCurlSSLKeyType CurlSSLKeyCurlSSLCertTypeCurlFtpUseEPSVCurlHttpVersionCurlSSLCipherList CurlCookieJarCurlSSLVerifyHost CurlHttpGetCurlHeaderFunctionCurlConnectTimeout CurlEgdSocketCurlRandomFileCurlForbidReuseCurlFreshConnectCurlClosePolicyCurlMaxConnectsCurlTelnetOptions CurlFiletime CurlMaxRedirs CurlCAInfoCurlSSLVerifyPeer CurlKrb4Level CurlInterfaceCurlHttpProxyTunnelCurlPostFieldSize CurlProxyPortCurlAutoRefererCurlProgressDataCurlProgressFunctionCurlPutCurlTransferTextASCIICurlFollowLocation CurlUseNetRc CurlFtpAppendCurlFtpListOnlyCurlPost CurlUploadCurlFailOnError CurlNoBodyCurlNoProgress CurlHeader CurlVerbose CurlWriteInfo CurlPostQuoteCurlCustomRequest CurlTimeValueCurlTimeConditionCurlSSLVersionCurlCookieFileCurlWriteHeader CurlQuoteCurlCRLFCurlSSLKeyPasswordCurlSSLPassword CurlSSLCert CurlHttpPostCurlHttpHeaders CurlCookieCurlResumeFromCurlLowSpeedTime CurlLowSpeed CurlUserAgent CurlFtpPort CurlRefererCurlPostFieldsCurlInFileSize CurlTimeoutCurlReadFunctionCurlWriteFunctionCurlErrorBuffer CurlInFile WriteFunction CurlRangeCurlProxyUserPwd CurlUserPwd CurlProxyCurlPortCurlURL CurlFileObj Unmarshalleru_longu_llongu_string u_stringsu_ptr u_writeFun u_readFun u_progressFun u_debugFunu_posts u_sslctxt u_ioctl_funu_convFromNetworku_convToNetworku_convFromUtf8 u_sockoptFunSSLCtxtFunctionDebugFunctionPrim DebugInfoInfoSslDataOut InfoSslDataIn InfoDataOut InfoDataIn InfoHeaderOut InfoHeaderInInfoText DebugFunctionProgressFunctionReadFunctionPrim ReadFunction SSHAuthTypeSSHAuthKeyboard SSHAuthHostSSHAuthPasswordSSHAuthPublickey SSHAuthNone SSHAuthAnyHttpAuthHttpAuthAnySafe HttpAuthAny HttpAuthNTLMHttpAuthGSSNegotiateHttpAuthDigest HttpAuthBasic HttpAuthNone NetRcOption NetRcRequired NetRcOptional NetRcIgnoredTimeCondTimeCondLastModeTimeCondIfUnmodSinceTimeCondIfModSince TimeCondNone HttpVersion HttpVersion11 HttpVersion10HttpVersionNone CurlOptionCurlProxyPassword CurlProxyUserCurlUserPassword CurlUserName CurlCertInfoCurlAddressScopeCurlIssuerCert CurlCRLFileCurlProxyTransferModeCurlCopyPostFieldsCurlSSHHostPublicKeyMD5CurlPostRedirectCurlNewDirectoryPermsCurlNewFilePermstoHttpAuthMask toSSHAuthMaskcurl_readfunc_abortbaseLong baseObject baseFunctionbaseOffTunmarshallOptionverboseUnmarshalleru_boolu_enumu_cptrshowCurlOption initializecurl_global_cleanupreset duphandlesetoptperformcurl_global_initcurl_version_numbercurl_version_string CurlResponse_curlGetResponse CurlBuffer withCurlDosetoptscurlGet curlGetStringcurlGetResponse_ CurlResponseperform_with_responseperform_with_response_do_curlcurlHead curlHead_ curlMultiPostcurlPostcallbackWritercallbackWriter_ ignoreOutput gatherOutput gatherOutput_ respCurlCode respStatusrespStatusLine respHeadersrespBody respGetInfonewIncomingHeader newIncoming method_GET method_POST method_HEADsetDefaultSSLOptscurlGetString_do_curl_concRevparseStatusNHeaders parseHeader easyWritergetResponseCode attrLookuptrim lowercase escapeSpaces TagParserTag GHC.IOBaseIO initialStGHC.Basefail>>=>>returnControl.Monad.FixmfixMonadFunctorMonadFix Control.Monad MonadPlus Data.FunctionfixapliftM5liftM4liftM3liftM2liftMunlesswhen replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMjoinforever<=<>=>msumforM_forMfilterMguardmapM_mapM sequence_sequence=<<mplusmzerofmap mtl-1.1.0.2Control.Monad.State.Lazy withStateT mapStateT execStateT evalStateT withStatemapState execState evalStaterunStateState runStateTStateTControl.Monad.State.Classgetsmodifyputget MonadStateControl.Monad.Translift MonadTransliftIOMonadIOurl-2.1 Network.URLok_urlok_pathok_paramok_host decString encString exportParams exportURL exportHost importParams importURL add_paramsecure secure_protporthostprotocolHostHTTPFTPRawProtProtocolAbsolute HostRelative PathRelativeURLType url_paramsurl_pathurl_typeURLTrue