úÎ/,**[      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZNone%Command to loggerLog entry, scope or messageType to initialize rule updaterLog Logger$Converts message some representation Log messageRule for politicsScope politics Level of message'Default politics(Debug politics)Trace politics*Silent politics+Supress all messages politics, Make rule-Absolute scope-path.Relative scope-path/Scope-path for child0Root scope-path1Scope-path by text p/ -- root foo/bar -- relative /foo/bar -- absolute foo/bar/ -- child of relative /foo/bar/ -- child of absolute 2 Rule by path3Just set new politics4Use predefined politics5Set new low level6Set new high level7*Convert consumer creater to logger creater8 Empty log9 Create logŽMessages from distinct threads are splitted in several chans, where they are processed, and then messages combined back and sent to log-thread:Write message to log; New log-scope</New log-scope with lifting exceptions as errors='New log-scope with tracing scope result>+Apply commands to construct list of entries?'Flatten entries to raw list of commands@ Apply rules[Apply rules to pathD  !"#$%&'()*+,-./0123456789:;<=\>?@[]A  !"#$%&'()*+,-./0123456789:;<=>?@A !"#$%&'()*+,-./0123456 >?@ 7 89:;<=)  !"#$%&'()*+,-./0123456789:;<=\>?@[]None4A Parse ruleFormat: path: rule1, rule2 where "path" is argument for 1, and "rule" is one of low low-value for 5high high-value for 6set low-value high-value for 3 use predefind for 4 Examples: 6/: use trace /foo: low trace foo/bar/quux: use silent CTry parse rule ignoring errorsDTry parse rules ignoring errors^ Value names_Predefined politicsEConstant rulesFRules from mvarGRules from file ABCD^_EFGABCDEFGABCDEFG ABCD^_EFGNone357NScope with log all exceptionsO%Workaround: we must explicitely post PScope with log exceptions from `) | Workaround: we must explicitely post QScope with tracing resultS Ignore errorTIgnore MonadError errorU Trace valueHIJKLMNOPQRSTUaHIJKLMNOPQRSTUJKLMNOPQRSTUHIHIJKLMNOPQRSTUaNoneVDefault time formatW#Text log converter with time formatX+Text log converter with default time formatVWXVWXVWXVWXNoneYYYYNoneZZZZNoneT  !"#$%&'()*+,-./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZb       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefsimpl_7vYN2phyZ3I5aAziUqL0NBSystem.Log.Simple.BaseSystem.Log.Simple.ConfigSystem.Log.Simple.MonadSystem.Log.Simple.TextSystem.Log.Simple.ConsoleSystem.Log.Simple.FileSystem.Log.SimpleCommand EnterScope LeaveScope PostMessageEntryScope RulesLoadLoglogPostlogRulesLoggerConsumer withConsumer ConverterMessage messageTime messageLevel messagePath messageTextRulesRulerulePath rulePoliticsPolitics politicsLow politicsHighLevelTraceDebugInfoWarningErrorFataldefaultPolitics debugPolitics tracePoliticssilentPoliticssupressPoliticsruleabsoluterelativechildrootpath%=politicsuselowhighloggernoLognewLogwriteLog scopeLog_scopeLog scoperLogentriesflattenrules parseRule parseRules parseRule_ parseRules_constantmvarfileCfgMonadLogaskLog withNoLogwithLoglogscope_scopescopeM_scopeMscoperscoperM ignoreError ignoreErrorMtracedefaultTimeFormattextFmttextconsolefileapply foldEntry$fNFDataMessagevalues predefinedsmtl_KMpng31YRYc5JfMWFZ3FCUControl.Monad.Error.Class MonadError$fMonadLogReaderT