
    hi              	         d Z ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z
mZ 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mZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< ddl=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZS  G d d          ZTdddddddddd}d0ZU	 d~dd2ZV	 d~dd3ZW	 d~dd4ZXdd6ZYdd:ZZdd<Z[dd>Z\dd@Z]ddBZ^ddFZ_ddJZ`ddLZaddMZbddPZcdddQddTZdddVZeddXZf	 ddd[Zgdd^Zhddd_ddcZiddgZjddhZkddjZl	 	 dddnZmddqZn edreAs          Zod~dduZpddyZqddzZrdd|ZsdS )z!Type checking of attribute access    )annotations)Sequence)CallableTypeVarcast)message_registrystate)TypeCheckerSharedApi)erase_typevars)expand_self_typeexpand_type_by_instancefreshen_all_functions_type_vars)map_instance_to_supertype)is_overlapping_types)MessageBuilder)ARG_POSARG_STAR	ARG_STAR2EXCLUDED_ENUM_ATTRIBUTESSYMBOL_FUNCBASE_TYPESContext	Decorator
ExpressionFuncBaseFuncDef	IndexExprMypyFileNameExprOverloadedFuncDefSymbolTableTempNode	TypeAliasTypeInfoTypeVarLikeExprVaris_final_node)AttributeContext)
is_subtype)	bind_selferase_to_boundfreeze_all_type_varsfunction_typeget_all_type_varsmake_simplified_unionsupported_self_typetuple_fallback)AnyTypeCallableTypeDeletedTypeFunctionLikeInstanceLiteralTypeNoneType
OverloadedParamSpecTypePartialType
ProperType	TupleTypeTypeTypedDictType	TypeOfAnyTypeTypeTypeVarLikeTypeTypeVarTupleTypeTypeVarTypeUninhabitedType	UnionTypeget_proper_typec                  V    e Zd ZdZddddddddd&dZd'dZd(d Zd)d"Zdddd#d*d%ZdS )+MemberContextzInformation and objects needed to type check attribute access.

    Look at the docstring of analyze_member_access for more information.
    NF)	self_typemodule_symbol_tableno_deferralis_selfrvaluesuppress_errorspreserve_type_var_ids	is_lvalueboolis_superis_operatororiginal_typer=   contextr   chkr
   rI   Type | NonerJ   SymbolTable | NonerK   rL   rM   Expression | NonerN   rO   returnNonec                   || _         || _        || _        || _        |p|| _        || _        || _        |j        | _        || _        |	| _	        |
| _
        ||sJ || _        || _        || _        d S N)rP   rR   rS   rT   rI   rU   rV   msgrJ   rK   rL   rM   rN   rO   )selfrP   rR   rS   rT   rU   rV   rI   rJ   rK   rL   rM   rN   rO   s                 `/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/mypy/checkmember.py__init__zMemberContext.__init__V   s    " # &*"3m7#6 &. &;"""    namestrr5   c                6    | j                             |          S r]   )rV   
named_type)r_   rc   s     r`   rf   zMemberContext.named_type{   s    x""4(((rb   c                <    | j                             ||           d S r]   )rV   handle_cannot_determine_type)r_   rc   rU   s      r`   not_ready_callbackz MemberContext.not_ready_callback~   s     --dG<<<<<rb   r^   c                X    | j         s"| j                            || j                   d S d S r]   )rN   r^   failrU   )r_   r^   s     r`   rk   zMemberContext.fail   s5    # 	-HMM#t|,,,,,	- 	-rb   )rI   rP   rT   bool | Nonec                   t          | j        | j        | j        | j        | j        | j        | j        | j        | j	        | j
        | j        | j                  }|||_        |||_        |||_        |S )N)rP   rR   rS   rT   rU   rV   rI   rJ   rK   rM   rN   rO   )rH   rP   rR   rS   rT   rU   rV   rI   rJ   rK   rM   rN   rO   )r_   rI   rP   rT   mxs        r`   copy_modifiedzMemberContext.copy_modified   s     n](,Ln $ 8(; 0"&"<
 
 
  $BL $BL$,B	rb   )rP   rQ   rR   rQ   rS   rQ   rT   r=   rU   r   rV   r
   rI   rW   rJ   rX   rK   rQ   rL   rQ   rM   rY   rN   rQ   rO   rQ   rZ   r[   )rc   rd   rZ   r5   )rc   rd   rU   r   rZ   r[   )r^   rd   rZ   r[   )rI   rW   rP   rl   rT   rW   rZ   rH   )	__name__
__module____qualname____doc__ra   rf   ri   rk   ro    rb   r`   rH   rH   P   s          "&26!$( %&+#; #; #; #; #; #;J) ) ) )= = = =- - - - "&!%%)       rb   rH   NF)override_infoin_literal_contextrI   rJ   rK   rL   rM   rN   rc   rd   typr=   rU   r   rP   rQ   rR   rS   rT   rV   r
   ru   TypeInfo | Nonerv   rI   rW   rJ   rX   rK   rL   rM   rY   rN   rZ   c                   t          |||||||
|||||          }t          | |||          }t          |          }|	r#t          |t                    r|j        |j        S |S )a  Return the type of attribute 'name' of 'typ'.

    The actual implementation is in '_analyze_member_access' and this docstring
    also applies to it.

    This is a general operation that supports various different variations:

      1. lvalue or non-lvalue access (setter or getter access)
      2. supertype access when using super() (is_super == True and
         'override_info' should refer to the supertype)

    'original_type' is the most precise inferred or declared type of the base object
    that we have available. When looking for an attribute of 'typ', we may perform
    recursive calls targeting the fallback type, and 'typ' may become some supertype
    of 'original_type'. 'original_type' is always preserved as the 'typ' type used in
    the initial, non-recursive call. The 'self_type' is a component of 'original_type'
    to which generic self should be bound (a narrower type that has a fallback to instance).
    Currently, this is used only for union types.

    'module_symbol_table' is passed to this function if 'typ' is actually a module,
    and we want to keep track of the available attributes of the module (since they
    are not available via the type object directly)

    'rvalue' can be provided optionally to infer better setter type when is_lvalue is True,
    most notably this helps for descriptors with overloaded __set__() method.

    'suppress_errors' will skip any logic that is only needed to generate error messages.
    Note that this more of a performance optimization, one should not rely on this to not
    show any messages, as some may be show e.g. by callbacks called here,
    use msg.filter_errors(), if needed.
    )rP   rR   rS   rT   rU   rV   rI   rJ   rK   rL   rM   rN   )rH   _analyze_member_accessrF   
isinstancer5   last_known_value)rc   rw   rU   rP   rR   rS   rT   rV   ru   rv   rI   rJ   rK   rL   rM   rN   rn   resultpossible_literals                      r`   analyze_member_accessr      s    d 
#/'
 
 
B $D#r=AAF&v..'22 -900rb   rn   c                V   t          |          }t          |t                    rt          | |||          S t          |t                    rt	          t
          j        |          S t          |t                    rt          | ||          S t          |t                    r%|
                                rt          | ||          S t          |t                    rt          | |||          S t          |t                    rt          | t!          |          ||          S t          |t"          t          f          rt          | |j        ||          S t          |t&                    rt)          | |||          S t          |t*                    rt-          | ||          S t          |t.                    rWt          |t0                    r+|j        r$t          | t5          |j                  ||          S t          | |j        ||          S t          |t8                    r@|j        s |j                            ||j                    t	          t
          j!                  S t          |tD                    rtE                      }|j#        |_#        |S tI          |j%        || |          S )N)
source_any)&rF   r{   r5   analyze_instance_member_accessr1   r?   from_another_anyrE   analyze_union_member_accessr4   is_type_obj#analyze_type_callable_member_accessr@   analyze_type_type_member_accessr<   rz   r0   r6   fallbackr>   analyze_typeddict_accessr7   analyze_none_member_accessrA   rC   valuesr.   upper_boundr3   rN   r^   deleted_as_rvaluerU   
from_errorrD   	ambiguousreport_missing_attributerT   )rc   rw   rn   ru   	attr_types        r`   rz   rz      sz    #

C#x   "-dC]KKK	C	!	!  y1cBBBB	C	#	# *4b999	C	&	& 3??+<+< 24bAAA	C	"	" .tS"mLLL	C	#	# %dN3,?,?]SSS	C+|4	5	5 %dCL"mLLL	C	'	' 'c2}EEE	C	"	" )$R888	C	)	) c;'' 	CJ 	)+CJ77]   &dCOROOO	C	%	% ! 	6F$$S"*555y+,,,	C	)	) #%%	!m	#B$4c4DDDrb   c           	        |j         j        rdS |j                                         5  |j                                        5 }|j                             ||          }|	 ddd           ddd           dS t          | ||                    |          |          }|                                 cddd           cddd           S # 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )z7Check if the given type has the attribute when awaited.FNrI   )	rV   checking_missing_awaitchecking_await_setr^   filter_errorsget_precise_awaitable_typerz   ro   has_new_errors)rc   rw   rn   ru   local_errorsaw_type_s          r`   may_be_awaitable_attributer     s    
v$ u		"	"	$	$ 1 1bf&:&:&<&< 1&33CFF?1 1 1 1 1 1 1 1 1 1 1 1 1 1 #'2++g+>>
 
  ..0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1sA   C$C!C$9:C3C$C	C$C	C$$C(+C(c                Z   |j         rt          t          j                  S |j                            | |||j        |j                  }|j                                        s2t          ||||          r |j        
                    |j        |           t          t          j                  S r]   )rN   r1   r?   r   r^   has_no_attrrU   rJ   prefer_simple_messagesr   possible_missing_await)rT   rw   rc   rn   ru   
error_codes         r`   r   r   *  s     
 -y+,,,##M3bj"J`aaJ6((** B%dC]CC 	BF))"*jAAA9'(((rb   r5   c                   |j         }|r|}|                    |           }| dk    rO|j        sH|j        sA|r|j        s8|                    t
          j                   t          t          j	                  S t          j        rj|j        t          j        d         k    rO| t          j        d         k    r9|j        s2|j                             dj        t          j         |j                   |rlt%          |t&                    sV|j        r|j        st)          ||           |j        rt%          |t,                    sJ |j        d         }t%          |t&                    sJ |j        r1|j        j        r%|j                            |j        |j                   t=          | |j        ||          S |j        r&|j        s|j                            |j                   t%          |t,                    s$tA          ||!                    d                    }nq|j         G|j"        s'|j        r |#                    |j        |j                   t          t          j$                  S t%          |j         tJ                    sJ |j         }|j&        stO          |          }|j(        s}t%          |tR          t,          f          r|j*        rtW          ||j,                  }nDt[          ||j,        |j.        |j        | |j                  }t_          ||j,        |j.                  }ta          ||j1                  }te          ||          }tg          |           |S ti          | |||          S )Nra   r      zOccurrence of '{}.{}'builtins.functionis_classmethod)5type
get_methodrR   is_finalrk   r   CANNOT_ACCESS_INITr1   r?   r   r	   find_occurrencesrc   rN   r^   noteformatrU   r{   r   validate_super_callis_propertyr   itemsrP   varis_settable_propertyrV   warn_deprecatedsetteranalyze_varcant_assign_to_methodr,   rf   rK   ri   special_formr8   rO   r   	is_staticr   is_trivial_selfbind_self_fastrI   check_self_argis_classr)   r   infor   r+   analyze_member_var_access)	rc   rw   rn   ru   r   methodgetter	signaturemember_types	            r`   r   r   >  s^    8D __T""Fz"+dm 	1V_ 	1 GG$78889/000
 	YI/222E*1---" . 	2+2E4JKRZXXX  )>j33 )>; 	,r1 	,+++ 	:f&788888\!_Ffi00000| B
 ? B&&v}bjAAAtVZb999< 	5 2 	5F((444&"344 
	$%fbmm<O.P.PQQII{" ~ C&, C))&+rzBBBy5666fk:66666I' 	C7	BBI 	_&7,=">?? _FDZ _*9blCC		*r|V_bj$PRPV 	 &ifo^^^	'V[99-i==[))) )sD"===rb   noder   r[   c                   d}t          | t                    r
| j        rd}nt          | t                    r| j        r5t          | j        t                    r| j        n| j        j        }|j        }nG| j        s@| j        r9t          | j        d         t                    sJ | j        d         j        j        }|r2|j	        
                    | j        | j        j        |j                   d S d S )NFTr   )r{   r   is_trivial_bodyr   implfuncr   r   r   r^   unsafe_superrc   r   rU   )r   rn   r   r   s       r`   r   r     s    L$   >T%9 >	D+	,	, >9 	> *49g > >R499DIND/LL! 	>dj 	>djmY77777:a=-=L C
DIty~rzBBBBBC Crb   r4   c                   |j         d         j        }t          |t                    sJ t          |t                    rt          |          }t          |t                    r|j        }t          |t                    rJ|j	        s-t          || ||j         d         j        |j                  }|r|S t          | |j        |          S J d|            )Nr   )original_varsmcs_fallbackFzUnexpected type )r   ret_typer{   r;   r<   r0   r>   r   r5   rS   analyze_class_attribute_access	variablesrz   )rc   rw   rn   r   r}   s        r`   r   r     s     y|$Hh
+++++(I&& ,!(++(M** %$(H%% 6~ 	 4$#)A,2HWZWc  F  %dCL"===5555555rb   r@   c                &   d }|                     d          }t          |j        t                    r	|j        }n.t          |j        t                    rE|j                                        5  t          | |||          cd d d            S # 1 swxY w Y   nt          |j        t                    rt          |j        j
                  }t          |t                    r|}nt          |t                    r1t          | t          j        ||j        |j                  ||          S t          |t                     rt#          |          }nt          |t                    rC|j                                        5  t          | |||          cd d d            S # 1 swxY w Y   nt          |j        t                     rt#          |j                  }nt          |j        t$                    r&|j                                        r|j        j        }nOt          |j        t                    r5t          |j        j        t                    r|j        j        j        j        }d}||j        j        p|}|rO|j        sHt1          || |||          }|r2t          t          |          t                    r|j        j        s|S d}|j                            |          5  t          | |||          cd d d            S # 1 swxY w Y   d S )Nbuiltins.type)linecolumnF)r   ru   T)r   )rf   r{   itemr5   r1   r^   r   rz   rC   rF   r   rE   r@   make_normalizedr   r   r<   r0   r4   r   r   r   metaclass_typerS   r   fallback_to_any)	rc   rw   rn   ru   r   r   r   ignore_messagesr}   s	            r`   r   r     s    D}}_--H#(H%% 5x	CHg	&	& 5V!!## 	M 	M)$"mLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M	CHk	*	* 5%ch&:;;k8,, 	QDDY// 	Q)(38CJWWW	   Y// 	Q!+..DDW-- 	Q%%'' Q Q-dHb-PPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q	CHi	(	( 5ch''	CHl	+	+ 50D0D0F0F 5x 	CHh	'	' 5chmX.. 	58=%4DO9+7x 
'BN 
'/$
 
 
  	'v66@@ 'TYE^ ' #'			O		<	< I I%dHb-HHI I I I I I I I I I I I I I I I I Is6   .BBB FF#&F#'LL
L
rE   c           	     *   |j                                         5  g }|                                D ]<}|                    |          }|                    t          | ||                     =	 d d d            n# 1 swxY w Y   t          |          S )Nr   )r^   disable_type_namesrelevant_itemsro   appendrz   r.   )rc   rw   rn   resultssubtypeitem_mxs         r`   r   r     s    		"	"	$	$ K K))++ 	K 	KG&&&99GNN1$IIJJJJ	KK K K K K K K K K K K K K K K !)))s   AA;;A?A?r7   c           	         | dk    rKt          d|                    d                    }t          g g g ||                    d                    S t          | |                    d          |          S )N__bool__Fzbuiltins.boolr   r   )	arg_types	arg_kinds	arg_namesr   r   builtins.object)r6   rf   r2   rz   )rc   rw   rn   literal_falses       r`   r   r     s    z#EBMM/4R4RSSS"]]#677
 
 
 	
 &dBMM:K,L,LbQQQrb   ityper   r#   c           
     	   |                     |           }|r|j        nd}|j                            ||j                   |}d}t          |t                    r>|j        }|j        j	        o|j
         }|j        r|j        st          |j        |           t          |t                    r
J d            t          |t                    r$|j        j                            |j                   t          |t&          t(          t          t*          f          rC|j        j                            ||j        |j                  }t3          | |          }||_        t          |t2                    r^||          j        }	|j        r5|j                                        st;          | ||j        |j                   t?          | ||||	|          S |s| dvr|j         s|j!        |j        sdD ]}
|"                    |
          }|r|j        j        dk    rtG          |||
|	          }tI          ||j                  }tK          tM          ||                    }t          |tN                    r|j(        }n|}|j        j         d
|  }|j        j)        *                    |          }|r= |tW          tK          |j,                  ||j        |j        |j                            }|c S n|"                    d          }|r|j        j        dk    rtG          ||d|-                    d          	          }tI          ||j                  }tK          tM          ||                    }t          |tN                    r%t]          |j/                  dk    r|j/        d         S |j0        j1        rte          tf          j4                  S |j5        r,| |j5        j6        v r|j5        j7        s|j5        j6        |          S |j        r@|j        s9|j        8                    | |j                   te          tf          j9                  S tu          |j,        || |          }|j!        | |j!        v rz|j!        |          j;        sh|j!        |          j        }ty          |           }|=                    |j                   ||_        |j        j        >                    ||j                  S |S )zAnalyse attribute access that does not target a method.

    This is logically part of analyze_member_access and the arguments are similar.

    original_type is the type of E in the expression E.var
    NFzDid not expect a function)r   implicitr   )__getattr____setattr____getattribute__)r   r   r   defnr   rc   rn   .r   )rP   r   )lvalue)?getr   rV   r   rU   r{   r   r   r   r   
decoratorsrR   rN   r   r   r   module_refsaddfullnamer#   r"   r$   expr_checkeranalyze_static_referencerP   r%   r   r   get_final_contextcheck_final_memberr^   r   rS   rJ   r   $analyze_decorator_or_funcbase_accessr   rF   r   r2   r   pluginget_attribute_hookr'   rT   ro   lenr   r   r   r1   r?   r   extra_attrsattrsmod_nameundefined_in_superclassr   r   module_publicr   set_lineanalyze_ref_expr)rc   r   r   rn   r   vvvr   rw   r   method_namer   bound_methodgetattr_typer}   r   hooksetattr_meth
bound_typesetattr_typeretes                         r`   r   r     s
    88D>>D#		tAF1bj)))	
BO"i   -F'1G"-6G; 	-r1 	-,,,!W 211111!X +
qz***"xHoFGG 
 f!::2rz2<XX3!S >6:& < 	? 8 8 : : 	?tT262:>>>4E2Rabbbb56JJJ K"*
 | ,	6B " "55
  "fk26GGG#G#5{r$ $ $L 4E6;GGC#23J<Y\3]3]#^#^L!,== .!-!6!- #)+"6????H6=;;HEED 	!%, /0@ A A & " "
 " " " "MMM="@  ??=99L 
6 1 :>O O OA%&''%'88	  
 0|7HII./FzSV/W/WXXlL99 6c,BX>Y>Y\]>]>]'1"55z! /y-...  1TU%6%<<< ) 	1$*400	{ 2- 
&&tRZ888y+,,,&r'7bII "....*40> / &t,1AAJJrz"""AF6&77",7OOO
rb   r^   r   ctxc                    |j         D ]J}|j                            |           }|r,t          |j                  r|                    | d|           KdS )z?Give an error if the name being assigned was declared as final.T)attr_assignr  N)mronamesr   r&   r   cant_assign_to_final)rc   r   r^   r  basesyms         r`   r   r     sk     F FjnnT"" 	F=** 	F$$Tt$EEEF Frb   descriptor_typec           
        t          j                  }| }t          |           } t          | t                    r t	          fd| j        D                       S t          | t                    s|S j        s| j        	                    d          s|S j        r*| j        	                    d          rt          |           S j        r| j        	                    d          s|S | j                            d          }|h                    t          j                            |                     j        j                                       t'          t(          j                  S t-          || d                    |                     }t1          | |j                  }t5          ||          }t          |t6                    r5|                                r!|j        d         j        }t=                      }n-t          |t>                    r|j         }t=                      }n|}j!        j"        #                    | d          }	j!        j"        $                    |	|tK          |j&                  tK          t?          j'        |          j&                  gtP          tP          gj&        | 	          }j!        j"        )                    |tK          |j&                  tK          t?          j'        |          j&                  gtP          tP          gj&        | |	
          \  }
}j!        *                    |j&                   t          |          }t          |t&                    r|S t          |tV                    sh                    t          j                            |                     j        j                                       t'          t(          j                  S |j        S )a]  Type check descriptor access.

    Arguments:
        descriptor_type: The type of the descriptor attribute being accessed
            (the type of ``f`` in ``a.f`` when ``f`` is a descriptor).
        mx: The current member access context.
    Return:
        The return type of the appropriate ``__get__/__set__`` overload for the descriptor.
    c                0    g | ]}t          |          S rt   )analyze_descriptor_access).0rw   rn   s     r`   
<listcomp>z-analyze_descriptor_access.<locals>.<listcomp>  s$    QQQC&sB//QQQrb   __get____set__Nr   r   r   rU   object_typer$  callable_name),rF   rI   r{   rE   r.   r   r5   rP   r   has_readable_memberanalyze_descriptor_assignr   rk   r   DESCRIPTOR_GET_NOT_CALLABLEr   str_with_optionsr^   optionsr1   r?   r   r   ro   r   r   r   r4   r   r   r7   r@   r   rV   r   method_fullnametransform_callee_typer!   rU   r   r   
check_callr   r2   )r  rn   instance_typeorig_descriptor_type
dunder_getr
  rw   dunder_get_type
owner_typer&  r   inferred_dunder_get_types    `          r`   r  r    s    $BL11M*%o66O/9-- $$QQQQ?;PQQQ
 
 	
 22 $##< $ 4 H H S S $## 
| >,@@KK >("===	| $O0DDYOO $## %00;;J
8??00@@ 	
 	
 	

 y+,,,7o66	  L $OZ_
E
EC-lC@@O-.. #=3L3L3N3N #"(+4
 

	M8	,	, #"'
 

"
F'77SSMf)??]BJ777X-j992:NNN	
 
'

# @ 
 
O #%&"5"@"@]BJ777X-j992:NNN	
 
'

## #A 
# 
#A F:rz222./GHH*G44 (''.== -
8??00@@ 	
 	
 	

 y+,,,#,,rb   c           	     :   t          |j                  }| j                            d          }|m|                    t
          j                            |                     |j	        j
                            j                   t          t          j                  S t          || d|                    d|                     }t#          | |j                  }t'          ||          }|j        j                            | d          }|j        p,t1          t          t          j                  |j                  }|j        j                            ||t1          ||j                  |gt8          t8          g|j        |           }|}	|j	                                        5  |j        j                            |t1          ||j                  |	gt8          t8          g|j        | |          \  }
}d d d            n# 1 swxY w Y   t          |          }t?          |t@                    r-t1          t          t          j                  |j                  }	|j        j                            |t1          ||j                  |	gt8          t8          g|j        | |           |j        !                    ||j                   t?          |t@                    rtE          |j#                  dk     rt          t          j                  S |j#        d	         S )
Nr!  F)rP   rI   r   r"  r#  r%     r   )$rF   rI   r   r   rk   r   DESCRIPTOR_SET_NOT_CALLABLEr   r*  r^   r+  valuer1   r?   r   r   ro   r   r   r   rV   r   r,  rM   r!   r   rU   r-  r   r   r.  r{   r2   r   r   r   )r  rn   r/  
dunder_setr
  rw   dunder_set_typer&  rM   type_contextr   inferred_dunder_set_types               r`   r(  r(    s#   #BL11M %00;;J
8??00@@ 	
 	
 	

 y+,,,7eGG	  L $OZ_
E
EC-lC@@OF'77SSMYW(79+A#B#BBJWWWFf)??	-	4	4	4f=	'

# @  O L					 
 
&(f&9&D&DmRZ888,GgJ'' 'E '
 '
##
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  //GHH*L99 U	(> ? ?TTTF""	-	4	4	4lC	'

## #    F:rz222 />> -$.//!33y+,,,#-a00s   &AHH	Hr   r%   c                    | j         | j        j        v o-| j        j        | j                  j        | u o| j         o| j         S )z;Return if var is an instance variable according to PEP 526.)rc   r   r  r   is_classvaris_inferred)r   s    r`   is_instance_varr@  F  sN     	CHN" 	 HN38$)S0	 	  rb   r   r   r   c          	     b   |}t          ||j                  }|j        r|j        r|j        }||j        r|j        }n|j        }|rmt          |t                    r'|j	        
                    ||j        ||j                  S |j        rb|j        s[|j        r-|j        s&|j                            | |j        |j                   |j        r |j                            | |j                   t%          |||||          }d}	|j        rt)          |          r|j        r{t-          |          }t          |t.                    r|                                s|}	n@|j        r7|                    ||d          }
t-          t5          d||
                    }	n|}	t          |	t.                    rH|	                                s4|j        r-|j        s&|j        s|j                            |j                   |	r|j        sg }t          |	t:                    r|	j        n|	gD ]~}t-          |          }t          |t.                    r0|                                r|j        rtA          |||| ||          }nt%          |||||          }|!                    |           t;          j"        |          }nG|j        s'|j#        s |$                    |j%        |j                   tM          tN          j(                  }|j        j)         d|  }|j	        j*        +                    |          }|j        j,        r|j        s| |j        j-        v r,| dvr(t]          | |          }|                    |          }nHt          t-          |          x}t^                    r$|j        j)        d	k    r|j0        r|j0        d
         }|r-|s+|j        j1        rt)          |          ste          ||          }|r= |tg          t-          |j4                  ||j        |j        |j	                            }|S )a  Analyze access to an attribute via a Var node.

    This is conceptually part of analyze_member_access and the arguments are similar.
    itype is the instance type in which attribute should be looked up
    original_type is the type of E in the expression E.var
    if implicit is True, the original Var was created as an assignment to self
    if is_trivial_self is True, we can use fast path for bind_self().
    NF)rT   rI   rP   __call__r   >   rc   r8  r   r|   enum.nonmemberr   )5r   r   r   rP   setter_typeis_readyr   r{   r:   rV   handle_partial_var_typerU   rN   r   r^   read_only_propertyr>  cant_assign_to_classvarexpand_without_bindingis_initialized_in_classr@  rS   rF   r4   r   ro   rz   r   is_staticmethodrE   r   boundexpand_and_bind_callabler   
make_unionrK   ri   rc   r1   r?   r   r   r   r   is_enumenum_membersr6   r5   argsis_protocolr  r'   rT   )rc   r   r   rn   r   r   original_ityperw   r}   	call_typedeco_mxbound_itemsctp_ctr   r   r  enum_literalp_results                      r`   r   r   R  sw   $ N%eSX66E
 BL ?;3<;(Ch
 ,1c;'' 	V611#r|S"*UUU< 	A 2 	A Hs'? H))$
BJGGG A..tRZ@@@'S%LL (,	& 	 0D0D 	  	 !#&&C#|,,  S__5F5F  		  **W\*]]+,B:sT[,\,\]]			 i.. 	9y7L7L7N7N 	9| 9CO 9B<N 9,,RZ888  		7S0 		7K)3Iy)I)IZiooPY{ ) )&r**dL11 V4::<< V3? V3D#udBP_``DD1"c5.RTUUD""4(((()+66F| 	8BN 	8!!#(BJ777/00(#,,d,,H6=++H55D
x 
& 
&38(((T9J-J-J&te<<<L((,(GGFF?6#:#::xHEE	&&*::: ; ]1%F 7x 738#7 7OC<P<P 7*6266 
 01162<UWU[ 
 

 Mrb   rT  c                    |j         st          |           } t          | |||          } t          | |          }t	          |           |S r]   )rO   r   expand_self_type_if_neededr   r+   )rw   r   r   rT  rn   expandeds         r`   rJ  rJ    sQ     # 3-c22
$S"c>
B
BC&sE22H"""Orb   functypec                    |j         st          |           } t          t          || |j                            }t          |t                    sJ |rt          ||j                  }nCt          ||j        |j	        |j
        ||j                  }t          ||j        |j	                  }t          ||          }t          |           |j        s|S t          |t                     r-|j        st%          t&          j                  S |j        d         }t          |t*                    s
J |            |j        r|j        r|j        |j        r|j        p,t7          t%          t&          j                  |j
                  }|j        j                            ||gt@          g|j
                  \  }	}
t          |
          }t          |t*                    sJ |j!        st%          t&          j                  S |j!        d         S |j"        S )Nr   r"  )#rO   r   rF   r   rI   r{   r4   r   r   r   rU   r^   r)   r   r+   r   r8   r   r1   r?   r   r2   r   rP   rE  r   rM   r!   r   rV   r   r.  r   r   r   )r_  r   r   rc   rn   r   rw   r^  type_ctxr   inferred_expandeds              r`   rN  rN    s    # =28<<
*3",GG
H
HCc<((((( ?S",//S",0BBJPTVXV\]]R\3+=>>&sE22H"""? (J'' % ~ 	19/000>!$h--77x777
 !BL !S_5P 	6yaHWY5K-L-LVXV`$a$a$aH#%6#6#A#A8*wi$ $ A  ''899Hh55555! 	1 9/000!!$$  rb   tr   c                   t          |j                  }|j        sj|j        sc|j        }|rIt	          |t
                    r|j        }n,t	          |t                    rt          |j	                  }n|}t          || |          S t          t          |j                  dd          r6|j        }|rt	          |t
                    r|j        }t          || |          S |j        rY|j        |j        k    rI|j        j        =||j        j                                        k    rt          || |j        j                  S | S )zExpand special Self type in a backwards compatible manner.

    This should ensure that mixing old-style and new-style self-types work
    seamlessly. Also, re-bind new style self-types in subclasses if needed.
    F)allow_instancesallow_callable)rF   rI   rL   rR   r{   r@   r   r2   r   r   r   r/   r   r   rV   scopeactive_self_type)rc  rn   r   r   r   originalrepls          r`   r]  r]    sM    r|,,HJ  "+  | 	(H-- }Hl33 %h&788Q---	%%	
 
 
  | 	!
8X66 	!=DQ---

J#("" J ,RV\224444Q
(<===rb   dispatched_arg_typer   c                b   | j         }|s| S g }|rt          j        |          }t          |          }|D ]}	|	j        r|	j        d         t          t          fvr|                    ||	|           | c S t          |	j        d                   }
t          |
t                    r;t          |t                    r&|
j        |j        u r|
j        rt          ||
          s|                    |	           |r|}g }|D ]}	t          |	j        d                   }
|dk    ot          |
t                    }|sQt!          |t#          t%          |
                    t'          d t)          |
          D                       d          r|                    |	           t          |
t*                    r|                    |	           t          |
t,                    rt.          |s!|                    |||d         ||           | S t3          |          dk    r|d         S t5          |          S )a  Check that an instance has a valid type for a method with annotated 'self'.

    For example if the method is defined as:
        class A:
            def f(self: S) -> T: ...
    then for 'x.f' we check that type(x) <: S. If the method is overloaded, we select
    only overloads items that satisfy this requirement. If there are no matching
    overloads, an error is generated.
    r   rB  c              3  B   K   | ]}t          |t                     V  d S r]   )r{   rC   r  tvs     r`   	<genexpr>z!check_self_arg.<locals>.<genexpr>R  s@       ! !46Jr;///! ! ! ! ! !rb   T)always_covariantignore_pos_arg_namesr   )r   r@   r   rF   r   r   r   r   no_formal_selfr{   r5   r   rR  r   r   r2   r(   r   r*   anyr-   r9   rB   NotImplementedErrorincompatible_self_argumentr   r8   )r_  rk  r   rU   rc   r^   r   	new_itemsp_dispatched_arg_typer   selfargself_callables               r`   r   r     s   " NE I L&67JKK+,?@@  ~ 	!27H:M!M!MtT7333 OOO!$."344gx(( 	Z8Mx-X-X 	|4999gl9+,A7KK   	 & &!$."344
*Pz'</P/P 	&J >'2233 ! ! !:KG:T:T! ! !   "&
 
 
 	& T""""// 	&T""""!122 	&%%	& &&%uQx	
 	
 	
 
9~~|i   rb   )ru   r   r   r    Sequence[TypeVarLikeType] | Nonec          
     D   | j         }|r|}|j         d| }|j        j                            |          }|                    |          }	|	sk| j        r,|| j        j        v r| j        j        s| j        j        |         S |j	        s|j
        r(t          ||t          t          j                            S dS t          |	j        t"                    r*|	j        j        s|s|j                             |          rdS |j                            |	j        |j                   t          |	j        t*                    }
|
pt          |	j        t,                    }|j        ra|j        sZ|r|j                            |j                   t          |	j        t6                    r|                    t:          j                   |j        r;||j        v r2|                    t:          j         !                    |                     |	j"        rbt          |	j        t"                    rH|	j        j#        r<|                    t:          j$        !                    |	j        j%                             |j        r5|j        &                                stO          |||j        |j                   |j(        r/|j        s(|
s&|s$tS          | ||          }|rt          |||          S |	j         }|r't          |tT                    rT|	j        }t          |t"                    sJ t          |||j        +                    ||j        ||j                            S t          |	j        t*                    r|	j        j,        j-        }n0t          |	j        t"          t\          f          r|	j        j-        }nd}|sd}nt_          | |          }t          |	j        t"                    r|J ta          |j1                  }|	j        j         }te          |	j        j-        j3        j4                  }|r5|	j        j-        j1        r$|5                    |	j        j-        j1                   t          |tl                     p|	j"        }|rY|te          to          |                    z  r:|	j        j        rt:          j8        }nt:          j9        }|                    |           tu          |||	j        | d          }tw          ||          }|rete          | j         j3        j4                  }|r+| j         j1        r|5                    | j         j1                   ty          |d |D                       }|
r$t{          t*          |	j                  j>        j?        pKt          |	j        t\                    o|	j        j?        p%t          |	j        t"                    o|	j        j@        }ta          |          }d}t          |	j        t*                    r|	j        j>        jA        o|	j        jB         }n-t          |	j        t          t          f          r|	j        jA        }t          |t                    r;|r9|s7|F                                s#t          ||j1        d|j        ||j                  }t          ||||||          }|
r1tu          ||t{          t*          |	j                  j,        | |          }|}|j        st          ||          }t          |||          S t          |	j        t"                    r4|J                    ||j                   t          t          j                  S t          |	j        t6          t          t          t          f          r0|j        jN        O                    |	j        |j        |j                  S |
rwt          |	j        t*                    sJ |	j        j         rt          |||	j        j                   S |J                    ||j                   t          t          jP                  S t          |	j        t\                    sJ t          |	j        |R                    d                    }|	j        j?        rt          |          }t          |||          S )	a   Analyze access to an attribute on a class object.

    itype is the return type of the class object callable, original_type is the type
    of E in the expression E.var, original_vars are type variables of the class callable
    (for generic classes).
    r   NT)r   c                    h | ]	}|j         
S rt   )idrn  s     r`   	<setcomp>z1analyze_class_attribute_access.<locals>.<setcomp>  s    &B&B&Bru&B&B&Brb   F)r   r   r   )Tr   r   rV   r   get_class_attribute_hookr   r   r  r  r   meta_fallback_to_anyapply_class_attr_hookr1   r?   r   r{   r   r%   r>  r   rU   r   r   rP   rN   r^   r   r#   rk   r   CANNOT_ASSIGN_TO_TYPEslotsCLASS_VAR_CONFLICTS_SLOTSr   r   r   !CANNOT_ACCESS_FINAL_INSTANCE_ATTRrc   r   r   rP  #analyze_enum_class_attribute_accessr:   rG  r   r   r   r   rF   rI   setr   	type_varsr   r@   r-   GENERIC_CLASS_VAR_ACCESS!GENERIC_INSTANCE_VAR_CLASS_ACCESSr]  r   r   r   r   r   r   r   r   r   r   r4   rM  r   add_class_tvarsr  ri   r"   r   r$   r   r   r   r,   rf   r   )r   rc   rn   r   ru   r   r   r   r  r   is_decorated	is_methodenum_class_attribute_typerc  symnode
super_infoisuperr$  prohibit_selfdef_varsprohibit_genericmessage
erase_varsr   r   r}   rw   s                              r`   r   r   h  sI    :D -(($((H6=11(;;D88D>>D  	5):)@!@!@$- 5(.t44 	T4#< 	T(T79;Q3R3RSSSt 	49c""	%  !!$''	 tF49bj111di33L?
49h ? ?I	| <B. < 	5F((444di** 	<GG$:;;; z Iddj((
 :AA$GGHHH } [DIs33 [	8J [
 BII$).YYZZZ 
| ;BF4466 ;4rvrz:::| NR\ N\ NY N$GtUW$X$X!$ 	N(T3LMMM	A d/a%% 	iGgs+++++(D"&88BL'SUS]^^  
 di++ 	*.)-*<JJ	C)>#?@@ 	JJJ  	BFF.ujAAFdi%% 	D%%%)",77K !%	 55M49>.899H 7!9 7TY^5666#-k8#D#DDU !Hs3DQ3G3G/H/H$H !9( Q.GGG.PG   *1b$)UTRRRA'622A
   D !:;;
  9UZ%9 9NN5:#7888"1&B&Bz&B&B&BCC Fd9di88=F )49&;<<SAS)$)S)) )	(	 	 Adi++ 	8"in<YTYEYAYOO	G->#?@@ 	8"i7Oq,''	Q	Q $	Q GGII		Q q",rz4PPA'+
 
 
  	*2tIty115u~  A | 	;.vr::F$Rv666	DIs	#	# /
dBJ///y-...$)h	8_MNN av";;DIrzSUS_``` 4$)Y/////9> 	1(T49>BBB!!$
3339/000$)%:;;;;;DIr}}5H'I'IJJ 9 	& %%C$Rs333rb   r  )Callable[[AttributeContext], Type] | Noner}   c           	         |r= |t          t          | j                  || j        | j        | j                            }|S r]   )r'   rF   rT   rP   rU   rV   )rn   r  r}   s      r`   r  r  2  sO      
 01162<UWU[ 
 

 Mrb   c                   |t           v rt          |j        | ||          S |                    d          r|                    dd          dk    rd S | j                            |          }|rT|j        rMt          |j                  }t          |t                    r$|j        j
        dk    r|j        r|j        d         S t          ||           }|                     |          S )N__r    rD  r   r   rC  )r   r   rT   
startswithreplacer   r   rF   r{   r5   r   rR  r6   ro   )r   rc   rn   r   properrZ  s         r`   r  r  >  s     ''''(8%rJJJt c2!6!6"!<!<t:>>$D "	 " ++ vx((	"$(888 9 ;q>!te444L===rb   r>   c           	        | dk    rt          |j        t                    rd|j        j                            ||j        j        d          \  }}|j        |z  }|r(|j        s!|j	        
                    ||j                   nt          t          j                  }t          |j                            d          |gt           t           gd d gt#                      |j                            d          |           S | dk    rYt          |j                            d          gt           gd gt#                      |j                            d          |           S t%          | |j        ||          S )	N__setitem__T)setitemr"  zbuiltins.strr   )r   r   r   r   r   rc   __delitem__)r{   rU   r   rV   r   visit_typeddict_index_exprindexreadonly_keysrN   r^   readonly_keys_mutatedr1   r?   implementation_artifactr2   rf   r   r7   rz   r   )rc   rw   rn   ru   	item_type	key_namesassigned_readonly_keyss          r`   r   r   W  s    }bj),, 	C $&6#6#Q#QRZ%t $R $ $ Iy &)%6%B"% Yb.@ Y,,-CRZ,XXX  	 ABBIv((88)D(TlZZV&&':;;
 
 
 	
 
		v((889ifZZV&&':;;
 
 
 	
 "$b-HHHrb   r;   r  Instance | Nonec                &   t          | t                    rng }j        st          |           } r6| j        s/|rt          | j                  } nt          | j        d          } t          |           } t          |            | 
                    t          |          t          | j                  z             S t          | t                    r#t          fd| j        D                       S t          |           } | S )a  Instantiate type variables during analyze_class_attribute_access,
    e.g T and Q in the following:

    class A(Generic[T]):
        @classmethod
        def foo(cls: Type[Q]) -> Tuple[T, Q]: ...

    class B(A[str]): pass
    B.foo()

    Args:
        t: Declared type of the method (or property)
        isuper: Current instance mapped to the superclass where method was defined, this
            is usually done by map_instance_to_supertype()
        is_classmethod: True if this method is decorated with @classmethod
        original_vars: Type variables of the class callable on which the method was accessed
        is_trivial_self: if True, we can use fast path for bind_self().
    Returns:
        Expanded method type with added type variables (when needed).
    NTr   )r   c                ^    g | ])}t          t          t          |                     *S ))r   )r   r2   r  )r  r   r   r  rn   r   s     r`   r  z#add_class_tvars.<locals>.<listcomp>  sO       
 	  #D&."Tabbb   rb   )r{   r2   rO   r   is_boundr   rI   r)   r   r+   ro   listr   r8   r   )rc  r  r   rn   r   r   tvarss    ````  r`   r  r  ~  sK   T !\"" 
!.!:' 	3/22A 	D!* 	D D"1bl33adCCC'622AQetAK7H7H)HIII	Az	"	" 	
      
 G  
 
 	
 #Av..Hrb   r   Decorator | FuncBasec                   t          | t                    rt          || j        ||          S t	          | |j                            d                    }t          | t          t          f          r| j	        rt          ||j                  S t          ||j        | j        |j        ||j                  }t!          ||j        | j                  S )zAnalyzes the type behind method access.

    The function itself can possibly be decorated.
    See: https://github.com/python/mypy/issues/10409
    r   )rT   r   )r{   r   r   r   r,   rV   rf   r   r   r   r   rI   r   r   rU   r^   r)   )r   r   rc   rn   rw   s        r`   r   r     s     $	"" 645"555
bf//0CDD
E
EC$"3455 1$:N 1c2<000
blDM2:tRV
T
TCST]SSSSrb   F)rM  r   c                   t          | t                    r5fd| j        D             }t          t          t          |                    S t          | t
                    sJ | j        s| S | j        d         t          t          fv r| S | 
                    | j        dd         | j        dd         | j        dd         d          S )zReturn a copy of `method`, with the type of its first parameter (usually
    self or cls) bound to original_type.

    This is a faster version of mypy.typeops.bind_self() that can be used for methods
    with trivial self/cls annotations.
    c                0    g | ]}t          |          S rt   )r   )r  crT   s     r`   r  z"bind_self_fast.<locals>.<listcomp>  s#    HHHa=11HHHrb   r   r   NT)r   r   r   r  )r{   r8   r   r   r  r2   r   r   r   r   ro   r   )r   rT   r   s    ` r`   r   r     s     &*%% *HHHH6<HHHAz%(()))fl+++++ x333"122&"122&"122&	     rb   	op_methodrf   Callable[[str], Instance]c                <   t          |           } t          | t                    r|                                 } t          | t                    rdS t          | t
                    r.t          fd|                                 D                       S t          | t                    r3| 	                                r| j
        j                                      S t          | t                    r| j        }t          |t                    r|                                }t          |t
                    r.t          fd|                                D                       S t!          |          S t#          |           j                                      S )a  Does type have operator with the given name?

    Note: this follows the rules for operator access, in particular:
    * __getattr__ is not considered
    * for class objects we only look in metaclass
    * instance level attributes (i.e. extra_attrs) are not considered
    Tc              3  :   K   | ]}t          |          V  d S r]   )has_operatorr  xrf   r  s     r`   rp  zhas_operator.<locals>.<genexpr>  s/      XXa<9j99XXXXXXrb   c              3  :   K   | ]}t          |          V  d S r]   )meta_has_operatorr  s     r`   rp  zhas_operator.<locals>.<genexpr>  s0      bbq(IzBBbbbbbbrb   )rF   r{   rA   values_or_boundr1   rE   allr   r4   r   r   r   r'  r@   r   rC   r  instance_fallback)rw   r  rf   r   s    `` r`   r  r    s    #

C#'' $!!###w t#y!! YXXXXX3CUCUCWCWXXXXXX#|$$ @):): @| 44Y???#x   	> xdK(( 	*''))DdI&& 	cbbbbbDL_L_LaLabbbbbb y*===S*--2FFyQQQrb   c                    t          | t                    r| S t          | t                    rt          |           S t          | t          t
          f          r| j        S  |d          S )Nr   )r{   r5   r<   r0   r6   r>   r   )rw   rf   s     r`   r  r    si    #x   
#y!! #c"""#]344 |:'(((rb   r   c                    t          |           } t          | t                    rdS t          | |          } | j        j        p
 |d          }|j                            |          S )NTr   )rF   r{   r1   r  r   r   r'  )r   r  rf   metas       r`   r  r    sd    4  D$   tT:..D9#Bzz/'B'BD9((333rb   )"rc   rd   rw   r=   rU   r   rP   rQ   rR   rQ   rS   rQ   rT   r=   rV   r
   ru   rx   rv   rQ   rI   rW   rJ   rX   rK   rQ   rL   rQ   rM   rY   rN   rQ   rZ   r=   r]   )
rc   rd   rw   r=   rn   rH   ru   rx   rZ   r=   )
rc   rd   rw   r=   rn   rH   ru   rx   rZ   rQ   )rT   r=   rw   r=   rc   rd   rn   rH   ru   rx   rZ   r=   )
rc   rd   rw   r5   rn   rH   ru   rx   rZ   r=   )r   r   rn   rH   rZ   r[   )rc   rd   rw   r4   rn   rH   rZ   r=   )
rc   rd   rw   r@   rn   rH   ru   rx   rZ   r=   )rc   rd   rw   rE   rn   rH   rZ   r=   )rc   rd   rw   r7   rn   rH   rZ   r=   )
rc   rd   r   r5   r   r#   rn   rH   rZ   r=   )
rc   rd   r   r#   r^   r   r  r   rZ   r[   )r  r=   rn   rH   rZ   r=   )r  r5   rn   rH   rZ   r=   )r   r%   rZ   rQ   )rc   rd   r   r%   r   r5   rn   rH   r   rQ   r   rQ   rZ   r=   )rw   r=   r   r%   r   r5   rT  r5   rn   rH   rZ   r=   )r_  r4   r   r%   r   r5   rc   rd   rn   rH   r   rQ   rZ   r=   )F)rc  r=   rn   rH   r   r%   r   r5   r   rQ   rZ   r=   )r_  r4   rk  r=   r   rQ   rU   r   rc   rd   r^   r   rZ   r4   )r   r5   rc   rd   rn   rH   r   r5   ru   rx   r   r{  rZ   rW   )rn   rH   r  r  r}   r=   rZ   rW   )r   r5   rc   rd   rn   rH   rZ   rW   )
rc   rd   rw   r>   rn   rH   ru   rx   rZ   r=   )NF)rc  r;   r  r  r   rQ   rn   rH   r   r{  r   rQ   rZ   r=   )
r   r  r   r5   rc   rd   rn   rH   rZ   r=   )r   r  rT   rW   rZ   r  )rw   r=   r  rd   rf   r  rZ   rQ   )rw   r;   rf   r  rZ   r5   )r   r=   r  rd   rf   r  rZ   rQ   )trs   
__future__r   collections.abcr   typingr   r   r   mypyr   r	   mypy.checker_sharedr
   mypy.erasetyper   mypy.expandtyper   r   r   mypy.maptyper   	mypy.meetr   mypy.messagesr   
mypy.nodesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   mypy.pluginr'   mypy.subtypesr(   mypy.typeopsr)   r*   r+   r,   r-   r.   r/   r0   
mypy.typesr1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rH   r   rz   r   r   r   r   r   r   r   r   r   r   r  r(  r@  r   rJ  rN  r]  r   r   r  r  r   r  r   r  r   r  r  r  rt   rb   r`   <module>r     s   ' ' " " " " " " $ $ $ $ $ $ * * * * * * * * * * ( ( ( ( ( ( ( ( 4 4 4 4 4 4 ) ) ) ) ) )         
 3 2 2 2 2 2 * * * * * * ( ( ( ( ( (                                             . ) ( ( ( ( ( $ $ $ $ $ $	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                                               4P P P P P P P Pz &*$!.2 $!#I I I I I IZ OS'E 'E 'E 'E 'EV OS1 1 1 1 1, &*) ) ) ) )(D> D> D> D>NC C C C!6 !6 !6 !6H5I 5I 5I 5Ip* * * *R R R RA A A AHF F F Fj- j- j- j-ZB1 B1 B1 B1J	 	 	 	$ !^ ^ ^ ^ ^ ^B   ,! ,! ,! ,!` MR) ) ) ) )XL! L! L! L!j &*6:G4 G4 G4 G4 G4 G4T	 	 	 	> > > >2$I $I $I $IX 7;!C C C C CLT T T T" GC|$$$    2 R  R  R  RF) ) ) )4 4 4 4 4 4rb   