Ë
    Ç[;j'É  ã                   ó  — d Z ddlZddlZddlZddlZddlZddlZ	 ddlmZ dZ		 ddlZddlZ eed«      rdd	lmZ ndd
lmZ ddlmZ dZdZ eee¬«      Z ej8                  «       xs dZdhd„Zd„ Zdid„Z d„ Z!d„ Z"djd„Z# G d„ d«      Z$ G d„ d«      Z% G d„ de%«      Z&h d£Z'd„ Z( G d„ d«      Z) G d „ d!«      Z* G d"„ d#ejV                  «      Z, G d$„ d%e,«      Z- G d&„ d'e-«      Z. G d(„ d)ej^                  «      Z0 G d*„ d+e0«      Z1 G d,„ d-e0«      Z2 G d.„ d/e0«      Z3 G d0„ d1«      Z4 e4«       Z5 G d2„ d3ejl                  e)«      Z7 G d4„ d5e7«      Z8 G d6„ d7e7«      Z9 G d8„ d9e7«      Z: G d:„ d;e)ejv                  «      Z< G d<„ d=e7ejz                  «      Z> G d>„ d?e>ej~                  «      Z@ G d@„ dAe@«      ZA G dB„ dCe>«      ZB G dD„ dEe>«      ZC G dF„ dGe>«      ZD G dH„ dIe7«      ZE G dJ„ dKeE«      ZF G dL„ dMe7«      ZG G dN„ dOe7«      ZH G dP„ dQe7«      ZI G dR„ dSe7«      ZJdT„ ZK G dU„ dVe7«      ZL G dW„ dXeL«      ZM G dY„ dZ«      ZN G d[„ d\e7ejž                  eN«      ZP G d]„ d^e7«      ZQ G d_„ d`ej¤                  e)«      ZS G da„ dbeS«      ZT G dc„ ddej¤                  e)«      ZU G de„ dfej¤                  e)eN«      ZV e<«       ZWe8j±                  «       ZYeYeW_Y        dg„ ZZ eZ«        y# e
$ r ddlmZ dZ	Y �Œ¼w xY w# e
$ r! dZej                   j#                  d«       Y �ŒÜw xY w)kz)
GDB extension that adds Cython support.
é    N)ÚetreeT)ÚElementTreeFz,Install pygments for colorized source code.
Ústring_to_argv)r   )Úsplit)Ú	libpythonÚCObjectÚPythonObject)r   r	   zUTF-8c                 ó   ‡ — ˆ fd„}|S )Nc                 óH   •‡ — t        j                  ‰ «      dˆˆ fd„	«       }|S )Nc                 óÌ   •— 	 |xs t        j                  «       }‰r|j	                  «       €
t        «       ‚ ‰| |g|¢­i |¤ŽS # t        $ r t        j                  d«      ‚w xY w©NzNo frame is currently selected.)ÚgdbÚselected_frameÚRuntimeErrorÚGdbErrorÚnameÚNoFunctionNameInFrameError)ÚselfÚframeÚargsÚkwargsÚerrÚfunctions       €€úbG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\Cython/Debugger/libcython.pyÚwrapperz>default_selected_gdb_frame.<locals>.decorator.<locals>.wrapper/   so   ø€ ðFØÒ5¤×!3Ñ!3Ó!5�ñ �u—z‘z“|Ð+Ü0Ó2Ð2á˜D %Ð9¨$Ò9°&Ñ9Ð9øô  ò FÜ—l‘lÐ#DÓEÐEðFús   ƒA ÁA#©N©Ú	functoolsÚwraps)r   r   r   s   ` €r   Ú	decoratorz-default_selected_gdb_frame.<locals>.decorator.   s%   ù€ Ü	�‰˜Ó	"õ		:ó 
#ð		:ð ˆó    © )r   r    s   ` r   Údefault_selected_gdb_framer#   -   s   ø€ ôð Ðr!   c                 óT   ‡ — t        j                  ‰ «      t        ˆ fd„«       «       }|S )Nc                 ó¶   •— |j                  d«      xs t        j                  «       }| j                  |«      st        j                  d«      ‚ ‰| g|¢­i |¤ŽS )Nr   zHSelected frame does not correspond with a Cython function we know about.)Úgetr   r   Úis_cython_functionr   )r   r   r   r   r   s       €r   r   z%require_cython_frame.<locals>.wrapper?   s]   ø€ ð —
‘
˜7Ó#Ò;¤s×'9Ñ'9Ó';ˆØ×&Ñ& uÔ-Ü—,‘,ð  @ó Að Aá˜Ð.˜tÒ. vÑ.Ð.r!   )r   r   Úrequire_running_program©r   r   s   ` r   Úrequire_cython_framer*   >   s-   ø€ Ü‡_�_�XÓÜó/ó ó ð/ð €Nr!   c                 ó   ‡ ‡— ˆ ˆfd„}|S )Nc                 óH   •‡ — t        j                  ‰ «      ˆˆ ˆfd„«       }|S )Nc                 ó  •— | j                  «       }| j                  «       }|s|r‰s ‰| g|¢­i |¤Ž y |rt        j                  ‰«       y | j	                  «       rt        j                  ‰«       y t        j
                  d«      ‚)NzFNot a function cygdb knows about. Use the normal GDB commands instead.)r'   Úis_python_functionr   ÚexecuteÚis_relevant_functionr   )r   r   r   Úis_cyÚis_pyÚ	c_commandr   Úpython_commands        €€€r   r   z5dispatch_on_frame.<locals>.decorator.<locals>.wrapperL   sx   ø€ à×+Ñ+Ó-ˆEØ×+Ñ+Ó-ˆEá™¡~Ù˜Ð/ Ò/¨Ó/ÙÜ—‘˜NÕ+Ø×*Ñ*Ô,Ü—‘˜IÕ&ä—l‘lð $Jó Kð Kr!   r   )r   r   r3   r4   s   ` €€r   r    z$dispatch_on_frame.<locals>.decoratorK   s'   ù€ Ü	�‰˜Ó	"õ	Kó 
#ð	Kð ˆr!   r"   )r3   r4   r    s   `` r   Údispatch_on_framer5   J   s   ù€ õð" Ðr!   c                 óB   ‡ — t        j                  ‰ «      ˆ fd„«       }|S )Nc                  ó‚   •— 	 t        j                  «         ‰| i |¤ŽS # t        $ r t        j                  d«      ‚w xY wr   )r   r   r   r   )r   r   r   s     €r   r   z(require_running_program.<locals>.wrapper`   sJ   ø€ ð	BÜ×ÑÔ ñ ˜Ð( Ñ(Ð(øô ò 	BÜ—,‘,Ð@ÓAÐAð	Bús   ƒ Ÿ>r   r)   s   ` r   r(   r(   _   s%   ø€ Ü‡_�_�XÓó)ó ð)ð €Nr!   c                 óB   ‡ — t        j                  ‰ «      ˆ fd„«       }|S )Nc                 ór   •— t        |t        j                  «      r|j                  «       } ‰| |g|¢­i |¤ŽS r   )Ú
isinstancer   ÚValueÚstring)r   r<   r   r   r   s       €r   r   z.gdb_function_value_to_unicode.<locals>.wrapperl   s3   ø€ ä�fœcŸi™iÔ(Ø—]‘]“_ˆFá˜˜fÐ6 tÒ6¨vÑ6Ð6r!   r   r)   s   ` r   Úgdb_function_value_to_unicoder=   k   s%   ø€ Ü‡_�_�XÓó7ó ð7ð
 €Nr!   c                 óÖ  ‡ — ddl }t        |j                  ‰ j                  «      j                  «      }|r |D �cg c]  }|j                  ||«      ‘Œ c}n|}d}|r6t        t        ‰ «      j                  «       «      }|D �	cg c]	  }	|	|vsŒ|	‘Œ }}	dˆ fd„	}
dj                  ‰ j                  j                  ddj                   |
d||«      «      d	g |
d
|«      ¢«      S c c}w c c}	w )a7  Prints out all instance variables needed to recreate an object.

    Following the python convention for __repr__, this function prints all the
    information stored in an instance as opposed to its class. The working
    assumption is that most initialization arguments are stored as a property
    using the same name.

    The object contents are displayed as the initialization call followed by,
    optionally, the value of each of the instance's properties in the form:
    ```
    ClassName(
            init_arg_1 = "repr of some example str",
            ...
        )
    self.state_based_property = ...
    ```

    Function arguments:
    self        Instance to be represented

    renamed     Dictionary of initialization arguments that are stored under a
                different property name in the form { argument: property }

    state       Boolean representing whether properties outside the
                initialization parameters should be printed (self.prop = ...).
                Using `False` may make the class more amenable to recursive repr
    r   Nr"   c              3   óž   •K  — t        ||xs |«      D ]5  \  }}t        t        ‰|«      «      j                  dd«      }| › |› d|› �–— Œ7 y ­w)NÚ
ú
		ú = )ÚzipÚreprÚgetattrÚreplace)ÚprefixÚattrsr   ÚattrÚargÚparamr   s         €r   Únames_and_valuesz%simple_repr.<locals>.names_and_values�   sS   øè ø€ Ü˜U D¢M¨EÖ2‰IˆD�#Üœ  tÓ,Ó-×5Ñ5°d¸HÓEˆEØ�H˜S˜E  U GÐ,Ó,ñ 3ùs   ƒA
AÚ Ú(Ú,rA   z
	)z
self.r   )ÚinspectÚtupleÚ	signatureÚ__init__Ú
parametersr&   ÚsortedÚvarsÚkeysÚjoinÚ	__class__Ú__qualname__)r   ÚrenamedÚstaterP   Úinit_arg_namesrJ   Ú
init_attrsÚ
state_reprÚinstance_attrsrI   rL   s   `          r   Úsimple_reprra   x   sì   ø€ ó8 Ü˜7×,Ñ,¨T¯]©]Ó;×FÑFÓG€Náñ 4BÓB±>¨C�'—+‘+˜c 3Õ'°>ÒBØ*ð à€JÙÜ¤ T£
§¡Ó 1Ó2ˆÙ'5ÓP¡~˜t¸ÀZÒ9O’d ~ˆ
ÐPõ-ð
 �7‰7Ø�N‰N×'Ñ'¨Ø�H‰HÑ% h°
¸NÓKÓLØðñ ' y°*Ó=ðó ð ùò Cùò
 Qs   ºC!Â	C&ÂC&c                   ó   — e Zd Zd„ Zd„ Zy)ÚCythonModulec                 óf   — || _         || _        || _        i | _        i | _        i | _        i | _        y r   )r   ÚfilenameÚ
c_filenameÚglobalsÚlineno_cy2cÚlineno_c2cyÚ	functions)r   Úmodule_namere   rf   s       r   rS   zCythonModule.__init__ª   s5   € ØˆŒ	Ø ˆŒØ$ˆŒØˆŒàˆÔàˆÔØˆ�r!   c                 ó"   — t        | ddid¬«      S )Nrk   r   F)r[   r\   ©ra   ©r   s    r   Ú__repr__zCythonModule.__repr__µ   s   € Ü˜4¨-¸Ð)@ÈÔNÐNr!   N©Ú__name__Ú
__module__rZ   rS   ro   r"   r!   r   rc   rc   ©   s   „ ò	óOr!   rc   c                   ó   — e Zd Zd„ Zd„ Zy)ÚCythonVariablec                 ó\   — || _         || _        || _        || _        t	        |«      | _        y r   )r   ÚcnameÚqualified_nameÚtypeÚintÚlineno)r   r   rv   rw   rx   rz   s         r   rS   zCythonVariable.__init__»   s*   € ØˆŒ	ØˆŒ
Ø,ˆÔØˆŒ	Ü˜&“kˆ�r!   c                 ó   — t        | «      S r   rm   rn   s    r   ro   zCythonVariable.__repr__Â   s   € Ü˜4Ó Ð r!   Nrp   r"   r!   r   rt   rt   ¹   s   „ ò"ó!r!   rt   c                   ó$   ‡ — e Zd Zedfˆ fd„	Zˆ xZS )ÚCythonFunctionÚFalsec	                 ó–   •— t         ‰	| �  |||||«       || _        || _        |dk(  | _        i | _        g | _        t        «       | _        y )NÚTrue)	ÚsuperrS   ÚmoduleÚpf_cnameÚis_initmodule_functionÚlocalsÚ	argumentsÚsetÚstep_into_functions)
r   r‚   r   rv   rƒ   rw   rz   rx   r„   rY   s
            €r   rS   zCythonFunction.__init__Ç   sU   ø€ ô 	‰Ñ˜Ø-2Ø-;Ø-1Ø-3ô		5ð
 ˆŒØ ˆŒØ&<ÀÑ&FˆÔ#ØˆŒØˆŒÜ#&£5ˆÕ r!   )rq   rr   rZ   r   rS   Ú__classcell__©rY   s   @r   r}   r}   Æ   s   ø„ ð Ø(/÷)ñ )r!   r}   >   úFrame.pcú
Frame.nameú
Frame.typeúFrame.blockúFrame.levelúFrame.newerúFrame.olderúFrame.selectúSymbol.valueúFrame.find_salúFrame.functionúFrame.is_validúFrame.languageúSymbol.is_validúSymtab.fullnameúSymtab.is_validúSymtab.linetableúFrame.static_linkúFrame.architectureúSymtab.global_blockúSymtab.static_blockúSymtab_and_line.is_validc                 óà  — | › d�}t        t        | «      «      D ]Ñ  }|j                  d«      rŒt        | |«      }t	        |«      r|j
                  t        v r |«       }t        |«      t        j                  t        j                  t        j                  fv r*t        |«      j                  d«      j                  dd«      }||› d�t        |t         «      r|dk7  r|d›d�n|› d�z   z  }ŒÓ |S )a­  Returns a string representing the internal state of a provided GDB frame
    https://sourceware.org/gdb/current/onlinedocs/gdb.html/Frames-In-Python.html

    Created to serve as GDB.Frame.__repr__ for debugging purposes. GDB has many
    layers of abstraction separating the state of the debugger from the
    corresponding source code. This prints a tree of instance properties,
    expanding the values for Symtab_and_line, Symbol, and Symtab.

    Most of these properties require computation to determine, meaning much of
    relevant info is behind a monad, a subset of which are evaluated.

    Arguments
    frame       The GDB.Frame instance to be represented as a string
    r@   Ú__z
	ú: ÚlineÚx)rU   ÚdirÚ
startswithrE   ÚcallablerZ   Úframe_repr_whitelistrx   r   ÚSymtab_and_lineÚSymbolÚSymtabÚ
frame_reprÚrstriprF   r:   ry   )r   ÚresÚ	attributeÚvalues       r   r­   r­   ø   sá   € ð ˆG�2ˆ,€CÜœC ›JÖ'ˆ	Ø×Ñ Ô%ØÜ˜˜yÓ)ˆÜ�EŒ?˜u×1Ñ1Ô5IÑIÙ“GˆEä�‹;œ3×.Ñ.´·
±
¼C¿J¹JÐGÑGä˜uÓ%×,Ñ,¨TÓ2×:Ñ:¸4ÀÓHˆEØ�)�˜BÐÜ",¨U´CÔ"8¸YÈ&Ò=P�5˜�)˜2‘Ø�w˜b�\ñ#ñ 	#‰ð (ð €Jr!   c                   ó8  — e Zd Z ed¬«      d„ «       Z ed¬«      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¬«      dd„«       Zd„ Zd„ Zdd„Zd„ Zy)Ú
CythonBaseF)r   c                 óN   — |j                  «       | j                  j                  v S r   )r   ÚcyÚfunctions_by_cname©r   r   s     r   r'   zCythonBase.is_cython_function  s   € à�z‰z‹|˜tŸw™w×9Ñ9Ð9Ð9r!   c                 óš   — |j                  «       dk(  r8t        j                  |«      j                  «       }|xr |j	                  «        S y)z˜
        Tells if a frame is associated with a Python function.
        If we can't read the Python frame information, don't regard it as such.
        ÚPyEval_EvalFrameExF)r   r   ÚFrameÚget_pyopÚis_optimized_out)r   r   Úpyframes      r   r.   zCythonBase.is_python_function  sD   € ð �:‰:‹<Ð/Ò/Ü—o‘o eÓ,×5Ñ5Ó7ˆGØÒ= 7×#;Ñ#;Ó#=Ð=Ð=Ør!   c                 ó"   — |j                  «       S r   )r   r·   s     r   Úget_c_function_namezCythonBase.get_c_function_name(  s   € à�z‰z‹|Ðr!   c                 ó6   — |j                  «       j                  S r   )Úfind_salr¤   r·   s     r   Úget_c_linenozCythonBase.get_c_lineno,  s   € à�~‰~Ó×$Ñ$Ð$r!   c                 ó„   — | j                   j                  j                  |j                  «       «      }|€
t	        «       ‚|S r   )rµ   r¶   r&   r   ÚNoCythonFunctionInFrameError)r   r   Úresults      r   Úget_cython_functionzCythonBase.get_cython_function0  s5   € à—‘×+Ñ+×/Ñ/°·
±
³Ó=ˆØˆ>Ü.Ó0Ð0àˆr!   c                 óŽ   — | j                  |«      }|j                  j                  j                  | j	                  |«      d«      S )z—
        Get the current Cython line number. Returns ("<no filename>", 0) if there is no
        correspondence between the C and Cython code.
        )z<no filename>r   )rÆ   r‚   ri   r&   rÂ   )r   r   Úcyfuncs      r   Úget_cython_linenozCythonBase.get_cython_lineno8  s=   € ð ×)Ñ)¨%Ó0ˆØ�}‰}×(Ñ(×,Ñ,¨T×->Ñ->¸uÓ-EÐG[Ó\Ð\r!   c                 ó*  — d x}x}}| j                  |«      rn| j                  |«      j                  j                  }| j	                  |«      }||d   k(  sJ ‚|d   }t
        �r#t
        j                  j                  d¬«      }�n| j                  |«      r�t        j                  |«      j                  «       }|st        j                  d«      ‚|j                  «       }|j                  «       }t
        r�t
        j                  j                  d¬«      }no|j!                  «       }|r|j"                  sd }d}nL|j"                  j%                  «       }|j&                  }t
        r t
        j                  j)                  d¬«      }t+        ||«      |fS )Nr   é   F)Ústripallz*Unable to read information on python frame)r'   rÆ   r‚   re   rÉ   ÚpygmentsÚlexersÚCythonLexerr.   r   rº   r»   r   r   Úcurrent_line_numÚPythonLexerrÁ   ÚsymtabÚfullnamer¤   ÚCLexerÚSourceFileDescriptor)r   r   re   rz   ÚlexerÚfilename_and_linenoÚpyframeobjectÚsymbol_and_line_objs           r   Úget_source_desczCythonBase.get_source_descA  sh  € à$(Ð(ˆÐ(�6˜EØ×"Ñ" 5Ô)Ø×/Ñ/°Ó6×=Ñ=×FÑFˆHØ"&×"8Ñ"8¸Ó"?ÐØÐ2°1Ñ5Ò5Ð5Ð5Ø(¨Ñ+ˆFÞÜ Ÿ™×3Ñ3¸UÐ3ÓC’Ø×$Ñ$ UÔ+Ü%ŸO™O¨EÓ2×;Ñ;Ó=ˆMá Ü—l‘lØHóJð Jð %×-Ñ-Ó/ˆHØ"×3Ñ3Ó5ˆFåÜ Ÿ™×3Ñ3¸UÐ3ÓC‘à"'§.¡.Ó"2ÐÙ&Ð.A×.HÒ.HØ�Ø‘à.×5Ñ5×>Ñ>Ó@�Ø,×1Ñ1�ÝÜ$ŸO™O×2Ñ2¸EÐ2ÓB�Eä# H¨eÓ4°fÐ<Ð<r!   c                 óJ   — | j                  «       \  }}|j                  |«      S r   )rÚ   Ú
get_source)r   r   Úsource_descrz   s       r   Úget_source_linezCythonBase.get_source_lined  s&   € à"×2Ñ2Ó4Ñˆ�VØ×%Ñ% fÓ-Ð-r!   c                 óî   — |j                  «       }|j                  «       }| j                  |«      s| j                  |«      ry|r0| j                  |«      r| j	                  |«      }||j
                  v S y)zl
        returns whether we care about a frame on the user-level when debugging
        Cython code
        TF)r   Úolderr'   r.   rÆ   rˆ   )r   r   r   Úolder_frameÚcython_funcs        r   r0   zCythonBase.is_relevant_functioni  sl   € ð �z‰z‹|ˆØ—k‘k“mˆØ×"Ñ" 5Ô)¨T×-DÑ-DÀUÔ-KØÙ˜T×4Ñ4°[ÔAà×2Ñ2°;Ó?ˆKØ˜;×:Ñ:Ð:Ð:àr!   c                 óR  ‡ ‡— t        j                  «       }‰j                  «        	 ‰ j                  ‰«      \  }}|sk‰ j                  ‰«      rZt        j                  ‰«      j                  «       }|�|j                  «       r‰ j                  ‰|d¬«      S |j                  }d}	g }
nk‰ j                  ‰«      r2‰ j                  ‰«      }ˆˆ fd„}|j                  }|j                   }	g }
n(‰ j                  ‰«      \  }}‰j                  «       }|}	g }
	 t        j"                  |	«      }|j$                  }t'        |t(        «      s?t'        |t*        t,        f«      st+        |«      }t)        |j/                  «       d   d«      }	 dj3                  d	„ |
D «       «      }t4        j6                  j9                  d
||||fz  «       |j:                  �/t4        j6                  j9                  d|j:                  ›d|›�«       t4        j6                  j9                  d«       	 t4        j6                  j9                  d|j=                  |«      › d�«       |j                  «        y# t        $ r t        d|z  «       Y yw xY w# t0        $ r d}Y �Œw xY w# t         j>                  $ r Y ŒUw xY w)zk
        Print a C, Cython or Python stack frame and the line of source code
        if available.
        z%#%-2d Unknown Frame (compile with -g)NT)Úis_cr¹   c                 óR   •— ‰j                   j                  j                  | ‰¬«      S )N©r   )rµ   Ú	cy_cvalueÚinvoke)rJ   r   r   s    €€r   Ú<lambda>z-CythonBase.print_stackframe.<locals>.<lambda>–  s   ø€ ˜DŸG™G×-Ñ-×4Ñ4°SÀÐ4ÔFr!   r   z, c              3   ó0   K  — | ]  \  }}|›d |›�–— Œ y­w)Ú=Nr"   )Ú.0r   Úvals      r   Ú	<genexpr>z.CythonBase.print_stackframe.<locals>.<genexpr>­  s   è ø€ ÐG¹Y±	°°c¢¡sÔ+¹Yùs   ‚z#%-2d 0x%016x in %s(%s)z at Ú:r@   ú    ) r   r   ÚselectrÚ   r   Úprintr.   r   rº   r»   r¼   Úprint_stackframeÚco_namer'   rÆ   r   rv   Úparse_and_evalÚaddressr:   ry   ÚstrÚbytesr   r   rX   ÚsysÚstdoutÚwritere   rÜ   r   )r   r   Úindexrä   r   rÝ   rz   r½   Ú	func_nameÚ
func_cnameÚ	func_argsrÈ   ÚfÚ	gdb_valueÚfunc_addressÚas   ``              r   ró   zCythonBase.print_stackframez  sV  ù€ ô ×+Ñ+Ó-ˆØ�‰Œð	Ø"&×"6Ñ"6°uÓ"=ÑˆK˜ñ
 ˜×/Ñ/°Ô6Ü—o‘o eÓ,×5Ñ5Ó7ˆGØˆ '×":Ñ":Ô"<à×,Ñ,¨U°EÀÐ,ÓEÐEàŸ™ˆIØ-ˆJØ‰IØ×$Ñ$ UÔ+Ø×-Ñ-¨eÓ4ˆFÜFˆAàŸ™ˆIØŸ™ˆJØ‰Ià"&×"6Ñ"6°uÓ"=ÑˆK˜ØŸ
™
›ˆIØ"ˆJØˆIð
	?Ü×*Ñ*¨:Ó6ˆIð %×,Ñ,ˆLÜ˜l¬CÔ0ä! ,´´e°Ô=Ü#& |Ó#4�LÜ" <×#5Ñ#5Ó#7¸Ñ#:¸AÓ>‘à�I‰IÑG¹YÓGÓGˆÜ�
‰
×ÑÐ2°e¸\È9ÐVWÐ5XÑXÔYà×ÑÐ+Ü�J‰J×Ò¨K×,@Ó,@Á&ÐIÔJä�
‰
×Ñ˜Ôð	Ü�J‰J×Ñ˜t K×$:Ñ$:¸6Ó$BÐ#CÀ2ÐFÔGð 	×ÑÕøôg *ò 	ÜÐ9¸EÑAÔBÙð	ûô8 ò 	Ø‹Lð	ûô( �|‰|ò 	Ùð	ús5   ¨I! ÄI> È2J É!I;É:I;É>JÊJÊJ&Ê%J&c                 ó
  — t        j                  d«      }	 t        j                  d«      }|j                  |j                  «       «      }|d   S # t        $ r) t        j                  t        j                  d«      «      ‚w xY w)NÚ__pyx_mÚPyModuleObjectzy                Unable to lookup type PyModuleObject, did you compile python
                with debugging support (-g)?Úmd_dict)	r   rõ   Úlookup_typer   r   ÚtextwrapÚdedentÚcastÚpointer)r   Úmr  s      r   Úget_remote_cython_globals_dictz)CythonBase.get_remote_cython_globals_dict¼  s{   € Ü×Ñ˜yÓ)ˆð	2Ü Ÿ_™_Ð-=Ó>ˆNð �F‰F�>×)Ñ)Ó+Ó,ˆØ�‰|Ðøô ò 	2Ü—,‘,œxŸ™ð 00ó  1ó 2ð 2ð	2ús   —A Á2Bc                 óÔ   — | j                  «       }t        j                  j                  |«      }i }t	        «       }|j                  «       D ]  \  }}|||j                  |«      <   Œ |S )zk
        Get the Cython globals dict where the remote names are turned into
        local strings.
        )r  r   ÚPyObjectPtrÚfrom_pyobject_ptrr‡   Ú	iteritemsÚproxyval)r   Úremote_dictÚpyobject_dictrÅ   ÚseenÚkÚvs          r   Úget_cython_globals_dictz"CythonBase.get_cython_globals_dictÊ  se   € ð
 ×9Ñ9Ó;ˆÜ!×-Ñ-×?Ñ?ÀÓLˆàˆÜ‹uˆØ!×+Ñ+Ö-‰DˆAˆqØ'(ˆF�1—:‘:˜dÓ#Ò$ð .ð ˆr!   Nc                 ó¨   — t        j                  |«      rd}nd|j                  ›d�}|€t        |›|›d|›|›�«       y t        d|||||fz  «       y )NrM   rN   z) rB   z%s%-*s = %s%s)r   Úpretty_printer_lookuprx   rò   )r   r   r±   Úmax_name_lengthrG   Útypenames         r   Úprint_gdb_valuezCythonBase.print_gdb_valueÙ  sW   € Ü×*Ñ*¨5Ô1Ø‰Hð 2ð #(§*£*Ð.ˆHàÐ"Ü¡6ª4±¹5ÐAÕBä�/ V¨_¸dÀHÈeÐ$TÑTÕUr!   c                 ó  — |j                   |   }| j                  «       d   }d|j                  v rL||j                  kD  r<|j                  t
        k(  r(t        t        j                  |j                  «      «      S yy||j                  kD  S )NrË   z->TF)	r…   rÉ   rv   rz   rx   r	   ry   r   rõ   )r   râ   Ú
local_nameÚcyvarÚ
cur_linenos        r   Úis_initializedzCythonBase.is_initializedä  sz   € Ø×"Ñ" :Ñ.ˆØ×+Ñ+Ó-¨aÑ0ˆ
à�5—;‘;Ñà˜K×.Ñ.Ò.Ø—:‘:¤Ò-Üœs×1Ñ1°%·+±+Ó>Ó?Ð?ØØà˜EŸL™LÑ(Ð(r!   )F)NrM   )rq   rr   rZ   r#   r'   r.   r¿   rÂ   rÆ   rÉ   rÚ   rÞ   r0   ró   r  r  r  r#  r"   r!   r   r³   r³     s  „ á EÔ*ñ:ó +ð:ñ   EÔ*ñó +ðñ  Ó!ñó "ðñ  Ó!ñ%ó "ð%ñ  Ó!ñó "ðñ  Ó!ñ]ó "ð]ñ  Ó!ñ =ó "ð =ñD  Ó!ñ.ó "ð.ñ  Ó!ñó "ðñ    EÔ*ò? ó +ð? òBòó	Vó)r!   r³   c                   ó2   — e Zd Zdd„Zd„ Zd„ Zd„ Z	 	 dd„Zy)	rÕ   Nc                 ó.   — || _         || _        || _        y r   )re   rÖ   Ú	formatter)r   re   rÖ   r&  s       r   rS   zSourceFileDescriptor.__init__ô  s   € Ø ˆŒØˆŒ
Ø"ˆ�r!   c                 ó   — | j                   d uS r   )re   rn   s    r   ÚvalidzSourceFileDescriptor.validù  s   € Ø�}‰} DÐ(Ð(r!   c                 ó2  — t         r�| j                  r„t        j                  rtt        j                  j
                  }| j                  €!t         j                  j                  |¬«      }n| j                  }t        j                  || j                  |«      S |S )N)Úbg)
rÍ   rÖ   rT   Úcolorize_codeÚterminal_backgroundr±   r&  Ú
formattersÚTerminalFormatterÚ	highlight)r   Úcoder*  r&  s       r   ÚlexzSourceFileDescriptor.lexü  sn   € Ý˜Ÿ
š
¤z×'?Ò'?Ü×/Ñ/×5Ñ5ˆBØ�~‰~Ð%Ü$×/Ñ/×AÑAÀRÐAÓH‘	à ŸN™N�	ä×%Ñ% d¨D¯J©J¸	ÓBÐBàˆr!   c              #   óž  K  — t        | j                  «      5 }|r/|r-| j                  |j                  «       «      j	                  «       }t        j                  ||dz
  |dz
  «      }t        |«      D ]B  \  }}	||z   |k(  rd}
nd}
|r|s| j                  |	«      }	d|
||z   |	j                  «       fz  –— ŒD 	 d d d «       y # 1 sw Y   y xY w­w)NrË   Ú>Ú z%s %4d    %s)	Úopenre   r1  ÚreadÚ
splitlinesÚ	itertoolsÚisliceÚ	enumerater®   )r   ÚstartÚstopÚ
lex_sourceÚ	mark_lineÚ
lex_entirer   ÚsliceÚidxr¤   rG   s              r   Ú_get_sourcez SourceFileDescriptor._get_source  s¶   è ø€ Ü�$—-‘-Ô  Añ
 ™jØ—H‘H˜QŸV™V›XÓ&×1Ñ1Ó3�ä×$Ñ$ Q¨°©	°4¸!±8Ó<ˆEä& uÖ-‘	��TØ˜3‘; )Ò+Ø ‘Fà �Fá¡jØŸ8™8 D›>�Dà$¨°¸±¸T¿[¹[»]Ð'KÑKÓKñ .÷ !× Ñ üs   ‚C˜BCÂ8	CÃC
ÃCc           	      óÖ   — t        j                  d«      }| j                  s|‚t        |d«      }|€|dz   }	 dj	                  | j                  |||||«      «      S # t        $ r |‚w xY w)NzUnable to retrieve source coderË   r@   )r   r   re   ÚmaxrX   rB  ÚOSError)r   r;  r<  r=  r>  r?  Úexcs          r   rÜ   zSourceFileDescriptor.get_source  sx   € ä�l‰lÐ;Ó<ˆà�}Š}ØˆIä�E˜1“ˆØˆ<Ø˜1‘9ˆDð	Ø—9‘9Ø× Ñ  ¨¨j¸)ÀZÓPóRð Røäò 	ØˆIð	ús   ¸#A ÁA(r   )NTr   F)rq   rr   rZ   rS   r(  r1  rB  rÜ   r"   r!   r   rÕ   rÕ   ó  s&   „ ó#ò
)ò
òLð, GHØ#ôr!   rÕ   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )Ú
CyGDBErrorz6
    Base class for Cython-command related errors
    c                 ó@   •— |xs | j                   f}t        ‰| �  |Ž  y r   )Úmsgr�   rS   )r   r   rY   s     €r   rS   zCyGDBError.__init__7  s    ø€ ØÒ"˜Ÿ™�{ˆÜ‰Ñ˜$Òr!   )rq   rr   rZ   Ú__doc__rS   r‰   rŠ   s   @r   rH  rH  2  s   ø„ ñ÷ ð  r!   rH  c                   ó   — e Zd ZdZdZy)rÄ   z]
    raised when the user requests the current cython function, which is
    unavailable
    z7Current function is a function cygdb doesn't know aboutN©rq   rr   rZ   rK  rJ  r"   r!   r   rÄ   rÄ   <  s   „ ñð D�Cr!   rÄ   c                   ó   — e Zd ZdZdZy)r   zi
    raised when the name of the C function could not be determined
    in the current C stack frame
    zDC function name could not be determined in the current C stack frameNrM  r"   r!   r   r   r   D  s   „ ñð�Cr!   r   c                   ó.   ‡ — e Zd ZdZdˆ fd„	Zd„ ZeZˆ xZS )ÚCythonParameterz*
    Base class for cython parameters
    c                 ó€   •— | j                   j                  x| _        | _        t        ‰| �  |||«       |�|| _        y y r   )rY   rK  Úshow_docÚset_docr�   rS   r±   )r   r   Úcommand_classÚparameter_classÚdefaultrY   s        €r   rS   zCythonParameter.__init__T  sA   ø€ Ø'+§~¡~×'=Ñ'=Ð=ˆŒ˜œÜ‰Ñ˜˜}Ø.=ô	?àÐØ ˆD�Jð r!   c                 ó,   — t        | j                  «      S r   )Úboolr±   rn   s    r   Ú__bool__zCythonParameter.__bool__[  s   € Ü�D—J‘JÓÐr!   r   )rq   rr   rZ   rK  rS   rY  Ú__nonzero__r‰   rŠ   s   @r   rP  rP  O  s   ø„ ñõ!ò ð „Kr!   rP  c                   ó   — e Zd ZdZy)Ú CompleteUnqualifiedFunctionNameszH
    Have 'cy break' complete unqualified function or method names.
    N©rq   rr   rZ   rK  r"   r!   r   r\  r\  b  ó   „ òr!   r\  c                   ó   — e Zd ZdZy)ÚColorizeSourceCodez5
    Tell cygdb whether to colorize source code.
    Nr]  r"   r!   r   r`  r`  h  r^  r!   r`  c                   ó   — e Zd ZdZy)ÚTerminalBackgroundzJ
    Tell cygdb about the user's terminal background (light or dark).
    Nr]  r"   r!   r   rb  rb  n  r^  r!   rb  c                   ó   — e Zd ZdZd„ Zy)ÚCythonParametersz–
    Simple container class that might get more functionality in the distant
    future (mostly to remind us that we're dealing with parameters).
    c                 ó  — t        dt        j                  t        j                  d«      | _        t        dt        j                  t        j                  d«      | _        t        dt        j                  t        j                  d«      | _
        y )NÚcy_complete_unqualifiedTÚcy_colorize_codeÚcy_terminal_background_colorÚdark)r\  r   ÚCOMMAND_BREAKPOINTSÚPARAM_BOOLEANÚcomplete_unqualifiedr`  ÚCOMMAND_FILESr+  rb  ÚPARAM_STRINGr,  rn   s    r   rS   zCythonParameters.__init__z  su   € Ü$DØ%Ü×#Ñ#Ü×ÑØó	%ˆÔ!ô
 0ØÜ×ÑÜ×ÑØó	ˆÔô
 $6Ø*Ü×ÑÜ×ÑØó	$ˆÕ r!   N)rq   rr   rZ   rK  rS   r"   r!   r   rd  rd  t  s   „ ñó
r!   rd  c                   óH   — e Zd ZdZej
                  Zed„ «       Zed„ «       Z	y)ÚCythonCommandz(
    Base class for Cython commands
    c                 óŒ   — t        | d«      s | || j                  g|¢­i |¤ŽS  | || j                  | j                  g|¢­i |¤ŽS )NÚcompleter_class)ÚhasattrrT  rr  )ÚclsÚclsnamer   r   s       r   Ú	_registerzCythonCommand._register—  sY   € ä�sÐ-Ô.Ù�w × 1Ñ 1ÐC°DÒC¸FÑCÐCá�w × 1Ñ 1°3×3FÑ3Fð (Øò(Ø &ñ(ð (r!   c                 ó”   — t        | dd «      }|r| j                  | j                  ||«       | j                  | j                  ||«      S )NÚalias)rE   rv  rx  r   )rt  r   r   rx  s       r   ÚregisterzCythonCommand.registerŸ  s>   € ä˜˜W dÓ+ˆÙØ�M‰M˜#Ÿ)™) T¨6Ô2à�}‰}˜SŸX™X t¨VÓ4Ð4r!   N)
rq   rr   rZ   rK  r   ÚCOMMAND_NONErT  Úclassmethodrv  ry  r"   r!   r   rp  rp  �  s:   „ ñð ×$Ñ$€Màñ(ó ð(ð ñ5ó ñ5r!   rp  c                   óV   ‡ — e Zd ZdZdZej                  Zej                  Z	ˆ fd„Z
ˆ xZS )ÚCyCyaa  
    Invoke a Cython command. Available commands are:

        cy import
        cy break
        cy step
        cy next
        cy run
        cy cont
        cy finish
        cy up
        cy down
        cy select
        cy bt / cy backtrace
        cy list
        cy print
        cy set
        cy locals
        cy globals
        cy exec
    rµ   c           	      ój  •— t         t        | �  |||d¬«       t        di dt        j                  «       “dt        j                  «       “dt        j                  «       “dt        j                  «       “dt        j                  «       “dt        j                  «       “d	t        j                  «       “d
t        j                  «       “dt        j                  «       “dt        j                  «       “dt        j                  «       “dt         j                  «       “dt"        j                  «       “dt$        j                  «       “dt&        j                  «       “dt)        j*                  dd«      “dt,        j                  «       “dt.        j                  «       “dt1        d«      “dt3        d«      “dt5        d«      “dt7        d«      “Ž}|j9                  «       D ]  \  }}| |_        t=        | ||«       Œ | | _        i | _        i | _         i | _!        tE        jF                  tH        «      | _%        y )NT)rG   Úimport_Úbreak_ÚstepÚnextÚrunÚcontÚfinishÚupÚdownrñ   ÚbtÚlistÚprint_r…   rg   Úexec_zcy execú-cy-execÚ_execr‡   Úcy_cnamerç   Ú	cy_linenoÚcy_evalr"   )&r�   rp  rS   ÚdictÚCyImportry  ÚCyBreakÚCyStepÚCyNextÚCyRunÚCyContÚCyFinishÚCyUpÚCyDownÚCySelectÚCyBacktraceÚCyListÚCyPrintÚCyLocalsÚ	CyGlobalsr   ÚFixGdbCommandÚCyExecÚCySetÚCyCNameÚCyCValueÚCyLineÚCyEvalÚitemsrµ   ÚsetattrÚcython_namespaceÚfunctions_by_qualified_namer¶   ÚcollectionsÚdefaultdictr‰  Úfunctions_by_name)r   r   rT  rr  ÚcommandsÚcommand_nameÚcommandrY   s          €r   rS   zCyCy.__init__Ã  s  ø€ äŒm˜TÑ+¨D°-Ø,;ÀDð 	,ô 	Jô ò 
ä×'Ñ'Ô)ð
ô ×%Ñ%Ô'ð
ô —?‘?Ô$ð	
ô
 —?‘?Ô$ð
ô —.‘.Ô"ð
ô —?‘?Ô$ð
ô ×&Ñ&Ô(ð
ô —‘”ð
ô —?‘?Ô$ð
ô ×&Ñ&Ô(ð
ô ×%Ñ%Ô'ð
ô —?‘?Ô$ð
ô ×%Ñ%Ô'ð
ô ×&Ñ&Ô(ð
ô   ×(Ñ(Ô*ð!
ô" ×+Ñ+¨I°zÔBð#
ô$ —O‘OÔ%ð%
ô& —.‘.Ô"ð'
ô, ˜zÔ*ð-
ô. ! Ô-ð/
ô0 ˜{Ô+ð1
ô2 ˜YÔ'ð3
ˆð8 &.§^¡^Ö%5Ñ!ˆL˜'ØˆGŒJÜ�D˜,¨Õ0ð &6ð ˆŒð !#ˆÔð ,.ˆÔ(ð #%ˆÔô "-×!8Ñ!8¼Ó!>ˆÕr!   )rq   rr   rZ   rK  r   r   rz  rT  ÚCOMPLETE_COMMANDrr  rS   r‰   rŠ   s   @r   r}  r}  ¨  s/   ø„ ñð, €DØ×$Ñ$€MØ×*Ñ*€O÷3?ð 3?r!   r}  c                   óh   — e Zd ZdZdZej                  Zej                  Z	e
j                  d„ «       Zy)r’  zb
    Import debug information outputted by the Cython compiler
    Example: cy import FILE...
    z	cy importc           
      ól  — t        |t        «      r|j                  t        «      }t	        |«      D �]Ç  }	 t        |«      }t        j                  |«      }|j                  «       D �]�  }t        di |j                  ¤Ž}|| j                  j                   |j"                  <   |j%                  d«      D ])  }	|	j                  }
t'        di |
¤Ž|j(                  |
d   <   Œ+ |j%                  d«      D �]_  }t+        dd|i|j                  ¤Ž}|j"                  }|j,                  }| j                  j.                  |   j1                  |«       || j                  j2                  |j,                  <   || j                  j4                  |j6                  <   |x}
|j8                  |<   |j%                  d«      D ])  }|j                  }
t'        di |
¤Ž|j:                  |
d   <   Œ+ |j%                  d	«      D ],  }|j                  }
|j<                  j?                  |
d   «       Œ. |j@                  jC                  d
„ |j%                  d«      D «       «       �Œb |j%                  d«      D ]�  }tE        |j                  d   «      }|j                  d   }tG        tI        tD        |j                  d   jK                  «       «      «      }tM        |«      |jN                  ||f<   |D ]  }||f|jP                  |<   Œ Œ‘ �Œ’ �ŒÊ y # t        $ r-}t        j                  d|›d|j                  d   ›�«      ‚d }~ww xY w)NzUnable to open file r£   rË   ÚGlobalsr   Ú	Functionsr‚   ÚLocalsÚStepIntoFunctionsc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   )Útag)rì   Úfuncargs     r   rî   z"CyImport.invoke.<locals>.<genexpr>/  s   è ø€ ð 5OÙ3M¨˜Ÿ�Ñ3Mùs   ‚Ú	ArgumentsÚLineNumberMappingÚ
src_linenoÚsrc_pathÚ	c_linenosr"   ))r:   rø   ÚdecodeÚ_filesystemencodingr   r5  rE  r   r   r   r   ÚparseÚgetrootrc   Úattribrµ   rª  r   Úfindrt   rg   r}   rw   r®  Úappendr«  r¶   rv   rj   r…   rˆ   Úaddr†   Úextendry   r‰  Úmapr   Úminrh   ri   )r   r   Úfrom_ttyrJ   r   ÚeÚtr‚   Úcython_moduleÚvariableÚdr   Úcython_functionr   ÚqnameÚlocalÚstep_into_funcÚmarkerr¾  r¿  rÀ  Úc_linenos                         r   rè   zCyImport.invoke  så  € ä�dœEÔ"Ø—;‘;Ô2Ó3ˆDÜ! $×'ˆCðUÜ˜“I�ô —‘˜A“ˆAàŸ)™)Ÿ+�Ü ,Ñ =¨v¯}©}Ñ =�Ø?L�—‘×(Ñ(¨×);Ñ);Ñ<à &§¡¨IÖ 6�HØ Ÿ™�AÜ7EÑ7JÈÑ7J�M×)Ñ)¨!¨F©)Ò4ð !7ð !'§¡¨K× 8�HÜ&4ñ 'H¸Mð 'HØ7?·±ñ'H�Oð +×/Ñ/�DØ+×:Ñ:�Eà—G‘G×-Ñ-¨dÑ3×:Ñ:¸?ÔKà:Ið —G‘G×7Ñ7Ø'×6Ñ6ñ8ð 2Að —G‘G×.Ñ.Ø'×-Ñ-ñ/ð :IÐH�A˜×/Ñ/°Ñ6à!)§¡¨xÖ!8˜Ø!ŸL™L˜Ü<JÑ<OÈQÑ<O˜×.Ñ.¨q°©yÒ9ð "9ð +3¯-©-Ð8KÖ*L˜Ø*×1Ñ1˜Ø'×;Ñ;×?Ñ?ÀÀ&Á	ÕJð +Mð $×-Ñ-×4Ñ4ñ 5OØ3;·=±=ÀÔ3Mó5Oö Oð1 !9ð6 %Ÿk™kÐ*=Ö>�FÜ!$ V§]¡]°<Ñ%@Ó!A�JØ%Ÿ}™}¨ZÑ8�HÜ $¤S¬¨f¯m©m¸KÑ.H×.NÑ.NÓ.PÓ%QÓ R�IÜFIÈ)Ãn�M×-Ñ-¨h¸
Ð.BÑCÛ$-˜Ø?GÈÐ>T˜×1Ñ1°(Ò;ñ %.ò ?òG &ñ (øô ò UÜ—l’lÂ4ÈÏÉÐPQÊÐ#SÓTÐTûðUús   ¶K=Ë=	L3Ì(L.Ì.L3N)rq   rr   rZ   rK  r   r   ÚCOMMAND_STATUSrT  ÚCOMPLETE_FILENAMErr  r   Údont_suppress_errorsrè   r"   r!   r   r’  r’  ù  s>   „ ñð
 €DØ×&Ñ&€MØ×+Ñ+€Oà×#Ñ#ñ4Uó $ñ4Ur!   r’  c                   ó€   — e Zd ZdZdZej                  Zd„ Zd„ Z	e
j                  d„ «       Ze
j                  d„ «       Zy)r“  a  
    Set a breakpoint for Cython code using Cython qualified name notation, e.g.:

        cy break cython_modulename.ClassName.method_name...

    or normal notation:

        cy break function_or_method_name...

    or for a line number:

        cy break cython_module:lineno...

    Set a Python breakpoint:
        Break on any function or method named 'func' in module 'modname'

            cy break -p modname.func...

        Break on any function or method named 'func'

            cy break -p func...
    zcy breakc                 ó–  — |j                  d«      \  }}}t        |«      }|r| j                  j                  |   }n| j	                  «       j
                  }|j                  |f|j                  v rE|j                  |j                  |f   }|j                  ›d|›�}t        j                  d|z   «       y t        j                  d«      ‚)Nrï   úbreak z5Not a valid line number. Does it contain actual code?)Ú	partitionry   rµ   rª  rÆ   r‚   re   rh   rf   r   r/   r   )r   r   Ú
modulenameÚ_rz   rÏ  r×  Ú
breakpoints           r   Ú
_break_pyxzCyBreak._break_pyxV  s¶   € Ø $§¡¨sÓ 3Ñˆ
�A�vÜ�V“ˆÙØ ŸG™G×4Ñ4°ZÑ@‰Mà ×4Ñ4Ó6×=Ñ=ˆMà×"Ñ" FÐ+¨}×/HÑ/HÑHØ$×0Ñ0°×1GÑ1GÈÐ1OÑPˆHØ$1×$<Ó$<¹hÐGˆJÜ�K‰K˜ :Ñ-Õ.ä—,‘,ð  >ó ?ð ?r!   c                 ó²  — | j                   j                  j                  |«      }|r|j                  rd }|g}|�s0| j                   j                  j                  |«      xs g }|D �cg c]  }|j                  rŒ|‘Œ }}|st        j                  d|z   «       y t        |«      dkD  r¼t        d«       t        |«      D ]  \  }}t        d||j                  fz  «       Œ! 	 	 t        d«      }|j                  «       dk(  ry |j                  «       dk(  r|}nS|j                  «       r0dt        |«      cxk  rt        |«      k  rn n|t        |«         g}nt        d	«       	 Œƒ|d   g}|D ]S  }t        j                  d
|j                   z  «       |j"                  sŒ2t        j                  d
|j"                  z  «       ŒU y c c}w # t        $ r Y y w xY w)NrÝ  rË   z"There are multiple such functions:z%3d) %szMSelect a function, press 'a' for all functions or press 'q' or '^D' to quit: Úqr  r   zNot understood...zbreak %s)rµ   r«  r&   r„   r®  r   r/   Úlenrò   r:  rw   ÚinputÚlowerÚisdigitry   ÚEOFErrorrv   rƒ   )r   ÚfuncnameÚfuncÚbreak_funcsÚfuncsr   rA  rÅ   s           r   Ú_break_funcnamezCyBreak._break_funcnamef  s¯  € Ø�w‰w×2Ñ2×6Ñ6°xÓ@ˆá�D×/Ò/ØˆDà�fˆâØ—G‘G×-Ñ-×1Ñ1°(Ó;ÒA¸rˆEÙ %ÓF¡˜1¨Q×-EÓ-E’Q ˆEÐFáÜ—‘˜H xÑ/Ô0Øä�5‹z˜AŠ~äÐ:Ô;Ü!*¨5Ö!1‘I�C˜Ü˜) s¨D×,?Ñ,?Ð&@Ñ@ÕAð "2ð ð7Ü!&ðGó"H˜ð "Ÿ<™<›>¨SÒ0Ø"Ø#Ÿ\™\›^¨sÒ2Ø*/˜KØ!Ø$Ÿn™nÔ.Ø !¤S¨£[Ô =´3°u³:Õ =Ø+0´°V³Ñ+=Ð*>˜KØ!ä!Ð"5Õ6ð% ð(  % Q™x˜j�ãˆDÜ�K‰K˜
 T§Z¡ZÑ/Ô0Ø�}‹}Ü—‘˜J¨¯©Ñ6Õ7ñ  ùòE Gøô" $ò Ùðús   Á)GÁ;GÃ$G
 Ç
	GÇGc                 ó,  — t        |t        «      r|j                  t        «      }t	        |«      }|j                  d«      r|dd  }d}nd}|D ]D  }|rt        j                  d|z  «       Œd|v r| j                  |«       Œ4| j                  |«       ŒF y )Nz-prË   TFzpy-break %srï   )
r:   rø   rÁ  rÂ  r   r§   r   r/   râ  rî  )r   Úfunction_namesrÌ  ÚargvÚpython_breakpointsrê  s         r   rè   zCyBreak.invoke—  s‹   € ä�n¤eÔ,Ø+×2Ñ2Ô3FÓGˆNÜ˜nÓ-ˆØ×$Ñ$ TÔ*Ø˜˜�8ˆDØ!%Ñà!&ÐãˆHÙ!Ü—‘˜M¨HÑ4Õ5Ø˜‘Ø—‘ Õ)à×$Ñ$ XÕ.ñ r!   c                 ó^  — |xs d}| j                   j                  j                  «       D ��cg c]  \  }}t        d„ |D «       «      r|‘Œ }}}| j                   j                  j                  «       D ��cg c]  \  }}|j
                  s|‘Œ }}}t        j                  rt        j                  ||«      }n|}|j                  «       j                  «       }	|	rd|	d   vrKt        |d t        |«        j                  «       «      }
|D �cg c]  }|j                  |«      r||
vr|‘Œ c}S |	d   }|D �cg c]  }|j                  |«      sŒ|‘Œ }}t        |«      t        |«      kD  r)t        |«      t        |«      z
  }|D �cg c]  }||d  ‘Œ	 }}|S c c}}w c c}}w c c}w c c}w c c}w )NrM   c              3   ó6   K  — | ]  }|j                    –— Œ y ­wr   )r„   )rì   r   s     r   rî   z#CyBreak.complete.<locals>.<genexpr>±  s   è ø€ ÐA¹q¸!˜Q×5Ñ5Ô5¹qùs   ‚Ú.éÿÿÿÿ)rµ   r®  r¨  Úanyr«  r„   rT   rl  r8  ÚchainÚstripr   r‡   rå  r§   )r   ÚtextÚwordÚnÚLÚnamesr   ÚqnamesÚ	all_namesÚwordsr  ÚlastwordÚcomplÚstrip_prefix_lengths                 r   ÚcompletezCyBreak.completeª  s±  € ð Šz�rˆð !%§¡× 9Ñ 9× ?Ñ ?Ô Aô CÑ A™˜˜1ÜÑA¹qÓAÔAò Ð Aˆñ Cà $§¡× CÑ C× IÑ IÔ Kô 3Ñ K™˜˜1Ø×1Ò1ò Ð Kˆñ 3ô ×*Ò*Ü!Ÿ™¨°Ó6‰IàˆIà—
‘
“×"Ñ"Ó$ˆÙ˜ 5¨¡9Ñ,ä�t˜Kœc $›i˜ZÐ(×.Ñ.Ó0Ó1ˆDÙ(ó C™y˜!ØŸ\™\¨$Ô/°A¸T±Mò ˜yñ Cð Cð ˜‘9ˆÙ"Ó=™F�q a§l¡l°8Õ&<’˜FˆÐ=äˆx‹=œ3˜t›9Ò$ô #& h£-´#°d³)Ñ";ÐÙ6;Ó<±e°�QÐ*Ð+Ò,°eˆEÐ<àˆùó7Cùó3ùòCùò
 >ùò =s#   ®FÁ6FÄF Ä5F%ÅF%ÆF*N)rq   rr   rZ   rK  r   r   rj  rT  râ  rî  r   rÚ  rè   r  r"   r!   r   r“  r“  ;  sX   „ ñð. €DØ×+Ñ+€Mò?ò /8ðb ×#Ñ#ñ/ó $ð/ð$ ×#Ñ#ñ ó $ñ r!   r“  c                   óB   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ fd„Zd„ Zd„ Zˆ xZ	S )Ú
CythonInfozM
    Implementation of the interface dictated by libpython.LanguageInfo.
    c                 ól   •— | j                  |«      r| j                  |«      d   S t        ‰| �  |«      S ©NrË   )r'   rÉ   r�   rz   ©r   r   rY   s     €r   rz   zCythonInfo.linenoÓ  s8   ø€ ð
 ×"Ñ" 5Ô)Ø×)Ñ)¨%Ó0°Ñ3Ð3Ü‰w‰~˜eÓ$Ð$r!   c                 ó~   •— 	 t         ‰| �  |«      }|j                  «       xs d S # t        j                  $ r Y y w xY wr   )r�   rÞ   rù  r   r   )r   r   r¤   rY   s      €r   rÞ   zCythonInfo.get_source_lineÜ  sB   ø€ ð	(Ü‘7Ñ*¨5Ó1ˆDð —:‘:“<Ò' 4Ð'øô �|‰|ò 	Ùð	ús   ƒ& ¦<»<c                 ó<   •— | j                   rt        ‰| �	  |«      S y r   )r.   r�   Úexc_infor
  s     €r   r  zCythonInfo.exc_infoä  s!   ø€ Ø×"Ò"Ü‘7Ñ# EÓ*Ð*ð #r!   c                 óX   — | j                  «       r| j                  «       j                  S y)Nr"   )r'   rÆ   rˆ   rn   s    r   Úruntime_break_functionsz"CythonInfo.runtime_break_functionsè  s&   € Ø×"Ñ"Ô$Ø×+Ñ+Ó-×AÑAÐAØr!   c                 óV   — dg}|j                  | j                  j                  «       |S )Nr¹   )rÉ  rµ   r¶   )r   rÅ   s     r   Ústatic_break_functionsz!CythonInfo.static_break_functionsí  s%   € Ø&Ð'ˆØ�‰�d—g‘g×0Ñ0Ô1Øˆr!   )
rq   rr   rZ   rK  rz   rÞ   r  r  r  r‰   rŠ   s   @r   r  r  Î  s!   ø„ ñô%ô(ô+òö
r!   r  c                   ó   — e Zd Zed„ «       Zy)ÚCythonExecutionControlCommandc                 ó0   —  | | j                   t        «      S r   )r   Úcython_info)rt  s    r   ry  z&CythonExecutionControlCommand.registerö  s   € á�3—8‘8œ[Ó)Ð)r!   N)rq   rr   rZ   r{  ry  r"   r!   r   r  r  ó  s   „ ð ñ*ó ñ*r!   r  c                   ó<   — e Zd ZdZdZdZej                  d„ «       Zy)r”  z&Step through Cython, Python or C code.zcy -stepTc                 ó$  — | j                  «       r| j                  | j                  «       y | j                  «       s8| j                  rd}nd}| j	                  t        j                  |d¬«      «       y | j                  | j                  ¬«       y )Nr�  r‚  T©Ú	to_string)Ústepinto)r.   Úpython_stepr  r'   Úfinish_executingr   r/   r�  )r   r   rÌ  r±  s       r   rè   zCyStep.invoke  sh   € à×"Ñ"Ô$Ø×Ñ˜TŸ]™]Õ+Ø×(Ñ(Ô*Ø�}Š}Ø ‘à �à×!Ñ!¤#§+¡+¨gÀÔ"FÕGà�I‰I˜tŸ}™}ˆIÕ-r!   N)	rq   rr   rZ   rK  r   r  r   rÚ  rè   r"   r!   r   r”  r”  û  s'   „ Ù,à€DØ€Hà×#Ñ#ñ.ó $ñ.r!   r”  c                   ó   — e Zd ZdZdZdZy)r•  z#Step-over Cython, Python or C code.zcy -nextFN)rq   rr   rZ   rK  r   r  r"   r!   r   r•  r•    s   „ Ù)à€DØ�Hr!   r•  c                   óL   — e Zd ZdZdZ ej                  ej                  «      Z	y)r–  z�
    Run a Cython program. This is like the 'run' command, except that it
    displays Cython or Python source lines as well
    zcy runN)
rq   rr   rZ   rK  r   r   rÚ  r  rƒ  rè   r"   r!   r   r–  r–    s'   „ ñð
 €Dà+ˆY×+Ñ+Ð,I×,MÑ,MÓN�Fr!   r–  c                   óL   — e Zd ZdZdZ ej                  ej                  «      Z	y)r—  z‡
    Continue a Cython program. This is like the 'run' command, except that it
    displays Cython or Python source lines as well.
    zcy contN)
rq   rr   rZ   rK  r   r   rÚ  r  r„  rè   r"   r!   r   r—  r—  "  s'   „ ñð
 €DØ+ˆY×+Ñ+Ð,I×,NÑ,NÓO�Fr!   r—  c                   óL   — e Zd ZdZdZ ej                  ej                  «      Z	y)r˜  z-
    Execute until the function returns.
    z	cy finishN)
rq   rr   rZ   rK  r   r   rÚ  r  r…  rè   r"   r!   r   r˜  r˜  ,  s'   „ ñð €Dà+ˆY×+Ñ+Ð,I×,PÑ,PÓQ�Fr!   r˜  c                   ó<   — e Zd ZdZdZdZej                  d„ «       Zy)r™  z5
    Go up a Cython, Python or relevant C frame.
    zcy upr†  c                 óü  — 	 t        j                  | j                  d¬«       | j                  t        j                  «       «      sEt        j                  | j                  d¬«       | j                  t        j                  «       «      sŒEt        j                  «       }d}|r|j                  «       }|dz  }|rŒ| j                  |dz
  ¬«       y # t
        $ r!}t        j                  |j                  Ž ‚d }~ww xY w)NTr  r   rË   )rü   )
r   r/   Ú_commandr0   r   r   r   r   rà   ró   )r   r   rÍ  r   rü   s        r   rè   zCyUp.invoke<  sÈ   € ð	(Ü�K‰K˜Ÿ™°Õ6Ø×/Ñ/´×0BÑ0BÓ0DÔEÜ—‘˜DŸM™M°TÕ:ð ×/Ñ/´×0BÑ0BÓ0DÕEô
 ×"Ñ"Ó$ˆØˆÙØ—K‘K“MˆEØ�Q‰JˆEò ð 	×Ñ E¨A¡IÐÕ.øô ò 	(Ü—,‘, §¡Ð'Ð'ûð	(ús   ‚BC Ã	C;ÃC6Ã6C;N)	rq   rr   rZ   rK  r   r#  r   rÚ  rè   r"   r!   r   r™  r™  5  s+   „ ñð €DØ€Hà×#Ñ#ñ/ó $ñ/r!   r™  c                   ó   — e Zd ZdZdZdZy)rš  z7
    Go down a Cython, Python or relevant C frame.
    zcy downr‡  N)rq   rr   rZ   rK  r   r#  r"   r!   r   rš  rš  N  s   „ ñð €DØ�Hr!   rš  c                   ó8   — e Zd ZdZdZej                  d„ «       Zy)r›  z—
    Select a frame. Use frame numbers as listed in `cy backtrace`.
    This command is useful because `cy backtrace` prints a reversed backtrace.
    z	cy selectc                 ó´  — 	 t        |«      }t        j                  «       }|j                  «       r!|j                  «       }|j                  «       rŒ!t        j                  |«      }	 t        j                  d||z
  dz
  fz  «       y # t        $ r t        j                  d|›�«      ‚w xY w# t        $ r!}t        j                  |j                  Ž ‚d }~ww xY w)NzNot a valid number: z	select %drË   )ry   Ú
ValueErrorr   r   r   Únewerr   Ú
stackdepthr/   r   r   )r   ÚstacknorÌ  r   r)  rÍ  s         r   rè   zCySelect.invoke_  s¾   € ð	FÜ˜'“lˆGô ×"Ñ"Ó$ˆØ�k‰kŒmØ—K‘K“MˆEð �k‰k�mô ×)Ñ)¨%Ó0ˆ
ð	(Ü�K‰K˜ z°GÑ';¸aÑ'?Ð&AÑAÕBøô ò 	FÜ—,’,¹7ÐDÓEÐEð	Fûô ò 	(Ü—,‘, §¡Ð'Ð'ûð	(ús#   ‚B Á(B- Â"B*Â-	CÂ6CÃCN)rq   rr   rZ   rK  r   r   rÚ  rè   r"   r!   r   r›  r›  W  s&   „ ñð
 €Dà×#Ñ#ñ(ó $ñ(r!   r›  c                   óv   — e Zd ZdZdZdZej                  Zej                  Z
ej                  ed„ «       «       Zy)rœ  zPrint the Cython stackzcy btzcy backtracec                 óD  — t        j                  «       }|j                  «       r!|j                  «       }|j                  «       rŒ!|dk(  }d}|rA	 | j                  |«      }|s|r| j                  ||«       |dz  }|j                  «       }|rŒ@y y # t        $ r d}Y Œ=w xY w)Nz-ar   FrË   )r   r   rà   r0   rH  ró   r(  )r   r   rÌ  r   Ú	print_allrü   Úis_relevants          r   rè   zCyBacktrace.invokez  sŸ   € ô ×"Ñ"Ó$ˆØ�k‰kŒmØ—K‘K“MˆEð �k‰k�mð ˜D‘Lˆ	àˆÙð$Ø"×7Ñ7¸Ó>�ñ ™KØ×%Ñ% e¨UÔ3à�Q‰JˆEØ—K‘K“MˆEô øô ò $Ø#’ð$ús   ÁB ÂBÂBN)rq   rr   rZ   rK  r   rx  r   ÚCOMMAND_STACKrT  ÚCOMPLETE_NONErr  r   rÚ  r(   rè   r"   r!   r   rœ  rœ  r  sE   „ Ùà€DØ€EØ×%Ñ%€MØ×'Ñ'€Oà×#Ñ#Øñ"ó ó $ñ"r!   rœ  c                   óh   — e Zd ZdZdZej                  Zej                  Z	e
j                  d„ «       Zy)r�  za
    List Cython source code. To disable to customize colouring see the cy_*
    parameters.
    zcy listc                 óv   — | j                  «       \  }}|j                  |dz
  |dz   |d¬«      }t        |«       y )Né   T)r>  r?  )rÚ   rÜ   rò   )r   rà  rÌ  Úsdrz   Úsources         r   rè   zCyList.invokeœ  sA   € ð ×)Ñ)Ó+‰
ˆˆFØ—‘˜v¨™z¨6°A©:ÀØ*.ð ó 0ˆäˆf�r!   N)rq   rr   rZ   rK  r   r   rm  rT  r0  rr  r   rÚ  rè   r"   r!   r   r�  r�  ’  s<   „ ñð
 €DØ×%Ñ%€MØ×'Ñ'€Oà×#Ñ#ñó $ñr!   r�  c                   óV   — e Zd ZdZdZej                  Zej                  d„ «       Z
d„ Zy)rž  zT
    Print a Cython variable using 'cy-print x' or 'cy-print module.function.x'
    zcy printc                 ó,  — | j                  «       }| j                  «       j                  j                  }||v r3||   j	                  t
        j                  «      }t        |›d|›�«       y ||v rS||   j                  }	 t        j                  |«      }|j                  s| j                  ||«       y t        d|z  «       y | j                  «       rt        j                  d|z   «      S | j!                  «       re| j"                  j$                  j'                  |j)                  d«      «      }|D ]  }|dk(  r|j+                  «       }Œ n | j                  ||«       y t        j                  d|z   «       y # t        $ r t        d|z  «       Y y w xY w)NrB   z%s is optimized outzunable to get value of %sz	py-print Ú*zprint )r  rÆ   r‚   rg   Úget_truncated_reprr   ÚMAX_OUTPUT_LENrò   rv   r   rõ   r¼   r  r   r.   r/   r'   rµ   rç   rè   ÚlstripÚdereference)r   r   rÌ  Úglobal_python_dictÚmodule_globalsr±   rv   Úcs           r   rè   zCyPrint.invoke­  sf  € à!×9Ñ9Ó;ÐØ×1Ñ1Ó3×:Ñ:×BÑBˆàÐ%Ñ%Ø& tÑ,×?Ñ?Ä	×@XÑ@XÓYˆEÜšt¡UÐ+Õ,ð �^Ñ#Ø" 4Ñ(×.Ñ.ˆEð8Ü×*Ñ*¨5Ó1�ð ×-Ò-Ø×(Ñ(¨¨uÕ5äÐ/°$Ñ6Õ7Ø×$Ñ$Ô&Ü—;‘;˜{¨TÑ1Ó2Ð2Ø×$Ñ$Ô&Ø—G‘G×%Ñ%×,Ñ,¨T¯[©[¸Ó-=Ó>ˆEÛ�Ø˜’8Ø!×-Ñ-Ó/‘Eáð	 ð × Ñ   uÕ-ä�K‰K˜ 4™Õ(øô'  ò :ÜÐ1°DÑ8Ö9ð:ús   Â E9 Å9FÆFc                 ó¬   — | j                  «       rC| j                  «       }t        t        j                  |j
                  |j                  «      «      S g S r   )r'   rÆ   r‰  r8  rø  r…   rg   )r   r   s     r   r  zCyPrint.completeÐ  s?   € Ø×"Ñ"Ô$Ø×(Ñ(Ó*ˆAÜœ	Ÿ™¨¯©°!·)±)Ó<Ó=Ð=àˆIr!   N)rq   rr   rZ   rK  r   r   ÚCOMMAND_DATArT  r   rÚ  rè   r  r"   r!   r   rž  rž  ¥  s7   „ ñð €DØ×$Ñ$€Mà×#Ñ#ñ )ó $ð )óDr!   rž  c                 ó(   — | d   j                  «       S )Nr   )rç  )Úitems    r   ré   ré   Ø  s   € �t˜A‘w—}‘}”r!   c                   ó‚   — e Zd ZdZdZej                  Zej                  Z	e
j                   edd¬«      d„ «       «       Zy)rŸ  z8
    List the locals from the current Cython frame.
    z	cy localszinfo localsz	py-locals©r3   r4   c                 ó  — | j                  «       }|j                  r'| j                  j                  j	                  ||«       y |j
                  }t        t        |t        ¬«      «      }t        |j                  «       t        ¬«      D ]z  \  }}| j                  | j                  «       |j                  «      sŒ1t        j                  |j                  «      }|j                   rŒ]| j#                  |j                  ||d«       Œ| y )N©ÚkeyrM   )rÆ   r„   rµ   rg   rè   r…   rå  rD  rU   r¨  Úsortkeyr#  r   r   rõ   rv   r¼   r  )	r   r   rÌ  rÒ  Úlocal_cython_varsr  r   r!  r±   s	            r   rè   zCyLocals.invokeä  sÉ   € ð ×2Ñ2Ó4ˆà×1Ò1Ø�G‰G�O‰O×"Ñ" 4¨Ô2Øà+×2Ñ2ÐÜœcÐ"3¼Ô=Ó>ˆÜ!Ð"3×"9Ñ"9Ó";Ä×I‰KˆD�%Ø×"Ñ" 4×#;Ñ#;Ó#=¸u¿z¹zÕJÜ×*Ñ*¨5¯;©;Ó7�Ø×-Ó-Ø×(Ñ(¨¯©°UØ)8¸"õ>ñ	 Jr!   N©rq   rr   rZ   rK  r   r   r/  rT  r0  rr  r   rÚ  r5   rè   r"   r!   r   rŸ  rŸ  Û  sL   „ ñð €DØ×%Ñ%€MØ×'Ñ'€Oà×#Ñ#Ù ¸{ÔKñ>ó Ló $ñ>r!   rŸ  c                   ó‚   — e Zd ZdZdZej                  Zej                  Z	e
j                   edd¬«      d„ «       «       Zy)r   z:
    List the globals from the current Cython module.
    z
cy globalszinfo variablesz
py-globalsrE  c                 ó  — | j                  «       }| j                  «       j                  j                  }d}d}|rt	        t        |t        ¬«      «      }|rt	        t        |«      «      }t        ||«      }t        «       }t        d«       t        |j                  «       t        ¬«      D ]F  \  }	}
|
j                  t        j                  «      }
|j                  |	«       t        d||	|
fz  «       ŒH t        d«       t        |j                  «       t        ¬«      D ]U  \  }}||vsŒ	 t        j                   |j"                  «      }|j$                  rŒ8| j'                  |j(                  ||d«       ŒW y # t*        $ r Y Œdw xY w)Nr   rG  zPython globals:z    %-*s = %sz
C globals:rð   )r  rÆ   r‚   rg   rå  rD  r‡   rò   rU   r¨  rI  r9  r   r:  rÈ  r   rõ   rv   r¼   r  r   r   )r   r   rÌ  r=  r>  Úmax_globals_lenÚmax_globals_dict_lenr  r  r  r  r   r!  r±   s                 r   rè   zCyGlobals.invoke   sX  € ð "×9Ñ9Ó;ÐØ×1Ñ1Ó3×:Ñ:×BÑBˆàˆØ ÐÙÜ!¤# n¼#Ô">Ó?ˆOÙÜ#&¤sÐ+=Ó'>Ó#?Ð ä˜oÐ/CÓDˆä‹uˆÜÐÔ äÐ-×3Ñ3Ó5¼7×C‰DˆAˆqØ×$Ñ$¤Y×%=Ñ%=Ó>ˆAØ�H‰H�QŒKÜ�/ _°a¸Ð$;Ñ;Õ<ð Dô
 	ˆlÔÜ! .×"6Ñ"6Ó"8¼g×F‰KˆD�%Ø˜4ÒðFÜ×.Ñ.¨u¯{©{Ó;�Eð !×1Ó1Ø×,Ñ,¨U¯Z©Z¸Ø-<¸fõFñ Gøô $ò Ùðús   Ä*E7Å7	FÆFNrK  r"   r!   r   r   r   ÷  sO   „ ñð €DØ×%Ñ%€MØ×'Ñ'€Oà×#Ñ#ÙÐ!1À,ÔOñFó Pó $ñFr!   r   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚEvaluateOrExecuteCodeMixinzð
    Evaluate or execute Python code in a Cython or Python frame. The 'evalcode'
    method evaluations Python code, prints a traceback if an exception went
    uncaught, and returns any return value as a gdb.Value (NULL on exception).
    c                 óJ  — | j                  «       }|j                  j                  «       D ]Ñ  \  }}|j                  t        k(  sŒ| j                  ||«      sŒ-	 t        j                  |j                  «      }|j                  rŒZ|j                  |«      }d|||j                  fz  }	 t        j                  |«      dk  r*t        j                  d«       t        j                  d«      ‚	 |j                  |«       ŒÓ y# t        $ r Y Œàw xY w# |j                  |«       w xY w)zBFill a remotely allocated dict with values from the Cython C stackz½
                    (PyObject *) PyDict_SetItem(
                        (PyObject *) %d,
                        (PyObject *) %d,
                        (PyObject *) %s)
                r   zPyErr_Print()zUnable to execute Python code.N)rÆ   r…   r¨  rx   r	   r#  r   rõ   rv   r¼   r   Úalloc_pystringr   Úxdecref)	r   ÚexecutorÚlocal_dict_pointerrâ   r   r!  rí   Ú	pystringpr0  s	            r   Ú_fill_locals_dictz,EvaluateOrExecuteCodeMixin._fill_locals_dict+  s  € à×.Ñ.Ó0ˆà&×-Ñ-×3Ñ3Ö5‰KˆD�%Ø—
‘
œlÓ*Ø×+Ñ+¨K¸Õ>ð!Ü×,Ñ,¨U¯[©[Ó9�Cð ×+Ò+Ø à$×3Ñ3°DÓ9�	ðð
 *¨9°e·k±kÐBñC�ð0Ü×)Ñ)¨$Ó/°!Ò3Ü×*Ñ*¨?Ô;Ü!Ÿl™lÐ+KÓLÐLð 4ð
 ×$Ñ$ YÕ/ñ5 6øô $ò Ùðûð( ×$Ñ$ YÕ/ús   ÁD Â)ADÄ 	DÄDÄD"c                 óæ   — t        j                  «       }|rG| j                  |«      s| j                  |«      r|j	                  «        |S |j                  «       }|rŒGt        j                  d«      ‚)Nz0There is no Cython or Python frame on the stack.)r   r   r'   r.   rñ   rà   r   r·   s     r   Ú"_find_first_cython_or_python_framez=EvaluateOrExecuteCodeMixin._find_first_cython_or_python_frameK  s_   € Ü×"Ñ"Ó$ˆÙØ×'Ñ'¨Ô.Ø×.Ñ.¨uÔ5Ø—‘”Ø�à—K‘K“MˆEò ô �l‰lÐMÓNÐNr!   c                 ó¾  — t        j                  «       5  t        j                  d«      }t        j                  d«      }	 | j	                  |t        j
                  |«      «       |j                  ||||«      }|j                  t        j
                  |«      «       	 d d d «       |S # |j                  t        j
                  |«      «       w xY w# 1 sw Y   S xY w)Nz&(PyObject *) PyModule_GetDict(__pyx_m)z(PyObject *) PyDict_New())r   ÚFetchAndRestoreErrorr   rõ   rX  ÚpointervalueÚevalcoderT  )r   rU  r0  Ú
input_typeÚglobal_dictÚ
local_dictrÅ   s          r   Ú_evalcode_cythonz+EvaluateOrExecuteCodeMixin._evalcode_cythonW  sÃ   € Ü×+Ñ+Õ-ô ×,Ñ,Ø8ó:ˆKä×+Ñ+Ð,GÓHˆJðEØ×&Ñ& xÜ'0×'=Ñ'=¸jÓ'IôKà!×*Ñ*¨4°¸[Ø+5ó7�ð × Ñ ¤×!7Ñ!7¸
Ó!CÕD÷ .ð ˆøð × Ñ ¤×!7Ñ!7¸
Ó!CÕDú÷ .ð ˆús#   •+CÁ9B)Á:$CÂ)&CÃCÃCc                 óÀ   — | j                  «       }t        j                  «       }| j                  |«      rt        j                  |||«      S | j                  |||«      S )zi
        Evaluate `code` in a Python or Cython stack frame using the given
        `input_type`.
        )rZ  r   ÚPythonCodeExecutorr.   Ú_evalcode_pythonrb  )r   r0  r_  r   rU  s        r   r^  z#EvaluateOrExecuteCodeMixin.evalcodei  sX   € ð
 ×7Ñ7Ó9ˆÜ×/Ñ/Ó1ˆØ×"Ñ" 5Ô)Ü×-Ñ-¨h¸¸jÓIÐIØ×$Ñ$ X¨t°ZÓ@Ð@r!   N)rq   rr   rZ   rK  rX  rZ  rb  r^  r"   r!   r   rQ  rQ  $  s   „ ñò0ò@
Oòó$	Ar!   rQ  c                   óh   — e Zd ZdZdZej                  Zej                  Z	e
j                  d„ «       Zy)r¢  zD
    Execute Python code in the nearest Python or Cython frame.
    rŒ  c                 óª   — | j                  |«      \  }}t        j                  «       }|j                  | j	                  ||j
                  «      «       y r   )Úreadcoder   rd  rT  r^  ÚPy_file_input)r   ÚexprrÌ  r_  rU  s        r   rè   zCyExec.invoke~  sB   € àŸ=™=¨Ó.ÑˆˆjÜ×/Ñ/Ó1ˆØ×Ñ˜Ÿ™ t¨X×-CÑ-CÓDÕEr!   N)rq   rr   rZ   rK  r   r   r/  rT  r0  rr  r   rÚ  rè   r"   r!   r   r¢  r¢  u  s>   „ ñð €DØ×%Ñ%€MØ×'Ñ'€Oà×#Ñ#ñFó $ñFr!   r¢  c                   ór   — e Zd ZdZdZej                  Zej                  Z	e
j                  ed„ «       «       Zy)r£  zï
    Set a Cython variable to a certain value

        cy set my_cython_c_variable = 10
        cy set my_cython_py_variable = $cy_eval("{'doner': 'kebab'}")

    This is equivalent to

        set $cy_value("my_cython_variable") = 10
    zcy setc                 ó  — |j                  dd«      }t        |«      dk7  rt        j                  d«      ‚|\  }}| j                  j
                  j                  |j                  «       «      }t        j                  d|›d|›�«       y )Nrë   rË   é   z,Invalid expression. Use 'cy set var = expr'.zset rB   )	r   rå  r   r   rµ   rŽ  rè   rù  r/   )r   rj  rÌ  Úname_and_exprÚvarnamerv   s         r   rè   zCySet.invoke•  sk   € ð Ÿ
™
 3¨Ó*ˆÜˆ}Ó Ò"Ü—,‘,ÐMÓNÐNà%‰ˆ�Ø—‘× Ñ ×'Ñ'¨¯©«Ó8ˆÜ�Š¢U©DÐ1Õ2r!   N)rq   rr   rZ   rK  r   r   rA  rT  r0  rr  r   rÚ  r*   rè   r"   r!   r   r£  r£  …  sD   „ ñ	ð €DØ×$Ñ$€MØ×'Ñ'€Oà×#Ñ#Øñ3ó ó $ñ3r!   r£  c                   óJ   — e Zd ZdZej
                  eedd„«       «       «       Zy)r¤  zË
    Get the C name of a Cython variable in the current context.
    Examples:

        print $cy_cname("function")
        print $cy_cname("Class.method")
        print $cy_cname("module.function")
    Nc                 ót  — |xs t        j                  «       }d }| j                  |«      rË| j                  |«      }||j                  v r|j                  |   j
                  }n’||j                  j                  v r$|j                  j                  |   j
                  }nV|j                  j                  ›d|›�}||j                  j                  v r#|j                  j                  |   j
                  }|s%| j                  j                  j                  |«      }|st        j                  d|z  «      ‚|S )Nrõ  zNo such Cython variable: %s)r   r   r'   rÆ   r…   rv   r‚   rg   r   rj   rµ   r«  r&   r   )r   Úcynamer   rv   rÒ  rÓ  s         r   rè   zCyCName.invoke­  s  € ð Ò-œ×+Ñ+Ó-ˆØˆà×"Ñ" 5Ô)Ø"×6Ñ6°uÓ=ˆOØ˜×/Ñ/Ñ/Ø'×.Ñ.¨vÑ6×<Ñ<‘Ø˜?×1Ñ1×9Ñ9Ñ9Ø'×.Ñ.×6Ñ6°vÑ>×DÑD‘à#2×#9Ñ#9×#>Ó#>ÁÐG�Ø˜O×2Ñ2×<Ñ<Ñ<Ø+×2Ñ2×<Ñ<¸UÑC×IÑI�EáØ—G‘G×7Ñ7×;Ñ;¸FÓCˆEáÜ—,‘,Ð<¸vÑEÓFÐFàˆr!   r   )	rq   rr   rZ   rK  r   rÚ  r*   r=   rè   r"   r!   r   r¤  r¤  £  s1   „ ñð ×#Ñ#ØØ"òó #ó ó $ñr!   r¤  c                   óV   ‡ — e Zd ZdZej
                  eedˆ fd„	«       «       «       Zˆ xZ	S )r¥  z-
    Get the value of a Cython variable.
    c                 ó  •— | j                  «       }| j                  |«      }| j                  ||«      r&t        ‰| �  ||¬«      }t        j                  |«      S ||v r||   j                  S t        j                  d|z  «      ‚)Nræ   zVariable %s is not initialized.)	r  rÆ   r#  r�   rè   r   rõ   Ú_gdbvalr   )r   rr  r   Úglobals_dictrÒ  rv   rY   s         €r   rè   zCyCValue.invokeÍ  s„   ø€ ð ×3Ñ3Ó5ˆØ×2Ñ2°5Ó9ˆà×Ñ˜°Ô7Ü‘G‘N 6°�NÓ7ˆEÜ×%Ñ% eÓ,Ð,Ø�|Ñ#Ø Ñ'×/Ñ/Ð/ä—,‘,Ð@À6ÑIÓJÐJr!   r   )
rq   rr   rZ   rK  r   rÚ  r*   r=   rè   r‰   rŠ   s   @r   r¥  r¥  È  s4   ø„ ñð ×#Ñ#ØØ"ô
Kó #ó ó $ô
Kr!   r¥  c                   ó>   — e Zd ZdZej
                  ed„ «       «       Zy)r¦  z&
    Get the current Cython line.
    c                 ó(   — | j                  «       d   S r	  )rÉ   rn   s    r   rè   zCyLine.invokeâ  s   € ð ×%Ñ%Ó'¨Ñ*Ð*r!   N)rq   rr   rZ   rK  r   rÚ  r*   rè   r"   r!   r   r¦  r¦  Ý  s)   „ ñð ×#Ñ#Øñ+ó ó $ñ+r!   r¦  c                   ó>   — e Zd ZdZej
                  ed„ «       «       Zy)r§  zO
    Evaluate Python code in the nearest Python or Cython frame and return
    c                 óZ   — t         j                  j                  }| j                  ||«      S r   )r   rd  ÚPy_eval_inputr^  )r   Úpython_expressionr_  s      r   rè   zCyEval.invokeí  s'   € ô ×1Ñ1×?Ñ?ˆ
Ø�}‰}Ð.°
Ó;Ð;r!   N)rq   rr   rZ   rK  r   rÚ  r=   rè   r"   r!   r   r§  r§  è  s)   „ ñð ×#Ñ#Ø"ñ<ó #ó $ñ<r!   r§  c                  ó–   — t        j                  t        j                  d«      t        j
                  t        j
                  fz  «       y )NzÏ        define cy step
        cy -step
        end

        define cy next
        cy -next
        end

        document cy step
        %s
        end

        document cy next
        %s
        end
    )r   Úsource_gdb_scriptr	  r
  r”  rK  r•  r"   r!   r   Úregister_definesr  ù  s7   € Ü×Ñ¤§¡ð 1ó !	ô  �N‰NœFŸN™NÐ+ñ!!,õ -r!   )Tr   )NT)[rK  rù   r	  r   r8  r¬  r   Úlxmlr   Ú	have_lxmlÚImportErrorÚ	xml.etreer   Úpygments.lexersrÍ   Úpygments.formattersÚstderrrû   rs  r   Úshlexr   ÚCython.Debuggerr   r   r	   r‘  Ú_data_typesÚgetfilesystemencodingrÂ  r#   r*   r5   r(   r=   ra   rc   rt   r}   r©   r­   r³   rÕ   r   rH  rÄ   r   Ú	ParameterrP  r\  r`  rb  rd  rT   ÚCommandrp  r}  r’  r“  Ú
PythonInfor  ÚExecutionControlCommandBaser  ÚPythonStepperMixinr”  r•  r–  r—  r˜  r™  rš  r›  rœ  r�  rž  rI  rŸ  r   rQ  ÚPyExecr¢  r£  ÚFunctionr¤  r¥  r¦  r§  r  ry  rµ   r  r"   r!   r   Ú<module>r’     s_  ðñó
 Û Û Û Û ã 
ðÝØ€Ið
FÛÛñ
 ˆ3Ð Ô!Þ"å-å %ð €Ø€á˜7°Ô>€Ø/�c×/Ñ/Ó1Ò<°WÐ ó
ò"	óò*	òó.÷bOñ O÷ 
!ñ 
!ô)�^ô )ò2Ð ò2÷>Y)ñ Y)÷x:ñ :ô~ �—‘ô  ôD :ô DôÐ!=ô ô�c—m‘mô ô& ô ô˜ô ô˜ô ÷ñ ñ. Ó€
ô
5�C—K‘K ô 5ô0N?ˆ=ô N?ôb?Uˆ}ô ?UôDPˆmô Pôf"�˜Y×1Ñ1ô "ôJ* MØ$-×$IÑ$Iô*ô.Ð*¨I×,HÑ,Hô .ô*ˆVô ôOÐ)ô OôPÐ*ô PôRÐ,ô Rô/ˆ=ô /ô2ˆTô ô(ˆ}ô (ô6"�-ô "ô@ˆ]ô ô&0ˆmô 0ñf '€ô>ˆ}ô >ô8*F�ô *F÷ZNAñ NAôbFˆ]˜I×,Ñ,Ð.Hô Fô 3ˆMô 3ô<"ˆc�l‰l˜Jô "ôJKˆwô Kô*+ˆS�\‰\˜:ô +ô	<ˆS�\‰\˜:Ð'Aô 	<ñ ‹l€Ø	‡]�]ƒ_€Ø€„ò-ñ& Õ øðw/ ò Ý.ØƒIðûð ò FØ€HØ‡J�J×ÑÐD×EðFús"   œK ¥K$ ËK!Ë K!Ë$"L
Ì	L
