§
    ŠŠtjH  ã                   óè  — U d 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mZmZ eez  eedf         z  dz  Zeed	<    G d
„ d¦  «        Zdeded         fd„Z G d„ de¦  «        Zeez  Zeed<   eedf         ez  dz  Zeed<   eez  eedf         z  dz  Zeed<   deeedf         z  defd„Zdedefd„Zdedefd„Zd-dededefd„Z d-dededefd„Z!dededefd„Z"d.dededefd „Z#dedz  dedz  fd!„Z$dedz  dedz  fd"„Z%dededefd#„Z&dededefd$„Z'd%edededefd&„Z(dededefd'„Z)dededefd(„Z*dededefd)„Z+dededefd*„Z,d+eedf         dedeeef         fd,„Z-dS )/z®
Definition of CuTe Layouts and functions to manipulate them which works with the order
of lexicographic instead of co-lexicographic as implemented in the original layout.py
é    )Úchain)Ú	TypeAlias)ÚSelfÚTypeIsé   )	Úcrd2idxÚflattenÚhas_noneÚIntTupleÚis_intÚis_tupleÚproductÚslice_Úsuffix_product.NÚCoordinateTypec                   ó   — e Zd ZdS )Ú
LayoutBaseN)Ú__name__Ú
__module__Ú__qualname__© ó    ú^/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/distributed/_pycute/layout.pyr   r   =   s   € € € € € Ø€Dr   r   ÚxÚreturnÚLayoutc                 ó,   — t          | t          ¦  «        S ©N)Ú
isinstancer   )r   s    r   Ú	is_layoutr    A   s   € Ý�a�Ñ$Ô$Ð$r   c                   óœ   — e Zd Zddededz  ddfd„Zdedefd„Zdefd„Z	d	e
deez  fd
„Zdedefd„Zdefd„Zdefd„Zdefd„Zdefd„ZdS )r   NÚ_shapeÚ_strider   c                 ó\   — || _         |€t          | j         ¦  «        | _        d S || _        d S r   )Úshaper   Ústride)Úselfr"   r#   s      r   Ú__init__zLayout.__init__F   s.   € ØˆŒ
Øˆ?Ý(¨¬Ñ4Ô4ˆDŒKˆKˆKà!ˆDŒKˆKˆKr   Úotherc                 óp   — t          |t          ¦  «        sdS | j        |j        k    o| j        |j        k    S )NF)r   r   r%   r&   )r'   r)   s     r   Ú__eq__zLayout.__eq__N   s6   € Ý˜%¥Ñ(Ô(ð 	Ø�5ØŒz˜Uœ[Ò(ÐH¨T¬[¸E¼LÒ-HÐHr   c                 óV   — t          | j        ¦  «        rt          | j        ¦  «        S dS ©Nr   )r   r%   Úlen©r'   s    r   Ú__len__zLayout.__len__T   s'   € Ý�D”JÑÔð 	Ý�t”z‘?”?Ð"à�1r   Úargsc                 óÔ  — t          |¦  «        r‹t          |¦  «        dk    rBt          t          |d         | j        ¦  «        t          |d         | j        ¦  «        ¦  «        S t          t          || j        ¦  «        t          || j        ¦  «        ¦  «        S t          |¦  «        dk    r!t          |d         | j        | j        ¦  «        S t          || j        | j        ¦  «        S )a  
        Map a logical coordinate to a linear index (Coord has no Underscore slice operators)
        OR
        Slice the layout and return the sublayout (Coord has an Underscore slice op)

        Follow the same behavior of `Layout::operator(Coord const&)` in cute C++
        r   r   )r
   r.   r   r   r%   r&   r   )r'   r1   s     r   Ú__call__zLayout.__call__[   s¸   € õ �D‰>Œ>ð 		>Ý�4‰yŒy˜AŠ~ˆ~Ý�f T¨!¤W¨d¬jÑ9Ô9½6À$ÀqÄ'È4Ì;Ñ;WÔ;WÑXÔXÐXå�f T¨4¬:Ñ6Ô6½¸tÀTÄ[Ñ8QÔ8QÑRÔRÐRå�4‰yŒy˜AŠ~ˆ~Ý˜t Aœw¨¬
°D´KÑ@Ô@Ð@å˜t T¤Z°´Ñ=Ô=Ð=r   Úic                 óÄ   — t          | j        ¦  «        r&t          | j        |         | j        |         ¦  «        S |dk    rt          ‚t          | j        | j        ¦  «        S )Nr   )r   r%   r   r&   ÚAssertionError)r'   r4   s     r   Ú__getitem__zLayout.__getitem__o   sS   € Ý�D”JÑÔð 	3Ý˜$œ* Qœ-¨¬°Q¬Ñ8Ô8Ð8à�AŠvˆvÝ$Ð$Ý˜$œ* d¤kÑ2Ô2Ð2r   c                 ó*   — t          | j        ¦  «        S r   )r   r%   r/   s    r   ÚsizezLayout.sizex   s   € Ý�t”zÑ"Ô"Ð"r   c                 óH   —  | |                       ¦   «         dz
  ¦  «        dz   S r-   )r9   r/   s    r   ÚcosizezLayout.cosize|   s#   € Øˆt�D—I’I‘K”K !‘OÑ$Ô$ qÑ(Ð(r   c                 ó$   — | j         › d| j        › �S )Nú:©r%   r&   r/   s    r   Ú__str__zLayout.__str__€   s   € Ø”*Ð,Ð,˜tœ{Ð,Ð,Ð,r   c                 ó(   — d| j         › d| j        › d�S )NzLayout(ú,ú)r>   r/   s    r   Ú__repr__zLayout.__repr__„   s   € Ø4˜œÐ4Ð4 d¤kÐ4Ð4Ð4Ð4r   r   )r   r   r   r   r(   ÚobjectÚboolr+   Úintr0   r   r   r3   r7   r9   r;   Ústrr?   rC   r   r   r   r   r   E   s=  € € € € € ð"ð "˜xð "°(¸T±/ð "ÈTð "ð "ð "ð "ðI˜Fð I tð Ið Ið Ið Ið˜ð ð ð ð ð>˜nð >°¸±ð >ð >ð >ð >ð(3˜Sð 3 Tð 3ð 3ð 3ð 3ð#�cð #ð #ð #ð #ð)˜ð )ð )ð )ð )ð-˜ð -ð -ð -ð -ð5˜#ð 5ð 5ð 5ð 5ð 5ð 5r   ÚLayoutOrIntTupleÚLayoutProfileÚLayoutInputÚlayoutsc                  ó®   — t          | ¦  «        dk    rt          | d         ¦  «        s| d         } t          d„ | D ¦   «         Ž \  }}t          ||¦  «        S )Nr   r   c              3   ó2   K  — | ]}|j         |j        fV — Œd S r   r>   )Ú.0Úas     r   ú	<genexpr>zmake_layout.<locals>.<genexpr>“   s+   è è € Ð?Ð?°!˜1œ7 A¤HÐ-Ð?Ð?Ð?Ð?Ð?Ð?r   )r.   r    Úzipr   )rK   r%   r&   s      r   Úmake_layoutrR   �   sZ   € Ý
ˆ7�|„|�qÒÐ¥¨7°1¬:Ñ!6Ô!6ÐØ˜!”*ˆåÐ?Ð?°wÐ?Ñ?Ô?Ð@�M€Eˆ6Ý�%˜Ñ Ô Ð r   Úlayoutc                 óf   — t          | ¦  «        r|                      ¦   «         S t          | ¦  «        S r   )r    r9   r   ©rS   s    r   r9   r9   ˜   s,   € Ý�ÑÔð Ø�{Š{‰}Œ}ÐÝ�6‰?Œ?Ðr   c                 ó*   — |                       ¦   «         S r   )r;   rU   s    r   r;   r;   Ÿ   s   € Ø�=Š=‰?Œ?Ðr   Úprofilec                 óð  ‡ ‡— t          ‰¦  «        rŸt          ‰ ¦  «        t          ‰¦  «        k     rt          ‚t          t	          ˆ ˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         ˆ fd„t          t          ‰¦  «        t          ‰ ¦  «        ¦  «        D ¦   «         ¦  «        ¦  «        S dg}dg}t          t          t          ‰ j	        ¦  «        ¦  «        t          t          ‰ j
        ¦  «        ¦  «        ¦  «        D ]q\  }}|dk    rŒ|d         dk    r||d<   ||d<   Œ#|d         |d         z  |k    r|d         |z  |d<   ŒG|                     |¦  «         |                     |¦  «         Œrt          |¦  «        dk    rt          |d         |d         ¦  «        S |                     ¦   «          |                     ¦   «          t          t          |¦  «        t          |¦  «        ¦  «        S )Nc              3   óP   •K  — | ] }t          ‰|         ‰|         ¦  «        V — Œ!d S r   )Úcoalesce©rN   r4   rS   rW   s     €€r   rP   zcoalesce.<locals>.<genexpr>«   s5   øè è € ÐNÐN°Q•˜& œ) W¨Q¤ZÑ0Ô0ÐNÐNÐNÐNÐNÐNr   c              3   ó(   •K  — | ]}‰|         V — Œd S r   r   ©rN   r4   rS   s     €r   rP   zcoalesce.<locals>.<genexpr>¬   ó'   øè è € ÐEÐE˜q�˜”ÐEÐEÐEÐEÐEÐEr   r   r   éÿÿÿÿ)r   r.   r6   rR   r   ÚrangerQ   Úreversedr	   r%   r&   Úappendr   ÚreverseÚtuple©rS   rW   Úresult_shapeÚresult_strider%   r&   s   ``    r   rZ   rZ   ¤   s   øø€ Ý�ÑÔð 	
Ýˆv‰;Œ;�˜W™œÒ%Ð%Ý Ð ÝåØNÐNÐNÐNÐN½%ÅÀGÁÄÑ:MÔ:MÐNÑNÔNØEÐEÐEÐE¥E­#¨g©,¬,½¸F¹¼Ñ$DÔ$DÐEÑEÔEñô ñ
ô 
ð 	
ð �3€LØ�C€Mõ Ý•˜œÑ&Ô&Ñ'Ô'­µ'¸&¼-Ñ2HÔ2HÑ)IÔ)Iñô ð )ð )‰ˆˆvð �AŠ:ˆ:Øà˜"Ô Ò"Ð"Ø$ˆL˜ÑØ &ˆM˜"ÑÐà˜"Ô ¨bÔ 1Ñ1°VÒ;Ð;Ø+¨BÔ/°%Ñ7ˆL˜ÑÐð ×Ò Ñ&Ô&Ð&Ø× Ò  Ñ(Ô(Ð(Ð(å
ˆ<ÑÔ˜AÒÐÝ�l 1”o }°QÔ'7Ñ8Ô8Ð8à×ÒÑÔÐØ×ÒÑÔÐÝ•e˜LÑ)Ô)­5°Ñ+?Ô+?Ñ@Ô@Ð@r   c                 óþ  ‡ ‡— t          ‰¦  «        rŸt          ‰ ¦  «        t          ‰¦  «        k     rt          ‚t          t	          ˆ ˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         ˆ fd„t          t          ‰¦  «        t          ‰ ¦  «        ¦  «        D ¦   «         ¦  «        ¦  «        S g }g }t          t          ‰ j        ¦  «        t          ‰ j	        ¦  «        ¦  «        D ];\  }}|dk    s0|dk    s*| 
                    |¦  «         | 
                    |¦  «         Œ<t          |¦  «        dk    rt          dd¦  «        S t          t          t          |¦  «        t          |¦  «        ¦  «        ¦  «        S )Nc              3   óP   •K  — | ] }t          ‰|         ‰|         ¦  «        V — Œ!d S r   )Úfilterr[   s     €€r   rP   zfilter.<locals>.<genexpr>Ö   s5   øè è € ÐLÐL°1•˜˜qœ	 7¨1¤:Ñ.Ô.ÐLÐLÐLÐLÐLÐLr   c              3   ó(   •K  — | ]}‰|         V — Œd S r   r   r]   s     €r   rP   zfilter.<locals>.<genexpr>×   r^   r   r   r   )r   r.   r6   rR   r   r`   rQ   r	   r%   r&   rb   r   rZ   rd   re   s   ``    r   rj   rj   Ï   se  øø€ Ý�ÑÔð 	
Ýˆv‰;Œ;�˜W™œÒ%Ð%Ý Ð ÝåØLÐLÐLÐLÐL½½cÀ'¹l¼lÑ8KÔ8KÐLÑLÔLØEÐEÐEÐE¥E­#¨g©,¬,½¸F¹¼Ñ$DÔ$DÐEÑEÔEñô ñ
ô 
ð 	
ð €LØ€MÝ�W V¤\Ñ2Ô2µG¸F¼MÑ4JÔ4JÑKÔKð )ð )‰ˆˆvà˜’
�
˜f¨šk˜kØ×Ò Ñ&Ô&Ð&Ø× Ò  Ñ(Ô(Ð(øå
ˆ<ÑÔ˜AÒÐÝ�a˜‰|Œ|Ðå��u \Ñ2Ô2µE¸-Ñ4HÔ4HÑIÔIÑJÔJÐJr   ÚlayoutAÚlayoutBc                 ó  ‡ ‡— ‰€‰ S t          ‰¦  «        rt          ‰ t          ‰¦  «        ¦  «        S t          ‰¦  «        rŸt	          ‰ ¦  «        t	          ‰¦  «        k     rt
          ‚t          t          ˆ ˆfd„t          t	          ‰¦  «        ¦  «        D ¦   «         ˆ fd„t          t	          ‰¦  «        t	          ‰ ¦  «        ¦  «        D ¦   «         ¦  «        ¦  «        S t          ‰j	        ¦  «        rt          ˆ fd„‰D ¦   «         ¦  «        S ‰j
        dk    rt          ‰j	        d¦  «        S g }g }‰j	        }‰j
        }t          ‰ ¦  «        }t          t          t          |j	        ¦  «        dd …         ¦  «        t          t          |j
        ¦  «        dd …         ¦  «        ¦  «        D ]~\  }}||z  dk    s||z  dk    st
          ‚t          t!          d||z  ¦  «        |¦  «        }	|	dk    r-|                     |	¦  «         |                     ||z  ¦  «         ||	z  }| |z   }Œ|dk    st	          |¦  «        dk    rE|                     |¦  «         |                     |t          |j
        ¦  «        d         z  ¦  «         |                     ¦   «          |                     ¦   «          t	          |¦  «        dk    rt          |d         |d         ¦  «        S t          t'          |¦  «        t'          |¦  «        ¦  «        S )Nc              3   óP   •K  — | ] }t          ‰|         ‰|         ¦  «        V — Œ!d S r   ©Úcomposition©rN   r4   rl   rm   s     €€r   rP   zcomposition.<locals>.<genexpr>ö   s5   øè è € ÐRÐR¸•˜W QœZ¨°¬Ñ4Ô4ÐRÐRÐRÐRÐRÐRr   c              3   ó(   •K  — | ]}‰|         V — Œd S r   r   ©rN   r4   rl   s     €r   rP   zcomposition.<locals>.<genexpr>÷   ó'   øè è € ÐGÐG �˜”ÐGÐGÐGÐGÐGÐGr   c              3   ó8   •K  — | ]}t          ‰|¦  «        V — Œd S r   rp   )rN   Ú	layoutB_irl   s     €r   rP   zcomposition.<locals>.<genexpr>û   s-   øè è € ÐTÐT¸y�; w°	Ñ:Ô:ÐTÐTÐTÐTÐTÐTr   r   r   )r   rq   r   r   r.   r6   rR   r   r`   r%   r&   rZ   rQ   ra   r	   ÚminÚmaxrb   rc   rd   )
rl   rm   rf   rg   Ú
rest_shapeÚrest_strideÚflat_AÚ
curr_shapeÚcurr_strideÚ	new_shapes
   ``        r   rq   rq   ë   s  øø€ Ø€ØˆÝ	�‰Œð UÝ˜7¥F¨7¡O¤OÑ4Ô4Ð4Ý	�'Ñ	Ô	ð UÝˆw‰<Œ<�#˜g™,œ,Ò&Ð&Ý Ð ÝåØRÐRÐRÐRÐR½eÅCÈÁLÄLÑ>QÔ>QÐRÑRÔRØGÐGÐGÐG¥U­3¨w©<¬<½¸W¹¼Ñ%FÔ%FÐGÑGÔGñô ñ
ô 
ð 	
õ 
�'”-Ñ	 Ô	 ð UÝÐTÐTÐTÐTÈGÐTÑTÔTÑTÔTÐTà„~˜ÒÐÝ�g”m QÑ'Ô'Ð'àˆØˆØ”]ˆ
Ø”nˆÝ˜'Ñ"Ô"ˆõ (+Ý•W˜Vœ\Ñ*Ô*¨1¨2¨2Ô.Ñ/Ô/µ½'À&Ä-Ñ:PÔ:PÐQRÐQSÐQSÔ:TÑ1UÔ1Uñ(
ô (
ð 	ð 	Ñ#ˆJ˜ð  Ñ,°Ò1Ð1°[À:Ñ5MÐQRÒ5RÐ5RÝ$Ð$Ý�C  :°Ñ#<Ñ=Ô=¸zÑJÔJˆIà˜AŠ~ˆ~Ø×#Ò# IÑ.Ô.Ð.Ø×$Ò$ [°;Ñ%>Ñ?Ô?Ð?à# yÑ0ˆJà� 
Ñ*ðˆKˆKð ˜Š?ˆ?�c ,Ñ/Ô/°1Ò4Ð4Ø×Ò 
Ñ+Ô+Ð+Ø× Ò  ­w°v´}Ñ/EÔ/EÀaÔ/HÑ!HÑIÔIÐIð 	×ÒÑÔÐØ×ÒÑÔÐåˆ|ÑÔ Ò!Ð!Ý˜, qœ/¨=¸Ô+;Ñ<Ô<Ð<å�% Ñ-Ô-­u°]Ñ/CÔ/CÑDÔDÐDr   Úmax_idxc                 óè  — t          | ¦  «        rt          t          | ¦  «        ¦  «        S g }g }d}t          t	          t          | j        ¦  «        t          | j        ¦  «        ¦  «        ¦  «        }|D ]l\  }}|dk    s|dk    rŒ|||z  k    }t          |¦  «        t          u r	|st          ‚|                     ||z  ¦  «         |                     |¦  «         ||z  }Œm|                     ||z   dz
  |z  ¦  «         |                     |¦  «         |                     ¦   «          |                     ¦   «          t          t          t          |¦  «        t          |¦  «        ¦  «        ¦  «        S )Nr   r   )r   Ú
complementr   ÚsortedrQ   r	   r&   r%   ÚtyperE   r6   rb   rc   rZ   rd   )	rS   r€   rf   rg   Úcurrent_idxÚ	sorted_DSr&   r%   Úin_bounds	            r   r‚   r‚   /  sl  € Ýˆf�~„~ð *Ý�& ™.œ.Ñ)Ô)Ð)à€LØ€MØ€Kå•s�7 6¤=Ñ1Ô1µ7¸6¼<Ñ3HÔ3HÑIÔIÑJÔJ€IØ"ð %ð %‰ˆ�Ø�QŠ;ˆ;˜% 1š*˜*Øà %¨&¡.Ò0ˆå�‰NŒN�dÐ"Ð"¨HÐ"Ý Ð à×Ò˜F kÑ1Ñ2Ô2Ð2Ø×Ò˜[Ñ)Ô)Ð)Ø˜f‘nˆˆà×Ò˜ ;Ñ.°Ñ2°{ÑBÑCÔCÐCØ×Ò˜Ñ%Ô%Ð%ð ×ÒÑÔÐØ×ÒÑÔÐå•F�5 Ñ.Ô.µ°mÑ0DÔ0DÑEÔEÑFÔFÐFr   c           	      óD  — | €d S t          | ¦  «        rt          | ¦  «        S g }g }d}t          | j        ¦  «        }t          | j        ¦  «        }t          t          ||t          |¦  «        ¦  «        ¦  «        }|D ]D\  }}}	|dk    rŒ||k    r n0|                     |¦  «         |                     |	¦  «         ||z  }ŒE| 	                    ¦   «          | 	                    ¦   «          t          t          t          |¦  «        t          |¦  «        ¦  «        ¦  «        S r-   )r   r   r	   r%   r&   rƒ   rQ   r   rb   rc   rZ   rd   )
rS   rf   rg   r…   Ú
flat_shapeÚflat_strideÚ
sorted_DSAr&   r%   Úrstrides
             r   Úright_inverser�   P  s%  € Ø€~ØˆtÝ	�‰Œð Ý�f‰~Œ~Ðà€LØ€MØ€Kå˜œÑ&Ô&€JÝ˜&œ-Ñ(Ô(€KÝ�˜K¨µ^ÀJÑ5OÔ5OÑPÔPÑQÔQ€JØ",ð %ð %Ñˆ��wØ�AŠ:ˆ:ØØ˜&Ò Ð ØˆEà×Ò˜EÑ"Ô"Ð"Ø×Ò˜WÑ%Ô%Ð%Ø˜f‘nˆˆà×ÒÑÔÐØ×ÒÑÔÐÝ•F�5 Ñ.Ô.µ°mÑ0DÔ0DÑEÔEÑFÔFÐFr   c                 óš   — | €d S t          | ¦  «        rt          | ¦  «        S t          t          t	          | ¦  «        | ¦  «        ¦  «        S r   )r   r   r�   rR   r‚   rU   s    r   Úleft_inverser�   m  sF   € Ø€~ØˆtÝ	�‰Œð Ý�f‰~Œ~ÐÝ�¥Z°Ñ%7Ô%7¸Ñ@Ô@ÑAÔAÐAr   c                 ó4  ‡ ‡— ‰€‰ S t          ‰¦  «        rt          ‰ t          ‰¦  «        ¦  «        S t          ‰¦  «        rŸt	          ‰ ¦  «        t	          ‰¦  «        k     rt
          ‚t          t          ˆ ˆfd„t          t	          ‰¦  «        ¦  «        D ¦   «         ˆ fd„t          t	          ‰¦  «        t	          ‰ ¦  «        ¦  «        D ¦   «         ¦  «        ¦  «        S t          ‰ t          ‰t          ‰t          ‰ ¦  «        ¦  «        ¦  «        ¦  «        S )Nc              3   óP   •K  — | ] }t          ‰|         ‰|         ¦  «        V — Œ!d S r   )Úlogical_dividerr   s     €€r   rP   z!logical_divide.<locals>.<genexpr>‚  sI   øè è € ð ð àõ # 7¨1¤:¨w°q¬zÑ:Ô:ðð ð ð ð ð r   c              3   ó(   •K  — | ]}‰|         V — Œd S r   r   rt   s     €r   rP   z!logical_divide.<locals>.<genexpr>†  ru   r   )r   r’   r   r   r.   r6   rR   r   r`   rq   r‚   r9   ©rl   rm   s   ``r   r’   r’   w  s  øø€ Ø€ØˆÝ	�‰Œð 
Ý˜g¥v¨g¡¤Ñ7Ô7Ð7Ý	�'Ñ	Ô	ð 
Ýˆw‰<Œ<�#˜g™,œ,Ò&Ð&Ý Ð Ýåðð ð ð ð å"¥3 w¡<¤<Ñ0Ô0ðñ ô ð HÐGÐGÐG¥U­3¨w©<¬<½¸W¹¼Ñ%FÔ%FÐGÑGÔGñô ñ	
ô 	
ð 		
õ ØÝ�G�Z¨µ°g±´Ñ?Ô?Ñ@Ô@ñô ð r   c                 óT  ‡ ‡— ‰€‰ S t          ‰¦  «        rt          ‰ t          ‰¦  «        ¦  «        S t          ‰¦  «        rŸt	          ‰ ¦  «        t	          ‰¦  «        k     rt
          ‚t          t          ˆ ˆfd„t          t	          ‰¦  «        ¦  «        D ¦   «         ˆ fd„t          t	          ‰¦  «        t	          ‰ ¦  «        ¦  «        D ¦   «         ¦  «        ¦  «        S t          ‰ t          t          ‰ t          ‰ ¦  «        t          ‰¦  «        z  ¦  «        ‰¦  «        ¦  «        S )Nc              3   óP   •K  — | ] }t          ‰|         ‰|         ¦  «        V — Œ!d S r   )Úlogical_productrr   s     €€r   rP   z"logical_product.<locals>.<genexpr>�  sI   øè è € ð ð àõ $ G¨A¤J°¸´
Ñ;Ô;ðð ð ð ð ð r   c              3   ó(   •K  — | ]}‰|         V — Œd S r   r   rt   s     €r   rP   z"logical_product.<locals>.<genexpr>¡  ru   r   )r   r’   r   r   r.   r6   rR   r   r`   rq   r‚   r9   r;   r”   s   ``r   r—   r—   ’  s&  øø€ Ø€ØˆÝ	�‰Œð 
Ý˜g¥v¨g¡¤Ñ7Ô7Ð7Ý	�'Ñ	Ô	ð 
Ýˆw‰<Œ<�#˜g™,œ,Ò&Ð&Ý Ð Ýåðð ð ð ð å"¥3 w¡<¤<Ñ0Ô0ðñ ô ð HÐGÐGÐG¥U­3¨w©<¬<½¸W¹¼Ñ%FÔ%FÐGÑGÔGñô ñ	
ô 	
ð 		
õ ØÝ•J˜w­¨W©¬½¸w¹¼Ñ(GÑHÔHÈ'ÑRÔRñô ð r   Úsplitterc                 ó®  ‡ ‡‡‡— ‰€t          t          dd¦  «        ‰¦  «        S t          ‰¦  «        �rt          ‰¦  «        t          ‰¦  «        k     rt          ‚t          ˆˆˆ fd„t          t          ‰¦  «        ¦  «        D ¦   «         ¦  «        Št          t          ˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         ¦  «        t          t          ˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         ˆfd„t          t          ‰¦  «        t          ‰¦  «        ¦  «        D ¦   «         ¦  «        ¦  «        ¦  «        S  ‰ ‰‰¦  «        S )Nr   r   c              3   óR   •K  — | ]!}t          ‰‰|         ‰|         ¦  «        V — Œ"d S r   )Ú
hier_unzip)rN   r4   rl   rm   r™   s     €€€r   rP   zhier_unzip.<locals>.<genexpr>·  sK   øè è € ð 
ð 
àõ �x ¨¤¨W°Q¬ZÑ8Ô8ð
ð 
ð 
ð 
ð 
ð 
r   c              3   ó4   •K  — | ]}‰|         d          V — ŒdS )r   Nr   ©rN   r4   Úsplits     €r   rP   zhier_unzip.<locals>.<genexpr>½  s+   øè è € ÐAÐA¨˜˜aœ œÐAÐAÐAÐAÐAÐAr   c              3   ó4   •K  — | ]}‰|         d          V — ŒdS )r   Nr   rž   s     €r   rP   zhier_unzip.<locals>.<genexpr>À  s+   øè è € Ð>Ð> Q�U˜1”X˜a”[Ð>Ð>Ð>Ð>Ð>Ð>r   c              3   ó(   •K  — | ]}‰|         V — Œd S r   r   rt   s     €r   rP   zhier_unzip.<locals>.<genexpr>Á  s'   øè è € ÐKÐK A�W˜Q”ZÐKÐKÐKÐKÐKÐKr   )rR   r   r   r.   r6   r`   r   )r™   rl   rm   rŸ   s   ```@r   rœ   rœ   ¬  sa  øøøø€ ð
 €Ý�6 ! Q™<œ<¨Ñ1Ô1Ð1Ý	�'Ñ	Ô	ñ 
Ýˆw‰<Œ<�#˜g™,œ,Ò&Ð&Ý Ð åð 
ð 
ð 
ð 
ð 
ð 
å�3˜w™<œ<Ñ(Ô(ð
ñ 
ô 
ñ 
ô 
ˆõ
 ÝÐAÐAÐAÐA­Uµ3°w±<´<Ñ-@Ô-@ÐAÑAÔAÑAÔAÝÝØ>Ð>Ð>Ð>­%µ°G±´Ñ*=Ô*=Ð>Ñ>Ô>ØKÐKÐKÐK­­s°7©|¬|½SÀ¹\¼\Ñ)JÔ)JÐKÑKÔKñô ñô ñ
ô 
ð 	
ð ˆ8�G˜WÑ%Ô%Ð%r   c                 ó.   — t          t          | |¦  «        S r   )rœ   r’   r”   s     r   Úzipped_divider£   Ë  s   € Ý•n g¨wÑ7Ô7Ð7r   c           
      ó®   ‡— t          | |¦  «        Št          ‰d         gˆfd„t          t          ‰d         ¦  «        ¦  «        D ¦   «         z   ¦  «        S )Nr   c                 ó,   •— g | ]}‰d          |         ‘ŒS ©r   r   ©rN   r4   Úresults     €r   ú
<listcomp>z tiled_divide.<locals>.<listcomp>Ò  ó!   ø€ Ð%RÐ%RÐ%R°q f¨Q¤i°¤lÐ%RÐ%RÐ%Rr   r   )r£   rR   r`   r.   ©rl   rm   r¨   s     @r   Útiled_divider¬   Ð  sR   ø€ Ý˜7 GÑ,Ô,€FÝ˜˜qœ	�{Ð%RÐ%RÐ%RÐ%R½EÅ#ÀfÈQÄiÁ.Ä.Ñ<QÔ<QÐ%RÑ%RÔ%RÑRÑSÔSÐSr   c                 ó.   — t          t          | |¦  «        S r   )rœ   r—   r”   s     r   Úzipped_productr®   Ö  s   € Ý•o w°Ñ8Ô8Ð8r   c           
      ó®   ‡— t          | |¦  «        Št          ‰d         gˆfd„t          t          ‰d         ¦  «        ¦  «        D ¦   «         z   ¦  «        S )Nr   c                 ó,   •— g | ]}‰d          |         ‘ŒS r¦   r   r§   s     €r   r©   z!tiled_product.<locals>.<listcomp>Ý  rª   r   r   )r®   rR   r`   r.   r«   s     @r   Útiled_productr±   Û  sR   ø€ Ý˜G WÑ-Ô-€FÝ˜˜qœ	�{Ð%RÐ%RÐ%RÐ%R½EÅ#ÀfÈQÄiÁ.Ä.Ñ<QÔ<QÐ%RÑ%RÔ%RÑRÑSÔSÐSr   Úcrdc                 ó¤   — t          t          | |j        ¦  «        t          | |j        ¦  «        ¦  «        t	          | |j        |j        ¦  «        fS r   )r   r   r%   r&   r   )r²   rS   s     r   Úslice_and_offsetr´   à  sD   € å�v�c˜6œ<Ñ(Ô(­&°°f´mÑ*DÔ*DÑEÔEÝ��V”\ 6¤=Ñ1Ô1ðð r   r   r¦   ).Ú__doc__Ú	itertoolsr   Útypingr   Útyping_extensionsr   r   Ú	int_tupler   r	   r
   r   r   r   r   r   r   rF   rd   rD   r   Ú__annotations__r   r    r   rH   rI   rJ   rR   r9   r;   rZ   rj   rq   r‚   r�   r�   r’   r—   rœ   r£   r¬   r®   r±   r´   r   r   r   ú<module>r»      s  ððBð ð ð
 Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð ˆ(�N�U˜6 3˜;Ô'Ñ'¨$Ñ.ð �	ð ð ñ ð
	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð%�ð %˜F 8Ô,ð %ð %ð %ð %ð@5ð @5ð @5ð @5ð @5ˆZñ @5ô @5ð @5ðH % xÑ/Ð �)Ð /Ð /Ñ /Ø  ¨ Ô-°Ñ6¸Ñ=€ˆyÐ =Ð =Ñ =Ø (Ñ*¨U°6¸3°;Ô-?Ñ?À$ÑF€ˆYÐ FÐ FÑ Fð!˜& 5¨°¨Ô#5Ñ5ð !¸&ð !ð !ð !ð !ðÐ!ð  cð ð ð ð ð�6ð ˜cð ð ð ð ð
'Að 'A�Vð 'A mð 'A¸vð 'Að 'Að 'Að 'AðVKð K�6ð K Mð K¸Vð Kð Kð Kð Kð8@E˜ð @E¨+ð @E¸&ð @Eð @Eð @Eð @EðHGð GÐ'ð G°#ð G¸fð Gð Gð Gð GðBGÐ*¨TÑ1ð G°f¸t±mð Gð Gð Gð Gð:BÐ)¨DÑ0ð B°V¸d±]ð Bð Bð Bð Bð˜Fð ¨[ð ¸Vð ð ð ð ð6˜Vð ¨kð ¸fð ð ð ð ð4&Øð&àð&ð ð&ð ð	&ð &ð &ð &ð>8˜6ð 8¨Kð 8¸Fð 8ð 8ð 8ð 8ð
T˜&ð T¨;ð T¸6ð Tð Tð Tð Tð9˜Fð 9¨[ð 9¸Vð 9ð 9ð 9ð 9ð
T˜6ð T¨Kð T¸Fð Tð Tð Tð Tð
˜% ¨ Ô,ð °fð ÀÀvÈsÀ{ÔASð ð ð ð ð ð r   