Ë
    Æ[;jéî	 ã                   óH  — d dl Z  e j                  �d¹i de“de“de“de“de“de“de“d	e“d
e“de“de“de“de“de“de“de“de“de“de“de“de“de“de“de“de“de“de“de“de“de“d e“d!e“d"e“d#e“d$e“d%e“d&e“d'e“d(e“d)e“Ž d dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d d*lmZ d+d,lmZmZmZmZmZmZmZmZ d+d-lmZmZ d+d.lmZ d+d/lmZ d+d0lmZ d+d1lmZ d+d2lmZm Z  d+d3lm!Z! d+d4l!m"Z"m#Z#m$Z$m%Z%m&Z& d+d5lm'Z' d+d6l(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z3m4Z4 d+d7lm(Z( d+d8lm5Z5 d9d:lm6Z6 d+d;l7m8Z8 d+d<lm9Z9 d9d=l:m;Z; d+d>l<m=Z=m>Z> d+d?l?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN d+d@l!mOZO ePeQfZR G dA„ dB«      ZS eS«       ZT e«       ZUdC„ ZVe.e/fdDe.e!jD                  fdEe.e!j®                  fdEe.e!j°                  fdEe.e!j²                  fdEe/e.fdFe/e!j´                  fdGe/e!j¶                  fdGe!jD                  e.fdHe!j®                  e.fdHe!j°                  e.fdHe!j²                  e.fdH eV e!j¸                  «       «      dI eV e!jº                  «       «      dJiZ^dK„ Z_dL„ Z`dM„ Za�dºdN„ZbdO„ ZcdP„ ZddQ„ ZedR„ ZfdS„ ZgdT„ Zh G dU„ dVe«      Zi G dW„ dXei«      Zj G dY„ dZei«      Zk G d[„ d\ek«      Zl G d]„ d^el«      Zm G d_„ d`el«      Zn G da„ dbek«      Zo G dc„ ddeo«      Zp G de„ dfeo«      Zq G dg„ dheo«      Zr G di„ djeo«      Zs G dk„ dleo«      Ztdm„ Zu G dn„ doeo«      Zv G dp„ dqeo«      Zw G dr„ dsew«      Zx G dt„ duek«      Zy G dv„ dwek«      Zz G dx„ dyek«      Z{ G dz„ d{ei«      Z| G d|„ d}ei«      Z} G d~„ dei«      Z~ G d€„ d�e~«      Z G d‚„ dƒei«      Z€ G d„„ d…ek«      Z� G d†„ d‡e~«      Z‚ G dˆ„ d‰ek«      Zƒ G dŠ„ d‹eie�j                  «      Z… G dŒ„ d�ek«      Z† G dŽ„ d�ei«      Z‡ G d�„ d‘e‡«      Zˆ G d’„ d“ei«      Z‰ G d”„ d•ei«      ZŠ G d–„ d—ei«      Z‹ G d˜„ d™ek«      ZŒ G dš„ d›ek«      Z� G dœ„ d�ei«      ZŽ G dž„ dŸeŽ«      Z� G d „ d¡eŽ«      Z� G d¢„ d£e�«      Z‘ G d¤„ d¥e‘«      Z’ G d¦„ d§ei«      Z“ G d¨„ d©e“«      Z” G dª„ d«e“«      Z• G d¬„ d­ei«      Z– G d®„ d¯ei«      Z— G d°„ d±e—«      Z˜ G d²„ d³ei«      Z™ G d´„ dµe™«      Zš G d¶„ d·ei«      Z› G d¸„ d¹e™«      Zœ G dº„ d»e™«      Z� G d¼„ d½ei«      Zž G d¾„ d¿eš«      ZŸ G dÀ„ dÁe™«      Z  G dÂ„ dÃe™«      Z¡ G dÄ„ dÅei«      Z¢ G dÆ„ dÇei«      Z£ G dÈ„ dÉei«      Z¤ G dÊ„ dËei«      Z¥ G dÌ„ dÍei«      Z¦ G dÎ„ dÏe¦«      Z§ G dÐ„ dÑe¦«      Z¨ G dÒ„ dÓe~«      Z© G dÔ„ dÕe«      Zª G dÖ„ d×eª«      Z« G dØ„ dÙei«      Z¬ G dÚ„ dÛei«      Z­ G dÜ„ dÝei«      Z® G dÞ„ dßei«      Z¯ G dà„ dáei«      Z° G dâ„ dãei«      Z± G dä„ dåej«      Z² G dæ„ dç«      Z³ G dè„ déeie³«      Z´ G dê„ dëei«      Zµ G dì„ díei«      Z¶ G dî„ dïeie³«      Z· G dð„ dñei«      Z¸ G dò„ dóei«      Z¹ G dô„ dõeie³«      Zº G dö„ d÷eº«      Z» G dø„ dù«      Z¼ G dú„ dûei«      Z½ G dü„ dýei«      Z¾ G dþ„ dÿei«      Z¿ G �d „ �de§«      ZÀ G �d„ �de¯«      ZÁ G �d„ �de»«      ZÂ G �d„ �deÂ«      ZÃ G �d„ �d	ei«      ZÄ G �d
„ �deÄ«      ZÅ G �d„ �deÅ«      ZÆ G �d„ �deÅ«      ZÇ G �d„ �deÇ«      ZÈ G �d„ �dek«      ZÉ G �d„ �de°«      ZÊ G �d„ �de¯«      ZË G �d„ �dek«      ZÌ�d„ ZÍe�jœ                  e�jž                  e�j                   e�j¢                  �dœZÒ G �d„ �dei«      ZÓ G �d„ �deÓ«      ZÔ G �d „ �d!eÓ«      ZÕ G �d"„ �d#eÓ«      ZÖ G �d$„ �d%eÓ«      Z× G �d&„ �d'eÓ«      ZØ G �d(„ �d)eØ«      ZÙ G �d*„ �d+eØ«      ZÚ�d,„ ZÛ G �d-„ �d.eØ«      ZÜeÕeÖe×�d/œZÝ�d0„ ZÞ G �d1„ �d2ei«      Zß�d3Zà�d4Zá�d5Zâ�d6Zã�d7Zä G �d8„ �d9ei«      Zå G �d:„ �d;ei«      Zæ G �d<„ �d=eæ«      Zç G �d>„ �d?eæ«      Zè G �d@„ �dAei«      Zé G �dB„ �dCei«      Zê	 e�jÖ                  Zìi �dEe�jÜ                  “�dFe�jÞ                  “�dGe�jà                  “�dHe�jâ                  “�dIe�jä                  “�dJe�jæ                  “�dKe�jè                  “�dLe�jê                  “�dMe�jì                  “�dNe�jî                  “�dOe�jð                  “�dPe�jò                  “�dQe�jô                  “�dRe�jö                  “�dSe�jø                  “�dTe�jú                  “�dUe�jü                  “e�jþ                  e�j                   e�j                  eì�dV„ �dW„ �dXœ¥�Z�dY„ �Z G �dZ„ �d[ei«      �Z G �d\„ �d]�e«      �Z�d^„ �Z G �d_„ �d`�e«      �Z G �da„ �db�e«      �Z G �dc„ �dd�e«      �Z	 G �de„ �df�e«      �Z
 G �dg„ �dh�e«      �Z G �di„ �dj�e«      �Z G �dk„ �dl�e«      �Z G �dm„ �dn�e«      �Z e	�j                  �do«      �j                   �Z �eh �dp£«      �Z G �dq„ �dr�e«      �Z G �ds„ �dt�e«      �Z G �du„ �dvei«      �Z G �dw„ �dxei«      �Z G �dy„ �dzei«      �Z�d{�d|�d}�d~�d~�d�d€�d}�d~�d�œ	�Z G �d‚„ �dƒ«      �Z G �d„„ �d…ei�e«      �Z G �d†„ �d‡e�e«      �Z�e�e�e	�e�e�e�e�e
�e�e�e�e�e�e�e�dˆœ�Z�d»�d‰„�Z G �dŠ„ �d‹ei«      �Z G �dŒ„ �d��e«      �Z  G �dŽ„ �d��e«      �Z! G �d�„ �d‘�e«      �Z" G �d’„ �d“ej«      �Z# G �d”„ �d•�e«      �Z$ G �d–„ �d—�e$«      �Z% G �d˜„ �d™�e«      �Z& G �dš„ �d›�e«      �Z' G �dœ„ �d��e'«      �Z( G �dž„ �dŸ�e«      �Z)�d „ �Z* G �d¡„ �d¢�e«      �Z+ G �d£„ �d¤�e«      �Z, G �d¥„ �d¦�e«      �Z- G �d§„ �d¨�e«      �Z. G �d©„ �dª�e-«      �Z/ G �d«„ �d¬ei«      �Z0 G �d­„ �d®ei«      �Z1 G �d¯„ �d°ei«      �Z2 G �d±„ �d²ei«      �Z3 G �d³„ �d´ei«      �Z4 G �dµ„ �d¶ei«      �Z5 G �d·„ �d¸ei«      �Z6y# eí$ r �dD„ ZìY �Œw xY w(¼  é    NÚerrorÚwarningÚ	warn_onceÚInternalErrorÚCompileErrorÚUtilityCodeÚTempitaUtilityCodeÚStringEncodingÚoperatorÚlocal_errorsÚreport_errorÚNamingÚNodesÚ
PyrexTypesÚpy_object_typeÚ	list_typeÚ
tuple_typeÚset_typeÚ	dict_typeÚunicode_typeÚ
bytes_typeÚ	type_typeÚBuiltinÚSymtabÚUtilsÚfind_coercion_errorÚdebug_disposal_codeÚdebug_temp_allocÚdebug_coercionÚbytearray_typeÚ
slice_typeÚmemoryview_typeÚbuiltin_sequence_typesÚbuild_line_tableÚinspectÚcopyÚosÚpathlibÚreÚsys)ÚOptionalé   )r   r   r   r   r   r   ÚCannotSpecializeÚperformance_hint)r   r	   )r$   )r
   )r   )r   )ÚNodeÚSingleAssignmentNode)r   )Úc_char_ptr_typer   ÚtypecastÚ
error_typeÚunspecified_type)Ú	TypeSlots)r   r   r   r   r   r   r   r    r!   Úsequence_typesr"   )r   )r   é   )r   )ÚAnnotationItem)ÚFuture)Úprint_call_chain)r   r   )Ú
to_pythranÚis_pythran_supported_typeÚ#is_pythran_supported_operation_typeÚis_pythran_exprÚpythran_func_typeÚpythran_binop_typeÚpythran_unaryop_typeÚhas_np_pythranÚpythran_indexing_codeÚpythran_indexing_typeÚ!is_pythran_supported_node_or_noneÚpythran_typeÚpythran_is_numpy_func_supportedÚpythran_get_func_include_fileÚpythran_functor)ÚPythranExprc                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚNotConstantNc                 ót   •— t         j                  €t        ‰| �  | «      t         _        t         j                  S ©N)rL   Ú_objÚsuperÚ__new__)ÚclsÚ	__class__s    €úbG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\Cython/Compiler/ExprNodes.pyrQ   zNotConstant.__new__C   s,   ø€ Ü×ÑÐ#Ü$™w™¨sÓ3ŒKÔä×ÑÐó    c                  ó   — y)Nz<NOT CONSTANT>© ©Úselfs    rT   Ú__repr__zNotConstant.__repr__I   s   € ØrU   )Ú__name__Ú
__module__Ú__qualname__rO   rQ   rZ   Ú__classcell__©rS   s   @rT   rL   rL   @   s   ø„ Ø€Dô ö rU   rL   c                 ó
   — | | fS rN   rW   )Útps    rT   Ú_type_to_itselfrb   O   s   € Øˆrˆ6€MrU   zGCannot convert Unicode string to 'bytes' implicitly, encoding required.z5Unicode objects only support coercion to Py_UNICODE*.zBCannot convert 'bytes' object to str implicitly, decoding requiredz8Cannot convert 'bytes' object to Py_UNICODE*, use 'str'.z?Cannot convert 'char*' to unicode implicitly, decoding requiredzcython.pymutex cannot be copiedz*cython.pythread_type_lock cannot be copiedc                 ód  ‡ — t         j                  ‰ «      }|€|S |j                  d   r†t        ˆ fd„t        j
                  t        j                  t        j                  t        j                  fD «       «      r6‰ d   j                  r|S |j                  d   dv r|S d‰ d   j                  z  S |S )NÚc_string_encodingc              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wrN   rW   )Ú.0ÚtÚ
type_tuples     €rT   Ú	<genexpr>z&find_coercion_error.<locals>.<genexpr>o   s!   øè ø€ ð rñ ,q a�!�z”/ñ ,qùs   ƒr,   )ÚasciiÚutf8z\'%s' objects do not support coercion to C types with non-ascii or non-utf8 c_string_encodingr   )Úcoercion_error_dictÚgetÚ
directivesÚanyr   r1   Úc_uchar_ptr_typeÚc_const_char_ptr_typeÚc_const_uchar_ptr_typeÚis_pyobjectÚname)rh   ÚdefaultÚenvÚerrs   `   rT   r   r   j   sÃ   ø€ Ü
×
!Ñ
! *Ó
-€CØ
€{ØˆØ
�.‰.Ð,Ò
-Üó r¬J×,FÑ,FÌ
×HcÑHcÜ,6×,LÑ,LÌj×NoÑNoñ,qó rô rà�a‰=×$Ò$ØˆNØ�^‰^Ð/Ñ0Ð4EÑEØˆNàqÐt~ð  @Añ  uB÷  uGñ  uGñ  Gð  Gàˆ
rU   c                 óh   — t         t        t        t        dœj                  | j                  d   «      S )N)ÚbytesÚ	bytearrayÚstrÚunicodeÚc_string_type)r   r    r   rm   rn   )rv   s    rT   Údefault_str_typer~   {   s-   € äÜ#ÜÜñ	÷
 
�cˆ#�.‰.˜Ñ
)Ó*ð+rU   c                  ó¨   — | D ]M  }|� t        |j                  t        t        f«      sŒ&|j                  dk  sŒ6t	        |j
                  dd¬«       ŒO y)z›
    Raise a warning on nodes that are known to have negative numeric values.
    Used to find (potential) bugs inside of "wraparound=False" sections.
    Nr   zfthe result of using negative indices inside of code sections marked as 'wraparound=False' is undefinedr,   ©Úlevel)Ú
isinstanceÚconstant_resultÚintÚfloatr   Úpos)ÚnodesÚnodes     rT   Úcheck_negative_indicesr‰   „   sM   € ó
 ˆØˆ<œz¨$×*>Ñ*>ÄÄeÀÔMØØ×Ñ !Ó#Ü�D—H‘Hð à'(ö*ñ	 rU   c                 ó|  — |j                   sY|€|j                  | «      }|t        u r>|j                  r2t	        |j                  «      dk(  r	 |j                  d   j
                  }|j                   r=|�;|j                  «       r+	 |j                  |j                     }|j                  | «      S |j                   s|j                  �r;|j                  D �cg c]  }|j                  rŒ|‘Œ }}t	        |«      t	        |j                  «      k  }|D �ch c]+  }|j                  rt!        | |«      n|j                  | «      ’Œ- }}d |v ry |D �ch c](  }|j"                  r|j$                  r|j$                  n|’Œ* }}t	        |«      dk(  rx|j'                  «       }|r|j"                  s|j$                  }|S |sH|t(        t*        fv r:t-        d„ |D «       «      r(|t(        u rt.        j0                  nt.        j2                  }|S y # t        $ r Y �Œªw xY w# t        t        t        f$ r Y �Œ|w xY wc c}w c c}w c c}w )Nr,   r   c              3   óX   K  — | ]"  }|j                   xr |j                  «       –— Œ$ y ­wrN   )Úis_string_literalÚcan_coerce_to_char_literal©rf   Úargs     rT   ri   z+infer_sequence_item_type.<locals>.<genexpr>¾   s+   è ø€ ÐoÑ]nÐVY�s×,Ñ,ÒQ°×1OÑ1OÓ1QÓQÑ]nùs   ‚(*)Úis_sequence_constructorÚ
infer_typer   Úcf_stateÚlenÚrhsÚAttributeErrorÚhas_constant_resultÚargsrƒ   Ú
ValueErrorÚ	TypeErrorÚ
IndexErrorÚis_set_literalÚis_noneÚ
is_starredÚinfer_sequence_item_typers   Úequivalent_typeÚpopr   r   Úallr   Úc_py_ucs4_typeÚc_uchar_type)	rv   Úseq_nodeÚ
index_nodeÚseq_typeÚitemÚargs_without_noneÚhas_noneÚ
item_typesÚ	item_types	            rT   rž   rž   “   s2  € Ø×+Ò+ØÐØ×*Ñ*¨3Ó/ˆHØ”zÑ!à× Ò ¤S¨×):Ñ):Ó%;¸qÒ%@ðØ'×0Ñ0°Ñ3×7Ñ7�Hð ×'Ò'ØÐ! j×&DÑ&DÔ&Fð,Ø—}‘} Z×%?Ñ%?Ñ@�ð —‘ sÓ+Ð+Ø×'Ò'¨8×+BÓ+Bà.6¯mªmÓP©m dÀ4Ç<Ã<šT¨mÐÐPÜÐ(Ó)¬C°·±Ó,>Ñ>ˆñ *ó
á)�ð 48·?²?Ô$ S¨$Ô/ÈÏÉÐX[ÓH\Ñ\Ø)ð 	ð 
ð �:Ñàñ (ó
á'�	ð *3×)>Ò)>À9×C\ÒC\ˆI×%Ò%ÐbkÑkØ'ð 	ð 
ô ˆz‹?˜aÒØ"Ÿ™Ó(ˆIÙ 	× 5Ò 5à%×5Ñ5�	ð
 Ðñ	  )´¼jÐ/IÑ"IäÑoÑ]nÓoÔoØ=FÌ,Ñ=V¤
× 9Ò 9Ô\f×\sÑ\s�IØÐØøôK &ò Úðûô ¤	¬:Ð6ò Úðüò Qùò
ùò
s<   ÁH ÂH ÃH/Ã(H/Ä0H4Å-H9È	HÈHÈH,È+H,c           	      ó,  — |D �cg c]ó  }|€t         dt        d«      fnÜ|j                  r<t        |j                  |j                  r|j
                  ndg|j                  z   «      n”|j                  r7t        |j                  |j                  |j                  |j                  f«      nQ|j                  «       r@|j                  |j                  |j                  t         u rt        |j                  «      ndfnd‘Œõ }}d|v ry| t        |«      fS c c}w )a„  
    Recursively generate a deduplication key from a sequence of values.
    Includes Cython node types to work around the fact that (1, 2.0) == (1.0, 2), for example.

    @param outer_type: The type of the outer container.
    @param item_nodes: A sequence of constant nodes that will be traversed recursively.
    @return: A tuple that can be used as a dict key for deduplication.
    N)r   Útyper�   Úmake_dedup_keyÚ
is_literalÚmult_factorr—   Úis_sliceÚstartÚstopÚstepr–   rƒ   Útuple)Ú
outer_typeÚ
item_nodesrˆ   Ú	item_keyss       rT   r®   r®   Ä   s  € ñ$ ó
ñ ˆDð /3¨lŒ˜œt D›zÑ*àgk÷  hDò  hDŒ^˜DŸI™I¸D¿OºO¨×(8Ò(8ÐQUÐ'VÐY]×YbÑYbÑ'bÔcØNRÏmÊmŒ^˜DŸI™I¨¯
©
°D·I±I¸t¿y¹yÐ'IÔJð W[×VnÑVnÔVpð �i‰i˜×-Ñ-Ø,0¯I©I¼Ñ,GŒd�4×'Ñ'Ô(ÈTñSàñ	ð ð ð 
ð ˆyÑØØ”u˜YÓ'Ð'Ð'ùò
s   …C8Dc                 ó*  — | €y| j                   t        j                  k(  r| j                  dk(  ry| j                   j                  r3d| j
                  j                  ›d| j
                  j                  ›d�dfS d| j
                  j                  z  dfS )	N)ú__Pyx_CppExn2PyErr();FÚ*)rº   TzLtry { throw; } catch(const std::exception& exn) {PyErr_SetString((PyObject*)z6, exn.what());} catch(...) { PyErr_SetNone((PyObject*)z); }Fzc%s(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");)r­   r   Úc_char_typeÚvaluers   ÚentryÚcname)Úexception_values    rT   Úget_exception_handlerrÁ   ß   s�   € ØÐØ-Ø
×
Ñ
¤*×"8Ñ"8Ò
8Ø×#Ñ# sÒ*Ø,Ø	×	Ñ	×	)Ó	)ð
  ×%Ñ%×+Ó+Ø×%Ñ%×+Ó+ð	-ð
 ðð 	ð2ð  ×%Ñ%×+Ñ+ñ-ð ðð 	rU   c                 óò   — |ru|rQ| j                   j                  t        j                  dd«      «       | j	                  | j                  d|«      «       y | j	                  | j                  d|«      «       y y )NÚErrOccurredWithGILúExceptions.cú__Pyx_ErrOccurredWithGIL()úPyErr_Occurred())ÚglobalstateÚuse_utility_coder   Úload_cachedÚputlnÚerror_goto_if)ÚcodeÚcheck_py_exceptionr†   Únogils       rT   Úmaybe_check_py_errorrÏ   ö   sg   € ÙÙØ×Ñ×-Ñ-Ü×'Ñ'Ð(<¸nÓMôOà�J‰J�t×)Ñ)Ð*FÈÓLÕMà�J‰J�t×)Ñ)Ð*<¸cÓBÕCð rU   c                 ó¾  — t        |«      \  }}| j                  d«       | j                  d|z  «       |r!| j                  | j                  ||«      «       t        | |||«       | j                  d«       |r| j	                  d¬«       | j                  |«       |r| j                  «        | j                  | j                  |«      «       | j                  d«       y )Nútry {z%sú} catch(...) {T©Údeclare_gilstateÚ})rÁ   rÊ   Úerror_goto_if_nullrÏ   Úput_ensure_gilÚput_release_ensured_gilÚ
error_goto)rÌ   r†   ÚinsideÚ	py_resultrÀ   rÎ   Úraise_py_exceptionrÍ   s           rT   Útranslate_cpp_exceptionrÝ      s·   € Ü-BÀ?Ó-SÑ*ÐÐ*Ø‡J�JˆwÔØ‡J�Jˆt�f‰}ÔÙØ�
‰
�4×*Ñ*¨9°cÓ:Ô;Ü˜Ð1°3¸Ô>Ø‡J�JÐÔ ÙØ×Ñ¨TÐÔ2Ø‡J�JÐ!Ô"ÙØ×$Ñ$Ô&Ø‡J�Jˆt�‰˜sÓ#Ô$Ø‡J�Jˆs…OrU   c                 óÖ   — | j                   dk(  sJ ‚| j                  €y| j                  j                  ryt        | j                  t        «      r| j                  j
                  dk(  ryy)NÚ+TFr»   )Úexception_checkrÀ   Úis_namer‚   ÚCharNoder½   )rˆ   s    rT   Úneeds_cpp_exception_conversionrã     sc   € Ø×Ñ 3Ò&Ð&Ð&Ø×ÑÐ#Øð ×Ñ×#Ò#Øä�$×&Ñ&¬Ô1°d×6JÑ6J×6PÑ6PÐTWÒ6WØàrU   c                 ó
  — t        |«      \  }}	t        |«      \  }
}| j                  d«       | j                  |j                  d|z  «      «       t        | |	||«       | j                  d«       | j                  d|z  «       t        | |||«       | j                  d«       |r| j	                  d¬«       | j                  |
«       |r| j                  «        | j                  | j                  |«      «       | j                  d«       | j                  d«       |r| j	                  d¬«       | j                  |«       |r| j                  «        | j                  | j                  |«      «       | j                  d«       y )NrÑ   z__pyx_local_lvalue = %s;rÒ   TrÓ   rÕ   )rÁ   rÊ   Údeclaration_coderÏ   r×   rØ   rÙ   )rÌ   r†   Úlhs_typeÚlhs_codeÚrhs_codeÚlhs_exc_valÚassign_exc_valrÎ   Úhandle_lhs_excÚlhc_check_py_excÚhandle_assignment_excÚassignment_check_py_excs               rT   Útranslate_double_cpp_exceptionrï   !  sA  € Ü'<¸[Ó'IÑ$€NÐ$Ü5JÈ>Ó5ZÑ2ÐÐ2Ø‡J�JˆwÔØ‡J�Jˆx×(Ñ(Ð)CÀhÑ)NÓOÔPÜ˜Ð/°°eÔ<Ø‡J�JˆwÔØ‡J�JÐ)¨HÑ4Ô5Ü˜Ð6¸¸UÔCà‡J�JÐÔ ÙØ×Ñ¨TÐÔ2Ø‡J�JÐ$Ô%ÙØ×$Ñ$Ô&Ø‡J�Jˆt�‰˜sÓ#Ô$Ø‡J�Jˆs„Oà‡J�JÐÔ ÙØ×Ñ¨TÐÔ2Ø‡J�Jˆ~ÔÙØ×$Ñ$Ô&Ø‡J�Jˆt�‰˜sÓ#Ô$Ø‡J�Jˆs…OrU   c                   ó  — e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZeZe jB                  jD                  dk(  r e# e$jJ                  d«      ¬«      Z&ne#d„ «       Z&d„ Z'd	„ Z(d
„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d^d„Z.d„ Z/d„ Z0d_d„Z1d„ Z2d_d„Z3d„ Z4d„ Z5d„ Z6d„ Z7d„ Z8d„ Z9d„ Z:d„ Z;de<fd„Z=d„ Z>d „ Z?d!„ Z@d"„ ZAd#„ ZBd$„ ZCd%„ ZDd&„ ZEd'„ ZFd(„ ZGd`d)„ZHd*„ ZId+„ ZJd,„ ZKd-„ ZLd.„ ZMd/„ ZNd0„ ZOd1„ ZPd2„ ZQd3„ ZRd4„ ZSd5„ ZTd6„ ZUd7„ ZVd8„ ZWd9„ ZXd:„ ZYd;„ ZZd<„ Z[d=„ Z\d>„ Z]d?„ Z^d@„ Z_dA„ Z`dB„ Za	 	 dadC„Zbd^dD„ZcdE„ ZddF„ ZedG„ ZfdH„ ZgdI„ Zh	 	 dbdJ„ZidK„ ZjdL„ ZkdM„ ZldN„ ZmdO„ ZndP„ ZodcdQ„ZpdR„ ZqdS„ ZrdT„ ZsdU„ ZtdV„ ZudW„ ZvdX„ ZwdY„ ZxdZ„ Zyddd[„Zze{d\„ «       Z|d]„ Z}y)eÚExprNodeNTFÚcpythonÚsubexprs)Úfgetc                 ó   — | j                   S rN   )ró   rX   s    rT   Úchild_attrszExprNode.child_attrsä  s   € à—=‘=Ð rU   c                  ó   — y rN   rW   ©rY   rv   s     rT   Úanalyse_annotationszExprNode.analyse_annotationsè  ó   € ØrU   c                 ód   — t        |d«       t        | j                  j                  ›d|›d�«      ‚)Nznot implementedÚ.z not implemented)r:   r   rS   r[   )rY   Úmethod_names     rT   Únot_implementedzExprNode.not_implementedë  s.   € Ü˜Ð&7Ô8ÜØ'+§~¡~×'>Ó'>ÂÐLóNð 	NrU   c                  ó   — y©Nr   rW   rX   s    rT   Ú	is_lvaluezExprNode.is_lvalueð  ó   € ØrU   c                 óT   — | j                  «       xr | j                  j                   S rN   )r  r­   Úis_memoryviewslicerX   s    rT   Úis_addressablezExprNode.is_addressableó  s!   € Ø�~‰~ÓÒD¨¯	©	×(DÑ(DÐ$DÐDrU   c                 óJ   — | j                   j                  xr | j                  S rN   )r­   rs   Úis_temprX   s    rT   Úis_ephemeralzExprNode.is_ephemeralö  s   € ð �y‰y×$Ñ$Ò5¨¯©Ð5rU   c                 ó²   — g }| j                   D ]E  }t        | |«      }|€Œt        |«      t        u r|j	                  |«       Œ5|j                  |«       ŒG |S rN   )ró   Úgetattrr­   ÚlistÚextendÚappend)rY   r‡   rt   r§   s       rT   Úsubexpr_nodeszExprNode.subexpr_nodesþ  sT   € ð ˆØ—M”MˆDÜ˜4 Ó&ˆDØÑÜ˜“:¤Ñ%Ø—L‘L Õ&à—L‘L Õ&ð "ð ˆrU   c                 óR   — | j                   r| j                  S | j                  «       S rN   )r  Ú	temp_codeÚcalculate_result_coderX   s    rT   ÚresultzExprNode.result  s$   € Ø�<Š<ð
 —>‘>Ð!à×-Ñ-Ó/Ð/rU   c                 ó¾   — |r:| j                   r,| j                  j                  r| j                  j                  r|S d| _        dj                  |rd|«      S d|«      S )NTz{}({})Ú__PYX_STD_MOVE_IF_SUPPORTEDz	std::move)r  r­   Úis_cpp_classÚis_referenceÚhas_temp_movedÚformat)rY   r  Úoptionals      rT   Ú_make_move_result_rhszExprNode._make_move_result_rhs  sP   € Ù˜TŸ\š\¨d¯i©i×.DÒ.DÈTÏYÉY×McÒMcØˆMØ"ˆÔØ�‰ÁÐ<Ð[aÓbÐbÈkÐ[aÓbÐbrU   c                 óD   — | j                  | j                  «       d¬«      S )NT©r  )r  r  rX   s    rT   Úmove_result_rhszExprNode.move_result_rhs  s   € Ø×)Ñ)¨$¯+©+«-À$Ð)ÓGÐGrU   c                 ó´   — | j                  |«      }|j                  s:|j                  s.|j                  xr | j                  }| j                  || ¬«      }|S )Nr  )Ú	result_asr  Úneeds_refcountingÚis_rvalue_referencer  r  )rY   r­   r  Úrequires_moves       rT   Úmove_result_rhs_aszExprNode.move_result_rhs_as  sR   € Ø—‘ Ó%ˆØ×!Ò! T×%;Ò%;Ø ×4Ñ4ÒE¸¿¹ˆMØ×/Ñ/°À]ÐARÐ/ÓSˆFØˆrU   c                 óN   — t        | «      rt        | «      S |€J ‚t        | |«      S rN   )rE   r;   )rY   Útype_s     rT   Úpythran_resultzExprNode.pythran_result%  s.   € Ü,¨TÔ2Ü˜dÓ#Ð#àÐ Ð Ð Ü˜$ Ó&Ð&rU   c                  ó   — y)zZ
        Subtypes may return False here if result temp allocation can be skipped.
        TrW   rX   s    rT   Úis_c_result_requiredzExprNode.is_c_result_required,  s   € ð rU   c                 óè   — | j                   r>| j                  j                  r(|t        k7  rt	        |t        | j                  «       «      S t	        || j                  «       | j                  «       «      S rN   )r  r­   rs   r   r2   r  Úctype©rY   r­   s     rT   r  zExprNode.result_as2  sO   € à�LŠL˜TŸY™Y×2Ò2ØœÒ&ô ˜D¤.°$·+±+³-Ó@Ð@Ü˜˜dŸj™j›l¨D¯K©K«MÓ:Ð:rU   c                 ó,   — | j                  t        «      S rN   )r  r   rX   s    rT   rÛ   zExprNode.py_result;  s   € à�~‰~œnÓ-Ð-rU   c                 ó6   — | j                   xs | j                  S rN   )Úresult_ctyper­   rX   s    rT   r*  zExprNode.ctype?  s   € ð × Ñ Ò- D§I¡IÐ-rU   c                  ó   — y rN   rW   rX   s    rT   Úget_constant_c_result_codez#ExprNode.get_constant_c_result_codeD  s   € ð rU   c                  ó   — y rN   rW   rX   s    rT   Úcalculate_constant_resultz"ExprNode.calculate_constant_resultO  s   € ð 	rU   c                 óN   — | j                   t        uxr | j                   t        uS rN   ©rƒ   Úconstant_value_not_setÚnot_a_constantrX   s    rT   r–   zExprNode.has_constant_result[  ó)   € Ø×#Ñ#Ô+AÐAò :Ø×#Ñ#¬>Ð9ð	:rU   c                 ó0   — t        | j                  d«       y )NzInvalid compile-time expression©r   r†   ©rY   Údenvs     rT   Úcompile_time_valuezExprNode.compile_time_value_  s   € äˆd�h‰hÐ9Õ:rU   c                 ód   — t        | j                  d|j                  j                  ›d|›�«       y )Nz"Error in compile-time expression: ú: )r   r†   rS   r[   )rY   Úes     rT   Úcompile_time_value_errorz!ExprNode.compile_time_value_errorc  s$   € Üˆd�hŠhØ�K‰K× Ó ¡!ð%õ 	&rU   c                 óæ   — | j                  «       }|€t        | j                  d«       y| j                  «       r| j                  n|}t
        j                  j                  ||| j                  «      S )zý
        Returns a PyrexTypes.CFuncType.ExceptionValue (or None)

        The python_value attribute of the result can be either a Python constant
        or a string for types that can't be represented by a Python constant
        (e.g. enums)
        Nz Exception value must be constant)	r0  r   r†   r–   rƒ   r   Ú	CFuncTypeÚExceptionValuer­   )rY   rv   Úc_resultrÛ   s       rT   Úas_exception_valuezExprNode.as_exception_valueg  sc   € ð ×2Ñ2Ó4ˆØÐÜ�$—(‘(Ð>Ô?Øð -1×,DÑ,DÔ,F�D×(Ò(ÈHˆ	Ü×#Ñ#×2Ñ2°9¸hÈÏ	É	ÓRÐRrU   Úreturnc                 ó2  — | j                   ry| j                  ryt        | d«      r| j                  €y| j                  j                  ry| j                  j
                  j                  r-| j                  j                  s| j                  j                  syy)NÚ&__Pyx_ReferenceSharing_SharedReferenceÚ)__Pyx_ReferenceSharing_OwnStrongReferencer¾   Ú'__Pyx_ReferenceSharing_FunctionArgument)	Úin_parallel_blockr  Úhasattrr¾   Úis_argÚscopeÚis_local_scopeÚ
in_closureÚfrom_closurerX   s    rT   Úmay_be_unsafe_sharedzExprNode.may_be_unsafe_sharedy  sv   € ð ×!Ò!Ø;Ø�<Š<ð ?Ü�t˜WÔ%¨¯©Ð);Ø;Ø�:‰:×Òà<Ø�J‰J×Ñ×+Ò+ð —J‘J×)Ò)°$·*±*×2IÒ2IØ>à7rU   c                 ó0   — t        | j                  d«       y )NzCannot assign to or delete thisr9  rø   s     rT   Úanalyse_target_declarationz#ExprNode.analyse_target_declaration’  s   € Üˆd�h‰hÐ9Õ:rU   c                 ó0   — t        | j                  d«       y )Nz=Cannot use anything except a name in an assignment expressionr9  rø   s     rT   Ú0analyse_assignment_expression_target_declarationz9ExprNode.analyse_assignment_expression_target_declaration•  s   € Üˆd�h‰hÐWÕXrU   c                 óH   — | j                  |«      }|j                  «        |S rN   )Úanalyse_typesÚcheck_const©rY   rv   rˆ   s      rT   Úanalyse_const_expressionz!ExprNode.analyse_const_expressionš  s%   € ð
 ×!Ñ! #Ó&ˆØ×ÑÔØˆrU   c                 ó$   — | j                  |«      S rN   ©rX  rø   s     rT   Úanalyse_expressionszExprNode.analyse_expressions£  s   € ð ×!Ñ! #Ó&Ð&rU   c                 ó$   — | j                  |«      S rN   )Úanalyse_target_types©rY   rv   r”   s      rT   Úanalyse_target_expressionz"ExprNode.analyse_target_expression©  s   € ð ×(Ñ(¨Ó-Ð-rU   c                 óJ   — | j                  |«      }|j                  |«      }|S rN   )rX  Úcoerce_to_boolean)rY   rv   rˆ   Úbools       rT   Úanalyse_boolean_expressionz#ExprNode.analyse_boolean_expression¯  s'   € à×!Ñ! #Ó&ˆØ×%Ñ% cÓ*ˆØˆrU   c                 ód   — | j                  |«      }|j                  |«      j                  |«      S rN   )rX  rd  Úcoerce_to_simplerZ  s      rT   Úanalyse_temp_boolean_expressionz(ExprNode.analyse_temp_boolean_expressionµ  s0   € ð ×!Ñ! #Ó&ˆØ×%Ñ% cÓ*×;Ñ;¸CÓ@Ð@rU   c                 ó–   — t        | dd «      �yt        | j                  «       D �cg c]  }|j                  |«      ‘Œ c}d«      S c c}w )Nr­   rW   )r
  Úsumr  Útype_dependenciesrZ  s      rT   rl  zExprNode.type_dependenciesÂ  sL   € ô �4˜ Ó&Ð2ØÜ¸D×<NÑ<NÔ<PÓQÑ<P°D�D×*Ñ*¨3Õ/Ð<PÑQÐSUÓVÐVùÒQs   ¦Ac                 ó~   — t        | dd «      }|�|S t        | dd «      }|�|j                  S | j                  d«       y )Nr­   r¾   r‘   )r
  r­   rþ   ©rY   rv   r­   r¾   s       rT   r‘   zExprNode.infer_typeÉ  sI   € ô
 �t˜V TÓ*ˆØÐØˆKÜ˜˜g tÓ,ˆØÐØ—:‘:ÐØ×Ñ˜\Õ*rU   c                 ó–   — | j                   xs< | j                  xs. | j                  j                  xs | j                  j                  S rN   )r¯   r  r­   Úis_arrayÚis_cfunctionrX   s    rT   Únonlocally_immutablezExprNode.nonlocally_immutableÖ  s5   € ð �‰Ò^ $§,¡,Ò^°$·)±)×2DÑ2DÒ^ÈÏ	É	×H^ÑH^Ð^rU   c                 ón   — t        | j                  | t        j                  | j                  |«      ¬«      S )zŠ
        Return a node that represents the (type) result of an indexing operation,
        e.g. for tuple unpacking or iteration.
        ©ÚbaseÚindex)Ú	IndexNoder†   ÚIntNodeÚfor_size©rY   rv  s     rT   Úinferable_item_nodezExprNode.inferable_item_nodeÛ  s(   € ô
 ˜Ÿ™¨´G×4DÑ4DÀTÇXÁXÈuÓ4UÔVÐVrU   c                  ó   — y rN   rW   rø   s     rT   Úanalyse_as_modulezExprNode.analyse_as_moduleä  ó   € ð rU   c                  ó   — y rN   rW   rø   s     rT   Úanalyse_as_typezExprNode.analyse_as_typeé  r~  rU   c                 óú   — | j                  |«      }|r4|j                  r(|j                  r	 |j                  |j                  «      S |r"|j                  rt        | j                  d«       |S # t        $ r Y Œ1w xY w)NzType is not specific)r€  Úis_fusedÚfused_to_specificÚ
specializeÚKeyErrorr   r†   )rY   rv   r­   s      rT   Úanalyse_as_specialized_typez$ExprNode.analyse_as_specialized_typeî  sp   € Ø×#Ñ# CÓ(ˆÙ�D—M’M c×&;Ò&;ðØ—‘ s×'<Ñ'<Ó=Ð=ñ �D—M’MÜ�$—(‘(Ð2Ô3Øˆøô	 ò Ùðús   ­A. Á.	A:Á9A:c                  ó   — y rN   rW   rø   s     rT   Úanalyse_as_extension_typez"ExprNode.analyse_as_extension_typeû  r~  rU   c                 ó&   — | j                  d«       y )NrX  ©rþ   rø   s     rT   rX  zExprNode.analyse_types   s   € Ø×Ñ˜_Õ-rU   c                 ó$   — | j                  |«      S rN   r]  rø   s     rT   r`  zExprNode.analyse_target_types  s   € Ø×!Ñ! #Ó&Ð&rU   c                 ól   — | j                   r(| j                   j                  r| j                  «        y y y rN   )r­   rs   Ú	gil_errorrø   s     rT   Únogil_checkzExprNode.nogil_check  s(   € ð �9Š9˜Ÿ™×.Ò.Ø�N‰NÕð /ˆ9rU   c                 óx   — |j                   r.| j                  j                  rt        | j                  d«       y y y )Nz3Assignment of Python object not allowed without gil)rÎ   r­   rs   r   r†   rø   s     rT   Úgil_assignment_checkzExprNode.gil_assignment_check  s+   € Ø�9Š9˜Ÿ™×.Ò.Ü�$—(‘(ÐQÕRð /ˆ9rU   c                 ó$   — | j                  «        y©NF)Ú	not_constrX   s    rT   rY  zExprNode.check_const  s   € Ø�‰ÔØrU   c                 ó0   — t        | j                  d«       y )Nz$Not allowed in a constant expressionr9  rX   s    rT   r“  zExprNode.not_const  s   € Üˆd�h‰hÐ>Õ?rU   c                 ó$   — | j                  «        yr’  )Úaddr_not_constrX   s    rT   Úcheck_const_addrzExprNode.check_const_addr  s   € Ø×ÑÔØrU   c                 ó0   — t        | j                  d«       y )NzAddress is not constantr9  rX   s    rT   r–  zExprNode.addr_not_const  s   € Üˆd�h‰hÐ1Õ2rU   c                 ó   — | j                   S rN   ©r  rX   s    rT   Úresult_in_tempzExprNode.result_in_temp!  s   € ð �|‰|ÐrU   c                 ó"   — | j                  «       S rN   ©r  rX   s    rT   Útarget_codezExprNode.target_code*  s   € à×)Ñ)Ó+Ð+rU   c                 ó&   — | j                  d«       y )Nr  rŠ  rX   s    rT   r  zExprNode.calculate_result_code.  s   € Ø×ÑÐ4Õ5rU   c                 ó¬  — | j                   r/t        d| j                  j                  ›d| j                  ›�«      ‚| j
                  }|j                  sz|j                  rt        j                  }n0| j                  s$|j                  s| j                  «       sd | _         y |j                  j                  || j                  ¬«      | _         y d | _         y )Nz!Temp allocated multiple times in r>  ©Ú
manage_ref)r  ÚRuntimeErrorrS   r[   r†   r­   Úis_voidrs   r   r   Úresult_is_usedr  r(  Ú	funcstateÚallocate_tempÚuse_managed_ref)rY   rÌ   r­   s      rT   Úallocate_temp_resultzExprNode.allocate_temp_result5  s£   € Ø�>Š>ÝÈDÏNÉN×LcÓLcÐei×emÒemÐnÓoÐoØ�y‰yˆØ�|Š|Ø×ÒÜ!×0Ñ0‘Ø×)Ò)¨T×-DÒ-DÈ×HaÑHaÔHcØ!%�”ØØ!Ÿ^™^×9Ñ9Ø ×!5Ñ!5ð :ó 7ˆD�Nð "ˆD�NrU   c                 ó(  — | j                   sÉ| j                  sy | j                  rKt        j                  j                  | j                  d   j                  «       «      f| j                  dd  z   nd}| j                  r2t        d| j                  ›d| j                  j                  ›d|›�«      ‚t        d| j                  j                  ›d|›�«      ‚|j                  j                  | j                   «       | j                   | _        d | _         y )Nr   r,   z(?)ztemp z released multiple times in z at z"no temp, but release requested in )r  r¥  r†   r'   ÚpathÚbasenameÚget_descriptionÚold_tempr£  rS   r[   r¦  Úrelease_temp)rY   rÌ   r†   s      rT   Úrelease_temp_resultzExprNode.release_temp_resultD  sÕ   € Ø�~Š~Ø×&Ò&àØW[×W_ÒW_”2—7‘7×#Ñ# D§H¡H¨Q¡K×$?Ñ$?Ó$AÓBÐDÀtÇxÁxÐPQÐPRÀ|ÒSÐejˆCØ�}Š}Ý"Ø—M“M 4§>¡>×#:Ó#:¹Cð$Aó Bð Bõ #Ø—N‘N×+Ó+©Sð$2ó 3ð 3à�‰×#Ñ# D§N¡NÔ3ØŸ™ˆŒØˆ�rU   c                 ó‚   — | j                  «       s/|j                  | j                  «       | j                  «       «       yy)z|
        Make sure we own a reference to result.
        If the result is in a temp, it is already a new reference.
        N)r›  Ú
put_increfr  r*  ©rY   rÌ   s     rT   Úmake_owned_referencezExprNode.make_owned_referenceV  s/   € ð
 ×"Ñ"Ô$Ø�O‰O˜DŸK™K›M¨4¯:©:«<Õ8ð %rU   c                 ó”   — | j                  «       s8|j                  | j                  «       | j                  | j                   ¬«       yy)zJ
        Make sure we own the reference to this memoryview slice.
        ©Úhave_gilN)r›  Úput_incref_memoryviewslicer  r­   Úin_nogil_contextr³  s     rT   Úmake_owned_memoryviewslicez#ExprNode.make_owned_memoryviewslice^  sC   € ð
 ×"Ñ"Ô$Ø×+Ñ+¨D¯K©K«M¸4¿9¹9Ø9=×9NÑ9NÐ5Nð ,õ Pð %rU   c                 ór  — | j                  |«       |j                  | j                  «       | j                  r| j	                  |«       | j                  |«       | j                  rQ| j                  j                  s:| j                  j                  s#| j                  |«       | j                  |«       y y y y rN   )Ú generate_subexpr_evaluation_codeÚmark_posr†   r  r©  Úgenerate_result_coder­   Ú	is_stringÚis_pyunicode_ptrÚgenerate_subexpr_disposal_codeÚfree_subexpr_tempsr³  s     rT   Úgenerate_evaluation_codez!ExprNode.generate_evaluation_codeg  s�   € ð 	×-Ñ-¨dÔ3à�‰�d—h‘hÔØ�<Š<Ø×%Ñ% dÔ+à×!Ñ! $Ô'Ø�<Š< §¡×!4Ò!4¸¿	¹	×8RÒ8Rð ×/Ñ/°Ô5Ø×#Ñ# DÕ)ð	 9SÐ!4ˆ<rU   c                 óP   — | j                  «       D ]  }|j                  |«       Œ y rN   )r  rÃ  ©rY   rÌ   rˆ   s      rT   r¼  z)ExprNode.generate_subexpr_evaluation_codex  s#   € Ø×&Ñ&Ö(ˆDØ×)Ñ)¨$Õ/ñ )rU   c                 ó&   — | j                  d«       y )Nr¾  rŠ  r³  s     rT   r¾  zExprNode.generate_result_code|  s   € Ø×ÑÐ3Õ4rU   c                 óê  — | j                   r/|j                  j                  t        j                  dd«      «       | j
                  r›| j                  j                  s| j                  j                  r"| j                  |«       | j                  |«       | j                  «       r<|j                  | j                  «       | j                  «       | j                   ¬«       y y | j                  |«       y )NÚMoveIfSupportedúCppSupport.cppr¶  )r  rÇ   rÈ   r   rÉ   r  r­   r¿  rÀ  rÁ  rÂ  r  Úput_decref_clearr*  r¹  r³  s     rT   Úgenerate_disposal_codezExprNode.generate_disposal_code  s¼   € Ø×ÒØ×Ñ×-Ñ-Ü×+Ñ+Ð,=Ð?OÓPôRà�<Š<Ø�y‰y×"Ò" d§i¡i×&@Ò&@à×3Ñ3°DÔ9Ø×'Ñ'¨Ô-Ø�{‰{Œ}Ø×%Ñ% d§k¡k£m°T·Z±Z³\Ø59×5JÑ5JÐ1Jð &õ Lð ð
 ×/Ñ/°Õ5rU   c                 óP   — | j                  «       D ]  }|j                  |«       Œ y rN   )r  rË  rÅ  s      rT   rÁ  z'ExprNode.generate_subexpr_disposal_code�  s%   € ð ×&Ñ&Ö(ˆDØ×'Ñ'¨Õ-ñ )rU   c                 ó~  — | j                   �r| j                  j                  s| j                  j                  r#| j	                  |«       | j                  |«       n“| j                  j                  r#|j                  d| j                  «       z  «       nZ| j                  j                  rD|j                  d| j                  «       z  «       |j                  d| j                  «       z  «       | j                  r0|j                  j                  t        j                  dd«      «       y y | j	                  |«       y )Nú%s = 0;z%s.memview = NULL;z%s.data = NULL;rÈ  rÉ  )r  r­   r¿  rÀ  rÁ  rÂ  rs   rÊ   r  r  r  rÇ   rÈ   r   rÉ   r³  s     rT   Úgenerate_post_assignment_codez&ExprNode.generate_post_assignment_code•  sä   € Ø�<‹<Ø�y‰y×"Ò" d§i¡i×&@Ò&@à×3Ñ3°DÔ9Ø×'Ñ'¨Õ-Ø—‘×&Ò&Ø—
‘
˜9 t§{¡{£}Ñ4Õ5Ø—‘×-Ò-Ø—
‘
Ð/°$·+±+³-Ñ?Ô@Ø—
‘
Ð,¨t¯{©{«}Ñ<Ô=à×"Ò"Ø× Ñ ×1Ñ1Ü×+Ñ+Ð,=Ð?OÓPõRð #ð ×/Ñ/°Õ5rU   c                  ó   — y rN   rW   )rY   r”   rÌ   Úoverloaded_assignmentrà   rÀ   s         rT   Úgenerate_assignment_codez!ExprNode.generate_assignment_code§  s   € ð
 	rU   c                  ó   — y rN   rW   ©rY   rÌ   Úignore_nonexistings      rT   Úgenerate_deletion_codezExprNode.generate_deletion_code®  s   € ð 	rU   c                 ó�   — | j                   r)| j                  j                  s| j                  |«       y y | j	                  |«       y rN   )r  r­   r¤  r°  rÂ  r³  s     rT   Ú
free_tempszExprNode.free_temps´  s9   € Ø�<Š<Ø—9‘9×$Ò$Ø×(Ñ(¨Õ.ð %ð ×#Ñ# DÕ)rU   c                 óP   — | j                  «       D ]  }|j                  |«       Œ y rN   )r  rØ  )rY   rÌ   Úsubs      rT   rÂ  zExprNode.free_subexpr_temps»  s!   € Ø×%Ñ%Ö'ˆCØ�N‰N˜4Õ ñ (rU   c                  ó   — y rN   rW   ©rY   rv   rÌ   s      rT   Úgenerate_function_definitionsz&ExprNode.generate_function_definitions¿  rú   rU   c                 ób   — |j                  | j                  «       | j                  «       |«       y rN   )Úput_decref_setr  r*  ©rY   rÌ   r”   s      rT   Úgenerate_decref_setzExprNode.generate_decref_setÄ  s    € Ø×Ñ˜DŸK™K›M¨4¯:©:«<¸Õ=rU   c                 ób   — |j                  | j                  «       | j                  «       |«       y rN   )Úput_xdecref_setr  r*  rà  s      rT   Úgenerate_xdecref_setzExprNode.generate_xdecref_setÇ  s    € Ø×Ñ˜TŸ[™[›]¨D¯J©J«L¸#Õ>rU   c                 óÂ   — |r| j                   sQ|r | j                  r|r| j                  |«       y |j                  | j	                  «       | j                  «       «       y y rN   )Ú
cf_is_nullÚcf_maybe_nullÚgenerate_xgotrefÚ
put_gotrefr  r*  )rY   rÌ   Úhandle_nullÚmaybe_null_extra_checks       rT   Úgenerate_gotrefzExprNode.generate_gotrefÊ  sF   € á §¢Ù × 2Ò 2Ù.Ø×%Ñ% dÕ+à—‘ §¡£¨t¯z©z«|Õ<ð !0rU   c                 ó`   — |j                  | j                  «       | j                  «       «       y rN   )Úput_xgotrefr  r*  r³  s     rT   rè  zExprNode.generate_xgotrefÓ  ó   € Ø×Ñ˜Ÿ™›¨¯
©
«Õ5rU   c                 ó`   — |j                  | j                  «       | j                  «       «       y rN   )Úput_giverefr  r*  r³  s     rT   Úgenerate_giverefzExprNode.generate_giverefÖ  rï  rU   c                 ó`   — |j                  | j                  «       | j                  «       «       y rN   )Úput_xgiverefr  r*  r³  s     rT   Úgenerate_xgiverefzExprNode.generate_xgiverefÙ  s   € Ø×Ñ˜$Ÿ+™+›-¨¯©«Õ6rU   c                 óP   — | j                  «       D ]  }|j                  |«       Œ y rN   )r  ÚannotaterÅ  s      rT   r÷  zExprNode.annotateÞ  s!   € Ø×&Ñ&Ö(ˆDØ�M‰M˜$Õñ )rU   c                 ó  — | }| j                   }| j                  ||«      r| S |j                  }|r|j                  s|j                  }|j                  r|j
                  }|j                  s|j                  �r|j                  r—|j                  s‹|j                  r|j                  j                  ri|j                  }|j                  «       D ]J  }|j                  |«      sŒ||_         |j                   j                  |_        d|j                  _        | c S  |j                  rt        | j                  d«       n0|j                   r|j                  r| S t        | j                  d«       t"        | _         | S | j$                  �4t'        | j                  d| j$                  ¬«      }|j)                  ||«       |j*                  �ruddlm} |j                   j*                  s‹|j                   j0                  rt3        |||«      }|S |j                   j4                  r(t6        j9                  ||«      j)                  ||«      }|S |j:                  sèt        | j                  d|›d	�«       |S |j                   j<                  rd|_        |j                   j?                  || j@                  | jB                  ¬
«      s}|j                   jD                  j                  |jD                  «      rd}	|j                   |f}
n$d}	|j                   jD                  |jD                  f}
t        | j                  |	|
z  «       |S |j0                  rå|jF                  r	 |S |jH                  €'tK        |j                  «      j)                  ||«      }|S |j                   j0                  r*|j                   jM                  |«      sptO        |||«      }|S |tP        u r#|j                   jR                  rtU        ||«      }ntW        |||¬«      }|j                   jM                  |«      stO        |||«      }|S tY        |«      rt[        |j                   «      r|S tY        |j                   «      rt[        |«      r|S tW        |||¬«      }|S |j                   j0                  r6|r%|j\                  rt_        | j                  d|z  «       ta        |||«      }|S |jb                  r%||k7  r |je                  |«      rtg        |||«      }|S |th        jj                  u r%||k7  r |je                  |«      stm        |||«      }|S |j                   |k(  sCto        |j                   «      to        |«      k(  s"|je                  |«      s| jq                  |«       |S )NTzType is not specializedz/Cannot coerce to a type that is not specializedÚ )rt   r­   r,   ©Ú
MemoryViewzCannot convert 'z' to memoryviewslice)Ú	broadcastÚcopyingz3Memoryview '%s' not conformable to memoryview '%s'.z-Different base types for memoryviews (%s, %s)©r­   zTCannot pass Python object as C++ data structure reference (%s &), will pass by copy.)9r­   Úcheck_for_coercion_errorr  Úref_base_typeÚis_cv_qualifiedÚcv_base_typer‚  rq  Úis_ptrÚ	base_typeÚ"get_all_specialized_function_typesÚsame_asr¾   Úusedr   r†   Úis_null_ptrr3   Úcoercion_typeÚNameNodeÚ	coerce_tor  rù  rû  rs   ÚCoerceToMemViewSliceNoderp  ÚCythonArrayNodeÚfrom_carrayÚis_errorÚwritable_neededÚconforms_toÚis_memview_broadcastÚis_memview_copy_assignmentÚdtyperœ   rƒ   ÚNoneNodeÚ
subtype_ofÚPyTypeTestNoder   Úis_intÚCoerceIntToBytesNodeÚCoerceToPyTypeNoder>   r<   r  r   ÚCoerceFromPyTypeNodeÚ
is_complexÚassignable_fromÚCoerceToComplexNoder   Úsoft_complex_typeÚcoerce_from_soft_complexr{   Úfail_assignment)rY   Údst_typerv   ÚsrcÚsrc_typeÚused_as_referenceÚ	signaturerˆ   rû  ÚmsgÚtups              rT   r  zExprNode.coerce_toä  sÐ  € ð  ˆØ—9‘9ˆà×(Ñ(¨°3Ô7ØˆKà$×1Ñ1ÐÙ X×%:Ò%:Ø×-Ñ-ˆHà×#Ò#Ø×,Ñ,ˆHà×Ò × 1Ó 1ð ×%Ò%¨h×.?Ò.?Ø—O’O¨×(:Ñ(:×(GÒ(Gà#×-Ñ-�à!)×!LÑ!LÖ!N�IØ ×(Ñ(¨Õ2Ø#,˜œØ$'§H¡H§N¡N˜œ	Ø)-˜Ÿ	™	œØ#šð "Oð × Ò Ü�d—h‘hÐ 9Õ:Ø×%Ò%¨(¯/ª/à�ä�d—h‘hÐ QÔRä"ˆDŒIØˆKà×ÑÐ)ä˜DŸH™H¨2°D×4FÑ4FÔGˆDØ�N‰N˜8 SÔ)à×&Ó&Ý$Ø—8‘8×.Ò.Ø—8‘8×'Ò'Ü2°3¸À#ÓF�CðR ˆ
ðQ —X‘X×&Ò&Ü)×5Ñ5°c¸3Ó?×IÑIÈ(ÐTWÓX�CðN ˆ
ðM "×*Ò*Ü˜$Ÿ(š(ÚFNÐPôRðJ ˆ
ðE —8‘8×+Ò+Ø/3�HÔ,Ø—x‘x×+Ñ+¨HÀ×@YÑ@YØ48×4SÑ4Sð ,ô Uà—x‘x—~‘~×-Ñ-¨h¯n©nÔ=ØS˜Ø!Ÿh™h¨Ð0™àM˜Ø!Ÿh™hŸn™n¨h¯n©nÐ<˜ä˜$Ÿ(™( C¨#¡IÔ.ðn ˆ
ðk ×!Ò!à�{Š{Øðd ˆ
ðc ×$Ñ$Ð,Ü˜sŸw™wÓ'×1Ñ1°(¸CÓ@�ð` ˆ
ð_ —‘×%Ò%Ø—x‘x×*Ñ*¨8Ô4ä(¨¨h¸Ó<�CðX ˆ
ðU œzÑ)¨c¯h©h¯oªoÜ.¨s°CÓ8‘Cä,¨S°#¸HÔE�Cð
 —x‘x×*Ñ*¨8Ô4Ü(¨¨h¸Ó<�CðB ˆ
ôA ˜XÔ&Ô+DÀSÇXÁXÔ+NàˆJÜ˜SŸX™XÔ&Ü(¨Ô2ð �
ä$ S¨#°HÔ=ˆCð. ˆ
ð- �X‰X×!Ò!Ù  X×%:Ò%:ÜØ—H‘HØjÐmuÑuôwô ' x°°cÓ:ˆCð" ˆ
ð! ×!Ò!Ø˜hÒ&Ø×*Ñ*¨8Ô4Ü% c¨8°SÓ9ˆCð ˆ
ð œ*×6Ñ6Ñ6Ø˜hÒ&Ø×.Ñ.¨xÔ8Ü*¨3°¸#Ó>ˆCð ˆ
ð —H‘H Ò(¬C°·±«M¼SÀ»]Ò,JÈh×NfÑNfÐgoÔNpØ×$Ñ$ XÔ.Øˆ
rU   c                 óœ  — t        | d«      r| j                  j                  nd }| j                  j                  rd| j                  j                  «       › d�nd}|j                  rd|j                  «       › d�nd}|j                  | j                  |«      }t        | j                  d| j                  › d|› d|› d|› |rdnd› |› �
«       y )	Nr¾   z (alias of 'ú')rù  zCannot assign type 'Ú'z to 'rü   )	rL  r¾   rt   r­   Ú
is_typedefÚresolveÚassignment_failure_extra_infor   r†   )rY   r"  Úsrc_nameÚsrc_resolvedÚdst_resolvedÚextra_diagnosticss         rT   r!  zExprNode.fail_assignmento  sÁ   € Ü&-¨d°GÔ&<�4—:‘:—?’?À$ˆØAEÇÁ×AUÒAU˜ d§i¡i×&7Ñ&7Ó&9Ð%:¸"Ñ=Ð[]ˆØ@H×@SÒ@S˜ h×&6Ñ&6Ó&8Ð%9¸Ñ<ÐY[ˆØ$×BÑBÀ4Ç9Á9ÈhÓWÐÜˆd�h‰hØ$ T§Y¡Y K¨q°°Ø�h�Z˜q  Ù)‘¨rÐ2Ð3DÐ2EðGõ	
rU   c                 ó¼   — |r|sd}t        | j                  |f||«      }|�'t        | j                  || j                  |dœz  «       y|r| j	                  |«       yy)Nz)Cannot assign type '%(FROM)s' to '%(TO)s')ÚFROMÚTOTF)r   r­   r   r†   r!  )rY   r"  rv   Úfailru   Úmessages         rT   rÿ  z!ExprNode.check_for_coercion_errorz  s_   € Ù™ØAˆGÜ% t§y¡y°(Ð&;¸WÀcÓJˆØÐÜ�$—(‘(˜G¨t¯y©yÀÑ&IÑIÔJØÙØ× Ñ  Ô*ØØrU   c                 óB   — | j                  t        j                  |«      S rN   )r  r   r   rø   s     rT   Úcoerce_to_pyobjectzExprNode.coerce_to_pyobject†  s   € Ø�~‰~œj×7Ñ7¸Ó=Ð=rU   c           
      ó  — | j                  «       r,t        | j                  «      }t        | j                  |¬«      S | j
                  }|j                  s|j                  r| S |t        j                  u r| S |j                  s$|j                  s|j                  s|j                  rt        | |«      S |j                  rw|j                   rk|j                   j#                  d«      rPt%        | j                  t'        | j                  | t)        j*                  d«      ¬«      g ¬«      j-                  |«      S |j.                  r/t1        |j2                  «      dk(  }t        | j                  |¬«      S t5        | j                  d|z  «       | S )N©r½   zoperator bool)ÚobjÚ	attribute©Úfunctionr—   r   z%Type '%s' not acceptable as a boolean)r–   re  rƒ   ÚBoolNoder†   r­   Úis_enumr  r   Úc_bint_typers   r  r  Úis_floatÚCoerceToBooleanNoder  rN  ÚlookupÚSimpleCallNodeÚAttributeNoder
   ÚEncodedStringrX  Ú	is_ctupler“   Ú
componentsr   )rY   rv   Ú
bool_valuer­   s       rT   rd  zExprNode.coerce_to_boolean‰  s/  € ð
 ×#Ñ#Ô%Ü˜d×2Ñ2Ó3ˆJÜ˜DŸH™H¨JÔ7Ð7à�y‰yˆØ�<Š<˜4Ÿ=š=ØˆKØ”Z×+Ñ+Ñ+ØˆKØ×Ò §¢°·²¸t¿}º}Ü& t¨SÓ1Ð1Ø×Ò 4§:¢:°$·*±*×2CÑ2CÀOÔ2TÜ!Ø—‘Ü&Ø—H‘H $´.×2NÑ2NÈÓ2_ôaàô	÷ '™ sÓ+ð	,ð
 �^Š^Ü˜TŸ_™_Ó-°Ñ2ˆJÜ˜DŸH™H¨JÔ7Ð7ä�$—(‘(ÐCÀdÑJÔKØˆKrU   c                 ór   — | j                   j                  r| S | j                  t        j                  |«      S rN   )r­   r  r  r   Úc_py_ssize_t_typerø   s     rT   Úcoerce_to_indexzExprNode.coerce_to_index¦  s+   € à—y‘y×'Ò'ˆtÐ^¨T¯^©^¼J×<XÑ<XÐZ]Ó-^Ð^rU   c                 ó>   — | j                  «       r| S t        | |«      S rN   )r›  ÚCoerceToTempNoderø   s     rT   Úcoerce_to_tempzExprNode.coerce_to_tempª  s    € à×ÑÔ ØˆKä# D¨#Ó.Ð.rU   c                 óH   — | j                  «       r| S | j                  |«      S rN   )Ú	is_simplerQ  rø   s     rT   rh  zExprNode.coerce_to_simple±  s"   € à�>‰>ÔØˆKà×&Ñ& sÓ+Ð+rU   c                 ó"   — | j                  «       S rN   )r›  rX   s    rT   rS  zExprNode.is_simple¸  s   € ð
 ×"Ñ"Ó$Ð$rU   c                 óB   — 	 | j                  «       S # t        $ r Y yw xY wr’  )rS  Ú	ExceptionrX   s    rT   Útry_is_simplezExprNode.try_is_simple¿  s&   € ð	Ø—>‘>Ó#Ð#øÜò 	Ùð	ús   ‚ ’	�c                 ó²   — | j                   r-| j                   j                  s| j                   j                  sy| j                  «       r| j                  d uS y©NFT)r­   rs   r  r–   rƒ   rX   s    rT   Úmay_be_nonezExprNode.may_be_noneÆ  sE   € Ø�9Š9˜dŸi™i×3Ò3Ø"Ÿi™i×:Ò:ØØ×#Ñ#Ô%Ø×'Ñ'¨tÐ3Ð3ØrU   c                  ó   — y rN   rW   rX   s    rT   Úas_cython_attributezExprNode.as_cython_attributeÎ  ó   € ØrU   c                 óB   — | j                  «       rt        | |||«      S | S rN   )rZ  ÚNoneCheckNode)rY   r7  r   Úformat_argss       rT   Úas_none_safe_nodezExprNode.as_none_safe_nodeÑ  s&   € ð ×ÑÔÜ   u¨g°{ÓCÐCàˆKrU   c                 ó¢   — dj                  «       }|D ]  }||v rŒ	 t        ||«      }|||<   Œ  | |j                  fi |¤ŽS # t        $ r Y Œ:w xY w)z…Instantiate this node class from another node, properly
        copying over all attributes that one would forget otherwise.
        z1cf_state cf_maybe_null cf_is_null constant_result)Úsplitr
  r•   r†   )rR   rˆ   ÚkwargsÚ
attributesÚ	attr_namer½   s         rT   Ú	from_nodezExprNode.from_nodeÙ  so   € ð
 I×NÑNÓPˆ
Û#ˆIØ˜FÑ"Øð*Ü  iÓ0�ð %*��yÒ!ð $ñ �4—8‘8Ñ&˜vÑ&Ð&øô	 "ò Ùðús   œAÁ	AÁAc                  ó   — y)z¼
        Gets the module.path that this node was imported from.

        Many nodes do not have one, or it is ambiguous, in which case
        this function returns a false value.
        NrW   rX   s    rT   Ú!get_known_standard_library_importz*ExprNode.get_known_standard_library_importê  s   € ð rU   ©FrN   ©r   ©FNN)FT©FN)ÚPyExc_TypeErrorrW   )~r[   r\   r]   r.  r­   Ú
annotationr  r®  r¨  r¥  Úis_numpy_attributeÚgenerator_arg_tagrK  r�   Úis_dict_literalr›   rŒ   Úis_attributeÚis_subscriptr±   Úis_buffer_accessÚis_memview_indexÚis_memview_slicer  r  r  r  Ú	is_targetr�   Úis_annotationr5  rƒ   r*   Úimplementationrt   Úpropertyr   Ú
attrgetterrö   rù   rþ   r  r  r  r  r  r  r  r#  r&  r(  r  rÛ   r*  r0  r2  r–   r<  r@  rE  r{   rR  rT  rV  r[  r^  rb  rf  ri  rl  r‘   rr  r{  r}  r€  r†  rˆ  rX  r`  rŽ  r�  rY  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!  rÿ  r9  rd  rN  rQ  rh  rS  rW  rZ  r\  ra  Úclassmethodrg  ri  rW   rU   rT   rñ   rñ   >  s¼  „ ð" €LØ€DØ€JØ€IØ€HØ€OØ€NØÐØÐØÐðf $ÐØ€OØ€NØÐØ€LØ€LØ€HàÐØÐØÐØ ÐØ!&Ðà€GØ€NØ€IØ€JØ€Mà,€Oà
×Ñ×Ñ )Ò+ÙÐ$7 H×$7Ñ$7¸
Ó$CÔD‰à	ñ	!ó 
ð	!òòNò
òEò6òò0ócòHòó'òó;ò.ò.ò
	ò
ò:ò;ò&òSð$8 có 8ò2;òYò
ò'ò.òò	AòWò+ò_ó
Wòò
ò
òò
.ò'òòSòò@òò3ò
ò,ò6ò"òò$9òPò*ò"0ò5ò6ò .ò6ð$ INØGKóóò*ò!òò
>ò?ð 16Ø/3ó=ò6ò6ò7ò
 òIòV	
ó
ò>òò:_ò/ò,ò%òòòóð ñ'ó ð'ó rU   rñ   c                   ó„   ‡ — e Zd ZdZdgZdZˆ fd„Zed„ «       Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )Ú_TempModifierNodez[Base class for nodes that inherit the result of their temp argument and can modify it.
    r�   Fc                 ó(   •— t         ‰| �  ||¬«       y ©N)r�   )rP   Ú__init__©rY   r†   r�   rS   s      €rT   r‚  z_TempModifierNode.__init__ú  s   ø€ Ü‰Ñ˜ #ÐÕ&rU   c                 ó.   — | j                   j                  S rN   ©r�   r­   rX   s    rT   r­   z_TempModifierNode.typeý  ó   € à�x‰x�}‰}ÐrU   c                 ó8   — | j                   j                  |«      S rN   ©r�   r‘   rø   s     rT   r‘   z_TempModifierNode.infer_type  ó   € Ø�x‰x×"Ñ" 3Ó'Ð'rU   c                 óF   — | j                   j                  |«      | _         | S rN   )r�   rX  rø   s     rT   rX  z_TempModifierNode.analyse_types  s   € Ø—8‘8×)Ñ)¨#Ó.ˆŒØˆrU   c                 ó6   — | j                   j                  «       S rN   )r�   r2  rX   s    rT   r2  z+_TempModifierNode.calculate_constant_result  s   € Ø�x‰x×1Ñ1Ó3Ð3rU   c                 ó6   — | j                   j                  «       S rN   ©r�   rZ  rX   s    rT   rZ  z_TempModifierNode.may_be_none  ó   € Ø�x‰x×#Ñ#Ó%Ð%rU   c                 ó6   — | j                   j                  «       S rN   ©r�   rS  rX   s    rT   rS  z_TempModifierNode.is_simple  ó   € Ø�x‰x×!Ñ!Ó#Ð#rU   c                 ó6   — | j                   j                  «       S rN   ©r�   r›  rX   s    rT   r›  z _TempModifierNode.result_in_temp  ó   € Ø�x‰x×&Ñ&Ó(Ð(rU   c                 ó6   — | j                   j                  «       S rN   ©r�   rr  rX   s    rT   rr  z&_TempModifierNode.nonlocally_immutable  ó   € Ø�x‰x×,Ñ,Ó.Ð.rU   c                 ó6   — | j                   j                  «       S rN   ©r�   r  rX   s    rT   r  z'_TempModifierNode.calculate_result_code  ó   € Ø�x‰x�‰Ó Ð rU   c                  ó   — y rN   rW   r³  s     rT   r¾  z&_TempModifierNode.generate_result_code  rú   rU   c                 ó:   — | j                   j                  |«       y rN   ©r�   rÏ  r³  s     rT   rÏ  z/_TempModifierNode.generate_post_assignment_code  ó   € Ø�‰×.Ñ.¨tÕ4rU   c                 ó8   — | j                   j                  |«      S rN   )r�   r©  r³  s     rT   r©  z&_TempModifierNode.allocate_temp_result   s   € Ø�x‰x×,Ñ,¨TÓ2Ð2rU   c                 ó:   — | j                   j                  |«       y rN   ©r�   rØ  r³  s     rT   rØ  z_TempModifierNode.free_temps#  ó   € Ø�‰×Ñ˜DÕ!rU   )r[   r\   r]   Ú__doc__ró   r  r‚  r{  r­   r‘   rX  r2  rZ  rS  r›  rr  r  r¾  rÏ  r©  rØ  r^   r_   s   @rT   r  r  ô  si   ø„ ñàˆw€HØ€Gô'ð ñó ðò(òò4ò&ò$ò)ò/ò!òò5ò3ö"rU   r  c                   ó   — e Zd Zg Zd„ Zd„ Zy)ÚAtomicExprNodec                  ó   — y rN   rW   r³  s     rT   r¼  z/AtomicExprNode.generate_subexpr_evaluation_code4  rú   rU   c                  ó   — y rN   rW   r³  s     rT   rÁ  z-AtomicExprNode.generate_subexpr_disposal_code6  rú   rU   N)r[   r\   r]   ró   r¼  rÁ  rW   rU   rT   r¥  r¥  -  s   „ ð €HòórU   r¥  c                   ó6   — e Zd ZdZeZdZd„ Zd„ Zd„ Z	d„ Z
d„ Zy)ÚPyConstNoder,   Nc                  ó   — y©Nr,   rW   rX   s    rT   rS  zPyConstNode.is_simpleA  r  rU   c                  ó   — yr’  rW   rX   s    rT   rZ  zPyConstNode.may_be_noneD  ó   € ØrU   c                 ó   — | S rN   rW   rø   s     rT   rX  zPyConstNode.analyse_typesG  ó   € ØˆrU   c                 ó   — | j                   S rN   r;  rX   s    rT   r  z!PyConstNode.calculate_result_codeJ  ó   € Ø�z‰zÐrU   c                  ó   — y rN   rW   r³  s     rT   r¾  z PyConstNode.generate_result_codeM  rú   rU   )r[   r\   r]   r¯   r   r­   rŽ  rS  rZ  rX  r  r¾  rW   rU   rT   r©  r©  :  s,   „ ð €JØ€DØ€KòòòòórU   r©  c                   ó6   ‡ — e Zd ZdZdZdZd„ Zd„ Zˆ fd„Zˆ xZ	S )r  r,   ÚPy_NoneNc                  ó   — y rN   rW   r:  s     rT   r<  zNoneNode.compile_time_valueY  r]  rU   c                  ó   — y©NTrW   rX   s    rT   rZ  zNoneNode.may_be_none\  r]  rU   c                 óž   •— |j                   s1|j                  s%|j                  st        | j                  d|z  «       t
        ‰| �  ||«      S )NzCannot assign None to %s)rs   r  r  r   r†   rP   r  ©rY   r"  rv   rS   s      €rT   r  zNoneNode.coerce_to_  sB   ø€ Ø×$Ò$¨×(CÒ(CÀx×GXÒGXä�$—(‘(Ð6¸ÑAÔBÜ‰wÑ  ¨3Ó/Ð/rU   )
r[   r\   r]   rœ   r½   rƒ   r<  rZ  r  r^   r_   s   @rT   r  r  Q  s(   ø„ ð €GØ€Eà€Oòò÷0ð 0rU   r  c                   ó   — e Zd ZdZeZd„ Zy)ÚEllipsisNodeÚPy_Ellipsisc                 ó   — t         S rN   )ÚEllipsisr:  s     rT   r<  zEllipsisNode.compile_time_valuem  s   € ÜˆrU   N)r[   r\   r]   r½   r¾  rƒ   r<  rW   rU   rT   r»  r»  f  s   „ ð €Eà€OórU   r»  c                   óX   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zeefd„«       Zy)Ú	ConstNoder,   Nc                  ó   — yr«  rW   rX   s    rT   rS  zConstNode.is_simpley  r  rU   c                  ó   — yr«  rW   rX   s    rT   rr  zConstNode.nonlocally_immutable|  r  rU   c                  ó   — yr’  rW   rX   s    rT   rZ  zConstNode.may_be_none  r­  rU   c                 ó   — | S rN   rW   rø   s     rT   rX  zConstNode.analyse_types‚  r¯  rU   c                  ó   — yr·  rW   rX   s    rT   rY  zConstNode.check_const…  r]  rU   c                 ó"   — | j                  «       S rN   r�  rX   s    rT   r0  z$ConstNode.get_constant_c_result_codeˆ  s   € Ø×)Ñ)Ó+Ð+rU   c                 ó,   — t        | j                  «      S rN   )r{   r½   rX   s    rT   r  zConstNode.calculate_result_code‹  ó   € Ü�4—:‘:‹ÐrU   c                  ó   — y rN   rW   r³  s     rT   r¾  zConstNode.generate_result_codeŽ  rú   rU   c                 ól  — t         }|t        j                  u s|dk(  s|dk(  r|j                  rt	        | «      S |j
                  st        j                  rt        }n0|j                  rt        }n|t        u rt        }n|t        u rt        }|j                  |u r || ||¬«      }|S  || |||¬«      }|S )NÚNULLr   ©r½   rƒ   ©r½   r­   rƒ   )rÀ  r   Úc_null_ptr_typer  ÚNullNoder  rB  rx  rC  Ú	FloatNoder   Ú	BytesNoder   ÚUnicodeNoder­   )r†   r½   r­   rƒ   rR   r  s         rT   Úfor_typezConstNode.for_type‘  s¦   € äˆØ”:×-Ñ-Ñ-Ø˜&’ E¨Q¢J°D·K²KÜ˜C“=Ð à�[Š[œJ×2Ò2ô ‰CØ�]Š]Ü‰CØ”ZÑÜ‰CØ”\Ñ!ÜˆCà�8‰8�tÑÙ˜ E¸?ÔKˆFð ˆñ ˜ E°ÀoÔVˆFàˆrU   )r[   r\   r]   r¯   rŽ  rS  rr  rZ  rX  rY  r0  r  r¾  Ústaticmethodr5  rÓ  rW   rU   rT   rÀ  rÀ  q  sM   „ ð
 €JØ€Kòòòòòò,òòð Ø3Iò ó ñrU   rÀ  c                   ób   ‡ — e Zd Zej                  Zd	defˆ fd„Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd„ Zˆ xZS )
r@  r½   c                 ó¾   •— |du s|du sJ t        |«      «       ‚t        ‰| �	  |||¬«       |�0|| j                  ur!|t        j
                  u sJ |«       ‚|| _        y y y )NTFrÌ  )ÚreprrP   r‚  r­   r   Ú	bool_type)rY   r†   r½   r­   rS   s       €rT   r‚  zBoolNode.__init__°  sl   ø€ Ø˜‰} ¨¡Ð;´°U³Ó;Ð.Ü‰Ñ˜ E¸5ÐÔAØÐ ¨D¯I©IÑ 5Øœ7×,Ñ,Ñ,Ð2¨dÓ2Ð,ØˆD�Ið !6ÐrU   c                 ó&   — | j                   | _        y rN   rÌ  rX   s    rT   r2  z"BoolNode.calculate_constant_result·  ó   € Ø#Ÿz™zˆÕrU   c                 ó   — | j                   S rN   r;  r:  s     rT   r<  zBoolNode.compile_time_valueº  r±  rU   c                 ón   — | j                   j                  r| j                  rdS dS | j                  rdS dS )NÚPy_TrueÚPy_FalseÚ1Ú0)r­   rs   r½   rX   s    rT   r  zBoolNode.calculate_result_code½  s1   € Ø�9‰9× Ò Ø $§
¢
�9Ð:°
Ð:àŸ*š*�3Ð-¨#Ð-rU   c                 ó’   — | j                   j                  r| S t        | j                  | j                  t
        j                  ¬«      S )N©r½   r­   )r­   rs   r@  r†   r½   r   rØ  rø   s     rT   r9  zBoolNode.coerce_to_pyobjectÃ  s1   € Ø�9‰9× Ò ØˆKÜ˜Ÿ™¨¯
©
¼×9JÑ9JÔKÐKrU   c                 ót   — | j                   j                  r| S t        | j                  | j                  ¬«      S ©Nr;  )r­   r  r@  r†   r½   rø   s     rT   rd  zBoolNode.coerce_to_booleanÈ  s)   € Ø�9‰9×ÒØˆKÜ˜Ÿ™¨¯
©
Ô3Ð3rU   c                 óÈ  — || j                   k(  r| S |t        u r| j                   t        j                  u r| S |j                  rF| j                   j
                  r0t        | j                  | j                  t        j                  ¬«      S |j
                  r7| j                   j                  r!t        | j                  | j                  ¬«      S t        j                  | ||«      S )Nrâ  r;  )r­   r   r   rØ  rs   r  r@  r†   r½   rÀ  r  ©rY   r"  rv   s      rT   r  zBoolNode.coerce_toÍ  s    € Ø�t—y‘yÒ ØˆKØ”~Ñ%¨$¯)©)´w×7HÑ7HÑ*HØˆKØ×Ò D§I¡I×$4Ò$4Ü˜DŸH™H¨D¯J©J¼W×=NÑ=NÔOÐOØ�?Š?˜tŸy™y×4Ò4Ü˜DŸH™H¨D¯J©JÔ7Ð7Ü×"Ñ" 4¨°3Ó7Ð7rU   rN   )r[   r\   r]   r   rB  r­   re  r‚  r2  r<  r  r9  rd  r  r^   r_   s   @rT   r@  r@  ¬  s9   ø„ Ø×!Ñ!€Dñ 4õ ò*òò.òLò
4ö
	8rU   r@  c                   ó2   — e Zd Zej                  ZdZdZd„ Zy)rÏ  rË  r   c                 ó   — | j                   S rN   r;  rX   s    rT   r0  z#NullNode.get_constant_c_result_codeÞ  r±  rU   N)	r[   r\   r]   r   rÎ  r­   r½   rƒ   r0  rW   rU   rT   rÏ  rÏ  Ù  s   „ Ø×%Ñ%€DØ€EØ€OórU   rÏ  c                   ó6   — e Zd Zej                  Zd„ Zd„ Zd„ Zy)râ   c                 ó8   — t        | j                  «      | _        y rN   )Úordr½   rƒ   rX   s    rT   r2  z"CharNode.calculate_constant_resultå  s   € Ü" 4§:¡:›ˆÕrU   c                 ó,   — t        | j                  «      S rN   )rë  r½   r:  s     rT   r<  zCharNode.compile_time_valueè  rÈ  rU   c                 óF   — dt        j                  | j                  «      z  S )Nz'%s')r
   Úescape_charr½   rX   s    rT   r  zCharNode.calculate_result_codeë  s   € Øœ×2Ñ2°4·:±:Ó>Ñ>Ð>rU   N)	r[   r\   r]   r   r¼   r­   r2  r<  r  rW   rU   rT   râ   râ   â  s   „ Ø×!Ñ!€Dò/òó?rU   râ   c                   ó¬   — e Zd ZdZdZdZed„ «       Zed„ «       Zd„ Z	e
ej                  fd„«       Ze
d„ «       Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)rx  rù  Nc                 óx   — t        j                  t        t        j                  | j                  «      «      «      S rN   )r   Ústrip_py2_long_suffixÚhexÚstr_to_numberr½   rX   s    rT   Ú	hex_valuezIntNode.hex_valueû  s'   € ä×*Ñ*¬3¬u×/BÑ/BÀ4Ç:Á:Ó/NÓ+OÓPÐPrU   c                 óR   — t        t        j                  | j                  «      «      S rN   )r{   r   ró  r½   rX   s    rT   Úbase_10_valuezIntNode.base_10_valueÿ  s   € ä”5×&Ñ& t§z¡zÓ2Ó3Ð3rU   c                 óf   — t        j                  | |fi |¤Ž d|vr| j                  «       | _        y y )Nr­   )rñ   r‚  Úfind_suitable_type_for_valuer­   )rY   r†   Úkwdss      rT   r‚  zIntNode.__init__  s4   € Ü×Ñ˜$ Ñ, tÒ,Ø˜ÑØ×9Ñ9Ó;ˆD�Ið rU   c                 ón   — t        |t        «      sJ t        |«      «       ‚ | |t        |«      ||d¬«      S )NT)r½   rƒ   r­   Úis_c_literal)r‚   r„   r×  r{   )rR   r†   Ú	int_valuer­   s       rT   Úfor_intzIntNode.for_int  s3   € ä˜)¤SÔ)Ð:¬4°	«?Ó:Ð)Ù�3œc )›n¸iÈdÐaeÔfÐfrU   c                 óF   — | j                  ||t        j                  ¬«      S ©Nrþ  )rý  r   rM  )rR   r†   rü  s      rT   ry  zIntNode.for_size  s   € à�{‰{˜3 	´
×0LÑ0Lˆ{ÓMÐMrU   c                 óz  — | j                   t        u r	 | j                  «        | j                  s+| j                  «       r| j                  s| j                  dk(  rf| j                  dk(  xr dxs d}t        j                  | j                   |df   }| j                  r t        j                  || j                  «      }|S d| j                   cxk  rdk  rEn nB| j                  r$| j                  j                  r| j                  }|S t        j                  }|S t        j                  }|S # t        $ r Y �Œw xY w)NÚLLr7   r,   r„   i   €l        )rƒ   r5  r2  r˜   rû  r–   ÚunsignedÚlongnessr   Úmodifiers_and_name_to_typer­   Úwidest_numeric_typer  Úc_long_typer   Úint_type)rY   ÚrankÚsuitable_types      rT   rø  z$IntNode.find_suitable_type_for_value  s  € Ø×ÑÔ#9Ñ9ðØ×.Ñ.Ô0ð
 ×ÒØ×+Ñ+Ô-Ø�}Š} §¡°Ò 5à—M‘M TÑ)Ò0¨qÒ5°AˆDÜ&×AÑAÀdÇmÁmÐBSÐUYÐ[`ÐB`ÑaˆMØ�yŠyÜ *× >Ñ >¸}ÈdÏiÉiÓ X�ð Ðð ˜×-Ñ-Ô5°Õ5Ø—9’9 §¡×!1Ò!1Ø$(§I¡I�Mð
 Ðô %/×$:Ñ$:�Mð Ðô !(× 0Ñ 0�ØÐøô+ ò Úðús   ”D- Ä-	D:Ä9D:c           	      ó|  — | j                   |u r| S |j                  s|t        j                  u ry| j	                  «       rBt        | j                  dt        | j                  «      z  |t        | j                  «      ¬«      S t        | j                  | j                  |t        ¬«      S |j                  rR|j                  sFt        | j                  | j                  | j                  |d| j                  | j                   ¬«      }|S |j"                  rSt        | j                  | j                  | j                  t        j$                  d| j                  | j                   ¬«      }nBt        | j                  | j                  | j                  | j                  | j                   ¬«      }t&        j)                  |||«      S )Nz%d.0rÍ  T)r½   rƒ   r­   rû  r  r  F)r½   rƒ   r  r  )r­   rC  r   Ú
float_typer–   rÐ  r†   r„   rƒ   r…   r½   r6  Ú
is_numericr  rx  r  r  rs   r  rÀ  r  ©rY   r"  rv   rˆ   s       rT   r  zIntNode.coerce_to,  s]  € Ø�9‰9˜Ñ ØˆKØ×Ò (¬g×.@Ñ.@Ñ"@Ø×'Ñ'Ô)Ü  §¡°¼#¸d×>RÑ>RÓ:SÑ1SÐZbÜ16°t×7KÑ7KÓ1LôNð Nô ! §¡°·±À(Ü1?ôAð Aà× Ò ¨×)<Ò)<Ü˜4Ÿ8™8¨4¯:©:Àt×G[ÑG[Ø (°tØ$(§M¡M¸D¿M¹MôKˆDð ˆKØ×!Ò!Ü˜4Ÿ8™8¨4¯:©:Àt×G[ÑG[Ü '× 0Ñ 0¸uØ$(§M¡M¸D¿M¹MôK‰Dô ˜4Ÿ8™8¨4¯:©:Àt×G[ÑG[Ø$(§M¡M¸D¿M¹MôKˆDô
 ×"Ñ" 4¨°3Ó7Ð7rU   c                 ó¤   — t        | j                  | j                  | j                  t        j
                  | j                  | j                  ¬«      S )N)r½   rƒ   r­   r  r  )rx  r†   r½   rƒ   r   rB  r  r  rø   s     rT   rd  zIntNode.coerce_to_booleanI  s;   € ÜØ�H‰H˜DŸJ™JØ ×0Ñ0Ü×'Ñ'Ø—]‘]¨T¯]©]ô	<ð 	<rU   c                 ó8  — | j                   j                  rot        j                  | j                  «      }|dkD  rt
        nt        } ||«      }t        j                  |«      }|j                  || j                  «      | _
        y | j                  «       | _
        y )Nl     åa$)r­   rs   r   ró  r½   rò  r{   rñ  Ú
get_py_intr  Úresult_coder0  )rY   rÌ   r½   Ú	formatterÚplain_integer_strings        rT   rÃ  z IntNode.generate_evaluation_codeP  sy   € Ø�9‰9× Ò ô
 ×'Ñ'¨¯
©
Ó3ˆEØ$¨Ò/�´SˆIÙ#,¨UÓ#3Ð Ü#(×#>Ñ#>Ð?SÓ#TÐ Ø#Ÿ™Ð/CÀTÇ]Á]ÓSˆDÕà#×>Ñ>Ó@ˆDÕrU   c                 ó„  — | j                   | j                  }}| j                  «       }|s�|s�| j                  j                  rw|d   dk(  ro|d   dk7  rg| j                  j
                  t        j                  j
                  k\  rd}n3| j                  j
                  t        j                  j
                  k\  rd}||z   |z   S )Nr   Ú-r,   rà  r  ÚL)	r  r  Úvalue_as_c_integer_stringr­   r  r  r   Úc_longlong_typer  )rY   r  r  Úliterals       rT   r0  z"IntNode.get_constant_c_result_code^  sž   € Ø!Ÿ]™]¨D¯M©M�(ˆØ×0Ñ0Ó2ˆÙ™H¨$¯)©)×*:Ò*:¸wÀq¹zÈSÒ?PÐU\Ð]^ÑU_ÐcfÒUfà�y‰y�~‰~¤×!;Ñ!;×!@Ñ!@Ò@Ø‘Ø—‘—‘¤:×#9Ñ#9×#>Ñ#>Ò>Ø�Ø˜Ñ! HÑ,Ð,rU   c                 óÌ  — | j                   }t        |«      dk  r|S d}|d   dk(  rd}|dd  }|d   dk(  rs|d   }|r:|dv r6|dd  j                  «       r#t        t	        j
                  |«      «      }||z   S |dv rd|dd  z   }||z   S |d	v rt        t        |dd  d«      «      }||z   S |j                  «       r(| j                  s| j                  s|sd
t        |«      z  }||z   S )Nr7   rù  r   r  r,   rà  ÚoOxX0123456789ÚoOÚbBz0x%X)	r½   r“   Úisdigitr{   r   ró  r„   r  r  )rY   r½   Úneg_signÚliteral_types       rT   r  z!IntNode.value_as_c_integer_stringi  s  € Ø—
‘
ˆÜˆu‹:˜Š?àˆLØˆØ�‰8�sŠ?ØˆHØ˜!˜"�IˆEØ�‰8�sŠ?Ø  ™8ˆLñ ˜LÐ,<Ñ<ÀÀqÀrÀ×ARÑARÔATô œE×/Ñ/°Ó6Ó7�ð ˜%ÑÐð  Ñ%Ø˜e A B˜i™�ð ˜%ÑÐð  Ñ%ÜœC  a b 	¨1Ó-Ó.�ð ˜%ÑÐð �]‰]Œ_ T§]¢]¸4¿=º=Ùð ¤ U£Ñ+�Ø˜%ÑÐrU   c                 ó   — | j                   S rN   ©r  rX   s    rT   r  zIntNode.calculate_result_code…  ó   € Ø×ÑÐrU   c                 óL   — t        j                  | j                  «      | _        y rN   )r   ró  r½   rƒ   rX   s    rT   r2  z!IntNode.calculate_constant_resultˆ  s   € Ü$×2Ñ2°4·:±:Ó>ˆÕrU   c                 ó@   — t        j                  | j                  «      S rN   )r   ró  r½   r:  s     rT   r<  zIntNode.compile_time_value‹  s   € Ü×"Ñ" 4§:¡:Ó.Ð.rU   )r[   r\   r]   r  r  rû  r{  rô  rö  r‚  r}  r   Ú
c_int_typerý  ry  rø  r  rd  rÃ  r0  r  r  r2  r<  rW   rU   rT   rx  rx  ï  s¥   „ ð €HØ€HØ€Lð ñQó ðQð ñ4ó ð4ò<ð
 Ø*4×*?Ñ*?ò gó ðgð ñNó ðNòò68ò:<òAò	-ò ò8 ò?ó/rU   rx  c                   óH   — e Zd Zej                  Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zy)rÐ  c                 ó8   — t        | j                  «      | _        y rN   )r…   r½   rƒ   rX   s    rT   r2  z#FloatNode.calculate_constant_result‘  s   € Ü$ T§Z¡ZÓ0ˆÕrU   c                 ó  — t        | j                  «      }d|z  j                  d«      }t        j                  | j                  «      }||t        |«      j                  d«      fvrt        | j                  d|z  «       |S )Nz%.330frà  zEUsing this floating point value with DEF may lose precision, using %r)	r…   r½   Ústripr   Únormalise_float_reprr×  Úlstripr   r†   )rY   r;  Úfloat_valueÚstr_float_valueÚ	str_values        rT   r<  zFloatNode.compile_time_value”  sq   € Ü˜DŸJ™JÓ'ˆØ# kÑ1×8Ñ8¸Ó=ˆÜ×.Ñ.¨t¯z©zÓ:ˆ	Ø˜_¬d°;Ó.?×.FÑ.FÀsÓ.KÐLÑLÜ�D—H‘HÐeÐhsÑsÔtØÐrU   c                 óˆ  — |j                   rQ| j                  j                  r;t        | j                  | j
                  | j                  t        j                  ¬«      S |j                  rC| j                  j                   r-t        | j                  | j
                  | j                  |¬«      S t        j                  | ||«      S )N)r½   rƒ   r­   )rs   r­   rC  rÐ  r†   r½   rƒ   r   r  rÀ  r  ræ  s      rT   r  zFloatNode.coerce_toœ  s—   € Ø×Ò D§I¡I×$6Ò$6ÜØ—‘ §
¡
Ø $× 4Ñ 4Ü×'Ñ'ô)ð )ð ×Ò §¡×!6Ò!6ÜØ—‘ §
¡
Ø $× 4Ñ 4Øôð ô ×"Ñ" 4¨°3Ó7Ð7rU   c                 ó   — | j                   S rN   r"  rX   s    rT   r  zFloatNode.calculate_result_code©  r#  rU   c                 óŽ   — | j                   }t        |t        «      sJ ‚t        t	        |«      «      }|dk(  ry|dk(  ry|dk(  ry|S )NÚnanz(Py_HUGE_VAL * 0)ÚinfÚPy_HUGE_VALz-infz(-Py_HUGE_VAL))r½   r‚   r{   r×  r…   )rY   ÚstrvalÚcmpvals      rT   r0  z$FloatNode.get_constant_c_result_code¬  sM   € Ø—‘ˆÜ˜&¤#Ô&Ð&Ð&Ü”e˜F“mÓ$ˆØ�UŠ?Ø&Ø�uŠ_Ø Ø�vÒØ#àˆMrU   c                 ó¢   — | j                  «       }| j                  j                  r"|j                  | j                  |«      | _        y || _        y rN   )r0  r­   rs   Úget_py_floatr½   r  )rY   rÌ   Úc_values      rT   rÃ  z"FloatNode.generate_evaluation_code¹  s>   € Ø×1Ñ1Ó3ˆØ�9‰9× Ò Ø#×0Ñ0°·±¸WÓEˆDÕà&ˆDÕrU   N)r[   r\   r]   r   Úc_double_typer­   r2  r<  r  r  r0  rÃ  rW   rU   rT   rÐ  rÐ  Ž  s+   „ Ø×#Ñ#€Dò1òò8ò òó'rU   rÐ  c                 óê  — t        j                  | «      }|�|j                  r|S |j                  «       }|j	                  | «      }|r:|j
                  r.|j                  }|r|j                  s|j                  r|S |xs |}ddlm} t        d¬«      5  |d   |d   |d   dz
  f}	  |d| z  |d   j                  |¬	«      }|j                  j                  d   j                  }	t        |	t        «      rY|	j!                  |«      }	t        |	t        «      r8|	j"                  }|r#|j                  s|j                  r|cd d d «       S |xs |}	 d d d «       |S # t$        $ r Y Œw xY w# 1 sw Y   |S xY w)
Nr,   )ÚTreeFragmentT©Úignorer   r7   é   ú
sizeof(%s))rt   Úinitial_pos)r   Úparse_basic_typeÚin_c_type_contextÚglobal_scoperE  Úis_typer­   rs   r=  r   ÚfilenameÚrootÚstatsÚexprr‚   ÚSizeofTypeNoderX  Úarg_typer   )
rt   r†   rv   r*  rE  Úglobal_entryr­   r=  ÚdeclarationÚsizeof_nodes
             rT   Ú_analyse_name_as_typerP  Á  sg  € Ü×'Ñ'¨Ó-€EØÐ˜S×2Ò2Øˆà×#Ñ#Ó%€LØ×&Ñ& tÓ,€LÙ˜×,Ò,Ø× Ñ ˆÙ�T×%Ò%¨×)>Ò)>ØˆKØ’˜ˆõ +Ü	˜TÖ	"Ø�1‰v�s˜1‘v˜s 1™v a™xÐ(ˆð	*Ù& |°dÑ':ÀÀQÁÇÁÐ^aÔbˆKð &×*Ñ*×0Ñ0°Ñ3×8Ñ8ˆKÜ˜+¤~Ô6Ø)×7Ñ7¸Ó<�Ü˜k¬>Ô:Ø&×/Ñ/�DÙ ×!1Ò!1°S×5JÒ5JØ#÷ 
#Ñ	"ð "šM T‘E÷ 
#ð €Løô ò 	Ùð	ú÷	 
#ð €Lús7   ÂE(Â(EÃA;E(ÅE(Å	E%Å"E(Å$E%Å%E(Å(E2c                   óR   — e Zd ZdZeZd„ Zdd„Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zy)rÑ  Tc                 ó&   — | j                   | _        y rN   rÌ  rX   s    rT   r2  z#BytesNode.calculate_constant_resultë  rÚ  rU   Nc                 ó¦   — t        j                  | j                  |||…   | j                  j                  «      }t	        | j
                  ||¬«      S ©NrÌ  )r
   Úbytes_literalr½   ÚencodingrÑ  r†   )rY   r²   r³   r´   r½   s        rT   Úas_sliced_nodezBytesNode.as_sliced_nodeî  s@   € Ü×,Ñ,¨T¯Z©Z¸¸dÀ4¸Ñ-HÈ$Ï*É*×J]ÑJ]Ó^ˆÜ˜Ÿ™¨ÀÔFÐFrU   c                 ó6   — | j                   j                  «       S rN   )r½   Ú
byteencoder:  s     rT   r<  zBytesNode.compile_time_valueò  s   € Ø�z‰z×$Ñ$Ó&Ð&rU   c                 ób   — t        | j                  j                  d«      | j                  |«      S )Nz	ISO8859-1)rP  r½   Údecoder†   rø   s     rT   r€  zBytesNode.analyse_as_typeõ  s$   € Ü$ T§Z¡Z×%6Ñ%6°{Ó%CÀTÇXÁXÈsÓSÐSrU   c                 ó2   — t        | j                  «      dk(  S r«  ©r“   r½   rX   s    rT   r�   z$BytesNode.can_coerce_to_char_literalø  ó   € Ü�4—:‘:‹ !Ñ#Ð#rU   c                 óV   — t        | j                  t        | j                  «      ¬«      S rä  )r@  r†   re  r½   rø   s     rT   rd  zBytesNode.coerce_to_booleanû  s   € ô ˜Ÿ™¬¨T¯Z©ZÓ(8Ô9Ð9rU   c                 ó,  — | j                   |k(  r| S |j                  r�| j                  «       st        | j                  d«       | S |j
                  rt        | j                  d«       | S t        | j                  | j                  t        | j                  «      ¬«      S t        | j                  | j                  | j                  ¬«      }|j                  rE|t        t        j                  fv rt        j                  |_         |S | j                  ||d¬«       |S |t         j"                  t         j$                  fv r	||_         |S |t         j&                  t         j(                  t         j*                  fv rG|j,                  j.                  rt         j$                  nt         j"                  |_         t1        ||«      S |j3                  t         j"                  «      r!|j4                  r|j.                  r	||_         |S t6        j9                  |||«      S )Nz?Only single-character string literals can be coerced into ints.zRBytes literals cannot coerce to Py_UNICODE/Py_UCS4, use a unicode literal instead.rÌ  T©r6  )r­   r  r�   r   r†   Úis_unicode_charrâ   r½   rë  rÑ  rƒ   rs   r   r   r   rÿ  r   r1   rq   rp   rr   Úc_void_ptr_typer  Úis_constÚCastNoder  r  rÀ  r  r  s       rT   r  zBytesNode.coerce_to   s¨  € Ø�9‰9˜Ò ØˆKØ�?Š?Ø×2Ñ2Ô4Ü�d—h‘hÐ aÔbØ�Ø×'Ò'Ü�d—h‘hÐ tÔuØ�Ü˜DŸH™H¨D¯J©JÜ,/°·
±
«Oô=ð =ô ˜Ÿ™¨¯©ÀT×EYÑEYÔZˆØ×ÒØœN¬G×,>Ñ,>Ð?Ñ?Ü#×.Ñ.�”	ð ˆKð ×-Ñ-¨h¸À$Ð-ÔGØˆKØœ*×4Ñ4´j×6VÑ6VÐWÑWØ ˆDŒIØˆKØœ*×5Ñ5´z×7XÑ7XÔZd×ZtÑZtÐuÑuØ=E×=OÑ=O×=XÒ=Xœ×9Ò9Ü(×8Ñ8ð ŒIä˜D (Ó+Ð+Ø×%Ñ%¤j×&@Ñ&@ÔAà×(Ò(¨H×,=Ò,=Ø$�”	Ø�ô
 ×"Ñ" 4¨°3Ó7Ð7rU   c                 óà  — | j                   j                  r#|j                  | j                  «      }|| _        y | j                   j                  s| j                   j
                  rC| j                   j                  j                  r#|j                  | j                  «      }|| _        y | j                  j                  «       }t        | j                   t        j                  |«      }|| _        y rN   )r­   rs   Úget_py_string_constr½   r  rp  r  rd  Úget_string_constÚas_c_string_literalr2   r   rc  r  )rY   rÌ   r  r  s       rT   rÃ  z"BytesNode.generate_evaluation_code&  s¬   € Ø�9‰9× Ò Ø×-Ñ-¨d¯j©jÓ9ˆFð "ˆÕð �i‰i×Ò $§)¡)×"4Ò"4¸$¿)¹)×:MÑ:M×:VÒ:VØ×*Ñ*¨4¯:©:Ó6ˆFð "ˆÕð —j‘j×4Ñ4Ó6ˆGä˜dŸi™i¬×)CÑ)CÀWÓMˆFØ!ˆÕrU   c                  ó   — y rN   rW   rX   s    rT   r0  z$BytesNode.get_constant_c_result_code2  r]  rU   c                 ó   — | j                   S rN   r"  rX   s    rT   r  zBytesNode.calculate_result_code5  r#  rU   rN   )r[   r\   r]   rŒ   r   r­   r2  rW  r<  r€  r�   rd  r  rÃ  r0  r  rW   rU   rT   rÑ  rÑ  â  sD   „ ð
 Ðà€Dò*óGò'òTò$ò:ò
$8òL
"òó rU   rÑ  c                   ón   ‡ — e Zd ZdZdZdZeZdˆ fd„	Zd„ Z	d„ Z
dd„Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zˆ xZS )rÒ  TNc                 ób   •— t         ‰| �  |||¬«       |�|| _        |�|t        ur|| _        y y y rT  )rP   r‚  Úbytes_valuer   r­   )rY   r†   r½   rn  r­   rS   s        €rT   r‚  zUnicodeNode.__init__F  sA   ø€ Ü‰Ñ˜ E¸5ÐÔAØÐ"Ø*ˆDÔØÐ ¬LÑ 8ØˆD�Ið !9ÐrU   c                 ó&   — | j                   | _        y rN   rÌ  rX   s    rT   r2  z%UnicodeNode.calculate_constant_resultM  rÚ  rU   c                 óD   — t        | j                  | j                  |«      S rN   )rP  r½   r†   rø   s     rT   r€  zUnicodeNode.analyse_as_typeP  s   € Ü$ T§Z¡Z°·±¸3Ó?Ð?rU   c                 ó8  — t        j                  | j                  |||…   | j                  j                  «      }| j                  �;t        j
                  | j                  |||…   | j                  j                  «      }nd }t        | j                  ||¬«      S )N)r½   rn  )r
   Úencoded_stringr½   rV  rn  rU  rÒ  r†   )rY   r²   r³   r´   r½   rn  s         rT   rW  zUnicodeNode.as_sliced_nodeS  s‰   € Ü×-Ñ-Ø�J‰J�u˜T $�Ñ'¨¯©×)<Ñ)<ó>ˆà×ÑÐ'Ü(×6Ñ6Ø× Ñ   t¨D Ñ1°4×3CÑ3C×3LÑ3LóN‰Kð ˆKÜ˜4Ÿ8™8¨5¸kÔJÐJrU   c                 óà  — || j                   u r	 | S |j                  r_| j                  «       st        | j                  d«       | S t        | j                  «      }t        j                  | j                  ||¬«      S |j                  r"t        | j                  | j                  |¬«      S |j                  �s…|j                  s<|j                  s0|j                  s$|j                  �r<|j                   j"                  �r%| j$                  �M|j&                  r|j)                  «       }t+        | j                  | j$                  ¬«      j-                  ||«      S |j.                  d   rP	 | j                  j1                  |j.                  d   «      }t+        | j                  |¬«      j-                  ||«      S | j                  j7                  «       rSt+        | j                  t9        j:                  | j                  j1                  d«      «      ¬«      j-                  ||«      S t        | j                  d«       | S |t<        ur| j?                  ||d¬	«       | S # t2        t4        f$ r Y Œ´w xY w)
NzhOnly single-character Unicode string literals or surrogate pairs can be coerced into Py_UCS4/Py_UNICODE.rþ  râ  r;  rd   rj   z¨Unicode literals do not support coercion to C types other than Py_UCS4/Py_UNICODE (for characters), Py_UNICODE* (for strings) or char*/void* (for auto-encoded strings).Tra  ) r­   rb  r�   r   r†   rë  r½   rx  rý  rÀ  rÒ  rs   r¿  Úis_cpp_stringr  r  r  r¤  rn  rp  Úelement_ptr_typerÑ  r  rn   ÚencodeÚUnicodeEncodeErrorÚLookupErrorÚisasciir
   ÚBytesLiteralr   rÿ  )rY   r"  rv   rü  Úbyte_strings        rT   r  zUnicodeNode.coerce_to]  s  € Ø�t—y‘yÑ ØðH ˆðG ×%Ò%Ø×2Ñ2Ô4Ü�d—h‘hðPôQð �Ü˜DŸJ™J›ˆIÜ—?‘? 4§8¡8¨Y¸X�?ÓFÐFØ×&Ò&Ü˜tŸx™x¨t¯z©zÀÔIÐIØ×%Ó%Ø×!Ò! X×%;Ò%;¸x¿ºØ—O“O¨×(:Ñ(:×(BÓ(Bà×#Ñ#Ð/Ø×(Ò(à#+×#<Ñ#<Ó#>˜Ü$ T§X¡X°T×5EÑ5EÔF×PÑPÐQYÐ[^Ó_Ð_Ø—>‘>Ð"5Ò6ð_Ø&*§j¡j×&7Ñ&7¸¿¹ÐGZÑ8[Ó&\˜ô  )¨¯©¸ÔE×OÑOÐPXÐZ]Ó^Ð^Ø—:‘:×%Ñ%Ô'Ü$ T§X¡X´^×5PÑ5PÐQU×Q[ÑQ[×QbÑQbÐcjÓQkÓ5lô 'ß'0¡y°¸3Ó'?ð@ä�$—(‘(ðMôNð ˆð œ^Ñ+Ø×)Ñ)¨(°C¸dÐ)ÔCØˆøô /´Ð<ò Ùðús   Å)(I ÉI-É,I-c                 ó2   — t        | j                  «      dk(  S r«  r]  rX   s    rT   r�   z&UnicodeNode.can_coerce_to_char_literal…  r^  rU   c                 óZ   — t        | j                  «      }t        | j                  |¬«      S rä  )re  r½   r@  r†   )rY   rv   rK  s      rT   rd  zUnicodeNode.coerce_to_booleanˆ  s!   € Ü˜$Ÿ*™*Ó%ˆ
Ü˜Ÿ™¨
Ô3Ð3rU   c                 óŽ   — | j                   j                  «       ryt        t        | j                   «      «      }|dk  ry|dk  ryy)Né   éÿ   iÿÿ  iÿÿ )r½   ry  rë  Úmax)rY   Úmax_charvals     rT   Úestimate_max_charvalz UnicodeNode.estimate_max_charvalŒ  s@   € à�:‰:×ÑÔØÜœ#˜dŸj™j›/Ó*ˆØ˜#ÒØØ˜EÒ!ØàrU   c                 óN  — | j                   j                  �rnt        j                  | j                  «      �r |j                  d«      | _        |j                  t        j                  | j                  j                  d«      «      «      }|j                  | j                  «      }|€y |j                  | j                  «       |j                  | j                  ›d|›d|›d|j                  | j                  | j                  «      ›�«       |j                  | j                  d| j                  z  «       y | j                   r!|j#                  | j                  «      | _        y |j%                  | j                  «      | _        y |j'                  | j                  «      | _        y )NÚustringÚunicode_escapez! = PyUnicode_DecodeUnicodeEscape(ú	, sizeof(z) - 1, NULL); z__Pyx_PyUnicode_READY(%s))r­   rs   r
   Ústring_contains_lone_surrogatesr½   Úget_py_constr  rh  rz  rv  Úget_cached_constants_writerr½  r†   rÊ   rÖ   Úput_error_if_negÚis_identifierÚintern_identifierrg  Úget_pyunicode_ptr_const)rY   rÌ   Ú
data_cnameÚ
const_codes       rT   rÃ  z$UnicodeNode.generate_evaluation_code˜  sH  € Ø�9‰9× Ó Ü×=Ñ=¸d¿j¹jÕIð $(×#4Ñ#4°YÓ#?�Ô Ø!×2Ñ2Ü"×/Ñ/°·
±
×0AÑ0AÐBRÓ0SÓTóV�
à!×=Ñ=¸d×>NÑ>NÓO�
ØÐ%ØØ×#Ñ# D§H¡HÔ-Ø× Ñ à×(Ó(Ú"Ú"Ø"×5Ñ5°d×6FÑ6FÈÏÉÔQð	SôTð ×+Ñ+Ø—H‘HÐ9¸D×<LÑ<LÑLõNà×#Ò#Ø#'×#9Ñ#9¸$¿*¹*Ó#E�Õ à#'×#;Ñ#;¸D¿J¹JÓ#G�Õ à#×;Ñ;¸D¿J¹JÓGˆDÕrU   c                 ó   — | j                   S rN   r"  rX   s    rT   r  z!UnicodeNode.calculate_result_code³  r#  rU   c                 ó   — | j                   S rN   r;  r:  s     rT   r<  zUnicodeNode.compile_time_value¶  r±  rU   ©NNrN   )r[   r\   r]   rŒ   rŒ  rn  r   r­   r‚  r2  r€  rW  r  r�   rd  rƒ  rÃ  r  r<  r^   r_   s   @rT   rÒ  rÒ  9  sU   ø„ ð ÐØ€MØ€KØ€Dõò*ò@óKò&òP$ò4ò
òHò6 örU   rÒ  c                   ó   — e Zd ZdZy)ÚIdentifierStringNodeTN)r[   r\   r]   rŒ  rW   rU   rT   r•  r•  º  s   „ à�MrU   r•  c                   óR   — e Zd Zej                  Zd„ Zd„ Zd„ Zd„ Z	d„ Z
dZd„ Zd„ Zy	)
ÚImagNodec                 óL   — t        dt        | j                  «      «      | _        y ©Ng        )Úcomplexr…   r½   rƒ   rX   s    rT   r2  z"ImagNode.calculate_constant_resultÆ  s   € Ü& s¬E°$·*±*Ó,=Ó>ˆÕrU   c                 ó@   — t        dt        | j                  «      «      S r™  )rš  r…   r½   r:  s     rT   r<  zImagNode.compile_time_valueÉ  s   € Ü�sœE $§*¡*Ó-Ó.Ð.rU   c                 ó<   — | j                   j                  |«       | S rN   )r­   Úcreate_declaration_utility_coderø   s     rT   rX  zImagNode.analyse_typesÌ  s   € Ø�	‰	×1Ñ1°#Ô6ØˆrU   c                  ó   — yr’  rW   rX   s    rT   rZ  zImagNode.may_be_noneÐ  r­  rU   c                 óâ   — | j                   |u r| S t        | j                  | j                  ¬«      }|j                  rd|_        t        j                  |_         t        j                  |||«      S )Nr;  r,   )
r­   r—  r†   r½   rs   r  r   Úcomplex_typer¥  r  r  s       rT   r  zImagNode.coerce_toÓ  s[   € Ø�9‰9˜Ñ ØˆKÜ˜Ÿ™¨¯
©
Ô3ˆØ×ÒØˆDŒLÜ×,Ñ,ˆDŒIô ×'Ñ'¨¨h¸Ó<Ð<rU   zConstructing complex numberc                 ó¬   — | j                   j                  r| j                  «       S | j                   j                  ›dt	        | j
                  «      ›d�S )Nz(0, Ú))r­   rs   r  Ú
from_partsr…   r½   rX   s    rT   r  zImagNode.calculate_result_codeá  s9   € Ø�9‰9× Ò Ø—;‘;“=Ð à"&§)¡)×"6Ó"6¼¸d¿j¹jÕ8IÐJÐJrU   c           
      ó  — | j                   j                  rt|j                  | j                  «       ›dt	        | j
                  «      ›d|j                  | j                  «       | j                  «      ›�«       | j                  |«       y y )Nz = PyComplex_FromDoubles(0.0, ú); )	r­   rs   rÊ   r  r…   r½   rÖ   r†   rì  r³  s     rT   r¾  zImagNode.generate_result_codeç  sf   € Ø�9‰9× Ò Ø�J‰Jà—K‘K•MÜ˜$Ÿ*™*Õ%Ø×+Ñ+¨D¯K©K«M¸4¿8¹8ÔDðFôGð
 × Ñ  Õ&ð !rU   N)r[   r\   r]   r   Úc_double_complex_typer­   r2  r<  rX  rZ  r  Úgil_messager  r¾  rW   rU   rT   r—  r—  ¿  s:   „ ð
 ×+Ñ+€Dò?ò/òòò
=ð 0€KòKó'rU   r—  c                   ó.   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚNewExprNodeNc                 óF  — | j                   j                  |«      }|�|j                  s"t        | j                  d«       t
        | _        y | j                  |«       |j                  | j                  «      }|| _	        || _
        |j                  | _        | j                  S )Nz/new operator can only be applied to a C++ class)Úcppclassr€  r  r   r†   r3   r­   Ú	cpp_checkÚget_constructorÚ
class_typer¾   )rY   rv   r­   Úconstructors       rT   r‘   zNewExprNode.infer_typeÿ  s�   € Ø�}‰}×,Ñ,¨SÓ1ˆØˆ<˜t×0Ò0Ü�$—(‘(ÐMÔNÜ"ˆDŒIØØ�‰�sÔØ×*Ñ*¨4¯8©8Ó4ˆØˆŒØ ˆŒ
Ø×$Ñ$ˆŒ	Ø�y‰yÐrU   c                 ó@   — | j                   €| j                  |«       | S rN   )r­   r‘   rø   s     rT   rX  zNewExprNode.analyse_types  s   € Ø�9‰9ÐØ�O‰O˜CÔ ØˆrU   c                  ó   — yr’  rW   rX   s    rT   rZ  zNewExprNode.may_be_none  r­  rU   c                  ó   — y rN   rW   r³  s     rT   r¾  z NewExprNode.generate_result_code  rú   rU   c                 ó<   — d| j                   j                  «       z   S )Nznew )r®  Úempty_declaration_coderX   s    rT   r  z!NewExprNode.calculate_result_code  s   € Ø˜Ÿ™×>Ñ>Ó@Ñ@Ð@rU   )	r[   r\   r]   r­   r‘   rX  rZ  r¾  r  rW   rU   rT   r©  r©  ÷  s#   „ ð €Dòòò
òóArU   r©  c                   ó>  ‡ — e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZdZd„ Zd„ Zd„ Zd	„ Zd
„ Zˆ fd„Zd,d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z dZ!d,d„Z"d„ Z#d„ Z$d„ Z%ˆ fd„Z&d„ Z'd„ Z(d„ Z)d „ Z*d!„ Z+d"„ Z,d#„ Z-d$„ Z.d%„ Z/	 	 d-d&„Z0d'„ Z1d(„ Z2d,d)„Z3d*„ Z4d+„ Z5ˆ xZ6S ).r
  TFNr   rù  c                 ó   — | j                   S rN   )Úcython_attributerX   s    rT   r\  zNameNode.as_cython_attribute4  s   € Ø×$Ñ$Ð$rU   c                 óº   — | j                   € |j                  | j                  «      | _         | j                   �#| j                   j                  j                  r| fS y©NrW   )r¾   rE  rt   r­   Úis_unspecifiedrø   s     rT   rl  zNameNode.type_dependencies7  sD   € Ø�:‰:ÐØŸ™ D§I¡IÓ.ˆDŒJØ�:‰:Ð! d§j¡j§o¡o×&DÒ&DØ�7ˆNàrU   c                 óX  — | j                   € |j                  | j                  «      | _         | j                   �| j                   j                  t        u r| j
                  �| j
                  S t        S | j                   j                  j                  s | j                   j                  j                  r3| j                   | j                   j                  j                   k(  rt        S | j                   j                  t        u rA| j                   | j                   j                  j                   k(  r| j                  dv rt        S | j                   j                  j                  rO| j                   j                  j                  rt        S t        j                  | j                   j                  «      S | j                   j                  j                   rD| j
                  r8| j
                  j"                  r| j                   j$                  s| j
                  S | j                   j                  S )N)r|   Ú
basestring)r¾   rE  rt   r­   r4   Úinferred_typer   Úis_extension_typeÚis_builtin_typer   r   rq  rN  Úis_builtin_scoper   ÚCPtrTypers   r  Úmight_overflowrø   s     rT   r‘   zNameNode.infer_type?  sl  € Ø�:‰:ÐØŸ™ D§I¡IÓ.ˆDŒJà�:‰:Ð §¡§¡Ô4DÑ!DØ×!Ñ!Ð-Ø×)Ñ)Ð)Ü!Ð!Ø�j‰j�o‰o×/Ò/°4·:±:·?±?×3RÒ3RØ—
‘
˜dŸj™jŸo™o×3Ñ3Ò3ô ÐØ�j‰j�o‰o¤Ñ-Ø—
‘
˜dŸj™jŸo™o×3Ñ3Ò3¸¿	¹	ÐE^Ñ8^äÐØ�Z‰Z�_‰_×)Ò)Ø�z‰z×Ñ×0Ò0ä%Ð%ô "×*Ñ*¨4¯:©:¯?©?Ó;Ð;ð �z‰z�‰×*Ò*¨t×/AÒ/Aà×*Ñ*×1Ò1°d·j±j×6OÒ6OØ×-Ñ-Ð-Ø—:‘:—?‘?Ð"rU   c                 óž   — 	 |j                  | j                  «      S # t        $ r& t        | j                  d| j                  z  «       Y y w xY w)Nz"Compile-time name '%s' not defined)rE  rt   r…  r   r†   r:  s     rT   r<  zNameNode.compile_time_value`  sD   € ð	NØ—;‘;˜tŸy™yÓ)Ð)øÜò 	NÜ�$—(‘(Ð@À4Ç9Á9ÑLÖMð	Nús   ‚ �,AÁAc                 óˆ   — | j                   r | j                   j                  j                  ry | j                   j                  S rN   )r¾   r­   rs   r¿   rX   s    rT   r0  z#NameNode.get_constant_c_result_codef  s,   € Ø�zŠz˜TŸZ™ZŸ_™_×8Ò8ØØ�z‰z×ÑÐrU   c                 óv  •— |t         u r¡| j                  }|r“|j                  r‡|j                  }|ry|j                  r2|j
                  r&|j                  |j                  | j                  «      }t        | j                  | j                  ¬«      }||_        |j                  |«       |S t        ‰| �1  ||«      S )N©rt   )r   r¾   rq  Úas_variableÚ
is_builtinrd  Údeclare_builtinrt   r†   r
  Úanalyse_rvalue_entryrP   r  )rY   r"  rv   r¾   Ú	var_entryrˆ   rS   s         €rT   r  zNameNode.coerce_tok  sš   ø€ ð
 ”~Ñ%Ø—J‘JˆEÙ˜×+Ò+Ø!×-Ñ-�	ÙØ ×+Ò+°	×0BÒ0BØ$'×$7Ñ$7¸	¿¹ÈÏÉÓ$Q˜	Ü# D§H¡H°T·Y±YÔ?�DØ!*�D”JØ×-Ñ-¨cÔ2Ø�Kä‰wÑ  ¨3Ó/Ð/rU   c                 óØ  — | j                   }| j                  }| j                  xs |j                  |«      }|�sa|j                  ryd}|j
                  j                  s|j                  d   sd}n'|j                  rt        }n|j                  |«      \  }}|€!|r|j                  d   dk7  rt        nt        }n4|j                  r(|j                  r	 |j                  |j                  «      }d}|j&                  r2|j&                  dk(  }	|j(                  s|j+                  |«      r|	rd	nd
}|rA|j,                  r5|j(                  s)|j.                  st        }t1        |j"                  dd«       |j3                  ||| j"                  | ||¬«      x}| _        |r|j                  s||_        yyy# t        $ r, t!        | j"                  d| j                   z  «       t$        }Y Œøw xY w)as  Implements PEP 526 annotation typing in a fairly relaxed way.

        Annotations are ignored for global variables.
        All other annotations are stored on the entry in the symbol table.
        String literals are allowed and not evaluated.
        The ambiguous Python types 'int' and 'long' are not evaluated - the 'cython.int' form must be used instead.
        NrW   Úannotation_typingÚinfer_typesFzR'%s' cannot be specialized since its type is not a fused argument to this functionÚprivateÚfrozenÚreadonlyÚpubliczxAnnotation ignored since class-level attributes must be Python objects. Were you trying to set up an instance attribute?r7   )Úis_cdefÚ
visibilityÚpytyping_modifiers)rt   ro  r¾   Úlookup_hereÚis_module_scoperJ  rŒ   rn   Úis_py_class_scoper   Úanalyse_type_annotationr4   r‚  rƒ  r„  r-   r   r†   r3   Úis_c_dataclass_scopers   Úcan_coerce_to_pyobjectÚis_c_class_scoper  r   Údeclare_var)
rY   rv   Ú	as_targetrt   ro  r¾   Ú	modifiersÚatyperÔ  Ú	is_frozens
             rT   Údeclare_from_annotationz NameNode.declare_from_annotation~  sÏ  € ð �y‰yˆØ—_‘_ˆ
Ø—
‘
Ò3˜cŸo™o¨dÓ3ˆÚà×"Ò"ØàˆIð —‘×1Ò1à—~‘~Ð&9Ò:à‘Ø×&Ò&ä&‘à#-×#EÑ#EÀcÓ#JÑ �	˜5àˆ}Ù,5¸#¿.¹.ÈÑ:WÐ[`Ò:`Õ(Ôft‘Ø—’ C×$9Ò$9ð'Ø!×,Ñ,¨S×-BÑ-BÓC�Eð #ˆJØ×'Ò'ð  ×4Ñ4¸Ñ@�	Ø×$Ò$¨×(DÑ(DÀSÔ(IÙ/8¡¸h�Jñ ˜S×1Ò1¸5×;LÒ;LÐPU×P^ÒP^ä&�Ü˜
Ÿ™ð )KØLMôOð "%§¡Ø�e˜TŸX™X°9¨}ÈØ#,ð "1ó ".ð .ˆE�D”Jñ
 ˜e×.Ò.Ø)ˆEÕð /ˆ:øô5 (ò 'Ü˜$Ÿ(™(ØnØŸ)™)ñ$ô%ô '’Eð	'ús   ÃF4 Æ42G)Ç(G)c                 ó  — | j                   }|s|j                  | j                  «      }|r|j                  r|j                  S |r;|j                  r/t        j                  |j                  «      }|r|j                  r|S y rN   )r¾   rE  rt   Ú	as_moduleÚknown_standard_library_importr   Ú'get_known_standard_library_module_scoper×  )rY   rv   r¾   rN  s       rT   r}  zNameNode.analyse_as_module¾  si   € ð —
‘
ˆÙØ—J‘J˜tŸy™yÓ)ˆEÙ�U—_’_Ø—?‘?Ð"Ù�U×8Ò8Ü×CÑCÀE×DgÑDgÓhˆEÙ˜×.Ò.Ø�ØrU   c                 ó"  — d }| j                   r t        j                  | j                   «      }n+|j                  rt        j                  | j
                  «      }|r|S | j                  }|s|j                  | j
                  «      }|r7|j                  s+|j                  rt        j                  |j                  «      }|r>|j                  r2|j                  }|j                  r|j                  r|j                  }|S | j
                  dk(  rt        S |j                  rt        j                  | j
                  «      S t        j                  | j
                  «      r1t!        | j"                  d| j
                  › d| j
                  › d�«       y )NÚobjectzFound C type name 'z6' in a Python annotation. Did you mean to use 'cython.z'?)r·  r   rC  rD  Úparse_basic_ctypert   r¾   rE  rF  rå  r   Ú get_known_standard_library_entryr­   rs   rŸ   r   r   r†   rn  s       rT   r€  zNameNode.analyse_as_typeÌ  s@  € ØˆØ× Ò Ü×.Ñ.¨t×/DÑ/DÓE‰DØ×"Ò"Ü×/Ñ/°·	±	Ó:ˆDÙØˆKà—
‘
ˆÙØ—J‘J˜tŸy™yÓ)ˆEÙ˜Ÿš¨5×+NÒ+NÜ×<Ñ<¸U×=`Ñ=`ÓaˆEÙ�U—]’]à—:‘:ˆDØ×Ò D×$8Ò$8Ø×+Ñ+�ØˆKØ�9‰9˜Ò ä!Ð!à× Ò ô ×.Ñ.¨t¯y©yÓ9Ð9Ü×(Ñ(¨¯©Ô3ä�D—H‘HÐ 3°D·I±I°;Ð>tÐuy×u~Ñu~Ðtð  @Bð  Cô  DàrU   c                 óâ   — | j                   }|s|j                  | j                  «      }|rD|j                  r8|j                  j
                  s|j                  j                  r|j                  S y rN   )r¾   rE  rt   rF  r­   r¾  r¿  ©rY   rv   r¾   s      rT   rˆ  z"NameNode.analyse_as_extension_typeò  sQ   € ð —
‘
ˆÙØ—J‘J˜tŸy™yÓ)ˆEÙ�U—]’]Ø�z‰z×+Ò+¨u¯z©z×/IÒ/IØ—z‘zÐ!ØrU   c                 ó(   — | j                  |d¬«      S )NF©Úis_assignment_expression©Ú_analyse_target_declarationrø   s     rT   rT  z#NameNode.analyse_target_declarationý  s   € Ø×/Ñ/°ÈeÐ/ÓTÐTrU   c                 ó(   — | j                  |d¬«      S )NTrî  rð  rø   s     rT   rV  z9NameNode.analyse_assignment_expression_target_declaration 	  s   € Ø×/Ñ/°ÈdÐ/ÓSÐSrU   c                 ó   — d| _         | j                  sC|r!|j                  | j                  «      | _        n |j	                  | j                  «      | _        | j                  rd| j                  _        | j                  s-| j                  �!|j                  }| j                  || ¬«       nP| j                  rD| j                  j                  r.| j                  r"|j                  rt        | j                  d«       | j                  s­|j                  d   r$t        | j                  d| j                  z  d«       |j                  d   d	k7  rt        }nt        }|r-|j!                  | j                  || j                  «      | _        n,|j#                  | j                  || j                  «      | _        | j                  j$                  rt        | _        | j                  j(                  rd| j                  _        y y )
NTrù  )rÞ  z7Cannot redeclare inherited fields in Cython dataclasseszwarn.undeclaredzimplicit declaration of '%s'r,   rÎ  F)rx  r¾   Ú#lookup_assignment_expression_targetrt   rÖ  rå  ro  rÚ  râ  Úis_inheritedr   r†   rn   r   r4   r   Ú$declare_assignment_expression_targetrÝ  Úis_declared_genericr.  rä  Úis_variable)rY   rv   rï  Úis_dataclassr­   s        rT   rñ  z$NameNode._analyse_target_declaration	  sq  € ØˆŒØ�zŠzÙ'Ø ×DÑDÀTÇYÁYÓO�•
à Ÿ_™_¨T¯Y©YÓ7�”
Ø�:Š:Ø79ˆD�J‰JÔ4Ø�zŠz˜dŸo™oÐ9à×3Ñ3ˆLð ×(Ñ(¨¸LÐ8HÐ(ÕIØ�jŠj˜TŸZ™Z×4Ò4Ø—’ C×$<Ò$<Ü�$—(‘(ÐUÔVØ�zŠzØ�~‰~Ð/Ò0Ü˜Ÿ™Ð"@À4Ç9Á9Ñ"LÈaÔPØ�~‰~˜mÑ,°Ò5Ü'‘ä%�Ù'Ø ×EÑEÀdÇiÁiÐQUÐW[×W_ÑW_Ó`�•
à Ÿ_™_¨T¯Y©Y¸¸d¿h¹hÓG�”
Ø�:‰:×)Ò)Ü .ˆDÔØ�:‰:×Òà%&ˆD�J‰JÕ"ð  rU   c                 óÜ  — |j                   d   | _        | j                  }|€„|j                  | j                  «      }|sG|j                  | j                  | j                  «      }|r|j                  r|j                  rd| _	        |st        j                  | _        | S || _        d|_        |j                  j                  rddlm} |j#                  |«       | j%                  |«       | S )NÚinitializedcheckTr,   ©ÚBuffer)rn   Úinitialized_checkr¾   rE  rt   rÉ  r†   rÈ  rd  r¯   r   r3   r­   r  Ú	is_bufferrù  rý  Úused_buffer_aux_varsrÊ  ©rY   rv   r¾   rý  s       rT   rX  zNameNode.analyse_types&	  s½   € Ø!$§¡Ð0BÑ!CˆÔØ—
‘
ˆØˆ=Ø—J‘J˜tŸy™yÓ)ˆEÙØ×+Ñ+¨D¯I©I°t·x±xÓ@�Ù˜U×-Ò-°%·.².Ø&*�D”OÙÜ&×1Ñ1�”	Ø�ØˆDŒJØˆŒ
Ø�:‰:×ÒÝ Ø×'Ñ'¨Ô.Ø×!Ñ! #Ô&ØˆrU   c                 ó0  — | j                  |d¬«       | j                  }|j                  rn|j                  rb|j                  s2|j
                  j                  s| j                  «       s0|j                  r$|j                  x}| _        |j
                  | _        | j                  «       s8t        | j                  d| j                  z  «       t        j                  | _        d|_        |j
                  j                  rddlm} |j#                  |«       | S )NT©rx  zAssignment to non-lvalue '%s'r,   rü  )Úanalyse_entryr¾   rq  rÇ  Úis_overridabler­   r  Úfused_cfunctionr   r†   rt   r   r3   r  rÿ  rù  rý  r   r  s       rT   r`  zNameNode.analyse_target_types:	  sÌ   € Ø×Ñ˜3¨$ÐÔ/à—
‘
ˆØ×Ò %×"3Ò"3à×$Ò$¨¯
©
×(AÒ(AÈ$Ï.É.ÔJZÐ_d×_tÒ_tà%*×%6Ñ%6Ð6�˜œ
Ø!ŸJ™J�”	à�~‰~ÔÜ�$—(‘(Ð;¸d¿i¹iÑGÔHÜ"×-Ñ-ˆDŒIØˆŒ
Ø�:‰:×ÒÝ Ø×'Ñ'¨Ô.ØˆrU   c                 óT  — | j                  |«       | j                  }|j                  rt        | _        |j
                  s|j                  r0|j                  r|j                  rd| _        nd| _        d| _	        | S |j                  j                  rd| _        d| _	        d| _        | S )Nr   r,   FT)r  r¾   r÷  r   r.  Úis_pyglobalrÈ  rd  r  Úis_used_as_rvaluer­   r  r¨  rì  s      rT   rÊ  zNameNode.analyse_rvalue_entryN	  s”   € ð 	×Ñ˜3ÔØ—
‘
ˆà×$Ò$Ü .ˆDÔà×Ò × 0Ò 0Ø×Ò E§N¢NØ �•à �”à%&ˆDÔ"ð
 ˆð	 �Z‰Z×*Ò*Ø ˆDŒLØ%)ˆDÔ"Ø#'ˆDÔ ØˆrU   c                 óÒ   — d| _         | j                  rT| j                  }|j                  r|j                  s| j                  «        y y |j                  r| j                  «        y y y r·  )rÎ   r	  r¾   rÈ  rd  r�  r  rì  s      rT   rŽ  zNameNode.nogil_checkd	  sW   € ØˆŒ
Ø×!Ò!Ø—J‘JˆEØ×ÒØ—~’~Ø—N‘NÕ$ð &à×"Ò"Ø—‘Õ ð #ð "rU   z"Accessing Python global or builtinc                 óf  — | j                  «        | j                  }|j                  }|s:|j                  r.| j                  r"| j                  j
                  r| j                  }|| _        |j                  j                  r0|j                  s|j                  r|j                  d«      | _        y y y ©Nrù  )Úcheck_identifier_kindr¾   r­   rs   r½  r¿  rN  r×  r  Úis_cclass_var_entryÚname_in_module_stateÚmodule_state_lookup)rY   rv   rx  r¾   r­   s        rT   r  zNameNode.analyse_entryp	  s�   € à×"Ñ"Ô$Ø—
‘
ˆØ�z‰zˆÙ˜d×.Ò.°4×3EÒ3EØ×"Ñ"×2Ò2à×%Ñ%ˆDØˆŒ	Ø�;‰;×&Ò&Ø×!Ò! U×%>Ò%>à'*×'?Ñ'?ÀÓ'CˆDÕ$ð &?ð 'rU   c                 óÚ  — | j                   }|j                  r|j                  j                  r|| _        |j                  r‡|j                  j
                  s|j                  j                  r[|j                  rOt        j                  | j                  d t        «      }d|_        | j                   j                  |_        || _         y |j                  s—|j                  sŠ|j                   s}|j"                  sp|j$                  sc| j                   j&                  r| j                   j&                  | _         y | j(                  s$t+        | j,                  d| j                  z  «       y y y y y y y )NTz7'%s' is not a constant, variable or function identifier)r¾   rF  r­   r¾  Ú
type_entryrA  Úis_cpp_enumÚcreate_wrapperr   ÚEntryrt   r   r  rN  rd  rø  rÈ  rq  r  rÇ  Úis_cython_moduler   r†   )rY   r¾   Úpy_entrys      rT   r  zNameNode.check_identifier_kind	  s	  € ð —
‘
ˆØ�=Š=˜UŸZ™Z×9Ò9Ø#ˆDŒOØ�=Š=˜eŸj™j×0Ò0°E·J±J×4JÒ4JÐPU×PdÒPdÜ—|‘| D§I¡I¨t´^ÓDˆHØ#'ˆHÔ Ø!ŸZ™Z×-Ñ-ˆHŒNØ!ˆD�JØ—.’. E×$5Ò$5Ø×"Ò" e×&8Ò&8Ø×$Ò$Ø�z‰z×%Ò%Ø!ŸZ™Z×3Ñ3�•
Ø×*Ò*Ü�d—h‘hÐ YÐ\`×\eÑ\eÑ eÕfð +ð %ð '9Ð"ð %6�.rU   c                 ó¼   — | j                   s| j                  ry| j                  xs |j                  | j                  «      }|j
                  xr |j                   S r’  )r  r·  r¾   rE  rt   rä  rø  rì  s      rT   Ú"is_cimported_module_without_shadowz+NameNode.is_cimported_module_without_shadow“	  sI   € Ø× Ò  D×$9Ò$9ØØ—
‘
Ò3˜cŸj™j¨¯©Ó3ˆØ�‰Ò8 u×'8Ñ'8Ð#8Ð8rU   c                  ó   — yr«  rW   rX   s    rT   rS  zNameNode.is_simple™	  s   € àrU   c                 óB  •— | j                   r…| j                  ry| j                  j                  s| j                  j                  rMt	        | dd«      ryd| _        d}| j                   D ]#  }|j                  j                  «       sŒd} | `|S  | `|S t        ‰| �  «       S )NÚ_none_checkingFT)	r’   r­   rs   r  r
  r  r”   rZ  rP   )rY   rZ  Ú
assignmentrS   s      €rT   rZ  zNameNode.may_be_none�	  s˜   ø€ Ø�=Š=˜TŸYšY¨D¯I©I×,AÒ,AØ,0¯I©I×,HÒ,Hä�tÐ-¨uÔ5ð Ø"&ˆDÔð  ˆKØ"Ÿmœm�
Ø—>‘>×-Ñ-Õ/Ø"&�KØØÐ#ØÐð ,ð Ð#ØÐÜ‰wÑ"Ó$Ð$rU   c                 óÐ   — t         j                  | «      ry| j                  }|r|j                  ry|j                  xs( |j
                  xs |j                  xs |j                  S ©NTF)rñ   rr  r¾   rP  Úis_localrM  rÈ  Úis_readonly©rY   r¾   s     rT   rr  zNameNode.nonlocally_immutable²	  sS   € Ü×(Ñ(¨Ô.ØØ—
‘
ˆÙ˜×(Ò(ØØ�~‰~ÒV §¡ÒV°×1AÑ1AÒVÀU×EVÑEVÐVrU   c                  ó   — y rN   rW   rø   s     rT   Úcalculate_target_resultsz!NameNode.calculate_target_resultsº	  rú   rU   c                 ó¶   — | j                   }|�K|j                  s?|j                  s3|j                  s'|j                  j                  s| j                  «        yyrY  )r¾   rd  rq  rÈ  r­   r“  r"  s     rT   rY  zNameNode.check_const½	  sG   € Ø—
‘
ˆØÐØ—’Ø×"Ò"Ø× Ò Ø—
‘
×#Ò#Ø�N‰NÔØØrU   c                 ó†   — | j                   }|j                  s)|j                  s|j                  s| j	                  «        yyrY  )r¾   Ú
is_cglobalrq  rÈ  r–  r"  s     rT   r—  zNameNode.check_const_addrÈ	  s6   € Ø—
‘
ˆØ× Ò  E×$6Ò$6¸%×:JÒ:JØ×ÑÔ!ØØrU   c                 óÀ   — | j                   j                  xr | j                   j                   xs. | j                   j                  xr | j                   j                  S rN   )r¾   rø  r!  rq  r  rX   s    rT   r  zNameNode.is_lvalueÏ	  sO   € à�J‰J×"Ñ"ò 'Ø—
‘
×&Ñ&Ð&ò
ð �J‰J×#Ñ#ò &Ø�J‰J×%Ñ%ð	
rU   c                 ó`   — | j                   j                  xr | j                  j                   S rN   )r¾   rø  r­   r  rX   s    rT   r  zNameNode.is_addressableØ	  s$   € Ø�z‰z×%Ñ%ÒJ¨d¯i©i×.JÑ.JÐ*JÐJrU   c                  ó   — yr   rW   rX   s    rT   r  zNameNode.is_ephemeralÛ	  s   € ð rU   c                 ó´   — | j                   }|sy| j                   j                  r| j                  sd|j                  z  S | j                  |j                  z   S )Nú<error>ú(*%s))r¾   Úis_cpp_optionalrx  r¿   r  r"  s     rT   r  zNameNode.calculate_result_codeà	  sH   € Ø—
‘
ˆÙØØ�:‰:×%Ò%¨d¯nªnØ˜UŸ[™[Ñ(Ð(Ø×'Ñ'¨%¯+©+Ñ5Ð5rU   c                 ó   — | j                   }|€y |j                  r%|j                  j                  |j                  «       |j                  r|j
                  ry |j                  �r™|j                  j                  sJ d«       ‚|j                  | j                   j                  «      }|j                  rt        j                  }n|j                  j                  }| j                  s[|j!                  | j#                  «       ›d|›d|›d�«       |j!                  d| j#                  «       z  «       |j!                  d«       |j                  j                  t%        j&                  dd«      «       |j!                  d	| j#                  «       ›d|›d�«       | j                  s|j!                  d
«       |j!                  |j)                  | j#                  «       | j*                  «      «       | j-                  |«       y |j                  rè|j                  j.                  sÒ|j                  j                  sJ d«       ‚|j                  | j                   j                  «      }|j                  j                  t%        j&                  dd«      «       |j!                  | j#                  «       ›d|›d|j)                  | j#                  «       | j*                  «      ›�«       | j-                  |«       y |j0                  s$|j                  �rÄ|j                  j.                  �r­|j                  j                  sJ d«       ‚|j                  | j                   j                  «      }|j                  j.                  r€|j                  j                  t%        j&                  dd«      «       |j!                  d	| j#                  «       ›d|›d|j)                  | j#                  «       | j*                  «      ›�«       nÃ|j3                  |j                  «      }| j                   j                  j4                  }|j                  j                  t%        j&                  dd«      «       |j!                  d| j#                  «       ›d|rdnd›|›d|›d|j)                  | j#                  «       | j*                  «      ›�	«       | j-                  |«       y |j6                  s.|j8                  s"|j:                  s|j                  j<                  rÿ| j>                  xs | j                  xr | j@                   }|j                  j<                  xr | jB                  }|jD                  xr | jB                  }	|	r&|j                  jG                  |jH                  «      }
n%|j                  jK                  |jH                  «      }
|
rH|rE|j                  j                  s|s|	r*|jM                  | j*                  || jN                  |
¬«       y y y y |jP                  ri|jD                  r\| jB                  rO|j                  jG                  |jH                  «      }
|jM                  | j*                  || jN                  |
¬«       y y y y )Nú,Python global or builtin not a Python objectz = PyObject_GetItem(ú, ú);úif (unlikely(!%s)) {úPyErr_Clear();ÚGetModuleGlobalNameúObjectHandling.cz__Pyx_GetModuleGlobalName(rÕ   ÚGetBuiltinNamez = __Pyx_GetBuiltinName(r¥  ÚGetNameInClassz__Pyx_GetNameInClass(z(PyObject*)rù  ©Úunbound_check_code))r¾   Úutility_coderÇ   rÈ   rÈ  rd  Úis_pyclass_attrr­   rs   r�  rt   r   Úbuiltins_cnamerN  Únamespace_cnameræ  rÊ   r  r   rÉ   rÖ   r†   rì  r×  r  Únamespace_cname_in_module_stateÚnamespace_cname_is_typer   rP  rQ  r  rç  Ú
allow_nullrþ  r.  Ú cpp_optional_check_for_null_coder¿   Úcheck_for_null_codeÚput_error_if_unboundr¹  r'  )rY   rÌ   r¾   Úinterned_cnameÚ	namespacer>  r@  Úraise_unboundÚmemslice_checkÚoptional_cpp_checkr:  s              rT   r¾  zNameNode.generate_result_codeè	  sð  € Ø—
‘
ˆØˆ=ØØ×ÒØ×Ñ×-Ñ-¨e×.@Ñ.@ÔAØ×Ò §¢ØØ×"Ó"Ø—:‘:×)Ò)ÐYÐ+YÓYÐ)Ø!×3Ñ3°D·J±J·O±OÓDˆNØ×ÒÜ"×1Ñ1‘	à!ŸK™K×7Ñ7�	Ø—?’?Ø—
‘
àŸ™�Ú!Ú&ð(ô)ð
 —
‘
Ð1°D·K±K³MÑAÔBØ—
‘
Ð+Ô,Ø×Ñ×-Ñ-Ü×'Ñ'Ð(=Ð?QÓRôTà�JŠJà—K‘K•MÚ"ð$ô%ð —?’?Ø—
‘
˜3”Ø�J‰J�t×.Ñ.¨t¯{©{«}¸d¿h¹hÓGÔHØ× Ñ  Õ&à×Ò e§k¡k×&AÒ&Aà—:‘:×)Ò)ÐYÐ+YÓYÐ)Ø!×3Ñ3°D·J±J·O±OÓDˆNØ×Ñ×-Ñ-Ü×'Ñ'Ð(8Ð:LÓMôOà�J‰Jà—‘•ÚØ×'Ñ'¨¯©«°t·x±xÔ@ðBôCð
 × Ñ  Õ&à×Ò 5×#3Ó#3¸¿¹×8SÓ8Sà—:‘:×)Ò)ÐYÐ+YÓYÐ)Ø!×3Ñ3°D·J±J·O±OÓDˆNØ�{‰{×*Ò*Ø× Ñ ×1Ñ1Ü×+Ñ+Ð,AÐCUÓVôXà—
’
àŸ™�Ú&Ø×/Ñ/°·±³¸t¿x¹xÔHðJõKð #'×"FÑ"FÀuÇ{Á{Ó"S�Ø*.¯*©*×*:Ñ*:×*RÑ*RÐ'à× Ñ ×1Ñ1Ü×+Ñ+Ð,<Ð>PÓQôSà—
’
àŸ™�Ù)@™ÀbÐHÚ'Ú&Ø×/Ñ/°·±³¸t¿x¹xÔHðJôKð × Ñ  Õ&à�^Š^˜u×/Ò/°5×3EÒ3EÈÏÉ×IfÒIfð ×#Ñ#Ò6 t§¡ÒOÀÇÁÐ<Oð ð #ŸZ™Z×:Ñ:ÒU¸t×?UÑ?UˆNØ!&×!6Ñ!6Ò!Q¸4×;QÑ;QÐá!Ø%*§Z¡Z×%PÑ%PÐQV×Q\ÑQ\Ó%]Ñ"à%*§Z¡Z×%CÑ%CÀEÇKÁKÓ%PÐ"á!¡m¸¿¹×9OÒ9OÑSaÑewØ×)Ñ)¨$¯(©(°E¸4×;PÑ;PÐewÐ)Õxð fx mÐ!ð ×Ò %×"7Ò"7¸D×<RÒ<RØ!&§¡×!LÑ!LÈUÏ[É[Ó!YÐØ×%Ñ% d§h¡h°°t×7LÑ7LÐasÐ%Õtð =SÐ"7ÐrU   c                 óÄ  — | j                   }|€y | j                   j                  j                  r>t        |t        «      r.| j
                  s"|j                  st        | j                  d«       |j                  �rí|j                  j                  sJ d«       ‚|j                  | j                   j                  «      }|j                  | j                   j                  «      }| j                   j                  j                  }	d}
|j                   r4d}d}
|j"                  j%                  t'        j(                  dd«      «       nœ|j                  j*                  r"d}|j-                  t.        j0                  «      }nd|j2                  rH| j                  d	k(  rd
nd}|j"                  j%                  t'        j(                  |d«      «       d|z   }nJ t5        |«      «       ‚|	r|
sd|› d�}|
r|	sJ ‚|j7                  | j                  |›d|›d|›d|j9                  «       ›d�«       t:        rt=        d«       t=        d|z  «       |j?                  |«       |jA                  |«       y | j                  jB                  r| jE                  ||«       n(| j                  jF                  r| jI                  ||«       d}| j                  jJ                  rd}| j                  j                  �r:| jL                  �r-|jO                  |«       |jP                  xs. | j                   jR                  xs | j                   jT                  }|r| jW                  |d¬«       d}|jP                  r0| jY                  ||j[                  | j]                  «       «      «       nz| j^                  sl| j`                  r0| jc                  ||j[                  | j]                  «       «      «       n2| jY                  ||j[                  | j]                  «       «      «       nd}|r|je                  |«       | j                  jB                  �st|�s@|rš|jg                  «       }|dk(  r_ti        || j                  | jk                  «       ›d|›d�| j                  j                  r| jk                  «       nd || jl                  «       nÊ|jo                  | jk                  «       ›d|›d�«       n¤|jq                  | j]                  «       «      }ts        | j                  «      r8|jo                  d| jk                  «       ›d| jk                  «       ›d|›d�«       n8|| jk                  «       k7  r%|jo                  | jk                  «       ›d|›d�«       t:        rt=        d«       t=        d|z  «       |ju                  |«       n!|jw                  «       r|ju                  |«       |jA                  |«       y )Nz?Literal list must be assigned to pointer at time of declarationr0  FÚ__Pyx_SetItemOnTypeDictTÚSetItemOnTypeDictzExtensionTypes.cÚPyDict_SetItemrQ   ÚSetNewInClassÚSetNameInClassr6  Ú__Pyx_ú((PyObject*)r¢  Ú(r1  z"NameNode.generate_assignment_code:z"...generating disposal code for %s)rê  rß   ú = Ú;únew (&ú) decltype(ú){ú};z)...generating post-assignment code for %s)<r¾   r­   r  r‚   ÚListNodeÚlhs_of_first_assignmentÚin_module_scoper   r†   r  rs   r�  rt   r?  rN  r@  Ú	is_memberrÇ   rÈ   r   rÉ   r×  r  r   Úmoddict_cnamer<  r×  r‹  rÛ   r   ÚprintrË  rØ  r  Ú generate_acquire_memoryviewslicerÿ  Úgenerate_acquire_bufferrd  r¨  r´  r'  rP  rQ  rì  rá  r  r*  ræ  rç  rä  rò  r  rÝ   r  r¹  rÊ   r#  r>   rÏ  r›  )rY   r”   rÌ   rÑ  rà   rÀ   r¾   rE  rF  Únamespace_is_typeÚnamespace_needs_typeÚsetterÚnÚassignedÚis_external_refr  s                   rT   rÒ  z!NameNode.generate_assignment_codeF
  s„  € ð —
‘
ˆØˆ=Øà�J‰J�O‰O×"Ò"¤z°#´xÔ'@Ø×4Ò4¸S×=PÒ=PÜ�$—(‘(Ð]Ô^ð ×ÓØ—:‘:×)Ò)ÐYÐ+YÓYÐ)Ø!×3Ñ3°D·J±J·O±OÓDˆNØ×<Ñ<¸T¿Z¹Z×=MÑ=MÓNˆIØ $§
¡
× 0Ñ 0× HÑ HÐØ#(Ð Ø�Šð 3�Ø'+Ð$Ø× Ñ ×1Ñ1Ü×+Ñ+Ð,?ÐASÓTõVà—‘×,Ò,Ø)�Ø ×5Ñ5´f×6JÑ6JÓK‘	Ø×&Ò&à'+§y¡y°IÒ'=‘OÐCS�Ø× Ñ ×1Ñ1´+×2IÑ2IÈ!ÐM_Ó2`ÔaØ! A™‘à)œd 5›kÓ)�uÙ Ñ)=Ø*¨9¨+°QÐ7�	á,Ñ5FÐGÐGØ×!Ñ!Ø—‘âÚÚ"Ø—M‘M•Oð	%ô&õ #ÜÐ:Ô;ÜÐ:¸SÑ@ÔAØ×&Ñ& tÔ,Ø�N‰N˜4Õ à�y‰y×+Ò+Ø×5Ñ5°c¸4Õ@à—‘×$Ò$ð ×,Ñ,¨S°$Ô7ØˆHØ�y‰y×!Ò!à�Ø�y‰y×$Ó$ð
 ×'Ó'Ø×,Ñ,¨TÔ2Ø&+×&6Ñ&6Ò&j¸$¿*¹*×:OÑ:OÒ&jÐSW×S]ÑS]×SjÑSj�OÙ&Ø×,Ñ,¨T¸tÐ,ÔDØ#�HØ×'Ò'Ø×0Ñ0°°s·}±}ÀTÇZÁZÃ\Ó7RÕSà#ŸšØ#×1Ò1Ø $× 9Ñ 9¸$ÀÇÁÈdÏjÉjËlÓ@[Õ \à $× 8Ñ 8¸¸s¿}¹}ÈTÏZÉZË\Ó?ZÕ [à',˜HÙ&Ø×,Ñ,¨TÔ2Ø—9‘9×/Ó/ÚÙ,Ø!$×!4Ñ!4Ó!6˜Ø*¨cÒ1Ü3Ø $ d§h¡hØ.2¯k©k­mºVÐ DØ15·±×1FÒ1F §¡¤ÈDØ /°×1FÑ1Fõ	Hð !ŸJ™J°T·[±[µ]ÂFÐ'KÕLà!$×!7Ñ!7¸¿
¹
»Ó!E˜ä*¨4¯9©9Ô5Ø ŸJšJÈÏÉÍÐW[×WbÑWbÕWdÒflÐ'mÕnØ# t§{¡{£}Ò4Ø ŸJ™J°T·[±[µ]ÂFÐ'KÔLÝ&ÜÐ>Ô?ÜÐEÈÑKÔLØ×1Ñ1°$Õ7Ø×#Ñ#Ô%Ø×1Ñ1°$Ô7à�N‰N˜4Õ rU   c           	      ó®   — ddl m} |j                  | j                  «       | j                  | j
                  ||| j                   | j                  ¬«       y)z‘
        Slices, coercions from objects, return values etc are new references.
        We have a borrowed reference in case of dst = src
        r,   rú  )Ú	lhs_cnameræ   Úlhs_posr”   rÌ   r·  Úfirst_assignmentN)rù  rû  Úput_acquire_memoryviewslicer  r­   r†   r¹  ræ  )rY   r”   rÌ   rû  s       rT   r_  z)NameNode.generate_acquire_memoryviewslice¾
  sJ   € õ
 	!à×.Ñ.Ø—k‘k“mØ—Y‘YØ—H‘HØØØ×.Ñ.Ð.Ø!Ÿ_™_ð 	/õ 	.rU   c                 óN  — t        |t        «      xs |j                  «       }|r |j                  | j	                  «       «      }ne|j
                  j                  | j                  j                  d¬«      }|j                  |›d|j                  | j	                  «       «      ›d�«       ddl
m} |j                  | j                  «       || j                  | j                   | j                  |¬«       |s0|j                  d|z  «       |j
                  j!                  |«       y y )	NFr¡  rS  rT  r,   rü  )Úis_initializedr†   rÌ   rÎ  )r‚   r
  r›  r  r*  r¦  r§  r¾   r­   rÊ   rù  rý  Úput_assign_to_bufferr  rZ  r†   r¯  )rY   r”   rÌ   Ú
pretty_rhsÚrhstmprý  s         rT   r`  z NameNode.generate_acquire_bufferÎ
  sÞ   € ô   ¤XÓ.ÒF°#×2DÑ2DÓ2Fˆ
ÙØ—]‘] 4§:¡:£<Ó0‰Fà—^‘^×1Ñ1°$·*±*·/±/ÈeÐ1ÓTˆFØ�J‰J¢V¨S¯]©]¸4¿:¹:»<Õ-HÐIÔJåØ×#Ñ# D§K¡K£M°6¸4¿:¹:Ø7;×7SÑ7SÐ3SØ(,¯©°tð 	$ô 	=ñ Ø�J‰J�y 6Ñ)Ô*Ø�N‰N×'Ñ'¨Õ/ð rU   c                 óÈ  — | j                   €y | j                   j                  r›| j                   j                  j                  }|j	                  | j                   j
                  «      }|rd}nd| j                   j
                  z  }|j                  d|›d|›d|›d|j                  | j                  «      ›d�	«       y | j                   j                  r¼|j                  j                  t        j                  dd	«      «       |j	                  | j                   j
                  «      }d
t        j                  ›d|›d�}|r2|j                  d|›d|j                  | j                  «      ›d�«       y |j!                  | j                  |«       y | j                   j"                  j$                  s | j                   j"                  j&                  rü| j(                  sï| j*                  r3|s1|j-                  | j                  | j                   | j.                  «       | j                   j0                  r| j3                  |d|¬«       |rH| j*                  r<|j5                  | j7                  «       | j9                  «       | j:                   ¬«       y |j=                  | j7                  «       | j9                  «       | j:                   ¬«       y y t?        | j                  d«       y )NzPyErr_Clear(); elsezT{ PyErr_Clear(); PyErr_Format(PyExc_NameError, "name '%%s' is not defined", "%s"); }zif (unlikely(PyObject_DelItem(r1  z>) < 0)) { if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) Ú ú }ÚPyObjectSetAttrStrr6  ú__Pyx_PyObject_DelAttrStr(r¢  úif (unlikely(zW < 0)) { if (likely(PyErr_ExceptionMatches(PyExc_AttributeError))) PyErr_Clear(); else T)rê  rë  r¶  z!Deletion of C names not supported) r¾   r<  rN  r>  r�  rt   rÊ   rÙ   r†   r  rÇ   rÈ   r   rÉ   r   Úmodule_cnamer‹  r­   rs   r  ræ  rç  rD  r¹  rP  rì  Úput_xdecref_clearr  r*  rÎ   rÊ  r   )rY   rÌ   rÕ  rF  rE  Úkey_error_codeÚdel_codes          rT   rÖ  zNameNode.generate_deletion_codeâ
  s-  € Ø�:‰:ÐØØ�Z‰Z×'Ò'ØŸ
™
×(Ñ(×8Ñ8ˆIØ!×3Ñ3°D·J±J·O±OÓDˆNÙ!Ø!6‘ð mØ—J‘J—O‘Oñ$ð ð �JŠJò !¢.Ú%Ø—‘ t§x¡xÕ0ð2õ3ð �Z‰Z×#Ò#Ø×Ñ×-Ñ-Ü×'Ñ'Ð(<Ð>PÓQôSà!×3Ñ3°D·J±J·O±OÓD‰Nä×#Ó#¢^ð5ˆHá!Ø—
’
ò $ T§_¡_°T·X±XÕ%>ð@õAð
 ×%Ñ% d§h¡h°Õ9Ø�Z‰Z�_‰_×(Ò(¨D¯J©J¯O©O×,NÒ,NØ—?’?Ø×%Ò%Ñ.@Ø×-Ñ-¨d¯h©h¸¿
¹
ÀD×DYÑDYÔZà—:‘:×(Ò(à×(Ñ(¨¸4ÐXjÐ(ÔkÙ%¨$×*<Ò*<Ø×*Ñ*¨4¯;©;«=¸$¿*¹*»,Ø59·Z±Z°ð +õ Að ×)Ñ)¨$¯+©+«-¸¿¹»Ø7;·z±z°>ð *õ Cð #ô �$—(‘(Ð?Õ@rU   c           
      óh  — t        | dd«      r¥| j                  d   | j                  d   | j                  d   t        | j                  «      z
  dz
  f}| j                  j
                  rd\  }}nd\  }}|j                  |t        ||| j                  z  t        | j                  «      ¬«      «       y y )	NÚ	is_calledFr   r,   r7   )Úpy_callzpython function (%s))Úc_callzc function (%s)©Úsize)r
  r†   r“   rt   r­   rs   r÷  r8   )rY   rÌ   r†   ÚstyleÚtexts        rT   r÷  zNameNode.annotate  s“   € Ü�4˜ eÔ,Ø—8‘8˜A‘; §¡¨¡¨T¯X©X°a©[¼3¸t¿y¹y»>Ñ-IÈAÑ-MÐNˆCØ�y‰y×$Ò$Ø?‘�‘tà9‘��tØ�M‰M˜#œ~¨e°T¸D¿I¹IÑ5EÌCÐPT×PYÑPYËNÔ[Õ\ð -rU   c                 óH   — | j                   r| j                   j                  S y rN   )r¾   rå  rX   s    rT   ri  z*NameNode.get_known_standard_library_import  s   € Ø�:Š:Ø—:‘:×;Ñ;Ð;ØrU   rj  rl  )7r[   r\   r]   rá   r  r·  rZ  r	  r¾   r  rç  ræ  rA  rÎ   r½  r  r\  rl  r‘   r<  r0  r  râ  r}  r€  rˆ  rT  rV  rñ  rX  r`  rÊ  rŽ  r§  r  r  r  rS  rZ  rr  r$  rY  r—  r  r  r  r  r¾  rÒ  r_  r`  rÖ  r÷  ri  r^   r_   s   @rT   r
  r
    s(  ø„ ð €GØÐØÐØ#ÐØÐØ€EØ€JØ€MØ€JØ€JØ€EØ€MØÐò%òò#òBNò ô
0ó&>*ò@ò$òL	òUòTò!'òFò(ò(ò,!ð 7€KóDògò(9òô%ò*Wòò	òò
òKòò
6ò\uð| INØGKóv!òp.ò 0ó(0Aòd]örU   r
  c                   ó,   — e Zd ZeZdgZd„ ZdZd„ Zd„ Z	y)ÚBackquoteNoder�   c                 ó”   — | j                   j                  |«      | _         | j                   j                  |«      | _         d| _        | S r«  )r�   rX  r9  r  rø   s     rT   rX  zBackquoteNode.analyse_types,  s:   € Ø—8‘8×)Ñ)¨#Ó.ˆŒØ—8‘8×.Ñ.¨sÓ3ˆŒØˆŒØˆrU   zBackquote expressionc                 óL   — t        | j                  j                  «      | _        y rN   )r×  r�   rƒ   rX   s    rT   r2  z'BackquoteNode.calculate_constant_result4  s   € Ü# D§H¡H×$<Ñ$<Ó=ˆÕrU   c           
      óô   — |j                  | j                  «       ›d| j                  j                  «       ›d|j	                  | j                  «       | j
                  «      ›�«       | j                  |«       y )Nz = PyObject_Repr(r¥  )rÊ   r  r�   rÛ   rÖ   r†   rì  r³  s     rT   r¾  z"BackquoteNode.generate_result_code7  sX   € Ø�
‰
à—‘•Ø—‘×"Ñ"Õ$Ø×'Ñ'¨¯©«°t·x±xÔ@ðBô	Cð
 	×Ñ˜TÕ"rU   N)
r[   r\   r]   r   r­   ró   rX  r§  r2  r¾  rW   rU   rT   r…  r…  #  s&   „ ð
 €Dàˆw€Hòð )€Kò>ó#rU   r…  c                   ó2   — e Zd ZeZdZddgZd„ ZdZd„ Z	d„ Z
y)	Ú
ImportNodeTÚmodule_nameÚimported_namesc                 ó8  — | j                   €^|j                  «       j                  r=|j                  d   s&t        j
                  |j                  j                  vrd| _         nd| _         | j                  j                  |«      }|j                  |«      | _        | j                  j                  sJ ‚| j                  �.| j                  D �cg c]  }|j                  |«      ‘Œ c}| _        | j                   dk7  r‘| j                   dkD  r| j                   nd}|j                  «       j                  }t        |«      D ]  }|j                  d«      \  }}}Œ t!        j"                  |› d| j                  j$                  › �«      | _        | S d | _        | S c c}w )NÚ
py2_importéÿÿÿÿr   r,   rü   )r�   rE  Úparent_modulern   r9   Úabsolute_importÚcontextÚfuture_directivesr‹  rX  r9  rŒ   rŒ  Úqualified_nameÚrangeÚ
rpartitionr
   rH  r½   Úmodule_qualname)rY   rv   r‹  rt   r�   ÚqualnameÚ_s          rT   rX  zImportNode.analyse_types]  sh  € Ø�:‰:Ðà×ÑÓ!×/Ò/Ø—N‘N <Ò0Ü×*Ñ*°#·+±+×2OÑ2OÑOØ�•
à�”
à×&Ñ&×4Ñ4°SÓ9ˆØ&×9Ñ9¸#Ó>ˆÔØ×Ñ×1Ò1Ð1Ð1à×ÑÐ*à48×4GÒ4Gó#Ù4G¨D�×"Ñ" 3Õ'Ð4Gñ#ˆDÔð �:‰:˜Š?Ø"&§*¡*¨q¢.�D—J’J°aˆEØ×'Ñ'Ó)×8Ñ8ˆHÜ˜5–\�Ø!)×!4Ñ!4°SÓ!9‘�˜!™Qð "ä#1×#?Ñ#?À8À*ÈAÈd×N^ÑN^×NdÑNdÐMeÐ@fÓ#gˆDÔ ð ˆð $(ˆDÔ Øˆùò#s   ÃFzPython importc           
      ó„  — | j                   j                  sJ ‚d}| j                  �|j                  | j                  «      }|j                  j                  t        j                  dd«      «       | j                  �F|j                  d«       |j                  ddj                  d„ | j                  D «       «      › d�«       d	| j                   j                  «       | j                  �d
nd| j                  �t        | j                  «      nd|| j                  fz  }|j                  j                  | j                   d¬«      }|j                  |› d|› d|j#                  || j$                  «      › �«       | j                  �|j                  d«       | j&                  �rNd| j                   j(                  v �r5|j                  j                  t        j                  dd«      «       |j                  j                  | j                   d¬«      }| j                   j(                  j+                  d«      }|dd  D ]—  }|j                  t-        j.                  |«      «      }|j                  |› d|› d|› d�«       |j                  d|› d�«       |j                  |j#                  || j$                  «      «       |j                  |› d|› d�«       Œ™ |j                  j1                  |«       |j                  | j3                  «       › d|› d�«       |j                  j1                  |«       | j5                  |«       y )NrË  ÚImportzImportExport.cÚ{z*PyObject* const __pyx_imported_names[] = {Ú,c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrN   )r  )rf   rd  s     rT   ri   z2ImportNode.generate_result_code.<locals>.<genexpr>ˆ  s   è ø€ ÐFoÑ[nÐVWÀqÇxÁxÇzÑ[nùó   ‚rX  z __Pyx_Import(%s, %s, %d, %s, %d)Ú__pyx_imported_namesrà  r   Fr¡  rS  ú; rÕ   rü   Ú
ImportFromr,   z = __Pyx_ImportFrom(r1  r2  z
Py_DECREF(rT  )r‹  rŒ   r—  rg  rÇ   rÈ   r   rÉ   rŒ  rÊ   ÚjoinrÛ   r“   r�   r¦  r§  r­   rÖ   r†   Úis_import_as_namer½   rc  r
   rH  r¯  r  rì  )	rY   rÌ   r—  Úimport_codeÚtmp_submoduleÚ	submoduleÚmodulesÚmoduleÚ
module_objs	            rT   r¾  zImportNode.generate_result_code|  sÐ  € Ø×Ñ×1Ò1Ð1Ð1à ˆØ×ÑÐ+Ø"×6Ñ6°t×7KÑ7KÓLˆOà×Ñ×)Ñ)¬+×*AÑ*AÀ(ÐL\Ó*]Ô^à×ÑÐ*Ø�J‰J�sŒOØ�J‰JØ=¸c¿h¹hÑFoÐ[_×[nÒ[nÓFoÓ>oÐ=pÐpsÐtôvð 9Ø×Ñ×&Ñ&Ó(Ø&*×&9Ñ&9Ð&EÑ"È3Ø(,×(;Ñ(;Ð(GŒC�×#Ñ#Ô$ÈQØØ�J‰Jð<ñ ˆð Ÿ™×4Ñ4°T·Y±YÈ5Ð4ÓQˆØ�
‰
Øˆo˜S  ¨R°×0GÑ0GÈÐW[×W_ÑW_Ó0`Ð/aÐbô	
ð ×ÑÐ*Ø�J‰J�sŒOà×!Ó! c¨T×-=Ñ-=×-CÑ-CÒ&Cà×Ñ×-Ñ-¬k×.EÑ.EÀlÐTdÓ.eÔfØŸ™×4Ñ4°T·Y±YÈ5Ð4ÓQˆIØ×&Ñ&×,Ñ,×2Ñ2°3Ó7ˆGØ! ! "›+�Ø!×5Ñ5´n×6RÑ6RÐSYÓ6ZÓ[�
Ø—
‘
˜i˜[Ð(<¸]¸OÈ2ÈjÈ\ÐY[Ð\Ô]Ø—
‘
˜Z¨ °bÐ9Ô:Ø—
‘
˜4×2Ñ2°9¸d¿h¹hÓGÔHØ—
‘
˜m˜_¨C°	¨{¸!Ð<Õ=ð &ð �N‰N×'Ñ'¨	Ô2à�
‰
�d—k‘k“m�_ C¨ °aÐ8Ô9Ø�‰×#Ñ# MÔ2Ø×Ñ˜TÕ"rU   c                 ó.   — | j                   j                  S rN   )r‹  r½   rX   s    rT   ri  z,ImportNode.get_known_standard_library_import¨  s   € Ø×Ñ×%Ñ%Ð%rU   N)r[   r\   r]   r   r­   r  ró   rX  r§  r¾  ri  rW   rU   rT   rŠ  rŠ  F  s0   „ ð$ €DØ€GàÐ/Ð0€Hòð: "€Kò*#óX&rU   rŠ  c                   óP   ‡ — e Zd Zg ZdZdZd
d„Zd„ Zd„ Zd„ Z	d„ Z
ˆ fd„Zd	„ Zˆ xZS )ÚScopedExprNodeNTc                 óŽ   — |�|| _         y | j                  rt        j                  |«      | _         y | j                   sd | _         y y rN   )Ú
expr_scopeÚhas_local_scoper   ÚComprehensionScope)rY   Úouter_scoper¯  s      rT   Ú
init_scopezScopedExprNode.init_scope»  s=   € ØÐ!Ø(ˆD�OØ×!Ò!Ü$×7Ñ7¸ÓDˆD�OØ—’Ø"ˆD�Oð !rU   c                 ó&   — | j                  |«       y rN   )r³  rø   s     rT   Úanalyse_declarationsz#ScopedExprNode.analyse_declarationsÃ  s   € Ø�‰˜ÕrU   c                  ó   — y rN   rW   rø   s     rT   Úanalyse_scoped_declarationsz*ScopedExprNode.analyse_scoped_declarationsÆ  ó   € àrU   c                 ó   — | S rN   rW   rø   s     rT   rX  zScopedExprNode.analyse_typesÊ  ó   € àˆrU   c                 ó   — | S rN   rW   rø   s     rT   Úanalyse_scoped_expressionsz)ScopedExprNode.analyse_scoped_expressionsÎ  rº  rU   c                 óø  •— t         ‰| �  }| j                  r| j                  j                  s	 ||«       y |j                  d«       g }t        d„ | j                  j                  j                  «       D «       «      D ]G  \  }}|j                  rŒ|j                  j                  sŒ*|j                  sŒ7|j                  |«       ŒI |s ||«       |j                  d«       y |j                  «       }|j                  «       } ||«       | j!                  ||«       |j#                  d«      }|j%                  |«       |j&                  |fgt)        t+        |j-                  «       |«      «      z   D ]K  \  }	}
|j/                  |	«      sŒ|j1                  |	«       | j!                  ||«       |j%                  |
«       ŒM |j1                  |«       |j                  d«       |j3                  |«       ||_        y )Nz{ /* enter inner scope */c              3   ó,   K  — | ]  }|d    sŒ	|–— Œ y­w)r   NrW   )rf   r§   s     rT   ri   z:ScopedExprNode.generate_evaluation_code.<locals>.<genexpr>Ü  s   è ø€ Ð[Ñ0O¨ÐSWÐXYÓSZœtÑ0Oùs   ‚
�z} /* exit inner scope */Ú
exit_scope)rP   rÃ  r°  r¯  Úvar_entriesrÊ   ÚsortedÚentriesÚitemsrP  r­   rs   r  r  Únew_loop_labelsÚnew_error_labelÚ_generate_vars_cleanupÚ	new_labelÚput_gotoÚerror_labelr  ÚzipÚget_loop_labelsÚ
label_usedÚ	put_labelÚset_loop_labels)rY   rÌ   Úgenerate_inner_evaluation_codeÚ
py_entriesr™  r¾   Úold_loop_labelsÚold_error_labelr¿  ÚlabelÚ	old_labelrS   s              €rT   rÃ  z'ScopedExprNode.generate_evaluation_codeÒ  s©  ø€ ä).©Ñ)IÐ&Ø×#Ò#¨4¯?©?×+FÒ+Fá*¨4Ô0Øà�
‰
Ð.Ô/Øˆ
ÜÑ[°·±×0GÑ0G×0MÑ0MÔ0OÓ[Ö[‰HˆAˆuØ×#Ó#Ø—:‘:×)Ó)¨e¯j«jØ×%Ñ% eÕ,ð \ñ á*¨4Ô0Ø�J‰JÐ1Ô2Øð ×.Ñ.Ó0ˆØ×.Ñ.Ó0ˆá& tÔ,ð 	×#Ñ# D¨*Ô5ð —^‘^ LÓ1ˆ
Ø�‰�jÔ!Ø#'×#3Ñ#3°_Ð"EÐ!FÜ!%¤c¨$×*>Ñ*>Ó*@À/Ó&RÓ!Sô"TÑˆE�9à�‰˜uÕ%Ø—‘˜uÔ%Ø×+Ñ+¨D°*Ô=Ø—‘˜iÕ(ð"Tð 	�‰�zÔ"Ø�
‰
Ð-Ô.à×Ñ˜_Ô-Ø*ˆÕrU   c                 ó”   — |D ]C  }|j                   r$|j                  |«       |j                  |d«       Œ3|j                  |«       ŒE y )Nr´  )r'  Úput_var_gotrefÚput_var_decref_setÚput_var_xdecref_clear)rY   rÌ   rÐ  r¾   s       rT   rÆ  z%ScopedExprNode._generate_vars_cleanupþ  sA   € ÛˆEØ×ÒØ×#Ñ# EÔ*Ø×'Ñ'¨¨yÕ9à×*Ñ*¨5Õ1ñ  rU   rN   )r[   r\   r]   ró   r¯  r°  r³  rµ  r·  rX  r¼  rÃ  rÆ  r^   r_   s   @rT   r­  r­  ¬  s:   ø„ ð €HØ€Jð €Oó#òòòòô*+öX2rU   r­  c            
       óø   — e Zd ZeZdZdZdZdZdZ	dgZ
d„ ZdZ ej                   ej                  ej                   ej                   dej                  d«      g«      «      Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zy)ÚIteratorNodeNFÚsequencec                 óª  — | j                   r| j                   }| j                  j                  |«      | _        | j                  j                  j                  s | j                  j                  j
                  r=| j                  j                  j                  s| j                  j                  | _        �n| j                  j                  j                  r0t        | j                  | j                  ¬«      j                  |«      S | j                  «       rT| j                  j                  j                  d   j                  }t        | j                  |d¬«      j                  |«      S | j                  j                  |«      | _        | j                  j                  t        t         fv r | j                  j#                  d«      | _        d| _        | S )N)rÛ  r   T)rÛ  Úreversedú!'NoneType' object is not iterabler,   )r¯  rÛ  rX  r­   rp  r  r¿  r  ÚCppIteratorNoder†   Úis_reversed_cpp_iterationÚ	arg_tupler—   r�   r9  r   r   ra  r  )rY   rv   rÛ  s      rT   rX  zIteratorNode.analyse_types  s@  € Ø�?Š?Ø—/‘/ˆCØŸ™×3Ñ3°CÓ8ˆŒØ�M‰M×Ñ×'Ò'¨4¯=©=×+=Ñ+=×+DÒ+DØ—M‘M×&Ñ&×0Ò0àŸ™×*Ñ*ˆDŽIØ�]‰]×Ñ×,Ò,Ü" 4§8¡8°d·m±mÔD×RÑRÐSVÓWÐWØ×+Ñ+Ô-Ø—}‘}×.Ñ.×3Ñ3°AÑ6×:Ñ:ˆHÜ" 4§8¡8°hÈÔN×\Ñ\Ð]`ÓaÐaà ŸM™M×<Ñ<¸SÓAˆDŒMØ�}‰}×!Ñ!¤i´Ð%<Ñ<Ø $§¡× ?Ñ ?Ð@cÓ d�”ØˆŒØˆrU   zIterating over Python objectÚitc                 ó8  — t        | j                  t        «      rB| j                  j                  r,t	        | j                  j                  j
                  «      dk(  sy| j                  j                  }|j                  r›|j                  dk(  rŒ|j                  j                  sy| j                  j                  j
                  d   }t        |t        «      rB|j                  j                  r,|j                  j                  }|j                  j                  S y)z�
        Returns True if the 'reversed' function is applied to a C++ iterable.

        This supports C++ classes with reverse_iterator implemented.
        r,   FrÝ  r   )r‚   rÛ  rF  rá  r“   r—   r?  rá   rt   r¾   rÈ  ÚCoercionNoder�   r­   r  )rY   Úfuncr�   s      rT   rà  z&IteratorNode.is_reversed_cpp_iteration2  s¾   € ô ˜4Ÿ=™=¬.Ô9Ø—‘×'Ò'¬C°·±×0GÑ0G×0LÑ0LÓ,MÐQRÒ,RØØ�}‰}×%Ñ%ˆØ�<Š<˜DŸI™I¨Ò3Ø—:‘:×(Ò(ØØ—-‘-×)Ñ)×.Ñ.¨qÑ1ˆCÜ˜#œ|Ô,°·±·²Ø—g‘g—m‘m�Ø—x‘x×,Ñ,Ð,ØrU   c                 óT   — | j                   j                  | j                  xs |«      S rN   )rÛ  rl  r¯  rø   s     rT   rl  zIteratorNode.type_dependenciesE  s    € Ø�}‰}×.Ñ.¨t¯©Ò/EÀ#ÓFÐFrU   c                 ó  — | j                   j                  |«      }|j                  s|j                  r|S |j                  r9|j
                  j                  d«      }|�|j                  j                  S t        S |j                  r|S t        S )NÚbegin)rÛ  r‘   rp  r  r  rN  rE  r­   Úreturn_typers   r   )rY   rv   Úsequence_typerè  s       rT   r‘   zIteratorNode.infer_typeH  s�   € ØŸ™×0Ñ0°Ó5ˆØ×!Ò! ]×%9Ò%9Ø Ð Ø×'Ò'Ø!×'Ñ'×.Ñ.¨wÓ7ˆEØÐ Ø—z‘z×-Ñ-Ð-ô Ðð ×&Ò&Ø Ð ÜÐrU   c           
      óŠ  — | j                   j                  }|j                  rJ d«       ‚|j                  s|j                  rt        d«      ‚|t        t        fv }|s| j                  rJ d«       ‚|j                   | _
        | j                  rH|j                  d| j                   j                  «       ›d| j                   j                  «       ›d�«       |s| j                  �r]|j                  | j                  «       ›d| j                   j                  «       ›d	| j                  «       ›d
�«       |j                  j                  t         j"                  d¬«      | _        | j                  rµ|t        u rd}nd}|j                  | j$                  ›d|›d| j                  «       ›d
�«       |j                  d«       |j                  |j'                  | j$                  | j(                  «      «       |j                  d«       |j                  d| j$                  z  «       n|j                  d| j$                  z  «       |�sa|j                  j                  | j*                  d¬«      | _        | j                  rM|j                  d| j,                  z  «       |j                  d«       |j/                  d| j$                  z  «       |j                  | j                  «       ›d| j                   j                  «       ›d|j1                  | j                  «       | j(                  «      ›�«       | j3                  |«       |j/                  | j,                  › d| j                  «       › d�«       |j                  |j1                  | j,                  | j(                  «      «       | j                  r|j                  d«       y y )NFz+Should have been changed to CppIteratorNodez#for in carray slice not transformedzBinternal error: reversed() only implemented for list/tuple objectszif (likely(PyList_CheckExact(z)) || PyTuple_CheckExact(ú)) {rS  z; __Pyx_INCREF(r2  r¡  Ú__Pyx_PyList_GET_SIZEÚ__Pyx_PyTuple_GET_SIZErR  ú#if !CYTHON_ASSUME_SAFE_SIZEú#endifz--%s;rÎ  ú
%s = NULL;ú} else {z	%s = -1; ú = PyObject_GetIter(r¥  úT = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(rÕ   )rÛ  r­   r  rp  r  r   r   r   rÝ  r¿  Úmay_be_a_sequencerÊ   rÛ   r  r¦  r§  r   rM  Úcounter_cnameÚerror_goto_if_negr†   Ú_func_iternext_typeÚiter_func_ptrÚputrÖ   rì  )rY   rÌ   rê  Úis_builtin_sequenceÚlen_funcs        rT   r¾  z!IteratorNode.generate_result_codeT  sò  € ØŸ™×*Ñ*ˆØ×%Ò%ØGÐGÓG�5Ø×!Ò! ]×%9Ò%9ÜÐ EÓFÐFà+´	¼:Ð/FÐFÐÙ"à—}’}ÐjÐ&jÓjÐ$Ø%2×%BÑ%BÐ!BˆÔØ×!Ò!Ø�JŠJà—M‘M×+Ñ+Õ-Ø—M‘M×+Ñ+Õ-ð/ô0ñ
  $×"8Ó"8Ø�J‰JØ—‘•Ø—‘×'Ñ'Õ)Ø—‘•ðô ð
 "&§¡×!=Ñ!=Ü×,Ñ,¸ð ">ó "@ˆDÔà�}Š}Ø ¤IÑ-Ø6‘Hà7�HØ—
‘
¨T×-?Ó-?ÂÈ4Ï;É;Í=ÐYÔZØ—
‘
Ð9Ô:Ø—
‘
˜4×1Ñ1°$×2DÑ2DÀdÇhÁhÓOÔPØ—
‘
˜8Ô$Ø—
‘
˜7 T×%7Ñ%7Ñ7Õ8à—
‘
˜9 t×'9Ñ'9Ñ9Ô:â"Ø!%§¡×!=Ñ!=¸d×>VÑ>VÐchÐ!=Ó!iˆDÔØ×%Ò%Ø—
‘
˜<¨$×*<Ñ*<Ñ<Ô=Ø—
‘
˜:Ô&Ø—‘˜ t×'9Ñ'9Ñ9Ô:à�J‰JØ—‘•Ø—‘×'Ñ'Õ)Ø×'Ñ'¨¯©«°t·x±xÔ@ðBô Cð × Ñ  Ô&ð
 �H‰HØ×%Ñ%Ð&ð '@Ø@DÇÁÓ@PÐ?QÐQTðVôð �J‰J�t×.Ñ.¨t×/AÑ/AÀ4Ç8Á8ÓLÔMØ×!Ò!Ø�J‰J�s�Oð "rU   c                 ó&   — |j                  d«       y ©Nz;;©rú  r³  s     rT   Úgenerate_for_loop_headerz%IteratorNode.generate_for_loop_header“  ó   € Ø�‰��rU   c           
      ó¾  — | j                   sJ d«       ‚|dv sJ ‚d|› d| j                  «       › d�}d}| j                  j                  r�t	        | j                  j
                  «      }| j                  j                  €|}d}nSt        | j                  j                  j                  t        «      r%|| j                  j                  j                  z  }d}|r#|j                  d| j                   ›d	|›d
�«       nÓ|j                  d«       |j                  dt        j                  ›d|›d�«       |j                  d«       |j                  |j                  t        j                  | j                  «      «       |j                  d«       |j                  d| j                   ›d	t        j                  ›d
�«       |j                  d«       | j                  rdnd}|dk(  rD|j                  |› d| j                  «       › d| j                   › d| j!                  «       › d�«       n—|j                  d«       |j                  |› d| j                  «       › d| j                   › d�«       |j                  d«       |j                  |› d| j                  «       › d| j                   › d�«       |j                  d«       |j                  |› | j                   › d�«       y )Nz/internal error: counter_cname temp not prepared)ÚListÚTupleÚ__Pyx_Pyz
_GET_SIZE(r¢  FTúif (z >= z) break;rœ  úPy_ssize_t rS  rT  rï  rð  rÕ   z--ú++r  z = __Pyx_PyList_GetItemRefFast(r1  r2  ú<#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFSz! = __Pyx_NewRef(PyTuple_GET_ITEM(ú));ú#elsez = __Pyx_PySequence_ITEM()rö  rÛ   rÛ  r�   r“   r—   r°   r‚   rƒ   r„   rÊ   r   Úquick_temp_cnamer÷  r†   rÝ  rR  )rY   Ú	test_nameÚresult_namerÌ   Ú
final_sizeÚsize_is_safeÚ
item_countÚinc_decs           rT   Úgenerate_next_sequence_itemz(IteratorNode.generate_next_sequence_item–  sa  € Ø×!Ò!ÐTÐ#TÓTÐ!ØÐ-Ñ-Ð-Ð-à 	˜{¨*°T·^±^Ó5EÐ4FÀaÐHˆ
ØˆØ�=‰=×0Ò0Ü˜TŸ]™]×/Ñ/Ó0ˆJØ�}‰}×(Ñ(Ð0Ø'�
Ø#‘Ü˜DŸM™M×5Ñ5×EÑEÄsÔKØ'¨$¯-©-×*CÑ*C×*SÑ*SÑS�
Ø#�áØ�JŠJ°×1CÓ1CÂZÐPÕQà�J‰J�sŒOØ�JŠJ´×0GÓ0GÊÐTÔUØ�J‰JÐ5Ô6Ø�J‰J�t×-Ñ-¬f×.EÑ.EÀtÇxÁxÓPÔQØ�J‰J�xÔ Ø�JŠJ°×1CÓ1CÄV×E\ÓE\Ð]Ô^Ø�J‰J�sŒOàŸ-š-‘$¨Tˆà˜ÒØ�J‰JØ�-Ð>Ø—>‘>Ó#Ð$ B t×'9Ñ'9Ð&:¸"¸T×=VÑ=VÓ=XÐ<YÐY[ð]õ^ð �J‰JÐUÔVØ�J‰J˜+˜Ð&GÈÏÉÓHXÐGYÐY[Ð\`×\nÑ\nÐ[oÐorÐsÔtØ�J‰J�wÔØ�J‰J˜+˜Ð&?ÀÇÁÓ@PÐ?QÐQSÐTX×TfÑTfÐSgÐgiÐjÔkØ�J‰J�xÔ Ø�
‰
�g�Y˜t×1Ñ1Ð2°!Ð4Õ5rU   c                 ó¸  — | j                   j                  }| j                  r|j                  d| j                  › d�«       |t
        u rU| j                  d||«       |j                  |j                  || j                  «      «       |j                  |t        «       y |t        u rU| j                  d||«       |j                  |j                  || j                  «      «       |j                  |t        «       y | j                  rÄ|j                  d| j                  z  «       |j                  d| j                  «       z  «       | j                  d||«       |j                  d«       | j                  d||«       |j                  d«       |j                  |j                  || j                  «      «       |j                  d	«       |j                  d
«       |j                  |› d| j                  › d| j                  «       › d�«       |j                  d|z  «       |j                  d«       |j                  d«       |j                  |j!                  d| j                  «      «       |j                  d«       |j                  d«       |j                  d«       |j                  d«       |j                  d«       |j                  |t        «       y )Nr  z < 0) break;r  r  zif (likely(!%s)) {z$if (likely(PyList_CheckExact(%s))) {rò  rÕ   z} else rœ  rS  rR  r2  r3  z&PyObject* exc_type = PyErr_Occurred();zif (exc_type) {zA!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)r4  úbreak;)rÛ  r­   rÝ  rÊ   rö  r   r  rÖ   r†   ré  r   r   rõ  rù  rÛ   rú  rË   )rY   r  rÌ   rê  s       rT   Úgenerate_iter_next_result_codez+IteratorNode.generate_iter_next_result_code¾  s0  € ØŸ™×*Ñ*ˆØ�=Š=Ø�J‰J˜˜d×0Ñ0Ð1°Ð>Ô?ØœIÑ%Ø×,Ñ,¨V°[À$ÔGØ�J‰J�t×.Ñ.¨{¸D¿H¹HÓEÔFØ�O‰O˜K¬Ô8ØØœjÑ(Ø×,Ñ,¨W°kÀ4ÔHØ�J‰J�t×.Ñ.¨{¸D¿H¹HÓEÔFØ�O‰O˜K¬Ô8Øà×!Ò!Ø�J‰JÐ+¨d×.@Ñ.@Ñ@ÔAØ�J‰JÐ=ÀÇÁÓ@PÑPÔQØ×,Ñ,¨V°[À$ÔGØ�J‰J�zÔ"Ø×,Ñ,¨W°kÀ4ÔHØ�J‰J�sŒOØ�J‰J�t×.Ñ.¨{¸D¿H¹HÓEÔFØ�H‰H�YÔà�
‰
�3ŒØ�
‰
�k�] # d×&8Ñ&8Ð%9¸¸4¿>¹>Ó;KÐ:LÈBÐOÔPØ�
‰
Ð)¨KÑ7Ô8Ø�
‰
Ð;Ô<Ø�
‰
Ð$Ô%Ø�
‰
�4×%Ñ%Ð&iÐko×ksÑksÓtÔuØ�
‰
Ð#Ô$Ø�
‰
�3ŒØ�
‰
�8ÔØ�
‰
�3ŒØ�
‰
�3ŒØ�‰˜¤^Õ4rU   c                 ó  — | j                   r%|j                  j                  | j                   «       | j                  r,|j                  j                  | j                  «       d | _        t        j                  | |«       y rN   )rö  r¦  r¯  rù  rñ   rØ  r³  s     rT   rØ  zIteratorNode.free_tempsä  s\   € Ø×ÒØ�N‰N×'Ñ'¨×(:Ñ(:Ô;Ø×ÒØ�N‰N×'Ñ'¨×(:Ñ(:Ô;Ø!%ˆDÔÜ×Ñ˜D $Õ'rU   )r[   r\   r]   r   r­   rù  rö  rÝ  Úis_asyncr°  ró   rX  r§  r   rÁ  rB  ÚCFuncTypeArgrø  rà  rl  r‘   r¾  r   r  r  rØ  rW   rU   rT   rÚ  rÚ    s¬   „ ð €DØ€MØ€MØ€HØ€HØ€Oàˆ|€Hòð( 1€Kà-˜*×-Ñ-Ð.B¨j×.BÑ.BØ×!Ñ!Ø#ˆJ×#Ñ# D¨*×*CÑ*CÀTÓJð$ó/ó Ðò
ò&Gò
ò=ò~ò&6òP$5óL(rU   rÚ  c                   ó\   — e Zd ZdZdZdZdZdZdgZd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)rß  Nrü   rù  TFrÛ  c                 ó"   — | j                   sdS dS )N)rè  Úend)ÚrbeginÚrend)rÝ  rX   s    rT   Úget_iterator_func_namesz'CppIteratorNode.get_iterator_func_namesø  s   € Ø'+§}¢}ÐÐLÐ:LÐLrU   c                 ó€  — | j                   j                  }|j                  r|j                  }| j	                  «       \  }}|j
                  j                  |«      }|j
                  j                  |«      }|�,|j                  j                  r|j                  j                  r=t        | j                  d|›d| j                   j                  ›�«       t        | _        | S |�,|j                  j                  r|j                  j                  r=t        | j                  d|›d| j                   j                  ›�«       t        | _        | S |j                  j                  }|j                  �rF|j                  d   rd| _        |j!                  | j                  d||j                  j                  g«      	 €=t        | j                  d|›d| j                   j                  ›�«       t        | _        | S |j!                  | j                  d|g«      €=t        | j                  d|›d| j                   j                  ›�«       t        | _        | S |j!                  | j                  d|g«      €=t        | j                  d	|›d| j                   j                  ›�«       t        | _        | S || _        | S |j                  r?||j                  j                  k(  st        | j                  d
|›d|›d�«       || _        | S t        | j                  d|›d| j                   j                  ›d�«       t        | _        | S )Nzmissing z() on Ú
cpp_localsr»   ú!=z missing operator!= on result of r  z missing operator++ on result of zmissing operator* on result of zincompatible types for z() and z()zresult type of z must be a C++ class or pointer)rÛ  r­   r  r  r  rN  rE  rq  r—   r   r†   r3   ré  r  rn   Úextra_dereferenceÚlookup_operator_for_types)rY   rv   rê  Ú
begin_nameÚend_namerè  r  Ú	iter_types           rT   rX  zCppIteratorNode.analyse_typesû  sŠ  € ØŸ™×*Ñ*ˆØ×ÒØ)×3Ñ3ˆMØ#×;Ñ;Ó=Ñˆ
�HØ×#Ñ#×*Ñ*¨:Ó6ˆØ×!Ñ!×(Ñ(¨Ó2ˆØˆMØ—z‘z×.Ò.Ø—:‘:—?’?Ü�$—(’(²JÀÇÁ×@RÒ@RÐSÔTÜ"ˆDŒIØˆKØˆKØ—x‘x×,Ò,Ø—8‘8—=’=Ü�$—(’(²H¸d¿m¹m×>PÒ>PÐQÔRÜ"ˆDŒIØˆKØ—J‘J×*Ñ*ˆ	Ø×!Ó!Ø�~‰~˜lÒ+Ø),�Ô&Ø×,Ñ,Ø—H‘HØØ §¡× 4Ñ 4Ð5ó7ð ;?ð?ô �d—h’hÒPZÐ\`×\iÑ\i×\nÒ\nÐ oÔpÜ&�”	Ø�Ø×,Ñ,¨T¯X©X°t¸i¸[ÓIÐQÜ�d—h’hÒPZÐ\`×\iÑ\i×\nÒ\nÐ oÔpÜ&�”	Ø�Ø×,Ñ,¨T¯X©X°s¸Y¸KÓHÐPÜ�d—h’hÊzÐ[_×[hÑ[h×[mÒ[mÐ nÔoÜ&�”	Ø�Ø!ˆDŒIð ˆð ×ÒØ §¡×!5Ñ!5Ò5Ü�d—h’hÊ*ÒV^Ð _Ô`Ø!ˆDŒIð ˆô �$—(’(ÒZdÐfj×fsÑfs×fxÓfxÐyÔzÜ"ˆDŒIØˆrU   c                 ó$  — | j                   j                  }| j                  «       \  }}| j                   j                  «       rL|j	                  | j                  «       ›d| j                   j                  «       ›| j                  ›|›d�«       y |}|j                  rt        j                  |j                  «      }|j                  s|j                  j                  d   rd| _        |j                  j                  |d¬«      | _        |j	                  | j                   ›d|j                  rdnd›| j                   j#                  «       ›d	�«       |j	                  | j                  «       ›d| j                   ›| j                  ›|›d�«       y )
NrS  z();r!  ú->Fr¡  Ú&rù  rT  )rÛ  r­   r  rS  rÊ   r  Úcpp_attribute_opr  r   rÁ  r   r  rÇ   rn   r¦  r§  Úcpp_sequence_cnamer  )rY   rÌ   rê  r%  r™  Ú	temp_types         rT   r¾  z$CppIteratorNode.generate_result_code+  sH  € ØŸ™×*Ñ*ˆØ×4Ñ4Ó6‰ˆ
�Að �=‰=×"Ñ"Ô$ð �J‰JØ—‘•Ø—‘×$Ñ$Ô&Ø×%Ò%Úð	ô ð ð "ˆ	Ø×!Ò!ô #×+Ñ+¨M×,GÑ,GÓHˆIØ×Ò˜t×/Ñ/×:Ñ:¸<ÒHØ$(ˆDÔ!ð #'§.¡.×">Ñ">¸yÐUZÐ">Ó"[ˆÔØ�
‰
Ø×#Ó#Ø×#Ò#‰C¨Ð+Ø�M‰M×)Ñ)Õ+ð
ô 	ð
 	�
‰
Ø�K‰K�MØ×#Ò#Ø×!Ò!Úð	
õ 	rU   c                 ó.  — | j                  «       \  }}|j                  d| j                  ›| j                  «       ›d| j                  xs | j
                  j                  «       ›| j                  ›|›d| j                  ›| j                  «       ›�
«       y )Nr¡  z != z(); ++)r  rú  r#  r  r,  rÛ  r+  )rY   rÌ   r™  r&  s       rT   r   z(CppIteratorNode.generate_for_loop_headerV  su   € ð ×2Ñ2Ó4‰ˆˆ8Ø�ŠØ×"Ò"Ø�K‰K�MØ×#Ñ#Ò= t§}¡}×';Ñ';Ó'=Ð=Ø×!Ò!ÚØ×"Ò"Ø�K‰KŒMðõ 	rU   c                 óf   — |j                  |›d| j                  ›| j                  «       ›d�«       y )Nz = *rT  )rÊ   r#  r  )rY   r  rÌ   s      rT   r  z.CppIteratorNode.generate_iter_next_result_codec  s(   € Ø�
‰
Ú#Ø×.Ò.ØŸ™�ð'õ 	(rU   c                 óJ   — | j                   sy t        j                  | |«       y rN   )r,  rñ   rÁ  r³  s     rT   rÁ  z.CppIteratorNode.generate_subexpr_disposal_codei  s    € Ø×&Ò&ð Ü×/Ñ/°°dÕ;rU   c                 óJ   — | j                   sy t        j                  | |«       y rN   )r,  rñ   rÂ  r³  s     rT   rÂ  z"CppIteratorNode.free_subexpr_tempsp  s    € Ø×&Ò&ð Ü×#Ñ# D¨$Õ/rU   c                 ó    — | j                   s,t        j                  | |«       t        j                  | |«       t        j	                  | |«       y rN   )r,  rñ   rÁ  rÂ  rË  r³  s     rT   rË  z&CppIteratorNode.generate_disposal_codew  s=   € Ø×&Ò&ô ×3Ñ3°D¸$Ô?Ü×'Ñ'¨¨dÔ3Ü×'Ñ'¨¨dÕ3rU   c                 ó’   — | j                   r%|j                  j                  | j                   «       t        j	                  | |«       y rN   )r,  r¦  r¯  rñ   rØ  r³  s     rT   rØ  zCppIteratorNode.free_temps  s3   € Ø×"Ò"Ø�N‰N×'Ñ'¨×(?Ñ(?Ô@ä×Ñ˜D $Õ'rU   )r[   r\   r]   r,  r+  r#  r  rÝ  ró   r  rX  r¾  r   r  rÁ  rÂ  rË  rØ  rW   rU   rT   rß  rß  í  sW   „ ð ÐØÐØÐØ€GØ€Hàˆ|€HòMò.ò`)òVò(ò<ò0ò4ó(rU   rß  c                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd	d„Zd„ Zd„ Z	y)
ÚNextNodeTc                 óR   — t         j                  | |j                  «       || _        y rN   ©r¥  r‚  r†   Úiterator©rY   r8  s     rT   r‚  zNextNode.__init__�  ó   € Ü×Ñ  h§l¡lÔ3Ø ˆ�rU   c                  ó   — y rN   rW   rø   s     rT   rŽ  zNextNode.nogil_check”  r¸  rU   c                 ó8   — | j                   j                  |«      S rN   )r8  rl  rø   s     rT   rl  zNextNode.type_dependencies˜  s   € Ø�}‰}×.Ñ.¨sÓ3Ð3rU   Nc           	      óô  — |€| j                   j                  |«      }|j                  s|j                  r|j                  S |j
                  rK|j                  | j                  d|g«      j                  j                  }t        j                  |d¬«      }|S t        | j                  | j                   j                  t        | j                  dt        j                  ¬«      ¬«      }|j                  |«      S )Nr»   T©Úremove_fakerefÚPY_SSIZE_T_MAXrâ  rt  )r8  r‘   r  rp  r  r  r$  r†   r­   ré  r   Úremove_cv_refrw  rÛ  rx  rM  )rY   rv   Úiterator_typer«   Úfake_index_nodes        rT   r‘   zNextNode.infer_type›  sÏ   € ØÐ Ø ŸM™M×4Ñ4°SÓ9ˆMØ×Ò =×#9Ò#9Ø ×*Ñ*Ð*Ø×'Ò'Ø×5Ñ5°d·h±hÀÀmÀ_ÓU×ZÑZ×fÑfˆIÜ"×0Ñ0°È4ÔPˆIØÐô (Ø—‘Ø—]‘]×+Ñ+Ü˜dŸh™hÐ.>Ü#-×#?Ñ#?ôAôBˆOð
 #×-Ñ-¨cÓ2Ð2rU   c                 ó  — | j                  || j                  j                  «      }| j                  j                  j                  r7|j                  s+|j                  xs t
        | _        | j                  ||«      S || _        | S rN   )r‘   r8  r­   rs   rŸ   r   r  )rY   rv   r«   s      rT   rX  zNextNode.analyse_types­  sh   € Ø—O‘O C¨¯©×);Ñ);Ó<ˆ	Ø�=‰=×Ñ×)Ò)°)×2GÒ2Gð "×1Ñ1ÒC´^ˆDŒIØ—>‘> )¨SÓ1Ð1à!ˆDŒIØˆKrU   c                 óX   — | j                   j                  | j                  «       |«       y rN   )r8  r  r  r³  s     rT   r¾  zNextNode.generate_result_code¸  s   € Ø�‰×4Ñ4°T·[±[³]ÀDÕIrU   rN   )
r[   r\   r]   r  r‚  rŽ  rl  r‘   rX  r¾  rW   rU   rT   r5  r5  †  s(   „ ð €Gò!òò4ó3ò$	óJrU   r5  c                   ó:   — e Zd ZdgZdZeZdZdZd„ Z	d„ Z
d„ Zd„ Zy	)
ÚAsyncIteratorNoderÛ  Tr,   Fc                 ó   — t         S rN   ©r   rø   s     rT   r‘   zAsyncIteratorNode.infer_typeÊ  ó   € ÜÐrU   c                 ó"  — | j                   r| j                   }| j                  j                  |«      | _        | j                  j                  j                  s6t        | j                  d«       | j                  j                  |«      | _        | S )Nz*async for loops not allowed on C/C++ types)r¯  rÛ  rX  r­   rs   r   r†   r9  rø   s     rT   rX  zAsyncIteratorNode.analyse_typesÍ  se   € Ø�?Š?Ø—/‘/ˆCØŸ™×3Ñ3°CÓ8ˆŒØ�}‰}×!Ñ!×-Ò-Ü�$—(‘(ÐHÔIØ ŸM™M×<Ñ<¸SÓAˆDŒMØˆrU   c           
      óR  — |j                   j                  t        j                  dd«      «       |j	                  | j                  «       ›d| j                  j                  «       ›d|j                  | j                  «       | j                  «      ›�«       | j                  |«       y )NÚ	AsyncIterúCoroutine.cz  = __Pyx_Coroutine_GetAsyncIter(r¥  )rÇ   rÈ   r   rÉ   rÊ   r  rÛ  rÛ   rÖ   r†   rì  r³  s     rT   r¾  z&AsyncIteratorNode.generate_result_codeÖ  ów   € Ø×Ñ×)Ñ)¬+×*AÑ*AÀ+È}Ó*]Ô^Ø�
‰
Ø�K‰K�MØ�M‰M×#Ñ#Õ%Ø×#Ñ# D§K¡K£M°4·8±8Ô<ð>ô 	?ð 	×Ñ˜TÕ"rU   c                 ó&   — |j                  d«       y rþ  rÿ  r³  s     rT   r   z*AsyncIteratorNode.generate_for_loop_headerÞ  r  rU   N)r[   r\   r]   ró   r  r   r­   r  r°  r‘   rX  r¾  r   rW   rU   rT   rG  rG  ¼  s3   „ ð ˆ|€Hà€HØ€DØ€GØ€Oòòò#órU   rG  c                   ó,   — e Zd ZeZdZd„ Zd„ Zd„ Zd„ Z	y)ÚAsyncNextNoder,   c                 óR   — t         j                  | |j                  «       || _        y rN   r7  r9  s     rT   r‚  zAsyncNextNode.__init__í  r:  rU   c                 ó   — t         S rN   rI  rø   s     rT   r‘   zAsyncNextNode.infer_typeñ  rJ  rU   c                 ó   — | S rN   rW   rø   s     rT   rX  zAsyncNextNode.analyse_typesô  r¯  rU   c           
      óR  — |j                   j                  t        j                  dd«      «       |j	                  | j                  «       ›d| j                  j                  «       ›d|j                  | j                  «       | j                  «      ›�«       | j                  |«       y )NrM  rN  z! = __Pyx_Coroutine_AsyncIterNext(r¥  )rÇ   rÈ   r   rÉ   rÊ   r  r8  rÛ   rÖ   r†   rì  r³  s     rT   r¾  z"AsyncNextNode.generate_result_code÷  rO  rU   N)
r[   r\   r]   r   r­   r  r‚  r‘   rX  r¾  rW   rU   rT   rR  rR  â  s"   „ ð €DØ€Gò!òòó#rU   rR  c                   ó.   — e Zd ZddgZdgZdZdZd„ Zd„ Zy)ÚWithExitCallNoder—   Ú
await_exprÚ	with_statTNc                 óÖ   — | j                   j                  |«      | _         | j                  r | j                  j                  |«      | _        t        j                  | _        d| _        | S r·  )r—   rX  rY  r   rB  r­   r  rø   s     rT   rX  zWithExitCallNode.analyse_types  sN   € Ø—I‘I×+Ñ+¨CÓ0ˆŒ	Ø�?Š?Ø"Ÿo™o×;Ñ;¸CÓ@ˆDŒOÜ×*Ñ*ˆŒ	ØˆŒØˆrU   c                 óö  — | j                   r(|j                  d| j                  j                  z  «       | j                  j                  |«       |j                  j                  t        d¬«      }|j                  | j                  «       |j                  j                  t        j                  dd«      «       |j                  |›d| j                  j                  ›d| j                  j                  «       ›d�«       |j!                  | j                  j                  t        ¬	«       | j                  j#                  |«       | j                  j%                  |«       |j                  |j'                  || j                  «      «       |j)                  |t        «       | j*                  rƒ| j*                  j                  ||d
¬«       |j                  |›d| j*                  j-                  «       ›d�«       | j*                  j/                  |«       | j*                  j%                  |«       | j0                  r6| j3                  |«       |j                  | j                  «       ›d|›d�«       |j!                  |t        ¬	«       | j0                  r*|j5                  | j                  | j                  «       «       |j                  j7                  |«       | j                   r|j                  d«       y y )Nú	if (%s) {Fr¡  ÚPyObjectCallr6  ú = __Pyx_PyObject_Call(r1  z, NULL);rþ  T)Úsource_cnameÚdecref_sourcerS  rT  ú = __Pyx_PyObject_IsTrue(r2  rÕ   )Útest_if_runrÊ   rZ  Úexit_varr—   rÃ  r¦  r§  r   r½  r†   rÇ   rÈ   r   rÉ   r  rÊ  rË  rØ  rÖ   ré  rY  rÛ   rÏ  r¥  r©  r‹  r¯  )rY   rÌ   Ú
result_vars      rT   rÃ  z)WithExitCallNode.generate_evaluation_code  s  € Ø×Òà�J‰J�{ T§^¡^×%<Ñ%<Ñ<Ô=à�	‰	×*Ñ*¨4Ô0Ø—^‘^×1Ñ1´.ÈUÐ1ÓSˆ
à�‰�d—h‘hÔØ×Ñ×)Ñ)¬+×*AÑ*AØÐ.ó+0ô 	1à�
‰
ÚØ�N‰N×#Ó#Ø�I‰I×ÑÕð ô 	!ð 	×Ñ˜dŸn™n×5Ñ5¼NÐÔKØ�	‰	×(Ñ(¨Ô.Ø�	‰	×Ñ˜TÔ"à�
‰
�4×*Ñ*¨:°t·x±xÓ@ÔAØ�‰˜
¤NÔ3à�?Š?à�O‰O×4Ñ4°TÈ
ÐbfÐ4ÔgØ�J‰J¢Z°·±×1JÑ1JÕ1LÐMÔNØ�O‰O×9Ñ9¸$Ô?Ø�O‰O×&Ñ& tÔ,à×ÒØ×%Ñ% dÔ+Ø�J‰J¸D¿K¹K½MÊ:ÐVÔWØ×Ñ˜j¬~ÐÔ>Ø×ÒØ×!Ñ! $§(¡(¨D¯K©K«MÔ:Ø�‰×#Ñ# JÔ/Ø×ÒØ�J‰J�s�Oð rU   )	r[   r\   r]   ró   Úuptree_ref_attrsrc  rY  rX  rÃ  rW   rU   rT   rX  rX     s*   „ ð ˜Ð%€HØ#�}ÐØ€KØ€Jòó%rU   rX  c                   ó.   — e Zd Zefd„Zd„ Zd„ Zd„ Zd„ Zy)ÚExcValueNodec                 ó4   — t         j                  | ||¬«       y rÿ  )r¥  r‚  )rY   r†   r­   s      rT   r‚  zExcValueNode.__init__B  s   € Ü×Ñ  c°ÐÕ5rU   c                 ó   — || _         y rN   ©Úvar)rY   rl  s     rT   Úset_varzExcValueNode.set_varE  s	   € Øˆ�rU   c                 ó   — | j                   S rN   rk  rX   s    rT   r  z"ExcValueNode.calculate_result_codeH  s   € Ø�x‰xˆrU   c                  ó   — y rN   rW   r³  s     rT   r¾  z!ExcValueNode.generate_result_codeK  rú   rU   c                 ó   — | S rN   rW   rø   s     rT   rX  zExcValueNode.analyse_typesN  r¯  rU   N)	r[   r\   r]   r   r‚  rm  r  r¾  rX  rW   rU   rT   rh  rh  =  s    „ ð
 "0ó 6òòòórU   rh  c                   óH   — e Zd Zg Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚTempNodeNc                 óz   — t         j                  | |«       || _        |j                  rt        | _        d| _        y r«  )rñ   r‚  r­   rs   r   r.  r  )rY   r†   r­   rv   s       rT   r‚  zTempNode.__init__]  s1   € Ü×Ñ˜$ Ô$ØˆŒ	Ø×ÒÜ .ˆDÔØˆ�rU   c                 ó   — | S rN   rW   rø   s     rT   rX  zTempNode.analyse_typesd  r¯  rU   c                 ó   — d| _         y r·  r  rø   s     rT   rT  z#TempNode.analyse_target_declarationg  ó	   € Øˆ�rU   c                  ó   — y rN   rW   r³  s     rT   r¾  zTempNode.generate_result_codej  rú   rU   c                 ó\   — |j                   j                  | j                  d¬«      | _        y )NTr¡  )r¦  r§  r­   Ú
temp_cnamer³  s     rT   ÚallocatezTempNode.allocatem  s!   € ØŸ.™.×6Ñ6°t·y±yÈTÐ6ÓRˆ�rU   c                 ó\   — |j                   j                  | j                  «       d | _        y rN   )r¦  r¯  ry  r³  s     rT   ÚreleasezTempNode.releasep  s   € Ø�‰×#Ñ# D§O¡OÔ4Øˆ�rU   c                 ó4   — 	 | j                   S #  J d«       ‚xY w)Nz-Remember to call allocate/release on TempNode)ry  rX   s    rT   r  zTempNode.resultt  s#   € ð	Ø—?‘?Ð"øð	ØIÐIÓI�5ús   ‚ Ž	c                  ó   — y rN   rW   r³  s     rT   r©  zTempNode.allocate_temp_result|  rú   rU   c                  ó   — y rN   rW   r³  s     rT   r°  zTempNode.release_temp_result  rú   rU   rN   )r[   r\   r]   ró   r‚  rX  rT  r¾  rz  r|  r  r©  r°  rW   rU   rT   rr  rr  R  s7   „ ð €HóòòòòSòòòórU   rr  c                   ó   — e Zd Zd„ Zy)Ú
PyTempNodec                 óP   — t         j                  | |t        j                  |«       y rN   )rr  r‚  r   r   )rY   r†   rv   s      rT   r‚  zPyTempNode.__init__…  s   € Ü×Ñ˜$ ¤Z×%>Ñ%>ÀÕDrU   N©r[   r\   r]   r‚  rW   rU   rT   r�  r�  ‚  s   „ óErU   r�  c                   ó0   — e Zd Zg Zdd„Zd„ Zd„ Zd„ Zd„ Zy)ÚRawCNameExprNodeNc                 óH   — t         j                  | ||¬«       |�|| _        y y rÿ  )rñ   r‚  r¿   )rY   r†   r­   r¿   s       rT   r‚  zRawCNameExprNode.__init__‹  s)   € Ü×Ñ˜$ ¨$ÐÔ/ØÐØˆD�Jð rU   c                 ó   — | S rN   rW   rø   s     rT   rX  zRawCNameExprNode.analyse_types�  r¯  rU   c                 ó   — || _         y rN   ©r¿   )rY   r¿   s     rT   Ú	set_cnamezRawCNameExprNode.set_cname“  s	   € Øˆ�
rU   c                 ó   — | j                   S rN   r‰  rX   s    rT   r  zRawCNameExprNode.result–  r±  rU   c                  ó   — y rN   rW   r³  s     rT   r¾  z%RawCNameExprNode.generate_result_code™  rú   rU   r“  )	r[   r\   r]   ró   r‚  rX  rŠ  r  r¾  rW   rU   rT   r…  r…  ˆ  s    „ Ø€Hóò
òòórU   r…  c                   ó0   — e Zd ZeZdZdZdgZd„ Zd„ Z	d„ Z
y)ÚJoinedStrNodeTzString concatenationÚvaluesc                 óŠ   — | j                   D �cg c]"  }|j                  |«      j                  |«      ‘Œ$ c}| _         | S c c}w rN   )r�  rX  r9  )rY   rv   Úvs      rT   rX  zJoinedStrNode.analyse_types±  s;   € ØMQÏ[Ê[ÓYÉ[È�q—‘ sÓ+×>Ñ>¸sÕCÈ[ÑYˆŒØˆùò Zs   �'A c                  ó   — yr’  rW   rX   s    rT   rZ  zJoinedStrNode.may_be_noneµ  ó   € àrU   c           
      ó†  — |j                  | j                  «       t        | j                  «      }|dk  }t	        «       }d}| j                  D ]�  }t        |t        «      rt        ||j                  «       «      }Œ.t        |t        «      r0|j                  dk7  r!|j                  j                  j                  rŒnt        |t        «      rŒ|j                  |«       Œ‘ g }i }t!        |«      g}	| j                  D ]¥  }|j#                  |«       t        |t        «      rt!        t        |j                  «      «      }
n;d|j%                  «       › d�}
||v r#|	j'                  d|j%                  «       › d�«       |
|v r||
xx   dz  cc<   Œ�|j'                  |
«       d||
<   Œ§ |r@|j(                  j+                  t-        j.                  t,        j0                  |«      d¬	«      }n¦|j(                  j+                  t-        j2                  t,        j0                  «      d¬	«      }|j5                  d
||fz  «       |j5                  d|z  «       |j5                  d|j7                  | j                  «      z  «       |j5                  d«       t9        | j                  «      D ]*  \  }}|j5                  d|||j%                  «       fz  «       Œ, |D �cg c]  }||   dkD  r
|› d||   › �n|‘Œ }}|j                  | j                  «       | j;                  |«       |j<                  j?                  tA        jB                  dd«      «       |j5                  d| jE                  «       ||djG                  |«      djG                  |	«      fz  «       |s|j5                  d|z  «       |j(                  jI                  |«       |j5                  |jK                  | j%                  «       | j                  «      «       | jM                  |«       | j                  D ]$  }|jO                  |«       |jQ                  |«       Œ& y c c}w )Né    r  Úcz__Pyx_PyUnicode_GET_LENGTH(r¢  z__Pyx_PyUnicode_MAX_CHAR_VALUE(r,   Fr¡  z7%s = (PyObject **) PyMem_Calloc(%d, sizeof(PyObject*));r3  zPyErr_NoMemory(); %srÕ   z%s[%d] = %s;ú * ÚJoinPyUnicodeúStringTools.cz*%s = __Pyx_PyUnicode_Join(%s, %d, %s, %s);ú + ú | zPyMem_Free(%s);))r½  r†   r“   r�  Úsetr‚   rÒ  r�  rƒ  ÚFormattedValueNodeÚc_format_specr½   r­   r  Ú	CloneNodeÚaddr{   rÃ  rÛ   r  r¦  r§  r   Úc_array_typer   rÁ  rÊ   rÙ   Ú	enumerater©  rÇ   rÈ   r   rÉ   r  r£  r¯  rÖ   rì  rË  rØ  )rY   rÌ   Ú	num_itemsÚuse_stack_memoryÚunknown_nodesÚmax_char_valuerˆ   Úlength_partsÚcountsÚcharval_partsÚlength_partÚvalues_arrayÚiÚparts                 rT   rÃ  z&JoinedStrNode.generate_evaluation_code¹  s¯  € Ø�‰�d—h‘hÔÜ˜Ÿ™Ó$ˆ	Ø$ r™>Ðä›ˆØˆØ—K”KˆDÜ˜$¤Ô,Ü!$ ^°T×5NÑ5NÓ5PÓ!Q‘Ü˜TÔ#5Ô6Ø×&Ñ&¨#Ò-°$·*±*·/±/×2LÒ2LàÜ˜D¤)Ô,àà×!Ñ! $Õ'ð  ð ˆØˆÜ˜^Ó,Ð-ˆØ—K”KˆDØ×)Ñ)¨$Ô/ä˜$¤Ô,Ü!¤# d§j¡j£/Ó2‘ð !<¸D¿N¹NÓ<LÐ;MÈQÐO�Ø˜=Ñ(Ø!×(Ñ(Ð+JÈ4Ï>É>ÓK[ÐJ\Ð\]Ð)^Ô_à˜fÑ$Ø�{Ó# qÑ(Ô#à×#Ñ# KÔ0Ø&'��{Ò#ð  ñ" ØŸ>™>×7Ñ7Ü×'Ñ'¬
×(AÑ(AÀ9ÓMÐZ_ð 8ó a‰Lð  Ÿ>™>×7Ñ7Ü×#Ñ#¤J×$=Ñ$=Ó>È5ð 8ó RˆLà�J‰JÐPÐT`ÐbkÐSlÑlÔmØ�J‰JÐ-°Ñ<Ô=Ø�J‰JÐ-°·±ÀÇÁÓ0IÑIÔJØ�J‰J�sŒOä  §¡Ö-‰GˆAˆtØ�J‰J�~¨°q¸$¿.¹.Ó:JÐ(KÑKÕLð .ñ
 %ó
á$�ð +1°©,¸Ò*:ˆtˆf�C˜˜t™�~Ñ&ÀÑDØ$ð 	ð 
ð
 	�‰�d—h‘hÔØ×!Ñ! $Ô'Ø×Ñ×)Ñ)¬+×*AÑ*AÀ/ÐSbÓ*cÔdØ�
‰
Ð?Ø�K‰K‹MØØØ�J‰J�|Ó$ð �J‰J�}Ó%ðC
ñ 
ô 	ñ  Ø�J‰JÐ(¨<Ñ7Ô8Ø�‰×#Ñ# LÔ1à�
‰
�4×*Ñ*¨4¯>©>Ó+;¸T¿X¹XÓFÔGØ×Ñ˜TÔ"à—K”KˆDØ×'Ñ'¨Ô-Ø�O‰O˜DÕ!ñ  ùò3
s   ËP>N)r[   r\   r]   r   r­   r  r§  ró   rX  rZ  rÃ  rW   rU   rT   rŽ  rŽ  ¤  s*   „ ð €DØ€GØ(€Kàˆz€HòòóQ"rU   rŽ  c                   óX   — e Zd ZddgZeZdZdZdZdddd	d
œj                  Z
d„ Zd„ Zd„ Zy)r�  r½   Úformat_specTNzString formattingÚPyObject_StrÚPyObject_ReprÚPyObject_ASCIIÚ__Pyx_PyNumber_Long)ÚsÚrÚaÚdc                  ó   — yr’  rW   rX   s    rT   rZ  zFormattedValueNode.may_be_none#  r“  rU   c                 ó  — | j                   j                  |«      | _         | j                   j                  j                  «       }| j                  r| j                  j
                  r\| j                  r| j                  j                   n|j                  }| j                   j                  j                  ||¬«      r|| _        | j                  r/| j                  j                  |«      j                  |«      | _        | j                  €u| j                   j                  |«      | _         | j                  sI| j                  r| j                  dk(  r.|t        u r&| j                   j                  «       s| j                   S | S )N)r¯  r´  )r½   rX  r­   r-  r¯  rŒ   Údefault_format_specÚcan_coerce_to_pystringrž  r9  Úconversion_charr   rZ  )rY   rv   Úresolved_typerž  s       rT   rX  z FormattedValueNode.analyse_types'  s  € Ø—Z‘Z×-Ñ-¨cÓ2ˆŒ
ØŸ
™
Ÿ™×/Ñ/Ó1ˆØ×Ò 4×#3Ñ#3×#EÒ#EØ6:×6FÒ6F˜D×,Ñ,×2Ò2ÈM×LmÑLmˆMØ�z‰z�‰×5Ñ5°cÀ}Ð5ÔUØ%2�Ô"à×ÒØ#×/Ñ/×=Ñ=¸cÓB×UÑUÐVYÓZˆDÔØ×ÑÐ%ØŸ™×6Ñ6°sÓ;ˆDŒJØ×#Ò#¨T×-AÒ-AÀT×EYÑEYÐ]`ÒE`Ø ¤LÑ0¸¿¹×9OÑ9OÔ9QàŸ:™:Ð%ØˆrU   c                 ón  — | j                   �Ê| j                  j                  j                  sª| j                  j                  j	                  | j                  j                  «       || j                   «      }|j                  | j                  «       ›d|›d|j                  | j                  «       | j                  «      ›�«       | j                  |«       y | j                  j                  «       }| j                  j                  t        u xr | j                  j                  «        }| j                  rd}| j                  j                  «       }n!d}|j                  t        j                   «      }| j"                  }|dk(  r|rd }|rZ| j%                  |«      }|€
J d|z  «       ‚|›d|›d�}|j&                  j)                  t+        j,                  d	d
«      «       |dz  }nk| j                  r0|j&                  j)                  t+        j,                  dd
«      «       n/|j&                  j)                  t+        j,                  dd
«      «       |j                  | j                  «       ›d|›d|›d|›d|j                  | j                  «       | j                  «      ›�	«       | j                  |«       y )NrS  r¡  Ú__Pyx_PyObject_FormatÚ__Pyx_PyObject_FormatSimpler´  z(invalid conversion character found: '%s'rR  r¢  ÚPyObjectFormatAndDecrefr™  Ú	AndDecrefÚPyObjectFormatÚPyObjectFormatSimpler1  r¥  )rž  r½   r­   rs   Úconvert_to_pystringr  rÊ   rÖ   r†   rì  rÛ   r   rZ  r¯  r  r   Úempty_unicoder¼  Úfind_conversion_funcrÇ   rÈ   r   rÉ   )	rY   rÌ   Úconvert_func_callÚvalue_resultÚvalue_is_unicodeÚformat_funcr¯  r¼  Úfns	            rT   r¾  z'FormattedValueNode.generate_result_code9  s:  € Ø×ÑÐ)°$·*±*·/±/×2MÒ2MØ $§
¡
§¡× CÑ CØ—
‘
×!Ñ!Ó# T¨4×+=Ñ+=ó!?Ðà�J‰JØ—‘•Ú!Ø×'Ñ'¨¯©«°t·x±xÔ@ðBô Cð × Ñ  Ô&Øà—z‘z×+Ñ+Ó-ˆØŸ:™:Ÿ?™?¬lÐ:Ò[À4Ç:Á:×CYÑCYÓC[Ð?[ÐØ×ÒØ1ˆKØ×*Ñ*×4Ñ4Ó6‰Kð 8ˆKà×3Ñ3´F×4HÑ4HÓIˆKà×.Ñ.ˆØ˜cÒ!Ñ&6à"ˆOáØ×*Ñ*¨?Ó;ˆBØ�>Ð_Ð#MÐP_Ñ#_Ó_�>Ú')ª<Ð8ˆLØ×Ñ×-Ñ-Ü×'Ñ'Ð(AÀ?ÓSôUà˜;Ñ&‰KØ×ÒØ×Ñ×-Ñ-Ü×'Ñ'Ð(8¸/ÓJõLð ×Ñ×-Ñ-Ü×'Ñ'Ð(>ÀÓPôRð 	�
‰
Ø�K‰K�MÚÚÚØ×#Ñ# D§K¡K£M°4·8±8Ô<ð>ô 	?ð 	×Ñ˜TÕ"rU   )r[   r\   r]   ró   r   r­   r  rž  r§  rm   rÇ  rZ  rX  r¾  rW   rU   rT   r�  r�    sP   „ ð ˜Ð'€Hà€DØ€GØ€MØ%€Kð ØØØ"ñ	÷
 
�cð òòó$/#rU   r�  c                   ó:   — e Zd ZdZej
                  Zd„ Zd„ Zd„ Z	y)ÚParallelThreadsAvailableNodea*  
    Note: this is disabled and not a valid directive at this moment

    Implements cython.parallel.threadsavailable(). If we are called from the
    sequential part of the application, we need to call omp_get_max_threads(),
    and in the parallel part we can just call omp_get_num_threads()
    c                 ó   — d| _         | S r·  rš  rø   s     rT   rX  z*ParallelThreadsAvailableNode.analyse_types|  ó   € ØˆŒàˆrU   c                 ó  — |j                  d«       |j                  d| j                  z  «       |j                  d| j                  z  «       |j                  d«       |j                  d| j                  z  «       |j                  d«       y )Nú#ifdef _OPENMPz2if (omp_in_parallel()) %s = omp_get_max_threads();z else %s = omp_get_num_threads();r  z%s = 1;rð  ©rÊ   r  r³  s     rT   r¾  z1ParallelThreadsAvailableNode.generate_result_code�  so   € Ø�
‰
Ð#Ô$Ø�
‰
ÐGØ<@¿N¹NñKô 	Là�
‰
Ð5¸¿¹ÑFÔGØ�
‰
�7ÔØ�
‰
�9˜tŸ~™~Ñ-Ô.Ø�
‰
�8ÕrU   c                 ó   — | j                   S rN   ©r  rX   s    rT   r  z#ParallelThreadsAvailableNode.resultŠ  ó   € Ø�~‰~ÐrU   N©
r[   r\   r]   r£  r   r&  r­   rX  r¾  r  rW   rU   rT   rÎ  rÎ  q  s#   „ ñð × Ñ €Dòò
órU   rÎ  c                   ó:   — e Zd ZdZej
                  Zd„ Zd„ Zd„ Z	y)ÚParallelThreadIdNodez/
    Implements cython.parallel.threadid()
    c                 ó   — d| _         | S r·  rš  rø   s     rT   rX  z"ParallelThreadIdNode.analyse_types•  rÐ  rU   c                 óâ   — |j                  d«       |j                  d| j                  z  «       |j                  d«       |j                  d| j                  z  «       |j                  d«       y )NrÒ  z%s = omp_get_thread_num();r  rÎ  rð  rÓ  r³  s     rT   r¾  z)ParallelThreadIdNode.generate_result_codeš  sR   € Ø�
‰
Ð#Ô$Ø�
‰
Ð/°$·.±.Ñ@ÔAØ�
‰
�7ÔØ�
‰
�9˜tŸ~™~Ñ-Ô.Ø�
‰
�8ÕrU   c                 ó   — | j                   S rN   rÕ  rX   s    rT   r  zParallelThreadIdNode.result¡  rÖ  rU   Nr×  rW   rU   rT   rÙ  rÙ  Ž  s#   „ ñð × Ñ €Dòò
órU   rÙ  c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)Ú_IndexingBaseNodec                 óˆ   — | j                   j                  «       xs' | j                   j                  t        t        t
        fv S rN   )ru  r  r­   r   r   r    rX   s    rT   r  z_IndexingBaseNode.is_ephemeral±  s9   € ð �y‰y×%Ñ%Ó'ò 6¨4¯9©9¯>©>Üœ*¤nð>6ð ,6ð 	6rU   c                 ón   — | j                   j                  «       xr | j                  j                  «       S rN   )ru  r—  rv  rY  rX   s    rT   r—  z"_IndexingBaseNode.check_const_addr·  s'   € Ø�y‰y×)Ñ)Ó+ÒH°·
±
×0FÑ0FÓ0HÐHrU   c                 ó¢   — | j                   j                  r"| j                   j                  j                  ryy| j                   j                  ryyrY  )r­   r  r   rp  r  rX   s    rT   r  z_IndexingBaseNode.is_lvalueº  sC   € ð �9‰9×!Ò!Ø�y‰y×&Ñ&×/Ò/àð ð �Y‰Y×Òàð rU   N)r[   r\   r]   r  r—  r  rW   rU   rT   rÞ  rÞ  ¬  s   „ ò
6òIórU   rÞ  c                   óØ   — e Zd ZddgZdZdZdZd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd#d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd$d„Zd„ ZdZd„ Zd„ Zd„ Zd„ Z 	 	 d%d „Z!d!„ Z"d&d"„Z#y)'rw  ru  rv  NTFc                 óh   — | j                   j                  | j                  j                     | _        y rN   )ru  rƒ   rv  rX   s    rT   r2  z#IndexNode.calculate_constant_resultÚ  s#   € Ø#Ÿy™y×8Ñ8¸¿¹×9SÑ9SÑTˆÕrU   c                 óÈ   — | j                   j                  |«      }| j                  j                  |«      }	 ||   S # t        $ r}| j	                  |«       Y d }~y d }~ww xY wrN   )ru  r<  rv  rV  r@  )rY   r;  ru  rv  r?  s        rT   r<  zIndexNode.compile_time_valueÝ  sZ   € Ø�y‰y×+Ñ+¨DÓ1ˆØ—
‘
×-Ñ-¨dÓ3ˆð	-Ø˜‘;ÐøÜò 	-Ø×)Ñ)¨!×,Ñ,ûð	-ús   ¸= ½	A!ÁAÁA!c                 óî   — | j                   }|j                  «       xrX | j                  j                  «       xr< |j                  xr. |j                  j                  xs |j                  j
                  S rN   )ru  rS  rv  r­   r  rp  ©rY   ru  s     rT   rS  zIndexNode.is_simpleå  s_   € Ø�y‰yˆØ—‘Ó ò K T§Z¡Z×%9Ñ%9Ó%;ò KØ—I‘IòKØ#'§9¡9×#3Ñ#3Ò#I°t·y±y×7IÑ7Ið	LrU   c                 óì   — | j                   j                  }|rH|j                  ry|t        t        t
        fv ryt        | j                  t        «      r|j                  ryt        j                  | «      S r’  )ru  r­   r¿  r   r   r    r‚   rv  Ú	SliceNoder¿  rñ   rZ  ©rY   r  s     rT   rZ  zIndexNode.may_be_noneê  s]   € Ø—I‘I—N‘Nˆ	ÙØ×"Ò"ØØœ\¬:´~ÐFÑFØÜ˜$Ÿ*™*¤iÔ0à×,Ò,ð !Ü×#Ñ# DÓ)Ð)rU   c                  ó   — y rN   rW   rø   s     rT   rT  z$IndexNode.analyse_target_declarationù  rú   rU   c                 ój  — | j                   j                  «       }|��-|dv �r(| j                  j                  |«      }|€%t	        | j                   j
                  d|› d�«       y |dk(  rt        j                  |«      S |dk(  }| }|j                  rl|j                  r$|r t	        | j                   j
                  d«       d}|j                  r$|r t	        | j                   j
                  d«       d}|j                  }|j                  r't	        | j                   j
                  d	|› d
|› d�«       t        j                  ||| ¬«      S | j                   j                  |«      }|�r¶|j                  s|j                  ro| j                  j                   r| j                  j"                  }n| j                  g}t%        j&                  | j
                  |d ¬«      }|j)                  ||¬«      S | j                  j*                  s| j                  j                   r¢ddlm} |j1                  |j3                  |j4                  j6                  «      «       | j                  j*                  r| j                  gnt9        | j                  j"                  «      }	t        j:                  ||j=                  ||	«      «      S |j>                  sU| j                  jA                  |«      }
|
�"	 tC        |
«      }
t        jD                  ||
«      S t	        | j
                  d«       y # tF        tH        f$ r Y Œ(w xY w)N)ÚpointerÚconstÚvolatilezinvalid use of 'z', argument is not a typerì  rí  zDuplicate 'const'TzDuplicate 'volatile'z(Cannot declare memory view variable as 'z'. Did you mean 'z[item_type][:]' ?)rd  Úis_volatile)r†   Úpositional_argsÚkeyword_args)r  r,   rú  z*Array size must be a compile time constant)%ru  r\  rv  r€  r   r†   r   rÁ  r  rd  rï  r  r  Úc_const_or_volatile_typer  Úpython_type_constructor_namer�   r—   r   ÚTemplatedTypeNodeÚanalyser±   rù  rû  rÈ   Úget_view_utility_coder’  Úshared_utility_qualified_namer  ÚMemoryViewSliceTypeÚget_axes_specsrs   r<  r„   Ú
CArrayTyper˜   r™   )rY   rv   Úmodifierr  rd  rï  Útemplate_valuesÚ	type_noderû  Úaxesrv  s              rT   r€  zIndexNode.analyse_as_typeü  s¹  € Ø—9‘9×0Ñ0Ó2ˆàÑ HÐ0PÒ$PØŸ
™
×2Ñ2°3Ó7ˆIØÐ Ü�d—i‘i—m‘mÐ'7¸°zÐAZÐ%[Ô\ØØ˜9Ò$ä!×*Ñ*¨9Ó5Ð5ð   7Ñ*ˆHØ&˜,ˆKØ×(Ò(Ø×%Ò%ÙÜ˜dŸi™iŸm™mÐ-@ÔAØ#�HØ×(Ò(Ù"Ü˜dŸi™iŸm™mÐ-CÔDØ"&�KØ%×2Ñ2�	Ø×+Ò+Ü�d—i‘i—m‘mØ@ÀÀ
ÐJ[Ð\dÐ[eÐevÐwôyä×6Ñ6Ø H¸h¸,ôHð Hð —I‘I×-Ñ-¨cÓ2ˆ	Úà×%Ò%¨×)OÒ)OØ—:‘:×5Ò5Ø&*§j¡j§o¡o‘Oà'+§z¡z l�OÜ!×3Ñ3ØŸ™Ø$3Ø!%ô'�	ð !×(Ñ(¨¸	Ð(ÓBÐBØ—‘×$Ò$¨¯
©
×(JÒ(Jå(Ø×$Ñ$Ø×4Ñ4ØŸ™×AÑAóôð
 (,§z¡z×':Ò':˜Ÿ
™
‘|ÄÀTÇZÁZÇ_Á_Ó@U�Ü!×5Ñ5°iÀ×AZÑAZÐ[^Ð`dÓAeÓfÐfØ×*Ò*àŸ
™
×5Ñ5°cÓ:�ØÐ$ðGÜ # E£
˜ô  *×4Ñ4°YÀÓFÐFÜ�d—h‘hÐ LÔMØøô '¬	Ð2ò Ùðús   Ë(L  Ì L2Ì1L2c                 ó  — g }| }|j                   r{|j                  j                  |«      }|rE|j                  r9|j                  r-|j                  |j                  «       rdn|j                  «       |j                  }|j                   rŒ{|S ©Nztyping.Optional)rt  ru  r€  ró  Úmodifier_namer  Úallows_nonerv  )rY   rv   rß  Úmodifier_nodeÚmodifier_types        rT   Úanalyse_pytyping_modifiersz$IndexNode.analyse_pytyping_modifiers?  s‚   € ð ˆ	ØˆØ×(Ò(Ø)×.Ñ.×>Ñ>¸sÓCˆMÙ -×"LÒ"LØ%×3Ò3Ø× Ñ °m×6OÑ6OÔ6QÑ!2ÐWd×WrÑWrÔsØ)×/Ñ/ˆMð ×(Ó(ð ÐrU   c                 óp   — | j                   j                  |«      | j                  j                  |«      z   S rN   )ru  rl  rv  rø   s     rT   rl  zIndexNode.type_dependenciesM  s+   € Ø�y‰y×*Ñ*¨3Ó/°$·*±*×2NÑ2NÈsÓ2SÑSÐSrU   c                 ó¦  — | j                   j                  |«      }| j                  j                  rW|j                  rt
        S |j                  rt        S |t        t
        t        t        t        fv r|S |j                  r|S t        S | j                  j                  |«      }|r|j                  st        | j                  t        «      �r¿|t        u rt         j"                  S |t        u s|t
        u rt         j$                  S |t        t        t&        fv r(t)        || j                   | j                  |¬«      }|��N|S |j*                  s|j,                  r|j.                  S |j0                  r¸t        | j                  t        «      rž| j                  j3                  «       rQ| j                  j4                  }|dk  r||j6                  z  }d|cxk  r|j6                  k  rn n|j8                  |   S t;        |j8                  «      }t=        |«      dk(  rt|j?                  «       S |j                  rX|j@                  dk(  r	 |j@                  dk(  r|jB                  S t!        jD                  |jB                  |jF                  dd  «      S | j                  jH                  r|j                  rs|}| j                  jJ                  D ]V  }|j                  s nJtM        | jN                  tQ        | j                   jN                  |¬«      |¬«      j                  |«      }ŒX |S |jR                  r\ G d„ d«      }	 |	| jN                  |¬«       |	| jN                  |¬«      g}
|jU                  d	|
«      }|�|jV                  jX                  S t[        |«      r/t[        |«      r$| j                  |f}t]        t_        ||g«      «      S |t        u r|S t        S )
N©r¦   r   r,   rþ  rt  c                   ó   — e Zd Zd„ Zy)ú)IndexNode.infer_type.<locals>.FakeOperandc                 ó:   — | j                   j                  |«       y rN   )Ú__dict__Úupdate)rY   rù  s     rT   r‚  z2IndexNode.infer_type.<locals>.FakeOperand.__init__—  s   € Ø—M‘M×(Ñ(¨Õ.rU   Nrƒ  rW   rU   rT   ÚFakeOperandr
  –  s   „ ó/rU   r  )r†   r­   ú[])0ru  r‘   rv  r±   r¿  r   rÀ  r   r    r   r   r  r   r  r‚   rx  r   r¢   r£   r   rž   r  rp  r  rI  r–   rƒ   r€  rJ  rœ  r“   r    Úndimr  rø  rþ  r�   r—   rw  r†   rñ   r  Úlookup_operatorr­   ré  r>   rJ   rD   )rY   rv   r  Ú
index_typer«   rv  rª   r½  r¶  r  ÚoperandsÚ
index_funcÚindex_with_types                rT   r‘   zIndexNode.infer_typeP  s(  € Ø—I‘I×(Ñ(¨Ó-ˆ	Ø�:‰:×Òà×"Ò"ä!Ð!Ø×+Ò+ä#Ð#Øœ|¬Z¼ÌÔT^Ð_Ñ_à Ð Ø×-Ò-Ø Ð ô &Ð%à—Z‘Z×*Ñ*¨3Ó/ˆ
Ù˜*×+Ò+¬z¸$¿*¹*ÄgÕ/NàœLÑ(ô "×0Ñ0Ð0ØœnÑ,°	¼ZÑ0GÜ!×.Ñ.Ð.Øœz¬9´hÐ?Ñ?ä4Ø˜Ÿ™ D§J¡J¸ôD�	àÑ(Ø$Ð$Ø×!Ò! Y×%7Ò%7Ø ×*Ñ*Ð*Ø×$Ò$¬°D·J±JÄÔ)HØ—:‘:×1Ñ1Ô3Ø ŸJ™J×6Ñ6�EØ˜q’yØ §¡Ñ/˜Ø˜EÔ2 I§N¡NÕ2Ø(×3Ñ3°EÑ:Ð:Ü  ×!5Ñ!5Ó6�
Ü�z“? aÒ'Ø%Ÿ>™>Ó+Ð+Ø×-Ò-Ø—>‘> QÒ&ØØ—>‘> QÒ&Ø$Ÿ?™?Ð*ä%×9Ñ9¸)¿/¹/È9Ï>É>ÐZ[ÐZ\ÐK]Ó^Ð^à�:‰:×-Ò-°)×2NÒ2NØ%ˆMØ—Z‘Z—_”_�Ø$×7Ò7ÙÜ )¨$¯(©(¼À$Ç)Á)Ç-Á-ÐVcÔ9dØ01ô!3ß3=±:¸c³?ñ ð %ð %Ð$à×!Ò!÷/ñ /ñ  §¡¨yÔ9Ù §¡¨zÔ:ðˆHð ×,Ñ,¨T°8Ó<ˆJØÐ%Ø!—‘×2Ñ2Ð2ä˜9Ô%¬/¸*Ô*EØ#Ÿz™z¨:Ð6ˆOÜÔ4°YÀÐ@QÓRÓSÐSð œÑ$àÐô ÐrU   c                 óh   — | j                   j                  |«      | _         | j                  |d¬«      S )NT©Úgetting)ru  rX  Úanalyse_base_and_index_typesrø   s     rT   rX  zIndexNode.analyse_types­  s.   € Ø—I‘I×+Ñ+¨CÓ0ˆŒ	Ø×0Ñ0°¸dÐ0ÓCÐCrU   c                 ó2  — | j                   j                  |«      | _         | j                  |d¬«      }|j                  j                  rt        | j                  d«       || u r3|j                  «       s#t        | j                  d|j                  z  «       |S )NT)ÚsettingzAssignment to const dereferenceú%Assignment to non-lvalue of type '%s')ru  rX  r  r­   rd  r   r†   r  rZ  s      rT   r`  zIndexNode.analyse_target_types±  sv   € Ø—I‘I×+Ñ+¨CÓ0ˆŒ	Ø×0Ñ0°¸dÐ0ÓCˆØ�9‰9×ÒÜ�$—(‘(Ð=Ô>Ø�4‰< §¡Ô 0Ü�$—(‘(ÐCÀdÇiÁiÑOÔPØˆrU   c                 ó¬  — | j                   j                  j                  rt        j                  | _        | S | j
                  j                  }|j                  d   sL|r5t        | j
                  j                  | j
                  j                  «       nt        | j
                  «       |sct        | j
                  t        «      rIt        j                  | j
                  j                  «      r | j
                  j!                  |«      | _        | j                   j                  j"                  }|sœt        | j                   t$        «      s|r€| j                   j                  j&                  s@| j                   j                  j(                  s@| j                   j                  j*                  s | j                   j!                  |«      | _         | j-                  ||«      }|�|S |j.                  | _        | j                   j                  }|j0                  sí| j
                  j3                  |«      | _        | j
                  j                  | _        | j4                  j6                  r| j4                  j8                  | _        |j:                  ru|rt=        | j>                  dd¬«       n$| j
                  j@                  dv r| j                   S | j                   j!                  |«      | _         | j                   j                  }|jB                  r| jE                  ||||«      S |j(                  s|j*                  r| jG                  ||«      S |jH                  r| jK                  ||«      S |j0                  r| jM                  |«      S |jN                  r| jQ                  |||«      S tS        | j>                  d|z  «       t        j                  | _        | S )NÚ
wraparoundz%cannot assign to Unicode string indexr,   r€   )r   r�  z'Attempting to index non-array type '%s')*ru  r­   r  r   r3   rv  r±   rn   r‰   r²   r³   r‚   rx  r   Úlong_literalr½   r9  r  rÑ  r¿  r  rp  Úanalyse_as_buffer_operationrÎ   rq  rX  Úoriginal_index_typer  r   rb  r   r†   rƒ   rs   Úanalyse_as_pyobjectÚanalyse_as_c_arrayr  Úanalyse_as_cppÚanalyse_as_c_functionrI  Úanalyse_as_c_tupler   )rY   rv   r  r  r±   Úis_memsliceÚreplacement_noder  s           rT   r  z&IndexNode.analyse_base_and_index_typesº  sÊ  € ð �9‰9�>‰>×"Ò"ô #×-Ñ-ˆDŒIØˆKà—:‘:×&Ñ&ˆØ�~‰~˜lÒ+ÙÜ& t§z¡z×'7Ñ'7¸¿¹¿¹ÕIä& t§z¡zÔ2ñ œJ t§z¡z´7Ô;Ä×@RÑ@RÐSW×S]ÑS]×ScÑScÔ@dØŸ™×6Ñ6°sÓ;ˆDŒJà—i‘i—n‘n×7Ñ7ˆá¤
¨4¯9©9´iÔ @ÁHØ�y‰y�~‰~×'Ò'°·	±	·±×0EÒ0EÈÏÉÏÉ×I`ÒI`Ø ŸI™I×8Ñ8¸Ó=�”	à×;Ñ;¸CÀÓIÐØÐ'Ø#Ð#à—Y‘YˆŒ
Ø—I‘I—N‘Nˆ	à×%Ò%ØŸ™×1Ñ1°#Ó6ˆDŒJØ'+§z¡z§¡ˆDÔ$Ø×'Ñ'×4Ò4Ø+/×+CÑ+C×+QÑ+Q�Ô(à×(Ò(ñ Ü˜DŸH™HÐ&MÐUVÖWØ—Z‘Z×/Ñ/°7Ñ:àŸ9™9Ð$Ø ŸI™I×8Ñ8¸Ó=�”	Ø ŸI™IŸN™N�	à× Ò Ø×+Ñ+¨C°¸7ÀGÓLÐLØ×Ò ×!3Ò!3Ø×*Ñ*¨3°Ó9Ð9Ø×#Ò#Ø×&Ñ& s¨GÓ4Ð4Ø×#Ò#Ø×-Ñ-¨cÓ2Ð2Ø× Ò Ø×*Ñ*¨3°¸ÓAÐAä�$—(‘(Ø;Øñôô #×-Ñ-ˆDŒIØˆKrU   c                 ó¢  — | j                   j                  }| j                  j                  j                  rI|t        urAt        | j                  dd¬«       | j                  j                  |«      | _        d| _        �nZ| j                  j                  j                  �r|t        u�r	|r¦|j                  d   s—|t        t        t        fv r„| j                  j                  j                  r\|j                  d   rMt        | j                  t         «      r;| j                  j#                  «       r!| j                  j$                  dk\  rd| _        nd| _        | j                  j'                  t(        j*                  |«      j-                  |«      | _        | j.                  j1                  |«       n'| j                  j                  |«      | _        d| _        | xr  | j                  j                  j                  }|r|t2        u rt(        j4                  | _        �n|r<|t        t6        fv r.|rt(        j8                  | _        nõt(        j:                  | _        nß|r%|t6        t        t2        t        t        fv r|| _        n¸d }|r2|t        t        fv r$t=        || j                   | j                  |¬«      }n.| j                   j>                  rt=        || j                   |¬«      }|t        t        t        fv r | j                   jA                  d«      | _         |�|jB                  stD        | _        n|| _        | jG                  ||«       | S )	Nz¡Item lookup of unicode character codes now always converts to a Unicode string. Use an explicit C integer cast to get back the previous integer lookup behaviour.r,   r€   Úboundscheckr  r   r  ú&'NoneType' object is not subscriptable)$ru  r­   rv  rb  r   r   r†   r9  r  r  rn   r   r   r    Úsignedr‚   rx  r–   rƒ   r  r   rM  rh  r!  Úcreate_to_py_utility_coder   r¢   r   r£   r&  rž   r¯   ra  rs   r   Úwrap_in_nonecheck_node)rY   rv   r±   r  r  r  Úis_int_indexingr«   s           rT   r"  zIndexNode.analyse_as_pyobjectþ  sn  € Ø—I‘I—N‘Nˆ	Ø�:‰:�?‰?×*Ò*¨yÄ	Ñ/Iä�D—H‘HðhØopõrð Ÿ™×6Ñ6°sÓ;ˆDŒJØˆDŽLØ�Z‰Z�_‰_×#Ó#¨	¼Ò(BÙØŸN™N¨=Ò9Ø"¤y´*¼nÐ&MÑMØ!ŸZ™ZŸ_™_×3Ò3Ø #§¡¨|Ò <Ü'¨¯
©
´GÔ<Ø!ŸZ™Z×;Ñ;Ô=À$Ç*Á*×B\ÑB\Ð`aÒBaà �•à �”ØŸ™×-Ñ-¬j×.JÑ.JÈCÓP×aÑaÐbeÓfˆDŒJØ×$Ñ$×>Ñ>¸sÕCàŸ™×6Ñ6°sÓ;ˆDŒJØˆDŒLà&˜,ÒA¨4¯:©:¯?©?×+AÑ+AˆÙ˜y¬LÑ8ô #×1Ñ1ˆDŽIÙ ¬~¼zÐ.JÑ!JÙÜ&×3Ñ3�•	ô '×1Ñ1�•	Ù˜)¬
´NÄLÔR[Ô]gÐ'hÑhØ!ˆD�IàˆIÙ 9´¼JÐ0GÑ#GÜ4°S¸$¿)¹)ÀTÇZÁZÐZcÔd‘	Ø—‘×%Ò%ä4°S¸$¿)¹)ÈiÔX�	àœY¬
´IÐ>Ñ>à ŸI™I×7Ñ7Ð8`Óa�”	àÐ ¨	×(=Ò(=ô +�•	à%�”	à×#Ñ# C¨Ô1ØˆrU   c                 ó  — | j                   j                  }|j                  | _        | j                  j                  r$t	        j
                  | j                  «      | _        |r	|| _        | S | j                  j                  j                  r1| j                  j                  t        j                  |«      | _        | S | j                  j                  j                  s-t        | j                  d| j                  j                  z  «       | S )NzInvalid index type '%s')ru  r­   r  r  r   ÚCReferenceTyperv  rs   r  rM  r  r   r†   )rY   rv   r±   r  s       rT   r#  zIndexNode.analyse_as_c_array=  s¼   € Ø—I‘I—N‘Nˆ	Ø×'Ñ'ˆŒ	Ø�9‰9×!Ò!Ü"×1Ñ1°$·)±)Ó<ˆDŒIÙØ!ˆDŒIð
 ˆð	 �Z‰Z�_‰_×(Ò(ØŸ™×-Ñ-¬j×.JÑ.JÈCÓPˆDŒJð ˆð —‘—‘×'Ò'Ü�$—(‘(Ð5¸¿
¹
¿¹ÑGÔHØˆrU   c                 óB  — | j                   j                  }|j                  d| j                   | j                  g«      }|€Ot	        | j
                  d|›d| j                  j                  ›d�«       t        j                  | _        d| _        | S |j                  }|j                  r|j                  }|j                  | _        |j                  | _        | j                  r9|sd| _        t        | «      r%|j                  t!        j"                  dd«      «       | j                  j%                  |j&                  d	   j                  |«      | _        |j(                  | _        |r9|j(                  j*                  s#t	        | j
                  d
| j                  z  «       | S )Nr  z
Indexing 'z ' not supported for index type 'r+  r,  TÚCppExceptionConversionrÉ  r   z#Can't set non-reference result '%s')ru  r­   r  rv  r   r†   r   r3   r  r  r  rà   rÀ   r  rã   rÈ   r   rÉ   r  r—   ré  r  )rY   rv   r  r  r?  Ú	func_types         rT   r$  zIndexNode.analyse_as_cppJ  sB  € Ø—I‘I—N‘Nˆ	Ø×&Ñ& t¨d¯i©i¸¿¹Ð-DÓEˆØÐÜ�$—(’(ÒQZÐ\`×\fÑ\f×\kÓ\kÐlÔmÜ"×-Ñ-ˆDŒIØ(ˆDÔØˆKØ—M‘Mˆ	Ø×ÒØ!×+Ñ+ˆIØ(×8Ñ8ˆÔØ(×8Ñ8ˆÔØ×ÒÙØ#�”Ü-¨dÔ3Ø×$Ñ$¤[×%<Ñ%<Ð=UÐWgÓ%hÔiØ—Z‘Z×)Ñ)¨)¯.©.¸Ñ*;×*@Ñ*@À#ÓFˆŒ
Ø×)Ñ)ˆŒ	Ù˜9×0Ñ0×=Ò=Ü�$—(‘(ÐAÀDÇIÁIÑMÔNØˆrU   c           	      ó¨  — | j                   j                  }|j                  r| j                  |«       | S | j	                  |«      | _        d | _        |j                  €#t        | j                  d«       t        | _        | S | j
                  €t        | _        | S t        |j                  «      t        | j
                  «      k7  rOt        | j                  dt        |j                  «      ›dt        | j
                  «      ›�«       t        | _        | S |j                  t        t        |j                  | j
                  «      «      «      | _        | S )Nz)Can only parameterize template functions.z-Wrong number of template arguments: expected ú, got )ru  r­   r‚  Úparse_indexed_fused_cdefÚparse_index_as_typesÚtype_indicesrv  Ú	templatesr   r†   r3   r“   r„  ÚdictrÊ  ©rY   rv   r  s      rT   r%  zIndexNode.analyse_as_c_functionb  s  € Ø—I‘I—N‘Nˆ	Ø×ÒØ×)Ñ)¨#Ô.ð" ˆð !%× 9Ñ 9¸#Ó >ˆDÔØˆDŒJØ×"Ñ"Ð*Ü�d—h‘hÐ KÔLÜ&�”	ð ˆð ×"Ñ"Ð*ä&�”	ð ˆô �Y×(Ñ(Ó)¬S°×1BÑ1BÓ-CÒCÜ�d—h’hÜ˜Y×0Ñ0Õ1´3°t×7HÑ7HÔ3Ið!Lô Mä&�”	ð ˆð &×0Ñ0´´c¸)×:MÑ:MÈt×O`ÑO`Ó6aÓ1bÓc�”	àˆrU   c                 ó,  — | j                   j                  }t        | j                  t        «      r±| j                  j                  «       r—| j                  j                  }|j                   |cxk  r|j                  k  r-n n*|dk  r||j                  z  }|j                  |   | _        | S t        | j                  d|›d|›d�«       t        j                  | _        | S | j                   j                  |«      | _         | j                  |||¬«      S )Nr   zIndex z out of bounds for 'r+  ©r  r  )ru  r­   r‚   rv  rx  r–   rƒ   r€  rJ  r   r†   r   r3   r9  r  )rY   rv   r  r  r  rv  s         rT   r&  zIndexNode.analyse_as_c_tuplex  sÝ   € Ø—I‘I—N‘Nˆ	Ü�d—j‘j¤'Ô*¨t¯z©z×/MÑ/MÔ/OØ—J‘J×.Ñ.ˆEØ—‘ˆ %Ô8¨)¯.©.Õ8Ø˜1’9Ø˜YŸ^™^Ñ+�EØ%×0Ñ0°Ñ7�”	ð ˆKô	 �d—h’hâšið)ô*ô '×1Ñ1�”	ØˆKàŸ	™	×4Ñ4°SÓ9ˆDŒIØ×4Ñ4°SÀ'ÐSZÐ4Ó[Ð[rU   c                 ó�  — t        | j                  t        «      r| j                  j                  }n| j                  g}| j                  }|j
                  }d}|j                  r•ddlm} |j                  r-|j                  |«      }|�|j                  }|j
                  }|}|j                  ||j                  «      \  }	}}
|	rt        | j                  ||¬«      }�nMt        | j                  ||¬«      }�n3|j                   s|j"                  �r|j"                  st%        |«      |j                  k(  röd}|D �cg c]  }|j'                  |«      ‘Œ }}|j"                  r‚t)        d„ |D «       «      }|r€t+        |«      D ]_  \  }}|j,                  sŒt/        |j                  |j0                  |j2                  |j4                  ¬«      }|j'                  |«      }|||<   Œa nt)        d„ |D «       «      }|r4t7        | j                  ||¬«      }t        | j                  t8        «      rJ ‚|�|j'                  ||«      }|S c c}w )	zI
        Analyse buffer indexing and memoryview indexing/slicing
        Nr,   rú  )Úindicesru  Tc              3   ó”   K  — | ]@  }|j                   j                  xs$ |j                  xs |j                   j                  –— ŒB y ­wrN   )r­   r  r±   r>   ©rf   rv  s     rT   ri   z8IndexNode.analyse_as_buffer_operation.<locals>.<genexpr>«  s=   è ø€ ð ).á%,˜Eð Ÿ
™
×)Ñ)ÒY¨U¯^©^ÒY¸u¿z¹z×?YÑ?YÓYÙ%,ùs   ‚AA©r²   r³   r´   c              3   óH   K  — | ]  }|j                   j                  –— Œ y ­wrN   ©r­   r  rB  s     rT   ri   z8IndexNode.analyse_as_buffer_operation.<locals>.<genexpr>µ  s   è ø€ Ð(PÉ¸u¨¯©×):Õ):Éùs   ‚ ")r‚   rv  Ú	TupleNoder—   ru  r­   r  rù  rû  rw  Úmerged_indicesÚunellipsifyr  ÚMemoryViewSliceNoder†   ÚMemoryViewIndexNoderÿ  r>   r“   rX  r¡   r¢  r±   ÚSliceIntNoder²   r³   r´   ÚBufferIndexNoderŸ  )rY   rv   r  r@  ru  r  r(  rû  rG  Úhave_slicesÚnewaxesru  rv  Údo_replacementr¬  s                  rT   r   z%IndexNode.analyse_as_buffer_operationŠ  sú  € ô �d—j‘j¤)Ô,Ø—j‘j—o‘o‰Gà—z‘z�lˆGà�y‰yˆØ—I‘Iˆ	ØÐØ×'Ò'å$Ø×$Ò$à!%×!4Ñ!4°WÓ!=�Ø!Ð-ØŸ9™9�DØ $§	¡	�IØ,�GØ,6×,BÑ,BÀ7ÈIÏNÉNÓ,[Ñ)ˆK˜ 'ÙÜ#6°t·x±xÈÐW[Ô#\Ò ä#6°t·x±xÈÐW[Ô#\Ò Ø× Ò  I×$=Ó$=Ø×(Ò(¬C°«L¸I¿N¹NÒ,Jà#'Ð ÙAHÓIÁ¸˜5×.Ñ.¨sÕ3À�ÐIØ×,Ò,Ü%(ñ ).á%,ó).ó &.�Nñ &Ü'0°Ö'9™G˜A˜eØ$Ÿ~›~Ü(4°U·Y±YÀeÇkÁkÐX]×XbÑXbÐin×isÑisÔ(t Ø(-×(;Ñ(;¸CÓ(@ Ø-2 ¨¢
ñ	 (:ô &)Ñ(PÉÓ(PÓ%P�NÙ!Ü'6°t·x±xÈÐW[Ô'\Ð$ä)¨$¯*©*´iÔ@Ð@Ð@àÐ'Ø/×=Ñ=¸cÀ7ÓKÐØÐùò) Js   Ä=Ic                 ó˜   — |j                   d   r| j                  j                  «       sy | j                  j                  d«      | _        y )NÚ	nonecheckr+  )rn   ru  rZ  ra  ©rY   rv   r  s      rT   r.  z IndexNode.wrap_in_nonecheck_node¿  s7   € Ø�~‰~˜kÒ*°$·)±)×2GÑ2GÔ2IØØ—I‘I×/Ñ/Ð0XÓYˆ�	rU   c                 ó  — t        | j                  t        «      r| j                  j                  }n| j                  g}g }|D ]A  }|j	                  |j                  |«      «       |d   �Œ)|rt        |j                  d«        y  |S )Nr�  znot parsable as a type)r‚   rv  rF  r—   r  r€  r   r†   )rY   rv   Úrequiredr@  r9  rv  s         rT   r8  zIndexNode.parse_index_as_typesÄ  sx   € Ü�d—j‘j¤)Ô,Ø—j‘j—o‘o‰Gà—z‘z�lˆGØˆÛˆEØ×Ñ × 5Ñ 5°cÓ :Ô;Ø˜BÑÑ'ÙÜ˜%Ÿ)™)Ð%=Ô>Ùð ð ÐrU   c           	      ó"  — t         j                  | _        d| _        | j                  j                  }g }| j
                  j                  s| j
                  j                  r&|j                  | j
                  j                  «       nPt        | j
                  t        «      r6| j
                  j                  D ]  }|j                  |j                  «       Œ | j                  |d¬«      }|€ñ| j
                  j                  |«      | _        | j                  j                  j                   st#        | j                  d«       d| _        y| j                  j                  j                   x| j                  _        | _        | j                  j                  x| j                  _        | _        d| j                  _        d| _        d| j                  _        d| _        yt)        |«      D ]  \  }}|j+                  |«      ||<   Œ |j-                  «       }t/        |«      t/        |«      kD  rt#        | j                  d«      S t/        |«      t/        |«      k  r'|t/        |«         }	t#        | j                  d|	z  «      S t1        |||«      D ]V  \  }
}}t3        |j4                  D �	cg c]  }	|j7                  |	«      ‘Œ c}	«      st#        |
d«      c S |�|j8                  sŒV y t;        t1        ||«      «      }|j=                  |«      }|j>                  rt#        | j                  d	«       y| j                  j                  jA                  «       D ]¬  }|j7                  |«      sŒ|| _        | j                  j                  r3|j                  | _        d| _        | j                  jB                  | _!        d| j                  j                  _        || j                  _        |j                  | j                  _         y tE        d
«      ‚c c}	w )aK  
        Interpret fused_cdef_func[specific_type1, ...]

        Note that if this method is called, we are an indexed cdef function
        with fused argument types, and this IndexNode will be replaced by the
        NameNode with specific entry just after analysis of expressions by
        AnalyseExpressionsTransform.
        TF)rT  Nz)Can only index fused functions with typeszToo many types specifiedzHNot enough types specified to specialize the function, %s is still fusedzType not in fused typez6Index operation makes function only partially specificz!Couldn't find the right signature)#r   r3   r­   Úis_fused_indexru  rv  rá   rs  r  r†   r‚   rF  r—   r8  rX  r¾   rÇ  r   r  r  r¢  Úspecialize_fusedÚget_fused_typesr“   rÊ  ro   Útypesr  r  r;  r„  r‚  r  r<  r   )rY   rv   r  Ú	positionsr�   Úspecific_typesr¬  r­   Úfused_typesrg   r†   Úspecific_typeÚ
fused_typerƒ  r&  s                  rT   r7  z"IndexNode.parse_indexed_fused_cdefÒ  s=  € ô ×)Ñ)ˆŒ	à"ˆÔà—I‘I—N‘Nˆ	Øˆ	à�:‰:×Ò §¡×!8Ò!8Ø×Ñ˜TŸZ™ZŸ^™^Õ,Ü˜Ÿ
™
¤IÔ.Ø—z‘z—”�Ø× Ñ  §¡Õ)ð 'à×2Ñ2°3ÀÐ2ÓGˆàÐ!ØŸ™×1Ñ1°#Ó6ˆDŒJà—9‘9—?‘?×.Ò.Ü�d—h‘hÐ KÔLð #(ˆDÔØð 04¯y©y¯©×/JÑ/JÐJ�—	‘	” $¤*Ø-1¯Z©Z¯_©_Ð<�—	‘	” ¤à$(�—	‘	Ô!Ø#�”à"&�—
‘
”à"'ˆDÔØä  Ö0‰GˆAˆtØ $× 5Ñ 5°cÓ :ˆN˜1Òð 1ð  ×/Ñ/Ó1ˆÜˆ~Ó¤ [Ó!1Ò1Ü˜Ÿ™Ð#=Ó>Ð>Ü�Ó ¤3 {Ó#3Ò3ØœC Ó/Ñ0ˆAÜ˜Ÿ™ð $EØGHñ$Ió Jð Jô /2°)Ø2@Ø2=ö/?Ñ*ˆC� 
ô ¸*×:JÒ:JÓKÑ:J°Q˜×-Ñ-¨aÕ0Ð:JÑKÔLÜ˜SÐ":Ó;Ò;àÐ$¨×(>Ó(>Ùð/?ô !¤ [°.Ó!AÓBÐØ×#Ñ#Ð$5Ó6ˆà�=Š=ä�$—(‘(ØJõLð "ŸY™YŸ^™^×NÑNÖP�	Ø—<‘< 	Õ*Ø )�D”Ià—y‘y×-Ò-ð &/§_¡_˜œ
Ø,0˜Ô)Ø#'§9¡9§=¡=˜œà+/�D—I‘I—O‘OÔ(Ø%.�D—I‘I”NØ&/§o¡o�D—I‘I”Oáð Qô$ $Ð$GÓHÐHùòC Ls   Ê&P
zIndexing Python objectc           	      óx  — | j                   j                  t        t        t        fv r~| j                   j                  t        u rd}�n¸| j                   j                  t        u rd}�n˜| j                   j                  t        u rd}�nxJ d| j                   j                  z  «       ‚| j                   j                  j
                  rU| j                   j                  «       ›ddj                  | j                  D �cg c]  }|j                  «       ‘Œ c}«      ›d�S | j                   j                  j                  r]| j                  j                  }|dk  r#|| j                   j                  j                  z  }| j                   j                  «       ›d	|›�S | j                  j                  s| j                  j                  r:| j                  | j                   j                  k(  rt!        | j"                  d
«       y d}|| j                   j                  «       | j                  j                  «       fz  S c c}w )Nz__Pyx_PyList_GET_ITEM(%s, %s)z__Pyx_PyTuple_GET_ITEM(%s, %s)z5((unsigned char)(__Pyx_PyByteArray_AsString(%s)[%s]))z$unexpected base type in indexing: %sÚ<r�  Ú>r   ú.fzInvalid use of pointer slicez(%s[%s]))ru  r­   r   r   r    rq  r  r£  r9  r´  rI  rv  rƒ   r€  r  rp  r   r†   )rY   Ú
index_codeÚparamrv  s       rT   r  zIndexNode.calculate_result_code/  s—  € Ø�9‰9�>‰>œi¬´^ÐDÑDð �y‰y�~‰~¤Ñ*Ø<’
Ø—‘—‘¤:Ñ-Ø=’
Ø—‘—‘¤>Ñ1ØT’
àUÐDÀtÇyÁyÇ~Á~ÑUÓU�uØ�Y‰Y�^‰^×(Ò(à—	‘	× Ñ Õ"Ø—‘Àd×FWÒFWÓXÑFW¸U˜%×6Ñ6Õ8ÐFWÑXÕYð[ð [ð �Y‰Y�^‰^×%Ò%Ø—J‘J×.Ñ.ˆEØ�qŠyØ˜Ÿ™Ÿ™×,Ñ,Ñ,�Ø#Ÿy™y×/Ñ/Õ1±5Ð9Ð9à—	‘	× Ò  D§I¡I×$6Ò$6¸D¿I¹IÈÏÉÏÉÒ<WÜ�d—h‘hÐ >Ô?ØØ#ˆJØ˜TŸY™Y×-Ñ-Ó/°·±×1BÑ1BÓ1DÐEÑEÐEùò Ys   Ã:H7c           	      óR  — | j                   j                  j                  �r†| j                  j                  t        u }t        |j                  j                  d   «      xrX | j                  j                  xr@ t        | j                   j                  t        «      xr | j                   j                  dk\   }t        |j                  j                  d   «      }| j                   }| j                  j                  «       }| j                  j                  t        u r4|s2|r0|j                  j                  d   rt!        | j"                  dd«       d| j                  j%                  «       | j                  j                  xr dxs d| j                  j&                  |||||fz  S y)	Nr  r   r*  Úfreethreading_compatiblezžIndexing a bytearray with 'boundscheck' enabled and without the GIL is not thread-safe on freethreaded Python (disable 'boundscheck' to turn off this warning)r,   z , %s, %d, %s, %d, %d, %d, %d, %srù  )rv  r­   r  ru  r   re  rÇ   rn   r!  r,  r‚   rƒ   r„   r¹  rR  r    r   r†   r´  Úto_py_function)rY   rÌ   Úis_listr  r*  Úhas_gilÚunsafe_shareds          rT   Úextra_index_paramszIndexNode.extra_index_paramsL  sn  € Ø�:‰:�?‰?×!Ó!Ø—i‘i—n‘n¬	Ð1ˆGä�T×%Ñ%×0Ñ0°Ñ>Ó?ò :Ø×(Ñ(×/Ñ/ò:ä §
¡
× :Ñ :¼CÓ@ò 9ØŸ™×3Ñ3°qÑ8ð:ð ô
 ˜t×/Ñ/×:Ñ:¸=ÑIÓJˆKØ×/Ñ/Ð/ˆGØ ŸI™I×:Ñ:Ó<ˆMØ—	‘	—‘¤.Ñ0¹Á[Ø×(Ñ(×3Ñ3Ð4NÒOô Ø—H‘Hð GàHIôKð 6Ø×(Ñ(×?Ñ?ÓAØ×(Ñ(×/Ñ/Ò5°AÒ:¸Ø×(Ñ(×7Ñ7Ø˜ [°'¸=ð	9Jñ Jð Jð rU   c                 óÎ  — | j                   sy | j                  j                  }d }d }| j                  j                  rûd}| j                  j                  j
                  r0|t        u rd}n|t        u rd}nd}t        j                  dd«      }�nû|t        u rd}t        j                  dd«      }�nÙ|t        u r6| j                  j                  t        u rd	}t        j                  dd«      }�n›d
}|j                  j                  t        j                  dd«      «       t        j                  dd«      }�nR| j                  j                   rE|t        u r=| j                  j                  j
                  sJ ‚d}d}t        j                  dd«      }n÷|t"        u rU| j                  j                  j
                  sJ ‚| j                  j
                  sJ ‚d}d}t        j                  dd«      }nš|t$        u rU| j                  j                  j
                  sJ ‚| j                  j
                  sJ ‚d}d}t        j                  dd«      }n=|j&                  r| j(                  s%J d| j                  ›d|›d| j*                  ›d�«       ‚|�|j                  j                  |«       | j                  j                  j
                  r| j                  j-                  «       }n| j                  j/                  «       }|j&                  r¨| j(                  rœt1        || j*                  | j-                  «       ›d| j                  j-                  «       ›d| j                  j-                  «       ›d�| j                  j                  r| j-                  «       nd | j2                  | j4                  «       n�|dk(  rdnd|z  }|j7                  | j-                  «       ›d›d| j                  j/                  «       ›d|›| j9                  |«      ›d |j;                  || j-                  «       z  | j*                  «      ›�
«       | j                  j                  r| j=                  |«       y y )!NrË  Ú__Pyx_GetItemInt_ListÚ__Pyx_GetItemInt_TupleÚ__Pyx_GetItemIntÚ
GetItemIntr6  Ú__Pyx_PyDict_GetItemÚDictGetItemÚ__Pyx_PyObject_Dict_GetItemÚ__Pyx_PyObject_GetItemÚObjectGetItemÚ__Pyx_GetItemInt_Unicodez(Py_UCS4)-1ÚGetItemIntUnicoder™  Ú__Pyx_GetItemInt_Bytesz-1ÚGetItemIntBytesÚ__Pyx_GetItemInt_ByteArrayÚGetItemIntByteArrayzunexpected type z and base type z for indexing (r¢  rS  Ú[z];ú!%sz	%%s == %srR  r1  r¥  )r  ru  r­   rs   rv  r  r   r   r	   rÉ   r   r   r   r   rÇ   rÈ   rb  r   r    r  rà   r†   r  rÛ   rÝ   rÀ   r¹  rÊ   rk  rË   rì  )rY   rÌ   r  r;  Úerror_valuer?  rc  Úerror_checks           rT   r¾  zIndexNode.generate_result_codeg  sy  € Ø�|Š|àà—I‘I—N‘Nˆ	ØˆØˆØ�9‰9× Ò Ø ˆKØ�z‰z�‰×%Ò%Ø¤	Ñ)Ø6‘HØ¤*Ñ,Ø7‘Hà1�HÜ1×=Ñ=¸lÐL^Ó_’à¤	Ñ)Ø5�HÜ#.×#:Ñ#:¸=ÐJ\Ó#]’LØ¤.Ñ0°T·Z±Z·_±_ÌÑ5Tà<�HÜ#.×#:Ñ#:¸=ÐJ\Ó#]’Là7�HØ×$Ñ$×5Ñ5Ü*×6Ñ6°|ÐEWÓXôZä#.×#:Ñ#:¸?ÐL^Ó#_’LØ�Y‰Y×&Ò&¨9¼Ñ+DØ—:‘:—?‘?×)Ò)Ð)Ð)Ø1ˆHØ'ˆKÜ&×2Ñ2Ð3FÈÓX‰LØœ*Ñ$Ø—:‘:—?‘?×)Ò)Ð)Ð)Ø—9‘9×#Ò#Ð#Ð#Ø/ˆHØˆKÜ&×2Ñ2Ð3DÀoÓV‰LØœ.Ñ(Ø—:‘:—?‘?×)Ò)Ð)Ð)Ø—9‘9×#Ò#Ð#Ð#Ø3ˆHØˆKÜ&×2Ñ2Ð3HÈ/ÓZ‰LØ×(Ò(¨T×-AÒ-Añ0Ø—	“	š9 d§h£hð0ó 0�5ð Ð#Ø×Ñ×-Ñ-¨lÔ;à�:‰:�?‰?×!Ò!ØŸ™×*Ñ*Ó,‰JàŸ™×-Ñ-Ó/ˆJà×!Ò! d×&:Ò&:Ü# D¨$¯(©(Ø"&§+¡+¥-°·±×1AÑ1AÕ1CØ"&§*¡*×"3Ñ"3Õ"5ð7à!%§¡×!6Ò!6�—‘”¸DØ×$Ñ$ d×&;Ñ&;õ	=ð $/°&Ò#8™%¸kÈKÑ>WˆKØ�J‰Jà—K‘K•MÚØ—I‘I×'Ñ'Õ)ÙØ×+Ñ+¨DÕ1Ø×&Ñ& {°T·[±[³]Ñ'BÀDÇHÁHÔMðOôPð �9‰9× Ò Ø× Ñ  Õ&ð !rU   c                 ó®  — | j                   j                  j                  rš| j                  j                  t        u r2|j
                  j                  t        j                  dd«      «       d}n1|j
                  j                  t        j                  dd«      «       d}| j                   j                  «       }n;| j                   j                  «       }| j                  j                  t        u rd}nd}|j                  |j                  |›d	| j                  j                  «       ›d
|›d
|›| j                  |«      ›d�	| j                  «      «       y )NÚSetItemIntByteArrayr™  Ú__Pyx_SetItemInt_ByteArrayÚ
SetItemIntr6  Ú__Pyx_SetItemIntrM  ÚPyObject_SetItemrR  r1  r¢  )rv  r­   r  ru  r    rÇ   rÈ   r   rÉ   r  rÛ   r   rÊ   r÷  rk  r†   )rY   Ú
value_coderÌ   r?  rc  s        rT   Úgenerate_setitem_codezIndexNode.generate_setitem_code¶  s  € Ø�:‰:�?‰?×!Ò!Ø�y‰y�~‰~¤Ñ/Ø× Ñ ×1Ñ1Ü×+Ñ+Ð,AÀ?ÓSôUà7‘à× Ñ ×1Ñ1Ü×+Ñ+¨LÐ:LÓMôOà-�ØŸ™×*Ñ*Ó,‰JàŸ™×-Ñ-Ó/ˆJØ�y‰y�~‰~¤Ñ*Ø+‘ð .�Ø�
‰
�4×)Ñ)âØ—	‘	×#Ñ#Õ%ÚÙØ×'Ñ'¨Õ-ð/ð �H‰Hóõ 	rU   c           
      ó@  — | j                  |«       | j                  j                  r"| j                  |j	                  «       |«       �n‘| j
                  j                  t        u r&| j                  ||«      }| j                  ||«       �nO| j
                  j                  j                  rü| j                  rð| j                  dk(  rá|rh|rf| j                  |k7  rWt        || j                  | j                  | j                  «       |j                  «       | j                  || j                  «       nªt        || j                  | j                  «       ›d|j                  «       ›d�| j                  j                  r| j                  «       nd | j                  | j                  «       n3|j!                  | j                  «       ›d|j                  «       ›d�«       | j#                  |«       | j%                  |«       |j'                  |«       |j)                  |«       y )Nrß   rS  rT  )r¼  r­   rs   r‡  rÛ   ru  r    Ú_check_byte_valuer  rà   rÀ   rï   r†   r  r¹  rÝ   rÊ   rÁ  rÂ  rË  rØ  )rY   r”   rÌ   rÑ  rà   rÀ   r†  s          rT   rÒ  z"IndexNode.generate_assignment_code×  s„  € à×-Ñ-¨dÔ3à�9‰9× Ò Ø×&Ñ& s§}¡}£¸Ö=Ø�Y‰Y�^‰^œ~Ñ-Ø×/Ñ/°°cÓ:ˆJØ×&Ñ& z°4Ö8Ø�Y‰Y�^‰^×(Ò(¨T×-AÒ-AÀd×FZÑFZÐ^aÒFaÙ$©¸T×=QÑ=QÐUdÒ=dô /¨t°T·X±X¸t¿y¹yØ—K‘K“M 3§:¡:£<°×1EÑ1EØ# T×%:Ñ%:õ<ô (¨¨d¯h©hØ"&§+¡+¥-°·±µÐ>Ø%)§Y¡Y×%:Ò%:�D—K‘K”MÀØ×(Ñ(¨$×*?Ñ*?õAð
 �J‰JØ"Ÿk™k�m¨S¯Z©Z­\Ð:ô<ð 	×+Ñ+¨DÔ1Ø×Ñ Ô%Ø×"Ñ" 4Ô(Ø�‰�tÕrU   c                 ó”  — |j                   j                  sJ t        |j                   «      «       ‚|j                  «       }|j	                  «       r@d|j
                  cxk  rdk  r|S  d}t        |j                  d|j
                  z  d¬«       n|j                   t        j                  k7  }| j                  �sg }|j                  s|j                   j                  r|j                  d|z  «       |j                  sK|j                  «       r;|j                   t        j                  t        j                  t        j                   fv s|j                  d|z  «       |ra|j#                  d	d
j%                  |«      z  «       |j#                  d|j'                  | j                  «      z  «       |j#                  d«       |rd|z  }|S )Nr   é   Tz9value outside of range(0, 256) when assigning to byte: %sr,   r€   z%s < 0z%s > 255úif (unlikely(%s)) {z || zFPyErr_SetString(PyExc_ValueError, "byte must be in range(0, 256)"); %srÕ   z((unsigned char)%s))r­   r  r×  r  r–   rƒ   r   r†   r   r£   rÎ   r¯   r,  r  r›  r¼   Úc_schar_typerÊ   r£  rÙ   )rY   rÌ   r”   r†  Ú
needs_castÚ
conditionss         rT   r‰  zIndexNode._check_byte_valueø  sz  € à�x‰x�ŠÐ.¤ S§X¡X£Ó.ˆØ—Z‘Z“\ˆ
Ø×"Ñ"Ô$Ø�C×'Ñ'Ô-¨#Ò-Ø!Ð!ð .àˆJÜ�C—G‘Gð2Ø47×4GÑ4GñHàöð
 Ÿ™¤Z×%<Ñ%<Ñ<ˆJà�z‹zØˆJØ�~Š~ §¡§¢Ø×!Ñ! (¨ZÑ"7Ô8Ø—’Ø×'Ñ'Ô)¨c¯h©hÜ"×/Ñ/´×1GÑ1GÜ"×/Ñ/ð;1ñ /1ð ×!Ñ! *¨zÑ"9Ô:ÙØ—
‘
Ð0°6·;±;¸zÓ3JÑJÔKØ—
‘
ð<à—O‘O D§H¡HÓ-ñ.ô/ð —
‘
˜3”áØ.°Ñ;ˆJØÐrU   c                 ór  — | j                  |«       | j                  j                  j                  rLd}| j                  j	                  «       }|j
                  j                  t        j                  dd«      «       n;| j                  j                  «       }| j                  j                  t        u rd}nd}|j                  |j                  |›d| j                  j                  «       ›d|›| j                  |«      ›d�| j                  «      «       | j!                  |«       | j#                  |«       y )	NÚ__Pyx_DelItemIntÚ
DelItemIntr6  ÚPyDict_DelItemÚPyObject_DelItemrR  r1  r¢  )r¼  rv  r­   r  r  rÇ   rÈ   r   rÉ   rÛ   ru  r   rÊ   r÷  rk  r†   rÁ  rÂ  )rY   rÌ   rÕ  r?  rc  s        rT   rÖ  z IndexNode.generate_deletion_code  sõ   € Ø×-Ñ-¨dÔ3à�:‰:�?‰?×!Ò!Ø)ˆHØŸ™×*Ñ*Ó,ˆJØ×Ñ×-Ñ-Ü×'Ñ'¨Ð6HÓIõKð Ÿ™×-Ñ-Ó/ˆJØ�y‰y�~‰~¤Ñ*Ø+‘à-�Ø�
‰
�4×)Ñ)âØ—	‘	×#Ñ#Õ%ÙØ×'Ñ'¨Õ-ð	/ð
 �H‰Hóô 	ð 	×+Ñ+¨DÔ1Ø×Ñ Õ%rU   )FF©Trl  rj  )$r[   r\   r]   ró   r9  rt  rV  r2  r<  rS  rZ  rT  r€  r  rl  r‘   rX  r`  r  r"  r#  r$  r%  r&  r   r.  r8  r7  r§  r  rk  r¾  r‡  rÒ  r‰  rÖ  rW   rU   rT   rw  rw  Ê  sÑ   „ ð ˜Ð €HØ€Là€LØ€NòUò-òLò
*òòAòFòTò[òzDòóBòH=ò~òò0ò,\ò$3 òjZó
òYIðv +€KòFò:ò6M'ò^ðB INØGKóòB"ôH&rU   rw  c                   óŠ   ‡ — e Zd ZdZddgZdZdZdZd„ Zdd„Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zdd„Zd„ Zˆ fd„Zˆ xZS )rL  zã
    Indexing of buffers and memoryviews. This node is created during type
    analysis from IndexNode and replaces it.

    Attributes:
        base - base node being indexed
        indices - list of indexing expressions
    ru  r@  TFrW   c                 ó*   — | j                  |d¬«       y ©NFr  r]  rø   s     rT   r`  z$BufferIndexNode.analyse_target_typesI  s   € Ø×Ñ˜3¨ÐÕ.rU   c                 ó(  — | j                   j                  sBt        | j                   j                  «      s#t	        | j
                  d«       t        | _        | S |s�| j                   j                  j                  j                  st	        | j
                  d«       nLd| _	        | j                   j                  j                  r%d| j                   j                  j                  _	        d| _        | j                  ||«       | j                  |«       | S )zz
        Analyse types for buffer indexing only. Overridden by memoryview
        indexing and slicing subclasses
        zCan only index buffer variableszWriting to readonly bufferTr+  )ru  rá   r>   r­   r   r†   r3   r¾   Úwritabler  rÿ  Ú
buffer_auxÚnone_error_messageÚanalyse_buffer_indexr.  rR  s      rT   rX  zBufferIndexNode.analyse_typesL  s¾   € ð �y‰y× Ò ¬¸¿¹¿¹Ô)HÜ�$—(‘(Ð=Ô>Ü"ˆDŒIØˆKáØ—9‘9—?‘?×'Ñ'×0Ò0Ü�d—h‘hÐ <Õ=à'+�Ô$Ø—9‘9—>‘>×+Ò+ØAE�D—I‘I—O‘O×.Ñ.Ô>à"JˆÔØ×!Ñ! # wÔ/Ø×#Ñ# CÔ(ØˆrU   c                 ó"  — t        | j                  j                  «      rT| j                  D �cg c]  }||j                  f‘Œ }}t	        t        | j                  j                  |«      «      | _        nE| j                  j                  |«      | _        | j                  j                  j                  | _        | j                  j                  | _        |r5| j                  j                  s| j                  j                   rd| _
        y y y c c}w r·  )r>   ru  r­   r@  rJ   rD   rh  r  Úbuffer_typers   r  )rY   rv   r  ÚidxÚindex_with_type_lists        rT   r�  z$BufferIndexNode.analyse_buffer_indexd  s»   € Ü˜4Ÿ9™9Ÿ>™>Ô*Ø?C¿|º|Ó#L¹|¸ S¨#¯(©(¢O¸|Ð Ð#LÜ#Ô$9¸$¿)¹)¿.¹.ÐJ^Ó$_Ó`ˆD�IàŸ	™	×2Ñ2°3Ó7ˆDŒIØŸ	™	Ÿ™×,Ñ,ˆDŒIØŸ9™9Ÿ>™>ˆÔá˜Ÿ	™	×-Ò-°·±×1JÒ1JØˆD�Lð 2Kˆ7ùò $Ms   ®Dc                  ó   — y)zk
        Called by IndexNode when this node is assigned to,
        with the rhs of the assignment
        NrW   ©rY   r”   s     rT   Úanalyse_assignmentz"BufferIndexNode.analyse_assignmentp  s   � rU   c                 ó¬   — |j                   d   r| j                  j                  «       sy | j                  j                  | j                  «      | _        y )NrQ  )rn   ru  rZ  ra  rœ  rø   s     rT   r.  z&BufferIndexNode.wrap_in_nonecheck_nodev  s<   € Ø�~‰~˜kÒ*°$·)±)×2GÑ2GÔ2IØØ—I‘I×/Ñ/°×0GÑ0GÓHˆ�	rU   c                 ó¦   — | j                   s| j                  r9| j                  j                  r"t	        | j
                  d«       t        | _        y y y )Nz2Cannot access buffer with object dtype without gil)ru  rv  r­   rs   r   r†   r3   rø   s     rT   rŽ  zBufferIndexNode.nogil_check{  s@   € Ø× Ò  D×$9Ò$9Ø�y‰y×$Ò$Ü�d—h‘hÐ TÔUÜ&�•	ð %ð %:rU   c                 ó    — d| j                   z  S ©Nr-  )Úbuffer_ptr_coderX   s    rT   r  z%BufferIndexNode.calculate_result_code�  s   € Ø˜×-Ñ-Ñ-Ð-rU   c                 ó”   — | j                   }| j                   j                  r|j                  }|j                  j	                  |«      S rN   )ru  Úis_nonecheckr�   r­   Ú	get_entryræ  s     rT   Úbuffer_entryzBufferIndexNode.buffer_entry„  s6   € Ø�y‰yˆØ�9‰9×!Ò!Ø—8‘8ˆDØ�y‰y×"Ñ" 4Ó(Ð(rU   c                 ó.  — |j                   j                  t        j                  |j                  |j                  j
                  rt        j                  nt        j                  «      d¬«      }|j                  |›d|j                  «       ›d�«       |S )NFr¡  rS  rT  )
r¦  r§  r   r  r­   r,  Úc_ssize_t_typeÚc_size_t_typerÊ   r  )rY   rÌ   ÚivarÚrets       rT   Úget_index_in_tempz!BufferIndexNode.get_index_in_tempŠ  sq   € Ø�n‰n×*Ñ*Ü×*Ñ*Ø—	‘	Ø-1¯Y©Y×-=Ò-=”
×)Ò)Ä:×C[ÑC[ó]ð ð	 +ó ˆð
 	�
‰
¢ d§k¡k¥mÐ4Ô5Øˆ
rU   c                 ó¶  — | j                   rR| j                  s| j                  r:|j                  j                  d   r!t        | j                  d|j                  «       | j                  D �cg c]  }| j                  ||«      ‘Œ c}x| _	        }ddl
m} | j                  «       }|j                  j                  r|j                  j                  }n|j                   d   }||j#                  || j                  D �cg c]  }|j                  j$                  ‘Œ c}||j                  j                  | j                  ||| j                   ¬«      fS c c}w c c}w )z8
        ndarray[1, 2, 3] and memslice[1, 2, 3]
        r*  z(Use boundscheck(False) for faster accessr,   rü  Únegative_indices)r¾   Úindex_signedsÚindex_cnamesrn   r†   rÌ   rµ  r¹  )r¹  ru  rv  rÇ   rn   r.   r†   r@  r³  Úindex_tempsrù  rý  r­  r­   rÿ  rµ  Úbuffer_defaultsÚput_buffer_lookup_coder,  )rY   rÌ   r±  r¸  rý  r­  rµ  s          rT   Úbuffer_lookup_codez"BufferIndexNode.buffer_lookup_code“  s;  € ð × Ò Ø×$Ò$¨×(=Ò(=Ø×#Ñ#×.Ñ.¨}Ò=Ü$ T§X¡XÐ/YÐ[_×[kÑ[kÔlð Y]×XdÒXdÓ)eÑXdÐPT¨$×*@Ñ*@ÀÀdÕ*KÐXdÑ)eÐeˆÔ˜;õ 	Ø×(Ñ(Ó*ˆØ×Ñ×&Ò&Ø+×0Ñ0×AÑAÑà%×5Ñ5Ð6HÑIÐà˜V×:Ñ:ØØ8<¿ºÓE¹°˜4Ÿ9™9×+Ó+¸ÑEØ$Ø×'Ñ'×2Ñ2Ø—‘˜tØ-Ø!×2Ñ2ð ;ó 4ð 4ð 	4ùò *fùò Fs   Á-EÃ=Ec                 óÒ   — | j                  |«       | j                  ||«       | j                  |«       | j                  |«       |j	                  |«       |j                  |«       y rN   )r¼  Úgenerate_buffer_setitem_coderÁ  rÂ  rË  rØ  ©rY   r”   rÌ   rÑ  s       rT   rÒ  z(BufferIndexNode.generate_assignment_code°  sV   € Ø×-Ñ-¨dÔ3Ø×)Ñ)¨#¨tÔ4Ø×+Ñ+¨DÔ1Ø×Ñ Ô%Ø×"Ñ" 4Ô(Ø�‰�tÕrU   c           	      óÎ  — | j                   j                  }t        |«      røt        |j                  «      rã|j                  j                  t        t        | j                   j                  «      «      d¬«      }|j                  d|z  «       |j                  d|›d|›d| j                   j                  «       ›d�«       |j                  |›t        | j                  «      ›d|›d	|j                  «       ›d
�«       |j                  j                  |«       y | j                  |«      \  }}| j                  j                  j                   rï|j                  j                  |j"                  d¬«      }|j%                  «       }	|j                  |›d|›d
�«       |j'                  d|z  | j                  j                  «       |j                  d|	›d|›d�«       |j                  d|›d|›d	|	›d
�«       |j)                  d|z  | j                  j                  «       |j                  j                  |«       y |j                  d|›d|›d	|j%                  «       ›d
�«       y )NFr¡  ú__Pyx_call_destructor(%s);rU  rV  rW  rX  rr  z= rT  rS  z*%sz__Pyx_INCREF(z); __Pyx_XDECREF(*r2  r»   )ru  r­   r>   r<   r¦  r§  rJ   rF   rÊ   r&  rC   r@  r¯  r»  rŸ  r  rs   Úbuf_ptr_typer  rî  rô  )
rY   r”   rÌ   Úopr  r<  r­  ÚptrexprÚptrrè   s
             rT   r½  z,BufferIndexNode.generate_buffer_setitem_code¸  sÎ  € Ø—I‘I—N‘Nˆ	Ü˜9Ô%Ô*CÀCÇHÁHÔ*MØ—.‘.×.Ñ.¬{¼<ÈÏ	É	ÏÉÓ;WÓ/XÐejÐ.ÓkˆCð �J‰JÐ3°cÑ9Ô:Ø�JŠJººSÀ$Ç)Á)×BZÑBZÕB\Ð]Ô^Ø�J‰JÙÜ% d§l¡lÕ3ÚØ×"Ñ"Õ$ð	&ô 'ð
 �N‰N×'Ñ'¨Ô,Øð !%× 7Ñ 7¸Ó =Ñˆ�gà×Ñ×!Ñ!×-Ò-ð —.‘.×.Ñ.¨|×/HÑ/HØ:?ð /ó AˆCà—z‘z“|ˆHØ�J‰J¢Sª'Ð2Ô3Ø×Ñ˜U S™[¨$×*:Ñ*:×*@Ñ*@ÔAØ�JŠJÚš#ðô  à�JŠJªªR²Ð:Ô;Ø×Ñ˜e c™k¨4×+;Ñ+;×+AÑ+AÔBØ�N‰N×'Ñ'¨Õ,ð �JŠJª²°S·Z±Zµ\ÐBÕCrU   c                 ó6  — t        | j                  j                  «      rm| j                  «       }|j	                  d|z  «       |j	                  d|›d|›d| j                  j                  «       ›t        | j                  «      ›d�«       y | j                  |«      \  }| _	        | j                  j                  r^| j                  «       }|j	                  |›d| j                  ›d�«       |j	                  d|›d	|›d
�«       |j	                  d|z  «       y y )NrÀ  rU  rV  rW  rX  z = (PyObject *) *rT  rv  z == NULL)) z = Py_None;z__Pyx_INCREF((PyObject*)%s);)r>   ru  r­   r  rÊ   r&  rC   r@  r»  r©  rs   )rY   rÌ   Úresr­  s       rT   r¾  z$BufferIndexNode.generate_result_codeâ  sØ   € Ü˜4Ÿ9™9Ÿ>™>Ô*Ø—+‘+“-ˆCØ�J‰JÐ3°cÑ9Ô:Ø�JŠJÚÚØ—	‘	×(Ñ(Ô*Ü% d§l¡lÕ3ð	5ô 6ð
 Ø-1×-DÑ-DÀTÓ-JÑ*ˆ�dÔ*Ø�9‰9× Ò ð —+‘+“-ˆCØ�J‰J²3¸×8LÓ8LÐMÔNà�JŠJÂCÊÐMÔNØ�J‰JÐ5¸Ñ;Õ<ð !rU   c                 óŠ   •— | j                   D ]  }|j                  j                  |«       Œ d| _         t        ‰| �  |«       y r¹  )r¸  r¦  r¯  rP   rÂ  )rY   rÌ   ÚtemprS   s      €rT   rÂ  z"BufferIndexNode.free_subexpr_temps÷  s:   ø€ Ø×$Ô$ˆDØ�N‰N×'Ñ'¨Õ-ð %àˆÔÜ‰Ñ" 4Õ(rU   r•  rj  )rù  )r[   r\   r]   r£  ró   ru  r  r¸  r`  rX  r�  r¤  r.  rŽ  r  r­  r³  r»  rÒ  r½  r¾  rÂ  r^   r_   s   @rT   rL  rL  5  sv   ø„ ñð ˜	Ð"€HàÐð €Oð €Kò/óò0
 òòIò
'ò.ò)òò4ó:ó(DòT=÷*)ð )rU   rL  c                   ó.   — e Zd ZdZdZdd„Zd„ Zd„ Zd„ Zy)	rJ  TFc                 ó°  — ddl m} t        |«      | _        | j                  }|j                  || j                  j                  j                  «      \  }}}|sXd| _	        | j                  j                  s| j                  j                  r%d| j                  j                  j                  _	        | xr, t        |«      | j                  j                  j                  k(  | _        g }t        j                   }g }	t        |«      t        |«      z
  | j                  j                  j                  kD  r[t"        | _        t%        || j                  j                  j                     j&                  d| j                  j                  z  «       | S d}
t)        |«      D �]Ô  \  }}|j+                  |«      }|j,                  r*d| _        |	j1                  |«       |j1                  d«       ŒN| j                  j                  j2                  |
   \  }}|
dz  }
|j4                  r–d| _        |j6                  j,                  r|j1                  ||f«       n|j1                  |df«       dD ]K  }t9        ||«      }|j,                  rŒ|j;                  ||«      }t=        |||«       |	j1                  |«       ŒM �Œ|j                  j>                  s|j                  j@                  r^|j                  j@                  rtC        |j&                  d	|«       d| _"        |j;                  ||«      }|||<   |	j1                  |«       �Œ¥t"        | _        t%        |j&                  d
|j                  z  «       | c S  | jD                  xr | j.                   | _"        |	| _        || _#        |jH                  | _$        | jK                  |||«      }|jM                  |«       |S )Nr,   rú  Tz&Too many indices specified for type %sr   )ÚdirectÚstridedrÌ  rC  z/Index should be typed for more efficient accessz/Invalid index for memoryview specified, type %s)'rù  rû  rB   Úis_pythran_moder@  rH  ru  r­   r  r  rá   rs  r¾   r“   Úmemslice_indexr   rM  r3   r   r†   r¢  rX  rœ   rw  r  rþ  r±   r´   r
  r  Úsetattrr  rs   r.   rv  Úoriginal_indicesrÎ   Úanalyse_operationr.  )rY   rv   r  rû  r@  rM  rN  rþ  r  Únew_indicesÚaxis_idxr¬  rv  ÚaccessÚpackingÚattrr½   rˆ   s                     rT   rX  z!MemoryViewIndexNode.analyse_types  s  € å ä-¨cÓ2ˆÔØ—,‘,ˆØ(2×(>Ñ(>¸wÈÏ	É	ÏÉ×H[ÑH[Ó(\Ñ%ˆ�W˜gáØ#'ˆDÔ Ø�y‰y× Ò  D§I¡I×$:Ò$:Ø7;�—	‘	—‘×$Ñ$Ô4à#*˜{ÒR¬s°7«|¸t¿y¹y¿~¹~×?RÑ?RÑ/RˆÔØˆä×1Ñ1ˆ
Øˆäˆw‹<œ#˜g›,Ñ&¨¯©¯©×)<Ñ)<Ò<Ü"ˆDŒIÜ�'˜$Ÿ)™)Ÿ.™.×-Ñ-Ñ.×2Ñ2Ø:¸T¿Y¹Y¿^¹^ÑKôMàˆKàˆÜ! '×*‰HˆAˆuØ×'Ñ'¨Ó,ˆEØ�}Š}Ø(,�Ô%Ø×"Ñ" 5Ô)Ø—‘Ð1Ô2Øà"Ÿi™iŸn™n×1Ñ1°(Ñ;‰OˆF�GØ˜‰MˆHà�~Š~Ø(,�Ô%Ø—:‘:×%Ò%Ø—K‘K ¨Ð 1Õ2à—K‘K ¨Ð 3Ô4ó 6�DÜ# E¨4Ó0�EØ Ÿ=›=Ø %§¡°
¸CÓ @˜ä  t¨UÔ3Ø#×*Ñ*¨5Õ1ò 6ð —‘×"Ò" e§j¡j×&<Ò&<Ø—:‘:×)Ò)Ü$ U§Y¡YÐ0aÐcfÔgà(,�Ô%ØŸ™¨
°CÓ8�Ø"�˜‘
Ø×"Ñ" 5Ö)ô '�”	Ü�e—i‘iÐ!RÐUZ×U_ÑU_Ñ!_Ô`Ø’ðO +ðT !%× 5Ñ 5Ò S¸d×>SÑ>SÐ:SˆÔØ"ˆŒð !(ˆÔØ—Y‘YˆŒ
à×%Ñ% c¨7°DÓ9ˆØ×#Ñ# CÔ(ØˆrU   c                 ó8   — d| _         | j                  ||«       | S )Nz"Cannot index None memoryview slice)rœ  r�  )rY   rv   r  rþ  s       rT   rÑ  z%MemoryViewIndexNode.analyse_operationR  s   € Ø"FˆÔØ×!Ñ! # wÔ/ØˆrU   c                 ó„   — | j                   j                  r*| }|j                  s|j                  rd|_        d|_        yyy)z³
        Support broadcasting for slice assignment.
        E.g.
            m_2d[...] = m_1d  # or,
            m_1d[...] = m_2d  # if the leading dimension has extent 1
        TN)r­   r  r  ©rY   r”   Úlhss      rT   Úanalyse_broadcast_operationz/MemoryViewIndexNode.analyse_broadcast_operationW  sB   € ð �9‰9×'Ò'ØˆCØ×'Ò'¨3×+CÒ+CØ+/�Ô(Ø+/�Õ(ð ,Dð (rU   c                 óR   — | j                  |«      }|r|j                  |_        |S | S rN   )r¤  r  rÙ  s      rT   Ú$analyse_as_memview_scalar_assignmentz8MemoryViewIndexNode.analyse_as_memview_scalar_assignmentd  s-   € Ø×%Ñ% cÓ*ˆÙØ-0×-KÑ-KˆCÔ*ØˆJØˆrU   Nr•  )	r[   r\   r]   rv  ru  rX  rÑ  rÛ  rÝ  rW   rU   rT   rJ  rJ  þ  s$   „ àÐØÐóMò^ò
0órU   rJ  c                   óR   — e Zd ZdZdZdZdZdZd„ Zd„ Z	d„ Z
d„ Zd„ Zd„ Zd	„ Zdd
„Zy)rI  TFc                 ó–   — t        d„ | j                  D «       «      | _        | j                  r| j                  j                  | _        yy)z@Slicing operations needing no evaluation, i.e. m[...] or m[:, :]c              3   óÄ   K  — | ]X  }|j                   xrF |j                  j                  xr. |j                  j                  xr |j                  j                  –— ŒZ y ­wrN   )r±   r²   rœ   r³   r´   rB  s     rT   ri   z<MemoryViewSliceNode.analyse_ellipsis_noop.<locals>.<genexpr>y  sL   è ø€ ð $'á%�ð �N‰NÒ`˜uŸ{™{×2Ñ2Ò`°u·z±z×7IÑ7IÒ`ÈeÏjÉj×N`ÑN`Ó`Ù%ùó   ‚AA N)r¡   r@  Úis_ellipsis_noopru  r­   rR  s      rT   Úanalyse_ellipsis_noopz)MemoryViewSliceNode.analyse_ellipsis_noopv  sA   € ô !$ñ $'àŸšó$'ó !'ˆÔð × Ò ØŸ	™	Ÿ™ˆD�Ið !rU   c                 ó  — ddl m} |sd| _        d| _        nd| _        | j	                  ||«       | j
                  r| S d | _        d| _        d| _        |j                  | j                  |«      st        | _        | S t        j                  | j                  j                  j                   |«      | _        | j                  j#                  «       s:| j                  j%                  «       s | j                  j'                  |«      | _        | S )Nr,   rú  Tz&Cannot assign to None memoryview slicez"Cannot slice None memoryview slice)rù  rû  r  rœ  rã  râ  rv  r  r¨  Úvalidate_axesr†   r3   r­   r   rø  ru  r  rS  r›  rQ  )rY   rv   r  rþ  rû  s        rT   rÑ  z%MemoryViewSliceNode.analyse_operation€  sÐ   € Ý áØ(,ˆDÔ%Ø&NˆDÕ#à&JˆDÔ#à×"Ñ" 3¨Ô0Ø× Ò ØˆKàˆŒ
ØˆŒØ#ˆÔà×'Ñ'¨¯©°$Ô7Ü"ˆDŒIØˆKä×2Ñ2°4·9±9·>±>×3GÑ3GÈÓNˆŒ	à—	‘	×#Ñ#Ô%¨¯©×)AÑ)AÔ)CØŸ	™	×0Ñ0°Ó5ˆDŒIØˆrU   c                 ó  — |j                   j                  s[| j                   j                  j                  |j                   «      s|j                   j                  rt        | j                  | «      S t        | j                  | «      S rN   )r­   r  r  r  rs   ÚMemoryCopyScalarr†   ÚMemoryCopySlicer£  s     rT   r¤  z&MemoryViewSliceNode.analyse_assignment›  sX   € Ø�x‰x×*Ò*Ø—	‘	—‘×/Ñ/°·±Ô9Ø—‘×$Ò$ä# D§H¡H¨dÓ3Ð3ä" 4§8¡8¨TÓ2Ð2rU   c                 óþ  — |sy| j                   dd }|dd }t        | j                   «      D ]�  \  }}|j                  rd|j                  j                  rL|j
                  j                  r6|j                  j                  r |d   ||<   |j                  d«       |rŒp|c S  y|j                  j                  rŒ� y |r>t        |«      t        |«      z   | j                  j                  j                  kD  ry||z  }|S )a  Return a new list of indices/slices with 'indices' merged into the current ones
        according to slicing rules.
        Is used to implement "view[i][j]" => "view[i, j]".
        Return None if the indices cannot (easily) be merged at compile time.
        Nr   )rÐ  r¢  r±   r²   rœ   r³   r´   r    r­   r  r“   ru  r  )rY   r@  rÒ  r¬  r´  s        rT   rG  z"MemoryViewSliceNode.merged_indices¤  sÒ   € ñ Øà×+Ñ+©AÐ.ˆØ™!�*ˆÜ˜d×3Ñ3Ö4‰DˆAˆqØ�zŠzØ—7‘7—?’? q§v¡v§~¢~¸!¿&¹&¿.º.à%,¨Q¡Z�K ‘NØ—K‘K ”NÚ"Ø*Ò*ñ  Ø—V‘V—]“]áð 5ñ Ü�;Ó¤# g£,Ñ.°·±·±×1DÑ1DÒDØØ˜7Ñ"ˆKØÐrU   c                 ó¦   — | j                   r6| j                  j                  «       xs | j                  j                  «       S | j                  «       S rN   )râ  ru  rS  r›  rX   s    rT   rS  zMemoryViewSliceNode.is_simpleÃ  s?   € Ø× Ò à—9‘9×&Ñ&Ó(ÒF¨D¯I©I×,DÑ,DÓ,FÐFà×"Ñ"Ó$Ð$rU   c                 ó6   — | j                   j                  «       S )z3This is called in case this is a no-op slicing node)ru  r  rX   s    rT   r  z)MemoryViewSliceNode.calculate_result_codeÊ  s   € à�y‰y×ÑÓ!Ð!rU   c           	      óx  — | j                   ry | j                  «       }| j                   }d}t        | j                  «      }| j
                  D ]�  }|j                  rvd}|j                  j                  st        |«      |_        |j                  j                  st        |«      |_
        |j                  j                  rŒtt        |«      |_        Œ…t        |«       Œ‘ t        |«      rJ ‚|j                  || j
                  | j                  «       | j                  |||j                   j"                  ¬«       y )NFT)r·  rM  rn   )râ  r­  r¹  Úiterr@  rÐ  r±   r²   rœ   Únextr³   r´   r  Úgenerate_buffer_slice_coder  r­   rÇ   rn   )rY   rÌ   r­  r·  rM  râ  rv  s          rT   r¾  z(MemoryViewSliceNode.generate_result_codeÎ  sø   € Ø× Ò ØØ×(Ñ(Ó*ˆØ×,Ñ,Ð,ˆð ˆÜ�$—,‘,ÓˆØ×*Ô*ˆEØ�~Š~Ø"�Ø—{‘{×*Ò*Ü"& r£(�E”KØ—z‘z×)Ò)Ü!% b£�E”JØ—z‘z×)Ó)Ü!% b£�E•Jä�R•ð +ô ˜”8Ðˆ|à×/Ñ/Ø�$×'Ñ'¨¯©«¸¿	¹	Ø¨;Ø×'Ñ'×2Ñ2ð 	0õ 	4rU   c                 óf  — | j                   r| j                  |«       n| j                  |«       | j                  r| j	                  ||«       n| j                  ||«       | j                   r| j                  |«       n| j                  |«       |j                  |«       |j                  |«       y rN   )	râ  r¼  rÃ  Úis_memview_scalar_assignmentÚ+generate_memoryviewslice_assign_scalar_codeÚ&generate_memoryviewslice_setslice_coderÁ  rË  rØ  r¾  s       rT   rÒ  z,MemoryViewSliceNode.generate_assignment_codeê  s�   € Ø× Ò Ø×1Ñ1°$Õ7à×)Ñ)¨$Ô/à×,Ò,Ø×<Ñ<¸SÀ$ÕGà×7Ñ7¸¸TÔBà× Ò Ø×/Ñ/°Õ5à×'Ñ'¨Ô-à×"Ñ" 4Ô(Ø�‰�tÕrU   Nrj  )r[   r\   r]   rw  râ  rñ  rv  r  rã  rÑ  r¤  rG  rS  r  r¾  rÒ  rW   rU   rT   rI  rI  l  sJ   „ àÐð ÐØ#(Ð ØÐØ Ðò'òò63òò>%ò"ò4ô8rU   rI  c                   ó0   ‡ — e Zd ZdZdgZˆ fd„Zdd„Zˆ xZS )ÚMemoryCopyNodeze
    Wraps a memoryview slice for slice assignment.

        dst: destination mememoryview slice
    Údstc                 óT   •— t         ‰| �  |«       || _        |j                  | _        y rN   )rP   r‚  rö  r­   ©rY   r†   rö  rS   s      €rT   r‚  zMemoryCopyNode.__init__  s"   ø€ Ü‰Ñ˜ÔØˆŒØ—H‘Hˆ�	rU   c                 ó  — | j                   j                  |«       | j                  ||«       | j                   j                  |«       | j                   j	                  |«       |j                  |«       |j	                  |«       y rN   )rö  rÃ  Ú_generate_assignment_coderË  rØ  r¾  s       rT   rÒ  z'MemoryCopyNode.generate_assignment_code  sb   € Ø�‰×)Ñ)¨$Ô/Ø×&Ñ& s¨DÔ1Ø�‰×'Ñ'¨Ô-Ø�‰×Ñ˜DÔ!Ø×"Ñ" 4Ô(Ø�‰�tÕrU   rj  )r[   r\   r]   r£  ró   r‚  rÒ  r^   r_   s   @rT   rõ  rõ  þ  s   ø„ ñð ˆw€Hô÷
rU   rõ  c                   ó   — e Zd ZdZdZdZd„ Zy)rè  z¡
    Copy the contents of slice src to slice dst. Does not support indirect
    slices.

        memslice1[...] = memslice2
        memslice1[:] = memslice2
    TÚ__pyx_memoryview_copy_contentsc                 óð  — | j                   }|j                  j                  |j                  «       |j                  j                  |j                  «       |j	                  |j                  d| j                  |j                  «       |j                  «       |j                  j                  |j                  j                  |j                  j                  j                  fz  |j                  «      «       y )Nz%s(%s, %s, %d, %d, %d))rö  r­   Úassert_direct_dimsr†   rÊ   r÷  Úcopy_slice_cnamer  r  r  rs   )rY   r#  rÌ   rö  s       rT   rú  z)MemoryCopySlice._generate_assignment_code!  s§   € Ø�h‰hˆà�‰×#Ñ# C§G¡GÔ,Ø�‰×#Ñ# C§G¡GÔ,à�
‰
�4×)Ñ)Ø$¨×(=Ñ(=Ø(+¯
©
«°c·j±j³lØ(+¯©¯©°s·x±x·}±}Ø(+¯©¯©×(BÑ(Bð(Dñ Dð �G‰Góõ 	rU   N)r[   r\   r]   r£  r  rÿ  rú  rW   rU   rT   rè  rè    s   „ ñð "&ÐØ7ÐórU   rè  c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )rç  zÃ
    Assign a scalar to a slice. dst must be simple, scalar will be assigned
    to a correct type and not just something assignable.

        memslice1[...] = 0.0
        memslice1[:] = 0.0
    c                 ó\   •— t         ‰| �  ||«       |j                  j                  | _        y rN   )rP   r‚  r­   r  rø  s      €rT   r‚  zMemoryCopyScalar.__init__8  s!   ø€ Ü‰Ñ˜˜cÔ"Ø—H‘H—N‘Nˆ�	rU   c                 ó  — ddl m} | j                  j                  j	                  | j                  j
                  «       | j                  j                  j                  }|j                  d«      }| j                  j                  j                  d«      }|j                  «        |j                  |›d|j                  «       ›d�«       | j                  j                  «       s| j                  j                  «       r| j                  j                  «       }n1|j                  |›d| j                  j                  «       ›d�«       d}d}| j                  j                  }	|	D ]X  }
t        |
t        «      sŒ|
j                   j"                  r-|
j$                  j"                  r|
j&                  j"                  rŒWd	}ŒZ |j)                  | j                  j                  || j                  j                  j*                  ||¬
«      }|j-                  «       }|j.                  r|j                  d|z  «       |j                  d|›d|›d�«       |j.                  r|j                  d«       |j1                  «        |j3                  «        y )Nr,   rú  rù  z __pyx_temp_scalar = rT  z __pyx_temp_slice = Ú__pyx_temp_sliceFT)Úforce_stridedzPy_DECREF(*(PyObject **) %s);z*((z *) z) = __pyx_temp_scalar;zPy_INCREF(__pyx_temp_scalar);)rù  rû  rö  r­   rþ  r†   r  rå   Úbegin_blockrÊ   r  r›  rS  rÐ  r‚   rè  r²   rœ   r³   r´   Ú
slice_iterr  Ústart_loopsrs   Ú	end_loopsÚ	end_block)rY   ÚscalarrÌ   rû  r  Ú	type_declÚ
slice_declÚdst_tempr  r@  r   Úslice_iter_objÚps                rT   rú  z*MemoryCopyScalar._generate_assignment_code<  sÆ  € Ý à�‰�‰×(Ñ(¨¯©¯©Ô6à—‘—‘×#Ñ#ˆØ×*Ñ*¨2Ó.ˆ	Ø—X‘X—]‘]×3Ñ3°BÓ7ˆ
à×ÑÔØ�
‰
²9¸f¿m¹m½oÐNÔOØ�8‰8×"Ñ"Ô$¨¯©×(:Ñ(:Ô(<Ø—x‘x—‘Ó(‰Hà�J‰J²jÀ$Ç(Á(Ç/Á/ÕBSÐTÔUØ)ˆHàˆØ—(‘(×+Ñ+ˆÛˆCÜ˜#œyÕ)°3·9±9×3DÒ3DØ36·8±8×3CÒ3CØ36·8±8×3CÓ3CØ $‘ð	 ð $×.Ñ.¨t¯x©x¯}©}¸hØ/3¯x©x¯}©}×/AÑ/AÀ4Ø=Jð /ó Lˆð ×&Ñ&Ó(ˆà×ÒØ�J‰JÐ6¸Ñ:Ô;à�
Š
º)ÂQÐGÔHà×ÒØ�J‰JÐ6Ô7à× Ñ Ô"Ø�‰ÕrU   )r[   r\   r]   r£  r‚  rú  r^   r_   s   @rT   rç  rç  /  s   ø„ ñô#ö'rU   rç  c                   ó
  ‡ — e Zd Zg d¢ZdZdZd„ Zdd„Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zdd„Zd„ Zˆ fd„ZdZ ej$                  ddddi¬«      Z ej$                  ddddi¬«      Zˆ fd„Zd„ Z	 	 d d„Zd!d„Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )"ÚSliceIndexNode)ru  r²   r³   ÚsliceFNc                 óR  — | j                   j                  |«      }|j                  s|j                  rt        S |j
                  rt        S |t        t        t        t        t        fv r|S |j                  s|j                  r t        j                  |j                  d «      S t        S rN   )ru  r‘   r¿  r  r   rÀ  r   r    r   r   r  rp  r   r¡  r  r   r<  s      rT   r‘   zSliceIndexNode.infer_typet  sŠ   € Ø—I‘I×(Ñ(¨Ó-ˆ	Ø×Ò )×"8Ò"8ÜÐØ×'Ò'ÜÐØœ:¤~´|Ü$¤jð2ñ 2àÐØ×Ò ×!3Ò!3Ü×*Ñ*¨9×+>Ñ+>ÀÓEÐEÜÐrU   c                 óÔ   — |t         urF| j                  r:| j                  j                  «       r|| j                  j                  z  }nt         }| j                  j                  |«      S rN   )r6  r²   r–   rƒ   ru  r{  rz  s     rT   r{  z"SliceIndexNode.inferable_item_node�  sN   € àœÑ&¨4¯:ª:Ø�z‰z×-Ñ-Ô/Ø˜Ÿ™×3Ñ3Ñ3‘ä&�Ø�y‰y×,Ñ,¨UÓ3Ð3rU   c                 ó²   — | j                   j                  }|r+|j                  ry|t        t        t
        t        t        fv ryt        j                  | «      S r’  )
ru  r­   r¿  r   r    r   r   r   rñ   rZ  ré  s     rT   rZ  zSliceIndexNode.may_be_noneŠ  sJ   € Ø—I‘I—N‘Nˆ	ÙØ×"Ò"ØØœZ¬¼Ü&¬
ð4ñ 4àÜ×#Ñ# DÓ)Ð)rU   c                 óÔ   — | j                   €d }n| j                   j                  }| j                  €d }n| j                  j                  }| j                  j                  || | _        y rN   )r²   rƒ   r³   ru  )rY   r²   r³   s      rT   r2  z(SliceIndexNode.calculate_constant_result”  sW   € Ø�:‰:ÐØ‰Eà—J‘J×.Ñ.ˆEØ�9‰9ÐØ‰Dà—9‘9×,Ñ,ˆDØ#Ÿy™y×8Ñ8¸¸tÐDˆÕrU   c                 ó:  — | j                   j                  |«      }| j                  €d}n| j                  j                  |«      }| j                  €d }n| j                  j                  |«      }	 ||| S # t        $ r}| j                  |«       Y d }~y d }~ww xY wr   )ru  r<  r²   r³   rV  r@  )rY   r;  ru  r²   r³   r?  s         rT   r<  z!SliceIndexNode.compile_time_valueŸ  s�   € Ø�y‰y×+Ñ+¨DÓ1ˆØ�:‰:ÐØ‰Eà—J‘J×1Ñ1°$Ó7ˆEØ�9‰9ÐØ‰Dà—9‘9×/Ñ/°Ó5ˆDð	-Ø˜˜dÐ#Ð#øÜò 	-Ø×)Ñ)¨!×,Ñ,ûð	-ús   Á1A6 Á6	BÁ?BÂBc                  ó   — y rN   rW   rø   s     rT   rT  z)SliceIndexNode.analyse_target_declaration®  rú   rU   c                 ón   — | j                  |d¬«      }|j                  j                  rt        |_        |S r˜  )rX  r­   rs   r   rZ  s      rT   r`  z#SliceIndexNode.analyse_target_types±  s0   € Ø×!Ñ! #¨uÐ!Ó5ˆà�9‰9× Ò Ü&ˆDŒIØˆrU   c                 ó<	  ‡— | j                   j                  |«      | _         | j                   j                  j                  s@| j                   j                  j                  s | j                   j                  j
                  r�t        | j                  «      }t        | j                  | j                  xs || j                  xs ||¬«      }t        | j                  || j                   ¬«      }|j                  ||| ¬«      S | j                  r | j                  j                  |«      | _	        | j                  r | j                  j                  |«      | _
        |j                  d   s t        | j                  | j                  «       | j                   j                  }|j                  rG|sE| j                  s| j                  s|| _        nÖt!        j"                  |j$                  «      | _        n±|j&                  s|j(                  rt+        |«      | _        nˆ|j,                  rt.        | _        np|j0                  r|| _        n\|j                  r%t!        j"                  |j$                  «      | _        n+| j                   j3                  |«      | _         t4        | _        |j6                  r'|| _        | j                   j9                  d«      | _         | j                  t4        u rË| j                  r| j                  j:                  �r‰| j                  r| j                  j:                  �rft        | j                  «      }t        | j                  t=        j>                  | j                  xs |«      t=        j>                  | j                  xs |«      |¬«      j                  |«      | _         nát         jB                  Šˆfd„}| j                  rZ| j                  j                  jD                  r || j                  d|«      | _	        | j                  jG                  ‰|«      | _	        | j                  rZ| j                  j                  jD                  r || j                  d|«      | _
        | j                  jG                  ‰|«      | _
        d	| _$        | S )
NrC  )rv  ru  r>  r  r+  c                 ó„  •— ddl m}m}  || «      }t        | j                  t        | j                  ‰||j                  «       rt        |«      nt        ¬«      |j                  ‰|«      t        | j                  |dt        | j                  «      ¬«      j                  |«      ¬«      j                  |«      } |||«      S )Nr,   ©ÚEvalWithTempExprNodeÚResultRefNode)r­   r½   rƒ   Úis)Úoperand1r   Úoperand2)Útrue_valÚ	false_valÚtest)Ú	UtilNodesr  r  ÚCondExprNoder†   rx  r  r„   r6  r  ÚPrimaryCmpNoder  rX  Úanalyse_result_type)rˆ   Údefault_valuerv   r  r  Únode_refÚnew_exprÚc_ints          €rT   Ú
allow_nonez0SliceIndexNode.analyse_types.<locals>.allow_noneõ  sª   ø€ çJá(¨Ó.�Ü'Ø—H‘HÜ$ØŸ™Ø"Ø+Ø>K×>SÑ>SÔ>U¬¨MÔ(:Ô[iô	ð '×0Ñ0°¸Ó<Ü'ØŸ™Ø!)Ø!%Ü!)¨$¯(©(Ó!3ô	÷
 $‘m CÓ(ô÷ &Ñ% cÓ*ð ñ  ,¨H°hÓ?Ð?rU   rà  r@  r,   )%ru  rX  r­   rÿ  r>   r  r  r†   rè  r²   r³   rw  r  rn   r‰   rp  r   rÁ  r  r¿  rt  r~   rÀ  r   r  r9  r   r¿  ra  r¯   r&   Údeepcopyr  rM  rs   r  r  )	rY   rv   r  Ú	none_noderv  r¥   r  r-  r,  s	           @rT   rX  zSliceIndexNode.analyse_types¸  s7  ø€ Ø—I‘I×+Ñ+¨CÓ0ˆŒ	à�9‰9�>‰>×#Ò# t§y¡y§~¡~×'EÒ'EÈÏÉÏÉ×IjÒIjÜ  §¡Ó*ˆIÜ˜dŸh™hØ$(§J¡JÒ$;°)Ø#'§9¡9Ò#9°	Ø#,ô.ˆEô # 4§8¡8°5¸t¿y¹yÔIˆJØ×:Ñ:Ø˜W°'¨kð ;ó ;ð ;ð �:Š:ØŸ™×1Ñ1°#Ó6ˆDŒJØ�9Š9ØŸ	™	×/Ñ/°Ó4ˆDŒIà�~‰~˜lÒ+Ü" 4§:¡:¨t¯y©yÔ9à—I‘I—N‘Nˆ	Ø×Ò¡gà—:’: d§i¢iØ%�•	ä&×/Ñ/°	×0CÑ0CÓD�•	Ø× Ò  I×$;Ò$;Ü(¨Ó-ˆD�IØ×'Ò'Ü$ˆD�IØ×ÒØ!ˆD�IØ×Òô #×+Ñ+¨I×,?Ñ,?Ó@ˆD�IàŸ	™	×4Ñ4°SÓ9ˆDŒIÜ&ˆDŒIØ×$Ò$à!ˆDŒIØŸ	™	×3Ñ3Ð4\Ó]ˆDŒIà�9‰9œÑ&Ø—J’J $§*¡*×"7Ó"7ØŸš d§i¡i×&:Ó&:ä$ T§X¡XÓ.�	Ü&Ø—H‘HÜŸ-™-¨¯
©
Ò(?°iÓ@ÜŸ™ t§y¡yÒ'=°IÓ>Ø"ô	÷
  ‘- Ó$ð •
ô ×0Ñ0ˆEô@ð. �zŠzØ—:‘:—?‘?×.Ò.Ù!+¨D¯J©J¸¸SÓ!A�D”JØ!ŸZ™Z×1Ñ1°%¸Ó=�”
Ø�yŠyØ—9‘9—>‘>×-Ò-Ù *¨4¯9©9Ð6FÈÓ L�D”IØ ŸI™I×/Ñ/°°sÓ;�”	ØˆŒØˆrU   c                 óŒ  — | j                   j                  |«      }|r§| j                  s›| j                  s�ddlm} |j                  |j                  |j                  j                  «      «       t        | j                  «      }t        | j                  |||¬«      }t        j                  ||j                  ||g«      «      S y )Nr,   rú  rC  )ru  r€  r²   r³   rù  rû  rÈ   rö  r’  r÷  r  r†   rè  r   rø  rù  )rY   rv   r  rû  r/  Ú
slice_nodes         rT   r€  zSliceIndexNode.analyse_as_type  sª   € Ø—I‘I×-Ñ-¨cÓ2ˆ	ÙØ—:’: d§i¢iå(Ø×$Ñ$Ø×4Ñ4ØŸ™×AÑAóôô
 % T§X¡XÓ.�	Ü&Ø—H‘HØ#Ø"Ø"ô	�
ô "×5Ñ5Ø˜z×8Ñ8¸¸z¸lÓKóMð MàrU   c                 óD   •— |j                   | _         t        ‰| �	  |«      S rN   )rÎ   rP   rŽ  ©rY   rv   rS   s     €rT   rŽ  zSliceIndexNode.nogil_check-  s   ø€ Ø—Y‘YˆŒ
Ü‰wÑ" 3Ó'Ð'rU   zSlicing Python objectÚSliceObjectr6  rÔ  ÚGet)r’  ÚSetc                 ó(  •— | j                   j                  j                  s | j                   j                  j                  rb|t        t
        t        fv rO|t        u r@|j                  d   s1t        | j                  d| j                   j                  ›d|›d�«       || _        |j                  rT| j                   j                  j                  r4| j                  s(| j                  s| j                   j                  ||«      S t        ‰| �5  ||«      S )Nrd   ú/default encoding required for conversion from 'ú' to 'r+  )ru  r­   r¿  rt  r   r    r   rn   r   r†   rp  r²   r³   r  rP   r¹  s      €rT   r  zSliceIndexNode.coerce_to9  s¿   ø€ Ø�Y‰Y�^‰^×%Ò%¨¯©¯©×)EÒ)EØ¤¬^¼\Ð JÑJØœLÑ(°·±Ð@SÒ1TÜ�d—h’hà—Y‘Y—^“^¢Xð/ô0ð !ˆDŒIØ×Ò §¡§¡×!8Ò!8Ø—:’: d§i¢ià—y‘y×*Ñ*¨8°SÓ9Ð9ä‰wÑ  ¨3Ó/Ð/rU   c                 óZ  — | j                   j                  s$t        | j                  d| j                   z  «       y | j                  j                   }| j                  «       }| j                  «       }| j                  «       }|j                  r¥| j                  j                  t        j                  «      }| j                   t        u rd}n9| j                   t        u rd}n$| j                   j                  j                  «       }| j                   €d|› d|› d|› d�}�nJd|› d|› d|› d	|› d
|› d�}�n6|j"                  r€| j                  j                  t        j$                  «      }|j&                  j)                  t+        j,                  dd«      «       | j                   €d|› d|› d�}�n»d|› d|› d	|› d
|› d�	}�nª|t        u rW| j                  j                  «       }|j&                  j)                  t+        j,                  dd«      «       d|› d	|› d	|› d�}�nK| j                   t.        u r›| j                  j1                  «       }| j3                  «       \  }	}
}}}}}t5        |j&                  j6                  d   «      }|j&                  j)                  | j8                  «       d|› d	|› d	|› d	|› d	|› d	|› d	|	d›d	|
d›d	|d›d�}nž| j                  j1                  «       }|t:        u r2|j&                  j)                  t=        j,                  dd«      «       d}n<|t>        u r2|j&                  j)                  t=        j,                  dd«      «       d}nd}|› d|› d	|› d	|› d�}|jA                  |› d|› d|jC                  || j                  «      › �«       | jE                  |«       y )Nz,Slicing is not currently supported for '%s'.Ú	ByteArrayÚUnicoder  z_FromString(rš  r¢  z_FromStringAndSize(r1  ú - Úpyunicode_from_unicoder™  z__Pyx_PyUnicode_FromUnicode(z%__Pyx_PyUnicode_FromUnicodeAndLength(ÚPyUnicode_Substringz__Pyx_PyUnicode_Substring(r  z__Pyx_PyObject_GetSlice(r·  ÚSliceTupleAndListr6  Ú__Pyx_PyList_GetSliceÚ__Pyx_PyTuple_GetSliceÚPySequence_GetSlicerR  rS  r¡  )#r­   rs   r   r†   ru  r  Ú
start_codeÚ	stop_coder¿  r  r   rq   r    r   rt   Útitler³   rÀ  Úc_const_py_unicode_ptr_typerÇ   rÈ   r   rÉ   r   rÛ   Úget_slice_configre  rn   Úget_slice_utility_coder   r	   r   rÊ   rÖ   rì  )rY   rÌ   r  r  rD  rE  Úbase_resultÚ	type_nameÚcallÚhas_c_startÚ
has_c_stopÚc_startÚc_stopÚpy_startÚpy_stopÚpy_slicer  Úcfuncs                     rT   r¾  z#SliceIndexNode.generate_result_codeH  sŽ  € Ø�y‰y×$Ò$Ü�$—(‘(Ø@À4Ç9Á9ÑLôNàà—I‘I—N‘Nˆ	Ø—‘“ˆØ—_‘_Ó&ˆ
Ø—N‘NÓ$ˆ	à×ÒØŸ)™)×-Ñ-¬j×.NÑ.NÓOˆKØ�y‰yœNÑ*ð (‘	Ø—‘œlÑ*Ø%‘	à ŸI™IŸN™N×0Ñ0Ó2�	à�y‰yÐ Ø! ) ¨L¸¸ÀSÈÈÐTUÐV’à! ) Ð,?À¸}ÈCÐPZÈ|Ð[]Ð^gÐ]hÐhkÐlvÐkwÐwxÐy’à×'Ò'ØŸ)™)×-Ñ-¬j×.TÑ.TÓUˆKØ×Ñ×-Ñ-Ü×'Ñ'Ð(@À/ÓRôTà�y‰yÐ Ø5°k°]À#ÀjÀ\ÐQRÐS’à>¸{¸mÈ3ÈzÈlÐZ\Ð]fÐ\gÐgjÐkuÐjvÐvwÐx’àœ,Ñ&ØŸ)™)×*Ñ*Ó,ˆKØ×Ñ×-Ñ-Ü×'Ñ'Ð(=¸ÓOôQà/°¨}¸B¸z¸lÈ"ÈYÈKÐWXÐYŠDà�Y‰Yœ.Ñ(ØŸ)™)×-Ñ-Ó/ˆKØTX×TiÑTiÓTkÑQˆK˜ W¨f°hÀÈÜ˜d×.Ñ.×9Ñ9¸,ÑGÓHˆJà×Ñ×-Ñ-¨d×.IÑ.IÔJØ.Ø�-˜r ' ¨"¨V¨H°B°x°jÀÀ7À)È2ÈhÈZÐWYØ˜q�/  J¨q >°°J¸q°>ÀðD‰Dð Ÿ)™)×-Ñ-Ó/ˆKØœIÑ%Ø× Ñ ×1Ñ1Ü&×2Ñ2Ð3FÐHZÓ[ô]à/‘ØœjÑ(Ø× Ñ ×1Ñ1Ü&×2Ñ2Ð3FÐHZÓ[ô]à0‘à-�Ø�W˜A˜k˜]¨"¨Z¨L¸¸9¸+ÀQÐGˆDà�
‰
�f�X˜S   b¨×)@Ñ)@ÀÈÏÉÓ)RÐ(SÐTÔUØ×Ñ˜TÕ"rU   c                 ó6  — | j                  |«       | j                  j                  r®|j                  j	                  | j
                  «       | j                  «       \  }}}}	}
}}|j                  | j                  d| j                  j                  «       |j                  «       ||	|
||||t        |j                  j                  d   «      f
z  «       �n | j                  r| j                  «       nd}|j                  j                  r)|j                  j                   }| j#                  ||«       n| j%                  «       ›d|›�}|j                  j	                  t'        j(                  dd«      «       |j+                  d| j                  j-                  «       ›d|›d	|j-                  «       ›d
| j                  j-                  «       ›d|›d�«       | j/                  |«       | j1                  |«       |j3                  |«       |j5                  |«       y )Nz?__Pyx_PyObject_SetSlice(%s, %s, %s, %s, %s, %s, %s, %d, %d, %d)r  rà  r=  ÚIncludeStringHr™  ú	memcpy(&(r|  ú]), r‡  z[0]) * (r
  )r¼  r­   rs   rÇ   rÈ   Úset_slice_utility_coderH  r‹  r†   ru  rÛ   re  rn   r²   rD  rp  r€  Úgenerate_slice_guard_coderE  r   rÉ   rÊ   r  rÁ  rÂ  rË  rØ  )rY   r”   rÌ   rÑ  rà   rÀ   rM  rN  rO  rP  rQ  rR  rS  Ústart_offsetÚarray_lengths                  rT   rÒ  z'SliceIndexNode.generate_assignment_code�  s¦  € à×-Ñ-¨dÔ3Ø�9‰9× Ò Ø×Ñ×-Ñ-¨d×.IÑ.IÔJØTX×TiÑTiÓTkÑQˆK˜ W¨f°hÀÈØ×!Ñ! $§(¡(ØQØ—I‘I×'Ñ'Ó)Ø—M‘M“OØ˜VØ˜g xØ Ü˜×)Ñ)×4Ñ4°\ÑBÓCðUEñ EöFð 15·
²
˜4Ÿ?™?Ô,ÀˆLØ�x‰x× Ò Ø"Ÿx™xŸ}™}�Ø×.Ñ.¨t°\ÕBà,0¯N©NÕ,<¹lÐK�à×Ñ×-Ñ-¬k×.EÑ.EÐFVÐXgÓ.hÔiØ�JŠJØ—	‘	× Ñ Õ"¢LØ—
‘
•Ø—	‘	× Ñ Õ"¢Lðô ð 	×+Ñ+¨DÔ1Ø×Ñ Ô%Ø×"Ñ" 4Ô(Ø�‰�tÕrU   c                 ó,  — | j                   j                  j                  s$t        | j                  d| j                  z  «       y | j                  |«       |j                  j                  | j                  «       | j                  «       \  }}}}}}}	|j                  | j                  d| j                   j                  «       |||||	||t        |j                  j                  d   «      f	z  «       | j                  |«       | j                  |«       y )Nz=Deleting slices is only supported for Python types, not '%s'.z;__Pyx_PyObject_DelSlice(%s, %s, %s, %s, %s, %s, %d, %d, %d)r  )ru  r­   rs   r   r†   r¼  rÇ   rÈ   rY  rH  r‹  rÛ   re  rn   rÁ  rÂ  )
rY   rÌ   rÕ  rM  rN  rO  rP  rQ  rR  rS  s
             rT   rÖ  z%SliceIndexNode.generate_deletion_code±  sù   € Ø�y‰y�~‰~×)Ò)Ü�$—(‘(ØQÐTX×T]ÑT]Ñ]ô_àØ×-Ñ-¨dÔ3Ø×Ñ×)Ñ)¨$×*EÑ*EÔFà(,×(=Ñ(=Ó(?ñ	&ˆ�j '¨6Ø	�7˜HØ×Ñ˜dŸh™hØIØ—	‘	×#Ñ#Ó%Ø˜Ø˜' 8Ø˜ZÜ�T×%Ñ%×0Ñ0°Ñ>Ó?ðMAñ Aô	Bð 	×+Ñ+¨DÔ1Ø×Ñ Õ%rU   c                 ó&  — d\  }}}| j                   r[| j                   j                  j                   }|r| j                   j                  «       }nd| j                   j	                  «       z  }d\  }}}| j
                  r[| j
                  j                  j                   }|r| j
                  j                  «       }nd| j
                  j	                  «       z  }| j                  xr d| j                  j	                  «       z  xs d}|||||||fS )N)Frà  rË  ú&%srË  )r²   r­   rs   r  rÛ   r³   r  )rY   rM  rO  rQ  rN  rP  rR  rS  s           rT   rH  zSliceIndexNode.get_slice_configÄ  së   € Ø);Ñ&ˆ�W˜hØ�:Š:Ø"Ÿj™jŸo™o×9Ñ9Ð9ˆKÙØŸ*™*×+Ñ+Ó-‘à  4§:¡:×#7Ñ#7Ó#9Ñ9�Ø&8Ñ#ˆ
�F˜GØ�9Š9Ø!ŸY™YŸ^™^×7Ñ7Ð7ˆJÙØŸ™×)Ñ)Ó+‘à $§)¡)×"5Ñ"5Ó"7Ñ7�Ø—:‘:Ò@ %¨$¯*©*×*>Ñ*>Ó*@Ñ"@ÒJÀFˆØ˜Z¨°&Ø˜' 8ð-ð 	-rU   c                 ó   — | j                   j                  j                  sy | j                   j                  j                  }	 t	        |«      x}}d x}}| j                  r?| j                  j                  «       }	 t	        |«      }|dk  r|€d||fz  }n||z  }n|}d }| j                  rx| j                  j                  «       }	 t	        |«      }|dk  r-|€&d| j                   j                  j                  |fz  }n||z  }t        |t        «      r||z  }n|›d|›d�}d }d }d}	 t	        |«      }	t        |t        «      }|r!|dk  r|	dkD  rVt        | j                  d«       n?|r&|€$|€"|	|k7  r4t        | j                  d|›d|›�«       n|�|€|}d	|›d
|›d�}n|�|}n|}|r¤|j                  d|›d|›d�«       | j                  r|j                  «        |j                  d|›d|›d�«       | j                  r|j                  «        |j                  |j!                  | j                  «      «       |j                  d«       y y # t
        $ r d }Y �Œ
w xY w# t
        $ r Y �ŒËw xY w# t
        $ r Y �ŒWw xY w# t
        $ r d }	Y �ŒIw xY w)Nr   z%s + %dz - (r¢  FzAssignment to empty slice.z.Assignment to slice of wrong length, expected r6  rR  z)-(úif (unlikely((z) != (ú))) {zšPyErr_Format(PyExc_ValueError, "Assignment to slice of wrong length, expected %" CYTHON_FORMAT_SSIZE_T "d, got %" CYTHON_FORMAT_SSIZE_T "d", (Py_ssize_t)(z), (Py_ssize_t)(r
  rÕ   )ru  r­   rp  r€  r„   r˜   r³   r  r²   r‚   r   r†   rÊ   rÎ   r×   rØ   rÙ   )
rY   rÌ   Útarget_sizeÚ
slice_sizeÚtotal_lengthr²   r³   Úruntime_checkÚcompile_time_checkÚint_target_sizes
             rT   rZ  z(SliceIndexNode.generate_slice_guard_code×  s�  € Ø�y‰y�~‰~×&Ò&ØØ—Y‘Y—^‘^×(Ñ(ˆ
ð	 Ü(+¨J«Ð7ˆL˜:ð Ðˆ�Ø�9Š9Ø—9‘9×#Ñ#Ó%ˆDðÜ˜4“y�Ø˜!’8Ø#Ð+Ø%.°*¸dÐ1CÑ%C™
à" dÑ*™
à!%�JØ�ð �:Š:Ø—J‘J×%Ñ%Ó'ˆEðÜ˜E›
�Ø˜1’9Ø#Ð+Ø )¨T¯Y©Y¯^©^×-@Ñ-@À%Ð,HÑ H™à Ñ-˜Ü˜j¬#Ô.Ø %Ñ'‘Jâ0:ºEÐ!B�JØ�ð ˆØ"Ðð	=Ü! +Ó.ˆOô ",¨J¼Ó!<Ðá *¨q¢.Ø Ò"Ü�d—h‘hÐ <Õ=Ù E M°d°là *Ò,Ü�d—h’hÚ ¡+ð!/õ 0àÐØˆ|Ø!�øÚ+/²Ð7‰MØÐØ ‰Mà&ˆMáØ�JŠJº-ÊÐUÔVØ�zŠzØ×#Ñ#Ô%Ø�JŠJò  ¢ð0ô1ð
 �zŠzØ×,Ñ,Ô.Ø�J‰J�t—‘ t§x¡xÓ0Ô1Ø�J‰J�s�Oð øô} ò 	 Ø‹Lð	 ûô  ò Úðûô" ò Úðûô ò 	#Ø"‹Oð	#úsI   ÁI Á;$I ÃAI. Ä(I> ÉIÉIÉ	I+É*I+É.	I;É:I;É>JÊJc                 óP   — | j                   r| j                   j                  «       S y)Nrà  )r²   r  rX   s    rT   rD  zSliceIndexNode.start_code)  s   € Ø�:Š:Ø—:‘:×$Ñ$Ó&Ð&àrU   c                 óÐ   — | j                   r| j                   j                  «       S | j                  j                  j                  r | j                  j                  j
                  S y)Nr@  )r³   r  ru  r­   rp  r€  rX   s    rT   rE  zSliceIndexNode.stop_code/  sD   € Ø�9Š9Ø—9‘9×#Ñ#Ó%Ð%Ø�Y‰Y�^‰^×$Ò$Ø—9‘9—>‘>×&Ñ&Ð&à#rU   c                  ó   — y)Nz<unused>rW   rX   s    rT   r  z$SliceIndexNode.calculate_result_code7  s   € àrU   rk  r•  rl  rj  )r[   r\   r]   ró   rÎ   r  r‘   r{  rZ  r2  r<  rT  r`  rX  r€  rŽ  r§  r	   ÚloadrI  rY  r  r¾  rÒ  rÖ  rH  rZ  rD  rE  r  r^   r_   s   @rT   r  r  f  sÒ   ø„ ò 2€HØ€Eà€Eòó4ò*ò	Eò-òòó]ò~ô,(ð *€Kà4Ð/×4Ñ4ØÐ)°H¸eÐ3DôFÐð 5Ð/×4Ñ4ØÐ)°H¸eÐ3DôFÐô0òE#ðN INØGKó óD&ò&-ò&Pòdò$örU   r  c                   óH   — e Zd Zg d¢ZdZeZdZd„ Zd„ Z	d„ Z
d„ ZdZd	„ Zd
„ Zy)rè  rC  Tr,   c                 ó    — t        | j                  j                  | j                  j                  | j                  j                  «      | _        y rN   ©r  r²   rƒ   r³   r´   rX   s    rT   r2  z#SliceNode.calculate_constant_resultH  ó6   € Ü$Ø�J‰J×&Ñ&Ø�I‰I×%Ñ%Ø�I‰I×%Ñ%ó 'ˆÕrU   c                 ó  — | j                   j                  |«      }| j                  j                  |«      }| j                  j                  |«      }	 t	        |||«      S # t
        $ r}| j                  |«       Y d }~y d }~ww xY wrN   ©r²   r<  r³   r´   r  rV  r@  ©rY   r;  r²   r³   r´   r?  s         rT   r<  zSliceNode.compile_time_valueN  ós   € Ø—
‘
×-Ñ-¨dÓ3ˆØ�y‰y×+Ñ+¨DÓ1ˆØ�y‰y×+Ñ+¨DÓ1ˆð	-Ü˜  dÓ+Ð+øÜò 	-Ø×)Ñ)¨!×,Ñ,ûð	-úó   ÁA  Á 	BÁ)A?Á?Bc                  ó   — yr’  rW   rX   s    rT   rZ  zSliceNode.may_be_noneW  r­  rU   c                 óÌ  — | j                   j                  |«      }| j                  j                  |«      }| j                  j                  |«      }|j	                  |«      | _         |j	                  |«      | _        |j	                  |«      | _        | j                   j
                  r:| j                  j
                  r$| j                  j
                  rd| _        d| _        | S r  )r²   rX  r³   r´   r9  r¯   r  )rY   rv   r²   r³   r´   s        rT   rX  zSliceNode.analyse_typesZ  s¬   € Ø—
‘
×(Ñ(¨Ó-ˆØ�y‰y×&Ñ& sÓ+ˆØ�y‰y×&Ñ& sÓ+ˆØ×-Ñ-¨cÓ2ˆŒ
Ø×+Ñ+¨CÓ0ˆŒ	Ø×+Ñ+¨CÓ0ˆŒ	Ø�:‰:× Ò  T§Y¡Y×%9Ò%9¸d¿i¹i×>RÒ>RØ"ˆDŒOØ ˆDŒLØˆrU   z Constructing Python slice objectc                 ó   — | j                   S rN   r"  rX   s    rT   r  zSliceNode.calculate_result_codeh  r#  rU   c                 ó„  — | j                   rht        | j                  | f«      }|j                  d|¬«      | _        |j                  | j                  «      }|€y |j                  | j                  «       |j                  | j                  «       ›d| j                  j                  «       ›d| j                  j                  «       ›d| j                  j                  «       ›d|j                  | j                  «       | j                  «      ›�	«       | j                  |«       | j                   r| j!                  |«       y y )Nr  ©Ú	dedup_keyz = PySlice_New(r1  r¥  )r¯   r®   r­   r‰  r  rŠ  r½  r†   rÊ   r  r²   rÛ   r³   r´   rÖ   rì  rò  )rY   rÌ   r{  s      rT   r¾  zSliceNode.generate_result_codek  sñ   € Ø�?Š?Ü& t§y¡y°4°'Ó:ˆIØ#×0Ñ0°ÀIÐ0ÓNˆDÔØ×3Ñ3°D×4DÑ4DÓEˆDØˆ|ØØ�M‰M˜$Ÿ(™(Ô#à�
‰
à—‘•Ø—
‘
×$Ñ$Õ&Ø—	‘	×#Ñ#Õ%Ø—	‘	×#Ñ#Õ%Ø×'Ñ'¨¯©«°t·x±xÔ@ðBô	Cð 	×Ñ˜TÔ"Ø�?Š?Ø×!Ñ! $Õ'ð rU   N)r[   r\   r]   ró   r±   r!   r­   r  r2  r<  rZ  rX  r§  r  r¾  rW   rU   rT   rè  rè  <  s=   „ ò )€HØ€HØ€DØ€Gò'ò-òò
ð 5€Kò ó(rU   rè  c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	rK  r   c                 ó    — t        | j                  j                  | j                  j                  | j                  j                  «      | _        y rN   ro  rX   s    rT   r2  z&SliceIntNode.calculate_constant_resultŠ  rp  rU   c                 ó  — | j                   j                  |«      }| j                  j                  |«      }| j                  j                  |«      }	 t	        |||«      S # t
        $ r}| j                  |«       Y d }~y d }~ww xY wrN   rr  rs  s         rT   r<  zSliceIntNode.compile_time_value�  rt  ru  c                  ó   — yr’  rW   rX   s    rT   rZ  zSliceIntNode.may_be_none™  r­  rU   c                 óª  — | j                   j                  |«      | _         | j                  j                  |«      | _        | j                  j                  |«      | _        | j                   j                  s | j                   j                  |«      | _         | j                  j                  s | j                  j                  |«      | _        | j                  j                  s | j                  j                  |«      | _        | j                   j                  r:| j                  j                  r$| j                  j                  rd| _        d| _        | S r  )r²   rX  r³   r´   rœ   rN  r¯   r  rø   s     rT   rX  zSliceIntNode.analyse_typesœ  så   € Ø—Z‘Z×-Ñ-¨cÓ2ˆŒ
Ø—I‘I×+Ñ+¨CÓ0ˆŒ	Ø—I‘I×+Ñ+¨CÓ0ˆŒ	à�z‰z×!Ò!ØŸ™×3Ñ3°CÓ8ˆDŒJØ�y‰y× Ò ØŸ	™	×1Ñ1°#Ó6ˆDŒIØ�y‰y× Ò ØŸ	™	×1Ñ1°#Ó6ˆDŒIà�:‰:× Ò  T§Y¡Y×%9Ò%9¸d¿i¹i×>RÒ>RØ"ˆDŒOØ ˆDŒLØˆrU   c                  ó   — y rN   rW   rX   s    rT   r  z"SliceIntNode.calculate_result_code­  rú   rU   c                 óª   — | j                   | j                  | j                  fD ]-  }t        |t        «      sŒ|j
                  j                  «        Œ/ y rN   )r²   r³   r´   r‚   rŸ  r�   r  )rY   rÌ   r¶  s      rT   r¾  z!SliceIntNode.generate_result_code°  s6   € Ø—‘˜DŸI™I d§i¡iÓ/ˆAÜ˜!œYÕ'Ø—‘—‘•ñ 0rU   N)
r[   r\   r]   r  r2  r<  rZ  rX  r  r¾  rW   rU   rT   rK  rK    s'   „ ð €Gò'ò-òòò"órU   rK  c                   óL   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zdd„Zd„ Z	d„ Z
d	„ Zd
„ ZdZy)ÚCallNodeNc                 ó@  — | j                   }|j                  |«      }t        |t        «      rt	        j
                  |j                  «      S |t        u r||j                  rQ|j                  j                  |«      }|j                  r*t        j                  ||j                  «      }|t        ur|S t        |dd «      }|�|j                  xs |}|j                   r|j"                  }|j$                  r¯t        | j                   dd «      rŒt'        | d«      r€| j(                  D �cg c]  }|j                  |«      ‘Œ }}| j                   j*                  j-                  ||«      }	|	r0|	j                  }|j                   r|j"                  }|j.                  S |j.                  S |t0        u r²|j2                  r¦|j*                  rš|j*                  j                  r„|j*                  j                  }|j4                  r|S |j                  rT|j*                  j6                  }
|
dk(  rt        j8                  S |
dk(  rt        j:                  S |
t        j<                  v r|S | j                   j?                  |«      }|r|j@                  s|jB                  r|S t        S c c}w )Nr¾   r—   r…   re  )"r?  r‘   r‚   r©  r   rÁ  r®  r   rs  r<  r¿  r   Ú"find_return_type_of_builtin_methodr=  r
  r­   r  r  rq  rL  r—   r¾   Úbest_function_matchré  r   rá   r¾  rt   r;  rB  Ú#types_that_construct_their_instancer€  Úis_struct_or_unionr  )rY   rv   r?  r4  Úmethod_obj_typeÚresult_typer¾   r�   Ú	arg_typesÚ
func_entryÚ	func_names              rT   r‘   zCallNode.infer_type»  s,  € Ø—=‘=ˆà×'Ñ'¨Ó,ˆ	Ü�h¤Ô,ä×&Ñ& x×':Ñ':Ó;Ð;ØœÑ&à×$Ò$Ø"*§,¡,×"9Ñ"9¸#Ó">�Ø"×2Ò2Ü")×"LÑ"LÈ_Ð^f×^pÑ^pÓ"q�KØ"¬.Ñ8Ø*Ð*Ü˜H g¨tÓ4ˆEØÐ Ø!ŸJ™JÒ3¨)�	Ø×ÒØ!×+Ñ+ˆIØ×!Ò!Ü�t—}‘} g¨tÔ4¼ÀÀvÔ9NØ<@¿IºIÓF¹I°S˜SŸ^™^¨CÕ0¸I�	ÐFØ!Ÿ]™]×0Ñ0×DÑDÀSÈ)ÓT�
ÙØ *§¡�IØ ×'Ò'Ø$-×$7Ñ$7˜	Ø$×0Ñ0Ð0Ø×(Ñ(Ð(Øœ)Ñ#Ø×Ò H§N¢N°x·~±~×7JÒ7JØ&Ÿn™n×1Ñ1�Ø×0Ò0Ø&Ð&Ø ×0Ò0Ø (§¡× 3Ñ 3�IØ  GÒ+Ü)×7Ñ7Ð7Ø" fÒ,Ü)×5Ñ5Ð5Ø"¤g×&QÑ&QÑQØ*Ð*Ø—M‘M×1Ñ1°#Ó6ˆ	Ù˜)×6Ò6¸)×:PÒ:PØÐÜÐùò1 Gs   Ä&Jc                 ó8   — | j                   j                  |«      S rN   )r?  rl  rø   s     rT   rl  zCallNode.type_dependenciesë  s   € ð �}‰}×.Ñ.¨sÓ3Ð3rU   c                  ó   — yr’  rW   rX   s    rT   rS  zCallNode.is_simpleð  s   € ð
 rU   c                 ó„  — | j                   �| j                   S | j                  j                  }|t        u rv| j                  j                  r`| j                  j
                  }|j                  j                  ry|j                  j                  r|j                  t        j                  v ryt        j                  | «      S r’  )Úmay_return_noner?  r­   r   rá   r¾   r¾  r¿  rt   r   rˆ  rñ   rZ  )rY   r4  r¾   s      rT   rZ  zCallNode.may_be_none÷  s�   € Ø×ÑÐ+Ø×'Ñ'Ð'Ø—M‘M×&Ñ&ˆ	Øœ	Ñ! d§m¡m×&;Ò&;Ø—M‘M×'Ñ'ˆEØ�z‰z×+Ò+ØØ—
‘
×*Ò*Ø—J‘J¤'×"MÑ"MÑMØÜ×#Ñ# DÓ)Ð)rU   c                 óx  — t         | _        |€|j                  }|j                  rò|j                  }|t        j
                  u r™|r—|j                  r‹|j                  t        j                  v rot         | _	        d| _
        |j                  dk(  r+t        j                  | _        t        j                  | _	        y t        j                  |j                     | _        y |j                  r.|j                  j                  | _        t         | _	        d| _
        y y |j                  r—|j                   j                  j"                  rv|j                   j                  }t	        j$                  ||j&                  «      }|t         u | _
        |j(                  r|| _        y |j*                  r|j*                  | _        y y y y )NFr…   )r   r­   rá   r¾   r   r   rÈ  rt   rˆ  r.  r’  r   r;  Úbuiltin_typesr  rs  r<  r¿  r†  r=  rs   rŸ   )rY   r?  r4  r¾   rŠ  r‹  s         rT   Úset_py_result_typezCallNode.set_py_result_type  sZ  € ä"ˆŒ	ØÐØ Ÿ™ˆIØ×ÒØ—N‘NˆEØœG×-Ñ-Ñ-Ù˜e×.Ò.°5·:±:Ä×AlÑAlÑ3lä$2�Ô!Ø',�Ô$Ø—:‘: Ò(ä *× 8Ñ 8�D”IÜ(2×(@Ñ(@�DÕ%ä '× 5Ñ 5°e·j±jÑ A�D•IØ×$Ò$ð %×/Ñ/×4Ñ4�”	Ü$2�Ô!Ø',�Õ$ð %ð ×"Ò" x§|¡|×'8Ñ'8×'HÒ'HØ&Ÿl™l×/Ñ/ˆOÜ!×DÑDÀ_ÐV^×VhÑVhÓiˆKØ#.´.Ð#@ˆDÔ Ø×&Ò&Ø'�•	Ø×,Ò,Ø'×7Ñ7�•	ð -ð (IÐ"rU   c           
      óB  — | j                   j                  |«      }|rÚ|j                  rÎ| j                  «       \  }}g }t	        ||j
                  j                  «      D ]K  \  }}|j                  t        |j                  t        |j                  |j                  ¬«      |¬«      «       ŒM |r||j                  z  }t        | j                  |¬«      }|j                  |«      j                  ||«      }|S |�r |j                   �r| j"                  D �cg c]  }|j                  |«      ‘Œ c}| _        |j
                  j%                  d«      }	|	sDt'        | j                   j                  d| j                   j                  z  «       t(        | _        | S t-        | j                   j                  |	j*                  «      | _         |	| j                   _        | j                   j1                  |j3                  «       «       | j5                  |«       || _        | S yyc c}w )z4
        Returns a replacement node or None
        r;  ©Úkeyr½   ©Úkey_value_pairsz<init>z'no constructor found for C++  type '%s'N)r?  r€  r‰  Úexplicit_args_kwdsrÊ  rN  rÀ  r  ÚDictItemNoder†   rÒ  rt   rš  ÚDictNoderX  r  r  r—   rE  r   r3   r­   r…  r¾   rŠ  r´  Úanalyse_c_function_call)
rY   rv   r­   r—   rù  rÃ  r�   Úmemberrˆ   r¯  s
             rT   Úanalyse_as_type_constructorz$CallNode.analyse_as_type_constructor%  s®  € ð �}‰}×,Ñ,¨SÓ1ˆÙ�D×+Ò+Ø×0Ñ0Ó2‰JˆD�$ØˆEÜ" 4¨¯©×)?Ñ)?Ö@‘��VØ—‘œ\¨#¯'©'´{À3Ç7Á7ÐRX×R]ÑR]Ô7^ÐfiÔjÕkð  AáØ˜×-Ñ-Ñ-�ä˜DŸH™H°eÔ<ˆDØ×%Ñ% cÓ*×4Ñ4°T¸3Ó?ˆDØˆKÚ�d×'Ó'Ø<@¿IºIÓG¹I°S˜#×+Ñ+¨CÕ0¸IÑGˆDŒIØŸ*™*×+Ñ+¨HÓ5ˆKÙÜ�d—m‘m×'Ñ'Ð)RÐUY×UbÑUb×UgÑUgÑ)gÔhÜ&�”	Ø�Ü,¨T¯]©]×->Ñ->À×@PÑ@PÓQˆDŒMØ"-ˆD�M‰MÔØ�M‰M×#Ñ# D×$?Ñ$?Ó$AÔBØ×(Ñ(¨Ô-ØˆDŒIØˆKð (ˆTùÚGs   ÄHc                 ób   — | j                   j                  }|j                  r|j                  }|S rN   )r?  r­   r  r  ©rY   r4  s     rT   Úfunction_typezCallNode.function_typeC  s-   € ð —M‘M×&Ñ&ˆ	à×ÒØ!×+Ñ+ˆIàÐrU   c                 ó.   — | j                   j                  S rN   )r­   r  rX   s    rT   r  zCallNode.is_lvalueM  s   € Ø�y‰y×%Ñ%Ð%rU   c                 ó´   — | j                  «       }|j                  r| j                  «        y |j                  st	        |dd«      s| j                  «        y y y )NrÎ   F)r£  rs   r�  r  r
  )rY   rv   r4  s      rT   rŽ  zCallNode.nogil_checkP  sJ   € Ø×&Ñ&Ó(ˆ	Ø× Ò Ø�N‰NÕØ×#Ò#¬G°I¸wÈÔ,NØ�N‰NÕð -OÐ#rU   zCalling gil-requiring functionrN   )r[   r\   r]   r’  r‘   rl  rS  rZ  r•  r   r£  r  rŽ  r§  rW   rU   rT   r„  r„  ¶  s?   „ ð €Oò.ò`4ò
ò*ó8òBò<ò&òð 3�KrU   r„  c                   ó’   ‡ — e Zd Zg d¢ZdZdZdZdZdZdZ	dZ
dZd„ Zd„ Zed„ «       Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zˆ fd„Zd„ Zˆ xZS )rF  )rY   Úcoerced_selfr?  r—   rá  NFc                 óì   — | j                   j                  |«      }| j                  D �cg c]  }|j                  |«      ‘Œ }}	  ||Ž S c c}w # t        $ r}| j	                  |«       Y d }~y d }~ww xY wrN   )r?  r<  r—   rV  r@  )rY   r;  r?  r�   r—   r?  s         rT   r<  z!SimpleCallNode.compile_time_valueq  sq   € Ø—=‘=×3Ñ3°DÓ9ˆØ8<¿	º	ÓB¹	°�×&Ñ& tÕ,¸	ˆÐBð	-Ù˜T�?Ð"ùò Cøô ò 	-Ø×)Ñ)¨!×,Ñ,ûð	-ús   ªA
ÁA Á	A3ÁA.Á.A3c                 ó<  — | j                   j                  �r | j                   j                  j                  rß| j                   j                  }t        j                  |«      st        j                  |«      rž|j                  }| j                   j                  j                  }|r|j                  nt        |j                  «      j                  }t        j                  ||«      r.| j                  D �cg c]  }|j                  ‘Œ }} ||Ž | _        y y y y y c c}w rN   )r?  rs  r<  r¯   rƒ   r%   Ú	isbuiltinÚismethodr[   r­   rt   Ú__self__r   Úis_safe_compile_time_methodr—   )rY   Úmethodrý   Úobject_typeÚobject_type_namer�   r—   s          rT   r2  z(SimpleCallNode.calculate_constant_resulty  sÞ   € Ø�=‰=×%Ó%¨$¯-©-×*;Ñ*;×*FÒ*FØ—]‘]×2Ñ2ˆFÜ× Ñ  Ô(¬G×,<Ñ,<¸VÔ,DØ$Ÿo™o�à"Ÿm™m×/Ñ/×4Ñ4�Ù7B ;×#3Ò#3ÌÈVÏ_É_ÓH]×HfÑHfÐ ä×6Ñ6Ð7GÈÔUØ;?¿9º9ÓE¹9°C˜C×/Ó/¸9�DÐEÙ+1°4¨=�DÕ(ð Vð -Eð +GÐ%ùò Fs   Ã5Dc                 óä   — |j                   }|j                  |j                  «      }|sJ d|›d|j                  ›�«       ‚t	        ||j                  ||j
                  ¬«      } | |||g¬«      }|S )NzGetter not found in scope r>  )rt   r¾   r­   r>  )rN  rÖ  rt   rÂ  r
  r­   )rR   r†   r<  r¾   Úproperty_scopeÚgetter_entryr?  rˆ   s           rT   Úfor_cpropertyzSimpleCallNode.for_cproperty†  si   € ð Ÿ™ˆØ%×1Ñ1°%·*±*Ó=ˆÙÑjÂ>ÐSa×SiÒSiÐjÓjˆ|Ü˜C e§j¡j¸È<×K\ÑK\Ô]ˆÙ�3 °°Ô6ˆØˆrU   c                 ó4  — | j                   j                  «       }|dk(  r’t        | j                  «      dk7  r!t	        | j                  j
                  d«       y | j                  d   j                  |«      }|s$t	        | j                  d   j
                  d«       y t        j                  |«      S |dk(  rbt        | j                  «      dk7  r t	        | j                  j
                  d«       | j                  d   j                  |«      }|j                  S y )Nrì  r,   zonly one type allowed.r   zUnknown typeÚtypeof)r?  r\  r“   r—   r   r†   r€  r   rÁ  rX  r­   )rY   rv   rÖ  r­   Úoperands        rT   r€  zSimpleCallNode.analyse_as_type�  sÕ   € Ø�}‰}×0Ñ0Ó2ˆØ�9ÒÜ�4—9‘9‹~ Ò"Ü�d—i‘i—m‘mÐ%=Õ>à—y‘y ‘|×3Ñ3°CÓ8�ÙÜ˜$Ÿ)™) A™,×*Ñ*¨NÕ;ä%×.Ñ.¨tÓ4Ð4Ø�XÒÜ�4—9‘9‹~ Ò"Ü�d—i‘i—m‘mÐ%=Ô>Ø—i‘i ‘l×0Ñ0°Ó5ˆGØ—<‘<Ðð	 rU   c                 ó   — | j                   d fS rN   ©r—   rX   s    rT   r›  z!SimpleCallNode.explicit_args_kwds¡  s   € Ø�y‰y˜$ˆÐrU   c                 ó¦  — | j                   r| S d| _         | j                  |«      x}�|S d| j                  _        | j                  j	                  |«      | _        | j                  }|j
                  rM|j                  rA|j                  j                  r+|j                  | _	        t        | j                  «      |_        | j                  «       }d| _        t        |«      r˜|j                  rŒt        |«      r�d}t!        | j"                  | j$                  ¬«      | _        | j&                  j	                  |«      | _        | j&                  j$                  D ]  }|t)        |«      z  }Œ t+        |«      | _        | j                  rm|j-                  t/        |«      «       t0        j3                  | t5        |«      | j&                  t7        t9        || j&                  j$                  «      «      ¬«      S |j:                  rwt!        | j"                  | j$                  ¬«      | _        | j&                  j	                  |«      j=                  |«      | _        d | _        | j?                  ||«       d| _         | S | j$                  D �cg c]  }|j	                  |«      ‘Œ c}| _        | jC                  |«       |jD                  dk(  rd| _         | S c c}w )NTr,   Fr¹  )Úfunction_cnamerá  r­   rß   )#Úanalysedr   r?  r|  rX  rs  r¾   Ú
is_cmethodr<  rY   rŸ  r£  Úis_numpy_call_with_exprsrB   rp  rG   rF  r†   r—   rá  rE   re  Úadd_include_filerH   ÚNumPyMethodCallNoderg  rI   rJ   r?   rs   r9  r•  r  rž  rà   )rY   rv   Úas_type_constructorr?  r4  Úhas_pythran_argsr�   s          rT   rX  zSimpleCallNode.analyse_types¤  sG  € Ø�=Š=ØˆKØˆŒØ#'×#CÑ#CÀCÓ#HÐHÐÐUØ&Ð&Ø"#ˆ�‰ÔØŸ™×3Ñ3°CÓ8ˆŒØ—=‘=ˆà× Ò  X§^¢^¸¿¹×8QÒ8Qð !Ÿ™ˆDŒIÜ$ T§Y¡YÓ/ˆHŒLà×&Ñ&Ó(ˆ	Ø(-ˆÔ%Ü˜3Ô H×$?Ò$?Ü/°Ô9Ø#ÐÜ& t§x¡x¸¿	¹	ÔBˆDŒNØ!Ÿ^™^×9Ñ9¸#Ó>ˆDŒNØ—~‘~×*Ô*�Ø Ô$EÀcÓ$JÑJÑ ð +ä,0Ð1AÓ,BˆDÔ)Ø×(Ò(Ø× Ñ Ô!>¸xÓ!HÔIÜ&×0Ñ0ØÜ.¨xÓ8ØŸ.™.Ü Ô!2°8¸T¿^¹^×=PÑ=PÓ!QÓRð	 1ó ð ð ×"Ò"Ü& t§x¡x¸¿	¹	ÔBˆDŒNØ!Ÿ^™^×9Ñ9¸#Ó>×QÑQÐRUÓVˆDŒNØˆDŒIØ×#Ñ# H¨iÔ8ØˆDŒLð ˆð =A¿IºIÓG¹I°S˜#×+Ñ+¨CÕ0¸IÑGˆDŒIØ×(Ñ(¨Ô-Ø×(Ñ(¨CÒ/Ø#�”àˆùò Hs   ÊKc           
      óÊ  — | j                   j                  }|t        u rt        | _        y |j                  r[|j                  rO| j
                  r6| j
                  j                  j                  rt        | j                  d«       | j                  }n3| j
                  r| j
                  g| j                  z   }n| j                  }|j                  rN| j                   j                  j                  j                  d«      }|€™t        j                  | _        d| _        y t        | j                   d«      r| j                   j                   }nO| j                   j"                  r7| j                   j$                  r!| j                   j                  j                   }nd }|rš	 |j'                  ||D �cg c]  }|j                  ‘Œ c}d|D �cg c]  }|j)                  «       ‘Œ c}¬«      }d|_        |j                  s|| j                   _        |j                  | j                   _        | j1                  «       }nTd }| j1                  «       }|j                  s6t        | j                  d|z  «       t        j                  | _        d| _        y t3        |j                  «      }	|	|j4                  z
  }
t3        |«      }|j4                  r|
|k7  rd| _        d| _        |�r©|j:                  �rœ|j                  �r�|j                  �s‚|j                  d	   }|d	   }|j<                  r—| j
                  rX| j
                  j?                  d
jA                  t3        |jB                  «      dk  rdnd«      d|jB                  g¬«      | _        n3|j?                  d|jB                  |j                  jB                  g¬«      }| j
                  r[|jD                  rtG        | j
                  «      }ntI        | j
                  «      }|jK                  |j                  |«      x}| _&        n_|j                  jN                  rI|jK                  |j                  |«      }|j                  jN                  rtQ        |tR        «      rd|_*        ||d	<   d}tW        tY        |	|«      «      D ]É  }|j                  |   }|j                  }||   jK                  ||«      }|j<                  r|j?                  d«      }|j[                  «       r|d	kD  r`d}n]|j                  j\                  rG|j^                  s;|d	k(  r| j
                  �n)|ja                  «       rn|d	kD  rd}|jc                  |«      }|||<   ŒË tW        |	|«      D ]³  }||   }|j                  j\                  r}|j                  td        u rt        jf                  }n|j                  ji                  «       }|€'t        | j                  |dz
     j                  d«       n|jK                  ||«      x||<   }|j[                  «       sŒ¬|d	kD  sŒ²d}Œµ |r¥tW        |dz
  «      D ]”  }|d	k(  r| j
                  �Œ||   }|ja                  «       rŒ+|j                  j                  rŒB|j^                  r|j                  j\                  rŒe|d	kD  s|dk(  sŒp| j
                  €Œ}tk        |j                  dd	«        n || j                  d d  tQ        | j                   tl        «      r/t        jn                  | j                   jp                  «      | _        n|jr                  | _        | j                   jt                  s| j                   jv                  r7| j                   j                   }|r|jx                  s|jz                  rd| _        | j                  j\                  rt|        | _?        d| _        n=|j€                  €|j‚                  rd| _        n| j                  j„                  rd| _        | j8                  rD| j                  j†                  r.t        jˆ                  | j                  jŠ                  «      | _        |jr                  jŒ                  r?d|j�                  | j                   j                  |jr                  j�                  «      _        |j‚                  dk(  r0t“        |«      r%|j•                  t—        j˜                  dd«      «       |jš                  d   | _N        y c c}w c c}w # t        j*                  $ rI}t-        |«      }|rt        | j                  |«       t        j                  | _        d| _        Y d }~y d }~ww xY w)Nz4Cannot call a static method on an instance variable.z
operator()r,  r¾   T)Úfail_if_emptyÚarg_is_lvalue_arrayzCalling non-function type '%s'r,   r   ú)'NoneType' object has no attribute '%{}s'é   ú.30rù  ÚPyExc_AttributeError)r   r`  z@descriptor '%s' requires a '%s' object but received a 'NoneType'©r`  FzGcannot pass None into a C function argument that is declared 'not None'z5Python object cannot be passed as a varargs parameterúTArgument evaluation order in C function call is undefined and may not be as expectedrß   r3  rÉ  Úoverflowcheck)Or?  r­   r3   rq  Úis_static_methodrY   r¾  r   r†   r—   r  rN  rE  r   r  rL  r¾   rt  rV  r‡  r  ÚNoMatchFoundr{   r  r£  r“   Úoptional_arg_countÚhas_optional_argsr  r½  Únot_nonera  r  rt   Úaccept_builtin_subtypesÚCMethodSelfCloneNoderŸ  r  r§  r¿  r‚   r  Úexact_builtin_typer•  Úminr›  rs   rÎ   rr  rQ  r   r1   Údefault_coerced_ctyper   r©  rÁ  r®  ré  rá   rs  r;  Úutility_code_definitionr   r.  rÀ   rà   r  r  ÚCFakeReferenceTyper   rI  Údeclare_tuple_typerJ  rã   rÈ   r   rÉ   rn   rÌ  )rY   rv   r4  r—   Úoverloaded_entryr�   r¾   Úexcr7  Ú	max_nargsÚexpected_nargsÚactual_nargsÚ
formal_argÚsome_args_in_tempsr¬  Úformal_typeÚ	arg_ctyper�  s                     rT   rž  z&SimpleCallNode.analyse_c_function_callÔ  s”  € Ø—M‘M×&Ñ&ˆ	Øœ
Ñ"Ü"ˆDŒIØà×!Ò! i×&@Ò&@Ø�yŠy˜TŸY™YŸ^™^×=Ò=ô �d—h‘hÐ VÔWØ—9‘9‰DØ�YŠYØ—I‘I�; §¡Ñ*‰Dà—9‘9ˆDà×!Ò!Ø#Ÿ}™}×1Ñ1×7Ñ7×>Ñ>¸|ÓLÐØÐ'Ü&×1Ñ1�”	Ø#,�Ô ØÜ�T—]‘] GÔ,Ø#Ÿ}™}×2Ñ2ÑØ�]‰]×'Ò'¨D¯M©M×,HÒ,HØ#Ÿ}™}×1Ñ1×7Ñ7Ñà#ÐáðØ(×<Ñ<ØÙ)-Ó.© #�S—X“X¨Ñ.Ø"&ÙDHÓ(IÁD¸S¨¯©­ÀDÑ(Ið	 =ó �ð ˆEŒJØ×)Ò)Ø&+�—‘Ô#Ø!&§¡ˆD�M‰MÔØ×*Ñ*Ó,‰IàˆEØ×*Ñ*Ó,ˆIØ×)Ò)Ü�d—h‘hÐ @À9Ñ LÔMÜ&×1Ñ1�”	Ø#,�Ô Øô ˜	Ÿ™Ó'ˆ	Ø" Y×%AÑ%AÑAˆÜ˜4“yˆØ×'Ò'¨N¸lÒ,JØ%&ˆDÔ"ØˆDŒLò �U×%Ó%¨)¯.«.À×A[ÓA[Ø"Ÿ™¨Ñ*ˆJØ�q‘'ˆCØ×"Ò"Ø—9’9Ø $§	¡	× ;Ñ ;ØC×JÑJÔTWÐX]×XbÑXbÓTcÐgiÒTiÉ5ÐoqÓrØ4Ø%*§Z¡Z Lð !<ó !2�D•Ið ×/Ñ/ØZØ%*§Z¡Z°·±×1EÑ1EÐ$Fð 0ó H�Cð �yŠyØ×5Ò5Ü.¨t¯y©yÓ9‘Cä# D§I¡IÓ.�CØ*-¯-©-¸
¿¹ÈÓ*MÐM��dÕ'Ø—‘×0Ò0à—m‘m J§O¡O°SÓ9�Ø—8‘8×+Ò+´
¸3ÄÔ0OØ-2�CÔ*ØˆD�‰Gð #ÐÜ”s˜9 lÓ3Ö4ˆAØ"Ÿ™¨Ñ*ˆJØ$Ÿ/™/ˆKØ�q‘'×#Ñ# K°Ó5ˆCØ×"Ò"à×+Ñ+Ø]ó_�à×!Ñ!Ô#Ø�q’5à)-Ñ&Ø—‘×%Ò%¨c¯iªiØ˜’6˜dŸi™iÐ3àØ×-Ñ-Ô/àð ˜1’uØ-1Ð*Ø×,Ñ,¨SÓ1�CØˆD�ŠGð7 5ô< �y ,Ö/ˆAØ�q‘'ˆCØ�x‰x×#Ò#Ø—8‘8œ|Ñ+ä *× :Ñ :‘Ià #§¡× >Ñ >Ó @�IØÐ$Ü˜$Ÿ)™) A a¡C™.×,Ñ,ØQõSð %(§M¡M°)¸SÓ$AÐA�D˜‘G˜cØ×!Ñ!Õ#¨¨A«Ø%)Ñ"ð 0ñ  ô ˜<¨™>Ö*�Ø˜’6˜dŸi™iÐ3ØØ˜1‘g�Ø×+Ñ+Ô-àØ—X‘X×*Ò*àØ—Y’Y 3§8¡8×#7Ò#7ð ð ˜1’u  Q£¨4¯9©9Ñ+@Ü §¡Ð)ð  BCô  DÙð) +ð, ˆ�	‰	‘!ˆô �d—m‘m¤[Ô1Ü"×+Ñ+¨D¯M©M×,DÑ,DÓEˆD�Ià!×-Ñ-ˆDŒIà�=‰=× Ò  D§M¡M×$>Ò$>ØŸ™×,Ñ,ˆJÙ˜z×6Ò6¸*×:\Ò:\Ø �”à�9‰9× Ò Ü .ˆDÔØˆD�LØ×&Ñ&Ð2°i×6OÒ6OØˆD�LØ�Y‰Y×)Ò)ØˆDŒLð �<Š<˜DŸI™I×2Ò2Ü"×5Ñ5°d·i±i×6MÑ6MÓNˆDŒIØ× Ñ ×*Ò*à_cˆC×"Ñ" 4§=¡=×#4Ñ#4°i×6KÑ6K×6VÑ6VÓWÔ\ð ×$Ñ$¨Ò+Ü-¨iÔ8Ø×$Ñ$¤[×%<Ñ%<Ð=UÐWgÓ%hÔià Ÿ^™^¨OÑ<ˆÕùòW /ùâ(Iøä×*Ñ*ò Ü˜c›(�ÙÜ˜$Ÿ(™( GÔ,Ü&×1Ñ1�”	Ø#,�Ô Üûðús6   Æd Æ.c<
Çd ÇdÇd ã<
d äe"ä?eåe"c                 ó"   — | j                  «       S rN   )Úc_call_coderX   s    rT   r  z$SimpleCallNode.calculate_result_code¤  s   € Ø×ÑÓ!Ð!rU   c                 óª  — | j                  «       }| j                  t        j                  u s|j                  sy|j
                  }g }t        t        || j
                  «      «      }t        |j
                  «      }||j                  z
  }t        | j
                  «      }|d | D ]1  \  }}	|	j                  |j                  «      }
|j                  |
«       Œ3 |j                  rO|j                  t        t        | j                  xs  | j                   j"                  j$                  «      «      «       |j                  r(||k(  rd}nd| j&                  z  }|j                  |«       | j
                  t        |«      d  D ]!  }	|j                  |	j)                  «       «       Œ# | j                   j+                  «       ›ddj-                  |«      ›d�}|S )Nr,  rË  r_  rR  r1  r¢  )r£  r­   r   r3   rq  r—   r  rÊ  r“   rÏ  r#  r  r  r{   r„   Úwrapper_callr?  r¾   Úis_unbound_cmethodÚopt_arg_structr  r  r£  )rY   r4  Úformal_argsÚarg_list_coder—   rÜ  rÝ  rÞ  rß  Ú
actual_argÚarg_codeÚoptional_argsr  s                rT   rä  zSimpleCallNode.c_call_code§  s~  € Ø×&Ñ&Ó(ˆ	Ø�9‰9œ
×-Ñ-Ñ-°Y×5KÒ5KØØ—n‘nˆØˆÜ”C˜ T§Y¡YÓ/Ó0ˆÜ˜	Ÿ™Ó'ˆ	Ø" Y×%AÑ%AÑAˆÜ˜4Ÿ9™9“~ˆØ&*¨?¨NÓ&;Ñ"ˆJ˜
Ø!×4Ñ4°Z·_±_ÓEˆHØ× Ñ  Õ*ð '<ð ×#Ò#Ø× Ñ ¤¤S¨×):Ñ):Ò)d¸d¿m¹m×>QÑ>Q×>dÑ>dÓ%eÓ!fÔgà×'Ò'Ø Ò-Ø &‘à %¨×(;Ñ(;Ñ ;�Ø× Ñ  Ô/àŸ)™)¤C¨Ó$4Ð$5Ó6ˆJØ× Ñ  ×!;Ñ!;Ó!=Õ>ð 7ð "Ÿ]™]×1Ñ1Õ3°T·Y±Y¸}Õ5MÐNˆØˆrU   c                 ó\   — | j                  «       }|j                  �|j                  dk(  ryy)Nrß   FT)r£  rÀ   rà   r¢  s     rT   r(  z#SimpleCallNode.is_c_result_requiredÅ  s/   € Ø×&Ñ&Ó(ˆ	Ø×$Ñ$Ð,°	×0IÑ0IÈSÒ0PØØrU   c                 óx  •— | j                   }|j                  s|j                  r%|j                  j	                  |j
                  «       d}| j                  j                  xr | j                  j                  }| j                  r·|rµ|j                  «       |v r£|j                  j                  t        j                  dd«      «       |j                  d| j                  d   j                  «       ›d| j                  d   j                  j!                  «       ›d|j#                  | j$                  «      ›d�«       |j                  j&                  rNt)        | j*                  j                  «      d	kD  s,| j*                  j                  r&| j*                  j,                  rt.        ‰| �a  |«       y | j*                  j                  r| j*                  j                  d   nd }| j2                  | j4                  ||f}|D ]  }|€Œ|j1                  |«       Œ |j7                  | j$                  «       | j8                  sJ ‚| j;                  |«       |€�|j                  j                  t        j                  d
d«      «       |j                  | j                  «       ›d|j=                  «       ›d|j?                  | j                  «       | j$                  «      ›�«       n�|j                  j                  t        j                  dd«      «       |j                  | j                  «       ›d|j=                  «       ›d|j=                  «       ›d|j?                  | j                  «       | j$                  «      ›�«       | jA                  |«       |D ]'  }|€Œ|jC                  |«       |jE                  |«       Œ) y )N)ÚabsÚlabsÚ__Pyx_abs_longlongÚCommonú
Overflow.crv  r   z == __PYX_MIN(z¬))) {                PyErr_SetString(PyExc_OverflowError,                                "Trying to take the absolute value of the most negative integer is not defined."); z; }r,   ÚPyObjectCallNoArgr6  z = __Pyx_PyObject_CallNoArg(r¥  ÚPyObjectCallOneArgz = __Pyx_PyObject_CallOneArg(r1  )#r?  rá   rs  rÇ   Úuse_entry_utility_coder¾   r­   r  r,  rÌ  r  rÈ   r   rÉ   rÊ   r—   r´  rÙ   r†   rs   r“   rá  r¯   rP   rÃ  rY   r§  r½  r  r©  rÛ   rÖ   rì  rË  rØ  )	rY   rÌ   r?  Úabs_function_cnamesÚis_signed_intr�   ró   ÚsubexprrS   s	           €rT   rÃ  z'SimpleCallNode.generate_evaluation_codeË  sØ  ø€ Ø—=‘=ˆØ×Ò˜x×4Ò4Ø×Ñ×3Ñ3°H·N±NÔCàCÐØŸ	™	×(Ñ(Ò=¨T¯Y©Y×-=Ñ-=ˆØ×Ò¡-°H·O±OÓ4EÐI\Ñ4\Ø×Ñ×-Ñ-¬k×.EÑ.EÀhÐP\Ó.]Ô^Ø�JŠJð !ŸI™I a™L×/Ñ/Õ1Ø ŸI™I a™L×-Ñ-×DÑDÕFØ ŸO™O¨D¯H©HÕ5ð7ô 8ð �}‰}×(Ò(¬C°·±×0CÑ0CÓ,DÀqÒ,HØ—‘×#Ò#¨¯©×(AÒ(AÜ‰GÑ,¨TÔ2Øð )-¯©×(;Ò(;ˆd�n‰n×!Ñ! !Ò$ÀˆØ—I‘I˜t×0Ñ0°(¸CÐ@ˆÛˆGØÑ"Ø×0Ñ0°Õ6ð  ð 	�‰�d—h‘hÔØ�|Š|Ðˆ|Ø×!Ñ! $Ô'àˆ;Ø×Ñ×-Ñ-¬k×.EÑ.EØ#Ð%7ó/9ô :à�J‰Jà—K‘K•MØ×&Ñ&Õ(Ø×+Ñ+¨D¯K©K«M¸4¿8¹8ÔDðFõGð ×Ñ×-Ñ-¬k×.EÑ.EØ$Ð&8ó/:ô ;à�J‰Jà—K‘K•MØ×&Ñ&Õ(Ø—M‘M•OØ×+Ñ+¨D¯K©K«M¸4¿8¹8ÔDð	FôGð 	×Ñ˜TÔ"ãˆGØÑ"Ø×.Ñ.¨tÔ4Ø×"Ñ" 4Õ(ñ  rU   c                 ó„  — | j                  «       }|j                  rÅ| j                  j                  «       }|j                  j                  t        j                  dd«      «       |j                  | j                  «       ›d| j                  j                  «       ›d|›d|j                  | j                  «       | j                  «      ›�«       | j                  |«       y |j                  �rÒ|j                  j                    }| j"                  �rDt%        | j&                  «      }t%        |j&                  «      |j(                  z
  }|j                  j+                  |j,                  j.                  d¬«      | _        |j                  | j0                  ›dt2        j4                  d	z   ›d
t%        | j&                  «      |z
  ›d�«       t7        t9        |j&                  | j&                  «      «      }||| D ][  \  }}	|j                  | j0                  ›d|j;                  |j<                  «      ›d
|	j?                  |j@                  «      ›d�«       Œ] g }
| j@                  j                  r0| jB                  r$|
jE                  d| j                  «       z  «       �n�| j@                  jF                  rH| jB                  sJ ‚|
jE                  | j@                  jI                  | j                  «       «      «       �n1|jJ                  dk7  �r!|jL                  }|jJ                  }|�/|
jE                  |jO                  | j                  «       |«      «       |rÖ|rÃ|
s€tQ        | j                  dd «      }tS        jT                  | j                  |j                  jV                  |r|j<                  nd | j@                  jX                  d|xr |jZ                  ¬«       |j                  j                  t        j                  dd«      «       |
jE                  d«       n|
jE                  d«       | jB                  s|
�rQ| j]                  «       }| j                  «       rQd| j                  «       z  }| jB                  r4| j@                  j                  rt_        t`        | j@                  |«      }nd}|jJ                  dk(  rPtc        || j                  |›|›d�| j@                  j                  r| j                  «       nd |jL                  |«       nH|
r,|je                  djg                  |
«      | j                  «      }nd}|j                  |›|›d|›�«       | j@                  j                  r!| j                  «       r| j                  |«       | j"                  r&|j                  ji                  | j0                  «       y y y )Nr^  r6  r_  r1  z	, NULL); Tr¡  rü   rd  rS  rT  r}  rß   r¾   )Úfunction_nameÚvoid_returnÚis_callÚis_from_pxdrÃ   rÄ   rÅ   rÆ   z%s = rù  z && r¡  )5r£  rs   rá  rÛ   rÇ   rÈ   r   rÉ   rÊ   r  r?  rÖ   r†   rì  rq  r¦  Ú	gil_ownedrÐ  r“   r—   rÏ  r§  Úop_arg_structr  rè  r   Úpyrex_prefixr  rÊ  Úopt_arg_cnamert   r  r­   r  r  r  Úerror_conditionrà   rÀ   Úexception_test_coder
  r   Úwrite_noexcept_performance_hintrN  r¤  Údefined_in_pxdrä  r2   r   rÝ   rË   r£  r¯  )rY   rÌ   r4  rì  rÎ   rÞ  rÝ  r—   rß  rë  Ú
exc_checksÚexc_valÚ	exc_checkÚperf_hint_entryr”   rÚ  Ú
goto_errors                    rT   r¾  z#SimpleCallNode.generate_result_code  sj  € Ø×&Ñ&Ó(ˆ	Ø× Ò Ø—~‘~×/Ñ/Ó1ˆHØ×Ñ×-Ñ-¬k×.EÑ.EØÐ 2ó/4ô 5à�J‰Jà—K‘K•MØ—M‘M×+Ñ+Õ-ÚØ×+Ñ+¨D¯K©K«M¸4¿8¹8ÔDð	FôGð × Ñ  Õ&Ø×#Ó#ØŸ™×0Ñ0Ð0ˆEØ×%Ó%Ü" 4§9¡9›~�Ü!$ Y§^¡^Ó!4°y×7SÑ7SÑ!S�Ø&*§n¡n×&BÑ&BØ×+Ñ+×5Ñ5À$ð 'Có 'H�Ô#à—
‘
Ø×+Ó+Ü×+Ñ+¨cÓ1Ü˜DŸI™I›¨Ó7ð9ô :ô œC 	§¡°·	±	Ó:Ó;�Ø.2°>À,Ó.OÑ*�J 
Ø—J‘JØ ×/Ó/Ø%×3Ñ3°J·O±OÕDØ&×0Ñ0°·±ÕAð Cõ Dð /Pð
 ˆJØ�y‰y×$Ò$¨¯ªØ×!Ñ! %¨$¯+©+«-Ñ"7Ö8Ø—‘×-Ò-Ø—|’|Ð#�|Ø×!Ñ! $§)¡)×";Ñ";¸D¿K¹K»MÓ"JÖKØ×*Ñ*¨cÓ1Ø#×3Ñ3�Ø%×5Ñ5�	ØÐ&Ø×%Ñ% g×&AÑ&AÀ$Ç+Á+Ã-ÐQUÓ&VÔWÙÙÙ)Ü.5°d·m±mÀWÈdÓ.S˜OÜ&×FÑFØ $§¡¨$¯.©.×*>Ñ*>ÙFU¨o×.BÒ.BÐ[_Ø,0¯I©I×,=Ñ,=ÀtØ-<Ò-_À×A_ÑA_õ	bð
 ×(Ñ(×9Ñ9Ü'×3Ñ3Ð4HÈ.ÓYô[à"×)Ñ)Ð*FÕGà"×)Ñ)Ð*<Ô=Ø�|Š|šzØ×&Ñ&Ó(�Ø—;‘;”=Ø! D§K¡K£MÑ1�CØ—|’|¨¯	©	×(=Ò(=ô '¤~°t·y±yÀ#ÓF™à�CØ×,Ñ,°Ò3Ü+¨D°$·(±(ÁsÊCÐ<PØ=A¿Y¹Y×=RÒ=R¨D¯K©K¬MÐX\Ø,5×,EÑ,EÀuõNñ "Ø%)×%7Ñ%7¸¿¹ÀJÓ8OÐQU×QYÑQYÓ%Z™
à%'˜
Ø—J‘J©S²#±zÐBÔCØ—9‘9×(Ò(¨T¯[©[¬]Ø×(Ñ(¨Ô.Ø×%Ò%Ø—‘×+Ñ+¨D×,?Ñ,?Õ@ð &ðC $rU   )r[   r\   r]   ró   rY   r§  rá  ræ  rÐ  rÎ   r¼  rÌ  r<  r2  r}  r´  r€  r›  rX  rž  r  rä  r(  rÃ  r¾  r^   r_   s   @rT   rF  rF  Z  s…   ø„ ò I€Hà€DØ€LØ€IØ€LØÐØ€EØ€HØ€Mò-ò9ð ñó ðò ò"ò.ò`N=ò`"òò<ô7)örOArU   rF  c                   ó    — e Zd ZdgZdZdZd„ Zy)rÀ  rá  Tc                 ó  — |j                  | j                  «       | j                  |«       | j                  j                  �J ‚| j                  j
                  }|D ]  }|j                  |«       Œ |j                  d«       |j                  d| j                  «       z  «       |j                  d| j                  «       ›d| j                  «       ›d| j                  ›ddj                  d„ |D «       «      ›d	�	«       y )
Nz.// function evaluation code for numpy functionrÀ  rU  rV  rW  z{}(r1  c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrN   )r&  )rf   r¶  s     rT   ri   z?NumPyMethodCallNode.generate_evaluation_code.<locals>.<genexpr>o  s   è ø€ Ð7±$¨Q�a×&Ñ&×(±$ùrŸ  ú)};)r½  r†   r©  rá  r°   r—   rÃ  rÊ   r  r»  r£  )rY   rÌ   r—   r�   s       rT   rÃ  z,NumPyMethodCallNode.generate_evaluation_code`  sÂ   € Ø�‰�d—h‘hÔØ×!Ñ! $Ô'à�~‰~×)Ñ)Ð1Ð1Ð1Ø�~‰~×"Ñ"ˆÛˆCØ×(Ñ(¨Õ.ð ð 	�
‰
ÐCÔDØ�
‰
Ð/°$·+±+³-Ñ?Ô@Ø�
Š
Ø�K‰K�MØ�K‰K�MØ×ÓØ�I‰IÑ7±$Ó7Õ7ð	9õ 	:rU   N)r[   r\   r]   ró   r  r’  rÃ  rW   rU   rT   rÀ  rÀ  V  s   „ ð ˆ}€HØ€GØ€Oó:rU   rÀ  c                   óœ   ‡ — e Zd Zg d¢ZdZdZdZdZdZˆ fd„Z	d„ Z
ed„ «       Zedd„«       Zed	„ «       Zd
efd„Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚPyMethodCallNode)r?  rá  ÚkwdictÚkwargs_key_value_pairsTFNc                 ó  •— t        ‰| �  |fi |¤Ž | j                  «       r"d| _        | j                  j
                  | _        | j                  r:| j                  j                  r#| j                  j                  | _
        d | _        y y y r·  )rP   r‚  Úcan_avoid_attribute_lookupÚuse_method_vectorcallr?  r<  Úfunction_objr  rr  rš  r  )rY   r†   ÚkwrS   s      €rT   r‚  zPyMethodCallNode.__init__„  sn   ø€ Ü‰Ñ˜Ñ# Ò#Ø×*Ñ*Ô,Ø)-ˆDÔ&Ø $§¡× 1Ñ 1ˆDÔØ�;Š;˜4Ÿ;™;×6Ò6Ø*.¯+©+×*EÑ*EˆDÔ'ØˆD�Kð 7ˆ;rU   c                 óä   — | j                   rt        | j                   t        «      sy| j                  }|j                  sy|j
                  sy|j                  ryt        j                  |«      syyrY  )	r  r‚   r�  r?  rs  Ú
is_py_attrÚis_special_lookupr  Úattribute_is_likely_method)rY   r?  s     rT   r  z+PyMethodCallNode.can_avoid_attribute_lookup�  s^   € ð �;Š;œz¨$¯+©+´xÔ@ØØ—=‘=ˆØ×$Ò$Øà×"Ò"ØØ×%Ò%ØÜ×:Ñ:¸8ÔDð ØrU   c                 ób   — | j                   }|j                  r|j                  j                  ryyrY  )r<  rá   r¾   r  )rÖ  r<  s     rT   r  z+PyMethodCallNode.attribute_is_likely_method¡  s$   € à�h‰hˆØ�;Š;˜3Ÿ9™9×0Ò0ØØrU   c                 óÂ   — t        | t        «      sy| j                  ry| j                  rt	        | j
                  «      dkD  ryt	        | j
                  «      s|xs | S y)z~
        Test whether the positional args given are compatible with
        being translated into a PyMethodCallNode.
        Fr,   T)r‚   rF  r°   r¯   r“   r—   )rð  Ú
has_kwargsÚhas_explicit_kwargss      rT   Úcan_be_used_for_posargsz(PyMethodCallNode.can_be_used_for_posargs¨  s[   € ô ˜/¬9Ô5ØØ×&Ò&ØØ×%Ò%¬#¨o×.BÑ.BÓ*CÀaÒ*GØÜ�?×'Ñ'Ô(ð 'Ò8¨j¨.Ð8ØrU   c                 ó^  ‡— d}| j                   r0| j                  r"| j                  j                  j                  rd}|S | j                  ra| j                  }|j                  j                  rd}|S |j
                  r/t        t        t        fŠt        ˆfd„|j
                  D «       «      }|S )zo
        Test whether the function passed is suitable to be translated
        into a PyMethodCallNode
        TFc              3   óh   •K  — | ])  }|j                   xr t        |j                   ‰«       –— Œ+ y ­wrN   )r”   r‚   )rf   r  Únon_method_nodess     €rT   ri   z<PyMethodCallNode.can_be_used_for_function.<locals>.<genexpr>Ì  s4   øè ø€ ð &<á&:˜
ð —N‘NÒW¬:°j·n±nÐFVÓ+WÐ'WÓWÙ&:ùs   ƒ/2)
rs  r¾   r­   rq  rá   Úcf_assignmentsÚPyCFunctionNodeÚ	ClassNodeÚPy3ClassNodero   )r?  Úmay_be_a_methodr¾   r%  s      @rT   Úcan_be_used_for_functionz)PyMethodCallNode.can_be_used_for_functionº  s¤   ø€ ð ˆØ× Ò Ø�~Š~ (§.¡.×"5Ñ"5×"BÒ"Bà"'�ð Ðð ×ÒØ—N‘NˆEØ�z‰z×&Ò&Ø"'�ð Ðð ×%Ò%ä$3´YÄÐ#MÐ Ü"%ó &<à&+×&:Ò&:ó&<ó #<�ð ÐrU   rF  c                 ó|  — | j                   r…| j                  j                  |«       |j                  |› d| j                  j	                  «       › d�«       |j                  |t        «       |j                  | j                  j                  «      S |j                  |› d�«       | j                  j                  |«       | j                  j                  «       s&| j                  s4| j                  j                  «       r| j                  j                  «       S |j                  j                  t        d¬«      }| j                  j!                  |«       |j                  |›d| j                  j	                  «       ›d�«       | j                  j#                  |«       | j                  j%                  |«       |S )NrS  rT  ú = NULL;Tr¡  r¡  )r  r  rÃ  rÊ   rÛ   r²  r   rg  r?  r=  r›  Úunpackrr  r  r¦  r§  r´  rË  rØ  )rY   rÌ   Úself_argr?  s       rT   Úgenerate_evaluate_functionz+PyMethodCallNode.generate_evaluate_functionÑ  sD  € à×%Ò%Ø×Ñ×6Ñ6°tÔ<Ø�J‰J˜(˜ 3 t×'8Ñ'8×'BÑ'BÓ'DÐ&EÀQÐGÔHØ�O‰O˜H¤nÔ5Ø×+Ñ+¨D¯M©M×,CÑ,CÓDÐDà�
‰
�h�Z˜xÐ(Ô)Ø�‰×.Ñ.¨tÔ4ð �=‰=×'Ñ'Ô)°$·+²+À$Ç-Á-×BdÑBdÔBfØ—=‘=×'Ñ'Ó)Ð)ð —>‘>×/Ñ/´È4Ð/ÓPˆØ�‰×*Ñ*¨4Ô0Ø�
‰
¢(¨D¯M©M×,CÑ,CÕ,EÐFÔGØ�‰×,Ñ,¨TÔ2Ø�‰× Ñ  Ô&ØˆrU   c                 óÚ  — | j                   r7| j                  j                  |«       | j                  j                  |«       y | j                  j                  «       s&| j                  sQ| j                  j                  «       r7| j                  j                  |«       | j                  j                  |«       y |j                  |t        «       |j                  j                  |«       y rN   )r  r  rË  rØ  r?  r›  r.  rr  rÊ  r   r¦  r¯  ©rY   rÌ   r?  s      rT   Úgenerate_dispose_functionz*PyMethodCallNode.generate_dispose_functionè  sž   € Ø×%Ò%Ø×Ñ×4Ñ4°TÔ:Ø×Ñ×(Ñ(¨Õ.Ø�]‰]×)Ñ)Ô+°D·K²KÀDÇMÁM×DfÑDfÔDhØ�M‰M×0Ñ0°Ô6Ø�M‰M×$Ñ$ TÕ*à×!Ñ! (¬NÔ;Ø�N‰N×'Ñ'¨Õ1rU   c                 óÒ  — | j                   s| j                  sy | j                  j                  r | j	                  | j                  «      rdnd}nµ| j                  j
                  r�| j                  j                  r‡| j                  j                  D ]k  }|j                  }|sŒ|j                  sŒ|j                  j                  sŒ6|j                  j                  j                  sŒW| j	                  |«      sŒid} n d}nd}|j                  d«       |j                  d|›d|›d�«       |j                  |› d|› d�«       |j                  d	|› d�«       |j                  d
|› d�«       |j                  |t        «       |j                  dt        «       |j                  |t        d«       |j                  |› d�«       |j                  d«       |j                  d«       y )NÚlikelyÚunlikelyz#if CYTHON_UNPACK_METHODSr  z(PyMethod_Check(rb  z = PyMethod_GET_SELF(r2  zassert(z2PyObject* __pyx__function = PyMethod_GET_FUNCTION(Ú__pyx__functionú = 0;rÕ   rð  )r  r.  r?  rs  r  rá   r’   r”   r<  r­   rs   rÊ   r²  r   rß  )rY   rÌ   r/  Úspace_for_selfarg_varÚ
method_objÚlikely_methodr  r½   s           rT   Ú&generate_runtime_method_unpacking_codez7PyMethodCallNode.generate_runtime_method_unpacking_codeó  sy  € Ø×%Ò%¨T¯[ª[Øà�=‰=×%Ò%Ø(,×(GÑ(GÈÏÉÔ(V™HÐ\f‰MØ�]‰]×"Ò" t§}¡}×'=Ò'=à"Ÿm™m×4Ô4�
Ø"Ÿ™�Ú˜U×/Ó/°E·I±I·N³NÀuÇyÁyÇ~Á~×GaÓGaØ×6Ñ6°uÕ=Ø(0˜Ùð 5ð !+‘à&ˆMð 	�
‰
Ð.Ô/Ø�
Š
²mÂZÐPÔQØ�
‰
�h�ZÐ4°Z°LÀÐCÔDà�
‰
�W˜X˜J bÐ)Ô*Ø�
‰
ÐGÈ
À|ÐSUÐVÔWØ�‰˜¤.Ô1Ø�‰Ð)¬>Ô:à×Ñ˜J¬Ð8IÔJØ�
‰
Ð+Ð,¨EÐ2Ô3Ø�
‰
�3ŒØ�
‰
�8ÕrU   c                 óV  — |j                  |› dt        |«      › d|j                  || j                  «      › �«       |j	                  |t
        «       t        |«      D ]É  \  }}|j                  j                  t        j                  u xr |j                  j                  «        }|j                  | j                  d|rdnd› d|j                  j                  «       › d|j                  j                  «       › d|› dt        j                   › dt        |«      d	z   › d|d
›d�«       ŒË y )Nz# = __Pyx_MakeVectorcallBuilderKwds(r¥  Ú__Pyx_VectorcallBuilder_AddArgrù  Ú_CheckrR  r1  rß   r,   r·  r¢  )rÊ   r“   rÖ   r†   ré  r   r¢  r˜  r­   r   r   rZ  r‹  rÛ   r½   r   Úcallargs_cname)rY   rÌ   r—   r  Úkwnames_temprd  ÚkeyvalueÚ
key_is_strs           rT   Úgenerate_keyvalue_argsz'PyMethodCallNode.generate_keyvalue_args  s  € Ø�
‰
ØˆnÐ?ÄÐDZÓ@[Ð?\Ð\_Ø×&Ñ& |°T·X±XÓ>Ð?ðAô	
ð 	�‰˜¤nÔ5ä$Ð%;Ö<‰KˆAˆxØ!Ÿ™×*Ñ*¬g×.BÑ.BÐBÒeÈ8Ï<É<×KcÑKcÓKeÐGeˆJØ×!Ñ!Ø—‘Ø0±z±ÀxÐ0PÐPQØ—<‘<×)Ñ)Ó+Ð,¨BØ—>‘>×+Ñ+Ó-Ð.¨bØ�. Ü×(Ñ(Ð)¨¬3¨t«9°q©=¨/¸Ø�Q�%Øðõ	ñ =rU   c                 óô   — | j                   r| j                  rd}d}n+d}d}n&| j                  rd}d}n| j                  rd}d}nd}d	}|j                  j	                  t        j                  |d
«      «       |S )NÚ!PyObjectVectorCallMethodKwBuilderÚ-__Pyx_Object_VectorcallMethod_CallFromBuilderÚPyObjectFastCallMethodÚ__Pyx_PyObject_FastCallMethodÚPyObjectVectorCallKwBuilderÚ'__Pyx_Object_Vectorcall_CallFromBuilderÚPyObjectFastCallÚ__Pyx_PyObject_FastCallDictÚ__Pyx_PyObject_FastCallr6  )r  r  r  rÇ   rÈ   r   rÉ   )rY   rÌ   rt   rT  s       rT   Úselect_utility_codez$PyMethodCallNode.select_utility_code+  s€   € à×%Ò%Ø×*Ò*Ø:�ØG‘à/�Ø7‘Ø×(Ò(Ø0ˆDØ=‰EØ�[Š[Ø%ˆDØ1‰Eà%ˆDØ-ˆEà×Ñ×)Ñ)Ü×#Ñ# DÐ*<Ó=ô	?àˆrU   c                 óÐ  — |j                  | j                  «       | j                  |«       | j                  }| j                  }|j
                  j                  t        d¬«      }| j                  ||«      }| j                  j                  }| j                  j                  �J ‚|D ]  }|j                  |«       Œ |r|D ]  }|j                  |«       Œ n|r|j                  |«       |j
                  j                  t        j                  d¬«      }	|j                  |	› d| j                   rdnd› d�«       | j#                  |||	|¬«       | j%                  |«      }
|j                  d	«       |rd
j'                  d„ |D «       «      nd}|rdt)        |«      › d�nd}|j                  dt*        j,                  › d|rt)        |«      dz   ndd›|› d|› d
|› d�
«       d}|r6|j
                  j                  t        d¬«      }| j/                  ||||«       n|r|j1                  «       }|j                  | j1                  «       › d|
› d|› d
t*        j,                  › d|	› dt)        |«      dz   d›d|	› d| j                   rdn|	› d|rd
nd› |› d�«       |j3                  |t        «       ||	fD ]  }|j
                  j5                  |«       Œ |D ]$  }|j7                  |«       |j9                  |«       Œ& |r[|D ]$  }|j7                  |«       |j9                  |«       Œ& |j;                  |t        «       |j
                  j5                  |«       n$|r"|j7                  |«       |j9                  |«       | j=                  ||«       |j                  |j?                  | j1                  «       | j                  «      «       | jA                  |«       |j                  d«       y )NTr¡  FrS  rà  rß  rT  )r/  r9  r:  rœ  r1  c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrN   ©rÛ   rŽ   s     rT   ri   z<PyMethodCallNode.generate_evaluation_code.<locals>.<genexpr>j  s   è ø€ Ð>¹°#˜cŸm™mŸo¹ùrŸ  rË  z + ((CYTHON_VECTORCALL) ? z : 0)rù  ú
PyObject *r|  r,   r7   r·  ú] = {rX  rQ  rß   z, (r  z) | (z&*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)r2  rÕ   )!r½  r†   r©  r  r  r¦  r§  r   r0  rá  r—   r°   rÃ  r   r°  rÊ   r  r<  rO  r£  r“   r   r@  rD  r  rx  r¯  rË  rØ  rÊ  r3  rÖ   rì  )rY   rÌ   r  r  r/  r?  r—   r�   rB  Úspace_for_selfargÚfunction_callerÚ	args_listÚextra_keyword_argsÚkeyword_variableÚtmpÚkw_nodes                   rT   rÃ  z)PyMethodCallNode.generate_evaluation_codeB  sÖ  € Ø�‰�d—h‘hÔØ×!Ñ! $Ô'à!%×!<Ñ!<ÐØ—‘ˆà—>‘>×/Ñ/´È4Ð/ÓPˆØ×2Ñ2°4¸ÓBˆà�~‰~×"Ñ"ˆØ�~‰~×)Ñ)Ð1Ð1Ð1ÛˆCØ×(Ñ(¨Õ.ð ñ "Û2�Ø×1Ñ1°$Õ7ñ 3áØ×+Ñ+¨DÔ1ð !ŸN™N×8Ñ8¼×9QÑ9QÐ^cÐ8ÓdÐØ�
‰
Ð'Ð(¨°4×3MÒ3M©CÐSVÐ+WÐWXÐYÔZà×3Ñ3ØØØ"3Øð	 	4ô 	
ð ×2Ñ2°4Ó8ˆð 	�
‰
�3Œñ
 CG�D—I‘IÑ>¹Ó>Ô>ÈFˆ	Ù`vÐ9¼#Ð>TÓ:UÐ9VÐV[Ñ\Ð|~ÐØ�
‰
Øœ×.Ñ.Ð/¨qÁD´#°d³)¸a²-ÈaÐPQÐ0RÐSeÐRfÐflÐmuÐlvÐvxð  zCð  yDð  DGð  Hô	
ð ÐÙ!Ø#Ÿ~™~×;Ñ;¼NÐW[Ð;Ó\ÐØ×'Ñ'¨¨dÐ4JÐL\Õ]ÙØ%Ÿ}™}›Ðà�
‰
Ø�{‰{‹}ˆo˜S Ð 1ð 2Ø"˜ 2Ü×$Ñ$Ð% QÐ'8Ð&9ð :Ü�D“	˜!‘˜Aˆ˜aÐ 1Ð2ð 3Ø×4Ò4‘3Ð:KÐLÐLrÙ'‰t¨RÐ0Ð1AÐ0BØðô	ð 	×Ñ˜x¬Ô8ØÐ/Ó0ˆCØ�N‰N×'Ñ'¨Õ,ð 1ó ˆCØ×&Ñ& tÔ,Ø�N‰N˜4Õ ð ñ "Û1�Ø×.Ñ.¨tÔ4Ø×"Ñ" 4Õ(ð 2ð ×!Ñ!Ð"2´NÔCØ�N‰N×'Ñ'Ð(8Õ9ÙØ×)Ñ)¨$Ô/Ø×Ñ˜dÔ#à×&Ñ& t¨XÔ6à�
‰
�4×*Ñ*¨4¯;©;«=¸$¿(¹(ÓCÔDØ×Ñ˜TÔ"à�
‰
�3�rU   rj  )r[   r\   r]   ró   r  r  r  r  r  r‚  r  rÔ  r  r"  r+  r{   r0  r3  r<  rD  rO  rÃ  r^   r_   s   @rT   r  r  r  s“   ø„ ò M€HØ€GØ!ÐØ€FØ!ÐØ€Lôòð( ñó ðð òó ðð" ñó ðð,¸Có ò.	2ò!òHò(ö.WrU   r  c                   ó6   — e Zd ZddgZdZeZdZdZd„ Z	d„ Z
d„ Zy)ÚInlinedDefNodeCallNoder—   rü  r,   Nc                 óÔ   — | j                   j                  }|j                  s|j                  ryt	        |j
                  «      t	        | j
                  «      k7  ry|j                  ryyrY  )r?  Údef_nodeÚstar_argÚstarstar_argr“   r—   Únum_kwonly_argsr¢  s     rT   Úcan_be_inlinedz%InlinedDefNodeCallNode.can_be_inlined©  sP   € Ø—=‘=×)Ñ)ˆ	Ø×Ò ×!7Ò!7ØÜˆy�~‰~Ó¤# d§i¡i£.Ò0ØØ×$Ò$ØØrU   c                 ó–  — | j                   j                  |«      | _         | j                  D �cg c]  }|j                  |«      ‘Œ c}| _        | j                  j                  }t        | j                  «      }d}t        |«      D ]¬  }|j                  |   j                  }| j                  |   j                  ||«      }|j                  «       r|dkD  rNd}nK|j                  j                  r5|j                  s)|j                  «       rn|dkD  rd}|j                  |«      }|| j                  |<   Œ® |rŒt        |dz
  «      D ]{  }| j                  |   }|j                  «       rŒ#|j                  j                  rŒ:|j                  r|j                  j                  rŒ]|dkD  sŒct        |j                   dd«        | S  | S c c}w )NFr   Tr,   rË  )rü  rX  r—   r?  r_  r“   r•  r­   r  r›  rs   rÎ   rr  rQ  r  r   r†   )rY   rv   r�   r4  rÞ  rà  r¬  rá  s           rT   rX  z$InlinedDefNodeCallNode.analyse_types³  sž  € Ø!×/Ñ/×=Ñ=¸cÓBˆÔà8<¿	º	ÓC¹	°�c×'Ñ'¨Õ,¸	ÑCˆŒ	Ø—M‘M×*Ñ*ˆ	Ü˜4Ÿ9™9“~ˆð #ÐÜ�|Ö$ˆAØ#Ÿ.™.¨Ñ+×0Ñ0ˆKØ—)‘)˜A‘,×(Ñ(¨°cÓ:ˆCØ×!Ñ!Ô#Ø�q’5à)-Ñ&Ø—‘×%Ò%¨c¯iªiØ×+Ñ+Ô-àð ˜1’uØ-1Ð*Ø×,Ñ,¨SÓ1�CØˆD�I‰I�aŠLð' %ñ* ô ˜<¨™>Ö*�Ø—i‘i ‘l�Ø×+Ñ+Ô-àØ—X‘X×*Ò*àØ—Y’Y 3§8¡8×#7Ò#7ð ð ˜1“uÜ §¡Ð)ð  BCô  DØØˆð' +ð& ˆùòi Ds   ¯Gc                 ó  — | j                   j                  «       }| j                  j                  j                  sÜ|j                  d«       |j                  d«       |j                  dt        j                  › d|› d�«       |j                  |j                  t        j                  › d�| j                  «      «       |j                  d«       |j                  dt        j                  › d|› d�«       |j                  d	«       t        j                  }|g}| j                  j                  }t        | j                  |j                  «      D ]e  \  }}|j                  j                  r+|j                  |j                  |j                  «      «       ŒG|j                  |j!                  «       «       Œg d
j#                  |«      }|j                  | j!                  «       ›d| j                  j                  j$                  j&                  ›d|›d|j)                  | j!                  «       | j                  «      ›�«       | j                  j                  j                  s|j                  d«       | j+                  |«       y )Nrœ  ú##if CYTHON_COMPILING_IN_LIMITED_APIrS  z = PyCFunction_GetSelf(r2  z == NULL && PyErr_Occurred()r  z = PyCFunction_GET_SELF(rð  r1  rS  rR  r¥  rÕ   )rü  rÛ   r?  r_  Úis_cyfunctionrÊ   r   r  rË   r†   rÊ  r—   r­   rs   r  r  r  r£  r¾   Úpyfunc_cnamerÖ   rì  )rY   rÌ   Ú	self_coderì  r4  r�   Ú	proto_args          rT   r¾  z+InlinedDefNodeCallNode.generate_result_codeì  så  € Ø×&Ñ&×0Ñ0Ó2ˆ	Ø�}‰}×%Ñ%×3Ò3ð �J‰J�sŒOØ�J‰JÐ<Ô=Ø�J‰JØœV×4Ñ4Ð5Ð5LÈYÈKÐWYÐZô\à�J‰J�t×)Ñ)Ü×*Ñ*Ð+Ð+GÐHØ—‘óô ð �J‰J�wÔØ�J‰JØœV×4Ñ4Ð5Ð5MÈiÈ[ÐXZÐ[ô]à�J‰J�xÔ ä×/Ñ/ˆIà�;ˆØ—M‘M×*Ñ*ˆ	Ü! $§)¡)¨Y¯^©^Ö<‰NˆC�Ø�x‰x×#Ò#Ø—‘ §¡¨i¯n©nÓ =Õ>à—‘ §
¡
£Õ-ð	 =ð
 —9‘9˜XÓ&ˆØ�
‰
à—‘•Ø—‘×&Ñ&×,Ñ,×9Ó9ÚØ×'Ñ'¨¯©«°t·x±xÔ@ð	Bô	Cð �}‰}×%Ñ%×3Ò3Ø�J‰J�sŒOØ×Ñ˜TÕ"rU   )r[   r\   r]   ró   r  r   r­   r?  rü  rc  rX  r¾  rW   rU   rT   r]  r]  œ  s2   „ ð ˜Ð(€HØ€GØ€DØ€HØ€Mòò7ór%#rU   r]  c                   ó*   — e Zd Zg Zdd„Zd„ Zd„ Zd„ Zy)ÚPythonCapiFunctionNodeNc                 ó:   — t         j                  | |||||¬«       y )N)rt   r¿   r­   r;  ©rñ   r‚  )rY   r†   Úpy_namer¿   r4  r;  s         rT   r‚  zPythonCapiFunctionNode.__init__  s#   € Ü×Ñ˜$ ¨'¸Ø(°|ð 	õ 	ErU   c                 ó   — | S rN   rW   rø   s     rT   rX  z$PythonCapiFunctionNode.analyse_types  r¯  rU   c                 óh   — | j                   r&|j                  j                  | j                   «       y y rN   )r;  rÇ   rÈ   r³  s     rT   r¾  z+PythonCapiFunctionNode.generate_result_code  s*   € Ø×ÒØ×Ñ×-Ñ-¨d×.?Ñ.?Õ@ð rU   c                 ó   — | j                   S rN   r‰  rX   s    rT   r  z,PythonCapiFunctionNode.calculate_result_code"  r±  rU   rN   )r[   r\   r]   ró   r‚  rX  r¾  r  rW   rU   rT   rl  rl    s   „ Ø€HóEòòAórU   rl  c                   ó   — e Zd ZdZ	 dd„Zy)ÚPythonCapiCallNodeFNc                 ó    — |j                   | _        | j                  | _        t        |||||¬«      | _        t        j                  | |fi |¤Ž y )N)r;  )ré  r­   r.  rl  r?  rF  r‚  )rY   r†   rü  r4  r;  ro  rd  s          rT   r‚  zPythonCapiCallNode.__init__/  sJ   € à×)Ñ)ˆŒ	Ø ŸI™IˆÔÜ.Ø�˜-¨Ø'ô)ˆŒô
 	×Ñ  cÑ4¨VÓ4rU   r“  )r[   r\   r]   r’  r‚  rW   rU   rT   rt  rt  &  s   „ ð €Oð /3ô	5rU   rt  c                   ó6   ‡ — e Zd ZddgZdZˆ fd„Zd„ Zd„ Zˆ xZS )ÚCachedBuiltinMethodCallNoder<  r—   Tc                 ól   •— t         ‰| �  |j                  ||||j                  |j                  ¬«       y )N)r<  rý   r—   r’  r­   )rP   r‚  r†   r’  r­   )rY   Ú	call_noder<  rý   r—   rS   s        €rT   r‚  z$CachedBuiltinMethodCallNode.__init__A  s3   ø€ Ü‰ÑØ�M‰MØ °4Ø%×5Ñ5Ø—‘ð	 	õ 	!rU   c                 ó\   — | j                   �| j                   S t        j                  | «      S rN   )r’  rñ   rZ  rX   s    rT   rZ  z'CachedBuiltinMethodCallNode.may_be_noneH  s+   € Ø×ÑÐ+Ø×'Ñ'Ð'Ü×#Ñ# DÓ)Ð)rU   c           
      ó   — | j                   j                  j                  }| j                   j                  «       }| j                  D �cg c]  }|j                  «       ‘Œ }}|j
                  j                  |j                  d«      ||| j                  |«      }|j                  | j                  «       ›d|›d|j                  | j                  «       | j                  «      ›�«       | j                  |«       y c c}w )Nrù  rS  r¡  )r<  r­   Útypeptr_cnamerÛ   r—   rÇ   Úcached_unbound_method_call_coder  rý   rÊ   r  rÖ   r†   rì  )rY   rÌ   Ú
type_cnameÚ	obj_cnamer�   r—   Ú	call_codes          rT   r¾  z0CachedBuiltinMethodCallNode.generate_result_codeM  sÅ   € Ø—X‘X—]‘]×0Ñ0ˆ
Ø—H‘H×&Ñ&Ó(ˆ	Ø+/¯9ª9Ó5©9 C�—‘•¨9ˆÐ5Ø×$Ñ$×DÑDØ×%Ñ% bÓ)Ø�z 4×#3Ñ#3°Tó;ˆ	ð 	�
‰
Ø�K‰K�Mš9Ø×#Ñ# D§K¡K£M°4·8±8Ô<ð
ô 	ð 	×Ñ˜TÕ"ùò 6s   Á	C;)	r[   r\   r]   ró   r  r‚  rZ  r¾  r^   r_   s   @rT   rw  rw  ;  s"   ø„ ð �vˆ€HØ€Gô!ò*ö
#rU   rw  c                   óT   — e Zd ZeZg d¢Zej                  Zd„ Z	d„ Z
d„ Zd„ Zd„ Zd„ Zy)	ÚGeneralCallNode)r?  rð  rñ  c                 ó  — | j                   j                  |«      }| j                  j                  |«      }| j                  j                  |«      }	  ||i |¤ŽS # t        $ r}| j                  |«       Y d }~y d }~ww xY wrN   )r?  r<  rð  rñ  rV  r@  )rY   r;  r?  rð  rñ  r?  s         rT   r<  z"GeneralCallNode.compile_time_valuei  sx   € Ø—=‘=×3Ñ3°DÓ9ˆØ×.Ñ.×AÑAÀ$ÓGˆØ×(Ñ(×;Ñ;¸DÓAˆð	-Ù˜_Ð=°Ñ=Ð=øÜò 	-Ø×)Ñ)¨!×,Ñ,ûð	-ús   ÁA Á	A?Á$A:Á:A?c                 óJ  — | j                   j                  �r| j                   j                  j                  rë| j                   j                  }t        j                  |«      st        j                  |«      rª|j                  }| j                   j                  j                  }|r|j                  nt        |j                  «      j                  }t        j                  ||«      r:| j                  j                  }| j                  j                  } ||i |¤Ž| _        y y y y y rN   )r?  rs  r<  r¯   rƒ   r%   rª  r«  r[   r­   rt   r¬  r   r­  rð  rñ  )rY   r®  rý   r¯  r°  r—   rd  s          rT   r2  z)GeneralCallNode.calculate_constant_resultr  sâ   € Ø�=‰=×%Ó%¨$¯-©-×*;Ñ*;×*FÒ*FØ—]‘]×2Ñ2ˆFÜ× Ñ  Ô(¬G×,<Ñ,<¸VÔ,DØ$Ÿo™o�à"Ÿm™m×/Ñ/×4Ñ4�Ù7B ;×#3Ò#3ÌÈVÏ_É_ÓH]×HfÑHfÐ ä×6Ñ6Ð7GÈÔUØ×/Ñ/×?Ñ?�DØ!×.Ñ.×>Ñ>�FÙ+1°4Ð+B¸6Ñ+B�DÕ(ð Vð -Eð +GÐ%rU   c                 óâ   — | j                   r| j                   j                  r| j                  j                  st	        | j
                  d«      ‚| j                  j                  | j                   fS )Nz0Compile-time keyword arguments must be explicit.)rñ  rr  rð  r�   r   r†   r—   rX   s    rT   r›  z"GeneralCallNode.explicit_args_kwds€  s]   € Ø×Ò d×&7Ñ&7×&GÒ&GØ×(Ñ(×@Ò@Ü˜tŸx™xØBóDð Dà×#Ñ#×(Ñ(¨$×*;Ñ*;Ð;Ð;rU   c                 óš  — | j                  |«      x}�|S | j                  j                  |«      | _        | j                  j                  j                  sç| j                  j                  j
                  rt        | _        | S t        | j                  d«      r„| j                  «       }|�|| ur|j                  |«      S | j                  j                  j                  r!| j                  j                  |«      | _        n<|| u rt        | j                  d«       n!n | j                  j                  |«      | _        | j                  r | j                  j                  |«      | _        | j                  j                  |«      | _        | j                  j                  |«      | _        | j!                  | j                  «       d| _        | S )Nr¾   zRNon-trivial keyword arguments and starred arguments not allowed in cdef functions.r,   )r   r?  rX  r­   rs   r  r3   rL  Úmap_to_simple_call_noder¾   rÇ  r9  r   r†   rñ  rð  r•  r  )rY   rv   rÁ  rˆ   s       rT   rX  zGeneralCallNode.analyse_types‡  sv  € Ø#'×#CÑ#CÀCÓ#HÐHÐÐUØ&Ð&ØŸ™×3Ñ3°CÓ8ˆŒØ�}‰}×!Ñ!×-Ò-Ø�}‰}×!Ñ!×*Ò*Ü&�”	Ø�Ü�t—}‘} gÔ.Ø×3Ñ3Ó5�ØÐ#¨°DÑ(8Ø×-Ñ-¨cÓ2Ð2Ø—]‘]×(Ñ(×4Ò4Ø$(§M¡M×$DÑ$DÀSÓ$I�D•MØ˜T‘\Ü˜$Ÿ(™(ðEõFð
 à $§¡× @Ñ @ÀÓ E�”Ø×ÒØ $× 1Ñ 1× ?Ñ ?ÀÓ DˆDÔØ#×3Ñ3×AÑAÀ#ÓFˆÔà× Ñ ×3Ñ3°CÓ8ð 	Ôà×Ñ §¡Ô.ØˆŒØˆrU   c           	      óN	  — t        | j                  t        «      s| S | j                  j                  s| S | j
                  }t        |dd«      }|s| S |j                  }|j                  r|j                  }|j                  s| S | j                  j                  }| j                  }|j                  }|j                  r|dd }t        |«      t        |«      kD  r.t        | j                  dt        |«      t        |«      fz  «       y|dt        |«       D �ch c]  }|j                   r|j                   ’Œ }}|t        |«      d }	d}
t#        |«      }t%        |«      }d}|j&                  D ]H  }|j(                  j*                  }||v rt        |j                  d|z  «       d}|j-                  |«       ŒJ t/        |	|j&                  «      D ]]  \  }}|j(                  j*                  }|j                   |k(  r2|j-                  |«       |
dz  }
|j1                  |j*                  «       Œ] n dd	lm}m} g }t        |j&                  «      |
kD  �rË|t        |«      d }	t9        |j&                  «      D ��ci c]*  \  }}|j(                  j*                  |t        |«      z   |f“Œ, }}}d}|	D ]à  }|j                   }||vr|s|}Œ|r+|j:                  r| c S t        | j                  d
|z  «        y||   \  }}|j-                  |«       |
dz  }
|j*                  j=                  «       r|j1                  |j*                  «       Œ™ ||j*                  «      }|j=                  «       sJ ‚|j1                  |«       |j1                  ||f«       Œâ |rŠg }g }|d   d   }|D ]T  }||u r nN|j=                  «       r|j1                  |«       Œ+ ||«      }|j1                  |«       |j1                  |«       ŒV |r|}|t?        |«      D ��cg c]  \  }}|‘Œ	 c}}z   }|j&                  D ]8  }|j(                  j*                  }||vsŒd}t        |j                  d|z  «       Œ: |rytA        | j                  ||¬«      }|ddd…   D ]  } |||«      }Œ |S c c}w c c}}w c c}}w )zÊ
        Tries to map keyword arguments to declared positional arguments.
        Returns self to try a Python call, None to report an error
        or a SimpleCallNode if the mapping succeeds.
        r¾   Nr,   zDfunction call got too many positional arguments, expected %d, got %sr   Fzargument '%s' passed twiceT)r  Ú
LetRefNodez(C function call is missing argument '%s'r�  z/C function got unexpected keyword argument '%s'r>  )!r‚   rð  rF  rñ  rr  r?  r
  r­   r  r  rq  r—   r½  r“   r   r†   rt   r  rœ  rš  r˜  r½   r   rÊ  r  r%  r  r‰  r¢  rÇ  rS  rÁ  rF  )rY   r?  r¾   r£  Úpos_argsrd  Údeclared_argsr�   Úmatched_argsÚunmatched_argsÚmatched_kwargs_countr—   ÚseenÚ
has_errorsrt   Údecl_argr  r‰  Útempsr¬  ÚkeywordsÚfirst_missing_keywordr†   rÈ  Ú
final_argsÚ	new_tempsÚfirst_temp_argÚ	arg_valuerˆ   s                                rT   r‡  z'GeneralCallNode.map_to_simple_call_node§  s›  € ô ˜$×.Ñ.´	Ô:àˆKØ× Ñ ×0Ò0àˆKØ—=‘=ˆÜ˜ '¨4Ó0ˆÙØˆKØŸ
™
ˆØ×ÒØ)×3Ñ3ˆMØ×)Ò)ØˆKà×'Ñ'×,Ñ,ˆØ×"Ñ"ˆØ%×*Ñ*ˆØ×ÒØ)¨!¨"Ð-ˆMäˆx‹=œ3˜}Ó-Ò-Ü�$—(‘(ð 2Ü58¸Ó5GÜ58¸³]ð5DñDô Eð ð !.¨n¬s°8«}Ñ =ó
Ù =˜Ø�xŠxð �H‹HÐ =ð 	ð 
ð '¤s¨8£} ~Ð6ˆØ ÐÜ�H‹~ˆô �<Ó ˆØˆ
Ø×)Ô)ˆCØ—7‘7—=‘=ˆDØ�t‰|Ü�c—g‘gÐ;¸dÑBÔCØ!�
à�H‰H�T�Nð *ô ! °×1GÑ1GÖH‰MˆH�cØ—7‘7—=‘=ˆDØ�}‰} Ò$Ø× Ñ  Ô&Ø$¨Ñ)Ð$Ø—‘˜CŸI™IÕ&áð I÷ 	@ØˆÜˆv×%Ñ%Ó&Ð)=Ó=Ø*¬3¨t«9¨:Ð6ˆNä&/°×0FÑ0FÔ&GôIÙ&G™F˜A˜sð Ÿ™Ÿ™¨¬#¨h«-©¸Ð'=Ñ=Ø&Gð ñ Ià$(Ð!Û*�Ø—}‘}�Ø˜xÑ'á0Ø04Ð-ØÙ*Ø×(Ò(ð
  $šä˜$Ÿ(™(ð %4Ø6Kñ%Lô MáØ# D™>‘��SØ× Ñ  Ô&Ø$¨Ñ)Ð$Ø—9‘9×&Ñ&Ô(Ø—K‘K §	¡	Õ*á% c§i¡iÓ0�DØŸ>™>Ô+Ð+Ð+Ø—K‘K Ô%Ø—L‘L # t Õ-ð7 +ñ: à�
Ø�	Ø!& q¡¨"¡�Û!%�IØ  NÑ2ÙØ ×*Ñ*Ô,Ø"×)Ñ)¨)Õ4á)¨)Ó4˜Ø!×(Ñ(¨Ô.Ø"×)Ñ)¨$Õ/ð "&ñ Ø%�DØ!´v¸e´}Ô$F±}©e¨a°¢c°}Ò$FÑF�ð ×)Ô)ˆCØ—7‘7—=‘=ˆDØ˜<Ò'Ø!�
Ü�c—g‘gØGØñõð	 *ñ àô ˜dŸh™h°ÀÔEˆØ™$˜B˜$”KˆDÙ'¨¨dÓ3‰Dð  àˆùòQ
ùóHIùó` %Gs   ÄRÉ7/RÐ
R!c                 ó  — | j                   j                  ry | j                  r| j                  j                  «       }nd}|j                  j                  t        j                  dd«      «       |j                  | j                  «       ›d| j                  j                  «       ›d| j                  j                  «       ›d|›d|j                  | j                  «       | j                  «      ›�	«       | j                  |«       y )NrË  r^  r6  r_  r1  r¥  )r­   r  rñ  rÛ   rÇ   rÈ   r   rÉ   rÊ   r  r?  rð  rÖ   r†   rì  )rY   rÌ   rd  s      rT   r¾  z$GeneralCallNode.generate_result_code3  sÅ   € Ø�9‰9×Ò˜vØ×ÒØ×&Ñ&×0Ñ0Ó2‰FàˆFØ×Ñ×)Ñ)¬+×*AÑ*AØÐ.ó+0ô 	1à�
‰
à—‘•Ø—‘×'Ñ'Õ)Ø×$Ñ$×.Ñ.Õ0ÚØ×'Ñ'¨¯©«°t·x±xÔ@ðBô	Cð 	×Ñ˜TÕ"rU   N)r[   r\   r]   r   r­   ró   r/   r�  rŽ  r<  r2  r›  rX  r‡  r¾  rW   rU   rT   r‚  r‚  [  s9   „ ð €Dâ>€Hà—.‘.€Kò-òCò<òò@JóX#rU   r‚  c                   óP   — e Zd ZdgZdZd„ Zd„ Zd„ Zd„ Ze	j                  ZdZd„ Zy	)
ÚAsTupleNoder�   r,   c                 óL   — t        | j                  j                  «      | _        y rN   )rµ   r�   rƒ   rX   s    rT   r2  z%AsTupleNode.calculate_constant_resultN  s   € Ü$ T§X¡X×%=Ñ%=Ó>ˆÕrU   c                 óž   — | j                   j                  |«      }	 t        |«      S # t        $ r}| j	                  |«       Y d }~y d }~ww xY wrN   )r�   r<  rµ   rV  r@  )rY   r;  r�   r?  s       rT   r<  zAsTupleNode.compile_time_valueQ  sF   € Ø�h‰h×)Ñ)¨$Ó/ˆð	-Ü˜“:ÐøÜò 	-Ø×)Ñ)¨!×,Ñ,ûð	-ús   �
( ¨	A±AÁAc                 óè   — | j                   j                  |«      j                  |«      | _         | j                   j                  t        u r| j                   j                  d«      S t        | _        | S ©NrÞ  )r�   rX  r9  r­   r   ra  rø   s     rT   rX  zAsTupleNode.analyse_typesX  sU   € Ø—8‘8×)Ñ)¨#Ó.×AÑAÀ#ÓFˆŒØ�8‰8�=‰=œJÑ&Ø—8‘8×-Ñ-Ð.QÓRÐRÜˆŒ	ØˆrU   c                  ó   — yr’  rW   rX   s    rT   rZ  zAsTupleNode.may_be_none_  r­  rU   úConstructing Python tuplec                 óF  — | j                   j                  t        t        fv rdnd}|j	                  | j                  «       ›d|›d| j                   j                  «       ›d|j                  | j                  «       | j                  «      ›�«       | j                  |«       y )NÚ__Pyx_PySequence_TupleÚPySequence_TuplerS  rR  r¥  )
r�   r­   r   r   rÊ   r  rÛ   rÖ   r†   rì  )rY   rÌ   rT  s      rT   r¾  z AsTupleNode.generate_result_codee  sw   € Ø,0¯H©H¯M©M¼nÌjÐ=YÑ,YÑ(Ð_qˆØ�
‰
à—‘•Ú�t—x‘x×)Ñ)Õ+Ø×'Ñ'¨¯©«°t·x±xÔ@ðBô	Cð
 	×Ñ˜TÕ"rU   N)r[   r\   r]   ró   r  r2  r<  rX  rZ  r/   r�  rŽ  r§  r¾  rW   rU   rT   r›  r›  E  s9   „ ð ˆw€HØ€Gò?ò-òòð —.‘.€KØ-€Kó#rU   r›  c                   óR   — e Zd ZdgZdZeZdZd„ Zd„ Z	d„ Z
d„ Zd„ Zd	„ Zd
Zd„ Zd„ Zy)ÚMergedDictNoderñ  r,   Tc                 ó
  — i }| j                   }| j                  D ]_  }|j                  rd„ |j                  D «       }n|j                  j                  «       }|D ]  \  }}|r||v rt        d|z  «      ‚|||<   Œ  Œa || _        y )Nc              3   óR   K  — | ]  \  }}|j                   |j                   f–— Œ! y ­wrN   ©rƒ   )rf   r˜  r½   s      rT   ri   z;MergedDictNode.calculate_constant_result.<locals>.<genexpr>  s.   è ø€ ð AÙ+?™Z˜S %ð ×-Ñ-¨u×/DÑ/DÔEÙ+?ùs   ‚%'ú$duplicate keyword argument found: %s)Úreject_duplicatesrñ  rr  rš  rƒ   rÃ  r˜   )rY   r  r«  r§   rÃ  r˜  r½   s          rT   r2  z(MergedDictNode.calculate_constant_resulty  s”   € ØˆØ ×2Ñ2ÐØ×%Ô%ˆDØ×#Ò#ñAØ+/×+?Ò+?óA‘ð ×,Ñ,×2Ñ2Ó4�ã#‘
��UÙ$¨°©Ü$Ð%KÈcÑ%QÓRÐRØ#��s’ñ $ð &ð  &ˆÕrU   c           	      óº  — i }| j                   }| j                  D ]�  }|j                  r?|j                  D ��cg c]'  \  }}|j	                  |«      |j	                  |«      f‘Œ) }}}n|j	                  |«      j                  «       }	 |D ]  \  }}|r||v rt        d|z  «      ‚|||<   Œ  Œ’ |S c c}}w # t        $ r}| j                  |«       Y d }~Œºd }~ww xY w)Nrª  )	r«  rñ  rr  rš  r<  rÃ  r˜   rV  r@  )	rY   r;  r  r«  r§   r˜  r½   rÃ  r?  s	            rT   r<  z!MergedDictNode.compile_time_value‹  sø   € ØˆØ ×2Ñ2ÐØ×%Ô%ˆDØ×#Ò#ð ,0×+?Ò+?ôAÙ+?™Z˜S %ð ×0Ñ0°Ó6¸×8PÑ8PÐQUÓ8VÒWØ+?ð ò Að ×/Ñ/°Ó5×;Ñ;Ó=�ð1Û"'‘J�C˜Ù(¨S°F©]Ü(Ð)OÐRUÑ)UÓVÐVØ"'�F˜3’Kñ #(ð &ð ˆùóAøô ò 1Ø×-Ñ-¨a×0Ñ0ûð1ús   ¹,B0Â	#B6Â6	CÂ?CÃCc                  ó   — yr¹  rW   rø   s     rT   rl  z MergedDictNode.type_dependenciesŸ  ó   € ØrU   c                 ó   — t         S rN   ©r   rø   s     rT   r‘   zMergedDictNode.infer_type¢  s   € ÜÐrU   c                 ó¨   — | j                   D �cg c]1  }|j                  |«      j                  |«      j                  d«      ‘Œ3 c}| _         | S c c}w )Nz1argument after ** must be a mapping, not NoneType)rñ  rX  r9  ra  ©rY   rv   r�   s      rT   rX  zMergedDictNode.analyse_types¥  s_   € ð
 ×(Ò(ó	
ñ )�ð ×Ñ˜cÓ"×5Ñ5°cÓ:×LÑLàCõEð )ñ	
ˆÔð ˆùò
s   �6Ac                  ó   — yr’  rW   rX   s    rT   rZ  zMergedDictNode.may_be_none¯  r­  rU   úConstructing Python dictc                 ó   — |j                  | j                  «       | j                  |«       t        | j                  «      }t        |«      }|j                  |«       |j                  t        ur"|j                  d|j                  «       z  «       |j                  rW|j                  |«       |j                  | j                  «       ›d|j                  «       ›d�«       |j                  |«       �nl|j                  «       r¼|j                  d«       |j                  d|j                  «       › d|j!                  «       › d�«       |j                  | j                  «       ›d|j                  «       ›d�«       |j                  |«       |j                  d«       |j                  d	«       |j                  d
«       |j                  | j                  «       ›d|j                  «       ›d|j#                  | j                  «       |j                  «      ›�«       | j%                  |«       |j'                  |«       |j                  «       r|j                  d«       |j                  t        urÐ|j                  d«       |j(                  j+                  t-        j.                  dd«      «       |j                  | j                  «       ›d|j                  «       ›d|j#                  | j                  «       | j                  «      ›�«       | j%                  |«       |j'                  |«       |j                  d«       |j1                  |«       t3        «       }|D �]¬  }|j                  �rj|j4                  D �]X  }|j                  |«       | j6                  r¨|j                  d| j                  «       ›d|j8                  j                  «       ›d�«       |j;                  d«       |j                  d|j8                  j                  «       ›d|j=                  | j                  «      ›�«       |j                  d«       |j?                  |j8                  j                  d| j                  «       ›d|j8                  j                  «       ›d|j@                  j                  «       ›d�«       |j'                  |«       |j1                  |«       �Œ[ �Œ{|j                  |«       | j6                  rQ|j;                  d«       |j?                  |j                  d| j                  «       ›d|j                  «       ›d�«       n¢|j;                  d«       |j                  d| j                  «       ›d|j                  «       ›d�«       |j                  d|j                  «       z  «       |j                  |j=                  |j                  «      «       |j                  d«       |j'                  |«       |j1                  |«       �Œ¯ tC        |«      D ]1  }|j(                  j+                  t-        j.                  |d«      «       Œ3 y )Nz$if (likely(PyDict_CheckExact(%s))) {rS  rT  zB#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_APIz!if (__Pyx_IS_UNIQUELY_REFERENCED(r1  rì  z} elserð  rœ  z = PyDict_Copy(r¥  rÕ   rò  rö  r6  z6 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, úif (unlikely(PyDict_Contains(rb  ÚRaiseDoubleKeywordsú+__Pyx_RaiseDoubleKeywordsError("function", úPyDict_SetItem(r¢  ÚMergeKeywordsz__Pyx_MergeKeywords(ÚRaiseMappingExpectedzif (unlikely(PyDict_Update(z	) < 0)) {zVif (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseMappingExpectedError(%s);úFunctionArguments.c)"r½  r†   r©  rí  rñ  rî  rÃ  r­   r   rÊ   rÛ   rr  r´  r  rÏ  r›  rR  rÖ   rì  rË  rÇ   rÈ   r   rÉ   rØ  rœ  rš  r«  r˜  r   rÙ   r‹  r½   rÁ  )rY   rÌ   r—   r§   Úhelpersr�   Úhelpers          rT   rÃ  z'MergedDictNode.generate_evaluation_code´  s«  € Ø�‰�d—h‘hÔØ×!Ñ! $Ô'ä�D×%Ñ%Ó&ˆÜ�D‹zˆØ×%Ñ% dÔ+Ø�9‰9œIÑ%à�J‰JÐ=Ø—~‘~Ó'ñ(ô )ð ×ÒØ×%Ñ% dÔ+Ø�J‰J T§[¡[¥]°D·N±NÕ4DÐEÔFØ×.Ñ.¨tÖ4à×"Ñ"Ô$ð —
‘
Ð_Ô`Ø—
‘
Ð>¸t¿~¹~Ó?OÐ>PÐPRÐSW×SlÑSlÓSnÐRoÐotÐuÔvØ—
‘
¨¯©­¸¿¹Õ8HÐIÔJØ×2Ñ2°4Ô8Ø—
‘
˜8Ô$Ø—
‘
˜8Ô$Ø—
‘
˜3”Ø�J‰JØ—‘•Ø—‘Õ Ø×'Ñ'¨¯©«°t·x±xÔ@ðBô Cð × Ñ  Ô&Ø×'Ñ'¨Ô-Ø×"Ñ"Ô$Ø—
‘
˜3”à�9‰9œIÑ%Ø�J‰J�zÔ"Ø×Ñ×-Ñ-¬k×.EÑ.EØ$Ð&8ó/:ô ;à�J‰JØ—‘•Ø—‘Õ Ø×'Ñ'¨¯©«°t·x±xÔ@ðBô Cð × Ñ  Ô&Ø×'Ñ'¨Ô-Ø�J‰J�sŒOØ�‰˜Ôä“%ˆÜˆDØ×#Ó#à×/Õ/�CØ×0Ñ0°Ô6Ø×-Ò-ØŸ
š
Ø ŸK™K�MØŸG™G×-Ñ-Õ/ð$1ô 2ð  Ÿ™Ð$9Ô:àŸ
š
ØŸG™G×-Ñ-Õ/Ø ŸO™O¨D¯H©HÔ5ð$7ô 8ð Ÿ
™
 3œØ×)Ñ)¨#¯'©'¯+ª+ØŸ™�ØŸ™×)Ñ)Õ+ØŸ	™	×+Ñ+Õ-ð8/ô 0ð ×.Ñ.¨tÔ4Ø—N‘N 4Ö(ò# 0ð& ×-Ñ-¨dÔ3Ø×)Ò)à—K‘K Ô0Ø×)Ñ)¨$¯(ª(ØŸ™� t§~¡~Õ'7ð59õ :ð —K‘KÐ 6Ô7Ø—J’JØŸ™� t§~¡~Õ'7ð 9ô :à—J‘Jð  FØHLÏÉÓHXñ Yô Zà—J‘J˜tŸ™¨t¯x©xÓ8Ô9Ø—J‘J˜s”OØ×+Ñ+¨DÔ1Ø—‘ Ö%ðM ôP ˜W–oˆFØ×Ñ×-Ñ-¬k×.EÑ.EÀfÐNcÓ.dÕeñ &rU   c                 óH   — | j                   D ]  }|j                  |«       Œ y rN   )rñ  r÷  ©rY   rÌ   r§   s      rT   r÷  zMergedDictNode.annotate  s   € Ø×%Ô%ˆDØ�M‰M˜$Õñ &rU   N)r[   r\   r]   ró   r  r   r­   r«  r2  r<  rl  r‘   rX  rZ  r§  rÃ  r÷  rW   rU   rT   r¦  r¦  o  sN   „ ð
 Ð€HØ€GØ€DØÐò&ò$ò(òòòð -€Kò\fó| rU   r¦  c                   ó  — e Zd ZdZdgZdZdZdZdZdZ	dZ
d„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd)d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd*d„Zd+d„Zd„ Zd„ ZdZ d„ Z!d„ Z"d„ Z#d „ Z$d!„ Z%d"„ Z&d#„ Z'd$„ Z(	 	 d,d%„Z)d-d&„Z*d'„ Z+d(„ Z,y).rG  r,   r<  Nr   TFc                 óô   — t        | j                  t        «      r1| j                  j                  r| j                  dk(  s| j                  S | j                  j                  «       }|r|›d| j                  ›�S y )NÚparallelrü   )r‚   r<  r
  r  r=  r\  )rY   Úcys     rT   r\  z!AttributeNode.as_cython_attribute0  sZ   € Ü�t—x‘x¤Ô*Ø—‘×)Ò)Ø—‘ *Ò,Ø—>‘>Ð!à�X‰X×)Ñ)Ó+ˆÙÚ  $§.¢.Ð1Ð1ØrU   c           	      ó”  — |t         u �r©| j                  }|rC|j                  r7|j                  r+d| _        |j                  | _        | j                  |«       | S |�rU|j                  �rH| j                  j                  t        j                  u�r!ddl
m}m}  || j                  | j                  j                  ¬«      }| j                  j                  |_        || _        t        j                  | ||«      }t!        j"                  dd«      }t%        j&                  t$        j                   t%        j(                  dt$        j                   d «      t%        j(                  dt$        j                   d «      g«      }	t+        | j,                  d|	||g|¬	«      }
 |||
«      }|j/                  |«      S t        j                  | ||«      S )
Nr,   r  rþ  ÚPyMethodNew2Argr6  rå  rY   Ú__Pyx_PyMethod_New2Arg)rü  r4  r—   r;  )r   r¾   rq  rÇ  r  Úanalyse_as_python_attributer<  r­   r   r   r%  r  r  r.  rñ   r  r   rÉ   r   rB  r  rt  r†   rX  )rY   r"  rv   r¾   r  r  Úobj_nodeÚunbound_noder;  r4  Úbinding_callÚcomplete_calls               rT   r  zAttributeNode.coerce_to;  sz  € ð ”~Ò%Ø—J‘JˆEÙ˜×+Ò+°×0AÒ0Aà �”Ø"×.Ñ.�”
Ø×0Ñ0°Ô5Ø�Ú˜5×-Ó-°$·(±(·-±-Äw×GXÑGXÒ2X÷
 Ká(¨¯©¸¿¹¿¹ÔF�Ø(,¯©×(=Ñ(=�Ô%Ø#�”Ü'×1Ñ1°$¸À#ÓF�Ü(×4Ñ4Ø%Ð'9ó�ô '×0Ñ0Ü×-Ñ-Ü"×/Ñ/°¼
×8QÑ8QÐSWÓXÜ"×/Ñ/°¼
×8QÑ8QÐSWÓXð0ó�	ô  2Ø—H‘HØ":Ø'Ø&¨Ð1Ø!-ô �ñ !5°X¸|Ó L�Ø$×2Ñ2°3Ó7Ð7Ü×!Ñ! $¨°#Ó6Ð6rU   c                 ó¬   — | j                   }|j                  d«      r|j                  d«      ry t        | j                  j
                  |«      | _        y )NÚ__)r=  Ú
startswithÚendswithr
  r<  rƒ   )rY   rÖ  s     rT   r2  z'AttributeNode.calculate_constant_resulte  s>   € Ø�~‰~ˆØ�?‰?˜4Ô  T§]¡]°4Ô%8ØÜ& t§x¡x×'?Ñ'?ÀÓFˆÕrU   c                 ó0  — | j                   }|j                  d«      r+|j                  d«      rt        | j                  d|z  «       y | j
                  j                  |«      }	 t        ||«      S # t        $ r}| j                  |«       Y d }~y d }~ww xY w)NrÎ  z6Invalid attribute name '%s' in compile-time expression)
r=  rÏ  rÐ  r   r†   r<  r<  r
  rV  r@  )rY   r;  rÖ  r<  r?  s        rT   r<  z AttributeNode.compile_time_valuek  sƒ   € Ø�~‰~ˆØ�?‰?˜4Ô  T§]¡]°4Ô%8Ü�$—(‘(ØJÈTÑQôSàØ�h‰h×)Ñ)¨$Ó/ˆð	-Ü˜3 Ó%Ð%øÜò 	-Ø×)Ñ)¨!×,Ñ,ûð	-ús   Á%A1 Á1	BÁ:BÂBc                 ó8   — | j                   j                  |«      S rN   )r<  rl  rø   s     rT   rl  zAttributeNode.type_dependenciesw  ó   € Ø�x‰x×)Ñ)¨#Ó.Ð.rU   c                 ó|  — | j                  |d¬«      }|�u|j                  j                  rI|j                  j                  j                  r)t	        j
                  |j                  j                  «      S |j                  j                  S | j                  |«      }|�|j                  j                  S | j                  j                  |«      }| j                  ||¬«       |j                  r| j                  j                  rt        S | j                  r| j                  j                  rt        S | j                  S )NF©Útarget)Úobj_type)Ú#analyse_as_cimported_attribute_noder¾   r­   rq  r   rÁ  Úanalyse_as_type_attributer<  r‘   Úanalyse_attributer¿  r   r½  )rY   rv   rˆ   r×  s       rT   r‘   zAttributeNode.infer_typez  sì   € à×7Ñ7¸ÀEÐ7ÓJˆØÐØ�z‰z�Š 4§:¡:§?¡?×#?Ò#?ä!×*Ñ*¨4¯:©:¯?©?Ó;Ð;à—z‘z—‘Ð&Ø×-Ñ-¨cÓ2ˆØÐØ—:‘:—?‘?Ð"Ø—8‘8×&Ñ& sÓ+ˆØ×Ñ˜s¨XÐÔ6Ø×#Ò#¨¯	©	×(>Ò(>ô "Ð!Ø�ZŠZ˜DŸJ™J×1Ò1ô "Ð!Ø�y‰yÐrU   c                 ó   — d| _         y r·  r  rø   s     rT   rT  z(AttributeNode.analyse_target_declaration“  rv  rU   c                 ó  — | j                  |d¬«      }|j                  j                  r#t        | j                  d| j
                  z  «       |j                  «       s#t        | j                  d| j                  z  «       |S )Nr,   rÕ  z"Assignment to const attribute '%s'r  )rX  r­   rd  r   r†   r=  r  rZ  s      rT   r`  z"AttributeNode.analyse_target_types–  sc   € Ø×!Ñ! #°Ð!Ó2ˆØ�9‰9×ÒÜ�$—(‘(Ð@À4Ç>Á>ÑQÔRØ�~‰~ÔÜ�$—(‘(ÐCÀdÇiÁiÑOÔPØˆrU   c                 ó’  — | j                   st        j                  | _         |j                  d   | _        | j                  ||«      }|€|s| j                  |«      }|€| j                  ||«      }|€J ‚|j                  s|j                  r|j                  rd|j                  _        |j                  r|j                  |«       |S )Nrû  T)r­   r   r3   rn   rþ  rØ  rÙ  Ú"analyse_as_ordinary_attribute_noders  rá   r¾   r  Úwrap_obj_in_nonecheck)rY   rv   rÖ  rˆ   s       rT   rX  zAttributeNode.analyse_typesž  s°   € Ø�yŠyÜ"×-Ñ-ˆDŒIØ!$§¡Ð0BÑ!CˆÔØ×7Ñ7¸¸VÓDˆØˆ<¡Ø×1Ñ1°#Ó6ˆDØˆ<Ø×:Ñ:¸3ÀÓGˆDØÐ#Ð#Ð#Ø×Ò §¢°4·:²:Ø"ˆD�J‰JŒOØ×ÒØ×&Ñ& sÔ+ØˆrU   c                 ó‚  — | j                   j                  |«      }|r¢|j                  | j                  «      }|rO|j                  sC|j
                  s$|j                  s|j                  s|j                  r| j                  |||«      S | j                  |«      r%t        | j                  d| j                  z  «       | S y )Nz&cimported module has no attribute '%s')r<  r}  rÖ  r=  rå  r'  rq  rF  rd  Úas_name_noder  r   r†   )rY   rv   rÖ  Úmodule_scoper¾   s        rT   rØ  z1AttributeNode.analyse_as_cimported_attribute_node®  s›   € ð
 —x‘x×1Ñ1°#Ó6ˆÙØ ×,Ñ,¨T¯^©^Ó<ˆEÙ˜U×@Ò@Ø×$Ò$¨×(:Ò(:Ø—}’}¨¯ªØ×(Ñ(¨¨e°VÓ<Ð<Ø×6Ñ6°sÔ;ä�d—h‘hÐ HÈ4Ï>É>Ñ YÔZØ�ØrU   c                 óJ  — | j                   j                  ry | j                   j                  |«      }|�ré|j                  s|j                  s|j
                  rÉ|j                  j                  | j                  «      }|r¡|j                  s"|j
                  r‰|j                  j                  rs|j                  r| j                  sy |}nC| j                  |||«      }|j                  D �cg c]  }| j                  |||«      ‘Œ c}|_        | j                  ||d¬«      S y |j                   s|j"                  rä| j                  |j$                  v rp|j&                  j(                  D ]1  }|j*                  | j                  k(  sŒ| j                  ||d¬«      c S  t-        | j.                  | j                  ›d|›�«       y | j                  j1                  d«      r| j                  j3                  d«      ry t-        | j.                  | j                  ›d|›�«       y c c}w )NFrÕ  z not a known value of rÎ  )r<  rŒ   r€  r¾  r¿  r  rN  rÖ  r=  r½  r­   rq  r|  Ú_create_unbound_cmethod_entryÚoverloaded_alternativesrá  rA  r  r�  r¾   Úenum_valuesrt   r   r†   rÏ  rÐ  )rY   rv   r­   r¾   Ú
ubcm_entryÚoverloaded_alternatives         rT   rÙ  z'AttributeNode.analyse_as_type_attributeÀ  sÇ  € ð
 �8‰8×%Ò%ØØ�x‰x×'Ñ'¨Ó,ˆÚØ×%Ò%¨×)=Ò)=À×ARÒARØŸ
™
×.Ñ.¨t¯~©~Ó>�Ù˜e×.Ò.°$×2CÒ2CÈÏ
É
×H_ÒH_Ø×+Ò+Ø#Ÿ~š~à#'Ø%*™
à%)×%GÑ%GÈÈeÐUXÓ%Y˜
ð ;@×:WÒ:Wó>á:WÐ 6ð !×>Ñ>¸tÐE[Ð]`ÕaØ:Wñ>˜
Ô:ð  ×,Ñ,¨S°*ÀUÐ,ÓKÐKð ð —’ ×!1Ò!1Ø—>‘> T§[¡[Ñ0Ø!%§¡×!7Ô!7˜Ø Ÿ:™:¨¯©Ó7Ø#'×#4Ñ#4°S¸%ÈÐ#4Ó#NÒNð "8ô ˜dŸh™hÈÏËÑX\Ð(]Ô^ð ð —^‘^×.Ñ.¨tÔ4¸¿¹×9PÑ9PÐQUÔ9Vàä˜$Ÿ(™(ÀDÇNÃNÑTXÐ$YÔZØùò#>s   Ã,H c                 ó  — |j                   �r|j                  j                  €ì|j                   }|j                  j                  s"|j                  r#|j                  j
                  r|j                  }nÂ|j                  r6t        | j                  |j                  ›d|›�«       t        j                  }n€t        j                  |j                  «      }|j                  d d  |_        t        j                  d|dd «      |j                  d<   n'|j                  ›d|j                   ›�}|j                  }t#        j$                  |j                  ||«      }d|_        |j                   |_         d|_        |j*                  |_        |S )Nz not a static member of rY   r   r)  r,   )Ú
func_cnamer­   r  rÍ  Úparent_scopeÚis_cpp_class_scoper  r   r†   rt   r   r3   r&   r—   r  Úvtabptr_cnamer¿   r   r  rq  rç  rN  )rY   r­   r¾   rv   r¿   r*  rç  s          rT   rä  z+AttributeNode._create_unbound_cmethod_entryæ  s#  € ð ×Ó §
¡
× 8Ñ 8Ð @Ø×$Ñ$ˆEØ�z‰z×*Ò*Ø×$Ò$¨×)9Ñ)9×)LÒ)LØŸ
™
‘Ø×"Ò"Ü�d—h‘hÀ%Ç*Ã*ÉdÐ SÔTÜ"×-Ñ-‘ô Ÿ	™	 %§*¡*Ó-�Ø"ŸZ™Z©˜]�”
Ü *× 7Ñ 7¸ÀÀfÈdÓ S�—
‘
˜1’à $× 2Ó 2°E·K²KÐ@ˆEØ—J‘JˆEÜ—\‘\ %§*¡*¨e°UÓ;ˆ
Ø"#ˆ
ÔØ %× 0Ñ 0ˆ
ÔØ()ˆ
Ô%Ø Ÿ;™;ˆ
ÔØÐrU   c                 ó>  — | j                   j                  |«      }|r|j                  | j                  «      S | j                   j                  sO| j                   j                  |«      }|r2t        |dd «      �%|j                  j                  | j                  «      S y )NrN  )r<  r}  Úlookup_typer=  rŒ   r€  r
  rN  )rY   rv   râ  r  s       rT   r€  zAttributeNode.analyse_as_type   s|   € Ø—x‘x×1Ñ1°#Ó6ˆÙØ×+Ñ+¨D¯N©NÓ;Ð;Ø�x‰x×)Ò)ØŸ™×0Ñ0°Ó5ˆIÙœW Y°¸Ó>ÐJØ —‘×2Ñ2°4·>±>ÓBÐBØrU   c                 ó   — | j                   j                  |«      }|ra|j                  | j                  «      }|rD|j                  r8|j
                  j                  s|j
                  j                  r|j
                  S y rN   )r<  r}  rÖ  r=  rF  r­   r¾  r¿  ©rY   rv   râ  r¾   s       rT   rˆ  z'AttributeNode.analyse_as_extension_type
  s^   € ð —x‘x×1Ñ1°#Ó6ˆÙØ ×,Ñ,¨T¯^©^Ó<ˆEÙ˜ŸšØ—:‘:×/Ò/°5·:±:×3MÒ3MØ Ÿ:™:Ð%ØrU   c                 ó¨   — | j                   j                  |«      }|r5|j                  | j                  «      }|r|j                  r|j                  S y rN   )r<  r}  rÖ  r=  rä  rñ  s       rT   r}  zAttributeNode.analyse_as_module  sE   € ð —x‘x×1Ñ1°#Ó6ˆÙØ ×,Ñ,¨T¯^©^Ó<ˆEÙ˜ŸšØ—‘Ð&ØrU   c                 ó¶   — t         j                  | | j                  |¬«      }|r|j                  |«      }n|j	                  |«      }d|j
                  _        |S )N)rt   r¾   r,   )r
  rg  r=  r`  rÊ  r¾   r  )rY   rv   r¾   rÖ  rˆ   s        rT   rá  zAttributeNode.as_name_node  sR   € ô ×!Ñ! $¨T¯^©^À5Ð!ÓIˆÙØ×,Ñ,¨SÓ1‰Dà×,Ñ,¨SÓ1ˆDØˆ�
‰
ŒØˆrU   c                 óz  — | j                   j                  |«      | _         | j                  |«       | j                  r#| j                  j                  r| j
                  s	 | j                  r|sd| _        t        | _	        | S |r8| j                   j                  j                  rt        | j                  d«       | S | j                  rr| j                  j                  r\|sDt        j!                  | j                  | j                   | j                  «      j                  |«      S t        | j                  d«       | S )Nr,   z'Assignment to an immutable object fieldz"Assignment to a read-only property)r<  rX  rÚ  r¾   r½  r|  r  r  r   r.  r­   r¿  r   r†   Úis_cpropertyrF  r´  )rY   rv   rÖ  s      rT   rÞ  z0AttributeNode.analyse_as_ordinary_attribute_node*  sê   € Ø—8‘8×)Ñ)¨#Ó.ˆŒØ×Ñ˜sÔ#Ø�:Š:˜$Ÿ*™*×/Ò/¸¿ºàð �?Š?ÙØ �”Ü$2�Ô!ð ˆñ ˜Ÿ™Ÿ™×5Ò5Ü�$—(‘(ÐEÔFð ˆð �ZŠZ˜DŸJ™J×3Ò3ÙÜ%×3Ñ3°D·H±H¸d¿h¹hÈÏ
É
ÓS×aÑaÐbeÓfÐfä�$—(‘(Ð@ÔAð ˆrU   c                 ó   — |d u}d| _         | j                  | _        |€w| j                  j                  j
                  s | j                  j                  j                  r | j                  j                  |«      | _        | j                  j                  }n|j
                  s|j                  rt        }|j                  s|j                  r|j                  }d| _        nG|j                  s|j                  rd| _        n'|j                  r|j                   rd| _        nd| _        |j"                  �rÈ|j%                  «       ré|j&                  j)                  | j                  «      }|j*                  r§|s¥| j                  dk(  rJd| _        d| _        d| _        | j                  j                  j3                  | j4                  «      | _        y |j7                  | j                  || j4                  «       |j&                  j)                  | j                  «      }|r>|j8                  r2d }n/t;        | j4                  d|z  «       t<        j>                  | _        y || _         |r—|j                  r%|jB                  dk(  rt;        | j4                  d«       |jD                  r|j                  | _        y |jF                  r|jH                  r|jJ                  r#|j                  | _        |jL                  | _        y 	 | jO                  |||«       y )	Nr   r)  rü   ÚTTz/Cannot select attribute of incomplete type '%s'Ú__weakref__z,Illegal use of special attribute __weakref__)(r  r=  rŸ  r<  r­   r¿  rÀ  r9  r   r  rp  r  rÂ  r¾  r¿  r  Úis_fake_referenceÚhas_attributesÚattributes_knownrN  rÖ  r  Úis_memslice_transposer  r¨  Ú	transposer†   Údeclare_attributer\  r   r   r3   r¾   rt   rõ  rø  r  r½  r¿   rÈ  )rY   rv   r×  Úimmutable_objr¾   s        rT   rÚ  zAttributeNode.analyse_attributeB  sN  € à ¨Ð,ˆØˆŒØ—n‘nˆŒØÐØ�x‰x�}‰}×&Ò&¨$¯(©(¯-©-×*HÒ*HØŸ8™8×6Ñ6°sÓ;�”Ø—x‘x—}‘}‰Hà×!Ò! X×%>Ò%>Ü)�Ø�?Š?˜h×/Ò/Ø×)Ñ)ˆHØˆD�GØ×'Ò'¨8×+CÒ+CØˆD�GØ×"Ò" x×'AÒ'AØˆD�GàˆDŒGØ×"Ó"Ø×(Ñ(Ô*Ø Ÿ™×2Ñ2°4·>±>ÓB�Ø×.Ò.±uØ—~‘~¨Ò,Ø59˜Ô2Ø'+˜œØ/3˜Ô,Ø$(§H¡H§M¡M×$;Ñ$;¸D¿H¹HÓ$E˜œ	Øà ×2Ñ2°4·>±>À3ÈÏÉÔQØ (§¡× :Ñ :¸4¿>¹>Ó J˜Ù˜UŸ_š_Ø ‘Eä�d—h‘hØEØñô ô '×1Ñ1�”	ØØˆDŒJÙØ×-Ò-°%·*±*ÀÒ2MÜ˜$Ÿ(™(Ð$RÔSð ×%Ò%Ø %§
¡
�D”IØØ×'Ò'°×0EÒ0EÈ%×JZÒJZØ %§
¡
�D”IØ"'§+¡+�D”KØð
 ð
 	×(Ñ(¨¨h¸ÕFrU   c                 óÔ  — |€| j                   j                  }|j                  | j                  «      | _        | j                  | _        t
        | _        d| _        |j                  �s€|j                  �sr|j                  sj|j                  s^|j                  sR|j                  sF|j                  s:|j                  r|j                  |«      s|j                   r5|j                  |«      r$|s!| j                   j#                  |«      | _         y y |j$                  r¤| j                   j&                  s| j                   j(                  rx| j                   j*                  j,                  rX| j                   j*                  j,                  j                  j                  r$|s!| j                   j#                  |«      | _         y y t/        | j0                  d|›d| j                  ›d�«       y y y )Nr,   zObject of type 'z' has no attribute 'r+  )r<  r­   Úmangle_class_private_namer=  rŸ  r   r  rs   r  r¿  rt  rÿ  r  r  rI  rÛ  Ú	is_structr9  rq  rá   rs  r¾   rÇ  r   r†   )rY   rv   r×  rÿ  s       rT   rÈ  z)AttributeNode.analyse_as_python_attributeˆ  s]  € ØÐØ—x‘x—}‘}ˆHà×6Ñ6°t·~±~ÓFˆŒØ—n‘nˆŒÜ"ˆŒ	ØˆŒà×#Ó#¨H×,=Ó,=à×"Ò" h×&<Ò&<Ø×)Ò)¨X×-HÒ-HØ×*Ò*Ø ×*Ò*¨x×/NÑ/NÈsÔ/SØ ×*Ò*¨x×/NÑ/NÈsÔ/SÙ$Ø#Ÿx™x×:Ñ:¸3Ó?�D•Hð %à×'Ò'¨T¯X©X×-=Ò-=ÀÇÁ×AVÒAVØŸ™Ÿ™×2Ò2ØŸ™Ÿ™×2Ñ2×7Ñ7×CÒCá$Ø#Ÿx™x×:Ñ:¸3Ó?�D•Hð %ô �d—h’hâ §£ð1õ2ð! ->Ð#rU   c                 óL  — |j                   d   sy d }d}| j                  j                  j                  rQ| j                  rE| j
                  s9dj                  t        | j                  «      dk  rdnd«      }| j                  f}ny| j                  j                  j                  rY| j                  rd}nJ| j                  j                  j                  j                  | j                  «      }|rd}|j                  f}|r$| j                  j                  |d	|¬
«      | _        y y )NrQ  rW   rÆ  rÇ  rÈ  rù  z&Cannot transpose None memoryview slicez5Cannot access '%s' attribute of None memoryview slicerÉ  rÊ  )rn   r<  r­   r¾  Úneeds_none_checkr  r  r“   r=  r  rü  rN  rÖ  rt   ra  )rY   rv   r'  r`  r¾   s        rT   rß  z#AttributeNode.wrap_obj_in_nonecheck¥  sî   € Ø�~‰~˜kÒ*ØàˆØˆØ�H‰H�M‰M×+Ò+°×0EÒ0EØ—’Ø=×DÑDÌcÐRV×R`ÑR`ÓNaÐegÒNgÁUÐmoÓpˆCØŸ>™>Ð+‰KØ�X‰X�]‰]×-Ò-Ø×)Ò)Ø>‘àŸ™Ÿ™×+Ñ+×7Ñ7¸¿¹ÓG�ÙàQ�CØ#(§:¡: -�KáØ—x‘x×1Ñ1°#Ð7MØ>Ið 2ó KˆD�Hð rU   c                 ó>   — | j                   r| j                  «        y y rN   )r  r�  rø   s     rT   rŽ  zAttributeNode.nogil_check½  s   € Ø�?Š?Ø�N‰NÕð rU   zAccessing Python attributec                 ó8   — | j                   j                  |«      S rN   )r<  r  rø   s     rT   r  z0AttributeNode.is_cimported_module_without_shadowÃ  s   € Ø�x‰x×:Ñ:¸3Ó?Ð?rU   c                 óœ   — | j                   r,| j                  «       xs | j                   j                  «       S t        j                  | «      S rN   )r<  r›  rS  r
  rX   s    rT   rS  zAttributeNode.is_simpleÆ  s;   € Ø�8Š8Ø×&Ñ&Ó(Ò@¨D¯H©H×,>Ñ,>Ó,@Ð@ä×%Ñ% dÓ+Ð+rU   c                 óF   — | j                   ryt        j                  | «      S r·  )r<  r
  r  rX   s    rT   r  zAttributeNode.is_lvalueÌ  s   € Ø�8Š8Øä×%Ñ% dÓ+Ð+rU   c                 óx   — | j                   r| j                   j                  «       S t        j                  | «      S rN   )r<  r  r
  rX   s    rT   r  zAttributeNode.is_ephemeralÒ  s-   € Ø�8Š8Ø—8‘8×(Ñ(Ó*Ð*ä×(Ñ(¨Ó.Ð.rU   c                 óŒ   — | j                  «       }| j                  r'| j                  j                  r| j                  sd|z  }|S r¨  )Úcalculate_access_coder¾   r.  rx  )rY   r  s     rT   r  z#AttributeNode.calculate_result_codeØ  s8   € Ø×+Ñ+Ó-ˆØ�:Š:˜$Ÿ*™*×4Ò4¸T¿^º^Ø˜vÑ%ˆFØˆrU   c                 óÜ  — | j                   }|j                  |j                  «      }| j                  �r| j                  j                  rí|j                  j
                  r¾| j                  j                  s¨| j                  j                  r| j                  j                  S | j                  j                  r| j                  j                  | _
        d|j                  j                  ›d|›| j                  ›|j                  j                  ›d| j                  ›�S | j                  r| j                  S y |j                  j                  r!d| j                  j!                  «       ›d|›d�S |j                  j"                  rM| j                  rA| j                  j$                  r+|j                  j'                  |j)                  «       d¬«      }|›| j                  ›| j                  ›�S )	Nz	((struct z *)ú)->Ú__Pyx_CrR  r¢  T)Úto_object_struct)r<  r  r­   r¾   r½  r¾  Úis_builtin_cmethodÚfinal_func_cnameÚ
from_fusedr¿   rŸ  Úvtabstruct_cnamerÂ  Úvtabslot_cnamer¥  r  Úupperr¿  rø  Ú	cast_coder  )rY   r<  Úobj_codes      rT   r	  z#AttributeNode.calculate_access_codeÞ  sO  € ð �h‰hˆØ—=‘= §¡Ó*ˆà�:‹:˜$Ÿ*™*×/Ò/Ø�x‰x×)Ò)°$·*±*×2OÒ2OØ—:‘:×.Ò.ØŸ:™:×6Ñ6Ð6à—9‘9×'Ò'ð
 #'§*¡*×"2Ñ"2�D”Køð —H‘H×-Ó-©x¸¿ºØ—H‘H×+Ó+¨T¯[ª[ð:ð :ð ×$Ò$Ø—{‘{Ð"ð
 Ø�X‰X× Ó Ø&*§k¡k×&7Ñ&7Õ&9º8ÐDÐDà�x‰x×'Ò'¨D¯JªJ¸4¿:¹:×;QÒ;QàŸ8™8×-Ñ-¨c¯j©j«lÈtÐ-ÓT�Ù'¨¯ª°$·+²+Ð>Ð>rU   c                 ó*  — | j                   �r| j                  r2|j                  j                  t	        j
                  dd«      «       d}n1|j                  j                  t	        j
                  dd«      «       d}|j                  | j                  «       ›d|›d| j                  j                  «       ›d|j                  | j                  «      ›d	|j                  | j                  «       | j                  «      ›�	«       | j                  |«       y | j                  j                   �r<| j"                  rã| j                  j$                  D ]"  \  }}|d
k(  sŒt'        | j                  d«        y  |j                  | j                  «       ›d| j                  j                  «       ›d�«       |j)                  | j                  «       | j                  d¬«       d| j                  «       z  }|j                  |j+                  || j                  «      «       y | j,                  r@|j                  d| j                  «       ›d|j/                  | j                  «      ›d�«       y y | j0                  j2                  r–| j,                  rŠ| j4                  r| j                  «       }n| j6                  rJ ‚| j9                  «       }| j                  j;                  |«      }|j=                  | j                  | j0                  | j>                  |¬«       y | j                  j                  r!| j                  j                  j@                  ry | j0                  r=| j0                  jB                  r&|j                  jE                  | j0                  «       y y y )NÚPyObjectLookupSpecialr6  Ú__Pyx_PyObject_LookupSpecialÚPyObjectGetAttrStrÚ__Pyx_PyObject_GetAttrStrrS  rR  r1  r¥  rÄ  z=Transposing not supported for slices with indirect dimensionsrT  Tr¶  z__pyx_memslice_transpose(&%s)zif (unlikely(!zR.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");rÕ   r9  )#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.  rx  r  r	  rB  rD  r¹  r¾  r½  r÷  )rY   rÌ   Úlookup_func_namerÔ  rÕ  r÷  Úundereferenced_resultr:  s           rT   r¾  z"AttributeNode.generate_result_code   s¨  € Ø�?‹?Ø×%Ò%Ø× Ñ ×1Ñ1Ü×+Ñ+Ð,CÐEWÓXôZà#AÑ à× Ñ ×1Ñ1Ü×+Ñ+Ð,@ÐBTÓUôWà#>Ð Ø�J‰Jà—K‘K•MÚ$Ø—H‘H×&Ñ&Õ(Ø×*Ñ*¨4¯>©>Õ:Ø×+Ñ+¨D¯K©K«M¸4¿8¹8ÔDðFôGð × Ñ  Õ&Ø�Y‰Y×)Ó)Ø×)Ò)à'+§y¡y§~¤~‘O�F˜GØ “Ü˜dŸh™hð )Cô Dáð	 (6ð —
‘
¨¯©­¸¿¹¿¹Õ8IÐJÔKØ×/Ñ/°·±³¸t¿y¹yØ)-ð 0ô /ð 4°d·k±k³mÑC�Ø—
‘
˜4×1Ñ1°!°T·X±XÓ>Õ?Ø×'Ò'Ø—
’
ð
  Ÿ;™;�=¨$¯/©/¸$¿(¹(Õ*Cð	EõFð (ð �Z‰Z×'Ò'¨D×,BÒ,BØ�~Š~Ø(,¯©«Ñ%àŸ<š<Ð'Ð'Ø(,×(BÑ(BÓ(DÐ%Ø!%§¡×!KÑ!KÐLaÓ!bÐØ×%Ñ% d§h¡h°·
±
¸D×<QÑ<QÐfxÐ%Õyð �x‰x�}Š} §¡§¡×!@Ò!@ØØ—’ §
¡
× 5Ò 5à× Ñ ×7Ñ7¸¿
¹
ÕCð !6�rU   c                 óæ   — | j                   rO| j                  j                  r9| j                  r-|j	                  | j                  «       | j                  d¬«       y t        j                  | |«       y )NTr¶  )r  r­   r  rü  rx  r  rñ   rË  r³  s     rT   rË  z$AttributeNode.generate_disposal_code;   sL   € Ø�<Š<˜DŸI™I×8Ò8¸T×=WÒ=Wà×"Ñ" 4§;¡;£=°$·)±)ÀdÐ"ÕKä×+Ñ+¨D°$Õ7rU   c                 ó|  — | j                   j                  |«       | j                  r¸|j                  j	                  t        j                  dd«      «       |j                  | j                  d| j                   j                  «       ›d|j                  | j                  «      ›d|j                  «       ›d�«       |j                  |«       |j                  |«       �n'| j                   j                  j                  rÁ|j!                  d| j"                  j%                  «       ›| j                   j                  j&                  ›d| j                   j)                  | j                   j                  «      ›d|j)                  | j+                  «       «      ›d�«       |j                  |«       |j                  |«       �nF| j-                  «       }| j                  j.                  rk| j0                  r_|j3                  |«       |j5                  |«       |j7                  || j                  «       |j9                  || j+                  «       «       nI| j                  j:                  r3d	d
lm} |jA                  |||j-                  «       | j                  |«       | j                  j:                  s4|j!                  |›d|jC                  | j+                  «       «      ›d�«       |jE                  |«       |j                  |«       | j                   j                  |«       | j                   j                  |«       y )Nrt  r6  z__Pyx_PyObject_SetAttrStr(r1  r¢  Ú__Pyx_SET_CrR  r2  r,   rú  rS  rT  )#r<  rÃ  r  rÇ   rÈ   r   rÉ   r‹  r†   rÛ   r�  r=  rË  rØ  r­   r  rÊ   rŸ  r	  Úimplementation_suffixr  r*  r  rs   r¨  r´  rò  ré  Ú
put_decrefr  rù  rû  Úput_assign_to_memviewslicer#  rÏ  )rY   r”   rÌ   rÑ  rà   rÀ   Úselect_coderû  s           rT   rÒ  z&AttributeNode.generate_assignment_codeB   s:  € à�‰×)Ñ)¨$Ô/Ø�?Š?Ø×Ñ×-Ñ-Ü×'Ñ'Ð(<Ð>PÓQôSà×!Ñ! $§(¢(à—H‘H×&Ñ&Õ(Ø×*Ñ*¨4¯>©>Õ:Ø—M‘M•Oð%ô&ð
 ×&Ñ& tÔ,Ø�N‰N˜4Ö Ø�X‰X�]‰]×%Ò%Ø�JŠJØ—‘×!Ñ!Ô#Ø—‘—‘×3Ó3Ø—‘×"Ñ" 4§8¡8§=¡=Õ1Ø—‘˜dŸj™j›lÕ+ð	-ô .ð
 ×&Ñ& tÔ,Ø�N‰N˜4Ö àŸ+™+›-ˆKØ�y‰y×$Ò$¨×)=Ò)=Ø×(Ñ(¨Ô.Ø×$Ñ$ TÔ*Ø—‘ ¨T¯Y©YÔ7Ø—‘ ¨T¯Z©Z«\Õ:Ø—‘×-Ò-Ý(Ø×5Ñ5Ø# S¨#¯*©*«,¸¿	¹	À4ôIð —9‘9×/Ò/Ø—
‘
â#Ø×.Ñ.¨t¯z©z«|Õ<ð>ô?ð
 ×-Ñ-¨dÔ3Ø�N‰N˜4Ô Ø�‰×'Ñ'¨Ô-Ø�‰×Ñ˜DÕ!rU   c           	      óv  — | j                   j                  |«       | j                  sB| j                  j                  j
                  r¦d| j                  j                  j                  v r„|j                  j                  t        j                  dd«      «       |j                  | j                  d| j                   j                  «       ›d|j                  | j                  «      ›d�«       nt!        | j                  d«       | j                   j#                  |«       | j                   j%                  |«       y )NÚ__del__rt  r6  ru  r1  r¢  z+Cannot delete C attribute of extension type)r<  rÃ  r  r¾   rN  Úis_property_scoperÂ  rÇ   rÈ   r   rÉ   r‹  r†   rÛ   r�  r=  r   rË  rØ  rÔ  s      rT   rÖ  z$AttributeNode.generate_deletion_coden   sÜ   € Ø�‰×)Ñ)¨$Ô/Ø�?Š?˜tŸz™z×/Ñ/×AÒAØ#,°·
±
×0@Ñ0@×0HÑ0HÑ#HØ×Ñ×-Ñ-Ü×'Ñ'Ð(<Ð>PÓQôSà×!Ñ! $§(¢(à—H‘H×&Ñ&Õ(Ø×*Ñ*¨4¯>©>Õ:ð<õ=ô
 �$—(‘(ÐIÔJØ�‰×'Ñ'¨Ô-Ø�‰×Ñ˜DÕ!rU   c           
      óÂ   — | j                   rd\  }}nd\  }}|j                  | j                  t        ||| j                  z  t        | j                  «      ¬«      «       y )N)Úpy_attrzpython attribute (%s))Úc_attrzc attribute (%s)r  )r  r÷  r†   r8   r­   r“   r=  )rY   rÌ   r�  r‚  s       rT   r÷  zAttributeNode.annotate}   sK   € Ø�?Š?Ø<‰KˆE‘4à6‰KˆE�4Ø�‰�d—h‘h¤¨u°d¸T¿Y¹YÑ6FÌSÐQU×Q_ÑQ_ÓM`Ô aÕbrU   c                 ó„   — | j                   j                  «       }|r$t        j                  |›d| j                  ›�«      S y )Nrü   )r<  ri  r
   rH  r=  )rY   r‹  s     rT   ri  z/AttributeNode.get_known_standard_library_import„   s4   € Ø—h‘h×@Ñ@ÓBˆÙÜ!×/Ñ/º;ÈÏÊÐ0WÓXÐXØrU   rk  rN   r’  rl  rj  )-r[   r\   r]   rs  ró   r¾   r|  r	  rü  r  r  r\  r  r2  r<  rl  r‘   rT  r`  rX  rØ  rÙ  rä  r€  rˆ  r}  rá  rÞ  rÚ  rÈ  rß  rŽ  r§  r  rS  r  r  r  r	  r¾  rË  rÒ  rÖ  r÷  ri  rW   rU   rT   rG  rG    sô   „ ð €LØˆw€Hà€EØ€IØÐØ!ÐØÐØ€Jò	ò(7òTGò
-ò/òò2òóò ò$$òLò4ò	òò	òó0DGóL2ò:Kò0ð /€Kò@ò,ò,ò/òò"?òH7Dòr8ð INØGKó*"óX"òcórU   rG  c                   óR   — e Zd ZdgZdZeZdZdZd„ Z	d„ Z
d„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zy)ÚStarredUnpackingNoderÖ  r,   Fc                 ó4   — t         j                  | ||¬«       y )NrÕ  rn  )rY   r†   rÖ  s      rT   r‚  zStarredUnpackingNode.__init__£   s   € Ü×Ñ˜$ ¨FÐÕ3rU   c                 ó~   — | j                   st        | j                  d«       | j                  j	                  |«       y ©Nz&starred expression is not allowed here)Ústarred_expr_allowed_herer   r†   rÖ  rµ  rø   s     rT   rµ  z)StarredUnpackingNode.analyse_declarations¦   s,   € Ø×-Ò-Ü�$—(‘(ÐDÔEØ�‰×(Ñ(¨Õ-rU   c                 ó8   — | j                   j                  |«      S rN   )rÖ  r‘   rø   s     rT   r‘   zStarredUnpackingNode.infer_type«   s   € Ø�{‰{×%Ñ% cÓ*Ð*rU   c                 óÀ   — | j                   st        | j                  d«       | j                  j	                  |«      | _        | j                  j
                  | _        | S r1	  )r2	  r   r†   rÖ  rX  r­   rø   s     rT   rX  z"StarredUnpackingNode.analyse_types®   sF   € Ø×-Ò-Ü�$—(‘(ÐDÔEØ—k‘k×/Ñ/°Ó4ˆŒØ—K‘K×$Ñ$ˆŒ	ØˆrU   c                 ó:   — | j                   j                  |«       y rN   )rÖ  rT  rø   s     rT   rT  z/StarredUnpackingNode.analyse_target_declarationµ   s   € Ø�‰×.Ñ.¨sÕ3rU   c                 ó|   — | j                   j                  |«      | _         | j                   j                  | _        | S rN   )rÖ  r`  r­   rø   s     rT   r`  z)StarredUnpackingNode.analyse_target_types¸   s.   € Ø—k‘k×6Ñ6°sÓ;ˆŒØ—K‘K×$Ñ$ˆŒ	ØˆrU   c                  ó   — yr  rW   rX   s    rT   r  z*StarredUnpackingNode.calculate_result_code½   r®  rU   c                  ó   — y rN   rW   r³  s     rT   r¾  z)StarredUnpackingNode.generate_result_codeÀ   rú   rU   N)r[   r\   r]   ró   r�   r   r­   r  r2	  r‚  rµ  r‘   rX  rT  r`  r  r¾  rW   rU   rT   r.	  r.	  ‘   sH   „ ð ˆz€HØ€JØ€DØ€GØ %Ðò4ò.ò
+òò4òò
órU   r.	  c            
       ó@  ‡ — e Zd ZddgZdZdZdZdZdZd„ Z	d„ Z
d„ Zdd	„Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zˆ fd„Z	 	 dd„Z ej.                   ej0                  ej2                   ej4                  dej2                  d«      g«      «      Zd„ Zd„ Zdd„Zd„ Zd„ Z ˆ xZ!S )ÚSequenceNoder—   r°   r,   NFc                 ó^   — | j                   D �cg c]  }|j                  |«      ‘Œ c}S c c}w rN   )r—   r<  )rY   r;  r�   s      rT   Úcompile_time_value_listz$SequenceNode.compile_time_value_listØ   s)   € Ø8<¿	º	ÓB¹	°�×&Ñ& tÕ,¸	ÑBÐBùÒBs   �*c                 óø   — d| _         g }| j                  D ][  }|j                  r<| j                   rt        |j                  d«       d| _         |j
                  }d|_        |j                  |«       Œ] || _        y )NFz,more than 1 starred expression in assignmentT)Ústarred_assignmentr—   r�   r   r†   rÖ  r  ©rY   r—   r�   s      rT   Úreplace_starred_target_nodez(SequenceNode.replace_starred_target_nodeÛ   si   € à"'ˆÔØˆØ—9”9ˆCØ�~Š~Ø×*Ò*Ü˜#Ÿ'™'Ð#QÔRØ*.�Ô'Ø—j‘j�Ø!%�”Ø�K‰K˜Õð ð ˆ�	rU   c                 óh   — | j                  «        | j                  D ]  }|j                  |«       Œ y rN   )r@	  r—   rT  r²  s      rT   rT  z'SequenceNode.analyse_target_declarationé   s*   € Ø×(Ñ(Ô*Ø—9”9ˆCØ×*Ñ*¨3Õ/ñ rU   c                 óú  — t        | j                  «      D ]6  \  }}|s|j                  |«      }|j                  |«      | j                  |<   Œ8 | j                  rX| j                  j                  |«      }|j
                  j                  s|j                  |«      }|j                  |«      | _        d| _        |j                  s.|j                  s"|j                  r|j                  j                  rd| _        | S ©Nr,   T)r¢  r—   rX  r9  r°   r­   r  rh  r  r×  rÜ  rØ  r²  Úslow)rY   rv   Úskip_childrenr¬  r�   r°   s         rT   rX  zSequenceNode.analyse_typesî   sÐ   € Ü §	¡	Ö*‰FˆAˆsÙ Ø×'Ñ'¨Ó,�Ø×1Ñ1°#Ó6ˆD�I‰I�aŠLð +ð ×ÒØ×*Ñ*×8Ñ8¸Ó=ˆKØ×#Ñ#×*Ò*Ø)×<Ñ<¸SÓA�Ø*×;Ñ;¸CÓ@ˆDÔØˆŒØ×Ò 3×#7Ò#7Ø×&Ò&¨3¯?©?×+JÒ+JàˆDŒIàˆrU   c                 óä  — t        j                  |d¬«      }| j                  |k(  r| S | j                  rJ ‚t	        | j
                  «      |j                  k7  r8t        | j                  d|j                  t	        | j
                  «      fz  «       t        | j
                  |j                  «      D ��cg c]  \  }}|j                  ||«      ‘Œ }}}t        | j                  ||d¬«      S c c}}w )NTr>  zHtrying to coerce sequence to ctuple of wrong length, expected %d, got %d)r—   r­   r  )r   rA  r­   r°   r“   r—   r€  r   r†   rÊ  rJ  r  rF  )rY   r"  rv   r�   r­   Úcoerced_argss         rT   Úcoerce_to_ctuplezSequenceNode.coerce_to_ctuple !  sÇ   € ä×+Ñ+¨HÀTÔJˆØ�9‰9˜Ò ØˆKà×#Ò#Ð#Ð#Üˆt�y‰y‹>˜XŸ]™]Ò*Ü�$—(‘(ÐfØ—‘œs 4§9¡9›~ðj/ñ /ô 0äBEÀdÇiÁiÐQY×QdÑQdÔBeÔfÑBe±Y°S¸$˜Ÿ™ d¨CÕ0ÐBeˆÑfÜ˜Ÿ™¨¸8ÈTÔRÐRùó gs   Â4C,c           	      óÊ  — | j                  «        t        d„ | j                  D «       «      s| S g }g }| j                  D ]y  }|j                  rZ|r<|j	                  t        |d   j                  |¬«      j                  |d¬«      «       g }|j	                  |j                  «       Œi|j	                  |«       Œ{ |r:|j	                  t        |d   j                  |¬«      j                  |d¬«      «       t        | j                  || j                  «      }| j                  r?t        | j                  d|| j                  j                  |«      d| j                  d¬«      }|S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrN   )r�   rŽ   s     rT   ri   z?SequenceNode._create_merge_node_if_necessary.<locals>.<genexpr>!  s   è ø€ Ð7©Y c�3—>•>©Yùó   ‚r   r¹  T©rE	  r»   )Úinplacer­   r  )Ú_flatten_starred_argsro   r—   r�   r  rF  r†   rX  rÖ  ÚMergedSequenceNoder­   r°   Ú
binop_noder9  )rY   rv   r—   r�  r�   rˆ   s         rT   Ú_create_merge_node_if_necessaryz,SequenceNode._create_merge_node_if_necessary!  s  € Ø×"Ñ"Ô$ÜÑ7¨T¯YªYÓ7Ô7ØˆKàˆØˆØ—9”9ˆCØ�~Š~ÙØ—K‘K¤	¨&°©)¯-©-¸fÔ E× SÑ SÐTWÐgkÐ SÓ lÔmØ�FØ—‘˜CŸJ™JÕ'à—‘˜cÕ"ð ñ Ø�K‰Kœ	 &¨¡)§-¡-°fÔ=×KÑKÈCÐ_cÐKÓdÔeÜ! $§(¡(¨D°$·)±)Ó<ˆØ×ÒÜØ—‘˜#˜t T×%5Ñ%5×%HÑ%HÈÓ%MØ 4§9¡9°dô<ˆDð ˆrU   c                 ó&  — g }| j                   D ]q  }|j                  rR|j                  j                  r<|j                  j                  s&|j                  |j                  j                   «       Œa|j                  |«       Œs || j                   d d  y rN   )r—   r�   rÖ  r�   r°   r  r  r?	  s      rT   rN	  z"SequenceNode._flatten_starred_args%!  sc   € ØˆØ—9”9ˆCØ�~Š~ #§*¡*×"DÒ"DÈSÏZÉZ×McÒMcØ—‘˜CŸJ™JŸO™OÕ,à—‘˜CÕ ð	 ð
 ˆ�	‰	‘!‰rU   c                  ó   — yr’  rW   rX   s    rT   rZ  zSequenceNode.may_be_none.!  r­  rU   c                 ó¦  — | j                   rt        | j                  d«       g | _        g | _        d| _        t        | j                  «      D ]ö  \  }}|j                  |«      x}| j                  |<   |j                  rR|j                  j                  t        «      st        |j                  d«       |j                  t        u rt        |_
        t        | j                  |«      }|j                  |j                  |«      }||urd| _        | j                  j!                  |«       | j                  j!                  |«       Œø t        | _
        | S )Nz#can't assign to multiplied sequenceFz2starred target must have Python object (list) typeT)r°   r   r†   Úunpacked_itemsÚcoerced_unpacked_itemsÚany_coerced_itemsr¢  r—   r`  r�   r­   r  r   r   r�  r  r  )rY   rv   r¬  r�   Úunpacked_itemÚcoerced_unpacked_items         rT   r`  z!SequenceNode.analyse_target_types1!  s  € Ø×ÒÜ�$—(‘(ÐAÔBØ ˆÔØ&(ˆÔ#Ø!&ˆÔÜ §	¡	Ö*‰FˆAˆsØ!$×!9Ñ!9¸#Ó!>Ð>ˆC�$—)‘)˜A‘,Ø�~Š~Ø—x‘x×/Ñ/´	Ô:Ü˜#Ÿ'™'ØNôPà—8‘8œ~Ñ-Ü(�C”HÜ& t§x¡x°Ó5ˆMØ$1×$;Ñ$;¸C¿H¹HÀcÓ$JÐ!ØÐ$9Ñ9Ø)-�Ô&Ø×Ñ×&Ñ& }Ô5Ø×'Ñ'×.Ñ.Ð/DÕEð +ô #ˆŒ	ØˆrU   c                 ó&   — | j                  |«       y rN   ©Úgenerate_operation_coder³  s     rT   r¾  z!SequenceNode.generate_result_codeH!  ó   € Ø×$Ñ$ TÕ*rU   c                 ó6
  — |€| j                  «       }dx}}d }| j                  r“|s‘| j                  }|j                  j                  ro|j                  «       }t	        |j
                  t        «      r|j
                  dkD  rd|j
                  z  }n&|j                  j                  r
d|›d|›d�}nd|›d�}| j                  t        u s| j                  t        u rý| j                  s| j                  rå|sãt        | j                  «      dkD  rË| j                  t        u r2d}|j                  j                  t!        j"                  d	d
«      «       nd}|j%                  d||t        | j                  «      dj'                  d„ | j                  D «       «      |j)                  || j*                  «      fz  «       |j-                  |t.        «       d| _        �nV| j                  j2                  rGt5        | j                  «      D ]-  \  }}	|j%                  |›d|›d|	j                  «       ›d�«       Œ/ �nù| j                  t        u rd\  }
}n0| j                  t        u rd\  }
}nt7        d| j                  z  «      ‚t        | j                  «      }|j%                  |›d|
›d|›|›d|j)                  || j*                  «      ›�«       |j-                  |t.        «       |rYt8        j:                  }|j%                  d|z  «       |dk(  r|}n|›d|›�}|j%                  d|›d|›d|›d|›d�	«       d| _        nd}t=        |«      D ]¿  }| j                  |   }	|s|	j?                  «       s.|jA                  |	j                  «       |	jC                  «       «       |	jE                  |«       |j%                  d |›d|›d|xr |xr |›d!|›�xs |xs |›d|	jG                  «       ›d"|jI                  | j*                  «      ›d�«       ŒÁ |r"|j%                  d#«       |j%                  d#«       |�é|j                  jJ                  rÒ|j%                  d$t8        j:                  ›d%|›d|jG                  «       ›d|j)                  t8        j:                  | j*                  «      ›�«       |j-                  t8        j:                  t.        «       |jM                  |t.        «       |j%                  |›dt8        j:                  ›d�«       |j%                  d#«       y y y )&Nrù  r   z * %sz * ((z<0) ? 0:r¢  z * (Ú__Pyx_PyList_PackÚListPackr6  ÚPyTuple_Packz%s = %s(%d, %s); %sr1  c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrN   rR  rŽ   s     rT   ri   z>SequenceNode.generate_sequence_packing_code.<locals>.<genexpr>m!  s   è ø€ Ð?±Y¨c˜#Ÿ-™-Ÿ/±YùrŸ  Trb  rS  rT  )Ú
PyList_NewÚ__Pyx_PyList_SET_ITEM)ÚPyTuple_NewÚ__Pyx_PyTuple_SET_ITEMz'sequence packing for unexpected type %srR  r¥  z{ Py_ssize_t %s;r,   r—  zfor (z=0; z < r¡  z++) {r  rš  z
) != (0)) rÕ   z{ PyObject* z = PyNumber_InPlaceMultiply()'r  r°   r­   r  r‚   rƒ   r„   r,  r   r   r¯   rD	  r“   r—   rÇ   rÈ   r   rÉ   rÊ   r£  rÖ   r†   ré  r   Úneeds_subexpr_disposalrI  r¢  r   r   r  r•  r›  r²  r*  rò  rÛ   rÙ   rs   r#	  )rY   rÌ   rÖ  ÚplainÚsize_factorÚc_multr°   Ú	pack_namer¬  r�   Úcreate_funcÚset_item_funcÚ	arg_countÚcounterÚoffsets                  rT   Úgenerate_sequence_packing_codez+SequenceNode.generate_sequence_packing_codeK!  s  € Øˆ>Ø—[‘[“]ˆFØ!Ð!ˆ�fØˆà×Ò¡EØ×*Ñ*ˆKØ×Ñ×&Ò&Ø$×+Ñ+Ó-�Ü˜{×:Ñ:¼CÔ@Ø#×3Ñ3°aÒ7Ø")¨K×,GÑ,GÑ"G‘KØ ×%Ñ%×,Ó,Ú:@Â&Ð"I‘Kð -ò 06Ð"7�Kà�Y‰Yœ*Ñ$¨¯	©	´YÑ(>Ø—’ D§I¢IÙÜ�D—I‘I“ Ò"à�y‰yœIÑ%Ø/�	Ø× Ñ ×1Ñ1Ü×+Ñ+¨JÐ8JÓKõð +�	Ø�J‰JÐ,ØØÜ�D—I‘I“Ø—	‘	Ñ?°T·Y²YÓ?Ó?Ø×'Ñ'¨°·±Ó9ð0;ñ ;ô <ð �O‰O˜F¤NÔ3Ø*.ˆDÖ'Ø�Y‰Y× Ò Ü# D§I¡IÖ.‘��3Ø—
‘
ÚšA˜sŸz™z�|ð-õ .ò /ð
 �y‰yœIÑ%Ø-RÑ*�™]Ø—‘œjÑ(Ø-TÑ*�™]ä#Ð$MÐPT×PYÑPYÑ$YÓZÐZÜ˜DŸI™I›ˆIØ�J‰JÚš¡Y²Ø×'Ñ'¨°·±Ô9ð;ô <ð �O‰O˜F¤NÔ3áô !×1Ñ1�Ø—
‘
Ð-°Ñ7Ô8Ø ’>Ø$‘Fâ*1±9Ð=�FØ—
’
ÚšW¢fªgðô ð /3�Õ+à�ä˜9Ö%�Ø—i‘i ‘l�Ù ×!3Ñ!3Ô!5Ø—O‘O C§J¡J£L°#·)±)³+Ô>Ø×$Ñ$ TÔ*Ø—
’
Ú!ÚØ’\ Ò@²V¹QÐ(?ÒQÀVÂ[ÈqÑQØ—M‘M•OØ—O‘O D§H¡HÕ-ð/õ 0ð &ñ Ø—
‘
˜3”à—
‘
˜3”àÐ" {×'7Ñ'7×'CÒ'CØ�JŠJÜ×'Ó'ª°×1FÑ1FÕ1HØ×'Ñ'¬×(?Ñ(?ÀÇÁÔJðô ð �O‰OœF×3Ñ3´^ÔDØ�O‰O˜F¤NÔ3Ø�J‰J¢V¬V×-DÓ-DÐEÔFØ�J‰J�s�Oð (DÐ"rU   c                 óÒ   •— | j                   rt        ‰| �	  |«       y | j                  D ]  }|j	                  |«       Œ | j
                  r| j
                  j                  |«       y y rN   )rg	  rP   rÁ  r—   rÏ  r°   rË  )rY   rÌ   r�   rS   s      €rT   rÁ  z+SequenceNode.generate_subexpr_disposal_code±!  s[   ø€ Ø×&Ò&Ü‰GÑ2°4Õ8ð
 —y”y�Ø×1Ñ1°$Õ7ð !ð ×ÒØ× Ñ ×7Ñ7¸Õ=ð  rU   c                 óÌ   — | j                   r| j                  ||«       n| j                  ||«       | j                  D ]  }|j	                  |«       Œ |j                  |«       y rN   )r>	  Ú generate_starred_assignment_codeÚ!generate_parallel_assignment_coderU	  r|  rØ  )rY   r”   rÌ   rÑ  rà   rÀ   r§   s          rT   rÒ  z%SequenceNode.generate_assignment_code¿!  sS   € à×"Ò"Ø×1Ñ1°#°tÕ<à×2Ñ2°3¸Ô=à×'Ô'ˆDØ�L‰L˜Õð (à�‰�tÕrU   râ  c                 ó”  — | j                   D ]  }|j                  |«       Œ |j                  t        u xs1 |j                  t        t
        fv xs |j                  j                   }t        | j                   «      dkD  }|r| j                  |||¬«       nA|j                  d«       | j                  ||| j                   |¬«       |j                  d«       | j                  D ]  }|j                  |«       Œ t        t        | j                  «      «      D ].  }| j                  |   j                  | j                  |   |«       Œ0 y )Né   ©Úuse_looprœ  rÕ   )rU	  rz  r­   r   r   r   r¿  r“   Ú(generate_special_parallel_unpacking_coderÊ   Ú(generate_generic_parallel_unpacking_coderV	  rÃ  r•  r—   rÒ  )rY   r”   rÌ   r§   Úspecial_unpackÚlong_enough_for_a_loopÚ
value_noder¬  s           rT   ru	  z.SequenceNode.generate_parallel_assignment_codeÏ!  s)  € ð ×'Ô'ˆDØ�M‰M˜$Õð (àŸ(™(¤nÐ4ò :Ø ŸX™X¬*´iÐ)@Ð@ò:à!$§¡×!9Ñ!9Ð9ð 	ô "% T×%8Ñ%8Ó!9¸AÑ!=ÐáØ×9Ñ9Ø�cÐ$:ð :õ <ð �J‰J�sŒOØ×9Ñ9Ø�c˜4×.Ñ.Ð9Oð :ô Qà�J‰J�sŒOà×5Ô5ˆJØ×/Ñ/°Õ5ð 6ä”s˜4Ÿ9™9“~Ö&ˆAØ�I‰I�a‰L×1Ñ1Ø×+Ñ+¨AÑ.°õ6ñ 'rU   c                 ó¶  — d}d|j                  «       z  }|j                  t        u rdg}d}|j                  «       rb|}n_|j                  t        u rdg}d}|j                  «       r8|}n5ddg}d}d|j                  «       z  }d	|j                  «       z  }	d
|›d|	›d�}|j                  d|z  «       |j                  d|j                  «       z  «       |j                  d|z  «       |j                  dt        | j                  «      z  «       |j                  j                  t        j                  dd«      «       |j                  dt        | j                  «      t        | j                  «      fz  «       |j                  j                  t        j                  dd«      «       |j                  d«       |j                  |j                  | j                  «      «       |j                  d«       |j                  d«       t        |«      dk(  r|j                  d|d   z  «       t        | j                  «      D ]ÿ  \  }
}|d   dk(  rž|j                  |j!                  «       › d|
› d| j#                  «       › d�«       |j                  |j%                  |j!                  «       | j                  «      «       |j'                  |j!                  «       |j)                  «       «       Œ¬|j                  |j!                  «       › d|
› d�«       |j+                  |j!                  «       |j)                  «       «       �Œ t        |«      dk(  �r9|j                  d«       t        | j                  «      D ]ÿ  \  }
}|d    dk(  rž|j                  |j!                  «       › d|
› d| j#                  «       › d�«       |j                  |j%                  |j!                  «       | j                  «      «       |j'                  |j!                  «       |j)                  «       «       Œ¬|j                  |j!                  «       › d|
› d�«       |j+                  |j!                  «       |j)                  «       «       �Œ |j                  d«       |j                  d!«       |s–t        | j                  «      D ]|  \  }
}|j                  d"|j!                  «       |
|j%                  |j!                  «       | j                  «      fz  «       |j-                  |j!                  «       |j                  «       Œ~ �n#|j                  d#«       |j                  d$«       |j                  d%t        | j                  «      ›d&d'j/                  | j                  D �cg c]  }d(|j!                  «       z  ‘Œ c}«      ›d)�«       |j                  d*t        | j                  «      z  «       |j                  d+|j%                  d,| j                  «      z  «       |j-                  d,t0        «       |j                  d-«       |j                  d«       |j                  d«       |j                  d.«       |j3                  |«       |dk(  r|j                  d«       y ||k(  r|j                  d«       |j                  j                  t        j                  d/d«      «       |j                  d0|j                  | j                  «      z  «       |j                  d«       y |j                  d«       | j5                  ||| j                  |¬1«       |j                  d«       y c c}w )2Nrß  zlikely(%s != Py_None)r  rí  r  rî  Ú__Pyx_PySequence_SIZEzlikely(PyTuple_CheckExact(%s))zPyList_CheckExact(%s)rR  z) || (r¢  r]  zPyObject* sequence = %s;zPy_ssize_t size = %s(sequence);zif (unlikely(size != %d)) {ÚRaiseTooManyValuesToUnpackr6  z1if (size > %d) __Pyx_RaiseTooManyValuesError(%d);ÚRaiseNeedMoreValuesToUnpackz9else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);rÕ   r	  r7   z(if (likely(Py%s_CheckExact(sequence))) {r   z) = __Pyx_PyList_GetItemRefFast(sequence, r1  r2  z = PyTuple_GET_ITEM(sequence, rò  r,   r  z,%s = __Pyx_PySequence_ITEM(sequence, %d); %srœ  zPy_ssize_t i;úPyObject** temps[rT  r�  r_  rX  zfor (i=0; i < %s; i++) {z7PyObject* item = __Pyx_PySequence_ITEM(sequence, i); %sr§   z*(temps[i]) = item;rð  ÚRaiseNoneIterErrorz%__Pyx_RaiseNoneNotIterableError(); %srx	  )rÛ   r­   r   rZ  r   rÊ   r“   r—   rÇ   rÈ   r   rÉ   rÙ   r†   r¢  rU	  r  rR  rÖ   rî  r*  r²  ré  r£  r   rË  r{	  )rY   rÌ   r”   ry	  Úsequence_type_testÚ
none_checkr6   Úget_size_funcÚtuple_checkÚ
list_checkr¬  r§   s               rT   rz	  z5SequenceNode.generate_special_parallel_unpacking_codeé!  sè  € Ø ÐØ,¨s¯}©}«Ñ>ˆ
Ø�8‰8”yÑ Ø$˜XˆNØ3ˆMØ�‰Ô Ø%/Ñ"Ø�X‰XœÑ#Ø%˜YˆNØ4ˆMØ�‰Ô Ø%/Ñ"à% vÐ.ˆNØ3ˆMØ:¸S¿]¹]»_ÑLˆKØ1°C·M±M³OÑC‰JÚ3>Â
Ð!KÐà�
‰
�;Ð!3Ñ3Ô4Ø�
‰
Ð-°·±³Ñ?Ô@ð 	�
‰
Ð4°}ÑDÔEØ�
‰
Ð0´3°t·y±y³>ÑAÔBØ×Ñ×)Ñ)Ü×#Ñ#Ð$@ÐBTÓUô	Wà�
‰
ÐFÜ�—	‘	‹NœC §	¡	›NðJ,ñ ,ô 	-à×Ñ×)Ñ)Ü×#Ñ#Ð$AÐCUÓVô	Xà�
‰
ÐNÔOà�
‰
�4—?‘? 4§8¡8Ó,Ô-Ø�
‰
�3Œà�
‰
ÐQÔRäˆ~Ó !Ò#Ø�J‰JÐAÀNÐSTÑDUÑUÔVÜ  ×!4Ñ!4Ö5‰GˆAˆtØ˜aÑ  FÒ*Ø—
‘
˜dŸk™k›m˜_ð -)Ø)*¨¨2¨d×.GÑ.GÓ.IÐ-JÈ"ðNô Oà—
‘
˜4×2Ñ2°4·;±;³=À$Ç(Á(ÓKÔLØ× Ñ  §¡£°·
±
³Õ=à—
‘
˜dŸk™k›m˜_Ð,JÈ1È#ÈRÐPÔQØ—‘ §¡£¨t¯z©z«|Ö<ð 6ô ˆ~Ó !Ó#Ø�J‰J�zÔ"Ü$ T×%8Ñ%8Ö9‘��4Ø! !Ñ$¨Ò.Ø—J‘J $§+¡+£- Ð0YÐZ[ÐY\Ð\^Ð_c×_xÑ_xÓ_zÐ^{Ð{}Ð~ÔØ—J‘J˜t×6Ñ6°t·{±{³}ÀdÇhÁhÓOÔPØ×$Ñ$ T§[¡[£]°D·J±J³LÕAà—J‘J $§+¡+£- Ð0NÈqÈcÐQSÐTÔUØ—O‘O D§K¡K£M°4·:±:³<Ö@ð :ð �J‰J�sŒOà�
‰
�7ÔáÜ$ T×%8Ñ%8Ö9‘��4Ø—
‘
ÐIØ—K‘K“M 1Ø×+Ñ+¨D¯K©K«M¸4¿8¹8ÓDðMFñ Fô Gð —‘ §¡£¨t¯y©yÕ9ò	 :ð �J‰J�sŒOØ�J‰J�Ô'Ø�JŠJÜ�D×'Ñ'Õ(Ø—‘¸D×<OÒ<OÓPÑ<O°D˜% $§+¡+£-Ó/Ð<OÑPÕQðSô Tð �J‰JÐ1´C¸×8KÑ8KÓ4LÑLÔMØ�J‰JÐPØ×'Ñ'¨°·±Ó9ñ;ô <à�O‰O˜F¤NÔ3Ø�J‰JÐ,Ô-Ø�J‰J�sŒOØ�J‰J�sŒOà�
‰
�8ÔØ×"Ñ" 4Ô(à Ò$Ø�J‰J�s�OØ :Ò-à�J‰J�zÔ"Ø×Ñ×-Ñ-Ü×'Ñ'Ð(<Ð>PÓQôSà�J‰JÐ>ÀÇÁÐQU×QYÑQYÓAZÑZÔ[Ø�J‰J�s�Oà�J‰J�zÔ"Ø×9Ñ9Ø�c˜4×.Ñ.¸ð :ô Cà�J‰J�s�Oùò3 Qs   Ö]c                 ó   — |j                   j                  t        j                  dd«      «       |j                   j                  t        j                  dd«      «       |j	                  d«       |rY|j	                  dt        | j                  «      ›ddj                  |D �cg c]  }d|j                  «       z  ‘Œ c}«      ›d	�«       |j                  j                  t        d
¬«      }|j	                  |›d|j                  «       ›d|j                  || j                  «      ›�«       |j                  |t        «       |j!                  |«       |j                  j                  | j"                  d¬«      }|j	                  |› d|› d�«       |j%                  d«      }	|›d|›d�}
|r{|j	                  dt        |«      z  «       |j'                  d|
z  «       |j)                  |	«       |j                  dt        «       |j	                  d«       |j	                  d«       nit+        |«      D ][  \  }}|j'                  d||j                  «       |
|j                  «       fz  «       |j)                  |	«       |j-                  |«       Œ] |rƒ|j                   j                  t        j                  dd«      «       |j/                  | j                  d|
t        |«      fz  «       |j	                  d|z  «       |j1                  |t        «       |j%                  d«      }|j)                  |«       |j3                  |	«       |j1                  |t        «       |j	                  d|z  «       |j	                  d«       |j	                  |j5                  | j                  «      «       |j3                  |«       |j                  j7                  |«       |r|j                  j7                  |«       d }|S c c}w )Nr‚	  r6  Ú
IterFinishzPy_ssize_t index = -1;rƒ	  rT  r�  r_  rX  Tr¡  ró  r¥  Frô  r2  Úunpacking_failedrR  r¢  z$for (index=0; index < %s; index++) {z*PyObject* item = %s; if (unlikely(!item)) r§   z*(temps[index]) = item;rÕ   z(index = %d; %s = %s; if (unlikely(!%s)) ÚUnpackItemEndCheckz$__Pyx_IternextUnpackEndCheck(%s, %d)rñ  Úunpacking_donezCif (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);)rÇ   rÈ   r   rÉ   rÊ   r“   rU	  r£  r  r¦  r§  r   rÛ   rÖ   r†   ré  rË  rø  rÇ  rú  rÈ  r¢  rì  r‹  rÊ  rÍ  rÙ   r¯  )rY   rÌ   r”   rU	  ry	  Ú	terminater§   Úiterator_tempÚiternext_funcÚunpacking_error_labelÚunpack_coder¬  Úunpacking_done_labels                rT   r{	  z5SequenceNode.generate_generic_parallel_unpacking_codeO"  sf  € Ø×Ñ×)Ñ)Ü×#Ñ#Ð$AÐCUÓVô	Xà×Ñ×)Ñ)Ü×#Ñ# LÐ2DÓEô	Gà�
‰
Ð+Ô,áØ�JŠJÜ�D×'Ñ'Õ(Ø—‘¹NÓK¹N°D˜% $§+¡+£-Ó/¸NÑKÕLðNô Oð Ÿ™×4Ñ4´^ÐPTÐ4ÓUˆØ�
‰
âØ—‘•Ø×'Ñ'¨°t·x±xÔ@ðBô	Cð
 	�‰˜¤~Ô6Ø×"Ñ" 4Ô(àŸ™×4Ñ4°T×5MÑ5MÐZ_Ð4Ó`ˆØ�
‰
Øˆoð <Ø<I¸?È"ðNô	
ð
 !%§¡Ð/AÓ BÐÚ"/²Ð?ˆÙØ�J‰JÐ=ÄÀNÓ@SÑSÔTØ�H‰HÐAÀKÑOÔPØ�M‰MÐ/Ô0Ø�O‰O˜F¤NÔ3Ø�J‰JÐ0Ô1Ø�J‰J�s�Oä$ ^Ö4‘��4Ø—‘Ø>ØØŸ™›Ø#ØŸ™›ð	B'ñ 'ô(ð —‘Ð3Ô4Ø×$Ñ$ TÕ*ð 5ñ Ø×Ñ×-Ñ-Ü×'Ñ'Ð(<Ð>PÓQôSà×!Ñ! $§(¡(Ð,RØÜ�NÓ#ðV%ñ -%ô &ð �J‰J�| mÑ3Ô4Ø×!Ñ! -´Ô@à#Ÿ~™~Ð.>Ó?ÐØ�‰Ð*Ô+à�‰Ð,Ô-Ø×Ñ˜m¬^Ô<Ø�
‰
�< -Ñ/Ô0Ø�
‰
ÐXÔYØ�
‰
�4—?‘? 4§8¡8Ó,Ô-Ø�‰Ð+Ô,à�‰×#Ñ# MÔ2ÙØ�N‰N×'Ñ'¨Ô6Ø ˆMàÐùò{ Ls   Â#O;c                 ó2
  — t        | j                  «      D ]C  \  }}|j                  sŒ| j                  |   }| j                  d | }| j                  |dz   d  } n J ‚d }|rƒ|D ]  }	|	j	                  |«       Œ |j                  d«       | j                  |||dd¬«      }t        |«      D ]%  \  }}	| j                  |   }
|
j                  |«       Œ' |j                  d«       |j	                  |«       |j                  «       }|j                  |›d|s*|j                  «       r|j                  t        t        fv rdnd	›d
|xs |j                  «       ›d|j                  || j                   «      ›�«       |j#                  |«       |r2|j%                  |t        «       |j&                  j)                  |«       n|j+                  |«       |�r	|j,                  j/                  t1        j2                  dd«      «       |j&                  j5                  t6        j8                  d¬«      }|j                  |›d|›d�«       |j                  d|t;        |«      fz  «       |j                  dt;        |«      ||j=                  | j                   «      fz  «       |j                  d«       |d d d…   D ]  }	|	j	                  |«       Œ t        t?        |d d d…   | j                  d d d…   «      «      D ]Ã  \  }\  }	}|j                  d«       |j                  d|	j                  «       |||dz   fz  «       |j                  d|z  «       |j                  d«       |j                  d|	j                  «       |||dz   fz  «       |j                  d«       |	j#                  |«       |j                  |«       ŒÅ |j                  d«       |j&                  j5                  t        d¬«      }|j                  d|||t;        |«      |j                  || j                   «      fz  «       |jA                  |t        «       |j&                  j)                  |«       |jC                  |t        «       |j                  |›d|›d|›d�«       |j                  d«       |j                  d|z  «       |j&                  j)                  |«       |j                  d«       t        | j                  «      D ]$  \  }}|jE                  | j                  |   |«       Œ& y )Nr,   Frœ  T)ry	  r�	  rÕ   rS  Ú__Pyx_PySequence_ListKeepNewÚPySequence_ListrR  r¥  r‚	  r6  r¡  z = __Pyx_PyList_GET_SIZE(r2  zif (unlikely(%s < %d)) {z)__Pyx_RaiseNeedMoreValuesError(%d+%s); %sr�  z#if CYTHON_COMPILING_IN_CPYTHONz!%s = PyList_GET_ITEM(%s, %s-%d); z((PyVarObject*)%s)->ob_size--;r  z'%s = __Pyx_PySequence_ITEM(%s, %s-%d); rð  z #if !CYTHON_COMPILING_IN_CPYTHONz*%s = PySequence_GetSlice(%s, 0, %s-%d); %sr¡  r-  zCYTHON_UNUSED_VAR(%s);)#r¢  r—   r�   rU	  rz  rÊ   r{	  rV	  rÃ  r  r›  r­   r   r   rÛ   rÖ   r†   rì  rÊ  r¦  r¯  rË  rÇ   rÈ   r   rÉ   r§  r   rM  r“   rÙ   rÊ  ré  r#	  rÒ  )rY   r”   rÌ   r¬  r�   Ústarred_targetÚunpacked_fixed_items_leftÚunpacked_fixed_items_rightr�	  r§   r~	  Útarget_listÚlength_tempÚcoerced_argÚsublist_temps                  rT   rt	  z-SequenceNode.generate_starred_assignment_code˜"  sª  € Ü §	¡	Ö*‰FˆAˆsØ�~‹~Ø!%×!4Ñ!4°QÑ!7�Ø-1×-@Ñ-@ÀÀ!Ð-DÐ)Ø-1×-@Ñ-@ÀÀ1ÁÀÐ-FÐ*Ùð +ð �5àˆÙ$Û1�Ø—‘˜dÕ#ð 2à�J‰J�sŒOØ ×IÑIØ�cÐ4Ø¨ð Jó 0ˆMô %Ð%>Ö?‘��4Ø!×8Ñ8¸Ñ;�
Ø×3Ñ3°DÕ9ð @ð �J‰J�sŒOà×Ñ Ô%Ø$×+Ñ+Ó-ˆØ�
‰
Úá%¨#×*<Ñ*<Ô*>À3Ç8Á8ÔP^Ô`iÐOjÑCjñ +à&ñ'ð Ò,˜SŸ]™]›_Ñ,Ø×#Ñ# K°·±Ô:ð<ô 	=ð 	×&Ñ& tÔ,áØ×!Ñ! -´Ô@Ø�N‰N×'Ñ'¨Õ6à×&Ñ& tÔ,â%Ø×Ñ×-Ñ-Ü×'Ñ'Ð(EÐGYÓZô\àŸ.™.×6Ñ6´z×7SÑ7SÐ`eÐ6ÓfˆKØ�J‰JºKÊÐUÔVØ�J‰JÐ1°[Ä#ÐF`ÓBaÐ4bÑbÔcØ�J‰JÐBÜÐ.Ó/°Ø—‘ §¡Ó*ðF,ñ ,ô -ð �J‰J�sŒOà2±4°R°4Ô8�Ø—‘˜dÕ#ð 9ä*3´CÐ8RÑSWÐUWÐSWÑ8XØ8<×8SÑ8SÑTXÐVXÐTXÑ8Yó5[ö +\Ñ&�Ñ&�D˜+à—
‘
Ð<Ô=Ø—
‘
Ð>Ø—N‘NÓ$ k°;ÀÀ!ÁðBEñ Eô Fð —
‘
Ð;¸kÑIÔJØ—
‘
˜7Ô#Ø—
‘
ÐDØ—N‘NÓ$ k°;ÀÀ!ÁðHEñ Eô Fà—
‘
˜8Ô$Ø×$Ñ$ TÔ*Ø×4Ñ4°TÕ:ð+\ð �J‰JÐ9Ô:ØŸ>™>×7Ñ7¼ÐSWÐ7ÓXˆLØ�J‰JÐCØ˜k¨;¼Ð<VÓ8WØ×'Ñ'¨°d·h±hÓ?ðGAñ Aô Bð �O‰O˜L¬.Ô9Ø�N‰N×'Ñ'¨Ô4Ø�O‰O˜K¬Ô8Ø�J‰J²º\Ê<ÐXÔYØ�J‰J�wÔØ�J‰JÐ/°,Ñ>Ô?Ø�N‰N×'Ñ'¨Ô5Ø�J‰J�xÔ ä §	¡	Ö*‰FˆAˆsØ×(Ñ(¨×)DÑ)DÀQÑ)GÈÕNñ +rU   c                 óê   — | j                   D ]  }|j                  |«       Œ | j                  rE| j                  D ]  }|j                  |«       Œ | j                  D ]  }|j                  |«       Œ y y rN   )r—   r÷  rU	  rV	  ©rY   rÌ   r�   s      rT   r÷  zSequenceNode.annotateì"  sb   € Ø—9”9ˆCØ�L‰L˜Õð à×ÒØ×*Ô*�Ø—‘˜TÕ"ð +à×2Ô2�Ø—‘˜TÕ"ñ 3ð rU   rj  r’  rl  r•  )"r[   r\   r]   ró   r�   rU	  r°   rD	  rg	  r<	  r@	  rT  rX  rH	  rQ	  rN	  rZ  r`  r¾  rq	  rÁ  rÒ  r   rÁ  rB  r   r  rø  ru	  rz	  r{	  rt	  r÷  r^   r_   s   @rT   r:	  r:	  Ä   sæ   ø„ ð ˜Ð&€HàÐØ€NØ€KØ€DØ"Ðò
Còò0ó
ò$Sòò0òòò.+ódôL>ð INØGKó	ð .˜*×-Ñ-Ð.B¨j×.BÑ.BØ×!Ñ!Ø#ˆJ×#Ñ# D¨*×*CÑ*CÀTÓJð$ó/ó Ðò
6ò4dóLGòRROöh#rU   r:	  c                   ó\   — e Zd ZeZdZdZd„ Zdd„Zd„ Z	d„ Z
d„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zy)rF  Fr¡  c                 ó  — | j                   s| j                  st        S | j                  D �cg c]  }|j                  |«      ‘Œ }}t	        d„ |D «       «      rt        S |j                  | j                  |«      j                  S c c}w )Nc              3   óˆ   K  — | ]:  }|j                   xs( |j                  xs |j                  xs |j                  –— Œ< y ­wrN   )rs   r  rº  r‚  )rf   r­   s     rT   ri   z'TupleNode.infer_type.<locals>.<genexpr>#  sC   è ø€ ð &Ù$�4ð ×ÑÒb 4×#:Ñ#:Òb¸d×>QÑ>QÒbÐUY×UbÑUbÓbÙ$ùs   ‚A A)r°   r—   r   r‘   ro   rÙ  r†   r­   )rY   rv   r�   rŒ  s       rT   r‘   zTupleNode.infer_typeþ"  su   € Ø×Ò 4§9¢9ÜÐØ48·I²IÓ>±I¨S�S—^‘^ CÕ(°Iˆ	Ð>Üñ &Ù$ó&ô &äÐØ×%Ñ% d§h¡h°	Ó:×?Ñ?Ð?ùò	 ?s   ­Bc                 óN  — | j                   rd| _         | j                  rd| _        t        | j                  «      dk(  rd| _        d| _         | S |sNt        | j                  «      D ]6  \  }}|j                  rd|_        |j                  |«      | j                  |<   Œ8 | j                  sat        d„ | j                  D «       «      sE|j                  | j                  d„ | j                  D «       «      j                  | _        d| _        | S t        j                  | |d¬«      }|j                  |«      }|j                   s|S t#        d„ |j                  D «       «      s|S |j                  r:|j                  j                   r4t%        |j                  j&                  t(        «      rd|_        d|_         |S |j                  j                  j*                  s@|j                  j                  j,                  s |j                  j/                  |«      |_	        d|_        d|_        |S )	NFr   Tc              3   óÄ   K  — | ]X  }|j                   xsF |j                  j                  xs. |j                  j                  xs |j                  j                  –— ŒZ y ­wrN   )r�   r­   rs   r  r‚  rŽ   s     rT   ri   z*TupleNode.analyse_types.<locals>.<genexpr>#  sO   è ø€ ð .Ù#,˜Cð Ÿ™Òs¨3¯8©8×+?Ñ+?ÒsÀ3Ç8Á8×C^ÑC^ÒsÐbe×bjÑbj×bsÑbsÓsÙ#,ùrá  c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrN   rþ  rŽ   s     rT   ri   z*TupleNode.analyse_types.<locals>.<genexpr>#  s   è ø€ Ð9XÉiÀs¸#¿(½(ÉiùrK	  r,   rL	  c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrN   )r¯   )rf   Úchilds     rT   ri   z*TupleNode.analyse_types.<locals>.<genexpr>$#  s   è ø€ Ð;±¨�5×#Õ#±ùrK	  )r¯   Úis_partly_literalr“   r—   r  r¢  r�   r2	  rX  r°   ro   rÙ  r†   r­   r:	  rQ	  r�   r¡   r‚   rƒ   r„   rs   r  r9  )rY   rv   rE	  r¬  r�   rˆ   s         rT   rX  zTupleNode.analyse_types#  sÄ  € à�?Š?Ø#ˆDŒOØ×!Ò!Ø%*ˆDÔ"äˆt�y‰y‹>˜QÒØ ˆDŒLØ"ˆDŒOØˆKáÜ# D§I¡IÖ.‘��3Ø—>’>Ø48�CÔ1Ø"×0Ñ0°Ó5�—	‘	˜!’ð /ð × Ò Üñ .Ø#'§9¢9ó.ô .à×.Ñ.¨t¯x©xÑ9XÈdÏiÊiÓ9XÓY×^Ñ^ˆDŒIØˆDŒLØˆKä×)Ñ)¨$°À4Ð)ÓHˆØ×3Ñ3°CÓ8ˆØ×+Ò+ØˆKäÑ;°·²Ó;Ô;ØˆKØ×ÒØ× Ñ ×+Ò+Ü˜4×+Ñ+×;Ñ;¼SÔAØ ˆDŒLØ"ˆDŒOð ˆð	 ×#Ñ#×(Ñ(×4Ò4¸T×=MÑ=M×=RÑ=R×=YÒ=YØ#'×#3Ñ#3×#FÑ#FÀsÓ#K�Ô ØˆDŒLØ%)ˆDÔ"ØˆrU   c                 óì   — | j                   sy | j                   D �cg c]  }|j                  |«      ‘Œ }}t        d„ |D «       «      ry |j                  | j                  |«      }|j
                  S c c}w )Nc              3   ó$   K  — | ]  }|d u –— Œ
 y ­wrN   rW   )rf   rg   s     rT   ri   z,TupleNode.analyse_as_type.<locals>.<genexpr>7#  s   è ø€ Ð-¡*˜Qˆq�DŒy¡*ùs   ‚)r—   r€  ro   rÙ  r†   r­   )rY   rv   r�   rª   r¾   s        rT   r€  zTupleNode.analyse_as_type2#  sf   € à�yŠyØØ:>¿)º)ÓD¹)°3�c×)Ñ)¨#Õ.¸)ˆ
ÐDÜÑ-¡*Ó-Ô-ØØ×&Ñ& t§x¡x°Ó<ˆØ�z‰zÐùò	 Es   œA1c                 ó`  — | j                   j                  rÓ|j                  r5| j                   j                  |j                  k(  r| j                  ||«      S |t        u s|t
        u ra| j                  D �cg c]  }|j                  |«      ‘Œ }}t        | j                  |t        | j                  d¬«      j                  |d¬«      S | j                  |«      j                  ||«      S |j                  r| j                  s| j                  ||«      S t        j                  | ||«      S c c}w )Nr,   )r—   r­   r°   r  TrL	  )r­   rI  r€  rH	  r   r   r—   r9  rF  r†   r°   rX  r  r:	  )rY   r"  rv   r�   rG	  s        rT   r  zTupleNode.coerce_to<#  s  € Ø�9‰9×ÒØ×!Ò! d§i¡i§n¡n¸¿¹Ò&EØ×,Ñ,¨X°sÓ;Ð;ØœZÑ'¨8´~Ñ+EØGKÇyÂyÓQÁyÀ × 6Ñ 6°sÕ ;Ày�ÐQÜ Ø—H‘HØ%Ü#Ø $× 0Ñ 0Øô÷  ‘- °4�-Ó8ð9ð ×.Ñ.¨sÓ3×=Ñ=¸hÈÓLÐLØ×Ò¨×(8Ò(8Ø×(Ñ(¨°3Ó7Ð7ä×)Ñ)¨$°¸#Ó>Ð>ùò  Rs   Á6D+c                 óÆ   — t        | j                  | j                  | j                  ¬«      }t	        | j
                  t        «      rt        | j
                  «      |_        |S ©N)r—   r°   )rY  r†   r—   r°   r‚   rƒ   rµ   r  ©rY   rg   s     rT   Úas_listzTupleNode.as_listP#  sF   € Ü�T—X‘X D§I¡I¸4×;KÑ;KÔLˆÜ�d×*Ñ*¬EÔ2Ü $ T×%9Ñ%9Ó :ˆAÔØˆrU   c                  ó   — yr·  rW   rX   s    rT   rS  zTupleNode.is_simpleV#  ó   € àrU   c                  ó   — yr·  rW   rX   s    rT   rr  zTupleNode.nonlocally_immutableZ#  r²	  rU   c                 ó   — | j                   S rN   r"  rX   s    rT   r  zTupleNode.calculate_result_code^#  r#  rU   c                 óž   — | j                   r
t        «       ‚t        | j                  D �cg c]  }|j                  ‘Œ c}«      | _        y c c}w rN   )r°   r˜   rµ   r—   rƒ   ©rY   r�   s     rT   r2  z#TupleNode.calculate_constant_resulta#  sF   € Ø×ÒÜ“,ÐÜ$Ø/3¯yªyó&:Ù/8¨�×#Ó#¨yñ&:ó  ;ˆÕùò &:s   ªA
c                 óÄ   — | j                  |«      }| j                  �J | j                  «       ‚	 t        |«      S # t        $ r}| j	                  |«       Y d }~y d }~ww xY wrN   )r<	  r°   rµ   rV  r@  )rY   r;  r�  r?  s       rT   r<  zTupleNode.compile_time_valueg#  s_   € Ø×-Ñ-¨dÓ3ˆØ×ÑÐ'Ð9¨×)9Ñ)9Ó9Ð'ð	-Ü˜“=Ð øÜò 	-Ø×)Ñ)¨!×,Ñ,ûð	-ús   °
; »	AÁAÁAc                 ó"  — t        | j                  «      dk(  r%|j                  t        j                  «      | _        y | j                  s| j                  �rt        | j                  | j                  r| j                  nd g| j                  z   «      }|j                  d|¬«      }|j                  |«      }|�P|j                  | j                  «       | j                  ||| j                   ¬«       |j!                  |t"        «       | j                  r|| _        y | j                  j                  j$                  r«|j&                  j)                  t+        j,                  dd«      «       |j/                  | j1                  «       ›d|›d| j                  j1                  «       ›d	|j3                  | j1                  «       | j                  «      ›�«       | j5                  |«       y |j/                  | j1                  «       ›d
|›d| j                  j7                  «       ›d	|j3                  | j1                  «       | j                  «      ›�«       | j5                  |«       y d| j                  j8                  _        | j                  |«       y )Nr   rµ   rz  )rh	  ÚPySequenceMultiplyr6  z = __Pyx_PySequence_Multiply(r1  r¥  z = PyNumber_Multiply(T)r“   r—   r  r   Úempty_tupler  r¯   r©	  r®   r­   r°   r‰  rŠ  r½  r†   rq	  rñ  r   r  rÇ   rÈ   r   rÉ   rÊ   r  rÖ   rì  rÛ   r¾   r  )rY   rÌ   r{  Útuple_targetr�  s        rT   r\	  z!TupleNode.generate_operation_codeo#  sð  € Üˆt�y‰y‹>˜QÒØ#×8Ñ8¼×9KÑ9KÓLˆDÔØà�?Š?˜d×4Ó4ô ' t§y¡yÀtÇÂ°4×3CÒ3CÐ\`Ð2aÐdh×dmÑdmÑ2mÓnˆIØ×,Ñ,¨WÀ	Ð,ÓJˆLØ×9Ñ9¸,ÓGˆJØÐ%à×#Ñ# D§H¡HÔ-Ø×3Ñ3°JÀÐX\×XgÑXgÐTgÐ3ÔhØ×&Ñ& |´^ÔDØ�ŠØ#/�Õ Ø×!Ñ!×&Ñ&×-Ò-Ø× Ñ ×1Ñ1Ü×+Ñ+Ð,@ÐBTÓUôWà—
‘
Ø—K‘K•M¢<°×1AÑ1A×1HÑ1HÕ1JØ×+Ñ+¨D¯K©K«M¸4¿8¹8ÔDðô ð ×$Ñ$ TÕ*à—
‘
Ø—K‘K•M¢<°×1AÑ1A×1KÑ1KÕ1MØ×+Ñ+¨D¯K©K«M¸4¿8¹8ÔDðô ð ×$Ñ$ TÕ*à#'ˆD�I‰I�O‰OÔ Ø×/Ñ/°Õ5rU   Nrj  )r[   r\   r]   r   r­   r©	  r§  r‘   rX  r€  r  r°	  rS  rr  r  r2  r<  r\	  rW   rU   rT   rF  rF  ö"  sM   „ ð €DØÐà-€Kò@ó)òVò?ò(òòò ò;ò-ó"6rU   rF  c                   ó^   — e Zd Zg ZeZdZdZd„ Zd„ Z	d„ Z
d„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zy)rY  FzConstructing Python listc                  ó   — yr¹  rW   rø   s     rT   rl  zListNode.type_dependencies #  r®  rU   c                 ó   — t         S rN   )r   rø   s     rT   r‘   zListNode.infer_type£#  ó   € äÐrU   c                 óš   — | j                   D ]  }|j                  sŒd|_        Œ t        j	                  | |«      }|j                  |«      S r·  )r—   r�   r2	  r:	  r^  r9  )rY   rv   r�   rˆ   s       rT   r^  zListNode.analyse_expressions§#  sD   € Ø—9”9ˆCØ�~‹~Ø04�Õ-ð ô ×/Ñ/°°cÓ:ˆØ×&Ñ& sÓ+Ð+rU   c                 óþ   — t        d¬«      5 }t        | j                  «      | _        t        j                  | |«      }d d d «       _        |j                  rd| _        |j                  |«      }|S # 1 sw Y   Œ6xY w©NTr>  )
r   r  r—   Úoriginal_argsr:	  rX  Úobj_conversion_errorsr×  r[  rQ	  )rY   rv   Úerrorsrˆ   s       rT   rX  zListNode.analyse_types®#  sl   € Ü Õ&¨&Ü!% d§i¡i£ˆDÔÜ×-Ñ-¨d°CÓ8ˆD÷ 'ð &,ˆÔ"Ø×ÒØ#'ˆDÔ Ø×3Ñ3°CÓ8ˆØˆ÷ 'Ð&ús   �1A3Á3A<c                 óæ  — |j                   rY| j                  D ]  }t        |«       Œ g | _        | j                  j	                  |«      st        | j                  d|z  «       | S |j                  s|j                  �r^|j                  t        j                  u�rAt        | j                  «      }| j                  rŠt        | j                  j                   t"        «      rM| j                  j                   dk  rt        | j                  d|z  «       n3|| j                  j                   z  }nt        | j                  d|z  «       |j                  }t        j$                  ||«      | _        t'        t        | j(                  «      «      D ]L  }| j                  |   }t        |t*        «      r|j,                  }|j/                  ||«      | j                  |<   ŒN | S |j0                  r6t3        | j                  | t        j4                  ¬«      j/                  ||«      S | j                  rt        | j                  d|z  «       | S |j6                  �r\t        | j                  «      t        |j8                  j:                  «      kD  rt        | j                  d|z  «       �nt        | j                  «      t        |j8                  j:                  «      k  rt=        | j                  d|z  d	«       t?        tA        | j(                  | j                  |j8                  j:                  «      «      D ]s  \  }\  }}}	t        |t*        «      r|j,                  }n$|	j                  jB                  r|jD                  r|}|j/                  |	j                  |«      | j                  |<   Œu || _        | S |jF                  r| jI                  ||«      S tJ        | _        t        | j                  d|z  «       | S )
NzCannot coerce list to type '%s'r   z4Cannot coerce non-positively multiplied list to '%s'z1Cannot coerce dynamically multiplied list to '%s')r·  r­   z%Cannot coerce multiplied list to '%s'zToo many members for '%s'zToo few members for '%s'r,   )&rs   rÄ	  r   r­   r  r   r†   rp  r  r  r   Úc_void_typer“   r—   r°   r‚   rƒ   r„   rú  r•  rÃ	  r  r�   r  r  ÚTypecastNoder   r	  rN  rÀ  r   r¢  rÊ  r‰  rr  rI  rH	  r3   )
rY   r"  rv   rw   r\  r  r¬  r�   r�	  rŸ  s
             rT   r  zListNode.coerce_to¸#  s  € Ø×ÒØ×1Ô1�Ü˜SÕ!ð 2à)+ˆDÔ&Ø—9‘9×'Ñ'¨Ô1Ü�d—h‘hÐ AÀHÑ LÔMðT ˆðS ×Ò 8§?£?¸×8JÑ8JÔR\×RhÑRhÒ8hÜ˜tŸy™y›>ˆLØ×ÒÜ˜d×.Ñ.×>Ñ>ÄÔDØ×'Ñ'×7Ñ7¸1Ò<Ü˜dŸh™hÐ(^ÐaiÑ(iÕjà$¨×(8Ñ(8×(HÑ(HÑH™ä˜$Ÿ(™(Ð$WÐZbÑ$bÔcØ ×*Ñ*ˆIÜ"×-Ñ-¨i¸ÓFˆDŒIÜœ3˜t×1Ñ1Ó2Ö3�Ø—i‘i ‘l�Ü˜cÔ#5Ô6ØŸ'™'�CØ"Ÿ}™}¨Y¸Ó<�—	‘	˜!’ð	 4ð: ˆð1 ×"Ò"ä §¡°$¼Z×=VÑ=VÔW×aÑaÐbjÐloÓpÐpØ×ÒÜ�$—(‘(ÐCÀhÑNÔOð( ˆð' ×ÓÜ�4—9‘9‹~¤ H§N¡N×$>Ñ$>Ó ?Ò?Ü�d—h‘hÐ ;¸hÑ FÖGä�t—y‘y“>¤C¨¯©×(BÑ(BÓ$CÒCÜ˜DŸH™HÐ&@À8Ñ&KÈQÔOÜ5>¼sÀ4×CUÑCUÐW[×W`ÑW`Ðbj×bpÑbp×b|Ñb|Ó?}Ö5~Ñ1�AÑ1˜˜[¨&Ü! #Ô'9Ô:Ø!Ÿg™g™ØŸ™×7Ò7¸K×<WÒ<Wà)˜Ø#&§=¡=°·±¸cÓ#B�D—I‘I˜a’Lð 6ð !ˆDŒIð ˆð ×ÒØ×(Ñ(¨°3Ó7Ð7ä"ˆDŒIÜ�$—(‘(Ð=ÀÑHÔIØˆrU   c                 ó   — | S rN   rW   rX   s    rT   r°	  zListNode.as_listê#  r¯  rU   c                 óÆ   — t        | j                  | j                  | j                  ¬«      }t	        | j
                  t        «      rt        | j
                  «      |_        |S r®	  )rF  r†   r—   r°   r‚   rƒ   r  rµ   r¯	  s     rT   Úas_tuplezListNode.as_tupleí#  sF   € Ü�d—h‘h T§Y¡Y¸D×<LÑ<LÔMˆÜ�d×*Ñ*¬DÔ1Ü % d×&:Ñ&:Ó ;ˆAÔØˆrU   c                 ó.  — | j                   j                  ri| j                  r/|j                  j	                  | j                   ddd¬«      | _        y |j                  j	                  | j                   dd¬«      | _        y t        j                  | |«       y )NFT)r¢  ÚstaticÚreusable)r¢  rÎ	  )r­   rp  r[  r¦  r§  r  r:	  r©  r³  s     rT   r©  zListNode.allocate_temp_resultó#  s|   € Ø�9‰9×ÒØ×#Ò#Ø!%§¡×!=Ñ!=Ø—I‘I¨%¸Àuð ">ó "N�•ð "&§¡×!=Ñ!=Ø—I‘I¨%¸%ð ">ó "A�•ô ×-Ñ-¨d°DÕ9rU   c                 óŒ   — | j                   r
t        «       ‚| j                  D �cg c]  }|j                  ‘Œ c}| _        y c c}w rN   )r°   r˜   r—   rƒ   r¶	  s     rT   r2  z"ListNode.calculate_constant_result$  s>   € Ø×ÒÜ“,Ðà+/¯9ª9ó 6Ù+4 CˆC×Ó¨9ñ 6ˆÕùò  6s   ¥Ac                 ó|   — | j                  |«      }| j                  r|| j                  j                  |«      z  }|S rN   )r<	  r°   r<  )rY   r;  Úls      rT   r<  zListNode.compile_time_value$  s;   € Ø×(Ñ(¨Ó.ˆØ×ÒØ�×!Ñ!×4Ñ4°TÓ:Ñ:ˆAØˆrU   c                 ó‚  — | j                   j                  r.| j                  D ]  }t        |«       Œ | j	                  |«       y | j                   j
                  �rÇ| j                  r¤|j                  d«       |j                  dt        j                  z  «       |j                  dj                  t        j                  | j                  j                  «       ¬«      «       dt        | j                  «      t        j                  fz  }nd}t        | j                  «      D ]Í  \  }}|j                   j
                  rz|j                  j!                  t#        j$                  dd«      «       |j                  d	| j                  «       ›d
|›|›d|j                  «       ›d| j                  «       ›d�
«       Œ–|j                  | j                  «       ›d
|›|›d|j                  «       ›d�«       ŒÏ | j                  r#|j                  d«       |j                  d«       y y | j                   j&                  r}t)        | j                  | j                   j*                  j,                  «      D ]E  \  }}|j                  | j                  «       ›d|j.                  ›d|j                  «       ›d�«       ŒG y t1        d«      ‚)Nrœ  zPy_ssize_t %s;z&for ({i} = 0; {i} < {count}; {i}++) {{)r¬  Úcountz+ (%d * %s)rù  rV  r™  rW  r|  rX  r‡  z[0]));z] = rT  rÕ   rü   rS  zList type never specified)r­   rs   rÄ	  r   rq	  rp  r°   rÊ   r   r  r  r  r“   r—   r¢  rÇ   rÈ   r   rÉ   r	  rÊ  rN  rÀ  r¿   r   )rY   rÌ   rw   rp	  r¬  r�   rŸ  s          rT   r\	  z ListNode.generate_operation_code$  s  € Ø�9‰9× Ò Ø×1Ô1�Ü˜SÕ!ð 2à×/Ñ/°Õ5Ø�Y‰Y×ÓØ×ÒØ—
‘
˜3”Ø—
‘
Ð+¬f×.EÑ.EÑEÔFØ—
‘
ÐC×JÑJÜ×-Ñ-°T×5EÑ5E×5LÑ5LÓ5Nð Kó Pô Qà&¬#¨d¯i©i«.¼&×:QÑ:QÐ)RÑR‘à�Ü# D§I¡IÖ.‘��3Ø—8‘8×$Ò$Ø×$Ñ$×5Ñ5´k×6MÑ6MÐN^Ð`oÓ6pÔqØ—J’JØŸ™�¡qª&ØŸ
™
� d§k¡k¥mð õ ð
 —J‘JØŸ™�ÙÚØŸ
™
�ð	 &õ 'ð /ð ×ÒØ—
‘
˜3”Ø—
‘
˜3•ð  ð �Y‰Y× Ò Ü" 4§9¡9¨d¯i©i¯o©o×.IÑ.IÖJ‘��VØ—
‘
Ø—K‘K•MØ—L“LØ—J‘J•Lð"õ #ñ  Kô  Ð ;Ó<Ð<rU   N)r[   r\   r]   rÄ	  r   r­   r[  r§  rl  r‘   r^  rX  r  r°	  rË	  r©  r2  r<  r\	  rW   rU   rT   rY  rY  ”#  sQ   „ ð ÐØ€DØ€Oà,€Kòòò,òò0òdòò:ò6òó%=rU   rY  c                   óP   — e Zd ZdgZdZeZd„ Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd	„ Zd
„ Zd„ Zy)ÚComprehensionNodeÚloopTc                 ó   — | j                   S rN   rþ  rø   s     rT   r‘   zComprehensionNode.infer_type=$  ó   € Ø�y‰yÐrU   c                 óÆ  — | | j                   _        | j                  |«       t        | j                  t
        j                  «      rft        | j                  j                  t        «      sJ | j                  j                  «       ‚| j                  j                  j                  d |«       y t        | j                  t
        j                  «      sJ | j                  «       ‚y rN   )
r  rÖ  r³  r‚   rÖ	  r   Ú_ForInStatNoder8  r­  ÚForFromStatNoderø   s     rT   rµ  z&ComprehensionNode.analyse_declarations@$  s”   € Ø!ˆ�‰ÔØ�‰˜Ôä�d—i‘i¤×!5Ñ!5Ô6Ü˜dŸi™i×0Ñ0´.ÔAÐUÀ4Ç9Á9×CUÑCUÓUÐAØ�I‰I×Ñ×)Ñ)¨$°Õ4ä˜dŸi™i¬×)>Ñ)>Ô?ÐJÀÇÁÓJÑ?rU   c                 ó:   — | j                   j                  |«       y rN   )rÖ	  rµ  rø   s     rT   r·  z-ComprehensionNode.analyse_scoped_declarationsJ$  s   € Ø�	‰	×&Ñ& sÕ+rU   c                 ó^   — | j                   s | j                  j                  |«      | _        | S rN   ©r°  rÖ	  r^  rø   s     rT   rX  zComprehensionNode.analyse_typesM$  s&   € Ø×#Ò#ØŸ	™	×5Ñ5°cÓ:ˆDŒIØˆrU   c                 ó^   — | j                   r | j                  j                  |«      | _        | S rN   rÞ	  rø   s     rT   r¼  z,ComprehensionNode.analyse_scoped_expressionsR$  s&   € Ø×ÒØŸ	™	×5Ñ5°cÓ:ˆDŒIØˆrU   c                  ó   — yr’  rW   rX   s    rT   rZ  zComprehensionNode.may_be_noneW$  r­  rU   c                 ó&   — | j                  |«       y rN   r[	  r³  s     rT   r¾  z&ComprehensionNode.generate_result_codeZ$  r]	  rU   c           
      óä  — | j                   t        j                  u rd}nV| j                   t        j                  u rd}n7| j                   t        j                  u rd}nt        d| j                   z  «      ‚|j                  | j                  «       ›d|›d|j                  | j                  «       | j                  «      ›�«       | j                  |«       | j                  j                  |«       y )NzPyList_New(0)zPySet_New(NULL)zPyDict_New()z"illegal type for comprehension: %srS  r¡  )r­   r   r   r   r   r   rÊ   r  rÖ   r†   rì  rÖ	  Úgenerate_execution_code)rY   rÌ   Úcreate_codes      rT   r\	  z)ComprehensionNode.generate_operation_code]$  s´   € Ø�9‰9œ×)Ñ)Ñ)Ø)‰KØ�Y‰Yœ'×*Ñ*Ñ*Ø+‰KØ�Y‰Yœ'×+Ñ+Ñ+Ø(‰KäÐ DÀtÇyÁyÑ PÓQÐQØ�
‰
Ø�K‰K�Mš;Ø×#Ñ# D§K¡K£M°4·8±8Ô<ð>ô 	?ð 	×Ñ˜TÔ"Ø�	‰	×)Ñ)¨$Õ/rU   c                 ó:   — | j                   j                  |«       y rN   )rÖ	  r÷  r³  s     rT   r÷  zComprehensionNode.annotatem$  ó   € Ø�	‰	×Ñ˜4Õ rU   N)r[   r\   r]   rö   r  r6  rƒ   r‘   rµ  r·  rX  r¼  rZ  r¾  r\	  r÷  rW   rU   rT   rÕ	  rÕ	  5$  sC   „ ð �(€Kà€GØ$€OòòKò,òò
ò
ò+ò0ó !rU   rÕ	  c                   óF   — e Zd ZdgZdZej                  Zd„ Zd„ Z	d„ Z
d„ Zy)ÚComprehensionAppendNoderJ  Nc                 óÆ   — | j                   j                  |«      | _         | j                   j                  j                  s | j                   j	                  |«      | _         | S rN   )rJ  r^  r­   rs   r9  rø   s     rT   r^  z+ComprehensionAppendNode.analyse_expressionsz$  sD   € Ø—I‘I×1Ñ1°#Ó6ˆŒ	Ø�y‰y�~‰~×)Ò)ØŸ	™	×4Ñ4°SÓ9ˆDŒIØˆrU   c           
      óŒ  — | j                   j                  t        u r2|j                  j	                  t        j                  dd«      «       d}nA| j                   j                  t        u rd}n"t        d| j                   j                  z  «      ‚| j                  j                  |«       |j                  |j                  |›d| j                   j                  «       ›d| j                  j                  «       ›d�| j                  «      «       | j                  j                  |«       | j                  j!                  |«       y )	NÚListCompAppendú
Optimize.cÚ__Pyx_ListComp_AppendÚ	PySet_Addz'Invalid type for comprehension node: %srR  ú, (PyObject*)r¢  )rÖ  r­   r   rÇ   rÈ   r   rÉ   r   r   rJ  rÃ  rÊ   rË   r  r†   rË  rØ  r2  s      rT   rã	  z/ComprehensionAppendNode.generate_execution_code€$  sû   € Ø�;‰;×ÑœyÑ(Ø×Ñ×-Ñ-Ü×'Ñ'Ð(8¸,ÓGôIà.‰HØ�[‰[×Ñ¤Ñ)Ø"‰HäØ9¸D¿K¹K×<LÑ<LÑLóNð Nð 	�	‰	×*Ñ*¨4Ô0Ø�
‰
�4×%Ñ%ÚØ�K‰K×ÑÕ Ø�I‰I×ÑÕð'ð �x‰xó	ô 	ð
 	�	‰	×(Ñ(¨Ô.Ø�	‰	×Ñ˜TÕ"rU   c                 ó<   — | j                   j                  ||«       y rN   )rJ  rÝ  rÜ  s      rT   rÝ  z5ComprehensionAppendNode.generate_function_definitions”$  s   € Ø�	‰	×/Ñ/°°TÕ:rU   c                 ó:   — | j                   j                  |«       y rN   )rJ  r÷  r³  s     rT   r÷  z ComprehensionAppendNode.annotate—$  ræ	  rU   )r[   r\   r]   rö   rÖ  r   r&  r­   r^  rã	  rÝ  r÷  rW   rU   rT   rè	  rè	  q$  s/   „ ð �(€KØ€Fà× Ñ €Dòò#ò(;ó!rU   rè	  c                   ó,   — e Zd ZddgZd„ Zd„ Zd„ Zd„ Zy)ÚDictComprehensionAppendNodeÚkey_exprÚ
value_exprc                 ó†  — | j                   j                  |«      | _         | j                   j                  j                  s | j                   j	                  |«      | _         | j
                  j                  |«      | _        | j
                  j                  j                  s | j
                  j	                  |«      | _        | S rN   )rô	  r^  r­   rs   r9  rõ	  rø   s     rT   r^  z/DictComprehensionAppendNode.analyse_expressions�$  s…   € ØŸ™×9Ñ9¸#Ó>ˆŒØ�}‰}×!Ñ!×-Ò-Ø ŸM™M×<Ñ<¸SÓAˆDŒMØŸ/™/×=Ñ=¸cÓBˆŒØ�‰×#Ñ#×/Ò/Ø"Ÿo™o×@Ñ@ÀÓEˆDŒOØˆrU   c                 óB  — | j                   j                  |«       | j                  j                  |«       |j                  |j	                  d| j
                  j                  «       ›d| j                   j                  «       ›d| j                  j                  «       ›d�| j                  «      «       | j                   j                  |«       | j                   j                  |«       | j                  j                  |«       | j                  j                  |«       y )Nr¹  rï	  r¢  )
rô	  rÃ  rõ	  rÊ   rË   rÖ  r  r†   rË  rØ  r³  s     rT   rã	  z3DictComprehensionAppendNode.generate_execution_code¦$  sÇ   € Ø�‰×.Ñ.¨tÔ4Ø�‰×0Ñ0°Ô6Ø�
‰
�4×%Ò%Ø�K‰K×ÑÕ Ø�M‰M× Ñ Õ"Ø�O‰O×"Ñ"Õ$ð'ð �x‰xó	ô 	ð
 	�‰×,Ñ,¨TÔ2Ø�‰× Ñ  Ô&Ø�‰×.Ñ.¨tÔ4Ø�‰×"Ñ" 4Õ(rU   c                 ót   — | j                   j                  ||«       | j                  j                  ||«       y rN   )rô	  rÝ  rõ	  rÜ  s      rT   rÝ  z9DictComprehensionAppendNode.generate_function_definitions³$  s*   € Ø�‰×3Ñ3°C¸Ô>Ø�‰×5Ñ5°c¸4Õ@rU   c                 óp   — | j                   j                  |«       | j                  j                  |«       y rN   )rô	  r÷  rõ	  r³  s     rT   r÷  z$DictComprehensionAppendNode.annotate·$  s&   € Ø�‰×Ñ˜tÔ$Ø�‰× Ñ  Õ&rU   N)r[   r\   r]   rö   r^  rã	  rÝ  r÷  rW   rU   rT   ró	  ró	  š$  s!   „ Ø˜|Ð,€Kòò)òAó'rU   ró	  c                   óN   ‡ — e Zd ZdgZdZdZdZeZd	ˆ fd„	Z	d„ Z
d„ Zd„ Zd„ Zˆ xZS )
ÚInlinedGeneratorExpressionNodeÚgenNTc                 ó  •— |j                   j                  }d|_        |�M|t        t        t
        fv sJ |«       ‚||_        |j                  t        ||t        j                  «      |¬«       t        ‰| �0  |fd|i|¤Ž y )NT)rÖ  r­   rü	  )r_  ÚgbodyÚ
is_inlinedr   r   r   Úinlined_comprehension_typer  r…  r   Úretval_cnamerP   r‚  )rY   r†   rü	  Úcomprehension_typerd  rþ	  rS   s         €rT   r‚  z'InlinedGeneratorExpressionNode.__init__Í$  sƒ   ø€ Ø—‘×"Ñ"ˆØˆÔØÐ)Ø%¬)´X¼yÐ)IÑIÐ]ÐK]Ó]ÐIØ/AˆEÔ,Ø�M‰MÜ'¨Ð-?Ä×ATÑATÓUØ'ð ô ô 	‰Ñ˜Ñ0 #Ð0¨Ó0rU   c                 ó   — | j                   dvS )N)ro   r¡   rÁ  )Ú	orig_funcrX   s    rT   rZ  z*InlinedGeneratorExpressionNode.may_be_noneÙ$  s   € Ø�~‰~Ð%=Ð=Ð=rU   c                 ó   — | j                   S rN   rþ  rø   s     rT   r‘   z)InlinedGeneratorExpressionNode.infer_typeÜ$  rØ	  rU   c                 óF   — | j                   j                  |«      | _         | S rN   )rü	  r^  rø   s     rT   rX  z,InlinedGeneratorExpressionNode.analyse_typesß$  s   € Ø—8‘8×/Ñ/°Ó4ˆŒØˆrU   c           
      óô   — |j                  | j                  «       ›d| j                  j                  «       ›d|j                  | j                  «       | j                  «      ›�«       | j                  |«       y )Nz$ = __Pyx_Generator_GetInlinedResult(r¥  )rÊ   r  rü	  rÖ   r†   rì  r³  s     rT   r¾  z3InlinedGeneratorExpressionNode.generate_result_codeã$  sS   € Ø�
‰
Ø�K‰K�M˜4Ÿ8™8Ÿ?™?Õ,Ø×#Ñ# D§K¡K£M°4·8±8Ô<ð>ô 	?ð 	×Ñ˜TÕ"rU   rN   )r[   r\   r]   ró   r
  rÖ  r  r   r­   r‚  rZ  r‘   rX  r¾  r^   r_   s   @rT   rû	  rû	  ¼$  s9   ø„ ð ˆw€HØ€IØ€FØ€GØ€Dõ
1ò>òòö#rU   rû	  c                   óT   — e Zd ZdZdgZdZdZd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zy)rO	  z«
    Merge a sequence of iterables into a set/list/tuple.

    The target collection is determined by self.type, which must be set externally.

    args    [ExprNode]
    r—   TzConstructing Python collectionc                 ó  — |t         t        fv r_|r]|d   j                  rN|d   j                  t         ur9t	        |d   j
                  |d   j                  d|d   j                  ¬«      |d<   t        j                  | |||¬«       y )Nr   T)r—   r  r°   )r—   r­   )
r   r   r�   r­   rY  r†   r—   r°   rñ   r‚  )rY   r†   r—   r­   s       rT   r‚  zMergedSequenceNode.__init__ö$  su   € Ø”IœzÐ*Ñ*©t¸¸Q¹×8WÒ8Wà�A‰w�|‰|¤9Ñ,Ü" 4¨¡7§;¡;°T¸!±W·\±\È4Ð]aÐbcÑ]d×]pÑ]pÔq��Q‘Ü×Ñ˜$ ¨$°TÐÕ:rU   c                 óê  — g }| j                   D ]}  }|j                  r&|j                  r|j                  j                  dk  rŒ5|j                  s|j                  rd„ |j                   D «       }n|j                  }|j                  |«       Œ | j                  t        u rt        |«      }|| _        y | j                  t        u rt        |«      }|| _        y | j                  t        u sJ ‚|| _        y )Nr   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrN   r©  rŽ   s     rT   ri   z?MergedSequenceNode.calculate_constant_result.<locals>.<genexpr>%  s   è ø€ ÐB¹	°˜×,Õ,¹	ùrK	  )r—   r�   r°   rƒ   r›   r  r­   r   rœ  r   rµ   r   )rY   r  r§   rÃ  s       rT   r2  z,MergedSequenceNode.calculate_constant_resultý$  sÑ   € ØˆØ—I”IˆDØ×+Ò+°×0@Ò0@Ø×#Ñ#×3Ñ3°qÒ8Øà×"Ò" d×&BÒ&BáB¸¿	º	ÓB‘à×,Ñ,�Ø�M‰M˜%Õ ð ð �9‰9œÑ Ü˜“[ˆFð
  &ˆÕð	 �Y‰Yœ*Ñ$Ü˜6“]ˆFð  &ˆÕð —9‘9¤	Ñ)Ð)Ð)Ø%ˆÕrU   c                 ó2  ‡— g }| j                   D ]‰  }|j                  r+|j                  r|j                  j                  ‰«      dk  rŒ:|j                  s|j                  rˆfd„|j                   D «       }n|j                  ‰«      }|j                  |«       Œ‹ | j                  t        u r	 t        |«      }|S | j                  t        u rt        |«      }|S | j                  t        u sJ ‚|S # t        $ r}| j                  |«       Y d }~|S d }~ww xY w)Nr   c              3   ó@   •K  — | ]  }|j                  ‰«      –— Œ y ­wrN   )r<  )rf   r�   r;  s     €rT   ri   z8MergedSequenceNode.compile_time_value.<locals>.<genexpr>%  s   øè ø€ ÐKÁ¸#˜×/Ñ/°×5Áùs   ƒ)r—   r�   r°   r<  r›   r  r­   r   rœ  rV  r@  r   rµ   r   )rY   r;  r  r§   rÃ  r?  s    `    rT   r<  z%MergedSequenceNode.compile_time_value%  s  ø€ ØˆØ—I”IˆDØ×+Ò+°×0@Ò0@Ø×#Ñ#×6Ñ6°tÓ<ÀÒAØØ×"Ò" d×&BÒ&BãKÀÇÂÓK‘à×/Ñ/°Ó5�Ø�M‰M˜%Õ ð ð �9‰9œÑ ð1Ü˜V›�ð ˆð	 �Y‰Yœ*Ñ$Ü˜6“]ˆFð ˆð —9‘9¤	Ñ)Ð)Ð)Øˆøô ò 1Ø×-Ñ-¨a×0Ð0ð
 ˆûð1ús   Â/C1 Ã1	DÃ:DÄDc                  ó   — yr¹  rW   rø   s     rT   rl  z$MergedSequenceNode.type_dependencies)%  r®  rU   c                 ó   — | j                   S rN   rþ  rø   s     rT   r‘   zMergedSequenceNode.infer_type,%  rØ	  rU   c                 óD  — | j                   D �cg c]1  }|j                  |«      j                  |«      j                  d«      ‘Œ3 }}t	        |«      dk(  r |d   j
                  | j
                  u r|d   S | j
                  t        t        t        fv sJ ‚|| _         | S c c}w )Nz2argument after * must be an iterable, not NoneTyper,   r   )	r—   rX  r9  ra  r“   r­   r   r   r   )rY   rv   r�   r—   s       rT   rX  z MergedSequenceNode.analyse_types/%  s¤   € ð
 —y’yó	
ñ !�ð ×Ñ˜cÓ"×5Ñ5°cÓ:×LÑLàDõFð !ð	 	ð 
ô ˆt‹9˜Š>˜d 1™gŸl™l¨d¯i©iÑ7à˜‘7ˆNà�y‰yœX¤y´*Ð=Ñ=Ð=Ð=àˆŒ	Øˆùò
s   �6Bc                  ó   — yr’  rW   rX   s    rT   rZ  zMergedSequenceNode.may_be_none@%  r­  rU   c                 óÐ  — |j                  | j                  «       | j                  |«       | j                  t        u }t        | j                  «      }t        |«      }|j                  |«       |r|j                  s |sc|j                  rW|j                  t        u rE|j                  | j                  «       ›d|j                  «       ›d�«       |j                  |«       n°|j                  | j                  «       ›d|rdn+|j!                  «       r|j                  t"        t        fv rdnd›d|j                  «       ›d|j%                  | j                  «       | j                  «      ›�«       | j'                  |«       |j)                  |«       |j+                  |«       t-        «       }|rd}d	}nd
}d}|D �]s  }|r|j                  s$|j                  s|j                  r±|j.                  s¥|s|j                  r|j1                  d«       |j                  D ]v  }|j                  |«       |j3                  |j                  |›d| j                  «       ›d|j                  «       ›d�«       |j)                  |«       |j+                  |«       Œx ŒÛ|r|j1                  d«       n|j1                  d«       |j                  |«       |j3                  |j                  |›d| j                  «       ›d|j                  «       ›d�«       |j)                  |«       |j+                  |«       �Œv | j                  t4        u rè|j                  d«       |j                  dt6        j8                  ›d| j                  «       ›d�«       |j;                  | j                  «       t"        «       |j                  | j                  «       ›dt6        j8                  ›d|j%                  | j                  «       | j                  «      ›�«       | j'                  |«       |j                  d«       t=        |«      D ]-  }	|j>                  jA                  tC        jD                  |	Ž «       Œ/ y )NrS  rT  Ú	PySet_Newr–	  r—	  rR  r¥  rî	  Ú__Pyx_PySet_Updaterí	  Ú__Pyx_PyList_Extend)rë	  rì	  r1  r¢  )ÚPySet_Updatez
Builtins.c)Ú
ListExtendrì	  rœ  rS  z = PyList_AsTuple(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   r  r#	  rÁ  rÇ   rÈ   r   rÉ   )
rY   rÌ   Úis_setr—   r§   r½  Úadd_funcÚextend_funcr�   r¾  s
             rT   rÃ  z+MergedSequenceNode.generate_evaluation_codeC%  sX  € Ø�‰�d—h‘hÔØ×!Ñ! $Ô'à—‘œhÐ&ˆä�D—I‘I‹ˆÜ�D‹zˆØ×%Ñ% dÔ+Ù�t×*Ò*Ù˜t×;Ò;ÀÇ	Á	ÌYÑ@VØ�J‰J T§[¡[¥]°D·N±NÕ4DÐEÔFØ×.Ñ.¨tÕ4à�J‰JØ—‘•Ù%‘Ø;?×;NÑ;NÔ;PÐUY×U^ÑU^ÔcqÔs|Ðb}ÑU}Ñ7Ø*ñ+ð —‘Õ Ø×'Ñ'¨¯©«°t·x±xÔ@ðBô Cð × Ñ  Ô&Ø×'Ñ'¨Ô-Ø�‰˜Ôä“%ˆÙØ"ˆHØ.‰Kà.ˆHØ/ˆKäˆDÙ˜D×/Ò/°4×3OÒ3OØ×1Ò1¸$×:JÒ:JÙ $§)¢)Ø—K‘KÐ @ÔAØŸ9œ9�CØ×0Ñ0°Ô6Ø×)Ñ)¨#¯'©'Ú ØŸ™�ØŸ™�ð4)ô *ð ×.Ñ.¨tÔ4Ø—N‘N 4Õ(ð %ð áØ—‘Ð:Õ;à—‘Ð8Ô9à×)Ñ)¨$Ô/Ø×!Ñ! $§(¡(ÚØ—‘•Ø—‘Õ ð-"ô #ð ×'Ñ'¨Ô-Ø�O‰O˜DÖ!ð5 ð8 �9‰9œ
Ñ"Ø�J‰J�sŒOØ�JŠJÜ×'Ó'Ø—‘•ðô  ð �O‰O˜DŸK™K›M¬>Ô:Ø�J‰JØ—‘•Ü×'Ó'Ø×'Ñ'¨¯©«°t·x±xÔ@ðBô Cð × Ñ  Ô&Ø�J‰J�sŒOä˜W–oˆFØ×Ñ×-Ñ-¬k×.EÑ.EÀvÐ.NÕOñ &rU   c                 óH   — | j                   D ]  }|j                  |«       Œ y rN   )r—   r÷  rÀ  s      rT   r÷  zMergedSequenceNode.annotate�%  s   € Ø—I”IˆDØ�M‰M˜$Õñ rU   N)r[   r\   r]   r£  ró   r  r§  r‚  r2  r<  rl  r‘   rX  rZ  rÃ  r÷  rW   rU   rT   rO	  rO	  ê$  sJ   „ ñð ˆx€HØ€GØ2€Kò;ò&ò*ò.òòò"òKPóZ rU   rO	  c                   ó@   — e Zd ZdZdgZeZdZdZd„ Z	d„ Z
d„ Zd„ Zd	„ Zy
)ÚSetNodez
    Set constructor.
    r—   TzConstructing Python setc                 óì   — t        t        | j                  «      «      D ]@  }| j                  |   }|j                  |«      }|j	                  |«      | j                  |<   ŒB t
        | _        d| _        | S r«  )r•  r“   r—   rX  r9  r   r­   r  )rY   rv   r¬  r�   s       rT   rX  zSetNode.analyse_typesž%  sc   € Ü”s˜4Ÿ9™9“~Ö&ˆAØ—)‘)˜A‘,ˆCØ×#Ñ# CÓ(ˆCØ×1Ñ1°#Ó6ˆD�I‰I�aŠLð 'ô ˆŒ	ØˆŒØˆrU   c                  ó   — yr’  rW   rX   s    rT   rZ  zSetNode.may_be_none§%  r­  rU   c                 ó`   — | j                   D �ch c]  }|j                  ’Œ c}| _        y c c}w rN   )r—   rƒ   r¶	  s     rT   r2  z!SetNode.calculate_constant_resultª%  s&   € Ø?C¿yºyÓI¹y¸ × 3Ó 3¸yÑIˆÕùÒIs   �+c                 óÂ   — | j                   D �cg c]  }|j                  |«      ‘Œ }}	 t        |«      S c c}w # t        $ r}| j	                  |«       Y d }~y d }~ww xY wrN   )r—   r<  rœ  rV  r@  )rY   r;  r�   r�  r?  s        rT   r<  zSetNode.compile_time_value­%  s]   € Ø:>¿)º)ÓD¹)°3�#×(Ñ(¨Õ.¸)ˆÐDð	-Ü�v“;Ðùò Eøô ò 	-Ø×)Ñ)¨!×,Ñ,ûð	-ús   �5ª
: º	AÁAÁAc           	      ó  — | j                   D ]  }|j                  |«       Œ | j                  |«       |j                  | j	                  «       ›d|j                  | j	                  «       | j                  «      ›�«       | j                  |«       | j                   D ]c  }|j                  | j                  d| j	                  «       ›d|j                  «       ›d�«       |j                  |«       |j                  |«       Œe y )Nz = PySet_New(0); z
PySet_Add(r1  r¢  )r—   rÃ  r©  rÊ   r  rÖ   r†   rì  r‹  rÛ   rË  rØ  r 	  s      rT   rÃ  z SetNode.generate_evaluation_code´%  sÆ   € Ø—9”9ˆCØ×(Ñ(¨Õ.ð à×!Ñ! $Ô'Ø�
‰
à—‘•Ø×'Ñ'¨¯©«°t·x±xÔ@ðBô	Cð 	×Ñ˜TÔ"Ø—9”9ˆCØ×!Ñ!Ø—’Ø'+§{¡{¥}°c·m±mµoÐFôHð ×&Ñ& tÔ,Ø�N‰N˜4Õ ñ rU   N)r[   r\   r]   r£  ró   r   r­   r›   r§  rX  rZ  r2  r<  rÃ  rW   rU   rT   r
  r
  •%  s9   „ ñð ˆx€HØ€DØ€NØ+€KòòòJò-ó!rU   r
  c                   óŒ   ‡ — e Zd ZdgZdZdZeZdZdZ	g Z
ed„ «       Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zˆ fd„Zd„ ZdZd„ Zd„ Zd„ Zˆ xZS )r�  rš  r,   FTc                 ó`   —  | ||D ��cg c]  \  }}t        |||¬«      ‘Œ c}}¬«      S c c}}w )Nr—  r™  )rœ  )rR   r†   ÚpairsÚkr‘  s        rT   Ú
from_pairszDictNode.from_pairsÖ%  s?   € á�3Ù>Cô)EÙ>C±d°a¸”˜S a¨qÖ1¸eò)Eô Fð 	Fùó )Es   ‰*c                 ór   — t        | j                  D �cg c]  }|j                  ‘Œ c}«      | _        y c c}w rN   )r;  rš  rƒ   )rY   r§   s     rT   r2  z"DictNode.calculate_constant_resultÛ%  s<   € Ü#Ø15×1EÒ1Eó%GÙ1E¨�×$Ó$Ð1Eñ%Gó  HˆÕùò %Gs   ”4c                 ó  — | j                   D �cg c]8  }|j                  j                  |«      |j                  j                  |«      f‘Œ: }}	 t	        |«      S c c}w # t
        $ r}| j                  |«       Y d }~y d }~ww xY wrN   )rš  r˜  r<  r½   r;  rV  r@  )rY   r;  r§   r%
  r?  s        rT   r<  zDictNode.compile_time_valueß%  sƒ   € à×,Ò,ó.Ù,�ð —(‘(×-Ñ-¨dÓ3°T·Z±Z×5RÑ5RÐSWÓ5XÒYØ,ð 	ð .ð	-Ü˜“;Ðùò.øô ò 	-Ø×)Ñ)¨!×,Ñ,ûð	-ús   �=AÁ
A Á	BÁ(A>Á>Bc                  ó   — yr¹  rW   rø   s     rT   rl  zDictNode.type_dependenciesç%  r®  rU   c                 ó   — t         S rN   r°  rø   s     rT   r‘   zDictNode.infer_typeê%  r¿	  rU   c                 ó¼   — t        d¬«      5 }| j                  D �cg c]  }|j                  |«      ‘Œ c}| _        d d d «       | _        | S c c}w # 1 sw Y   ŒxY wrÂ	  )r   rš  rX  rÄ	  )rY   rv   rÅ	  r§   s       rT   rX  zDictNode.analyse_typesî%  sa   € Ü Õ&¨&ð !×0Ò0ó$á0�Dð ×"Ñ" 3Õ'Ø0ñ$ˆDÔ ÷ 'ð
 &,ˆÔ"Øˆùò$÷ 'Ð&ús   �AœA´AÁAÁAc                  ó   — yr’  rW   rX   s    rT   rZ  zDictNode.may_be_none÷%  r­  rU   c                 ó¢  •— t        j                  |d¬«      }|j                  �r| j                  «        | j                  j
                  r¥t        j                  |«      st        | j                  d|z  «       t        | j                  | j                  D �cg c]L  }t        |j                  |j                  j                  |«      |j                  j                  |«      ¬«      ‘ŒN c}¬«      S | j                  j                  |«      st        | j                  d|z  «       | S |j
                  �r|| _        |j                   s2t#        | j                  «      dk7  rt        | j                  d|z  «       n[|j                   rOt#        | j                  «      t#        |j$                  j&                  «      k  rt)        | j                  d	|z  d«       | j                  D �]V  }t+        |j                  t,        «      r|j                  j.                  |_        |j                  j0                  sZt        |j                  j                  d
«       t3        |j                  j                  t5        j6                  d«      ¬«      |_        Œ©t9        |j                  j                  «      }|j$                  j;                  |«      }|s)t        |j                  j                  d|›d|›d�«       �Œ|j                  }t+        |t,        «      r|j.                  }|j=                  |j                  |«      |_        �ŒY | S t>        ‰| �y  ||«      S c c}w )NTr>  z-Cannot interpret struct as non-dict type '%s'r—  r™  z"Cannot interpret dict as type '%s'r,   z<Exactly one field must be specified to convert to union '%s'z%Not all members given for struct '%s'zInvalid struct field identifierr,  r;  zstruct 'z' has no field 'r+  ) r   rA  rs   Úrelease_errorsr­   r‰  r   r  r   r†   r�  rš  rœ  r˜  r9  r½   r	  r“   rN  rÀ  r   r‚   r  r�   rŒ   rÒ  r
   rH  r{   rÖ  r  rP   )rY   r"  rv   r§   r˜  rŸ  r½   rS   s          €rT   r  zDictNode.coerce_toú%  sw  ø€ Ü×+Ñ+¨HÀTÔJˆØ×ÓØ×ÑÔ!Ø�y‰y×+Ò+Ü ×+Ñ+¨HÔ5Ü˜$Ÿ(™(Ð$SÐV^Ñ$^Ô_Ü §¡ð !%× 4Ò 4ó;6ñ !5˜ô ! §¡¨t¯x©x×/JÑ/JÈ3Ó/OØ'+§z¡z×'DÑ'DÀSÓ'IöKà 4ñ;6ô 7ð 7ð —9‘9×'Ñ'¨Ô1Ü�d—h‘hÐ DÀxÑ OÔPð2 ˆð1 ×(Ó(Ø ˆDŒIØ×%Ò%¬#¨d×.BÑ.BÓ*CÀqÒ*HÜ�d—h‘hÐ ^ÐaiÑ iÕjØ×#Ò#¬¨D×,@Ñ,@Ó(AÄCÈÏÉ×HbÑHbÓDcÒ(cÜ˜Ÿ™Ð"IÈHÑ"TÐVWÔXØ×,Õ,�Ü˜dŸh™hÔ(:Ô;Ø#Ÿx™xŸ|™|�D”HØ—x‘x×1Ò1Ü˜$Ÿ(™(Ÿ,™,Ð(IÔJÜ*¨4¯8©8¯<©<¼~×?[Ñ?[Ð\eÓ?fÔg�D•Hä˜dŸh™hŸn™nÓ-�CØ%Ÿ^™^×7Ñ7¸Ó<�FÙ!Ü˜dŸh™hŸlšlÊxÒY\Ð,]Ö^à $§
¡
˜Ü% eÔ-?Ô@Ø$)§I¡I˜EØ%*§_¡_°V·[±[À#Ó%F˜ž
ð -ð$ ˆô ‘7Ñ$ X¨sÓ3Ð3ùò;;6s   ÂAM
c                 óJ   — | j                   D ]  }t        |«       Œ g | _         y rN   )rÄ	  r   )rY   rw   s     rT   r/
  zDictNode.release_errors!&  s"   € Ø×-Ô-ˆCÜ˜Õð .à%'ˆÕ"rU   r´  c                 óü  — |j                  | j                  «       | j                  |«       | j                  j                  }|r„| j                  «        |j                  d| j                  «       t        | j                  «      |j                  | j                  «       | j                  «      fz  «       | j                  |«       d }n| j                  j                  }t        «       }d }d}| j                  D �]N  }|j                  |«       |�r| j                  r,|j                  d|j                   j#                  «       z  «       |j$                  }| j&                  �r|�ˆ|j(                  sd }ny|j                   |v rd }nh|t        |j                   «      ur6|€1t        |j                   «      }|j+                  |j                   «       nd }n|j+                  |j                   «       |€…|j                  d| j                  «       ›d|j#                  «       ›d�«       d}|j                  d|j#                  «       ›d	|j-                  |j                  «      ›�«       |j                  d
«       |j/                  | j                  d| j                  «       ›d|j$                  j#                  «       ›d|j                   j#                  «       ›d�«       | j&                  r|€|j                  d«       | j                  �r#|j                  d«       �n|j1                  |j$                  j                   «      }	|	€J d|j$                  j                   › d�«       ‚|	j2                  }
|j                   j                  «       }|j                   j                  j4                  r\|j6                  j9                  t;        j<                  dd«      «       |j                  d| j                  «       › d|
› d|› d|› d�	«       n(|j                  | j                  «       › d|
› d|› d�«       |j?                  |«       |jA                  |«       �ŒQ |r0|j6                  j9                  t;        j<                  dd«      «       y y )Nz%%s = __Pyx_PyDict_NewPresized(%d); %sFr]  r¶  r1  rb  Tr¸  r¥  rò  r¹  r¢  rÕ   zstruct member z1 not found, error was not handled during coercionrV  r™  zmemcpy(rü   r‡  r
  rS  rT  r·  r¼  )!r½  r†   r©  r­   rs   r/
  rÊ   r  r“   rš  rÖ   rì  rN  rœ  rÃ  Úexclude_null_valuesr½   rÛ   r˜  r«  rŒ   r   rÙ   r‹  rÖ  r¿   rp  rÇ   rÈ   r   rÉ   rË  rØ  )rY   rÌ   Úis_dictÚstruct_scopeÚ	keys_seenÚkey_typeÚneeds_error_helperr§   r˜  rŸ  Ú	key_cnameÚvalue_cnames               rT   rÃ  z!DictNode.generate_evaluation_code(&  s‘  € ð 	�‰�d—h‘hÔØ×!Ñ! $Ô'à—)‘)×'Ñ'ˆÙØ×ÑÔ!Ø�J‰JØ7Ø—K‘K“MÜ˜×,Ñ,Ó-Ø×+Ñ+¨D¯K©K«M¸4¿8¹8ÓDð;Fñ FôGð
 × Ñ  Ô&Ø‰LàŸ9™9Ÿ?™?ˆLä“Eˆ	ØˆØ"Ðà×(Õ(ˆDØ×)Ñ)¨$Ô/ÚØ×+Ò+Ø—J‘J˜{¨T¯Z©Z×-AÑ-AÓ-CÑCÔDØ—h‘h�Ø×)Ó)Ø Ð,à"×4Ò4Ø(,™IØ ŸY™Y¨)Ñ3à(,™IØ%¬T°#·)±)«_Ñ<Ø'Ð/Ü+/°·	±	«? Ø )§¡¨c¯i©iÕ 8ð -1¡	à%ŸM™M¨#¯)©)Ô4à Ð(ØŸ
š
Ø ŸK™K�M¨3¯=©=­?ð$<ô =ð .2Ð*ØŸ
š
ØŸM™M�OØ ŸO™O¨D¯H©HÔ5ð$7ô 8ð Ÿ
™
 :Ô.à×%Ñ% d§h¢hØ—K‘K•MØ—H‘H×&Ñ&Õ(Ø—J‘J×(Ñ(Õ*ð1,ô -ð ×)Ò)¨iÐ.?Ø—J‘J˜s”OØ×+Ó+Ø—J‘J˜s–Oà%×1Ñ1°$·(±(·.±.ÓA�ØÐ)Ð}¨^¸D¿H¹H¿N¹NÐ;KÐK|Ð+}Ó}Ð)Ø"ŸL™L�	Ø"Ÿj™j×/Ñ/Ó1�Ø—:‘:—?‘?×+Ò+Ø×$Ñ$×5Ñ5´k×6MÑ6MÐN^Ð`oÓ6pÔqØ—J‘J ¨¯©«¨°q¸¸À2ÀkÀ]ÐR[Ð\gÐ[hÐhkÐlÕmà—J‘J $§+¡+£- °°)°¸CÀ¸}ÈAÐNÔOØ×'Ñ'¨Ô-Ø�O‰O˜DÖ!ðk )ñn Ø×Ñ×-Ñ-Ü×'Ñ'Ð(=Ð?TÓUõWð rU   c                 óH   — | j                   D ]  }|j                  |«       Œ y rN   )rš  r÷  rÀ  s      rT   r÷  zDictNode.annotatez&  s   € Ø×(Ô(ˆDØ�M‰M˜$Õñ )rU   c                 ób   — | j                   D ��ci c]  \  }}|j                  |“Œ c}}S c c}}w rN   )rš  r½   )rY   r˜  r½   s      rT   Úas_python_dictzDictNode.as_python_dict~&  s1   € ð 48×3GÒ3GÔHÑ3G¡Z S¨%�—	‘	˜5Ñ Ð3GÒHÐHùÓHs   �+)r[   r\   r]   ró   r  r2
  r   r­   rr  r«  rÄ	  r}  r'
  r2  r<  rl  r‘   rX  rZ  r  r/
  r§  rÃ  r÷  r<
  r^   r_   s   @rT   r�  r�  Å%  s†   ø„ ð "Ð"€HØ€GØÐØ€DØ€OØÐàÐàñFó ðFòHò-òòòòô%òN(ð
 -€KòPWòd öIrU   r�  c                   ó<   — e Zd ZddgZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
y)
rœ  r˜  r½   Nc                 óf   — | j                   j                  | j                  j                  f| _        y rN   )r˜  rƒ   r½   rX   s    rT   r2  z&DictItemNode.calculate_constant_result�&  s&   € à�H‰H×$Ñ$ d§j¡j×&@Ñ&@ð BˆÕrU   c                 ó  — | j                   j                  |«      | _         | j                  j                  |«      | _        | j                   j                  |«      | _         | j                  j                  |«      | _        | S rN   )r˜  rX  r½   r9  rø   s     rT   rX  zDictItemNode.analyse_types‘&  s_   € Ø—8‘8×)Ñ)¨#Ó.ˆŒØ—Z‘Z×-Ñ-¨cÓ2ˆŒ
Ø—8‘8×.Ñ.¨sÓ3ˆŒØ—Z‘Z×2Ñ2°3Ó7ˆŒ
ØˆrU   c                 óp   — | j                   j                  |«       | j                  j                  |«       y rN   )r˜  rÃ  r½   r³  s     rT   rÃ  z%DictItemNode.generate_evaluation_code˜&  s&   € Ø�‰×)Ñ)¨$Ô/Ø�
‰
×+Ñ+¨DÕ1rU   c                 óp   — | j                   j                  |«       | j                  j                  |«       y rN   )r˜  rË  r½   r³  s     rT   rË  z#DictItemNode.generate_disposal_codeœ&  s&   € Ø�‰×'Ñ'¨Ô-Ø�
‰
×)Ñ)¨$Õ/rU   c                 óp   — | j                   j                  |«       | j                  j                  |«       y rN   )r˜  rØ  r½   r³  s     rT   rØ  zDictItemNode.free_temps &  s&   € Ø�‰×Ñ˜DÔ!Ø�
‰
×Ñ˜dÕ#rU   c                 óD   — t        | j                  | j                  g«      S rN   )rí  r˜  r½   rX   s    rT   Ú__iter__zDictItemNode.__iter__¤&  s   € Ü�T—X‘X˜tŸz™zÐ*Ó+Ð+rU   )r[   r\   r]   ró   rŽ  r2  rX  rÃ  rË  rØ  rD
  rW   rU   rT   rœ  rœ  „&  s2   „ ð
 �wÐ€Hà€KòBòò2ò0ò$ó,rU   rœ  c                   ó.   — e Zd ZdgZdZd„ Zd„ Zd„ Zd„ Zy)ÚSortedDictKeysNoder�   Tc                 ór   — t         j                  | |j                  |¬«       t        j                  | _        y r�  )rñ   r‚  r†   r   r   r­   r¶	  s     rT   r‚  zSortedDictKeysNode.__init__®&  s(   € Ü×Ñ˜$ §¡¨SÐÔ1Ü×%Ñ%ˆ�	rU   c                 ó¤   — | j                   j                  |«      }|j                  t        j                  u r|j                  d«      }|| _         | S rŸ  )r�   rX  r­   r   r   ra  r²  s      rT   rX  z SortedDictKeysNode.analyse_types²&  sG   € Ø�h‰h×$Ñ$ SÓ)ˆØ�8‰8”w×(Ñ(Ñ(Ø×'Ñ'Ø3ó5ˆCàˆŒØˆrU   c                  ó   — yr’  rW   rX   s    rT   rZ  zSortedDictKeysNode.may_be_noneº&  r­  rU   c                 óN  — | j                   j                  «       }| j                   j                  t        j                  u rb|j                  | j                  «       ›d|›d|j                  | j                  «       | j                  «      ›�«       | j                  |«       �nV|j                  j                  t        j                  dd«      «       |j                  t        j                   d«      «      }|j                  | j                  «       ›d|›d|›d|j                  | j                  «       | j                  «      ›�«       | j                  |«       |j                  d| j                  «       z  «       | j#                  |d	| j                  «       z  «       |j                  |j                  | j                  «       | j                  «      «       | j                  |«       |j                  d
«       |j%                  | j                  d| j                  «       z  «       y )Nz = PyDict_Keys(r¥  ÚPyObjectCallMethod0r6  Úkeysz = __Pyx_PyObject_CallMethod0(r1  z"if (unlikely(!PyList_Check(%s))) {zPySequence_List(%s)rÕ   zPyList_Sort(%s))r�   rÛ   r­   r   r   rÊ   r  rÖ   r†   rì  rÇ   rÈ   r   rÉ   r�  r
   rH  rá  r‹  )rY   rÌ   Údict_resultÚ
keys_cnames       rT   r¾  z'SortedDictKeysNode.generate_result_code½&  s”  € Ø—h‘h×(Ñ(Ó*ˆØ�8‰8�=‰=œG×-Ñ-Ñ-Ø�J‰JØ—‘•š{Ø×'Ñ'¨¯©«°t·x±xÔ@ðBô Cð × Ñ  Ö&ð ×Ñ×-Ñ-¬k×.EÑ.EØ%Ð'9ó/;ô <à×/Ñ/´×0LÑ0LÈVÓ0TÓUˆJØ�J‰JØ—‘•š{ªJØ×'Ñ'¨¯©«°t·x±xÔ@ðBô Cð × Ñ  Ô&Ø�J‰JÐ;¸d¿k¹k»mÑKÔLØ×$Ñ$ TÐ+@À4Ç;Á;Ã=Ñ+PÔQØ�J‰J�t×.Ñ.¨t¯{©{«}¸d¿h¹hÓGÔHØ× Ñ  Ô&Ø�J‰J�sŒOØ×ÑØ�H‰HÐ'¨$¯.©.Ó*:Ñ:õ	<rU   N)	r[   r\   r]   ró   r  r‚  rX  rZ  r¾  rW   rU   rT   rF
  rF
  ¨&  s"   „ àˆw€Hà€Gò&òòó<rU   rF
  c                   ó   — e Zd ZdZeZd„ Zy)ÚSortedListNodez0Sorts a newly created Python list in place.
    c                 ó’   — |j                  |j                  d| j                  j                  «       › d�| j                  «      «       y )NzPyList_Sort(r¢  )rÊ   r÷  r�   r  r†   r³  s     rT   r¾  z#SortedListNode.generate_result_codeÛ&  s4   € Ø�
‰
�4×)Ñ)¨L¸¿¹¿¹Ó9JÐ8KÈ1Ð*MÈtÏxÉxÓXÕYrU   N)r[   r\   r]   r£  r   r­   r¾  rW   rU   rT   rP
  rP
  Ö&  s   „ ñà€DóZrU   rP
  c                   ó   — e Zd Zd„ Zd„ Zy)ÚModuleNameMixinc                 ó<   — |j                  | j                  d¬«      S ©NT©Ú
identifier)rg  r‹  r³  s     rT   Úget_py_mod_namezModuleNameMixin.get_py_mod_nameà&  s%   € Ø×'Ñ'Ø×Ñ¨ð (ó /ð 	/rU   c                 ó<   — |j                  | j                  d¬«      S rU
  )rg  r˜  r³  s     rT   Úget_py_qualified_namez%ModuleNameMixin.get_py_qualified_nameä&  s#   € Ø×'Ñ'Ø�M‰M dð (ó ,ð 	,rU   N)r[   r\   r]   rX
  rZ
  rW   rU   rT   rS
  rS
  ß&  s   „ ò/ó,rU   rS
  c                   ó<   — e Zd ZdgZeZdZd„ Zd„ Zd„ Z	d„ Z
dZd„ Zy	)
r(  ÚdocTc                  ó   — y rN   rW   rø   s     rT   rù   zClassNode.analyse_annotations÷&  rú   rU   c                 ó   — t         S rN   rI  rø   s     rT   r‘   zClassNode.infer_typeú&  ó   € äÐrU   c                 óè   — | j                   r@| j                   j                  |«      | _         | j                   j                  |«      | _         |j                  t	        j
                  dd«      «       | S )NÚCreateClassr6  )r\
  rX  r9  rÈ   r   rÉ   rø   s     rT   rX  zClassNode.analyse_typesþ&  sV   € Ø�8Š8Ø—x‘x×-Ñ-¨cÓ2ˆDŒHØ—x‘x×2Ñ2°3Ó7ˆDŒHØ×Ñœ[×4Ñ4°]ÐDVÓWÔXØˆrU   c                  ó   — yr·  rW   rX   s    rT   rZ  zClassNode.may_be_none'  r]  rU   úConstructing Python classc                 óÖ  — | j                   }|j                  | j                  «      }| j                  rx|j	                  | j
                  d|j                  j                  «       ›d|j                  t        j                  d«      «      ›d| j                  j                  «       ›d�«       | j                  |«      }| j                  |«      }|j                  | j                  «       ›d|j                  j                  «       ›d|j                  j                  «       ›d|›d|›d|›d|j                  | j                  «       | j
                  «      ›�«       | j!                  |«       y )Nr¹  r1  r£  r¢  z = __Pyx_CreateClass(r¥  )Úclass_def_noder�  rt   r\
  r‹  r†   r;  rÛ   r
   rH  rX
  rZ
  rÊ   r  ÚbasesrÖ   rì  )rY   rÌ   re
  r¿   Úpy_mod_namer˜  s         rT   r¾  zClassNode.generate_result_code
'  s  € Ø×,Ñ,ˆØ×&Ñ& t§y¡yÓ1ˆà�8Š8Ø×!Ñ! $§(¢(à"×'Ñ'×1Ñ1Õ3Ø×*Ñ*Ü&×4Ñ4°YÓ?õAà—H‘H×&Ñ&Õ(ð	*ô+ð ×*Ñ*¨4Ó0ˆØ×-Ñ-¨dÓ3ˆØ�
‰
à—‘•Ø×$Ñ$×.Ñ.Õ0Ø×#Ñ#×-Ñ-Õ/ÚÚÚØ×'Ñ'¨¯©«°t·x±xÔ@ðBô	Cð 	×Ñ˜TÕ"rU   N)r[   r\   r]   ró   r   r­   r  rù   r‘   rX  rZ  r§  r¾  rW   rU   rT   r(  r(  é&  s5   „ ð ˆw€HØ€DØ€Gòòòòð .€Kó#rU   r(  c                   ó>   — e Zd Zg ZeZdZdZd„ Zd„ Z	d„ Z
dZd„ Zd„ Zy	)
r)  FTc                 ó   — t         S rN   rI  rø   s     rT   r‘   zPy3ClassNode.infer_type4'  r_
  rU   c                 ó   — | S rN   rW   rø   s     rT   rX  zPy3ClassNode.analyse_types8'  r¯  rU   c                  ó   — yr·  rW   rX   s    rT   rZ  zPy3ClassNode.may_be_none;'  r]  rU   rc
  c           
      óÂ  — ddl m} | j                  j                  }|j                  j                  «       D �cg c]Y  }|j                  rKt        |j                  t        |j                  |j                  ¬«      |j                  j                  ¬«      ‘Œ[ }}|rÀt        ||¬«      }t        |t        j                  d«      ¬«      }|j                  |j                  «      xs! |j!                  |j                  t"        |«      |_        t'        |||¬«      }|j)                  |«       | j                  j*                  j,                  j/                  d	|«       y y c c}w )
Nr,   ©ÚAnnotationWriterr;  r—  r™  Ú__annotations__rÆ  )rÚ  r”   r   )ÚAutoDocTransformsrn
  re
  r†   rÂ  r�  ro  rœ  r•  rt   Ústringr�  r
  r
   rH  rÖ  rÝ  r   r¾   r0   rµ  ÚbodyrI  Úinsert)	rY   rv   rn
  Úpositionr¾   Ú
dict_itemsÚannotations_dictrÚ  rˆ   s	            rT   rù   z Py3ClassNode.analyse_annotations@'  s  € Ý7Ø×&Ñ&×*Ñ*ˆð Ÿ™×+Ñ+Ô-ó
ñ .�°×1AÒ1Aô Ø—	‘	Ü(¨¯©¸%¿*¹*ÔEØ×&Ñ&×-Ñ-öð
 .ð 	ð 
ñ Ü'¨À*ÔMÐÜ˜8¬.×*FÑ*FÐGXÓ*YÔZˆCØŸ™¨¯©Ó1Òc°S·_±_ÀSÇXÁXÌyÐZbÓ5cˆCŒIÜ'¨°cÐ?OÔPˆDØ×%Ñ% cÔ*Ø×Ñ×$Ñ$×*Ñ*×1Ñ1°!°TÕ:ð ùò
s   ¹AEc                 óþ  — |j                   j                  t        j                  dd«      «       |j	                  | j
                  «      }| j                  }|j                  r|j                  j                  «       nd}|j                  r|j                  j                  «       }n| j                  rd}nd}|j                  d| j                  «       |||j                  j                  «       |j                  j                  «       || j                  | j                   |j#                  | j                  «       | j$                  «      f	z  «       | j'                  |«       |j)                  | j                  «       «       y )NÚPy3ClassCreater6  rË  z((PyObject*)&PyType_Type)z$((PyObject*)&__Pyx_DefaultClassType)z9%s = __Pyx_Py3ClassCreate(%s, %s, %s, %s, %s, %d, %d); %s)rÇ   rÈ   r   rÉ   r�  rt   re
  ÚmkwrÛ   Ú	metaclassÚ
force_typerÊ   r  rf
  r;  Úcalculate_metaclassÚallow_py2_metaclassrÖ   r†   rì  Úput_make_object_deferred)rY   rÌ   r¿   re
  ry
  rz
  s         rT   r¾  z!Py3ClassNode.generate_result_codeT'  s3  € Ø×Ñ×)Ñ)¬+×*AÑ*AÐBRÐTfÓ*gÔhØ×&Ñ& t§y¡yÓ1ˆØ×,Ñ,ˆØ0>×0BÒ0Bˆn× Ñ ×*Ñ*Ô,ÈˆØ×#Ò#Ø&×0Ñ0×:Ñ:Ó<‰IØ�_Š_Ø3‰Ià>ˆIØ�
‰
ØGØ—‘“ØØØ×$Ñ$×.Ñ.Ó0Ø×#Ñ#×-Ñ-Ó/ØØ×(Ñ(Ø×(Ñ(Ø×'Ñ'¨¯©«°t·x±xÓ@ð	KBñ 	Bô
	Cð 	×Ñ˜TÔ"Ø×%Ñ% d§k¡k£mÕ4rU   N)r[   r\   r]   ró   r   r­   r{
  r  r‘   rX  rZ  r§  rù   r¾  rW   rU   rT   r)  r)  #'  s8   „ ð €HØ€DØ€JØ€Gòòòð .€Kò;ó(5rU   r)  c                   ó"   — e Zd Zg Zd„ Zd„ Zd„ Zy)ÚPyClassMetaclassNodec                 ó*   — t         | _        d| _        | S r·  )r   r­   r  rø   s     rT   rX  z"PyClassMetaclassNode.analyse_typesu'  s   € Ü"ˆŒ	ØˆŒØˆrU   c                  ó   — yr·  rW   rX   s    rT   rZ  z PyClassMetaclassNode.may_be_nonez'  r]  rU   c           
      óN  — | j                   j                  }| j                   j                  }|rU|j                  j	                  t        j                  dd«      «       d|j                  «       ›d|j                  «       ›d�}nB|j                  j	                  t        j                  dd«      «       d|j                  «       z  }|j                  | j                  «       ›d|›d	|j                  | j                  «       | j                  «      ›�«       | j                  |«       y )
NÚPy3MetaclassGetr6  z__Pyx_Py3MetaclassGet(r1  r¢  ÚCalculateMetaclassz"__Pyx_CalculateMetaclass(NULL, %s)rS  r¡  )re
  rf
  ry
  rÇ   rÈ   r   rÉ   r  rÊ   rÖ   r†   rì  )rY   rÌ   rf
  ry
  rL  s        rT   r¾  z)PyClassMetaclassNode.generate_result_code}'  sí   € Ø×#Ñ#×)Ñ)ˆØ×!Ñ!×%Ñ%ˆÙØ×Ñ×-Ñ-Ü×'Ñ'Ð(9Ð;MÓNõPð —‘•Ø—
‘
•ð‰Dð ×Ñ×-Ñ-Ü×'Ñ'Ð(<Ð>PÓQôSà7Ø—‘“ñ ˆDà�
‰
à—‘•štØ×'Ñ'¨¯©«°t·x±xÔ@ðBô	Cð 	×Ñ˜TÕ"rU   N©r[   r\   r]   ró   rX  rZ  r¾  rW   rU   rT   r€
  r€
  n'  s   „ ð
 €Hòò
ó#rU   r€
  c                   ó$   — e Zd ZdgZd„ Zd„ Zd„ Zy)ÚPyClassNamespaceNoder\
  c                 ó    — | j                   r/| j                   j                  |«      j                  |«      | _         t        | _        d| _        | S r«  )r\
  rX  r9  r   r­   r  rø   s     rT   rX  z"PyClassNamespaceNode.analyse_types›'  s=   € Ø�8Š8Ø—x‘x×-Ñ-¨cÓ2×EÑEÀcÓJˆDŒHÜ"ˆŒ	ØˆŒØˆrU   c                  ó   — yr·  rW   rX   s    rT   rZ  z PyClassNamespaceNode.may_be_none¢'  r]  rU   c                 óž  — |j                  | j                  «      }| j                  |«      }| j                  |«      }| j                  }d}| j
                  r| j
                  j                  «       n|}|j                  r|j                  j                  «       n|}|j                  r|j                  j                  «       n|}	|j                  | j                  «       ›d|	›d|j                  j                  «       ›d|›d|›d|›d|›d|›d|j                  | j                  «       | j                  «      ›�«       | j                  |«       y )Nz(PyObject *) NULLz = __Pyx_Py3MetaclassPrepare(r1  r¥  )r�  rt   rX
  rZ
  re
  r\
  r  ry
  rÛ   rz
  rÊ   rf
  rÖ   r†   rì  )
rY   rÌ   r¿   rg
  r˜  re
  ÚnullÚdoc_codery
  rz
  s
             rT   r¾  z)PyClassNamespaceNode.generate_result_code¥'  s  € Ø×&Ñ& t§y¡yÓ1ˆØ×*Ñ*¨4Ó0ˆØ×-Ñ-¨dÓ3ˆØ×,Ñ,ˆØ"ˆØ(,¯ª�4—8‘8—?‘?Ô$°dˆØ0>×0BÒ0Bˆn× Ñ ×*Ñ*Ô,ÈˆØ<J×<TÒ<T�N×,Ñ,×6Ñ6Ô8ÐZ^ˆ	Ø�
‰
à—‘•ÚØ×$Ñ$×+Ñ+Õ-ÚÚÚÚÚØ×'Ñ'¨¯©«°t·x±xÔ@ð	Bô
	Cð 	×Ñ˜TÕ"rU   Nr†
  rW   rU   rT   rˆ
  rˆ
  ’'  s   „ ð ˆw€Hòòó#rU   rˆ
  c                   ó.   — e Zd ZdZeZg ZdZd„ Zd„ Z	d„ Z
y)ÚClassCellInjectorNodeTFc                 ó   — | S rN   rW   rø   s     rT   r^  z)ClassCellInjectorNode.analyse_expressionsÃ'  r¯  rU   c                 óÚ   — | j                   sJ ‚|j                  | j                  «       ›d|j                  | j                  «       | j                  «      ›�«       | j                  |«       y )Nz = PyList_New(0); )Ú	is_activerÊ   r  rÖ   r†   rì  r³  s     rT   r¾  z*ClassCellInjectorNode.generate_result_codeÆ'  sT   € Ø�~Š~Ðˆ~Ø�
‰
à—‘•Ø×'Ñ'¨¯©«°t·x±xÔ@ðBô	Cð 	×Ñ˜TÕ"rU   c                 óà   — | j                   sJ ‚|j                  j                  t        j                  dd«      «       |j                  | j                  d| j                  «       ›d|›d�«       y )NÚCyFunctionClassCellúCythonFunction.cz__Pyx_CyFunction_InitClassCell(r1  r¢  )r’
  rÇ   rÈ   r   rÉ   r‹  r†   r  )rY   rÌ   Úclassobj_cnames      rT   Úgenerate_injection_codez-ClassCellInjectorNode.generate_injection_codeÎ'  sY   € Ø�~Š~Ðˆ~Ø×Ñ×)Ñ)Ü×#Ñ#Ð$9Ð;MÓNô	Pà×Ñ˜dŸhšhØ�K‰K�Mš>ð)+õ 	,rU   N)r[   r\   r]   r  r   r­   ró   r’
  r^  r¾  r—
  rW   rU   rT   r�
  r�
  ¼'  s%   „ à€GØ€DØ€HØ€Iòò#ó,rU   r�
  c                   ó(   — e Zd Zg ZdZdZeZd„ Zd„ Z	y)ÚClassCellNodeTFc                 ó   — | S rN   rW   rø   s     rT   rX  zClassCellNode.analyse_typesÝ'  r¯  rU   c                 ó°  — | j                   s4|j                  | j                  «       ›dt        j                  ›d�«       n3|j                  | j                  «       ›dt        j
                  ›d�«       |j                  d| j                  «       ›d|j                  | j                  «      ›d�«       |j                  | j                  «       t        «       y )Nz  = __Pyx_CyFunction_GetClassObj(r2  z =  z->classobj;zif (!zJ) { PyErr_SetString(PyExc_RuntimeError, "super(): empty __class__ cell"); rs  )
Úis_generatorrÊ   r  r   Ú
self_cnameÚgenerator_cnamerÙ   r†   r²  r   r³  s     rT   r¾  z"ClassCellNode.generate_result_codeà'  s”   € Ø× Ò Ø�J‰JØ—‘•Ü×!Ó!ð#õ $ð �J‰JØ—‘•œv×5Ó5ð7ô 8à�
Š
ð —‘•Ø—‘ §¡Õ)ð+ô	,ð
 	�‰˜Ÿ™›¤~Õ6rU   N)
r[   r\   r]   ró   r  rœ
  r   r­   rX  r¾  rW   rU   rT   r™
  r™
  Ö'  s    „ à€HØ€GØ€LØ€Dòó7rU   r™
  c                   óŽ   — e Zd Zg d¢ZdZdZdZdZdZdZ	dZ
eZdZdZdZed„ «       Zed„ «       Zd„ Zd„ Zd	„ Zd
Zd„ Zd„ Zd„ Zd„ Zy)r'  )Údefaults_tupleÚdefaults_kwdictrv
  FNr,   c                 óˆ   —  | |j                   ||j                  j                  |xs |j                  |j                  ¬«      S )N)r_  Úpymethdef_cnameÚbindingÚspecialized_cpdefs)r†   r¾   r£
  r¥
  )rR   rˆ   r¤
  s      rT   Úfrom_defnodezPyCFunctionNode.from_defnode
(  s=   € áØ�H‰HØØ ŸJ™J×6Ñ6ØÒ6˜t×6Ñ6Ø#×6Ñ6ô
ð 	
rU   c                 ó.   — | j                   j                  S rN   )r_  Úcode_objectrX   s    rT   r¨
  zPyCFunctionNode.code_object(  s   € à�}‰}×(Ñ(Ð(rU   c                 ó@   — | j                   r| j                  |«       | S rN   )r¤
  Úanalyse_default_argsrø   s     rT   rX  zPyCFunctionNode.analyse_types(  s   € Ø�<Š<Ø×%Ñ% cÔ*ØˆrU   c                 ó¼  — g }g }g }g }g }|j                   xs$ | j                  j                  xr |j                  }| j                  j                  D �]£  }|j
                  �r)|s½|j
                  j                  rgt        |j                  |j
                  «      |_        |j
                  j                  rl|j
                  j                  |j                  |«      |_        n@d|_        |j                  j                  r|j                  |«       n|j                  |«       |j
                  j                  rT|j
                  j                  j                  |«      r/|j                  r|j                  |«       n|j                  |«       |j                   s�ŒH|j                   j#                  |«      |_        |j                  |j                  |j$                  |j                   j&                  f«       �Œ¦ | j                  j(                  | j                  j*                  fD ]n  }|sŒ|j                   sŒ|j                   j#                  |«      |_        |j                  |j                  |j$                  |j                   j&                  f«       Œp | j                  j,                  }	|	r[|	j#                  |«      | j                  _        |j                  |	j                  t/        j0                  d«      |	j&                  f«       |s|�r­|j3                  «       }
g }|D ]7  }|j                  }|j4                  r|j6                  }|j                  |«       Œ9 ||D �cg c]  }|j                  ‘Œ c}z  }|
j9                  | j                  |«      | _        | j:                  j                  j<                  }t?        tA        |jB                  jE                  «       «      «      }|D ��cg c]  \  }}|jG                  d«      sŒ|‘Œ }}}g | _$        tK        ||z   |«      D ]3  \  }}|jL                  |_'        | jH                  j                  ||f«       Œ5 tQ        |«      | _)        | jH                  D ])  \  }}tT        jV                  ›d|jL                  ›�|_,        Œ+ |j$                  | j                  _-        |s|�r£| j:                  €Õ|rTt]        | j                  |D �cg c]  }|j
                  ‘Œ c}¬«      }|j#                  |«      j_                  |«      | _0        |�r>tc        | j                  |D �cg c]C  }te        |j                  tg        |j                  |j$                  ¬«      |j
                  ¬«      ‘ŒE c}¬	«      }|j#                  |«      | _4        �nÂ| jj                  �sµ|r6tm        | j                  || j:                  j                  j<                  «      }nto        | j                  «      }|r6tq        | j                  || j:                  j                  j<                  «      }nto        | j                  «      }ts        jt                  | j                  g ddts        jv                  | j                  tx        t]        | j                  ||g¬«      ¬
«      dt/        j0                  d«      ¬«      }|j3                  «       }
tr        jz                  j}                  ||
«      }|j                  |
«       |j�                  |
«      }|j‚                  }|j‚                  j�                  |j„                  «      |_A        d|_C        d|_D        || j                  _E        |r[tc        | j                  |D ���cg c]  \  }}}te        |tg        ||¬«      |¬«      ‘Œ! c}}}¬	«      }|j#                  |«      | _F        yyc c}w c c}}w c c}w c c}w c c}}}w )zB
        Handle non-literal function's default arguments.
        TrF  r�   r)  Nr¹  r;  r—  r™  )ré  r½   Ú__defaults__)r—   r`  ra  rr
  Ú
decoratorsrt   F)GrÜ  r_  Ú
is_wrapperr×  r—   ru   r¯   ÚDefaultLiteralArgNoder†   r­   r  Ú
is_dynamicrs   r  rÛ  Úkw_onlyro  rX  rt   rq
  r`  ra  Úreturn_type_annotationr
   rH  rE  rÿ  ru  Údeclare_defaults_c_classÚdefaults_entryrN  rÁ  r  rÂ  rÃ  rÏ  ÚdefaultsrÊ  r¿   Údefaults_class_keyr“   Údefaults_pyobjectsr   Údynamic_args_cnamer)  Údefaults_structrF  r9  r 
  r�  rœ  r•  r¡
  r¥
  ÚDefaultsTupleNoder  ÚDefaultsKwDictNoder   ÚDefNodeÚReturnStatNoder   ÚCompilerDirectivesNodeÚfor_internalrµ  r^  rr
  Úlocal_scopeÚpy_wrapper_requiredÚpymethdef_requiredÚdefaults_getterrv
  )rY   rv   Únonliteral_objectsÚnonliteral_otherÚdefault_argsÚdefault_kwargsÚannotationsÚmust_use_constantsr�   ro  râ  rY  r%  Údefaults_class_scopeÚarg_entriesrt   r?  r¾   r 
  r¡
  rÃ
  Údirectives_noder†   r½   rv
  s                            rT   rª
  z$PyCFunctionNode.analyse_default_args(  sr  € ð  ÐØÐØˆØˆØˆð !×1Ñ1Òg°d·m±m×6NÑ6NÒ6fÐSV×SfÑSfÐà—=‘=×%Õ%ˆCØ�{‹{Ù)Ø—{‘{×-Ò-Ü&;¸C¿G¹GÀSÇ[Á[Ó&Q˜œØŸ;™;×+Ò+Ø*-¯+©+×*?Ñ*?ÀÇÁÈ#Ó*N˜C�Kà)-˜œØŸ8™8×/Ò/Ø.×5Ñ5°cÕ:à,×3Ñ3°CÔ8Ø—;‘;×#Ò#¨¯©×(8Ñ(8×(OÑ(OÐPSÔ(TØ—{’{Ø&×-Ñ-¨cÕ2à$×+Ñ+¨CÔ0Ø�~Œ~Ø!$§¡×!=Ñ!=¸cÓ!B�”Ø×"Ñ" C§G¡G¨S¯X©X°s·~±~×7LÑ7LÐ#MÖNð) &ð, —M‘M×*Ñ*¨D¯M©M×,FÑ,FÓGˆCÚ�s—~“~Ø!$§¡×!=Ñ!=¸cÓ!B�”Ø×"Ñ" C§G¡G¨S¯X©X°s·~±~×7LÑ7LÐ#MÕNð Hð
 —]‘]×9Ñ9ˆ
ÙØ3=×3KÑ3KÈCÓ3PˆD�M‰MÔ0Ø×Ñ 
§¡´×0LÑ0LÈXÓ0VØ *× 1Ñ 1ð 3ô 4ñ Ò!1Ø×+Ñ+Ó-ˆLØˆEÛ)�ØŸ™�Ø—?’?Ø!ŸJ™J�EØ—‘˜UÕ#ð	 *ð
 Ñ+;Ó=Ñ+; C�s—x“xÐ+;Ñ=Ñ=ˆEØ".×"GÑ"GÈÏÉÐRWÓ"XˆDÔØ#'×#6Ñ#6×#;Ñ#;×#AÑ#AÐ ô !¤Ð&:×&BÑ&B×&HÑ&HÓ&JÓ!KÓLˆKÙ-8ÔT©[¡' $¨¸D¿O¹OÈEÕ<RšA¨[ˆKÑTØˆDŒMÜ!Ð"4Ð7GÑ"GÈÖU‘
��UØ).¯©�Ô&Ø—‘×$Ñ$ c¨5 \Õ2ð Vô '*Ð*<Ó&=ˆDÔ#Ø"Ÿmœm‘
��Uä×-Ó-¨u¯{ª{ð%<�Õ!ð ,ð -A×,EÑ,EˆD�M‰MÔ)áš>Ø×"Ñ"Ð*ÙÜ%.¨t¯x©xÙ/;ó?=Ù/;¨˜Ÿ›¨|ñ?=ô &>�Nà*8×*FÑ*FÀsÓ*K×*^Ñ*^Ð_bÓ*c�DÔ'Ú!Ü&.¨t¯x©xñ
 $2óJ3ñ
 $2˜Cô	 %ØŸG™GÜ 4°S·W±WÀCÇHÁHÔ MØ"%§+¡+ö/ð $2ñJ3ô '4�Oð ,;×+HÑ+HÈÓ+M�DÖ(Ø×,Ó,áÜ%6ØŸ™ ,°×0CÑ0C×0HÑ0H×0NÑ0Nó&P‘Nô &.¨d¯h©hÓ%7�NÙ!Ü&8ØŸ™ .°$×2EÑ2E×2JÑ2J×2PÑ2Pó'R‘Oô '/¨t¯x©xÓ&8�Oä"'§-¡-Ø—H‘H 2°À4Ü×-Ñ-ØŸ™¬nÜ'Ø ŸH™H¨N¸OÐ+LôNôOð  $Ü'×5Ñ5°nÓEô#G�ð  #×/Ñ/Ó1�ä"'×">Ñ">×"KÑ"KÈOÐ]iÓ"j�Ø×4Ñ4°\ÔBØ"1×"EÑ"EÀlÓ"S�Ø"1×"6Ñ"6�Ø'6×';Ñ';×'OÑ'OØ#×/Ñ/ó(1�Ô$à6;�Ô3Ø5:�Ô2Ø0?�—‘Ô-ÙÜ'¨¯©ñ )4õ	C5ñ )4Ñ$�C˜˜uô ØÔ1°#¸TÔBØö!ð )4ó	C5ô  6Ðð
 %5×$BÑ$BÀ3Ó$GˆDÕ!ð ùòC >ùó Uùò?=ùòJ3ùôRC5s%   Í"_Ï,_Ð_Ó#_
Ô:A_
Ý<$_c                  ó   — yr’  rW   rX   s    rT   rZ  zPyCFunctionNode.may_be_none (  r­  rU   zConstructing Python functionc                  ó   — y)NrË  rW   rX   s    rT   Úclosure_result_codez#PyCFunctionNode.closure_result_code¥(  s   € ØrU   c                 ób   — | j                   r| j                  |«       y | j                  |«       y rN   )r¤
  Úgenerate_cyfunction_codeÚgenerate_pycfunction_coder³  s     rT   r¾  z$PyCFunctionNode.generate_result_code¨(  s%   € Ø�<Š<Ø×)Ñ)¨$Õ/à×*Ñ*¨4Õ0rU   c                 ó"  — | j                  |«      }|j                  | j                  «       ›d| j                  ›d| j	                  «       ›d|›d|j                  | j                  «       | j                  «      ›�	«       | j                  |«       y )Nz = PyCFunction_NewEx(&r1  r¥  )rX
  rÊ   r  r£
  rÏ
  rÖ   r†   rì  )rY   rÌ   rg
  s      rT   rÒ
  z)PyCFunctionNode.generate_pycfunction_code®(  sp   € Ø×*Ñ*¨4Ó0ˆØ�
‰
à—‘•Ø×$Ó$Ø×(Ñ(Õ*ÚØ×'Ñ'¨¯©«°t·x±xÔ@ðBô	Cð 	×Ñ˜TÕ"rU   c                 ó$
  — | j                   r| j                   d   }n| j                  }| j                   s| j                  r2|j                  j	                  t        j                  dd«      «       d}n1|j                  j	                  t        j                  dd«      «       d}g }|j                  r|j                  d«       n|j                  r|j                  d«       |j                  j                  j                  r'|j                  j                  s|j                  d	«       |j                  r|j                  d
«       |rdj!                  |«      }nd}|j#                  t$        j&                  «      }| j(                  j+                  |«       |j-                  | j/                  «       ›d|›d| j0                  ›d|›d| j3                  |«      ›d| j5                  «       ›d| j7                  |«      ›d|›d| j(                  j9                  «       ›d|j;                  | j/                  «       | j<                  «      ›�«       | j?                  |«       |jA                  | j/                  «       «       |jB                  r`|jD                  sJ d«       ‚|jD                  d   }|j-                  d|jF                  j/                  «       ›d| j9                  «       ›d�«       | jH                  ræ|j-                  d| j/                  «       ›d|j#                  | jJ                  jL                  jN                  «      ›d|jQ                  | j<                  «      ›�«       d| jJ                  jL                  jR                  ›d| j/                  «       ›d�}| jH                  D ]4  \  }}	|jT                  sŒ|jW                  ||› d|	jX                  › �¬«       Œ6 | jZ                  r>|j-                  d| j/                  «       ›d| jZ                  j9                  «       ›d�«       | j                   sæ| j\                  r>|j-                  d| j/                  «       ›d| j\                  j9                  «       ›d�«       |j^                  rD|j-                  d| j/                  «       ›d|j^                  j                  j`                  ›d�«       | jb                  r?|j-                  d| j/                  «       ›d| jb                  j9                  «       ›d�«       y y y )Nr   ÚFusedFunctionr•
  Ú__pyx_FusedFunction_NewÚCythonFunctionÚ__Pyx_CyFunction_NewÚ__Pyx_CYFUNCTION_STATICMETHODÚ__Pyx_CYFUNCTION_CLASSMETHODÚ__Pyx_CYFUNCTION_CCLASSÚ__Pyx_CYFUNCTION_COROUTINEr›  rà  rS  z(&r1  r¥  zpyclass_stack is emptyr�  zPyList_Append(r2  z#if (!__Pyx_CyFunction_InitDefaults(ú)) ú!__Pyx_CyFunction_Defaults(struct r¢  r)  )Úcyfunc_struct_targetz"__Pyx_CyFunction_SetDefaultsTuple(z#__Pyx_CyFunction_SetDefaultsKwDict(z#__Pyx_CyFunction_SetDefaultsGetter(z$__Pyx_CyFunction_SetAnnotationsDict()2r¥
  r_  Úis_specializationrÇ   rÈ   r   rÉ   Úis_staticmethodr  Úis_classmethodrÀ
  rë  rÜ  r¾   Úis_anonymousÚis_coroutiner£  r  r   r]  r¨
  r¾  rÊ   r  r£
  rZ
  rÏ
  rX
  rÛ   rÖ   r†   rì  r~
  Úrequires_classobjÚpyclass_stackÚ
class_cellrµ
  r´
  r­   r|  rÙ   Úobjstruct_cnamer°
  rÒ  r¿   r 
  r¡
  rÃ
  rh  rv
  )
rY   rÌ   r_  r¯  Úflagsr]  Ú
class_noderµ
  r�   r¾   s
             rT   rÑ
  z(PyCFunctionNode.generate_cyfunction_codeº(  sî  € Ø×"Ò"Ø×.Ñ.¨qÑ1‰Hà—}‘}ˆHà×"Ò" d×&<Ò&<Ø×Ñ×-Ñ-Ü×'Ñ'¨Ð9KÓLôNà3‰Kà×Ñ×-Ñ-Ü×'Ñ'Ð(8Ð:LÓMôOà0ˆKàˆØ×#Ò#Ø�L‰LÐ8Õ9Ø×$Ò$Ø�L‰LÐ7Ô8à×Ñ×,Ñ,×=Ò=ÀhÇnÁn×FaÒFaØ�L‰LÐ2Ô3à× Ò Ø�L‰LÐ5Ô6áØ—J‘J˜uÓ%‰EàˆEà×1Ñ1´&×2FÑ2FÓGˆØ×Ñ×-Ñ-¨dÔ3à�
‰
à—‘•ÚØ×$Ó$ÚØ×*Ñ*¨4Õ0Ø×(Ñ(Õ*Ø×$Ñ$ TÕ*ÚØ× Ñ ×*Ñ*Õ,Ø×'Ñ'¨¯©«°t·x±xÔ@ð
Bô	Cð 	×Ñ˜TÔ"Ø×%Ñ% d§k¡k£mÔ4à×%Ò%Ø×%Ò%Ð?Ð'?Ó?Ð%Ø×+Ñ+¨BÑ/ˆJØ�JŠJà×)Ñ)×0Ñ0Õ2Ø—N‘NÕ$ð&ô'ð
 �=Š=Ø�JŠJà—K‘K•MØ×-Ñ-¨d×.AÑ.A×.FÑ.F×.TÑ.TÕUØ—O‘O D§H¡HÔ-ð/õ0ð ×#Ñ#×(Ñ(×8Ó8¸$¿+¹+½-ðIˆHà"Ÿmœm‘
��UØ—>“>Ø×0Ñ0°ÈxÈjÐXZÐ[`×[fÑ[fÐZgÐLhÐ0Õið ,ð ×ÒØ�JŠJØ—‘•˜t×2Ñ2×<Ñ<Õ>ð@ô Aà×&Ò&ð ×#Ò#Ø—
’
Ø—K‘K•M 4×#7Ñ#7×#AÑ#AÕ#CðEô Fà×'Ò'Ø—
’
Ø—K‘K•M 8×#;Ñ#;×#AÑ#A×#NÓ#NðPô Qà×$Ò$Ø—
’
Ø—K‘K•M 4×#8Ñ#8×#BÑ#BÕ#DðFõ Gð %ð 'rU   )r[   r\   r]   ró   r¤
  r_  rµ
  r´
  r 
  r¡
  rv
  r   r­   r  r¥
  rà
  r}  r¦
  r{  r¨
  rX  rª
  rZ  r§  rÏ
  r¾  rÒ
  rÑ
  rW   rU   rT   r'  r'  ð'  s™   „ ò I€Hà€GØ€HØ€HØ€NØ€NØ€OØÐà€DØ€GàÐØÐàñ
ó ð
ð ñ)ó ð)òò
AHòFð 1€Kòò1ò
#óVGrU   r'  c                   ó   — e Zd ZdZdZd„ Zy)ÚInnerFunctionNodeTc                 óB   — | j                   rdt        j                  z  S y)Nz((PyObject*)%s)rË  )Úneeds_closure_coder   Úcur_scope_cnamerX   s    rT   rÏ
  z%InnerFunctionNode.closure_result_code)  s   € Ø×"Ò"Ø$¤v×'=Ñ'=Ñ=Ð=ØrU   N)r[   r\   r]   r¤
  rî
  rÏ
  rW   rU   rT   rì
  rì
  )  s   „ ð €GØÐórU   rì
  c                   óV   — e Zd ZdZdZdZdZdZdZdZ	dZ
dZd„ Zed„ «       Zed„ «       Zy)ÚDefFuncLikeNodez\
    Adapter for CFuncDefNode to give it the same attributes as DefNode in CodeObjects.
    Fr   Nc                 óÂ   — |j                   j                  | _        |j                   j                  | _        |j                  | _        |j
                  | _        || _        y rN   )r¾   rt   rN  rÀ
  r—   r†   Ú_cfuncdef_node)rY   Úcfuncdef_nodes     rT   r‚  zDefFuncLikeNode.__init__-)  sK   € Ø!×'Ñ'×,Ñ,ˆŒ	Ø(×.Ñ.×4Ñ4ˆÔØ!×&Ñ&ˆŒ	Ø ×$Ñ$ˆŒØ+ˆÕrU   c                 ó.   — | j                   j                  S rN   )ró
  Únode_positionsrX   s    rT   rö
  zDefFuncLikeNode.node_positions4)  s   € à×"Ñ"×1Ñ1Ð1rU   c                 ó.   — | j                   j                  S rN   )ró
  Únode_positions_to_offsetrX   s    rT   rø
  z(DefFuncLikeNode.node_positions_to_offset8)  s   € à×"Ñ"×;Ñ;Ð;rU   )r[   r\   r]   r£  rœ
  rä
  Úis_asyncgenÚis_generator_expressionÚnum_posonly_argsrb  r`  ra  r‚  r{  rö
  rø
  rW   rU   rT   rñ
  rñ
  )  s`   „ ñð €LØ€LØ€KØ#ÐàÐØ€OØ€HØ€Lò,ð ñ2ó ð2ð ñ<ó ñ<rU   rñ
  c                   óJ   — e Zd ZdgZdZdZd„ Zed„ «       Zd„ Z	d
d„Z
d„ Zd	„ Zy)ÚCodeObjectNodeÚvarnamesFNc                 óT  — t         j                  | |j                  |¬«       t        |j                  «      }|j
                  j                  D �cg c]  }|j                  sŒ|‘Œ }}||z   D �cg c]#  }t        |j                  |j                  ¬«      ‘Œ% c}| _	        y c c}w c c}w )N)r_  r;  )
rñ   r‚  r†   r  r—   rÀ
  rÀ  rt   r•  rþ
  )rY   r_  r—   r�   Ú
local_varss        rT   r‚  zCodeObjectNode.__init__G)  s‘   € Ü×Ñ˜$ §¡°xÐÔ@Ü�H—M‘MÓ"ˆà%-×%9Ñ%9×%EÒ%EÓRÑ%E˜cÈÏË’cÐ%Eˆ
ÐRð ˜jÒ(ó
á(�ô ! §¡°·±Ö9Ø(ñ
ˆ�ùò Sùò
s   ÁB Á"B Á/(B%c                 ó$   —  | t        |«      «      S rN   )rñ
  )rR   rô
  s     rT   Ú	for_cfunczCodeObjectNode.for_cfuncQ)  s   € á”? =Ó1Ó2Ð2rU   c                  ó   — yr’  rW   rX   s    rT   rZ  zCodeObjectNode.may_be_noneU)  r­  rU   c                 ó^   — | j                   €|j                  | «      | _         | j                   S rN   ©r  Úget_py_codeobj_constr³  s     rT   r  z$CodeObjectNode.calculate_result_codeX)  s-   € Ø×ÑÐ#Ø#×8Ñ8¸Ó>ˆDÔØ×ÑÐrU   c                 óJ   — | j                   €|j                  | «      | _         y y rN   r  r³  s     rT   r¾  z#CodeObjectNode.generate_result_code])  s&   € Ø×ÑÐ#Ø#×8Ñ8¸Ó>ˆDÕð $rU   c                 óÔ  — | j                   }| j                  d   }|j                  |j                  d¬«      }|j                  d   j	                  «       }t
        j                  j                  |«      r|j                  d   j                  «       }t        j                  t        j                  |«      j                  «       «      }|j                  |«      }|j                  rVt        j                  t!        |j                  |«      j#                  d«      d«      }|j                  |«      }	t%        |«      }
nd}	d}
ddg}|j&                  r|j)                  d	«       |j*                  r|j)                  d
«       |j,                  r|j)                  d«       n;|j.                  r|j)                  d«       n|j0                  r|j)                  d«       |j2                  rd}nt%        |j4                  «      }|j6                  }|j8                  }t%        | j:                  «      }ddj=                  |«      z  xs d}|j?                  d«       |j?                  d||z
  › d|› d|› d|› d|› d|› d�«       | j:                  D ]  }|jA                  |«       Œ | j:                  D �cg c]  }|jC                  «       ‘Œ c}xs dg}|j?                  ddj=                  |«      z  «       | j:                  D ]$  }|jE                  |«       |jG                  |«       Œ& |j?                  | jH                  › d|› d|› d|	› d| jH                  › d|› d�«       |j?                  d«       y c c}w )Nr,   TrV
  r   z	iso8859-1rË  ÚCO_OPTIMIZEDÚCO_NEWLOCALSÚ
CO_VARARGSÚCO_VARKEYWORDSÚCO_ASYNC_GENERATORÚCO_COROUTINEÚCO_GENERATORz(unsigned int)(%s)Ú|rà  rœ  z5const __Pyx_PyCode_New_function_description descr = {r1  rX  z"PyObject* const varnames[] = {%s};z% = __Pyx_PyCode_New(descr, varnames, z", tuple_dedup_map); if (unlikely(!z)) goto rT  rÕ   )%r_  r†   rg  rt   Úget_filenametable_entryr'   r«  Úisabsr­  r
   rH  r(   ÚPathÚas_posixrö
  rU  r$   rv  r“   r`  r  ra  rù
  rä
  rœ
  rú
  r—   rû
  rb  rþ
  r£  rÊ   rÃ  rÛ   rË  rØ  r  )rY   rÌ   rÉ  rå  Úfirst_linenoÚfunc_name_resultÚ	file_pathÚfile_path_resultÚ
line_tableÚline_table_resultÚline_table_lengthré
  Úargcountrû
  Úkwonly_argcountÚnlocalsrl  rþ
  s                     rT   Úgenerate_codeobjzCodeObjectNode.generate_codeobja)  s  € Ø�}‰}ˆØ—x‘x ‘{ˆà×3Ñ3°D·I±IÈ$Ð3ÓOÐà—H‘H˜Q‘K×7Ñ7Ó9ˆ	Ü�7‰7�=‰=˜Ô#ØŸ™ ™×3Ñ3Ó5ˆIä"×0Ñ0´·±¸iÓ1H×1QÑ1QÓ1SÓTˆ	Ø×3Ñ3°IÓ>Ðà×ÒÜ'×5Ñ5Ô6FÀt×GZÑGZÐ\hÓ6i×6pÑ6pÐq|Ó6}ð  @Kó  LˆJØ $× 8Ñ 8¸Ó DÐÜ # J£Ñà &ÐØ !Ðð   Ð0ˆØ�=Š=Ø�L‰L˜Ô&Ø×ÒØ�L‰LÐ)Ô*Ø×ÒØ�L‰LÐ-Õ.Ø×ÒØ�L‰L˜Õ(Ø×ÒØ�L‰L˜Ô(à×'Ò'ð ‰Hä˜4Ÿ9™9“~ˆHà×0Ñ0ÐØ×.Ñ.ˆÜ�d—m‘mÓ$ˆØ$ s§x¡x°£Ñ6Ò=¸#ˆð 	�
‰
�3ŒØ�
‰
ØCØ˜/Ñ)Ð*¨"ØÐ  ØÐ˜rØˆi�rØˆg�RØˆnØðô		
ð —=”=ˆCØ×(Ñ(¨Õ.ð !ð 04¯}ª}Ó=©}¨�C—M‘M•O¨}Ñ=ÒFÀ#ÀˆØ�
‰
Ð7¸$¿)¹)ÀHÓ:MÑMÔNà—=”=ˆCØ×&Ñ& tÔ,Ø�N‰N˜4Õ ð !ð 	�
‰
Ø×ÑÐ ð !ð  Ð  ØÐ  Ø Ð!ð "ð "×-Ñ-Ð.¨h°{°mÀ1ðFô
	
ð 	�
‰
�3�ùò% >s   Ê'M%rN   )r[   r\   r]   ró   r  r  r‚  r}  r  rZ  r  r¾  r  rW   rU   rT   rý
  rý
  =)  sC   „ ð ˆ|€HØ€GØ€Kò
ð ñ3ó ð3òó ò
?óQrU   rý
  c                   óB   ‡ — e Zd Zg ZdZdZˆ fd„Zd„ Zd„ Zd„ Z	d„ Z
ˆ xZS )r¯
  TFc                 ó˜   •— t         ‰| �  |«       || _        |j                  | _        | j                  j                  | _        d| _        y r’  )rP   r‚  r�   rƒ   r­   Ú	evaluatedrƒ  s      €rT   r‚  zDefaultLiteralArgNode.__init__¾)  s;   ø€ Ü‰Ñ˜ÔØˆŒØ"×2Ñ2ˆÔØ—H‘H—M‘MˆŒ	Øˆ�rU   c                 ó   — | S rN   rW   rø   s     rT   rX  z#DefaultLiteralArgNode.analyse_typesÅ)  r¯  rU   c                  ó   — y rN   rW   r³  s     rT   r¾  z*DefaultLiteralArgNode.generate_result_codeÈ)  rú   rU   c                 ób   — | j                   s#| j                  j                  |«       d| _         y y r·  )r"  r�   rÃ  r³  s     rT   rÃ  z.DefaultLiteralArgNode.generate_evaluation_codeË)  s'   € Ø�~Š~Ø�H‰H×-Ñ-¨dÔ3Ø!ˆD�Nð rU   c                 óh   — | j                   j                  | j                  j                  «       «      S rN   )r­   r	  r�   r  rX   s    rT   r  zDefaultLiteralArgNode.resultÐ)  s"   € Ø�y‰y×"Ñ" 4§8¡8§?¡?Ó#4Ó5Ð5rU   )r[   r\   r]   ró   r¯   r  r‚  rX  r¾  rÃ  r  r^   r_   s   @rT   r¯
  r¯
  µ)  s-   ø„ ð
 €HØ€JØ€Gôòòò"ö
6rU   r¯
  c                   ó4   ‡ — e Zd Zg Zˆ fd„Zd„ Zd„ Zd„ Zˆ xZS )ÚDefaultNonLiteralArgNodec                 ó@   •— t         ‰| �  |«       || _        || _        y rN   )rP   r‚  r�   r¹
  )rY   r†   r�   r¹
  rS   s       €rT   r‚  z!DefaultNonLiteralArgNode.__init__Ù)  s   ø€ Ü‰Ñ˜ÔØˆŒØ.ˆÕrU   c                 óJ   — | j                   j                  | _        d| _        | S r’  )r�   r­   r  rø   s     rT   rX  z&DefaultNonLiteralArgNode.analyse_typesÞ)  s   € Ø—H‘H—M‘MˆŒ	ØˆŒØˆrU   c                  ó   — y rN   rW   r³  s     rT   r¾  z-DefaultNonLiteralArgNode.generate_result_codeã)  rú   rU   c                 óÊ   — d| j                   j                  ›dt        j                  ›d| j                   j	                  | j
                  j                  «      j                  ›�S )NrÞ
  r1  r	  )r¹
  rt   r   r�
  rE  r�   r¶
  r¿   rX   s    rT   r  zDefaultNonLiteralArgNode.resultæ)  sI   � à× Ñ ×%Ó%¤v×'8Ó'8Ø× Ñ ×'Ñ'¨¯©×(CÑ(CÓD×JÒJðLð 	LrU   )	r[   r\   r]   ró   r‚  rX  r¾  r  r^   r_   s   @rT   r(  r(  Ô)  s   ø„ ð €Hô/ò
ò
öLrU   r(  c                   ó*   ‡ — e Zd Zˆ fd„Zdˆ fd„	Zˆ xZS )rº
  c                 ó¼   •— g }|D ]C  }|j                   j                  st        |||«      }n|j                   }|j                  |«       ŒE t        ‰| �  ||¬«       y ©Nr¹  )ru   r¯   r(  r  rP   r‚  )rY   r†   rµ
  r¹
  r—   r�   rS   s         €rT   r‚  zDefaultsTupleNode.__init__ï)  sV   ø€ ØˆÛˆCØ—;‘;×)Ò)Ü.¨s°C¸ÓI‘à—k‘k�Ø�K‰K˜Õð ô 	‰Ñ˜ 4ÐÕ(rU   c                 óB   •— t         ‰| �  ||«      j                  |«      S rN   )rP   rX  r9  )rY   rv   rE	  rS   s      €rT   rX  zDefaultsTupleNode.analyse_typesù)  s    ø€ Ü‰wÑ$ S¨-Ó8×KÑKÈCÓPÐPrU   rj  ©r[   r\   r]   r‚  rX  r^   r_   s   @rT   rº
  rº
  ì)  s   ø„ ô)÷Qñ QrU   rº
  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )r»
  c                 ó*  •— g }|D ]z  }t        |j                  |j                  ¬«      }|j                  j                  st        |||«      }n|j                  }|j                  t        |j                  ||¬«      «       Œ| t        ‰| �%  ||¬«       y )Nr;  r—  r™  )
r•  r†   rt   ru   r¯   r(  r  rœ  rP   r‚  )rY   r†   rµ
  r¹
  rÃ  r�   rt   rS   s          €rT   r‚  zDefaultsKwDictNode.__init__ *  sw   ø€ ØˆÛˆCÜ'¨¯©°s·x±xÔ@ˆDØ—;‘;×)Ò)Ü.¨s°C¸ÓI‘à—k‘k�Ø�L‰Lœ c§g¡g°4¸sÔCÕDð ô 	‰Ñ˜¨eÐÕ4rU   )r[   r\   r]   r‚  r^   r_   s   @rT   r»
  r»
  ý)  s   ø„ ÷	5ð 	5rU   r»
  c                   óX   ‡ — e Zd ZdgZ ej
                  d«      Zd„ Zˆ fd„Zˆ fd„Z	ˆ xZ
S )Ú
LambdaNoder_  z<lambda>c                 óˆ  — t        | d«      ry |j                  d«      x| _        | j                  _        d| j                  _        d| j                  _        d| j                  _        | j                  j                  |«       | j                  j                  j                  | _	        |j                  | j                  «       y )NÚlambda_nameÚlambdaT)rL  Únext_idr7  r_  Úno_assignment_synthesisrÂ
  rg  rµ  r¾   r£
  Úadd_lambda_defrø   s     rT   rµ  zLambdaNode.analyse_declarations*  sŒ   € Ü�4˜Ô'àØ7:·{±{À8Ó7LÐLˆÔ˜4Ÿ=™=Ô4Ø04ˆ�‰Ô-Ø+/ˆ�‰Ô(Ø&*ˆ�‰Ô#Ø�‰×*Ñ*¨3Ô/Ø#Ÿ}™}×2Ñ2×BÑBˆÔØ×Ñ˜4Ÿ=™=Õ)rU   c                 ób   •— | j                   j                  |«      | _         t        ‰| �  |«      S rN   )r_  r^  rP   rX  r3  s     €rT   rX  zLambdaNode.analyse_types&*  s)   ø€ ØŸ™×9Ñ9¸#Ó>ˆŒÜ‰wÑ$ SÓ)Ð)rU   c                 óZ   •— | j                   j                  |«       t        ‰| �  |«       y rN   )r_  rã	  rP   r¾  ©rY   rÌ   rS   s     €rT   r¾  zLambdaNode.generate_result_code**  s"   ø€ Ø�‰×-Ñ-¨dÔ3Ü‰Ñ$ TÕ*rU   )r[   r\   r]   rö   r
   rH  rt   rµ  rX  r¾  r^   r_   s   @rT   r5  r5  *  s2   ø„ ð �,€Kà'ˆ>×'Ñ'¨
Ó3€Dò
*ô*÷+ð +rU   r5  c                   ó–   ‡ — e Zd Z ej                  d«      ZdZej                  dgz   Zej                  dgz   Z	ˆ fd„Z
ˆ fd„Zd„ Zˆ xZS )ÚGeneratorExpressionNodeÚgenexprFÚcall_parametersc                 ó:   •— t        ‰| �  |g|¢­i |¤Ž g | _        y rN   )rP   r‚  rB  )rY   r†   r—   rù  rS   s       €rT   r‚  z GeneratorExpressionNode.__init__>*  s"   ø€ Ü‰Ñ˜Ð,˜tÒ, tÒ,Ø!ˆÕrU   c                 óP  •— t        | d«      ry |j                  d«      | _        t        ‰| �  |«       d| j
                  _        d| j
                  _        d| j
                  _        t        j                  | j
                  j                  _        t        | j                  t        j                   «      rMt        | j                  j"                  t$        «      sJ ‚| j                  j"                  j'                  d |«       y t        | j                  t        j(                  «      sJ ‚y )NÚgenexpr_namerA  F)rL  r9  rE  rP   rµ  r_  rÂ
  rÁ
  rg  r5   Úpyfunction_noargsr¾   r&  r‚   rÖ	  r   rÚ	  r8  r­  r³  rÛ	  r3  s     €rT   rµ  z,GeneratorExpressionNode.analyse_declarationsB*  sÌ   ø€ Ü�4˜Ô(àØŸK™K¨	Ó2ˆÔÜ‰Ñ$ SÔ)à+0ˆ�‰Ô(Ø,1ˆ�‰Ô)Ø&+ˆ�‰Ô#ä(1×(CÑ(Cˆ�‰×ÑÔ%ä�d—i‘i¤×!5Ñ!5Ô6Ü˜dŸi™i×0Ñ0´.ÔAÐAÐAØ�I‰I×Ñ×)Ñ)¨$°Õ4ä˜dŸi™i¬×)>Ñ)>Ô?Ð?Ñ?rU   c                 ó¦  — | j                  «       g| j                  D �cg c]  }|j                  «       ‘Œ c}z   }dj                  |«      }|j	                  | j                  «       ›d| j
                  j                  j                  ›d|›d|j                  | j                  «       | j                  «      ›�«       | j                  |«       y c c}w )Nr1  rS  rR  r¥  )rÏ
  rB  r  r£  rÊ   r_  r¾   rh  rÖ   r†   rì  )rY   rÌ   ÚcpÚargs_to_calls       rT   r¾  z,GeneratorExpressionNode.generate_result_codeU*  s©   € Ø×1Ñ1Ó3Ð4Ø04×0DÒ0DÓFÑ0D¨"˜"Ÿ)™)�+Ð0DÑFñGˆà—y‘y Ó.ˆØ�
‰
à—‘•Ø—‘×#Ñ#×0Ó0ÚØ×'Ñ'¨¯©«°t·x±xÔ@ð	Bô	Cð 	×Ñ˜TÕ"ùò Gs   ŸC)r[   r\   r]   r
   rH  rt   r¤
  r5  rö   ró   r‚  rµ  r¾  r^   r_   s   @rT   r@  r@  /*  sT   ø„ ð (ˆ>×'Ñ'¨	Ó2€DØ€Gà×(Ñ(Ð,=Ð+>Ñ>€KØ×"Ñ"Ð&7Ð%8Ñ8€Hô"ô@ö&
#rU   r@  c                   óH   — e Zd ZdgZeZdZdZdZdZ	dZ
d„ Zd„ Zd„ Zd„ Zd	„ Zy
)ÚYieldExprNoder�   r   FÚyieldc                 ó\  — | j                   r| j                  r/| j                  r#t        | j                  d| j
                  z  «       d| _        | j                  �Q| j                  j                  |«      | _        | j                  j                  j                  s| j                  |«       | S )Nz'%s' not supported herer,   )Ú	label_numÚis_yield_fromÚin_async_genr   r†   Úexpr_keywordr  r�   rX  r­   rs   Úcoerce_yield_argumentrø   s     rT   rX  zYieldExprNode.analyse_typesq*  s~   € Ø�~Š~ $×"4Ò"4¸×9JÒ9JÜ�$—(‘(Ð5¸×8IÑ8IÑIÔJØˆŒØ�8‰8ÐØ—x‘x×-Ñ-¨cÓ2ˆDŒHØ—8‘8—=‘=×,Ò,Ø×*Ñ*¨3Ô/ØˆrU   c                 óD   — | j                   j                  |«      | _         y rN   ©r�   r9  rø   s     rT   rR  z#YieldExprNode.coerce_yield_argument{*  s   € Ø—8‘8×.Ñ.¨sÓ3ˆ�rU   c                 óä  — | j                   r¯| j                   j                  |«       | j                   j                  |«       |j                  t        j
                  ›d| j                   j                  t        «      ›d�«       | j                   j                  |«       | j                   j                  |«       n$|j                  t        j
                  t        «       | j                  |«       y ©NrS  rT  )r�   rÃ  r´  rÊ   r   r
  r  r   rÏ  rØ  Úput_init_to_py_noneÚgenerate_yield_coder³  s     rT   rÃ  z&YieldExprNode.generate_evaluation_code~*  s£   € Ø�8Š8Ø�H‰H×-Ñ-¨dÔ3Ø�H‰H×)Ñ)¨$Ô/Ø�J‰Jä×'Ó'Ø—H‘H×&Ñ&¤~Õ6ð8ô9ð �H‰H×2Ñ2°4Ô8Ø�H‰H×Ñ Õ%à×$Ñ$¤V×%8Ñ%8¼.ÔIØ× Ñ  Õ&rU   c           	      óŽ  — |j                  | j                  j                  dd«      «      \  }}|j                  |«       g }|j                  j
                  j                  «        |j                  j                  «       D ]º  \  }}}|j                  j
                  j                  |«      }|j                  |||f«       |j                  r5|j                  j                  t        j                  dd«      «       d|z  }n|j                  ||«       |j!                  t"        j$                  ›d|›d|›d�«       Œ¼ |j                  j&                  d	   }	|j                  j&                  d
   }
|	s|
r+|j)                  t"        j*                  | j,                  ¬«       |j                  t"        j*                  t.        «       |j1                  «        |j                  j2                  �#|j!                  dt"        j4                  z  «       n"|j!                  dt"        j4                  z  «       |j!                  d| j6                  rdnd›d| j8                  rdnd›d�«       |j!                  dt"        j4                  |fz  «       | j6                  r/| j8                  s#|j!                  dt"        j*                  z  «       n"|j!                  dt"        j*                  z  «       |j;                  |«       |	s|
r|j=                  | j,                  «       |D ]š  \  }}}t"        j$                  ›d|›�}|j                  rd|z  }|j!                  |›d|›d�«       |j>                  r'|j!                  d|z  «       |jA                  ||«       Œw|jB                  sŒ„|j!                  |›d|›d�«       Œœ | jE                  |t"        jF                  «       | jH                  ri| jK                  |«       |jM                  | jO                  «       ›dt"        jF                  ›d�«       |jQ                  | jO                  «       t.        «       yy)z
        Generate the code to return the argument in 'Naming.retval_cname'
        and to continue at the yield label.
        rr  r™  rÈ  rÉ  z__PYX_STD_MOVE_IF_SUPPORTED(%s)r)  rS  rT  ÚprofileÚ	linetrace)r†   Nz"__Pyx_Coroutine_SwapException(%s);z+__Pyx_Coroutine_ResetAndClearException(%s);z/* return from zasync rù  zgenerator, ÚawaitrL  zing value */z%s->resume_label = %d;z,return __Pyx__PyAsyncGenValueWrapperNew(%s);z
return %s;rÎ  z.memview = NULL; z.data = NULL;r¡  ))Únew_yield_labelrQ  ÚreplaceÚ	use_labelr¦  Úclosure_tempsÚresetÚtemps_in_user§  r  r  rÇ   rÈ   r   rÉ   rô  rÊ   r   rï
  rn   Úput_trace_yieldr
  r†   r   Úput_finish_refcount_contextÚcurrent_exceptrž
  rP  Úis_awaitrÍ  Úput_trace_resumers   rî  r  Ú!generate_sent_value_handling_codeÚsent_value_cnamer¥  r©  rú  r  r²  )rY   rÌ   rN  Úresume_labelÚsavedr¿   r­   r¢  Ú
save_cnamerZ  r[  s              rT   rX  z!YieldExprNode.generate_yield_codeŒ*  s]  € ð
 #'×"6Ñ"6Ø×Ñ×%Ñ% c¨3Ó/ó#1Ñˆ	�<à�‰�|Ô$àˆØ�‰×$Ñ$×*Ñ*Ô,Ø'+§~¡~×'BÑ'BÖ'DÑ#ˆE�4˜ØŸ™×5Ñ5×CÑCÀDÓIˆJØ�L‰L˜% ¨TÐ2Ô3Ø× Ò Ø× Ñ ×1Ñ1Ü×+Ñ+Ð,=Ð?OÓPôRà9¸EÑA‘à×!Ñ! %¨Ô.Ø�J‰J¬×)?Ó)?ÂÊUÐSÕTð (Eð ×"Ñ"×-Ñ-¨iÑ8ˆØ×$Ñ$×/Ñ/°Ñ<ˆ	Ù‘iØ× Ñ ¤×!4Ñ!4¸$¿(¹(Ð ÔCà×Ñœ&×-Ñ-¬~Ô>Ø×(Ñ(Ô*à�>‰>×(Ñ(Ð4à�J‰JÐ;¼f×>TÑ>TÑTÕUð �J‰JÐDÄv×G]ÑG]Ñ]Ô^à�
Š
Ø×)Ò)‰H¨rÑ1Ø—}’}‰G¨'Ñ1ð3ô 	4ð 	�
‰
Ð+Ü×"Ñ" Ið//ñ /ô 	0à×Ò T§]¢]à�J‰JÐEÌ×H[ÑH[Ñ[Õ\à�J‰J�|¤f×&9Ñ&9Ñ9Ô:à�‰�|Ô$á‘iØ×!Ñ! $§(¡(Ô+ã',Ñ#ˆE�:˜tÜ%+×%;Ó%;¹ZÐHˆJØ× Ò Ø>ÀÑK�
Ø�J‰J¢UªJÐ7Ô8Ø×ÒØ—
‘
˜9 zÑ1Ô2Ø× Ñ  ¨Õ-Ø×(Ó(Ø—
‘
Â:ÊzÐZÕ[ð (-ð 	×.Ñ.¨t´V×5LÑ5LÔMØ×ÒØ×%Ñ% dÔ+Ø�H‰H D§K¡K¥M´6×3JÓ3JÐKÔLØ�O‰O˜DŸK™K›M¬>Õ:ð rU   c                 óZ   — |j                  |j                  || j                  «      «       y rN   )rÊ   rÖ   r†   ©rY   rÌ   r9
  s      rT   rh  z/YieldExprNode.generate_sent_value_handling_codeÑ*  s   € Ø�
‰
�4×*Ñ*¨;¸¿¹ÓAÕBrU   N)r[   r\   r]   ró   r   r­   rN  rO  rf  rP  rQ  rX  rR  rÃ  rX  rh  rW   rU   rT   rK  rK  b*  sE   „ ð ˆw€HØ€DØ€IØ€MØ€HØ€LØ€Lòò4ò'òC;óJCrU   rK  c                   ó&   — e Zd Zd„ Zdd„Zd„ Zd„ Zy)Ú_YieldDelegationExprNodec                 ó   — t        «       ‚rN   )ÚNotImplementedErrorr³  s     rT   Úyield_from_funcz(_YieldDelegationExprNode.yield_from_funcÖ*  s   € Ü!Ó#Ð#rU   Nc                 ó&  — |€| j                   j                  |«       |j                  j                  t        j
                  d¬«      }|j                  |›d| j                  |«      ›dt        j                  ›d|€| j                   j                  «       n|›dt        j                  ›d�
«       |€7| j                   j                  |«       | j                   j                  |«       n|r|j                  |t        «       |j                  d|z  «       |j!                  t        j                  t        «       |j                  j#                  |«       | j%                  |«       |j                  d	|z  «       |j!                  t        j                  t        «       | j&                  r| j)                  |«       n$|j                  t        j                  t        «       |j                  d
«       | j+                  |«       |j                  d«       y )NFr¡  rS  rR  r1  ú, &r2  zif (likely(%s == PYGEN_NEXT)) {z(} else if (likely(%s == PYGEN_RETURN)) {rò  rÕ   )r�   rÃ  r¦  r§  r   ÚPySendResult_typerÊ   rs  r   rž
  rÛ   r
  rË  rØ  rÊ  r   ré  r¯  rX  r¥  Úfetch_iteration_resultÚpropagate_exception)rY   rÌ   r`  ra  Úresult_temps        rT   rÃ  z1_YieldDelegationExprNode.generate_evaluation_codeÙ*  s…  € ØÐØ�H‰H×-Ñ-¨dÔ3Ø—n‘n×2Ñ2´:×3OÑ3OÐ\aÐ2ÓbˆØ�
‰
ÚØ× Ñ  Õ&Ü×"Ó"Ø$0Ð$8ˆD�H‰H×ÑÔ ¸lÑJÜ×Óð!ô 	"ð ÐØ�H‰H×+Ñ+¨DÔ1Ø�H‰H×Ñ Õ%ÙØ×!Ñ! ,´Ô?à�
‰
Ð4°{ÑBÔCØ�‰œ×+Ñ+¬^Ô<Ø�‰×#Ñ# KÔ0Ø× Ñ  Ô&Ø�
‰
Ð=ÀÑKÔLØ�‰œ×+Ñ+¬^Ô<Ø×ÒØ×'Ñ'¨Õ-à×!Ñ!¤&×"5Ñ"5´~ÔFØ�
‰
�:ÔØ× Ñ  Ô&Ø�
‰
�3�rU   c                 ó    — |j                  t        j                  t        «       |j	                  |j                  | j                  «      «       y rN   )rî  r   r
  r   rÊ   rÙ   r†   r³  s     rT   rx  z,_YieldDelegationExprNode.propagate_exceptionø*  s1   € à×Ñœ×,Ñ,¬nÔ=Ø�
‰
�4—?‘? 4§8¡8Ó,Õ-rU   c                 óŒ   — |j                  | j                  «       ›dt        j                  ›dt        j                  ›d�«       y )NrS  r¡  r-  )rÊ   r  r   r
  r³  s     rT   rw  z/_YieldDelegationExprNode.fetch_iteration_resultý*  s.   € à�
‰
Ø�K‰K�MÜ×ÓÜ×Óð
õ 	rU   r’  )r[   r\   r]   rs  rÃ  rx  rw  rW   rU   rT   rp  rp  Õ*  s   „ ò$óò>.ó
rU   rp  c                   ó    — e Zd ZdZdZd„ Zd„ Zy)ÚYieldFromExprNodeTz
yield fromc                 ó°   — | j                   j                  j                  st        | j                  d«       | j                   j                  |«      | _         y )Nz-yielding from non-Python object not supported)r�   r­   r¿  r   r†   r9  rø   s     rT   rR  z'YieldFromExprNode.coerce_yield_argument+  s8   € Ø�x‰x�}‰}×&Ò&ä�$—(‘(ÐKÔLØ—8‘8×.Ñ.¨sÓ3ˆ�rU   c                 ób   — |j                   j                  t        j                  dd«      «       y)NÚGeneratorYieldFromrN  Ú__Pyx_Generator_Yield_From©rÇ   rÈ   r   rÉ   r³  s     rT   rs  z!YieldFromExprNode.yield_from_func+  ó(   € Ø×Ñ×)Ñ)¬+×*AÑ*AÐBVÐXeÓ*fÔgØ+rU   N)r[   r\   r]   rO  rQ  rR  rs  rW   rU   rT   r}  r}  +  s   „ à€MØ€Lò4ó,rU   r}  c                   ó    — e Zd ZdZdZd„ Zd„ Zy)ÚAwaitExprNodeTr\  c                 ó^   — | j                   �!| j                   j                  |«      | _         y y rN   rT  rø   s     rT   rR  z#AwaitExprNode.coerce_yield_argument+  s'   € Ø�8‰8Ðà—x‘x×2Ñ2°3Ó7ˆD�Hð  rU   c                 ób   — |j                   j                  t        j                  dd«      «       y)NÚCoroutineYieldFromrN  Ú__Pyx_Coroutine_Yield_Fromr‚  r³  s     rT   rs  zAwaitExprNode.yield_from_func$+  rƒ  rU   N)r[   r\   r]   rf  rQ  rR  rs  rW   rU   rT   r…  r…  +  s   „ ð €HØ€Lò8ó
,rU   r…  c                   ó*   ‡ — e Zd Zd„ Zˆ fd„Zd„ Zˆ xZS )ÚAwaitIterNextExprNodec                 ó®   — |j                  d«       |j                  d«       |j                  d«       |j                  d«       |j                  d«       y )Nz8PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();zÕif (unlikely(exc_type && (exc_type == PyExc_StopAsyncIteration || ( exc_type != PyExc_StopIteration && exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopAsyncIteration))))) {r4  r  rÕ   )rÊ   r³  s     rT   Ú_generate_breakz%AwaitIterNextExprNode._generate_break.+  sH   € Ø�
‰
ÐMÔNØ�
‰
ð bô 	cð 	�
‰
Ð#Ô$Ø�
‰
�8ÔØ�
‰
�3�rU   c                 óF   •— | j                  |«       t        ‰| �	  |«       y rN   )r�  rP   rx  r>  s     €rT   rx  z)AwaitIterNextExprNode.propagate_exception7+  s   ø€ Ø×Ñ˜TÔ"Ü‰Ñ# DÕ)rU   c                 óê   — |j                   sJ d«       ‚|j                  d|z  «       | j                  |«       |j                  |j                  | j                  «      «       |j                  d«       y )Nz1AwaitIterNextExprNode outside of 'async for' loopr3  rÕ   )Úbreak_labelrÊ   r�  rÙ   r†   rn  s      rT   rh  z7AwaitIterNextExprNode.generate_sent_value_handling_code;+  s[   € Ø×ÒÐTÐ!TÓTÐØ�
‰
Ð)¨KÑ7Ô8Ø×Ñ˜TÔ"à�
‰
�4—?‘? 4§8¡8Ó,Ô-Ø�
‰
�3�rU   )r[   r\   r]   r�  rx  rh  r^   r_   s   @rT   r‹  r‹  )+  s   ø„ ò
ô*örU   r‹  c                   ó*   — e Zd ZeZdZd„ ZdZd„ Zd„ Z	y)ÚGlobalsExprNoder,   c                 óD   — |j                  t        j                  «       | S rN   )rÈ   r   Úglobals_utility_coderø   s     rT   rX  zGlobalsExprNode.analyse_typesH+  s   € Ø×ÑœW×9Ñ9Ô:ØˆrU   zConstructing globals dictc                  ó   — yr’  rW   rX   s    rT   rZ  zGlobalsExprNode.may_be_noneN+  r­  rU   c                 ó¾   — |j                  | j                  «       ›d|j                  | j                  «       | j                  «      ›�«       | j	                  |«       y )Nz = __Pyx_Globals(); )rÊ   r  rÖ   r†   rì  r³  s     rT   r¾  z$GlobalsExprNode.generate_result_codeQ+  sF   € Ø�
‰
Ø�K‰K�MØ×#Ñ# D§K¡K£M°4·8±8Ô<ð>ô 	?ð 	×Ñ˜TÕ"rU   N)
r[   r\   r]   r   r­   r  rX  r§  rZ  r¾  rW   rU   rT   r’  r’  D+  s"   „ Ø€DØ€Gòð .€Kòó#rU   r’  c                   ó   — e Zd Zd„ Zy)ÚLocalsDictItemNodec                 ób  — | j                   j                  |«      | _         | j                  j                  |«      | _        | j                   j                  |«      | _         | j                  j                  j                  |«      r"| j                  j                  |«      | _        | S d | _        | S rN   )r˜  rX  r½   r9  r­   rÛ  rø   s     rT   rX  z LocalsDictItemNode.analyse_typesY+  s…   € Ø—8‘8×)Ñ)¨#Ó.ˆŒØ—Z‘Z×-Ñ-¨cÓ2ˆŒ
Ø—8‘8×.Ñ.¨sÓ3ˆŒØ�:‰:�?‰?×1Ñ1°#Ô6ØŸ™×6Ñ6°sÓ;ˆDŒJð ˆð ˆDŒJØˆrU   N)r[   r\   r]   rX  rW   rU   rT   r˜  r˜  X+  s   „ órU   r˜  c                   ó$   ‡ — e Zd Zd„ Zˆ fd„Zˆ xZS )ÚFuncLocalsExprNodec                 ó>  — t        |j                  j                  «       D �cg c]  }|j                  sŒ|j                  ‘Œ c}«      }|D �cg c]'  }t	        |t        ||¬«      t        ||d¬«      ¬«      ‘Œ) }}t        j                  | ||d¬«       y c c}w c c}w )Nr;  T)rt   rA  r—  )rš  r2
  )	rÁ  rÂ  r�  rt   r˜  r•  r
  r�  r‚  )rY   r†   rv   r¾   r   rl  rÃ  s          rT   r‚  zFuncLocalsExprNode.__init__e+  s«   € ÜØ$'§K¡K×$6Ñ$6Ô$8óHÙ$8˜5¸E¿J»JˆE�J‹JÐ$8ñHó Iˆ
ñ
 'ó(ñ '�Sô $ØÔ)¨#°SÔ9Ü˜3 S°TÔ:ö<ð 'ð 	ð (ô 	×Ñ˜$ °UØ.2ð 	õ 	4ùòHùò(s   ¢B´BÁ,Bc                 ó†   •— t         ‰| �  |«      }|j                  D �cg c]  }|j                  �|‘Œ c}|_        |S c c}w rN   )rP   rX  rš  r½   )rY   rv   rˆ   r¬  rS   s       €rT   rX  z FuncLocalsExprNode.analyse_typeso+  sL   ø€ Ü‰wÑ$ SÓ)ˆØ,0×,@Ò,@ó  :Ñ,@ qØ$%§G¡GÐ$7ò "#Ð,@ñ  :ˆÔàˆùò :s   Ÿ>r1  r_   s   @rT   r›  r›  d+  s   ø„ ò4÷ð rU   r›  c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚPyClassLocalsExprNodec                 ó>   — t         j                  | |«       || _        y rN   )r¥  r‚  Úpyclass_dict)rY   r†   r¡  s      rT   r‚  zPyClassLocalsExprNode.__init__w+  s   € Ü×Ñ  cÔ*Ø(ˆÕrU   c                 óJ   — | j                   j                  | _        d| _        | S r’  )r¡  r­   r  rø   s     rT   rX  z#PyClassLocalsExprNode.analyse_types{+  s!   € Ø×%Ñ%×*Ñ*ˆŒ	ØˆŒØˆrU   c                  ó   — yr’  rW   rX   s    rT   rZ  z!PyClassLocalsExprNode.may_be_none€+  r­  rU   c                 ó6   — | j                   j                  «       S rN   )r¡  r  rX   s    rT   r  zPyClassLocalsExprNode.resultƒ+  s   € Ø× Ñ ×'Ñ'Ó)Ð)rU   c                  ó   — y rN   rW   r³  s     rT   r¾  z*PyClassLocalsExprNode.generate_result_code†+  rú   rU   N)r[   r\   r]   r‚  rX  rZ  r  r¾  rW   rU   rT   rŸ  rŸ  v+  s   „ ò)òò
ò*órU   rŸ  c                 óŒ   — |j                   rt        | «      S |j                  rt        | |j                  «      S t        | |«      S rN   )r×  r’  rØ  rŸ  r;  r›  )r†   Ú
scope_noderv   s      rT   ÚLocalsExprNoder¨  Š+  s=   € Ø
×ÒÜ˜sÓ#Ð#Ø
×ÒÜ$ S¨*¯/©/Ó:Ð:Ü˜c 3Ó'Ð'rU   )ÚnotÚ~r  rß   c                   ó|   — e Zd ZdgZdZdZd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zy)ÚUnopNoder·  TFc                 ól   — t         | j                     } || j                  j                  «      | _        y rN   )Úcompile_time_unary_operatorsr   r·  rƒ   ©rY   rå  s     rT   r2  z"UnopNode.calculate_constant_result¯+  s'   € Ü+¨D¯M©MÑ:ˆÙ# D§L¡L×$@Ñ$@ÓAˆÕrU   c                 ó   — t         j                  | j                  «      }|s#t        | j                  d| j                  z  «       | j
                  j                  |«      }	  ||«      S # t        $ r}| j                  |«       Y d }~y d }~ww xY w)Nz3Unary '%s' not supported in compile-time expression)	r®  rm   r   r   r†   r·  r<  rV  r@  )rY   r;  rå  r·  r?  s        rT   r<  zUnopNode.compile_time_value³+  s|   € Ü+×/Ñ/°·±Ó>ˆÙÜ�$—(‘(ØEØ—m‘mñ$ô%ð —,‘,×1Ñ1°$Ó7ˆð	-Ù˜“=Ð øÜò 	-Ø×)Ñ)¨!×,Ñ,ûð	-ús   Á!A) Á)	BÁ2BÂBc                 óÊ   — | j                   j                  |«      }|j                  s|j                  r|j	                  | j
                  «      }|�|S | j                  ||«      S rN   )r·  r‘   r  r  Úfind_cpp_operation_typer   Úinfer_unop_type)rY   rv   Úoperand_typeÚcpp_types       rT   r‘   zUnopNode.infer_type¿+  sY   € Ø—|‘|×.Ñ.¨sÓ3ˆØ×$Ò$¨×(;Ò(;Ø#×;Ñ;¸D¿M¹MÓJˆHØÐ#Ø�Ø×#Ñ# C¨Ó6Ð6rU   c                 óB   — |j                   r|j                  st        S |S rN   )rs   r¿  r   ©rY   rv   r´  s      rT   r³  zUnopNode.infer_unop_typeÇ+  s   € Ø×#Ò#¨L×,HÒ,HÜ!Ð!àÐrU   c                 óÒ   — | j                   j                  r=| j                   j                  j                  r| j                   j                  t        uryt        j                  | «      S r’  )r·  r­   r¿  r   rñ   rZ  rX   s    rT   rZ  zUnopNode.may_be_noneÍ+  sG   € Ø�<‰<×Ò §¡×!2Ñ!2×!BÒ!BØ�|‰|× Ñ ¬	Ñ1ØÜ×#Ñ# DÓ)Ð)rU   c                 ó¼  — | j                   j                  |«      | _         | j                  |«      rAt        t	        | j
                  | j                   j                  «      «      | _        d| _        | S | j                  «       r%| j                  |«       t        | _        d| _        | S | j                  «       r| j                  |«       | S | j                  |«       | S r«  )r·  rX  Úis_pythran_operationrJ   rA   r   r­   r  Úis_py_operationÚcoerce_operand_to_pyobjectr   Úis_cpp_operationÚanalyse_cpp_operationÚanalyse_c_operationrø   s     rT   rX  zUnopNode.analyse_typesÓ+  s¿   € Ø—|‘|×1Ñ1°#Ó6ˆŒØ×$Ñ$ SÔ)Ü#Ô$8¸¿¹ÈÏÉ×HYÑHYÓ$ZÓ[ˆDŒIØˆDŒLð ˆð ×!Ñ!Ô#Ø×+Ñ+¨CÔ0Ü&ˆDŒIØˆDŒLð
 ˆð	 ×"Ñ"Ô$Ø×&Ñ& sÔ+ð ˆð ×$Ñ$ SÔ)ØˆrU   c                 ó6   — | j                   j                  «       S rN   ©r·  rY  rX   s    rT   rY  zUnopNode.check_constâ+  ó   € Ø�|‰|×'Ñ'Ó)Ð)rU   c                 ó†   — | j                   j                  j                  xs  | j                   j                  j                  S rN   )r·  r­   rs   rI  rX   s    rT   r»  zUnopNode.is_py_operationå+  s-   € Ø�|‰|× Ñ ×,Ñ,ÒK°·±×0AÑ0A×0KÑ0KÐKrU   c                 ó€   — t        |«      }| j                  j                  }|xr |j                  xs |j                  S rN   )rB   r·  r­   rÿ  r>   )rY   rv   Ú
np_pythranÚop_types       rT   rº  zUnopNode.is_pythran_operationè+  s7   € Ü# CÓ(ˆ
Ø—,‘,×#Ñ#ˆØÒL˜w×0Ñ0ÒK°G×4KÑ4KÐLrU   c                 óF   — | j                  «       r| j                  «        y y rN   ©r»  r�  rø   s     rT   rŽ  zUnopNode.nogil_checkí+  ó   € Ø×ÑÔ!Ø�N‰NÕð "rU   c                 óF   — | j                   j                  }|j                  S rN   )r·  r­   r  r+  s     rT   r½  zUnopNode.is_cpp_operationñ+  s   € Ø�|‰|× Ñ ˆØ× Ñ Ð rU   c                 óD   — | j                   j                  |«      | _         y rN   )r·  r9  rø   s     rT   r¼  z#UnopNode.coerce_operand_to_pyobjectõ+  s   € Ø—|‘|×6Ñ6°sÓ;ˆ�rU   c           
      óº  — | j                   j                  r�|j                  d«       |j                  d| j                  «       z  «       |j                  d| j                  «       ›d| j                  «       ›d| j                  ›| j
                  j                  «       ›d�«       y | j
                  j                   j                  r| j                  |«       y | j                  rø| j                  «       r�| j                  dk(  rŽt        || j                  | j                  «       ›d| j                  ›d	| j
                  j                  «       ›d
�| j                   j                  r| j                  «       nd | j                  | j                  «       y |j                  | j                  «       ›d| j                  ›d	| j
                  j                  «       ›d
�«       y y )Nz// Pythran unaryoprÀ  rU  rV  rW  rX  rß   rS  rr  rT  )r­   r>   rÊ   r  r   r·  r&  rs   Úgenerate_py_operation_coder  r½  rà   rÝ   r†   rÀ   r¹  r³  s     rT   r¾  zUnopNode.generate_result_codeø+  s<  € Ø�9‰9×$Ò$Ø�J‰JÐ+Ô,Ø�J‰JÐ3°d·k±k³mÑCÔDØ�JŠJØ—‘•Ø—‘•Ø—’Ø—‘×+Ñ+Õ-ð	/õ 0ð
 �\‰\×Ñ×*Ò*Ø×+Ñ+¨DÕ1Ø�\Š\Ø×$Ñ$Ô&¨4×+?Ñ+?À3Ò+FÜ'¨¨d¯h©hØ%)§[¡[¥]°D·M³MÀ4Ç<Á<×CVÑCVÕCXÐYØ%)§Y¡Y×%:Ò%:�D—K‘K”MÀØ×(Ñ(¨$×*?Ñ*?õAð
 —
‘
¨D¯K©K­M¸4¿=»=È$Ï,É,×J]ÑJ]ÕJ_Ð`Õað rU   c                 ó  — | j                  |«      }|j                  | j                  «       ›d|›d| j                  j	                  «       ›d|j                  | j                  «       | j                  «      ›�«       | j                  |«       y )NrS  rR  r¥  )Úpy_operation_functionrÊ   r  r·  rÛ   rÖ   r†   rì  r2  s      rT   rÍ  z#UnopNode.generate_py_operation_code,  sk   € Ø×-Ñ-¨dÓ3ˆØ�
‰
à—‘•ÚØ—‘×&Ñ&Õ(Ø×'Ñ'¨¯©«°t·x±xÔ@ð	Bô	Cð 	×Ñ˜TÕ"rU   c                 óä   — | j                   j                  j                  s;t        | j                  d| j
                  ›d| j                   j                  ›d�«       t        j                  | _        y )NzInvalid operand type for 'ú' (r¢  )r·  r­   r  r   r†   r   r   r3   rX   s    rT   Ú
type_errorzUnopNode.type_error,  sH   € Ø�|‰|× Ñ ×)Ò)Ü�$—(’(Ø—“ §¡× 1Ó 1ð3ô 4ä×)Ñ)ˆ�	rU   c                 óÌ  — | j                   j                  g}| j                  r+| j                  s|j	                  t
        j                  «       |j                  | j                  | j                  |«      }|r|s| j                  «        y |r}|j                  j                  | _        |j                  j                  | _        | j                  dk(  rFd| _        t        | «      r4|j                  t!        j"                  dd«      «       nd| _        d| _        | j                  rL| j                  s@| j                   j                  j%                  | j                  t
        j                  ¬«      }n/| j                   j                  j%                  | j                  «      }|r=|€;t'        | j                  d| j                  ›dt        ›�«       | j                  «        y || _        y )	Nrß   Tr3  rÉ  rù  )r´  r+  z' operator not defined for )r·  r­   Úis_inc_dec_opÚ	is_prefixr  r   r&  r$  r†   r   rÒ  rà   rÀ   r  rã   rÈ   r   rÉ   r²  r   )rY   rv   Úoverload_checkÚoperand_typesr¾   rµ  s         rT   r¾  zUnopNode.analyse_cpp_operation,  sl  € ØŸ™×*Ñ*Ð+ˆØ×Ò d§n¢nØ× Ñ ¤×!6Ñ!6Ô7Ø×-Ñ-¨d¯h©h¸¿¹À}ÓUˆÙ¡%Ø�O‰OÔØÙØ#(§:¡:×#=Ñ#=ˆDÔ Ø#(§:¡:×#=Ñ#=ˆDÔ Ø×#Ñ# sÒ*Ø#�”Ü1°$Ô7Ø×(Ñ(¬×)@Ñ)@ÐAYÐ[kÓ)lÕmà#%ˆDÔ Ø#%ˆDÔ Ø×Ò d§n¢nØ—|‘|×(Ñ(×@Ñ@Ø—‘¬J×,AÑ,Að Aó ‰Hð —|‘|×(Ñ(×@Ñ@ÀÇÁÓOˆHÙ˜hÐ.Ü�$—(’(Ø—“�tð%ô &à�O‰OÔØØˆ�	rU   Nr•  )r[   r\   r]   ró   ÚinfixrÔ  r2  r<  r‘   r³  rZ  rX  rY  r»  rº  rŽ  r½  r¼  r¾  rÍ  rÒ  r¾  rW   rU   rT   r¬  r¬  Ÿ+  si   „ ð ˆ{€HØ€EØ€MòBò
-ò7ò ò*òò*òLòMò
ò!ò<òbò(#ò*ôrU   r¬  c                   óF   — e Zd ZdZej
                  Zd„ Zd„ Zd„ Z	d„ Z
d„ Zy)ÚNotNodeÚ!c                 ó<   — | j                   j                   | _        y rN   )r·  rƒ   rX   s    rT   r2  z!NotNode.calculate_constant_resultD,  s   € Ø#'§<¡<×#?Ñ#?Ð?ˆÕrU   c                 óŽ   — | j                   j                  |«      }	 | S # t        $ r}| j                  |«       Y d }~y d }~ww xY wrN   )r·  r<  rV  r@  )rY   r;  r·  r?  s       rT   r<  zNotNode.compile_time_valueG,  sD   € Ø—,‘,×1Ñ1°$Ó7ˆð	-Ø�;ÐøÜò 	-Ø×)Ñ)¨!×,Ñ,ûð	-ús   �   	A©?¿Ac                 ó"   — t         j                  S rN   )r   rB  r·  s      rT   r³  zNotNode.infer_unop_typeN,  s   € Ü×%Ñ%Ð%rU   c                 óð   — | j                   j                  |«      | _         | j                   j                  }|j                  r| j	                  |«       | S | j                   j                  |«      | _         | S rN   )r·  rX  r­   r  r¾  rd  r·  s      rT   rX  zNotNode.analyse_typesQ,  sb   € Ø—|‘|×1Ñ1°#Ó6ˆŒØ—|‘|×(Ñ(ˆØ×$Ò$Ø×&Ñ& sÔ+ð ˆð  Ÿ<™<×9Ñ9¸#Ó>ˆDŒLØˆrU   c                 ó<   — d| j                   j                  «       z  S )Nz(!%s)©r·  r  rX   s    rT   r  zNotNode.calculate_result_codeZ,  ó   € Ø˜Ÿ™×,Ñ,Ó.Ñ.Ð.rU   N)r[   r\   r]   r   r   rB  r­   r2  r<  r³  rX  r  rW   rU   rT   rÚ  rÚ  <,  s.   „ ð €Hà×!Ñ!€Dò@ò-ò&òó/rU   rÚ  c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚUnaryPlusNoderß   c                 ó~   — t        j                  | j                  j                  t         j                  «      | _        y rN   )r   r  r·  r­   r&  rø   s     rT   r¿  z!UnaryPlusNode.analyse_c_operationc,  s)   € Ü×2Ñ2Ø�L‰L×Ñœz×4Ñ4ó6ˆ�	rU   c                  ó   — y)NÚPyNumber_PositiverW   r³  s     rT   rÏ  z#UnaryPlusNode.py_operation_functiong,  ó   € Ø"rU   c                 ó�   — | j                  «       rd| j                  j                  «       z  S | j                  j                  «       S )Nz(+%s))r½  r·  r  rX   s    rT   r  z#UnaryPlusNode.calculate_result_codej,  s9   € Ø× Ñ Ô"Ø˜TŸ\™\×0Ñ0Ó2Ñ2Ð2à—<‘<×&Ñ&Ó(Ð(rU   N)r[   r\   r]   r   r¿  rÏ  r  rW   rU   rT   rä  rä  ^,  s   „ ð €Hò6ò#ó)rU   rä  c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚUnaryMinusNoder  c                 óˆ  — | j                   j                  j                  r>t        j                  | j                   j                  t        j
                  «      | _        nF| j                   j                  j                  rt        j
                  | _        n| j                  «        | j                  j                  rd| _	        y y r’  )
r·  r­   r  r   r  r&  rA  rÒ  r  rØ  rø   s     rT   r¿  z"UnaryMinusNode.analyse_c_operationv,  s   € Ø�<‰<×Ñ×'Ò'Ü"×6Ñ6Ø—‘×!Ñ!¤:×#8Ñ#8ó:ˆD�Ià�\‰\×Ñ×&Ò&Ü"×-Ñ-ˆD�Ià�O‰OÔØ�9‰9×ÒØˆD�Jð  rU   c                  ó   — y)NÚPyNumber_NegativerW   r³  s     rT   rÏ  z$UnaryMinusNode.py_operation_function�,  rè  rU   c                 óÚ   — | j                   rd| j                  j                  «       z  S | j                  j                  j	                  d«      ›d| j                  j                  «       ›d�S )Nú(-%s)r  rR  r¢  )rØ  r·  r  r­   Úunary_oprX   s    rT   r  z$UnaryMinusNode.calculate_result_code„,  sN   € Ø�:Š:Ø˜TŸ\™\×0Ñ0Ó2Ñ2Ð2à#Ÿ|™|×0Ñ0×9Ñ9¸#Õ>ÀÇÁ×@SÑ@SÕ@UÐVÐVrU   c                 óF   — | j                   j                  «       }|rd|z  S y )Nrð  )r·  r0  )rY   r½   s     rT   r0  z)UnaryMinusNode.get_constant_c_result_codeŠ,  s&   € Ø—‘×7Ñ7Ó9ˆÙØ˜U‘?Ð"ð rU   N)r[   r\   r]   r   r¿  rÏ  r  r0  rW   rU   rT   rë  rë  q,  s   „ ð €Hò	ò#òWó#rU   rë  c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)Ú	TildeNodec                 óL  — | j                   j                  j                  r>t        j                  | j                   j                  t        j
                  «      | _        y | j                   j                  j                  rt        j
                  | _        y | j                  «        y rN   )r·  r­   r  r   r  r&  rA  rÒ  rø   s     rT   r¿  zTildeNode.analyse_c_operation’,  sf   € Ø�<‰<×Ñ×#Ò#Ü"×6Ñ6Ø—‘×!Ñ!¤:×#8Ñ#8ó:ˆD�Ià�\‰\×Ñ×&Ò&Ü"×-Ñ-ˆD�Ià�O‰OÕrU   c                  ó   — y)NÚPyNumber_InvertrW   r³  s     rT   rÏ  zTildeNode.py_operation_function›,  s   € Ø rU   c                 ó<   — d| j                   j                  «       z  S )Nz(~%s)rá  rX   s    rT   r  zTildeNode.calculate_result_codež,  râ  rU   N)r[   r\   r]   r¿  rÏ  r  rW   rU   rT   rô  rô  �,  s   „ òò!ó/rU   rô  c                   ó   — e Zd Zd„ Zy)Ú	CUnopNodec                  ó   — yr’  rW   rX   s    rT   r»  zCUnopNode.is_py_operation¤,  r­  rU   N)r[   r\   r]   r»  rW   rU   rT   rú  rú  ¢,  s   „ órU   rú  c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚDereferenceNoder»   c                 óR   — |j                   r|j                  S t        j                  S rN   )r  r  r   r3   r·  s      rT   r³  zDereferenceNode.infer_unop_type¬,  s#   € Ø×ÒØ×)Ñ)Ð)ä×(Ñ(Ð(rU   c                 ó:  — | j                   j                  j                  rk|j                  r9t	        j
                  | j                   j                  j                  «      | _        y | j                   j                  j                  | _        y | j                  «        y rN   )r·  r­   r  Úis_cppr   r1  r  rÒ  rø   s     rT   r¿  z#DereferenceNode.analyse_c_operation²,  s_   € Ø�<‰<×Ñ×#Ò#Ø�zŠzÜ&×5Ñ5°d·l±l×6GÑ6G×6QÑ6QÓR�•	à ŸL™L×-Ñ-×7Ñ7�•	à�O‰OÕrU   c                 ó<   — d| j                   j                  «       z  S r¨  rá  rX   s    rT   r  z%DereferenceNode.calculate_result_code»,  râ  rU   N)r[   r\   r]   r   r³  r¿  r  rW   rU   rT   rý  rý  §,  s   „ ð €Hò)òó/rU   rý  c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚDecrementIncrementNodeTc           
      óŽ  — | j                   j                  j                  s�| j                  r<t	        | j
                  d| j                  ›d| j                   j                  ›d�«       nHt	        | j
                  d| j                  ›d| j                  ›d| j                   j                  ›d�«       t        j                  | _        y )NzNo match for 'operatorz' (operand type is 'r*  zNo 'operatorz(int)' declared for postfix ')	r·  r­   r  rÕ  r   r†   r   r   r3   rX   s    rT   rÒ  z!DecrementIncrementNode.type_errorÃ,  s   € Ø�|‰|× Ñ ×)Ò)Ø�~Š~Ü�d—h’hØ—]“] D§L¡L×$5Ó$5ð!7õ 8ô �d—h’hØ—]“] D§M£M°4·<±<×3DÓ3Dð!Fô Gä×)Ñ)ˆ�	rU   c                 óX  — | j                   j                  j                  r>t        j                  | j                   j                  t        j
                  «      | _        y | j                   j                  j                  r| j                   j                  | _        y | j                  «        y rN   )r·  r­   r  r   r  r&  r  rÒ  rø   s     rT   r¿  z*DecrementIncrementNode.analyse_c_operationÍ,  sj   € Ø�<‰<×Ñ×'Ò'Ü"×6Ñ6Ø—‘×!Ñ!¤:×#8Ñ#8ó:ˆD�Ià�\‰\×Ñ×%Ò%ØŸ™×)Ñ)ˆD�Ià�O‰OÕrU   c                 óÂ   — | j                   r*d| j                  ›| j                  j                  «       ›d�S d| j                  j                  «       ›| j                  ›d�S )NrR  r¢  )rÕ  r   r·  r  rX   s    rT   r  z,DecrementIncrementNode.calculate_result_codeÖ,  sH   € Ø�>‹>Ø#Ÿ}š}¨d¯l©l×.AÑ.AÕ.CÐDÐDð ð  $Ÿ|™|×2Ñ2Ô4°d·m³mÐDÐDrU   N)r[   r\   r]   rÔ  rÒ  r¿  r  rW   rU   rT   r  r  ¿,  s   „ à€Mò*òóErU   r  c                 ó   ‡ ‡— ˆ ˆfd„S )Nc                 ó"   •— t        | f‰‰dœ|¤ŽS )N©rÕ  r   )r  )r†   rù  rÕ  r   s     €€rT   Ú<lambda>z%inc_dec_constructor.<locals>.<lambda>Ý,  s   ø€ Ô5°cÐjÀYÐYaÑjÐeiÒjrU   rW   r	  s   ``rT   Úinc_dec_constructorr  Ü,  s	   ù€ ÜjÐjrU   c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚAmpersandNoder*  c                 ó,   — t        j                  |«      S rN   )r   Ú
c_ptr_typer·  s      rT   r³  zAmpersandNode.infer_unop_typeæ,  s   € Ü×$Ñ$ \Ó2Ð2rU   c                 óâ  — | j                   j                  |«      | _         | j                   j                  }|j                  r| j	                  |d¬«       |j
                  s[|j                  sO| j                   j                  «       s5|j                  r| j                  d«       | S | j                  d|z  «       | S |j                  rt| j                  d| j                   j                  rd| j                   j                  z  n0| j                   j                  rd| j                   j                  z  ndz  «       | S |j                  r| j                  st        j                   |«      | _        | S )	NF)rÖ  z'Cannot take address of memoryview slicez&Taking address of non-lvalue (type %s)z Cannot take address of Python %szvariable '%s'zobject attribute '%s'rè  )r·  rX  r­   r  r¾  rq  r  r  r  r   rs   rá   rt   rs  r=  r   r  )rY   rv   Úargtypes      rT   rX  zAmpersandNode.analyse_typesé,  s#  € Ø—|‘|×1Ñ1°#Ó6ˆŒØ—,‘,×#Ñ#ˆØ×ÒØ×&Ñ& s¸5Ð&ÔAØ×$Ò$¨×(<Ò(<ÀÇÁ×@[Ñ@[Ô@]Ø×)Ò)Ø—
‘
ÐDÔEð ˆKð —
‘
ÐCÀgÑMÔNØˆKØ×ÒØ�J‰JÐ9Ø7;·|±|×7KÒ7K� $§,¡,×"3Ñ"3Ò3ØDHÇLÁL×D]ÒD]Ð'¨$¯,©,×*@Ñ*@Ò@Øñô ð ˆKØ×#Ò#¨4¯9ª9Ü"×-Ñ-¨gÓ6ˆDŒIØˆrU   c                 ó6   — | j                   j                  «       S rN   )r·  r—  rX   s    rT   rY  zAmpersandNode.check_constþ,  s   € Ø�|‰|×,Ñ,Ó.Ð.rU   c                 óh   — t        | j                  |«       t        j                  | _        d| _        y ©Nr,  ©r   r†   r   r3   r­   r  ©rY   Úmesss     rT   r   zAmpersandNode.error-  ó%   € Üˆd�h‰h˜ÔÜ×)Ñ)ˆŒ	Ø$ˆÕrU   c                 ó<   — d| j                   j                  «       z  S )Nz(&%s)rá  rX   s    rT   r  z#AmpersandNode.calculate_result_code-  râ  rU   c           
      ó€  — | j                   j                  j                  rž| j                  dk(  rŽt	        || j
                  | j                  «       ›d| j                  ›d| j                   j                  «       ›d�| j                  j                  r| j                  «       nd | j                  | j                  «       y y y )Nrß   rS  rr  rT  )r·  r­   r  rà   rÝ   r†   r  r   rs   rÀ   r¹  r³  s     rT   r¾  z"AmpersandNode.generate_result_code	-  s„   € Ø�L‰L×Ñ×*Ò*¨t×/CÑ/CÀsÒ/JÜ# D¨$¯(©(Ø!%§¡¥°·³¸t¿|¹|×?RÑ?RÕ?TÐUØ!%§¡×!6Ò!6�—‘”¸DØ×$Ñ$ d×&;Ñ&;õ=ð 0KÐ*rU   N)
r[   r\   r]   r   r³  rX  rY  r   r  r¾  rW   rU   rT   r  r  à,  s'   „ ð €Hò3òò*/ò%ò
/ó=rU   r  )rß   r  rª  c                 ól  — t        |t        «      rY|dk(  rTt        |j                  t        t	        j
                  |j                  «       «      |j                  |j                  ¬«      S t        |t        «      r+|j                  |cxk(  rdv rn nt        | d|fdz  z  d«       t        |   | ||¬«      S )Nr  )r†   r½   r  r  z+-zAPython has no increment/decrement operator: %s%sx == %s(%sx) == xé   é   )r   r·  )r‚   rx  r†   r{   r   ró  r½   r  r  r¬  r   r   Úunop_node_classes)r†   r   r·  s      rT   Ú	unop_noder  -  s¦   € ô �'œ7Ô#¨°CªÜ˜WŸ[™[´#´u×7JÑ7JÈ7Ï=É=Ó7YÐ6YÓ2ZØ '× 0Ñ 0¸7×;KÑ;KôMð 	Mä	�GœXÔ	&¨7×+;Ñ+;¸xÔ+OÈ4Ô+OÜ�ÐXÐ]eÐ\gÐhiÑ\iÑjÐlmÔnÜ˜XÑ& sØØôð rU   c                   ón   — e Zd ZdgZdxZxZZd„ Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd	„ Zd
„ Zd„ Zdd„Zd„ Zd„ Zd„ Zy)rÈ	  r·  Nc                  ó   — yr¹  rW   rø   s     rT   rl  zTypecastNode.type_dependencies2-  r®  rU   c                 ó°   — | j                   €?| j                  j                  |«      }| j                  j                  ||«      \  }| _         | j                   S rN   )r­   r  rõ  Ú
declarator)rY   rv   r  r™  s       rT   r‘   zTypecastNode.infer_type5-  sF   € Ø�9‰9ÐØŸ™×.Ñ.¨sÓ3ˆIØŸ?™?×2Ñ2°9¸cÓB‰LˆAˆtŒyØ�y‰yÐrU   c                 ó  — | j                   €?| j                  j                  |«      }| j                  j                  ||«      \  }| _         | j                  j                  «       r| j                  «        | j                   j                  r+t        | j                  d«       t        j                  | _         | j                  j                  |«      | _        | j                   t        j                  u r| j                  j                  |«      S | j                   j                  }| j                  j                   j                  }|r^|s\| j                  j!                  «       rB| j                   j"                  s,| j                   j$                  st        | j                  d«       |�r�|�s�| j                   t&        u r6| j                  j                   j(                  rt+        | j                  |«      S | j                  j                   j-                  |«      r8t.        | _        | j                  j3                  | j                   |«      | _        �n| j                  j                   j4                  rk| j                  j                   j                  j6                  s|| j                  j                   j                  j8                  sRt        | j                  d«       n;t;        | j                  d| j                  j                   ›d| j                   ›d�«       | j                  j=                  |«      | _        �n|r÷|sõ| j                   j?                  |«      r-| j                  j3                  | j                   |«      | _        �nÎ| j                   j4                  rZ| j                   j                  j6                  �s—| j                   j                  j8                  �svt        | j                  d«       �n^t;        | j                  d| j                   ›d| j                  j                   ›d�«       �n!|r}|r{| j@                  r)tC        | j                  | j                   |d¬	«      | _        nètE        | j                  tF        «      rÎ| j                  j3                  | j                   |«      | _        n¢| j                   jH                  rA| j                  j                   jH                  r!| j                  j=                  |«      | _        nK| j                  j                   jJ                  r+| j                  j3                  | j                   |«      | _        | j                   j4                  r�| j                   j                  j                  r}| j                   j                  jL                  r]| j                  j                   }|j4                  r|j                  }|j                  r#|jL                  st;        | j                  d
d«       | S )NzCannot cast to a function typez>Casting temporary Python object to non-numeric non-Python typez>Python objects cannot be cast from pointers of primitive typeszNo conversion from z to z, python object pointer used.z<Python objects cannot be cast to pointers of primitive typesT)ÚnotnonezQCasting a GIL-requiring function into a nogil function circumvents GIL validationr,   )'r­   r  rõ  r#  r·  r–   r2  rq  r   r†   r   r3   rX  rB  rd  rs   r  r  r  r   r  r  rÛ  r   r.  r  r  r¤  r	  r   rh  Úcreate_from_py_utility_codeÚ	typecheckr  r‚   r  r  r‚  rÎ   )rY   rv   r  r™  Úto_pyÚfrom_pyrÆ  s          rT   rX  zTypecastNode.analyse_types;-  së  € Ø�9‰9ÐØŸ™×.Ñ.¨sÓ3ˆIØŸ?™?×2Ñ2°9¸cÓB‰LˆAˆtŒyØ�<‰<×+Ñ+Ô-à×*Ñ*Ô,Ø�9‰9×!Ò!Ü�$—(‘(Ø0ô2ä"×-Ñ-ˆDŒIØ—|‘|×1Ñ1°#Ó6ˆŒØ�9‰9œ
×.Ñ.Ñ.à—<‘<×1Ñ1°#Ó6Ð6Ø—	‘	×%Ñ%ˆØ—,‘,×#Ñ#×/Ñ/ˆÙ™5 T§\¡\×%>Ñ%>Ô%@Ø—9‘9×'Ò'°·	±	×0FÒ0FÜ�d—h‘hÐ `ÔaÚšØ�y‰yœJÑ&¨4¯<©<×+<Ñ+<×+CÒ+CÜ+¨D¯L©L¸#Ó>Ð>Ø—‘×"Ñ"×9Ñ9¸#Ô>Ü$2�Ô!Ø#Ÿ|™|×5Ñ5°d·i±iÀÓE�–à—<‘<×$Ñ$×+Ò+Ø ŸL™L×-Ñ-×7Ñ7×?Ò?À4Ç<Á<×CTÑCT×C^ÑC^×ChÒChÜ˜dŸh™hÐ(hÕiô ˜DŸHšHØŸ™×)Ó)¨4¯9«9ð'6ô 7à#Ÿ|™|×<Ñ<¸SÓA�–Ù™UØ�y‰y×4Ñ4°SÔ9Ø#Ÿ|™|×5Ñ5°d·i±iÀÓE�–Ø—‘×!Ò!ØŸ	™	×+Ñ+×3Ó3°t·y±y×7JÑ7J×7TÓ7TÜ˜$Ÿ(™(Ð$bÖcä˜ŸšØ—I“I˜tŸ|™|×0Ó0ð#2ö 3á™Ø�~Š~Ü-¨d¯l©l¸D¿I¹IÀsÐTXÔY�•Ü˜DŸL™L¬.Ô9à#Ÿ|™|×5Ñ5°d·i±iÀÓE�•Ø�Y‰Y×!Ò! d§l¡l×&7Ñ&7×&BÒ&BØŸ<™<×8Ñ8¸Ó=ˆD�LØ�\‰\×Ñ×'Ò'ØŸ<™<×1Ñ1°$·)±)¸SÓAˆDŒLà�9‰9×Ò §	¡	× 3Ñ 3× @Ò @ÀTÇYÁY×EXÑEX×E^ÒE^Ø—l‘l×'Ñ'ˆGØ�~Š~Ø!×+Ñ+�Ø×#Ò#¨G¯MªMÜ˜Ÿ™ØkÐmnôpàˆrU   c                 ó6   — | j                   j                  «       S rN   )r·  rS  rX   s    rT   rS  zTypecastNode.is_simple{-  s   € à�|‰|×%Ñ%Ó'Ð'rU   c                 ó6   — | j                   j                  «       S rN   )r·  r  rX   s    rT   r  zTypecastNode.is_ephemeral-  s   € à�|‰|×(Ñ(Ó*Ð*rU   c                 óR   — | j                   xs | j                  j                  «       S rN   )r  r·  rr  rX   s    rT   rr  z!TypecastNode.nonlocally_immutableƒ-  s   € Ø�|‰|ÒB˜tŸ|™|×@Ñ@ÓBÐBrU   c                 ó†   — | j                   r5| j                   j                  r| j                  r| j                  «        y y y y rN   )r­   rs   r  r�  rø   s     rT   rŽ  zTypecastNode.nogil_check†-  s0   € Ø�9Š9˜Ÿ™×.Ò.°4·<²<Ø�N‰NÕð 4@Ð.ˆ9rU   c                 ó6   — | j                   j                  «       S rN   rÁ  rX   s    rT   rY  zTypecastNode.check_constŠ-  rÂ  rU   c                 óX   — | j                  | j                  j                  «      | _        y rN   )r  r·  rƒ   rX   s    rT   r2  z&TypecastNode.calculate_constant_result�-  s   € Ø#×9Ñ9¸$¿,¹,×:VÑ:VÓWˆÕrU   c                 óÀ  — |€| j                   j                  «       }| j                  j                  �r| j                   j                  «       }| j                   j                  j                  r‘| j                  j                  j                  | j                   j                  j                  |«      «      }| j                  j                  j                  | j                   j                  j                  |«      «      }n'| j                  j                  j                  |«      }d}| j                  j                  ›d|›d|›d�S | j                  j                  |«      S ©Nrà  rR  r1  r¢  )	r·  r  r­   r  Ú	real_typer	  Ú	real_codeÚ	imag_coder£  )rY   Úoperand_resultÚ	real_partÚ	imag_parts       rT   r  z"TypecastNode.calculate_result_code�-  s  € ØÐ!Ø!Ÿ\™\×0Ñ0Ó2ˆNØ�9‰9×ÓØ!Ÿ\™\×0Ñ0Ó2ˆNØ�|‰|× Ñ ×+Ò+Ø ŸI™I×/Ñ/×9Ñ9Ø—L‘L×%Ñ%×/Ñ/°Ó?óA�	à ŸI™I×/Ñ/×9Ñ9Ø—L‘L×%Ñ%×/Ñ/°Ó?óA‘	ð !ŸI™I×/Ñ/×9Ñ9¸.ÓI�	Ø�	à—I‘I×(Ó(ÚÚðð ð
 —9‘9×&Ñ& ~Ó6Ð6rU   c                 ór   — | j                   j                  «       }|r| j                  j                  |«      S y rN   )r·  r0  r­   r	  )rY   r5  s     rT   r0  z'TypecastNode.get_constant_c_result_code¤-  s1   € ØŸ™×@Ñ@ÓBˆÙØ—9‘9×&Ñ& ~Ó6Ð6ð rU   c                 ó¨   — | j                   j                  r'| j                  s| j                  j	                  |«      S t
        j	                  | |«      S rN   )r­   rs   r  r·  r  rñ   r+  s     rT   r  zTypecastNode.result_as©-  s=   € Ø�9‰9× Ò ¨¯ªà—<‘<×)Ñ)¨$Ó/Ð/ä×%Ñ% d¨DÓ1Ð1rU   c                 óô   — | j                   rl|j                  | j                  «       ›d| j                  j                  «       ›d�«       |j	                  | j                  «       | j                  «       «       y y )Nz = (PyObject *)rT  )r  rÊ   r  r·  r²  r*  r³  s     rT   r¾  z!TypecastNode.generate_result_code°-  sT   € Ø�<Š<Ø�J‰Jà—K‘K•MØ—L‘L×'Ñ'Õ)ð+ô,ð �O‰O˜DŸK™K›M¨4¯:©:«<Õ8ð rU   rN   )r[   r\   r]   ró   r  r#  r­   rl  r‘   rX  rS  r  rr  rŽ  rY  r2  r  r0  r  r¾  rW   rU   rT   rÈ	  rÈ	  $-  s^   „ ð ˆ{€HØ$(Ð(€IÐ(�
˜Tòòò>ò@(ò+òCòò*òXó7ò(7ò
2ó9rU   rÈ	  zStart may not be givenz'Stop must be provided to indicate shapezVStrides may only be given to indicate contiguity. Consider slicing it after conversionz2Can only create cython.array from pointer or arrayz7Pointer base type does not match cython.array base typec                   ón   — e Zd ZdZddgZdZdZdZdZe	j                  Zd„ Zd„ Zd	„ Zd
„ Zd„ Zed„ «       Zy)r  an  
    Used when a pointer of base_type is cast to a memoryviewslice with that
    base type. i.e.

        <int[:M:1, :N]> p

    creates a fortran-contiguous cython.array.

    We leave the type set to object so coercions to object are more efficient
    and less work. Acquiring a memoryviewslice from this will be just as
    efficient. ExprNode.coerce_to() will do the additional typecheck on
    self.compile_time_type

    This also handles <int[:, :]> my_c_array


    operand             ExprNode                 the thing we're casting
    base_type_node      MemoryViewSliceTypeNode  the cast expression node
    r·  ÚshapesNTr–  c                 ól  — ddl m} | j                  j                  |«      | _        | j                  r| j                  }n%| j
                  j
                  j                  |«      }| j
                  j                  }t        | _	        g | _
        t        |«      }| j                  j                  }| j                  j                  j                  sF| j                  j                  j                  s&t        | j                  j                  t         «       | S g }|j                  rA|j                  ri|j#                  |j$                  «       |j&                  }|j                  rŒ4n4|j                  r|j&                  }nt        | j                  d|z  «       | S |j)                  |«      s2|j*                  s&t        | j                  j                  t,        «       | S | j                  j                  j                  r>t        |«      |k7  r0t        | j                  j                  d|t        |«      fz  «       | S t/        |«      D �]s  \  }}	|	j0                  j2                  s(t        |	j0                  j                  t4        «       | c S |	j6                  j2                  rH|st        |	j                  t8        «       | c S t:        j=                  | j                  ||   «      |	_        |	j6                  j                  |«      |	_        |	j6                  j?                  | j@                  |«      }
|
jB                  s|
jE                  |«       | j                  j#                  |
«       |d|dz
  fv }|	jF                  j2                  sò|rð|	jF                  j                  |«      |	_#        |	jF                  j                  jH                  sZ|	jF                  jB                  rD|	jF                  j                  jJ                  s$t        |	jF                  j                  d«       | c S |	jF                  jM                  |«      dk7  r(t        |	jF                  j                  tN        «       | c S |dk(  s�Œ)d| _(        �Œ2|	jF                  j2                  r�ŒJ|r�ŒNt        |	jF                  j                  tN        «       | c S  | j                  jR                  s | j                  jE                  |«      | _        dgt        |«      z  }| jP                  dk(  rd	|d<   nd	|d
<   tU        jV                  ||«      | _,        | jX                  j[                  | j                  «       | j]                  |«      | _	        |j_                  |«       |ja                  |jc                  |jd                  jf                  «      «       | S )Nr,   rú  zunexpected base type %s foundz/Expected %d dimensions, array has %d dimensionsr   zExpected an integer literalÚfortran)rË  Úfollow)rË  Úcontigr�  )4rù  rû  r·  rX  Úarray_dtypeÚbase_type_noderõ  rþ  r3   r­   r<  r“   r  rp  r   r†   ÚERR_NOT_POINTERr  r€  r  r  r¤  ÚERR_BASE_TYPEr¢  r²   rœ   Ú	ERR_STARTr³   ÚERR_NOT_STOPrx  rý  r  Ú
shape_typer¯   rQ  r´   r  r  r<  Ú	ERR_STEPSÚmoderá   r   rø  r	  Úvalidate_memslice_dtypeÚget_cython_array_typeÚuse_cython_array_utility_coderÈ   Úget_typeinfo_to_format_coder’  r÷  )rY   rv   rû  rA  rþ  r  r  Úarray_dimension_sizesÚaxis_noÚaxisÚshapeÚfirst_or_lasts               rT   rX  zCythonArrayNode.analyse_typesß-  s4  € Ý à—|‘|×1Ñ1°#Ó6ˆŒØ×ÒØ×*Ñ*‰Kà×-Ñ-×<Ñ<×DÑDÀSÓIˆKØ×"Ñ"×'Ñ'ˆäˆŒ	ØˆŒÜ�4‹yˆð —L‘L×%Ñ%ˆ	à�|‰|× Ñ ×'Ò'°·±×0AÑ0A×0JÒ0JÜ�$—,‘,×"Ñ"¤OÔ4ØˆKð !#ÐØ×ÒØ×$Ò$Ø%×,Ñ,¨Y¯^©^Ô<Ø%×/Ñ/�	ð ×$Ô$ð ×ÒØ!×+Ñ+‰Iä�$—(‘(Ð;¸iÑGÔHØˆKà×!Ñ! +Ô.°)×2CÒ2CÜ�$—,‘,×"Ñ"¤MÔ2ØˆKØ�\‰\×Ñ×'Ò'¬CÐ0EÓ,FÈ$Ò,NÜ�$—,‘,×"Ñ"ØCØ-1´3Ð7LÓ3MÐ,NñOôPð ˆKô
 ' tŸ_‰MˆG�TØ—:‘:×%Ò%Ü�d—j‘j—n‘n¤iÔ0Ø’à�y‰y× Ò Ù,Ü˜$Ÿ(™(¤LÔ1Ø’KÜ#ŸO™O¨D¯H©HÐ6KÈGÑ6TÓU�”	àŸ	™	×/Ñ/°Ó4ˆDŒIØ—I‘I×'Ñ'¨¯©¸Ó=ˆEØ×#Ò#Ø×$Ñ$ SÔ)à�K‰K×Ñ˜uÔ%à#¨¨4°!©8 }Ð4ˆMØ—9‘9×$Ò$©à ŸI™I×3Ñ3°CÓ8�”	ØŸ	™	Ÿ™×-Ò-°$·)±)×2FÒ2FØŸ	™	Ÿ™×/Ò/Ü˜$Ÿ)™)Ÿ-™-Ð)FÔGØ’Kà—9‘9×/Ñ/°Ó4¸Ò9Ü˜$Ÿ)™)Ÿ-™-¬Ô3Ø’Kà˜a”<Ø )�D–Ià—Y‘Y×&Ô&«}ä�d—i‘i—m‘m¤YÔ/Ø’ðK -ðN �|‰|×#Ò#ØŸ<™<×6Ñ6°sÓ;ˆDŒLà$Ð%¬¨D«	Ñ1ˆØ�9‰9˜	Ò!Ø*ˆD�ŠGà+ˆD�‰Hä'×;Ñ;¸KÈÓNˆÔØ×Ñ×2Ñ2°4·8±8Ô<Ø×.Ñ.¨sÓ3ˆŒ	Ø×0Ñ0°Ô5Ø×ÑØ×2Ñ2°3·;±;×3\Ñ3\Ó]ô	
ð ˆrU   c                 óˆ   — | j                   rt        d«      ‚|j                  j                  | j                  d«      | _         y )Nztemp allocated multiple timesT)r  r£  r¦  r§  r­   r³  s     rT   r©  z$CythonArrayNode.allocate_temp_resultE.  s1   € Ø�>Š>ÜÐ>Ó?Ð?àŸ™×5Ñ5°d·i±iÀÓFˆ�rU   c                 ó$   — | j                  |«      S rN   )rK  rø   s     rT   r‘   zCythonArrayNode.infer_typeK.  s   € Ø×)Ñ)¨#Ó.Ð.rU   c                 ó˜   — |j                   j                  }|j                  «        |j                  j	                  d«      j
                  S )NÚarray)r’  Úcython_scopeÚload_cythonscopeÚ	viewscoperE  r­   )rY   rv   rW  s      rT   rK  z%CythonArrayNode.get_cython_array_typeN.  s:   € Ø—{‘{×/Ñ/ˆØ×%Ñ%Ô'Ø×%Ñ%×,Ñ,¨WÓ5×:Ñ:Ð:rU   c                 óð  ‡— ddl m} | j                  D �cg c]+  }| j                  j	                  |j                  «       «      ‘Œ- }}| j                  j                  }‰j                  j                  t        d«      }‰j                  j                  t        d«      }‰j                  j                  t        d«      }d|j                  «       z  }	|j                  ‰|«      }
| j                  j                  j                   r‚‰j#                  d| j                  j                  «       z  «       ‰j#                  d«       ‰j#                  ‰j%                  | j                  j&                  «      «       ‰j#                  d«       ‰j#                  |›d|
›d	‰j)                  || j&                  «      ›�«       ‰j+                  |t        «       d
t-        |«      z  }‰j#                  |›d|›ddj/                  |«      ›d	‰j)                  || j&                  «      ›�«       ‰j+                  |t        «       ‰j#                  d«       ‰j#                  |›d|›d	‰j)                  || j&                  «      ›�«       ‰j#                  d«       ‰j#                  |›d|›d�«       ‰j#                  d«       ‰j#                  | j                  «       ›d|›d|	›d|›d| j0                  ›d| j                  j                  «       ›d	‰j)                  | j                  «       | j&                  «      ›�«       | j3                  ‰«       ˆfd„} ||«        ||«       ‰j                  j5                  |«       y c c}w )Nr,   rü  TrA  z
if (!%s) {zQPyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");rÕ   z = __pyx_format_from_typeinfo(&r¥  z __PYX_BUILD_PY_SSIZE_T z = Py_BuildValue("(" z ")", r1  rf  z = PyBytes_AsString(r  z = PyBytes_AS_STRING(r2  rð  z = __pyx_array_new(ú, "z", (char *) c                 óh   •— ‰j                  | t        «       ‰j                  j                  | «       y rN   )rÊ  r   r¦  r¯  )rÈ  rÌ   s    €rT   Údisposez5CythonArrayNode.generate_result_code.<locals>.dispose‹.  s%   ø€ Ø×!Ñ! $¬Ô7Ø�N‰N×'Ñ'¨Õ-rU   )rù  rý  r<  rG  r	  r  r	  r  r¦  r§  r   r1   r´  Úget_type_information_cnamer·  r­   r  rÊ   rÙ   r†   rÖ   ré  r“   r£  rI  rì  r¯  )rY   rÌ   rý  rQ  r<  r  Úshapes_tempÚformat_tempÚformat_ptr_tempÚitemsizeÚ	type_infoÚbuildvalue_fmtr]  s    `           rT   r¾  z$CythonArrayNode.generate_result_codeS.  s±  ø€ Ýð $(§;¢;ó0Ù#.˜%ð —/‘/×+Ñ+¨E¯L©L«NÕ;Ø#.ð 	ð 0à×"Ñ"×(Ñ(ˆà—n‘n×2Ñ2´>À4ÓHˆØ—n‘n×2Ñ2´>À4ÓHˆØŸ.™.×6Ñ6´ÈÓMˆà %×">Ñ">Ó"@Ñ@ˆØ×5Ñ5°d¸EÓBˆ	à�<‰<×Ñ×#Ò#Ø�J‰J�| d§l¡l×&9Ñ&9Ó&;Ñ;Ô<Ø�J‰Jð Sô Tà�J‰J�t—‘ t§|¡|×'7Ñ'7Ó8Ô9Ø�J‰J�sŒOà�
‰
ÚÚØ×#Ñ# K°·±Ô:ð
ô 	ð
 	�‰˜¤^Ô4à3´c¸&³kÑAˆØ�
‰
ÚÚØ�I‰I�fÕØ×#Ñ# K°·±Ô:ð	
ô 	ð 	�‰˜¤^Ô4ð 	�
‰
Ð8Ô9Ø�
‰
Úš[Ø×#Ñ# O°T·X±XÔ>ð
ô 	ð 	�
‰
�7ÔØ�
‰
Úš[ð
ô 	ð 	�
‰
�8Ôà�
‰
Ø�K‰K�MÚš¢?°D·I³I¸t¿|¹|×?RÑ?RÕ?TØ×#Ñ# D§K¡K£M°4·8±8Ô<ð
ô 	ð
 	×Ñ˜TÔ"ô	.ñ 	�ÔÙ�ÔØ�‰×#Ñ# OÕ4ùòw0s   –0M3c                 ó‚  — |j                   }|j                  }t        |«      }g }|j                  r7|j	                  t        ||||¬«      «       |j                  }|j                  rŒ7t        j                  |d«      |d   _	        t        j                  |||¬«      }t        ||||¬«      }|j                  |«      }|S )z@
        Given a C array type, return a CythonArrayNode
        rC  r,   r�  )rþ  rB  )rB  r·  rA  )r†   r­   r  rp  r  rè  r  rx  rý  r´   r   ÚMemoryViewSliceTypeNoder  rX  )	rR   Úsrc_noderv   r†   r  r/  rþ  Úmemslicenoder  s	            rT   r  zCythonArrayNode.from_carray“.  s¸   € ð
 �l‰lˆØ—M‘Mˆ	ä˜S“Mˆ	Øˆà× Ò Ø�K‰Kœ	 #¨Y¸YØ,5ô7ô 8à!×+Ñ+ˆIð × Ó ô  Ÿ™¨¨QÓ/ˆˆR‰Œä×4Ñ4°S¸tØDMôOˆä  °\Ø)1¸yôJˆà×%Ñ% cÓ*ˆØˆrU   )r[   r\   r]   r£  ró   r<  r  rI  rA  r   rM  rG  rX  r©  r‘   rK  r¾  r}  r  rW   rU   rT   r  r  Á-  sc   „ ñð( ˜8Ð$€Hà€FØ€GØ€DØ€Kà×-Ñ-€JòdòLGò/ò;ò
>5ð@ ñó ñrU   r  c                   ó0   — e Zd Zej                  Zd„ Zd„ Zy)Ú
SizeofNodec                  ó   — yr·  rW   rX   s    rT   rY  zSizeofNode.check_const°.  r]  rU   c                  ó   — y rN   rW   r³  s     rT   r¾  zSizeofNode.generate_result_code³.  rú   rU   N)r[   r\   r]   r   r°  r­   rY  r¾  rW   rU   rT   rj  rj  «.  s   „ ð ×#Ñ#€DòórU   rj  c                   ó&   — e Zd Zg ZdZd„ Zd„ Zd„ Zy)rK  Nc                 óÂ   — 	 | j                  €A| j                   j                  |«      }| j                  j                  ||«      \  }}	|	| _
        | j                  «        | S rN   )r  Úmodule_pathrE  rä  r
  r†   rG  rt   ÚSizeofVarNoderX  rL  rõ  r#  Ú
check_type)
rY   rv   r«  r<  r·  rÖ  rˆ   r  r™  rL  s
             rT   rX  zSizeofTypeNode.analyse_typesÀ.  sW   € ð ð �=‰=Ð ØŸ™×.Ñ.¨sÓ3ˆIØŸ/™/×1Ñ1°)¸SÓA‰KˆAˆxØ$ˆDŒMØ�‰ÔØˆrU   c                 ó  — | j                   }|sy |j                  r#|j                  st        | j                  d«       y |j
                  rt        | j                  d«       y |j                  «       st        | j                  d|z  «       y y )Nz Cannot take sizeof Python objectzCannot take sizeof voidz'Cannot take sizeof incomplete type '%s')rL  rs   r¾  r   r†   r¤  Úis_complete)rY   rL  s     rT   rq  zSizeofTypeNode.check_typeÔ.  sn   € Ø—=‘=ˆÙØØ×Ò¨×(BÒ(BÜ�$—(‘(Ð>Õ?Ø×ÒÜ�$—(‘(Ð5Õ6Ø×%Ñ%Ô'Ü�$—(‘(ÐEÈÑPÕQð (rU   c                 ó°   — | j                   j                  r"| j                   j                  dd¬«      }d|z  S | j                   j                  «       }d|z  S )Nrù  r,   )Úderefú(sizeof(%s)))rL  r¾  rå   r´  )rY   rì  s     rT   r  z$SizeofTypeNode.calculate_result_codeß.  sV   € Ø�=‰=×*Ò*ð —}‘}×5Ñ5°bÀÐ5ÓBˆHð  Ñ(Ð(ð —}‘}×;Ñ;Ó=ˆHØ Ñ(Ð(rU   )r[   r\   r]   ró   rL  rX  rq  r  rW   rU   rT   rK  rK  ·.  s   „ ð €HØ€Hòò(	Ró)rU   rK  c                   ó$   — e Zd ZdgZd„ Zd„ Zd„ Zy)rp  r·  c                 ó¨  — | j                   j                  |«      }|re|| _        | j                  j                  r+	 | j                  j	                  |j
                  «      | _        t        | _
        | j                  «        | S | j                   j                  |«      | _         | S # t        $ r# t        | j                   j                  d«       Y Œjw xY w)NzLType cannot be specialized since it is not a fused argument to this function)r·  r€  rL  r‚  r„  rƒ  r-   r   r†   rK  rS   rq  rX  )rY   rv   Úoperand_as_types      rT   rX  zSizeofVarNode.analyse_typesð.  s³   € ð Ÿ,™,×6Ñ6°sÓ;ˆÙØ+ˆDŒMØ�}‰}×%Ò%ðjØ$(§M¡M×$<Ñ$<¸S×=RÑ=RÓ$S�D”Mô ,ˆDŒNØ�O‰OÔð ˆð  Ÿ<™<×5Ñ5°cÓ:ˆDŒLØˆøô (ò jÜ˜$Ÿ,™,×*Ñ*Øhöjðjús   ¼*B% Â%)CÃCc                 ó<   — d| j                   j                  «       z  S )Nrv  rá  rX   s    rT   r  z#SizeofVarNode.calculate_result_code/  s   € Ø §¡× 3Ñ 3Ó 5Ñ5Ð5rU   c                  ó   — y rN   rW   r³  s     rT   r¾  z"SizeofVarNode.generate_result_code/  rú   rU   N)r[   r\   r]   ró   rX  r  r¾  rW   rU   rT   rp  rp  é.  s   „ ð
 ˆ{€Hòò$6órU   rp  c                   óF   — e Zd ZdgZdZdZdZd„ ZdZd„ Z	d„ Z
d„ Zd	„ Zd
„ Zy)Ú
TypeidNoder·  Nr,   c                 ó  — |}|j                   s|j                  }|j                   sŒ|j                  d| j                  «      }|j	                  d«      }t        j                  t        j                  |j                  d¬«      «      S )Nzlibcpp.typeinforc  T)rd  )	r×  r²  Úfind_moduler†   rE  r   rØ  rò  r­   )rY   rv   Ú
env_moduleÚtypeinfo_moduleÚtypeinfo_entrys        rT   Úget_type_info_typezTypeidNode.get_type_info_type/  ss   € Øˆ
Ø×,Ò,Ø#×/Ñ/ˆJð ×,Ó,à$×0Ñ0Ð1BÀDÇHÁHÓMˆØ(×/Ñ/°Ó<ˆÜ×,Ñ,¬Z×-PÑ-PÐQ_×QdÑQdÐosÔ-tÓuÐurU   ztypeid operatorc                 óT  — | j                   st        j                  | _         | j                  |«       | j	                  |«      }|s| j                  d«       | S | j                  €| S || _         | j                  j                  |«      }|r|| _        d| _	        d | _        nâ| j                  j                  |«      | _        d| _	        d | _        | j                  j                   j                  r| j                  d«       | S | j                  j                   j                  r| j                  d«       | S | j                  j                   j                  «       s*| j                  d| j                  j                   z  «       | S |j                  t        j                   dd«      «       | S )	NzKThe 'libcpp.typeinfo' module must be cimported to use the typeid() operatorTFz$Cannot use typeid on a Python objectzCannot use typeid on voidz)Cannot use typeid on incomplete type '%s'r3  rÉ  )r­   r   r3   r¬  rƒ  r   r·  r†  rL  rF  rX  rs   r¤  rs  rÈ   r   rÉ   )rY   rv   rc  Úas_types       rT   rX  zTypeidNode.analyse_types /  sP  € Ø�yŠyÜ"×-Ñ-ˆDŒIØ�‰�sÔØ×+Ñ+¨CÓ0ˆ	ÙØ�J‰JÐdÔeØˆKØ�<‰<ÐØˆKØˆŒ	Ø—,‘,×:Ñ:¸3Ó?ˆÙØ#ˆDŒMØˆDŒLØˆD�Là ŸL™L×6Ñ6°sÓ;ˆDŒMØ ˆDŒLØˆDŒLØ�}‰}×!Ñ!×-Ò-Ø—
‘
ÐAÔBØ�Ø—‘×#Ñ#×+Ò+Ø—
‘
Ð6Ô7Ø�Ø—]‘]×'Ñ'×3Ñ3Ô5Ø—
‘
ÐFÈÏÉ×I[ÑI[Ñ[Ô\Ø�Ø×Ñœ[×4Ñ4Ð5MÐO_Ó`ÔaØˆrU   c                 óh   — t        | j                  |«       t        j                  | _        d| _        y r  r  r  s     rT   r   zTypeidNode.error@/  r  rU   c                  ó   — yr·  rW   rX   s    rT   rY  zTypeidNode.check_constE/  r]  rU   c                 ó   — | j                   S rN   rÕ  rX   s    rT   r  z TypeidNode.calculate_result_codeH/  rÖ  rU   c                 óî   — | j                   r| j                  j                  «       }n| j                  j                  «       }t	        || j
                  | j                  ›d|›d�d d | j                  «       y )Nz
 = typeid(r2  )rF  rL  r´  r  rÝ   r†   r  r¹  )rY   rÌ   rì  s      rT   r¾  zTypeidNode.generate_result_codeK/  sV   € Ø�<Š<Ø—}‘}×;Ñ;Ó=‰Hà—}‘}×+Ñ+Ó-ˆHÜ  d§h¡hØ"&§.£.²(Ð;Ø�$˜×-Ñ-õ	/rU   )r[   r\   r]   ró   rL  rø  r  rƒ  Úcpp_messagerX  r   rY  r  r¾  rW   rU   rT   r}  r}  	/  sA   „ ð ˆ{€Hà€HØ€KØ€Gòvð $€Kòò@%ò
òó/rU   r}  c                   ó8   — e Zd ZdZeZdgZd„ Zd„ Zd„ Z	d„ Z
d„ Zy)Ú
TypeofNodeNr  c                 ó&  — | j                   j                  |«      | _         t        j                  t	        | j                   j
                  «      «      }t        | j                  |¬«      }|j                  |«      }|j                  |«      | _	        | S rä  )
r·  rX  r
   rH  r{   r­   rÒ  r†   r9  r  )rY   rv   r½   r  s       rT   rX  zTypeofNode.analyse_types_/  sn   € Ø—|‘|×1Ñ1°#Ó6ˆŒÜ×,Ñ,¬S°·±×1BÑ1BÓ-CÓDˆÜ˜dŸh™h¨eÔ4ˆØ×'Ñ'¨Ó,ˆØ×1Ñ1°#Ó6ˆŒØˆrU   c                 ón   — | j                   j                  |«      | _         | j                   j                  S rN   )r·  rX  r­   rø   s     rT   r€  zTypeofNode.analyse_as_typeg/  s(   € Ø—|‘|×1Ñ1°#Ó6ˆŒØ�|‰|× Ñ Ð rU   c                  ó   — yr’  rW   rX   s    rT   rZ  zTypeofNode.may_be_nonek/  r­  rU   c                 ó:   — | j                   j                  |«       y rN   )r  rÃ  r³  s     rT   rÃ  z#TypeofNode.generate_evaluation_coden/  s   € Ø�‰×-Ñ-¨dÕ3rU   c                 ó6   — | j                   j                  «       S rN   )r  r  rX   s    rT   r  z TypeofNode.calculate_result_codeq/  s   € Ø�|‰|×1Ñ1Ó3Ð3rU   )r[   r\   r]   r  r   r­   ró   rX  r€  rZ  rÃ  r  rW   rU   rT   rŒ  rŒ  T/  s.   „ ð €GØ€Dàˆ{€Hòò!òò4ó4rU   rŒ  c                 ód   — 	 | j                   } || |«      S # t        $ r |j                  }Y Œ w xY wrN   )Ú
__matmul__r•   Ú__rmatmul__)r¶  Úbrå  s      rT   Úmatmul_operatorr–  }/  s8   € ð	!Ø—<‘<ˆDñ �A�q‹zÐøô ò 	!Ø—=‘=ŠDð	!ús   ‚ —/®/r`  ú<=ú==r"  ú>=ra  r  Úis_notrß   r*  Ú/ú//ú<<Ú%r»   r  ú**c                 ó
   — | |v S rN   rW   ©ÚxÚseqs     rT   r
  r
  š/  s   € ˜˜c™rU   c                 ó
   — | |vS rN   rW   r¡  s     rT   r
  r
  ›/  s   € ˜Q c™\rU   )ú>>r  Ú^Ú@ÚinÚnot_inc                 óŽ   — t         j                  | j                  «      }|s#t        | j                  d| j                  z  «       |S )Nz4Binary '%s' not supported in compile-time expression)Úcompile_time_binary_operatorsrm   r   r   r†   )rˆ   rå  s     rT   Úget_compile_time_binopr¬  ž/  s=   € Ü(×,Ñ,¨T¯]©]Ó;€DÙÜˆd�h‰hØBØ—-‘-ñ ô	!ð €KrU   c                   ó–   ‡ — e Zd ZddgZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ fd„Zd„ Zd„ Zˆ xZS )Ú	BinopNoder   r!  Fc                 ó–   — t         | j                     } || j                  j                  | j                  j                  «      | _        y rN   )r«  r   r   rƒ   r!  r¯  s     rT   r2  z#BinopNode.calculate_constant_result·/  s7   € Ü,¨T¯]©]Ñ;ˆÙ#Ø�M‰M×)Ñ)Ø�M‰M×)Ñ)ó +ˆÕrU   c                 óæ   — t        | «      }| j                  j                  |«      }| j                  j                  |«      }	  |||«      S # t        $ r}| j                  |«       Y d }~y d }~ww xY wrN   )r¬  r   r<  r!  rV  r@  )rY   r;  rå  r   r!  r?  s         rT   r<  zBinopNode.compile_time_value½/  sg   € Ü% dÓ+ˆØ—=‘=×3Ñ3°DÓ9ˆØ—=‘=×3Ñ3°DÓ9ˆð	-Ù˜ (Ó+Ð+øÜò 	-Ø×)Ñ)¨!×,Ñ,ûð	-ús   ÁA Á	A0ÁA+Á+A0c                 óŒ   — | j                  | j                  j                  |«      | j                  j                  |«      |«      S rN   )r‹  r   r‘   r!  rø   s     rT   r‘   zBinopNode.infer_typeÆ/  s<   € Ø×Ñ §¡× 8Ñ 8¸Ó =Ø $§¡× 8Ñ 8¸Ó =¸sóDð 	DrU   c                 ó¤   — | j                   j                  |«      | _         | j                  j                  |«      | _        | j                  |«      S rN   )r   rX  r!  rÑ  rø   s     rT   rX  zBinopNode.analyse_typesÊ/  s?   € ØŸ™×3Ñ3°CÓ8ˆŒØŸ™×3Ñ3°CÓ8ˆŒØ×%Ñ% cÓ*Ð*rU   c                 ó¦  — | j                  |«      ra| j                  | j                  j                  | j                  j                  |«      | _        | j                  j
                  sJ ‚d| _        | S | j                  «       rš| j                  |«       | j                  | j                  j                  | j                  j                  |«      | _        d| _        | j                  j                  s*| j                  t        c}| _        | j                  ||«      S | S | j                  «       r| j                  |«       | S | j                  |«       | S r«  )rº  r‹  r   r­   r!  r>   r  r»  Úcoerce_operands_to_pyobjectsrs   r   r  r½  r¾  r¿  )rY   rv   Úoriginal_types      rT   rÑ  zBinopNode.analyse_operationÏ/  s  € Ø×$Ñ$ SÔ)Ø×(Ñ(¨¯©×);Ñ);Ø)-¯©×);Ñ);¸SóBˆDŒIà—9‘9×,Ò,Ð,Ð,ØˆDŒLð ˆð ×!Ñ!Ô#Ø×-Ñ-¨cÔ2Ø×(Ñ(¨¯©×);Ñ);Ø)-¯©×);Ñ);¸SóBˆDŒIàˆDŒLØ—9‘9×(Ò(Ø+/¯9©9´nÐ(�˜tœyà—~‘~ m°SÓ9Ð9ð ˆð	 ×"Ñ"Ô$Ø×&Ñ& sÔ+ð ˆð ×$Ñ$ SÔ)ØˆrU   c                 óv   — | j                  | j                  j                  | j                  j                  «      S rN   )Úis_py_operation_typesr   r­   r!  rX   s    rT   r»  zBinopNode.is_py_operationç/  s)   € Ø×)Ñ)¨$¯-©-×*<Ñ*<¸d¿m¹m×>PÑ>PÓQÐQrU   c                 ón   — |j                   xs( |j                   xs |j                  xs |j                  S rN   )rs   rI  ©rY   Útype1Útype2s      rT   r·  zBinopNode.is_py_operation_typesê/  s+   € Ø× Ñ Ò[ E×$5Ñ$5Ò[¸¿¹Ò[ÈEÏOÉOÐ[rU   c                 óx   — | j                  | j                  j                  | j                  j                  |«      S rN   )Úis_pythran_operation_typesr   r­   r!  rø   s     rT   rº  zBinopNode.is_pythran_operationí/  s,   € Ø×.Ñ.¨t¯}©}×/AÑ/AÀ4Ç=Á=×CUÑCUÐWZÓ[Ð[rU   c                 ó€   — t        |«      xr2 t        |«      xr t        |«      xr t        |«      xs t        |«      S rN   )rB   r=   r>   )rY   rº  r»  rv   s       rT   r½  z$BinopNode.is_pythran_operation_typesð/  sB   € ä˜cÓ"ò BÜ3°EÓ:ÒiÔ?bÐchÓ?iòBä Ó&Ò@¬/¸%Ó*@ð	BrU   c                 ó†   — | j                   j                  j                  xs  | j                  j                  j                  S rN   ©r   r­   r  r!  rX   s    rT   r½  zBinopNode.is_cpp_operationö/  s2   € Ø—‘×"Ñ"×/Ñ/ò /Ø�}‰}×!Ñ!×.Ñ.ð	0rU   c                 óJ  — |j                  | j                  | j                  | j                  g«      }|s| j	                  «        y |j
                  }|j                  | _        |j                  | _        | j                  dk(  r7d| _        t        | «      r%|j                  t        j                  dd«      «       |j                  r|j                  }t        |j                   «      dk(  r9| j                  j#                  |j                   d   j
                  |«      | _        np| j                  j#                  |j                   d   j
                  |«      | _        | j                  j#                  |j                   d   j
                  |«      | _        |j$                  | _        y )Nrß   r,   r3  rÉ  r   )r  r   r   r!  rÒ  r­   rà   rÀ   r  rã   rÈ   r   rÉ   r  r  r“   r—   r  ré  )rY   rv   r¾   r4  s       rT   r¾  zBinopNode.analyse_cpp_operationú/  s=  € Ø×#Ñ# D§M¡M°D·M±MÀ4Ç=Á=Ð3QÓRˆÙØ�O‰OÔØØ—J‘Jˆ	Ø(×8Ñ8ˆÔØ(×8Ñ8ˆÔØ×Ñ 3Ò&ð ˆDŒLÜ-¨dÔ3Ø×$Ñ$¤[×%<Ñ%<Ð=UÐWgÓ%hÔiØ×ÒØ!×+Ñ+ˆIÜˆy�~‰~Ó !Ò#Ø ŸM™M×3Ñ3°I·N±NÀ1Ñ4E×4JÑ4JÈCÓPˆD�Mà ŸM™M×3Ñ3°I·N±NÀ1Ñ4E×4JÑ4JÈCÓPˆDŒMØ ŸM™M×3Ñ3°I·N±NÀ1Ñ4E×4JÑ4JÈCÓPˆDŒMØ×)Ñ)ˆ�	rU   c                 ó„  — | j                  |||«      r t        t        | j                  ||«      «      S | j	                  ||«      rÂ|j
                  rt        j                  }n|j                  rt        j                  }|j
                  rt        j                  }n|j                  rt        j                  }|j                  s|j                  r2||u r|t        ur| j                  dv r|S | j                  ||«      }|�|S t        S |j                  s|j                  rt        j                   S | j#                  ||«      S )Nz**%+|&^)r½  rJ   r@   r   r·  r¿  r   r   rÀ  r   r¿  r   Úinfer_builtin_types_operationr   r  r   r3   Úcompute_c_result_type)rY   rº  r»  rv   r‹  s        rT   r‹  zBinopNode.result_type0  s	  € Ø×*Ñ*¨5°%¸Ô=ÜÔ1°$·-±-ÀÈÓNÓOÐOØ×%Ñ% e¨UÔ3Ø�ŠÜ×*Ñ*‘Ø×'Ò'Ü×,Ñ,�Ø�ŠÜ×*Ñ*‘Ø×'Ò'Ü×,Ñ,�Ø×$Ò$¨×(=Ò(=Ø˜E‘> e´9Ñ&<ÀÇÁÐR[ÑA[à �LØ"×@Ñ@ÀÈÓN�ØÐ*Ø&Ð&Ü!Ð!Ø�^Š^˜uŸ~š~Ü×(Ñ(Ð(à×-Ñ-¨e°UÓ;Ð;rU   c                  ó   — y rN   rW   r¹  s      rT   rÃ  z'BinopNode.infer_builtin_types_operation*0  r]  rU   c                 óF   — | j                  «       r| j                  «        y y rN   rÈ  rø   s     rT   rŽ  zBinopNode.nogil_check-0  rÉ  rU   c                 ó„   — | j                   j                  |«      | _         | j                  j                  |«      | _        y rN   )r   r9  r!  rø   s     rT   r´  z&BinopNode.coerce_operands_to_pyobjects10  s.   € ØŸ™×8Ñ8¸Ó=ˆŒØŸ™×8Ñ8¸Ó=ˆ�rU   c                 ón   — | j                   j                  «       xr | j                  j                  «       S rN   ©r   rY  r!  rX   s    rT   rY  zBinopNode.check_const50  ó'   € Ø�}‰}×(Ñ(Ó*ÒJ¨t¯}©}×/HÑ/HÓ/JÐJrU   c                 ó�   •— t         ‰| �  «       xs6 | j                  j                  «       xs | j                  j                  «       S rN   )rP   r  r   r!  )rY   rS   s    €rT   r  zBinopNode.is_ephemeral80  s@   ø€ Ü‘Ñ$Ó&ò MØ—‘×*Ñ*Ó,òMØ04·±×0JÑ0JÓ0Lð	NrU   c                 óÌ  — | j                   j                  }| j                  j                  }| j                  j                  �r%|j	                  d«       |j	                  d| j                  «       z  «       | j                  dk(  rk|j	                  d| j                  «       ›d| j                  «       ›d| j                   j                  «       ›d| j                  j                  «       ›d�	«       y |j	                  d| j                  «       ›d| j                  «       ›d	| j                   j                  «       ›d
| j                  ›d
| j                  j                  «       ›d�«       y |j                  s|j                  �r| j                  |«      }| j                  dk(  rdnd}|j                  r| j                   j                  «       n| j                   j                  «       }|j                  r| j                  j                  «       n| j                  j                  «       }|j	                  | j                  «       ›d|›d|›d|›|›d|j                  | j                  «       | j                  «      ›�
«       | j                  |«       y | j                  rÊ| j                  «       r†| j                   dk(  rwt#        || j                  | j                  «       ›d| j%                  «       ›d�| j                  j                  r| j                  «       nd | j&                  | j(                  «       y |j	                  | j                  «       ›d| j%                  «       ›d�«       y y )Nz// Pythran binoprÀ  rŸ  rU  rV  z$){pythonic::numpy::functor::power{}(r1  r  rW  rr  rX  z	, Py_Nonerù  rS  rR  r¥  rß   rT  )r   r­   r!  r>   rÊ   r  r   r&  rs   rÏ  rÛ   rÖ   r†   rì  r  r½  rà   rÝ   r  rÀ   r¹  )rY   rÌ   rº  r»  r?  Ú
extra_argsÚ
op1_resultÚ
op2_results           rT   r¾  zBinopNode.generate_result_code<0  s`  € Ø—‘×"Ñ"ˆØ—‘×"Ñ"ˆØ�9‰9×$Ó$Ø�J‰JÐ)Ô*Ø�J‰JÐ3°d·k±k³mÑCÔDØ�}‰} Ò$Ø—
’
Ø—K‘K•MØ—K‘K•MØ—M‘M×0Ñ0Õ2Ø—M‘M×0Ñ0Õ2ð	4õ 5ð —
’
Ø—K‘K•MØ—K‘K•MØ—M‘M×0Ñ0Õ2Ø—M“MØ—M‘M×0Ñ0Õ2ð4õ 5ð ×Ò %×"3Ó"3Ø×1Ñ1°$Ó7ˆHØ(,¯©¸Ò(=™À2ˆJØ6;×6GÒ6G˜Ÿ™×0Ñ0Ô2ÈTÏ]É]×MaÑMaÓMcˆJØ6;×6GÒ6G˜Ÿ™×0Ñ0Ô2ÈTÏ]É]×MaÑMaÓMcˆJØ�J‰Jà—K‘K•MÚÚÙÚØ×+Ñ+¨D¯K©K«M¸4¿8¹8ÔDðFôGð × Ñ  Õ&Ø�\Š\ð ×$Ñ$Ô&¨4×+?Ñ+?À3Ò+FÜ'¨¨d¯h©hØ6:·k±kµmÀT×E_ÑE_ÕEaÐ(bØ9=¿¹×9NÒ9N¨¯©¬ÐTXØ(,×(<Ñ(<¸d×>SÑ>SõUð
 —
‘
¨¯©­¸×8RÑ8RÕ8TÐUÕVð rU   c           
      óR  — | j                   j                  j                  sr| j                  j                  j                  sRt	        | j
                  d| j                  ›d| j                   j                  ›d| j                  j                  ›d�«       t        j                  | _        y )NzInvalid operand types for 'rÑ  r¡  r¢  )	r   r­   r  r!  r   r†   r   r   r3   rX   s    rT   rÒ  zBinopNode.type_errorh0  sj   € Ø—‘×"Ñ"×+Ò+Ø—=‘=×%Ñ%×.Ò.Ü�$—(’(Ø—“ §¡× 2Ó 2Ø—M‘M×&Ó&ð(ô )ô ×)Ñ)ˆ�	rU   )r[   r\   r]   ró   rM	  r2  r<  r‘   rX  rÑ  r»  r·  rº  r½  r½  r¾  r‹  rÃ  rŽ  r´  rY  r  r¾  rÒ  r^   r_   s   @rT   r®  r®  §/  s|   ø„ ð ˜JÐ'€HØ€Gò+ò-òDò+ò
ò0Rò\ò\òBò0ò*ò.<ò2òò>òKôNò*WöX*rU   r®  c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)Ú
CBinopNodec                 ó|   — t         j                  | |«      }|j                  «       rt        j                  |_        |S rN   )r®  rX  r»  r   r3   r­   rZ  s      rT   rX  zCBinopNode.analyse_typess0  s2   € Ü×&Ñ& t¨SÓ1ˆØ×ÑÔ!Ü"×-Ñ-ˆDŒIØˆrU   c                  ó   — yr  rW   r³  s     rT   rÏ  z CBinopNode.py_operation_functiony0  r®  rU   c                 óŽ   — d| j                   j                  «       ›d| j                  ›d| j                  j                  «       ›d�S ©NrR  rr  r¢  )r   r  r   r!  rX   s    rT   r  z CBinopNode.calculate_result_code|0  s3   � à�M‰M× Ñ Õ"Ø�M‹MØ�M‰M× Ñ Õ"ð$ð 	$rU   c                 óÞ   — d }|j                   s|j                  r|j                  | j                  |«      }|€4|j                   s|j                  r|j                  | j                  |«      }|S rN   )r  r  r²  r   )rY   rº  r»  rµ  s       rT   rÄ  z CBinopNode.compute_c_result_type‚0  s[   € ØˆØ×Ò §¢Ø×4Ñ4°T·]±]ÀEÓJˆHØÐ ×!3Ò!3°u·|²|Ø×4Ñ4°T·]±]ÀEÓJˆHàˆrU   N)r[   r\   r]   rX  rÏ  r  rÄ  rW   rU   rT   rÒ  rÒ  q0  s   „ òòò$órU   rÒ  c                 ó   ‡ — ˆ fd„}|S )Nc                 ó    •— t        | fd‰i|¤ŽS )Nr   )rÒ  )r†   r  r   s     €rT   Úmake_binop_nodez,c_binop_constructor.<locals>.make_binop_node�0  s   ø€ Ü˜#Ñ=¨Ð=°HÑ=Ð=rU   rW   )r   rÚ  s   ` rT   Úc_binop_constructorrÛ  Œ0  s   ø€ ô>àÐrU   c                   ó’   ‡ — e Zd ZdZdZdZd„ Zd„ Zd„ Zˆ fd„Z	d„ Z
d	„ Zˆ fd
„Zd„ Zd„ Zd„ ZddddddddddddddœZddddd œZˆ xZS )!ÚNumBinopNodeTFNc                 ó$  — | j                   j                  }| j                  j                  }| j                  ||«      | _        | j                  s| j	                  «        y | j                  j
                  rd| _        | j                  j                  �r |j                  d   rñ| j                  | j                  v rÙ| j                  dv rW| j                   j                  «       r=| j                  j                  «       s#| j                  | j                   c| _         | _        d| _        |j                  d   | _        | j                  j                  | j                  | j                     || j                  j                  «       ¬«      | _        d| _        | j                  r|j"                  rd|j"                  rW| j                   j%                  | j                  |«      | _         | j                  j%                  | j                  |«      | _        y y y )NFrÌ  )rß   r»   Tzoverflowcheck.fold)Ú	const_rhs)r   r­   r!  rÄ  rÒ  r  rØ  r  rn   r   Úoverflow_op_namesr–   Úoverflow_checkÚoverflow_foldÚoverflow_check_binoprå  r  r  r  ©rY   rv   rº  r»  s       rT   r¿  z NumBinopNode.analyse_c_operation˜0  s‡  € Ø—‘×"Ñ"ˆØ—‘×"Ñ"ˆØ×.Ñ.¨u°eÓ<ˆŒ	Ø�yŠyØ�O‰OÔØØ�9‰9×ÒØˆDŒJØ�I‰I×ÓØ—N‘N ?Ò3Ø—M‘M T×%;Ñ%;Ñ;Ø—‘ Ñ+ØŸ™×9Ñ9Ô;Ø ŸM™M×=Ñ=Ô?Ø/3¯}©}¸d¿m¹mÐ,�”˜tœ}Ø"&ˆDÔØ!$§¡Ð0DÑ!EˆDÔØŸ	™	×6Ñ6Ø×&Ñ& t§}¡}Ñ5ØØ ŸM™M×=Ñ=Ó?ð 7ó AˆDŒIð  ˆDŒLØ�zŠz˜e×.Ò.°5×3CÒ3CØ ŸM™M×3Ñ3°D·I±I¸sÓCˆDŒMØ ŸM™M×3Ñ3°D·I±I¸sÓCˆD�Mð 4DÐ.rU   c                 ó  — | j                  ||«      rnt        j                  ||«      }|t        j                  u r | j                  dvrt        j
                  }|S t        j                  |t        j
                  «      }|S y )Nz|^&)Úc_types_okayr   r  rB  r   r&  ©rY   rº  r»  Úwidest_types       rT   rÄ  z"NumBinopNode.compute_c_result_type³0  sw   € Ø×Ñ˜U EÔ*Ü$×8Ñ8¸ÀÓFˆKØœj×4Ñ4Ñ4Ø—=‘=¨Ñ-ä",×"7Ñ"7�Kð Ðô )×<Ñ<Ø¤×!6Ñ!6ó8�àÐàrU   c                 ór   — |j                   rt        j                  ||«      S t        j                  ||«      S rN   )r¿  r   Ú result_type_of_builtin_operationr¹  s      rT   rÃ  z*NumBinopNode.infer_builtin_types_operationÁ0  s1   € Ø× Ò Ü×>Ñ>¸uÀeÓLÐLä×>Ñ>¸uÀeÓLÐLrU   c                 óø   •— | j                   r| j                   j                  ry| j                  j                   }| j                  j                   }|r|j                  r|r|j                  ryt        ‰| �  «       S r’  )r­   r¿  r   r!  rP   rZ  ©rY   rº  r»  rS   s      €rT   rZ  zNumBinopNode.may_be_noneÇ0  s_   ø€ Ø�9Š9˜Ÿ™×2Ò2àØ—‘×"Ñ"ˆØ—‘×"Ñ"ˆÙ�U×*Ò*©u¸×9NÒ9Nð Ü‰wÑ"Ó$Ð$rU   c                 ó    — | j                   j                  «       }| j                  j                  «       }|r|rd|›d| j                  ›d|›d�S y rÖ  )r   r0  r!  r   )rY   Úvalue1Úvalue2s      rT   r0  z'NumBinopNode.get_constant_c_result_codeÔ0  s?   € Ø—‘×9Ñ9Ó;ˆØ—‘×9Ñ9Ó;ˆÙ’fÚ#)¨4¯=«=º&ÐAÐAàrU   c                 ón   — |j                   xs |j                  xr |j                   xs |j                  S rN   )r  rA  r¹  s      rT   ræ  zNumBinopNode.c_types_okayÜ0  s0   € à× Ñ Ò1 E§M¡Mò 4Ø×!Ñ!Ò2 U§]¡]ð	4rU   c                 ó  •— | j                   rU| | _        |j                  j                  t        j
                  d¬«      | _        |j                  d| j                  z  «       t        ‰| �%  |«       | j                   r�|j                  d| j                  z  «       |j                  d«       |j                  |j                  | j                  «      «       |j                  d«       |j                  j                  | j                  «       y y )NFr¡  rÎ  rŒ  z8PyErr_SetString(PyExc_OverflowError, "value too large");rÕ   )rá  Úoverflow_bit_noder¦  r§  r   r&  Úoverflow_bitrÊ   rP   rÃ  rÙ   r†   r¯  r>  s     €rT   rÃ  z%NumBinopNode.generate_evaluation_codeá0  sÊ   ø€ Ø×ÒØ%)ˆDÔ"Ø $§¡× <Ñ <¼Z×=RÑ=RÐ_dÐ <Ó eˆDÔØ�J‰J�y 4×#4Ñ#4Ñ4Ô5Ü‰Ñ(¨Ô.Ø×ÒØ�J‰JÐ,¨t×/@Ñ/@Ñ@ÔAØ�J‰JÐQÔRØ�J‰J�t—‘ t§x¡xÓ0Ô1Ø�J‰J�sŒOØ�N‰N×'Ñ'¨×(9Ñ(9Õ:ð rU   c                 ób  — | j                   �\| j                  ›d| j                  j                  «       ›d| j                  j                  «       ›d| j                   j
                  ›d�S | j                  j                  s| j                  r”t        | j                  «      r5| j                  j                  «       | j                  j                  «       }}n4| j                  j                  «       | j                  j                  «       }}d|›d| j                  ›d|›d�S | j                  j                  | j                  «      }|€0t        | j                  d| j                  ›d| j                  ›�«       |›d| j                  j                  «       ›d| j                  j                  «       ›d�S )NrR  r1  ru  r¢  rr  zbinary operator z not supported for )rò  rå  r   r  r!  ró  r­   r  rØ  r>   r&  r   Ú	binary_opr   r†   )rY   Úresult1Úresult2rå  s       rT   r  z"NumBinopNode.calculate_result_codeî0  s/  € Ø×!Ñ!Ð-à—	“	Ø—‘×$Ñ$Õ&Ø—‘×$Ñ$Õ&Ø×&Ñ&×3Ó3ð	5ð 5ð
 �Y‰Y×#Ò# t§z¢zÜ˜tŸy™yÔ)Ø#'§=¡=×#?Ñ#?Ó#AÀ4Ç=Á=×C_ÑC_ÓCa˜‘à#'§=¡=×#7Ñ#7Ó#9¸4¿=¹=×;OÑ;OÓ;Q˜�øÚ#*¨D¯M«Mº7ÐCÐCà—9‘9×&Ñ& t§}¡}Ó5ˆDØˆ|Ü�d—h’hÈTÏ]Ë]Ð\`×\eÒ\eÐ fÔgâØ—‘×$Ñ$Õ&Ø—‘×$Ñ$Õ&ð(ð (rU   c                 óh   — |j                   xs% |j                   xs t        j                  | ||«      S rN   )rb  r®  r·  r¹  s      rT   r·  z"NumBinopNode.is_py_operation_types1  s8   € Ø×%Ñ%ò DØ×%Ñ%òDä×/Ñ/°°e¸UÓCð	ErU   c                 ót   — | j                   | j                     }| j                  r|j                  dd«      }|S )NÚ	PyNumber_ÚPyNumber_InPlace)Úpy_functionsr   rM	  r^  )rY   rÌ   rü  s      rT   rÏ  z"NumBinopNode.py_operation_function	1  s6   € Ø×)Ñ)¨$¯-©-Ñ8ˆØ�<Š<Ø)×1Ñ1°+Ð?QÓRˆMØÐrU   ÚPyNumber_OrÚPyNumber_XorÚPyNumber_AndÚPyNumber_LshiftÚPyNumber_RshiftÚPyNumber_AddÚPyNumber_SubtractÚPyNumber_MultiplyÚ__Pyx_PyNumber_MatrixMultiplyÚ__Pyx_PyNumber_DivideÚPyNumber_FloorDivideÚPyNumber_RemainderÚPyNumber_Power)r  r¦  r*  r�  r¥  rß   r  r»   r§  r›  rœ  rž  rŸ  r   rÚ  ÚmulÚlshift)rß   r  r»   r�  )r[   r\   r]   rØ  rá  rò  r¿  rÄ  rÃ  rZ  r0  ræ  rÃ  r  r·  rÏ  rü  rà  r^   r_   s   @rT   rÝ  rÝ  ‘0  s�   ø„ ð €EØ€NØÐòDò6òMô%òò4ô
;ò(ò,Eò
ð "Ø"Ø"Ø%Ø%Ø"Ø'Ø'Ø3Ø+Ø*Ø(Ø$ñ€Lð" ØØØñ	ÔrU   rÝ  c                   ó   — e Zd Zd„ Zy)ÚIntBinopNodec                 ón   — |j                   xs |j                  xr |j                   xs |j                  S rN   )r  rA  r¹  s      rT   ræ  zIntBinopNode.c_types_okay*1  s,   € à—‘Ò- §¡ò 0Ø—‘Ò. §¡ð	0rU   N)r[   r\   r]   ræ  rW   rU   rT   r  r  '1  s   „ ó0rU   r  c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚBitwiseOrNodec                 ób   — | j                   j                  s| j                  j                  rdgS y r   )r   rœ   r!  rø   s     rT   r  z(BitwiseOrNode.analyse_pytyping_modifiers31  s)   € Ø�=‰=× Ò  D§M¡M×$9Ò$9Ø%Ð&Ð&ð %:rU   c                 ó  — |j                  d«      5  |j                  |«      }ddd«       sy|j                  «       sA|j                  r|j	                  «       s|j                  S t        |j                  d|› �«       |S # 1 sw Y   Œ_xY w)z=Analyse annotations in form `[...] | None` and `None | [...]`FNz)'[...] | None' cannot be applied to type )Únew_c_type_contextr€  Úcan_be_optionalrŸ   r\  r   r†   )rY   rv   Úoperand_nodeÚttypes       rT   Ú_analyse_bitwise_or_nonez&BitwiseOrNode._analyse_bitwise_or_none71  s�   € à×#Ñ# EÕ*Ø ×0Ñ0°Ó5ˆE÷ +áØØ×$Ñ$Ô&ð ×$Ò$¨\×-MÑ-MÔ-OØ×,Ñ,Ð,ä�l×&Ñ&Ð*SÐTYÐSZÐ([Ô\Øˆ÷ +Ð*ús   ’BÂBc                 óÌ   — | j                   j                  r| j                  || j                  «      S | j                  j                  r| j                  || j                   «      S y rN   )r   rœ   r  r!  rø   s     rT   r€  zBitwiseOrNode.analyse_as_typeF1  sM   € Ø�=‰=× Ò Ø×0Ñ0°°d·m±mÓDÐDØ�]‰]×"Ò"Ø×0Ñ0°°d·m±mÓDÐDØrU   N)r[   r\   r]   r  r  r€  rW   rU   rT   r  r  01  s   „ ò'òórU   r  c                   ó4   ‡ — e Zd Zd„ Zˆ fd„Zd„ Zˆ fd„Zˆ xZS )ÚAddNodec                 ó’   — |j                   r|j                   s|j                  r|j                  ryt        j                  | ||«      S r«  )r¿  rÀ  rÝ  r·  r¹  s      rT   r·  zAddNode.is_py_operation_typesQ1  s7   € Ø�?Š?˜uŸš°%×2HÒ2HÈU×McÒMcØä×5Ñ5°d¸EÀ5ÓIÐIrU   c                 ó°   •— t         t        t        f}||v r1||v r-|t        |j	                  |«      |j	                  |«      «         S t
        ‰| �  ||«      S rN   )r   r    r   r�  rv  rP   rÃ  )rY   rº  r»  Ústring_typesrS   s       €rT   rÃ  z%AddNode.infer_builtin_types_operationW1  sc   ø€ ô #¤N´LÐAˆØ�LÑ  U¨lÑ%:Ø¤ L×$6Ñ$6°uÓ$=Ø$0×$6Ñ$6°uÓ$=ó!?ñ @ð @ä‰wÑ4°U¸EÓBÐBrU   c                 óø   — |j                   s|j                  r|j                  s|j                  r|S |j                   s|j                  r|j                  s|j                  r|S t        j                  | ||«      S rN   )r  rp  r  rA  rÝ  rÄ  r¹  s      rT   rÄ  zAddNode.compute_c_result_type`1  sX   € à�LŠL˜EŸNšN°·²ÀÇÂØˆLØ�lŠl˜eŸnšn°5·<²<À5Ç=Â=ØˆLä×5Ñ5Ø�e˜Uó$ð $rU   c                 óÞ  •— | j                   j                  | j                  j                  }}d }|t        u s|t        u r¸|t        u r|t        u rd}n9t	        | j                   t
        «      st	        | j                  t
        «      rd}nd}|rjd}| j                  s| j                   j                  «       rB|j                  j                  t        j                  dd«      «       || j                  «       z  }|rf| j                  s| j                   j                  «       r|dz  }| j                   j                  «       s| j                  j                  «       r|dz  }|S t        ‰| �=  |«      S )NTFÚ__Pyx_PyUnicode_ConcatÚUnicodeConcatInPlacer6  ÚInPlaceÚSafe)r   r­   r!  r   r‚   r�  rM	  r›  rÇ   rÈ   r   rÉ   rR  rZ  rP   rÏ  )rY   rÌ   rº  r»  rå  Úis_unicode_concatrS   s         €rT   rÏ  zAddNode.py_operation_functionj1  s,  ø€ Ø—}‘}×)Ñ)¨4¯=©=×+=Ñ+=ˆuˆØˆØ”LÑ  E¬\Ñ$9ØœÑ$¨´,Ñ)>Ø$(Ñ!Ü˜DŸM™MÔ+=Ô>Ä*ÈTÏ]É]Ô\nÔBoà$(Ñ!ð %*Ð!á Ø/�Ø—<’< 4§=¡=×#?Ñ#?Ô#AØ×$Ñ$×5Ñ5Ü#×/Ñ/Ð0FÐHZÓ[ô]à˜D×5Ñ5Ó7Ñ7�Dáà�|Š|˜tŸ}™}×;Ñ;Ô=Ø˜	Ñ!�Ø�}‰}×(Ñ(Ô*¨d¯m©m×.GÑ.GÔ.IØ˜‘�ØˆKä‰wÑ,¨TÓ2Ð2rU   )r[   r\   r]   r·  rÃ  rÄ  rÏ  r^   r_   s   @rT   r  r  N1  s   ø„ òJôCò$÷3ð 3rU   r  c                   ó   — e Zd Zd„ Zy)ÚSubNodec                 ó  — |j                   s|j                  r|j                  s|j                  r|S |j                   s|j                  r(|j                   s|j                  rt        j
                  S t        j                  | ||«      S rN   )r  rp  r  rA  r   Úc_ptrdiff_t_typerÝ  rÄ  r¹  s      rT   rÄ  zSubNode.compute_c_result_typeŒ1  s_   € Ø�LŠL˜EŸNšN°·²ÀÇÂØˆLØ�lŠl˜eŸnšn°5·<²<À5Ç>Â>Ü×.Ñ.Ð.ä×5Ñ5Ø�e˜Uó$ð $rU   N)r[   r\   r]   rÄ  rW   rU   rT   r&  r&  ‰1  s   „ ó$rU   r&  c                   ób   ‡ — e Zd ZdZd„ Zed„ «       Zd„ Zd„ Zˆ fd„Z	ˆ fd„Z
ˆ fd„Zˆ fd	„Zˆ xZS )
ÚMulNodeFc                 ód  — | j                   j                  |«      | _         | j                  j                  |«      | _        | j                  «       | _        | j                  r¿| j                   }| j                  }|j
                  r|j                  €| j                  |||«      S |j
                  r|j                  €| j                  |||«      S |j                  t        v r|j                  |«      | _        n(|j                  t        v r|j                  |«      | _         | j                  |«      S rN   )r   rX  r!  Úcalculate_is_sequence_mulÚis_sequence_mulr�   r°   Úanalyse_sequence_mulr­   r#   rN  rÑ  ©rY   rv   r   r!  s       rT   rX  zMulNode.analyse_typesš1  sý   € ØŸ™×3Ñ3°CÓ8ˆŒØŸ™×3Ñ3°CÓ8ˆŒØ#×=Ñ=Ó?ˆÔð ×ÒØ—}‘}ˆHØ—}‘}ˆHØ×/Ò/°H×4HÑ4HÐ4PØ×0Ñ0°°hÀÓIÐIØ×1Ò1°h×6JÑ6JÐ6RØ×0Ñ0°°hÀÓIÐIØ—‘Ô"8Ñ8Ø (× 8Ñ 8¸Ó =�•Ø—‘Ô"8Ñ8Ø (× 8Ñ 8¸Ó =�”à×%Ñ% cÓ*Ð*rU   c                 óB   — | j                   xr | t        v xr | t        uS rN   )r¿  r#   r"   rþ  s    rT   Úis_builtin_seqmul_typezMulNode.is_builtin_seqmul_type®1  s$   € à×#Ñ#Òf¨Ô0FÐ(FÒfÈ4ÔWfÐKfÐfrU   c                 ó2  — | j                   j                  }| j                  j                  }|t        j                  u s|j
                  r||}}|t        j                  u s|j
                  r+|j                  s|j                  ry| j                  |«      ryyr  )	r   r­   r!  r   r  r  r¿  rI  r1  r¹  s      rT   r,  z!MulNode.calculate_is_sequence_mul²1  su   € Ø—‘×"Ñ"ˆØ—‘×"Ñ"ˆØ”G×$Ñ$Ñ$¨¯ªà  %�5ˆEØ”G×$Ñ$Ñ$¨¯ªØ�Š %§/¢/ØØ×*Ñ*¨5Ô1ØØrU   c                 óŽ   — |j                   �J ‚|j                  |«      }|j                  |«      |_         |j                  |«      S rN   )r°   r9  rN  rX  )rY   rv   r£  Úmults       rT   r.  zMulNode.analyse_sequence_mul¿1  sE   € Ø�‰Ð&Ð&Ð&Ø×$Ñ$ SÓ)ˆØ×.Ñ.¨sÓ3ˆŒØ× Ñ  Ó%Ð%rU   c                 ó@  •— | j                   r‚| j                  j                  j                  r!| j                  j	                  |«      | _        y | j
                  j                  j                  r | j
                  j	                  |«      | _        y t        ‰| �  |«       y rN   )r-  r   r­   rI  r9  r!  rP   r´  r3  s     €rT   r´  z$MulNode.coerce_operands_to_pyobjectsÅ1  su   ø€ Ø×Òà�}‰}×!Ñ!×+Ò+Ø $§¡× @Ñ @ÀÓ E�”ð ð —‘×#Ñ#×-Ò-Ø $§¡× @Ñ @ÀÓ E�”ØÜ‰Ñ,¨SÕ1rU   c                 ó@   •— | j                   xs t        ‰| �	  ||«      S rN   )r-  rP   r·  rì  s      €rT   r·  zMulNode.is_py_operation_typesÏ1  s    ø€ Ø×#Ñ#ÒR¤u¡wÑ'DÀUÈEÓ'RÐRrU   c                 óà   •— | j                   rS|j                  j                  t        j                  dd«      «       | j
                  j                  j                  rdS dS t        ‰| �%  |«      S )Nr¹	  r6  Ú__Pyx_PySequence_MultiplyÚ__Pyx_PySequence_Multiply_Left)
r-  rÇ   rÈ   r   rÉ   r   r­   rs   rP   rÏ  r>  s     €rT   rÏ  zMulNode.py_operation_functionÒ1  sb   ø€ Ø×ÒØ×Ñ×-Ñ-Ü×'Ñ'Ð(<Ð>PÓQôSà26·-±-×2DÑ2D×2PÒ2PÐ.ÐvÐVvÐvÜ‰wÑ,¨TÓ2Ð2rU   c                 óØ   •— |j                   r2|j                   r&| j                  |«      r|S | j                  |«      r|S |j                  r|S |j                  r|S t        ‰| �  ||«      S rN   )r¿  r1  r  rP   rÃ  rì  s      €rT   rÃ  z%MulNode.infer_builtin_types_operationÙ1  sh   ø€ ð × Ò  U×%:Ò%:Ø×*Ñ*¨5Ô1Ø�Ø×*Ñ*¨5Ô1Ø�ð �<Š<ØˆLØ�<Š<ØˆLÜ‰wÑ4°U¸EÓBÐBrU   )r[   r\   r]   r-  rX  rÔ  r1  r,  r.  r´  r·  rÏ  rÃ  r^   r_   s   @rT   r*  r*  –1  sI   ø„ à€Oò+ð( ñgó ðgòò&ô2ôSô3÷Cð CrU   r*  c                   ó*   ‡ — e Zd Zd„ Zd„ Zˆ fd„Zˆ xZS )ÚMatMultNodec                  ó   — yr·  rW   r¹  s      rT   r·  z!MatMultNode.is_py_operation_typesí1  r]  rU   c                  ó   — y rN   rW   r¹  s      rT   rÃ  z)MatMultNode.infer_builtin_types_operationð1  r²	  rU   c                 ó‚   •— |j                   j                  t        j                  dd«      «       t        ‰| �  |«       y )NÚMatrixMultiplyr6  )rÇ   rÈ   r   rÉ   rP   rÃ  r>  s     €rT   rÃ  z$MatMultNode.generate_evaluation_codeô1  s3   ø€ Ø×Ñ×)Ñ)¬+×*AÑ*AÐBRÐTfÓ*gÔhÜ‰Ñ(¨Õ.rU   )r[   r\   r]   r·  rÃ  rÃ  r^   r_   s   @rT   r<  r<  ê1  s   ø„ òò÷/ð /rU   r<  c                   ót   ‡ — e Zd ZdZdZdZdZdZd„ Zd„ Z	d„ Z
d„ Zd„ Zˆ fd„Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚDivNodeNFc                 ó´   — t         | j                     }| j                  dk(  r5| j                  €)t        |t        «      rt        |t        «      r	t         d   }|S )Nr›  rœ  )r«  r   Útruedivisionr‚   r„   ©rY   Úop1Úop2rå  s       rT   Ú!find_compile_time_binary_operatorz)DivNode.find_compile_time_binary_operator2  sI   € Ü,¨T¯]©]Ñ;ˆØ�=‰=˜CÒ D×$5Ñ$5Ð$=ä˜#œsÔ#¬
°3¼Ô(<Ü4°TÑ:�ØˆrU   c                 óœ   — | j                   j                  }| j                  j                  }| j                  ||«      } |||«      | _        y rN   )r   rƒ   r!  rH  rE  s       rT   r2  z!DivNode.calculate_constant_result
2  s@   € Ø�m‰m×+Ñ+ˆØ�m‰m×+Ñ+ˆØ×5Ñ5°c¸3Ó?ˆÙ# C¨›~ˆÕrU   c                 óô   — | j                   j                  |«      }| j                  j                  |«      }| j                  ||«      }	  |||«      S # t        $ r}| j                  |«       Y d }~y d }~ww xY wrN   )r   r<  r!  rH  rV  r@  )rY   r;  r   r!  rå  r?  s         rT   r<  zDivNode.compile_time_value2  so   € Ø—=‘=×3Ñ3°DÓ9ˆØ—=‘=×3Ñ3°DÓ9ˆØ×5Ñ5°hÀÓIˆð	-Ù˜ (Ó+Ð+øÜò 	-Ø×)Ñ)¨!×,Ñ,ûð	-ús   Á
A Á	A7ÁA2Á2A7c                 ól   — | j                   s|j                  d   rd| _        y | j                  | _        y )NÚ	cdivisionF)rL  rn   ÚctruedivisionrD  rø   s     rT   Ú_check_truedivisionzDivNode._check_truedivision2  s*   € Ø�>Š>˜SŸ^™^¨KÒ8Ø!&ˆDÕà!%×!2Ñ!2ˆDÕrU   c                 ó®   — | j                  |«       | j                  | j                  j                  |«      | j                  j                  |«      |«      S rN   )rN  r‹  r   r‘   r!  rø   s     rT   r‘   zDivNode.infer_type2  sI   € Ø× Ñ  Ô%Ø×ÑØ�M‰M×$Ñ$ SÓ)Ø�M‰M×$Ñ$ SÓ)¨3ó0ð 	0rU   c                 ób  •— t         ‰| �  ||«      }|�›| j                  dk(  rŒ| j                  s| j                  rT|t
        j                  u rt        j                  S |j                  r$t        j                  t        j                  |«      S |S |t
        j                  u s|j                  rd }|S ©Nr›  )rP   rÃ  r   rD  rM  r   r  r   r;  r  r  )rY   rº  r»  r‹  rS   s       €rT   rÃ  z%DivNode.infer_builtin_types_operation%2  sž   ø€ Ü‘gÑ;¸EÀ5ÓIˆØÐ" t§}¡}¸Ò';Ø× Ò  D×$6Ò$6à¤'×"2Ñ"2Ñ2Ü%×3Ñ3Ð3Ø ×'Ò'Ü%×9Ñ9¼*×:RÑ:RÐT_Ó`Ð`ð Ðð ¤× 0Ñ 0Ñ0°K×4FÒ4Fà"�ØÐrU   c                 ó  — | j                  |«       t        j                  | |«      }| j                  «       rd| _        | j
                  j                  s¸| j                  d u xrH |j                  d    xr6 | j                  j                  «        xs | j                  j                  dk(  | _        | j                  s|j                  d   r@| j                  j                  |«      | _        | j                  j                  |«      | _        |S )NTrL  r   Úcdivision_warnings)rN  rÝ  rÑ  r½  rL  r­   rs   rn   r!  r–   rƒ   Úzerodivision_checkr   rh  ©rY   rv   r  s      rT   rÑ  zDivNode.analyse_operation32  sâ   € Ø× Ñ  Ô%Ü×/Ñ/°°cÓ:ˆð × Ñ Ô"Ø!ˆDŒNØ�y‰y×$Ò$à—‘ $Ð&ò 9¨s¯~©~¸kÑ/JÐ+Jò 9ØŸ™×:Ñ:Ó<Ð<ò 8Ø—]‘]×2Ñ2°aÑ7ð Ô#ð ×&Ò&¨#¯.©.Ð9MÒ*Nà $§¡× >Ñ >¸sÓ C�”Ø $§¡× >Ñ >¸sÓ C�”ØˆrU   c                 ó>  — | j                   dk(  rx| j                  rl|j                  s`|j                  sT|j                  sH|j                  s<t	        j
                  |t        j                  «      }t	        j
                  ||«      }|S t        j                  | ||«      S rQ  )	r   rM  r  rC  r   r  r;  rÝ  rÄ  rç  s       rT   rÄ  zDivNode.compute_c_result_typeH2  sy   € Ø�=‰=˜CÒ D×$6Ò$6¸u×?QÒ?QÐZ_×ZlÒZlØ—>’>¨%¯.ª.Ü(×<Ñ<¸UÄJ×D\ÑD\Ó]�Ü(×<Ñ<¸UÀKÓP�Ø"Ð"Ü×1Ñ1°$¸¸uÓEÐErU   c                 ó2   — | j                   j                  ryy)Nú"integer division or modulo by zerozfloat divisionrE  rX   s    rT   Úzero_division_messagezDivNode.zero_division_messageP2  ó   € Ø�9‰9×ÒØ7à#rU   c                 óh  — | j                   j                  sõ| j                   j                  sß| j                  €|j                  j
                  d   xs_ | j                   j                  xsG | j                   j                  xs | j                   j                  xr | j                   j                   | _        | j                  sH|j                  j                  t        j                  dd«      j                  | j                   «      «       t        j                  | |«       | j!                  |«       y )NrL  ÚDivIntúCMath.c)r­   rs   r  rL  rÇ   rn   rC  r  rA  r,  rÈ   r   rÉ   r„  rÝ  rÃ  Úgenerate_div_warning_coder³  s     rT   rÃ  z DivNode.generate_evaluation_codeV2  sâ   € Ø�y‰y×$Ò$¨T¯Y©Y×-AÒ-AØ�~‰~Ð%à×$Ñ$×/Ñ/°Ñ<ò ^Ø—y‘y×)Ñ)ò^àŸ™×-Ñ-ÒB°·±×1BÑ1BÒ\ÈDÏIÉI×L\ÑL\ÐH\ð ”ð
 —>’>Ø× Ñ ×1Ñ1Ü×+Ñ+¨H°iÓ@×KÑKÈDÏIÉIÓVôXä×-Ñ-¨d°DÔ9Ø×&Ñ& tÕ,rU   c           	      ó	  — | j                   }| j                  j                  �sh| j                  �r©| j                  s:| j                  j                  d«      ›d| j                  j                  «       ›d�}nd| j                  j                  «       z  }|j                  d|z  «       |r|j                  «        |j                  d| j                  «       z  «       |r|j                  «        |j                  |j                  | j                  «      «       |j                  d«       | j                  j                  �rš| j                  j                  �rƒ| j                   dk7  �rs|j"                  j%                  t'        j(                  d	d
«      «       | j                  j                  j                  dk(  rd| j                  j                  «       z  }nH| j                  j                  j+                  «       }d|›d| j                  j                  «       ›d|›d�}|j                  d| j                  j+                  «       ›d|›d| j,                  j                  «       ›d�«       |r|j                  «        |j                  d«       |r|j                  «        |j                  |j                  | j                  «      «       |j                  d«       |j"                  j.                  d   �r—| j                   dk7  �r†|j"                  j%                  t'        j(                  dd«      «       |j                  d| j,                  j                  «       ›d| j                  j                  «       ›d�«       dt0        j2                  t0        j4                  dœz  }|rzd}|j                  d |z  «       |j                  «        |j                  |j7                  | j                  d!¬"«      «       |j                  |›d#|›d$�«       |j                  «        n.|}|j                  |j7                  | j                  d!¬"«      «       |j9                  d%|z  «       |j;                  |j<                  «       |j                  d«       y y y y )&NÚzerorR  r¢  z%s == 0rŒ  z/PyErr_SetString(PyExc_ZeroDivisionError, "%s");rÕ   rž  ÚUnaryNegOverflowsrô  r7   zunlikely(%s == -1)z(!(((z)-1) > 0)) && unlikely(z == (z)-1)zelse if (sizeof(z) == sizeof(long) && z-  && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(rb  zLPyErr_SetString(PyExc_OverflowError, "value too large to perform division");rS  r›  ÚCDivisionWarningr]  ra  z	 < 0) ^ (z	 < 0))) {z1__Pyx_cdivision_warning(%(FILENAME)s, %(LINENO)s))ÚFILENAMEÚLINENOr  zint %s;T)r  rS  rT  zif (unlikely(%s)) )r¹  r­   rs   rT  rØ  rñ  r!  r  rÊ   r×   rY  rØ   rÙ   r†   r  r,  r   rÇ   rÈ   r   rÉ   r´  r   rn   r   Úfilename_cnameÚlineno_cnameÚset_error_inforú  rÈ  rÉ  )rY   rÌ   Úin_nogilÚ	zero_testÚminus1_checkÚtype_of_op2Úwarning_coder  s           rT   r^  z!DivNode.generate_div_warning_coded2  sj  € Ø×(Ñ(ˆØ�y‰y×$Ó$Ø×&Ó&Ø—z’zØ,0¯I©I×,>Ñ,>¸vÕ,FÈÏÉ×H\ÑH\ÕH^Ð _‘Ià )¨D¯M©M×,@Ñ,@Ó,BÑ B�IØ—
‘
Ð0°9Ñ<Ô=ÙØ×'Ñ'Ô)Ø—
‘
ÐLÈt×OiÑOiÓOkÑkÔlÙØ×0Ñ0Ô2Ø—
‘
˜4Ÿ?™?¨4¯8©8Ó4Ô5Ø—
‘
˜3”Ø—9‘9×#Ó#¨¯	©	×(8Ó(8¸T¿]¹]ÈcÓ=QØ×$Ñ$×5Ñ5´k×6MÑ6MÐNaÐcoÓ6pÔqØ—}‘}×)Ñ)×0Ñ0°AÒ5à';¸d¿m¹m×>RÑ>RÓ>TÑ'T™à&*§m¡m×&8Ñ&8×&OÑ&OÓ&Q™â'¨¯©×)=Ñ)=Õ)?Âð(N˜à—J’Jà#Ÿy™y×?Ñ?ÕAÚ+Ø#Ÿ}™}×3Ñ3Õ5ð	 7ô 8ñ
  Ø×+Ñ+Ô-Ø—J‘JÐmÔnÙØ×4Ñ4Ô6Ø—J‘J˜tŸ™¨t¯x©xÓ8Ô9Ø—J‘J˜s”OØ×Ñ×*Ñ*Ð+?Ó@ÀTÇ]Á]ÐVYÓEYØ× Ñ ×1Ñ1Ü×+Ñ+Ð,>À	ÓJôLà—
’
Ø $§¡× 4Ñ 4Õ 6Ø $§¡× 4Ñ 4Õ 6ð8ô 9ð  SÜ &× 5Ñ 5Ü%×2Ñ2ñVñ  �ñ
 Ø"*�KØ—J‘J˜y¨;Ñ6Ô7Ø×'Ñ'Ô)Ø—J‘J˜t×2Ñ2°4·8±8À$Ð2ÓGÔHØ—J‘Jª[º,ÐGÔHØ×0Ñ0Õ2à".�KØ—J‘J˜t×2Ñ2°4·8±8À$Ð2ÓGÔHà—‘Ð-°Ñ;Ô<Ø—‘˜d×.Ñ.Ô/Ø—
‘
˜3•ð1 FZÐ@ðG %rU   c           
      ó$  — | j                   j                  s| j                  «       rt        j	                  | «      S | j
                  j                  «       }| j                  j                  «       }| j                   j                  r| j                  dk(  r	d|› d|› d�S | j                  s| j                  r‘| j                  r|| j                   | j
                  j                   k7  r| j                   j                  |«      }| j                   | j                  j                   k7  r| j                   j                  |«      }d|› d|› d�S | j                  j                  «       }d| j                   j                  «       › d|› d|› dt        |«      d›d�	S )	Nrœ  zfloor(z / r¢  rR  Ú
__Pyx_div_r1  r·  )r­   r  r½  rÝ  r  r   r  r!  rC  r   rD  rL  r	  r–   Úspecialization_namere  ©rY   rF  rG  Úb_is_constants       rT   r  zDivNode.calculate_result_code£2  sJ  € Ø�9‰9×Ò 4×#8Ñ#8Ô#:Ü×5Ñ5°dÓ;Ð;à�m‰m×"Ñ"Ó$ˆØ�m‰m×"Ñ"Ó$ˆà�9‰9×Ò $§-¡-°4Ò"7Ø˜C˜5  C 5¨Ð*Ð*Ø×Ò $§.¢.Ø× Ò Ø—9‘9 §¡× 2Ñ 2Ò2ØŸ)™)×-Ñ-¨cÓ2�CØ—9‘9 §¡× 2Ñ 2Ò2ØŸ)™)×-Ñ-¨cÓ2�CØ�s�e˜3˜s˜e 1Ð%Ð%à ŸM™M×=Ñ=Ó?ˆMØ §	¡	× =Ñ =Ó ?Ð@ÀÀ#ÀÀbÈÈÈRÔPTÐUbÓPcÐdeÐOfÐfgÐhÐhrU   )r[   r\   r]   rL  rD  rM  rS  rT  rH  r2  r<  rN  r‘   rÃ  rÑ  rÄ  rY  rÃ  r^  r  r^   r_   s   @rT   rB  rB  ù1  s_   ø„ ð €IØ€LØ€MØÐØÐòò.ò-ò3ò0ôòò*Fò$ò-ò= ö~irU   rB  s'   %(?:%|(?:\([^)]+\))?[-+#,0-9 ]*([a-z]))>   ó   Eó   Fó   Gó   Xó   aó   bó   có   dó   eó   fó   gó   ió   oó   uó   xc                   óF   ‡ — e Zd Zd„ Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zˆ fd„Z	ˆ xZ
S )ÚModNodec                 óh   — |j                   xs% |j                   xs t        j                  | ||«      S rN   )r¿  rÝ  r·  r¹  s      rT   r·  zModNode.is_py_operation_typesÉ2  s4   € Ø—‘ò JØ—?‘?òJä×5Ñ5°d¸EÀ5ÓIð	KrU   c                 ó²   •— |t         t        t        fv r4|j                  s&|j                  r| j
                  j                  «       s|S t        ‰| �!  ||«      S rN   )	r   r   r    r¿  rs   r   rZ  rP   rÃ  rì  s      €rT   rÃ  z%ModNode.infer_builtin_types_operationÎ2  sI   ø€ Ø”\¤:¬~Ð>Ñ>à×$Ò$¨E×,=Ò,=ÀTÇ]Á]×E^ÑE^ÔE`Ø�Ü‰wÑ4°U¸EÓBÐBrU   c                 ó2   — | j                   j                  ryy)NrX  zfloat divmod()rE  rX   s    rT   rY  zModNode.zero_division_messageÕ2  rZ  rU   c                 ó†  — t         j                  | |«      }| j                  j                  s”| j                  €-|j
                  d   xs | j                  j                   | _        | j                  sO| j                  j                  s9| j                  j                  s#t        | j                  d| j                  z  «       |S )NrL  z(mod operator not supported for type '%s')rB  rÑ  r­   rs   rL  rn   r,  r  rC  r   r†   rU  s      rT   rÑ  zModNode.analyse_operationÛ2  s‹   € Ü×*Ñ*¨4°Ó5ˆð �y‰y×$Ò$Ø�~‰~Ð%Ø!$§¡°Ñ!<Ò!TÀDÇIÁI×DTÑDTÐ@T�”Ø—>’>¨$¯)©)×*:Ò*:À4Ç9Á9×CUÒCUÜ�d—h‘hÐ JÈTÏYÉYÑ VÔWØˆrU   c                 ó  — | j                   j                  sÉ| j                  s½| j                   j                  rI|j                  j                  t        j                  dd«      j                  | j                   «      «       n^|j                  j                  t        j                  dd«      j                  | j                   | j                   j                  ¬«      «       t        j                  | |«       | j                  |«       y )NÚModIntr]  ÚModFloat)Úmath_h_modifier)r­   rs   rL  r  rÇ   rÈ   r   rÉ   r„  rŠ  rÝ  rÃ  r^  r³  s     rT   rÃ  z ModNode.generate_evaluation_codeç2  sÂ   € Ø�y‰y×$Ò$¨T¯^ª^Ø�y‰y×ÒØ× Ñ ×1Ñ1Ü×+Ñ+¨H°iÓ@×KÑKÈDÏIÉIÓVõXð × Ñ ×1Ñ1Ü×+Ñ+¨J¸	ÓB×MÑMØŸ	™	°4·9±9×3LÑ3Lð Nó NôOô 	×-Ñ-¨d°DÔ9Ø×&Ñ& tÕ,rU   c           
      ó–  — | j                   j                  «       }| j                  j                  «       }| j                  r?| j                  j
                  r d| j                  j                  › d|› d|› d�S d|› d|› d�S | j                  j                  «       }d| j                  j                  «       › d|› d|› dt        |«      d›d�	S )NÚfmodrR  r1  r¢  z % Ú
__Pyx_mod_r·  )
r   r  r!  rL  r­   rC  rŠ  r–   ro  re  rp  s       rT   r  zModNode.calculate_result_codeô2  sÂ   € Ø�m‰m×"Ñ"Ó$ˆØ�m‰m×"Ñ"Ó$ˆà�>Š>Ø�y‰y×!Ò!Ø˜dŸi™i×7Ñ7Ð8¸¸#¸¸bÀÀÀQÐGÐGà˜3˜%˜s 3 % qÐ)Ð)à ŸM™M×=Ñ=Ó?ˆMØ §	¡	× =Ñ =Ó ?Ð@ÀÀ#ÀÀbÈÈÈRÔPTÐUbÓPcÐdeÐOfÐfgÐhÐhrU   c                 ó@  •— | j                   j                  | j                  j                  }}|t        u r[| j                   j	                  «       s?|j
                  r|j                  |«      s"|t        u rt        | j                  t        «      syyt        ‰| �-  |«      S )NÚ__Pyx_PyUnicode_FormatSafeÚPyUnicode_Format)r   r­   r!  r   rZ  r¾  r  r   r‚   r  rP   rÏ  )rY   rÌ   rº  r»  rS   s       €rT   rÏ  zModNode.py_operation_function3  sz   ø€ Ø—}‘}×)Ñ)¨4¯=©=×+=Ñ+=ˆuˆà”LÑ Ø�}‰}×(Ñ(Ô*Ø×+Ò+°×0@Ñ0@ÀÔ0GØœ^Ñ+´J¸t¿}¹}ÔN`Ô4aØ3à)Ü‰wÑ,¨TÓ2Ð2rU   )r[   r\   r]   r·  rÃ  rY  rÑ  rÃ  r  rÏ  r^   r_   s   @rT   r‚  r‚  Æ2  s.   ø„ òKô
Cò$ò
ò-òi÷
3ð 
3rU   r‚  c                   óf   ‡ — e Zd ZdZdZd„ Zˆ fd„Zˆ fd„Zd„ Zd„ Z	ˆ fd„Z
d	„ Zˆ fd
„Zˆ fd„Zˆ xZS )ÚPowNodeNFc                 óF   — | j                   �y |j                  d   | _         y )NÚcpow)Úis_cpowrn   rø   s     rT   Ú_check_cpowzPowNode._check_cpow3  s   € Ø�<‰<Ð#ØØ—~‘~ fÑ-ˆ�rU   c                 óD   •— | j                  |«       t        ‰| �	  |«      S rN   )r–  rP   r‘   r3  s     €rT   r‘   zPowNode.infer_type3  s!   ø€ Ø×Ñ˜ÔÜ‰wÑ! #Ó&Ð&rU   c                 óD   •— | j                  |«       t        ‰| �	  |«      S rN   )r–  rP   rX  r3  s     €rT   rX  zPowNode.analyse_types3  s!   ø€ Ø×Ñ˜ÔÜ‰wÑ$ SÓ)Ð)rU   c                  ó   — y rN   rW   r¹  s      rT   rÃ  z%PowNode.infer_builtin_types_operation"3  r²	  rU   c                 ób  — t         j                  | |«       | j                  j                  rµ| j                  j                  j
                  rw| j                  j                  | j                  |«      | _        | j                  j                  | j                  |«      | _        | j                  j                  d«      | _
        y t        | j                  d«       d| _
        y | j                  j
                  rd| j                  j                  z   | _
        y | j                  j                  r¨d| j                  j                  «       j!                  dd«      z  | _
        |j#                  t%        j&                  dd	«      j)                  | j                  | j                  j                  «       | j                  j*                  xr d
xs d¬«      «       y | j                  j,                  sEt        | j                  d| j                  j                  ›d| j                  j                  ›�«       y y )NrŸ  z complex int powers not supportedr,  Úpowz__Pyx_pow_%srr  r™  ÚIntPowr]  r,   r   )rŽ  r­   r,  z+got unexpected types for C power operator: r1  )rÝ  r¿  r­   r  r2  rC  r   r  r!  rõ  Úpow_funcr   r†   rŠ  r  r´  r^  rÈ   r   rÉ   r„  r,  r  rø   s     rT   r¿  zPowNode.analyse_c_operation&3  s�  € Ü×(Ñ(¨¨sÔ3Ø�9‰9×ÒØ�y‰y×"Ñ"×+Ò+Ø $§¡× 7Ñ 7¸¿	¹	À3Ó G�”Ø $§¡× 7Ñ 7¸¿	¹	À3Ó G�”Ø $§	¡	× 3Ñ 3°DÓ 9�•ä�d—h‘hÐ BÔCØ )�•Ø�Y‰Y×ÒØ! D§I¡I×$=Ñ$=Ñ=ˆD�MØ�Y‰Y×ÒØ*¨T¯Y©Y×-MÑ-MÓ-O×-WÑ-WÐX[Ð]`Ó-aÑaˆDŒMØ× Ñ Ü×'Ñ'¨°)Ó<×GÑGØ"Ÿm™mØŸ™×9Ñ9Ó;ØŸ9™9×+Ñ+Ò1°Ò6°Qð Hó 8õ9ð
 —‘×#Ò#Ü�$—(’(Ø!Ÿ]™]×/Ó/°·±×1CÒ1CðEõ Fð $rU   c                 ó‚  •— ddl m} d }t        | j                  j                  |«      xr | j                  j                  dk\  xs |j
                  xr |j                  dk(  }|j
                  xst | j                  j                  «       xrX t        | j                  j                  |«      xr6 t        | j                  j                  «      | j                  j                  k(  }d}| j                  rjt        ‰| �1  ||«      }| j                  j                  «       sût        | j                  j                  t        «      xr | j                  j                  dk  }n»|s|rŽt        ‰| �1  ||«      }| j                  j                  «       s$|j
                  xr |j                  }|rqd| _        nit        | j                  j                  t        «      xr | j                  j                  dk  }n)| j                  ||«      rt        j                   }d| _        |r$t        j"                  |t        j$                  «      }|S )Nr   )ÚRealFT)ÚnumbersrŸ  r‚   r   rƒ   r  r,  r!  r–   r„   r•  rP   rÄ  Útype_was_inferredræ  r   r  r  r;  )	rY   rº  r»  rŸ  Úc_result_typeÚop1_is_definitely_positiveÚtype2_is_intÚneeds_wideningrS   s	           €rT   rÄ  zPowNode.compute_c_result_type=3  sÕ  ø€ Ý Øˆä�t—}‘}×4Ñ4°dÓ;ò 3Ø—‘×-Ñ-°Ñ2ò&
ð �L‰LÒ.˜UŸ\™\¨QÑ.ð	 	#ð —|‘|ò 
Ø�M‰M×-Ñ-Ó/ò PÜ�t—}‘}×4Ñ4°dÓ;òPä�—‘×-Ñ-Ó.°$·-±-×2OÑ2OÑOð 	ð
 ˆØ�<Š<Ü!™GÑ9¸%ÀÓGˆMØ—=‘=×4Ñ4Ô6ä˜tŸ}™}×<Ñ<¼cÓBÒhÀtÇ}Á}×GdÑGdÐghÑGhñ ñ (©<ä!™GÑ9¸%ÀÓGˆMØ—=‘=×4Ñ4Ô6Ø!&§¡Ò!>°%·,±,�Ù!Ø-1�DÕ*ô ˜tŸ}™}×<Ñ<¼cÓBÒhÀtÇ}Á}×GdÑGdÐghÑGhñ ð ×Ñ˜u eÔ,ô '×8Ñ8ˆMØ%)ˆDÔ"ÙÜ&×:Ñ:¸=Ì*×JbÑJbÓcˆMØÐrU   c                 óx   ‡ — ˆ fd„}‰ j                   ›d |‰ j                  «      ›d |‰ j                  «      ›d�S )Nc                 ó¨   •— ‰j                   | j                   k(  r| j                  «       S ‰j                   j                  | j                  «       «      S rN   )r­   r  r	  )r·  rY   s    €rT   r2   z/PowNode.calculate_result_code.<locals>.typecasti3  s<   ø€ Ø�y‰y˜GŸL™LÒ(Ø—~‘~Ó'Ð'à—y‘y×*Ñ*¨7¯>©>Ó+;Ó<Ð<rU   rR  r1  r¢  )r�  r   r!  )rY   r2   s   ` rT   r  zPowNode.calculate_result_codeg3  s3   ø€ ô	=ð �M‹MÙ�T—]‘]Õ#Ù�T—]‘]Õ#ð%ð 	%rU   c                 óz  •— | j                   j                  r–| j                  j                  dk(  r}t	        | j                  j                  t
        «      rY| j                  j                   t        u r=|j                  j                  t        j                  dd«      «       | j                  ryyt        ‰| �9  |«      S )Nr7   ÚPyNumberPow2rì	  Ú__Pyx_PyNumber_InPlacePowerOf2Ú__Pyx_PyNumber_PowerOf2)r­   rs   r   rƒ   r‚   r„   r!  r   rÇ   rÈ   r   rÉ   rM	  rP   rÏ  r>  s     €rT   rÏ  zPowNode.py_operation_functions3  s‡   ø€ Ø�I‰I×!Ò!Ø—‘×-Ñ-°Ò2Ü˜4Ÿ=™=×8Ñ8¼#Ô>Ø—‘×"Ñ"¤nÑ4Ø×Ñ×-Ñ-¬k×.EÑ.EÀnÐVbÓ.cÔdØ�|Š|Ø7à0Ü‰wÑ,¨TÓ2Ð2rU   c                 ó<  •‡	— || j                   k(  r| S | j                  €î| j                  râ|j                  s|j                  rÊ| j                   t
        j                  u r	dˆ	fd„	Š	d}n|j                  rd„ Š	d}nd„ Š	 ‰	| j                  «      \  }} ‰	| j                  «      \  }}|rd|rbt        | j                  dz  «       d| _        || _        || _        | j                  |«      }|j                   |k7  r|j                  ||«      }|S t        ‰
| �1  ||«      S )	NTc                 óÊ   •— | j                   j                  s| j                   j                  rd| fS |r0t        | t        «      r  ‰| j
                  d¬«      | j
                  fS y)NTF)Úrecurserm  )r­   rC  r  r‚   r  r�   )r·  r®  Úcheck_typess     €rT   r¯  z&PowNode.coerce_to.<locals>.check_types‰3  sP   ø€ Ø—|‘|×,Ò,°·±×0CÒ0CØ# W˜}Ð,Ù¤:¨gÔ7JÔ#KÙ*¨7¯;©;ÀÔFÈÏÉÐSÐSØ&rU   za non-complex C numeric typec                 ó8   — | j                   j                  rd| fS y)NTrm  rE  ©r·  s    rT   r¯  z&PowNode.coerce_to.<locals>.check_types‘3  s   € Ø—|‘|×*Ò*Ø# W˜}Ð,ð  +rU   zan integer C numeric typec                  ó   — y)Nrm  rW   r±  s    rT   r¯  z&PowNode.coerce_to.<locals>.check_types™3  s   € Ø&rU   zžTreating '**' as if 'cython.cpow(True)' since it is directly assigned to a %s. This is likely to be fragile and we recommend setting 'cython.cpow' explicitly.r•  )r­   r•  r¡  rC  r  r   r  r   r!  r   r†   rX  r  rP   )rY   r"  rv   Ú
msg_detailÚ	check_op1rF  Ú	check_op2rG  r  r¯  rS   s            @€rT   r  zPowNode.coerce_to3  s  ù€ Ø�t—y‘yÒ ØˆKØ�L‰LÐ  T×%;Ò%;Ø×"Ò" h§o¢oð
 �y‰yœJ×8Ñ8Ñ8õ'ð <‘
Ø—’ò+ð 9‘
ò'á(¨¯©Ó7‰NˆI�sÙ(¨¯©Ó7‰NˆI�sÙ™YÜ˜Ÿ™ð #0ð 3=ñ#=ô >ð  $�”Ø #�”Ø #�”Ø×+Ñ+¨CÓ0�Ø—;‘; (Ò*Ø#×-Ñ-¨h¸Ó<�FØ�Ü‰wÑ  ¨3Ó/Ð/rU   )r[   r\   r]   r•  r¡  r–  r‘   rX  rÃ  r¿  rÄ  r  rÏ  r  r^   r_   s   @rT   r’  r’  3  sD   ø„ ð €GØÐò.ô
'ô*òòFô.(òT
%ô
3÷*0ð *0rU   r’  c                   óŒ   — e Zd ZdZddgZdZdZdZdZd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdZd„ Zd„ Zd„ Zd„ Zy)ÚBoolBinopNodeag  
    Short-circuiting boolean operation.

    Note that this node provides the same code generation method as
    BoolBinopResultNode to simplify expression nesting.

    operator  string                              "and"/"or"
    operand1  BoolBinopNode/BoolBinopResultNode   left operand
    operand2  BoolBinopNode/BoolBinopResultNode   right operand
    r   r!  TNc                 óš   — | j                   j                  |«      }| j                  j                  |«      }t        j                  ||«      S rN   )r   r‘   r!  r   Úindependent_spanning_typerä  s       rT   r‘   zBoolBinopNode.infer_type½3  s=   € Ø—‘×(Ñ(¨Ó-ˆØ—‘×(Ñ(¨Ó-ˆÜ×3Ñ3°E¸5ÓAÐArU   c                 óÀ   — | j                   dk(  r| j                  j                  «       S | j                  j                  «       xs | j                  j                  «       S )NÚor)r   r!  rZ  r   rX   s    rT   rZ  zBoolBinopNode.may_be_noneÂ3  sF   € Ø�=‰=˜DÒ Ø—=‘=×,Ñ,Ó.Ð.à—=‘=×,Ñ,Ó.ÒM°$·-±-×2KÑ2KÓ2MÐMrU   c                 ó¨   — | j                   j                  }| j                  j                  }| j                  dk(  r|xr || _        y |xs || _        y ©NÚand)r   rƒ   r!  r   )rY   r   r!  s      rT   r2  z'BoolBinopNode.calculate_constant_resultÈ3  sF   € Ø—=‘=×0Ñ0ˆØ—=‘=×0Ñ0ˆØ�=‰=˜EÒ!Ø#+Ò#8°ˆDÕ à#+Ò#7¨xˆDÕ rU   c                 ó¤   — | j                   j                  |«      }| j                  j                  |«      }| j                  dk(  r|xr |S |xs |S r½  )r   r<  r!  r   )rY   r;  r   r!  s       rT   r<  z BoolBinopNode.compile_time_valueÐ3  sL   € Ø—=‘=×3Ñ3°DÓ9ˆØ—=‘=×3Ñ3°DÓ9ˆØ�=‰=˜EÒ!ØÒ( Ð(àÒ'˜xÐ'rU   c                 ón   — | j                   j                  «       xs | j                  j                  «       S rN   )r   r  r!  rX   s    rT   r  zBoolBinopNode.is_ephemeralØ3  s'   € Ø�}‰}×)Ñ)Ó+ÒK¨t¯}©}×/IÑ/IÓ/KÐKrU   c                 ó,  — | j                   j                  |«      }| j                  j                  |«      }t        j                  |j
                  |j
                  «      | _        | j                  ||«      | _         | j                  ||«      | _        | S rN   )r   rX  r!  r   r¹  r­   Ú_wrap_operandr/  s       rT   rX  zBoolBinopNode.analyse_typesÛ3  sx   € ð —=‘=×.Ñ.¨sÓ3ˆØ—=‘=×.Ñ.¨sÓ3ˆÜ×8Ñ8Ø�M‰M˜8Ÿ=™=ó*ˆŒ	à×*Ñ*¨8°SÓ9ˆŒØ×*Ñ*¨8°SÓ9ˆŒØˆrU   c                 ó`   — t        |t        t        f«      st        || j                  |«      }|S rN   )r‚   r·  ÚBoolBinopResultNoder­   )rY   r·  rv   s      rT   rÂ  zBoolBinopNode._wrap_operandç3  s)   € Ü˜'¤MÔ3FÐ#GÔHÜ)¨'°4·9±9¸cÓBˆGØˆrU   c                 óˆ   — | j                  | j                  |«      | _        | j                  | j                  |«      | _        y)z‚
        Must get called by transforms that want to create a correct BoolBinopNode
        after the type analysis phase.
        N)rÂ  r   r!  rø   s     rT   Úwrap_operandszBoolBinopNode.wrap_operandsì3  s4   € ð
 ×*Ñ*¨4¯=©=¸#Ó>ˆŒØ×*Ñ*¨4¯=©=¸#Ó>ˆ�rU   c                 óB   — | j                  t        j                  |«      S rN   ©r  r   rB  rø   s     rT   rd  zBoolBinopNode.coerce_to_booleanô3  ó   € Ø�~‰~œj×4Ñ4°cÓ:Ð:rU   c                 óº   — | j                   j                  ||«      }| j                  j                  ||«      }t        j	                  | || j
                  ||¬«      S )N)r­   r   r   r!  )r   r  r!  r·  rg  r   )rY   r"  rv   r   r!  s        rT   r  zBoolBinopNode.coerce_to÷3  sW   € Ø—=‘=×*Ñ*¨8°SÓ9ˆØ—=‘=×*Ñ*¨8°SÓ9ˆÜ×&Ñ&Ø�xØ—]‘]Ø¨ð 'ó 2ð 	2rU   c           	      ó^  — |j                  | j                  «       ||f}| j                  dk(  r|j                  d«      x}	}n|j                  d«      x}	}| j                  j                  |||||||	«       |\  }}|j                  |	«       | j                  j                  |||||||«       y )Nr¾  Únext_andÚnext_or)r½  r†   r   rÇ  r   Úgenerate_bool_evaluation_coderÍ  r!  )
rY   rÌ   Úfinal_result_tempÚfinal_result_typeÚ	and_labelÚor_labelÚ	end_labelÚfall_throughÚouter_labelsÚmy_labels
             rT   rÎ  z+BoolBinopNode.generate_bool_evaluation_codeÿ3  s°   € Ø�‰�d—h‘hÔà! 8Ð,ˆØ�=‰=˜EÒ!Ø#'§>¡>°*Ó#=Ð=ˆH‘yà"&§.¡.°Ó";Ð;ˆH�xØ�‰×3Ñ3ØÐ#Ð%6¸	À8ÈYÐX`ô	bð +Ñˆ	�8à�‰�xÔ Ø�‰×3Ñ3ØÐ#Ð%6¸	À8ÈYÐXdõ	frU   c           	      ó   — | j                  |«       | j                  j                  rt        j                  n| j                  }d x}}|j                  d«      }| j                  || j                  «       |||||«       |j                  |«       y )NÚbool_binop_done)	r©  r­   rs   r   r   rÇ  rÎ  r  rÍ  )rY   rÌ   r‹  rÒ  rÑ  rÓ  s         rT   rÃ  z&BoolBinopNode.generate_evaluation_code4  su   € Ø×!Ñ! $Ô'Ø37·9±9×3HÒ3H”j×/Ò/ÈdÏiÉiˆØ#Ð#ˆ�9Ø—N‘NÐ#4Ó5ˆ	Ø×*Ñ*¨4°·±³ÀÈYÐX`ÐbkÐmvÔwØ�‰�yÕ!rU   úTruth-testing Python objectc                 ón   — | j                   j                  «       xr | j                  j                  «       S rN   rÉ  rX   s    rT   rY  zBoolBinopNode.check_const4  rÊ  rU   c                  ó   — y rN   rW   r³  s     rT   rÁ  z,BoolBinopNode.generate_subexpr_disposal_code4  rú   rU   c                  ó   — y rN   rW   r³  s     rT   rÂ  z BoolBinopNode.free_subexpr_temps 4  rú   rU   c           
      ó€  — | j                   j                  rw|j                  j                  t        j
                  d¬«      }|j                  |›d| j                  j                  «       ›d|j                  || j                  «      ›�«       n| j                  j                  «       }|| j                   j                  fS ©NFr¡  rb  r¥  )r­   rs   r¦  r§  r   rB  rÊ   r   rÛ   r÷  r†   r  ©rY   rÌ   Útest_results      rT   Úgenerate_operand1_testz$BoolBinopNode.generate_operand1_test#4  s–   € à�9‰9× Ò ØŸ.™.×6Ñ6Ü×&Ñ&°5ð 7ó :ˆKà�J‰JâØ—M‘M×+Ñ+Õ-Ø×*Ñ*¨;¸¿¹ÔAðCõDð Ÿ-™-×.Ñ.Ó0ˆKØ˜TŸY™Y×2Ñ2Ð3Ð3rU   )r[   r\   r]   r£  ró   r  r   r   r!  r‘   rZ  r2  r<  r  rX  rÂ  rÆ  rd  r  rÎ  rÃ  r§  rY  rÁ  rÂ  rá  rW   rU   rT   r·  r·  ¬3  sƒ   „ ñ	ð ˜JÐ'€HØ€GØ€HØ€HØ€HòBò
Nò8ò(òLò
òò
?ò;ò2òfò""ð 0€KòKòòó4rU   r·  c                   óZ   ‡ — e Zd ZdZddgZdZdZdZˆ fd„Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zˆ xZS )rÄ  a¥  
    Intermediate result of a short-circuiting and/or expression.
    Tests the result for 'truthiness' and takes care of coercing the final result
    of the overall expression to the target type.

    Note that this node provides the same code generation method as
    BoolBinopNode to simplify expression nesting.

    arg     ExprNode    the argument to test
    value   ExprNode    the coerced result value node
    r�   r½   TNc           	      óª   •— |j                  |«      }t        |«      }t        ‰| �  |j                  ||t        |«      j                  ||«      ¬«       y )N)r�   r­   r½   )rh  Ú	ProxyNoderP   r‚  r†   rŸ  r  )rY   r�   r‹  rv   rS   s       €rT   r‚  zBoolBinopResultNode.__init__D4  sM   ø€ à×"Ñ" 3Ó'ˆä˜‹nˆÜ‰ÑØ�G‰G˜ ;Ü˜C“.×*Ñ*¨;¸Ó<ð 	õ 	>rU   c                 óB   — | j                  t        j                  |«      S rN   rÈ  rø   s     rT   rd  z%BoolBinopResultNode.coerce_to_booleanM4  rÉ  rU   c                 óŽ   — | j                   j                   }|t        j                  u r|j                  |«      }t	        |||«      S rN   )r�   r   rB  rd  rÄ  )rY   r"  rv   r�   s       rT   r  zBoolBinopResultNode.coerce_toP4  s<   € à�h‰h�l‰lˆØ”z×-Ñ-Ñ-Ø×'Ñ'¨Ó,ˆCä" 3¨°#Ó6Ð6rU   c                  ó   — y rN   rW   rø   s     rT   rŽ  zBoolBinopResultNode.nogil_checkX4  r¸  rU   c           
      ó¨  — | j                   j                  j                  rw|j                  j	                  t
        j                  d¬«      }|j                  |›d| j                   j                  «       ›d|j                  || j                  «      ›�«       n| j                   j                  «       }|| j                   j                  j                  fS rÞ  )r�   r­   rs   r¦  r§  r   rB  rÊ   rÛ   r÷  r†   r  rß  s      rT   Úgenerate_operand_testz)BoolBinopResultNode.generate_operand_test\4  sœ   € à�8‰8�=‰=×$Ò$ØŸ.™.×6Ñ6Ü×&Ñ&°5ð 7ó :ˆKà�J‰JâØ—H‘H×&Ñ&Õ(Ø×*Ñ*¨;¸¿¹ÔAðCõDð Ÿ(™(Ÿ/™/Ó+ˆKØ˜TŸX™XŸ]™]×6Ñ6Ð7Ð7rU   c                 ó„  — |j                  | j                  «       | j                  j                  |«       |s|rð| j	                  |«      \  }}	|	r|r|r| j                  j                  |«       |rdnd}
|j                  d|
›|›d�«       |	r|j                  j                  |«       |	r|r|s| j                  j                  |«       |r||k7  r|j                  |«       |rF|r.|j                  d«       |	s| j                  j                  |«       ||k7  r|j                  |«       |r|sâ|s|r|j                  d«       | j                  j                  |«       | j                  j                  |«       |j                  |›d| j                  j                  |«      ›d�«       | j                  j                  |«       | j                  j                  |«       | j                  j                  |«       ||k7  r|j                  |«       |s|r|j                  d«       | j                  j                  |«       y )	NrÛ  rù  r  z) {rò  rS  rT  rÕ   )r½  r†   r�   rÃ  ré  rË  rÊ   r¦  r¯  rÈ  r½   r´  r  rÏ  rØ  )rY   rÌ   rÏ  rÐ  rÑ  rÒ  rÓ  rÔ  rà  Ú	uses_tempÚsenses              rT   rÎ  z1BoolBinopResultNode.generate_bool_evaluation_codej4  s¼  € Ø�‰�d—h‘hÔð 	�‰×)Ñ)¨$Ô/Ù™Ø%)×%?Ñ%?ÀÓ%EÑ"ˆK˜Ù™i©Hð —‘×/Ñ/°Ô5Ù#‘C¨ˆEØ�JŠJ©ª{Ð;Ô<ÙØ—‘×+Ñ+¨KÔ8Ù¡Y±8à—‘×/Ñ/°Ô5á˜H¨Ò4à—‘˜hÔ'ÙáØ—J‘J˜zÔ*Ù$àŸ™×7Ñ7¸Ô=Ø Ò,Ø—M‘M )Ô,á¡á™HØ—
‘
˜:Ô&Ø�J‰J×/Ñ/°Ô5Ø�J‰J×+Ñ+¨DÔ1Ø�J‰JÒ%6¸¿
¹
×8LÑ8LÐM^Õ8_Ð`ÔaØ�J‰J×4Ñ4°TÔ:à�H‰H×+Ñ+¨DÔ1Ø�J‰J×!Ñ! $Ô'Ø˜LÒ(Ø—‘˜iÔ(á™Ø�J‰J�sŒOØ�‰×Ñ˜DÕ!rU   c                 ó   — | S rN   rW   rø   s     rT   rX  z!BoolBinopResultNode.analyse_types¡4  r¯  rU   )r[   r\   r]   r£  ró   r  r�   r½   r‚  rd  r  rŽ  ré  rÎ  rX  r^   r_   s   @rT   rÄ  rÄ  24  sG   ø„ ñ
ð �wÐ€HØ€GØ
€CØ€Eô>ò;ò7òò8ò5"önrU   rÄ  c                   ó„   ‡ — e Zd ZdZdZdZg d¢Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zˆ fd
„Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )r&  NT)r$  r"  r#  c                 óp   — | j                   j                  |«      | j                  j                  |«      z   S rN   )r"  rl  r#  rø   s     rT   rl  zCondExprNode.type_dependencies²4  s,   € Ø�}‰}×.Ñ.¨sÓ3°d·n±n×6VÑ6VÐWZÓ6[Ñ[Ð[rU   c                 ó’   — t        j                  | j                  j                  |«      | j                  j                  |«      «      S rN   )r   r¹  r"  r‘   r#  rø   s     rT   r‘   zCondExprNode.infer_typeµ4  s9   € Ü×3Ñ3Ø�M‰M×$Ñ$ SÓ)Ø�N‰N×%Ñ% cÓ*ó,ð 	,rU   c                 óž   — | j                   j                  r| j                  j                  | _        y | j                  j                  | _        y rN   )r$  rƒ   r"  r#  rX   s    rT   r2  z&CondExprNode.calculate_constant_resultº4  s3   € Ø�9‰9×$Ò$Ø#'§=¡=×#@Ñ#@ˆDÕ à#'§>¡>×#AÑ#AˆDÕ rU   c                 ón   — | j                   j                  «       xs | j                  j                  «       S rN   )r"  r  r#  rX   s    rT   r  zCondExprNode.is_ephemeralÀ4  s'   € Ø�}‰}×)Ñ)Ó+ÒL¨t¯~©~×/JÑ/JÓ/LÐLrU   c                 óä   — | j                   j                  |«      | _         | j                  j                  |«      | _        | j                  j                  |«      | _        | j                  |«      S rN   )r$  ri  r"  rX  r#  r(  rø   s     rT   rX  zCondExprNode.analyse_typesÃ4  sU   € Ø—I‘I×=Ñ=¸cÓBˆŒ	ØŸ™×3Ñ3°CÓ8ˆŒØŸ™×5Ñ5°cÓ:ˆŒØ×'Ñ'¨Ó,Ð,rU   c                 ó  — | j                   j                  }| j                  j                  }t        j                  ||«      | _        | j                  j
                  r.t        j                  | j                  j                  «      | _        | j                  j                  rt        | _
        nŠ| j                  j                  rt| j                   j                  «       r t        | j                   j                  d«       | j                  j                  «       r t        | j                  j                  d«       |j                  s"|j                  s| j                  j                  rt|| j                  k7  r+| j                   j                  | j                  |«      | _         || j                  k7  r+| j                  j                  | j                  |«      | _        | j                  j                   r| j#                  «        | S )NzPUnsafe C derivative of temporary Python reference used in conditional expression)r"  r­   r#  r   r¹  r  rØ  r   rs   r   r.  r  r  r   r†   r  r  rÒ  )rY   rv   Útrue_val_typeÚfalse_val_types       rT   r(  z CondExprNode.analyse_result_typeÉ4  sR  € ØŸ™×*Ñ*ˆØŸ™×,Ñ,ˆÜ×8Ñ8¸ÈÓWˆŒ	à�9‰9×!Ò!Ü"×5Ñ5°d·i±i×6MÑ6MÓNˆDŒIØ�9‰9× Ò Ü .ˆDÕØ�Y‰Y×ÒØ�}‰}×)Ñ)Ô+Ü�d—m‘m×'Ñ'Ð){Ô|Ø�~‰~×*Ñ*Ô,Ü�d—n‘n×(Ñ(Ð*|Ô}à×$Ò$¨×(BÒ(BÀdÇiÁi×F[ÒF[Ø §	¡	Ò)Ø $§¡× 7Ñ 7¸¿	¹	À3Ó G�”Ø §¡Ò*Ø!%§¡×!9Ñ!9¸$¿)¹)ÀSÓ!I�”à�9‰9×ÒØ�O‰OÔØˆrU   c                 ó¸  •— | j                   j                  j                  s | j                   j                  |«      | _         | j                  j                  j                  s | j                  j                  |«      | _        d | _        | j                  |«      }|j                  j                  s*|| u rt        t        |�  |«      }|S |j                  |«      }|S rN   )	r"  r­   r  rN  r#  r.  r(  rP   r&  )rY   rv   ÚoutrS   s      €rT   rN  zCondExprNode.coerce_to_indexâ4  s®   ø€ Ø�}‰}×!Ñ!×(Ò(Ø ŸM™M×9Ñ9¸#Ó>ˆDŒMØ�~‰~×"Ñ"×)Ò)Ø!Ÿ^™^×;Ñ;¸CÓ@ˆDŒNØ ˆÔØ×&Ñ& sÓ+ˆØ�x‰x�Šà�d‰{ÜœL¨#Ñ>¸sÓC�ð
 ˆ
ð ×)Ñ)¨#Ó.�Øˆ
rU   c                 ó–  •— | j                   j                  |k7  r!| j                   j                  ||«      | _         | j                  j                  |k7  r!| j                  j                  ||«      | _        d | _        | j                  |«      }|j                  |k7  r,|| u rt        t        |�  ||«      }|S |j                  ||«      }|S rN   )r"  r­   r  r#  r.  r(  rP   r&  )rY   r"  rv   rø  rS   s       €rT   r  zCondExprNode.coerce_toó4  s³   ø€ Ø�=‰=×Ñ Ò)Ø ŸM™M×3Ñ3°H¸cÓBˆDŒMØ�>‰>×Ñ (Ò*Ø!Ÿ^™^×5Ñ5°hÀÓDˆDŒNØ ˆÔØ×&Ñ& sÓ+ˆØ�8‰8�xÒà�d‰{ÜœL¨#Ñ8¸À3ÓG�ð
 ˆ
ð —m‘m H¨cÓ2�Øˆ
rU   c                 ó8  — | j                   j                  j                  se| j                  j                  j                  sEt	        | j
                  d| j                   j                  ›d| j                  j                  ›d�«       t        j                  | _        y )Nz.Incompatible types in conditional expression (r¡  r¢  )r"  r­   r  r#  r   r†   r   r3   rX   s    rT   rÒ  zCondExprNode.type_error5  s`   € Ø—‘×"Ñ"×+Ò+¨t¯~©~×/BÑ/B×/KÒ/KÜ�$—(’(Ø—‘×#Ó# T§^¡^×%8Ó%8ð:ô ;ä×)Ñ)ˆ�	rU   c                 ó¦   — | j                   j                  «       xr6 | j                  j                  «       xr | j                  j                  «       S rN   )r$  rY  r"  r#  rX   s    rT   rY  zCondExprNode.check_const
5  sA   € Ø—	‘	×%Ñ%Ó'ò -Ø—‘×)Ñ)Ó+ò-à—‘×*Ñ*Ó,ð	.rU   c                 ó
  — |j                  | j                  «       | j                  |«       | j                  j	                  |«       |j                  d| j                  j                  «       z  «       | j                  || j                  «       |j                  d«       | j                  || j                  «       |j                  d«       | j                  j                  |«       | j                  j                  |«       y )Nr]  rò  rÕ   )r½  r†   r©  r$  rÃ  rÊ   r  Úeval_and_getr"  r#  rË  rØ  r³  s     rT   rÃ  z%CondExprNode.generate_evaluation_code5  sµ   € ð 	�‰�d—h‘hÔØ×!Ñ! $Ô'Ø�	‰	×*Ñ*¨4Ô0Ø�
‰
�; §¡×!1Ñ!1Ó!3Ñ3Ô4Ø×Ñ˜$ §¡Ô.Ø�
‰
�:ÔØ×Ñ˜$ §¡Ô/Ø�
‰
�3ŒØ�	‰	×(Ñ(¨Ô.Ø�	‰	×Ñ˜TÕ"rU   c                 ó`  — |j                  |«       | j                  j                  r|j                  |«       n|j	                  |«       |j                  | j                  «       ›d|j                  | j                  «       «      ›d�«       |j                  |«       |j                  |«       y rV  )rÃ  r­   r  rº  r´  rÊ   r  r  r*  rÏ  rØ  )rY   rÌ   rJ  s      rT   rý  zCondExprNode.eval_and_get5  sy   € Ø×%Ñ% dÔ+Ø�9‰9×'Ò'Ø×+Ñ+¨DÕ1à×%Ñ% dÔ+Ø�
‰
 §¡¥°·±¸t¿z¹z»|Õ0LÐMÔNØ×*Ñ*¨4Ô0Ø�‰˜ÕrU   c                  ó   — y rN   rW   r³  s     rT   rÁ  z+CondExprNode.generate_subexpr_disposal_code(5  rú   rU   c                  ó   — y rN   rW   r³  s     rT   rÂ  zCondExprNode.free_subexpr_temps+5  rú   rU   )r[   r\   r]   r"  r#  r  ró   rl  r‘   r2  r  rX  r(  rN  r  rÒ  rY  rÃ  rý  rÁ  rÂ  r^   r_   s   @rT   r&  r&  ¥4  sb   ø„ ð €HØ€IØ€Gâ0€Hò\ò,ò
BòMò-òô2ô"ò"*ò.ò
#òòörU   r&  ÚPy_LTÚPy_LEÚPy_EQÚPy_NEÚPy_GTÚPy_GE)	r`  r—  r˜  r"  z<>ra  r™  r¨  r©  c                   óv   — e Zd ZdZdZg Zd„ Zd„ Zd„ Zd„ Z	d„ Z
dd„Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zy)ÚCmpNodeNc                 ó   — t         S rN   rI  rø   s     rT   r‘   zCmpNode.infer_typeD5  r_
  rU   c                 ó´  — t         | j                     }| j                  j                  }t	        |t
        «      r(t	        |t
        «      rt        |«      t        |«      k7  ry | j                  dv rÛt	        | j                  t        t        t        f«      rq| j                  j                  s| j                  dk(  | _        y t	        | j                  t        «      rq| j                  se| j                  j                  «       | _        nEt	        | j                  t        «      r+| j                  j                  s| j                  dk(  | _        y  |||«      | _        y )N©r¨  r©  r©  )r«  r   r!  rƒ   r‚   Úany_string_typer­   rY  rF  r
  r—   ÚcascaderË	  r�  rš  )rY   Úoperand1_resultrå  Úoperand2_results       rT   Ú"calculate_cascaded_constant_resultz*CmpNode.calculate_cascaded_constant_resultH5  sñ   € Ü,¨T¯]©]Ñ;ˆØŸ-™-×7Ñ7ˆÜ�¬Ô8Ü˜?¬OÔ<Ü�_Ó%¬¨oÓ)>Ò>àà�=‰=Ð,Ñ,Ü˜$Ÿ-™-¬(´I¼wÐ)GÔHØ—}‘}×)Ò)Ø+/¯=©=¸HÑ+D�DÔ(ØÜ §¡¬xÔ8ÀÇÂà$(§M¡M×$:Ñ$:Ó$<�D•MÜ˜DŸM™M¬8Ô4Ø—}‘}×4Ò4Ø+/¯=©=¸HÑ+D�DÔ(Øá# O°_ÓEˆÕrU   c                 ó  — t        | «      }| j                  j                  |«      }	  |||«      }|r$| j
                  }|r|xr |j                  ||«      }|S # t        $ r}| j	                  |«       d }Y d }~ŒId }~ww xY wrN   )r¬  r!  r<  rV  r@  r  Úcascaded_compile_time_value)rY   r   r;  rå  r!  r  r?  r  s           rT   r  z#CmpNode.cascaded_compile_time_value`5  s„   € Ü% dÓ+ˆØ—=‘=×3Ñ3°DÓ9ˆð	Ù˜( HÓ-ˆFñ Ø—l‘lˆGÙØÒW G×$GÑ$GÈÐRVÓ$W�Øˆøô ò 	Ø×)Ñ)¨!Ô,Ø�Fûð	ús   ¨	A Á	A?Á"A:Á:A?c                 ó†   — | j                   j                  j                  xs  | j                  j                  j                  S rN   rÀ  rX   s    rT   Úis_cpp_comparisonzCmpNode.is_cpp_comparisonn5  s-   € Ø�}‰}×!Ñ!×.Ñ.ÒQ°$·-±-×2DÑ2D×2QÑ2QÐQrU   c                 óh  — |j                   }|j                   }d}d}|j                  r|j                  «       rd}|j                  r|j                  «       rd}|j                  r|r|S y |j                  r|r|S y |r6|r4t        j
                  ||fv rt        j                  S t        j                  S y rY  )	r­   rŒ   r�   r  r   r   r   r¢   r£   )	rY   rv   rÂ  r   r!  rº  r»  Útype1_can_be_intÚtype2_can_be_ints	            rT   Úfind_common_int_typezCmpNode.find_common_int_typeq5  s³   € à—‘ˆØ—‘ˆØ ÐØ Ðà×%Ò%¨(×*MÑ*MÔ*OØ#ÐØ×%Ò%¨(×*MÑ*MÔ*OØ#Ðà�<Š<ÙØ�ð ð �\Š\ÙØ�ð ñ ÙÜ×'Ñ'¨E°5¨>Ñ9Ü%×4Ñ4Ð4ä%×2Ñ2Ð2àrU   c                 ó–  — | j                   }|j                  }|j                  }d }|j                  s|j                  rì|dvrM|j                  s|j                  r5|j                  s|j                  rt	        | j
                  d«       t        }nì|j                  r6|j                  t        j                  «      rt        j                  nt        }nª|j                  r6|j                  t        j                  «      rt        j                  nt        }nht        j                  ||«      }nQ|j                  r#|j                  rt        j                  ||«      }n"|�|j                  s| j                  ||||«      }|�€=|j                  s|j                  rt        }�n||k(  r|}�n|j                  s|j                  r»|j                  s|j                   r |j#                  ||«      rt        }nËt        }nÄ|j                  s|j                   r |j#                  ||«      rt        }n“t        }nŒt        j$                  |«      rt        j$                  |«      rt        }n[| j'                  |||«       t        }nA|j%                  |«      r|}n-|j%                  |«      r|}n| j'                  |||«       t        }|j                   r&t)        |t*        «      st)        |t*        «      rt,        }|�|j.                  r|}nt        j0                  ||«      }| j2                  r(| j2                  j5                  || j6                  ||«      }|S )N©r˜  r"  zcomplex types are unordered)r!  r­   r  r  r   r†   r3   rs   r  r   r   r   r   r  r  rI  r¿  rÿ  r  Úinvalid_types_errorr‚   rÑ  r   r  Úspanning_typer  Úfind_common_typer   )	rY   rv   rÂ  r   Úcommon_typer!  rº  r»  Únew_common_types	            rT   r  zCmpNode.find_common_typeŒ5  s˜  € Ø—=‘=ˆØ—‘ˆØ—‘ˆàˆð ×Ò˜u×/Ò/Ø˜,Ñ&Ø×)Ò)¨U×-=Ò-=Ø×)Ò)¨U×-=Ò-=Ü�d—h‘hÐ =Ô>Ü",‘Ø×"Ò"Ø:?×:JÑ:JÌ7×K_ÑK_Ô:`¤'×"6Ò"6Ôft‘Ø×"Ò"Ø:?×:JÑ:JÌ7×K_ÑK_Ô:`¤'×"6Ò"6Ôft‘ä",×"@Ñ"@ÀÈÓ"N‘Ø×Ò %×"2Ò"2Ü(×<Ñ<¸UÀEÓJ‰OØÐ ¨×(?Ò(?Ø"×7Ñ7¸¸RÀÈ8ÓTˆOàÑ"à�Š %§/¢/Ü"0’Ø˜%’Ø"'’Ø×"Ò" e×&7Ò&7Ø×#Ò# u§¢Ø×8Ñ8¸ÀÔDÜ*4™ä*8™Ø×%Ò%¨¯ªØ×8Ñ8¸ÀÔDÜ*4™ä*8™Ü#×3Ñ3°EÔ:¼~×?]Ñ?]Ð^cÔ?dÜ&4‘Oð ×,Ñ,¨X°r¸8ÔDÜ&0‘OØ×&Ñ& uÔ-Ø"'‘Ø×&Ñ& uÔ-Ø"'‘ð ×(Ñ(¨°2°xÔ@Ü",�à×$Ò$¬*°X¼yÔ*IÜ*4°X¼yÔ*Iô )ˆOð Ð /×":Ò":Ø)‰Kô
 %×2Ñ2°;ÀÓPˆKà�<Š<ØŸ,™,×7Ñ7¸¸T¿]¹]ÈHÐVaÓbˆKàÐrU   c           
      ól   — t        | j                  d|›d|j                  ›d|j                  ›d�«       y )NúInvalid types for 'rÑ  r1  r¢  )r   r†   r­   )rY   r   rÂ  r!  s       rT   r  zCmpNode.invalid_types_errorÙ5  s$   € Üˆd�hŠhÚ�8—=“= (§-£-ð1õ 	2rU   c                 óâ   — | j                  «        xr] | j                  «        xrJ | j                  «       xs8 | j                  xr | j                  j	                  «       xs | j
                  dv S ©Nr  )Úis_ptr_containsÚis_c_string_containsÚhas_python_operandsr  Úis_python_comparisonr   rX   s    rT   r'  zCmpNode.is_python_comparisonÝ5  sk   € Ø×(Ñ(Ó*Ð*ò 7Ø×-Ñ-Ó/Ð/ò7à×)Ñ)Ó+ò 6Ø—\‘\ÒI d§l¡l×&GÑ&GÓ&Iò6à—M‘MÐ%5Ð5ð		8rU   c                 óº   — | j                   }|j                  |k7  r|j                  ||«      | _         | j                  r| j                  j	                  ||«       y y rN   )r!  r­   r  r  Úcoerce_operands_to)rY   r"  rv   r!  s       rT   r)  zCmpNode.coerce_operands_toä5  sK   € Ø—=‘=ˆØ�=‰=˜HÒ$Ø$×.Ñ.¨x¸Ó=ˆDŒMØ�<Š<Ø�L‰L×+Ñ+¨H°cÕ:ð rU   c                 ó  — | j                  «       xrD | j                  d u xr4 | j                  dvxr$ | j                  «        xr | j	                  «        xs( | j
                  xr | j
                  j                  «       S )N)r  rš  r¨  r©  )r&  Úspecial_bool_cmp_functionr   r%  r$  r  Úis_python_resultrX   s    rT   r,  zCmpNode.is_python_resultë5  s†   € Ø×)Ñ)Ó+ò ,Ø×/Ñ/°4Ð7ò,à—‘Ð&FÐFò,ð ×.Ñ.Ó0Ð0ò,ð ×)Ñ)Ó+Ð+ò	Bð
 —‘Ò@ §¡×!>Ñ!>Ó!@ð	CrU   c                 ób  — | j                   dv xr  | j                  j                  j                  xr> | j                  j                  j
                  xs | j                  j                  t        u xs> | j                  j                  j                  xr | j                  j                  t        u S r#  )	r   r   r­   r  r!  r¿  r   rb  r   rX   s    rT   r%  zCmpNode.is_c_string_containsó5  sˆ   € Ø�}‰}Ð 0Ð0ò :Ø—‘×#Ñ#×*Ñ*ò XØ—m‘m×(Ñ(×2Ñ2ÒV°d·m±m×6HÑ6HÌJÐ6Vò9à—‘×#Ñ#×3Ñ3ò 8Ø—]‘]×'Ñ'¬<Ð7ð		:rU   c                 óž   — | j                   dv r?| j                  j                  }|j                  xs |j                  xr |j
                   S y r#  )r   r!  r­   r  rp  r¿  )rY   Úcontainer_types     rT   r$  zCmpNode.is_ptr_containsú5  sM   € Ø�=‰=Ð,Ñ,Ø!Ÿ]™]×/Ñ/ˆNØ"×)Ñ)ÒD¨^×-DÑ-Dò 1Ø&×0Ñ0Ð0ð1ð -rU   c                 ó¾  — | j                   dv �r!|j                  | j                  j                  }}|s|j                  rð|j                  rä|t        j
                  u s|t        j
                  u r#t        j                  dd«      | _        d| _	        y|t        j                  u s|t        j                  u r#t        j                  dd«      | _        d| _	        y|rTdd	lm}  || j                   d
k(  rdnd| t        j                  || j                  «      }|r|\  | _	        | _        | _        }yy| j                   dv �rž| j                  j                  t        j                   u rC| j                  j#                  d«      | _        t        j                  dd«      | _        d| _	        y| j                  j                  t        j$                  u rC| j                  j#                  d«      | _        t        j                  dd«      | _        d| _	        y| j                  j                  t        j
                  u rC| j                  j#                  d«      | _        t        j                  dd«      | _        d| _	        y| j                  j                  j&                  s | j                  j)                  |«      | _        t        j                  dd«      | _        d| _	        yy)Nr  ÚUnicodeEqualsr™  Ú__Pyx_PyUnicode_EqualsTÚBytesEqualsÚ__Pyx_PyBytes_Equalsr,   )Úoptimise_numeric_binopr˜  ÚEqÚNer  rÞ  ÚPyDictContainsr6  Ú__Pyx_PyDict_ContainsTFÚPySetContainsÚ__Pyx_PySet_ContainsTFÚPyUnicodeContainsÚ__Pyx_PyUnicode_ContainsTFÚPySequenceContainsÚ__Pyx_PySequence_ContainsTFF)r   r­   r!  r¿  r   r   r   rÉ   Úspecial_bool_cmp_utility_coder+  r   ÚOptimizer5  r   rB  Úspecial_bool_extra_argsr   ra  r   rs   r9  )	rY   rv   r   Úresult_is_boolrº  r»  r5  r  r™  s	            rT   Ú"find_special_bool_compare_functionz*CmpNode.find_special_bool_compare_function 6  sb  € à�=‰=˜LÒ(Ø#Ÿ=™=¨$¯-©-×*<Ñ*<�5ˆEÙ %×"7Ò"7¸E×<QÒ<QØœG×0Ñ0Ñ0°E¼W×=QÑ=QÑ4QÜ9D×9PÑ9PÐQ`ÐbqÓ9r�DÔ6Ø5M�DÔ2ØØœg×0Ñ0Ñ0°E¼W×=OÑ=OÑ4OÜ9D×9PÑ9PÐQ^Ð`oÓ9p�DÔ6Ø5K�DÔ2ØÙ#Ý@Ù3Ø $§¡°Ò 5™¸4ØÜ"×.Ñ.Ø ØŸ™ó�Fñ ð %ñ˜Ô7ØÔ;ØÔ5ØØ#ð. ð- �]‰]Ð.Ò.Ø�}‰}×!Ñ!¤W×%6Ñ%6Ñ6Ø $§¡× ?Ñ ?Ð@cÓ d�”Ü5@×5LÑ5LÐM]Ð_qÓ5r�Ô2Ø1J�Ô.ØØ—‘×#Ñ#¤w×'7Ñ'7Ñ7Ø $§¡× ?Ñ ?Ð@cÓ d�”Ü5@×5LÑ5LÈ_Ð^pÓ5q�Ô2Ø1I�Ô.ØØ—‘×#Ñ#¤w×';Ñ';Ñ;Ø $§¡× ?Ñ ?Ð@cÓ d�”Ü5@×5LÑ5LÐM`ÐbqÓ5r�Ô2Ø1M�Ô.Øà—}‘}×)Ñ)×5Ò5Ø$(§M¡M×$DÑ$DÀSÓ$I�D”MÜ5@×5LÑ5LÐMaÐcuÓ5v�Ô2Ø1N�Ô.ØØrU   c                 óF  — | j                   j                  rR|j                  }d|z  }| j                  r2|j                  j                  t        j                  dd«      «       d}nd}n|j                  }d}d}| j                  �r.|j                   j                  r|j                  «       }	n|j                  «       }	|j                   j                  r|j                  «       }
n|j                  «       }
dj                  | j                  D �cg c]  }|j                  «       ‘Œ c}«      }| j                  r%|j                  j                  | j                  «       |j                  |›d|›d	| j                  ›d	|	›d|
›d| j                  r|nt        |   ›d
|› ||| j                   «      ›�«       y |j                   j                  r´|dvr°|dvsJ |«       ‚| j                   j                  s| j                   t"        j$                  u sJ ‚|j                  |›d| j                   j                  rdnd›d	|j                  «       ›d|j                  «       ›dt        |   ›d|› ||| j                   «      ›�«       y |j                   j&                  rc|j                  |›d|›d	|dk(  xr dxs d›|j                   j)                  d«      ›d	|j                  «       ›d|j                  «       ›d�«       y |j                   }|j                   }|j*                  s|j*                  r|j-                  |«      st.        }n%|j0                  rt#        j2                  ||«      }n|}|j5                  |«      }|j5                  |«      }|›d|›d	|›d| j7                  |«      ›d|›d�
}| j9                  «       rV| j:                  dk(  rGt=        || j                   || j                   j                  r|nd | j>                  | j@                  «       y |j                  |«       y c c}w )Nz__Pyx_XGOTREF(%s); ÚPyBoolOrNullFromLongr6  Ú__Pyx_PyBoolOrNull_FromLongÚ__Pyx_PyBool_FromLongrù  r1  rS  rR  z)); )r  rš  r  z = PyObject_RichCompareÚBoolr¥  r"  rÛ  Úeqr
  rr  r2  rß   )!r­   rs   rÖ   r+  rÇ   rÈ   r   rÉ   r÷  rÛ   r  r£  rB  r@  rÊ   Úrichcmp_constantsr†   r   rB  r  rñ  r¾  r  r   r  r  r  Ú
c_operatorr  rà   rÝ   rÀ   r¹  )rY   rÌ   r  r   rÂ  r!  Úerror_clauseÚgot_refÚcoerce_resultrö  r÷  Ú	extra_argÚspecial_bool_extra_args_resultrº  r»  r  Úcode1Úcode2Ú	statements                      rT   r\	  zCmpNode.generate_operation_code46  sw  € à�9‰9× Ò Ø×2Ñ2ˆLØ+¨kÑ9ˆGØ×-Ò-Ø× Ñ ×1Ñ1Ü×+Ñ+Ð,BÐDVÓWôYà =‘à 7‘à×1Ñ1ˆLØˆGØˆMà×)Ó)Ø�}‰}×(Ò(Ø"×,Ñ,Ó.‘à"Ÿ/™/Ó+�Ø�}‰}×(Ò(Ø"×,Ñ,Ó.‘à"Ÿ/™/Ó+�Ø-1¯Y©YØ48×4PÒ4Pó8Ù4P y�	× Ñ Õ"Ð4Pñ8ó .Ð*ð ×1Ò1Ø× Ñ ×1Ñ1°$×2TÑ2TÔUØ�J‰JâÚ!Ø×2Ó2ÚšWØ6:×6RÒ6RÑ2ÔXiÐjlÑXmÑmÙÙ  ¨d¯h©hÔ7ð9õ:ð �]‰]×&Ò&¨2Ð5EÑ+EØÐ-Ñ-Ð1¨rÓ1Ð-Ø—9‘9×(Ò(¨D¯I©I¼×9OÑ9OÑ,OÐOÐOØ�J‰JÚØŸ)™)×/Ò/‘B°VÑ;Ø×&Ñ&Õ(Ø×&Ñ&Õ(Ü% bÓ)ÙÙ  ¨d¯h©hÔ7ð9õ :ð �]‰]×%Ò%Ø�J‰JÚÚØ�d‘
Ò"˜sÒ( bÐ(Ø—‘×&Ñ& tÕ,Ø—‘Õ!Ø—‘Õ!ð#õ $ð —M‘MˆEØ—M‘MˆEØ×'Ò'¨5×+BÒ+BØ!ŸM™M¨%Ô0Ü,‘Ø×!Ò!Ü(×<Ñ<¸UÀEÓJ‘à#�Ø×&Ñ& {Ó3ˆEØ×&Ñ& {Ó3ˆEâÚÚØ—‘ Õ#ÚðˆIð ×%Ñ%Ô'¨D×,@Ñ,@ÀCÒ,GÜ'ØØ—H‘HØØ#'§9¡9×#8Ò#8‘K¸dØ×(Ñ(Ø×)Ñ)õ+ð —
‘
˜9Õ%ùò8s   ÄPc                 ó   — |dk(  ry|dk(  ry|S )Nr  r˜  rš  r"  rW   )rY   rÂ  s     rT   rL  zCmpNode.c_operatorŽ6  s   € Ø�Š:ØØ�8Š^ØàˆIrU   rN   rj  )r[   r\   r]   r+  r@  rB  r‘   r  r  r  r  r  r  r'  r)  r,  r%  r$  rD  r\	  rL  rW   rU   rT   r  r  <5  si   „ ð !%ÐØ$(Ð!Ø ÐòòFò0òRòó6KòZ2ò8ò;òCò:ò1ó2òhX&ótrU   r  c                   ó€   — e Zd Zg d¢ZdZdZdZd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)r'  )r   r!  Úcoerced_operand2r  rB  NFc                 ó  — | j                   j                  |«      }| j                  j                  |«      }t        |«      st        |«      r6t	        |«      r+t	        |«      r t        t        | j                  ||«      «      S t        S rN   )	r   r‘   r!  r>   r<   rJ   r@   r   r   rä  s       rT   r‘   zPrimaryCmpNode.infer_type«6  sj   € Ø—‘×(Ñ(¨Ó-ˆØ—‘×(Ñ(¨Ó-ˆä˜5Ô!¤_°UÔ%;Ü(¨Ô/Ô4MÈeÔ4TÜ"Ô#5°d·m±mÀUÈEÓ#RÓSÐSô ÐrU   c                  ó   — yr¹  rW   rø   s     rT   rl  z PrimaryCmpNode.type_dependencies¶6  r®  rU   c                 ój   — | j                   rJ ‚| j                  | j                  j                  «       y rN   )r  r  r   rƒ   rX   s    rT   r2  z(PrimaryCmpNode.calculate_constant_result¹6  s'   € Ø—<’<ÐÐØ×/Ñ/°·±×0MÑ0MÕNrU   c                 ó\   — | j                   j                  |«      }| j                  ||«      S rN   )r   r<  r  )rY   r;  r   s      rT   r<  z!PrimaryCmpNode.compile_time_value½6  s)   € Ø—=‘=×3Ñ3°DÓ9ˆØ×/Ñ/°¸$Ó?Ð?rU   c                 ób   — | j                   }|r!| j                  |_        |j                   }|rŒ y y rN   )r  r­   )rY   Úcdrs     rT   Úunify_cascade_typez!PrimaryCmpNode.unify_cascade_typeÁ6  s'   € Ø�l‰lˆÙØ—y‘yˆCŒHØ—+‘+ˆCô rU   c                 óÌ
  — | j                   j                  |«      | _         | j                  j                  |«      | _        | j                  «       r5| j	                  |«       | j
                  rt        | j                  d«       | S | j                   j                  }| j                  j                  }t        |«      st        |«      rDt        |«      r9t        |«      r.t        t        | j                  ||«      «      | _        d| _        | S | j                  |«      r| S | j
                  r | j
                  j                  |«      | _        | j                  dv �r| j!                  «       �rLd| _        d }| j
                  rt        | j                  d«       | S | j                  j                  t"        u r&|j%                  t'        j(                  dd«      «       n»| j                   j                  t*        j,                  u r/| j                   j/                  t*        j0                  |«      | _         | j                  j                  t2        ur%| j                  j/                  t2        |«      | _        |j%                  t'        j(                  dd«      «       | j                  j5                  d«      | _        �n[| j7                  «       r9| j
                  rt        | j                  d	«       t*        j8                  | _        | S | j;                  || j                   «      rJ| j                   j                  j<                  s | j                   j?                  |«      | _         d }d| _        n¬t@        }d
| _        nž| j;                  || j                   «      rJ| j                   j                  j<                  s | j                   j?                  |«      | _         d }d| _        n8| jC                  || j                  | j                   «      }|j<                  | _        |�X|jD                  sL| j                   j                  |k7  r!| j                   j/                  ||«      | _         | jG                  ||«       | j
                  rv| j                  jI                  |«      | _        | j
                  jK                  |«       | j
                  jM                  | j                  |«      }|| j                  ur|| _'        | jQ                  «       rt*        j@                  | _        nt*        j8                  | _        | jS                  «        | j                  s| j
                  s| jT                  rd| _+        | S )Nz5Cascading comparison not yet supported for cpp types.Fr  z?Cascading comparison not yet supported for 'int_val in string'.ÚPyUCS4InUnicoder™  ÚBytesContainsz+argument of type 'NoneType' is not iterablez?Cascading comparison not supported for 'val in sliced pointer'.Tr,   ),r   rX  r!  r  Úanalyse_cpp_comparisonr  r   r†   r­   r>   r<   rJ   r@   r   Úis_pycmpÚ"analyse_memoryviewslice_comparisonr%  r   rÈ   r   rÉ   r   r£   r  r¼   r   ra  r$  rB  rD  rs   r9  r   r  r  r)  rh  Ú coerce_cascaded_operands_to_tempÚoptimise_comparisonrW  r,  r^  r+  r  )rY   rv   rº  r»  r  r!  s         rT   rX  zPrimaryCmpNode.analyse_typesÇ6  sð  € ØŸ™×3Ñ3°CÓ8ˆŒØŸ™×3Ñ3°CÓ8ˆŒØ×!Ñ!Ô#Ø×'Ñ'¨Ô,Ø�|Š|Ü�d—h‘hÐ WÔXØˆKà—‘×"Ñ"ˆØ—‘×"Ñ"ˆÜ˜5Ô!¤_°UÔ%;Ü(¨Ô/Ô4MÈeÔ4TÜ'Ô(:¸4¿=¹=È%ÐQVÓ(WÓX�”	Ø %�”Ø�à×2Ñ2°3Ô7ØˆKà�<Š<ØŸ<™<×5Ñ5°cÓ:ˆDŒLà�=‰=Ð,Ò,Ø×(Ñ(Õ*Ø %�”Ø"�Ø—<’<Ü˜$Ÿ(™(Ð$eÔfØ�KØ—=‘=×%Ñ%¬Ñ5Ø×(Ñ(¬×)@Ñ)@ÐARÐTcÓ)dÕeà—}‘}×)Ñ)¬Z×-DÑ-DÑDØ(,¯©×(?Ñ(?Ä
×@VÑ@VÐX[Ó(\˜œØ—}‘}×)Ñ)´Ñ;Ø(,¯©×(?Ñ(?Ä
ÈCÓ(P˜œØ×(Ñ(¬×)@Ñ)@ÀÐRaÓ)bÔcØ $§¡× ?Ñ ?ØAó!C�–à×%Ñ%Ô'Ø—<’<Ü˜$Ÿ(™(Ð$eÔfÜ&×2Ñ2�”	à�Ø×8Ñ8¸¸d¿m¹mÔLØ—}‘}×)Ñ)×5Ò5Ø$(§M¡M×$DÑ$DÀSÓ$I�D”MØ"�Ø %�•ä,�Ø $�•Ø×4Ñ4°S¸$¿-¹-ÔHØ—=‘=×%Ñ%×1Ò1Ø $§¡× @Ñ @ÀÓ E�”ØˆKØ!ˆD�Mà×/Ñ/°°T·]±]ÀDÇMÁMÓRˆKØ'×3Ñ3ˆDŒMàÐ"¨;×+?Ò+?Ø�}‰}×!Ñ! [Ò0Ø $§¡× 7Ñ 7¸ÀSÓ I�”Ø×#Ñ# K°Ô5à�<Š<Ø ŸM™M×:Ñ:¸3Ó?ˆDŒMØ�L‰L×9Ñ9¸#Ô>Ø—|‘|×7Ñ7¸¿¹ÀsÓKˆHØ˜tŸ}™}Ñ,Ø(0�Ô%Ø× Ñ Ô"Ü"×1Ñ1ˆD�Iä"×.Ñ.ˆDŒIØ×ÑÔ!Ø�=Š=˜DŸLšL¨D×,JÒ,JàˆDŒLØˆrU   c           
      ó  — | j                   j                  }| j                  j                  }d| _        |j	                  | j
                  | j                   | j                  g«      }|€Gt        | j                  d| j
                  ›d|›d|›d�«       t        j                  | _        d| _
        y |j                  }|j                  r|j                  }|j                  | _        |j                  | _        | j                  dk(  r7d| _        t!        | «      r%|j#                  t%        j&                  d	d
«      «       t)        |j*                  «      dk(  r9| j                  j-                  |j*                  d   j                  |«      | _        np| j                   j-                  |j*                  d   j                  |«      | _         | j                  j-                  |j*                  d   j                  |«      | _        |j.                  | _        y )NFr!  rÑ  r1  r¢  r,  rß   Tr3  rÉ  r,   r   )r   r­   r!  rc  r  r   r   r†   r   r3   r  r  r  rà   rÀ   r  rã   rÈ   r   rÉ   r“   r—   r  ré  )rY   rv   rº  r»  r¾   r4  s         rT   rb  z%PrimaryCmpNode.analyse_cpp_comparison7  s‹  € Ø—‘×"Ñ"ˆØ—‘×"Ñ"ˆØˆŒØ×#Ñ# D§M¡M°D·M±MÀ4Ç=Á=Ð3QÓRˆØˆ=Ü�$—(’(Ø—“¢¢uð.ô /ä"×-Ñ-ˆDŒIØ(ˆDÔØØ—J‘Jˆ	Ø×ÒØ!×+Ñ+ˆIØ(×8Ñ8ˆÔØ(×8Ñ8ˆÔØ×Ñ 3Ò&ØˆDŒLÜ-¨dÔ3Ø×$Ñ$¤[×%<Ñ%<Ð=UÐWgÓ%hÔiÜˆy�~‰~Ó !Ò#Ø ŸM™M×3Ñ3°I·N±NÀ1Ñ4E×4JÑ4JÈCÓPˆD�Mà ŸM™M×3Ñ3°I·N±NÀ1Ñ4E×4JÑ4JÈCÓPˆDŒMØ ŸM™M×3Ñ3°I·N±NÀ1Ñ4E×4JÑ4JÈCÓPˆDŒMØ×)Ñ)ˆ�	rU   c                 óT  — | j                   j                  xs | j                  j                  }| j                   j                  j                  xs  | j                  j                  j                  }d}|r4|r2| j
                  |v r$d| _        t        j                  | _        d| _	        yy)N)r˜  r"  r  rš  FT)
r   rœ   r!  r­   r  r   rc  r   rB  Úis_memslice_nonecheck)rY   rv   Ú	have_noneÚ
have_sliceÚopss        rT   rd  z1PrimaryCmpNode.analyse_memoryviewslice_comparison67  s‡   € Ø—M‘M×)Ñ)ÒB¨T¯]©]×-BÑ-Bˆ	Ø—m‘m×(Ñ(×;Ñ;ò <Ø—m‘m×(Ñ(×;Ñ;ð 	à*ˆÙ™)¨¯©¸Ñ(<Ø!ˆDŒMÜ"×.Ñ.ˆDŒIØ)-ˆDÔ&ØàrU   c                 ó~  — | j                   rœ| j                  || j                  d¬«      r~d| _         t        j                  | _        d| _        | j                  r=| j                  j                  | j                  |d¬«      }|| j                  ur|| _
        | j                  «        | S t        j                  | |«      S )NT)rC  Fr,   )rc  rD  r   r   rB  r­   r  r  rf  r!  rW  r^  rñ   rd  )rY   rv   r!  s      rT   rd  z PrimaryCmpNode.coerce_to_booleanC7  s§   € Ø�=Š=à×6Ñ6Ø˜Ÿ™°tð 7ô =à %�”Ü&×2Ñ2�”	Ø �”Ø—<’<Ø#Ÿ|™|×?Ñ?ØŸ™ s¸4ð  @ó  A�Hà t§}¡}Ñ4Ø08˜Ô-Ø×'Ñ'Ô)Ø�ä×)Ñ)¨$°Ó4Ð4rU   c                 ó†   — | j                   j                  j                  xs  | j                  j                  j                  S rN   )r   r­   rs   r!  rX   s    rT   r&  z"PrimaryCmpNode.has_python_operandsU7  s2   € Ø—‘×"Ñ"×.Ñ.ò .Ø�}‰}×!Ñ!×-Ñ-ð	/rU   c                 ó¨   — | j                   r| j                  «        y| j                  j                  «       xr | j                  j                  «       S r’  )r  r“  r   rY  r!  rX   s    rT   rY  zPrimaryCmpNode.check_constY7  s;   € Ø�<Š<Ø�N‰NÔØà—=‘=×,Ñ,Ó.ÒN°4·=±=×3LÑ3LÓ3NÐNrU   c                 ó&  — | j                   | j                  }}|j                  j                  rW| j                  dk(  rd}nd}d|›|j                  j                  d«      ›d|j                  «       ›d|j                  «       ›d�S | j                  «       rU|j                  t        u rd}nd	}| j                  d
k(  rd}nd}d|›|›d|j                  «       ›d|j                  «       ›d�S t        | j                  «      r!|j                  «       |j                  «       }}nM|j                  «       |j                  «       }}| j                  r!|j                  j                  rd|z  }nd|z  }d|›d| j                  | j                  «      ›d|›d�S )Nr"  rÛ  rù  rR  r˜  r1  z))Ú__Pyx_UnicodeContainsUCS4Ú__Pyx_BytesContainsr©  ú((PyObject *) %s.memview)rr  r¢  )r   r!  r­   r  r   rõ  r  r%  r   r>   r&  ri  r  rL  )rY   r   r!  Únegationr®  rö  r÷  s          rT   r  z$PrimaryCmpNode.calculate_result_code`7  sV  € Ø!Ÿ]™]¨D¯M©M�(ˆØ�=‰=×#Ò#Ø�}‰} Ò$Ø‘à�øáØ—‘×'Ñ'¨Õ-Ø—‘Õ!Ø—‘Õ!ð	#ð #ð
 ×&Ñ&Ô(Ø�}‰}¤Ñ,Ø4‘à.�Ø�}‰} Ò(Ø‘à�øáÚØ—‘Õ!Ø—‘Õ!ð	#ð #ô ˜tŸy™yÔ)Ø#+×#:Ñ#:Ó#<¸h×>UÑ>UÓ>W˜‘à#+§?¡?Ó#4°h·o±oÓ6G˜�Ø×-Ò-Ø—}‘}×7Ò7Ø"=ÀÑ"G™à"=ÀÑ"G˜øò Ø—‘ §¡Õ.Úðð rU   c                 ó  — | j                   j                  |«       | j                  j                  |«       | j                  D ]  }|j                  |«       Œ | j                  �r| j                  |«       | j                  || j                  «       | j                   | j                  | j                  «       | j                  rQ| j                  j                  || j                  «       | j                  xs | j                  | j                  d u¬«       | j                   j                  |«       | j                   j                  |«       | j                  j                  |«       | j                  j                  |«       y y )N©Úneeds_evaluation)r   rÃ  r!  rB  r  r©  r\	  r  r   r  rW  rË  rØ  )rY   rÌ   rP  s      rT   rÃ  z'PrimaryCmpNode.generate_evaluation_codeŠ7  s  € Ø�‰×.Ñ.¨tÔ4Ø�‰×.Ñ.¨tÔ4Ø×5Ô5ˆIØ×.Ñ.¨tÕ4ð 6à�<‹<Ø×%Ñ% dÔ+Ø×(Ñ(¨¨t¯{©{«}Ø—‘˜tŸ}™}¨d¯m©mô=à�|Š|Ø—‘×5Ñ5Ø˜$Ÿ+™+›-¨×)>Ñ)>Ò)OÀ$Ç-Á-Ø%)×%:Ñ%:À$Ð%Fð 6ô Hð �M‰M×0Ñ0°Ô6Ø�M‰M×$Ñ$ TÔ*Ø�M‰M×0Ñ0°Ô6Ø�M‰M×$Ñ$ TÕ*ð rU   c                 óp   — | j                   j                  |«       | j                  j                  |«       y rN   )r   rË  r!  r³  s     rT   rÁ  z-PrimaryCmpNode.generate_subexpr_disposal_codeœ7  s(   € ð 	�‰×,Ñ,¨TÔ2Ø�‰×,Ñ,¨TÕ2rU   c                 óp   — | j                   j                  |«       | j                  j                  |«       y rN   )r   rØ  r!  r³  s     rT   rÂ  z!PrimaryCmpNode.free_subexpr_temps¢7  s(   € ð 	�‰× Ñ  Ô&Ø�‰× Ñ  Õ&rU   c                 óÀ   — | j                   j                  |«       | j                  j                  |«       | j                  r| j                  j                  |«       y y rN   )r   r÷  r!  r  r³  s     rT   r÷  zPrimaryCmpNode.annotate¨7  sD   € Ø�‰×Ñ˜tÔ$Ø�‰×Ñ˜tÔ$Ø�<Š<Ø�L‰L×!Ñ! $Õ'ð rU   )r[   r\   r]   rö   r  rW  ri  r‘   rl  r2  r<  r^  rX  rb  rd  rd  r&  rY  r  rÃ  rÁ  rÂ  r÷  rW   rU   rT   r'  r'  –6  sr   „ ò.€Kð €GØÐØ!Ðò	òòOò@òòRòh*ò6ò5ò$/òOò(òT+ò$3ò'ó(rU   r'  c                   óf   — e Zd Zg d¢ZdZdZeZd„ Zd„ Z	d„ Z
d„ Zd„ Zd„ Zdd	„Zd
„ Zd„ Zdd„Zd„ Zy)ÚCascadedCmpNode)r!  rW  r  rB  Nc                 ó   — t         S rN   rI  rø   s     rT   r‘   zCascadedCmpNode.infer_typeÀ7  r_
  rU   c                  ó   — yr¹  rW   rø   s     rT   rl  z!CascadedCmpNode.type_dependenciesÄ7  r®  rU   c                 óN   — | j                   t        uxr | j                   t        uS rN   r4  rX   s    rT   r–   z#CascadedCmpNode.has_constant_resultÇ7  r7  rU   c                 óž   — | j                   j                  |«      | _         | j                  r | j                  j                  |«      | _        | S rN   )r!  rX  r  rø   s     rT   rX  zCascadedCmpNode.analyse_typesË7  s:   € ØŸ™×3Ñ3°CÓ8ˆŒØ�<Š<ØŸ<™<×5Ñ5°cÓ:ˆDŒLØˆrU   c                 óB   — | j                   j                  j                  S rN   )r!  r­   rs   rX   s    rT   r&  z#CascadedCmpNode.has_python_operandsÑ7  s   € Ø�}‰}×!Ñ!×-Ñ-Ð-rU   c                  ó   — yr’  rW   rX   s    rT   r  z!CascadedCmpNode.is_cpp_comparisonÔ7  r“  rU   c                 óB  — | j                  |||«      rCd| _        t        j                  | _        |j                  j
                  s|j                  |«      }| j                  r<| j                  j                  | j                  ||«      }|| j                  ur|| _
        |S r’  )rD  rc  r   rB  r­   rs   r9  r  rf  r!  rW  )rY   r   rv   rC  r!  s        rT   rf  z#CascadedCmpNode.optimise_comparisonØ7  s�   € Ø×2Ñ2°3¸À.ÔQØ!ˆDŒMÜ"×.Ñ.ˆDŒIØ—=‘=×,Ò,Ø#×6Ñ6°sÓ;�Ø�<Š<Ø—|‘|×7Ñ7¸¿¹ÀsÈNÓ[ˆHØ˜tŸ}™}Ñ,Ø(0�Ô%ØˆrU   c                 ó(  — | j                   j                  |«      | _         | j                   j                  t        u r.| j                  dv r | j                   j                  d«      | _         | j                  r| j                  j                  |«       y y )Nr  rÞ  )r!  r9  r­   r   r   ra  r  r´  rø   s     rT   r´  z,CascadedCmpNode.coerce_operands_to_pyobjectsä7  sk   € ØŸ™×8Ñ8¸Ó=ˆŒØ�=‰=×Ñ¤Ñ*¨t¯}©}Ð@PÑ/PØ ŸM™M×;Ñ;Ð<_Ó`ˆDŒMØ�<Š<Ø�L‰L×5Ñ5°cÕ:ð rU   c                 ó”   — | j                   r<| j                  j                  |«      | _        | j                   j                  |«       y y rN   )r  r!  rh  re  rø   s     rT   re  z0CascadedCmpNode.coerce_cascaded_operands_to_tempë7  s6   € Ø�<Š<à ŸM™M×:Ñ:¸3Ó?ˆDŒMØ�L‰L×9Ñ9¸#Õ>ð rU   c                 ó   — | j                   j                  r1|j                  d|z  «       |j                  || j                   «       n|j                  d|z  «       |r|j	                  |«       | j
                  j	                  |«       | j                  D ]  }|j	                  |«       Œ | j                  |||| j                  | j
                  «       | j                  rC| j                  j	                  ||| j                  xs | j
                  | j                  d u¬«       |r"|j                  |«       |j                  |«       | j
                  j                  |«       | j
                  j                  |«       |j                  d«       y )Nz if (__Pyx_PyObject_IsTrue(%s)) {r]  rv  rÕ   )r­   rs   rÊ   r#	  rÃ  r!  rB  r\	  r   r  rW  rË  rØ  )rY   rÌ   r  r   rw  rP  s         rT   rÃ  z(CascadedCmpNode.generate_evaluation_codeñ7  s9  € Ø�9‰9× Ò Ø�J‰JÐ9¸FÑBÔCØ�O‰O˜F D§I¡IÕ.à�J‰J�{ VÑ+Ô,ÙØ×-Ñ-¨dÔ3Ø�‰×.Ñ.¨tÔ4Ø×5Ô5ˆIØ×.Ñ.¨tÕ4ð 6à×$Ñ$ T¨6Ø�d—m‘m T§]¡]ô	4à�<Š<Ø�L‰L×1Ñ1Ø�f˜d×3Ñ3ÒD°t·}±}Ø!%×!6Ñ!6¸dÐ!Bð 2ô Dñ Ø×+Ñ+¨DÔ1Ø×Ñ Ô%à�‰×,Ñ,¨TÔ2Ø�‰× Ñ  Ô&Ø�
‰
�3�rU   c                 óŠ   — | j                   j                  |«       | j                  r| j                  j                  |«       y y rN   )r!  r÷  r  r³  s     rT   r÷  zCascadedCmpNode.annotate
8  s2   € Ø�‰×Ñ˜tÔ$Ø�<Š<Ø�L‰L×!Ñ! $Õ'ð rU   rj  )r[   r\   r]   rö   r  rW  r5  rƒ   r‘   rl  r–   rX  r&  r  rf  r´  re  rÃ  r÷  rW   rU   rT   r|  r|  ¯7  sR   „ ò.€Kð €GØÐØ,€Oòòò:òò.òó
ò;ò?óó2(rU   r|  )r»  r¾  r  r¦  r*  r�  r¥  rß   r  r»   r§  r›  rœ  rž  rŸ  c                 ó*   — t        |   | f||||dœ|¤ŽS )N)r   r   r!  rM	  )Úbinop_node_classes)r†   r   r   r!  rM	  rd  s         rT   rP	  rP	  #8  s4   € ô ˜hÑ'ØðàØØØñð ñð rU   c                   ó:   ‡ — e Zd ZdgZeZˆ fd„Zd„ Zd„ Zd„ Z	ˆ xZ
S )rä  r�   c                 óˆ   •— t         ‰| �  |j                  «       || _        t        rt        | ›d| j                  ›�«       y y )Nz
 Coercing )rP   r‚  r†   r�   r   r^  ©rY   r�   rS   s     €rT   r‚  zCoercionNode.__init__B8  s4   ø€ Ü‰Ñ˜Ÿ™Ô!ØˆŒÝÜ¢d¨D¯HªHÐ5Õ6ð rU   c                  ó   — y rN   rW   rX   s    rT   r2  z&CoercionNode.calculate_constant_resultH8  r¸  rU   c                 ó4  — | j                   j                  |«       | j                   j                  | j                  k7  rZ| j                  \  }}}|j                  |||dz
  ft	        ddd| j                   j                  ›d| j                  ›d�¬«      «       y y )Nr,   Úcoercer|  z] to [Ú])r�  Útagr‚  )r�   r÷  r­   r†   r8   )rY   rÌ   ÚfileÚlineÚcols        rT   r÷  zCoercionNode.annotateL8  sy   € Ø�‰×Ñ˜$ÔØ�8‰8�=‰=˜DŸI™IÒ%Ø"Ÿh™h‰OˆD�$˜Ø�M‰M˜4  s¨1¡uÐ-¬~Ø¡HÀTÇXÁXÇ]Ã]ÐTX×T]ÓT]Ð3^ô0`õ að &rU   c                 ó   — | S rN   rW   rø   s     rT   rX  zCoercionNode.analyse_typesS8  r¯  rU   )r[   r\   r]   ró   r6  rƒ   r‚  r2  r÷  rX  r^   r_   s   @rT   rä  rä  :8  s&   ø„ ð
 ˆw€HØ$€Oô7òòaörU   rä  c                   ó   — e Zd ZdZd„ Zd„ Zy)r  zc
    Coerce an object to a memoryview slice. This holds a new reference in
    a managed temp.
    c                 óê   — |j                   sJ ‚|j                  j                   rJ ‚t        j                  | |«       || _        d| _        d| _        || _        | j                  j                  |«       y rC	  )r  r­   rä  r‚  r  r¨  r�   r&  ©rY   r�   r"  rv   s       rT   r‚  z!CoerceToMemViewSliceNode.__init__]8  sc   € Ø×*Ò*Ð*Ð*Ø—8‘8×.Ò.Ð.Ð.Ü×Ñ˜d CÔ(ØˆŒ	ØˆŒØ#ˆÔØˆŒØ�	‰	×-Ñ-¨cÕ2rU   c                 ó¾   — |j                  | j                  j                  | j                  j	                  «       | j                  «       | j                  |«      «       y rN   )rÊ   r­   Úfrom_py_call_coder�   rÛ   r  r†   r³  s     rT   r¾  z-CoerceToMemViewSliceNode.generate_result_codeg8  sB   € Ø�
‰
�4—9‘9×.Ñ.Ø�H‰H×ÑÓ Ø�K‰K‹MØ�H‰HØó	
õ 	rU   N)r[   r\   r]   r£  r‚  r¾  rW   rU   rT   r  r  W8  s   „ ñò
3órU   r  c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)re  c                 ó>   — t         j                  | |«       || _        y rN   )rä  r‚  r­   )rY   r�   Únew_types      rT   r‚  zCastNode.__init__s8  s   € Ü×Ñ˜d CÔ(Øˆ�	rU   c                 ó6   — | j                   j                  «       S rN   r�  rX   s    rT   rZ  zCastNode.may_be_nonew8  rŽ  rU   c                 óL   — | j                   j                  | j                  «      S rN   )r�   r  r­   rX   s    rT   r  zCastNode.calculate_result_codez8  s   € Ø�x‰x×!Ñ! $§)¡)Ó,Ð,rU   c                  ó   — y rN   rW   r³  s     rT   r¾  zCastNode.generate_result_code}8  rú   rU   N)r[   r\   r]   r‚  rZ  r  r¾  rW   rU   rT   re  re  p8  s   „ òò&ò-órU   re  c                   ó”   — e Zd ZdZdd„Zej                  ZdZd„ Z	d„ Z
d„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)r  Tc                 ó  — |j                   s#|j                  sJ d|j                  ›d|›�«       ‚|j                  r|j                  |«      }t        j                  | |«       || _        |j                  «       | _        || _        y )NzPyTypeTest for z against non extension type )	r¾  r¿  r­   rQ  rä  r‚  r*  r.  r%  )rY   r�   r"  rv   r%  s        rT   r‚  zPyTypeTestNode.__init__Š8  su   € ð ×)Ò)¨X×-EÒ-Eñ 	UØADÇÃÉ8ÐTó	UÐEà×#Ò#à×$Ñ$ SÓ)ˆCÜ×Ñ˜d CÔ(ØˆŒ	ØŸI™I›KˆÔØˆ�rU   zPython type testc                 ó   — | S rN   rW   rø   s     rT   rX  zPyTypeTestNode.analyse_typesš8  r¯  rU   c                 óP   — | j                   ry| j                  j                  «       S r’  )r%  r�   rZ  rX   s    rT   rZ  zPyTypeTestNode.may_be_none�8  s   € Ø�<Š<ØØ�x‰x×#Ñ#Ó%Ð%rU   c                 ó6   — | j                   j                  «       S rN   r�  rX   s    rT   rS  zPyTypeTestNode.is_simple¢8  r‘  rU   c                 ó6   — | j                   j                  «       S rN   r“  rX   s    rT   r›  zPyTypeTestNode.result_in_temp¥8  r”  rU   c                 ó6   — | j                   j                  «       S rN   )r�   r  rX   s    rT   r  zPyTypeTestNode.is_ephemeral¨8  s   € Ø�x‰x×$Ñ$Ó&Ð&rU   c                 ó6   — | j                   j                  «       S rN   r–  rX   s    rT   rr  z#PyTypeTestNode.nonlocally_immutable«8  r—  rU   c                 óF   — | j                   j                  |«      | _         | S rN   )r�   rQ  rø   s     rT   rQ  zPyTypeTestNode.coerce_to_temp®8  s   € Ø—8‘8×*Ñ*¨3Ó/ˆŒØˆrU   c                 ó€  — | j                   | j                  j                   k7  s| j                  j                  «       s| S | j                   j                  «       s| S | j                  j	                  «       r>| j
                  r2| j                  j                  d| j                   j                  z  «      S | j                  S )Nz!Cannot convert NoneType to %.200s)r­   r�   r›  Útypeobj_is_availablerZ  r%  ra  rt   rX   s    rT   Ú	reanalysezPyTypeTestNode.reanalyse²8  s†   € Ø�9‰9˜Ÿ™Ÿ™Ò%¨T¯X©X×-DÑ-DÔ-FØˆKØ�y‰y×-Ñ-Ô/ØˆKà�8‰8×ÑÔ! d§l¢lØ—8‘8×-Ñ-Ð.QÐTX×T]ÑT]×TbÑTbÑ.bÓcÐcØ�x‰xˆrU   c                  ó   — y rN   rW   rX   s    rT   r2  z(PyTypeTestNode.calculate_constant_result¼8  r¸  rU   c                 ó6   — | j                   j                  «       S rN   r™  rX   s    rT   r  z$PyTypeTestNode.calculate_result_codeÀ8  rš  rU   c                 óÂ  — | j                   j                  «       st        | j                  d«       y | j                   }| j                   j
                  }| j                  rC|rA| j                   j                  || j                  | j                  j                  «       |«       y | j                   j                  |j                  j                  | j                  j                  «       ||r| j                  nd¬«      }|j                  j                  t        j                   |rdndd«      «       |j#                  d|› d|j%                  | j                  «      › �«       y )	NzICannot test type of extern C class without type object name specificationF)ÚexactÚRaiseUnexpectedTypeErrorÚExtTypeTestr6  zif (!(rÝ
  )r­   r«  r   r†   r%  r¿  rÔ  Úconvert_to_basetyper�   rÛ   Útype_test_coder¦  rN  rÇ   rÈ   r   rÉ   rÊ   rÙ   )rY   rÌ   r-  r¿  Ú	type_tests        rT   r¾  z#PyTypeTestNode.generate_result_codeÃ8  s  € Ø�y‰y×-Ñ-Ô/Ü�$—(‘(ÐgÔhØàŸ™Ð%ˆ
ØŸ)™)×3Ñ3ˆà×"Ò"¡à�I‰I×)Ñ)¨$°·±¸$¿(¹(×:LÑ:LÓ:NÐPZÔ[Øà—I‘I×,Ñ,Ø�N‰N× Ñ Ø�H‰H×ÑÓ ØÙ-<�$×)Ò)À%ð	 -ó 
ˆ	ð 	×Ñ×)Ñ)¬+×*AÑ*AÙ*9Ñ&¸}Øó+ ô 	!ð 	�
‰
�V˜I˜; c¨$¯/©/¸$¿(¹(Ó*CÐ)DÐEÕFrU   c                 ó:   — | j                   j                  |«       y rN   r�  r³  s     rT   rÏ  z,PyTypeTestNode.generate_post_assignment_codeÛ8  rž  rU   c                  ó   — y rN   rW   r³  s     rT   r©  z#PyTypeTestNode.allocate_temp_resultÞ8  rú   rU   c                  ó   — y rN   rW   r³  s     rT   r°  z"PyTypeTestNode.release_temp_resultá8  rú   rU   c                 ó:   — | j                   j                  |«       y rN   r¡  r³  s     rT   rØ  zPyTypeTestNode.free_tempsä8  r¢  rU   c                 ó:   — | j                   j                  |«       y rN   )r�   rÂ  r³  s     rT   rÂ  z!PyTypeTestNode.free_subexpr_tempsç8  s   € Ø�‰×#Ñ# DÕ)rU   Nrj  )r[   r\   r]   rÔ  r‚  r/   r�  rŽ  r§  rX  rZ  rS  r›  r  rr  rQ  r¬  r2  r  r¾  rÏ  r©  r°  rØ  rÂ  rW   rU   rT   r  r  �8  sp   „ ð Ðóð —.‘.€KØ$€Kòò&ò
$ò)ò'ò/òòòò!òGò05òòò"ó*rU   r  c                   óz   ‡ — e Zd ZdZdZ	 dˆ fd„	ZdZd„ Zd„ Zd„ Z	d„ Z
e	 dd„«       Ze	 dd	„«       Zd
„ Zd„ Zˆ xZS )r_  TNc                 óÊ   •— t         ‰| �  |j                  |«       |j                  | _        |j	                  «       | _        || _        || _        t        |xs d«      | _	        y r¹  )
rP   r‚  r†   r­   r*  r.  Úexception_type_cnameÚexception_messagerµ   Úexception_format_args)rY   r�   r½  r¾  r¿  rS   s        €rT   r‚  zNoneCheckNode.__init__ó8  sR   ø€ ä‰Ñ˜Ÿ™ #Ô&Ø—H‘HˆŒ	ØŸI™I›KˆÔØ$8ˆÔ!Ø!2ˆÔÜ%*Ð+@Ò+FÀBÓ%GˆÕ"rU   c                 ó   — | S rN   rW   rø   s     rT   rX  zNoneCheckNode.analyse_typesþ8  s	   € ð ˆrU   c                  ó   — yr’  rW   rX   s    rT   rZ  zNoneCheckNode.may_be_none9  r­  rU   c                 ó6   — | j                   j                  «       S rN   )r�   rR  rX   s    rT   rR  z"NoneCheckNode.may_be_unsafe_shared9  r—  rU   c                 óÞ   — | j                   j                  r| j                  j                  «       S | j                   j                  rd| j                  j                  «       z  S t        d«      ‚)Nrs  zunsupported type)r­   rs   r�   rÛ   r  r  rV  rX   s    rT   Ú	conditionzNoneCheckNode.condition	9  sQ   € Ø�9‰9× Ò Ø—8‘8×%Ñ%Ó'Ð'Ø�Y‰Y×)Ò)Ø.°·±·±Ó1BÑBÐBäÐ.Ó/Ð/rU   c                 óJ   —  | ||||«      }||_         |j                  |«       y rN   )r¹  Úput_nonecheck)rR   r�   rÌ   r¾  r½  r¿  r¹  rˆ   s           rT   ÚgeneratezNoneCheckNode.generate9  s-   € ñ �3Ð,Ð.?ÐAVÓWˆØ 0ˆÔØ×Ñ˜4Õ rU   c                 óR   — |j                  «       r| j                  ||||||«       y y rN   )rZ  rÇ  )rR   r�   rÌ   r¾  r½  r¿  r¹  s          rT   Úgenerate_if_neededz NoneCheckNode.generate_if_needed9  s-   € ð �?‰?ÔØ�L‰L˜˜dÐ$5Ð7KÐMbÐdtÕuð rU   c                 ó&  — |j                  d| j                  «       z  «       | j                  r|j                  «        t        j
                  }| j                  rš|j                  d| j                  ›dt	        j
                  | j                  j                  d«      «      ›ddj                  | j                  D �cg c]%  }d |t        |«      j                  d«      «      z  ‘Œ' c}«      ›d�«       nA|j                  d	| j                  ›d || j                  j                  d«      «      ›d
�«       | j                  r|j                  «        |j                  |j                  | j                  «      «       |j                  d«       y c c}w )Nzif (unlikely(%s == Py_None)) {zPyErr_Format(r[  zUTF-8z", r1  z"%s"r2  zPyErr_SetString(z");rÕ   )rÊ   rÄ  r¹  r×   r
   Úescape_byte_stringr¿  r½  r¾  rv  r£  r{   rØ   rÙ   r†   )rY   rÌ   Úescaper�   s       rT   rÆ  zNoneCheckNode.put_nonecheck9  sF  € Ø�
‰
Ø,¨t¯~©~Ó/?Ñ?ô	Að × Ò Ø×ÑÔ!ä×2Ñ2ˆØ×%Ò%Ø�JŠJØ×)Ó)Ü×1Ñ1Ø×*Ñ*×1Ñ1°'Ó:õ<à—	‘	Ø'+×'AÒ'AóDÙ'A ð #¡V¬C°«H¯O©O¸GÓ,DÓ%EÓEØ'AñDõ Eð	Fõ Gð �JŠJØ×)Ó)Ù�t×-Ñ-×4Ñ4°WÓ=Õ>ð@ô Að × Ò Ø×(Ñ(Ô*à�
‰
�4—?‘? 4§8¡8Ó,Ô-Ø�
‰
�3�ùòDs   Â<*Fc                 ó&   — | j                  |«       y rN   )rÆ  r³  s     rT   r¾  z"NoneCheckNode.generate_result_code89  s   € Ø×Ñ˜4Õ rU   )rW   )rn  rW   F)r[   r\   r]   r«  r­   r‚  rŽ  rX  rZ  rR  rÄ  r}  rÇ  rÉ  rÆ  r¾  r^   r_   s   @rT   r_  r_  ë8  so   ø„ ð
 €LØ€Dð (*õHð €Kòò
ò/ò0ð àdiò!ó ð!ð ànsòvó ðvò
ö4!rU   r_  c                   óD   — e Zd ZeZeZdZefd„ZdZd„ Z	d„ Z
d„ Zd„ Zd„ Zy	)
r  r,   c                 ó|  — |j                   j                  |«      s$t        |j                  d|j                   z  «       n'|j                   j                  r|j                  |«      }t        j                  | |«       |t        u r²|j                   j                  s|j                   j                  rt        |«      | _         nc|j                   j                  s|j                   j                  rt        | _         n+|j                   j                  rt        j                   | _         | j                   | _        y |j                   j                  s|j                   j                  rS|t$        t&        fvr6|j(                  d   s't        |j                  d|j                   ›d|›d�«       |x| _         | _        y || _        y )Nz$Cannot convert '%s' to Python objectrd   r8  r9  r+  )r­   r-  r   r†   r  rh  rä  r‚  r   r¿  rt  r~   rÀ  rb  r   r   r   Útarget_typer   r    rn   )rY   r�   rv   r­   s       rT   r‚  zCoerceToPyTypeNode.__init__D9  s8  € Ø�x‰x×1Ñ1°#Ô6Ü�#—'‘'ÐAÀCÇHÁHÑLÕMØ�X‰X× Ò ð ×&Ñ& sÓ+ˆCÜ×Ñ˜d CÔ(Ø”>Ñ!à�x‰x×!Ò! S§X¡X×%;Ò%;Ü,¨SÓ1�•	Ø—‘×*Ò*¨c¯h©h×.FÒ.FÜ(�•	Ø—‘×$Ò$Ü#×0Ñ0�”	Ø#Ÿy™yˆDÕØ�X‰X×Ò 3§8¡8×#9Ò#9ØœZ¬Ð8Ñ8ØŸN™NÐ+>Ò?Ü�c—g’gà—X“Xštð%ô&ð ,0Ð/ˆDŒI˜Õ(ð  $ˆDÕrU   zConverting to Python objectc                  ó   — yr’  rW   rX   s    rT   rZ  zCoerceToPyTypeNode.may_be_nonec9  r“  rU   c                 ó|  — | j                   j                  }|t        j                  u s|t        j
                  u r| j                   j                  |«      S |j                  rt        | j                   |«      S |j                  s|j                  s|j                  rt        | j                   |«      S t        | |«      S rN   )r�   r­   r   rB  r   rØ  rQ  r¿  ÚCoerceCStringToBooleanNoder  rC  r  rD  )rY   rv   rL  s      rT   rd  z$CoerceToPyTypeNode.coerce_to_booleang9  sŽ   € Ø—8‘8—=‘=ˆØ”z×-Ñ-Ñ-°¼W×=NÑ=NÑ1NØ—8‘8×*Ñ*¨3Ó/Ð/Ø×Òô .¨d¯h©h¸Ó<Ð<Ø�_Š_ × 1Ò 1°X·_²_Ü& t§x¡x°Ó5Ð5ä& t¨SÓ1Ð1rU   c                 ó8   — | j                   j                  |«      S rN   )r�   rN  rø   s     rT   rN  z"CoerceToPyTypeNode.coerce_to_indexw9  s   € Ø�x‰x×'Ñ'¨Ó,Ð,rU   c                 ó   — | S rN   rW   rø   s     rT   rX  z CoerceToPyTypeNode.analyse_typesz9  rº  rU   c                 óL  — |j                  | j                  j                  j                  | j                  j	                  «       | j	                  «       | j
                  «      ›d|j                  | j	                  «       | j                  «      ›�«       | j                  |«       y )Nr¡  )	rÊ   r�   r­   Úto_py_call_coder  rÐ  rÖ   r†   rì  r³  s     rT   r¾  z'CoerceToPyTypeNode.generate_result_code~9  su   € Ø�
‰
Ø�H‰H�M‰M×)Ñ)Ø—‘—‘Ó!Ø—‘“Ø× Ñ õ"ð ×#Ñ# D§K¡K£M°4·8±8Ô<ð>ô 	?ð 	×Ñ˜TÕ"rU   N)r[   r\   r]   r   r­   rÐ  r  r‚  r§  rZ  rd  rN  rX  r¾  rW   rU   rT   r  r  <9  s;   „ ð €DØ €KØ€Gà&4ó $ð: 0€Kòò2ò -òó#rU   r  c                   ó   — e Zd ZdZd„ Zd„ Zy)r  r,   c                 ó|   — |j                  |«      }t        j                  | |«       t        j                  | _        y rN   )rh  rä  r‚  r   r   r­   ©rY   r�   rv   s      rT   r‚  zCoerceIntToBytesNode.__init__�9  s/   € Ø×"Ñ" 3Ó'ˆÜ×Ñ˜d CÔ(Ü×&Ñ&ˆ�	rU   c           
      ór  — | j                   }|j                  «       }|j                  t        j                  t        j
                  t        j                  fvr�|j                  j                  r|j                  d|›d|›d�«       n|j                  d|z  «       |j                  d|j                  | j                  «      z  «       |j                  d«       d }|j                  t        j                  urD|j                  j                  t        j                  d¬«      }|j                  |›d	|›d
�«       |}|j                  | j                  «       ›d|›d|j                  | j                  «       | j                  «      ›�«       |�|j                  j                  |«       | j                  |«       y )Nzif ((z
 < 0) || (z
 > 255)) {zif (%s > 255) {zOPyErr_SetString(PyExc_OverflowError, "value too large to pack into a byte"); %srÕ   Fr¡  z	 = (char)rT  z = PyBytes_FromStringAndSize(&z, 1); )r�   r  r­   r   r¼   r£   r�  r,  rÊ   rÙ   r†   r¦  r§  rÖ   r¯  rì  )rY   rÌ   r�   Ú
arg_resultrÈ  s        rT   r¾  z)CoerceIntToBytesNode.generate_result_code”9  sX  € Ø�h‰hˆØ—Z‘Z“\ˆ
Ø�8‰8œJ×2Ñ2Ü&×3Ñ3Ü&×3Ñ3ð5ñ 5ð �x‰x�ŠØ—
’
Ú¢
ð,õ -ð —
‘
Ð,¨zÑ9Ô:Ø�J‰Jð DàŸ?™?¨4¯8©8Ó4ñ6ô 7ð �J‰J�sŒOØˆØ�8‰8œ:×1Ñ1Ñ1Ø—>‘>×/Ñ/´
×0FÑ0FÐSXÐ/ÓYˆDØ�J‰Jª4²Ð<Ô=ØˆJØ�
‰
Ø�K‰K�MÚØ×#Ñ# D§K¡K£M°4·8±8Ô<ð>ô 	?ð ÐØ�N‰N×'Ñ'¨Ô-Ø×Ñ˜TÕ"rU   N)r[   r\   r]   r  r‚  r¾  rW   rU   rT   r  r  ‰9  s   „ ð €Gò'ó
#rU   r  c                   ó.   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zy)r  Nc                 ó&  — t         j                  | |«       || _        d| _        |j	                  |«      st        |j                  d|z  «       | j                  j                  s| j                  j                  r—| j                  j                  rQ| j                  j                  r;| j                  j                  j                  rt        |j                  d|z  d¬«       | j                  j                  rt        |j                  dd¬«       y y y )Nr,   z$Cannot convert Python object to '%s'z=Obtaining '%s' from externally modifiable global Python valuer€   a  Py_UNICODE* has been removed in Python 3.12. This conversion to a Py_UNICODE* will no longer compile in the latest Python versions. Use Python C API functions like PyUnicode_AsWideCharString if you need to obtain a wchar_t* on Windows (and free the string manually after use).)rä  r‚  r­   r  r&  r   r†   r¿  rÀ  r�   rá   r¾   r  r   )rY   r‹  r�   rv   s       rT   r‚  zCoerceFromPyTypeNode.__init__¸9  sÑ   € Ü×Ñ˜d CÔ(ØˆŒ	ØˆŒØ×6Ñ6°sÔ;Ü�#—'‘'Ø8¸;ÑFôHà�9‰9×Ò $§)¡)×"<Ò"<Ø�x‰x×Ò D§H¡H§N¢N°t·x±x·~±~×7QÒ7QÜ˜Ÿ™ØWÐZeÑeØõ!ð �y‰y×)Ò)Ü˜Ÿ™ðið  ö!ð *ð #=rU   c                 ó   — | S rN   rW   rø   s     rT   rX  z"CoerceFromPyTypeNode.analyse_typesÌ9  rº  rU   c                 ó˜   — | j                   j                  xr | j                   j                   xr | j                  j	                  «       S rN   )r­   Úis_unowned_viewrp  r�   r  rX   s    rT   r  z!CoerceFromPyTypeNode.is_ephemeralÐ9  s6   € Ø—	‘	×)Ñ)ÒD°$·)±)×2DÑ2DÐ.DÒaÈ$Ï(É(×J_ÑJ_ÓJaÐarU   c           
      óf  — d }| j                   j                  r‡| j                  j                   t        u rk| j                   j                  j                  d«      rFd| j                   j                  t        d«      d  z   }t        j                  | j                  |d«       |j                  | j                   j                  | j                  j                  «       | j                  «       | j                  ||| j                  ¬«      «       | j                   j                  r| j!                  |«       y y )NÚ__Pyx_PyObject_AsÚ__Pyx_PyBytesÚ__Pyx_PyObjectzexpected bytes, NoneType found)Úfrom_py_functionÚspecial_none_cvalue)r­   r¿  r�   r   ræ  rÏ  r“   r_  rÉ  rÊ   rš  rÛ   r  r†   rç  rs   rì  )rY   rÌ   ræ  s      rT   r¾  z)CoerceFromPyTypeNode.generate_result_codeÓ9  sè   € ØÐà�9‰9×Ò 4§8¡8§=¡=´JÑ#>Ø�y‰y×)Ñ)×4Ñ4Ð5HÔIØ#2°T·Y±Y×5OÑ5OÔPSÐTdÓPeÐPfÐ5gÑ#gÐ Ü×0Ñ0°·±¸4ÐAaÔbà�
‰
�4—9‘9×.Ñ.Ø�H‰H×ÑÓ  $§+¡+£-°·±¸4Ø-Ø $× 8Ñ 8ð /ó 
ô 	ð
 �9‰9× Ò Ø× Ñ  Õ&ð !rU   c                 ó0   — t        | j                  d«       y )Nz0Coercion from Python not allowed without the GILr9  rø   s     rT   rŽ  z CoerceFromPyTypeNode.nogil_checkã9  s   € Üˆd�h‰hÐJÕKrU   )	r[   r\   r]   rç  r‚  rX  r  r¾  rŽ  rW   rU   rT   r  r  ±9  s%   „ ð
 Ðò!ò(òbò'ó LrU   r  c                   óø   — e Zd Zej                  Zej                  dej                  dej                  dej                  dej                  dej                  dej                  diZd„ Zd„ Zd	Zd
„ Zd„ Zd„ Zd„ Zy)rD  rí  rî  Ú__Pyx_PySet_GET_SIZEÚ__Pyx_PyBytes_GET_SIZEÚ__Pyx_PyByteArray_GET_SIZEÚ__Pyx_PyUnicode_IS_TRUEc                 ól   — t         j                  | |«       |j                  j                  rd| _        y y r«  )rä  r‚  r­   rs   r  rÚ  s      rT   r‚  zCoerceToBooleanNode.__init__ú9  s+   € Ü×Ñ˜d CÔ(Ø�8‰8×ÒØˆD�Lð  rU   c                 óÆ   — | j                   j                  j                  rA| j                  j	                  | j                   j                  «      €| j                  «        y y y rN   )r�   r­   rs   Ú_special_builtinsrm   r�  rø   s     rT   rŽ  zCoerceToBooleanNode.nogil_checkÿ9  sD   € Ø�8‰8�=‰=×$Ò$¨×)?Ñ)?×)CÑ)CÀDÇHÁHÇMÁMÓ)RÐ)ZØ�N‰NÕð *[Ð$rU   rÙ  c                 óp   — | j                   r| j                  «        y| j                  j                  «       S r’  )r  r“  r�   rY  rX   s    rT   rY  zCoerceToBooleanNode.check_const:  s)   € Ø�<Š<Ø�N‰NÔØØ�x‰x×#Ñ#Ó%Ð%rU   c                 ó<   — d| j                   j                  «       z  S )Nz	(%s != 0)r™  rX   s    rT   r  z)CoerceToBooleanNode.calculate_result_code:  s   € Ø˜TŸX™XŸ_™_Ó.Ñ.Ð.rU   c           
      óê  — | j                   sy | j                  j                  | j                  j                  «      }|��M| j                  j                  «       rO|j                  d| j                  j                  «       › d| j                  «       › d�«       |j                  d«       |j                  d«       |j                  dt        j                  › d|› d| j                  j                  «       › d	�«       |j                  |j                  d
t        j                  › d�| j                  «      «       |j                  | j                  «       › dt        j                  › d�«       |j                  d«       |j                  «        y |j                  | j                  «       ›d| j                  j                  «       ›d|j                  | j                  «       | j                  «      ›�«       y )Nr  z == Py_None) r8  Úelserœ  r  rS  rR  r2  z((!CYTHON_ASSUME_SAFE_SIZE) && z < 0)z = (z != 0);rÕ   rb  r¥  )r  rð  rm   r�   r­   rZ  rÊ   rÛ   r  r   r  rË   r†   r÷  )rY   rÌ   Ú	test_funcs      rT   r¾  z(CoerceToBooleanNode.generate_result_code:  sw  € Ø�|Š|ØØ×*Ñ*×.Ñ.¨t¯x©x¯}©}Ó=ˆ	ØÑ Ø�x‰x×#Ñ#Ô%Ø—
‘
˜T $§(¡(×"4Ñ"4Ó"6Ð!7°}ÀTÇ[Á[Ã]ÀOÐSXÐYÔZØ—
‘
˜6Ô"Ø�J‰J�sŒOð �J‰J˜¤V×%<Ñ%<Ð$=¸SÀÀÈ1ÈTÏXÉX×M_ÑM_ÓMaÐLbÐbdÐeÔfØ�J‰J�t×)Ñ)Ø1´&×2IÑ2IÐ1JÈ%ÐPÐRV×RZÑRZó\ô ]à�J‰J˜$Ÿ+™+›-˜¨¬V×-DÑ-DÐ,EÀWÐMÔNØ�J‰J�sŒOØ�J‰J�Là�J‰Jà—K‘K•MØ—H‘H×&Ñ&Õ(Ø×*Ñ*¨4¯;©;«=¸$¿(¹(ÔCðEõFrU   c                 ó   — | S rN   rW   rø   s     rT   rX  z!CoerceToBooleanNode.analyse_types&:  r¯  rU   N)r[   r\   r]   r   rB  r­   r   r   r   r   Úfrozenset_typer   r    r   rð  r‚  rŽ  r§  rY  r  r¾  rX  rW   rU   rT   rD  rD  ç9  s“   „ ð ×!Ñ!€Dð 	×ÑÐ!8Ø×ÑÐ!9Ø×ÑÐ!7Ø×ÑÐ!7Ø×ÑÐ!9Ø×ÑÐ!=Ø×ÑÐ!:ðÐòò
ð 0€Kò&ò/òFó0rU   rD  c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )rÓ  z‡Special 'CoerceToBooleanNode' for C string arguments which checks the pointer
    and additionally that the C string is non-empty.
    c                 ó–   •— |j                   j                  sJ |j                   «       ‚|j                  |«      }t        ‰| �  ||«       y rN   )r­   r¿  rh  rP   r‚  )rY   r�   rv   rS   s      €rT   r‚  z#CoerceCStringToBooleanNode.__init__.:  s>   ø€ Ø�x‰x×!Ò!Ð+ 3§8¡8Ó+Ð!Ø×"Ñ" 3Ó'ˆÜ‰Ñ˜˜cÕ"rU   c                 ó”   — | j                   j                  «       }| j                   j                  j                  rd|› d�S d|› d|› d�S )Nz((z
)[0] != 0)rR  z
 != 0 && ()r�   r  r­   rp  r¶	  s     rT   r  z0CoerceCStringToBooleanNode.calculate_result_code3:  sG   € Ø�h‰h�o‰oÓˆØ�8‰8�=‰=×!Ò!Ø˜�u˜JÐ'Ð'à�s�e˜: c U¨*Ð5Ð5rU   )r[   r\   r]   r£  r‚  r  r^   r_   s   @rT   rÓ  rÓ  *:  s   ø„ ñô#ö
6rU   rÓ  c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)r  c                 ó®   — |j                   j                  r|j                  |«      }|| _         t        j	                  | |«       |j                  |«       y rN   )r­   r  rh  rä  r‚  r�  r˜  s       rT   r‚  zCoerceToComplexNode.__init__=:  sD   € Ø�8‰8×ÒØ×&Ñ& sÓ+ˆCØˆŒ	Ü×Ñ˜d CÔ(Ø×0Ñ0°Õ5rU   c                 ó®  — | j                   j                  j                  r{| j                   j                  j                  | j                   j	                  «       «      }| j                   j                  j                  | j                   j	                  «       «      }n| j                   j	                  «       }d}| j                  j                  ›d|›d|›d�S r1  )r�   r­   r  r3  r  r4  r£  )rY   r6  r7  s      rT   r  z)CoerceToComplexNode.calculate_result_codeD:  s‹   € Ø�8‰8�=‰=×#Ò#ØŸ™Ÿ™×/Ñ/°·±·±Ó0AÓBˆIØŸ™Ÿ™×/Ñ/°·±·±Ó0AÓB‰IàŸ™Ÿ™Ó)ˆIØˆIà—	‘	×$Ó$ÚÚðð 	rU   c                  ó   — y rN   rW   r³  s     rT   r¾  z(CoerceToComplexNode.generate_result_codeP:  rú   rU   c                 ó   — | S rN   rW   rø   s     rT   rX  z!CoerceToComplexNode.analyse_typesS:  r¯  rU   N)r[   r\   r]   r‚  r  r¾  rX  rW   rU   rT   r  r  ;:  s   „ ò6ò
òórU   r  c           
      óÖ  — ddl m} t        j                  t        j                  t        j
                  dt        j                  d «      t        j
                  dt        j                  d «      gddd¬«      }t        | j                  d|t        j                  d	d
«      |  || j                  «      g¬«      }|j                  |«      }|j                  |k7  r|j                  ||«      }|S )Nr,   )ÚHasNoGilNoder½   r·  r�  T)rÀ   rà   rÎ   Ú__Pyx_SoftComplexToDoubleÚSoftComplexToDoublez	Complex.c)r;  r—   )r%  r  r   rB  r;  r  r  rB  rt  r†   r   rÉ   rX  r­   r  )r�   r"  rv   r  Ú
cfunc_typerL  s         rT   r   r   W:  sË   € Ý'Ü×%Ñ%Ü× Ñ Ü
×
!Ñ
! '¬:×+GÑ+GÈÓ
NÜ
×
!Ñ
! *¬j×.DÑ.DÀdÓ
Kð	NàØØô€Jô Ø�‰Ø#ØÜ"×.Ñ.Ð/DÀkÓRØ‘\ #§'¡'Ó*Ð+ô€Dð ×Ñ˜cÓ"€DØ‡y�y�HÒØ�~‰~˜h¨Ó,ˆØ€KrU   c                   ó.   — e Zd Zd„ ZdZd„ Zd„ Zd„ Zd„ Zy)rP  c                 ó
  — t         j                  | |«       | j                  j                  j	                  «       | _        | j                  j
                  | _        d| _        | j                  j                  rt        | _	        y y r«  )
rä  r‚  r�   r­   Úas_argument_typerƒ   r  rs   r   r.  rÚ  s      rT   r‚  zCoerceToTempNode.__init__s:  s]   € Ü×Ñ˜d CÔ(Ø—H‘H—M‘M×2Ñ2Ó4ˆŒ	Ø#Ÿx™x×7Ñ7ˆÔØˆŒØ�9‰9× Ò Ü .ˆDÕð !rU   z#Creating temporary Python referencec                 ó   — | S rN   rW   rø   s     rT   rX  zCoerceToTempNode.analyse_types}:  rº  rU   c                 ó6   — | j                   j                  «       S rN   r�  rX   s    rT   rZ  zCoerceToTempNode.may_be_none�:  rŽ  rU   c                 óê   — | j                   j                  |«      | _         | j                   j                  «       r| j                   S | j                   j                  | _        | j                  | _        | S rN   )r�   rd  rS  r­   r.  rø   s     rT   rd  z"CoerceToTempNode.coerce_to_boolean„:  sQ   € Ø—8‘8×-Ñ-¨cÓ2ˆŒØ�8‰8×ÑÔØ—8‘8ˆOØ—H‘H—M‘MˆŒ	Ø ŸI™IˆÔØˆrU   c                 ó®  — |j                  | j                  «       ›d| j                  j                  | j	                  «       «      ›d�«       | j
                  r}| j                  j                  s/|j                  | j                  «       | j	                  «       «       y |j                  | j                  «       | j                  | j                   ¬«       y y )NrS  rT  r¶  )rÊ   r  r�   r  r*  r¨  r­   r  r²  r¸  r¹  r³  s     rT   r¾  z%CoerceToTempNode.generate_result_codeŒ:  s˜   € ð 	�
‰
Ø�K‰K�M˜4Ÿ8™8×-Ñ-¨d¯j©j«lÕ;ð=ô 	>à×ÒØ—9‘9×/Ò/Ø—‘ §¡£¨t¯z©z«|Õ<à×/Ñ/°·±³¸t¿y¹yØ9=×9NÑ9NÐ5Nð 0õ Pð	  rU   N)	r[   r\   r]   r‚  r§  rX  rZ  rd  r¾  rW   rU   rT   rP  rP  n:  s#   „ ò
/ð 8€Kòò&òó
PrU   rP  c                   ób   ‡ — e Zd ZdZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zˆ xZS )rä  zÃ
    A node that should not be replaced by transforms or other means,
    and hence can be useful to wrap the argument to a clone node

    MyNode    -> ProxyNode -> ArgNode
    CloneNode -^
    Nc                 óf   •— t         ‰| �  |«       |j                  | _        | j                  «        y rN   )rP   r‚  rƒ   Úupdate_type_and_entryrŒ  s     €rT   r‚  zProxyNode.__init__¤:  s*   ø€ Ü‰Ñ˜ÔØ"×2Ñ2ˆÔØ×"Ñ"Õ$rU   c                 óf   — | j                   j                  |«      | _         | j                  «        | S rN   )r�   r^  r  rø   s     rT   rX  zProxyNode.analyse_types©:  s)   € Ø—8‘8×/Ñ/°Ó4ˆŒØ×"Ñ"Ô$ØˆrU   c                 ó8   — | j                   j                  |«      S rN   rˆ  rø   s     rT   r‘   zProxyNode.infer_type®:  r‰  rU   c                 ó¼   — t        | j                  dd «      }|r"|| _        | j                  j                  | _        t        | j                  dd «      }|r|| _        y y ©Nr­   r¾   )r
  r�   r­   r.  r¾   )rY   r­   Ú	arg_entrys      rT   r  zProxyNode.update_type_and_entry±:  sQ   € Ü�t—x‘x ¨Ó.ˆÙØˆDŒIØ $§¡× 5Ñ 5ˆDÔÜ˜DŸH™H g¨tÓ4ˆ	ÙØ"ˆD�Jð rU   c                 ó:   — | j                   j                  |«       y rN   )r�   r¾  r³  s     rT   r¾  zProxyNode.generate_result_codeº:  s   € Ø�‰×%Ñ% dÕ+rU   c                 ó6   — | j                   j                  «       S rN   r™  rX   s    rT   r  zProxyNode.result½:  rš  rU   c                 ó6   — | j                   j                  «       S rN   r�  rX   s    rT   rS  zProxyNode.is_simpleÀ:  r‘  rU   c                 ó6   — | j                   j                  «       S rN   r�  rX   s    rT   rZ  zProxyNode.may_be_noneÃ:  rŽ  rU   c                 ó:   — | j                   j                  |«       y rN   )r�   rÃ  r³  s     rT   rÃ  z"ProxyNode.generate_evaluation_codeÆ:  s   € Ø�‰×)Ñ)¨$Õ/rU   c                 ó:   — | j                   j                  |«       y rN   )r�   rË  r³  s     rT   rË  z ProxyNode.generate_disposal_codeÉ:  s   € Ø�‰×'Ñ'¨Õ-rU   c                 ó:   — | j                   j                  |«       y rN   r¡  r³  s     rT   rØ  zProxyNode.free_tempsÌ:  r¢  rU   )r[   r\   r]   r£  rŽ  r‚  rX  r‘   r  r¾  r  rS  rZ  rÃ  rË  rØ  r^   r_   s   @rT   rä  rä  ™:  sF   ø„ ñð €Kô%ò
ò
(ò#ò,ò!ò$ò&ò0ò.ö"rU   rä  c                   ón   ‡ — e Zd Zg ZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
ˆ fd„Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )rŸ  Nc                 óÎ   — t         j                  | |«       |j                  | _        t        |dd «      }|r|| _        |j
                  | _        t        |dd «      }|r|| _        y y r  )rä  r‚  rƒ   r
  r­   r.  r¾   )rY   r�   r­   r  s       rT   r‚  zCloneNode.__init__Ú:  sc   € Ü×Ñ˜d CÔ(Ø"×2Ñ2ˆÔÜ�s˜F DÓ)ˆÙØˆDŒIØ #× 0Ñ 0ˆDÔÜ˜C ¨$Ó/ˆ	ÙØ"ˆD�Jð rU   c                 ó6   — | j                   j                  «       S rN   r™  rX   s    rT   r  zCloneNode.resultå:  rš  rU   c                 ó6   — | j                   j                  «       S rN   r�  rX   s    rT   rZ  zCloneNode.may_be_noneè:  rŽ  rU   c                 ó8   — | j                   j                  |«      S rN   )r�   rl  rø   s     rT   rl  zCloneNode.type_dependenciesë:  rÓ  rU   c                 ó8   — | j                   j                  |«      S rN   rˆ  rø   s     rT   r‘   zCloneNode.infer_typeî:  r‰  rU   c                 óÀ   — | j                   j                  | _        | j                   j                  | _        d| _        t	        | j                   dd «      }|r|| _        | S )Nr,   r¾   )r�   r­   r.  r  r
  r¾   )rY   rv   r  s      rT   rX  zCloneNode.analyse_typesñ:  sK   € Ø—H‘H—M‘MˆŒ	Ø ŸH™H×1Ñ1ˆÔØˆŒÜ˜DŸH™H g¨tÓ4ˆ	ÙØ"ˆDŒJØˆrU   c                 óˆ   •— | j                   j                  r| j                   j                  ||«      S t        ‰| �	  ||«      S rN   )r�   r¯   r  rP   )rY   Ú	dest_typerv   rS   s      €rT   r  zCloneNode.coerce_toú:  s9   ø€ Ø�8‰8×ÒØ—8‘8×%Ñ% i°Ó5Ð5Ü‰wÑ  ¨CÓ0Ð0rU   c                  ó   — yr·  rW   rX   s    rT   rS  zCloneNode.is_simpleÿ:  r]  rU   c                  ó   — y rN   rW   r³  s     rT   rÃ  z"CloneNode.generate_evaluation_code;  rú   rU   c                  ó   — y rN   rW   r³  s     rT   r¾  zCloneNode.generate_result_code;  rú   rU   c                  ó   — y rN   rW   r³  s     rT   rË  z CloneNode.generate_disposal_code;  rú   rU   c                 óz   — | j                   r/|j                  | j                  «       | j                  «       «       y y rN   )r  r²  r  r*  r³  s     rT   rÏ  z'CloneNode.generate_post_assignment_code;  s*   € ð �<Š<Ø�O‰O˜DŸK™K›M¨4¯:©:«<Õ8ð rU   c                  ó   — y rN   rW   r³  s     rT   rØ  zCloneNode.free_temps;  rú   rU   )r[   r\   r]   ró   rŽ  r‚  r  rZ  rl  r‘   rX  r  rS  rÃ  r¾  rË  rÏ  rØ  r^   r_   s   @rT   rŸ  rŸ  Ï:  sP   ø„ ð €HØ€Kò	#ò!ò&ò/ò(òô1ò
òòòò9örU   rŸ  c                   óJ   ‡ — e Zd ZdZdZed„ «       Zd„ Zd„ Zd„ Z	dˆ fd„	Z
ˆ xZS )	ÚCppOptionalTempCoercionz�
    Used only in CoerceCppTemps - handles cases the temp is actually a OptionalCppClassType (and thus needs dereferencing when on the rhs)
    Fc                 ó.   — | j                   j                  S rN   r…  rX   s    rT   r­   zCppOptionalTempCoercion.type;  r†  rU   c                 ó<   — d| j                   j                  «       z  S r¨  r™  rX   s    rT   r  z-CppOptionalTempCoercion.calculate_result_code;  s   € Ø˜Ÿ™Ÿ™Ó*Ñ*Ð*rU   c                  ó   — y rN   rW   r³  s     rT   r¾  z,CppOptionalTempCoercion.generate_result_code";  rú   rU   c                 ó0   — t        | j                  d«       y )NziUsing C++ classes in boolean binary operators with the 'cpp_locals' directive is not currently supported.r9  )rY   r—   rù  s      rT   rÎ  z5CppOptionalTempCoercion.generate_bool_evaluation_code%;  s   € ô 	ˆd�h‰hð Iõ 	JrU   c                 ó&   •— t         ‰| �  |d¬«      S )NFr  )rP   r  )rY   r  r  rS   s      €rT   r  z-CppOptionalTempCoercion._make_move_result_rhs+;  s   ø€ ô ‰wÑ,¨V¸eÐ,ÓDÐDrU   rj  )r[   r\   r]   r£  r  r{  r­   r  r¾  rÎ  r  r^   r_   s   @rT   r+  r+  ;  s=   ø„ ñð €Gàñó ðò+òòJ÷Eñ ErU   r+  c                   ó   — e Zd Zd„ Zy)rÓ  c                 ó‚   — |j                   r| j                  j                  |«      r| S t        j	                  | ||«      S rN   )r¿  r­   r  rŸ  r  ræ  s      rT   r  zCMethodSelfCloneNode.coerce_to7;  s6   € Ø×#Ò#¨¯	©	×(<Ñ(<¸XÔ(FØˆKÜ×"Ñ" 4¨°3Ó7Ð7rU   N)r[   r\   r]   r  rW   rU   rT   rÓ  rÓ  1;  s   „ ó8rU   rÓ  c                   ó0   — e Zd ZeZdZg Zd„ Zd„ Zd„ Z	d„ Z
y)ÚModuleRefNodeFc                 ó   — | S rN   rW   rø   s     rT   rX  zModuleRefNode.analyse_typesD;  r¯  rU   c                  ó   — yr’  rW   rX   s    rT   rZ  zModuleRefNode.may_be_noneG;  r­  rU   c                 ó"   — t         j                  S rN   )r   rw  rX   s    rT   r  z#ModuleRefNode.calculate_result_codeJ;  s   € Ü×"Ñ"Ð"rU   c                  ó   — y rN   rW   r³  s     rT   r¾  z"ModuleRefNode.generate_result_codeM;  rú   rU   N)r[   r\   r]   r   r­   r  ró   rX  rZ  r  r¾  rW   rU   rT   r4  r4  =;  s'   „ ð €DØ€GØ€Hòòò#órU   r4  c                   ó,   — e Zd ZdgZeZdZd„ Zd„ Zd„ Z	y)ÚDocstringRefNoderr
  Tc                 ón   — t         j                  | |«       |j                  j                  sJ ‚|| _        y rN   )rñ   r‚  r­   rs   rr
  )rY   r†   rr
  s      rT   r‚  zDocstringRefNode.__init__W;  s,   € Ü×Ñ˜$ Ô$Ø�y‰y×$Ò$Ð$Ð$Øˆ�	rU   c                 ó   — | S rN   rW   rø   s     rT   rX  zDocstringRefNode.analyse_types\;  r¯  rU   c                 ó>  — |j                  | j                  «       ›d| j                  j                  «       ›d|j                  t	        j
                  d«      «      ›d|j                  | j                  «       | j                  «      ›�«       | j                  |«       y )Nz = __Pyx_GetAttr(r1  r£  r¥  )	rÊ   r  rr
  r�  r
   rH  rÖ   r†   rì  r³  s     rT   r¾  z%DocstringRefNode.generate_result_code_;  sn   € Ø�
‰
Ø�K‰K�M˜4Ÿ9™9×+Ñ+Õ-Ø×"Ñ"¤>×#?Ñ#?À	Ó#JÕKØ×#Ñ# D§K¡K£M°4·8±8Ô<ð>ô 	?ð 	×Ñ˜TÕ"rU   N)
r[   r\   r]   ró   r   r­   r  r‚  rX  r¾  rW   rU   rT   r:  r:  P;  s$   „ ð ˆx€HØ€DØ€Gòò
ó#rU   r:  c                   ó:   — e Zd Zg ZdZdZd	d„Zd„ Zd„ Zd„ Z	d	d„Z
y)
ÚAnnotationNodeTFNc                 óÌ   — t         j                  | |«       |€>ddlm} t	        j
                   |d¬«      j                  |«      «      }t        ||¬«      }|| _        || _	        y)z6string is expected to already be a UnicodeNode or NoneNr,   rm
  ro  )Údescriptionr;  )
rñ   r‚  rp
  rn
  r
   rH  ÚwriterÒ  rq
  rJ  )rY   r†   rJ  rq
  rn
  Ústring_values         rT   r‚  zAnnotationNode.__init__y;  sX   € ä×Ñ˜$ Ô$Øˆ>å;Ü)×7Ñ7Ù ¨\Ô:×@Ñ@ÀÓFóHˆLä  ¨LÔ9ˆFØˆŒØˆ�	rU   c                 ó   — | S rN   rW   rø   s     rT   rX  zAnnotationNode.analyse_types…;  r¯  rU   c                 ó*   — | j                  |«      d   S r«  )rÙ  rø   s     rT   r€  zAnnotationNode.analyse_as_typeˆ;  s   € à×+Ñ+¨CÓ0°Ñ3Ð3rU   c                 ó¼  — t        |t        «      r|j                  }|j                  rL|j	                  |j
                  «      s0t        |j                  d| j                  j                  z  d¬«       yy|j                  �rE|j                  j                  �r.|j	                  |j                  j
                  «      s0t        |j                  d| j                  j                  z  d¬«       y|j                  j                  rf|j                  j                  |«      }|r¥|j                  |j                  «      s‰t!        |j                  d| j                  j                  z  «       y|j                  j                  |«      }|r=|j"                  r0t        |j                  d| j                  j                  z  d¬«       yyyyyt        |j                  d«       y)zZMethod checks for cases when user should be warned that annotation contains unknown types.z5Unknown type declaration '%s' in annotation, ignoringr,   r€   z+Unknown type declaration '%s' in annotationz0Unknown type declaration in annotation, ignoringN)r‚   r  ru  rá   rE  rt   r   r†   rq
  r½   rs  r<  r  r}  rï  r=  r   Úpxd_file_loaded)rY   rv   ro  râ  s       rT   Ú_warn_on_unknown_annotationz*AnnotationNode._warn_on_unknown_annotationŒ;  so  € ä�j¤.Ô1Ø#Ÿ™ˆJØ×Òà—:‘:˜jŸo™oÔ.Ü˜
Ÿ™ØOÐRV×R]ÑR]×RcÑRcÑcÐklönð /ð ×$Ó$¨¯©×)?Ó)?à—:‘:˜jŸn™n×1Ñ1Ô2ä˜
Ÿ™ØOÐRV×R]ÑR]×RcÑRcÑcÐklönà—‘×0Ò0à)Ÿ~™~×?Ñ?ÀÓD�Ù¨×(@Ñ(@À×AUÑAUÔ(VÜ˜*Ÿ.™.ØIÈDÏKÉK×L]ÑL]Ñ]õ_ð  *Ÿ~™~×?Ñ?ÀÓD�Ù L×$@Ò$@Ü˜JŸN™NØSÐVZ×VaÑVa×VgÑVgÑgÐopörð %A�<ð )W�<ô �J—N‘NÐ$VÕWrU   c                 ó´  — | j                   rg d fS | j                  }dx}}|j                  rt        |j                  dd¬«       |j
                  D ];  \  }}|j                  sŒ|j                  dv rd}|rŒ&|}Œ)|j                  dv sŒ8d}|}Œ= |rG|rEt        |j                  dd¬«       n,t        |t        «      rt        |j                  d	d¬«       g d fS |j                  |¬
«      5  |j                  |«      }|€| j                  ||«       g |fcd d d «       S |j                  rt        |j                  dd¬«       |r0|s.|j                  s"|j                  st        |j                  d«       |j                  r|j!                  |«       |j"                  st        |t$        «      r|j'                  |«      ng }	d d d «       |	|fS # 1 sw Y   	fS xY w)NFzSDicts should no longer be used as type annotations. Use 'cython.int' etc. directly.r,   r€   )r­   s   typeT)r*  s   ctypez9Duplicate type declarations found in signature annotationzTTuples cannot be declared as simple tuples of types. Use 'tuple[type1, type2, ...]'.)rD  zWStrings should no longer be used for type declarations. Use 'cython.int' etc. directly.zOPython type declaration in signature annotation does not refer to a Python type)ÚuntypedrJ  rr  r   r†   rš  rŒ   r½   r‚   rF  r  r€  rH  rs   rŸ   r  r�  rt  r  r  )
rY   rv   Úassigned_valuero  Úexplicit_pytypeÚexplicit_ctypert   r½   rL  rß  s
             rT   rÙ  z&AnnotationNode.analyse_type_annotation©;  sÚ  € Ø�<Š<à�t�8ˆOØ—Y‘Yˆ
Ø+0Ð0ˆ˜.Ø×%Ò%Ü�J—N‘NØiÐqrõtà)×9Ô9‘��eØ×-Ò-ØØ—:‘:Ð!2Ñ2Ø&*�OÚ)Ø%*™
Ø—Z‘ZÐ#6Ò6Ø%)�NØ!&‘Jð  :ñ ¡>Ü˜
Ÿ™Ð(cÐklÖmÜ˜
¤IÔ.Ü�J—N‘NØjÐrsõuà�t�8ˆOà×#Ñ#°nÐ#ÕEØ!×1Ñ1°#Ó6ˆHàÐØ×0Ñ0°°jÔAØ˜8�|÷ FÑEð ×+Ò+Ü˜
Ÿ™ØqØõ!ñ ¡~¸x×?SÒ?SÐW_×WoÒWoÜ˜
Ÿ™Øiôkà×"Ò"à×8Ñ8¸Ô=ð GQ×F]ÒF]ÔakÐlvô  yFô  bG˜
×=Ñ=¸cÔBð  MOˆI÷' Fð* ˜(Ð"Ð"÷+ Fð* ˜(Ð"Ð"ús   Ã*)GÄB"GÇGrN   )r[   r\   r]   ró   ry  rJ  r‚  rX  r€  rH  rÙ  rW   rU   rT   r?  r?  g;  s/   „ ð €HØ€Mð
 €Gó
òò4òXô:/#rU   r?  c                   ó¾   ‡ — e Zd ZU dZdgZddgZdZeed<   dZ	e
e   ed<   eed<   dZeed<   dedefˆ fd	„Zed
„ «       Zed„ «       Zd„ Zd„ Zd„ Zˆ fd„Zd„ Zd„ Zˆ xZS )ÚAssignmentExpressionNodezø
    Also known as a named expression or the walrus operator

    Arguments
    lhs - NameNode - not stored directly as an attribute of the node
    rhs - ExprNode

    Attributes
    rhs        - ExprNode
    assignment - SingleAssignmentNode
    r”   r  Fr  NÚassignment_is_independentrÚ  c                 óN   •— t        ‰| �  |fi |¤Ž t        |||d¬«      | _        y )NT)rÚ  r”   rï  )rP   r‚  r0   r  )rY   r†   rÚ  r”   rù  rS   s        €rT   r‚  z!AssignmentExpressionNode.__init__ð;  s+   ø€ Ü‰Ñ˜Ñ% Ò%Ü.Ø�S˜c¸DôBˆ�rU   c                 ó†   — | j                   �| j                   j                  S | j                  j                   j                  S rN   )r”   r­   r  rX   s    rT   r­   zAssignmentExpressionNode.typeõ;  s0   € à�8‰8ÐØ—8‘8—=‘=Ð Ø�‰×"Ñ"×'Ñ'Ð'rU   c                 óB   — | j                   j                  j                  S rN   )r  rÚ  rt   rX   s    rT   Útarget_namez$AssignmentExpressionNode.target_nameû;  s   € à�‰×"Ñ"×'Ñ'Ð'rU   c                 ól   — | j                   xs | j                  j                   }|j                  |«      S rN   )r”   r  r‘   ra  s      rT   r‘   z#AssignmentExpressionNode.infer_typeÿ;  s)   € Ø�h‰hÒ-˜$Ÿ/™/×-Ñ-ˆØ�~‰~˜cÓ"Ð"rU   c                 ó:   — | j                   j                  |«       y rN   )r  rµ  rø   s     rT   rµ  z-AssignmentExpressionNode.analyse_declarations<  s   € Ø�‰×,Ñ,¨SÕ1rU   c                 óš  — | j                   j                  |«      | _         | j                   j                  }|j                  «       sS|j                  r6t        j
                  | j                   j                  «      | _        d| _        n|j                  |«      }| j                  sht        |«      | _        t        | j                  «      | j                   _        | j                  j                  j                  |«      | j                  _
        | j                  j                  r'| j                  rd| j                   j                  _        | S r  )r  rX  r”   r›  r¯   r&   rP  rQ  rä  rŸ  r�   r­   r  r  ra  s      rT   rX  z&AssignmentExpressionNode.analyse_types<  sé   € ð Ÿ/™/×7Ñ7¸Ó<ˆŒØ�o‰o×!Ñ!ˆØ×!Ñ!Ô#Ø�~Š~ô  Ÿ9™9 T§_¡_×%8Ñ%8Ó9�”Ø15�Õ.ð ×(Ñ(¨Ó-�Ø×-Ò-Ü  “~ˆDŒHÜ"+¨D¯H©HÓ"5ˆD�O‰OÔØŸ8™8Ÿ<™<×6Ñ6°sÓ;ˆD�H‰HŒLð �9‰9×'Ò'¨D×,JÒ,Jð
 +0ˆD�O‰O×ÑÔ'ØˆrU   c                 óD  •— | j                   r#| j                  j                  ||«      | _        | S || j                  j                  j                  k(  �r=| j                  €J ‚| j                  j
                  }t        |t        «      r|j
                  }|j                  ||«      }||urç|| j                  _        | j                  j                  «        t        | j                  j                  t        «      r–t        | j                  j                  t        «      sr| j                  j                  j
                  | j                  _        | j                  j                  j
                  j                  | j                  j                  _        | S t        ‰| �	  ||«      S rN   )rP  r”   r  r  r­   r�   r‚   rP  r  rä  rŸ  rP   )rY   r"  rv   Úold_rhs_argÚrhs_argrS   s        €rT   r  z"AssignmentExpressionNode.coerce_to0<  s,  ø€ Ø×)Ò)à—x‘x×)Ñ)¨(°CÓ8ˆDŒHØˆKØ�t—‘×*Ñ*×/Ñ/Ó/Ø—8‘8Ð'Ð'Ð'ð Ÿ(™(Ÿ,™,ˆKÜ˜+Ô'7Ô8Ø)Ÿo™o�Ø!×+Ñ+¨H°cÓ:ˆGØ˜kÑ)Ø&�—‘”Ø—‘×.Ñ.Ô0ä˜tŸ™×2Ñ2´LÔAÜ *¨4¯?©?×+>Ñ+>Ä	Ô JØ*.¯/©/×*=Ñ*=×*AÑ*A�D—O‘OÔ'Ø/3¯©×/BÑ/B×/FÑ/F×/KÑ/K�D—O‘O×'Ñ'Ô,Ø�Ü‰wÑ  ¨3Ó/Ð/rU   c                 ó6   — | j                   j                  «       S rN   )r”   r  rX   s    rT   r  z.AssignmentExpressionNode.calculate_result_codeI<  rš  rU   c                 ó:   — | j                   j                  |«       y rN   )r  rã	  r³  s     rT   r¾  z-AssignmentExpressionNode.generate_result_codeL<  s   € à�‰×/Ñ/°Õ5rU   )r[   r\   r]   r£  ró   rö   r  re  ro
  r”   r+   rñ   r0   rP  r
  r‚  r{  r­   rT  r‘   rµ  rX  r  r  r¾  r^   r_   s   @rT   rO  rO  Û;  s¢   ø… ñ
ð ˆw€HØ˜,Ð'€Kà€GˆTÓØ"€Cˆ�(Ñ	Ó"Ø$Ó$Ø&+Ð˜tÓ+ðB ð B°õ Bð
 ñ(ó ð(ð
 ñ(ó ð(ò#ò2ò(ôT0ò2!ö6rU   rO  c                   ó:   — e Zd ZdgZdZej                  Zd„ Zd„ Z	y)Ú#FirstArgumentForCriticalSectionNodeÚ	name_nodeNc                 ód  — t        | j                  j                  «      dk  rt        | j                  d«       y t        | j                  | j                  j                  d   j                  «       ¬«      | _        | j                  j                  |«       | j                  j                  | _	        y )Nr,   zbcritical_section directive can only be applied to a function with one or more positional argumentsr   rÆ  )
r“   Ú	func_noder—   r   r†   r
  Údeclared_namer_  rµ  r­   rø   s     rT   rµ  z8FirstArgumentForCriticalSectionNode.analyse_declarations^<  s~   € Üˆt�~‰~×"Ñ"Ó# aÒ'Ü�$—(‘(ð  Aô  BØÜ! $§(¡(°·±×1DÑ1DÀQÑ1G×1UÑ1UÓ1WÔXˆŒØ�‰×+Ñ+¨CÔ0Ø—N‘N×'Ñ'ˆ�	rU   c                 óT   — | j                   r| j                   j                  |«      S | S rN   )r_  r^  rø   s     rT   r^  z7FirstArgumentForCriticalSectionNode.analyse_expressionsf<  s#   € à�>Š>Ø—>‘>×5Ñ5°cÓ:Ð:ØˆrU   )
r[   r\   r]   ró   r_  r   r   r­   rµ  r^  rW   rU   rT   r^  r^  Q<  s%   „ ð ˆ}€Hà€IØ×$Ñ$€Dò(órU   r^  c                   ó@   ‡ — e Zd Zg d¢ZdZeZˆ fd„Zd„ Zd„ Z	d„ Z
ˆ xZS )ÚTStringInterpolationNode)r½   r¯  Úexpression_strTc                 óŒ   •— t        ‰| �  |fi |¤Ž | j                  �'t        | j                  t        j
                  «      sJ ‚y y rN   )rP   r‚  r¼  r‚   r
   rH  )rY   r†   rù  rS   s      €rT   r‚  z!TStringInterpolationNode.__init__s<  sK   ø€ Ü‰Ñ˜Ñ% Ò%Ø×$Ñ$Ð,Ü˜4×/Ñ/´×1MÑ1MÔNð	Pð OØNð -rU   c                 ó¾   — | j                   j                  |«       | j                  �| j                  j                  |«       | j                  j                  |«       y rN   )r½   rµ  r¯  rf  rø   s     rT   rµ  z-TStringInterpolationNode.analyse_declarationsx<  sH   € Ø�
‰
×'Ñ'¨Ô,Ø×ÑÐ'Ø×Ñ×1Ñ1°#Ô6Ø×Ñ×0Ñ0°Õ5rU   c                 óŠ  — | j                   j                  |«      j                  |«      | _         | j                  �;| j                  €/t        | j                  t        j                  d«      ¬«      | _        | j                  � | j                  j                  |«      | _        | j                  j                  |«      | _	        | S )Nrù  r;  )
r½   rX  r9  r¼  r¯  rÒ  r†   r
   rH  rf  rø   s     rT   rX  z&TStringInterpolationNode.analyse_types~<  sŸ   € Ø—Z‘Z×-Ñ-¨cÓ2×EÑEÀcÓJˆŒ
Ø×ÑÐ+°×0@Ñ0@Ð0HÜ*Ø—‘¤× <Ñ <¸RÓ @ô BˆDÔà×ÑÐ'Ø#×/Ñ/×=Ñ=¸cÓBˆDÔØ"×1Ñ1×?Ñ?ÀÓDˆÔØˆrU   c                 ó¼  — |j                   j                  t        j                  dd«      «       | j                  j                  «       }| j                  j                  «       }| j                  r|j                  | j                  «      nd}| j                  �| j                  j                  «       n|j                  t        j                  «      }|j                  | j                  «       › d|› d|› d|› d|› d�
«       |j                  |j                  | j                  «       | j                  «      «       |j!                  | j                  «       t"        «       y )NÚMakeTemplateLibInterpolationú	TString.cr´  z& = __Pyx_MakeTemplateLibInterpolation(r1  r2  )rÇ   rÈ   r   rÉ   r½   r  rf  r¼  rg  r¯  r  r   rÆ  rÊ   rÖ   r†   ré  r   )rY   rÌ   r½   Ú
expressionr¼  r¯  s         rT   r¾  z-TStringInterpolationNode.generate_result_codeˆ<  s1  € Ø×Ñ×)Ñ)Ü×#Ñ#Ð$BÀKÓPô	Rà—
‘
×!Ñ!Ó#ˆØ×(Ñ(×/Ñ/Ó1ˆ
à>B×>RÒ>RˆD×$Ñ$ T×%9Ñ%9Ô:Øð 	ð *.×)9Ñ)9Ð)EˆD×Ñ×#Ñ#Ô%Ø×*Ñ*¬6×+?Ñ+?Ó@ð 	ð 	�
‰
�d—k‘k“m�_Ð$JÈ5È'ÐQSÐT^ÐS_Ð_aÐbqÐarÐrtð  vAð  uBð  BDð  Eô  	FØ�
‰
�4×*Ñ*¨4¯;©;«=¸$¿(¹(ÓCÔDØ�‰˜Ÿ™›¤~Õ6rU   )r[   r\   r]   ró   r  r   r­   r‚  rµ  rX  r¾  r^   r_   s   @rT   re  re  m<  s'   ø„ â9€HØ€GØ€DôPò
6òö7rU   re  c                   óJ   ‡ — e Zd ZdZddgZdZeZdefˆ fd„Z	d„ Z
d„ Zd	„ Zˆ xZS )
ÚTemplateStringNodezt-stringÚstringsÚinterpolationsTr�  c          	      óX  •— d }g }g }|D ]Ù  }t        |t        «      ra|€:|j                  t        |j                  t        j                  d«      ¬«      «       n|j                  |«       d }|j                  |«       Œtt        |t        «      rG|€|}Œ‰t        |j                  t        j                  |j                  |j                  z   «      ¬«      }ŒËJ t        |«      «       ‚ |€ t        |t        j                  d«      ¬«      }|j                  |«       t        ‰| �)  |||¬«       y )Nrù  r;  )r†   r½   )rp  rq  )r‚   re  r  rÒ  r†   r
   rH  r½   r­   rP   r‚  )rY   r†   r�  Úlast_string_noderp  rq  r‘  rS   s          €rT   r‚  zTemplateStringNode.__init__ž<  s  ø€ ØÐØˆØˆÛˆAÜ˜!Ô5Ô6Ø#Ð+Ø—N‘N¤;ØŸ™¤^×%AÑ%AÀ"Ó%Eô$õ ð —N‘NÐ#3Ô4Ø'+Ð$Ø×%Ñ% aÕ(Ü˜Aœ{Ô+Ø#Ð+Ø'(Ñ$ä'2Ø.×2Ñ2Ü .× <Ñ <Ø,×2Ñ2°Q·W±WÑ<ó!ô(Ñ$ð &œd 1›gÓ%�uð) ð* Ð#Ü*¨3´n×6RÑ6RÐSUÓ6VÔWÐØ�‰Ð'Ô(Ü‰Ñ˜ g¸nÐÕMrU   c                 óŒ   — | j                   D ]  }|j                  |«       Œ | j                  D ]  }|j                  |«       Œ y rN   )rp  rµ  rq  )rY   rv   r´  r¬  s       rT   rµ  z'TemplateStringNode.analyse_declarations¼<  s<   € Ø—”ˆAØ×"Ñ" 3Õ'ð à×$Ô$ˆAØ×"Ñ" 3Õ'ñ %rU   c                 óÚ   — t        | j                  | j                  ¬«      j                  |«      | _        t        | j                  | j                  ¬«      j                  |«      | _        | S r/  )rF  r†   rp  rX  rq  rø   s     rT   rX  z TemplateStringNode.analyse_typesÂ<  sZ   € ä Ø�H‰H˜4Ÿ<™<ô
ç
‰-˜Ó
ð 	Œô (Ø�H‰H˜4×.Ñ.ô
ç
‰-˜Ó
ð 	Ôð ˆrU   c                 óÔ  — |j                   j                  t        j                  dd«      «       | j                  j                  «       }| j                  j                  «       }|j                  | j                  «       › d|› d|› d�«       |j                  |j                  | j                  «       | j                  «      «       |j                  | j                  «       t        «       y )NÚMakeTemplateLibTemplaterl  z! = __Pyx_MakeTemplateLibTemplate(r1  r2  )rÇ   rÈ   r   rÉ   rp  r  rq  rÊ   rÖ   r†   ré  r   )rY   rÌ   rp  rq  s       rT   r¾  z'TemplateStringNode.generate_result_codeÌ<  s®   € Ø×Ñ×)Ñ)Ü×#Ñ#Ð$=¸{ÓKô	Mà—,‘,×%Ñ%Ó'ˆØ×,Ñ,×3Ñ3Ó5ˆØ�
‰
�d—k‘k“m�_Ð$EÀgÀYÈbÐQ_ÐP`Ð`bÐcÔdØ�
‰
�4×*Ñ*¨4¯;©;«=¸$¿(¹(ÓCÔDØ�‰˜Ÿ™›¤~Õ6rU   )r[   r\   r]   r£  ró   r  r   r­   r  r‚  rµ  rX  r¾  r^   r_   s   @rT   ro  ro  ˜<  s8   ø„ ÙØÐ+Ð,€HØ€GØ€DðN tõ Nò<(òö7rU   ro  rW   r“  rj  (7  ÚcythonÚdeclarerè  r&   r%   r   Úos.pathr'   r(   r)   r*   Útypingr+   ÚErrorsr   r   r   r   r   r   r-   r.   ÚCoder   r	   Ú	LineTabler$   rù  r
   r   r   r/   r0   r   r1   r   r2   r3   r4   r5   r   r   r   r   r   r   r   r   r    r!   r6   r#   r"   r   r   ÚAnnotater8   r9   Ú	Debuggingr:   Ú
DebugFlagsr   r   ÚPythranr;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   ry   r{   r  rL   r6  r5  rb   rq   rp   rr   Úc_py_unicode_ptr_typerG  Úget_cy_pymutex_typeÚget_cy_pythread_type_lock_typerl   r   r~   r‰   rž   r®   rÁ   rÏ   rÝ   rã   rï   rñ   r  r¥  r©  r  r»  rÀ  r@  rÏ  râ   rx  rÐ  rP  rÑ  rÒ  r•  r—  r©  r
  r…  rŠ  r­  rÚ  rß  r5  rG  rR  ÚCopyWithUpTreeRefsMixinrX  rh  rr  r�  r…  rŽ  r�  rÎ  rÙ  rÞ  rw  rL  rJ  rI  rõ  rè  rç  r  rè  rK  r„  rF  rÀ  r  r]  rl  rt  rw  r‚  r›  r¦  rG  r.	  r:	  rF  rY  rÕ	  rè	  ró	  rû	  rO	  r
  r�  rœ  rF
  rP
  rS
  r(  r)  r€
  rˆ
  r�
  r™
  r'  rì
  rñ
  rý
  r¯
  r(  rº
  r»
  r5  r@  rK  rp  r}  r…  r‹  r’  r˜  r›  rŸ  r¨  Únot_ÚinvÚnegr†   r®  r¬  rÚ  rä  rë  rô  rú  rý  r  r  r  r  r  rÈ	  rE  rF  rH  rC  rD  r  rj  rK  rp  r}  rŒ  Úmatmulr–  r•   ÚltÚlerJ  ÚneÚgeÚgtÚis_rš  r   Úand_ÚtruedivÚfloordivr  Úmodr
  Úor_r›  ÚrshiftrÚ  Úxorr«  r¬  r®  rÒ  rÛ  rÝ  r  r  r  r&  r*  r<  rB  ÚcompileÚfindallÚ_find_formatting_typesÚ	frozensetÚ_safe_bytes_formatsr‚  r’  r·  rÄ  r&  rK  r  r'  r|  r‰  rP	  rä  r  re  r  r_  r  r  r  rD  rÓ  r  r   rP  rä  rŸ  r+  rÓ  r4  r:  r?  rO  r^  re  ro  rW   rU   rT   Ú<module>r�     sQ  ðó Ø €‡�ó ‘Vð ¡Vð ±vð ÉVð Ù"ðÙ06ðÙKQðá$ðá/5ðáDJðáY_ðñ ðñ %+ðñ 8>ðñ OUðñ  ð	ñ -3ð	ñ >Dð	ñ PVð	ñ
 #ðñ
 06ðñ
 BHðñ ðñ '-ðñ 5;ðñ QWðñ $*ðñ =Cðñ TZðñ %ðñ 28ðñ JPðñ '-ðñ @Fðñ ðñ %+ðñ 06ðñ @Fðñ KQðñ W]ñó Û Û Û Û Û 	Û 
Ý ÷(÷ (ó (÷ 2Ý 'Ý Ý Ý ß -Ý ÷õ å ÷÷ ÷ ñ õ
 Ý Ý Ý $Ý Ý (ß ;÷V÷ V÷ V÷ Vñ Võ $à˜#�,€÷
 ñ 
 ñ “€Ù›Ð òð �:ÐÐ iØ�:×-Ñ-Ð.Ð0gØ�:×3Ñ3Ð4Ð6mØ�:×.Ñ.Ð/Ð1hØ�:×4Ñ4Ð5Ð7nØ�ÐÐ dØ�×1Ñ1Ð2Ð4nØ�×7Ñ7Ð8ØBØ×Ñ Ð.Ð0qØ×%Ñ% |Ð4ØIØ× Ñ  ,Ð/Ð1rØ×&Ñ&¨Ð5ØIÙÐ2�J×2Ñ2Ó4Ó5Ø)ÙÐ=�J×=Ñ=Ó?Ó@Ø4ð)Ð ò.ò"+ò*ô.òb(ò6ò.Dòò ò"ô:sˆtô sôl0"˜ô 0"ôr
�Xô 
ô�.ô ô.0ˆ{ô 0ô*�;ô ô8�ô 8ôv*8ˆyô *8ôZˆyô ô
?ˆyô 
?ô]/ˆiô ]/ô~0'�	ô 0'òfôBT �	ô T ôn~�)ô ~ôB˜;ô ô
/'ˆ~ô /'ôp!A�.ô !AôHEˆ~ô EôP#�Hô #ôFc&�ô c&ôLX2�Xô X2ôvc(�>ô c(ôLV(�hô V(ôr3Jˆ~ô 3Jôl#˜ô #ôL#�Nô #ô<:�x ×!>Ò!>ô :ôz�>ô ô*.ˆxô .ô`E�ô Eô�xô ô8f"�Hô f"ôR[#˜ô [#ôH >ô ô:˜>ô ô<˜ô ô<h&Ð!ô h&ôVF)Ð'ô F)ôRk˜/ô kô\OÐ-ô Oôd�Xô ô.�nô ô44�~ô 4ônS�Xô SôlA(�ô A(ôF4�9ô 4ôna3ˆxô a3ôHyA�Xô yAôx:˜(ô :ô8g�xô gôT	u#˜Xô u#ôp˜Xô ô$5˜ô 5ô*# (ô #ô@g#�hô g#ôT'#�(ô '#ôTe �Xô e ôPq	�Hô q	ôt0˜8ô 0ôfo#�8ô o#ôd[6�ô [6ô|^=ˆ|ô ^=ôB9!˜ô 9!ôx'!˜dô '!ôR'Ð"9ô 'ôD+# Xô +#ô\h ˜ô h ôV-!ˆhô -!ô`|Iˆxô |Iô~!,�8ô !,ôH+<˜ô +<ô\ZÐ&ô Z÷,ñ ,ô7#�˜/ô 7#ôtH5�8ô H5ôV!#˜8ô !#ôH'#˜8 _ô '#ôT,˜Hô ,ô47�Hô 7ô4`G�h ô `GôF		˜ô 	÷<ñ <ô<u�Xô uôp6˜Hô 6ô>L˜xô Lö0Q˜	ô Qö"5˜ô 5ö +Ð"ô  +öF0#˜jô 0#öfpC�Hô pCöf.˜}ô .öb,Ð0ô ,ö ,Ð,ô ,ö&˜Mô ö6#�nô #ö(	˜ô 	ö˜ô ö$˜Nô ó((ð �=Š=Ø	�ŠØ	�ŠØ	�Šò	 Ð öZˆxô Zöz/ˆhô /öD)�Hô )ö&#�Xô #ö</�ô /ö&�ô ö
/�iô /ö0E˜Yô Eó:kö.=�Iô .=ðd Ø
Ø
òÐ ó
öR9�8ô R9ñj %€	Ù8€ñ4€	áF€ÙI€öh�hô höT	�ô 	ö/)�Zô /)öd�Jô ö@I/�ô I/öV4�ô 4ðLØ—o’o€Oð!Ùˆ�Šð!áˆ(�+Š+ð!ñ 	ˆ(�+Š+ð!ñ 	ˆ(�+Š+ð	!ñ
 	ˆ(�+Š+ð!ñ ˆ�Šð!ñ 	ˆ(�,Š,ð!ñ ˆh�oŠoð!ñ ˆ�Šð!ñ ˆ�Šð!ñ ˆ×	Ò	ð!ñ 	ˆ(×
Ò
ð!ñ 	ˆ(�/Š/ð!ñ ˆ�Šð!ñ ˆ�Šð!ñ  ˆ�Šð!!ñ" 	ˆ(�,Š,ð#!ð$ �/Š/Ø	�ŠØ	�ŠØ	Ú
!Ú)ó/!Ñ ô4öG*�õ G*öT‘õ ô6ö
S‘9õ Söl0‘<õ 0ö‘Lõ ö<83‰lõ 83öv
$‰lõ 
$öQC‰lõ QCöh/‘,õ /ö|i‰lõ |ið~ $˜Ÿšñ
ó÷
 Š7ñ ò  ó !ó Ñ öE3‰gõ E3öP[0‰lõ [0ö|C4�Hõ C4öLp˜(õ pöfG�8õ GñV Ù
Ù
Ù
Ù
Ù
Ù
áÙòÑ ÷Xô Xöt
V(�X™wõ V(ör^(�d™Gõ ^(ñD ÙÙÙÙÙÙÙÙÙÙÙÙÙÙòÑ ö&	ö.�8õ ö:™|õ ö2‰|õ ö"g*‘\õ g*öTN!Ð%õ N!öbJ#™õ J#öZ%#Ñ-õ %#öP3L™<õ 3Löl@™,õ @öF6Ñ!4õ 6ö"™,õ ô8ö.(P‘|õ (PöV4"‘õ 4"ölC‘õ CöLE™lõ Eö8	8™9õ 	8ö�Hõ ö&#�xõ #ö.q#�Xõ q#öhs6˜xõ s6öl¨(õ ö8(7˜xõ (7öV;7˜ö ;7øðyh ò öðús   ß>p ð	p!ð p!