§
    2@ÄjÇ¢  ã                   óž  — d dl Z d dlZd dlZd dlZd dlmZmZ d dlm	Z	m
Z
mZmZmZ d dlmZmZmZ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 d d	lmZmZ d d
l m!Z! d dlm"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z*  G d„ d¦  «        Z+d„ Z, G d„ de¦  «        Z- G d„ dej.        ej/        e¦  «        Z0e!j1         2                    e0¦  «         dS )é    N)ÚjitÚtypeof)ÚcgutilsÚtypesÚ	serializeÚsigutilsÚerrors)Ú	is_jittedÚoverload_attributeÚoverload_methodÚregister_jitableÚ	intrinsic)Únpydecl)ÚAbstractTemplateÚ	signature)Útuple_setitem)Ú	_internal)Ú	UfuncBaseÚUfuncLowererBase)Úarray_analysis)Úufuncbuilder)Únumpy_support)ÚCallable)Úir)Úglobal_compiler_lockc                   óF   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ ZdS )ÚUfuncAtIteratorNc                 óh   — || _         || _        || _        || _        || _        || _        || _        d S ©N)ÚufuncÚaÚa_tyÚindicesÚ
indices_tyÚbÚb_ty)Úselfr    r!   r"   r#   r$   r%   r&   s           úFC:\Projects\Historical\venv\Lib\site-packages\numba/np/ufunc/dufunc.pyÚ__init__zUfuncAtIterator.__init__   s7   € ØˆŒ
ØˆŒØˆŒ	ØˆŒØ$ˆŒØˆŒØˆŒ	ˆ	ˆ	ó    c                 óÄ   — |                       ||¦  «         | j                             ¦   «         }|                      |||¦  «         | j                             ¦   «          d S r   )Ú_prepareÚindexerÚbegin_loopsÚ_call_ufuncÚ	end_loops)r'   ÚcontextÚbuilderÚloop_indicess       r(   ÚrunzUfuncAtIterator.run$   s[   € Ø�Š�g˜wÑ'Ô'Ð'Ø”|×/Ò/Ñ1Ô1ˆØ×Ò˜ '¨<Ñ8Ô8Ð8ØŒ×ÒÑ Ô Ð Ð Ð r*   c                 ó@   — t          | j        t          j        ¦  «        S r   )Ú
isinstancer$   r   Ú	BaseTuple©r'   s    r(   Úneed_advanced_indexingz&UfuncAtIterator.need_advanced_indexing*   s   € Ý˜$œ/­5¬?Ñ;Ô;Ð;r*   c           	      ó@  — ddl m}m}m}m} | j        | j        }}| j        | j        }
}	 | 	                    t          j        ¦  «        d¦  «        }| j        �t          j        ||¦  «        | _        |                      ¦   «         r=t          j        ||t%          |
¦  «        ¬¦  «        }|
j
        } |||||¦  «        \  }}n|f}|
f} |||||¦  «        \  }}g }t'          |¦  «        D ]V\  }}||         }t)          |t          j        ¦  «        r/  ||¦  «        |||¦  «        }|                     ||||f¦  «         ŒW|r ||||¦  «        }nd} ||||	||||¦  «        | _        | j                             ¦   «          |                      ||¦  «        | _        d S )Nr   )Únormalize_indicesÚFancyIndexerÚ
make_arrayÚget_subspace_shape)Úcount© )Únumba.np.arrayobjr;   r<   r=   r>   r!   r#   r"   r$   Úget_value_typer   Úintpr%   r   Úalloca_once_valueÚb_indicer9   Úunpack_tupleÚlenÚ	enumerater6   ÚArrayÚappendr-   ÚprepareÚ_compile_ufuncÚcres)r'   r1   r2   r;   r<   r=   r>   r!   r#   r"   r$   ÚzeroÚindex_typesÚarray_indicesÚiÚidxtyÚidxÚidx_makeÚsubspace_shape_tuples                      r(   r,   zUfuncAtIterator._prepare-   s6  € ð	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð ”V˜Tœ\ˆ7ˆØœ9 d¤oˆjˆà1ˆw×%Ò%¥e¤jÑ1Ô1°!Ñ4Ô4ˆàŒ6ÐÝ#Ô5°g¸tÑDÔDˆDŒMà×&Ò&Ñ(Ô(ð 
	KÝÔ*¨7°GÝ14°Z±´ðBñ Bô BˆGà$Ô*ˆKØ#4Ð#4°W¸gØ5@À'ñ$Kô $KÑ ˆK˜˜ð �jˆGØ%˜-ˆKØ#4Ð#4°W¸gØ5@À'ñ$Kô $KÑ ˆK˜ð ˆÝ! +Ñ.Ô.ð 	@ð 	@‰HˆAˆuØ˜!”*ˆCÝ˜%¥¤Ñ-Ô-ð @Ø,˜:˜: eÑ,Ô,¨W°g¸sÑCÔC�Ø×$Ò$ a¨¨e°XÐ%>Ñ?Ô?Ð?øàð 	&à"Ð" 7¨G°]ÑCÔCð !Ð ð $&Ð Ø#�| G¨W°d¸AØ$/°Ð:NñPô PˆŒàŒ×ÒÑÔÐØ×'Ò'¨°Ñ9Ô9ˆŒ	ˆ	ˆ	r*   c           	      óæ   — ddl m} t          j        ||j        ¦  «        }t          j        ||j        ¦  «        }|j        }	t          j        |||	|||j        |¦  «        }
 |||||
¦  «        }|
|fS )Nr   )Ú	load_item)	rA   rW   r   rF   ÚshapeÚstridesÚdataÚget_item_pointer2Úlayout)r'   r1   r2   r3   ÚarrayÚarray_tyrW   ÚshapesrY   rZ   ÚptrÚvals               r(   Ú	_load_valzUfuncAtIterator._load_valV   s†   € Ø/Ð/Ð/Ð/Ð/Ð/ÝÔ% g¨u¬{Ñ;Ô;ˆÝÔ& w°´Ñ>Ô>ˆØŒzˆåÔ'¨°¸$ÀÈØ(0¬¸ñGô Gˆàˆi˜ ¨(°CÑ8Ô8ˆØ�Cˆxˆr*   c                 óx  — |                      |¦  «        }|                     |t          j        ¦  «        }|                     t
          j        |¦  «        } ||||f¦  «        }	 |                     t          j        ¦  «        d¦  «        }
|                     ||
¦  «        }| 	                    ||¦  «         d |	fS )Né   )
ÚloadÚdtyper   rC   Úget_functionÚoperatorÚgetitemrB   ÚaddÚstore)r'   r1   r2   r#   r]   r^   rS   ÚsigÚimplra   Úones              r(   Ú
_load_flatzUfuncAtIterator._load_flata   s§   € Ø�lŠl˜7Ñ#Ô#ˆØ�nŠn˜X¥u¤zÑ2Ô2ˆØ×#Ò#¥HÔ$4°cÑ:Ô:ˆØˆd�7˜U C˜LÑ)Ô)ˆð 1ˆg×$Ò$¥U¤ZÑ0Ô0°Ñ3Ô3ˆØ�kŠk˜#˜sÑ#Ô#ˆØ�Š�c˜7Ñ#Ô#Ð#à�SˆyÐr*   c                 ó�   — ddl m} | j        j        j        }|j        }	|                     ||||	¦  «        } ||||||¦  «         d S )Nr   )Ú
store_item)rA   rq   rM   r   Úreturn_typerf   Úcast)
r'   r1   r2   r]   r^   r`   ra   rq   ÚfromtyÚtotys
             r(   Ú
_store_valzUfuncAtIterator._store_valn   s]   € Ø0Ð0Ð0Ð0Ð0Ð0Ø”Ô$Ô0ˆØŒ~ˆØ�lŠl˜7 C¨°Ñ6Ô6ˆØˆ
�7˜G X¨s°CÑ8Ô8Ð8Ð8Ð8r*   c                 óä   — | j         j        d         }| j        €| j        j        f}n| j        j        | j        j        f}|                     |¦  «        }|                     |j        f¦  «         |S ©Nr   )	r    Úkeyr%   r"   rf   r&   rj   Úadd_linking_libsÚlibrary)r'   r1   r2   r    rl   rM   s         r(   rL   zUfuncAtIterator._compile_ufuncu   sc   € Ø”
”˜qÔ!ˆàŒ6ˆ>Ø”9”?Ð$ˆCˆCà”9”? D¤I¤OÐ4ˆCà�yŠy˜‰~Œ~ˆØ× Ò  $¤, Ñ1Ô1Ð1Øˆr*   c                 ó`  — | j         }| j        | j        }}|                      |||||¦  «        \  }}| j        €|f}	n5| j        | j        | j        }}}
|                      ||||
|¦  «        \  }}||f}	|                     ||j	        |j
        |	¦  «        }|                      ||||||¦  «         d S r   )rM   r!   r"   rb   r%   r&   rE   ro   Úcall_internalÚfndescr   rv   )r'   r1   r2   r3   rM   r!   r"   r`   ra   Úargsr%   r&   Úb_idxÚ_Úval_bÚress                   r(   r/   zUfuncAtIterator._call_ufunc�   sÀ   € ØŒyˆØ”&˜$œ)ˆ4ˆà—>’> '¨7°LÀ!ÀTÑJÔJ‰ˆˆSàŒ6ˆ>Ø�6ˆDˆDà!œV T¤Y°´�UˆtˆAØ—’ w°¸ÀÀ4ÑHÔH‰HˆAˆuØ˜�<ˆDà×#Ò# G¨T¬[¸$¼.Ø$(ñ*ô *ˆà�Š˜ ¨!¨T°3¸Ñ<Ô<Ð<Ð<Ð<r*   ©NN)Ú__name__Ú
__module__Ú__qualname__r)   r4   r9   r,   rb   ro   rv   rL   r/   r@   r*   r(   r   r      s¡   € € € € € ðð ð ð ð!ð !ð !ð<ð <ð <ð':ð ':ð ':ðR	ð 	ð 	ðð ð ð9ð 9ð 9ð
ð 
ð 
ð=ð =ð =ð =ð =r*   r   c                 ór   ‡ — ddl m}  G ˆ fd„d|j        ¦  «        }|xj        ‰ j        j        z  c_        |S )Nr   ©Únpyimplc                   ó(   •‡ — e Zd ZdZ”Zˆ fd„Zˆ xZS )ú(make_dufunc_kernel.<locals>.DUFuncKernelzÉ
        npyimpl._Kernel subclass responsible for lowering a DUFunc kernel
        (element-wise function) inside a broadcast loop (which is
        generated by npyimpl.numpy_ufunc_kernel()).
        c                 ó¦   •— t          ¦   «                              |||¦  «         | j                             |j        ¦  «        \  | _        | _        d S r   )Úsuperr)   ÚdufuncÚfind_ewise_functionr   Ú	inner_sigrM   )r'   r1   r2   Ú	outer_sigÚ	__class__s       €r(   r)   z1make_dufunc_kernel.<locals>.DUFuncKernel.__init__ž   sH   ø€ Ý‰GŒG×Ò˜W g¨yÑ9Ô9Ð9Ø(,¬×(GÒ(GØ”ñ) ô ) Ñ%ˆDŒN˜DœI˜I˜Ir*   )r…   r†   r‡   Ú__doc__r�   r)   Ú__classcell__)r“   Ú_dufuncs   @€r(   ÚDUFuncKernelrŒ   –   sJ   øø€ € € € € ð	ð 	ð
 ˆð	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 r*   r—   )Únumba.nprŠ   Ú_Kernelr…   r    )r–   rŠ   r—   s   `  r(   Úmake_dufunc_kernelrš   “   sl   ø€ Ø Ð Ð Ð Ð Ð ð ð  ð  ð  ð  ð  ð  �w”ñ  ô  ð  ð ÐÔ˜Wœ]Ô3Ñ3ÐÔØÐr*   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚDUFuncLowererzHCallable class responsible for lowering calls to a specific DUFunc.
    c                 ón   •— ddl m} t          ¦   «                              |t          |j        ¦  «         d S )Nr   r‰   )r˜   rŠ   rŽ   r)   rš   Únumpy_ufunc_kernel)r'   r�   rŠ   r“   s      €r(   r)   zDUFuncLowerer.__init__ª   sF   ø€ Ø$Ð$Ð$Ð$Ð$Ð$Ý‰Œ×Ò˜Ý+Ø Ô3ñ	5ô 	5ð 	5ð 	5ð 	5r*   )r…   r†   r‡   r”   r)   r•   ©r“   s   @r(   rœ   rœ   §   sB   ø€ € € € € ðð ð5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5r*   rœ   c                   ó”  ‡ — e Zd ZdZ ed¦  «        Zd"d„Zˆ fd„Zd„ Ze	d„ ¦   «         Z
d	„ Zed
„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zˆ fd„Zd„ Zed#d„¦   «         Zd„ Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Z d#ˆ fd„	Z!d#d„Z"d „ Z#d!„ Z$ˆ xZ%S )%ÚDUFuncz¹
    Dynamic universal function (DUFunc) intended to act like a normal
    Numpy ufunc, but capable of call-time (just-in-time) compilation
    of fast loops specialized to inputs.
    )ÚidentityÚ
_keepaliveÚninÚnoutNFc                 ó  — |€i }t          |¦  «        r|j        }t          j        ¦   «         5   t	          dd|dœ|¤Ž|¦  «        }d d d ¦  «         n# 1 swxY w Y   |                      ||¦  «         t          j        | |¦  «         d S )NÚnpyufunc)Ú_targetÚcacher@   )r
   Úpy_funcr   Ú3_suppress_deprecation_warning_nopython_not_suppliedr   Ú_initializeÚ	functoolsÚupdate_wrapper)r'   rª   r¢   r©   ÚtargetoptionsÚ
dispatchers         r(   r)   zDUFunc.__init__»   sð   € ØÐ ØˆMÝ�WÑÔð 	&Ø”oˆGÝÔMÑOÔOð 	7ð 	7ð.�ð . ZØ#(ð.ð .à,ð.ð .à.5ñ7ô 7ˆJð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð 	×Ò˜ XÑ.Ô.Ð.ÝÔ   wÑ/Ô/Ð/Ð/Ð/s   ®AÁAÁAc                 ój  •— t          j        |¦  «        }t          t          | ¦  «                             ||¬¦  «         |t
          j        k    | _        |j        j	        | _	        |j        j
        | _
        t          | ¦  «        | _        |                      ¦   «          |                      ¦   «          d S )N)r¢   )r   Úparse_identityrŽ   r¡   r)   r   ÚPyUFunc_NoneÚreorderablerª   r…   r”   rœ   Ú	_lower_meÚ_install_cgÚ_install_type)r'   r°   r¢   r“   s      €r(   r¬   zDUFunc._initializeÇ   s›   ø€ ÝÔ.¨xÑ8Ô8ˆÝ�f�dÑÔ×$Ò$ Z¸(Ð$ÑCÔCÐCð %­	Ô(>Ò>ˆÔØ"Ô*Ô3ˆŒØ!Ô)Ô1ˆŒÝ& tÑ,Ô,ˆŒØ×ÒÑÔÐØ×ÒÑÔÐÐÐr*   c                 óœ   — t          | j        j                             ¦   «         ¦  «        }t	          | j        | j        | j        |¬¦  «        S )ú4
        NOTE: part of ReduceMixin protocol
        )r°   r¢   ÚfrozenÚsiglist)ÚlistÚ_dispatcherÚ	overloadsÚkeysÚdictr¢   Ú_frozen)r'   r»   s     r(   Ú_reduce_stateszDUFunc._reduce_statesÓ   sM   € õ �tÔ'Ô1×6Ò6Ñ8Ô8Ñ9Ô9ˆÝØÔ'Ø”]Ø”<Øð	
ñ 
ô 
ð 	
r*   c                 óÐ   — t           j                             | ¦  «        }|                     ||¦  «         |D ]}|                     |¦  «         Œ|r|                     ¦   «          |S )r¹   )r   Ú_DUFuncÚ__new__r¬   rj   Údisable_compile)Úclsr°   r¢   rº   r»   r'   rl   s          r(   Ú_rebuildzDUFunc._rebuildß   so   € õ
 Ô ×(Ò(¨Ñ-Ô-ˆØ×Ò˜ XÑ.Ô.Ð.àð 	ð 	ˆCØ�HŠH�S‰MŒMˆMˆMØð 	#Ø× Ò Ñ"Ô"Ð"Øˆr*   c                 ó   — | S )zK
        For compatibility with the various *UFuncBuilder classes.
        r@   r8   s    r(   Úbuild_ufunczDUFunc.build_ufuncí   s	   € ð ˆr*   c                 ó   — | j         j        S r   )r½   r¯   r8   s    r(   r¯   zDUFunc.targetoptionsó   s   € àÔÔ-Ð-r*   c                 ó   — | j         j        S r   )r    r¤   r8   s    r(   r¤   z
DUFunc.nin÷   s   € àŒzŒ~Ðr*   c                 ó   — | j         j        S r   )r    r¥   r8   s    r(   r¥   zDUFunc.noutû   s   € àŒzŒÐr*   c                 ó   — | j         j        S r   )r    Únargsr8   s    r(   rÏ   zDUFunc.nargsÿ   ó   € àŒzÔÐr*   c                 ó   — | j         j        S r   )r    Úntypesr8   s    r(   rÒ   zDUFunc.ntypes  s   € àŒzÔ Ð r*   c                 ó   — | j         j        S r   )r    r   r8   s    r(   r   zDUFunc.types  rÐ   r*   c                 ó   — | j         j        S r   )r    r¢   r8   s    r(   r¢   zDUFunc.identity  s   € àŒzÔ"Ð"r*   c                 ó   — | j         j        S r   )r    r   r8   s    r(   r   zDUFunc.signature  s   € àŒzÔ#Ð#r*   c                 óR   — t          | j        j        ¦  «        dk    sJ ‚d| _        dS )zI
        Disable the compilation of new signatures at call time.
        r   TN)rG   r½   r¾   rÁ   r8   s    r(   rÆ   zDUFunc.disable_compile  s.   € õ
 �4Ô#Ô-Ñ.Ô.°Ò2Ð2Ð2Ð2ØˆŒˆˆr*   c                 ó\   — t          j        |¦  «        \  }}|                      ||¦  «        S )z=
        Compile the DUFunc for the given signature.
        )r   Únormalize_signatureÚ_compile_for_argtys)r'   rl   r   rr   s       r(   rj   z
DUFunc.add  s/   € õ %Ô8¸Ñ=Ô=ÑˆˆkØ×'Ò'¨¨kÑ:Ô:Ð:r*   c                 ó.  •— t           j        j        j        }|t	          |                     ¦   «         ¦  «        z   D ]A}t          t          |¦  «        d|¦  «        |ur |j        | dg|¢R i |¤Ž}|t          ur|c S ŒB t          ¦   «         j
        |i |¤ŽS )z}
        Allow any argument that has overridden __array_ufunc__ (NEP-18)
        to take control of DUFunc.__call__.
        Ú__array_ufunc__Ú__call__)r   ÚnpÚndarrayrÛ   ÚtupleÚvaluesÚgetattrÚtypeÚNotImplementedrŽ   rÜ   )r'   r   ÚkwsÚdefaultÚargÚoutputr“   s         €r(   rÜ   zDUFunc.__call__"  sª   ø€ õ
  Ô"Ô*Ô:ˆà�% §
¢
¡¤Ñ-Ô-Ñ-ð 	2ð 	2ˆCÝ•t˜C‘y”yÐ"3°WÑ=Ô=ÀWÐLÐLØ,˜Ô,¨T°:ÐLÀÐLÐLÐLÈÐLÐL�Ø¥Ð/Ð/Ø!�M�M�Møà#•5‘7”7Ô# TÐ1¨SÐ1Ð1Ð1r*   c           	      óJ  — | j         j        }|r]d|v r|                     d¦  «        }||fz  }|r<t          dd                     d„ t          |¦  «        D ¦   «         ¦  «        z  ¦  «        ‚t          |¦  «        }||k    s||| j         j        z   k    sJ ‚|rJ ‚g }|d |…         D ]\}t          |¦  «        }t          |t          j        ¦  «        r|j        }nt          j        |¦  «        }|                     |¦  «         Œ]|                      t#          |¦  «        ¦  «        S )NÚoutz)unexpected keyword arguments to ufunc: %sz, c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   )Úrepr)Ú.0Úks     r(   ú	<genexpr>z+DUFunc._compile_for_args.<locals>.<genexpr>9  s(   è è € Ð+IÐ+I¸­D°©G¬GÐ+IÐ+IÐ+IÐ+IÐ+IÐ+Ir*   )r    r¤   ÚpopÚ	TypeErrorÚjoinÚsortedrG   r¥   r   r6   r   rI   rf   r   Úmap_arrayscalar_typerJ   rÙ   rß   )	r'   r   rä   r¤   ré   Úargs_lenÚargtysræ   Úargtys	            r(   Ú_compile_for_argszDUFunc._compile_for_args1  s@  € ØŒjŒnˆØð 	KØ˜ˆ|ˆ|Ø—g’g˜e‘n”n�Ø˜˜‘�Øð KÝÐ KØ"&§)¢)Ð+IÐ+I½VÀC¹[¼[Ð+IÑ+IÔ+IÑ"IÔ"Iñ!Jñ Kô Kð Kõ �t‘9”9ˆØ˜C’� X°°t´z´Ñ1FÒ%FÐ%FÐ%FÐGØˆˆˆwØˆØ˜˜˜”:ð 	!ð 	!ˆCÝ˜3‘K”KˆEÝ˜%¥¤Ñ-Ô-ð @Øœ��õ &Ô:¸3Ñ?Ô?�Ø�MŠM˜%Ñ Ô Ð Ð Ø×'Ò'­¨f©¬Ñ6Ô6Ð6r*   c                 ó¢  — | j         rt          d| ›�¦  «        ‚t          |t          ¦  «        sJ ‚|€|}n ||Ž }| j        j                             ¦   «         D ]9\  }}||j        k    r)d|› d�}t          j	        |t          j        ¦  «         |c S Œ:t          j        | j        | j        |¦  «        \  }}}t          j        |||¦  «        }t          j        ||¦  «        \  }}	}
|                      t%          |	¦  «        |¦  «         | j                             |	|j        |
f¦  «         | j        j                             |j        ¦  «         |S )a/  
        Given a tuple of argument types (these should be the array
        dtypes, and not the array types themselves), compile the
        element-wise function for those inputs, generate a UFunc loop
        wrapper, and register the loop with the Numpy ufunc object for
        this DUFunc.
        úcompilation disabled for Nz>Compilation requested for previously compiled argument types (z~). This has no effect and perhaps indicates a bug in the calling code (compiling a ufunc more than once for the same signature)rÁ   ÚRuntimeErrorr6   rß   r½   r¾   Úitemsr   ÚwarningsÚwarnr	   ÚNumbaWarningr   Ú_compile_element_wise_functionr¯   Ú_finalize_ufunc_signatureÚ!_build_element_wise_ufunc_wrapperÚ	_add_loopÚintr£   rJ   r{   rµ   Úlibs)r'   rõ   rr   rl   rí   rM   ÚmsgÚ
actual_sigÚ	dtypenumsr`   Úenvs              r(   rÙ   zDUFunc._compile_for_argtysP  s  € ð Œ<ð 	HÝ�,ÀÀÐFÑGÔGÐGÝ˜&¥%Ñ(Ô(Ð(Ð(Ð(ØÐØˆCˆCà�+˜vÐ&ˆCàÔ'Ô1×7Ò7Ñ9Ô9ð 	ð 	‰GˆAˆtØ˜œÒÐðEØ"(ðEð Eð E�õ ”˜c¥6Ô#6Ñ7Ô7Ð7Ø���ð  õ %1Ô$OØÔ˜dÔ0°#ñ%7ô %7Ñ!ˆˆf�kå!Ô;Ø�&˜+ñ'ô 'ˆ
å*ÔLØ�*ñô Ñˆ	�3˜à�Š•s˜3‘x”x Ñ+Ô+Ð+ØŒ×Ò  T¤\°3Ð7Ñ8Ô8Ð8ØŒÔ×"Ò" 4¤<Ñ0Ô0Ð0Øˆr*   c                 ó   — |j         |k    S r   )r   )r'   Úewise_typesrl   s      r(   Úmatch_signaturezDUFunc.match_signatureu  s   € ØŒx˜;Ò&Ð&r*   Úreturnc                 ó¨   — dt           dt          fd„}t          j        |¦  «        }d}|D ]&} ||¦  «        } t	          ||¦  «        |¦  «         Œ'd S )NÚattrr  c                 ó   ‡ — ˆ fd„}|S )Nc                 óF   •‡— t          | j        d         ‰¦  «        Šˆfd„S )Nr   c                 ó   •— ‰S r   r@   )r    ra   s    €r(   ú<lambda>zUDUFunc._install_ufunc_attributes.<locals>.get_attr_fn.<locals>.impl.<locals>.<lambda>~  s   ø€  S€ r*   )rá   ry   )r    ra   r  s    @€r(   rm   zCDUFunc._install_ufunc_attributes.<locals>.get_attr_fn.<locals>.impl|  s(   øø€ Ý˜eœi¨œl¨DÑ1Ô1�Ø(Ð(Ð(Ð(Ð(r*   r@   )r  rm   s   ` r(   Úget_attr_fnz5DUFunc._install_ufunc_attributes.<locals>.get_attr_fnz  s#   ø€ ð)ð )ð )ð )ð )ð ˆKr*   )r¤   r¥   rÏ   r¢   r   )Ústrr   r   ÚFunctionr   )r'   Útemplater  ÚatÚ
attributesr  Úattr_fns          r(   Ú_install_ufunc_attributesz DUFunc._install_ufunc_attributesx  s‚   € ð	�cð 	¥hð 	ð 	ð 	ð 	õ Œ^˜HÑ%Ô%ˆð/ˆ
àð 	2ð 	2ˆDØ!�k $Ñ'Ô'ˆGØ(Õ˜r 4Ñ(Ô(¨Ñ1Ô1Ð1Ð1ð	2ð 	2r*   c                 ó„   — |                       |¦  «         |                      |¦  «         |                      |¦  «         d S r   )Ú_install_ufunc_reduceÚ_install_ufunc_reduceatÚ_install_ufunc_at)r'   r  s     r(   Ú_install_ufunc_methodszDUFunc._install_ufunc_methods�  sD   € Ø×"Ò" 8Ñ,Ô,Ð,Ø×$Ò$ XÑ.Ô.Ð.Ø×Ò˜xÑ(Ô(Ð(Ð(Ð(r*   c                 óh   ‡ — t          j        |¦  «        }t          |d¦  «        dˆ fd„	¦   «         }d S )Nr  c                 óÚ  •‡ ‡‡‡‡— t          j        dt          j        ¬¦  «         t	          |t
          j        ¦  «        sd}t          j        |¦  «        ‚t	          |t
          j        ¦  «        }t	          |t
          j        ¦  «        }t	          |t
          j	        ¦  «        }t	          |t
          j
        ¦  «        }|p|p| }	|ot          |¦  «        dk    }
t	          |t
          j        t
          j        t
          j        t
          j	        f¦  «        }t          j        |¦  «        Š|p‰ }t          |g¦  «        }‰j        j        }|dk    r(t          j        |¦  «        rt          j        d¦  «        ‚|dk    r*t          j        |¦  «        sd}t          j        |¦  «        ‚t          j        |¦  «        r‰                     |j        f¦  «         n@|r‰                     |j        |f¦  «         n!‰                     |j        |j        f¦  «         ˆ fd	„Št*          ˆfd
„¦   «         Št*          ˆfd„¦   «         Šdˆfd„	}dˆˆˆfd„	}dd„}dˆfd„	}|r|S |
r|r|S |	r|r|S |S )Nz ufunc.at feature is experimental©Úcategoryz)The first argument "a" must be array-liker   é   zsecond operand needed for ufuncrd   z+second operand provided when ufunc is unaryc           	      ó  •— ddl m} t          |¦  «        dk    r|j        \  }}}}|\  }}	}
}n|j        dz   \  }}}}|dz   \  }}	}
}  ||¦  «        | ||	¦  «        }	t	          ‰|	||
|||¦  «        }|                     | |¦  «         d S )Nr   )r=   é   r   )rA   r=   rG   r   r   r4   )r1   r2   rl   r   r=   r�   ÚatyrR   Úbtyr!   r#   r%   Úat_iterr    s                €r(   Úapply_ufunc_codegenzDDUFunc._install_ufunc_at.<locals>.ol_at.<locals>.apply_ufunc_codegen¼  s¹   ø€ Ø8Ð8Ð8Ð8Ð8Ð8å�t‘9”9 ’>�>Ø),¬Ñ&�A�s˜E 3Ø'+Ñ$�A�q˜' 1 1à),¬°GÑ);Ñ&�A�s˜E 3Ø'+¨g¡~Ñ$�A�q˜' 1à#�J�J˜s‘O”O G¨W°aÑ8Ô8�Ý)¨%°°C¸À%ÈÈCÑPÔP�Ø—’˜G WÑ-Ô-Ð-Ð-Ð-r*   c                 ó:   •— t          j        ||||¦  «        }|‰fS r   ©r   Únone)Ú	typingctxr    r!   r#   r%   rl   r*  s         €r(   Úapply_a_b_ufuncz@DUFunc._install_ufunc_at.<locals>.ol_at.<locals>.apply_a_b_ufuncÊ  s$   ø€ å”j ¨¨7°AÑ6Ô6�ØÐ/Ð/Ð/r*   c                 ó8   •— t          j        |||¦  «        }|‰fS r   r,  )r.  r    r!   r#   rl   r*  s        €r(   Úapply_a_ufuncz>DUFunc._install_ufunc_at.<locals>.ol_at.<locals>.apply_a_ufuncÏ  s"   ø€ å”j ¨¨7Ñ3Ô3�ØÐ/Ð/Ð/r*   c                 óÎ   •— ‰r(|                       |t          j        |¦  «        ¦  «        S |                       |t          j        |¦  «        t          j        |¦  «        ¦  «        S r   )r  rÝ   Úasarray©r    r!   r#   r%   Úb_nones       €r(   Ú	impl_castz:DUFunc._install_ufunc_at.<locals>.ol_at.<locals>.impl_castÔ  sY   ø€ Øð 3Ø Ÿ8š8 A¥r¤z°'Ñ':Ô':Ñ;Ô;Ð;à Ÿ8š8 AÝ$&¤J¨wÑ$7Ô$7Ý$&¤J¨q¡M¤Mñ3ô 3ð 3r*   c                 ó¼   •— ‰r ‰| ||¦  «         d S t          j        |¦  «        }||         }t          j        ||j        ¦  «        } ‰| |||j        ¦  «         d S r   )rÝ   r3  Úbroadcast_torX   Úflat)	r    r!   r#   r%   Úb_Úa_r/  r1  r5  s	         €€€r(   Úimpl_genericz=DUFunc._install_ufunc_at.<locals>.ol_at.<locals>.impl_genericÜ  sm   ø€ Øð @Ø!�M %¨¨GÑ5Ô5Ð5Ð5Ð5åœ A™œ�BØ˜7œ�BÝœ¨¨R¬XÑ6Ô6�BØ#�O E¨1¨g°r´wÑ?Ô?Ð?Ð?Ð?r*   c                 ó0   —  | |d         |¦  «        |d<   d S )Nr@   r@   )r    r!   r#   r%   s       r(   Úimpl_indices_empty_b_scalarzLDUFunc._install_ufunc_at.<locals>.ol_at.<locals>.impl_indices_empty_b_scalarå  s   € Ø˜˜a œe Q™œ��"‘��r*   c                 ób   •— ‰r | ||         ¦  «        ||<   d S  | ||         |¦  «        ||<   d S r   r@   r4  s       €r(   Úimpl_scalar_scalarzCDUFunc._install_ufunc_at.<locals>.ol_at.<locals>.impl_scalar_scalarè  sC   ø€ Øð 6Ø!&  q¨¤zÑ!2Ô!2�A�g‘J�J�Jà!&  q¨¤z°1Ñ!5Ô!5�A�g‘J�J�Jr*   r   )rü   rý   r	   ÚNumbaExperimentalFeatureWarningr6   r   rI   ÚNumbaTypeErrorÚListÚTupleÚ	SliceTyperG   ÚSequencer   Úis_nonelikeÚanyr    r¤   ÚTypingErrorrj   rf   r   )r    r!   r#   r%   r  Úindices_arrÚindices_listÚindices_tupleÚindices_sliceÚindices_scalarÚindices_empty_tupleÚb_arrayÚb_scalarÚ	need_castr¤   r6  r<  r>  r@  r/  r1  r*  r5  r'   s   `                  @@@@€r(   Úol_atz'DUFunc._install_ufunc_at.<locals>.ol_at•  s  øøøøøø€ åŒMÐ<Ý#)Ô#IðKñ Kô Kð Kõ ˜a¥¤Ñ-Ô-ð 1ØA�ÝÔ+¨CÑ0Ô0Ð0å$ W­e¬kÑ:Ô:ˆKÝ% g­u¬zÑ:Ô:ˆLÝ& wµ´Ñ<Ô<ˆMÝ& wµ´Ñ@Ô@ˆMØ"-Ð"O°Ð"OÀ-ÐPˆNØ"/Ð"EµC¸±L´LÀAÒ4EÐÝ  ¥U¤[µ%´.Å%Ä*Ý%*¤[ð%2ñ 3ô 3ˆGåÔ(¨Ñ+Ô+ˆFØ#Ð- vÐ.ˆHÝ˜\˜NÑ+Ô+ˆIà”*”.ˆCð �aŠxˆx�GÔ/°Ñ2Ô2ˆxÝÔ(Ð)JÑKÔKÐKð �aŠxˆx¥Ô 3°AÑ 6Ô 6ˆxØC�ÝÔ(¨Ñ-Ô-Ð-åÔ" 1Ñ%Ô%ð -Ø—’˜!œ'˜Ñ$Ô$Ð$Ð$Øð -Ø—’˜!œ' 1˜Ñ&Ô&Ð&Ð&à—’˜!œ' 1¤7Ð+Ñ,Ô,Ð,ð.ð .ð .ð .ð .õ ð0ð 0ð 0ð 0ñ ŒYð0õ ð0ð 0ð 0ð 0ñ ŒYð0ð3ð 3ð 3ð 3ð 3ð 3ð@ð @ð @ð @ð @ð @ð @ð @ð(ð (ð (ð (ð6ð 6ð 6ð 6ð 6ð 6ð ð $Ø Ð Ø$ð $¨ð $Ø2Ð2Øð $ Hð $Ø)Ð)à#Ð#r*   r   ©r   r  r   )r'   r  r  rS  s   `   r(   r  zDUFunc._install_ufunc_at’  sW   ø€ ÝŒ^˜HÑ%Ô%ˆå	˜˜TÑ	"Ô	"ð_	$ð _	$ð _	$ð _	$ð _	$ñ 
#Ô	"ð_	$ð _	$ð _	$r*   c                 óh   ‡ — t          j        |¦  «        }t          |d¦  «        dˆ fd„	¦   «         }d S )NÚreducer   c                 óB  •‡‡‡‡‡‡‡‡‡‡‡‡‡‡— t          j        dt          j        ¬¦  «         t	          |t
          j        ¦  «        sd}t          j        |¦  «        ‚t	          |t
          j        ¦  «        ot	          |j	        t
          j
        ¦  «        }t	          |t
          j        ¦  «        ot          |¦  «        dk    }t          j        |¦  «        }‰j        j        d u Š‰j        j        Š‰j        s/|r-t          |¦  «        dk    rd‰› d�}t          j        |¦  «        ‚d|j        z  Šd|j        dz
  z  Št          j        |¦  «        r|j	        n|Š‰j        Št          j        ‰¦  «        Št          j        |¦  «        Št(          ˆfd	„¦   «         Št(          ˆfd
„¦   «         Št*          d„ ¦   «         Št(          d„ ¦   «         Št(          d„ ¦   «         Šdˆˆˆˆˆfd„	}		 	 	 dˆˆˆˆˆˆˆfd„	}
	 	 	 dˆˆˆfd„	}	 	 	 dd„}	 	 	 dˆfd„	}|j        dk    r|s|	S |r|S |r#t-          t/          |j        ¦  «        ¦  «        Š|S |rdt          |¦  «        dz
  z  Š|S |dk    s1t	          |t
          j
        t
          j        t
          j        f¦  «        r|
S d S )Nz$ufunc.reduce feature is experimentalr"  ú-The first argument "array" must be array-liker   rd   zreduction operation 'z:' is not reorderable, so at most one axis may be specified©r   c                 ót   •— ‰}d}t          | ¦  «        D ]"\  }}||k    rŒt          |||¦  «        }|dz  }Œ#|S ©Nr   rd   )rH   r   )ÚtupÚposÚsrQ   ÚjÚeÚtup_init_m1s         €r(   Útuple_slicezDDUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.tuple_slice  sU   ø€ ð  �Ø�Ý% c™NœNð ð ‘D�A�qØ˜C’x�xØ Ý% a¨¨AÑ.Ô.�AØ˜‘F�A�AØ�r*   c                 óÀ   •— ‰}ddt          |¦  «        }}}||k     rA||k    rt          |||¦  «        }n| |         }t          |||¦  «        }|dz  }|dz  }||k     °A|S r[  ©rG   r   )	r\  r]  ra   r^  rQ   r_  Úszr`  Útup_inits	           €r(   Útuple_slice_appendzKDUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.tuple_slice_append(  s€   ø€ ð �Ø˜a¥ Q¡¤�b�1�Ø˜"’f�fØ˜C’x�xÝ)¨!¨Q°Ñ4Ô4˜˜à œF˜Ý)¨!¨Q°Ñ2Ô2˜Ø˜Q™˜Ø˜‘F�Að ˜"’f�fð �r*   c                 óp   ‡‡— t          j        ||||¦  «        }t          |¦  «        Šˆfd„Šˆˆfd„}||fS )Nc                 ó°  •— |\  }}}}|                       |¬¦  «        }|                      |¦  «        5   t          j        d¦  «        d¦  «        }	|	}
|dk    rpt	          d‰¦  «        D ]]}|                      ||dz
  ¦  «        }|                      ||¦  «        }|                      ||¦  «        }|                      |
|¦  «        }
Œ^�n^d|cxk     r	‰dz
  k     ràn nÝt	          d|¦  «        D ]Z}|                      ||¦  «        }|                      ||¦  «        }|                      ||¦  «        }|                      |
|¦  «        }
Œ[t	          |dz   ‰¦  «        D ]]}|                      ||dz
  ¦  «        }|                      ||¦  «        }|                      ||¦  «        }|                      |
|¦  «        }
Œ^nnt	          d‰dz
  ¦  «        D ]Z}|                      ||¦  «        }|                      ||¦  «        }|                      ||¦  «        }|                      |
|¦  «        }
Œ[|                      |¦  «         d d d ¦  «         n# 1 swxY w Y   ||
fS )N©Únameé@   r   rd   )	Úappend_basic_blockÚ
goto_blockr   ÚIntTypeÚrangeÚextract_valueÚmulrj   Úbranch)r2   Ú	block_posÚ
block_nameÚbb_endr   rY   r�   rS   ÚbbrN   Úflat_idxrQ   ÚstrideÚidx_iÚmÚlen_idxs                  €r(   Ú	gen_blockz\DUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.compute_flat_idx.<locals>.gen_block=  sÍ  ø€ Ø)-Ñ&�G˜Q  QØ ×3Ò3¸Ð3ÑDÔD�Bà ×+Ò+¨BÑ/Ô/ð /ð /Ø-�rœz¨"™~œ~¨aÑ0Ô0˜Ø#'˜à$¨š>˜>Ý%*¨1¨gÑ%6Ô%6ð Dð D Ø)0×)>Ò)>¸wÈÈAÉÑ)NÔ)N Ø(/×(=Ò(=¸cÀ1Ñ(EÔ(E Ø$+§K¢K°¸Ñ$>Ô$> Ø+2¯;ª;°xÀÑ+CÔ+C  ñ	Dð
  Ð8Ð8Ò8Ð8¨W°q©[Ò8Ð8Ð8Ð8Ð8Ý%*¨1¨iÑ%8Ô%8ð Dð D Ø)0×)>Ò)>¸wÈÑ)JÔ)J Ø(/×(=Ò(=¸cÀ1Ñ(EÔ(E Ø$+§K¢K°¸Ñ$>Ô$> Ø+2¯;ª;°xÀÑ+CÔ+C  å%*¨9°q©=¸'Ñ%BÔ%Bð Dð D Ø)0×)>Ò)>¸wÈÈAÉÑ)NÔ)N Ø(/×(=Ò(=¸cÀ1Ñ(EÔ(E Ø$+§K¢K°¸Ñ$>Ô$> Ø+2¯;ª;°xÀÑ+CÔ+C  ð	Dõ &+¨1¨g¸©kÑ%:Ô%:ð Dð D Ø)0×)>Ò)>¸wÈÑ)JÔ)J Ø(/×(=Ò(=¸cÀ1Ñ(EÔ(E Ø$+§K¢K°¸Ñ$>Ô$> Ø+2¯;ª;°xÀÑ+CÔ+C  àŸš vÑ.Ô.Ð.ð;/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð> ˜x˜<Ð's   ´H	I	É	IÉIc                 ó²  •— |\  }}}}|j         }|                     d¬¦  «        }	g }
t          ‰¦  «        D ].} ‰||d|› �|	|¦  «        \  }}|
                     ||f¦  «         Œ/|                     |¦  «        5  |                     ||
d         d         ¦  «        }t          ‰¦  «        D ]$}|                     ||
|         d         ¦  «         Œ%	 d d d ¦  «         n# 1 swxY w Y   |                     |	¦  «         |                     |
d         d         j	        ¦  «        }|
D ]\  }}| 
                    ||¦  «         Œ|                     ||¦  «        S )NÚaxis_endrj  Úaxis_éÿÿÿÿr   rd   )Úbasic_blockrm  rp  rJ   rn  ÚswitchÚadd_caseÚposition_at_endÚphirâ   Úadd_incomingÚsdiv)r1   r2   rl   r   rY   ÚitemsizerS   Úaxisrw  Ú
switch_endÚlrQ   Úblockrx  rƒ  r†  Úvaluer}  r|  s                    €€r(   ÚcodegenzZDUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.compute_flat_idx.<locals>.codegenb  s¹  ø€ Ø37Ñ0�G˜X s¨Dà Ô,�BØ!(×!;Ò!;ÀÐ!;Ñ!LÔ!L�JØ�AÝ" 7™^œ^ð 4ð 4˜Ø*3¨)°G¸QÀÈÀÀØ4>Àñ+Fô +F™˜˜xàŸš %¨Ð!2Ñ3Ô3Ð3Ð3à ×+Ò+¨BÑ/Ô/ð 8ð 8Ø!(§¢°°a¸´e¸A´hÑ!?Ô!?˜Ý!& w¡¤ð 8ð 8˜AØ"ŸOšO¨A¨q°¬t°A¬wÑ7Ô7Ð7Ð7ð8ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð
 ×+Ò+¨JÑ7Ô7Ð7Ø!Ÿ+š+ a¨¤d¨1¤g¤lÑ3Ô3�CØ()ð 7ð 7™˜˜uØ×(Ò(¨°Ñ6Ô6Ð6Ð6Ø"Ÿ<š<¨¨XÑ6Ô6Ð6s   Á;ACÃC#Ã&C#)r   rC   rG   )	r.  rY   r‰  rS   rŠ  rl   r�  r}  r|  s	          @@r(   Úcompute_flat_idxzIDUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.compute_flat_idx8  sh   øø€ å”j ¨(°C¸Ñ>Ô>�Ý˜c™(œ(�ð#(ð #(ð #(ð #(ð #(ðJ7ð 7ð 7ð 7ð 7ð 7ð, ˜G�|Ð#r*   c                 ó¨   — | }t          t          | ¦  «        ¦  «        D ]2}| |         dk     r| |         |z   n| |         }t          |||¦  «        }Œ3|S rx   )rp  rG   r   )rŠ  ÚndimÚaxrQ   ra   s        r(   Ú
fixup_axiszCDUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.fixup_axisz  s]   € à�Ý�s 4™yœyÑ)Ô)ð 3ð 3�AØ,0°¬G°aªK¨K˜$˜qœ' D™.˜.¸TÀ!¼W�CÝ& r¨1¨cÑ2Ô2�B�BØ�	r*   c                 óˆ   — d| d         }}t          t          | ¦  «        ¦  «        D ]}| |         |k     r
|| |         }}Œ||fS rx   )rp  rG   )r\  rS   r`  rQ   s       r(   Úfind_minzADUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.find_min‚  sN   € à˜C œF�Q�Ý�s 3™xœx™œð +ð +�AØ˜1”v ’z�zØ!" C¨¤F˜Q˜øØ˜A�v�r*   c                 óô   •— ‰r*|€(t          |¦  «        dk    rd‰› d�}t          |¦  «        ‚d}‰r‰
rd}|d         }n‰r‰}n|}|j        d         }t          ||¦  «        D ]}	 | |||	         ¦  «        }Œ|S )Nr   ú'zero-size array to reduction operation ú which has no identityrd   )rG   Ú
ValueErrorrX   rp  )r    r]   rŠ  rf   Úinitialr  ÚstartÚrre  rQ   Úid_noner¢   Úidentity_noneÚ	init_noneÚ
ufunc_names             €€€€€r(   Úimpl_1dz@DUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.impl_1dŠ  s¾   ø€ Ø ð * W _½¸U¹¼Àqº¸ðAØ(ðAð Að A�Cå$ S™/œ/Ð)à�Øð   ð  Ø�EØ˜aœ�A�AØð  Ø �A�Aà�Aà”[ ”^�Ý˜u bÑ)Ô)ð +ð +�AØ˜˜a  q¤Ñ*Ô*�A�AØ�r*   c                 óš  •— |€t          d¦  «        ‚|dk     r
||j        z  }|dk     s||j        k    rt          d¦  «        ‚‰r(|€&|j        |         dk    rd‰› d�}t          |¦  «        ‚ ‰|j        |¦  «        }|€K‰€It          j        |‰¬¦  «        }t          j        |¦  «        D ]\  }}	 ‰||d¦  «        }
||
         ||<   Œn3|€‰�t          j        |‰‰¬¦  «        }nt          j        ||‰¬¦  «        }|                     ¦   «         }|€[‰€Yt          j        |¦  «        D ]C\  }}||         dk    rŒ ‰|j        |j	        ||¦  «        }||         |}} | ||¦  «        ||<   ŒDn\t          j        |¦  «        D ]G\  }}|€‰€||         dk    rŒ ‰|j        |j	        ||¦  «        }||         |}} | ||¦  «        ||<   ŒH|S )Nz'axis' must be specifiedr   úInvalid axisr˜  r™  ©rf   )Ú
fill_valuerf   )
rš  r’  rX   rÝ   ÚemptyÚndenumerateÚfullÚravelrY   r‰  )r    r]   rŠ  rf   r›  r  rX   r�  rS   r�   Ú
result_idxÚviewra   Úflat_posÚlhsÚrhsr�  r¢   rŸ  Únb_dtyperb  rg  r¡  s                   €€€€€€€r(   Úimpl_nd_axis_intzIDUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.impl_nd_axis_intž  sY  ø€ ð
 �<Ý$Ð%?Ñ@Ô@Ð@à˜!’8�8Ø˜EœJÑ&�Dà˜!’8�8˜t u¤zÒ1Ð1Ý$ ^Ñ4Ô4Ð4à ð * W _¸¼ÀTÔ9JÈaÒ9OÐ9OðAØ(ðAð Að A�Cå$ S™/œ/Ð)ð $˜ E¤K°Ñ6Ô6�à�? xÐ'7Ýœ ¨hÐ7Ñ7Ô7�AÝ"$¤.°Ñ"3Ô"3ð 3ð 3™˜˜Qà%7Ð%7¸¸TÀ1Ñ%EÔ%E˜
Ø!& zÔ!2˜˜#™˜ð3ð �_¨Ð)=õ œ °(À(ÐKÑKÔK�A�Aåœ °'ÀÐJÑJÔJ�Að —w’w‘y”y�Ø�? xÐ'7Ý$&¤N°5Ñ$9Ô$9ð =ð =™˜˜SØ˜tœ9¨š>˜>Ø$à'7Ð'7¸¼	À1Ä:Ø8;¸Tñ(Cô (C˜Hà'+¨H¤~°s ˜CØ-2¨U°3¸©_¬_˜D ™N˜Nð=õ %'¤N°5Ñ$9Ô$9ð 9ð 9™˜˜SØ"˜?¨xÐ/?Ø # D¤	¨Q¢ Ø$Ø#3Ð#3°A´I¸q¼zØ47¸ñ$?ô $?˜à#'¨¤>°3˜S˜Ø).¨¨s°C©¬˜˜X™˜Ø�r*   c                 óÚ  •—  ‰||j         ¦  «        }t          dt          |¦  «        ¦  «        D ]r}||         dk     s||         |j         k    rt          d¦  «        ‚t          |dz   t          |¦  «        ¦  «        D ]#}||         ||         k    rt          d¦  «        ‚Œ$Œs ‰|¦  «        \  }}	|                      ||	||¬¦  «        }
t          |¦  «        dk    r|
S t          |¦  «        dk    r&|                      |
||dz   dz           dz
  ¬¦  «        S ‰}t          t          |¦  «        ¦  «        D ]}||k    rt          ||||         ¦  «        }Œ |                      |
|¬¦  «        S )Nr   r¤  rd   zduplicate value in 'axis')rŠ  rf   r›  r$  ©rŠ  )r’  rp  rG   rš  rV  r   )r    r]   rŠ  rf   r›  r€  rQ   r_  Úmin_idxÚmin_elemr�  r“  Úaxis_tupr–  r”  s               €€€r(   Úimpl_nd_axis_tuplezKDUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.impl_nd_axis_tupleÜ  s’  ø€ ð
 #˜
 4¨¬Ñ4Ô4�Ý˜q¥# e¡*¤*Ñ-Ô-ð Jð J�AØ˜Q”x !’|�| u¨Q¤x°5´:Ò'=Ð'=Ý(¨Ñ8Ô8Ð8å" 1 q¡5­#¨e©*¬*Ñ5Ô5ð Jð J˜Ø  œ8 u¨Q¤xÒ/Ð/Ý",Ð-HÑ"IÔ"IÐIð 0ðJð %- H¨U¡O¤OÑ!�˜Ø—L’L Ø&.Ø',Ø)0ð !ñ 2ô 2�õ �t‘9”9 ’>�>Ø�HÝ˜‘Y”Y !’^�^Ø Ÿ<š<¨°°wÀ±{ÀaÑ6GÔ0HÈ1Ñ0L˜<ÑMÔMÐMà!�BÝ"¥3 r¡7¤7™^œ^ð @ð @˜Ø š<˜<Ý!.¨r°1°e¸A´hÑ!?Ô!?˜BøØ Ÿ<š<¨°˜<Ñ3Ô3Ð3r*   c                 ó   — |S r   r@   )r    r]   rŠ  rf   r›  s        r(   Úimpl_axis_empty_tuplezNDUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.impl_axis_empty_tupleú  s	   € ð
 �r*   c                 ó4   •— |                       |‰||¦  «        S r   )rV  )r    r]   rŠ  rf   r›  r¶  s        €r(   Úimpl_axis_nonezGDUFunc._install_ufunc_reduce.<locals>.ol_reduce.<locals>.impl_axis_none  s   ø€ ð
 —|’| E¨8°U¸GÑDÔDÐDr*   ©r   NN)rü   rý   r	   rA  r6   r   rI   rB  ÚUniTuplerf   ÚIntegerrD  rG   r   rG  r    r¢   r…   r´   r’  r   r   rß   rp  ÚOmittedÚIntegerLiteral)r    r]   rŠ  rf   r›  r  Úaxis_int_tupleÚaxis_empty_tupleÚ	axis_noner¢  r±  r·  r¹  r»  r¶  r�  r–  r”  rž  r¢   rŸ  r   r°  rf  ra  rb  rg  r¡  r'   s                 @@@@@@@@@@@@@@€r(   Ú	ol_reducez/DUFunc._install_ufunc_reduce.<locals>.ol_reduceú  sÍ  øøøøøøøøøøøøøøø€ õ ŒMÐ@Ý#)Ô#IðKñ Kô Kð Kõ ˜e¥U¤[Ñ1Ô1ð 1ØE�ÝÔ+¨CÑ0Ô0Ð0å'¨­e¬nÑ=Ô=ð 6Ý˜4œ:¥u¤}Ñ5Ô5ð å)¨$µ´Ñ<Ô<ÐOÅÀTÁÄÈaÂÐÝÔ+¨DÑ1Ô1ˆIà œJÔ/°4Ð7ˆMØœÔ,ˆJð Ô#ð 1¨ð 1½3¸t¹9¼9Àqº=¸=ðK¨zð Kð Kð K�åÔ+¨CÑ0Ô0Ð0à˜uœzÑ*ˆHØ %¤*¨q¡.Ñ1ˆKÝ&-Ô&9¸%Ñ&@Ô&@ÐK�u”{�{ÀeˆHØ”}ˆHåÔ)¨(Ñ3Ô3ˆGÝÔ+¨GÑ4Ô4ˆIåð
ð 
ð 
ð 
ñ Ôð
õ ðð ð ð ñ Ôðõ ð?$ð ?$ñ ŒYð?$õB ðð ñ Ôðõ ðð ñ Ôððð ð ð ð ð ð ð ð ð ð, '(Ø'+Ø)-ð	<ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð@ )*Ø)-Ø+/ð	4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð@ ,-Ø,0Ø.2ð	ð ð ð ð %&Ø%)Ø'+ð	Eð Eð Eð Eð Eð Eð Œz˜QŠˆÐ'7ˆØ�Ø!ð (à,Ð,Øð (å ¥ u¤zÑ!2Ô!2Ñ3Ô3�Ø%Ð%Øð 
(ð  ¥3 t¡9¤9¨q¡=Ñ1�Ø)Ð)Ø˜’��j¨µ´Ý05´Ý05Ô0Dð0Fñ Gô G�ð
 (Ð'ð �r*   r¼  rT  )r'   r  r  rÄ  s   `   r(   r  zDUFunc._install_ufunc_reduce÷  sW   ø€ ÝŒ^˜HÑ%Ô%ˆå	˜˜XÑ	&Ô	&ð`	(ð `	(ð `	(ð `	(ð `	(ñ 
'Ô	&ð`	(ð `	(ð `	(r*   c                 óh   ‡ — t          j        |¦  «        }t          |d¦  «        dˆ fd„	¦   «         }d S )NÚreduceatr   c                 ó  •‡‡‡‡‡‡— t          j        dt          j        ¬¦  «         ‰j        j        dk    rd}t          j        |¦  «        ‚t          j        |¦  «        sd}t          j        |¦  «        ‚t          j        |¦  «        sd}t          j        |¦  «        ‚t          |t          j        t          j        t          j        t          f¦  «        sd}t          j        |¦  «        ‚t          j        |¦  «        Š‰s.t          |t          j        ¦  «        st          j        d¦  «        ‚t          |t          j        ¦  «        }|r|j        nd	Šd
‰dz
  z  Št          |t          j        ¦  «        }t          j        |¦  «        r|j        n|Š|o| }	|r)|j        dk    rd|j        › �}t          j        |¦  «        ‚|	rdd„}
|
S t*          ˆfd„¦   «         Šd	dlm}  ||j        d¦  «        Šdˆˆˆˆˆfd„	}|S )Nz&ufunc.reduceat feature is experimentalr"  r$  z,reduceat only supported for binary functionsrX  z0The second argument "indices" must be array-likez"axis" must be an integerzoutput must be an arrayr   rY  rd   z8Expect "indices" array to have at most 1 dimension. Got c                 ó~   — |                       t          j        |¦  «        t          j        |¦  «        |||¬¦  «        S )N)rf   ré   )rÆ  rÝ   r3  )r    r]   r#   rŠ  rf   ré   s         r(   r6  zFDUFunc._install_ufunc_reduceat.<locals>.ol_reduceat.<locals>.impl_castI  s?   € Ø Ÿ>š>­"¬*°UÑ*;Ô*;Ý*,¬*°WÑ*=Ô*=Ø*.Ø05Ø.1ð	 *ñ 3ô 3ð 3r*   c                 ó°   •— ‰}d\  }}|t          | ¦  «        k     r:||k    rt          ||| |         ¦  «        }|dz  }|dz  }|t          | ¦  «        k     °:|S )N)r   r   rd   rd  )r\  r]  r^  rQ   r_  Útup_m1s        €r(   rb  zHDUFunc._install_ufunc_reduceat.<locals>.ol_reduceat.<locals>.tuple_sliceQ  sh   ø€ à�Ø‘��1Ø�#˜c™(œ(’l�lØ˜C’x�xÝ)¨!¨Q°°A´Ñ7Ô7˜Ø˜Q™˜Ø˜‘F�Að	 �#˜c™(œ(’l�lð
 �r*   )Ú"generate_getitem_setitem_with_axisÚsetitemc                 ó¦  •— |j         d         }|}|dk     r|‰z  }|dk     s|‰k    rt          d|› d‰› �¦  «        ‚t          |j         ||¦  «        }‰s|j         |k    rd}	t          |	¦  «        ‚‰rt          j        |‰¬¦  «        }t          |¦  «        dk    r|S d}
t          t          |¦  «        dz
  ¦  «        D �]!}||         ||dz            k     rot          j        ||         ||dz            ¦  «        }‰dk    rt          j        |||¦  «        }n||         }|  	                    ||¬¦  «        } ‰||
||¦  «         n•||         ||dz            k    rY||         }t          j        |||¦  «        }‰dk    r& ‰|j         |¦  «        }| 
                    |¦  «        } ‰||
||¦  «         n'||         |k    s||         dk     rt          d¦  «        ‚|
dz  }
�Œ#t          j        |d	         |j         |         ¦  «        }‰dk    rt          j        |||¦  «        }n||         }|  	                    ||¦  «        } ‰||
||¦  «         |S )
Nr   zaxis z) is out of bounds for array of dimension z=operands could not be broadcast together with remmaped shapesr¥  rd   r³  zInvalid value for indicesr�  )rX   rš  r   rÝ   ÚzerosrG   rp  ÚarangeÚtakerV  Úreshape)r    r]   r#   rŠ  rf   ré   re  r“  rX   r  r_  rQ   rS   Ú	arr_sliceÚ
arr_reduceÚ_sliceÚ
array_ndimÚdtÚout_nonerÌ  rb  s                   €€€€€r(   rm   zADUFunc._install_ufunc_reduceat.<locals>.ol_reduceat.<locals>.impla  sµ  ø€ Ø”] 1Ô%�à�Ø˜!’8�8Ø˜JÑ&�Dà˜!’8�8˜t zÒ1Ð1Ý$ð &B¨Rð &Bð &BØ5?ð&Bð &Bñ Cô Cð Cõ & e¤k°4¸Ñ<Ô<�àð * C¤I°Ò$6Ð$6ð-�Cå$ S™/œ/Ð)àð 4Ýœ( 5°Ð3Ñ3Ô3�Cõ �w‘<”< 1Ò$Ð$Ø�Jà�Ý�s 7™|œ|¨aÑ/Ñ0Ô0ð ñ �AØ˜q”z G¨A°©E¤NÒ2Ð2Ý œi¨°¬
°G¸AÀ¹E´NÑCÔC˜Ø%¨š>˜>Ý(*¬°°s¸DÑ(AÔ(A˜I˜Ià(-¨c¬
˜IØ%*§\¢\°)À$ \Ñ%GÔ%G˜
Ø˜  Q¨¨jÑ9Ô9Ð9Ð9Ø  œ w¨q°1©u¤~Ò5Ð5Ø% aœj˜Ý$&¤G¨E°3¸Ñ$=Ô$=˜	Ø%¨š>˜>Ø%0 [°´¸dÑ%CÔ%C˜FØ(1×(9Ò(9¸&Ñ(AÔ(A˜IØ˜  Q¨¨iÑ8Ô8Ð8Ð8Ø  œ rÒ)Ð)¨W°Q¬Z¸!ª^¨^Ý(Ð)DÑEÔEÐEØ˜‘F�A‘Aõ ”i ¨¤¨U¬[¸Ô->Ñ?Ô?�Ø ’>�>Ý "¤¨¨s°DÑ 9Ô 9�I�Ià % c¤
�IØ"Ÿ\š\¨)°TÑ:Ô:�
Ø�˜˜Q  jÑ1Ô1Ð1à�
r*   r¼  )rü   rý   r	   rA  r    r¤   rB  r   Útype_can_asarrayr6   r   r¾  r¿  rÀ  r  r   rG  rI   r’  rf   ÚNumbaValueErrorr   rA   rË  )r    r]   r#   rŠ  rf   ré   r  Ú	array_arrrJ  rR  r6  rË  rm   rÕ  rÖ  r×  rÌ  rÊ  rb  r'   s                @@@@@@€r(   Úol_reduceatz3DUFunc._install_ufunc_reduceat.<locals>.ol_reduceat   sy  øøøøøøø€ õ ŒMÐBÝ#)Ô#IðKñ Kô Kð Kð ŒzŒ~ Ò"Ð"ØD�ÝÔ+¨CÑ0Ô0Ð0å Ô1°%Ñ8Ô8ð 1ØE�ÝÔ+¨CÑ0Ô0Ð0å Ô1°'Ñ:Ô:ð 1ØH�ÝÔ+¨CÑ0Ô0Ð0å˜d¥U¤]µE´MÝ%*Ô%9½3ð%@ñ Aô Að 1à1�ÝÔ+¨CÑ0Ô0Ð0åÔ*¨3Ñ/Ô/ˆHØð G¥J¨sµE´KÑ$@Ô$@ð GÝÔ+Ð,EÑFÔFÐFå" 5­%¬+Ñ6Ô6ˆIØ'0Ð7˜œ˜°aˆJØ˜Z¨!™^Ñ,ˆFÝ$ W­e¬kÑ:Ô:ˆKÝ 'Ô 3°EÑ :Ô :ÐE�”�ÀˆBà&Ð6¨;Ð7ˆIàð 2˜wœ|¨qÒ0Ð0ð-Ø%œlð-ð -�åÔ,¨SÑ1Ô1Ð1àð !ð3ð 3ð 3ð 3ð !Ð åðð ð ð ñ Ôðð MÐLÐLÐLÐLÐLØ8Ð8¸¼ÀYÑOÔOˆGð8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ðt ˆKr*   r¼  rT  )r'   r  r  rÛ  s   `   r(   r  zDUFunc._install_ufunc_reduceat  sW   ø€ ÝŒ^˜HÑ%Ô%ˆå	˜˜ZÑ	(Ô	(ðz	ð z	ð z	ð z	ð z	ñ 
)Ô	(ðz	ð z	ð z	r*   c                 ó   •— t          j        |¦  «        r|fn||f}d„ |D ¦   «         }t          d„ |D ¦   «         ¦  «        }|                      |¦  «        dk    r&| j        rd| ›d�}t          |¦  «        ‚ | j        |Ž  t          j        |¦  «        r"t          ¦   «                              ||¦  «        S  t          ¦   «         j        |||fŽ S )Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   )r   ©rì   ræ   s     r(   rî   zDUFunc.at.<locals>.<genexpr>   s(   è è € Ð.Ð. #•&˜‘+”+Ð.Ð.Ð.Ð.Ð.Ð.r*   c              3   ó\   K  — | ]'}t          |t          j        ¦  «        r|j        n|V — Œ(d S r   )r6   r   rI   rf   rÞ  s     r(   rî   zDUFunc.at.<locals>.<genexpr>¡  sM   è è € ð /ð /Ø #õ *4°C½¼Ñ)EÔ)EÐN˜CœI˜IÈ3ð /ð /ð /ð /ð /ð /r*   r„   rù   z.at(...))	r   rG  rß   r�   rÁ   rú   r÷   rŽ   r  )	r'   r!   r#   r%   r   rõ   r
  r  r“   s	           €r(   r  z	DUFunc.at�  sú   ø€ åÔ*¨1Ñ-Ô-Ð9�ˆtˆt°A°q°6ˆØ.Ð.¨Ð.Ñ.Ô.ˆÝð /ð /Ø'-ð/ñ /ô /ñ /ô /ˆð ×#Ò# KÑ0Ô0°LÒ@Ð@àŒ|ð (ð (Ø?C¸t¸tÐE�Ý" 3Ñ'Ô'Ð'à"ˆDÔ" DÐ)Ð)õ Ô˜qÑ!Ô!ð 	0Ý‘7”7—:’:˜a Ñ)Ô)Ð)à•5‘7”7”:  7¨A˜Ð/Ð/r*   c                 ó  — |€| j         j        j        }t          d| j        j        z   t          ft          | | j        ¬¦  «        ¦  «        }| 	                    | |¦  «         |  
                    |¦  «         |                      |¦  «         dS )a*  Constructs and installs a typing class for a DUFunc object in the
        input typing context.  If no typing context is given, then
        _install_type() installs into the typing context of the
        dispatcher object (should be same default context used by
        jit() and njit()).
        NÚDUFuncTyping_)ry   Úgeneric)r½   ÚtargetdescrÚtyping_contextrâ   r    r…   r   rÀ   Ú_type_meÚinsert_user_functionr  r  )r'   r.  Ú_ty_clss      r(   r·   zDUFunc._install_type²  s‘   € ð ÐØÔ(Ô4ÔCˆIÝ�¨¬Ô)<Ñ<Ý(Ð*Ý ¨d¬mÐ<Ñ<Ô<ñ>ô >ˆð 	×&Ò& t¨WÑ5Ô5Ð5Ø×&Ò& wÑ/Ô/Ð/Ø×#Ò# GÑ,Ô,Ð,Ð,Ð,r*   c                 ó  — | j         rJt          j        | |¦  «        }|€dS t          |j        |j        z   ¦  «        dt          |¦  «        …         }| j        j         	                    ¦   «         D ]\  }}|j
        |k    r||fc S ŒdS )a  
        Given a tuple of element-wise argument types, find a matching
        signature in the dispatcher.

        Return a 2-tuple containing the matching signature, and
        compilation result.  Will return two None's if no matching
        signature was found.
        Nr„   )rÁ   r   Úufunc_find_matching_looprß   ÚinputsÚoutputsrG   r½   r¾   rû   r   )r'   r
  Úlooprl   rM   s        r(   r�   zDUFunc.find_ewise_functionÂ  s    € ð Œ<ð 	Oå Ô9¸$ÀÑLÔLˆDØˆ|Ø!�zÝ ¤¨d¬lÑ :Ñ;Ô;Ð<M½SÀÑ=MÔ=MÐ<MÔNˆKØÔ)Ô3×9Ò9Ñ;Ô;ð 	!ð 	!‰IˆC�ØŒx˜;Ò&Ð&Ø˜D�yÐ Ð Ð ð 'àˆzr*   c                 óÒ  — |rJ ‚| j         }t          j                             |||¦  «        }|\  }}}}t	          |¦  «        }	|	dk    r&t          |dt	          |¦  «         …         ¦  «        }
nt          |¦  «        }
|                      |
¦  «        \  }}|€R| j        rt          j	        d| ›d|›�¦  «        ‚|  
                    |
¦  «         |                      |
¦  «        \  }}|€J ‚|	dk    rt          |¦  «        }nK|j        dk    r,|dk    rt          j        |j        ||¦  «        g}n|j        g}nt          j        d¦  «        ‚|                     |¦  «         t%          |Ž S )zì
        Implement AbstractTemplate.generic() for the typing class
        built by DUFunc._install_type().

        Return the call-site signature after either validating the
        element-wise signature or compiling for it.
        r   Nzcannot call z with types rd   ztyping gufuncs (nout > 1))r    r   ÚNumpy_rules_ufuncÚ_handle_inputsrG   rß   r�   rÁ   r	   rB  rÙ   r¼   r¥   r   rI   rr   ÚNumbaNotImplementedErrorÚextendr   )r'   rõ   Úkwtysr    Ú_handle_inputs_resultÚ
base_typesÚexplicit_outputsÚndimsr\   Úexplicit_output_countr
  rl   rM   Úouttyss                 r(   rå  zDUFunc._type_meÖ  sš  € ð ÐÐˆyØ”
ˆÝ 'Ô 9× HÒ HØ�6˜5ñ!"ô !"Ðà6KÑ3ˆ
Ð$ e¨VÝ #Ð$4Ñ 5Ô 5ÐØ  1Ò$Ð$Ý 
Ð+B­SÐ1AÑ-BÔ-BÐ,BÐ+BÔ CÑDÔDˆKˆKå 
Ñ+Ô+ˆKØ×,Ò,¨[Ñ9Ô9‰	ˆˆTØˆ;ð Œ|ð >ÝÔ+Ð+Ø/3¨t¨t°V°Vð-=ñ >ô >ð >à×$Ò$ [Ñ1Ô1Ð1Ø×0Ò0°Ñ=Ô=‰IˆC�Ø�?�?�?Ø  1Ò$Ð$ÝÐ*Ñ+Ô+ˆFˆFØŒZ˜1Š_ˆ_Ø�qŠyˆyÝœ+ c¤o°u¸fÑEÔEÐF��àœ/Ð*��åÔ1Ð2MÑNÔNÐNØ�Š�fÑÔÐÝ˜&Ð!Ð!r*   )NFNr   )r  N)&r…   r†   r‡   r”   ÚsetÚ_DUFunc__base_kwargsr)   r¬   rÂ   ÚclassmethodrÈ   rÊ   Úpropertyr¯   r¤   r¥   rÏ   rÒ   r   r¢   r   rÆ   rj   rÜ   r÷   r   rÙ   r  r  r  r  r  r  r  r·   r�   rå  r•   rŸ   s   @r(   r¡   r¡   ±   s³  ø€ € € € € ðð ð �CÐAÑBÔB€Mð
0ð 
0ð 
0ð 
0ð
ð 
ð 
ð 
ð 
ð

ð 

ð 

ð ðð ñ „[ððð ð ð ð.ð .ñ „Xð.ð ðð ñ „Xðð ðð ñ „Xðð ð ð  ñ „Xð ð ð!ð !ñ „Xð!ð ð ð  ñ „Xð ð ð#ð #ñ „Xð#ð ð$ð $ñ „Xð$ðð ð ð;ð ;ð ;ð2ð 2ð 2ð 2ð 2ð7ð 7ð 7ð> ð"ð "ð "ñ Ôð"ðH'ð 'ð 'ð2ð 2ð 2ð 2ð*)ð )ð )ð )ð
c$ð c$ð c$ð c$ðJd(ð d(ð d(ð d(ðL	~ð ~ð ~ð ~ð@0ð 0ð 0ð 0ð 0ð 0ð*-ð -ð -ð -ð ð ð ð(&"ð &"ð &"ð &"ð &"ð &"ð &"r*   r¡   )3r­   rh   rü   ÚnumpyrÝ   Únumbar   r   Ú
numba.corer   r   r   r   r	   Únumba.core.extendingr
   r   r   r   r   Únumba.core.typingr   Únumba.core.typing.templatesr   r   Únumba.cpython.unsafe.tupler   Únumba.np.ufuncr   Únumba.np.ufunc.ufunc_baser   r   Únumba.parforsr   r   r˜   r   Útypingr   Úllvmliter   Únumba.core.compiler_lockr   r   rš   rœ   ÚReduceMixinrÄ   r¡   Ú	MAP_TYPESrJ   r@   r*   r(   ú<module>r     sR  ðØ Ð Ð Ð Ø €€€Ø €€€à Ð Ð Ð à Ð Ð Ð Ð Ð Ð Ð Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bð-ð -ð -ð -ð -ð -ð -ð -ð -ð -ð -ð -ð -ð -ð &Ð %Ð %Ð %Ð %Ð %Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø $Ð $Ð $Ð $Ð $Ð $Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ (Ð (Ð (Ð (Ð (Ð (Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9ðw=ð w=ð w=ð w=ð w=ñ w=ô w=ð w=ðtð ð ð(5ð 5ð 5ð 5ð 5Ð$ñ 5ô 5ð 5ðK"ð K"ð K"ð K"ð K"ˆYÔ" IÔ$5°yñ K"ô K"ð K"ð\ Ô × Ò  Ñ 'Ô 'Ð 'Ð 'Ð 'r*   