Ë
    ÃÓ^jæ�  ã                  ó  — 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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mZmZ d dlmZmZmZ d dl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$ d	dl%m&Z& d	dlm'Z'm(Z( dƒd„Z) ejT                  e+«      Z,ejZ                  j]                  e+d«      Z/ e0d«      Z1d„d„Z2 G d„ de3«      Z4d…d„Z5d†d„Z6	 	 	 	 	 	 d‡d„Z7 G d„ de3«      Z8 G d„ de8«      Z9 G d„ de8«      Z: G d „ d!e8«      Z; G d"„ d#e;«      Z< G d$„ d%e;«      Z= G d&„ d'e;«      Z> G d(„ d)e;«      Z? G d*„ d+e;«      Z@ G d,„ d-e;«      ZA G d.„ d/e8«      ZB G d0„ d1e8«      ZC G d2„ d3e8«      ZD G d4„ d5e8«      ZE G d6„ d7e8«      ZF G d8„ d9eF«      ZG G d:„ d;e8«      ZH G d<„ d=e8«      ZI G d>„ d?e8«      ZJ G d@„ dAe8«      ZK G dB„ dCe8«      ZL G dD„ dEe«      ZM G dF„ dGe8«      ZN G dH„ dIe8«      ZO G dJ„ dKe8«      ZP G dL„ dMe8«      ZQ G dN„ dOeR«      ZS G dP„ dQe8«      ZT G dR„ dSe8«      ZU G dT„ dUeU«      ZV G dV„ dWeU«      ZW G dX„ dYeW«      ZX G dZ„ d[eW«      ZY G d\„ d]eU«      ZZ G d^„ d_eU«      Z[ G d`„ daeU«      Z\ G db„ dceU«      Z] G dd„ deeU«      Z^e_eVe`eWeaeXebeZeceYede[e3e\eee]efe^i	Zgdˆdf„Zhdddgœ	 	 	 	 	 	 	 	 	 d‰dh„ZidŠdi„ZjdŠdj„Zkd‹dk„ZlejÚ                  jÜ                  jÞ                  ejÚ                  jÜ                  jà                  ejÚ                  jÜ                  jâ                  ejÚ                  jÜ                  jä                  ejÚ                  jÜ                  jæ                  fZt	 	 	 	 	 	 	 	 	 	 	 	 	 	 dŒdl„Zu	 	 	 	 	 	 	 	 	 	 d�dm„Zv ed	¬n«      dŽdo„«       Zwd�dp„Zx ey«       Zzezdqdqdrœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d�ds„Z{ G dt„ du«      Z|d‘dv„Z}d’d“dw„Z~	 	 	 	 	 	 d”dx„Zd•dy„Z€d•dz„Z�	 d–	 	 	 	 	 d—d{„Z‚d˜d|„Zƒd™d}„Z„dšd~„Z…	 	 d›	 	 	 	 	 	 	 	 	 dœd„Z†d�d€„Z‡džd�„Zˆ	 	 d›	 	 	 	 	 	 	 	 	 dœd‚„Z‰y)Ÿé    )ÚannotationsN)ÚautoÚEnum)Ú	lru_cache)ÚPath)Ú
format_excÚformat_listÚFrameSummaryÚStackSummary)ÚAnyÚNoReturnÚTYPE_CHECKING)Úget_file_path_2é   )Úconfig)Úcounters)ÚVariableTracker)Ú	CompileId)ÚDynamoTracerOutput)ÚInstructionTranslatorBase)ÚDynamoFrameTypeÚFrameExecStrategyc                ó,   — d| j                  dd«      z   S )NzhFor more information about this error, see: https://pytorch.org/docs/main/generated/exportdb/index.html#Ú_ú-)Úreplace)Ú	case_names    ú\/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_dynamo/exc.pyÚexportdb_error_messager   :   s"   € ð	Ià
×
Ñ
˜C Ó
%ñ	&ðó    Úgraph_breaks)Ú_torch_dynamo_tracer_outputÚfirst_useful_frameÚframe_exec_strategyc                ó   — | S ©N© ©Úargss    r   Ú_safe_exception_argsr*   O   s   € Ø€Kr    c                  ó,   ‡ — e Zd ZU ded<   dˆ fd„Zˆ xZS )Ú_SerializedExceptionÚstrÚ_dynamo_original_exception_typec                óš   •— t         ‰| �  t        |«      «       t        |«      j                  › dt        |«      j
                  › �| _        y )Nú.)ÚsuperÚ__init__r-   ÚtypeÚ
__module__Ú__qualname__r.   )ÚselfÚexcÚ	__class__s     €r   r2   z_SerializedException.__init__V   s@   ø€ Ü‰Ñœ˜S›Ô"ä�C‹y×#Ñ#Ð$ A¤d¨3£i×&<Ñ&<Ð%=Ð>ð 	Õ,r    )r7   ÚBaseExceptionÚreturnÚNone©Ú__name__r4   r5   Ú__annotations__r2   Ú__classcell__©r8   s   @r   r,   r,   S   s   ø… Ø%(Ó(÷
ñ 
r    r,   c                ó   — t        | «      S r&   )r,   )r7   s    r   Ú_safe_inner_exceptionrB   ]   s   € Ü Ó$Ð$r    c                óÜ   — i }| j                  «       D ]V  \  }}|t        v st        |t        j                  «      rd ||<   Œ.|dk(  rt        |t
        «      rt        |«      ||<   ŒR|||<   ŒX |S )NÚinner_exception)ÚitemsÚ_EXCEPTION_STATE_ATTRS_TO_DROPÚ
isinstanceÚtypesÚ	FrameTyper9   rB   )ÚstateÚresultÚnameÚvalues       r   Ú_safe_exception_staterN   a   so   € Ø€FØ—{‘{“}ò !‰ˆˆeØÔ1Ñ1´ZÀÄuÇÁÔ5WØˆF�4ŠLØÐ&Ò&¬:°e¼]Ô+KÜ0°Ó7ˆF�4ŠLà ˆF�4ŠLð!ð €Mr    ÚTorchDynamoExceptionc                óT   — | j                  | «      }t        j                  |g|¢­Ž  |S r&   )Ú__new__r9   r2   )Úexc_typer)   r7   s      r   Ú#_reconstruct_torch_dynamo_exceptionrS   m   s,   € ð ×
Ñ
˜8Ó
$€CÜ×Ñ˜3Ð& Ó&Ø€Jr    c                  ó<   ‡ — e Zd ZdZdˆ fd„Zdd„Zdd„Zd	d„Zˆ xZS )
rO   a6  Base exception class for all TorchDynamo-specific exceptions.

    Attributes:
        _torch_dynamo_tracer_output: Optional tracer output attached to the exception
        frame_exec_strategy: Optional frame execution strategy to control how convert_frame
            should handle this exception. When set, convert_frame will use this strategy
            instead of the default behavior. This allows exceptions to signal specific
            execution strategies (e.g., SKIP, RUN_ONLY) without requiring separate
            exception types for control flow.
    c                ó@   •— t        ‰| �  |i |¤Ž d | _        d | _        y r&   )r1   r2   r"   r$   )r6   r)   Úkwargsr8   s      €r   r2   zTorchDynamoException.__init__�   s%   ø€ Ü‰Ñ˜$Ð) &Ò)ØFJˆÔ(Ø=AˆÕ r    c                ól   — t         t        | «      t        | j                  «      f| j	                  «       fS r&   )rS   r3   r*   r)   Ú__getstate__©r6   s    r   Ú
__reduce__zTorchDynamoException.__reduce__†   s1   € ä/Ü�$‹ZÔ-¨d¯i©iÓ8Ð9Ø×ÑÓð
ð 	
r    c                ó,   — t        | j                  «      S r&   )rN   Ú__dict__rY   s    r   rX   z!TorchDynamoException.__getstate__�   s   € Ü$ T§]¡]Ó3Ð3r    c               ó@   — |�| j                   j                  |«       y y r&   )r\   Úupdate)r6   rJ   s     r   Ú__setstate__z!TorchDynamoException.__setstate__�   s   € ØÐØ�M‰M× Ñ  Õ'ð r    )r)   r   rV   r   r:   r;   )r:   útuple[Any, ...]©r:   údict[str, Any])rJ   zdict[str, Any] | Noner:   r;   )	r=   r4   r5   Ú__doc__r2   rZ   rX   r_   r?   r@   s   @r   rO   rO   u   s   ø„ ñ	õBó

ó4÷(r    c                  ó   — e Zd Zy)ÚInternalTorchDynamoErrorN©r=   r4   r5   r'   r    r   re   re   •   ó   „ Ør    re   c                  ó   — e Zd Zy)ÚResumePrologueTracingErrorNrf   r'   r    r   ri   ri   ™   rg   r    ri   c                  ó2   ‡ — e Zd ZU ded<   ddœdˆ fd„Zˆ xZS )ÚRestartAnalysisú
str | NoneÚrestart_reasonN)rm   c               ó,   •— || _         t        ‰| �  |Ž  y r&   )rm   r1   r2   )r6   rm   r)   r8   s      €r   r2   zRestartAnalysis.__init__    s   ø€ Ø,ˆÔÜ‰Ñ˜$Òr    )r)   r   rm   rl   r:   r;   r<   r@   s   @r   rk   rk   �   s   ø… ØÓà@D÷  ó  r    rk   c                  ó   — e Zd Zy)ÚSpeculationRestartAnalysisNrf   r'   r    r   rp   rp   ¥   rg   r    rp   c                  ó   — e Zd ZdZy)ÚAutogradGradRestartAnalysiszŒRaised when autograd.grad consumed grad_fns that are returned.

    On restart, autograd.grad will graph break instead of being traced.
    N©r=   r4   r5   rc   r'   r    r   rr   rr   ©   s   „ òr    rr   c                  ó   — e Zd ZdZy)ÚRequiresGradRestartAnalysisz×Raised when a source-less requires_grad_() intermediate leaks as output.

    On restart, requires_grad_() will graph break instead of being traced,
    preserving partial acceleration for code before the call.
    Nrs   r'   r    r   ru   ru   °   s   „ òr    ru   c                  ó   — e Zd Zy)ÚUnspecializeRestartAnalysisNrf   r'   r    r   rw   rw   ¸   rg   r    rw   c                  ó   — e Zd Zy)Ú CompileCollectiveRestartAnalysisNrf   r'   r    r   ry   ry   ¼   rg   r    ry   c                  ó   — e Zd Zy)ÚTensorifyScalarRestartAnalysisNrf   r'   r    r   r{   r{   À   rg   r    r{   c                  ó   — e Zd Zy)Ú	SkipFrameNrf   r'   r    r   r}   r}   È   rg   r    r}   c                  ó"   ‡ — e Zd Zddˆ fd„Zˆ xZS )ÚTorchRuntimeErrorc                ó    •— t         ‰| �  |«       || _        |�|| _        y t        j                  j
                  j                  «       | _        y r&   ©r1   r2   ÚmsgÚtorchÚ_guardsÚTracingContextÚextract_stackÚ
real_stack©r6   r‚   r‡   r8   s      €r   r2   zTorchRuntimeError.__init__Í   óJ   ø€ Ü‰Ñ˜ÔØˆŒð Ð%ð ð 	�ô —‘×-Ñ-×;Ñ;Ó=ð 	�r    r&   ©r‚   r-   r‡   úStackSummary | Noner:   r;   ©r=   r4   r5   r2   r?   r@   s   @r   r   r   Ì   ó   ø„ ÷
ò 
r    r   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚInvalidBackendc                ó,   •— t         ‰| �  d|›d�«       y )NzInvalid backend: z=, see `torch._dynamo.list_backends()` for available backends.)r1   r2   )r6   rL   r8   s     €r   r2   zInvalidBackend.__init__Ø   s   ø€ Ü‰ÑØ ˜xÐ'dÐeõ	
r    )rL   r-   r:   r;   rŒ   r@   s   @r   r�   r�   ×   s   ø„ ÷
ñ 
r    r�   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚResetRequiredc                óJ   •— t         ‰| �  t        j                  d«      «       y )NzÃ
                Must call `torch._dynamo.reset()` before changing backends.  Detected two calls to
                `torch.compile()` with a different backend compiler arguments.
                )r1   r2   ÚtextwrapÚdedent)r6   r8   s    €r   r2   zResetRequired.__init__ß   s!   ø€ Ü‰ÑÜ�O‰Oðóõ	
r    ©r:   r;   rŒ   r@   s   @r   r’   r’   Þ   s   ø„ ÷
ñ 
r    r’   c                  ó8   ‡ — e Zd Z	 	 	 	 	 	 	 	 dˆ fd„Zdd„Zˆ xZS )ÚShortenTracebackc               ó2   •— t        ‰| �  |i |¤Ž || _        y r&   )r1   r2   r#   )r6   r#   r)   rV   r8   s       €r   r2   zShortenTraceback.__init__ë   s   ø€ ô 	‰Ñ˜$Ð) &Ò)Ø"4ˆÕr    c                ó  — | j                   }| j                  �|�t        j                  r| S |j                  | j                  ur2|j
                  }|€t        d«      ‚|j                  | j                  urŒ2| j                  |«      S )Nz#internal error, please report a bug)Ú__traceback__r#   r   ÚverboseÚtb_frameÚtb_nextÚAssertionErrorÚwith_traceback)r6   Útbs     r   Úremove_dynamo_framesz%ShortenTraceback.remove_dynamo_framesñ   s{   € Ø×ÑˆØ×"Ñ"Ð*¨b¨j¼F¿NºNØˆKØ�k‰k ×!8Ñ!8Ñ8Ø—‘ˆBØˆzÜ$Ð%JÓKÐKð �k‰k ×!8Ñ!8Ò8ð ×"Ñ" 2Ó&Ð&r    )r)   r   r#   útypes.FrameType | NonerV   r   r:   r;   )r:   ztyping.Self)r=   r4   r5   r2   r¢   r?   r@   s   @r   r˜   r˜   ê   s-   ø„ ð5Øð5Ø.Dð5ØPSð5à	õ5÷'r    r˜   c                  ó0   ‡ — e Zd Z	 	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )ÚBackendCompilerFailedc                óª   •— t        |dd«      | _        || _        d| j                  ›dt        |«      j                  › d|› �}t
        ‰| �  ||¬«       y )Nr=   ú?zbackend=z	 raised:
z: )r#   )ÚgetattrÚbackend_namerD   r3   r=   r1   r2   )r6   Ú
backend_fnrD   r#   r‚   r8   s        €r   r2   zBackendCompilerFailed.__init__ý   s_   ø€ ô $ J°
¸CÓ@ˆÔØ.ˆÔØ˜×*Ñ*Ð-¨Z¼¸_Ó8M×8VÑ8VÐ7WÐWYÐZiÐYjÐkˆÜ‰Ñ˜Ð1CÐÕDr    )rª   r   rD   Ú	Exceptionr#   r£   r:   r;   rŒ   r@   s   @r   r¥   r¥   ü   s9   ø„ ð	Eàð	Eð #ð	Eð 3ð		Eð
 
÷	Eñ 	Er    r¥   c                  óV   ‡ — e Zd Z	 	 ddddœ	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Zdd„Zd	d
d„Zˆ xZS )ÚUnsupportedN)r   r‡   c               óì   •— t         ‰| �  |«       |s(t        j                  j                  j                  «       }|| _        || _        || _        d | _	        | j                  «        || _        d| _        y ©NF)r1   r2   rƒ   r„   r…   r†   r‡   r‚   Ú
skip_frameÚcategoryÚadd_to_statsÚgb_typeÚlogged)r6   r‚   r³   r°   r   r‡   r8   s         €r   r2   zUnsupported.__init__  sc   ø€ ô 	‰Ñ˜ÔÙÜŸ™×5Ñ5×CÑCÓEˆJØ$ˆŒØˆŒØ$ˆŒØ$(ˆŒØ×ÑÔØ#*ˆŒØˆ�r    c                ó  — | j                   €t        d«      ‚t        | j                      | j                  xx   dz  cc<   t        | j                      | j                     dk  rt        | j                      | j                  = y y )Nz/category must be set before removing from statsr   r   )r±   rŸ   r   r‚   rY   s    r   Úremove_from_statszUnsupported.remove_from_stats$  si   € Ø�=‰=Ð Ü Ð!RÓSÐSÜ�—‘Ñ §¡Ó)¨QÑ.Ó)Ü�D—M‘MÑ" 4§8¡8Ñ,°Ò1Ü˜Ÿ™Ñ'¨¯©Ñ1ð 2r    c                óN   — || _         t        |   | j                  xx   dz  cc<   y )Nr   )r±   r   r‚   )r6   r±   s     r   r²   zUnsupported.add_to_stats+  s"   € Ø ˆŒÜ�Ñ˜4Ÿ8™8Ó$¨Ñ)Ô$r    )Ú F)r‚   r-   r³   r-   r°   Úboolr   rl   r‡   r‹   r:   r;   r–   )Úunimplemented)r±   r-   r:   r;   )r=   r4   r5   r2   r¶   r²   r?   r@   s   @r   r­   r­     sf   ø„ ð
 Ø ðð !%Ø*.ñàðð ð	ð
 ðð ðð (ðð 
õó*2÷*ð *r    r­   c                  ó   — e Zd Zy)Ú$UnknownPropertiesDuringBackwardTraceNrf   r'   r    r   r¼   r¼   0  rg   r    r¼   c                  ó   — e Zd Zy)ÚRecompileErrorNrf   r'   r    r   r¾   r¾   4  rg   r    r¾   c                  ó   — e Zd Zy)ÚInfiniteGeneratorErrorNrf   r'   r    r   rÀ   rÀ   8  ó   „ àr    rÀ   c                  ó   — e Zd ZdZy)ÚCondOpArgsMismatchErrorz?
    Internal error from cond() due to arguments mismatch.
    Nrs   r'   r    r   rÃ   rÃ   =  s   „ òr    rÃ   c                  ó|   — e Zd Z e«       Z e«       Z e«       Z e«       Z e«       Z e«       Z	 e«       Z
 e«       Zy)ÚUserErrorTypeN)r=   r4   r5   r   ÚDYNAMIC_CONTROL_FLOWÚANTI_PATTERNÚSTANDARD_LIBRARYÚCONSTRAINT_VIOLATIONÚDYNAMIC_DIMÚINVALID_INPUTÚINVALID_OUTPUTÚ*UNSUPPORTED_ALIASED_MUTATED_DYNAMIC_INPUTSr'   r    r   rÅ   rÅ   C  s>   „ Ù›6ÐÙ“6€LÙ“vÐÙ›6ÐÙ“&€KÙ“F€MÙ“V€NÙ15³Ñ.r    rÅ   c                  ó2   ‡ — e Zd Z	 d	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )Ú	UserErrorc                ój  •— |�Qt        |t        «      st        dt        |«      › �«      ‚|j	                  d«      r|dz  }n|dz  }|t        |«      z  }t        ‰| �  |«       t        j                  j                  j                  «       | _        d| _        d| _        || _        || _        || _        y)aG  
        Type of errors that would be valid in Eager, but not supported in TorchDynamo.
        The error message should tell user about next actions.

        error_type: Type of user error
        msg: Actionable error message
        case_name: (Optional) Unique name (snake case) for the usage example in exportdb.
        Nzcase_name must be a str, got r0   ú ú
F)rG   r-   rŸ   r3   Úendswithr   r1   r2   rƒ   r„   r…   r†   r‡   r°   r´   Ú
error_typer‚   Úmessage)r6   rÔ   r‚   r   r8   s       €r   r2   zUserError.__init__O  s¥   ø€ ð Ð Ü˜i¬Ô-Ü$Ð'DÄTÈ)Ã_ÐDUÐ%VÓWÐWØ�|‰|˜CÔ Ø�s‘
‘à�t‘�ØÔ)¨)Ó4Ñ4ˆCÜ‰Ñ˜ÔÜŸ-™-×6Ñ6×DÑDÓFˆŒØˆŒØˆŒØ$ˆŒØˆŒØˆ�r    r&   )rÔ   rÅ   r‚   r-   r   rl   r:   r;   rŒ   r@   s   @r   rÏ   rÏ   N  s0   ø„ àKOðØ'ðØ.1ðØ>Hðà	÷ñ r    rÏ   c                  ó"   ‡ — e Zd Zddˆ fd„Zˆ xZS )ÚStepUnsupportedc                ó¢   •— t         ‰| �  |«       || _        |s(t        j                  j
                  j                  «       }|| _        d| _        y r¯   )	r1   r2   r‚   rƒ   r„   r…   r†   r‡   r´   rˆ   s      €r   r2   zStepUnsupported.__init__m  s@   ø€ Ü‰Ñ˜ÔØˆŒÙÜŸ™×5Ñ5×CÑCÓEˆJØ$ˆŒØˆ�r    r&   rŠ   rŒ   r@   s   @r   r×   r×   l  s   ø„ ÷ò r    r×   c                  ó   — e Zd Zy)ÚUnsafeScriptObjectErrorNrf   r'   r    r   rÚ   rÚ   v  rg   r    rÚ   c                  ó"   ‡ — e Zd Zddˆ fd„Zˆ xZS )ÚUncapturedHigherOrderOpErrorc                ó    •— t         ‰| �  |«       || _        |�|| _        y t        j                  j
                  j                  «       | _        y r&   r�   rˆ   s      €r   r2   z%UncapturedHigherOrderOpError.__init__{  r‰   r    r&   rŠ   rŒ   r@   s   @r   rÜ   rÜ   z  r�   r    rÜ   c                  ó   — e Zd Zy)ÚFailOnRecompileLimitHitNrf   r'   r    r   rß   rß   ˆ  rg   r    rß   c                  ó   — e Zd Zy)ÚPackageErrorNrf   r'   r    r   rá   rá   Œ  rg   r    rá   c                  ó4   ‡ — e Zd Zddœ	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )ÚObservedExceptionN©r‡   c               ó’   •— t        ‰| �  |i |¤Ž |�|| _        y t        j                  j                  j                  «       | _        y r&   )r1   r2   rƒ   r„   r…   r†   r‡   ©r6   r‡   r)   rV   r8   s       €r   r2   zObservedException.__init__’  sJ   ø€ ô 	‰Ñ˜$Ð) &Ò)ð Ð%ð ð 	�ô —‘×-Ñ-×;Ñ;Ó=ð 	�r    ©r)   r   r‡   r‹   rV   r   r:   r;   rŒ   r@   s   @r   rã   rã   �  s3   ø„ ð =Añ
Øð
Ø&9ð
ØLOð
à	÷
ñ 
r    rã   c                  ó@   ‡ — e Zd ZU ded<   ddœ	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )ÚObservedUserStopIterationz
Any | NonerM   Nrä   c               óh   •— t         ‰| �  d|¬«       t        |«      dkD  r|d   | _        y d | _        y )Nzunhandled `raise StopIteration`rä   r   )r1   r2   ÚlenrM   ræ   s       €r   r2   z"ObservedUserStopIteration.__init__£  s5   ø€ ô 	‰ÑÐ:ÀzÐÔRÜˆt‹9�qŠ=Ø˜a™ˆD�JàˆD�Jr    rç   r<   r@   s   @r   ré   ré   �  s9   ø… àÓð
 =AñØðØ&9ðØLOðà	÷ñ r    ré   c                  ó   — e Zd Zy)ÚObservedLookupErrorNrf   r'   r    r   rí   rí   ­  rÁ   r    rí   c                  ó   — e Zd Zy)ÚObservedIndexErrorNrf   r'   r    r   rï   rï   ²  rÁ   r    rï   c                  ó   — e Zd Zy)ÚObservedKeyErrorNrf   r'   r    r   rñ   rñ   ·  rÁ   r    rñ   c                  ó   — e Zd Zy)ÚObservedGeneratorExitNrf   r'   r    r   ró   ró   ¼  rg   r    ró   c                  ó   — e Zd Zy)ÚObservedAttributeErrorNrf   r'   r    r   rõ   rõ   À  rÁ   r    rõ   c                  ó   — e Zd Zy)ÚObservedRuntimeErrorNrf   r'   r    r   r÷   r÷   Å  rÁ   r    r÷   c                  ó   — e Zd Zy)ÚObservedNotImplementedErrorNrf   r'   r    r   rù   rù   Ê  rg   r    rù   c                  ó   — e Zd Zy)ÚObservedTypeErrorNrf   r'   r    r   rû   rû   Î  rÁ   r    rû   c                óŠ   — | t         vr3t        | dt        | «      «      }t        d|› d�t        fi «      t         | <   t         |    S )Nr=   ÚObservedÚError)Úobserved_exception_mapr¨   r-   r3   rã   )rR   rL   s     r   Úget_dynamo_observed_exceptionr   à  sN   € ØÔ-Ñ-Ü�x ¬S°«]Ó;ˆÜ+/Ø�t�f˜EÐ"Ô%6Ð$8¸"ó,
Ô˜xÑ(ô " (Ñ+Ð+r    )r)   rV   c               ó¤  — ddl m} ddlm} |r2|D �cg c]&  }t	        |t
        «      r|j                  ||«      n|‘Œ( }}ng }|j                  || «      j                  |||xs i «      }t	        ||«      st        dt        |«      › �«      ‚|j                  |«       |j                  j                  |«       t        | «      }	|r |	|Ž ‚|	‚c c}w )Nr   )ÚExceptionVals)ÚSourcelessBuilderzexpected ExceptionVals, got )Úsymbolic_convertr  Úvariables.builderr  rG   r-   ÚcreateÚcall_functionrŸ   r3   Ú_attach_traceback_to_exceptionÚexn_vt_stackÚset_current_exceptionr   )
rR   Útxr)   rV   r  r  ÚargÚargs_Úexception_vtÚ
raised_excs
             r   Úraise_observed_exceptionr  ê  sá   € õ 0Ý4áð ö
àô 2<¸CÄÔ1EÐ×$Ñ$ R¨Ô-È3ÑNð
ˆñ 
ð
 (*ˆð %×+Ñ+¨B°Ó9×GÑGØ
ˆE�6’<˜Ró€Lô �l MÔ2ÜÐ;¼DÀÓ<NÐ;OÐPÓQÐQØ×%Ñ% lÔ3Ø‡O�O×)Ñ)¨,Ô7Ü.¨xÓ8€JáÙ˜%Ð Ð Ø
Ðùò)
s   “+Cc                ó*   — t        t        | |g¬«       y)z:Raise a TypeError as an observed exception during tracing.r(   N)r  Ú	TypeError©r  r‚   s     r   Úraise_type_errorr    s   € äœY¨°#°Ö7r    c                ó*   — t        t        | |g¬«       y)z;Raise a ValueError as an observed exception during tracing.r(   N)r  Ú
ValueErrorr  s     r   Úraise_value_errorr    s   € äœZ¨°3°%Ö8r    c                ó8   — | j                   j                  «        y r&   )r	  Úclear_current_exception)r  s    r   Úhandle_observed_exceptionr    s   € ð2 ‡O�O×+Ñ+Õ-r    c               ó¾   ‡— t        | |«      Št        j                  j                  dd„ ˆfd„¬«       t        j                  d‰«       t        } |||||| d¬«       y )NÚartifactc                 ó   — dddœS )NÚdynamo_graph_break_reasonÚstring)rL   Úencodingr'   r'   r    r   ú<lambda>z,unimplemented_with_warning.<locals>.<lambda>O  s   € Ø/Ø ñ
€ r    c                 ó   •— ‰ S r&   r'   )Úgraph_break_msgs   €r   r!  z,unimplemented_with_warning.<locals>.<lambda>S  s   ø€ ˜?€ r    )Úmetadata_fnÚ
payload_fnz%sT)r³   ÚcontextÚexplanationÚhintsÚfrom_excÚlog_warning)Úformat_error_msg_verboserƒ   Ú_loggingÚtrace_structuredÚgraph_breaks_logÚdebugrº   )ÚeÚcoder³   r&  r'  r(  Ú_unimplementedr#  s          @r   Úunimplemented_with_warningr3  <  sf   ø€ ô  /¨q°$Ó7€OÜ	‡N�N×#Ñ#Øñ
ó +ð $ô ô ×Ñ˜4 Ô1Ü"€NáØØØØØØör    c                ó
  — t        j                  |d«      j                  «       }dj                  d„ |D «       «      }t        j                  |d«      j                  «       }| › d|› d|› d|› �}t	        | «      }|r|d|› �z  }|S )Nú    rÒ   c              3  ój   K  — | ]+  }d t        j                  |d«      j                  «       z   –— Œ- y­w)z  Hint: r5  N)r”   ÚindentÚlstrip)Ú.0Úhints     r   ú	<genexpr>z-format_graph_break_message.<locals>.<genexpr>i  s.   è ø€ ò Ø@Dˆ
”X—_‘_ T¨6Ó2×9Ñ9Ó;Õ;ñùs   ‚13z
  Explanation: z

  Developer debug context: z:

 For more details about this graph break, please visit: )r”   r7  r8  ÚjoinÚget_gbid_documentation_link)r³   r&  r'  r(  Ú	hints_strr‚   Údocumentation_links          r   Úformat_graph_break_messager@  b  s¨   € ô —/‘/ +¨vÓ6×=Ñ=Ó?€KØ—	‘	ñ ØHMôó €Iô �o‰o˜g vÓ.×5Ñ5Ó7€Gð 	€	ð 
Øˆ}ð Ø
€ð à#˜9ð(€Cô 5°WÓ=ÐáØÐMÐN`ÐMaÐbÑbˆà€Jr    )Úmaxsizec                 óŠ  — 	 t        t        «      j                  «       j                  } t	        dt        | «      d«      }t        |«      5 }t        j                  |«      }ddd«       i }j                  «       D ]  \  }}|D ]
  }|||d   <   Œ Œ |S # 1 sw Y   Œ4xY w# t        $ r t        j                  d«       i }Y ŒYw xY w)zÑ
    Loads the gb_type to gb_id map from the graph break registry from JSON file with caching.

    Includes historical gb_type (mapping behavior of duplicate gb_types with different gb_ids is undefined).
    r¸   zgraph_break_registry.jsonNz!Error accessing the registry fileÚGb_type)r   Ú__file__ÚresolveÚparentr   r-   ÚopenÚjsonÚloadr«   ÚlogÚ	exceptionrE   )Ú
script_dirÚregistry_pathÚfÚregistryÚmappingÚkÚvÚentrys           r   Ú_load_gb_type_to_gb_id_maprT  |  sÉ   € ð
Üœ(“^×+Ñ+Ó-×4Ñ4ˆ
Ü'Ø”�J“Ð!<ó
ˆô �-Ó ð 	$ AÜ—y‘y “|ˆH÷	$ð €GØ—‘Ó ò *‰ˆˆ1Øò 	*ˆEØ()ˆG�E˜)Ñ$Ò%ñ	*ð*ð €N÷	$ð 	$ûäò Ü�‰Ð9Ô:àŠðús*   ‚AB Á
BÁ B ÂBÂB Â CÃCc                óX   — d}t        «       }| |v r|› d||    j                  d«      › d�S y)zä
    Retrieves the GBID documentation link for a given graph break type.

    Args:
        gb_type: The graph break type to look up.

    Returns:
        A string containing the documentation URL if found, otherwise None.
    z;https://meta-pytorch.github.io/compile-graph-break-site/gb/ÚgbÚGBz.htmlN)rT  r8  )r³   ÚGRAPH_BREAK_SITE_URLÚgb_type_to_gb_id_maps      r   r=  r=  —  sO   € ð 	Fð ô 6Ó7ÐàÐ&Ñ&à#Ð$ BÐ';¸GÑ'D×'KÑ'KÈDÓ'QÐ&RÐRWÐXð	
ð r    F)r)  r*  r°   c                ó*  — t        | |||«      }|rt        j                  |«       |t        urZd}t	        |d«      r|j
                  }t        |t        «      r |j                  › d|› �}t        || ||¬«      ‚t        || ||¬«      |‚t        || |«      ‚)a  
    Called within dynamo to cause a graph break.
    Args:
        gb_type: Context-free graph break type. It should be a short string without any
                 information specific to the tracing context (i.e. no dynamically-generated strings)
        context: Developer context for the graph break. It can contain tracing context/dynamic strings.
        explanation: User-facing context-dependent explanation for the graph break. Can be dynamic.
        hints: List of user-facing hints for the graph break.
    Nr‡   zJ

*** While handling this graph break, another graph break occurred: ***

rä   )	r@  rJ  ÚwarningÚ_NOTHINGÚhasattrr‡   rG   r­   r‚   )	r³   r&  r'  r(  r)  r*  r°   r‚   Úpast_real_stacks	            r   rº   rº   ²  s¡   € ô( % W¨g°{ÀEÓ
J€CáÜ�‰�CÔØ”xÑØˆÜ�8˜\Ô*Ø&×1Ñ1ˆOÜ�h¤Ô,Ø—\‘\�NÐ"pÐqtÐpuÐvˆCä˜c 7¨JÀ?ÔSÐSäØ�˜*°ô
àð	ô �c˜7 JÓ
/Ð/r    c                  ó$   — e Zd Zdd„Zdd„Zdd„Zy)ÚKeyErrorMsgc                ó   — || _         y r&   )rM   )r6   rM   s     r   r2   zKeyErrorMsg.__init__Ý  s	   € Øˆ�
r    c                ó,   — t        | j                  «      S r&   )r-   rM   rY   s    r   Ú__str__zKeyErrorMsg.__str__à  s   € Ü�4—:‘:‹Ðr    c                ó"   — | j                  «       S r&   )rc  rY   s    r   Ú__repr__zKeyErrorMsg.__repr__ã  s   € Ø�|‰|‹~Ðr    N)rM   r   r:   r;   )r:   r-   )r=   r4   r5   r2   rc  re  r'   r    r   r`  r`  Ü  s   „ óóôr    r`  c                ó|   — t        | d«      r/|j                  d«      }|d   › d| j                  › |d   › |d   › �}|S )NÚ	_hop_namez
  Explanation:r   z
  Higher Order Operator: r   é   )r]  Ú	partitionrg  )r7   r‚   Úliness      r   Ú!augment_exc_message_with_hop_namerk  ç  sQ   € ô ˆs�KÔ Ø—‘Ð0Ó1ˆà�Q‰xˆjÐ3°C·M±M°?À5ÈÁ8À*ÈUÐSTÉXÈJÐWð 	ð €Jr    c                óž  — dd l }d | _        t        | «      }|�>t        |«      dkD  r0|d   | _        |ddj	                  |j                  |«      «      › �z  }t        j                  r,t        | d«      r |d| j                  › d| j                  › d�z  }t        j                  st        | d	«      r|d
z  }t        | d«      r~t        | j                  d«      rht        | j                  d«      r5|d| j                  j                  › d| j                  j                  › d�z  }n|d| j                  j                  › d�z  }t        | j                  «      dk(  rdnt        | j                  d   «      }t!        | |«      }t#        | t$        «      r%t'        ||z   «      f| j                  dd  z   | _        y ||z   }|f| j                  dd  z   | _        y )Nr   éÿÿÿÿz
from user code:
 r¸   Úrecord_filenamez!
Last frame execution written to zD. To run only this frame while debugging, run torch._dynamo.replay('z').
r‡   z´
Set TORCHDYNAMO_VERBOSE=1 for the internal stack trace (please do this especially if you're reporting a bug to PyTorch). For even more developer context, set TORCH_LOGS="+dynamo"
rD   Úminifier_pathÚbuck_commandz
Minifier script written to zW. Run this buck command to find the smallest traced graph which reproduces this error: rÒ   zQ. Run this script to find the smallest traced graph which reproduces this error.
r   )Ú	tracebackÚinnermost_user_frame_summaryÚget_real_stackrë   r<  r	   r   Úreplay_record_enabledr]  rn  rœ   rD   ro  rp  r)   r-   rk  rG   ÚKeyErrorr`  )r7   r‚   Úexportrq  r‡   Úold_msgÚnew_msgs          r   Úaugment_exc_messagery  ó  sÜ  € Ûà'+€CÔ$ä Ó$€JØÐ¤# j£/°AÒ"5Ø+5°b©>ˆÔ(ØÐ% b§g¡g¨i×.CÑ.CÀJÓ.OÓ&PÐ%QÐRÑRˆä×#Ò#¬°Ð5FÔ(GØØ0°×1DÑ1DÐ0Eð FØ×+Ñ+Ð,¨Eð3ñ	
ˆô
 �>Š>œg c¨<Ô8ØðJñ	
ˆô ˆsÐ%Ô&¬7Ø×Ñ˜_ô,ô �3×&Ñ&¨Ô7ØØ/°×0CÑ0C×0QÑ0QÐ/Rð S0à03×0CÑ0C×0PÑ0PÐ/QÐQSðUñ‰Cð Ø/°×0CÑ0C×0QÑ0QÐ/Rð S_ð _ñˆCô
 ˜Ÿ™“M QÒ&‰b¬C°·±¸±Ó,<€Gä/°°WÓ=€Gä�#”xÔ Ü ¨#¡Ó.Ð0°3·8±8¸A¸B°<Ñ?ˆ�à˜C‘-ˆØ�: §¡¨¨ Ñ,ˆ�r    c                ó�   — d }d }| j                   �,| j                   j                  }| j                   j                  }|| _        ||fS r&   )rr  ÚfilenameÚlinenoÚ
compile_id)r0  r}  r{  r|  s       r   Úget_exc_messager~  $  sN   € ð €HØ€FØ×%Ñ%Ð1Ø×1Ñ1×:Ñ:ˆØ×/Ñ/×6Ñ6ˆØ€A„LØ�VÐÐr    c                 óì  — t        «       } t        j                  d«      }|�Â|j                  }i }t        j                  dk\  rU|j
                  dk\  rFt        |j                  «       «      }|j
                  dz  }|t        |«      k  r||   \  }}|d<   |d<   | j                  t        |j                  |j                  |j                  fddi|¤Ž«       |j                  }|�ŒÂ| j                  «        | S )	Nr   )é   é   r   rh  ÚcolnoÚ	end_colnoÚlookup_lineF)r   ÚsysÚ	_getframeÚf_codeÚversion_infoÚf_lastiÚlistÚco_positionsrë   Úappendr
   Úco_filenameÚf_linenoÚco_nameÚf_backÚreverse)ÚstackÚframer1  rV   Ú	positionsÚidxr   s          r   Ú_extract_stack_with_positionsr–  0  sð   € ô ‹N€EÜ�M‰M˜!Ó€EØ
Ð
Ø�|‰|ˆà!#ˆÜ×Ñ˜wÒ&¨5¯=©=¸AÒ+=Ü˜T×.Ñ.Ó0Ó1ˆIØ—-‘- 1Ñ$ˆCØ”S˜“^Ò#Ø=FÀs¹^Ñ:��1�f˜W‘o v¨kÑ':Ø�‰ÜØ× Ñ Ø—‘Ø—‘ñð "ð	ð
 ñô	
ð —‘ˆð% Ñ
ð& 
‡M�M„OØ€Lr    c                 ó(   — t        t        «       «      S r&   )Úfilter_stackr–  r'   r    r   Úget_stack_above_dynamor™  O  s   € ÜÔ5Ó7Ó8Ð8r    c                ó€   — t        | dd «      }|€y |�t        «       }n
t        «       }t        j                  ||z   «      S )Nr‡   )r¨   r™  r   Ú	from_list)r7   r“  r‡   Ústack_above_dynamos       r   rs  rs  S  sM   € ô ˜˜l¨DÓ1€JØÐØð Ðô 4Ó5Ñä)›^Ðä×!Ñ!Ð"4°zÑ"AÓBÐBr    c                óØ   — t        «       }| D ]Z  }|j                  €Œd|j                  v r |S d|j                  v s|j                  rd|j                  v rŒJ|j                  |«       Œ\ |S )NÚconvert_frameÚ
eval_frameztorch._dynamo.optimize()r   r{  ÚlinerŒ  )r’  Ú
user_stackr“  s      r   r˜  r˜  t  sv   € Ü“€JØò 	!ˆØ�>‰>Ð!ØØ˜eŸn™nÑ,Øð Ðð ˜5Ÿ>™>Ñ)Ø�JŠJÐ4¸¿
¹
ÑBàØ×Ñ˜%Õ ð	!ð Ðr    c                ój   — ddl m} t        j                  |› d�| «      }|r|j	                  d«      S | S )Nr   )ÚTORCH_DYNAMO_RESUME_IN_PREFIXz_(\w+)_at_\d+)Úresume_executionr£  ÚreÚmatchÚgroup)rL   r£  r¦  s      r   Úremove_resume_prefixr¨  „  s4   € Ý?ä�H‰HÐ5Ð6°oÐFÈÓM€EÙØ�{‰{˜1‹~ÐØ€Kr    c                óâ   — t        «       }| D ]_  }|j                  €Œt        |j                  «      }|r!|r|d   j                  |k(  r||d<   ||_        ŒH||_        |j	                  |«       Œa |S )a1  
    When we graph break, we create a resume function and make a regular Python call
    to it, which gets intercepted by Dynamo. This behavior is normally shown in the
    traceback, which can be confusing to a user. So we can filter out resume frames
    for better traceback clarity.

    Example:
    File "..." line 3, in f
        <line 3>
    File "..." line 5, in torch_dynamo_resume_in_f_at_80
        <line 5>
    File "..." line 10, in torch_dynamo_resume_in_f_at_120
        <line 10>

    becomes
    File "..." line 10, in f
        <line 10>
    rm  )r   r{  r¨  rL   rŒ  )r’  Ú	new_stackr“  rL   s       r   Úcollapse_resume_framesr«  �  sx   € ô( “€IØò 	$ˆØ�>‰>Ð!ØÜ# E§J¡JÓ/ˆÙ™ )¨B¡-×"4Ñ"4¸Ò"<Ø!ˆI�b‰MØˆE�JàˆEŒJØ×Ñ˜UÕ#ð	$ð Ðr    c                óò   — d|j                   › d|j                  › d|j                  › d�}|dz  }|t        «       z  }t	        | |«      }|�,|dz  }|dj                  t        |«      «      z  }|dz  }|dz  }|S )	NúWON'T CONVERT rÑ   ú line rÒ   z.========== TorchDynamo Stack Trace ==========
zY
========== The above exception occurred while processing the following code ==========

r¸   z
==========)r�  r�  Úco_firstlinenor   rs  r<  r	   )r7   r1  rn  r“  r‚   r‡   s         r   r+  r+  °  sŸ   € ð ˜Ÿ™˜ a¨×(8Ñ(8Ð'9¸À×@SÑ@SÐ?TÐTVÐWð ð ÐCÑC€CØŒ:‹<Ñ€CÜ  UÓ+€JØÐØðñ	
ˆð 	ˆr�w‰w”{ :Ó.Ó/Ñ/ˆØˆt‰ˆØˆx‰ˆà€Jr    c           	     óZ   — t        | dd«      › dt        | dd«      › dt        | dd«      › d�S )	Nr�  z	<unknown>z (r�  r®  r¯  r   ú))r¨   )r1  s    r   Úformat_frame_infor²  Ë  sF   € ä�4˜ KÓ0Ð
1ð 2Ü�D˜-¨Ó5Ð6ð 7Ü˜Ð.°Ó2Ð3°1ð	6ðr    c                ó6   — | �t        | «      }d|› d|› �S d|› �S )Nz6torch.compile intentionally decided to skip the frame z! and fall back to eager.
Reason: zVtorch.compile intentionally decided to skip the frame and fall back to eager.
Reason: )r²  )r1  ÚreasonÚ
frame_infos      r   Úformat_skip_frame_messager¶  Ó  sB   € ØÐÜ& tÓ,ˆ
àDÀZÀLð QØ�hð ð	
ðØ�hð ð	
r    c           	     ó¦   — t         j                  rt        | |||«      S d|j                  › d|j                  › d|j
                  › dt        «       › �S )Nr­  rÑ   r®  z 
due to: 
)r   rœ   r+  r�  r�  r¯  r   )r7   r1  rn  r“  s       r   Úformat_error_msgr¸  á  sW   € ô ‡~‚~Ü'¨¨T°?ÀEÓJÐJØ˜DŸL™L˜>¨¨4×+;Ñ+;Ð*<ð =Ø×ÑÐ˜=¬«¨ð8ð 8r    )r   r-   r:   r-   )r)   r`   r:   r`   )r7   r9   r:   r,   )rJ   rb   r:   rb   )rR   ztype[TorchDynamoException]r)   r`   r:   rO   )rR   útype[Exception]r:   ztype[ObservedException])
rR   r¹  r  r   r)   z(list[VariableTracker] | list[str] | NonerV   z!dict[str, VariableTracker] | Noner:   r   )r  r   r‚   r-   r:   r   )r  r   r:   r;   )r0  r«   r1  útypes.CodeTyper³   r-   r&  r-   r'  r-   r(  ú	list[str]r:   r   )
r³   r-   r&  r-   r'  r-   r(  r»  r:   r-   ra   )r³   r-   r:   rl   )r³   r-   r&  r-   r'  r-   r(  r»  r)  r   r*  r¹   r°   r¹   r:   r   )r7   r«   r‚   r-   r:   r-   )rÒ   F)r7   r«   r‚   r-   rv  r¹   r:   r;   )r0  r«   r}  r   r:   ztuple[str | None, int | None])r:   r   r&   )r7   r«   r“  úDynamoFrameType | Noner:   r‹   )r’  r   r:   r   )rL   r-   r:   r-   )r’  z!StackSummary | list[FrameSummary]r:   r   )NN)
r7   r«   r1  rº  rn  rl   r“  r¼  r:   r-   )r1  rº  r:   r-   )r1  ztypes.CodeType | Noner´  r-   r:   r-   )ŠÚ
__future__r   rH  Úloggingr¥  r…  r”   rH   ÚtypingÚenumr   r   Ú	functoolsr   Úpathlibr   rq  r   r	   r
   r   r   r   r   Útorch._guardsrƒ   Útorch._utils_internalr   r¸   r   Úutilsr   Útorch._dynamo.variablesr   r   Úoutput_graphr   r  r   r   r   r   Ú	getLoggerr=   rJ  r,  ÚgetArtifactLoggerr.  Ú	frozensetrF   r*   ÚRuntimeErrorr,   rB   rN   rS   rO   re   ri   rk   rp   rr   ru   rw   ry   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û   ÚStopIterationÚLookupErrorÚ
IndexErrorÚGeneratorExitru  ÚAttributeErrorÚNotImplementedErrorr  rÿ   r   r  r  r  r  Ú_subclassesÚfake_tensorÚDataDependentOutputExceptionÚDynamicOutputShapeExceptionÚUnsupportedOperatorExceptionÚUnsupportedFakeTensorExceptionÚ$UnsupportedMutationAliasingExceptionÚ!exceptions_allowed_to_be_fallbackr3  r@  rT  r=  Úobjectr\  rº   r`  rk  ry  r~  r–  r™  rs  r˜  r¨  r«  r+  r²  r¶  r¸  r'   r    r   ú<module>rÛ     s³  ðÝ "ðó2 Û Û 	Û 
Û Û Û ß Ý Ý ß IÓ Iß /Ñ /ã Ý 1å Ý ñ Ý7Ý'å0Ý;ß9óð €g×Ñ˜Ó!€Ø—>‘>×3Ñ3°H¸nÓMÐ ñ "+ðó"Ð óô
˜<ô 
ó%ó	ðØ(ðØ0?ðàóô(˜<ô (ô@	Ð3ô 	ô	Ð!5ô 	ô Ð*ô  ô	 ô 	ô /ô ô /ô ô	 /ô 	ô	 ô 	ô	 _ô 	ô	Ð$ô 	ô
Ð,ô 
ô
Ð)ô 
ô	
Ð(ô 	
ô'Ð+ô 'ô$
EÐ,ô 
Eô$*Ð&ô *ôD	Ð+?ô 	ô	Ð)ô 	ô	Ð1ô 	ô
Ð2ô ô8�Dô 8ôÐ$ô ô<Ð*ô ô	Ð2ô 	ô
Ð#7ô 
ô	˜iô 	ô	Ð'ô 	ô

Ð,ô 

ôÐ 1ô ô 	Ð+ô 	ô
	Ð,ô 	ô
	Ð*ô 	ô
	Ð-ô 	ô	Ð.ô 	ô
	Ð,ô 	ô
	Ð"3ô 	ô	Ð)ô 	ð Ð,ØÐ$ØÐ"ØÐ(ØÐØÐ*ØÐ&ØÐ4ØÐ ð
Ð ó,ð 6:Ø04ñØðà!ðð 3ð	ð
 .ðð óóD8ó
9ó
.ð< 
×Ñ×!Ñ!×>Ñ>Ø	×Ñ×!Ñ!×=Ñ=Ø	×Ñ×!Ñ!×>Ñ>Ø	×Ñ×!Ñ!×@Ñ@Ø	×Ñ×!Ñ!×FÑFð%Ð !ð#Øð#à
ð#ð ð	#ð
 ð#ð ð#ð ð#ð ó#ðLØðàðð ðð ð	ð
 	óñ4 �1Ôòó ðó4ñ0 ‹8€ð ØØñ%0àð%0ð ð%0ð ð	%0ð
 ð%0ð ð%0ð ð%0ð ð%0ð ó%0÷Tñ ó	ô.-ðb	Øð	Ø'ð	à"ó	óó>9ð
 59ðCØ	ðCØ1ðCàóCóBó ó ðL #'Ø$(ð	Ø	ðà
ðð  ðð "ð	ð
 	óó6ó
ð" #'Ø$(ð		8Ø	ð	8à
ð	8ð  ð	8ð "ð		8ð
 	ô	8r    