h$`JA       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""######################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&'''''''''(((((((((((((((((((((((((((((((()))))))))))))*+,,,,-....................................................................................................////////////////////////////////////////////////////////////////////////////////////////////////////////////////01123456789999999::: ; < < < < < < < < < < < < < < < < < < < < < < < < < = = = = = = = = = = = > > ? @ A B C C C C D E F G G G G G G H I J K K L M N N N N N N N N O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O OP*Dynamically generated configuration module Safe-Inferred8 glircTransitive dependencies for this package computed at configure-time glircpackage name, version number None glircserver response glircclient response Binding to ecdsatool(c) Eric Mertens, 2016ISCemertens@gmail.comNone glircIdentifier for SASL ECDSA challenge response authentication using curve NIST256P. ECDSA-NIST256P-CHALLENGEglirc;Encode a username as specified in this authentication mode.glirc5Compute the response for a given challenge using the  ecdsatool( executable which must be available in PATH.glircauthorization identity glircauthentication identity glirc!private key file glirc!challenge string glirc!error message or response string None #$&+glirc,SCRAM state waiting for server-final-messageglirc,SCRAM state waiting for server-first-messageglircConstruct client-first-message and extra parameters needed for .glircAdd server-first-message to current SCRAM transaction, compute client-final-message and next state for .glircAdd server-final-message to transaction and compute validatity of the whole transaction.glircauthentication ID glircauthorization ID glircpassword glircnonce glirc output of  glircserver first message glirc output of  glircserver-final-message glirctransaction succeeded?    Marshaling support for C API(c) Eric Mertens, 2016ISCemertens@gmail.comNone#$,K0glircPointer to UTF-8 encoded string and as string length. Strings are null-terminated. The null-terminator is not counted in the length.glircUsed to pass arguments from /extension EXT_NAME# client command into an extension.glircChat message data containing the source network, window target, and message body.glirc struct glirc_message#glircarray$glirc array length%glircarray&glircarray'glirc array length(glircInformation describing an extension's entry-points and metadata.*glircOptional startup callback+glircOptional shutdown callback,glirc"Optional message received callback-glircOptional message send callback.glirc Optional client command callback/glircNull-terminated name0glircextension version1glircextension version2glircType of dynamic function pointer wrappers. These convert C function-pointers into Haskell functions.3glirc 0typedef void thread_finish(void *glirc, void *S)4glirc%Callback function when timer triggers5glircInteger type of timer IDs6glirc typedef void process_chat(void *glirc, void *S, const struct glirc_chat *)7glirc typedef void process_command(void *glirc, void *S, const struct glirc_command *)8glirc typedef enum process_result process_message(void *glirc, void *S, const struct glirc_message *)9glirc 'typedef void stop(void *glirc, void *S):glirc 2typedef void *start(void *glirc, const char *path);glircResult used to determine what to do after processing a message with the 8 callback.| enum process_result=glircTag for describing the kind of message to display in the client as used in  glirc_print. See G and H. enum message_code;?glircDynamic import for 3.@glirc Dynamic import for thread startsAglirc!Dynamic import for timer callbackBglircDynamic import for 6.CglircDynamic import for 7.DglircDynamic import for 8.EglircDynamic import for 9.FglircDynamic import for :.GglircNormal client message. Unread counter increments, but no client bell or error status update.HglircImportant client message. Unread counter increments, bell rings, and error status updates.Iglirc6Allow the message to proceed through the client logic.Jglirc)Drop the message from further processing.KglircLike   except it doesn't write to NULLLglirc7Marshal a text as a malloced null-terminated CStringLenMglirc8Marshal a text as a temporary null-terminated CStringLenNglirc struct glirc_stringOglirc struct glirc_commandPglirc struct glirc_messageRglirc struct glirc_extension3glircthread result 4glirctimer state glirctimer ID 6glircextension state glircchat info 7glircextension state glirccommand 8glircextention state glircmessage to send 9glircextension state :glircapi token glircpath to extension glircarray of arguments glircnumber of arguments glircinitialized extension state < !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM<()*+,-./01:9876453 !"#$%&'2FEDCBA@?=>GH; looking for various flags and the command and its arguments.{glircExecute the requested command synchronously and return the output.zglircexec arguments glircerror or parsed command {glircexec configuration glircerror lines or output lines fghijklmnopxyz{jklmnopfghiyxz{9Parser and evaluator for string interpolation in commands(c) Eric Mertens, 2016ISCemertens@gmail.com Safe-Inferred '(6glirc%Parsed chunk of an expandable commandglirc regular textglircinline variable $x or ${x y}glircinline variable $1 or ${1}glirc bracketed variable with default ${x|lit}glirc2Specification used when unspecified, no arguments.glircParse a  / searching for the expansions as specified in . $$ is used to escape a single $.glircAttempt to expand all of the elements in the given list using the two expansion functions. If the expansion of any chunk fails the whole expansion fails.glircvariable resolution glircargument index resolution glircchunks glircconcatenated, expanded chunks |}~~|} Trie for recognizing commands(c) Dan Doel, 2016ISCemertens@gmail.com Safe-Inferred 5679 glirc%Possible results of recognizing text.glirc.text matched exactly, yielding the given valueglirc8text would be recognized if joined to the given suffixesglirc%text could not possibly be recognizedglirc A map from   values to a values that is capable of yielding more detailed information when looking up keys that are not actually in the map.glirc*Attempt to recognize a string, yielding a  result.glirc Create a  from an association list. If a key appears twice, the earliest associated value will be used.glircAdd a key-value pair to a >. This will override the value already present if one exists.glirc1Compute all strings that will be recognized by a .   *Client configuration format and operations(c) Eric Mertens, 2016ISCemertens@gmail.comNone 1;glircParse a text attribute. This value should be a sections with the fg and/or bg attributes. Otherwise it should be a color entry that will be used for the foreground color. An empty sections value will result in  glirc#Parse a color. Support formats are:Number between 0-255 Name of colorRGB values of color as a list Configuration schema for macros(c) Eric Mertens, 2017ISCemertens@gmail.comNone 1<: STS policy configuration(c) Eric Mertens, 2019ISCemertens@gmail.comNone 1< Programmable keyboard actions(c) Eric Mertens, 2016ISCemertens@gmail.comNone @glircLookup table for keyboard events to actions. Use with keyToAction.glirc/Actions that can be invoked using the keyboard.glirc%Render action as human-readable text.glircLookup the action to perform in response to a particular key event.glirc&Bind a keypress event to a new action.glirc(Unbind the action associated with a key.glircDefault key bindingsglircactions glircjump modifier glircwindow names glircactual modifier glirckey glircaction glirc modifiers glirc key glirc action glirc actions glirc modifiers glirc key glirc actions 66-Human-readable versions of connection failure(c) Eric Mertens, 2016ISCemertens@gmail.comNoneAglircCompute the message message text to be used for a connection errorglircnetwork error glircclient lines 'Hooks into the operation of the client.(c) Dan Doel, 2016ISCdan.doel@gmail.comNoneEJglircIdentifying name for the hookglirc0Whether the remapping should affect client stateglirc"(Partial) message remapping actionglircThe possible results of a 2 action. A hook can decline to handle a message (), filter out a message (9), or change a message into an arbitrary other message ().glirccontinue processingglirc stop processing and drop messageglirc&stop processing and return new messageglirc$Apply the given message hooks to an  . The hooks are tried in order until one handles the message. A  9 result means the message was filtered out by a hook. A   result contains the actual   to be processed.  3Hook for intergrating Matterbridge bridged messages(c) Felix Friedlander 2021ISCfelix@ffetc.netNone F%Hook to remap znc buffextras messages(c) Dan Doel, 2016ISCdan.doel@gmail.comNone G(glircMap ZNC's buffextras messages to native client messages. Set debugging to pass through buffextras messages that the hook doesn't understand.glirc arguments Packed vty Image type(c) Eric Mertens, 2016ISCemertens@gmail.comNone H.glircPacked, strict version of  & used for long-term storage of images.glirc"Width in terms of terminal columnsglirc image width  Chat message view(c) Eric Mertens, 2016ISCemertens@gmail.comNoneK^glircTrailing space with default attributes deals with bug in VTY where the formatting will continue past the end of chat messages. This adds an extra space if a line doesn't end on the terminal edge.glircThis version of line wrap wraps without regard for word boundaries.glircterminal width glircunwrapped image glircwrapped image glircterminal width glircunwrapped image glircwrapped image glircterminal width glircprefix image glircunwrapped image glircwrapped image glircfirst line length glircimage glircsplits 'Palette of colors used to render the UI(c) Eric Mertens, 2016ISCemertens@gmail.comNone !Peglirc.Color palette used for rendering the client UIglirchighlighting nicknamesglircown nickname(s)glircown nickname(s) in mentionsglircmessage timestampsglirccoalesced metadataglircsigils (e.g. @+)glircinformation labelsglirc ping latencyglirc window nameglircerror messagesglirctextbox markersglircwindow name with activityglircwindow name with mentionglirc known commandglirc%known command with complete argumentsglircprefix of known commandglircunknown commandglirccommand argument placeholderglircCommand input prefix CMD:glircDivider between split windowsglirc$Divider between new and old messagesglirccolor of nickname when awayglirc&rendering of monospace formatting textglircchannel mode attributesglircuser mode attributesglircsnotice mask attributesglircDefault UI colors that look nice in my dark solarized color schemeglircList of palette entry names and lenses for accessing that component of the palette.88*Parser for mIRC's text formatting encoding(c) Eric Mertens, 2016ISCemertens@gmail.comNoneSglircParse mIRC encoded format characters and hide the control characters.glircParse mIRC encoded format characters and render the control characters explicitly. This view is useful when inputting control characters to make it clear where they are in the text.glirc"Safely render a control character.glirc Render a   with default attributes and replacing all of the control characters with reverse-video letters corresponding to caret notation.6Interpretation of argument specification as a renderer(c) Eric Mertens, 2017ISCemertens@gmail.comNone '(Tglircpalette glircenvironment glircrender placeholders glircspecification glircuser input None Wglirc4Compile a list of masks down to a single, reuseable % value suitable for being used with .7Masks can match zero-to-many arbitrary characters with *.-Masks can match one arbitrary character with ?.Literal * ? and |$ can be matched with a preceding @@.Missing host or username components of a mask will automatically be treated as wildcards.glircDetermine if a given  matches a given  glircmasks Messages to be added to buffers(c) Eric Mertens, 2016ISCemertens@gmail.comNone X5glircChghost commandglircAccount commandglirc User quitglircMass event like a netsplitglirc7Compute a searchable text representation of the message  IRC channel session state(c) Eric Mertens, 2016ISCemertens@gmail.comNone[;glirc5Dynamic information about the state of an IRC channelglirc topic textglircauthor and timestamp for topicglirc channel URLglircuser list and sigilsglircchannel settings and parametersglircmode, mask, setter, set timeglirccreation time of channelglircdelayed op messagesglircConstruct an empty glircAdd a user to the user listglirc Remove a user from the user listglircRename a user in the user listglircSet the channel topic##9Types for representing the current window being displayed(c) Eric Mertens, 2016ISCemertens@gmail.comNone`mglircCurrently focused windowglirc No networkglircNetworkglircNetwork Channel/NickglircFilter argument for glirc no filterglirconly network windowsglirconly channel windowsglirconly user windowsglirc Subfocus viewglirc Show messagesglircShow channel metadataglircShow channel user listglircShow DCC offers listglirc%Show channel mask list for given modeglircShow client windowsglircShow current paletteglircShow all mentionsglircShow all digraphsglircShow key bindingsglirc&Show help window with optional commandglircShow GHC RTS statisticsglircShow ignored masksglircShow rendered certificateglirc4Return the network associated with the current focusglircUnfocused first, followed by focuses sorted by network. Within the same network the network focus comes first and then the channels are ordered by channel identifierglircnetwork 2Types and operations for managing message buffers.(c) Eric Mertens, 2016ISCemertens@gmail.comNonegglirc;Flag for the important of a message being added to a windowglircDon't update unread countglircIncrement unread countglirc-Increment unread count and set important flagglircA  tracks all of the messages and metadata for a particular message buffer.glircShortcut name (or NUL)glirc!Messages to display, newest firstglirc1Location of line drawn to indicate newer messagesglirc'Messages added since buffer was visibleglircMessages in bufferglirc&Indicates an important event is unreadglircHide metadata messagesglircRemove from jump rotationglircIgnore activityglircA single message to be displayed in a window. The normal message line consists of the image prefix and the image. This allows line wrapping to be applied separately to the image and prefix so that wrapped messages can fall to the right side of the prefix.glirc Summary valueglircNormal rendered image prefixglircNormal rendered imageglircDetailed rendered imageglircImportance of messageglircA window with no messagesglircAdds a given line to a window as the newest message. Window's unread count will be updated according to the given importance.glirc?Update the window clearing the unread count and important flag.glirc8Update the window when it first becomes active. If only boring messages have been added since last time the marker will be hidden.glircUpdate the window when it becomes inactive. This resets the activity marker to the bottom of the window.44(Type for tracking user, host and account(c) Eric Mertens, 2019ISCemertens@gmail.comNoneiglircPair of username and hostname. Empty strings represent missing information.glircusernameglirchostnameglircservices account3View current palette and to see all terminal colors(c) Eric Mertens, 2016ISCemertens@gmail.comNone kglircGenerate lines used for /palette. These lines show all the colors used in the current palette as well as the colors available for use in palettes.Q Safe-Inferredk glirccontext before glirccontext after glircpredicate glircinputs glircmatches with context  R/Template Haskell quasi-quoter for digraph table(c) Eric Mertens, 2017ISCemertens@gmail.com Safe-Inferredl^ SCharacter mnemonics(c) Eric Mertens, 2016ISCemertens@gmail.com Safe-Inferred mg glirc$Two-character key for digraph lookup glircFind the entry in the digraph table give a two-character key and return the matched value. $Multiline text container with cursor(c) Eric Mertens, 2016ISCemertens@gmail.comNonerglirc0Zipper-ish view of the multi-line content of an EditBox . Lines  the   are stored in reverse order.glircDefault  valueglirc Single line .glirc!Shifts the first line off of the =, yielding the text of the line and the rest of the content.glircWhen at beginning of line, jump to beginning of previous line. Otherwise jump to beginning of current line.glircWhen at end of line, jump to end of next line. Otherwise jump to end of current line.glirc0Move the cursor left, across lines if necessary.glirc1Move the cursor right, across lines if necessary.glirc3Move the cursor left to the previous word boundary.glirc0Move the cursor right to the next word boundary.glirc'Delete the character before the cursor.glirc,Delete the character after/under the cursor.glirc/Insert character at cursor, cursor is advanced.glircSmarter version of  that removes spurious newlines.glircInsert string at cursor, cursor is advanced to the end of the inserted string.glircUse the two characters preceeding the cursor as a digraph and replace them with the corresponding character.Console-mode text box(c) Eric Mertens, 2016ISCemertens@gmail.comNonew glircDefault  valueglircIndicate that the contents of the text box were successfully used by the program. This clears the first line of the contents and updates the history.glircUpdate the editbox to reflect the earlier element in the history.glirc?Update the editbox to reflect the later element in the history.glirc.Jump the cursor to the beginning of the input.glirc(Jump the cursor to the end of the input.glircDelete all text from the cursor to the end and store it in the yank buffer.glircDelete all text from the cursor to the beginning and store it in the yank buffer.glirc%Insert the yank buffer at the cursor.glircKill the content from the cursor back to the previous word boundary. When yank( is set the yank buffer will be updated.glircKill the content from the curser forward to the next word boundary. When yank' is set the yank buffer will be updatedglirc8Insert a character at the cursor and advance the cursor.glircyank glircyank )) Tab-completion logic(c) Eric Mertens, 2016ISCemertens@gmail.comNone}glirc'Class for types that are isomorphic to  > and which can support a total order and a prefix predicate. TU (  x) == x   (TU x) == x TV x y ==> x   y glircCheck if the first argument is a lexicographic prefix of the second.glirc Convert to a  .glirc!Word completion prefix and suffixglirc3Word completion without adding any prefix or suffixglirc>Word completion adding a ": " suffix at the beginning of linesglirc+Word completion using a "@" prefix intendedglirc&Perform word completion on a text box.The leading update operation is applied to the result of tab-completion when tab completing from the beginning of the text box. This is useful when auto-completing a nick and including a trailing colon.The reversed parameter indicates that tab-completion should return the previous entry. When starting a fresh tab completion the priority completions will be considered in order before resorting to the set of possible completions.glircvalid character predicate glircleading update operation glirc reversed glircpriority completions glircpossible completions !)Settings for an individual IRC connection(c) Eric Mertens, 2016ISCemertens@gmail.comNone #$+1V7glirc1Fingerprint used to validate server certificates.glircSHA-1 fingerprintglircSHA-2 256-bit fingerprintglircSHA-2 512-bit fingerprintglirc'Security setting for network connectionglircTLS connectionglirc+TLS connection without certificate checkingglircPlain connectionglirc%Hook name and configuration argumentsglircRegular expression matched with original source to help with debugging.glirc'SASL mechanisms and configuration data.glirc-SASL PLAIN RFC4616 - authzid authcid passwordglirc SASL NIST -  $https://github.com/kaniini/ecdsatool - authzid keypathglircSASL EXTERNAL RFC4422 - authzidglirc5SASL SCRAM-SHA-256 RFC7677 - authzid authcid passwordglirc8SASL ECDH-X25519-CHALLENGE - authzid authcid private-keyglirc Constant textglircCommand to generate textglircStatic server-level settingsglircconnection nicknamesglircconnection usernameglircconnection realname / GECOSglircserver passwordglircSASL mechanismglircserver hostnameglirc server portglircuse TLS to connectglircverify TLS hostnameglircpath to client TLS certificateglircpath to client TLS keyglircclient key PEM passwordglirc0additional CA certificates for validating serverglircOpenSSL cipher suiteglircOpenSSL TLS 1.3 cipher suiteglirc*optional acceptable public key fingerprintglirc+optional acceptable certificate fingerprintglircHonor STS policies when trueglirc.commands to execute upon successful connectionglirchostname of SOCKS proxyglircport of SOCKS proxyglirc"Channels with chanserv permissionsglircFlood limiter penalty (seconds)glirc!Flood limited threshold (seconds)glircInitial message hooksglirc+The name referencing the server in commandsglirc1The number of reconnect attempts to make on errorglirc