§
    ŠŠtjÑ$  ã                   óô  — d dl Z d dlmZ d dlmZ d dlmZ d dlZd dlmZ d dl	m
Z
mZmZ eez  Zeeedf         z  Zdeedz           d	ed
efd„Zdeeedf         z  d
efd„Zdededeg ef         d
efd„Zdedededed
eeef         f
d„Z	 d$deeedf         z  dededededed
efd„Zdeded
dfd„Zdeded
dfd„Zdefd„Z ed e¬!¦  «        d%dededed
efd"„¦   «         Z	 	 	 d&dedededed
ef
d#„ZdS )'é    N)ÚCallable)ÚAny)Ú
deprecated)ÚTensor)Ú_broadcast_to_and_flattenÚtree_flattenÚtree_unflatten.Úflat_in_dimsÚ	flat_argsÚreturnc                 ó¨   ‡— d„ t          | |¦  «        D ¦   «         Š‰r.t          ˆfd„‰D ¦   «         ¦  «        rt          d‰› d�¦  «        ‚‰d         S )Nc                 óB   — g | ]\  }}|®|                      |¦  «        ‘ŒS ©N)Úsize)Ú.0Úin_dimÚargs      úS/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_vmap_internals.pyú
<listcomp>z0_validate_and_get_batch_size.<locals>.<listcomp>   s8   € ð ð ð áˆF�CØÐð 	�Š�ÑÔàÐÐó    c              3   ó0   •K  — | ]}|‰d          k    V — ŒdS )r   N© )r   r   Úbatch_sizess     €r   ú	<genexpr>z/_validate_and_get_batch_size.<locals>.<genexpr>   s,   øè è € ÐJÐJ°d˜4 ;¨q¤>Ò1ÐJÐJÐJÐJÐJÐJr   zTvmap: Expected all tensors to have the same size in the mapped dimension, got sizes z for the mapped dimensionr   )ÚzipÚanyÚ
ValueError)r
   r   r   s     @r   Ú_validate_and_get_batch_sizer      s’   ø€ ðð å˜|¨YÑ7Ô7ðñ ô €Kð
 ð 
•sÐJÐJÐJÐJ¸kÐJÑJÔJÑJÔJð 
ÝðKØ$/ðKð Kð Kñ
ô 
ð 	
ð �qŒ>Ðr   Úbatched_outputsc                 óN   — t          | t          ¦  «        rt          | ¦  «        S dS )Né   )Ú
isinstanceÚtupleÚlen)r   s    r   Ú_num_outputsr%   "   s'   € Ý�/¥5Ñ)Ô)ð $Ý�?Ñ#Ô#Ð#Øˆ1r   ÚvalueÚnum_elementsÚerror_message_lambdac                 ó�   — t          | t          ¦  «        s| f|z  S t          | ¦  «        |k    rt           |¦   «         ¦  «        ‚| S r   )r"   r#   r$   r   )r&   r'   r(   s      r   Ú	_as_tupler*   *   sQ   € õ
 �e�UÑ#Ô#ð 'Øˆx˜,Ñ&Ð&Ý
ˆ5�z„z�\Ò!Ð!ÝÐ-Ð-Ñ/Ô/Ñ0Ô0Ð0Ø€Lr   Úin_dimsÚargsÚ
vmap_levelÚfuncc                 óª  ‡— t          | t          ¦  «        sHt          | t          ¦  «        s3t          dt	          |¦  «        › d| › dt          | ¦  «        › d�¦  «        ‚t          |¦  «        dk    r t          dt	          |¦  «        › d�¦  «        ‚t          |¦  «        \  }}t          | |¦  «        }|€<t          dt	          |¦  «        › d| › dt          | ¦  «        d         › d	|› d�	¦  «        ‚t          ||¦  «        D �]\  }}t          |t          ¦  «        s(|�&t          dt	          |¦  «        › d| › d
|› d�¦  «        ‚t          |t          ¦  «        rKt          |t          ¦  «        s6t          dt	          |¦  «        › d| › d
|› dt          |¦  «        › d�	¦  «        ‚|�n|dk     s||                     ¦   «         k    rPt          dt	          |¦  «        › d| › d
|› d|                     ¦   «         › d|                     ¦   «         › d�¦  «        ‚�Œt          ||¦  «        }	ˆfd„t          ||¦  «        D ¦   «         }
t          |
|¦  «        |	fS )Núvmap(z
, in_dims=zv, ...)(<inputs>): expected `in_dims` to be int or a (potentially nested) tuple matching the structure of inputs, got: ú.r   z�)(<inputs>): got no inputs. Maybe you forgot to add inputs, or you are trying to vmap over a function with no inputs. The latter is unsupported.zb, ...)(<inputs>): in_dims is not compatible with the structure of `inputs`. in_dims has structure r!   z but inputs has structure z, ...)(<inputs>): Got in_dim=zE for an input but in_dim must be either an integer dimension or None.z' for an input but the input is of type zT. We cannot vmap over non-Tensor arguments, please use None as the respective in_dimz> for some input, but that input is a Tensor of dimensionality z- so expected in_dim to satisfy 0 <= in_dim < c                 óJ   •— g | ]\  }}|€|nt          j        ||‰¦  «        ‘Œ S r   )ÚtorchÚ_add_batch_dim)r   r   r   r-   s      €r   r   z*_create_batched_inputs.<locals>.<listcomp>m   sD   ø€ ð ð ð áˆF�Cð ˆ~ˆˆ¥5Ô#7¸¸VÀZÑ#PÔ#Pðð ð r   )r"   Úintr#   r   Ú	_get_nameÚtyper$   r   r   r   r   Údimr   r	   )r+   r,   r-   r.   r   Ú	args_specr
   r   r   Ú
batch_sizeÚbatched_inputss     `        r   Ú_create_batched_inputsr<   8   s4  ø€ õ �g�sÑ#Ô#ð 
­J°wÅÑ,FÔ,Fð 
ÝðG•I˜d‘O”Oð Gð G¨wð Gð Gå6:¸7±m´mðGð Gð Gñ
ô 
ð 	
õ
 ˆ4�y„y�A‚~€~Ýð*•I˜d‘O”Oð *ð *ð *ñ
ô 
ð 	
õ (¨Ñ-Ô-Ñ€IˆyÝ,¨W°iÑ@Ô@€LØÐÝð*•I˜d‘O”Oð *ð *¨wð *ð *å%1°'Ñ%:Ô%:¸1Ô%=ð*ð *ð 'ð*ð *ð *ñ
ô 
ð 	
õ ˜9 lÑ3Ô3ð ñ ‰ˆˆVÝ˜&¥#Ñ&Ô&ð 	¨6Ð+=Ýð1�	 $™œð 1ð 1°7ð 1ð 1Ø$ð1ð 1ð 1ñô ð õ
 �f�cÑ"Ô"ð 	­:°c½6Ñ+BÔ+Bð 	Ýð<�	 $™œð <ð <°7ð <ð <Ø$ð<ð <å˜‘9”9ð<ð <ð <ñô ð ð Ð 6¨A¢: :°¸3¿7º7¹9¼9Ò1DÐ1DÝð.�	 $™œð .ð .°7ð .ð .Ø$ð.ð .à%(§W¢W¡Y¤Yð.ð .ð "%§¢¡¤ð.ð .ð .ñô ð ùõ .¨l¸IÑFÔF€Jðð ð ð å˜|¨YÑ7Ô7ðñ ô €Nõ ˜.¨)Ñ4Ô4°jÐ@Ð@r   FÚout_dimsr:   Úallow_none_pass_throughc                 ój  ‡‡‡‡‡— t          | ¦  «        Št          ‰‰ˆˆˆfd„¦  «        }t          | t          ¦  «        r|d         }t	          j        | ‰‰|¦  «        S |r*t          ˆˆfd„t          | |¦  «        D ¦   «         ¦  «        S t          ˆˆfd„t          | |¦  «        D ¦   «         ¦  «        S )Nc            
      óV   •— dt          ‰ ¦  «        › d‰› d‰› dt          ‰ ¦  «        › d�	S )Nr0   ú, ..., out_dims=z0): `out_dims` must have one dim per output (got z outputs) of r1   )r6   )r.   Únum_outputsr=   s   €€€r   ú<lambda>z!_unwrap_batched.<locals>.<lambda>�   sW   ø€ ð U�	 $™œð Uð U¸ð Uð UØ(3ðUð UÝBKÈDÁ/Ä/ðUð Uð U€ r   r   c              3   óT   •K  — | ]"\  }}|�t          j        |‰‰|¦  «        nd V — Œ#d S r   ©r3   Ú_remove_batch_dim©r   ÚoutÚout_dimr:   r-   s      €€r   r   z"_unwrap_batched.<locals>.<genexpr>Œ   s[   øè è € ð 
ð 
ñ ��Wð �?õ Ô'¨¨Z¸ÀWÑMÔMÐMàð	
ð 
ð 
ð 
ð 
ð 
r   c              3   óL   •K  — | ]\  }}t          j        |‰‰|¦  «        V — Œd S r   rE   rG   s      €€r   r   z"_unwrap_batched.<locals>.<genexpr>•   sL   øè è € ð 
ð 
á��Wõ Ô# C¨°ZÀÑIÔIð
ð 
ð 
ð 
ð 
ð 
r   )r%   r*   r"   r   r3   rF   r#   r   )	r   r=   r-   r:   r.   r>   Úout_dims_as_tuplerI   rB   s	    ````   @r   Ú_unwrap_batchedrL   u   s#  øøøøø€ õ ˜Ñ/Ô/€KÝ!ØØð	Uð 	Uð 	Uð 	Uð 	Uð 	Uñô Ðõ �/¥6Ñ*Ô*ð YØ# AÔ&ˆÝÔ& ¸
ÀJÐPWÑXÔXÐXØð 
Ýð 
ð 
ð 
ð 
ð 
õ !$ OÐ5FÑ GÔ Gð
ñ 
ô 
ñ 
ô 
ð 	
õ ð 
ð 
ð 
ð 
ð 
å # OÐ5FÑ GÔ Gð
ñ 
ô 
ñ 
ô 
ð 	
r   Úoutputsc                 ó¸  — t          | t          ¦  «        rd S t          | t          ¦  «        s@t          dt	          |¦  «        › dt	          |¦  «        › dt          | ¦  «        › d�¦  «        ‚t          | ¦  «        D ]]\  }}t          |t          ¦  «        rŒt          dt	          |¦  «        › dt	          |¦  «        › dt          |¦  «        › d|› d�	¦  «        ‚d S )Nr0   z	, ...): `z%` must only return Tensors, got type z as the return.z for return r1   )r"   r   r#   r   r6   r7   Ú	enumerate)rM   r.   ÚidxÚoutputs       r   Ú_validate_outputsrR   Ÿ   s,  € Ý�'�6Ñ"Ô"ð ØˆÝ�g�uÑ%Ô%ð 
Ýð@•I˜d‘O”Oð @ð @­i¸©o¬oð @ð @Ý!% g¡¤ð@ð @ð @ñ
ô 
ð 	
õ ! Ñ)Ô)ð 
ð 
‰ˆˆVÝ�f�fÑ%Ô%ð 	ØÝðB•I˜d‘O”Oð Bð B­i¸©o¬oð Bð BÝ!% f¡¤ðBð BØ;>ðBð Bð Bñ
ô 
ð 	
ð
ð 
r   c                 óÖ   — t          | t          ¦  «        rd S t          | t          ¦  «        rt          d„ | D ¦   «         ¦  «        s#t	          dt          |¦  «        › d| › d�¦  «        ‚d S )Nc              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S r   )r"   r5   )r   rI   s     r   r   z6_check_out_dims_is_int_or_int_tuple.<locals>.<genexpr>³   s=   è è € ð 2ð 2Ø%,�
�7�CÑ Ô ð2ð 2ð 2ð 2ð 2ð 2r   r0   rA   zu): `out_dims` must be an int or a tuple of int representing where in the outputs the vmapped dimension should appear.)r"   r5   r#   Úallr   r6   )r=   r.   s     r   Ú#_check_out_dims_is_int_or_int_tuplerV   °   sž   € Ý�(�CÑ Ô ð ØˆÝ�h¥Ñ&Ô&ð 
­cð 2ð 2Ø08ð2ñ 2ô 2ñ /ô /ð 
õ ð0•I˜d‘O”Oð 0ð 0°Xð 0ð 0ð 0ñ
ô 
ð 	
ð
ð 
r   c                 óN   — t          | d¦  «        r| j        S t          | ¦  «        S )NÚ__name__)ÚhasattrrX   Úrepr)r.   s    r   r6   r6   ½   s*   € Ýˆt�ZÑ Ô ð ØŒ}Ðõ
 �‰:Œ:Ðr   z@Please use `torch.vmap` instead of `torch._vmap_internals.vmap`.)Úcategoryc                 ó$   — t          | ||¦  «        S )z4
    Please use torch.vmap instead of this API.
    )Ú_vmap)r.   r+   r=   s      r   Úvmapr^   Ê   s   € õ ��w Ñ)Ô)Ð)r   c                 óR   ‡ ‡‡‡— t          j        ‰ ¦  «        ˆˆ ˆˆfd„¦   «         }|S )Nc                  óf  •— t          ‰‰¦  «         t          j                             ¦   «         }	 t	          ‰| |‰¦  «        \  }} ‰|Ž }‰st          |‰¦  «         t          |‰||‰‰¬¦  «        t          j                             ¦   «          S # t          j                             ¦   «          w xY w)N)r>   )rV   r3   Ú_CÚ_vmapmode_increment_nestingr<   rR   rL   Ú_vmapmode_decrement_nesting)	r,   r-   r;   r:   r   r>   r.   r+   r=   s	        €€€€r   Úwrappedz_vmap.<locals>.wrappedà   sÅ   ø€ å+¨H°dÑ;Ô;Ð;Ý”X×9Ò9Ñ;Ô;ˆ
ð	3Ý)?Ø˜˜z¨4ñ*ô *Ñ&ˆN˜Jð #˜d NÐ3ˆOØ*ð 9Ý! /°4Ñ8Ô8Ð8Ý"ØØØØØØ(?ðñ ô õ ŒH×0Ò0Ñ2Ô2Ð2Ð2ø�EŒH×0Ò0Ñ2Ô2Ð2Ð2øøøs   ±A B Â B0)Ú	functoolsÚwraps)r.   r+   r=   r>   rd   s   ```` r   r]   r]   Ö   sL   øøøø€ õ „_�TÑÔð3ð 3ð 3ð 3ð 3ð 3ð 3ñ Ôð3ð* €Nr   )F)r   r   )r   r   F)re   Úcollections.abcr   Útypingr   Útyping_extensionsr   r3   r   Útorch.utils._pytreer   r   r	   r5   r#   Ú	in_dims_tÚ
out_dims_tÚlistr   r%   Ústrr*   r<   ÚboolrL   rR   rV   r6   ÚFutureWarningr^   r]   r   r   r   ú<module>rq      s.  ðà Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (à €€€Ø Ð Ð Ð Ð Ð Ø WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ Wð �%‰K€	Ø�5˜˜c˜”?Ñ"€
ðØ�s˜T‘zÔ"ðàðð 	ðð ð ð ð" &¨5°¸°Ô+=Ñ"=ð À#ð ð ð ð ð	Øð	àð	ð # 2 s 7Ô+ð	ð ð		ð 	ð 	ð 	ð9AØð9Aà
ð9Að ð9Að ð	9Að
 ˆ5�#ˆ:Ôð9Að 9Að 9Að 9AðF %*ð#
ð #
Ø˜e F¨C KÔ0Ñ0ð#
àð#
ð ð#
ð ð	#
ð
 ð#
ð "ð#
ð ð#
ð #
ð #
ð #
ðT
˜sð 
¨(ð 
°tð 
ð 
ð 
ð 
ð"

°*ð 

ÀHð 

ÐQUð 

ð 

ð 

ð 

ð�Hð ð ð ð ð €ØFØðñ ô ð*ð *ˆxð * )ð *¸:ð *Èhð *ð *ð *ñ	ô ð*ð ØØ$)ð	 ð  Ø
ð àð ð ð ð "ð	 ð
 ð ð  ð  ð  ð  ð  r   