ó
    ¬æg˜y ã                  óL  • S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKJrJr  S SKJr  S SKJrJrJr  SSKJrJrJr  SSKJrJrJrJrJrJr  SS	KJ r J!r!J"r"J#r#  \$RJ                  r&S
r'Sr(Sr)\
RT                  " 0 5      r+\$" 5       r,\RZ                  " \R\                  \R^                  5      r0 " S S\Rb                  5      r2\2Rf                  r3  " S S\45      r5\3SSSSSSSSSSSSSS4S jr6  SR         SSS jjr7 ST         SUS jjr8SVS jr9 " S S\5      r:S r;S r<  SWS jr=S r>  SXS jr?S r@S rAS  rBS! rC " S" S#5      rDS$ rES% rF SYS& jrG                        SZS' jrH\HrI S( rJS[S) jrK          S\S* jrLS]S+ jrMS, rNS^S- jrOS. rPSTS/ jrQS_S0 jrRS`S1 jrSS2 rTS3 rUS4 r/S5 rV  SaS6 jrWSbS7 jrX          ScS9 jrYSdS: jrZ          ScS; jr[      SeS< jr\                          SfS= jr]SgS> jr^ " S? S@5      r_\_RÀ                   V s/ s H  n \_" U \3SSSSSU SA:g  SS\^" U 5      SB9PM     sn ra\M" \Q" \S" \_\aSC9\a Vs/ s H  oRÄ                  SD:w  d  M  UPM     snSC9\a Vs/ s H)  oRÆ                  (       d  M  URÄ                  SD:w  d  M'  UPM+     snSC9r_ " SE SF5      rd\Q" \S" \d5      5      rd " SG SH5      re\eRÀ                   V s/ s H  n \_" U \3SSSSSSSSSI9
PM     sn rf\M" \Q" \S" \e\fSC9\fSC9\fSC9re " SJ S85      rgSK V s/ s H  n \_" U \3SSSSSSSSSI9
PM     sn rf\M" \Q" \S" \g\fSC9\fSC9\fSC9rg\$4S4SL jrh\H" SSSM9 " SN SO5      5       riSP rjSQ r-gs  sn f s  snf s  snf s  sn f s  sn f )hé    )ÚannotationsN)ÚCallableÚMapping)Úcached_property)ÚAnyÚ
NamedTupleÚTypeVaré   )Ú_compatÚ_configÚsetters)ÚPY_3_10_PLUSÚPY_3_11_PLUSÚPY_3_13_PLUSÚ_AnnotationExtractorÚ_get_annotationsÚget_generic_base)ÚDefaultAlreadySetErrorÚFrozenInstanceErrorÚNotAnAttrsClassErrorÚUnannotatedAttributeErrorz__attr_factory_%s)ztyping.ClassVarz
t.ClassVarÚClassVarztyping_extensions.ClassVarÚ_attrs_cached_hashc                  óF   • \ rS rSrSr\R                  " 5       rS rS r	Sr
g)Ú_Nothingé=   a.  
Sentinel to indicate the lack of a value when `None` is ambiguous.

If extending attrs, you can use ``typing.Literal[NOTHING]`` to show
that a value may be ``NOTHING``.

.. versionchanged:: 21.1.0 ``bool(NOTHING)`` is now False.
.. versionchanged:: 22.2.0 ``NOTHING`` is now an ``enum.Enum`` variant.
c                ó   • g)NÚNOTHING© ©Úselfs    Ú,/usr/lib/python3/dist-packages/attr/_make.pyÚ__repr__Ú_Nothing.__repr__J   s   € Øó    c                ó   • g)NFr   r    s    r"   Ú__bool__Ú_Nothing.__bool__M   s   € Ør%   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚenumÚautor   r#   r'   Ú__static_attributes__r   r%   r"   r   r   =   s   † ñð �iŠi‹k€Gòõr%   r   c                  ó2   • \ rS rSrSr\" S5      S4S jrSrg)Ú_CacheHashWrapperéY   ac  
An integer subclass that pickles / copies as None

This is used for non-slots classes with ``cache_hash=True``, to avoid
serializing a potentially (even likely) invalid hash value. Since `None`
is the default value for uncalculated hashes, whenever this is copied,
the copy's value for the hash should automatically reset.

See GH #613 for more details.
Nr   c                ó   • X4$ ©Nr   )r!   Ú_none_constructorÚ_argss      r"   Ú
__reduce__Ú_CacheHashWrapper.__reduce__e   s   € Ø Ð'Ð'r%   )r)   r*   r+   r,   r-   Útyper8   r0   r   r%   r"   r2   r2   Y   s   † ñ	ñ ,0°«:¸R÷ (r%   r2   TFc                óZ  • [        X;US5      u  p¿nnUb  USLa  USLa  Sn[        U5      eU	b>  U [        La  Sn[        U5      e[	        U	5      (       d  Sn[        U5      e[        U	5      n Uc  0 n[        U[        [        45      (       a  [        R                  " U6 nU(       a#  [        U[        [        45      (       a  [        U6 nU(       a#  [        U[        [        45      (       a  [        U6 n[        S0 SU _SU_S	U_S
S_SU_SU_SU_SU_SU_SU
_SU_SU_SU_SU_SU_SU_6$ )aC  
Create a new field / attribute on a class.

Identical to `attrs.field`, except it's not keyword-only.

Consider using `attrs.field` in new code (``attr.ib`` will *never* go away,
though).

..  warning::

    Does **nothing** unless the class is also decorated with
    `attr.s` (or similar)!


.. versionadded:: 15.2.0 *convert*
.. versionadded:: 16.3.0 *metadata*
.. versionchanged:: 17.1.0 *validator* can be a ``list`` now.
.. versionchanged:: 17.1.0
   *hash* is `None` and therefore mirrors *eq* by default.
.. versionadded:: 17.3.0 *type*
.. deprecated:: 17.4.0 *convert*
.. versionadded:: 17.4.0
   *converter* as a replacement for the deprecated *convert* to achieve
   consistency with other noun-based arguments.
.. versionadded:: 18.1.0
   ``factory=f`` is syntactic sugar for ``default=attr.Factory(f)``.
.. versionadded:: 18.2.0 *kw_only*
.. versionchanged:: 19.2.0 *convert* keyword argument removed.
.. versionchanged:: 19.2.0 *repr* also accepts a custom callable.
.. deprecated:: 19.2.0 *cmp* Removal on or after 2021-06-01.
.. versionadded:: 19.2.0 *eq* and *order*
.. versionadded:: 20.1.0 *on_setattr*
.. versionchanged:: 20.3.0 *kw_only* backported to Python 2
.. versionchanged:: 21.1.0
   *eq*, *order*, and *cmp* also accept a custom callable
.. versionchanged:: 21.1.0 *cmp* undeprecated
.. versionadded:: 22.2.0 *alias*
TNFú6Invalid value for hash.  Must be True, False, or None.z=The `default` and `factory` arguments are mutually exclusive.z*The `factory` argument must be a callable.ÚdefaultÚ	validatorÚreprÚcmpÚhashÚinitÚ	converterÚmetadatar:   Úkw_onlyÚeqÚeq_keyÚorderÚ	order_keyÚ
on_setattrÚaliasr   )Ú_determine_attrib_eq_orderÚ	TypeErrorr   Ú
ValueErrorÚcallableÚFactoryÚ
isinstanceÚlistÚtupler   ÚpipeÚand_Ú_CountingAttr)r=   r>   r?   r@   rA   rB   rD   r:   rC   ÚfactoryrE   rF   rH   rJ   rK   rG   rI   Úmsgs                     r"   ÚattribrY   i   s—  € ôn $>Ø�˜ó$Ñ €B��yð Ñ˜D¨Ò,°¸UÒ1BØFˆÜ˜‹nÐàÑØœ'Ò!àOð ô ˜S“/Ð!Ü˜× Ñ Ø>ˆCÜ˜S“/Ð!Ü˜'Ó"ˆàÑØˆô �*œt¤U˜m×,Ñ,Ü—\’\ :Ð.ˆ
æ”Z 	¬D´%¨=×9Ñ9Ü˜)Ð$ˆ	æ”Z 	¬D´%¨=×9Ñ9Ü˜)Ð$ˆ	äò Ùðáðñ ðñ ð	ñ
 ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ  ð!ð r%   c                ó4   • [        XS5      n[        XAU5        g)zO
Evaluate the script with the given global (globs) and local (locs)
variables.
ÚexecN)ÚcompileÚeval)ÚscriptÚglobsÚlocsÚfilenameÚbytecodes        r"   Ú_compile_and_evalrc   Ô   s   € ô �v¨Ó0€HÜˆ˜$Õr%   c                óà   • Uc  0 OUnSnUn [        U 5      SU R                  S5      U4n[        R                  R	                  X5      nX‡:X  a  OUSS  SU S3nUS-  nMU  [        XXA5        U$ )zH
Cache the script with _linecache_, compile it and return the _locals_.
Nr
   TéÿÿÿÿÚ-Ú>)ÚlenÚ
splitlinesÚ	linecacheÚcacheÚ
setdefaultrc   )	r^   ra   r_   Úlocalsr`   ÚcountÚbase_filenameÚlinecache_tupleÚold_vals	            r"   Ú_linecache_and_compilerr   â   s˜   € ð ‘‰2 V€Dð €EØ€MØ
ä�‹KØØ×Ñ˜dÓ#Øð	
ˆô —/‘/×,Ñ,¨XÓGˆØÓ%Øà# C RÐ(Ð)¨¨5¨'°Ð3ˆØ�‰
ˆñ ô �f TÔ4à€Kr%   c                ó‚   • U  S3n0 n[        U5       H  u  pEU4S jn[        U5      X5'   M     [        U[        4U5      $ )zÑ
Create a tuple subclass to hold `Attribute`s for an `attrs` class.

The subclass is a bare tuple with properties for names.

class MyClassAttributes(tuple):
    __slots__ = ()
    x = property(itemgetter(0))
Ú
Attributesc                ó
   • X   $ r5   r   )r!   Úis     r"   ÚgetterÚ&_make_attr_tuple_class.<locals>.getter  s	   € Ø‘7ˆNr%   )Ú	enumerateÚpropertyr:   rS   )Úcls_nameÚ
attr_namesÚattr_class_nameÚbodyrv   Ú	attr_namerw   s          r"   Ú_make_attr_tuple_classr€     sO   € ð "˜
 *Ð-€OØ€DÜ! *Ö-‰ˆàô 	ô # 6Ó*ˆ‹ñ .ô �¤% ¨4Ó0Ð0r%   c                  ó4   • \ rS rSr% S\S'   S\S'   S\S'   Srg	)
Ú_Attributesi  r:   Úattrsúlist[Attribute]Ú
base_attrsúdict[str, type]Úbase_attrs_mapr   N)r)   r*   r+   r,   Ú__annotations__r0   r   r%   r"   r‚   r‚     s   ‡ ØƒKØÓØ#Ö#r%   r‚   c                ó¤   • [        U 5      n U R                  S5      (       a  U R                  S5      (       a  U SS n U R                  [        5      $ )zÝ
Check whether *annot* is a typing.ClassVar.

The string comparison hack is used to avoid evaluating all string
annotations which would put attrs-based classes at a performance
disadvantage compared to plain old classes.
)Ú'Ú"r
   re   )ÚstrÚ
startswithÚendswithÚ_CLASSVAR_PREFIXES)Úannots    r"   Ú_is_class_varr‘   "  sK   € ô �‹J€Eð ×Ñ˜
×#Ñ#¨¯©°z×(BÑ(BØ�a˜�ˆà×ÑÔ.Ó/Ð/r%   c                ó   • XR                   ;   $ )zJ
Check whether *cls* defines *attrib_name* (and doesn't just inherit it).
)Ú__dict__)ÚclsÚattrib_names     r"   Ú_has_own_attributer–   3  s   € ð Ÿ,™,Ñ&Ð&r%   c                óÒ  • / n0 n[        U R                  SS 5       Hh  n[        US/ 5       HT  nUR                  (       d  UR                  U;   a  M&  UR                  SS9nUR                  U5        XCUR                  '   MV     Mj     / n[        5       n[        U5       HB  nUR                  U;   a  M  UR                  SU5        UR                  UR                  5        MD     Xc4$ )zI
Collect attr.ibs from base classes of *cls*, except *taken_attr_names*.
r
   re   Ú__attrs_attrs__T©Ú	inheritedr   )
ÚreversedÚ__mro__Úgetattrrš   ÚnameÚevolveÚappendÚsetÚinsertÚadd)r”   Útaken_attr_namesr…   Úbase_attr_mapÚbase_clsÚaÚfilteredÚseens           r"   Ú_collect_base_attrsrª   :  sÒ   € ð €JØ€Mô ˜SŸ[™[¨¨2Ð.Ö/ˆÜ˜Ð#4°bÖ9ˆAØ�{�{˜aŸf™fÐ(8Ó8Ùà—‘ 4�Ð(ˆAØ×Ñ˜aÔ Ø$,˜!Ÿ&™&Ó!ó :ñ 0ð €HÜ‹5€DÜ�jÖ!ˆØ�6‰6�T‹>ÙØ�‰˜˜1ÔØ�‰�—‘Öñ	 "ð Ð"Ð"r%   c                ó  • / n0 nU R                   SS  Hr  n[        US/ 5       H^  nUR                  U;   a  M  UR                  SS9nUR	                  UR                  5        UR                  U5        XCUR                  '   M`     Mt     X#4$ )a  
Collect attr.ibs from base classes of *cls*, except *taken_attr_names*.

N.B. *taken_attr_names* will be mutated.

Adhere to the old incorrect behavior.

Notably it collects from the front and considers inherited attributes which
leads to the buggy behavior reported in #428.
r
   re   r˜   Tr™   )rœ   r�   rž   rŸ   r£   r    )r”   r¤   r…   r¥   r¦   r§   s         r"   Ú_collect_base_attrs_brokenr¬   [  s�   € ð €JØ€Mð —K‘K  "Ó%ˆÜ˜Ð#4°bÖ9ˆAØ�v‰vÐ)Ó)Ùà—‘ 4�Ð(ˆAØ× Ñ  §¡Ô(Ø×Ñ˜aÔ Ø$,˜!Ÿ&™&Ó!ó :ñ &ð Ð$Ð$r%   c                óº  ^• U R                   m[        U 5      nUb  [        UR                  5       5      nGO$USL aÿ  TR                  5        VV	s1 s H  u  p‰U	R                  [
        L d  M  UiM     n
nn	/ n[        5       nUR                  5        Hn  u  pÍ[        U5      (       a  M  UR                  U5        TR                  U[        5      nUR                  [
        La  [        U5      nUR                  XÎ45        Mp     X«-
  nU(       a,  [        SSR                  [        UU4S jS95      -   S-   5      eO [        S TR                  5        5       S S9n[         R"                  nU VVs/ s H  u  nnU" UUUR                  U5      5      PM!     nnnU(       a*  [%        U U Vs1 s H  oîR&                  iM     sn5      u  nnO)[)        U U Vs1 s H  oîR&                  iM     sn5      u  nnU(       a<  U Vs/ s H  oîR+                  SS	9PM     nnU Vs/ s H  oîR+                  SS	9PM     nnUU-   nUb  [-        U" U U5      5      nS
nS U 5        HJ  nUSL a$  UR.                  [        L a  SU< 3n[1        U5      eUS
L d  M3  UR.                  [        Ld  MH  SnML     U HE  nUR2                  (       a  M  [4        R7                  U5      " S[9        UR&                  5      5        MG     U Vs/ s H  oîR&                  PM     nn[;        U R<                  U5      n[?        U" U5      UU5      $ s  sn	nf s  snnf s  snf s  snf s  snf s  snf s  snf )a  
Transform all `_CountingAttr`s on a class into `Attribute`s.

If *these* is passed, use that and don't look for them on the class.

If *collect_by_mro* is True, collect them in the correct MRO order,
otherwise use the old -- incorrect -- order.  See #428.

Return an `_Attributes`.
Tz1The following `attr.ib`s lack a type annotation: ú, c                ó:   >• TR                  U 5      R                  $ r5   )ÚgetÚcounter)ÚnÚcds    €r"   Ú<lambda>Ú"_transform_attrs.<locals>.<lambda>   s   ø€ °b·f±f¸Q³i×6GÒ6Gr%   )ÚkeyÚ.c              3  óV   #   • U  H  u  pUR                   [        L d  M  X4v •  M!     g 7fr5   )Ú	__class__rV   )Ú.0rž   Úattrs      r"   Ú	<genexpr>Ú#_transform_attrs.<locals>.<genexpr>¦  s)   é € ð â",‘J�DØ—>‘>¤]Ð2ó �•Ú",ùs   ‚)Ÿ
)c                ó    • U S   R                   $ ©Nr
   )r±   )Úes    r"   r´   rµ   «  s   € ˜!˜A™$Ÿ,š,r%   )rE   Fc              3  óh   #   • U  H(  oR                   S Ld  M  UR                  S L d  M$  Uv •  M*     g7f)FN)rB   rE   ©rº   r§   s     r"   r¼   r½   Ë  s(   é € ÐMš�A§&¡&°Ð"5‹a¸!¿)¹)ÀuÐ:L�a‰ašùs   ‚2˜2©	2zlNo mandatory attributes allowed after an attribute with a default value or factory.  Attribute in question: rK   ) r“   r   rR   Úitemsr¹   rV   r¡   r‘   r£   r°   r   rY   r    r   ÚjoinÚsortedÚ	AttributeÚfrom_counting_attrrª   rž   r¬   rŸ   rS   r=   rN   rK   Ú_OBJ_SETATTRÚ__get__Ú_default_init_alias_forr€   r)   r‚   )r”   ÚtheseÚauto_attribsrE   Úcollect_by_mroÚfield_transformerÚannsÚca_listrž   r»   Úca_namesÚannot_namesr   r:   r§   ÚunannotatedÚfcaÚcaÚ	own_attrsr…   r¥   rƒ   Úhad_defaultrX   r|   Ú
AttrsClassr³   s                             @r"   Ú_transform_attrsrÙ   w  s2  ø€ ð 
�‰€BÜ˜CÓ €DàÑÜ�u—{‘{“}Ó%ŠØ	˜Ò	ð !Ÿh™hœjô
â(‘
�Ø�~‰~¤Ð.÷ Ù(ð 	ñ 
ð
 ˆÜ“eˆØ#Ÿz™zž|‰OˆIÜ˜T×"Ñ"ÙØ�O‰O˜IÔ&Ø—‘�y¤'Ó*ˆAà�{‰{¤-Ò/Ü˜1“I�Ø�N‰N˜I˜>Ö*ñ  ,ð Ñ,ˆÞÜ+ØCØ—)‘)Ü˜;Ô,GÑHóñð ñ	óð ð ô ñà"$§(¡(¤*óñ
 'ñ
ˆô ×
&Ñ
&€CáELôÚEL±M°I¸r‰ˆI�r˜4Ÿ8™8 IÓ.Ö/ÁWð ñ ö Ü$7Ø¡)Ó,¢)˜Q—&”&¡)Ñ,ó%
Ñ!ˆ
‘Mô %?Ø¡)Ó,¢)˜Q—&”&¡)Ñ,ó%
Ñ!ˆ
�Mö Ù5>Ó?²Y°—X‘X d�XÓ+±Yˆ	Ð?Ù6@ÓA²j°—h‘h t�hÓ,±jˆ
ÐAà˜Ñ"€EàÑ$ÜÑ'¨¨UÓ3Ó4ˆð €KÙM™ÖMˆØ˜$Ò 1§9¡9´Ò#7ð Að  BCñ  AFð  GˆCÜ˜S“/Ð!à˜%Ô A§I¡I´WÔ$<ØŠKñ Nó ˆØ�w�w‰wä× Ñ  Ô# GÔ-DÀQÇVÁVÓ-LÖMñ ñ #(Ó(¢%˜Q—&”&¡%€JÐ(Ü'¨¯©°jÓA€Jä‘z %Ó(¨*°mÓDÐDùóm
ùóJùò -ùò -ùò @ùÚAùò> )s0   ÁL8Á,L8Å0&L>Æ*M
ÇM	
Ç>MÈMË8Mc                óþ   • / SQnUb  UR                  S5        OUR                  / SQ5        UR                  SS/5        [        US5      nU [        R                  US.n[        SR                  U5      XES	U0S
9S   $ )N)	zdef wrapper(_cls):z    __class__ = _clsz‘    def __getattr__(self, item, cached_properties=cached_properties, original_getattr=original_getattr, _cached_setattr_get=_cached_setattr_get):z+         func = cached_properties.get(item)z         if func is not None:z!              result = func(self)z1              _setter = _cached_setattr_get(self)z#              _setter(item, result)z              return resultz,         return original_getattr(self, item))z         try:z2             return super().__getattribute__(item)z         except AttributeError:z4             if not hasattr(super(), '__getattr__'):z                 raisez-             return super().__getattr__(item)zY         original_error = f"'{self.__class__.__name__}' object has no attribute '{item}'"z-         raise AttributeError(original_error)z    return __getattr__z__getattr__ = wrapper(_cls)r�   )Úcached_propertiesÚ_cached_setattr_getÚoriginal_getattrÚ
Ú_cls)rm   Ú__getattr__)r    ÚextendÚ_generate_unique_filenamerÈ   rÉ   rr   rÄ   )rÛ   rÝ   r”   ÚlinesÚunique_filenameÚglobs         r"   Ú_make_cached_property_getattrræ   ã  s�   € ò€Eð Ñ#Ø�‰Ø:õ	
ð 	�‰ò	ô	
ð 
‡L�Là$Ø)ð	
ôô 0°°YÓ?€Oð /Ü+×3Ñ3Ø,ñ€Dô "Ø�	‰	�%Ó˜/¸À¸ñàñð r%   c                ór   • [        U [        5      (       a  US;   a  [        R                  XU5        g[        e)z,
Attached to frozen classes as __setattr__.
)Ú	__cause__Ú__context__Ú__traceback__Ú__suppress_context__Ú	__notes__N)rQ   ÚBaseExceptionÚ__setattr__r   ©r!   rž   Úvalues      r"   Ú_frozen_setattrsrñ     s8   € ô �$œ×&Ñ&¨4ð 4ó ,ô 	×!Ñ! $¨eÔ4Øä
Ðr%   c                óp   • [        U [        5      (       a  US;   a  [        R                  X5        g[        e)z,
Attached to frozen classes as __delattr__.
)rì   N)rQ   rí   Ú__delattr__r   )r!   rž   s     r"   Ú_frozen_delattrsrô   (  s/   € ô �$œ×&Ñ&¨4°>Ó+AÜ×!Ñ! $Ô-Øä
Ðr%   c                 ó,  •  U u  nUR                  n[	        U5      nU HB  nUR
                  (       d  M  UR                  nUR                  nX�;  d  M5  [        X'5      X'   MD     U" S0 UD6$ ! [          a    S[        U 5       S3n[        U5      Sef = f)a³  
Create a new instance, based on the first positional argument with
*changes* applied.

.. tip::

   On Python 3.13 and later, you can also use `copy.replace` instead.

Args:

    inst:
        Instance of a class with *attrs* attributes. *inst* must be passed
        as a positional argument.

    changes:
        Keyword changes in the new copy.

Returns:
    A copy of inst with *changes* incorporated.

Raises:
    TypeError:
        If *attr_name* couldn't be found in the class ``__init__``.

    attrs.exceptions.NotAnAttrsClassError:
        If *cls* is not an *attrs* class.

.. versionadded:: 17.1.0
.. deprecated:: 23.1.0
   It is now deprecated to pass the instance using the keyword argument
   *inst*. It will raise a warning until at least April 2024, after which
   it will become an error. Always pass the instance as a positional
   argument.
.. versionchanged:: 24.1.0
   *inst* can't be passed as a keyword argument anymore.
z*evolve() takes 1 positional argument, but z were givenNr   )	rN   rh   rM   r¹   ÚfieldsrB   rž   rK   r�   )	ÚargsÚchangesÚinstrX   r”   rƒ   r§   r   Ú	init_names	            r"   rŸ   rŸ   3  sž   € ðJ'Ø‰ˆð �.‰.€CÜ�3‹K€EÛˆØ�v�vÙØ—F‘Fˆ	Ø—G‘Gˆ	ØÕ#Ü!(¨Ó!9ˆGÓñ ñ ‰>�‰>Ðøô! ó 'à8¼¸T»¸À;ÐOð 	ô ˜‹n $Ð&ð	'ús   ‚A- Á-&Bc                  ó¨   • \ rS rSrSrSr  SS jrS rSS jrS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rSS jrSS jrSrg)Ú_ClassBuilderim  z 
Iteratively build *one* class.
)Ú_add_method_dundersÚ_attr_namesÚ_attrsÚ_base_attr_mapÚ_base_namesÚ_cache_hashrß   Ú	_cls_dictÚ_delete_attribsÚ_frozenÚ_has_custom_setattrÚ_has_post_initÚ_has_pre_initÚ_is_excÚ_on_setattrÚ_pre_init_has_argsÚ_repr_addedÚ_script_snippetsÚ_slotsÚ_weakref_slotÚ_wrote_own_setattrc                ó  • [        UUUUUU5      u  nnnXl        U(       a  [        UR                  5      O0 U l        Xðl        U Vs1 s H  nUR                  iM     snU l        UU l        [        S U 5       5      U l
        X0l        X@l        XPl        X�l        [        [!        USS5      5      U l        SU l        U R"                  (       a?  UR&                  n[(        R*                  " U5      n[-        UR.                  5      S:„  U l        [        [!        USS5      5      U l        [        U5      (       + U l        X l        XÀl        XÐl        SU l        U R
                  U R                  S'   U(       a.  [<        U R                  S'   [>        U R                  S'   S	U l        O»U[@        [B        RD                  [B        RF                  4;   a’  S=nnU H3  nURH                  b  S	nURJ                  b  S	nU(       d  M*  U(       d  M3    O   U[@        :X  a  U(       d  U(       a6  U[B        RD                  :X  a  U(       a  U[B        RF                  :X  a  U(       d  S U l        U(       a-  U RM                  5       u  U R                  S
'   U R                  S'   / U l'        SU l(        [S        U R                  S5      (       a  [S        U R                  S5      (       d  U RT                  U l+        g U RX                  U l+        g s  snf )Nc              3  ó8   #   • U  H  oR                   v •  M     g 7fr5   ©rž   rÂ   s     r"   r¼   Ú)_ClassBuilder.__init__.<locals>.<genexpr>©  s   é € Ð 7²¨A§¦²ùs   ‚Ú__attrs_pre_init__Fr
   Ú__attrs_post_init__r˜   rî   ró   TÚ__getstate__Ú__setstate__r*   r+   )-rÙ   rß   Údictr“   r  rÿ   rž   r  r   rS   rþ   r  r  r  r  Úboolr�   r  r  r  ÚinspectÚ	signaturerh   Ú
parametersr  r  r	  r
  r  r  rñ   rô   Ú_DEFAULT_ON_SETATTRr   ÚvalidateÚconvertr>   rC   Ú_make_getstate_setstater  r  ÚhasattrÚ_add_method_dunders_saferý   Ú_add_method_dunders_unsafe)r!   r”   rË   ÚslotsÚfrozenÚweakref_slotÚgetstate_setstaterÌ   rE   Ú
cache_hashÚis_excrÍ   rJ   Úhas_custom_setattrrÎ   rƒ   r…   Úbase_mapr§   Úpre_init_funcÚpre_init_signatureÚhas_validatorÚhas_converters                          r"   Ú__init__Ú_ClassBuilder.__init__Š  s“  € ô" '7ØØØØØØó'
Ñ#ˆˆz˜8ð Œ	Þ/4œ˜cŸl™lÔ+¸"ˆŒØŒÙ,6Ó7ªJ q˜AŸFœF©JÑ7ˆÔØ&ˆÔÜ Ñ 7±Ó 7Ó7ˆÔØŒØŒØ)ÔØ%ÔÜ!¤'¨#Ð/CÀUÓ"KÓLˆÔØ"'ˆÔØ××ð  ×2Ñ2ˆMÜ!(×!2Ò!2°=Ó!AÐÜ&)Ð*<×*GÑ*GÓ&HÈ1Ñ&LˆDÔ#Ü"¤7¨3Ð0EÀuÓ#MÓNˆÔÜ#'¨£;œˆÔØŒØ%Ôà#5Ô Ø"'ˆÔà,0¯K©Kˆ�‰Ð(Ñ)æÜ,<ˆD�N‰N˜=Ñ)Ü,<ˆD�N‰N˜=Ñ)à&*ˆDÕ#ØÜÜ×ÑÜ�O‰Oð
ó 
ð
 -2Ð1ˆM˜MÛ�Ø—;‘;Ñ*Ø$(�MØ—;‘;Ñ*Ø$(�Mç �=§] ]Ùñ ð Ô"5Ó5Þ*®mà¤'×"2Ñ"2Ó2¾=Ø¤'§/¡/Ó1¾-ð
 $(�Ô æð ×,Ñ,Ó.ñØ—‘˜~Ñ.Ø—‘˜~Ñ.ð ð 	Ôð !ˆÔô �t—y‘y ,×/Ñ/´wØ�I‰I�~÷8
ñ 8
ð (,×'DÑ'DˆDÕ$à'+×'FÑ'FˆDÕ$ùòY 8s   ÁK<c                ó6   • SU R                   R                   S3$ )Nz<_ClassBuilder(cls=z)>)rß   r)   r    s    r"   r#   Ú_ClassBuilder.__repr__õ  s   € Ø$ T§Y¡Y×%7Ñ%7Ð$8¸Ð;Ð;r%   c                óP  • SR                  U R                   Vs/ s H  oS   PM	     sn5      n0 nU R                   H  u  pEnUR                  U5        M     [        U[	        U R
                  S5      U5      nU R                   H  u    pGU" U R                  U5        M     gs  snf )z-
Evaluate any registered snippets in one go.
rÞ   r   ÚmethodsN)rÄ   r  Úupdaterr   râ   rß   r  )r!   Úsnippetr^   r_   Ú_Úsnippet_globsr`   Úhooks           r"   Ú_eval_snippetsÚ_ClassBuilder._eval_snippetsø  s›   € ð —‘°d×6KÒ6KÓLÒ6K¨7 AœJÑ6KÑLÓMˆØˆØ#'×#8Ô#8ÑˆA˜aØ�L‰L˜Ö'ñ $9ô &ØÜ% d§i¡i°Ó;Øó
ˆð ×/Ô/‰JˆAˆqÙ�—‘ Ö&ò 0ùò Ms   šB#c                ó,  • U R                  5         U R                  SL a  U R                  5       nO1U R                  5       n[        (       a  [
        R                  " U5      n[        USS5      (       a   SUR                  ;  a  UR                  5         U$ )zk
Finalize class based on the accumulated configuration.

Builder cannot be used after calling this method.
TÚ__attrs_init_subclass__N)
r<  r  Ú_create_slots_classÚ_patch_original_classr   ÚabcÚupdate_abstractmethodsr�   r“   r?  )r!   r”   s     r"   Úbuild_classÚ_ClassBuilder.build_class
  s|   € ð 	×ÑÔØ�;‰;˜$ÒØ×*Ñ*Ó,‰Cà×,Ñ,Ó.ˆCßŠ|Ü×0Ò0°Ó5�ô
 �CÐ2°D×9Ñ9Ø)°·±Ó=à×'Ñ'Ô)àˆ
r%   c                ó(  • U R                   nU R                  nU R                  (       aa  U R                   HQ  nX2;  d  M
  [	        X[
        5      [
        Ld  M#  [        R                  " [        5         [        X5        SSS5        MS     U R                  R                  5        H  u  p4[        XU5        M     U R                  (       d5  [	        USS5      (       a#  SUl        U R                  (       d  [         Ul        U$ ! , (       d  f       MÛ  = f)z1
Apply accumulated methods and return the class.
NÚ__attrs_own_setattr__F)rß   r  r  rþ   r�   Ú	_SENTINELÚ
contextlibÚsuppressÚAttributeErrorÚdelattrr  rÃ   Úsetattrr  rG  r  rÈ   rî   )r!   r”   Ú
base_namesrž   rð   s        r"   rA  Ú#_ClassBuilder._patch_original_class"  sÔ   € ð �i‰iˆØ×%Ñ%ˆ
ð ××Ø×(Ô(�àÕ*Ü ¬9Ó5¼YÔFô
 $×,Ò,¬^Õ<Ü Ô*÷ =Ñ<ñ )ð  Ÿ>™>×/Ñ/Ö1‰KˆDÜ�C˜uÖ%ñ 2ð
 ×&×&¬7ØÐ(¨%÷,
ñ ,
ð ).ˆCÔ%à×+×+Ü".�”àˆ
÷# =Ö<ús   Á3DÄ
D	c                óŠ	  • U R                   R                  5        VVs0 s H)  u  pU/ [        U R                  5      QSPSP7;  d  M'  X_M+     nnnU R                  (       d_  SUS'   U R
                  (       dI  U R                  R                   H/  nUR                  R                  SS5      (       d  M&  [        US'     O   0 nSnU R                  R                  SS  HY  nUR                  R                  SS5      b  S	nUR                  [        US
/ 5       Vs0 s H  nU[        XG5      _M     sn5        M[     [        U R                  5      nU R                  n	U R                   (       a-  S[        U R                  S
S5      ;  a  SU	;  a  U(       d  U	S-  n	UR                  5        VV
s0 s H(  u  pz[#        U
[$        5      (       d  M  XzR&                  _M*     nnn
/ nU(       aÈ  [)        U R                  5      nUR                  5        H`  u  p~X—4-  n	X7	 UR+                  U5        [,        R.                  " U5      R0                  nU[,        R2                  R4                  Ld  M\  XýU'   Mb     UR                  S5      nUb  UR+                  U5        [7        UUU R                  5      US'   U	 Vs/ s H  owU;  d  M
  UPM     nnUR                  5        VVs0 s H  u  nnUU;   d  M  UU_M     nnnU Vs/ s H  owU;  d  M
  UPM     nnUR                  U5        U R8                  (       a  UR+                  [:        5        [        U5      US
'   U R                  R<                  US'   [?        U R                  5      " U R                  R@                  U R                  R                  U5      n[B        RD                  " UR                  RG                  5       U5       H«  n[#        U[H        [J        45      (       a  [        URL                  SS5      nO:[#        U[N        5      (       a  [        URP                  SS5      nO[        USS5      nU(       d  My  U H,  n URR                  U R                  L nU(       a	  UUl)        M,  M.     M­     U$ s  snnf s  snf s  sn
nf s  snf s  snnf s  snf ! [T         a     Md  f = f)z<
Build and return a new class with a `__slots__` attribute.
r“   Ú__weakref__FrG  rî   r
   re   NTÚ	__slots__r   )rQ  rà   r+   Ú__closure__)+r  rÃ   rS   rþ   r  r  rß   Ú	__bases__r“   r°   rÈ   rœ   r7  r�   r¡   r  r  rQ   r   Úfuncr   r    r  r  Úreturn_annotationÚ	ParameterÚemptyræ   r  Ú_HASH_CACHE_FIELDr+   r:   r)   Ú	itertoolsÚchainÚvaluesÚclassmethodÚstaticmethodÚ__func__rz   ÚfgetÚcell_contentsrN   )r!   ÚkÚvr³   r¦   Úexisting_slotsÚweakref_inheritedrž   rN  ÚnamesÚcached_proprÛ   Ú&additional_closure_functions_to_updateÚclass_annotationsrU  Ú
annotationrÝ   Ú
slot_namesÚslotÚslot_descriptorÚreused_slotsr”   ÚitemÚclosure_cellsÚcellÚmatchs                             r"   r@  Ú!_ClassBuilder._create_slots_classF  sg  € ð Ÿ™×,Ñ,Ô.ô
â.‘�ØÐMœ% × 0Ñ 0Ó1ÐM°:ÐM¸}ÑMÑMó ˆAŠDÙ.ð 	ñ 
ð ×&×&Ø*/ˆBÐ&Ñ'à×+×+Ø $§	¡	× 3Ô 3�HØ×(Ñ(×,Ñ,Ð-DÀe×LÓLÜ,8˜˜=Ñ)Ùñ !4ð ˆØ!ÐØŸ	™	×)Ñ)¨!¨BÓ/ˆHØ× Ñ ×$Ñ$ ]°DÓ9ÑEØ$(Ð!Ø×!Ñ!ô !(¨°+¸rÔ Bóâ B˜ð œ' (Ó1Ò1Ù Bñöñ 0ô ˜×)Ñ)Ó*ˆ
à× Ñ ˆà××Ø¤W¨T¯Y©Y¸ÀRÓ%HÓHØ UÓ*Þ%àÐ%Ñ%ˆEð &(§X¡X¤Zô
â%/Ñ!�Ü˜+¤×7ó #ˆD×"Ñ"Ò"Ù%/ð 	ñ 
ð 24Ð.ÞÜ 0°·±Ó ;ÐØ/×5Ñ5Ö7‘
�à˜Ñ �à�HØ6×=Ñ=¸dÔCÜ$×.Ò.¨tÓ4×FÑF�
Ø¤W×%6Ñ%6×%<Ñ%<Ô<Ø.8 dÓ+ñ 8ð  "Ÿv™v mÓ4ÐØÑ+Ø6×=Ñ=Ð>NÔOä =Ø!Ð#3°T·Y±Yó!ˆBˆ}Ññ (-ÓG¢u˜t¸JÑ0F—d¡uˆ
ÐGð *8×)=Ñ)=Ô)?ô
â)?Ñ%��oØ�zÑ!ó "ˆD�/Ò!Ù)?ð 	ñ 
ñ
 (2ÓN¢z˜tÀÑ5M—d¡zˆ
ÐNØ
�	‰	�,ÔØ××Ø×ÑÔ/Ô0ä 
Ó+ˆˆ;‰à!ŸY™Y×3Ñ3ˆˆ>Ñô �4—9‘9Œo˜dŸi™i×0Ñ0°$·)±)×2EÑ2EÀrÓJˆô —O’OØ�L‰L×ÑÓ!Ð#Iö
ˆDô ˜$¤¬lÐ ;×<Ñ<ô !(¨¯©°}ÀdÓ K‘Ü˜D¤(×+Ñ+ô !(¨¯	©	°=À$Ó G‘ä '¨¨m¸TÓ B�æ ÙÛ%�ð1Ø ×.Ñ.°$·)±)Ð;�Eö
 Ø-0˜Ö*ñ ó &ñ!
ð2 ˆ
ùóK
ùò>ùó"
ùò> Hùó
ùò
 OøôJ "ó âðúsS   ž&RÁRÄR
Æ-RÇRÊ4	R$ËR$ËR)Ë-R)Ë;	R/ÌR/Ñ!R4Ò4
SÓSc                óŒ   ^ • [        T R                  U5      u  p#U 4S jnT R                  R                  X#U45        ST l        T $ )Nc                ó4   >• TR                  US   5      U S'   g )Nr#   ©rý   ©Úcls_dictr_   r!   s     €r"   Ú_attach_reprÚ,_ClassBuilder.add_repr.<locals>._attach_reprÔ  s   ø€ Ø#'×#;Ñ#;¸EÀ*Ñ<MÓ#NˆH�ZÒ r%   T)Ú_make_repr_scriptrÿ   r  r    r  )r!   Únsr^   r_   ry  s   `    r"   Úadd_reprÚ_ClassBuilder.add_reprÑ  sC   ø€ Ü)¨$¯+©+°rÓ:‰ˆõ	Oð 	×Ñ×$Ñ$ f°\Ð%BÔCØˆÔØˆr%   c                ó„   • U R                   (       d  Sn[        U5      eS nU R                  U5      U R                  S'   U $ )Nz3__str__ can only be generated if a __repr__ exists.c                ó"   • U R                  5       $ r5   ©r#   r    s    r"   Ú__str__Ú&_ClassBuilder.add_str.<locals>.__str__à  s   € Ø—=‘=“?Ð"r%   r‚  )r  rN   rý   r  )r!   rX   r‚  s      r"   Úadd_strÚ_ClassBuilder.add_strÛ  s?   € Ø××ØGˆCÜ˜S“/Ð!ò	#ð %)×$<Ñ$<¸WÓ$Eˆ�‰�yÑ!Øˆr%   c                óv   ^^• [        S U R                   5       5      mU4S jnU R                  mUU4S jnX4$ )z6
Create custom __setstate__ and __getstate__ methods.
c              3  ó4   #   • U  H  oS :w  d  M
  Uv •  M     g7f)rQ  Nr   )rº   Úans     r"   r¼   Ú8_ClassBuilder._make_getstate_setstate.<locals>.<genexpr>ë  s   é € ð !
Ú)�2°=Ñ-@�B‰BÒ)ùs   ‚	�	c                óF   >• T Vs0 s H  o[        X5      _M     sn$ s  snf ©ú!
Automatically created by attrs.
©r�   )r!   rž   Ústate_attr_namess     €r"   Úslots_getstateÚ=_ClassBuilder._make_getstate_setstate.<locals>.slots_getstateï  s(   ø€ ñ ;KÓKÒ:J°$œ' $Ó-Ò-Ñ:JÑKÐKùÒKs   †c                óö   >• [         R                  U 5      n[        U[        5      (       a  [	        TU5       H  u  p4U" X45        M     OT H  nX1;   d  M
  U" X1U   5        M     T(       a  U" [
        S5        gg)rŒ  N)rÈ   rÉ   rQ   rS   ÚziprY  )r!   ÚstateÚ_ClassBuilder__bound_setattrrž   rð   Úhash_caching_enabledrŽ  s        €€r"   Úslots_setstateÚ=_ClassBuilder._make_getstate_setstate.<locals>.slots_setstate÷  ss   ø€ ô +×2Ñ2°4Ó8ˆOÜ˜%¤×'Ñ'ô $'Ð'7¸Ö#?‘K�DÙ# DÖ0ò $@ó -�DØ•}Ù'¨°D©kÖ:ñ -ö $ÙÔ 1°4Õ8ð $r%   )rS   rþ   r  )r!   r�  r–  r•  rŽ  s      @@r"   r!  Ú%_ClassBuilder._make_getstate_setstateæ  sG   ù€ ô
 !ñ !
Ø×)Ò)ó!
ó 
Ðõ	Lð  $×/Ñ/Ðö	9ð, Ð-Ð-r%   c                ó$   • S U R                   S'   U $ ©NÚ__hash__)r  r    s    r"   Úmake_unhashableÚ_ClassBuilder.make_unhashable  s   € Ø%)ˆ�‰�zÑ"Øˆr%   c                ó¾   ^ • [        T R                  T R                  T R                  T R                  S9u  pSU 4S jjnT R
                  R                  XU45        T $ )N©r&  r)  c                ó4   >• TR                  US   5      U S'   g rš  rv  )rx  r`   r!   s     €r"   Úattach_hashÚ+_ClassBuilder.add_hash.<locals>.attach_hash  s   ø€ Ø#'×#;Ñ#;¸DÀÑ<LÓ#MˆH�ZÒ r%   )rx  r  r`   r  ÚreturnÚNone)Ú_make_hash_scriptrß   rÿ   r  r  r  r    )r!   r^   r_   r¡  s   `   r"   Úadd_hashÚ_ClassBuilder.add_hash  sS   ø€ Ü)Ø�I‰IØ�K‰KØ—<‘<Ø×'Ñ'ñ	
‰ˆ÷	Nð 	×Ñ×$Ñ$ f°[Ð%AÔBàˆr%   c                ó\  ^ ^• [        T R                  T R                  T R                  T R                  T R
                  T R                  T R                  T R                  T R                  T R                  T R                  SS9u  pmUU 4S jnT R                  R                  XU45        T $ )NF©Ú
attrs_initc                óF   >• US   nTUl         TR                  U5      U S'   g )Nr1  ©rˆ   rý   ©rx  r_   rB   r   r!   s      €€r"   Ú_attach_initÚ,_ClassBuilder.add_init.<locals>._attach_init2  s*   ø€ Ø˜Ñ$ˆDØ#.ˆDÔ Ø#'×#;Ñ#;¸DÓ#AˆH�ZÒ r%   ©Ú_make_init_scriptrß   rÿ   r  r  r  r  r  r  r   r	  r
  r  r    )r!   r^   r_   r®  r   s   `   @r"   Úadd_initÚ_ClassBuilder.add_init"  s”   ù€ Ü%6Ø�I‰IØ�K‰KØ×ÑØ×#Ñ#Ø×ÑØ�L‰LØ�K‰KØ×ÑØ×ÑØ�L‰LØ×ÑØñ&
Ñ"ˆ�{ö	Bð
 	×Ñ×$Ñ$ f°\Ð%BÔCàˆr%   c                óD   • U R                  S 5      U R                  S'   U $ )Nc                ó   • [        U 40 UD6$ r5   )rŸ   )r!   rø   s     r"   r´   Ú+_ClassBuilder.add_replace.<locals>.<lambda>=  s   € ¤F¨4Ñ$;°7Ò$;r%   Ú__replace__)rý   r  r    s    r"   Úadd_replaceÚ_ClassBuilder.add_replace;  s%   € Ø(,×(@Ñ(@Ù;ó)
ˆ�‰�}Ñ%ð ˆr%   c                óV   • [        S U R                   5       5      U R                  S'   g )Nc              3  ó†   #   • U  H7  nUR                   (       d  M  UR                  (       a  M)  UR                  v •  M9     g 7fr5   )rB   rE   rž   )rº   Úfields     r"   r¼   Ú/_ClassBuilder.add_match_args.<locals>.<genexpr>B  s0   é € ð 1
â$�Ø�z�zó à"'§-¥-ó ˆE�JŽJÚ$ùs   ‚A›A®AÚ__match_args__)rS   rÿ   r  r    s    r"   Úadd_match_argsÚ_ClassBuilder.add_match_argsA  s'   € Ü+0ñ 1
àŸšó1
ó ,
ˆ�‰Ð'Ò(r%   c                ó\  ^ ^• [        T R                  T R                  T R                  T R                  T R
                  T R                  T R                  T R                  T R                  T R                  T R                  SS9u  pmUU 4S jnT R                  R                  XU45        T $ )NTr©  c                óF   >• US   nTUl         TR                  U5      U S'   g )NÚ__attrs_init__r¬  r­  s      €€r"   Ú_attach_attrs_initÚ8_ClassBuilder.add_attrs_init.<locals>._attach_attrs_initX  s,   ø€ ØÐ)Ñ*ˆDØ#.ˆDÔ Ø)-×)AÑ)AÀ$Ó)GˆHÐ%Ò&r%   r°  )r!   r^   r_   rÄ  r   s   `   @r"   Úadd_attrs_initÚ_ClassBuilder.add_attrs_initH  s•   ù€ Ü%6Ø�I‰IØ�K‰KØ×ÑØ×#Ñ#Ø×ÑØ�L‰LØ�K‰KØ×ÑØ×ÑØ�L‰LØ×ÑØñ&
Ñ"ˆ�{ö	Hð
 	×Ñ×$Ñ$ fÐ5GÐ%HÔIàˆr%   c                ó¦   ^ • T R                   n[        T R                  5      u  p#U 4S jnT R                  R	                  X#U45        [
        US'   T $ )Nc                ó4   >• TR                  US   5      U S'   g )NÚ__eq__rv  rw  s     €r"   Ú
_attach_eqÚ(_ClassBuilder.add_eq.<locals>._attach_eqf  s   ø€ Ø!%×!9Ñ!9¸%À¹/Ó!JˆH�XÒr%   Ú__ne__)r  Ú_make_eq_scriptrÿ   r  r    rÍ  )r!   r³   r^   r_   rË  s   `    r"   Úadd_eqÚ_ClassBuilder.add_eqa  sK   ø€ Ø�^‰^ˆä'¨¯©Ó4‰ˆõ	Kð 	×Ñ×$Ñ$ f°ZÐ%@ÔAäˆˆ8‰àˆr%   c                ó–   ^ • T R                   nU 4S j[        T R                  T R                  5       5       u  US'   US'   US'   US'   T $ )Nc              3  óF   >#   • U  H  nTR                  U5      v •  M     g 7fr5   rv  )rº   Úmethr!   s     €r"   r¼   Ú*_ClassBuilder.add_order.<locals>.<genexpr>r  s'   øé € ð B
â;�ð ×$Ñ$ T×*Ð*Ú;ùs   ƒ!Ú__lt__Ú__le__Ú__gt__Ú__ge__)r  Ú_make_orderrß   rÿ   )r!   r³   s   ` r"   Ú	add_orderÚ_ClassBuilder.add_ordero  sL   ø€ Ø�^‰^ˆôB
ä# D§I¡I¨t¯{©{Ô;óB
Ñ>ˆˆ8‰�b˜‘l B x¡L°"°X±,ð
 ˆr%   c                óŽ  ^• 0 mU R                    HP  nUR                  =(       d    U R                  nU(       d  M+  U[        R                  Ld  M@  X4TUR
                  '   MR     T(       d  U $ U R                  (       a  Sn[        U5      eU4S jnSU R                  S'   U R                  U5      U R                  S'   SU l
        U $ )Nz7Can't combine custom __setattr__ with on_setattr hooks.c                ód   >•  TU   u  p4U" XU5      n[        XU5        g ! [          a    Un Nf = fr5   )ÚKeyErrorrÈ   )r!   rž   Úvalr§   r;  ÚnvalÚsa_attrss         €r"   rî   Ú._ClassBuilder.add_setattr.<locals>.__setattr__‰  sA   ø€ ð*Ø" 4™.‘�ñ ˜D SÓ)�ä˜ TÕ*øô ó Ø’ðús   ƒ   /®/TrG  rî   )rÿ   rJ   r
  r   ÚNO_OPrž   r  rN   r  rý   r  )r!   r§   rJ   rX   rî   rá  s        @r"   Úadd_setattrÚ_ClassBuilder.add_setattry  s¨   ø€ ØˆØ—”ˆAØŸ™×9¨×)9Ñ)9ˆJßˆz˜j´·±Ô=Ø#$ =�˜Ÿ™Ó ñ ö
 ØˆKà×#×#àKˆCÜ˜S“/Ð!õ	+ð 37ˆ�‰Ð.Ñ/Ø(,×(@Ñ(@ÀÓ(Mˆ�‰�}Ñ%Ø"&ˆÔàˆr%   c                óÎ   • U R                   R                  Ul        U R                   R                   SUR                   3Ul        SU R                   R                   S3Ul        U$ )z0
Add __module__ and __qualname__ to a *method*.
r·   ú$Method generated by attrs for class )rß   r*   r+   r)   r-   ©r!   Úmethods     r"   r$  Ú(_ClassBuilder._add_method_dunders_unsafe™  s`   € ð !ŸI™I×0Ñ0ˆÔà!%§¡×!7Ñ!7Ð 8¸¸&¿/¹/Ð9JÐKˆÔð 3°4·9±9×3IÑ3IÐ2JÈ!ÐLð 	Œð ˆr%   c                ó  • [         R                  " [        5         U R                  R                  Ul        SSS5        [         R                  " [        5         U R                  R
                   SUR                   3Ul        SSS5        [         R                  " [        5         SU R                  R
                   S3Ul        SSS5        U$ ! , (       d  f       NŸ= f! , (       d  f       Nc= f! , (       d  f       U$ = f)z<
Add __module__ and __qualname__ to a *method* if possible.
Nr·   rç  )rI  rJ  rK  rß   r*   r+   r)   r-   rè  s     r"   r#  Ú&_ClassBuilder._add_method_dunders_safe§  s»   € ô × Ò ¤Õ0Ø $§	¡	× 4Ñ 4ˆFÔ÷ 1ô × Ò ¤Õ0Ø%)§Y¡Y×%;Ñ%;Ð$<¸A¸f¿o¹oÐ=NÐ"OˆFÔ÷ 1ô × Ò ¤Õ0ØCÀDÇIÁI×DZÑDZÐC[Ð[\Ð]ˆFŒN÷ 1ð ˆ÷ 1Õ0ú÷ 1Õ0ú÷ 1Ô0ð ˆús#   ›CÁ+C!Â& C2Ã
CÃ!
C/Ã2
DN)r”   r:   )r£  r¤  )ré  r   r£  r   )r)   r*   r+   r,   r-   rR  r1  r#   r<  rD  rA  r@  r}  r„  r!  rœ  r¦  r²  r¸  r¿  rÆ  rÏ  rÚ  rä  r$  r#  r0   r   r%   r"   rü   rü   m  s„   † ñð€Ið0iGàôiGòV<ô'ò$ò0"òHIòVò	ò'.òRòòò2ò
òò2òòô@÷r%   rü   c                ó¢   • U b#  [        USLUSL45      (       a  Sn[        U5      eU b  X 4$ Uc  UnUc  UnUSL a  USL a  Sn[        U5      eX4$ )úŽ
Validate the combination of *cmp*, *eq*, and *order*. Derive the effective
values of eq and order.  If *eq* is None, set it to *default_eq*.
Nú&Don't mix `cmp` with `eq' and `order`.FTú-`order` can only be True if `eq` is True too.©ÚanyrN   )r@   rF   rH   Ú
default_eqrX   s        r"   Ú_determine_attrs_eq_orderrô  ·  sx   € ð
 �œ3 ¨$ °¸TÐ0AÐB×CÑCØ6ˆÜ˜‹oÐð �Øˆxˆð 
�zØˆà�}Øˆà	ˆU‚{�u ’}Ø=ˆÜ˜‹oÐàˆ9Ðr%   c                óî   • U b#  [        USLUSL45      (       a  Sn[        U5      eS nU b  U" U 5      u  pXX4$ Uc  USpqO
U" U5      u  pUc  Xp‚O
U" U5      u  p(USL a  USL a  Sn[        U5      eXX(4$ )rî  Nrï  c                ó8   • [        U 5      (       a  SU pX4$ SnX4$ )z(
Decide whether a key function is used.
TN)rO   )rð   r¶   s     r"   Údecide_callable_or_booleanÚ>_determine_attrib_eq_order.<locals>.decide_callable_or_booleanÜ  s-   € ô �E�?‰?Ø˜u�3ð ˆzÐð ˆCØˆzÐr%   FTrð  rñ  )	r@   rF   rH   ró  rX   r÷  Úcmp_keyrG   rI   s	            r"   rL   rL   Ó  s«   € ð
 �œ3 ¨$ °¸TÐ0AÐB×CÑCØ6ˆÜ˜‹oÐòð �Ù1°#Ó6‰ˆØ˜SÐ)Ð)ð 
�zØ ‰Fá/°Ó3‰
ˆà�}Ø‰yá5°eÓ<Ñˆà	ˆU‚{�u ’}Ø=ˆÜ˜‹oÐà�uÐ'Ð'r%   c                óh   • USL d  USL a  U$ Uc  USL a  U$ U H  n[        X5      (       d  M    g   U$ )aX  
Check whether we should implement a set of methods for *cls*.

*flag* is the argument passed into @attr.s like 'init', *auto_detect* the
same as passed into @attr.s and *dunders* is a tuple of attribute names
whose presence signal that the user has implemented it themselves.

Return *default* if no reason for either for or against is found.
TF)r–   )r”   ÚflagÚauto_detectÚdundersr=   Údunders         r"   Ú_determine_whether_to_implementrÿ  þ  sH   € ð ˆt‚|�t˜u’}Øˆà�|˜ uÒ,Øˆó ˆÜ˜c×*Ó*Ùñ ð €Nr%   c                ó@  ^^^^^^^^	^
^^^^^^^^^^^^• Tb  SSK nUR                  [        S5      SS9  [        XOUS5      u  mmUb  Um[	        T[
        [        45      (       a  [        R                  " T6 mUUUUUUUUUUUUUUUUUUU
UU	4S jnU c  U$ U" U 5      $ )a  
A class decorator that adds :term:`dunder methods` according to the
specified attributes using `attr.ib` or the *these* argument.

Consider using `attrs.define` / `attrs.frozen` in new code (``attr.s`` will
*never* go away, though).

Args:
    repr_ns (str):
        When using nested classes, there was no way in Python 2 to
        automatically detect that.  This argument allows to set a custom
        name for a more meaningful ``repr`` output.  This argument is
        pointless in Python 3 and is therefore deprecated.

.. caution::
    Refer to `attrs.define` for the rest of the parameters, but note that they
    can have different defaults.

    Notably, leaving *on_setattr* as `None` will **not** add any hooks.

.. versionadded:: 16.0.0 *slots*
.. versionadded:: 16.1.0 *frozen*
.. versionadded:: 16.3.0 *str*
.. versionadded:: 16.3.0 Support for ``__attrs_post_init__``.
.. versionchanged:: 17.1.0
   *hash* supports `None` as value which is also the default now.
.. versionadded:: 17.3.0 *auto_attribs*
.. versionchanged:: 18.1.0
   If *these* is passed, no attributes are deleted from the class body.
.. versionchanged:: 18.1.0 If *these* is ordered, the order is retained.
.. versionadded:: 18.2.0 *weakref_slot*
.. deprecated:: 18.2.0
   ``__lt__``, ``__le__``, ``__gt__``, and ``__ge__`` now raise a
   `DeprecationWarning` if the classes compared are subclasses of
   each other. ``__eq`` and ``__ne__`` never tried to compared subclasses
   to each other.
.. versionchanged:: 19.2.0
   ``__lt__``, ``__le__``, ``__gt__``, and ``__ge__`` now do not consider
   subclasses comparable anymore.
.. versionadded:: 18.2.0 *kw_only*
.. versionadded:: 18.2.0 *cache_hash*
.. versionadded:: 19.1.0 *auto_exc*
.. deprecated:: 19.2.0 *cmp* Removal on or after 2021-06-01.
.. versionadded:: 19.2.0 *eq* and *order*
.. versionadded:: 20.1.0 *auto_detect*
.. versionadded:: 20.1.0 *collect_by_mro*
.. versionadded:: 20.1.0 *getstate_setstate*
.. versionadded:: 20.1.0 *on_setattr*
.. versionadded:: 20.3.0 *field_transformer*
.. versionchanged:: 21.1.0
   ``init=False`` injects ``__attrs_init__``
.. versionchanged:: 21.1.0 Support for ``__attrs_pre_init__``
.. versionchanged:: 21.1.0 *cmp* undeprecated
.. versionadded:: 21.3.0 *match_args*
.. versionadded:: 22.2.0
   *unsafe_hash* as an alias for *hash* (for :pep:`681` compliance).
.. deprecated:: 24.1.0 *repr_ns*
.. versionchanged:: 24.1.0
   Instances are not compared as tuples of attributes anymore, but using a
   big ``and`` condition. This is faster and has more correct behavior for
   uncomparable values like `math.nan`.
.. versionadded:: 24.1.0
   If a class has an *inherited* classmethod called
   ``__attrs_init_subclass__``, it is executed after the class is created.
.. deprecated:: 24.1.0 *hash* is deprecated in favor of *unsafe_hash*.
Nr   zQThe `repr_ns` argument is deprecated and will be removed in or after August 2025.é   )Ú
stacklevelc                ó  >• T=(       d    [        U 5      nT	SL =(       a    [        U [        5      nT=(       a    [        U S5      nU(       a  U(       a  Sn[	        U5      e[        U TTUT[        U TTSTS9TTT
UTTUT5      n[        U TTS5      (       a  UR                  T5        TSL a  UR                  5         [        U TTS5      nU(       d  USL a  UR                  5         U(       d#  [        U TTS5      (       a  UR                  5         T(       d  UR                  5         Tc  TSL a  [        U S	5      (       a  S
mTSLa  TS
La  Tb  Sn[        U5      eTS
L d  Tc  US
L d  U(       a  T
(       a  Sn[        U5      eOGTSL d  Tc  USL a  USL a  UR                  5         O$T
(       a  Sn[        U5      eUR                  5         [        U TTS5      (       a  UR                  5         O$UR!                  5         T
(       a  Sn[        U5      e["        (       a!  [        U S5      (       d  UR%                  5         [&        (       a(  T(       a!  [        U S5      (       d  UR)                  5         UR+                  5       $ )NTrî   z/Can't freeze a class with a custom __setattr__.)r  r  )r=   r�  )rÊ  rÍ  )rÕ  rÖ  r×  rØ  r›  Fr<   zlInvalid value for cache_hash.  To use hash caching, hashing must be either explicitly or implicitly enabled.©r1  zFInvalid value for cache_hash.  To use hash caching, init must be True.r·  r¾  )Ú_has_frozen_base_classÚ
issubclassrí   r–   rN   rü   rÿ  r}  r„  rÏ  rÚ  rä  rM   r¦  rœ  r²  rÆ  r   r¸  r   r¿  rD  )r”   Ú	is_frozenr*  Úhas_own_setattrrX   ÚbuilderrF   rÌ   rü  Úauto_excr)  rÍ   Úeq_rÎ   r&  r(  rA   rB   rE   Ú
match_argsrJ   Úorder_r?   Úrepr_nsr%  rŒ   rË   r'  s          €€€€€€€€€€€€€€€€€€€€€r"   ÚwrapÚattrs.<locals>.wrap‡  s‹  ø€ Ø×9Ô4°SÓ9ˆ	Ø˜TÐ!×D¤j°´mÓ&DˆØ%÷ 
Ô*<Ø�ó+
ˆö žyØCˆCÜ˜S“/Ð!äØØØØØÜ+ØØ!ØØ0Øñð ØØØØØØØó)
ˆô. +Ø��{ M÷
ñ 
ð ×Ñ˜WÔ%à�$Š;Ø�O‰OÔä,Ø��kÐ#7ó
ˆö ˜" š*Ø�N‰NÔÞÔ9Ø�˜Ð&N÷
ñ 
ð ×ÑÔæØ×ÑÔ!ð ‰LØ˜tÒ#Ü" 3¨
×3Ñ3àˆDà�tÒ ¨EÒ 1°dÑ6FàJˆCÜ˜C“.Ð à�5Š=˜T™\¨b°Eªk¾fö ð E�Ü “nÐ$ð ð �TŠ\Ø‰L˜R 4šZ¨I¸Ò,=ð ×ÑÕö ð E�Ü “nÐ$Ø×#Ñ#Ô%ä*Ø��{ M÷
ñ 
ð ×ÑÕà×"Ñ"Ô$ÞØ^�Ü “nÐ$çŠ<Ô 2°3¸× FÑ FØ×ÑÔ!÷ ŠLÞÜ& sÐ,<×=Ñ=à×"Ñ"Ô$à×"Ñ"Ó$Ð$r%   )	ÚwarningsÚwarnÚDeprecationWarningrô  rQ   rR   rS   r   rT   )Ú	maybe_clsrË   r  r?   r@   rA   rB   r%  r&  r'  rŒ   rÌ   rE   r)  r
  rF   rH   rü  rÍ   r(  rJ   rÎ   r  Úunsafe_hashr  r  r  r  s    ``` ``````````  ``````   @@r"   rƒ   rƒ     s¢   ÿÿü€ ðx ÑÛà�‰ÜØcóð ð	 	ñ 	
ô ,¨C°U¸DÓA�K€Cˆð ÑØˆä�*œt¤U˜m×,Ñ,Ü—\’\ :Ð.ˆ
÷j%÷ j%÷ j%ñ j%ð\ ÑØˆá�	‹?Ðr%   c                ó&   • U R                   [        L $ )zJ
Check whether *cls* has a frozen ancestor by looking at its
__setattr__.
)rî   rñ   )r”   s    r"   r  r    s   € ð
 �?‰?Ô.Ð.Ð.r%   c           
     óX   • SU SU R                    S[        U SU R                  5       S3$ )z>
Create a "filename" suitable for a function being generated.
z<attrs generated Ú r·   r+   rg   )r*   r�   r)   )r”   Ú	func_names     r"   râ   râ   
  s7   € ð
 ˜I˜; a¨¯©Ð'7°qÜ�3˜¨¯©Ó5Ð
6°að	9ðr%   c                ó  ^^^	^
^^• [        S T 5       5      mSn[        [        U S5      5      m0 m	SnSm
SmU(       d  US-  nOUS-  nUS	-  nS
T
-   m
TS-  mU/mUUU	U
UU4S jnU(       a  TR                  US[         S3-   5        U(       a,  U" S[         S3US-  5        TR                  US-  S-   5        OU" S[         S3US-  5        TR                  US[         3-   5        O	U" SU5        SR                  T5      nUT	4$ )Nc              3  ó‚   #   • U  H5  oR                   S L d   UR                   b  M   UR                  S L d  M1  Uv •  M7     g7f)TN)rA   rF   rÂ   s     r"   r¼   Ú$_make_hash_script.<locals>.<genexpr>  s/   é € ð ÚˆaŸF™F dšN¨q¯v©v‹À!Ç$Á$È$À,�‰’5ùs   ‚?¥?¶	?ú        rA   zdef __hash__(selfzhash((z))z):z, *zC, _cache_wrapper=__import__('attr._make')._make._CacheHashWrapper):z_cache_wrapper(Ú)c           	     óv  >• TR                  X-   T-   UST	 S3-   /5        T H|  nUR                  (       aF  SUR                   S3nUR                  TU'   TR                  USU SUR                   S3-   5        MZ  TR                  USUR                   S3-   5        M~     TR                  US-   T-   5        g	)
z»
Generate the code for actually computing the hash code.
Below this will either be returned directly or used to compute
a value which is then cached, depending on the value of cache_hash
r  Ú,r9  Ú_keyú(self.z),ú        self.ú    N)rá   rG   rž   r    )
ÚprefixÚindentr§   Úcmp_namerƒ   Úclosing_bracesr_   Ú	hash_funcÚmethod_linesÚ	type_hashs
       €€€€€€r"   Úappend_hash_computation_linesÚ8_make_hash_script.<locals>.append_hash_computation_lines/  sÉ   ø€ ð 	×Ñà‘ )Ñ+Ø˜8 I ;¨aÐ0Ñ0ðô	
ó ˆAØ�x�xØ˜qŸv™v˜h dÐ+�Ø"#§(¡(��h‘Ø×#Ñ#Ø˜x¨ z°¸¿¹°x¸rÐBÑBöð ×#Ñ# F¨}¸Q¿V¹V¸HÀAÐ-FÑ$FÖGñ ð 	×Ñ˜F V™O¨nÑ<Õ=r%   zif self.z	 is None:zobject.__setattr__(self, 'ú', r  úself.ú = zreturn self.zreturn rÞ   )rS   rA   râ   r    rY  rÄ   )r”   rƒ   r&  r)  ÚtabÚhash_defr,  r^   r(  r_   r)  r*  r+  s    `      @@@@@r"   r¥  r¥    sF  ý€ ô ñ Ùóó €Eð €CäÔ.¨s°FÓ;Ó<€Ià€Eà"€HØ€IØ€NÞØ�DÑ‰à�EÑˆàÐYÑYˆØ%¨	Ñ1ˆ	Ø˜#Ñˆà�:€L÷>ò >ö4 Ø×Ñ˜C HÔ->Ð,?¸yÐ"IÑIÔJÞÙ)Ø,Ô->Ð,?¸sÐCÀSÈ1ÁWôð ×Ñ  a¡¨#¡Õ.á)ØÔ)Ð*¨#Ð.°°a±ôð 	×Ñ˜C LÔ1BÐ0CÐ"DÑDÕEá% i°Ô5à�Y‰Y�|Ó$€FØ�5ˆ=Ðr%   c                ó\   • [        XSSS9u  p#[        X#[        U S5      S9  US   U l        U $ )z
Add a hash method to *cls*.
FrŸ  r›  ©ra   )r¥  rc   râ   r›  ©r”   rƒ   r^   r_   s       r"   Ú	_add_hashr6  \  sA   € ô &Ø˜5¨Uñ�M€Fô ØÔ 9¸#¸zÓ Jòð ˜Ñ$€C„LØ€Jr%   c                óP   • U R                  U5      nU[        L a  [        $ U(       + $ )zR
Check equality and either forward a NotImplemented or
return the result negated.
)rÊ  ÚNotImplemented)r!   ÚotherÚresults      r"   rÍ  rÍ  j  s(   € ð
 �[‰[˜Ó€FØ”ÒÜÐàŒ:Ðr%   c                óR  • U  Vs/ s H  oR                   (       d  M  UPM     n n/ SQn0 nU (       aÍ  UR                  S5        U  H¤  nUR                  (       aQ  SUR                   S3nUR                  X4'   UR                  SU SUR                   SU SUR                   S	3	5        O+UR                  S
UR                   SUR                   35        XS   Ld  M™  US    S3US'   M¦     UR                  S5        OUR                  S5        SR	                  U5      nXS4$ s  snf )z.
Create __eq__ method for *cls* with *attrs*.
)zdef __eq__(self, other):z-    if other.__class__ is not self.__class__:z        return NotImplementedz    return  (r9  r!  r  r"  z) == z(other.r  r#  z
 == other.re   z andz    )z    return TruerÞ   )rF   r    rG   rž   rÄ   )rƒ   r§   rã   r_   r'  r^   s         r"   rÎ  rÎ  v  s  € ñ Ó&š�1§¥�Q™€EÐ&ò€Eð €EÞØ�‰�_Ô%ÛˆAØ�x�xØ˜qŸv™v˜h dÐ+�ð #$§(¡(�‘Ø—‘Ø˜x˜j¨¨q¯v©v¨h°e¸H¸:ÀWÈQÏVÉVÈHÐTUÐVõð —‘˜}¨Q¯V©V¨H°J¸q¿v¹v¸hÐGÔHØ˜b™	Ô!Ø$ R™y˜k¨Ð.��b“	ñ ð 	�‰�WÕà�‰Ð&Ô'à�Y‰Y�uÓ€Fàˆ=Ðùò= 's
   …D$�D$c                óž   ^^• T Vs/ s H  o"R                   (       d  M  UPM     snmU4S jmU4S jnU4S jnU4S jnU4S jnX4XV4$ s  snf )z1
Create ordering methods for *cls* with *attrs*.
c                ó>   >^ • [        S U 4S jT 5        5       5      $ )z
Save us some typing.
c              3  óH   #   • U  H  u  pU(       a  U" U5      OUv •  M     g 7fr5   r   )rº   rð   r¶   s      r"   r¼   Ú6_make_order.<locals>.attrs_to_tuple.<locals>.<genexpr>¥  s(   é € ð 
ò‘
�ö ‰C�ŒJ 5Ô(òùó   ‚ "c              3  óh   >#   • U  H'  n[        TUR                  5      UR                  4v •  M)     g 7fr5   )r�   rž   rI   )rº   r§   Úobjs     €r"   r¼   r?  §  s(   øé € ð Ú=B¸”˜˜aŸf™fÓ% q§{¡{Õ3ºUùs   ƒ/2)rS   )rB  rƒ   s   `€r"   Úattrs_to_tupleÚ#_make_order.<locals>.attrs_to_tuple¡  s)   ù€ ô ñ 
ôÙ=Bôó
ó 
ð 	
r%   c                ód   >• UR                   U R                   L a  T" U 5      T" U5      :  $ [        $ r‹  ©r¹   r8  ©r!   r9  rC  s     €r"   rÕ  Ú_make_order.<locals>.__lt__¬  ó0   ø€ ð �?‰?˜dŸn™nÒ,Ù! $Ó'©.¸Ó*?Ñ?Ð?äÐr%   c                ód   >• UR                   U R                   L a  T" U 5      T" U5      :*  $ [        $ r‹  rF  rG  s     €r"   rÖ  Ú_make_order.<locals>.__le__µ  ó0   ø€ ð �?‰?˜dŸn™nÒ,Ù! $Ó'©>¸%Ó+@Ñ@Ð@äÐr%   c                ód   >• UR                   U R                   L a  T" U 5      T" U5      :„  $ [        $ r‹  rF  rG  s     €r"   r×  Ú_make_order.<locals>.__gt__¾  rI  r%   c                ód   >• UR                   U R                   L a  T" U 5      T" U5      :¬  $ [        $ r‹  rF  rG  s     €r"   rØ  Ú_make_order.<locals>.__ge__Ç  rL  r%   )rH   )r”   rƒ   r§   rÕ  rÖ  r×  rØ  rC  s    `     @r"   rÙ  rÙ  ›  sI   ù€ ñ Ó)š�1§¥�Q™Ñ)€Eõ	
õõõõð ˜6Ð)Ð)ùòc *s
   ‡A
ŸA
c                ó�   • Uc  U R                   n[        U5      u  p#[        X#[        U S5      S9  US   U l        [
        U l        U $ )z-
Add equality methods to *cls* with *attrs*.
rÊ  r4  )r˜   rÎ  rc   râ   rÊ  rÍ  r5  s       r"   Ú_add_eqrR  Ó  sN   € ð �}Ø×#Ñ#ˆä# EÓ*�M€FÜØÔ 9¸#¸xÓ Hòð �x‘€C„JÜ€C„Jà€Jr%   c                óò  • [        S U  5       5      nU VVVs0 s H  u  p4oT[        :w  d  M  US-   U_M     nnnn[        US'   [        US'   [        US'   / nU HM  u  p4nU(       a  SU-   OSU-   S-   n	U[        :X  a
  U< S	U	< S
3OU< S	U< SU	< S3n
UR                  U
5        MO     SR                  U5      nUc  SnOUS-   nSSSSSSSSSSSSSU SU S3SS/nS R                  U5      U4$ s  snnnf )!z;
Create the source and globs for a __repr__ and return it.
c              3  ó´   #   • U  HN  nUR                   S Ld  M  UR                  UR                   SL a  [         OUR                   UR                  4v •  MP     g7f)FTN)r?   rž   rB   rÂ   s     r"   r¼   Ú$_make_repr_script.<locals>.<genexpr>ë  sD   é € ð "âˆAØ�6‰6˜Ðó 	?ˆ�‰˜!Ÿ&™& Dš.•$¨a¯f©f°q·v±vÕ>Úùs
   ‚A™?AÚ_reprr   rK  r   r/  zgetattr(self, "z", NOTHING)z={z!r}z_repr(z)}r®   z1{self.__class__.__qualname__.rsplit(">.", 1)[-1]}z.{self.__class__.__name__}zdef __repr__(self):z  try:z:    already_repring = _compat.repr_context.already_repringz  except AttributeError:z!    already_repring = {id(self),}z:    _compat.repr_context.already_repring = already_repringz  else:z#    if id(self) in already_repring:z      return '...'z	    else:z#      already_repring.add(id(self))z    return f'Ú(z)'z
  finally:z$    already_repring.remove(id(self))rÞ   )rS   r?   r   rK  r   r    rÄ   )rƒ   r|  Úattr_names_with_reprsrž   Úrr9  r_   Úattribute_fragmentsrv   ÚaccessorÚfragmentÚrepr_fragmentÚcls_name_fragmentrã   s                 r"   r{  r{  ä  s]  € ô "ñ "áó"ó Ðñ -BõÚ,A™j˜d qÌ$ÁYÓˆˆw‰˜ÒÑ,Að 
ò ô €Eˆ)ÑÜ,€EÐ
ÑÜ€Eˆ)ÑØÐÛ+‰
ˆ�æˆG�dŠNÐ%6¸Ñ%=ÀÑ%Mð 	ð
 ”D‹yó  £Ñ*ã'+«T³8Ð<ð 	ð
 	×"Ñ" 8Ö,ñ ,ð —I‘IÐ1Ó2€Mà	�zØOÑàÐ!=Ñ=Ðð 	ØØDØ"Ø+ØDØØ-ØØØ-ØØ
Ð)Ð*¨!¨M¨?¸"Ð=ØØ.ð€Eð$ �9‰9�UÓ˜UÐ"Ð"ùôUs
   ™C2­
C2c                óz   • Uc  U R                   n[        X!5      u  p4[        X4[        U S5      S9  US   U l        U $ )z
Add a repr method to *cls*.
r#   r4  )r˜   r{  rc   râ   r#   )r”   r|  rƒ   r^   r_   s        r"   Ú	_add_reprr`    sH   € ð �}Ø×#Ñ#ˆä% eÓ0�M€FÜØÔ 9¸#¸zÓ Jòð ˜Ñ$€C„LØ€Jr%   c                óÞ   • [        U 5      nUc"  [        U [        5      (       d  Sn[        U5      e[	        U SS5      nUc,  Ub  [	        USS5      nUb  X0l        U$ U < S3n[        U5      eU$ )a  
Return the tuple of *attrs* attributes for a class.

The tuple also allows accessing the fields by their names (see below for
examples).

Args:
    cls (type): Class to introspect.

Raises:
    TypeError: If *cls* is not a class.

    attrs.exceptions.NotAnAttrsClassError:
        If *cls* is not an *attrs* class.

Returns:
    tuple (with name accessors) of `attrs.Attribute`

.. versionchanged:: 16.2.0 Returned tuple allows accessing the fields
   by name.
.. versionchanged:: 23.1.0 Add support for generic classes.
NúPassed object must be a class.r˜   ú! is not an attrs-decorated class.)r   rQ   r:   rM   r�   r˜   r   )r”   Úgeneric_baserX   rƒ   s       r"   rö   rö   ,  sˆ   € ô. $ CÓ(€LàÑ¤J¨s´D×$9Ñ$9Ø.ˆÜ˜‹nÐä�CÐ*¨DÓ1€Eà�}ØÑ#Ü˜LÐ*;¸TÓBˆEØÑ ð ',Ô#Ø�Ø‘Ð8Ð9ˆÜ" 3Ó'Ð'à€Lr%   c                óÌ   • [        U [        5      (       d  Sn[        U5      e[        U SS5      nUc  U < S3n[	        U5      eU Vs0 s H  o3R
                  U_M     sn$ s  snf )a�  
Return an ordered dictionary of *attrs* attributes for a class, whose keys
are the attribute names.

Args:
    cls (type): Class to introspect.

Raises:
    TypeError: If *cls* is not a class.

    attrs.exceptions.NotAnAttrsClassError:
        If *cls* is not an *attrs* class.

Returns:
    dict[str, attrs.Attribute]: Dict of attribute name to definition

.. versionadded:: 18.1.0
rb  r˜   Nrc  )rQ   r:   rM   r�   r   rž   )r”   rX   rƒ   r§   s       r"   Úfields_dictrf  Z  sj   € ô& �cœ4× Ñ Ø.ˆÜ˜‹nÐÜ�CÐ*¨DÓ1€EØ�}Ø‘Ð8Ð9ˆÜ" 3Ó'Ð'Ù$Ó%šu˜!�F‰F�AŠI™uÑ%Ð%ùÒ%s   ÁA!c           	     ó¾   • [         R                  SL a  g[        U R                  5       H0  nUR                  nUc  M  U" X[        XR                  5      5        M2     g)z˜
Validate all attributes on *inst* that have a validator.

Leaves all exceptions through.

Args:
    inst: Instance of a class with *attrs* attributes.
FN)r   Ú_run_validatorsrö   r¹   r>   r�   rž   )rù   r§   rc  s      r"   r  r  w  sI   € ô ×Ñ %Ò'Øä�D—N‘NÖ#ˆØ�K‰KˆØ‹=Ùˆd”w˜t§V¡VÓ,Ö-ò $r%   c                óT   • UR                  U 5      nU=(       a    SUR                  ;   $ )z6
Check if the attribute name comes from a slot class.
rR  )r°   r“   )Úa_namer¥   r”   s      r"   Ú_is_slot_attrrk  ‰  s(   € ð ×
Ñ
˜FÓ
#€CØ×.�; #§,¡,Ñ.Ð.r%   c                ó$  • U
S L=(       a    U
[         R                  LnU(       a  U(       a  Sn[        U5      eU=(       d    Un/ n0 nU H–  nUR                  (       d  UR                  [
        L a  M)  UR                  U5        UUUR                  '   UR                  b  USL a  Sn[        U5      eSnMl  U(       d  Mu  UR                  [         R                  Ld  M”  SnM˜     [        UUUUUUUUU	UUU(       a  SOS5      u  nnnU R                  [        R                  ;   a6  UR                  [        R                  U R                     R                  5        UR                  [
        US.5        U(       a  [        R                   US'   UUU4$ )Nz$Frozen classes can't use on_setattr.TrÃ  r1  )r   Ú	attr_dictrÜ   )r   rã  rN   rB   r=   r   r    rž   rJ   Ú_attrs_to_init_scriptr*   ÚsysÚmodulesr7  r“   rÈ   rÉ   )r”   rƒ   Úpre_initÚpre_init_has_argsÚ	post_initr&  r%  r)  r¥   r*  Úcls_on_setattrrª  Úhas_cls_on_setattrrX   Úneeds_cached_setattrÚfiltered_attrsrm  r§   r^   r_   r   s                        r"   r±  r±  ‘  sh  € ð 	˜dÐ"×J ~¼W¿]¹]Ð'Jð ö Ö$Ø4ˆÜ˜‹oÐà%×/¨ÐØ€NØ€IÛˆØ�v�v˜!Ÿ)™)¤wÒ.Ùà×Ñ˜aÔ Øˆ	�!—&‘&Ñà�<‰<Ñ#Ø˜Š~Ø<�Ü  “oÐ%à#'Ò ßÐ A§L¡L¼¿¹Ô$EØ#'Ò ñ ô  "7ØØØØØØØØØØØÞ&Ñ¨Jó"Ñ€FˆE�;ð ‡~�~œŸ™Ó$à�‰”S—[‘[ §¡Ñ0×9Ñ9Ô:à	‡L�LœW°9Ñ=Ô>æô (4×';Ñ';ˆÐ#Ñ$à�5˜+Ð%Ð%r%   c                ó   • SU  SU S3$ )zB
Use the cached object.setattr to set *attr_name* to *value_var*.
ú
_setattr('r.  r  r   )r   Ú	value_varÚhas_on_setattrs      r"   Ú_setattrr|  Ö  s   € ð ˜	�{ # i [°Ð2Ð2r%   Ú	Converterc                ó2   • SU  SUR                  X5       S3$ )z_
Use the cached object.setattr to set *attr_name* to *value_var*, but run
its converter first.
ry  r.  r  )Ú_fmt_converter_call©r   rz  r{  rC   s       r"   Ú_setattr_with_converterr�  Ý  s&   € ð ˜	�{ # i×&CÑ&CÀIÓ&YÐ%ZÐZ[Ð\Ð\r%   c                ó8   • U(       a  [        XS5      $ SU  SU 3$ )zc
Unless *attr_name* has an on_setattr hook, use normal assignment. Otherwise
relegate to _setattr.
Tr/  r0  )r|  )r   rð   r{  s      r"   Ú_assignrƒ  ç  s'   € ö
 Ü˜	¨$Ó/Ð/à�9�+˜S  Ð(Ð(r%   c                óX   • U(       a  [        XSU5      $ SU  SUR                  X5       3$ )zƒ
Unless *attr_name* has an on_setattr hook, use normal assignment after
conversion. Otherwise relegate to _setattr_with_converter.
Tr/  r0  )r�  r  r€  s       r"   Ú_assign_with_converterr…  ò  s5   € ö Ü& y¸TÀ9ÓMÐMà�9�+˜S ×!>Ñ!>¸yÓ!TÐ UÐVÐVr%   c                óš   ^• U SL a9  USL a  S[         [        4$         SU4S jjn          SU4S jjnSUU4$ S[        [        4$ )z[
Determine the correct setter functions based on whether a class is frozen
and/or slotted.
Tr   c                óN   >• [        U T5      (       a  [        XU5      $ SU  SU 3$ ©Nú_inst_dict['z'] = )rk  r|  )r   rz  r{  r¥   s      €r"   Ú
fmt_setterÚ&_determine_setters.<locals>.fmt_setter  s2   ø€ ô ˜Y¨×6Ñ6Ü 	°nÓEÐEà! ) ¨E°)°Ð=Ð=r%   c                óz   >• U(       d  [        U T5      (       a  [        XX#5      $ SU  SUR                  X5       3$ rˆ  )rk  r�  r  )r   rz  r{  rC   r¥   s       €r"   Úfmt_setter_with_converterÚ5_determine_setters.<locals>.fmt_setter_with_converter  sH   ø€ ö ¤¨y¸-×!HÑ!HÜ.Ø¨.óð ð " ) ¨E°)×2OÑ2OÐPYÓ2eÐ1fÐgÐgr%   )z_inst_dict = self.__dict__©r   rŒ   rz  rŒ   r{  r  r£  rŒ   ©
r   rŒ   rz  rŒ   r{  r  rC   r}  r£  rŒ   )r|  r�  rƒ  r…  )r&  r%  r¥   rŠ  r�  s     `  r"   Ú_determine_settersr‘  ÿ  s¤   ø€ ð �‚~Ø�DŠ=Ø”xÔ!8Ð8Ð8ð	>Øð	>Ø'*ð	>Ø<@ð	>à÷	>ð	hØð	hàð	hð !ð	hð !ð		hð
 ÷	hð ,ØØ%ð
ð 	
ð ŒwÔ.Ð.Ð.r%   c           
     óœ  • U(       a  S/O/ nU	(       a  UR                  S5        [        XU5      u  pÞnUR                  U5        / n/ n/ n0 nSS0nU  GH!  nUR                  (       a  UR                  U5        UR                  nUR
                  SL=(       d%    UR
                  [        R                  L=(       a    U
nUR                  n[        UR                  [        5      nU(       a  UR                  R                  (       a  SOSnUR                  b5  [        UR                  [        5      (       d  [        UR                  5      nOUR                  nUR                  SL Ga  U(       aœ  [         UR                  4-  nUbJ  UR                  U" UUSU S	3-   UU5      5        UR                  UUR#                  UR                  5      '   O UR                  U" UUSU S	3-   U5      5        UR                  R$                  UU'   GOUbH  UR                  U" US
U S3UU5      5        UR                  UUR#                  UR                  5      '   GOÀUR                  U" US
U S3U5      5        GO¡UR                  [&        La¥  U(       dž  U SU S3nUR(                  (       a  UR                  U5        OUR                  U5        UbD  UR                  U" UUUU5      5        UR                  UUR#                  UR                  5      '   GOUR                  U" UUU5      5        GOéU(       GaN  U S3nUR(                  (       a  UR                  U5        OUR                  U5        UR                  SU S35        [         UR                  4-  nUb}  UR                  SU" UUUU5      -   5        UR                  S5        UR                  SU" UUS-   U-   S	-   UU5      -   5        UR                  UUR#                  UR                  5      '   ORUR                  SU" UUU5      -   5        UR                  S5        UR                  SU" UUS-   U-   S	-   U5      -   5        UR                  R$                  UU'   O“UR(                  (       a  UR                  U5        OUR                  U5        UbC  UR                  U" UUUU5      5        UR                  UUR#                  UR                  5      '   OUR                  U" UUU5      5        UR                  SL d  GMÖ  UR*                  b  Uc  UR*                  UU'   GMø  Uc  GMþ  UR,                  (       d  GM  UR,                  UU'   GM$     U(       az  [.        US'   UR                  S5        U HZ  nSUR                  -   nSUR                  -   nUR                  SU SU SUR                   S	35        UR                  UU'   UUU'   M\     U(       a  UR                  S5        U(       a?  U(       a  U(       a  S[0         S3nOS[0         S3nO
S[0         S3nUR                  U5        U(       a-  S R3                  S! U  5       5      n UR                  S"U  S	35        S#R3                  U5      nUn!U(       ac  UU(       a  S#OS S$S#R3                  U5       3-  nS#R3                  S% U 5        V"s/ s H
  n"U" S&U" 3PM     sn"5      n#U!U!(       a  S#OS-  n!U!U#-  n!U(       a  U(       a	  S'U! S	3US('   S)n$S*U SU S+U(       a  U$R3                  U5      OS, S-3UU4$ s  sn"f ).z›
Return a script of an initializer for *attrs*, a dict of globals, and
annotations for the initializer.

The globals are required by the generated script.
zself.__attrs_pre_init__()z$_setattr = _cached_setattr_get(self)r£  Nr!   Ú FrW  r  zattr_dict['z
'].defaultz=attr_dict['z=NOTHINGzif z is not NOTHING:r$  zelse:Tr   z#if _config._run_validators is True:Ú__attr_validator_Ú__attr_z(self, z, self.zself.__attrs_post_init__()ry  z', None)r‰  z	'] = Noner/  z = Noner   c              3  ód   #   • U  H&  oR                   (       d  M  S UR                   3v •  M(     g7f)r/  N)rB   rž   rÂ   s     r"   r¼   Ú(_attrs_to_init_script.<locals>.<genexpr>	  s"   é € ÐB²%¨Q¿6½6Ó(˜% §¡˜xÕ(²%ùs   ‚0š0zBaseException.__init__(self, r®   z*, c              3  óH   #   • U  H  oR                  S 5      S   v •  M     g7f)Ú=r   N)Úsplit)rº   Úkwas     r"   r¼   r—  	  s   é € Ð#NÂ¸#§I¡I¨c£N°1Ö$5Âùr@  r™  zself.__attrs_pre_init__(r   z
    zdef z):
    ÚpassrÞ   )r    r‘  rá   r>   rž   rJ   r   rã  rK   rQ   r=   rP   Ú
takes_selfrC   r}  rB   Ú_INIT_FACTORY_PATÚ_get_global_namerW   r   rE   r:   Ú_first_param_typer   rY  rÄ   )%rƒ   r  Ú
is_slottedÚcall_pre_initrr  Úcall_post_initÚdoes_cache_hashr¥   r*  rv  ru  Úmethod_namerã   Úextra_linesrŠ  r�  r÷   Úkw_only_argsÚattrs_to_validateÚnames_for_globalsr   r§   r   r{  Úarg_nameÚhas_factoryÚ
maybe_selfrC   Úinit_factory_nameÚargÚval_nameÚinit_hash_cacheÚvalsÚpre_init_argsÚkw_arg_nameÚpre_init_kw_only_argsÚNLs%                                        r"   rn  rn  .  s*  € ö( .;Ð(Ñ)À€EæØ�‰ð 3ô		
ô :LØ˜}ó:Ñ6€KÐ6ð 
‡L�L�Ôà€DØ€LØÐð ÐØ˜TÐ"€KäˆØ�;�;Ø×$Ñ$ QÔ'à—F‘Fˆ	ØŸ™¨TÐ1÷ 
Ø�L‰L¤§¡Ð-×DÐ2Dð 	ð
 —7‘7ˆä  §¡¬GÓ4ˆÞ*¨q¯y©y×/C×/C‘VÈˆ
à�;‰;Ñ"¬:°a·k±kÄ9×+MÑ+MÜ! !§+¡+Ó.‰IàŸ™ˆIà�6‰6�U‹?ÞÜ$5¸¿¹¸	Ñ$AÐ!ØÑ(Ø—L‘LÙ1Ø%Ø-°!°J°<¸qÐ0AÑAØ*Ø%ó	ôð "×+Ñ+ð & i×&@Ñ&@ÀÇÁÓ&HÒIð —L‘LÙ"Ø%Ø-°!°J°<¸qÐ0AÑAØ*óôð 89·y±y×7HÑ7HÐ!Ð"3Ó4ØÑ&Ø—‘Ù-Ø!Ø% i [°
Ð;Ø&Ø!ó	ôð ×'Ñ'ð " )×"<Ñ"<¸Q¿V¹VÓ"DÓEð —‘ÙØ!Ø% i [°
Ð;Ø&óöð �Y‰YœgÒ%®kØ�J˜l¨9¨+°ZÐ@ˆCØ�y�yØ×#Ñ# CÕ(à—‘˜CÔ àÑ$Ø—‘Ù-Ø! 8¨^¸Yóôð ×'Ñ'ð " )×"<Ñ"<¸Q¿V¹VÓ"DÓEð —‘™Z¨	°8¸^ÓLÖMçØ�J˜hÐ'ˆCØ�y�yØ×#Ñ# CÕ(à—‘˜CÔ Ø�L‰L˜3˜x˜jÐ(8Ð9Ô:ä 1°Q·V±V°IÑ =ÐØÑ$Ø—‘ØÙ/Ø! 8¨^¸Yóñôð —‘˜WÔ%Ø—‘ØÙ/Ø!Ø)¨CÑ/°*Ñ<¸sÑBØ&Ø!ó	ñôð ×'Ñ'ð " )×"<Ñ"<¸Q¿V¹VÓ"DÒEð —‘Ø™Z¨	°8¸^ÓLÑLôð —‘˜WÔ%Ø—‘ØÙ Ø!Ø)¨CÑ/°*Ñ<¸sÑBØ&óñôð 45·9±9×3DÑ3DÐÐ/Ò0à�y�yØ×#Ñ# HÕ-à—‘˜HÔ%àÑ$Ø—‘Ù-Ø! 8¨^¸Yóôð ×'Ñ'ð " )×"<Ñ"<¸Q¿V¹VÓ"DÒEð —‘™Z¨	°8¸^ÓLÔMà�6‰6�T�>Ø�v‰vÑ! iÑ&7Ø()¯©�˜HÔ%ØÔ&¨9×+F×+FÒ+Fà(1×(CÑ(C�˜HÔ%ñk ön Ü'.Ð˜)Ñ$Ø�‰Ð:Ô;Û"ˆAØ*¨Q¯V©VÑ3ˆHØ! A§F¡FÑ*ˆIØ�L‰L˜4 ˜z¨°°¸7À1Ç6Á6À(È!ÐLÔMØ*+¯+©+Ð˜hÑ'Ø+,Ð˜iÓ(ñ #ö Ø�‰Ð1Ô2ö ÞÞØ$.Ô/@Ð.AÀÐ"J‘à$0Ô1BÐ0CÀ9Ð"M‘à %Ô&7Ð%8¸Ð@ˆOØ�‰�_Ô%ö Ø�x‰xÑB±%ÓBÓBˆà�‰Ð4°T°F¸!Ð<Ô=à�9‰9�T‹?€DØ€MÞàž4‘4 RÐ(¨¨D¯I©I°lÓ,CÐ+DÐEÑEˆØ $§	¡	ñ $OÁÔ#Nóò $O�Kð �-˜q  Ó.á#Nñó!
Ðð 	¦™°BÑ6ˆØÐ.Ñ.ˆæÖ*à-¨m¨_¸AÐ>ˆˆa‰ð 
€Bà��˜W T Fð +Þ€R‡W�WˆU„^ &Ð)ð *ð	ð 	Øðð ùòs   Û]	c                ó$   • U R                  S5      $ )zµ
The default __init__ parameter name for a field.

This performs private-name adjustment via leading-unscore stripping,
and is the default value of Attribute.alias if not provided.
r9  )Úlstripr  s    r"   rÊ   rÊ   2	  s   € ð �;‰;�sÓÐr%   c                  óp   • \ rS rSrSrSr          SS jrS r\SSS jj5       r	S r
S	 rS
 rS rSrg)rÆ   i=	  a6  
*Read-only* representation of an attribute.

.. warning::

   You should never instantiate this class yourself.

The class has *all* arguments of `attr.ib` (except for ``factory`` which is
only syntactic sugar for ``default=Factory(...)`` plus the following:

- ``name`` (`str`): The name of the attribute.
- ``alias`` (`str`): The __init__ parameter name of the attribute, after
  any explicit overrides and default private-attribute-name handling.
- ``inherited`` (`bool`): Whether or not that attribute has been inherited
  from a base class.
- ``eq_key`` and ``order_key`` (`typing.Callable` or `None`): The
  callables that are used for comparing and ordering objects by this
  attribute, respectively. These are set by passing a callable to
  `attr.ib`'s ``eq``, ``order``, or ``cmp`` arguments. See also
  :ref:`comparison customization <custom-comparison>`.

Instances of this class are frequently used for introspection purposes
like:

- `fields` returns a tuple of them.
- Validators get them passed as the first argument.
- The :ref:`field transformer <transform-fields>` hook receives a list of
  them.
- The ``alias`` property exposes the __init__ parameter name of the field,
  with any overrides and default private-attribute handling applied.


.. versionadded:: 20.1.0 *inherited*
.. versionadded:: 20.1.0 *on_setattr*
.. versionchanged:: 20.2.0 *inherited* is not taken into account for
    equality checks and hashing anymore.
.. versionadded:: 21.1.0 *eq_key* and *order_key*
.. versionadded:: 22.2.0 *alias*

For the full version history of the fields, see `attr.ib`.
)rž   r=   r>   r?   rF   rG   rH   rI   rA   rB   rD   r:   rC   rE   rš   rJ   rK   Nc                óú  • [        X^=(       d    UU=(       d    US5      u  pÞnn[        R                  U 5      nU" SU5        U" SU5        U" SU5        U" SU5        U" SU5        U" SU5        U" SU5        U" S	U5        U" S
U5        U" SU5        U" SU5        U" SU	(       a  [        R                  " [        U	5      5      O[        5        U" SU
5        U" SU5        U" SU5        U" SU5        U" SU5        g )NTrž   r=   r>   r?   rF   rG   rH   rI   rA   rB   rC   rD   r:   rE   rš   rJ   rK   )rL   rÈ   rÉ   ÚtypesÚMappingProxyTyper  Ú_EMPTY_METADATA_SINGLETON)r!   rž   r=   r>   r?   r@   rA   rB   rš   rD   r:   rC   rE   rF   rG   rH   rI   rJ   rK   Úbound_setattrs                       r"   r1  ÚAttribute.__init__~	  s  € ô* (BØ—˜2˜y×1¨E°4ó(
Ñ$ˆ�E˜9ô
 %×,Ñ,¨TÓ2ˆñ 	�f˜dÔ#Ù�i Ô)Ù�k 9Ô-Ù�f˜dÔ#Ù�d˜BÔÙ�h Ô'Ù�g˜uÔ%Ù�k 9Ô-Ù�f˜dÔ#Ù�f˜dÔ#Ù�k 9Ô-ÙØö ô ×&Ò&¤t¨H£~Ô6ä.ô	
ñ 	�f˜dÔ#Ù�i Ô)Ù�k 9Ô-Ù�l JÔ/Ù�g˜uÕ%r%   c                ó   • [         er5   )r   rï   s      r"   rî   ÚAttribute.__setattr__µ	  s   € Ü!Ð!r%   c                ó¨  • Uc  UR                   nOUR                   b  SU S3n[        U5      eU " UUR                  UR                  UR                  S UR
                  UR                  SUR                  UUR                  UR                  UR                  UR                  UR                  UR                  UR                  UR                  5      $ )Nz>Type annotation and type argument cannot both be present for 'z'.F)r:   rN   Ú_defaultÚ
_validatorr?   rA   rB   rD   rC   rE   rF   rG   rH   rI   rJ   rK   )r”   rž   rÕ   r:   rX   s        r"   rÇ   ÚAttribute.from_counting_attr¸	  s²   € ð ‰<Ø—7‘7‰DØ�W‰WÑ ØRÐSWÐRXÐXZÐ[ˆCÜ˜S“/Ð!ÙØØ�K‰KØ�M‰MØ�G‰GØØ�G‰GØ�G‰GØØ�K‰KØØ�L‰LØ�J‰JØ�E‰EØ�I‰IØ�H‰HØ�L‰LØ�M‰MØ�H‰Hó%
ð 	
r%   c                óp   • [         R                   " U 5      nUR                  UR                  5       5        U$ )zÚ
Copy *self* and apply *changes*.

This works similarly to `attrs.evolve` but that function does not work
with :class:`attrs.Attribute`.

It is mainly meant to be used for `transform-fields`.

.. versionadded:: 20.3.0
)ÚcopyÚ	_setattrsrÃ   )r!   rø   Únews      r"   rŸ   ÚAttribute.evolveÖ	  s(   € ô �iŠi˜‹oˆà�‰�g—m‘m“oÔ&àˆ
r%   c                óB   ^ • [        U 4S jT R                   5       5      $ )ú
Play nice with pickle.
c              3  ór   >#   • U  H,  nUS :w  a  [        TU5      O[        TR                  5      v •  M.     g7f)rD   N)r�   r  rD   ©rº   rž   r!   s     €r"   r¼   Ú)Attribute.__getstate__.<locals>.<genexpr>ì	  s4   øé € ð 
â&�ð $(¨:Ó#5ŒG�D˜$Ô¼4ÀÇÁÓ;NÔNÚ&ùs   ƒ47©rS   rR  r    s   `r"   r  ÚAttribute.__getstate__è	  s#   ø€ ô ô 
àŸšó
ó 
ð 	
r%   c                óN   • U R                  [        U R                  U5      5        g©rË  N)rÇ  r’  rR  ©r!   r“  s     r"   r  ÚAttribute.__setstate__ñ	  s   € ð 	�‰”s˜4Ÿ>™>¨5Ó1Õ2r%   c           	     óÊ   • [         R                  U 5      nU HH  u  p4US:w  a
  U" X45        M  U" UU(       a  [        R                  " [	        U5      5      O[
        5        MJ     g )NrD   )rÈ   rÉ   rº  r»  r  r¼  )r!   Úname_values_pairsr½  rž   rð   s        r"   rÇ  ÚAttribute._setattrs÷	  sU   € Ü$×,Ñ,¨TÓ2ˆÛ,‰KˆDØ�zÓ!Ù˜dÖ*áØö !ô ×.Ò.¬t°E«{Ô;ä6öò	 -r%   r   )
NNNFNNNNNNr5   )rž   rŒ   rÕ   rV   )r)   r*   r+   r,   r-   rR  r1  rî   r]  rÇ   rŸ   r  r  rÇ  r0   r   r%   r"   rÆ   rÆ   =	  sb   † ñ(ðX€Ið< ØØØØØØØØØô'5&òn"ð õ
ó ð
ò:ò$
ò3õr%   rÆ   rD   )rž   r=   r>   r?   r@   rF   rH   rA   rB   rš   rK   )rƒ   rš   c                  ó~   • \ rS rSrSrSr/ \" S S 5       5      Q\" SSSSSSS	SS	SSS	SS	SS
9P7rSr	S r
S rS rSrg)rV   i!
  a  
Intermediate representation of attributes that uses a counter to preserve
the order in which the attributes have been defined.

*Internal* data structure of the attrs library.  Running into is most
likely the result of a bug like a forgotten `@attr.s` decorator.
)rÂ  rÃ  rK   rC   r±   rF   rG   rA   rB   rE   rD   rJ   rH   rI   r?   r:   c              #  ój   #   • U  H)  n[        U[        U5      [        S SS SSSSS SS SS S9v •  M+     g 7f)NTF©rž   rK   r=   r>   r?   r@   rA   rB   rE   rF   rG   rH   rI   rš   rJ   )rÆ   rÊ   r   )rº   rž   s     r"   r¼   Ú_CountingAttr.<genexpr>=
  sR   é € ð 
ò$
�ô# ØÜ-¨dÓ3ÜØØØØØØØØØØØØöò"
ùs   ‚13)	r±   rÂ  r?   rF   rH   rA   rB   rJ   rK   rD   NTFrÚ  r   c                ó  • [         =R                  S-  sl        [         R                  U l        Xl        X l        Xpl        X0l        X°l        XÀl        XÐl	        Xàl
        XPl        X`l        X€l        X�l        X l        Xðl        UU l        g r¿   )rV   Úcls_counterr±   rÂ  rÃ  rC   r?   rF   rG   rH   rI   rA   rB   rD   r:   rE   rJ   rK   )r!   r=   r>   r?   r@   rA   rB   rC   rD   r:   rE   rF   rG   rH   rI   rJ   rK   s                    r"   r1  Ú_CountingAttr.__init__o
  so   € ô& 	×!Ò! QÑ&Õ!Ü$×0Ñ0ˆŒØŒØ#ŒØ"ŒØŒ	ØŒØŒØŒ
Ø"ŒØŒ	ØŒ	Ø ŒØŒ	ØŒØ$ŒØˆ�
r%   c                óf   • U R                   c  Xl         U$ [        U R                   U5      U l         U$ )zl
Decorator that adds *meth* to the list of validators.

Returns *meth* unchanged.

.. versionadded:: 17.1.0
)rÃ  rU   ©r!   rÓ  s     r"   r>   Ú_CountingAttr.validator”
  s3   € ð �?‰?Ñ"Ø"ŒOð ˆô # 4§?¡?°DÓ9ˆDŒOØˆr%   c                óV   • U R                   [        La  [        e[        USS9U l         U$ )z¶
Decorator that allows to set the default for an attribute.

Returns *meth* unchanged.

Raises:
    DefaultAlreadySetError: If default has been set before.

.. versionadded:: 17.1.0
T)r�  )rÂ  r   r   rP   rà  s     r"   r=   Ú_CountingAttr.default¢
  s)   € ð �=‰=¤Ò'Ü(Ð(ä °Ñ6ˆŒàˆr%   )r)   r*   r+   r,   r-   rR  rS   rÆ   r˜   rÝ  r1  r>   r=   r0   r   r%   r"   rV   rV   !
  s…   † ñð€Ið$0Ù	ñ 
ñ$
ó%
ó 

ð0ñ> 	ØØØØØØØØØØØØØØØñ	
ñ?0€Oðb €Kò#òJõr%   rV   c                  ó2   • \ rS rSrSrSrSS jrS rS rSr	g)	rP   i¸
  aÇ  
Stores a factory callable.

If passed as the default value to `attrs.field`, the factory is used to
generate a new value.

Args:
    factory (typing.Callable):
        A callable that takes either none or exactly one mandatory
        positional argument depending on *takes_self*.

    takes_self (bool):
        Pass the partially initialized instance that is being initialized
        as a positional argument.

.. versionadded:: 17.1.0  *takes_self*
©rW   r�  c                ó   • Xl         X l        g r5   rå  )r!   rW   r�  s      r"   r1  ÚFactory.__init__Í
  s   € ØŒØ$�r%   c                óB   ^ • [        U 4S jT R                   5       5      $ )rË  c              3  ó<   >#   • U  H  n[        TU5      v •  M     g 7fr5   r�  rÍ  s     €r"   r¼   Ú'Factory.__getstate__.<locals>.<genexpr>Õ
  s   øé € ÐD²^¨T”W˜T 4×(Ð(²^ùs   ƒrÏ  r    s   `r"   r  ÚFactory.__getstate__Ñ
  s   ø€ ô ÔD°T·^²^ÓDÓDÐDr%   c                óZ   • [        U R                  U5       H  u  p#[        XU5        M     grÒ  )r’  rR  rM  )r!   r“  rž   rð   s       r"   r  ÚFactory.__setstate__×
  s%   € ô ˜tŸ~™~¨uÖ5‰KˆDÜ�D Ö&ò 6r%   N)F)
r)   r*   r+   r,   r-   rR  r1  r  r  r0   r   r%   r"   rP   rP   ¸
  s   † ñð$ *€Iô%òEõ'r%   rP   )
rž   r=   r>   r?   r@   rF   rH   rA   rB   rš   c                  óV   • \ rS rSrSrSrSSS.S jr\SS j5       rSS jr	S	 r
S
 rSrg)r}  iò
  a1  
Stores a converter callable.

Allows for the wrapped converter to take additional arguments. The
arguments are passed in the order they are documented.

Args:
    converter (Callable): A callable that converts the passed value.

    takes_self (bool):
        Pass the partially initialized instance that is being initialized
        as a positional argument. (default: `False`)

    takes_field (bool):
        Pass the field definition (an :class:`Attribute`) into the
        converter as a positional argument. (default: `False`)

.. versionadded:: 24.1.0
)Ú__call__r   Ú_global_namerC   Útakes_fieldr�  F©r�  rñ  c               óô  ^ • UT l         UT l        UT l        [        U5      nUR	                  5       T l        T R                  (       d  T R                  (       d  U 4S jT l        OgT R                  (       a  T R                  (       d  U 4S jT l        O9T R                  (       d  T R                  (       a  U 4S jT l        OU 4S jT l        UR                  5       nUb  UT R                  R                  S'   g g )Nc                ó&   >• TR                  U 5      $ r5   ©rC   )rð   r9  Ú__r!   s      €r"   r´   Ú$Converter.__init__.<locals>.<lambda>  s   ø€ °·±ÀÔ1Fr%   c                ó&   >• TR                  X5      $ r5   rõ  )rð   Úinstancerö  r!   s      €r"   r´   r÷    s   ø€ ¸¿¹Øô9r%   c                ó&   >• TR                  X5      $ r5   rõ  )rð   rö  r¼  r!   s      €r"   r´   r÷    s   ø€ °T·^±^Øô6r%   c                ó(   >• TR                  XU5      $ r5   rõ  )rð   rù  r¼  r!   s      €r"   r´   r÷  #  s   ø€ ¸4¿>¹>Ø ô<r%   r£  )	rC   r�  rñ  r   Úget_first_param_typer   rï  Úget_return_typerˆ   )r!   rC   r�  rñ  ÚexÚrts   `     r"   r1  ÚConverter.__init__  s³   ø€ Ø"ˆŒØ$ˆŒØ&ˆÔä! )Ó,ˆØ!#×!8Ñ!8Ó!:ˆÔà—— 4×#3×#3ÜFˆD�MØ�_�_ T×%5×%5ôˆD�Mð —— T×%5×%5ôˆD�MôˆDŒMð ×ÑÓ!ˆØ‰>Ø68ˆD�M‰M×)Ñ)¨(Ò3ð r%   c                ó   • SU  3$ )zP
Return the name that a converter for an attribute name *attr_name*
would have.
Ú__attr_converter_r   )r   s    r"   rŸ  ÚConverter._get_global_name+  s   € ð # 9 +Ð.Ð.r%   c                óp  • U R                   (       d(  U R                  (       d  U R                  U5       SU S3$ U R                   (       a+  U R                  (       a  U R                  U5       SU SU S3$ U R                   (       a  U R                  U5       SU S3$ U R                  U5       SU SU S3$ )z¯
Return a string that calls the converter for an attribute name
*attr_name* and the value in variable named *value_var* according to
`self.takes_self` and `self.takes_field`.
rW  r  z, self, attr_dict['z'])z, self)z, attr_dict[')r�  rñ  rŸ  )r!   r   rz  s      r"   r  ÚConverter._fmt_converter_call3  s¶   € ð —— 4×#3×#3Ø×+Ñ+¨IÓ6Ð7°q¸¸À1ÐEÐEà�?�?˜t×/×/Ø×+Ñ+¨IÓ6Ð7°q¸¸ÐCVÐW`ÐVaÐadÐeÐeà�?�?Ø×+Ñ+¨IÓ6Ð7°q¸¸À7ÐKÐKà×'Ñ'¨	Ó2Ð3°1°Y°K¸}ÈYÈKÐWZÐ[Ð[r%   c                óJ   • U R                   U R                  U R                  S.$ )z`
Return a dict containing only converter and takes_self -- the rest gets
computed when loading.
©rC   r�  rñ  r  r    s    r"   r  ÚConverter.__getstate__D  s%   € ð Ÿ™ØŸ/™/Ø×+Ñ+ñ
ð 	
r%   c                ó(   • U R                   " S0 UD6  g)z
Load instance from state.
Nr   r  rÓ  s     r"   r  ÚConverter.__setstate__O  s   € ð 	�ŠÑ˜Ór%   )rï  r   rC   rñ  r�  N)r   rŒ   r£  rŒ   )r   rŒ   rz  rŒ   r£  rŒ   )r)   r*   r+   r,   r-   rR  r1  r^  rŸ  r  r  r  r0   r   r%   r"   r}  r}  ò
  s>   † ñð(€Ið 16À5õ 9ð6 ó/ó ð/ô\ò"	
õr%   r  c                ó  ^• [         R                  " SU 5      n [        U[        5      (       a  UnOC[        U[        [
        45      (       a  U Vs0 s H  of[        5       _M     nnOSn[        U5      eUR                  SS5      nUR                  SS5      n	UR                  SS5      n
0 mUb  TR                  U5        Ub  UTS'   U	b  U	TS'   U
b  U
TS'   [        R                  " X0 U4S j5      n[        R                  " [        [        5         [         R"                  " S5      R$                  R'                  S	S
5      Ul        SSS5        UR                  SS5      n[+        UUR'                  S5      UR'                  S5      S5      u  US'   US'   [-        SSU0UD6" U5      nUR/                  5        VVs0 s H   u  pïUR0                  c  M  XïR0                  _M"     snnUl        U$ s  snf ! , (       d  f       N²= fs  snnf )aš  
A quick way to create a new class called *name* with *attrs*.

.. note::

    ``make_class()`` is a thin wrapper around `attr.s`, not `attrs.define`
    which means that it doesn't come with some of the improved defaults.

    For example, if you want the same ``on_setattr`` behavior as in
    `attrs.define`, you have to pass the hooks yourself: ``make_class(...,
    on_setattr=setters.pipe(setters.convert, setters.validate)``

.. warning::

    It is *your* duty to ensure that the class name and the attribute names
    are valid identifiers. ``make_class()`` will *not* validate them for
    you.

Args:
    name (str): The name for the new class.

    attrs (list | dict):
        A list of names or a dictionary of mappings of names to `attr.ib`\
        s / `attrs.field`\ s.

        The order is deduced from the order of the names or attributes
        inside *attrs*.  Otherwise the order of the definition of the
        attributes is used.

    bases (tuple[type, ...]): Classes that the new class will subclass.

    class_body (dict):
        An optional dictionary of class attributes for the new class.

    attributes_arguments: Passed unmodified to `attr.s`.

Returns:
    type: A new class with *attrs*.

.. versionadded:: 17.1.0 *bases*
.. versionchanged:: 18.1.0 If *attrs* is ordered, the order is retained.
.. versionchanged:: 23.2.0 *class_body*
.. versionchanged:: 25.2.0 Class names can now be unicode.
ÚNFKCz(attrs argument must be a dict or a list.r  Nr  r1  c                ó&   >• U R                  T5      $ r5   )r7  )r|  r~   s    €r"   r´   Úmake_class.<locals>.<lambda>³  s   ø€ ¸¿	¹	À$¼r%   r
   r)   Ú__main__r@   rF   rH   TrË   r   )ÚunicodedataÚ	normalizerQ   r  rR   rS   rY   rM   Úpopr7  rº  Ú	new_classrI  rJ  rK  rN   ro  Ú	_getframeÚ	f_globalsr°   r*   rô  rÿ   rÃ   r:   rˆ   )rž   rƒ   ÚbasesÚ
class_bodyÚattributes_argumentsrx  r§   rX   rq  rs  Ú	user_initÚtype_r@   r”   rb  rc  r~   s                   @r"   Ú
make_classr  k  sï  ø€ ô` × Ò  ¨Ó.€Dä�%œ×ÑØ‰Ü	�EœD¤%˜=×	)Ñ	)Ù).Ó/ª A”v“x’K©ˆÐ/ˆà8ˆÜ˜‹nÐà�|‰|Ð0°$Ó7€HØ—‘Ð2°DÓ9€IØ—‘˜Z¨Ó.€Ià€DØÑØ�‰�JÔØÑØ%-ˆÐ!Ñ"ØÑØ&/ˆÐ"Ñ#ØÑØ$ˆˆZÑä�OŠO˜D¨Ô-GÓH€Eô 
×	Ò	œ^¬ZÕ	8ÜŸ=š=¨Ó+×5Ñ5×9Ñ9Ø˜
ó
ˆÔ÷ 
9ð ×
"Ñ
" 5¨$Ó
/€Cô 	"ØØ× Ñ  Ó&Ø× Ñ  Ó)Øó		ñØ˜TÑ"Ø˜WÑ%ô Ñ
8�xÐ
8Ð#7Ò
8¸Ó
?€Cð 'Ÿn™nÔ.ôÚ.‘d�a°!·&±&‹	ˆ�6‰6Š	Ñ.ò€CÔð €Jùò_ 0÷2 
9Õ	8üó&s   ÁG0Ä6G5Æ>HÇHÇ5
H)r%  r  c                  ó,   • \ rS rSrSr\" 5       rS rSrg)Ú_AndValidatoriÖ  z*
Compose many validators to a single one.
c                ó<   • U R                    H  nU" XU5        M     g r5   )Ú_validators)r!   rù   r»   rð   rc  s        r"   rï  Ú_AndValidator.__call__Þ  s   € Ø×!Ô!ˆAÙˆd˜%Ö ò "r%   r   N)	r)   r*   r+   r,   r-   rY   r  rï  r0   r   r%   r"   r  r  Ö  s   † ññ “(€Kõ!r%   r  c                 ó¦   • / nU  H6  nUR                  [        U[        5      (       a  UR                  OU/5        M8     [        [	        U5      5      $ )zø
A validator that composes multiple validators into one.

When called on a value, it runs all wrapped validators.

Args:
    validators (~collections.abc.Iterable[typing.Callable]):
        Arbitrary number of validators.

.. versionadded:: 17.1.0
)rá   rQ   r  r  rS   )Ú
validatorsr±  r>   s      r"   rU   rU   ã  sM   € ð €DÛˆ	Ø�‰ä˜)¤]×3Ñ3ð ×!Ò!à�ö	
ñ  ô œ˜t›Ó%Ð%r%   c                 óø  ^ • [        S T  5       5      nU(       a  U 4S jnOU 4S jnT (       d)  [        S5      nUR                  R                  X3S.5        O�[	        T S   5      R                  5       nU(       a  XBR                  S'   T S   n[        (       d!  [        U[        5      (       a  UR                  n[	        U5      R                  5       nU(       a  XbR                  S	'   U(       a  [        US
S
S9$ U$ )aa  
A converter that composes multiple converters into one.

When called on a value, it runs all wrapped converters, returning the
*last* value.

Type annotations will be inferred from the wrapped converters', if they
have any.

    converters (~collections.abc.Iterable[typing.Callable]):
        Arbitrary number of converters.

.. versionadded:: 20.1.0
c              3  óB   #   • U  H  n[        U[        5      v •  M     g 7fr5   ©rQ   r}  )rº   Úcs     r"   r¼   Úpipe.<locals>.<genexpr>
  s   é € ÐGºJ°qœ* Q¬	×2Ð2ºJùs   ‚c                óf   >• T H)  n[        U[        5      (       a	  U" XU5      OU" U 5      n M+     U $ r5   r%  )rß  rù   r¼  r&  Ú
converterss       €r"   Úpipe_converterÚpipe.<locals>.pipe_converter  s5   ø€ Û�ä+5°a¼×+CÑ+C‘A�c Ô'ÉÈ3Ëò ñ  ð
 ˆJr%   c                ó*   >• T H  nU" U 5      n M     U $ r5   r   )rß  r&  r)  s     €r"   r*  r+    s   ø€ Û�Ù˜“f’ñ  ð ˆJr%   ÚA)rß  r£  r   rß  re   r£  Trò  )rò  r	   rˆ   r7  r   rü  r   rQ   r}  rï  rý  )r)  Úreturn_instancer*  r-  ÚtÚlastrÿ  s   `      r"   rT   rT   ú  sÒ   ø€ ô  ÑG¹JÓGÓG€Oæö	õ	ö ä�C‹LˆØ×&Ñ&×-Ñ-°aÑ.EÕFô ! ¨A¡Ó/×DÑDÓFˆÞØ45×*Ñ*¨5Ñ1à˜"‰~ˆßŠ|¤
¨4´× ;Ñ ;Ø—=‘=ˆDô " $Ó'×7Ñ7Ó9ˆÞØ79×*Ñ*¨8Ñ4æÜ˜°DÀdÑKÐKØÐr%   )Nr“  )
r^   rŒ   r_   údict[str, Any] | Noner`   úMapping[str, object] | Nonera   rŒ   r£  r¤  r5   )
r^   rŒ   ra   rŒ   r_   r1  rm   r2  r£  zdict[str, Any])r{   rŒ   r|   z	list[str]r£  r:   )r£  z'tuple[list[Attribute], dict[str, type]])r£  r‚   )T)NNNNNNNFFTFFFFFNNFFNNNTN)r”   r:   r  rŒ   r£  rŒ   )
r”   r:   rƒ   r„   r&  r  r)  r  r£  útuple[str, dict])r”   r:   rƒ   r„   )rƒ   rR   r£  r3  )r£  r3  )NN)r£  útuple[str, dict, dict]r�  r�  )r   rŒ   rð   rŒ   r{  r  r£  rŒ   )r&  r  r%  r  r¥   r†   )rƒ   r„   r  r  r¡  r  r¢  r  rr  r  r£  r  r¤  r  r¥   r†   r*  r  rv  r  ru  r  r¥  rŒ   r£  r4  )rž   rŒ   r£  rŒ   )kÚ
__future__r   rB  rI  rÆ  r.   r  rZ  rj   ro  rº  r  Úcollections.abcr   r   Ú	functoolsr   Útypingr   r   r	   r“  r   r   r   r   r   r   r   r   r   Ú
exceptionsr   r   r   r   Úobjectrî   rÈ   rž  r�   rY  r»  r¼  rH  rT   r   r  r  ÚEnumr   r   Úintr2   rY   rc   rr   r€   r‚   r‘   r–   rª   r¬   rÙ   ræ   rñ   rô   rŸ   rü   rô  rL   rÿ  rƒ   rÿ   r  râ   r¥  r6  rÍ  rÎ  rÙ  rR  r{  r`  rö   rf  rk  r±  r|  r�  rƒ  r…  r‘  rn  rÊ   rÆ   rR  Ú_arž   rA   rV   rP   Ú_fr}  r  r  rU   )rž   r§   s   00r"   Ú<module>r?     s   ðõ #ã 
Û Û Û Û Û Û Û 
Û Û ç -Ý %ß +Ñ +÷ (Ñ '÷÷ ÷ó ð ×!Ñ!€Ø'Ð ðÐ ð )Ð à!×2Ò2°2Ó6Ð ñ ‹H€	à—l’l 7§?¡?°G×4DÑ4DÓEÐ ôˆt�y‰yô ð( ×
Ñ
€ðô(˜ô (ð" ØØ	ØØ	Ø	ØØ	ØØØØØ
ØØ
ôhð\ )-Øð	 Øð à ð ð &ð ð ð	 ð
 
õ ð$ +/ð	 Øð àð ð !ð ð (ð	 ð
 õ ôF1ô.$�*ô $ò0ò"'ð#à,ô#òB%ð8iEàôiEòX1òhò"ò7÷tG	ñ G	òTò8((ðX .2ôð6 Ø
ØØ	ØØ	Ø	Ø
ØØØØØØØØØ
ØØØØØØØô1`ðF 
€ðò/ôðEØ	ðEØ%ðEØ/3ðEØAEðEàôEôPò	ô"òJ5*ôpô"6#ôrò+ò\&ò:.ò$/ðB&ð ôB&ôJ3ð]Øð]Ø"ð]Ø48ð]ØENð]àô]ô)ð
WØð
WØ"ð
WØ48ð
WØENð
Wàô
Wð,/Øð,/Øð,/Ø.=ô,/ð^AØðAàðAð ðAð ð	Að
 ðAð ðAð ðAð #ðAð ðAð ðAð ðAð ðAð ôAôH÷Gñ Gðp ×#Ò#óò $ˆñ ØØØØØØØØ�jÑ ØØÙ% dÓ+ôñ $ñ€ñ" ÙÙ�) 2Ñ&ÙÓ6š"�Q§¡¨+Ñ 5�q™"Ñ6ññ Ó
=’b�ŸF�F‹1 q§v¡v°Ñ'<�1‘bÑ
=ñ€	÷Qñ Qñh ™	 -Ó0Ó1€÷$'ñ $'ðh ×!Ò!óò "ˆñ ØØØØØØØØØØôñ "ñ€ñ  ‘G™I g°RÑ8ÀÑCÈ2Ñ
N€÷añ añb ;óò ;ˆñ ØØØØØØØØØØôñ ;ñ€ñ  Ù‰I�i rÑ*°"Ñ5¸Rñ€	ð �y¨TôdñV ˆT˜tÑ$÷	!ð 	!ó %ð	!ò&ó.9ùògùò( 7ùâ
=ùòDùòns0   É#NÉ8NÊNÊN
Ê5N
ËN
ÌNÌ=N!