Îõ³h*_Uï“Å               ! " # $ % & ' ( ) * + , - . / 0 12 3 4 5 6 7 89:;<=>?@ABCDEFGH I J K L M N O P Q RSTU V WXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ € � ‚ ƒ„…†‡ˆ ‰ Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯!°!±!²!³!´!µ!¶!·!¸"¹"º"»"¼"½"¾"¿"À"Á"Â"Ã"Ä"Å"Æ"Ç"È#É#Ê#Ë#Ì#Í#Î#Ï#Ð#Ñ#Ò$Ó$Ô$Õ%Ö%×%Ø%Ù%Ú%Û%Ü%Ý&Þ&ß&à&á&â&ã&ä&å&æ&ç&è&é&ê&ë&ì&í&î&ï&ð&ñ&ò&ó&ô&õ&ö&÷&ø&ù&ú&û&ü'ý'þ'ÿ'€'�'‚'ƒ'„'…'†'‡'ˆ'‰'Š'‹'Œ'�'Ž'�'�'‘'’'“'”'•'–'—'˜'™'š'›'œ'�'ž'Ÿ' '¡'¢'£'¤'¥'¦'§(¨(©(ª(«(¬(­(®(¯(°(±(²(³(´(µ(¶(·(¸(¹(º(»(¼(½(¾(¿(À(Á(Â(Ã(Ä(Å(Æ(Ç(È(É(Ê(Ë(Ì(Í(Î(Ï(Ð(Ñ(Ò(Ó(Ô(Õ(Ö(×(Ø(Ù(Ú(Û(Ü(Ý(Þ(ß(à(á(â(ã(ä(å(æ(ç(è(é(ê(ë(ì(í(î(ï(ð(ñ(ò(ó(ô(õ(ö(÷(ø(ù(ú(û(ü(ý(þ(ÿ(€(�(‚(ƒ(„(…(†(‡(ˆ(‰(Š(‹(Œ(�(Ž(�(�(‘(’(“(”(•(–(—(˜(™(š(›(œ(�(ž(Ÿ( (¡(¢(£(¤(¥(¦(§(¨(©(ª(«(¬(­(®(¯(°(±(²(³(´(µ(¶(·(¸(¹(º(»(¼(½(¾(¿(À(Á(Â(Ã(Ä(Å(Æ(Ç(È(É(Ê(Ë)Ì)Í)Î)Ï)Ð)Ñ)Ò)Ó)Ô)Õ)Ö)×)Ø)Ù)Ú)Û)Ü)Ý)Þ)ß)à)á*â*ã*ä*å*æ*ç*è*é*ê*ë*ì*í*î*ï*ð*ñ*ò*ó*ô*õ*ö*÷*ø*ù*ú*û*ü*ý*þ*ÿ*€*�*‚*ƒ*„*…*†*‡*ˆ*‰*Š*‹*Œ*�*Ž*�*�+‘+’+“+”+•+–+—+˜+™+š+›+œ+�+ž+Ÿ+ +¡+¢,£,¤,¥,¦,§,¨,©,ª,«,¬,­,®,¯,°,±,²,³,´,µ,¶,·,¸,¹,º,»,¼,½,¾,¿,À,Á,Â,Ã,Ä,Å,Æ,Ç,È,É,Ê,Ë,Ì,Í,Î,Ï,Ð,Ñ,Ò,Ó,Ô,Õ,Ö,×,Ø,Ù,Ú,Û,Ü,Ý,Þ,ß,à,á,â,ã,ä,å,æ,ç,è,é,ê,ë,ì,í,î,ï,ð,ñ,ò,ó,ô,õ,ö,÷,ø,ù,ú,û,ü,ý,þ,ÿ,€ ,� ,‚ ,ƒ ,„ ,… ,† ,‡ ,ˆ ,‰ ,Š ,‹ ,Œ ,� ,Ž ,� ,� ,‘ ,’ ,“ ,” ,• ,– ,— ,˜ ,™ ,š ,› ,œ ,� ,ž ,Ÿ ,  ,¡ ,¢ ,£ ,¤ ,¥ ,¦ ,§ ,¨ ,© ,ª ,« -¬ -­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á  à Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ € � ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ � .Ž .� .� .‘ .’ .“ .” .• .– .— .˜ .™ .š .› .œ .� .ž .Ÿ .  .¡ .¢ /£ /¤ /¥ /¦ /§ /¨ /© /ª /« 0¬ 0­ 0® 0¯ 0° 0± 0² 0³ 0´ 0µ 0¶ 0· 0¸ 0¹ 0º 0» 0¼ 0½ 0¾ 0¿ 0À 0Á 0 1à 1Ä 1Å 2Æ 3Ç 3È 4É 4Ê 4Ë 4Ì 4Í 4Î 4Ï 4Ð 5Ñ 5Ò 5Ó 5Ô 5Õ 5Ö 5× 5Ø 5Ù 5Ú 5Û 5Ü 5Ý 5Þ 5ß 5à 5á 5â 5ã 5ä 5å 5æ 5ç 5è 5é 5ê 5ë 5ì 5í 5î 5ï 5ð 5ñ 5ò 5ó 5ô 5õ 5ö 5÷ 5ø 5ù 5ú 5û 6ü 6ý 6þ 7ÿ 7€ 7� 7‚ 7ƒ 7„ 7… 7† 7‡ 7ˆ 7‰ 7Š 7‹ 7Œ 7� 7Ž 7� 7� 7‘ 7’ 7“ 7” 7• 7– 7— 7˜ 7™ 7š 7› 7œ � ž Ÿ   ¡ ¢ 8£ 8¤ 8¥ 8¦ 8§ 8¨ 8© 8ª 8« 8¬ 8­ 8® 8¯ 8° 8± 8² 8³ 8´ 8µ 8¶ 8· 8¸ 8¹ 8º 8» 8¼ 8½ 8¾ 8¿ 8À 8Á 8 8à 8Ä 8Å 8Æ 8Ç 8È 8É 8Ê 8Ë 8Ì 8Í 8Î 8Ï 8Ð 8Ñ 8Ò 8Ó 8Ô 8Õ 8Ö 8× 8Ø 8Ù 8Ú 8Û 8Ü 8Ý 8Þ 8ß 8à 8á 8â 8ã 8ä 8å 8æ 8ç 8è 8é 8ê 8ë 8ì 8í 8î 8ï 8ð 8ñ 8ò 8ó 8ô 8õ 8ö 8÷ 8ø 8ù 8ú 8û 8ü 8ý 8þ 8ÿ 8€ 8� 8‚ 8ƒ 8„ 8… 8† 8‡ 8ˆ 8‰ 8Š 8‹ 8Œ 8� 8Ž 8� 8� 8‘ 8’ 8“ 8” 8• 8– 8— 9˜ 9™ 9š 9› 9œ 9� 9ž 9Ÿ 9  9¡ 9¢ 9£ 9¤ 9¥ 9¦ 9§ 9¨ 9© 9ª 9« 9¬ 9­ 9® 9¯ 9° 9± 9² 9³ 9´ 9µ 9¶ 9· 9¸ 9¹ 9º 9» :¼ :½ :¾ :¿ :À :Á : :à :Ä :Å :Æ :Ç :È :É :Ê :Ë :Ì :Í ;Î ;Ï ;Ð ;Ñ ;Ò ;Ó ;Ô ;Õ ;Ö ;× ;Ø ;Ù ;Ú ;Û ;Ü ;Ý ;Þ ;ß ;à ;á ;â ;ã ;ä ;å ;æ ;ç ;è ;é ;ê ;ë ;ì ;í ;î ;ï ;ð ;ñ ;ò ;ó ;ô ;õ ;ö ;÷ ;ø ;ù ;ú ;û ;ü ;ý ;þ ;ÿ ;€ ;� ;‚ ;ƒ ;„ ;… ;† ;‡ ;ˆ ;‰ ;Š ;‹ ;Œ ;� ;Ž ;� ;� ;‘ ;’ ;“ ;” ;• ;– ;— ;˜ ;™ ;š ;› ;œ ;� ;ž ;Ÿ ;  ;¡ ;¢ ;£ ;¤ ;¥ ;¦ ;§ ;¨ ;© ;ª ;« ;¬ ;­ ;® ;¯ ;° ;± ;² ;³ ;´ ;µ ;¶ <· <¸ <¹ <º <» <¼ <½ <¾ <¿ <À <Á < <à <Ä <Å <Æ <Ç <È <É <Ê <Ë <Ì <Í <Î <Ï <Ð <Ñ <Ò =Ó =Ô =Õ =Ö =× =Ø =Ù =Ú =Û =Ü =Ý =Þ =ß =à =á =â =ã =ä =å =æ =ç =è =é =ê =ë =ì =í =î =ï =ð =ñ =ò =ó =ô =õ =ö =÷ =ø =ù =ú =û =ü =ý =þ =ÿ >€>�>‚>ƒ>„>…>†?‡?ˆ@‰@Š@‹@Œ@�@Ž@�@�@‘@’@“@”@•@–@—@˜@™@š@›@œ@�@ž@Ÿ@ @¡@¢@£@¤@¥@¦@§@¨@©@ª@«@¬@­@®@¯@°@±@²@³@´@µ@¶@·@¸@¹@º@»@¼@½@¾@¿@À@Á@Â@Ã@Ä@Å@Æ@Ç@È@É@Ê@Ë@Ì@Í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ø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£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Î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ù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¤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Ï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öB÷BøBùBúBûBüBýBþBÿB€B�B‚BƒB„B…B†B‡BˆB‰BŠB‹BŒB�BŽB�B�B‘B’B“B”B•B–B—B˜B™BšB›BœB�BžBŸB B¡B¢B£B¤B¥B¦B§B¨B©BªB«B¬B­B®B¯B°B±B²B³B´BµB¶B·B¸B¹BºB»B¼B½B¾B¿BÀBÁBÂCÃCÄCÅCÆCÇCÈCÉCÊCËCÌCÍCÎCÏCÐCÑCÒCÓCÔCÕCÖC×CØCÙCÚCÛCÜCÝCÞCßCàCáCâCãCäCåCæCçCèCéCêCëCìCíCîCïCðCñCòCóCôCõCöC÷CøCùCúCûCüCýCþCÿC€C�C‚CƒC„C…C†C‡CˆC‰CŠ ‹ Œ � Ž � � ‘ ’ “ ” • – — ˜ ™ š › œ � žDŸD D¡D¢D£D¤D¥D¦D§D¨D©DªD«D¬D­D®D¯D°D±D²D³D´DµD¶D·D¸D¹DºD»D¼D½D¾D¿DÀDÁDÂEÃFÄGÅGÆGÇGÈGÉGÊGËGÌGÍGÎGÏGÐGÑGÒGÓGÔGÕGÖG×GØHÙIÚIÛJÜJÝKÞKßKàKáKâKãKäKåKæKçKèKéKêKëKìKíLîLïLðLñLòLóLôLõLöL÷LøLùLúLûLüLýLþLÿL€M�M‚MƒM„M…M†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±A²A³A´AµA¶A·A¸A¹AºA»A¼A½A¾A¿NÀNÁNÂNÃNÄNÅNÆNÇNÈNÉNÊOËOÌOÍOÎOÏOÐOÑOÒOÓOÔOÕOÖO×OØOÙOÚOÛOÜOÝOÞOßOàOáOâOãOäOåOæOçOèOéOêOëOìOíOîOïOðOñOòOóOôOõOöO÷OøOùOúOûPüPýPþPÿP€P�P‚PƒP„P…P†P‡PˆP‰PŠP‹PŒP�PŽP�P�P‘P’P“P”P•P–P—P˜P™PšP›PœP�PžPŸP P¡P¢P£P¤Q¥Q¦Q§Q¨Q©QªQ«R¬R­R®R¯R°R±S²T³T´TµT¶T·T¸T¹TºT»T¼T½T¾T¿TÀTÁTÂTÃTÄTÅTÆTÇTÈTÉTÊTËTÌTÍTÎTÏTÐTÑTÒTÓTÔTÕTÖT×TØTÙTÚTÛTÜTÝTÞTßTàTáTâTãTäTåTæTçTèTéTêTëTìTíTîTïTðTñTòTóTôTõTöT÷TøTùTúTûTüTýTþTÿT€T�T‚TƒT„T…T†T‡TˆT‰TŠT‹TŒT�TŽT�T�T‘T’T“T”T•T–T—T˜T™TšT›TœT�TžTŸT T¡T¢T£T¤T¥T¦T§T¨T©TªT«T¬T­T®T¯T°T±T²U³U´UµU¶U·U¸U¹UºU»U¼U½U¾:¿:À:Á:Â:Ã:ÄVÅ:Æ:Ç:È:É:Ê:Ë:Ì:Í:Î:Ï:Ð:Ñ:Ò:Ó:Ô:Õ:Ö:×:Ø:Ù:Ú:Û:Ü:Ý:Þ:ß:à:á:â:ã:ä:åVæVçVèVéVêVëVìVíVîVïVðVñVòVóVôVõVöV÷VøVùVúVûVüWýWþWÿW€X�X‚XƒY„Y…†‡ˆ‰Š‹Œ�ZŽZ�Z�Z‘Z’Z“Z”Z•Z–Z—Z˜Z™ZšZ›Zœ[�\ž]Ÿ] ]¡]¢]£]¤]¥]¦]§]¨]©]ª]«]¬^­^®^¯^°^±^²^³^´^µ^¶^·^¸^¹^º^»^¼^½^¾_¿_À_Á_Â_Ã_Ä_Å_Æ_Ç_È_É_Ê_Ë_Ì_Í_Î_Ï_Ð_Ñ_Ò_Ó_Ô_Õ_Ö_×_Ø_Ù_Ú_Û_Ü_Ý_Þ_ß_à_á_â_ã_ä_å_æ_ç_è_éJêJëJìJíJîJïJðJñJòJóJôJõJöJ÷JøJùJúJûJüJýJþJÿJ€J�J‚JƒJ„J…J†J‡JˆJ‰JŠ`‹`Œ`�`Ž`�`�`‘`’`“`”a•a–a—a˜a™aša›aœa�ažaŸa a¡a¢a£a¤a¥a¦a§b¨c©cªc«c¬c­c®c¯c°c±c²c³c´cµc¶c·c¸d¹eºe»e¼e½e¾e¿eÀeÁeÂeÃeÄef3.14.0.0— Safe-Inferred<:—  Safe-InferredÂÄ; Cabal2Applying module substitutions to semantic objects.g Safe-Inferred9:;>ÅCabalAn Æ4, annotated with where it came from in a Cabal file.ÇCabalÈDescription of where a module participating in mixin linking came from.ÈCabalÈINVARIANT: entries for ModuleName m, have msrc_module is OpenModuleVar mÉCabalEvery Module in scope at a Ê is annotated with the Ë it comes from.ÌCabalA Ìì describes the modules and requirements that are in-scope as we are processing a Cabal package. Unlike a  ModuleShape6, there may be multiple modules in scope at the same ÊÖ; this is only an error if we attempt to use those modules to fill a requirement. A Ì can influence the  ModuleShape via a reexport.ÍCabal An empty Ì.ÌÎÏÐÉÈÇÑÒÓÔÕÖÅרÙÚÍ  Safe-Inferred7<?5+CabalA +Ì describes the provisions and requirements of a library. We can extract a + from an Û./CabalÁThe default module shape, with no provisions and no requirements.+,-./0+,-./0  Safe-Inferred7<?iHIJKLMNHIJKLMNh Safe-Inferred7GÀÜCabalThe exception thrown by Ý to terminate a thread.ÞCabalAsync, but based on ß, as we don't depend on stm.àCabal Returns the á" of the thread running the given â.ãCabalÁSpawn an asynchronous action in a separate thread, and pass its AsyncÖ handle to the supplied function. When the function returns or throws an exception, ä is called on the Async. ‚withAsync action inner = mask $ \restore -> do a <- async (restore action) restore (inner a) `finally` uninterruptibleCancel aThis is a useful variant of async that ensures an Async( is never left running unintentionally.ÇNote: a reference to the child thread is kept alive until the call to ã returns, so nesting many ã calls requires linear memory.åCabal˜Wait for an asynchronous action to complete, and return its value. If the asynchronous action threw an exception, then the exception is re-thrown by å. wait = atomically . waitSTMæCabalÀWait for an asynchronous action to complete, and return either Left e# if the action raised an exception e, or Right a if it returned a value a. %waitCatch = atomically . waitCatchSTMÝCabal.Cancel an asynchronous action by throwing the AsyncCancelled' exception to it, and waiting for the â' thread to quit. Has no effect if the â has already completed. Âcancel a = throwTo (asyncThreadId a) AsyncCancelled <* waitCatch a Note that Ý) will not terminate until the thread the â, refers to has terminated. This means that ÝÕ will block for as long said thread blocks when receiving an asynchronous exception.For example, it could block if:ÓIt's executing a foreign call, and thus cannot receive the asynchronous exception;æIt's executing some cleanup handler after having received the exception, and the handler is blocking.äCabalCancel an asynchronous actionThis is a variant of Ý, but it is not interruptible. ÞàãæåÝäÜçè Safe-InferredGû   Safe-InferredH$     Safe-InferredHQ  icabal-devel@haskell.org Windows-only Safe-InferredH¡éj Safe-InferredHËêëìRk Safe-InferredJ¢íCabal:Copies a file to a new destination. Often you should use î instead.îCabalLike í©, but does not touch the target if source and destination are already byte-identical. This is recommended as it is useful for time-stamp based recompilation avoidance.ïCabalþChecks if two files are byte-identical. Returns False if either of the files do not exist or if files are of different size.íîïðñSTòl Safe-InferredJØüóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëì  Safe-InferredQ¨UCabalßEnable process jobs to ensure accurate determination of process completion in the presence of exec(3) on Windows.9Unfortunately the process job support is badly broken in process‘ releases prior to 1.6.9, so we disable it in these versions, despite the fact that this means we may see sporadic build failures without jobs.ÙOn Windows 7 or before the jobs are disabled due to the fact that processes on these systems can only have one job. This prevents spawned process from assigning jobs to its own children. Suppose process A spawns process B. The B process has a job assigned (call it J1) and when it tries to spawn a new process C the C automatically inherits the job. But at it also tries to assign a new job J2 to C since it doesn™@t have access J1. This fails on Windows 7 or before.VCabalmn= with process jobs enabled when appropriate, and defaulting  delegate_ctlc to ü.VUVU Safe-InferredÃØÝSWCabal$The arg file / response file parser.ÇThis is not a well-documented capability, and is a bit eccentric (try cabal @foo @bar¥ to see what that does), but is crucial for allowing complex arguments to cabal and cabal-install when using command prompts with strongly-limited argument length.WWoBSD3cabal-dev@haskell.org experimentalportable Safe-InferredSlíîï Safe-InferredØÝU­YCabal™Give the *parent* of the person who invoked this; so it's most suitable for being called from a utility function. You probably want to call this using „; otherwise it's not very useful. We didn't implement this for base-4.8.1 because we cannot rely on freezing to have taken place.[CabalåThis function is for when you *really* want to add a call stack to raised IO, but you don't have a 'p so you can't use q. If you have a  Verbosity$, please use that function instead.X[ZYX[ZYr Safe-InferredÃØÝV°ðCabalsetEnv name value, sets the specified environment variable to value.Throws st if either name or value1 is the empty string or contains an equals sign.ñòðóu(c) Sven Panne 2002-2005/BSD-style (see the file libraries/base/LICENSE)libraries@haskell.orgportable Safe-Inferred'Õ^Ì ôCabalïDescribes whether an option takes an argument or not, and if so how the argument is parsed to a value of type a.=Compared to System.Console.GetOpt, we allow for parse errors.õCabalno argument expectedöCabaloption requires argument÷Cabaloptional argumentøCabal-What to do with options following non-optionsùCabal+no option processing after first non-optionúCabal*freely intersperse options and non-optionsûCabal�Return a string describing the usage of a command, derived from the header (first argument) and the options described by the second argument.üCabalÒPretty printing of short options. * With required arguments can be given as: #-w PATH or -wPATH (but not -w=PATH) This is dislayed as: -w PATH or -wPATH= * With optional but default arguments can be given as: &-j or -jNUM (but not -j=NUM or -j NUM) This is dislayed as: -j[NUM]ýCabalÑPretty printing of long options. * With required arguments can be given as: 3--with-compiler=PATH (but not --with-compiler PATH) This is dislayed as: --with-compiler=PATH= * With optional but default arguments can be given as: )--jobs or --jobs=NUM (but not --jobs NUM) This is dislayed as:  --jobs[=NUM]þCabalñProcess the command-line, and return the list of values that matched (and those that didn't). The arguments are:The order requirements (see ø)The option descriptions (see ÿ):The actual command line arguments (presumably got from vw).þë returns a triple consisting of the option arguments, a list of non-options, and a list of error messages.€CabalThis is almost the same as þ”, but returns a quadruple consisting of the option arguments, a list of non-options, a list of unrecognized options, and a list of error messages. þ€ûøùúÿ�ôõö÷xBen Gamari 2015-2019cabal-devel@haskell.orgportable Safe-Inferred`·‚Cabal*A simple parser supporting quoted strings.ëPlease be aware that this will only split strings when seeing whitespace outside of quotation marks, i.e, "foo"bar baz"qux quux" will be converted to ["foobar bazqux", "quux"].4This behavior can be useful when parsing text like ,"ghc-options: -Wl,"some option with spaces"", for instance.‚yFrancesco Ariis 2022BSD3cabal-devel@haskell.orgportable Safe-Inferred1ÒÝäiЃCabal:Which language are we referring to in our warning message?„CabalWhich stanza does ^ refer to?]CabalIdentifier for the speficic ^í. This ensures `--ignore` can output a warning on unrecognised values. žL N.B.: should be kept in sync with ^.^CabalExplanations of ê's errors/warnings.êCabal-Results of some kind of failed package check.ÿThere are a range of severities, from merely dubious to totally insane. All of them come with a human readable explanation. In future we may augment them with more machine readable explanations, for example to help an IDE suggest automatic corrections.ëCabalÿThis package description is no good. There's no way it's going to build sensibly. This should give an error at configure time.ìCabal¤A problem that is likely to affect building the package, or an issue that we'd like every package author to be aware of, even if the package is never distributed.íCabal¤An issue that might not be a problem for the package author but might be annoying or detrimental when the package is distributed to users. We should encourage distributed packages to be free from these issues, but occasionally there are justifiable reasons so we cannot ban them entirely.îCabaløLike PackageDistSuspicious but will only display warnings rather than causing abnormal exit when you run 'cabal check'.ïCabalÒAn issue that is OK in the author's environment but is almost certain to be a portability problem for other environments. We can quite legitimately refuse to publicly distribute packages with these problems.ñCabalPretty printing ê.òCabal5Would Hackage refuse a package because of this error?óCabal+Filter Package Check by CheckExplanationID.ôCabal*Filter Package Check by Check explanation string.…CabalPretty printing „.†CabalPretty printing ƒ.‡CabalPretty printing ^.ˆCabalBroken ¡Ê instance (not bijective with Read), alas external packages depend on it.óCabalOriginal checks.Cabal IDs to omit.ôCabalOriginal checks.CabalIDs to omit, in String format.¥êëìíîïð^®«_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª¬­¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèé]\„‰Š‹Œ�Žƒ��ñõò‘óôJose Iborra 2008BSD3cabal-devel@haskell.orgportable Safe-Inferredäk†öCabal"Parser with simple error reportingö÷øùúûüýö÷øùúûüý Safe-InferredtHƒCabalSame as „Ø, but requires atomic informations (package name, executable names) instead of a whole ’.„CabalÏDesugar a "build-tools" entry into a proper executable dependency if possible.*An entry can be so desugared in two cases: ŒThe name in build-tools matches a locally defined executable. The executable dependency produced is on that exe in the current package.×The name in build-tools matches a hard-coded set of known tools. For now, the executable dependency produced is one an executable in a package of the same, but the hard-coding could just as well be per-key.The first cases matches first.…CabalíGet everything from "build-tool-depends", along with entries from "build-tools" that we know how to desugar.ÁThis should almost always be used instead of just accessing the “ field directly.†CabalÁDoes the given executable dependency map to this current package?8This is a tiny function, but used in a number of places.'This function is only sound to call on ”�s from the given package description. This is because it just filters the package names of each dependency, and does not check whether version bounds in fact exclude the current package, or the referenced components in fact exist in the current package.ÀThis is OK because when a package is loaded, it is checked (in z{ý) that dependencies matching internal components do indeed have version bounds accepting the current package, and any depended-on component in the current package actually exists. In fact this check is performed by gathering the internal tool dependencies of each component of the package according to this module, and ensuring those properties on each so-gathered dependency.œversion bounds and components of the package are unchecked. This is because we sanitize exe deps so that the matching name implies these other conditions.‡CabalÄGet internal "build-tool-depends", along with internal "build-tools"ÞThis is a tiny function, but used in a number of places. The same restrictions that apply to † also apply to this function.ƒ„…†‡ƒ„…†‡ Safe-Inferredätò�Cabal×Returns the object/interface extension prefix for the given build way (e.g. "dyn_" for Œ)ŠŽ�Œ‹�ŠŽ�Œ‹�2011, Dan Knappcabal-devel@haskell.orgportable Safe-InferredxA•Cabal¢Represents a dialect of C. The Monoid instance expresses backward compatibility, in the sense that 'mappend a b' is the least inclusive dialect which both a and b! can be correctly interpreted as.šCabal¬A list of all file extensions which are recognized as possibly containing some dialect of C code. Note that this list is only for source files, not for header files.›Cabal™Takes a dialect of C and whether code is intended to be passed through the preprocessor, and returns a filename extension for containing that code.œCabal‹Infers from a filename's extension the dialect of C which it contains, and whether it is intended to be passed through the preprocessor.•–—˜™š›œ•–—˜™š›œ8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportable Safe-Inferred9:;<Ã}† ¡Cabal#Types that represent boolean flags.£Cabal1All flags are monoids, they come in two flavours:  list flags eg !--ghc-option=foo --ghc-option=bar&gives us all the values ["foo", "bar"] singular value flags, eg: --enable-foo --disable-foogives us Just False So, this £ó type is for the latter singular kind of flag. Its monoid instance gives us the behaviour where it starts out as ¥' and later flags override earlier ones.Isomorphic to ƒ a.¦CabalWraps a value in £.§CabalExtracts a value from a £, and throws an exception on ¥.¨CabalExtracts a value from a £#, and returns the default value on ¥.©Cabal Converts a £ value to a ƒ value.ªCabalPushes a function through a £& value, and returns a default if the £ value is ¥.«Cabal Converts a £ value to a list.¬CabalReturns ü only if every £ ú value is Flag True, else û.­Cabal Converts a ƒ value to a £ value.®CabalMerge the elements of a list £ with another list £.£¤¥¬¦§¨ª©«­®¡¢£¤¥¬¦§¨ª©«­®¡¢#Isaac Jones, Simon Marlow 2003-2004=BSD3 portions Copyright (c) 2007, Galois Inc.cabal-devel@haskell.orgportable Safe-Inferred9<䀂 ¾CabalA piece of a globbing pattern¿Cabal A wildcard *ÀCabalA literal string dirABCÁCabalA union of patterns, e.g. dir {a,*.txt,c}...ÂCabal6A single directory or file component of a globbed pathÃCabal!A filepath specified by globbing.ÄCabal  dirGlob/ globÅCabal**/ glob, where **Ë denotes recursively traversing all directories and matching filenames on  glob.ÆCabal A file glob.ÇCabalTrailing dir; a glob ending in /. ¾À¿ÁÂÃÇÆÅÄÈÉ ÃÇÆÅľÀ¿ÁÈÉ Safe-Inferred<ŠüßCabalÁA description of a file (or set of files) to monitor for changes.ŠWhere file paths are relative they are relative to a common directory (e.g. project root), not necessarily the process current directory.èCabale.g. "/", "c:" or result of  takeDriveêCabalÄA file path specified by globbing, relative to some root directory.ìCabalµMonitor a single file for changes, based on its modification time. The monitored file is considered to have changed if it no longer exists or if its modification time has changed.íCabalÙMonitor a single file for changes, based on its modification time and content hash. The monitored file is considered to have changed if it no longer exists or if its modification time and content hash have changed.îCabalïMonitor a single non-existent file for changes. The monitored file is considered to have changed if it exists.ïCabalóMonitor a single file for existence only. The monitored file is considered to have changed if it no longer exists.ðCabal¿Monitor a single directory for changes, based on its modification time. The monitored directory is considered to have changed if it no longer exists or if its modification time has changed.ñCabalúMonitor a single non-existent directory for changes. The monitored directory is considered to have changed if it exists.òCabalýMonitor a single directory for existence. The monitored directory is considered to have changed only if it no longer exists.óCabalÂMonitor a single file or directory for changes, based on its modification time. The monitored file is considered to have changed if it no longer exists or if its modification time has changed.ôCabalœMonitor a set of files (or directories) identified by a file glob. The monitored glob is considered to have changed if the set of files matching the glob changes (i.e. creations or deletions), or for files if the modification time and content hash of any matching file has changed.õCabalÕMonitor a set of files (or directories) identified by a file glob for existence only. The monitored glob is considered to have changed if the set of files matching the glob changes (i.e. creations or deletions).öCabalÞCreates a list of files to monitor when you search for a file which unsuccessfully looked in notFoundAtPaths before finding it at  foundAtPath.÷Cabal Similar to ö?, but also instructs us to monitor the hash of the found file.ëCabalwhat the glob is relative toCabalthe glob#êëæèçéÃßàáâãäåÚÛÜÝÞÖרÙìíîïðñòóôõö÷#êëæèçéÃßàáâãäåÚÛÜÝÞÖרÙìíîïðñòóôõö÷ Safe-Inferred7<�Z–CabalThe $prefix path variable—CabalThe $bindir path variable˜CabalThe $libdir path variable™CabalThe  $libsubdir path variablešCabalThe  $dynlibdir path variable›CabalThe $datadir path variableœCabalThe  $datasubdir path variable�CabalThe $docdir path variabležCabalThe $htmldir path variableŸCabalThe $pkg package name path variable CabalThe $version package version path variable¡CabalThe $pkgid package Id path variable, eg foo-1.0¢CabalThe $libname path variable£Cabal"The compiler name and version, eg  ghc-6.6.1¤CabalThe operating system name, eg windows or linux¥CabalThe CPU architecture name, eg i386 or x86_64¦CabalThe compiler's ABI identifier,§Cabal%The optional ABI tag for the compiler¨Cabal+The executable name; used in shell wrappers©Cabal$The name of the test suite being runªCabal,The result of the test suite being run, eg pass, fail, or error.«Cabal#The name of the benchmark being run¬­®•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«Isaac Jones 2003-2004BSD3cabal-devel@haskell.orgportable Safe-Inferred79<ÃØÝ�a ¾CabalßAn abstract path, possibly containing variables that need to be substituted for to get a real ³.¿CabalThe location prefix for the copy command.ÂCabal˜when using the ${pkgroot} as prefix. The CopyToDb will adjust the paths to be relative to the provided package database when copying / installing.ÃCabal)The installation directories in terms of ¾s that contain variables.�The defaults for most of the directories are relative to each other, in particular they are all relative to a single prefix. This makes it convenient for the user to override the default installation directory by only having to specify --prefix=... rather than overriding each individually. This is done by allowing $-style variables in the dirs. These are expanded by textual substitution (see ß).¥A few of these installation directories are split into two components, the dir and subdir. The full installation path is formed by combining the two together with /Ù. The reason for this is compatibility with other Unix build systems which also support --libdir and  --datadir/. We would like users to be able to configure --libdir=/usr/lib64¸ for example but because by default we want to support installing multiple versions of packages and building the same package for multiple compilers we append the libsubdir to get: /usr/lib64/$libname/$compiler.ûAn additional complication is the need to support relocatable packages on systems which support such things, like Windows.ÄCabal9The directories where we will install files for packages.ôWe have several different directories for different types of files since many systems have conventions whereby different types of files in a package are installed in different directories. This is particularly the case on Unix style systems.ËCabalforeign librariesÙCabal5Substitute the install dir templates into each other.õTo prevent cyclic substitutions, only some variables are allowed in particular dir templates. If out of scope vars are present, they are not substituted for. Checking for any remaining unsubstituted vars can be done as a subsequent operation.-The reason it is done this way is so that in Û we can replace Æ with the – and get resulting ¾s that still have the –Õ in them. Doing this makes it each to check which paths are relative to the $prefix.ÚCabal›Convert from abstract install directories to actual absolute ones by substituting for all the variables in the abstract paths, to get real absolute path.ÛCabalÂCheck which of the paths are relative to the installation $prefix.©If any of the paths are not relative, ie they are absolute paths, then it prevents us from making a relocatable package (also known as a "prefix independent" package).ÜCabal Convert a ³ to a ¾ including any template vars.ÝCabal7Convert back to a path, any remaining vars are includedàCabal=The initial environment has all the static stuff but no pathsÀÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÃרÖÚ¿ÁÂÀÛÙ¾•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«½ÜÝÞßàãâáäåÀÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÃרÖÚ¿ÁÂÀÛÙ¾•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«½ÜÝÞßàãâáäåcabal-devel@haskell.orgportable Safe-Inferred —CabalÀExtract the version number from the output of 'strip --version'.ßInvoking "strip --version" gives very inconsistent results. We ignore everything in parentheses (see #2497), look for the first word that starts with a number, and try parsing out the first two components of it. Non-GNU strip' doesn't appear to have a version flag.——Thomas Tuegel 2010BSD3cabal-devel@haskell.orgportable Safe-InferredÃØÝ¤•¥Cabal‘If true, then children of this group may be run in parallel. Note that this setting is not inherited by children. In particular, consider a group F with "concurrently = False" that has some children, including a group T with "concurrently = True". The children of group T may be run concurrently with each other, as long as none are run at the same time as any of the direct children of group F.¸CabalÉA human-readable description of the option to guide the user setting it.½CabalPerform the test.¾Cabal1A name for the test, unique within a test suite.¿Cabal0Users can select groups of tests by their tags.ÀCabal5Descriptions of the options recognized by this test.ÁCabal£Try to set the named option to the given value. Returns an error message if the option is not supported or the value could not be correctly parsed; otherwise, a »5 with the option set to the given value is returned.ÂCabalÐCreate a named group of tests, which are assumed to be safe to run in parallel.+»¼½¾¿ÀÁµ¶·¸¹º§¨©ª«¬­®¯°±²³´ ¡¢£¤¥¦Ÿœ�ž˜š›™Â+»¼½¾¿ÀÁµ¶·¸¹º§¨©ª«¬­®¯°±²³´ ¡¢£¤¥¦Ÿœ�ž˜š›™Â Safe-Inferred9¦fÌCabalAn Ì is a •, –é, etc. which is annotated with some other useful information that is useful for printing to users, etc.ßInvariant: if ann_id x == ann_id y, then ann_pid x == ann_pid y and ann_cname x == ann_cname yÌÍÎÏÐÌÍÎÏÐ| Safe-Inferred©‚—CabalStripped down version of LinkedComponent0 for things we don't need to know how to build.˜Cabal7The actual name of the package. This may DISAGREE with pc_pkgid9 for internal dependencies: e.g., an internal component lib may be munged to  z-pkg-z-lib+, but we still want to use it when we see lib in  build-depends™Cabal!The actual name of the component.šCabalA promised component.!These components are promised to  configure but are not yet built.In other words this is — which doesn't yet exist.›Cabal Convert an Û into a —*, which was brought into scope under the Ë0 (important for a package qualified reference.)—œ˜™�žŸ ¡š¢£¤› Safe-InferredªvÚCabalDid this come from an entry in mixins", or was implicitly generated by  build-depends?ÝCabalThis should always return $ or  CSubLibNameÖרÙÚÛÜÝÖרÙÚÛÜÝ Safe-Inferred7<ÍÛ²p ÞCabal?The first five fields are common across all algebraic variants.äCabalÎIt would be very convenient to store the literal Library here, but if we do that, it will get serialized (via the Binary) instance twice. So instead we just provide the ComponentName, which can be used to find the Component in the PackageDescription. NB: eventually, this will NOT uniquely identify the ComponentLocalBuildInfo.åCabal The computed • of this component.æCabal The computed –= which uniquely identifies this component. Might be hashed.çCabal:Is this an indefinite component (i.e. has unfilled holes)?èCabal"How the component was instantiatedéCabalÍResolved internal and external package dependencies for this component. The  BuildInfoÅ specifies a set of build dependencies that must be satisfied in terms of version ranges. This field fixes those dependencies to the specific versions available on this machine for this compiler.êCabalÑThe set of packages that are brought into scope during compilation, including a ¥Ð which may used to hide or rename modules. This is what gets translated into  -package-id. arguments. This is a modernized version of é', which is kept around for BC purposes.ìCabal7The internal dependencies which induce a graph on the Þ0 of this package. This does NOT coincide with éÔ because it ALSO records 'build-tool' dependencies on executables. Maybe one day  cabal-install& will also handle these correctly too!íCabalÂCompatibility "package key" that we pass to older versions of GHC.îCabalÀCompatibility "package name" that we register this component as.ïCabaläA list of exposed modules (either defined in this component, or reexported from another component.)ðCabalñConvenience field, specifying whether or not this is the "public library" that has the same name as the package.ÞßàáâãäåæçèéêëìíîïðñòÞßàáâãäåæçèéêëìíîïðñò Safe-Inferred7<²ìùûúùûú Safe-Inferred7<´Â…CabalA …Ý represents a promised library depended on and explicitly specified by the user/client with --promised-dependencyIt enables Cabal to know which • to associate with a libraryŠCabalA ŠÔ represents a library depended on and explicitly specified by the user/client with  --dependencyIt enables Cabal to know which • to associate with a library Š‹Œ�Ž…†‡ˆ‰ Š‹Œ�Ž…†‡ˆ‰ Safe-Inferred¶›CabalUsed as a placeholder in $Distribution.Backpack.ReadyComponentœCabalUsed by cabal new-repl,  cabal new-run and cabal new-build�CabalUsed by  cabal new-run and cabal new-buildžCabalœ with ¦.›œ�ž›œ�ž  Safe-Inferred¸¯ŸCabalÈUsed by cabal-install to say we want to create a semaphore with N slots. CabalàUsed by Cabal to indicate that we want to use this specific semaphore (created by cabal-install)¡Cabal×How to control parallelism, e.g. a fixed number of jobs or by using a system semaphore.¢CabalÂCompile in parallel with the given number of jobs (`-jN` or `-j`).£Cabal=`--semaphore`: use a system semaphore to control parallelism.¤CabalÅNo parallelism (neither `-jN` nor `--semaphore`, but could be `-j1`).¥Cabal>Determine if the parallelism strategy enables parallel builds.Ÿ ¡¤£¢¥¡¤£¢ Ÿ¥! Safe-Inferred<ÍÛº¯CabalThe ¯Ô contains all the information necessary to build a specific target (e.g., componentmodule4file) in a package. In principle, one can get the ˆ from a Þ and LocalBuildInfoÀ, but it is much more convenient to have the component in hand.¯°±²¯°±²" Safe-Inferred)*ØÚÛݽ« ¸Cabal1Phantom-typed GADT representation of the mode of ¿, containing no other data.»Cabal¼Cabal¿ Wrapper for §Note$: This operation uses lazy I/O. Use À× to force all data to be read and consequently the internal file handle to be closed.¿CabaláRepresents either textual or binary data passed via I/O functions which support binary/text modeÀCabal2How Text gets encoded is usually locale-dependent.ÁCabal2Raw binary which gets read/written in binary mode.ÂCabal$Applies a function polymorphic over ¸ to an ¿ value.ÃCabal Test whether ¿ is emptyÄCabal¿ Wrapper for ¨ and ©This is the dual operation ot ¼., and consequently the handle is closed with hClose.Note: this performs lazy-IO. ¿ÀÁ¸¹º»¼½¾ÂÃÄ ¿ÀÁ¸¹º»¼½¾ÂÃÄ# Safe-Inferred"ØÝ¾çÏCabal Convert a È into a  ByteStringÐCabalA shorthand for building up Íös >>> JsonObject [ "a" .= JsonNumber 42, "b" .= JsonBool True ] JsonObject [("a",JsonNumber 42),("b",JsonBool True)] ÈÉÊËÌÍÎÐÏ ÈÉÊËÌÍÎÐÏ$ Safe-Inferred¿cÒCabalMonadic variant of  mapAccumL.ÒÒ% Safe-Inferred9Â¥ÕCabalüA type to represent the unfolding of an expensive long running calculation that may fail (or maybe not expensive, but complicated!) We may get intermediate steps before the final result which may be used to indicate progress and/or logging messages.ÀTODO: Apply Codensity to avoid left-associativity problem. See  4http://comonad.com/reader/2011/free-monads-for-less/ and Èhttp://blog.ezyang.com/2012/01/problem-set-the-codensity-transformation/ÖCabalEmit a step and then continue.×CabalFail the computation.ØCabal Consume a Õ calculation. Much like �Ð for lists but with two base cases, one for a final result and one for failure.Eg to convert into a simple ‹ result use: $foldProgress (flip const) Left RightÕÖרÕÖר} Safe-InferredáÆF ªCabal"The internal data structure for a «Þ, which either records the representative element of an equivalence class, or a link to the «. that actually stores the representative type.«Cabal‚A variable which can be unified; alternately, this can be thought of as an equivalence class with a distinguished representative.¬CabalMutable write to a «­CabalRead the current value of «.®Cabal2Create a fresh equivalence class with one element.¯Cabal)Flatten any chains of links, returning a «8 which points directly to the canonical representation.°Cabal6Return the canonical element of an equivalence class «.±CabalçUnify two equivalence classes, so that they share a canonical element. Keeps the descriptor of point2.²Cabal5Test if two points are in the same equivalence class.«®°±²& Safe-Inferred7<ƉãCabal åæçèéÝÞßàáâãä åæçèéÝÞßàáâãä'Ian Lynagh 2007BSD3cabal-devel@haskell.orgportable Safe-Inferred7<Ô ýCabalIn ý mode, we should not print anything unless an error occurs.þCabal&Print stuff we want to see by default.ÿCabal&Be more verbose about what's going on.€CabalÉNot only are we verbose ourselves (perhaps even noisier than when being ÿ3), but we tell everything we run to be verbose too.�Cabal#Increase verbosity level, but stay ý if we are.‚Cabal#Decrease verbosity level, but stay € if we are.ƒCabal×Combinator for transforming verbosity level while retaining the original hidden state.*For instance, the following property holdsÆisVerboseNoWrap (modifyVerbosity (max verbose) v) == isVerboseNoWrap vNote: you can use modifyVerbosity (const v1) v0 to overwrite v1's flags with v0 's flags.„CabalNumeric verbosity level 0..3: 0 is ý, 3 is €.ˆCabal/Turn on verbose call-site printing when we log.‰Cabal0Turn on verbose call-stack printing when we log.ŠCabalTurn on -----BEGIN CABAL OUTPUT-----É markers for output from Cabal (as opposed to GHC, or system dependent).‹CabalÁTurn off marking; useful for suppressing nondeterministic output.ŒCabal'Disable line-wrapping for log messages.³CabalMark the verbosity as quiet.�Cabal$Turn on timestamps for log messages.ŽCabal%Turn off timestamps for log messages.�CabalSwitch logging to stderr.�CabalSwitch logging to stdout.‘Cabal#Turn off warnings for log messages.´Cabal,Helper function for flag enabling functions.µCabal-Helper function for flag disabling functions.’CabalTurn off all flags.”Cabal0Test if we should output call sites when we log.•Cabal1Test if we should output call stacks when we log.–Cabal!Test if we should output markets.—Cabal3Test if line-wrapping is disabled for log messages.˜CabalTest if we had called ‚ on the verbosity.™Cabal0Test if we should output timestamps when we log.šCabalTest if we should output to stderr when we log.›Cabal.Test if we should output warnings when we log.¶Cabal+Helper function for flag testing functions.�CabalParser verbosity-explicitEitherParsec parsecVerbosity "normal"ÉRight (Verbosity {vLevel = Normal, vFlags = fromList [], vQuiet = False})6explicitEitherParsec parsecVerbosity "normal+nowrap "ÐRight (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap], vQuiet = False})ÀexplicitEitherParsec parsecVerbosity "normal+nowrap +markoutput"ÜRight (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False})ÁexplicitEitherParsec parsecVerbosity "normal +nowrap +markoutput"ÜRight (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False})?explicitEitherParsec parsecVerbosity "normal+nowrap+markoutput"ÜRight (Verbosity {vLevel = Normal, vFlags = fromList [VNoWrap,VMarkOutput], vQuiet = False})ØexplicitEitherParsec parsecVerbosity "deafening+nowrap+stdout+stderr+callsite+callstack"ðRight (Verbosity {vLevel = Deafening, vFlags = fromList [VCallStack,VCallSite,VNoWrap,VStderr], vQuiet = False})Note:& this parser will eat trailing spaces. üýþÿ€�‚˜„…†‡’“ƒˆ‰”•Š–‹Œ—�™Ž�š�‘› üýþÿ€�‚˜„…†‡’“ƒˆ‰”•Š–‹Œ—�™Ž�š�‘›( Safe-Inferred ')*/0136<>ÀÂÃÄÍÒØÚÛÝäåìðõñ…>·Cabal#A token constructor used to define Ã= instances on types that involve existential quantification.§CabalÅA wrapper used to pass evidence of a constraint as an explicit value.©CabalÜThe rule command together with the result of the (optional) dynamic dependency computation.ªCabal/Only the (optional) dynamic dependency command.«CabalÄBoth the rule command and the (optional) dynamic dependency command.¬Cabal/The result of a dynamic dependency computation.¯CabalA dynamic dependency command.¸Cabal‘A placeholder for a command that has been omitted, e.g. when we don't care about serialising/deserialising one particular command in a datatype.²CabalCommands to execute a rule:6for a rule with static dependencies, a single command,þfor a rule with dynamic dependencies, a command for computing dynamic dependencies, and a command for executing the rule.³Cabal*A rule with statically-known dependencies.µCabal The command to execute the rule.¶CabalA ¤ for arg.·Cabal>A rule with dynamic dependencies, which consists of two parts:�a dynamic dependency computation, that returns additional edges to be added to the build graph together with an additional piece of data,ÿthe command to execute the rule itself, which receives the additional piece of data returned by the dependency computation.¸CabalÀA dynamic dependency computation. The resulting dependencies will be injected into the build graph, and the result of the computation will be passed on to the command that executes the rule.¹CabalãThe command to execute the rule. It will receive the result of the dynamic dependency computation.ºCabalA ¤ for the triple (depsArg,depsRes,arg).»Cabal=Internal datatype used for commands, both for the Hooks API (À) and for the build system.½Cabal)The (statically-known) action to execute.¾Cabal6The (possibly dynamic) argument to pass to the action.¿CabalÅStatic evidence that the argument can be serialised and deserialised.ÀCabalìA command consists of a statically-known action together with a (possibly dynamic) argument to that action.ÇFor example, the action can consist of running an executable (such as happy or c2hsè), while the argument consists of the variable component of the command, e.g. the specific file to run happy on.ÁCabal>A static pointer (in user scope) or its key (in system scope).ÂCabalA collection of Þs.Use the ñ1 smart constructor instead of directly using the à constructor.Rules are registered using  registerRule,2Monitored files or directories are declared using addRuleMonitorsÅ; a change in these will trigger the recomputation of all rules.The envì type parameter represents an extra argument, which usually consists of information known to Cabal such as LocalBuildInfo and ComponentLocalBuildInfo.ÅCabal8Monad transformer for defining rules. Usually wraps the ø monad, allowing IO actions to be performed using liftIO.ÈCabal'The environment within the monadic API.ÌCabalMonad for constructing rules.ÍCabal)A reference to an output of another rule.ÏCabal)which rule's outputs are we referring to?ÐCabal%which particular output of that rule?ÑCabalA dependency of a rule.ÒCabal*A dependency on an output of another rule.ÓCabal?A direct dependency on a file at a particular location on disk.ÊThis should not be used for files that are generated by other rules; use Ò instead.ÔCabalšA (fully resolved) location of a dependency or result of a rule, consisting of a base directory and of a file path relative to that base directory path.)In practice, this will be something like Ô dir (moduleNameSymbolicPath mod  . "hs") , where:for a file dependency, dir( is one of the Cabal search directories,for an output, dir is a directory such as autogenComponentModulesDir or componentBuildDir.ÖCabalBase directory.×CabalÀFile path relative to base directory (including file extension).ØCabalA rule consists of:%an action to run to execute the rule,-a description of the rule inputs and outputs.Use í or îÒ to construct a rule, overriding specific fields, rather than directly using the Þ constructor.ÙCabalPlease use the í or îð smart constructors instead of this constructor, in order to avoid relying on internal implementation details.ÚCabalTo run this rule, which Às should we execute?ÛCabal!Static dependencies of this rule.ÜCabalResults of this rule.âCabalÞ-s are defined with rich types by the package.ÑThe build system only has a limited view of these; most data consists of opaque  ByteStrings.The â9 data-type describes which side of this divide we are on.ãCabalUser space (with rich types).äCabal.Build-system space (manipulation of raw data).åCabalA unique identifier for a Þ.¹CabalInternal function: create a º from a ».íCabal A rule with static dependencies./Prefer using this smart constructor instead of Ù whenever possible.îCabal!A rule with dynamic dependencies./Prefer using this smart constructor instead of Ù whenever possible.ïCabal6Get a (relative or absolute) un-interpreted path to a Ô.ðCabalAn empty collection of rules.ñCabal3Construct a collection of rules with a given label.3A label for the rules can be constructed using the static keyword, using the StaticPointers# extension. NB: separate calls to ñ should have different labels.Example usage: ámyRules :: Rules env myRules = rules (static ()) $ \ env -> do { .. } -- use the monadic API here¼Cabal2Internal function to create a collection of rules. API users should go through the ñ function instead.òCabal#Internal function: run the monadic Â* computations in order to obtain all the Þ s with their ås.óCabalConstruct a command./Prefer using this smart constructor instead of ¼ whenever possible.ôCabalRun a À.õCabalûProject out the (optional) dependency computation command, so that it can be serialised without serialising anything else.öCabalObtain the (optional) ø+ action that computes dynamic dependencies.÷CabalôProject out the command for running the rule, passing in the result of the dependency computation if there was one.øCabal Obtain the ø action that executes a rule.‚CabalÁSerialise and deserialise a raw ByteString, leaving it untouched.ƒCabalÂSerialise/deserialise, always including the length of the payload.ŽCabal Trimmed down ¡% instance, mostly for error messages.‘CabalWarning: this � instance is not commutative.ñCabal)unique label for this collection of rulesCabalthe computation of rules¼Cabalrule namespaceCabalthe computation of rulesãÞØÙÚÛÜåæçèíî²³´µ¶·¸¹ºÀ»¼½¾¿ô󧨫ª©¯°±¬­®õö÷øÂÃÄÑÒÓÍÎÏÐñðÔÕÖ×ïßàáâãäåÚÛÜÝÞÖרÙÌÅÆÇÈÉÊËòâäãßàáÁëéìêÝùãÞØÙÚÛÜåæçèíî²³´µ¶·¸¹ºÀ»¼½¾¿ô󧨫ª©¯°±¬­®õö÷øÂÃÄÑÒÓÍÎÏÐñðÔÕÖ×ïßàáâãäåÚÛÜÝÞÖרÙÌÅÆÇÈÉÊËòâäãßàáÁëéìêÝù) Safe-Inferred)*6ä÷D ÒCabalAN error involving the Rules in the  SetupHooks0 module of a package with the Hooks build-type.ÓCabal?There are cycles in the dependency graph of fine-grained rules.ÔCabalùWhen executing fine-grained rules compiled into the external hooks executable, we failed to find dependencies of a rule.ÕCabalŠWhen executing fine-grained rules compiled into the external hooks executable, a rule failed to generate the outputs it claimed it would.ÖCabalÃAn invalid reference to a rule output, e.g. an out-of-range index.×Cabal A duplicate å( in the construction of pre-build rules.ØCabalAn error involving the  SetupHooks, module of a package with Hooks build-type.ÙCabalÅCannot apply a diff to a component in a per-component configure hook.ÚCabalAn error with pre-build rules.ÔCabalmissing dependenciesÕCabalmissing outputsÖCabalruleCabal dependencyCabaloutputs of dependencyCabalthe invalid indexØÚÙÏÐÑËÌÍÎÒÓÔÕÖ×ÛÜØÚÙÏÐÑËÌÍÎÒÓÔÕÖ×ÛÜ*)Isaac Jones 2006, Duncan Coutts 2007-2009cabal-devel@haskell.orgportable Safe-Inferred7<ÃØÝøáCabal‹Where a program was found. Also tells us whether it's specified by user or not. This includes not just the path, but the program as well.âCabalÉThe user gave the path to this program, eg. --ghc-path=/usr/bin/ghc-6.6ãCabal$The program was found automatically.åCabalËRepresents a program which has been configured and is thus ready to be run.(These are usually made by configuring a ô=, but if you have to construct one directly then start with ý and override any extra fields.çCabalJust the name againèCabal,The version of this program, if it is known.éCabal�Default command-line args for this program. These flags will appear first on the command line, so they can be overridden by subsequent flags.êCabal„Override command-line args for this program. These flags will appear last on the command line, so they override all earlier flags.ëCabal­Override environment variables for this program. These env vars will extend/override the prevailing environment of the current to form the environment for the new process.ìCabal­A key-value map listing various properties of the program, useful for feature detection. Populated during the configuration step, key names depend on the specific program.íCabalLocation of the program. eg. /usr/bin/ghc-6.4îCabalIn addition to the í¢ where the program was found, these are additional locations that were looked at. The combination of ths found location and these not-found locations can be used to monitor to detect when the re-configuring the program might give a different result (e.g. found in a different location).ðCabalA specific dirñCabalThe system defaultòCabalÏA search path to use when locating executables. This is analogous to the unix $PATH or win32 %PATH%Ñ but with the ability to use the system default method for finding executables (findExecutable) which on unix is simply looking on the $PATH* but on win32 is a bit more complicated).The default to use is [ProgSearchPathDefault]‹ but you can add extra dirs either before, after or instead of the default, e.g. here we add an extra dir to search after the usual ones. 8['ProgramSearchPathDefault', 'ProgramSearchPathDir' dir]ÊWe also use this path to set the environment when running child processes.The  ProgramDb is created with a ProgramSearchPath to which we prependProgramSearchPathŸ to add the ones that come from cli flags and from configurations. Then each of the programs that are configured in the db inherits the same path as part of configureProgram.ôCabal-Represents a program which can be configured.9Note: rather than constructing this directly, start with  simpleProgram and override any extra fields.öCabal'The simple name of the program, eg. ghc÷CabalúA function to search for the program if its location was not specified by the user. Usually this will just be a call to findProgramOnSearchPath.‚It is supplied with the prevailing search path which will typically just be used as-is, but can be extended or ignored as needed.‘For the purpose of change monitoring, in addition to the location where the program was found, it returns all the other places that were tried.øCabal�Try to find the version of the program. For many programs this is not possible or is not necessary so it's OK to return Nothing.ùCabal«A function to do any additional configuration after we have located the program (and perhaps identified its version). For example it could add args, or environment vars.úCabal A function that filters any arguments that don't impact the output from a commandline. Used to limit the volatility of dependency hashes when using new-build.ûCabal&The full path of a configured program.üCabal/Suppress any extra arguments added by the user.ýCabalMake a simple å. 2simpleConfiguredProgram "foo" (FoundOnSystem path)ôõö÷øùúòïðñåæçèéêëìíîûüóáâãäýôõö÷øùúòïðñåæçèéêëìíîûüóáâãäý++(c) 2003-2005, Isaac Jones, Malcolm WallaceBSD3cabal-devel@haskell.orgportable Safe-Inferred1<ÃÒØÝn�CabalA suffix (or file extension).ÈMostly used to decide which preprocessor to use, e.g. files with suffix "y" are usually processed by the "happy" build tool.’Cabal>A command to run a given preprocessor on a single source file.žThe input and output file paths are passed in as arguments, as it is the build system and not the package author which chooses the location of source files.“Cabal¡The interface to a preprocessor, which may be implemented using an external program, but need not be. The arguments are the name of the input file, the name of the output file and a verbosity level. Here is a simple example that merely prepends a comment to the given source file: ôppTestHandler :: PreProcessor ppTestHandler = PreProcessor { platformIndependent = True, runPreProcessor = mkSimplePreProcessor $ \inFile outFile verbosity -> do info verbosity (inFile++" has been preprocessed to "++outFile) stuff <- readFile inFile writeFile outFile ("-- preprocessed as a test\n\n" ++ stuff) return ExitSuccess�We split the input and output file names into a base directory and the rest of the file name. The input base dir is the path in the list of search dirs that this file was found in. The output base dir is the build dir where all the generated source files are put.²The reason for splitting it up this way is that some pre-processors don't simply generate one output .hs file from one input file but have dependencies on other generated files (notably c2hs, where building one .hs file may require reading other .chi files, and then compiling the .hs file may require reading a generated .h file). In these cases the generated files need to embed relative path names to each other (eg the generated .hs file mentions the .h file in the FFI imports). This path must be relative to the base directory where the generated files are located, it cannot be relative to the top level of the build tree because the compilers do not look for .h files relative to there, ie we do not use "-I .", instead we use "-I dist/build" (or whatever dist dir has been set by the user)€Most pre-processors do not care of course, so mkSimplePreProcessor and runSimplePreProcessor functions handle the simple case.–CabalThis function can reorder all® modules, not just those that the require the preprocessor in question. As such, this function should be well-behaved and not reorder modules it doesn't have dominion over!’Cabal2Location of the source file relative to a base dirCabal0Output file name, relative to an output base dir �‘“”•–—’˜™ �‘“”•–—’˜™, Safe-Inferredä$§CabalNoLibraryFoundÆ has been downgraded to a warning, and is therefore no longer emitted.‡¢ÏТ ’ “ £¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€ � ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ � Ž � � ‘ ” • – — ˜ ™ š › œ � ž Ÿ   ¡ £ ¤ ¥ ¦ § ¨ ‡¢ÏТ ’ “ £¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€ � ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ � Ž � � ‘ ” • – — ˜ ™ š › œ � ž Ÿ   ¡ £ ¤ ¥ ¦ § ¨ -...cabal-devel@haskell.orgportable Safe-InferredA« CabalNo unliteration.¬ Cabal¬ „ takes a filename (for error reports), and transforms the given string, to eliminate the literate comments from the program text.¬ « ¬ « ~ Safe-InferredØÝ!Å!½CabalThe mutable counterpart of ɾCabalThe mutable counterpart of Ì.¿CabalThe mutable counterpart of a  ModuleSubst (not defined here).ÀCabal!An integer for uniquely labeling ÁÁ nodes. We need these labels in order to efficiently serialize Ás into –™s (we use the label to check if any parent is the node in question, and if so insert a deBruijn index instead.) These labels must be unique across all –s/Â$s which participate in unification!ÃCabalA mutable version of –# which can be imperatively unified.ÄCabalA mutable version of Â# which can be imperatively unified.ÁCabalContents of a mutable Á reference.ÅCabalContents of a mutable Å reference.ÆCabalÃA convenient alias for mutable references in the unification monad.ÇCabalThe unification environment.ÈCabal%A supply of unique integers to label Áè cells. This is used to determine loops in unit identifiers (which can happen with mutual recursion.)ÉCabal±The set of requirements in scope. When a provision is brought into scope, we unify with the requirement at the same module name to fill it. This mapping grows monotonically.ÊCabal¶Component id of the unit we're linking. We use this to detect if we fill a requirement with a local module, which in principle should be OK but is not currently supported by GHC.ËCabal'How verbose the error message should beÌCabalThe error reporting contextÍCabal0The package index for expanding unit identifiersÎCabalAccumulated errorsÏCabalÇThe unification monad, this monad encapsulates imperative unification.ÐCabal+Run a computation in the unification monad.ÑCabalLift a computation from Ò monad to Ï monad. Internal use only.ÓCabalImperatively read a Æ.ÔCabalImperatively write a Æ.ÕCabal(Get the current unification environment.ÖCabal)Add a fixed message to the error context.×CabalÁAdd a message to the error context. It may make monadic queries.ØCabalConversion of  ModuleSubst to ¿ÙCabalConversion of ¿ to  ModuleSubstÚCabalReturns Ûë if there is no a mutually recursive unit. | Otherwise returns a list of signatures instantiated by given Á.ÜCabal An empty ¾.ÝCabal Convert a + into a ¾", so we can do unification on it.ÞCabal Convert a ¾ to a Ì.ßCabal Convert a É to a ½àCabal Convert a ½ to a É)ÏÐáâãäÖ×ÑÇåÈÉÊËÌÍÎÕÄÅæçèéÃÁêëìí¿ÙؾÜÞîÝßà Safe-Inferredá#€ïCabalÃGiven to scopes of provisions and requirements, link them together.ðCabalµLink a list of possibly provided modules to a single requirement. This applies a side-condition that all of the provided modules at the same name are *actually* the same module.ñCabalImperatively unify two modules.ï€ Safe-Inferred#ªòóôõœËö� Safe-Inferred<#â÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹‚ Safe-Inferred<$5 Œ�Ž��‘’“”ƒ Safe-Inferred<$p•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­„ Safe-Inferred$Ë®¯°±²³´µ#Isaac Jones, Simon Marlow 2003-2004=BSD3 portions Copyright (c) 2007, Galois Inc.cabal-devel@haskell.orgportable Safe-Inferred)*13<ÂÃÄØÝäe5â­ CabalAdvanced options for ú  and ý .¯ CabalKeep temporary files?¶Cabal/When should we output the marker? Things like die always get marked, but a ·5 will only be output if we're not a quiet verbosity.¸CabalÀWhen should we emit the call stack? We always emit for internal errors, emit the trace for errors when we are in verbose mode, and otherwise only emit it if explicitly asked for using the  +callstack# verbosity flag. (At the moment, ¹ is not used.ºCabalTag an ­= whose error string should be output to the screen verbatim.»Cabal Check if an ­% should be output verbatim to screen.¼Cabal Create a Î) whose error text will be output verbatim½CabalÂPrefixing a message to indicate that it is a fatal error, if the ¾ is not already present.¾Cabal4A prefix indicating that a message is a fatal error.¿Cabal.Prefix an error string with program name from ÀÁCabal,Annotate an error string with timestamp and Â.¸ CabalžGiven a block of IO code that may raise an exception, annotate it with the metadata from the current scope. Use this as close to external code that raises IO exceptions as possible, since this function unconditionally wraps the error message with a trace (so it is NOT idempotent.)ÃCabal2A semantic editor for the error message inside an ­.ÄCabal'A lens for the error message inside an ­.ÅCabalBC wrapper around ¬.ÆCabal Depending on š, set the output handle to Ç or È.» CabalÃNon fatal conditions that may be indicative of an error or problem.We display these at the þ verbosity level.¼ CabalLike » , but prepend Error: ¦@ instead of  Waring: ¦@ÿ before the the message. Useful when you want to highlight the condition is an error but do not want to quit the program yet.ÉCabal%Warning message, with a custom label.½ CabalUseful status messages.We display these at the þ verbosity level.“This is for the ordinary helpful status messages that users see. Just enough information to know that things are working but not floods of detail.¾ CabalDisplay a message at þ( verbosity level, but without wrapping.¿ CabalPretty-print a Ê status message at þ: verbosity level. Use this if you need fancy formatting.À CabalËDisplay a "setup status message". Prefer using setupMessage' if possible.Á Cabal,More detail on the operation of some action.6We display these messages when the verbosity level is ÿà Cabal'Detailed internal debugging information6We display these messages when the verbosity level is €Ä Cabal A variant of à Ù that doesn't perform the automatic line wrapping. Produces better output in some cases.Å CabalØPerform an IO action, catching any IO exceptions and printing an error if one occurs.Æ Cabal!Run an IO computation, returning e- if it raises a "file does not exist" error.ËCabalWraps text unless the +nowrap verbosity flag is activeÌCabalPrepends a timestamp if  +timestamp verbosity flag is setThis is used by ÂÇ CabalWrap output with a marker if  +markoutput verbosity flag is set.’NB: Why is markoutput done with start/end markers, and not prefixes? Markers are more convenient to add (if we want to add prefixes, we have to Ê and then æ…; here's it's just some concatenates). Note that even in the prefix case, we can't guarantee that the markers are unambiguous, because some of Cabal's output comes straight from external programs, where we don't have the ability to interpose on the output.This is used by ÂÍCabalÖAppend a trailing newline to a string if it does not already have a trailing newline.ÎCabal8Prepend a call-site and/or call-stack based on VerbosityÏCabalâDetermine if we should emit a call stack. If we trace, it also emits any prefix we should append.ÂCabal/Add all necessary metadata to a logging messageÈ Cabal/Add all necessary metadata to a logging messageÉ Cabal7Append a call-site and/or call-stack based on VerbosityÊ CabalHelper to use with one of the  rawSystem? variants, and exit unless the command completes successfully.ÐCabalœLog a command execution (that's typically about to happen) at info level, and log working directory and environment overrides at debug level if specified.Ë CabalêExecute the given command with the given arguments, exiting with the same exit code if the command fails.Ì Cabal×Execute the given command with the given arguments, returning the command's exit code.Í Cabal×Execute the given command with the given arguments, returning the command's exit code.!Create the process argument with V* to ensure consistent options with other  rawSystem functions in this module.Î CabalØExecute the given command with the given arguments, returning the command's exit code. action÷ is executed while the command is running, and would typically be used to communicate with the process through pipes.!Create the process argument with V* to ensure consistent options with other  rawSystem functions in this module.Ï CabalÁfromJust for dealing with 'Maybe Handle' values as obtained via m…. Creating a pipe using  CreatePipe guarantees a „$ value for the corresponding handle.Ð CabalúExecute the given command with the given arguments and environment, exiting with the same exit code if the command fails.Ñ CabalLike Ð ", but setting a working directory.Ò Cabal×Execute the given command with the given arguments, returning the command's exit code.ÞOptional arguments allow setting working directory, environment and input and output handles.Ó CabalØExecute the given command with the given arguments, returning the command's exit code. action÷ is executed while the command is running, and would typically be used to communicate with the process through pipes.ÞOptional arguments allow setting working directory, environment and input and output handles.Ô CabalûExecute the given command with the given arguments, returning the command's output. Exits if the command exits with error.9Provides control over the binary/text mode of the output.Õ CabalêExecute the given command with the given arguments, returning the command's output, errors and exit code.ÓOptional arguments allow setting working directory, environment and command input.ÃProvides control over the binary/text mode of the input and output.Ö Cabal#Ignore SIGPIPE in a subcomputation.× Cabal¸Look for a program and try to find it's version number. It can accept either an absolute path or the name of a program binary, in which case we will look for the program on the path.Ø CabalÒLike the Unix xargs program. Useful for when we've got very long command lines that might overflow an OS limit on command line length and so you need to invoke a command multiple times to get all the args in.ÀUse it with either of the rawSystem variants above. For example: Àxargs (32*1024) (rawSystemExit verbosity) prog fixedArgs bigArgsÙ CabalÊFind a file by looking in a search path. The file path must match exactly.Ú CabalÊFind a file by looking in a search path. The file path must match exactly.Û CabalÑFind a file by looking in a search path with one of a list of possible file extensions. The file base name should be given and it will be tried with each of the extensions in each element of the search path.Ü CabalØFind a file by looking in a search path with one of a list of possible file extensions.Ý Cabalß CabalLike Û ø but returns which element of the search path the file was found in, and the file path relative to that base directory.à CabalLike Ü ø but returns which element of the search path the file was found in, and the file path relative to that base directory.â CabalÀFinds the files corresponding to a list of Haskell module names.As findModuleFile but for a list of module names.ã CabalÀFinds the files corresponding to a list of Haskell module names.As å  but for a list of module names.ä Cabal5Find the file corresponding to a Haskell module name.This is similar to ß ê but specialised to a module name. The function fails if the file corresponding to the module is missing.å Cabal5Find the file corresponding to a Haskell module name.This is similar to à ê but specialised to a module name. The function fails if the file corresponding to the module is missing.æ Cabal9List all the files in a directory and all subdirectories.ÓThe order places files in sub-directories after all the files in their parent directories. The list is generated lazily so is not well defined if the source directory structure changes before the list is used.ç Cabal,Is this directory in the system search path?é Cabal¨Compare the modification times of two files to see if the first is newer than the second. The first file must exist but the second need not. The expected use case is when the second file is generated using the first. In this use case, if the result is True then the second file is out of date.ê CabalLike é -, but also checks that the first file exists.ë CabalSame as createDirectoryIfMissing% but logs at higher verbosity levels.ì Cabal‹Copies a file without copying file permissions. The target file is created with default permissions. Any existing target file is replaced.3At higher verbosity levels it logs an info message.í CabalÛInstall an ordinary file. This is like a file copy but the permissions are set appropriately for an installed file. On Unix it is "-rw-r--r--" while on Windows it uses the default permissions for the target directory.î CabalÝInstall an executable file. This is like a file copy but the permissions are set appropriately for an installed file. On Unix it is "-rwxr-xr-x" while on Windows it uses the default permissions for the target directory.ï CabalÅInstall a file that may or not be executable, preserving permissions.ð Cabal�Given a relative path to a file, copy it to the given directory, preserving the relative path and creating the parent directories if needed.ñ Cabal�Given a relative path to a file, copy it to the given directory, preserving the relative path and creating the parent directories if needed.ÑCabalCommon implementation of ò , ó , ô  and õ .ò Cabal¤Copies a bunch of files to a target directory, preserving the directory structure in the target location. The target directories are created if they do not exist.›The files are identified by a pair of base directory and a path relative to that base. It is only the relative part that is preserved in the destination. For example: ÒcopyFiles normal "dist/src" [("", "src/Foo.hs"), ("dist/build/", "src/Bar.hs")]ñThis would copy "src/Foo.hs" to "dist/src/src/Foo.hs" and copy "dist/build/src/Bar.hs" to "dist/src/src/Bar.hs".üThis operation is not atomic. Any IO failure during the copy (including any missing source files) leaves the target in an unknown state so it is best to use it with a freshly created directory so that it can be simply deleted if anything goes wrong.ó Cabal This is like ò  but uses í .ô Cabal This is like ò  but uses î .õ Cabal This is like ò  but uses ï .ö CabalªThis installs all the files in a directory to a target location, preserving the directory layout. All the files are assumed to be ordinary rather than executable files.÷ Cabal?Recursively copy the contents of one directory to another path.ø CabalLike Ò., but also checks that the file is executable.ú Cabal3Use a temporary filename that doesn't already existû Cabal4Use a temporary filename that doesn't already exist.ü Cabal A version of ú  that additionally takes a ­  argument.ý Cabal%Create and use a temporary directory.�Creates a new temporary directory inside the given directory, making use of the template. The temp directory is deleted after use. For example: >withTempDirectory verbosity "src" "sdist." $ \tmpDir -> do ...The tmpDir: will be a new subdirectory of the given directory, e.g.  src/sdist.342.þ Cabal%Create and use a temporary directory.�Creates a new temporary directory inside the given directory, making use of the template. The temp directory is deleted after use. For example: >withTempDirectory verbosity "src" "sdist." $ \tmpDir -> do ...The tmpDir: will be a new subdirectory of the given directory, e.g.  src/sdist.342.ÿ Cabal A version of ý  that additionally takes a ­  argument.€ Cabal A version of þ  that additionally takes a ­  argument.� Cabal¾Write a file but only if it would have new content. If we would be writing the same as the existing content then leave the file as is so that we do not update the file's modification time.�NB: Before Cabal-3.0 the file content was assumed to be ASCII-representable. Since Cabal-3.0 the file is assumed to be UTF-8 encoded.‚ CabalSame as �  but for  ByteStrings.„ Cabal"Drop the extension if it's one of …  , or return the path unchanged.… CabalËList of possible executable file extensions on the current build platform.† CabalPackage description file (pkgname.cabal$) in the current working directory.‡ CabalÅFind a package description file in the given directory. Looks for .cabal files.ˆ CabalLike ‡  , but calls die in case of error.‰ CabalÇFind auxiliary package information in the given directory. Looks for  .buildinfo files.Å Cabal.a description of the action we were attemptingCabalthe action itselfÒ CabalNew working dir or inheritCabalNew environment or inheritCabalstdinCabalstdoutCabalstderrÓ CabalNew working dir or inheritCabalNew environment or inheritCabal7action to perform after process is created, but before waitForProcess.CabalstdinCabalstdoutCabalstderrÕ CabalProgram locationCabal ArgumentsCabalNew working dir or inheritCabalNew environment or inheritCabalinput text and binary modeCabaliodata mode, acts as proxyCabaloutput, errors, exit× Cabal version argsCabal8function to select version number from program outputCaballocationÙ Cabalworking directoryCabalsearch directoriesCabal File NameÚ Cabalsearch directoriesCabal File NameÝ Cabalworking directoryCabal extensionsCabalrelative search locationsCabalbasenameâ Cabal"build prefix (location of objects)Cabalsearch suffixesCabalmodulesã Cabal"build prefix (location of objects)Cabalsearch suffixesCabalmodulesä Cabal"build prefix (location of objects)Cabalsearch suffixesCabalmoduleå Cabal"build prefix (location of objects)Cabalsearch suffixesCabalmoduleë CabalCreate its parents too?ú CabalTemp dir to create the file inCabalFile name template. See ê.û CabalWorking directoryCabalTemp dir to create the file inCabalFile name template. See ê.ü CabalWorking directoryCabalTemp dir to create the file inCabalFile name template. See ê.þ CabalWorking directory€ CabalWorking directory‡ Cabalpackage directoryˆ Cabaldirectory in which to look‰ CabalWorking directoryCabalDirectory to searchCabaldir/pkgname .buildinfo , if presentŒ² ³ µ ¶ ´ · º ¹ » ¼ ½ ¾ ¿ À Á Â Ã Ä Å ¸ È Ç Æ Ö Ë Ì Í Î Ð Ñ Ô Õ Ò Ó Ï Ê Ø × ¿ÀÁ»¼½¾¸¹º° ± ë ì ò ð ñ í î ï ó ô õ ö ÷ ø STƒ „ … Ú Ù á �‘Û Ü ß à Þ Ý ä å â ã æ ç è é ê ­ ® ¯ ù ú û ü ý þ ÿ € R† ‡ ˆ ‰ ‘•� ‚ ýþŽ�ˆ’–„ÿû�üƒ�‚…†‡‰Œ‹Š�”“G€É Œ² ³ µ ¶ ´ · º ¹ » ¼ ½ ¾ ¿ À Á Â Ã Ä Å ¸ È Ç Æ Ö Ë Ì Í Î Ð Ñ Ô Õ Ò Ó Ï Ê Ø × ¿ÀÁ»¼½¾¸¹º° ± ë ì ò ð ñ í î ï ó ô õ ö ÷ ø STƒ „ … Ú Ù á �‘Û Ü ß à Þ Ý ä å â ã æ ç è é ê ­ ® ¯ ù ú û ü ý þ ÿ € R† ‡ ˆ ‰ ‘•� ‚ ýþŽ�ˆ’–„ÿû�üƒ�‚…†‡‰Œ‹Š�”“G€É . Safe-Inferred7<ÝlÍ � Cabal%NubListR : A right-biased version of �  . That is +toNubListR ["-XNoFoo", "-XFoo", "-XNoFoo"] will result in ["-XFoo", "-XNoFoo"], unlike the normal � ), which is left-biased. Built on top of ‡ and ‚.� CabalÁNubList : A de-duplicated list that maintains the original order.‘ Cabal'Smart constructor for the NubList type.’ Cabal7Lift a function over lists to a function over NubLists.ÓCabal1Helper used by NubList/NubListR's Read instances.“ Cabal(Smart constructor for the NubListR type.” Cabal8Lift a function over lists to a function over NubListRs.– Cabal>Binary instance for 'NubList a' is the same as for '[a]'. For ¼6, we just pull off constructor and put the list. For », we get the list and make a �  out of it using ‘ .š CabalŽMonoid operations on NubLists. For a valid Monoid instance we need to satisfy the required monoid laws; identity, associativity and closure.'Identity : by inspection: mempty ¡ NubList xs == NubList xs ¡ mempty1Associativity : by inspection: (NubList xs ¡ NubList ys) ¡ NubList zs == NubList xs ¡ (NubList ys ¡ NubList zs)äClosure : appending two lists of type a and removing duplicates obviously does not change the type.� � ‘ ’ � Ž “ ” � ‘ � ’ � “ Ž ” / Safe-InferredÃÒØÝnû¢ CabalThe Õ4 monad with specialized logging and error messages.£ CabalRun ¢ !, outputting traces according to ü, die if there is an error.¤ Cabal"Output a warning trace message in ¢ .¥ Cabal)Output an informational trace message in ¢ .¦ Cabal+Fail the computation with an error message.ÔCabal:Format a message with context. (Something simple for now.)§ Cabal+Add a message to the error/warning context.¢ £ ¤ ¥ ¦ § ¢ £ ¤ ¥ ¦ § 0Duncan Coutts 2009cabal-devel@haskell.orgportable Safe-Inferred )*1ÃØÝðtˆ® Cabal7Represents a specific invocation of a specific program.�This is used as an intermediate type between deciding how to call a program and actually doing it. This provides the opportunity to the caller to adjust how the program will be called. These invocations can either be run directly or turned into shell or batch scripts.µ Cabal6TODO: remove this, make user decide when constructing ´ .À CabalåReturn the current environment extended with the given overrides. If an entry is specified twice in  overrides%, the second entry takes precedence.Á CabalÒLike the unix xargs program. Useful for when we've got very long command lines that might overflow an OS limit on command line length and so you need to invoke a command multiple times to get all the args in.äIt takes four template invocations corresponding to the simple, initial, middle and last invocations. If the number of args given is small enough that we can get away with just a single invocation then the simple one is used:  $ simple args•If the number of args given means that we need to use multiple invocations then the templates for the initial, middle and last invocations are used: É$ initial args_0 $ middle args_1 $ middle args_2 ... $ final args_n® ¯ ° ± ² ³ ´ µ ¶ « ¬ ­ · ¸ ¹ º Á » ¼ ½ ¾ ¿ À ® ¯ ° ± ² ³ ´ µ ¶ « ¬ ­ · ¸ ¹ º Á » ¼ ½ ¾ ¿ À 1Duncan Coutts 2009cabal-devel@haskell.orgportable Safe-Inferred)*vB CabalïGenerate a system script, either POSIX shell script or Windows batch file as appropriate for the given system.à Cabal5Generate a POSIX shell script that invokes a program.Ä Cabal5Generate a Windows batch file that invokes a program.Â Ã Ä Â Ã Ä 2(c) Sergey Vinokurov 2017 BSD3-stylecabal-devel@haskell.org Safe-Inferred1ÃØÝðwžÅ CabalWorking directoryCabal%Directory to create response file in.Cabal Template for response file name.Cabal+Encoding to use for response file contents.Cabal$Arguments to put into response file.Å Å 3Thomas Tuegel 2011cabal-devel@haskell.orgportable Safe-Inferred1ÃØÝ{ÙÆ Cabal%Invoke hpc with the given parameters.ÔPrior to HPC version 0.7 (packaged with GHC 7.8), hpc did not handle multiple .mix paths correctly, so we print a warning, and only pass it the first path in the list. This means that e.g. test suites that import their library as a dependency can still work, but those that include the library modules directly (in other-modules) don't.Æ CabalPath to .tix fileCabalPaths to .mix file directoriesCabal(Path where html output should be locatedCabal(List of modules to include in the reportÕCabalPath to .tix fileCabalPaths to .mix file directoriesCabal)Path where html output should be locatedCabalList of modules to includeÇ CabalPaths to .tix filesCabalPath to resultant .tix fileCabal%List of modules to exclude from unionÖCabalPaths to .tix filesCabalPath to resultant .tix fileCabal%List of modules to exclude from unionÆ Ç Æ Ç 4Duncan Coutts 2013cabal-devel@haskell.orgportable Safe-Inferred7<ÃØÝBÌ CabalAdds some paths to the PATHÌ entry in the key-value environment provided or if there is none, looks up $PATH in the real environment.Í Cabal Interpret a ò to construct a new $PATHø env var. Note that this is close but not perfect because on Windows the search algorithm looks at more than just the %PATH%.Î Cabal=Get the system search path. On Unix systems this is just the $PATH6 env var, but on windows it's a bit more complicated.Ï CabalMake a simple named program.ŠBy default we'll just search for it in the path and not try to find the version name. You can override these behaviours if necessary, eg: Ì(simpleProgram "foo") { programFindLocation = ... , programFindVersion ... } òïðñÈ Ë Í É Ê Î Ì Ï òïðñÈ Ë Í É Ê Î Ì Ï 5ð(c) David Himmelstrup 2005, Bjorn Bringert 2007, Duncan Coutts 2008-2009cabal-devel@haskell.orgportable Safe-Inferred7<ÂÃÄ–Õ×Cabal(We maintain the invariant that, for any ×=, there is only one instance of the package in our database.Ô Cabal)The default package index which contains InstalledPackageInfo. Normally use this.Õ Cabal>The collection of information about packages from one or more  PackageDB8s. These packages generally should have an instance of Ø-Packages are uniquely identified in by their –Ñ, they can also be efficiently looked up by package name or by name and version.Ö Cabal*Build an index out of a bunch of packages.If there are duplicates by –$ then later ones mask earlier ones.× CabalMerge two indexes.ÓPackages from the second mask packages from the first if they have the exact same –."For packages with the same source Ù�, packages from the second are "preferred" over those from the first. Being preferred means they are top result when we do a lookup by source ÙÍ. This is the mechanism we use to prefer user packages over global packages.Ø Cabal(Inserts a single package into the index.8This is equivalent to (but slightly quicker than) using ¡ or ×  with a singleton index.Ù Cabal2Removes a single installed package from the index.Ú Cabal&Removes all packages with this source Ù from the index.Û CabalÄRemoves all packages with this (case-sensitive) name from the index.9NB: Does NOT delete internal libraries from this package.Ü Cabal$Get all the packages from the index.Ý Cabal$Get all the packages from the index.4They are grouped by package name (case-sensitively).$(Doesn't include private libraries.)Þ Cabal$Get all the packages from the index.ÁThey are grouped by source package id (package name and version).#(Doesn't include private libraries)ß Cabal$Get all the packages from the index.7They are grouped by source package id and library name.%This DOES include internal libraries.à Cabal!Does a lookup by unit identifier..Since multiple package DBs mask each other by –(, then we get back at most one package.á CabalÔDoes a lookup by component identifier. In the absence of Backpack, this is just a à .â Cabal4Does a lookup by source package id (name & version).>There can be multiple installed packages with the same source Ù but different –Ë. They are returned in order of preference, with the most preferred first.ã CabalConvenient alias of â 0, but assuming only one package per package ID.ä Cabal%Does a lookup by source package name.å Cabal=Does a lookup by source package name and a range of versions.ïWe get back any number of versions of the specified package name, all satisfying the version range constraint.ÖThis does NOT work for internal dependencies, DO NOT use this function on those; use æ  instead.INVARIANT: List of eligible Û is non-empty.æ Cabal=Does a lookup by source package name and a range of versions.ïWe get back any number of versions of the specified package name, all satisfying the version range constraint.INVARIANT: List of eligible Û is non-empty.ç Cabal/Does a case-insensitive search by package name.óIf there is only one package that compares case-insensitively to this name then the search is unambiguous and we get back all versions of that package. If several match case-insensitively but one matches exactly then it is also unambiguous.‰If however several match case-insensitively and none match exactly then we have an ambiguous result, and we get back all the versions of all the packages. The list of ambiguous results is split by exact package name. So it is a non-empty list of non-empty lists.è Cabal9Does a case-insensitive substring search by package name.ÂThat is, all packages that contain the given string in their name.é Cabalê CabalÜFind if there are any cycles in the dependency graph. If there are no cycles the result is [].¶This actually computes the strongly connected components. So it gives us a list of groups of packages where within each group they all depend on each other, directly or indirectly.ë CabalÈAll packages that have immediate dependencies that are not in the index.ÇReturns such packages along with the dependencies that they're missing.ì CabalÁTries to take the transitive closure of the package dependencies.€If the transitive closure is complete then it returns that subset of the index. Otherwise it returns the broken packages as in ë .Note that if the result is Right []3 it is because at least one of the original given Ùs do not occur in the index.í CabalÂTakes the transitive closure of the packages reverse dependencies. The given Ùs must be in the index.ð Cabal+Builds a graph of the package dependencies.ÿDependencies on other packages that are not in the index are discarded. You can check if there are any such dependencies with ë .ñ CabalÌGiven a package index where we assume we want to use all the packages (use ì Ø if you need to get such a index subset) find out if the dependencies within it use consistent versions of each package. Return all cases where multiple packages depend on different versions of some other package.œEach element in the result is a package name along with the packages that depend on it and the versions they require. These are guaranteed to be distinct.ò Cabal7A rough approximation of GHC's module finder, takes a Ô ã and turns it into a map from module names to their source packages. It's used to initialize the  build-deps field in  cabal init.#Ô Õ Ö × Ø Ù Ú Û à á â ã ä å æ ç Ð Ñ Ò Ó è é Ü Ý Þ ß ë ì í î ï ñ ê ð ò #Ô Õ Ö × Ø Ù Ú Û à á â ã ä å æ ç Ð Ñ Ò Ó è é Ü Ý Þ ß ë ì í î ï ñ ê ð ò 6Isaac Jones 2003-2005BSD3cabal-devel@haskell.orgportable Safe-Inferred1šÚCabal3Helper combinator to do parsing plumbing for files.àGiven a parser and a filename, return the parse of the file, after checking if the file exists.:Argument order is chosen to encourage partial application.ÛCabaläCollapse duplicate experimental feature warnings into single warning, with a count of further sitesü Cabalworking directoryÚCabal#File contents to final value parserCabalVerbosity levelCabalWorking directoryCabal File to readý Cabal#File contents to final value parserCabalVerbosity levelCabal File nameû ü ý û ü ý 7#Isaac Jones, Simon Marlow 2003-2004=BSD3 portions Copyright (c) 2007, Galois Inc.cabal-devel@haskell.orgportable Safe-Inferred19<ØÝä¥à ÿ Cabal$The glob matched the value supplied.€ Cabal©The glob did not match the value supplied because the cabal-version is too low and the extensions on the file did not precisely match the glob's extensions, but rather the glob was a proper suffix of the file's extensions; i.e., if not for the low cabal-version, it would have matched.� Cabal¤The glob couldn't match because the directory named doesn't exist. The directory will be as it appears in the glob (i.e., relative to the directory passed to � 4, and, for 'data-files', relative to 'data-dir').‚  CabalÚThe glob matched a directory when we were looking for files only. It didn't match a file!Œ  CabalMatch a Ãð against the file system, starting from a given root directory. The results are all relative to the given root.� Cabal6Match a globbing pattern against a file path componentŽ  Cabal#Extract the matches from a list of þ s.Note: throws away the � Ù results; chances are that you want to check for these and error out if any are present.� Cabal This will die'î when the glob matches no files, or if the glob refers to a missing directory, or if the glob fails to parse.The Version‘ argument must be the spec version of the package description being processed, as globs behave slightly differently in different spec versions. The first ³´ argument is the directory that the glob is relative to. It must be a valid directory (and hence it can't be the empty string). The returned values will not include this prefix. The second ³ is the glob itself.� CabalLike �  but with customizable die“ Cabal?Match files against a pre-parsed glob, starting in a directory.The Version‘ argument must be the spec version of the package description being processed, as globs behave slightly differently in different spec versions.The ³³ argument is the directory that the glob is relative to. It must be a valid directory (and hence it can't be the empty string). The returned values will not include this prefix.” CabalÌIs the root of this relative glob path a directory-recursive wildcard, e.g. **/*.txt ?ÜCabal>Check how the string matches the glob under this cabal version• CabalÈHow/does the glob match the given filepath, according to the cabal version? Since this is pure, we don't make a distinction between matching on directories or files (i.e. this function won't return ‚ )“ CabalÒIf the glob we are running should care about the cabal spec, and warnings such as € „, then this should be the version. If you want to run a glob but don't care about any of the cabal-spec restrictions on globs, use …!Ãþ ÿ € ‚ � Ž • Œ � � � “ ‘ ƒ ˆ † ‡ ‰ Š ‹ … „ ’ ” Ãþ ÿ € ‚ � Ž • Œ � � � “ ‘ ƒ ˆ † ‡ ‰ Š ‹ … „ ’ ” †Francesco Ariis 2022BSD3cabal-devel@haskell.orgportable Safe-InferredÒݰ.ÝCabal,Check monad, carrying a context, collecting êžs. Using Set for writer (automatic sort) is useful for output stability on different platforms. It is nothing more than a monad stack with Reader+Writer. m; is the monad that could be used to do package/file checks.ÞCabal:A collection os names, shipping tuples around is annoying.ßCabalßÒ collects contextual information on the target we are realising: a buildup of the various slices of the target (a library, executable, etc. ”@ is a monoid) whether we are under an off-by-default package flag.àCabalÂContext to perform checks (will be the Reader part in your monad).áCabalÕA record of operations needed to check contents *of the work tree* (compare it with œ ). This is still më abstracted in case in the future we can obtain the same infos other than from IO (e.g. a VCS work tree).œ CabalÒA record of operations needed to check the contents of packages. Abstracted over m< to provide flexibility (could be IO, a .tar.gz file, etc).âCabaløWhich interface to we have available/should we use? (to perform: pure checks, package checks, pre-distribution checks.)ãCabalCreates a pristing àà. With pristine we mean everything that can be deduced by GPD but *not* user flags information.äCabalAdds useful bits to àÆ (as now, whether we are operating under a user off-by-default flag).åCabalInit names from a GPD.æCabalØExecute a CheckM monad, leaving `m [PackageCheck]` which can be run in the appropriate m environment (IO, pure, ¦@).çCabalAs è but always succeeding.éCabal4Add a package warning withoutu performing any check.êCabal!Lift a monadic computation to CM.ëCabalÅLift a monadic action via an interface. Missing interface, no action.ìCabalŽMost basic check function. You do not want to export this, rather export œ@smart�@ functions (checkP, checkPkg) to enforce relevant properties.èCabal0Pure check not requiring IO or other interfaces.íCabalúGeneralised version for checks that need an interface. We pass a Reader accessor to such interface ˜@i™@, a check function.îCabalAs í, but ê- does not depend on the monadic computation.ïCaballocal( (from Control.Monad.Reader) for CheckM.ðCabalask( (from Control.Monad.Reader) for CheckM.ÌÝñæâòóôõœ �   Ÿ ž ¡ áö÷øßùúûêëìíîïð^®«_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª¬­¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçè鄉ЋŒ�Žƒ��àüýþÿ€�ãäÞ‚ƒ„…†‡ñòðïèˆë片+Lennart Kolmodin 2008, Francesco Ariis 2023BSD3cabal-devel@haskell.orgportable Safe-InferredÝ´€ŠCabalnfñ function is needed to appropriately name some targets which need to be spoonfed (otherwise name appears as "").‹Cabal)We œ@build up�@ target from various slices.ŒCabalBefore walking a target �È, we need to annotate it with information relevant to the checks (read TaraAnn and Ž doc for more info).ŽCabal©A conditional target is a library, exe, benchmark etc., destructured in a CondTree. Traversing method: we render the branches, pass a relevant context, collect checks.�Cabal7Condvar checking (misspelled OS in if conditions, etc).Ž�ˆFrancesco Ariis 2022BSD3cabal-devel@haskell.orgportable Safe-Inferredµ•‘Cabal .cabal field we are referring to. As now it is just a synonym to help reading the code, in the future it might take advantage of typification in Cabal-syntax. ’‘“”•–—˜™š8Isaac Jones 2003-2004BSD3cabal-devel@haskell.orgportable Safe-Inferred179:;<ËÖ*¢ CabalîSome compilers (notably GHC) support profiling and can instrument programs so the system can account costs to different functions. There are different levels of detail that can be used for this accounting. For compilers that do not support this notion or the particular detail levels, this is either ignored or just capped to some similar level they do support.« Cabal›Some compilers support emitting debug info. Some have different levels. For compilers that do not the level is just capped to the level they do support.° Cabal‘Some compilers support optimising. Some have different levels. For compilers that do not the level is just capped to the level they do support.º Cabal£We typically get packages from several databases, and stack them together. This type lets us be explicit about that stacking. For example typical stacks include: î[GlobalPackageDB] [GlobalPackageDB, UserPackageDB] [GlobalPackageDB, SpecificPackageDB "package.conf.inplace"]Note that the ¼ ë is invariably at the bottom since it contains the rts, base and other special compiler-specific packages.’We are not restricted to using just the above combinations. In particular we can use several custom package dbs and the user package db together.>When it comes to writing, the top most (last) package is used.» Cabal÷Some compilers have a notion of a database of available packages. For some there is just one global db of packages, other compilers support a per-user or an arbitrary db specified at some location in the file system. This can be used to build isolated environments of packages, for example to build a collection of related packages without installing them globally.Abstracted over¾ Cabal6NB: the path might be relative or it might be absoluteÁ CabalCompiler flavour and version. CabalÇTag for distinguishing incompatible ABI's on the same architecture/os.à CabalÇOther implementations that this compiler claims to be compatible with.Ä CabalSupported language standards.Å CabalSupported extensions.Æ Cabal?A key-value map for properties not covered by the above fields.Ë CabalÊIs this compiler compatible with the compiler flavour we're interested in?’For example this checks if the compiler is actually GHC or is another compiler that claims to be compatible with some version of GHC, e.g. GHCJS. 6if compilerCompatFlavor GHC compiler then ... else ...Ì Cabal‡Is this compiler compatible with the compiler flavour we're interested in, and if so what version does it claim to be compatible with.‹For example this checks if the compiler is actually GHC-7.x or is another compiler that claims to be compatible with some GHC-7.x version. æcase compilerCompatVersion GHC compiler of Just (Version (7:_)) -> ... _ -> ...Î CabaláReturn the package that we should register into. This is the package db at the top of the stack.Ï CabalMake package paths absoluteÓ CabalÆTransform a package db using a FilePath into one using symbolic paths.Ù CabalÂFor the given compiler, return the extensions it does not support.Ú CabalÆFor the given compiler, return the flags for the supported extensions.›CabalÿLooks up the flag for a given extension, for a given compiler. Ignores the subtlety of extensions which lack associated flags.œCabalœLooks up the flag for a given extension, for a given compiler. However, the extension may be valid for the compiler but not have a flag. For example, NondecreasingIndentation is enabled by default on GHC 7.0.4, hence it is considered a supported extension but not an accepted flag.»The outer layer of Maybe indicates whether the extensions is supported, while the inner layer indicates whether it has a flag. When building strings, it is often more convenient to use › , which ignores the difference.Û Cabal0Does this compiler support parallel --make mode?Ü Cabal.Does this compiler support reexported-modules?Ý Cabal>Does this compiler support thinning/renaming on package flags?Þ Cabal:Does this compiler have unified IPIDs (so no package keys)ß Cabal(Does this compiler support package keys?à Cabal$Does this compiler support unit IDs?á Cabal$Does this compiler support Backpack?â Cabal,Does this compiler support the -jsem option?ã CabalÒDoes this compiler support a package database entry with: "dynamic-library-dirs"?ä CabaláDoes this compiler's "ar" command supports response file arguments (i.e. @file-style arguments).å Cabal¢Does this compiler's "ar" command support llvm-ar's -L flag, which compels the archiver to add an input archive's members rather than adding the archive itself.æ Cabal4Does this compiler support Haskell program coverage?ç Cabal%Does this compiler support profiling?�CabalçReturns Just if we can certainly determine whether a way is supported if we don't know, return Nothingè CabalÌEither profiling is definitely supported or we don't know (so assume it is)é Cabal4Is the compiler distributed with profiling librariesê Cabal= 7.6 uses the '-package-db' flag. See  0https://gitlab.haskell.org/ghc/ghc/-/issues/5977.Ýá â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ € � ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ � Ž � � ‘ ’ “ ” • – — ˜ ™ š › œ � ž Ÿ   ¡ ¢ £ ¤ Û Ü Ý Þ ß à Ö × Ø Ù Ú Ò Ó Ô Õ Í Î Ï Ð Ñ § ¨ ¦ © ¥ Ýá â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ € � ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ � Ž � � ‘ ’ “ ” • – — ˜ ™ š › œ � ž Ÿ   ¡ ¢ £ ¤ Û Ü Ý Þ ß à Ö × Ø Ù Ú Ò Ó Ô Õ Í Î Ï Ð Ñ § ¨ ¦ © ¥ <)Isaac Jones 2006, Duncan Coutts 2007-2009cabal-devel@haskell.orgportable Safe-Inferredöº¶ CabalÕThe default list of programs. These programs are typically used internally to Cabal.¶ · ¹ ¸ º » ¼ ½ À Á ¾ Ä Å Æ Â Ã Ç È É Ê Ë Ì Í Î Ï Ð Ñ ¿ ¶ · ¹ ¸ º » ¼ ½ À Á ¾ Ä Å Æ Â Ã Ç È É Ê Ë Ì Í Î Ï Ð Ñ ¿ =)Isaac Jones 2006, Duncan Coutts 2007-2009cabal-devel@haskell.orgportable Safe-Inferred7ÃØÝ ÀÔ Cabal¯The configuration is a collection of information about programs. It contains information both about configured programs and also about programs that we are yet to configure.ÝThe idea is that we start from a collection of unconfigured programs and one by one we try to configure them at which point we move them into the configured collection. For unconfigured programs we record not just the ôà but also any user-provided arguments and location for the program.Þ CabalThe ž/¡ and º1 instances do not preserve all the unconfigured Programs because ô is not in ž/¡Ä because it contains functions. So to fully restore a deserialised Ô . use this function to add back all the known ôs.ÉIt does not add the default programs, but you probably want them, use ¶ ) in addition to any extra you might need.ß Cabal/Add a known program that we may configure laterã CabalGet the current ò used by the Ô “. This is the default list of locations where programs are looked for when configuring them. This can be overridden for specific programs (with è æ), and specific known programs can modify or ignore this search path in their own configuration code.ä CabalChange the current ò used by the Ô ý. This will affect programs that are configured from here on, so you should usually set it before configuring any programs.å CabalModify the current ò used by the Ô €. This will affect programs that are configured from here on, so you should usually modify it before configuring any programs.æ CabalModify the current ò used by the Ô ) by prepending the provided extra paths.'Logs the added paths in info verbosity.(Prepends environment variable overrides.è Cabal’User-specify this path. Basically override any path information for this program in the configuration. If it's not a known program ignore it.ê Cabal©User-specify the arguments for this program. Basically override any args information for this program in the configuration. If it's not a known program, ignore it..ë CabalLike è ) but for a list of progs and their paths.ì CabalLike è ( but for a list of progs and their args.ÈCabalÆGet the path that has been previously specified for a program, if any.í CabalÅGet any extra args that have been previously specified for a program.î Cabal Try to find a configured programï Cabal Try to find a configured programð Cabal,Update a configured program in the database.ñ CabalList all configured programs.ò CabalÇTry to configure a specific program and add it to the program database.àIf the program is already included in the collection of unconfigured programs, then we use any user-supplied location and arguments. If the program gets configured successfully, it gets added to the configured collection.­Note that it is not a failure if the program cannot be configured. It's only a failure if the user supplied a location and the program could not be found at that location.ØThe reason for it not being a failure at this stage is that we don't know up front all the programs we will need, so we try to configure them all. To verify that a program was actually successfully configured use ÷ .ó CabalªTry to configure a specific program. If the program is already included in the collection of unconfigured programs then we use any user-supplied location and arguments.ÉCabal$Configure a bunch of programs using ò  . Just a Ü.ô CabalòUnconfigure a program. This is basically a hack and you shouldn't use it, but it can be handy for making sure a ÷  actually reconfigures.õ CabalÊTry to configure all the known programs that have not yet been configured.ö CabalÜreconfigure a bunch of programs given new user-specified args. It takes the same inputs as è  and ê - and for all progs with a new path it calls ò .÷ Cabal;Check that a program is configured and available to be run.ìIt raises an exception if the program could not be configured, otherwise it returns the configured program.ø Cabal;Check that a program is configured and available to be run. It returns …9 if the program couldn't be configured, or is not found.ù Cabal;Check that a program is configured and available to be run.íAdditionally check that the program version number is suitable and return it. For example you could require  AnyVersion or Ê ( [1,0] [])ÎIt returns the configured program, its version number and a possibly updated Ô â. If the program could not be configured or the version is unsuitable, it returns an error value.ú CabalLike ù Ï, but raises an exception in case of error instead of returning 'Left errMsg'.ü Cabal4Note that this instance does not preserve the known ôs. See Þ  for details.ý Cabal4Note that this instance does not preserve the known ôs. See Þ  for details.þ Cabal4Note that this instance does not preserve the known ôs. See Þ  for details.è Cabal Program nameCabal"user-specified path to the programê Cabal Program nameCabaluser-specified args)Ô Õ Ö × Ø Ù Ú Û Þ ß à æ ç á â ã ä å è ë é ê ì í î ï ð ñ ò ó õ ô ù ö ÷ ú ø Ó Ò Ü Ý )Ô Õ Ö × Ø Ù Ú Û Þ ß à æ ç á â ã ä å è ë é ê ì í î ï ð ñ ò ó õ ô ù ö ÷ ú ø Ó Ò Ü Ý >)Isaac Jones 2006, Duncan Coutts 2007-2009cabal-devel@haskell.orgportable Safe-Inferred1ÃØÝIÿ Cabal"Runs the given configured program.€Cabal"Runs the given configured program.�Cabal6Runs the given configured program and gets the output.‚Cabal?Looks up the given program in the program database and runs it.ƒCabal?Looks up the given program in the program database and runs it.„Cabal?Looks up the given program in the program database and runs it.…Cabal?Looks up the given program in the program database and runs it.ÿ Cabal VerbosityCabalThe program to runCabalAny extra arguments to add€Cabal VerbosityCabalWorking directoryCabalThe program to runCabalAny extra arguments to add�Cabal VerbosityCabalThe program to runCabalAny extra arguments to add‚Cabal verbosityCabalThe program to runCaballook up the program hereCabalAny extra arguments to addƒCabal verbosityCabalworking directoryCabalThe program to runCaballook up the program hereCabalAny extra arguments to add„Cabal verbosityCabalThe program to runCaballook up the program hereCabalAny extra arguments to add…Cabal verbosityCabalworking directoryCabalThe program to runCaballook up the program hereCabalAny extra arguments to addèôõö÷øùúòïðñÏ Ë È × åæçèéêëìíîûóáâãäÿ €�ü® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ » ¼ ½ ¶ Ô Û Ú Þ ß à á â ã ä è ë é ê ì í î ù ð ò õ ö ÷ ú ø ‚ƒ„…· ¹ º » ¼ ½ ¾ Ä Å Æ Â Ã Ç È É Ê Ë Ì Í Î Ï Ð Ñ ¿ èôõö÷øùúòïðñÏ Ë È × åæçèéêëìíîûóáâãäÿ €�ü® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ » ¼ ½ ¶ Ô Û Ú Þ ß à á â ã ä è ë é ê ì í î ù ð ò õ ö ÷ ú ø ‚ƒ„…· ¹ º » ¼ ½ ¾ Ä Å Æ Â Ã Ç È É Ê Ë Ì Í Î Ï Ð Ñ ¿ ?cabal-devel@haskell.orgportable Safe-InferredÃØÝ8‡†‡†@Duncan Coutts 2007BSD3cabal-devel@haskell.org(non-portable (ExistentialQuantification) Safe-InferredÃÊØÝä%fˆCabalwraps a  CommandUI/ together with a function that turns it into a CommandÝ. By hiding the type of flags for the UI allows construction of a list of all UIs at the top level of the program. That list can then be used for generation of manual page as well as for executing the selected command.ËCabal(Common flags that apply to every command–Cabal Long command line option strings—Cabal!Short command line option strings˜CabaláAn OptionField takes one or more OptDescrs, describing the command line interface for the field.�CabalÌWe usually have a data type for storing configuration values, where every field stores a configuration option, and the user sets the value either via command line flags or a configuration file. An individual OptionField models such a field, and we usually build a list of options associated to a configuration data type.¨CabalÑThe name of the command as it would be entered on the command line. For example "build".©CabalÂA short, one line description of the command to use in help texts.ªCabalÉA function that maps a program name to a usage summary for this command.«Cabal;Additional explanation of the command to use in help texts.¬Cabal+Post-Usage notes and examples in help texts­CabalInitial / empty flags®Cabal&All the Option fields for this command°CabalúCreate an option taking a single OptDescr. No explicit Name is given for the Option, the name is the first LFlag given. Example: ° sf lf d get set * sf": Short option name, for example: ['d']. No hyphen permitted. * lf!: Long option name, for example:  ["debug"]. No hyphens permitted. * dÄ: Description of the option, shown to the user in help messages. * get(: Get the current value of the flag. * setÙ: Set the value of the flag. Gets the current value of the flag as a parameter.±CabalŠCreate an option taking several OptDescrs. You will have to give the flags and description individually to the OptDescr constructor.²CabalÑCreate a string-valued command line interface. Usually called in the context of ° or ±. Example: ² ad mkflag showflagad&: Placeholder shown to the user, e.g. FILES+ if files are expected parameters.mkflag,: How to parse the argument into the option.showflagÓ: If parsing goes wrong, display a useful error message to the user.³CabalÃCreate a string-valued command line interface with a default value.´Cabal!(String -> a) variant of "reqArg"µCabal!(String -> a) variant of "optArg"ºCabalcreate a Choice option»Cabal¹create a Choice option out of an enumeration type. As long flags, the Show output is used. As short flags, the first character which does not conflict with a previous one is used.½Cabal¾Cabal:Show flags in the standard long option command line formatÌCabalÄThe help text for this command with descriptions of all the options.¿Cabal0Default "usage" documentation text for commands.ÀCabalÈCreate "usage" documentation from a list of parameter configurations.ÁCabalMake a Command from standard GetOpt options.ÂCabal'Parse a bunch of command line argumentsÃCabalêMark command as hidden. Hidden commands don't show up in the 'progname help' or 'progname --help' output.ÈCabal�Utility function, many commands do not accept additional flags. This action fails with a helpful error message if the user supplies any extra.ÉCabal6Helper function for creating globalCommand description±CabalÅMkOptDescr constructors partially applied to flags and description.ÁCabalnameCabalsynopsisCabalusage alternativesCabalinitial/empty flagsCabaloptionsÂCabal&Is the command a global or subcommand?Ħ§¨©ª«¬­®¾Ž��’‘ÂÉÊ£¤¥¿ÀÁÊÄÈ‹Œ�ˆ‰ËÅÇÆ�žŸ ¢°±¼½˜™š›œ¯¡—–•”“²´³µ¶·¸¹º»Ħ§¨©ª«¬­®¾Ž��’‘ÂÉÊ£¤¥¿ÀÁÊÄÈ‹Œ�ˆ‰ËÅÇÆ�žŸ ¢°±¼½˜™š›œ¯¡—–•”“²´³µ¶·¸¹º»Š8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportable Safe-Inferred 179:;<ÃØÝ,“ ÍCabalÄA datatype that stores common flags for different invocations of a Setup, executable, e.g. configure, build, install.ÏCabal VerbosityÐCabalWorking directory (optional)ÑCabalBuild directoryÒCabal"Which Cabal file to use (optional)ÓCabal3Which targets is this Setup invocation relative to?ôTODO: this one should not be here, it's just that the silly UserHooks stop us from passing extra info in other waysÍCabalçThe name of the directory where optional compilation artifacts go, such as ghc plugins and .hie files.ÎCabalHelp text for test and bench commands.ÏCabalFor each known program PROG in progDb , produce a  with-PROG �.×CabalLike Ï*, but allows to customise the option name.ÐCabalFor each known program PROG in progDb , produce a  PROG-option �.ØCabalFor each known program PROG in progDb , produce a  PROG-options �.áCabalðHelper function to split a string into a list of arguments. It's supposed to handle quoted things sensibly, eg: ÜsplitArgs "--foo=\"C:/Program Files/Bar/" --baz" = ["--foo=C:/Program Files/Bar", "--baz"] ÓsplitArgs "\"-DMSGSTR=\\\"foo bar\\\"\" --baz" = ["-DMSGSTR=\"foo bar\"","--baz"]ÎCabalEither "test" or  "benchmark".Cabal Help text.,ÍÎÏÐÑÒÓÔÑ¿ÁÂÀßàÐØÏ×ÖáÎÕÍÝ£¤¥¦§¨©«­¡¢ÙÚÛÜÒÓÞÔ‹8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportable Safe-Inferred (17<ÃØÝì-âòãóôöõ÷äåæçèéêëûøùìïíîðñúŒ8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportable Safe-Inferred (17<ÃØÝì.€üCabal Flags to sdist: (snapshot, verbosity)ü‚ýƒ„†…‡þÿ€�Šˆ‰�8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportable Safe-Inferred (17<ÃØÝì/2‹—Œ˜™›šœ�Ž��‘�ž’“”•–ŸŽ8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportable Safe-Inferred (17<ÃØÝì0] Cabal Flags to register and  unregister2: (user package, gen-script, in-place, verbosity) ¨¡©ª¬«­¢£¤¥¦§±®¯°�8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportable Safe-Inferred (17<ÃØÝì1R²Cabal Flags to install: (package db, verbosity)²¹³º»½¼¾´µ¶·¸Á¿À�8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportable Safe-Inferred (17<ÃØÝì2ÂÊÃËÌÎÍÏÄÅÆÇÈÉÐÑÒ‘8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportable Safe-Inferred (17<ÃØÝì8-ÕCabalâa shortcut option which builds documentation linked to hackage. It implies: * `--html-location=' 7https://hackage.haskell.org/package/$prg-$version/docs'Ð * `--quickjump` * `--gen-index` * `--gen-contents` * `--hyperlinked-source`ÖCabalÂoutput directory of combined haddocks, the default is './haddocks'ØCabalhaddocksInterfaces is inferred by the haddocksAction%; currently not exposed to the user.èCabal´Governs whether modules from a given interface should be visible or hidden in the Haddock generated content page. We don't expose this functionality to the user, but simply use éÄ for only local packages. Visibility of modules is available since haddock-2.26.1.„Cabal9When we build haddock documentation, there are two cases: «We build haddocks only for the current development version, intended for local use and not for distribution. In this case, we store the generated documentation in  distdochtml/ packagename.®We build haddocks for intended for uploading them to hackage. In this case, we need to follow the layout that hackage expects from documentation tarballs, and we might also want to use different flags than for development builds, so in this case we store the generated documentation in  distdochtml/ packageid-docs.„†…ë‡ìˆ‰‹ŠŒíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ��ŽèéêÓÔÕÖרÙÚÛÜÝÞßàáâãäåæç”‘’�“’8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportable Safe-Inferred17<ÃØÝ9Š•Cabal:Flags that apply at the top level, not to any sub-command.•–—˜™œš›“8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportable Safe-Inferred (17<ÃØÝì:…�Cabal Flags to copy6: (destdir, copy-prefix (backwards compat), verbosity) �¡ž¢£¥¤¦Ÿ ©§¨”8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportable Safe-Inferred (17<ÃØÝìL‡=ªCabal Flags to  configure command.+IMPORTANT: every time a new flag is added, •–æ should be updated. IMPORTANT: every time a new flag is added, it should be added to the Eq instance­CabalAll programs that cabal may run®Cabaluser specified programs paths¯Cabaluser specified programs args°CabalExtend the $PATH±Cabal)The "flavor" of the compiler, e.g. GHC.²Cabalgiven compiler location³Cabalgiven hc-pkg location´CabalEnable vanilla libraryµCabalEnable profiling in the library¶CabalBuild shared library·CabalBuild static library¸Cabal,Enable dynamic linking of the executables.¹Cabal1Enable fully static linking of the executables.ºCabal&Enable profiling in the executables.»Cabal2Enable profiling in the library and executables.¼CabalEnable shared profiling objects½Cabal9Profiling detail level in the library and executables.¾Cabal(Profiling detail level in the library¿CabalExtra arguments to  configureÀCabalEnable optimization.ÁCabalInstalled executable prefix.ÂCabalInstalled executable suffix.ÃCabalInstallation pathsÅCabal"path to search for extra librariesÆCabalÎpath to search for extra libraries when linking fully static executablesÇCabal0path to search for extra frameworks (OS X only)ÈCabalpath to search for header filesÉCabalexplicit IPID to be usedÊCabalexplicit CID to be usedËCabaläbe as deterministic as possible (e.g., invariant over GHC, database, etc). Used by the test suiteÌCabalThe --user/--global flagÍCabalWhich package DBs to useÎCabal!Enable compiling library for GHCiÏCabalEnable -split-sections with GHCÐCabalEnable -split-objs with GHCÑCabalEnable executable strippingÒCabalEnable library strippingÓCabal*Additional constraints for dependencies.ÔCabal,The packages depended on which already existÕCabalÝThe packages depended on which doesn't yet exist (i.e. promised). Promising dependencies enables us to configure components in parallel, and avoids expensive builds if they are not necessary. For example, in multi-repl mode, we don't want to build dependencies that are loaded into the interactive session, since we have to build them again.ÖCabal’The requested Backpack instantiation. If empty, either this package does not use Backpack, or we just want to typecheck the indefinite package.ØCabalEnable test suite compilationÙCabalEnable benchmark compilationÚCabalEnable program coverageÛCabal$Enable program coverage (deprecated)ÜCabalþAll direct dependencies and flags are provided on the command line by the user via the '--dependency' and '--flags' options.ÝCabalÅHalt and show an error message indicating an error in flag assignmentÞCabal Enable relocatable package builtßCabalEmit debug info.àCabalÅShould we dump available build information on build? Dump build information to disk before attempting to build, tooling can parse these files and use them to compile the source files themselves.áCabalÕWhether to use response files at all. They're used for such tools as haddock, or ld.âCabalÇAllow depending on private sublibraries. This is used by external tools (like cabal-install) so they can add multiple-public-libraries compatibility to older ghcs by checking visibility externally.ãCabalÙThe list of libraries to be included in the hpc coverage report for testsuites run with --enable-coverageþ. Notably, this list must exclude indefinite libraries and instantiations because HPC does not support backpack (Nov. 2023).äCabalÊWhen this flag is set, all tools declared in `build-tool`s and `build-tool-depends` will be ignored. This allows a Cabal package with build-tool-dependencies to be built even if the tool is not found.ëCabalMore convenient version of ë. Results in an Æ# if internal invariant is violated.ÕCabal Inverse to Ö.ÖCabal5Pretty-print a single entry of a module substitution.ðCabalParse a PackageDB stack entryòCabalShow a PackageDB stack entryõCabalArguments to pass to a  configure script, e.g. generated by autoconf.̪嫿çéèêᬭ®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàâãäôìíëðïòñõîóB Safe-Inferred %&'1<ÃØÝéì_©,öCabalöÄ contains configuration options that can be controlled by the user.øCabalWhether to build normal libs.ùCabalWhether to build normal libs.úCabal,Whether to build profiling versions of libs.ûCabal)Whether to build shared versions of libs.üCabalÈWhether to build static versions of libs (with all other libs rolled in)ýCabal'Whether to link executables dynamicallyþCabal,Whether to link executables fully staticallyÿCabal+Whether to build executables for profiling.€Cabal"Level of automatic profile detail.�Cabal"Level of automatic profile detail.‚Cabal2Whether to build with optimization (if available).ƒCabal*Whether to emit debug info (if available).„Cabal1Whether to build libs suitable for use with GHCi.…Cabal*Use -split-sections with GHC, if available†Cabal&Use -split-objs with GHC, if available‡Cabal+Whether to strip executables during installˆCabal)Whether to strip libraries during install‰Cabal-Whether to enable executable program coverageŠCabal*Whether to enable library program coverage‹Cabal&Whether to build a relocatable packageŒCabalŒì contains options that can be controlled by the user and serve as inputs to the configuration of a package.ŽCabalõExtra args on the command line for the configuration step. Needed to re-run configuration when .cabal is out of date�Cabal"Location and args for all programs�CabalÞOptions to control the build, e.g. whether to enable profiling or to enable program coverage.‘Cabal‰'LocalBuildDescr ' contains the information Cabal determines after performing package-wide and per-component configuration of a package.;This information can no longer be changed after that point.“CabalíInformation that is available after configuring the package itself, before looking at individual components.”CabalÜInformation about individual components in the package determined after the configure step.•CabalÛInformation about individual components in a package, determined after the configure step.—CabalÙAll the components to build, ordered by topological sort, and with their INTERNAL dependencies over the intrapackage dependency graph. TODO: this is assumed to be short; otherwise we want some sort of ordered map.˜CabalÌA map from component name to all matching components. These coincide with —Ò There may be more than one matching component because of backpack instantiations™CabalûThe packages we were promised, but aren't already installed. MP: Perhaps this just needs to be a Set UnitId at this stage.šCabalóAll the info about the installed packages that the current package depends on (directly or indirectly). The copy saved on disk does NOT include internal dependencies (because we just don't have enough information at this point to have an InstalledPackageInfoå for an internal dep), but we will often update it with the internal dependencies; see for example a—<. (This admonition doesn't apply for per-component builds.)›Cabal›” contains the information Cabal determines after performing package-wide configuration of a package, before doing any per-component configuration.�CabaläOptions passed to the configuration step. Needed to re-run configuration when .cabal is out of datežCabal9The final set of flags which were picked for this packageŸCabal;What components were enabled during configuration, and why. Cabal The compiler we're building with¡CabalThe platform we're building for¢Cabal5the filename containing the .cabal file, if available£Cabal“WARNING WARNING WARNING Be VERY careful about using this function; we haven't deprecated it but using it could introduce subtle bugs related to ×.«In principle, this is supposed to contain the resolved package description, that does not contain any conditionals. However, it MAY NOT contain the description with a × applied to it; see ×ã for the whole sordid saga. As much as possible, Cabal library should avoid using this parameter.¤CabalùThe installation directories for the various different kinds of files TODO: inplaceDirTemplates :: InstallDirs FilePath¥Cabal)What package database to use, global/user¦CabalûFor per-package builds-only: an extra list of libraries to be included in the hpc coverage report for testsuites run with --enable-coverageþ. Notably, this list must exclude indefinite libraries and instantiations because HPC does not support backpack (Nov. 2023).2›œ�žŸ¤ ¡¢£¥¦•–—˜™š‘’“”Œ�Ž��ö÷øùúýþÿûü€�‚ƒ„…†‡ˆ‰Š‹§2›œ�žŸ¤ ¡¢£¥¦•–—˜™š‘’“”Œ�Ž��ö÷øùúýþÿûü€�‚ƒ„…†‡ˆ‰Š‹§C Safe-Inferred %'17<ÃØÝéìlSÂCabal1Data cached after configuration step. See also A˜.ÄCabalÎInformation about a package determined by Cabal after the configuration step.ÅCabalâInformation about a package configuration that can be modified by the user at configuration time.ÆCabalÂThis pattern synonym is for backwards compatibility, to adapt to  being split into LocalBuildDescr and LocalBuildConfig.ïCabal=The (relative or absolute) path to the package root, based onthe working directory flagthe .cabal pathòCabal Extract the •) from the public library component of a ÂÄ if it exists, or make a fake component ID based on the package ID.óCabal Extract the Ø of a Â. This is a "safe" use of ÓôCabal Extract the –" from the library component of a Â? if it exists, or make a fake unit ID based on the package ID.õCabalÎExtract the compatibility package key from the public library component of a Âà if it exists, or make a fake package key based on the package ID.ÙCabal+Convenience function to generate a default ¯ from a Þ0. The idea is to call this once, and then use ¯* everywhere else. Private to this module.öCabal Return all ¯s associated with  Û. In the presence of Backpack there may be more than one! Has a prime because it takes a ’# argument which may disagree with Ó in Â.øCabal Return all Þs associated with  :. In the presence of Backpack there may be more than one!ùCabalReturn the list of default ¯ís associated with a configured package, in the order they need to be built. Has a prime because it takes a ’# argument which may disagree with Ó in Â.úCabalExecute f for every ¯÷ in the package, respecting the build dependency order. (TODO: We should use Shake!) Has a prime because it takes a ’# argument which may disagree with Ó in Â.ûCabal3Return the list of all targets needed to build the uidsÇ, in the order they need to be built. Has a prime because it takes a ’# argument which may disagree with Ó in Â.üCabalExecute f for every ¯ needed to build uidËs, respecting the build dependency order. Has a prime because it takes a ’# argument which may disagree with Ó in Â.ýCabalðIs coverage enabled for test suites? In practice, this requires library and executable profiling to be enabled.þCabal�Returns a list of ways, in the order which they should be built, and the way we build executable and foreign library components.âIdeally all this info should be fixed at configure time and not dependent on additional info but Âø is per package (not per component) so it's currently not possible to configure components to be built in certain ways.ÃÂÆÃÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÛÜÝÙÚÞßàáâãäåæçèéêÄÅòôõóëìíîïðñøö÷ùúûüýþÿ€�‚ƒ„ÄÂÆÃÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÛÜÝÙÚÞßàáâãäåæçèéêÄÅÆòôõóëìíîïðñøö÷ùúûüýþÿ€�‚ƒ„ Isaac Jones 2003-2004BSD3cabal-devel@haskell.orgportable Safe-Inferred%'1<ÃØÝéw ‹CabalËInterpret a symbolic path with respect to the working directory stored in Â.:Use this before directly interacting with the file system.-NB: when invoking external programs (such as GHCÜ), it is preferable to set the working directory of the process rather than calling this function, as this function will turn relative paths into absolute paths if the working directory is an absolute path. This can degrade error messages, or worse, break the behaviour entirely (because the program might expect certain paths to be relative).4See Note [Symbolic paths] in Distribution.Utils.PathŒCabal,Retrieve an optional working directory from Â.�Cabal/Absolute path to the current working directory.ŽCabal#Perform the action on each enabled Ú& in the package description with the Þ.�Cabal#Perform the action on each enabled Û3 in the package description. Extended version of Ü+ that also gives corresponding build info.�Cabal#Perform the action on each enabled Ý in the package description.”Cabal%Perform the action on each buildable Þ or ÛÖ (Component) in the PackageDescription, subject to the build order specified by the compBuildOrder field of the given –CabalüDetermine the directories containing the dynamic libraries of the transitive dependencies of the component we are building.ÅWhen wanted, and possible, returns paths relative to the installDirs Æ—CabalÉGet all module names that needed to be built by GHC; i.e., all of these ÊÇs have interface files associated with them that need to be installed.˜CabalÏBackwards compatibility function which computes the InstallDirs assuming that $libname� points to the public library (or some fake package identifier if there is no public library.) IF AT ALL POSSIBLE, please use ™ instead.™CabalSee Ú.›CabalÏBackwards compatibility function which computes the InstallDirs assuming that $libname� points to the public library (or some fake package identifier if there is no public library.) IF AT ALL POSSIBLE, please use œ instead.œCabalSee Û–CabalBuilding for inplace?Cabal&Generate prefix-relative library pathsCabalComponent that is being built°ÂÆÃÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÛÜÝÙÚÞßàáâãäåæçèéêÄÅòôõëïðñ‹Œ�þˆª«¬­® $%!"#&'()*ÞßàáâãäåæçèéêëìíîïðŠ©¨§‰‚�€ÿ•–—”Ž��‘’“ÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÿÁÂÀ¾•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«½×ØÖÙÜÝÞàãâáä嘛š™œ�µÂÆÃÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÛÜÝÙÚÞßàáâãäåæçèéêÄÅÆòôõëïðñ‹Œ�þˆª«¬­® $%!"#&!"#&'()*ÞßàáâãäåæçèéêëìíîïðŠ©¨§‰‚�€ÿ•–—”Ž��‘’“ÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÿÁÂÀ¾•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«½×ØÖÙÜÝÞàãâáä嘛š™œ�D Safe-InferredÃØÝ~\ ¤Cabal/Logs test suite results, itemized by test case.©CabalÜLogs all test results for a package, broken down first by test suite and then by test case.¯CabalA ©1 with package and platform information specified.°CabalThe directory where we put build results for a foreign library•Cabal:The name of the stub executable associated with a library õ.–Cabal9The directory where we put build results for a test suite—Cabal>The directory where we put build results for a benchmark suite˜CabalÈCreate a library name for a static library from a given name. Prepends lib+ and appends the static library extension (.a).›CabalÈCreate a library name for a shared library from a given name. Prepends lib and appends the #-* as well as the shared library extension.ŸCabal‚Create a library name for a bundled shared library from a given name. This matches the naming convention for shared libraries as implemented in GHC's packageHsLibs function in the Packages module. If the given name is prefixed with HS, then this prepends lib¶ and appends the compiler flavour/version and shared library extension e.g.: "HSrts-1.0" -> "libHSrts-1.0-ghc8.7.20190109.so" Otherwise the given name should be prefixed with C, then this strips the C , prepends lib5 and appends the shared library extension e.g.: Cffi -> "libffi.so" CabalÌDefault extension for executable files on the current platform. (typically "" on Unix and "exe" on Windows or OS/2)¡Cabal5Extension for object files. For GHC the extension is "o".¢CabalÃExtension for dynamically linked (or shared) libraries (typically "so" on Unix and "dll" on Windows)£CabalExtension for static librariesîTODO: Here, as well as in dllExtension, it's really the target OS that we're interested in, not the build OS.*Õûýþÿ€�ü‚ƒ„†‡…ˆ‰Š‹Œ˜™š›œ�žŸ ¡¢£’�Ž��‘“”•–—*Õûýþÿ€�ü‚ƒ„†‡…ˆ‰Š‹Œ˜™š›œ�žŸ ¡¢£’�Ž��‘“”•–—QAndres Loeh 2009BSD3cabal-devel@haskell.orgportable Safe-Inferred1ÃØÝÏlöCabal'The flags for the supported extensions.÷CabalìHack to add version numbers to UHC-built-in packages. This should sooner or later be fixed on the UHC side.øCabal*Name of the installed package config file.ùCabalÊCheck if a certain dir contains a valid package. Currently, we are looking only for the presence of an installed package configuration. TODO: Actually make use of the information provided in the file.úCabal4Create a trivial package info from a directory name.¤¥¦§¨©ª¤¥¦§¨©ªR Safe-Inferred1ÃØÝÔ}¬CabalÓThe filename of the source file for the stub executable associated with a library  TestSuite.­Cabal$Write the source file for a library  TestSuite stub executable.®Cabal2Source code for library test suite stub executable¯CabalÅMain function for test stubs. Once, it was written directly into the stub, but minimizing the amount of code actually in the stub maximizes the number of detectable errors when Cabal is compiled.ûCabal The test runner used in library  TestSuite$ stub executables. Runs a list of  çs. An executable calling this function is meant to be invoked as the child of a Cabal process during  ./setup test. A ¤‰, provided by Cabal, is read from the standard input; it supplies the name of the test suite and the location of the machine-readable test suite log file. Human-readable log information is written to the standard output for capture by the calling Cabal process.°CabalFrom a test stub, write the ¤: to temporary file for the calling Cabal process to read.­Caballibrary  TestSuite# for which a stub is being createdCabal6path to directory where stub source should be located«®¬¯•°­«®¬¯•°­S Safe-InferredÃØÝÔű±T Safe-Inferred%)*16<ÀÒÕÝäéðæ‹(²CabalA diff to a Cabal ˆ2, that gets combined monoidally into an existing ˆ.»CabalCopy/install hooks.½CabalPer-component install hook.¾CabalØA per-component install hook, which can only perform side effects (e.g. copying files).ÄCabalBuild-time hooks.ÆCabal+Per-component fine-grained pre-build rules.ÇCabalPer-component post-build hook.ÑCabal-what kind of build phase are we hooking into?ÒCabalinformation about the packageÓCabal)information about an individual componentüCabalA newtype to hang off the Semigroup PreConfComponentHook instance.ýCabalA newtype to hang off the Semigroup PreConfPackageHook instance.ÔCabalConfigure-time hooks.Order of execution:Ö,configure the package,×,Ø,configure the components.ÖCabal%Package-wide pre-configure hook. See ñ.×Cabal&Package-wide post-configure hook. See æ.ØCabal&Per-component pre-configure hook. See á.ÙCabal0Outputs of the per-component pre-configure step. Prefer using noPreComponentOutputsë and overriding the fields you care about, to avoid depending on implementation details of this datatype.ÜCabal/Inputs to the per-component pre-configure step.áCabal!Per-component pre-configure step.¨For each component of the package, this hook can perform side effects, and return a diff to the passed in component, e.g. to declare additional autogenerated modules.âCabal/Inputs to the package-wide post-configure step.æCabal!Package-wide post-configure step.ìPerform side effects. Last opportunity for any package-wide logic; any subsequent hooks work per-component.çCabal/Outputs of the package-wide pre-configure step. Prefer using øë and overriding the fields you care about, to avoid depending on implementation details of this datatype.ëCabal.Inputs to the package-wide pre-configure step.îCabal Warning: the Ô  in the Â3 field will not contain any unconfigured programs.òCabalHooks into the cabal build phases.Usage:In your .cabal file, declare build-type: Hooks (with a  cabal-version greater than or equal to 3.14),In your .cabal file, include a  custom-setup4 stanza which declares the dependencies of your  SetupHooks; module; this will usually contain a dependency on the  Cabal-hooks package. Provide a  SetupHooks.hs module next to your .cabal file; it must export setupHooks :: SetupHooks.ôCabalHooks into the configure phase.õCabalHooks into the build phase.ËThese hooks are relevant to any build-like phase, such as repl or haddock.öCabal"Hooks into the copy/install phase.÷Cabal Empty hooks.øCabal�Use this smart constructor to declare an empty set of changes by the package-wide pre-configure hook, and override the fields you care about.Use this rather than èÄ to avoid relying on internal implementation details of the latter.ùCabalŽUse this smart constructor to declare an empty set of changes by a per-component pre-configure hook, and override the fields you care about.Use this rather than ÚÄ to avoid relying on internal implementation details of the latter.úCabalEmpty configure phase hooks.ûCabalEmpty build hooks.üCabalEmpty copy/install hooks.þCabalTraverse the components of a ’.:The function must preserve the component type, i.e. map a ­ to a ­, a « to a «, etc.�CabalRun all pre-build rules.6This function should only be called internally within CabalÕ, as it is used to implement the (legacy) Setup.hs interface. The build tool (e.g.  cabal-install or hls¡) should instead go through the separate hooks executable, which allows us to only rerun the out-of-date rules (instead of running all of these rules at once).ÿCabalLike �Î, except it can be used when communicating with an external hooks executable.€Cabal(Does the rule output the given location?�Cabal!Is the file we depend on missing?�Cabalò… can be combined monoidally. This is useful to combine setup hooks defined by another package with your own package-specific hooks.Warning: this � instance is not commutative.Úòóôõö÷ÔÕÖרúëìíïðîçèéêøñâãåäæÜÝàßÞÙÚÛùá²³´ýþº¹¸·¶µÄÅÆÇû²³´µ¶¸¹ºÏÐÑÒÓÎÉÊÌÍËÈ»¼½ü¿ÀÂÃÁ¾ÿ€�‚ƒÚòóôõö÷ÔÕÖרúëìíïðîçèéêøñâãåäæÜÝàßÞÙÚÛùá²³´ýþº¹¸·¶µÄÅÆÇû²³´µ¶¸¹ºÏÐÑÒÓÎÉÊÌÍËÈ»¼½ü¿ÀÂÃÁ¾ÿ€�‚ƒU Safe-Inferred1ÃØÝè�ºCabalinstall locationCabal&install location for dynamic librariesCabalBuild location ²³´µ¶·¸¹º»¼½ ²³´µ¶·¸¹º»¼½žIsaac Jones 2003-2007cabal-devel@haskell.orgportable Safe-Inferred1ÃØÝñ¾Cabal'The kinds of entries we can stick in a .ghc.environment file.¿Cabal  -- a commentÀCabal package-id foo-1.0-4fe301a...ÁCabalglobal-package-db, user-package-db or package-db blahpackage.conf.dÂCabal clear-package-db‚Cabal/Adjust the way we find and configure gcc and ldƒCabal.Strip out flags that are not supported in ghci„CabalšCreate the required packaged arguments, but filtering out package arguments which aren't yet built, but promised. This filtering is used when compiling CCxxÉAsm files, and is a hack to avoid passing bogus `-package` arguments to GHC. The assumption being that in 99% of cases we will include the right `-package` so that the C file finds the right headers.…Cabal&GHC's rendering of its host or target †à as used in its platform strings and certain file locations (such as user package db location).‡Cabal&GHC's rendering of its host or target ˆà as used in its platform strings and certain file locations (such as user package db location).ÅCabal�GHC's rendering of its platform and compiler version string as used in certain file locations (such as user package db location). For example x86_64-linux-7.10.4ÆCabal3Make entries for a GHC environment file based on a ¸ $ and a bunch of package (unit) ids.‰If you need to do anything more complicated then either use this as a basis and add more entries, or just make all the entries directly.ÇCabalWrite a .ghc.environment-$arch-$os-$ver file in the given directory.The ‰ and GHC % are needed as part of the file name.%Returns the name of the file written.ŠCabalThe .ghc.environment-$arch-$os-$ver file nameÈCabal.Render a bunch of GHC environment file entries‹Cabal/Render an individual GHC environment file entryÇCabaldirectory in which to put itCabalthe GHC target platformCabalthe GHC versionCabal the content!‚Œ�Ž�Ã�‘’“Ä”•ƒ–—„˜™š…‡Å¾¿ÀÁÂÇÆŠÈ‹Ÿ Safe-Inferred%&7ÃÒØÝäñ‹ËÌÉÊ: Safe-Inferred1ÃÕØÝª›CabalèA collection of: * C input files * C++ input files * GHC input files * GHC input modules)Used to correctly build and link sources.œCabalóBuilding an executable, starting the REPL, and building foreign libraries are all very similar and implemented in �. The œ6 distinguishes between the various kinds of operation.ÏCabal9Given a single package DB, return all installed packages.ÐCabal8Given a package DB stack, return all installed packages.ÒCabal Return the ³$ to the global GHC package database.žCabal Return the ³& to the per-user GHC package database.ÓCabal:Get the packages from specific PackageDBs, not cumulative.ÖCabal.Start a REPL without loading any source files.×CabalBuild a foreign libraryÙCabalBuild an executable with GHC.ŸCabal8Target name for a foreign library (the actual file name)ÅWe do not use mkLibName and co here because the naming for foreign libraries is slightly different (we don't use "_p" or compiler version suffices, and we don't want the "lib" prefix on Windows).TODO: We do use ¢» and co here, but really that's wrong: they use the OS used to build cabal to determine which extension to use, rather than the target OS (but this is wrong elsewhere in Cabal as well). Cabal#Name for the library when building.¡If the `lib-version-info` field or the `lib-version-linux` field of a foreign library target is set, we need to incorporate that version into the SONAME field.©If a foreign library foo has lib-version-info 5:1:2, it should be built as libfoo.so.3.2.1. We want it to get soname libfoo.so.3. However, GHC does not allow overriding soname by setting linker options, as it sets a soname of its own (namely the output filename), after the user-supplied linker options. Hence, we have to compile the library with the soname as its filename. We rename the compiled binary afterwards.ìThis method allows to adjust the name of the library at build time such that the correct soname can be set.¡CabalMain module name when overridden by ghc-options: -main-is ... or … if no -main-is flag could be found. In case of …,  ¡ can be assumed.¢CabalDecode argument to '-main-is'Returns …( if argument set only the function name.ÅThis code has been stolen/refactored from GHC's DynFlags.setMainIs function. The logic here is deliberately imperfect as it is intended to be bug-compatible with GHC's parser. See discussion in  Àhttps://github.com/haskell/cabal/pull/4539#discussion_r118981753.£CabalLocate and return the › required to build and link.¤Cabal-FilePath has a Haskell extension: .hs or .lhs�Cabal(Generic build function. See comment for œ.¥Cabal7Extract (and compute) information about the RTS library!TODO: This hardcodes the name as  HSrts-ghc versionÍ. I don't know if we can find this information somewhere. We can lookup the  hsLibraries field of Û but it will tell us [HSrts, Cffi], which doesn't really help.¦Cabal—Returns True if the modification date of the given source file is newer than the object file we last compiled for it, or if no object file exists yet.§Cabal3Finds the object file name of the given source file¨Cabal7Calculate the RPATHs for the component we are building. Calculates relative RPATHs when ê is set.©Cabal‚Remove the "-threaded" flag when building a foreign library, as it has no effect when used with "-shared". Returns the updated ”ø, along with whether or not the flag was present, so we can use it to link against the appropriate RTS on our own.ÛCabalùExtracts a String representing a hash of the ABI of a built library. It can fail if the library has not yet been built.ÝCabalInstall executables for GHCJS.ÞCabal Install foreign library for GHC.ßCabal6Install for ghc, .hi, .a and, if --with-ghci given, .oäCabal�Get the JavaScript file name and command and arguments to run a program compiled by GHCJS the exe should be the base program name without exe extension¨CabalComponent we are buildingÝCabalWhere to copy the files toCabalBuild locationCabalExecutable (prefix,suffix)ÞCabalinstall locationCabalBuild locationßCabalinstall locationCabal&install location for dynamic librariesCabalBuild location8ÎÍÐÓÏÔ×ÙÕØÚÖßÞÝÛáâÜÃÑàÒã便ÀÁÂÆÈÇÅÌËÉÊÌ » ¼ Å ½ ¾ ¿ À Á Â Ã Ä Æ Ç È É Ê Ë 8ÎÍÐÓÏÔ×ÙÕØÚÖßÞÝÛáâÜÃÑàÒã便ÀÁÂÆÈÇÅÌËÉÊÌ » ¼ Å ½ ¾ ¿ À Á Â Ã Ä Æ Ç È É Ê Ë ¢ Safe-Inferred1ØÝ•ªCabalËFind the path to the entry point of an executable (typically specified in main-is, and found in hs-source-dirs -- yes, even when main-is is not a Haskell file).«CabalDoes this compiler support the  -dynamic-too option¬Cabal*Is this compiler's RTS dynamically linked?­Cabal=Should we dynamically link the foreign library, based on its ®?¯CabalÃIs this file a C++ source file, i.e. ends with .cpp, .cxx, or .c++?°Cabal+Is this a C source file, i.e. ends with .c?±Cabal-FilePath has a Haskell extension: .hs or .lhs²Cabal—Returns True if the modification date of the given source file is newer than the object file we last compiled for it, or if no object file exists yet.³Cabal3Finds the object file name of the given source file´Cabal8Target name for a foreign library (the actual file name)ÅWe do not use mkLibName and co here because the naming for foreign libraries is slightly different (we don't use "_p" or compiler version suffices, and we don't want the "lib" prefix on Windows).TODO: We do use ¢» and co here, but really that's wrong: they use the OS used to build cabal to determine which extension to use, rather than the target OS (but this is wrong elsewhere in Cabal as well).µCabal#Name for the library when building.¡If the `lib-version-info` field or the `lib-version-linux` field of a foreign library target is set, we need to incorporate that version into the SONAME field.©If a foreign library foo has lib-version-info 5:1:2, it should be built as libfoo.so.3.2.1. We want it to get soname libfoo.so.3. However, GHC does not allow overriding soname by setting linker options, as it sets a soname of its own (namely the output filename), after the user-supplied linker options. Hence, we have to compile the library with the soname as its filename. We rename the compiled binary afterwards.ìThis method allows to adjust the name of the library at build time such that the correct soname can be set.¶CabalæGets the target name (name of actual executable file) from the name of an executable-like component (Û, õ, Ý).·CabalMain module name when overridden by ghc-options: -main-is ... or … if no -main-is flag could be found. In case of …,  ¡ can be assumed.¸CabalDecode argument to '-main-is'Returns …( if argument set only the function name.ÅThis code has been stolen/refactored from GHC's DynFlags.setMainIs function. The logic here is deliberately imperfect as it is intended to be bug-compatible with GHC's parser. See discussion in  Àhttps://github.com/haskell/cabal/pull/4539#discussion_r118981753.ªCabalBuild directoryCabalÑThe build info and module path of an executable-like component (Exe, Test, Bench)Cabal!The path to the main source file.·CabalÂThe build info of the executable-like component (Exe, Test, Bench)ª«å¬¹­¯°±²³´µ¶·¸£ Safe-Inferred'1ÕØÝäåOºCabal9Compile the Haskell modules of the component being built.»CabalReturns the corresponding È for a мCabalÉReturns a function to extract the extra haskell compiler options from a ” and Ÿ½CabalðReturns a pair of the main file and Haskell modules of the component being built. The main file is not necessarily a Haskell file. It could also be e.g. a C source, or, a Haskell repl script (that does not necessarily have an extension).String describing the extra sources being built, for printing.CabalFunction to determine the á Æ for the invocation of GHC when compiling these extra sources (e.g. ‘, �)CabalÌView the extra sources of a component, typically from the build info (e.g. Å, Æ).  Executable= components might additionally add the program entry point (main-isË file) to the extra sources, if it should be compiled as the rest of them.CabalThe GHC configured programCabal#The build directory for this targetCabalNeeded build waysCabal,The context and component being built in it.Cabal1Returns the list of extra sources that were built¾ÀÁÂÃÄ¿¥ Safe-Inferred1ØÝäð-íÇCabal‚Links together the object files of the Haskell modules and extra sources using the context in which the component is being built.If the build kind is ´5, we load the component into GHCi instead of linking.ÈCabalLink a library componentÉCabalïLink the executable resulting from building this component, be it an executable, test, or benchmark component.ÊCabal Link a foreign library componentËCabal7Calculate the RPATHs for the component we are building. Calculates relative RPATHs when ê is set.ÌCabal7Extract (and compute) information about the RTS library!TODO: This hardcodes the name as  HSrts-ghc versionÍ. I don't know if we can find this information somewhere. We can lookup the  hsLibraries field of Û but it will tell us [HSrts, Cffi], which doesn't really help.ÍCabalDetermine whether the given ”¤ is intended to link against the threaded RTS. This is used to determine which RTS to link against when building a foreign library with a GHC without support for  -flink-rts.ÎCabalšLoad a target component into a repl, or write to disk a script which runs GHCi with the GHC options Cabal elaborated to load the component interactively.ÇCabal8The configured GHC program that will be used for linkingCabalHüCabalÊConstruct a JSON document describing the build information for a package.ýCabal A variant of ü if you need to call þ and ÿ yourself.ßIf you change the format or any name in the output json, don't forget to update the schema at (/doc/json-schemas/build-info.schema.json and the docs of --enable-build-info/--disable-build-info.ïCabalâGet the command-line arguments that would be passed to the compiler to build the given component.üCabal#The source directory of the packageCabal'Mostly information from the .cabal fileCabalConfiguration informationCabal#Flags that the user passed to buildCabalÿCompiler information. Needs to be passed explicitly, as we can't extract that information here without some partial function.Cabal=Json representation of buildinfo alongside generated warningsýCabalThe È from þCabalThe È from ÿüýþÿüýþÿXIsaac Jones 2003-2004BSD3cabal-devel@haskell.orgportable Safe-Inferred%'1ÃØÝéB €Cabal Perform the "./setup install" and " ./setup copyÁ" actions. Move files into place based on the prefix argument.2This does NOT register libraries, you should call register to do that.ðCabalCopy package global files.ñCabal'Copy files associated with a component.òCabal&Install the files listed in data-files‚Cabal6Install the files specified by the given glob pattern.óCabal:Install the files listed in install-includes for a library€Cabal information from the .cabal fileCabal#information from the configure stepCabalflags sent to copy or install�Cabal information from the .cabal fileCabal#information from the configure stepCabalflags sent to copy or install‚Cabal (src_dir, dest_dir)Cabalfile glob pattern€�‚€�‚YâIsaac Jones 2003-2005, Ross Paterson 2006, Duncan Coutts 2007-2008cabal-devel@haskell.orgportable Safe-InferredD@„CabalÛGenerates the name of the environment variable controlling the path component of interest.‡Note: The format of these strings is part of Cabal's public API; changing this function constitutes a *backwards-compatibility* break.„CabalÖpath component; one of "bindir", "libdir", -- "datadir", "libexecdir", or "sysconfdir"Cabalenvironment variable nameƒ„ƒ„§+Lennart Kolmodin 2008, Francesco Ariis 2023BSD3cabal-devel@haskell.orgportable Safe-InferredMIôCabalIs a ³ inside dist, `dist-newstyle` and friends?õCabal=Check a file name is valid for the portable POSIX tar format.öThe POSIX tar format has a restriction on the length of file names. It is unfortunately not a simple restriction like a maximum length. The exact restriction is that either the whole path be 100 characters or less, or it be possible to split the path on a directory separator such that the first part is 155 characters or less and the second part 100 characters or less.öCabal¡Whether a path is a good relative path. We aren't worried about perfect cross-platform compatibility here; this function just checks the paths in the (local) .cabal0 file, while only Hackage needs the portability.êlet test fp = putStrLn $ show (isGoodRelativeDirectoryPath fp) ++ "; " ++ show (isGoodRelativeFilePath fp)4Note that "foo./bar.hs" would be invalid on Windows.7traverse_ test ["foo/bar/quu", "a/b.hs", "foo./bar.hs"]Nothing; NothingNothing; NothingNothing; NothingÂTrailing slash is not allowed for files, for directories it is ok. test "foo/"Nothing; Just "trailing slash"Leading ./ is fine, but . and ./ are not valid files.'traverse_ test [".", "./", "./foo/bar"]$Nothing; Just "trailing dot segment"Nothing; Just "trailing slash"Nothing; Nothing*Lastly, not good file nor directory cases:Ïtraverse_ test ["", "/tmp/src", "foo//bar", "foo/.", "foo/./bar", "foo/../bar"]$Just "empty path"; Just "empty path"6Just "posix absolute path"; Just "posix absolute path"4Just "empty path segment"; Just "empty path segment"ÔJust "trailing same directory segment: ."; Just "trailing same directory segment: ."ÂJust "same directory segment: ."; Just "same directory segment: ."ÈJust "parent directory segment: .."; Just "parent directory segment: .."For the last case, ÷ doesn't warn:5traverse_ (print . isGoodRelativeGlob) ["foo/../bar"]#Just "parent directory segment: .."÷CabalSee ö.ÚThis is barebones function. We check whether the glob is a valid file by replacing stars * with xses.øCabalSee ö.ùúûøö÷ô¨+Lennart Kolmodin 2008, Francesco Ariis 2023BSD3cabal-devel@haskell.orgportable Safe-InferredNüCabal>Checks GHC options for commonly misused or non-portable flags.ýþÿ€�+Lennart Kolmodin 2008, Francesco Ariis 2022BSD3cabal-devel@haskell.orgportable Safe-Inferred1ÝXä ‚Cabal‚Ï is the most general way to invoke package checks. We pass to it two interfaces (one to check contents of packages, the other to inspect working tree for orphan files) and before that a Boolean to indicate whether we want pure checks or not. Based on these parameters, some checks will be performed, some omitted. Generality over m� means we could do non pure checks in monads other than IO (e.g. a virtual filesystem, like a zip file, a VCS filesystem, etc).…Cabal?Check for common mistakes and problems in package descriptions.“This is the standard collection of checks covering all aspects except for checks that require looking at files within the package. For those see ‰.†Cabal™This function is an oddity due to the historical GenericPackageDescription/PackageDescription split. It is only maintained not to break interface, use … if possible.‡CabalåSanity check things that requires looking at files in the package. This is a generalised version of ‰7 that can work in any monad for which you can provide œ  operations.úThe point of this extra generality is to allow doing checks in some virtual file system, for example a tarball in memory.ˆCabalSanity checks that require IO. ‰ä looks at the files in the package and expects to find the package unpacked at the given filepath.‰Cabal Same as ˆ, but working with ’.2This function is included for legacy reasons, use ˆ if you are working with ƒ.„CabalƒÑ checks. Remember that for historical quirks in the cabal codebase we have both ƒ and ’÷ and that PD is both a *field* of GPD and a concept of its own (i.e. a fully realised GPD). In this case we are checking (correctly) GPD, so for target info/checks you should walk condLibrary_ etc. and *not* the (empty) target info in PD. See …+ for a convenient hack when you only have ’.†CabalÄFind a package description file in the given directory. Looks for .cabal files. Like ©, but generalized over monads.‡Cabal?Checks for matchless globs and too strict matching (<2.4 spec).ŠCabalWraps _ into ê.…Cabal»August 2022: this function is an oddity due to the historical GenericPackageDescription/PackageDescription split (check Distribution.Types.PackageDescription for a description of the relationship between GPD and PD. It is only maintained not to break interface, should be deprecated in the future in favour of …) when PD and GPD are refactored sensibly.¦^®«_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª¬­¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèé]\êëìíîïð…†Šñõòóô‰ˆ‡œ �   Ÿ ž ¡ ¦^®«_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª¬­¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèé]\êëìíîïð…†Šñõòóô‰ˆ‡œ �   Ÿ ž ¡ Martin Sjögren 2004BSD3cabal-devel@haskell.orgportable Safe-InferredÃØÝ[¡Åˆ‰ŠÙ•‹Œ–ËØ�Ž��‘’“”•Ø–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²1?A9F;<>8@=B:DCE‹Œ1?A9F;<>8@=B:DCE‹ŒZ Safe-Inferred7<ÃÒØÝ`�Cabal‡An opaque type representing a file's modification time, represented internally as a 64-bit unsigned integer in the Windows UTC format.�CabalàReturn modification time of the given file. Works around the low clock resolution problem that ³ has on GHC < 7.8.ýThis is a modified version of the code originally written for Shake by Neil Mitchell. See module Development.Shake.FileInfo.�Cabal!Convert POSIX seconds to ModTime.´CabalConvert µ to �.‘Cabal!Return age of given file in days.’CabalReturn the current time as �.“Cabal7Based on code written by Neil Mitchell for Shake. See sleepFileTimeCalibrate in ª«é. Returns a pair of microsecond values: first, the maximum delay seen, and the recommended delay to use before testing for file modification change. The returned delay is never smaller than 10 ms, but never larger than 1 second.�Ž�‘’�“�Ž�‘’�“¬ Safe-InferredÍÛmP¶CabalëA state monad for doing instantiations (can't use actual State because that would be an extra dependency.)·Cabal The state of ¶; a mapping from – s to their ready component, or NothingÀ if its an external component which we don't know how to build.¸CabalAn ¸> is a library with requirements which we will typecheck only.¹Cabal The requirements of the library.ºCabal0The modules exported/reexported by this library.»CabalâThe dependencies which need to be passed to the compiler to bring modules into scope. These are Û> because these may refer to partially instantiated libraries.¼CabalAn ¼Ö is a library which is fully instantiated (or, possibly, has no requirements at all.)½Cabal"How this library was instantiated.¾CabalDependencies induced by ½×. These are recorded here because there isn't a convenient way otherwise to get the Ù we need to fill componentPackageDeps as needed.¿Cabal0The modules exported/reexported by this library.ÀCabal–The dependencies which need to be passed to the compiler to bring modules into scope. These always refer to installed fully instantiated libraries.ÁCabalA Áé is one that we can actually generate build products for. We have a ready component for the typecheck-only products of every indefinite package, as well as a ready component for every way these packages can be fully instantiated.ÂCabalThe Û· for this package. At the moment, this is used in only one case, which is to determine if an export is of a module from this library (indefinite libraries record these exports as Æ); Â9 can be conveniently used to test for equality, whereas –% cannot always be used in this case.ÃCabalCorresponds to ÷. Invariant: if  records a •, it coincides with this one.ÄCabalCorresponds to ñ.ÅCabalCorresponds to òÎ. Build-tools don't participate in mix-in linking. (but what if they could?)ÆCabalCorresponds to ó.ÇCabal�Extra metadata depending on whether or not this is an indefinite library (typechecked only) or an instantiated component (can be compiled).ÈCabalThe final, string –É that will uniquely identify the compilation products of this component.ÉCabalCorresponds to ø.ÊCabalCompute the dependencies of a Á! that should be recorded in the depends field of InstalledPackageInfo.ËCabalGet the Ì of a Á IF it is a library.ÍCabalGiven a list of î‚s, expand the module graph so that we have an instantiated graph containing all of the instantiated components we need to build.:Instantiation intuitively follows the following algorithm:Ùinstantiate a definite unit id p[S]: recursively instantiate each module M in S recursively instantiate modules exported by this unit recursively instantiate dependencies substituted by SßThe implementation is a bit more involved to memoize instantiation if we have done it already. We also call  improveUnitIdÇ during this process, so that fully instantiated components are given  HashedUnitId.ÁÎÏÂÃÄÅÆÇ¼Ð½¾¿À¸Ñ¹º»ÊÈÉÒÍ[ Safe-Inferred "%&7ÍÛÝám·œœ\ Safe-InferredÃØÝoP�CabalšPrint a Setup message stating (1) what operation we are doing, for (2) which component (with enough details to uniquely identify the build in question.)�Cabal'Operation being done (capitalized), on:CabalPackageCabalComponent nameCabal3Instantiation, if available. Polymorphic to take  OpenModule or Module��]Isaac Jones 2003-2004BSD3cabal-devel@haskell.orgportable Safe-Inferred1ÃØÝró Cabal Compute the —$ of a library that we built inplace.¢Cabal5Create an empty package DB at the specified location.¥CabalRun hc-pkgà using a given package DB stack, directly forwarding the provided command-line arguments to it.§Cabal Construct ÛÆ for a library in a package, given a set of installation directories.¨Cabal Construct Û3 for a library that is in place in the build tree.:This function knows about the layout of in place packages.©Cabal Construct Û6 for the final install location of a library package.;This function knows about the layout of installed packages.žCabal(Install in the user's database?; verbose§Cabal8Translate relative include dir paths to absolute paths.¨Caballocation of the dist treežª«¡£¢¤ ¥¦— ˜ ™ š › © Ÿ¨©§žª«¡£¢¤ ¥¦— ˜ ™ š › © Ÿ¨©§^+(c) 2003-2005, Isaac Jones, Malcolm WallaceBSD3cabal-devel@haskell.orgportable Safe-Inferred1ÃØÝðyU ¬CabalConvenience function; get the suffixes of these preprocessors.¼CabalÇStandard preprocessors: GreenCard, c2hs, hsc2hs, happy, alex and cpphs.ÕCabalÃStandard preprocessors with possible extra C sources: c2hs, hsc2hs.½CabalóFind any extra C sources generated by preprocessing that need to be added to the component (addresses issue #238).± Cabalpackage directory locationCabalsource directoriesCabalbuild directoryCabalpreprocess for sdistCabalmodule file nameCabal verbosityCabalbuiltin suffixesCabalpossible preprocessorsCabalfail on missing file°½±¼»¬�‘˜™“”•–—®¯´µ²·¶¹º³¸­°½±¼»¬�‘˜™“”•–—®¯´µ²·¶¹º³¸­_Isaac Jones 2003-2005BSD3cabal-devel@haskell.orgportable Safe-InferredÃØÝ†/)¾CabalƒHooks allow authors to add specific functionality before and after a command is run, and also to specify additional preprocessors.©WARNING: The hooks interface is under rather constant flux as we try to understand users needs. Setup files that depend on this interface may break in future releases.ÀCabalRead the description fileÁCabal3Custom preprocessors in addition to and overriding ¼.ÂCabalçThese programs are detected at configure time. Arguments for them are added to the configure command.ÃCabal$Hook to run before configure commandÄCabal?Over-ride this hook to get different behavior during configure.ÅCabal#Hook to run after configure commandÆCabalÈHook to run before build command. Second arg indicates verbosity level.ÇCabal;Over-ride this hook to get different behavior during build.ÈCabalÇHook to run after build command. Second arg indicates verbosity level.ÉCabalÇHook to run before repl command. Second arg indicates verbosity level.ÊCabalÄOver-ride this hook to get different behavior during interpretation.ËCabalÆHook to run after repl command. Second arg indicates verbosity level.ÌCabalÈHook to run before clean command. Second arg indicates verbosity level.ÍCabal;Over-ride this hook to get different behavior during clean.ÎCabalÇHook to run after clean command. Second arg indicates verbosity level.ÏCabalHook to run before copy commandÐCabal:Over-ride this hook to get different behavior during copy.ÑCabalHook to run after copy commandÒCabal"Hook to run before install commandÓCabal=Over-ride this hook to get different behavior during install.ÔCabalåHook to run after install command. postInst should be run on the target, not on the build machine.ÕCabal#Hook to run before register commandÖCabalÂOver-ride this hook to get different behavior during registration.×Cabal"Hook to run after register commandØCabal%Hook to run before unregister commandÙCabalÄOver-ride this hook to get different behavior during unregistration.ÚCabal$Hook to run after unregister commandÛCabalËHook to run before hscolour command. Second arg indicates verbosity level.ÜCabal>Over-ride this hook to get different behavior during hscolour.ÝCabalÊHook to run after hscolour command. Second arg indicates verbosity level.ÞCabalÊHook to run before haddock command. Second arg indicates verbosity level.ßCabal=Over-ride this hook to get different behavior during haddock.àCabalÉHook to run after haddock command. Second arg indicates verbosity level.áCabal Hook to run before test command.âCabal:Over-ride this hook to get different behavior during test.ãCabalHook to run after test command.äCabal!Hook to run before bench command.åCabal;Over-ride this hook to get different behavior during bench.æCabal Hook to run after bench command.èCabalEmpty ¾ which do nothing.+¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçè+¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèJIsaac Jones 2003-2005BSD3cabal-devel@haskell.orgportable Safe-Inferred "%&'17ÃØÝª/ÖCabalýAn external dependency from the package database, OR an internal dependency which we are getting from the package database.×CabalÚA promised dependency, which doesn't yet exist, but should be provided at the build time.óWe have these such that we can configure components without actually building its dependencies, if these dependencies need to be built later again. For example, when launching a multi-repl, we need to build packages in the interactive ghci session, no matter whether they have been built before. Building them in the configure phase is then redundant and costs time.ØCabalAn internal dependency (ÙÈ should be a library name) which we are going to have to build. (The ÙÓ here is a hack to get a modest amount of polymorphism out of the Pkg' typeclass.)éCabal/The errors that can be thrown when reading the  setup-config file.êCabalNo header found.ëCabalIncorrect header.ìCabalCannot parse file contents.íCabalNo file!îCabalMismatched version.ÙCabal Format a é as a user-facing error message.ñCabal Read the ø„. Throw an exception if the file is missing, if the file cannot be read, or if the file was created by an older version of Cabal.òCabal Read the ø5, returning either an error or the local build info.óCabalTry to read the ø.ôCabal Read the øƒ. Throw an exception if the file is missing, if the file cannot be read, or if the file was created by an older version of Cabal.õCabalTry to read the ø.öCabal$After running configure, output the  to the ø.ÚCabal(Identifier of the current Cabal package.ÛCabal+Identifier of the current compiler package.ÜCabal Parse the  setup-configÌ file header, returning the package identifiers for Cabal and the compiler.ÝCabal Generate the  setup-config file header.÷CabalÍCheck that localBuildInfoFile is up-to-date with respect to the .cabal file.øCabalGet the path of dist/setup-config.ùCabalÎReturn the "dist/" prefix, or the default prefix. The prefix is taken from (in order of highest to lowest preference) the override prefix, the "CABAL_BUILDDIR" environment variable, or the default prefix.úCabal»Return the "dist/" prefix, or the default prefix. The prefix is taken from (in order of highest to lowest preference) the override prefix, the "CABAL_BUILDDIR" environment variable, or Õ+ is used. Call this function to resolve a  *DistPref0 flag whenever it is not known to be set. (The  *DistPref; flags are always set to a definite value before invoking  UserHooks.)ûCabal Perform the "./setup configure" action. Returns the  .setup-config file.ÞCabal8Adds the extra program paths from the flags provided to  configureÙ as well as specified locations for certain known programs and their default arguments.ßCabal,Check if the user used any deprecated flags.àCabal€Sanity check: if '--exact-configuration' was given, ensure that the complete flag assignment was specified on the command line.ýCabalÄCreate a PackageIndex that makes *any libraries that might be* defined internally to this package look like installed packages, in case an executable should refer to any of them as dependencies.šIt must be *any libraries that might be* defined rather than the actual definitions, because these depend on conditionals in the .cabal file, and we haven't resolved them yet. finalizePD does the resolution of conditionals, and it takes internalPackageSet as part of its input.áCabal«Returns true if a dependency is satisfiable. This function may report a dependency satisfiable even when it is not, but not vice versa. This is to be passed to finalizeâCabal'Finalize a generic package description.The workhorse is ã.äCabal>Check for use of Cabal features which require compiler supportåCabal$Select dependencies for the package.æCabal?Select and apply coverage settings for the build based on the ª and ¿ .þCabal4Compute the effective value of the profiling flags --enable-library-profiling and --enable-executable-profiling from the specified ªÔ. This may be useful for external Cabal tools which need to interact with Setup in a backwards-compatible way: the most predictable mechanism for enabling profiling across many legacy versions is to NOT use --enable-profiling! and use those two flags instead. Note that --enable-executable-profilingÆ also affects profiling of benchmarks and (non-detailed) test suites.çCabalÀSelect and apply profiling settings for the build based on the ª and ¿ .èCabalÇTest for a package dependency and record the version we have installed.ÿCabalåList all installed packages in the given package databases. Non-existent package databases do not cause errors, they just get skipped with a warning and treated as empty ones, since technically they do not contain any package.€CabalLike ÿ, but for a single package DB.,NB: Why isn't this always a fall through to ÿ? That is because ÿ– performs some sanity checks on the package database stack in question. However, when sandboxes are involved these sanity checks are not desirable.�CabalÿA set of files (or directories) that can be monitored to detect when there might have been a change in the installed packages.‚Cabal Looks up the Û of the given – s from the ¸  in the Â.ƒCabalËThe user interface specifies the package dbs to use with a combination of --global, --user and $--package-db=global|user|clear|$fileò. This function combines the global/user flag and interprets the package-db flag into a single package db stack.éCabal¤Configure a required program, ensuring that it exists in the PATH (or where the user has specified the program must live) and making it available for use via the Ô ; interface. If the program is known (exists in the input Ô  ), we will make sure that the program matches the required version; otherwise we will accept any version of the program and assume that it is a simpleProgram.„CabalMakes a ”" from C compiler and linker flags.©This can be used with the output from configuration programs like pkg-config and similar package-specific programs like mysql-config, freealut-config etc. For example: ¦ccflags <- getDbProgramOutput verbosity prog progdb ["--cflags"] ldflags <- getDbProgramOutput verbosity prog progdb ["--libs"] ldflags_static <- getDbProgramOutput verbosity prog progdb ["--libs", "--static"] return (ccldOptionsBuildInfo (words ccflags) (words ldflags) (words ldflags_static))êCabal=Output package check warnings and errors. Exit if any errors.ëCabal2Perform checks if a shared executable can be builtìCabal0Preform checks if a relocatable build is allowedñCabalThe file path of the  setup-config file.òCabalWorking directory.CabalThe file path of the  setup-config file.óCabalWorking directory.CabalThe dist directory path.ôCabalWorking directory.CabalThe dist directory path.õCabalWorking directory.CabalThe dist directory path.öCabalWorking directoryCabalThe dist directory path.CabalThe  to write.ÜCabalThe file contents.ÝCabalThe processed package.øCabalThe dist directory path.ùCabaldefault "dist" prefixCabaloverride "dist" prefixúCabaloverride "dist" prefixáCabaluse external internal deps?Cabalexact configuration?Cabal allow depending on private libs?Cabal installed setCaballibrary componentsCabalrequired dependenciesâCabalÐtests if a dependency is satisfiable. Might say it's satisfiable even when not.åCabalinstalled packagesCabal required depsèCabalPackage id of current packageCabalpackage librariesCabalÉSet of components that are promised, i.e. are not installed already. See × for more details.CabalInstalled packagesCabal;Packages for which we have been given specific deps to useCabal'Are we configuring a single component?ÿCabalThe stack of package databases.‚CabalþConstruct an exception that is thrown if a unit-id is not found in the installed packages, from the unit-id that is missing.Cabal0The unit ids to lookup in the installed packagesíCabalinstalled dependenciesêCabal Path to the .cabal file's directory"ûüöñô÷óõùúýÛÜøÿ�‚€†…þ„‡ƒéêëìíîïðò¸"ûüöñô÷óõùúýÛÜøÿ�‚€†…þ„‡ƒéêëìíîïðò¸`Simon Marlow 2004BSD3cabal-devel@haskell.orgportable Safe-Inferred1ÃØÝ¹°ŠCabalCreate a source distribution.‹Cabal#List all source files of a package.Since  Cabal-3.4Û returns a single list. There shouldn't be any executable files, they are hardly portable.ŒCabal A variant of ‹ with configurable die.Note: may still die/ directly. For example on missing include file.Since @3.4.0.0�Cabal)Prepare a directory tree of source files.îCabal)Find the setup script file, if it exists.ïCabal/Find the setup hooks script file, if it exists.ðCabalËCreate a default setup script in the target directory, if it doesn't exist.ñCabalFind the main executable file.òCabalFind a module definition file#TODO: I don't know if this is rightóCabalÃGiven a list of include paths, try to find the include file named fÝ. Return the name of the file and the full path, or exit with error if there's no such file.ôCabalßRemove the auto-generated modules (like 'Paths_*') from 'exposed-modules' and 'other-modules'.ŽCabal²Prepare a directory tree of source files for a snapshot version. It is expected that the appropriate snapshot version has already been set in the package description, eg using � or �.�Cabal Modifies a ’Á by appending a snapshot number corresponding to the given date.�Cabal Modifies a Á by appending a snapshot number corresponding to the given date.‘Cabal×Given a date produce a corresponding integer representation. For example given a date 18032008 produce the number 20080318.’CabalÅCreate an archive from a tree of source files, and clean up the tree.õCabal8Given a buildinfo, return the names of all source files.“CabalÕNote: must be called with the CWD set to the directory containing the '.cabal' file.öCabal)The name of the tarball without extension ŠCabalinformation from the tarballCabalverbosity & snapshotCabalbuild prefix (temp dir)Cabal'extra preprocessors (includes suffixes)‹Cabal verbosityCabaldirectory with cabal fileCabalinfo from the cabal fileCabal&extra preprocessors (include suffixes)ŒCabal verbosityCabalµ  alternative. Since µ ! prefixes the error message with  errorPrefixÔ, whatever is passed in here and wants to die should do the same. See issue #7331.Cabaldirectory with cabal fileCabalinfo from the cabal fileCabal&extra preprocessors (include suffixes)÷Cabal verbosityCabalµ  alternative. Since µ ! prefixes the error message with  errorPrefixÔ, whatever is passed in here and wants to die should do the same. See issue #7331.Cabaldirectory with cabal fileCabalinfo from the cabal fileCabal&extra preprocessors (include suffixes)�Cabal verbosityCabalworking directoryCabalinfo from the cabal fileCabalsource tree to populateCabal'extra preprocessors (includes suffixes)ñCabalworking directoryCabalmain-isŽCabal verbosityCabalworking directoryCabalinfo from the cabal fileCabalsource tree to populateCabal'extra preprocessors (includes suffixes)øCabal verbosityCabalinfo from the cabal fileCabal source tree’Cabal verbosityCabalinfo from cabal fileCabalsource tree to archiveCabalname of archive to createõCabalµ  alternative. Since µ ! prefixes the error message with  errorPrefixÔ, whatever is passed in here and wants to die should do the same. See issue #7331.Cabalworking directoryCabalExtra preprocessorsCabalExposed modules Š“�’Ž��‘‹Œ Š“�’Ž��‘‹Œ­Isaac Jones 2003-2005BSD3cabal-devel@haskell.orgportable Safe-Inferred1ÃØÝäº�ùCabal!Convert Windows path to Unix onesúCabal host platformúaèIsaac Jones 2003-2005, Ross Paterson 2006, Duncan Coutts 2007-2008, 2012BSD3cabal-devel@haskell.orgportable Safe-Inferred %'1ÃÕØÝéÑÔ”Cabal:A representation of the contents of an autogenerated file.˜Cabal4Build the libraries and executables in this package.ûCabalÂCheck for conditions that would prevent the build from succeeding.üCabal&Write available build information for  to disk.›Dumps detailed build information 'build-info.json' to the given directory. Build information contains basics such as compiler details, but also lists what modules a component contains and how to compile the component, assuming lib:Cabal made sure that dependencies are up-to-date.œCabal7Start an interpreter without loading any package files.ýCabalÅAdd extra C sources generated by preprocessing to build information.þCabalÇAdd extra C++ sources generated by preprocessing to build information.ÿCabalÇAdd extra C-- sources generated by preprocessing to build information.€ CabalÇAdd extra ASM sources generated by preprocessing to build information.� CabalÆAdd extra JS sources generated by preprocessing to build information.‚ CabalÆAdd extra HS modules generated by preprocessing to build information.ƒ Cabal+Add extra source dir for generated modules.„ CabalTranslate a exe-style õ# component into an exe for building… CabalTranslate a exe-style Ý# component into an exe for building† CabalTranslate a lib-style õ( component into a lib + exe for building�CabalÒInitialize a new package db file for libraries defined internally to the package.žCabalÖUpdate the program database to include any build-tool-depends specified in the given ”0 on build tools internal to the current package.This function:'adds these internal build tools to the Ô ;, including paths to their respective data directories, adds their paths to the current × â, and adds the data directory environment variable for the current package to the current Ø Û, so that any programs configured from now on will be able to invoke these build tools.‡ CabalBuild a foreign libraryåNOTE: We assume that we already checked that we can actually build the foreign library in configure.ŸCabalRuns   on every configured component.ŽLegacy function: does not run pre-build hooks or pre-processors. This function is insufficient on its own to prepare the build for a package.óConsumers wanting to prepare the sources of a package, e.g. in order to launch a REPL session, are advised to run Setup repl --repl-multi-file= fn instead. CabalÆCreates the autogenerated files for a particular configured component.�Legacy function: does not run pre-build hooks or pre-processors. This function is insufficient on its own to prepare the build for a component.öConsumers wanting to prepare the sources of a component, e.g. in order to launch a REPL session, are advised to run  Setup repl  compName --repl-multi-file= fn instead.¡CabaläCreates the autogenerated files for a particular configured component, and runs the pre-build hook.¢Cabal²Generate and write to disk all built-in autogenerated files for the specified component. These files will be put in the autogenerated module directory for this component (see autogenComponentsModuleDir).This includes:Paths_ pkg.hs, PackageInfo_ pkg.hs,ÈBackpack signature files for components that are not fully instantiated,cabal_macros.h.ˆ Cabal?Built-in autogenerated files and their contents. This includes:Paths_ pkg.hs, PackageInfo_ pkg.hs,ÈBackpack signature files for components that are not fully instantiated,cabal_macros.h.‰ Cabal An empty ".hsig"Ì Backpack signature module for each requirement, so that GHC has a source file to look at it when it needs to typecheck a signature. It's harmless to generate these modules, even when there is a real hsigÎ file written by the user, since include path ordering ensures that the real hsig= file will always be picked up before the autogenerated one.£CabalÞWrite the given autogenerated files in the autogenerated modules directory for the component. ˜Cabal'Mostly information from the .cabal fileCabalConfiguration informationCabal#Flags that the user passed to buildCabal%preprocessors to run before compiling™Cabal'Mostly information from the .cabal fileCabalConfiguration informationCabal#Flags that the user passed to buildCabal%preprocessors to run before compilingüCabal3To which directory should the build-info be dumped?Cabal=Should we dump detailed build information for this component?Cabal'Mostly information from the .cabal fileCabalConfiguration informationCabal#Flags that the user passed to buildšCabal'Mostly information from the .cabal fileCabalConfiguration informationCabal#Flags that the user passed to buildCabal%preprocessors to run before compiling›Cabal build hookCabal'Mostly information from the .cabal fileCabalConfiguration informationCabal#Flags that the user passed to buildCabal%preprocessors to run before compiling† Cabalabsolute inplace dirŸCabal "dist" prefixCabal'mostly information from the .cabal fileCabalConfiguration informationCabalThe verbosity to use Cabal "dist" prefixCabal'mostly information from the .cabal fileCabalConfiguration informationCabalBuild info about the componentCabalThe verbosity to use¡Cabalpre-build hookCabalConfiguration information˜™š›œ¡•—–”¢£ Ÿ�ž˜™š›œ¡•—–”¢£ Ÿ�žbThomas Tuegel 2010BSD3cabal-devel@haskell.orgportable Safe-Inferred%'(1ÃØÝéÓ^§Cabal Perform the " ./setup test " action.§Cabal!positional command-line argumentsCabal information from the .cabal fileCabal#information from the configure stepCabalflags sent to test§§cIsaac Jones 2003-2005BSD3cabal-devel@haskell.orgportable Safe-Inferred %'1<ÃØÝéðâž!Š Cabal1The FilePath of a directory, it's a monoid under ‹ .Œ CabalÔA record that represents the arguments to the haddock executable, a product monoid.� Cabal?Path to the interface file, relative to argOutputDir, required.Ž CabalPackage name, required.� CabalýOptional name used to construct haddock's `--package-name` option for various components (tests suites, sublibriaries, etc).� Cabal!(Hide modules ?, modules to hide)‘ CabalIgnore export lists in modules?’ CabalÁ(Template for modules, template for symbols, template for lines).“ CabalGenerate hyperlinked sources” CabalGenerate quickjump index• CabalOptional custom CSS file.– CabalOptional URL to contents page.— CabalGenerate contents˜ CabalOptional URL to index page.™ CabalGenerate indexš Cabal9Optional base url from which static files will be loaded.› Cabal%HTML or Hoogle doc or both? Required.œ Cabal Ç(Interface file, URL to the HTML docs and hyperlinked-source for links).� Cabal$Where to generate the documentation.ž CabalPage title, required.Ÿ CabalPrologue text, required for ¨ , ignored by haddocks.  CabalPrologue file name, ignored by ¨, optional for haddocks.¡ Cabal Additional flags to pass to GHC.¢ Cabal"To find the correct GHC, required.£ CabalRe-exported modules¤ CabalModules to process.¥ Cabal#haddock's static / auxiliary files.¦ Cabalhaddock's `--use-unicode` flag§ Cabal7Get Haddock program and check if it matches the requestªCabalExecute Haddock configured with  HaddocksFlagsÒ. It is used to build index and contents for documentation of multiple packages.¨ CabalÃIf Hi Haddock is supported, this function creates temporary directories and copies existing interface and object files produced by GHC into them, then passes them off to the given continuation.·If Hi Haddock is _not_ supported, we can't re-use GHC's compilation files. Instead, we use a clean temporary directory to the continuation, with no hope for recompilation avoidance.-See Note [Hi Haddock Recompilation Avoidance]© Cabal*Call haddock with the specified arguments.«CabalGiven a list of Ûðs, return a list of interfaces and HTML paths, and an optional warning for packages with missing documentation. § Cabalquickjump featureª CabalòDirectories for -hidir, -odir, and -stubdir to GHC through Haddock. See Note [Hi Haddock Recompilation Avoidance]Cabaltemplate for HTML location« CabalòDirectories for -hidir, -odir, and -stubdir to GHC through Haddock. See Note [Hi Haddock Recompilation Avoidance]Cabaltemplate for HTML locationCabal common args¬ CabalòDirectories for -hidir, -odir, and -stubdir to GHC through Haddock. See Note [Hi Haddock Recompilation Avoidance]Cabaltemplate for HTML locationCabal common args­ CabalòDirectories for -hidir, -odir, and -stubdir to GHC through Haddock. See Note [Hi Haddock Recompilation Avoidance]Cabaltemplate for HTML locationCabal common args® CabalòDirectories for -hidir, -odir, and -stubdir to GHC through Haddock. See Note [Hi Haddock Recompilation Avoidance]Cabaltemplate for HTML locationCabal common args¯ CabalòDirectories for -hidir, -odir, and -stubdir to GHC through Haddock. See Note [Hi Haddock Recompilation Avoidance]Cabaltemplate for HTML locationCabal common args° Cabaltemplate for HTML location¨ CabalWorking directoryCabalHaddock's versionCabal Continuation© Cabalrequire targets± CabalCalled when the ¬ exe is not found. ¨©ª¬­«èéê ¨©ª¬­«èéêdJohan Tibell 2011BSD3cabal-devel@haskell.orgportable Safe-Inferred%'ÃØÝéä¸Cabal Perform the " ./setup bench " action.¸Cabal!positional command-line argumentsCabal information from the .cabal fileCabal#information from the configure stepCabalflags sent to benchmark¸¸eIsaac Jones 2003-2005BSD3cabal-devel@haskell.orgportable Safe-Inferred "%'1ÃØÝäéë} ¹CabalA simple implementation of mainƒ for a Cabal setup script. It reads the package description file using IO, and performs the action specified on the command line.ºCabal A version of ¹Û that is passed the command line arguments, rather than getting them from the environment.½CabalA customizable version of ¹.¾CabalA customizable version of ¹- that also takes the command line arguments.¿CabalLike ¹Ð, but accepts the package description as input rather than using IO to read it.ÀCabalA customizable version of ¿.ÁCabalA customizable version of ¿- that also takes the command line arguments.² CabalÿThe central command chooser of the Simple build system, with other defaultMain functions acting as exposed callers, and with º $ operating as an exceptions handler. This uses WÍ to read response files, preprocessing response files given by "@" prefixes. Given hooks and args, this runs Å onto the args, getting Žï data back, which is then pattern-matched into IO actions for execution, with arguments applied by the parser.³ CabalÖCombine the preprocessors in the given hooks with the preprocessors built into cabal.´ CabalTry to read the øµ Cabal Read the ø or throw an exception.ÂCabalÌHooks that correspond to a plain instantiation of the "simple" build systemÃCabalBasic autoconf ¾:Å runs  ./configure , if present.Îthe pre-hooks, except for pre-conf, read additional build information from package .buildinfo , if present.Thus  configure/ can use local system information to generate package .buildinfo and possibly other files.Úˆ‰ŠÙ•‹Œ–ËØ�Ž��‘’“”•Ø–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð ¦Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý ÊÞ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô 1?A9F;<>8@=B:DCEõ ö ÷ ¿ À Á Â Ã Ä Å Æ ¹ ¸ µ ´ » ¼ ½ ¾ º · ¶ ° ± ² ³ « ¬ ­ ® ¯ ª ¢ £ ¤ ¥ ¦ § ¨ © Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»Ê Ç È É Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø × Ú Ù Û Ü Ý Þ ß à æ ç ê ë é è ì á ä å ã í â ï î ð ¼½¾¿ÀÁÂÃø ù ú û ü ý þ ÿ €!�!‚!ƒ!„!…!†!‡!ˆ!‰!Š!‹!Œ!�!Ž!�!�!‘!’!“!”!•!–!—!˜!™!š!›!œ!�!ž!Ÿ! !¡!¢!£!¤!¥!¦!§!¨!©!ª!«!¬!­!®!¯!°!±!²!³!´!µ!¶!·!¸!¹!º!»!¼!½!¾!¿!À!Á!Â!Ã!Ä!Å!Æ!Ç!È!É!Ê!Ë!Ì!Í!Î!Ï!Ð!Ñ!Ò!Ó!Ô!Õ!Ö!×!Ø!Ù!Ú!Û!Ü!Ý!Þ!ß!à!á!â!ã!ä!å!æ!ç!è!é!ê!ë!ì!í!î!ï!ð!ñ!ò!ó!ô!õ!ö!÷!ø!ù!ú!û!ü!ý!þ!ÿ!€"�"‚"ƒ"„"…"†"‡"ˆ"‰"Š"‹"Œ"�"Ž"�"�"‘"’"“"”"•"–"—"˜"™"š"›"œ"�"ž"Ÿ"¹¿º¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæç½»¼¾ÀÁÂÃÄè7¹¿º¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæç½»¼¾ÀÁÂÃÄè "®¯°®±²®³´®³µ®¶·®¸¹®¸º®»¼½¾¿½¾À½¾ÁÂÃÄÂÃÅÆÇÈÉÊÊËÌÍÎÏÐÑ Ò Ó Ô Õ Ö × Ø ÙÍÚÛÍÚÜÍÚÝÍÚÞÍÚßÍÚàÍÚáÍÚâÍÚãÍäåÍäæÍäçÍäè é é ê ë ì íÍîï ð ñ ò ó ô õÍîöÍî÷ÍîøÍîùÍîúÍîûÍîüÍîýÍîþÍîÿÍî€Íî�Íî‚ÍîƒÍî„Í…† ‡ ‡ ˆ ‰ Š ‹ Œ � Ž �j�k‘k’ “ n”•–—˜y™yšy›yœy�yžyŸy y¡y¢y£y¤y¥y¦y§y¨y©yªy«y¬y­y®y¯y°y±y²y³y´yµy¶y·y¸y¹yºy»y¼y½y¾y¿yÀyÁyÂyÃyÄyÅyÆyÇyÈyÉyÊyËyÌyÍyÎyÏyÐyÑyÒyÓyÔyÕyÖy×yØyÙyÚyÛyÜyÝyÞyßyàyáyâyãyäyåyæyçyèyéyêyëyìyíyîyïyðyñyòyóyôyõyöy÷yøyùyúyûyüyýyþyÿy€y�y‚yƒy„y…y†y‡yˆy‰yŠy‹yŒy�yŽy�y�y‘y’y“y”y•y–y—y˜y™yšy›yœy�yžyŸy y¡y¢y£y¤y¥y¦y§y¨y©yªy«y¬y­y®y¯y°y±y²³³´µ¶·¸¹ºÍ»¼Í»½Í»¾Í»¿ÀÁÂÃÄÍÅÆÍÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàááâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤£¥¦¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿÿ€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´Í…µÍ…¶Í…·Í…¸Í…¹Í…ºÍ…»Í…¼Í…½Í…¾Í…¿Í…ÀÍ…ÁÍ…ÂÍ…ÃÍ…ÄÍ…ÅÍ…ÆÍ…ÇÍ…ÈÍ…ÉÍ…ÊÍ…ËÍ…ÌÍ…ÍÍ…ÎÍ…ÏÍ…ÐÑÒÓÔÕÖ×ÖØªªÙÚÛÜÝÞßàáâãäåæçèéêëììíîïðññòóôõö÷øùúûüýþÿ€��‚ƒ„…†‡ˆ‰ŠŠ‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­¬®¯°±²³´µ¶··¸¹º»»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎ Ï Ð Ñ Ò Ó Ô Õ ÖÍÅ×ÍÅØÍÅÙÍÅÚÍÅÛÍÅÜÍÅÝÍÅÞ!ß!ß!à!á!â!ã!ä!å!æ"ç"è"é"ê"ë"ì"í"î"ï"ð"ñ"ò"ó"ô"õ"ö#÷#ø#ù#ú#û#ü#ý#þ#ÿ#€$�$‚$ƒ%Ö%„%…%†%‡%ˆ%‰%Š&‹&Œ&�&Ž&�&�&‘&’&“&”&•&–&—&˜&™&š&›&œ&�&ž&Ÿ& &¡&¢&£&¤&¥&¦&§&¨&©'p'ª'«'¬'­'®'¯'°'±'²'³'´'µ'¶'·'¸'¹'º'»'¼'½'¾'¿'À'Á'Â'Ã'Ä'Å'Æ'Ç'È'É'Ê'Ë'Ì'Í'Î'Ï'Ð'Ñ'Ò'Ó(Ô(Ô(Õ(Ö(×(Ø(Ø(Ù(Ú(Ú(Û(Ü(Ý(Þ(ß(à(á(â(ã(ä(å(æ(ç(è(é(æ(ê(ë(ë(ì(í(í(î(ï(ï(ð(ñ(ò(ó(ó(ô(õ(ö(÷(ø(ù(ù(ú(û(ü(ý(þ(ÿ(€(�(ý(‚(ƒ(„(…(†(‡(ˆ(ˆ(‰(Š(‹(Œ(�(Ž(�(�(‘(’(“(”(•(–(—(˜(™(š(›(œ(�(ž(Ÿ( (¡(¢(£(¤(¥(¦(§(¨(©(ª(«(¬(­(®(¯(°(±(²(³(´(µ(¶(·(¸(¹(º(»(¼(½(¾(¿(À(Á(Â(Ã(Ä(Å(Æ(Ç(È(É(Ê(Ë(Ì(Í(Î(Ï(Ð(Ñ(Ò(Ó(Ô(Õ(Ö(×(Ø(Ù(Ú(Û(Ü(Ý(Þ(ß(à(á(â(ã(ä(å(æ(ç(è(é(ê(ë(ì)í)î)ï)ð)ñ)ò)ó)ô)õ)ö)÷)ø)ù)ú)û)ô)ü)ý)þ)ÿ)€ )� *‚ *ƒ *„ *… *† *† *‡ *ˆ *‰ *Š *‹ *Œ *� *Ž *� *� *‘ *’ *“ *” *” *• *– *— *˜ *™ *š *› *œ *� *ž *Ÿ *  *¡ *¢ *£ *¤ *¥ *¦ *§ *¨ *© *ª *« *¬ *­ *® +¯ +¯ +° +± +± +² +³ +´ +µ +¶ +· +¸ +¹ +º +» +¼ +½ +¾ ,¿ ,À ,Á , ,à ,Ä ,Å ,Æ ,Ç ,È ,É ,Ê ,Ë ,Ì ,Í ,Î ,Ï ,Ð ,Ñ ,Ò ,Ó ,Ô ,Õ ,Ö ,× ,Ø ,Ù ,Ú ,Û ,Ü ,Ý ,Þ ,ß ,à ,á ,â ,ã ,ä ,å ,æ ,ç ,è ,é ,ê ,ë ,ì ,í ,î ,ï ,ð ,ñ ,ò ,ó ,ô ,õ ,ö ,÷ ,ø ,ù ,ú ,û ,ü ,ý ,þ ,ÿ ,€ ,� ,‚ ,ƒ ,„ ,… ,† ,‡ ,ˆ ,‰ ,Š ,‹ ,Œ ,� ,Ž ,� ,� ,‘ ,’ ,“ ,” ,• ,– ,— ,˜ ,™ ,š ,› ,œ ,� ,ž ,Ÿ ,  ,¡ ,¢ ,£ ,¤ ,¥ ,¦ ,§ ,¨ ,© ,ª ,« ,¬ ,­ ,® ,ž,Ÿ,¯ ,° ,± ,² ,³ ,´ ,µ ,¶ ,· ,¸ ,¹ ,º ,» ,¼ ,ú,½ ,¾ ,¿ ,À ,Á , ,à ,Ä -Å -Æ Ç Ç È É É Ê Ë Ì Í Î Ï qÐ Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ € � ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ � Ž � � ‘ ’ “ ” • – — ˜ ™ š › œ � ©ž Ÿ   ¡ ¢ .£ .¤ .¥ .¦ .§ .¨ .© .ª .« .¬ .­ .® .¯ .° .± .² .³ .´ .µ .¶ .· /¸ /¹ /º /» /¼ /½ /¾ /¿ /À 0Á 0 0à 0Ä 0Ä 0Å 0Æ 0Ç 0È 0É 0Ê 0Ë 0Ì 0Í 0Î 0Ï 0Ð 0Ñ 0Ò 0Ó 0Ô 0Õ 0Ö 1× 1Ø 1Ù 2Ú 3Û 3Ü 4Ý 4Þ 4ß 4à 4á 4â 4ã 4ä 5å 5æ 5ç 5è 5é 5ê 5ë 5ì 5í 5î 5ï 5ð 5ñ 5ò 5ó 5ô 5õ 5ö 5÷ 5ø 5ù 5ú 5û 5ü 5ý 5þ 5ÿ 5€ 5� 5‚ 5ƒ 5„ 5… 5† 5‡ 5ˆ 5‰ 5Š 5‹ 5Œ 5� 5Ž 5� 6� 6‘ 6’ 7“ 7” 7• 7– 7— 7ë7˜ 7™ 7š 7› 7œ 7� 7ž 7Ÿ 7  7¡ 7¢ 7£ 7¤ 7¥ 7¦ 7§ 7¨ 7© 7ª 7« 7¬ 7­ 7® 7¯ †° †° †± †² †³ †´ 8µ 8¶ 8· 8¸ 8¹ 8º 8» 8¼ 8½ 8¾ 8¿ 8À 8Á 8 8à 8Ä 8Å 8Æ 8Ç 8È 8É 8Ê 8Ë 8Ì 8Í 8Î 8Ï 8Ð 8Ñ 8Ò 8Ò 8Ó 8Ô 8Õ 8Ö 8× 8Ø 8Ù 8Ú 8Û 8Ü 8Ý 8Þ 8ß 8à 8á 8â 8ã 8ä 8å 8æ 8ç 8è 8é 8ê 8ë 8ì 8í 8î 8ï 8ð 8ñ 8ò 8ó 8ô 8õ 8ö 8÷ 8ø 8ù 8ú 8û 8ü 8ý 8þ 8ÿ 8€ 8� 8‚ 8ƒ 8„ 8… 8† 8‡ 8ˆ 8‰ 8Š 8‹ 8Œ 8� 8Ž 8� 8� 8‘ 8’ 8“ 8” 8• 8– 8— 8˜ 8™ 8š 8› 8œ 8� 8ž 8Ÿ 8  8¡ 8¢ 8£ 8¤ 8¥ 8¦ 8§ 8¨ 9© 9© 9ª 9« 9¬ 9­ 9­ 9® 9¯ 9° 9± 9² 9³ 9´ 9µ 9¶ 9· 9¸ 9¹ 9º 9» 9¼ 9½ 9¾ 9¿ 9À 9Á 9 9à 9Ä 9Å 9Æ 9Ç 9È 9É 9Ê ‰Ë ‰Ë ‰Ì ‰Í ‰Î ‰Ï ‰Ð ‰Ñ ‰Ò ‰Ó ‰± ‰Ô ‰Õ ‰Ö ‰× ‰Ø ‰Ù ‰Ú ;Û ;Ü ;Ý ;Þ ;ß ;à ;á ;â ;ã ;ä ;å ;æ ;ç ;è ;é ;ê ;ë ;ì ;í ;î ;ï ;ï ;ð ;ñ ;ò ;ó ;ô ;õ ;ö ;÷ ;ø ;ù ;ú ;û ;ü ;ý ;þ ;ÿ ;€;�;‚;ƒ;„;…;†;‡;ˆ;‰;Š;‹;Œ;�;Ž;�;�;‘;’;“;”;•;–;—;˜;™;š;›;œ;�;ž;Ÿ; ;¡;¢;£;¤;¥;¦;§;¨;©;ª;«;¬;­;®;¯;°;±;²;³;´;µ;¶;·;¸;¹;º;»;¼;½;¾;¿;À;Á;Â<Ã<Ä<Å<Æ<Ç<È<É<Ê<Ë<Ì<Í<Î<Ï<Ð<Ñ<Ò<Ó<Ô<Õ<Ö<×<Ø<Ù<Ú<Û<Ü<Ý<Þ=ß=à=á=á=â=ã=ä=å=æ=ç=è=é=ê=ë=ì=í=î=ï=ð=ñ=ò=ó=ô=õ=ö=÷=ø=ù=ú=û=ü=ý=þ=ÿ=€=�=‚=ƒ=„=…=†=‡=ˆ=‰=Š>‹>Œ>�>Ž>�>�>‘?’?“@”@”@æ@•@–@—@˜@™@š@›@œ@�@ž@Ÿ@ @¡@¢@£@¤@¥@¦@§@§@í@¨@©@ª@«@¬@­@®@®@¯@°@±@²@³@´@µ@¶@·@¸@¹@º@»@¼@½@¾@¿@À@Á@Â@Ã@Ä@Å@Æ@Ç@È@É@Ê@Ë@Ì@Í@Î@Ï@Ð@Ñ@Ò@ӊԊԊՊ֊׊؊يڊۊ܊݊ފ¿ŠÀŠßŠàŠáŠâŠãŠäŠå‹æ‹æ‹ç‹è‹é‹ê‹ë‹ì‹í‹î‹ï‹ð‹ñ‹ò‹ó‹ô‹õ‹ö‹÷‹ø‹ù‹ú‹û‹ü‹ý‹þŒÿŒÿŒ€Œ�Œ‚ŒƒŒ„Œ…Œ†Œ‡ŒˆŒ‰ŒŠŒ‹ŒŒ�����Ž�����‘�’�“�“�”�•�–�—�˜�™�š�›�œ���ž�ŸŽ Ž Ž¡Ž¢Ž£Ž¤Ž¥Ž¦Ž§Ž¨Ž©ŽªŽ«Ž¬Ž­Ž®Ž¯Ž°�±�±�²�³�´�µ�¶�·�¸�¹�º�»�¼�½�¾�¿�À�À�Á�Â�Ã�Ä�Å�Æ�Ç�È�É�Ê�Ë�Ì�Í�Î�ϑББёґӑԑՑ֑בّؑڑۑܑݑޑߑà‘á‘â‘ã‘ä‘呿‘ç‘ç‘è‘é‘ê‘ë‘ì‘í‘î‘ï‘ð‘ñ‘ò‘ó‘ô‘õ‘ö‘÷‘ø‘ù‘ú‘û‘ü‘ý‘þ‘ÿ‘€‘�‘‚‘ƒ‘„‘…‘†‘‡‘ˆ‘‰‘Š‘‹‘Œ‘�‘Ž‘�’�’�’‘’’’“’”’•’–“—“—“˜“™“š“›“œ“�“ž“Ÿ“ “¡“¢”˜”˜”£”¤”¥”¦”§”¨”©”ª”«”¬”­”®”¯”°”±”²”³”´”µ”¶”·”¸”¹”º”»”¼”½”¾”¿”À”Á””ÔĔŔƔǔȔɔʔ˔͔̔ΔϔДєҔӔԔՔ֔הؔٔڔ۔ܔݔޔߔà”á”â”ã”ä”唿”ç”è”é”ê”ë”ìBíBíBîBïBðBñBòBóBôBõBöB÷BøBùBúBûBüBýBþBÿB€B�B‚B‚BƒB„B…B†B†B‡BˆB‰B‰BŠB‹BŒB�BŽBŽB�B�B‘B’B“B”B•B–B—B˜B™BšB›BœB�BžBŸB B¡B¢B£B¤B¥B¦B§B¨B©BªB«B¬B­B®B¯B°B±B²B³C´CµC¶C·C´C¸C¹CºC»C¼C½C¾C¿CÀCÁCÂCÃCÄCÅCÆCÇCÈCÉCÊCËCÌCÍCÎCÏCÐCÑCÒCÓCÔCÕCÖC×CØCÙCÚCÛCÜCÝCÞCßCàCáCâCãCäCåCæCçCèCéCêCëCìCíCîCïCðCñCòCóCôCõCöC÷CøCùCú û ü ý þ ÿ € � ‚ ƒ „ … † ‡ ˆ ” ‰ Š • ‹ ™DŒD�DŽD�D�D‘D’D’D“D”D•D–D–D—D˜D™DšD›DœD�DžDŸD D¡D¢D£D¤D¥D¦D§D¨D©DªD«D¬D­E®F¯G°G°G±G²G³G´GµG¶G·G¸G¹GºG»G¼G½G¾G¿GÀGÁGÂHÃIÄIřƙÇKÈKÉKÉKÊKËKÌKÍKÎKÏKÐKÑKÒKÓKÔKÕKÖL×LØLØLÙLÚLÛLÜLÝLÞLßLàLáLâLãLäLåLæLçLèMéMêMëMìMíMîšïšïšðšñšòšóšôšõšöš÷šøšùšú›û›û›ü›ý›þ›ÿ›€›�›‚›ƒ›„›…›†›‡›ˆ›‰›Šœ‹œ‹œŒœ�œŽœ�œ�œ‘œ’œ“œ”œ•œ–œ—A˜A™AšA›AœA�AžAŸA A¡A¢A£A¤N¥N¥N¦N§N¨N‚N©NªN«N¬N­O®O¯O°O±O²O³O´OµO¶O·O¸O¹OºO»O¼O½O¾O¿OÀOÁOÂOÃOÄOÅOÆOÇOÈOÉOÊOËOÌOÍOÎOÏOÐOÑOÒOÓOÔOÕOÖO×OØOÙOÚOÛOÜOÝOÞPßPàPáPâPãPäPåPæPçPèPéPêPëPìPíPîPïPðPñPòPóPôPõPöP÷PøPùPúPûPüPýPþPÿP€P�P‚PƒP„P…P†P‡QˆQ‰QŠQ‹QŒQ�QŽR�R�R‘R’R“R”S�T•T•T–T—T˜T™TšT›TœT�T�TžTŸT T T¡T¢T£T¤T¤T¥T¦T§T¨T¨T©TªT«T¬T¥T¥T­T®T¯T°T°T±T²T³T´T´TµT¶T¶T·T¸T¹TºT»T»T¼T½T¾T¿T¿TÀTÁTÂTÂTÃTÄTÅTÆTÇTÈTÈTÉTÊTËTÌTÍTÎTÏTÐTÑTÒTÓTÔTÕTÖT×TØTÙTÚTÛTÜTÝTÞTßTàTáTâTãTäTåTæTçTèTéTêTëTìTíTîTïTðTñTòTóTôTõTöT÷TøTùTúTûTüTýTþTÿT€T�T‚TƒT„T…T†UˆU‡UˆU‰UŠU‹U‰UŠUŒU�UŒU�žŽž�ž�ž‘ž’ž“ž”ž•ž–ž—ž˜Ÿ™Ÿ™ŸšŸ›:ˆ:œ:�:‰:ž:Ÿ: :Š:¡:¢:£:¤:‹:¥:¦:”:§:¨:Œ:©:ª:�:«:¬¢­VˆVœV�V‰V®VžVŸV VŠV¡V¢V£V¤V‹V¥V¦V§V¨VŒVªV�V«W¯W°W±W²X³X´XµY¶Y·¸¹º»¼½¾¿ZÀZÀZÁZÂZÃZÄZÅZÆZÇZÈZÉZÊZËZÌZÍ[Î\Ï]º ]Ð]Ñ]Œ]Ò]Ó]Ô]Õ]�]Ö]×]Ø]» ]Ù^Ú^Û^Ü^Ý^Þ^ß^à^á^â^ã^ä^å^æ^ç^è^é^ê^ë_ì_ì_í_î_ï_ð_ñ_ò_ó_ô_õ_ö_÷_ø_ù_ú_û_ü_ý_þ_ÿ_€_�_‚_ƒ_„_…_†_‡_ˆ_‰_Š_‹_Œ_�_Ž_�_�_‘_’_“_”_•J–J—J˜J™JšJ›JœJ�JžJŸJ J¡J¢J£J¤J¥J¦J§JˆJ¨J©JªJ‰J�J J«J¬J­J®J¯J°J±J²`³`´`µ`¶`·`¸`¹`º`»`¼a½a¾a¿a¾a—aÀaÁaÂa¢aÃaÄaÅaÆaÇaÈaÉaÊaËaÌbÍcÎcÏcÐcÑcÒcÓcÔcÕcÖc×cØcÙcÚcÛcÜcÝdÞe¾e¿eßeàeáeâeãeäeåeæeçeègéÍêëgìgígîÍ ïÍðñgògógògôgõgög÷gøgùgúgûgégügýgþÍÿ€h�h‚hƒ®„…h†®‡ˆh‰hŠh‹hŒh�h�hŽi�®�‘®�’j“k”k•k–k—k˜k™®š›®šœ�žŸ�ž �ž¡�ž¢®£¤�ž¥�ž¦�ž§�ž¨�ž©�žª�ž«�ž¬�ž­®®¯®®°®®±�ž²³´µ®£¶®£·®£¸®¹º®¹»®¹¼®½¾®¿À®¿Á®ÂîÂÄ®ÂÅ®ÂÆ®ÂÇ®ÂÈ®ÂÉ®ÂÊ®ÂË®šÌ®šÍ®šÎ®šÏ®ÐÑ®ÐÒ®ÐÓ®ÔÕ®ÔÖ®Ô×®ÔØ®ÙÚ®ÙÛ®ÙÜ®ÙÝ®Þß®Þà®Þá®Þâ®ãä®ãt®åæ®åç®åè®åé®åê®åë®åì®åí®åî®åï®åð®åñ�òó�òô�òõ®ö÷®öø®öù®öú®öû®öü®öý®öþ®öÿ®ö€®ö�®ö‚®öƒ®ö„®ö…®ö†®ö‡®öˆ®ö‰®ÂŠ®Â‹®ÂŒ®Â�®šŽ®š�®š�®š‘®š’®š“®š”®•–®•—®•˜®•™®•𮕛®•œ®•��òž�òŸ�ò �ò¡�ò¢�ò£�ò¤�ò¥®Â¦®Â§®ö¨®ö©®öª®ö«®ö¬®ö­®ö®®ö¯®ö°®ö±®ö²®ö³®ö´®öµ®ö¶®Â·®Â¸®Â¹®Âº®Â»®Â¼®½¾®¿À®¿Á®šÂ®šÃ®šÄ®šÅ®šÆ®šÇ®ÈÉ®ÈÊ®ÈË®ÈÌ®ÈÍ®Èò®ÈήÈÏ®ÈЮÈÑ®ÈÒ®ÈÓ®ÈÔ®ÕÖ®Õ×®ÕØ®ÙÚ®šÛ®šÜ®šÝ®šÞ®šß®šà®šá®âã®Þä®Þ䮚定殚箚讚é®Ôê®ëì®íî®íî®ïð®ïð®ïñ®òó®ãô®ãõ®ãö®÷ø®÷ø®÷ùúûüúûýúûþúûÿ€�‚€ƒ„…†‡…†ˆÍ‰ŠÍ‹Œ…†�®Ž�®�‘®’“®Â”®Ž•®š–®³—®˜™®š›®˜œ®�ž®šŸ® ¡®š¢®£¤®Õ¥®ò¦®ò§®�¨®�©®�ª®š«®’¬®³­®®¯®’°®š±�²³®È´®’µ®�¶®š·Í¸¹®šº®»¼®Â½®Â¾®¿À®šÁ®ÂÂ�òÃ�òÄ�òÅ®�Æ®�Ç®šÈ®šÉ®šÊ®šË®šÌ®šÍ®šÎ®šÏ®šÐ®šÑ®šÒ®šÓ®•Ô®ÕÖ®Õ×®ÕØ®ÕÙ®ÕÚ®ÕÛ®ÕÜ®ÕÝ®£Þ®£ß®£· ͸ஒᮒâÍ¸ã®’ä®’å®’æ®’ç®’è®’é®’ê®’ë®’ì®’í®’î®’ï®’ð®Èñ®Èò®Èó®Èô®Èõ®’ö®È÷®’ø®’ù®’ú®’û®’ü®Ôý®Ôþ®Ôÿ®Ô€®Â�®Â‚®Âƒ®Â„®˜…®˜†®‡ˆ®�‰®�Š®�‹®�Œ®��®�Ž®Ð�®Ð�®¹‘®¹’®š“®È”®È•®È–®È—®â˜®³™®³š®³›®³œ®³�®³ž®³Ÿ®³ ®³¡®³¢®³£®³¤®ã¥®ò¦®ã§®�¨®�©®�ª®�«®�¬®�­®�®®�¯®�°±²³®¿´®¿µ®¿¶®®·®®¸Í¸¹Í¸ºÍ¸»Í¸¼®£½…†¾Í¿À͸ÁÍ¿ÂÍ¿ÃÍÄÅÍÄÆÍ¸ÇoÈoÉoÊrËrÌ®vÍ®vÎuÏuÐu£u¤uÑuÒuÓuÔuÕuÖu×u¢uØuÙxÚyÛyÜyÝyÞyßyàyáyâyãyäyåyæyçyèyéÍ»êÍëìÍëíÍîïÍðñ|ò|ó|ô|õ|ö|ò|÷|ø|ù|ú|û|õ|ü|ýÍþÿÍ΀®�‚®�ƒ®„…}†}‡}ˆ}‰}Š}‹}—}Ü }Œ'�'Ž'�'�(‘(’(“(”®•–(—~˜~™~š~›~œÍ�ž~Ÿ~ ~¡~¢~£~¤~¥~¦~§~¨~©~ª~«~¬~­®®¯~°~±~²~³~´~µ~¶~·Íê¸~¹~º~»~¼~½~¾~¿~À~Á~£~ ~Â~Ã~Ä~Ÿ~Å~Æ~Ç~ÈÉÊˀ̀̀ήÈÏÍÐÑ�Ò�Ó�Ó�Ô�Õ�Ö�×�Ø�Ù�Ú�Û�Ü�Ý�Þ�ß�à�á�â�ã�ä�å‚҂ӂӂԂՂׂæ‚ç‚èƒÒƒÓƒÓƒåƒéƒêƒëƒìƒíƒîƒïƒðƒðƒñƒòƒóƒôƒõƒöƒöƒ÷ƒøƒùƒúƒû„ü„ý„ž„þ„ÿ„€„�„‚ƒ„…†‡ˆ‰Š‹Œ®v�Ž��‘’“®”•®”–—±²˜™š›œ�žŸ½¾± . /¡3¢3£5¤Íz¥Í¦§6¨6©7ª†«†¬†­†®†¯†°†±†²†³†´†µ†¶†·†¸†¹†º†»†¼†½†¾†«†°†¿†À†Á†¯†Â†Ã†­†Ä†Å†®†Æ†Ç†È†É†Ê†¬†Ë†Ì†Í†Î†Ï†Ð†Ñ‡Ò‡Ó‡ÔÍÕևׇ؇وڈۈ܈݈ވ߈àˆáˆâˆã8ä8å8æ8çÍèéÍèêÍèëÍèìÍèíÍèîÍèïÍèðÍèñÍèòÍèóÍèôÍèõÍèöÍè÷ÍèøÍèùÍèøÍèúÍèúÍèûÍèûÍèüÍèýÍèþÍèÿÍè€Íè�Íè�Íè‚ÍèƒÍè„Íè…Íè†Íè‡ÍèˆÍè‰‰Š‰‹ÍêŒ;�=Ž=�Í�‘@’@“Š”Š•Š–Š—Š˜Š™ŠšŠ›”œ”�ÍžŸÍ¦ C¡Í»¢Í£¤Í»¥Í¦§Í¨©FªG«K¬K­Í®¯Í°±O²O³O´OµO¶O·O¸O¹OºO»O¼O½Oæ Oç Oè O¾Í¿ÀQÁQÂQÃQÄQÅRÆTÇTÈTÉTÊTËT̞͞ΞϞÐÍÑÒžÓÍÑÔÍÑ՞֞מ‹žŠžØžœžÙžÚžÛžÜžÝžÞžßžàžážâžã:ä:å:æ:ç:è:é:ê:ë:ì:í:î:ï:ð:ñ:ò¢ó¢ô¢©¢õÍö÷¢ø¢ù¢í¢ï¢ð¢è¢é¢ú¢ê¢ë¢û£ü£ý£þ£ÿ¤€¤�¤‚¤ƒ¤„¤…¤†Íë‡Í눥‰¥Š¥‹¥Œ¥ñ¥î¥�¥Ž¥�¥�¥‘¥’¥�¥“¥”¥•¥–¥—¥˜¥™¥š¥›¥“¥œ¥�¥ž¥Ÿ¥ ¥¡¥¢¥œ¥£¦—V¤V¥V¦V§V¨VçV©WªX«X¬X­X®§¯§°§±§²§³§´§µ§¶¨·¨¸¨¹¨º¨»¨¼½Í¾¿ÀÁ©ÂÍ�žÍzÃÍzÄÍÅöÍÅöͦ Í¦ÆÍ¦ÇÍðÈÍðÉÍzÊÍzËÍzÌÍzÍÍzÎÍÏÐÍÑÒÍzÓÍðÔÍîÕÍðÖÍð×ÍîØÍðÙÍðÚÍðÛÍðÜÍðÝÍðÞÍðßÍzàÍÏáÍÏâÍÅãÍÅäÍÅåÍÅæÍÅçÍÅèÍÑéÍÑêÍzëÍzì½¾íZîïðñ¬ò¬ó¬ô¬õ¬ö¬÷¬ø¬ù¬ú¬û¬ü¬ý¬þ¬ÿ¬€ ¬� ¬‚ ¬ƒ ¬„ ¬… ¬† ¬‡ ͈ ‰ ¬Š ¬ý¬‹ ¬ø¬ô¬Œ ^� ÍëŽ ^� J� J‘ J’ J“ J” J• J– J— J˜ J™ Jš J› Jœ Í� ž JŸ J  J¡ J¢ J£ J¤ J¥ J¦ J§ J¨ `© `ª `« `¬ `­ `® `¯ `° `± `² `³ ­´ ­µ a¶ a· a¸ a¹ aº a» a¼ a½ a¾ a¿ aÀ aÁ a£a aà cÄ ÍÅ Æ cÇ cÈ cÉ cÊ cË cÌ cÍ cÎ cÏ cÐ cÑ cÒ cÓ cÔ cÕ cÖ c× cØ cÙ cÚ cÛ cÜ cÝ cÞ cß cà cá câ cã cä cå cæ cç cè cé cê cë cì eí eî eï eð Í�ñ Í�ò Í�ó Í�ô Í�õ Í�ö Í�÷ Í�ø Í�ù Í�ú Íû ü Íû ü Íû ý Íû þ Íû ý Íû ÿ Íû ÿ Íû €!Íû �!Íû ‚!Íû ƒ!Í�„!Í�…!ÍΆ!Í·!ÍΈ!ÍΉ!ÍΊ!Í�‹!Í�Œ!Í��!Í�Ž!Í��!Í��!Í�‘!Í�’!Í�“!Í�”!Í�•!Í�–!Í�—!Í�˜!Í�™!Í�š!Í›!œ!Í�!ž!Íû Ÿ!Íû  !Íû ¡!Íû ¢!Í�!£!Í�!¤!Í�!¥!Í�!¦!Í�!§!Í�!¨!Í›!©!Í›!ª!Í›!«!Í›!¬!Í›!­!Í›!®!Í›!¯!Íî°!Íî±!Íî²!ͳ!´!ͳ!µ!ͳ!¶!ͳ!·!ͳ!¸!ͳ!¹!ͳ!º!ͳ!»!ͳ!¼!ͳ!½!ͳ!¾!ͳ!¿!ͳ!À!ͳ!Á!ͳ!Â!ͳ!Ã!ͳ!Ä!ͳ!Å!ͳ!Æ!ͳ!Ç!ͳ!È!ͳ!É!ͳ!Ê!ͳ!Ë!ͳ!Ì!ͳ!Í!ͳ!Î!ͳ!Ï!ͳ!Ð!ͳ!Ñ!ͳ!Ò!ͳ!Ó!ͳ!Ô!ͳ!Õ!ͳ!Ö!ͳ!×!ͳ!Ø!ͳ!Ù!ͳ!Ú!ͳ!Û!ͳ!Ü!ͳ!Ý!ͳ!Þ!ͳ!ß!ͳ!à!ͳ!á!ͳ!â!ͳ!ã!ͳ!ä!ͳ!å!ͳ!æ!ͳ!ç!ͳ!è!ͳ!é!ͳ!ê!ͳ!ë!ͳ!ì!ͳ!í!ͳ!î!ͳ!ï!ͳ!ð!ͳ!ñ!ͳ!ò!ͳ!ó!ͳ!ô!ͳ!õ!ͳ!ö!ͳ!÷!ͳ!ø!ͳ!ù!ͳ!ú!ͳ!û!ͳ!ü!ͳ!ý!ͳ!þ!ͳ!ÿ!ͳ!€"ͳ!�"ͳ!‚"ͳ!ƒ"ͳ!„"ͳ!…"ͳ!†"ͳ!‡"ͳ!ˆ"ͳ!‰"ͳ!Š"ͳ!‹"ͳ!Œ"ͳ!�"ͳ!Ž"ͳ!�"ͳ!�"ͳ!‘"ͳ!’"ͳ!“"ͳ!”"ͳ!•"ͳ!–"ͳ!—"ͳ!˜"ͳ!™"ͳ!š"ͳ!›"ͳ!œ"ͳ!�"ͳ!ž"ͳ!Ÿ"ͳ! "ͳ!¡"ͳ!¢"ͳ!£"ͳ!¤"ͳ!¥"ͳ!¦"ͳ!§"ͳ!¨"ͳ!©"ͳ!ª"ͳ!«"ͳ!¬"ͳ!­"ͳ!®"ͳ!¯"ͳ!°"ͳ!±"ͳ!²"ͳ!³"ͳ!´"ͳ!µ"ͳ!¶"ͳ!·"ͳ!¸"ͳ!¹"ͳ!º"ͳ!»"ͳ!¼"ͳ!½"ͳ!¾"ͳ!¿"ͳ!À"ͳ!Á"ͳ!Â"ͳ!Ã"ͳ!Ä"ͳ!Å"ͳ!Æ"ͳ!Ç"ͳ!È"ͳ!É"ͳ!Ê"ͳ!Ë"ͳ!Ì"ͳ!Í"ͳ!Î"ͳ!Ï"ͳ!Ð"ͳ!Ñ"ͳ!Ò"ͳ!Ó"ͳ!Ô"ͳ!Õ"ͳ!Ö"ͳ!×"ͳ!Ø"ͳ!Ù"ͳ!Ú"ͳ!Û"Ü"Cabal-3.14.0.0-inplaceDistribution.Compat.StackDistribution.Simple.Utils Distribution.Compat.ResponseFileDistribution.Compat.DirectoryDistribution.Compat.FilePathDistribution.Compat.CreatePipe Distribution.Backpack.FullUnitIdDistribution.MakeDistribution.Backpack.ModSubst"Distribution.Simple.LocalBuildInfo!Distribution.Backpack.ModuleShape$Distribution.Backpack.PreModuleShapeDistribution.Compat.Process%Distribution.PackageDescription.CheckDistribution.ReadE$Distribution.Simple.BuildToolDependsDistribution.Simple.BuildWayDistribution.Simple.CCompilerDistribution.Simple.Flag!Distribution.Simple.Glob.Internal%Distribution.Simple.FileMonitor.Types(Distribution.Simple.InstallDirs.InternalDistribution.Simple.InstallDirs$Distribution.Simple.Program.InternalDistribution.TestSuiteDistribution.Types.AnnotatedId#Distribution.Types.ComponentInclude*Distribution.Types.ComponentLocalBuildInfo Distribution.Types.DumpBuildInfo!Distribution.Types.GivenComponent$Distribution.Types.PackageName.MagicDistribution.Types.ParStratDistribution.Types.TargetInfoDistribution.Utils.IODataDistribution.Utils.JsonDistribution.Utils.MapAccumDistribution.Utils.ProgressDistribution.Verbosity.InternalDistribution.Verbosity#Distribution.Simple.SetupHooks.Rule%Distribution.Simple.SetupHooks.Errors!Distribution.Simple.Program.Types$Distribution.Simple.PreProcess.TypesDistribution.Simple.Errors$Distribution.Simple.PreProcess.UnlitDistribution.Utils.NubListDistribution.Utils.LogProgressDistribution.Simple.Program.Run"Distribution.Simple.Program.Script(Distribution.Simple.Program.ResponseFileDistribution.Simple.Program.Hpc Distribution.Simple.Program.Find Distribution.Simple.PackageIndex&Distribution.Simple.PackageDescriptionDistribution.Simple.GlobDistribution.Simple.Compiler!Distribution.Simple.Program.HcPkgDistribution.Simple.GHCJSDistribution.Simple.Program.GHC#Distribution.Simple.Program.BuiltinDistribution.Simple.Program.DbDistribution.Simple.Program!Distribution.Simple.Program.StripDistribution.Simple.CommandDistribution.Simple.Setup#Distribution.Types.LocalBuildConfig!Distribution.Types.LocalBuildInfoDistribution.Simple.Test.LogDistribution.Simple.Program.LdDistribution.Simple.Program.ArDistribution.Simple.Hpc+Distribution.Simple.Build.PackageInfoModule Distribution.Simple.Build.MacrosDistribution.Simple.Configure)Distribution.Backpack.ConfiguredComponent%Distribution.Backpack.LinkedComponent%Distribution.Backpack.ComponentsGraph Distribution.Simple.Build.InputsDistribution.Simple.BuildTargetDistribution.Simple.BuildPathsDistribution.Simple.UHCDistribution.Simple.Test.LibV09Distribution.Simple.Test.ExeV10'Distribution.Simple.SetupHooks.Internal Distribution.Simple.HaskellSuiteDistribution.Simple.GHC!Distribution.Simple.ShowBuildInfoDistribution.Simple.Install%Distribution.Simple.Build.PathsModuleDistribution.Compat.TimeDistribution.Backpack.Configure$Distribution.Backpack.DescribeUnitIdDistribution.Simple.RegisterDistribution.Simple.PreProcessDistribution.Simple.UserHooksDistribution.Simple.SrcDistDistribution.Simple.BuildDistribution.Simple.TestDistribution.Simple.HaddockDistribution.Simple.BenchDistribution.SimpleCabal!Distribution.Backpack.ModuleScopeDistribution.Compat.Async$Distribution.Compat.GetShortPathName%Distribution.Compat.Internal.TempFileDistribution.Compat.CopyFile$Distribution.Compat.Prelude.InternalSystem.ProcessprocDistribution.Compat.SnocList Verbosity annotateIODistribution.Compat.EnvironmentControl.Exception IOExceptionDistribution.GetOptSystem.EnvironmentgetArgsDistribution.Lex-Distribution.PackageDescription.Check.WarningDistribution.PackageCheck*Distribution.Backpack.PreExistingComponentDistribution.Utils.UnionFindDistribution.Backpack.UnifyMDistribution.Backpack.MixLinkDistribution.ZinzaPrelude'Distribution.Simple.Build.PathsModule.Z-Distribution.Simple.Build.PackageInfoModule.Z"Distribution.Simple.Build.Macros.Z Paths_Cabal CreatePipe+Distribution.PackageDescription.Check.Monad1Distribution.PackageDescription.Check.Conditional,Distribution.PackageDescription.Check.Common Distribution.Simple.GHC.ImplInfo Distribution.Simple.Setup.CommonDistribution.Simple.Setup.TestDistribution.Simple.Setup.SDistDistribution.Simple.Setup.Repl"Distribution.Simple.Setup.Register!Distribution.Simple.Setup.Install"Distribution.Simple.Setup.Hscolour!Distribution.Simple.Setup.Haddock Distribution.Simple.Setup.GlobalDistribution.Simple.Setup.Copy Distribution.Simple.Setup.Config D.C.SetupfilterConfigureFlagsbuild ConfigFlagsDistribution.Backpack.IdDistribution.Simple.Setup.CleanDistribution.Simple.Setup.Build#Distribution.Simple.Setup.BenchmarkHaddock Distribution.Simple.GHC.Internal)Distribution.Simple.GHC.EnvironmentParserDistribution.ModuleNamemain#Distribution.Simple.GHC.Build.Utils%Distribution.Simple.GHC.Build.Modules*Distribution.Simple.GHC.Build.ExtraSources"Distribution.Simple.GHC.Build.LinkDistribution.Simple.GHC.Build+Distribution.PackageDescription.Check.Paths,Distribution.PackageDescription.Check.TargetfindPackageDescTestType$Distribution.Backpack.ReadyComponent#Distribution.Simple.ConfigureScriptbaseGHC.Stack.Types CallStackData.Ord comparing Data.OldList isInfixOf intercalate GHC.ExceptionprettyCallStack GHC.Stack callStackwithFrozenCallStackGHC.ResponseFile escapeArgsdirectory-1.3.8.5System.Directory makeAbsolute listDirectory doesPathExistfilepath-1.4.300.1System.FilePath.Posix isExtensionOfstripExtensionprocess-1.6.19.0System.Process.Internals createPipeFullDb FullUnitIdexpandOpenUnitId expandUnitIdCabal-syntax-3.14.0.0-inplaceDistribution.Types.VersionVersion$fShowFullUnitId$fGenericFullUnitIdModSubstmodSubst $fModSubst(,)$fModSubstList $fModSubstMap $fModSubstSet$fModSubstOpenUnitId$fModSubstOpenModule Distribution.Types.ComponentNamecomponentNameStringshowComponentName ComponentName CBenchNameCExeName CFLibNameCLibName CNotLibName CTestNameDistribution.Types.LibraryName LibraryName LMainLibName LSubLibNamedefaultLibName ModuleShapemodShapeProvidesmodShapeRequiresemptyModuleShapeshapeInstalledPackageDistribution.LicenseLicense$fModSubstModuleShape$fStructuredModuleShape$fBinaryModuleShape$fEqModuleShape$fShowModuleShape$fGenericModuleShapeAGPLAllRightsReservedApacheBSD2BSD3BSD4GPLISCLGPLMITMPL OtherLicense PublicDomainUnknownLicenseUnspecifiedLicenseDistribution.Utils.GenericisAbsoluteOnAnyPlatformPreModuleShapepreModShapeProvidespreModShapeRequirestoPreModuleShaperenamePreModuleShapemixLinkPreModuleShape$fEqPreModuleShape$fShowPreModuleShape$fGenericPreModuleShapecreateTempDirectorysetFileOrdinarysetFileExecutableenableProcessJobsexpandResponse WithCallStackparentSrcLocPrefixwithLexicalCallStackannotateCallStackIOCheckExplanationIDStringCheckExplanationIDCheckExplanation ParseWarning NoNameFieldNoVersionFieldNoTargetUnnamedInternalDuplicateSectionsIllegalLibraryNameNoModulesExposedSignaturesCabal2AutogenNotExposedAutogenIncludesNotIncludedNoMainIs NoHsLhsMainMainCCabal1_18AutogenNoOtherAutogenIncludesNotIncludedExeTestsuiteTypeNotKnownTestsuiteNotSupportedBenchmarkTypeNotKnownBenchmarkNotSupportedNoHsLhsMainBenchInvalidNameWinZPrefix NoBuildType NoCustomSetupUnknownCompilersUnknownLanguagesUnknownExtensionsLanguagesAsExtensionDeprecatedExtensionsMissingFieldCategoryMissingFieldMaintainerMissingFieldSynopsisMissingFieldDescriptionMissingFieldSynOrDescSynopsisTooLong ShortDescInvalidTestWithImpossibleInternalDepImpossibleInternalExeMissingInternalExe NONELicense NoLicenseAllRightsReservedLicenseLicenseMessParseUnrecognisedLicense UncommonBSD4UnknownLicenseVersion NoLicenseFileUnrecognisedSourceRepo MissingTypeMissingLocation GitProtocol MissingModule MissingTag SubdirRelPathSubdirGoodRelPathOptFasmOptHpcOptProfOptOOptHideOptMakeOptONotOptOOneOptOTwoOptSplitSections OptSplitObjsOptWlsOptExtsOptRts OptWithRts COptONumberCOptCPPOptAlternativesRelativeOutside AbsolutePathBadRelativePath DistPointGlobSyntaxErrorRecursiveGlobInRoot InvalidOnWinFilePathTooLongFilePathNameTooLongFilePathSplitTooLong FilePathEmpty CVTestSuiteCVDefaultLanguageCVDefaultLanguageComponentCVDefaultLanguageComponentSoftCVExtraDocFiles CVMultiLib CVReexportedCVMixinsCVExtraFrameworkDirsCVDefaultExtensionsCVExtensionsDeprecated CVSourcesCVExtraDynamicCVVirtualModulesCVSourceRepository CVExtensions CVCustomSetupCVExpliticDepsCustomSetupCVAutogenPathsCVAutogenPackageInfoCVAutogenPackageInfoGuard GlobNoMatchGlobExactMatch GlobNoDir UnknownOS UnknownArchUnknownCompilerBaseNoUpperBoundsMissingUpperBoundsSuspiciousFlagNameDeclaredUsedFlagsNonASCIICustomFieldRebindableClashPathsRebindableClashPackageInfoWErrorUnneeded JUnneededFDeferTypeErrorsUnneededDynamicUnneededProfilingUnneededUpperBoundSetupDuplicateModulePotentialDupModuleBOMStartNotPackageNameNoDesc MultiDesc UnknownFileMissingSetupFileMissingConfigureScriptUnknownDirectoryMissingSourceControlMissingExpectedDocFilesWrongFieldForExpectedDocFiles PackageCheckPackageBuildImpossiblePackageBuildWarningPackageDistSuspiciousPackageDistSuspiciousWarnPackageDistInexcusable explanationppPackageCheckisHackageDistErrorfilterPackageChecksByIdfilterPackageChecksByIdStringppCheckExplanationIdReadErunReadE succeedReadE failReadE parsecToReadEparsecToReadEErrunexpectMsgString$fFunctorReadE%Distribution.Types.PackageDescription getComponentlookupComponentpkgBuildableComponents pkgComponentsdesugarBuildToolSimpledesugarBuildToolgetAllToolDependencies isInternalgetAllInternalToolDependenciesDistribution.Types.Component ComponentcomponentBuildableBuildWay StaticWayDynWayProfWay ProfDynWaybuildWayPrefix $fEqBuildWay $fOrdBuildWay$fShowBuildWay$fReadBuildWay$fEnumBuildWayCDialectC ObjectiveC CPlusPlusObjectiveCPlusPluscSourceExtensionscDialectFilenameExtensionfilenameCDialect$fSemigroupCDialect$fMonoidCDialect $fEqCDialect$fShowCDialect BooleanFlagasBoolFlagNoFlagtoFlagfromFlagfromFlagOrDefault flagToMaybeflagElim flagToListallFlags maybeToFlag mergeListFlag $fEnumFlag $fBoundedFlag$fSemigroupFlag $fMonoidFlag$fApplicativeFlag $fFunctorFlag$fStructuredFlag $fBinaryFlag$fBooleanFlagBool$fEqFlag $fGenericFlag $fShowFlag $fReadFlag$fFoldableFlag$fTraversableFlag GlobPieceWildCardLiteralUnion GlobPiecesGlobGlobDirGlobDirRecursiveGlobFileGlobDirTrailingdispGlobPiecesisGlobEscapedChar$fStructuredGlobPiece$fBinaryGlobPiece $fParsecGlob $fPrettyGlob$fStructuredGlob $fBinaryGlob$fEqGlob $fShowGlob $fGenericGlob $fEqGlobPiece$fShowGlobPiece$fGenericGlobPieceMonitorKindDir DirExists DirModTime DirNotExistsMonitorKindFile FileExists FileModTime FileHashed FileNotExistsMonitorFilePath MonitorFileMonitorFileGlobmonitorKindFilemonitorKindDir monitorPathmonitorPathGlob FilePathRootFilePathRelativeFilePathHomeDir RootedGlob monitorFilemonitorFileHashedmonitorNonExistentFilemonitorFileExistencemonitorDirectorymonitorNonExistentDirectorymonitorDirectoryExistencemonitorFileOrDirectorymonitorFileGlobmonitorFileGlobExistencemonitorFileSearchPathmonitorFileHashedSearchPath$fParsecFilePathRoot$fPrettyFilePathRoot$fStructuredFilePathRoot$fBinaryFilePathRoot$fParsecRootedGlob$fPrettyRootedGlob$fStructuredRootedGlob$fBinaryRootedGlob$fStructuredMonitorKindFile$fBinaryMonitorKindFile$fStructuredMonitorKindDir$fBinaryMonitorKindDir$fStructuredMonitorFilePath$fBinaryMonitorFilePath$fEqMonitorFilePath$fShowMonitorFilePath$fGenericMonitorFilePath$fEqMonitorKindDir$fShowMonitorKindDir$fGenericMonitorKindDir$fEqMonitorKindFile$fShowMonitorKindFile$fGenericMonitorKindFile$fEqRootedGlob$fShowRootedGlob$fGenericRootedGlob$fEqFilePathRoot$fShowFilePathRoot$fGenericFilePathRootPathTemplateVariable PrefixVar BindirVar LibdirVar LibsubdirVar DynlibdirVar DatadirVar DatasubdirVar DocdirVar HtmldirVar PkgNameVar PkgVerVarPkgIdVar LibNameVar CompilerVarOSVarArchVarAbiVar AbiTagVarExecutableNameVarTestSuiteNameVarTestSuiteResultVarBenchmarkNameVar PathComponentOrdinaryVariable$fReadPathTemplateVariable$fShowPathTemplateVariable $fStructuredPathTemplateVariable$fBinaryPathTemplateVariable$fReadPathComponent$fShowPathComponent$fStructuredPathComponent$fBinaryPathComponent$fEqPathComponent$fOrdPathComponent$fGenericPathComponent$fEqPathTemplateVariable$fOrdPathTemplateVariable$fGenericPathTemplateVariablePathTemplateEnv PathTemplateCopyDest NoCopyDestCopyToCopyToDbInstallDirTemplates InstallDirsprefixbindirlibdir libsubdir dynlibdirflibdir libexecdir libexecsubdir includedirdatadir datasubdirdocdirmandirhtmldir haddockdir sysconfdircombineInstallDirsdefaultInstallDirsdefaultInstallDirs'substituteInstallDirTemplatesabsoluteInstallDirsprefixRelativeInstallDirstoPathTemplatefromPathTemplatecombinePathTemplatesubstPathTemplateinitialPathTemplateEnvpackageTemplateEnvcompilerTemplateEnvplatformTemplateEnvabiTemplateEnvinstallDirsTemplateEnv$fSemigroupInstallDirs$fMonoidInstallDirs$fStructuredInstallDirs$fBinaryInstallDirs$fStructuredCopyDest$fBinaryCopyDest$fReadPathTemplate$fShowPathTemplate$fStructuredPathTemplate$fBinaryPathTemplate$fEqPathTemplate$fOrdPathTemplate$fGenericPathTemplate $fEqCopyDest$fShowCopyDest$fGenericCopyDest$fEqInstallDirs$fReadInstallDirs$fShowInstallDirs$fFunctorInstallDirs$fGenericInstallDirsdropWhileEndLEequating fromUTF8BS fromUTF8LBS ignoreBOMisRelativeOnAnyPlatform listUnionlistUnionRight lowercasenormaliseLineEndingsordNubordNubBy ordNubRight readUTF8FilesafeHeadsafeInitsafeLastsafeTailtakeWhileEndLEtoUTF8BS toUTF8LBS uninterspersewithFileContentswithUTF8FileContentswrapLinewrapTextwriteFileAtomic writeUTF8FilestripExtractVersionResultPassFailErrorProgressFinishedOptionsGroup ExtraOptions groupName concurrently groupTests OptionType OptionFile OptionString OptionNumber OptionBool OptionEnum OptionSet OptionRngSeedoptionFileMustExistoptionFileIsDiroptionFileExtensionsoptionStringMultilineoptionNumberIsIntoptionNumberBounds OptionDescr optionNameoptionDescription optionType optionDefault TestInstancerunnametagsoptions setOption testGroup $fEqResult $fReadResult $fShowResult$fEqOptionDescr$fReadOptionDescr$fShowOptionDescr$fEqOptionType$fReadOptionType$fShowOptionType AnnotatedIdann_pid ann_cnameann_id$fPackageAnnotatedId$fOrdAnnotatedId$fEqAnnotatedId$fShowAnnotatedId$fFunctorAnnotatedIdComponentInclude ci_ann_id ci_renaming ci_implicitci_idci_pkgidci_cnameComponentLocalBuildInfoLibComponentLocalBuildInfoFLibComponentLocalBuildInfoExeComponentLocalBuildInfoTestComponentLocalBuildInfoBenchComponentLocalBuildInfocomponentLocalNamecomponentComponentIdcomponentUnitIdcomponentIsIndefinite_componentInstantiatedWithcomponentPackageDepscomponentIncludescomponentExeDepscomponentInternalDepscomponentCompatPackageKeycomponentCompatPackageNamecomponentExposedModulescomponentIsPubliccomponentIsIndefinitemaybeComponentInstantiatedWith$fIsNodeComponentLocalBuildInfo#$fStructuredComponentLocalBuildInfo$fBinaryComponentLocalBuildInfo $fGenericComponentLocalBuildInfo$fReadComponentLocalBuildInfo$fShowComponentLocalBuildInfo DumpBuildInfoNoDumpBuildInfo$fStructuredDumpBuildInfo$fBinaryDumpBuildInfo$fReadDumpBuildInfo$fShowDumpBuildInfo$fEqDumpBuildInfo$fOrdDumpBuildInfo$fEnumDumpBuildInfo$fBoundedDumpBuildInfo$fGenericDumpBuildInfoPromisedComponentpromisedComponentPackagepromisedComponentNamepromisedComponentIdGivenComponentgivenComponentPackagegivenComponentNamegivenComponentId$fStructuredGivenComponent$fBinaryGivenComponent$fStructuredPromisedComponent$fBinaryPromisedComponent$fGenericPromisedComponent$fReadPromisedComponent$fShowPromisedComponent$fEqPromisedComponent$fGenericGivenComponent$fReadGivenComponent$fShowGivenComponent$fEqGivenComponent nonExistentPackageThisIsCabalBugfakePackageNamefakePackageCabalFileName fakePackageIdParStratInstallParStrat ParStratXNumJobsUseSemSerialisParallelBuild$fShowParStratXcomponentBuildInfo componentName foldComponentCBenchCExeCFLibCLibCTest TargetInfo targetCLBItargetComponent$fIsNodeTargetInfo$fStructuredTargetInfo$fBinaryTargetInfo$fGenericTargetInfo$fShowTargetInfo IODataModeIODataModeTextIODataModeBinaryKnownIODataModehGetIODataContentstoIOData iodataModeIOData IODataText IODataBinary withIODatanull hPutContents$fNFDataIOData$fKnownIODataModeByteString$fKnownIODataModeListJson JsonArrayJsonBoolJsonNull JsonNumber JsonObject JsonString renderJson.= $fShowJson mapAccumM$fApplicativeStateM$fFunctorStateM stepProgress failProgress foldProgress$fAlternativeProgress$fApplicativeProgress$fMonadProgress$fFunctorProgress VerbosityFlag VCallStack VCallSiteVNoWrap VMarkOutput VTimestampVStderrVNoWarnVerbosityLevelSilentNormalVerbose Deafening$fStructuredVerbosityLevel$fBinaryVerbosityLevel$fStructuredVerbosityFlag$fBinaryVerbosityFlag$fGenericVerbosityFlag$fShowVerbosityFlag$fReadVerbosityFlag$fEqVerbosityFlag$fOrdVerbosityFlag$fEnumVerbosityFlag$fBoundedVerbosityFlag$fGenericVerbosityLevel$fShowVerbosityLevel$fReadVerbosityLevel$fEqVerbosityLevel$fOrdVerbosityLevel$fEnumVerbosityLevel$fBoundedVerbosityLevelsilentnormalverbose deafening moreVerbose lessVerbosemodifyVerbosityintToVerbosityflagToVerbosity showForCabal showForGHCverboseCallSiteverboseCallStackverboseMarkOutputverboseUnmarkOutput verboseNoWrapverboseTimestampverboseNoTimestamp verboseStderrverboseNoStderr verboseNoWarnverboseNoFlagsverboseHasFlagsisVerboseCallSiteisVerboseCallStackisVerboseMarkOutputisVerboseNoWrapisVerboseQuietisVerboseTimestampisVerboseStderrisVerboseNoWarn$fPrettyVerbosity$fParsecVerbosity$fStructuredVerbosity$fBinaryVerbosity$fBoundedVerbosity$fEnumVerbosity$fOrdVerbosity $fEqVerbosity$fGenericVerbosity$fShowVerbosity$fReadVerbosityDict RuleExecCmdRuleDynDepsCmdRuleCmdsDepsResdepsRes DynDepsCmd dynDepsCmd RuleCommandsStaticRuleCommandDynamicRuleCommandsstaticRuleCommandstaticRuleArgRepdynamicRuleInstances dynamicDepsdynamicRuleCommanddynamicRuleTypeRep CommandDataCommand actionPtr actionArg cmdInstancesStaticRulesrunRulesRulesT runRulesTRulesEnvrulesEnvVerbosityrulesEnvNameSpaceRulesM RuleOutput outputOfRule outputIndex DependencyRuleDependencyFileDependencyLocationlocationBaseDirlocationRelPathRuleDataRule ruleCommandsstaticDependenciesresults RuleBinarySScopeSUserSSystemScopeUserSystemRuleId ruleNameSpaceruleName SystemStatic userStaticKey UserStatic userStaticPtr staticRule dynamicRulelocationnoRulesrules computeRules mkCommand runCommand ruleDepsCmdrunRuleDynDepsCmd ruleExecCmdrunRuleExecCmd ruleBinary$fShowLocation$fBinaryLocation $fOrdLocation $fEqLocation$fBinaryStatic $fOrdStatic $fEqStatic $fShowStatic$fBinaryScopedArgument$fBinaryScopedArgument0$fBinaryRuleCommands$fBinaryRuleCommands0$fEqRuleCommands$fEqRuleCommands0$fShowRuleCommands$fBinaryCommandData$fBinaryCommandData0$fEqCommandData$fEqCommandData0$fShowCommandData$fShowRuleData$fMonadTransRulesT $fMonoidRules$fSemigroupRules$fStructuredLocation$fFunctorRulesT$fApplicativeRulesT $fMonadRulesT$fMonadIORulesT$fMonadFixRulesT$fGenericRuleData $fShowDepsRes $fEqDepsRes $fOrdDepsRes$fGenericNoCmd $fEqNoCmd $fOrdNoCmd $fShowNoCmd $fBinaryNoCmd$fEqScopedArgument$fOrdScopedArgument$fShowScopedArgument $fEqStatic0 $fOrdStatic0 $fShowStatic0$fBinaryStatic0$fShowDependency$fEqDependency$fOrdDependency$fGenericDependency$fBinaryDependency$fStructuredDependency$fShowRuleOutput$fEqRuleOutput$fOrdRuleOutput$fGenericRuleOutput$fBinaryRuleOutput$fStructuredRuleOutput $fShowRuleId $fEqRuleId $fOrdRuleId$fGenericRuleId$fBinaryRuleId$fStructuredRuleId$fShowRulesNameSpace$fEqRulesNameSpace$fOrdRulesNameSpace$fGenericRulesNameSpace$fBinaryRulesNameSpace$fStructuredRulesNameSpace$fBinaryDepsRes$fBinaryDynDepsCmd$fEqDynDepsCmd$fBinaryDynDepsCmd0$fEqDynDepsCmd0$fShowDynDepsCmd$fBinaryRuleData$fBinaryRuleData0 $fEqRuleData $fEqRuleData0$fShowRuleData0IllegalComponentDiffReasonCannotChangeNameCannotChangeComponentFieldCannotChangeBuildInfoFieldCannotApplyComponentDiffReasonMismatchedComponentTypesIllegalComponentDiffRulesExceptionCyclicRuleDependencies!CantFindSourceForRuleDependenciesMissingRuleOutputsInvalidRuleOutputIndexDuplicateRuleIdSetupHooksExceptionCannotApplyComponentDiffsetupHooksExceptionCodesetupHooksExceptionMessage$fShowSetupHooksException$$fShowCannotApplyComponentDiffReason $fShowIllegalComponentDiffReason$fShowRulesExceptionProgramLocation UserSpecified FoundOnSystem locationPathConfiguredProgram programIdprogramVersionprogramDefaultArgsprogramOverrideArgsprogramOverrideEnvprogramPropertiesprogramLocationprogramMonitorFilesProgramSearchPathEntryProgramSearchPathDirProgramSearchPathDefaultProgramSearchPathProgArgProgram programNameprogramFindLocationprogramFindVersionprogramPostConfprogramNormaliseArgs programPathsuppressOverrideArgssimpleConfiguredProgram"$fStructuredProgramSearchPathEntry$fBinaryProgramSearchPathEntry$fStructuredProgramLocation$fBinaryProgramLocation$fStructuredConfiguredProgram$fBinaryConfiguredProgram $fShowProgram$fEqConfiguredProgram$fGenericConfiguredProgram$fReadConfiguredProgram$fShowConfiguredProgram$fEqProgramLocation$fGenericProgramLocation$fReadProgramLocation$fShowProgramLocation$fShowProgramSearchPathEntry$fEqProgramSearchPathEntry$fGenericProgramSearchPathEntrySuffixPreProcessCommand PreProcessorplatformIndependent ppOrderingrunPreProcessorbuiltinHaskellSuffixesbuiltinHaskellBootSuffixes$fStructuredSuffix$fBinarySuffix$fPrettySuffix $fEqSuffix $fOrdSuffix $fShowSuffix$fGenericSuffix$fIsStringSuffixCabalExceptionNoBenchMarkProgramEnableBenchMarkBenchMarkNameDisabled NoBenchMarkNoLibraryFoundCompilerNotInstalledCantFindIncludeFileUnsupportedTestSuiteUnsupportedBenchMarkNoIncludeFileFound NoModuleFoundRegMultipleInstancePkgSuppressingChecksOnFileNoSupportDirStylePackageDbOnlySupportSpecificPackageDbFailedToParseOutputDescribe DumpFailedFailedToParseOutputDump ListFailedFailedToParseOutputListProgramNotFoundNoSupportForHoogleNoSupportForQuickJumpFlagNoGHCVersionFromHaddockNoGHCVersionFromCompilerHaddockAndGHCVersionDoesntMatchMustHaveSharedLibrariesHaddockPackageFlagsUnknownCompilerFlavorFailedToDetermineTargetNoMultipleTargetsREPLNotSupportedNoSupportBuildingTestSuiteNoSupportBuildingBenchMark BuildingNotSupportedWithCompilerProvideHaskellSuiteToolCannotDetermineCompilerVersion PkgDumpFailedFailedToParseOutputCantFindSourceModuleVersionMismatchJSVersionMismatchGHCJSGlobalPackageDBLimitationGlobalPackageDBSpecifiedFirstMatchDirFileGlobMatchDirFileGlobErrorsErrorParsingFileDoesntExist FailedParsing NotFoundMsgUnrecognisedBuildTargetReportBuildTargetProblemsUnknownBuildTargetAmbiguousBuildTargetCheckBuildTargetsVersionMismatchGHCCheckPackageDbStackPost76CheckPackageDbStackPre76GlobalPackageDbSpecifiedFirstCantInstallForeignLibNoSupportForPreProcessingTest"NoSupportForPreProcessingBenchmarkCantFindSourceForPreProcessFile NoSupportPreProcessingTestExtras%NoSupportPreProcessingBenchmarkExtrasUnlitExceptionRunProgramInvocationExceptionGetProgramInvocationException GetProgramInvocationLBSExceptionCheckSemaphoreSupportNoLibraryForPackageSanityCheckHookedBuildInfoConfigureScriptNotFoundNoValidComponentConfigureEitherSingleOrAllConfigCIDValidForPreComponentSanityCheckForEnableComponents"SanityCheckForDynamicStaticLinkingUnsupportedLanguagesUnsupportedLanguageExtensionCantFindForeignLibrariesExpectedAbsoluteDirectoryFlagsNotSpecifiedEncounteredMissingDependencyCompilerDoesn'tSupportThinningCompilerDoesn'tSupportReexportsCompilerDoesn'tSupportBackpackLibraryWithinSamePackageReportFailedDependenciesNoPackageDatabaseSpecifiedHowToFindInstalledPackagesPkgConfigNotFound BadVersionUnknownCompilerException NoWorkingGcc NoOSSupportNoCompilerSupportInstallDirsNotPrefixRelative ExplainErrorsCheckPackageProblemsLibDirDepsPrefixNotRelativeCombinedConstraintsCantParseGHCOutputIncompatibleWithCabalCouldn'tFindTestProgramTestCoverageSupportCouldn'tFindTestProgLibV09TestCoverageSupportLibV09RawSystemStdoutFindFileFindModuleFileExMultipleFilesWithExtensionRelocRegistrationInfoCreatePackageDB WithHcPkgRegisMultiplePkgNotSupportedRegisteringNotImplementedNoTestSuitesEnabledTestNameDisabled NoSuchTestConfigureProgramRequireProgramNoProgramFound BadVersionDbUnknownVersionDbMissingCoveredInstalledLibraryFailedDependencyDependencyNotExistsDependencyMissingInternalDependencyNoVersion exceptionCodeexceptionMessage$fShowCabalException$fShowFailedDependencyplainunlitTempFileOptionsoptKeepTempFilesVerboseException cabalVersiondieNoVerbositydieWithLocation'die'dieWithException dieNoWraptopHandlerWith topHandlerwarn warnErrornotice noticeNoWrap noticeDoc setupMessageinfo infoNoWrapdebug debugNoWrap chattyTryhandleDoesNotExistwithOutputMarkerexceptionWithMetadataexceptionWithCallStackPrefix maybeExit rawSystemExitrawSystemExitCode rawSystemProcrawSystemProcActionfromCreatePiperawSystemExitWithEnvrawSystemExitWithEnvCwdrawSystemIOWithEnvrawSystemIOWithEnvAndActionrawSystemStdoutrawSystemStdInOut ignoreSigPipefindProgramVersionxargs findFileCwd findFileExfindFileWithExtensionfindFileCwdWithExtensionfindAllFilesCwdWithExtensionfindAllFilesWithExtensionfindFileWithExtension'findFileCwdWithExtension' findFirstFilefindModuleFilesExfindModuleFilesCwdfindModuleFileExfindModuleFileCwdgetDirectoryContentsRecursiveisInSearchPathaddLibraryPathmoreRecentFileexistsAndIsMoreRecentThancreateDirectoryIfMissingVerbosecopyFileVerboseinstallOrdinaryFileinstallExecutableFileinstallMaybeExecutableFile copyFileTo copyFileToCwd copyFilesinstallOrdinaryFilesinstallExecutableFilesinstallMaybeExecutableFilesinstallDirectoryContentscopyDirectoryRecursivedoesExecutableExistdefaultTempFileOptions withTempFilewithTempFileCwdwithTempFileExwithTempDirectorywithTempDirectoryCwdwithTempDirectoryExwithTempDirectoryCwdEx rewriteFileExrewriteFileLBSshortRelativePathdropExeExtension exeExtensionsdefaultPackageDescCwdtryFindPackageDescfindHookedPackageDesc$fExceptionVerboseException $fEqTraceWhen$fShowVerboseExceptionNubListR fromNubListRNubList fromNubList toNubList overNubList toNubListR overNubListR$fStructuredNubList$fBinaryNubList $fReadNubList $fShowNubList$fSemigroupNubList$fMonoidNubList$fReadNubListR$fShowNubListR$fSemigroupNubListR$fMonoidNubListR $fEqNubListR $fEqNubList$fGenericNubList LogProgressrunLogProgress warnProgress infoProgress dieProgressaddProgressCtx$fMonadLogProgress$fApplicativeLogProgress$fFunctorLogProgress IOEncodingIOEncodingTextIOEncodingUTF8ProgramInvocationprogInvokePathprogInvokeArgs progInvokeEnv progInvokeCwdprogInvokeInputprogInvokeInputEncodingprogInvokeOutputEncodingemptyProgramInvocationsimpleProgramInvocationprogramInvocationprogramInvocationCwdrunProgramInvocationgetProgramInvocationOutputgetProgramInvocationLBS#getProgramInvocationOutputAndErrors getProgramInvocationLBSAndErrorsgetEffectiveEnvironmentmultiStageProgramInvocationinvocationAsSystemScriptinvocationAsShellScriptinvocationAsBatchFilewithResponseFilemarkupuniondefaultProgramSearchPathlogExtraProgramSearchPathlogExtraProgramOverrideEnvfindProgramOnSearchPathgetExtraPathEnvprogramSearchPathAsPATHVargetSystemSearchPath simpleProgram SearchResultNone Unambiguous AmbiguousInstalledPackageIndex PackageIndexfromListmergeinsert deleteUnitIddeleteSourcePackageIddeletePackageName allPackagesallPackagesByNameallPackagesBySourcePackageId&allPackagesBySourcePackageIdAndLibName lookupUnitIdlookupComponentIdlookupSourcePackageIdlookupPackageIdlookupPackageNamelookupDependencylookupInternalDependency searchByNamesearchByNameSubstringsearchWithPredicatedependencyCyclesbrokenPackagesdependencyClosurereverseDependencyClosuretopologicalOrderreverseTopologicalOrderdependencyGraphdependencyInconsistenciesmoduleNameIndex$fSemigroupPackageIndex$fMonoidPackageIndex$fStructuredPackageIndex$fBinaryPackageIndex$fEqPackageIndex$fGenericPackageIndex$fShowPackageIndex$fReadPackageIndexreadGenericPackageDescriptionreadHookedBuildInfo parseString GlobResult GlobMatchGlobWarnMultiDotGlobMissingDirectoryGlobMatchesDirectoryStarInDirectoryStarInFileNameStarInExtensionNoExtensionOnStar EmptyGlobLiteralFileNameGlobStarVersionDoesNotSupportGlobStarVersionDoesNotSupportGlob matchGlobmatchGlobPieces globMatchesmatchDirFileGlobmatchDirFileGlobWithDie parseFileGlobexplainGlobSyntaxErrorrunDirFileGlobisRecursiveInRootfileGlobMatches$fShowGlobResult$fEqGlobResult$fOrdGlobResult$fFunctorGlobResult$fEqGlobSyntaxError$fShowGlobSyntaxErrorCheckPackageContentOps doesFileExistdoesDirectoryExistgetDirectoryContentsgetFileContentsProfDetailLevelProfDetailNoneProfDetailDefaultProfDetailExportedFunctionsProfDetailToplevelFunctionsProfDetailAllFunctionsProfDetailTopLateProfDetailOther CompilerFlagDebugInfoLevel NoDebugInfoMinimalDebugInfoNormalDebugInfoMaximalDebugInfoOptimisationLevelNoOptimisationNormalOptimisationMaximumOptimisationPackageDBStackCWD PackageDBCWDPackageDBStackS PackageDBSPackageDBStack PackageDBPackageDBStackX PackageDBXGlobalPackageDB UserPackageDBSpecificPackageDBCompiler compilerIdcompilerAbiTagcompilerCompatcompilerLanguagescompilerExtensionscompilerPropertiesshowCompilerIdshowCompilerIdWithAbicompilerFlavorcompilerVersioncompilerCompatFlavorcompilerCompatVersion compilerInforegistrationPackageDBabsolutePackageDBPathsabsolutePackageDBPathinterpretPackageDBinterpretPackageDBStackcoercePackageDBcoercePackageDBStackflagToOptimisationLevelflagToDebugInfoLevelunsupportedLanguageslanguageToFlagsunsupportedExtensionsextensionsToFlagsparmakeSupportedreexportedModulesSupportedrenamingPackageFlagsSupportedunifiedIPIDRequiredpackageKeySupportedunitIdSupportedbackpackSupported jsemSupportedlibraryDynDirSupportedarResponseFilesSupportedarDashLSupportedcoverageSupportedprofilingSupported"profilingVanillaSupportedOrUnknownprofilingVanillaSupportedprofilingDynamicSupported"profilingDynamicSupportedOrUnknowndynamicSupportedlibraryVisibilitySupportedflagToProfDetailLevelknownProfDetailLevelsshowProfDetailLevel$fStructuredPackageDBX$fBinaryPackageDBX$fStructuredOptimisationLevel$fBinaryOptimisationLevel$fStructuredDebugInfoLevel$fBinaryDebugInfoLevel$fStructuredCompiler$fBinaryCompiler$fStructuredProfDetailLevel$fBinaryProfDetailLevel$fEqProfDetailLevel$fGenericProfDetailLevel$fReadProfDetailLevel$fShowProfDetailLevel $fEqCompiler$fGenericCompiler$fShowCompiler$fReadCompiler$fBoundedDebugInfoLevel$fEnumDebugInfoLevel$fEqDebugInfoLevel$fGenericDebugInfoLevel$fReadDebugInfoLevel$fShowDebugInfoLevel$fBoundedOptimisationLevel$fEnumOptimisationLevel$fEqOptimisationLevel$fGenericOptimisationLevel$fReadOptimisationLevel$fShowOptimisationLevel$fEqPackageDBX$fGenericPackageDBX$fOrdPackageDBX$fShowPackageDBX$fReadPackageDBX$fFunctorPackageDBX$fFoldablePackageDBX$fTraversablePackageDBXRegisterOptionsregisterAllowOverwriteregisterMultiInstanceregisterSuppressFilesCheck HcPkgInfo hcPkgProgram noPkgDbStack noVerboseFlagflagPackageConfsupportsDirDbsrequiresDirDbsnativeMultiInstancerecacheMultiInstancesuppressFilesCheckinitinvokedefaultRegisterOptionsregister unregisterrecacheexposedescribehidedumplistinitInvocationregisterInvocationunregisterInvocationrecacheInvocationexposeInvocationdescribeInvocationhideInvocationdumpInvocationlistInvocation GhcImplInfosupportsHaskell2010supportsGHC2021supportsGHC2024 reportsNoExtalwaysNondecIndentflagGhciScript flagProfAuto flagProfLate flagDebugInfoflagHiesupportsDebugLevelssupportsPkgEnvFilesflagWarnMissingHomeModules unitIdForExes getImplInfo GhcProfAutoGhcProfAutoAllGhcProfAutoToplevelGhcProfAutoExported GhcProfLateGhcDynLinkMode GhcStaticOnlyGhcDynamicOnlyGhcStaticAndDynamicGhcOptimisationGhcNoOptimisationGhcNormalOptimisationGhcMaximumOptimisationGhcSpecialOptimisationGhcModeGhcModeCompile GhcModeLink GhcModeMakeGhcModeInteractiveGhcModeAbiHash GhcOptions ghcOptMode ghcOptExtraghcOptExtraDefaultghcOptInputFilesghcOptInputScriptsghcOptInputModulesghcOptOutputFileghcOptOutputDynFileghcOptSourcePathClearghcOptSourcePathghcOptThisUnitIdghcOptThisComponentIdghcOptInstantiatedWith ghcOptNoCodeghcOptPackageDBsghcOptPackagesghcOptHideAllPackagesghcOptWarnMissingHomeModulesghcOptNoAutoLinkPackagesghcOptLinkLibsghcOptLinkLibPathghcOptLinkOptionsghcOptLinkFrameworksghcOptLinkFrameworkDirs ghcOptLinkRts ghcOptNoLinkghcOptLinkNoHsMainghcOptLinkModDefFilesghcOptCcOptionsghcOptCxxOptionsghcOptAsmOptionsghcOptCppOptionsghcOptCppIncludePathghcOptCppIncludesghcOptFfiIncludesghcOptCcProgramghcOptLanguageghcOptExtensionsghcOptExtensionMapghcOptOptimisationghcOptDebugInfoghcOptProfilingModeghcOptProfilingAutoghcOptSplitSectionsghcOptSplitObjs ghcOptNumJobs ghcOptHPCDirghcOptGHCiScriptsghcOptHiSuffixghcOptObjSuffixghcOptDynHiSuffixghcOptDynObjSuffix ghcOptHiDir ghcOptHieDir ghcOptObjDirghcOptOutputDir ghcOptStubDirghcOptDynLinkModeghcOptStaticLib ghcOptShared ghcOptFPicghcOptDylibName ghcOptRPathsghcOptVerbosityghcOptExtraPath ghcOptCabalnormaliseGhcArgsrunGHC ghcInvocationrenderGhcOptionspackageDbArgsDb$fSemigroupGhcOptions$fMonoidGhcOptions$fShowGhcOptions$fGenericGhcOptions$fShowGhcProfAuto$fEqGhcProfAuto$fShowGhcDynLinkMode$fEqGhcDynLinkMode$fShowGhcOptimisation$fEqGhcOptimisation $fShowGhcMode $fEqGhcModebuiltinPrograms ghcProgram runghcProgram ghcPkgProgram ghcjsProgramghcjsPkgProgram hmakeProgram jhcProgram uhcProgram hpcProgramhaskellSuiteProgramhaskellSuitePkgProgram happyProgram alexProgram gccProgram arProgram stripProgram hsc2hsProgram c2hsProgram cpphsProgramhscolourProgramdoctestProgramhaddockProgramgreencardProgram ldProgram tarProgram cppProgrampkgConfigProgramConfiguredProgsUnconfiguredProgs ProgramDbunconfiguredProgsprogSearchPathprogOverrideEnvconfiguredProgsemptyProgramDbdefaultProgramDbupdateUnconfiguredProgsupdateConfiguredProgsrestoreProgramDbaddKnownProgramaddKnownProgramslookupKnownProgram knownProgramsgetProgramSearchPathsetProgramSearchPathmodifyProgramSearchPathprependProgramSearchPath!prependProgramSearchPathNoLogginguserSpecifyPathuserMaybeSpecifyPathuserSpecifyArgsuserSpecifyPathsuserSpecifyArgssuserSpecifiedArgs lookupProgramlookupProgramByName updateProgramconfiguredProgramsconfigureProgramconfigureUnconfiguredProgramunconfigureProgramconfigureAllKnownProgramsreconfigureProgramsrequireProgram needProgramlookupProgramVersionrequireProgramVersion$fStructuredProgramDb$fBinaryProgramDb$fReadProgramDb$fShowProgramDb runProgram runProgramCwdgetProgramOutput runDbProgramrunDbProgramCwdgetDbProgramOutputgetDbProgramOutputCwdstripExestripLib CommandSpec CommandType NormalCommand HiddenCommand CommandParse CommandHelp CommandList CommandErrorsCommandReadyToGo MkOptDescrArgPlaceHolderOptFlagsLFlagsSFlagsOptDescrReqArgOptArg ChoiceOptBoolOpt OptionField optionDescr DescriptionNameShowOrParseArgsShowArgs ParseArgs CommandUI commandNamecommandSynopsis commandUsagecommandDescription commandNotescommandDefaultFlagscommandOptions fmapOptDescroption multiOptionreqArgoptArgreqArg'optArg' optArgDef'noArgboolOptboolOpt' choiceOptchoiceOptFromEnum liftOption liftOptionLcommandShowOptions usageDefaultusageAlternatives mkCommandUIcommandParseArgs hiddenCommandcommandAddAction commandsRundefaultCommandFallbackcommandsRunWithFallback noExtraFlagsgetNormalCommandDescriptions helpCommandUIcommandFromSpec$fFunctorCommandParseCommonSetupFlagssetupVerbositysetupWorkingDir setupDistPrefsetupCabalFilePath setupTargetsdefaultCommonSetupFlagsdefaultDistPrefprogramFlagsDescriptionprogramDbPaths'programDbOptionstrueArgfalseArgoptionDistPrefoptionVerbosityconfigureCCompilerconfigureLinker splitArgs TestFlagstestCommonFlags testHumanLogtestMachineLogtestShowDetails testKeepTix testWrappertestFailWhenNoTestSuites testOptionsTestShowDetailsNeverFailuresAlways StreamingDirectTestCommonFlags testVerbosity testDistPreftestWorkingDirtestCabalFilePath testTargetsdefaultTestFlags testCommand testOptions'emptyTestFlags SDistFlagssDistCommonFlags sDistSnapshotsDistDirectorysDistListSourcesSDistCommonFlagssDistVerbosity sDistDistPrefsDistWorkingDirsDistCabalFilePath sDistTargetsdefaultSDistFlags sdistCommandemptySDistFlags ReplFlagsreplCommonFlagsreplProgramPathsreplProgramArgs replReloadreplReplOptions ReplOptionsreplOptionsFlagsreplOptionsNoLoadreplOptionsFlagOutputReplCommonFlags replVerbosity replDistPrefreplWorkingDirreplCabalFilePath replTargetsdefaultReplFlags replCommand replOptions RegisterFlagsregisterCommonFlags regPackageDB regGenScript regGenPkgConf regInPlace regPrintIdRegisterCommonFlagsregisterVerbosityregisterDistPrefregisterWorkingDirregisterCabalFilePathregisterTargetsdefaultRegisterFlagsregisterCommandunregisterCommandemptyRegisterFlags InstallFlagsinstallCommonFlagsinstallPackageDB installDestinstallUseWrapperinstallInPlaceInstallCommonFlagsinstallVerbosityinstallDistPrefinstallWorkingDirinstallCabalFilePathinstallTargetsdefaultInstallFlagsinstallCommandemptyInstallFlags HscolourFlagshscolourCommonFlags hscolourCSShscolourExecutableshscolourTestSuiteshscolourBenchmarkshscolourForeignLibsHscolourCommonFlagshscolourVerbosityhscolourDistPrefhscolourWorkingDirhscolourCabalFilePathhscolourTargetsemptyHscolourFlagsdefaultHscolourFlagshscolourCommandHaddockProjectFlagshaddockProjectHackagehaddockProjectDirhaddockProjectProloguehaddockProjectInterfaceshaddockProjectProgramPathshaddockProjectProgramArgshaddockProjectHooglehaddockProjectHtmlLocationhaddockProjectExecutableshaddockProjectTestSuiteshaddockProjectBenchmarkshaddockProjectForeignLibshaddockProjectInternalhaddockProjectCsshaddockProjectHscolourCsshaddockProjectKeepTempFileshaddockProjectVerbosityhaddockProjectResourcesDirhaddockProjectUseUnicode VisibilityVisibleHidden HaddockFlagshaddockCommonFlagshaddockProgramPathshaddockProgramArgs haddockHoogle haddockHtmlhaddockHtmlLocationhaddockForHackagehaddockExecutableshaddockTestSuiteshaddockBenchmarkshaddockForeignLibshaddockInternal haddockCsshaddockLinkedSourcehaddockQuickJumphaddockHscolourCsshaddockContents haddockIndexhaddockKeepTempFileshaddockBaseUrlhaddockResourcesDirhaddockOutputDirhaddockUseUnicode HaddockTarget ForHackageForDevelopmentHaddockCommonFlagshaddockVerbosityhaddockDistPrefhaddockWorkingDirhaddockCabalFilePathhaddockTargetsdefaultHaddockFlagshaddockCommandhaddockOptionsemptyHaddockFlagsdefaultHaddockProjectFlagshaddockProjectCommandhaddockProjectOptionsemptyHaddockProjectFlags GlobalFlags globalVersionglobalNumericVersionglobalWorkingDirdefaultGlobalFlags globalCommandemptyGlobalFlags CopyFlagscopyCommonFlagscopyDestCopyCommonFlags copyVerbosity copyDistPrefcopyWorkingDircopyCabalFilePath copyTargetsdefaultCopyFlags copyCommandemptyCopyFlagsconfigCommonFlagsconfigPrograms_configProgramPathsconfigProgramArgsconfigProgramPathExtraconfigHcFlavor configHcPath configHcPkgconfigVanillaLib configProfLibconfigSharedLibconfigStaticLib configDynExeconfigFullyStaticExe configProfExe configProfconfigProfSharedconfigProfDetailconfigProfLibDetailconfigConfigureArgsconfigOptimizationconfigProgPrefixconfigProgSuffixconfigInstallDirsconfigScratchDirconfigExtraLibDirsconfigExtraLibDirsStaticconfigExtraFrameworkDirsconfigExtraIncludeDirs configIPID configCIDconfigDeterministicconfigUserInstallconfigPackageDBs configGHCiLibconfigSplitSectionsconfigSplitObjsconfigStripExesconfigStripLibsconfigConstraintsconfigDependenciesconfigPromisedDependenciesconfigInstantiateWithconfigConfigurationsFlags configTestsconfigBenchmarksconfigCoverageconfigLibCoverageconfigExactConfigurationconfigFlagErrorconfigRelocatableconfigDebugInfoconfigDumpBuildInfoconfigUseResponseFiles!configAllowDependingOnPrivateLibsconfigCoverageForconfigIgnoreBuildToolsConfigCommonFlagsconfigVerbosityconfigDistPrefconfigWorkingDirconfigCabalFilePath configTargetsconfigProgramsdefaultConfigFlagsconfigureCommandconfigureOptionsreadPackageDbList readPackageDbshowPackageDbList showPackageDbinstallDirsOptionsemptyConfigFlags configureArgs BuildOptions $sel:withVanillaLib:BuildOptions$sel:withProfLib:BuildOptions#$sel:withProfLibShared:BuildOptions$sel:withSharedLib:BuildOptions$sel:withStaticLib:BuildOptions$sel:withDynExe:BuildOptions$$sel:withFullyStaticExe:BuildOptions$sel:withProfExe:BuildOptions#$sel:withProfLibDetail:BuildOptions#$sel:withProfExeDetail:BuildOptions"$sel:withOptimization:BuildOptions$sel:withDebugInfo:BuildOptions$sel:withGHCiLib:BuildOptions$sel:splitSections:BuildOptions$sel:splitObjs:BuildOptions$sel:stripExes:BuildOptions$sel:stripLibs:BuildOptions$sel:exeCoverage:BuildOptions$sel:libCoverage:BuildOptions$sel:relocatable:BuildOptionsLocalBuildConfig%$sel:extraConfigArgs:LocalBuildConfig"$sel:withPrograms:LocalBuildConfig&$sel:withBuildOptions:LocalBuildConfigLocalBuildDescr&$sel:packageBuildDescr:LocalBuildDescr($sel:componentBuildDescr:LocalBuildDescrComponentBuildDescr'$sel:componentGraph:ComponentBuildDescr)$sel:componentNameMap:ComponentBuildDescr%$sel:promisedPkgs:ComponentBuildDescr&$sel:installedPkgs:ComponentBuildDescrPackageBuildDescr"$sel:configFlags:PackageBuildDescr%$sel:flagAssignment:PackageBuildDescr+$sel:componentEnabledSpec:PackageBuildDescr$sel:compiler:PackageBuildDescr#$sel:hostPlatform:PackageBuildDescr#$sel:pkgDescrFile:PackageBuildDescr$$sel:localPkgDescr:PackageBuildDescr*$sel:installDirTemplates:PackageBuildDescr$$sel:withPackageDB:PackageBuildDescr'$sel:extraCoverageFor:PackageBuildDescrbuildOptionsConfigFlags$fStructuredPackageBuildDescr$fBinaryPackageBuildDescr$fStructuredComponentBuildDescr$fBinaryComponentBuildDescr$fStructuredLocalBuildDescr$fBinaryLocalBuildDescr$fStructuredBuildOptions$fBinaryBuildOptions$fStructuredLocalBuildConfig$fBinaryLocalBuildConfig$fGenericLocalBuildConfig$fReadLocalBuildConfig$fShowLocalBuildConfig$fEqBuildOptions$fGenericBuildOptions$fReadBuildOptions$fShowBuildOptions$fGenericLocalBuildDescr$fReadLocalBuildDescr$fShowLocalBuildDescr$fGenericComponentBuildDescr$fReadComponentBuildDescr$fShowComponentBuildDescr$fGenericPackageBuildDescr$fReadPackageBuildDescr$fShowPackageBuildDescrLocalBuildInfoNewLocalBuildInfo&$sel:localBuildDescr:NewLocalBuildInfo'$sel:localBuildConfig:NewLocalBuildInfo$sel:configFlags:LocalBuildInfo"$sel:flagAssignment:LocalBuildInfo($sel:componentEnabledSpec:LocalBuildInfo#$sel:extraConfigArgs:LocalBuildInfo'$sel:installDirTemplates:LocalBuildInfo$sel:compiler:LocalBuildInfo $sel:hostPlatform:LocalBuildInfo $sel:pkgDescrFile:LocalBuildInfo"$sel:componentGraph:LocalBuildInfo$$sel:componentNameMap:LocalBuildInfo $sel:promisedPkgs:LocalBuildInfo!$sel:installedPkgs:LocalBuildInfo!$sel:localPkgDescr:LocalBuildInfo $sel:withPrograms:LocalBuildInfo!$sel:withPackageDB:LocalBuildInfo"$sel:withVanillaLib:LocalBuildInfo$sel:withProfLib:LocalBuildInfo%$sel:withProfLibShared:LocalBuildInfo!$sel:withSharedLib:LocalBuildInfo!$sel:withStaticLib:LocalBuildInfo$sel:withDynExe:LocalBuildInfo&$sel:withFullyStaticExe:LocalBuildInfo$sel:withProfExe:LocalBuildInfo%$sel:withProfLibDetail:LocalBuildInfo%$sel:withProfExeDetail:LocalBuildInfo$$sel:withOptimization:LocalBuildInfo!$sel:withDebugInfo:LocalBuildInfo$sel:withGHCiLib:LocalBuildInfo!$sel:splitSections:LocalBuildInfo$sel:splitObjs:LocalBuildInfo$sel:stripExes:LocalBuildInfo$sel:stripLibs:LocalBuildInfo$sel:exeCoverage:LocalBuildInfo$sel:libCoverage:LocalBuildInfo$$sel:extraCoverageFor:LocalBuildInfo$sel:relocatable:LocalBuildInfobuildDir buildDirPBDsetupFlagsBuildDir distPrefLBI packageRoot progPrefix progSuffixlocalComponentId localPackage localUnitIdlocalCompatPackageKeycomponentNameTargets' unitIdTarget'componentNameCLBIsallTargetsInBuildOrder'withAllTargetsInBuildOrder'neededTargetsInBuildOrder'withNeededTargetsInBuildOrder' testCoverage buildWayscomponentNameTargets unitIdTargetallTargetsInBuildOrderwithAllTargetsInBuildOrderneededTargetsInBuildOrderwithNeededTargetsInBuildOrder$fStructuredLocalBuildInfo$fBinaryLocalBuildInfo$fGenericLocalBuildInfo$fReadLocalBuildInfo$fShowLocalBuildInfocomponentBuildDirinterpretSymbolicPathLBI mbWorkDirLBIabsoluteWorkingDirLBI withLibLBI withExeLBI withBenchLBI withTestLBIenabledTestLBIsenabledBenchLBIswithAllComponentsInBuildOrderallComponentsInBuildOrderdepLibraryPaths allLibModulesabsoluteComponentInstallDirsabsoluteInstallCommandDirs"prefixRelativeComponentInstallDirsTestLogsTestLog GroupLogstestNametestOptionsReturned testResult TestSuiteLog testSuiteNametestLogslogFile PackageLogpackagecompilerplatform testSuiteslocalPackageLogcountTestResults suitePassed suiteFailed suiteErrortestSuiteLogPathsummarizePackage summarizeTestsummarizeSuiteFinishsummarizeSuiteStart$fReadPackageLog$fShowPackageLog$fEqPackageLog$fReadTestSuiteLog$fShowTestSuiteLog$fEqTestSuiteLog$fReadTestLogs$fShowTestLogs $fEqTestLogscombineObjectFilescreateArLibArchive HPCMarkupInfopathsToLibsArtifactslibsModulesToIncludeWayVanillaProfDynProfDynmixDirtixDir tixFilePathhtmlDirguessWay markupPackage $fBoundedWay $fEnumWay$fEqWay $fReadWay $fShowWaygeneratePackageInfoModulegenerateCabalMacrosHeadergeneratePackageVersionMacroscomputeComponentIdcomputeCompatPackageKeyConfiguredComponentMapConfiguredComponent cc_ann_id cc_component cc_public cc_exe_deps cc_includescc_cidcc_pkgidcc_namedispConfiguredComponenttoConfiguredComponentextendConfiguredComponentMaptoConfiguredComponentsnewPackageDepsBehaviourLinkedComponentMapLinkedComponent lc_ann_id lc_component lc_exe_deps lc_public lc_includeslc_sig_includeslc_shapelc_cidlc_pkgidlc_uidlc_instsdispLinkedComponenttoLinkedComponenttoLinkedComponentsextendLinkedComponentMap$fPackageLinkedComponentComponentsWithDepsComponentsGraphdispComponentsWithDepsmkComponentsGraphcomponentsGraphToListcomponentCycleMsg CleanFlagscleanCommonFlags cleanSaveConfCleanCommonFlagscleanVerbosity cleanDistPrefcleanWorkingDircleanCabalFilePath cleanTargetsdefaultCleanFlags cleanCommandemptyCleanFlags BuildFlagsbuildCommonFlagsbuildProgramPathsbuildProgramArgs buildNumJobsbuildUseSemaphoreBuildCommonFlagsbuildVerbosity buildDistPrefbuildWorkingDirbuildCabalFilePath buildTargetsdefaultBuildFlags buildCommand buildOptionsemptyBuildFlagsBenchmarkFlagsbenchmarkCommonFlagsbenchmarkOptionsBenchmarkCommonFlagsbenchmarkVerbositybenchmarkDistPrefbenchmarkWorkingDirbenchmarkCabalFilePathbenchmarkTargetsdefaultBenchmarkFlagsbenchmarkCommandbenchmarkOptions'emptyBenchmarkFlags BuildingWhat BuildNormal BuildRepl BuildHaddock BuildHscolourbuildingWhatCommonFlagsbuildingWhatVerbositybuildingWhatWorkingDirbuildingWhatDistPref$fStructuredBuildingWhat$fBinaryBuildingWhat$fGenericBuildingWhat$fShowBuildingWhatPreBuildComponentInputs buildingWhatlocalBuildInfo targetInfobuildComponent buildIsLib buildCLBIbuildBI buildCompiler QualLevelQL1QL2QL3BuildTargetProblemBuildTargetExpectedBuildTargetNoSuchBuildTargetAmbiguousUserBuildTargetProblemUserBuildTargetUnrecognised BuildTargetBuildTargetComponentBuildTargetModuleBuildTargetFileUserBuildTargetreadTargetInfosbuildTargetComponentNamereadBuildTargetsreadUserBuildTargetsreportUserBuildTargetProblemsshowUserBuildTargetshowBuildTargetresolveBuildTargetsreportBuildTargetProblems$fBinaryBuildTarget $fMonadMatch$fApplicativeMatch$fFunctorMatch$fMonadPlusMatch$fAlternativeMatch$fShowMaybeAmbiguous $fShowMatch$fShowMatchError$fEqMatchError$fEqComponentKind$fOrdComponentKind$fShowComponentKind$fEnumComponentKind$fBoundedComponentKind$fEnumQualLevel$fShowQualLevel$fShowBuildTargetProblem$fShowUserBuildTargetProblem$fEqBuildTarget$fShowBuildTarget$fGenericBuildTarget$fShowUserBuildTarget$fEqUserBuildTarget$fOrdUserBuildTargetsrcPref hscolourPref buildInfoPrefhaddockDirNamehaddockLibraryDirPathhaddockTestDirPathhaddockBenchmarkDirPath haddockPrefautogenPackageModulesDirautogenComponentModulesDir cppHeaderNameautogenPathsModuleNameautogenPackageInfoModuleName haddockPathhaddockPackageLibraryNamehaddockPackageLibraryName'haddockLibraryNamehaddockLibraryPathgetLibSourceFilesgetExeSourceFilesgetTestSourceFilesgetBenchmarkSourceFilesgetFLibSourceFilesgetSourceFiles exeBuildDir flibBuildDirstubName testBuildDirbenchmarkBuildDirmkGenericStaticLibName mkLibName mkProfLibNamemkGenericSharedLibNamemkSharedLibNamemkProfSharedLibNamemkStaticLibNamemkGenericSharedBundledLibName exeExtension objExtension dllExtensionstaticLibExtension configuregetInstalledPackagesbuildLibbuildExe installLibregisterPackageinplacePackageDbPathrunTest stubFilePathwriteSimpleTestStubsimpleTestStubstubMain stubWriteLog ComponentDiff $sel:componentDiff:ComponentDiff BuildInfoDiff BenchmarkDiff TestSuiteDiffExecutableDiffForeignLibDiff LibraryDiff InstallHooks&$sel:installComponentHook:InstallHooksInstallComponentHookInstallComponentInputs%$sel:copyFlags:InstallComponentInputs*$sel:localBuildInfo:InstallComponentInputs&$sel:targetInfo:InstallComponentInputs BuildHooks&$sel:preBuildComponentRules:BuildHooks&$sel:postBuildComponentHook:BuildHooksPostBuildComponentHookPostBuildComponentInputs($sel:buildFlags:PostBuildComponentInputs,$sel:localBuildInfo:PostBuildComponentInputs($sel:targetInfo:PostBuildComponentInputsPreBuildComponentRules)$sel:buildingWhat:PreBuildComponentInputs+$sel:localBuildInfo:PreBuildComponentInputs'$sel:targetInfo:PreBuildComponentInputsConfigureHooks&$sel:preConfPackageHook:ConfigureHooks'$sel:postConfPackageHook:ConfigureHooks($sel:preConfComponentHook:ConfigureHooksPreConfComponentOutputs*$sel:componentDiff:PreConfComponentOutputsPreConfComponentInputs,$sel:localBuildConfig:PreConfComponentInputs-$sel:packageBuildDescr:PreConfComponentInputs%$sel:component:PreConfComponentInputsPreConfComponentHookPostConfPackageInputs+$sel:localBuildConfig:PostConfPackageInputs,$sel:packageBuildDescr:PostConfPackageInputsPostConfPackageHookPreConfPackageOutputs'$sel:buildOptions:PreConfPackageOutputs/$sel:extraConfiguredProgs:PreConfPackageOutputsPreConfPackageInputs%$sel:configFlags:PreConfPackageInputs*$sel:localBuildConfig:PreConfPackageInputs"$sel:compiler:PreConfPackageInputs"$sel:platform:PreConfPackageInputsPreConfPackageHook SetupHooks$sel:configureHooks:SetupHooks$sel:buildHooks:SetupHooks$sel:installHooks:SetupHooks noSetupHooksnoPreConfPackageOutputsnoPreConfComponentOutputsnoConfigureHooks noBuildHooksnoInstallHooksemptyComponentDiffbuildInfoComponentDiffapplyComponentDiffsforComponents_ executeRuleshookedBuildInfoComponents"hookedBuildInfoComponentDiff_maybe $fStructuredPreConfPackageInputs$fBinaryPreConfPackageInputs!$fStructuredPreConfPackageOutputs$fBinaryPreConfPackageOutputs!$fStructuredPostConfPackageInputs$fBinaryPostConfPackageInputs"$fStructuredPreConfComponentInputs$fBinaryPreConfComponentInputs$fSemigroupPreConfPkgSemigroup#$fStructuredPreBuildComponentInputs$fBinaryPreBuildComponentInputs$$fStructuredPostBuildComponentInputs $fBinaryPostBuildComponentInputs$fMonoidBuildHooks$fSemigroupBuildHooks"$fStructuredInstallComponentInputs$fBinaryInstallComponentInputs$fMonoidInstallHooks$fSemigroupInstallHooks#$fStructuredPreConfComponentOutputs$fBinaryPreConfComponentOutputs$$fSemigroupPreConfComponentSemigroup$fMonoidConfigureHooks$fSemigroupConfigureHooks$fMonoidSetupHooks$fSemigroupSetupHooks $fGenericPreConfComponentOutputs$fShowPreConfComponentOutputs$fSemigroupComponentDiff$fShowComponentDiff$fGenericInstallComponentInputs$fShowInstallComponentInputs!$fGenericPostBuildComponentInputs$fShowPostBuildComponentInputs $fGenericPreBuildComponentInputs$fShowPreBuildComponentInputs$fGenericPreConfComponentInputs$fShowPreConfComponentInputs$fGenericPostConfPackageInputs$fShowPostConfPackageInputs$fGenericPreConfPackageOutputs$fShowPreConfPackageOutputs$fGenericPreConfPackageInputs$fShowPreConfPackageInputs$fStructuredComponentDiff$fBinaryComponentDiff hstoolVersionnumericVersiongetCompilerVersion getExtensions getLanguages initPackageDB packageDbOptGhcEnvironmentFileEntryGhcEnvFileCommentGhcEnvFilePackageIdGhcEnvFilePackageDbGhcEnvFileClearPackageDbStackcomponentCcGhcOptionscomponentGhcOptionsghcPlatformAndVersionStringsimpleGhcEnvironmentFilewriteGhcEnvironmentFilerenderGhcEnvironmentFile ParseErrorExcparseGhcEnvironmentFilereadGhcEnvironmentFile getGhcInfogetPackageDBContents getLibDirgetGlobalPackageDB getInstalledPackagesMonitorFilesreplLibstartInterpreter buildFLibreplFLibreplExe libAbiHash installExe installFLib isDynamic hcPkgInfopkgRootrunCmdcompilerBuildWay getGhcAppDir mkBuildInfo mkBuildInfo'mkCompilerInfomkComponentInfoinstallinstall_setupHooksinstallFileGlobgeneratePathsModule pkgPathEnvVar checkPackagecheckConfiguredPackagecheckPackageContentcheckPackageFilesGPDcheckPackageFileswrapParseWarning defaultMaindefaultMainArgsModTime getModTimeposixSecondsToModTime getFileAge getCurTimecalibrateMtimeChangeDelay $fReadModTime $fShowModTime$fStructuredModTime$fBinaryModTime$fGenericModTime$fBoundedModTime $fEqModTime $fOrdModTime!configureComponentLocalBuildInfos setupMessage'generateRegistrationInfoabiHashcreatePackageDBdoesPackageDBExistdeletePackageDB invokeHcPkggeneralInstalledPackageInfoinplaceInstalledPackageInfoabsoluteInstalledPackageInfointernalPackageDBPathPPSuffixHandlerunsortedmkSimplePreProcessorrunSimplePreProcessorpreprocessComponentpreprocessFile ppGreenCardppUnlitppCppppCpp'ppHsc2hsppC2hsplatformDefinesppHappyppAlex ppSuffixesknownSuffixHandlerspreprocessExtras UserHooksreadDeschookedPreProcessorshookedProgramspreConfconfHookpostConfpreBuild buildHook postBuildpreReplreplHookpostReplpreClean cleanHook postCleanpreCopycopyHookpostCopypreInstinstHookpostInstpreRegregHookpostRegpreUnreg unregHook postUnreg preHscolour hscolourHook postHscolour preHaddock haddockHook postHaddockpreTesttestHookpostTestpreBench benchHook postBenchArgsemptyUserHooksConfigStateFileErrorConfigStateFileNoHeaderConfigStateFileBadHeaderConfigStateFileNoParseConfigStateFileMissingConfigStateFileBadVersioncfgStateFileErrorCwdcfgStateFileErrorFilegetConfigStateFiletryGetConfigStateFiletryGetPersistBuildConfiggetPersistBuildConfigmaybeGetPersistBuildConfigwritePersistBuildConfigcheckPersistBuildConfigOutdatedlocalBuildInfoFile findDistPreffindDistPrefOrDefaultconfigure_setupHooksgetInternalLibrariescomputeEffectiveProfilinggetInstalledPackagesByIdinterpretPackageDbFlagsccLdOptionsBuildInfoconfigCompilerAuxExconfigCompilerExcheckForeignDeps$fExceptionConfigStateFileError$fShowConfigStateFileErrorsdistlistPackageSourceslistPackageSourcesWithDie prepareTreeprepareSnapshotTreesnapshotPackagesnapshotVersiondateToSnapshotNumber createArchiveprintPackageProblemsAutogenFileContents AutogenFile AutogenModulebuild_setupHooksreplrepl_setupHookscreateInternalPackageDBaddInternalBuildToolsinitialBuildStepscomponentInitialBuildStepspreBuildComponentwriteBuiltinAutogenFileswriteAutogenFiles$fShowAutogenFile$fEqAutogenFile$fOrdAutogenFiletesthaddockhaddock_setupHookscreateHaddockIndexhaddockPackagePathshscolourhscolour_setupHooks$fSemigroupDirectory$fMonoidDirectory$fSemigroupHaddockArgs$fMonoidHaddockArgs$fGenericHaddockArgs $fEqOutput$fReadDirectory$fShowDirectory $fEqDirectory$fOrdDirectorybenchdefaultMainWithSetupHooksdefaultMainWithSetupHooksArgsdefaultMainWithHooksdefaultMainWithHooksArgsdefaultMainNoReaddefaultMainWithHooksNoReaddefaultMainWithHooksNoReadArgssimpleUserHooksautoconfUserHooksautoconfSetupHooks WithSourceDistribution.Backpack OpenModule ModuleSourceModuleRequiresModuleProvides ModuleNameDistribution.Types.PackageName PackageName ModuleScopeemptyModuleScopemodScopeProvidesmodScopeRequires FromMixinsFromBuildDependsFromExposedModulesFromOtherModulesFromSignaturesdispModuleSource unWithSource getSourceModuleWithSource'Distribution.Types.InstalledPackageInfoInstalledPackageInfoAsyncCancelledcancelAsyncMGHC.MVarMVar asyncThreadId GHC.Conc.SyncThreadIdAsync withAsyncuninterruptibleCancelwait waitCatch withAsyncNFgetShortPathName System.IO openTempFileopenBinaryTempFileopenNewBinaryFilecopyFilecopyFileChanged filesEqualcopyOrdinaryFilecopyExecutableFilesetDirOrdinaryGHC.BaseNonEmpty:|ghc-prim GHC.TypesIntFloatCharIOGHC.WordWord8BoolFalseTrueDoubleWordOrderingLTEQGT GHC.MaybeMaybeJustNothing~ ghc-bignumGHC.Num.IntegerIntegerWord64Word32Word16 Data.EitherEitherRightLeft Data.DataData Data.StringIsString fromStringGHC.RealIntegral toIntegerquotremdivmodquotRemdivModRationalString MonadPlusmzeromplusGHC.ReadRead readsPrecreadListGHC.ShowShowshow showsPrecshowListGHC.IntInt8Int16Int32Int64GHC.Exception.Type Exception toException fromExceptiondisplayExceptionGHC.IO.ExceptionIOErrorGHC.EnumBoundedminBoundmaxBoundEnumfromEnumtoEnumenumFrom enumFromThen enumFromToenumFromThenTosuccpred GHC.ClassesEq==/= GHC.FloatFloatingpiexplogsqrt**logBasesincostanasinacosatansinhcoshtanhasinhacoshatanh Fractional fromRational/recipMonad>>=return>>Functorfmap<$GHC.NumNum fromInteger-negate+*abssignumOrdcompare>=<<=>maxminReal toRational RealFloat floatRadix floatDigits floatRange decodeFloat encodeFloatexponent significand scaleFloatisNaN isInfiniteisDenormalizedisNegativeZeroisIEEEatan2RealFracproperFractiontruncateroundceilingfloorData.Typeable.InternalTypeableControl.Monad.Fail MonadFailfail Applicative<*>pure*>liftA2<* Data.FoldableFoldablelengthfoldlfoldrtoListfoldl'sumproductmaximumminimumelemfoldMapData.Traversable Traversabletraverse sequenceA GHC.GenericsGeneric Semigroup<>MonoidmemptymappendmconcatVoid Data.TypeableTypeRep SomeException Alternativesomeempty<|>manyShowSText.ParserCombinators.ReadPReadS Data.ProxyProxyData.Functor.ConstConstgetConstGHC.IOFilePathExitCode ExitSuccess ExitFailureData.Functor.IdentityIdentity runIdentitybinary-0.8.9.1Data.Binary.ClassBinarygetputputListcontainers-0.6.7Data.Map.InternalMapData.Set.InternalSetdeepseq-1.4.8.1Control.DeepSeqNFDatarnfDistribution.Compat.NonEmptySet NonEmptySetDistribution.Utils.Structured Structureddeepseq Data.FunctorvoidGHC.ErrerrorGHC.ListzipWitheven<$>$sortBy Data.Tuplefst Text.Read readMaybeuncurry GHC.UnicodeisAlphaordGHC.CharchridData.List.NonEmptyheadforthrowIOcatch writeFilegetLineputStrLnliftMfilterunfoldr System.ExitexitWithcycle++GHC.Primseqconcatzipprint otherwiseDistribution.Compat.Preludetracemap Control.Arrowfirst fromIntegral realToFrac Control.Monadguardjoin^&&||noterrorWithoutStackTrace undefinedabsurdvacuous=<<whenliftM2apconst.flip$!untilasTypeOfsubtract Data.MaybemaybeisJust isNothing fromMaybe maybeToList listToMaybe catMaybesmapMaybetaillastfoldl1scanlscanl1foldr1scanrscanr1iteraterepeat replicate takeWhile dropWhiletakedropsplitAtspanbreakreverseandoranyallnotElemlookup concatMap!!zip3zipWith3unzipunzip3showsshowChar showString showParenodd^^gcdlcmsndcurry Data.FunctiononisSpaceisUpper isAlphaNumisDigittoUppertoLowerlex readPareneitherpartitionEithersreads traverse_for_ sequence_findtypeRep dropWhileEnd isPrefixOf isSuffixOfnubnubBy intersperse partitionsortlinesunlineswordsunwords userErrorevaluateioErrorputCharputStrgetChar getContentsinteractreadFile appendFilereadLnreadIOpretty-1.1.3.6Text.PrettyPrint.HughesPJ<+>filterMfoldMunless exitFailure exitSuccess traceShowMtraceM traceShowId traceShownonEmptyforceDistribution.Compat.ExceptioncatchIO<<>> catchExittryIODistribution.Compat.Semigroupgmappendgmempty genericRnfSnocList runSnocListsnocsetEnvgetEnvironment lookupEnvunsetEnvArgDescrNoArgArgOrder RequireOrderPermute usageInfofmtShortfmtLonggetOptgetOpt'OptiontokenizeQuotedWordsWarnLangCETypeppCET ppWarnLang ppExplanation$fShowPackageCheck CETLibraryCETForeignLibrary CETExecutableCETTest CETBenchmarkCETSetupLangC LangCPlusPlusextractCheckExplantionPackageDescriptionDistribution.Types.BuildInfobuildToolDepends BuildInfoDistribution.Types.ComponentId ComponentIdDistribution.Types.UnitIdUnitIdPreExistingComponent pc_pkgname pc_compnameConfiguredPromisedComponentipiToPreExistingComponent pc_munged_idpc_uidpc_cid pc_open_uidpc_shape pr_pkgnamepr_cid!Distribution.Types.ModuleRenamingModuleRenamingversion0GHC.IO.Handle.Text hGetContentshPutStr GHC.IO.HandlehCloseLinkPoint writePoint readPointfreshrepr equivalent verboseQuiet verboseFlag verboseNoFlag isVerboseFlagTokNoCmdstaticPtrNameSpaceRulesNameSpace GHC.StaticPtr StaticPtrInforulesInNameSpaceModuleProvidesU ModuleScopeU ModuleSubstU UnitIdUniqueUnitIdU'Distribution.Types.ModuleModuleUnitIdUModuleUModuleU'UnifRefUnifEnv unify_uniq unify_reqsunify_self_cidunify_verbosity unify_ctxunify_db unify_errsUnifyM runUnifyMliftSTGHC.STST readUnifRef writeUnifRef getUnifEnv addErrContextaddErrContextMconvertModuleSubstconvertModuleSubstUconvertUnitIdU' OpenUnitIdemptyModuleScopeUconvertIncludeconvertModuleScopeUconvertModuleProvidesconvertModuleProvidesUfailWithaddErr failIfErrstryM ModuleVarU convertModuleconvertModuleU UnitIdThunkU convertUnitIdconvertUnitIdUModuleWithSourceUmixLink linkProvision unifyModuleWriter execWritertellforM_Distribution.Pretty prettyShowrenderZ zPackageNamezVersionDigits zSupportsCppzSupportsNoRebindableSyntax zAbsolute zRelocatable zIsWindowszIsI386zIsX8664zPrefixzBindirzLibdir zDynlibdirzDatadir zLibexecdir zSysconfdirzNotzManglePkgName zSynopsis zCopyright zHomepage zPackageszTools zPackageKey zComponentIdzPackageVersionzNotNull zMangleStrZPackagezpkgName zpkgVersionzpkgXzpkgYzpkgZZTool ztoolName ztoolVersionztoolXztoolYztoolZversion getBinDir getDynLibDir getDataDir getLibexecDirgetDataFileName getSysconfDirMarkWhen NormalMark TraceWhen AlwaysTraceioeSetVerbatimioeGetVerbatimverbatimUserErroraddErrorPrefix errorPrefixprefixWithProgName getProgNameannotateErrorString withMetadataioeModifyErrorStringioeErrorStringdisplaySomeExceptionverbosityHandleGHC.IO.StdHandlesstderrstdout warnMessageDocwrapTextVerbosity withTimestampwithTrailingNewlinewithCallStackPrefix traceWhen logCommand copyFilesWith readNubList formatMsgmarkupInvocationunionInvocation DepUniqueKeyPackageInstalledDistribution.Types.PackageId PackageIdreadAndParseFile flattenDupscheckNameMatchesCheckMPNamesTargetAnnotationCheckCtxCheckPreDistributionOpsCheckInterfacepristineCheckCtx initCheckCtx initPNames execCheckMtellPcheckPtellCMliftCMliftIntcheck checkIntDepcheckIntlocalCMasksCM ciPureChecks ciPackageOps ciPreDistOpsrunDirFileGlobMgetDirectoryContentsM taPackageFlagtaTarget ccInterfaceccFlag ccSpecVersion ccDesugarccNames pnPackageId pnSubLibspnExecspnTestspnBenchscheckPkg checkSpecVerinitTargetAnnotationupdateTargetAnnotationannotateCondTreeDistribution.Types.CondTreeCondTreecheckCondTarget checkCondVarscheckDuplicateModules CabalFieldAssocDepPathKind PathKindFilePathKindDirectory PathKindGlobcheckCustomField partitionDepscheckPVP checkPVPsextensionToFlagextensionToFlag' waySupported ghcSupportedDistribution.CompilerCompilerFlavorGHCGHCJS HaskellSuiteUHCMHSNHCYHCHugsHBCHeliumJHCLHCEta OtherCompilerAbiTagNoAbiTag CompilerId CompilerInfocompilerInfoAbiTagcompilerInfoCompatcompilerInfoExtensionscompilerInfoIdcompilerInfoLanguagesPerCompilerFlavor abiTagStringbuildCompilerFlavorbuildCompilerIdclassifyCompilerFlavordefaultCompilerFlavorknownCompilerFlavorsperCompilerFlavorToListunknownCompilerInfoghcjsVersionImplInfoghcVersionImplInfo OpenModuleVarpackageDbArgsConfuserSpecifiedPathconfigurePrograms(Distribution.Types.VersionRange.InternalorLaterVersion CommonFlag commandHelpextraCompilationArtifactstestOrBenchmarkHelpTextprogramDbPathsprogramDbOptionwithCommonSetupOptions reqArgFlagreqSymbolicPathArgFlag optionNumJobsparsecModSubstEntrydispModSubstEntry"Distribution.Types.HookedBuildInfoHookedBuildInfoPackageIdentifier mkTargetInfolibraryDistribution.Types.Executable ExecutablewithExeDistribution.Types.Benchmark BenchmarkDistribution.Types.LibraryLibrary wipeMetadatahpcDirmkConfiguredComponenttoConfiguredComponent'"Distribution.Types.IncludeRenamingIncludeRenamingDistribution.Compat.GraphGraphMatchmatchInexactly findMatchUserBuildTargetSingleUserBuildTargetDoubleUserBuildTargetTriplereadUserBuildTargetshowBuildTarget' matchPlusmatchPlusShadowing exactMatchesinexactMatchescheckBuildTargetsDistribution.Types.TestSuite TestSuiteuhcLanguageExtensionsaddBuiltinVersionsinstalledPkgConfigisPkgDirmkInstalledPackageInfo stubRunTestsPreConfComponentSemigroupPreConfPkgSemigrouptraverseComponentsexecuteRulesUserOrSystemruleOutputsLocation missingDepconfigureToolchainfilterGhciFlagsmkGhcOptPackages ghcArchStringDistribution.SystemArch ghcOsStringOSPlatformghcEnvironmentFileNamerenderGhcEnvironmentFileEntrytargetPlatformcomponentCmmGhcOptionscomponentCxxGhcOptionscomponentAsmGhcOptionscomponentJsGhcOptions mkGHCiLibNamemkGHCiProfLibNameghcLookupPropertygetHaskellObjects substTopDircheckPackageDbEnvVarprofDetailLevelFlag BuildSources GBuildModegbuildgetUserPackageDBflibTargetName flibBuildNameexeMainModuleNamedecodeMainIsArg gbuildSources isHaskellextractRtsInfocheckNeedsRecompilationgetObjectFileName getRPathspopThreadedFlagfindExecutableMainsupportsDynamicToo withDynFLibDistribution.Types.ForeignLibforeignLibTypeisCxxisC exeTargetName isProfiledbuildHaskellModulesbuildWayHpcWaybuildWayExtraHcOptionscomponentInputsbuildAllExtraSourcesbuildExtraSources buildCSourcesbuildCxxSourcesbuildJsSourcesbuildAsmSourcesbuildCmmSources asmSourcescSourceslinkOrLoadComponent linkLibrarylinkExecutablelinkFLib hasThreadedrunReplOrWriteFlagsRtsInfo rtsLibPaths rtsStaticInfortsDynamicInfo StaticRtsInfostatRtsThreadedProfilingLibstatRtsProfilingLibstatRtsThreadedEventlogLibstatRtsThreadedDebugLibstatRtsEventlogLibstatRtsDebugLibstatRtsVanillaLibstatRtsThreadedLibDynamicRtsInfodynRtsThreadedEventlogLibdynRtsThreadedDebugLibdynRtsEventlogLibdynRtsDebugLibdynRtsVanillaLibdynRtsThreadedLib replNoLoadguessToolFromGhcPathguessGhcPkgFromGhcPathguessHsc2hsFromGhcPathguessHaddockFromGhcPathtoPackageIndexgetInstalledPackages'getCompilerArgs copyPackage copyComponentinstallDataFilesinstallIncludeFiles isInsideDist checkTarPathisGoodRelativeFilePathisGoodRelativeGlobisGoodRelativeDirectoryPath checkGlob checkPathfileExtensionSupportedLanguagecheckGHCOptions checkLibrarycheckForeignLibcheckExecutablecheckTestSuitecheckBenchmarkcheckPackagePrim,Distribution.Types.GenericPackageDescriptionGenericPackageDescriptioncheckGenericPackageDescriptionpd2gpdcheckGlobResultPackage packageIdDistribution.Types.DependencypkgName pkgVersion DefUnitId unDefUnitIdHasMungedPackageIdmungedId HasUnitIdinstalledUnitIdinstalledDependsDistribution.Types.AbiHashAbiHash Distribution.Types.PkgconfigName PkgconfigName packageNamemkUnitId unComponentIdnewSimpleUnitIdunsafeMkDefUnitId mkComponentIdgetHSLibraryNamemkLegacyUnitIdunUnitId mkPackageNamemkPackageNameST unPackageNameunPackageNameSTpackageVersion mkAbiHash unAbiHash depLibraries depPkgName depVerRange mainLibSet mkDependencysimplifyDependencymkPkgconfigNameunPkgconfigName mungedName'mungedVersion'getModificationTimeposixTimeToModTime time-1.12.2"Data.Time.Clock.Internal.POSIXTime POSIXTimeInstMInstSIndefiniteComponentindefc_requiresindefc_providesindefc_includesInstantiatedComponent instc_instsinstc_insts_depsinstc_providesinstc_includesReadyComponent rc_open_uidrc_cid rc_component rc_exe_deps rc_publicrc_irc_uidrc_pkgid rc_depends rc_munged_id"Distribution.Types.MungedPackageIdMungedPackageIdtoReadyComponents rc_ann_iddispReadyComponentPreProcessorExtras hsSourceDirsknownExtrasHandlersExternalDependencyPromisedDependencyInternalDependencydispConfigStateFileErrorcurrentCabalIdcurrentCompilerId parseHeader showHeader mkProgramDbcheckDeprecatedFlagscheckExactConfigurationdependencySatisfiableconfigureFinalizedPackage-Distribution.PackageDescription.Configuration finalizePDcheckCompilerProblemsconfigureDependenciesconfigureCoverageconfigureProfilingselectDependencyconfigureRequiredProgramcheckPackageProblemscheckSharedExescheckRelocatablecombinedConstraints findSetupFilefindSetupHooksFilemaybeCreateDefaultSetupScriptfindMainExeFilefindModDefFilefindIncludeFilefilterAutogenModulesallSourcesBuildInfo tarBallNamelistPackageSources'overwriteSnapshotPackageDesctoUnixrunConfigureScriptcheckSemaphoreSupport dumpBuildInfoaddExtraCSourcesaddExtraCxxSourcesaddExtraCmmSourcesaddExtraAsmSourcesaddExtraJsSourcesaddExtraOtherModules addSrcDirtestSuiteExeV10AsExebenchmarkExeV10asExetestSuiteLibV09AsLibAndExebuiltinAutogenFilesemptySignatureModules DirectoryDistribution.Utils.Path HaddockArgs!$sel:argInterfaceFile:HaddockArgs$sel:argPackageName:HaddockArgs!$sel:argComponentName:HaddockArgs$sel:argHideModules:HaddockArgs!$sel:argIgnoreExports:HaddockArgs$sel:argLinkSource:HaddockArgs $sel:argLinkedSource:HaddockArgs$sel:argQuickJump:HaddockArgs$sel:argCssFile:HaddockArgs$sel:argContents:HaddockArgs$sel:argGenContents:HaddockArgs$sel:argIndex:HaddockArgs$sel:argGenIndex:HaddockArgs$sel:argBaseUrl:HaddockArgs$sel:argOutput:HaddockArgs$sel:argInterfaces:HaddockArgs$sel:argOutputDir:HaddockArgs$sel:argTitle:HaddockArgs$sel:argPrologue:HaddockArgs $sel:argPrologueFile:HaddockArgs$sel:argGhcOptions:HaddockArgs$sel:argGhcLibDir:HaddockArgs$sel:argReexports:HaddockArgs$sel:argTargets:HaddockArgs $sel:argResourcesDir:HaddockArgs$sel:argUseUnicode:HaddockArgsgetHaddockProgreusingGHCCompilationArtifacts runHaddock mkHaddockArgs fromLibraryfromExecutablefromTest fromBenchmarkfromForeignLib getInterfaces hscolour'defaultMainHelperallSuffixHandlerstryGetBuildConfiggetBuildConfig VersionRangeF ThisVersionF LaterVersionFOrLaterVersionFEarlierVersionFOrEarlierVersionFMajorBoundVersionFUnionVersionRangesFIntersectVersionRangesF VersionRange"Distribution.Types.VersionInterval LowerBound UpperBound NoUpperBoundVersionIntervalBoundExclusiveBoundInclusiveBoundVersionIntervals thisVersion anyVersion nullVersion alterVersion mkVersion mkVersion'versionNumbersanaVersionRangecataVersionRangeearlierVersionembedVersionRangehyloVersionRangeintersectVersionRanges laterVersionmajorBoundVersionmajorUpperBound noVersionnotThisVersionorEarlierVersionprojectVersionRangeunionVersionRangeswildcardUpperBound withinVersionDistribution.VersionsimplifyVersionRangeDistribution.Types.VersionRange isAnyVersionasVersionIntervalsfromVersionIntervalstoVersionIntervalsunVersionIntervalsfoldVersionRange hasLowerBound hasUpperBoundnormaliseVersionRangestripParensVersionRange withinRange isNoVersionisSpecificVersionremoveLowerBoundremoveUpperBoundtransformCarettransformCaretLowertransformCaretUpperlicenseFromSPDX licenseToSPDX knownLicensesLanguage.Haskell.Extension ExtensionEnableExtensionDisableExtensionUnknownExtensionLanguage Haskell2010 Haskell98GHC2021GHC2024UnknownLanguageKnownExtensionSafeStrictOverlappingInstancesUndecidableInstancesIncoherentInstancesUndecidableSuperClassesMonomorphismRestrictionMonoLocalBindsDeepSubsumptionRelaxedPolyRecExtendedDefaultRulesForeignFunctionInterfaceUnliftedFFITypesInterruptibleFFICApiFFIGHCForeignImportPrim JavaScriptFFIParallelArraysArrowsTemplateHaskellTemplateHaskellQuotes QualifiedDo QuasiQuotesImplicitParamsImplicitPreludeScopedTypeVariablesAllowAmbiguousTypes UnboxedTuples UnboxedSumsUnliftedNewtypesUnliftedDatatypes BangPatterns TypeFamiliesTypeFamilyDependencies TypeInTypeOverloadedStringsOverloadedLists NumDecimalsDisambiguateRecordFieldsRecordWildCardsNamedFieldPuns ViewPatternsGADTs GADTSyntaxNPlusKPatternsDoAndIfThenElseBlockArgumentsRebindableSyntaxConstraintKinds PolyKinds DataKindsTypeData InstanceSigs ApplicativeDo LinearTypesStandaloneDerivingDeriveDataTypeableAutoDeriveTypeable DeriveFunctorDeriveTraversableDeriveFoldable DeriveGenericDefaultSignaturesDeriveAnyClass DeriveLiftDerivingStrategies DerivingViaTypeSynonymInstancesFlexibleContextsFlexibleInstancesConstrainedClassMethodsMultiParamTypeClassesNullaryTypeClassesFunctionalDependencies UnicodeSyntaxExistentialQuantification MagicHashEmptyDataDeclsKindSignaturesRoleAnnotationsParallelListCompTransformListCompMonadComprehensionsGeneralizedNewtypeDeriving RecursiveDoPostfixOperators TupleSections PatternGuardsLiberalTypeSynonyms RankNTypesImpredicativeTypes TypeOperatorsExplicitNamespacesPackageImportsExplicitForAllAlternativeLayoutRule!AlternativeLayoutRuleTransitionalDatatypeContextsNondecreasingIndentation RelaxedLayoutTraditionalRecordSyntax LambdaCase MultiWayIfBinaryLiteralsNegativeLiteralsHexFloatLiteralsDuplicateRecordFieldsOverloadedLabels EmptyCasePatternSynonymsPartialTypeSignaturesNamedWildCardsStaticPointersTypeApplications StrictDataEmptyDataDerivingNumericUnderscoresQuantifiedConstraints StarIsTypeImportQualifiedPostCUSKsStandaloneKindSignaturesLexicalNegationFieldSelectorsOverloadedRecordDotOverloadedRecordUpdateUnsafe Rank2TypesCPPRequiredTypeArgumentsExtendedLiteralsTypeAbstractions ListTuplePunsMultilineStrings OrPatterns SafeImports TrustworthyDoRecPolymorphicComponentsPatternSignaturesGenericsGeneralisedNewtypeDerivingExtensibleRecordsRestrictedTypeSynonyms HereDocuments RecordPuns MonoPatBinds NamedDefaultsNewQualifiedOperators XmlSyntaxRegularPatternsMonadFailDesugaringclassifyExtensionclassifyLanguagedeprecatedExtensionsknownExtensionsknownLanguages