§
    ¥”j€o  ã                   ó¢  — d dl 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 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mZmZ d d
lmZmZmZ d dlmZmZ  ej        ¦   «         5   ej        d¦  «         d dlm Z  ddd¦  «         n# 1 swxY w Y   d„ Z!d„ Z"d„ Z# G d„ de¦  «        Z$ G d„ de¦  «        Z% G d„ de¦  «        Z&dS )é    )Úredirect_stderrÚredirect_stdout)Úmetadata)ÚStringIO)ÚJSONDecodeError)ÚPath)Údedent)ÚTestCaseN)ÚDraft4ValidatorÚDraft202012Validator)ÚSchemaErrorÚValidationErrorÚ_RefResolutionError)Ú_LATEST_VERSIONÚvalidateÚignore)Úclic                  ó^   ‡ — t          t          ‰ ¦  «        ¦  «        Š  G ˆ fd„d¦  «        }|S )Nc                   ó6   •— e Zd Zd„ Zˆ fd„Zed„ ¦   «         ZdS )ú%fake_validator.<locals>.FakeValidatorc                 ó   — d S ©N© )ÚselfÚargsÚkwargss      úh/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/jsonschema/tests/test_cli.pyÚ__init__z.fake_validator.<locals>.FakeValidator.__init__    s   € ØˆDó    c                 ó4   •— ‰r‰                      ¦   «         S g S r   )Úpop)r   ÚinstanceÚerrorss     €r   Úiter_errorsz1fake_validator.<locals>.FakeValidator.iter_errors#   s   ø€ Øð $Ø—z’z‘|”|Ð#ØˆIr   c                 ó   — d S r   r   ©r   Úschemas     r   Úcheck_schemaz2fake_validator.<locals>.FakeValidator.check_schema(   s   € àˆDr   N)Ú__name__Ú
__module__Ú__qualname__r   r$   Úclassmethodr(   )r#   s   €r   ÚFakeValidatorr      sX   ø€ € € € € ð	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð
 
ð	ð 	ñ 
Œð	ð 	ð 	r   r-   )ÚlistÚreversed)r#   r-   s   ` r   Úfake_validatorr0      sR   ø€ Ý•(˜6Ñ"Ô"Ñ#Ô#€Fðð ð ð ð ð ð ñ ô ð ð Ðr   c                 ó   ‡ — ˆ fd„}|S )Nc                 ón   •— ‰                      | ¦  «        }|€t          | ¦  «        ‚t          |¦  «        S r   )ÚgetÚFileNotFoundErrorr   )ÚpathÚcontentsÚall_contentss     €r   Úopenzfake_open.<locals>.open0   s8   ø€ Ø×#Ò# DÑ)Ô)ˆØÐÝ# DÑ)Ô)Ð)Ý˜Ñ!Ô!Ð!r   r   )r7   r8   s   ` r   Ú	fake_openr9   /   s#   ø€ ð"ð "ð "ð "ð "ð
 €Kr   c                 ó–   — 	 t          j        | ¦  «         t          d¦  «        ‚# t          $ r}t	          |¦  «        cY d }~S d }~ww xY w)Nz.Tried and failed to capture a JSON dump error.)ÚjsonÚloadsÚRuntimeErrorr   Ústr)Únon_jsonÚerrors     r   Ú_message_forrA   8   se   € ðMÝŒ
�8ÑÔÐõ ÐKÑLÔLÐLøõ ð ð ð Ý�5‰zŒzÐÐÐÐÐÐøøøøðøøøs   ‚% ¥
A¯A½AÁAc                   ó6  — e Zd Zd e¦   «         dfd„Zd1d„Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd „ Z d!„ Z!d"„ Z"d#„ Z#d$„ Z$d%„ Z%d&„ Z&d'„ Z'd(„ Z(d)„ Z)d*„ Z*d+„ Z+d,„ Z,d-„ Z-d.„ Z.d/„ Z/d0„ Z0dS )2ÚTestCLINr   c                 óh  — t          j        |¦  «        }|                     |¦  «         |                      t	          t           d¦  «        ¦  «         t          |pi ¦  «        t           _        	 t          ¦   «         t          ¦   «         }}t          j        ||||¬¦  «        }	t           `n# t           `w xY w|  	                    |	|t          d|› d|	› d|                     ¦   «         › d|                     ¦   «         › d�	¦  «        ¬¦  «         |                     ¦   «         |                     ¦   «         fS )	Nr8   )ÚstdinÚstdoutÚstderrz.
                    Expected an exit code of z != z.

                    stdout: z

                    stderr: z
                )Úmsg)r   Ú
parse_argsÚupdateÚassertFalseÚhasattrr9   r8   r   ÚrunÚassertEqualr	   Úgetvalue)
r   ÚargvÚfilesrE   Ú	exit_codeÚoverrideÚ	argumentsrF   rG   Úactual_exit_codes
             r   Úrun_clizTestCLI.run_cliB   sL  € õ ”N 4Ñ(Ô(ˆ	Ø×Ò˜Ñ"Ô"Ð"à×Ò�¥ fÑ-Ô-Ñ.Ô.Ð.Ý˜U˜[ bÑ)Ô)�Œð		Ý%™ZœZ­©¬�FˆFÝ"œwØØØØð	 ñ  ô  Ðõ ��ø•�ˆLˆLˆLˆLà×ÒØ˜i­VðØ.7ðð Ø=Mðð ð $Ÿ_š_Ñ.Ô.ðð ð
 $Ÿ_š_Ñ.Ô.ðð ð ñ.ô .ð 	ñ 
	
ô 
	
ð 
	
ð �ŠÑ Ô  &§/¢/Ñ"3Ô"3Ð3Ð3s   Á.4B* Â*	B3Ú c                 ó€   — |                        | j        di |¤Žt          |¦  «        t          |¦  «        f¦  «         d S )Nr   )rN   rV   r	   )r   rF   rG   r   s       r   ÚassertOutputszTestCLI.assertOutputsb   sM   € Ø×ÒØˆDŒLÐ"Ð"˜6Ð"Ð"Ý�F‰^Œ^�V F™^œ^Ð,ñ	
ô 	
ð 	
ð 	
ð 	
r   c                 óÈ   — t          dd¬¦  «        }|                      t          dt          j        |j        ¦  «        ¬¦  «        t          |g¦  «        g d¢dd¬	¦  «         d S )
NúI am an error!é   ©r"   ú*{"does not": "matter since it is stubbed"}©Úsome_schemaÚsome_instance©ú-ira   r`   é   ú12: I am an error!
©rQ   Ú	validatorrP   rR   rG   ©r   rY   Údictr;   Údumpsr"   r0   ©r   r@   s     r   Útest_invalid_instancezTestCLI.test_invalid_instanceh   s~   € ÝÐ 0¸2Ð>Ñ>Ô>ˆØ×ÒÝØHÝ"œj¨¬Ñ8Ô8ðñ ô õ % e WÑ-Ô-à7Ð7Ð7àØ)ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 óÈ   — t          dd¬¦  «        }|                      t          dt          j        |j        ¦  «        ¬¦  «        t          |g¦  «        g d¢dd¬	¦  «         d S )
Nr[   r\   r]   r^   r_   ©rc   ra   ú--outputÚprettyr`   rd   z”                ===[ValidationError]===(some_instance)===

                I am an error!
                -----------------------------
            rf   rh   rk   s     r   Ú#test_invalid_instance_pretty_outputz+TestCLI.test_invalid_instance_pretty_outputw   s€   € ÝÐ 0¸2Ð>Ñ>Ô>ˆØ×ÒÝØHÝ"œj¨¬Ñ8Ô8ðñ ô õ % e WÑ-Ô-àMÐMÐMàðð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 óÈ   — t          dd¬¦  «        }|                      t          dt          j        |j        ¦  «        ¬¦  «        t          |g¦  «        g d¢dd¬	¦  «         d S )
Nr[   r\   r]   r^   r_   )ro   Úplainrc   ra   r`   rd   re   rf   rh   rk   s     r   Ú+test_invalid_instance_explicit_plain_outputz3TestCLI.test_invalid_instance_explicit_plain_output‹   s~   € ÝÐ 0¸2Ð>Ñ>Ô>ˆØ×ÒÝØHÝ"œj¨¬Ñ8Ô8ðñ ô õ % e WÑ-Ô-àLÐLÐLàØ)ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 óæ   — d}t          d|¬¦  «        }t          d|¬¦  «        }|                      t          dt          j        |¦  «        ¬¦  «        t          ||g¦  «        g d¢dd	¬
¦  «         d S )Nr\   úFirst errorr]   úSecond errorr^   r_   rb   rd   zM                12: First error
                12: Second error
            rf   ©r   rY   ri   r;   rj   r0   ©r   r"   ÚfirstÚseconds       r   Ú%test_invalid_instance_multiple_errorsz-TestCLI.test_invalid_instance_multiple_errorsš   s–   € ØˆÝ ¸ÐAÑAÔAˆÝ  ¸(ÐCÑCÔCˆà×ÒÝØHÝ"œj¨Ñ2Ô2ðñ ô õ % e¨V _Ñ5Ô5à7Ð7Ð7àðð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 óæ   — d}t          d|¬¦  «        }t          d|¬¦  «        }|                      t          dt          j        |¦  «        ¬¦  «        t          ||g¦  «        g d¢dd	¬
¦  «         d S )Nr\   rv   r]   rw   r^   r_   rn   rd   a                  ===[ValidationError]===(some_instance)===

                First error
                -----------------------------
                ===[ValidationError]===(some_instance)===

                Second error
                -----------------------------
            rf   rx   ry   s       r   Ú3test_invalid_instance_multiple_errors_pretty_outputz;TestCLI.test_invalid_instance_multiple_errors_pretty_output¯   s–   € ØˆÝ ¸ÐAÑAÔAˆÝ  ¸(ÐCÑCÔCˆà×ÒÝØHÝ"œj¨Ñ2Ô2ðñ ô õ % e¨V _Ñ5Ô5àMÐMÐMàð	ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c           	      ó2  — d}t          d|¬¦  «        t          d|¬¦  «        g}d}t          d|¬¦  «        g}|                      t          dt          j        |¦  «        t          j        |¦  «        ¬¦  «        t          ||¦  «        g d	¢d
d¬¦  «         d S )Nr\   úAn errorr]   úAnother errorÚfooÚBOOMr^   ©r`   Úsome_first_instanceÚsome_second_instance)rc   r…   rc   r†   r`   rd   ze                12: An error
                12: Another error
                foo: BOOM
            rf   rx   ©r   Úfirst_instanceÚfirst_errorsÚsecond_instanceÚsecond_errorss        r   Útest_multiple_invalid_instancesz'TestCLI.test_multiple_invalid_instancesÊ   sÈ   € Øˆå˜J°Ð@Ñ@Ô@Ý˜O°nÐEÑEÔEð
ˆð  ˆÝ(¨¸/ÐJÑJÔJÐKˆà×ÒÝØHÝ$(¤J¨~Ñ$>Ô$>Ý%)¤Z°Ñ%@Ô%@ðñ ô õ
 % \°=ÑAÔAðð ð ð ðð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c           	      ó2  — d}t          d|¬¦  «        t          d|¬¦  «        g}d}t          d|¬¦  «        g}|                      t          dt          j        |¦  «        t          j        |¦  «        ¬¦  «        t          ||¦  «        g d	¢d
d¬¦  «         d S )Nr\   r€   r]   r�   r‚   rƒ   r^   r„   )ro   rp   rc   r…   rc   r†   r`   rd   a¦                  ===[ValidationError]===(some_first_instance)===

                An error
                -----------------------------
                ===[ValidationError]===(some_first_instance)===

                Another error
                -----------------------------
                ===[ValidationError]===(some_second_instance)===

                BOOM
                -----------------------------
            rf   rx   r‡   s        r   Ú-test_multiple_invalid_instances_pretty_outputz5TestCLI.test_multiple_invalid_instances_pretty_outputé   sÈ   € Øˆå˜J°Ð@Ñ@Ô@Ý˜O°nÐEÑEÔEð
ˆð  ˆÝ(¨¸/ÐJÑJÔJÐKˆà×ÒÝØHÝ$(¤J¨~Ñ$>Ô$>Ý%)¤Z°Ñ%@Ô%@ðñ ô õ
 % \°=ÑAÔAðð ð ð ðð! 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c           	      ó2  — d}t          d|¬¦  «        t          d|¬¦  «        g}d}t          d|¬¦  «        g}|                      t          dt          j        |¦  «        t          j        |¦  «        ¬¦  «        t          ||¦  «        g d	¢d
d¬¦  «         d S )Nr\   r€   r]   r�   r‚   rƒ   r^   r„   )ú--error-formatú&:{error.message}._-_.{error.instance}:rc   r…   rc   r†   r`   rd   z5:An error._-_.12::Another error._-_.12::BOOM._-_.foo:rf   rx   r‡   s        r   Útest_custom_error_formatz TestCLI.test_custom_error_format  sÆ   € Øˆå˜J°Ð@Ñ@Ô@Ý˜O°nÐEÑEÔEð
ˆð  ˆÝ(¨¸/ÐJÑJÔJÐKˆà×ÒÝØHÝ$(¤J¨~Ñ$>Ô$>Ý%)¤Z°Ñ%@Ô%@ðñ ô õ
 % \°=ÑAÔAðð ð ð ØJð! 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 óV   — |                       t          d¬¦  «        dgdd¬¦  «         d S )Nz{"type": 12}©r`   r`   rd   úO                12: 12 is not valid under any of the given schemas
            ©rQ   rP   rR   rG   ©rY   ri   ©r   s    r   Útest_invalid_schemazTestCLI.test_invalid_schema.  sD   € Ø×ÒÝ >Ð2Ñ2Ô2Ø�àðð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c           	      óX  — ddi}|                       t          ¦  «        5 }t          |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          |j        ¦  «        }|                      t          t          j        |¦  «        ¬¦  «        g d¢ddt          |¦  «        z   d	z   ¬
¦  «         d S )NÚtyper\   rW   ©r'   r"   r”   ©ro   rp   r`   rd   ú%===[SchemaError]===(some_schema)===

ú
-----------------------------
r–   ©	ÚassertRaisesr   r   r>   Ú	exceptionrY   ri   r;   rj   ©r   r'   Úer@   s       r   Ú!test_invalid_schema_pretty_outputz)TestCLI.test_invalid_schema_pretty_output9  s÷   € Ø˜"�ˆà×Ò�{Ñ+Ô+ð 	1¨qÝ˜F¨RÐ0Ñ0Ô0Ð0ð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1å�A”KÑ Ô ˆà×ÒÝ¥4¤:¨fÑ#5Ô#5Ð6Ñ6Ô6Ø6Ð6Ð6àà9Ý�e‘*”*ñà5ñ6ð 	ñ 
	
ô 
	
ð 
	
ð 
	
ð 
	
s   Ÿ=½AÁAc                 óV   — |                       t          d¬¦  «        dgdd¬¦  «         d S )Nz{"type": 12, "items": 57}r”   r`   rd   zF                57: 57 is not of type 'object', 'boolean'
            r–   r—   r˜   s    r   Ú#test_invalid_schema_multiple_errorsz+TestCLI.test_invalid_schema_multiple_errorsL  sE   € Ø×ÒÝÐ#>Ð?Ñ?Ô?Ø�àðð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c           	      óZ  — dddœ}|                       t          ¦  «        5 }t          |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          |j        ¦  «        }|                      t          t          j        |¦  «        ¬¦  «        g d¢dd	t          |¦  «        z   d
z   ¬¦  «         d S )Nr\   é9   )r›   ÚitemsrW   rœ   r”   r�   rd   rž   rŸ   r–   r    r£   s       r   Ú1test_invalid_schema_multiple_errors_pretty_outputz9TestCLI.test_invalid_schema_multiple_errors_pretty_outputW  sû   € Ø rÐ*Ð*ˆà×Ò�{Ñ+Ô+ð 	1¨qÝ˜F¨RÐ0Ñ0Ô0Ð0ð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1å�A”KÑ Ô ˆà×ÒÝ¥4¤:¨fÑ#5Ô#5Ð6Ñ6Ô6Ø6Ð6Ð6àà9Ý�e‘*”*ñà5ñ6ð 	ñ 
	
ô 
	
ð 
	
ð 
	
ð 
	
s    >¾AÁAc                 óZ   — |                       t          dd¬¦  «        g d¢dd¬¦  «         dS )	zv
        "Validating" an instance that's invalid under an invalid schema
        just shows the schema error.
        z{"type": 12, "minimum": 30}Ú13r_   rb   rd   r•   r–   Nr—   r˜   s    r   Ú)test_invalid_schema_with_invalid_instancez1TestCLI.test_invalid_schema_with_invalid_instancej  sV   € ð
 	×ÒÝØ9Ø"ðñ ô ð 8Ð7Ð7àðð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c           	      ó„  — ddddœ}}|                       t          ¦  «        5 }t          ||¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          |j        ¦  «        }|                      t          t          j        |¦  «        t          j        |¦  «        ¬¦  «        g d¢dd	t          |¦  «        z   d
z   ¬¦  «         d S )Né   r\   é   ©r›   Úminimumrœ   r_   ©ro   rp   rc   ra   r`   rd   rž   rŸ   r–   r    )r   r"   r'   r¤   r@   s        r   Ú7test_invalid_schema_with_invalid_instance_pretty_outputz?TestCLI.test_invalid_schema_with_invalid_instance_pretty_output|  s  € Ø¨°rÐ:Ð:�&ˆà×Ò�{Ñ+Ô+ð 	7¨qÝ˜F¨XÐ6Ñ6Ô6Ð6ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7å�A”KÑ Ô ˆà×ÒÝÝ œJ vÑ.Ô.Ý"œj¨Ñ2Ô2ðñ ô ð NÐMÐMàà9Ý�e‘*”*ñà5ñ6ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
ó   ¢A Á AÁAc           
      óœ   — |                       t          ddd¬¦  «        g d¢dd                     t          d¦  «        ¦  «        ¬¦  «         d S )	Nz{"minimum": 30}únot valid JSON!Ú12)r`   rˆ   rŠ   )rc   rˆ   rc   rŠ   r`   rd   zw                Failed to parse 'first_instance': {}
                12: 12 is less than the minimum of 30
            r–   )rY   ri   ÚformatrA   r˜   s    r   Ú-test_invalid_instance_continues_with_the_restz5TestCLI.test_invalid_instance_continues_with_the_rest’  su   € Ø×ÒÝØ-Ø0Ø $ðñ ô ð
ð ð ð ð÷ ’•|Ð$5Ñ6Ô6Ñ7Ô7ð! 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ó  — ddddœ}}|                       t          ¦  «        5  t          ||¬¦  «         d d d ¦  «         n# 1 swxY w Y   |                      t	          t          j        |¦  «        ¬¦  «        g d¢dd	¬
¦  «         d S )Nr°   r\   r±   r²   rœ   r”   )r�   r‘   r`   rd   z7:12 is not valid under any of the given schemas._-_.12:r–   )r¡   r   r   rY   ri   r;   rj   )r   r"   r'   s      r   Ú1test_custom_error_format_applies_to_schema_errorsz9TestCLI.test_custom_error_format_applies_to_schema_errors¦  sç   € Ø¨°rÐ:Ð:�&ˆà×Ò�{Ñ+Ô+ð 	7ð 	7Ý˜F¨XÐ6Ñ6Ô6Ð6ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð 	×ÒÝ¥4¤:¨fÑ#5Ô#5Ð6Ñ6Ô6ðð ð ð
 ØLð 	ñ 
	
ô 
	
ð 
	
ð 
	
ð 
	
r¶   c           	      ó€   — d}|                       t          d|¬¦  «        g d¢ddt          |¦  «        › d�¬¦  «         d S )	Nr¸   ú{}r_   rb   rd   z1                Failed to parse 'some_instance': ú
            r–   ©rY   ri   rA   ©r   r"   s     r   Útest_instance_is_invalid_JSONz%TestCLI.test_instance_is_invalid_JSON¸  si   € Ø$ˆà×ÒÝ 4°xÐ@Ñ@Ô@Ø7Ð7Ð7àðÝ2>¸xÑ2HÔ2Hðð ð ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 óà   — |                       t          dd¬¦  «        g d¢d¬¦  «        \  }}|                      |¦  «         |                      d|¦  «         |                      d|¦  «         d S )	Nr¿   r¸   r_   r´   rd   ©rQ   rP   rR   z7(some_instance)===

Traceback (most recent call last):
r`   ©rV   ri   rK   ÚassertInÚassertNotIn©r   rF   rG   s      r   Ú+test_instance_is_invalid_JSON_pretty_outputz3TestCLI.test_instance_is_invalid_JSON_pretty_outputÅ  s•   € ØŸšÝØ Ø/ðñ ô ð
 NÐMÐMàð &ñ 	
ô 	
‰ˆ�ð 	×Ò˜Ñ Ô Ð Ø�ŠØHØñ	
ô 	
ð 	
ð 	×Ò˜¨Ñ/Ô/Ð/Ð/Ð/r   c           
      ó˜   — d}|                       t          d¬¦  «        t          |¦  «        dgddt          |¦  «        › d�¬¦  «         d S )	Nr¸   r¿   r”   r`   rd   z)                Failed to parse <stdin>: rÀ   )rQ   rE   rP   rR   rG   )rY   ri   r   rA   rÂ   s     r   Ú&test_instance_is_invalid_JSON_on_stdinz.TestCLI.test_instance_is_invalid_JSON_on_stdin×  sn   € Ø$ˆà×ÒÝ 4Ð(Ñ(Ô(Ý˜8Ñ$Ô$à�àðÝ*6°xÑ*@Ô*@ðð ð ð 	ñ 
	
ô 
	
ð 
	
ð 
	
ð 
	
r   c                 óú   — |                       t          d¬¦  «        t          d¦  «        g d¢d¬¦  «        \  }}|                      |¦  «         |                      d|¦  «         |                      d|¦  «         d S )	Nr¿   r”   r¸   r�   rd   )rQ   rE   rP   rR   z1(<stdin>)===

Traceback (most recent call last):
r`   )rV   ri   r   rK   rÇ   rÈ   rÉ   s      r   Ú4test_instance_is_invalid_JSON_on_stdin_pretty_outputz<TestCLI.test_instance_is_invalid_JSON_on_stdin_pretty_outputæ  s”   € ØŸšÝ 4Ð(Ñ(Ô(ÝÐ,Ñ-Ô-à6Ð6Ð6àð &ñ 
ô 
‰ˆ�ð 	×Ò˜Ñ Ô Ð Ø�ŠØBØñ	
ô 	
ð 	
ð 	×Ò˜¨Ñ/Ô/Ð/Ð/Ð/r   c           	      ó|   — d}|                       t          |¬¦  «        dgddt          |¦  «        › d�¬¦  «         d S )Nr¸   r”   r`   rd   ú/                Failed to parse 'some_schema': rÀ   r–   rÁ   r&   s     r   Útest_schema_is_invalid_JSONz#TestCLI.test_schema_is_invalid_JSONö  sc   € Ø"ˆà×ÒÝ 6Ð*Ñ*Ô*à�àðÝ0<¸VÑ0DÔ0Dðð ð ð 	ñ 		
ô 		
ð 		
ð 		
ð 		
r   c                 ó²   — |                       t          d¬¦  «        g d¢d¬¦  «        \  }}|                      |¦  «         |                      d|¦  «         d S )Nr¸   r”   r�   rd   rÅ   ú5(some_schema)===

Traceback (most recent call last):
)rV   ri   rK   rÇ   rÉ   s      r   Ú)test_schema_is_invalid_JSON_pretty_outputz1TestCLI.test_schema_is_invalid_JSON_pretty_output  su   € ØŸšÝÐ#4Ð5Ñ5Ô5à6Ð6Ð6àð &ñ 
ô 
‰ˆ�ð 	×Ò˜Ñ Ô Ð Ø�ŠØFØñ	
ô 	
ð 	
ð 	
ð 	
r   c           	      ó„   — d\  }}|                       t          ||¬¦  «        dgddt          |¦  «        › d�¬¦  «         dS )	úM
        Only the schema error is reported, as we abort immediately.
        )r¸   úalso not valid JSON!r_   r`   rd   rÐ   rÀ   r–   NrÁ   ©r   r'   r"   s      r   Ú.test_schema_and_instance_are_both_invalid_JSONz6TestCLI.test_schema_and_instance_are_both_invalid_JSON  sm   € ð EÑˆ�Ø×ÒÝ 6¸ÐBÑBÔBà�àðÝ0<¸VÑ0DÔ0Dðð ð ð 	ñ 		
ô 		
ð 		
ð 		
ð 		
r   c                 óà   — |                       t          dd¬¦  «        g d¢d¬¦  «        \  }}|                      |¦  «         |                      d|¦  «         |                      d|¦  «         d	S )
rÖ   r¸   r×   r_   r´   rd   rÅ   rÓ   ra   NrÆ   rÉ   s      r   Ú<test_schema_and_instance_are_both_invalid_JSON_pretty_outputzDTestCLI.test_schema_and_instance_are_both_invalid_JSON_pretty_output"  s—   € ð ŸšÝØ-Ø4ðñ ô ð
 NÐMÐMàð &ñ 	
ô 	
‰ˆ�ð 	×Ò˜Ñ Ô Ð Ø�ŠØFØñ	
ô 	
ð 	
ð 	×Ò˜¨&Ñ1Ô1Ð1Ð1Ð1r   c                 óX   — |                       t          d¬¦  «        g d¢dd¬¦  «         d S )Nr¿   r”   )rc   Únonexisting_instancer`   rd   zC                'nonexisting_instance' does not exist.
            r–   r—   r˜   s    r   Útest_instance_does_not_existz$TestCLI.test_instance_does_not_exist7  sH   € Ø×ÒÝ 4Ð(Ñ(Ô(Ø>Ð>Ð>àðð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 óX   — |                       t          d¬¦  «        g d¢dd¬¦  «         d S )Nr¿   r”   )ro   rp   rc   rÝ   r`   rd   zµ                ===[FileNotFoundError]===(nonexisting_instance)===

                'nonexisting_instance' does not exist.
                -----------------------------
            r–   r—   r˜   s    r   Ú*test_instance_does_not_exist_pretty_outputz2TestCLI.test_instance_does_not_exist_pretty_outputB  sP   € Ø×ÒÝ 4Ð(Ñ(Ô(ðð ð ð ðð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ó8   — |                       dgdd¬¦  «         d S )NÚnonexisting_schemard   ú%'nonexisting_schema' does not exist.
©rP   rR   rG   ©rY   r˜   s    r   Útest_schema_does_not_existz"TestCLI.test_schema_does_not_existT  s5   € Ø×ÒØ&Ð'àØ;ð	 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ó:   — |                       g d¢dd¬¦  «         d S )N)ro   rp   râ   rd   ú±                ===[FileNotFoundError]===(nonexisting_schema)===

                'nonexisting_schema' does not exist.
                -----------------------------
            rä   rå   r˜   s    r   Ú(test_schema_does_not_exist_pretty_outputz0TestCLI.test_schema_does_not_exist_pretty_output\  s:   € Ø×ÒØ=Ð=Ð=àðð	 	ñ 
	
ô 
	
ð 
	
ð 
	
ð 
	
r   c                 ó:   — |                       g d¢dd¬¦  «         d S )N)rc   rÝ   râ   rd   rã   rä   rå   r˜   s    r   Ú&test_neither_instance_nor_schema_existz.TestCLI.test_neither_instance_nor_schema_existi  s8   € Ø×ÒØEÐEÐEàØ;ð	 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ó:   — |                       g d¢dd¬¦  «         d S )N)ro   rp   rc   rÝ   râ   rd   rè   rä   rå   r˜   s    r   Ú4test_neither_instance_nor_schema_exist_pretty_outputz<TestCLI.test_neither_instance_nor_schema_exist_pretty_outputq  sB   € Ø×Òðð ð ð ðð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 óZ   — |                       t          dd¬¦  «        g d¢dd¬¦  «         d S ©Nr¿   r_   rb   rW   ©rQ   rP   rF   rG   r—   r˜   s    r   Útest_successful_validationz"TestCLI.test_successful_validation‚  óH   € Ø×ÒÝ 4°tÐ<Ñ<Ô<Ø7Ð7Ð7ØØð	 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 óZ   — |                       t          dd¬¦  «        g d¢dd¬¦  «         d S ©Nr¿   r_   r´   z"===[SUCCESS]===(some_instance)===
rW   rð   r—   r˜   s    r   Ú(test_successful_validation_pretty_outputz0TestCLI.test_successful_validation_pretty_outputŠ  óH   € Ø×ÒÝ 4°tÐ<Ñ<Ô<ØMÐMÐMØ8Øð	 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ór   — |                       t          d¬¦  «        t          d¦  «        dgdd¬¦  «         d S )Nr¿   r”   r`   rW   ©rQ   rE   rP   rF   rG   ©rY   ri   r   r˜   s    r   Ú#test_successful_validation_of_stdinz+TestCLI.test_successful_validation_of_stdin’  sK   € Ø×ÒÝ 4Ð(Ñ(Ô(Ý˜4‘.”.Ø�ØØð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ót   — |                       t          d¬¦  «        t          d¦  «        g d¢dd¬¦  «         d S )Nr¿   r”   r�   z===[SUCCESS]===(<stdin>)===
rW   rø   rù   r˜   s    r   Ú1test_successful_validation_of_stdin_pretty_outputz9TestCLI.test_successful_validation_of_stdin_pretty_output›  sO   € Ø×ÒÝ 4Ð(Ñ(Ô(Ý˜4‘.”.Ø6Ð6Ð6Ø2Øð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 óZ   — |                       t          dd¬¦  «        g d¢dd¬¦  «         d S rï   r—   r˜   s    r   Ú-test_successful_validation_of_just_the_schemaz5TestCLI.test_successful_validation_of_just_the_schema¤  rò   r   c                 óZ   — |                       t          dd¬¦  «        g d¢dd¬¦  «         d S rô   r—   r˜   s    r   Ú;test_successful_validation_of_just_the_schema_pretty_outputzCTestCLI.test_successful_validation_of_just_the_schema_pretty_output¬  rö   r   c                 ó˜  — t          j        d¬¦  «        }|                     ¦   «          |                      t          j        |j        ¦  «         t          |j        ¦  «        }|                     d¦  «         d|j        › d�}|  	                    t          |d¬¦  «        dd	d
|j                             ¦   «         dz   dgdd¬¦  «         d S )NF©Údeleteú-{"definitions": {"num": {"type": "integer"}}}ú
{"$ref": "ú#/definitions/num"}Ú1r_   rc   ra   ú
--base-uriú/r`   rW   rð   ©ÚtempfileÚNamedTemporaryFileÚcloseÚ
addCleanupÚosÚremoveÚnamer   Ú
write_textrY   ri   ÚparentÚas_uri©r   Úref_schema_fileÚref_pathr'   s       r   Ú0test_successful_validation_via_explicit_base_uriz8TestCLI.test_successful_validation_via_explicit_base_uri´  sÛ   € Ý"Ô5¸UÐCÑCÔCˆØ×ÒÑÔÐØ�Š�œ	 ?Ô#7Ñ8Ô8Ð8å˜Ô,Ñ-Ô-ˆØ×ÒÐKÑLÔLÐLàB˜xœ}ÐBÐBÐBˆà×ÒÝ 6¸Ð=Ñ=Ô=à�oØ˜hœo×4Ò4Ñ6Ô6¸Ñ<Øðð
 Øð 	ñ 		
ô 		
ð 		
ð 		
ð 		
r   c                 óš  — t          j        d¬¦  «        }|                     ¦   «          |                      t          j        |j        ¦  «         t          |j        ¦  «        }|                     d¦  «         d|j        › d�}|  	                    t          |d¬¦  «        dd	d
|j                             ¦   «         dz   dgddd¬¦  «         d S )NFr  r  r  r  z"1"r_   rc   ra   r  r	  r`   rd   rW   z 1: '1' is not of type 'integer'
©rQ   rP   rR   rF   rG   r
  r  s       r   Ú2test_unsuccessful_validation_via_explicit_base_uriz:TestCLI.test_unsuccessful_validation_via_explicit_base_uriÉ  sÞ   € Ý"Ô5¸UÐCÑCÔCˆØ×ÒÑÔÐØ�Š�œ	 ?Ô#7Ñ8Ô8Ð8å˜Ô,Ñ-Ô-ˆØ×ÒÐKÑLÔLÐLàB˜xœ}ÐBÐBÐBˆà×ÒÝ 6¸Ð?Ñ?Ô?à�oØ˜hœo×4Ò4Ñ6Ô6¸Ñ<Øðð
 ØØ6ð 	ñ 
	
ô 
	
ð 
	
ð 
	
ð 
	
r   c           	      ó|  — d}d}|                       t          ¦  «        5 }|                      t          ||¬¦  «        dddt	          j        ¦   «                              ¦   «         dg¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          |j        ¦  «        }|  	                    t          j        › d	�|¦  «         d S )
Nz4{"$ref": "someNonexistentFile.json#definitions/num"}r  r_   rc   ra   r  r`   ©rQ   rP   zsomeNonexistentFile.json')r¡   r   rY   ri   r   Úcwdr  r>   r¢   rÇ   r  Úsep©r   r'   r"   r¤   r@   s        r   Ú,test_nonexistent_file_with_explicit_base_uriz4TestCLI.test_nonexistent_file_with_explicit_base_uriß  s  € ØGˆØˆà×ÒÕ2Ñ3Ô3ð 	°qØ×ÒÝØ &Ø"*ðñ ô ð
 ˜/Ø ¥$¤(¡*¤*×"3Ò"3Ñ"5Ô"5Ø!ðð ñ 
ô 
ð 
ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ �A”KÑ Ô ˆØ�Š�œÐ:Ð:Ð:¸EÑBÔBÐBÐBÐBs   ŸAA:Á:A>ÂA>c                 ó  — d}d}|                       t          ¦  «        5 }|                      t          ||¬¦  «        g d¢¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          |j        ¦  «        }|                      |d¦  «         d S )Nz${"$ref": "foo.json#definitions/num"}r  r_   )rc   ra   r  znot@UR1r`   r  zunknown url type: 'foo.json')r¡   r   rY   ri   r>   r¢   rN   r   s        r   Útest_invalid_explicit_base_uriz&TestCLI.test_invalid_explicit_base_uriò  sð   € Ø7ˆØˆà×ÒÕ2Ñ3Ô3ð 	°qØ×ÒÝØ &Ø"*ðñ ô ðð ð ð ñ 
ô 
ð 
ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ �A”KÑ Ô ˆØ×ÒØÐ1ñ	
ô 	
ð 	
ð 	
ð 	
s   Ÿ)AÁAÁAc                 óœ   — |                       t          t          ¦  «         |                      t	          dd¬¦  «        g d¢ddd¬¦  «         d S )	Nz{"const": "check"}z"a"r_   rb   rd   rW   za: 'check' was expected
r  )ÚassertIsr   r   rY   ri   r˜   s    r   Ú=test_it_validates_using_the_latest_validator_when_unspecifiedzETestCLI.test_it_validates_using_the_latest_validator_when_unspecified  sc   € ð 	�ŠÕ*­OÑ<Ô<Ð<à×ÒÝÐ#7ÀuÐMÑMÔMØ7Ð7Ð7ØØØ.ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ód   — d}d}|                       t          ||¬¦  «        g d¢ddd¬¦  «         d	S )
zG
        Specifically, `const` validation applies for Draft 7.
        zŒ
            {
                "$schema": "http://json-schema.org/draft-07/schema#",
                "const": "check"
            }
        ú"foo"r_   rb   rd   rW   zfoo: 'check' was expected
r  Nr—   rØ   s      r   Ú-test_it_validates_using_draft7_when_specifiedz5TestCLI.test_it_validates_using_draft7_when_specified  sY   € ðˆð ˆØ×ÒÝ 6¸ÐBÑBÔBØ7Ð7Ð7ØØØ0ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 ób   — d}d}|                       t          ||¬¦  «        g d¢dd¬¦  «         dS )zP
        Specifically, `const` validation *does not* apply for Draft 4.
        z�
            {
                "$schema": "http://json-schema.org/draft-04/schema#",
                "const": "check"
            }
            r(  r_   rb   rW   rð   Nr—   rØ   s      r   Ú-test_it_validates_using_draft4_when_specifiedz5TestCLI.test_it_validates_using_draft4_when_specified*  sV   € ðˆð ˆØ×ÒÝ 6¸ÐBÑBÔBØ7Ð7Ð7ØØð	 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   )rW   rW   )1r)   r*   r+   r   rV   rY   rl   rq   rt   r|   r~   rŒ   rŽ   r’   r™   r¥   r§   r«   r®   rµ   r»   r½   rÃ   rÊ   rÌ   rÎ   rÑ   rÔ   rÙ   rÛ   rÞ   rà   ræ   ré   rë   rí   rñ   rõ   rú   rü   rþ   r   r  r  r!  r#  r&  r)  r+  r   r   r   rC   rC   A   sÓ  € € € € € à h h¡j¤j¸Að4ð 4ð 4ð 4ð@
ð 
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð(
ð 
ð 
ð
ð 
ð 
ð*
ð 
ð 
ð6
ð 
ð 
ð>'
ð '
ð '
ðR
ð 
ð 
ð8	
ð 	
ð 	
ð
ð 
ð 
ð&	
ð 	
ð 	
ð
ð 
ð 
ð&
ð 
ð 
ð$
ð 
ð 
ð,
ð 
ð 
ð(
ð 
ð 
ð$
ð 
ð 
ð0ð 0ð 0ð$
ð 
ð 
ð0ð 0ð 0ð 
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð 2ð 2ð 2ð*	
ð 	
ð 	
ð
ð 
ð 
ð$
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð"
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð*
ð 
ð 
ð,Cð Cð Cð&
ð 
ð 
ð*
ð 
ð 
ð 
ð 
ð 
ð&
ð 
ð 
ð 
ð 
r   rC   c                   ó@   — e Zd Z e¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )Ú
TestParserc                 ót   — t          j        g d¢¦  «        }|                      |d         | j        ¦  «         d S )N)ú--validatorz2jsonschema.tests.test_cli.TestParser.FakeValidatorú
--instanceúmem://some/instanceúmem://some/schemarg   )r   rI   r%  r-   ©r   rT   s     r   Ú2test_find_validator_by_fully_qualified_object_namez=TestParser.test_find_validator_by_fully_qualified_object_nameA  sF   € Ý”Nðð ð ñ
ô 
ˆ	ð 	�Š�i Ô,¨dÔ.@ÑAÔAÐAÐAÐAr   c                 ót   — t          j        g d¢¦  «        }|                      |d         t          ¦  «         d S )N)r/  r   r0  r1  r2  rg   )r   rI   r%  r   r3  s     r   Ú!test_find_validator_in_jsonschemaz,TestParser.test_find_validator_in_jsonschemaL  sC   € Ý”Nðð ð ñ
ô 
ˆ	ð 	�Š�i Ô,­oÑ>Ô>Ð>Ð>Ð>r   c                 ó²  — t          ¦   «         t          ¦   «         }}t          |¦  «        5  t          |¦  «        5  |                      t          ¦  «        5  t          j        |¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         |                     ¦   «         fS r   )r   r   r   r¡   Ú
SystemExitr   rI   rO   )r   rP   rF   rG   s       r   Úcli_output_forzTestParser.cli_output_forV  sr  € Ý!™œ¥X¡Z¤Z�ˆÝ˜VÑ$Ô$ð 	%ð 	%¥o°fÑ&=Ô&=ð 	%ð 	%Ø×"Ò"¥:Ñ.Ô.ð %ð %Ý”˜tÑ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð �ŠÑ Ô  &§/¢/Ñ"3Ô"3Ð3Ð3sX   ¬B&¼BÁA8Á,BÁ8A<Á<BÁ?A<Â BÂB&ÂB	ÂB&ÂB	ÂB&Â&B*Â-B*c                 ó�   — |                       ddd¦  «        \  }}|                      d|¦  «         |                      |¦  «         d S )Nro   r‚   r2  zinvalid choice: 'foo'©r9  rÇ   rK   rÉ   s      r   Útest_unknown_outputzTestParser.test_unknown_output]  sT   € Ø×,Ò,Ø˜Øñ
ô 
‰ˆ�ð 	�ŠÐ-¨vÑ6Ô6Ð6Ø×Ò˜Ñ Ô Ð Ð Ð r   c                 ó”   — |                       ddddd¦  «        \  }}|                      d|¦  «         |                      |¦  «         d S )Nro   rp   r�   r‚   r2  z3--error-format can only be used with --output plainr;  rÉ   s      r   Útest_useless_error_formatz$TestParser.test_useless_error_formate  sb   € Ø×,Ò,Ø˜Ø˜eØñ
ô 
‰ˆ�ð
 	�ŠØAØñ	
ô 	
ð 	
ð 	×Ò˜Ñ Ô Ð Ð Ð r   N)
r)   r*   r+   r0   r-   r4  r6  r9  r<  r>  r   r   r   r-  r-  =  so   € € € € € à"�NÑ$Ô$€Mð	Bð 	Bð 	Bð?ð ?ð ?ð4ð 4ð 4ð!ð !ð !ð
!ð 
!ð 
!ð 
!ð 
!r   r-  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚTestCLIIntegrationc                 ó€   — t          j         d¦  «        }|                      |                     d¦  «        d¦  «         d S )NÚ
jsonschemazLicense-ExpressionÚMIT)r   rN   r3   )r   Úour_metadatas     r   Útest_licensezTestCLIIntegration.test_licenses  s=   € ÝÔ(¨Ñ6Ô6ˆØ×Ò˜×)Ò)Ð*>Ñ?Ô?ÀÑGÔGÐGÐGÐGr   c                 ó  — t          j        t          j        dddddgt           j        ¬¦  «        }|                     d¦  «                             ¦   «         }|                      |t          j	        d¦  «        ¦  «         d S )Nz-Wr   ú-mrB  z	--version©rG   zutf-8)
Ú
subprocessÚcheck_outputÚsysÚ
executableÚSTDOUTÚdecodeÚstriprN   r   Úversion)r   rP  s     r   Útest_versionzTestCLIIntegration.test_versionw  sw   € ÝÔ)ÝŒ^˜T 8¨T°<ÀÐMÝÔ$ð
ñ 
ô 
ˆð —.’. Ñ)Ô)×/Ò/Ñ1Ô1ˆØ×Ò˜¥(Ô"2°<Ñ"@Ô"@ÑAÔAÐAÐAÐAr   c                 óè   — t          j        t          j        ddgt           j        ¬¦  «        }t          j        t          j        dddgt           j        ¬¦  «        }|                      ||¦  «         d S )NrG  rB  rH  z--help)rI  rJ  rK  rL  rM  rN   )r   ÚoutputÚoutput_for_helps      r   Ú#test_no_arguments_shows_usage_notesz6TestCLIIntegration.test_no_arguments_shows_usage_notes  sv   € ÝÔ(ÝŒ^˜T <Ð0ÝÔ$ð
ñ 
ô 
ˆõ %Ô1ÝŒ^˜T <°Ð:ÝÔ$ð
ñ 
ô 
ˆð 	×Ò˜ Ñ1Ô1Ð1Ð1Ð1r   N)r)   r*   r+   rE  rQ  rU  r   r   r   r@  r@  r  sG   € € € € € ðHð Hð HðBð Bð Bð	2ð 	2ð 	2ð 	2ð 	2r   r@  )'Ú
contextlibr   r   Ú	importlibr   Úior   r;   r   Úpathlibr   Útextwrapr	   Úunittestr
   r  rI  rK  r  ÚwarningsrB  r   r   Újsonschema.exceptionsr   r   r   Újsonschema.validatorsr   r   Úcatch_warningsÚsimplefilterr   r0   r9   rA   rC   r-  r@  r   r   r   ú<module>ra     ss  ðØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø 
€
€
€
Ø €€€Ø €€€à <Ð <Ð <Ð <Ð <Ð <Ð <Ð <ðð ð ð ð ð ð ð ð ð ð
 <Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;à€XÔÑÔð ð Ø€HÔ˜(Ñ#Ô#Ð#ØÐÐÐÐÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð
ð ð ð&ð ð ðMð Mð Mðy
ð y
ð y
ð y
ð y
ˆhñ y
ô y
ð y
ðx2!ð 2!ð 2!ð 2!ð 2!�ñ 2!ô 2!ð 2!ðj2ð 2ð 2ð 2ð 2˜ñ 2ô 2ð 2ð 2ð 2s   Á.BÂBÂB