Ë Ím8©€XÌãóˆ—ddlmZddlZddlZddlZddlZddlZddlZ ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlmZddlmZgd¢ZddgZgd¢Ze«aiZiZ efZ ee fZ!ee!zZ"e"e#fzZ$d „Z%gd ¢Z&ga'gd ¢Z(d a)da*dQd „Z+d„Z,d„Z-d„Z.d„Z/d„Z0d„Z1d„Z2d„Z3Gd„de4«Z5Gd„de6«Z7d„Z8ed«Z9ddddœZ:d „Z;d!„Z<e jzd"«Z>e jzd#«Z?e jzd$«Z@iZAd%„ZBdZCd&ZDd'ZEd(„ZFiZGd)„ZHd*„ZId+„ZJd,„ZKd-„ZL dQd.„ZMd/„ZNd0„ZOd1„ZPd2„ZQd3„ZRd4„ZSd5„ZTd6„ZUd7„ZVGd8„d9e6«ZWd:„ZXd;„ZYd<„ZZd=„Z[e jzd>«Z\d?„Z]dRd@„Z^dA„Z_dB„Z`dC„ZadD„ZbdE„ZcdF„ZddG„ZedH„ZfdI„ZgdJ„ZhdK„ZidL„ZjdM„ZkdN„ZldO„ZmdP„Zny#e$refZY�ŒKwxYw#e$refZ!Y�ŒUwxYw)Sé)Úprint_functionN)ÚGypError)Ú OrderedSet)Ú executableÚshared_libraryÚloadable_moduleÚmac_kernel_extensionÚwindows_driverÚ dependenciesÚexport_dependent_settings)Ú destinationÚfilesÚ include_dirsÚinputsÚ librariesÚoutputsÚsourcescó’—|r|dddvr|dd}|r|dddvrŒ|tvryd|vr"|dd}|ddk(r|dd}|dddvry|d dd k(Sy ) Néÿÿÿÿz=+?!TÚ_iúÿÿÿÚséûÿÿÿ)Ú_fileÚ_pathéüÿÿÿÚ_dirF)Ú path_sections)ÚsectionÚtails ú./usr/lib/python3.12/site-packages/gyp/input.pyÚ IsPathSectionr!JsŽ€ñ �G˜B˜C�L FÑ*Ø�c�rˆl€Gñ �G˜B˜C�L FÒ*ð ” ÑØ ð  ˆG�^Ø �2�3ˆ<€DØ ˆB�x�3‚Ø �#�2ˆY€dØ ˆBˆC€yÐ&Ñ&Ø Ø ��ˆ9˜Ñ Ðà ó)ÚactionsÚall_dependent_settingsÚconfigurationsÚcopiesÚdefault_configurationr Údependencies_originalÚdirect_dependent_settingsrÚ postbuildsÚ product_dirÚproduct_extensionÚ product_nameÚproduct_prefixÚrulesÚrun_asrÚstandalone_static_libraryÚsuppress_wildcardÚ target_nameÚtoolsetÚtoolsetsÚtypeÚ variables) r#r$r%r r)rÚ link_settingsrr1r3r6Fcó�—|dk(rg}||vr|S|j|«||jdg«D]}t|||«Œ|S)aReturn a list of all build files included into build_file_path. The returned list will contain build_file_path as well as all other files that it included, either directly or indirectly. Note that the list may contain files that were included into a conditional section that evaluated to false and was not merged into build_file_path's dict. aux_data is a dict containing a key for each build file or included build file. Those keys provide access to dicts whose "included" keys contain lists of all other files included by the build file. included should be left at its default None value by external callers. It is used for recursion. The returned list will not contain any duplicate entries. Each build file in the list will be relative to the current directory. NÚincluded)ÚappendÚgetÚGetIncludedBuildFiles)Úbuild_file_pathÚaux_datar:Úincluded_build_files r r=r=žs\€ð&�ÒØ€Hà˜Ñ Ø €Oà ‡/�/�/Ô"à% oÑ6×:Ñ:¸:ÀrÖJÐÜÐ-¨x¸ÕBðKð €/r"có —tj|«}t|tj«sJ‚|j}t |«dk(sJ‚|d}t|tj «sJ‚t|jg«S)z°Return the eval of a gyp file. The gyp file is restricted to dictionaries and lists only, and repeated keys are not allowed. Note that this is slower than eval() is. ér) ÚastÚparseÚ isinstanceÚModuleÚbodyÚlenÚExprÚ CheckNodeÚvalue)Ú file_contentsÚ syntax_treeÚc1Úc2s r Ú CheckedEvalrP¿so€ô— ‘ ˜-Ó(€+Ü �K¤§¡Ô ,Ð,Ð ,Ø×Ñ€"Ü ˆR‹�AŠÐˆØ ˆ!�u€"Ü �BœŸ™Ô !Ð!Ð !Ü �2—8‘8˜RÓ Ð r"c óX—t|tj«rÄi}t|j|j «D]�\}}t|tj «sJ‚|j}||vrAtd|zdztt|«dz«zdzdj|«zdz«‚t|«}|j|«t||«||<ŒŸ|St|tj«rag}t!|j"«D]E\}}t|«}|jt|««|jt||««ŒG|St|tj «r |jSt%ddj|«zdzt|«z«‚) NzKey 'z' repeated at level rBz with key path 'Ú.Ú'zUnknown AST node at key path 'z': )rErCÚDictÚzipÚkeysÚvaluesÚStrrrÚreprrHÚjoinÚlistr;rJÚListÚ enumerateÚeltsÚ TypeError) ÚnodeÚkeypathÚdictÚkeyrKÚkpÚchildrenÚindexÚchilds r rJrJÑsy€Ü�”c—h‘hÔØ €Dܘ$Ÿ)™) T§[¡[Ö1‰ ˆˆUÜ ˜œSŸW™WÔ %Ð%Ð %Ø �E‰E€cØ �‰Ü�w ‘}Ð'=Ñ=Ü”3�w“< !Ñ#Ó$ñ%Ø'9ñ:à�h‰h�wÓñ à"%ñ&ó'ð 'ô �‹=€b؇i�i�„nܘE 2Ó&€dˆ3‚ið2ð €KÜ�$œŸ™Ô!Ø€HÜ! $§)¡)Ö,‰ ˆˆuÜ �‹=€b؇i�i”�U“ ÔØ‡o�o”i  rÓ*Õ+ð-ð €OÜ�$œŸ™Ô Ø �6‰6€Mä Ð4°s·x±xÀÓ7HÑHØ ñÜ�d“ñó ðr"cóà—||vr||Stjj|«r*t|d«j «j d«}n#t |›dtj«›d�«‚d} |r t|«}nt|ddid«}t!|«t"urt d|z«‚|||<i||<d|vs|ds( |rt%||||||«|St%||||d|« |S|S#t$r }||_ ‚d}~wt$r)}tjj|d|z«‚d}~wwxYw#t$r)}tjj|d |z«‚d}~wwxYw) NÚrbúutf-8z not found (cwd: Ú)Ú __builtins__zwhile reading z%%s does not evaluate to a dictionary.Ú skip_includeszwhile reading includes of )ÚosÚpathÚexistsÚopenÚreadÚdecoderÚgetcwdrPÚevalÚ SyntaxErrorÚfilenameÚ ExceptionÚgypÚcommonÚExceptionAppendr6rbÚLoadBuildFileIncludesIntoDict) r>Údatar?ÚincludesÚ is_targetÚcheckÚbuild_file_contentsÚbuild_file_dataÚes r ÚLoadOneBuildFiler„ísŽ€à˜ÑØ �Ñ Ð ä‡W�W‡^�^�OÔ$ܘ°Ó5×:Ñ:Ó<×CÑCÀGÓLÑä ªÄÇ Á Å ÐLÓ MÐMà€/ð  Ù Ü#Ð$7Ó8�oäÐ0°>À4Ð2HØ!ó#€oô ˆ/Ó¤$Ñ&Ü Ð:¸_ÑLÓ MÐMà)€$€ÑØ €(ˆ?Ñð˜_Ñ,Ø ˜/Ò *ð  Ù Ü% o°ÈØ&.°¸%ô Að Ðô & o°ÈØ&.°°eõ =ð ÐˆÐøô9 ò Ø €A„JØ ûÜ ò ܇J�J×јqÐ"2°_Ñ"DÔEØ ûð ûô( ò Ü ‡j�j× Ñ  Ø!=ÀÑ!OôQà ûð úsBÁ9C2à D;ÃD;Ã2 D8Ã;DÄ D8Ä$D3Ä3D8Ä; E-Å$E(Å(E-c ó¾—g}|dk7r|j|«d|vrx|dD]m}tjjtjj tjj |«|««}|j |«Œo|d=|D]i}d||vrg||d<||dj |«tjtjd|«t|t|||dd|«||«Œk|j«D]H\} } t| «turt| |||d|«Œ(t| «t usŒ:t#| ||||«ŒJy)Nr~r:zLoading Included File: '%s'F)ÚextendrnroÚnormpathrZÚdirnamer;ryÚ DebugOutputÚDEBUG_INCLUDESÚ MergeDictsr„Úitemsr6rbr|r[ÚLoadBuildFileIncludesIntoList) ÚsubdictÚ subdict_pathr}r?r~r€Ú includes_listÚincludeÚrelative_includeÚkÚvs r r|r|sN€à€-Ø �ÒØ×јÔ"Ø�7ÑØ˜:Ô&ˆô �'‰'× Ñ œ2Ÿ7™7Ÿ<™<¬¯©¯©¸ Ó(EÀwÓOÓ Pðà×ÑÐ+Õ,ð 'ð � Ðó€gØ ˜ ,Ñ/Ñ /Ø+-€hˆ|јZÑ(Ø ˆ\ј:Ñ&×-Ñ-¨gÔ6ä‡O�O”C×&Ñ&Ð(EÀwÔOäˆwÜ ¨¨x¸¸uÀeÓLؘWõ&ðð�m‰mŽo�d€aˆÜ ˆAƒw”$�Ü# A |°T¸8Ø$(¨%õ1ä ˆa‹”DŠÜ# A |°T¸8Ø$)õ+ñ r"c ó˜—|D]E}t|«turt||||d|«Œ%t|«tusŒ7t |||||«ŒGy©N)r6rbr|r[r�)ÚsublistÚ sublist_pathr}r?r€Úitems r r�r�DsI€Û€dÜ ˆDƒz”TÑÜ# D¨,¸¸hØ$(¨%õ1ä ˆd‹”tÒ Ü# D¨,¸¸hÈÕNñ r"có —d|vr¸|d}g}|D]§}d|vrd|vr|j|«Œtr|jddg«}ndg}d|vr|d=t|«dkDsŒP|ddD]7}tj j |«}||d<|j|«Œ9|d|d<|j|«Œ©||d<d|vrD|dD];}t|«tusŒ|ddD]}t|«tusŒt|«Œ!Œ=yy)NÚtargetsr4r5ÚtargetrrBÚ conditions) r;Úmultiple_toolsetsr<rHryÚ simple_copyÚdeepcopyr6r[rbÚProcessToolsetsInDict) r}Ú target_listÚnew_target_listrœr5ÚbuildÚ new_targetÚ conditionÚcondition_dicts r r¡r¡Ns.€Ø�$ÑØ�y‘/€KØ€OÛˆð �fÑ  °6Ñ!9Ø×јvÔ&ØÝ Ø—:‘:˜j¨8¨*Ó5‰à�:ˆà �vÑ Ø �:Ð Ü ˆX‹˜Ó à˜a˜b“\ˆEÜ—‘×/Ñ/°Ó7ˆ*Ø"'ˆ*�YÑ Ø × Ñ  Õ ,ð"ð% Q™KˆˆyÑØ×јvÕ&ð)ð*&€Dˆ�OØ�TÑØ˜,Ô'ˆ Ü ˆi‹œDÒ Ø'¨¨›mˆNÜ �.Ó !¤TÒ )Ü ! .Õ 1ñ,ñ(ðr"c ó—|r]tjj|tjj |««}|dk(rd|d<n|j dd«|d<d|vr||dvry|dj|«tjtjd|«t||||d |«} || d <d | vrt|d z«‚t||«} g| d <| D]S} tjj| tjj |««} | d j| «ŒUt| «t| t ||«t| «d | vrd| vrtd|z«‚d} | t#| d«krW| d| }tj$j'| d «}t)||||«|| d| <| dz } | t#| d«krŒW| d =g}d| vrL| dD]D}d|vrŒ|dD]5}|jtjj+||d«d«Œ7ŒF|r|D]} t-||||||||«Œy||fS#t.$r)}tjj1|d|z«‚d}~wwxYw)NÚrRÚDEPTHÚ\Ú/Útarget_build_filesFzLoading Target Build File '%s'TÚ_DEPTHÚincluded_filesz$ must not contain included_files keyÚtarget_defaultsr›z'Unable to find targets in build file %srrBr z while loading dependencies of %s)ryrzÚ RelativePathrnrorˆÚreplaceÚaddr‰rŠr„rr=r;r¡Ú#ProcessVariablesAndConditionsInDictÚ PHASE_EARLYrHrŸr r‹Ú ResolveTargetÚLoadTargetBuildFilerxr{)r>r}r?r7r~Údepthr€Úload_dependenciesÚdr‚r:Ú included_fileÚincluded_relativerfÚold_target_dictÚnew_target_dictr Ú target_dictÚ dependencyrƒs r r·r·ssñ€ñ ô � ‰ ×Ñ ¤r§w¡w§¡°Ó'GÓH€A؈B‚wØ€i�ÒàŸ9™9 T¨3Ó/€i�Ñð˜TÑ!ؘ$Ð3Ñ4Ñ4à ØÐ Ñ×"Ñ" ?Ô3ä‡/�/”#×$Ñ$Ø2°OôEô% _°d¸HØ%-¨t°Uó<€/ð$€/�(Ñð˜Ñ(Ü �?Ð%KÑKÓ LÐLä " ?°HÓ =€(Ø&(€/Ð"Ñ#Û€mô � ‰ ×Ñ  Ü "§¡§¡°Ó @ó BððÐ$Ñ%×,Ñ,Ð->Õ?ð  ô˜Ô(ô&Ø”{ I¨ô@ô ˜Ô(ð˜/Ñ)ؘÑ'Ü Ð>Ø$ñ%ó &ð&ð €EØ ”#�o iÑ0Ó1Ò 1ð(¨ Ñ2°5Ñ9€oÜŸ™×0Ñ0ØÐ)Ñ*ó,€oä� /Ø  /ô3à*9€o�iÑ  Ñ'Ø ˆq�j€eð ”#�o iÑ0Ó1Ó 1ð" Ð)Ð*ð€,Ø�/Ñ!Ø& yÔ1ˆ Ø ˜{Ñ *ØØ# NÔ3ˆ*Ø×ÑÜ �J‰J× $Ñ $ _°jÀ$Ó GÈÑ Jõ Lñ4ð2ñÛ"ˆ ðܘJ¨¨h¸ Ø$ e¨UÐ4Eõ Gñ#ð ˜\Ð *Ð*øô òÜ � ‰ ×"Ñ"Ø Ð /°/Ñ Aô Cà ûðúsÈ:IÉ JÉ$JÊJc óf— tjtjtj«|j«D]\}}|t «|<Œt |«t |tt||||d«} | s| S| \}} tj|«} || | fS#t$r,} tjjd| z«Yd} ~ yd} ~ wt$rS} td| tj¬«tt!j"«tj¬«Yd} ~ yd} ~ wwxYw)z˜Wrapper around LoadTargetBuildFile for parallel processing. This wrapper is used when LoadTargetBuildFile is executed in a worker process. Fzgyp: %s Nz Exception:)Úfile)ÚsignalÚSIGINTÚSIG_IGNrŒÚglobalsÚSetGeneratorGlobalsr·Úper_process_dataÚper_process_aux_dataÚpoprÚsysÚstderrÚwriterxÚprintÚ tracebackÚ format_exc) Ú global_flagsr>r7r~r¸r€Úgenerator_input_inforcrKÚresultr r‚rƒs r ÚCallLoadTargetBuildFilerÔæs€ð Ü ‡M�M”&—-‘-¤§¡Ô0ð#×(Ñ(Ö*‰ ˆˆUØ„gƒi�‚nð+ôÐ,Ô-Ü  Ô2BÜ!5°yØ!)¨5°%¸ó@€Fñ Ø €mà&,Ñ#€_�lô '×*Ñ*¨?Ó;€Oð Ø Ø ð ðøô ò܇J�J×Ñ�[ 1‘_Ô%Ü ûÜ òÜ ˆ,˜¤§ ¡ Õ+Ü Œ)× Ñ Ó ¤s§z¡zÕ2Ü ûðús+‚A?B!ÂB!Â! D0Â*"Cà D0ÃA D+Ä+D0có —eZdZy)ÚParallelProcessingErrorN©Ú__name__Ú __module__Ú __qualname__©r"r rÖrÖs„Ør"rÖcó—eZdZdZd„Zd„Zy)Ú ParallelStateaClass to keep track of state when processing input files in parallel. If build files are loaded in parallel, use this to keep track of state during farming out and processing parallel jobs. It's stored in a global so that the callback function can have access to it. cóv—d|_d|_d|_d|_t «|_g|_d|_y)NrF)Úpoolr¦r}ÚpendingÚsetÚ scheduledr Úerror©Úselfs r Ú__init__zParallelState.__init__s<€à€D„Ið€D„Nà€D„Ið€D„Lô“U€D„Nà€DÔà€D…Jr"cóD—|jj«|sÔ*Ø ×Ñ× Ñ  Õ0ð(ð ‡L‚L�AÑ…L؇N�N×ÑÔØ‡N�N×ÑÕr"N)rØrÙrÚÚ__doc__rærïrÛr"r rÝrÝs„ñòó&r"rÝc óz—t«}tj«|_t |«|_t |«|_d|_||_ |jj«|j s |j�r|jr�n|j s|jj«ŒN|j j«}|xjdz c_t«dt«dt«ddœ} |js,t!j"t!j$««|_|jj't(| ||||||f|j*¬«|j r�Œ|jr�Œ|jj1«|jj3«|jj5«d|_|jrt7j8d«yy#t,$r!} |jj/«| ‚d} ~ wwxYw)NrrBrÚnon_configuration_keysrž)rròrž)ÚargsÚcallback)rÝÚ threadingÚ Conditionr¦r[r rárâràr}rèrãÚwaitrÊrÆrßÚmultiprocessingÚPoolÚ cpu_countÚ apply_asyncrÔrïÚKeyboardInterruptÚ terminaterêÚcloserZrËÚexit) Ú build_filesr}r7r~r¸r€rÒÚparallel_staterÀrÑrƒs r ÚLoadTargetBuildFilesParallelrGsÛ€ä “?€.Ü&×0Ñ0Ó2€.Ôä $ [Ó 1€.ÔÜ  Ó-€.ÔØ€.ÔØ€.Ôð Ø×Ñ×$Ñ$Ô&Ø × %Ò %¨×)?Ó)?Ø × Ò Ù Ø × (Ò (Ø× Ñ ×%Ñ%Ô'Øà!×.Ñ.×2Ñ2Ó4€jà×Ò Ñ!Õä › ?Ñ3Ü")£)Ð,DÑ"EÜ$›YÐ':Ñ;ñ=€lð × Ò Ü-×2Ñ2´?×3LÑ3LÓ3NÓOˆÔØ×Ñ×%Ñ%Ü !Ø  ؘX u¨eÐ5IðKà#×?Ñ?ð &ôAð# × %Ô %¨×)?Ô)?ð4×Ñ×"Ñ"Ô$à×Ñ×ÑÔØ×Ñ×ÑÔØ€.Ôà×Ò܇H�HˆQ…Kðøô ò Ø×Ñ×!Ñ!Ô#Ø €Gûð úsÁD5HÆ HÈ H:ÈH5È5H:z{[(Ú{Ú[Ú()Ú}Ú]rkcóÞ—g}d}t|«D][\}}|tvr|j|«|dk(sŒ%|}Œ(|tvsŒ1|sy|j «t|k7ry|rŒT||dzfcSy)Nr)rrrB)r]Ú LBRACKETSr;ÚBRACKETSrÊ)Ú input_strÚstackÚstartrfÚchars r ÚFindEnclosingBracketGroupr}sy€Ø €%Ø €%ܘyÖ)�k€eˆTØ ŒyÑØ ‡l�l�4ÔØ �"‹Ø‰Ø ”Ò Ù ÙØ �‰‹œ ™Ò &ÙÚ Ø�u˜q‘yÐ!Ò!ð*ð r"có”—t|t«r8|r6|dk(ry|ddk(r|dd}|syd|dcxkrd kr|j«Syy) z|Returns True if |string| is in its canonical integer form. The canonical form is such that str(int(string)) == string. Ú0TrÚ-rBNFÚ1Ú9)rEÚ _str_typesÚisdigit)Ústrings r ÚIsStrCanonicalIntr�sb€ô �œ Ô#ñØ �3ŠØØ �‰�cÒ Ø˜˜�ˆÙØØ ��q‘ Ô ˜SÒ Ø�~‰~ÓÐð !ñ r"zy(?P(?P<(?:(?:!?@?)|\|)?)(?P[-a-zA-Z0-9_.]+)?\((?P\s*\[?)(?P.*?)(\]?)\))zy(?P(?P>(?:(?:!?@?)|\|)?)(?P[-a-zA-Z0-9_.]+)?\((?P\s*\[?)(?P.*?)(\]?)\))z|(?P(?P[\^](?:(?:!?@?)|\|)?)(?P[-a-zA-Z0-9_.]+)?\((?P\s*\[?)(?P.*?)(\]?)\))có—tjdk(rKt|«tur#t j dd|d«g|ddz}|St j dd|«}|S)NÚwin32z^cat ztype rrB)rËÚplatformr6r[ÚreÚsub)Úcmds r ÚFixupPlatformCommandrÁs^€Ü‡\�\�WÒÜ ˆCƒy”DÑÜ �V‰V�G˜W c¨!¡fÓ -Ð .°°Q°R°Ñ 8€cð €*ô �F‰F�7˜G SÓ )€cØ €*r"rBéc ót—|tk(r t}d}n&|tk(r t}d}n|tk(r t }d}nJ‚t |«}t|«r t|«S||vr|St|j|««}|s|S|}|j«|D�]:} | j«} tjtjd| «d| dv} | d} d | dv} | j!d «}| j#d «}t%||d«\}}||z}|||}||zd z}|d z }|||}| r:tj&j)|«}t+||«t-||||«}nt-||||«}|j/«}d | dvxr||k(}| s| r(t0j2j5|«}|d k(r| sd}| �r�t7|«tur|}n|j9d«}|d}t0j2j;|«rt=d|z«‚t>s!t0j2jA|«}n”t0j2j;«r*t>d}tjBjE||«}n|}t>d}t0j2jA|||«}tjBjG|«tjBjE||«}tjBjI|«}|d dD]}|jKd|z«Œ|jM«�nS| �r)d} | dr tO|«}d} t |«f}!tPjS|!d«}"|"�€Ætjtjd||«d }| dk(r—t1jT«}#|rt1jV|« tYj8|«}$ t[|$d«}%t |%j_|$d d««ja«}t1jV|#«|dk7súJ‚| rt=d| ›d|›d�«‚tc|«} tejf|| tdjhtdjhtdjh|¬«}'|'jmd «\}(})|'jo«dk7s|)rK|)jqd «}*trjtjK|*«t=d!||'jv|fz«‚|(jqd «ja«}|tP|!<nPtjtjd"||«|"}n'||vr|d#d$vrg}nt=d%|zd&z|z«‚||}t7|«turZ|D]F}+|d#d'k(rŒ ty|+tz«rŒt=d(|zd)zd*z|+j|j~z«‚t�||||«nDty|tz«s4t=d(t |«zd)zd+z|j|j~z«‚|r6t7|«tur|dd}nktYj8t |««}nLd },t7|«tur tjBjƒ|«},n|},|d|t |,«z||dz}|}�Œ=||k(r&tjtjd,|«n„tjtjd-|«t7|«tur@|rt7|d«turn7g}-|D]}+|-j…t-|+|||««Œ!|-}nt-||||«}t7|«tur/t‡|«D]\}.}/t|/«sŒt|/«||.<Œ!|St|«r t|«}|S#t\$r}&t=d|$d›d|&›�«‚d}&~&wwxYw#t1jV|#«wxYw#tj$r}&t=|&›d|›d|›�«‚d}&~&wwxYw).NÚ<Ú>Ú^Fz Matches: %rÚ!r6Úcommand_stringÚ|r²rBÚ@r©Ú rz(| cannot handle absolute paths, got "%s"ÚtoplevelÚqualified_out_dirz%s TÚis_arrayz(Executing command '%s' in directory '%s'Ú pymod_do_mainz%Error importing pymod_do_mainmodule (z): zUnknown command string 'z' in 'z'.)ÚshellÚstdoutrÌÚstdinÚcwdz while executing command 'ú' in rjz1Call to '%s' returned exit status %d while in %s.z2Had cache value for command '%s' in directory '%s'r©r%r¬zUndefined variable ú in r¬z Variable z- must expand to a string or list of strings; zlist contains a zfound a z?Found only identity matches on %r, avoiding infinite recursion.zFound output %r, recursing.)DrµÚearly_variable_reÚ PHASE_LATEÚlate_variable_reÚPHASE_LATELATEÚlatelate_variable_reÚstrrÚintr[ÚfinditerÚreverseÚ groupdictryr‰ÚDEBUG_VARIABLESr ÚendrrŸr ÚProcessListFiltersInDictÚExpandVariablesÚstriprnrorˆr6ÚsplitÚisabsrÚgenerator_filelist_pathsrZrzr±ÚEnsureDirExistsÚ WriteOnDiffrÍrþruÚcached_command_resultsr<rtÚchdirÚshlexÚ __import__Ú ImportErrorÚDoMainÚrstriprÚ subprocessÚPopenÚPIPErxÚ communicater÷rsrËrÌÚ returncoderEÚ_str_int_typesÚ __class__rØÚ#ProcessVariablesAndConditionsInListÚEncodePOSIXShellListr;r])0ÚinputÚphaser7Ú build_fileÚ variable_reÚexpansion_symbolr ÚmatchesÚoutputÚ match_groupÚmatchÚ run_commandr&Ú file_listÚ replace_startÚ replace_endÚc_startÚc_endÚ replacementÚcontents_startÚ contents_endÚcontentsÚprocessed_variablesÚexpand_to_listÚbuild_file_dirÚ contents_listror*Úrel_build_file_dirr+ÚfÚiÚ use_shellÚ cache_keyÚ cached_valueÚoldwdÚparsed_contentsÚ py_modulerƒÚpÚp_stdoutÚp_stderrÚp_stderr_decodedr™Úencoded_replacementÚ new_outputrfÚoutstrs0 r rBrBÏs8€à ŒkÒÜ#€KØÑØ ” ÒÜ"€KØÑØ ”ÒÜ&€KØÑàˆ5ä�%‹j€)Ü�yÔ!Ü ˆy‹>Ðð˜YÑ&Ø Ðô �×%Ñ% iÓ0Ó 1€'Ù Ø Ðà €&ð  ‡/�/ÔÜ€kØ × !Ñ !Ó #€E܇O�O”C×'Ñ'¨¸Ô>ð˜˜v™Ð&€KØÐ+Ñ,€Nð�u˜V‘}Ð$€Ið ×%Ñ% iÓ0€MØ—/‘/ )Ó,€Kô1°¸=¸>Ð1JÓKÑ€Wˆeð   %Ñ'€Kð˜M¨+Ð6€Kð# WÑ,¨qÑ0€NØ ‘?€Lؘ¨ Ð5€Hñ ÜŸO™O×4Ñ4°YÓ?ÐܘxÐ)<Ô=ä  ¨5Ø!4°jóB�hô! ¨5°)¸ZÓH€hð�~‰~Ó€Hð˜E &™MÐ)ÒF¨i¸;Ñ.F€Ná‘iô—w‘w—‘ zÓ2€nØ ˜2Ò ¡ið ˆò Ü ˆh‹œ4Ñ Ø ‰ à Ÿ™ sÓ+ˆ Ø! !Ñ$€kÜ �‰�‰�{Ô #ÜÐAÀKÑOÓPÐPå %Ü�w‰w�|‰|˜N¨KÓ8‰ä �7‰7�=‰=˜Ô (Ü-¨jÑ9ˆ(Ü"Ÿz™z×6Ñ6°~ÀxÓPÑ à-Ð Ü4Ð5HÑIÐÜ�w‰w�|‰|Ð-Ð/AÀ;ÓOˆÜ � ‰ ×"Ñ" 4Ô(ä—J‘J×+Ñ+¨D°.ÓA€kÜ �*‰*× Ñ  Ó &€aؘQ˜RÓ ˆ!Ø �‰�˜‘ Õð!à‡g�g†iâ Ø€iØ ˆzÒ Ü˜“>ˆØˆ ô�x“= .Ð1€iÜ+×/Ñ/° ¸4Ó@€lØ Ñ Ü �‰œ×+Ñ+ØBØ  .ô 2ðˆ à ˜_Ò ,ô —)‘)“+ˆ%Ù Ü �H‰H�^Ô $ð ä#Ÿk™k¨(Ó3ˆOð JÜ$ _°QÑ%7Ó8ˆiô˜i×.Ñ.¨¸q¸rÐ/BÓCÓD×KÑKÓMˆKä �H‰H�UŒOØ Ò$Ð $Ð$Ù ÝÚ(ª(ð4ó5ð 5ô*¨(Ó3ˆ(ð 6Ü× Ñ  °Ü(2¯©Ü(2¯©Ü'1§¡Ø%3ô 5ˆAð !Ÿ}™}¨RÓ0Ñ ˆ(�Hà �V‰V‹X˜Š]™hØ'Ÿ™¨wÓ7Ð Ü �J‰J× Ñ Ð-Ô .ôÐNØ$ a§l¡l°JÐ?ñ@óAð Aà Ÿ™¨Ó0×7Ñ7Ó9ˆ+à,7Ô˜yÒ)ä �‰œ×+Ñ+ØLØ  ô 1ð#‰ ð˜Ñ "Ø �B‰<˜:Ñ %ð‰+äÐ.°Ñ9Øñ Ø",ñ-ó.ð .ð  Ñ)ˆ ä ˆKÓœDÑ Ûˆ$ؘ‰|˜sÓ"¬:°d¼NÕ+Kܘ xÑ/ØHñIà+ñ,ðŸ™×0Ñ0ñ1ó2ð 2ðô*¨+°u¸iØ*4õ6ä ˜ ¤^Ô 4ܘ¤s¨8£}Ñ4ØHñIà#ñ$à&1×&;Ñ&;×&DÑ&DñEóFð Fñô ˆkÓ œdÑ "à™Q�‰ô—‘œS Ó-Ó.‰ðÐÜ ˆkÓ œdÑ "ô"Ÿj™j×=Ñ=¸kÓJÑà)Ðà�n�}Ð%¬Ð,?Ó(@Ñ@Ø�k�lÐ#ñ$€fð‚Iðwðz ˆu‚_܇O�O”C×'Ñ'ð!àõô‡O�O”C×'Ñ'Ð)FÈÔOÜ ˆFƒ|”tÑÙ ”D˜ ™“O¤tÑ+ð àˆ ÛˆDØ × Ñ Ü˜d E¨9°jÓAõ Cðð‰ä˜v u¨i¸ÓD€fô ˆ&ƒ\”TÑÜ" 6Ö*‰ ˆˆvÜ ˜6Õ "ܘF› ˆˆuŠ ð+ð €-ô˜Ô Ü �‹[€Fà €-øôYò JÝØ2AÀ!Ó2DÁaðIóJðJûð Jûô �H‰H�U�Oûôò 6ÜÚšx©ð5ó6ð 6ûð 6úsIÏ_<Ï1_Ï?+_<Ñ&A`ß _9ß _4ß4_9ß9_<ß<`à `7à`2à2`7c óŽ—t|«turt|dz«‚t|«dkr,t|dz|dzdzt t|««z«‚d}d}|t|«krÙ||}||dz}t|«t ur%tdj ||t|«««‚t|«|dzkDrZt||dz«t urC||dz} |d z}|t|«k7r/td j ||t|«|z ««‚d} |dz}|dk(rt||| |||«}|t|«krŒÙ|S) z]Returns the dict that should be used or None if the result was that nothing should be used.z must be a listr r)rz must be at least length 2, not NrBz.{} {} must be followed by a dictionary, not {}éz&{} {} has {} unexpected trailing items)r6r[rrHr:rbÚformatÚEvalSingleCondition) r¦Úconditions_keyrZr7r[rrrÓÚ cond_exprÚ true_dictÚ false_dicts r Ú EvalConditionrˆs€€ô ˆ)ƒ_œDÑ Ü �>Ð$5Ñ5Ó 6Ð6܈ƒ^�aÒô �> CÑ'¨)°A©,Ñ6Ø5ñ6Ü8;¼CÀ »NÓ8KñLó MðMð€!Ø €&Ø ŒC� ‹NÒØ˜!‘ €Iؘ!˜a™%Ñ €IÜ ˆIƒœdÑ"Ü ÐE×LÑLؘ ¤4¨ £?ó4ó 5ð5ä ˆ9ƒ~˜˜A™Ò¤$ y°°Q±Ñ'7Ó"8¼DÑ"@ؘQ ™UÑ#€jØ ˆa‰%€aØ Œc�)‹nÒ ÜÐ?×FÑFØ ˜)¤S¨£^°aÑ%7ó9ó:ð :ð€jØ ˆa‰%€aØ �‚~Ü"Ø �Y  ¨E°9¸jóJ€fð! ŒC� ‹NÓð& €-r"cój—t||||«}t|t«s"td|jj z«‚ |t vr t |}nt|dd«}|t |<t|ddi|«r|S|S#t$ro}tdt|jd«|j||jfz|j|j|j|j«} | ‚d}~wt $r6}t"j$j'|d|›d |›�«t)|«‚d}~wwxYw) zMReturns true_dict if cond_expr evaluates to true, and false_dict otherwise.úCVariable expansion in this context permits str and int only, found zrurlNz9%s while evaluating condition '%s' in %s at character %d.rzwhile evaluating condition 'r2)rBrErUÚ ValueErrorrVrØÚcached_conditions_astsÚcompilerurvr:róÚtextÚoffsetrwÚlinenoÚ NameErrorryrzr{r) r…r†r‡rZr7r[Úcond_expr_expandedÚast_coderƒÚ syntax_errors r rƒrƒ7s9€ô' y°%¸Ø'1ó3Ðä Ð&¬Ô 7Ü ð Ø/×9Ñ9×BÑBñ Có DðDðØÔ3Ñ3Ü'Ð(:Ñ;�häÐ+¨Z¸Ó@€hØ3;ÔÐ/Ñ0Ü ˆH�~ tÐ,¨iÔ8Ø ÐØ ÐøÜ òÜð 2ä # A§F¡F¨1¡I£°·±¸ ÀAÇHÁHÐMñ Nð !Ÿz™z¨1¯8©8°Q·X±X¸q¿v¹vóG€Lð ÐûÜ ò܇J�J×Ñ™qÚ 2±Jð#@ôAä �1‹+Ðûðús+Á8A=Á;A=Á= D2ÂA*C0Ã0 D2Ã<1D-Ä-D2cóÖ—|tk(rd}n|tk(rd}n |tk(ryJ‚||vry||}||=|D]3}t|||||«}|dk7sŒt ||||«t ||||«Œ5y)Nr�Útarget_conditions)rµr6r8rˆr´r‹)Úthe_dictrZr7r[r„Úconditions_listr¦Ú merge_dicts r ÚProcessConditionsInDictrš[s˜€ð" ŒkÒØ!�NØ ” ÒØ(�NØ ”ÒØ àˆ5à ˜8Ñ #Ø à˜^Ñ,€/àˆ~Ðã"€iܘy¨.¸%ÀØ)ó+€Jð�TÓô*¨*°eØ*3°ZôAô�˜: z°:Õ>ñ#r"cóf—|j«D]\}}t|t«sŒ||d|z<Œ y)Nr)rŒrEÚ_str_int_list_types)r7r—rcrKs r ÚLoadAutomaticVariablesFromDictr�‰s2€ð—N‘NÖ$�j€cˆ5Ü�%Ô,Õ-Ø"€i��c‘ Òñ%r"cóÖ—|jdi«j«D]F\}}t|t«sŒ|j d«r|dd}||vrŒ2|dur ||vr||}n|}|||<ŒHy)Nr7Ú%r)r<rŒrErœÚendswith)r7r—Ú the_dict_keyrcrKÚ variable_names r ÚLoadVariablesFromVariablesDictr£‘s€€ð—L‘L ¨bÓ1×7Ñ7Ö9�j€cˆ5Ü �eÔ0Ô 1Øà ‡|�|�CÔØ˜#˜2�h€mØ ˜)Ñ #àØ ˜Ñ $¨¸(Ñ)Bð˜Ñ'‰à€mà$€IˆmÒñ#:r"cóÄ—|j«}t||«d|vr2|dj«D] \}}|||<Œ t|d|||d«t |||«|j«D]g\}}|dk7sŒ t |t «sŒt||||«}t |t«s(td|jjzdz|z«‚|||<Œi|j«}t||«t |||«t||||«|j«}t||«t |||«|j«D]”\}}|dk(st |t «rŒt|«turt|||||«Œ=t|«turt!||||«Œ]t |t"«rŒnt%d|jjzdz|z«‚y)zôHandle all variable and command expansion and conditional evaluation. This function is the public entry point for all variable expansions and conditional evaluations. The variables_in dictionary will not be modified by this function. r7rŠz for ú Unknown type N)Úcopyr�rŒr´r£rErrBrUr‹rVrØršr6rbr[rWÚ _int_typesr_) r—rZÚ variables_inr[r¡r7rcrKÚexpandeds r r´r´­sû€ð×ÑÓ!€)Ü  ¨HÔ5à�HÑð ˜{Ñ+×1Ñ1Ö3‰ ˆˆUØ€i�‚nð4ô(¨°Ñ(=¸uØ(1°:¸{ôLô! ¨H°lÔCà—N‘NÖ$�j€cˆ5à ˆkÓœj¨´ Õ;Ü  ¨¨y¸*ÓE€hÜ ˜¤.Ô 1ÜðØ'×1Ñ1×:Ñ:ñ;Ø=DñEØGJñKóLð Lð€hˆs‚mð%ð×ÑÓ!€)Ü  ¨HÔ5Ü  ¨H°lÔCôD˜( E¨9°jÔAð×ÑÓ!€)Ü  ¨HÔ5Ü  ¨H°lÔCð—N‘NÖ$�j€cˆ5ð ˆkÒœZ¨¬zÔ:ØÜ ˆEƒ{”dÑô*¨%°¸ Ø*4°cõ;ä ˆe‹œÑ ô *¨%°¸ Ø*4õ6ä ˜œzÕ *Ü �o¨¯©×(@Ñ(@Ñ@ØñØ #ñ$ó %ð%ñ%%r"cóT—d}|t|«k�r||}t|«turt||||«nÜt|«turt ||||«n¼t |t«rtt||||«}t |t«r|||<nˆt|«tur||||dz|t|«z }Œ°td|jjzdz|z«‚t |t«s(td|jjzdz|z«‚|dz}|t|«kr�Œyy)NrrBzIVariable expansion in this context permits strings and lists only, found z at r¥z at index )rHr6rbr´r[rWrErrBrUr‹rVrØr§r_)Úthe_listrZr7r[rfr™r©s r rWrWs9€ð €%Ø ”�H“ ÓØ �E‰?€DÜ ˆDƒz”TÑô*¨$°°yÀ*ÕMÜ ˆd‹”tÑ Ü)¨$°°yÀ*ÕMÜ �Dœ*Ô %Ü   u¨i¸ÓD€hÜ �HœnÔ -Ø"ˆ�ŠÜ �‹>œTÑ !Ø"*ˆ��u˜Q‘wÐØ ”�X“шð äð#Ø%-×%7Ñ%7×%@Ñ%@ñAØCIñJàñóð ô˜œjÔ )Ü �o¨¯©×(?Ñ(?Ñ?Ø"ñ#Ø%*ñ+ó ,ð,à �A‰I€Eð7 ”�H“ Ör"cóΗi}|dD]Z}||jdg«D]@}tjj||d|d«}||vrt d|z«‚|||<ŒBŒ\|S)ayBuilds a dict mapping fully-qualified target names to their target dicts. |data| is a dict mapping loaded build files by pathname relative to the current directory. Values in |data| are build file contents. For each |data| value with a "targets" key, the value of the "targets" key is taken as a list containing target dicts. Each target's fully-qualified name is constructed from the pathname of the build file (|data| key) and its "target_name" property. These fully-qualified names are used as the keys in the returned dict. These keys provide access to the target dicts, the dicts in the "targets" lists. r­r›r3r4z!Duplicate target definitions for )r<ryrzÚQualifiedTargetr)r}r›r[rœr3s r ÚBuildTargetsDictr®?sˆ€ð €'ØÐ-Ô.€jØ�zÑ"×&Ñ& y°"Ö5ˆÜ—J‘J×.Ñ.¨zØ/5°mÑ/DØ/5°iÑ/@óB€kð ˜Ñ ÜÐ:¸[ÑHÓIÐIØ#€gˆkÒñ 6ð/ð €.r"có—tD��cgc]}dD]}||z‘Œ Œ}}}|j«D]Ò\}}tjj |«}|d}|D]¤}|j |g«} t | «D]‚\} }tjj|||«\} } } ts|} tjj| | | «}|| | <|dk7sŒ_||dvsŒgtd|zdz|zdz|zdz«‚Œ¦ŒÔycc}}w) aÎMake dependency links fully-qualified relative to the current directory. |targets| is a dict mapping fully-qualified target names to their target dicts. For each target in this dict, keys known to contain dependency links are examined, and any dependencies referenced will be rewritten so that they are fully-qualified and relative to the current directory. All rewritten dependencies are suitable for use as keys to |targets| or a similar dict. ©r©r%r¬r4r zFound r4ú of z, but not in dependenciesN) Údependency_sectionsrŒryrzÚ BuildFiler<r]r¶ržr­r)r›ÚdepÚopÚall_dependency_sectionsrœr¿Útarget_build_filer4Údependency_keyr rfÚdep_fileÚ dep_targetÚ dep_toolsetrÀs r ÚQualifyDependenciesr¼Ys?€õ)<ô7Ù(; Û'5 ð! 2›Xà'5ð&Ø(;ðñ7ð%Ÿ]™]ž_Ñ€fˆkÜŸ ™ ×,Ñ,¨VÓ4ÐØ˜)Ñ$€GÛ1ˆØ —_‘_ ^°RÓ8€lÜ! ,Ö/‰*ˆ%�Ü,/¯J©J×,DÑ,DØ ˜s Gó--Ñ)ˆ�*˜kå àˆ+Ü—Z‘Z×/Ñ/°Ø0:Ø0;ó=ˆ ð)ˆ �UÑð ˜^Ó +Ø ˜[¨Ñ8Ò 8ܘ JÑ.°Ñ7¸.ÑHØñ Ø"(ñ)Ø+FñGóHð Hñ0ñ2ñ-ùó 7sŠDc ó—|j«D�]K\}}|d}tjj|«}tD�]}|j |g«}d}|t |«ksŒ'tjj||«\} } } | dk7r | dk7r|dz}ŒE| |k(rtd|zdz|zdz«‚||=|dz }|| d} | D]v} t| j d d ««rŒ| d }| dk7r| |k7rŒ/| d}| dk7r| |k7rŒ?tjj| ||«}|dz}|j||«Œx|dz}|t |«krŒñ�Œ�ŒNy ) a¿Expands dependencies specified as build_file:*. For each target in |targets|, examines sections containing links to other targets. If any such section contains a link of the form build_file:*, it is taken as a wildcard link, and is expanded to list each target in build_file. The |data| dict provides access to build file dicts. Any target that does not wish to be included by wildcard can provide an optional "suppress_wildcard" key in its target dict. When present and true, a wildcard dependency link will not include such targets. All dependency names, including the keys to |targets| and the values in each dependency list, must be qualified when this function is called. r4rÚ*rBzFound wildcard in r±z referring to same build filer›r2Fr3N) rŒryrzr³r²r<rHÚParseQualifiedTargetrr;r­Úinsert)r›r}rœr¿r4r·r¸r rfÚdependency_build_fileÚdependency_targetÚdependency_toolsetÚdependency_target_dictsÚdependency_target_dictÚdependency_target_nameÚdependency_target_toolsetrÀs r ÚExpandWildcardDependenciesrÈ€sÀ€ð %Ÿ]™]Ÿ_Ñ€fˆkؘ)Ñ$€GÜŸ ™ ×,Ñ,¨VÓ4Ðß-Ð-ˆØ —_‘_ ^°RÓ8€lð€eØ ”C˜ Ó%Ó %ä �J‰J× +Ñ +¨L¸Ñ,?Ó @ñ GÐ Ð 1Ð3Eà  Ò #Ð(:¸cÒ(Aà˜!‘)ˆ%Ø à Ð$5Ò 5ôÐ-°Ñ>ÀÑGØñ Ø"AñBóCð Cð ˜Ð ؘ‘ ˆð #'Ð'<Ñ"=¸iÑ"HÐÛ&=Ð "Ü Ð'×+Ñ+Ð,?ÀÓGÔ HØ Ø#9¸-Ñ#HÐ Ø 3Ò&ØÐ#9Ò9Ø Ø&<¸YÑ&GÐ #Ø  CÒ'Ø Ð$=Ò=Ø Ü—z‘z×1Ñ1Ð2GØ2HØ2KóMˆ*ð˜!‘)ˆ%Ø × Ñ ˜e ZÕ 0ð'>ð"˜‘ ˆðS ”C˜ Ó%Õ %ò .ñ-r"cóZ—i}|D�cgc]}||vsŒ|j||«‘Œc}Scc}w)z=Removes duplicate elements from l, keeping the first element.©Ú setdefault)ÚlÚseenrƒs r ÚUnifyrÎÅs0€à €$Ù)*Ó <© A¨a°tªmˆ$�/‰/˜!˜QÕ ¨Ñ <Ð<ùÒ ©räräs r Ú__repr__zDependencyGraphNode.__repr__s€Ø &¨¯©Ñ 1Ð1r"cóp—t«}d„}t|jdd|¬«}|rƒ|j«}|j |j «t|j|¬«D];}d}t|j |¬«D]}|j |vsŒd}n|sŒ6||gz }Œ=|rŒƒt|«S)Ncó—|jS)zAExtracts the object that the node represents from the given node.rç)r`s r ÚExtractNodeRefz9DependencyGraphNode.FlattenToList..ExtractNodeRefs €à �X‰X€or")rcTF)rÚsortedrårÊr³rär r[)råÚ flat_listrëÚin_degree_zerosr`Únode_dependentÚis_in_degree_zeroÚnode_dependent_dependencys r Ú FlattenToListz!DependencyGraphNode.FlattenToList sÅ€ô “ €Iòô˜TŸ_™_©QÐ/°^ÔD€Oá ð × Ñ Ó "€d؇m�m�D—H‘HÔô# 4§?¡?¸×Gˆ.Ø Ðô+1°×1LÑ1LØ5C÷+EÐ %à*×.Ñ.°)Ò;ð !&Ð Ù ð+Eò ð ˜nÐ-Ñ -‰/ð'Hò ô> � ‹?Ðr"cóh‡‡‡—gŠt«Šˆˆˆfd„Љj|«‰||g«‰S)zR Returns a list of cycles in the graph, where each cycle is its own list. c óÌ•—|jD]T}||vr+‰j|g|d|j|«dzz«Œ2|‰vsŒ7‰j|«‰||g|z«ŒVy)NrB)rår;rfr³)r`rorgÚVisitÚresultsÚvisiteds €€€r rõz-DependencyGraphNode.FindCycles..VisitCseø€Ø—?”?ˆ%Ø �D‰=Ø �.‰.˜%˜ 4Ð(>¨¯©°EÓ):¸QÑ)>Ð#?Ñ?Õ @ؘ'Ò!Ø �+‰+�eÔ Ù �˜�w ‘~Õ &ñ #r")rár³)rårõrör÷s @@@r Ú FindCycleszDependencyGraphNode.FindCycles<s5ú€ð€GÜ‹e€Gö'ð ‡K�K�ÔÙ ˆ$��Ôà €Nr"Ncóª—|dk(rg}|jD]<}|jdk7sŒ|j|vsŒ"|j|j«Œ>|S)z+Returns a list of just direct dependencies.N)r rär;©rår rÀs r ÚDirectDependenciesz&DependencyGraphNode.DirectDependenciesPsP€à�tÒØ€là×'Ô'ˆ à �‰˜4Ó  J§N¡N¸,Ò$FØ×јJŸN™NÕ+ð(ð Ðr"cóà—|dk(rg}d}|t|«krV||}||}d}|jdg«D]!}||vsŒ|j||z|«|dz}Œ#|dz}|t|«krŒV|S)a^Given a list of direct dependencies, adds indirect dependencies that other dependencies have declared to export their settings. This method does not operate on self. Rather, it operates on the list of dependencies in the |dependencies| argument. For each dependency in that list, if any declares that it exports the settings of one of its own dependencies, those dependencies whose settings are "passed through" are added to the list. As new items are added to the list, they too will be processed, so it is possible to import settings through multiple levels of dependencies. This method is not terribly useful on its own, it depends on being "primed" with a list of direct dependencies such as one provided by DirectDependencies. DirectAndImportedDependencies is intended to be the public entry point. NrrBr )rHr<rÀ)rår›r rfrÀÚdependency_dictÚ add_indexÚimported_dependencys r Ú_AddImportedDependenciesz,DependencyGraphNode._AddImportedDependencies\s¢€ð$�tÒØ€là €EØ ”#�lÓ#Ò #Ø Ñ&€jØ  Ñ+€oð€ià × Ñ Ð9¸2Ö >ð à  lÒ 2Ø × Ñ ˜e iÑ/Ð1DÔ EØ !‘m‰)ð ?ð�a‰i€eð ”#�lÓ#Ó #ð" Ðr"cóH—|j|«}|j||«S)z´Returns a list of a target's direct dependencies and all indirect dependencies that a dependency has advertised settings should be exported through the dependency for. )rûr)rår›r s r ÚDirectAndImportedDependenciesz1DependencyGraphNode.DirectAndImportedDependencies…s'€ð ×*Ñ*¨<Ó8€LØ × (Ñ (¨°,Ó ?Ð?r"cóЗ|€ t«}|jD]J}|j€Œ|j|vsŒ|j|«|j |j«ŒL|S)zEReturns an OrderedSet of all of a target's dependencies, recursively.)rr räÚDeepDependenciesr³rús r rz$DependencyGraphNode.DeepDependenciesŽsb€àÐô “\€là×'Ô'ˆ à �‰Ð ØØ �‰˜|Ò +Ø×#Ñ# LÔ1Ø×јŸ™Õ(ð (ð Ðr"có\—|€ t«}|j€|Sd||jvr td«‚d||jvrtd||jdz«‚||jd}|tv}|r|s|S|dk(r<||jj dd«s|j |j«|S|s|dvr|S|s |d k(r|s|S|j|vrD|j |j«|s|s%|j D]}|j|||d «Œ|S) auReturns an OrderedSet of dependency targets that are linked into this target. This function has a split personality, depending on the setting of |initial|. Outside callers should always leave |initial| at its default setting. When adding a target to the list of dependencies, this function will recurse into itself with |initial| set to False, to collect dependencies that are linked into the linkable target for which the list is being built. If |include_shared_libraries| is False, the resulting dependencies will not include shared_library targets that are linked into this target. r3z&Missing 'target_name' field in target.r6z!Missing 'type' field in target %srÛÚdependencies_traverseT)rrr r rF)rrärÚlinkable_typesr<r³r Ú_LinkDependenciesInternal)rår›Úinclude_shared_librariesr ÚinitialÚ target_typeÚ is_linkablerÀs r rz-DependencyGraphNode._LinkDependenciesInternalŸsj€ð Ðô “\€lð ‡x�xÐØ Ðð ˜G D§H¡HÑ-Ñ-Ü Ð=Ó >Ð>à �W˜TŸX™XÑ&Ñ&Ü Ð8ؘTŸX™XÑ& }Ñ5ñ6ó 7ð7ð˜$Ÿ(™(Ñ# FÑ+€Kà¤Ð/€Ká‘{ð Ðð �vÒØ �D—H‘HÑ × !Ñ !Ð"9¸4Ô @Ø×Ñ�t—x‘xÔ Ø Ðñ �{ð'9ñ9ðÐñ ˜ Ð'7Ò7Ù $Ø Ðð ‡x�x�|Ñ#Ø×Ñ�t—x‘xÔ Ù ™ ð ×+Ô+ˆJØ × .Ñ .¨wØ/GØ/;¸Uõ Dð,ð Ðr"cód—||jjdd«}|j||«S)zi Returns a list of dependency targets whose link_settings should be merged into this target. Ú(allow_sharedlib_linksettings_propagationT)rär<r)rår›r s r ÚDependenciesForLinkSettingsz/DependencyGraphNode.DependenciesForLinkSettingsös7€ð �—‘Ñ×ÑÐHÈ$ÓOðà × )Ñ )¨'Ð3KÓ LÐLr"có&—|j|d«S)zP Returns a list of dependency targets that are linked into this target. T)r)rår›s r ÚDependenciesToLinkAgainstz-DependencyGraphNode.DependenciesToLinkAgainsts€ð × )Ñ )¨'°4Ó 8Ð8r"r–)NT)rØrÙrÚrðrrârærèròrørûrrrrrrrÛr"r rßrßösV„ñô ˜(ô òò 2ò0òdó( ó'óR@óð$<@óUòn Mó9r"rßcó$—i}|j«D]\}}||vsŒ t|«||<Œtd«}|j«D]Á\}}||}tjj |«}|j d«}|s$|g|_|jj|«Œa|D]\}|j |«} | std|›d|›�«‚|j j| «| jj|«Œ^ŒÃ|j«} t| «t|«k7rÕ|jsOtt|««}||}|j j|«|jj|«g} |j«D]>} | D� cgc]} | j‘Œ}} | jddj!|«z«Œ@tj#ddj!| «z«‚|| gScc} w)Nr z Dependency 'z(' not found while trying to load target ú Cycle: %sú -> z%Cycles in dependency graph detected: Ú )rŒrßryrzr³r<r rår;rròrHÚnextÚiterrørärZrâ)r›Údependency_nodesrœÚspecÚ root_nodeÚ target_noder·r rÀÚdependency_noderíÚcyclesÚcycler`Úpathss r ÚBuildDependencyListr  sõ€ðÐØ—m‘m–o�l€fˆdØ Ð%Ò%Ü!4°VÓ!<Ð�vÒð&ô " $Ó'€)Ø—m‘m–o�l€fˆdØ" 6Ñ*€KÜŸ ™ ×,Ñ,¨VÓ4ÐØ—8‘8˜NÓ+€LÙ Ø"+ €kÔØ×Ñ×!Ñ! +Õ.ã$ˆ*Ø*×.Ñ.¨zÓ:ˆÙÝÚ7AÁ6ðKóLð Là× Ñ ×'Ñ'¨Ô8Ø×"Ñ"×)Ñ)¨+Õ6ñ %ð&ð ×%Ñ%Ó'€)ô ˆƒ^”s˜7“|Ò#Ø × Ò ô”D˜“MÓ"€fØ$ VÑ,€kØ×Ñ×%Ñ% iÔ0Ø×Ñ×!Ñ! +Ô.à €FØ×%Ñ%Ö'ˆÙ$)Ó*¡E˜Dˆt�x‹x E€eÐ*Ø ‡m�m�K &§+¡+¨eÓ"4Ñ4Õ5ð(ô × /Ñ /Ø0°4·9±9¸VÓ3DÑDó FðFð ˜IÐ &Ð&ùò +sÆ(H có´—i}|j«D]4}tjj|«}||vsŒ't |«||<Œ6|j «D]Î\}}tjj|«}||}|j dg«}|D]Ž} tjj|«}||k(rŒ)|j |«} | std|z«‚| |jvsŒY|jj| «| jj|«Œ�ŒÐt d«} |j«D]Q}t|j«dk(sŒ|jj| «| jj|«ŒS| j«} t| «t|«k7rÞ| jsXtt!|j«««} | jj| «| jj| «g}| j#«D]>}|D�cgc]}|j$‘Œ}}|jddj'|«z«Œ@tj)ddj'|«z«‚y#t$r)} tjj| d|z«‚d} ~ wwxYwcc}w) Nr z,while computing dependencies of .gyp file %szDependancy '%s' not foundrrrz/Cycles in .gyp file dependency graph detected: r)rVryrzr³rßrŒr<rr{r r;rårWrHròrrrørärZrâ)r›rrœr[rÚbuild_file_nodeÚtarget_dependenciesrÀrÁrƒrrríÚ file_noderrr`rs r Ú#VerifyNoGYPFileCircularDependenciesr%=s’€ðÐØ— ‘ –€fÜ—‘×%Ñ% fÓ-€JØ Ð)Ò )Ü%8¸Ó%DÐ�zÒ"ðð —m‘m–o�l€fˆdÜ—‘×%Ñ% fÓ-€JØ& zÑ2€OØŸ(™( >°2Ó6ÐÛ)ˆ ðÜ #§ ¡ × 4Ñ 4°ZÓ @Ðð  *Ò ,àØ(×,Ñ,Ð-BÓC€oÙ ÜÐ2Ð5JÑJÓKÐKØ  × <Ñ <Ò <Ø×$Ñ$×+Ñ+¨OÔ<Ø×"Ñ"×)Ñ)¨/Õ:ñ!*ð &ô0" $Ó'€)Ø)×0Ñ0Ö2€oÜ ˆ?× 'Ñ 'Ó(¨AÓ-Ø×"Ñ"×)Ñ)¨)Ô4Ø×Ñ×!Ñ! /Õ2ð3ð ×%Ñ%Ó'€)ô ˆƒ^”sÐ+Ó,Ò,Ø × Ò ô”tÐ,×3Ñ3Ó5Ó6Ó7€iØ×Ñ×#Ñ# IÔ.Ø×Ñ×!Ñ! )Ô,Ø €FØ×%Ñ%Ö'ˆÙ$)Ó*¡E˜Dˆt�x‹x E€eÐ*Ø ‡m�m�K &§+¡+¨eÓ"4Ñ4Õ5ð(ô × /Ñ /Ø:¸T¿Y¹YÀvÓ=NÑNó PðPð-øô7òÜ � ‰ ×"Ñ"Ø Ð=À ÑJô Là ûðüòH+sÂJ È>KÊ KÊ)$K Ë Kcó’—|D]Â}||}tjj|«}|dk(r||j«}nB|dk(r||j |«}n(|dk(r||j |«}nt d|z«‚|D]<}||} || vrŒ tjj|«} t|| ||| «Œ>ŒÄy)Nr$r)r8zCDoDependentSettings doesn't know how to determine dependencies for )ryrzr³rrrrr‹) rcrír›rrœr¿r[r rÀrýrÁs r ÚDoDependentSettingsr'xsñ€ó€fؘ&‘/€KÜ—‘×%Ñ% fÓ-€Jà Ð&Ò&Ø% fÑ-×>Ñ>Ó@�lØ Ð+Ò +à ˜6Ñ "× @Ñ @ÀÓ Iñà �Ò à ˜6Ñ "× >Ñ >¸wÓ Gñô ð*Ø,/ñ0ó 1ð1ó#ˆ Ø  Ñ+€oØ �OÑ #ØÜ!Ÿj™j×2Ñ2°:Ó>ÐÜ�˜o¨cÑ2ØÐ2õ4ñ #ñ!r"có~—|D�]2}||}|d}|dk(r¤d|vrŒ|jdg«dd|d<||j|«}d}|t|«krK||} || } | ddk(r| jdd«r| ddk7r | |dvr||=n|dz}|t|«krŒKt|«dkDr||d<Œ³|d=Œ·|tvsŒÀ||j |«} | D]-} | |k(rŒ d|vrg|d<| |dvsŒ|dj | «Œ/|s�Œ d|vs�Œt |«D� cgc] } | |dvr| ‘Œ c} |d<�Œ5ycc} w) Nr6Ústatic_libraryr r(rÚhard_dependencyFrB)r<rrHrrr;Úreversed) rír›rÚsort_dependenciesrœr¿r r rfrÀrýÚlink_dependenciesr´s r ÚAdjustStaticLibraryDependenciesr.•sÈ€ô€fؘ&‘/€KؘfÑ%€KàÐ&Ò&Ø ˜{Ñ *Øà-8¯_©_Ø ˜"ó.Ùð.!€kÐ)Ñ*ð ˜6Ñ "× @Ñ @ÀÓ Iðà€eØ ”C˜ Ó%Ò %Ø! %Ñ(ˆ Ø! *Ñ-ˆð ˜FÑ #Ð'7Ò 7Ø×#Ñ#Ð$5°uÔ=Ø ˜FÑ #Ð'7Ò 7ؘk¨.Ñ9Ñ9ð˜5Ñ!à˜!‘)ˆ%ð ”C˜ Ó%Ó %ô& ˆ\Ó ˜QÒ Ø&2ˆ �NÒ#à ˜Ñ 'à œÒ &ð ˜6Ñ "× <Ñ <¸WÓ Eðã)ˆ*Ø ˜Ò Ø Ø Ñ,Ø(*ˆ+�nÑ %ؘ[¨Ñ8Ò8Ø �nÑ %× ,Ñ ,¨ZÕ 8ð *ó ˜~°Ó<Ü6>¸yÔ6Ió'NÑ6I¨sØ*-°¸^Ñ1LÑ*Lò(+Ð6Iñ'Nˆ �NÓ#ñCùòB'NsÄ D:z ["']?[-/$<>^]c ó¢—||k(stj|«r|Stjj tjj t jjtjj|«tjj|««|««jdd«}|ddk(r|dz }|S)Nr«r¬r) Ú exception_rerarnror‡rZryrzr±rˆr²)Úto_fileÚfro_filer™Úrets r ÚMakePathRelativer4æs£€ð$ �ÒœL×.Ñ.¨tÔ4Ø €Kô �'‰'× Ñ œ2Ÿ7™7Ÿ<™<Ü � ‰ ×Ѥ§¡§¡°Ó 9Ü "§¡§¡°Ó 8ó :à $ó&ó '÷(/¡w¨t°SÓ'9ðð ˆB�x�3‚Ø ˆS�j€cØ €Jr"có‡ —d„Š ˆ fd„}d}tˆ fd„|D««}|D�]:} d} t| t«r6|rt||| «} n| } t| t«r| j d«sid} nft | «turi} t| | ||«nDt | «turg} t| | ||«n"td| jjz«‚|r9| r || ||«rŒÁ|j| «‰ | «sŒÛ|j| «Œí| r| |vr|j!| «| r| |vrŒ|j#|| «‰ | «r|j| «|d z}�Œ=y) Ncó—|jSr–)Ú__hash__)Úvals r ÚzMergeLists.. s€˜CŸLšLr"có$•—‰|«r||vS||vSr–rÛ)ÚxrrÌÚ is_hashables €r Úis_in_set_or_listz%MergeLists..is_in_set_or_list sø€Ù�1„~Ø �!ˆV€mØ �ˆ6€Mr"rc3ó4•K—|]}‰|«sŒ |–—Œy­wr–rÛ)Ú.0r;r<s €r Ú zMergeLists..søèø€Ð8¡2˜a©°Q­œ¡2ùsƒ ‘FrTz/Attempt to merge list item of unsupported type rB)rárErUr4rÚ startswithr6rbr‹r[Ú MergeListsr_rVrØr;r³ÚremoverÀ) ÚtoÚfror1r2Úis_pathsr;r=Ú prepend_indexÚhashable_to_setr™Ú singletonÚto_itemr<s @r rBrBsbø€ñ)€+ôð €-ôÓ8¡2Ó8Ó8€/Ü€dØ€IÜ�$œÔ'á Ü" 7¨H°dÓ;‰àˆä˜œzÔ*¨t¯©¸sÔ/Cð‰ Ü ˆd‹”tÑ ð€gÜ�˜$ ¨Õ2Ü ˆd‹”tÑ ð €gÜ�˜$ ¨Õ2ä Ø ;Ø �.‰.× !Ñ !ñ "ó #ð#ññÑ/°¸È"ÕMØ � ‰ �'ÔÙ �wÕ Ø × Ñ ˜gÕ &ñ ˜' R™-Ø � ‰ �'Ôñ ˜' Rš-ð  ‡i�i� ˜wÔ'Ù �WÔ Ø×јGÔ$Ø# aÑ'‚mñkr"c ó”—|j«D�]4\}}||vrŠd}t|t«rt||t«sd}nt|«t||«urd}|rEt d|j j zdz||j j zdz|z«‚t|t«r$t|«}|rt|||«||<ŒÃ|||<ŒÉt|«tur||vri||<t|||||«Œõt|«tu�r|d}d} |dk(r|dd} | | dzg} g|| <n9|d k(r|dd} | dz| dzg} d} n"|dk(r|dd} | | dz| d zg} n |} | dz| dzg} | D]} | |vsŒtd |zd z| z«‚| |vri|dk(r�Œˆt|| «turSt d|j j zdz|| j j zdz| zd z|zd z«‚g|| <t| «} t|| |||| | «�Œt d|j j zdz|z«‚y)NFTz$Attempt to merge dict value of type z into incompatible type z for key rÚ=Ú?Ú+zIncompatible list policies ú and rrkz0Attempt to merge dict value of unsupported type )rŒrErUr6r_rVrØr!r4rbr‹r[rrB)rDrEr1r2r“r”Ú bad_mergeÚis_pathÚextr;Ú list_baseÚlists_incompatibleÚlist_incompatiblerFs r r‹r‹Nsá€à�i‰i�k�d€aˆð  ˆB�wØ€iÜ �A”~Ô &ܘ"˜Q™%¤Ô0؉)Ü �‹7œ$˜r !™u›+Ñ %؈ á ÜØ 2°Q·[±[×5IÑ5IÑ IØ &ñ 'Ø)+¨A©¯©×)AÑ)Añ Bà ñ àñ óð ô�!”^Ô$ä˜aÓ €gÙ Ü  ¨(°AÓ6ˆˆ1Šàˆˆ1ŠÜ ˆa‹”D‰à �"‰W؈ˆ1‰Ü��A‘˜˜7 HÕ-Ü ˆa‹”DŠð ˆb‰E€cØ€fØ �ŠØ�c�r�Fˆ Ø'¨°S©Ð9ÐØˆˆ9Š Ø �#Š:Ø�c�r�Fˆ Ø'¨#™o¨y¸3©Ð?ÐØ‰Ø �#Š:Ø�c�r�Fˆ Ø'¨°S©¸)Àc¹/ÐJÑàˆ Ø'¨#™o¨y¸3©Ð?Ðó 2Ð Ø  Ò #ÜÐ6¸Ñ:¸WÑDØ*ñ+ó,ð ,ð 2ð �b‰Ø �#Š:ñ Ü �"�Y‘-Ó ¬Ñ ,ôØ4°q·{±{×7KÑ7KÑKØ(ñ)Ø+-¨i©=×+BÑ+B×+KÑ+KñLàñà%ñ&à(+ñ,à./ñ0à25ñ6ó7ð 7𠈈9‰ ô˜yÓ)€hÜ��I‘  7¨H°hÀÖGä Ø <Ø �+‰+× Ñ ñ Ø!,ñ -Ø/0ñ 1ó 2ð2ñyr"c óž—||vry|d|}|jdg«D]}t||||||gz«Œt||||«d|vr|d=yy)Nr%Ú inherit_fromÚabstract)r<ÚMergeConfigWithInheritancer‹)Únew_configuration_dictr[r¿Ú configurationr÷Úconfiguration_dictÚparents r rYrY±s„€ð�gÑØ ð#Ð#3Ñ4°]ÑCÐð#×&Ñ& ~°rÖ:€fÜÐ5°zØ*¨F°G¸}¸oÑ4MõOð;ô  Ð #Ð%7Ø ˜ô%ðÐ)Ñ)ؘzÑ*ð*r"c ó—gd¢}tjj|«}d|vrdii|d<d|vrG|dj«D��cgc]\}}|j d«s|‘Œ}}}t |«d|d<i}|d}|j«D]�\} } | j d«rŒi} |j«D]A\} } | dd}||vr| dd}n| }|t vsŒ tjj| «| | <ŒCt| ||| g«| || <Œƒ|j«D] } || |d| <Œ|d}|j«D��cic]\}}|j d«rŒ||“Œc}}|d<g}|D]-} | dd}||vr| dd}n| }|t vsŒ|j| «Œ/|D]} || =Œ|dj«D]:} |d| }|j«D]} | tvsŒ t| ›d| ›d |›�«‚Œ<ycc}}wcc}}w) N)rLrNrMr%r¬r%ÚDefaultr'rXrrz not allowed in the z configuration, found in target )ryrzr³rŒr<rìròrŸr rYrVr;Úinvalid_configuration_keysr)rœr¿Ú key_suffixesr[rrÚconfigÚconcreteÚmerged_configurationsÚconfigsr[Úold_configuration_dictrZrcÚ target_valÚkey_extÚkey_baser“r”Ú delete_keysr\s r ÚSetUpConfigurationsrkÈs’€ò +€,ä�z‰z×#Ñ# FÓ+€*ð ˜[Ñ (Ø%.° O€KÐ Ñ!Ø  KÑ /Ø%0Ð1AÑ%B×%HÑ%HÔ%Jô/Ñ%J‘k�q˜&Ø—z‘z *Ô-òÐ%J€Hñ/ä+1°(Ó+;¸AÑ+>€KÐ'Ñ(àÐØ Ð(Ñ )€'Ø18·±¶Ñ-€}Ð,à×!Ñ! *Ô-Øð ÐØ(×.Ñ.Ö0шˆjØ�B�C�€gØ �LÑ Ø�s˜�8‰àˆØ Ô/Ò /Ü&)§o¡o×&>Ñ&>¸zÓ&JИsÒ#ð1ôÐ5°zØ*¨M¸2ô?ð,BИ-Ò(ð+2Að0-×1Ñ1Ö3€mà˜mÑ,ðÐ Ñ! -Ò0ð4ð Ð(Ñ )€'àŸ ™ œÔA™‘��1¨q¯u©u°ZÕ/@€qˆ!�t˜ÒAðÐÑð €+Û €cØ�"�#ˆh€GØ�,ÑØ�S�b��hà€hØ Ô-Ò -Ø×јÕðó€cØ�CÑðð#Ð#3Ñ4×9Ñ9Ö;€mØ$Ð%5Ñ6°}ÑEÐØ!×&Ñ&Ö(ˆØ Ô*Ò *ÜÚ&)ª=¹&ðBóCð Cñ)ñ<ùóo/ùóJBsÁ HÅ HÅ'HcóJ—g}g}|j«D]Ò\}}|d}|dk7r|dk7rŒt|«tur+t|dz|zdz|jj z«‚|dd}||vr|j |«Œmt||«tur<||}t|dz|zdz|jj zdzdd d œ|z«‚||vsŒÂ|j |«ŒÔ|D]}||=Œ|D�]V}||} td t| «z«} |dz} | |vr+|| D] } t| «D]\} }| |k(sŒ d | | <ŒŒ"|| =|dz}||vr„||D]y}|\}}tj|«}|d k(rd }n"|dk(rd}ntd|zdz|zdz|z«‚t| «D]%\} }| | |k(rŒ|j|«sŒ!|| | <Œ'Œ{||=|dz}||vrt|dz|zdz|z«‚g}tt| «dz dd«D]#} | | d k(sŒ |jd | | «| | =Œ%t|«d kDs�ŒR|||<�ŒY|j«D]A\}}t|«tur t!||«Œ$t|«tusŒ6t#||«ŒCy)aÙProcess regular expression and exclusion-based filters on lists. An exclusion list is in a dict key named with a trailing "!", like "sources!". Every item in such a list is removed from the associated main list, which in this example, would be "sources". Removed items are placed into a "sources_excluded" list in the dict. Regular expression (regex) filters are contained in dict keys named with a trailing "/", such as "sources/" to operate on the "sources" list. Regex filters in a dict take the form: 'sources/': [ ['exclude', '_(linux|mac|win)\.cc$'], ['include', '_mac\.cc$'] ], The first filter says to exclude all files ending in _linux.cc, _mac.cc, and _win.cc. The second filter then includes all files ending in _mac.cc that are now or were once in the "sources" list. Items matching an "exclude" filter are subject to the same processing as would occur if they were listed by name in an exclusion list (ending in "!"). Items matching an "include" filter are brought back into the main list if previously excluded by an exclusion list or exclusion regex filter. Subsequent matching "exclude" patterns can still cause items to be excluded after matching an "include". rr%r¬z key z must be list, not Nz when applying Ú exclusionÚregexr3)rrÚexcluder‘rBzUnrecognized action r4Ú _excludedzD must not be present prior to applying exclusion/regex filters for )rŒr6r[r‹rVrØr;rHr]rr�ÚsearchrÚrangerÀrbrAÚProcessListFiltersInList)Únamer—ÚlistsÚ del_listsrcrKÚ operationÚlist_keyÚdel_listr«Ú list_actionsÚ exclude_keyÚ exclude_itemrfÚ list_itemÚ regex_keyÚ regex_itemÚactionÚpatternÚ pattern_reÚ action_valueÚ excluded_keyÚ excluded_lists r rArA su€ð> €%Ø€)Ø—N‘NÖ$�j€cˆ5Ø�B‘€IØ�CÒ˜I¨Ò,Øä ˆEƒ{œ$ÑÜ �t˜g‘~¨Ñ+Ð.CÑCØ—‘×/Ñ/ñ0ó 1ð1ð�3�Bˆx€HØ�xÑð×Ñ�sÔØä ˆH�XÑ Ó¤tÑ+Ø�xÑ €eÜ �t˜g‘~¨Ñ0Ø,ñ-à—‘×/Ñ/ñ0à2CñDð)¨wÑ7¸ ÑBñCó DðDð �uÒ Ø ‡l�l�8Õð3%ó8€hØ�Ñðô€hؘÑ!€Hô˜¤ H£ Ñ-Ó.€Là˜S‘.€KØ�hÑØ" ;Ô/ˆ,Ü )¨(Ö 3Ñ ˆE�9Ø ˜YÓ &ð#$ˆL˜Ò ñ !4ð0ð �;Ð à˜3‘€IØ�HÑØ  Ô+ˆ*Ø&ш�Ü—Z‘Z Ó(ˆ à �YÒ à‰,Ø �yÒ à‰,ôÐ1°FÑ:¸VÑCÀdÑJØ"ñ#Ø%.ñ/ó0ð 0ô!*¨(Ö 3Ñ ˆE�9Ø ˜%Ñ  LÒ 0ð Ø × Ñ ˜yÕ )à".ˆL˜Ò ñ!4ð,ð2 �9Ð ð˜kÑ)€LØ�xÑÜ �T˜G‘^ lÑ2ðAñAàCKñLó MðMð€Mô ”s˜<Ó(¨1Ñ,¨b°"Ö5ˆØ �eÑ  Ó !ð ×јQ ¨¡Ô0Ø �U‰Oð 6ô ˆ=Ó˜AÔØ,€hˆ|Óðgðl—N‘NÖ$�j€cˆ5Ü ˆEƒ{”dÑܘs EÕ*Ü ˆe‹œÒ ܘs EÕ*ñ %r"cóŠ—|D]>}t|«tur t||«Œ!t|«tusŒ3t ||«Œ@yr–)r6rbrAr[rs)rtr«r™s r rsrs´ s8€Û€dÜ ˆDƒz”TÑܘt TÕ*Ü ˆd‹”tÒ Ü˜t TÕ*ñ r"c óЗd}|jdd«}||vr$td|›d|›ddj|«›d�«‚|jd d «r|d k(std|›d |›d �«‚yy)z»Ensures the 'type' field on the target is one of the known types. Arguments: target: string, name of target. target_dict: dict, target spec. Raises an exception on error. )rrr)rr rÛr r6NzTarget z has an invalid target type 'z'. Must be one of r¬rRr1rr)z has type zJ but standalone_static_library flag is only valid for static_library type.)r<rrZ)rœr¿ÚVALID_TARGET_TYPESr s r ÚValidateTargetTyper‰¼ s‹€ðJÐð—‘ ¨Ó-€+ØÐ*Ñ*Ý âšK¨¯©Ð2DÕ)EðGó HðHð‡o�oÐ1°1Ô5Ø Ð)Ò )Ý Ú=CÚ=HðJó KðKð *ð6r"có—|sy|jdd«dk7ry|jdg«}i}|D]k}tjj|«\}}|dv} | sŒ,tjj |«} |j | g«j |«Œmd} |j«D]/\} } t| «dkDsŒ| d| ›dd j| «›d �z } Œ1| rtd |z| zd z«td «‚y)Nr6r)r)z.cz.ccz.cppz.cxxz.mz.mmz.sz.Sr©rBz z: r)rzð>Ðá ØÜ�w‰w×Ñ Ó%€HØ ×ј 2Ó&×-Ñ-¨fÕ5ðð €%Ø"Ÿ™Ö*�o€h�Ü ˆ5ƒz�Aƒ~Ù šx¨¯©°%­Ð9Ñ9�eð+ñ Ü Ð IØ ñ Øñ ðFñ FôGô ÐKÓ LÐLð  r"c ó\—i}i}|jdg«}|D�]}|d}||vrtd|›d|›�«‚|||<|d}|jd«r|dd}||vrtd |›d |›d ||d›d |›�«‚|||<d |vrtd|›d|›�«‚g} dg} | j|«| D]h} |j| g«D]Q} tj j | «\} }|jd«r|dd}||k(sŒA| j| «ŒSŒjt| «dkDs�Œ | |d <�Œy)a]Ensures that the rules sections in target_dict are valid and consistent, and determines which sources they apply to. Arguments: target: string, name of target. target_dict: dict, target spec containing "rules" and "sources" lists. extra_sources_for_rules: a list of keys to scan for rule matches in addition to 'sources'. r/Ú rule_namezrule z exists in duplicate, target Ú extensionrRrBNz extension z( associated with multiple rules, target z rules rOÚ rule_sourcesz-rule_sources must not exist in input, target z rule rr) r<rrAr†rnror‹r;rH)rœr¿Úextra_sources_for_rulesÚ rule_namesÚrule_extensionsr/Úruler“Úrule_extensionr•Ú source_keysÚ source_keyr�Ú source_rootÚsource_extensions r ÚValidateRulesInTargetrŸñ s|€ð€*Ø€/à �/‰/˜' 2Ó &€%Ü€dà�[Ñ!€IØ�JÑÝ Ú¡ð)ó *ð*à €JˆyÑà˜+Ñ&€NØ× Ñ  Ô%Ø% a bÐ)€nؘÑ(Ý â$¢fØ% nÑ5°kÓBÙð !ó "ð"ð '+€O�NÑ#ð˜ÑÝ â ‘Yð ó !ð!ð€LØ�+€KØ×ÑÐ.Ô/Û!ˆ Ø—O‘O J°Ö3ˆ&Ü*,¯'©'×*:Ñ*:¸6Ó*BÑ'ˆÐ&Ø × &Ñ & sÔ +Ø-¨a¨bÐ1Ð Ø ˜~Ó -Ø × Ñ ˜fÕ %ñ 4ð"ô ˆ<Ó˜1ÔØ)€dˆ>ÓñMr"cóü—|jd«}|jd«}|syt|«turtd|›d|›d�«‚|jd«}|std|›d|›d�«‚t|«turtd|›d|›d �«‚|jd «}|r"t |t «std |›d |›d �«‚|jd«}|r$t|«turtd|›d |›d�«‚yy)Nr3r0zThe 'run_as' in target z from file z should be a dictionary.r€z must have an 'action' section.z$The 'action' for 'run_as' in target z must be a list.Úworking_directoryz/The 'working_directory' for 'run_as' in target z in file z should be a string.Ú environmentz)The 'environment' for 'run_as' in target )r<r6rbrr[rEr)rœr¿r[r3r0r€r¡r¢s r ÚValidateRunAsInTargetr£+ s €Ø—‘  Ó.€+Ø �?‰?˜8Ó $€&Ù Ø Ü ˆ&ƒ\œÑÝ â¢ð-ó .ð.ð �:‰:�hÓ €&Ù Ý â¢ð-ó .ð.ô ˆ&ƒ\œÑÝ â¢ð-ó .ð.ð—j‘jÐ!4Ó5ÐÙœzÐ*;¼ZÔHÝ â¢ð-ó .ð.ð— ‘ ˜=Ó)€+Ù”T˜+Ó&¬dÑ2Ý â¢ð-ó .ð.ð3€[r"có,—|jd«}|jdg«}|D]l}|jd«}|std|z«‚|jdd«}|€td|z«‚|jd«}|sŒZ|d rŒ`td |z«‚y) z0Validates the inputs to the actions in a target.r3r#Ú action_namezKAnonymous action in target %s. An action must have an 'action_name' field.rNz"Action in target %s has no inputs.r€rz%Empty action as command in target %s.)r<r) rœr¿r[r3r#r€r¥rÚaction_commands r ÚValidateActionsInTargetr§I s§€à—‘  Ó.€+Ø �O‰O˜I rÓ *€'Û€fØ—*‘*˜]Ó+€KÙ Ü ðCà ñ!ó "ð"ð�Z‰Z˜ $Ó '€FØ €~Ü Ð9¸KÑGÓ HÐHØ—Z‘Z Ó)€NÚ˜n¨QÓ/Ü Ð<¸{ÑJÓ KÐKñr"có,—|j«D]�\}}t|t«rt|«}|||<n9t |«t ur t |«nt |«tur t|«t|t«sŒq||=||t|«<Œƒy)zGGiven dict the_dict, recursively converts all integers into strings. N) rŒrEr§r:r6rbÚTurnIntIntoStrInDictr[ÚTurnIntIntoStrInList)r—r“r”s r r©r©[ sz€ð �n‰nÖ�d€aˆÜ�!”ZÔ Ü ˆa‹&€aØ€hˆq‚kÜ ˆa‹”D‰Ü˜1ÕÜ ˆa‹”D‰Ü˜1Ôä�!”ZÕ Ø �1ˆ+Ø€hŒs�1‹vÒñr"cóÜ—t|«D]^\}}t|t«rt|«||<Œ%t |«t ur t |«ŒBt |«tusŒTt|«Œ`y)zGGiven list the_list, recursively converts all integers into strings. N) r]rEr§r:r6rbr©r[rª)r«rfr™s r rªrªn sV€ô˜xÖ(�k€eˆTÜ�$œ Ô#ܘD› €hˆu‚oÜ ˆd‹”tÑ Ü˜4Õ Ü ˆd‹”tÒ Ü˜4Õ ñ )r"có—g}|D]S}|j«}tjj||«}|st d|z«‚|j |«ŒUi}|D]*}||||<||j «D] } || || <Œ Œ,|D� cgc] } | |vsŒ| ‘Œ } } |dD]^} d|| vrŒ g} || dD]?}tjj| |d|d«}||vsŒ/| j|«ŒA| || d<Œ`|| fScc} w)zEReturn only the targets that are deep dependencies of |root_targets|.zCould not find target %sr­r›r3r4) rCryrzÚFindQualifiedTargetsrr†rr­r;)r›rírÚ root_targetsr}Úqualified_root_targetsrœÚqualified_targetsÚwanted_targetsrÀrØÚwanted_flat_listr[Ú new_targetsÚqualified_names r ÚPruneUnwantedTargetsrµz s]€ðÐÛ€fØ �\‰\‹^€FÜŸ ™ ×7Ñ7¸À ÓJÐÙ Ü Ð/°&Ñ8Ó 9Ð9Ø×!Ñ!Ð"3Õ4ð ð€.Û&€fØ$ V™_€N�6ÑØ& vÑ.×?Ñ?ÖAˆ Ø#*¨:Ñ#6€n�ZÒ ñBð'ñ "+ÓB¡˜A¨a°>Ò.A’a ÐÐBðÐ-Ô.€jØ ˜˜ZÑ(Ñ (ØØ€KØ�zÑ" 9Ô-ˆÜ—z‘z×1Ñ1°*Ø28¸Ñ2GØ28¸Ñ2CóE€nð ˜>Ò )Ø×ј6Õ"ð .ð #.€DˆÑ�YÒð/ð Ð)Ð )Ð)ùòCs  D ÂD c óä—i}|D]i}|jdd«\}}tjj|«\}}|sd}|dz|z}||vrt d|›d|›d|›d||›d� «‚|||<Œky ) z¡Verify that no two targets in the same directory share the same name. Arguments: targets: A list of targets in the form 'path/to/file.gyp:target_name'. Ú:rBrRzDuplicate target name "z" in directory "z" used both in "z" and "z".N)ÚrsplitrnrorDr)r›ÚusedrœrortÚsubdirryrcs r ÚVerifyNoCollidingTargetsr»� s‰€ð €$Û€f𗑘s AÓ&�J€Dˆ$ä—'‘'—-‘- Ó%�K€FˆCñ Ø€fà �3‰,˜Ñ €CØ ˆd�{å Ú,0²&º#¸tÀC»yðJó KðKà€Dˆ‚Iñ!r"có¨—tt«atj|d«tddat j |d«|da|day)NrròÚ$generator_supports_multiple_toolsetsrF) ráÚbase_path_sectionsrÚupdateÚbase_non_configuration_keysròr†ržrF)rÒs r rÇrǸ sc€ôÔ(Ó)€-Ü×ÑÐ+¨OÑ<Ô=ô7±qÐ9ÐÜ×ÑÐ 4Ð5MÑ NÔOð+Ø,ñ.Ðð2Ð2LÑMÑr"c óà—t|«|d} dt«i} tttjj |««}|rt || |||||«ni} |D]} t| | | ||||d«Œt| «}t|«t|«t|| «t!|«|j#«D]I\}}i}t$D]}dD]}||z}||vsŒ ||||<||=ŒŒ t'||«|D] }||||<Œ ŒKt)|«|r t+|«t-|«\}}| rt/|||| | «\}}t1|«dD]%}t3||||«|D]}|||vsŒ |||=ŒŒ'|}|drt5||||d«|D]8}||}tjj7|«} t9|t:|| «Œ:|D]}||}t=||«Œ|D]}||}t'||«Œ|D]8}||}tjj7|«} t9|t>|| «Œ:|D]g}||}tjj7|«} tA||«tC||| |«tE||| «tG||| «tI||| «ŒitK| «||| gS#t$r)}tjj|d| z«‚d}~wwxYw) Nr–r­Tzwhile trying to load %sr°)r$r)r8Ú4generator_wants_static_library_dependencies_adjustedÚ#generator_wants_sorted_dependencies)&rÇráÚmaprnror‡rr·rxryrzr{r®r¼rÙrÈrÝrŒr²rArÐr%r rµr»r'r.r³r´r6rkr8r‰r‘rŸr£r§r©)rr7r~r¸rÒr€Úcircular_checkr�Úparallelr®r–r}r?r[rƒr›r3r¿Útmp_dictrirµrcrríÚ settings_typerœÚgiis r ÚLoadrÊË s`€äÐ*Ô+ð1Ð1JÑKÐ𠤣Р&€$ô”CœŸ™×(Ñ(¨+Ó6Ó7€+Ù Ü  ¨d°I¸xÈØ!&Ð(<õ>ð€HÛ!ˆ ðܘJ¨¨hØ% x°¸¸tõ Eð"ô ˜TÓ "€'ô�gÔô˜Ô!ô˜W dÔ+ô(¨Ô0ð#*§-¡-¦/Ñ€k�;Ø€Hß'ˆÛˆ"ؘ‰mˆØ �+Ò Ø% cÑ*ˆ(�3‰-ؘ#Ññ ð(ô ˜[¨(Ô3ãˆØ! #™€k�#Òñð#2ô˜gÔ&áô(¨Ô0ä"5°gÓ">ÑÐ�Yáô.Ø�Ð,¨l¸DóBÑ€GˆYô˜9Ô%ó)€mô˜  y°'Ð;KÔLóˆØ ˜' &™/Ò )Ø �F‰O˜MÑ *ñð)ð €#ØÐ ?Ò@Ü# I¨wÐ8HØ$'Ð(MÑ$NôPó€fؘ&‘/€KÜ—‘×%Ñ% fÓ-€JÜ'Ø”Z ¨Jõ8ðó€fؘ&‘/€Kܘ  Õ,ðó €fؘ&‘/€KܘV [Õ1ðó €fؘ&‘/€KÜ—‘×%Ñ% fÓ-€JÜ'Ø”^ Y° õ<ðó€fؘ&‘/€KÜ—‘×%Ñ% fÓ-€JÜ�v˜{Ô+ܘF K°Ø4ô6ä˜& +Ð/FÔGܘ& +¨zÔ:ܘF K°Õ<ðô�tÔð �W˜dÐ #Ð#øômòÜ � ‰ ×"Ñ" 1Ð&?À*Ñ&LÔMØ ûðúsÁ&J;Ê; K-Ë$K(Ë(K-r–)FT)oÚ __future__rrCÚ gyp.commonryÚgyp.simple_copyrøÚoptparseÚos.pathrnrrKrÃrPrËrõÚtimerÏrrrr²r¾rárrÈrÉÚ basestringrr‘r:r;Úlongr§rUr[rœr!rÀròr`ržrFr=rPrJr„r|r�r¡r·rÔrxrÖÚobjectrÝrr r rrr�r5r7r9rIrrµr6r8rBrŒrˆrƒršr�r£r´rWr®r¼rÈrÎrÐrÓrÙrÝrßr r%r'r.r0r4rBr‹rYrkrArsr‰r‘rŸr£r§r©rªrµr»rÇrÊrÛr"r ÚrÔsíðõ &ã ÛÛÛÛÛÛ Û Û ÛÛ ÛÛ ÛÝÝ!ò€ð&Ð'BÐCÐò Ðñ“€ ðÐØÐð؈}€*ð Ø�Tˆ{€*ð ˜jÑ(€Ø$¨ wÑ.Ðòò8Ðð<Ðò ÐðÐð  ÐóòB!ò$ò8-ò`#+òNOò2òJq+òf*ôZ˜iôô-�Fô-ò`-ñh ˆu‹:€ ؘ3 SÑ )€òò$ð2�B—J‘Jð ó!Ðð�2—:‘:ð ó!Ðð"�r—z‘zð ó!ÐðÐò ð€ Ø € Ø€òðF Ðò òF!òH+?ò\#ò%ð:BFóm%ò`òDò4$HòNBòJ=ò :ò8ò Nò 9ôR9˜&ôR9òj/'òd8Pòv4ò:JNð\ˆr�z‰zÐ.Ó/€ òó@E(òP`2òF+ò.KCò^Z+òz+òKò0Mò:7*òt.ò<Lò$ò& !ò *òFò6Nó&Q$øð_Tò؈vƒ*ðûð ò؈vƒ*ðús$Á#F&Á'F5Æ&F2Æ1F2Æ5GÇG