§
    ŠŠtj}e  ã            	       óp	  — U d dl Z d dlmZ d dlmZmZ d dlZd dlmZ d dl	m
Z
 d dlmZmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZmZmZ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$ erd dl%m&Z& ddl'm(Z( d dl)m*Z* ej+        Z+dedede,fd„Z-de.e         dede,fd„Z/dej0        ddddfd„Z1dej0        de,fd„Z2de,dej3        fd „Z4de,dej5        fd!„Z6 e*d"d#¬$¦  «        d%e,d&e,ddfd'„¦   «         Z7e7j8        d%e,d&e,ddfd(„¦   «         Z9 eej:        j;        j<        j=        ¦  «          e*d)d#¬$¦  «        d%e,d&e,ddfd*„¦   «         Z>e>j8        d%e,d&e,ddfd+„¦   «         Z9 eej:        j;        j?        j=        ¦  «          e*d,d#¬$¦  «        d-e,d.e,ddfd/„¦   «         Z@e@j8        d-e,d.e,ddfd0„¦   «         Z9 eej:        j;        j@        j=        ¦  «          e*d1d#¬$¦  «        d-e,d.e,ddfd2„¦   «         ZAeAj8        d-e,d.e,ddfd3„¦   «         Z9 eej:        j;        jA        j=        ¦  «          e*d4d#¬$¦  «        d-e,ddfd5„¦   «         ZBeBj8        d-e,ddfd6„¦   «         Z9 eej:        j;        jB        j=        ¦  «          e*d7d#¬$¦  «        d8eCd9e,ddfd:„¦   «         ZDeDj8        d8eCd9e,ddfd;„¦   «         Z9 eej:        j;        jD        j=        ¦  «          e*d<d#¬$¦  «        d.e,ddfd=„¦   «         ZEeEj8        d.e,ddfd>„¦   «         Z9 eej:        j;        jE        j=        ¦  «          e*d?d#¬$¦  «        d@e,dAe,ddfdB„¦   «         ZFeFj8        d-e,d.e,ddfdC„¦   «         Z9 eej:        j;        jF        j=        ¦  «          e*dDd#¬$¦  «        dEe,dFe,dGej+        ddfdH„¦   «         ZGeGj8        dEe,dFe,dGej+        ddfdI„¦   «         Z9 eej:        j;        jG        j=        ¦  «          e*dJd#¬$¦  «        dKej+        d.e,ddfdL„¦   «         ZHeHj8        dKej+        d.e,ddfdM„¦   «         Z9 eej:        j;        jH        j=        ¦  «          G dN„ dO¦  «        ZI G dP„ dQe"¦  «        ZJ G dR„ dSeJ¦  «        ZK G dT„ dUeK¦  «        ZL G dV„ dWeK¦  «        ZMejN        jO        eLejP        jO        eMiZQeReSeTeK         f         eUdX<   dYeSdeTeK         dz  fdZ„ZV G d[„ d\e¦  «        ZWdS )]é    N)ÚCallable)ÚAnyÚOptional)ÚConstDictVariable)ÚTupleVariable)Úhas_side_effectÚProxyé   )Úgraph_break_hints)Úcreate_call_function)ÚTYPE_CHECKINGÚunimplemented)ÚCURRENT_STREAM_INDEXÚget_external_object_by_indexÚregister_graph_created_objectÚregister_user_objectÚreset_user_object_tracking©ÚCurrentStreamSourceé   )ÚVariableTracker©ÚConstantVariable)ÚFxTracebackAnnotateVariable)ÚLazyVariableTracker)ÚInstructionTranslatorBase)Ú	PyCodegen)Ú	custom_opÚargsÚkwargsÚreturnc            	      óª   — t          j        | i |¤Ž}t          |t                               t          g ¦  «        t          i ¦  «        ¦  «        ¦  «        S ©N)ÚtorchÚEventr   ÚEventVariableÚ make_construct_in_graph_event_fnr   r   )r   r    Úevents      ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_dynamo/variables/streams.pyÚ	new_eventr*   &   sT   € ÝŒK˜Ð( Ð(Ð(€EÝ(ØÝ×6Ò6Ý˜"ÑÔÕ0°Ñ4Ô4ñ	
ô 	
ñô ð ó    c            	      óª   — t          j        | i |¤Ž}t          |t                               t          g ¦  «        t          i ¦  «        ¦  «        ¦  «        S r#   )r$   ÚStreamr   ÚStreamVariableÚ!make_construct_in_graph_stream_fnr   r   )r   r    Ústreams      r)   Ú
new_streamr1   0   sT   € ÝŒ\˜4Ð* 6Ð*Ð*€FÝ(ØÝ×8Ò8Ý˜"ÑÔÕ0°Ñ4Ô4ñ	
ô 	
ñô ð r+   ÚdeviceÚcgr   c                 ó®   ‡— ‰                      ˆfd„¦  «          ‰t          | ¦  «        ¦  «         ‰                     t          dd¦  «        ¦  «         d S )Nc                  óX   •— ‰                       t          j        j        j        d¦  «        S ©NÚstash_graph_created_object©Úload_import_fromr$   Ú_dynamoÚgraph_bytecode_inputsÚ__name__)r3   s   €r)   ú<lambda>z)_codegen_current_stream.<locals>.<lambda><   s%   ø€ �×#Ò#ÝŒMÔ/Ô8Ø(ñ
ô 
€ r+   r   F)Úadd_push_nullr   Úextend_outputr   )r2   r3   s    `r)   Ú_codegen_current_streamr@   :   so   ø€ Ø×Òð	
ð 	
ð 	
ð 	
ñô ð ð €BÕ˜6Ñ"Ô"Ñ#Ô#Ð#Ø×ÒÕ)¨!¨UÑ3Ô3Ñ4Ô4Ð4Ð4Ð4r+   c                 óh   ‡ — t           j                             ‰ ¦  «        }t          |ˆ fd„¦  «        S )Nc                 ó$   •— t          ‰|¦  «        S r#   )r@   )Ú_r3   r2   s     €r)   r=   z$get_current_stream.<locals>.<lambda>H   s   ø€ Õ5°f¸bÑAÔA€ r+   )r$   ÚacceleratorÚcurrent_streamr   )r2   r0   s   ` r)   Úget_current_streamrF   E   s:   ø€ ÝÔ×-Ò-¨fÑ5Ô5€FÝ(ØÐAÐAÐAÐAñô ð r+   Úindexc                 ó|   — t          | ¦  «        }t          |t          j        ¦  «        st	          d| › �¦  «        ‚|S )Nz3Fork/join stream expected a stream object at index )r   Ú
isinstancer$   r-   ÚAssertionError)rG   r0   s     r)   Ú_get_stream_by_indexrK   L   sG   € Ý)¨%Ñ0Ô0€FÝ�f�eœlÑ+Ô+ð 
ÝØIÀ%ÐIÐIñ
ô 
ð 	
ð €Mr+   c                 ó|   — t          | ¦  «        }t          |t          j        ¦  «        st	          d| › �¦  «        ‚|S )Nz4Record/wait event expected an event object at index )r   rI   r$   r%   rJ   )rG   r(   s     r)   Ú_get_event_by_indexrM   U   sG   € Ý(¨Ñ/Ô/€EÝ�e�Uœ[Ñ)Ô)ð 
ÝØJÀ5ÐJÐJñ
ô 
ð 	
ð €Lr+   zstreams::fork© )Úmutates_argsÚ
from_indexÚto_indexc                 ó^   — t           j                             t          |¦  «        ¦  «         d S r#   ©r$   rD   Ú
set_streamrK   ©rP   rQ   s     r)   Úfork_streamrV   ^   s*   € õ
 
Ô× Ò Õ!5°hÑ!?Ô!?Ñ@Ô@Ð@Ð@Ð@r+   c                 ó   — d S r#   rN   rU   s     r)   rC   rC   f   ó	   € ð
 	€Dr+   zstreams::joinc                 ó^   — t           j                             t          |¦  «        ¦  «         d S r#   rS   rU   s     r)   Újoin_streamrZ   q   s(   € å	Ô× Ò Õ!5°hÑ!?Ô!?Ñ@Ô@Ð@Ð@Ð@r+   c                 ó   — d S r#   rN   rU   s     r)   rC   rC   v   rX   r+   zstreams::record_eventÚevent_indexÚstream_indexc                 ól   — t          | ¦  «        }t          |¦  «        }|                     |¦  «         d S r#   )rM   rK   Úrecord©r\   r]   r(   r0   s       r)   Úrecord_eventra   �   s4   € å Ñ,Ô,€EÝ! ,Ñ/Ô/€FØ	‡L‚L�ÑÔÐÐÐr+   c                 ó   — d S r#   rN   ©r\   r]   s     r)   rC   rC   ˆ   rX   r+   zstreams::wait_eventc                 ól   — t          | ¦  «        }t          |¦  «        }|                     |¦  «         d S r#   )rM   rK   Úwaitr`   s       r)   Ú
wait_eventrf   “   s4   € å Ñ,Ô,€EÝ! ,Ñ/Ô/€FØ	‡J‚JˆvÑÔÐÐÐr+   c                 ó   — d S r#   rN   rc   s     r)   rC   rC   š   rX   r+   zstreams::synchronize_eventc                 óL   — t          | ¦  «        }|                     ¦   «          d S r#   )rM   Úsynchronize)r\   r(   s     r)   Úsynchronize_eventrj   ¥   s'   € å Ñ,Ô,€EØ	×ÒÑÔÐÐÐr+   c                 ó   — d S r#   rN   )r\   s    r)   rC   rC   «   ó   € à€Dr+   zstreams::synchronize_deviceÚdevice_typeÚdevice_indexc                 ój   — t           j                             t          j        | |¦  «        ¦  «         d S r#   )r$   rD   ri   r2   ©rm   rn   s     r)   Úsynchronize_devicerq   ³   s+   € å	Ô×!Ò!¥%¤,¨{¸LÑ"IÔ"IÑJÔJÐJÐJÐJr+   c                 ó   — d S r#   rN   rp   s     r)   rC   rC   ¸   rl   r+   zstreams::synchronize_streamc                 óL   — t          | ¦  «        }|                     ¦   «          d S r#   )rK   ri   )r]   r0   s     r)   Úsynchronize_streamrt   À   s'   € å! ,Ñ/Ô/€FØ
×ÒÑÔÐÐÐr+   c                 ó   — d S r#   rN   )r]   s    r)   rC   rC   Æ   rl   r+   zstreams::wait_streamÚwaiting_stream_indexÚwaited_on_stream_indexc                 ól   — t          | ¦  «        }t          |¦  «        }|                     |¦  «         d S r#   )rK   Úwait_stream)rv   rw   ÚwaitingÚ	waited_ons       r)   ry   ry   Î   s8   € å"Ð#7Ñ8Ô8€GÝ$Ð%;Ñ<Ô<€IØ×Ò˜	Ñ"Ô"Ð"Ð"Ð"r+   c                 ó   — d S r#   rN   rc   s     r)   rC   rC   Õ   rX   r+   zstreams::sync_deallocÚwait_event_indexÚsrc_stream_indexÚ
to_deallocc                 óZ   — t           j        j        j                             | |¦  «         dS )a‰  An op which waits on an event and moves the last usage of to_dealloc
    after the wait, so that after the sync occurs, the deallocation or
    subsequent reuse of the tensor's memory will be guaranteed to happen
    after a side stream is finished using it.
    See https://docs.pytorch.org/docs/stable/generated/torch.Tensor.record_stream.html#torch.Tensor.record_stream
    for more detailsN)r$   ÚopsÚstreamsrf   Údefault©r}   r~   r   s      r)   Úsync_deallocr…   à   s*   € õ 
„IÔÔ ×(Ò(Ð)9Ð;KÑLÔLÐLÐLÐLr+   c                 ó   — d S r#   rN   r„   s      r)   rC   rC   í   s	   € ð 	€Dr+   zstreams::record_streamÚtensorc                 óJ   — |                       t          |¦  «        ¦  «         d S r#   )Úrecord_streamrK   ©r‡   r]   s     r)   r‰   r‰   ù   s%   € à
×ÒÕ-¨lÑ;Ô;Ñ<Ô<Ð<Ð<Ð<r+   c                 ó   — d S r#   rN   rŠ   s     r)   rC   rC   þ   rX   r+   c                   ód   — e Zd ZdZdd„Zdd„Zdd„Zdd	ej        dz  ddfd
„Z	de
fd„Zdefd„ZdS )ÚSymbolicStreamStatez)Track the currently entered stream if anyr!   Nc                 ó¦  — ddl m} g }t          j                             ¦   «         r‘t          ¦   «          t          j                             ¦   «         } ||j        ¦  «        }t          ||¦  «        }|t          k    rt          dt          › d|› �¦  «        ‚t          j        ||¬¦  «        }||_        |g}t          j        |¦  «        | _        d S )Nr
   r   z+Current stream must be registered at index z, got )Úsource)r�   r   r$   rD   Úis_availabler   rE   r2   r   r   rJ   r   ÚcreateÚuser_object_indexÚcollectionsÚdequeÚcur_stream_stack)Úselfr   Ú	cur_stackr0   r�   rG   Ú
stream_vars          r)   Ú__init__zSymbolicStreamState.__init__  sø   € Ø0Ð0Ð0Ð0Ð0Ð0à*,ˆ	ÝÔ×)Ò)Ñ+Ô+ð 	%å&Ñ(Ô(Ð(ÝÔ&×5Ò5Ñ7Ô7ˆFØ(Ð(¨¬Ñ7Ô7ˆFõ
 )¨°Ñ8Ô8ˆEØÕ,Ò,Ð,Ý$ð#ÕBVð #ð #Ø ð#ð #ñô ð õ -Ô3°FÀ6ÐJÑJÔJˆJð ,1ˆJÔ(Ø#˜ˆIåCNÔCTØñD
ô D
ˆÔÐÐr+   r0   r.   c                 ó:   — | j                              |¦  «         d S r#   )r•   Úappend©r–   r0   s     r)   Úenter_streamz SymbolicStreamState.enter_stream)  s   € ØÔ×$Ò$ VÑ,Ô,Ð,Ð,Ð,r+   c                 ó8   — | j                              ¦   «          d S r#   )r•   Úpop©r–   s    r)   Úexit_streamzSymbolicStreamState.exit_stream,  s   € ØÔ×!Ò!Ñ#Ô#Ð#Ð#Ð#r+   r2   c                 ól   — |�&t          | j        ¦  «        D ]}|j        |k    r|c S Œ| j        d         S )Néÿÿÿÿ)Úreversedr•   r2   )r–   r2   r0   s      r)   Ú
cur_streamzSymbolicStreamState.cur_stream/  sM   € ØÐÝ" 4Ô#8Ñ9Ô9ð "ð "�Ø”= FÒ*Ð*Ø!�M�M�Mð +ð Ô$ RÔ(Ð(r+   c                 ó2   — t          | j        ¦  «        dk    S )Nr   )Úlenr•   r    s    r)   Úin_stream_contextz%SymbolicStreamState.in_stream_context7  s   € Ý�4Ô(Ñ)Ô)¨AÒ-Ð-r+   c                 óØ   — | j         d         }t          |t          ¦  «        r5|                     ¦   «         s!t	          |                     ¦   «         ¦  «        S t	          |j        ¦  «        S )zOGet a Python object id for the current stream without realizing lazy variables.r£   )r•   rI   r   Úis_realizedÚidÚ
peek_valueÚvaluerœ   s     r)   Úcur_stream_idz!SymbolicStreamState.cur_stream_id:  s_   € àÔ& rÔ*ˆÝ�fÕ1Ñ2Ô2ð 	+¸6×;MÒ;MÑ;OÔ;Oð 	+Ý�f×'Ò'Ñ)Ô)Ñ*Ô*Ð*Ý�&”,ÑÔÐr+   )r!   N)r0   r.   r!   Nr#   )r<   Ú
__module__Ú__qualname__Ú__doc__r™   r�   r¡   r$   r2   r¥   Úboolr¨   Úintr®   rN   r+   r)   r�   r�   	  s»   € € € € € Ø3Ð3ð
ð 
ð 
ð 
ð:-ð -ð -ð -ð$ð $ð $ð $ð)ð ) ¤°Ñ!4ð )Ð@Pð )ð )ð )ð )ð. 4ð .ð .ð .ð .ð ˜sð  ð  ð  ð  ð  ð  r+   r�   c            	       óÄ   ‡ — e Zd ZdZedddddeeef         dd fd„¦   «         Zd	e	d         dedd
fˆ fd„Z
dddedefˆ fd„Zdddedefˆ fd„Zdefd„Zdefd„Zdd„Zˆ xZS )ÚStreamContextVariablez(This represents torch.cuda.StreamContextÚtxr   Ústream_to_enterr.   r    r!   c                 ó   — t          |fi |¤ŽS r#   )rµ   )r¶   r·   r    s      r)   r‘   zStreamContextVariable.createE  s&   € õ %Øð
ð 
àð
ð 
ð 	
r+   r0   Nc                 ó€   •— || _          t          ¦   «         j        dd|                      ¦   «         j        id dœ|¤Ž d S )Nr0   )Útarget_valuesÚinitial_valuesrN   )r0   Úsuperr™   Ú
get_streamr’   )r–   r0   r    Ú	__class__s      €r)   r™   zStreamContextVariable.__init__P  s[   ø€ ØˆŒØ�‰ŒÔð 	
Ø# T§_¢_Ñ%6Ô%6Ô%HÐIØð	
ð 	
ð ð	
ð 	
ð 	
ð 	
ð 	
r+   r   c                 óž   •— |j                              |                      ¦   «         ¦  «         t          ¦   «                              |¦  «        S r#   )Úsymbolic_stream_stater�   r½   r¼   Úenter©r–   r¶   r   r¾   s      €r)   rÁ   zStreamContextVariable.enterX  s<   ø€ ð
 	Ô ×-Ò-¨d¯oªoÑ.?Ô.?Ñ@Ô@Ð@Ý‰wŒw�}Š}˜RÑ Ô Ð r+   c                 ój   •— |j                              ¦   «           t          ¦   «         j        |g|¢R Ž S r#   )rÀ   r¡   r¼   ÚexitrÂ   s      €r)   rÄ   zStreamContextVariable.exit`  s8   ø€ ð
 	Ô ×,Ò,Ñ.Ô.Ð.Ø�u‰wŒwŒ|˜BÐ& Ð&Ð&Ð&Ð&r+   c                 ó$   — t           j        j        S r#   )r$   ÚcudaÚStreamContextr    s    r)   Úpython_typez!StreamContextVariable.python_typeh  s   € ÝŒzÔ'Ð'r+   c                 ó   — dS )NTrN   r    s    r)   Úsupports_graph_breaksz+StreamContextVariable.supports_graph_breaksk  s   € Øˆtr+   c                 ó<   — | j         st          d¦  «        ‚| j         S )Nz,Stream context should have a separate stream)r0   rJ   r    s    r)   r½   z StreamContextVariable.get_streamn  s$   € ØŒ{ð 	QÝ Ð!OÑPÔPÐPØŒ{Ðr+   ©r!   r.   )r<   r¯   r°   r±   ÚstaticmethodÚdictÚstrr   r‘   r   r™   r   rÁ   rÄ   ÚtyperÈ   r²   rÊ   r½   Ú__classcell__©r¾   s   @r)   rµ   rµ   B  s^  ø€ € € € € Ø2Ð2àð
Ø'ð
à)ð
ð �s˜C�x”.ð
ð 
!ð	
ð 
ð 
ñ „\ð
ð
˜xÐ(8Ô9ð 
ÀSð 
ÈTð 
ð 
ð 
ð 
ð 
ð 
ð!Ø-ð!Ø6Eð!à	ð!ð !ð !ð !ð !ð !ð'Ø-ð'Ø6Eð'à	ð'ð 'ð 'ð 'ð 'ð 'ð(˜Tð (ð (ð (ð (ð tð ð ð ð ðð ð ð ð ð ð ð r+   rµ   c                   óX  ‡ — e Zd ZU dZej        Zeed<   dZ	e
dz  ed<   	 ddedej        dedz  ded	df
ˆ fd
„Zd	efd„Zddde
d	dfˆ fd„Zd	efd„Zddde
dee         dee
ef         d	ef
ˆ fd„Zd„ Zd	efd„Zd	e
fd„Zd	e
fd„Zdd„Zdd„Zededed	e edgdf         fd„¦   «         Z!ˆ xZ"S ) r.   z1Represents the device-agnostic torch.Stream classÚ_cpython_typeNÚ_device_handle_attrÚproxyr­   r’   r    r!   c                 ó  •— |�Id|j         j        v r;|j         j        d         |k    r%t          d|j         j        d         › d|› �¦  «        ‚|| _        || _        |j        | _        || _         t          ¦   «         j        di |¤Ž d S )NÚexample_valueúproxy example_value ú != r#   )	ÚnodeÚmetarJ   rÖ   r­   r2   r’   r¼   r™   ©r–   rÖ   r­   r’   r    r¾   s        €r)   r™   zStreamVariable.__init__|  s    ø€ ð Ð °E´J´OÐ!CÐ!CØŒzŒ˜Ô/°5Ò8Ð8Ý$ØX¨5¬:¬?¸?Ô+KÐXÐXÐQVÐXÐXñô ð ð ˆŒ
ØˆŒ
Ø”lˆŒà!2ˆÔØ�‰ŒÔÐ(Ð( Ð(Ð(Ð(Ð(Ð(r+   c                 ó   — | j         S r#   )rÔ   r    s    r)   rÈ   zStreamVariable.python_type’  s   € ØÔ!Ð!r+   r¶   r   Únamer   c                 ó¸  •— | j         �±|| j         k    r¦ddlm}m} | j        r( || j                             |j        ¦  «        ¦  «         t          | j        |¦  «        r't          j
        t          | j        |¦  «        ¦  «        S t          | j        d¦  «        rt          j
        | j        j        ¦  «        S t          ¦   «                              ||¦  «        S )Nr
   ©ÚGuardBuilderÚinstall_guardÚnative_handle)rÕ   Úguardsrâ   rã   r�   Ú
make_guardÚEQUALS_MATCHÚhasattrr­   r   r‘   Úgetattrrä   r¼   Úvar_getattr)r–   r¶   rß   râ   rã   r¾   s        €r)   rê   zStreamVariable.var_getattr•  sØ   ø€ ð Ô#Ð/°D¸DÔ<TÒ4TÐ4TØ<Ð<Ð<Ð<Ð<Ð<Ð<Ð<àŒ{ð QØ�˜dœk×4Ò4°\Ô5NÑOÔOÑPÔPÐPå�t”z 4Ñ(Ô(ð JÝ'Ô.­w°t´zÀ4Ñ/HÔ/HÑIÔIÐIå�t”z ?Ñ3Ô3ð IÝ'Ô.¨t¬zÔ/GÑHÔHÐHå‰wŒw×"Ò" 2 tÑ,Ô,Ð,r+   c                 ó   — | j         S r#   ©r­   r    s    r)   Úget_real_python_backed_valuez+StreamVariable.get_real_python_backed_value¦  ó
   € ØŒzÐr+   r   c                 óp  •— t          | j        |¦  «        st          d|› �¦  «        ‚ddlm} ddlm} |dk    r�|d         }t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚|j
                             d	t          j        j        j        |j        | j        fi ¦  «         t#          j        d ¦  «        S |d
k    r�|d         }t          |t&          ¦  «        st          dt          |¦  «        › �¦  «        ‚|j
                             d	t          j        j        j        | j        |j        fi ¦  «         t#          j        d ¦  «        S |dk    rK|j
                             d	t          j        j        j        | j        fi ¦  «         t#          j        d ¦  «        S |dk    r3 |t"          | |j
        j        d|g || g|z   |¦  «        ¢R Ž ¬¦  «        S |dk    �r(ddlm}	 |j
                             t1          | j        ¦  «        ¦  «         |r2t          |d         t          ¦  «        r|d         }
|
j        }|
j        }n\| j                             ¦   «         }t5          |t                               t9          g ¦  «        t;          i ¦  «        ¦  «        ¦  «        }|j
                             d	t          j        j        j        || j        fi ¦  «          |	||j
                             d	t<          |fi ¦  «        ¬¦  «        S t?          ¦   «                               ||||¦  «        S )Nzno stream method found named r
   ©Úproxy_args_kwargsr   ©Úwrap_fx_proxy_clsrf   r   zExpected EventVariable, got Úcall_functionry   zExpected StreamVariable, got ri   ÚqueryÚcall_method©Ú
target_clsr¶   rÖ   ra   )Úwrap_fx_proxy)r¶   rÖ   )!rè   r­   rJ   Úutilsrñ   Úbuilderró   rI   r&   rÐ   ÚoutputÚcreate_proxyr$   r�   r‚   rf   r’   r   r‘   r.   ry   rt   rù   Ú'check_event_record_after_input_mutationr«   ra   r   r'   r   r   r   r¼   rö   )r–   r¶   rß   r   r    rñ   ró   Ú	event_argÚother_streamrù   Ú	event_varr(   r\   r¾   s                €r)   rö   zStreamVariable.call_method©  s�  ø€ õ �t”z 4Ñ(Ô(ð 	IÝ Ð!GÀÐ!GÐ!GÑHÔHÐHà-Ð-Ð-Ð-Ð-Ð-Ø.Ð.Ð.Ð.Ð.Ð.à�<ÒÐØ˜QœˆIÝ˜i­Ñ7Ô7ð WÝ$Ð%UÅDÈÁOÄOÐ%UÐ%UÑVÔVÐVØŒI×"Ò"ØÝ”	Ô!Ô,ØÔ,¨dÔ.DÐEØñ	ô ð õ $Ô*¨4Ñ0Ô0Ð0Ø�]Ò"Ð"Ø œ7ˆLÝ˜l­NÑ;Ô;ð Ý$ØHµD¸Ñ4FÔ4FÐHÐHñô ð ð ŒI×"Ò"ØÝ”	Ô!Ô-ØÔ'¨Ô)GÐHØñ	ô ð õ $Ô*¨4Ñ0Ô0Ð0Ø�]Ò"Ð"ØŒI×"Ò"ØÝ”	Ô!Ô4ØÔ'Ð)Øñ	ô ð õ $Ô*¨4Ñ0Ô0Ð0Ø�WŠ_ˆ_Ø$Ð$Ý+ØØ,�b”iÔ,Ø! 4ðØ*;Ð*;¸T¸FÀT¹MÈ6Ñ*RÔ*Rðð ð ðñ ô ð ð �^Ò#Ñ#Ø.Ð.Ð.Ð.Ð.Ð.àŒI×=Ò=½bÀÄ¹n¼nÑMÔMÐMØð �
 4¨¤7­MÑ:Ô:ð Ø  œG�	Ø!œ�Ø'Ô9��àœ
×/Ò/Ñ1Ô1�Ý;ØÝ!×BÒBÝ% bÑ)Ô)Õ+<¸RÑ+@Ô+@ñô ñô �ð ŒI×"Ò"ØÝ”	Ô!Ô.Ø˜dÔ4Ð5Øñ	ô ð ð !�=ØØ”i×,Ò,Ø#Ý0Ø �NØñ	ô ðñ ô ð õ ‰wŒw×"Ò" 2 t¨T°6Ñ:Ô:Ð:r+   c                 óš  — ddl m}m} ddlm} ddlm} t          |t          ¦  «        s |j	        |dk    ¦  «        S | j
        r( || j
                             |j        ¦  «        ¦  «         |j
        r( ||j
                             |j        ¦  «        ¦  «         ||         }t          j        | || j        |j        ¦  «        ¦  «        S )Nr
   rá   )Úcmp_name_to_op_mappingr   r   Ú__ne__)rå   râ   rã   rú   r  Úconstantr   rI   r.   r‘   r�   ræ   rç   r   Úbuildr­   )	r–   r¶   ÚotherÚoprâ   rã   r  r   Úop_fns	            r)   Úrichcompare_implzStreamVariable.richcompare_implÿ  sû   € Ø8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ø2Ð2Ð2Ð2Ð2Ð2Ø.Ð.Ð.Ð.Ð.Ð.å˜%¥Ñ0Ô0ð 	;ð +Ð#Ô*¨2°ª>Ñ:Ô:Ð:ØŒ;ð 	MØˆM˜$œ+×0Ò0°Ô1JÑKÔKÑLÔLÐLØŒ<ð 	NØˆM˜%œ,×1Ò1°,Ô2KÑLÔLÑMÔMÐMØ& rÔ*ˆÝÔ$ØØˆE�$”*˜eœkÑ*Ô*ñ
ô 
ð 	
r+   c                 ó   — | j         S r#   ©rÖ   r    s    r)   Úas_proxyzStreamVariable.as_proxy  rî   r+   c                 ó   — dS )Nztorch._CrN   r    s    r)   Úmodule_namezStreamVariable.module_name  s   € Øˆzr+   c                 ó   — dS )Nr-   rN   r    s    r)   Úfn_namezStreamVariable.fn_name  s   € Øˆxr+   Úcodegenr   c                 óÈ  ‡— | j         rt          d¦  «        ‚| j        �j‰                     ˆfd„¦  «         ‰                     ‰                     | j        ¦  «        ¦  «         ‰                     t          dd¦  «        ¦  «         d S d| j        › �}‰j	        j
                             || j        ¦  «        }‰                     ‰                     |d¬¦  «        ¦  «         d S )Nz2Stream should not have a source during reconstructc                  óX   •— ‰                       t          j        j        j        d¦  «        S ©Nr   r8   ©r  s   €r)   r=   z,StreamVariable.reconstruct.<locals>.<lambda>"  ó%   ø€ ˜×0Ò0Ý”MÔ7Ô@Ø2ñô € r+   r   FÚ_stream_T©Úadd)r�   rJ   r’   r>   Úappend_outputÚcreate_load_constr?   r   r2   r¶   rü   Úinstall_global_by_idr­   Úcreate_load_global©r–   r  Úprefixrß   s    `  r)   ÚreconstructzStreamVariable.reconstruct  sú   ø€ ð Œ;ð 	WÝ Ð!UÑVÔVÐVØÔ!Ð-Ø×!Ò!ðð ð ð ñô ð ð ×!Ò! '×";Ò";¸DÔ<RÑ"SÔ"SÑTÔTÐTØ×!Ò!Õ"6°q¸%Ñ"@Ô"@ÑAÔAÐAÐAÐAð . ¤Ð-Ð-ˆFØ”:Ô$×9Ò9¸&À$Ä*ÑMÔMˆDØ×!Ò! '×"<Ò"<¸TÀtÐ"<Ñ"LÔ"LÑMÔMÐMÐMÐMr+   c                 ó   — | S r#   rN   r    s    r)   r½   zStreamVariable.get_stream/  s   € Øˆr+   c                 ó.   ‡ ‡— dt           dddd fˆ ˆfd„}|S )NrG   r  r   r!   c                 ó"  •‡— ‰                      ˆfd„¦  «         ‰                      ˆfd„¦  «          ‰‰¦  «          ‰‰¦  «         ‰                     t          dd¦  «        ¦  «         ‰                     t          dd¦  «        ¦  «         d S )Nc                  óX   •— ‰                       t          j        j        j        d¦  «        S r6   r8   r  s   €r)   r=   zNStreamVariable.make_construct_in_graph_stream_fn.<locals>.fn.<locals>.<lambda>8  ó%   ø€ ˜×0Ò0Ý”MÔ7Ô@Ø0ñô € r+   c                  óX   •— ‰                       t          j        j        j        d¦  «        S )NÚbuild_stream©r9   r$   r:   rú   r<   r  s   €r)   r=   zNStreamVariable.make_construct_in_graph_stream_fn.<locals>.fn.<locals>.<lambda>>  s$   ø€ ˜×0Ò0Ý”MÔ'Ô0°.ñô € r+   r
   Fr   ©r>   r?   r   ©rG   r  r   r    s    `€€r)   Úfnz<StreamVariable.make_construct_in_graph_stream_fn.<locals>.fn6  ó¾   øø€ Ø×!Ò!ðð ð ð ñô ð ð ×!Ò!ðð ð ð ñô ð ð
 ˆG�D‰MŒMˆMØˆG�F‰OŒOˆOØ×!Ò!Õ"6°q¸%Ñ"@Ô"@ÑAÔAÐAØ×!Ò!Õ"6°q¸%Ñ"@Ô"@ÑAÔAÐAÐAÐAr+   ©r³   ©r   r    r,  s   `` r)   r/   z0StreamVariable.make_construct_in_graph_stream_fn2  óM   øø€ ð	B•cð 	B Kð 	B°Dð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð" ˆ	r+   r#   ©r  r   r!   NrÌ   )#r<   r¯   r°   r±   r$   r-   rÔ   rÐ   Ú__annotations__rÕ   rÏ   r	   r³   r   r™   rÈ   rê   Úobjectrí   Úlistr   rÎ   rö   r
  r  r  r  r!  r½   rÍ   r   r   r   r/   rÑ   rÒ   s   @r)   r.   r.   t  sV  ø€ € € € € € Ø;Ð;àœ,€M�4Ð&Ð&Ñ&ð '+Ð˜˜t™Ð*Ð*Ñ*ð )-ð	)ð )àð)ð Œ|ð)ð  ™:ð	)ð
 ð)ð 
ð)ð )ð )ð )ð )ð )ð,"˜Tð "ð "ð "ð "ð-Ø-ð-Ø58ð-à	ð-ð -ð -ð -ð -ð -ð"¨fð ð ð ð ðT;à'ðT;ð ðT;ð �?Ô#ð	T;ð
 �S˜/Ð)Ô*ðT;ð 
ðT;ð T;ð T;ð T;ð T;ð T;ðl
ð 
ð 
ð&˜%ð ð ð ð ð˜Sð ð ð ð ð˜ð ð ð ð ðNð Nð Nð Nð(ð ð ð ð ðØðØ%6ðà	�3˜Ð$ dÐ*Ô	+ðð ð ñ „\ðð ð ð ð r+   r.   c                   ó.   — e Zd ZdZej        j        ZdZdS )ÚCudaStreamVariablezMRepresents torch.cuda.Stream, preserving device-specific type and attributes.Úcuda_streamN)	r<   r¯   r°   r±   r$   rÆ   r-   rÔ   rÕ   rN   r+   r)   r6  r6  J  s&   € € € € € ØWÐWà”JÔ%€MØ'ÐÐÐr+   r6  c                   ó.   — e Zd ZdZej        j        ZdZdS )ÚXpuStreamVariablezLRepresents torch.xpu.Stream, preserving device-specific type and attributes.Ú
sycl_queueN)	r<   r¯   r°   r±   r$   Úxpur-   rÔ   rÕ   rN   r+   r)   r9  r9  Q  s&   € € € € € ØVÐVà”IÔ$€MØ&ÐÐÐr+   r9  Ú_stream_fn_to_variable_clsÚ	stream_fnc                 ó6   — t                                | ¦  «        S r#   )r<  Úget)r=  s    r)   Ú_get_stream_variable_clsr@  ^  s   € Ý%×)Ò)¨)Ñ4Ô4Ð4r+   c                   óL  ‡ — e Zd Zdedej        dedz  deddf
ˆ fd„Zdd	d
e	de
de	fd„Zdefd„Zdefd„Zdd	de
dee	         dee
e	f         de	f
d„Zdefd„Zedd	dee	         dee
e	f         dedef         fd„¦   «         Zedededeedgdf         fd„¦   «         Zdd„Zˆ xZS )r&   rÖ   r­   r’   Nr    r!   c                 óú   •— |�Id|j         j        v r;|j         j        d         |k    r%t          d|j         j        d         › d|› �¦  «        ‚ t          ¦   «         j        di |¤Ž || _        || _        || _        d S )NrØ   rÙ   rÚ   rN   )rÛ   rÜ   rJ   r¼   r™   rÖ   r­   r’   rÝ   s        €r)   r™   zEventVariable.__init__c  s—   ø€ ð Ð °E´J´OÐ!CÐ!CØŒzŒ˜Ô/°5Ò8Ð8Ý$ØX¨5¬:¬?¸?Ô+KÐXÐXÐQVÐXÐXñô ð ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒ
ØˆŒ
Ø!2ˆÔÐÐr+   r¶   r   r  r  c                 ó*   — ddl m}  || |||¦  «        S )Nr   )Úobject_richcompare)Úobject_protocolrD  )r–   r¶   r  r  rD  s        r)   r
  zEventVariable.richcompare_implt  s-   € ð 	8Ð7Ð7Ð7Ð7Ð7à!Ð! $¨¨E°2Ñ6Ô6Ð6r+   c                 ó   — t           j        S r#   )r$   r%   r    s    r)   rÈ   zEventVariable.python_type{  s
   € ÝŒ{Ðr+   c                 ó   — | j         S r#   rì   r    s    r)   rí   z*EventVariable.get_real_python_backed_value~  rî   r+   rß   r   c                 ó  — ddl m} ddlm} |dk    rkt                               |||¦  «        \  }}|j                             dt          j	        j
        j        | j        |fi ¦  «         t          j        d ¦  «        S |dk    r—t                               |||¦  «        \  }	}|j                             t!          |	j        ¦  «        ¦  «         |j                             dt          j	        j
        j        | j        |fi ¦  «         t          j        d ¦  «        S |dk    rK|j                             dt          j	        j
        j        | j        fi ¦  «         t          j        d ¦  «        S |d	k    r3 |t          | |j        j        d
|g || g|z   |¦  «        ¢R Ž ¬¦  «        S t)          | j        ¦  «        j        › dt)          | j        ¦  «        j        › d|› �}
t/          dt1          |¦  «        d|
› d�g t2          j        ¢¬¦  «         d S )Nr
   rð   r   rò   re   rô   r_   ri   rõ   rö   r÷   ú.zUnsupported event methodz#Dynamo doesn't support tracing the zC method. We currently support wait, record, synchronize, and query.)Úgb_typeÚcontextÚexplanationÚhints)rú   rñ   rû   ró   r&   Ú_get_stream_argrü   rý   r$   r�   r‚   rf   r’   r   r‘   rþ   r«   r­   ra   rj   rÐ   r¯   r°   r   rÏ   r   ÚSUPPORTABLE)r–   r¶   rß   r   r    rñ   ró   rC   r]   Ú
stream_argÚmethod_names              r)   rö   zEventVariable.call_method�  sx  € ð 	.Ð-Ð-Ð-Ð-Ð-Ø.Ð.Ð.Ð.Ð.Ð.à�6Š>ˆ>Ý+×;Ò;¸BÀÀfÑMÔM‰OˆAˆ|ØŒI×"Ò"ØÝ”	Ô!Ô,àÔ*Ø ðð ñô ð õ $Ô*¨4Ñ0Ô0Ð0Ø�XÒÐÝ'4×'DÒ'DÀRÈÈvÑ'VÔ'VÑ$ˆJ˜ØŒI×=Ò=½bÀÔAQÑ>RÔ>RÑSÔSÐSØŒI×"Ò"ØÝ”	Ô!Ô.àÔ*Ø ðð ñô ð õ $Ô*¨4Ñ0Ô0Ð0Ø�]Ò"Ð"ØŒI×"Ò"ØÝ”	Ô!Ô3ØÔ'Ð)Øñ	ô ð õ $Ô*¨4Ñ0Ô0Ð0Ø�WŠ_ˆ_Ø$Ð$Ý+ØØ,�b”iÔ,Ø! 4ðØ*;Ð*;¸T¸FÀT¹MÈ6Ñ*RÔ*Rðð ð ðñ ô ð õ ˜œ
Ñ#Ô#Ô.ÐWÐWµ°d´jÑ1AÔ1AÔ1NÐWÐWÐQUÐWÐWð õ Ø2Ý˜D™	œ	ðNÀ+ð Nð Nð NðÝ&Ô2ððñ ô ð ð ð r+   c                 ó   — | j         S r#   r  r    s    r)   r  zEventVariable.as_proxyÂ  rî   r+   r.   c                 ó¤   — d}|r	|d         }n|r|                      d¦  «        }|s"| j                             ¦   «         }||j        fS ||j        fS )a;  Returns (stream_variable, stream_index_for_op).

        The ambient current stream is registered at index 0 in the external
        object registry.  The inductor wrapper updates index 0 at runtime so
        that cudagraph capture sees the capture stream, not the stale
        trace-time default stream.
        Nr   r0   )r?  rÀ   r¥   r’   )r¶   r   r    rP  r˜   s        r)   rN  zEventVariable._get_stream_argÅ  sm   € ð ˆ
Øð 	.Ø˜aœˆJˆJØð 	.ØŸš HÑ-Ô-ˆJàð 	<ØÔ1×<Ò<Ñ>Ô>ˆJØ˜zÔ;Ð;Ð;à˜:Ô7Ð7Ð7r+   r   c                 ó.   ‡ ‡— dt           dddd fˆ ˆfd„}|S )NrG   r  r   r!   c                 ó"  •‡— ‰                      ˆfd„¦  «         ‰                      ˆfd„¦  «          ‰‰¦  «          ‰‰¦  «         ‰                     t          dd¦  «        ¦  «         ‰                     t          dd¦  «        ¦  «         d S )Nc                  óX   •— ‰                       t          j        j        j        d¦  «        S r6   r8   r  s   €r)   r=   zLEventVariable.make_construct_in_graph_event_fn.<locals>.fn.<locals>.<lambda>ä  r&  r+   c                  óX   •— ‰                       t          j        j        j        d¦  «        S )NÚbuild_eventr)  r  s   €r)   r=   zLEventVariable.make_construct_in_graph_event_fn.<locals>.fn.<locals>.<lambda>ê  s$   ø€ ˜×0Ò0Ý”MÔ'Ô0°-ñô € r+   r
   Fr   r*  r+  s    `€€r)   r,  z:EventVariable.make_construct_in_graph_event_fn.<locals>.fnâ  r-  r+   r.  r/  s   `` r)   r'   z.EventVariable.make_construct_in_graph_event_fnÞ  r0  r+   r  c                 ó¸  ‡— | j         rt          d¦  «        ‚| j        �j‰                     ˆfd„¦  «         ‰                     ‰                     | j        ¦  «        ¦  «         ‰                     t          dd¦  «        ¦  «         d S d}‰j        j	         
                    || j        ¦  «        }‰                     ‰                     |d¬¦  «        ¦  «         d S )Nz1Event should not have a source during reconstructc                  óX   •— ‰                       t          j        j        j        d¦  «        S r  r8   r  s   €r)   r=   z+EventVariable.reconstruct.<locals>.<lambda>ü  r  r+   r   FÚ_eventTr  )r�   rJ   r’   r>   r  r  r?   r   r¶   rü   r  r­   r  r  s    `  r)   r!  zEventVariable.reconstructõ  sî   ø€ ð Œ;ð 	VÝ Ð!TÑUÔUÐUØÔ!Ð-Ø×!Ò!ðð ð ð ñô ð ð ×!Ò! '×";Ò";¸DÔ<RÑ"SÔ"SÑTÔTÐTØ×!Ò!Õ"6°q¸%Ñ"@Ô"@ÑAÔAÐAÐAÐAàˆFØ”:Ô$×9Ò9¸&À$Ä*ÑMÔMˆDØ×!Ò! '×"<Ò"<¸TÀtÐ"<Ñ"LÔ"LÑMÔMÐMÐMÐMr+   r1  )r<   r¯   r°   r	   r$   r%   r³   r   r™   r   rÏ   r
  rÐ   rÈ   r3  rí   r4  rÎ   rö   r  rÍ   ÚtuplerN  r   r   r   r'   r!  rÑ   rÒ   s   @r)   r&   r&   b  s  ø€ € € € € ð3àð3ð Œ{ð3ð  ™:ð	3ð
 ð3ð 
ð3ð 3ð 3ð 3ð 3ð 3ð"7Ø-ð7Ø6Eð7ØKNð7à	ð7ð 7ð 7ð 7ð˜Tð ð ð ð ð¨fð ð ð ð ð?à'ð?ð ð?ð �?Ô#ð	?ð
 �S˜/Ð)Ô*ð?ð 
ð?ð ?ð ?ð ?ðB˜%ð ð ð ð ð ð8Ø'ð8à�?Ô#ð8ð �S˜/Ð)Ô*ð8ð 
Ð Ð$Ô	%ð	8ð 8ð 8ñ „\ð8ð0 ðØðØ%6ðà	�3˜Ð$ dÐ*Ô	+ðð ð ñ „\ðð,Nð Nð Nð Nð Nð Nð Nð Nr+   r&   )Xr“   Úcollections.abcr   Útypingr   r   r$   Útorch._dynamo.variables.dictsr   Útorch._dynamo.variables.listsr   Útorch.fxr   r	   Ú r   Úbytecode_transformationr   Úexcr   r   r;   r   r   r   r   r   r�   r   Úbaser   r  r   Úctx_managerr   Úlazyr   Útorch._dynamo.symbolic_convertr   r  r   Útorch._library.custom_opsr   ÚTensorr³   r*   r\  r1   r2   r@   rF   r-   rK   r%   rM   rV   Úregister_fakerC   r�   r‚   Úforkrƒ   rZ   Újoinra   rf   rj   rÏ   rq   rt   ry   r…   r‰   r�   rµ   r.   r6  r9  rÆ   rE   r;  r<  rÎ   r3  rÐ   r2  r@  r&   rN   r+   r)   ú<module>rn     s…
  ðØ Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  à €€€Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +à  Ð  Ð  Ð  Ð  Ð  Ø :Ð :Ð :Ð :Ð :Ð :Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ð ð ð ð ð ð ð )Ð (Ð (Ð (Ð (Ð (Ø !Ð !Ð !Ð !Ð !Ð !Ø &Ð &Ð &Ð &Ð &Ð &Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø %Ð %Ð %Ð %Ð %Ð %ð ð $ØHÐHÐHÐHÐHÐHà#Ð#Ð#Ð#Ð#Ð#à /Ð /Ð /Ð /Ð /Ð /ð 
Œ€ð�Sð  Cð ¨Cð ð ð ð ð�e˜C”jð ¨Cð °Cð ð ð ð ð5 E¤Lð 5°kð 5Àdð 5ð 5ð 5ð 5ð˜uœ|ð °ð ð ð ð ð ð ¨¬ð ð ð ð ð˜sð  u¤{ð ð ð ð ð €ˆ?¨Ð,Ñ,Ô,ðAØðAàðAð 
ðAð Að Añ -Ô,ðAð Ôð	Øð	àð	ð 
ð	ð 	ð 	ñ Ôð	ð €�”	Ô!Ô&Ô.Ñ /Ô /Ð /ð €ˆ?¨Ð,Ñ,Ô,ðA˜Cð A¨3ð A°4ð Að Að Añ -Ô,ðAð Ôð	Øð	àð	ð 
ð	ð 	ð 	ñ Ôð	ð €�”	Ô!Ô&Ô.Ñ /Ô /Ð /ð €Ð"°Ð4Ñ4Ô4ð˜cð °ð ¸ð ð ð ñ 5Ô4ðð Ôð	Øð	àð	ð 
ð	ð 	ð 	ñ Ôð	ð €�”	Ô!Ô.Ô6Ñ 7Ô 7Ð 7ð €Ð ¨rÐ2Ñ2Ô2ð˜Cð ¨sð °tð ð ð ñ 3Ô2ðð Ôð	Øð	àð	ð 
ð	ð 	ð 	ñ Ôð	ð €�”	Ô!Ô,Ô4Ñ 5Ô 5Ð 5ð €Ð'°bÐ9Ñ9Ô9ð 3ð ¨4ð ð ð ñ :Ô9ðð
 Ô ð	�3ð 	˜4ð 	ð 	ð 	ñ !Ô ð	ð €�”	Ô!Ô3Ô;Ñ <Ô <Ð <ð €Ð(°rÐ:Ñ:Ô:ðK Cð K°sð K¸tð Kð Kð Kñ ;Ô:ðKð Ô!ð	�3ð 	 cð 	¨dð 	ð 	ð 	ñ "Ô!ð	ð €�”	Ô!Ô4Ô<Ñ =Ô =Ð =ð €Ð(°rÐ:Ñ:Ô:ð Sð ¨Tð ð ð ñ ;Ô:ðð
 Ô!ð	�Cð 	˜Dð 	ð 	ð 	ñ "Ô!ð	ð €�”	Ô!Ô4Ô<Ñ =Ô =Ð =ð €Ð!°Ð3Ñ3Ô3ð# cð #À3ð #È4ð #ð #ð #ñ 4Ô3ð#ð Ôð	Øð	àð	ð 
ð	ð 	ð 	ñ Ôð	ð €�”	Ô!Ô-Ô5Ñ 6Ô 6Ð 6ð €Ð"°Ð4Ñ4Ô4ð	MØð	MØ-0ð	MØ>C¼lð	Mà	ð	Mð 	Mð 	Mñ 5Ô4ð	Mð Ôð	Øð	àð	ð ”ð	ð 
ð		ð 	ð 	ñ Ôð	ð €�”	Ô!Ô.Ô6Ñ 7Ô 7Ð 7ð €Ð#°"Ð5Ñ5Ô5ð=˜%œ,ð =°cð =¸dð =ð =ð =ñ 6Ô5ð=ð Ôð	ØŒLð	àð	ð 
ð	ð 	ð 	ñ Ôð	ð €�”	Ô!Ô/Ô7Ñ 8Ô 8Ð 8ð6 ð 6 ð 6 ð 6 ð 6 ñ 6 ô 6 ð 6 ðr/ð /ð /ð /ð /Ð7ñ /ô /ð /ðdSð Sð Sð Sð SÐ*ñ Sô Sð Sðl(ð (ð (ð (ð (˜ñ (ô (ð (ð'ð 'ð 'ð 'ð '˜ñ 'ô 'ð 'ð 
„JÔÐ1Ø	„IÔÐ/ðBÐ ˜D ¨¨nÔ)=Ð!=Ô>ð ð ñ ð5¨ð 5°4¸Ô3GÈ$Ñ3Nð 5ð 5ð 5ð 5ðdNð dNð dNð dNð dN�Oñ dNô dNð dNð dNð dNr+   