!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                    None;7BEncode a Haskell String to a list of Word8 values, in UTF8 format.D  !"#$%&'()*+,-./0123456789:;<=>?@ABCC  !"#$%&'()*+,-./0123456789:;<=>?@ABD"#$%&=> ?@A'(! )*+,-./0123456789:; <CB, ! "#$%&'()*+,-./0123456789:;<=>?@ABC Safe-Inferred DEFGHIJDEFGHIJDEFGHJI DEFGHIJNone+K/A service has a name, a version, and a list of QQDA schema is a struct (it has a name, a route, a write mode, etc...).Y/A schema variable. It is a field of a struct.  b DISCLAIMER /bW: there is some redundancy but the focus of this module is to make the templating easy.h An enum valuek;Given a template and a service object, render the template.&KLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop!KLMNOPQRSTUVWXYZ[\]^_`abcdefghijk&hijefgYZ[\]^_`abcdQRSTUVWXKLMNOPklmnop KLMNOPQRSTUVWXY Z[\]^_`abcdefghijklmnop Safe-Inferredqrstuvwxqrsqsrxwvutqsrtuvwx Safe-Inferred%yz{|}~%yz{|}~%}~{|yzyz{|}~None *+-./02345689:;=?BCDGHJKM      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW   Safe-InferredXYZ[\]^_`abcdeXYZ[\]^_`abcdeXYZ[]^_`\abcdeXYZ[\]^_`abcdeNone0fA field modifier.g-The field value will contain the user's loginh>The field can't have repeated values throughout the collectioni#The field is the primary key (thus h as well)jThe field can't be absentkThe field cannot be modifiedl(The field will not be returned when readmAn enum is a list of values.nAn enum value.oThe route of a resource.qKThe spec of an api is a set of enums and structs, along with the resources.sName of the servicetVersion of the serviceu/Whether it should support authentication or notv(Information about the user defined enumsw*Information about the user defined structsx'Information about the resources definedyWritable is a boolean type.{Map from struct id to its info.|Map from enum id to its info.}jA type can be a primitive one (int, long, double, bool...), an enum, a struct, or a list of another type.(A resource has a route and a write mode.A struct is a list of fields.9A field has a type, an identifier and a set of modifiers.5Gets the primary key of a struct if it was specified.0Finds out if a fieldinfo is relative to a structFind outs if a type is a structGet the name of a struct Generates a non-empty arbitrary .Generates an arbitrary @, making sure that the ids used for enums and structs are valid.0fghijklmnopqrstuvwxyz{|}~The info of the struct/The result (Nothing if there was no PK defined)+fghijklmnopqrstuvwxyz{|}~0ponmflkjihg}~|{zyqrstuvwxflkjihgmnopqrstuvwxyz{|} ~ None Extracts the name of the  (AST).Extracts the version of the  (AST).Extracts the name of an enum.Extracts the values of an enum.Extracts the name of a struct. Extracts the fields of a struct. Extracts the name of a resource.!Extracts the route of a resource.&Extracts the write mode of a resource.Extracts the name of a field.#Extracts the annotation of a field.JExtracts the type (defined by the language specification/bnfc) of a field.Extracts the type (defined in ApiSpec ) of a field.$Specification returned by the parserName of the specification$Specification returned by the parserVersion of the specificationEnum informationName of the enum typeEnum informationList of enum valuesEnum value informationIdentifier of the enum valueThe struct infoThe name of the struct Struct infoList of fields of the structResource informationName of the resourceResource informationRoute of the resourceResource information'True if it is writable, False otherwiseField informationName of the fieldField informationList of annotationsField informationType of the field(Struct names, Enum names) Field typeApiSpec field type None List of reserved words. Initial environment (all empty).wChecks the definition for: * Name clashes * Undefined types and returns a better representation of the api spec.|Looks for name clashes in the definitions. Note that it skips resources as those need to have the same name as some struct.;Reads all enums, making sure there are not repeated values.}Adds struct names (without information). Useful to check if a field is valid even if the type is a struct defined afterwards./Modifies the environment with the given modulesBMakes sure all the types used in the struct definitions are valid.%Gets enum names from the environment.MGets the names (identifiers) of all structs and enums (form the environment).Builds a dependency graph to sort the structs so forall a,b -> if "a" depends on "b", "b" is first in the list. It fails if there is a cycle in the graph. None-Transforms an api specification to a service./Generates the information of a resource/struct.-Generates the information of the fields of a Q.$The specification of the web service/A mapping from internal types to target's types/A mapping from internal types to target's types$The specification of the web serviceThe name of the struct/A mapping from internal types to target's types$The specification of the web serviceThe information of the struct/The information of all the fields of the schema None %A function that generates the target.All the info necesaary in order to generate a target: * List of regular files (this will be just directly copied) * List of templates that will be compiled * A map from a Harmony type to the target's typeA template is a source file and a new extension; e.g. ("template.tpl", "js") will result in "template.js" after the template compilation.Target generation function.Target generation function.Target generation function.Uses all the information provided by the user (and the input file) and generates the output by compiling the templates and copying all the files to the output directory.Copies a file.:Generate a template and writes it to the destination path.  Output path&Information of the defined web service&The information gathered from the userAA function that performs a different operation per file extension Output path<The information gathered from the input file (specification) Origin fileDestination pathDestination pathInformation for the templateAA function that performs a different operation per file extensionInformation of the template    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVVWOXYZZ[\]^_`aabcdefghijklmnoopqrstuv"wxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmmnopqWOXrstuvwxyz{|}~f                    X                          harmony-0.1.0.2 Language.Lex Paths_harmonyGeneration.TemplateCompiler Language.ErrM Language.Abs Language.Par Data.DiGraphTypeCheck.ApiSpec LangUtilsTypeCheck.StaticCheckGeneration.ServiceGeneratorGeneration.OutputGeneratorAlexAcc AlexAccSkip AlexAccNone AlexLastAcc AlexLastSkipAlexNone AlexReturn AlexTokenAlexSkip AlexErrorAlexEOFAlexAddrAlexA# AlexInputBytePosnPnBTreeBNTokenErrPTTok T_RouteIdent T_VerIdentTCTDTVTITLTS alex_base alex_table alex_check alex_deflt alex_accepttoksharetokenPos tokenPosn tokenLineCol posLineCol mkPosTokenprTokeneitherResIdentresWordsunescapeInitTail alexStartPosalexMovetokens alexGetBytealexInputPrevChar utf8Encode alex_action_3 alex_action_4 alex_action_5 alex_action_6alexIndexInt16OffAddralexIndexInt32OffAddr quickIndexalexScan alexScanUser alex_scan_tkniUnbox$fFunctorAlexLastAccversion getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNameServicename requiresAuthschemaSchema schemaName schemaRoutewritable hasKeyFieldkeyField schemaVars SchemaVarvarNamevarTypeisListisEnumisStructisKey isRequiredisHiddenisUnique isUserLogin EnumValues EnumValuevaluesStrValuevaluerender$fArbitraryService$fArbitraryStrValue$fArbitrarySchema$fArbitrarySchemaVar$fArbitraryEnumValuesBadOk$fAlternativeErr$fMonadPlusErr $fFunctorErr$fApplicativeErr $fMonadErrEnumValEnVal AnnotationAnnFTypeFListFDefinedFDoubleFLongFIntFStringFieldFDefModeWriteReadOnlyResourceRes StructTypeDefStrEnumTypeDefEnumModulesMods EmptyModsVersionVerNameNm SpecificationSpec RouteIdentVerIdentIdent HappyAddrHappyA#HappyStk Happy_IntList HappyConsHappyAny HappyAbsSyn happyIn22 happyOut22 happyIn23 happyOut23 happyIn24 happyOut24 happyIn25 happyOut25 happyIn26 happyOut26 happyIn27 happyOut27 happyIn28 happyOut28 happyIn29 happyOut29 happyIn30 happyOut30 happyIn31 happyOut31 happyIn32 happyOut32 happyIn33 happyOut33 happyIn34 happyOut34 happyIn35 happyOut35 happyIn36 happyOut36 happyIn37 happyOut37 happyIn38 happyOut38 happyIn39 happyOut39 happyIn40 happyOut40 happyIn41 happyOut41 happyIn42 happyOut42 happyIn43 happyOut43 happyInTok happyOutTokhappyActOffsetshappyGotoOffsetshappyDefActions happyCheck happyTablehappyReduceArr happy_n_termshappy_n_nontermshappyReduce_19happyReduction_19happyReduce_20happyReduction_20happyReduce_21happyReduction_21happyReduce_22happyReduction_22happyReduce_23happyReduction_23happyReduce_24happyReduction_24happyReduce_25happyReduction_25happyReduce_26happyReduction_26happyReduce_27happyReduction_27happyReduce_28happyReduction_28happyReduce_29happyReduction_29happyReduce_30happyReduction_30happyReduce_31happyReduction_31happyReduce_32happyReduction_32happyReduce_33happyReduction_33happyReduce_34happyReduction_34happyReduce_35happyReduction_35happyReduce_36happyReduction_36happyReduce_37happyReduction_37happyReduce_38happyReduction_38happyReduce_39happyReduction_39happyReduce_40happyReduction_40happyReduce_41happyReduction_41happyReduce_42happyReduction_42happyReduce_43happyReduction_43happyReduce_44happyReduction_44happyReduce_45happyReduction_45happyReduce_46happyReduction_46happyReduce_47happyReduction_47happyReduce_48happyReduction_48happyReduce_49happyReduction_49happyReduce_50happyReduction_50happyReduce_51happyReduction_51happyReduce_52happyReduction_52happyReduce_53happyReduction_53happyReduce_54happyReduction_54 happyNewToken happyError_ happyThen happyReturn happyThen1 happyReturn1 happyError'pSpecificationpNamepVersionpModules pEnumType pStructType pResourcepModepFieldpFType pAnnotationpEnumVal pListEnumType pListFieldpListStructType pListResource pListEnumValpListAnnotation pListIdenthappySeqreturnMthenM happyErrormyLexer happyParse happyAccept happyDoActionindexShortOffAddr happyShifthappySpecReduce_0happySpecReduce_1happySpecReduce_2happySpecReduce_3 happyReducehappyMonadReducehappyMonad2Reduce happyDrop happyDropStk happyGoto happyFail notHappyAtAll happyTcHack happyDoSeq happyDontSeqGraphemptycreateaddNode deleteNode addAllNodes addNeighborsaddAllNeighborscontains getNeighborsgetNodesisEmptyhasCyclegenerateInverseDependencyListModifier UserLoginUnique PrimaryKeyRequired ImmutableHiddenEnumInfoRouteIdApiSpecASenumsstructs resourcesWritable ResourcesStructsEnumsTypeTListTStructTEnumTStringTBoolTDoubleTFloatTLongTInt ResourceInfo StructInfo FieldInfoFI$fCoArbitraryType$fArbitraryModifier getPrimaryKey isStructFieldstrNamenonEmptyStringgenerateRandomFieldInfo$fArbitraryType$fArbitraryApiSpec $fShowApiSpecspecName specVersionenumNameenumVals enumValName strFieldsresNameresRoute resIsWritable fieldNamefieldAnnotations fieldType fieldSpecType staticCheckgenerateServiceGenerationFunctiongenerateJSServergenerateJSClientgeneratePythonClientcatchIObindirlibdirdatadir libexecdir sysconfdirnodesnextdfsbaseGHC.BaseString reservedWords initialEnv checkClashesreadAndCheckEnumsaddStructNamesprocessModulesreadAndCheckStructsgetEnumNamesFromEnvgetAllNamesFromEnvsortStructsByDependencyOrder StaticCheckEnvcheckResources getEnumNamesgetStructNamesfindDuplicatesgenerateSchema generateVarsGenerationInfo TemplateInfogenerateOutputcopygenerateAndWrite postOpFuncapplyJsBeautify applyYapf