§
    ƒnócB  ã                  ó  — 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 ddlmZ ddlmZ e	j        rddlmZ dd	lmZ  G d
„ dej        ¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z	 dd d„ZdS )!é    )ÚannotationsN)ÚPathé   )Úmesonlib)Úmlog)ÚMachineChoice)ÚEnvironment)ÚInterpreterc                  ó$  — e Zd ZdZdZej        Z	 	 	 d/d0d„Zd1d„Z	d2d„Z
d2d„Zd3d4d„Zed5d„¦   «         Ze ej        d¬¦  «        d6d„¦   «         ¦   «         Zed7d!„¦   «         Zed8d#„¦   «         Zd9d$„Zd:d&„Zd;d(„Zd<d)„Zd=d*„Zd>d,„Zd?d-„Zd2d.„ZdS )@ÚExternalProgramz&A program that is found on the system.)ÚexeÚmscÚcomÚbatÚcmdNFÚnameÚstrÚcommandúT.Optional[T.List[str]]ÚsilentÚboolÚ
search_dirúT.Optional[str]Úextra_search_dirsc           
     óÆ  — || _         d | _        d | _        |�vt          j        |¦  «        | _        t          j        ¦   «         rI| j        d         }| j        dd …         }|                      |¦  «        }|r||z   | _        nL|g|z   | _        n@|g}	|r|	|z  }	|	D ]3}
|                      ||
¦  «        | _        |  	                    ¦   «         r nŒ4|  	                    ¦   «         rSt          | j        ¦  «        D ],}|�(t          j                             |¦  «        r	|| _         nŒ-| j        d         | _        |sª|  	                    ¦   «         rYt          j        dt          j        |¦  «        dt          j        d¦  «        dd                     | j        ¦  «        z  ¦  «         d S t          j        dt          j        |¦  «        dt          j        d	¦  «        ¦  «         d S d S )
Nr   r   éÿÿÿÿÚProgramzfound:ÚYESz(%s)ú ÚNO)r   ÚpathÚcached_versionr   Úlistifyr   Ú
is_windowsÚ_shebang_to_cmdÚ_searchÚfoundÚreversedÚosÚisfiler   ÚlogÚboldÚgreenÚjoinÚred)Úselfr   r   r   r   r   r   ÚargsÚretÚall_search_dirsÚdÚargs               ú5/usr/lib/python3/dist-packages/mesonbuild/programs.pyÚ__init__zExternalProgram.__init__+   sñ  € ð ˆŒ	Ø%)ˆŒ	Ø/3ˆÔØÐÝ#Ô+¨GÑ4Ô4ˆDŒLÝÔ"Ñ$Ô$ð 
0Ø”l 1”o�Ø”| A B BÔ'�ð ×*Ò*¨3Ñ/Ô/�Øð 0Ø#&¨¡:�D”L�Là$' 5¨4¡<�D”Løà)˜lˆOØ ð 5ØÐ#4Ñ4�Ø$ð ð �Ø#Ÿ|š|¨D°!Ñ4Ô4�”Ø—:’:‘<”<ð Ø�Eðð �:Š:‰<Œ<ð 		-õ   ¤Ñ-Ô-ð -ð -�Ø�?¥r¤w§~¢~°cÑ':Ô':�?Ø #�D”IØ�Eøà œL¨Ô,�”	àð 	Oð �zŠz‰|Œ|ð OÝ”˜¥D¤I¨d¡O¤O°X½t¼zÈ%Ñ?PÔ?PØ #§(¢(¨4¬<Ñ"8Ô"8Ñ8ñ:ô :ð :ð :ð :õ ”˜¥D¤I¨d¡O¤O°X½t¼xÈ¹~¼~ÑNÔNÐNÐNÐNð	Oð 	Oó    Úreturnú T.Union[str, mlog.AnsiDecorator]c                ó`   — |                       ¦   «         st          j        d¦  «        S | j        S )Nr    )r'   r   r/   r!   ©r0   s    r6   Úsummary_valuezExternalProgram.summary_value[   s(   € Ø�zŠz‰|Œ|ð 	"Ý”8˜D‘>”>Ð!ØŒyÐr8   c                ó\   — d}|                      | j        j        | j        | j        ¦  «        S ©Nz<{} {!r} -> {!r}>©ÚformatÚ	__class__Ú__name__r   r   ©r0   Úrs     r6   Ú__repr__zExternalProgram.__repr__`   ó&   € ØˆØ�xŠx˜œÔ/°´¸D¼LÑIÔIÐIr8   c                ó6   — d                      | j        ¦  «        S )z)Human friendly description of the commandr   )r.   r   r<   s    r6   ÚdescriptionzExternalProgram.descriptiond   s   € à�xŠx˜œÑ%Ô%Ð%r8   ÚinterpreterúT.Optional['Interpreter']c                ó|  — | j         �s.ddlm} |                      ¦   «         dgz   }|rE|                     |j        | dgfdd|                     ¦   «         dœd¦  «        }|j        |j        }}nWt          j
        |¦  «        \  }}}|j        dk    r4t          j        |¦  «        }t          j        d|›d|j        › d	�¦  «        ‚|                     ¦   «         }	|	s|                     ¦   «         }	t          j        d
|	¦  «        }
|
st          j        d|›�¦  «        ‚|
                     d¦  «        | _         | j         S )Nr   )Úbuildz	--versionT)ÚcaptureÚcheckÚenvr   zCommand z failed with status ú.z([0-9][0-9\.]+)z-Could not find a version number in output of )r"   Ú rM   Úget_commandÚrun_command_implÚcurrent_nodeÚEnvironmentVariablesÚstdoutÚstderrr   Ú
Popen_safeÚ
returncodeÚ	join_argsÚMesonExceptionÚstripÚreÚsearchÚgroup)r0   rJ   rM   Úraw_cmdÚresÚoÚeÚpÚcmd_strÚoutputÚmatchs              r6   Úget_versionzExternalProgram.get_versionh   sk  € ØÔ"ñ 	1ØÐÐÐÐÐØ×&Ò&Ñ(Ô(¨K¨=Ñ8ˆGØð mØ!×2Ò2°;Ô3KÈdÐU`ÐTaÐMbØ?CØ=AØ;@×;UÒ;UÑ;WÔ;Wð4Yð 4Yð 48ñ	9ô 9�ð
 ”z 3¤:�1��å"Ô-¨gÑ6Ô6‘��1�aØ”< 1Ò$Ð$Ý&Ô0°Ñ9Ô9�GÝ"Ô1Ð2k¸WÐ2kÐ2kÐ\]Ô\hÐ2kÐ2kÐ2kÑlÔlÐlØ—W’W‘Y”YˆFØð #ØŸš™œ�Ý”IÐ0°&Ñ9Ô9ˆEØð kÝÔ-Ð.iÐ^eÐ.iÐ.iÑjÔjÐjØ"'§+¢+¨a¡.¤.ˆDÔØÔ"Ð"r8   rP   ú'Environment'Úfor_machiner   ú'ExternalProgram'c                óz   — |                      ||¦  «        }|€t          ¦   «         S |                      ||¦  «        S ©N)Úlookup_binary_entryÚNonExistingExternalProgramÚ
from_entry)ÚclsrP   rk   r   r   s        r6   Úfrom_bin_listzExternalProgram.from_bin_list�   s>   € ð ×)Ò)¨+°tÑ<Ô<ˆØˆ?Ý-Ñ/Ô/Ð/Ø�~Š~˜d GÑ,Ô,Ð,r8   )Úmaxsizer!   c                óä  — dt           j        vr| S t          t           j        d         ¦  «        dz  dz  dz  dz  }g }|                      t           j        ¦  «        D ]u}t          |¦  «        |k    r|                     |¦  «         Œ+dt          j        v r<|                     t           j         	                    t          j        ¦  «        ¦  «         Œvt           j         
                    |¦  «        S )NÚUSERPROFILEÚAppDataÚLocalÚ	MicrosoftÚWindowsApps)r)   Úenvironr   ÚsplitÚpathsepÚappendÚsysÚ
executabler!   Údirnamer.   )r!   Úappstore_dirÚpathsÚeachs       r6   Ú_windows_sanitize_pathz&ExternalProgram._windows_sanitize_pathŒ   sÍ   € ð ¥¤
Ð*Ð*ØˆKõ �BœJ }Ô5Ñ6Ô6¸ÑBÀWÑLÈ{ÑZÐ]jÑjˆØˆØ—J’J�rœzÑ*Ô*ð 	>ð 	>ˆDÝ�D‰zŒz˜\Ò)Ð)Ø—’˜TÑ"Ô"Ð"Ð"Ø¥#¤.Ð0Ð0Ø—’�RœWŸ_š_­S¬^Ñ<Ô<Ñ=Ô=Ð=øÝŒz�Š˜uÑ%Ô%Ð%r8   úT.Union[str, T.List[str]]c                ón  — t          |t          ¦  «        rt          |¦  «        dk    r|d         }t          |t          ¦  «        st          j                             |¦  «        r*t          |t          ¦  «        r|g}t          | |d¬¦  «        S t          |t          ¦  «        sJ ‚t          |d¬¦  «        S )Nr   r   T)r   r   ©r   )Ú
isinstanceÚlistÚlenr)   r!   Úisabsr   r   )r   r   s     r6   rq   zExternalProgram.from_entry¤   s°   € å�g�tÑ$Ô$ð 	%Ý�7‰|Œ|˜qÒ Ð Ø! !œ*�õ �g�tÑ$Ô$ð 	G­¬¯ª°gÑ(>Ô(>ð 	GÝ˜'¥3Ñ'Ô'ð $Ø"˜)�Ý" 4°ÀÐFÑFÔFÐFÝ˜'¥3Ñ'Ô'Ð'Ð'Ð'å˜w¨tÐ4Ñ4Ô4Ð4r8   Úscriptc                ó  — 	 t          | d¬¦  «        5 }|                     ¦   «                              ¦   «         }ddd¦  «         n# 1 swxY w Y   |                     d¦  «        �rÍ|dd…                              d¦  «        d                              ¦   «                              d¬	¦  «        }t          j        ¦   «         rŸ|d                              d
¦  «        r$|d                              d
¦  «        d         |d<   t          |¦  «        dk    r|d         dk    r
|dd…         }t          |¦  «        dk    r#|d         dk    rt
          j        |dd…         z   }nÌt          j	        ¦   «         rM|d         dk    r
|dd…         }t          |¦  «        dk    r#|d         dk    rt
          j        |dd…         z   }nl|d         dk    r$|d         dk    rt
          j        |dd…         z   }n<|d                              d
¦  «        d         dk    rt
          j        |dd…         z   }|| gz   S n8# t          $ r+}t          j        t          |¦  «        ¦  «         Y d}~nd}~ww xY wt          j        d| ›�¦  «         dS )zé
        Check if the file has a shebang and manually parse it to figure out
        the interpreter to use. This is useful if the script is not executable
        or if we're on Windows (which does not understand shebangs).
        zutf-8)ÚencodingNz#!é   ú#r   r   )Úmaxsplitú/r   rP   Úpython3z/usr/bin/envzUnusable script )ÚopenÚreadliner]   Ú
startswithr|   r   r$   r‹   Úpython_commandÚis_haikuÚ	Exceptionr   Údebugr   )r�   ÚfÚ
first_lineÚcommandsrd   s        r6   r%   zExternalProgram._shebang_to_cmd³   sÓ  € ð$	Ý�f wÐ/Ñ/Ô/ð 2°1ØŸZšZ™\œ\×/Ò/Ñ1Ô1�
ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2à×$Ò$ TÑ*Ô*ñ +ð
 & a b bœ>×/Ò/°Ñ4Ô4°QÔ7×=Ò=Ñ?Ô?×EÒEÈqÐEÑQÔQ�ÝÔ&Ñ(Ô(ð Jð   ”{×-Ò-¨cÑ2Ô2ð AØ&.¨q¤k×&7Ò&7¸Ñ&<Ô&<¸RÔ&@˜ ™Ý˜8‘}”} qÒ(Ð(¨X°a¬[¸EÒ-AÐ-AØ#+¨A¨B¨B¤<˜å˜8‘}”} qÒ(Ð(¨X°a¬[¸IÒ-EÐ-EÝ#+Ô#:¸XÀaÀbÀb¼\Ñ#I˜øÝÔ&Ñ(Ô(ð Jð   ”{ nÒ4Ð4Ø#+¨A¨B¨B¤<˜å˜8‘}”} qÒ(Ð(¨X°a¬[¸IÒ-EÐ-EÝ#+Ô#:¸XÀaÀbÀb¼\Ñ#I˜øð   ”{ nÒ4Ð4¸À!¼È	Ò9QÐ9QÝ#+Ô#:¸XÀaÀbÀb¼\Ñ#I˜˜Ø! !œ×*Ò*¨3Ñ/Ô/°Ô3°yÒ@Ð@Ý#+Ô#:¸XÀaÀbÀb¼\Ñ#I˜Ø 6 (Ñ*Ð*ð?+øõ@ ð 	ð 	ð 	ÝŒJ•s˜1‘v”vÑÔÐÐÐÐÐÐøøøøð	øøøåŒ
Ð0 fÐ0Ð0Ñ1Ô1Ð1Øˆts:   ‚H5 “'AºH5 ÁA
Á
H5 ÁA
ÁG%H5 È5
I*È?!I%É%I*c                ó†  — t           j                             |¦  «        d                              ¦   «         dd …         }t          j        t          j        z  t          j        z  }t          j	        ¦   «         r|| j
        v rdS n<t          j        |¦  «        j        |z  r t           j                             |¦  «         S dS )Nr   r   TF)r)   r!   ÚsplitextÚlowerÚstatÚS_IXUSRÚS_IXGRPÚS_IXOTHr   r$   Úwindows_extsÚst_modeÚisdir)r0   r!   ÚsuffixÚexecmasks       r6   Ú_is_executablezExternalProgram._is_executableâ   s£   € Ý”×!Ò! $Ñ'Ô'¨Ô+×1Ò1Ñ3Ô3°A°B°BÔ7ˆÝ”<¥$¤,Ñ.µ´Ñ=ˆÝÔÑ Ô ð 	+Ø˜Ô*Ð*Ð*Ø�tð +åŒW�T‰]Œ]Ô" XÑ-ð 	+Ý”w—}’} TÑ*Ô*Ð*Ð*Øˆur8   úT.Optional[list]c                óv  — |€d S t           j                             ||¦  «        }t           j                             |¦  «        r-|                      |¦  «        r|gS |                      |¦  «        S t          j        ¦   «         r5| j        D ]-}|› d|› �}t           j                             |¦  «        r|gc S Œ.d S )NrQ   )	r)   r!   r.   Úexistsr«   r%   r   r$   r¦   )r0   r   r   ÚtrialÚextÚ	trial_exts         r6   Ú_search_dirzExternalProgram._search_dirì   sÏ   € ØÐØ�4Ý”—’˜Z¨Ñ.Ô.ˆÝŒ7�>Š>˜%Ñ Ô ð 	+Ø×"Ò" 5Ñ)Ô)ð Ø�w�ð ×'Ò'¨Ñ.Ô.Ð.åÔ"Ñ$Ô$ð +ØÔ,ð +ð +�CØ#(Ð 0Ð 0¨3Ð 0Ð 0�IÝ”w—~’~ iÑ0Ô0ð +Ø )˜{Ð*Ð*Ð*ð+àˆtr8   úT.List[T.Optional[str]]c                óP  — |rgt           j                             |¦  «        d         }|dd…                              ¦   «         | j        v r|gS |                      |¦  «        }|r|S dgS t           j                             |¦  «        r5| j        D ]-}|› d|› �}t           j                             |¦  «        r|gc S Œ.|                      t           j	         
                    dd¦  «        ¦  «                             d¦  «        }|D ]}|                      ||¦  «        }|r|c S ŒdgS )a  
        Lots of weird Windows quirks:
        1. PATH search for @name returns files with extensions from PATHEXT,
           but only self.windows_exts are executable without an interpreter.
        2. @name might be an absolute path to an executable, but without the
           extension. This works inside MinGW so people use it a lot.
        3. The script is specified without an extension, in which case we have
           to manually search in PATH.
        4. More special-casing for the shebang inside the script.
        r   NrQ   ÚPATHrR   ú;)r)   r!   r    r¡   r¦   r%   rŒ   r®   r…   r{   Úgetr|   r²   )r0   r   r   Úname_extrž   r°   Úsearch_dirsr   s           r6   Ú_search_windows_special_casesz-ExternalProgram._search_windows_special_casesÿ   sP  € ð ð 	õ
 ”w×'Ò'¨Ñ0Ô0°Ô3ˆHØ˜˜˜Œ|×!Ò!Ñ#Ô# tÔ'8Ð8Ð8à�yÐ à×+Ò+¨GÑ4Ô4ˆHØð  Ø�Ø�6ˆMõ Œ7�=Š=˜ÑÔð 	%ØÔ(ð %ð %�Ø!˜/˜/ C˜/˜/�Ý”7—>’> 'Ñ*Ô*ð %Ø#˜9Ð$Ð$Ð$ð%ð
 ×1Ò1µ"´*·.².ÀÈÑ2LÔ2LÑMÔM×SÒSÐTWÑXÔXˆØ%ð 	 ð 	 ˆJØ×'Ò'¨¨jÑ9Ô9ˆHØð  Ø���ð àˆvˆr8   c                óÐ  — |                       ||¦  «        }|r|S t          j                             |¦  «        r"t          j                             |¦  «        sdgS t          j                             dd¦  «        }t          j        ¦   «         r|r|  	                    |¦  «        }t          j        ||¬¦  «        }t          j        ¦   «         r|                      ||¦  «        S |gS )zz
        Search in the specified dir for the specified executable by name
        and if not found search in PATH
        Nrµ   ©r!   )r²   r)   r!   r�   rŒ   r{   r·   r   r$   r…   ÚshutilÚwhichrº   )r0   r   r   rž   r!   r   s         r6   r&   zExternalProgram._search*  sÞ   € ð
 ×#Ò# D¨*Ñ5Ô5ˆØð 	ØˆOåŒ7�?Š?˜4Ñ Ô ð 	­¬¯ª°tÑ)<Ô)<ð 	Ø�6ˆMåŒz�~Š~˜f dÑ+Ô+ˆÝÔÑ Ô ð 	5 Tð 	5Ø×.Ò.¨tÑ4Ô4ˆDÝ”,˜t¨$Ð/Ñ/Ô/ˆÝÔÑ Ô ð 	EØ×5Ò5°d¸GÑDÔDÐDð ˆyÐr8   c                ó    — | j         d         d uS )Nr   ©r   r<   s    r6   r'   zExternalProgram.found@  s   € ØŒ|˜AŒ dÐ*Ð*r8   úT.List[str]c                ó    — | j         d d …         S rn   rÀ   r<   s    r6   rS   zExternalProgram.get_commandC  s   € ØŒ|˜A˜A˜AŒÐr8   c                ó   — | j         S rn   r¼   r<   s    r6   Úget_pathzExternalProgram.get_pathF  ó
   € ØŒyÐr8   c                ó   — | j         S rn   )r   r<   s    r6   Úget_namezExternalProgram.get_nameI  rÅ   r8   )NFNN)
r   r   r   r   r   r   r   r   r   r   )r9   r:   ©r9   r   rn   )rJ   rK   r9   r   )rP   rj   rk   r   r   r   r9   rl   )r!   r   r9   r   )r   r   r   r†   r9   rl   )r�   r   r9   r   )r!   r   r9   r   )r   r   r   r   r9   r¬   )r   r   r   r   r9   r³   )r   r   r   r   r9   r³   ©r9   r   )r9   rÁ   )r9   r   )rC   Ú
__module__Ú__qualname__Ú__doc__r¦   r   ÚBUILDrk   r7   r=   rF   rI   ri   Úclassmethodrs   ÚstaticmethodÚ	functoolsÚ	lru_cacher…   rq   r%   r«   r²   rº   r&   r'   rS   rÄ   rÇ   © r8   r6   r   r   $   så  € € € € € à0Ð0à6€LØÔ%€KàEIØEIØ>Bð.Oð .Oð .Oð .Oð .Oð`ð ð ð ð
Jð Jð Jð Jð&ð &ð &ð &ð#ð #ð #ð #ð #ð2 ð-ð -ð -ñ „[ð-ð Ø€YÔ Ð&Ñ&Ô&ð&ð &ð &ñ 'Ô&ñ „\ð&ð, ð5ð 5ð 5ñ „\ð5ð ð,ð ,ð ,ñ „\ð,ð\ð ð ð ðð ð ð ð&)ð )ð )ð )ðVð ð ð ð,+ð +ð +ð +ðð ð ð ðð ð ð ðð ð ð ð ð r8   r   c                  ó,   — e Zd ZdZddd„Zdd„Zdd
„ZdS )rp   zA program that will never existÚnonexistingprogramr   r   r9   ÚNonec                ó2   — || _         d g| _        d | _        d S rn   )r   r   r!   )r0   r   s     r6   r7   z#NonExistingExternalProgram.__init__P  s   € ØˆŒ	Ø�vˆŒØˆŒ	ˆ	ˆ	r8   c                ó\   — d}|                      | j        j        | j        | j        ¦  «        S r?   r@   rD   s     r6   rF   z#NonExistingExternalProgram.__repr__U  rG   r8   r   c                ó   — dS )NFrÒ   r<   s    r6   r'   z NonExistingExternalProgram.foundY  s   € Øˆur8   N)rÔ   )r   r   r9   rÕ   rÈ   rÉ   )rC   rÊ   rË   rÌ   r7   rF   r'   rÒ   r8   r6   rp   rp   M  s_   € € € € € Ø%Ð%ðð ð ð ð ð
Jð Jð Jð Jðð ð ð ð ð r8   rp   c                  ó   — e Zd ZdZdS )ÚOverrideProgramzA script overriding a program.N)rC   rÊ   rË   rÌ   rÒ   r8   r6   rÚ   rÚ   ]  s   € € € € € à(Ð(Ð(Ð(r8   rÚ   TrP   rj   rk   r   r   r   Údisplay_nameÚdefault_namesrÁ   Úallow_default_for_crossr   r9   ú*T.Generator['ExternalProgram', None, None]c              #  ó¶  K  — |                       ||¦  «        }|�;t          j        |› d|› d|› �¦  «         t                               ||¦  «        V — dS t          j        |› d�¦  «         |s#|t
          j        u r|                      |¦  «        s3|D ].}t          j        d|› d�|¦  «         t          |d¬¦  «        V — Œ/dS t          j        d	¦  «         dS )
zJFind an external program, chcking the cross file plus any default options.Nz binary for z7 specified from cross file, native file, or env var as z@ binary missing from cross or native file, or env var undefined.zTrying a default z fallback atTrˆ   z+Default target is not allowed for cross use)ro   r   r›   r   rq   r   ÚHOSTÚis_cross_build)rP   rk   r   rÛ   rÜ   rÝ   Úpotential_cmdÚpotential_paths           r6   Úfind_external_programrä   b  s0  è è € ð
 ×+Ò+¨K¸Ñ>Ô>€MØÐ ÝŒ
�lð 4ð 4°ð 4ð 4Ø$1ð4ð 4ñ 	5ô 	5ð 	5å×(Ò(¨¨}Ñ=Ô=Ð=Ð=Ð=ð 	ˆÝ„J�,Ð`Ð`Ð`ÑaÔaÐað ð B {µmÔ6HÐ'HÐ'HÈS×M_ÒM_Ð`kÑMlÔMlÐ'HØ+ð 	?ð 	?ˆNÝŒJÐE¨<ÐEÐEÐEÀ~ÑVÔVÐVÝ! .¸Ð>Ñ>Ô>Ð>Ð>Ð>Ð>ð	?ð 	?õ 	Œ
Ð@ÑAÔAÐAÐAÐAr8   )T)rP   rj   rk   r   r   r   rÛ   r   rÜ   rÁ   rÝ   r   r9   rÞ   )Ú
__future__r   rÐ   r)   r½   r¢   r   r^   ÚtypingÚTÚpathlibr   rR   r   r   r   ÚTYPE_CHECKINGÚenvironmentr	   rJ   r
   ÚHoldableObjectr   rp   rÚ   rä   rÒ   r8   r6   ú<module>rì      s�  ðð #Ð "Ð "Ð "Ð "Ð "à Cà Ð Ð Ð Ø 	€	€	€	Ø €€€Ø €€€Ø 
€
€
€
Ø 	€	€	€	Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #à„?ð )Ø(Ð(Ð(Ð(Ð(Ð(Ø(Ð(Ð(Ð(Ð(Ð(ðfð fð fð fð f�hÔ-ñ fô fð fðR	ð ð ð ð  ñ ô ð ð )ð )ð )ð )ð )�oñ )ô )ð )ð ;?ðBð Bð Bð Bð Bð Bð Br8   