§
    ±Ûg˜(  ã                   ó–  — d Z ddlZddlZddlZddlm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 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 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 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 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 d„ Z  G d„ de¦  «        Z!ej"         #                    d¬ ¦  «        ej"         $                    ed!¬"¦  «         G d#„ d$e!¦  «        ¦   «         ¦   «         Z%ej"         $                    ed%¬"¦  «         G d&„ d'e%¦  «        ¦   «         Z& G d(„ d)e!¦  «        Z'dS )*aY  Notes about unicode handling in psutil
======================================.

Starting from version 5.3.0 psutil adds unicode support, see:
https://github.com/giampaolo/psutil/issues/1040
The notes below apply to *any* API returning a string such as
process exe(), cwd() or username():

* all strings are encoded by using the OS filesystem encoding
  (sys.getfilesystemencoding()) which varies depending on the platform
  (e.g. "UTF-8" on macOS, "mbcs" on Win)
* no API call is supposed to crash with UnicodeDecodeError
* instead, in case of badly encoded data returned by the OS, the
  following error handlers are used to replace the corrupted characters in
  the string:
    * sys.getfilesystemencodeerrors() or "surrogatescape" on POSIX and
      "replace" on Windows.

For a detailed explanation of how psutil handles unicode see #1040.

Tests
=====

List of APIs returning or dealing with a string:
('not tested' means they are not tested to deal with non-ASCII strings):

* Process.cmdline()
* Process.cwd()
* Process.environ()
* Process.exe()
* Process.memory_maps()
* Process.name()
* Process.net_connections('unix')
* Process.open_files()
* Process.username()             (not tested)

* disk_io_counters()             (not tested)
* disk_partitions()              (not tested)
* disk_usage(str)
* net_connections('unix')
* net_if_addrs()                 (not tested)
* net_if_stats()                 (not tested)
* net_io_counters()              (not tested)
* sensors_fans()                 (not tested)
* sensors_temperatures()         (not tested)
* users()                        (not tested)

* WindowsService.binpath()       (not tested)
* WindowsService.description()   (not tested)
* WindowsService.display_name()  (not tested)
* WindowsService.name()          (not tested)
* WindowsService.status()        (not tested)
* WindowsService.username()      (not tested)

In here we create a unicode path with a funky non-ASCII name and (where
possible) make psutil return it back (e.g. on name(), exe(), open_files(),
etc.) and make sure that:

* psutil never crashes with UnicodeDecodeError
* the returned path matches
é    N)Úclosing)ÚBSD)ÚPOSIX)ÚWINDOWS)ÚASCII_FS)Ú
CI_TESTING)ÚHAS_ENVIRON)ÚHAS_MEMORY_MAPS)ÚHAS_NET_CONNECTIONS_UNIX)ÚINVALID_UNICODE_SUFFIX)ÚPYPY©ÚTESTFN_PREFIX)ÚUNICODE_SUFFIX)ÚPsutilTestCase)Úbind_unix_socket)Úchdir)Úcopyload_shared_lib)Úcreate_py_exe)Ú
get_testfn)Úpytest)Ú
safe_mkdir)Úsafe_rmpath)Úskip_on_access_denied)Úspawn_testproc)Ú	terminatec                 óÚ  — d}t          | ¬¦  «        }	 t          |¦  «         t          |¦  «         t          |g¬¦  «        }t	          j        ||dz   ¦  «         t          |dz   ¦  «         	 |�t          |¦  «         t          |¦  «         dS # t          t          f$ r$ Y |�t          |¦  «         t          |¦  «         dS w xY w# |�t          |¦  «         t          |¦  «         w xY w)z`Return True if both the fs and the subprocess module can
    deal with a unicode file name.
    N©Úsuffix)Úcmdz-2TF)	r   r   r   r   ÚshutilÚcopyfiler   ÚUnicodeEncodeErrorÚOSError)r   ÚsprocÚtestfns      úO/granary/edev/quantum/lib/python3.11/site-packages/psutil/tests/test_unicode.pyÚtry_unicoder(   e   s  € ð €EÝ˜vÐ&Ñ&Ô&€FðÝ�FÑÔÐÝ�fÑÔÐÝ F 8Ð,Ñ,Ô,ˆÝŒ˜ ¨¡Ñ.Ô.Ð.Ý�F˜T‘MÑ"Ô"Ð"ð àÐÝ�eÑÔÐÝ�FÑÔÐÐÐøõ ¥Ð(ð ð ð Øð ÐÝ�eÑÔÐÝ�FÑÔÐÐÐðøøøøð
 ÐÝ�eÑÔÐÝ�FÑÔÐÐøøøs$   ”AB ÂCÂ!C ÃCÃC Ã"C*c                   ó<   ‡ — e Zd ZdZeˆ fd„¦   «         Zˆ fd„Zˆ xZS )ÚBaseUnicodeTestNc                 ó  •— t          ¦   «                              ¦   «          d| _        d | _        | j        �Mt          | j        ¦  «        s	d| _        d S t          | j        ¬¦  «        | _        t          | j        ¦  «         d S d S )NFTr   )ÚsuperÚ
setUpClassÚ
skip_testsÚ
funky_nameÚfunky_suffixr(   r   r   )ÚclsÚ	__class__s    €r'   r-   zBaseUnicodeTest.setUpClassƒ   s�   ø€ å‰Œ×ÒÑÔÐØˆŒØˆŒØÔÐ'Ý˜sÔ/Ñ0Ô0ð .Ø!%�”��å!+°3Ô3CÐ!DÑ!DÔ!D�”Ý˜cœnÑ-Ô-Ð-Ð-Ð-ð (Ð'ó    c                 ó~   •— t          ¦   «                              ¦   «          | j        rt          j        d¦  «        ‚d S )Nzcan't handle unicode str)r,   ÚsetUpr.   r   Úskip)Úselfr2   s    €r'   r5   zBaseUnicodeTest.setUp�   s9   ø€ Ý‰Œ�Š‰ŒˆØŒ?ð 	:Ý”+Ð8Ñ9Ô9Ð9ð	:ð 	:r3   )Ú__name__Ú
__module__Ú__qualname__r0   Úclassmethodr-   r5   Ú__classcell__)r2   s   @r'   r*   r*   €   s`   ø€ € € € € Ø€Làð	.ð 	.ð 	.ð 	.ñ „[ð	.ð:ð :ð :ð :ð :ð :ð :ð :ð :r3   r*   Úserial)ÚnamezASCII fs©Úreasonc                   ó  — e Zd ZdZeZd„ Zd„ Zd„ Zd„ Z	d„ Z
ej                             eoed¬¦  «        d	„ ¦   «         Zej                             e d
¬¦  «        d„ ¦   «         Zej                             e d
¬¦  «        ej                             e d¬¦  «         e¦   «         d„ ¦   «         ¦   «         ¦   «         Zd„ Zej                             e d¬¦  «        ej                             ed¬¦  «        d„ ¦   «         ¦   «         ZdS )Ú
TestFSAPIsz1Test FS APIs with a funky, valid, UTF8 path name.c                 óº   — t          j        ¦   «         5  t          j        d¦  «         | j        t	          j        d¦  «        v cd d d ¦  «         S # 1 swxY w Y   d S )NÚignoreú.)ÚwarningsÚcatch_warningsÚsimplefilterr/   ÚosÚlistdir©r7   s    r'   Úexpect_exact_path_matchz"TestFSAPIs.expect_exact_path_matchœ   s˜   € ÝÔ$Ñ&Ô&ð 	6ð 	6ÝÔ! (Ñ+Ô+Ð+Ø”?¥b¤j°¡o¤oÐ5ð	6ð 	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð 	6ð 	6s   ”/AÁAÁAc                 ó†  — | j         ddg}|                      |¦  «        }t          j        |j        ¦  «        }|                     ¦   «         }t          |t          ¦  «        sJ ‚|                      ¦   «         rGt          j
                             |¦  «        t          j
                             | j         ¦  «        k    sJ ‚d S d S ©Nz-cz2import time; [time.sleep(0.1) for x in range(100)])r/   r   ÚpsutilÚProcessÚpidÚexeÚ
isinstanceÚstrrL   rI   ÚpathÚnormcase)r7   r    ÚsubpÚprR   s        r'   Útest_proc_exezTestFSAPIs.test_proc_exe£   s·   € àŒOØØ@ð
ˆð
 ×"Ò" 3Ñ'Ô'ˆÝŒN˜4œ8Ñ$Ô$ˆØ�eŠe‰gŒgˆÝ˜#�sÑ#Ô#Ð#Ð#Ð#Ø×'Ò'Ñ)Ô)ð 	NÝ”7×#Ò# CÑ(Ô(­B¬G×,<Ò,<¸T¼_Ñ,MÔ,MÒMÐMÐMÐMð	Nð 	NØMÐMr3   c                 óH  — | j         ddg}|                      |¦  «        }t          j        |j        ¦  «                             ¦   «         }t          |t          ¦  «        sJ ‚|                      ¦   «         r*|t          j
                             | j         ¦  «        k    sJ ‚d S d S rN   )r/   r   rO   rP   rQ   r>   rS   rT   rL   rI   rU   Úbasename)r7   r    rW   r>   s       r'   Útest_proc_namezTestFSAPIs.test_proc_name°   s£   € àŒOØØ@ð
ˆð
 ×"Ò" 3Ñ'Ô'ˆÝŒ~˜dœhÑ'Ô'×,Ò,Ñ.Ô.ˆÝ˜$¥Ñ$Ô$Ð$Ð$Ð$Ø×'Ò'Ñ)Ô)ð 	=Ø�2œ7×+Ò+¨D¬OÑ<Ô<Ò<Ð<Ð<Ð<ð	=ð 	=Ø<Ð<r3   c                 ó  — | j         ddg}|                      |¦  «        }t          j        |j        ¦  «        }|                     ¦   «         }|D ]}t          |t          ¦  «        sJ ‚Œ|                      ¦   «         r||k    sJ ‚d S d S rN   )	r/   r   rO   rP   rQ   ÚcmdlinerS   rT   rL   )r7   r    rW   rX   r^   Úparts         r'   Útest_proc_cmdlinezTestFSAPIs.test_proc_cmdline¼   sŸ   € àŒOØØ@ð
ˆð
 ×"Ò" 3Ñ'Ô'ˆÝŒN˜4œ8Ñ$Ô$ˆØ—)’)‘+”+ˆØð 	)ð 	)ˆDÝ˜d¥CÑ(Ô(Ð(Ð(Ð(Ð(Ø×'Ò'Ñ)Ô)ð 	"Ø˜c’>�>�>�>ð	"ð 	"Ø!�>r3   c                 ó˜  — | j         dz   }|                      t          |¦  «         t          |¦  «         t	          |¦  «        5  t          j        ¦   «         }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          |                     ¦   «         t          ¦  «        sJ ‚|  
                    ¦   «         r||k    sJ ‚d S d S ©NÚ2)r/   Ú
addCleanupr   r   r   rO   rP   ÚcwdrS   rT   rL   )r7   ÚdnamerX   re   s       r'   Útest_proc_cwdzTestFSAPIs.test_proc_cwdÊ   sû   € Ø” #Ñ%ˆØ�Š� UÑ+Ô+Ð+Ý�5ÑÔÐÝ�5‰\Œ\ð 	ð 	Ý”Ñ Ô ˆAØ—%’%‘'”'ˆCð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ ˜!Ÿ%š%™'œ'¥3Ñ'Ô'Ð'Ð'Ð'Ø×'Ò'Ñ)Ô)ð 	 Ø˜%’<�<�<�<ð	 ð 	 Ø�<s   Á(A8Á8A<Á?A<zfails on PYPY + WINDOWSr?   c                 ód  — t          j        ¦   «         }t          |                     ¦   «         ¦  «        }t	          | j        d¦  «        5  t          |                     ¦   «         ¦  «        }d d d ¦  «         n# 1 swxY w Y   ||z
                       ¦   «         j        }t          |t          ¦  «        sJ ‚t          r|st          j        d¦  «        ‚|                      ¦   «         rGt          j                             |¦  «        t          j                             | j        ¦  «        k    sJ ‚d S d S )NÚrbzopen_files on BSD is broken)rO   rP   ÚsetÚ
open_filesÚopenr/   ÚpoprU   rS   rT   r   r   r6   rL   rI   rV   )r7   rX   ÚstartÚnewrU   s        r'   Útest_proc_open_fileszTestFSAPIs.test_proc_open_filesÕ   sH  € åŒNÑÔˆÝ�A—L’L‘N”NÑ#Ô#ˆÝ�$”/ 4Ñ(Ô(ð 	&ð 	&Ý�a—l’l‘n”nÑ%Ô%ˆCð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&à�e‘× Ò Ñ"Ô"Ô'ˆÝ˜$¥Ñ$Ô$Ð$Ð$Ð$Ýð 	=�tð 	=å”+Ð;Ñ<Ô<Ð<Ø×'Ò'Ñ)Ô)ð 	OÝ”7×#Ò# DÑ)Ô)­R¬W×-=Ò-=¸d¼oÑ-NÔ-NÒNÐNÐNÐNð	Oð 	OØNÐNs   Á
"A8Á8A<Á?A<z
POSIX onlyc                 óV  — |                       | j        ¬¦  «        }t          |¦  «        }t          |¦  «        5  t	          j        ¦   «                              d¦  «        d         }t          |j        t          ¦  «        sJ ‚|j        |k    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr   Úunixr   )
r   r0   r   r   rO   rP   Únet_connectionsrS   ÚladdrrT   )r7   r>   ÚsockÚconns       r'   Útest_proc_net_connectionsz$TestFSAPIs.test_proc_net_connectionsã   sã   € à�Š dÔ&7ˆÑ8Ô8ˆÝ Ñ%Ô%ˆÝ�T‰]Œ]ð 	&ð 	&Ý”>Ñ#Ô#×3Ò3°FÑ;Ô;¸AÔ>ˆDÝ˜dœj­#Ñ.Ô.Ð.Ð.Ð.Ø”: Ò%Ð%Ð%Ð%Ð%ð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð 	&ð 	&s   ºABÂB"Â%B"zcan't list UNIX socketsc                 óD  — d„ }|                       | j        ¬¦  «        }t          |¦  «        }t          |¦  «        5  t	          j        d¬¦  «        } ||¦  «        }t          |j        t          ¦  «        sJ ‚|j        |k    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nc                 óª   — | D ]B}t           j                             |j        ¦  «                             t
          ¦  «        r|c S ŒCt          d¦  «        ‚)Nzconnection not found)rI   rU   r[   rt   Ú
startswithr   Ú
ValueError)Úconsrv   s     r'   Ú	find_sockz2TestFSAPIs.test_net_connections.<locals>.find_sockò   sV   € Øð  ð  �Ý”7×#Ò# D¤JÑ/Ô/×:Ò:½=ÑIÔIð  Ø�K�K�Kð åÐ3Ñ4Ô4Ð4r3   r   rr   )Úkind)	r   r0   r   r   rO   rs   rS   rt   rT   )r7   r}   r>   ru   r|   rv   s         r'   Útest_net_connectionszTestFSAPIs.test_net_connectionsì   sô   € ð	5ð 	5ð 	5ð �Š dÔ&7ˆÑ8Ô8ˆÝ Ñ%Ô%ˆÝ�T‰]Œ]ð 	&ð 	&ÝÔ)¨vÐ6Ñ6Ô6ˆDØ�9˜T‘?”?ˆDÝ˜dœj­#Ñ.Ô.Ð.Ð.Ð.Ø”: Ò%Ð%Ð%Ð%Ð%ð		&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð 	&ð 	&s   ½A
BÂBÂBc                 ó–   — | j         dz   }|                      t          |¦  «         t          |¦  «         t	          j        |¦  «         d S rb   )r/   rd   r   r   rO   Ú
disk_usage)r7   rf   s     r'   Útest_disk_usagezTestFSAPIs.test_disk_usage   sG   € Ø” #Ñ%ˆØ�Š� UÑ+Ô+Ð+Ý�5ÑÔÐÝÔ˜%Ñ Ô Ð Ð Ð r3   únot supportedzunstable on PYPYc                 ó<  ‡— t          | j        ¬¦  «        5 }d„ Šˆfd„t          j        ¦   «                              ¦   «         D ¦   «         }d„ |D ¦   «         } ‰|¦  «        |v sJ ‚|D ]}t          |t          ¦  «        sJ ‚Œ	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr   c                 óz   — t           j                             t           j                             | ¦  «        ¦  «        S )N)rI   rU   ÚrealpathrV   )rX   s    r'   Únormpathz-TestFSAPIs.test_memory_maps.<locals>.normpath  s(   € Ý”w×'Ò'­¬×(8Ò(8¸Ñ(;Ô(;Ñ<Ô<Ð<r3   c                 ó0   •— g | ]} ‰|j         ¦  «        ‘ŒS © )rU   )Ú.0Úxr‡   s     €r'   ú
<listcomp>z/TestFSAPIs.test_memory_maps.<locals>.<listcomp>  s2   ø€ ð ð ð Ø%&��˜œÑ Ô ðð ð r3   c                 ó$   — g | ]}t           |v ¯|‘ŒS r‰   r   )rŠ   r‹   s     r'   rŒ   z/TestFSAPIs.test_memory_maps.<locals>.<listcomp>  s"   € ÐBÐBÐB˜a­}ÀÐ/AÐ/A˜Ð/AÐ/AÐ/Ar3   )r   r0   rO   rP   Úmemory_mapsrS   rT   )r7   Ú
funky_pathÚlibpathsrU   r‡   s       @r'   Útest_memory_mapszTestFSAPIs.test_memory_maps  s#  ø€ õ !¨Ô(9Ð:Ñ:Ô:ð 	-¸jð=ð =ð =ðð ð ð Ý*0¬.Ñ*:Ô*:×*FÒ*FÑ*HÔ*Hðñ ô ˆHð CÐB 8ÐBÑBÔBˆHØ�8˜JÑ'Ô'¨8Ð3Ð3Ð3Ð3Ø ð -ð -�Ý! $­Ñ,Ô,Ð,Ð,Ð,Ð,ð-ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð 	-ð 	-s   —A,BÂBÂBN)r8   r9   r:   Ú__doc__r   r0   rL   rY   r\   r`   rg   r   ÚmarkÚskipifr   r   rp   r   rw   r   r   r   r‚   r
   r‘   r‰   r3   r'   rB   rB   •   s¸  € € € € € ð <Ð;à!€Lð6ð 6ð 6ðNð Nð Nð
=ð 
=ð 
=ð"ð "ð "ð	 ð 	 ð 	 ð „[×Ò˜Ð( Ð1JÐÑKÔKðOð Oñ LÔKðOð „[×Ò˜E˜	¨,ÐÑ7Ô7ð&ð &ñ 8Ô7ð&ð „[×Ò˜E˜	¨,ÐÑ7Ô7Ø„[×ÒØ$Ð$Ð-Fð ñ ô ð ÐÑÔð&ð &ñ Ôñô ñ 8Ô7ð
&ð!ð !ð !ð „[×Ò˜OÐ+°OÐÑDÔDØ„[×Ò˜Ð%7ÐÑ8Ô8ð-ð -ñ 9Ô8ñ EÔDð-ð -ð -r3   rB   zunreliable on CIc                   ó   — e Zd ZdZeZd„ ZdS )ÚTestFSAPIsWithInvalidPathz-Test FS APIs with a funky, invalid path name.c                 ó   — dS )NTr‰   rK   s    r'   rL   z1TestFSAPIsWithInvalidPath.expect_exact_path_match  s   € Øˆtr3   N)r8   r9   r:   r’   r   r0   rL   r‰   r3   r'   r–   r–     s.   € € € € € à7Ð7à)€Lðð ð ð ð r3   r–   c                   óª   — e Zd ZdZeZej                             e	 d¬¦  «        ej                             e
oed¬¦  «        d„ ¦   «         ¦   «         ZdS )ÚTestNonFSAPISz&Unicode tests for non fs-related APIs.rƒ   r?   zsegfaults on PYPY + WINDOWSc                 ó’  — t           j                             ¦   «         }| j        |d<   |                      |¬¦  «        }t          j        |j        ¦  «        }|                     ¦   «         }|                     ¦   «         D ]3\  }}t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚Œ4|d         | j        k    sJ ‚d S )NÚ	FUNNY_ARG)Úenv)rI   ÚenvironÚcopyr0   r   rO   rP   rQ   ÚitemsrS   rT   )r7   rœ   r%   rX   ÚkÚvs         r'   Útest_proc_environzTestNonFSAPIS.test_proc_environ,  s¿   € õ
 Œj�oŠoÑÔˆØÔ,ˆˆKÑØ×#Ò#¨Ð#Ñ,Ô,ˆÝŒN˜5œ9Ñ%Ô%ˆØ�iŠi‰kŒkˆØ—I’I‘K”Kð 	&ð 	&‰DˆAˆqÝ˜a¥Ñ%Ô%Ð%Ð%Ð%Ý˜a¥Ñ%Ô%Ð%Ð%Ð%Ð%Ø�;Ô 4Ô#4Ò4Ð4Ð4Ð4Ð4Ð4r3   N)r8   r9   r:   r’   r   r0   r   r“   r”   r	   r   r   r¢   r‰   r3   r'   r™   r™   '  sx   € € € € € Ø0Ð0à!€Là„[×Ò˜K˜°ÐÑ@Ô@Ø„[×Ò˜Ð( Ð1NÐÑOÔOð5ð 5ñ PÔOñ AÔ@ð5ð 5ð 5r3   r™   )(r’   rI   r!   rF   Ú
contextlibr   rO   r   r   r   Úpsutil.testsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r(   r*   r“   Úxdist_groupr”   rB   r–   r™   r‰   r3   r'   ú<module>r¦      s%  ðð<ð <ð| 
€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $Ø (Ð (Ð (Ð (Ð (Ð (Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø &Ð &Ð &Ð &Ð &Ð &Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $Ø .Ð .Ð .Ð .Ð .Ð .Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø "Ð "Ð "Ð "Ð "Ð "ðð ð ð6:ð :ð :ð :ð :�nñ :ô :ð :ð* „×Ò˜hÐÑ'Ô'Ø„×Ò�H ZÐÑ0Ô0ð~-ð ~-ð ~-ð ~-ð ~-�ñ ~-ô ~-ñ 1Ô0ñ (Ô'ð~-ðB „×Ò�JÐ'9ÐÑ:Ô:ðð ð ð ð  
ñ ô ñ ;Ô:ðð5ð 5ð 5ð 5ð 5�Oñ 5ô 5ð 5ð 5ð 5r3   