§
    2@Äj-  ã                   óâ   — d dl Z d dlZd dlZd dlmZ d dlZd dlZ	 d dlZdZn# e	$ r dZY nw xY w	 d dl
Z
dZn# e	$ r dZY nw xY w G d„ dej        ¦  «        Zedk    r ej        ¦   «          dS dS )é    N)ÚcudaTFc                   ó*  — e Zd ZdZddœd„Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Z ej         ej        ¦   «          d¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z ej        ed¦  «        d„ ¦   «         Z ej        ed¦  «        d„ ¦   «         Zd„ ZdS )ÚTestCasezßThese test cases are meant to test the Numba test infrastructure itself.
    Therefore, the logic used here shouldn't use numba.testing, but only the
    upstream unittest, and run the numba test suite only in a subprocess.N©Úsubp_kwargsc                óØ   — |pi }t           j        dddgt          |¦  «        z   }t          j        |fi |¤Ž}|                     d¦  «                             ¦   «         }d„ |D ¦   «         }|S )zX
        Use `subp_kwargs` to pass extra argument to `subprocess.check_output`.
        z-mznumba.runtestsz-lúUTF-8c                 ó:   — g | ]}|                      ¦   «         ¯|‘ŒS © )Ústrip©Ú.0Úlines     úJC:\Projects\Historical\venv\Lib\site-packages\numba/tests/test_runtests.pyú
<listcomp>z2TestCase.get_testsuite_listing.<locals>.<listcomp>%   s%   € Ð8Ð8Ð8˜$¨4¯:ª:©<¬<Ð8�Ð8Ð8Ð8ó    )ÚsysÚ
executableÚlistÚ
subprocessÚcheck_outputÚdecodeÚ
splitlines)ÚselfÚargsr   ÚcmdÚ	out_bytesÚliness         r   Úget_testsuite_listingzTestCase.get_testsuite_listing   sy   € ð "Ð' RˆÝŒ~˜tÐ%5°tÐ<½tÀD¹z¼zÑIˆÝÔ+¨CÐ?Ð?°;Ð?Ð?ˆ	Ø× Ò  Ñ)Ô)×4Ò4Ñ6Ô6ˆØ8Ð8 %Ð8Ñ8Ô8ˆØˆr   c                 óÌ   — |                       |g¦  «        }|d d…         D ]B}d                     ||¦  «        }|                      |                     |¦  «        |¬¦  «         ŒCd S )Néÿÿÿÿz{!r} not startswith {!r})Úmsg)r   ÚformatÚ
assertTrueÚ
startswith)r   ÚprefixÚlistingÚlnÚerrmsgs        r   Úcheck_listing_prefixzTestCase.check_listing_prefix(   sr   € Ø×,Ò,¨f¨XÑ6Ô6ˆØ˜#˜2˜#”,ð 	?ð 	?ˆBØ/×6Ò6°r¸6ÑBÔBˆFØ�OŠO˜BŸMšM¨&Ñ1Ô1°vˆOÑ>Ô>Ð>Ð>ð	?ð 	?r   c                 óX  — |                       |¦  «        }|d         }|                      d|v ¦  «         t          |                     d¦  «        d         ¦  «        }|                      t          |¦  «        t          |dz   |dz   ¦  «        ¦  «         |                      ||¦  «         |S )zR
        Check that the reported numbers of tests are at least *minsize*.
        r!   útests foundú r   é   é   )r   r$   ÚintÚsplitÚassertInÚlenÚrangeÚassertGreaterEqual)r   r   Úminsizer   Ú	last_lineÚnumbers         r   Úcheck_testsuite_sizezTestCase.check_testsuite_size.   sž   € ð ×*Ò*¨4Ñ0Ô0ˆØ˜"”Iˆ	Ø�Š˜¨Ð2Ñ3Ô3Ð3Ý�Y—_’_ SÑ)Ô)¨!Ô,Ñ-Ô-ˆð 	�Š•c˜%‘j”j¥%¨°©
°F¸R±KÑ"@Ô"@ÑAÔAÐAØ×Ò ¨Ñ0Ô0Ð0Øˆr   c                 óâ   — |                       |d¦  «        }|                      t          d„ |D ¦   «         ¦  «        ¦  «         |                      t          d„ |D ¦   «         ¦  «        ¦  «         d S )Niˆ  c              3   ó   K  — | ]}d |v V — Œ	dS )znumba.cuda.tests.Nr   r   s     r   ú	<genexpr>z%TestCase.check_all.<locals>.<genexpr>?   s(   è è € ÐJÐJ¸DÐ/°4Ð7ÐJÐJÐJÐJÐJÐJr   c              3   ó   K  — | ]}d |v V — Œ	dS )znumba.tests.npyufunc.test_Nr   r   s     r   r<   z%TestCase.check_all.<locals>.<genexpr>A   s;   è è € ð /ð /Ø $ð 9¸DÐ@ð /ð /ð /ð /ð /ð /r   )r9   r$   Úany)r   Úidsr   s      r   Ú	check_allzTestCase.check_all<   sˆ   € Ø×)Ò)¨#¨tÑ4Ô4ˆà�Š�ÐJÐJÀEÐJÑJÔJÑJÔJÑKÔKÐKà�Š�ð /ð /Ø(-ð/ñ /ô /ñ /ô /ñ 	1ô 	1ð 	1ð 	1ð 	1r   c                 ó$   — t          d„ |¦  «        S )z|returns a filter on strings starting with 'numba.', useful for
        selecting the 'numba' test names from a test listing.c                 ó,   — |                       d¦  «        S )Nznumba.)r%   )Úxs    r   ú<lambda>z8TestCase._get_numba_tests_from_listing.<locals>.<lambda>G   s   €  §¢¨XÑ 6Ô 6€ r   )Úfilter)r   r'   s     r   Ú_get_numba_tests_from_listingz&TestCase._get_numba_tests_from_listingD   s   € õ Ð6Ð6¸Ñ@Ô@Ð@r   c                 ó0   — |                       g ¦  «         d S )N©r@   ©r   s    r   Útest_defaultzTestCase.test_defaultI   s   € Ø�Š�rÑÔÐÐÐr   c                 ó2   — |                       dg¦  «         d S )Núnumba.testsrH   rI   s    r   Útest_allzTestCase.test_allL   s   € Ø�Š˜�Ñ'Ô'Ð'Ð'Ð'r   c                 ób   — t          j        ¦   «         rdnd}|                      dg|¦  «         d S )Néd   r.   znumba.cuda.tests)r   Úis_availabler9   )r   r6   s     r   Ú	test_cudazTestCase.test_cudaO   s;   € õ Ô*Ñ,Ô,Ð3�#�#°!ˆØ×!Ò!Ð#5Ð"6¸Ñ@Ô@Ð@Ð@Ð@r   zNO CUDAc                 ó®   — |                       d¦  «         |                       d¦  «         |                       d¦  «         |                       d¦  «         d S )Nznumba.cuda.tests.cudadrvznumba.cuda.tests.cudapyznumba.cuda.tests.nocudaznumba.cuda.tests.cudasim)r*   rI   s    r   Útest_cuda_submoduleszTestCase.test_cuda_submodulesU   s\   € à×!Ò!Ð"<Ñ=Ô=Ð=Ø×!Ò!Ð";Ñ<Ô<Ð<Ø×!Ò!Ð";Ñ<Ô<Ð<Ø×!Ò!Ð"<Ñ=Ô=Ð=Ð=Ð=r   c                 ó’   — |                       dgd¦  «         |                       dgd¦  «         |                       ddgd¦  «         d S )Nznumba.tests.test_storesliceé   znumba.tests.test_nested_callsé
   é   ©r9   rI   s    r   Útest_modulezTestCase.test_module\   sl   € Ø×!Ò!Ð#@Ð"AÀ1ÑEÔEÐEØ×!Ò!Ð#BÐ"CÀRÑHÔHÐHà×!Ò!Ð#BØ#@ð#BØCEñ	Gô 	Gð 	Gð 	Gð 	Gr   c                 ó4   — |                       dgd¦  «         d S )Núnumba.tests.npyufuncé2   rX   rI   s    r   Útest_subpackagezTestCase.test_subpackagec   s"   € Ø×!Ò!Ð#9Ð":¸BÑ?Ô?Ð?Ð?Ð?r   c                 ó6   — |                       g d¢d¦  «         d S )N)z--randomz0.1r[   é   rX   rI   s    r   Útest_randomzTestCase.test_randomf   s/   € Ø×!Ò!Ø7Ð7Ð7¸ñ	<ô 	<ð 	<ð 	<ð 	<r   c                 ó  ‡ — ˆ fd„}ddg} |dg¦  «        }|D ]p} |d|dg¦  «        } |d|dg¦  «        }‰                       |||z   ¦  «          |d|z  dg¦  «        } |d|z  dg¦  «        }‰                       |||z   ¦  «         Œqd S )	Nc                 óö   •— ‰                      | ¦  «        }‰                     d|d         ¦  «         t          |d                              ¦   «         d         ¦  «        }‰                     |dk    ¦  «         |S )Nr,   r!   r   )r   r2   r0   r1   r$   )Úarg_listr   Úcountr   s      €r   Ú	get_countz5TestCase.test_include_exclude_tags.<locals>.get_countk   si   ø€ Ø×.Ò.¨xÑ8Ô8ˆEØ�MŠM˜-¨¨r¬Ñ3Ô3Ð3Ý˜˜bœ	ŸšÑ)Ô)¨!Ô,Ñ-Ô-ˆEØ�OŠO˜E AšIÑ&Ô&Ð&ØˆLr   Úlong_runningzlong_running, importantrL   z--tagsz--exclude-tagsz	--tags=%sz--exclude-tags=%s)ÚassertEqual)r   re   ÚtagsÚtotalÚtagÚincludedÚexcludeds   `      r   Útest_include_exclude_tagsz"TestCase.test_include_exclude_tagsj   sî   ø€ ð	ð 	ð 	ð 	ð 	ð Ð 9Ð:ˆà�	˜=˜/Ñ*Ô*ˆàð 	9ð 	9ˆCØ �y (¨C°Ð!?Ñ@Ô@ˆHØ �yÐ"2°C¸Ð!GÑHÔHˆHØ×Ò˜U H¨xÑ$7Ñ8Ô8Ð8ð !�y +°Ñ"3°]Ð!CÑDÔDˆHØ �yÐ"5¸Ñ";¸]Ð!KÑLÔLˆHØ×Ò˜U H¨xÑ$7Ñ8Ô8Ð8Ð8ð	9ð 	9r   c                 ó¸  — |                       g ¦  «        }|                       ddg¦  «        }|                       ddg¦  «        }t          |                      |¦  «        ¦  «        }t          |                      |¦  «        ¦  «        }t          |                      |¦  «        ¦  «        }|                      t	          t          |¦  «        t          |¦  «        z
  ¦  «        t          |¦  «        dz  ¦  «         |                      t          |¦  «        t          |¦  «        ¦  «         |                      t          |¦  «        t          |¦  «        ¦  «         d S )Nú-jz0:2z1:2r/   )r   ÚsetrF   Ú
assertLessÚabsr3   )r   ÚtmpAllÚtmp1Útmp2ÚlAllÚl1Úl2s          r   Útest_check_shardzTestCase.test_check_shard€   s  € Ø×+Ò+¨BÑ/Ô/ˆØ×)Ò)¨4°¨-Ñ8Ô8ˆØ×)Ò)¨4°¨-Ñ8Ô8ˆå�4×5Ò5°fÑ=Ô=Ñ>Ô>ˆÝ�×3Ò3°DÑ9Ô9Ñ:Ô:ˆÝ�×3Ò3°DÑ9Ô9Ñ:Ô:ˆð 	�Š��C ™GœG¥c¨"¡g¤gÑ-Ñ.Ô.µ°D±	´	¸B±Ñ?Ô?Ð?Ø�Š�˜B™œ¥ T¡¤Ñ+Ô+Ð+Ø�Š�˜B™œ¥ T¡¤Ñ+Ô+Ð+Ð+Ð+r   c                 ó„  — t          ¦   «         }t          d¦  «        D ]X}|                      dd                     |¦  «        g¦  «        }g |                      |¦  «        ¢}|                     |¦  «         ŒY|                      ddg¦  «        }t          |                      |¦  «        ¦  «        }|                      t          |¦  «        d¦  «         d„ |D ¦   «         }t          t          |¦  «        ¦  «        D ]>}|  	                    t          ||         ¦  «        t          ||         ¦  «        ¦  «         Œ?|D ]H}|D ]C}	|  
                    |	|¦  «         |                     |	¦  «         |                      |	|¦  «         ŒDŒIt          j        |d¦  «        D ]\  }
}|                      |
|z  ¦  «         Œt          ¦   «         }|D ]}|                     |¦  «         Œ|                     |¦  «         t          |                      |                      g ¦  «        ¦  «        ¦  «        }|  	                    ||¦  «         d S )	Né   ro   z{}:3z--tagÚalways_testr.   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   )rp   )r   rC   s     r   r   z;TestCase.test_check_sharding_equivalent.<locals>.<listcomp>Ÿ   s   € Ð0Ð0Ð0 1�˜A™œÐ0Ð0Ð0r   rU   )r   r4   r   r#   rF   Úappendrp   r5   r3   rg   r2   ÚremoveÚassertNotInÚ	itertoolsÚcombinationsÚassertFalseÚupdate)r   ÚshardedÚiÚsubsetÚslistÚtmpÚalways_runningÚsharded_setsÚshardÚtestÚaÚbÚsum_of_partsrC   Úfull_listings                  r   Útest_check_sharding_equivalentz'TestCase.test_check_sharding_equivalent�   s_  € å‘&”&ˆÝ�q‘”ð 	"ð 	"ˆAØ×/Ò/°°v·}²}ÀQÑ7GÔ7GÐ0HÑIÔIˆFØA�d×8Ò8¸Ñ@Ô@ÐAˆEØ�NŠN˜5Ñ!Ô!Ð!Ð!ð ×(Ò(¨'°=Ð)AÑBÔBˆÝ˜T×?Ò?ÀÑDÔDÑEÔEˆð 	×Ò¥ NÑ 3Ô 3°QÑ7Ô7Ð7ð 1Ð0¨Ð0Ñ0Ô0ˆÝ•s˜7‘|”|Ñ$Ô$ð 	Dð 	DˆAØ×Ò�S ¨a¤Ñ1Ô1µ3°w¸q´z±?´?ÑCÔCÐCÐCð "ð 	.ð 	.ˆEØ&ð .ð .�Ø—’˜d EÑ*Ô*Ð*Ø—’˜TÑ"Ô"Ð"Ø× Ò   uÑ-Ô-Ð-Ð-ð.õ Ô*¨<¸Ñ;Ô;ð 	$ð 	$‰DˆAˆqØ×Ò˜Q ™UÑ#Ô#Ð#Ð#õ
 ‘u”uˆØð 	#ð 	#ˆAØ×Ò Ñ"Ô"Ð"Ð"Ø×Ò˜NÑ+Ô+Ð+å˜4×=Ò=Ø×&Ò& rÑ*Ô*ñ,ô ,ñ -ô -ˆð 	×Ò˜ |Ñ4Ô4Ð4Ð4Ð4r   zRequires gitpythonc                 ó.  — 	 t          j        dt           j        t           j        ¬¦  «         n%# t          $ r |                      d¦  «         Y nw xY w|                      dg¦  «        }|                      d|¦  «         |                      dg¦  «        }|                      d|¦  «         t          t           j        ¬¦  «        }|  	                    t           j
        ¦  «        5  |                      dg|¬	¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
NÚgit©ÚstdoutÚstderrzno git availablez-gzGit diff by common ancestorz-g=ancestor)r—   z	-g=ancestr   )r   ÚcallÚDEVNULLÚFileNotFoundErrorÚskipTestr   r€   r2   ÚdictÚassertRaisesÚCalledProcessError)r   Úoutsr   s      r   Útest_gitdiffzTestCase.test_gitdiff¼   s~  € ð	.ÝŒO˜EÝ#-Ô#5Ý#-Ô#5ð7ñ 7ô 7ð 7ð 7øõ !ð 	.ð 	.ð 	.Ø�MŠMÐ,Ñ-Ô-Ð-Ð-Ð-ð	.øøøð ×)Ò)¨4¨&Ñ1Ô1ˆØ×ÒÐ6¸Ñ=Ô=Ð=à×)Ò)¨=¨/Ñ:Ô:ˆØ�ŠÐ3°TÑ:Ô:Ð:å¥*Ô"4Ð5Ñ5Ô5ˆØ×Ò�zÔ<Ñ=Ô=ð 	Oð 	OØ×&Ò&¨ }À+Ð&ÑNÔNÐNð	Oð 	Oð 	Oñ 	Oô 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oøøøð 	Oð 	Oð 	Oð 	Oð 	Oð 	Os!   ‚+. ®AÁAÃ$D
Ä
DÄDzRequires pyyamlc                 ó   — ddl m} t          j                             t          j                             t          ¦  «        ¦  «        }t          j                             |ddd¦  «        }t          j                             |¦  «        s|  	                    d¦  «         t          t          j                             |¦  «        d¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          j        ||¬¦  «        }|d         }g }|d         }	|	d         d	         }
|
                     ¦   «         D ]}|                     |d
         ¦  «         Œg d¢}t          j        j        |g|¢R Ž }t          j                             |¦  «        s|  	                    d¦  «         t          t          j                             |¦  «        d¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          j        ||¬¦  «        }|d         d         d         d	         }
|
                     ¦   «         D ]}|                     |d
         ¦  «         Œ|                      t!          |¦  «        t!          t#          |¦  «        ¦  «        ¦  «         t%          |¦  «        dz   }g t'          |¦  «        ¢}|                      t)          |¦  «        |¦  «         |                      ||d         d         ¦  «         d S )Nr   )ÚLoaderú..zazure-pipelines.ymlz&'azure-pipelines.yml' is not availableÚrtÚjobsÚ
parametersÚmatrixÚTEST_START_INDEX)r£   r£   ÚbuildscriptsÚazurezazure-windows.ymlz$'azure-windows.yml' is not availableÚstrategyr.   Ú	variablesÚ
TEST_COUNT)Úyamlr¢   ÚosÚpathÚdirnameÚabspathÚ__file__ÚjoinÚisfiler›   ÚopenÚreadÚloadÚvaluesr~   rg   r3   rp   Úmaxr4   Úsorted)r   r¢   Ú	base_pathÚ
azure_pipeÚfÚdataÚpipe_ymlÚ	templatesÚstart_indexesÚtmpltr§   ÚsetupÚwinpathÚazure_windowsÚwindows_ymlÚlim_start_indexÚexpecteds                    r   Útest_azure_configzTestCase.test_azure_configÑ   s.  € àÐÐÐÐÐÝ”G—O’O¥B¤G§O¢OµHÑ$=Ô$=Ñ>Ô>ˆ	Ý”W—\’\ )¨T°4Ð9NÑOÔOˆ
ÝŒw�~Š~˜jÑ)Ô)ð 	DØ�MŠMÐBÑCÔCÐCÝ•"”'—/’/ *Ñ-Ô-¨tÑ4Ô4ð 	¸Ø—6’6‘8”8ˆDð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	å”9˜T¨&Ð1Ñ1Ô1ˆà˜VÔ$ˆ	àˆØ˜!”ˆØ�|Ô$ XÔ.ˆØ—]’]‘_”_ð 	<ð 	<ˆEØ× Ò  Ð'9Ô!:Ñ;Ô;Ð;Ð;ð MÐLÐLˆÝœœ YÐ9°Ð9Ð9Ð9ˆÝŒw�~Š~˜mÑ,Ô,ð 	BØ�MŠMÐ@ÑAÔAÐAÝ•"”'—/’/ -Ñ0Ô0°$Ñ7Ô7ð 	¸1Ø—6’6‘8”8ˆDð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	å”i ¨VÐ4Ñ4Ô4ˆð ˜VÔ$ QÔ'¨
Ô3°HÔ=ˆØ—]’]‘_”_ð 	<ð 	<ˆEØ× Ò  Ð'9Ô!:Ñ;Ô;Ð;Ð;ð 	×Ò�˜]Ñ+Ô+­Sµ°]Ñ1CÔ1CÑ-DÔ-DÑEÔEÐEå˜mÑ,Ô,¨qÑ0ˆØ,•U˜?Ñ+Ô+Ð,ˆØ×Ò� Ñ.Ô.°Ñ9Ô9Ð9à×Ò˜¨(°;Ô*?ÀÔ*MÑNÔNÐNÐNÐNs$   ÃC,Ã,C0Ã3C0ÇG<Ç<H ÈH c                 óþ  — d}|                       t          j        ¦  «        5 }t          j        d|                     d¦  «        g}t          j        |t          j        d¬¦  «         d d d ¦  «         n# 1 swxY w Y   |                      d|j	        j
                             d¦  «        ¦  «         t          j        d|                     d¦  «        g}t          j        |t          j        t          j        ¬	¦  «         d S )
NaJ  if 1:
        from unittest import mock
        from llvmlite import binding as llvm
        error = RuntimeError("Detected compilation during test listing")
        with mock.patch.object(llvm.ExecutionEngine, 'finalize_object',
                               side_effect=error):
            import numba
            {0}
        z-cznumba.njit(lambda:0)()é<   )r—   Útimeoutz(Detected compilation during test listingr	   znumba.test('-l')r•   )r�   r   rž   r   r   r#   r   ÚSTDOUTr2   Ú	exceptionr–   r   Ú
check_callr™   )r   ÚcodeÚraisesr   s       r   Útest_no_compilation_on_listz$TestCase.test_no_compilation_on_listý   s5  € ðˆð ×Ò�zÔ<Ñ=Ô=ð 	0ÀÝ”> 4¨¯ªÐ5MÑ)NÔ)NÐOˆCÝÔ# CÝ+5Ô+<Ø,.ð0ñ 0ô 0ð 0ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð
 	�ŠÐ@ØÔ&Ô-×4Ò4°WÑ=Ô=ñ	?ô 	?ð 	?õ
 Œ~˜t T§[¢[Ð1CÑ%DÔ%DÐEˆÝÔ˜cÝ%/Ô%7Ý%/Ô%7ð	:ñ 	:ô 	:ð 	:ð 	:ð 	:s   ¢AA2Á2A6Á9A6)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r*   r9   r@   rF   rJ   rM   rQ   ÚunittestÚskipIfr   rP   rS   rY   r]   r`   rm   ry   r’   Ú
skipUnlessÚhas_gitpythonr    Ú
has_pyyamlrÊ   rÓ   r   r   r   r   r      sµ  € € € € € ðMð Mð :>ð 	ð 	ð 	ð 	ð 	ð?ð ?ð ?ðð ð ð1ð 1ð 1ðAð Að Að
ð ð ð(ð (ð (ðAð Að Að €X„_Ð*˜Ô*Ñ,Ô,Ð,¨iÑ8Ô8ð>ð >ñ 9Ô8ð>ðGð Gð Gð@ð @ð @ð<ð <ð <ð9ð 9ð 9ð,,ð ,ð ,ð+5ð +5ð +5ðZ €XÔ˜Ð(<Ñ=Ô=ðOð Oñ >Ô=ðOð( €XÔ˜Ð%6Ñ7Ô7ð)Oð )Oñ 8Ô7ð)OðV:ð :ð :ð :ð :r   r   Ú__main__)r¯   r   r   Únumbar   rØ   r�   r”   rÛ   ÚImportErrorr®   rÜ   r   rÔ   Úmainr   r   r   ú<module>rá      s   ðØ 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð ðØ€J€J€Jð €M€Møð ð ð ð Ø€M€M€Mðøøøð
Ø€K€K€Kð €J€Jøð ð ð ð Ø€J€J€Jðøøøð@:ð @:ð @:ð @:ð @:ˆxÔ ñ @:ô @:ð @:ðF ˆzÒÐØ€H„M�O„O€O€O€Oð Ðs   œ# £-¬-±8 ¸AÁA