§
    1@Äjz“  ã                   ó„  — d Z ddlmZ ddlmZ ddlZddlZddlmZ ddl	m
Z
mZmZ ddlmZmZ  edd	d
g¦  «        Z edd¦  «        Z ej        d¦  «        Z ej        d¦  «        ZeZd„ Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        ZdZ ee¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z dZ!dZ"dZ#dZ$dZ% ej&        eeeeeg¦  «        Z' ej(        e'¦  «        Z) G d„ de¦  «        Z* G d„ d e¦  «        Z+ G d!„ d"e+¦  «        Z, G d#„ d$e+¦  «        Z-e,e-d%œZ.d&„ Z/dS )'z3
Calling conventions for Numba-compiled functions.
é    )Ú
namedtuple)ÚIterableN)Úir)ÚtypesÚcgutilsÚerrors)ÚPYOBJECTÚGENERIC_POINTERÚ	TryStatusÚin_tryÚexcinfoÚStatus)ÚcodeÚis_okÚis_noneÚis_errorÚis_stop_iterationÚis_python_excÚis_user_excÚ
excinfoptré    é@   c                 ó6   — t          j        t          | ¦  «        S ©N)r   ÚConstantÚ	errcode_t)r   s    úDC:\Projects\Historical\venv\Lib\site-packages\numba/core/callconv.pyÚ
_const_intr   +   s   € ÝŒ;•y $Ñ'Ô'Ð'ó    éÿÿÿÿéþÿÿÿéýÿÿÿé   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d„ Zd„ ZdS )ÚBaseCallConvc                 ó   — || _         d S r   )Úcontext)Úselfr'   s     r   Ú__init__zBaseCallConv.__init__<   s   € ØˆŒˆˆr   c                 ó  — |t           j        k    r|                      |¦  «         d S ||k    r·| j                             |||¬¦  «        }t          j        ||j        ¦  «        }|                     |¦  «        5  | j         	                    ||j
        |j        ¦  «        }|                      ||¦  «         d d d ¦  «         n# 1 swxY w Y   |                      |¦  «         d S t          |t           j        ¦  «        sg||j
        k    r#| j                             ||||j
        ¬¦  «        }| j         	                    ||j
        |¦  «        }|                      ||¦  «         d S t!          d                     ||¦  «        ¦  «        ‚)N)Úvalue)ÚfromtyÚtotyzreturning {0} for {1})r   ÚnoneÚreturn_native_noner'   Úmake_helperr   Úas_bool_bitÚvalidÚif_thenÚget_return_valueÚtypeÚdataÚreturn_valueÚ
isinstanceÚOptionalÚcastÚNotImplementedErrorÚformat)r(   ÚbuilderÚrettyÚvaltyr+   ÚoptvalÚvalidbitÚretvals           r   Úreturn_optional_valuez"BaseCallConv.return_optional_value?   sÐ  € Ø•E”JÒÐà×#Ò# GÑ,Ô,Ð,Ð,Ð,à�eŠ^ˆ^à”\×-Ò-¨g°uÀEÐ-ÑJÔJˆFåÔ*¨7°F´LÑAÔAˆHØ—’ Ñ*Ô*ð 3ð 3Øœ×6Ò6°wÀÄ
Ø7=´{ñDô D�à×!Ò! '¨6Ñ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð
 ×#Ò# GÑ,Ô,Ð,Ð,Ð,å˜E¥5¤>Ñ2Ô2ð 
	Mà˜œ
Ò"Ð"Øœ×)Ò)¨'°5ÀØ/4¬zð *ñ ;ô ;�à”\×2Ò2°7¸E¼JÈÑNÔNˆFØ×Ò˜g vÑ.Ô.Ð.Ð.Ð.õ &Ð&=×&DÒ&DÀUØEJñ'Lô 'Lñ Mô Mð Ms   Á:=CÃCÃ
Cc                 ó<   — |                       |t          ¦  «         d S r   )Ú_return_errcode_rawÚRETCODE_NONE©r(   r=   s     r   r/   zBaseCallConv.return_native_none\   s   € Ø× Ò  ­,Ñ7Ô7Ð7Ð7Ð7r   c                 ó<   — |                       |t          ¦  «         d S r   )rE   ÚRETCODE_EXCrG   s     r   Ú
return_exczBaseCallConv.return_exc_   s   € Ø× Ò  ­+Ñ6Ô6Ð6Ð6Ð6r   c                 ó<   — |                       |t          ¦  «         d S r   )rE   ÚRETCODE_STOPITrG   s     r   Úreturn_stop_iterationz"BaseCallConv.return_stop_iterationb   s   € Ø× Ò  ­.Ñ9Ô9Ð9Ð9Ð9r   c                 ór   — | j         j        |                              ¦   «         }|                     ¦   «         S )zQ
        Get the actual type of the return argument for Numba type *ty*.
        )r'   Údata_model_managerÚget_return_typeÚ
as_pointer)r(   ÚtyÚrestypes      r   rP   zBaseCallConv.get_return_typee   s1   € ð ”,Ô1°"Ô5×EÒEÑGÔGˆØ×!Ò!Ñ#Ô#Ð#r   c                 ó>   — |                       |¦  «        }||_        |S )zS
        Initialize and return a call helper object for the given builder.
        )Ú_make_call_helperÚ_BaseCallConv__call_helper)r(   r=   Úchs      r   Úinit_call_helperzBaseCallConv.init_call_helperl   s$   € ð ×#Ò# GÑ,Ô,ˆØ "ˆÔØˆ	r   c                 ó   — |j         S r   )rV   rG   s     r   Ú_get_call_helperzBaseCallConv._get_call_helpert   s   € ØÔ$Ð$r   c                 ó6   — |                      |j        ¦  «        S r   )Úunserializer   )r(   r=   ÚpyapiÚstatuss       r   Úunpack_exceptionzBaseCallConv.unpack_exceptionw   s   € Ø× Ò  Ô!2Ñ3Ô3Ð3r   c                 óŒ  — |j                              ¦   «         }|                     |j        ¦  «        5  |                     ¦   «          |                      |||¦  «        }t          j        |t          j        ||¦  «        ¦  «        5  | 	                    |¦  «         ddd¦  «         n# 1 swxY w Y   | 
                    |¦  «         ddd¦  «         n# 1 swxY w Y   |                     |j        ¦  «        5  |                     d¦  «         | 
                    |¦  «         ddd¦  «         n# 1 swxY w Y   |                     |j        ¦  «        5  | 
                    |¦  «         ddd¦  «         n# 1 swxY w Y   |                     dd¦  «         | 
                    |¦  «         |                     |¦  «         dS )zT
        Given a non-ok *status*, raise the corresponding Python exception.
        NÚPyExc_StopIterationÚPyExc_SystemErrorz*unknown error when calling native function)ÚfunctionÚappend_basic_blockr3   r   Ú	err_clearr_   r   Ú	if_likelyÚis_not_nullÚraise_objectÚbranchr   Úerr_set_noner   Úerr_set_stringÚposition_at_end)r(   r=   r]   r^   ÚbbendÚexcs         r   Úraise_errorzBaseCallConv.raise_errorz   s¯  € ð Ô ×3Ò3Ñ5Ô5ˆà�_Š_˜VÔ/Ñ0Ô0ð 	"ð 	"ð �OŠOÑÔÐØ×'Ò'¨°¸Ñ?Ô?ˆCÝÔ" 7Ý#*Ô#6°wÀÑ#DÔ#DñFô Fð (ð (à×"Ò" 3Ñ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð �NŠN˜5Ñ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð �_Š_˜VÔ5Ñ6Ô6ð 	"ð 	"Ø×ÒÐ4Ñ5Ô5Ð5Ø�NŠN˜5Ñ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð �_Š_˜VÔ1Ñ2Ô2ð 	"ð 	"à�NŠN˜5Ñ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	×ÒÐ0ØIñ	Kô 	Kð 	Kà�Š�uÑÔÐà×Ò Ñ&Ô&Ð&Ð&Ð&sZ   ´ACÂB*ÂCÂ*B.	Â.CÂ1B.	Â2CÃCÃCÃ;+D2Ä2D6Ä9D6ÅE9Å9E=Æ E=c                 ó‚   — |                       |¦  «        }|                      |¦  «        }|                     ||¦  «        S )z•
        Get the decoded (unpacked) Python arguments with *argtypes*
        from LLVM function *func*.  A tuple of LLVM values is returned.
        )Úget_argumentsÚ_get_arg_packerÚfrom_arguments)r(   r=   ÚargtypesÚfuncÚraw_argsÚarginfos         r   Údecode_argumentszBaseCallConv.decode_arguments˜   s@   € ð
 ×%Ò% dÑ+Ô+ˆØ×&Ò& xÑ0Ô0ˆØ×%Ò% g¨xÑ8Ô8Ð8r   c                 ó6   — | j                              |¦  «        S )zF
        Get an argument packer for the given argument types.
        )r'   Úget_arg_packer)r(   rt   s     r   rr   zBaseCallConv._get_arg_packer¡   s   € ð Œ|×*Ò*¨8Ñ4Ô4Ð4r   N)Ú__name__Ú
__module__Ú__qualname__r)   rC   r/   rJ   rM   rP   rX   rZ   r_   ro   rx   rr   © r   r   r%   r%   :   sË   € € € € € ðð ð ðMð Mð Mð:8ð 8ð 8ð7ð 7ð 7ð:ð :ð :ð$ð $ð $ðð ð ð%ð %ð %ð4ð 4ð 4ð'ð 'ð 'ð<9ð 9ð 9ð5ð 5ð 5ð 5ð 5r   r%   c                   óV   — e Zd ZdZd„ Zd„ Z	 	 dd„Zd„ Zd„ Zd„ Z	d	„ Z
dd„Zd„ Zd„ ZdS )ÚMinimalCallConvaª  
    A minimal calling convention, suitable for e.g. GPU targets.
    The implemented function signature is:

        retcode_t (<Python return type>*, ... <Python arguments>)

    The return code will be one of the RETCODE_* constants or a
    function-specific user exception id (>= RETCODE_USEREXC).

    Caller is responsible for allocating a slot for the return value
    (passed as a pointer in the first argument).
    c                 ó   — t          ¦   «         S r   )Ú_MinimalCallHelperrG   s     r   rU   z!MinimalCallConv._make_call_helper¶   s   € Ý!Ñ#Ô#Ð#r   c                 ó   — |j         j        d         }|j        |j        j        k    s5J t	          |j        ¦  «        t	          |j        j        ¦  «        f¦   «         ‚|                     ||¦  «         |                      |t          ¦  «         d S ©Nr   )rc   Úargsr5   ÚpointeeÚstrÚstorerE   Ú
RETCODE_OK©r(   r=   rB   Úretptrs       r   r7   zMinimalCallConv.return_value¹   s�   € ØÔ!Ô& qÔ)ˆØŒ{˜fœkÔ1Ò1Ð1Ð1Ý�”ÑÔ�s 6¤;Ô#6Ñ7Ô7Ð8ñ 2Ô1Ð1à�Š�f˜fÑ%Ô%Ð%Ø× Ò  ­*Ñ5Ô5Ð5Ð5Ð5r   Nc                 ó¬  — |�'t          |t          ¦  «        st          d|›�¦  «        ‚|�'t          |t          ¦  «        st          d|›�¦  «        ‚|�.|                     ¦   «         }|€|}||j        |j        f}d |v rd }nd }|                      |¦  «        }| 	                    |||¦  «        }	|  
                    |t          |	¦  «        ¦  «         d S )Nú+exc should be None or exception class, got ú&exc_args should be None or tuple, got )Ú
issubclassÚBaseExceptionÚ	TypeErrorr8   ÚtupleÚ_raw_function_nameÚfilenameÚlinerZ   Ú_add_exceptionrE   r   )
r(   r=   rn   Úexc_argsÚlocÚ	func_nameÚfnameÚlocinfoÚcall_helperÚexc_ids
             r   Úreturn_user_exczMinimalCallConv.return_user_excÀ   sú   € àˆ?¥:¨cµ=Ñ#AÔ#Aˆ?Ý�)Ø"˜sð%ñ &ô &ð &àÐ­
°8½UÑ(CÔ(CÐÝ�)Ø'˜xð*ñ +ô +ð +ð ˆ?Ø×*Ò*Ñ,Ô,ˆEØˆ}à!�à˜cœl¨C¬HÐ5ˆGØ�wˆˆØ�øàˆGà×+Ò+¨GÑ4Ô4ˆØ×+Ò+¨C°¸7ÑCÔCˆØ× Ò  ­*°VÑ*<Ô*<Ñ=Ô=Ð=Ð=Ð=r   c                 ó<   — |                       ||j        ¦  «         d S r   )rE   r   )r(   r=   r^   s      r   Úreturn_status_propagatez'MinimalCallConv.return_status_propagateÚ   s    € Ø× Ò  ¨&¬+Ñ6Ô6Ð6Ð6Ð6r   c                 óx   — t          |t          ¦  «        rt          |¦  «        }|                     |¦  «         d S r   )r8   Úintr   Úret©r(   r=   r   s      r   rE   z#MinimalCallConv._return_errcode_rawÝ   s9   € Ý�d�CÑ Ô ð 	$Ý˜dÑ#Ô#ˆDØ�Š�DÑÔÐÐÐr   c           
      ó¢  — |                      d|t          ¦  «        }|                      d|t          ¦  «        }|                     ||¦  «        }|                     |¦  «        }|                      d|t
          ¦  «        }|                      d|t          ¦  «        }|                      d|t          ¦  «        }	t          ||||||	|d¬¦  «        }
|
S )z?
        Given a return *code*, get a Status instance.
        ú==ú>=N©r   r   r   r   r   r   r   r   )	Úicmp_signedr‰   rF   Úor_Únot_rI   rL   ÚRETCODE_USEREXCr   )r(   r=   r   Únormr.   ÚokÚerrrn   r   r   r^   s              r   Ú_get_return_statusz"MinimalCallConv._get_return_statusâ   sÎ   € ð ×"Ò" 4¨­zÑ:Ô:ˆØ×"Ò" 4¨­|Ñ<Ô<ˆØ�[Š[˜˜tÑ$Ô$ˆØ�lŠl˜2ÑÔˆØ×!Ò! $¨­kÑ:Ô:ˆØ#×/Ò/°°d½NÑKÔKÐØ×)Ò)¨$°µoÑFÔFˆå˜TØ Ø!$Ø&)Ø $Ø$/Ø*;Ø#'ð)ñ )ô )ˆð ˆr   c                 ó¾   — |                       |¦  «        }t          |j        ¦  «        }|                      |¦  «        }t	          j        t          |g|z   ¦  «        }|S ©zQ
        Get the implemented Function type for *restype* and *argtypes*.
        )rr   ÚlistÚargument_typesrP   r   ÚFunctionTyper   ©r(   rS   rt   rw   ÚresptrÚfntys         r   Úget_function_typez!MinimalCallConv.get_function_typeø   sW   € ð ×&Ò& xÑ0Ô0ˆÝ˜Ô.Ñ/Ô/ˆØ×%Ò% gÑ.Ô.ˆÝŒ�y¨6¨(°XÑ*=Ñ>Ô>ˆØˆr   Fc                 óÂ   — |rJ ‚|                       |¦  «        }|                     |                      |¦  «        d„ |D ¦   «         ¦  «         d|j        d         _        dS )zA
        Set names and attributes of function arguments.
        c                 ó   — g | ]}d |z   ‘ŒS ©zarg.r~   ©Ú.0Úas     r   ú
<listcomp>z5MinimalCallConv.decorate_function.<locals>.<listcomp>	  ó   € Ð7Ð7Ð7¨Q˜f q™jÐ7Ð7Ð7r   z.retr   N)rr   Úassign_namesrq   r…   Úname)r(   Úfnr…   Úfe_argtypesÚnoaliasrw   s         r   Údecorate_functionz!MinimalCallConv.decorate_function  sl   € ð ÐÐˆ{Ø×&Ò& {Ñ3Ô3ˆØ×Ò˜T×/Ò/°Ñ3Ô3Ø7Ð7°$Ð7Ñ7Ô7ñ	9ô 	9ð 	9à ˆŒ�Œ
Œˆˆr   c                 ó    — |j         dd…         S )ú@
        Get the Python-level arguments of LLVM *func*.
        r#   N©r…   ©r(   ru   s     r   rq   zMinimalCallConv.get_arguments  ó   € ð Œy˜˜˜Œ}Ðr   c                 óè  — |j         d         j        j        }t          j        ||¦  «        }|                     t          j        |¦  «        |¦  «         |                      |¦  «        }|                     ||¦  «        }|gt          |¦  «        z   }	| 
                    ||	¦  «        }
|                      ||
¦  «        }|                     |¦  «        }| j                             |||¦  «        }||fS )z3
        Call the Numba-compiled *callee*.
        r   )r…   r5   r†   r   Úalloca_oncerˆ   Úget_null_valuerr   Úas_argumentsr³   Úcallr°   Úloadr'   Úget_returned_value)r(   r=   ÚcalleeÚrestyÚargtysr…   r>   Ú	retvaltmprw   Úrealargsr   r^   rB   Úouts                 r   Úcall_functionzMinimalCallConv.call_function  sÜ   € ð ”˜A”Ô#Ô+ˆÝÔ'¨°Ñ7Ô7ˆ	à�Š•gÔ,¨UÑ3Ô3°YÑ?Ô?Ð?à×&Ò& vÑ.Ô.ˆØ×#Ò# G¨TÑ2Ô2ˆØ�;¥ d¡¤Ñ+ˆØ�|Š|˜F HÑ-Ô-ˆØ×(Ò(¨°$Ñ7Ô7ˆØ—’˜iÑ(Ô(ˆØŒl×-Ò-¨g°u¸fÑEÔEˆØ�sˆ{Ðr   ©NNN©F)r{   r|   r}   Ú__doc__rU   r7   rž   r    rE   r°   r¹   rÇ   rq   rÚ   r~   r   r   r€   r€   ¨   sÈ   € € € € € ðð ð$ð $ð $ð6ð 6ð 6ð @DØ"&ð>ð >ð >ð >ð47ð 7ð 7ðð ð ð
ð ð ð,ð ð ð!ð !ð !ð !ðð ð ðð ð ð ð r   r€   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )r‚   z´
    A call helper object for the "minimal" calling convention.
    User exceptions are represented as integer codes and stored in
    a mapping for retrieval from the caller.
    c                 ó   — i | _         d S r   )Ú
exceptions)r(   s    r   r)   z_MinimalCallHelper.__init__,  s   € ØˆŒˆˆr   c                 óX   — t          | j        ¦  «        t          z   }|||f| j        |<   |S )aV  
        Add a new user exception to this helper. Returns an integer that can be
        used to refer to the added exception in future.

        Parameters
        ----------
        exc :
            exception type
        exc_args : None or tuple
            exception args
        locinfo : tuple
            location information
        )Úlenrà   ÚFIRST_USEREXC)r(   rn   r—   r›   r�   s        r   r–   z!_MinimalCallHelper._add_exception/  s0   € õ �T”_Ñ%Ô%­Ñ5ˆØ"% x°Ð"8ˆŒ˜ÑØˆr   c                 ój   — 	 | j         |         S # t          $ r d|z  }t          }|f}d}|||fcY S w xY w)z÷
        Get information about a user exception. Returns a tuple of
        (exception type, exception args, location information).

        Parameters
        ----------
        id : integer
            The ID of the exception to look up
        z#unknown error %d in native functionN)rà   ÚKeyErrorÚSystemError)r(   r�   Úmsgrn   r—   r›   s         r   Úget_exceptionz _MinimalCallHelper.get_exceptionA  s]   € ð	*Ø”? 6Ô*Ð*øÝð 	*ð 	*ð 	*Ø7¸&Ñ@ˆCÝˆCØ�vˆHØˆGØ˜ 'Ð)Ð)Ð)Ð)ð	*øøøs   ‚ � 2±2N)r{   r|   r}   rÝ   r)   r–   rè   r~   r   r   r‚   r‚   %  sK   € € € € € ðð ðð ð ðð ð ð$*ð *ð *ð *ð *r   r‚   é   é   é   c                   óÞ   — e Zd ZdZ ej        d¦  «        Zd„ Zd„ Zd„ Z		 	 dd„Z
	 	 d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d„Zd„ Zd„ Zd„ Z	 d d„ZdS )!ÚCPUCallConva  
    The calling convention for CPU targets.
    The implemented function signature is:

        retcode_t (<Python return type>*, excinfo **, ... <Python arguments>)

    The return code will be one of the RETCODE_* constants.
    If RETCODE_USEREXC, the exception info pointer will be filled with
    a pointer to a constant struct describing the raised exception.

    Caller is responsible for allocating slots for the return value
    and the exception info pointer (passed as first and second arguments,
    respectively).
    r#   c                 ó   — d S r   r~   rG   s     r   rU   zCPUCallConv._make_call_helperr  s   € Øˆtr   c                 ó0  — |                       |j        ¦  «        }|j        |j        j        k    s5J t	          |j        ¦  «        t	          |j        j        ¦  «        f¦   «         ‚|                     ||¦  «         |                      |t          ¦  «         d S r   )Ú_get_return_argumentrc   r5   r†   r‡   rˆ   rE   r‰   rŠ   s       r   r7   zCPUCallConv.return_valueu  s‡   € Ø×*Ò*¨7Ô+;Ñ<Ô<ˆØŒ{˜fœkÔ1Ò1Ð1Ð1Ý�”ÑÔ�s 6¤;Ô#6Ñ7Ô7Ð8ñ 2Ô1Ð1à�Š�f˜fÑ%Ô%Ð%Ø× Ò  ­*Ñ5Ô5Ð5Ð5Ð5r   c                 ót   — |�.|                      ¦   «         }|€|}||j        |j        f}d |v rd }nd }|||f}|S r   )r“   r”   r•   )r(   rn   r—   r˜   r™   rš   r›   s          r   Úbuild_excinfo_structz CPUCallConv.build_excinfo_struct|  sW   € àˆ?Ø×*Ò*Ñ,Ô,ˆEØˆ}à!�à˜cœl¨C¬HÐ5ˆGØ�wˆˆØ�øàˆGà�H˜gÐ&ˆØˆ
r   Nc                 óP  — |�'t          |t          ¦  «        st          d|›�¦  «        ‚|�'t          |t          ¦  «        st          d|›�¦  «        ‚|€t	          ¦   «         }| j                             |¦  «        }|                      ||||¦  «        }|                     |¦  «        }|  	                    |j
        ¦  «        }|                     ||¦  «        }	|j                              t          j        d¦  «        d¦  «        g¦  «        }
|	                     d|
¦  «         d S )Nr�   rŽ   r#   Únumba_exception_output)r�   r�   r‘   r8   r’   r'   Úget_python_apirò   Úserialize_objectÚ_get_excinfo_argumentrc   rˆ   ÚmoduleÚadd_metadatar   ÚIntTypeÚset_metadata)r(   r=   rn   r—   r˜   r™   r]   Ú	struct_gvÚexcptrrˆ   Úmds              r   Úset_static_user_exczCPUCallConv.set_static_user_exc�  s+  € àˆ?¥:¨cµ=Ñ#AÔ#Aˆ?Ý�)Ø"˜sð%ñ &ô &ð &àÐ­
°8½UÑ(CÔ(CÐÝ�)Ø'˜xð*ñ +ô +ð +ð
 ÐÝ‘w”wˆHðJ ”×+Ò+¨GÑ4Ô4ˆØ×'Ò'¨¨X°s¸IÑFÔFˆØ×*Ò*¨3Ñ/Ô/ˆ	Ø×+Ò+¨GÔ,<Ñ=Ô=ˆØ—’˜i¨Ñ0Ô0ˆØŒ^×(Ò(¨-­"¬*°Q©-¬-¸Ñ*:Ô*:Ð);Ñ<Ô<ˆØ×ÒÐ3°RÑ8Ô8Ð8Ð8Ð8r   c                 óú   — t          |dd¦  «        }|                      |||||¬¦  «         |                      |¦  «         |r|                     |d         ¦  «         d S |                      |t
          ¦  «         d S )NÚ_in_try_blockF)r—   r˜   r™   Útarget)Úgetattrrÿ   Úcheck_try_statusri   rE   r¬   )r(   r=   rn   r—   r˜   r™   Útry_infos          r   rž   zCPUCallConv.return_user_excÆ  s”   € å˜7 O°UÑ;Ô;ˆØ× Ò  ¨#¸Ø%(°Ið 	!ñ 	?ô 	?ð 	?à×Ò˜gÑ&Ô&Ð&Øð 	?ð �NŠN˜8 HÔ-Ñ.Ô.Ð.Ð.Ð.ð ×$Ò$ W­oÑ>Ô>Ð>Ð>Ð>r   c                 óâ  — |j         }|                     |                     |¦  «        t          ¦  «        }|                     |                     |¦  «        t          ¦  «        }|                     ||                     ||j        ¦  «        ¦  «        }|                     |                     |¦  «        t          ¦  «        }|                     |                     |¦  «        t          ¦  «        }	t          j        t          t          g¦  «        }
|                     |	|
                     ¦   «         ¦  «        }|                     ||g¦  «        }t#          j        ||¦  «        }t#          j        ||¦  «        5  d}|                     d|¦  «         |j        j        }
t/          |
j        t          j        ¦  «        s-|                     t#          j        |
j        ¦  «        ¦  «         n|                     ¦   «          d d d ¦  «         n# 1 swxY w Y   |                     ||¦  «        }| j        j        r9| j        j          !                    ||                     ||j"        ¦  «        ¦  «         |S )Nz<Error creating Python tuple from runtime exception argumentsÚPyExc_RuntimeError)#r   Úextract_valuerÒ   ÚPICKLE_BUF_IDXÚPICKLE_BUFSZ_IDXÚbytes_from_string_and_sizeÚsextÚ
py_ssize_tÚHASH_BUF_IDXÚUNWRAP_FUNC_IDXr   rµ   r	   r
   ÚbitcastrQ   rÑ   r   Úis_nullÚif_unlikelyrk   rc   Úfunction_typer8   Úreturn_typeÚVoidTyper£   rÏ   Úret_voidÚbuild_dynamic_excinfo_structr'   Ú
enable_nrtÚnrtÚfreeÚvoidptr)r(   r=   r]   r^   Úexcinfo_ptrÚ	picklebufÚpicklebuf_szÚstatic_exc_bytesÚdyn_argsÚfunc_ptrr¸   rÄ   Úpy_tupleÚfailedrç   r   s                   r   Úunpack_dynamic_exceptionz$CPUCallConv.unpack_dynamic_exceptionÔ  sq  € ØÔ'ˆð ×)Ò)Ø�LŠL˜Ñ%Ô%¥~ñ7ô 7ˆ	à×,Ò,Ø�LŠL˜Ñ%Ô%Õ'7ñ9ô 9ˆà ×;Ò;Ø�w—|’| L°%Ô2BÑCÔCñEô EÐð ×(Ò(Ø�LŠL˜Ñ%Ô%¥|ñ5ô 5ˆà×(Ò(Ø�LŠL˜Ñ%Ô%¥ñ8ô 8ˆõ Œ�x­/Ð):Ñ;Ô;ˆØ�_Š_˜X t§¢Ñ'8Ô'8Ñ9Ô9ˆØ—<’<  X JÑ/Ô/ˆõ
 ” ¨(Ñ3Ô3ˆÝÔ  ¨&Ñ1Ô1ð 
	#ð 
	#ðˆCà× Ò Ð!5°sÑ;Ô;Ð;àÔ#Ô1ˆDÝ˜dÔ.µ´Ñ<Ô<ð #à—’�GÔ2°4Ô3CÑDÔDÑEÔEÐEÐEà× Ò Ñ"Ô"Ð"ð
	#ð 
	#ð 
	#ñ 
	#ô 
	#ð 
	#ð 
	#ð 
	#ð 
	#ð 
	#ð 
	#øøøð 
	#ð 
	#ð 
	#ð 
	#ð ×4Ò4Ð5EÀxÑPÔPˆð Œ<Ô"ð 	Fð ŒLÔ×!Ò!Ø˜Ÿš¨°e´mÑDÔDñFô Fð Fàˆs   Å8BH	È	HÈHc                 ó€  — |j         }|                     |                     |¦  «        t          ¦  «        }|                     d|t          d¦  «        ¦  «        }|                     |¦  «        5 \  }}|5  |                      |||¦  «        }	|j        }
d d d ¦  «         n# 1 swxY w Y   |5  | 	                    |¦  «        }|j        }d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   | 
                    |j        ¦  «        }|                     |	|
¦  «         |                     ||¦  «         |S )Nú>r   )r   r  rÒ   ÚALLOC_FLAG_IDXr©   Úint32_tÚif_elser$  Úblockr\   Úphir5   Úadd_incoming)r(   r=   r]   r^   r  Ú
alloc_flagÚgtÚthenÚ	otherwiseÚdyn_excÚbb_thenÚ
static_excÚbb_elser+  s                 r   r_   zCPUCallConv.unpack_exception  sî  € ð Ô'ˆØ×*Ò*¨7¯<ª<¸Ñ+DÔ+DÝ+9ñ;ô ;ˆ
à× Ò   jµ'¸!±*´*Ñ=Ô=ˆØ�_Š_˜RÑ Ô ð 	(Ñ$5 T¨9Øð (ð (Ø×7Ò7¸ÀÈÑOÔO�Ø!œ-�ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð ð (ð (Ø"×.Ò.¨{Ñ;Ô;�
Ø!œ-�ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð		(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð �kŠk˜*œ/Ñ*Ô*ˆØ×Ò˜ 'Ñ*Ô*Ð*Ø×Ò˜ WÑ-Ô-Ð-Øˆ
sZ   Á/C-Á5B ÂC-Â B$	Â$C-Â'B$	Â(C-Â-CÃ
C-ÃC	ÃC-ÃC	ÃC-Ã-C1Ã4C1c                 ó  — t          j        t          ||f¦  «                             ¦   «         ¦  «                             ¦   «         }d|› �}||j        v r|j                             |¦  «        S t          j        t          t          g¦  «        }t          j
        |||¦  «        }d|_        |j                             d¦  «         |j                             d¦  «         |                     d¦  «        }t          j        |¦  «        }	| j                             |	¦  «        }
|                     ¦   «         }|	                     |j        d         |¦  «        }d„ |D ¦   «         }g }| j                             |	d¬	¦  «        }t-          |¦  «        D ]’\  }}|	                     |	                     |¦  «        |¦  «        }|
                     |||¬
¦  «        }|t5          j        |j        ¦  «        k    rd|› d�}t;          j        |¦  «        ‚|                     |¦  «         Œ“| j        j          !                    |	|  "                    |	j#        ¦  «        ¦  «         |
 $                    |¦  «        }|	 %                    |¦  «         |S )NÚ__excinfo_unwrap_argsÚexternalÚnounwindÚnoinlineÚ r   c                 ó   — g | ]}|®|‘ŒS r   r~   )r¾   Útyps     r   rÀ   z@CPUCallConv.emit_unwrap_dynamic_exception_fn.<locals>.<listcomp>F  s   € Ð?Ð?Ð?˜C¨s¨�C¨¨¨r   T)Úreturn_pyobject)Úenv_managerzCannot convert native z to a Python object.)&ÚhashlibÚsha1r‡   ÚencodeÚ	hexdigestÚglobalsÚgetr   rµ   r
   ÚFunctionÚlinkageÚ
attributesÚaddrd   Ú	IRBuilderr'   rõ   rQ   r  r…   Úget_env_managerÚ	enumerater  rÒ   Úfrom_native_valuer   rÏ   r5   r   ÚTypingErrorÚappendr  r  rð   rc   Ú
tuple_packr£   )r(   rø   Úst_typeÚnb_typesÚ_hashrÃ   r¸   rÄ   Úbb_entryr=   r]   Úst_type_ptrÚst_ptrÚobjsr>  Úir<  ÚvalÚobjrç   Útups                        r   Ú emit_unwrap_dynamic_exception_fnz,CPUCallConv.emit_unwrap_dynamic_exception_fn   sn  € õ  ”�S '¨8Ð!4Ñ5Ô5×<Ò<Ñ>Ô>Ñ?Ô?×IÒIÑKÔKˆØ. uÐ.Ð.ˆØ�6”>Ð!Ð!Ø”>×%Ò% dÑ+Ô+Ð+åŒ�µÐ0AÑBÔBˆÝŒ[˜  tÑ,Ô,ˆàˆŒ
ð 	Œ×Ò˜*Ñ%Ô%Ð%Ø
Œ×Ò˜*Ñ%Ô%Ð%à×(Ò(¨Ñ,Ô,ˆÝ”,˜xÑ(Ô(ˆØ”×+Ò+¨GÑ4Ô4ˆð ×(Ò(Ñ*Ô*ˆØ—’ ¤¨¤¨[Ñ9Ô9ˆà?Ð? 8Ð?Ñ?Ô?ˆð ˆØ”l×2Ò2°7ØCGð 3ñ Iô Iˆå Ñ)Ô)ð 
	ð 
	‰FˆAˆsØ×'Ò'¨¯ª°VÑ(<Ô(<¸aÑ@Ô@ˆCØ×)Ò)¨#¨sÀÐ)ÑLÔLˆCð •gÔ,¨S¬XÑ6Ô6Ò6Ð6àH¨sÐHÐHÐH�ÝÔ(¨Ñ-Ô-Ð-à�KŠK˜ÑÔÐÐð 	ŒÔ×Ò˜gØ"×7Ò7¸Ô8HÑIÔIñ	Kô 	Kð 	Kð ×Ò˜tÑ$Ô$ˆØ�Š�CÑÔÐàˆ	r   c                 ó¾  — |                      | j                             |¦  «        ¦  «        }|                     | j        j                             ||¦  «        |                     ¦   «         ¦  «        }d„ |D ¦   «         }t          d¦  «        }t          |¦  «        D ]>\  }}	| 	                    |	| 
                    ||t          |¦  «        g¦  «        ¦  «         Œ?|S )zP
        Create an anonymous struct containing the given LLVM *values*.
        c                 óF   — g | ]}t          |t          j        ¦  «        ¯|‘ŒS r~   ©r8   r   ÚValue©r¾   Úargs     r   rÀ   z4CPUCallConv.emit_wrap_args_insts.<locals>.<listcomp>m  s)   € ÐIÐIÐI˜C­z¸#½r¼xÑ/HÔ/HÐI�CÐIÐIÐIr   r   )r  r'   Úget_abi_sizeofr  r  ÚallocaterQ   r(  rK  rˆ   Úgep)
r(   r=   r]   Ústruct_typer—   Úst_sizerU  ÚzeroÚidxra  s
             r   Úemit_wrap_args_instsz CPUCallConv.emit_wrap_args_instsb  sÔ   € ð ×"Ò" 4¤<×#>Ò#>¸{Ñ#KÔ#KÑLÔLˆà—’ØŒLÔ×%Ò% g¨wÑ7Ô7Ø×"Ò"Ñ$Ô$ñ&ô &ˆð
 JÐI 8ÐIÑIÔIˆå�q‰zŒzˆÝ! (Ñ+Ô+ð 	Jð 	J‰HˆC�Ø�MŠM˜#˜wŸ{š{¨6°D½'À#¹,¼,Ð3GÑHÔHÑIÔIÐIÐIàˆr   c                 ób  ‡— t          |t          ¦  «        st          d|›�¦  «        ‚|�'t          |t          ¦  «        st          d|›�¦  «        ‚| j                             |¦  «        }| j                             ¦   «         Št	          ˆfd„|D ¦   «         ¦  «        }|                      ||||¦  «        }|  	                    |j
        ¦  «        }	|                     |                     |¦  «        ¦  «        }
t          j        d„ |D ¦   «         ¦  «        }|                      ||||¦  «        }|                      |j        ||¦  «        }|                     | j                             t(          ¦  «        ¦  «        }|                     | j        j                             ||¦  «        t0          ¦  «        }t3          d¦  «        }|                     |
t6          ¦  «        |                     |
t8          ¦  «        |                     |t:          ¦  «        |                     |t:          ¦  «        t3          t=          |¦  «        ¦  «        f}t?          |¦  «        D ]>\  }}|                      || !                    ||t3          |¦  «        g¦  «        ¦  «         Œ?|                      ||	¦  «         dS )zf
        Compute the required bits to emit an exception with dynamic (runtime)
        values
        z&exc should be an exception class, got NrŽ   c                 óL   •— g | ] }t          |t          j        ¦  «        r‰n|‘Œ!S r~   r^  )r¾   ra  Údummys     €r   rÀ   z4CPUCallConv.set_dynamic_user_exc.<locals>.<listcomp>³  s.   ø€ ÐMÐMÐM¸S•j ¥b¤hÑ/Ô/Ð8ˆUˆU°SÐMÐMÐMr   c                 óP   — g | ]#}t          |t          j        ¦  «        ¯|j        ‘Œ$S r~   )r8   r   r_  r5   r`  s     r   rÀ   z4CPUCallConv.set_dynamic_user_exc.<locals>.<listcomp>º  sA   € ð ,Gð ,Gð ,G¸Ý,6°s½B¼HÑ,EÔ,Eð,G¨C¬Hð ,Gð ,Gð ,Gr   r   )"r�   r�   r‘   r8   r’   r'   rõ   Úget_dummy_valuerò   r÷   rc   rÒ   rö   r   ÚLiteralStructTyperi  r[  rø   r  rb  Ú	excinfo_tr  r  rc  Úexcinfo_ptr_tr(  r  r	  r
  r
   râ   rK  rˆ   rd  )r(   r=   rn   r—   rQ  r˜   r™   r]   Úexc_args_staticÚ
excinfo_pprü   re  rU  Ú	unwrap_fnÚexc_sizeÚ	excinfo_prg  Ú
exc_fieldsrh  ra  rl  s                       @r   Úset_dynamic_user_excz CPUCallConv.set_dynamic_user_excu  s§  ø€ õ ˜#�}Ñ-Ô-ð 	&Ý�)Ø"˜sð%ñ &ô &ð &àÐ­
°8½UÑ(CÔ(CÐÝ�)Ø'˜xð*ñ +ô +ð +ðb ”×+Ò+¨GÑ4Ô4ˆØ”×,Ò,Ñ.Ô.ˆÝØMÐMÐMÐMÀHÐMÑMÔMñOô Oˆà×'Ò'¨¨_¸cÀ9ÑMÔMˆØ×/Ò/°Ô0@ÑAÔAˆ
Ø—L’L ×!7Ò!7¸Ñ!<Ô!<Ñ=Ô=ˆ	õ Ô*ð ,Gð ,GÀð ,Gñ ,Gô ,Gñ Hô Hˆà×*Ò*¨7°E¸;Ø+3ñ5ô 5ˆà×9Ò9ØŒN˜K¨ñ3ô 3ˆ	ð ×#Ò# D¤L×$?Ò$?Å	Ñ$JÔ$JÑKÔKˆØ—O’OØŒLÔ×%Ò% g¨xÑ8Ô8Ýñô ˆ	õ
 �q‰zŒzˆØ×+Ò+¨Iµ~ÑFÔFØ×+Ò+¨IÕ7GÑHÔHØ—o’o f­oÑ>Ô>Ø—o’o iµÑAÔAÝ�c +Ñ.Ô.Ñ/Ô/ð	1ˆ
õ
 " *Ñ-Ô-ð 	Mð 	M‰HˆC�Ø�MŠM˜#˜wŸ{š{¨9°t½WÀS¹\¼\Ð6JÑKÔKÑLÔLÐLÐLØ�Š�i Ñ,Ô,Ð,Ð,Ð,r   c                 ór   — |                       ||||||¬¦  «         |                      |t          ¦  «         dS )zF
        Same as ::return_user_exc but for dynamic exceptions
        )r˜   r™   N)rx  rE   r¬   )r(   r=   rn   r—   rQ  r˜   r™   s          r   Úreturn_dynamic_user_excz#CPUCallConv.return_dynamic_user_excÒ  sM   € ð
 	×!Ò! '¨3°¸(Ø&)°Yð 	"ñ 	@ô 	@ð 	@à× Ò  ­/Ñ:Ô:Ð:Ð:Ð:r   c                 óˆ   — 	 |j         S # t          $ r. t          j        |t          j        dd¬¦  «        }||_         |cY S w xY w)NÚ	try_stateT)rÃ   Úzfill)Ú_CPUCallConv__eh_try_stateÚAttributeErrorr   rÎ   Úintp_t)r(   r=   Úptrs      r   Ú_get_try_statezCPUCallConv._get_try_stateÛ  s`   € ð	ØÔ)Ð)øÝð 	ð 	ð 	ÝÔ%Ø�œ¨kÀðñ ô ˆCð &)ˆGÔ"ØˆJˆJˆJð	øøøs   ‚	 ‰5AÁ Ac                 ó*  — |                       |¦  «        }|                     |¦  «        }|                     d||                     d¦  «        ¦  «        }|                      |j        ¦  «        }|                     |¦  «        }t          ||¬¦  «        S )Nr&  r   )r   r   )r‚  rÒ   Úicmp_unsignedr5   r÷   rc   r   )r(   r=   Útry_state_ptrÚ	try_depthr   r   r   s          r   r  zCPUCallConv.check_try_statuså  sƒ   € Ø×+Ò+¨GÑ4Ô4ˆØ—L’L Ñ/Ô/ˆ	à×&Ò& s¨I°y·~²~ÀaÑ7HÔ7HÑIÔIˆà×/Ò/°Ô0@ÑAÔAˆ
Ø—,’,˜zÑ*Ô*ˆå °Ð8Ñ8Ô8Ð8r   c                 óØ   — |                       |¦  «        }|                     |¦  «        }|                     ||                     d¦  «        ¦  «        }|                     ||¦  «         d S ©Nr#   )r‚  rÒ   rH  r5   rˆ   )r(   r=   r…  ÚoldÚnews        r   Úset_try_statuszCPUCallConv.set_try_statusð  s]   € Ø×+Ò+¨GÑ4Ô4ˆà�lŠl˜=Ñ)Ô)ˆØ�kŠk˜#˜sŸxšx¨™{œ{Ñ+Ô+ˆØ�Š�c˜=Ñ)Ô)Ð)Ð)Ð)r   c                 ót  — |                       |¦  «        }|                     |¦  «        }|                     ||                     d¦  «        ¦  «        }|                     ||¦  «         |                      |j        ¦  «        }t          j        |j        j	        ¦  «        }|                     ||¦  «         d S rˆ  )
r‚  rÒ   Úsubr5   rˆ   r÷   rc   r   rÏ   r†   )r(   r=   r…  r‰  rŠ  r   Únulls          r   Úunset_try_statuszCPUCallConv.unset_try_status÷  sž   € Ø×+Ò+¨GÑ4Ô4ˆà�lŠl˜=Ñ)Ô)ˆØ�kŠk˜#˜sŸxšx¨™{œ{Ñ+Ô+ˆØ�Š�c˜=Ñ)Ô)Ð)ð ×/Ò/°Ô0@ÑAÔAˆ
ÝÔ% j¤oÔ&=Ñ>Ô>ˆØ�Š�d˜JÑ'Ô'Ð'Ð'Ð'r   c                 ó\  — |                       |¦  «        }|                      |j        ¦  «        }|                     |j        |¦  «         |                     |                     |j        ¦  «        ¦  «        5  |                      ||j	        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r   )
r  r÷   rc   rˆ   r   r3   r«   r   rE   r   )r(   r=   r^   Ú	trystatusrý   s        r   r    z#CPUCallConv.return_status_propagate  sß   € Ø×)Ò)¨'Ñ2Ô2ˆ	Ø×+Ò+¨GÔ,<Ñ=Ô=ˆØ�Š�fÔ'¨Ñ0Ô0Ð0Ø�_Š_˜WŸ\š\¨)Ô*:Ñ;Ô;Ñ<Ô<ð 	;ð 	;Ø×$Ò$ W¨f¬kÑ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	;ð 	;s   Á8B!Â!B%Â(B%c                 ó0   — |                      |¦  «         d S r   )r£   r¤   s      r   rE   zCPUCallConv._return_errcode_raw  s   € Ø�Š�DÑÔÐÐÐr   c           
      ó  — |                      d|t          ¦  «        }|                      d|t          ¦  «        }|                      d|t          ¦  «        }|                      d|t          ¦  «        }|                     ||¦  «        }|                     |¦  «        }	|                      d|t          ¦  «        }
|                     |
|t          j
        t          t          j        ¦  «        ¦  «        }t          |||	|||
||¬¦  «        }|S )zP
        Given a return *code* and *excinfoptr*, get a Status instance.
        r¦   r§   r¨   )r©   r‰   rF   rI   rL   rª   r«   r¬   Úselectr   r   rq  Ú	Undefinedr   )r(   r=   r   r   r­   r.   rn   r   r®   r¯   r   r^   s               r   r°   zCPUCallConv._get_return_status  sú   € ð ×"Ò" 4¨­zÑ:Ô:ˆØ×"Ò" 4¨­|Ñ<Ô<ˆØ×!Ò! $¨­kÑ:Ô:ˆØ#×/Ò/°°d½NÑKÔKÐØ�[Š[˜˜tÑ$Ô$ˆØ�lŠl˜2ÑÔˆØ×)Ò)¨$°µoÑFÔFˆØ—^’^ K°Ý$&¤Kµ½r¼|Ñ$LÔ$LñNô Nˆ
õ ˜TØ Ø!$Ø&)Ø $Ø$/Ø*;Ø#-ð/ñ /ô /ˆð ˆr   c                 óî   — |                       |¦  «        }t          |j        ¦  «        }|                      |¦  «        }t	          j        t          |t	          j        t          ¦  «        g|z   ¦  «        }|S r²   )	rr   r³   r´   rP   r   rµ   r   ÚPointerTyperq  r¶   s         r   r¹   zCPUCallConv.get_function_type&  sn   € ð ×&Ò& xÑ0Ô0ˆÝ˜Ô.Ñ/Ô/ˆØ×%Ò% gÑ.Ô.ˆÝŒ�yØ &­¬µ}Ñ(EÔ(EÐFØ!)ñ *ñ+ô +ˆð ˆr   Fc                 ó|  — |                       |¦  «        }|                     |                      |¦  «        d„ |D ¦   «         ¦  «         |                      |¦  «        }d|_        |                     d¦  «         |                     d¦  «         |                      |¦  «        }d|_        |                     d¦  «         |                     d¦  «         |rc|                      |¦  «        }|D ]M}t          |j        t          j
        ¦  «        r*|                     d¦  «         |                     d¦  «         ŒLdS dS )zU
        Set names of function arguments, and add useful attributes to them.
        c                 ó   — g | ]}d |z   ‘ŒS r¼   r~   r½   s     r   rÀ   z1CPUCallConv.decorate_function.<locals>.<listcomp>8  rÁ   r   r‹   zcaptures(none)rÆ   r   N)rr   rÂ   rq   rð   rÃ   Úadd_attributer÷   r8   r5   r   r—  )	r(   rÄ   r…   rÅ   rÆ   rw   ÚretargÚexcargr¿   s	            r   rÇ   zCPUCallConv.decorate_function2  sP  € ð ×&Ò& {Ñ3Ô3ˆØ×Ò˜T×/Ò/°Ñ3Ô3Ø7Ð7°$Ð7Ñ7Ô7ñ	9ô 	9ð 	9à×*Ò*¨2Ñ.Ô.ˆØˆŒØ×ÒÐ-Ñ.Ô.Ð.Ø×Ò˜YÑ'Ô'Ð'Ø×+Ò+¨BÑ/Ô/ˆØˆŒØ×ÒÐ-Ñ.Ô.Ð.Ø×Ò˜YÑ'Ô'Ð'àð 	/Ø×%Ò% bÑ)Ô)ˆDØð /ð /�Ý˜aœf¥b¤nÑ5Ô5ð /Ø—O’OÐ$4Ñ5Ô5Ð5Ø—O’O IÑ.Ô.Ð.øð	/ð 	/ð/ð /r   c                 ó    — |j         dd…         S )rÉ   ré   NrÊ   rË   s     r   rq   zCPUCallConv.get_argumentsI  rÌ   r   c                 ó   — |j         d         S r„   rÊ   rË   s     r   rð   z CPUCallConv._get_return_argumentO  ó   € ØŒy˜Œ|Ðr   c                 ó   — |j         d         S rˆ  rÊ   rË   s     r   r÷   z!CPUCallConv._get_excinfo_argumentR  rŸ  r   c                 óŒ  — |                       |¦  «        j        }|                      |j        ¦  «        j        }||k    rd|› d|› �}	t	          |	¦  «        ‚t          j        ||¦  «        }
|                     t          j        |¦  «        |
¦  «         t          j        |t          j
        t          ¦  «        d¬¦  «        }|                      |¦  «        }t          |                     ||¦  «        ¦  «        }|
|g|z   }|€d}nIt          |t           ¦  «        r%t          |t"          ¦  «        st%          |¦  «        }nt'          d¦  «        ‚|                     |||¬¦  «        }|                      |||                     |¦  «        ¦  «        }|                     |
¦  «        }| j                             |||¦  «        }||fS )	aU  
        Call the Numba-compiled *callee*.
        Parameters:
        -----------
        attrs: LLVM style string or iterable of individual attributes, default
               is None which specifies no attributes. Examples:
               LLVM style string: "noinline fast"
               Equivalent iterable: ("noinline", "fast")
        zFunction type returns z but resty=r   )rÃ   Nr~   z,attrs must be an iterable of strings or None)Úattrs)rP   r†   rð   r  Ú
ValueErrorr   rÎ   rˆ   rÏ   r   r—  rp  rr   r³   rÐ   r8   r   r‡   r’   r‘   rÑ   r°   rÒ   r'   rÓ   )r(   r=   rÔ   rÕ   rÖ   r…   r¢  r>   Úactual_rettyÚmr×   r   rw   rØ   Ú_attrsr   r^   rB   rÙ   s                      r   rÚ   zCPUCallConv.call_functionU  s½  € ð ×$Ò$ UÑ+Ô+Ô3ˆØ×0Ò0°Ô1EÑFÔFÔNˆØ�LÒ Ð ØI¨ÐIÐIÀ%ÐIÐIˆAÝ˜Q‘-”-ÐåÔ'¨°Ñ7Ô7ˆ	à�Š•gÔ,¨UÑ3Ô3°YÑ?Ô?Ð?åÔ(¨µ"´.ÅÑ2KÔ2KØ.7ð9ñ 9ô 9ˆ
ð ×&Ò& vÑ.Ô.ˆÝ�G×(Ò(¨°$Ñ7Ô7Ñ8Ô8ˆØ˜zÐ*¨TÑ1ˆð ˆ=ØˆFˆFÝ˜�xÑ(Ô(ð 	Lµ¸EÅ3Ñ1GÔ1Gð 	LÝ˜5‘\”\ˆFˆFåÐJÑKÔKÐKØ�|Š|˜F H°Fˆ|Ñ;Ô;ˆØ×(Ò(¨°$Ø)0¯ª°jÑ)AÔ)AñCô Cˆà—’˜iÑ(Ô(ˆØŒl×-Ò-¨g°u¸fÑEÔEˆØ�sˆ{Ðr   rÛ   ©NNrÜ   r   )r{   r|   r}   rÝ   Ú	itertoolsÚcountÚ_status_idsrU   r7   rò   rÿ   rž   r$  r_   r[  ri  rx  rz  r‚  r  r‹  r�  r    rE   r°   r¹   rÇ   rq   rð   r÷   rÚ   r~   r   r   rí   rí   a  sê  € € € € € ðð ð "�)”/ !Ñ$Ô$€Kðð ð ð6ð 6ð 6ðð ð ð" DHØ&*ð79ð 79ð 79ð 79ðr @DØ"&ð?ð ?ð ?ð ?ð2ð 2ð 2ðhð ð ð0@ð @ð @ðDð ð ð& JNØ'+ð[-ð [-ð [-ð [-ð| 59ð;ð ;ð ;ð ;ðð ð ð	9ð 	9ð 	9ð*ð *ð *ð(ð (ð (ð;ð ;ð ;ðð ð ðð ð ð0
ð 
ð 
ð/ð /ð /ð /ð.ð ð ðð ð ðð ð ð !ð)ð )ð )ð )ð )ð )r   rí   c                   ó   — e Zd Zd„ Zdd„ZdS )Ú
ErrorModelc                 ó   — || _         d S r   )Ú	call_conv)r(   r®  s     r   r)   zErrorModel.__init__ƒ  s   € Ø"ˆŒˆˆr   Nc                 ó\   — | j         r$| j                             |t          ||¦  «         dS dS )NTF)Úraise_on_fp_zero_divisionr®  rž   ÚZeroDivisionError)r(   r=   r—   r˜   s       r   Úfp_zero_divisionzErrorModel.fp_zero_division†  s;   € ØÔ)ð 	ØŒN×*Ò*¨7Õ4EÀxØ+.ñ0ô 0ð 0à�4à�5r   r§  )r{   r|   r}   r)   r²  r~   r   r   r¬  r¬  �  s7   € € € € € ð#ð #ð #ðð ð ð ð ð r   r¬  c                   ó   — e Zd ZdZdZdS )ÚPythonErrorModelzL
    The Python error model.  Any invalid FP input raises an exception.
    TN©r{   r|   r}   rÝ   r°  r~   r   r   r´  r´  �  s"   € € € € € ðð ð !%ÐÐÐr   r´  c                   ó   — e Zd ZdZdZdS )ÚNumpyErrorModela6  
    In the Numpy error model, floating-point errors don't raise an
    exception.  The FPU exception state is inspected by Numpy at the
    end of a ufunc's execution and a warning is raised if appropriate.

    Note there's no easy way to set the FPU exception state from LLVM.
    Instructions known to set an FP exception can be optimized away:
        https://llvm.org/bugs/show_bug.cgi?id=6050
        http://lists.llvm.org/pipermail/llvm-dev/2014-September/076918.html
        http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20140929/237997.html
    FNrµ  r~   r   r   r·  r·  –  s"   € € € € € ð
ð 
ð !&ÐÐÐr   r·  )ÚpythonÚnumpyc                 ó6   — t          |          |j        ¦  «        S )zF
    Create an error model instance for the given target context.
    )Úerror_modelsr®  )Ú
model_namer'   s     r   Úcreate_error_modelr½  «  s   € õ ˜
Ô# GÔ$5Ñ6Ô6Ð6r   )0rÝ   Úcollectionsr   Úcollections.abcr   r¨  r?  Úllvmliter   Ú
numba.corer   r   r   Únumba.core.baser	   r
   r   r   rú   r(  Úint64_tr   r   r‰   rI   rF   rL   rã   r¬   Úobjectr%   r€   r‚   r	  r
  r  r  r'  ro  rp  r—  rq  rí   r¬  r´  r·  r»  r½  r~   r   r   ú<module>rÅ     s  ððð ð #Ð "Ð "Ð "Ð "Ð "Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ø €€€à Ð Ð Ð Ð Ð à -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5ð ˆJ�{ X¨yÐ$9Ñ:Ô:€	ð 
ˆ�Hðñ
ô 
€ð& ˆ"Œ*�R‰.Œ.€Ø
ˆ"Œ*�R‰.Œ.€Ø€	ð(ð (ð (ð ˆZ˜‰]Œ]€
Øˆj˜‰nŒn€Øˆz˜"‰~Œ~€à�˜B‘”€à€à�*˜]Ñ+Ô+€ðk5ð k5ð k5ð k5ð k5�6ñ k5ô k5ð k5ð\zð zð zð zð z�lñ zô zð zðz-*ð -*ð -*ð -*ð -*˜ñ -*ô -*ð -*ðd €ØÐ Ø€Ø€Ø€Ø ˆBÔ Ø�g˜°ÀÐIñKô K€	à�”˜yÑ)Ô)€ð]ð ]ð ]ð ]ð ]�,ñ ]ô ]ð ]ð@ð ð ð ð �ñ ô ð ð%ð %ð %ð %ð %�zñ %ô %ð %ð&ð &ð &ð &ð &�jñ &ô &ð &ð  Øðð €ð7ð 7ð 7ð 7ð 7r   