úÎ!wßkë“      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’None"#478=>?@AMPSUVXY“” •– —˜™š ›None"#478=>?@AMPSUVX |) œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·None"#478=>?@AMPSUVX+salakWritable data structure.  is designed for working with ¸5 value pased by salak. It provide a way to override ¸þ value provided by salak, can be used in the application which need to change values of some configurations by overriding it directly. For example, logger function can use a log level property to control which level of logs should be printed. By using  Writeable- value, we can change the property directly.salak Convert a ¸ value to  value.salak Get value.salakSet or remove override value.2019 Daniel YUMITleptonyu@gmail.com experimentalportableNone"#478=>?@AMPSUVX,¥salakA Trie from keys  to values v, which is a recursive map."salakO(1). A trie with a single element.#salakO(1). The empty trie.$salakO(1)5. Return True if this trie is empty, False otherwise.%salak O(log (n+m))K. Return True if the specified key is present in the trie, False otherwise.(salak O(log (n+m))|. Return the primitive value to which the specified key is mapped, or Nothing if this trie contains no mapping for the key.)salakO(log n)™. Associate the specified value with the specified key in this trie. If this trie previously contained a mapping for the key, the old value is replaced.*salakO(log m). The expression (*& k f trie) modifies the sub trie at k.+salak O(log (n+m)). The expression (+( ks f trie) modifies the sub trie at ks.,salakO(1)I. The expression (update f trie) updates the primitive value in the trie.-salakO(n)R. The expression (update f ks trie) updates the primitive value of sub trie at ks..salakO(n*m)F. Return a list of this tries's elements. The list is produced lazily./salak O(n*m*log n)|. Construct a trie with the supplied mappings. If the list contains duplicate mappings, the later mappings take precedence.0salakO(n)O. Filter this trie by retaining only elements which values satisfy a predicate.1salakO(n+m)„. The union of two tries. If a key occurs in both tries, the provided function (first argument) will be used to compute the result.2salakO(n+m)T. The union of two tries. All the keys will be calculated by the provided function. !"#$%&'()*+,-./012 !#"$%(&')*+,-./012None"#478=>?@AMPSUVX0Asalak%Reload result, show erros or changes.CsalakIf reload process has errors.DsalakFIf hasError then this show error messages, else this show change logs.89@?>=<;:¹ºABDCE»F¼½¾¿ÀÁÂÃÄÅGNone"#478=>?@AHMPSUVXKÌHsalakProp operators.)Suppose we have the following definition: Gdata Config = Config { enabled :: Bool , level :: IO LogLevel }IsalakParse or default value ˆinstance MonadThrow m => FromProp m Config where fromProp = Config <$> "enabled" .?= True <*> "level" .?= (return LevelInfo)IO value will work right.Jsalak+Parse or auto extract default value from a Æ value Ãinstance Default Config where def = Config True (return LevelInfo) instance MonadThrow m => FromProp m Config where fromProp = Config <$> "enabled" .?: enabled <$> "level" .?: levelKsalak$Type class used to parse properties.LsalakParse properties from .Msalak ExceptionNsalak Parse failedOsalak Not foundPsalak-Property parser, used to parse property from QsalakECore type class of salak, which provide function to parse properties.Rsalak3Monad has the ability to get a SourcePack instance.Ssalak0Get reload action which used for reload profilesVsalakParse properties using K. For example: Êa :: Bool <- require "bool.key" b :: Maybe Int <- require "int.optional.key" c :: Either String Int <- require "int.error.key" d :: IO Int <- require "int.reloadable.key"V supports parse ¸ values, which actually wrap a Çy variable and can be reseted by reloading configurations. Normal value will not be affected by reloading configurations.WsalakParse primitive value from XsalakParse enum value from ÈÉsalak)Support for setting default normal value.ÊsalakSupport for setting default ¸ value.ËsalakSupports for parsing ¸ value.Ìsalak5Automatic convert literal string into an instance of P m a.ÍÎHJIKLMONPÏÐQVUTSRÑÒÓÔÕÖ×WXØÙI5J52019 Daniel YUMITleptonyu@gmail.com experimentalportableNone"#478=>?@AHMPSUVXY*YsalakConvert arguments to propertiesZsalakSimple IO Monad[salak Standard Q instance.\salakSimple IO Monad]salakXConfiguration Loader Monad, used for load properties from sources. Custom loaders using __salak Basic loader`salak Simple loaderasalak-Standard salak functions, by load and with a 8 instance. Users should use 8 to create custom Q- instances, then you get will an instance of Q.bsalak/Standard salak functions, by load and run with [.csalakLoad mock variables into Fdsalak Load environment variables into Fesalak+Default way to parse command line argumentsfsalak+Default way to parse command line argumentsgsalak6Try load file, if file does not exist then do nothing.= 89:;<=>?@EFGQRSTUVYZ[\]^_`abcdefg=ab_`]\[ZQRSTUVcdfYegFE G ^89:;<=>?@2019 Daniel YUMITleptonyu@gmail.com experimentalportableNone"#478=>?@AMPSUVXiá €salakLoad file by extensionsalakProp load configurationƒsalakSpecify config key, default is  application.„salak Specify config name, default is  application.…salak'Search current directory, default true.†salak%Search home directory, default false.‡salakHow to parse commandline.ŠsalakType synonyms of 8‹salak4Load files with specified format, yaml or toml, etc.ŒsalakjDefault load salak. All these configuration sources has orders, from highest priority to lowest priority: ÿ1. loadCommandLine 2. loadEnvironment 3. loadConfFiles 4. load file from folder `salak.conf.dir` if defined 5. load file from current folder if enabled 6. load file from home folder if enabled 7. file extension matching, support yaml or toml or any other loader.Žsalak"Run salak, load strategy refer to Œsalak"Run salak, load strategy refer to <8ABCDHIJKLMNOPQRSTUVWXYZ[\]abcdef|}~€‚‡ƒ„…†ˆ‰Š‹ŒŽ<Žba‚‡ƒ„…†ˆ‰QRSTUV[ZHIJKLPWX8ŠMNO]\fYedcŒ€‹~|}ABCD|3}3Ú    !"#$$%&'())*+,-./0123456789:;<=>?@ABBCDEFGHIJJKLMNOPQRSTUUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒƒ„…†‡‡ˆ‰Š‹ŒŽ‘’“”•– —˜ —™š›œžŸ ¡¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎ ÏÐÑÒÓÔÕÖרÙWÚÛÜÝÞßàáâãä"salak-0.3.5-LHYQLgSDjHD8w5t1NMcfkkSalak.InternalSalak Salak.TrieSalak.Internal.KeySalak.Internal.ValSalak.Internal.WritableSalak.Internal.SourceSalak.Internal.PropbaseControl.Monad.IO.ClassMonadIO(exceptions-0.10.2-BCw4sZZBgaL5zRGtRt3vrKControl.Monad.Catch MonadThrow MonadCatchToKeystoKeysKeysunKeysKeyKTKIfromKeys simpleKeysToValuetoValValueVTVIVBVLTVDVHVUVRValWritable toWritable getWritable setWritableTrietvartmap singletonemptynullmembersubTriesubTrieslookupinsertmodifymodify'updatealtertoListfromListfilter unionWith unionWith'$fTraversableTrie$fFoldableTrie $fShowTrie$fEqTrie $fFunctorTrie SourcePacksourceoriginkrefprefqreflrefreload ReloadResulthasErrormsgs TraceSourceSourcesetValPropOp.?=.?:FromPropfromPropSalakException NullExceptionProp MonadSalak askSourcePack askReloadsetLogFlogSalakrequire readPrimitivereadEnumParseCommandLineRunSalak RunSalakT LoadSalak LoadSalakTliftNTloadTrieloadListloadAndRunSalak'loadAndRunSalakloadMockloadEnvdefaultParseCommandLineloadCommandLine tryLoadFile$fMonadUnliftIOLoadSalakT$fMonadSalakLoadSalakT$fMonadUnliftIORunSalakT$fMonadSalakRunSalakT$fFunctorLoadSalakT$fApplicativeLoadSalakT$fMonadLoadSalakT$fMonadIOLoadSalakT$fMonadTransLoadSalakT$fMonadStateLoadSalakT$fMonadThrowLoadSalakT$fMonadCatchLoadSalakT$fFunctorRunSalakT$fApplicativeRunSalakT$fMonadRunSalakT$fMonadTransRunSalakT$fMonadIORunSalakT$fMonadReaderRunSalakT$fMonadThrowRunSalakT$fMonadCatchRunSalakT:|:HasLoadloadersExtLoad PropConfig configKey configName searchCurrent searchHome commandLineloggerFloadExt loadByExt loadSalak loadSalakWithrunSalak runSalakWith$fDefaultPropConfig$fFromPropmFileConfig $fHasLoad:|:GHC.Base<>memptyParser singletonKey toKeyListshowKeyisStrisNumkeyExprValsunValsVRefVRRVRTPriorityModTypeNoopAddDelModpriority nullValuetypeOfVgetTypemkValueexprCharvrefnullVals minimumVals emptyVals deleteValsgetValdelValsmodVals singletonValsmodVals'ghc-prim GHC.TypesIOLFuncQFunc TraceValsdiffextractgenfmtfmtMod loadSource traceError traceValssetErr0setVal01data-default-class-0.1.2.0-FeIQ5tLoVZBHMSgrT9zptQData.Default.ClassDefaultGHC.MVarMVar text-1.2.3.1Data.Text.InternalText $fPropOpfa$fPropOpPropIO $fFromPropmIO$fIsStringProp GFromProp gFromPropunProprunPropwithPropwithKeywithKeysfailKeybuildIOreadPrimitive'gEnumtoNum