Ë
    ›¾jÅ  ã                   ó>  — d dl mZmZmZmZ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  ede¬«      Z ed	e¬«      Z ej$                  d
«      de
eef   de
eef   de
de
eef   fd„«       Zde
eef   dededeeef   fd„Z	 dde
eef   dee   dee   ddfd„Zy)é    )ÚAnyÚCallableÚDictÚOptionalÚTupleÚTypeVaré   )Úregistry)ÚModel)ÚArrayXdÚ
XY_XY_OutT)Ú	get_widthÚInT)ÚboundÚOutTzadd.v1Úlayer1Úlayer2ÚlayersÚreturnc                 óæ   — | |f|z   }|d   j                   dk(  r&|d   j                  j                  |dd «       |d   S ddi}t        d„ |D «       «      rdddœ}t	        dt
        t        ||¬«      S )	z�Compose two or more models `f`, `g`, etc, such that their outputs are
    added, i.e. `add(f, g)(x)` computes `f(x) + g(x)`.
    r   Úaddé   NÚnOc              3   óB   K  — | ]  }|j                  d «      dv –— Œ y­w)ÚnI)TNN)Úhas_dim)Ú.0Únodes     úZ/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/thinc/layers/add.pyú	<genexpr>zadd.<locals>.<genexpr>   s   è ø€ Ò
A°$ˆ4�<‰<˜Ó Ô-Ñ
Aùs   ‚)r   r   )ÚinitÚdimsr   )Únamer   ÚextendÚallr   Úforwardr!   )r   r   r   r"   s       r   r   r      s�   € ð �fÐ Ñ&€FØˆa�y‡~�~˜ÒØˆq‰	×Ñ×Ñ  q r 
Ô+Ø�a‰yÐð '+¨D \€DÜ
Ñ
A¸&Ô
AÔAØ $Ñ'ˆä�œ¤d°¸fÔEÐEó    ÚmodelÚXÚis_trainc                 óü   ‡‡	— | j                   s|d„ fS  | j                   d   ||¬«      \  }Š	g Š| j                   dd  D ]%  } |||¬«      \  }}||z  }‰j                  |«       Œ' dt        dt        fˆˆ	fd„}||fS )Nc                 ó   — | S ©N© )ÚdYs    r   ú<lambda>zforward.<locals>.<lambda>"   s   € ˜R€ r'   r   )r*   r   r/   r   c                 ó<   •—  ‰| «      }‰D ]  }| || «      z  }Œ |S r-   r.   )r/   ÚdXÚcallbackÚ	callbacksÚfirst_callbacks      €€r   Úbackpropzforward.<locals>.backprop*   s/   ø€ Ù˜BÓˆØ!ò 	ˆHØ‘(˜2“,Ñ‰Bð	àˆ	r'   )r   Úappendr   r   )
r(   r)   r*   ÚYÚlayerÚlayer_YÚlayer_callbackr6   r4   r5   s
           @@r   r&   r&       s–   ù€ Ø�<Š<Ø‘-ÐÐØ'˜Ÿ™ Q™¨°HÔ=Ñ€A€~Ø€IØ—‘˜a˜bÐ!ò )ˆÙ"'¨°HÔ"=Ñˆ�Ø	ˆW‰ˆØ×Ñ˜Õ(ð)ð
”Sð œTö ð ˆhˆ;Ðr'   Nr8   c                 óh  — |�n| j                  d«      dur| j                  dt        |«      «       | j                  D ]1  }|j                  d«      dusŒ|j                  dt        |«      «       Œ3 |�n| j                  d«      dur| j                  dt        |«      «       | j                  D ]1  }|j                  d«      dusŒ|j                  dt        |«      «       Œ3 | j                  D ]  }|j	                  ||¬«       Œ | j                  d| j                  d   j                  d«      «       y )Nr   Fr   )r)   r8   r   )r   Úset_dimr   r   Ú
initializeÚget_dim)r(   r)   r8   r9   s       r   r!   r!   3   s  € ð 	€}Ø�=‰=˜Ó eÑ+Ø�M‰M˜$¤	¨!£Ô-Ø—\‘\ò 	2ˆEØ�}‰}˜TÓ"¨%Ò/Ø—‘˜d¤I¨a£LÕ1ð	2ð 	€}Ø�=‰=˜Ó eÑ+Ø�M‰M˜$¤	¨!£Ô-Ø—\‘\ò 	2ˆEØ�}‰}˜TÓ"¨%Ò/Ø—‘˜d¤I¨a£LÕ1ð	2ð —‘ò #ˆØ×Ñ˜1 ÐÕ"ð#à	‡M�M�$˜Ÿ™ Q™×/Ñ/°Ó5Õ6r'   )NN)Útypingr   r   r   r   r   r   Úconfigr
   r(   r   Útypesr   r   Úutilr   r   r   r   r   Úboolr&   r!   r.   r'   r   ú<module>rE      sÿ   ðß @× @å Ý ß 'Ý áˆe˜3Ô€Ùˆv˜WÔ%€ð €‡��ÓðFØ�#�t�)ÑðFØ&+¨C°¨IÑ&6ðFØAFðFà
ˆ3�
ˆ?ÑòFó ðFð&�5˜˜d˜Ñ#ð ¨ð °tð ÀÀdÈHÀnÑ@Uó ð( KOñ7Ø��d�Ñð7Ø (¨¡ð7Ø9AÀ$¹ð7à	ô7r'   