
    %
iF                        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e          Z G d d	e          Z G d
 de          Z G d de          Z G d de          Z G d d          Z G d de          Z G d de          Z G d d          Z G d de          Z G d de          Z G d d          Z G d d          Z G d  d!          Z G d" d#          Z G d$ d%          Z G d& d'          Z G d( d)          Z G d* d+          Z G d, d-          Z  G d. d/          Z! G d0 d1          Z"dS )2    N)axdebug)RaiseNotImpl_wrap)COMException)ListEnumeratorGatewayc                   "    e Zd ZdZej        gZdS )EnumDebugCodeContextsa  A class to expose a Python sequence as an EnumDebugCodeContexts

    Create an instance of this class passing a sequence (list, tuple, or
    any sequence protocol supporting object) and it will automatically
    support the EnumDebugCodeContexts interface for the object.

    N)__name__
__module____qualname____doc__r   IID_IEnumDebugCodeContexts_com_interfaces_     C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\win32comext/axdebug/gateways.pyr	   r	      s(           :;r   r	   c                   "    e Zd ZdZej        gZdS )EnumDebugStackFramesa  A class to expose a Python sequence as an EnumDebugStackFrames

    Create an instance of this class passing a sequence (list, tuple, or
    any sequence protocol supporting object) and it will automatically
    support the EnumDebugStackFrames interface for the object.

    N)r
   r   r   r   r   IID_IEnumDebugStackFramesr   r   r   r   r   r      s(           9:r   r   c                   "    e Zd ZdZej        gZdS )EnumDebugApplicationNodesa  A class to expose a Python sequence as an EnumDebugStackFrames

    Create an instance of this class passing a sequence (list, tuple, or
    any sequence protocol supporting object) and it will automatically
    support the EnumDebugApplicationNodes interface for the object.

    N)r
   r   r   r   r   IID_IEnumDebugApplicationNodesr   r   r   r   r   r   $   s(           >?r   r   c                       e Zd Zej        gZdS )EnumRemoteDebugApplicationsN)r
   r   r   r    IID_IEnumRemoteDebugApplicationsr   r   r   r   r   r   0   s        @Ar   r   c                       e Zd Zej        gZdS )!EnumRemoteDebugApplicationThreadsN)r
   r   r   r   &IID_IEnumRemoteDebugApplicationThreadsr   r   r   r   r   r   4   s        FGr   r   c                   8    e Zd ZddgZej        gZd Zd Zd Z	dS )DebugDocumentInfoGetNameGetDocumentClassIdc                     d S Nr   selfs    r   __init__zDebugDocumentInfo.__init__<       r   c                 $    t          d           dS )zTGet the one of the name of the document
        dnt -- int DOCUMENTNAMETYPE
        r!   Nr   )r&   dnts     r   r!   zDebugDocumentInfo.GetName?   s     	Yr   c                 $    t          d           dS )zL
        Result must be an IID object (or string representing one).
        r"   Nr*   r%   s    r   r"   z$DebugDocumentInfo.GetDocumentClassIdE   s     	)*****r   N)
r
   r   r   _public_methods_r   IID_IDebugDocumentInfor   r'   r!   r"   r   r   r   r    r    8   sY        !#7867       + + + + +r   r    c                   J    e Zd Zej        dgz   Zej        ej        gz   Zd ZdS )DebugDocumentProviderGetDocumentc                 $    t          d           d S )Nr1   r*   r%   s    r   r1   z!DebugDocumentProvider.GetDocumentR   s    ]#####r   N)	r
   r   r   r    r-   r   r   IID_IDebugDocumentProviderr1   r   r   r   r0   r0   L   sL        (9]OK(9*= $ $ $ $ $r   r0   c                       e Zd ZdZd                                ej        z   Zej        gej	        z   Z	d Z
d Zd Zd Zd Zd Zd	 Zd
S )DebugApplicationNodez[Provides the functionality of IDebugDocumentProvider, plus a context within a project tree.zREnumChildren GetParent SetDocumentProvider
                    Close Attach Detachc                 :    t                               |            d S r$   )r0   r'   r%   s    r   r'   zDebugApplicationNode.__init__b   s    &&t,,,,,r   c                 $    t          d           d S )NEnumChildrenr*   r%   s    r   r8   z!DebugApplicationNode.EnumChildrene       ^$$$$$r   c                 $    t          d           d S )N	GetParentr*   r%   s    r   r;   zDebugApplicationNode.GetParenti       [!!!!!r   c                 $    t          d           d S )NSetDocumentProviderr*   )r&   pddps     r   r>   z(DebugApplicationNode.SetDocumentProviderm   s    *+++++r   c                 $    t          d           d S )NCloser*   r%   s    r   rA   zDebugApplicationNode.Closeq   s    Wr   c                 $    t          d           d S )NAttachr*   r&   parents     r   rC   zDebugApplicationNode.Attachu       Xr   c                 $    t          d           d S )NDetachr*   r%   s    r   rH   zDebugApplicationNode.Detachy   rF   r   N)r
   r   r   r   splitr0   r-   r   r3   r   r'   r8   r;   r>   rA   rC   rH   r   r   r   r5   r5   V   s        ee	++0577

0	1  	*./- - -% % %" " ", , ,        r   r5   c                   h    e Zd ZdZd                                Zej        gZd Z	d Z
d Zd Zd ZdS )	DebugApplicationNodeEventsz0Event interface for DebugApplicationNode object.z!onAddChild onRemoveChild onDetachc                     d S r$   r   r%   s    r   r'   z#DebugApplicationNodeEvents.__init__   r(   r   c                 $    t          d           d S )N
onAddChildr*   r&   childs     r   rN   z%DebugApplicationNodeEvents.onAddChild   s    \"""""r   c                 $    t          d           d S )NonRemoveChildr*   rO   s     r   rR   z(DebugApplicationNodeEvents.onRemoveChild       _%%%%%r   c                 $    t          d           d S )NonDetachr*   r%   s    r   rU   z#DebugApplicationNodeEvents.onDetach       Z     r   c                 $    t          d           d S )NonAttachr*   rD   s     r   rX   z#DebugApplicationNodeEvents.onAttach   rV   r   N)r
   r   r   r   rI   r-   r   IID_IDebugApplicationNodeEventsr   r'   rN   rR   rU   rX   r   r   r   rK   rK   ~   s        :::@@BB?@  # # #& & &! ! !! ! ! ! !r   rK   c                   @    e Zd ZdZej        Zej        gej        z   ZdS )DebugDocumentz*The base interface to all debug documents.N)	r
   r   r   r   r    r-   r   IID_IDebugDocumentr   r   r   r   r[   r[      s4        44(9236G6XXr   r[   c                   z    e Zd ZdZej        gej        z   Zg dej        z   Zd Z	d Z
d Zd Zd Zd Zd	 Zd
 ZdS )DebugDocumentTextz,The interface to a text only debug document.)GetDocumentAttributesGetSizeGetPositionOfLineGetLineOfPositionGetTextGetPositionOfContextGetContextOfPositionc                     d S r$   r   r%   s    r   r'   zDebugDocumentText.__init__   r(   r   c                 $    t          d           d S )Nr_   r*   r%   s    r   r_   z'DebugDocumentText.GetDocumentAttributes   s    ,-----r   c                 $    t          d           d S )Nr`   r*   r%   s    r   r`   zDebugDocumentText.GetSize   s    Yr   c                 $    t          d           d S )Nra   r*   )r&   cLineNumbers     r   ra   z#DebugDocumentText.GetPositionOfLine       ()))))r   c                 $    t          d           d S )Nrb   r*   )r&   charPoss     r   rb   z#DebugDocumentText.GetLineOfPosition   rk   r   c                 $    t          d           dS )zParams
        charPos -- integer
        maxChars -- integer
        wantAttr -- Should the function compute attributes.

        Return value must be (string, attribtues).  attributes may be
        None if(not wantAttr)
        rc   Nr*   )r&   rm   maxCharswantAttrs       r   rc   zDebugDocumentText.GetText   s     	Yr   c                 $    t          d           dS )zParams
        debugDocumentContext -- a PyIDebugDocumentContext object.

        Return value must be (charPos, numChars)
        rd   Nr*   )r&   debugDocumentContexts     r   rd   z&DebugDocumentText.GetPositionOfContext   s     	+,,,,,r   c                 B    t          |            t          d           dS )zYParams are integers.
        Return value must be PyIDebugDocumentContext object
        re   N)printr   )r&   rm   ro   s      r   re   z&DebugDocumentText.GetContextOfPosition   s$     	d+,,,,,r   N)r
   r   r   r   r   IID_IDebugDocumentTextr[   r   r-   r'   r_   r`   ra   rb   rc   rd   re   r   r   r   r^   r^      s        6667-:XX   	&'  . . .     * * ** * *	  	  	 - - -- - - - -r   r^   c                   B    e Zd ZdZg dZej        gZd Zd Z	d Z
d ZdS )DebugDocumentTextExternalAuthorzAllow external editors to edit file-based debugger documents, and to notify the document when the source file has been changed.)GetPathNameGetFileNameNotifyChangedc                     d S r$   r   r%   s    r   r'   z(DebugDocumentTextExternalAuthor.__init__   r(   r   c                 $    t          d           dS )a  Return the full path (including file name) to the document's source file.

        Result must be (filename, fIsOriginal), where
        - if fIsOriginalPath is TRUE if the path refers to the original file for the document.
        - if fIsOriginalPath is FALSE if the path refers to a newly created temporary file.

        raise COMException(winerror.E_FAIL) if no source file can be created/determined.
        rx   Nr*   r%   s    r   rx   z+DebugDocumentTextExternalAuthor.GetPathName   s     	]#####r   c                 $    t          d           dS )z}Return just the name of the document, with no path information.  (Used for "Save As...")

        Result is a string
        ry   Nr*   r%   s    r   ry   z+DebugDocumentTextExternalAuthor.GetFileName       
 	]#####r   c                 $    t          d           dS )zzNotify the host that the document's source file has been saved and
        that its contents should be refreshed.
        rz   Nr*   r%   s    r   rz   z-DebugDocumentTextExternalAuthor.NotifyChanged   s     	_%%%%%r   N)r
   r   r   r   r-   r   $IID_IDebugDocumentTextExternalAuthorr   r'   rx   ry   rz   r   r   r   rw   rw      st         J  JFFFDE  	$ 	$ 	$$ $ $& & & & &r   rw   c                   p    e Zd Zd                                Zej        gZd Zd Z	d Z
d Zd Zd Zd Zd	S )
DebugDocumentTextEventszonDestroy onInsertText onRemoveText
              onReplaceText onUpdateTextAttributes
              onUpdateDocumentAttributesc                     d S r$   r   r%   s    r   r'   z DebugDocumentTextEvents.__init__  r(   r   c                 $    t          d           d S )N	onDestroyr*   r%   s    r   r   z!DebugDocumentTextEvents.onDestroy  r<   r   c                 $    t          d           d S )NonInsertTextr*   )r&   cCharacterPositioncNumToInserts      r   r   z$DebugDocumentTextEvents.onInsertText  r9   r   c                 $    t          d           d S )NonRemoveTextr*   )r&   r   cNumToRemoves      r   r   z$DebugDocumentTextEvents.onRemoveText  r9   r   c                 $    t          d           d S )NonReplaceTextr*   )r&   r   cNumToReplaces      r   r   z%DebugDocumentTextEvents.onReplaceText  rS   r   c                 $    t          d           d S )NonUpdateTextAttributesr*   )r&   r   cNumToUpdates      r   r   z.DebugDocumentTextEvents.onUpdateTextAttributes  s    -.....r   c                 $    t          d           d S )NonUpdateDocumentAttributesr*   )r&   textdocattrs     r   r   z2DebugDocumentTextEvents.onUpdateDocumentAttributes  s    122222r   N)r
   r   r   rI   r-   r   IID_IDebugDocumentTextEventsr   r'   r   r   r   r   r   r   r   r   r   r   r      s        ,,1EGG   <=  " " "% % %% % %& & &/ / /3 3 3 3 3r   r   c                   8    e Zd ZddgZej        gZd Zd Zd Z	dS )DebugDocumentContextr1   EnumCodeContextsc                     d S r$   r   r%   s    r   r'   zDebugDocumentContext.__init__$  r(   r   c                 $    t          d           dS )z.Return value must be a PyIDebugDocument objectr1   Nr*   r%   s    r   r1   z DebugDocumentContext.GetDocument'      ]#####r   c                 $    t          d           dS )z6Return value must be a PyIEnumDebugCodeContexts objectr   Nr*   r%   s    r   r   z%DebugDocumentContext.EnumCodeContexts+  s    '(((((r   N)
r
   r   r   r-   r   IID_IDebugDocumentContextr   r'   r1   r   r   r   r   r   r      sY        %'9:9:  $ $ $) ) ) ) )r   r   c                   8    e Zd ZddgZej        gZd Zd Zd Z	dS )DebugCodeContextGetDocumentContextSetBreakPointc                     d S r$   r   r%   s    r   r'   zDebugCodeContext.__init__4  r(   r   c                 $    t          d           dS )z5Return value must be a PyIDebugDocumentContext objectr   Nr*   r%   s    r   r   z#DebugCodeContext.GetDocumentContext7  s    )*****r   c                 $    t          d           dS )zbps -- an integer with flags.r   Nr*   )r&   bpss     r   r   zDebugCodeContext.SetBreakPoint;  rS   r   N)
r
   r   r   r-   r   IID_IDebugCodeContextr   r'   r   r   r   r   r   r   r   0  sX        ,o>56  + + +& & & & &r   r   c                   N    e Zd ZdZg dZej        gZd Zd Z	d Z
d Zd Zd Zd	S )
DebugStackFramezHAbstraction representing a logical stack frame on the stack of a thread.)GetCodeContextGetDescriptionStringGetLanguageString	GetThreadGetDebugPropertyc                     d S r$   r   r%   s    r   r'   zDebugStackFrame.__init__L  r(   r   c                 $    t          d           dS )zReturns the current code context associated with the stack frame.

        Return value must be a IDebugCodeContext object
        r   Nr*   r%   s    r   r   zDebugStackFrame.GetCodeContextO  s    
 	%&&&&&r   c                 $    t          d           dS )z}Returns a textual description of the stack frame.

        fLong -- A flag indicating if the long name is requested.
        r   Nr*   )r&   fLongs     r   r   z$DebugStackFrame.GetDescriptionStringV  s    
 	+,,,,,r   c                 $    t          d           dS )zReturns a short or long textual description of the language.

        fLong -- A flag indicating if the long name is requested.
        r   Nr*   r%   s    r   r   z!DebugStackFrame.GetLanguageString]  s    
 	()))))r   c                 $    t          d           dS )zoReturns the thread associated with this stack frame.

        Result must be a IDebugApplicationThread
        r   Nr*   r%   s    r   r   zDebugStackFrame.GetThreadd  s    
 	[!!!!!r   c                 $    t          d           d S )Nr   r*   r%   s    r   r   z DebugStackFrame.GetDebugPropertyk  s    '(((((r   N)r
   r   r   r   r-   r   IID_IDebugStackFramer   r'   r   r   r   r   r   r   r   r   r   r   @  s        RR    45  ' ' '- - -* * *" " ") ) ) ) )r   r   c                   T    e Zd ZdZg dZej        gZd Zd Z	d Z
d Zd Zd Zd	 Zd
S )DebugDocumentHostzThe interface from the IDebugDocumentHelper back to
    the smart host or language engine.  This interface
    exposes host specific functionality such as syntax coloring.
    )GetDeferredTextGetScriptTextAttributesOnCreateDocumentContextrx   ry   rz   c                     d S r$   r   r%   s    r   r'   zDebugDocumentHost.__init__  r(   r   c                 $    t          d           d S )Nr   r*   )r&   dwTextStartCookiero   	bWantAttrs       r   r   z!DebugDocumentHost.GetDeferredText      &'''''r   c                 $    t          d           d S )Nr   r*   )r&   codeTextdelimterTextflagss       r   r   z)DebugDocumentHost.GetScriptTextAttributes      ./////r   c                 $    t          d           d S )Nr   r*   r%   s    r   r   z)DebugDocumentHost.OnCreateDocumentContext  r   r   c                 $    t          d           d S )Nrx   r*   r%   s    r   rx   zDebugDocumentHost.GetPathName  r~   r   c                 $    t          d           d S )Nry   r*   r%   s    r   ry   zDebugDocumentHost.GetFileName  r   r   c                 $    t          d           d S )Nrz   r*   r%   s    r   rz   zDebugDocumentHost.NotifyChanged      _%%%%%r   N)r
   r   r   r   r-   r   IID_IDebugDocumentHostr   r'   r   r   r   rx   ry   rz   r   r   r   r   r   o  s         
    67  ( ( (0 0 00 0 0$ $ $$ $ $& & & & &r   r   c                       e Zd Zej        j        j        ej        j        j        z   Ze	j
        e	j        gZd Zd Zd Zd Zd Zd Zd Zd Zd	S )
DebugDocumentTextConnectServerc                 "    d| _         i | _        d S )N)cookieNoconnectionsr%   s    r   r'   z'DebugDocumentTextConnectServer.__init__  s    r   c                 $    t          d           d S )NEnumConnectionsr*   r%   s    r   r   z.DebugDocumentTextConnectServer.EnumConnections  r   r   c                 $    t          d           d S )NGetConnectionInterfacer*   r%   s    r   r   z5DebugDocumentTextConnectServer.GetConnectionInterface      -.....r   c                      t          |           S r$   )r   r%   s    r   GetConnectionPointContainerz:DebugDocumentTextConnectServer.GetConnectionPointContainer  s    T{{r   c                     |                     t          j        d          }| xj        dz  c_        || j        | j        <   | j        S )N   )QueryInterfacer   r   r   r   )r&   pUnk	interfaces      r   Advisez%DebugDocumentTextConnectServer.Advise  sC     ''(LaPP	*3'}r   c                 l    	 | j         |= d S # t          $ r t          t          j                  cY S w xY wN)scode)r   KeyErrorr   winerrorE_UNEXPECTED)r&   cookies     r   Unadvisez'DebugDocumentTextConnectServer.Unadvise  sM    	= ((( 	= 	= 	=h&;<<<<<<	=s    $33c                 $    t          d           d S )NEnumConnectionPointsr*   r%   s    r   r   z3DebugDocumentTextConnectServer.EnumConnectionPoints      +,,,,,r   c                 t    |t           j        k    rt          |           S t          t          j                  r   )r   r   r   r   r   E_NOINTERFACE)r&   iids     r   FindConnectionPointz2DebugDocumentTextConnectServer.FindConnectionPoint  s0    '666;;!78888r   N)r
   r   r   win32comserverconnect!IConnectionPointContainer_methodsIConnectionPoint_methodsr-   	pythoncomIID_IConnectionPointIID_IConnectionPointContainerr   r'   r   r   r   r   r   r   r   r   r   r   r   r     s        A
/
!
:	; 
 	&/  ( ( (/ / /    = = =- - -9 9 9 9 9r   r   c                   b    e Zd Zg dZej        gZd Zd Zd Z	d Z
d Zd Zd Zd	 Zd
 Zd ZdS )RemoteDebugApplicationEvents)
OnConnectDebuggerOnDisconnectDebugger	OnSetNameOnDebugOutputOnCloseOnEnterBreakPointOnLeaveBreakPointOnCreateThreadOnDestroyThreadOnBreakFlagChangec                 $    t          d           dS )z'appDebugger -- a PyIApplicationDebuggerr   Nr*   )r&   appDebuggers     r   r   z.RemoteDebugApplicationEvents.OnConnectDebugger  rk   r   c                 $    t          d           d S )Nr   r*   r%   s    r   r   z1RemoteDebugApplicationEvents.OnDisconnectDebugger  r   r   c                 $    t          d           d S )Nr   r*   )r&   names     r   r   z&RemoteDebugApplicationEvents.OnSetName  s    [!!!!!r   c                 $    t          d           d S )Nr   r*   )r&   strings     r   r   z*RemoteDebugApplicationEvents.OnDebugOutput  r   r   c                 $    t          d           d S )Nr   r*   r%   s    r   r   z$RemoteDebugApplicationEvents.OnClose  s    Yr   c                 $    t          d           dS )'rdat -- PyIRemoteDebugApplicationThreadr   Nr*   r&   rdats     r   r   z.RemoteDebugApplicationEvents.OnEnterBreakPoint  rk   r   c                 $    t          d           dS )r  r   Nr*   r  s     r   r   z.RemoteDebugApplicationEvents.OnLeaveBreakPoint  rk   r   c                 $    t          d           dS )r  r   Nr*   r  s     r   r   z+RemoteDebugApplicationEvents.OnCreateThread  s    %&&&&&r   c                 $    t          d           dS )r  r   Nr*   r  s     r   r   z,RemoteDebugApplicationEvents.OnDestroyThread  s    &'''''r   c                     dS )zabf -- int - one of the axdebug.APPBREAKFLAGS constants
        rdat -- PyIRemoteDebugApplicationThread
        RaiseNotImpl("OnBreakFlagChange")
        Nr   )r&   abfr  s      r   r  z.RemoteDebugApplicationEvents.OnBreakFlagChange   s      r   N)r
   r   r   r-   r   !IID_IRemoteDebugApplicationEventsr   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r     s            AB* * *- - -" " "& & &     * * ** * *' ' '( ( (    r   r   c                   8    e Zd ZddgZej        gZd Zd Zd Z	dS )DebugExpressionContextParseLanguageTextGetLanguageInfoc                     d S r$   r   r%   s    r   r'   zDebugExpressionContext.__init__  r(   r   c                 $    t          d           dS )z,
        result is IDebugExpression
        r  Nr*   )r&   coderadixdelimr   s        r   r  z(DebugExpressionContext.ParseLanguageText  s     	()))))r   c                 $    t          d           dS )z9
        result is (string langName, iid langId)
        r  Nr*   r%   s    r   r  z&DebugExpressionContext.GetLanguageInfo  s     	&'''''r   N)
r
   r   r   r-   r   IID_IDebugExpressionContextr   r'   r  r  r   r   r   r  r    sY        +->?;<  * * *( ( ( ( (r   r  c                   D    e Zd Zg dZej        gZd Zd Zd Z	d Z
d ZdS )DebugExpression)StartAbortQueryIsCompleteGetResultAsStringGetResultAsDebugPropertyc                 $    t          d           dS )zP
        callback -- an IDebugExpressionCallback

        result - void
        r!  Nr*   )r&   callbacks     r   r!  zDebugExpression.Start%  s     	Wr   c                 $    t          d           dS )2
        no params
        result -- void
        r"  Nr*   r%   s    r   r"  zDebugExpression.Abort-  s    
 	Wr   c                 $    t          d           dS )r)  r#  Nr*   r%   s    r   r#  zDebugExpression.QueryIsComplete4  s    
 	&'''''r   c                 $    t          d           d S )Nr$  r*   r%   s    r   r$  z!DebugExpression.GetResultAsString;  s    ()))))r   c                 $    t          d           d S )Nr%  r*   r%   s    r   r%  z(DebugExpression.GetResultAsDebugProperty>  s    /00000r   N)r
   r   r   r-   r   IID_IDebugExpressionr   r!  r"  r#  r$  r%  r   r   r   r   r     s            45    ( ( (* * *1 1 1 1 1r   r   c                   *    e Zd ZdgZej        gZd ZdS )ProvideExpressionContextsEnumExpressionContextsc                 $    t          d           d S )Nr0  r*   r%   s    r   r0  z0ProvideExpressionContexts.EnumExpressionContextsF  r   r   N)r
   r   r   r-   r   IID_IProvideExpressionContextsr   r0  r   r   r   r/  r/  B  s8        01>?/ / / / /r   r/  )#r   win32com.server.connectr   r   win32com.axdebugr   win32com.axdebug.utilr   r   win32com.server.exceptionr   win32com.server.utilr   r	   r   r   r   r   r    r0   r5   rK   r[   r^   rw   r   r   r   r   r   r   r   r  r   r/  r   r   r   <module>r8     s3            $ $ $ $ $ $ 5 5 5 5 5 5 5 5 2 2 2 2 2 2 6 6 6 6 6 6	< 	< 	< 	< 	<1 	< 	< 	<	; 	; 	; 	; 	;0 	; 	; 	;	@ 	@ 	@ 	@ 	@ 5 	@ 	@ 	@B B B B B"7 B B BH H H H H(= H H H+ + + + + + + +($ $ $ $ $- $ $ $% % % % %0 % % %P! ! ! ! ! ! ! !4Y Y Y Y Y% Y Y Y:- :- :- :- :- :- :- :-z& & & & & & & &D3 3 3 3 3 3 3 3D) ) ) ) ) ) ) ) & & & & & & & & ,) ,) ,) ,) ,) ,) ,) ,)^*& *& *& *& *& *& *& *&`/9 /9 /9 /9 /9 /9 /9 /9d3 3 3 3 3 3 3 3l( ( ( ( ( ( ( (($1 $1 $1 $1 $1 $1 $1 $1N/ / / / / / / / / /r   