§
    ËãßcÏa  ã                   óš  — d Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z! ddlm"Z" ej#        Z$ddg d¢dd	d
dddœZ%i di dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d“d!d“d"d“d#d““dd$“dd%“dd&“dg “dd“d'd“d(d“dd)“dg “dd“d*d“dg “dd“d+d“d,d“dd-“ddd.d/d0d1dddd2d3d4d5e	d6 ee	¦  «        did7œ¥d8ed9id:ed;igd<ed=id>gd? ee ee¦  «         ee¦  «        ¦  «        d@œedAidBdCdDedEidFedGigd<ed=idHdIgdJedKœdLdMdNdOed9idPedQigdRd<ed=idHd>dSgedTœdUdVe	d6igdWedXœedJdYœgZ& eee¦  «        dZi eee¦  «        dZiedUi eee¦  «        d[e	d6igi eee¦  «        d[e	d6igiedV ee	e¦  «        d6 ee	e¦  «        d\igi eee¦  «        d]i eee¦  «        d]idd^œ	 eee¦  «        d_ ee ee¦  «        ¦  «        d`e
daed_i eee¦  «        db ee ee¦  «        ¦  «        dce
dbedbi eee¦  «        dS ee ee¦  «        ¦  «        dde
ddedSi eee
e¦  «        dSiedeiedfiedgidhœ ee¦  «        dii eee e!dj¦  «        ¦  «        diedkiedli ee e ee¦  «        e¦  «        ¦  «        dmi ee e ee¦  «         ee¦  «        ¦  «        ¦  «        dni ee eee¦  «        ¦  «        doi ee ee ee¦  «        ¦  «        ¦  «        dpiged<d>gied=igedqœedriedsigedtieduiedSig eee¦  «        ddvœedwidxedyigdSdIed=idHg eee¦  «        dzœed{ied|ied}iged~ieduig eee¦  «        ddvœdd€e
dd�œed‚iedƒ ee¦  «        d„id…g ee
e eee¦  «        ¦  «        dd†œedkid‡edˆid‰edŠigd‹edSig ee
e¦  «        dzœd]edŒœg
Z'i Z(d�„ Z)dŽ„ Z*d�S )�aK  

Build call-back mechanism for f2py2e.

Copyright 2000 Pearu Peterson all rights reserved,
Pearu Peterson <pearu@ioc.ee>
Permission to use, modify, and distribute this software is given under the
terms of the NumPy License.

NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.
$Date: 2005/07/20 11:27:58 $
Pearu Peterson

é   )Ú__version__)Ú
applyrulesÚ	debugcapiÚ
dictappendÚerrmessÚgetargsÚhasnoteÚisarrayÚ	iscomplexÚiscomplexarrayÚiscomplexfunctionÚ
isfunctionÚ
isintent_cÚisintent_hideÚisintent_inÚisintent_inoutÚisintent_nothideÚisintent_outÚ
isoptionalÚ
isrequiredÚisscalarÚisstringÚisstringfunctionÚissubroutineÚl_andÚl_notÚl_orÚoutmessÚreplaceÚ
stripcommaÚthrow_error)ÚcfuncszPtypedef #rctype#(*#name#_typedef)(#optargs_td##args_td##strarglens_td##noargs#);a^  
#begintitle#
typedef struct {
    PyObject *capi;
    PyTupleObject *args_capi;
    int nofargs;
    jmp_buf jmpbuf;
} #name#_t;

#if defined(F2PY_THREAD_LOCAL_DECL) && !defined(F2PY_USE_PYTHON_TLS)

static F2PY_THREAD_LOCAL_DECL #name#_t *_active_#name# = NULL;

static #name#_t *swap_active_#name#(#name#_t *ptr) {
    #name#_t *prev = _active_#name#;
    _active_#name# = ptr;
    return prev;
}

static #name#_t *get_active_#name#(void) {
    return _active_#name#;
}

#else

static #name#_t *swap_active_#name#(#name#_t *ptr) {
    char *key = "__f2py_cb_#name#";
    return (#name#_t *)F2PySwapThreadLocalCallbackPtr(key, ptr);
}

static #name#_t *get_active_#name#(void) {
    char *key = "__f2py_cb_#name#";
    return (#name#_t *)F2PyGetThreadLocalCallbackPtr(key);
}

#endif

/*typedef #rctype#(*#name#_typedef)(#optargs_td##args_td##strarglens_td##noargs#);*/
#static# #rctype# #callbackname# (#optargs##args##strarglens##noargs#) {
    #name#_t cb_local = { NULL, NULL, 0 };
    #name#_t *cb = NULL;
    PyTupleObject *capi_arglist = NULL;
    PyObject *capi_return = NULL;
    PyObject *capi_tmp = NULL;
    PyObject *capi_arglist_list = NULL;
    int capi_j,capi_i = 0;
    int capi_longjmp_ok = 1;
#decl#
#ifdef F2PY_REPORT_ATEXIT
f2py_cb_start_clock();
#endif
    cb = get_active_#name#();
    if (cb == NULL) {
        capi_longjmp_ok = 0;
        cb = &cb_local;
    }
    capi_arglist = cb->args_capi;
    CFUNCSMESS("cb:Call-back function #name# (maxnofargs=#maxnofargs#(-#nofoptargs#))\n");
    CFUNCSMESSPY("cb:#name#_capi=",cb->capi);
    if (cb->capi==NULL) {
        capi_longjmp_ok = 0;
        cb->capi = PyObject_GetAttrString(#modulename#_module,"#argname#");
        CFUNCSMESSPY("cb:#name#_capi=",cb->capi);
    }
    if (cb->capi==NULL) {
        PyErr_SetString(#modulename#_error,"cb: Callback #argname# not defined (as an argument or module #modulename# attribute).\n");
        goto capi_fail;
    }
    if (F2PyCapsule_Check(cb->capi)) {
    #name#_typedef #name#_cptr;
    #name#_cptr = F2PyCapsule_AsVoidPtr(cb->capi);
    #returncptr#(*#name#_cptr)(#optargs_nm##args_nm##strarglens_nm#);
    #return#
    }
    if (capi_arglist==NULL) {
        capi_longjmp_ok = 0;
        capi_tmp = PyObject_GetAttrString(#modulename#_module,"#argname#_extra_args");
        if (capi_tmp) {
            capi_arglist = (PyTupleObject *)PySequence_Tuple(capi_tmp);
            Py_DECREF(capi_tmp);
            if (capi_arglist==NULL) {
                PyErr_SetString(#modulename#_error,"Failed to convert #modulename#.#argname#_extra_args to tuple.\n");
                goto capi_fail;
            }
        } else {
            PyErr_Clear();
            capi_arglist = (PyTupleObject *)Py_BuildValue("()");
        }
    }
    if (capi_arglist == NULL) {
        PyErr_SetString(#modulename#_error,"Callback #argname# argument list is not set.\n");
        goto capi_fail;
    }
#setdims#
#ifdef PYPY_VERSION
#define CAPI_ARGLIST_SETITEM(idx, value) PyList_SetItem((PyObject *)capi_arglist_list, idx, value)
    capi_arglist_list = PySequence_List(capi_arglist);
    if (capi_arglist_list == NULL) goto capi_fail;
#else
#define CAPI_ARGLIST_SETITEM(idx, value) PyTuple_SetItem((PyObject *)capi_arglist, idx, value)
#endif
#pyobjfrom#
#undef CAPI_ARGLIST_SETITEM
#ifdef PYPY_VERSION
    CFUNCSMESSPY("cb:capi_arglist=",capi_arglist_list);
#else
    CFUNCSMESSPY("cb:capi_arglist=",capi_arglist);
#endif
    CFUNCSMESS("cb:Call-back calling Python function #argname#.\n");
#ifdef F2PY_REPORT_ATEXIT
f2py_cb_start_call_clock();
#endif
#ifdef PYPY_VERSION
    capi_return = PyObject_CallObject(cb->capi,(PyObject *)capi_arglist_list);
    Py_DECREF(capi_arglist_list);
    capi_arglist_list = NULL;
#else
    capi_return = PyObject_CallObject(cb->capi,(PyObject *)capi_arglist);
#endif
#ifdef F2PY_REPORT_ATEXIT
f2py_cb_stop_call_clock();
#endif
    CFUNCSMESSPY("cb:capi_return=",capi_return);
    if (capi_return == NULL) {
        fprintf(stderr,"capi_return is NULL\n");
        goto capi_fail;
    }
    if (capi_return == Py_None) {
        Py_DECREF(capi_return);
        capi_return = Py_BuildValue("()");
    }
    else if (!PyTuple_Check(capi_return)) {
        capi_return = Py_BuildValue("(N)",capi_return);
    }
    capi_j = PyTuple_Size(capi_return);
    capi_i = 0;
#frompyobj#
    CFUNCSMESS("cb:#name#:successful\n");
    Py_DECREF(capi_return);
#ifdef F2PY_REPORT_ATEXIT
f2py_cb_stop_clock();
#endif
    goto capi_return_pt;
capi_fail:
    fprintf(stderr,"Call-back #name# failed.\n");
    Py_XDECREF(capi_return);
    Py_XDECREF(capi_arglist_list);
    if (capi_longjmp_ok) {
        longjmp(cb->jmpbuf,-1);
    }
capi_return_pt:
    ;
#return#
}
#endtitle#
)zsetjmp.hÚ
CFUNCSMESSÚF2PY_THREAD_LOCAL_DECLz#maxnofargs#z#nofoptargs#zF    def #argname#(#docsignature#): return #docreturn#\n\
#docstrsigns#zc
{{}\verb@def #argname#(#latexdocsignature#): return #docreturn#@{}}
#routnote#

#latexdocstrsigns#z1def #argname#(#docsignature#): return #docreturn#)Ú
cbtypedefsÚbodyÚneedÚ
maxnofargsÚ
nofoptargsÚdocstrÚlatexdocstrÚdocstrshortÚseparatorsforÚdeclú
Úargsú,ÚoptargsÚ Ú	pyobjfromÚfreememÚargs_tdÚ
optargs_tdÚargs_nmÚ
optargs_nmÚ	frompyobjÚsetdimsÚdocstrsignsz\n"
"ÚlatexdocstrsignsÚlatexdocstrreqÚlatexdocstroptÚlatexdocstroutÚlatexdocstrcbsz/*decl*/z/*pyobjfrom*/z/*frompyobj*/ÚreturnÚ
strarglensz/*freemem*/Ústrarglens_tdÚstrarglens_nmÚnoargsz/*setdims*/z    Required arguments:z    Optional arguments:z    Return objects:z    Call-back functions:z\noindent Required arguments:z\noindent Optional arguments:z\noindent Return objects:z\noindent Call-back functions:z
--- #note#)r<   r=   Ú	docstrreqÚ	docstroptÚ	docstroutÚ	docstrcbsÚ	docreturnÚdocsignÚ
docsignoptr>   r?   r@   rA   Úroutnotez    #ctype# return_value = 0;z,    CFUNCSMESS("cb:Getting return_value->");a‡      if (capi_j>capi_i) {
        GETSCALARFROMPYTUPLE(capi_return,capi_i++,&return_value,#ctype#,
          "#ctype#_from_pyobj failed in converting return_value of"
          " call-back function #name# to C #ctype#\n");
    } else {
        fprintf(stderr,"Warning: call-back function #name# did not provide"
                       " return value (index=%d, type=#ctype#)\n",capi_i);
    }z8    fprintf(stderr,"#showvalueformat#.\n",return_value);z#ctype#_from_pyobjr#   ÚGETSCALARFROMPYTUPLEz    return return_value;)r.   r:   r'   rB   Ú_checkzB    fprintf(stderr,"debug-capi:cb:#name#:%d:\n",return_value_len);z)#ctype# return_value,int return_value_lenzreturn_value,&return_value_lenz#ctype# ,intz.    CFUNCSMESS("cb:Getting return_value->\"");a      if (capi_j>capi_i) {
        GETSTRFROMPYTUPLE(capi_return,capi_i++,return_value,return_value_len);
    } else {
        fprintf(stderr,"Warning: call-back function #name# did not provide"
                       " return value (index=%d, type=#ctype#)\n",capi_i);
    }z:    fprintf(stderr,"#showvalueformat#\".\n",return_value);zstring.hÚGETSTRFROMPYTUPLEzreturn;)r4   r0   r8   r6   r:   r'   rB   rP   z<
#ifndef F2PY_CB_RETURNCOMPLEX
#ctype# *return_value
#endif
z3
#ifndef F2PY_CB_RETURNCOMPLEX
return_value
#endif
z0
#ifndef F2PY_CB_RETURNCOMPLEX
#ctype# *
#endif
zH
#ifdef F2PY_CB_RETURNCOMPLEX
    #ctype# return_value = {0, 0};
#endif
a      if (capi_j>capi_i) {
#ifdef F2PY_CB_RETURNCOMPLEX
        GETSCALARFROMPYTUPLE(capi_return,capi_i++,&return_value,#ctype#,
          "#ctype#_from_pyobj failed in converting return_value of call-back"
          " function #name# to C #ctype#\n");
#else
        GETSCALARFROMPYTUPLE(capi_return,capi_i++,return_value,#ctype#,
          "#ctype#_from_pyobj failed in converting return_value of call-back"
          " function #name# to C #ctype#\n");
#endif
    } else {
        fprintf(stderr,
                "Warning: call-back function #name# did not provide"
                " return value (index=%d, type=#ctype#)\n",capi_i);
    }zÈ#ifdef F2PY_CB_RETURNCOMPLEX
    fprintf(stderr,"#showvalueformat#.\n",(return_value).r,(return_value).i);
#else
    fprintf(stderr,"#showvalueformat#.\n",(*return_value).r,(*return_value).i);
#endif
zP
#ifdef F2PY_CB_RETURNCOMPLEX
    return return_value;
#else
    return;
#endif
z#ctype#)r2   r9   r7   r.   r:   rB   r'   rP   z        #pydocsignout#z"\item[]{{}\verb@#pydocsignout#@{}}z#rname#,)rI   r@   rK   rP   )rP   rB   z        #pydocsign#z\item[]{{}\verb@#pydocsign#@{}}z--- See above.z
#varname#,)	rH   rG   rI   r?   r>   r@   rL   rM   Údependz#ctype# #varname_i#z#ctype# *#varname_i#_cb_capiz#ctype# *#varname_i#z#varname_i#z#varname_i#_cb_capiz	#ctype# *z,int #varname_i#_cb_lenz,intz,#varname_i#_cb_len)r0   r8   r6   r'   rC   rD   rE   z/    #ctype# #varname_i#=(*#varname_i#_cb_capi);z8intent(c,out) is forbidden for callback scalar argumentsz)    CFUNCSMESS("cb:Getting #varname#->");zÏ    if (capi_j>capi_i)
        GETSCALARFROMPYTUPLE(capi_return,capi_i++,#varname_i#_cb_capi,#ctype#,"#ctype#_from_pyobj failed in converting argument #varname# of call-back function #name# to C #ctype#\n");z7    fprintf(stderr,"#showvalueformat#.\n",#varname_i#);z@    fprintf(stderr,"#showvalueformat#.\n",*#varname_i#_cb_capi);zK    fprintf(stderr,"#showvalueformat#.\n",(#varname_i#).r,(#varname_i#).i);z]    fprintf(stderr,"#showvalueformat#.\n",(*#varname_i#_cb_capi).r,(*#varname_i#_cb_capi).i);)r.   Úerrorr:   r'   rP   z„    if (cb->nofargs>capi_i)
        if (CAPI_ARGLIST_SETITEM(capi_i++,pyobj_from_#ctype#1(#varname_i#)))
            goto capi_fail;zŽ    if (cb->nofargs>capi_i)
        if (CAPI_ARGLIST_SETITEM(capi_i++,pyarr_from_p_#ctype#1(#varname_i#_cb_capi)))
            goto capi_fail;zpyobj_from_#ctype#1zpyarr_from_p_#ctype#1)r4   r'   rP   Ú	_optionalz+    CFUNCSMESS("cb:Getting #varname#->\"");zf    if (capi_j>capi_i)
        GETSTRFROMPYTUPLE(capi_return,capi_i++,#varname_i#,#varname_i#_cb_len);zP    fprintf(stderr,"#showvalueformat#\":%d:.\n",#varname_i#,#varname_i#_cb_len);)r:   r'   rP   ze    fprintf(stderr,"debug-capi:cb:#varname#=#showvalueformat#:%d:\n",#varname_i#,#varname_i#_cb_len);z›    if (cb->nofargs>capi_i)
        if (CAPI_ARGLIST_SETITEM(capi_i++,pyobj_from_#ctype#1size(#varname_i#,#varname_i#_cb_len)))
            goto capi_fail;zÜ    if (cb->nofargs>capi_i) {
        int #varname_i#_cb_dims[] = {#varname_i#_cb_len};
        if (CAPI_ARGLIST_SETITEM(capi_i++,pyarr_from_p_#ctype#1(#varname_i#,#varname_i#_cb_dims)))
            goto capi_fail;
    }zpyobj_from_#ctype#1sizez6    npy_intp #varname_i#_Dims[#rank#] = {#rank*[-1]#};z    #cbsetdims#;)r.   r;   rP   Ú_dependz0    fprintf(stderr,"debug-capi:cb:#varname#\n");a€      if (cb->nofargs>capi_i) {
        /* tmp_arr will be inserted to capi_arglist_list that will be
           destroyed when leaving callback function wrapper together
           with tmp_arr. */
        PyArrayObject *tmp_arr = (PyArrayObject *)PyArray_New(&PyArray_Type,
          #rank#,#varname_i#_Dims,#atype#,NULL,(char*)#varname_i#,#elsize#,
          NPY_ARRAY_CARRAY,NULL);
a€      if (cb->nofargs>capi_i) {
        /* tmp_arr will be inserted to capi_arglist_list that will be
           destroyed when leaving callback function wrapper together
           with tmp_arr. */
        PyArrayObject *tmp_arr = (PyArrayObject *)PyArray_New(&PyArray_Type,
          #rank#,#varname_i#_Dims,#atype#,NULL,(char*)#varname_i#,#elsize#,
          NPY_ARRAY_FARRAY,NULL);
z•
        if (tmp_arr==NULL)
            goto capi_fail;
        if (CAPI_ARGLIST_SETITEM(capi_i++,(PyObject *)tmp_arr))
            goto capi_fail;
})r4   rP   rT   zì    if (capi_j>capi_i) {
        PyArrayObject *rv_cb_arr = NULL;
        if ((capi_tmp = PyTuple_GetItem(capi_return,capi_i++))==NULL) goto capi_fail;
        rv_cb_arr =  array_from_pyobj(#atype#,#varname_i#_Dims,#rank#,F2PY_INTENT_INz|F2PY_INTENT_Ca8  ,capi_tmp);
        if (rv_cb_arr == NULL) {
            fprintf(stderr,"rv_cb_arr is NULL\n");
            goto capi_fail;
        }
        MEMCOPY(#varname_i#,PyArray_DATA(rv_cb_arr),PyArray_NBYTES(rv_cb_arr));
        if (capi_tmp != (PyObject *)rv_cb_arr) {
            Py_DECREF(rv_cb_arr);
        }
    }z    fprintf(stderr,"<-.\n");ÚMEMCOPY)rK   rP   c                 óÌ   — g t           | d         <   | d         D ]J}|d         dk    r<|d         D ]3}|rt          || d         ¦  «         Œt          d| d         z  ¦  «         Œ4ŒKd S )NÚnamer&   ÚblockÚ	interfacezwarning: empty body for %s
)Úcb_mapÚbuildcallbackr   )ÚmÚbiÚbs      ú5/usr/lib/python3/dist-packages/numpy/f2py/cb_rules.pyÚbuildcallbacksra     s‘   € Ø…Fˆ1ˆVŒ9ÑØ�Œið Jð JˆØˆgŒ;˜+Ò%Ð%Ø˜”Zð Jð J�Øð JÝ! ! Q v¤YÑ/Ô/Ð/Ð/åÐ:¸aÀ¼iÑHÑIÔIÐIÐIøðJð Jó    c                 óú  — ddl m} t          d| d         ›d|›d�¦  «         t          | ¦  «        \  }}||_        | d         }|                     | |¦  «        }t          i |¦  «        }t          |                              | d         |d         g¦  «         t          D ]<}d|v r |d         | ¦  «        sd|vr!t          ||| ¦  «        }	t          ||	¦  «        }Œ=i }
t          |¦  «        D ]�\  }}|                     |||         |¬	¦  «        }||
|<   t          D ]m}d
|v rŒd|v rt          ||         ¦  «        rŒ!d|v r |d         ||         ¦  «        sd|vr-t          ||||         ¦  «        }	t          ||	¦  «        }d|v r nŒnŒž|D ]ƒ}|
|         }t          D ]q}d
|v rŒd|vsd|v rt          ||         ¦  «        rŒ%d|v r |d         ||         ¦  «        sd|vr-t          ||||         ¦  «        }	t          ||	¦  «        }d|v r nŒrŒ„|D ]j}|
|         }t          D ]X}d
|vrŒd|v rŒd|v r |d         ||         ¦  «        sd|vr-t          ||||         ¦  «        }	t          ||	¦  «        }d|v r nŒYŒkd|v rLd|v rHt!          |d         t"          ¦  «        r-|d         dgz   |d<   |d         dgz   |d<   |d         dgz   |d<   t!          |d         t"          ¦  «        r(t%          t'          dd|d         i¦  «        ¦  «        |d<   t%          t'          dd|d         i¦  «        ¦  «        }|dk    r)t%          t'          dd|d         i¦  «        ¦  «        |d<   nt'          d|d         |dœ¦  «        |d<   |d                              dd¦  «        |d<   |d                              dd ¦  «        |d<   g |d!<   g |d"<   d#D ]Ž}||v r/t!          ||         t"          ¦  «        r|d!         ||         z   |d!<   d$|z   }||v rPt!          ||         t"          ¦  «        r5|d"         ||         d%d…         z   d&gz   ||         dd …         z   d'gz   |d"<   Œ�d|vrd|d<   d|d(<   d|d)<   |                     d¦  «        s/|                     d¦  «        s|                     d*¦  «        sd+|d,<   t          t*          |¦  «        }	|	d-         t,          j        |d         <   t!          |	d.         t0          ¦  «        r|	d.         g|	d.<   d.|v rFt,          j                             ¦   «         D ]'}||d.         v r|	d.                              |¦  «         Œ(|	d/         t,          j        |d         d0z   <   |	d.                              |d         d0z   ¦  «         |	d.         t,          j        |d         <   |	d1         |	d2         |	d3         |	d4         |d5         d6œ|j        |d         <   t          d7|	d8         z  ¦  «         d S )9Nr   )Ú	capi_mapsz(    Constructing call-back function "cb_rX   Ú_in_z"
ÚvarsrP   )ÚindexrU   rT   Ú_breakr0   r2   z(
#ifndef F2PY_CB_RETURNCOMPLEX
,
#endif
r9   r7   rK   z#docreturn#z#docsignopt#rM   r3   z	#docsign#rL   Údocsignaturez#docsign#[#docsignopt#])rL   rM   Ú_z\_Úlatexdocsignaturer1   z, r<   r=   )rG   rH   rI   rJ   Úlatexé    z\begin{description}z\end{description}r6   r8   rC   ÚvoidrF   r&   r'   r%   Ú_typedefr(   r)   r*   r+   Úargname)r(   r)   r*   r+   rp   z	      %s
r,   )r3   rd   r   r   ÚdepargsÚcb_routsign2mapr   r[   ÚappendÚcb_rout_rulesr   Ú	enumerateÚcb_sign2mapÚcb_arg_rulesr   r   Ú
isinstanceÚlistr    r   ÚgetÚcb_routine_rulesr"   Ú	callbacksÚstrÚtypedefsÚkeysÚtypedefs_generatedÚneedsÚlcb2_map)ÚroutÚumrd   r0   rq   ÚvarÚvrdÚrdÚrÚarÚsavevrdÚiÚar2   ÚkÚts                   r`   r\   r\     s>  € ØÐÐÐÐÐå€GØ�&Œ\ˆ\ˆ\˜2˜2˜2ðñ  ô  ð  å˜D‘M”M�M€Dˆ'Ø€IÔØ
ˆvŒ,€CØ
×
#Ò
# D¨"Ñ
-Ô
-€CÝ	�B˜Ñ	Ô	€BÝ
ˆ2„J×Ò�t˜F”| R¨¤ZÐ0Ñ1Ô1Ð1Ýð $ð $ˆØ˜ˆMˆM˜k˜a œk¨$Ñ/Ô/ˆM°XÀQÐ5FÐ5FÝ˜A˜s DÑ)Ô)ˆBÝ˜B Ñ#Ô#ˆBøØ€GÝ˜$‘”ð ð ‰ˆˆ1Ø×#Ò# A s¨1¤v°QÐ#Ñ7Ô7ˆØˆ�‰
Ýð 		ð 		ˆAØ˜Aˆ~ˆ~ØØ˜aÐÐ¥J¨s°1¬vÑ$6Ô$6ÐØØ˜A�� + ! H¤+¨c°!¬fÑ"5Ô"5�¸8È1Ð;LÐ;LÝ  3¨¨A¬Ñ/Ô/�Ý  BÑ'Ô'�Ø˜q�=�=Ø�EøøØð ð ˆØ�aŒjˆÝð 		ð 		ˆAØ˜Aˆ~ˆ~ØØ 1Ð$Ð$¨+¸Ð*:Ð*:½zÈ#ÈaÌ&Ñ?QÔ?QÐ*:ØØ˜A�� + ! H¤+¨c°!¬fÑ"5Ô"5�¸8È1Ð;LÐ;LÝ  3¨¨A¬Ñ/Ô/�Ý  BÑ'Ô'�Ø˜q�=�=Ø�EøøØð ð ˆØ�aŒjˆÝð 		ð 		ˆAØ Ð!Ð!ØØ˜aÐÐØØ˜A�� + ! H¤+¨c°!¬fÑ"5Ô"5�¸8È1Ð;LÐ;LÝ  3¨¨A¬Ñ/Ô/�Ý  BÑ'Ô'�Ø˜q�=�=Ø�EøøØ�€|€|˜	 R˜˜Ý�b˜”m¥TÑ*Ô*ð 	Ø˜yœMð .ð -ñ ˆBˆy‰Mð
  " ,Ô/ð 4ð 3ñ  ˆBˆ|Ñð
  " ,Ô/ð 4ð 3ñ  ˆBˆ|Ñõ
 �"�[”/¥4Ñ(Ô(ð DÝ$Ý�M K°°K´Ð#AÑBÔBñDô Dˆˆ;‰å� Ø".°°<Ô0@Ð!Añ#ô #ñ $ô $€Gð �"‚}€}Ý'Ý�K )¨R°	¬]Ð!;Ñ<Ô<ñ>ô >ˆˆ>ÑÐõ %Ð%>Ø13°I´Ø4;ð&(ð &(ñ)ô )ˆˆ>Ñð ! Ô0×8Ò8¸¸eÑDÔD€BÐÑØ Ð!4Ô5×=Ò=¸cÀ4ÑHÔH€BÐÑØ€B€}ÑØ€BÐÑØAð 'ð 'ˆØ�ˆ7ˆ7•z " Q¤%­Ñ.Ô.ˆ7Ø " =Ô 1°B°q´EÑ 9ˆBˆ}ÑØ�a‰KˆØ�ˆ7ˆ7•z " Q¤%­Ñ.Ô.ˆ7Ø%'Ð(:Ô%;¸bÀ¼eÀAÀaÀC¼jÑ%HØ'Ð(ñ&)Ø+-¨a¬5°°°¬9ñ&5à%Ð&ñ&'ˆBÐ!Ñ"øð �RÐÐØˆˆ6‰
Øˆˆ9‰Øˆˆ9‰Ø�FŠF�6‰NŒNð ˜bŸfšf YÑ/Ô/ð °2·6²6¸,Ñ3GÔ3Gð Øˆˆ8‰å	Õ$ bÑ	)Ô	)€BØ#% f¤:…FÔ�R˜”ZÑ Ý�"�V”*�cÑ"Ô"ð "Ø˜”j�\ˆˆ6‰
à�€|€|Ý”×%Ò%Ñ'Ô'ð 	%ð 	%ˆAØ�B�v”JˆˆØ�6”
×!Ò! !Ñ$Ô$Ð$øà9;¸LÔ9I…FÔ˜b œj¨:Ñ5Ñ6Ø€v„J×Ò�b˜”j :Ñ-Ñ.Ô.Ð.Ø! &œz…F„L��F”Ñà46°|Ô4DØ46°|Ô4DØ02°8´Ø57¸Ô5FØ13°I´ð	&(ð &(€IÔ�r˜&”zÑ"õ ˆL˜B˜}Ô-Ñ.Ñ/Ô/Ð/Ø
€Frb   N)+Ú__doc__r3   r   Úauxfuncsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   ÚversionÚf2py_versionr{   rt   rw   r[   ra   r\   © rb   r`   ú<module>r”      s‚
  ððð ð Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð àÔ"€ð eð[ðx AÐ@Ð@Ø Ø ððð
 GðSjð jÐ ðXØð 	˜& $ð 	Ø  #ð	Ø'0°"ð	Ø6AÀ4ð	ØIRÐTXð	à# Sð	à*6¸ð	ð $ Sð	ð +7¸ð	ð & tð		ð .7¸ð		ð
 (¨ð	ð -¨dð	ð +¨Dð	ð 3CÀDð	ð +¨Dð	ð 3CÀDð	ðð 	�
ðð (¨ðð ;FÀðð 	�ðð ˜rðð $,¨Rðð 2>¸rðð DMÈmðð 	�2ðð $ Rðð *9¸"ðð 	�2ðð $ Rðð *9¸"ðð 	�"ðð  	�=ð!ð" ¨rØ.Ø.Ø*Ø/Ø B°bØ:Ø:Ø6Ø;Ø˜l¨E¨E°'©N¬N¸BÐ?ð7ð ð ð: 0àÐFÐGð	ð ØHðJð
ð &¨	°<Ð'@ÐBXÐYØ,Ø�%˜
 E EÐ*:Ñ$;Ô$;¸U¸UÐCTÑ=UÔ=UÑVÔVð%ð ð*  Ð!fÐgØ;Ø3Ø!àÐIÐJð	ð ØKðMð
ð &¨	°<Ð'@ØÐ0ð2àØ"ð)ð ð.ð
ð
ð
ð ÐFÐGð	ð  ð ð ð%
ð4ð &¨	°<Ð'@ØÐ3°Yð@à#ðq9ð 9ðt +Ø>Ø  ,Ð/ð1àØð	ð ð
  yÐ1Ð1ðMG€ðV �e˜JÐ(8Ñ9Ô9Ð;PÐQØ�e˜JÐ(8Ñ9Ô9Ð;PÐQØ"Ð$<Ð=Ø ˜5 Ð-=Ñ>Ô>ÐAdØBIÈ<ÐAXðAZð [à ˜5 Ð-=Ñ>Ô>ÐAdØBIÈ<ÐAXðAZð [à'Ð*PØ+0¨5°¸-Ñ+HÔ+HÈ,Ø+0¨5°Ð:JÑ+KÔ+KÐM]ð+_ð*`ð að �E˜*Ð&6Ñ7Ô7¸ÐFØ�u˜ZÐ)9Ñ:Ô:¸LÐIØðð ð" ˆE�(˜JÑ'Ô'Ð)>ØˆE�(˜E˜E *Ñ-Ô-Ñ.Ô.Ð0NØÐ+ØÐ+ð	
ð ˆE�(˜JÑ'Ô'¨ØˆE�(˜E˜E *Ñ-Ô-Ñ.Ô.Ð0EØ�]Ø�mð	
ð ˆE�(˜JÑ'Ô'¨ØˆE�(˜E˜E *Ñ-Ô-Ñ.Ô.°Ø�[Ø�ið	
ð ��h ¨Ñ2Ô2°IÐ>àÐ!:Ð;Ø" FÐ+à"Ð$9Ð:ð1ð ð6 ��zÑ"Ô"Ð$UÐVØ�%˜
 LØ#˜Ð$^Ñ_Ô_ñaô aàðð !Ð"MÐNØ#ð kðlà�u˜Y¨¨¨e¨e°IÑ.>Ô.>À
Ñ(KÔ(KÑLÔLØTðVà�u˜Y¨¨¨e¨e°IÑ.>Ô.>ÀÀÀzÑ@RÔ@RÑ(SÔ(SÑTÔTØ]ð_à�u˜Y¨¨¨i¸Ñ(DÔ(DÑEÔEØhðjà�u˜Y¨¨¨i¸¸À
Ñ9KÔ9KÑ(LÔ(LÑMÔMØzð|ðð Ð!5Ð7MÐ NÐOØ˜\Ð*ð,àð'ð ð* #ð %ð  ð &ð (ð  ð	!ð Ð4Ð5Ø Ð"9Ð:Ø˜YÐ'ð)ð �%˜Ð"2Ñ3Ô3Øðð ð !Ð"PÐQðSà Økðmðð Ð/Ø˜\Ð*¨Jð8à�%˜ ,Ñ/Ô/ð
ð 
ð ð9ð;ð ð ð  ð &ð (	ð 
ðð Ð8Ð9Ø Ð"9Ð:ð<à�%˜Ð"2Ñ3Ô3Øð%ð ð, IØ%ØØð	ð ð !Ð"UÐVØ!ð $ð �u˜ZÑ(Ô(ð +ðð&ð)ð4 �%˜Ð!1°4°4¸À^Ñ3TÔ3TÑUÔUØð9ð ð< !Ð"MÐNðXð "Ð#3Ð4ð		ð !Ð"AÐBð!ð$ ˜^¨YÐ7Ð8Ø�%˜ Ñ.Ô.ð)ð ð, "Øðð ðGg€ðT 
€ðJð Jð Jð|ð |ð |ð |ð |rb   