§
    ‡Ûgg,  ã                   óB  — d Z ddlmZ ddlZddlm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dlZddlZ	 ddlZn# e$ rZ ed¦  «        e‚dZ[ww xY w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m Z  ej!         "                    d¦  «         G d„ dej#        ¦  «        ¦   «         Z$ ej#        d„ ¬¦  «        Z% G d„ dej&        ¦  «        Z& G d„ dej'        ¦  «        Z( G d„ dej)        j*        ¦  «        Z+d„ Z,ej-         G d„ de¦  «        ¦   «         Z.dS )z8
Displays Agg images in the browser, with interactivity
é    )ÚcontextmanagerN)ÚBytesIO)ÚPathz$The WebAgg backend requires Tornado.)Ú_Backend)ÚGcfé   )Úbackend_webagg_core)ÚTimerAsyncioÚTimerTornadoz3.7c                   ó   — e Zd Zd„ ZdS )ÚServerThreadc                 óp   — t           j        j                             ¦   «                              ¦   «          d S ©N©ÚtornadoÚioloopÚIOLoopÚinstanceÚstart©Úselfs    úX/granary/edev/quantum/lib/python3.11/site-packages/matplotlib/backends/backend_webagg.pyÚrunzServerThread.run-   s+   € ÝŒÔ×&Ò&Ñ(Ô(×.Ò.Ñ0Ô0Ð0Ð0Ð0ó    N)Ú__name__Ú
__module__Ú__qualname__r   © r   r   r   r   +   s#   € € € € € ð1ð 1ð 1ð 1ð 1r   r   c                  ól   — t           j        j                             ¦   «                              ¦   «         S r   r   r   r   r   ú<lambda>r    2   s#   € •7”>Ô(×1Ò1Ñ3Ô3×9Ò9Ñ;Ô;€ r   )Útargetc                   ó8   — e Zd Zej        Zeddœd„¦   «         ZdS )ÚFigureManagerWebAggN)Úblockc                ó¶  — t                                ¦   «          d                     t           j        t           j        t           j        ¬¦  «        }t          j        d         r<dd l}| 	                    |¦  «        s"t          d                     |¦  «        ¦  «         n"t          d                     |¦  «        ¦  «         t                                ¦   «          d S )Nzhttp://{address}:{port}{prefix})ÚaddressÚportÚprefixzwebagg.open_in_browserr   zTo view figure, visit {0})ÚWebAggApplicationÚ
initializeÚformatr&   r'   Ú
url_prefixÚmplÚrcParamsÚ
webbrowserÚopenÚprintr   )Úclsr$   Úurlr/   s       r   Úpyplot_showzFigureManagerWebAgg.pyplot_show8   sÅ   € å×$Ò$Ñ&Ô&Ð&à/×6Ò6Ý%Ô-Ý"Ô'Ý$Ô/ð 7ñ 1ô 1ˆõ
 Œ<Ð0Ô1ð 	;ØÐÐÐØ—?’? 3Ñ'Ô'ð ?ÝÐ1×8Ò8¸Ñ=Ô=Ñ>Ô>Ð>øåÐ-×4Ò4°SÑ9Ô9Ñ:Ô:Ð:å×ÒÑ!Ô!Ð!Ð!Ð!r   )r   r   r   ÚcoreÚNavigationToolbar2WebAggÚ_toolbar2_classÚclassmethodr4   r   r   r   r#   r#   5   sB   € € € € € ØÔ3€OàØ"&ð "ð "ð "ð "ñ „[ð"ð "ð "r   r#   c                   ó   — e Zd ZeZdS )ÚFigureCanvasWebAggN)r   r   r   r#   Úmanager_classr   r   r   r:   r:   K   s   € € € € € Ø'€M€M€Mr   r:   c                   óv  ‡ — e Zd ZdZdZ G d„ dej        j        ¦  «        Z G d„ dej        j        ¦  «        Z	 G d„ dej        j        ¦  «        Z
 G d„ d	ej        j        ¦  «        Z G d
„ dej        j        ¦  «        Z G d„ dej        j        ¦  «        Zdˆ fd„	Zedd„¦   «         Zed„ ¦   «         Zˆ xZS )r)   Fc                   ó   — e Zd Zd„ ZdS )úWebAggApplication.FavIconc                 ó¾   — |                       dd¦  «         |                      t          t          j        ¦   «         d¦  «                             ¦   «         ¦  «         d S )NúContent-Typez	image/pngzimages/matplotlib.png)Ú
set_headerÚwriter   r-   Úget_data_pathÚ
read_bytesr   s    r   ÚgetzWebAggApplication.FavIcon.getT   s^   € Ø�OŠO˜N¨KÑ8Ô8Ð8Ø�JŠJ•t�CÔ-Ñ/Ô/Ø3ñ5ô 5ß5?²Z±\´\ñCô Cð Cð Cð Cr   N©r   r   r   rE   r   r   r   ÚFavIconr>   S   s(   € € € € € ð	Cð 	Cð 	Cð 	Cð 	Cr   rG   c                   ó*   ‡ — e Zd Zddœˆ fd„
Zd„ Zˆ xZS )ú"WebAggApplication.SingleFigurePageÚ ©r,   c                óL   •— || _          t          ¦   «         j        ||fi |¤Ž d S r   ©r,   ÚsuperÚ__init__©r   ÚapplicationÚrequestr,   ÚkwargsÚ	__class__s        €r   rO   z+WebAggApplication.SingleFigurePage.__init__Z   ó1   ø€ Ø(ˆDŒOØ�E‰GŒGÔ˜[¨'Ð<Ð<°VÐ<Ð<Ð<Ð<Ð<r   c                 óö   — t          |¦  «        }t          j        |¦  «        }d                     | j        | j        ¬¦  «        }|                      d| j        ||t          j        j	        |j
        ¬¦  «         d S )Núws://{req.host}{prefix}/©Úreqr(   zsingle_figure.html)r(   Úws_uriÚfig_idÚ	toolitemsÚcanvas)Úintr   Úget_fig_managerr+   rR   r,   Úrenderr5   r6   r\   r]   )r   ÚfignumÚmanagerrZ   s       r   rE   z&WebAggApplication.SingleFigurePage.get^   sƒ   € Ý˜‘[”[ˆFÝÔ)¨&Ñ1Ô1ˆGà/×6Ò6¸4¼<Ø>B¼oð 7ñ Oô OˆFà�KŠKØ$Ø”ØØÝÔ7ÔAØ”~ð ñ 'ô 'ð 'ð 'ð 'r   ©r   r   r   rO   rE   Ú__classcell__©rT   s   @r   ÚSingleFigurePagerI   Y   sT   ø€ € € € € Ø?Að 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'r   rf   c                   ó*   ‡ — e Zd Zddœˆ fd„
Zd„ Zˆ xZS )ú WebAggApplication.AllFiguresPagerJ   rK   c                óL   •— || _          t          ¦   «         j        ||fi |¤Ž d S r   rM   rP   s        €r   rO   z)WebAggApplication.AllFiguresPage.__init__m   rU   r   c           	      óö   — d                      | j        | j        ¬¦  «        }|                      d| j        |t	          t
          j                             ¦   «         ¦  «        t          j	        j
        ¬¦  «         d S )NrW   rX   zall_figures.html)r(   rZ   Úfiguresr\   )r+   rR   r,   r`   Úsortedr   ÚfigsÚitemsr5   r6   r\   )r   rZ   s     r   rE   z$WebAggApplication.AllFiguresPage.getq   s|   € Ø/×6Ò6¸4¼<Ø>B¼oð 7ñ Oô OˆFà�KŠKØ"Ø”ØÝ�sœxŸ~š~Ñ/Ô/Ñ0Ô0ÝÔ7ÔAð ñ Cô Cð Cð Cð Cr   rc   re   s   @r   ÚAllFiguresPagerh   l   s[   ø€ € € € € Ø?Að 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cr   ro   c                   ó   — e Zd Zd„ ZdS )úWebAggApplication.MplJsc                 ó˜   — |                       dd¦  «         t          j                             ¦   «         }|                      |¦  «         d S )Nr@   zapplication/javascript)rA   r5   r#   Úget_javascriptrB   )r   Ú
js_contents     r   rE   zWebAggApplication.MplJs.get|   sC   € Ø�OŠO˜NÐ,DÑEÔEÐEåÔ1×@Ò@ÑBÔBˆJà�JŠJ�zÑ"Ô"Ð"Ð"Ð"r   NrF   r   r   r   ÚMplJsrq   {   s#   € € € € € ð	#ð 	#ð 	#ð 	#ð 	#r   ru   c                   ó   — e Zd Zd„ ZdS )úWebAggApplication.Downloadc                 ó`  — t          |¦  «        }t          j        |¦  «        }|                      dt          j                             |d¦  «        ¦  «         t          ¦   «         }|j        j	         
                    ||¬¦  «         |                      |                     ¦   «         ¦  «         d S )Nr@   Úbinary)r+   )r^   r   r_   rA   Ú	mimetypesÚ	types_maprE   r   r]   ÚfigureÚsavefigrB   Úgetvalue)r   ra   Úfmtrb   Úbuffs        r   rE   zWebAggApplication.Download.get„   s•   € Ý˜‘[”[ˆFÝÔ)¨&Ñ1Ô1ˆGØ�OŠOØ¥	Ô 3× 7Ò 7¸¸XÑ FÔ FñHô Hð Hå‘9”9ˆDØŒNÔ!×)Ò)¨$°sÐ)Ñ;Ô;Ð;Ø�JŠJ�t—}’}‘”Ñ'Ô'Ð'Ð'Ð'r   NrF   r   r   r   ÚDownloadrw   ƒ   s#   € € € € € ð	(ð 	(ð 	(ð 	(ð 	(r   r�   c                   ó0   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ ZdS )úWebAggApplication.WebSocketTc                 óì   — t          |¦  «        | _        t          j        | j        ¦  «        | _        | j                             | ¦  «         t          | d¦  «        r|                      d¦  «         d S d S )NÚset_nodelayT)r^   ra   r   r_   rb   Úadd_web_socketÚhasattrr…   )r   ra   s     r   r0   z WebAggApplication.WebSocket.open�   so   € Ý˜f™+œ+ˆDŒKÝÔ.¨t¬{Ñ;Ô;ˆDŒLØŒL×'Ò'¨Ñ-Ô-Ð-Ý�t˜]Ñ+Ô+ð 'Ø× Ò  Ñ&Ô&Ð&Ð&Ð&ð'ð 'r   c                 ó:   — | j                              | ¦  «         d S r   )rb   Úremove_web_socketr   s    r   Úon_closez$WebAggApplication.WebSocket.on_close—   s   € ØŒL×*Ò*¨4Ñ0Ô0Ð0Ð0Ð0r   c                 óÈ   — t          j        |¦  «        }|d         dk    r|d         | _        d S t          j        | j        ¦  «        }|�|                     |¦  «         d S d S )NÚtypeÚsupports_binaryÚvalue)ÚjsonÚloadsr�   r   r_   ra   Úhandle_json)r   Úmessagerb   s      r   Ú
on_messagez&WebAggApplication.WebSocket.on_messageš   sr   € Ý”j Ñ)Ô)ˆGð �vŒÐ"3Ò3Ð3Ø'.¨wÔ'7�Ô$Ð$Ð$åÔ-¨d¬kÑ:Ô:�ð Ð&Ø×'Ò'¨Ñ0Ô0Ð0Ð0Ð0ð 'Ð&r   c                 óT   — |                       t          j        |¦  «        ¦  «         d S r   )Úwrite_messager�   Údumps)r   Úcontents     r   Ú	send_jsonz%WebAggApplication.WebSocket.send_json©   s&   € Ø×Ò�tœz¨'Ñ2Ô2Ñ3Ô3Ð3Ð3Ð3r   c                 óè   — | j         r|                      |d¬¦  «         d S d                     |                     d¦  «                             dd¦  «        ¦  «        }|                      |¦  «         d S )NT)ry   zdata:image/png;base64,{0}Úbase64ú
rJ   )r�   r•   r+   ÚencodeÚreplace)r   ÚblobÚdata_uris      r   Úsend_binaryz'WebAggApplication.WebSocket.send_binary¬   sz   € ØÔ#ð -Ø×"Ò" 4°Ð"Ñ5Ô5Ð5Ð5Ð5à6×=Ò=Ø—K’K Ñ)Ô)×1Ò1°$¸Ñ;Ô;ñ=ô =�à×"Ò" 8Ñ,Ô,Ð,Ð,Ð,r   N)	r   r   r   r�   r0   rŠ   r“   r˜   r    r   r   r   Ú	WebSocketrƒ   �   sd   € € € € € Øˆð	'ð 	'ð 	'ð	1ð 	1ð 	1ð	1ð 	1ð 	1ð	4ð 	4ð 	4ð	-ð 	-ð 	-ð 	-ð 	-r   r¡   rJ   c                 ó4  •— |r"|d         dk    r|d         dk    s
J d¦   «         ‚t          ¦   «                              |dz   t          j        j        dt
          j                             ¦   «         if|dz   t          j        j        dt          t          j
        ¦   «         d¦  «        if|d	z   | j        f|d
z   | j        d|if|dz   | j        d|if|dz   | j        f|dz   | j        f|dz   | j        fgt
          j                             ¦   «         ¬¦  «         d S )Nr   ú/éÿÿÿÿz6url_prefix must start with a "/" and not end with one.z/_static/(.*)Úpathz/_images/(.*)Úimagesz/favicon.icoz	/([0-9]+)r,   z/?z
/js/mpl.jsz/([0-9]+)/wsz/([0-9]+)/download.([a-z0-9.]+))Útemplate_path)rN   rO   r   ÚwebÚStaticFileHandlerr5   r#   Úget_static_file_pathr   r-   rC   rG   rf   ro   ru   r¡   r�   )r   r,   rT   s     €r   rO   zWebAggApplication.__init__´   sl  ø€ Øð 	IØ˜a”= CÒ'Ð'¨J°r¬N¸cÒ,AÐ,AÐ,AØHñ -BÔ,AÐ,Aõ 	‰Œ×Òð Ð.Ñ.Ý”Ô.Ø�$Ô2×GÒGÑIÔIÐJðLð
 Ð.Ñ.Ý”Ô.Ø�$�sÔ0Ñ2Ô2°HÑ=Ô=Ð>ð@ð
 ˜oÑ-¨t¬|Ð<ð ˜lÑ*¨DÔ,AØ 
Ð+ð-ð ˜eÑ# TÔ%8Ø 
Ð+ð-ð ˜mÑ+¨T¬ZÐ8ð ˜oÑ-¨t¬~Ð>ð Ð@Ñ@Ø”ð ð;õ@ Ô2×GÒGÑIÔIðC 	ñ !	Kô !	Kð !	Kð !	Kð !	Kr   Nc                 óÔ  — | j         rd S  | |¬¦  «        }|| _        d„ }|€t          j        d         | _        n|| _        t          j        d         | _         || j        t          j        d         ¦  «        D ]X}	 |                     || j        ¦  «         || _         nA# t          j        $ r }|j	        t          j
        k    r‚ Y d }~ŒQd }~ww xY wt          d¦  «        ‚d| _         d S )NrK   c              3   óÂ   K  — t          t          d|¦  «        ¦  «        D ]	}| |z   V — Œ
t          |dz
  ¦  «        D ]"}| t          j        d|z  d|z  ¦  «        z   V — Œ#dS )zâ
            Generate a list of n random ports near the given port.

            The first 5 ports will be sequential, and the remaining n-5 will be
            randomly selected in the range [port-2*n, port+2*n].
            é   éþÿÿÿé   N)ÚrangeÚminÚrandomÚrandint)r'   ÚnÚis      r   Úrandom_portsz2WebAggApplication.initialize.<locals>.random_portsè   s�   è è € õ �3˜q !™9œ9Ñ%Ô%ð ð �Ø˜Q‘h����Ý˜1˜q™5‘\”\ð ;ð ;�Ø�Vœ^¨B°©F°A¸±EÑ:Ô:Ñ:Ð:Ð:Ð:Ð:ð;ð ;r   zwebagg.addresszwebagg.portzwebagg.port_retrieszSThe webagg server could not be started because an available port could not be foundT)Úinitializedr,   r-   r.   r&   r'   ÚlistenÚsocketÚerrorÚerrnoÚ
EADDRINUSEÚ
SystemExit)r2   r,   r'   r&   Úappr¶   Úes          r   r*   zWebAggApplication.initializeÜ   s*  € àŒ?ð 	ØˆFð ˆc˜ZÐ(Ñ(Ô(ˆà#ˆŒð
	;ð 
	;ð 
	;ð ˆ?Ýœ,Ð'7Ô8ˆCŒKˆKà!ˆCŒKÝ”< Ô.ˆŒØ �L ¤Ý!$¤Ð.CÔ!DñFô Fð 	+ð 	+ˆDðØ—
’
˜4 ¤Ñ-Ô-Ð-ð
  �”Ø�øõ ”<ð ð ð Ø”7�eÔ.Ò.Ð.Øð /Ð.Ð.Ð.Ð.øøøøðøøøõ ð*ñ+ô +ð +ð ˆŒˆˆs   Á<B Â CÂ/C
Ã
Cc                 óÐ  ‡ ‡‡— dd l }	 |                     ¦   «          d‰ _        n# t          $ r Y nw xY w‰ j        rd S 	 t          j        j                             ¦   «         Šˆ ˆfd„Št          ˆˆfd„¦   «         }d‰ _        t          d¦  «         t          j                             ¦   «           |¦   «         5  ‰                     ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )Nr   Tc                  ó˜   •— ‰                      ¦   «          t          d¦  «         t          j                             ¦   «          d‰ _        d S )NzServer is stoppedF)Ústopr1   ÚsysÚstdoutÚflushÚstarted)r2   r   s   €€r   Úshutdownz)WebAggApplication.start.<locals>.shutdown   s>   ø€ Ø�KŠK‰MŒMˆMÝÐ%Ñ&Ô&Ð&ÝŒJ×ÒÑÔÐØˆCŒKˆKˆKr   c               3   óâ   •K  — t          j         t           j        ˆˆfd„¦  «        } 	 d V — t          j         t           j        | ¦  «         d S # t          j         t           j        | ¦  «         w xY w)Nc                 ó.   •— ‰                      ‰¦  «        S r   )Úadd_callback_from_signal)ÚsigÚframer   rÇ   s     €€r   r    z?WebAggApplication.start.<locals>.catch_sigint.<locals>.<lambda>*  s   ø€  6×#BÒ#BÀ8Ñ#LÔ#L€ r   )ÚsignalÚSIGINT)Úold_handlerr   rÇ   s    €€r   Úcatch_sigintz-WebAggApplication.start.<locals>.catch_sigint&  sp   øè è € å œ-Ý”ØLÐLÐLÐLÐLñNô NˆKð:Ø���å”�fœm¨[Ñ9Ô9Ð9Ð9Ð9ø•”�fœm¨[Ñ9Ô9Ð9Ð9øøøs   ¨A Á!A.z"Press Ctrl+C to stop WebAgg server)ÚasyncioÚget_running_looprÆ   ÚRuntimeErrorr   r   r   r   r   r1   rÃ   rÄ   rÅ   r   )r2   rÑ   rÐ   r   rÇ   s   `  @@r   r   zWebAggApplication.start
  sq  øøø€ àˆˆˆð	Ø×$Ò$Ñ&Ô&Ð&ð ˆCŒKˆKøõ ð 	ð 	ð 	ØˆDð	øøøð
 Œ;ð 	ØˆFð	õ ”Ô&×/Ò/Ñ1Ô1ˆð	 ð 	 ð 	 ð 	 ð 	 ð 	 õ 
ð	:ð 	:ð 	:ð 	:ð 	:ñ 
Œð	:ð ˆŒåÐ2Ñ3Ô3Ð3ÝŒ
×ÒÑÔÐØˆ\‰^Œ^ð 	ð 	Ø�LŠL‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ‰% ¥
2±2Â9CÃCÃ"C)rJ   )rJ   NN)r   r   r   r·   rÆ   r   r¨   ÚRequestHandlerrG   rf   ro   ru   r�   Ú	websocketÚWebSocketHandlerr¡   rO   r8   r*   r   rd   re   s   @r   r)   r)   O   s¶  ø€ € € € € Ø€KØ€GðCð Cð Cð Cð C�'”+Ô,ñ Cô Cð Cð'ð 'ð 'ð 'ð '˜7œ;Ô5ñ 'ô 'ð 'ð&Cð Cð Cð Cð C˜œÔ3ñ Cô Cð Cð#ð #ð #ð #ð #�”Ô*ñ #ô #ð #ð(ð (ð (ð (ð (�7”;Ô-ñ (ô (ð (ð%-ð %-ð %-ð %-ð %-�GÔ%Ô6ñ %-ô %-ð %-ðN&Kð &Kð &Kð &Kð &Kð &KðP ð+ð +ð +ñ „[ð+ðZ ð+ð +ñ „[ð+ð +ð +ð +ð +r   r)   c                 ó\  — dd l }t                               ¦   «          dd l}	 |                     ¦   «          nB# t
          $ r5 t                               ¦   «         st                               ¦   «          Y nw xY w| j	        }t          t          j                             ¦   «         d¦  «                             ¦   «         }|j                             |¦  «        }|                     t          j        |t          j        j        | j        t          j        ¬¦  «                             d¦  «        S )Nr   zipython_inline_figure.html)r(   r[   r\   r]   r'   zutf-8)Útornado.templater)   r*   rÑ   rÒ   rÓ   Úwebagg_server_threadÚis_aliver   Únumberr   r5   r#   rª   Ú	read_textÚtemplateÚTemplateÚgenerater,   r6   r\   r]   r'   Údecode)r|   r   rÑ   ra   ÚtplÚts         r   Úipython_inline_displayrã   9  s  € ØÐÐÐå× Ò Ñ"Ô"Ð"Ø€N€N€Nð)Ø× Ò Ñ"Ô"Ð"Ð"øÝð )ð )ð )Ý#×,Ò,Ñ.Ô.ð 	)Ý ×&Ò&Ñ(Ô(Ð(øøð)øøøð Œ]€FÝ
�tÔ'×<Ò<Ñ>Ô>Ø+ñ-ô -ß-6ªY©[¬[ð àÔ×!Ò! #Ñ&Ô&€AØ�:Š:Ý Ô+ØÝÔ/Ô9ØŒ}ÝÔ#ð ñ %ô %÷
 &,¢V¨G¡_¤_ð5s   £8 ¸<A7Á6A7c                   ó   — e Zd ZeZeZdS )Ú_BackendWebAggN)r   r   r   r:   ÚFigureCanvasr#   ÚFigureManagerr   r   r   rå   rå   P  s   € € € € € à%€LØ'€M€M€Mr   rå   )/Ú__doc__Ú
contextlibr   r»   Úior   r�   rz   Úpathlibr   r²   rÃ   rÍ   r¹   Ú	threadingr   ÚImportErrorÚerrrÓ   Útornado.webÚtornado.ioloopÚtornado.websocketÚ
matplotlibr-   Úmatplotlib.backend_basesr   Úmatplotlib._pylab_helpersr   rJ   r	   r5   r
   r   Ú_apiÚ
deprecatedÚThreadr   rÙ   r#   ÚFigureCanvasWebAggCorer:   r¨   ÚApplicationr)   rã   Úexportrå   r   r   r   ú<module>rû      s»  ððð ð &Ð %Ð %Ð %Ð %Ð %Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø Ð Ð Ð ðHØ€N€N€N€NøØð Hð Hð HØ
ˆ,Ð=Ñ
>Ô
>ÀCÐGøøøøðHøøøð Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð à Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ø )Ð )Ð )Ð )Ð )Ð )Ø )Ð )Ð )Ð )Ð )Ð )ð ð  ð  ð  ð  ð  ð  ð  ð „×Ò�UÑÔð1ð 1ð 1ð 1ð 1�9Ô#ñ 1ô 1ñ Ôð1ð
 (�yÔ'Ø;Ð;ð=ñ =ô =Ð ð"ð "ð "ð "ð "˜$Ô2ñ "ô "ð "ð,(ð (ð (ð (ð (˜Ô4ñ (ô (ð (ðgð gð gð gð g˜œÔ/ñ gô gð gðT5ð 5ð 5ð. 
„ð(ð (ð (ð (ð (�Xñ (ô (ñ „ð(ð (ð (s   ¶; »AÁ AÁA