module Text.Highlighter.Lexers.IrcLogs (lexer) where

import Text.Regex.PCRE.Light
import Text.Highlighter.Types

lexer :: Lexer
lexer = Lexer
    { lName = "\73\82\67\32\108\111\103\115"
    , lAliases = ["\105\114\99"]
    , lExtensions = ["\46\119\101\101\99\104\97\116\108\111\103"]
    , lMimetypes = ["\116\101\120\116\47\120\45\105\114\99\108\111\103"]
    , lStart = root'
    , lFlags = [multiline]
    }

msg' :: TokenMatcher
msg' =
    [ tok "\91\94\92\115\93\43\58\40\63\33\47\47\41" (Arbitrary "\78\97\109\101" :. Arbitrary "\65\116\116\114\105\98\117\116\101")
    , tokNext "\46\42\92\110" (Arbitrary "\84\101\120\116") Pop
    ]

root' :: TokenMatcher
root' =
    [ tok "\94\92\42\92\42\92\42\92\42\40\46\42\41\92\42\92\42\92\42\92\42\36" (Arbitrary "\67\111\109\109\101\110\116")
    , tok "\94\10\32\32\32\32\32\32\32\32\40\10\32\32\32\32\32\32\32\32\32\32\35\32\105\114\115\115\105\32\47\32\120\99\104\97\116\32\97\110\100\32\111\116\104\101\114\115\10\32\32\32\32\32\32\32\32\32\32\40\63\58\32\92\91\124\92\40\41\63\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\79\112\101\110\105\110\103\32\98\114\97\99\107\101\116\32\111\114\32\112\97\114\101\110\32\102\111\114\32\116\104\101\32\116\105\109\101\115\116\97\109\112\10\32\32\32\32\32\32\32\32\32\32\32\32\40\63\58\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\84\105\109\101\115\116\97\109\112\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\63\58\32\40\63\58\92\100\123\49\44\52\125\32\91\45\47\93\63\41\43\32\35\32\68\97\116\101\32\97\115\32\45\32\111\114\32\47\45\115\101\112\97\114\97\116\101\100\32\103\114\111\117\112\115\32\111\102\32\100\105\103\105\116\115\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\91\84\32\93\41\63\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\68\97\116\101\47\116\105\109\101\32\115\101\112\97\114\97\116\111\114\58\32\84\32\111\114\32\115\112\97\99\101\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\63\58\32\92\100\63\92\100\32\91\58\46\93\63\41\43\32\32\32\32\32\32\35\32\84\105\109\101\32\97\115\32\58\47\46\45\115\101\112\97\114\97\116\101\100\32\103\114\111\117\112\115\32\111\102\32\49\32\111\114\32\50\32\100\105\103\105\116\115\10\32\32\32\32\32\32\32\32\32\32\32\32\41\10\32\32\32\32\32\32\32\32\32\32\40\63\58\32\92\93\124\92\41\41\63\92\115\43\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\67\108\111\115\105\110\103\32\98\114\97\99\107\101\116\32\111\114\32\112\97\114\101\110\32\102\111\114\32\116\104\101\32\116\105\109\101\115\116\97\109\112\10\32\32\32\32\32\32\32\32\124\10\32\32\32\32\32\32\32\32\32\32\35\32\119\101\101\99\104\97\116\10\32\32\32\32\32\32\32\32\32\32\92\100\123\52\125\92\115\92\119\123\51\125\92\115\92\100\123\50\125\92\115\32\32\32\32\32\32\32\32\35\32\68\97\116\101\10\32\32\32\32\32\32\32\32\32\32\92\100\123\50\125\58\92\100\123\50\125\58\92\100\123\50\125\92\115\43\32\32\32\32\32\32\32\32\32\35\32\84\105\109\101\32\43\32\87\104\105\116\101\115\112\97\99\101\10\32\32\32\32\32\32\32\32\124\10\32\32\32\32\32\32\32\32\32\32\35\32\120\99\104\97\116\10\32\32\32\32\32\32\32\32\32\32\92\119\123\51\125\92\115\92\100\123\50\125\92\115\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\68\97\116\101\10\32\32\32\32\32\32\32\32\32\32\92\100\123\50\125\58\92\100\123\50\125\58\92\100\123\50\125\92\115\43\32\32\32\32\32\32\32\32\32\35\32\84\105\109\101\32\43\32\87\104\105\116\101\115\112\97\99\101\10\32\32\32\32\32\32\32\32\41\63\10\32\32\32\32\40\92\115\42\60\91\94\62\93\42\62\92\115\42\41\36" (ByGroups [(Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99"), (Arbitrary "\78\97\109\101" :. Arbitrary "\84\97\103")])
    , tokNext "\94\10\32\32\32\32\32\32\32\32\40\10\32\32\32\32\32\32\32\32\32\32\35\32\105\114\115\115\105\32\47\32\120\99\104\97\116\32\97\110\100\32\111\116\104\101\114\115\10\32\32\32\32\32\32\32\32\32\32\40\63\58\32\92\91\124\92\40\41\63\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\79\112\101\110\105\110\103\32\98\114\97\99\107\101\116\32\111\114\32\112\97\114\101\110\32\102\111\114\32\116\104\101\32\116\105\109\101\115\116\97\109\112\10\32\32\32\32\32\32\32\32\32\32\32\32\40\63\58\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\84\105\109\101\115\116\97\109\112\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\63\58\32\40\63\58\92\100\123\49\44\52\125\32\91\45\47\93\63\41\43\32\35\32\68\97\116\101\32\97\115\32\45\32\111\114\32\47\45\115\101\112\97\114\97\116\101\100\32\103\114\111\117\112\115\32\111\102\32\100\105\103\105\116\115\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\91\84\32\93\41\63\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\68\97\116\101\47\116\105\109\101\32\115\101\112\97\114\97\116\111\114\58\32\84\32\111\114\32\115\112\97\99\101\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\63\58\32\92\100\63\92\100\32\91\58\46\93\63\41\43\32\32\32\32\32\32\35\32\84\105\109\101\32\97\115\32\58\47\46\45\115\101\112\97\114\97\116\101\100\32\103\114\111\117\112\115\32\111\102\32\49\32\111\114\32\50\32\100\105\103\105\116\115\10\32\32\32\32\32\32\32\32\32\32\32\32\41\10\32\32\32\32\32\32\32\32\32\32\40\63\58\32\92\93\124\92\41\41\63\92\115\43\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\67\108\111\115\105\110\103\32\98\114\97\99\107\101\116\32\111\114\32\112\97\114\101\110\32\102\111\114\32\116\104\101\32\116\105\109\101\115\116\97\109\112\10\32\32\32\32\32\32\32\32\124\10\32\32\32\32\32\32\32\32\32\32\35\32\119\101\101\99\104\97\116\10\32\32\32\32\32\32\32\32\32\32\92\100\123\52\125\92\115\92\119\123\51\125\92\115\92\100\123\50\125\92\115\32\32\32\32\32\32\32\32\35\32\68\97\116\101\10\32\32\32\32\32\32\32\32\32\32\92\100\123\50\125\58\92\100\123\50\125\58\92\100\123\50\125\92\115\43\32\32\32\32\32\32\32\32\32\35\32\84\105\109\101\32\43\32\87\104\105\116\101\115\112\97\99\101\10\32\32\32\32\32\32\32\32\124\10\32\32\32\32\32\32\32\32\32\32\35\32\120\99\104\97\116\10\32\32\32\32\32\32\32\32\32\32\92\119\123\51\125\92\115\92\100\123\50\125\92\115\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\68\97\116\101\10\32\32\32\32\32\32\32\32\32\32\92\100\123\50\125\58\92\100\123\50\125\58\92\100\123\50\125\92\115\43\32\32\32\32\32\32\32\32\32\35\32\84\105\109\101\32\43\32\87\104\105\116\101\115\112\97\99\101\10\32\32\32\32\32\32\32\32\41\63\10\32\32\32\32\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\92\115\42\60\46\42\63\62\92\115\42\41\32\32\32\32\32\32\32\32\32\32\35\32\78\105\99\107\32" (ByGroups [(Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99"), (Arbitrary "\78\97\109\101" :. Arbitrary "\84\97\103")]) (GoTo msg')
    , tok "\94\10\32\32\32\32\32\32\32\32\40\10\32\32\32\32\32\32\32\32\32\32\35\32\105\114\115\115\105\32\47\32\120\99\104\97\116\32\97\110\100\32\111\116\104\101\114\115\10\32\32\32\32\32\32\32\32\32\32\40\63\58\32\92\91\124\92\40\41\63\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\79\112\101\110\105\110\103\32\98\114\97\99\107\101\116\32\111\114\32\112\97\114\101\110\32\102\111\114\32\116\104\101\32\116\105\109\101\115\116\97\109\112\10\32\32\32\32\32\32\32\32\32\32\32\32\40\63\58\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\84\105\109\101\115\116\97\109\112\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\63\58\32\40\63\58\92\100\123\49\44\52\125\32\91\45\47\93\63\41\43\32\35\32\68\97\116\101\32\97\115\32\45\32\111\114\32\47\45\115\101\112\97\114\97\116\101\100\32\103\114\111\117\112\115\32\111\102\32\100\105\103\105\116\115\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\91\84\32\93\41\63\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\68\97\116\101\47\116\105\109\101\32\115\101\112\97\114\97\116\111\114\58\32\84\32\111\114\32\115\112\97\99\101\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\63\58\32\92\100\63\92\100\32\91\58\46\93\63\41\43\32\32\32\32\32\32\35\32\84\105\109\101\32\97\115\32\58\47\46\45\115\101\112\97\114\97\116\101\100\32\103\114\111\117\112\115\32\111\102\32\49\32\111\114\32\50\32\100\105\103\105\116\115\10\32\32\32\32\32\32\32\32\32\32\32\32\41\10\32\32\32\32\32\32\32\32\32\32\40\63\58\32\92\93\124\92\41\41\63\92\115\43\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\67\108\111\115\105\110\103\32\98\114\97\99\107\101\116\32\111\114\32\112\97\114\101\110\32\102\111\114\32\116\104\101\32\116\105\109\101\115\116\97\109\112\10\32\32\32\32\32\32\32\32\124\10\32\32\32\32\32\32\32\32\32\32\35\32\119\101\101\99\104\97\116\10\32\32\32\32\32\32\32\32\32\32\92\100\123\52\125\92\115\92\119\123\51\125\92\115\92\100\123\50\125\92\115\32\32\32\32\32\32\32\32\35\32\68\97\116\101\10\32\32\32\32\32\32\32\32\32\32\92\100\123\50\125\58\92\100\123\50\125\58\92\100\123\50\125\92\115\43\32\32\32\32\32\32\32\32\32\35\32\84\105\109\101\32\43\32\87\104\105\116\101\115\112\97\99\101\10\32\32\32\32\32\32\32\32\124\10\32\32\32\32\32\32\32\32\32\32\35\32\120\99\104\97\116\10\32\32\32\32\32\32\32\32\32\32\92\119\123\51\125\92\115\92\100\123\50\125\92\115\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\68\97\116\101\10\32\32\32\32\32\32\32\32\32\32\92\100\123\50\125\58\92\100\123\50\125\58\92\100\123\50\125\92\115\43\32\32\32\32\32\32\32\32\32\35\32\84\105\109\101\32\43\32\87\104\105\116\101\115\112\97\99\101\10\32\32\32\32\32\32\32\32\41\63\10\32\32\32\32\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\92\115\42\91\42\93\92\115\43\41\32\32\32\32\32\32\32\32\32\32\32\32\35\32\83\116\97\114\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\91\94\92\115\93\43\92\115\43\46\42\63\92\110\41\32\32\32\32\32\32\32\35\32\78\105\99\107\32\43\32\114\101\115\116\32\111\102\32\109\101\115\115\97\103\101\32" (ByGroups [(Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99"), (Arbitrary "\75\101\121\119\111\114\100"), (Arbitrary "\71\101\110\101\114\105\99" :. Arbitrary "\73\110\115\101\114\116\101\100")])
    , tok "\94\10\32\32\32\32\32\32\32\32\40\10\32\32\32\32\32\32\32\32\32\32\35\32\105\114\115\115\105\32\47\32\120\99\104\97\116\32\97\110\100\32\111\116\104\101\114\115\10\32\32\32\32\32\32\32\32\32\32\40\63\58\32\92\91\124\92\40\41\63\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\79\112\101\110\105\110\103\32\98\114\97\99\107\101\116\32\111\114\32\112\97\114\101\110\32\102\111\114\32\116\104\101\32\116\105\109\101\115\116\97\109\112\10\32\32\32\32\32\32\32\32\32\32\32\32\40\63\58\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\84\105\109\101\115\116\97\109\112\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\63\58\32\40\63\58\92\100\123\49\44\52\125\32\91\45\47\93\63\41\43\32\35\32\68\97\116\101\32\97\115\32\45\32\111\114\32\47\45\115\101\112\97\114\97\116\101\100\32\103\114\111\117\112\115\32\111\102\32\100\105\103\105\116\115\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\91\84\32\93\41\63\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\68\97\116\101\47\116\105\109\101\32\115\101\112\97\114\97\116\111\114\58\32\84\32\111\114\32\115\112\97\99\101\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\63\58\32\92\100\63\92\100\32\91\58\46\93\63\41\43\32\32\32\32\32\32\35\32\84\105\109\101\32\97\115\32\58\47\46\45\115\101\112\97\114\97\116\101\100\32\103\114\111\117\112\115\32\111\102\32\49\32\111\114\32\50\32\100\105\103\105\116\115\10\32\32\32\32\32\32\32\32\32\32\32\32\41\10\32\32\32\32\32\32\32\32\32\32\40\63\58\32\92\93\124\92\41\41\63\92\115\43\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\67\108\111\115\105\110\103\32\98\114\97\99\107\101\116\32\111\114\32\112\97\114\101\110\32\102\111\114\32\116\104\101\32\116\105\109\101\115\116\97\109\112\10\32\32\32\32\32\32\32\32\124\10\32\32\32\32\32\32\32\32\32\32\35\32\119\101\101\99\104\97\116\10\32\32\32\32\32\32\32\32\32\32\92\100\123\52\125\92\115\92\119\123\51\125\92\115\92\100\123\50\125\92\115\32\32\32\32\32\32\32\32\35\32\68\97\116\101\10\32\32\32\32\32\32\32\32\32\32\92\100\123\50\125\58\92\100\123\50\125\58\92\100\123\50\125\92\115\43\32\32\32\32\32\32\32\32\32\35\32\84\105\109\101\32\43\32\87\104\105\116\101\115\112\97\99\101\10\32\32\32\32\32\32\32\32\124\10\32\32\32\32\32\32\32\32\32\32\35\32\120\99\104\97\116\10\32\32\32\32\32\32\32\32\32\32\92\119\123\51\125\92\115\92\100\123\50\125\92\115\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\68\97\116\101\10\32\32\32\32\32\32\32\32\32\32\92\100\123\50\125\58\92\100\123\50\125\58\92\100\123\50\125\92\115\43\32\32\32\32\32\32\32\32\32\35\32\84\105\109\101\32\43\32\87\104\105\116\101\115\112\97\99\101\10\32\32\32\32\32\32\32\32\41\63\10\32\32\32\32\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\92\115\42\40\63\58\92\42\123\51\125\124\60\63\45\91\33\64\61\80\93\63\45\62\63\41\92\115\42\41\32\32\35\32\83\116\97\114\40\115\41\32\111\114\32\115\121\109\98\111\108\115\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\91\94\92\115\93\43\92\115\43\41\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\78\105\99\107\32\43\32\83\112\97\99\101\10\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\40\46\42\63\92\110\41\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\32\35\32\82\101\115\116\32\111\102\32\109\101\115\115\97\103\101\32" (ByGroups [(Arbitrary "\67\111\109\109\101\110\116" :. Arbitrary "\80\114\101\112\114\111\99"), (Arbitrary "\75\101\121\119\111\114\100"), (Arbitrary "\76\105\116\101\114\97\108" :. Arbitrary "\83\116\114\105\110\103"), (Arbitrary "\67\111\109\109\101\110\116")])
    , tok "\94\46\42\63\92\110" (Arbitrary "\84\101\120\116")
    ]