§
    ­˜ºhzu ã                  ó¶  — U d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	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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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#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-m.Z.m/Z/m0Z0m1Z1 dd
l2m3Z3m4Z4m5Z5m6Z6 ddl7Z7ddl8Z7ddl9Z7ddl:m;c m<Z= ddl7m>Z> ddl?m@Z@mAZAmBZBmCZC ddlDmEZE ddlFmGZGmHZH ddlImJZJmKZKmLZL ddlMmNZN ddlOmPZPmQZQmRZRmSZSmTZT ddlUmVZVmWZW ddlXmYZY ddlZm[Z[ ddl\m]Z]m^Z^ ddl_m`Z` ddlambZb ejc        rddldmeZemfZfmgZgmhZhmiZimjZj 	 ddlkZln# em$ r dZlY nw xY w	 ddlnZ7ddlompZq ddlImrZr ddlnmsZs ddltmuZu elrCeleljv        eljw        eljx        fZydezd<   eleqeljv        eqjv        eljw        eqjw        eljx        eqjx        iZ{ndZyi Z{dd l|m}Z}m~Z~mZ n# e€$ r Y nw xY w e0d!¦  «        Z�e7j‚        jƒ        j„        Z…e7j‚        jƒ        j†        Z‡e7j‚        jƒ        jˆ        Z‰ ejŠ        ej!        ¦  «        Z‹d"ezd#<   i ZŒd$ezd%<   d&Z�d'ZŽd(eŽ› d)�Z� ej�        e‘¦  «        Z’i Z“d*ezd+<    ejŠ        e”¦  «        Z•d,ezd-<    ej–        ¦   «         Z— G d.„ d/e
j˜        ¦  «        Z™ G d0„ d1¦  «        Zš�d±d8„Z›daœ�d²d:„Z��d²d;„ZždaŸ�d³d>„Z �d´d?„Z¡�d²d@„Z¢dAezdB<   dCezdD<   �dµdE„Z£�d¶dF„Z¤ G dG„ dHe
j˜        ¦  «        Z¥ G dI„ dJ¦  «        Z¦ ej§        ¦   «         Z¨e$	 	 	 	 	 	 	 	 �d·�d¸d[„¦   «         Z©e/�d¹�dºd_„¦   «         Zªe/	 �d¹�d»db„¦   «         Zª�d¼�d½dc„Zªej«        �d²dd„¦   «         Z¬e7j­        e7j®        e7j”        fe7j¯        e7j°        e7j±        fe7j²        e7j³        e7j´        fe7jµ        e7j¶        fe7j·        e7j¸        fe7j¹        e7jº        fe7j»        e7j¼        e7j½        fe7j¾        e7j¿        e7jÀ        fe7jÁ        e7jÂ        e7jÃ        fe7jÄ        e7jÅ        fi
ZÆ G de„ df¦  «        ZÇ eÇ¦   «         ZÈdg„ ZÉ�d²dh„ZÊdi„ ZËdj„ ZÌ�d¾dk„ZÍ�d¿dm„ZÎ�dÀdp„ZÏ�dÁdr„ZÐds„ ZÑdt„ ZÒ G du„ dv¦  «        ZÓe/�dÂd|„¦   «         ZÔe/�dÃd~„¦   «         ZÔe/�dÄd€„¦   «         ZÔd�„ ZÔejÕ        d‚k    r&ejÖ        ej×        ejØ        ej0        ejÙ        ejÚ        fZÛdƒ„ ZÜd„„ ZÝd…„ ZÞe/�dÅd‰„¦   «         Zße/�dÆdŒ„¦   «         Zß�dÇd�„Zße1ejà        ejá        ejâ        ejã        f         ZädŽezd�<   �dÈd‘„Zå�dÉd“„Zæejç        ejè        ejé        ejê        ejë        ejì        d”œZíd•d–d—d˜d™dšd”œZî�dÊdœ„Zïd�„ Zðdž„ ZñdŸ„ Zòd „ Zód¡„ Zô ej&        d¢¦  «        d£„ ¦   «         Zõ�dËd¤„Zöd¥„ Z÷�dÌd©„Zø�dÌdª„Zùd«Zúejû         G d¬„ d­¦  «        ¦   «         Züd®Zý ejþ        eý¬¯¦  «        aÿd°ezd±<   �dÍd³„�Z �dÎd´„�Z�dÎdµ„�Z�dÏd½„�Z eG�e¬¾¦  «        �Z eH�e¬¾¦  «        �Z�dÐdÀ„�Z�d²dÁ„�Z�dÑdÃ„�Z G dÄ„ dÅ¦  «        �Z	d�a
dÆezdÇ<   �dÒdÈ„�Z�dÓdÉ„�Ze$	 	 �dÔ�dÕdÌ„¦   «         �Zejû         G dÍ„ dÎ¦  «        ¦   «         �Z G dÏ„ dÐeÓ¦  «        �Z �e¦   «         �e�_        dÑ„ �ZddÒœdÓ„�ZdÔ„ �Z�dÖd×„�Ze$dØ„ ¦   «         �ZdÙ„ �Z�d¹dÚ„�ZdÛ„ �ZdÜ„ �ZdÝ„ �Z ej&        d¦  «        �d×dß„¦   «         �Zdà„ �Z�dØdá„�Zdâ„ �Z e&dã¦  «        dä„ ¦   «         �ZeÀe”�e eÅ�e!�e" �e#d¦  «        �e$�j%        �e&�j%        ej'        e7�j'        e7�j(        e7�j)        e7�j*        e7�j+        e7�j,        e7j‚        �j-        �j.        e7�j/        �j0        h�Z1dåezdæ<    e^¦   «         r*dd�l2�Z2�e1� 3                    �e2�j4        �j(        ¦  «         	 dç„ �Z5e�j6        dè„ ¦   «         �Z7�dÙdê„�Z8dë„ �Z9dì„ �Z:dí„ �Z;dî„ �Z<dï„ �Z=dð„ �Z>dñ„ �Z? �e#i � @                    ¦   «         ¦  «        �ZAdòezdó<    �e#i � B                    ¦   «         ¦  «        �ZCdôezdõ<    �e#i � D                    ¦   «         ¦  «        �ZEdöezd÷<    �e# e"¦   «         � B                    ¦   «         ¦  «        �ZFdôezdø<    �e# �eGd¦  «        ¦  «        �ZHdùezdú<    �e# �eG �eId¦  «        ¦  «        ¦  «        �ZJdùezdû<   �eH�jK        �ZL�eM�jN        �ZO�eP�jN        �ZQdü„  e�jR        �eP�jS        � B                    ¦   «         e"�jS        � B                    ¦   «         ¦  «        D ¦   «         �ZT�eU�jN        �ZVdý„ �eU�jS        � B                    ¦   «         D ¦   «         �ZWdþ„ �eX�jS        � B                    ¦   «         D ¦   «         �ZY�eX�jZ        �Z[dÿ„ �e!�jS        � B                    ¦   «         D ¦   «         �Z\�d „ �Z]�d„ �Z^�d„ �Z_�d„ �Z`�d„ �Za�d„ �Zb�ec�Zd�dÚ�d„�Ze�d„ �Zf�eP�jZ        �Zg�d	„ �Zh�d
„ �Zi�d„ �Zj�d„ �Zk�d¹�d„�Zl�dÛ�d„�Zm�d„ �Zn�d¾�d„�Zo�d¾�d„�Zp�d�Zqd�d�lr�ms�Zs �d„ �Zt�dÜ�d„�ZudK�dœ�dÝ�d„�Zv�d„ �Zw�d„ �Zx�d„ �ZyddK�ddK�d dKdKe’�jz        dKdKf
�dÞ�d"„�Z{�d#„ �Z|ej$        �d$„ ¦   «         �Z} eÓ¦   «         �Z~ ejŠ        �eX¦  «        �Z�d%ez�d&<   g �Z€�d'ez�d(<    eÓ¦   «         �Z�e�j6        �d)„ ¦   «         �Z‚�d*„ �Zƒ�dß�d+„�Z„�d,„ �Z…�d-„ �Z†�d¹�d.„�Z‡ ej§        ¦   «         �Zˆ�d/„ �Z‰e$�d0„ ¦   «         �ZŠ�d1„ �Z‹�d2„ �ZŒ�d3„ �Z��dà�d4„�ZŽ�d5„ �Z��dá�d8„�Z��dâ�d9„�Z‘�d:„ �Z’�dã�d=„�Z“�d¹�dä�d?„�Z” G �d@„ �dAe
j˜        ¦  «        �Z•�då�dC„�Z–�dæ�dJ„�Z—�dK„ �Z˜�dL„ �Z™�dM�dNg�Zš�dO�dPg�Z›g �dQ¢�Zœ�eš�e›z   �eœz   �Z��dR„ �Zž	 	 	 �dç�dS„�ZŸ	 	 	 �dç�dT„�Z �dU„ �Z¡�dV„ �Z¢ G �dW„ �dX¦  «        �Z£�dY„ �Z¤ G �dZ„ �d[¦  «        �Z¥ G �d\„ �d]¦  «        �Z¦�d^„ �Z§�d_„ �Z¨�d`„ �Z©�da„ �Zª�db„ �Z«�dc„ �Z¬�dd„ �Z­�dè�df„�Z®ejû         G �dg„ �dh¦  «        ¦   «         �Z¯�dé�dk„�Z°�dê�dp„�Z±�dq„ �Z²�dr„ �Z³�ds„ �Z´�dt„ �Zµ�du„ �Z¶�dë�dx„�Z·�dy„ �Z¸�dz„ �Z¹�d{„ �Zºej$        �dì�d|„¦   «         �Z»�d}„ �Z¼�d~„ �Z½ G �d„ �d€e7j‚        jƒ        ¦  «        �Z¾�dí�dƒ„�Z¿�d„„ �ZÀ�d…„ �ZÁ G �d†„ �d‡¦  «        �ZÂ �eÃ¦   «         �ZÄ�dˆez�d‰<   �dØ�dŠ„�ZÅ�d‹„ �ZÆej$        �dŒ„ ¦   «         �ZÇ�d�„ �ZÈ�dŽ„ �ZÉ�d�„ �ZÊ�d�„ �ZË�d‘„ �ZÌ�d’„ �ZÍ�d“„ �ZÎ�d”„ �ZÏe7�jÐ        �d•„ ¦   «         �ZÑe7�jÐ        �d–„ ¦   «         �ZÒe7�jÐ        �d—„ ¦   «         �ZÓ�d˜„ �ZÔi �ZÕ�d™ez�dš<   �d›„ �ZÖ�dœ„ �Z× G �d�„ �dž¦  «        �ZØ�dî�d¡„�ZÙ�d¢�ZÚdÞez�d£<   �d¤„ �ZÛe$�dï�d¦„¦   «         �ZÜe$�dï�d§„¦   «         �ZÝ�dð�dª„�ZÞe7�jÐ        �dñ�d¬„¦   «         �Zße7�jÐ        �dò�d®„¦   «         �Zà�dó�d°„�ZádS (ô  aß  
Utility functions and classes used throughout the TorchDynamo system.

This module contains a collection of helper utilities used by various parts of Dynamo for:
- Performance metrics collection and reporting
- Compilation timing and debugging
- Graph manipulation and tensor operations
- Runtime guards and checks
- Common data structure operations
- Testing and development tools

This is an internal module that provides shared functionality used across the Dynamo codebase.
é    )ÚannotationsN)ÚCounterÚOrderedDict)ÚAbstractContextManagerÚcontextmanager)Úis_dataclass)Ú	lru_cache)ÚCodeTypeÚMethodWrapperType)	ÚAnyÚCallableÚcastÚClassVarÚGenericÚOptionalÚoverloadÚTypeVarÚUnion)ÚLiteralÚ	TypeAliasÚ	TypeGuardÚTypeIs)Úfx)Ú_instruction_counterÚ_len_torch_function_stackÚ_pop_torch_function_stackÚ_push_on_torch_function_stack)Úenable_python_dispatcher)ÚMetricsContextÚRuntimeMetricsContext)Ú	CompileIdÚSourceÚTracingContext)Úis_sparse_compressed)Újustknobs_checkÚlog_chromium_event_internalÚlog_compilation_eventÚrecord_chromium_event_internalÚsignpost_event)Ú_format_graph_codeÚlazy_format_graph_code)Ú_WaitCounter)ÚLazyModuleMixin)Ú
has_tritonÚhas_triton_package)ÚRemovableHandleé   )Ú_get_flat_args)Ú	GeneratorÚ	ItemsViewÚIterableÚIteratorÚKeysViewÚ
ValuesView)Údetect_fake_mode©Ú
LazyString)Úconfigztuple[types.ModuleType, ...]ÚNP_SUPPORTED_MODULES© )Ú
FakeTensorÚis_fakeÚmaybe_get_fake_modeÚTz*collections.defaultdict[str, Counter[str]]Úcountersúdict[str, Any]Úoptimus_scuba_logzAhttps://pytorch.org/docs/main/torch.compiler_troubleshooting.htmlz;https://pytorch.org/docs/main/torch.compiler_nn_module.htmlzSee z& for more information and limitations.zdict[str, list[float]]Úcompilation_time_metricsúdict[str, float]Úcumulative_time_spent_nsc                  ó   — e Zd ZdZdZdZdS )ÚReInplaceTriggerr1   é   é   N)Ú__name__Ú
__module__Ú__qualname__ÚAUTO_FUNC_V1ÚAUTO_FUNC_V2Ú
TRITON_OPSr>   ó    ú[/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/torch/_dynamo/utils.pyrJ   rJ   ¯   s   € € € € € Ø€LØ€LØ€J€J€JrS   rJ   c                  óÂ   — e Zd ZU  ej        e¦  «        Zded<   edd„¦   «         Z	edd	„¦   «         Z
ed
„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚReinplaceCountersz!collections.defaultdict[str, int]Ú_valuesÚtriggerrJ   ÚbytesÚintc                óP   — |dk    r| j         d|j        › �xx         |z  cc<   d S d S ©Nr   Úmissed_bytes_)rW   Úname)ÚclsrX   rY   s      rT   Úadd_missed_bytesz"ReinplaceCounters.add_missed_bytes¹   sA   € à�AŠ:ˆ:ØŒKÐ6¨¬Ð6Ð6Ð7Ð7Ô7¸5Ñ@Ð7Ð7Ñ7Ð7Ð7ð ˆ:rS   Úcountc                óF   — |dk    r| j         d|› �xx         |z  cc<   d S d S ©Nr   Úmissed_tensors_)rW   )r_   rX   ra   s      rT   Úadd_missed_opportunitiesz*ReinplaceCounters.add_missed_opportunities¿   s?   € à�AŠ:ˆ:ØŒKÐ3¨'Ð3Ð3Ð4Ð4Ô4¸Ñ=Ð4Ð4Ñ4Ð4Ð4ð ˆ:rS   c                ó8   — | j                              ¦   «          d S ©N)rW   Úclear©r_   s    rT   rh   zReinplaceCounters.clearÄ   s   € àŒ×ÒÑÔÐÐÐrS   c                ó`   — d}t           D ]#}|| j                             d|› �d¦  «        z  }Œ$|S rc   )rJ   rW   Úget©r_   ÚsumrX   s      rT   Úget_total_missedz"ReinplaceCounters.get_total_missedÈ   sB   € àˆÝ'ð 	Cð 	CˆGØ�3”;—?’?Ð#>°WÐ#>Ð#>ÀÑBÔBÑBˆCˆCØˆ
rS   c                ój   — d}t           D ](}|| j                             d|j        › �d¦  «        z  }Œ)|S r\   )rJ   rW   rk   r^   rl   s      rT   Úget_total_missed_bytesz(ReinplaceCounters.get_total_missed_bytesÏ   sD   € àˆÝ'ð 	Fð 	FˆGØ�3”;—?’?Ð#A°7´<Ð#AÐ#AÀ1ÑEÔEÑEˆCˆCØˆ
rS   c                óD   — | j         rt          dd| j         ¦  «         d S d S )NÚinductorÚreinplace_counters)rW   r)   ri   s    rT   ÚlogzReinplaceCounters.logÖ   s6   € ð Œ;ð 	JÝ˜:Ð';¸S¼[ÑIÔIÐIÐIÐIð	Jð 	JrS   N)rX   rJ   rY   rZ   )rX   rJ   ra   rZ   )rM   rN   rO   ÚcollectionsÚdefaultdictrZ   rW   Ú__annotations__Úclassmethodr`   re   rh   rn   rp   rt   r>   rS   rT   rV   rV   µ   sé   € € € € € € Ø1H°Ô1HÈÑ1MÔ1M€GÐMÐMÐMÑMð ðAð Að Añ „[ðAð
 ð>ð >ð >ñ „[ð>ð ðð ñ „[ðð ðð ñ „[ðð ðð ñ „[ðð ðJð Jñ „[ðJð Jð JrS   rV   Úrowsú3Union[list[tuple[str, object]], list[list[object]]]Úheadersú!Union[tuple[str, ...], list[str]]ÚreturnÚstrc                óÀ   — 	 dd l }|                      | |¬¦  «        S # t          $ r6 d                     d„ t          j        |g| ¦  «        D ¦   «         ¦  «        cY S w xY w)Nr   ©r{   ú
c              3  óf   K  — | ],}d                       t          t          |¦  «        ¦  «        V — Œ-dS )ú, N)ÚjoinÚmapr~   )Ú.0Úrows     rT   ú	<genexpr>ztabulate.<locals>.<genexpr>æ   sG   è è € ð 
ð 
Ø),ˆD�IŠI•c�#˜s‘m”mÑ$Ô$ð
ð 
ð 
ð 
ð 
ð 
rS   )ÚtabulateÚImportErrorr„   Ú	itertoolsÚchain)ry   r{   r‰   s      rT   r‰   r‰   Ý   sŽ   € ð
Øˆˆˆà× Ò  ¨wÐ Ñ7Ô7Ð7øÝð 
ð 
ð 
Ø�yŠyð 
ð 
Ý09´ÀÀ	È4Ñ0PÔ0Pð
ñ 
ô 
ñ 
ô 
ð 	
ð 	
ð 	
ð
øøøs   ‚ �=AÁAÚNonec                 ó   — t           dz   a d S ©Nr1   )Ú
curr_framer>   rS   rT   Úincrement_framer‘   ï   s   € å˜a‘€J€J€JrS   c                 ón   — t                                ¦   «          t                               ¦   «          dad S ©Nr   )rH   rh   rF   r�   r>   rS   rT   Úreset_frame_countr”   õ   s/   € å×"Ò"Ñ$Ô$Ð$Ý×"Ò"Ñ$Ô$Ð$Ø€J€J€JrS   ÚcntrZ   c                ó   — t           | z  a d S rg   )Úop_count)r•   s    rT   Úincrement_op_countr˜   ÿ   s   € å��O€H€H€HrS   c                 ó¸   — i } t                                ¦   «         D ]\  }}|dz  | |<   Œ|                      dd¦  «        |                      dd¦  «        z   | d<   | S )Nç    eÍÍAÚentire_frame_compiler   Úentire_backward_compileÚtotal_wall_time)rH   Úitemsrk   )Útotal_by_keyÚphaseÚtimings      rT   Úcalculate_time_spentr¢     sx   € Ø€LÝ1×7Ò7Ñ9Ô9ð +ð +‰ˆˆvØ$ s™lˆ�UÑÐà&2×&6Ò&6Ø ñ'ô 'à×ÒÐ2°AÑ6Ô6ñ'7€LÐ"Ñ#ð ÐrS   c            	     ó¨   — t          ¦   «         } d}|                      ¦   «         D ]\  }}|› d|› dt          |d¦  «        › �}Œt          |¦  «         d S )NzTIMING:ú ú:é   )r¢   rž   ÚroundÚprint)rŸ   ÚoutÚkeyÚvalues       rT   Úprint_time_reportr¬     se   € Ý'Ñ)Ô)€Là
€CØ"×(Ò(Ñ*Ô*ð /ð /‰
ˆˆUØÐ.Ð.�sÐ.Ð.�U 5¨!™_œ_Ð.Ð.ˆˆå	ˆ#�J„J€J€J€JrS   r   Ú_METRICS_CONTEXTr    Ú_RUNTIME_METRICS_CONTEXTc                 ó   — t           S rg   )r­   r>   rS   rT   Úget_metrics_contextr°   9  s   € ÝÐrS   c                 ó   — t           S rg   )r®   r>   rS   rT   Úget_runtime_metrics_contextr²   =  s   € Ý#Ð#rS   c                  ó   — e Zd ZdZdZdZdZdS )ÚCompileEventLogLevelzÿ
    Enum that loosely corresponds with a "log level" of a given event.

    CHROMIUM_EVENT: Logs only to tlparse.
    COMPILE_EVENT: Logs to tlparse + PT2 Compile Events
    COMPILATION_METRIC: Logs to tlparse, PT2 Compile Events, and dynamo_compile
    r1   rK   rL   N)rM   rN   rO   Ú__doc__ÚCHROMIUMÚPT2_COMPILEÚCOMPILATION_METRICr>   rS   rT   r´   r´   A  s,   € € € € € ðð ð €HØ€KØÐÐÐrS   r´   c                  ó„  — e Zd ZdZedej        fd!d„¦   «         Ze	 d"d#d„¦   «         Ze	 d"d$d„¦   «         Z	ed%d„¦   «         Z
edej        fd&d„¦   «         Zed'd„¦   «         Zeej        fd(d„¦   «         Zed)d„¦   «         Zed)d„¦   «         Zed"d*d„¦   «         Ze	 d+d,d„¦   «         Zed)d„¦   «         Zed „ ¦   «         ZdS )-ÚCompileEventLoggeraÞ  
    Helper class for representing adding metadata(i.e. columns) to various compile events.
    Use CompileEventLogger to add event data to:
    - Chromium events
    - PT2 Compile Events
    - CompilationMetrics

    This should be used in conjunction with dynamo_timed() and metrics contexts, which create
    timed spans and events. CompileEventLogger uses three log levels (described in CompileEventLogLevel),
    where each log level logs to all sources below it in the hierarchy.

    Example usages:
    - I want to log to an existing chromium event within dynamo timed:
    with dynamo_timed("my_event"):
        CompileEventLogger.chromium("my_event", foo=bar)

    - I want to log my event to both chromium + pt2_compile_events:
    with dynamo_timed("my_event", log_pt2_compile_event=True):
        CompileEventLogger.pt2_compile("my_event", foo=bar)

    - I want to add information to dynamo events and dynamo_compile
        CompileEventLogger.compilation_metric(foo=bar)
    NÚ
event_namer~   ÚmetadatarD   Útime_nsúOptional[int]Ú	log_levelr´   c                óæ   — |€t          j        ¦   «         }t          ¦   «         }|t          j        k    rd}n"|t          j        k    rd}nt          d¦  «        ‚|                     | |||¦  «         d S )NFTzjCannot log instant event at COMPILATION_METRIC level. Please choose one of CHROMIUM_EVENT or COMPILE_EVENT)Útimer½   Úget_chromium_event_loggerr´   r¶   r·   ÚRuntimeErrorÚlog_instant_event)r»   r¼   r½   r¿   Úchromium_logÚlog_pt2_compile_events         rT   rÄ   z$CompileEventLogger.log_instant_eventh  s’   € ð ˆ?Ý”l‘n”nˆGÝ0Ñ2Ô2ˆØÕ,Ô5Ò5Ð5Ø$)Ð!Ð!ØÕ.Ô:Ò:Ð:Ø$(Ð!Ð!åØ|ñô ð ð 	×&Ò&Ø˜ Ð+@ñ	
ô 	
ð 	
ð 	
ð 	
rS   FÚ	overwriteÚboolÚobjectc                ó:  — t          ¦   «         }|                     ¦   «         }|t          j        k    r |j        | fi |¤Ž dS |t          j        k    r8|                     ¦   «         }| |vrt          d| ¦  «        ‚ |j        | fi |¤Ž dS |t          j        k    sJ ‚|                     ¦   «         }| |k    rt          d¦  «        ‚t          ¦   «         }| 
                    ¦   «         st          d¦  «        ‚|                     ||¦  «          |j        | fi |¤Ž dS )z¨
        Centralized API for adding data to various events
        Log an event to a toplevel "dynamo" event or metrics context
        depending on log level.
        zµError: specified log level PT2_COMPILE, but the event %s is not logged to pt2_compile_events. Make sure the event is active and you passed log_pt2_compile_event=True to dynamo_timedzµLog level is COMPILATION_METRIC, but event_name isn't the toplevel event. CompilationMetrics must be logged to the toplevel event. Consider using `log_toplevel_event_data` directly.z[No metrics context is in progress. Please only call this function within a metrics context.N)rÂ   Úget_pt2_compile_substackr´   r¶   Úadd_event_datar·   rÃ   r¸   Úget_outermost_eventr°   Úin_progressÚupdate)r»   r¿   rÇ   r¼   rÅ   Úpt2_compile_substackÚ	top_eventÚmetrics_contexts           rT   Úadd_datazCompileEventLogger.add_data~  sv  € õ 1Ñ2Ô2ˆØ+×DÒDÑFÔFÐàÕ,Ô5Ò5Ð5Ø'ˆLÔ'¨
Ð?Ð?°hÐ?Ð?Ð?Ð?Ð?ØÕ.Ô:Ò:Ð:Ø#/×#HÒ#HÑ#JÔ#JÐ ØÐ!5Ð5Ð5Ý"ðAð ñ	ô ð ð (ˆLÔ'¨
Ð?Ð?°hÐ?Ð?Ð?Ð?Ð?àÕ 4Ô GÒGÐGÐGÐGØ$×8Ò8Ñ:Ô:ˆIà˜YÒ&Ð&Ý"ðBñô ð õ 2Ñ3Ô3ˆOØ"×.Ò.Ñ0Ô0ð Ý"Øqñô ð ð
 ×"Ò" 8¨YÑ7Ô7Ð7Ø'ˆLÔ'¨
Ð?Ð?°hÐ?Ð?Ð?Ð?Ð?rS   c                ó�   — t          ¦   «                              ¦   «         }|€t          d¦  «        ‚t          j        || |fi |¤Ž dS )zC
        Syntactic sugar for logging to the toplevel event
        NzWNo toplevel event active. Please only call this function within a dynamo_timed context.)rÂ   rÍ   rÃ   rº   rÓ   )r¿   rÇ   r¼   rÑ   s       rT   Úadd_toplevelzCompileEventLogger.add_toplevel¬  s[   € õ .Ñ/Ô/×CÒCÑEÔEˆ	ØÐÝØiñô ð õ 	Ô# I¨y¸)ÐPÐPÀxÐPÐPÐPÐPÐPrS   rª   r«   rZ   c                óÆ  — t          ¦   «         }|t          j        k    s|t          j        k    r|                     | ||¦  «         dS |t          j        k    sJ ‚|                     ¦   «         }| |k    rt          d¦  «        ‚t          ¦   «         }| 	                    ¦   «         st          d¦  «        ‚|                     ||¦  «         |                     | ||¦  «         dS )z:
        Increments an existing field, or adds it
        z°Log level is COMPILATION_METRIC, but event_name isn't the toplevel event. CompilationMetrics must be logged to the toplevel event. Consider using `increment_toplevel` directly.úhNo metrics context is in progress. Please only call this function within a metrics context/dynamo_timed.N)
rÂ   r´   r¶   r·   Ú	incrementr¸   rÍ   rÃ   r°   rÎ   ©r»   r¿   rª   r«   rÅ   rÑ   rÒ   s          rT   rØ   zCompileEventLogger.incrementº  s   € õ 1Ñ2Ô2ˆàÕ-Ô6Ò6Ð6ØÕ0Ô<Ò<Ð<à×"Ò" :¨s°EÑ:Ô:Ð:Ð:Ð:àÕ 4Ô GÒGÐGÐGÐGØ$×8Ò8Ñ:Ô:ˆIØ˜YÒ&Ð&Ý"ð}ñô ð õ
 2Ñ3Ô3ˆOØ"×.Ò.Ñ0Ô0ð Ý"Ø~ñô ð ð ×%Ò% c¨5Ñ1Ô1Ð1Ø×"Ò" :¨s°EÑ:Ô:Ð:Ð:Ð:rS   r1   c                ó¦   — t          ¦   «         }|                     ¦   «         }|€t          d¦  «        ‚t                               ||| |¦  «         dS )zX
        Increments a value on the toplevel metric. By default, logs to metric.
        Nú_No toplevel event active. Please only call this function within a metrics context/dynamo_timed.)rÂ   rÍ   rÃ   rº   rØ   ©rª   r«   r¿   rÅ   rÑ   s        rT   Úincrement_toplevelz%CompileEventLogger.increment_toplevelÙ  s]   € õ 1Ñ2Ô2ˆØ ×4Ò4Ñ6Ô6ˆ	ØÐÝØqñô ð õ 	×$Ò$ Y°	¸3ÀÑFÔFÐFÐFÐFrS   r   c                óÆ  — t          ¦   «         }|t          j        k    s|t          j        k    r|                     | ||¦  «         dS |t          j        k    sJ ‚|                     ¦   «         }| |k    rt          d¦  «        ‚t          ¦   «         }| 	                    ¦   «         st          d¦  «        ‚|                     ||¦  «         |                     | ||¦  «         dS )zl
        Add metadata <value> to a set of values with key <key>. Creates a set if it doesn't exist.
        z¯Log level is COMPILATION_METRIC, but event_name isn't the toplevel event. CompilationMetrics must be logged to the toplevel event. Consider using `add_to_set_metric` directly.r×   N)
rÂ   r´   r¶   r·   Ú
add_to_setr¸   rÍ   rÃ   r°   rÎ   rÙ   s          rT   rß   zCompileEventLogger.add_to_setê  s   € õ 1Ñ2Ô2ˆàÕ-Ô6Ò6Ð6ØÕ0Ô<Ò<Ð<à×#Ò# J°°UÑ;Ô;Ð;Ð;Ð;àÕ 4Ô GÒGÐGÐGÐGØ$×8Ò8Ñ:Ô:ˆIØ˜YÒ&Ð&Ý"ð|ñô ð õ
 2Ñ3Ô3ˆOØ"×.Ò.Ñ0Ô0ð Ý"Ø~ñô ð ð ×&Ò& s¨EÑ2Ô2Ð2Ø×#Ò# J°°UÑ;Ô;Ð;Ð;Ð;rS   c                ó¦   — t          ¦   «         }|                     ¦   «         }|€t          d¦  «        ‚t                               ||| |¦  «         dS )z±
        Same as add to set, just does it automatically to the toplevel event instead of having to explicitly name it.
        Defaults to COMPILATION_METRIC log level.
        NrÛ   )rÂ   rÍ   rÃ   rº   rß   rÜ   s        rT   Úadd_to_set_toplevelz&CompileEventLogger.add_to_set_toplevel	  s]   € õ 1Ñ2Ô2ˆØ ×4Ò4Ñ6Ô6ˆ	ØÐÝØqñô ð õ 	×%Ò% i°¸CÀÑGÔGÐGÐGÐGrS   c                óD   — t          j        | t          j        fddi|¤Ž dS )zÓ
        Add <metadata> to <event_name> in chromium. Each key/value of metadata will appear in the chromium trace.
        <event_name> should be the name of a timed event span passed to `dynamo_timed`.
        rÇ   FN)rº   rÓ   r´   r¶   ©r»   r¼   s     rT   ÚchromiumzCompileEventLogger.chromium  sA   € õ 	Ô#ØÕ,Ô5ð	
ð 	
ØAFð	
ØJRð	
ð 	
ð 	
ð 	
ð 	
rS   c                óD   — t          j        | t          j        fddi|¤Ž dS )aƒ  
        Add <metadata> to <event_name> in chromium and PT2 Compile Events.
        Each key/value of metadata will appear in the chromium trace. Each kwarg name becomes
        a column in PT2 Compile Events, with the corresponding kwarg value.
        <event_name> should be the name of a timed event span passed to `dynamo_timed`,
        with log_to_pt2_compile_events=True.
        rÇ   FN)rº   rÓ   r´   r·   rã   s     rT   Úpt2_compilezCompileEventLogger.pt2_compile'  sA   € õ 	Ô#ØÕ,Ô8ð	
ð 	
ØDIð	
ØMUð	
ð 	
ð 	
ð 	
ð 	
rS   c                ó@   — t          j        t          j        | fi |¤Ž dS )a6  
        Add <metadata> to the CompilationMetrics context. Also logs to PT2 Compile Events
        and chromium.
        Each key/value of metadata will appear in the chromium trace. Each kwarg name becomes
        a column in PT2 Compile Events and Dynamo Compile, with the corresponding kwarg value.
        N)rº   rÕ   r´   r¸   )rÇ   r¼   s     rT   Úcompilation_metricz%CompileEventLogger.compilation_metric4  s8   € õ 	Ô'Ý Ô3°Yð	
ð 	
ØBJð	
ð 	
ð 	
ð 	
ð 	
rS   c                óT   — t                                | ||t          j        ¦  «         dS )zØ
        Log an instant event to chromium logs with name <event_name> at time <time_ns>. The `args` field in
        Perfetto will point to metadata. <time_ns> should be a value obtained from time.time_ns().
        N)rº   rÄ   r´   r¶   )r»   r¼   r½   s      rT   ÚinstantzCompileEventLogger.instant@  s3   € õ 	×,Ò,Ø˜ 'Õ+?Ô+Hñ	
ô 	
ð 	
ð 	
ð 	
rS   c                ó^   — t          ¦   «         sdS t          ¦   «         } |j        | fi |¤Ž dS )zô
        Adds to an existing pt2_compile event, but silently returns if the event doesn't exist
        or ChromiumEventLogger is not initialized.
        This function is syntactic sugar for chromium_event_logger().try_add_event_data.
        N)Úchromium_event_log_activerÂ   Útry_add_event_data)r»   r¼   rÅ   s      rT   Útry_add_pt2_compilez&CompileEventLogger.try_add_pt2_compileL  sC   € õ )Ñ*Ô*ð 	ØˆFÝ0Ñ2Ô2ˆØ'ˆÔ'¨
Ð?Ð?°hÐ?Ð?Ð?Ð?Ð?rS   c                ó~   — t          ¦   «         sdS t          ¦   «         }|                     ¦   «         sdS  | |i |¤Ž dS )zŠ
        Special function that quietly runs a given method, returning if CHROMIUM_EVENT_LOG is None or metrics context is not set
        N)rì   r°   rÎ   )Ú	method_fnÚargsÚkwargsrÒ   s       rT   Útry_zCompileEventLogger.try_X  sV   € õ
 )Ñ*Ô*ð 	ØˆFÝ-Ñ/Ô/ˆØ×*Ò*Ñ,Ô,ð 	ØˆFØˆ	�4Ð"˜6Ð"Ð"Ð"Ð"Ð"rS   )r»   r~   r¼   rD   r½   r¾   r¿   r´   ©F)r»   r~   r¿   r´   rÇ   rÈ   r¼   rÉ   )r¿   r´   rÇ   rÈ   r¼   rÉ   )r»   r~   r¿   r´   rª   r~   r«   rZ   )rª   r~   r«   rZ   r¿   r´   )r»   r~   r¿   r´   rª   r~   r«   r   )rª   r~   r«   r   r¿   r´   )r»   r~   r¼   rÉ   )rÇ   rÈ   r¼   rÉ   rg   )r»   r~   r¼   rD   r½   r¾   )rM   rN   rO   rµ   Ústaticmethodr´   r¶   rÄ   rÓ   rÕ   rØ   r¸   rÝ   rß   rá   rä   ræ   rè   rê   rî   ró   r>   rS   rT   rº   rº   O  s  € € € € € ðð ð0 ð "&Ø*>Ô*Gð	
ð 
ð 
ð 
ñ „\ð
ð* ð  ð+@ð +@ð +@ð +@ñ „\ð+@ðZ à;@ðQð Qð Qð Qñ „\ðQð ð;ð ;ð ;ñ „\ð;ð< ð Ø*>Ô*QðGð Gð Gð Gñ „\ðGð  ð<ð <ð <ñ „\ð<ð< ð +?Ô*QðHð Hð Hð Hñ „\ðHð& ð
ð 
ð 
ñ „\ð
ð ð

ð 

ð 

ñ „\ð

ð ð	
ð 	
ð 	
ð 	
ñ „\ð	
ð àLPð	
ð 	
ð 	
ð 	
ñ „\ð	
ð ð	@ð 	@ð 	@ñ „\ð	@ð ð	#ð 	#ñ „\ð	#ð 	#ð 	#rS   rº   Frª   Ú
phase_nameúOptional[str]rÆ   rÈ   r¼   úOptional[dict[str, object]]Údynamo_compile_column_usÚ
compile_idúOptional[CompileId]Úis_backwardúOptional[bool]Úlog_waitcounterÚwaitcounter_name_overrideúGenerator[Any, None, None]c	           
   #  ó`	  K  — |r|}	| }
n| }	d}
| t           vr
g t           | <   i }|r|                     |¦  «         |
r|                     d|
i¦  «         |�|                     d|i¦  «         t          ¦   «         }t          j        ¦   «         }|                     |	||||¦  «         t          j                             | › d�¦  «        g}|r=|r|n| }| 	                    t          d|› �¦  «                             ¦   «         ¦  «         t          j        j                             ¦   «         du}|rÉ|                     d¦  «        sJ ‚t!          t"          d¦  «        sdt"          _        t"          xj        d	z  c_        t"          j        d	k    rl| 	                    t          d
¦  «                             ¦   «         ¦  «         |s6d}| 	                    t          |¦  «                             ¦   «         ¦  «         	 t'          j        ¦   «         5 }|D ]}|                     |¦  «         ŒdV — ddd¦  «         n# 1 swxY w Y   t          j        ¦   «         }||z
  }t           |           	                    |dz  ¦  «         |                     |	|i |||¦  «         |rÝt.          |	xx         |z  cc<   t"          xj        d	z  c_        t"          j        dk    }|dz  }|rVt1          ¦   «         }|                     ¦   «         r0|                     ||¦  «         |r|                     d|¦  «         dS dS dS t7          ¦   «         }|                     ||¦  «         |r"|d| dœ}|                     d||¦  «         dS dS dS # t          j        ¦   «         }||z
  }t           |           	                    |dz  ¦  «         |                     |	|i |||¦  «         |rÙt.          |	xx         |z  cc<   t"          xj        d	z  c_        t"          j        dk    }|dz  }|rSt1          ¦   «         }|                     ¦   «         r/|                     ||¦  «         |r|                     d|¦  «         w w w t7          ¦   «         }|                     ||¦  «         |r |d| dœ}|                     d||¦  «         w w w xY w)aÄ  
    dynamo_timed is a context manager
    By wrapping a function in dynamo_timed, we can get a few things:

    1) Optionally log timings to pt2_compile_events.
    2) Optionally log timings to CompilationMetrics (dynamo_compile).
    3) Optionally log chromium events.
    4) Optionally increment a WaitCounter.
    5) Store a record in compilation_time_metrics
       For example:

        def _foo(...):
            with dynamo_timed("_foo"):
                ...

        Would show up as an entry in our timing dict:
        OrderedDict([('_foo', [0.083690, 0.23949, 3.1425e-05])])
        This is extremely useful for granular debugging.

    Although it is tempting to use dynamo_timed as a decorator, please do not.
    In its decorator form it makes cProfile traces less useful as dynamo_timed
    suddenly becomes a bottleneck for lots of function calls (as only one parent
    pointer is recorded).

    Params:
    - key: key into compile_time_metrics. If phase_name is not provided, this is
      also the event name used for pt2_compile_events logs and chromium events.
    - phase_name: Optional override for the event name.
    - log_pt2_compile_event: Whether to log a pt2 compile event internally.
    - metadata: Extra metadata to put in pt2_compile_events.
    - dynamo_compile_column_us: If provided, updates the specified CompilationMetrics
      field to be logged to dyname_compile column. We expect all columns to be _us;
      therefore, the field name must end with "_us".
    - compile_id: In the typical case, this parameter should not be needed. Use to
      supply the compile_id for those cases where we want to log a compile_id where
      it's not naturally available, e.g., for runtime autotuning.
    - is_backward: Specify forward/backward directly when not available in a
      CompileContext, e.g., during runtime autotuning.
      that support it.
    - log_waitcounter: If set, we'll log a waitcounter of the form "pytorch.dynamo_timed.{key}"
    NÚfn_namerü   z (dynamo_timed)zpytorch.wait_counter.Ú_usÚdepthr   r1   z#pytorch.wait_counter.dynamo_compilez.pytorch.wait_counter.compile_runtime_overheadsrš   éè  Úduration_usT)rú   Ú
is_runtimeÚ
is_forward)rF   rÏ   rÂ   rÁ   r½   Úlog_event_startÚtorchÚprofilerÚrecord_functionÚappendr,   ÚguardÚ_guardsÚCompileContextÚcurrent_compile_idÚendswithÚhasattrÚ_dynamo_timed_tlsr  Ú
contextlibÚ	ExitStackÚenter_contextÚlog_event_endrH   r°   rÎ   rØ   r²   )rª   rö   rÆ   r¼   rù   rú   rü   rþ   rÿ   r»   r  Úevent_metadatarÅ   Ústart_nsÚcx_mgrsÚwc_nameÚis_compile_timeÚ
runtime_wcÚstackÚcxÚend_nsÚtime_spent_nsÚis_outer_eventr  rÒ   Úruntime_contextÚextras                              rT   Údynamo_timedr&  h  só  è è € ðl ð Øˆ
Øˆˆàˆ
Øˆà
Õ*Ð*Ð*Ø(*Õ  Ñ%à€NØð (Ø×Ò˜hÑ'Ô'Ð'Øð 4Ø×Ò˜y¨'Ð2Ñ3Ô3Ð3ØÐØ×Ò˜}¨kÐ:Ñ;Ô;Ð;å(AÑ(CÔ(C€LÝŒ|‰~Œ~€HØ× Ò Ø�H˜nÐ.CÀZñô ð õ
 	Œ×&Ò&¨#Ð'>Ð'>Ð'>Ñ?Ô?ð!€Gð ð PØ/HÐQÐ+Ð+ÈcˆØ�Š•|Ð$E¸GÐ$EÐ$EÑFÔF×LÒLÑNÔNÑOÔOÐOå”mÔ2×EÒEÑGÔGÈtÐS€OØð Aà'×0Ò0°Ñ7Ô7Ð7Ð7Ð7õ Õ(¨'Ñ2Ô2ð 	(Ø&'ÕÔ#ÝÐÔ 1Ñ$ÐÔõ Ô" aÒ'Ð'Ø�NŠN�<Ð(MÑNÔN×TÒTÑVÔVÑWÔWÐWØ"ð AØM�
Ø—’�|¨JÑ7Ô7×=Ò=Ñ?Ô?Ñ@Ô@Ð@ð(QÝÔ!Ñ#Ô#ð 	 uØð (ð (�Ø×#Ò# BÑ'Ô'Ð'Ð'ØˆEˆEˆEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ
 ”‘”ˆØ Ñ)ˆÝ  Ô%×,Ò,¨]¸SÑ-@ÑAÔAÐAØ×"Ò"Ø˜  HÐ.CÀZñ	
ô 	
ð 	
ð $ð 	Qõ % ZÐ0Ð0Ô0°MÑAÐ0Ð0Ñ0õ Ð#Ô# qÑ(Ð#Ô#Ý.Ô4¸Ò9ˆNà'¨4Ñ/ˆKØð QÝ"5Ñ"7Ô"7�Ø"×.Ò.Ñ0Ô0ð NØ#×-Ò-Ð.FÈÑTÔTÐTØ%ð NØ'×1Ò1°-ÀÑMÔMÐMÐMÐMðNð NðNð Nõ #>Ñ"?Ô"?�Ø×)Ò)Ð*BÀKÑPÔPÐPØ!ð Qà&0Ø&*Ø*5 oðð �Eð
 $×-Ò-¨m¸[È%ÑPÔPÐPÐPÐPð9	Qð 	Qð,Qð Qøõ9 ”‘”ˆØ Ñ)ˆÝ  Ô%×,Ò,¨]¸SÑ-@ÑAÔAÐAØ×"Ò"Ø˜  HÐ.CÀZñ	
ô 	
ð 	
ð $ð 	Qõ % ZÐ0Ð0Ô0°MÑAÐ0Ð0Ñ0õ Ð#Ô# qÑ(Ð#Ô#Ý.Ô4¸Ò9ˆNà'¨4Ñ/ˆKØð QÝ"5Ñ"7Ô"7�Ø"×.Ò.Ñ0Ô0ð NØ#×-Ò-Ð.FÈÑTÔTÐTØ%ð NØ'×1Ò1°-ÀÑMÔMÐMÐMðNðNõ #>Ñ"?Ô"?�Ø×)Ò)Ð*BÀKÑPÔPÐPØ!ð Qà&0Ø&*Ø*5 oðð �Eð
 $×-Ò-¨m¸[È%ÑPÔPÐPÐPð9	Qð,Qøøøs1   Ç9M: ÈH7È+M: È7H;È;M: È>H;È?M: Í:D3R-ÚreprúLiteral['str']Ú	aggregatec                ó   — d S rg   r>   ©r'  r)  s     rT   Úcompile_timesr,  ú  s   € ØILÈrS   úLiteral['csv']útuple[list[str], list[object]]c                ó   — d S rg   r>   r+  s     rT   r,  r,  þ  s	   € ð &) SrS   c                ó&  ‡‡— d„ fˆfd„	Š| dk    r+ˆfd„t           D ¦   «         }d}|t          |d¬¦  «        z  }|S | dk    rOˆfd	„t                                ¦   «         D ¦   «         }t          t                                ¦   «         ¦  «        }||fS d
S )a¿  
    Get metrics about torchdynamo frontend/backend compilation times.

    Accumulates information from functions tagged with `dynamo_timed`.

    repr='str' returns a printable string for user interaction, and 'csv'
    returns headers, rows which can be logged for output

    aggregate causes values from multiple compilations (e.g. split graphs)
    to be accumulated into one value.  If false, expect more than one value
    per metric.
    c                ó   — | S rg   r>   ©Úxs    rT   ú<lambda>zcompile_times.<locals>.<lambda>  s   € ¨€ rS   c                ó~   •— ‰r |t          | ¦  «        ¦  «        S d                     t          || ¦  «        ¦  «        S )Nrƒ   )rm   r„   r…   )ÚvaluesÚitem_fnr)  s     €rT   Úfmt_fnzcompile_times.<locals>.fmt_fn  s=   ø€ Øð 	(Ø�7�3˜v™;œ;Ñ'Ô'Ð'Ø�yŠy�˜W fÑ-Ô-Ñ.Ô.Ð.rS   r~   c                óF   •— g | ]}| ‰t           |         d „ ¬¦  «        f‘ŒS )c                ó
   — | d›S )Nz.4fr>   r2  s    rT   r4  z*compile_times.<locals>.<listcomp>.<lambda>  s
   € ÈÀjÀj€ rS   ©r7  )rF   )r†   Úkr8  s     €rT   ú
<listcomp>z!compile_times.<locals>.<listcomp>  sG   ø€ ð 
ð 
ð 
àð ��Õ/°Ô2Ð<PÐ<PÐQÑQÔQÐRð
ð 
ð 
rS   z!TorchDynamo compilation metrics:
)ÚFunctionzRuntimes (s)r€   Úcsvc                ó,   •— g | ]} ‰|d „ ¬¦  «        ‘ŒS )c                ó
   — | d›S )Nz.6fr>   r2  s    rT   r4  z*compile_times.<locals>.<listcomp>.<lambda>!  s
   € ¨1¨
¨
€ rS   r;  r>   )r†   Úvr8  s     €rT   r=  z!compile_times.<locals>.<listcomp>   s<   ø€ ð 
ð 
ð 
àð ˆF�1Ð2Ð2Ð3Ñ3Ô3ð
ð 
ð 
rS   N)rF   r‰   r6  ÚlistÚkeys)r'  r)  ry   r©   r6  r{   r8  s    `    @rT   r,  r,    sè   øø€ ð  +˜{ð /ð /ð /ð /ð /ð /ð
 ˆu‚}€}ð
ð 
ð 
ð 
å-ð
ñ 
ô 
ˆð 3ˆØ�x˜Ð&BÐCÑCÔCÑCˆØˆ
Ø	�Šˆð
ð 
ð 
ð 
å-×4Ò4Ñ6Ô6ð
ñ 
ô 
ˆõ Õ/×4Ò4Ñ6Ô6Ñ7Ô7ˆØ˜ˆÐØˆ4rS   c                 óX   — t                                t          dd¬¦  «        ¦  «         d S )Nr~   Tr+  )rt   Úinfor,  r>   rS   rT   Údump_compile_timesrG  )  s'   € å‡H‚H�] °Ð6Ñ6Ô6Ñ7Ô7Ð7Ð7Ð7rS   c                  ó&   — e Zd Zddd„Zd„ Zdd„ZdS )ÚDuplicateWarningCheckeré   ÚmaxsizerZ   r}   r�   c                ó<   — || _         |                      ¦   «          d S rg   )rK  Úreset)ÚselfrK  s     rT   Ú__init__z DuplicateWarningChecker.__init__=  s   € ØˆŒØ�
Š
‰ŒˆˆˆrS   c                ó,   — t          ¦   «         | _        d S rg   )r   Úset©rN  s    rT   rM  zDuplicateWarningChecker.resetA  s   € Ý‘=”=ˆŒˆˆrS   rª   ú!Union[str, tuple[object, object]]rÈ   c                ó,  — || j         v r+| j                              |d¬¦  «         t          j        sdS n_d | j         |<   t	          | j         ¦  «        | j        k    r8| j                              d¬¦  «         t	          | j         ¦  «        | j        k    °8dS )NT)ÚlastF)rQ  Úmove_to_endr<   ÚverboseÚlenrK  Úpopitem©rN  rª   s     rT   ÚaddzDuplicateWarningChecker.addD  s“   € Ø�$”(ˆ?ˆ?ØŒH× Ò  ¨4Ð Ñ0Ô0Ð0Ý”>ð Ø�uðð !ˆDŒH�S‰MÝ�d”h‘-”- $¤,Ò.Ð.Ø”× Ò  eÐ Ñ,Ô,Ð,õ �d”h‘-”- $¤,Ò.Ð.àˆtrS   N)rJ  )rK  rZ   r}   r�   )rª   rS  r}   rÈ   )rM   rN   rO   rO  rM  r[  r>   rS   rT   rI  rI  <  sP   € € € € € ðð ð ð ð ð!ð !ð !ð	ð 	ð 	ð 	ð 	ð 	rS   rI  c                 ó�   — t           j                             dd¦  «        dk    } | rt          ¦   «         S t	          j        ¦   «         S )NÚTORCH_COMPILE_DEBUGÚ0Ú1)ÚosÚenvironrk   Úadd_file_handlerr  r  )Úcompile_debugs    rT   Úsetup_compile_debugrd  S  s@   € Ý”J—N’NÐ#8¸#Ñ>Ô>À#ÒE€Màð "ÝÑ!Ô!Ð!åÔÑ!Ô!Ð!rS   c                 ó8   — t                                ¦   «          d S rg   )Úgraph_break_dup_warning_checkerrM  r>   rS   rT   Úreset_graph_break_dup_checkerrg  \  s   € Ý#×)Ò)Ñ+Ô+Ð+Ð+Ð+rS   c                 óœ  ‡‡— t           j                             t          ¦   «         d¦  «        } t          j        | d¬¦  «         t          j        t           j                             | d¦  «        ¦  «        Št          j        d¦  «        Š‰                     ‰¦  «         t          j
        ¦   «         }|                     ˆˆfd„¦  «         |S )NÚtorchdynamoT©Úexist_okz	debug.logztorch._dynamoc                 ó.   •— ‰                      ‰ ¦  «        S rg   ©ÚremoveHandler©Úlog_file_handlerÚloggers   €€rT   r4  z"add_file_handler.<locals>.<lambda>i  s   ø€ ˜v×3Ò3Ð4DÑEÔE€ rS   )r`  Úpathr„   Úget_debug_dirÚmakedirsÚloggingÚFileHandlerÚ	getLoggerÚ
addHandlerr  r  Úcallback)Úlog_pathÚ	exitstackrp  rq  s     @@rT   rb  rb  `  s­   øø€ ÝŒw�|Š|�M™OœO¨]Ñ;Ô;€HÝ„K� 4Ð(Ñ(Ô(Ð(åÔ*­2¬7¯<ª<¸À+Ñ+NÔ+NÑOÔOÐÝÔ˜Ñ/Ô/€FØ
×ÒÐ&Ñ'Ô'Ð'åÔ$Ñ&Ô&€IØ×ÒÐEÐEÐEÐEÐEÑFÔFÐFØÐrS   c                 ó0  ‡‡— t          j        ¦   «         } t          j        �tt	          j        t          j        ¦  «        Št          j        j         	                    ¦   «         D ]0Š‰ 
                    ‰¦  «         |                      ˆˆfd„¦  «         Œ1| S | S )Nc                 ó.   •— ‰                      ‰ ¦  «        S rg   rm  ro  s   €€rT   r4  z setup_log_file.<locals>.<lambda>s  s   ø€  v×';Ò';Ð<LÑ'MÔ'M€ rS   )r  r  r<   Úlog_file_nameru  rv  r
  Ú_loggingÚ	_internalÚget_loggersrx  ry  )r{  rp  rq  s    @@rT   Úsetup_log_filer‚  m  s–   øø€ ÝÔ$Ñ&Ô&€IÝÔÐ'Ý"Ô.­vÔ/CÑDÔDÐÝ”nÔ.×:Ò:Ñ<Ô<ð 	Oð 	OˆFØ×ÒÐ.Ñ/Ô/Ð/Ø×ÒÐMÐMÐMÐMÐMÑNÔNÐNÐNØÐàÐrS   c                ón   — t          ¦   «         › d|j        › dt          | ¦  «        j        › d|j        › d�S )Nz/error_recordings/Ú_z.rec)rs  Úco_nameÚtyperM   Úco_firstlineno)ÚexcÚcodes     rT   Úgen_record_file_namerŠ  y  sR   € Ý‰oŒoð ?ð ?Ø„ð?ð ?Ý�S‘	”	Ô"ð?ð ?Ø%)Ô%8ð?ð ?ð ?ð ?rS   Úfilenamec                óº  — 	 t           j                             | ¦  «        rt                               d| ¦  «         d S t          j        t           j                             | ¦  «        d¬¦  «         t          | d¦  «        5 }|                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S # t          $ r t           
                    d| ¦  «         Y d S w xY w)Nz9Unable to write execution record %s; file already exists.Trj  Úwbz#Unable to write execution record %s)r`  rr  Úexistsrt   Úwarningrt  ÚdirnameÚopenÚdumpÚ	ExceptionÚ	exception)r‹  Úexec_recordÚfs      rT   Úwrite_record_to_filer—  ~  s*  € ð
GÝŒ7�>Š>˜(Ñ#Ô#ð 	$Ý�KŠKØKÈXñô ð ð ð õ ŒK�œŸš¨Ñ1Ô1¸DÐAÑAÔAÐAÝ�h Ñ%Ô%ð $¨Ø× Ò  Ñ#Ô#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $øåð Gð Gð GÝ�ŠÐ;¸XÑFÔFÐFÐFÐFÐFðGøøøs;   ‚:B1 ¾AB1 ÂB$ÂB1 Â$B(Â(B1 Â+B(Â,B1 Â1%CÃCÚgúfx.Graphc                ó:   — d}| j         D ]}d|j        v r|dz  }Œ|S )Nr   Úcallr1   )ÚnodesÚop)r˜  ÚcÚns      rT   Úcount_callsr   Œ  s2   € Ø	€AØŒWð ð ˆØ�Q”Tˆ>ˆ>Ø�‰FˆAøØ€HrS   r3  c                ó   — | S rg   r>   r2  s    rT   Úidentityr¢  ”  s   € Ø€HrS   c                ó`   — 	 t          | ¦  «         dS # t          $ r Y dS t          $ r Y dS w xY w©NTF)ÚhashÚ	TypeErrorÚ
ValueErrorr2  s    rT   Úhashabler¨  ˜  sR   € ðÝˆQ‰ŒˆØˆtøÝð ð ð Øˆuˆuåð ð ð Øˆuˆuðøøøs   ‚ “
- 	-¬-c                 ó   — d S rg   r>   ©rñ   rò   s     rT   Únothingr«  £  s   € Ø€DrS   c                  ó>   — e Zd ZdZd„ Zd„ Zd
d„Zd„ Zd„ Zd„ Z	d	„ Z
dS )ÚExactWeakKeyDictionaryz\Similar to weakref.WeakKeyDictionary, but use `is`/`id` rather than `==` to compare equalityc                ó"   — i | _         i | _        d S rg   ©r6  ÚrefsrR  s    rT   rO  zExactWeakKeyDictionary.__init__ª  s   € ØˆŒØˆŒ	ˆ	ˆ	rS   c                ó6   — | j         t          |¦  «                 S rg   )r6  ÚidrZ  s     rT   Ú__getitem__z"ExactWeakKeyDictionary.__getitem__®  s   € ØŒ{�2˜c™7œ7Ô#Ð#rS   Nc                óR   — | j                              t          |¦  «        |¦  «        S rg   )r6  rk   r²  )rN  rª   Údefaults      rT   rk   zExactWeakKeyDictionary.get±  s   € ØŒ{�Š�r #™wœw¨Ñ0Ô0Ð0rS   c                ó.   — t          |¦  «        | j        v S rg   )r²  r6  rZ  s     rT   Ú__contains__z#ExactWeakKeyDictionary.__contains__´  s   € Ý�#‰wŒw˜$œ+Ð%Ð%rS   c                ó�   ‡ ‡— t          |¦  «        Š‰‰ j        vr!t          j        |ˆˆ fd„¦  «        ‰ j        ‰<   |‰ j        ‰<   d S )Nc                ó.   •— ‰                      ‰¦  «        S rg   )Ú
_remove_id)ÚrefÚidxrN  s    €€rT   r4  z4ExactWeakKeyDictionary.__setitem__.<locals>.<lambda>º  s   ø€ ¸$¿/º/È#Ñ:NÔ:N€ rS   )r²  r°  Úweakrefr»  r6  )rN  rª   r«   r¼  s   `  @rT   Ú__setitem__z"ExactWeakKeyDictionary.__setitem__·  sR   øø€ Ý�‰gŒgˆØ�d”iÐÐÝ$œ[¨Ð.NÐ.NÐ.NÐ.NÐ.NÑOÔOˆDŒI�c‰NØ ˆŒ�CÑÐÐrS   c                óN   — || j         v r| j         |= || j        v r
| j        |= d S d S rg   r¯  )rN  r¼  s     rT   rº  z!ExactWeakKeyDictionary._remove_id½  s;   € Ø�$”+ÐÐØ”˜CÐ Ø�$”)ÐÐØ”	˜#���ð ÐrS   c                ój   — | j                              ¦   «          | j                             ¦   «          d S rg   )r°  rh   r6  rR  s    rT   rh   zExactWeakKeyDictionary.clearÃ  s.   € ØŒ	�ŠÑÔÐØŒ×ÒÑÔÐÐÐrS   rg   )rM   rN   rO   rµ   rO  r³  rk   r·  r¾  rº  rh   r>   rS   rT   r­  r­  §  sˆ   € € € € € ØfÐfðð ð ð$ð $ð $ð1ð 1ð 1ð 1ð&ð &ð &ð!ð !ð !ðð ð ðð ð ð ð rS   r­  ÚobjrÉ   Úallowed_typesútype[T]ú	TypeIs[T]c                ó   — d S rg   r>   ©rÁ  rÂ  s     rT   ÚistyperÇ  È  s   € Ø>A¸crS   ú)tuple[type[list[T]], type[tuple[T, ...]]]c                ó   — d S rg   r>   rÆ  s     rT   rÇ  rÇ  Ì  s	   € ð �rS   úIterable[type]c                ó   — d S rg   r>   rÆ  s     rT   rÇ  rÇ  Ò  s   € Ø@CÀrS   c                óŠ   — t          |t          t          t          f¦  «        rt	          | ¦  «        |v S t	          | ¦  «        |u S )zisinstance() without subclasses)Ú
isinstanceÚtuplerC  rQ  r†  rÆ  s     rT   rÇ  rÇ  Ö  s=   € å�-¥%­­sÐ!3Ñ4Ô4ð *Ý�C‰yŒy˜MÐ)Ð)Ý�‰9Œ9˜Ð%Ð%rS   ©rL   é   c                ó    — t           j        dk    rt          | t          ¦  «        rdS t          | t          j        ¦  «        p| t          j        u S )NrÏ  T)ÚsysÚversion_inforÍ  Ú_builtin_final_typing_classesÚtypingÚ_Finalr   ©r«   s    rT   Ú	is_typingrØ  ê  sE   € õ Ô˜7Ò"Ð"¥z°%Õ9VÑ'WÔ'WÐ"ØˆtÝ�e�Vœ]Ñ+Ô+ÐF¨u½¼Ð/FÐFrS   c                óä   — t           sdS t          | t           j        t           j        t           j        t           j        t           j        t           j        t           j        t           j	        f¦  «        S ©NF)
ÚnprÇ  Úint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64r×  s    rT   Úis_numpy_int_typerä  ø  sQ   € Ýð ØˆuåØåŒGÝŒHÝŒHÝŒHÝŒHÝŒIÝŒIÝŒIð		
ñô ð rS   c                óv   — t           sdS t          | t           j        t           j        t           j        f¦  «        S rÚ  )rÛ  rÇ  Úfloat16Úfloat32Úfloat64r×  s    rT   Úis_numpy_float_typeré    s8   € Ýð ØˆuåØåŒJÝŒJÝŒJð	
ñô ð rS   r«   úCallable[..., T]ú*TypeGuard[functools._lru_cache_wrapper[T]]c                ó   — d S rg   r>   r×  s    rT   Úis_lru_cache_wrapped_functionrí    s	   € ð 25°rS   r   ú,TypeGuard[functools._lru_cache_wrapper[Any]]c                ó   — d S rg   r>   r×  s    rT   rí  rí    s	   € ð 47°3rS   c                óz   — t          | t          j        ¦  «        o!t          t	          j        | d¦  «        ¦  «        S )NÚ__wrapped__)rÍ  Ú	functoolsÚ_lru_cache_wrapperÚis_functionÚinspectÚgetattr_staticr×  s    rT   rí  rí  %  s<   € õ �e�YÔ9Ñ:Ô:ð ½{ÝÔ˜u mÑ4Ô4ñ@ô @ð rS   r   Ú
_FuncTypesúMTypeIs[Union[_FuncTypes, torch._ops.OpOverloadPacket, torch._ops.OpOverload]]c                ó€   — t          | ¦  «        p/t          | t          j        j        t          j        j        f¦  «        S rg   )rô  rÍ  r
  Ú_opsÚOpOverloadPacketÚ
OpOverloadr×  s    rT   Úis_function_or_wrapperrý  5  s9   € õ �uÑÔð ¥Ø•”
Ô+­U¬ZÔ-BÐCñ"ô "ð rS   úTypeIs[_FuncTypes]c                óz   — t          | t          j        t          j        t          j        t          j        f¦  «        S rg   )rÍ  ÚtypesÚFunctionTypeÚBuiltinFunctionTypeÚMethodDescriptorTypeÚWrapperDescriptorTyper×  s    rT   rô  rô  =  s6   € õ ØåÔÝÔ%ÝÔ&ÝÔ'ð		
ñô ð rS   )Ú__eq__Ú__ne__Ú__lt__Ú__le__Ú__gt__Ú__ge__z==z!=ú<z<=ú>z>=ú—TypeIs[Union[types.GetSetDescriptorType, types.MethodDescriptorType, types.WrapperDescriptorType, types.MemberDescriptorType, types.MethodWrapperType]]c                ó�   — t          | t          j        t          j        t          j        t          j        t          j        f¦  «        S rg   )rÍ  r   ÚGetSetDescriptorTyper  r  ÚMemberDescriptorTyper   r×  s    rT   Úis_wrapper_or_member_descriptorr  _  s>   € õ Øõ Ô&åÔ&åÔ'åÔ&åÔ#ð	
ñô ð rS   c                ó,   — t          | ¦  «        d         S r“   )Ú unwrap_with_attr_name_if_wrapper)Úfns    rT   Úunwrap_if_wrapperr  {  s   € Ý+¨BÑ/Ô/°Ô2Ð2rS   c                óŠ   — t          | ¦  «        r/t          j        | dd¦  «        rt          j        | d| ¦  «        } d}nd }| |fS )NÚ_torchdynamo_inlineF)rô  rõ  rö  )r  Ú	attr_names     rT   r  r    sT   € õ �2�„ð �7Ô1°"Ð6KÈUÑSÔSð ÝÔ# BÐ(=¸rÑBÔBˆØ)ˆ	ˆ	àˆ	Øˆyˆ=ÐrS   c                óH   — t           sdS t          | t           j        ¦  «        S rÚ  )rÛ  rÇ  Úndarrayr×  s    rT   Úis_numpy_ndarrayr  Š  s!   € Ýð Øˆuå�%�œÑ$Ô$Ð$rS   c                ó    — t           j        t           j        j        gt          j        ¢R }|t           j        j        fz   }t          | |¦  «        S )zCheck of obj is a tensor)	r
  ÚTensorÚnnÚ	Parameterr<   Útraceable_tensor_subclassesÚ_subclassesr?   rÇ  )rÁ  Útensor_lists     rT   Úistensorr#  ‘  sO   € õ 	ŒÝŒÔð%õ 
Ô	+ð%ð %€Kð
 ¥Ô!2Ô!=Ð ?Ñ?€KÝ�#�{Ñ#Ô#Ð#rS   c                ó,   — t          | t          ¦  «        S rg   )rÍ  r-   )Úmods    rT   Úis_lazy_moduler&  œ  s   € Ý�c�?Ñ+Ô+Ð+rS   rJ  c                 ó   — t          | Ž  d S rg   )r¨   ©rñ   s    rT   Ú
print_oncer)     s   € å	ˆ4€L€L€L€LrS   c                ón   ‡— | Šˆfd„}|j         �t          |j         ¦  «        dk    sJ ‚|j         d         S )zNSome black magic to create a cell object that usually only exists in a closurec                 ó   •— ‰ S rg   r>   r2  s   €rT   r–  zmake_cell.<locals>.f©  s   ø€ ØˆrS   Nr1   r   )Ú__closure__rX  )Úvalr–  r3  s     @rT   Ú	make_cellr.  ¥  sR   ø€ à€Aðð ð ð ð ð Œ=Ð$­¨Q¬]Ñ);Ô);¸qÒ)@Ð)@Ð)@Ð)@ØŒ=˜ÔÐrS   c                ó8  — 	 t          d„ | D ¦   «         ¦  «        }d„ |                     ¦   «         D ¦   «         }||fS # t          $ rR}ddlm} ddlm}  |dd || Ž › d |t          |                     ¦   «         ¦  «        Ž › �d	g |¬
¦  «         Y d }~d S d }~ww xY w)Nc              3  ó>   K  — | ]}|                      ¦   «         V — Œd S rg   ©Úas_proxy©r†   Úargs     rT   rˆ   z$proxy_args_kwargs.<locals>.<genexpr>²  s*   è è € Ð:Ð:¨c˜3Ÿ<š<™>œ>Ð:Ð:Ð:Ð:Ð:Ð:rS   c                ó>   — i | ]\  }}||                      ¦   «         “ŒS r>   r1  )r†   rª   r4  s      rT   ú
<dictcomp>z%proxy_args_kwargs.<locals>.<dictcomp>³  s&   € ÐKÐKÐK±°°S˜˜SŸ\š\™^œ^ÐKÐKÐKrS   r1   ©Úunimplemented_v2)Útypestrz&Failed to convert args/kwargs to proxyzcall_function args: r¤   z7Missing `as_proxy()` implementation for some arg/kwarg.©Úgb_typeÚcontextÚexplanationÚhintsÚfrom_exc)	rÎ  rž   ÚNotImplementedErrorrˆ  r8  Úvariables.baser9  rC  r6  )rñ   rò   Ú
proxy_argsÚproxy_kwargsÚer8  r9  s          rT   Úproxy_args_kwargsrE  °  s   € ð
ÝÐ:Ð:°TÐ:Ñ:Ô:Ñ:Ô:ˆ
ØKÐK¸F¿LºL¹N¼NÐKÑKÔKˆØ˜<Ð'Ð'øÝð 

ð 

ð 

Ø)Ð)Ð)Ð)Ð)Ð)Ø+Ð+Ð+Ð+Ð+Ð+àÐØ<Ø]¨7¨7°D¨>Ð]Ð]¸G¸GÅTÈ&Ï-Ê-É/Ì/ÑEZÔEZÐ<[Ð]Ð]ØQØØð	
ñ 	
ô 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
øøøøð	

øøøs   ‚:= ½
BÁABÂBrB  úOptional[float]r¾   c                ó.   — | €d nt          | dz  ¦  «        S ©Nr  ©rZ   ©rB  s    rT   Ú	to_int_msrK  Â  s   € Ø�9ˆ4ˆ4¥# a¨$¡h¡-¤-Ð/rS   c                ó.   — | €d nt          | dz  ¦  «        S )Ni@B rI  rJ  s    rT   Ú	to_int_usrM  È  s   € Ø�9ˆ4ˆ4¥# a¨)¡mÑ"4Ô"4Ð4rS   rL   c                  óÀ  — e Zd ZU dZded<   dZded<   dZded<   dZded<   dZded<   dZ	ded	<   dZ
ded
<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded <   dZded!<   dZded"<   dZ ded#<   dZ!ded$<   dZ"ded%<   dZ#ded&<   dZ$ded'<   dZ%ded(<   dZ&ded)<   dZ'ded*<   dZ(ded+<   dZ)ded,<   dZ*ded-<   dZ+ded.<   dZ,ded/<   dZ-ded0<   dZ.ded1<   dZ/ded2<   dZ0ded3<   dZ1ded4<   dZ2ded5<   dZ3ded6<   dZ4ded7<   dZ5ded8<   dZ6ded9<   dZ7ded:<   dZ8ded;<   dZ9ded<<   dZ:ded=<   e;Z<d>ed?<   dZ=ded@<   dZ>dedA<   dZ?dedB<   dZ@dedC<   dZAdedD<   dZBdedE<   dZCdedF<   dZDdedG<   dZEdedH<   dZFdIedJ<   dZGdedK<   dLZHdedM<   dZIdedN<   dZJdedO<   dZKdedP<   dZLdedQ<   dZMdedR<   dZNdedS<   dZOdedT<   dZPdedU<   dZQdedV<   dZRdedW<   dZSdedX<   dZTdedY<   dZUdedZ<   dZVded[<   dZWded\<   dZXded]<   eYdad`„¦   «         ZZdS )bÚCompilationMetricsNr÷   rú   Ú	frame_keyr…  Úco_filenamer¾   r‡  Ú
cache_sizeÚaccumulated_cache_sizeÚguard_countÚshape_env_guard_countÚgraph_op_countÚgraph_node_countÚgraph_input_countrF  Ú
start_timeÚentire_frame_compile_time_sÚbackend_compile_time_sÚinductor_compile_time_sÚcode_gen_time_sÚ	fail_typeÚfail_reasonÚfail_user_frame_filenameÚfail_user_frame_linenozOptional[set[str]]Únon_compliant_opsÚcompliant_custom_opsÚrestart_reasonsÚdynamo_time_before_restart_srý   Úhas_guarded_codeÚremote_cache_time_saved_sÚstructured_logging_overhead_sÚconfig_suppress_errorsÚ config_inline_inbuilt_nn_modulesÚspecialize_floatÚdynamo_configr  Únum_triton_bundlesÚ!remote_fx_graph_cache_get_time_msÚ!remote_fx_graph_cache_put_time_msÚstart_time_usr  Ú!dynamo_cumulative_compile_time_usÚ'aot_autograd_cumulative_compile_time_usÚ#inductor_cumulative_compile_time_usÚ,inductor_code_gen_cumulative_compile_time_usÚtriton_compile_time_usÚruntime_cudagraphify_time_usÚruntime_triton_autotune_time_usÚ%dynamo_compile_time_before_restart_usÚ distributed_ephemeral_timeout_usÚstructured_logging_overhead_usÚ!remote_fx_graph_cache_get_time_usÚ!remote_fx_graph_cache_put_time_usÚ#backward_cumulative_compile_time_usÚend_time_usÚpre_grad_pass_time_usÚpost_grad_pass_time_usÚjoint_graph_pass_time_usrZ   Úlog_format_versionÚinductor_configÚremote_cache_versionÚ"inductor_fx_remote_cache_hit_countÚ#inductor_fx_remote_cache_miss_countÚ%inductor_fx_remote_cache_backend_typeÚ!inductor_fx_remote_cache_hit_keysÚ"inductor_fx_remote_cache_miss_keysÚcuda_versionÚtriton_versionzOptional[dict[str, bool]]Úfeature_usageÚcompile_time_autotune_time_usFr  Ú
gc_time_usÚtensorify_float_attemptÚtensorify_float_successÚtensorify_float_failureÚguard_latency_usÚrecompile_reasonÚnum_graph_breaksÚtriton_kernel_compile_times_usÚir_countÚcudagraph_skip_reasonÚpython_versionÚ!pgo_put_remote_code_state_time_usÚ!pgo_get_remote_code_state_time_usÚparam_numelÚparam_bytesÚparam_countÚmetricsrD   c                ój  — dd„}dd„}dd	„}dd
„} ||                      d¦  «        ¦  «         ||                      d¦  «        ¦  «         ||                      d¦  «        ¦  «         ||                      d¦  «        ¦  «         ||                      d¦  «        ¦  «         ||                      d¦  «        ¦  «         ||                      d¦  «        ¦  «         ||                      d¦  «        ¦  «         ||                      d¦  «        ¦  «        dœ	}i |¥|¥} ||                      d¦  «        ¦  «        |d<    ||                      d¦  «        ¦  «        |d<    ||                      d¦  «        ¦  «        |d<   |                      d¦  «        }|rt          |¦  «        nd|d<    | di |¤ŽS )zó
        Factory method to create a CompilationMetrics from a dict of fields.
        Includes the logic to add legacy fields and any pre-processing, e.g.,
        we transform some fields to comma-separated strings for scuba logging.
        Úmetricr¾   r}   rF  c                ó   — | �| dz  nd S )Ng    €„.Ar>   ©r   s    rT   Úus_to_sz*CompilationMetrics.create.<locals>.us_to_s9  s   € Ø#)Ð#5�6˜C‘<�<¸4Ð?rS   c                ó   — | �| dz  nd S rH  r>   r¢  s    rT   Úus_to_msz+CompilationMetrics.create.<locals>.us_to_ms<  s   € Ø%+Ð%7�6˜T‘>�>¸TÐArS   úOptional[Any]r÷   c                ó¬   ‡— d	d„Š| €d S t          | t          t          f¦  «        sdS d                     ˆfd„t	          | ¦  «        D ¦   «         ¦  «        S )
NÚitemr   r}   r~   c                óD   — 	 t          | ¦  «        S # t          $ r Y dS w xY w©Nú	<unknown>)r~   r“  )r¨  s    rT   Úsafe_strzFCompilationMetrics.create.<locals>.collection_to_str.<locals>.safe_str@  s5   € ð'Ý˜t™9œ9Ð$øÝ ð 'ð 'ð 'Ø&˜;˜;ð'øøøs   ‚ ‘
žr«  ú,c              3  ó.   •K  — | ]} ‰|¦  «        V — Œd S rg   r>   )r†   r¨  r¬  s     €rT   rˆ   zGCompilationMetrics.create.<locals>.collection_to_str.<locals>.<genexpr>L  s+   øè è € ÐFÐF¨t˜H˜H T™NœNÐFÐFÐFÐFÐFÐFrS   )r¨  r   r}   r~   )rÍ  rQ  rC  r„   Úsorted)r   r¬  s    @rT   Úcollection_to_strz4CompilationMetrics.create.<locals>.collection_to_str?  sk   ø€ ð'ð 'ð 'ð 'ð ˆ~Ø�tå˜f¥s­D kÑ2Ô2ð #Ø"�{à—8’8ÐFÐFÐFÐFµv¸f±~´~ÐFÑFÔFÑFÔFÐFrS   c                óp   — | €d S 	 t          j        t          | ¦  «        ¦  «        S # t          $ r Y dS w xY wrª  )ÚjsonÚdumpsrC  r“  r¢  s    rT   Úcollection_to_json_strz9CompilationMetrics.create.<locals>.collection_to_json_strN  sI   € Øˆ~Ø�tð#Ý”z¥$ v¡,¤,Ñ/Ô/Ð/øÝð #ð #ð #Ø"�{�{ð#øøøs   † ' §
5´5rp  rq  rr  rs  rt  ry  r{  r|  rz  )	rY  rZ  r[  r\  r]  rg  rn  ro  rh  rˆ  r‰  r•  rú   N)r   r¾   r}   rF  )r   r¾   r}   r¾   )r   r¦  r}   r÷   r>   )rk   r~   )	r_   rž  r£  r¥  r°  r´  Úlegacy_metricsÚall_metricsrú   s	            rT   ÚcreatezCompilationMetrics.create1  s_  € ð	@ð 	@ð 	@ð 	@ð	Bð 	Bð 	Bð 	Bð	Gð 	Gð 	Gð 	Gð	#ð 	#ð 	#ð 	#ð "˜' '§+¢+¨oÑ">Ô">Ñ?Ô?Ø+2¨7Ø—’Ð?Ñ@Ô@ñ,ô ,ð '. gØ—’ÐEÑFÔFñ'ô 'ð (/ wØ—’ÐAÑBÔBñ(ô (ð  '˜wØ—’ÐJÑKÔKñ ô  ð *1¨Ø—’Ð>Ñ?Ô?ñ*ô *ð 2:°Ø—’Ð?Ñ@Ô@ñ2ô 2ð 2:°Ø—’Ð?Ñ@Ô@ñ2ô 2ð .5¨WØ—’Ð<Ñ=Ô=ñ.ô .ð/
ð 
ˆð8 4˜Ð3¨7Ð3ˆð <MÐ;LØ�OŠOÐ?Ñ@Ô@ñ<
ô <
ˆÐ7Ñ8ð =NÐ<MØ�OŠOÐ@ÑAÔAñ=
ô =
ˆÐ8Ñ9ð 9OÐ8NØ�OŠOÐ<Ñ=Ô=ñ9
ô 9
ˆÐ4Ñ5ð !—_’_ \Ñ2Ô2ˆ
Ø7AÐ$K¥C¨
¡O¤O OÀtˆ�LÑ!àˆsÐ!Ð!�[Ð!Ð!Ð!rS   )rž  rD   )[rM   rN   rO   rú   rw   rP  r…  rQ  r‡  rR  rS  rT  rU  rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  re  rf  rg  rh  ri  rj  rk  rl  r  rm  rn  ro  rp  r  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r€  r�  ÚLOG_FORMAT_VERSIONr‚  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�  rx   r·  r>   rS   rT   rO  rO  Ñ  s  € € € € € € à $€JÐ$Ð$Ð$Ñ$Ø#€IÐ#Ð#Ð#Ñ#Ø!€GÐ!Ð!Ð!Ñ!Ø!%€KÐ%Ð%Ð%Ñ%Ø$(€NÐ(Ð(Ð(Ñ(Ø $€JÐ$Ð$Ð$Ñ$Ø,0ÐÐ0Ð0Ð0Ñ0Ø!%€KÐ%Ð%Ð%Ñ%Ø+/ÐÐ/Ð/Ð/Ñ/Ø$(€NÐ(Ð(Ð(Ñ(Ø&*ÐÐ*Ð*Ð*Ñ*Ø'+ÐÐ+Ð+Ð+Ñ+Ø"&€JÐ&Ð&Ð&Ñ&Ø37ÐÐ7Ð7Ð7Ñ7Ø.2ÐÐ2Ð2Ð2Ñ2Ø/3ÐÐ3Ð3Ð3Ñ3Ø'+€OÐ+Ð+Ð+Ñ+Ø#€IÐ#Ð#Ð#Ñ#Ø!%€KÐ%Ð%Ð%Ñ%Ø.2ÐÐ2Ð2Ð2Ñ2Ø,0ÐÐ0Ð0Ð0Ñ0Ø,0ÐÐ0Ð0Ð0Ñ0Ø/3ÐÐ3Ð3Ð3Ñ3Ø*.€OÐ.Ð.Ð.Ñ.Ø48Ð Ð8Ð8Ð8Ñ8ð (,ÐÐ+Ð+Ð+Ñ+Ø15ÐÐ5Ð5Ð5Ñ5Ø59Ð!Ð9Ð9Ð9Ñ9Ø-1ÐÐ1Ð1Ð1Ñ1Ø7;Ð$Ð;Ð;Ð;Ñ;Ø'+ÐÐ+Ð+Ð+Ñ+Ø#'€MÐ'Ð'Ð'Ñ'Ø!%€JÐ%Ð%Ð%Ñ%Ø(,ÐÐ,Ð,Ð,Ñ,Ø7;Ð%Ð;Ð;Ð;Ñ;Ø7;Ð%Ð;Ð;Ð;Ñ;Ø#'€MÐ'Ð'Ð'Ñ'Ø!%€KÐ%Ð%Ð%Ñ%Ø7;Ð%Ð;Ð;Ð;Ñ;Ø=AÐ+ÐAÐAÐAÑAØ9=Ð'Ð=Ð=Ð=Ñ=ØBFÐ0ÐFÐFÐFÑFØ,0ÐÐ0Ð0Ð0Ñ0Ø26Ð Ð6Ð6Ð6Ñ6Ø59Ð#Ð9Ð9Ð9Ñ9Ø;?Ð)Ð?Ð?Ð?Ñ?Ø6:Ð$Ð:Ð:Ð:Ñ:Ø48Ð"Ð8Ð8Ð8Ñ8Ø7;Ð%Ð;Ð;Ð;Ñ;Ø7;Ð%Ð;Ð;Ð;Ñ;Ø9=Ð'Ð=Ð=Ð=Ñ=Ø!%€KÐ%Ð%Ð%Ñ%Ø+/ÐÐ/Ð/Ð/Ñ/Ø,0ÐÐ0Ð0Ð0Ñ0Ø.2ÐÐ2Ð2Ð2Ñ2Ø0ÐÐ0Ð0Ð0Ñ0Ø%)€OÐ)Ð)Ð)Ñ)Ø*.ÐÐ.Ð.Ð.Ñ.Ø8<Ð&Ð<Ð<Ð<Ñ<Ø9=Ð'Ð=Ð=Ð=Ñ=Ø;?Ð)Ð?Ð?Ð?Ñ?Ø7;Ð%Ð;Ð;Ð;Ñ;Ø8<Ð&Ð<Ð<Ð<Ñ<Ø"&€LÐ&Ð&Ð&Ñ&Ø$(€NÐ(Ð(Ð(Ñ(Ø/3€MÐ3Ð3Ð3Ñ3Ø37Ð!Ð7Ð7Ð7Ñ7Ø!&€JÐ&Ð&Ð&Ñ&Ø $€JÐ$Ð$Ð$Ñ$Ø.2ÐÐ2Ð2Ð2Ñ2Ø.2ÐÐ2Ð2Ð2Ñ2Ø26ÐÐ6Ð6Ð6Ñ6Ø(,ÐÐ,Ð,Ð,Ñ,Ø&*ÐÐ*Ð*Ð*Ñ*Ø&*ÐÐ*Ð*Ð*Ñ*Ø48Ð"Ð8Ð8Ð8Ñ8Ø"€HÐ"Ð"Ð"Ñ"Ø+/ÐÐ/Ð/Ð/Ñ/Ø$(€NÐ(Ð(Ð(Ñ(Ø7;Ð%Ð;Ð;Ð;Ñ;Ø7;Ð%Ð;Ð;Ð;Ñ;ð "&€KÐ%Ð%Ð%Ñ%ð "&€KÐ%Ð%Ð%Ñ%ð "&€KÐ%Ð%Ð%Ñ%àðQ"ð Q"ð Q"ñ „[ðQ"ð Q"ð Q"rS   rO  é@   ©Úmaxlenz%collections.deque[CompilationMetrics]Ú_compilation_metricsrž  c                óþ  — t          ¦   «         }|                     ¦   «         }|sdS |                     || j        | j        | j        | j        | j        | j        | j	        | j
        | j        | j        | j        | j        | j        | j        | j        | j        �t'          | j        ¦  «        nd| j        �t'          | j        ¦  «        nd| j        �t'          | j        ¦  «        nd| j        | j        | j        ¬¦  «         dS )a  
    These are the common fields in CompilationMetrics that existed before
    metrics_context, and aren't set by MetricsContext.set(). We add the subset
    of them that make sense in `dynamo`/toplevel events in PT2 Compile Events
    directly.

    If you're tempted to add to this list, consider using CompileEventLogger.compilation_metric()
    instead, which will automatically also add it to tlparse and PT2 Compile Events.
    TODO: Get rid of this function and replace it with CompileEventLogger directly instead.
    N)r»   rP  r…  rQ  r‡  rR  rS  rT  rU  rV  rW  rX  r^  r_  r`  ra  rb  rc  rd  re  rf  rl  )rÂ   rÍ   rÌ   rP  r…  rQ  r‡  rR  rS  rT  rU  rV  rW  rX  r^  r_  r`  ra  rb  rC  rc  rd  re  rf  rl  )rž  Úevent_loggerr»   s      rT   Ú#add_compilation_metrics_to_chromiumr¿  Ž  s  € õ -Ñ.Ô.€LØ×1Ò1Ñ3Ô3€JØð ØˆØ×ÒØØ”+Ø”	Ø”MØÔ'Ø”<Ø Ô7Ø”MØÔ5ØÔ'ØÔ+ØÔ-Ø”+Ø”MØ!"Ô!;Ø Ô7ð ÔÐ*õ ˜qÔ2Ñ3Ô3Ð3ààÔ!Ð-õ " !Ô"8Ñ9Ô9Ð9ààÔÐ(õ ˜QÔ.Ñ/Ô/Ð/àØ%&Ô%CØÔ+Ø”oð;  ñ ô ð ð ð rS   c                 ón   — dd„}  | t          j        ¦   «         ¦  «        }t          j        |d¬¦  «        S )NÚdrD   r}   c                óL   ‡— h d£Šˆfd„|                       ¦   «         D ¦   «         S )N>   rW  Úbase_dirÚrepro_afterÚrepro_levelÚTYPE_CHECKINGr~  Údebug_dir_rootÚrepro_toleranceÚrepro_forward_onlyÚ_custom_ops_profileÚ_save_config_ignoreÚrepro_ignore_non_fpÚignore_logger_methodsÚlog_compilation_metricsÚsame_two_models_use_fp64r   Úreorderable_logging_functionsÚnontraceable_tensor_subclassesÚ)_autograd_backward_strict_mode_banned_opsÚ+inject_BUILD_SET_unimplemented_TESTING_ONLYc                ól   •— i | ]0\  }}|‰v¯	|t          |t          ¦  «        rt          |¦  «        n|“Œ1S r>   )rÍ  rQ  r¯  )r†   rª   r«   Ú	blocklists      €rT   r6  zJ_get_dynamo_config_for_logging.<locals>.clean_for_json.<locals>.<dictcomp>×  sM   ø€ ð 
ð 
ð 
á��UØ˜)Ð#Ð#ð ¥*¨UµCÑ"8Ô"8ÐC•˜‘”�¸eà#Ð#Ð#rS   )rž   )rÁ  rÕ  s    @rT   Úclean_for_jsonz6_get_dynamo_config_for_logging.<locals>.clean_for_json¿  sG   ø€ ð
ð 
ð 
ˆ	ð.
ð 
ð 
ð 
àŸgšg™iœið
ñ 
ô 
ð 	
rS   T)Ú	sort_keys)rÁ  rD   r}   rD   )r<   Úget_config_copyr²  r³  )rÖ  Úconfig_dicts     rT   Ú_get_dynamo_config_for_loggingrÚ  ¾  sE   € ð
ð 
ð 
ð 
ð< !�.¥Ô!7Ñ!9Ô!9Ñ:Ô:€KÝŒ:�k¨TÐ2Ñ2Ô2Ð2rS   c                 ó  —  G d„ dt           j        ¦  «        } t          ¦   «         }d}t          j        j        r#t          j        j                             ¦   «         nd}|�Ÿ	 |                     ¦   «         D ]V\  }}t          |t          ¦  «        s| 
                    |¦  «         t          |t          ¦  «        rt          |¦  «        ||<   ŒW|D ]}||= Œt          j        || dd¬¦  «        }n# t          $ r d}Y nw xY w|S )zN
    Method to parse and scrub uninteresting configs from inductor config
    c                  ó   ‡ — e Zd Zˆ fd„Zˆ xZS )úA_scrubbed_inductor_config_for_logging.<locals>.TypeSafeSerializerc                ój   •— 	 t          ¦   «                              |¦  «        S # t          $ r Y dS w xY w)NzValue is not JSON serializable)Úsuperrµ  r“  )rN  ÚoÚ	__class__s     €rT   rµ  zI_scrubbed_inductor_config_for_logging.<locals>.TypeSafeSerializer.defaulté  sB   ø€ ð8Ý‘w”w—’ qÑ)Ô)Ð)øÝð 8ð 8ð 8Ø7Ð7Ð7ð8øøøs   ƒ $ ¤
2±2)rM   rN   rO   rµ  Ú__classcell__©rá  s   @rT   ÚTypeSafeSerializerrÝ  è  s8   ø€ € € € € ð	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8rS   rä  NT)r_   Úskipkeysr×  z(Inductor Config is not JSON serializable)r²  ÚJSONEncoderrQ  r
  Ú	_inductorr<   rØ  rž   rÍ  r~   r[  rC  r³  r“  )rä  Úkeys_to_scrubÚinductor_conf_strÚinductor_config_copyrª   r-  s         rT   Ú%_scrubbed_inductor_config_for_loggingrë  á  sU  € ð8ð 8ð 8ð 8ð 8�TÔ-ñ 8ô 8ð 8õ "™eœe€MØÐå49´OÔ4JÐT�ŒÔ×.Ò.Ñ0Ô0Ð0ÐPTð ð Ð'ð	KØ0×6Ò6Ñ8Ô8ð :ð :‘��SÝ! #¥sÑ+Ô+ð +Ø!×%Ò% cÑ*Ô*Ð*å˜c¥3Ñ'Ô'ð :Ý04°S±	´	Ð(¨Ñ-øà$ð .ð .�Ø(¨Ð-Ð-å $¤
Ø$Ø&ØØð	!ñ !ô !ÐÐøõ ð 	Kð 	Kð 	Kà JÐÐÐð	Køøøð Ðs   Á"BC. Ã.C=Ã<C=Ústart_time_nsÚend_time_nsrž  Úexc_typeúOptional[type[BaseException]]Ú	exc_valueúOptional[BaseException]c                ó¢  ‡— t           j        j                             ¦   «         r 	 ddlm} |}d}n# t          $ r d }d }Y nw xY wd }d }|                     d¦  «        }|s#t           j        j	         
                    ¦   «         }|| dz  |dz  |r|j        nd |rt          |¦  «        nd t          t           j                             ¦   «         ¦  «        t!          ¦   «         t#          ¦   «         t           j        j        t)          ¦   «         rt*          j        nd||t.          j        dœ}	t0                               i |	¥|¥¦  «        Št4                               ‰¦  «         d}
‰j        d	u rd
|
z   }
‰j        du r|
dz   }
t           j                             |
ˆfd„d	|¬¦  «         t?          ‰¦  «         t@          j!        rtE          ‰¦  «         d S d S )Nr   )ÚREMOTE_CACHE_VERSIONÚ_ManifoldCacherú   r  Ú )rú   rp  r~  r^  r_  rz  rl  rƒ  rŠ  r‹  r„  r‡  r˜  Úcompilation_metricsFÚbwd_TÚ_runtimec                 ód   •— d„ t          j        ‰ ¦  «                             ¦   «         D ¦   «         S )Nc                ób   — i | ],\  }}|t          |t          ¦  «        rt          |¦  «        n|“Œ-S r>   )rÍ  rQ  rC  )r†   r<  rB  s      rT   r6  z@record_compilation_metrics.<locals>.<lambda>.<locals>.<dictcomp>C  sG   € ð 
ð 
ð 
á��1ð �* Q­Ñ,Ô,Ð3�t�A‰wŒwˆw°!ð
ð 
ð 
rS   )ÚdataclassesÚasdictrž   )rö  s   €rT   r4  z,record_compilation_metrics.<locals>.<lambda>C  s9   ø€ ð 
ð 
å#Ô*Ð+>Ñ?Ô?×EÒEÑGÔGð
ñ 
ô 
€ rS   )Úrecord_logging_overheadrú   )#r
  rç  ÚutilsÚ should_use_remote_fx_graph_cacheÚtorch._inductor.fb.remote_cacheró  ÚModuleNotFoundErrorrk   r  r  r  rO   r~   rM  r  Úget_structured_logging_overheadrÚ  rë  ÚversionÚcudar.   ÚtritonÚ__version__rÒ  rO  r·  r¼  r  r  r  Útrace_structuredr¿  r<   rÎ  r'   )rì  rí  rž  rî  rð  ró  r„  r‡  rú   Úcommon_metricsr^   rö  s              @rT   Úrecord_compilation_metricsr	    s4  ø€ õ „Ô×=Ò=Ñ?Ô?ð $ð	9ØLÐLÐLÐLÐLÐLà#7Ð Ø4DÐ1Ð1øÝ"ð 	9ð 	9ð 	9Ø#'Ð Ø48Ð1Ð1Ð1ð	9øøøð 15Ð-Ø#Ðð —’˜\Ñ*Ô*€JØð GÝ”]Ô1×DÒDÑFÔFˆ
ð !Ø&¨$Ñ.Ø" dÑ*Ø.6Ð@�XÔ*Ð*¸DØ)2Ð<•s˜9‘~”~�~¸Ý*3ÝŒN×:Ò:Ñ<Ô<ñ+
ô +
õ 8Ñ9Ô9Ý@ÑBÔBÝœÔ*Ý0:±´ÐD�&Ô,Ð,À"Ø 4Ø1VÝœ+ðð €Nõ$ -×3Ò3Ð4Q°~Ð4QÈÐ4QÑRÔRÐÝ×ÒÐ 3Ñ4Ô4Ð4à €DØÔ%¨Ð.Ð.Ø˜‰}ˆØÔ%¨Ð-Ð-Ø�jÑ ˆå	„N×#Ò#Øð	
ð 	
ð 	
ð 	
ð !&ð ð $ñ ô ð õ$ (Ð(;Ñ<Ô<Ð<õ Ô%ð 3ÝÐ1Ñ2Ô2Ð2Ð2Ð2ð3ð 3s   ¦
1 ±AÁA)Úon_exitÚnew_sizec                óÒ   — t          t          ¦  «        | k    r1t                               ¦   «          t          t          ¦  «        | k    °1t          j        t          | ¬¦  «        }|ad S )Nrº  )rX  r¼  Úpopleftru   Údeque)r  Ú	new_deques     rT   Úset_compilation_metrics_limitr  _  s`   € å
Õ"Ñ
#Ô
# hÒ
.Ð
.Ý×$Ò$Ñ&Ô&Ð&õ Õ"Ñ
#Ô
# hÒ
.Ð
.åÔ!Õ"6¸xÐHÑHÔH€IØ$ÐÐÐrS   c                 ó8   — t                                ¦   «          d S rg   )r¼  rh   r>   rS   rT   Úclear_compilation_metricsr  g  s   € å×ÒÑ Ô Ð Ð Ð rS   úlist[CompilationMetrics]c                 ó*   — t          t          ¦  «        S rg   )rC  r¼  r>   rS   rT   Úget_compilation_metricsr  l  s   € ÝÕ$Ñ%Ô%Ð%rS   c                  ó’   — e Zd ZdZd&d„Zd'd„Zd„ Zd(d	„Zd
„ Zd)d„Z	d)d„Z
d*d„Zd+d„Z	 	 d,d-d„Zd.d„Z	 d/d0d!„Z	 d/d1d$„Z	 	 d2d3d%„ZdS )4ÚChromiumEventLoggera  Logs chromium events to structured logs. tlparse will concatenate these into a perfetto UI link.

    See https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview#heading=h.yr4qxyxotyw for
    a specification of the Chromium Event JSON format.
    r}   ú	list[str]c                ót   — t          | j        d¦  «        r| j        j        S g | j        _        | j        j        S )z]
        The main event stack, with every chromium event.
        Logged to tlparse.
        r  )r  Útlsr  rR  s    rT   Ú	get_stackzChromiumEventLogger.get_stackw  s5   € õ
 �4”8˜WÑ%Ô%ð 	"Ø”8”>Ð!àˆDŒHŒNØ”8”>Ð!rS   r÷   c                óB   — |                       ¦   «         }|r|d         ndS )zv
        Get the outermost event name (i.e. the longest running event)
        or None if the stack is empty.
        r   N)r  )rN  r  s     rT   rÍ   z'ChromiumEventLogger.get_outermost_event‚  s&   € ð
 —’Ñ Ô ˆØ Ð*ˆu�QŒxˆx dÐ*rS   c                ót   — t          | j        d¦  «        r| j        j        S g | j        _        | j        j        S )zq
        A smaller subset of the main stack that gets used to log
        PT2 Compile Events internally.
        rÐ   )r  r  rÐ   rR  s    rT   rË   z,ChromiumEventLogger.get_pt2_compile_substackŠ  s9   € õ
 �4”8Ð3Ñ4Ô4ð 	1Ø”8Ô0Ð0à,.ˆDŒHÔ)Ø”8Ô0Ð0rS   rD   c                ó\   — t          | j        d¦  «        si | j        _        | j        j        S )NÚ
event_data)r  r  r  rR  s    rT   Úget_event_dataz"ChromiumEventLogger.get_event_data•  s+   € Ý�t”x Ñ.Ô.ð 	%Ø"$ˆDŒHÔØŒxÔ"Ð"rS   c                óÀ   — t          j        ¦   «         | _        t          t	          j        ¦   «         ¦  «        | _        t                               d| j        ¦  «         d S )Nz*ChromiumEventLogger initialized with id %s)	Ú	threadingÚlocalr  r~   ÚuuidÚuuid4Úid_rt   rF  rR  s    rT   rO  zChromiumEventLogger.__init__š  sG   € Ý”?Ñ$Ô$ˆŒõ •t”z‘|”|Ñ$Ô$ˆŒõ 	�ŠÐ=¸t¼xÑHÔHÐHÐHÐHrS   r»   r~   r�   c                óR   — ||                       ¦   «         vrdS  | j        |fi |¤Ž dS )zd
        Same as add_event_data, but will silently not log if the event isn't in the stack.
        N)r  rÌ   )rN  r»   rò   s      rT   rí   z&ChromiumEventLogger.try_add_event_data£  s?   € ð ˜TŸ^š^Ñ-Ô-Ð-Ð-ØˆFØˆÔ˜JÐ1Ð1¨&Ð1Ð1Ð1Ð1Ð1rS   c                ó  — ||                       ¦   «         vr5t          dt          |¦  «        › d|                       ¦   «         › d�¦  «        ‚|                      ¦   «         }||vri ||<   ||                              |¦  «         dS )zz
        Adds additional metadata info to an in-progress event
        This metadata is recorded in the END event
        úEvent ú not in úq. Cannot add metadata to events that aren't in progress. Please make sure the event has started and hasn't ended.N)r  rÃ   r'  r   rÏ   )rN  r»   rò   r  s       rT   rÌ   z"ChromiumEventLogger.add_event_data«  s¬   € ð ˜TŸ^š^Ñ-Ô-Ð-Ð-ÝðK�˜jÑ)Ô)ð Kð K°4·>²>Ñ3CÔ3Cð Kð Kð Kñô ð ð
 ×(Ò(Ñ*Ô*ˆ
Ø˜ZÐ'Ð'Ø%'ˆJ�zÑ"Ø�:Ô×%Ò% fÑ-Ô-Ð-Ð-Ð-rS   rª   r«   rZ   c                ó,  — ||                       ¦   «         vr5t          dt          |¦  «        › d|                       ¦   «         › d�¦  «        ‚|                      ¦   «         }||vri ||<   |||         vrd||         |<   ||         |xx         |z  cc<   dS )zK
        Increment an integer event data field by the given amount
        r)  r*  r+  r   N)r  rÃ   r'  r   ©rN  r»   rª   r«   r  s        rT   rØ   zChromiumEventLogger.increment¿  sÓ   € ð ˜TŸ^š^Ñ-Ô-Ð-Ð-ÝðK�˜jÑ)Ô)ð Kð K°4·>²>Ñ3CÔ3Cð Kð Kð Kñô ð ð ×(Ò(Ñ*Ô*ˆ
Ø˜ZÐ'Ð'Ø%'ˆJ�zÑ"Ø�j Ô,Ð,Ð,Ø*+ˆJ�zÔ" 3Ñ'Ø�:Ô˜sÐ#Ð#Ô# uÑ,Ð#Ð#Ñ#Ð#Ð#rS   r   c                óZ  — ||                       ¦   «         vr5t          dt          |¦  «        › d|                       ¦   «         › d�¦  «        ‚|                      ¦   «         }||vri ||<   |||         vrt	          ¦   «         ||         |<   ||         |                              |¦  «         dS )zR
        Add a value to a set within a event_name's metadata if it exists
        r)  r*  r+  N)r  rÃ   r'  r   rQ  r[  r-  s        rT   rß   zChromiumEventLogger.add_to_setÑ  sÔ   € ð ˜TŸ^š^Ñ-Ô-Ð-Ð-ÝðK�˜jÑ)Ô)ð Kð K°4·>²>Ñ3CÔ3Cð Kð Kð Kñô ð ð
 ×(Ò(Ñ*Ô*ˆ
Ø˜ZÐ'Ð'Ø%'ˆJ�zÑ"Ø�j Ô,Ð,Ð,Ý*-©%¬%ˆJ�zÔ" 3Ñ'Ø�:Ô˜sÔ#×'Ò'¨Ñ.Ô.Ð.Ð.Ð.rS   FNr½   r¼   rÆ   rÈ   rú   rû   c                ód  — |p"t           j        j                             ¦   «         }t	          |¦  «        |d<   |                      ||d|¦  «         |                      ¦   «                              |¦  «          | j        |fi |¤Ž |r)|  	                    ¦   «                              |¦  «         dS dS )a‰  
        Logs the start of a single event.
        :param str event_name Name of event to appear in trace
        :param time_ns Timestamp in nanoseconds
        :param metadata: Any extra metadata associated with this event
        :param log_pt2_compile_event: If True, log to pt2_compile_events
        :param compile_id: Explicit compile_id (rather than using the current context)
        rú   ÚBN)
r
  r  r  r  r~   Ú_log_timed_eventr  r  rÌ   rË   )rN  r»   r½   r¼   rÆ   rú   s         rT   r	  z#ChromiumEventLogger.log_event_startç  sÆ   € ð   ÐT¥5¤=Ô#?×#RÒ#RÑ#TÔ#Tˆ
Ý!$ Z¡¤ˆ�ÑØ×ÒØØØØñ		
ô 	
ð 	
ð 	�ŠÑÔ×Ò 
Ñ+Ô+Ð+àˆÔ˜JÐ3Ð3¨(Ð3Ð3Ð3Ø ð 	?Ø×)Ò)Ñ+Ô+×2Ò2°:Ñ>Ô>Ð>Ð>Ð>ð	?ð 	?rS   c                óö   — |                       ¦   «         }|                      ¦   «         }|                     ¦   «          |                     ¦   «          |                      ¦   «         }|                     ¦   «          d S rg   )r  rË   rh   r   )rN  r  Úsubstackr  s       rT   rM  zChromiumEventLogger.reset  sj   € ð —’Ñ Ô ˆØ×0Ò0Ñ2Ô2ˆØ�Š‰ŒˆØ�ŠÑÔÐØ×(Ò(Ñ*Ô*ˆ
Ø×ÒÑÔÐÐÐrS   rì  c                ód  ‡— |p"t           j        j                             ¦   «         }t	          |¦  «        |d<   |                      ¦   «         }‰|v r|‰         }|‰= ni }|                     |¦  «         |                      ‰|d|¦  «        }	ˆfd„}
|                      ¦   «         }‰|vrt           
                    d¦  «         dS  |
|¦  «         |rJ|                      ¦   «         } |
|¦  «         t          |	|| j        |¦  «         |                     ¦   «          |                     ¦   «          dS )a&  
        Logs the end of a single event. This function should only be
        called after log_event_start with the same event_name.
        :param event_name: Name of event to appear in trace
        :param time_ns: Timestamp in nanoseconds
        :param metadata: Any extra metadata associated with this event
        :param start_time_ns: The start time timestamp in nanoseconds
        :param log_pt_compile_event: If True, log to pt2_compile_events
        :param compile_id: Explicit compile_id (rather than using the current context)
        rú   ÚEc                ó˜   •— ‰| d         k    r<t                                d¦  «         |                      ¦   «          ‰| d         k    °:d S d S )Néÿÿÿÿz>ChromiumEventLogger: Detected overlapping events, fixing stack)rt   r�  Úpop)r  r»   s    €rT   Ú	pop_stackz4ChromiumEventLogger.log_event_end.<locals>.pop_stack6  sY   ø€ Ø  b¤	Ò)Ð)õ —’ØTñô ð ð —	’	‘”�ð   b¤	Ò)Ð)Ð)Ð)Ð)Ð)rS   z7ChromiumEventLogger: Start event not in stack, ignoringN)r
  r  r  r  r~   r   rÏ   r1  r  rt   r�  rË   r&   r&  r8  )rN  r»   r½   r¼   rì  rÆ   rú   Úall_event_datar  Úeventr9  Úevent_stackrÐ   s    `           rT   r  z!ChromiumEventLogger.log_event_end  ss  ø€ ð&  ÐT¥5¤=Ô#?×#RÒ#RÑ#TÔ#Tˆ
Ý!$ Z¡¤ˆ�Ñð ×,Ò,Ñ.Ô.ˆØ˜Ð'Ð'Ø+¨JÔ7ˆNØ˜zÐ*Ð*àˆNà×Ò˜hÑ'Ô'Ð'à×%Ò%ØØØØñ	
ô 
ˆð	ð 	ð 	ð 	ð 	ð —n’nÑ&Ô&ˆð ˜[Ð(Ð(õ �KŠKÐQÑRÔRÐRØˆFàˆ	�+ÑÔÐà ð 	'Ø#'×#@Ò#@Ñ#BÔ#BÐ ØˆIÐ*Ñ+Ô+Ð+Ý'ØÐ+¨T¬X°}ñô ð ð !×$Ò$Ñ&Ô&Ð&ð 	�ŠÑÔÐÐÐrS   r    úOptional[dict[str, Any]]c                óŒ   ‡— ||dz  ||ddddœŠt           j                             dˆfd„dd¬¦  «         t          ‰¦  «         ‰S )	za
        Logs a timed event in chromium format. See log_event_start, log_event_end, etc.
        r  r&  r   )r^   Útsrñ   ÚphÚcatÚtidÚpidÚchromium_eventc                 ó   •— ‰ S rg   r>   ©r;  s   €rT   r4  z6ChromiumEventLogger._log_timed_event.<locals>.<lambda>n  ó   ø€ ˜u€ rS   F©Ú
payload_fnÚsuppress_contextÚexpect_trace_id)r
  r  r  r(   )rN  r»   r½   r    r¼   r;  s        @rT   r1  z$ChromiumEventLogger._log_timed_eventX  sr   ø€ ð Ø˜D‘.ØØà!ØØð	
ð 	
ˆõ 	Œ×'Ò'ØØ$�}�}�}Ø"Ø!ð	 	(ñ 	
ô 	
ð 	
õ 	' uÑ-Ô-Ð-ØˆrS   c           	     ó<  ‡— |€i }t          t          j        j                             ¦   «         ¦  «        }||d<   ||dz  |ddddddœŠt          j                             d	ˆfd
„dd¬¦  «         |r+t          ‰|                      ¦   «         | j	        |¦  «         dS dS )aZ  
        Log an instant event with no associated duration.
        :param str event_name: Name of event to appear in trace
        :param int time_ns Timestamp in nanoseconds
        :param Optional[Dict[str, Any]] metadata: Any extra metadata associated with this event
        :param str cname optional color for the arrow in the trace
        Nrú   r  Úir&  r   Úp)r^   r?  rñ   r@  rA  rB  rC  ÚsrD  c                 ó   •— ‰ S rg   r>   rF  s   €rT   r4  z7ChromiumEventLogger.log_instant_event.<locals>.<lambda>•  rG  rS   FTrH  )
r~   r
  r  r  r  r  r  r&   rË   r&  )rN  r»   r½   r¼   rÆ   rú   r;  s         @rT   rÄ   z%ChromiumEventLogger.log_instant_eventu  sÚ   ø€ ð ÐØˆHÝ�œÔ5×HÒHÑJÔJÑKÔKˆ
Ø!+ˆ�ÑàØ˜D‘.ØØà!ØØØð

ð 

ˆõ 	Œ×'Ò'ØØ$�}�}�}Ø"Ø ð	 	(ñ 	
ô 	
ð 	
ð !ð 	å'Ø�t×4Ò4Ñ6Ô6¸¼À'ñô ð ð ð ð	ð 	rS   )r}   r  ©r}   r÷   )r}   rD   )r»   r~   r}   r�   )r»   r~   rª   r~   r«   rZ   )r»   r~   rª   r~   r«   r   ©FN)r»   r~   r½   rZ   r¼   rD   rÆ   rÈ   rú   rû   r}   r�   ©r}   r�   rg   )r»   r~   r½   rZ   r¼   rD   rì  rZ   rÆ   rÈ   rú   rû   r}   r�   )
r»   r~   r½   rZ   r    r~   r¼   r=  r}   rD   rÚ  )
r»   r~   r½   rZ   r¼   r=  rÆ   rÈ   r}   r�   )rM   rN   rO   rµ   r  rÍ   rË   r   rO  rí   rÌ   rØ   rß   r	  rM  r  r1  rÄ   r>   rS   rT   r  r  p  sd  € € € € € ðð ð	"ð 	"ð 	"ð 	"ð+ð +ð +ð +ð	1ð 	1ð 	1ð#ð #ð #ð #ð
Ið Ið Ið2ð 2ð 2ð 2ð.ð .ð .ð .ð(-ð -ð -ð -ð$/ð /ð /ð /ð6 ',Ø*.ð?ð ?ð ?ð ?ð ?ð<ð ð ð ð" +/ðGð Gð Gð Gð Gð\ .2ðð ð ð ð ðB .2à&+ð(ð (ð (ð (ð (ð (ð (rS   r  zOptional[ChromiumEventLogger]ÚCHROMIUM_EVENT_LOGc                 ó:   — t           €t          ¦   «         a t           S rg   )rT  r  r>   rS   rT   rÂ   rÂ   £  s   € åÐ!Ý0Ñ2Ô2ÐÝÐrS   c                 ó   — t           d uS rg   )rT  r>   rS   rT   rì   rì   ª  s   € å TÐ)Ð)rS   r»   Úreset_event_log_on_exitc           	   #  ó–  K  — t          ¦   «         }t          j        ¦   «         }|                     | |i |¦  «         	 dV — |                     | t          j        ¦   «         i ||¦  «         |r|                     ¦   «          dS dS # |                     | t          j        ¦   «         i ||¦  «         |r|                     ¦   «          w w xY w)zñ
    Context manager that creates a chromium start and end event. Chromium event
    logging is integrated with dynamo_timed, so you probably want to use that
    instead. Use this context manager only if you want to avoid dynamo_timed.
    N)rÂ   rÁ   r½   r	  r  rM  )r»   rW  rÆ   Úchromium_event_logÚchromium_start_times        rT   Úchromium_event_timedr[  ¯  s  è è € õ 3Ñ4Ô4ÐÝœ,™.œ.ÐØ×&Ò&ØØØ
Øñ	ô ð ð'Øˆˆˆà×(Ò(ØÝŒL‰NŒNØØØ!ñ	
ô 	
ð 	
ð #ð 	'Ø×$Ò$Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'øð 	×(Ò(ØÝŒL‰NŒNØØØ!ñ	
ô 	
ð 	
ð #ð 	'Ø×$Ò$Ñ&Ô&Ð&Ð&ð	'øøøs   ½B ÂACc                  óD   — e Zd ZU dZded<   ded<   d„ Zed„ ¦   «         ZdS )	ÚCleanupHookz,Remove a global variable when hook is calledrD   Úscoper~   r^   c                óX   — t           �t           xj        dz  c_        | j        | j        = d S r�   )ÚCleanupManagerra   r^  r^   ©rN  rñ   s     rT   Ú__call__zCleanupHook.__call__×  s.   € åÐ%ÝÐ Ô  AÑ%Ð Ô ØŒJ�t”yÐ!Ð!Ð!rS   c                ób   — || vsJ ‚t           xj        dz  c_        || |<   t          | |¦  «        S r�   )r`  ra   r]  )r^  r^   r-  s      rT   r·  zCleanupHook.createÝ  s@   € à˜5Ð Ð Ð Ð ÝÐÔ Ñ!ÐÔØˆˆd‰Ý˜5 $Ñ'Ô'Ð'rS   N)rM   rN   rO   rµ   rw   rb  rõ   r·  r>   rS   rT   r]  r]  Ð  s[   € € € € € € à6Ð6àÐÐÑØ€I€I�Ið"ð "ð "ð ð(ð (ñ „\ð(ð (ð (rS   r]  c                  ó.   ‡ — e Zd ZU dZded<   ˆ fd„Zˆ xZS )r`  r   zClassVar[CleanupManager]Úinstancec                ó~   •— | j         |         D ]} |¦   «          Œt          ¦   «                              |¦  «         d S rg   )r6  rß  rº  )rN  r¼  Úhookrá  s      €rT   rº  zCleanupManager._remove_idé  sD   ø€ Ø”K Ô$ð 	ð 	ˆDØˆD‰FŒFˆFˆFÝ‰Œ×Ò˜3ÑÔÐÐÐrS   )rM   rN   rO   ra   rw   rº  râ  rã  s   @rT   r`  r`  å  sK   ø€ € € € € € Ø€EØ&Ð&Ð&Ñ&ð ð  ð  ð  ð  ð  ð  ð  ð  rS   r`  c                ó¶   — |                       ¦   «                              | j        ¦  «        }| j        r%| j        �| j                              ¦   «         |_        |S )z!Clone the tensor and its gradient)ÚcloneÚrequires_grad_Úrequires_gradÚis_leafÚgrad)r3  Úys     rT   Úclone_tensorro  ò  sF   € à	�Š‰	Œ	× Ò  ¤Ñ1Ô1€AØ„yð  �Q”VÐ'Ø”—’‘”ˆŒØ€HrS   ©Údtypec          	     óF  ‡— t          | ¦  «        r| S ˆfd„}t          j        ¦   «         5  | j        j        dk    r || ¦  «        cddd¦  «         S | j        t          j        u rqt          j         ||                      ¦   «         ¦  «         ||  	                    ¦   «         ¦  «        | j
        |                      ¦   «         ¬¦  «        cddd¦  «         S t          | ¦  «        rÌ| j        t          j        t          j        hv r)|                      ¦   «         }|                      ¦   «         }n(|                      ¦   «         }|                      ¦   «         }t          j         ||¦  «         ||¦  «         ||                      ¦   «         ¦  «        | j
        | j        ¬¦  «        cddd¦  «         S t+          d„ t-          |                      ¦   «         |                      ¦   «         ¦  «        D ¦   «         ¦  «        }| j        rt          j        |dz   f| ¦  «        }n&t          j        |dz   ‰p| j        | j        ¬¦  «        }|                      ¦   «         |                     ¦   «         z
  dz  |                      ¦   «         z  }|                     |                      ¦   «         |                      ¦   «         |¦  «         	 |                      |  !                    ¦   «         ¦  «         | j"        r| #                    | j$        ¦  «         | j"        r"| j%        �tM          | j%        ‰¬	¦  «        |_%        n'# tN          $ r  || ¦  «        cY cddd¦  «         S w xY wtQ          | d
¦  «        r| j)         *                    ¦   «         |_)        |cddd¦  «         S # 1 swxY w Y   dS )zcopy while preserving stridesc                ó   •— t          j        | ¦  «        }| j        r|                     | j        ¦  «         | j        r"| j        �t          | j        ‰¬¦  «        |_        t          | d¦  «        r| j         	                    ¦   «         |_        |S )Nrp  Ú_dynamo_dynamic_indices)
r
  ri  rl  rj  rk  rm  Úclone_inputr  rt  Úcopy)r3  rn  rq  s     €rT   Útorch_clonez clone_input.<locals>.torch_clone  s‡   ø€ ÝŒK˜‰NŒNˆØŒ9ð 	.Ø×Ò˜Qœ_Ñ-Ô-Ð-ØŒ9ð 	6˜œÐ+Ý  ¤¨uÐ5Ñ5Ô5ˆAŒFÝ�1Ð/Ñ0Ô0ð 	IØ()Ô(A×(FÒ(FÑ(HÔ(HˆAÔ%ØˆrS   ÚxlaN)Úis_coalesced)Úlayoutc              3  ó,   K  — | ]\  }}|d z
  |z  V — ŒdS )r1   Nr>   )r†   ÚshapeÚstrides      rT   rˆ   zclone_input.<locals>.<genexpr>'  s@   è è € ð 
ð 
Ù%2 U¨FˆU�Q‰Y˜&Ñ ð
ð 
ð 
ð 
ð 
ð 
rS   é    )rq  Údevicerp  rt  )+r@   r
  Úno_gradr  r†  rz  Ú
sparse_cooÚsparse_coo_tensorÚ_indicesrW   r|  ry  r$   Ú
sparse_csrÚ
sparse_bsrÚcrow_indicesÚcol_indicesÚccol_indicesÚrow_indicesÚsparse_compressed_tensorr6  rm   ÚzipÚsizer}  Úis_quantizedÚempty_quantizedÚemptyrq  Údata_ptrÚelement_sizeÚas_strided_Úcopy_ri  rl  rj  rk  rm  ru  rÃ   r  rt  rv  )r3  rq  rw  Úcompressed_indicesÚplain_indicesÚneeded_sizeÚresultÚcache_line_offsets    `      rT   ru  ru  ú  s8  ø€ õ ˆq�z„zð àˆðð ð ð ð õ 
Œ‰Œð 6ð 6ØŒ8Œ=˜EÒ!Ð!à�;˜q‘>”>ð6ð 6ð 6ð 6ñ 6ô 6ð 6ð 6ð Œ8•uÔ'Ð'Ð'ÝÔ*Ø�˜AŸJšJ™LœLÑ)Ô)Ø�˜AŸIšI™KœKÑ(Ô(Ø”ØŸ^š^Ñ-Ô-ð	ñ ô ð6ð 6ð 6ð 6ñ 6ô 6ð 6ð 6õ " !Ñ$Ô$ð 	ØŒx�EÔ,­eÔ.>Ð?Ð?Ð?Ø%&§^¢^Ñ%5Ô%5Ð"Ø !§¢¡¤��à%&§^¢^Ñ%5Ô%5Ð"Ø !§¢¡¤�ÝÔ1Ø�Ð.Ñ/Ô/Ø�˜MÑ*Ô*Ø�˜AŸHšH™JœJÑ'Ô'Ø”Ø”xðñ ô ð)6ð 6ð 6ð 6ñ 6ô 6ð 6ð 6õ8 ð 
ð 
Ý69¸!¿&º&¹(¼(ÀAÇHÂHÁJÄJÑ6OÔ6Oð
ñ 
ô 
ñ 
ô 
ˆð Œ>ð 	ÝÔ*¨K¸"Ñ,<Ð+>ÀÑBÔBˆFˆFå”[Ø˜bÑ ¨Ð(8°´ÀÄðñ ô ˆFð �ZŠZ‰\Œ\˜FŸOšOÑ-Ô-Ñ-°Ñ3Ø�^Š^ÑÔñÐð 	×Ò˜1Ÿ6š6™8œ8 Q§X¢X¡Z¤ZÐ1BÑCÔCÐCð
	"Ø�LŠL˜Ÿš™œÑ#Ô#Ð#ØŒyð 7Ø×%Ò% a¤oÑ6Ô6Ð6ØŒyð ?˜QœVÐ/Ý)¨!¬&¸Ð>Ñ>Ô>�”øøÝð 	"ð 	"ð 	"ð �;˜q‘>”>Ð!Ð!ðg6ð 6ð 6ð 6ñ 6ô 6ð 6ð 6ð^	"øøøõ
 �1Ð/Ñ0Ô0ð 	NØ-.Ô-F×-KÒ-KÑ-MÔ-MˆFÔ*Øðm6ð 6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6ð 6ð 6sK   «NÁA7NÃCNÆ2DNËA1L3Ì2NÌ3MÍNÍMÍ2NÎNÎNc                ó*  — t          | ¦  «        t          u r–t          | ¦  «        }|                     ¦   «         D ]p\  }}t          |t          ¦  «        rt          |¦  «        ||<   Œ-t          |t          j        ¦  «        sJ t          |¦  «        ¦   «         ‚t          |¦  «        ||<   Œq|S t          | ¦  «        }t          t          |¦  «        ¦  «        D ]:}t          ||         t          j        ¦  «        rt          ||         ¦  «        ||<   Œ;|S rg   )r†  Údictrž   rÍ  rÎ  Úclone_inputsr
  r  ru  rC  ÚrangerX  )Úexample_inputsÚresrª   r«   rM  s        rT   r›  r›  D  sû   € åˆNÑÔ�tÐ#Ð#Ý�>Ñ"Ô"ˆØŸ)š)™+œ+ð 	.ð 	.‰JˆC�Ý˜%¥Ñ'Ô'ð .Ý'¨Ñ.Ô.��C‘�å! %­¬Ñ6Ô6ÐCÐC½¸U¹¼ÑCÔCÐCÝ& uÑ-Ô-��C‘�Øˆ
å
ˆ~Ñ
Ô
€CÝ•3�s‘8”8‰_Œ_ð )ð )ˆÝ�c˜!”f�eœlÑ+Ô+ð 	)Ý   Q¤Ñ(Ô(ˆC�‰FøØ€JrS   r-  útorch.Tensorc                óÄ   — 	 |                       ¦   «          d S # t          $ r=}ddlm} t	          j        ddt          | ¦  «        ¦  «        } |d|› �¦  «        |‚d }~ww xY w)Nr1   )Ú	SkipFramez\(.*rõ  z(torch.compile cannot be run in context: )r�  rÃ   rˆ  r¡  ÚreÚsubr'  )r-  rD  r¡  Úfunctorch_subclass_names       rT   Úskip_frame_if_in_functorch_moder¥  W  sˆ   € ð	Ø�Š‰ŒˆˆˆøÝð ð ð Ø"Ð"Ð"Ð"Ð"Ð"õ #%¤&¨°"µd¸3±i´iÑ"@Ô"@ÐØˆiØPÐ7NÐPÐPñ
ô 
àð	øøøøðøøøs   ‚ ˜
A¢8AÁAc               #  ól  K  — t           j        j        } t           j        j        j        } |¦   «         5   | ¦   «         5  t          j        t           j                             ¦   «         ¦  «        }t          |¦  «         t           j
                             ¦   «         r0t          j        t           j
                             ¦   «         ¦  «        }d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   	 d V — t           j        j                             ¦   «         5  t           j                             |¦  «         t           j
                             ¦   «         rt           j
                             |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S # t           j        j                             ¦   «         5  t           j                             |¦  «         t           j
                             ¦   «         rt           j
                             |¦  «         d d d ¦  «         w # 1 swxY w Y   w xY wrg   )r
  Ú_CÚ_DisableFuncTorchrþ  Ú_python_dispatchÚ_disable_current_modesri  ÚrandomÚget_rng_stater¥  r  Úis_availableÚset_rng_state)Údisable_functorchÚdisable_current_modesÚ	rng_stateÚcuda_rng_states       rT   Úpreserve_rng_stater³  d  sé  è è € åœÔ2ÐÝ!œKÔ8ÔOÐØ	Ð	Ñ	 Ô	 ð Eð EÐ"3Ð"3Ñ"5Ô"5ð Eð EÝ”K¥¤× :Ò :Ñ <Ô <Ñ=Ô=ˆ	Ý'¨	Ñ2Ô2Ð2ÝŒ:×"Ò"Ñ$Ô$ð 	EÝ"œ[­¬×)AÒ)AÑ)CÔ)CÑDÔDˆNð	Eð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eð Eð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eð
9ØˆˆˆåŒ[Ô)×@Ò@ÑBÔBð 	9ð 	9ÝŒL×&Ò& yÑ1Ô1Ð1ÝŒz×&Ò&Ñ(Ô(ð 9Ý”
×(Ò(¨Ñ8Ô8Ð8ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ø�UŒ[Ô)×@Ò@ÑBÔBð 	9ð 	9ÝŒL×&Ò& yÑ1Ô1Ð1ÝŒz×&Ò&Ñ(Ô(ð 9Ý”
×(Ò(¨Ñ8Ô8Ð8ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð 	9øøøsy   ´C0¿BCÃC0ÃC	ÃC0Ã C	Ã!C0Ã0C4Ã7C4Ã<F Ä#AFÆFÆFÆ$H3Æ>AH'ÈH3È'H+È+H3È.H+È/H3c                ó¶   — t          | t          j        j        j        t          j        j        j        t          j        j        t          j        j        f¦  «        S rg   )	rÍ  r
  ÚjitÚ_traceÚTopLevelTracedModuleÚ_scriptÚRecursiveScriptModuleÚScriptFunctionÚScriptModule)Úmodel0s    rT   Úis_jit_modelr½  v  sD   € õ ØåŒIÔÔ1ÝŒIÔÔ3ÝŒIÔ$ÝŒIÔ"ð		
ñô ð rS   c                ó\  — t          | ¦  «        r| S 	 t          j                             | |¦  «        S # t          $ rl 	 t          j                             | ¦  «        cY S # t          $ r: |rt                               d¦  «         nt                               d¦  «         Y nw xY wY nw xY wd S )Nz	jit errorz0Both torch.jit.trace and torch.jit.script failed)	r½  r
  rµ  Útracer“  Úscriptrt   r”  Úerror)Úmodelr�  rW  s      rT   ÚtorchscriptrÃ  „  sÏ   € Ý�EÑÔð àˆð	NÝŒy�Š˜u nÑ5Ô5Ð5øÝð Nð Nð Nð	NÝ”9×#Ò# EÑ*Ô*Ð*Ð*Ð*øÝð 	Nð 	Nð 	NØð NÝ—’˜kÑ*Ô*Ð*Ð*å—	’	ÐLÑMÔMÐMøøð		NøøøøøðNøøøð ˆ4s3   “3 ³
B)¾AÁB)ÁAB#Â B)Â"B#Â#B)Â(B)c                ó\   — 	 t          j        | ¦  «        S # t          t          f$ r Y d S w xY wrg   )rõ  Úgetfiler¦  ÚOSError©rÁ  s    rT   rÅ  rÅ  –  s>   € ðÝŒ˜sÑ#Ô#Ð#øÝ•wÐð ð ð Øˆtˆtðøøøs   ‚ –+ª+c                ó:   — t          t          | ¦  «        ¦  «        S )zLTest if an object is a namedtuple or a torch.return_types.* quasi-namedtuple)Úis_namedtuple_clsr†  rÇ  s    rT   Úis_namedtuplerÊ  �  s   € å�T #™YœYÑ'Ô'Ð'rS   c                óž  ‡ — 	 t          ‰ t          ¦  «        r¤t          ‰ dd¦  «        }|dv rdS t          t          ‰ dd¦  «        t          ¦  «        rit	          t          ‰ dd¦  «        ¦  «        rKt          d„ ‰ j        D ¦   «         ¦  «        }|t          fk    rdS |rt          ˆ fd„|D ¦   «         ¦  «        rdS n# t          $ r Y nw xY wd	S )
zhTest if an object is a namedtuple or a (torch.return_types|torch.autograd.forward_ad).* quasi-namedtuplerN   N)útorch.return_typesztorch.autograd.forward_adTÚ_fieldsÚ_makec              3  ó,   K  — | ]}|t           u¯|V — Œd S rg   )r   )r†   Úts     rT   rˆ   z$is_namedtuple_cls.<locals>.<genexpr>­  s,   è è € ÐKÐK A¸!Å7Ð:JÐ:J˜aÐ:JÐ:JÐ:JÐ:JÐKÐKrS   c              3  óR   •K  — | ]!}t          |¦  «        o‰j        |j        u V — Œ"d S rg   )rÉ  Ú__new__)r†   rÐ  r_   s     €rT   rˆ   z$is_namedtuple_cls.<locals>.<genexpr>±  sR   øè è € ð !ð !ð õ	 *¨!Ñ,Ô,ð 5àœK¨1¬9Ð4ð!ð !ð !ð !ð !ð !rS   F)Ú
issubclassrÎ  ÚgetattrrÍ  ÚcallableÚ	__bases__Úanyr¦  )r_   ÚmoduleÚbasess   `  rT   rÉ  rÉ  ¢  s  ø€ ðÝ�c�5Ñ!Ô!ð 	 Ý˜S ,°Ñ5Ô5ˆFØÐLÐLÐLØ�tÝ�' # y°$Ñ7Ô7½Ñ?Ô?ð  ÅHÝ˜˜W dÑ+Ô+ñEô Eð  õ ÐKÐK¨¬ÐKÑKÔKÑKÔK�Ø�U˜HÒ$Ð$à˜4Øð 	 �Sð !ð !ð !ð !ð #ð!ñ !ô !ñ ô ð 	 ð  ˜4øøÝð ð ð Øˆðøøøàˆ5s   ƒ*B= ¯A,B= ÂB= Â=
C
Ã	C
útuple[str, ...]c                óH  — | t           u rdS t          | t          ¦  «        sJ ‚t          | d¦  «        r| j        S t
          j         G d„ d¦  «        ¦   «         }| j        dk    sJ ‚ | t          |t          | j
        ¦  «        ¦  «        ¦  «        }i }t          |¦  «        D ]D}|d         dk    r6t          t          ||¦  «        |¦  «        rt          ||¦  «        j        ||<   ŒEt          |¦  «        | j
        k    sJ ‚t          t!          ||j        ¬¦  «        ¦  «        S )	zIGet the fields of a namedtuple or a torch.return_types.* quasi-namedtuple)ÚstartÚstopÚsteprÍ  c                  ó   — e Zd ZU ded<   dS )ú!namedtuple_fields.<locals>.MarkerrZ   ÚindexN©rM   rN   rO   rw   r>   rS   rT   ÚMarkerrà  Ë  s   € € € € € € àˆ
ˆ
‰
ˆ
ˆ
rS   rã  rÌ  r   r„  )rª   )ÚslicerÓ  rÎ  r  rÍ  rû  Ú	dataclassrN   r…   rœ  Ún_fieldsÚdirrÍ  rÔ  rá  rX  r¯  rk   )r_   rã  rÁ  Úfieldsr^   s        rT   Únamedtuple_fieldsré  À  s>  € ð �e€|€|Ø(Ð(å�c�5Ñ!Ô!Ð!Ð!Ð!Ýˆs�IÑÔð àŒ{ÐåÔðð ð ð ð ñ ô ñ Ôðð Œ>Ð1Ò1Ð1Ð1Ð1Ø
ˆ#�c�&�% ¤Ñ-Ô-Ñ.Ô.Ñ
/Ô
/€CØ€FÝ�C‘”ð 4ð 4ˆØ�Œ7�cŠ>ˆ>�j­°°dÑ);Ô);¸VÑDÔDˆ>Ý" 3¨Ñ-Ô-Ô3ˆF�4‰LøÝˆv‰;Œ;˜#œ,Ò&Ð&Ð&Ð&Ý•˜ F¤JÐ/Ñ/Ô/Ñ0Ô0Ð0rS   c                óò  ‡‡‡— t          j        ¦   «         5  t          j        t           j                             ¦   «         ¦  «        Št           j                             ¦   «         r0t          j        t           j                             ¦   «         ¦  «        Šd„ t          j        |  	                    ¦   «         |  
                    ¦   «         ¦  «        D ¦   «         Šd d d ¦  «         n# 1 swxY w Y   ˆˆˆfd„}|S )Nc                óF   — g | ]}||j         t          j        |¦  «        f‘ŒS r>   )Ú_versionr
  ri  )r†   Úparams     rT   r=  z%checkpoint_params.<locals>.<listcomp>ß  s;   € ð 
ð 
ð 
àð �E”N¥E¤K°Ñ$6Ô$6Ð7ð
ð 
ð 
rS   c                 ól  •— t          j        ¦   «         5  t           j                             ‰¦  «         t           j                             ¦   «         rt           j                             ‰¦  «         ‰D ]&\  } }}| j        |k    r|                      |¦  «         Œ'	 d d d ¦  «         d S # 1 swxY w Y   d S rg   )r
  r€  r«  r®  r  r­  rì  r“  )rí  r  Úoriginal_valuer²  r±  Úsaved_states      €€€rT   Úrestorez"checkpoint_params.<locals>.restoreä  sð   ø€ ÝŒ]‰_Œ_ð 	0ð 	0ÝŒL×&Ò& yÑ1Ô1Ð1ÝŒz×&Ò&Ñ(Ô(ð 9Ý”
×(Ò(¨Ñ8Ô8Ð8Ø2=ð 0ð 0Ñ.��w Ø”> WÒ,Ð,Ø—K’K Ñ/Ô/Ð/øð0ð		0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	0ð 	0s   •BB)Â)B-Â0B-)r
  r€  ri  r«  r¬  r  r­  r‹   rŒ   Ú
parametersÚbuffers)Úgmrñ  r²  r±  rð  s     @@@rT   Úcheckpoint_paramsrõ  Ú  s  øøø€ Ý	Œ‰Œð 
ð 
Ý”K¥¤× :Ò :Ñ <Ô <Ñ=Ô=ˆ	ÝŒ:×"Ò"Ñ$Ô$ð 	EÝ"œ[­¬×)AÒ)AÑ)CÔ)CÑDÔDˆNð
ð 
å"œ¨¯ª©¬¸"¿*º*¹,¼,ÑGÔGð
ñ 
ô 
ˆð	
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð0ð 0ð 0ð 0ð 0ð 0ð 0ð €Ns   —CC%Ã%C)Ã,C)c                ón  — t           j                             ¦   «         rt           j        j        }nt          } |¦   «          t          j        ¦   «          t          j        d¦  «         t          j	        ¦   «         }t          |¦  «        D ]} | |Ž } |¦   «          Œt          j	        ¦   «         }|||z
  fS )Ni9  )r
  r  r­  Úsynchronizer«  ÚgcÚcollectÚmanual_seedrÁ   Úperf_counterrœ  )rÂ  r�  Útimesr÷  Út0r„  r—  Út1s           rT   Útimedrÿ  ð  s¨   € Ý„z×ÒÑ Ô ð Ý”jÔ,ˆˆåˆà€K�M„M€MÝ„J�L„L€LÝ	Ô�dÑÔÐÝ	Ô	Ñ	Ô	€BÝ�5‰\Œ\ð ð ˆØ�˜Ð'ˆØˆ‰ŒˆˆÝ	Ô	Ñ	Ô	€BØ�2˜‘7ˆ?ÐrS   c           	     ó€   — t          d„ t          j        ||                      d¦  «        ¦  «        D ¦   «         ¦  «        S )Nc              3  ó$   K  — | ]}|j         V — Œd S rg   )Úis_cuda©r†   r3  s     rT   rˆ   z check_is_cuda.<locals>.<genexpr>	  s$   è è € ÐWÐW˜QˆqŒyÐWÐWÐWÐWÐWÐWrS   T)Úallr‹   rŒ   rò  )rô  r�  s     rT   Úcheck_is_cudar  	  s8   € ÝÐWÐW¥)¤/°.À"Ç-Â-ÐPTÑBUÔBUÑ"VÔ"VÐWÑWÔWÑWÔWÐWrS   r~  c                ó  — | dk    sJ ‚d„ t          | ¦  «        D ¦   «         }t          |dd …         |d d…         z   ¦  «        }t          dd                     |¦  «        › dd                     |¦  «        › d�¦  «        }d| › d	�|_        |S )
Nr1   c                ó   — g | ]}d |› �‘ŒS rJ  r>   ©r†   rM  s     rT   r=  z rot_n_helper.<locals>.<listcomp>	  s   € Ð&Ð&Ð&˜ˆG�ˆGˆGÐ&Ð&Ð&rS   r7  zlambda r­  z: (ú)Úrot_Ú_helper)rœ  ÚreversedÚevalr„   rM   )rŸ  ÚvarsÚrotatedr  s       rT   Úrot_n_helperr  	  s˜   € àˆqŠ5ˆ5ˆ5ˆ5Ø&Ð&�U 1™XœXÐ&Ñ&Ô&€DÝ�t˜B˜C˜C”y 4¨¨¨¤9Ñ,Ñ-Ô-€GÝ	Ð?˜Ÿš ™œÐ?Ð?¨3¯8ª8°GÑ+<Ô+<Ð?Ð?Ð?Ñ	@Ô	@€BØ#˜Ð#Ð#Ð#€B„KØ€IrS   z	set[type]Úcommon_constant_typesc                ó>  — t          | t          t          f¦  «        r"t          t	          t
          | ¦  «        ¦  «        S t          | t          j        t          t          j        t          j        t          j        f¦  «        pt          | t           t"          hz  ¦  «        S rg   )rÇ  rÎ  Ú	frozensetr  r…   Úis_safe_constantrÍ  ÚenumÚEnumr†  r
  ÚSizerÕ  Ú_GenericAliasr   ÚGenericAliasr  rä  rJ  s    rT   r  r  2	  s†   € Ýˆa•%�Ð#Ñ$Ô$ð -Ý•3Õ'¨Ñ+Ô+Ñ,Ô,Ð,ÝØ	åŒIÝÝŒJÝÔ ÝÔð	
ñ	ô 	ð õ 
Ø	Ý¥ Ñ'ñ
ô 
ðrS   c                 ó
   — ddhS ©Nr   r1   r>   r>   rS   rT   Úcommon_constantsr  D	  s   € ð
 	
Ø	ð	ð rS   ú-TypeGuard[Union[torch.SymBool, torch.SymInt]]c                ó¬   — t          | t          j        t          j        f¦  «        o.t          | j        t          j        j        j        j        ¦  «         S rg   )	rÍ  r
  ÚSymBoolÚSymIntÚnodeÚnestedr€  Ú
nested_intÚNestedIntNoder×  s    rT   Úis_torch_symr%  N	  sH   € Ý�e�eœm­U¬\Ð:Ñ;Ô;ð ÅJØŒ
•E”LÔ*Ô5ÔCñEô Eð Að rS   c                ó  — ddl m} t          j        ¦   «         j         oê|                     ¦   «                              ¦   «          pÃ|                     ¦   «                              ¦   «         ot          j	         p�|                     ¦   «          
                    ¦   «         ot          j	         p]|                     ¦   «                              ¦   «         ot          j	         p* ||¦  «        pt          d¦  «         o| t          ¦   «         v S )Nr1   )Úis_from_defaultsz5pytorch/dynamo:enable_unspecialize_zero_one_plain_int)Úsourcer'  r#   rk   Ú#force_unspec_int_unbacked_size_likeÚguard_sourceÚis_localÚis_specialized_nn_moduler<   Úallow_unspec_int_on_nn_moduleÚ"is_unspecialized_builtin_nn_moduleÚis_unspecialized_nn_moduler%   r  )r«   r(  r'  s      rT   Úis_int_specialization_caser0  T	  s  € Ø(Ð(Ð(Ð(Ð(Ð(åÔ!Ñ#Ô#ÔGÐGð à×ÒÑ!Ô!×*Ò*Ñ,Ô,Ð,ð 	
ð
 ×ÒÑ!Ô!×:Ò:Ñ<Ô<ð 9ÝÔ8Ð8ð	
ð ×ÒÑ!Ô!×DÒDÑFÔFð 9ÝÔ8Ð8ð	
ð ×ÒÑ!Ô!×<Ò<Ñ>Ô>ð 9ÝÔ8Ð8ð	
ð  Ð˜FÑ#Ô#ð!	
õ(  Ð WÑXÔXÐXð ,ØÕ)Ñ+Ô+Ð+ð/rS   c                ó®  — ddl m}m}m} t	          | |¦  «        rƒ|                      ¦   «         so|                      ¦   «         }|                      ¦   «         }t          |¦  «        p3t          j
         o&t          |¦  «        t          u ot          ||¦  «         }|s| S t	          | |¦  «        r'|                     |                      ¦   «         ¦  «        S | S )Nr1   )ÚConstantVariableÚLazyVariableTrackerÚSymNodeVariable)Ú	variablesr2  r3  r4  rÍ  Úis_realizedÚoriginal_sourcerï  r%  r<   Úspecialize_intr†  rZ   r0  r·  Úevaluate_expr)r4  r2  r3  r4  r(  r«   Úis_symnode_vts          rT   Úspecialize_symnoder;  s	  sö   € ØQÐQÐQÐQÐQÐQÐQÐQÐQÐQõ �#Ð*Ñ+Ô+ð °C·O²OÑ4EÔ4Eð ð ×$Ò$Ñ&Ô&ˆØ×"Ò"Ñ$Ô$ˆå$ UÑ+Ô+ð 
ÝÔ%Ð%ð >Ý�U‘”�sÐ"ð>å.¨u°fÑ=Ô=Ð=ð 	ð ð 	ØˆJå�#�Ñ'Ô'ð <Ø×&Ò& s×'8Ò'8Ñ':Ô':Ñ;Ô;Ð;Ø€JrS   c                óx   — ddl m} t          | ¦  «        } t          | |¦  «        r|                      ¦   «         S | S )Nr1   ©r2  )r5  r2  r;  rÍ  Úas_python_constant)r4  r2  s     rT   Úguard_if_dynr?  Œ	  sK   € Ø+Ð+Ð+Ð+Ð+Ð+å
˜SÑ
!Ô
!€Cå�#Ð'Ñ(Ô(ð (Ø×%Ò%Ñ'Ô'Ð'à€JrS   c                ó~   — t          d„ t          j        | |                     ¦   «         ¦  «        D ¦   «         ¦  «        S )Nc              3  ó>   K  — | ]}|                      ¦   «         V — Œd S rg   )Úis_python_constantr  s     rT   rˆ   z&check_constant_args.<locals>.<genexpr>˜	  s.   è è € ÐVÐV¨!ˆq×#Ò#Ñ%Ô%ÐVÐVÐVÐVÐVÐVrS   )r  r‹   rŒ   r6  rª  s     rT   Úcheck_constant_argsrC  —	  s3   € ÝÐVÐV­y¬¸tÀVÇ]Â]Á_Ä_Ñ/UÔ/UÐVÑVÔVÑVÔVÐVrS   c                óÐ   — ddl m} ddlm} d}t	          j        | |                     ¦   «         ¦  «        D ]+}t          ||¦  «        r|dz  }Œt          ||¦  «        s dS Œ,|dk    S )Nr1   r=  ©ÚUnspecializedPythonVariabler   F)Úvariables.constantr2  Úvariables.tensorrF  r‹   rŒ   r6  rÍ  )rñ   rò   r2  rF  Úunspec_countr3  s         rT   Úcheck_unspec_python_argsrJ  ›	  s—   € Ø4Ð4Ð4Ð4Ð4Ð4Ø=Ð=Ð=Ð=Ð=Ð=à€LÝŒ_˜T 6§=¢=¡?¤?Ñ3Ô3ð ð ˆÝ�aÐ4Ñ5Ô5ð 	Ø˜AÑˆLˆLÝ˜AÐ/Ñ0Ô0ð 	Ø�5�5ð	à˜!ÒÐrS   c                ó´   — ddl m} t          j        | |                     ¦   «         ¦  «        D ])}|                     ¦   «         st          ||¦  «        s dS Œ*dS )Nr1   rE  FT)rH  rF  r‹   rŒ   r6  rB  rÍ  )rñ   rò   rF  r3  s       rT   Úcheck_unspec_or_constant_argsrL  ¨	  sl   € ð >Ð=Ð=Ð=Ð=Ð=åŒ_˜T 6§=¢=¡?¤?Ñ3Ô3ð ð ˆØ×$Ò$Ñ&Ô&ð 	­*°QÐ8SÑ*TÔ*Tð 	Ø�5�5øØˆ4rS   c                ó�   ‡— ddl mŠ t          ˆfd„t          j        | |                     ¦   «         ¦  «        D ¦   «         ¦  «        S )Nr1   )ÚNumpyNdarrayVariablec              3  ó8   •K  — | ]}t          |‰¦  «        V — Œd S rg   )rÍ  )r†   r3  rN  s     €rT   rˆ   z+check_numpy_ndarray_args.<locals>.<genexpr>¶	  sB   øè è € ð ð àõ 	�1Ð*Ñ+Ô+ðð ð ð ð ð rS   )rH  rN  r×  r‹   rŒ   r6  )rñ   rò   rN  s     @rT   Úcheck_numpy_ndarray_argsrP  ³	  sa   ø€ Ø6Ð6Ð6Ð6Ð6Ð6åð ð ð ð å”  v§}¢}¡¤Ñ7Ô7ðñ ô ñ ô ð rS   ztype[KeysView[Any]]Ú	dict_keysztype[ValuesView[Any]]Údict_valuesztype[ItemsView[Any, Any]]Ú
dict_itemsÚodict_valuesztype[Iterator[Any]]Útuple_iteratorÚrange_iteratorc                ó0   — h | ]}t          |¦  «        ¯|’ŒS r>   ©rÕ  ©r†   Úmethods     rT   ú	<setcomp>r[  Å	  s6   € ð ð ð àÝ�ÑÔðØ
ðð ð rS   c                ó0   — h | ]}t          |¦  «        ¯|’ŒS r>   rX  rY  s     rT   r[  r[  Ì	  s%   € ÐRÐRÐR˜FÅÈ&ÑAQÔAQÐR�ÐRÐRÐRrS   c                ó0   — h | ]}t          |¦  «        ¯|’ŒS r>   rX  rY  s     rT   r[  r[  Í	  s%   € ÐPÐPÐP˜6½xÈÑ?OÔ?OÐP�ÐPÐPÐPrS   c                ó0   — h | ]}t          |¦  «        ¯|’ŒS r>   rX  rY  s     rT   r[  r[  Ð	  s%   € ÐNÐNÐN˜&½XÀfÑ=MÔ=MÐNˆvÐNÐNÐNrS   c                ód   — t          | t          ¦  «        sJ ‚t                               | ¦  «        S rg   )rÍ  rš  rD  )rÁ  s    rT   Úbuiltin_dict_keysr`  Ó	  s(   € å�a�ÑÔÐÐÐÝ�9Š9�Q‰<Œ<ÐrS   c                óH  ‡ — t          ‰ t          ¦  «        sJ ‚t          ‰ t          t          f¦  «        r‰                      ¦   «         S t          ‰ t          ¦  «        r ˆ fd„t          j        ‰ ¦  «        D ¦   «         S ˆ fd„t                               ‰ ¦  «        D ¦   «         S )Nc                ó>   •— g | ]}|t          j        ‰|¦  «        f‘ŒS r>   )r   r³  ©r†   r<  rÁ  s     €rT   r=  z'get_items_from_dict.<locals>.<listcomp>ß	  s+   ø€ ÐTÐTÐT¸�•KÔ+¨C°Ñ3Ô3Ð4ÐTÐTÐTrS   c                óJ   •— g | ]}|t                                ‰|¦  «        f‘Œ S r>   )rš  r³  rc  s     €rT   r=  z'get_items_from_dict.<locals>.<listcomp>á	  s.   ø€ ÐFÐFÐF°!�•D×$Ò$ S¨!Ñ,Ô,Ð-ÐFÐFÐFrS   )rÍ  rš  rÇ  r   rž   rD  rÇ  s   `rT   Úget_items_from_dictre  Ù	  s›   ø€ å�c�4Ñ Ô Ð Ð Ð Ýˆc•D�+Ð&Ñ'Ô'ð GØ�yŠy‰{Œ{ÐÝ	�C�Ñ	%Ô	%ð GØTÐTÐTÐT½kÔ>NÈsÑ>SÔ>SÐTÑTÔTÐTàFÐFÐFÐFµt·y²yÀ±~´~ÐFÑFÔFÐFrS   c                ól   — t          | ¦  «        }t          j        j                             |¦  «         |S rg   )Ú
object_newr
  r  ÚModulerO  )r_   rÁ  s     rT   Únn_module_newri  ä	  s*   € Ý
�S‰/Œ/€CÝ	„H„O×Ò˜SÑ!Ô!Ð!Ø€JrS   c                óB   — t          j        t          j        | d¦  «        S r�   )rò  ÚreduceÚoperatorÚmul)Úits    rT   Úproductro  ê	  s   € ÝÔ�HœL¨"¨aÑ0Ô0Ð0rS   c                óL   — |                       ¦   «         \  }\  }}|||z            S rg   )Ú
__reduce__)rn  rá  r„  rÁ  rÜ  s        rT   Útuple_iterator_getitemrr  î	  s'   € Ø—}’}‘”Ñ€A�vˆˆuØˆu�u‰}ÔÐrS   c                ód   — t          j                             t          j        ¦  «        | ¦  «        S rg   )r
  Ú_dynamoÚdisablerû  rè  ri   s    rT   Údataclass_fieldsrv  ó	  s#   € ÝŒ=× Ò ¥Ô!3Ñ4Ô4°SÑ9Ô9Ð9rS   útuple[int, int, int]c                ót   — |                       ¦   «         \  }\  }}|j        |pdz   }|j        }|j        }|||fS r“   )rq  rÜ  rÝ  rÞ  )Ú
range_iterr„  Ú	range_objÚ	maybe_idxrÜ  rÝ  rÞ  s          rT   Únormalize_range_iterr|  ú	  sI   € Ø!+×!6Ò!6Ñ!8Ô!8Ñ€A�|ˆ	�Yð ŒO˜y˜~¨AÑ.€EØŒ>€DØŒ>€DØ�4˜ÐÐrS   c                ó,   — |                       |¦  «        S rg   )Úas_subclass)rÐ  r_   s     rT   Úto_subclassr  
  s   € Ø�=Š=˜ÑÔÐrS   c                óº   — t           }t          | t          ¦  «        rt          }t          t	          j        |                     | ¦  «        ||dz   ¦  «        ¦  «        S r�   )rš  rÍ  r   Únextr‹   ÚislicerD  )rÁ  rŸ  Ú
dict_classs      rT   Údict_keys_getitemr„  
  sK   € å€JÝ�!•[Ñ!Ô!ð !Ý ˆ
Ý•	Ô  §¢°Ñ!3Ô!3°Q¸¸A¹Ñ>Ô>Ñ?Ô?Ð?rS   c                óL   — | j         j        }| j        }|rdnd}|› d|› d|› �}|S )NÚLÚGz["z"].)rá  rM   r^   )r«   r#  r^   r-  r^  Ú
local_names         rT   Ú	enum_reprr‰  
  sD   € ð Œ?Ô#€DØ
Œ*€CØÐ!ˆCˆC˜c€EØÐ+Ð+˜TÐ+Ð+ cÐ+Ð+€JØÐrS   c                óÄ   — || j         d<   t          j        ¦   «         j        j        }t
          j        j        j         	                    ||¦  «        x}r|| j         d<   d S d S )NÚexample_valueÚunbacked_bindings)
Úmetar#   rk   Ú	fake_modeÚ	shape_envr
  r   ÚexperimentalÚsymbolic_shapesÚcompute_unbacked_bindings)r!  r‹  r�  Úsymbol_to_paths       rT   Úset_example_valuer”  
  sq   € ð "/€D„IˆoÑÝÔ"Ñ$Ô$Ô.Ô8€Iõ Œ8Ô Ô0×JÒJØ�}ñ
ô 
ð	
ˆð8ð *8ˆŒ	Ð%Ñ&Ð&Ð&ð8ð 8rS   c                óä   — |                       ¦   «         j        j                             d¦  «        }t	          |¦  «        s/ddlm} ddlm}  |dt          |¦  «        dg |j
        ¢¬¦  «         |S )Nr‹  r1   ©Úgraph_break_hintsr7  z:Cannot check Tensor object identity without its fake valuez/TensorVariable is missing a fake example_value.©r;  r<  r=  r>  )r2  r!  r�  rk   r@   rõ  r—  rˆ  r8  r~   Ú
DYNAMO_BUG)ÚvtÚfake_tensorr—  r8  s       rT   Ú_get_fake_tensorrœ  /
  s–   € Ø—+’+‘-”-Ô$Ô)×-Ò-¨oÑ>Ô>€KÝ�;ÑÔð 	
Ø'Ð'Ð'Ð'Ð'Ð'Ø)Ð)Ð)Ð)Ð)Ð)àÐØPÝ˜Ñ$Ô$ØIØ1Ð%Ô0Ð1ð		
ñ 	
ô 	
ð 	
ð ÐrS   c                ó^  ‡— ddl m}m}m}m} ‰                     ¦   «         r0t          ˆfd„| D ¦   «         ¦  «        }|                     |¦  «        S d}	|r!t          ‰|¦  «        rd}	t          ‰¦  «        Šd }
| D ]š}|	r9t          ||¦  «        r(‰t          |¦  «        u r|                     d¦  «        c S Œ= |t          j        ¦  «                             ||‰gi ¦  «        }|
€|}
Œn |t          j        ¦  «                             |||
gi ¦  «        }
Œ›|
€|                     d¦  «        }
|
S )Nr1   )ÚBuiltinVariabler2  ÚTensorVariableÚVariableTrackerc              3  ó”   •K  — | ]B}|                      ¦   «         o)|                     ¦   «         ‰                     ¦   «         k    V — ŒCd S rg   )rB  r>  )r†   r3  Úsearchs     €rT   rˆ   z iter_contains.<locals>.<genexpr>G
  sk   øè è € ð 
ð 
ð ð × Ò Ñ"Ô"ð FØ×$Ò$Ñ&Ô&¨&×*CÒ*CÑ*EÔ*EÒEð
ð 
ð 
ð 
ð 
ð 
rS   FT)r5  rž  r2  rŸ  r   rB  r×  r·  rÍ  rœ  rl  ÚeqÚcall_functionÚor_)rž   r¢  ÚtxÚcheck_tensor_identityrž  r2  rŸ  r   Úfound_constÚmust_check_tensor_idÚfoundr3  Úchecks    `           rT   Úiter_containsr¬  >
  s²  ø€ ðð ð ð ð ð ð ð ð ð ð ð ð × Ò Ñ"Ô"ð 4Ýð 
ð 
ð 
ð 
ð ð
ñ 
ô 
ñ 
ô 
ˆð
  ×&Ò& {Ñ3Ô3Ð3à ÐØð *¥¨F°NÑ!CÔ!Cð *Ø#Ðå! &Ñ)Ô)ˆà'+€EØð ð ˆØð 	Ý˜!˜^Ñ,Ô,ð 9ØÕ-¨aÑ0Ô0Ð0Ð0Ø+×2Ò2°4Ñ8Ô8Ð8Ð8Ð8øà#�O¥H¤KÑ0Ô0×>Ò>¸rÀAÀvÀ;ÐPRÑSÔSˆEØˆ}Ø��à'˜­¬Ñ5Ô5×CÒCØ˜ ˜¨ñô ��ð €}Ø ×'Ò'¨Ñ.Ô.ˆØ€LrS   r<  ú?TypeIs[Union[torch.Tensor, torch.nn.Module, MethodWrapperType]]c                ód   — t          | t          j        t          j        j        t
          f¦  «        S )z4Returns whether it indexes dictionaries using its id)rÍ  r
  r  r  rh  r   )r<  s    rT   Ú	key_is_idr¯  g
  s"   € õ �a�%œ,­¬¬Õ9JÐKÑLÔLÐLrS   c                ó>   — d„ |                       ¦   «         D ¦   «         S )Nc                óN   — g | ]"}t          |¦  «        rt          |¦  «        n|‘Œ#S r>   )r¯  r²  )r†   r<  s     rT   r=  zkey_to_id.<locals>.<listcomp>o
  s-   € Ð?Ð?Ð?¨Q•Y˜q‘\”\Ð(�Bˆq‰EŒEˆE qÐ?Ð?Ð?rS   )rD  r×  s    rT   Ú	key_to_idr²  n
  s   € Ø?Ð?°%·*²*±,´,Ð?Ñ?Ô?Ð?rS   c               ó  ‡— ddl m} t          | t          t          f¦  «        rrd                     ˆfd„| D ¦   «         ¦  «        }t          | t          ¦  «        rd|› d�S t          | t          ¦  «        sJ ‚t          | ¦  «        dk    rd|› d�S d|› d	�S t          | t          j        ¦  «        r%t          | ‰¬
¦  «         
                    dd¦  «        S  || ¦  «        r| j        S t          | t          ¦  «        rd„ } || ¦  «        S | ›S )Nr1   )Úis_builtin_callabler­  c              3  ó:   •K  — | ]}t          |‰¬ ¦  «        V — ŒdS ©©r#  N©Ú
const_repr©r†   rO  r#  s     €rT   rˆ   zconst_repr.<locals>.<genexpr>v
  s0   øè è € ÐDÐD¸Q�j¨°%Ð8Ñ8Ô8ÐDÐDÐDÐDÐDÐDrS   ú[ú]ú(z,)r	  r·  ú'rõ  c                óR   — | j         }|j        }|dk    r|j        S |dz   |j        z   S )NÚbuiltinsú.)rá  rN   rO   )rà  ÚklassrØ  s      rT   Úfullnamezconst_repr.<locals>.fullname‡
  s7   € Ø”KˆEØÔ%ˆFØ˜Ò#Ð#ØÔ)Ð)Ø˜C‘< %Ô"4Ñ4Ð4rS   )Útrace_rulesr´  rÍ  rC  rÎ  r„   rX  r  r  r‰  ÚreplacerM   r†  )r3  r#  r´  Ú
elems_reprrÃ  s    `   rT   r¹  r¹  r
  sG  ø€ Ø0Ð0Ð0Ð0Ð0Ð0å�!•d�E�]Ñ#Ô#ð Ø—X’XÐDÐDÐDÐDÀ!ÐDÑDÔDÑDÔDˆ
Ý�a�ÑÔð 	)Ø$�zÐ$Ð$Ð$Ð$å˜a¥Ñ'Ô'Ð'Ð'Ð'Ý�1‰vŒv˜Š{ˆ{Ø)˜:Ð)Ð)Ð)Ð)à(˜:Ð(Ð(Ð(Ð(Ý	�A•t”yÑ	!Ô	!ð õ ˜ %Ð(Ñ(Ô(×0Ò0°°bÑ9Ô9Ð9Ø	Ð	˜QÑ	Ô	ð ØŒzÐÝ	�A•tÑ	Ô	ð ð	5ð 	5ð 	5ð ˆx˜‰{Œ{ÐàˆxˆrS   c               óV   ‡— d                      ˆfd„| D ¦   «         ¦  «        }d|z   dz   S )Nr­  c              3  ó:   •K  — | ]}t          |‰¬ ¦  «        V — ŒdS r¶  r¸  rº  s     €rT   rˆ   z!dict_keys_repr.<locals>.<genexpr>”
  s0   øè è € ÐGÐG°q�
 1¨EÐ2Ñ2Ô2ÐGÐGÐGÐGÐGÐGrS   r»  r¼  ©r„   )Ú
const_keysr#  Úkeys_strs    ` rT   Údict_keys_reprrÌ  “
  s8   ø€ Ø�xŠxÐGÐGÐGÐG¸JÐGÑGÔGÑGÔG€HØ�‰>˜CÑÐrS   Ú
__dict_key)ÚUnsupportedFakeTensorExceptionc                óD   — |› dt          |¦  «        › d| j        j        › �S )Nr„  Ú_c)r²  Úoutputrú   )r¦  ÚrootrÁ  s      rT   Úget_safe_global_namerÓ  ž
  s+   € ð Ð6Ð6•R˜‘W”WÐ6Ð6 ¤	Ô 4Ð6Ð6Ð6rS   r¨  c                ó   — |D ]	}| |v r dS Œ
dS r¤  r>   )r¨  Ú
containersÚ	containers      rT   Úis_inr×  ¨
  s-   € Øð ð ˆ	Ø�9ÐÐØ�4�4ð àˆ5rS   )Úrequires_suffixÚprefixc               óž   — |st          | g|¢R Ž s| S t          j        ¦   «         D ]}| › d|› �}t          |g|¢R Ž s|c S Œt          d¦  «        ‚)zm
    Return a name that starts with `prefix` and is not in any of the
    `containers` (e.g., map, set).
    r„  Úunreachable)r×  r‹   ra   ÚAssertionError)rÙ  rØ  rÕ  rM  Ú	candidates        rT   Úget_unique_name_wrtrÞ  ¯
  s‡   € ð
 ð ¥5¨Ð#=°*Ð#=Ð#=Ð#=ð ØˆåŒ_ÑÔð ð ˆØ�O�O �O�Oˆ	Ý�YÐ, Ð,Ð,Ð,ð 	ØÐÐÐð	õ ˜Ñ
'Ô
'Ð'rS   c                óâ   — 	  | ¦   «         S # t           $ rX}ddlm} d|j        › d�}t                               |¦  «          |dt          |j        ¦  «        |g |¬¦  «         Y d }~d S d }~ww xY w)Nr1   r7  zEncountered exception (z!) during fake tensor propagation.z!Fake tensor propagation exceptionr:  )rÎ  rˆ  r8  Úreasonrt   r�  r~   )r  rD  r8  Úmsgs       rT   Úwrap_fake_exceptionrâ  ¿
  s¶   € ð
Øˆr‰tŒtˆøÝ)ð 
ð 
ð 
Ø)Ð)Ð)Ð)Ð)Ð)àS¨¬ÐSÐSÐSˆÝ�Š�CÑÔÐØÐØ7Ý˜œ‘M”MØØØð	
ñ 	
ô 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
øøøøð
øøøs   ‚	 Œ
A.–AA)Á)A.c                ó¤   ‡ — t           j        j                             |¦  «        5  t	          ˆ fd„¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nc                 ó,   •— t          j        ‰ ¦  «        S rg   )rv  ÚdeepcopyrÇ  s   €rT   r4  z)deepcopy_to_fake_tensor.<locals>.<lambda>Ò
  s   ø€ ­4¬=¸Ñ+=Ô+=€ rS   )r
  r!  r›  ÚFakeCopyModerâ  )rÁ  rŽ  s   ` rT   Údeepcopy_to_fake_tensorrç  Ð
  s–   ø€ Ý	Ô	Ô	&×	3Ò	3°IÑ	>Ô	>ð ?ð ?Ý"Ð#=Ð#=Ð#=Ð#=Ñ>Ô>ð?ð ?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?ð ?ð ?s   ¦AÁA	ÁA	c                óx   — t          j        t          j        t          j        | |z
  ¦  «        ¦  «        ¦  «        S )z+
    Calculate root mean squared error
    )r
  ÚsqrtÚmeanÚsquare)r»  rž  s     rT   Úrmserì  Õ
  s,   € õ Œ:•e”j¥¤¨c°C©iÑ!8Ô!8Ñ9Ô9Ñ:Ô:Ð:rS   g-Cëâ6?TÚforce_max_multiplierc                óD  ‡ ‡‡‡‡‡‡‡‡‡	‡
‡‡— ‰€‰ Št          ‰ t          t          t          j        t
          j        j        t
          j        f¦  «        rÐt          ‰t          t          t          j        f¦  «        s*J dt          ‰ ¦  «        › dt          ‰¦  «        › �¦   «         ‚t          ‰ ¦  «        t          ‰¦  «        k    r ‰	d¦  «         dS t          ‰ ¦  «        t          ‰¦  «        k    o1t          ˆˆˆˆˆˆ	ˆˆˆ
f	d„t          ‰ ‰‰¦  «        D ¦   «         ¦  «        S t          ‰ ¦  «        j        dk    r*t          ‰ j        ‰j        ‰j        ‰‰‰‰‰‰‰	‰
‰¬¦  «        S t          ‰ t           ¦  «        �rt          ‰t           ¦  «        sJ ‚t#          ‰                      ¦   «         ¦  «        t#          ‰                     ¦   «         ¦  «        k    sNJ d	t#          ‰                      ¦   «         ¦  «        › d
t#          ‰                     ¦   «         ¦  «        › �¦   «         ‚t'          ‰                      ¦   «         ¦  «        D ]>}t          ‰ |         ‰|         ‰|         ‰‰‰‰‰‰‰	‰
‰¬¦  «        s ‰	d|¦  «          dS Œ?dS t          ‰ t"          ¦  «        rct          ‰t"          ¦  «        sJ ‚t#          ‰ ¦  «        t#          ‰¦  «        k    s*J dt#          ‰ ¦  «        › d
t#          ‰¦  «        › �¦   «         ‚dS t          ‰ t
          j        t*          f¦  «        �r•t          ‰ t
          j        j        ¦  «        rJ ‚t          ‰t
          j        j        ¦  «        rJ ‚d„ Šˆfd„‰ ‰‰fD ¦   «         \  Š ŠŠ‰ j        r1‰j        sJ ‚‰                      ¦   «         Š ‰                     ¦   «         Št          ‰t
          j        ¦  «        s*J dt          ‰ ¦  «        › dt          ‰¦  «        › �¦   «         ‚‰r¦‰ j        ‰j        k    r ‰	d‰ j        ‰j        ¦  «         dS ‰ j        t
          j        k    rh‰rdS t          j        ‰                      t
          j        ¬¦  «        ‰                     t
          j        ¬¦  «        ‰‰‰¬¦  «        }|s ‰	d¦  «         |S ‰�r‰                      ¦   «                              t
          j         ¦  «        Š ‰                     ¦   «                              t
          j         ¦  «        Št          j        ‰ ‰‰‰d¬¦  «        rdS t
          j        j!         "                    ‰ ‰dd¬¦  «        }|dk     rQtF           $                    d| %                    ¦   «          &                    ¦   «          '                    ¦   «         ¦  «         |dk    S ‰s‰                      ‰j        ¦  «        Š t          j        ‰ ‰‰‰‰¬¦  «        rdS ‰j        t
          j(        k    �r³d}‰ )                    ¦   «          *                    ¦   «         s€‰ )                    ¦   «          *                    ¦   «         sZ‰  )                    ¦   «          *                    ¦   «         r4t          j        ‰                     ‰j        ¬¦  «        ‰||‰¬¦  «        rdS tW          ‰‰ ¦  «         '                    ¦   «         }tY          j)        |¦  «        rtF           $                    d¦  «         tW          ‰‰¦  «         '                    ¦   «         }ˆˆˆ ˆˆˆ
fd„} |¦   «         }|||z  ‰dz  z   k    }|sG‰rEtY          j)        |¦  «        r1tY          j)        |¦  «        rt
          j-        j.        j/        j0        sd}|s) ‰	d||‰ 1                    ¦   «         ‰j        |‰‰
¦  «         |S ‰rdS  ‰	d‰¦  «         dS t          ‰ td          tf          t          d¦  «        t6          t
          j4        f¦  «        r)‰rdS ‰ ‰k    }|s ‰	d t          ‰ ¦  «        ‰ ‰¦  «         |S tk          ‰ ¦  «        stm          ‰ ¦  «        ri‰r2tk          ‰¦  «        s#tm          ‰¦  «        s‰  '                    ¦   «         Š t          ‰ ¦  «        t          ‰¦  «        u o‰ ‰k    }|s ‰	d!‰ ‰¦  «         |S to          ‰ ¦  «        r\t          ‰ ¦  «        t          ‰¦  «        u o=t          t          j8        ‰ ¦  «        t          j8        ‰¦  «        ‰‰‰‰‰‰‰‰	‰
¬"¦  «        S t          ‰ ¦  «        j        d#v r\t          ‰ ¦  «        t          ‰¦  «        u sJ ‚t          ˆˆˆˆˆˆ	ˆ ˆˆˆˆ
fd$„‰ j9                             ¦   «         D ¦   «         ¦  «        S tu          d%t          ‰ ¦  «        j        › �¦  «        ‚)&z-Check correctness to see if ref and res matchNztype mismatch r¤   zLength mismatchFc              3  óV   •	K  — | ]#\  }}}t          |||‰‰‰‰‰
‰‰	‰‰¬ ¦  «        V — Œ$dS )©Ú	log_errorÚ(use_larger_multiplier_for_smaller_tensorrí  N)Úsame)r†   ÚaiÚbiÚ	fp64_refiÚcos_similarityÚ	equal_nanÚexact_dtyperí  Úignore_non_fprñ  Úrelax_numpy_equalityÚtolrò  s       €€€€€€€€€rT   rˆ   zsame.<locals>.<genexpr>ö
  sr   øè è € ð ,
ð ,
ñ "��B˜	õ ØØØØØØØØ$ØØ#Ø9aØ%9ðñ ô ð,
ð ,
ð ,
ð ,
ð ,
ð ,
rS   ÚQuestionAnsweringModelOutputrð  zkeys mismatch z == )	r÷  rü  rø  rù  rû  rú  rñ  rò  rí  zAccuracy failed for key name %sTzelements mismatch c                ób   — t          | t          j        ¦  «        r| nt          j        | ¦  «        S rg   )rÍ  r
  r  Útensor©rÐ  s    rT   Ú	to_tensorzsame.<locals>.to_tensor:  s%   € Ý" 1¥e¤lÑ3Ô3ÐH�1�1½¼Àa¹¼ÐHrS   c              3  ó.   •K  — | ]} ‰|¦  «        V — Œd S rg   r>   )r†   r-  r  s     €rT   rˆ   zsame.<locals>.<genexpr>=  s+   øè è € ÐMÐM°˜i˜i¨™nœnÐMÐMÐMÐMÐMÐMrS   zdtype mismatch %s, %srp  )ÚatolÚrtolrø  z+Accuracy failed: uint8 tensor did not matchr   g�íµ ÷Æ°>)ÚdimÚepsg®Gáz®ï?zSimilarity score=%sg{®Gáz¤?z=Found nan in reference. Consider running in higher precision.c                 ój  •— ‰rdS ‰j         t          j        t          j        fv rdnd} ‰r‰                     ¦   «         dk    rd} nm‰r‰                     ¦   «         dk    rd} nP‰                     ¦   «         dk     s6‰j        dk    r%‰j        d	         ‰j        d
         cxk    rdk    sn ‰dk    rd} | S )Nç      $@g      @g       @é
   iô  g       @r  é   r7  éþÿÿÿr1   g{®Gáz”?)rq  r
  ræ  Úbfloat16ÚnumelÚndimr|  )Ú
multiplierrí  Úfp64_refr»  rž  rü  rò  s    €€€€€€rT   Úget_multiplierzsame.<locals>.get_multiplier‰  sâ   ø€ ð ,ð $Ø#˜tð  #œy­U¬]½E¼NÐ,KÐKÐK˜˜ÐQTð ð @ð )Ø ŸšÑ(Ô(¨BÒ.Ð.à%)˜
˜
ØAð )Ø ŸšÑ(Ô(¨CÒ/Ð/à%(˜
˜
à ŸšÑ(Ô(¨4Ò/Ð/ØœH¨šM˜M¨c¬i¸¬m¸s¼yÈ¼}Ð.QÐ.QÒ.QÐ.QÐPQÒ.QÐ.QÐ.QÐ.Qà (š?˜?ð
 &)˜
Ø%Ð%rS   r  zŠRMSE (res-fp64): %.5f, (ref-fp64): %.5f and shape=%s. res.dtype: %s, multiplier: %f, tol: %f, use_larger_multiplier_for_smaller_tensor: %dz+Accuracy failed: allclose not within tol=%szAccuracy failed (%s): %s != %sz!Accuracy failed (numpy): %s != %s©r÷  rü  rø  rù  rû  rú  rñ  rò  )ÚMaskedLMOutputÚSeq2SeqLMOutputÚ!CausalLMOutputWithCrossAttentionsÚLongformerMaskedLMOutputÚ	InstancesÚSquashedNormalÚBoxesÚNormalÚTanhTransformÚFooÚVariablec              3  ó    •K  — | ]H}t          t          ‰|¦  «        t          ‰
|¦  «        t          ‰|¦  «        ‰‰‰‰‰	‰‰‰¬ ¦  «        V — ŒIdS )r  N)ró  rÔ  )r†   rª   r÷  rø  rù  r  rú  rñ  r»  rû  rž  rü  rò  s     €€€€€€€€€€€rT   rˆ   zsame.<locals>.<genexpr>ø  s‡   øè è € ð 
ð 
ð õ Ý˜˜SÑ!Ô!Ý˜˜SÑ!Ô!Ý˜ #Ñ&Ô&Ø-ØØ#Ø'Ø%9Ø+Ø#Ø9aðñ ô ð
ð 
ð 
ð 
ð 
ð 
rS   zunsupported type: );rÍ  rC  rÎ  ru   r  r
  r  ÚParameterListr  r†  rX  r  r‹  rM   ró  Úlossrš  rQ  rD  r¯  r  Úfloatr!  r?   Ú	is_sparseÚto_denserq  rÈ   ÚallcloseÚtorà  Úflattenrç  Ú
functionalÚcosine_similarityrt   r�  ÚdetachÚcpur¨  rè  Úisnanr×  rì  Úmathrç  r<   ÚcppÚinject_relu_bug_TESTING_ONLYrŒ  r~   rZ   r  rä  ré  r  Ú	as_tensorÚ__dict__rÃ   )r»  rž  r  r÷  rü  rø  rù  rû  rú  rñ  rò  rí  r<  ÚrÚscoreÚ	loose_tolÚ	ref_errorÚ	res_errorr  r  Úpasses_testr  s   ````````````         @rT   ró  ró  Ü
  s{
  øøøøøøøøøøøøø€ ð ÐØˆÝØ�d•E�;Ô,­e¬hÔ.DÅeÄjÐQñô ð \Fõ ˜#¥¥e­[Ô->Ð?Ñ@Ô@ð 	
ð 	
Ø4�T #™YœYÐ4Ð4­¨c©¬Ð4Ð4ñ	
ô 	
ð 	
õ ˆs‰8Œ8•s˜3‘x”xÒÐØˆIÐ'Ñ(Ô(Ð(Ø�5Ý�3‰xŒx�3˜s™8œ8Ò#ð 
­ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
õ &)¨¨c°8Ñ%<Ô%<ð,
ñ ,
ô ,
ñ )
ô )
ð 	
õ" 
ˆc‰ŒÔ	Ð=Ò	=Ð	=õ ØŒHØŒHØŒMØØØØØ ØØØ5]Ø!5ð
ñ 
ô 
ð 	
õ 
�C�Ñ	Ô	ñ pFÝ˜#�tÑ$Ô$Ð$Ð$Ð$Ý�3—8’8‘:”:‰Œ¥# c§h¢h¡j¤j¡/¤/Ò1Ð1Ð1ØC�S §¢¡¤™_œ_ÐCÐCµ#°c·h²h±j´j±/´/ÐCÐCñ 2Ô1Ð1õ ˜Ÿš™
œ
Ñ#Ô#ð 	ð 	ˆAåØ˜”FØ˜”FØ˜Q”KØ#1ØØ'Ø +Ø)=Ø"/Ø'Ø=eØ)=ðñ ô ðð  �	Ð;¸QÑ?Ô?Ð?Ø�u�uð#ð$ ˆtÝ	�C�Ñ	Ô	ð WFÝ˜#�sÑ#Ô#Ð#Ð#Ð#Ý�3‰xŒx�3˜s™8œ8Ò#Ð#Ð#Ð%R½#¸c¹(¼(Ð%RÐ%RÍÈCÉÌÐ%RÐ%RÑ#Ô#Ð#ØˆtÝ	�C�%œ,­Ð.Ñ	/Ô	/ñ SFÝ˜c¥5Ô#4Ô#?Ñ@Ô@Ð@Ð@Ð@Ý˜c¥5Ô#4Ô#?Ñ@Ô@Ð@Ð@Ð@ð	Ið 	Ið 	Ið NÐMÐMÐM¸¸cÀ8Ð8LÐMÑMÔMÑˆˆS�(àŒ=ð 	!Ø”=Ð Ð Ð Ø—,’,‘.”.ˆCØ—,’,‘.”.ˆCÝ˜#�uœ|Ñ,Ô,ÐVÐVÐ.V½tÀC¹y¼yÐ.VÐ.VÍ4ÐPSÉ9Ì9Ð.VÐ.VÑVÔVÐVØð 	ØŒy˜CœIÒ%Ð%Ø�	Ð1°3´9¸c¼iÑHÔHÐHØ�uØŒy�EœJÒ&Ð&Ø ð  Ø˜4å”NØ—F’F¥¤�FÑ-Ô-Ø—F’F¥¤�FÑ-Ô-ØØØ'ðñ ô �ð ð MØ�IÐKÑLÔLÐLØ�àñ t	Ø—+’+‘-”-×"Ò"¥5¤=Ñ1Ô1ˆCØ—+’+‘-”-×"Ò"¥5¤=Ñ1Ô1ˆCÝŒ~˜c 3¨S°sÀdÐKÑKÔKð ð �tÝ”HÔ'×9Ò9¸#¸sÈÈtÐ9ÑTÔTˆEØ�tŠ|ˆ|Ý—’Ð1°5·<²<±>´>×3EÒ3EÑ3GÔ3G×3LÒ3LÑ3NÔ3NÑOÔOÐOØ˜D’=Ð àð (Ø—f’f˜SœYÑ'Ô'�õ Œ~˜c 3¨S°sÀiÐPÑPÔPð Ø�tð Œ~¥¤Ò.Ñ.ð %�	à ŸšÑ(Ô(×,Ò,Ñ.Ô.ð àŸIšI™KœKŸOšOÑ-Ô-ð ð Ÿ	š	™œŸšÑ)Ô)ð õ œØ Ÿš¨#¬)˜Ñ4Ô4ØØ&Ø&Ø"+ðñ ô ð	 ð  ˜4Ý  ¨3Ñ/Ô/×4Ò4Ñ6Ô6�	å”:˜iÑ(Ô(ð Ý—K’KØWñô ð õ ! ¨3Ñ/Ô/×4Ò4Ñ6Ô6�	ð!&ð !&ð !&ð !&ð !&ð !&ð !&ð !&ð !&ð !&ðF ,˜^Ñ-Ô-�
à'¨J¸Ñ,BÀSÈ4ÁZÑ,OÒP�à#ð	'à!ð	'õ œ
 9Ñ-Ô-ð	'õ œ
 9Ñ-Ô-ð		'õ "œOÔ2Ô6ÔSð	'ð #'�KØ"ð Ø�IðIà!Ø!ØŸš™
œ
Øœ	Ø"ØØ@ñ
ô 
ð 
ð #Ð"àð Ø�tàˆIÐCÀSÑIÔIÐIØ�5Ý	�C�#�s¥D¨¡J¤Jµµe´lÐCÑ	DÔ	Dð =FØð 	Ø�4Ø�3ŠJˆØð 	MØˆIÐ6½¸S¹	¼	À3ÈÑLÔLÐLØˆÝ	˜3Ñ	Ô	ð 6FÕ#6°sÑ#;Ô#;ð 6FØð 	Ý˜cÑ"Ô"ð	Ý&9¸#Ñ&>Ô&>ð	ð —(’(‘*”*ˆCÝ�#‰YŒY�$˜s™)œ)Ð#Ð5¨#°ª*ˆØð 	EØˆIÐ9¸3ÀÑDÔDÐDØˆÝ	˜#Ñ	Ô	ð -FÝ�S‘	”	�T #™YœYÐ&ð 
­DÝŒO˜CÑ Ô ÝŒO˜CÑ Ô ØØ)ØØØ#Ø!5Ø'ØØ5]ð-
ñ -
ô -
ð 	
õ 
ˆc‰ŒÔ	ð  ð 
ð 
õ �C‰yŒy�D ™IœIÐ%Ð%Ð%Ð%Ýð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð ”|×(Ò(Ñ*Ô*ð
ñ 
ô 
ñ 
ô 
ð 	
õ" ÐDµ°S±	´	Ô0BÐDÐDÑEÔEÐErS   c                ón   — | j                              d¦  «        d         }d| j        › d|› d| j        › d�S )Nú/r7  r¾  z' (r¥   r	  )rQ  Úsplitr…  r‡  )r‰  Úshort_filenames     rT   Úformat_func_infor;    sC   € ØÔ%×+Ò+¨CÑ0Ô0°Ô4€NØGˆtŒ|ÐGÐG ÐGÐG°Ô1DÐGÐGÐGÐGrS   c               #  ó  K  — t           j        } t          j        t           _        t           j        }t          j        t           _        	 d V — | t           _        |t           _        d S # | t           _        |t           _        w xY wrg   )r<   Úrecompile_limitrÒ  rK  Úaccumulated_recompile_limit)ÚpriorÚprior_acc_limits     rT   Údisable_cache_limitrA    sm   è è € åÔ"€EÝ œ[…FÔÝÔ8€OÝ),¬…FÔ&ð=Øˆˆˆà!&�ÔØ-<�Ô*Ð*Ð*øð "'�ÔØ-<�Ô*Ð<Ð<Ð<Ð<s   ÁA& Á&B z'collections.defaultdict[Any, list[Any]]Úguard_failuresz3list[torch._dynamo.output_graph.GraphCompileReason]Úgraph_break_reasonsc                óò   — dt           j                              ¦   «                              d¦  «        z   dz   t          t	          j        ¦   «         ¦  «        z   }t          j                             | |¦  «        S )NÚrun_z%Y_%m_%d_%H_%M_%S_%fz-pid_)ÚdatetimeÚnowÚstrftimer~   r`  Úgetpidrr  r„   )Úroot_dirÚdir_names     rT   Ú_get_debug_dirrL  .  sm   € ð 	Ý
Ô
×
Ò
Ñ
!Ô
!×
*Ò
*Ð+AÑ
BÔ
Bñ	Cð ñ	õ �bŒi‰kŒkÑ
Ô
ñ		ð õ Œ7�<Š<˜ (Ñ+Ô+Ð+rS   c                 ó8   — t           j        } t          | ¦  «        S rg   )r<   rÇ  rL  )Ú
debug_roots    rT   rs  rs  :  s   € ÝÔ&€JÝ˜*Ñ%Ô%Ð%rS   c                óÔ   — d| j         v r't          | j         d         ¦  «        r| j         d         S |r5ddlm} ddlm}  |dt          | ¦  «        d| › d�g |j        ¢¬	¦  «         d S d S )
Nr‹  r   r7  r1   r–  z Missing FakeTensor example valuez,`FakeTensor` example value was required for z but not available.r˜  )r�  r@   Útorch._dynamo.excr8  rõ  r—  r~   r™  )r!  Úrequiredr8  r—  s       rT   Úextract_fake_example_valuerR  ?  s­   € Ø˜$œ)Ð#Ð#­°´	¸/Ô0JÑ(KÔ(KÐ#ØŒy˜Ô)Ð)Ø	ð Ø6Ð6Ð6Ð6Ð6Ð6à'Ð'Ð'Ð'Ð'Ð'àÐØ6Ý˜‘I”IØ`ÀtÐ`Ð`Ð`Ø1Ð%Ô0Ð1ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
ð ˆtrS   c                ó6   — t          | ¦  «        |j        u sJ ‚| S rg   )rA   rŽ  )rD  r¦  s     rT   Úensure_graph_fakerT  Q  s"   € Ý˜qÑ!Ô! R¤\Ð1Ð1Ð1Ð1Ø€HrS   c                ó^   ‡ ‡— dˆˆ fd„}t           j        j                             ||¦  «        S )NrŸ  útorch.fx.Nodec                óŠ  •— | j         dk    rd| j        vrt          | ‰‰¦  «        S | j         dk    rXd| j        vrO| j        ‰j        j        v sJ ‚‰j        j        | j                 }t          |t          j        j	        ¦  «        sJ ‚|S | j        d         }‰s*t          |t          j
        ¦  «        rt          |‰¦  «        S |S )Nr¤  r‹  Úget_attr)r�  r�  Úget_fake_valueÚtargetrÑ  Ú
nn_modulesrÍ  r
  r   ÚGraphModuler  rT  )rŸ  rô  r©   Úallow_non_graph_faker¦  s      €€rT   Úvisitz)get_fake_values_from_nodes.<locals>.visitW  sÏ   ø€ ØŒ4�?Ò"Ð" ¸a¼fÐ'DÐ'Dõ " ! RÐ)=Ñ>Ô>Ð>àŒT�ZÒÐ O¸1¼6Ð$AÐ$AØ”8˜rœyÔ3Ð3Ð3Ð3Ð3Ø”Ô% a¤hÔ/ˆBÝ˜b¥%¤(Ô"6Ñ7Ô7Ð7Ð7Ð7ØˆIàŒf�_Ô%ˆØ#ð 	.­
°3½¼Ñ(EÔ(Eð 	.Ý$ S¨"Ñ-Ô-Ð-Øˆ
rS   )rŸ  rV  )r
  r   r!  Úmap_arg)r¦  rœ  r]  r^  s   ` ` rT   Úget_fake_values_from_nodesr`  V  sC   øø€ ðð ð ð ð ð ð õ" Œ8Œ=× Ò  ¨Ñ.Ô.Ð.rS   c           	     ób  ‡ ‡‡‡‡— ddl m} ddlm}m}m}m}m} ‰ j        }	d‰ j	        v r't          ‰ j	        d         ¦  «        r‰ j	        d         S t          ‰‰ j        ‰ j        f|¦  «        \  ŠŠt          j        j        j        st          j        j        j        r,t          ‰t'          ‰ i ¦  «        |¦  «        }
d„ |
D ¦   «         }ng }
i }dŠ|	dk    rlt)          ‰¦  «        dk    rYt+          ‰d         t          j        j        ¦  «        r4t1          ‰d         ‰j        ¦  «        ft5          ‰dd…         ¦  «        z   Š|	d	k    ra‰j        j        ‰ j                 Št=          ‰¦  «        r&t?          ‰d
¦  «        r‰                      ‰‰¦  «         t1          ‰‰j        ¦  «        Š‰ j!        dv stE          d„ ‰D ¦   «         ¦  «        rt5          d„ ‰D ¦   «         ¦  «        Š	 ‰j        5  tG          ¦   «         5  tI          ˆˆˆˆ ˆfd„¦  «        }ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   �næ# |$ r ‚ tJ          $ �rÓ}|}|j&        �|j&        }t+          |t          j'        j(        j)        ¦  «        rp|j*        t          j+        j,        j-        j.        t          j+        j,        j/        j.        fv rdg}ndg} |dta          |j*        ¦  «        d|j*        › d�|¬¦  «         �nùt+          |t          j'        j(        j1        ¦  «        rpt          j        j        j2        s- |dta          |j*        ¦  «        d|j*        › d�dg¬¦  «         �n’ |dta          |j*        ¦  «        d|j*        › d�dg¬¦  «         �net+          |t          j'        j(        j3        ¦  «        r‹|j*        }	d}t+          |	t          j4        j5        ¦  «        rGt          j6         7                    |	j8        j!        |	j8        j9        ¦  «        }|�|\  }}d|› d|› d|› d�} |d d!|j*        › �d|› d"�g¬¦  «         n¶t+          |t          j:        j;        j<        j=        ¦  «        r  ||j>        ta          |¦  «        d#¬$¦  «        ‚t+          ||¦  «        r ||j>        |j        d         ¦  «        |‚t+          |t~          ¦  «        r+d%ta          |¦  «        v r |d&d'‰ j        › d(|› �dg ¬¦  «          |ta          |¦  «        ¦  «         @                    |jA        ¦  «        d‚d}~ww xY w|s9t…          jC        t          jD        t‹          jF        tŽ          ‰¬)¦  «        |¦  «        }t          j        j        j        st          j        j        j        r!‰j        jH         I                    ‰ |
|¦  «         |S )*az  
    Run the computation represented by `node` using fake tensors and return the result.

    allow_non_graph_fake: whether to allow the return result to be:
        1. non-fake or 2. fake that is not created by this instance of Dynamo.
        If `True`, you must be prepared to deal with such return values, ideally
        by further wrapping them as this graph's fakes.
    r   )ÚValueRangeErrorr1   )ÚTorchRuntimeErrorr8  ÚUnsupportedÚ	UserErrorÚUserErrorTyper‹  c                óV   — i | ]&}t          |¦  «        ¯t          |¦  «        |j        “Œ'S r>   )r@   r²  rì  r3  s     rT   r6  z"get_fake_value.<locals>.<dictcomp>�  s=   € ð !
ð !
ð !
Ø&)ÅÈÁÄð!
Ýˆs‰GŒG�S”\ð!
ð !
ð !
rS   NÚcall_methodÚcall_moduleÚ_initialize_hook)ÚinterpolateÚ
is_integerÚwrapped_gradientc              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S rg   )rÍ  Úcomplex)r†   Úas     rT   rˆ   z!get_fake_value.<locals>.<genexpr>¨  sE   è è € ð Mð MØ#$�
�1•gÑÔðMð Mð Mð Mð Mð MrS   c              3  ó„   K  — | ];}t          |t          j        ¦  «        r|j        j        �t          |¦  «        n|V — Œ<d S rg   )rÍ  r
  ÚSymFloatr!  Úhintr!  r3  s     rT   rˆ   z!get_fake_value.<locals>.<genexpr>¬  sc   è è € ð 
ð 
ð õ ˜#�uœ~Ñ.Ô.ðØ36´8´=Ð3Lõ �#‰JŒJˆJàð
ð 
ð 
ð 
ð 
ð 
rS   c                 ó4   •— t          ‰j        ‰‰ ‰‰¦  «        S rg   )Úrun_noderÑ  )rñ   rò   Únnmoduler!  r¦  s   €€€€€rT   r4  z get_fake_value.<locals>.<lambda>¶  s   ø€ � ¤¨D°$¸ÀÑIÔI€ rS   zkEnable tracing of data-dependent output operators with `torch._dynamo.config.capture_scalar_outputs = True`z’Consider wrapping the operator into a PyTorch-understood custom operator (see https://pytorch.org/tutorials/advanced/custom_ops_landing_page.html)zData dependent operatorz
Operator `zP` has a non-Tensor output whose value is dependent on the data of Tensor inputs.r˜  zDynamic shape operatorz.`'s output shape depends on input Tensor data.zmEnable tracing of dynamic shape operators with `torch._dynamo.config.capture_dynamic_output_shape_ops = True`z'Dynamic shape operator (no meta kernel)zA` does not have a meta kernel that supports dynamic output shapesz!Please report an issue to PyTorchrõ  z:It's possible that the support was implemented in module `z` and you may need to `import z`(z), otherwise z3Operator does not support running with fake tensorszunsupported operator: z}see https://docs.google.com/document/d/1GgvOe7C8_NVOMLOCwDaYV1mXXyHMXY7ExoewHqooxrs/edit#heading=h.64r4npvq0w0 for how to fixÚconstrain_as_size_example)Ú	case_nameÚargumentz&TypeError when making fake tensor callz
TypeError z: )r¦  )JÚtorch.utils._sympy.value_rangesrb  rˆ  rc  r8  rd  re  rf  r�  r�  r@   r`  rñ   rò   r
  rt  r<   Úuse_graph_deduplicationÚtrack_nodes_for_deduplicationr2   rX  rÍ  r  rh  rç  rŽ  rÎ  rÑ  r[  rZ  r&  r  Ú_infer_parametersr^   r×  r   râ  rÃ   Ú	__cause__r!  r›  ÚDataDependentOutputExceptionÚfuncÚopsÚatenr¨  rµ  Ú_local_scalar_denser~   ÚDynamicOutputShapeExceptionÚ capture_dynamic_output_shape_opsÚUnsupportedOperatorExceptionrú  rü  r§  Ú_dispatch_pystubÚ_schemaÚoverload_namer   r�  r‘  ÚGuardOnDataDependentSymNodeÚCONSTRAINT_VIOLATIONr¦  Úwith_tracebackÚ__traceback__ÚpytreeÚtree_map_onlyr  rò  ÚpartialrT  Úregion_trackerÚtrack_node_mutations)r!  r¦  r]  rb  rc  r8  rd  re  rf  r�  Úflat_args_kwargsÚid_to_initial_versionÚret_valrD  Úcauser>  Úimport_suggestionÚmaybe_pystubrØ  Úctxr„  rñ   rò   rv  s   ``                   @@@rT   rY  rY  k  sº  øøøøø€ ð @Ð?Ð?Ð?Ð?Ð?ðð ð ð ð ð ð ð ð ð ð ð ð ð ð 
Œ€Bð ˜$œ)Ð#Ð#­°´	¸/Ô0JÑ(KÔ(KÐ#ØŒy˜Ô)Ð)å-Ø
ˆTŒY˜œÐ$Ð&:ñô �L€Dˆ&õ
 	ŒÔÔ4ð#åŒ=ÔÔ=ð#õ 6Ø•˜t RÑ(Ô(Ð*>ñ
ô 
Ðð!
ð !
Ø-=ð!
ñ !
ô !
ÐÐð ÐØ "Ðà€HØ	ˆ]ÒÐ�s 4™yœy¨1š}˜}µ¸DÀ¼GÅUÄXÄ_Ñ1UÔ1U˜}å'¨¨Q¬°´Ñ>Ô>Ð@Å5ÈÈaÈbÈbÌÁ?Ä?ÑRˆà	ˆ]ÒÐØ”9Ô'¨¬Ô4ˆå˜(Ñ#Ô#ð 	7­°Ð:LÑ(MÔ(Mð 	7ð
 ×&Ò& x°Ñ6Ô6Ð6õ +¨8°R´\ÑBÔBˆà„yÐEÐEÐEÍð Mð MØ(,ðMñ Mô Mñ Jô JÐEõ ð 
ð 
ð ð	
ñ 
ô 
ñ 
ô 
ˆðhRØŒ\ð 	ð 	Õ3Ñ5Ô5ð 	ð 	Ý)ØIÐIÐIÐIÐIÐIÐIÐIñô ˆGð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ùøð ð ð ð ØÝð aRñ aRð aRØ ˆØŒ;Ð"Ø”KˆEåØ•5Ô$Ô0ÔMñ
ô 
ð Z	ð
 ŒzÝ”	”Ô#Ô+Ý”	”Ô2Ô:ðð ð ðKð��ð`ð�ð ÐØ1Ý˜EœJ™œðI¨¬ð Ið Ið Iàðñ ô ð ñ õ Ø•5Ô$Ô0ÔLñ
ô 
ð @	õ ”=Ô'ÔHð Ø Ð Ø4Ý ¤
™OœOØ g¨U¬ZÐ gÐ gÐ gðYðð	ñ ô ð ñ ð !Ð ØEÝ ¤
™OœOØ z¨U¬ZÐ zÐ zÐ zà;ðð	ñ ô ð ñ õ Ø•5Ô$Ô0ÔMñ
ô 
ð *	ð ”ˆBØ "ÐÝ˜"�eœjÔ3Ñ4Ô4ð 
Ý$œx×8Ò8Ø”J”O R¤ZÔ%=ñ ô  �ð  Ð+Ø".‘K�F˜Cð/Ø#)ð/ð /ØIOð/ð /àð/ð /ð /ð &ð
 ÐØMØ=°´Ð=Ð=Øà(ð &ð &ð &ðð		ñ 	ô 	ð 	ð 	õ Ø•5”8Ô(Ô8ÔTñ
ô 
ð 	ð �)ØÔ2Ý�E‘
”
Ø5ðñ ô ð õ
 ˜˜Ñ/Ô/ð 	Ø�)˜MÔ>ÀÄÀqÄ	ÑJÔJÐPQÐQÝ˜�yÑ)Ô)ð 	¨j½CÀ¹J¼JÐ.FÐ.FØÐØ@Ø; T¤[Ð;Ð;°EÐ;Ð;ØØð	ñ ô ð ð  Ð¥ A¡¤Ñ'Ô'×6Ò6°q´ÑGÔGÈTÐQøøøøðCaRøøøðF  ð 
ÝÔ ÝŒL�)Ô+Õ,=À"ÐEÑEÔEÀwñ
ô 
ˆõ
 	ŒÔÔ4ð
åŒ=ÔÔ=ð
ð 	Œ	Ô ×5Ò5ØØØ!ñ	
ô 	
ð 	
ð €Nsa   Ç$I Ç+H4Ç:HÈH4ÈH!	È!H4È$H!	È%H4È(I È4H8È8I È;H8È<I ÉT$ÉKTÔT$c                 ó.   — t          t          dd ¦  «        S )Nr«   )rÔ  Ú_current_noder>   rS   rT   Úget_current_noderœ  2  s   € Ý•= '¨4Ñ0Ô0Ð0rS   c              #  ó‚   K  — t          ¦   «         }| t          _        	 d V — |t          _        d S # |t          _        w xY wrg   )rœ  r›  r«   )r!  Úolds     rT   Úset_current_noderŸ  6  sI   è è € å
Ñ
Ô
€CØ…MÔð"Øˆˆˆà!�ÔÐÐø˜c�ÔÐ!Ð!Ð!Ð!s   ž0 °>c           	     óð  ‡‡‡‡
— ‰j         Š
t          ‰¦  «        5  ˆˆˆˆ
fd„}ddlm} 	 ‰
dk    r ‰j        ‰i ‰¤Žcddd¦  «         S ‰
dk    rnt          ‰d         ‰j        ¦  «        sddlm}  |d	d
 |d¦  «        g ¬¦  «          t          ‰d         ‰j        ¦  «        ‰dd…         i ‰¤Žcddd¦  «         S ‰
dk    r|€J ‚ |‰i ‰¤Žcddd¦  «         S ‰
dk    r+| j         	                    ‰j        ¦  «        cddd¦  «         S ‰
dk    r$d‰j
        v sJ ‚‰j
        d         cddd¦  «         S nš# t          t          f$ rC}ddlm} g }	t          |t          ¦  «        rdg}	 |dd
 ||¦  «        |	|¬¦  «         Y d}~nKd}~w|$ r ‚ t          $ r6}t           ||¦  «        ¦  «                             |j        ¦  «        |‚d}~ww xY wddd¦  «         n# 1 swxY w Y   t%          ‰
¦  «        ‚)aÄ  
    Runs a given node, with the given args and kwargs.

    Behavior is dictated by a node's op.

    run_node is useful for extracting real values out of nodes.
    See get_real_value for more info on common usage.

    Note: The tracer arg is only used for 'get_attr' ops
    Note: The nnmodule arg is only used for 'call_module' ops

    Nodes that are not call_function, call_method, call_module, or get_attr will
    raise an AssertionError.
    c           	     óL   •— d‰› d‰j         › d‰› d‰› d�	t          | ¦  «        z   S )Nz0Dynamo failed to run FX node with fake tensors: r¤   z(*z, **z): got )rZ  r'  )rD  rñ   rò   r!  r�  s    €€€€rT   Úmake_error_messagez$run_node.<locals>.make_error_messageS  s@   ø€ àpÀ2ÐpÐpÈÌÐpÐpÐW[ÐpÐpÐagÐpÐpÐpÝ�q‘'”'ñðrS   r1   )rd  r¤  Nrh  r   r7  z/Missing attribute when running call_method noderõ  zattribute not definedr˜  ri  rX  Úplaceholderr‹  z;If the op is a PyTorch op, please file an issue to PyTorch.zGNotImplementedError/UnsupportedFakeTensorException when running FX noder:  )r�  rŸ  rˆ  rd  rZ  r  r8  rÔ  Úoutput_graphÚget_submoduler�  r@  rÎ  rÍ  r“  rÃ   rŒ  r�  rÜ  )Útracerr!  rñ   rò   rv  r¢  rd  r8  rD  r>  r�  s    ```      @rT   ru  ru  @  sÉ  øøøø€ ð 
Œ€Bå	˜$Ñ	Ô	ð 7ð 7ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	%Ð$Ð$Ð$Ð$Ð$ð-	Ø�_Ò$Ð$Ø"�t”{ DÐ3¨FÐ3Ð3ð7ð 7ð 7ð 7ñ 7ô 7ð 7ð 7ð �}Ò$Ð$Ý˜t Aœw¨¬Ñ4Ô4ð Ø5Ð5Ð5Ð5Ð5Ð5à$Ð$Ø QØ "Ø$6Ð$6Ð7NÑ$OÔ$OØ ð	ñ ô ð ð 5•w˜t Aœw¨¬Ñ4Ô4°d¸1¸2¸2´hÐIÀ&ÐIÐIð/7ð 7ð 7ð 7ñ 7ô 7ð 7ð 7ð0 �}Ò$Ð$ØÐ+Ð+Ð+Ø�x Ð0¨Ð0Ð0ð57ð 7ð 7ð 7ñ 7ô 7ð 7ð 7ð6 �zÒ!Ð!ØÔ*×8Ò8¸¼ÑEÔEð97ð 7ð 7ð 7ñ 7ô 7ð 7ð 7ð: �}Ò$Ð$Ø&¨$¬)Ð3Ð3Ð3Ð3Ø”y Ô1ð?7ð 7ð 7ð 7ñ 7ô 7ð 7ð 7ð: %øõ $Õ%CÐDð 	ð 	ð 	à-Ð-Ð-Ð-Ð-Ð-àˆEÝ˜!Õ0Ñ1Ô1ð àQð�ð ÐØaØØ.Ð.¨qÑ1Ô1ØØðñ ô ð ð ð ð ð ð øøøøð ð 	ð 	ð 	ØÝð 	ð 	ð 	ÝÐ1Ð1°!Ñ4Ô4Ñ5Ô5×DÒDØ”ñô àðøøøøð	øøøði7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7õr ˜Ñ
Ô
Ðs_   ›G«D8Á
A'D8Â>D8Ã$D8ÄD8Ä7GÄ8GÅ	9FÆGÆGÆ1G
Ç
GÇGÇG"Ç%G"c                óJ  ‡— ddl m} ‰j        }| |v r||          S | j        }t          j        j                             | j        | j	        fˆfd„¦  «        \  }}|dk    rd| j
        v r| j
        d         j        S |dk    rD‰j        j        | j                 }t          |¦  «        st!          j        |¦  «        }n ||i |¤Ž nd}	 t%          ‰| |||¦  «        }||| <   nC# t&          $ r6}	 |t)          |	¦  «        ¦  «                             |	j        ¦  «        d‚d}	~	ww xY w|S )z‘
    Run the actual computation represented by `node` and return the result.
    This will execute any dependent nodes in the graph as well.
    r1   )rc  c                ó$   •— t          | ‰¦  «        S rg   )Úget_real_value)rŸ  r¦  s    €rT   r4  z get_real_value.<locals>.<lambda>›  s   ø€ •.  FÑ+Ô+€ rS   r£  Úgraphargri  N)rˆ  rc  Úreal_value_cacher�  r
  r   r!  r_  rñ   rò   r�  Úexampler¤  r[  rZ  r&  rv  rå  ru  rÃ   r~   rŒ  r�  )
r!  r¦  rc  Úcacher�  rñ   rò   Ú	nn_moduleÚ
real_valuerD  s
    `        rT   r©  r©  �  sl  ø€ ð
 'Ð&Ð&Ð&Ð&Ð&àÔ#€EØˆu€}€}Ø�TŒ{Ðà	Œ€BÝ”8”=×(Ò(Ø	Œ�D”KÐ Ø+Ð+Ð+Ð+ñô �L€Dˆ&ð
 
ˆ]ÒÐ˜z¨T¬YÐ6Ð6ØŒy˜Ô$Ô,Ð,à	ˆ]ÒÐØÔ'Ô2°4´;Ô?ˆ	Ý˜iÑ(Ô(ð 	'Ýœ iÑ0Ô0ˆIˆIð ˆI�tÐ&˜vÐ&Ð&Ð&Ð&àˆ	ðRÝ˜f d¨D°&¸)ÑDÔDˆ
Ø ˆˆd‰ˆøÝð Rð Rð RØÐ¥ A¡¤Ñ'Ô'×6Ò6°q´ÑGÔGÈTÐQøøøøðRøøøàÐs   ÃC  Ã 
D Ã*1DÄD c                ó  ‡— ddl mŠm} ˆfd„}|                      ¦   «         D ])\  }} ||¦  «        rJ d|› d ||¦  «        › �¦   «         ‚Œ*|                      ¦   «         D ])\  }} ||¦  «        rJ d|› d ||¦  «        › �¦   «         ‚Œ*d S )Nr   )ÚFakeTensorConfigr@   c                óN   •— ‰j         rdd l}d |j        | j        ¦  «        › �S dS )Nr   z"FAKE TENSOR CREATION TRACEBACK: 
 zNEnable TORCH_FAKE_TENSOR_DEBUG=1 to get creation stack traces on fake tensors.)ÚdebugÚ	tracebackÚformat_listÚ_debug_trace)rÐ  r´  r±  s     €rT   Ústack_or_hintz7assert_no_fake_params_or_buffers.<locals>.stack_or_hint·  s?   ø€ ØÔ!ð 	dØÐÐÐà`Ð9N¸Ô9NÈqÌ~Ñ9^Ô9^Ð`Ð`Ð`àcÐcrS   zUnexpected fake buffer r¤   zUnexpected fake param )Útorch._subclasses.fake_tensorr±  r@   Únamed_buffersÚnamed_parameters)rô  r@   r·  r^   Úbufferrí  r±  s         @rT   Ú assert_no_fake_params_or_buffersr¼  ´  s  ø€ ØGÐGÐGÐGÐGÐGÐGÐGðdð dð dð dð dð ×(Ò(Ñ*Ô*ð 
ð 
‰ˆˆfØ�7˜6‘?”?ð 	
ð 	
ØD dÐDÐD¨]¨]¸6Ñ-BÔ-BÐDÐDñ	
ô 	
ð 	
ð 	
ð ×*Ò*Ñ,Ô,ð 
ð 
‰ˆˆeØ�7˜5‘>”>ð 	
ð 	
ØB TÐBÐB¨M¨M¸%Ñ,@Ô,@ÐBÐBñ	
ô 	
ð 	
ð 	
ð
ð 
rS   c                ó$   — | j         › d| j        › �S )z9
    Returns the fully qualified name of the object.
    rÁ  )rN   rO   rÇ  s    rT   Úfqnr¾  É  s   € ð ŒnÐ1Ð1˜sÔ/Ð1Ð1Ð1rS   c                ó6   — t           j        j        j        r| S |S rg   )r
  rt  r<   Úassume_static_by_default)Úcount1Úcount2s     rT   ÚifdynstaticdefaultrÃ  Ð  s   € Ý„}ÔÔ4ð ØˆàˆrS   r%  útypes.ModuleTypec           
     óF  — t          t          j        t          j                             t          t          | j        ¦  «        ¦  «        ¦  «        ¦  «        D ]I}|                     d¦  «        r2|d         dk    r&t          j
        | j        › d|dd…         › �¦  «         ŒJdS )z@
    Ensure all the files in a given submodule are imported
    z.pyr   r„  rÁ  Néýÿÿÿ)r¯  r`  Úlistdirrr  r�  r   r~   Ú__file__r  Ú	importlibÚimport_modulerM   )r%  r‹  s     rT   Úimport_submodulerË  ×  sœ   € õ �2œ:¥b¤g§o¢oµd½3ÀÄÑ6MÔ6MÑ&NÔ&NÑOÔOÑPÔPð Gð GˆØ×Ò˜UÑ#Ô#ð 	G¨°¬°sÒ(:Ð(:ÝÔ# s¤|Ð$EÐ$E°h¸sÀ¸s´mÐ$EÐ$EÑFÔFÐFøðGð GrS   c                ó:   — t          t          | ¦  «        ¦  «        S rg   )Úclass_has_getattributer†  r×  s    rT   Úobject_has_getattributerÎ  à  s   € Ý!¥$ u¡+¤+Ñ.Ô.Ð.rS   c                óF   — t                                | d¦  «        }|||<   d S )Nr0  )rÉ   Ú__getattribute__)rÁ  r^   r«   rÁ  s       rT   Ú object_setattr_ignore_descriptorrÑ  ä  s$   € å×Ò  ZÑ0Ô0€AØ€A€d�G€G€GrS   r_   r†  c                óˆ   — 	 t          t          j        | d¦  «        t          j        ¦  «        rdS n# t
          $ r Y nw xY wdS )NrÐ  TF)rÍ  rõ  rö  r   r  ÚAttributeErrorri   s    rT   rÍ  rÍ  ê  sc   € ðÝÝÔ" 3Ð(:Ñ;Ô;ÝÔñ
ô 
ð 	ð �4ð		øõ
 ð ð ð Øˆðøøøàˆ5s   ‚-2 ²
?¾?Úignore_nn_module_getattrc                óª   — 	 t          j        t          | ¦  «        d¦  «        }n# t          $ r d }Y nw xY w|r|t          j        j        j        u rd }|S )NÚ__getattr__)rõ  rö  r†  rÓ  r
  r  rh  rÖ  )r«   rÔ  Ú
getattr_fns      rT   Úget_custom_getattrrØ  ö  si   € ðÝÔ+­D°©K¬K¸ÑGÔGˆ
ˆ
øÝð ð ð Øˆ
ˆ
ˆ
ðøøøàð  Jµ%´(´/Ô2MÐ$MÐ$Màˆ
ØÐs   ‚"% ¥4³4c                  ó   — e Zd ZdZdZdZdS )ÚTensorStaticReasonrK   r
  r¦   N)rM   rN   rO   Ú	PARAMETERÚ
NOT_TENSORÚNN_MODULE_PROPERTYr>   rS   rT   rÚ  rÚ    s    € € € € € Ø€IØ€JØÐÐÐrS   rÚ  rà  c                ó’   — | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS t	          d| › �¦  «        ‚)Nz>mark_dynamic on parameter, parameters are always static today.z2mark_dynamic on a non tensor, how did this happen?z4tensor is static because it is nn module associated.zIllegal reason )rÚ  rÛ  rÜ  rÝ  rÜ  )rà  s    rT   Útensor_static_reason_to_messagerß    sX   € ØÕ#Ô-Ò-Ð-ØOÐOØÕ#Ô.Ò.Ð.ØCÐCØÕ#Ô6Ò6Ð6ØEÐEÝ
Ð3¨6Ð3Ð3Ñ
4Ô
4Ð4rS   rÿ  úUnion[torch.Tensor, Any]Ú	is_tensorÚtensor_sourcer"   ú)tuple[bool, Optional[TensorStaticReason]]c                óˆ  — ddl m} |                     ¦   «                              ¦   «         s&|                     ¦   «                              ¦   «         rt
          j        rdt          j        fS t          | ¦  «        t          j        j        u s ||¦  «        rt
          j        rdt          j        fS |sdt          j        fS dS )a@  
    Given a tensor, source, and is_tensor flag, determine if a shape should be static.

    Args:
    tensor - the real tensor to evaluate, parameters force a static shape.
    is_tensor - internal dynamo check, essentially "is_tensor": target_cls is TensorVariable,
    tensors not in a TensorVariable for whatever reason are forced static.

    Returns a tuple, where the first element is the bool of whether or not this tensor should have a static shape.
    The second element is a TensorStaticReason, useful for passing to tensor_static_reason_to_message if needed.
    r1   )Ú)is_from_unspecialized_param_buffer_sourceTrR  )r(  rå  r*  r,  r.  r<   Ú&force_nn_module_property_static_shapesrÚ  rÝ  r†  r
  r  r  Úforce_parameter_static_shapesrÛ  rÜ  )rÿ  rá  râ  rå  s       rT   Útensor_always_has_static_shaperè    sÚ   € ð  BÐAÐAÐAÐAÐAð 	×"Ò"Ñ$Ô$×=Ò=Ñ?Ô?ð;à×%Ò%Ñ'Ô'×JÒJÑLÔLð;õ Ô
7ð;ð Õ'Ô:Ð:Ð:õ 	ˆV‰Œ�œÔ*Ð*Ð*Ø4Ð4°]ÑCÔCð 	+å
Ô
.ð 	+ð Õ'Ô1Ð1Ð1Øð 3ØÕ'Ô2Ð2Ð2Øˆ;rS   c                ó0   ‡ ‡— ˆ ˆfd„}t          |¦  «        S )Nc                 óþ   •— 	 ddl m }  n0# t          $ r# dt          t          ‰‰¦  «        ¦  «        z   cY S w xY wd„ ‰j        j        D ¦   «         } | |g d¢¬¦  «        }t          ‰‰j        j        j	        |¦  «        S )Nr   )r‰   zkTabulate module missing, please install tabulate to log the graph in tabular format, logging code instead:
c                óN   — g | ]"}|j         |j        |j        |j        |j        g‘Œ#S r>   )r�  r^   rZ  rñ   rò   )r†   rŸ  s     rT   r=  z<lazy_format_graph_tabular.<locals>.inner.<locals>.<listcomp>=  s:   € ð 
ð 
ð 
Ø;<ˆQŒT�1”6˜1œ8 Q¤V¨Q¬XÐ6ð
ð 
ð 
rS   )Úopcoder^   rZ  rñ   rò   r€   )
r‰   rŠ   r~   r+   Úgraphrœ  r*   ÚforwardÚ__code__rQ  )r‰   Ú
node_specsÚ	graph_strr  rô  s      €€rT   Úinnerz(lazy_format_graph_tabular.<locals>.inner4  sÇ   ø€ ð	Ø)Ð)Ð)Ð)Ð)Ð)Ð)øÝð 	ð 	ð 	à~ÝÕ,¨W°bÑ9Ô9Ñ:Ô:ñ;ðð ð ð	øøøð
ð 
Ø@BÄÄð
ñ 
ô 
ˆ
ð �HØÐ NÐ NÐ Nð
ñ 
ô 
ˆ	õ " '¨2¬:Ô+>Ô+JÈIÑVÔVÐVs   ƒ
 Š*7¶7r:   )r  rô  rò  s   `` rT   Úlazy_format_graph_tabularró  3  s8   øø€ ðWð Wð Wð Wð Wð Wõ" �eÑÔÐrS   c                ól   — | › d|› d|› d|› dt          j        |¦  «                              ¦   «         › d�
S )Nr¤   z line z 
r�   )ÚdisÚBytecode)rÙ  r^   r‹  Úline_nor‰  s        rT   Úformat_bytecoderø  H  sG   € ØÐVÐV�tÐVÐV˜hÐVÐV¨gÐVÐV½#¼,ÀtÑ:LÔ:L×:PÒ:PÑ:RÔ:RÐVÐVÐVÐVrS   Ú_forward_pre_hooksÚ_forward_hooksÚ_backward_pre_hooksÚ_backward_hooks)Ú_state_dict_pre_hooksÚ_state_dict_hooksÚ_load_state_dict_pre_hooksÚ_load_state_dict_post_hooksc                 ó¢   — t          t          j        j        j        j        ¦  «        p't          t          j        j        j        j        ¦  «        S rg   )rX  r
  r  ÚmodulesrØ  Ú_global_backward_hooksÚ_global_backward_pre_hooksr>   rS   rT   Únn_module_has_global_hooksr  W  s@   € õ �uŒxÔÔ&Ô=Ñ>Ô>ð Å#ÝŒÔÔÔ:ñCô Cð rS   c                ó@  — g }| o| o| }|s|r|                      t          ¦  «         |s|r|                      t          ¦  «         |r|                      t          ¦  «         g }|D ]5}t	          | |g ¦  «        }|D ]}	||	         }
|                     |
¦  «         Œ Œ6|S )zÂ
    Sometimes its useful to differentiate between types of hooks such as forward/backward/pre
    hooks executed during module.__call__, and state_dict hooks which are executed separately.
    )ÚextendÚforward_hook_namesÚbackward_hook_namesÚstate_dict_hook_namesrÔ  r  )r%  Úcheck_forward_hooksÚcheck_backward_hooksÚcheck_state_dict_hooksÚhook_dicts_to_checkÚcheck_all_hooksÚ	all_hooksÚhook_dict_nameÚhooksÚ	hook_namerg  s              rT   Únn_module_get_all_hooksr  _  sô   € ð ÐàÐð 	'Ø$Ð$ð	'à&Ð&ð ð
 ð 7˜oð 7Ø×"Ò"Õ#5Ñ6Ô6Ð6Øð 8˜ð 8Ø×"Ò"Õ#6Ñ7Ô7Ð7Øð :Ø×"Ò"Õ#8Ñ9Ô9Ð9à€IØ-ð #ð #ˆÝ˜˜^¨RÑ0Ô0ˆØð 	#ð 	#ˆIØ˜Ô#ˆDà×Ò˜TÑ"Ô"Ð"Ð"ð	#ð ÐrS   c                óF   — t          | |||¬¦  «        }t          |¦  «        S )zL
    Helper function to check if a module has any hooks attached to it.
    )r  r  r  )r  rÈ   )r%  r  r  r  r  s        rT   Únnmodule_has_hooksr  €  s2   € õ $ØØ/Ø1Ø5ð	ñ ô €Eõ �‰;Œ;ÐrS   c                ó`  — t          | ¦  «        r| S t          | t          j        ¦  «        rt	          | j        ¦  «        S t          | t          j        ¦  «        r|                      d¬¦  «        S t          | t          t          f¦  «        r" t          | ¦  «        d„ | D ¦   «         ¦  «        S | S )z0Convert tensor and tnp.ndarray to numpy.ndarray.T)Úforcec              3  ó4   K  — | ]}t          |¦  «        V — Œd S rg   )Úto_numpy_helper©r†   rÁ  s     rT   rˆ   z"to_numpy_helper.<locals>.<genexpr>›  ó*   è è € ÐAÐA°C�?¨3Ñ/Ô/ÐAÐAÐAÐAÐAÐArS   )r@   rÍ  Útnpr  r  rÿ  r
  r  ÚnumpyrÎ  rC  r†  r×  s    rT   r  r  ’  s¡   € åˆu�~„~ð ØˆÝ�%�œÑ%Ô%ð Ý˜uœ|Ñ,Ô,Ð,Ý	�E�5œ<Ñ	(Ô	(ð Ø�{Š{ ˆ{Ñ&Ô&Ð&Ý	�E�E¥4˜=Ñ	)Ô	)ð Ø�t�E‰{Œ{ÐAÐA¸5ÐAÑAÔAÑAÔAÐAàˆrS   c                ó2  — t           €J ‚t          | t           j        ¦  «        rt          j        | ¦  «        S t          | t
          j        ¦  «        r| j        S t          | t          t          f¦  «        r" t          | ¦  «        d„ | D ¦   «         ¦  «        S | S )zeConvert tnp.ndarray to tensor, leave other types intact. If a list/tuple, loop through it to convert.Nc              3  ó4   K  — | ]}t          |¦  «        V — Œd S rg   )Únumpy_to_tensorr  s     rT   rˆ   z"numpy_to_tensor.<locals>.<genexpr>¨  r  rS   )
rÛ  rÍ  r  r
  r/  r  rÿ  rÎ  rC  r†  r×  s    rT   r!  r!     s‹   € åˆ>ˆ>ˆ>Ý�%�œÑ$Ô$ð &ÝŒ˜uÑ%Ô%Ð%Ý�%�œÑ%Ô%ð ØŒ|ÐÝ	�E�E¥4˜=Ñ	)Ô	)ð Ø�t�E‰{Œ{ÐAÐA¸5ÐAÑAÔAÑAÔAÐAàˆrS   c                  ó"   — e Zd Zd„ Zdd„Zd„ ZdS )Únumpy_to_tensor_wrapperc                ó<   — || _         d| j         j        z   | _        d S ©NÚwrapped_©r–  rM   )rN  r–  s     rT   rO  z numpy_to_tensor_wrapper.__init__®  s   € ØˆŒØ" T¤V¤_Ñ4ˆŒˆˆrS   r}   r~   c                ó"   — d| j         j        › d�S )Nz<Wrapped function <original ú>>r'  rR  s    rT   Ú__repr__z numpy_to_tensor_wrapper.__repr__²  s   € ØA¨d¬f¬oÐAÐAÐAÐArS   c                ó:   —  | j         |i |¤Ž}t          |¦  «        S rg   )r–  r!  ©rN  rñ   rò   r©   s       rT   rb  z numpy_to_tensor_wrapper.__call__µ  s&   € ØˆdŒf�dÐ%˜fÐ%Ð%ˆÝ˜sÑ#Ô#Ð#rS   N©r}   r~   )rM   rN   rO   rO  r*  rb  r>   rS   rT   r#  r#  ­  sJ   € € € € € ð5ð 5ð 5ðBð Bð Bð Bð$ð $ð $ð $ð $rS   r#  c                ó  — t          | t          j        ¦  «        rt          | |¦  «        }t	          |¦  «        S t          | t
          j        ¦  «        r1t          t          j        | ¦  «        |¦  «        }t	          |¦  «        S d S rg   )rÍ  r  r  rÔ  r!  r
  r  )rÁ  r^   r©   s      rT   Únumpy_attr_wrapperr/  º  sx   € Ý�#•s”{Ñ#Ô#ð $Ý�c˜4Ñ Ô ˆÝ˜sÑ#Ô#Ð#Ý	�C�œÑ	&Ô	&ð $Ý•c”k #Ñ&Ô&¨Ñ-Ô-ˆÝ˜sÑ#Ô#Ð#ð$ð $rS   c                  ó(   — e Zd ZdZd	d„Zd
d„Zd„ ZdS )Únumpy_method_wrapperzgConvert obj from torch.Tensor to tnp.ndarray and call method. Then convert result back to torch.Tensor.rZ  r~   c                ó2   — || _         d| j         z   | _        d S r%  )rZ  rM   )rN  rZ  s     rT   rO  znumpy_method_wrapper.__init__Æ  s   € ØˆŒØ" T¤[Ñ0ˆŒˆˆrS   r}   c                ó   — d| j         › d�S )Nz<Wrapped method <original r)  )rZ  rR  s    rT   r*  znumpy_method_wrapper.__repr__Ê  s   € Ø;¨D¬KÐ;Ð;Ð;Ð;rS   c                óÖ   — |d         }t          |t          j        ¦  «        rt          j        |¦  «        }t          || j        ¦  «        } ||dd …         i |¤Ž}t          |¦  «        S r  )rÍ  r
  r  r  r  rÔ  rZ  r!  )rN  rñ   rò   rÁ  Úmethod_callabler©   s         rT   rb  znumpy_method_wrapper.__call__Í  si   € Ø�1ŒgˆÝ�c�5œ<Ñ(Ô(ð 	#Ý”+˜cÑ"Ô"ˆCÝ! # t¤{Ñ3Ô3ˆØˆo˜t A B BœxÐ2¨6Ð2Ð2ˆÝ˜sÑ#Ô#Ð#rS   N)rZ  r~   r-  ©rM   rN   rO   rµ   rO  r*  rb  r>   rS   rT   r1  r1  Ã  sQ   € € € € € ØqÐqð1ð 1ð 1ð 1ð<ð <ð <ð <ð$ð $ð $ð $ð $rS   r1  c                  ó(   — e Zd ZdZd
d„Zdd„Zd„ Zd	S )Únumpy_operator_wrapperzQImplements dunder methods for tnp.ndarray via functions from the operator libraryr�  úCallable[..., Any]c                ó2   — || _         d|j        › �| _        d S r%  )r�  rM   )rN  r�  s     rT   rO  znumpy_operator_wrapper.__init__Ù  s   € ØˆŒØ0 2¤;Ð0Ð0ˆŒˆˆrS   r}   r~   c                ó   — d| j         › d�S )Nz<Wrapped operator <original r)  )rM   rR  s    rT   r*  znumpy_operator_wrapper.__repr__Ý  s   € Ø?¨d¬mÐ?Ð?Ð?Ð?rS   c                óT   — |rJ ‚d„ |D ¦   «         } | j         |Ž }t          |¦  «        S )Nc              3  óv   K  — | ]4}t          |t          j        ¦  «        rt          j        |¦  «        n|V — Œ5d S rg   )rÍ  r
  r  r  r  r3  s     rT   rˆ   z2numpy_operator_wrapper.__call__.<locals>.<genexpr>ã  sS   è è € ð 
ð 
ØKN¥
¨3µ´Ñ =Ô =ÐF�CŒK˜ÑÔÐÀ3ð
ð 
ð 
ð 
ð 
ð 
rS   )r�  r!  r,  s       rT   rb  znumpy_operator_wrapper.__call__à  sI   € ØÐÐÐð
ð 
ØRVð
ñ 
ô 
ˆð ˆdŒg�tˆnˆÝ˜sÑ#Ô#Ð#rS   N)r�  r9  r-  r6  r>   rS   rT   r8  r8  Ö  sU   € € € € € Ø[Ð[ð1ð 1ð 1ð 1ð@ð @ð @ð @ð$ð $ð $ð $ð $rS   r8  c                ó"  — t          | t          ¦  «        s| S | j        �rg }|                      ¦   «         D ]n}t          |t          j        ¦  «        r=|                     |j        j         	                    |j        j
        ¦  «        ¦  «         ŒY|                     |¦  «         Œog }|                      ¦   «         D ]n}t          |t          j        ¦  «        r=|                     |j        j         	                    |j        j
        ¦  «        ¦  «         ŒY|                     |¦  «         Œon(|                      ¦   «         }|                      ¦   «         }t	          j        ||| j        | j        | j        ¬¦  «        }|                     ¦   «          |S )N)rq  r  rk  )rÍ  r?   Ú_has_symbolic_sizes_stridesrŒ  r
  r   r  r!  r�  Ú	size_hintÚexprr}  Úempty_stridedrq  r  rk  Úzero_)r3  rŒ  rO  r}  rn  s        rT   ÚdefakerD  ê  se  € Ý�a�Ñ$Ô$ð Øˆð 	Ô$ñ ØˆØ—’‘”ð 	ð 	ˆAÝ˜!�Uœ\Ñ*Ô*ð Ø—’˜AœFÔ,×6Ò6°q´v´{ÑCÔCÑDÔDÐDÐDà—’˜A‘”��ØˆØ—’‘”ð 	!ð 	!ˆAÝ˜!�Uœ\Ñ*Ô*ð !Ø—’˜aœfÔ.×8Ò8¸¼¼ÑEÔEÑFÔFÐFÐFà—’˜aÑ Ô Ð Ð ð		!ð �vŠv‰xŒxˆØ—’‘”ˆÝÔØØØŒgØŒxØ”oð	ñ 	ô 	€Að ‡G‚G�I„I€IØ€HrS   c                ó   —  | |i |¤ŽS rg   r>   )r  rñ   rò   s      rT   Ú8_disable_side_effect_safety_checks_for_current_subtracerrF  
  s   € Øˆ2ˆtÐ�vÐÐÐrS   c                ó0   — dd l }| |j        j        j        u S r“   )Útorch.utils.checkpointrþ  Ú
checkpoint)rÁ  r
  s     rT   Úis_utils_checkpointrJ    s!   € à!Ð!Ð!Ð!à�%”+Ô(Ô3Ð3Ð3rS   c                ó   — ddl m} | |u S )Nr   )Úinvoke_subgraph_placeholder)Ú'torch._higher_order_ops.invoke_subgraphrL  )rÁ  rL  s     rT   Úis_invoke_subgraphrN    s    € ØSÐSÐSÐSÐSÐSàÐ-Ð-Ð-rS   c                 óH   — ddl m}  |j        t          j        j        fi | ¤ŽS )Nr1   ©Ú TorchHigherOrderOperatorVariable)Úvariables.higher_order_opsrQ  Úmaker
  Ú_higher_order_opsÚinvoke_subgraph)ÚoptionsrQ  s     rT   Úbuild_invoke_subgraph_variablerW    sB   € ØLÐLÐLÐLÐLÐLà0Ð+Ô0ÝÔÔ/ðð à
ðð ð rS   c                 ó„   — dd l mc m} ddlm} |j        }t          j        j        j	        r|j
        } |j        |fi | ¤ŽS )Nr   r1   rP  )Útorch._higher_order_ops.wraprT  ÚwraprR  rQ  Útag_activation_checkpointr
  Ú
_functorchr<   Úfunctionalize_rng_opsÚwrap_activation_checkpointrS  )rV  Úhigher_order_opsrQ  Úactivation_checkpoint_ops       rT   Úbuild_checkpoint_variablera  $  s�   € Ø;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;àLÐLÐLÐLÐLÐLð
 	Ô2ð õ ÔÔÔ4ð OØ#3Ô#NÐ à0Ð+Ô0Ø ðð à
ðð ð rS   c                ó”   — ddl m} t          j        | ¦  «        j        } |¦   «         }|dk    rn|dv r|rt          ¦   «         }nd}|S )Nr1   )Úis_dynamo_supportedr*  )r  ÚxpuF)Ú
eval_framerc  r
  r  r†  r.   )Údevice_typerc  r†  Úcompile_supporteds       rT   Úis_compile_supportedrh  7  sk   € Ø/Ð/Ð/Ð/Ð/Ð/åŒ<˜Ñ$Ô$Ô)€DØ+Ð+Ñ-Ô-ÐØˆu‚}€}ØØ	�Ð	 Ð	 Ð%6Ð	 Ý&™LœLÐÐà!ÐØÐrS   Úoffsetc                ó„   — |                       d¦  «        }t          |d|…                              dd¬¦  «        ¦  «        S )zê
    Convert byte offset `offset` of `str` into character offset.
    Byte offset is used for 3.11+ instruction column data.
    Takes things like unicode characters into consideration.

    Unchanged from CPython implementation.
    zutf-8NrÅ  )Úerrors)ÚencoderX  Údecode)r~   ri  Úas_utf8s      rT   Ú_fix_offsetro  I  s?   € ð �jŠj˜Ñ!Ô!€GÝˆw�w˜�wÔ×&Ò& w°yÐ&ÑAÔAÑBÔBÐBrS   c                  ó8   — e Zd ZU ded<   ded<   ded<   ded<   dS )Ú_AnchorsrZ   Úleft_end_linenoÚleft_end_offsetÚright_start_linenoÚright_start_offsetNrâ  r>   rS   rT   rq  rq  U  sD   € € € € € € ð ÐÐÑØÐÐÑØÐÐÑàÐÐÑÐÐrS   rq  ÚsegmentúOptional[_Anchors]c                óú  ‡‡— t           j        dk    sJ ‚ddl}	 |                     d| z   dz   ¦  «        }n# t          $ r Y dS w xY wt          |j        ¦  «        dk    rdS |                      d¦  «        Šˆfd„}ˆfd	„Šˆˆfd
„}ˆˆfd„}|j        d         }t          ||j	        ¦  «        �rÌ|j
        }t          ||j        ¦  «        �rt          t          |j        j        ¦  «        dz
  } |||j        j        ¦  «        }	 ‰||	¦  «        \  }}	‰|         |	         x}
                     ¦   «         s|
dv rI|
dv r |||	¦  «        \  }}	n |||	¦  «        \  }}	‰|         |	         x}
                     ¦   «         °E|
dv °I|	dz   }|t          ‰|         ¦  «        k     r+‰|         |         x}
                     ¦   «         s	|
dvr|dz  }t%          ||	||¦  «        S t          ||j        ¦  «        rºt          t          |j
        j        ¦  «        dz
  } |||j
        j        ¦  «        } ‰||¦  «        \  }}‰|         |         dk    r! |||¦  «        \  }}‰|         |         dk    °!t          t          |j        ¦  «        dz
  } |||j        ¦  «        }t%          ||||¦  «        S t          ||j        ¦  «        rºt          t          |j        j        ¦  «        dz
  } |||j        j        ¦  «        } ‰||¦  «        \  }}‰|         |         dk    r! |||¦  «        \  }}‰|         |         dk    °!t          t          |j        ¦  «        dz
  } |||j        ¦  «        }t%          ||||¦  «        S dS )a  
    Given source code `segment` corresponding to a bytecode
    instruction, determine:
        - for binary ops, the location of the binary op
        - for indexing, the location of the brackets.
    `segment` is expected to be a valid Python expression
    )rL   é   r   Nz(
z
)r1   r�   c                ó0   •— t          ‰|          |¦  «        S rg   )ro  )Úlinenori  Úliness     €rT   Ú	normalizez-_extract_anchors_from_expr.<locals>.normalizey  s   ø€ Ý˜5 œ=¨&Ñ1Ô1Ð1rS   c                ó&  •— | t          ‰¦  «        k     rL|t          ‰|          ¦  «        k    r3d}| dz  } | t          ‰¦  «        k     r|t          ‰|          ¦  «        k    °3| t          ‰¦  «        k     r|t          ‰|          ¦  «        k     sJ ‚| |fS r  ©rX  )r{  Úcolr|  s     €rT   Únext_valid_charz3_extract_anchors_from_expr.<locals>.next_valid_char~  sš   ø€ Ø•s˜5‘z”zÒ!Ð! c­S°°v´Ñ-?Ô-?Ò&?Ð&?ØˆCØ�a‰KˆFð •s˜5‘z”zÒ!Ð! c­S°°v´Ñ-?Ô-?Ò&?Ð&?ð �˜E™
œ
Ò"Ð" s­S°°v´Ñ-?Ô-?Ò'?Ð'?Ð'?Ð'?Ø�sˆ{ÐrS   c                ó�   •— |dz  } ‰| |¦  «        \  } }| t          ‰¦  «        k     r|t          ‰|          ¦  «        k     sJ ‚| |fS r�   r  ©r{  r€  r|  r�  s     €€rT   rØ   z-_extract_anchors_from_expr.<locals>.increment†  sX   ø€ Øˆq‰ˆØ%�o f¨cÑ2Ô2‰ˆ�Ø�˜E™
œ
Ò"Ð" s­S°°v´Ñ-?Ô-?Ò'?Ð'?Ð'?Ð'?Ø�sˆ{ÐrS   c                ó”   •— d}| dz  }  ‰| |¦  «        \  } }| t          ‰¦  «        k     r|t          ‰|          ¦  «        k     sJ ‚| |fS r  r  rƒ  s     €€rT   Únextlinez,_extract_anchors_from_expr.<locals>.nextline�  s]   ø€ ØˆØ�!‰ˆØ%�o f¨cÑ2Ô2‰ˆ�Ø�˜E™
œ
Ò"Ð" s­S°°v´Ñ-?Ô-?Ò'?Ð'?Ð'?Ð'?Ø�sˆ{ÐrS   rK   z)\#z\#r»  r½  )rÒ  rÓ  ÚastÚparseÚSyntaxErrorrX  Úbodyr9  rÍ  ÚExprr«   ÚBinOpr   rZ   ÚleftÚ
end_linenoÚend_col_offsetÚisspacerq  Ú	SubscriptÚCallr€  )rv  r†  Útreer}  rØ   r…  Ú	statementrA  Ú
cur_linenoÚcur_colÚchÚ	right_colÚleft_linenoÚleft_colÚright_linenor|  r�  s                  @@rT   Ú_extract_anchors_from_exprr›  _  sH  øø€ õ Ô˜wÒ&Ð&Ð&Ð&à€J€J€Jðð �yŠy˜ ™¨5Ñ0Ñ1Ô1ˆˆøÝð ð ð Øˆtˆtðøøøõ ˆ4Œ9�~„~˜ÒÐØˆtà�MŠM˜$ÑÔ€Eð2ð 2ð 2ð 2ð 2ð
ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ð ”	˜!”€IÝ�)˜SœXÑ&Ô&ñ >LØŒˆÝ�d˜CœIÑ&Ô&ñ <	Lõ �c 4¤9Ô#7Ñ8Ô8¸1Ñ<ˆJØ�i 
¨D¬IÔ,DÑEÔEˆGØ"1 /°*¸gÑ"FÔ"FÑˆJ˜ð ˜zÔ*¨7Ô3Ð3�2×<Ò<Ñ>Ô>ð IÀ"ÈÀ,À,Ø˜�;�;Ø*2¨(°:¸wÑ*GÔ*GÑ'�J  à*3¨)°JÀÑ*HÔ*HÑ'�J ð	 ˜zÔ*¨7Ô3Ð3�2×<Ò<Ñ>Ô>ð IÀ"ÈÀ,À,ð   !™ˆIà�C  jÔ 1Ñ2Ô2Ò2Ð2Ø$ ZÔ0°Ô;Ð;˜×DÒDÑFÔFð 3à˜e�O�Oà˜Q‘�	õ ˜J¨°¸YÑGÔGÐGÝ˜˜cœmÑ,Ô,ð 	Lõ �s D¤JÔ$9Ñ:Ô:¸QÑ>ˆKØ �y ¨d¬jÔ.GÑHÔHˆHØ$3 O°KÀÑ$JÔ$JÑ!ˆK˜Ø˜Ô$ XÔ.°#Ò5Ð5Ø(1¨	°+¸xÑ(HÔ(HÑ%�˜Xð ˜Ô$ XÔ.°#Ò5Ð5õ  ¥ T¤_Ñ5Ô5¸Ñ9ˆLØ!˜	 ,°Ô0CÑDÔDˆIÝ˜K¨°<ÀÑKÔKÐKÝ˜˜cœhÑ'Ô'ð 	Lõ
 �s D¤IÔ$8Ñ9Ô9¸AÑ=ˆKØ �y ¨d¬iÔ.FÑGÔGˆHØ$3 O°KÀÑ$JÔ$JÑ!ˆK˜Ø˜Ô$ XÔ.°#Ò5Ð5Ø(1¨	°+¸xÑ(HÔ(HÑ%�˜Xð ˜Ô$ XÔ.°#Ò5Ð5õ  ¥ T¤_Ñ5Ô5¸Ñ9ˆLØ!˜	 ,°Ô0CÑDÔDˆIÝ˜K¨°<ÀÑKÔKÐKàˆ4s   š6 ¶
AÁAr‰  útypes.CodeTypeÚinstúdis.Instructionc                óZ  ‡ — t           j        dk    �rft          j        ‰ j        |j        j        ‰ j        |j        j        |j        j	        |j        j
        ¬¦  «        }t          j        |g¦  «        d         }d                     |                     ¦   «         dd…         ¦  «        }ˆ fd„t          |j        j        |j        j        dz   ¦  «        D ¦   «         }t          j        d                     |¦  «        ¦  «                             ¦   «         }t#          |d         ¦  «        t#          |d         ¦  «        z
  }|d         d|…         }t          j        t          j        |¦  «        |¦  «        }|S |j        €J ‚|j        j        €dS t'          j        ‰ j        |j        j        ¦  «                             ¦   «         }|j        j        €|S |j        j	        �|j        j
        €|S t-          ||j        j	        ¦  «        }	d}
d}g }|j        j        |j        j        k    rGt-          ||j        j
        ¦  «        }
||	|
…         }|                     d	|	z  d
|
|	z
  z  z   ¦  «         �n§||	d…         dz   }|                     d	|	z  d
t#          |¦  «        |	z
  z  z   ¦  «         t'          j        ‰ j        |j        j        ¦  «                             ¦   «         }t-          ||j        j
        ¦  «        }
t          |j        j        dz   |j        j        ¦  «        D ]•}t'          j        ‰ j        |¦  «                             ¦   «         }||dz   z  }t#          |¦  «        t#          |                     ¦   «         ¦  «        z
  }|                     d	|z  d
t#          |¦  «        |z
  z  z   ¦  «         Œ–||d|
…         z  }t#          |¦  «        t#          |                     ¦   «         ¦  «        z
  }|                     d	|z  d
|
|z
  z  z   ¦  «         d}	 t3          |¦  «        }n# t4          $ r Y nw xY w|€d„ |D ¦   «         }nõd„ |D ¦   «         }|j        dk    r|xj        |	z  c_        |j        dk    r|xj        |	z  c_        t          t#          |¦  «        ¦  «        D ]Š}t          t#          ||         ¦  «        ¦  «        D ]e}||j        k     rŒ||j        k    r||j        k     rŒ%||j        k    r||j        k    rŒ<||j        k    rŒH||         |         d
k    rd||         |<   ŒfŒ‹d„ |D ¦   «         }d}t          t#          |¦  «        ¦  «        D ]O}|t'          j        ‰ j        |j        j        |z   ¦  «                             ¦   «         dz   z  }|||         dz   z  }ŒP|S )aÈ  
    Python 3.11+ only. Returns lines of source code (from code object `code`)
    corresponding to `inst`'s location data, and underlines relevant code to `inst`.

    Example: CALL on `g`:
    f(g(
      ^^
        h(x)))
        ^^^^^

    We need our own implementation in < 3.13 since `format_frame_summary` in
    Python's `traceback` module doesn't handle multi-line expressions
    (and their anchor extraction code is not completely correct).
    )rL   é   )r�  ÚcolnoÚ	end_colnor   r�   r1   Nc                óh   •— g | ].}t          j        ‰j        |¦  «                             ¦   «         ‘Œ/S r>   )Ú	linecacheÚgetlinerQ  Úrstrip)r†   r{  r‰  s     €rT   r=  z.get_instruction_source_311.<locals>.<listcomp>õ  sE   ø€ ð 
ð 
ð 
àõ Ô˜dÔ.°Ñ7Ô7×>Ò>Ñ@Ô@ð
ð 
ð 
rS   rõ  r¤   ú~c                ó:   — g | ]}|                      d d¦  «        ‘ŒS )r§  ú^)rÅ  ©r†   Úmarkers     rT   r=  z.get_instruction_source_311.<locals>.<listcomp>3  s&   € ÐBÐBÐB°�6—>’> # sÑ+Ô+ÐBÐBÐBrS   c                ó,   — g | ]}t          |¦  «        ‘ŒS r>   ©rC  rª  s     rT   r=  z.get_instruction_source_311.<locals>.<listcomp>6  s   € Ð+OÐ+OÐ+O¸V­D°©L¬LÐ+OÐ+OÐ+OrS   r©  c                ó8   — g | ]}d                       |¦  «        ‘ŒS )rõ  rÉ  rª  s     rT   r=  z.get_instruction_source_311.<locals>.<listcomp>P  s"   € ÐAÐAÐA v�2—7’7˜6‘?”?ÐAÐAÐArS   )rÒ  rÓ  r´  ÚFrameSummaryrQ  Ú	positionsr{  r…  r�  Ú
col_offsetrŽ  rµ  r„   Ú
splitlinesrœ  ÚtextwrapÚdedentrX  Úindentr¤  r¥  r¦  ro  r  Úlstripr›  rÜ  rr  rs  rt  ru  )r‰  r�  Úframe_summaryr—  Ú
orig_linesÚorig_lines_dedentÚ
indent_lenrµ  Ú
first_lineÚstart_offsetÚ
end_offsetrv  ÚmarkersÚ	last_liner{  ÚlineÚ
num_spacesÚanchorsÚmutable_markersr€  rM  s   `                    rT   Úget_instruction_source_311rÄ  Ø  sã  ø€ õ Ô˜7Ò"Ñ"å!Ô.ØÔØŒNÔ!ØŒLØ”~Ô0Ø”.Ô+Ø”nÔ3ð
ñ 
ô 
ˆõ Ô&¨ Ñ7Ô7¸Ô:ˆà—’˜6×,Ò,Ñ.Ô.¨q¨r¨rÔ2Ñ3Ô3ˆð
ð 
ð 
ð 
å ¤Ô 5°t´~Ô7PÐSTÑ7TÑUÔUð
ñ 
ô 
ˆ
õ %œO¨D¯IªI°jÑ,AÔ,AÑBÔB×MÒMÑOÔOÐÝ˜ AœÑ'Ô'­#Ð.?ÀÔ.BÑ*CÔ*CÑCˆ
Ø˜A”˜{ 
˜{Ô+ˆÝ”¥¤°Ñ!8Ô!8¸&ÑAÔAˆØˆàŒ>Ð%Ð%Ð%Ø„~ÔÐ$Øˆrõ Ô" 4Ô#3°T´^Ô5JÑKÔK×RÒRÑTÔT€JØ„~Ô Ð(ØÐØ„~Ô Ð(¨D¬NÔ,IÐ,QØÐõ ˜z¨4¬>Ô+DÑEÔE€Lð €Jà€Gà€Gð „~Ô  D¤NÔ$9Ò9Ð9Ý  ¨T¬^Ô-JÑKÔKˆ
Ø˜\¨*Ð4Ô5ˆØ�Š�s˜\Ñ)¨C°:ÀÑ3LÑ,MÑMÑNÔNÐNÑNà˜\˜]˜]Ô+¨dÑ2ˆØ�Š�s˜\Ñ)¨Cµ3°z±?´?À\Ñ3QÑ,RÑRÑSÔSÐSÝÔ%ØÔ˜dœnÔ7ñ
ô 
ç
Š&‰(Œ(ð 	õ ! ¨D¬NÔ,IÑJÔJˆ
Ý˜DœNÔ1°AÑ5°t´~Ô7PÑQÔQð 	Nð 	NˆFÝÔ$ TÔ%5°vÑ>Ô>×EÒEÑGÔGˆDØ�t˜d‘{Ñ"ˆGå˜T™œ¥S¨¯ª©¬Ñ%7Ô%7Ñ7ˆJØ�NŠN˜3 Ñ+¨cµS¸±Y´YÀÑ5KÑ.LÑLÑMÔMÐMÐMØ�9˜[˜j˜[Ô)Ñ)ˆÝ˜‘^”^¥c¨)×*:Ò*:Ñ*<Ô*<Ñ&=Ô&=Ñ=ˆ
Ø�Š�s˜ZÑ'¨#°¸jÑ1HÑ*IÑIÑJÔJÐJà"&€GðÝ,¨WÑ5Ô5ˆˆøÝð ð ð Øˆðøøøð €ØBÐB¸'ÐBÑBÔBˆˆð ,PÐ+OÀwÐ+OÑ+OÔ+Oˆð Ô" aÒ'Ð'ØÐ#Ô# |Ñ3Ð#Ô#ØÔ%¨Ò*Ð*ØÐ&Ô&¨,Ñ6Ð&Ô&õ �C ™LœLÑ)Ô)ð 	7ð 	7ˆFÝ�S °Ô!8Ñ9Ô9Ñ:Ô:ð 7ð 7�Ø˜GÔ3Ò3Ð3ØØ˜WÔ4Ò4Ð4¸¸wÔ?VÒ9VÐ9VØà˜gÔ8Ò8Ð8Ø˜wÔ9Ò9Ð9àØ˜GÔ6Ò6Ð6ØØ" 6Ô*¨3Ô/°3Ò6Ð6Ø36�O FÔ+¨CÑ0øð7ð  BÐA°ÐAÑAÔAˆà€FÝ•3�w‘<”<Ñ Ô ð $ð $ˆØÝÔ˜dÔ.°´Ô0EÈÑ0IÑJÔJ×QÒQÑSÔSØññ	
ˆð 	�'˜!”*˜tÑ#Ñ#ˆˆØ€Ms   ÐP) Ð)
P6Ð5P6c                ó\   — t          | t          j        ¦  «        rt          | dd ¦  «        S d S )NÚ_dynamo_static_input_type)rÍ  r
  r  rÔ  r   s    rT   Úget_static_address_typerÇ  \  s.   € Ý�!•U”\Ñ"Ô"ð =Ý�qÐ5°tÑ<Ô<Ð<àˆ4rS   c                ó  — t           j        j        j        t           j        j        t           j        t           j        j        f}t           j        j        j        t           j        j        t           j        t           j        j        f}| g |¢|¢R v S rg   )	r
  r§  r3   Ú	get_stateÚdefault_generatorr¬  r  Ú	set_stater®  )r«   ÚgettersÚsetterss      rT   Úis_rng_state_getter_or_setterrÎ  c  ss   € õ 	ŒÔÔ$ÝÔÔ)ÝÔÝŒ
Ô ð€Gõ 	ŒÔÔ$ÝÔÔ)ÝÔÝŒ
Ô ð	€Gð Ð(�gÐ( Ð(Ð(Ð(Ð(rS   c                ó†   — t          | t          j        ¦  «        o'| j        dk    o| j        j        t          j        j        u S )NÚ__get__)	rÍ  r   r   rM   Ú__self__Ú__objclass__r
  r§  Ú_TensorBaser×  s    rT   Úis_tensor_base_attr_getterrÔ  t  s?   € å�5�%Ô1Ñ2Ô2ð 	@ØŒN˜iÒ'ð	@àŒNÔ'­5¬8Ô+?Ð?ðrS   c                óš   — 	 t          j        t          j        | ¦  «        }t	          |¦  «        t
          j        u S # t          $ r Y dS w xY wrÚ  )rõ  rö  r
  r  r†  r   r  rÓ  )r^   Úattrs     rT   Úis_tensor_getset_descriptorr×  |  sQ   € ðÝÔ%¥e¤l°DÑ9Ô9ˆÝ�D‰zŒz�UÔ7Ð7Ð7øÝð ð ð Øˆuˆuðøøøs   ‚9< ¼
A
Á	A
c                ó"   — t          | d¦  «        S )NÚ__torch_function__)r  r×  s    rT   Úis_torch_function_objectrÚ  „  s   € Ý�5Ð.Ñ/Ô/Ð/rS   rš  ú,torch._dynamo.variables.base.VariableTrackerc                ór  — ddl m} ddlm} |                      ¦   «         s2t          | d¦  «        r†t          |                      ¦   «         d¦  «        rdd }t          | |¦  «        rt          | j	        dd ¦  «        }n&t          | |¦  «        rt          | j
        dd ¦  «        }|d t          j        j        fvS dS )Nr   )ÚUserDefinedObjectVariable)ÚTensorWithTFOverrideVariableÚ
peek_valuerÙ  F)Útorch._dynamo.variablesrÝ  Ú&torch._dynamo.variables.torch_functionrÞ  r6  r  rß  rÍ  rÔ  Ú
class_typer«   r
  r§  Ú_disabled_torch_function_impl)rš  rÝ  rÞ  r€  s       rT   Úhas_torch_functionrä  ˆ  sà   € ð BÐAÐAÐAÐAÐAØSÐSÐSÐSÐSÐSð 
‡~‚~ÑÔð 
JÝ��LÑ!Ô!ð
JÝ&-¨b¯mªm©o¬oÐ?SÑ&TÔ&Tð
Jð ˆÝ�bÐ6Ñ7Ô7ð 	AÝ˜2œ=Ð*>ÀÑEÔEˆDˆDå˜Ð5Ñ6Ô6ð 	AÝ˜2œ8Ð%9¸4Ñ@Ô@ˆDà˜D¥%¤(Ô"HÐIÐIÐIàˆ5rS   c                óÀ   — d }d }t           j        j                             ¦   «         x}r| |j        v r|j        |          }|j        }|                     | d||¬¦  «        S )NF)Ústatic_shapesÚsymbolic_contextr(  )r
  r  r#   Útry_getÚtensor_to_contextrâ  Úfrom_tensor)rÐ  rŽ  rç  r(  Útracing_contexts        rT   Úto_fake_tensorrì  ¦  sv   € ØÐØ€FÝœ-Ô6×>Ò>Ñ@Ô@Ð@€ð 4Ø�Ô1Ð1Ð1Ø.Ô@ÀÔCÐØ%Ô3ˆFà× Ò Ø	˜Ð1AÈ&ð !ñ ô ð rS   c                óÂ   — t          | ¦  «         oOt          | ¦  «         o?t          | ¦  «        o0t          | d¦  «        o t          | j        d¦  «        o| j        j        S )NÚ__dataclass_params__Úfrozen)rÎ  rÍ  r   r  rî  rï  r×  s    rT   Úis_frozen_dataclassrð  ´  st   € å# EÑ*Ô*Ð*ð 	.Ý& uÑ-Ô-Ð-ð	.å˜ÑÔð	.õ �EÐ1Ñ2Ô2ð	.õ �EÔ.°Ñ9Ô9ð		.ð
 Ô&Ô-ðrS   c                óx   — |D ]$}t          | |¦  «        rt          | |¦  «        c S Œ%t          | › d|› �¦  «        ‚)zX
    Return the first available attribute or throw an exception if none is present.
    z% does not has any of the attributes: )r  rÔ  rÜ  )rÁ  ÚattrsrÖ  s      rT   Úget_first_attrró  ¿  s^   € ð ð &ð &ˆÝ�3˜ÑÔð 	&Ý˜3 Ñ%Ô%Ð%Ð%Ð%ð	&õ ˜CÐMÐMÀeÐMÐMÑ
NÔ
NÐNrS   c              #  ó¬   ‡‡K  — | sd V — d S ˆˆfd„}t           j        j                             |¦  «        5 }|V — d d d ¦  «         d S # 1 swxY w Y   d S )Nc                ó:   •— d„ }t          j        | |‰‰¬¦  «        S )Nc                ó–   — t           j        j        j        d         dxx         dz  cc<   t           j                             | |¦  «        S )NÚcompiled_autogradÚcompilesr1   )r
  rt  rþ  rC   rç  Úcompile)Úgm_Úexample_inputs_s     rT   Úinner_compilerzKmaybe_enable_compiled_autograd.<locals>.compiler_fn.<locals>.inner_compilerÑ  sE   € Ý”Ô#Ô,Ð-@ÔAÀ*ÐMÐMÔMÐQRÑRÐMÐMÑMÝ”×.Ò.¨s°OÑDÔDÐDrS   )ÚbackendÚ	fullgraphÚdynamic)r
  rù  )rô  rü  rÿ  rþ  s     €€rT   Úcompiler_fnz3maybe_enable_compiled_autograd.<locals>.compiler_fnÐ  s9   ø€ ðEð Eð Eõ ”=Ø˜N°iÈðñ ô ð rS   )r
  rt  r÷  Ú_enable)Úshould_enablerþ  rÿ  r   r™  s    ``  rT   Úmaybe_enable_compiled_autogradr  Ê  sÀ   øøè è € àð Øˆˆˆˆˆð	ð 	ð 	ð 	ð 	ð 	õ Œ]Ô,×4Ò4°[ÑAÔAð 	ÀSØˆIˆIˆIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ·A	Á	AÁAc                 óV   —  G d„ dt           ¦  «        } t           | ¦   «         ¦  «        S )Nc                  ó   — e Zd ZdS )ú*invalid_removeable_handle.<locals>.InvalidN)rM   rN   rO   r>   rS   rT   ÚInvalidr  ß  s   € € € € € ØˆrS   r  )rš  r0   )r  s    rT   Úinvalid_removeable_handler  Ý  sB   € ðð ð ð ð •$ñ ô ð õ ˜7˜7™9œ9Ñ%Ô%Ð%rS   c                óà   — t          | t          j        j        ¦  «        s| S t          | t          j        j        ¦  «        r| S | j                             | j        ¦  «        }| j        |_        |S rg   )	rÍ  r
  r  rh  r   r\  rá  rÒ  r0  )r%  Úproxys     rT   Únn_module_proxyr  é  s^   € Ý�c�5œ8œ?Ñ+Ô+ð Øˆ
Ý�#•u”xÔ+Ñ,Ô,ð àˆ
ØŒM×!Ò! #¤-Ñ0Ô0€EØ”\€E„NØ€LrS   c                  ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú	GmWrapperc                ód   •— t          ¦   «                              ¦   «          || _        || _        d S rg   )rß  rO  rô  Úunflatten_fn)rN  rô  r  rá  s      €rT   rO  zGmWrapper.__init__õ  s.   ø€ Ý‰Œ×ÒÑÔÐØˆŒØ(ˆÔÐÐrS   c                óZ   — t          |¦  «        } | j        |                      |¦  «        Ž S rg   )rC  rô  r  ra  s     rT   rî  zGmWrapper.forwardú  s*   € Ý˜t™*œ*ˆØˆtŒw˜×)Ò)¨$Ñ/Ô/Ð0Ð0rS   )rM   rN   rO   rO  rî  râ  rã  s   @rT   r  r  ô  sG   ø€ € € € € ð)ð )ð )ð )ð )ð
1ð 1ð 1ð 1ð 1ð 1ð 1rS   r  rô  útorch.fx.GraphModulec                ó  ‡‡‡	‡
— d„ t          | j        j        ¦  «        D ¦   «         Š
t          j        j        j        rg‰
dgk    sJ ‚t          |d         t          ¦  «        sJ ‚t          |d         ¦  «        Šd„ Š	ˆfd„} |t          | |¦  «         ‰	|¦  «        ¦  «        Šn]t          j        |¦  «        \  }}t          j        t          j        |¬¦  «        } |t          | |¦  «        |¦  «        Št          j        Š	ˆˆ	ˆ
fd„}|S )z—
    Mutate inputs so that they are flat and wrap gm such that it
    accepts those inputs.  This is needed for graphs that take
    bumpy inputs.
    c                ód   — g | ]-\  }}|j         d k    ¯|j                             dd¦  «        ¯+|‘Œ.S )r£  Ú	steal_argF)r�  r�  rk   )r†   rM  r!  s      rT   r=  z(flatten_graph_inputs.<locals>.<listcomp>  sH   € ð ð ð áˆAˆtØŒ7�mÒ#Ð#¨¬	¯ª°kÀ5Ñ(IÔ(IÐ#ð 	
à#Ð#Ð#rS   r   c                óB   — | d         t          | dd …         ¦  «        z   S r  r­  r(  s    rT   Ú
flatten_fnz(flatten_graph_inputs.<locals>.flatten_fn  s   € Ø˜”7�T $ q r r¤(™^œ^Ñ+Ð+rS   c                ó0   •— | d ‰…         g| ‰d …         ¢R S rg   r>   )Ú	flat_argsÚboxed_inputs_counts    €rT   r  z*flatten_graph_inputs.<locals>.unflatten_fn  s,   ø€ ØÐ1Ð1Ð1Ô2ÐT°YÐ?QÐ?RÐ?RÔ5SÐTÐTÐTrS   )Útreespecc                 ón   •—  ‰| ¦  «        }‰D ]}| |                               ¦   «          Œ ‰|¦  «        S rg   )rh   )rñ   r  rM  Úcompiled_fnr  Úinputs_idx_to_clears      €€€rT   Úwrapperz%flatten_graph_inputs.<locals>.wrapper!  sH   ø€ Ø�J˜tÑ$Ô$ˆ	ð %ð 	ð 	ˆAØ�ŒG�MŠM‰OŒOˆOˆOð ˆ{˜9Ñ%Ô%Ð%rS   )Ú	enumeraterí  rœ  r
  rt  r÷  Úin_compiled_autograd_regionrÍ  rC  rX  r  rŽ  Útree_flattenrò  r�  Útree_unflattenÚarg_tree_leaves)rô  ÚinputsÚ
compile_gmr  Úflat_inputsÚspecr  r  r  r  r  s          @@@@rT   Úflatten_graph_inputsr(  ÿ  sT  øøøø€ ðð å  ¤¤Ñ0Ô0ðñ ô Ðõ „}Ô&ÔBð ,ð # q cÒ)Ð)Ð)Ð)Ý˜& œ)¥TÑ*Ô*Ð*Ð*Ð*Ý  ¨¤™^œ^Ðð	,ð 	,ð 	,ð	Uð 	Uð 	Uð 	Uð 	Uð !�j¥¨2¨|Ñ!<Ô!<¸j¸jÈÑ>PÔ>PÑQÔQˆˆõ #Ô/°Ñ7Ô7Ñˆ�TÝ Ô(­Ô)>ÈÐNÑNÔNˆØ �j¥¨2¨|Ñ!<Ô!<¸kÑJÔJˆåÔ+ˆ
ð&ð &ð &ð &ð &ð &ð &ð €NrS   c                óš   — t          | t          j        j        ¦  «        rt	          | d¦  «        sg S | j                             dg ¦  «        S )Nr�  Úlocals_to_steal)rÍ  r
  r   r\  r  r�  rk   )Úmaybe_gms    rT   Úget_locals_to_stealr,  .  sH   € Ý�h¥¤Ô 4Ñ5Ô5ð ½WÀXÈvÑ=VÔ=Vð Øˆ	ØŒ=×ÒÐ.°Ñ3Ô3Ð3rS   c                ó   — || j         d<   d S )Nr*  ©r�  )rô  r*  s     rT   Úset_locals_to_stealr/  4  s   € Ø!0€B„GÐÑÐÐrS   c                  ó   — e Zd Zd„ Zdd„ZdS )ÚLitc                ó   — || _         d S rg   ©rO  )rN  rO  s     rT   rO  zLit.__init__9  s   € ØˆŒˆˆrS   r}   r~   c                ó   — | j         S rg   r3  rR  s    rT   r*  zLit.__repr__<  s	   € ØŒvˆrS   Nr-  )rM   rN   rO   rO  r*  r>   rS   rT   r1  r1  8  s7   € € € € € ðð ð ðð ð ð ð ð rS   r1  zset[str]Úwarn_once_cachec                ó‚   — | t           v rd S t                                | ¦  «         t          j        | |dz   ¬¦  «         d S )Nr1   )Ú
stacklevel)r5  r[  ÚwarningsÚwarn)rá  r7  s     rT   Ú	warn_oncer:  C  sG   € ð �oÐÐØˆÝ×Ò˜ÑÔÐÝ„M�# *¨q¡.Ð1Ñ1Ô1Ð1Ð1Ð1rS   c                óV   — t          j        d¦  «        }|                     d| ¦  «        S )Nz\x1B[@-_][0-?]*[ -/]*[@-~]rõ  )r¢  rù  r£  )ÚtextÚansi_escapes     rT   Ústrip_color_from_stringr>  O  s&   € å”*Ð:Ñ;Ô;€KØ�?Š?˜2˜tÑ$Ô$Ð$rS   c               #  óö   K  — 	 t           j        j                             d¦  «        } d V — t           j        j                             | ¦  «         d S # t           j        j                             | ¦  «         w xY w)NT)r
  r§  Ú	_autogradÚ _saved_tensors_hooks_set_tracing)r?  s    rT   Ú+_disable_saved_tensors_hooks_during_tracingrB  U  sk   è è € ðCÝ”Ô"×CÒCÀDÑIÔIˆØˆˆˆåŒÔ×;Ò;¸EÑBÔBÐBÐBÐBø�ŒÔ×;Ò;¸EÑBÔBÐBÐBøøøs   „(A Á&A8c                 óV   — t           j        j        j        ot          j        ¦   «          S rg   )r
  rç  r<   ÚfreezingÚis_grad_enabledr>   rS   rT   Úis_parameter_freezingrF  _  s!   € ÝŒ?Ô!Ô*ÐJµ5Ô3HÑ3JÔ3JÐ/JÐJrS   c                 óL   — d„ t          t          ¦   «         ¦  «        D ¦   «         S )Nc                ó,   — g | ]}t          |¦  «        ‘ŒS r>   )Ú get_torch_function_mode_stack_atr  s     rT   r=  z1get_torch_function_mode_stack.<locals>.<listcomp>d  s.   € ð ð ð Ø01Õ(¨Ñ+Ô+ðð ð rS   )rœ  r   r>   rS   rT   Úget_torch_function_mode_stackrJ  c  s2   € ðð Ý5:Õ;TÑ;VÔ;VÑ5WÔ5Wðñ ô ð rS   c                ót   — | t          ¦   «         k     r| dk    sJ ‚t          j                             | ¦  «        S r“   )r   r
  r§  Ú_get_function_stack_at)Úinds    rT   rI  rI  i  s6   € ØÕ*Ñ,Ô,Ò,Ð,°¸²°°°ÝŒ8×*Ò*¨3Ñ/Ô/Ð/rS   c                ó†   — t          t          ¦   «         ¦  «        D ]}t          ¦   «          Œ| D ]}t          |¦  «         Œd S rg   )rœ  r   r   r   )r  r„  Úmodes      rT   Úset_torch_function_mode_stackrP  n  sY   € ÝÕ,Ñ.Ô.Ñ/Ô/ð $ð $ˆÝ!Ñ#Ô#Ð#Ð#àð ,ð ,ˆÝ% dÑ+Ô+Ð+Ð+ð,ð ,rS   c                 ó^   — t          t          ¦   «         ¦  «        D ]} t          ¦   «          Œd S rg   )rœ  r   r   )r„  s    rT   Úclear_torch_function_mode_stackrR  v  s9   € ÝÕ,Ñ.Ô.Ñ/Ô/ð $ð $ˆÝ!Ñ#Ô#Ð#Ð#ð$ð $rS   c                 ó"   — t          ¦   «          d S rg   )Ú
breakpointr(  s    rT   Ú_breakpoint_for_c_dynamorU  |  s   € Ý�L„L€L€L€LrS   c                óÐ   — | j         }t          j        |¦  «        }t          |j        ¦  «        dk    rddlm}  |d¦  «        ‚|j        | j        k    rddlm}  |d¦  «        ‚d S )NrK   r1   )ÚInternalTorchDynamoErrorz[Tensor subclass method __metadata_guard__ must take exactly two subclass metadata argumentsz?Tensor subclass method __metadata_guard__ must be a classmethod)	Ú__metadata_guard__rõ  Ú	signaturerX  rò  rˆ  rW  rÑ  rá  )r«   r  ÚsigrW  s       rT   Úverify_guard_fn_signaturer[  €  sœ   € Ø	Ô	!€BÝ
Ô
˜BÑ
Ô
€CÝ
ˆ3Œ>ÑÔ˜aÒÐØ1Ð1Ð1Ð1Ð1Ð1à&Ð&Øiñ
ô 
ð 	
ð 
„{�e”oÒ%Ð%Ø1Ð1Ð1Ð1Ð1Ð1à&Ð&ØMñ
ô 
ð 	
ð &Ð%rS   c                óú   — | j         t          j         t          j         fv o\| j        t          j        t          j        fv o=| j        t          j        t          j        fv o| j        t          j        t          j        fv S rg   )rž   rš  r   r6  rD  Ú__iter__)Úuser_clss    rT   Ú#does_not_override_dict_iter_methodsr_  ‘  sl   € àŒ�4œ:¥{Ô'8Ð9Ð9ð 	GØŒO¥¤­[Ô-?Ð@Ð@ð	GàŒM�dœi­Ô)9Ð:Ð:ð	Gð Ô¥$¤-µÔ1EÐ!FÐFð	rS   c                ó,   — |                       |¦  «        S rg   )rŒ  ©r3  rM  s     rT   Ú	call_sizerb  �  s   € à�6Š6�!‰9Œ9ÐrS   c                ó,   — |                       |¦  «        S rg   )r}  ra  s     rT   Úcall_striderd  ¢  s   € à�8Š8�A‰;Œ;ÐrS   c                ó*   — |                       ¦   «         S rg   )Ústorage_offsetr2  s    rT   Úcall_storage_offsetrg  §  s   € à×ÒÑÔÐrS   c                ó,   ‡ — ddg}ˆ fd„|D ¦   «         }|S )NrÆ  Útagc                ób   •— i | ]+}|‰j         v ¯|t          j        ‰j         |         ¦  «        “Œ,S r>   )r0  rv  )r†   rª   rÐ  s     €rT   r6  z(_extract_tensor_dict.<locals>.<dictcomp>´  s>   ø€ ð ð ð Ø,/À3È!Ì*ÐCTÐCTˆ�TŒY�q”z #”Ñ'Ô'ÐCTÐCTÐCTrS   r>   )rÐ  ÚKEYS_TO_COPYÚtensor_dicts   `  rT   Ú_extract_tensor_dictrm  ®  s@   ø€ à#Øð€Lð
ð ð ð Ø3?ðñ ô €Kð ÐrS   z(dict[int, weakref.ReferenceType[object]]Úuser_obj_id_to_weakrefc                óF   — t          |          ¦   «         }|€
J d¦   «         ‚|S )NzUser object is no longer alive)rn  )Úobj_idrÁ  s     rT   Úget_user_object_from_idrq  Á  s'   € Ý
  Ô
(Ñ
*Ô
*€CØˆ?ˆ?Ð<‰?Œ?ˆ?Ø€JrS   c                ó\   — t          | ¦  «        }t          j        | ¦  «        t          |<   d S rg   )r²  r½  r»  rn  )rÁ  rp  s     rT   Ústore_user_object_weakrefrs  Ç  s(   € Ý�‰WŒW€FÝ%,¤[°Ñ%5Ô%5Õ˜6Ñ"Ð"Ð"rS   c                  ó¶   — e Zd ZU dZded<   dZded<   dZedd„¦   «         Zedd	„¦   «         Z	edd
„¦   «         Z
edd„¦   «         Zeed„ ¦   «         ¦   «         ZdS )ÚCompileTimeInstructionCounterr   rZ   Ú_counterr7  Ú_idr}   r�   c                ón   — | j         dz   | _         | j         dk    rt          j        ¦   «         | _        d S d S r�   )Ú_depthr   rÜ  rw  ri   s    rT   rÜ  z#CompileTimeInstructionCounter.startÑ  s5   € à”Z !‘^ˆŒ
ØŒ:˜Š?ˆ?Ý*Ô0Ñ2Ô2ˆCŒGˆGˆGð ˆ?rS   c                óš   — | j         dz
  | _         | j         dk    r0| xj        t          j        | j        ¦  «        z  c_        d| _        d S d S )Nr1   r   r7  )ry  rv  r   Úendrw  ri   s    rT   r{  z!CompileTimeInstructionCounter.end×  sJ   € à”Z !‘^ˆŒ
ØŒ:˜Š?ˆ?ØˆLŒLÕ0Ô4°S´WÑ=Ô=Ñ=ˆLŒLØˆCŒGˆGˆGð ˆ?rS   c                ó   — d| _         d S r“   ©rv  ri   s    rT   rh   z#CompileTimeInstructionCounter.clearÞ  s   € àˆŒˆˆrS   c                ó   — | j         S rg   r}  ri   s    rT   r«   z#CompileTimeInstructionCounter.valueâ  s
   € àŒ|ÐrS   c              #  óä   K  — 	 t           j        r|                      ¦   «          d V — t           j        r|                      ¦   «          d S d S # t           j        r|                      ¦   «          w w xY wrg   )r<   Ú%record_compile_time_instruction_countrÜ  r{  ri   s    rT   Úrecordz$CompileTimeInstructionCounter.recordæ  st   è è € ð	ÝÔ;ð Ø—	’	‘”�ØˆEˆEˆEåÔ;ð Ø—’‘	”	�	�	�	ðð ø�vÔ;ð Ø—’‘	”	�	�	ðøøøs   „$A Á#A/NrS  )r}   rZ   )rM   rN   rO   rv  rw   rw  ry  rx   rÜ  r{  rh   r«   r   r�  r>   rS   rT   ru  ru  Ì  sÜ   € € € € € € Ø€HÐÐÐÑØ€C€M€M€M�MØ€Fàð3ð 3ð 3ñ „[ð3ð
 ðð ð ñ „[ðð ðð ð ñ „[ðð ðð ð ñ „[ðð Øðð ñ „^ñ „[ðð ð rS   ru  ÚfeatureÚusagec                ó�   — t          ¦   «                              ¦   «         r%t          ¦   «                              d| |¦  «         dS dS )zQ
    Records whether we are using a feature
    Generally a feature is a JK.
    rŒ  N)r°   rÎ   Úset_key_value)r‚  rƒ  s     rT   Úset_feature_user†  ò  sO   € õ ÑÔ×(Ò(Ñ*Ô*ð MÝÑÔ×+Ò+¨O¸WÀeÑLÔLÐLÐLÐLðMð MrS   )Úddp_optimizerÚpython_reducerÚ'python_reducer_without_compiled_forwardÚno_optimizationÚ_ddp_optimization_modec                 óð   — t           j        } t          | t          ¦  «        r| rdnd}n7t          | t          ¦  «        r| }nt          dt          | ¦  «        ›�¦  «        ‚|t          v sJ d|›�¦   «         ‚|S )Nr‡  rŠ  z;Invalid dynamo config optimize_ddp type type(optimize_ddp)=z.Invalid dynamo config optimize_ddp value mode=)r<   Úoptimize_ddprÍ  rÈ   r~   r§  r†  r‹  )r�  rO  s     rT   Úget_optimize_ddp_moderŽ    s™   € ÝÔ&€LÝ�,¥Ñ%Ô%ð 
Ø".ÐEˆˆÐ4EˆˆÝ	�L¥#Ñ	&Ô	&ð 
ØˆˆåØLµt¸LÑ7IÔ7IÐLÐLñ
ô 
ð 	
ð Õ)Ð)Ð)Ð)Ø;°DÐ;Ð;ñ *Ô)Ð)ð €KrS   úGenerator[None, None, None]c               #  ó  K  — t           j        ot          j        ¦   «         } | r^t          j        d¦  «        5  t          j        ¦   «         5  dV — ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS dV — dS )ar  
    Disables torch.inference_mode for the compilation (still on at runtime).
    This simplifies the compile stack where we can assume that inference_mode
    will always be off.

    Since inference_mode is equivalent to no_grad + some optimizations (version
    counts etc), we turn on no_grad here. The other optimizations are not
    relevant to torch.compile.
    FN)r<   Ú"fake_tensor_disable_inference_moder
  Úis_inference_mode_enabledÚinference_moder€  )Úis_inference_mode_ons    rT   Úmaybe_disable_inference_moder•    s  è è € õ 	Ô1ÐWµeÔ6UÑ6WÔ6Wð ð ð åÔ  Ñ'Ô'ð	ð 	åŒM‰OŒOð	ð 	ð ˆEˆEˆEð		ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ˆˆˆˆˆs5   ¸A5ÁAÁA5ÁA!	Á!A5Á$A!	Á%A5Á5A9Á<A9c               #  ó®   K  — t           j        rBt          j        j                             ¦   «         5  dV — ddd¦  «         dS # 1 swxY w Y   dS dV — dS )zÉ
    Turns off tracking of inference_mode for fake tensor propagation. With this
    context manager, when a real tensor is converted to fake tensor, the fake
    tensor looses its inference-ness.
    N)r<   r‘  r
  r!  Ú
meta_utilsÚ$disable_inference_mode_for_fake_propr>   rS   rT   Ú*maybe_disable_inference_mode_for_fake_propr™  -  s§   è è € õ Ô0ð ÝÔÔ)×NÒNÑPÔPð 	ð 	ØˆEˆEˆEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ˆˆˆˆˆs   ²AÁAÁAr!  úOptional[torch.fx.Node]c                ó.   — | d u pd| j         v pd| j         v S )Nr‹  r-  r.  )r!  s    rT   Úis_node_meta_validrœ  ;  s$   € Ø�4ˆ<ÐM˜?¨d¬iÐ7ÐM¸5ÀDÄIÐ;MÐMrS   úAbstractContextManager[None]c                 óÈ   — t           j        j        j        r$t           j        j                             d¦  «        nt          j        ¦   «         } |  	                    ¦   «          | S )NzPregraph bytecode)
r
  Úautogradr  Ú_is_profiler_enabledr§  Ú	_profilerÚ_RecordFunctionFastr  ÚnullcontextÚ	__enter__©Úcms    rT   Úrecord_pregraph_bytecode_enterr§  ?  sR   € õ Œ>Ô"Ô7ð	&�ŒÔ×.Ò.Ð/BÑCÔCÐCåÔ#Ñ%Ô%ð ð
 ‡L‚L�N„N€NØ€IrS   r¦  c                ó4   — |                       d d d ¦  «         d S rg   )Ú__exit__r¥  s    rT   Úrecord_pregraph_bytecode_exitrª  J  s   € à‡K‚K��d˜DÑ!Ô!Ð!Ð!Ð!rS   úlist[CodeType]c                 ó,   — ddl m}   | j        ¦   «         S )Nr   ©r#   )Útorch._guardsr#   Úget_traced_coder­  s    rT   r¯  r¯  Q  s%   € Ø,Ð,Ð,Ð,Ð,Ð,à)ˆ>Ô)Ñ+Ô+Ð+rS   )ry   rz   r{   r|   r}   r~   rS  )r•   rZ   r}   r�   )r}   rG   )r}   r   )r}   r    )NFNNNNFN)rª   r~   rö   r÷   rÆ   rÈ   r¼   rø   rù   r÷   rú   rû   rü   rý   rþ   rÈ   rÿ   r÷   r}   r   rô   )r'  r(  r)  rÈ   r}   r~   )r'  r-  r)  rÈ   r}   r.  )r~   F)r)  rÈ   r-  )r‹  r~   r}   r�   )r˜  r™  r}   rZ   )r3  rB   r}   rB   )rÁ  rÉ   rÂ  rÃ  r}   rÄ  )rÁ  rÉ   rÂ  rÈ  r}   rÄ  )rÁ  rÉ   rÂ  rÊ  r}   rÈ   )r«   rê  r}   rë  )r«   r   r}   rî  )r«   r   r}   rÈ   )r«   r   r}   rø  )r«   r   r}   rþ  )r«   r   r}   r  rg   )rB  rF  r}   r¾   )rž  rO  r}   r�   rQ  )
rì  rZ   rí  rZ   rž  rD   rî  rï  rð  rñ  )r  rZ   r}   r�   )r}   r  )r}   r  )r}   rÈ   )FF)r»   r~   rW  rÈ   rÆ   rÈ   r}   r   )r-  rŸ  )r}   rÚ  )r1   )r«   r   r}   r  )r}   rw  )r<  r   r}   r­  )r¨  r   r}   rÈ   )rÙ  r~   r}   r~   )rí  rÈ   )T)rÁ  r   )r%  rÄ  )r«   r   )r_   r†  )r«   r   rÔ  rÈ   )rà  rÚ  )rÿ  rà  rá  rÈ   râ  r"   r}   rã  )FFF)r~   r~   ri  rZ   r}   rZ   )rv  r~   r}   rw  )r‰  rœ  r�  rž  r}   r~   )rš  rÛ  r}   rÈ   )TT)rô  r  )r‚  r~   rƒ  rÈ   )r}   r�  )r!  rš  r}   rÈ   )r}   r�  )r¦  r�  r}   r�   )r}   r«  (â  rµ   Ú
__future__r   Úatexitru   r  rv  rû  rF  rõ  r  rò  rø  rÉ  rõ  r‹   r²  r¤  ru  r,  rl  r`  r¢  rÒ  r³  r"  rÁ   r´  r   rÕ  r$  r8  r½  r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   Útyping_extensionsr   r   r   r   r
  Útorch._functorch.configÚ%torch.fx.experimental.symbolic_shapesÚtorch.utils._pytreerþ  Ú_pytreerŽ  r   Útorch._Cr   r   r   r   Útorch._dispatch.pythonr   Útorch._dynamo.metrics_contextr   r    r®  r!   r"   r#   Útorch._subclasses.meta_utilsr$   Útorch._utils_internalr%   r&   r'   r(   r)   Útorch.fx._utilsr*   r+   Útorch.monitorr,   Útorch.nn.modules.lazyr-   Útorch.utils._tritonr.   r/   Útorch.utils.hooksr0   Úgraph_utilsr2   rÆ  Úcollections.abcr3   r4   r5   r6   r7   r8   r  rÛ  r  Útorch._loggingÚtorch._numpyÚ_numpyr  r9   r;   rõ  r<   ÚfftÚlinalgr«  r=   rw   ÚNP_TO_TNP_MODULEr¸  r?   r@   rA   rŠ   rB   r  rh  rÖ  Úunpatched_nn_module_getattrrb  Úunpatched_nn_module_callÚ
_call_implÚunpatched_nn_module_call_implrv   rC   rE   Útroubleshooting_urlÚnnmodule_doc_urlÚnnmodule_doc_url_msgrw  rM   rt   rF   r!  rH   ra   Útimer_counterr  rJ   rV   r‰   r�   r‘   r”   r—   r˜   r¢   r¬   r°   r²   r´   rº   r#  r  r&  r,  ÚregisterrG  ÚFloatTensorrç  ÚDoubleTensorrè  ÚdoubleÚ
HalfTensorræ  ÚhalfÚBFloat16Tensorr  Ú
ByteTensorrà  Ú
CharTensorrÜ  Ú
LongTensorrß  ÚlongÚ	IntTensorrÞ  rZ   ÚShortTensorrÝ  ÚshortÚ
BoolTensorrÈ   Útensortype_to_dtyperI  rf  rd  rg  rb  r‚  rŠ  r—  r   r¢  r¨  r«  r­  rÇ  rÓ  ÚParamSpecArgsÚParamSpecKwargsÚ	ParamSpecÚTypeVarTupleÚTypeAliasTyperÔ  rØ  rä  ré  rí  r  r  r  r  r÷  rý  rô  r£  ÚneÚltÚleÚgtÚgeÚcmp_name_to_op_mappingÚcmp_name_to_op_str_mappingr  r  r  r  r#  r&  r)  r.  rE  rK  rM  r¸  rå  rO  Ú!DEFAULT_COMPILATION_METRICS_LIMITr  r¼  r¿  rÚ  rë  r	  r­   r®   r  r  r  r  rT  rÂ   rì   r[  r]  r`  re  ro  ru  r›  r¥  r³  r½  rÃ  rÅ  rÊ  rÉ  ré  rõ  rÿ  r  r  ro  r~   rY   r†  ÚEllipsisrá  ÚNotImplementedr  rq  Úmemory_formatrz  ÚfinfoÚiinfoÚ	attentionÚ
SDPBackendr  Ú_CudaDevicePropertiesr  r  r[  Úlanguager  r­  r  r%  r0  r;  r?  rC  rJ  rL  rP  rD  rQ  r6  rR  rž   rS  rT  ÚiterrU  rœ  rV  Ú__length_hint__Útuple_iterator_lenrÉ   rÒ  rg  rš  Údict_newrŒ   r0  Údict_methodsrÎ  Ú	tuple_newÚtuple_methodsrC  Úlist_methodsr³  Úlist_getitemÚstr_methodsr`  re  ri  ro  rr  rv  r�  Ú	iter_nextr|  r  Údict_getitemr„  r‰  r”  rœ  r¬  r¯  r²  r¹  rÌ  ÚGLOBAL_KEY_PREFIXÚtorch._subclassesrÎ  rÓ  r×  rÞ  râ  rç  rì  rÁ  ró  r;  rA  Úorig_code_maprB  rC  Úseen_code_maprL  rs  rR  rT  r`  rY  r›  rœ  rŸ  ru  r©  r¼  r¾  rÃ  rË  rÎ  rÑ  rÍ  rØ  rÚ  rß  rè  ró  rø  r  r	  r
  Úall_hook_namesr  r  r  r  r!  r#  r/  r1  r8  rD  rF  rJ  rN  rW  ra  rh  ro  rq  r›  rÄ  rÇ  rÎ  rÔ  r×  rÚ  rä  rì  rð  ró  r  r  r  r  r(  r,  r/  r1  rQ  r5  r:  r>  rB  rF  rJ  rI  rP  rR  rU  r[  r_  Ú_disable_dynamorb  rd  rg  rm  rn  rq  rs  ru  r†  r‹  rŽ  r•  r™  rœ  r§  rª  r¯  r>   rS   rT   ú<module>r	     s’  ððð ð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð DÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cà €€€Ø Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð <Ð ;Ð ;Ð ;Ð ;Ð ;Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø =Ð =Ð =Ð =Ð =Ð =ðð ð ð ð ð ð ð ð ð ð ð ð ð ð GÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø -Ð -Ð -Ð -Ð -Ð -à 'Ð 'Ð 'Ð 'Ð 'Ð 'ð 
Ôð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðØÐÐÐÐøØð ð ð Ø	€B€B€Bðøøøð	ØÐÐÐØÐÐÐÐÐØ.Ð.Ð.Ð.Ð.Ð.Ø)Ð)Ð)Ð)Ð)Ð)àÐÐÐÐÐð 
ð àØŒFØŒIØŒIð	>
Ðð 	
ð 	
ð 	
ñ 	
ð �ØŒF�C”GØŒI�s”zØŒI�s”zð	
ÐÐð  "ÐàÐØVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVøØð 	ð 	ð 	Ø€Dð	øøøð €GˆC�L„L€à#œhœoÔ9Ð Ø œ8œ?Ô3Ð Ø %¤¤Ô :Ð à7N°{Ô7NØÔñ8ô 8€ð ð ð ñ ð %'Ð Ð &Ð &Ð &Ñ &àGð ð QÐ ØVÐ.ÐVÐVÐVÐ Ø€gÔ˜Ñ!Ô!€ð 46Ð Ð 5Ð 5Ð 5Ñ 5ð
 .E¨[Ô-DÀUÑ-KÔ-KÐ Ð KÐ KÐ KÑ Kà�	”Ñ!Ô!€ðð ð ð ð �t”yñ ô ð ð%Jð %Jð %Jð %Jð %Jñ %Jô %Jð %JñP
ð 
ð 
ð 
ð €
ñ ð  ð  ð  ñð ð ð ð €ñð ð ð ñð ð ð ñ ð ð ð ð> !Ð  Ð  Ñ  Ø /Ð /Ð /Ñ /ñð ð ð ñ$ð $ð $ð $ðð ð ð ð ˜4œ9ñ ô ð ðS#ð S#ð S#ð S#ð S#ñ S#ô S#ð S#ðl $�I”OÑ%Ô%Ð ð ð !%Ø"'Ø,0Ø.2Ø&*Ø"&Ø!Ø/3ñNQñ NQð NQð NQñ „ðNQðb 
Ù LÑ LÐ LÐ Lñ 
„Ø Lð 
à,1ñ)ñ )ð )ð )ñ 
„ð)ñ
"ñ "ð "ð "ð "ðJ „ñ8ð 8ð 8ñ „ð8ð
 
Ô˜œ u¤{Ð3Ø	Ô˜œ¨¬Ð5Ø	Ô�u”} e¤jÐ1Ø	Ô˜5œ>Ð+Ø	Ô�u”{�nØ	Ô�u”z�mØ	Ô�u”{ E¤JÐ/Ø	„O�e”k 5¤9Ð-Ø	Ô˜œ U¤[Ð1Ø	Ô�u”z�mðÐ ðð ð ð ð ñ ô ð ð( #:Ð"9Ñ";Ô";Ð ð"ð "ð "ñ,ð ,ð ,ð ,ð
ð 
ð 
ð	ð 	ð 	ñ?ð ?ð ?ð ?ñ
Gð Gð Gð Gñð ð ð ñð ð ð ðð ð ð	ð 	ð 	ðð ð ð ð ñ ô ð ðB 
Ù AÐ AÐ Añ 
„Ø Að 
ñð ð ñ 
„ðð
 
Ù CÐ CÐ Cñ 
„Ø Cð&ð &ð &ð Ô�wÒÐð 	ÔØÔØÔØŒØÔØÔð%Ð!ðGð Gð Gðð ð ð&ð ð ð 
ñ5ð 5ð 5ñ 
„ð5ð
 
ñ7ð 7ð 7ñ 
„ð7ñ
ð ð ð ð Ø	ÔØ	ÔØ	ÔØ	Ôð!ô€
ð ð ð ñ ñð ð ð ñð ð ð ð ŒkØŒkØŒkØŒkØŒkØŒkðð Ð ð ØØØØØðð Ð ñð ð ð ð83ð 3ð 3ðð ð ð%ð %ð %ð$ð $ð $ð,ð ,ð ,ð €Ô�TÑÔðð ñ Ôðñð ð ð ð
ð 
ð 
ñ$0ð 0ð 0ð 0ñ5ð 5ð 5ð 5ð Ð ð Ôðq"ð q"ð q"ð q"ð q"ñ q"ô q"ñ Ôðq"ðh %'Ð !ð ?P¸kÔ>OØ,ð?ñ ?ô ?Ð ð ð ð ñ ñ
-ð -ð -ñ -ñ` 3ð  3ð  3ñ  3ñF(ð (ð (ñ (ñVK3ð K3ð K3ñ K3ð^ "�>Ñ*DÐEÑEÔEÑ Ø0Ð0Ñ9SÐTÑTÔTÑ ñ%ð %ð %ñ %ñ!ð !ð !ñ !ñ
&ð &ð &ñ &ðmð mð mð mð mñ mô mñ mð`	 59Ñ Ð 8Ð 8Ð 8Ñ 8ñð ð ñ ñ*ð *ð *ñ *ð
 ð %*Ø"'ñ'ñ 'ð 'ð 'ñ „ñ'ð@ Ôð(ð (ð (ð (ð (ñ (ô (ñ Ôñ(ð( ð  ð  ð  ð  Ð+ñ  ô  ñ  ð )™.Ñ*Ô*�Õ ðð ñ ð !ð Gð Gð Gð Gñ GðTð ñ ñ&
ð 
ð 
ñ 
ð ð9ð 9ñ „ñ9ð"ð ñ ñð ð ñ ð$ð ñ ð(ð (ñ (ð
ð ñ ð< €Ô�QÑÔñ1ð 1ð 1ñ Ôñ1ð2ð ñ ñ,ð ð ñ ð"Xð Xñ Xð €ˆ2�„ðð ñ „ñð Ø	ÙØÙÙ	Ø�Dˆ�J„JÙÕÙÕØ	„Nà	…LØ	…KØ	ÕØ	…LØ	…KØ	…KØ	„HÕÕ!Ø	…JÕ$ð'$Ñ ð ð ð ñ ð, ÐÑÔð 5Ø€M�M�Má×Ó™f�oÕ3Ñ4Ô4Ð4ððð ñ ð$ …ðð ñ „ññð ð ñ ðð ñ ð>ð ñ ð2ð ñ ðWð Wñ Wð
ð 
ñ 
ðð ñ ðð ñ ð "&¡ b§g£g¡i¤i¡¤�	Ð 0Ð 0Ð 0Ñ 0Ø%)¡T¨"¯)«)©+¬+Ñ%6Ô%6�Ð 6Ð 6Ð 6Ñ 6Ø(,©¨R¯X«X©Z¬ZÑ(8Ô(8�
Ð 8Ð 8Ð 8Ñ 8Ø&*¡d¨;¨;©=¬=×+?Ó+?Ñ+AÔ+AÑ&BÔ&B�Ð BÐ BÐ BÑ BØ&*¡d¨4©4°©8¬8¡n¤n�Ð 4Ð 4Ð 4Ñ 4Ø&*¡d¨4©4°±°a±´©>¬>Ñ&:Ô&:�Ð :Ð :Ð :Ñ :Ù#Õ3Ñ Ù�^�
Ù�<�ðð à!�)•/¡$¥-×"6Ó"6Ñ"8Ô"8¸+Õ:N×:UÓ:UÑ:WÔ:WÑXÔXðñ ô �ñ �M�	ØRÐR¡e¥n×&;Ó&;Ñ&=Ô&=ÐRÑRÔR�ØPÐP¡T¥]×%9Ó%9Ñ%;Ô%;ÐPÑPÔP�ÙÕ�àNÐN¡C¥L×$7Ó$7Ñ$9Ô$9ÐNÑNÔN�ñð ñ ñGð Gñ Gñð ñ ñ1ð 1ñ 1ñð ñ ñ
:ð :ñ :ñ �	ññ ð ñ ñð ñ ñ Õ�ñ@ð @ñ @ñð ñ ñ8ð 8ñ 8ñ$ð ñ ñ&ñ &ð &ñ &ñRMñ Mð Mñ Mñ@ð @ñ @ññ ð ñ ñB ñ  ð  ñ  ñ
 !Ñ ð =Ñ <Ñ <Ñ <Ñ <Ð <ñ7ð 7ñ 7ññ ð ñ ð CHñ (ð (ñ (ñ (ð (ñ (ñ 
ð 
ñ 
ñ"?ð ?ñ ?ñ
;ð ;ñ ;ð ØÙØÙØØØ�iØ-2Ø!&ðmFñ mFñ mFð mFñ mFñ`	Hð Hñ Hð
 Ôñ
=ð 
=ñ Ôñ
=ð 'Ð&Ñ(Ô(�ð ;R¸+Ô:QÑRVÑ:WÔ:W�Ñ WÐ WÑ WÑ Wð LNÑ Ñ MÐ MÑ MÑ Mð 'Ð&Ñ(Ô(�ð …ñ,ð ,ñ „ñ,ñ&ð &ñ &ñ
ñ ð ñ ñ$ð ñ ñ
/ð /ñ /ñ*Añ Að Añ AðH  �	”Ñ!Ô!�ñ1ð 1ñ 1ð ñ"ð "ñ „ñ"ñJð Jñ JñZ$ð $ñ $ñN
ð 
ñ 
ñ*2ñ 2ð 2ñ 2ñð ñ ñGñ Gð Gñ Gñ/ñ /ð /ñ /ñð ñ ñ	ñ 	ð 	ñ 	ññ ñ ð ñ ðð ñ ð ñ ˜œñ ô ñ ñ5ñ 5ð 5ñ 5ññ ð ñ ñDð ñ ñ*Wð Wñ Wñ +Ñ,<Ð=Ñ Ù,Ñ.?Ð@Ñ ðñ ð Ñ ñ $Ñ&9Ñ9Ñ<QÑQ�ñð ñ ð ØØ ñ	ñ ð ñ ðF ØØ ñ	ñ ð ñ ñ$ð ñ ñ
ð 
ñ 
ð
$ð 
$ñ 
$ð 
$ñ 
$ñ 
$ô 
$ñ 
$ñ$ð $ñ $ð$ð $ñ $ð $ñ $ñ $ô $ñ $ð&$ð $ñ $ð $ñ $ñ $ô $ñ $ñ(ð ñ ñ@ð ñ ñ4ð 4ñ 4ñ.ð .ñ .ñð ñ ñð ñ ñ&ð ñ ñ$	Cñ 	Cð 	Cñ 	Cð Ôðð ñ ð ñ ñ ô ñ Ôññvñ vð vñ vñrAñ Að Añ AñHð ñ ñ)ð )ñ )ñ"ð ñ ñð ñ ñ0ð 0ñ 0ññ ð ñ ñ<
ð 
ñ 
ñð ñ ñOð Oñ Oð Ôññ ð ñ Ôññ$&ð &ñ &ñð ñ ð1ð 1ñ 1ð 1ñ 1�””ñ 1ô 1ñ 1ñ,ñ ,ð ,ñ ,ñ^4ð 4ñ 4ñ1ð 1ñ 1ðð ñ ð ñ ñ ô ñ ð  ™C™EœE�Ñ !Ð !Ñ !Ñ !ñ	2ñ 	2ð 	2ñ 	2ñ%ð %ñ %ð ÔñCð Cñ ÔñCñKð Kñ Kñð ñ ñ0ð 0ñ 0ñ
,ð ,ñ ,ñ$ð $ñ $ñð ñ ñ
ð 
ñ 
ñ"ð ñ ð Õñð ñ Ôñð Õñð ñ Ôñð Õñð ñ Ôññ
ð 
ñ 
ð  DFÑ Ñ EÐ EÑ EÑ Eñð ñ ñ6ð 6ñ 6ð
#ð #ñ #ð #ñ #ñ #ô #ñ #ñLMñ Mð Mñ Mñ+Ñ ð ð ñ ñ ñð ñ ð" ññ ð ñ „ñð. ñ
ñ 
ð 
ñ „ñ
ñNñ Nð Nñ Nð Õññ ð ñ Ôñð Õñ"ñ "ð "ñ Ôñ"ñ,ñ ,ð ,ñ ,ð ,ð ,s%   ÅE  Å E*Å)E*Å.A/G ÇG&Ç%G&