cTn"      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !Safe!05_G  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF%&56;<?@CDGCDEF?@AB;<=>56789:%&'()*+,-./01234 !"#$    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFNone05 bcdefghij jihgfedcb bcdefghijSafe!05_klmnopqrstuvwxyklqrvwvwxyqrstuklmnopklmnopqrstuvwxyNone05Safe!05_None05NoneIport for incoming messagesKbinding to this host specification (TODO: needs support for HostPreference)Eport to send rsyslog with successfully parsed and normalised msg parthost to send normalised data to1port to send rsyslog messges that failed to parse1host to send original data to when parsing failed"#$% "#$%None!5AT_ None05 None!05_ None!05_ None!05_ None!05_7 parses [[[DD:]HH:]MM:]SS strings representing walltimeK parses an decimal followed by a memory unit and return the memory in bytesQ splits the job name in its components, i.e., ID, [ array ID,] master and clusterE parses a list of FQDN nodes and their ppn or a nodecount and its ppn parses all key value pairs denoting resources requested. Most of these are not obligatory. Since the Torque documentation is vague on mentioning which entries occur, the last 1.5 years of data we have were used to make an educated guess as to which keys might appear and in what order8 parses all the key value pairs denoting used resources. parses a &Q separated list of hostname/coreranges A core range can be of the form 1,3,5-7,9J parses a complete log line denoting a job exit. Tested with Torque 6.1.x. None!5AT_ None05None!05_None!5AT_   None05None!5_ -The original rsyslog message in a parsed formThe normalised messageFThe key under which the normalised info will appear in the JSON resultPThe fields we need to output when creating the JSON encoding as (key, fieldname)h Result for testing purposes, should you want to check the pipeline works without pushing in actual dataRepresents a parsed k message Represents a parsed  message Represents a parsed  message Represents a parsed  message               None05None!05_None!5AT_The S function will try and use each configured parser to normalise the input it's givenThe _ function return the key under which the normalised message should appear when JSON is producedThe  currently is a placeholder function that will convert the incoming rsyslog message if it is encoded as expected in a plain string format  %PRI%K1 %timegenerated:::date-rfc3339% %HOSTNAME% %syslogtag% - %APP-NAME%: %msg%-Wrapped result for which we need to get a key.Key for use in the JSON encoding of the result Output fields%Resulting encoded JSON representationNoneA : message contains the JSON normalised representation as a  ByteStringAn 5 messge contains the unaltered incoming message as a  ByteStringThe  function converts a  ByteStringR to a normalised message or keeps the original if the conversion (parsing) fails. The   function converts a '3 to a normalised message or keeps the original (in  ByteString!) format if the conversion fails(The (- function transforms the actual message to a ) #. If parsing fails, the result is *.!The ! function returns an NRSyslog structure tranformed to a  ByteString or * when parsing fails Output fields4Input representing an rsyslog message in JSON formatTransformed or Original result  Output fieldsInputTransformed or Original result(4The actual message part of the incoming JSON payload=The resulting Haskell data structure wrapped in a ParseResult! Output fieldsIncoming rsyslog informationGIf the conversion succeeded the JSON encoded rsyslog message to forward !!  (!+ !"#$%&'()*+,--./012334567899:;<=>?@ABCDEFGHHIJKLMMNOPPQRSSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyzz{|}~       !"#$%&'()*+,-./012,34,356)hnormalise-0.3.3.0-AIsGFZ6YJkXLwNm4NSQGxDHNormalise.Torque.InternalHNormalise.Torque.JsonHNormalise.Lmod.InternalHNormalise.Lmod.JsonHNormalise.Huppel.InternalHNormalise.Huppel.JsonHNormalise.ConfigHNormalise.Common.InternalHNormalise.Common.JsonHNormalise.Common.ParserHNormalise.Huppel.ParserHNormalise.Lmod.ParserHNormalise.Torque.ParserHNormalise.Shorewall.InternalHNormalise.Shorewall.JsonHNormalise.Shorewall.ParserHNormalise.Snoopy.InternalHNormalise.Snoopy.JsonHNormalise.InternalHNormalise.JsonHNormalise.Snoopy.ParserHNormalise.Parser HNormalise TorqueJobName$sel:number:TorqueJobName$sel:array_id:TorqueJobName$sel:master:TorqueJobName$sel:cluster:TorqueJobName TorqueJobExit$sel:name:TorqueJobExit$sel:user:TorqueJobExit$sel:group:TorqueJobExit$sel:jobname:TorqueJobExit$sel:queue:TorqueJobExit$sel:startCount:TorqueJobExit$sel:owner:TorqueJobExit$sel:session:TorqueJobExit$sel:times:TorqueJobExit$sel:execHost:TorqueJobExit"$sel:resourceRequest:TorqueJobExit $sel:resourceUsage:TorqueJobExit&$sel:totalExecutionSlots:TorqueJobExit"$sel:uniqueNodeCount:TorqueJobExit$sel:exitStatus:TorqueJobExit TorqueJobTime$sel:ctime:TorqueJobTime$sel:qtime:TorqueJobTime$sel:etime:TorqueJobTime$sel:startTime:TorqueJobTime$sel:endTime:TorqueJobTimeTorqueResourceUsage $sel:cputime:TorqueResourceUsage$sel:energy:TorqueResourceUsage$sel:mem:TorqueResourceUsage$sel:vmem:TorqueResourceUsage!$sel:walltime:TorqueResourceUsageTorqueResourceRequest$sel:mem:TorqueResourceRequest!$sel:advres:TorqueResourceRequest($sel:naccesspolicy:TorqueResourceRequest $sel:ncpus:TorqueResourceRequest$$sel:neednodes:TorqueResourceRequest$sel:nice:TorqueResourceRequest$$sel:nodeCount:TorqueResourceRequest $sel:nodes:TorqueResourceRequest!$sel:select:TorqueResourceRequest$sel:qos:TorqueResourceRequest$sel:pmem:TorqueResourceRequest$sel:vmem:TorqueResourceRequest $sel:pvmem:TorqueResourceRequest#$sel:walltime:TorqueResourceRequestTorqueWalltime$sel:days:TorqueWalltime$sel:hours:TorqueWalltime$sel:minutes:TorqueWalltime$sel:seconds:TorqueWalltimeTorqueExecHost$sel:name:TorqueExecHost$sel:cores:TorqueExecHostTorqueJobFQNode$sel:name:TorqueJobFQNode$sel:ppn:TorqueJobFQNodeTorqueJobShortNode$sel:number:TorqueJobShortNode$sel:ppn:TorqueJobShortNode$fShowTorqueJobShortNode$fEqTorqueJobShortNode$fGenericTorqueJobShortNode$fShowTorqueJobFQNode$fEqTorqueJobFQNode$fGenericTorqueJobFQNode$fShowTorqueExecHost$fEqTorqueExecHost$fGenericTorqueExecHost$fShowTorqueWalltime$fEqTorqueWalltime$fGenericTorqueWalltime$fShowTorqueResourceRequest$fEqTorqueResourceRequest$fGenericTorqueResourceRequest$fShowTorqueResourceUsage$fEqTorqueResourceUsage$fGenericTorqueResourceUsage$fShowTorqueJobTime$fEqTorqueJobTime$fGenericTorqueJobTime$fShowTorqueJobName$fEqTorqueJobName$fGenericTorqueJobName$fShowTorqueJobExit$fEqTorqueJobExit$fGenericTorqueJobExit$fToJSONTorqueJobName$fToJSONTorqueJobExit$fToJSONTorqueJobTime$fToJSONTorqueResourceUsage$fToJSONTorqueResourceRequest$fToJSONTorqueWalltime$fToJSONTorqueExecHost$fToJSONTorqueJobFQNode$fToJSONTorqueJobShortNodeLmodLoad$sel:info:LmodLoad$sel:userload:LmodLoad$sel:modul:LmodLoad$sel:filename:LmodLoadLmodInfo$sel:username:LmodInfo$sel:cluster:LmodInfo$sel:jobid:LmodInfo LmodModule$sel:name:LmodModule$sel:version:LmodModule$fShowLmodModule$fEqLmodModule$fGenericLmodModule$fShowLmodInfo $fEqLmodInfo$fGenericLmodInfo$fShowLmodLoad $fEqLmodLoad$fGenericLmodLoad$fToJSONLmodModule$fToJSONLmodLoad$fToJSONLmodInfoHuppel$sel:id:Huppel $fEqHuppel $fShowHuppel$fGenericHuppel$fToJSONHuppelConfigportsfields PortConfig listenPort listenHost successPort successHostfailPortfailHost loadConfig$fMonoidConfig$fMonoidPortConfig$fShowPortConfig $fShowConfig$fFromJSONPortConfig$fToJSONPortConfig$fFromJSONConfig$fToJSONConfigHostHostnameIPv4IPv6 $fShowHost$fEqHost $fToJSONHost $fToJSONIPv6hostnameParserhostnameOrIPParser keyParserkvParser kvTextParserkvTextDelimParser kvNumParser kvYesNoParserkvHostOrIPParser maybeOption parseHuppel parseLmodInfoparseLmodModule parseLmodLoadparseTorqueWalltimeparseTorqueDaysparseTorqueHoursparseTorqueMinutesparseTorqueSecondsparseTorqueMemoryparseTorqueJobNameparseTorqueResourceNodeListparseTorqueResourceRequestparseTorqueResourceUsageparseTorqueHostListparseTorqueExit Shorewall$sel:fwrule:Shorewall$sel:fwtarget:Shorewall$sel:fwin:Shorewall$sel:fwout:Shorewall$sel:fwmac:Shorewall$sel:fwsrc:Shorewall$sel:fwdst:Shorewall$sel:fwproto:Shorewall$sel:fwspt:Shorewall$sel:fwdpt:ShorewallShorewallProtocolTCPUDPICMP$fShowShorewallProtocol$fEqShorewallProtocol$fGenericShorewallProtocol$fShowShorewall $fEqShorewall$fGenericShorewall$fToJSONShorewall$fToJSONShorewallProtocolparseShorewallTCPparseShorewallUDPparseShorewallICMPparseShorewallSnoopy$sel:pid:Snoopy$sel:uid:Snoopy$sel:username:Snoopy$sel:sid:Snoopy$sel:tty:Snoopy$sel:cwd:Snoopy$sel:executable:Snoopy$sel:command:Snoopy $fShowSnoopy $fEqSnoopy$fGenericSnoopy$fToJSONSnoopyNormalisedRsyslogNRsyslog$sel:rsyslog:NRsyslog$sel:normalised:NRsyslog$sel:jsonkey:NRsyslog$sel:fields:NRsyslogRsyslog$sel:msg:Rsyslog$sel:timereported:Rsyslog$sel:hostname:Rsyslog$sel:syslogtag:Rsyslog$sel:inputname:Rsyslog$sel:fromhost:Rsyslog$sel:fromhost_ip:Rsyslog$sel:pri:Rsyslog$sel:version:Rsyslog$sel:syslogfacility:Rsyslog$sel:syslogseverity:Rsyslog$sel:timegenerated:Rsyslog$sel:programname:Rsyslog$sel:protocol_version:Rsyslog$sel:app_name:Rsyslog$sel:procid:Rsyslog ParseResult PR_HuppelPR_Lmod PR_Shorewall PR_Snoopy PR_Torque$fToJSONParseResult$fShowParseResult$fEqParseResult$fGenericParseResult $fShowRsyslog$fGenericRsyslog$fShowNormalisedRsyslog$fGenericNormalisedRsyslog$fToJSONNormalisedRsyslog$fToJSONRsyslog$fFromJSONRsyslog parseSnoopyrsyslogLogstashTemplate parseMessage getJsonKeyparseRsyslogLogstashString Normalised TransformedOriginalnormaliseJsonInput normaliseTextnormaliseRsyslogdefaultPortConfig defaultConfigsystemConfigFileLocation readConfigbaseGHC.Num+#text-1.2.2.2-KC7dWoG09dA1F6jKj5GSqhData.Text.InternalTextconvertMessageGHC.BaseMaybeNothing