Ë
    [^(h
  ã                   óT  — d Z ddlZddlZddlmZmZ ddlmZmZm	Z	m
Z
 ddlmZmZ  ej                  ej                  d¬«      Z ed«       e	j"                  d	d	d
d
d«      dej$                  fd„«       «       Z ed«       e	j"                  d	d
d	d	«      dej$                  fd„«       «       Z ed«       e	j"                  d	d
d	d	dd«      dej$                  dej*                  j,                  dedej*                  j,                  dej*                  j,                  dedefd„«       «       Zy)aõ  This file exports ONNX ops for opset 16.

Note [ONNX Operators that are added/updated in opset 16]

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
https://github.com/onnx/onnx/blob/main/docs/Changelog.md#version-16-of-the-default-onnx-operator-set
New operators:
    GridSample https://github.com/onnx/onnx/pull/3557

Updated operators:
    Identity
    If
    LeakyRelu
    Loop
    PRelu
    RoiAlign
    Scan
    ScatterElements
    ScatterND
    Where
    GreaterOrEqual
    LessOrEqual
é    N)ÚGRID_SAMPLE_INTERPOLATION_MODESÚGRID_SAMPLE_PADDING_MODES)Ú_type_utilsÚerrorsÚsymbolic_helperÚutils)Ú	jit_utilsÚregistrationé   )Úopsetzaten::grid_samplerÚvÚiÚbÚgc                 ó`  — t        j                  |«      dk(  rt        j                  d«      S t        j                  «       D ��ci c]  \  }}||“Œ
 c}}|   }t        j                  «       D ��ci c]  \  }}||“Œ
 c}}|   }	| j                  d||t        |«      ||	¬«      S c c}}w c c}}w )Né   z#GridSample with 5D volumetric inputÚ
GridSample)Úalign_corners_iÚmode_sÚpadding_mode_s)r   Ú_get_tensor_rankÚ_onnx_unsupportedr   Úitemsr   ÚopÚint)
r   ÚinputÚgridÚ	mode_enumÚpadding_mode_enumÚalign_cornersÚkr   r   r   s
             úY/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/onnx/symbolic_opset16.pyÚgrid_samplerr#   -   s°   € ô ×'Ñ'¨Ó.°!Ò3Ü×0Ñ0Ð1VÓWÐWÜ>×DÑDÓF×G‘t�q˜!ˆa�‰dÓGÈ	ÑR€FÜ'@×'FÑ'FÓ'H×I™t˜q !�a˜‘dÓIØñ€Nð �4‰4ØØØÜ˜MÓ*ØØ%ð ó ð ùó	 HùÛIs   ÁB$Á0B*zaten::scatter_addc           	      ód  — t         j                  j                  |t         j                  j                  «      }t	        j
                  |«      }t	        j
                  |«      }t        |«      t        |«      k7  rt	        j                  dd|› d|› d�«      S ||k7  sd |v rY| j                  d|«      }| j                  dt        j                  dgt        |«      z  «      ¬«      }	| j                  d	||	|«      }t	        j                  |«      }t	        j                  |«      r| j                  d
||||d¬«      S t         j                  j                  |«      |k7  r?| j                  d|t         j                  j                  |«      j                  «       ¬«      }| j                  d
||||d¬«      S )NÚscatter_addz	`index` (z0) should have the same dimensionality as `src` (ú)ÚShapeÚConstantr   ©Úvalue_tÚSliceÚScatterElementsÚadd©Úaxis_iÚreduction_sÚCast)Úto_i)r   ÚJitScalarTypeÚ
from_valueÚ	UNDEFINEDr   Ú_get_tensor_sizesÚlenÚ_unimplementedr   ÚtorchÚtensorÚ_maybe_get_scalarÚ	_is_valueÚ	onnx_type)
r   ÚselfÚdimÚindexÚsrcÚsrc_typeÚ	src_sizesÚindex_sizesÚadjusted_shapeÚstartss
             r"   r%   r%   H   sœ  € ô ×(Ñ(×3Ñ3ØŒ[×&Ñ&×0Ñ0ó€Hô  ×1Ñ1°#Ó6€IÜ!×3Ñ3°EÓ:€Kä
ˆ9ƒ~œ˜[Ó)Ò)Ü×-Ñ-ØØ˜�}Ð$TÐU^ÐT_Ð_`Ðaó
ð 	
ð �KÒ 4¨;Ñ#6ØŸ™˜g uÓ-ˆØ—‘�j¬%¯,©,¸°s¼SÀÓ=MÑ7MÓ*N�ÓOˆØ�d‰d�7˜C ¨Ó8ˆä
×
+Ñ
+¨CÓ
0€CÜ× Ñ  Ô%Ø�t‰tÐ% t¨U°CÀÐQVˆtÓWÐWô ×$Ñ$×/Ñ/°Ó5¸ÒAØ—$‘$ØØÜ ×.Ñ.×9Ñ9¸$Ó?×IÑIÓKð ó ˆCð �t‰tØØØØØØð ó 
ð 	
ó    zaten::scatter_reduceÚsr>   r?   r@   rA   ÚreduceÚinclude_selfc                 óÖ  — |dk(  rt        j                  d«      ‚|st        j                  d«      ‚dddddd	œ}||   }| j                  d
| j                  d|«      «      }	| j                  d|	| j                  dt        j                  dt        j
                  ¬«      ¬«      «      }
t        j                  | d|
dd¬«      \  }\  }}}|j                  dt        j                  dgt        j
                  ¬«      ¬«      }|j                  d||«      }t        j                  |j                  |«       |j                  d||«      }t        j                  |j                  |«       |j                  d||«      }t        j                  |j                  |«       |j                  d|«      }t        j                  |j                  |«       |j                  d|«      }t        j                  |j                  |«       |j                  d|«      }t        j                  |j                  |«        | j                  dg|¢­||dœŽ}t        j                  | d|
dd¬«      \  }\  }}}|j                  d|«      }t        j                  |j                  |«       |j                  d|«      }t        j                  |j                  |«       |j                  «       j                  «       }|S )NÚmeanz7ONNX does not support mean reduction for scatter_reducez;ONNX does not support include_self=False for scatter_reduceÚnoner-   ÚmulÚminÚmax)rL   ÚsumÚprodÚaminÚamaxÚSizer'   ÚEqualr(   r   )Údtyper)   ÚIfé   é   )Ún_blocksÚoutputséÿÿÿÿÚReshapeÚIdentityr,   r.   é   ÚSqueeze)r   ÚOnnxExporterErrorr   r9   r:   Úint64r	   Úadd_op_with_blocksr   Ú_add_output_to_blockÚblockÚnodeÚoutput)r   r>   r?   r@   rA   rI   rJ   Úreduce_modeÚonnx_reduceÚ	self_rankÚself_rank_is_zeroÚif_opÚ
if_contextÚelse_contextÚ_Úneg_1Úself_reshapeÚindex_reshapeÚsrc_reshapeÚself_identityÚindex_identityeÚsrc_identityÚresultÚresult_squeezedÚresult_identityÚresult_finals                             r"   Úscatter_reducer|   w   s˜  € ð �ÒÜ×&Ñ&ØEó
ð 	
ñ Ü×&Ñ&ØIó
ð 	
ð
 ØØØØñ€Kð ˜fÑ%€Kà—‘�V˜QŸT™T '¨4Ó0Ó1€Ið Ÿ™Ø�˜AŸD™D ´U·\±\À!Ì5Ï;É;Ô5W˜DÓXóÐô ,5×+GÑ+GØ	ˆ4Ð"¨Q¸ô,Ñ(€EÑ%ˆJ˜ qð �M‰M˜*¬e¯l©l¸B¸4ÄuÇ{Á{Ô.SˆMÓT€Eà—=‘= ¨D°%Ó8€LÜ	×Ñ˜z×/Ñ/°Ô>Ø—M‘M )¨U°EÓ:€MÜ	×Ñ˜z×/Ñ/°Ô?Ø—-‘- 	¨3°Ó6€KÜ	×Ñ˜z×/Ñ/°Ô=à —O‘O J°Ó5€MÜ	×Ñ˜|×1Ñ1°=ÔAØ"—o‘o j°%Ó8€OÜ	×Ñ˜|×1Ñ1°?ÔCØ—?‘? :¨sÓ3€LÜ	×Ñ˜|×1Ñ1°<Ô@àˆQ�T‰TÐ#ÐQ eÑQ°CÀ[ÒQ€Fô ,5×+GÑ+GØ	ˆ4Ð"¨Q¸ô,Ñ(€EÑ%ˆJ˜ qð !—m‘m I¨vÓ6€OÜ	×Ñ˜z×/Ñ/°ÔAØ"—o‘o j°&Ó9€OÜ	×Ñ˜|×1Ñ1°?ÔCØ—:‘:“<×&Ñ&Ó(€LàÐrG   )Ú__doc__Ú	functoolsr9   Útorch.nn.functionalr   r   Ú
torch.onnxr   r   r   r   Útorch.onnx._internalr	   r
   ÚpartialÚonnx_symbolicÚ_onnx_symbolicÚ
parse_argsÚGraphContextr#   r%   Ú_CÚValuer   ÚstrÚboolr|   © rG   r"   ú<module>rŒ      si  ðñó6 ã ÷÷ CÓ Bß 8ð #�×"Ñ" <×#=Ñ#=ÀRÔH€ñ
 Ð$Ó%Ø€×Ñ˜C  c¨3°Ó4ðØ×Ñòó 5ó &ðñ2 Ð#Ó$Ø€×Ñ˜C  c¨3Ó/ð*
�9×)Ñ)ò *
ó 0ó %ð*
ñZ Ð&Ó'Ø€×Ñ˜C  c¨3°°SÓ9ð@Ø×Ñð@à
�(‰(�.‰.ð@ð 
ð@ð �8‰8�>‰>ð	@ð
 
�‰�‰ð@ð ð@ð ò@ó :ó (ñ@rG   