§
    ÈtºfÏG  ã                   ób  — d Z ddlZddlZddlZddlmZ ddlmZm	Z	 ddl
mZ ddlmZ  G d„ d	¦  «        Z G d
„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z e¦   «         Zeeeeee ed¦  «        e ee¦  «        g	Z G d„ d¦  «        Z  G d„ d¦  «        Z! G d„ d¦  «        Z" G d„ d¦  «        Z#d„ Z$ G d„ de%¦  «        Z& ej'        d¦  «        Z(d „ Z)d!„ Z*d"„ Z+d#„ Z,d$„ Z- G d%„ d&¦  «        Z.d'„ Z/d.d(„Z0d)„ Z1d*„ Z2d+„ Z3 G d,„ d-¦  «        Z4dS )/z|
AOT: Abstract Object Trees
The source-code-marshallin'est abstract-object-serializin'est persister
this side of Marmalade!
é    N)Úcrefutil)ÚlogÚreflect)Ú_constructMethodé   )Úgenerate_tokensc                   ó   — e Zd Zd„ ZdS )ÚNamedc                 ó   — || _         d S ©N©Úname)Úselfr   s     úT/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/persisted/aot.pyÚ__init__zNamed.__init__"   s   € ØˆŒ	ˆ	ˆ	ó    N)Ú__name__Ú
__module__Ú__qualname__r   © r   r   r
   r
   !   s#   € € € € € ðð ð ð ð r   r
   c                   ó   — e Zd Zd„ ZdS )ÚClassc                 ó   — d| j         z  S )Nz	Class(%r)r   ©r   s    r   Ú	getSourcezClass.getSource'   s   € Ø˜TœYÑ&Ð&r   N©r   r   r   r   r   r   r   r   r   &   s#   € € € € € ð'ð 'ð 'ð 'ð 'r   r   c                   ó   — e Zd Zd„ ZdS )ÚFunctionc                 ó   — d| j         z  S )NzFunction(%r)r   r   s    r   r   zFunction.getSource,   s   € Ø ¤	Ñ)Ð)r   Nr   r   r   r   r   r   +   s#   € € € € € ð*ð *ð *ð *ð *r   r   c                   ó   — e Zd Zd„ ZdS )ÚModulec                 ó   — d| j         z  S )Nz
Module(%r)r   r   s    r   r   zModule.getSource1   s   € Ø˜dœiÑ'Ð'r   Nr   r   r   r   r!   r!   0   s#   € € € € € ð(ð (ð (ð (ð (r   r!   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚInstanceMethodc                 óÒ   — t          |t          ¦  «        s<t          |t          ¦  «        s't          |t          ¦  «        st	          d|z  ¦  «        ‚|| _        || _        || _        d S )Nz$%s isn't an Instance, Ref, or Deref!)Ú
isinstanceÚRefÚInstanceÚDerefÚ	TypeErrorr   ÚklassÚinstance)r   r   r+   Úinsts       r   r   zInstanceMethod.__init__6   sl   € å�t�SÑ!Ô!ð	Kå˜$¥Ñ)Ô)ð	Kõ ˜$¥Ñ&Ô&ð	Kõ
 ÐBÀTÑIÑJÔJÐJØˆŒ	ØˆŒ
ØˆŒˆˆr   c                 óh   — d                      | j        | j        t          | j        ¦  «        ¦  «        S )Nz InstanceMethod({!r}, {!r}, 
 {}))Úformatr   r+   Úprettifyr,   r   s    r   r   zInstanceMethod.getSourceA   s1   € Ø3×:Ò:ØŒIØŒJÝ�T”]Ñ#Ô#ñ
ô 
ð 	
r   N©r   r   r   r   r   r   r   r   r$   r$   5   s2   € € € € € ð	ð 	ð 	ð
ð 
ð 
ð 
ð 
r   r$   c                   ó   — e Zd ZdS )Ú_NoStateObjN)r   r   r   r   r   r   r3   r3   I   s   € € € € € Ø€Dr   r3   c                   ó   — e Zd Zefd„Zd„ ZdS )r(   c                 ó°   — t          |t          ¦  «        st          d|z  ¦  «        ‚|| _        |t          ur|| _        d| _        d S || _        d| _        d S )Nz%s isn't a string!r   r   )r&   Ústrr*   r+   Ú
NoStateObjÚstateÚstateIsDict)r   Ú	classNameÚ__stateObj__r8   s       r   r   zInstance.__init__]   sd   € Ý˜)¥SÑ)Ô)ð 	>ÝÐ0°9Ñ<Ñ=Ô=Ð=ØˆŒ
Ø�zÐ)Ð)Ø%ˆDŒJØ ˆDÔÐÐàˆDŒJØ ˆDÔÐÐr   c                 ó‚  — | j         r| j        }nHt          | j        t          ¦  «        r,t          | j        j        t
          ¦  «        r| j        j        }nd }|�G	 d| j        ›dt          |¦  «        › d�S # t          $ r d| j        ›dt          |¦  «        › d�cY S w xY wd| j        ›dt          | j        ¦  «        › d�S )Nz	Instance(ú, ú))
r9   r8   r&   r'   ÚobjÚdictr+   ÚdictToKWÚNonFormattableDictr0   )r   Ú	stateDicts     r   r   zInstance.getSourceh   së   € àÔð 	Øœ
ˆIˆIÝ˜œ
¥CÑ(Ô(ð 	­Z¸¼
¼ÍÑ-MÔ-Mð 	Øœ
œˆIˆIàˆIØÐ ðJØI 4¤:ÐIÐIµ8¸IÑ3FÔ3FÐIÐIÐIÐIøÝ%ð Jð Jð JØI 4¤:ÐIÐIµ8¸IÑ3FÔ3FÐIÐIÐIÐIÐIÐIðJøøøàB˜4œ:ÐBÐB­8°D´JÑ+?Ô+?ÐBÐBÐBÐBs   ÁA6 Á6%BÂBN)r   r   r   r7   r   r   r   r   r   r(   r(   \   s?   € € € € € Ø/9ð 	!ð 	!ð 	!ð 	!ðCð Cð Cð Cð Cr   r(   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )r'   c                 óˆ   — t          |¦  «        dk    r|d         | _        |d         | _        d S |sd | _        d | _        d S d S )Né   r   r   )ÚlenÚrefnumr?   )r   Úargss     r   r   zRef.__init__y   sO   € åˆt‰9Œ9˜Š>ˆ>Ø˜qœ'ˆDŒKØ˜A”wˆDŒHˆHˆHØð 	ØˆDŒKØˆDŒHˆHˆHð	ð 	r   c                 óV   — | j         rt          d|› d| j         › �¦  «        ‚|| _         d S )NzError setting id ú, I already have )rH   Ú
ValueError©r   Únums     r   ÚsetRefz
Ref.setRef‚   s9   € ØŒ;ð 	VÝÐT°ÐTÐTÀtÄ{ÐTÐTÑUÔUÐUØˆŒˆˆr   c                 óV   — | j         rt          d|› d| j         › �¦  «        ‚|| _         d S )NzError setting obj rK   )r?   rL   )r   r?   s     r   ÚsetObjz
Ref.setObj‡   s9   € ØŒ8ð 	TÝÐR°#ÐRÐRÈÌÐRÐRÑSÔSÐSØˆŒˆˆr   c                 ó    — | j         €t          d¦  «        ‚| j        rd| j        t          | j         ¦  «        fz  S t          | j         ¦  «        S )Nz7Don't try to display me before setting an object on me!zRef(%d, 
 %s))r?   ÚRuntimeErrorrH   r0   r   s    r   r   zRef.getSourceŒ   sX   € ØŒ8ÐÝØIñô ð ð Œ;ð 	IØ$¨¬µX¸d¼hÑ5GÔ5GÐ'HÑHÐHÝ˜œÑ!Ô!Ð!r   N)r   r   r   r   rO   rQ   r   r   r   r   r'   r'   x   sP   € € € € € ðð ð ðð ð ð
ð ð ð
"ð "ð "ð "ð "r   r'   c                   ó   — e Zd Zd„ Zd„ ZeZdS )r)   c                 ó   — || _         d S r   ©rH   rM   s     r   r   zDeref.__init__—   s   € ØˆŒˆˆr   c                 ó   — d| j         z  S )Nz	Deref(%d)rV   r   s    r   r   zDeref.getSourceš   s   € Ø˜Tœ[Ñ(Ð(r   N)r   r   r   r   r   Ú__repr__r   r   r   r)   r)   –   s3   € € € € € ðð ð ð)ð )ð )ð €H€H€Hr   r)   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚCopyregc                 ó"   — || _         || _        d S r   )Úloadfuncr8   )r   r\   r8   s      r   r   zCopyreg.__init__¡   s   € Ø ˆŒØˆŒ
ˆ
ˆ
r   c                 óB   — d| j         ›dt          | j        ¦  «        › d�S )NzCopyreg(r=   r>   )r\   r0   r8   r   s    r   r   zCopyreg.getSource¥   s'   € ØD˜$œ-ÐDÐD­X°d´jÑ-AÔ-AÐDÐDÐDÐDr   Nr1   r   r   r   rZ   rZ       s7   € € € € € ðð ð ðEð Eð Eð Eð Er   rZ   c                 ó@   — t          dt          | ¦  «        z   ¦  «        S )zDPass me an AO, I'll return a nicely-formatted source representation.zapp = )Ú	indentifyr0   )Úaos    r   r   r   ®   s   € å�X¥¨¡¤Ñ,Ñ-Ô-Ð-r   c                   ó   — e Zd ZdZdS )rB   z!A dictionary was not formattable.N)r   r   r   Ú__doc__r   r   r   rB   rB   ³   s   € € € € € Ø+Ð+Ð+Ð+r   rB   z[a-zA-Z_][a-zA-Z0-9_]*$c           	      ó¢  — g }t          |                      ¦   «         ¦  «        }|                     ¦   «          |D ]�\  }}t          |t          ¦  «        st          d|z  ¦  «        ‚t                               |¦  «        st          d|z  ¦  «        ‚|                     d|› dt          |¦  «        › d�¦  «         Œ‚d 
                    |¦  «        S )Nz%r ain't a stringz%r ain't an identifierú
 ú=ú,Ú )ÚlistÚitemsÚsortr&   r6   rB   ÚrÚmatchÚappendr0   Újoin)ÚdÚoutri   ÚkÚvs        r   rA   rA   º   sÆ   € Ø
€CÝ�—’‘”‰OŒO€EØ	‡J‚J�L„L€LØð .ð .‰ˆˆ1Ý˜!�SÑ!Ô!ð 	>Ý$Ð%8¸1Ñ%<Ñ=Ô=Ð=Ý�wŠw�q‰zŒzð 	CÝ$Ð%=ÀÑ%AÑBÔBÐBØ�
Š
Ð,˜!Ð,Ð,�h q™kœkÐ,Ð,Ð,Ñ-Ô-Ð-Ð-Ø�7Š7�3‰<Œ<Ðr   c           	      ó¶  — t          | d¦  «        r|                      ¦   «         S t          | ¦  «        }|t          v rt	          | ¦  «        S |t
          u rŽdg}|                      ¦   «         D ];\  }}|                     dt          |¦  «        › dt          |¦  «        › d�¦  «         Œ<|                     t          | ¦  «        rdpd¦  «         d 
                    |¦  «        S |t          u rhd	g}| D ]'}|                     d
t          |¦  «        z  ¦  «         Œ(|                     t          | ¦  «        rdpd¦  «         d 
                    |¦  «        S |t          u rhdg}| D ]'}|                     d
t          |¦  «        z  ¦  «         Œ(|                     t          | ¦  «        rdpd¦  «         d 
                    |¦  «        S t          d|› d| › d�¦  «        ‚)Nr   Ú{rd   z: rf   z
 }Ú}rg   ú[z
 %s,z
 ]ú]ú(z
 )r>   zUnsupported type z when trying to prettify ú.)Úhasattrr   ÚtypeÚ_SIMPLE_BUILTINSÚreprr@   ri   rm   r0   rG   rn   rh   Útupler*   )r?   Útrp   rq   rr   Úxs         r   r0   r0   Ç   sà  € Ýˆs�KÑ Ô ð TØ�}Š}‰ŒÐõ �‰IŒIˆàÕ Ð Ð Ý˜‘9”9Ðà•$ˆYˆYØ�%ˆCØŸ	š	™œð Að A‘��1Ø—
’
Ð?¥(¨1¡+¤+Ð?Ð?µ¸!±´Ð?Ð?Ð?Ñ@Ô@Ð@Ð@Ø�JŠJ•s˜3‘x”xÐ+ GÐ2¨sÑ3Ô3Ð3Ø—7’7˜3‘<”<Ðà•$ˆYˆYØ�%ˆCØð 4ð 4�Ø—
’
˜9¥x°¡{¤{Ñ2Ñ3Ô3Ð3Ð3Ø�JŠJ•s˜3‘x”xÐ+ GÐ2¨sÑ3Ô3Ð3Ø—7’7˜3‘<”<Ðà•%ˆZˆZØ�%ˆCØð 4ð 4�Ø—
’
˜9¥x°¡{¤{Ñ2Ñ3Ô3Ð3Ð3Ø�JŠJ•s˜3‘x”xÐ+ GÐ2¨sÑ3Ô3Ð3Ø—7’7˜3‘<”<ÐåÐR°ÐRÐRÈCÐRÐRÐRÑSÔSÐSr   c                 óh  — g }g }d| g}t          |j        ¦  «        D ]�\  }}\  }}\  }}	}
|dv r|                     |¦  «         n|dv r|                     ¦   «          |dk    r&|                     dt          |¦  «        z  ¦  «         Œl|                     |¦  «         Œ‚d                     |¦  «        S )Nrg   )rv   rx   rt   )rw   r>   ru   ú z  )ÚtokenizeÚpoprm   rG   rn   )Úsrp   ÚstackÚlÚ	tokenTypeÚtokenStringÚstartRowÚstartColumnÚendRowÚ	endColumnÚlogicalLines              r   r_   r_   é   sÐ   € Ø
€CØ€EØ	ˆQˆ€Aõ 
�!”%‰Œð$ð $ñ 	ØØÙˆ�;Ùˆ�Øà˜/Ð)Ð)Ø�LŠL˜Ñ%Ô%Ð%Ð%Ø˜OÐ+Ð+Ø�IŠI‰KŒKˆKØ˜$ÒÐØ�JŠJ�t�c %™jœjÑ(Ñ)Ô)Ð)Ð)à�JŠJ�{Ñ#Ô#Ð#Ð#Ø�7Š7�3‰<Œ<Ðr   c                 óD   — t          ¦   «                              | ¦  «        S )zG
    Pass me an Abstract Object Tree, and I'll unjelly it for you.
    )ÚAOTUnjellierÚunjelly)Úaots    r   ÚunjellyFromAOTr“     s   € õ ‰>Œ>×!Ò! #Ñ&Ô&Ð&r   c           	      óP  — t           t          t          t          t          t
          t          t          dœ}t          | d¦  «        r|  	                    ¦   «         }n| }t          |dd¦  «        }t          |||¦  «         d|v rt          |d         ¦  «        S t          d| z  ¦  «        ‚)zå
    Pass me a string of code or a filename that defines an 'app' variable (in
    terms of Abstract Objects!), and I'll execute it and unjelly the resulting
    AOT for you, returning a newly unpersisted Application object!
    )r(   r$   r   r   r!   r'   r)   rZ   Úreadz<source>ÚexecÚappz'%s needs to define an 'app', it didn't!)r(   r$   r   r   r!   r'   r)   rZ   rz   r•   ÚcompileÚevalr“   rL   )ÚstringOrFileÚnsÚsourceÚcodes       r   ÚunjellyFromSourcerž     s¦   € õ Ý(ÝÝÝÝÝÝð	
ð 	
€Bõ ˆ|˜VÑ$Ô$ð Ø×"Ò"Ñ$Ô$ˆˆàˆÝ�6˜: vÑ.Ô.€DÝˆˆr�2ÑÔÐà�€{€{Ý˜b œiÑ(Ô(Ð(åÐBÀ\ÑQÑRÔRÐRr   c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
r�   zWI handle the unjellying of an Abstract Object Tree.
    See AOTUnjellier.unjellyAO
    c                 ó0   — i | _         g | _        g | _        d S r   )Ú
referencesr†   ÚafterUnjellyr   s    r   r   zAOTUnjellier.__init__/  s   € ØˆŒØˆŒ
ØˆÔÐÐr   c                 óZ   — t          j        ¦   «         }|                      |d|¦  «         |S )zUnjelly a node, later.r   )r   Ú_DeferÚunjellyInto)r   Únodero   s      r   ÚunjellyLaterzAOTUnjellier.unjellyLater7  s,   € åŒOÑÔˆØ×Ò˜˜A˜tÑ$Ô$Ð$Øˆr   c                 óš   — |                       |¦  «        }|||<   t          |t          j        ¦  «        r|                     ||¦  «         |S )zvUtility method for unjellying one object into another.
        This automates the handling of backreferences.
        )Ú	unjellyAOr&   r   ÚNotKnownÚaddDependant)r   r?   Úlocr`   Úos        r   r¥   zAOTUnjellier.unjellyInto=  sL   € ð �NŠN˜2ÑÔˆØˆˆC‰Ý�a�Ô*Ñ+Ô+ð 	%Ø�NŠN˜3 Ñ$Ô$Ð$Øˆr   c                 ó¬   — t          |t          j        ¦  «        rd g}|                     |d¦  «         n|g}| j                             ||f¦  «         d S )Nr   )r&   r   rª   r«   r¢   rm   )r   ÚcallableÚresultÚ
listResults       r   Ú	callAfterzAOTUnjellier.callAfterG  s`   € Ý�f�hÔ/Ñ0Ô0ð 	"Ø˜ˆJØ×Ò 
¨AÑ.Ô.Ð.Ð.à ˜ˆJØÔ× Ò  (¨JÐ!7Ñ8Ô8Ð8Ð8Ð8r   c                 ó>   — |                       |j        ||¦  «         dS )zÙUtility method for unjellying into instances of attributes.

        Use this rather than unjellyAO unless you like surprising bugs!
        Alternatively, you can use unjellyInto on your instance's __dict__.
        N)r¥   Ú__dict__)r   r,   ÚattrNamer`   s       r   ÚunjellyAttributezAOTUnjellier.unjellyAttributeO  s%   € ð 	×Ò˜Ô*¨H°bÑ9Ô9Ð9Ð9Ð9r   c           	      ó(	  — | j                              |¦  «         t          |¦  «        }|t          v r|S |t          u rEg }|D ]>}|                     d¦  «         |                      |t          |¦  «        dz
  |¦  «         Œ?|S |t          u ryg }t          }|D ]b}|                     d¦  «         t          |                      |t          |¦  «        dz
  |¦  «        t          j
        ¦  «        rt          j        }Œc ||¦  «        S |t          u r`i }|                     ¦   «         D ]G\  }}t          j        |¦  «        }	|                      |	d|¦  «         |                      |	d|¦  «         ŒH|S |j        }
|
t           u rt#          j        |j        ¦  «        S |
t(          t*          fv st-          |
t          ¦  «        rt#          j        |j        ¦  «        S |
t0          u r¥|j        }t#          j        |j        ¦  «        }|                      |j        ¦  «        }||j        v rS|€t;          ||¦  «        S t          |t          j
        ¦  «        rt          j        |||¦  «        S t?          |||¦  «        S tA          d¦  «        ‚|
tB          u r¬t#          j        |j        ¦  «        }|                      |j"        ¦  «        }| #                    |¦  «        }tI          |d¦  «        r|  %                    |j&        |¦  «         n6t          |t          ¦  «        r||_        n| '                    ¦   «         |_        |S |
tP          u r |                      |j)        ¦  «        }|j*        }| j+         ,                    |¦  «        }|€|| j+        |<   nVt          |t          j
        ¦  «        r | -                    |¦  «         || j+        |<   n|€nt]          d|›d|›d|›d�¦  «        ‚|S |
t^          u rE|j*        }| j+         ,                    |¦  «        }|€ t          j0        |¦  «        }|| j+        |<   |S |S |
tb          u rJt#          j        |j2        ¦  «        }|  3                    |j"        ¦  «         4                    d	„ |¦  «        }|S tA          d
|z  ¦  «        ‚)zaUnjelly an Abstract Object and everything it contains.
        I return the real object.
        Nr   r   zinstance method changedÚ__setstate__z&Multiple references with the same ID: r=   ú!c                 ó   —  || Ž S r   r   )r°   Ú_ls     r   ú<lambda>z(AOTUnjellier.unjellyAO.<locals>.<lambda>º  s   €  r r¨6 {€ r   zUnsupported AOT type: %s)5r†   rm   r{   r|   rh   r¥   rG   r~   r&   r   rª   Ú_Tupler@   ri   Ú_DictKeyAndValueÚ	__class__r!   r   ÚnamedModuler   r   r   Ú
issubclassÚnamedObjectr$   r+   r©   r,   r´   ÚgetattrÚ_InstanceMethodr   r*   r(   r8   Ú__new__rz   r²   r¸   Ú__getstate__r'   r?   rH   r¡   ÚgetÚresolveDependantsrL   r)   Ú_DereferencerZ   r\   r§   ÚaddCallback)r   r`   r   r‡   r€   Útuple_ro   rq   rr   ÚkvdÚcÚim_nameÚim_classÚim_selfr+   r8   r-   r­   ÚrefkeyÚrefrN   Úderr\   s                          r   r©   zAOTUnjellier.unjellyAOX  s‚  € ð 	Œ
×Ò˜"ÑÔÐÝ�‰HŒHˆØÕ Ð Ð ØˆIà•$ˆYˆYØˆAØð 3ð 3�Ø—’˜‘”�Ø× Ò  ¥C¨¡F¤F¨Q¡J°Ñ2Ô2Ð2Ð2ØˆHà•%ˆZˆZØˆAÝˆFØð -ð -�Ø—’˜‘”�Ý˜d×.Ò.¨qµ#°a±&´&¸1±*¸aÑ@Ô@Å(ÔBSÑTÔTð -Ý%œ_�FøØ�6˜!‘9”9Ðà•$ˆYˆYØˆAØŸš™
œ
ð ,ð ,‘��1ÝÔ/°Ñ2Ô2�Ø× Ò   a¨Ñ+Ô+Ð+Ø× Ò   a¨Ñ+Ô+Ð+Ð+ØˆHð ”ˆAØ•Fˆ{ˆ{ÝÔ*¨2¬7Ñ3Ô3Ð3à•u�hÐ'Ð'Ð'­:°a½Ñ+>Ô+>Ð'ÝÔ*¨2¬7Ñ3Ô3Ð3à•nÐ$Ð$Øœ'�Ý"Ô.¨r¬xÑ8Ô8�ØŸ.š.¨¬Ñ5Ô5�Ø˜hÔ/Ð/Ð/Ø�Ý& x°Ñ9Ô9Ð9Ý# G­XÔ->Ñ?Ô?ð LÝ'Ô7¸ÀÈ(ÑSÔSÐSå/°¸'À7ÑKÔKÐKå#Ð$=Ñ>Ô>Ð>à•h��ÝÔ+¨B¬HÑ5Ô5�ØŸš r¤xÑ0Ô0�Ø—}’} UÑ+Ô+�Ý˜5 .Ñ1Ô1ð 9Ø—N’N 4Ô#4°eÑ<Ô<Ð<Ð<Ý ¥tÑ,Ô,ð 9Ø$)�D”M�Mà$)×$6Ò$6Ñ$8Ô$8�D”MØ�à•c��Ø—N’N 2¤6Ñ*Ô*�Øœ�Ø”o×)Ò)¨&Ñ1Ô1�Ø�;Ø./�D”O FÑ+Ð+Ý ¥XÔ%6Ñ7Ô7ð 
Ø×)Ò)¨!Ñ,Ô,Ð,Ø./�D”O FÑ+Ð+Ø�^àå$˜*à˜3˜3   ¨¨¨ð,ñô ð ð �à•e��Ø”i�Ø”o×)Ò)¨#Ñ.Ô.�Ø�;Ý"Ô/°Ñ4Ô4�CØ+.�D”O CÑ(Ø�JØ�
à•g��Ý"Ô.¨r¬{Ñ;Ô;�Ø×%Ò% b¤hÑ/Ô/×;Ò;Ø2Ð2°Hñô �ð �åÐ :¸QÑ >Ñ?Ô?Ð?r   c           	      óH  — 	 d g}|                       |d|¦  «         | j        D ]\  }} ||d         ¦  «         Œ|d         S # t          $ rU t          j        d¦  «         t          j        d                     t          t          | j        ¦  «        ¦  «        ¦  «         ‚ w xY w)Nr   ú+Error jellying object! Stacktrace follows::ú
)	r¥   r¢   ÚBaseExceptionr   Úmsgrn   Úmapr}   r†   )r   r`   r‡   Úfuncrr   s        r   r‘   zAOTUnjellier.unjellyÀ  s¯   € ð		Ø�ˆAØ×Ò˜Q  2Ñ&Ô&Ð&ØÔ,ð ð ‘��aØ��Q�q”T‘
”
�
�
Ø�Q”4ˆKøÝð 	ð 	ð 	ÝŒGÐAÑBÔBÐBÝŒG�D—I’I�c¥$¨¬
Ñ3Ô3Ñ4Ô4Ñ5Ô5Ð5Øð	øøøs   ‚?A ÁAB!N)r   r   r   rb   r   r§   r¥   r²   r¶   r©   r‘   r   r   r   r�   r�   *  sŽ   € € € € € ðð ðð ð ðð ð ðð ð ð9ð 9ð 9ð:ð :ð :ðf@ð f@ð f@ðP
ð 
ð 
ð 
ð 
r   r�   c                 óD   — t          ¦   «                              | ¦  «        S )z-Convert an object to an Abstract Object Tree.)Ú
AOTJellierÚjelly)r?   s    r   Ú
jellyToAOTrÞ   Ò  s   € å‰<Œ<×Ò˜cÑ"Ô"Ð"r   c                 ó°   — t          | ¦  «        }|r7|                     t          |¦  «                             d¦  «        ¦  «         dS t          |¦  «        S )zª
    Pass me an object and, optionally, a file object.
    I'll convert the object to an AOT either return it (if no file was
    specified) or write it to the file.
    zutf-8N)rÞ   Úwriter   Úencode)r?   Úfiler’   s      r   ÚjellyToSourcerã   ×  sO   € õ �S‰/Œ/€CØð Ø�
Š
•9˜S‘>”>×(Ò(¨Ñ1Ô1Ñ2Ô2Ð2Ð2Ð2å˜‰~Œ~Ðr   c                 ó   — | j         j        S )z½
    Get the associated class of the given method object.

    @param methodObject: a bound method
    @type methodObject: L{types.MethodType}

    @return: a class
    @rtype: L{type}
    )Ú__self__r¿   ©ÚmethodObjects    r   Ú_classOfMethodrè   å  s   € ð Ô Ô*Ð*r   c                 ó   — | j         S )zð
    Get the associated function of the given method object.

    @param methodObject: a bound method
    @type methodObject: L{types.MethodType}

    @return: the function implementing C{methodObject}
    @rtype: L{types.FunctionType}
    )Ú__func__ræ   s    r   Ú_funcOfMethodrë   ò  ó   € ð Ô Ð r   c                 ó   — | j         S )zØ
    Get the object that a bound method is bound to.

    @param methodObject: a bound method
    @type methodObject: L{types.MethodType}

    @return: the C{self} passed to C{methodObject}
    @rtype: L{object}
    )rå   ræ   s    r   Ú_selfOfMethodrî   ÿ  rì   r   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )rÜ   c                 ó0   — i | _         d| _        g | _        d S )Nr   )ÚpreparedÚ_ref_idr†   r   s    r   r   zAOTJellier.__init__  s   € àˆŒØˆŒØˆŒ
ˆ
ˆ
r   c                 ó4   — || j         t          |¦  «        <   dS )zaI prepare an object for later referencing, by storing its id()
        and its _AORef in a cache.N)rñ   Úid)r   ÚaorefÚobjects      r   ÚprepareForRefzAOTJellier.prepareForRef  s   € ð %*ˆŒ•b˜‘j”jÑ!Ð!Ð!r   c           	      óp  ‡ ‡‡— t          ‰¦  «        }‰ j                             t          ‰¦  «        ¦  «         |t          v r‰Š�ngt          |t          j        ¦  «        rdt          t          ‰¦  «        j
        t          j        t          ‰¦  «        ¦  «        ‰                      t          ‰¦  «        ¦  «        ¦  «        Š�nét          |t          j        ¦  «        rt#          ‰j
        ¦  «        Š�n¹t          |t           ¦  «        r#t%          t          j        ‰¦  «        ¦  «        Š�n�|t          j        u r#t)          t          j        ‰¦  «        ¦  «        Š�nPt-          ‰¦  «        ‰ j        v rc‰ j        t-          ‰¦  «                 }|j        r|j        }n+‰ j        dz   ‰ _        ‰ j        }|                     |¦  «         t7          |¦  «        S t9          ¦   «         Šˆˆˆ fd„}‰                      ‰‰¦  «         |t<          u r#‰                     ˆ fd„‰D ¦   «         ¦  «         �n€|t@          u r7‰                     tA          tC          ‰ j        ‰¦  «        ¦  «        ¦  «         �n@|tD          u r]i }‰ #                    ¦   «         D ]0\  }}‰                      |¦  «        |‰                      |¦  «        <   Œ1‰                     |¦  «         nÚ|tH          j%        v rftI          j%        |         ‰¦  «        \  }	}
‰                     tM          t          j        |	¦  «        ‰                      |
¦  «        ¦  «        ¦  «         nftO          ‰d¦  «        r |‰ (                    ¦   «         ¦  «         n8tO          ‰d¦  «        r |‰j)        ¦  «         ntU          d|j
        z  ¦  «        ‚‰ j        d= ‰S )z+I turn an object into an AOT and return it.r   c                 ó¢   •— ‰                      t          t          j        ‰j        ¦  «        ‰                     | ¦  «        ¦  «        ¦  «         d S r   )rQ   r(   r   Úqualr¿   Ú	jellyToAO)r8   r?   Úretvalr   s    €€€r   Ú
_stateFromz(AOTJellier.jellyToAO.<locals>._stateFromL  sH   ø€ Ø—’Ý�Wœ\¨#¬-Ñ8Ô8¸$¿.º.ÈÑ:OÔ:OÑPÔPñô ð ð ð r   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   )rû   )Ú.0r­   r   s     €r   ú
<listcomp>z(AOTJellier.jellyToAO.<locals>.<listcomp>T  s%   ø€ Ð>Ð>Ð>°Q˜tŸ~š~¨aÑ0Ô0Ð>Ð>Ð>r   rÆ   r´   zUnsupported type: %séÿÿÿÿ)+r{   r†   rm   r}   r|   rÁ   ÚtypesÚ
MethodTyper$   rë   r   r   rú   rè   rû   rî   Ú
ModuleTyper!   r   ÚFunctionTyper   ÚfullFuncNamerô   rñ   rH   rò   rO   r)   r'   r÷   rh   rQ   r~   rÙ   r@   ri   Úcopy_regÚdispatch_tablerZ   rz   rÆ   r´   r*   )r   r?   ÚobjTypeÚoldRefÚkeyrý   ro   rq   rr   ÚunpickleFuncr8   rü   s   ``         @r   rû   zAOTJellier.jellyToAO  sˆ  øøø€ å�s‘)”)ˆØŒ
×Ò�$˜s™)œ)Ñ$Ô$Ð$ð Õ&Ð&Ð&ØˆF‰Få˜¥Ô!1Ñ2Ô2ð J	Kõ $Ý˜cÑ"Ô"Ô+Ý”�^¨CÑ0Ô0Ñ1Ô1Ø—’�}¨SÑ1Ô1Ñ2Ô2ñô ˆF‰Fõ ˜¥Ô!1Ñ2Ô2ð @	KÝ˜CœLÑ)Ô)ˆF‰Få˜¥Ñ&Ô&ð =	KÝ�7œ<¨Ñ,Ô,Ñ-Ô-ˆF‰Fà�Ô*Ð*Ð*Ý�gÔ2°3Ñ7Ô7Ñ8Ô8ˆF‰Fõ �#‰wŒw˜$œ-Ð'Ð'Øœ¥r¨#¡w¤wÔ/�Ø”=ð 'à œ-�C�Cð $(¤<°!Ñ#3�D”LØœ,�CØ—M’M #Ñ&Ô&Ð&Ý˜S‘z”zÐ!å‘U”UˆFðð ð ð ð ð ð ð
 ×Ò˜v sÑ+Ô+Ð+à�$ˆˆØ—’Ð>Ð>Ð>Ð>¸#Ð>Ñ>Ô>Ñ?Ô?Ð?Ñ?à�EÐ!Ð!Ø—’�e¥C¨¬¸Ñ$<Ô$<Ñ=Ô=Ñ>Ô>Ð>Ñ>à�D��Ø�ØŸIšI™KœKð =ð =‘D�A�qØ+/¯>ª>¸!Ñ+<Ô+<�A�d—n’n QÑ'Ô'Ñ(Ð(Ø—’˜aÑ Ô Ð Ð à�HÔ3Ð3Ð3Ý&.Ô&=¸gÔ&FÀsÑ&KÔ&KÑ#�˜eà—’Ý�GÔ0°Ñ>Ô>ÀÇÂÈuÑ@UÔ@UÑVÔVñô ð ð õ ˜˜nÑ-Ô-ð KØ�
˜3×+Ò+Ñ-Ô-Ñ.Ô.Ð.Ð.Ý˜˜jÑ)Ô)ð KØ�
˜3œ<Ñ(Ô(Ð(Ð(åÐ 6¸Ô9IÑ IÑJÔJÐJàŒJ�rˆNØˆr   c                 óÐ   — 	 |                       |¦  «        }|S # t          $ rB t          j        d¦  «         t          j        d                     | j        ¦  «        ¦  «         ‚ w xY w)NrÕ   rÖ   )rû   r×   r   rØ   rn   r†   )r   r?   r`   s      r   rÝ   zAOTJellier.jellyp  sj   € ð	Ø—’ Ñ$Ô$ˆBØˆIøÝð 	ð 	ð 	ÝŒGÐAÑBÔBÐBÝŒG�D—I’I˜dœjÑ)Ô)Ñ*Ô*Ð*Øð	øøøs
   ‚ ™AA%N)r   r   r   r   r÷   rû   rÝ   r   r   r   rÜ   rÜ     sT   € € € € € ðð ð ð*ð *ð *ð
Vð Vð Vðpð ð ð ð r   rÜ   r   )5rb   Úcopyregr  Úrer  Útwisted.persistedr   Útwisted.pythonr   r   Útwisted.python.compatr   Ú	_tokenizer   rƒ   r
   r   r   r!   r$   r3   r7   ÚboolÚbytesr6   ÚintÚfloatÚcomplexr{   ÚsliceÚEllipsisr|   r(   r'   r)   rZ   r   Ú	ExceptionrB   r˜   rk   rA   r0   r_   r“   rž   r�   rÞ   rã   rè   rë   rî   rÜ   r   r   r   ú<module>r     sÃ  ððð ð Ð Ð Ð Ø 	€	€	€	Ø €€€à &Ð &Ð &Ð &Ð &Ð &Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ð 3Ð 2Ð 2Ð 2Ð 2Ð 2ðð ð ð ð ñ ô ð ð
'ð 'ð 'ð 'ð 'ˆEñ 'ô 'ð 'ð
*ð *ð *ð *ð *ˆuñ *ô *ð *ð
(ð (ð (ð (ð (ˆUñ (ô (ð (ð

ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð(	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð ˆ[‰]Œ]€
ð 	Ø	ØØØ	ØØ€Dˆ�J„JØ	Ø€Dˆ�N„Nð
Ð ðCð Cð Cð Cð Cñ Cô Cð Cð8"ð "ð "ð "ð "ñ "ô "ð "ð<ð ð ð ð ñ ô ð ðEð Eð Eð Eð Eñ Eô Eð Eð.ð .ð .ð
,ð ,ð ,ð ,ð ,˜ñ ,ô ,ð ,ð €B„JÐ(Ñ)Ô)€ð
ð 
ð 
ðTð Tð TðDð ð ð6'ð 'ð 'ðSð Sð Sð>`ð `ð `ð `ð `ñ `ô `ð `ðP#ð #ð #ð
ð ð ð ð
+ð 
+ð 
+ð
!ð 
!ð 
!ð
!ð 
!ð 
!ðkð kð kð kð kñ kô kð kð kð kr   