K      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~1 Safe  SafeU!None "NonePuppet base working directoryThe path to the manifests.The path to the modules.The path to the template.EThe path to a tests folders to hold tests files such as the pdbfiles.   None FA table where keys are the names of the computations, and values are s.&Total number of calls to a computation(Total time spent during this computationMinimum execution timeMaximum execution time&Returns the actual statistical values.#Create a new statistical container.?Wraps a computation, and measures related execution statistics.  Statistics containerAction identifier Computation         None0>L&All the possible statements$Special statement used to include the expressions that are top level. Certainly buggy, but probably just like the original implementation.'2Resource Collector including exported collector (` ||`) e.g `User  |title == 'jenkins' | { groups +> "docker"}` fhttps://docs.puppetlabs.com/puppet/latest/reference/lang_collectors.html#language:-resource-collectors)Higher order function call.-e.g $newvar = world/<A node is a collection of statements + maybe an inherit node5%All types of conditional statements (case, if, etc.) are stored as an ordered list of pair (condition, statements) (interpreted as "if first cond is true, choose first statements, else take the next pair, check the condition ...")7Resource override: e.g `File[title] { mode => 755}` ~https://docs.puppetlabs.com/puppet/latest/reference/lang_resources_advanced.html#amending-attributes-with-a-resource-reference9/Resource default: e.g `File { mode => 755 }` lhttps://docs.puppetlabs.com/puppet/latest/reference/lang_defaults.html#language:-resource-default-statements;0Resource declaration: e.g `file { mode => 755}`=Relationship link type.G5Normal resource, that will be included in the catalogHType for virtual resourcesIType for exported resourcesJ]These are resources that are exported AND included in the catalogderiving (Generic, Eq, Show)N$Search expression inside collector ` | searchexpr |`TThe Tsj+All conditionals are stored in this format.k This is for higher order functions.l&Terminal object contains no expressionp3An unresolved value, typically the parser's output.q*Special tokens generated when parsing the true or false literals.r Raw string.sYA string that might contain variable references. The type should be refined at one point.t1Special token that is generated when parsing the undef literal.uA Resource[reference]x?The regular expression compilation is performed during parsing.+>`=>`oLambda block parameters: Currently only two types of block parameters are supported: single values and pairs. |k| |k,v|High Order "lambdas"1Position in a puppet file. Currently an alias to  .5A pair containing the start and end of a given token.#Properly capitalizes resource types2Generates an initial position based on a filename. Generates a % based on a filename and line number. !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~KLMFGHIJBCDE=>?@ANOPQRS56349:%& !"#$;<7812/0-.+,)*'(2  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop qrstuvwxyz{|}~ NoneUSee System.FilePath.PosixSee System.FilePath.PosixDrop the filename. 'dropFileName x == fst (splitFileName x)(See System.FilePath.Posix)*Split a filename into directory and file. combine is the inverse. LValid x => uncurry (</>) (splitFileName x) == x || fst (splitFileName x) == "./" Valid x => isValid (fst (splitFileName x)) splitFileName "file/bob.txt" == ("file/", "bob.txt") splitFileName "file/" == ("file/", "") splitFileName "bob" == ("./", "bob") Posix: splitFileName "/" == ("/","") Windows: splitFileName "c:" == ("c:","")(See System.FilePath.Posix)?Read a yaml file and throw a runtime error if the parsing fails:helper for hashmap, in case we want another kind of map ../ !"#$%&'()*+,-./0123456789:;<Safe'A rendering function that drops colors:=~>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~=None #NoneNoneF!Run a puppet parser against some  input.Parse a collection of puppet .Parse a puppet T.tHeterogeneous chain (interleaving resource declarations with resource references)needs to be supported: class { 'docker::service': } -> Class[docker]LJ None!"+,034579NU4 Fields for the resource endpointFields for the node endpointFields for the fact endpointAPretty straightforward way to define the various PuppetDB queries Shttp://docs.puppetlabs.com/puppetdb/1.5/api/commands.html#replace-catalog-version-3 Qhttp://docs.puppetlabs.com/puppetdb/1.5/api/commands.html#replace-facts-version-1 Shttp://docs.puppetlabs.com/puppetdb/1.5/api/commands.html#deactivate-node-version-1 Khttp://docs.puppetlabs.com/puppetdb/1.5/api/query/v3/facts.html#get-v3facts Shttp://docs.puppetlabs.com/puppetdb/1.5/api/query/v3/resources.html#get-v3resourcesHThis is only here to tell the test PuppetDB to save its content to disk.Wire format, see  Khttp://docs.puppetlabs.com/puppetdb/1.5/api/wire_format/catalog_format.html.\Used to represent a relationship between two resources within the wired format (json). See ]http://docs.puppetlabs.com/puppetdb/2.3/api/wire_format/catalog_format_v5.html#data-type-edgeRAttributes (and providers) of a puppet resource type bundled with validation rules:A fully resolved puppet resource that will be used in the . Resource name.All the resource aliasesResource parameters.Resource relations. MResource scope when it was defined, the real container will be the first item 0Source code position of the resource definition. 2The node were this resource was created, if remote)Overriding forbidden, will throw an errorCan silently replaceSilently ignore errorsCan append values"For collectors, optional resourcesFor stuff like realizeLogThe main monadC"TODO related to Scope: explain ...G0We enter the scope as the child of another classH1We enter the scope as the parent of another classJContained at node or root levelKContained in a classLPContained in a define, along with the position where this define was ... definedMSDummy container for imported resources, so that we know we must update the nodenameNWThis one is used when finalizing imported resources, and contains the current node nameO4From the evaluation of Resource Override DeclarationT3From the evaluation of Resource Default DeclarationV]This type is used to differenciate the distinct top level types that are exposed by the DSL.WThis is for node entries.XThis is for defines.YThis is for classes.ZMPuppet has two main ways to declare classes: include-like and resource-like chttps://docs.puppetlabs.com/puppet/latest/reference/lang_classes.html#include-like-vs-resource-like[%using the include or contain function\resource like declarationcThe intepreter can run in two modes : a strict mode (recommended), and a permissive mode. The permissive mode let known antipatterns work with the interpreter.f"The type of the Hiera API functiong#The different kind of hiera querieshstandard hiera queryi hiera_arrayj hiera_hash           !"#$% !"#$%&'()*+,-./0123456789:;<&'(=>)*+,-./01234?@56789:;<AB=>?@ABCDCDEFGHIJKLMNOPQRSTUEFGHVWXYZ[\]^_`abcdefWAll the variables that Hiera can interpolate, the top level ones being prefixed with :: The queryghijklmnopqrstuvwxyzIJKLMNOPQRST{|}~UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ TU  {|}~ABEFGH;<CD !"#$%&'()*+,-./0123456789:=>?@klmnopqrIJKLMN ]^_`abcdeghijVWXYOPQRSZ[\stuyxfwv zu             !"#$% !"#$%&'()*+,-./0123456789:;<&'(= >)*+,-./01234? @56789:;<AB=>?@ABCDCDEFGHIJKLMNOPQRSTUEFGHVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyzIJKLMNOPQRST{|}~UVWXYZ[\]^_` a b cdefghijklmnopqrstuvwxyz{|}~ None4INUFThrows an error if we are in strict mode A warning in permissive modeServer settingsThe warning message.The error message. NoneU None 3579UPAn attoparsec parser that turns text into parts that are ready for interpolation aThe only method you'll ever need. It runs a Hiera server and gives you a querying function. The Nil. output is explicitely given as a Maybe type. CA dummy hiera function that will be used when hiera is not detected#The combinator for "normal" queries  f    f  $None!"4U None '(>KL Given an URL (ie.  http://localhost:8080), will return an incomplete .    None    None!"    NoneUPA useful type that is used when trying to perform arithmetic on Puppet numbers.IConverts class resource names to lowercase (fix for the jenkins plugin).^A hiera helper function, that will throw all Hiera errors and log messages to the main monad.+The implementation of all hiera_* functionsTries to convert a pair of ks into ys, as defined in attoparsec. If the two values can be converted, it will convert them so that they are of the same typeThis tries to run a numerical binary operation on two puppet expressions. It will try to resolve them, then convert them to numbers (using  toNumbners0), and will finally apply the correct operation.4Resolves a variable, or throws an error if it can't.BA simple helper that checks if a given type is native or a define.(A pure function for resolving variables.,A helper for numerical comparison functions..Handles the wonders of puppet equality checks.(The main resolution function : turns an T into a k, if possible. Resolves an p (terminal for the T data type) into a k)Turns strings, numbers and booleans into , or throws an error.9Turns everything it can into a number, or throws an error CresolveExpressionString = resolveExpression >=> resolvePValueString CresolveExpressionNumber = resolveExpression >=> resolvePValueNumber Just like , but accepts arrays.Turns a k into a /, as explained in the reference documentation.4This resolve function calls at the expression level.Turns an unresolved N( from the parser into a fully resolved ].Turns a resource type and ]6 into something that can be used in a PuppetDB query.Checks whether a given  matches a ]v. Note that the expression doesn't check for type, so you must filter the resources by type beforehand, if needs be.vGenerates variable associations for evaluation of blocks. Each item corresponds to an iteration in the calling block. Sets the proper variables, and returns the scope variables the way they were before being modified. This is a hack that ensures that variables are local to the new scope._It doesn't work at all like other Puppet parts, but consistency isn't really expected here ...!?Restores what needs restoring. This will erase all allocations.*Evaluates a statement in "pure" mode. TODOThis extracts the final expression from an HOLambdaCall. When it does not exists, it checks if the last statement is in fact a function callAll the "higher order function" stuff, for "value" mode. In this case we are in "pure" mode, and only a few statements are allowed.$ Resource type Resource name left operand right operand operationThe whole scope data.Current scope name.Full variable name. ! ! !$ !None !"345U#$The operational interpreter function"#"#"#"#None &(Useful helper for buiding error messages+4Validate resources given a list of valid parameters:Gchecks that no unknown parameters have been set (except metaparameters)\This validator always accept the resources, but add the default parameters (to be defined :),/Helper function that runs a validor on a PArray-;This checks that a given parameter is a string. If it is a  ResolvedInt or  ResolvedBool! it will convert them to strings./*Validates a string or an array of strings0GMakes sure that the parameter, if defined, has a value among this list.12This fills the default values of unset parameters.2,Checks that a given parameter, if set, is a  ResolvedInt. If it is a n it will attempt to parse it.4OCopies the "name" value into the parameter if this is not set. It implies the - validator.5SChecks that a given parameter is set unless the resources "ensure" is set to absent6%Checks that a given parameter is set.7@Helper that takes a list of stuff and will generate a validator.!$%&'()*+,-./0123456789:;<=>>?@ABCDEFGHIJKLMNOPRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~$%&'()*+,-./0123456789:;<=><'%;-./98:01)4+$72365=(*,&>!$%&'()*+,-./0123456789:;<=>%None&None'None(None )None*None+None,None-None0      .None     /None0NoneNone?/The map of native types. They are described in Puppet.NativeTypes.Helpers.@HContrary to the previous iteration, this will let non native types pass.?@?@?@?@NoneABuild the map of available ext functions If the ruby file is not found on the local filesystem the record is ignored. This is to avoid potential namespace conflictAThe function is pure and always return the same "random" passwordCSimple implemenation that does not handle all cases. For instance  auth_option; is currently not implemented. Please add cases as needed. A !AA A !Safe'BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh&BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg'cdefgGHIJKLMNOPQRSTUVWXYZ[\]^_`abhBCDEFBCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghSafeUijklmnopqrstuvwxyz{|}~ijklmnopqrstuvwxyz{|}~ijklmnopqrstuvwxyz{|}~ijklmnopqrstuvwxyz{|}~NoneU"#$%&"#$%&None4Worst name ever, this is a set of pure stub for the  ImpureMethods type.A pure =q, that can only evaluate a subset of the templates, and that can include only the supplied top level statements.6Evaluates an interpreter expression in a pure context.6A bunch of facts that can be used for pure evaluation.@A default evaluation function for arbitrary interpreter actions.A top-level statement map3A list of facts that will be used during evaluationA top-level mapThe action to evaluateNone4 IncompleteExtracts the statements from , , Node and the spurious statements of $.0'//0'None!"INU Call the operational # function to compute the catalog. Returns either an error, or a tuple containing all the resources, dependency map, exported resources, and defined resources alongside with all messages that have been generated by the compilation process. The later 8 (eg. all class declarations) are pulled out of the ?r and might not be up to date. There are only useful for coverage testing (checking dependencies for instance).(@Apply resource defaults, references overrides and expand defines)lGiven a toplevel (type, name), return the associated parsed statement together with its evaluated resources^Main internal entry point, this function completes the interpretation TODO: add some doc here*eThis functions performs all the actions triggered by calls to the realize function or other collectors. It returns a pair of "finalcatalogs", where the first part is the new catalog, and the second part the map of all modified resources. The second part is needed so that we know for example which resources we should test for expansion (custom types).+\Fold all attribute declarations checking for duplicates key locally inside a same resource.,This function loads class and define parameters into scope. It checks that all mandatory parameters are set, that no extra parameter is declared.aIt is able to fill unset parameters with values from Hiera (for classes only) or default values.-gEnters a new scope, checks it is not already defined, and inherits the defaults from the current scopeInheriting the defaults is necessary for non native types, because they will be expanded in "finalize", so if this was not done, we would be expanding the defines without the defaults applied.Takes a resource type, title, and a hash of attributes that describe the resource Create the resource if it does not exist alreadyTakes a resource type, title, and a hash of attributes that describe the resource(s).5The whole environment required for computing catalog.Server settings/()0*+123,-4NSet if this is an inheritance load, so that we can set calling module properly56789:;<=>?.@AB/()0*+123,-456789:;<=>?.@ABNone3579U8Initializes the test DB using a file to back its content0Starts a new PuppetDB, without any backing file.#CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcNoneU'The supported PuppetDB implementations.;Your standard PuppetDB, queried through the HTTP interface.*A stupid stub, this is the default choice.GA slow but handy PuppetDB implementation that is backed by a YAML file.Given a 0, will try return a sane default implementation.Turns a  and  4 into a document that can be serialized and fed to  puppet apply.NoneFU4Contains the implementation of the StdLib functions..defghijklmnopqrstuvwxyz{|}~.defghijklmnopqrstuvwxyz{|}~None3579UThe list of native types.generate default preferences:   1NoneUNoneU"Entry point for all optional tests+Tests that all users and groups are defined4Test source for every file resources in the catalog.>Check source for all file resources and append failures along.Only test the  `puppet:///`c protocol (files managed by the puppet server) we don't test absolute path (puppet client files)None!"U'API for the Daemon. The main method is 5: given a node and a list of facts, it returns the result of the compilation. This will be either an error, or a tuple containing: - all the resources in this catalog - the dependency map - the exported resources - a list of known resources, that might not be up to date, but are here for code coverage tests.Notes :It might be buggy when top level statements that are not class/define/nodes are altered, or when files loaded with require are changed.(The catalog is not computed exactly the same way Puppet does. Some good practices are enforced, particularly in strict mode. For instance, unknown variables are always an error. Querying a dictionary with a non existent key returns undef in puppet, whereas it would throw an error in strict mode.fEntry point to get a Daemon It will initialize the parsing and interpretation infrastructure from the .Internally it initializes a thread for the LUA interpreter, and a thread for the Ruby one. It should cache the AST of every .pp file, and could use a bit of memory. As a comparison, it fits in 60 MB with the author's manifests, but really breathes when given 300 MB of heap space. In this configuration, even if it spawns a ruby process for every template evaluation, it is way faster than the puppet stack.@It can optionally talk with PuppetDB, by setting an URL via the #. The recommended way to set it to  http://localhost:8080 and set a SSH tunnel : &ssh -L 8080:localhost:8080 puppet.host=In case of a Left value, print the error and exit immediatelyReturn an HOF that would parse the file associated with a toplevel. The toplevel is defined by the tuple (type, name) The result of the parsing is a single Statement (which recursively contains others statements)>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 2345"6"7"8"9":";"<"=>?@@ABCDEFGHIJKLMNOPQRSTUVVWWXXYYZZ[[\\]]^^__``aabcdefghijklmnopqrstuvwxyz{|}~                                                  ! " " # $ $ % & & ' ( ) * + , - . / 0 1 2 3 3 4 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S S T T U U V V W W X Y Z [ \ ] ^ _ ` a b b c d e f f g h i j k l m n o p q r s t u v w x y z { | } ~            h                                                                                                                                                   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUyVWXYZ[\]^_`abcdefghijklmnolpqrstuvwxyz{|}~             !!!!!!!!!!!!!!!!"" " " " "6" "> !"#$%&'%&(%&)%&)%&*%&+%&+%&,%&-%&-%&.%&/%&/%&0%&1%&1%&2%&3%&3%&4%&5%&5%&6%&7%&7%&8%&9%&9%:;%:<%:=%:>?@AB@AC@AD@AE@AF@AG@AH@AI@AJ@AK@AL@AM@AN@AO@AP@AQ@AR@AS@AT@A<@AU@AV@AW@AX@AY@AZ@A[@A\@A]@A^@A_@A`@Aa@Ab@Ac@Ad@Ae@Af@Ag@Ah@Av@Ai@Aj@Ak@Al@Am@An@Ao@Ap@Aq@Ar@As@At@Au@Av@Aw@Ax@Ay@Az@A{@A|@A}@A~@A@A@A@A@AA@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@Aw@A@A@A@A@A@A@A@A@A@A@A##ywv}x                                    ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                             $   %%%%&&&&&&&'''(((((((((((((((((())*****++,,---------------....//000      !"#$%&'()*+,-./01223456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~1111111111111111A2TM0iMDq9Y8NsOIdLTfvz SafeProcessPuppet.Preferences Puppet.StatsPuppet.Parser.Types Puppet.Utils Puppet.PPPuppet.Parser.PrettyPrinter Puppet.ParserPuppet.Interpreter.TypesPuppet.Interpreter.UtilsFacter Hiera.ServerPuppetDB.RemotePuppetDB.Dummy Puppet.Interpreter.PrettyPrinterPuppet.Interpreter.ResolvePuppet.Interpreter.IOPuppet.NativeTypes.HelpersPuppet.NativeTypesPuppet.PuppetlabsErb.Ruby Erb.Parser Erb.EvaluatePuppet.Interpreter.Pure Puppet.LensPuppet.InterpreterPuppetDB.TestDBPuppetDB.Common Puppet.StdlibPuppet.OptionalTests Puppet.DaemonPaths_language_puppetPuppet.Interpreter.RubyRandom Puppet.PathsPuppet.Parser.UtilsPuppet.ManifestsPuppet.NativeTypes.ConcatPuppet.NativeTypes.CronPuppet.NativeTypes.ExecPuppet.NativeTypes.FilePuppet.NativeTypes.GroupPuppet.NativeTypes.HostPuppet.NativeTypes.MountPuppet.NativeTypes.NotifyPuppet.NativeTypes.PackagePuppet.NativeTypes.SshSecurePuppet.NativeTypes.UserPuppet.NativeTypes.ZoneRecord Erb.ComputesafeReadProcessTimeoutsafeCreateProcesssafeReadProcessterminateProcessGroupPuppetDirPathsHasPuppetDirPathspuppetDirPathsbaseDir manifestPath modulesPath templatesPathtestPathMStats StatsTable StatsPoint_statspointCount_statspointTotal_statspointMin_statspointMaxgetStatsnewStatsmeasure StatementResourceDeclarationResourceDefaultDeclarationResourceOverrideDeclarationResourceCollectionDeclarationClassDeclarationDefineDeclarationNodeDeclarationConditionalDeclarationVarAssignmentDeclarationMainFunctionDeclarationHigherOrderLambdaDeclarationDependencyDeclaration TopContainerDepDecl ResCollDeclHigherOrderLambdaDecl MainFuncDecl VarAssignDeclNodeDecl DefineDecl ClassDeclConditionalDeclResOverrideDeclResDefaultDeclResDeclLinkTypeRNotifyRRequireRBefore RSubscribeNodeDescNodeName NodeMatch NodeDefault VirtualityNormalVirtualExportedExportedRealized CollectorType CollectorExportedCollectorSearchExpressionEqualitySearchNonEqualitySearch AndSearchOrSearch AlwaysTrue ExpressionEqual DifferentNotAndOrLessThanMoreThan LessEqualThan MoreEqualThan RegexMatch NotRegexMatchContainsAddition SubstractionDivisionMultiplicationModulo RightShift LeftShiftLookupNegateConditionalValueFunctionApplicationTerminal SelectorCase SelectorValueSelectorDefaultUnresolvedValueUBooleanUString UInterpolableUUndefUResourceReferenceUArrayUHashURegexpUVariableReference UFunctionCall UHOLambdaCallUNumber CompRegexArrowOp AppendArrow AssignArrow AttributeDecl ChainableRes ChainResColl ChainResDecl ChainResRefr HOLambdaCall _hoLambdaFunc _hoLambdaExpr_hoLambdaParams_hoLambdaStatements_hoLambdaLastExprLambdaParametersBPSingleBPPair LambdaFuncLambEachLambMap LambReduce LambFilter LambSlicePosition PPosition capitalizeRT lSourceName lSourceLine lSourceColumn initialPPostoPPosrel2textHasHOLambdaCall hOLambdaCall hoLambdaExpr hoLambdaFunchoLambdaLastExprhoLambdaParamshoLambdaStatementstext2Scientificscientific2textstrictifyEithertextElemgetDirectoryContents takeBaseName takeDirectory loadYamlFile ifromListikeys isingleton ifromListWith iinsertWith iunionWithgetFilesttext prettyToTextdisplayNocolor capitalize parensList hashComma stringEscapeshowPosshowPPosshowAssshowArgsshowFuncbraceStatements ppStatements$fPrettyStatement$fPrettyNodeDesc$fPrettyArrowOp$fPrettyLinkType$fPrettySelectorCase$fPrettyHOLambdaCall$fPrettyUnresolvedValue$fPrettySearchExpression$fPrettyLambdaParameters$fPrettyLambdaFunc$fPrettyExpression runPParser puppetParser expression ResourceFieldRTag RCertname RParameterRTypeRTitle RExportedRFileRLine NodeField FactFieldFNameFValue FCertnameQueryQEqualQGQLQGEQLEQMatchQAndQOrQNotQEmpty PuppetDBAPIpdbInformationreplaceCatalog replaceFactsdeactivateNodegetFacts getResourcesgetNodescommitDBgetResourcesOfNodeNodeInfoFactInfo WireCatalog_wireCatalogNodename_wireCatalogVersion_wireCatalogEdges_wireCatalogResources_wireCatalogTransactionUUID PuppetEdge FinalCatalogNativeTypeMethodsNativeTypeValidateResourceEdgeMapLinkInformationResourceCollectorTypeRealizeVirtualRealizeCollected DontRealize OverrideType CantOverrideReplace CantReplaceAppendAttribute ModifierTypeModifierCollectorModifierMustMatchResourceModifier RIdentifierInterpreterWriterInterpreterMonadInterpreterInstrGetNativeTypes GetStatementComputeTemplateExternalFunction GetNodeName HieraQueryGetCurrentCallStackIsIgnoredModuleIsExternalModuleIsStrict PuppetPaths ErrorThrow ErrorCatch WriterTell WriterPass WriterListenPDBInformationPDBReplaceCatalogPDBReplaceFactsPDBDeactivateNode PDBGetFactsPDBGetResources PDBGetNodes PDBCommitDBPDBGetResourcesOfNodeReadFile TraceEvent IoMethodsInterpreterReaderInterpreterStateScopeInformation CurContainerScopeEnteringContextSENormalSEChildSEParentCurContainerDescContRoot ContClass ContDefine ContImported ContImportResRefOverride_rrid _rrparams_rrpos ResDefaults TopLevelTypeTopNode TopDefineTopClassClassIncludeTypeClassIncludeLikeClassResourceLikeRSearchExpressionREqualitySearchRNonEqualitySearch RAndSearch ROrSearch RAlwaysTrue StrictnessStrict PermissiveHieraQueryFuncHieraQueryTypePriority ArrayMerge HashMergePValuePBooleanPUndefPStringPResourceReferencePArrayPHashPNumber PrettyErrorgetErrorFactsScope ContainermetaparametersHasRIdentifier rIdentifierinameitypeHasLinkInformationlinkInformationlinkPoslinkTypelinkdstlinksrcHasResDefaults resDefaults resDefPosresDefSrcScope resDefType resDefValuesHasResourceModifierresourceModifier rmDeclarationrmModifierType rmMutation rmResTypermSearchrmTypeHasNativeTypeMethodsnativeTypeMethods puppetFieldspuppetValidateHasScopeInformationscopeInformationscopeContainerscopeExtraTagsscopeOverrides scopeParentscopeResDefaultsscopeVariables HasResourceresourceralias rattributesridrnoderpos rrelationsrscopertags rvirtualityHasInterpreterStateinterpreterStatecurPoscurScopedefinedResourcesextraRelations loadedClassesnestedDeclarationsresModscopesHasInterpreterReaderinterpreterReaderreaderExternalFuncreaderExternalModulesreaderGetStatementreaderGetTemplatereaderHieraQueryreaderIgnoredModulesreaderIoMethodsreaderIsStrictreaderNativeTypesreaderNodename readerPdbApireaderPuppetPaths HasIoMethods ioMethodsioGetCurrentCallStack ioReadFile ioTraceEventHasCurContainer curContainercctagscctype HasNodeInfonodeInfonodeInfoCatalogTnodeInfoDeactivatednodeInfoFactsT nodeInfoNamenodeInfoReportTHasWireCatalog wireCatalogwireCatalogEdgeswireCatalogNodenamewireCatalogResourceswireCatalogTransactionUUIDwireCatalogVersion MonadThrowPos throwPosError HasFactInfofactInfo factInfoNamefactInfoNodename factInfoVal initialState getModulename extractPrismpopScope pushScope getScopeName scopeName moduleNamegetScopegetCurContainer rcurcontainergetPuppetPaths getNodeNameisIgnoredModule checkStrictisExternalModulewarndebug logWriterisEmptysafeDecodeUtf8dropInitialColonsnormalizeRIdentifier storageunits getPrefixgetOrder normalizeUnit storagedescfactRAMfactNETfactOS factOSDebian factOSLSBfactMountPointsfversionfactUser factUNamefenv factProcessor puppetDBFactshieraLoggerName startHiera dummyHiera pdbConnect dummyPuppetDBcontainerCommafixResourceNamerunHiera toNumbersresolveVariable isNativeType getVariableresolveExpression resolveValueresolvePValueStringresolvePValueNumberresolveExpressionStringresolveExpressionStrings pValue2BoolresolveFunction'resolveSearchExpressionsearchExpressionToPuppetDBcheckSearchExpressionhfGenerateAssociations hfSetvars hfRestorevarsdefaultImpureMethodsinterpretMonadNativeTypeName paramnameperrornativetypemethodsfaketype concattype defaulttypedefaultValidaterunarraystringstringsstring_svalues defaultvalueintegerintegersnamevalmandatoryIfNotAbsent mandatoryparameterFunctionsfullyQualifiednoTrailingSlashfullyQualifiedsrarrayipaddrinrangevalidateSourceOrContentbaseNativeTypesvalidateNativeType extFunctions RubyStatementPuts DropPrevSpaceDropPrevSpace' DropNextSpaceLookupOperation PlusOperationMinusOperation DivOperationMultiplyOperationShiftLeftOperationShiftRightOperation AndOperation OrOperationEqualOperationDifferentOperationAboveOperationAboveEqualOperationUnderEqualOperationUnderOperationRegexpOperationNotRegexpOperation NotOperation NegOperationObject MethodCallBlockOperationValueBTrueBFalseErrorLiteral InterpolableSymbolArraydeflexerparensbracesoperatorsymbol reservedOp whiteSpacenaturalOrFloat identifierrubyexpressiontableterm scopeLookup stringLiteral doubleQuoted singleQuoted objecttermvariablereference rubystatement textblockW textblock rubyblock erbparser parseErbFileparseErbStringextractFromState rubyEvaluate impurePure pureReaderpureEval dummyFacts dummyEval _PBoolean_PUndef_PString_PResourceReference_PArray_PHash_PNumber_Equal _Different_Not_And_Or _LessThan _MoreThan_LessEqualThan_MoreEqualThan _RegexMatch_NotRegexMatch _Contains _Addition _Substraction _Division_Multiplication_Modulo _RightShift _LeftShift_Lookup_Negate_ConditionalValue_FunctionApplication _Terminal _PrettyError_ResDecl_ResDefaultDecl _ResOverrDecl _ResCollDecl_ConditionalDecl _ClassDecl _DefineDecl _NodeDecl_VarAssignDecl _MainFuncDecl_HigherOrderLambdaDecl_DepDecl_PResolveExpression_PResolveValue _StatementsinterpretCatalogcomputeCatalogevaluateStatement loadTestDB initTestDBPDBType PDBRemotePDBDummyPDBTest getDefaultDBgenerateWireCatalog $fReadPDBTypestdlibFunctions PreferencesHasPreferences preferences prefExtFuncsprefExternalmodulesprefExtraTestsprefFactsDefaultprefFactsOverride prefHieraPathprefIgnoredmodulesprefKnowngroupsprefKnownusers prefLogLevel prefNatTypesprefPDBprefPuppetPathsprefPuppetSettingsprefStrictness dfPreferences testCatalogDaemon getCatalog parserStats catalogStats templateStats initDaemon checkErrorcatchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName RandState_array_left_initf_nextmixbitstwistvalNvalM initGenrand nextStateinitGenrandBigintrandInitrbGenrandInt32 limitedRand_baseDir _manifestPath _modulesPath_templatesPath _testPath puppetPaths!$fHasPuppetDirPathsPuppetDirPathsunMStatsgetTimetime9umbLB3SS9bBlfvFcdA5c8Text.Megaparsec.Pos SourcePos$fToJSONLinkType$fFromJSONLinkType$fHashableLinkType$fIsStringExpression$fFractionalExpression$fNumExpression$fIsListExpression$fIsStringUnresolvedValue$fIsListUnresolvedValue $fEqCompRegex$fShowCompRegex$fHasHOLambdaCallHOLambdaCall dropFileName splitFileNamecheckForSubFilesgetDirContentsbase Data.Monoid<>getDualDualappEndoEndogetAllAllgetAnyAnygetSumSum getProductProductgetFirstFirstgetLastLastgetAltAltGHC.BasemconcatmappendmemptyMonoid prettyToShow7ybm8nMRv2zJjhg8LKk5abText.PrettyPrint.ANSI.LeijenSTextSSGRSLineSFailSEmptySChar SimpleDoc prettyListprettyPrettyDocyellowwidthwhitevsepvcat underlinetupledtextsquotessquotespacesoftline softbreaksep semiBracessemirparen renderSmart renderPretty renderCompactredrbracketrbracerationalrangleputDoc punctuateplainonyellowonwhiteonred onmagentaongreen ondullyellow ondullwhite ondullred ondullmagenta ondullgreen ondullcyan ondullblue ondullblackoncyanonblueonblacknestingnestmagentalparenlist linebreaklinelbracketlbracelangleintindenthsephcathardlinehanghPutDocgroupgreenfloatflatAltfillSepfillCat fillBreakfillequals encloseSepencloseempty dullyellow dullwhitedullred dullmagenta dullgreendullcyandullblue dullblackdquotesdquotedoubledotdisplayS displayIO deunderlinedeboldcyancommacolumnscolumncoloncharcatbracketsboolboldblueblack backslashanglesalign<+><$$> dummypposdummypos6moOsfGpx5M4gsJFpK6PjiData.Text.InternalTextchainableResources OperatorChain EndOfChain someSpacetokenintegerOrDoublesymbolicsepComma sepComma1variablestringLiteral'identifierPartidentlreserved variableNamequalifqualif1 classNametypeNameresourceNameRefgenericModuleName parameterNamevariableReferenceinterpolableStringregexp puppetArray puppetHash puppetBoolresourceReferenceRawresourceReferencebarewordgenFunctionCall literalValue terminalG compileRegexp termRegexpterminalexpressionTableindexLookupChainstringExpression varAssignnodeDecl defineDeclpuppetClassParameterspuppetIfStyleConditionunlessCondition ifCondition caseConditionoperatorChainStatementzipChain depOperator assignmentsearchExpression resCollDecl classDecl mainFuncDecl hoLambdaDecl dotLambdaDeclresDefaultDeclresOverrideDecl statement statementList lambdaCall$fFoldableOperatorChain_rid_ralias _rattributes _rrelations_rscope_rpos_rnodeNNameNFact _nodeInfoName_nodeInfoDeactivated_nodeInfoCatalogT_nodeInfoFactsT_nodeInfoReportT_factInfoNodename _factInfoName _factInfoVal_puppetValidate _puppetFields _rvirtuality_rtags_linksrc_linkdst _linkType_linkPos _rmResType_rmModifierType_rmType _rmSearch _rmMutation_rmDeclaration_itype_iname_ioGetCurrentCallStack _ioReadFile _ioTraceEvent_readerNativeTypes_readerGetStatement_readerGetTemplate _readerPdbApi_readerExternalFunc_readerNodename_readerHieraQuery_readerIoMethods_readerIgnoredModules_readerExternalModules_readerIsStrict_readerPuppetPaths_scopes_loadedClasses_definedResources _curScope_curPos_nestedDeclarations_extraRelations_resMod_scopeVariables_scopeResDefaults_scopeExtraTags_scopeContainer_scopeOverrides _scopeParent_cctype_cctags _resDefType_resDefSrcScope _resDefValues _resDefPos$fShowResourceModifier$fHashableRIdentifier$fMonadWriter[]ProgramT$fMonadErrorPrettyErrorProgramT$fHashableTopLevelType$fFromJSONStrictness$fAsNumberPValue$fIsStringPValue$fExceptionPrettyError$fIsStringPrettyError$fMonoidPrettyError$fShowPrettyError$fHasRIdentifierRIdentifierHasResRefOverrideresRefOverriderridrrparamsrrpos!$fHasResRefOverrideResRefOverride#$fHasLinkInformationLinkInformation$fHasResDefaultsResDefaults%$fHasResourceModifierResourceModifier'$fHasNativeTypeMethodsNativeTypeMethods%$fHasScopeInformationScopeInformation$fHasResourceResource%$fHasInterpreterStateInterpreterState($fHasInterpreterReaderInterpreterReaderm$fHasIoMethodsIoMethodsm$fHasCurContainerCurContainer$fHasNodeInfoNodeInfo$fHasWireCatalogWireCatalog MonadStackgetCurrentCallStack$fFromJSONNodeInfo$fToJSONNodeInfo$fFromJSONFactInfo$fToJSONFactInfo$fToJSONWireCatalog$fFromJSONWireCatalog$fToJSONPuppetEdge$fFromJSONPuppetEdge$fToJSONRIdentifier$fFromJSONRIdentifier$fFromJSONResourceField$fToJSONResourceField$fFromJSONNodeField$fToJSONNodeField$fFromJSONFactField$fToJSONFactField$fFromJSONQuery$fToHttpApiDataQuery $fToJSONQuery$fFromJSONResource$fToJSONResource$fToJSONPValue$fFromJSONPValue$fFromRubyPValue$fToRubyPValue$fMonadThrowPosProgramT$fMonadStackProgramT$fMonadThrowPosEither$fHasFactInfoFactInfoqueryCombinatorCacheHieraStringPartHString HVariableInterpolableHieraStringBackend YamlBackend JsonBackendHieraConfigFile _backends _hierarchy$fPrettyHieraStringPartHasHieraConfigFilehieraConfigFilebackends hierarchyparseInterpolableStringinterpolateTextresolveInterpolableinterpolatePValuequery$fFromJSONHieraConfigFile!$fFromJSONInterpolableHieraString#$fHasHieraConfigFileHieraConfigFilefilterStatementsPDBAPIPDBAPIv3apicontainerComma''containerComma'meta resourceBodyresourceRelationspf showQuery$fPrettyLinkInformation$fPrettyInterpreterInstr$fPrettyRSearchExpression$fPrettyResourceModifier$fPrettyResDefaults$fPrettyCurContainerDesc$fPrettyResource$fPrettyRIdentifier$fPrettyTopLevelType$fPrettyPValue $fPrettyText NumberPair hieraCallAOpjii9SDJX7PvXimAKnq4Data.Aeson.Types.InternalNumberbinaryOperation numberComparepuppetEqualityresolveExpressionNumberghc-prim GHC.TypesBoolresolveFunctionevalPureStatementtransformPureHfevaluateHFCPuresha1md5integerOperationpdbresourcequery calcTemplateresolveExpressionSEeval addDefaultscheckParameterListstring' integer''fullyQualified' checkipv4 nativeConcatnativeConcatFragmentconcatparamfunctionsfragmentparamfunctions nativeCronparameterfunctionsvrangevrange'parsevalcheckint checkint' nativeExecfullyQualifiedOrPathPermSetRWX PermPartsSpecialUserGroupOther nativeFile validateModenumeric checkSourceugomkmode modestringmodepart nativeGroup nativeHost checkhostnamecheckhostname'checkhostname'' nativeMount nativeNotifyPackagingFeaturesHoldableInstallOptions Installable PurgeableUninstallOptions Uninstallable Upgradeable Versionable nativePackageisFeatureSupported getFeature checkFeatures$fHashablePackagingFeaturesnativeSshSecure userOrTarget keyIfPresent nativeUsernativeZoneRecordvalidateMandatories fakeTypes defaultTypesrandomPassword pgAclsToHashextFunapacheBool2httpd pgPassword mockCacheData aclsToHash aclToHashmockDockerRunFlagsscientificToInt spaceNotCRevalrubyevalExpression evalValuea2i _TopContainerfinalizeinterpretTopLevelrealizefromAttributeDeclsloadParameters enterScopeensureResourceisParent makeEdgeMapsaveCaptureVariablesrestoreCaptureVariables loadVariable loadClassaddRelationshipaddTagResource addAttribute setAttributeoverrideAttributeappendAttributedefaultAttributemodifyCollectedAttributeregisterResourcemainFunctionCallensurePackagesensureResource'evaluateStatementsFoldablelogWithModifier DBContent_dbcontentResources_dbcontentFacts_dbcontentBackingFile ExtractedETextESetENilDB HasResources resourcesHasFactsfactsHasBackingFile backingFilenewDBgenDBAPI resolveQuery dbapiInfoncomparereplCat replFacts deactivategetFcts resourceQuerygetRes getResNodecommitgetNds$fToJSONDBContent$fFromJSONDBContent$fHasResourcesDBContentHashMapsingleArgumentsafeEmptyStringstringArrayFunction compileREmatchRE puppetAbs assertPrivate any2arraybase64bool2num puppetConcat puppetCountdeletedeleteAtdeleteUndefValues_emptyflattengetvar_grephashisArray isDomainName isIntegerisHashisStringisBool puppetJoinjoinKeysToValueskeysmemberhasKeymergepick pickDefaultsizestr2BoolvalidateAbsolutePath validateArray validateBool validateHashvalidateNumeric validateRevalidateStringvalidateIntegerpvalues _prefNatTypesDefaults _dfKnownusers_dfKnowngroups_dfIgnoredmodules _dfStrictness _dfExtratests_dfExternalmodules_dfPuppetSettings_dfFactsDefault_dfFactsOverride_prefPuppetPaths_prefPDB _prefExtFuncs_prefHieraPath_prefIgnoredmodules_prefStrictness_prefExtraTests_prefKnownusers_prefKnowngroups_prefExternalmodules_prefPuppetSettings_prefFactsOverride_prefFactsDefault _prefLogLevel loadDefaults getKnownusersgetKnowngroups getStrictnessgetIgnoredmodules getExtraTestsgetExternalmodulesgetPuppetSettingsgetFactsOverridegetFactsDefault$fFromJSONDefaults$fHasPreferencesPreferencesmTemplateAnswer TemplateQueryTemplateParseError tgetError showRubyErrorinitTemplateDaemon templateQuerytemplateDaemoncomputeTemplategetRubyScriptPathhrresolveVariablehrcallfunctioncomputeTemplateWRuby eitherDocIO$fIsStringTemplateParseErrortestUsersGroupstestFileSourcescheckAllSources checkFiletestFile parseFunc getCatalog' parseFiledaemonLoggerNamelogDebug setupLogger