§
    OŠtjœB  ã                  óò  — d dl mZ ddlmZmZ ddlmZ ddlmZ ed„ ¦   «         Zed„ ¦   «         Z	 eej
        ¦  «        Zej        ed	„ ¦   «         ¦   «         Zej        e ej        d
¦  «        d„ ¦   «         ¦   «         ¦   «         Zej        e ej        d¦  «        dQd„¦   «         ¦   «         ¦   «         Zej        edRd„¦   «         ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zej        e ej        ddd¬¦  «        dSd„¦   «         ¦   «         ¦   «         Zej        e ej        dd¬ ¦  «        dTd!„¦   «         ¦   «         ¦   «         Zed"„ ¦   «         Zed#„ ¦   «         Zed$„ ¦   «         Zed%„ ¦   «         Zej        e ej        d&dd¬¦  «        dSd'„¦   «         ¦   «         ¦   «         Z ej        e ej        d(d¬ ¦  «        dTd)„¦   «         ¦   «         ¦   «         Z!ed*„ ¦   «         Z"ed+„ ¦   «         Z#ej        e ej        d,d-¬.¦  «        dUdVd0„¦   «         ¦   «         ¦   «         Z$ed1„ ¦   «         Z%ej        e ej        d2¦  «        dWd3„¦   «         ¦   «         ¦   «         Z&ed4„ ¦   «         Z'ej        e ej        d5¦  «        dRd6„¦   «         ¦   «         ¦   «         Z(ej        e ej)        d7d-¬.¦  «        dXdVd8„¦   «         ¦   «         ¦   «         Z*ed9„ ¦   «         Z+ej        e ej)        d:¦  «        dYd;„¦   «         ¦   «         ¦   «         Z,edZd>„¦   «         Z-ed[d@„¦   «         Z.ed\dC„¦   «         Z/ed]dD„¦   «         Z0eddej1        fd^dH„¦   «         Z2edej1        fd_dI„¦   «         Z3ed`dadJ„¦   «         Z4edej1        fd_dK„¦   «         Z5edL„ ¦   «         Z6ej        ed`dM„¦   «         ¦   «         Z7edN„ ¦   «         Z8edbdO„¦   «         Z9edbdP„¦   «         Z:dS )cé    )Úannotationsé   )ÚjitÚconstexpr_functioné   )Úcore)Úmathc                ó:   — d}| }|dk    r|dz  }|dz  }|dk    °|S )Nr   r   © )ÚiÚlog2Úns      úV/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/triton/language/standard.pyÚ_log2r   
   s9   € à€DØ	€AØ
ˆaŠ%ˆ%Ø	ˆa‰ˆØ�‰	ˆð ˆaŠ%ˆ%ð €Kó    c                ó&   — | | dz
  z  dk    o| dk    S ©Nr   r   r   )r   s    r   Ú_is_power_of_twor      s   € à��Q‘‰K˜AÒÐ( ! q¢&Ð(r   c                ó   — | |dz
  z   |z  S )z§
    Computes the ceiling division of :code:`x` by :code:`div`

    :param x: the input number
    :type x: Block
    :param div: the divisor
    :type div: Block
    r   r   )ÚxÚdivs     r   Úcdivr       s   € ð ��q‘‰M˜cÑ!Ð!r   Úsigmoidc                ó8   — ddt          j        |  ¦  «        z   z  S ©Nr   )r	   Úexp)r   s    r   r   r   .   s   € ð �•D”H˜a˜R‘L”LÑ Ñ!Ð!r   ÚsoftmaxNFc                ó²   — |€d}n|}| t          | ||¬¦  «        z
  }t          j        |¦  «        }t          |||¬¦  «        }t          j        |||¦  «        S )Nr   ©Ú	keep_dims)Úmaxr	   r   ÚsumÚfdiv)r   Údimr    Úieee_roundingÚ_dimÚzÚnumÚdens           r   r   r   5   sc   € ð €{Ø ˆˆà"ˆØ	�C��4 9Ð-Ñ-Ô-Ñ-€AÝ
Œ(�1‰+Œ+€CÝ
ˆc�4 9Ð
-Ñ
-Ô
-€CÝŒ9�S˜#˜}Ñ-Ô-Ð-r   c                ó<   — t          j        | | j        g|¬¦  «        S )zn
    Returns a contiguous flattened view of :code:`x`.

    :param x: the input tensor
    :type x: Block
    )Úcan_reorder)r   ÚreshapeÚnumel)r   r+   s     r   Úravelr.   C   s   € õ Œ<˜˜AœG˜9°+Ð>Ñ>Ô>Ð>r   c                óŒ   — | |z  |z   }||z  }||z  }||z  }t          j        ||z
  |¦  «        }||z  }|||z  z   }	||z  }
|	|
fS )aÝ  
    Transforms the indices of a row-major `size_i * size_j` matrix into
    the indices of a column-major matrix for each group of `size_g` rows.

    For example, for :code:`size_i = size_j = 4` and :code:`size_g = 2`, it will
    transform ::

        [[0 , 1 , 2 , 3 ],
         [4 , 5 , 6 , 7 ],
         [8 , 9 , 10, 11],
         [12, 13, 14, 15]]

    into ::

        [[0, 2,  4 , 6 ],
         [1, 3,  5 , 7 ],
         [8, 10, 12, 14],
         [9, 11, 13, 15]]
    ©r   Úminimum)r   ÚjÚsize_iÚsize_jÚsize_gÚijÚsize_gjÚgroup_idÚoff_iÚnew_iÚnew_js              r   Ú	swizzle2dr<   O   sn   € ð, 
ˆV‰�a‰€Bð �v‰o€Gà�W‰}€Hà�vÑ€EåŒ\˜& 5™.¨&Ñ1Ô1€Fà	ˆg‰€Bà�B˜‘KÑ€EØ�&‰L€EØ�%ˆ<Ðr   c                ó.   — t          j        | d|¦  «        S )a'  
    Returns a tensor filled with the scalar value 0 for the given :code:`shape` and :code:`dtype`.

    :param shape: Shape of the new array, e.g., (8, 16) or (8, )
    :type shape: tuple of ints
    :param dtype: Data-type of the new array, e.g., :code:`tl.float16`
    :type dtype: DType
    r   )r   Úfull)ÚshapeÚdtypes     r   ÚzerosrA   w   s   € õ Œ9�U˜A˜uÑ%Ô%Ð%r   c                ó6   — t          | j        | j        ¦  «        S )z‹
    Returns a tensor of zeros with the same shape and type as a given tensor.

    :param input: input tensor
    :type input: Tensor
    )rA   r?   r@   )Úinputs    r   Ú
zeros_likerD   „   s   € õ �”˜eœkÑ*Ô*Ð*r   c                ó”   — |r| |k    o||k     }nd}| |k    p|}t          j        || |¦  «        }t          j        |||¦  «        }||fS ©NF©r   Úwhere)	Úvalue1Úindex1Úvalue2Úindex2Útie_break_leftÚtieÚgtÚv_retÚi_rets	            r   Ú_argmax_combinerR   ’   sb   € àð Ø˜ÒÐ2 6¨F¢?ˆˆàˆØ	�&ŠÐ	˜C€BÝŒJ�r˜6 6Ñ*Ô*€EÝŒJ�r˜6 6Ñ*Ô*€EØ�%ˆ<Ðr   c                ó(   — t          | |||d¦  «        S ©NT©rR   ©rI   rJ   rK   rL   s       r   Ú_argmax_combine_tie_break_leftrW   ž   ó   € å˜6 6¨6°6¸4Ñ@Ô@Ð@r   c                ó(   — t          | |||d¦  «        S rF   rU   rV   s       r   Ú_argmax_combine_tie_break_fastrZ   £   ó   € å˜6 6¨6°6¸5ÑAÔAÐAr   c                ó,   — t          j        | |¦  «        S ©N)r   Úmaximum©ÚaÚbs     r   Ú_elementwise_maxrb   ¨   ó   € åŒ<˜˜1ÑÔÐr   r^   Úreturn_indicesÚreturn_indices_tie_break_left)Úreturn_indices_argÚtie_break_argTc                ób  — t          j        | ¦  «        } |r<|rt          j        | |t          |¬¦  «        S t          j        | |t          |¬¦  «        S t          j        | j        j        ¦  «        t          j        d¦  «        k     r�t          j        | j                             ¦   «         ¦  «        r |  	                    t           j
        ¦  «        } nB| j                             ¦   «         s
J d¦   «         ‚|  	                    t           j        ¦  «        } t          j        | |t          |¬¦  «        S ©Nr   é    z"Expecting input to be integer type)r   Ú_promote_bfloat16_to_float32Ú_reduce_with_indicesrW   rZ   Ú	constexprr@   Úprimitive_bitwidthÚis_floatingÚtoÚfloat32Úis_intÚint32Úreducerb   ©rC   Úaxisrd   re   r    s        r   r!   r!   ­   s  € õ
 Ô-¨eÑ4Ô4€EØð OØ(ð 	oÝÔ,¨U°DÕ:XÐdmÐnÑnÔnÐnåÔ,¨U°DÕ:XÐdmÐnÑnÔnÐnåŒ>˜%œ+Ô8Ñ9Ô9½D¼NÈ2Ñ<NÔ<NÒNÐNÝŒ~˜eœk×5Ò5Ñ7Ô7Ñ8Ô8ð -ØŸš¥¤Ñ.Ô.��à”{×)Ò)Ñ+Ô+ÐQÐQÐ-QÑQÔQÐ+ØŸš¥¤Ñ,Ô,�ÝŒ{˜5 $Õ(8ÀIÐNÑNÔNÐNr   zmaximum indexrM   )rg   c                ó4   — t          | |d||¬¦  «        \  }}|S ©NT)rd   re   r    )r!   ©rC   rv   rM   r    Ú_Úrets         r   Úargmaxr|   Â   s'   € õ �5˜$¨tÐSaÐmvÐwÑwÔw�H€QˆØ€Jr   c                ó”   — |r| |k    o||k     }nd}| |k     p|}t          j        || |¦  «        }t          j        |||¦  «        }||fS rF   rG   )	rI   rJ   rK   rL   rM   rN   ÚltÚ	value_retÚ	index_rets	            r   Ú_argmin_combiner�   Í   sc   € àð Ø˜ÒÐ2 6¨F¢?ˆˆàˆØ	�&ŠÐ	˜C€BÝ”
˜2˜v vÑ.Ô.€IÝ”
˜2˜v vÑ.Ô.€IØ�iÐÐr   c                ó(   — t          | |||d¦  «        S rT   ©r�   rV   s       r   Ú_argmin_combine_tie_break_leftr„   Ù   rX   r   c                ó(   — t          | |||d¦  «        S rF   rƒ   rV   s       r   Ú_argmin_combine_tie_break_fastr†   Þ   r[   r   c                ó,   — t          j        | |¦  «        S r]   r0   r_   s     r   Ú_elementwise_minrˆ   ã   rc   r   r1   c                ó>  — t          j        | ¦  «        } |r<|rt          j        | |t          |¬¦  «        S t          j        | |t          |¬¦  «        S t          j        | j        j        ¦  «        dk     r�t          j        | j                             ¦   «         ¦  «        r |  	                    t           j
        ¦  «        } nB| j                             ¦   «         s
J d¦   «         ‚|  	                    t           j        ¦  «        } t          j        | |t          |¬¦  «        S ri   )r   rk   rl   r„   r†   rm   r@   rn   ro   rp   rq   rr   rs   rt   rˆ   ru   s        r   ÚminrŠ   è   sý   € õ
 Ô-¨eÑ4Ô4€EØð OØ(ð 	oÝÔ,¨U°DÕ:XÐdmÐnÑnÔnÐnåÔ,¨U°DÕ:XÐdmÐnÑnÔnÐnåŒ>˜%œ+Ô8Ñ9Ô9¸BÒ>Ð>ÝŒ~˜eœk×5Ò5Ñ7Ô7Ñ8Ô8ð -ØŸš¥¤Ñ.Ô.��à”{×)Ò)Ñ+Ô+ÐQÐQÐ-QÑQÔQÐ+ØŸš¥¤Ñ,Ô,�ÝŒ{˜5 $Õ(8ÀIÐNÑNÔNÐNr   zminimum indexc                ó4   — t          | |d||¬¦  «        \  }}|S rx   )rŠ   ry   s         r   ÚargminrŒ   ý   s'   € õ �˜¨TÐQ_ÐktÐuÑuÔu�F€A€sØ€Jr   c                ó   — | |z   S r]   r   r_   s     r   Ú_sum_combinerŽ     ó   € àˆq‰5€Lr   c                óÈ   — |�|S d }|                       ¦   «         r| j        dk     rt          j        nd }n-|                      ¦   «         r| j        dk     rt          j        nd }|S )Nrj   )Úis_int_signedÚint_bitwidthr   rs   Úis_int_unsignedÚuint32)Úin_dtyper@   Ú	out_dtypes      r   Ú_pick_sum_dtyper—     sv   € àÐØˆð €IØ×ÒÑÔð HØ"*Ô"7¸"Ò"<Ð"<•D”J�JÀ$ˆ	ˆ	Ø	×	!Ò	!Ñ	#Ô	#ð HØ#+Ô#8¸2Ò#=Ð#=•D”K�KÀ4ˆ	ØÐr   r"   r@   )Ú	dtype_argúcore.constexprc                ó”   — t          | j        |¦  «        }|�|                      |¦  «        } t          j        | |t
          |¬¦  «        S )Nr   )r—   r@   rp   r   rt   rŽ   )rC   rv   r    r@   r–   s        r   r"   r"     sE   € õ
 !0°´¸UÑ CÔ C€IàÐØ—’˜Ñ#Ô#ˆÝŒ;�u˜d¥L¸IÐFÑFÔFÐFr   c                ó   — | |z  S r]   r   r_   s     r   Ú_xor_combinerœ   (  r�   r   zxor sumc                óž   — t          j        | j        j                             ¦   «         d¦  «         t          j        | |t          |¬¦  «        S )Nz#xor_sum only supported for integersr   )r   Ústatic_assertÚtypeÚscalarrr   rt   rœ   ©rC   rv   r    s      r   Úxor_sumr¢   0  sB   € õ 	Ô�u”zÔ(×/Ò/Ñ1Ô1Ð3XÑYÔYÐYÝŒ;�u˜d¥L¸IÐFÑFÔFÐFr   c                ó   — | |z  S r]   r   )r   Úys     r   Ú_or_combiner¥   ;  r�   r   Ú	reduce_orc                óž   — t          j        | j        j                             ¦   «         d¦  «         t          j        | |t          |¬¦  «        S )Nz%reduce_or only supported for integersr   )r   rž   rŸ   r    rr   rt   r¥   r¡   s      r   r¦   r¦   @  sB   € õ 	Ô�u”zÔ(×/Ò/Ñ1Ô1Ð3ZÑ[Ô[Ð[ÝŒ;�u˜d¥K¸9ÐEÑEÔEÐEr   Úcumsumc                óº   — t          j        | ¦  «        } t          | j        |¦  «        }|�|                      |¦  «        } t          j        | |t          |¦  «        S r]   )r   rk   r—   r@   rp   Úassociative_scanrŽ   )rC   rv   Úreverser@   r–   s        r   r¨   r¨   K  sS   € õ Ô-¨eÑ4Ô4€EÝ /°´¸UÑ CÔ C€IàÐØ—’˜Ñ#Ô#ˆåÔ  ¨­l¸GÑDÔDÐDr   c                ó   — | |z  S r]   r   r_   s     r   Ú_prod_combiner­   ]  r�   r   Úcumprodc                ób   — t          j        | ¦  «        } t          j        | |t          |¦  «        S r]   )r   rk   rª   r­   )rC   rv   r«   s      r   r®   r®   b  s+   € õ
 Ô-¨eÑ4Ô4€EÝÔ  ¨­m¸WÑEÔEÐEr   Ún_dimsr2   c                ó„   — t          j        dd¦  «        }t          j        |dg| |z
  dz
  z  dgz   dg|z  z   ¦  «        }|S )Nr   r   r   )r   Úaranger,   )r°   r2   Úars      r   Ú
_indicatorr´   n  sJ   € å	Œ�Q˜Ñ	Ô	€BÝ	Œ�b˜1˜# ¨!¡¨a¡Ñ0°A°3Ñ6¸!¸¸q¹Ñ@Ñ	AÔ	A€BØ€Ir   r   c                ó`  — t          | j        ¦  «        }t          | j        j        d¬¦  «        }|                      |d¬¦  «        }|t          ||dz
  |z
  d¦  «        z  }|                     | j        d¬¦  «        }t          ||¦  «        }t          j	        | |k    ||z  k    || ¦  «        }	|	S )NT©ÚbitwidthÚsigned©Úbitcastr   )
r   r-   Ú_get_int_dtyper@   rn   rp   r¢   r´   r   rH   )
r   Úflipr   r°   ÚidtypeÚixÚiyr¤   Úis_rightr{   s
             r   Ú_compare_and_swaprÁ   u  s¬   € õ # 1¤7™^œ^€Fõ  Q¤WÔ%?ÈÐMÑMÔM€FØ	
�Šˆf˜dˆÑ	#Ô	#€BØ	�g�b˜& 1™* q™.¨$Ñ/Ô/Ñ	/€BØ
�ŠˆaŒg˜tˆÑ$Ô$€Aõ ˜& !Ñ$Ô$€Hõ Œ*�a˜!’e ¨¡Ò1°1°aÑ
8Ô
8€CØ€Jr   ÚstageÚorderc                ó¸   — |dk    r#t          t          | j        ¦  «        |¦  «        }n|}t          j        |¦  «        D ]}t          | ||dz
  |z
  ¦  «        } Œ| S )zb
    order_type 0 == ascending
    order_type 1 == descending
    order_type 2 == alternating
    r   r   )r´   r   r-   r   Ústatic_rangerÁ   )r   rÂ   rÃ   r¼   r   s        r   Ú_bitonic_merge_hypercuberÆ   ˆ  se   € ð �‚z€zÝ�% ¤™.œ.¨%Ñ0Ô0ˆˆàˆåÔ˜uÑ%Ô%ð 6ð 6ˆÝ˜a  u¨q¡y°1¡}Ñ5Ô5ˆˆØ€Hr   c                ó²   — t          j        | dgt          | j        ¦  «        z  ¦  «        }t	          |||¦  «        }t          j        || j        ¦  «        } | S )Nr   )r   r,   r   r-   rÆ   r?   )r   rÂ   rÃ   r°   Úhs        r   Ú_bitonic_mergerÉ   ž  sK   € åŒ�Q˜˜�e A¤G™nœnÑ,Ñ-Ô-€AÝ   E¨5Ñ1Ô1€AÝŒ�Q˜œÑ Ô €AØ€Hr   Úkr$   Ú
descendingc                ó&  — |€t          | j        ¦  «        dz
  n|}t          j        |t          | j        ¦  «        dz
  k    d¦  «         t	          | j        |         ¦  «        }|€|nt	          |¦  «        }t	          | j        ¦  «        }t          j        | |rdg|z  ndg¦  «        }t          j        d|dz   ¦  «        D ]}	t          ||	|	|k     rdn|¦  «        }Œt          j        |dz   |dz   ¦  «        D ]o}	|r)t          |t	          |j        ¦  «        dz
  |z
  ¬¦  «        n(t          |t	          |j        ¦  «        dz
  |z
  ¬¦  «        }t          |||	|k     rdn|¦  «        }Œpt          j        || j        dd…         d|z  gz   ¦  «        } | S )ai  
    Sorts a tensor along a specified dimension.

    :param x: The input tensor to be sorted.
    :type x: Tensor
    :param dim: The dimension along which to sort the tensor. If None, the tensor is sorted along the last dimension. Currently, only sorting along the last dimension is supported.
    :type dim: int, optional
    :param k: the number of top elements to select. If none, assume k = x.shape[dim]
    :type k: int, optional
    :param descending: If set to True, the tensor is sorted in descending order. If set to False, the tensor is sorted in ascending order.
    :type descending: bool, optional
    Nr   ú+only minor dimension is currently supportedr   )rv   éÿÿÿÿ)Úlenr?   r   rž   r   r-   r,   rÅ   rÆ   r!   rŠ   )
r   rÊ   r$   rË   r&   Úlog_nÚlog_kr°   rÈ   r   s
             r   Ú	sort_implrÒ   ¦  s§  € ð 03¨{�3˜qœw™<œ<¨!Ñ+Ð+À€DÝÔ�t�s 1¤7™|œ|¨aÑ/Ò/Ð1^Ñ_Ô_Ð_å! !¤'¨$¤-Ñ0Ô0€EØ%& Y˜E˜EµE¸!±H´H€Eå" 1¤7™^œ^€Fõ 	Œ�Q¨Ð7˜˜˜f™˜°Q°CÑ8Ô8€Aõ Ô˜q %¨!¡)Ñ,Ô,ð Kð KˆÝ$ Q¨°°E²	°	¨1¨1¸zÑJÔJˆˆõ Ô˜u q™y¨%°!©)Ñ4Ô4ð Oð OˆØ9CÐr�C��˜qœw™œ¨!Ñ+¨eÑ3Ð5Ñ5Ô5Ð5ÍÈQÕV[Ð\]Ô\cÑVdÔVdÐghÑVhÐkpÑVpÐIrÑIrÔIrˆÝ$ Q¨°A¸²I°I¨q¨qÀ:ÑNÔNˆˆõ 	Œ�Q˜œ   œ¨¨5© zÑ1Ñ2Ô2€AØ€Hr   c                ó&   — t          | ||¬¦  «        S )N)r$   rË   ©rÒ   )r   r$   rË   s      r   ÚsortrÕ   Ï  s   € å�Q˜C¨JÐ7Ñ7Ô7Ð7r   c                ó(   — t          | ||d¬¦  «        S )að  
    Returns the k largest elements of the input tensor along the specified dimension.

    The elements are returned in sorted order (largest first).

    :param x: The input tensor.
    :type x: Tensor
    :param k: The number of top elements to return. Must be a power of two.
    :type k: int
    :param dim: The dimension along which to find the top k elements.
                If None, uses the last dimension. Currently only the last dimension is supported.
    :type dim: int, optional
    :return: A tensor containing the k largest elements along the specified dimension.
    :rtype: Tensor

    Example::

        # Get top 4 elements from a 1D tensor
        x = tl.arange(0, 16)
        top4 = tl.topk(x, 4)  # Returns [15, 14, 13, 12]
    T)rÊ   r$   rË   rÔ   )r   rÊ   r$   s      r   Útopkr×   Ô  s   € õ. �Q˜! °Ð6Ñ6Ô6Ð6r   c                óì   — |€t          | j        ¦  «        dz
  n|}t          j        |t          | j        ¦  «        dz
  k    d¦  «         t	          | j        d         ¦  «        }t          | |||¦  «        S )Nr   rÍ   rÎ   )rÏ   r?   r   rž   r   rÉ   )r   r$   rË   r&   r°   s        r   Úbitonic_mergerÙ   î  sl   € ð 03¨{�3˜qœw™<œ<¨!Ñ+Ð+À€DÝÔ�t�s 1¤7™|œ|¨aÑ/Ò/Ð1^Ñ_Ô_Ð_Ý" 1¤7¨2¤;Ñ/Ô/€FÝ˜!˜V Z°Ñ8Ô8Ð8r   c                ó^   — | €t          |¦  «        dz
  } | dk     r| t          |¦  «        z  } | S r   )rÏ   )r$   r?   s     r   Ú_get_flip_dimrÛ   ÷  s4   € à
€{Ý�%‰jŒj˜1‰nˆØ
ˆQ‚w€wØ�s�5‰zŒzÑˆØ€Jr   c                óÞ  — t          j        t          | j        ¦  «         |k    o|t          | j        ¦  «        k     ¦  «         t	          || j        ¦  «        }t          j        t          | j        |         ¦  «        ¦  «         t          | j        |         ¦  «        }t          | j        j	        d¬¦  «        }t          j
        |                      |d¬¦  «        | j        d|…         dg|z  z   | j        |dz   d…         z   ¦  «        }t          j        |¦  «        D ]}|t          |||z   d¦  «        z  }Œt          j
        || j        ¦  «                             | j        d¬¦  «        } | S )z¯
    Flips a tensor `x` along the dimension `dim`.

    :param x: the first input tensor
    :type x: Block
    :param dim: the dimension to flip along
    :type dim: int
    Tr¶   r¹   Nr   r   )r   rž   rÏ   r?   rÛ   r   r   r»   r@   rn   r,   rp   rÅ   r¢   )r   r$   r&   Ústepsr½   r¤   r   s          r   r¼   r¼      sG  € õ 	Ô�˜AœG™œ�}¨Ò+ÐB°µc¸!¼'±l´lÒ0BÑCÔCÐCÝ(¨¨a¬gÑ6Ô6€DÝÔÕ'¨¬°¬Ñ6Ô6Ñ7Ô7Ð7Ý! !¤'¨$¤-Ñ0Ô0€Eõ  Q¤WÔ%?ÈÐMÑMÔM€FÝŒ�Q—T’T˜&¨$�TÑ/Ô/°´¸¸$¸´À1À#ÈÁ+Ñ1MÐPQÔPWÐX\Ð_`ÑX`ÐXaÐXaÔPbÑ1bÑcÔc€AÝÔ˜uÑ%Ô%ð +ð +ˆØ•˜˜4 !™8 TÑ*Ô*Ñ*ˆˆÝŒ�Q˜œÑ Ô ×#Ò# A¤G°TÐ#Ñ:Ô:€AØ€Hr   c                óÈ   — t          j        | |¦  «        }t          |j        ¦  «        dk    r|S t          j        ||j        dd…         d|j        d         z  gz   ¦  «        S )a7  
    Interleaves the values of two tensors along their last dimension. The two tensors must have the same shape.
    Equivalent to `tl.join(a, b).reshape(a.shape[:-1] + [2 * a.shape[-1]])`

    :param a: The first input tensor.
    :type a: Tensor
    :param b: The second input tensor.
    :type b: Tensor
    r   Néþÿÿÿr   )r   ÚjoinrÏ   r?   r,   )r`   ra   Úcs      r   Ú
interleaverâ     s[   € õ 	Œ	�!�Q‰Œ€Aå
ˆ1Œ7�|„|�qÒÐàˆõ
 Œ|˜A˜qœw s¨ sœ|¨q°1´7¸2´;©Ð.?Ñ?Ñ@Ô@Ð@r   c                ó²   — t          j        | j        |         dk    ¦  «         |                      | j        d |…         | j        |dz   d …         z   ¦  «        S r   )r   rž   r?   r,   ©r   r$   s     r   Úsqueezerå   0  sN   € åÔ�q”w˜s”| qÒ(Ñ)Ô)Ð)Ø�9Š9�Q”W˜T˜c˜T”] Q¤W¨S°1©W¨X¨XÔ%6Ñ6Ñ7Ô7Ð7r   c                ól   — |                       | j        d |…         dz   | j        |d …         z   ¦  «        S )N)r   )r,   r?   rä   s     r   Ú	unsqueezerç   6  s2   € à�9Š9�Q”W˜T˜c˜T”] UÑ*¨Q¬W°S°T°T¬]Ñ:Ñ;Ô;Ð;r   )NFF)F)NFTF)TF)NFN)r@   r™   rF   )r   FN)r   F)r°   r™   r2   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™   );Ú
__future__r   Úruntime.jitr   r   Ú r   r	   r   r   Úget_int_dtyper»   Ú_tensor_member_fnr   Ú_add_math_1arg_docstrr   r   r.   r<   rA   rD   rR   rW   rZ   rb   Ú_add_reduction_docstrr!   r|   r�   r„   r†   rˆ   rŠ   rŒ   rŽ   r—   r"   rœ   r¢   r¥   r¦   Ú_add_scan_docstrr¨   r­   r®   r´   rÁ   rÆ   rÉ   ÚCONSTEXPR_0rÒ   rÕ   r×   rÙ   rÛ   r¼   râ   rå   rç   r   r   r   ú<module>rñ      s   ðØ "Ð "Ð "Ð "Ð "Ð "à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð
 ðð ñ Ôðð ð)ð )ñ Ôð)ð $Ð# DÔ$6Ñ7Ô7€ð ÔØð	"ð 	"ñ „ñ Ôð	"ð ÔØØ€Ô˜IÑ&Ô&ð"ð "ñ 'Ô&ñ „ñ Ôð"ð ÔØØ€Ô˜IÑ&Ô&ð.ð .ð .ñ 'Ô&ñ „ñ Ôð.ð ÔØð?ð ?ð ?ñ „ñ Ôð?ð ð$ð $ñ „ð$ðN ð	&ð 	&ñ „ð	&ð ð+ð +ñ „ð+ð ðð ñ „ðð ðAð Añ „ðAð ðBð Bñ „ðBð ðð ñ „ðð ÔØØ€Ô˜IÐ:JØ*IðKñ Kô KðOð Oð OñKô Kñ „ñ ÔðOð" ÔØØ€Ô˜OÐ;KÐLÑLÔLðð ð ñ MÔLñ „ñ Ôðð ð ð  ñ „ð ð ðAð Añ „ðAð ðBð Bñ „ðBð ðð ñ „ðð ÔØØ€Ô˜IÐ:JØ*IðKñ Kô KðOð Oð OñKô Kñ „ñ ÔðOð" ÔØØ€Ô˜OÐ;KÐLÑLÔLðð ð ñ MÔLñ „ñ Ôðð
 ðð ñ „ðð ðð ñ Ôðð ÔØØ€Ô˜E¨WÐ5Ñ5Ô5ðGð Gð Gð Gñ 6Ô5ñ „ñ ÔðGð ðð ñ „ðð ÔØØ€Ô˜IÑ&Ô&ðGð Gð Gñ 'Ô&ñ „ñ ÔðGð ðð ñ „ðð ÔØØ€Ô˜KÑ(Ô(ðFð Fð Fñ )Ô(ñ „ñ ÔðFð ÔØØ€Ô�x¨7Ð3Ñ3Ô3ð	Eð 	Eð 	Eð 	Eñ 4Ô3ñ „ñ Ôð	Eð ðð ñ „ðð ÔØØ€Ô�yÑ!Ô!ðFð Fð Fñ "Ô!ñ „ñ ÔðFð ðð ð ñ „ðð ðð ð ñ „ðð$ ðð ð ñ „ðð* ðð ð ñ „ðð Ø%)ÀÐdhÔdtð %ð %ð %ð %ñ „ð%ðP Ø"&ÀTÔEUð 8ð 8ð 8ð 8ñ „ð8ð ð7ð 7ð 7ð 7ñ „ð7ð2 Ø+/ÈdÔN^ð 9ð 9ð 9ð 9ñ „ð9ð ðð ñ Ôðð ÔØðð ð ñ „ñ Ôðð. ðAð Añ „ðAð, ð8ð 8ð 8ñ „ð8ð
 ð<ð <ð <ñ „ð<ð <ð <r   