§
    ‹ã÷c³m  ã                  óD  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZ	d dl
mZ ddlmZmZ ddlmZ ddlmZmZmZ dd	lmZmZmZmZmZmZmZ dd
lmZ ddlmZ ddl m!Z! ddl"m#Z# ddl$m%Z% e	j&        r&ddl'm(Z( ddlm)Z) ddlm*Z* d dl+m,Z,  G d„ de,¦  «        Z-d8d„Z. G d„ de¦  «        Z/ G d„ de%¦  «        Z0 G d „ d!e¦  «        Z1 G d"„ d#e%¦  «        Z2 G d$„ d%e¦  «        Z3 G d&„ d'e¦  «        Z4 G d(„ d)e%¦  «        Z5 G d*„ d+e¦  «        Z6 G d,„ d-e¦  «        Z7 G d.„ d/e7¦  «        Z8 e!d0ej9        ej:        ge4e3¬1¦  «        Z; e!d2ej<        ej=        ge0e/¬3¦  «        Z> e!d4ej<        ej=        ge2e1¬3¦  «        Z? e!d5ej<        ej9        ej=        gd6e6¬7¦  «        Z@dS )9é    )ÚannotationsN)ÚFeatureDeprecatedé   )ÚmesonlibÚmlog)Úget_llvm_tool_names)Úversion_compareÚstringlistifyÚextract_as_listé   )ÚDependencyExceptionÚDependencyMethodsÚdetect_compilerÚstrip_system_libdirsÚSystemDependencyÚExternalDependencyÚDependencyTypeName)ÚCMakeDependency)ÚConfigToolDependency)ÚDependencyFactory)Úthreads_factory)ÚPkgConfigDependency)ÚMachineInfo)ÚEnvironment)ÚMachineChoice)Ú	TypedDictc                  ó$   — e Zd ZU ded<   ded<   dS )ÚJNISystemDependencyKWúT.List[str]ÚmodulesúT.Optional[str]ÚversionN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    ú=/usr/lib/python3/dist-packages/mesonbuild/dependencies/dev.pyr   r   .   s,   € € € € € € ØÐÐÑð 	!Ð Ð Ñ Ð Ð r(   r   Úenvironmentú'Environment'Úfor_machiner   ÚreturnÚstrc                óx   — | j         |         }|                     ¦   «         rdS |                     ¦   «         rdS dS )z™This is only guaranteed to work for languages that compile to machine
    code, not for languages like C# that use a bytecode and always end in .dll
    z.dllz.dylibú.so)ÚmachinesÚ
is_windowsÚ	is_darwin)r*   r,   Úms      r)   Úget_shared_library_suffixr5   5   s@   € ð 	Ô˜[Ô)€AØ‡|‚|�~„~ð ØˆvØ	
�Š‰Œð ØˆxØˆ5r(   c                  ó8   ‡ — e Zd Zdˆ fd	„Zdd
„Zdd„Zdd„Zˆ xZS )ÚGTestDependencySystemÚnamer.   r*   r+   ÚkwargsúT.Dict[str, T.Any]r-   ÚNonec                ó&  •— t          ¦   «                              |||d¬¦  «         |                     dd¦  «        | _        ddg| _        |                      t          || j        i ¦  «        ¦  «        s	d| _        d S |  	                    ¦   «          d S )NÚcpp©ÚlanguageÚmainFz/usr/src/gtest/srcz"/usr/src/googletest/googletest/src)
ÚsuperÚ__init__Úgetr@   Úsrc_dirsÚ_add_sub_dependencyr   r,   Úis_foundÚdetect©Úselfr8   r*   r9   Ú	__class__s       €r)   rB   zGTestDependencySystem.__init__B   s‰   ø€ Ý‰Œ×Ò˜˜{¨F¸UÐÑCÔCÐCØ—J’J˜v uÑ-Ô-ˆŒ	Ø-Ð/SÐTˆŒØ×'Ò'­¸ÀTÔEUÐWYÑ(ZÔ(ZÑ[Ô[ð 	Ø!ˆDŒMØˆFØ�Š‰Œˆˆˆr(   c                óø  — | j                              d| j        g ¦  «        }| j                              d| j        g ¦  «        }|rE| j        r|r<d| _        g | _        || _        | j        r| xj        |z  c_        g | _        d| _        d S |  	                    ¦   «         rUd| _        d„ | j
        D ¦   «         | _        g | _        | j        r| j        | j        g| _        n| j        g| _        d| _        d S d| _        d S )NÚgtestÚ
gtest_mainTc                ó   — g | ]}d |z   ‘ŒS ©ú-Ir'   )Ú.0Úds     r)   ú
<listcomp>z0GTestDependencySystem.detect.<locals>.<listcomp>X   s   € Ð IÐ IÐ I¨a ¨¡Ð IÐ IÐ Ir(   F)Úclib_compilerÚfind_libraryÚenvr@   rF   Úcompile_argsÚ	link_argsÚsourcesÚprebuiltÚdetect_srcdirÚsrc_include_dirsÚall_srcÚmain_src)rI   Úgtest_detectÚgtest_main_detects      r)   rG   zGTestDependencySystem.detectK   s  € ØÔ)×6Ò6°wÀÄÈ"ÑMÔMˆØ Ô.×;Ò;¸LÈ$Ì(ÐTVÑWÔWÐØð 	" ¤ð 	"Ð.?ð 	"Ø ˆDŒMØ "ˆDÔØ)ˆDŒNØŒyð 4Ø�”Ð"3Ñ3�”ØˆDŒLØ ˆDŒMˆMˆMØ×ÒÑ!Ô!ð 
	"Ø ˆDŒMØ IÐ I°4Ô3HÐ IÑ IÔ IˆDÔØˆDŒNØŒyð .Ø $¤¨d¬mÐ<�”�à $¤˜~�”Ø!ˆDŒMˆMˆMà!ˆDŒMˆMˆMr(   Úboolc                ó   — | j         D �]D}t          j                             |¦  «        �r!|| _        t
          j                             t          j                             | j        d¦  «        ¦  «        | _	        t
          j                             t          j                             | j        d¦  «        ¦  «        | _
        t          j                             t          j                             | j        d¦  «        ¦  «        t          j                             t          j                             | j        d¦  «        ¦  «        g| _         dS �ŒFdS )Nzgtest-all.cczgtest_main.ccú..z
../includeTF)rD   ÚosÚpathÚexistsÚsrc_dirr   ÚFileÚfrom_absolute_fileÚjoinr]   r^   Únormpathr\   )rI   Úss     r)   r[   z#GTestDependencySystem.detect_srcdirb   sû   € Ø”ð 
	ñ 
	ˆAÝŒw�~Š~˜aÑ Ô ñ 	Ø �”Ý'œ}×?Ò?Ý”G—L’L ¤¨~Ñ>Ô>ñ @ô  @�”å (¤× @Ò @Ý”G—L’L ¤¨Ñ?Ô?ñ!Aô !A�”å)+¬×)9Ò)9½"¼'¿,º,ÀtÄ|ÐUYÑ:ZÔ:ZÑ)[Ô)[Ý)+¬×)9Ò)9½"¼'¿,º,ÀtÄ|ÐUaÑ:bÔ:bÑ)cÔ)cð)+�Ô%ð �t�tñ	ð ˆur(   c                ó   — | j         rdS dS ©NrZ   zbuilding self©rZ   ©rI   s    r)   Úlog_infozGTestDependencySystem.log_infop   ó   € ØŒ=ð 	#Ø�:à"�?r(   ©r8   r.   r*   r+   r9   r:   r-   r;   ©r-   r;   )r-   ra   ©r-   r.   )r#   r$   r%   rB   rG   r[   rq   Ú__classcell__©rJ   s   @r)   r7   r7   A   sy   ø€ € € € € ðð ð ð ð ð ð"ð "ð "ð "ð.ð ð ð ð#ð #ð #ð #ð #ð #ð #ð #r(   r7   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )	ÚGTestDependencyPCr8   r.   r*   r+   r9   r:   c                óŒ   •— |dk    sJ ‚|                      d¦  «        rd}t          ¦   «                              |||¦  «         d S )NrL   r@   rM   ©rC   rA   rB   rH   s       €r)   rB   zGTestDependencyPC.__init__y   óK   ø€ Ø�wŠˆˆˆØ�:Š:�fÑÔð 	 ØˆDÝ‰Œ×Ò˜˜{¨FÑ3Ô3Ð3Ð3Ð3r(   ©r8   r.   r*   r+   r9   r:   ©r#   r$   r%   rB   rv   rw   s   @r)   ry   ry   w   ó=   ø€ € € € € ð4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4r(   ry   c                  ó(   ‡ — e Zd Zdˆ fd	„Zdd
„Zˆ xZS )ÚGMockDependencySystemr8   r.   r*   r+   r9   r:   r-   r;   c           
     óR  •— t          ¦   «                              |||d¬¦  «         |                     dd¦  «        | _        |                      t          || j        i ¦  «        ¦  «        s	d| _        d S |                     ¦   «         }| j        rd|d<   |                      t          || j        |¦  «        ¦  «        }|s	d| _        d S | j
                             d| j        g ¦  «        }| j
                             d| j        g ¦  «        }|r@| j        r|r7d| _        | xj        |z  c_        | j        r| xj        |z  c_        d| _        d S dD �]P}t          j                             |¦  «        �r-d| _        t          j                             t          j                             |d	¦  «        ¦  «        }	| xj        d
|z   d
|	z   d
t          j                             |	d¦  «        z   gz  c_        t*          j                             t          j                             |d¦  «        ¦  «        }
t*          j                             t          j                             |d¦  «        ¦  «        }| j        r| xj        |
|gz  c_        n| xj        |
gz  c_        d| _         d S �ŒRd| _        d S )Nr=   r>   r@   FÚgmockÚ
gmock_mainT)z"/usr/src/googletest/googlemock/srcz/usr/src/gmock/srcz/usr/src/gmockrc   rP   Úincludezgmock-all.cczgmock_main.cc)rA   rB   rC   r@   rE   r   r,   rF   ÚcopyÚgtest_factoryrT   rU   rV   rX   rZ   rd   re   rf   rk   rj   rW   r   rh   ri   rY   )rI   r8   r*   r9   Úgtest_kwargsÚfoundÚgmock_detectÚgmock_main_detectrR   Úd2r]   r^   rJ   s               €r)   rB   zGMockDependencySystem.__init__�   sƒ  ø€ Ý‰Œ×Ò˜˜{¨F¸UÐÑCÔCÐCØ—J’J˜v uÑ-Ô-ˆŒ	Ø×'Ò'­¸ÀTÔEUÐWYÑ(ZÔ(ZÑ[Ô[ð 	Ø!ˆDŒMØˆFð —{’{‘}”}ˆØŒ9ð 	)Ø#(ˆL˜Ñ ð
 ×(Ò(­°{ÀDÔDTÐVbÑ)cÔ)cÑdÔdˆØð 	Ø!ˆDŒMØˆFð Ô)×6Ò6°wÀÄÈ"ÑMÔMˆØ Ô.×;Ò;¸LÈ$Ì(ÐTVÑWÔWÐØð 	 ¤ð 	Ð.?ð 	Ø ˆDŒMØˆNŒN˜lÑ*ˆNŒNØŒyð 4Ø�”Ð"3Ñ3�”Ø ˆDŒMØˆFà_ð 	ñ 	ˆAÝŒw�~Š~˜aÑ Ô ñ Ø $�”õ ”W×%Ò%¥b¤g§l¢l°1°dÑ&;Ô&;Ñ<Ô<�ØÐ!Ô! d¨Q¡h°°r±	¸4Å"Ä'Ç,Â,ÈrÐS\ÑB]ÔB]Ñ;]Ð%^Ñ^Ð!Ô!Ý"œ-×:Ò:½2¼7¿<º<ÈÈ>Ñ;ZÔ;ZÑ[Ô[�Ý#œ=×;Ò;½B¼G¿LºLÈÈOÑ<\Ô<\Ñ]Ô]�Ø”9ð .Ø�L”L W¨hÐ$7Ñ7�L”L�Là�L”L W IÑ-�L”LØ %�”Ø��ñð ˆŒˆˆr(   c                ó   — | j         rdS dS rn   ro   rp   s    r)   rq   zGMockDependencySystem.log_info´   rr   r(   rs   ru   )r#   r$   r%   rB   rq   rv   rw   s   @r)   r�   r�   €   sR   ø€ € € € € ð1ð 1ð 1ð 1ð 1ð 1ðf#ð #ð #ð #ð #ð #ð #ð #r(   r�   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )	ÚGMockDependencyPCr8   r.   r*   r+   r9   r:   c                óŒ   •— |dk    sJ ‚|                      d¦  «        rd}t          ¦   «                              |||¦  «         d S )Nrƒ   r@   r„   r{   rH   s       €r)   rB   zGMockDependencyPC.__init__½   r|   r(   r}   r~   rw   s   @r)   r�   r�   »   r   r(   r�   c                  ó`   ‡ — e Zd ZdZdZdhZdˆ fd
„Zdd„Zdd„Zdd„Z	dd„Z
dd d„Zd!d„Zˆ xZS )"ÚLLVMDependencyConfigToolz…
    LLVM uses a special tool, llvm-config, which has arguments for getting
    c args, cxx args, and ldargs as well as version.
    úllvm-configz-DNDEBUGr8   r.   r*   r+   r9   r:   c                óš  •— t          d¦  «        | _        |j        |                      |¦  «                 j        r| j                             d¦  «         n| j                             d¦  «         t          ¦   «                              |||d¬¦  «         g | _        t          j
        ¦   «         | _        g | _        | j        sd S |                      dgd¦  «        | _        t          t!          |d¦  «        ¦  «        }|                      |¦  «         t          t!          |d¦  «        ¦  «        }|                      |d	¬
¦  «         t          j
        |                      dgd¦  «        ¦  «        }t%          |                     | j        ¦  «        ¦  «        | _        t-          | j        d¦  «        r|                      |¦  «         n|                      ¦   «          t5          || j        | j        ¦  «        | _        |                      | j        ¦  «        | _        |                      t?          || j        i ¦  «        ¦  «        s	d	| _        d S d S )Nr“   zllvm-config-64zllvm-config-32r=   r>   z--componentsr    Úoptional_modulesF)Úrequiredz
--cppflagsrW   z>= 3.9) r   Útoolsr1   Úget_for_machine_from_kwargsÚ	is_64_bitÚappendrA   rB   Úprovided_modulesr   Ú
OrderedSetÚrequired_modulesÚmodule_detailsrF   Úget_config_valuer
   r   Úcheck_componentsÚlistÚ
differenceÚ(_LLVMDependencyConfigTool__cpp_blacklistrW   r	   r"   Ú_set_new_link_argsÚ_set_old_link_argsr   r,   rX   Ú._LLVMDependencyConfigTool__fix_bogus_link_argsrE   r   )rI   r8   r*   r9   r    Úopt_modulesÚcargsrJ   s          €r)   rB   z!LLVMDependencyConfigTool.__init__Ì   s  ø€ Ý(¨Ñ7Ô7ˆŒ
ð Ô × @Ò @ÀÑ HÔ HÔIÔSð 	0ØŒJ×ÒÐ.Ñ/Ô/Ð/Ð/àŒJ×ÒÐ.Ñ/Ô/Ð/õ 	‰Œ×Ò˜˜{¨F¸UÐÑCÔCÐCØ-/ˆÔÝ:BÔ:MÑ:OÔ:OˆÔØ-/ˆÔØŒ}ð 	ØˆFà $× 5Ò 5°~Ð6FÈ	Ñ RÔ RˆÔÝ¥°¸	Ñ BÔ BÑCÔCˆØ×Ò˜gÑ&Ô&Ð&Ý#¥O°FÐ<NÑ$OÔ$OÑPÔPˆØ×Ò˜k°EÐÑ:Ô:Ð:åÔ# D×$9Ò$9¸<¸.È.Ñ$YÔ$YÑZÔZˆÝ  ×!1Ò!1°$Ô2FÑ!GÔ!GÑHÔHˆÔå˜4œ<¨Ñ2Ô2ð 	&Ø×#Ò# KÑ0Ô0Ð0Ð0à×#Ò#Ñ%Ô%Ð%Ý-¨k¸4Ô;KÈTÌ^Ñ\Ô\ˆŒØ×3Ò3°D´NÑCÔCˆŒØ×'Ò'­¸ÀTÔEUÐWYÑ(ZÔ(ZÑ[Ô[ð 	Ø!ˆDŒMØˆFð	ð 	r(   Úargsr   r-   c                óÊ  — g }|D ]Ý}|                      d¦  «        r>|                     d¦  «        r)|                     |                     d¦  «        ¦  «         ŒU|                      d¦  «        r^| j        j        j        | j                 d         }|                     | 	                    |                     d¦  «        ¦  «        ¦  «         ŒÈ|                     |¦  «         ŒÞ|S )aî  This function attempts to fix bogus link arguments that llvm-config
        generates.

        Currently it works around the following:
            - FreeBSD: when statically linking -l/usr/lib/libexecinfo.so will
              be generated, strip the -l in cases like this.
            - Windows: We may get -LIBPATH:... which is later interpreted as
              "-L IBPATH:...", if we're using an msvc like compilers convert
              that to "/LIBPATH", otherwise to "-L ..."
        ú-lr0   z	-LIBPATH:r=   )
Ú
startswithÚendswithrš   ÚlstriprV   ÚcoredataÚ	compilersr,   ÚextendÚget_linker_search_args)rI   r©   Únew_argsÚargr=   s        r)   Ú__fix_bogus_link_argsz.LLVMDependencyConfigTool.__fix_bogus_link_argsô   s×   € ð ˆØð 	%ð 	%ˆCØ�~Š~˜dÑ#Ô#ð %¨¯ª°UÑ(;Ô(;ð %Ø—’ §
¢
¨4Ñ 0Ô 0Ñ1Ô1Ð1Ð1Ø—’ Ñ,Ô,ð %Ø”hÔ'Ô1°$Ô2BÔCÀEÔJ�Ø—’ × :Ò :¸3¿:º:ÀkÑ;RÔ;RÑ SÔ SÑTÔTÐTÐTà—’ Ñ$Ô$Ð$Ð$Øˆr(   Úsharedra   r;   c                ó�   — |rdnd}| j         }d| _         	 |                      d|gd¦  «        | _        || _         dS # || _         w xY w)z9Use llvm-config's --libfiles to check if libraries exist.ú--link-sharedú--link-staticTz
--libfilesÚ N)r–   rŸ   rX   )rI   r¶   ÚmodeÚrestores       r)   Ú__check_libfilesz)LLVMDependencyConfigTool.__check_libfiles  sa   € à"(Ð=ˆˆ¨oˆð ”-ˆØˆŒð	$ð "×2Ò2°LÀ$Ð3GÈÑLÔLˆDŒNà#ˆDŒMˆMˆMø˜GˆDŒMÐ#Ð#Ð#Ð#s	   –< ¼	Ac           
     ó4  — 	 |                       dgd¦  «        d         }n,# t          $ r t          j        d¦  «         d| _        Y dS w xY w| j        �s=|dk    �r6	 |                      d¦  «         �nb# t          $ �r t          || j	        ¦  «        }|                       d	gd¦  «        d         }t          t          j        t          j                             |d
|› �¦  «        ¦  «        ¦  «        }|s| j        r‚ d| _        Y dS |                       dgd¦  «        | _        t          j                             |d         ¦  «                             |¦  «                             d¦  «        }| j                             d|› �¦  «         Y dS w xY w| j        r=|dk    r7	 |                      d¦  «         n # t          $ r | j        r‚ d| _        Y dS w xY w| j        rddgndg}|                       ddg|z   t-          | j        ¦  «        z   d¦  «        | _        dS )z/How to set linker args for LLVM versions >= 3.9z--shared-moderX   r   z+llvm-config --shared-mode returned an errorFNÚstaticTú--libdirzlibLLVM*ú	--ldflagsÚlibr«   r¶   r¹   ú--system-libsr¸   ú--libs)rŸ   Ú
IndexErrorr   ÚdebugrF   r¿   Ú)_LLVMDependencyConfigTool__check_libfilesr   r5   r,   ÚsortedÚglobÚiglobrd   re   rj   r–   rX   ÚbasenameÚrstripr®   rš   r¡   r�   )rI   r*   r»   Úlib_extÚlibdirÚmatchesÚlibnamerX   s           r)   r¤   z+LLVMDependencyConfigTool._set_new_link_args  s]  € ð	Ø×(Ò(¨/Ð):¸KÑHÔHÈÔKˆDˆDøÝð 	ð 	ð 	ÝŒJÐDÑEÔEÐEØ!ˆDŒMØˆFˆFð	øøøð
 Œ{ñ '	˜t xÒ/Ñ/ðØ×%Ò% dÑ+Ô+Ð+Ñ+øÝ&ð ñ ð Ý3°KÀÔAQÑRÔR�Ø×.Ò.°
¨|¸[ÑIÔIÈ!ÔL�å ¥¤­B¬G¯LªL¸ÐAUÈGÐAUÐAUÑ,VÔ,VÑ!WÔ!WÑXÔX�Øð Ø”}ð ØØ$)�D”MØ�F�Fà!%×!6Ò!6¸°}ÀkÑ!RÔ!R�”Ýœ'×*Ò*¨7°1¬:Ñ6Ô6×=Ò=¸gÑFÔF×MÒMÈeÑTÔT�Ø”×%Ò% n¨7 n nÑ5Ô5Ð5Ø��ðøøøð Œ[ð 	˜T XÒ-Ð-ð
Ø×%Ò% eÑ,Ô,Ð,Ð,øÝ&ð ð ð Ø”=ð ØØ %�”Ø��ð	øøøð ;?¼+Ð\�_ oÐ6Ð6ÈOÐK\ˆ	Ø×.Ò.Ø�{Ð# iÑ/µ$°tÔ7LÑ2MÔ2MÑMØñô ˆŒˆˆs;   ‚   %A	ÁA	ÁA3 Á3BFÄBFÆFÆF5 Æ5GÇGc           	     ó  — | j         r4|                      g d¢t          | j        ¦  «        z   d¦  «        | _        dS |                      dgd¦  «        d         }d| j        › �}t          j        |› d�¦  «        }t          j	        |¦  «        D ]o}| 
                    |¦  «        rXd|› �d                     t          j                             |                     d	¦  «        ¦  «        d         ¦  «        g| _         dS Œpt          d
¦  «        ‚)a:  Setting linker args for older versions of llvm.

        Old versions of LLVM bring an extra level of insanity with them.
        llvm-config will provide the correct arguments for static linking, but
        not for shared-linnking, we have to figure those out ourselves, because
        of course we do.
        )rÄ   rÁ   rÃ   rX   rÀ   r   zlibLLVM-z.(so|dll|dylib)$z-Lz-l{}rÂ   z7Could not find a dynamically linkable library for LLVM.N)r¿   rŸ   r¡   r�   rX   r"   ÚreÚcompilerd   ÚlistdirÚmatchÚformatre   Úsplitextr®   r   )rI   rÎ   Úexpected_nameÚre_nameÚfile_s        r)   r¥   z+LLVMDependencyConfigTool._set_old_link_argsR  s%  € ð Œ;ð 	OØ!×2Ò2Ø8Ð8Ð8½4ÀÔ@UÑ;VÔ;VÑVØñô ˆDŒNˆNˆNð ×*Ò*¨J¨<¸ÑEÔEÀaÔHˆFà5 t¤|Ð5Ð5ˆMÝ”j ]Ð!DÐ!DÐ!DÑEÔEˆGåœ FÑ+Ô+ð Oð O�Ø—=’= Ñ'Ô'ð Ø&3¨6 m mØ&,§m¢mµB´G×4DÒ4DÀUÇ\Â\ÐRWÑEXÔEXÑ4YÔ4YÐZ[Ô4\Ñ&]Ô&]ð&_�D”Nà�E�Eðõ
 *ØMñOô Oð Or(   Tr    r–   c                ó  — t          t          |¦  «        ¦  «        D ]l}d}|| j        vr(|r#d| _        | j        rt          d|› �¦  «        ‚d}nd}n| j                             |¦  «         | j         	                    ||z   ¦  «         ŒmdS )z¢Check for llvm components (modules in meson terms).

        The required option is whether the module is required, not whether LLVM
        is required.
        rº   Fz(Could not find required LLVM Component: z	(missing)z(missing but optional)N)
rÈ   Úsetr›   rF   r–   r   r�   Úaddrž   rš   )rI   r    r–   ÚmodÚstatuss        r)   r    z)LLVMDependencyConfigTool.check_componentsq  s»   € õ �#˜g™,œ,Ñ'Ô'ð 	5ð 	5ˆCØˆFà˜$Ô/Ð/Ð/Øð 6Ø$)�D”MØ”}ð NÝ1ØLÀsÐLÐLñNô Nð Nà(�F�Fà5�F�FàÔ%×)Ò)¨#Ñ.Ô.Ð.àÔ×&Ò& s¨V¡|Ñ4Ô4Ð4Ð4ð	5ð 	5r(   c                óN   — | j         rdd                     | j         ¦  «        z   S dS )Nz	modules: z, rº   )rž   rj   rp   s    r)   Úlog_detailsz$LLVMDependencyConfigTool.log_detailsˆ  s-   € ØÔð 	@Ø §¢¨4Ô+>Ñ!?Ô!?Ñ?Ð?Øˆrr(   r}   )r©   r   r-   r   )r¶   ra   r-   r;   )r*   r+   r-   r;   rt   )T)r    r   r–   ra   r-   r;   ru   )r#   r$   r%   Ú__doc__Ú	tool_namer£   rB   r¦   rÇ   r¤   r¥   r    rá   rv   rw   s   @r)   r’   r’   Ä   sØ   ø€ € € € € ðð ð €IØ!�l€Oð&ð &ð &ð &ð &ð &ðPð ð ð ð.$ð $ð $ð $ð 5ð 5ð 5ð 5ðnOð Oð Oð Oð>5ð 5ð 5ð 5ð 5ð.ð ð ð ð ð ð ð r(   r’   c                  ó@   ‡ — e Zd Zdˆ fd	„Zdd
„Zdd„Zdd„Zdd„Zˆ xZS )ÚLLVMDependencyCMaker8   r.   rV   r+   r9   r:   r-   r;   c                óø  •‡ ‡— t          t          |d¦  «        ¦  «        ‰ _        t          t          |d¦  «        ¦  «        ‰ _        d Š|                     dd¦  «        r|j        j        j        Šn|j        j        j        Š‰rt          ˆfd„dD ¦   «         ¦  «        sHt          j        ‰ t          d¦  «        ||¦  «         g ‰ _        |‰ _        t          j        d¦  «         d S t#          ¦   «                              |||d	d
¬¦  «         ‰ j        sd‰ _        t          j        d¦  «         d S ‰ j        €d S ‰ j                             d¦  «        }‰ j                             d¦  «        }t-          |¦  «        dk    r|d                              d¦  «        }d„ |D ¦   «         |z   }‰ xj        ˆ fd„|D ¦   «         z  c_        ‰                      t5          |‰ j        i ¦  «        ¦  «        s	d‰ _        d S d S )Nr    r•   ÚnativeFc              3  ó    •K  — | ]}|‰v V — Œ	d S ©Nr'   )rQ   Úxr°   s     €r)   ú	<genexpr>z/LLVMDependencyCMake.__init__.<locals>.<genexpr>—  s'   øè è € Ð#IÐ#I°q A¨ NÐ#IÐ#IÐ#IÐ#IÐ#IÐ#Ir(   )Úcr=   ÚcmakezYThe LLVM dependency was not found via CMake since both a C and C++ compiler are required.r=   T)r?   Úforce_use_global_compilersz<Ignoring LLVM CMake dependency because dynamic was requestedÚPACKAGE_INCLUDE_DIRSÚPACKAGE_DEFINITIONSr   r   ú c                ó   — g | ]}d |z   ‘ŒS rO   r'   )rQ   rê   s     r)   rS   z0LLVMDependencyCMake.__init__.<locals>.<listcomp>µ  s   € Ð+Ð+Ð+˜Q��q‘Ð+Ð+Ð+r(   c                ó&   •— g | ]}|‰j         v¯|‘ŒS r'   )rW   )rQ   rê   rI   s     €r)   rS   z0LLVMDependencyCMake.__init__.<locals>.<listcomp>¶  s&   ø€ ÐLÐLÐL A°¸$Ô:KÐ1KÐ1K˜aÐ1KÐ1KÐ1Kr(   )r
   r   Úllvm_modulesÚllvm_opt_modulesrC   r¯   r°   ÚbuildÚhostÚallr   rB   r   Úfound_modulesr8   r   ÚwarningrA   r¿   rF   ÚtraceparserÚget_cmake_varÚlenÚsplitrW   rE   r   r,   )	rI   r8   rV   r9   Úinc_dirsÚdefsÚtempr°   rJ   s	   `      @€r)   rB   zLLVMDependencyCMake.__init__Ž  s  øøø€ Ý)­/¸&À)Ñ*LÔ*LÑMÔMˆÔÝ -­o¸fÐFXÑ.YÔ.YÑ ZÔ ZˆÔàˆ	Ø�:Š:�h Ñ&Ô&ð 	4ØœÔ.Ô4ˆIˆIàœÔ.Ô3ˆIØð 
	¥Ð#IÐ#IÐ#IÐ#I¸LÐ#IÑ#IÔ#IÑ IÔ Ið 
	åÔ'¨Õ.@ÀÑ.IÔ.IÈ3ÐPVÑWÔWÐWð /1ˆDÔØˆDŒIõ ŒLÐtÑuÔuÐuØˆFå‰Œ×Ò˜˜s F°UÐW[ÐÑ\Ô\Ð\ð Œ{ð 	Ø!ˆDŒMÝŒLÐWÑXÔXÐXØˆFàÔÐ#ØˆFð Ô#×1Ò1Ð2HÑIÔIˆØÔ×-Ò-Ð.CÑDÔDˆåˆt‰9Œ9˜Š>ˆ>Ø˜”7—=’= Ñ%Ô%ˆDØ+Ð+ (Ð+Ñ+Ô+¨dÑ2ˆØÐÔÐLÐLÐLÐL¨ÐLÑLÔLÑLÐÔØ×'Ò'­¸¸TÔ=MÈrÑ(RÔ(RÑSÔSð 	Ø!ˆDŒMØˆFð	ð 	r(   c                ó   — dS )NzCMakeListsLLVM.txtr'   rp   s    r)   Ú_main_cmake_filez$LLVMDependencyCMake._main_cmake_file»  s   € à#Ð#r(   r   c                ón   — d                      d                     | j        | j        z   ¦  «        ¦  «        gS )Nz-DLLVM_MESON_MODULES={}ú;)rÖ   rj   rô   rõ   rp   s    r)   Ú_extra_cmake_optsz%LLVMDependencyCMake._extra_cmake_opts¿  s0   € Ø)×0Ò0°·²¸$Ô:KÈdÔNcÑ:cÑ1dÔ1dÑeÔeÐfÐfr(   r    úT.List[T.Tuple[str, bool]]Ú
componentsc                óú   — g }|D ]u\  }}| j                              d|› �¦  «        }|sD|r|                      d|› d�¦  «        ‚t          j        dt          j        |¦  «        d¦  «         Œh|D ]
}|||fgz  }ŒŒv|S )NÚMESON_LLVM_TARGETS_zLLVM module z was not foundzOptional LLVM modulezwas not found)rû   rü   Ú_gen_exceptionr   rú   Úbold)rI   r    r  ÚresrÞ   r–   Ú
cm_targetsÚis           r)   Ú_map_module_listz$LLVMDependencyCMake._map_module_listÂ  s´   € ØˆØ$ð 		'ð 		'‰MˆC�ØÔ)×7Ò7Ð8SÈcÐ8SÐ8SÑTÔTˆJØð Øð Ø×-Ò-Ð.P¸SÐ.PÐ.PÐ.PÑQÔQÐQå”LÐ!7½¼À3¹¼ÈÑYÔYÐYØØð 'ð '�Ø˜˜H˜�Ñ&��ð'àˆ
r(   Úmodulec                óT   — | j                              d|› �¦  «        }|r|d         S |S )NÚMESON_TARGET_TO_LLVM_r   )rû   rü   )rI   r  Ú	orig_names      r)   Ú_original_module_namez)LLVMDependencyCMake._original_module_nameÐ  s8   € ØÔ$×2Ò2Ð3SÈ6Ð3SÐ3SÑTÔTˆ	Øð 	 Ø˜Q”<ÐØˆr(   )r8   r.   rV   r+   r9   r:   r-   r;   ru   )r-   r   )r    r  r  r  r-   r  )r  r.   r-   r.   )	r#   r$   r%   rB   r  r  r  r  rv   rw   s   @r)   rå   rå   �  s’   ø€ € € € € ð+ð +ð +ð +ð +ð +ðZ$ð $ð $ð $ðgð gð gð gðð ð ð ðð ð ð ð ð ð ð r(   rå   c                  ó.   ‡ — e Zd ZdZdˆ fd„Zddd„Zˆ xZS )ÚValgrindDependencyzy
    Consumers of Valgrind usually only need the compile args and do not want to
    link to its (static) libraries.
    rV   r+   r9   r:   c                óN   •— t          ¦   «                              d||¦  «         d S )NÚvalgrind)rA   rB   )rI   rV   r9   rJ   s      €r)   rB   zValgrindDependency.__init__Ü  s%   ø€ Ý‰Œ×Ò˜ S¨&Ñ1Ô1Ð1Ð1Ð1r(   NFr?   r!   Úrawra   r-   r   c                ó   — g S ré   r'   )rI   r?   r  s      r)   Úget_link_argsz ValgrindDependency.get_link_argsß  s   € Øˆ	r(   )rV   r+   r9   r:   )NF)r?   r!   r  ra   r-   r   )r#   r$   r%   râ   rB   r  rv   rw   s   @r)   r  r  ×  s`   ø€ € € € € ðð ð2ð 2ð 2ð 2ð 2ð 2ðð ð ð ð ð ð ð ð r(   r  c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )	ÚZlibSystemDependencyr8   r.   r*   r+   r9   r:   c                ó  •— t          ¦   «                              |||¦  «         ddlm} ddlm} | j        j        | j                 }| 	                    ¦   «         rt          | j        ||f¦  «        s<|                     ¦   «         s(|                     ¦   «         s|                     ¦   «         rd| _        dg| _        n�| j                             ¦   «         dk    rddg}nd	g}|D ]W}| j                             ||g ¦  «        }	| j                             d
d|| g¬¦  «        }
|	r|
d         rd| _        |	| _         nŒXd S | j                             dd| j        g | g¦  «        \  }}|                     d¦  «        | _        d S )Nr   )ÚAppleClangCCompiler)ÚAppleClangCPPCompilerTz-lzÚmsvcÚzlib1ÚzlibÚzzzlib.hrº   )Údependenciesr   ÚZLIB_VERSIONz#include <zlib.h>ú")rA   rB   Úcompilers.cr   Úcompilers.cppr!  rV   r1   r,   r3   Ú
isinstancerT   Ú
is_freebsdÚis_dragonflybsdÚ
is_androidrF   rX   Úget_argument_syntaxrU   Ú
has_headerÚ
get_defineÚstripr"   )rI   r8   r*   r9   r   r!  r4   ÚlibsrÂ   ÚlÚhÚvÚ_rJ   s                €r)   rB   zZlibSystemDependency.__init__å  s°  ø€ Ý‰Œ×Ò˜˜{¨FÑ3Ô3Ð3Ø5Ð5Ð5Ð5Ð5Ð5Ø9Ð9Ð9Ð9Ð9Ð9àŒHÔ˜dÔ.Ô/ˆð �[Š[‰]Œ]ð 	�z¨$Ô*<Ð?RÐTiÐ>jÑkÔkð 	Ø—’‘”ð	Ø"#×"3Ò"3Ñ"5Ô"5ð	Ø9:¿º¹¼ð	ð !ˆDŒMØ#˜WˆDŒNˆNàÔ!×5Ò5Ñ7Ô7¸6ÒAÐAØ Ð(��à�u�Øð ð �ØÔ&×3Ò3°C¸ÀbÑIÔI�ØÔ&×1Ò1°(¸BÀÐ[_ÐZ`Ð1ÑaÔa�Øð ˜˜1œð Ø$(�D”MØ%&�D”NØ�Eøà�àÔ!×,Ò,¨^Ð=PÐRVÔRZÐ\^ÐaeÐ`fÑgÔg‰ˆˆ1Ø—w’w˜s‘|”|ˆŒˆˆr(   r}   r~   rw   s   @r)   r  r  ã  s=   ø€ € € € € ð!$ð !$ð !$ð !$ð !$ð !$ð !$ð !$ð !$ð !$r(   r  c                  óP   ‡ — e Zd Zdˆ fd„Zedd	„¦   «         Zedd„¦   «         Zˆ xZS )ÚJNISystemDependencyr*   r+   r9   r   c                ó>	  •— t          ¦   «                              d|t          j        d|¦  «        ¦  «         d| _        | j        j        | j                 }d|j        j	        | j                 vrt          | j        || j        d¦  «         |j        j	        | j                 d         | _        | j        j        | _        t          j        |                     dg ¦  «        ¦  «        }|D ]>}|dvr8| j        rt$          j        nt$          j        } |d|› d�¦  «         d	| _         d S Œ?d
|v rIt-          | j        |d
         ¦  «        s.t%          j        d| j        › d|d
         › �¦  «         d	| _        d S |j        | j                                      ¦   «         | _        | j        �s7t5          j        t9          j        | j        j        d         ¦  «        ¦  «                             ¦   «         j         d         | _        | !                    ¦   «         rËt5          j        d¦  «        }|| j        j         v r©tE          j#        ddd|j$        gtD          j%        ¬¦  «        }|j&        dk    r3| j        rt$          j        nt$          j        } |d¦  «         d	| _        d S t5          j        |j'         (                    ¦   «          )                    ¦   «         ¦  «        | _        |  *                    |¦  «        }	|	€t%          j        d¦  «         d	| _        d S | j        dz  }
| j+         ,                    d|
› �¦  «         | j+         ,                    d|
|	z  › �¦  «         |�r<| -                    ¦   «         r| j        dz  }|}nMt-          | j        d¦  «        r)| j        dz  dz  |  .                    |j$        ¦  «        z  }n
| j        dz  }|dz  }d|v rc| j/         0                    d|tc          |¦  «        g¬¦  «        }|€t%          j        d¦  «         d	| _        n| j2         3                    |¦  «         d|v rc| j/         0                    d |tc          |¦  «        g¬¦  «        }|€t%          j        d!¦  «         d	| _        n| j2         3                    |¦  «         d"| _        d S )#NÚjnir:   )ú0.62.0rº   Újavar    >   ÚawtÚjvmzUnknown JNI module (ú)Fr"   zIncorrect JDK version found (z
), wanted r   r   z4/System/Library/Frameworks/JavaVM.framework/Versionsz/usr/libexec/java_homez
--failfastz--arch)ÚstdoutzJJAVA_HOME could not be discovered on the system. Please set it explicitly.zlCould not find a JDK platform include directory for your OS, please open an issue or provide a pull request.r…   rP   rÂ   z<= 1.8.0ÚjreÚserverr?  )Ú
extra_dirszjvm library not found.r>  Újawtzjawt library not found.T)4rA   rB   ÚTÚcastÚfeature_sincerV   r1   r,   r¯   r°   r   r8   Újavacr"   r   ÚlistifyrC   r–   r   ÚerrorrÆ   rF   r	   Ú
propertiesÚget_java_homeÚ	java_homeÚpathlibÚPathÚshutilÚwhichÚexelistÚresolveÚparentsr3   Ú
subprocessÚrunÚ
cpu_familyÚPIPEÚ
returncoderA  Údecoder2  Ú:_JNISystemDependency__machine_info_to_platform_include_dirrW   rš   r2   Ú#_JNISystemDependency__cpu_translaterT   rU   r.   rX   r±   )rI   r*   r9   r4   r    r  ÚlogÚproblem_java_prefixr  Úplatform_include_dirÚjava_home_includeÚjava_home_libÚjava_home_lib_serverr?  rE  rJ   s                  €r)   rB   zJNISystemDependency.__init__
  s˜  ø€ Ý‰Œ×Ò˜ ­Q¬VÐ4HÈ&Ñ-QÔ-QÑRÔRÐRà+ˆÔàŒHÔ˜dÔ.Ô/ˆà˜Ô-Ô7¸Ô8HÔIÐIÐIÝ˜DœI {°DÔ4DÀfÑMÔMÐMØ Ô)Ô3°DÔ4DÔEÀfÔMˆŒ
Ø”zÔ)ˆŒå'Ô/°·
²
¸9ÀbÑ0IÔ0IÑJÔJˆØð 	ð 	ˆFØ˜^Ð+Ð+Ø$(¤MÐA•d”j�jµt´z�Ø�Ð4¨6Ð4Ð4Ð4Ñ5Ô5Ð5Ø %�”Ø��ð	 ,ð ˜ÐÐ¥°t´|ÀVÈIÔEVÑ'WÔ'WÐÝŒJÐb°t´|ÐbÐbÈvÐV_ÔO`ÐbÐbÑcÔcÐcØ!ˆDŒMØˆFà$Ô/°Ô0@ÔA×OÒOÑQÔQˆŒØŒ~ñ 	OÝ$œ\­&¬,°t´zÔ7IÈ!Ô7LÑ*MÔ*MÑNÔN×VÒVÑXÔXÔ`ÐabÔcˆDŒNØ�{Š{‰}Œ}ð 
OÝ&-¤lÐ3iÑ&jÔ&jÐ#Ø&¨$¬.Ô*@Ð@Ð@Ý$œ.Ð*BÀLÐRZÐ\]Ô\hÐ)iÝ0:´ðAñ Aô A�Cà”~¨Ò*Ð*Ø,0¬MÐI�dœj˜j½t¼z˜Ø˜ÐhÑiÔiÐiØ(-˜œØ˜Ý%,¤\°#´*×2CÒ2CÑ2EÔ2E×2KÒ2KÑ2MÔ2MÑ%NÔ%N�D”Nà#×JÒJÈ1ÑMÔMÐØÐ'ÝŒJð  Fñ  Gô  Gð  GØ!ˆDŒMØˆFà œN¨YÑ6ÐØÔ× Ò Ð!9Ð&7Ð!9Ð!9Ñ:Ô:Ð:ØÔ× Ò Ð!PÐ&7Ð:NÑ&NÐ!PÐ!PÑQÔQÐQàñ 	0Ø�|Š|‰~Œ~ð 	@Ø $¤°Ñ 6�Ø'4Ð$Ð$å" 4¤<°Ñ<Ô<ð ;Ø$(¤N°UÑ$:¸UÑ$BÀT×EYÒEYÐZ[ÔZfÑEgÔEgÑ$g�M�Mà$(¤N°UÑ$:�Mà'4°xÑ'?Ð$à˜ÐÐØÔ(×5Ò5°e¸[ÕVYÐZnÑVoÔVoÐUpÐ5ÑqÔq�Ø�;Ý”JÐ7Ñ8Ô8Ð8Ø$)�D”M�Mà”N×)Ò)¨#Ñ.Ô.Ð.Ø˜ÐÐØÔ)×6Ò6°v¸{ÕX[Ð\iÑXjÔXjÐWkÐ6ÑlÔl�Ø�<Ý”JÐ8Ñ9Ô9Ð9Ø$)�D”M�Mà”N×)Ò)¨$Ñ/Ô/Ð/àˆŒˆˆr(   Úcpur.   r-   c                ó6   — ddi}|                      | | ¦  «        S )z¢
        The JDK and Meson have a disagreement here, so translate it over. In the event more
        translation needs to be done, add to following dict.
        Úx86_64Úamd64)rC   )rd  Ú	java_cpuss     r)   Ú__cpu_translatez#JNISystemDependency.__cpu_translateY  s&   € ð �gð
ˆ	ð �}Š}˜S #Ñ&Ô&Ð&r(   r4   ú'MachineInfo'r!   c                óf  — |                       ¦   «         rdS |                      ¦   «         rdS |                      ¦   «         rdS |                      ¦   «         rdS |                      ¦   «         rdS |                      ¦   «         rdS |                      ¦   «         rdS |                      ¦   «         rdS d	S )
aA  Translates the machine information to the platform-dependent include directory

        When inspecting a JDK release tarball or $JAVA_HOME, inside the `include/` directory is a
        platform-dependent directory that must be on the target's include path in addition to the
        parent `include/` directory.
        ÚlinuxÚwin32ÚdarwinÚsolarisÚfreebsdÚnetbsdÚopenbsdÚ	dragonflyN)Úis_linuxr2   r3   Úis_sunosr,  Ú	is_netbsdÚ
is_openbsdr-  )r4   s    r)   Ú&__machine_info_to_platform_include_dirz:JNISystemDependency.__machine_info_to_platform_include_dire  sµ   € ð �:Š:‰<Œ<ð 	Ø�7Ø�\Š\‰^Œ^ð 	Ø�7Ø�[Š[‰]Œ]ð 	Ø�8Ø�ZŠZ‰\Œ\ð 		Ø�9Ø�\Š\‰^Œ^ð 	Ø�9Ø�[Š[‰]Œ]ð 	Ø�8Ø�\Š\‰^Œ^ð 	Ø�9Ø×ÒÑ Ô ð 	Ø�;àˆtr(   ©r*   r+   r9   r   )rd  r.   r-   r.   )r4   rj  r-   r!   )r#   r$   r%   rB   Ústaticmethodr]  r\  rv   rw   s   @r)   r9  r9  	  s„   ø€ € € € € ðMð Mð Mð Mð Mð Mð^ ð	'ð 	'ð 	'ñ „\ð	'ð ðð ð ñ „\ðð ð ð ð r(   r9  c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚJDKSystemDependencyr*   r+   r9   r   c                ó¬   •— t          ¦   «                              ||¦  «         d| _        | j                             t          ddd¦  «        ¦  «         d S )N)z0.59.0rº   zjdk system dependencyr<  z%Use the jni system dependency instead)rA   rB   rH  Úfeaturechecksrš   r   )rI   r*   r9   rJ   s      €r)   rB   zJDKSystemDependency.__init__‚  s`   ø€ Ý‰Œ×Ò˜ fÑ-Ô-Ð-à+ˆÔØÔ×!Ò!Õ"3Ø#ØØ3ñ#
ô #
ñ 	ô 	ð 	ð 	ð 	r(   ry  r~   rw   s   @r)   r|  r|  �  s=   ø€ € € € € ðð ð ð ð ð ð ð ð ð r(   r|  ÚLLVM)Úcmake_classÚconfigtool_classrL   )Úpkgconfig_classÚsystem_classrƒ   r$  ÚZLIB)Ú
cmake_namerƒ  )r*   r+   r,   r   r-   r.   )AÚ
__future__r   rÉ   rd   rÒ   rO  rQ  rV  ÚtypingrF  Ú%mesonbuild.interpreterbase.decoratorsr   rº   r   r   r*   r   r	   r
   r   Úbaser   r   r   r   r   r   r   rí   r   Ú
configtoolr   Úfactoryr   Úmiscr   Ú	pkgconfigr   ÚTYPE_CHECKINGÚ	envconfigr   r   r   Útyping_extensionsr   r   r5   r7   ry   r�   r�   r’   rå   r  r  r9  r|  ÚCMAKEÚCONFIG_TOOLÚllvm_factoryÚ	PKGCONFIGÚSYSTEMr‡   Úgmock_factoryÚzlib_factoryr'   r(   r)   ú<module>r˜     s§  ðð$ #Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð à CÐ CÐ CÐ CÐ CÐ Cà Ð Ð Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ Fð Zð  Zð  Zð  Zð  Zð  Zð  Zð  Zð  Zð  Zð  Zð  Zð  Zð  Zð  Zð  Zð  Zð  ZØ "Ð "Ð "Ð "Ð "Ð "Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø *Ð *Ð *Ð *Ð *Ð *à„?ð 
!Ø'Ð'Ð'Ð'Ð'Ð'Ø)Ð)Ð)Ð)Ð)Ð)Ø(Ð(Ð(Ð(Ð(Ð(Ø+Ð+Ð+Ð+Ð+Ð+ð!ð !ð !ð !ð ! 	ñ !ô !ð !ð	ð 	ð 	ð 	ð3#ð 3#ð 3#ð 3#ð 3#Ð,ñ 3#ô 3#ð 3#ðl4ð 4ð 4ð 4ð 4Ð+ñ 4ô 4ð 4ð8#ð 8#ð 8#ð 8#ð 8#Ð,ñ 8#ô 8#ð 8#ðv4ð 4ð 4ð 4ð 4Ð+ñ 4ô 4ð 4ðGð Gð Gð Gð GÐ3ñ Gô Gð GðRGð Gð Gð Gð G˜/ñ Gô Gð GðT	ð 	ð 	ð 	ð 	Ð,ñ 	ô 	ð 	ð#$ð #$ð #$ð #$ð #$Ð+ñ #$ô #$ð #$ðLuð uð uð uð uÐ*ñ uô uð uðp	ð 	ð 	ð 	ð 	Ð-ñ 	ô 	ð 	ð !Ð Ø
ØÔÐ/Ô;Ð<Ø#Ø-ð	ñ ô €ð "Ð!ØØÔ Ð"3Ô":Ð;Ø%Ø&ð	ñ ô €ð "Ð!ØØÔ Ð"3Ô":Ð;Ø%Ø&ð	ñ ô €ð !Ð Ø
ØÔ Ð"3Ô"9Ð;LÔ;SÐTØØ%ð	ñ ô €€€r(   