
    >Tf,C                     h   d dl mZ d dlmZ d dlmZmZmZ d dlm	Z
 d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ ddlmZmZmZ ddlT  G d dej                  Z ee           G d deej                               Z! eed           G d dej"                              Z# eed           G d dej$                              Z% G d dej&                  Z' G d dej(                  Z) G d dej*                  Z+ eed           G d d e                      Z, G d! d"ej                  Z- ee.           G d# d$eej                               Z/ ee.d           G d% d&ej"                              Z0 ee.d           G d' d(ej$                              Z1 G d) d*ej&                  Z2 G d+ d,ej(                  Z3 G d- d.ej*                  Z4 ee.d           G d/ d0e                      Z5 G d1 d2ej                  Z6 ee7           G d3 d4eej                               Z8 ee7d           G d5 d6ej"                              Z9 ee7d           G d7 d8ej$                              Z: G d9 d:ej&                  Z; G d; d<ej(                  Z< G d= d>ej*                  Z= G d? d@ej                  Z> ee?           G dA dBeej                               Z@ ee?d           G dC dDej"                              ZA ee?d           G dE dFej$                              ZB G dG dHej&                  ZC G dI dJej(                  ZD G dK dLej*                  ZE G dM dNej                  ZF eeG           G dO dPej                               ZH eeGd           G dQ dRej"                              ZI eeGd           G dS dTej$                              ZJ G dU dVej&                  ZK G dW dXej(                  ZL G dY dZej*                  ZM G d[ d\ej"                  ZN eeGd           G d] d^e                      ZO G d_ d`ej                  ZP eeQ           G da dbej                               ZR eeQd           G dc ddej"                              ZS eeQd           G de dfej$                              ZT G dg dhej&                  ZU G di djej(                  ZV G dk dlej*                  ZW  eeQdmdneQio          e            G dp dqej                  ZX eeY           G dr dseej                               ZZ eeYd           G dt duej"                              Z[ eeYd           G dv dwej$                              Z\ G dx dyej&                  Z] G dz d{ej(                  Z^ G d| d}ej*                  Z_ G d~ dej                  Z` eea           G d dej                               Zb eead           G d dej"                              Zc eead           G d dej$                              Zd G d dej&                  Ze G d dej(                  Zf G d dej*                  ZgdS )    )messages)transaction)get_object_or_404redirectrender)gettext_lazy)PathTraceView)generic)ObjectContactsView)ConfirmationForm)count_related)GetRelatedModelsMixinregister_model_view   )
filtersetsformstables)*c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )ProviderListViewprovidercount_circuitsN)__name__
__module____qualname__Providerobjectsannotater   Circuitquerysetr   ProviderFilterSet	filtersetr   ProviderFilterFormfilterset_formr   ProviderTabletable     3/var/www/html/netbox-4.1.3/netbox/circuits/views.pyr   r      sT        (($}Wj99 )  H ,I-N EEEr)   r   c                   F    e Zd Zej                                        Zd ZdS )ProviderViewc                 2    d|                      ||          iS Nrelated_modelsget_related_modelsselfrequestinstances      r*   get_extra_contextzProviderView.get_extra_context!   !    d55gxHH
 	
r)   N)r   r   r   r   r   allr!   r6   r(   r)   r*   r,   r,      s7        ##%%H
 
 
 
 
r)   r,   editc                   N    e Zd Zej                                        Zej        Z	dS )ProviderEditViewN)
r   r   r   r   r   r8   r!   r   ProviderFormformr(   r)   r*   r;   r;   '   s*        ##%%HDDDr)   r;   deletec                   @    e Zd Zej                                        ZdS )ProviderDeleteViewNr   r   r   r   r   r8   r!   r(   r)   r*   r@   r@   -   "        ##%%HHHr)   r@   c                   N    e Zd Zej                                        Zej        Z	dS )ProviderBulkImportViewN)
r   r   r   r   r   r8   r!   r   ProviderImportForm
model_formr(   r)   r*   rD   rD   2   s*        ##%%H)JJJr)   rD   c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )ProviderBulkEditViewr   r   N)r   r   r   r   r   r   r   r    r!   r   r"   r#   r   r&   r'   r   ProviderBulkEditFormr=   r(   r)   r*   rH   rH   7   sT        (($}Wj99 )  H ,I E%DDDr)   rH   c                   t    e Zd Zej                             eed                    Ze	j
        Zej        ZdS )ProviderBulkDeleteViewr   r   N)r   r   r   r   r   r   r   r    r!   r   r"   r#   r   r&   r'   r(   r)   r*   rK   rK   @   sL        (($}Wj99 )  H ,I EEEr)   rK   contactsc                   @    e Zd Zej                                        ZdS )ProviderContactsViewNrA   r(   r)   r*   rN   rN   H   rB   r)   rN   c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )ProviderAccountListViewprovider_accountr   N)r   r   r   ProviderAccountr   r   r   r    r!   r   ProviderAccountFilterSetr#   r   ProviderAccountFilterFormr%   r   ProviderAccountTabler'   r(   r)   r*   rP   rP   Q   sU        &//$}W.@AA 0  H 3I4N'EEEr)   rP   c                   F    e Zd Zej                                        Zd ZdS )ProviderAccountViewc                 2    d|                      ||          iS r.   r0   r2   s      r*   r6   z%ProviderAccountView.get_extra_context^   r7   r)   N)r   r   r   rR   r   r8   r!   r6   r(   r)   r*   rW   rW   Z   s7        &**,,H
 
 
 
 
r)   rW   c                   N    e Zd Zej                                        Zej        Z	dS )ProviderAccountEditViewN)
r   r   r   rR   r   r8   r!   r   ProviderAccountFormr=   r(   r)   r*   rZ   rZ   d   *        &**,,H$DDDr)   rZ   c                   @    e Zd Zej                                        ZdS )ProviderAccountDeleteViewNr   r   r   rR   r   r8   r!   r(   r)   r*   r^   r^   j   "        &**,,HHHr)   r^   c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )ProviderAccountBulkImportViewN)r   r   r   rR   r   r8   r!   r   ProviderAccountImportFormrF   r   rU   r'   r(   r)   r*   rb   rb   o   s2        &**,,H0J'EEEr)   rb   c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )ProviderAccountBulkEditViewrQ   r   N)r   r   r   rR   r   r   r   r    r!   r   rS   r#   r   rU   r'   r   ProviderAccountBulkEditFormr=   r(   r)   r*   re   re   u   sU        &//$}W.@AA 0  H 3I'E,DDDr)   re   c                   t    e Zd Zej                             eed                    Ze	j
        Zej        ZdS )ProviderAccountBulkDeleteViewrQ   r   N)r   r   r   rR   r   r   r   r    r!   r   rS   r#   r   rU   r'   r(   r)   r*   rh   rh   ~   sM        &//$}W.@AA 0  H 3I'EEEr)   rh   c                   @    e Zd Zej                                        ZdS )ProviderAccountContactsViewNr_   r(   r)   r*   rj   rj      r`   r)   rj   c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )ProviderNetworkListViewN)r   r   r   ProviderNetworkr   r8   r!   r   ProviderNetworkFilterSetr#   r   ProviderNetworkFilterFormr%   r   ProviderNetworkTabler'   r(   r)   r*   rl   rl      s:        &**,,H3I4N'EEEr)   rl   c                   F    e Zd Zej                                        Zd ZdS )ProviderNetworkViewc           	          d|                      ||t          j                            |j        d                              |          dff          iS )Nr/   view)terminations__provider_networkprovider_network_id)extra)r1   r    r   restrictuserfilterr2   s      r*   r6   z%ProviderNetworkView.get_extra_context   sd    d55  00vFFMMmuMvv- 6 	 	
 	
r)   N)r   r   r   rm   r   r8   r!   r6   r(   r)   r*   rr   rr      s7        &**,,H
 
 
 
 
r)   rr   c                   N    e Zd Zej                                        Zej        Z	dS )ProviderNetworkEditViewN)
r   r   r   rm   r   r8   r!   r   ProviderNetworkFormr=   r(   r)   r*   r|   r|      r\   r)   r|   c                   @    e Zd Zej                                        ZdS )ProviderNetworkDeleteViewN)r   r   r   rm   r   r8   r!   r(   r)   r*   r   r      r`   r)   r   c                   N    e Zd Zej                                        Zej        Z	dS )ProviderNetworkBulkImportViewN)
r   r   r   rm   r   r8   r!   r   ProviderNetworkImportFormrF   r(   r)   r*   r   r      s*        &**,,H0JJJr)   r   c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )ProviderNetworkBulkEditViewN)r   r   r   rm   r   r8   r!   r   rn   r#   r   rp   r'   r   ProviderNetworkBulkEditFormr=   r(   r)   r*   r   r      s:        &**,,H3I'E,DDDr)   r   c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )ProviderNetworkBulkDeleteViewN)r   r   r   rm   r   r8   r!   r   rn   r#   r   rp   r'   r(   r)   r*   r   r      s2        &**,,H3I'EEEr)   r   c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )CircuitTypeListViewtypecircuit_countN)r   r   r   CircuitTyper   r   r   r    r!   r   CircuitTypeFilterSetr#   r   CircuitTypeFilterFormr%   r   CircuitTypeTabler'   r(   r)   r*   r   r      sT        "++#mGV44 ,  H /I0N#EEEr)   r   c                   F    e Zd Zej                                        Zd ZdS )CircuitTypeViewc                 2    d|                      ||          iS r.   r0   r2   s      r*   r6   z!CircuitTypeView.get_extra_context   r7   r)   N)r   r   r   r   r   r8   r!   r6   r(   r)   r*   r   r      s7        "&&((H
 
 
 
 
r)   r   c                   N    e Zd Zej                                        Zej        Z	dS )CircuitTypeEditViewN)
r   r   r   r   r   r8   r!   r   CircuitTypeFormr=   r(   r)   r*   r   r      s*        "&&((H DDDr)   r   c                   @    e Zd Zej                                        ZdS )CircuitTypeDeleteViewN)r   r   r   r   r   r8   r!   r(   r)   r*   r   r      s"        "&&((HHHr)   r   c                   N    e Zd Zej                                        Zej        Z	dS )CircuitTypeBulkImportViewN)
r   r   r   r   r   r8   r!   r   CircuitTypeImportFormrF   r(   r)   r*   r   r      s*        "&&((H,JJJr)   r   c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )CircuitTypeBulkEditViewr   r   N)r   r   r   r   r   r   r   r    r!   r   r   r#   r   r   r'   r   CircuitTypeBulkEditFormr=   r(   r)   r*   r   r      sT        "++#mGV44 ,  H /I#E(DDDr)   r   c                   t    e Zd Zej                             eed                    Ze	j
        Zej        ZdS )CircuitTypeBulkDeleteViewr   r   N)r   r   r   r   r   r   r   r    r!   r   r   r#   r   r   r'   r(   r)   r*   r   r      sL        "++#mGV44 ,  H /I#EEEr)   r   c                   t    e Zd Zej                            ddddd          Zej        Z	e
j        Zej        ZdS )CircuitListViewtenant__grouptermination_a__sitetermination_z__sitetermination_a__provider_networktermination_z__provider_networkN)r   r   r   r    r   prefetch_relatedr!   r   CircuitFilterSetr#   r   CircuitFilterFormr%   r   CircuitTabler'   r(   r)   r*   r   r     sN        //.0E)+L H +I,NEEEr)   r   c                   @    e Zd Zej                                        ZdS )CircuitViewNr   r   r   r    r   r8   r!   r(   r)   r*   r   r     !        ""$$HHHr)   r   c                   N    e Zd Zej                                        Zej        Z	dS )CircuitEditViewN)
r   r   r   r    r   r8   r!   r   CircuitFormr=   r(   r)   r*   r   r     s)        ""$$HDDDr)   r   c                   @    e Zd Zej                                        ZdS )CircuitDeleteViewNr   r(   r)   r*   r   r     r   r)   r   c                   l    e Zd Zej                                        Zej        Z	dgZ
dej        iZd ZdS )CircuitBulkImportViewzcircuits.add_circuitterminationterminationsc                 4    |                     d|i           |S )Ncircuit)update)r3   parentdatas      r*   prep_related_object_dataz.CircuitBulkImportView.prep_related_object_data&  s    Y'(((r)   N)r   r   r   r    r   r8   r!   r   CircuitImportFormrF   additional_permissions#CircuitTerminationImportRelatedFormrelated_object_formsr   r(   r)   r*   r   r     s[        ""$$H(J) 	A    r)   r   c                   r    e Zd Zej                            dddd          Zej        Z	e
j        Zej        ZdS )CircuitBulkEditViewr   r   r   r   N)r   r   r   r    r   r   r!   r   r   r#   r   r   r'   r   CircuitBulkEditFormr=   r(   r)   r*   r   r   +  sK        //4)+L H +IE$DDDr)   r   c                   d    e Zd Zej                            dddd          Zej        Z	e
j        ZdS )CircuitBulkDeleteViewr   r   r   r   N)r   r   r   r    r   r   r!   r   r   r#   r   r   r'   r(   r)   r*   r   r   5  sC        //4)+L H +IEEEr)   r   c                   P    e Zd ZdZej                                        Zd Zd Z	dS )CircuitSwapTerminationsz5
    Swap the A and Z terminations of a circuit.
    c                 h   t          | j        |          }t                      }|j        sS|j        sLt          j        |t          d                              |                     t          d|j
                  S t          |d||j        |j        |dd|                                d          S )	Npkz8No terminations have been defined for circuit {circuit}.r   circuits:circuit'circuits/circuit_terminations_swap.htmllightprimaryr   termination_atermination_zr=   panel_classbutton_class
return_url)r   r!   r   r   r   r   error_formatr   r   r   get_absolute_url)r3   r4   r   r   r=   s        r*   getzCircuitSwapTerminations.getD  s    #DMb999!! $ 	?W-B 	?N7AJ% %fWf%%' ' ' .7:>>>>gH$2$2"%!2244K
 K
   	r)   c                    t          | j        |          }t          |j                  }|                                rt
          j                            |j                  	                                }t
          j                            |j
                  	                                }|r|rt          j                    5  d|_        |                                 d|_        |                                 d|_        |                                 |                                 ||_        ||_        |                                 d d d            n# 1 swxY w Y   n|rKd|_        |                                 |                                 d |_        |                                 nJd|_        |                                 |                                 d |_        |                                 t%          j        |t)          d                              |                     t-          d|j                  S t1          |d||j        |j        |d	d
|                                d          S )Nr   r   AZz+Swapped terminations for circuit {circuit}.r   r   r   defaultr   r   )r   r!   r   POSTis_validCircuitTerminationr   rz   termination_a_idfirsttermination_z_idr   atomic	term_sidesaverefresh_from_dbr   r   r   successr   r   r   r   r   r   )r3   r4   r   r   r=   r   r   s          r*   postzCircuitSwapTerminations.postY  s   #DMb999--==??  	?.6==AY=ZZ``bbM.6==AY=ZZ``bbM   ')) 
# 
#.1M+!&&(((.1M+!&&(((.1M+!&&(((++---,9G),9G)LLNNN
# 
# 
# 
# 
# 
# 
# 
# 
# 
# 
# 
# 
# 
# 
#  *-'""$$$'')))(,%*-'""$$$'')))(,%Wa(U&V&V&]&]fm&]&n&nooo.7:>>>>gH$2$2$%!2244K
 K
   	s   BEE EN)
r   r   r   __doc__r    r   r8   r!   r   r   r(   r)   r*   r   r   >  sQ          ""$$H  *. . . . .r)   r   c                   @    e Zd Zej                                        ZdS )CircuitContactsViewNr   r(   r)   r*   r   r     r   r)   r   c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )CircuitTerminationListViewN)r   r   r   r   r   r8   r!   r   CircuitTerminationFilterSetr#   r   CircuitTerminationFilterFormr%   r   CircuitTerminationTabler'   r(   r)   r*   r   r     s:        !)--//H6I7N*EEEr)   r   c                   @    e Zd Zej                                        ZdS )CircuitTerminationViewNr   r   r   r   r   r8   r!   r(   r)   r*   r   r     "        !)--//HHHr)   r   c                   N    e Zd Zej                                        Zej        Z	dS )CircuitTerminationEditViewN)
r   r   r   r   r   r8   r!   r   CircuitTerminationFormr=   r(   r)   r*   r   r     s*        !)--//H'DDDr)   r   c                   @    e Zd Zej                                        ZdS )CircuitTerminationDeleteViewNr   r(   r)   r*   r   r     r   r)   r   c                   N    e Zd Zej                                        Zej        Z	dS ) CircuitTerminationBulkImportViewN)
r   r   r   r   r   r8   r!   r   CircuitTerminationImportFormrF   r(   r)   r*   r   r     s*        !)--//H3JJJr)   r   c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )CircuitTerminationBulkEditViewN)r   r   r   r   r   r8   r!   r   r   r#   r   r   r'   r   CircuitTerminationBulkEditFormr=   r(   r)   r*   r  r    s:        !)--//H6I*E/DDDr)   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS ) CircuitTerminationBulkDeleteViewN)r   r   r   r   r   r8   r!   r   r   r#   r   r   r'   r(   r)   r*   r  r    s2        !)--//H6I*EEEr)   r  tracemodel)kwargsc                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )CircuitGroupListViewgroup)circuit_group_assignment_countN)r   r   r   CircuitGroupr   r   r   CircuitGroupAssignmentr!   r   CircuitGroupFilterSetr#   r   CircuitGroupFilterFormr%   r   CircuitGroupTabler'   r(   r)   r*   r	  r	    sU        #,,'4}5KW'U'U -  H 0I1N$EEEr)   r	  c                   F    e Zd Zej                                        Zd ZdS )CircuitGroupViewc                 2    d|                      ||          iS r.   r0   r2   s      r*   r6   z"CircuitGroupView.get_extra_context  r7   r)   N)r   r   r   r  r   r8   r!   r6   r(   r)   r*   r  r    s7        #''))H
 
 
 
 
r)   r  c                   N    e Zd Zej                                        Zej        Z	dS )CircuitGroupEditViewN)
r   r   r   r  r   r8   r!   r   CircuitGroupFormr=   r(   r)   r*   r  r    s*        #''))H!DDDr)   r  c                   @    e Zd Zej                                        ZdS )CircuitGroupDeleteViewN)r   r   r   r  r   r8   r!   r(   r)   r*   r  r    s"        #''))HHHr)   r  c                   N    e Zd Zej                                        Zej        Z	dS )CircuitGroupBulkImportViewN)
r   r   r   r  r   r8   r!   r   CircuitGroupImportFormrF   r(   r)   r*   r  r    s*        #''))H-JJJr)   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )CircuitGroupBulkEditViewN)r   r   r   r  r   r8   r!   r   r  r#   r   r  r'   r   CircuitGroupBulkEditFormr=   r(   r)   r*   r  r    s:        #''))H0I$E)DDDr)   r  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )CircuitGroupBulkDeleteViewN)r   r   r   r  r   r8   r!   r   r  r#   r   r  r'   r(   r)   r*   r   r     s2        #''))H0I$EEEr)   r   c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )CircuitGroupAssignmentListViewN)r   r   r   r  r   r8   r!   r   CircuitGroupAssignmentFilterSetr#   r    CircuitGroupAssignmentFilterFormr%   r   CircuitGroupAssignmentTabler'   r(   r)   r*   r"  r"    s:        %-1133H:I;N.EEEr)   r"  c                   @    e Zd Zej                                        ZdS )CircuitGroupAssignmentViewNr   r   r   r  r   r8   r!   r(   r)   r*   r'  r'    "        %-1133HHHr)   r'  c                   N    e Zd Zej                                        Zej        Z	dS )CircuitGroupAssignmentEditViewN)
r   r   r   r  r   r8   r!   r   CircuitGroupAssignmentFormr=   r(   r)   r*   r+  r+    s*        %-1133H+DDDr)   r+  c                   @    e Zd Zej                                        ZdS ) CircuitGroupAssignmentDeleteViewNr(  r(   r)   r*   r.  r.  
  r)  r)   r.  c                   N    e Zd Zej                                        Zej        Z	dS )$CircuitGroupAssignmentBulkImportViewN)
r   r   r   r  r   r8   r!   r    CircuitGroupAssignmentImportFormrF   r(   r)   r*   r0  r0    s*        %-1133H7JJJr)   r0  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )"CircuitGroupAssignmentBulkEditViewN)r   r   r   r  r   r8   r!   r   r#  r#   r   r%  r'   r   "CircuitGroupAssignmentBulkEditFormr=   r(   r)   r*   r3  r3    s:        %-1133H:I.E3DDDr)   r3  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )$CircuitGroupAssignmentBulkDeleteViewN)r   r   r   r  r   r8   r!   r   r#  r#   r   r%  r'   r(   r)   r*   r6  r6    s2        %-1133H:I.EEEr)   r6  N)hdjango.contribr   	django.dbr   django.shortcutsr   r   r   django.utils.translationr   r   
dcim.viewsr	   netbox.viewsr
   tenancy.viewsr   utilities.formsr   utilities.queryr   utilities.viewsr   r    r   r   r   modelsObjectListViewr   r   
ObjectViewr,   ObjectEditViewr;   ObjectDeleteViewr@   BulkImportViewrD   BulkEditViewrH   BulkDeleteViewrK   rN   rP   rR   rW   rZ   r^   rb   re   rh   rj   rl   rm   rr   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  r  r  r  r   r"  r  r'  r+  r.  r0  r3  r6  r(   r)   r*   <module>rJ     s   # # # # # # ! ! ! ! ! ! @ @ @ @ @ @ @ @ @ @ 6 6 6 6 6 6 $ $ $ $ $ $             , , , , , , , , , , , , ) ) ) ) ) ) F F F F F F F F ' ' ' ' ' ' ' ' ' '    ! ! ! ! !w- ! ! ! X
 
 
 
 
('*< 
 
 
 Xv&&    w-   '&
 Xx((& & & & &1 & & )(&* * * * *W3 * * *
& & & & &7/ & & &! ! ! ! !W3 ! ! ! Xz**& & & & &- & & +*&( ( ( ( (g4 ( ( ( _%%
 
 
 
 
/1C 
 
 &%
 _f--% % % % %g4 % % .-%
 _h//- - - - - 8 - - 0/-( ( ( ( (G$: ( ( (- - - - -'"6 - - -( ( ( ( (G$: ( ( ( _j11- - - - -"4 - - 21-( ( ( ( (g4 ( ( ( _%%
 
 
 
 
/1C 
 
 &%
$ _f--% % % % %g4 % % .-%
 _h//- - - - - 8 - - 0/-1 1 1 1 1G$: 1 1 1
- - - - -'"6 - - -( ( ( ( (G$: ( ( ($ $ $ $ $'0 $ $ $ [!!
 
 
 
 
+W-? 
 
 "!
 [&))! ! ! ! !'0 ! ! *)!
 [(++) ) ) ) )G4 ) ) ,+)- - - - - 6 - - -
) ) ) ) )g2 ) ) )$ $ $ $ $ 6 $ $ $         g,       W% % % % %'$ % % % Wf%%    g,   &%
 Wh''% % % % %0 % % ('%    G2   % % % % %'. % % %         G2      I I I I Ig4 I I IX Wj))% % % % %, % % *)%+ + + + +!7 + + + '((0 0 0 0 0W/ 0 0 )(0 '00( ( ( ( (!7 ( ( 10(
 '220 0 0 0 07#; 0 0 3204 4 4 4 4w'= 4 4 4
0 0 0 0 0W%9 0 0 0+ + + + +w'= + + + W  &BT8U V V VWd e e e% % % % %71 % % % \""
 
 
 
 
,g.@ 
 
 #"
 \6**" " " " "71 " " +*"
 \8,,* * * * *W5 * * -,*. . . . .!7 . . .
* * * * *w3 * * *% % % % %!7 % % %/ / / / /W%; / / / +,,4 4 4 4 4!3 4 4 -,4 +V44, , , , ,W%; , , 54,
 +X664 4 4 4 4w'? 4 4 7648 8 8 8 87+A 8 8 8
4 4 4 4 4)= 4 4 4/ / / / /7+A / / / / /r)   