§
    ƒÛgCj  ã                   óˆ  — d dl mZ d dlZd dlmZmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlmZmZ  edg d	¢¦  «        Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Z G d„ de¦  «        Z ed¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zd„ Zd„ Z G d„ de¦  «        Z G d„ de¦  «        Z  G d„ de¦  «        Z! G d„ d e!¦  «        Z"dS )!é    )Ú
namedtupleN)ÚConstantÚ	IRBuilder)Úir)ÚtypesÚcgutils)Úglobal_compiler_lock)Úmake_library_cacheÚ	NullCacheÚ_wrapper_info©ÚlibraryÚenvÚnamec                 ó$  —  | ¦   «         }|j                              |||	j        |	j        |¦  «        \  }}|                     |j        d¬¦  «        5 \  }}|5   ||¦  «         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   t          ||¦  «        D ]G\  }}| 
                    |                     |                     |¦  «        |j        ¦  «        |¦  «         ŒH| 
                    |                     |                     |¦  «        |j        ¦  «        |¦  «         |j        S ©NT©Úlikely)Ú	call_convÚcall_functionÚreturn_typeÚargsÚif_elseÚis_okÚ
gil_ensureÚraise_errorÚgil_releaseÚzipÚstoreÚaddÚloadÚstepÚcode)r!   r   ÚcontextÚfuncÚbuilderÚarraysÚoutÚoffsetsÚstore_offsetÚ	signatureÚpyapir   ÚelemsÚstatusÚretvalÚif_okÚif_errorÚgilÚoffÚarys                       úM/granary/edev/quantum/lib/python3.11/site-packages/numba/np/ufunc/wrappers.pyÚ_build_ufunc_loop_bodyr6      sG  € àˆD‰FŒF€Eð Ô&×4Ò4°W¸dØ5>Ô5JØ5>´^ÀUñLô L�N€FˆFð
 
�Š˜œ¨dˆÑ	3Ô	3ð #Ñ7H¸¸xØð 	ð 	ØˆE�&‰MŒMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	àð 	#ð 	#Ø×"Ò"Ñ$Ô$ˆCØÔ×)Ò)¨'°5¸&ÑAÔAÐAØ×Ò˜cÑ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #õ ˜ Ñ(Ô(ð Eð E‰ˆˆSØ�Š�g—k’k '§,¢,¨sÑ"3Ô"3°S´XÑ>Ô>ÀÑDÔDÐDÐDà‡M‚M�'—+’+˜gŸlšl¨<Ñ8Ô8¸#¼(ÑCÔCØñ ô  ð  ð Œ;Ðs[   ÁC&ÁA0Á$C&Á0A4	Á4C&Á7A4	Á8C&Á=ACÃC&ÃC	ÃC&ÃC	ÃC&Ã&C*Ã-C*c                 óš  —  | ¦   «         }t           j        gt          |	j        ¦  «        z  }|                     d¬¦  «        5  |j                             ||t           j        ||¦  «        \  }}|D ]}|                     |¦  «         Œ	 d d d ¦  «         n# 1 swxY w Y    ||¦  «         t          ||¦  «        D ]G\  }}| 	                    | 
                    |                     |¦  «        |j        ¦  «        |¦  «         ŒH| 	                    | 
                    |                     |¦  «        |j        ¦  «        |¦  «         |j        S )NT)Úkeep_new)r   ÚpyobjectÚlenr   Úerr_pushr   r   Údecrefr   r   r    r!   r"   r#   )r!   r   r$   r%   r&   r'   r(   r)   r*   r+   r   r,   r-   Ú_objargsr.   r/   Úelemr3   r4   s                      r5   Ú_build_ufunc_loop_body_objmoder?   ,   s�  € ð ˆD‰FŒF€Eõ ”Ð¥# i¤nÑ"5Ô"5Ñ5€Hð 
�Š ˆÑ	&Ô	&ð ð Ø Ô*×8Ò8¸À$Ý9>¼Ø9AÀ5ñJô J‰ˆ�ð ð 	ð 	ˆDØ�LŠL˜ÑÔÐÐð	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð 
€Eˆ&�M„M€Mõ ˜ Ñ(Ô(ð Eð E‰ˆˆSØ�Š�g—k’k '§,¢,¨sÑ"3Ô"3°S´XÑ>Ô>ÀÑDÔDÐDÐDà‡M‚M�'—+’+˜gŸlšl¨<Ñ8Ô8¸#¼(ÑCÔCØñ ô  ð  ð Œ;Ðs   ÁABÂBÂBc
                 ó^   ‡‡‡‡‡— ˆˆˆfd„}
ˆˆˆfd„}t          |
|| |‰‰‰‰‰|||	¬¦  «        S )Nc                  ó@   •— ˆfd„t          ‰‰¦  «        D ¦   «         } | S )Nc                 óf   •— g | ]-\  }}|                      ‰                     |¦  «        ¦  «        ‘Œ.S © ©Úload_directr!   ©Ú.0r3   r4   r&   s      €r5   ú
<listcomp>z6build_slow_loop_body.<locals>.load.<locals>.<listcomp>O   óE   ø€ ð 7ð 7ð 7Ù�S˜#ð —’ §¢¨cÑ!2Ô!2Ñ3Ô3ð 7ð 7ð 7ó    )r   )r-   r'   r&   r)   s    €€€r5   r!   z"build_slow_loop_body.<locals>.loadN   s:   ø€ ð7ð 7ð 7ð 7Ý!$ W¨fÑ!5Ô!5ð7ñ 7ô 7ˆàˆrJ   c                 óZ   •— ‰                      | ‰                     ‰¦  «        ¦  «         d S ©N)Ústore_directr!   )r/   r&   r(   r*   s    €€€r5   r   z#build_slow_loop_body.<locals>.storeS   s+   ø€ Ø×Ò˜ §¢¨lÑ!;Ô!;Ñ<Ô<Ð<Ð<Ð<rJ   ©r   ©r6   )r$   r%   r&   r'   r(   r)   r*   r+   r,   r   r!   r   s     `````     r5   Úbuild_slow_loop_bodyrP   L   s€   øøøøø€ ðð ð ð ð ð ð ð
=ð =ð =ð =ð =ð =ð =õ " $¨¨w¸¸gÀvØ"% w°¸iÈØ&)ð+ñ +ô +ð +rJ   c                 óÆ   ‡‡‡‡‡‡‡‡— |                       ‰|	¦  «        }‰                     |
||	¦  «        Šˆˆˆˆˆˆfd„}ˆˆˆˆˆfd„}t          ||| |‰‰‰‰‰‰|	‰¦  «        S )Nc                  ó„   •— ˆfd„t          ‰‰¦  «        D ¦   «         } ˆˆfd„t          | ‰j        ¦  «        D ¦   «         } | S )Nc                 óf   •— g | ]-\  }}|                      ‰                     |¦  «        ¦  «        ‘Œ.S rC   rD   rF   s      €r5   rH   z5build_obj_loop_body.<locals>.load.<locals>.<listcomp>b   rI   rJ   c                 óD   •— g | ]\  }}‰                      ||‰¦  «        ‘ŒS rC   )Úfrom_native_value)rG   ÚvÚtÚenv_managerr,   s      €€r5   rH   z5build_obj_loop_body.<locals>.load.<locals>.<listcomp>e   s?   ø€ ð 9ð 9ð 9Ù�Q˜ð ×(Ò(¨¨A¨{Ñ;Ô;ð 9ð 9ð 9rJ   )r   r   )r-   r'   r&   rX   r)   r,   r+   s    €€€€€€r5   r!   z!build_obj_loop_body.<locals>.load`   ss   ø€ ð7ð 7ð 7ð 7Ý!$ W¨fÑ!5Ô!5ð7ñ 7ô 7ˆð9ð 9ð 9ð 9ð 9Ý  ¨	¬Ñ7Ô7ð9ñ 9ô 9ˆàˆrJ   c                 ó`  •— t          j        ‰| ¦  «        }‰                     |d¬¦  «        5  ‰                     ‰j        | ¦  «        }|j        �J ‚‰                     |j        ‰                     ‰¦  «        ¦  «         ‰ 	                    | ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r   )
r   Úis_not_nullÚif_thenÚto_native_valuer   ÚcleanuprM   Úvaluer!   r<   )r/   r   Únativer&   r(   r,   r+   r*   s      €€€€€r5   r   z"build_obj_loop_body.<locals>.storei   sí   ø€ ÝÔ# G¨VÑ4Ô4ˆð �_Š_˜U¨4ˆ_Ñ0Ô0ð 	!ð 	!à×*Ò*¨9Ô+@À&ÑIÔIˆFØ”>Ð)Ð)Ð)à×Ò˜Vœ\¨7¯<ª<¸Ñ+EÔ+EÑFÔFÐFà�LŠL˜Ñ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	!ð 	!s   ®A(B#Â#B'Â*B')Úget_env_bodyÚget_env_managerr?   )r$   r%   r&   r'   r(   r)   r*   r+   r,   Úenvptrr   Úenv_bodyr!   r   rX   s     ```````     @r5   Úbuild_obj_loop_bodyrd   [   sÆ   øøøøøøøø€ à×#Ò# G¨VÑ4Ô4€HØ×'Ò'¨¨X°vÑ>Ô>€Kðð ð ð ð ð ð ð ð ð ð!ð !ð !ð !ð !ð !ð !ð !ð !õ *¨$°°wÀÀgØ*0°#°wÀØ*3°V¸UñDô Dð DrJ   c                 óV   ‡‡‡— ˆˆfd„}ˆˆfd„}t          ||| ||‰‰||||	|
¬¦  «        S )Nc                  ó$   •— ˆfd„‰D ¦   «         } | S )Nc                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS rC   )Úload_aligned)rG   r4   Úinds     €r5   rH   z6build_fast_loop_body.<locals>.load.<locals>.<listcomp>~   s7   ø€ ð $ð $ð $Øð ×!Ò! #Ñ&Ô&ð $ð $ð $rJ   rC   )r-   r'   ri   s    €€r5   r!   z"build_fast_loop_body.<locals>.load}   s0   ø€ ð$ð $ð $ð $Ø"ð$ñ $ô $ˆàˆrJ   c                 ó4   •— ‰                      | ‰¦  «         d S rL   )Ústore_aligned)r/   ri   r(   s    €€r5   r   z#build_fast_loop_body.<locals>.store‚   s   ø€ Ø×Ò˜& #Ñ&Ô&Ð&Ð&Ð&rJ   rN   rO   )r$   r%   r&   r'   r(   r)   r*   r+   ri   r,   r   r!   r   s      ``   `    r5   Úbuild_fast_loop_bodyrl   {   st   øøø€ ðð ð ð ð ð ð
'ð 'ð 'ð 'ð 'ð 'õ " $¨¨w¸¸gÀvØ"% w°¸iÈØ&)ð+ñ +ô +ð +rJ   c                 óÜ
  — t          |t          ¦  «        sJ ‚t          j        d¦  «        }t          j        |¦  «        }t          j        |¦  «        }|                     t          j        ¦  «        }	t          j        |	¦  «        }
t          j        t          j	        ¦   «         ||
|
|g¦  «        }| 
                    ¦   «                              d¦  «        }|                     d¦  «        }|rF|j                             t          j        t          j        gt!          |j        ¦  «        z  ¦  «        }n%|j                             |j        |j        ¦  «        }t          j        |||¬¦  «        }|j                             d¦  «         t          j        ||d|j        z   ¦  «        }|j        \  }}}}d|_        d|_        d	|_        d
|_        t/          |                     d¦  «        ¦  «        }|                     |j        ¦  «        }|j        }|                     |                     |j        |¦  «        ¦  «        }|                     |d¬¦  «        }g }t?          |j        ¦  «        D ],\  }}|                      tC          ||||||¦  «        ¦  «         Œ-tC          ||||t!          |¦  «        |j        ¦  «        }g }| "                    t          j        d¦  «        }|D ]B} tG          j$        ||	¦  «        }!|                      |!¦  «         | %                    ||!¦  «         ŒCtG          j$        ||	¦  «        }"| %                    ||"¦  «         tF          j&        }#|D ]}$| '                    |#|$j(        ¦  «        }#Œ| )                    |¦  «        }%|r‡|% *                    ¦   «         }&tG          j+        |||	¬¦  «        5  tY          |||||||"||%||¦  «         ddd¦  «         n# 1 swxY w Y   |% -                    |&¦  «         | .                    ¦   «          �n| /                    |#¦  «        5 \  }'}(|'5  tG          j+        |||	¬¦  «        5 })ta          |||||||"||)j1        |%|¬¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   |(5  tG          j+        |||	¬¦  «        5  te          |||||||"||%|¬¦
  «
         ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   | .                    ¦   «          ~| 3                    |¦  «         | 4                    | ¦  «         tk          |||j        ¬¦  «        S )z�
    Wrap the scalar function with a loop that iterates over the arguments

    Returns
    -------
    (library, env, name)
    é   Úufunc_wrapperÚ ©r   Úalwaysinlinez
__ufunc__.r   ÚdimsÚstepsÚdataÚentryÚ	loopcountr   ©ÚintpNrN   r   )6Ú
isinstanceÚstrr   ÚIntTypeÚPointerTypeÚget_value_typer   ry   ÚFunctionTypeÚVoidTypeÚcodegenÚcreate_libraryÚcreate_ir_moduler   Úget_function_typer9   r:   r   r   ÚFunctionÚ
attributesr    r   r   Úappend_basic_blockÚget_env_nameÚfndescÚenvironmentr!   Údeclare_env_globalÚmoduleÚ	enumerateÚappendÚ	UArrayArgÚget_constantr   Úalloca_oncer   Útrue_bitÚand_Úis_unit_stridedÚget_python_apir   Ú	for_rangerd   r   Úret_voidr   rl   ÚindexrP   Úadd_ir_moduleÚadd_linking_libraryr   )*r   r$   Úfnamer+   ÚobjmodeÚcresÚbyte_tÚ
byte_ptr_tÚbyte_ptr_ptr_tÚintp_tÚ
intp_ptr_tÚfntyÚ
wrapperlibÚwrapper_moduleÚ	func_typer%   ÚwrapperÚarg_argsÚarg_dimsÚ	arg_stepsÚarg_datar&   Úenvnamer   rb   rw   r'   ÚiÚtypr(   r)   ÚzeroÚ_Úpr*   Úunit_stridedr4   r,   r2   r”   Ú
is_stridedÚloops*                                             r5   Úbuild_ufunc_wrapperrµ   Š   sã  € õ �e�SÑ!Ô!Ð!Ð!Ð!ÝŒZ˜‰]Œ]€FÝ” Ñ'Ô'€JÝ”^ JÑ/Ô/€NØ×#Ò#¥E¤JÑ/Ô/€FÝ” Ñ'Ô'€JåŒ?�2œ;™=œ=¨>¸:Ø+5°zð+Cñ Dô D€Dð —’Ñ"Ô"×1Ò1°/ÑBÔB€JØ×0Ò0°Ñ4Ô4€NØð 3ØÔ%×7Ò7ÝŒN�Uœ^Ð,­s°9´>Ñ/BÔ/BÑBñDô Dˆ	ˆ	ð Ô%×7Ò7ØÔ! 9¤>ñ3ô 3ˆ	õ Œ;�~ y°uÐ=Ñ=Ô=€DØ„O×Ò˜Ñ'Ô'Ð'åŒk˜.¨$°¸t¼yÑ0HÑIÔI€GØ.5¬lÑ+€Hˆh˜	 8Ø€H„MØ€H„MØ€I„NØ€H„Må˜×2Ò2°7Ñ;Ô;Ñ<Ô<€Gð ×"Ò" 4¤;Ñ/Ô/€GØ
Ô
€CØ�\Š\˜'×4Ò4°W´^ÀWÑMÔMÑNÔN€Fð —’˜X¨K�Ñ8Ô8€Ið €FÝ˜IœNÑ+Ô+ð Pð P‰ˆˆ3Ø�Š•i ¨°(¸IÀqÈ#ÑNÔNÑOÔOÐOÐOõ �G˜W h°	½3¸v¹;¼;ØÔ)ñ+ô +€Cð €GØ×Ò¥¤
¨AÑ.Ô.€DØð ð ˆÝÔ ¨Ñ0Ô0ˆØ�Š�qÑÔÐØ�Š�d˜AÑÔÐÐåÔ& w°Ñ7Ô7€LØ‡M‚M�$˜Ñ%Ô%Ð%åÔ#€LØð Gð GˆØ—|’| L°#Ô2EÑFÔFˆˆà×"Ò" 7Ñ+Ô+€EØð à×ÒÑ Ô ˆÝÔ˜w¨	¸Ð?Ñ?Ô?ð 	ð 	ÝØ˜˜w¨°°WØ˜i¨°¸ñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð
 	×Ò˜#ÑÔÐØ×ÒÑÔÐÑð �_Š_˜\Ñ*Ô*ð 	Ñ.K¨À
Ø ð ð ÝÔ& w°	ÀÐGÑGÔGð È4Ý(Ø  w°¸¸WØ$ i°´¸UØ"ðñ ô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð ð åÔ& w°	ÀÐGÑGÔGð ð Ý(Ø  w°¸¸WØ$ i°Ø"ðñ ô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð$ 	×ÒÑÔÐØð ×Ò˜^Ñ,Ô,Ð,Ø×"Ò" 7Ñ+Ô+Ð+Ý °¸7¼<ÐHÑHÔHÐHs´   ÏO(Ï(O,Ï/O,Ð3TÐ9RÑ Q=Ñ1RÑ=RÒRÒRÒRÒTÒR	ÒTÒR	ÒTÒ!S6Ò9SÓS6ÓS#Ó#S6Ó&S#Ó'S6Ó*TÓ6S:	Ó:TÓ=S:	Ó>TÔTÔTc                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )r�   c                 ó¾  — || _         || _        || _        | j                              t          j        |¦  «        }| j                             |                     ||g¦  «        ¦  «        }|                     |¦  «        }	| j         	                    ||	 
                    ¦   «         ¦  «        | _        | j                              |	¦  «        }
| j                              t          j        |
¦  «        | _        | j                             ||g¦  «        }| j                             |¦  «        | _        |                     d| j        | j        ¦  «        | _        || _        d S )Nz==)r$   r&   Úfe_typer�   r   ry   r!   ÚgepÚget_data_typeÚbitcastÚ
as_pointerÚdataptrÚget_abi_sizeofÚabisizer"   Úicmp_unsignedr”   )Úselfr$   r&   r   rt   r­   r¸   ÚoffsetÚoffseted_argsÚ	data_typeÚsizeofÚoffseted_steps               r5   Ú__init__zUArrayArg.__init__ú   s$  € ØˆŒØˆŒØˆŒØ”×*Ò*­5¬:°qÑ9Ô9ˆØœ×)Ò)¨'¯+ª+°d¸V¸HÑ*EÔ*EÑFÔFˆØ×)Ò)¨'Ñ2Ô2ˆ	Ø”|×+Ò+¨MØ,5×,@Ò,@Ñ,BÔ,BñDô DˆŒà”×,Ò,¨YÑ7Ô7ˆØ”|×0Ò0µ´¸VÑDÔDˆŒØœ×(Ò(¨°°Ñ9Ô9ˆØ”L×%Ò% mÑ4Ô4ˆŒ	Ø&×4Ò4°TØ59´\À4Ä9ñ Nô  NˆÔàˆŒˆˆrJ   c                 óŽ   — t          j        | j        | j        |¦  «        }| j                             | j        | j        |¦  «        S )zm
        Generic load from the given *byteoffset*.  load_aligned() is
        preferred if possible.
        )r   Úpointer_addr&   r½   r$   Úunpack_valuer¸   )rÁ   Ú
byteoffsetÚptrs      r5   rE   zUArrayArg.load_direct  s:   € õ
 Ô! $¤,°´¸jÑIÔIˆØŒ|×(Ò(¨¬°t´|ÀSÑIÔIÐIrJ   c                 ó�   — | j                              | j        |g¦  «        }| j                             | j         | j        |¦  «        S rL   )r&   r¹   r½   r$   rÊ   r¸   )rÁ   ri   rÌ   s      r5   rh   zUArrayArg.load_aligned  s=   € ð Œl×Ò˜tœ|¨c¨UÑ3Ô3ˆØŒ|×(Ò(¨¬°t´|ÀSÑIÔIÐIrJ   c                 ó”   — t          j        | j        | j        |¦  «        }| j                             | j        | j        ||¦  «         d S rL   )r   rÉ   r&   r½   r$   Ú
pack_valuer¸   )rÁ   r^   rË   rÌ   s       r5   rM   zUArrayArg.store_direct  s@   € ÝÔ! $¤,°´¸jÑIÔIˆØŒ×Ò ¤¨d¬l¸EÀ3ÑGÔGÐGÐGÐGrJ   c                 ó–   — | j                              | j        |g¦  «        }| j                             | j         | j        ||¦  «         d S rL   )r&   r¹   r½   r$   rÏ   r¸   )rÁ   r^   ri   rÌ   s       r5   rk   zUArrayArg.store_aligned  sC   € ØŒl×Ò˜tœ|¨c¨UÑ3Ô3ˆØŒ×Ò ¤¨d¬l¸EÀ3ÑGÔGÐGÐGÐGrJ   N)Ú__name__Ú
__module__Ú__qualname__rÇ   rE   rh   rM   rk   rC   rJ   r5   r�   r�   ù   sm   € € € € € ðð ð ð"Jð Jð JðJð Jð JðHð Hð HðHð Hð Hð Hð HrJ   r�   Úgufc                   óÒ   — e Zd Zd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
d„ Zd	„ Zd
„ Zed„ ¦   «         Zd„ Zd„ Zd„ ZdS )Ú_GufuncWrapperc                 óø   — || _         || _        || _        || _        | j        j        t          j        k    | _        |rt          | j         ¬¦  «        nt          ¦   «         | _        t          |¦  «        | _        dS )a,  
        The *is_parfors* argument is a boolean that indicates if the GUfunc
        being built is to be used as a ParFors kernel. If True, it disables
        the caching on the wrapper as a separate unit because it will be linked
        into the caller function and cached along with it.
        )Úpy_funcN)rØ   r�   ÚsinÚsoutr+   r   r   r9   Úis_objectmodeÚGufWrapperCacher   ÚcacheÚboolÚ
is_parfors)rÁ   rØ   r�   rÙ   rÚ   rÝ   rß   s          r5   rÇ   z_GufuncWrapper.__init__&  so   € ð ˆŒØˆŒ	ØˆŒØˆŒ	Ø!œ^Ô7½5¼>ÒIˆÔàð0•o¨d¬lÐ;Ñ;Ô;Ð;Ý$-¡K¤Kð 	Œ
å˜zÑ*Ô*ˆŒˆˆrJ   c                 ó   — | j         j        S rL   )r�   r   ©rÁ   s    r5   r   z_GufuncWrapper.library6  s   € àŒyÔ Ð rJ   c                 ó   — | j         j        S rL   )r�   Útarget_contextrá   s    r5   r$   z_GufuncWrapper.context:  s   € àŒyÔ'Ð'rJ   c                 ó   — | j         j        S rL   )r$   r   rá   s    r5   r   z_GufuncWrapper.call_conv>  s   € àŒ|Ô%Ð%rJ   c                 ó   — | j         j        S rL   )r�   r+   rá   s    r5   r+   z_GufuncWrapper.signatureB  s   € àŒyÔ"Ð"rJ   c                 ó   — | j         j        S rL   )r�   r‰   rá   s    r5   r‰   z_GufuncWrapper.fndescF  s   € àŒyÔÐrJ   c                 ó   — | j         j        S rL   )r�   rŠ   rá   s    r5   r   z_GufuncWrapper.envJ  s   € àŒyÔ$Ð$rJ   c                 óB  — t          j        d¦  «        }t          j        |¦  «        }t          j        |¦  «        }| j                             t
          j        ¦  «        }t          j        |¦  «        }t          j        t          j        ¦   «         ||||g¦  «        }|S )Nrn   )	r   r|   r}   r$   r~   r   ry   r   r€   )rÁ   rž   rŸ   r    r¡   r¢   r£   s          r5   Ú_wrapper_function_typez%_GufuncWrapper._wrapper_function_typeN  s‚   € Ý”˜A‘”ˆÝ”^ FÑ+Ô+ˆ
Ýœ¨
Ñ3Ô3ˆØ”×,Ò,­U¬ZÑ8Ô8ˆÝ”^ FÑ+Ô+ˆ
åŒ�rœ{™}œ}¨~¸zØ/9¸:ð/Gñ Hô HˆàˆrJ   c                 óÐ  ‡!— | j                              t          j        ¦  «        }|                      ¦   «         }|                     d¦  «        }| j                             | j        j	        | j        j
        ¦  «        }| j        j        }t          j        |||¬¦  «        }|j                             d¦  «         t          j        |||¦  «        }	d|	_        |	j        \  }
}}}d|
_        d|_        d|_        d|_        t'          |	                     d	¦  «        ¦  «        }|                     |d
¬¦  «        }| j                              |¦  «        }t/          ¦   «         }| j        | j        fD ]}|D ]}|t/          |¦  «        z  }ŒŒi }| j        D ]}|D ]}||vrt5          |¦  «        ||<   ŒŒi }|                     ¦   «         D ]X\  }}|                     |                     || j                              t          j        |dz   ¦  «        g¦  «        ¦  «        ||<   ŒYg }t5          | j        ¦  «        t5          | j        ¦  «        z   }t=          t?          | j         j        | j        | j        z   ¦  «        ¦  «        D ]K\  }\  }}tC          | j         ||
||||||¦	  «	        }|t5          |¦  «        z  }| "                    |¦  «         ŒL|                     d¦  «        }|  #                    ||¦  «         tI          j%        |||¬¦  «        5 Š!ˆ!fd„|D ¦   «         }|  &                    ||||¦  «        \  }} tI          j'        || |¦  «         ddd¦  «         n# 1 swxY w Y   | (                    |¦  «         | )                    |¦  «         |  *                    ||¦  «         | +                    ¦   «          | ,                    |¦  «         | -                    | j.        ¦  «         dS )zí
        The LLVM IRBuilder code to create the gufunc wrapper.
        The *library* arg is the CodeLibrary to which the wrapper should
        be added.  The *name* arg is the name of the wrapper function being
        created.
        Ú_gufunc_wrapperrq   rr   Úweak_odrr   rs   rt   ru   rv   rw   é   z.returnrx   c                 óD   •— g | ]}|                      ‰j        ¦  «        ‘ŒS rC   )Úget_array_at_offsetr˜   )rG   Úar´   s     €r5   rH   z1_GufuncWrapper._build_wrapper.<locals>.<listcomp>œ  s)   ø€ ÐFÐFÐF¸!�A×)Ò)¨$¬*Ñ5Ô5ÐFÐFÐFrJ   N)/r$   r~   r   ry   ré   rƒ   r   r„   r‰   ÚrestypeÚargtypesÚllvm_func_namer   r…   r†   r    Úlinkager   r   r   r‡   r!   r•   ÚsetrÙ   rÚ   r:   Úitemsr¹   r�   r�   r   r+   Ú
GUArrayArgrŽ   Úgen_prologuer   r–   Úgen_loop_bodyÚcbranch_or_continueÚbranchÚposition_at_endÚgen_epiloguer—   r™   rš   r   )"rÁ   r   r   r¡   r£   r¥   r¦   r›   r%   r§   r¨   r©   rª   r«   r&   rw   r,   Úunique_symsÚgrpÚsymsÚsym_mapÚsÚsym_dimr­   r'   Ústep_offsetr®   Úsymr4   Úbbreturnr   Ú	innercallÚerrorr´   s"                                    @r5   Ú_build_wrapperz_GufuncWrapper._build_wrapperY  sZ  ø€ ð ”×,Ò,­U¬ZÑ8Ô8ˆØ×*Ò*Ñ,Ô,ˆà ×1Ò1Ð2CÑDÔDˆØ”N×4Ò4°T´[Ô5HØ59´[Ô5IñKô Kˆ	à”Ô*ˆÝŒ{˜>¨9¸5ÐAÑAÔAˆàŒ×Ò˜NÑ+Ô+Ð+Ý”+˜n¨d°DÑ9Ô9ˆð %ˆŒØ29´,Ñ/ˆ�(˜I xØˆŒØˆŒØ ˆ	ŒØˆŒå˜G×6Ò6°wÑ?Ô?Ñ@Ô@ˆØ—L’L °�LÑ<Ô<ˆ	Ø”×+Ò+¨GÑ4Ô4ˆõ ‘e”eˆØ”H˜dœiÐ(ð 	)ð 	)ˆCØð )ð )�Ø�s 4™yœyÑ(��ð)ð ˆØ”Hð 	.ð 	.ˆDØð .ð .�Ø˜GÐ#Ð#Ý!$ W¡¤�G˜A‘Jøð.ð ˆØ—M’M‘O”Oð 	@ð 	@‰DˆAˆqØ Ÿš g§k¢k°(Ø37´<×3LÒ3LÝ6;´jØ67¸!±eñ4=ô 4=ð 3>ñ'?ô '?ñ @ô @ˆG�A‰JˆJð ˆÝ˜$œ(‘m”m¥c¨$¬)¡n¤nÑ4ˆÝ&¥s¨4¬>Ô+>Ø+/¬8°d´iÑ+?ñ(Aô (Añ Bô Bð 	ð 	‰MˆA‰z��Så˜Tœ\¨7°HØ&¨¨;¸¸SÀ'ñKô KˆCà�3˜s™8œ8Ñ#ˆKØ�MŠM˜#ÑÔÐÐà×-Ò-¨iÑ8Ô8ˆð 	×Ò˜' 5Ñ)Ô)Ð)õ Ô˜w¨	¸Ð?Ñ?Ô?ð 	BÀ4ØFÐFÐFÐF¸vÐFÑFÔFˆDØ#×1Ò1°'¸5À$ÈÑMÔMÑˆI�uåÔ'¨°¸ÑAÔAÐAð		Bð 	Bð 	Bñ 	Bô 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bøøøð 	Bð 	Bð 	Bð 	Bð 	�Š�xÑ Ô Ð Ø×Ò Ñ)Ô)Ð)ð 	×Ò˜' 5Ñ)Ô)Ð)à×ÒÑÔÐð 	×Ò˜nÑ-Ô-Ð-Ø×#Ò# D¤LÑ1Ô1Ð1Ð1Ð1s   ÌA MÍMÍMc                 ó&  — | j         rP| j                             ¦   «                              t	          | ¦  «        ¦  «        }|                      ||¦  «         n¹| j                             | j        j	        | j        j
        ¦  «        }|€ˆ| j                             ¦   «                              t	          | ¦  «        ¦  «        }|                     ¦   «          |                      ||¦  «         | j                             | j        j	        |¦  «         |S rL   )rß   r$   r�   r‚   r{   r	  rÝ   Úload_overloadr�   r+   rã   Úenable_object_cachingÚsave_overload©rÁ   Úwrapper_namer¤   s      r5   Ú_compile_wrapperz_GufuncWrapper._compile_wrapper­  sï   € àŒ?ð 	Jàœ×-Ò-Ñ/Ô/×>Ò>½sÀ4¹y¼yÑIÔIˆJà×Ò 
¨LÑ9Ô9Ð9Ð9ð œ×1Ò1Ø”	Ô# T¤YÔ%=ñô ˆJð Ð!à!œ\×1Ò1Ñ3Ô3×BÒBÅ3ÀtÁ9Ä9ÑMÔM�
Ø×0Ò0Ñ2Ô2Ð2à×#Ò# J°Ñ=Ô=Ð=à”
×(Ò(¨¬Ô)<¸jÑIÔIÐIàÐrJ   c                 óx   — d| j         j        z   }|                      |¦  «        }t          || j        |¬¦  «        S )Nz__gufunc__.r   )r‰   Úmangled_namer  r   r   r  s      r5   Úbuildz_GufuncWrapper.buildÅ  sD   € à$ t¤{Ô'?Ñ?ˆØ×*Ò*¨<Ñ8Ô8ˆ
ÝØ D¤H°<ð
ñ 
ô 
ð 	
rJ   c                 ó„  — | j                              ||| j        j        | j        j        |¦  «        \  }}|                     |j        d¬¦  «        5  |                     ¦   «         }| j        j          	                    |||¦  «         | 
                    |¦  «         d d d ¦  «         n# 1 swxY w Y   |j        |j        fS )NFr   )r   r   r+   r   r   r[   Úis_errorr   r$   r   r   r#   )rÁ   r&   r,   r%   r   r.   r/   r2   s           r5   rù   z_GufuncWrapper.gen_loop_bodyÍ  sõ   € Øœ×5Ò5Ø�T˜4œ>Ô5°t´~Ô7JØñô ‰ˆ�ð �_Š_˜Vœ_°Uˆ_Ñ;Ô;ð 	#ð 	#Ø×"Ò"Ñ$Ô$ˆCØŒLÔ"×.Ò.¨w¸¸vÑFÔFÐFØ×Ò˜cÑ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð
 Œ{˜FœOÐ+Ð+s   ÁAB)Â)B-Â0B-c                 ó   — d S rL   rC   ©rÁ   r&   r,   s      r5   rø   z_GufuncWrapper.gen_prologueÙ  ó   € ØˆrJ   c                 ó   — d S rL   rC   r  s      r5   rý   z_GufuncWrapper.gen_epilogueÜ  r  rJ   N)rÑ   rÒ   rÓ   rÇ   Úpropertyr   r$   r   r+   r‰   r   ré   r	  r  r	   r  rù   rø   rý   rC   rJ   r5   rÖ   rÖ   %  s?  € € € € € ð+ð +ð +ð  ð!ð !ñ „Xð!ð ð(ð (ñ „Xð(ð ð&ð &ñ „Xð&ð ð#ð #ñ „Xð#ð ð ð  ñ „Xð ð ð%ð %ñ „Xð%ð	ð 	ð 	ðR2ð R2ð R2ðhð ð ð0 ð
ð 
ñ Ôð
ð
,ð 
,ð 
,ðð ð ðð ð ð ð rJ   rÖ   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )Ú_GufuncObjectWrapperc                 óL   — t          | j        |||| j        |¦  «        \  }}||fS rL   )Ú_prepare_call_to_object_moder$   r+   )rÁ   r&   r,   r%   r   r  r  s          r5   rù   z"_GufuncObjectWrapper.gen_loop_bodyá  s6   € Ý7¸¼Ø8?ÀÈØ8<¼Ø8<ñ>ô >Ñˆ	�5ð ˜%ÐÐrJ   c                 ó8   — |                      ¦   «         | _        d S rL   )r   r2   r  s      r5   rø   z!_GufuncObjectWrapper.gen_prologueè  s   € à×#Ò#Ñ%Ô%ˆŒˆˆrJ   c                 ó:   — |                      | j        ¦  «         d S rL   )r   r2   r  s      r5   rý   z!_GufuncObjectWrapper.gen_epilogueì  s   € à×Ò˜$œ(Ñ#Ô#Ð#Ð#Ð#rJ   N)rÑ   rÒ   rÓ   rù   rø   rý   rC   rJ   r5   r  r  à  sA   € € € € € ð ð  ð  ð&ð &ð &ð$ð $ð $ð $ð $rJ   r  c                 óœ   — |j         }|j        t          j        k    rt          nt
          } || |||||¬¦  «                             ¦   «         S )N)rß   )r+   r   r   r9   r  rÖ   r  )rØ   r�   rÙ   rÚ   rÝ   rß   r+   Úwrapclss           r5   Úbuild_gufunc_wrapperr#  ñ  sZ   € Ø”€IàÔ'­5¬>Ò9Ð9õ $Ð#å"ð ð ˆ7Ø��s˜D %°Jðñ ô ç‚e�g„gðrJ   c           
      óh  — |j         }|                     d¦  «        }|                      t          j        ¦  «        }|                      t          j        ¦  «        }	t          j        |	¦  «        }
|                      t          j        ¦  «        }|                      t          j	        ¦  «        }t          j
        |||
|
|||g¦  «        }t          j        ||d¦  «        }t          j        |t          j        d¦  «        d¬¦  «        }|                     t          j        |¦  «         g }g }t#          t%          ||j        ¦  «        ¦  «        D �]ø\  }\  }}t          j        ||d¬¦  «        }|                     |¦  «         t+          |t          j        ¦  «        �r&|                      |¦  «        } || ||¬¦  «        }t1          |d	¦  «        }t1          ||j        ¦  «        }|                     |                     d
¦  «        ||g¦  «        }|                     |                     d¦  «        ||g¦  «        }|                     |j        |¦  «        }t=          j        tA          |j        ¦  «        ¦  «        }t1          ||j!        ¦  «        }t1          ||j"        ¦  «        }| #                    |||||||g¦  «        } n| $                    ||¦  «        } |                     | |¦  «         |                     | ¦  «         t          j%        || ¦  «        }!|                     |!|¦  «         t          j&        ||!|¦  «         �Œút          j	        gtO          |¦  «        z  }"| j(         )                    ||t          j	        |"|¦  «        \  }#}$|                     |#j*        |¦  «         | +                    |$¦  «         | ,                    |¦  «         | -                    |¦  «         |D ]*}| +                    | .                    |¦  «        ¦  «         Œ+|#j/        }%|%| .                    |¦  «        fS )Nzufunc.core.returnÚnumba_ndarray_newrí   r  rq   T)Úzfill)r^   r   ÚshapeÚstrides)0rŒ   r‡   r~   r   Úint32ry   r   r}   Úvoidptrr9   r   r   Úget_or_insert_functionr‘   r|   r   r’   r�   r   r   rŽ   rz   ÚArrayÚ
make_arrayr   Úndimr¹   Ú_get_ptr_by_namer»   ru   ÚnpÚdtyper{   ÚnumÚitemsizeÚcallrU   Úis_nullrú   r:   r   r   r  r<   rû   rü   r!   r#   )&r$   r&   r,   r%   r+   r   ÚmodÚbb_core_returnÚll_intÚll_intpÚll_intp_ptrÚ
ll_voidptrÚll_pyobjr£   Úfn_array_newÚerror_pointerÚobject_argsÚobject_pointersr­   ÚargÚargtyÚobjptrÚaryclsÚarrayr¯   Úndrs   r(  ru   r1  Útype_numr3  ÚobjÚobj_is_nullÚ
object_sigr.   r/   r  s&                                         r5   r  r  û  sò  € à
Œ.€Cà×/Ò/Ð0CÑDÔD€Nð ×#Ò#¥E¤KÑ0Ô0€FØ×$Ò$¥U¤ZÑ0Ô0€GÝ”. Ñ)Ô)€KØ×'Ò'­¬Ñ6Ô6€JØ×%Ò%¥e¤nÑ5Ô5€HÝŒ?˜8 f¨kØ&1°:Ø&,¨fð&6ñ 7ô 7€Dõ Ô1°#°tØ2EñGô G€Lõ Ô'¨µ´¸A±´ÀWÐMÑMÔM€MØ‡M‚M•'Ô" MÑ2Ô2Ð2ð €KØ€Oå$¥S¨¨y¬~Ñ%>Ô%>Ñ?Ô?ð %Jñ %J‰ˆ‰<ˆC�åÔ$ W¨h¸dÐCÑCÔCˆØ×Ò˜vÑ&Ô&Ð&å�e�Uœ[Ñ)Ô)ñ 	6ð ×'Ò'¨Ñ.Ô.ˆFØ�F˜7 G°3Ð7Ñ7Ô7ˆEå˜F AÑ&Ô&ˆDõ ˜& %¤*Ñ-Ô-ˆBØ—;’;˜u×5Ò5°gÑ>Ô>ÀÀtÀÑMÔMˆDØ—k’k %×"8Ò"8¸Ñ"CÔ"CØ#'¨ ,ñ0ô 0ˆGà—?’? 5¤:¨zÑ:Ô:ˆDÝ”H�S ¤Ñ-Ô-Ñ.Ô.ˆEõ   ¨¬	Ñ2Ô2ˆHÝ ¨¬Ñ7Ô7ˆHð —,’,˜|¨b°$¸ÀØ.6¸ð.Bñ Cô CˆCˆCð ×)Ò)¨%°Ñ5Ô5ˆCà�Š�c˜6Ñ"Ô"Ð"Ø×Ò˜3ÑÔÐå”o g¨sÑ3Ô3ˆØ�Š�k =Ñ1Ô1Ð1ÝÔ# G¨[¸.ÑIÔIÐIÑIõ ”.Ð!¥C¨Ñ$4Ô$4Ñ4€JàÔ&×4Ò4Ø�•u”~ zØñô �N€FˆFð ‡M‚M�&”/ =Ñ1Ô1Ð1ð 
‡L‚L�ÑÔÐà‡N‚N�>Ñ"Ô"Ð"à×Ò˜NÑ+Ô+Ð+ð "ð +ð +ˆØ�Š�W—\’\ &Ñ)Ô)Ñ*Ô*Ð*Ð*à”€IØ�g—l’l =Ñ1Ô1Ð1Ð1rJ   c                   ó   — e Zd Zd„ Zd„ ZdS )r÷   c
           	      ó  ‡	— || _         || _        |                     t          j        |¦  «        }
|                     |                     ||
gd¬¦  «        d¬¦  «        }|| _        |                     ||
gd¬¦  «        }|                     |¦  «        }t          |t          j	        ¦  «        �r| }t          |¦  «        |j        k    rDt          |¦  «        dk    r|j        dk    rn%t          d                     |dz   ¦  «        ¦  «        ‚|j        }ˆ	fd„|D ¦   «         }g }t          |¦  «        D ]f}|                     ||                     t          j        ||z   ¦  «        gd	¬¦  «        }|                     |¦  «        }|                     |¦  «         Œg|rt           nt"          } ||j        |||||¬
¦  «        | _        d S |r&t          d                     ||dz   ¦  «        ¦  «        ‚t)          ||¬¦  «        | _        d S )Nzdata.ptrrq   ru   zcore.step.ptrr   rí   z.type and shape signature mismatch for arg #{0}c                 ó    •— g | ]
}‰|         ‘ŒS rC   rC   )rG   r  r  s     €r5   rH   z'GUArrayArg.__init__.<locals>.<listcomp>{  s   ø€ Ð.Ð.Ð. A�W˜Q”ZÐ.Ð.Ð.rJ   zstep.ptr©r1  r.  Ú	core_stepÚ	as_scalarr'  r(  z2scalar type {0} given for non scalar argument #{1}©r1  Ústride)r$   r&   r�   r   ry   r!   r¹   ru   rz   r,  r:   r.  Ú	TypeErrorÚformatÚrangerŽ   Ú_ArrayAsScalarArgLoaderÚ_ArrayArgLoaderr1  Ú_loaderÚ_ScalarArgLoader)rÁ   r$   r&   r   rt   r­   r  r®   r   r  rÂ   ru   Úcore_step_ptrrO  rP  r.  r'  r(  ÚjÚstepptrr"   Úldclss            `            r5   rÇ   zGUArrayArg.__init__\  sA  ø€ ð ˆŒØˆŒà×%Ò%¥e¤j°!Ñ4Ô4ˆà�|Š|˜GŸKšK¨¨v¨h¸Z˜KÑHÔHØ!'ð ñ )ô )ˆàˆŒ	àŸš E¨F¨8¸/˜ÑJÔJˆØ—L’L Ñ/Ô/ˆ	å�c�5œ;Ñ'Ô'ñ *	IØ ˜ˆIõ �4‰yŒy˜CœHÒ$Ð$Ý�t‘9”9 ’>�> c¤h°!¢m mð å#ð %+ß+1ª6°!°a±%©=¬=ñ:ô :ð :ð ”8ˆDØ.Ð.Ð.Ð.¨Ð.Ñ.Ô.ˆEØˆGå˜4‘[”[ð %ð %�Ø!Ÿ+š+ eØ'.×';Ò';½E¼JØ<GÈ!¹Oñ(Mô (Mð 'Nà+5ð &ñ 7ô 7�ð —|’| GÑ,Ô,�Ø—’˜tÑ$Ô$Ð$Ð$ð "ð*Õ,Ð,å)ð ð !˜5 s¤yØ&*Ø+4Ø+4Ø',Ø)0ð2ñ 2ô 2ˆDŒLˆLˆLð ð DÝð !0ß06²°s¸AÀ¹EÑ0BÔ0BñDô Dð Då+°#¸iÐHÑHÔHˆDŒLˆLˆLrJ   c                 ó\   — | j                              | j        | j        | j        |¬¦  «        S )N)r$   r&   ru   ri   )rX  r!   r$   r&   ru   )rÁ   ri   s     r5   rï   zGUArrayArg.get_array_at_offset—  s0   € ØŒ|× Ò ¨¬¸t¼|Ø&*¤i°Sð !ñ :ô :ð 	:rJ   N)rÑ   rÒ   rÓ   rÇ   rï   rC   rJ   r5   r÷   r÷   [  s6   € € € € € ð9Ið 9Ið 9Iðv:ð :ð :ð :ð :rJ   r÷   c                   ó   — e Zd ZdZd„ Zd„ ZdS )rY  zÊ
    Handle GFunc argument loading where a scalar type is used in the core
    function.
    Note: It still has a stride because the input to the gufunc can be an array
          for this argument.
    c                 ó"   — || _         || _        d S rL   rQ  )rÁ   r1  rR  s      r5   rÇ   z_ScalarArgLoader.__init__¤  s   € ØˆŒ
ØˆŒˆˆrJ   c                 ó  — |                      ||                     || j        ¦  «        g¦  «        }|                     ||                     | j        ¦  «                             ¦   «         ¦  «        }|                     |¦  «        S rL   )r¹   ÚmulrR  r»   rº   r1  r¼   r!   )rÁ   r$   r&   ru   ri   Údptrs         r5   r!   z_ScalarArgLoader.load¨  sp   € à�{Š{˜4 '§+¢+¨c°4´;Ñ"?Ô"?Ð!@ÑAÔAˆØ�Š˜tØ&×4Ò4°T´ZÑ@Ô@×KÒKÑMÔMñOô Oˆà�|Š|˜DÑ!Ô!Ð!rJ   N)rÑ   rÒ   rÓ   Ú__doc__rÇ   r!   rC   rJ   r5   rY  rY  œ  s<   € € € € € ðð ðð ð ð"ð "ð "ð "ð "rJ   rY  c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )rW  zD
    Handle GUFunc argument loading where an array is expected.
    c                 óZ   — || _         || _        || _        || _        || _        || _        d S rL   rN  )rÁ   r1  r.  rO  rP  r'  r(  s          r5   rÇ   z_ArrayArgLoader.__init__µ  s0   € ØˆŒ
ØˆŒ	Ø"ˆŒØ"ˆŒØˆŒ
ØˆŒˆˆrJ   c           
      óF  — t          j        | j        | j        d¬¦  «        }|                     |¦  «        } |||¦  «        }t          j        |||                     | j        |¦  «        ¦  «        }|  	                    ||¦  «        \  }	}
| 
                    |                     | j        ¦  «        ¦  «        }|                     ||                     ||j        j        ¦  «        |	|
|                     t           j        |¦  «        d ¬¦  «         |                     ¦   «         S )NÚA)r1  r.  Úlayout)ru   r'  r(  r3  Úmeminfo)r   r,  r1  r.  r-  r   rÉ   rb  rO  Ú_shape_and_stridesr¾   rº   Úpopulate_arrayr»   ru   Útyper�   ry   Ú	_getvalue)rÁ   r$   r&   ru   ri   ÚarytyprD  rE  Úoffseted_datar'  r(  r3  s               r5   r!   z_ArrayArgLoader.load½  s  € Ý” 4¤:°D´IÀcÐJÑJÔJˆØ×#Ò# FÑ+Ô+ˆà��w Ñ(Ô(ˆÝÔ+¨GØ,0Ø,3¯KªK¸¼Ø8;ñ-=ô -=ñ>ô >ˆð
 ×0Ò0°¸'ÑBÔB‰ˆˆwà×)Ò)¨'×*?Ò*?ÀÄ
Ñ*KÔ*KÑLÔLˆØ×Ò˜uØ$+§O¢O°MØ49´J´Oñ%Eô %Eà%*Ø'.Ø(/×(<Ò(<½U¼ZØ=Eñ)Gô )Gà'+ð 	ñ 	-ô 	-ð 	-ð �ŠÑ Ô Ð rJ   c                 ór   — t          j        || j        ¦  «        }t          j        || j        ¦  «        }||fS rL   )r   Ú
pack_arrayr'  r(  )rÁ   r$   r&   r'  r(  s        r5   rk  z"_ArrayArgLoader._shape_and_stridesÕ  s4   € ÝÔ" 7¨D¬JÑ7Ô7ˆÝÔ$ W¨d¬lÑ;Ô;ˆØ�gˆ~ÐrJ   N)rÑ   rÒ   rÓ   rd  rÇ   r!   rk  rC   rJ   r5   rW  rW  °  sK   € € € € € ðð ðð ð ð!ð !ð !ð0ð ð ð ð rJ   rW  c                   ó   — e Zd ZdZd„ ZdS )rV  z˜
    Handle GUFunc argument loading where the shape signature specifies
    a scalar "()" but a 1D array is used for the type of the core function.
    c                 óâ   — |                      t          j        d¦  «        }|                      t          j        d¦  «        }t          j        ||g¦  «        }t          j        ||g¦  «        }||fS )Nrí   r   )r�   r   ry   r   rr  )rÁ   r$   r&   Úoner¯   r'  r(  s          r5   rk  z*_ArrayAsScalarArgLoader._shape_and_stridesá  sb   € à×"Ò"¥5¤:¨qÑ1Ô1ˆØ×#Ò#¥E¤J°Ñ2Ô2ˆÝÔ" 7¨S¨EÑ2Ô2ˆÝÔ$ W¨t¨fÑ5Ô5ˆØ�gˆ~ÐrJ   N)rÑ   rÒ   rÓ   rd  rk  rC   rJ   r5   rV  rV  Û  s-   € € € € € ðð ð
ð ð ð ð rJ   rV  )#Úcollectionsr   Únumpyr0  Úllvmlite.irr   r   Úllvmliter   Ú
numba.corer   r   Únumba.core.compiler_lockr	   Únumba.core.cachingr
   r   r   r6   r?   rP   rd   rl   rµ   Úobjectr�   rÜ   rÖ   r  r#  r  r÷   rY  rW  rV  rC   rJ   r5   ú<module>r~     s‡  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð à +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø Ð Ð Ð Ð Ð à %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <ð �
˜?Ð,FÐ,FÐ,FÑGÔG€ðð ð ð8ð ð ð@+ð +ð +ðDð Dð Dð@+ð +ð +ðlIð lIð lIð^&Hð &Hð &Hð &Hð &H�ñ &Hô &Hð &HðR %Ð$ UÑ+Ô+€ðxð xð xð xð x�Vñ xô xð xðv$ð $ð $ð $ð $˜>ñ $ô $ð $ð"ð ð ð]2ð ]2ð ]2ð@>:ð >:ð >:ð >:ð >:�ñ >:ô >:ð >:ðB"ð "ð "ð "ð "�vñ "ô "ð "ð((ð (ð (ð (ð (�fñ (ô (ð (ðVð ð ð ð ˜oñ ô ð ð ð rJ   