    {-# Language PatternSynonyms, OverloadedStrings #-}
    {-# OPTIONS_GHC -Wno-missing-pattern-synonym-signatures #-}

    {-|
    Module      : Irc.Codes
    Description : Helpers for interpreting IRC reply codes
    Copyright   : (c) Eric Mertens, 2016
    License     : ISC
    Maintainer  : emertens@gmail.com

    This module defines support for working with IRC's numeric reply
    codes. Pattern synonyms are provided for each of the possible IRC reply codes.

    Reply code information was extracted from https://www.alien.net.au/irc/irc2numerics.html

    -}

    module Irc.Codes where

    import           Data.Vector (Vector)
    import qualified Data.Vector as Vector
    import           Data.Text (Text)
    import qualified Data.Text as Text

    -- | Type of numeric reply codes
    newtype ReplyCode = ReplyCode Word
      deriving (ReplyCode -> ReplyCode -> Bool
    (ReplyCode -> ReplyCode -> Bool)
    -> (ReplyCode -> ReplyCode -> Bool) -> Eq ReplyCode
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: ReplyCode -> ReplyCode -> Bool
    == :: ReplyCode -> ReplyCode -> Bool
    $c/= :: ReplyCode -> ReplyCode -> Bool
    /= :: ReplyCode -> ReplyCode -> Bool
    Eq, Eq ReplyCode
    Eq ReplyCode =>
    (ReplyCode -> ReplyCode -> Ordering)
    -> (ReplyCode -> ReplyCode -> Bool)
    -> (ReplyCode -> ReplyCode -> Bool)
    -> (ReplyCode -> ReplyCode -> Bool)
    -> (ReplyCode -> ReplyCode -> Bool)
    -> (ReplyCode -> ReplyCode -> ReplyCode)
    -> (ReplyCode -> ReplyCode -> ReplyCode)
    -> Ord ReplyCode
    ReplyCode -> ReplyCode -> Bool
    ReplyCode -> ReplyCode -> Ordering
    ReplyCode -> ReplyCode -> ReplyCode
    forall a.
    Eq a =>
    (a -> a -> Ordering)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> a)
    -> (a -> a -> a)
    -> Ord a
    $ccompare :: ReplyCode -> ReplyCode -> Ordering
    compare :: ReplyCode -> ReplyCode -> Ordering
    $c< :: ReplyCode -> ReplyCode -> Bool
    < :: ReplyCode -> ReplyCode -> Bool
    $c<= :: ReplyCode -> ReplyCode -> Bool
    <= :: ReplyCode -> ReplyCode -> Bool
    $c> :: ReplyCode -> ReplyCode -> Bool
    > :: ReplyCode -> ReplyCode -> Bool
    $c>= :: ReplyCode -> ReplyCode -> Bool
    >= :: ReplyCode -> ReplyCode -> Bool
    $cmax :: ReplyCode -> ReplyCode -> ReplyCode
    max :: ReplyCode -> ReplyCode -> ReplyCode
    $cmin :: ReplyCode -> ReplyCode -> ReplyCode
    min :: ReplyCode -> ReplyCode -> ReplyCode
    Ord)

    -- | Shows number
    instance Show ReplyCode where
      showsPrec :: Int -> ReplyCode -> ShowS
    showsPrec Int
    p (ReplyCode Word
    x) = Int -> Word -> ShowS
    forall a. Show a => Int -> a -> ShowS
    showsPrec Int
    p Word
    x

    -- | Reads only the number
    instance Read ReplyCode where
      readsPrec :: Int -> ReadS ReplyCode
    readsPrec Int
    p String
    str = [ (Word -> ReplyCode
    ReplyCode Word
    x, String
    xs) | (Word
    x,String
    xs) <- Int -> ReadS Word
    forall a. Read a => Int -> ReadS a
    readsPrec Int
    p String
    str ]

    -- | Categories for reply codes
    data ReplyType
      = ClientServerReply -- ^ 0-99 Messages between client and server
      | CommandReply      -- ^ 200-399 Responses to commands
      | ErrorReply        -- ^ 400-599 Errors
      | UnknownReply      -- ^ Uncategorized
      deriving (ReplyType -> ReplyType -> Bool
    (ReplyType -> ReplyType -> Bool)
    -> (ReplyType -> ReplyType -> Bool) -> Eq ReplyType
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: ReplyType -> ReplyType -> Bool
    == :: ReplyType -> ReplyType -> Bool
    $c/= :: ReplyType -> ReplyType -> Bool
    /= :: ReplyType -> ReplyType -> Bool
    Eq, Eq ReplyType
    Eq ReplyType =>
    (ReplyType -> ReplyType -> Ordering)
    -> (ReplyType -> ReplyType -> Bool)
    -> (ReplyType -> ReplyType -> Bool)
    -> (ReplyType -> ReplyType -> Bool)
    -> (ReplyType -> ReplyType -> Bool)
    -> (ReplyType -> ReplyType -> ReplyType)
    -> (ReplyType -> ReplyType -> ReplyType)
    -> Ord ReplyType
    ReplyType -> ReplyType -> Bool
    ReplyType -> ReplyType -> Ordering
    ReplyType -> ReplyType -> ReplyType
    forall a.
    Eq a =>
    (a -> a -> Ordering)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> a)
    -> (a -> a -> a)
    -> Ord a
    $ccompare :: ReplyType -> ReplyType -> Ordering
    compare :: ReplyType -> ReplyType -> Ordering
    $c< :: ReplyType -> ReplyType -> Bool
    < :: ReplyType -> ReplyType -> Bool
    $c<= :: ReplyType -> ReplyType -> Bool
    <= :: ReplyType -> ReplyType -> Bool
    $c> :: ReplyType -> ReplyType -> Bool
    > :: ReplyType -> ReplyType -> Bool
    $c>= :: ReplyType -> ReplyType -> Bool
    >= :: ReplyType -> ReplyType -> Bool
    $cmax :: ReplyType -> ReplyType -> ReplyType
    max :: ReplyType -> ReplyType -> ReplyType
    $cmin :: ReplyType -> ReplyType -> ReplyType
    min :: ReplyType -> ReplyType -> ReplyType
    Ord, ReadPrec [ReplyType]
    ReadPrec ReplyType
    Int -> ReadS ReplyType
    ReadS [ReplyType]
    (Int -> ReadS ReplyType)
    -> ReadS [ReplyType]
    -> ReadPrec ReplyType
    -> ReadPrec [ReplyType]
    -> Read ReplyType
    forall a.
    (Int -> ReadS a)
    -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
    $creadsPrec :: Int -> ReadS ReplyType
    readsPrec :: Int -> ReadS ReplyType
    $creadList :: ReadS [ReplyType]
    readList :: ReadS [ReplyType]
    $creadPrec :: ReadPrec ReplyType
    readPrec :: ReadPrec ReplyType
    $creadListPrec :: ReadPrec [ReplyType]
    readListPrec :: ReadPrec [ReplyType]
    Read, Int -> ReplyType -> ShowS
    [ReplyType] -> ShowS
    ReplyType -> String
    (Int -> ReplyType -> ShowS)
    -> (ReplyType -> String)
    -> ([ReplyType] -> ShowS)
    -> Show ReplyType
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> ReplyType -> ShowS
    showsPrec :: Int -> ReplyType -> ShowS
    $cshow :: ReplyType -> String
    show :: ReplyType -> String
    $cshowList :: [ReplyType] -> ShowS
    showList :: [ReplyType] -> ShowS
    Show)

    pattern $mRPL_WELCOME :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WELCOME :: ReplyCode
    RPL_WELCOME                 = ReplyCode 001
    pattern $mRPL_YOURHOST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_YOURHOST :: ReplyCode
    RPL_YOURHOST                = ReplyCode 002
    pattern $mRPL_CREATED :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_CREATED :: ReplyCode
    RPL_CREATED                 = ReplyCode 003
    pattern $mRPL_MYINFO :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_MYINFO :: ReplyCode
    RPL_MYINFO                  = ReplyCode 004
    pattern $mRPL_ISUPPORT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ISUPPORT :: ReplyCode
    RPL_ISUPPORT                = ReplyCode 005
    pattern $mRPL_SNOMASK :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_SNOMASK :: ReplyCode
    RPL_SNOMASK                 = ReplyCode 008
    pattern $mRPL_STATMEMTOT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATMEMTOT :: ReplyCode
    RPL_STATMEMTOT              = ReplyCode 009
    pattern $mRPL_REDIR :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_REDIR :: ReplyCode
    RPL_REDIR                   = ReplyCode 010
    pattern $mRPL_YOURCOOKIE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_YOURCOOKIE :: ReplyCode
    RPL_YOURCOOKIE              = ReplyCode 014
    pattern $mRPL_MAP :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_MAP :: ReplyCode
    RPL_MAP                     = ReplyCode 015
    pattern $mRPL_MAPEND :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_MAPEND :: ReplyCode
    RPL_MAPEND                  = ReplyCode 017
    pattern $mRPL_YOURID :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_YOURID :: ReplyCode
    RPL_YOURID                  = ReplyCode 042
    pattern $mRPL_SAVENICK :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_SAVENICK :: ReplyCode
    RPL_SAVENICK                = ReplyCode 043
    pattern $mRPL_ATTEMPTINGJUNC :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ATTEMPTINGJUNC :: ReplyCode
    RPL_ATTEMPTINGJUNC          = ReplyCode 050
    pattern $mRPL_ATTEMPTINGREROUTE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ATTEMPTINGREROUTE :: ReplyCode
    RPL_ATTEMPTINGREROUTE       = ReplyCode 051
    pattern $mRPL_REMOTESUPPORT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_REMOTESUPPORT :: ReplyCode
    RPL_REMOTESUPPORT           = ReplyCode 105 -- ircd-seven unnamed code
    pattern $mRPL_TRACELINK :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TRACELINK :: ReplyCode
    RPL_TRACELINK               = ReplyCode 200
    pattern $mRPL_TRACECONNECTING :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TRACECONNECTING :: ReplyCode
    RPL_TRACECONNECTING         = ReplyCode 201
    pattern $mRPL_TRACEHANDSHAKE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TRACEHANDSHAKE :: ReplyCode
    RPL_TRACEHANDSHAKE          = ReplyCode 202
    pattern $mRPL_TRACEUNKNOWN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TRACEUNKNOWN :: ReplyCode
    RPL_TRACEUNKNOWN            = ReplyCode 203
    pattern $mRPL_TRACEOPERATOR :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TRACEOPERATOR :: ReplyCode
    RPL_TRACEOPERATOR           = ReplyCode 204
    pattern $mRPL_TRACEUSER :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TRACEUSER :: ReplyCode
    RPL_TRACEUSER               = ReplyCode 205
    pattern $mRPL_TRACESERVER :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TRACESERVER :: ReplyCode
    RPL_TRACESERVER             = ReplyCode 206
    pattern $mRPL_TRACESERVICE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TRACESERVICE :: ReplyCode
    RPL_TRACESERVICE            = ReplyCode 207
    pattern $mRPL_TRACENEWTYPE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TRACENEWTYPE :: ReplyCode
    RPL_TRACENEWTYPE            = ReplyCode 208
    pattern $mRPL_TRACECLASS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TRACECLASS :: ReplyCode
    RPL_TRACECLASS              = ReplyCode 209
    pattern $mRPL_TRACERECONNECT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TRACERECONNECT :: ReplyCode
    RPL_TRACERECONNECT          = ReplyCode 210
    pattern $mRPL_STATS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATS :: ReplyCode
    RPL_STATS                   = ReplyCode 210
    pattern $mRPL_STATSLINKINFO :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSLINKINFO :: ReplyCode
    RPL_STATSLINKINFO           = ReplyCode 211
    pattern $mRPL_STATSCOMMANDS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSCOMMANDS :: ReplyCode
    RPL_STATSCOMMANDS           = ReplyCode 212
    pattern $mRPL_STATSCLINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSCLINE :: ReplyCode
    RPL_STATSCLINE              = ReplyCode 213
    pattern $mRPL_STATSNLINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSNLINE :: ReplyCode
    RPL_STATSNLINE              = ReplyCode 214
    pattern $mRPL_STATSILINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSILINE :: ReplyCode
    RPL_STATSILINE              = ReplyCode 215
    pattern $mRPL_STATSKLINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSKLINE :: ReplyCode
    RPL_STATSKLINE              = ReplyCode 216
    pattern $mRPL_STATSQLINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSQLINE :: ReplyCode
    RPL_STATSQLINE              = ReplyCode 217
    pattern $mRPL_STATSYLINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSYLINE :: ReplyCode
    RPL_STATSYLINE              = ReplyCode 218
    pattern $mRPL_ENDOFSTATS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFSTATS :: ReplyCode
    RPL_ENDOFSTATS              = ReplyCode 219
    pattern $mRPL_STATSPLINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSPLINE :: ReplyCode
    RPL_STATSPLINE              = ReplyCode 220
    pattern $mRPL_UMODEIS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_UMODEIS :: ReplyCode
    RPL_UMODEIS                 = ReplyCode 221
    pattern $mRPL_SQLINE_NICK :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_SQLINE_NICK :: ReplyCode
    RPL_SQLINE_NICK             = ReplyCode 222
    pattern $mRPL_STATSDLINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSDLINE :: ReplyCode
    RPL_STATSDLINE              = ReplyCode 225
    pattern $mRPL_STATSCOUNT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSCOUNT :: ReplyCode
    RPL_STATSCOUNT              = ReplyCode 226
    pattern $mRPL_SERVICEINFO :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_SERVICEINFO :: ReplyCode
    RPL_SERVICEINFO             = ReplyCode 231
    pattern $mRPL_ENDOFSERVICES :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFSERVICES :: ReplyCode
    RPL_ENDOFSERVICES           = ReplyCode 232
    pattern $mRPL_SERVICE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_SERVICE :: ReplyCode
    RPL_SERVICE                 = ReplyCode 233
    pattern $mRPL_SERVLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_SERVLIST :: ReplyCode
    RPL_SERVLIST                = ReplyCode 234
    pattern $mRPL_SERVLISTEND :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_SERVLISTEND :: ReplyCode
    RPL_SERVLISTEND             = ReplyCode 235
    pattern $mRPL_STATSVERBOSE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSVERBOSE :: ReplyCode
    RPL_STATSVERBOSE            = ReplyCode 236
    pattern $mRPL_STATSIAUTH :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSIAUTH :: ReplyCode
    RPL_STATSIAUTH              = ReplyCode 239
    pattern $mRPL_STATSLLINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSLLINE :: ReplyCode
    RPL_STATSLLINE              = ReplyCode 241
    pattern $mRPL_STATSUPTIME :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSUPTIME :: ReplyCode
    RPL_STATSUPTIME             = ReplyCode 242
    pattern $mRPL_STATSOLINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSOLINE :: ReplyCode
    RPL_STATSOLINE              = ReplyCode 243
    pattern $mRPL_STATSHLINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSHLINE :: ReplyCode
    RPL_STATSHLINE              = ReplyCode 244
    pattern $mRPL_STATSSLINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSSLINE :: ReplyCode
    RPL_STATSSLINE              = ReplyCode 245
    pattern $mRPL_STATSPING :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSPING :: ReplyCode
    RPL_STATSPING               = ReplyCode 246
    pattern $mRPL_STATSXLINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSXLINE :: ReplyCode
    RPL_STATSXLINE              = ReplyCode 247
    pattern $mRPL_STATSULINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSULINE :: ReplyCode
    RPL_STATSULINE              = ReplyCode 248
    pattern $mRPL_STATSDEBUG :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSDEBUG :: ReplyCode
    RPL_STATSDEBUG              = ReplyCode 249
    pattern $mRPL_STATSCONN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSCONN :: ReplyCode
    RPL_STATSCONN               = ReplyCode 250
    pattern $mRPL_LUSERCLIENT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_LUSERCLIENT :: ReplyCode
    RPL_LUSERCLIENT             = ReplyCode 251
    pattern $mRPL_LUSEROP :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_LUSEROP :: ReplyCode
    RPL_LUSEROP                 = ReplyCode 252
    pattern $mRPL_LUSERUNKNOWN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_LUSERUNKNOWN :: ReplyCode
    RPL_LUSERUNKNOWN            = ReplyCode 253
    pattern $mRPL_LUSERCHANNELS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_LUSERCHANNELS :: ReplyCode
    RPL_LUSERCHANNELS           = ReplyCode 254
    pattern $mRPL_LUSERME :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_LUSERME :: ReplyCode
    RPL_LUSERME                 = ReplyCode 255
    pattern $mRPL_ADMINME :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ADMINME :: ReplyCode
    RPL_ADMINME                 = ReplyCode 256
    pattern $mRPL_ADMINLOC1 :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ADMINLOC1 :: ReplyCode
    RPL_ADMINLOC1               = ReplyCode 257
    pattern $mRPL_ADMINLOC2 :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ADMINLOC2 :: ReplyCode
    RPL_ADMINLOC2               = ReplyCode 258
    pattern $mRPL_ADMINEMAIL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ADMINEMAIL :: ReplyCode
    RPL_ADMINEMAIL              = ReplyCode 259
    pattern $mRPL_TRACELOG :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TRACELOG :: ReplyCode
    RPL_TRACELOG                = ReplyCode 261
    pattern $mRPL_ENDOFTRACE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFTRACE :: ReplyCode
    RPL_ENDOFTRACE              = ReplyCode 262
    pattern $mRPL_LOAD2HI :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_LOAD2HI :: ReplyCode
    RPL_LOAD2HI                 = ReplyCode 263
    pattern $mRPL_LOCALUSERS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_LOCALUSERS :: ReplyCode
    RPL_LOCALUSERS              = ReplyCode 265
    pattern $mRPL_GLOBALUSERS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_GLOBALUSERS :: ReplyCode
    RPL_GLOBALUSERS             = ReplyCode 266
    pattern $mRPL_START_NETSTAT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_START_NETSTAT :: ReplyCode
    RPL_START_NETSTAT           = ReplyCode 267
    pattern $mRPL_NETSTAT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_NETSTAT :: ReplyCode
    RPL_NETSTAT                 = ReplyCode 268
    pattern $mRPL_END_NETSTAT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_END_NETSTAT :: ReplyCode
    RPL_END_NETSTAT             = ReplyCode 269
    pattern $mRPL_PRIVS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_PRIVS :: ReplyCode
    RPL_PRIVS                   = ReplyCode 270
    pattern $mRPL_SILELIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_SILELIST :: ReplyCode
    RPL_SILELIST                = ReplyCode 271
    pattern $mRPL_ENDOFSILELIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFSILELIST :: ReplyCode
    RPL_ENDOFSILELIST           = ReplyCode 272
    pattern $mRPL_NOTIFY :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_NOTIFY :: ReplyCode
    RPL_NOTIFY                  = ReplyCode 273
    pattern $mRPL_ENDNOTIFY :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDNOTIFY :: ReplyCode
    RPL_ENDNOTIFY               = ReplyCode 274
    pattern $mRPL_STATSDELTA :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STATSDELTA :: ReplyCode
    RPL_STATSDELTA              = ReplyCode 274
    pattern $mRPL_WHOISCERTFP :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISCERTFP :: ReplyCode
    RPL_WHOISCERTFP             = ReplyCode 276
    pattern $mRPL_VCHANLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_VCHANLIST :: ReplyCode
    RPL_VCHANLIST               = ReplyCode 277
    pattern $mRPL_VCHANHELP :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_VCHANHELP :: ReplyCode
    RPL_VCHANHELP               = ReplyCode 278
    pattern $mRPL_GLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_GLIST :: ReplyCode
    RPL_GLIST                   = ReplyCode 280
    pattern $mRPL_ACCEPTLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ACCEPTLIST :: ReplyCode
    RPL_ACCEPTLIST              = ReplyCode 281
    pattern $mRPL_ENDOFACCEPT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFACCEPT :: ReplyCode
    RPL_ENDOFACCEPT             = ReplyCode 282
    pattern $mRPL_ENDOFJUPELIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFJUPELIST :: ReplyCode
    RPL_ENDOFJUPELIST           = ReplyCode 283
    pattern $mRPL_FEATURE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_FEATURE :: ReplyCode
    RPL_FEATURE                 = ReplyCode 284
    pattern $mRPL_DATASTR :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_DATASTR :: ReplyCode
    RPL_DATASTR                 = ReplyCode 290
    pattern $mRPL_END_CHANINFO :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_END_CHANINFO :: ReplyCode
    RPL_END_CHANINFO            = ReplyCode 299
    pattern $mRPL_NONE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_NONE :: ReplyCode
    RPL_NONE                    = ReplyCode 300
    pattern $mRPL_AWAY :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_AWAY :: ReplyCode
    RPL_AWAY                    = ReplyCode 301
    pattern $mRPL_USERHOST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_USERHOST :: ReplyCode
    RPL_USERHOST                = ReplyCode 302
    pattern $mRPL_ISON :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ISON :: ReplyCode
    RPL_ISON                    = ReplyCode 303
    pattern $mRPL_TEXT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TEXT :: ReplyCode
    RPL_TEXT                    = ReplyCode 304
    pattern $mRPL_UNAWAY :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_UNAWAY :: ReplyCode
    RPL_UNAWAY                  = ReplyCode 305
    pattern $mRPL_NOWAWAY :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_NOWAWAY :: ReplyCode
    RPL_NOWAWAY                 = ReplyCode 306
    pattern $mRPL_WHOISREGNICK :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISREGNICK :: ReplyCode
    RPL_WHOISREGNICK            = ReplyCode 307
    pattern $mRPL_SUSERHOST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_SUSERHOST :: ReplyCode
    RPL_SUSERHOST               = ReplyCode 307
    pattern $mRPL_NOTIFYACTION :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_NOTIFYACTION :: ReplyCode
    RPL_NOTIFYACTION            = ReplyCode 308
    pattern $mRPL_WHOISADMIN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISADMIN :: ReplyCode
    RPL_WHOISADMIN              = ReplyCode 308
    pattern $mRPL_NICKTRACE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_NICKTRACE :: ReplyCode
    RPL_NICKTRACE               = ReplyCode 309
    pattern $mRPL_WHOISSADMIN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISSADMIN :: ReplyCode
    RPL_WHOISSADMIN             = ReplyCode 309
    pattern $mRPL_WHOISHELPER :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISHELPER :: ReplyCode
    RPL_WHOISHELPER             = ReplyCode 309
    pattern $mRPL_WHOISHELPOP :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISHELPOP :: ReplyCode
    RPL_WHOISHELPOP             = ReplyCode 310
    pattern $mRPL_WHOISUSER :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISUSER :: ReplyCode
    RPL_WHOISUSER               = ReplyCode 311
    pattern $mRPL_WHOISSERVER :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISSERVER :: ReplyCode
    RPL_WHOISSERVER             = ReplyCode 312
    pattern $mRPL_WHOISOPERATOR :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISOPERATOR :: ReplyCode
    RPL_WHOISOPERATOR           = ReplyCode 313
    pattern $mRPL_WHOWASUSER :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOWASUSER :: ReplyCode
    RPL_WHOWASUSER              = ReplyCode 314
    pattern $mRPL_ENDOFWHO :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFWHO :: ReplyCode
    RPL_ENDOFWHO                = ReplyCode 315
    pattern $mRPL_WHOISCHANOP :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISCHANOP :: ReplyCode
    RPL_WHOISCHANOP             = ReplyCode 316
    pattern $mRPL_WHOISIDLE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISIDLE :: ReplyCode
    RPL_WHOISIDLE               = ReplyCode 317
    pattern $mRPL_ENDOFWHOIS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFWHOIS :: ReplyCode
    RPL_ENDOFWHOIS              = ReplyCode 318
    pattern $mRPL_WHOISCHANNELS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISCHANNELS :: ReplyCode
    RPL_WHOISCHANNELS           = ReplyCode 319
    pattern $mRPL_WHOISSPECIAL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISSPECIAL :: ReplyCode
    RPL_WHOISSPECIAL            = ReplyCode 320
    pattern $mRPL_LISTSTART :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_LISTSTART :: ReplyCode
    RPL_LISTSTART               = ReplyCode 321
    pattern $mRPL_LIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_LIST :: ReplyCode
    RPL_LIST                    = ReplyCode 322
    pattern $mRPL_LISTEND :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_LISTEND :: ReplyCode
    RPL_LISTEND                 = ReplyCode 323
    pattern $mRPL_CHANNELMODEIS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_CHANNELMODEIS :: ReplyCode
    RPL_CHANNELMODEIS           = ReplyCode 324
    pattern $mRPL_CHANNELMLOCKIS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_CHANNELMLOCKIS :: ReplyCode
    RPL_CHANNELMLOCKIS          = ReplyCode 325
    pattern $mRPL_NOCHANPASS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_NOCHANPASS :: ReplyCode
    RPL_NOCHANPASS              = ReplyCode 326
    pattern $mRPL_CHPASSUNKNOWN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_CHPASSUNKNOWN :: ReplyCode
    RPL_CHPASSUNKNOWN           = ReplyCode 327
    pattern $mRPL_CHANNEL_URL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_CHANNEL_URL :: ReplyCode
    RPL_CHANNEL_URL             = ReplyCode 328
    pattern $mRPL_CREATIONTIME :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_CREATIONTIME :: ReplyCode
    RPL_CREATIONTIME            = ReplyCode 329
    pattern $mRPL_WHOISACCOUNT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISACCOUNT :: ReplyCode
    RPL_WHOISACCOUNT            = ReplyCode 330
    pattern $mRPL_NOTOPIC :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_NOTOPIC :: ReplyCode
    RPL_NOTOPIC                 = ReplyCode 331
    pattern $mRPL_TOPIC :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TOPIC :: ReplyCode
    RPL_TOPIC                   = ReplyCode 332
    pattern $mRPL_TOPICWHOTIME :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TOPICWHOTIME :: ReplyCode
    RPL_TOPICWHOTIME            = ReplyCode 333
    pattern $mRPL_LISTUSAGE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_LISTUSAGE :: ReplyCode
    RPL_LISTUSAGE               = ReplyCode 334
    pattern $mRPL_COMMANDSYNTAX :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_COMMANDSYNTAX :: ReplyCode
    RPL_COMMANDSYNTAX           = ReplyCode 334
    pattern $mRPL_LISTSYNTAX :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_LISTSYNTAX :: ReplyCode
    RPL_LISTSYNTAX              = ReplyCode 334
    pattern $mRPL_WHOISTEXT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISTEXT :: ReplyCode
    RPL_WHOISTEXT               = ReplyCode 337
    pattern $mRPL_WHOISACTUALLY :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISACTUALLY :: ReplyCode
    RPL_WHOISACTUALLY           = ReplyCode 338
    pattern $mRPL_BADCHANPASS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_BADCHANPASS :: ReplyCode
    RPL_BADCHANPASS             = ReplyCode 339
    pattern $mRPL_INVITING :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_INVITING :: ReplyCode
    RPL_INVITING                = ReplyCode 341
    pattern $mRPL_SUMMONING :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_SUMMONING :: ReplyCode
    RPL_SUMMONING               = ReplyCode 342
    pattern $mRPL_INVITED :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_INVITED :: ReplyCode
    RPL_INVITED                 = ReplyCode 345
    pattern $mRPL_INVEXLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_INVEXLIST :: ReplyCode
    RPL_INVEXLIST               = ReplyCode 346
    pattern $mRPL_ENDOFINVEXLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFINVEXLIST :: ReplyCode
    RPL_ENDOFINVEXLIST          = ReplyCode 347
    pattern $mRPL_EXCEPTLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_EXCEPTLIST :: ReplyCode
    RPL_EXCEPTLIST              = ReplyCode 348
    pattern $mRPL_ENDOFEXCEPTLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFEXCEPTLIST :: ReplyCode
    RPL_ENDOFEXCEPTLIST         = ReplyCode 349
    pattern $mRPL_VERSION :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_VERSION :: ReplyCode
    RPL_VERSION                 = ReplyCode 351
    pattern $mRPL_WHOREPLY :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOREPLY :: ReplyCode
    RPL_WHOREPLY                = ReplyCode 352
    pattern $mRPL_NAMREPLY :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_NAMREPLY :: ReplyCode
    RPL_NAMREPLY                = ReplyCode 353
    pattern $mRPL_WHOSPCRPL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOSPCRPL :: ReplyCode
    RPL_WHOSPCRPL               = ReplyCode 354
    pattern $mRPL_NAMREPLY_ :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_NAMREPLY_ :: ReplyCode
    RPL_NAMREPLY_               = ReplyCode 355
    pattern $mRPL_WHOWASREAL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOWASREAL :: ReplyCode
    RPL_WHOWASREAL              = ReplyCode 360
    pattern $mRPL_KILLDONE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_KILLDONE :: ReplyCode
    RPL_KILLDONE                = ReplyCode 361
    pattern $mRPL_CLOSING :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_CLOSING :: ReplyCode
    RPL_CLOSING                 = ReplyCode 362
    pattern $mRPL_CLOSEEND :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_CLOSEEND :: ReplyCode
    RPL_CLOSEEND                = ReplyCode 363
    pattern $mRPL_LINKS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_LINKS :: ReplyCode
    RPL_LINKS                   = ReplyCode 364
    pattern $mRPL_ENDOFLINKS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFLINKS :: ReplyCode
    RPL_ENDOFLINKS              = ReplyCode 365
    pattern $mRPL_ENDOFNAMES :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFNAMES :: ReplyCode
    RPL_ENDOFNAMES              = ReplyCode 366
    pattern $mRPL_BANLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_BANLIST :: ReplyCode
    RPL_BANLIST                 = ReplyCode 367
    pattern $mRPL_ENDOFBANLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFBANLIST :: ReplyCode
    RPL_ENDOFBANLIST            = ReplyCode 368
    pattern $mRPL_ENDOFWHOWAS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFWHOWAS :: ReplyCode
    RPL_ENDOFWHOWAS             = ReplyCode 369
    pattern $mRPL_INFO :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_INFO :: ReplyCode
    RPL_INFO                    = ReplyCode 371
    pattern $mRPL_MOTD :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_MOTD :: ReplyCode
    RPL_MOTD                    = ReplyCode 372
    pattern $mRPL_INFOSTART :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_INFOSTART :: ReplyCode
    RPL_INFOSTART               = ReplyCode 373
    pattern $mRPL_ENDOFINFO :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFINFO :: ReplyCode
    RPL_ENDOFINFO               = ReplyCode 374
    pattern $mRPL_MOTDSTART :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_MOTDSTART :: ReplyCode
    RPL_MOTDSTART               = ReplyCode 375
    pattern $mRPL_ENDOFMOTD :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFMOTD :: ReplyCode
    RPL_ENDOFMOTD               = ReplyCode 376
    pattern $mRPL_WHOISHOST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISHOST :: ReplyCode
    RPL_WHOISHOST               = ReplyCode 378
    pattern $mRPL_WHOISMODES :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISMODES :: ReplyCode
    RPL_WHOISMODES              = ReplyCode 379
    pattern $mRPL_YOUREOPER :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_YOUREOPER :: ReplyCode
    RPL_YOUREOPER               = ReplyCode 381
    pattern $mRPL_REHASHING :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_REHASHING :: ReplyCode
    RPL_REHASHING               = ReplyCode 382
    pattern $mRPL_YOURESERVICE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_YOURESERVICE :: ReplyCode
    RPL_YOURESERVICE            = ReplyCode 383
    pattern $mRPL_MYPORTIS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_MYPORTIS :: ReplyCode
    RPL_MYPORTIS                = ReplyCode 384
    pattern $mRPL_NOTOPERANYMORE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_NOTOPERANYMORE :: ReplyCode
    RPL_NOTOPERANYMORE          = ReplyCode 385
    pattern $mRPL_RSACHALLENGE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_RSACHALLENGE :: ReplyCode
    RPL_RSACHALLENGE            = ReplyCode 386
    pattern $mRPL_TIME :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TIME :: ReplyCode
    RPL_TIME                    = ReplyCode 391
    pattern $mRPL_USERSSTART :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_USERSSTART :: ReplyCode
    RPL_USERSSTART              = ReplyCode 392
    pattern $mRPL_USERS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_USERS :: ReplyCode
    RPL_USERS                   = ReplyCode 393
    pattern $mRPL_ENDOFUSERS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFUSERS :: ReplyCode
    RPL_ENDOFUSERS              = ReplyCode 394
    pattern $mRPL_NOUSERS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_NOUSERS :: ReplyCode
    RPL_NOUSERS                 = ReplyCode 395
    pattern $mRPL_HOSTHIDDEN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_HOSTHIDDEN :: ReplyCode
    RPL_HOSTHIDDEN              = ReplyCode 396
    pattern $mERR_UNKNOWNERROR :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_UNKNOWNERROR :: ReplyCode
    ERR_UNKNOWNERROR            = ReplyCode 400
    pattern $mERR_NOSUCHNICK :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOSUCHNICK :: ReplyCode
    ERR_NOSUCHNICK              = ReplyCode 401
    pattern $mERR_NOSUCHSERVER :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOSUCHSERVER :: ReplyCode
    ERR_NOSUCHSERVER            = ReplyCode 402
    pattern $mERR_NOSUCHCHANNEL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOSUCHCHANNEL :: ReplyCode
    ERR_NOSUCHCHANNEL           = ReplyCode 403
    pattern $mERR_CANNOTSENDTOCHAN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_CANNOTSENDTOCHAN :: ReplyCode
    ERR_CANNOTSENDTOCHAN        = ReplyCode 404
    pattern $mERR_TOOMANYCHANNELS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_TOOMANYCHANNELS :: ReplyCode
    ERR_TOOMANYCHANNELS         = ReplyCode 405
    pattern $mERR_WASNOSUCHNICK :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_WASNOSUCHNICK :: ReplyCode
    ERR_WASNOSUCHNICK           = ReplyCode 406
    pattern $mERR_TOOMANYTARGETS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_TOOMANYTARGETS :: ReplyCode
    ERR_TOOMANYTARGETS          = ReplyCode 407
    pattern $mERR_NOORIGIN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOORIGIN :: ReplyCode
    ERR_NOORIGIN                = ReplyCode 409
    pattern $mERR_INVALIDCAPCMD :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_INVALIDCAPCMD :: ReplyCode
    ERR_INVALIDCAPCMD           = ReplyCode 410
    pattern $mERR_NORECIPIENT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NORECIPIENT :: ReplyCode
    ERR_NORECIPIENT             = ReplyCode 411
    pattern $mERR_NOTEXTTOSEND :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOTEXTTOSEND :: ReplyCode
    ERR_NOTEXTTOSEND            = ReplyCode 412
    pattern $mERR_NOTOPLEVEL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOTOPLEVEL :: ReplyCode
    ERR_NOTOPLEVEL              = ReplyCode 413
    pattern $mERR_WILDTOPLEVEL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_WILDTOPLEVEL :: ReplyCode
    ERR_WILDTOPLEVEL            = ReplyCode 414
    pattern $mERR_MSGNEEDREGGEDNICK :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_MSGNEEDREGGEDNICK :: ReplyCode
    ERR_MSGNEEDREGGEDNICK       = ReplyCode 415
    pattern $mERR_TOOMANYMATCHES :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_TOOMANYMATCHES :: ReplyCode
    ERR_TOOMANYMATCHES          = ReplyCode 416
    pattern $mERR_LENGTHTRUNCATED :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_LENGTHTRUNCATED :: ReplyCode
    ERR_LENGTHTRUNCATED         = ReplyCode 419
    pattern $mERR_UNKNOWNCOMMAND :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_UNKNOWNCOMMAND :: ReplyCode
    ERR_UNKNOWNCOMMAND          = ReplyCode 421
    pattern $mERR_NOMOTD :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOMOTD :: ReplyCode
    ERR_NOMOTD                  = ReplyCode 422
    pattern $mERR_NOADMININFO :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOADMININFO :: ReplyCode
    ERR_NOADMININFO             = ReplyCode 423
    pattern $mERR_FILEERROR :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_FILEERROR :: ReplyCode
    ERR_FILEERROR               = ReplyCode 424
    pattern $mERR_NOOPERMOTD :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOOPERMOTD :: ReplyCode
    ERR_NOOPERMOTD              = ReplyCode 425
    pattern $mERR_TOOMANYAWAY :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_TOOMANYAWAY :: ReplyCode
    ERR_TOOMANYAWAY             = ReplyCode 429
    pattern $mERR_EVENTNICKCHANGE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_EVENTNICKCHANGE :: ReplyCode
    ERR_EVENTNICKCHANGE         = ReplyCode 430
    pattern $mERR_NONICKNAMEGIVEN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NONICKNAMEGIVEN :: ReplyCode
    ERR_NONICKNAMEGIVEN         = ReplyCode 431
    pattern $mERR_ERRONEUSNICKNAME :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_ERRONEUSNICKNAME :: ReplyCode
    ERR_ERRONEUSNICKNAME        = ReplyCode 432
    pattern $mERR_NICKNAMEINUSE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NICKNAMEINUSE :: ReplyCode
    ERR_NICKNAMEINUSE           = ReplyCode 433
    pattern $mERR_SERVICENAMEINUSE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_SERVICENAMEINUSE :: ReplyCode
    ERR_SERVICENAMEINUSE        = ReplyCode 434
    pattern $mERR_NORULES :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NORULES :: ReplyCode
    ERR_NORULES                 = ReplyCode 434
    pattern $mERR_BANNICKCHANGE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_BANNICKCHANGE :: ReplyCode
    ERR_BANNICKCHANGE           = ReplyCode 435
    pattern $mERR_NICKCOLLISION :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NICKCOLLISION :: ReplyCode
    ERR_NICKCOLLISION           = ReplyCode 436
    pattern $mERR_UNAVAILRESOURCE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_UNAVAILRESOURCE :: ReplyCode
    ERR_UNAVAILRESOURCE         = ReplyCode 437
    pattern $mERR_NICKTOOFAST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NICKTOOFAST :: ReplyCode
    ERR_NICKTOOFAST             = ReplyCode 438
    pattern $mERR_TARGETTOOFAST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_TARGETTOOFAST :: ReplyCode
    ERR_TARGETTOOFAST           = ReplyCode 439
    pattern $mERR_SERVICESDOWN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_SERVICESDOWN :: ReplyCode
    ERR_SERVICESDOWN            = ReplyCode 440
    pattern $mERR_USERNOTINCHANNEL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_USERNOTINCHANNEL :: ReplyCode
    ERR_USERNOTINCHANNEL        = ReplyCode 441
    pattern $mERR_NOTONCHANNEL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOTONCHANNEL :: ReplyCode
    ERR_NOTONCHANNEL            = ReplyCode 442
    pattern $mERR_USERONCHANNEL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_USERONCHANNEL :: ReplyCode
    ERR_USERONCHANNEL           = ReplyCode 443
    pattern $mERR_NOLOGIN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOLOGIN :: ReplyCode
    ERR_NOLOGIN                 = ReplyCode 444
    pattern $mERR_SUMMONDISABLED :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_SUMMONDISABLED :: ReplyCode
    ERR_SUMMONDISABLED          = ReplyCode 445
    pattern $mERR_USERSDISABLED :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_USERSDISABLED :: ReplyCode
    ERR_USERSDISABLED           = ReplyCode 446
    pattern $mERR_NONICKCHANGE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NONICKCHANGE :: ReplyCode
    ERR_NONICKCHANGE            = ReplyCode 447
    pattern $mERR_NOTIMPLEMENTED :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOTIMPLEMENTED :: ReplyCode
    ERR_NOTIMPLEMENTED          = ReplyCode 449
    pattern $mERR_NOTREGISTERED :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOTREGISTERED :: ReplyCode
    ERR_NOTREGISTERED           = ReplyCode 451
    pattern $mERR_IDCOLLISION :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_IDCOLLISION :: ReplyCode
    ERR_IDCOLLISION             = ReplyCode 452
    pattern $mERR_NICKLOST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NICKLOST :: ReplyCode
    ERR_NICKLOST                = ReplyCode 453
    pattern $mERR_HOSTILENAME :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_HOSTILENAME :: ReplyCode
    ERR_HOSTILENAME             = ReplyCode 455
    pattern $mERR_ACCEPTFULL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_ACCEPTFULL :: ReplyCode
    ERR_ACCEPTFULL              = ReplyCode 456
    pattern $mERR_ACCEPTEXIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_ACCEPTEXIST :: ReplyCode
    ERR_ACCEPTEXIST             = ReplyCode 457
    pattern $mERR_ACCEPTNOT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_ACCEPTNOT :: ReplyCode
    ERR_ACCEPTNOT               = ReplyCode 458
    pattern $mERR_NOHIDING :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOHIDING :: ReplyCode
    ERR_NOHIDING                = ReplyCode 459
    pattern $mERR_NOTFORHALFOPS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOTFORHALFOPS :: ReplyCode
    ERR_NOTFORHALFOPS           = ReplyCode 460
    pattern $mERR_NEEDMOREPARAMS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NEEDMOREPARAMS :: ReplyCode
    ERR_NEEDMOREPARAMS          = ReplyCode 461
    pattern $mERR_ALREADYREGISTERED :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_ALREADYREGISTERED :: ReplyCode
    ERR_ALREADYREGISTERED       = ReplyCode 462
    pattern $mERR_NOPERMFORHOST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOPERMFORHOST :: ReplyCode
    ERR_NOPERMFORHOST           = ReplyCode 463
    pattern $mERR_PASSWDMISMATCH :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_PASSWDMISMATCH :: ReplyCode
    ERR_PASSWDMISMATCH          = ReplyCode 464
    pattern $mERR_YOUREBANNEDCREEP :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_YOUREBANNEDCREEP :: ReplyCode
    ERR_YOUREBANNEDCREEP        = ReplyCode 465
    pattern $mERR_YOUWILLBEBANNED :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_YOUWILLBEBANNED :: ReplyCode
    ERR_YOUWILLBEBANNED         = ReplyCode 466
    pattern $mERR_KEYSET :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_KEYSET :: ReplyCode
    ERR_KEYSET                  = ReplyCode 467
    pattern $mERR_INVALIDUSERNAME :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_INVALIDUSERNAME :: ReplyCode
    ERR_INVALIDUSERNAME         = ReplyCode 468
    pattern $mERR_ONLYSERVERSCANCHANGE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_ONLYSERVERSCANCHANGE :: ReplyCode
    ERR_ONLYSERVERSCANCHANGE    = ReplyCode 468
    pattern $mERR_LINKSET :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_LINKSET :: ReplyCode
    ERR_LINKSET                 = ReplyCode 469
    pattern $mERR_LINKCHANNEL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_LINKCHANNEL :: ReplyCode
    ERR_LINKCHANNEL             = ReplyCode 470
    pattern $mERR_CHANNELISFULL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_CHANNELISFULL :: ReplyCode
    ERR_CHANNELISFULL           = ReplyCode 471
    pattern $mERR_UNKNOWNMODE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_UNKNOWNMODE :: ReplyCode
    ERR_UNKNOWNMODE             = ReplyCode 472
    pattern $mERR_INVITEONLYCHAN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_INVITEONLYCHAN :: ReplyCode
    ERR_INVITEONLYCHAN          = ReplyCode 473
    pattern $mERR_BANNEDFROMCHAN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_BANNEDFROMCHAN :: ReplyCode
    ERR_BANNEDFROMCHAN          = ReplyCode 474
    pattern $mERR_BADCHANNELKEY :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_BADCHANNELKEY :: ReplyCode
    ERR_BADCHANNELKEY           = ReplyCode 475
    pattern $mERR_BADCHANMASK :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_BADCHANMASK :: ReplyCode
    ERR_BADCHANMASK             = ReplyCode 476
    pattern $mERR_NEEDREGGEDNICK :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NEEDREGGEDNICK :: ReplyCode
    ERR_NEEDREGGEDNICK          = ReplyCode 477
    pattern $mERR_BANLISTFULL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_BANLISTFULL :: ReplyCode
    ERR_BANLISTFULL             = ReplyCode 478
    pattern $mERR_BADCHANNAME :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_BADCHANNAME :: ReplyCode
    ERR_BADCHANNAME             = ReplyCode 479
    pattern $mERR_THROTTLE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_THROTTLE :: ReplyCode
    ERR_THROTTLE                = ReplyCode 480
    pattern $mERR_NOPRIVILEGES :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOPRIVILEGES :: ReplyCode
    ERR_NOPRIVILEGES            = ReplyCode 481
    pattern $mERR_CHANOPRIVSNEEDED :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_CHANOPRIVSNEEDED :: ReplyCode
    ERR_CHANOPRIVSNEEDED        = ReplyCode 482
    pattern $mERR_CANTKILLSERVER :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_CANTKILLSERVER :: ReplyCode
    ERR_CANTKILLSERVER          = ReplyCode 483
    pattern $mERR_ISCHANSERVICE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_ISCHANSERVICE :: ReplyCode
    ERR_ISCHANSERVICE           = ReplyCode 484
    pattern $mERR_BANNEDNICK :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_BANNEDNICK :: ReplyCode
    ERR_BANNEDNICK              = ReplyCode 485
    pattern $mERR_NONONREG :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NONONREG :: ReplyCode
    ERR_NONONREG                = ReplyCode 486
    pattern $mERR_TSLESSCHAN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_TSLESSCHAN :: ReplyCode
    ERR_TSLESSCHAN              = ReplyCode 488
    pattern $mERR_VOICENEEDED :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_VOICENEEDED :: ReplyCode
    ERR_VOICENEEDED             = ReplyCode 489
    pattern $mERR_NOOPERHOST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOOPERHOST :: ReplyCode
    ERR_NOOPERHOST              = ReplyCode 491
    pattern $mERR_NOSERVICEHOST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOSERVICEHOST :: ReplyCode
    ERR_NOSERVICEHOST           = ReplyCode 492
    pattern $mERR_NOFEATURE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOFEATURE :: ReplyCode
    ERR_NOFEATURE               = ReplyCode 493
    pattern $mERR_OWNMODE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_OWNMODE :: ReplyCode
    ERR_OWNMODE                 = ReplyCode 494
    pattern $mERR_BADLOGTYPE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_BADLOGTYPE :: ReplyCode
    ERR_BADLOGTYPE              = ReplyCode 495
    pattern $mERR_BADLOGSYS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_BADLOGSYS :: ReplyCode
    ERR_BADLOGSYS               = ReplyCode 496
    pattern $mERR_BADLOGVALUE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_BADLOGVALUE :: ReplyCode
    ERR_BADLOGVALUE             = ReplyCode 497
    pattern $mERR_ISOPERLCHAN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_ISOPERLCHAN :: ReplyCode
    ERR_ISOPERLCHAN             = ReplyCode 498
    pattern $mERR_CHANOWNPRIVNEEDED :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_CHANOWNPRIVNEEDED :: ReplyCode
    ERR_CHANOWNPRIVNEEDED       = ReplyCode 499
    pattern $mERR_UMODEUNKNOWNFLAG :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_UMODEUNKNOWNFLAG :: ReplyCode
    ERR_UMODEUNKNOWNFLAG        = ReplyCode 501
    pattern $mERR_USERSDONTMATCH :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_USERSDONTMATCH :: ReplyCode
    ERR_USERSDONTMATCH          = ReplyCode 502
    pattern $mERR_GHOSTEDCLIENT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_GHOSTEDCLIENT :: ReplyCode
    ERR_GHOSTEDCLIENT           = ReplyCode 503
    pattern $mERR_USERNOTONSERV :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_USERNOTONSERV :: ReplyCode
    ERR_USERNOTONSERV           = ReplyCode 504
    pattern $mERR_SILELISTFULL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_SILELISTFULL :: ReplyCode
    ERR_SILELISTFULL            = ReplyCode 511
    pattern $mERR_TOOMANYWATCH :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_TOOMANYWATCH :: ReplyCode
    ERR_TOOMANYWATCH            = ReplyCode 512
    pattern $mERR_WRONGPONG :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_WRONGPONG :: ReplyCode
    ERR_WRONGPONG               = ReplyCode 513
    pattern $mERR_BADEXPIRE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_BADEXPIRE :: ReplyCode
    ERR_BADEXPIRE               = ReplyCode 515
    pattern $mERR_DONTCHEAT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_DONTCHEAT :: ReplyCode
    ERR_DONTCHEAT               = ReplyCode 516
    pattern $mERR_DISABLED :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_DISABLED :: ReplyCode
    ERR_DISABLED                = ReplyCode 517
    pattern $mERR_NOINVITE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOINVITE :: ReplyCode
    ERR_NOINVITE                = ReplyCode 518
    pattern $mERR_LONGMASK :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_LONGMASK :: ReplyCode
    ERR_LONGMASK                = ReplyCode 518
    pattern $mERR_ADMONLY :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_ADMONLY :: ReplyCode
    ERR_ADMONLY                 = ReplyCode 519
    pattern $mERR_TOOMANYUSERS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_TOOMANYUSERS :: ReplyCode
    ERR_TOOMANYUSERS            = ReplyCode 519
    pattern $mERR_OPERONLY :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_OPERONLY :: ReplyCode
    ERR_OPERONLY                = ReplyCode 520
    pattern $mERR_MASKTOOWIDE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_MASKTOOWIDE :: ReplyCode
    ERR_MASKTOOWIDE             = ReplyCode 520
    pattern $mERR_WHOTRUNC :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_WHOTRUNC :: ReplyCode
    ERR_WHOTRUNC                = ReplyCode 520
    pattern $mERR_LISTSYNTAX :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_LISTSYNTAX :: ReplyCode
    ERR_LISTSYNTAX              = ReplyCode 521
    pattern $mERR_WHOSYNTAX :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_WHOSYNTAX :: ReplyCode
    ERR_WHOSYNTAX               = ReplyCode 522
    pattern $mERR_WHOLIMEXCEED :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_WHOLIMEXCEED :: ReplyCode
    ERR_WHOLIMEXCEED            = ReplyCode 523
    pattern $mERR_HELPNOTFOUND :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_HELPNOTFOUND :: ReplyCode
    ERR_HELPNOTFOUND            = ReplyCode 524
    pattern $mERR_REMOTEPFX :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_REMOTEPFX :: ReplyCode
    ERR_REMOTEPFX               = ReplyCode 525
    pattern $mERR_PFXUNROUTABLE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_PFXUNROUTABLE :: ReplyCode
    ERR_PFXUNROUTABLE           = ReplyCode 526
    pattern $mERR_BADHOSTMASK :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_BADHOSTMASK :: ReplyCode
    ERR_BADHOSTMASK             = ReplyCode 550
    pattern $mERR_HOSTUNAVAIL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_HOSTUNAVAIL :: ReplyCode
    ERR_HOSTUNAVAIL             = ReplyCode 551
    pattern $mERR_USINGSLINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_USINGSLINE :: ReplyCode
    ERR_USINGSLINE              = ReplyCode 552
    pattern $mERR_STATSSLINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_STATSSLINE :: ReplyCode
    ERR_STATSSLINE              = ReplyCode 553
    pattern $mRPL_LOGON :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_LOGON :: ReplyCode
    RPL_LOGON                   = ReplyCode 600
    pattern $mRPL_LOGOFF :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_LOGOFF :: ReplyCode
    RPL_LOGOFF                  = ReplyCode 601
    pattern $mRPL_WATCHOFF :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WATCHOFF :: ReplyCode
    RPL_WATCHOFF                = ReplyCode 602
    pattern $mRPL_WATCHSTAT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WATCHSTAT :: ReplyCode
    RPL_WATCHSTAT               = ReplyCode 603
    pattern $mRPL_NOWON :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_NOWON :: ReplyCode
    RPL_NOWON                   = ReplyCode 604
    pattern $mRPL_NOWOFF :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_NOWOFF :: ReplyCode
    RPL_NOWOFF                  = ReplyCode 605
    pattern $mRPL_WATCHLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WATCHLIST :: ReplyCode
    RPL_WATCHLIST               = ReplyCode 606
    pattern $mRPL_ENDOFWATCHLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFWATCHLIST :: ReplyCode
    RPL_ENDOFWATCHLIST          = ReplyCode 607
    pattern $mRPL_WATCHCLEAR :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WATCHCLEAR :: ReplyCode
    RPL_WATCHCLEAR              = ReplyCode 608
    pattern $mRPL_ISOPER :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ISOPER :: ReplyCode
    RPL_ISOPER                  = ReplyCode 610
    pattern $mRPL_ISLOCOP :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ISLOCOP :: ReplyCode
    RPL_ISLOCOP                 = ReplyCode 611
    pattern $mRPL_ISNOTOPER :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ISNOTOPER :: ReplyCode
    RPL_ISNOTOPER               = ReplyCode 612
    pattern $mRPL_ENDOFISOPER :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFISOPER :: ReplyCode
    RPL_ENDOFISOPER             = ReplyCode 613
    pattern $mRPL_DCCSTATUS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_DCCSTATUS :: ReplyCode
    RPL_DCCSTATUS               = ReplyCode 617
    pattern $mRPL_DCCLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_DCCLIST :: ReplyCode
    RPL_DCCLIST                 = ReplyCode 618
    pattern $mRPL_ENDOFDCCLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFDCCLIST :: ReplyCode
    RPL_ENDOFDCCLIST            = ReplyCode 619
    pattern $mRPL_WHOWASHOST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOWASHOST :: ReplyCode
    RPL_WHOWASHOST              = ReplyCode 619
    pattern $mRPL_DCCINFO :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_DCCINFO :: ReplyCode
    RPL_DCCINFO                 = ReplyCode 620
    pattern $mRPL_RULES :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_RULES :: ReplyCode
    RPL_RULES                   = ReplyCode 621
    pattern $mRPL_ENDOFO :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFO :: ReplyCode
    RPL_ENDOFO                  = ReplyCode 626
    pattern $mRPL_SETTINGS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_SETTINGS :: ReplyCode
    RPL_SETTINGS                = ReplyCode 630
    pattern $mRPL_ENDOFSETTINGS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFSETTINGS :: ReplyCode
    RPL_ENDOFSETTINGS           = ReplyCode 631
    pattern $mRPL_DUMPING :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_DUMPING :: ReplyCode
    RPL_DUMPING                 = ReplyCode 640
    pattern $mRPL_DUMPRPL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_DUMPRPL :: ReplyCode
    RPL_DUMPRPL                 = ReplyCode 641
    pattern $mRPL_EODUMP :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_EODUMP :: ReplyCode
    RPL_EODUMP                  = ReplyCode 642
    pattern $mRPL_TRACEROUTE_HOP :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TRACEROUTE_HOP :: ReplyCode
    RPL_TRACEROUTE_HOP          = ReplyCode 660
    pattern $mRPL_TRACEROUTE_START :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TRACEROUTE_START :: ReplyCode
    RPL_TRACEROUTE_START        = ReplyCode 661
    pattern $mRPL_MODECHANGEWARN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_MODECHANGEWARN :: ReplyCode
    RPL_MODECHANGEWARN          = ReplyCode 662
    pattern $mRPL_CHANREDIR :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_CHANREDIR :: ReplyCode
    RPL_CHANREDIR               = ReplyCode 663
    pattern $mRPL_SERVMODEIS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_SERVMODEIS :: ReplyCode
    RPL_SERVMODEIS              = ReplyCode 664
    pattern $mRPL_OTHERUMODEIS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_OTHERUMODEIS :: ReplyCode
    RPL_OTHERUMODEIS            = ReplyCode 665
    pattern $mRPL_ENDOF_GENERIC :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOF_GENERIC :: ReplyCode
    RPL_ENDOF_GENERIC           = ReplyCode 666
    pattern $mRPL_STARTTLS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_STARTTLS :: ReplyCode
    RPL_STARTTLS                = ReplyCode 670
    pattern $mRPL_WHOISSECURE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISSECURE :: ReplyCode
    RPL_WHOISSECURE             = ReplyCode 671
    pattern $mRPL_UNKNOWNMODES :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_UNKNOWNMODES :: ReplyCode
    RPL_UNKNOWNMODES            = ReplyCode 672
    pattern $mRPL_CANNOTSETMODES :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_CANNOTSETMODES :: ReplyCode
    RPL_CANNOTSETMODES          = ReplyCode 673
    pattern $mRPL_LUSERSTAFF :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_LUSERSTAFF :: ReplyCode
    RPL_LUSERSTAFF              = ReplyCode 678
    pattern $mRPL_TIMEONSERVERIS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TIMEONSERVERIS :: ReplyCode
    RPL_TIMEONSERVERIS          = ReplyCode 679
    pattern $mRPL_NETWORKS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_NETWORKS :: ReplyCode
    RPL_NETWORKS                = ReplyCode 682
    pattern $mRPL_YOURLANGUAGEIS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_YOURLANGUAGEIS :: ReplyCode
    RPL_YOURLANGUAGEIS          = ReplyCode 687
    pattern $mRPL_LANGUAGE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_LANGUAGE :: ReplyCode
    RPL_LANGUAGE                = ReplyCode 688
    pattern $mRPL_WHOISSTAFF :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISSTAFF :: ReplyCode
    RPL_WHOISSTAFF              = ReplyCode 689
    pattern $mRPL_WHOISLANGUAGE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_WHOISLANGUAGE :: ReplyCode
    RPL_WHOISLANGUAGE           = ReplyCode 690
    pattern $mERR_STARTTLS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_STARTTLS :: ReplyCode
    ERR_STARTTLS                = ReplyCode 691
    pattern $mRPL_MODLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_MODLIST :: ReplyCode
    RPL_MODLIST                 = ReplyCode 702
    pattern $mRPL_ENDOFMODLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFMODLIST :: ReplyCode
    RPL_ENDOFMODLIST            = ReplyCode 703
    pattern $mRPL_HELPSTART :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_HELPSTART :: ReplyCode
    RPL_HELPSTART               = ReplyCode 704
    pattern $mRPL_HELPTXT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_HELPTXT :: ReplyCode
    RPL_HELPTXT                 = ReplyCode 705
    pattern $mRPL_ENDOFHELP :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFHELP :: ReplyCode
    RPL_ENDOFHELP               = ReplyCode 706
    pattern $mERR_TARGCHANGE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_TARGCHANGE :: ReplyCode
    ERR_TARGCHANGE              = ReplyCode 707
    pattern $mRPL_ETRACEFULL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ETRACEFULL :: ReplyCode
    RPL_ETRACEFULL              = ReplyCode 708
    pattern $mRPL_ETRACE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ETRACE :: ReplyCode
    RPL_ETRACE                  = ReplyCode 709
    pattern $mRPL_KNOCK :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_KNOCK :: ReplyCode
    RPL_KNOCK                   = ReplyCode 710
    pattern $mRPL_KNOCKDLVR :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_KNOCKDLVR :: ReplyCode
    RPL_KNOCKDLVR               = ReplyCode 711
    pattern $mERR_TOOMANYKNOCK :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_TOOMANYKNOCK :: ReplyCode
    ERR_TOOMANYKNOCK            = ReplyCode 712
    pattern $mERR_CHANOPEN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_CHANOPEN :: ReplyCode
    ERR_CHANOPEN                = ReplyCode 713
    pattern $mERR_KNOCKONCHAN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_KNOCKONCHAN :: ReplyCode
    ERR_KNOCKONCHAN             = ReplyCode 714
    pattern $mERR_KNOCKDISABLED :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_KNOCKDISABLED :: ReplyCode
    ERR_KNOCKDISABLED           = ReplyCode 715
    pattern $mRPL_TARGUMODEG :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TARGUMODEG :: ReplyCode
    RPL_TARGUMODEG              = ReplyCode 716
    pattern $mRPL_TARGNOTIFY :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TARGNOTIFY :: ReplyCode
    RPL_TARGNOTIFY              = ReplyCode 717
    pattern $mRPL_UMODEGMSG :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_UMODEGMSG :: ReplyCode
    RPL_UMODEGMSG               = ReplyCode 718
    pattern $mRPL_OMOTDSTART :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_OMOTDSTART :: ReplyCode
    RPL_OMOTDSTART              = ReplyCode 720
    pattern $mRPL_OMOTD :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_OMOTD :: ReplyCode
    RPL_OMOTD                   = ReplyCode 721
    pattern $mRPL_ENDOFOMOTD :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFOMOTD :: ReplyCode
    RPL_ENDOFOMOTD              = ReplyCode 722
    pattern $mERR_NOPRIVS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOPRIVS :: ReplyCode
    ERR_NOPRIVS                 = ReplyCode 723
    pattern $mRPL_TESTMASK :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TESTMASK :: ReplyCode
    RPL_TESTMASK                = ReplyCode 724
    pattern $mRPL_TESTLINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TESTLINE :: ReplyCode
    RPL_TESTLINE                = ReplyCode 725
    pattern $mRPL_NOTESTLINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_NOTESTLINE :: ReplyCode
    RPL_NOTESTLINE              = ReplyCode 726
    pattern $mRPL_TESTMASKGECOS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_TESTMASKGECOS :: ReplyCode
    RPL_TESTMASKGECOS           = ReplyCode 727
    pattern $mRPL_QUIETLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_QUIETLIST :: ReplyCode
    RPL_QUIETLIST               = ReplyCode 728
    pattern $mRPL_ENDOFQUIETLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFQUIETLIST :: ReplyCode
    RPL_ENDOFQUIETLIST          = ReplyCode 729
    pattern $mRPL_MONONLINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_MONONLINE :: ReplyCode
    RPL_MONONLINE               = ReplyCode 730
    pattern $mRPL_MONOFFLINE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_MONOFFLINE :: ReplyCode
    RPL_MONOFFLINE              = ReplyCode 731
    pattern $mRPL_MONLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_MONLIST :: ReplyCode
    RPL_MONLIST                 = ReplyCode 732
    pattern $mRPL_ENDOFMONLIST :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFMONLIST :: ReplyCode
    RPL_ENDOFMONLIST            = ReplyCode 733
    pattern $mERR_MONLISTFULL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_MONLISTFULL :: ReplyCode
    ERR_MONLISTFULL             = ReplyCode 734
    pattern $mRPL_RSACHALLENGE2 :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_RSACHALLENGE2 :: ReplyCode
    RPL_RSACHALLENGE2           = ReplyCode 740
    pattern $mRPL_ENDOFRSACHALLENGE2 :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_ENDOFRSACHALLENGE2 :: ReplyCode
    RPL_ENDOFRSACHALLENGE2      = ReplyCode 741
    pattern $mERR_MLOCKRESTRICTED :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_MLOCKRESTRICTED :: ReplyCode
    ERR_MLOCKRESTRICTED         = ReplyCode 742
    pattern $mRPL_SCANMATCHED :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_SCANMATCHED :: ReplyCode
    RPL_SCANMATCHED             = ReplyCode 750
    pattern $mRPL_SCANUMODES :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_SCANUMODES :: ReplyCode
    RPL_SCANUMODES              = ReplyCode 751
    pattern $mRPL_XINFO :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_XINFO :: ReplyCode
    RPL_XINFO                   = ReplyCode 771
    pattern $mRPL_XINFOSTART :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_XINFOSTART :: ReplyCode
    RPL_XINFOSTART              = ReplyCode 773
    pattern $mRPL_XINFOEND :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_XINFOEND :: ReplyCode
    RPL_XINFOEND                = ReplyCode 774
    pattern $mRPL_LOGGEDIN :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_LOGGEDIN :: ReplyCode
    RPL_LOGGEDIN                = ReplyCode 900
    pattern $mRPL_LOGGEDOUT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_LOGGEDOUT :: ReplyCode
    RPL_LOGGEDOUT               = ReplyCode 901
    pattern $mRPL_NICKLOCKED :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_NICKLOCKED :: ReplyCode
    RPL_NICKLOCKED              = ReplyCode 902
    pattern $mRPL_SASLSUCCESS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_SASLSUCCESS :: ReplyCode
    RPL_SASLSUCCESS             = ReplyCode 903
    pattern $mERR_SASLFAIL :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_SASLFAIL :: ReplyCode
    ERR_SASLFAIL                = ReplyCode 904
    pattern $mERR_SASLTOOLONG :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_SASLTOOLONG :: ReplyCode
    ERR_SASLTOOLONG             = ReplyCode 905
    pattern $mERR_SASLABORTED :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_SASLABORTED :: ReplyCode
    ERR_SASLABORTED             = ReplyCode 906
    pattern $mERR_SASLALREADY :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_SASLALREADY :: ReplyCode
    ERR_SASLALREADY             = ReplyCode 907
    pattern $mRPL_SASLMECHS :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bRPL_SASLMECHS :: ReplyCode
    RPL_SASLMECHS               = ReplyCode 908
    pattern $mERR_CANNOTDOCOMMAND :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_CANNOTDOCOMMAND :: ReplyCode
    ERR_CANNOTDOCOMMAND         = ReplyCode 972
    pattern $mERR_CANNOTCHANGEUMODE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_CANNOTCHANGEUMODE :: ReplyCode
    ERR_CANNOTCHANGEUMODE       = ReplyCode 973
    pattern $mERR_CANNOTCHANGECHANMODE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_CANNOTCHANGECHANMODE :: ReplyCode
    ERR_CANNOTCHANGECHANMODE    = ReplyCode 974
    pattern $mERR_CANNOTCHANGESERVERMODE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_CANNOTCHANGESERVERMODE :: ReplyCode
    ERR_CANNOTCHANGESERVERMODE  = ReplyCode 975
    pattern $mERR_CANNOTSENDTONICK :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_CANNOTSENDTONICK :: ReplyCode
    ERR_CANNOTSENDTONICK        = ReplyCode 976
    pattern $mERR_UNKNOWNSERVERMODE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_UNKNOWNSERVERMODE :: ReplyCode
    ERR_UNKNOWNSERVERMODE       = ReplyCode 977
    pattern $mERR_SERVERMODELOCK :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_SERVERMODELOCK :: ReplyCode
    ERR_SERVERMODELOCK          = ReplyCode 979
    pattern $mERR_BADCHARENCODING :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_BADCHARENCODING :: ReplyCode
    ERR_BADCHARENCODING         = ReplyCode 980
    pattern $mERR_TOOMANYLANGUAGES :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_TOOMANYLANGUAGES :: ReplyCode
    ERR_TOOMANYLANGUAGES        = ReplyCode 981
    pattern $mERR_NOLANGUAGE :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NOLANGUAGE :: ReplyCode
    ERR_NOLANGUAGE              = ReplyCode 982
    pattern $mERR_TEXTTOOSHORT :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_TEXTTOOSHORT :: ReplyCode
    ERR_TEXTTOOSHORT            = ReplyCode 983
    pattern $mERR_NUMERIC_ERR :: forall {r}. ReplyCode -> ((# #) -> r) -> ((# #) -> r) -> r
    $bERR_NUMERIC_ERR :: ReplyCode
    ERR_NUMERIC_ERR             = ReplyCode 999

    -- | Information describing the category and human decipherable name of a
    -- reply.
    data ReplyCodeInfo = ReplyCodeInfo
      { ReplyCodeInfo -> ReplyType
    replyCodeType :: !ReplyType -- ^ category
      , ReplyCodeInfo -> Text
    replyCodeText :: !Text      -- ^ human-decipherable name
      }
      deriving (ReplyCodeInfo -> ReplyCodeInfo -> Bool
    (ReplyCodeInfo -> ReplyCodeInfo -> Bool)
    -> (ReplyCodeInfo -> ReplyCodeInfo -> Bool) -> Eq ReplyCodeInfo
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: ReplyCodeInfo -> ReplyCodeInfo -> Bool
    == :: ReplyCodeInfo -> ReplyCodeInfo -> Bool
    $c/= :: ReplyCodeInfo -> ReplyCodeInfo -> Bool
    /= :: ReplyCodeInfo -> ReplyCodeInfo -> Bool
    Eq, Eq ReplyCodeInfo
    Eq ReplyCodeInfo =>
    (ReplyCodeInfo -> ReplyCodeInfo -> Ordering)
    -> (ReplyCodeInfo -> ReplyCodeInfo -> Bool)
    -> (ReplyCodeInfo -> ReplyCodeInfo -> Bool)
    -> (ReplyCodeInfo -> ReplyCodeInfo -> Bool)
    -> (ReplyCodeInfo -> ReplyCodeInfo -> Bool)
    -> (ReplyCodeInfo -> ReplyCodeInfo -> ReplyCodeInfo)
    -> (ReplyCodeInfo -> ReplyCodeInfo -> ReplyCodeInfo)
    -> Ord ReplyCodeInfo
    ReplyCodeInfo -> ReplyCodeInfo -> Bool
    ReplyCodeInfo -> ReplyCodeInfo -> Ordering
    ReplyCodeInfo -> ReplyCodeInfo -> ReplyCodeInfo
    forall a.
    Eq a =>
    (a -> a -> Ordering)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> a)
    -> (a -> a -> a)
    -> Ord a
    $ccompare :: ReplyCodeInfo -> ReplyCodeInfo -> Ordering
    compare :: ReplyCodeInfo -> ReplyCodeInfo -> Ordering
    $c< :: ReplyCodeInfo -> ReplyCodeInfo -> Bool
    < :: ReplyCodeInfo -> ReplyCodeInfo -> Bool
    $c<= :: ReplyCodeInfo -> ReplyCodeInfo -> Bool
    <= :: ReplyCodeInfo -> ReplyCodeInfo -> Bool
    $c> :: ReplyCodeInfo -> ReplyCodeInfo -> Bool
    > :: ReplyCodeInfo -> ReplyCodeInfo -> Bool
    $c>= :: ReplyCodeInfo -> ReplyCodeInfo -> Bool
    >= :: ReplyCodeInfo -> ReplyCodeInfo -> Bool
    $cmax :: ReplyCodeInfo -> ReplyCodeInfo -> ReplyCodeInfo
    max :: ReplyCodeInfo -> ReplyCodeInfo -> ReplyCodeInfo
    $cmin :: ReplyCodeInfo -> ReplyCodeInfo -> ReplyCodeInfo
    min :: ReplyCodeInfo -> ReplyCodeInfo -> ReplyCodeInfo
    Ord, Int -> ReplyCodeInfo -> ShowS
    [ReplyCodeInfo] -> ShowS
    ReplyCodeInfo -> String
    (Int -> ReplyCodeInfo -> ShowS)
    -> (ReplyCodeInfo -> String)
    -> ([ReplyCodeInfo] -> ShowS)
    -> Show ReplyCodeInfo
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> ReplyCodeInfo -> ShowS
    showsPrec :: Int -> ReplyCodeInfo -> ShowS
    $cshow :: ReplyCodeInfo -> String
    show :: ReplyCodeInfo -> String
    $cshowList :: [ReplyCodeInfo] -> ShowS
    showList :: [ReplyCodeInfo] -> ShowS
    Show, ReadPrec [ReplyCodeInfo]
    ReadPrec ReplyCodeInfo
    Int -> ReadS ReplyCodeInfo
    ReadS [ReplyCodeInfo]
    (Int -> ReadS ReplyCodeInfo)
    -> ReadS [ReplyCodeInfo]
    -> ReadPrec ReplyCodeInfo
    -> ReadPrec [ReplyCodeInfo]
    -> Read ReplyCodeInfo
    forall a.
    (Int -> ReadS a)
    -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
    $creadsPrec :: Int -> ReadS ReplyCodeInfo
    readsPrec :: Int -> ReadS ReplyCodeInfo
    $creadList :: ReadS [ReplyCodeInfo]
    readList :: ReadS [ReplyCodeInfo]
    $creadPrec :: ReadPrec ReplyCodeInfo
    readPrec :: ReadPrec ReplyCodeInfo
    $creadListPrec :: ReadPrec [ReplyCodeInfo]
    readListPrec :: ReadPrec [ReplyCodeInfo]
    Read)

    -- | Compute information for a reply code
    replyCodeInfo :: ReplyCode -> ReplyCodeInfo
    replyCodeInfo :: ReplyCode -> ReplyCodeInfo
    replyCodeInfo (ReplyCode Word
    w) =
      case Vector ReplyCodeInfo
    replyCodeInfoTable Vector ReplyCodeInfo -> Int -> Maybe ReplyCodeInfo
    forall a. Vector a -> Int -> Maybe a
    Vector.!? Int
    i of
        Maybe ReplyCodeInfo
    Nothing -> Int -> ReplyCodeInfo
    defaultReplyCodeInfo Int
    i
        Just ReplyCodeInfo
    info -> ReplyCodeInfo
    info
      where
        i :: Int
    i = Word -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Word
    w

    -- | Categorize a reply code using the unknown category and simply showing
    -- the reply code's number as its name.
    defaultReplyCodeInfo :: Int -> ReplyCodeInfo
    defaultReplyCodeInfo :: Int -> ReplyCodeInfo
    defaultReplyCodeInfo = ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    UnknownReply (Text -> ReplyCodeInfo) -> (Int -> Text) -> Int -> ReplyCodeInfo
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . String -> Text
    Text.pack (String -> Text) -> (Int -> String) -> Int -> Text
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Int -> String
    forall a. Show a => a -> String
    show

    -- | Information about reply codes as derived from ircd-seven.
    replyCodeInfoTable :: Vector ReplyCodeInfo
    replyCodeInfoTable :: Vector ReplyCodeInfo
    replyCodeInfoTable
      = (ReplyCodeInfo -> ReplyCodeInfo -> ReplyCodeInfo)
    -> Vector ReplyCodeInfo
    -> Vector (Int, ReplyCodeInfo)
    -> Vector ReplyCodeInfo
    forall a b.
    (a -> b -> a) -> Vector a -> Vector (Int, b) -> Vector a
    Vector.accumulate
          (\ReplyCodeInfo
    _def ReplyCodeInfo
    new -> ReplyCodeInfo
    new)
          (Int -> (Int -> ReplyCodeInfo) -> Vector ReplyCodeInfo
    forall a. Int -> (Int -> a) -> Vector a
    Vector.generate Int
    1000 Int -> ReplyCodeInfo
    defaultReplyCodeInfo)
      (Vector (Int, ReplyCodeInfo) -> Vector ReplyCodeInfo)
    -> Vector (Int, ReplyCodeInfo) -> Vector ReplyCodeInfo
    forall a b. (a -> b) -> a -> b
    $ ((ReplyCode, ReplyCodeInfo) -> (Int, ReplyCodeInfo))
    -> Vector (ReplyCode, ReplyCodeInfo) -> Vector (Int, ReplyCodeInfo)
    forall a b. (a -> b) -> Vector a -> Vector b
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    fmap (\(ReplyCode Word
    code,ReplyCodeInfo
    info) -> (Word -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Word
    code, ReplyCodeInfo
    info))
      (Vector (ReplyCode, ReplyCodeInfo) -> Vector (Int, ReplyCodeInfo))
    -> Vector (ReplyCode, ReplyCodeInfo) -> Vector (Int, ReplyCodeInfo)
    forall a b. (a -> b) -> a -> b
    $ [(ReplyCode, ReplyCodeInfo)] -> Vector (ReplyCode, ReplyCodeInfo)
    forall a. [a] -> Vector a
    Vector.fromList
      [ (ReplyCode
    RPL_WELCOME               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ClientServerReply Text
    "welcome")
      , (ReplyCode
    RPL_YOURHOST              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ClientServerReply Text
    "your-host")
      , (ReplyCode
    RPL_CREATED               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ClientServerReply Text
    "created")
      , (ReplyCode
    RPL_MYINFO                , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ClientServerReply Text
    "my-info")
      , (ReplyCode
    RPL_ISUPPORT              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ClientServerReply Text
    "isupport")
      , (ReplyCode
    RPL_SNOMASK               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ClientServerReply Text
    "sno-mask")
      , (ReplyCode
    RPL_STATMEMTOT            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ClientServerReply Text
    "stat-mem-tot")
      , (ReplyCode
    RPL_REDIR                 , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ClientServerReply Text
    "redir")
      , (ReplyCode
    RPL_YOURCOOKIE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ClientServerReply Text
    "your-cookie")
      , (ReplyCode
    RPL_MAP                   , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ClientServerReply Text
    "map")
      , (ReplyCode
    RPL_MAPEND                , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ClientServerReply Text
    "map-end")
      , (ReplyCode
    RPL_YOURID                , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ClientServerReply Text
    "your-id")
      , (ReplyCode
    RPL_SAVENICK              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ClientServerReply Text
    "save-nick")
      , (ReplyCode
    RPL_ATTEMPTINGJUNC        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ClientServerReply Text
    "attempting-junc")
      , (ReplyCode
    RPL_ATTEMPTINGREROUTE     , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ClientServerReply Text
    "attempting-reroute")
      , (ReplyCode
    RPL_REMOTESUPPORT         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ClientServerReply Text
    "remote-support")
      , (ReplyCode
    RPL_TRACELINK             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "trace-link")
      , (ReplyCode
    RPL_TRACECONNECTING       , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "trace-connecting")
      , (ReplyCode
    RPL_TRACEHANDSHAKE        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "trace-handshake")
      , (ReplyCode
    RPL_TRACEUNKNOWN          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "trace-unknown")
      , (ReplyCode
    RPL_TRACEOPERATOR         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "trace-operator")
      , (ReplyCode
    RPL_TRACEUSER             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "trace-user")
      , (ReplyCode
    RPL_TRACESERVER           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "trace-server")
      , (ReplyCode
    RPL_TRACESERVICE          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "trace-service")
      , (ReplyCode
    RPL_TRACENEWTYPE          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "trace-newtype")
      , (ReplyCode
    RPL_TRACECLASS            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "trace-class")
      , (ReplyCode
    RPL_TRACERECONNECT        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "trace-reconnect")
      , (ReplyCode
    RPL_STATS                 , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats")
      , (ReplyCode
    RPL_STATSLINKINFO         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-linkinfo")
      , (ReplyCode
    RPL_STATSCOMMANDS         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-commands")
      , (ReplyCode
    RPL_STATSCLINE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-cline")
      , (ReplyCode
    RPL_STATSNLINE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-nline")
      , (ReplyCode
    RPL_STATSILINE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-iline")
      , (ReplyCode
    RPL_STATSKLINE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-kline")
      , (ReplyCode
    RPL_STATSQLINE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-qline")
      , (ReplyCode
    RPL_STATSYLINE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-yline")
      , (ReplyCode
    RPL_ENDOFSTATS            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-stats")
      , (ReplyCode
    RPL_STATSPLINE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-pline")
      , (ReplyCode
    RPL_UMODEIS               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "umode-is")
      , (ReplyCode
    RPL_SQLINE_NICK           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "sqline-nick")
      , (ReplyCode
    RPL_STATSDLINE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-dline")
      , (ReplyCode
    RPL_STATSCOUNT            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-count")
      , (ReplyCode
    RPL_SERVICEINFO           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "service-info")
      , (ReplyCode
    RPL_ENDOFSERVICES         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-services")
      , (ReplyCode
    RPL_SERVICE               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "service")
      , (ReplyCode
    RPL_SERVLIST              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "serv-list")
      , (ReplyCode
    RPL_SERVLISTEND           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "serv-list-end")
      , (ReplyCode
    RPL_STATSVERBOSE          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-verbose")
      , (ReplyCode
    RPL_STATSIAUTH            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-iauth")
      , (ReplyCode
    RPL_STATSLLINE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-lline")
      , (ReplyCode
    RPL_STATSUPTIME           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-uptime")
      , (ReplyCode
    RPL_STATSOLINE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-oline")
      , (ReplyCode
    RPL_STATSHLINE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-hline")
      , (ReplyCode
    RPL_STATSSLINE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-sline")
      , (ReplyCode
    RPL_STATSPING             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-ping")
      , (ReplyCode
    RPL_STATSXLINE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-xline")
      , (ReplyCode
    RPL_STATSULINE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-uline")
      , (ReplyCode
    RPL_STATSDEBUG            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-debug")
      , (ReplyCode
    RPL_STATSCONN             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-conn")
      , (ReplyCode
    RPL_LUSERCLIENT           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "luser-client")
      , (ReplyCode
    RPL_LUSEROP               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "luser-op")
      , (ReplyCode
    RPL_LUSERUNKNOWN          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "luser-unknown")
      , (ReplyCode
    RPL_LUSERCHANNELS         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "luser-channels")
      , (ReplyCode
    RPL_LUSERME               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "luser-me")
      , (ReplyCode
    RPL_ADMINME               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "admin-me")
      , (ReplyCode
    RPL_ADMINLOC1             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "admin-loc1")
      , (ReplyCode
    RPL_ADMINLOC2             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "admin-loc2")
      , (ReplyCode
    RPL_ADMINEMAIL            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "admin-email")
      , (ReplyCode
    RPL_TRACELOG              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "trace-log")
      , (ReplyCode
    RPL_ENDOFTRACE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-trace")
      , (ReplyCode
    RPL_LOAD2HI               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "load-too-high")
      , (ReplyCode
    RPL_LOCALUSERS            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "local-users")
      , (ReplyCode
    RPL_GLOBALUSERS           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "global-users")
      , (ReplyCode
    RPL_START_NETSTAT         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "start-netstat")
      , (ReplyCode
    RPL_NETSTAT               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "netstat")
      , (ReplyCode
    RPL_END_NETSTAT           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-netstat")
      , (ReplyCode
    RPL_PRIVS                 , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "privs")
      , (ReplyCode
    RPL_SILELIST              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "sile-list")
      , (ReplyCode
    RPL_ENDOFSILELIST         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-sile-list")
      , (ReplyCode
    RPL_NOTIFY                , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "notify")
      , (ReplyCode
    RPL_ENDNOTIFY             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-notify")
      , (ReplyCode
    RPL_STATSDELTA            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "stats-delta")
      , (ReplyCode
    RPL_WHOISCERTFP           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-certfp")
      , (ReplyCode
    RPL_VCHANLIST             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "vchan-list")
      , (ReplyCode
    RPL_VCHANHELP             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "vchan-help")
      , (ReplyCode
    RPL_GLIST                 , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "glist")
      , (ReplyCode
    RPL_ACCEPTLIST            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "accept-list")
      , (ReplyCode
    RPL_ENDOFACCEPT           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-accept")
      , (ReplyCode
    RPL_ENDOFJUPELIST         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-jupe-list")
      , (ReplyCode
    RPL_FEATURE               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "feature")
      , (ReplyCode
    RPL_DATASTR               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "datastr")
      , (ReplyCode
    RPL_END_CHANINFO          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-chaninfo")
      , (ReplyCode
    RPL_NONE                  , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "none")
      , (ReplyCode
    RPL_AWAY                  , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "away")
      , (ReplyCode
    RPL_USERHOST              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "userhost")
      , (ReplyCode
    RPL_ISON                  , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "ison")
      , (ReplyCode
    RPL_TEXT                  , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "text")
      , (ReplyCode
    RPL_UNAWAY                , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "unaway")
      , (ReplyCode
    RPL_NOWAWAY               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "now-away")
      , (ReplyCode
    RPL_WHOISREGNICK          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-regnick")
      , (ReplyCode
    RPL_SUSERHOST             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "suserhost")
      , (ReplyCode
    RPL_NOTIFYACTION          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "notify-action")
      , (ReplyCode
    RPL_WHOISADMIN            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-admin")
      , (ReplyCode
    RPL_NICKTRACE             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "nick-trace")
      , (ReplyCode
    RPL_WHOISSADMIN           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-sadmin")
      , (ReplyCode
    RPL_WHOISHELPER           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-helper")
      , (ReplyCode
    RPL_WHOISHELPOP           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-helpop")
      , (ReplyCode
    RPL_WHOISUSER             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-user")
      , (ReplyCode
    RPL_WHOISSERVER           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-server")
      , (ReplyCode
    RPL_WHOISOPERATOR         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-operator")
      , (ReplyCode
    RPL_WHOWASUSER            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whowas-user")
      , (ReplyCode
    RPL_ENDOFWHO              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-who")
      , (ReplyCode
    RPL_WHOISCHANOP           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-chanop")
      , (ReplyCode
    RPL_WHOISIDLE             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-idle")
      , (ReplyCode
    RPL_ENDOFWHOIS            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-whois")
      , (ReplyCode
    RPL_WHOISCHANNELS         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-channels")
      , (ReplyCode
    RPL_WHOISSPECIAL          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-special")
      , (ReplyCode
    RPL_LISTSTART             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "list-start")
      , (ReplyCode
    RPL_LIST                  , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "list")
      , (ReplyCode
    RPL_LISTEND               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "list-end")
      , (ReplyCode
    RPL_CHANNELMODEIS         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "channel-mode-is")
      , (ReplyCode
    RPL_CHANNELMLOCKIS        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "channel-mlock-is")
      , (ReplyCode
    RPL_NOCHANPASS            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "nochanpass")
      , (ReplyCode
    RPL_CHPASSUNKNOWN         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "chpass-unknown")
      , (ReplyCode
    RPL_CHANNEL_URL           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "channel-url")
      , (ReplyCode
    RPL_CREATIONTIME          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "creation-time")
      , (ReplyCode
    RPL_WHOISACCOUNT          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-account")
      , (ReplyCode
    RPL_NOTOPIC               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "notopic")
      , (ReplyCode
    RPL_TOPIC                 , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "topic")
      , (ReplyCode
    RPL_TOPICWHOTIME          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "topic-whotime")
      , (ReplyCode
    RPL_LISTUSAGE             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "list-usage")
      , (ReplyCode
    RPL_COMMANDSYNTAX         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "command-syntax")
      , (ReplyCode
    RPL_LISTSYNTAX            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "list-syntax")
      , (ReplyCode
    RPL_WHOISTEXT             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-text")
      , (ReplyCode
    RPL_WHOISACTUALLY         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-actually")
      , (ReplyCode
    RPL_BADCHANPASS           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "bad-chanpass")
      , (ReplyCode
    RPL_INVITING              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "inviting")
      , (ReplyCode
    RPL_SUMMONING             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "summoning")
      , (ReplyCode
    RPL_INVITED               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "invited")
      , (ReplyCode
    RPL_INVEXLIST             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "invex-list")
      , (ReplyCode
    RPL_ENDOFINVEXLIST        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-invex-list")
      , (ReplyCode
    RPL_EXCEPTLIST            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "except-list")
      , (ReplyCode
    RPL_ENDOFEXCEPTLIST       , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-except-list")
      , (ReplyCode
    RPL_VERSION               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "version")
      , (ReplyCode
    RPL_WHOREPLY              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "who-reply")
      , (ReplyCode
    RPL_NAMREPLY              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "nam-reply")
      , (ReplyCode
    RPL_WHOSPCRPL             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "who-special-reply")
      , (ReplyCode
    RPL_NAMREPLY_             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "nam-reply_")
      , (ReplyCode
    RPL_WHOWASREAL            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whowas-real")
      , (ReplyCode
    RPL_KILLDONE              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "kill-done")
      , (ReplyCode
    RPL_CLOSING               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "closing")
      , (ReplyCode
    RPL_CLOSEEND              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "close-end")
      , (ReplyCode
    RPL_LINKS                 , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "links")
      , (ReplyCode
    RPL_ENDOFLINKS            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-links")
      , (ReplyCode
    RPL_ENDOFNAMES            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-names")
      , (ReplyCode
    RPL_BANLIST               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "ban-list")
      , (ReplyCode
    RPL_ENDOFBANLIST          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-ban-list")
      , (ReplyCode
    RPL_ENDOFWHOWAS           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-whowas")
      , (ReplyCode
    RPL_INFO                  , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "info")
      , (ReplyCode
    RPL_MOTD                  , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "motd")
      , (ReplyCode
    RPL_INFOSTART             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "info-start")
      , (ReplyCode
    RPL_ENDOFINFO             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-info")
      , (ReplyCode
    RPL_MOTDSTART             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "motd-start")
      , (ReplyCode
    RPL_ENDOFMOTD             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-motd")
      , (ReplyCode
    RPL_WHOISHOST             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-host")
      , (ReplyCode
    RPL_WHOISMODES            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-modes")
      , (ReplyCode
    RPL_YOUREOPER             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "youre-oper")
      , (ReplyCode
    RPL_REHASHING             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "rehashing")
      , (ReplyCode
    RPL_YOURESERVICE          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "youre-service")
      , (ReplyCode
    RPL_MYPORTIS              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "my-port-is")
      , (ReplyCode
    RPL_NOTOPERANYMORE        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "not-oper-anymore")
      , (ReplyCode
    RPL_RSACHALLENGE          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "rsa-challenge")
      , (ReplyCode
    RPL_TIME                  , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "time")
      , (ReplyCode
    RPL_USERSSTART            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "users-start")
      , (ReplyCode
    RPL_USERS                 , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "users")
      , (ReplyCode
    RPL_ENDOFUSERS            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-users")
      , (ReplyCode
    RPL_NOUSERS               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "nousers")
      , (ReplyCode
    RPL_HOSTHIDDEN            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "host-hidden")
      , (ReplyCode
    ERR_UNKNOWNERROR          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "unknown-error")
      , (ReplyCode
    ERR_NOSUCHNICK            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-such-nick")
      , (ReplyCode
    ERR_NOSUCHSERVER          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-such-server")
      , (ReplyCode
    ERR_NOSUCHCHANNEL         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-such-channel")
      , (ReplyCode
    ERR_CANNOTSENDTOCHAN      , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "cannot-send-to-chan")
      , (ReplyCode
    ERR_TOOMANYCHANNELS       , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "too-many-channels")
      , (ReplyCode
    ERR_WASNOSUCHNICK         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "was-no-such-nick")
      , (ReplyCode
    ERR_TOOMANYTARGETS        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "too-many-targets")
      , (ReplyCode
    ERR_NOORIGIN              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-origin")
      , (ReplyCode
    ERR_INVALIDCAPCMD         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "invalid-cap-cmd")
      , (ReplyCode
    ERR_NORECIPIENT           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-recipient")
      , (ReplyCode
    ERR_NOTEXTTOSEND          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-text-to-send")
      , (ReplyCode
    ERR_NOTOPLEVEL            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-top-level")
      , (ReplyCode
    ERR_WILDTOPLEVEL          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "wild-top-level")
      , (ReplyCode
    ERR_MSGNEEDREGGEDNICK     , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "msg-need-regged-nick")
      , (ReplyCode
    ERR_TOOMANYMATCHES        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "too-many-matches")
      , (ReplyCode
    ERR_LENGTHTRUNCATED       , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "length-truncated")
      , (ReplyCode
    ERR_UNKNOWNCOMMAND        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "unknown-command")
      , (ReplyCode
    ERR_NOMOTD                , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-motd")
      , (ReplyCode
    ERR_NOADMININFO           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-admin-info")
      , (ReplyCode
    ERR_FILEERROR             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "file-error")
      , (ReplyCode
    ERR_NOOPERMOTD            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-oper-motd")
      , (ReplyCode
    ERR_TOOMANYAWAY           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "too-many-away")
      , (ReplyCode
    ERR_EVENTNICKCHANGE       , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "event-nick-change")
      , (ReplyCode
    ERR_NONICKNAMEGIVEN       , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-nickname-given")
      , (ReplyCode
    ERR_ERRONEUSNICKNAME      , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "err-no-use-nickname")
      , (ReplyCode
    ERR_NICKNAMEINUSE         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "nickname-in-use")
      , (ReplyCode
    ERR_SERVICENAMEINUSE      , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "service-name-in-use")
      , (ReplyCode
    ERR_NORULES               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-rules")
      , (ReplyCode
    ERR_BANNICKCHANGE         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "ban-nick-change")
      , (ReplyCode
    ERR_NICKCOLLISION         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "nick-collision")
      , (ReplyCode
    ERR_UNAVAILRESOURCE       , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "unavail-resource")
      , (ReplyCode
    ERR_NICKTOOFAST           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "nick-too-fast")
      , (ReplyCode
    ERR_TARGETTOOFAST         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "target-too-fast")
      , (ReplyCode
    ERR_SERVICESDOWN          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "services-down")
      , (ReplyCode
    ERR_USERNOTINCHANNEL      , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "user-not-in-channel")
      , (ReplyCode
    ERR_NOTONCHANNEL          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "not-on-channel")
      , (ReplyCode
    ERR_USERONCHANNEL         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "user-on-channel")
      , (ReplyCode
    ERR_NOLOGIN               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-login")
      , (ReplyCode
    ERR_SUMMONDISABLED        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "summon-disabled")
      , (ReplyCode
    ERR_USERSDISABLED         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "users-disabled")
      , (ReplyCode
    ERR_NONICKCHANGE          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-nick-change")
      , (ReplyCode
    ERR_NOTIMPLEMENTED        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "not-implemented")
      , (ReplyCode
    ERR_NOTREGISTERED         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "not-registered")
      , (ReplyCode
    ERR_IDCOLLISION           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "id-collision")
      , (ReplyCode
    ERR_NICKLOST              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "nick-lost")
      , (ReplyCode
    ERR_HOSTILENAME           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "hostile-name")
      , (ReplyCode
    ERR_ACCEPTFULL            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "accept-full")
      , (ReplyCode
    ERR_ACCEPTEXIST           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "accept-exist")
      , (ReplyCode
    ERR_ACCEPTNOT             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "accept-not")
      , (ReplyCode
    ERR_NOHIDING              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-hiding")
      , (ReplyCode
    ERR_NOTFORHALFOPS         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "not-for-halfops")
      , (ReplyCode
    ERR_NEEDMOREPARAMS        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "need-more-params")
      , (ReplyCode
    ERR_ALREADYREGISTERED     , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "already-registered")
      , (ReplyCode
    ERR_NOPERMFORHOST         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-perm-for-host")
      , (ReplyCode
    ERR_PASSWDMISMATCH        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "passwd-mismatch")
      , (ReplyCode
    ERR_YOUREBANNEDCREEP      , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "youre-banned-creep")
      , (ReplyCode
    ERR_YOUWILLBEBANNED       , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "you-will-be-banned")
      , (ReplyCode
    ERR_KEYSET                , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "keyset")
      , (ReplyCode
    ERR_INVALIDUSERNAME       , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "invalid-username")
      , (ReplyCode
    ERR_ONLYSERVERSCANCHANGE  , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "only-servers-can-change")
      , (ReplyCode
    ERR_LINKSET               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "link-set")
      , (ReplyCode
    ERR_LINKCHANNEL           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "link-channel")
      , (ReplyCode
    ERR_CHANNELISFULL         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "channel-is-full")
      , (ReplyCode
    ERR_UNKNOWNMODE           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "unknown-mode")
      , (ReplyCode
    ERR_INVITEONLYCHAN        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "invite-only-chan")
      , (ReplyCode
    ERR_BANNEDFROMCHAN        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "banned-from-chan")
      , (ReplyCode
    ERR_BADCHANNELKEY         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "bad-channel-key")
      , (ReplyCode
    ERR_BADCHANMASK           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "bad-chan-mask")
      , (ReplyCode
    ERR_NEEDREGGEDNICK        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "need-regged-nick")
      , (ReplyCode
    ERR_BANLISTFULL           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "ban-list-full")
      , (ReplyCode
    ERR_BADCHANNAME           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "bad-chan-name")
      , (ReplyCode
    ERR_THROTTLE              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "throttle")
      , (ReplyCode
    ERR_NOPRIVILEGES          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-privileges")
      , (ReplyCode
    ERR_CHANOPRIVSNEEDED      , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "chano-privs-needed")
      , (ReplyCode
    ERR_CANTKILLSERVER        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "cant-kill-server")
      , (ReplyCode
    ERR_ISCHANSERVICE         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "is-chan-service")
      , (ReplyCode
    ERR_BANNEDNICK            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "banned-nick")
      , (ReplyCode
    ERR_NONONREG              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-nonreg")
      , (ReplyCode
    ERR_TSLESSCHAN            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "tsless-chan")
      , (ReplyCode
    ERR_VOICENEEDED           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "voice-needed")
      , (ReplyCode
    ERR_NOOPERHOST            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-oper-host")
      , (ReplyCode
    ERR_NOSERVICEHOST         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-service-host")
      , (ReplyCode
    ERR_NOFEATURE             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-feature")
      , (ReplyCode
    ERR_OWNMODE               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "own-mode")
      , (ReplyCode
    ERR_BADLOGTYPE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "bad-log-type")
      , (ReplyCode
    ERR_BADLOGSYS             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "bad-log-sys")
      , (ReplyCode
    ERR_BADLOGVALUE           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "bad-log-value")
      , (ReplyCode
    ERR_ISOPERLCHAN           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "is-oper-lchan")
      , (ReplyCode
    ERR_CHANOWNPRIVNEEDED     , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "chan-own-priv-needed")
      , (ReplyCode
    ERR_UMODEUNKNOWNFLAG      , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "umode-unknown-flag")
      , (ReplyCode
    ERR_USERSDONTMATCH        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "users-dont-match")
      , (ReplyCode
    ERR_GHOSTEDCLIENT         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "ghosted-client")
      , (ReplyCode
    ERR_USERNOTONSERV         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "user-not-on-serv")
      , (ReplyCode
    ERR_SILELISTFULL          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "sile-list-full")
      , (ReplyCode
    ERR_TOOMANYWATCH          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "too-many-watch")
      , (ReplyCode
    ERR_WRONGPONG             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "wrong-pong")
      , (ReplyCode
    ERR_BADEXPIRE             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "bad-expire")
      , (ReplyCode
    ERR_DONTCHEAT             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "dont-cheat")
      , (ReplyCode
    ERR_DISABLED              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "disabled")
      , (ReplyCode
    ERR_NOINVITE              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-invite")
      , (ReplyCode
    ERR_LONGMASK              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "long-mask")
      , (ReplyCode
    ERR_ADMONLY               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "adm-only")
      , (ReplyCode
    ERR_TOOMANYUSERS          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "too-many-users")
      , (ReplyCode
    ERR_OPERONLY              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "oper-only")
      , (ReplyCode
    ERR_MASKTOOWIDE           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "mask-too-wide")
      , (ReplyCode
    ERR_WHOTRUNC              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "who-trunc")
      , (ReplyCode
    ERR_LISTSYNTAX            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "list-syntax")
      , (ReplyCode
    ERR_WHOSYNTAX             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "whosyntax")
      , (ReplyCode
    ERR_WHOLIMEXCEED          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "wholimexceed")
      , (ReplyCode
    ERR_HELPNOTFOUND          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "help-not-found")
      , (ReplyCode
    ERR_REMOTEPFX             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "remote-pfx")
      , (ReplyCode
    ERR_PFXUNROUTABLE         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "pfx-unroutable")
      , (ReplyCode
    ERR_BADHOSTMASK           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "bad-hostmask")
      , (ReplyCode
    ERR_HOSTUNAVAIL           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "host-unavail")
      , (ReplyCode
    ERR_USINGSLINE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "using-sline")
      , (ReplyCode
    ERR_STATSSLINE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "stats-sline")
      , (ReplyCode
    RPL_LOGON                 , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "logon")
      , (ReplyCode
    RPL_LOGOFF                , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "logoff")
      , (ReplyCode
    RPL_WATCHOFF              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "watch-off")
      , (ReplyCode
    RPL_WATCHSTAT             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "watch-stat")
      , (ReplyCode
    RPL_NOWON                 , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "now-on")
      , (ReplyCode
    RPL_NOWOFF                , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "now-off")
      , (ReplyCode
    RPL_WATCHLIST             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "watch-list")
      , (ReplyCode
    RPL_ENDOFWATCHLIST        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-watch-list")
      , (ReplyCode
    RPL_WATCHCLEAR            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "watch-clear")
      , (ReplyCode
    RPL_ISOPER                , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "is-oper")
      , (ReplyCode
    RPL_ISLOCOP               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "is-loc-op")
      , (ReplyCode
    RPL_ISNOTOPER             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "is-not-oper")
      , (ReplyCode
    RPL_ENDOFISOPER           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-is-oper")
      , (ReplyCode
    RPL_DCCSTATUS             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "dcc-status")
      , (ReplyCode
    RPL_DCCLIST               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "dcc-list")
      , (ReplyCode
    RPL_ENDOFDCCLIST          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-dcc-list")
      , (ReplyCode
    RPL_WHOWASHOST            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whowas-host")
      , (ReplyCode
    RPL_DCCINFO               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "dcc-info")
      , (ReplyCode
    RPL_RULES                 , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "rules")
      , (ReplyCode
    RPL_ENDOFO                , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-o")
      , (ReplyCode
    RPL_SETTINGS              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "settings")
      , (ReplyCode
    RPL_ENDOFSETTINGS         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-settings")
      , (ReplyCode
    RPL_DUMPING               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "dumping")
      , (ReplyCode
    RPL_DUMPRPL               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "dump-rpl")
      , (ReplyCode
    RPL_EODUMP                , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "eodump")
      , (ReplyCode
    RPL_TRACEROUTE_HOP        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "traceroute-hop")
      , (ReplyCode
    RPL_TRACEROUTE_START      , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "traceroute-start")
      , (ReplyCode
    RPL_MODECHANGEWARN        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "mode-change-warn")
      , (ReplyCode
    RPL_CHANREDIR             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "chan-redir")
      , (ReplyCode
    RPL_SERVMODEIS            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "serv-mode-is")
      , (ReplyCode
    RPL_OTHERUMODEIS          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "other-umode-is")
      , (ReplyCode
    RPL_ENDOF_GENERIC         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-generic")
      , (ReplyCode
    RPL_STARTTLS              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "start-tls")
      , (ReplyCode
    RPL_WHOISSECURE           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-secure")
      , (ReplyCode
    RPL_UNKNOWNMODES          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "unknown-modes")
      , (ReplyCode
    RPL_CANNOTSETMODES        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "cannot-set-modes")
      , (ReplyCode
    RPL_LUSERSTAFF            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "luser-staff")
      , (ReplyCode
    RPL_TIMEONSERVERIS        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "time-on-server-is")
      , (ReplyCode
    RPL_NETWORKS              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "networks")
      , (ReplyCode
    RPL_YOURLANGUAGEIS        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "your-language-is")
      , (ReplyCode
    RPL_LANGUAGE              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "language")
      , (ReplyCode
    RPL_WHOISSTAFF            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "whois-staff")
      , (ReplyCode
    RPL_WHOISLANGUAGE         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "who-is-language")
      , (ReplyCode
    ERR_STARTTLS              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "err-start-tls")
      , (ReplyCode
    RPL_MODLIST               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "mod-list")
      , (ReplyCode
    RPL_ENDOFMODLIST          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-modlist")
      , (ReplyCode
    RPL_HELPSTART             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "help-start")
      , (ReplyCode
    RPL_HELPTXT               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "help-txt")
      , (ReplyCode
    RPL_ENDOFHELP             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-help")
      , (ReplyCode
    ERR_TARGCHANGE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "targ-change")
      , (ReplyCode
    RPL_ETRACEFULL            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "etrace-full")
      , (ReplyCode
    RPL_ETRACE                , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "etrace")
      , (ReplyCode
    RPL_KNOCK                 , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "knock")
      , (ReplyCode
    RPL_KNOCKDLVR             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "knockd-lvr")
      , (ReplyCode
    ERR_TOOMANYKNOCK          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "too-many-knock")
      , (ReplyCode
    ERR_CHANOPEN              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "chan-open")
      , (ReplyCode
    ERR_KNOCKONCHAN           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "knock-on-chan")
      , (ReplyCode
    ERR_KNOCKDISABLED         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "knock-disabled")
      , (ReplyCode
    RPL_TARGUMODEG            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "targ-umodeg")
      , (ReplyCode
    RPL_TARGNOTIFY            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "targ-notify")
      , (ReplyCode
    RPL_UMODEGMSG             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "umodeg-msg")
      , (ReplyCode
    RPL_OMOTDSTART            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "omotd-start")
      , (ReplyCode
    RPL_OMOTD                 , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "omotd")
      , (ReplyCode
    RPL_ENDOFOMOTD            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-omotd")
      , (ReplyCode
    ERR_NOPRIVS               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-privs")
      , (ReplyCode
    RPL_TESTMASK              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "test-mask")
      , (ReplyCode
    RPL_TESTLINE              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "test-line")
      , (ReplyCode
    RPL_NOTESTLINE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "no-test-line")
      , (ReplyCode
    RPL_TESTMASKGECOS         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "testmask-gecos")
      , (ReplyCode
    RPL_QUIETLIST             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "quiet-list")
      , (ReplyCode
    RPL_ENDOFQUIETLIST        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-quiet-list")
      , (ReplyCode
    RPL_MONONLINE             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "mon-online")
      , (ReplyCode
    RPL_MONOFFLINE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "mon-offline")
      , (ReplyCode
    RPL_MONLIST               , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "mon-list")
      , (ReplyCode
    RPL_ENDOFMONLIST          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-mon-list")
      , (ReplyCode
    ERR_MONLISTFULL           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "mon-list-full")
      , (ReplyCode
    RPL_RSACHALLENGE2         , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "rsa-challenge2")
      , (ReplyCode
    RPL_ENDOFRSACHALLENGE2    , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "end-of-rsa-challenge2")
      , (ReplyCode
    ERR_MLOCKRESTRICTED       , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "mlock-restricted")
      , (ReplyCode
    RPL_SCANMATCHED           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "scan-matched")
      , (ReplyCode
    RPL_SCANUMODES            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "scan-umodes")
      , (ReplyCode
    RPL_XINFO                 , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "xinfo")
      , (ReplyCode
    RPL_XINFOSTART            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "xinfo-start")
      , (ReplyCode
    RPL_XINFOEND              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "xinfo-end")
      , (ReplyCode
    RPL_LOGGEDIN              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "logged-in")
      , (ReplyCode
    RPL_LOGGEDOUT             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "logged-out")
      , (ReplyCode
    RPL_NICKLOCKED            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "nick-locked")
      , (ReplyCode
    RPL_SASLSUCCESS           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "sasl-success")
      , (ReplyCode
    ERR_SASLFAIL              , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "sasl-fail")
      , (ReplyCode
    ERR_SASLTOOLONG           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "sasl-toolong")
      , (ReplyCode
    ERR_SASLABORTED           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "sasl-aborted")
      , (ReplyCode
    ERR_SASLALREADY           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "sasl-already")
      , (ReplyCode
    RPL_SASLMECHS             , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    CommandReply Text
    "sasl-mechs")
      , (ReplyCode
    ERR_CANNOTDOCOMMAND       , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "cannot-do-command")
      , (ReplyCode
    ERR_CANNOTCHANGEUMODE     , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "cannot-change-umode")
      , (ReplyCode
    ERR_CANNOTCHANGECHANMODE  , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "cannot-change-chan-mode")
      , (ReplyCode
    ERR_CANNOTCHANGESERVERMODE, ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "cannot-change-server-mode")
      , (ReplyCode
    ERR_CANNOTSENDTONICK      , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "cannot-send-to-nick")
      , (ReplyCode
    ERR_UNKNOWNSERVERMODE     , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "unknown-server-mode")
      , (ReplyCode
    ERR_SERVERMODELOCK        , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "server-mode-lock")
      , (ReplyCode
    ERR_BADCHARENCODING       , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "bad-char-encoding")
      , (ReplyCode
    ERR_TOOMANYLANGUAGES      , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "too-many-languages")
      , (ReplyCode
    ERR_NOLANGUAGE            , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "no-language")
      , (ReplyCode
    ERR_TEXTTOOSHORT          , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "text-too-short")
      , (ReplyCode
    ERR_NUMERIC_ERR           , ReplyType -> Text -> ReplyCodeInfo
    ReplyCodeInfo ReplyType
    ErrorReply Text
    "numeric-err")
      ]