X\Rch      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgNoneHIM#"A function which handles an event.#A description of the event handler.Which type to be triggered byThe function to call.$Types of events which can be caught.-Match no events.Match all events/*The updateable state of an IRC connection.1 Client nick2Client username3Client realname4Current channels5Response to CTCP VERSION6The registered event handlers7`List of nicks (optionally restricted to channels) to ignore messages from. No channel = global.8-The static state of an IRC server connection.:+Function to connect and start the conduits.;Message send queue.<The server host.=The server port.>/The minimum time between two adjacent messages.?9Action to run if the remote server closes the connection.B"Read-only connection configurationC%Mutable instance configuration in STMDThe IRC monad.HConstruct a new IRC stateIAccess the entire state.J6Extract the connection configuration from an IRC stateK4Extract the instance configuration from an IRC stateLMExtract the current snapshot of the instance configuration from an IRC stateMAccess the connection configNAccess the instance config TVarO.Access the instance config as it is right now.PMOverwrite the instance config, even if it has changed since we looked at it.QGet the type of an event.8 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQP  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQPGFED@ABCHIJKLMNOP89:;<=>?/01234567.-,+*)('&%$#"! Q    .-,+*)('&%$#"! /0123456789:;<=>?@ABCDEFGHIJKLMNOPQNoneHIM h;Connect to a server using the supplied connection function.iThe event loop.jForget failed decodings.kLBlock on receiving a message and invoke all matching handlers concurrently.l$Check if an event is ignored or not.m$Get the event handlers for an event.n6A conduit which logs everything which goes through it.R]Send a message as UTF-8, using TLS if enabled. This blocks if messages are sent too rapidly.STSend a message, using TLS if enabled. This blocks if messages are sent too rapidly.TUDisconnect from the server, properly tearing down the TLS session (if there is one).o@Disconnect immediately, without waiting for messages to be sent. hijklmnRSTo hijklmnRSTo hijklmnRSToNoneUUpdate the nick in the instance configuration and also send an update message to the server. This doesn't attempt to resolve nick collisions, that's up to the event handlers.VQUpdate the channel list in the instance configuration and also part the channel.WRemove a channel from the list without sending a part command (be careful not to let the channel list get out of sync with the real-world state if you use it for anything!)X)Send a message to the source of an event.Y Construct a PRIVMSG containing a CTCPZ Construct a NOTICE containing a CTCPUVWXYZUVWXYZUVWXYZUVWXYZNone [7The default event handlers, the following are included:respond to server PING messages with a PONG;respond to CTCP PING requests with a CTCP PONG;respond to CTCP VERSION" requests with the version string;respond to CTCP TIME requests with the system time;Vupdate the nick upon receiving the welcome message, in case the server modifies it;2mangle the nick if the server reports a collision;update the channel list on JOIN and KICK.These event handlers are all exposed through the Network.IRC.Client.Handlers module, so you can use them directly if you are building up your / from scratch.mIf you are building a bot, you may want to write an event handler to process messages representing commands.\Respond to server PING messages with a PONG.]Respond to CTCP PING requests with a CTCP PONG.^Respond to CTCP VERSION" requests with the version string._Respond to CTCP TIME requests with the system time.`{Update the nick upon welcome (numeric reply 001), as it may not be what we requested (eg, in the case of a nick too long).aZMangle the nick if there's a collision (numeric replies 432, 433, and 436) when we set itpjUpon receiving a channel topic (numeric reply 332), add the channel to the list (if not already present).q*Update the channel list upon being kicked.bgThe default disconnect handler: do nothing. You might want to override this with one which reconnects.rMatch and handle a named CTCPs Match and handle a numeric replythBreak some text on the first occurrence of a substring, removing the substring from the second portion. [\]^_`apqbrst[\]^_`ab[\]^_`ab [\]^_`apqbrstNonec Connect to a server without TLS.dConnect to a server with TLS.eRun the event loop for a server, receiving messages and handing them off to handlers as appropriate. Messages will be logged to stdout.fLike e%, but use the provided initial state.g1Construct a default IRC configuration from a nickcdefgb  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[bcdefg cdefRSTgb[cdefgu      !!"#$%&'()*+,-./01234556789:;<==>?@ABCDDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxirc-client-0.2.3.1Network.IRC.Client.TypesNetwork.IRC.ClientNetwork.IRC.Client.UtilsNetwork.IRC.Client.HandlersNetwork.IRC.Client.Internalirc-conduit-0.1.1.2%Network.IRC.Conduit.Internal.MessagesUserServerChannelSourceTopicRawMsgQuitPrivmsgPongPingPartNumericNoticeNickModeKickJoinInviteMessage_source_raw_messageEvent toByteString rawMessage EventHandler _description _matchType _eventFunc EventTypeENumericEPingEKickEInviteETopicEModeEQuitEPartEJoinENickECTCPENoticeEPrivmsgENothing EEverythingInstanceConfig_nick _username _realname _channels_ctcpVer_eventHandlers_ignoreConnectionConfig_func _sendqueue_server_port_flood _disconnectIRCState_connectionConfig_instanceConfigIRCUnicodeMessage UnicodeSource UnicodeEvent newIRCStateircStategetConnectionConfiggetInstanceConfiggetInstanceConfig'connectionConfiginstanceConfigTVarinstanceConfigputInstanceConfig eventTypesendsendBS disconnectsetNick leaveChanneldelChanreplyctcp ctcpReplydefaultEventHandlers pingHandlerctcpPingHandlerctcpVersionHandlerctcpTimeHandler welcomeNick nickManglerdefaultDisconnectHandlerconnectconnectWithTLSstartstart'defaultIRCConfconnect'runner forgetful eventSink isIgnoredgetHandlersFor logConduit disconnectNow joinHandler kickHandler ctcpHandler numHandlerbreakOn'