ó
    EñiýF  ã                   óÚ  • % S r SSKJr  SSKJr  SSKJrJr  SSKJ	r	J
r
JrJrJrJrJrJrJr  \\-  \\S4   -  S-  r\\S	'    " S
 S5      rS\S\S   4S jr " S S\5      r\\-  r\\S'   \\S4   \-  S-  r\\S'   \\-  \\S4   -  S-  r\\S'   S\\\S4   -  S\4S jrS\S\4S jrS\S\4S jrS-S\S\S\4S jjr S-S\S\S\4S jjr!S\S\S\4S jr"S.S\S\S\4S  jjr#S\S-  S\S-  4S! jr$S\S-  S\S-  4S" jr%S\S\S\4S# jr&S\S\S\4S$ jr'S%\S\S\S\4S& jr(S\S\S\4S' jr)S\S\S\4S( jr*S\S\S\4S) jr+S\S\S\4S* jr,S+\\S4   S\S\\\4   4S, jr-g)/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                   ó   • \ rS rSrSrg)Ú
LayoutBaseé=   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Ú]/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/distributed/_pycute/layout.pyr   r   =   s   † Úr   r   ÚxÚreturnÚLayoutc                 ó"   • [        U [        5      $ ©N)Ú
isinstancer   )r   s    r   Ú	is_layoutr#   A   s   € Ü�aœÓ$Ð$r   c                   ó¶   • \ rS rSrSS\S\S-  SS4S jjrS\S\4S jrS\	4S	 jr
S
\S\\	-  4S jrS\	S\4S jrS\	4S jrS\	4S jrS\4S jrS\4S jrSrg)r   éE   NÚ_shapeÚ_strider   c                 óX   • Xl         Uc  [        U R                   5      U l        g X l        g r!   )Úshaper   Ústride)Úselfr&   r'   s      r   Ú__init__ÚLayout.__init__F   s!   € ØŒ
Ø‰?Ü(¨¯©Ó4ˆD�Kà!�Kr   Úotherc                 ó    • [        U[        5      (       d  gU R                  UR                  :H  =(       a    U R                  UR                  :H  $ )NF)r"   r   r)   r*   )r+   r.   s     r   Ú__eq__ÚLayout.__eq__N   s7   € Ü˜%¤×(Ñ(ØØ�z‰z˜UŸ[™[Ñ(×H¨T¯[©[¸E¿L¹LÑ-HÐHr   c                 ób   • [        U R                  5      (       a  [        U R                  5      $ g©Nr   )r   r)   Úlen©r+   s    r   Ú__len__ÚLayout.__len__T   s"   € Ü�D—J‘J×ÑÜ�t—z‘z“?Ð"àr   Úargsc                 ó¾  • [        U5      (       a{  [        U5      S:X  a:  [        [        US   U R                  5      [        US   U R
                  5      5      $ [        [        XR                  5      [        XR
                  5      5      $ [        U5      S:X  a$  [        US   U R                  U R
                  5      $ [        XR                  U R
                  5      $ )zð
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
   r4   r   r   r)   r*   r   )r+   r8   s     r   Ú__call__ÚLayout.__call__[   s�   € ô �D�>‰>Ü�4‹y˜A‹~Üœf T¨!¡W¨d¯j©jÓ9¼6À$ÀqÁ'È4Ï;É;Ó;WÓXÐXäœf T¯:©:Ó6¼¸tÇ[Á[Ó8QÓRÐRä�4‹y˜A‹~Ü˜t A™w¨¯
©
°D·K±KÓ@Ð@ä˜t§Z¡Z°·±Ó=Ð=r   Úic                 óÒ   • [        U R                  5      (       a&  [        U R                  U   U R                  U   5      $ US:X  d   e[        U R                  U R                  5      $ )Nr   )r   r)   r   r*   )r+   r<   s     r   Ú__getitem__ÚLayout.__getitem__o   sN   € Ü�D—J‘J×ÑÜ˜$Ÿ*™* Q™-¨¯©°Q©Ó8Ð8à˜“6ˆM�6Ü˜$Ÿ*™* d§k¡kÓ2Ð2r   c                 ó,   • [        U R                  5      $ r!   )r   r)   r5   s    r   ÚsizeÚLayout.sizew   s   € Ü�t—z‘zÓ"Ð"r   c                 ó:   • U " U R                  5       S-
  5      S-   $ r3   )rA   r5   s    r   ÚcosizeÚLayout.cosize{   s   € Ù�D—I‘I“K !‘OÓ$ qÑ(Ð(r   c                 ó8   • U R                    SU R                   3$ )NÚ:©r)   r*   r5   s    r   Ú__str__ÚLayout.__str__   s   € Ø—*‘*�˜Q˜tŸ{™{˜mÐ,Ð,r   c                 ó<   • SU R                    SU R                   S3$ )NzLayout(Ú,Ú)rH   r5   s    r   Ú__repr__ÚLayout.__repr__ƒ   s   € Ø˜Ÿ™˜ A d§k¡k ]°!Ð4Ð4r   rH   r!   )r   r   r   r   r   r,   ÚobjectÚboolr0   Úintr6   r   r   r:   r>   rA   rD   ÚstrrI   rN   r   r   r   r   r   r   E   sœ   † ñ"˜xð "°(¸T±/ð "ÈTõ "ðI˜Fð I tô Ið˜ô ð>˜nð >°¸±ô >ð(3˜Sð 3 Tô 3ð#�cô #ð)˜ô )ð-˜ô -ð5˜#÷ 5r   ÚLayoutOrIntTupleÚLayoutProfileÚLayoutInputÚlayoutsc                  óˆ   • [        U 5      S:X  a  [        U S   5      (       d  U S   n [        S U  5       6 u  p[        X5      $ )Nr   r   c              3   óP   #   • U  H  oR                   UR                  4v •  M     g 7fr!   rH   )Ú.0Úas     r   Ú	<genexpr>Úmake_layout.<locals>.<genexpr>’   s   é € Ð?²w°!Ÿ7™7 A§H¡HÕ-²wùs   ‚$&)r4   r#   Úzipr   )rW   r)   r*   s      r   Úmake_layoutr_   Ž   sB   € Ü
ˆ7ƒ|�qÓ¤¨7°1©:×!6Ñ!6Ø˜!‘*ˆäÑ?±wÓ?Ð@�M€EÜ�%Ó Ð r   Úlayoutc                 óX   • [        U 5      (       a  U R                  5       $ [        U 5      $ r!   )r#   rA   r   ©r`   s    r   rA   rA   —   s#   € Ü�×ÑØ�{‰{‹}ÐÜ�6‹?Ðr   c                 ó"   • U R                  5       $ r!   )rD   rb   s    r   rD   rD   ž   s   € Ø�=‰=‹?Ðr   Úprofilec                 ó   ^ ^• [        T5      (       ar  [        T 5      [        T5      :¼  d   e[        [        U U4S j[	        [        T5      5       5       U 4S j[	        [        T5      [        T 5      5       5       5      5      $ S/nS/n[        [        [        T R                  5      5      [        [        T R                  5      5      5       H^  u  pEUS:X  a  M  US   S:X  a
  XBS'   XSS'   M   US   US   -  U:X  a  US   U-  US'   M<  UR                  U5        UR                  U5        M`     [        U5      S:X  a  [        US   US   5      $ UR                  5         UR                  5         [        [        U5      [        U5      5      $ )Nc              3   óH   >#   • U  H  n[        TU   TU   5      v •  M     g 7fr!   )Úcoalesce©rZ   r<   r`   rd   s     €€r   r\   Úcoalesce.<locals>.<genexpr>©   s%   øé € ÐNÒ:M°Q”˜& ™) W¨Q¡Z×0Ð0Ò:Mùó   ƒ"c              3   ó.   >#   • U  H
  nTU   v •  M     g 7fr!   r   ©rZ   r<   r`   s     €r   r\   ri   ª   ó   øé € ÐEÒ$D˜q�˜–Ò$Dùó   ƒr   r   éÿÿÿÿ)r   r4   r_   r   Úranger^   Úreversedr	   r)   r*   Úappendr   ÚreverseÚtuple©r`   rd   Úresult_shapeÚresult_strider)   r*   s   ``    r   rg   rg   £   sk  ù€ Ü�×ÑÜ�6‹{œc '›lÓ*Ð*Ð*ÜäÝN¼%ÄÀGÃÔ:MÓNÜE¤E¬#¨g«,¼¸F»Ô$DÓEóó
ð 	
ð �3€LØ�C€Mô Ü”˜Ÿ™Ó&Ó'¬´'¸&¿-¹-Ó2HÓ)Iö‰ˆð �A‹:Ùà˜"Ñ Ó"Ø$˜ÑØ &˜"Óà˜"Ñ ¨bÑ 1Ñ1°VÓ;Ø+¨BÑ/°%Ñ7ˆL˜Óð ×Ñ Ô&Ø× Ñ  Ö(ñ!ô$ ˆ<Ó˜AÓÜ�l 1‘o }°QÑ'7Ó8Ð8à×ÑÔØ×ÑÔÜ”e˜LÓ)¬5°Ó+?Ó@Ð@r   c                 óp  ^ ^• [        T5      (       ar  [        T 5      [        T5      :¼  d   e[        [        U U4S j[	        [        T5      5       5       U 4S j[	        [        T5      [        T 5      5       5       5      5      $ / n/ n[        [        T R                  5      [        T R                  5      5       H7  u  pEUS:X  a  M  US:X  a  M  UR                  U5        UR                  U5        M9     [        U5      S:X  a  [        SS5      $ [        [        [        U5      [        U5      5      5      $ )Nc              3   óH   >#   • U  H  n[        TU   TU   5      v •  M     g 7fr!   )Úfilterrh   s     €€r   r\   Úfilter.<locals>.<genexpr>Ó   s%   øé € ÐLÒ8K°1”˜˜q™	 7¨1¡:×.Ð.Ò8Kùrj   c              3   ó.   >#   • U  H
  nTU   v •  M     g 7fr!   r   rl   s     €r   r\   r{   Ô   rm   rn   r   r   )r   r4   r_   r   rp   r^   r	   r)   r*   rr   r   rg   rt   ru   s   ``    r   rz   rz   Í   só   ù€ Ü�×ÑÜ�6‹{œc '›lÓ*Ð*Ð*ÜäÝL¼¼cÀ'»lÔ8KÓLÜE¤E¬#¨g«,¼¸F»Ô$DÓEóó
ð 	
ð €LØ€MÜœW V§\¡\Ó2´G¸F¿M¹MÓ4JÖK‰ˆà˜•
˜f¨�kØ×Ñ Ô&Ø× Ñ  Ö(ñ	 Lô ˆ<Ó˜AÓÜ�a˜‹|Ðäœœu \Ó2´E¸-Ó4HÓIÓJÐJr   ÚlayoutAÚlayoutBc                 ó  ^ ^• Tc  T $ [        T5      (       a  [        T [        T5      5      $ [        T5      (       ar  [	        T 5      [	        T5      :¼  d   e[        [        U U4S j[        [	        T5      5       5       U 4S j[        [	        T5      [	        T 5      5       5       5      5      $ [        TR                  5      (       a  [        U 4S jT 5       5      $ TR                  S:X  a  [        TR                  S5      $ / n/ nTR                  nTR                  n[        T 5      n[        [        [        UR                  5      SS  5      [        [        UR                  5      SS  5      5       Hd  u  pxXu-  S:X  d
  XW-  S:X  d   e[        [        SXu-  5      U5      n	U	S:w  a$  UR!                  U	5        UR!                  XX-  5        XI-  nU* U-  * nMf     US:w  d  [	        U5      S:X  a;  UR!                  U5        UR!                  U[        UR                  5      S   -  5        UR#                  5         UR#                  5         [	        U5      S:X  a  [        US   US   5      $ [        [%        U5      [%        U5      5      $ )Nc              3   óH   >#   • U  H  n[        TU   TU   5      v •  M     g 7fr!   ©Úcomposition©rZ   r<   r}   r~   s     €€r   r\   Úcomposition.<locals>.<genexpr>ò   s%   øé € ÐRÒ>Q¸”˜W Q™Z¨°©×4Ð4Ò>Qùrj   c              3   ó.   >#   • U  H
  nTU   v •  M     g 7fr!   r   ©rZ   r<   r}   s     €r   r\   r„   ó   ó   øé € ÐGÒ%F �˜–Ò%Fùrn   c              3   ó<   >#   • U  H  n[        TU5      v •  M     g 7fr!   r�   )rZ   Ú	layoutB_ir}   s     €r   r\   r„   ÷   s   øé € ÐTÊG¸yœ; w°	×:Ð:ÊGùs   ƒr   r   )r   r‚   r   r   r4   r_   r   rp   r)   r*   rg   r^   rq   r	   ÚminÚmaxrr   rs   rt   )
r}   r~   rv   rw   Ú
rest_shapeÚrest_strideÚflat_AÚ
curr_shapeÚcurr_strideÚ	new_shapes
   ``        r   r‚   r‚   è   s:  ù€ Ø�ØˆÜ	��‰Ü˜7¤F¨7£OÓ4Ð4Ü	�'×	Ñ	Ü�7‹|œs 7›|Ó+Ð+Ð+ÜäÝR¼eÄCÈÃLÔ>QÓRÜG¤U¬3¨w«<¼¸W»Ô%FÓGóó
ð 	
ô 
�'—-‘-×	 Ñ	 ÜÔTÉGÓTÓTÐTà‡~�~˜ÓÜ�g—m‘m QÓ'Ð'àˆØˆØ—]‘]ˆ
Ø—n‘nˆÜ˜'Ó"ˆô (+Ü”W˜VŸ\™\Ó*¨1¨2Ð.Ó/´¼'À&Ç-Á-Ó:PÐQRÐQSÐ:TÓ1Uö(
Ñ#ˆJð Ñ+¨qÓ0°KÑ4LÐPQÓ4QÐQÐQÜœC  :Ñ#<Ó=¸zÓJˆIà˜A‹~Ø×#Ñ# IÔ.Ø×$Ñ$ [Ñ%>Ô?à#Ñ0ˆJà� 
Ñ*ðŠKñ(
ð$ ˜‹?œc ,Ó/°1Ó4Ø×Ñ 
Ô+Ø× Ñ  ¬w°v·}±}Ó/EÀaÑ/HÑ!HÔIð 	×ÑÔØ×ÑÔäˆ|Ó Ó!Ü˜, q™/¨=¸Ñ+;Ó<Ð<äœ% Ó-¬u°]Ó/CÓDÐDr   Úmax_idxc                 ót  • [        U 5      (       a  [        [        U 5      5      $ / n/ nSn[        [	        [        U R                  5      [        U R                  5      5      5      nU H]  u  pgUS:X  d  US:X  a  M  XGU-  :*  n[        U5      [        Ld	  U(       d   eUR                  Xd-  5        UR                  U5        Xv-  nM_     UR                  X-   S-
  U-  5        UR                  U5        UR                  5         UR                  5         [        [        [        U5      [        U5      5      5      $ )Nr   r   )r   Ú
complementr   Úsortedr^   r	   r*   r)   ÚtyperQ   rr   rs   rg   rt   )	r`   r’   rv   rw   Úcurrent_idxÚ	sorted_DSr*   r)   Úin_bounds	            r   r”   r”   *  s  € Üˆf‡~�~Üœ& ›.Ó)Ð)à€LØ€MØ€Kä”sœ7 6§=¡=Ó1´7¸6¿<¹<Ó3HÓIÓJ€IÛ"‰ˆØ�Q‹;˜% 1›*Ùà¨&¡.Ñ0ˆä�X“¤dÒ*®xÐ7Ð7à×Ñ˜FÑ1Ô2Ø×Ñ˜[Ô)Ø‘nŠñ #ð ×Ñ˜Ñ.°Ñ2°{ÑBÔCØ×Ñ˜Ô%ð ×ÑÔØ×ÑÔä”Fœ5 Ó.´°mÓ0DÓEÓFÐFr   c           	      óì  • U c  g [        U 5      (       a  [        U 5      $ / n/ nSn[        U R                  5      n[        U R                  5      n[        [        XT[        U5      5      5      nU H;  u  pxn	US:X  a  M  X7:w  a    O*UR                  U5        UR                  U	5        X‡-  nM=     UR                  5         UR                  5         [        [        [        U5      [        U5      5      5      $ r3   )r   r   r	   r)   r*   r•   r^   r   rr   rs   rg   rt   )
r`   rv   rw   r—   Ú
flat_shapeÚflat_strideÚ
sorted_DSAr*   r)   Úrstrides
             r   Úright_inverserŸ   J  sÙ   € Ø�~ØÜ	��‰Ü�f‹~Ðà€LØ€MØ€Kä˜Ÿ™Ó&€JÜ˜&Ÿ-™-Ó(€KÜœ˜K´^ÀJÓ5OÓPÓQ€JÛ",Ñˆ�wØ�A‹:ÙØÓ Ùà×Ñ˜EÔ"Ø×Ñ˜WÔ%Ø‘nŠñ #-ð ×ÑÔØ×ÑÔÜ”Fœ5 Ó.´°mÓ0DÓEÓFÐFr   c                 ó|   • U c  g [        U 5      (       a  [        U 5      $ [        [        [	        U 5      U 5      5      $ r!   )r   r   rŸ   r_   r”   rb   s    r   Úleft_inverser¡   g  s4   € Ø�~ØÜ	��‰Ü�f‹~ÐÜœ¤Z°Ó%7¸Ó@ÓAÐAr   c                 ó°  ^ ^• Tc  T $ [        T5      (       a  [        T [        T5      5      $ [        T5      (       ar  [	        T 5      [	        T5      :¼  d   e[        [        U U4S j[        [	        T5      5       5       U 4S j[        [	        T5      [	        T 5      5       5       5      5      $ [        T [        T[        T[        T 5      5      5      5      $ )Nc              3   óH   >#   • U  H  n[        TU   TU   5      v •  M     g 7fr!   )Úlogical_dividerƒ   s     €€r   r\   Ú!logical_divide.<locals>.<genexpr>{  s*   øé € ð â0˜ô # 7¨1¡:¨w°q©z×:Ð:Ú0ùrj   c              3   ó.   >#   • U  H
  nTU   v •  M     g 7fr!   r   r†   s     €r   r\   r¥     r‡   rn   )r   r¤   r   r   r4   r_   r   rp   r‚   r”   rA   ©r}   r~   s   ``r   r¤   r¤   q  s´   ù€ Ø�ØˆÜ	��‰Ü˜g¤v¨g£Ó7Ð7Ü	�'×	Ñ	Ü�7‹|œs 7›|Ó+Ð+Ð+Üäõä"¤3 w£<Ô0óô H¤U¬3¨w«<¼¸W»Ô%FÓGóó	
ð 		
ô ØÜ�GœZ¨´°g³Ó?Ó@óð r   c                 óÈ  ^ ^• Tc  T $ [        T5      (       a  [        T [        T5      5      $ [        T5      (       ar  [	        T 5      [	        T5      :¼  d   e[        [        U U4S j[        [	        T5      5       5       U 4S j[        [	        T5      [	        T 5      5       5       5      5      $ [        T [        [        T [        T 5      [        T5      -  5      T5      5      $ )Nc              3   óH   >#   • U  H  n[        TU   TU   5      v •  M     g 7fr!   )Úlogical_productrƒ   s     €€r   r\   Ú"logical_product.<locals>.<genexpr>•  s*   øé € ð â0˜ô $ G¨A¡J°¸±
×;Ð;Ú0ùrj   c              3   ó.   >#   • U  H
  nTU   v •  M     g 7fr!   r   r†   s     €r   r\   r«   ™  r‡   rn   )r   r¤   r   r   r4   r_   r   rp   r‚   r”   rA   rD   r§   s   ``r   rª   rª   ‹  s½   ù€ Ø�ØˆÜ	��‰Ü˜g¤v¨g£Ó7Ð7Ü	�'×	Ñ	Ü�7‹|œs 7›|Ó+Ð+Ð+Üäõä"¤3 w£<Ô0óô H¤U¬3¨w«<¼¸W»Ô%FÓGóó	
ð 		
ô ØÜ”J˜w¬¨W«¼¸w»Ñ(GÓHÈ'ÓRóð r   Úsplitterc                 ó   ^ ^^^• Tc  [        [        SS5      T5      $ [        T5      (       aÉ  [        T5      [        T5      :¼  d   e[        UUU 4S j[	        [        T5      5       5       5      m[        [        U4S j[	        [        T5      5       5       5      [        [        U4S j[	        [        T5      5       5       U4S j[	        [        T5      [        T5      5       5       5      5      5      $ T " TT5      $ )Nr   r   c              3   óJ   >#   • U  H  n[        TTU   TU   5      v •  M     g 7fr!   )Ú
hier_unzip)rZ   r<   r}   r~   r­   s     €€€r   r\   Úhier_unzip.<locals>.<genexpr>®  s,   øé € ð 
â(�ô �x ¨¡¨W°Q©Z×8Ð8Ú(ùs   ƒ #c              3   ó4   >#   • U  H  nTU   S    v •  M     g7f)r   Nr   ©rZ   r<   Úsplits     €r   r\   r±   ´  s   øé € ÐAÒ-@¨˜˜a™ žÒ-@ùó   ƒc              3   ó4   >#   • U  H  nTU   S    v •  M     g7f)r   Nr   r³   s     €r   r\   r±   ·  s   øé € Ð>Ò*= Q�U˜1‘X˜a–[Ò*=ùrµ   c              3   ó.   >#   • U  H
  nTU   v •  M     g 7fr!   r   r†   s     €r   r\   r±   ¸  s   øé € ÐKÒ)J A�W˜Q–ZÒ)Jùrn   )r_   r   r   r4   rp   r   )r­   r}   r~   r´   s   ```@r   r°   r°   ¤  sË   û€ ð
 �Üœ6 ! Q›<¨Ó1Ð1Ü	�'×	Ñ	Ü�7‹|œs 7›|Ó+Ð+Ð+äö 
äœ3˜w›<Ô(ó
ó 
ˆô
 ÜÔA¬U´3°w³<Ô-@ÓAÓAÜÜÜ>¬%´°G³Ô*=Ó>ÜK¬¬s°7«|¼SÀ»\Ô)JÓKóóó
ð 	
ñ �G˜WÓ%Ð%r   c                 ó"   • [        [        X5      $ r!   )r°   r¤   r§   s     r   Úzipped_divider¹   Â  s   € Ü”n gÓ7Ð7r   c           	      óœ   • [        X5      n[        US   /[        [        US   5      5       Vs/ s H
  o2S   U   PM     sn-   5      $ s  snf ©Nr   r   )r¹   r_   rp   r4   ©r}   r~   Úresultr<   s       r   Útiled_divider¾   Ç  sI   € Ü˜7Ó,€FÜ˜˜q™	�{¼EÄ#ÀfÈQÁiÃ.Ô<QÓ%RÒ<Q°q¨Q¡i°¤lÑ<QÑ%RÑRÓSÐSùÒ%Ró   ¯A	
c                 ó"   • [        [        X5      $ r!   )r°   rª   r§   s     r   Úzipped_productrÁ   Í  s   € Ü”o wÓ8Ð8r   c           	      óœ   • [        X5      n[        US   /[        [        US   5      5       Vs/ s H
  o2S   U   PM     sn-   5      $ s  snf r»   )rÁ   r_   rp   r4   r¼   s       r   Útiled_productrÃ   Ò  sI   € Ü˜GÓ-€FÜ˜˜q™	�{¼EÄ#ÀfÈQÁiÃ.Ô<QÓ%RÒ<Q°q¨Q¡i°¤lÑ<QÑ%RÑRÓSÐSùÒ%Rr¿   Úcrdc                 ó¦   • [        [        XR                  5      [        XR                  5      5      [	        XR                  UR                  5      4$ r!   )r   r   r)   r*   r   )rÄ   r`   s     r   Úslice_and_offsetrÆ   ×  s:   € äŒv�cŸ<™<Ó(¬&°·m±mÓ*DÓEÜ�—\‘\ 6§=¡=Ó1ðð r   r!   )r   ).Ú__doc__Ú	itertoolsr   Útypingr   Útyping_extensionsr   r   Ú	int_tupler   r	   r
   r   r   r   r   r   r   rR   rt   rP   r   Ú__annotations__r   r#   r   rT   rU   rV   r_   rA   rD   rg   rz   r‚   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ˆZô ?5ðF % xÑ/Ð �)Ó /Ø  ¨ Ñ-°Ñ6¸Ñ=€ˆyÓ =Ø (Ñ*¨U°6¸3°;Ñ-?Ñ?À$ÑF€ˆYÓ Fð!˜& 5¨°¨Ñ#5Ñ5ð !¸&ô !ðÐ!ð  cô ð�6ð ˜cô ñ
&A�Vð &A mð &A¸võ &AñTK�6ð K Mð K¸Võ Kð6>E˜ð >E¨+ð >E¸&ô >EñDGÐ'ð G°#ð G¸fõ Gð@GÐ*¨TÑ1ð G°f¸t±mô Gð:BÐ)¨DÑ0ð B°V¸d±]ô Bð˜Fð ¨[ð ¸Vô ð4˜Vð ¨kð ¸fô ð2&Øð&àð&ð ð&ð ô	&ð<8˜6ð 8¨Kð 8¸Fô 8ð
T˜&ð T¨;ð T¸6ô Tð9˜Fð 9¨[ð 9¸Vô 9ð
T˜6ð T¨Kð T¸Fô Tð
˜% ¨ Ñ,ð °fð ÀÀvÈsÀ{ÑASõ r   