Ë
    [üàg˜y ã                  ó8  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlmZmZ d dlmZ d dlmZmZmZ ddlmZmZmZ ddlmZmZmZmZmZmZ dd	lm Z m!Z!m"Z"m#Z# e$jJ                  Z&d
Z'dZ(dZ) e
jT                  i «      Z+ e$«       Z, ejZ                  ej\                  ej^                  «      Z0 G d„ dejb                  «      Z2e2jf                  Z3	  G d„ de4«      Z5e3ddddddddddddddfd„Z6	 	 dR	 	 	 	 	 	 	 	 	 dSd„Z7	 dT	 	 	 	 	 	 	 	 	 dUd„Z8dVd„Z9 G d„ de«      Z:d„ Z;d„ Z<	 	 dWd„Z=d„ Z>	 	 dXd„Z?d„ Z@d„ ZAd „ ZBd!„ ZC G d"„ d#«      ZDd$„ ZEd%„ ZF	 dYd&„ZG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dZd'„ZHeHZI	 d(„ ZJd[d)„ZK	 	 	 	 	 	 	 	 	 	 d\d*„ZLd]d+„ZMd,„ ZNd^d-„ZOd.„ ZPdTd/„ZQd_d0„ZRd`d1„ZSd2„ ZTd3„ ZUd4„ Z/d5„ ZV	 	 dad6„ZWdbd7„ZX	 	 	 	 	 	 	 	 	 	 dcd9„ZYddd:„ZZ	 	 	 	 	 	 	 	 	 	 dcd;„Z[	 	 	 	 	 	 ded<„Z\	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dfd=„Z]dgd>„Z^ G d?„ d@«      Z_e_jÀ                  D � cg c]  }  e_| e3ddddd| dAk7  dd e^| «      ¬B«      ‘Œ  c} Za eM eQ eSe_ea¬C«      eaD �cg c]  }|jÄ                  dDk7  sŒ|‘Œ c}¬C«      eaD �cg c]!  }|jÆ                  sŒ|jÄ                  dDk7  sŒ |‘Œ# c}¬C«      Z_ G dE„ dF«      Zd eQ eSed«      «      Zd G dG„ dH«      ZeeejÀ                  D � cg c]  }  e_| e3dddddddd¬I«
      ‘Œ c} Zf eM eQ eSeeef¬C«      ef¬C«      ef¬C«      Ze G dJ„ d8«      ZgdKD � cg c]  }  e_| e3dddddddd¬I«
      ‘Œ c} Zf eM eQ eSegef¬C«      ef¬C«      ef¬C«      Zge$fdfdL„Zh eHdd¬M«       G dN„ dO«      «       ZidP„ ZjdQ„ Z-yc c} w c c}w c c}w c c} w c c} w )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                  ó>   — e Zd ZdZ ej
                  «       Zd„ Zd„ Zy)Ú_NothingaF  
    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                 ó   — y)NÚNOTHING© ©Úselfs    úH/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/attr/_make.pyÚ__repr__z_Nothing.__repr__J   s   € Øó    c                 ó   — y)NFr   r   s    r!   Ú__bool__z_Nothing.__bool__M   s   € Ør#   N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚenumÚautor   r"   r%   r   r#   r!   r   r   =   s    „ ñð ˆd�i‰i‹k€Gòór#   r   c                  ó(   — e Zd ZdZ ed«      dfd„Zy)Ú_CacheHashWrappera  
    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                ó
   — ||fS ©Nr   )r    Ú_none_constructorÚ_argss      r!   Ú
__reduce__z_CacheHashWrapper.__reduce__e   s   € Ø  %Ð'Ð'r#   )r&   r'   r(   r)   Útyper2   r   r#   r!   r-   r-   Y   s   „ ñ	ñ ,0°«:¸Rô (r#   r-   TFc                ó  — t        |||d«      \  }}}}|�|dur|durd}t        |«      ‚|	�8| t        urd}t        |«      ‚t	        |	«      sd}t        |«      ‚t        |	«      } |€i }t        |t        t        f«      rt        j                  |Ž }|rt        |t        t        f«      rt        |Ž }|rt        |t        t        f«      rt        |Ž }t        di d| “d|“d	|“d
d“d|“d|“d|“d|“d|“d|
“d|“d|“d|“d|“d|“d|“ŽS )a¿  
    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Úmetadatar3   Ú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)r6   r7   r8   r9   r:   r;   r=   r3   r<   Úfactoryr>   r?   rA   rC   rD   r@   rB   Úmsgs                     r!   ÚattribrR   i   s�  € ôn $>ØˆR�˜ó$Ñ €Bˆ��yð Ð˜D¨Ñ,°¸UÑ1BØFˆÜ˜‹nÐàÐØœ'Ñ!àOð ô ˜S“/Ð!Ü˜Ô Ø>ˆCÜ˜S“/Ð!Ü˜'Ó"ˆàÐØˆô �*œt¤U˜mÔ,Ü—\‘\ :Ð.ˆ
á”Z 	¬D´%¨=Ô9Ü˜)Ð$ˆ	á”Z 	¬D´%¨=Ô9Ü˜)Ð$ˆ	äò Ùðáðñ ðñ ð	ñ
 ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ  ð!ð r#   c                ó8   — t        | |d«      }t        |||«       y)z[
    Evaluate the script with the given global (globs) and local (locs)
    variables.
    ÚexecN)ÚcompileÚeval)ÚscriptÚglobsÚlocsÚfilenameÚbytecodes        r!   Ú_compile_and_evalr\   Ô   s   € ô �v˜x¨Ó0€HÜˆ�5˜$Õr#   c                óâ   — |€i n|}d}|}	 t        | «      d| j                  d«      |f}t        j                  j	                  ||«      }||k(  rn|dd › d|› d�}|dz  }ŒUt        | |||«       |S )zP
    Cache the script with _linecache_, compile it and return the _locals_.
    Nr
   Téÿÿÿÿú-ú>)ÚlenÚ
splitlinesÚ	linecacheÚcacheÚ
setdefaultr\   )	rW   rZ   rX   ÚlocalsrY   ÚcountÚbase_filenameÚlinecache_tupleÚold_vals	            r!   Ú_linecache_and_compilerk   â   s    € ð �‰2 V€Dð €EØ€MØ
ä�‹KØØ×Ñ˜dÓ#Øð	
ˆô —/‘/×,Ñ,¨X°ÓGˆØ�oÒ%Øà# C RÐ(Ð)¨¨5¨'°Ð3ˆØ�‰
ˆð ô �f˜e T¨8Ô4à€Kr#   c                ó€   — | › d�}i }t        |«      D ]  \  }}|fd„}t        |«      ||<   Œ t        |t        f|«      S )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                ó   — | |   S r/   r   )r    Úis     r!   Úgetterz&_make_attr_tuple_class.<locals>.getter  s   € Ø˜‘7ˆNr#   )Ú	enumerateÚpropertyr3   rL   )Úcls_nameÚ
attr_namesÚattr_class_nameÚbodyro   Ú	attr_namerp   s          r!   Ú_make_attr_tuple_classrx     sX   € ð "˜
 *Ð-€OØ€DÜ! *Ó-ò +‰ˆˆ9àó 	ô # 6Ó*ˆˆYŠð+ô �¤% ¨4Ó0Ð0r#   c                  ó,   — e Zd ZU ded<   ded<   ded<   y)Ú_Attributesr3   Úattrsúlist[Attribute]Ú
base_attrsúdict[str, type]Úbase_attrs_mapN)r&   r'   r(   Ú__annotations__r   r#   r!   rz   rz     s   … ØƒKØÓØ#Ô#r#   rz   c                ó�   — t        | «      } | j                  d«      r| j                  d«      r| dd } | j                  t        «      S )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
   r^   )ÚstrÚ
startswithÚendswithÚ_CLASSVAR_PREFIXES)Úannots    r!   Ú_is_class_varr‰   "  sE   € ô �‹J€Eð ×Ñ˜
Ô#¨¯©°zÔ(BØ�a˜�ˆà×ÑÔ.Ó/Ð/r#   c                ó   — || j                   v S )zR
    Check whether *cls* defines *attrib_name* (and doesn't just inherit it).
    )Ú__dict__)ÚclsÚattrib_names     r!   Ú_has_own_attributerŽ   3  s   € ð ˜#Ÿ,™,Ð&Ð&r#   c                óº  — g }i }t        | j                  dd «      D ]a  }t        |dg «      D ]O  }|j                  s|j                  |v rŒ|j                  d¬«      }|j                  |«       |||j                  <   ŒQ Œc g }t        «       }t        |«      D ]>  }|j                  |v rŒ|j                  d|«       |j                  |j                  «       Œ@ ||fS )zQ
    Collect attr.ibs from base classes of *cls*, except *taken_attr_names*.
    r
   r^   Ú__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Ô Ø$,ˆM˜!Ÿ&™&Ò!ñ	-ð-ð €HÜ‹5€DÜ�jÓ!ò ˆØ�6‰6�T‰>ØØ�‰˜˜1ÔØ�‰�—‘Õð	ð �]Ð"Ð"r#   c                ó  — g }i }| j                   dd D ]p  }t        |dg «      D ]^  }|j                  |v rŒ|j                  d¬«      }|j	                  |j                  «       |j                  |«       |||j                  <   Œ` Œr ||fS )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
   r^   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Ô Ø$,ˆM˜!Ÿ&™&Ò!ñ	-ð-ð �}Ð$Ð$r#   c                óV  ‡— | j                   Št        | «      }|�t        |j                  «       «      }�n|du rð‰j                  «       D ��	ch c]  \  }}	|	j                  t
        u r|’Œ }
}}	g }t        «       }|j                  «       D ]h  \  }}t        |«      rŒ|j                  |«       ‰j                  |t        «      }|j                  t
        urt        |«      }|j                  ||f«       Œj |
|z
  }|rQt        ddj                  t        |ˆfd„¬«      «      z   dz   «      ‚t        d„ ‰j                  «       D «       d„ ¬«      }t         j"                  }|D ��cg c]  \  }} ||||j                  |«      «      ‘Œ  }}}|r(t%        | |D �ch c]  }|j&                  ’Œ c}«      \  }}n't)        | |D �ch c]  }|j&                  ’Œ c}«      \  }}|r>|D �cg c]  }|j+                  d¬	«      ‘Œ }}|D �cg c]  }|j+                  d¬	«      ‘Œ }}||z   }|�t-         || |«      «      }d
}d„ |D «       D ]B  }|du r"|j.                  t        u rd|›�}t1        |«      ‚|d
u sŒ.|j.                  t        usŒAd}ŒD |D ]=  }|j2                  rŒt5        j7                  |«      dt9        |j&                  «      «       Œ? |D �cg c]  }|j&                  ‘Œ }}t;        | j<                  |«      }t?         ||«      ||«      S c c}	}w c c}}w c c}w c c}w c c}w c c}w c c}w )a3  
    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                ó:   •— ‰j                  | «      j                  S r/   )ÚgetÚcounter)ÚnÚcds    €r!   ú<lambda>z"_transform_attrs.<locals>.<lambda>   s   ø€ °b·f±f¸Q³i×6GÑ6G€ r#   )Úkeyú.c              3  óN   K  — | ]  \  }}|j                   t        u r||f–— Œ y ­wr/   )Ú	__class__rO   )Ú.0r–   Úattrs      r!   ú	<genexpr>z#_transform_attrs.<locals>.<genexpr>¦  s,   è ø€ ò á�D˜$Ø—>‘>¤]Ñ2ð �t”ñùs   ‚#%c                ó    — | d   j                   S ©Nr
   )r©   )Úes    r!   r¬   z"_transform_attrs.<locals>.<lambda>«  s   € ˜!˜A™$Ÿ,™,€ r#   )r>   Fc              3  ó\   K  — | ]$  }|j                   d usŒ|j                  d u sŒ!|–— Œ& y­w)FN)r;   r>   ©r±   rŸ   s     r!   r³   z#_transform_attrs.<locals>.<genexpr>Ë  s&   è ø€ ÒM�A !§&¡&°Ò"5¸!¿)¹)ÀuÒ:LŒaÑMùs   ‚,–,¥,zlNo mandatory attributes allowed after an attribute with a default value or factory.  Attribute in question: rD   ) r‹   r   rK   Úitemsr°   rO   r™   r‰   r›   r¨   r   rR   r˜   r   ÚjoinÚsortedÚ	AttributeÚfrom_counting_attrr¢   r–   r¤   r—   rL   r6   rG   rD   Ú_OBJ_SETATTRÚ__get__Ú_default_init_alias_forrx   r&   rz   )rŒ   ÚtheseÚauto_attribsr>   Úcollect_by_mroÚfield_transformerÚannsÚca_listr–   r²   Úca_namesÚannot_namesrw   r3   rŸ   ÚunannotatedÚfcaÚcaÚ	own_attrsr}   r�   r{   Úhad_defaultrQ   rt   Ú
AttrsClassr«   s                             @r!   Ú_transform_attrsrÏ   w  s:  ø€ ð 
�‰€BÜ˜CÓ €DàÐÜ�u—{‘{“}Ó%ŠØ	˜Ñ	ð !Ÿh™h›j÷
á��dØ�~‰~¤Ñ.ò ð
ˆñ 
ð
 ˆÜ“eˆØ#Ÿz™z›|ò 	+‰OˆI�tÜ˜TÔ"ØØ�O‰O˜IÔ&Ø—‘�y¤'Ó*ˆAà�{‰{¤-Ñ/Ü˜1“I�Ø�N‰N˜I q˜>Õ*ð	+ð  Ñ,ˆÙÜ+ØCØ—)‘)Ü˜;Ó,GÔHóñð ñ	óð ô ñà"$§(¡(£*ôñ
 'ô
ˆô ×
&Ñ
&€CàEL÷Ù4A°I¸r‰ˆI�r˜4Ÿ8™8 IÓ.Õ/ð€Iñ ñ Ü$7Ø )Ö,˜Q�!—&“&Ò,ó%
Ñ!ˆ
‘Mô %?Ø )Ö,˜Q�!—&“&Ò,ó%
Ñ!ˆ
�Mñ Ø5>Ö?°�Q—X‘X d�XÕ+Ð?ˆ	Ð?Ø6@ÖA°�a—h‘h t�hÕ,ÐAˆ
Ð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ä× Ñ  Ó# GÔ-DÀQÇVÁVÓ-LÕMðNð #(Ö(˜Q�!—&“&Ð(€JÐ(Ü'¨¯©°jÓA€Jä‘z %Ó(¨*°mÓDÐDùóm
ùóJùò -ùò -ùò @ùÚAùò> )s*   ÁLÅ"#LÆL
Æ<L
ÇLÇ>L!ËL&c                ó  — g d¢}|�|j                  d«       n|j                  g d¢«       |j                  ddg«       t        |d«      }| t        j                  |dœ}t        dj                  |«      ||d	|i¬
«      d   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)rf   Ú__getattr__)r˜   ÚextendÚ_generate_unique_filenamer¾   r¿   rk   rº   )rÑ   rÓ   rŒ   ÚlinesÚunique_filenameÚglobs         r!   Ú_make_cached_property_getattrrÜ   ã  sŸ   € ò€Eð Ð#Ø�‰Ø:õ	
ð 	�‰ò	ô	
ð 
‡L�Là$Ø)ð	
ôô 0°°YÓ?€Oð /Ü+×3Ñ3Ø,ñ€Dô "Ø�	‰	�%Ó˜/¨4¸À¸ôàñð r#   c                óf   — t        | t        «      r|dv rt        j                  | ||«       yt        ‚)z4
    Attached to frozen classes as __setattr__.
    )Ú	__cause__Ú__context__Ú__traceback__Ú__suppress_context__Ú	__notes__N)rJ   ÚBaseExceptionÚ__setattr__r   ©r    r–   Úvalues      r!   Ú_frozen_setattrsrç     s7   € ô �$œÔ&¨4ð 4ñ ,ô 	×!Ñ! $¨¨eÔ4Øä
Ðr#   c                ód   — t        | t        «      r|dv rt        j                  | |«       yt        ‚)z4
    Attached to frozen classes as __delattr__.
    )râ   N)rJ   rã   Ú__delattr__r   )r    r–   s     r!   Ú_frozen_delattrsrê   (  s.   € ô �$œÔ&¨4°>Ñ+AÜ×!Ñ! $¨Ô-Øä
Ðr#   c                 ó  — 	 | \  }|j                  }t	        |«      }|D ];  }|j
                  sŒ|j                  }|j                  }||vsŒ-t        ||«      ||<   Œ=  |di |¤ŽS # t         $ r dt        | «      › d�}t        |«      d‚w xY w)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   )	rG   ra   rF   r°   Úfieldsr;   r–   rD   r•   )	ÚargsÚchangesÚinstrQ   rŒ   r{   rŸ   rw   Ú	init_names	            r!   r—   r—   3  s©   € ðJ'Ø‰ˆð �.‰.€CÜ�3‹K€EØò :ˆØ�vŠvØØ—F‘Fˆ	Ø—G‘Gˆ	Ø˜GÒ#Ü!(¨¨yÓ!9ˆG�IÒð:ñ ‰>�‰>Ðøô! ò 'à8¼¸T»¸À;ÐOð 	ô ˜‹n $Ð&ð	'ús   ‚A% Á%%B
c                  ó˜   — e Zd ZdZdZ	 	 dd„Zd„ Zdd„Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zdd„Zy)Ú_ClassBuilderz(
    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                óx  — t        ||||||«      \  }}}|| _        |rt        |j                  «      ni | _        || _        |D �ch c]  }|j                  ’Œ c}| _        || _        t        d„ |D «       «      | _
        || _        || _        || _        |	| _        t        t!        |dd«      «      | _        d| _        | j"                  r>|j&                  }t)        j*                  |«      }t-        |j.                  «      dkD  | _        t        t!        |dd«      «      | _        t        |«       | _        |
| _        || _        || _        d| _        | j
                  | j                  d<   |r.t<        | j                  d<   t>        | j                  d<   d	| _        n“|t@        tB        jD                  tB        jF                  fv rldx}}|D ]%  }|jH                  �d	}|jJ                  �d	}|sŒ"|sŒ% n |t@        k(  r|s|r*|tB        jD                  k(  r|r|tB        jF                  k(  r	|sd | _        |r-| jM                  «       \  | j                  d
<   | j                  d<   g | _'        d| _(        tS        | j                  d«      rtS        | j                  d«      s| jT                  | _+        y | jX                  | _+        y c c}w )Nc              3  ó4   K  — | ]  }|j                   –— Œ y ­wr/   ©r–   r¸   s     r!   r³   z)_ClassBuilder.__init__.<locals>.<genexpr>©  s   è ø€ Ò 7¨A §¥Ñ 7ùs   ‚Ú__attrs_pre_init__Fr
   Ú__attrs_post_init__r�   rä   ré   TÚ__getstate__Ú__setstate__r'   r(   )-rÏ   rÕ   Údictr‹   rù   rõ   r–   r÷   rö   rL   rô   r  rû   r  rø   Úboolr•   rþ   r  r
  ÚinspectÚ	signaturera   Ú
parametersrý   rú   rÿ   r   rü   r  rç   rê   Ú_DEFAULT_ON_SETATTRr   ÚvalidateÚconvertr7   r<   Ú_make_getstate_setstater  r  ÚhasattrÚ_add_method_dunders_saferó   Ú_add_method_dunders_unsafe)r    rŒ   rÁ   ÚslotsÚfrozenÚweakref_slotÚgetstate_setstaterÂ   r>   Ú
cache_hashÚis_excrÃ   rC   Úhas_custom_setattrrÄ   r{   r}   Úbase_maprŸ   Úpre_init_funcÚpre_init_signatureÚhas_validatorÚhas_converters                          r!   Ú__init__z_ClassBuilder.__init__Š  sš  € ô" '7ØØØØØØó'
Ñ#ˆˆz˜8ð ˆŒ	Ù/4œ˜cŸl™lÔ+¸"ˆŒØˆŒØ,6Ö7 q˜AŸF›FÒ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
ð (,×'DÑ'DˆDÕ$à'+×'FÑ'FˆDÕ$ùòY 8s   ÁJ7c                ó6   — d| j                   j                  › d�S )Nz<_ClassBuilder(cls=z)>)rÕ   r&   r   s    r!   r"   z_ClassBuilder.__repr__õ  s   € Ø$ T§Y¡Y×%7Ñ%7Ð$8¸Ð;Ð;r#   c                óH  — dj                  | j                  D �cg c]  }|d   ‘Œ	 c}«      }i }| j                  D ]  \  }}}|j                  |«       Œ t        |t	        | j
                  d«      |«      }| j                  D ]  \  }}} || j                  |«       Œ yc c}w )z=
        Evaluate any registered snippets in one go.
        rÔ   r   ÚmethodsN)rº   r  Úupdaterk   rØ   rÕ   rù   )r    ÚsnippetrW   rX   Ú_Úsnippet_globsrY   Úhooks           r!   Ú_eval_snippetsz_ClassBuilder._eval_snippetsø  s¥   € ð —‘°d×6KÑ6KÖL¨7˜G A›JÒLÓMˆØˆØ#'×#8Ñ#8ò 	(ÑˆAˆ}˜aØ�L‰L˜Õ'ð	(ô &ØÜ% d§i¡i°Ó;Øó
ˆð ×/Ñ/ò 	'‰JˆAˆq�$Ù�—‘ Õ&ñ	'ùò Ms   šBc                ó  — | j                  «        | j                  du r| j                  «       }n+| j                  «       }t        rt        j                  |«      }t        |dd«      rd|j                  vr|j                  «        |S )zƒ
        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‹   r1  )r    rŒ   s     r!   Úbuild_classz_ClassBuilder.build_class
  sw   € ð 	×ÑÔØ�;‰;˜$ÑØ×*Ñ*Ó,‰Cà×,Ñ,Ó.ˆCÝÜ×0Ñ0°Ó5�ô
 �CÐ2°DÔ9Ø)°·±Ñ=à×'Ñ'Ô)àˆ
r#   c                óê  — | j                   }| j                  }| j                  r\| j                  D ]M  }||vsŒt	        ||t
        «      t
        usŒ t        j                  t        «      5  t        ||«       ddd«       ŒO | j                  j                  «       D ]  \  }}t        |||«       Œ | j                  s+t	        |dd«      rd|_        | j                  st         |_        |S # 1 sw Y   ŒÁxY w)zA
        Apply accumulated methods and return the class.
        NÚ__attrs_own_setattr__F)rÕ   r÷   rú   rô   r•   Ú	_SENTINELÚ
contextlibÚsuppressÚAttributeErrorÚdelattrrù   r¹   Úsetattrr  r8  rü   r¾   rä   )r    rŒ   Ú
base_namesr–   ræ   s        r!   r3  z#_ClassBuilder._patch_original_class"  sì   € ð �i‰iˆØ×%Ñ%ˆ
ð ×ÒØ×(Ñ(ò 	+�à 
Ò*Ü  T¬9Ó5¼YÒFô
 $×,Ñ,¬^Ó<ñ +Ü  TÔ*÷+ð +ð	+ð  Ÿ>™>×/Ñ/Ó1ò 	&‰KˆD�%Ü�C˜˜uÕ%ð	&ð
 ×&Ò&¬7ØÐ(¨%ô,
ð ).ˆCÔ%à×+Ò+Ü".�”àˆ
÷#+ð +ús   Á*C)Ã)C2	c                ó´  — | j                   j                  «       D ��ci c]&  \  }}|g t        | j                  «      ¢d‘d‘­vr||“Œ( }}}| j                  sSd|d<   | j
                  sB| j                  j                  D ])  }|j                  j                  dd«      sŒ t        |d<    n i }d}| j                  j                  dd D ]U  }|j                  j                  dd«      �d	}|j                  t        |d
g «      D �ci c]  }|t        ||«      “Œ c}«       ŒW t        | j                  «      }| j                  }	| j                   r$dt        | j                  d
d«      vrd|	vr|s|	dz  }	|j                  «       D ��
ci c]"  \  }}
t#        |
t$        «      r||
j&                  “Œ$ }}}
g }|rÆt)        | j                  «      }|j                  «       D ]`  \  }}|	|fz  }	||= |j+                  |«       t-        j.                  |«      j0                  }|t,        j2                  j4                  usŒ\|||<   Œb |j                  d«      }|�|j+                  |«       t7        ||| j                  «      |d<   |	D �cg c]	  }||vsŒ|‘Œ }}|j                  «       D ��ci c]  \  }}||v r||“Œ }}}|D �cg c]	  }||vsŒ|‘Œ }}|j                  |«       | j8                  r|j+                  t:        «       t        |«      |d
<   | j                  j<                  |d<    t?        | j                  «      | j                  j@                  | j                  j                  |«      }tC        jD                  |j                  jG                  «       |«      D ]’  }t#        |tH        tJ        f«      rt        |jL                  dd«      }n5t#        |tN        «      rt        |jP                  dd«      }nt        |dd«      }|sŒi|D ]%  }	 |jR                  | j                  u }|sŒ||_)        Œ' Œ” |S c c}}w c c}w c c}
}w c c}w c c}}w c c}w # tT        $ r Y ŒXw xY w)zL
        Build and return a new class with a `__slots__` attribute.
        r‹   Ú__weakref__Fr8  rä   r
   r^   NTÚ	__slots__r   )rA  rÖ   r(   Ú__closure__)+rù   r¹   rL   rô   r  rü   rÕ   Ú	__bases__r‹   r¨   r¾   r”   r*  r•   r™   r÷   r  rJ   r   Úfuncr   r˜   r  r  Úreturn_annotationÚ	ParameterÚemptyrÜ   rø   Ú_HASH_CACHE_FIELDr(   r3   r&   Ú	itertoolsÚchainÚvaluesÚclassmethodÚstaticmethodÚ__func__rr   ÚfgetÚcell_contentsrG   )r    ÚkÚvr«   rž   Úexisting_slotsÚweakref_inheritedr–   r?  ÚnamesÚcached_proprÑ   Ú&additional_closure_functions_to_updateÚclass_annotationsrE  Ú
annotationrÓ   Ú
slot_namesÚslotÚslot_descriptorÚreused_slotsrŒ   ÚitemÚclosure_cellsÚcellÚmatchs                             r!   r2  z!_ClassBuilder._create_slots_classF  st  € ð Ÿ™×,Ñ,Ó.÷
á��1ØÐMœ% × 0Ñ 0Ó1ÐM°:ÐM¸}ÑMÑMð ˆq‰Dð
ˆñ 
ð ×&Ò&Ø*/ˆBÐ&Ñ'à×+Ò+Ø $§	¡	× 3Ñ 3ò �HØ×(Ñ(×,Ñ,Ð-DÀeÕLÜ,8˜˜=Ñ)Ùðð ˆØ!ÐØŸ	™	×)Ñ)¨!¨BÐ/ò 	ˆHØ× Ñ ×$Ñ$ ]°DÓ9ÐEØ$(Ð!Ø×!Ñ!ô !(¨°+¸rÓ Böàð œ' (¨DÓ1Ñ1òõð	ô ˜×)Ñ)Ó*ˆ
à× Ñ ˆà×ÒØ¤W¨T¯Y©Y¸ÀRÓ%HÑHØ UÑ*Ù%àÐ%Ñ%ˆEð &(§X¡X£Z÷
á!��kÜ˜+¤Ô7ð �+×"Ñ"Ñ"ð
Ðñ 
ð 24Ð.ÙÜ 0°·±Ó ;ÐØ/×5Ñ5Ó7ò 9‘
��dà˜$˜Ñ �à�t�HØ6×=Ñ=¸dÔCÜ$×.Ñ.¨tÓ4×FÑF�
Ø¤W×%6Ñ%6×%<Ñ%<Ò<Ø.8Ð% dÒ+ð9ð  "Ÿv™v mÓ4ÐØÐ+Ø6×=Ñ=Ð>NÔOä =Ø!Ð#3°T·Y±Yó!ˆBˆ}Ñð (-ÖG˜t°¸JÒ0F’dÐGˆ
ÐGð *8×)=Ñ)=Ó)?÷
á%��oØ�zÑ!ð �/Ñ!ð
ˆñ 
ð
 (2ÖN˜t°TÀÒ5M’dÐNˆ
ÐNØ
�	‰	�,ÔØ×ÒØ×ÑÔ/Ô0ä 
Ó+ˆˆ;‰à!ŸY™Y×3Ñ3ˆˆ>Ñð Œd�4—9‘9‹o˜dŸi™i×0Ñ0°$·)±)×2EÑ2EÀrÓJˆô —O‘OØ�L‰L×ÑÓ!Ð#Ió
ò 	1ˆDô ˜$¤¬lÐ ;Ô<ô !(¨¯©°}ÀdÓ K‘Ü˜D¤(Ô+ô !(¨¯	©	°=À$Ó G‘ä '¨¨m¸TÓ B�á ØØ%ò 1�ð1Ø ×.Ñ.°$·)±)Ð;�Eò
 Ø-0˜Õ*ñ1ð!	1ð2 ˆ
ùóK
ùò>ùó"
ùò> Hùó
ùò
 OøôJ "ò áðúsA   ž+P*ÄP0
Æ'P5É<	P;ÊP;ÊQ Ê7	QËQÐQÑ	QÑQc                óŽ   ‡ — t        ‰ j                  |«      \  }}ˆ fd„}‰ j                  j                  |||f«       d‰ _        ‰ S )Nc                ó4   •— ‰j                  |d   «      | d<   y )Nr"   ©ró   ©Úcls_dictrX   r    s     €r!   Ú_attach_reprz,_ClassBuilder.add_repr.<locals>._attach_reprÔ  s   ø€ Ø#'×#;Ñ#;¸EÀ*Ñ<MÓ#NˆH�ZÒ r#   T)Ú_make_repr_scriptrõ   r  r˜   r  )r    ÚnsrW   rX   rh  s   `    r!   Úadd_reprz_ClassBuilder.add_reprÑ  sG   ø€ Ü)¨$¯+©+°rÓ:‰ˆ�ô	Oð 	×Ñ×$Ñ$ f¨e°\Ð%BÔCØˆÔØˆr#   c                óz   — | j                   sd}t        |«      ‚d„ }| j                  |«      | j                  d<   | S )Nz3__str__ can only be generated if a __repr__ exists.c                ó"   — | j                  «       S r/   ©r"   r   s    r!   Ú__str__z&_ClassBuilder.add_str.<locals>.__str__à  s   € Ø—=‘=“?Ð"r#   ro  )r  rG   ró   rù   )r    rQ   ro  s      r!   Úadd_strz_ClassBuilder.add_strÛ  s?   € Ø×ÒØGˆCÜ˜S“/Ð!ò	#ð %)×$<Ñ$<¸WÓ$Eˆ�‰�yÑ!Øˆr#   c                ót   ‡‡— t        d„ | j                  D «       «      Šˆfd„}| j                  Šˆˆfd„}||fS )zF
        Create custom __setstate__ and __getstate__ methods.
        c              3  ó,   K  — | ]  }|d k7  sŒ	|–— Œ y­w)rA  Nr   )r±   Úans     r!   r³   z8_ClassBuilder._make_getstate_setstate.<locals>.<genexpr>ë  s   è ø€ ò !
Ø¨R°=Ó-@ŒBñ!
ùs   ‚
�c                óD   •— ‰D �ci c]  }|t        | |«      “Œ c}S c c}w )ú9
            Automatically created by attrs.
            ©r•   )r    r–   Ústate_attr_namess     €r!   Úslots_getstatez=_ClassBuilder._make_getstate_setstate.<locals>.slots_getstateï  s&   ø€ ð ;KÖK°$�Dœ' $¨Ó-Ñ-ÒKÐKùÒKs   †c                óÜ   •— t         j                  | «      }t        |t        «      rt	        ‰|«      D ]  \  }} |||«       Œ n‰D ]  }||v sŒ ||||   «       Œ ‰r |t
        d«       yy)ru  N)r¾   r¿   rJ   rL   ÚziprI  )r    ÚstateÚ_ClassBuilder__bound_setattrr–   ræ   Úhash_caching_enabledrw  s        €€r!   Úslots_setstatez=_ClassBuilder._make_getstate_setstate.<locals>.slots_setstate÷  s�   ø€ ô +×2Ñ2°4Ó8ˆOÜ˜%¤Ô'ô $'Ð'7¸Ó#?ò 1‘K�D˜%Ù# D¨%Õ0ñ1ð -ò ;�DØ˜u’}Ù'¨¨e°D©kÕ:ð;ñ $ÙÔ 1°4Õ8ð $r#   )rL   rô   rø   )r    rx  r~  r}  rw  s      @@r!   r  z%_ClassBuilder._make_getstate_setstateæ  sI   ù€ ô
 !ñ !
Ø×)Ñ)ô!
ó 
Ðô	Lð  $×/Ñ/Ðõ	9ð, ˜~Ð-Ð-r#   c                ó$   — d | j                   d<   | S ©NÚ__hash__)rù   r   s    r!   Úmake_unhashablez_ClassBuilder.make_unhashable  s   € Ø%)ˆ�‰�zÑ"Øˆr#   c                óÄ   ‡ — t        ‰ j                  ‰ j                  ‰ j                  ‰ j                  ¬«      \  }}dˆ fd„}‰ j
                  j                  |||f«       ‰ S )N©r  r  c                ó4   •— ‰j                  |d   «      | d<   y r€  re  )rg  rY   r    s     €r!   Úattach_hashz+_ClassBuilder.add_hash.<locals>.attach_hash  s   ø€ Ø#'×#;Ñ#;¸DÀÑ<LÓ#MˆH�ZÒ r#   )rg  r  rY   r  ÚreturnÚNone)Ú_make_hash_scriptrÕ   rõ   rû   rø   r  r˜   )r    rW   rX   r†  s   `   r!   Úadd_hashz_ClassBuilder.add_hash  sW   ø€ Ü)Ø�I‰IØ�K‰KØ—<‘<Ø×'Ñ'ô	
‰ˆ�õ	Nð 	×Ñ×$Ñ$ f¨e°[Ð%AÔBàˆr#   c                ód  ‡ ‡— t        ‰ j                  ‰ j                  ‰ j                  ‰ j                  ‰ j
                  ‰ j                  ‰ j                  ‰ j                  ‰ j                  ‰ j                  ‰ j                  d¬«      \  }}Šˆˆ fd„}‰ j                  j                  |||f«       ‰ S )NF©Ú
attrs_initc                óF   •— |d   }‰|_         ‰j                  |«      | d<   y )Nr&  ©r€   ró   ©rg  rX   r;   r   r    s      €€r!   Ú_attach_initz,_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    rW   rX   r‘  r   s   `   @r!   Úadd_initz_ClassBuilder.add_init"  s˜   ù€ Ü%6Ø�I‰IØ�K‰KØ×ÑØ×#Ñ#Ø×ÑØ�L‰LØ�K‰KØ×ÑØ×ÑØ�L‰LØ×ÑØô&
Ñ"ˆ��{õ	Bð
 	×Ñ×$Ñ$ f¨e°\Ð%BÔCàˆr#   c                óD   — | j                  d„ «      | j                  d<   | S )Nc                ó   — t        | fi |¤ŽS r/   )r—   )r    rî   s     r!   r¬   z+_ClassBuilder.add_replace.<locals>.<lambda>=  s   € ¤F¨4Ñ$;°7Ñ$;€ r#   Ú__replace__)ró   rù   r   s    r!   Úadd_replacez_ClassBuilder.add_replace;  s%   € Ø(,×(@Ñ(@Ù;ó)
ˆ�‰�}Ñ%ð ˆr#   c                óV   — t        d„ | j                  D «       «      | j                  d<   y )Nc              3  ód   K  — | ](  }|j                   r|j                  s|j                  –— Œ* y ­wr/   )r;   r>   r–   )r±   Úfields     r!   r³   z/_ClassBuilder.add_match_args.<locals>.<genexpr>B  s)   è ø€ ò 1
àØ�zŠz %§-¢-ð �J�Jñ1
ùs   ‚.0Ú__match_args__)rL   rõ   rù   r   s    r!   Úadd_match_argsz_ClassBuilder.add_match_argsA  s'   € Ü+0ñ 1
àŸ™ô1
ó ,
ˆ�‰Ð'Ò(r#   c                ód  ‡ ‡— t        ‰ j                  ‰ j                  ‰ j                  ‰ j                  ‰ j
                  ‰ j                  ‰ j                  ‰ j                  ‰ j                  ‰ j                  ‰ j                  d¬«      \  }}Šˆˆ fd„}‰ j                  j                  |||f«       ‰ S )NTrŒ  c                óF   •— |d   }‰|_         ‰j                  |«      | d<   y )NÚ__attrs_init__r�  r�  s      €€r!   Ú_attach_attrs_initz8_ClassBuilder.add_attrs_init.<locals>._attach_attrs_initX  s,   ø€ ØÐ)Ñ*ˆDØ#.ˆDÔ Ø)-×)AÑ)AÀ$Ó)GˆHÐ%Ò&r#   r’  )r    rW   rX   r¡  r   s   `   @r!   Úadd_attrs_initz_ClassBuilder.add_attrs_initH  s™   ù€ Ü%6Ø�I‰IØ�K‰KØ×ÑØ×#Ñ#Ø×ÑØ�L‰LØ�K‰KØ×ÑØ×ÑØ�L‰LØ×ÑØô&
Ñ"ˆ��{õ	Hð
 	×Ñ×$Ñ$ f¨eÐ5GÐ%HÔIàˆr#   c                ó¨   ‡ — ‰ j                   }t        ‰ j                  «      \  }}ˆ fd„}‰ j                  j	                  |||f«       t
        |d<   ‰ S )Nc                ó4   •— ‰j                  |d   «      | d<   y )NÚ__eq__re  rf  s     €r!   Ú
_attach_eqz(_ClassBuilder.add_eq.<locals>._attach_eqf  s   ø€ Ø!%×!9Ñ!9¸%À¹/Ó!JˆH�XÒr#   Ú__ne__)rù   Ú_make_eq_scriptrõ   r  r˜   r§  )r    r«   rW   rX   r¦  s   `    r!   Úadd_eqz_ClassBuilder.add_eqa  sO   ø€ Ø�^‰^ˆä'¨¯©Ó4‰ˆ�ô	Kð 	×Ñ×$Ñ$ f¨e°ZÐ%@ÔAäˆˆ8‰àˆr#   c                ó”   ‡ — ‰ j                   }ˆ fd„t        ‰ j                  ‰ j                  «      D «       \  |d<   |d<   |d<   |d<   ‰ S )Nc              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr/   re  )r±   Úmethr    s     €r!   r³   z*_ClassBuilder.add_order.<locals>.<genexpr>r  s&   øè ø€ ò B
àð ×$Ñ$ T×*ñB
ùs   ƒÚ__lt__Ú__le__Ú__gt__Ú__ge__)rù   Ú_make_orderrÕ   rõ   )r    r«   s   ` r!   Ú	add_orderz_ClassBuilder.add_ordero  sL   ø€ Ø�^‰^ˆóB
ä# D§I¡I¨t¯{©{Ó;ôB
Ñ>ˆˆ8‰�b˜‘l B x¡L°"°X±,ð
 ˆr#   c                ó\  ‡— i Š| j                   D ]C  }|j                  xs | j                  }|sŒ |t        j                  usŒ3||f‰|j
                  <   ŒE ‰s| S | j                  rd}t        |«      ‚ˆfd„}d| j                  d<   | j                  |«      | j                  d<   d| _
        | S )Nz7Can't combine custom __setattr__ with on_setattr hooks.c                óh   •— 	 ‰|   \  }} || ||«      }t        | ||«       y # t         $ r |}Y Œw xY wr/   )ÚKeyErrorr¾   )r    r–   ÚvalrŸ   r.  ÚnvalÚsa_attrss         €r!   rä   z._ClassBuilder.add_setattr.<locals>.__setattr__‰  sG   ø€ ð*Ø" 4™.‘��4ñ ˜D ! SÓ)�ä˜˜t TÕ*øô ò Ø’ðús   ƒ# £1°1Tr8  rä   )rõ   rC   r   r   ÚNO_OPr–   rü   rG   rù   ró   r  )r    rŸ   rC   rQ   rä   r¸  s        @r!   Úadd_setattrz_ClassBuilder.add_setattry  s­   ø€ ØˆØ—‘ò 	1ˆAØŸ™Ò9¨×)9Ñ)9ˆJÚ˜j´·±Ò=Ø#$ j =�˜Ÿ™Ò ð	1ñ
 ØˆKà×#Ò#àKˆCÜ˜S“/Ð!ô	+ð 37ˆ�‰Ð.Ñ/Ø(,×(@Ñ(@ÀÓ(Mˆ�‰�}Ñ%Ø"&ˆÔàˆr#   c                óÎ   — | j                   j                  |_        | j                   j                  › d|j                  › �|_        d| j                   j                  › d�|_        |S )z@
        Add __module__ and __qualname__ to a *method*.
        r®   ú$Method generated by attrs for class )rÕ   r'   r(   r&   r)   ©r    Úmethods     r!   r  z(_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                óä  — t        j                  t        «      5  | j                  j                  |_        ddd«       t        j                  t        «      5  | j                  j
                  › d|j                  › �|_        ddd«       t        j                  t        «      5  d| j                  j
                  › d�|_        ddd«       |S # 1 sw Y   Œ˜xY w# 1 sw Y   ŒXxY w# 1 sw Y   |S xY w)zL
        Add __module__ and __qualname__ to a *method* if possible.
        Nr®   r¼  )r:  r;  r<  rÕ   r'   r(   r&   r)   r½  s     r!   r  z&_ClassBuilder._add_method_dunders_safe§  sÒ   € ô × Ñ ¤Ó0ñ 	5Ø $§	¡	× 4Ñ 4ˆFÔ÷	5ô × Ñ ¤Ó0ñ 	PØ%)§Y¡Y×%;Ñ%;Ð$<¸A¸f¿o¹oÐ=NÐ"OˆFÔ÷	Pô × Ñ ¤Ó0ñ 	^ØCÀDÇIÁI×DZÑDZÐC[Ð[\Ð]ˆFŒN÷	^ð ˆ÷	5ð 	5ú÷	Pð 	Pú÷	^ð ˆús#   šCÁ+CÂ# C%ÃCÃC"Ã%C/N)rŒ   r3   )r‡  rˆ  )r¾  r   r‡  r   )r&   r'   r(   r)   rB  r&  r"   r/  r6  r3  r2  rk  rp  r  r‚  rŠ  r”  r˜  r�  r¢  r©  r²  rº  r  r  r   r#   r!   rò   rò   m  s„   „ ñð€Ið0iGàóiGòV<ó'ò$ò0"òHIòVò	ò'.òRòòò2ò
òò2òòó@ôr#   rò   c                ó�   — | �t        |du|duf«      rd}t        |«      ‚| �| | fS |€|}|€|}|du r|du rd}t        |«      ‚||fS )úš
    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.©ÚanyrG   )r9   r?   rA   Ú
default_eqrQ   s        r!   Ú_determine_attrs_eq_orderrÇ  ·  sy   € ð
 €œ3 ¨$ °¸TÐ0AÐBÔCØ6ˆÜ˜‹oÐð €Ø�Cˆxˆð 
€zØˆà€}Øˆà	ˆU�{�u ‘}Ø=ˆÜ˜‹oÐàˆuˆ9Ðr#   c                óì   — | �t        |du|duf«      rd}t        |«      ‚d„ }| � || «      \  } }| || |fS |€|d}}n ||«      \  }}|€||}}n ||«      \  }}|du r|du rd}t        |«      ‚||||fS )rÁ  NrÂ  c                ó4   — t        | «      rd| }} | |fS d}| |fS )z8
        Decide whether a key function is used.
        TN)rH   )ræ   r­   s     r!   Údecide_callable_or_booleanz>_determine_attrib_eq_order.<locals>.decide_callable_or_booleanÜ  s1   € ô �EŒ?Ø˜u�3ˆEð �cˆzÐð ˆCØ�cˆzÐr#   FTrÃ  rÄ  )	r9   r?   rA   rÆ  rQ   rÊ  Úcmp_keyr@   rB   s	            r!   rE   rE   Ó  s¼   € ð
 €œ3 ¨$ °¸TÐ0AÐBÔCØ6ˆÜ˜‹oÐòð €Ù1°#Ó6‰ˆˆWØ�G˜S 'Ð)Ð)ð 
€zØ ˆF‰á/°Ó3‰
ˆˆFà€}Ø˜vˆy‰á5°eÓ<Ñˆˆyà	ˆU�{�u ‘}Ø=ˆÜ˜‹oÐàˆv�u˜iÐ'Ð'r#   c                óT   — |du s|du r|S |€|du r|S |D ]  }t        | |«      sŒ y |S )ap  
    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Údundersr6   Údunders         r!   Ú_determine_whether_to_implementrÑ  þ  sL   € ð ˆt�|�t˜u‘}Øˆà€|˜ uÑ,Øˆð ò ˆÜ˜c 6Õ*Ùðð €Nr#   c                ó4  ‡‡‡‡‡‡‡‡	‡
‡‡‡‡‡‡‡‡‡‡‡‡— ‰� ddl }|j                  t        d«      d¬«       t        |||d«      \  ŠŠ|�|Št	        ‰t
        t        f«      rt        j                  ‰Ž Šˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ
ˆˆ	fd„}| €|S  || «      S )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                ó  •— ‰xs t        | «      }‰	du xr t        | t        «      }‰xr t        | d«      }|r|rd}t	        |«      ‚t        | ‰‰|‰t        | ‰‰d‰¬«      ‰‰‰
|‰‰|‰«      }t        | ‰‰d«      r|j                  ‰«       ‰du r|j                  «        t        | ‰‰d«      }|s|du r|j                  «        |st        | ‰‰d«      r|j                  «        ‰s|j                  «        ‰€‰du rt        | d	«      rd
Š‰dur‰d
ur‰�d}t        |«      ‚‰d
u s‰€|d
u s|r‰
rKd}t        |«      ‚‰du s
‰€|du r|du r|j                  «        n‰
rd}t        |«      ‚|j                  «        t        | ‰‰d«      r|j                  «        n|j!                  «        ‰
rd}t        |«      ‚t"        rt        | d«      s|j%                  «        t&        r‰rt        | d«      s|j)                  «        |j+                  «       S )NTrä   z/Can't freeze a class with a custom __setattr__.)r  r  )r6   rn  )r¥  r§  )r­  r®  r¯  r°  r�  Fr5   zlInvalid value for cache_hash.  To use hash caching, hashing must be either explicitly or implicitly enabled.©r&  zFInvalid value for cache_hash.  To use hash caching, init must be True.r—  rœ  )Ú_has_frozen_base_classÚ
issubclassrã   rŽ   rG   rò   rÑ  rk  rp  r©  r²  rº  rF   rŠ  r‚  r”  r¢  r   r˜  r   r�  r6  )rŒ   Ú	is_frozenr  Úhas_own_setattrrQ   Úbuilderr?   rÂ   rÎ  Úauto_excr  rÃ   Úeq_rÄ   r  r  r:   r;   r>   Ú
match_argsrC   Úorder_r8   Úrepr_nsr  r„   rÁ   r  s          €€€€€€€€€€€€€€€€€€€€€r!   Úwrapzattrs.<locals>.wrap‡  sh  ø€ ØÒ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àˆ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Ø×ÑÔ!õ ÙÜ& sÐ,<Ô=à×"Ñ"Ô$à×"Ñ"Ó$Ð$r#   )	ÚwarningsÚwarnÚDeprecationWarningrÇ  rJ   rK   rL   r   rM   )Ú	maybe_clsrÁ   rà  r8   r9   r:   r;   r  r  r  r„   rÂ   r>   r  rÜ  r?   rA   rÎ  rÃ   r  rC   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                ó&   — | j                   t        u S )zV
    Check whether *cls* has a frozen ancestor by looking at its
    __setattr__.
    )rä   rç   )rŒ   s    r!   r×  r×    s   € ð
 �?‰?Ô.Ð.Ð.r#   c           
     óX   — d|› d| j                   › dt        | d| j                  «      › d�S )zF
    Create a "filename" suitable for a function being generated.
    z<attrs generated ú r®   r(   r`   )r'   r•   r&   )rŒ   Ú	func_names     r!   rØ   rØ   
  s7   € ð
 ˜I˜; a¨¯©Ð'7°qÜ�3˜¨¯©Ó5Ð
6°að	9ðr#   c                óö  ‡‡‡	‡
‡‡— t        d„ ‰D «       «      Šd}t        t        | d«      «      Ši Š	d}dŠ
dŠ|s|dz  }n|dz  }|d	z  }d
‰
z   Š
‰dz  Š|gŠˆˆˆ	ˆ
ˆˆfd„}|rz‰j                  |dt        › d�z   «       |r, |dt        › d�|dz  «       ‰j                  |dz  dz   «       n |dt        › d�|dz  «       ‰j                  |dt        › �z   «       n	 |d|«       dj                  ‰«      }|‰	fS )Nc              3  ót   K  — | ]0  }|j                   d u s|j                   �Œ|j                  d u sŒ-|–— Œ2 y­w)TN)r:   r?   r¸   s     r!   r³   z$_make_hash_script.<locals>.<genexpr>  s1   è ø€ ò Ø˜AŸF™F d™N¨q¯v©v©~À!Ç$Á$È$Â,Œñùs   ‚8¢8±8ú        r:   zdef __hash__(selfzhash((z))z):z, *zC, _cache_wrapper=__import__('attr._make')._make._CacheHashWrapper):z_cache_wrapper(ú)c           	     óh  •— ‰j                  || z   ‰z   |d‰	› d�z   g«       ‰D ]u  }|j                  rEd|j                  › d�}|j                  ‰|<   ‰j                  |d|› d|j                  › d�z   «       ŒT‰j                  |d|j                  › d�z   «       Œw ‰j                  |dz   ‰z   «       y	)
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í  ú,r,  Ú_keyú(self.z),ú        self.ú    N)r×   r@   r–   r˜   )
ÚprefixÚindentrŸ   Úcmp_namer{   Úclosing_bracesrX   Ú	hash_funcÚmethod_linesÚ	type_hashs
       €€€€€€r!   Úappend_hash_computation_linesz8_make_hash_script.<locals>.append_hash_computation_lines/  sÒ   ø€ ð 	×Ñà˜‘ )Ñ+Ø˜8 I ;¨aÐ0Ñ0ðô	
ð ò 	HˆAØ�xŠxØ˜qŸv™v˜h dÐ+�Ø"#§(¡(��h‘Ø×#Ñ#Ø˜x¨ z°¸¿¹°x¸rÐBÑBõð ×#Ñ# F¨}¸Q¿V¹V¸HÀAÐ-FÑ$FÕGð	Hð 	×Ñ˜F V™O¨nÑ<Õ=r#   zif self.z	 is None:zobject.__setattr__(self, 'ú', rÓ  úself.ú = zreturn self.zreturn rÔ   )rL   r:   rØ   r˜   rI  rº   )rŒ   r{   r  r  ÚtabÚhash_defrü  rW   rø  rX   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                ón   — t        | |dd¬«      \  }}t        ||t        | d«      ¬«       |d   | _        | S )z%
    Add a hash method to *cls*.
    Fr„  r�  ©rZ   )r‰  r\   rØ   r�  ©rŒ   r{   rW   rX   s       r!   Ú	_add_hashr  \  sG   € ô &ØˆU˜5¨Uô�M€FˆEô Ø�Ô 9¸#¸zÓ Jõð ˜Ñ$€C„LØ€Jr#   c                óF   — | j                  |«      }|t        u rt        S | S )z^
    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                ó,  — | D �cg c]  }|j                   sŒ|‘Œ } }g d¢}i }| rÆ|j                  d«       | D ]ž  }|j                  rRd|j                  › d�}|j                  ||<   |j                  d|› d|j                  › d|› d|j                  › d	�	«       n+|j                  d
|j                  › d|j                  › �«       || d   usŒ”|d   › d�|d<   Œ  |j                  d«       n|j                  d«       dj	                  |«      }||fS c c}w )z6
    Create __eq__ method for *cls* with *attrs*.
    )zdef __eq__(self, other):z-    if other.__class__ is not self.__class__:z        return NotImplementedz    return  (r,  rñ  rí  rò  z) == z(other.rî  ró  z
 == other.r^   z andz    )z    return TruerÔ   )r?   r˜   r@   r–   rº   )r{   rŸ   rÙ   rX   r÷  rW   s         r!   r¨  r¨  v  s  € ð Ö&�1 §£ŠQÐ&€EÐ&ò€Eð €EÙØ�‰�_Ô%Øò 	/ˆAØ�xŠxØ˜qŸv™v˜h dÐ+�ð #$§(¡(��h‘Ø—‘Ø˜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à�5ˆ=Ðùò= 's
   …D—Dc                óˆ   ‡‡— ‰D �cg c]  }|j                   sŒ|‘Œ c}Šˆfd„Šˆfd„}ˆfd„}ˆfd„}ˆfd„}||||fS c c}w )z9
    Create ordering methods for *cls* with *attrs*.
    c                ó<   •‡ — t        d„ ˆ fd„‰D «       D «       «      S )z&
        Save us some typing.
        c              3  ó:   K  — | ]  \  }}|r ||«      n|–— Œ y ­wr/   r   )r±   ræ   r­   s      r!   r³   z6_make_order.<locals>.attrs_to_tuple.<locals>.<genexpr>¥  s'   è ø€ ò 
á��sñ ‰C�ŒJ 5Ó(ñ
ùs   ‚c              3  ób   •K  — | ]&  }t        ‰|j                  «      |j                  f–— Œ( y ­wr/   )r•   r–   rB   )r±   rŸ   Úobjs     €r!   r³   z6_make_order.<locals>.attrs_to_tuple.<locals>.<genexpr>§  s*   øè ø€ ò Ø89”˜˜aŸf™fÓ% q§{¡{Ô3ñùs   ƒ,/)rL   )r  r{   s   `€r!   Úattrs_to_tuplez#_make_order.<locals>.attrs_to_tuple¡  s)   ù€ ô ñ 
óØ=Bôô
ó 
ð 	
r#   c                ób   •— |j                   | j                   u r ‰| «       ‰|«      k  S t        S ©z1
        Automatically created by attrs.
        ©r°   r  ©r    r  r  s     €r!   r­  z_make_order.<locals>.__lt__¬  ó0   ø€ ð �?‰?˜dŸn™nÑ,Ù! $Ó'©.¸Ó*?Ñ?Ð?äÐr#   c                ób   •— |j                   | j                   u r ‰| «       ‰|«      k  S t        S r  r  r  s     €r!   r®  z_make_order.<locals>.__le__µ  ó0   ø€ ð �?‰?˜dŸn™nÑ,Ù! $Ó'©>¸%Ó+@Ñ@Ð@äÐr#   c                ób   •— |j                   | j                   u r ‰| «       ‰|«      kD  S t        S r  r  r  s     €r!   r¯  z_make_order.<locals>.__gt__¾  r  r#   c                ób   •— |j                   | j                   u r ‰| «       ‰|«      k\  S t        S r  r  r  s     €r!   r°  z_make_order.<locals>.__ge__Ç  r  r#   )rA   )rŒ   r{   rŸ   r­  r®  r¯  r°  r  s    `     @r!   r±  r±  ›  sK   ù€ ð Ö)�1 §£ŠQÒ)€Eô	
ôôôôð �6˜6 6Ð)Ð)ùòc *s   ‡?™?c                ó˜   — |€| j                   }t        |«      \  }}t        ||t        | d«      ¬«       |d   | _        t
        | _        | S )z5
    Add equality methods to *cls* with *attrs*.
    r¥  r  )r�   r¨  r\   rØ   r¥  r§  r  s       r!   Ú_add_eqr  Ó  sR   € ð €}Ø×#Ñ#ˆä# EÓ*�M€FˆEÜØ�Ô 9¸#¸xÓ Hõð �x‘€C„JÜ€C„Jà€Jr#   c                óÒ  — t        d„ | D «       «      }|D ���ci c]  \  }}}|t        k7  sŒ|dz   |“Œ }}}}t        |d<   t        |d<   t        |d<   g }|D ]B  \  }}}|rd|z   nd|z   dz   }	|t        k(  r|›d	|	›d
�n
|›d	|›d|	›d�}
|j                  |
«       ŒD dj                  |«      }|€d}n|dz   }ddddddddddddd|› d|› d�ddg}d j                  |«      |fS c c}}}w )!zC
    Create the source and globs for a __repr__ and return it.
    c              3  ó¦   K  — | ]I  }|j                   d ur9|j                  |j                   du rt         n|j                   |j                  f–— ŒK y­w)FTN)r8   r–   r;   r¸   s     r!   r³   z$_make_repr_script.<locals>.<genexpr>ë  sC   è ø€ ò "àØ�6‰6˜Ñð 
�‰˜!Ÿ&™& D™.•$¨a¯f©f°q·v±vÔ>ñ"ùs   ‚AAÚ_reprr   r<  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Ô   )rL   r8   r   r<  r   r˜   rº   )r{   rj  Úattr_names_with_reprsr–   Úrr,  rX   Úattribute_fragmentsro   ÚaccessorÚfragmentÚrepr_fragmentÚcls_name_fragmentrÙ   s                 r!   ri  ri  ä  sg  € ô "ñ "àô"ó Ðð -B÷ð Ù(˜d A qÀQÌ$ÃYˆˆw‰˜Ñð€Eò ô €Eˆ)ÑÜ,€EÐ
ÑÜ€Eˆ)ÑØÐØ+ò 	-‰
ˆˆa�áˆ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
   ™C"¬C"c                ó„   — |€| j                   }t        ||«      \  }}t        ||t        | d«      ¬«       |d   | _        | S )z%
    Add a repr method to *cls*.
    r"   r  )r�   ri  r\   rØ   r"   )rŒ   rj  r{   rW   rX   s        r!   Ú	_add_reprr(    sN   € ð €}Ø×#Ñ#ˆä% e¨RÓ0�M€FˆEÜØ�Ô 9¸#¸zÓ Jõð ˜Ñ$€C„LØ€Jr#   c                óÌ   — t        | «      }|€t        | t        «      sd}t        |«      ‚t	        | dd«      }|€*|�t	        |dd«      }|�	|| _        |S | ›d�}t        |«      ‚|S )aG  
    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   rJ   r3   rF   r•   r�   r   )rŒ   Úgeneric_baserQ   r{   s       r!   rì   rì   ,  s‡   € ô. $ CÓ(€LàÐ¤J¨s´DÔ$9Ø.ˆÜ˜‹nÐä�CÐ*¨DÓ1€Eà€}ØÐ#Ü˜LÐ*;¸TÓBˆEØÐ ð ',�Ô#Ø�Ø�Ð8Ð9ˆÜ" 3Ó'Ð'à€Lr#   c                óº   — t        | t        «      sd}t        |«      ‚t        | dd«      }|€| ›d�}t	        |«      ‚|D �ci c]  }|j
                  |“Œ c}S c c}w )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
    r*  r�   Nr+  )rJ   r3   rF   r•   r   r–   )rŒ   rQ   r{   rŸ   s       r!   Úfields_dictr.  Z  se   € ô& �cœ4Ô Ø.ˆÜ˜‹nÐÜ�CÐ*¨DÓ1€EØ€}Ø�Ð8Ð9ˆÜ" 3Ó'Ð'Ø$Ö%˜!ˆA�F‰F�A‰IÒ%Ð%ùÒ%s   ÁAc           	     ó¸   — t         j                  du ryt        | j                  «      D ]/  }|j                  }|€Œ || |t        | |j                  «      «       Œ1 y)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°   r7   r•   r–   )rï   rŸ   rS  s      r!   r  r  w  sR   € ô ×Ñ %Ñ'Øä�D—N‘NÓ#ò .ˆØ�K‰KˆØ‰=Ùˆd�A”w˜t Q§V¡VÓ,Õ-ñ.r#   c                óH   — |j                  | «      }|xr d|j                  v S )z>
    Check if the attribute name comes from a slot class.
    rB  )r¨   r‹   )Úa_namer�   rŒ   s      r!   Ú_is_slot_attrr3  ‰  s(   € ð ×
Ñ
˜FÓ
#€CØÒ.�; #§,¡,Ð.Ð.r#   c                ó¼  — |
d uxr |
t         j                  u}|r|rd}t        |«      ‚|xs |}g }i }|D ]ƒ  }|j                  s|j                  t
        u rŒ"|j                  |«       |||j                  <   |j                  �|du rd}t        |«      ‚d}Œb|sŒe|j                  t         j                  usŒ‚d}Œ… t        |||||||||	|||rdnd«      \  }}}| j                  t        j                  v r6|j                  t        j                  | j                     j                  «       |j                  t
        |dœ«       |rt        j                   |d<   |||fS )Nz$Frozen classes can't use on_setattr.Tr   r&  )r   Ú	attr_dictrÒ   )r   r¹  rG   r;   r6   r   r˜   r–   rC   Ú_attrs_to_init_scriptr'   ÚsysÚmodulesr*  r‹   r¾   r¿   )rŒ   r{   Úpre_initÚpre_init_has_argsÚ	post_initr  r  r  r�   r  Úcls_on_setattrr�  Úhas_cls_on_setattrrQ   Úneeds_cached_setattrÚfiltered_attrsr5  rŸ   rW   rX   r   s                        r!   r“  r“  ‘  sj  € ð 	˜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                ó   — d| › d|› d�S )zJ
    Use the cached object.setattr to set *attr_name* to *value_var*.
    ú
_setattr('rý  rî  r   )rw   Ú	value_varÚhas_on_setattrs      r!   Ú_setattrrD  Ö  s   € ð ˜	�{ # i [°Ð2Ð2r#   Ú	Converterc                ó4   — d| › d|j                  | |«      › d�S )zk
    Use the cached object.setattr to set *attr_name* to *value_var*, but run
    its converter first.
    rA  rý  rî  )Ú_fmt_converter_call©rw   rB  rC  r<   s       r!   Ú_setattr_with_converterrI  Ý  s(   € ð ˜	�{ # i×&CÑ&CÀIÈyÓ&YÐ%ZÐZ[Ð\Ð\r#   c                ó0   — |rt        | |d«      S d| › d|› �S )zo
    Unless *attr_name* has an on_setattr hook, use normal assignment. Otherwise
    relegate to _setattr.
    Trþ  rÿ  )rD  )rw   ræ   rC  s      r!   Ú_assignrK  ç  s)   € ñ
 Ü˜	 5¨$Ó/Ð/à�9�+˜S  Ð(Ð(r#   c                óR   — |rt        | |d|«      S d| › d|j                  | |«      › �S )z�
    Unless *attr_name* has an on_setattr hook, use normal assignment after
    conversion. Otherwise relegate to _setattr_with_converter.
    Trþ  rÿ  )rI  rG  rH  s       r!   Ú_assign_with_converterrM  ò  s9   € ñ Ü& y°)¸TÀ9ÓMÐMà�9�+˜S ×!>Ñ!>¸yÈ)Ó!TÐ UÐVÐVr#   c                óŽ   ‡— | du r4|du rdt         t        fS 	 	 	 	 	 	 	 	 dˆfd„}	 	 	 	 	 	 	 	 	 	 dˆfd„}d||fS dt        t        fS )zg
    Determine the correct setter functions based on whether a class is frozen
    and/or slotted.
    Tr   c                óF   •— t        | ‰«      rt        | ||«      S d| › d|› �S ©Nú_inst_dict['z'] = )r3  rD  )rw   rB  rC  r�   s      €r!   Ú
fmt_setterz&_determine_setters.<locals>.fmt_setter  s1   ø€ ô ˜Y¨Ô6Ü 	¨9°nÓEÐEà! ) ¨E°)°Ð=Ð=r#   c                ól   •— |st        | ‰«      rt        | |||«      S d| › d|j                  | |«      › �S rP  )r3  rI  rG  )rw   rB  rC  r<   r�   s       €r!   Úfmt_setter_with_converterz5_determine_setters.<locals>.fmt_setter_with_converter  sL   ø€ ñ ¤¨y¸-Ô!HÜ.Ø˜y¨.¸)óð ð " ) ¨E°)×2OÑ2OÐPYÐ[dÓ2eÐ1fÐgÐgr#   )z_inst_dict = self.__dict__©rw   r„   rB  r„   rC  r  r‡  r„   ©
rw   r„   rB  r„   rC  r  r<   rE  r‡  r„   )rD  rI  rK  rM  )r  r  r�   rR  rT  s     `  r!   Ú_determine_settersrW  ÿ  s¤   ø€ ð ��~Ø�D‰=Ø”xÔ!8Ð8Ð8ð	>Øð	>Ø'*ð	>Ø<@ð	>àõ	>ð	hØð	hàð	hð !ð	hð !ð		hð
 õ	hð ,ØØ%ð
ð 	
ð ŒwÔ.Ð.Ð.r#   c           
     ód  — |rdgng }|	r|j                  d«       t        |||«      \  }}}|j                  |«       g }g }g }i }ddi}| D �]Ï  }|j                  r|j                  |«       |j                  }|j
                  duxs  |j
                  t        j                  uxr |
}|j                  }t        |j                  t        «      }|r|j                  j                  rdnd}|j                  �0t        |j                  t        «      st        |j                  «      }n|j                  }|j                  du �r|r›t         |j                  fz  }|�J|j                   |||d|› d	�z   ||«      «       |j                  ||j#                  |j                  «      <   n |j                   |||d|› d	�z   |«      «       |j                  j$                  ||<   �ní|�H|j                   ||d
|› d�||«      «       |j                  ||j#                  |j                  «      <   �n£|j                   ||d
|› d�|«      «       �n„|j                  t&        urš|s˜|› d|› d�}|j(                  r|j                  |«       n|j                  |«       |�D|j                   |||||«      «       |j                  ||j#                  |j                  «      <   �nó|j                   ||||«      «       �nØ|�rH|› d�}|j(                  r|j                  |«       n|j                  |«       |j                  d|› d�«       t         |j                  fz  }|�}|j                  d |||||«      z   «       |j                  d«       |j                  d |||dz   |z   d	z   ||«      z   «       |j                  ||j#                  |j                  «      <   nR|j                  d ||||«      z   «       |j                  d«       |j                  d |||dz   |z   d	z   |«      z   «       |j                  j$                  ||<   n�|j(                  r|j                  |«       n|j                  |«       |�C|j                   |||||«      «       |j                  ||j#                  |j                  «      <   n|j                   ||||«      «       |j                  du s�Œ�|j*                  �|€|j*                  ||<   �Œ¯|€�Œ³|j,                  s�ŒÁ|j,                  ||<   �ŒÒ |rxt.        |d<   |j                  d«       |D ]Y  }d|j                  z   }d|j                  z   }|j                  d|› d|› d|j                  › d	�«       |j                  ||<   |||<   Œ[ |r|j                  d«       |r5|r|rdt0        › d�}ndt0        › d�}n
dt0        › d�}|j                  |«       |r-d j3                  d!„ | D «       «      } |j                  d"| › d	�«       d#j3                  |«      }|}!|rV||rd#nd› d$d#j3                  |«      › �z  }d#j3                  d%„ |D «       D �"cg c]	  }"|"› d&|"› �‘Œ c}"«      }#|!|!rd#ndz  }!|!|#z  }!|r|r	d'|!› d	�|d(<   d)}$d*|› d|› d+|r|$j3                  |«      nd,› d-�||fS c c}"w ).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    Ú Fr  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__()rA  z', None)rQ  z	'] = Nonerþ  z = Nonerð  c              3  óT   K  — | ]   }|j                   sŒd |j                  › �–— Œ" y­w)rþ  N)r;   r–   r¸   s     r!   r³   z(_attrs_to_init_script.<locals>.<genexpr>	  s!   è ø€ ÒB¨Q¸1¿6»6˜% §¡˜xÔ(ÑBùs   ‚(”(zBaseException.__init__(self, r¦   z*, c              3  óD   K  — | ]  }|j                  d «      d   –— Œ y­w)ú=r   N)Úsplit)r±   Úkwas     r!   r³   z(_attrs_to_init_script.<locals>.<genexpr>	  s   è ø€ Ò#N¸# C§I¡I¨c£N°1Õ$5Ñ#Nùs   ‚ r^  zself.__attrs_pre_init__(r   z
    zdef z):
    ÚpassrÔ   )r˜   rW  r×   r7   r–   rC   r   r¹  rD   rJ   r6   rI   Ú
takes_selfr<   rE  r;   Ú_INIT_FACTORY_PATÚ_get_global_namerP   r   r>   r3   Ú_first_param_typer   rI  rº   )%r{   rÙ  Ú
is_slottedÚcall_pre_initr:  Úcall_post_initÚdoes_cache_hashr�   r  r>  r=  Úmethod_namerÙ   Úextra_linesrR  rT  rí   Úkw_only_argsÚattrs_to_validateÚnames_for_globalsr   rŸ   rw   rC  Úarg_nameÚhas_factoryÚ
maybe_selfr<   Úinit_factory_nameÚargÚval_nameÚinit_hash_cacheÚvalsÚpre_init_argsÚkw_arg_nameÚpre_init_kw_only_argsÚNLs%                                        r!   r6  r6  .  s0  € ñ( .;Ð(Ñ)À€EáØ�‰ð 3ô		
ô :LØ�:˜}ó:Ñ6€K�Ð6ð 
‡L�L�Ôà€DØ€LØÐð ÐØ˜TÐ"€Kàó UDˆØ�;Š;Ø×$Ñ$ QÔ'à—F‘Fˆ	ØŸ™¨TÐ1ò 
Ø�L‰L¤§¡Ð-ÒDÐ2Dð 	ð
 —7‘7ˆä  §¡¬GÓ4ˆÙ*¨q¯y©y×/CÒ/C‘VÈˆ
à�;‰;Ð"¬:°a·k±kÄ9Ô+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à(1×(CÑ(C�˜HÓ%ðkUDñ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öð  ð �-˜q  Ò.òó!
Ðð 	¡™°BÑ6ˆØÐ.Ñ.ˆáÑ*à-¨m¨_¸AÐ>ˆˆa‰ð 
€Bà��˜W T Fð +Ù€R‡W�WˆU„^ &Ð)ð *ð	ð 	Øðð ùòs   ÙZ-c                ó$   — | j                  d«      S )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.
    r,  )Úlstripr	  s    r!   rÀ   rÀ   2	  s   € ð �;‰;�sÓÐr#   c                  ób   — e Zd ZdZdZ	 	 	 	 	 	 	 	 	 	 dd„Zd„ Zeddd„«       Zd„ Z	d„ Z
d	„ Zd
„ Zy)r¼   a²  
    *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–   r6   r7   r8   r?   r@   rA   rB   r:   r;   r=   r3   r<   r>   r’   rC   rD   Nc                óÞ  — t        ||xs ||xs |d«      \  }}}}t        j                  | «      } |d|«        |d|«        |d|«        |d|«        |d|«        |d|«        |d|«        |d	|«        |d
|«        |d|«        |d|«        |d|	rt        j                  t        |	«      «      nt        «        |d|
«        |d|«        |d|«        |d|«        |d|«       y )NTr–   r6   r7   r8   r?   r@   rA   rB   r:   r;   r<   r=   r3   r>   r’   rC   rD   )rE   r¾   r¿   ÚtypesÚMappingProxyTyper  Ú_EMPTY_METADATA_SINGLETON)r    r–   r6   r7   r8   r9   r:   r;   r’   r=   r3   r<   r>   r?   r@   rA   rB   rC   rD   Úbound_setattrs                       r!   r&  zAttribute.__init__~	  s  € ô* (BØ�’˜2˜yÒ1¨E°4ó(
Ñ$ˆˆF�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                ó   — t         ‚r/   )r   rå   s      r!   rä   zAttribute.__setattr__µ	  s   € Ü!Ð!r#   c                ó¤  — |€|j                   }n|j                   �d|› d�}t        |«      ‚ | ||j                  |j                  |j                  d |j
                  |j                  d|j                  ||j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  «      S )Nz>Type annotation and type argument cannot both be present for 'z'.F)r3   rG   Ú_defaultÚ
_validatorr8   r:   r;   r=   r<   r>   r?   r@   rA   rB   rC   rD   )rŒ   r–   rË   r3   rQ   s        r!   r½   z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                ón   — t        j                   | «      }|j                  |j                  «       «       |S )a
  
        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—   zAttribute.evolveÖ	  s(   € ô �i‰i˜‹oˆà�‰�g—m‘m“oÔ&àˆ
r#   c                ó@   ‡ — t        ˆ fd„‰ j                  D «       «      S )ú(
        Play nice with pickle.
        c              3  ój   •K  — | ]*  }|d k7  rt        ‰|«      nt        ‰j                  «      –— Œ, y­w)r=   N)r•   r  r=   ©r±   r–   r    s     €r!   r³   z)Attribute.__getstate__.<locals>.<genexpr>ì	  s5   øè ø€ ò 
àð $(¨:Ò#5ŒG�D˜$Ô¼4ÀÇÁÓ;NÓNñ
ùs   ƒ03©rL   rB  r   s   `r!   r  zAttribute.__getstate__è	  s#   ø€ ô ó 
àŸ™ô
ó 
ð 	
r#   c                óN   — | j                  t        | j                  |«      «       y©rŒ  N)r‰  rz  rB  ©r    r{  s     r!   r  zAttribute.__setstate__ñ	  s   € ð 	�‰”s˜4Ÿ>™>¨5Ó1Õ2r#   c           	     óº   — t         j                  | «      }|D ]A  \  }}|dk7  r
 |||«       Œ |||rt        j                  t	        |«      «      nt
        «       ŒC y )Nr=   )r¾   r¿   r  r€  r  r�  )r    Úname_values_pairsr‚  r–   ræ   s        r!   r‰  zAttribute._setattrs÷	  s^   € Ü$×,Ñ,¨TÓ2ˆØ,ò 	‰KˆD�%Ø�zÒ!Ù˜d EÕ*áØñ !ô ×.Ñ.¬t°E«{Ô;ä6õñ		r#   )
NNNFNNNNNNr/   )r–   r„   rË   rO   )r&   r'   r(   r)   rB  r&  rä   rM  r½   r—   r  r  r‰  r   r#   r!   r¼   r¼   =	  sb   „ ñ(ðX€Ið< ØØØØØØØØØó'5&òn"ð ó
ó ð
ò:ò$
ò3ór#   r¼   r=   )r–   r6   r7   r8   r9   r?   rA   r:   r;   r’   rD   )r{   r’   c                  ó|   — e Zd ZdZdZg  ed„ dD «       «      ¢ eddddddddddddddd¬	«      ‘­Zd
Zd„ Z	d„ Z
d„ Zy)rO   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†  rD   r<   r©   r?   r@   r:   r;   r>   r=   rC   rA   rB   r8   r3   c              #  ój   K  — | ]+  }t        |t        |«      t        d dd ddddd dd dd ¬«      –— Œ- y ­w)NTF©r–   rD   r6   r7   r8   r9   r:   r;   r>   r?   r@   rA   rB   r’   rC   )r¼   rÀ   r   )r±   r–   s     r!   r³   z_CountingAttr.<genexpr>=
  sV   è ø€ ò 
ð$ ô# ØÜ-¨dÓ3ÜØØØØØØØØØØØØ÷ð ñ
ùs   ‚13)	r©   r…  r8   r?   rA   r:   r;   rC   rD   r=   NTFr—  r   c                ó2  — t         xj                  dz  c_        t         j                  | _        || _        || _        || _        || _        || _        || _        || _	        || _
        || _        || _        || _        |	| _        |
| _        || _        || _        y rµ   )rO   Úcls_counterr©   r…  r†  r<   r8   r?   r@   rA   rB   r:   r;   r=   r3   r>   rC   rD   )r    r6   r7   r8   r9   r:   r;   r<   r=   r3   r>   r?   r@   rA   rB   rC   rD   s                    r!   r&  z_CountingAttr.__init__o
  s‹   € ô& 	×!Ò! QÑ&Õ!Ü$×0Ñ0ˆŒØˆŒØ#ˆŒØ"ˆŒØˆŒ	ØˆŒØˆŒØˆŒ
Ø"ˆŒØˆŒ	ØˆŒ	Ø ˆŒØˆŒ	ØˆŒØ$ˆŒØˆ�
r#   c                óf   — | j                   €	|| _         |S t        | j                   |«      | _         |S )zŒ
        Decorator that adds *meth* to the list of validators.

        Returns *meth* unchanged.

        .. versionadded:: 17.1.0
        )r†  rN   ©r    r¬  s     r!   r7   z_CountingAttr.validator”
  s5   € ð �?‰?Ð"Ø"ˆDŒOð ˆô # 4§?¡?°DÓ9ˆDŒOØˆr#   c                óZ   — | j                   t        urt        ‚t        |d¬«      | _         |S )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)rb  )r…  r   r   rI   r›  s     r!   r6   z_CountingAttr.default¢
  s)   € ð �=‰=¤Ñ'Ü(Ð(ä °Ô6ˆŒàˆr#   )r&   r'   r(   r)   rB  rL   r¼   r�   r™  r&  r7   r6   r   r#   r!   rO   rO   !
  s…   „ ñð€Ið$0Ù	ñ 
ð$
ô%
ó 

ð0ñ> 	ØØØØØØØØØØØØØØØô	
ñ?0€Oðb €Kò#òJór#   rO   c                  ó(   — e Zd ZdZdZdd„Zd„ Zd„ Zy)rI   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*
    ©rP   rb  c                ó    — || _         || _        y r/   rž  )r    rP   rb  s      r!   r&  zFactory.__init__Í
  s   € ØˆŒØ$ˆ�r#   c                ó@   ‡ — t        ˆ fd„‰ j                  D «       «      S )rŒ  c              3  ó6   •K  — | ]  }t        ‰|«      –— Œ y ­wr/   rv  rŽ  s     €r!   r³   z'Factory.__getstate__.<locals>.<genexpr>Õ
  s   øè ø€ ÒD¨T”W˜T 4×(ÑDùs   ƒr�  r   s   `r!   r  zFactory.__getstate__Ñ
  s   ø€ ô ÓD°T·^±^ÔDÓDÐDr#   c                óZ   — t        | j                  |«      D ]  \  }}t        | ||«       Œ yr‘  )rz  rB  r>  )r    r{  r–   ræ   s       r!   r  zFactory.__setstate__×
  s.   € ô ˜tŸ~™~¨uÓ5ò 	'‰KˆD�%Ü�D˜$ Õ&ñ	'r#   N)F)r&   r'   r(   r)   rB  r&  r  r  r   r#   r!   rI   rI   ¸
  s   „ ñð$ *€Ió%òEó'r#   rI   )
r–   r6   r7   r8   r9   r?   rA   r:   r;   r’   c                  óH   — e Zd ZdZdZdddœd„Zedd„«       Zdd„Zd„ Z	d	„ Z
y
)rE  ae  
    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__re  Ú_global_namer<   Útakes_fieldrb  F©rb  r¦  c               ó®  ‡ — |‰ _         |‰ _        |‰ _        t        |«      }|j	                  «       ‰ _        ‰ j                  s‰ j                  sˆ fd„‰ _        nP‰ j                  r‰ j                  sˆ fd„‰ _        n-‰ j                  s‰ j                  rˆ fd„‰ _        n
ˆ fd„‰ _        |j                  «       }|�|‰ j                  j                  d<   y y )Nc                ó&   •— ‰j                  | «      S r/   ©r<   )ræ   r,  Ú__r    s      €r!   r¬   z$Converter.__init__.<locals>.<lambda>  s   ø€ °·±ÀÓ1F€ r#   c                ó(   •— ‰j                  | |«      S r/   rª  )ræ   Úinstancer«  r    s      €r!   r¬   z$Converter.__init__.<locals>.<lambda>  s   ø€ ¸¿¹Ø�xó9€ r#   c                ó(   •— ‰j                  | |«      S r/   rª  )ræ   r«  r›  r    s      €r!   r¬   z$Converter.__init__.<locals>.<lambda>  s   ø€ °T·^±^Ø�uó6€ r#   c                ó*   •— ‰j                  | ||«      S r/   rª  )ræ   r­  r›  r    s      €r!   r¬   z$Converter.__init__.<locals>.<lambda>#  s   ø€ ¸4¿>¹>Ø�x ó<€ r#   r‡  )	r<   rb  r¦  r   Úget_first_param_typere  r¤  Úget_return_typer€   )r    r<   rb  r¦  ÚexÚrts   `     r!   r&  z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                ó   — d| › �S )zh
        Return the name that a converter for an attribute name *attr_name*
        would have.
        Ú__attr_converter_r   )rw   s    r!   rd  zConverter._get_global_name+  s   € ð # 9 +Ð.Ð.r#   c                ó>  — | j                   s#| j                  s| j                  |«      › d|› d�S | j                   r&| j                  r| j                  |«      › d|› d|› d�S | j                   r| j                  |«      › d|› d�S | j                  |«      › d|› d|› d�S )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`.
        r  rî  z, self, attr_dict['z'])z, self)z, attr_dict[')rb  r¦  rd  )r    rw   rB  s      r!   rG  z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   — | j                   | j                  | j                  dœS )zx
        Return a dict containing only converter and takes_self -- the rest gets
        computed when loading.
        ©r<   rb  r¦  r¸  r   s    r!   r  zConverter.__getstate__D  s%   € ð Ÿ™ØŸ/™/Ø×+Ñ+ñ
ð 	
r#   c                ó(   —  | j                   di |¤Ž y)z+
        Load instance from state.
        Nr   rÖ  r’  s     r!   r  zConverter.__setstate__O  s   € ð 	ˆ�‰Ñ˜Ór#   N)rw   r„   r‡  r„   )rw   r„   rB  r„   r‡  r„   )r&   r'   r(   r)   rB  r&  rN  rd  rG  r  r  r   r#   r!   rE  rE  ò
  s>   „ ñð(€Ið 16À5ô 9ð6 ò/ó ð/ó\ò"	
ór#   r¸  c                óà  ‡— t        j                  d| «      } t        |t        «      r|}n<t        |t        t
        f«      r|D �ci c]  }|t        «       “Œ }}nd}t        |«      ‚|j                  dd«      }|j                  dd«      }	|j                  dd«      }
i Š|�‰j                  |«       |�|‰d<   |	�|	‰d<   |
�|
‰d<   t        j                  | |i ˆfd„«      }t        j                  t        t        «      5  t!        j"                  d«      j$                  j'                  d	d
«      |_        ddd«       |j                  dd«      }t+        ||j'                  d«      |j'                  d«      d«      \  |d<   |d<    t-        dd|i|¤Ž|«      }|j/                  «       D ��ci c]  \  }}|j0                  €Œ||j0                  “Œ! c}}|_        |S c c}w # 1 sw Y   ŒªxY wc c}}w )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  r&  c                ó&   •— | j                  ‰«      S r/   )r*  )rj  rv   s    €r!   r¬   zmake_class.<locals>.<lambda>³  s   ø€ ¸¿	¹	À$»€ r#   r
   r&   Ú__main__r9   r?   rA   TrÁ   r   )ÚunicodedataÚ	normalizerJ   r  rK   rL   rR   rF   Úpopr*  r  Ú	new_classr:  r;  r<  rG   r7  Ú	_getframeÚ	f_globalsr¨   r'   rÇ  rõ   r¹   r3   r€   )r–   r{   ÚbasesÚ
class_bodyÚattributes_argumentsrg  rŸ   rQ   r9  r;  Ú	user_initÚtype_r9   rŒ   rR  rS  rv   s                   @r!   Ú
make_classrÉ  k  só  ø€ ô` × Ñ  ¨Ó.€Dä�%œÔØ‰Ü	�EœD¤%˜=Ô	)Ø).Ö/ A�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Ø˜
ó
ˆÔ÷
ð ×
"Ñ
" 5¨$Ó
/€Cô 	"ØØ× Ñ  Ó&Ø× Ñ  Ó)Øó		ñØ˜TÑ"Ø˜WÑ%ð 9Œ&Ñ
8�xÐ
8Ð#7Ñ
8¸Ó
?€Cð 'Ÿn™nÓ.÷Ù�a˜°!·&±&Ñ2Dˆˆ1�6‰6‰	ó€CÔð €Jùò_ 0÷2
ð 
üó&s   ÁGÄ 5GÆ*G*Æ?G*ÇG')r  ræ  c                  ó$   — e Zd ZdZ e«       Zd„ Zy)Ú_AndValidatorz2
    Compose many validators to a single one.
    c                ó:   — | j                   D ]  } ||||«       Œ y r/   )Ú_validators)r    rï   r²   ræ   rS  s        r!   r¤  z_AndValidator.__call__Þ  s#   € Ø×!Ñ!ò 	!ˆAÙˆd�D˜%Õ ñ	!r#   N)r&   r'   r(   r)   rR   rÍ  r¤  r   r#   r!   rË  rË  Ö  s   „ ññ “(€Kó!r#   rË  c                 ó˜   — g }| D ]0  }|j                  t        |t        «      r|j                  n|g«       Œ2 t        t	        |«      «      S )a  
    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×   rJ   rË  rÍ  rL   )Ú
validatorsrv  r7   s      r!   rN   rN   ã  sO   € ð €DØò 
ˆ	Ø�‰ä˜)¤]Ô3ð ×!Ò!à�õ	
ð
ô œ˜t›Ó%Ð%r#   c                 óº  ‡ — t        d„ ‰ D «       «      }|rˆ fd„}nˆ fd„}‰ s*t        d«      }|j                  j                  ||dœ«       n~t	        ‰ d   «      j                  «       }|r||j                  d<   ‰ d   }t        st        |t        «      r|j                  }t	        |«      j                  «       }|r||j                  d	<   |rt        |d
d
¬«      S |S )a…  
    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  ó<   K  — | ]  }t        |t        «      –— Œ y ­wr/   ©rJ   rE  )r±   Úcs     r!   r³   zpipe.<locals>.<genexpr>
  s   è ø€ ÒG°qœ* Q¬	×2ÑGùs   ‚c                óZ   •— ‰D ]$  }t        |t        «      r
 || ||«      n || «      } Œ& | S r/   rÒ  )r¶  rï   r›  rÓ  Ú
converterss       €r!   Úpipe_converterzpipe.<locals>.pipe_converter  s9   ø€ Øò �ä+5°a¼Ô+C‘A�c˜4 Ô'ÉÈ3Ëñ ðð
 ˆJr#   c                ó&   •— ‰D ]
  } || «      } Œ | S r/   r   )r¶  rÓ  rÕ  s     €r!   rÖ  zpipe.<locals>.pipe_converter  s"   ø€ Øò �Ù˜“f‘ðð ˆJr#   ÚA)r¶  r‡  r   r¶  r^   r‡  Tr§  )rÅ  r	   r€   r*  r   r°  r   rJ   rE  r¤  r±  )rÕ  Úreturn_instancerÖ  rØ  ÚtÚlastr³  s   `      r!   rM   rM   ú  sÓ   ø€ ô  ÑG¸JÔGÓG€Oáõ	ô	ñ ä�C‹LˆØ×&Ñ&×-Ñ-°aÀ1Ñ.EÕFô ! ¨A¡Ó/×DÑDÓFˆÙØ45ˆN×*Ñ*¨5Ñ1à˜"‰~ˆÝ¤
¨4´Ô ;Ø—=‘=ˆDô " $Ó'×7Ñ7Ó9ˆÙØ79ˆN×*Ñ*¨8Ñ4áÜ˜°DÀdÔKÐKØÐr#   )NrY  )
rW   r„   rX   údict[str, Any] | NonerY   úMapping[str, object] | NonerZ   r„   r‡  rˆ  r/   )
rW   r„   rZ   r„   rX   rÜ  rf   rÝ  r‡  zdict[str, Any])rs   r„   rt   z	list[str]r‡  r3   )r‡  z'tuple[list[Attribute], dict[str, type]])r‡  rz   )T)NNNNNNNFFTFFFFFNNFFNNNTN)rŒ   r3   rê  r„   r‡  r„   )
rŒ   r3   r{   r|   r  r  r  r  r‡  útuple[str, dict])rŒ   r3   r{   r|   )r{   rK   r‡  rÞ  )r‡  rÞ  )NN)r‡  útuple[str, dict, dict]rU  rV  )rw   r„   ræ   r„   rC  r  r‡  r„   )r  r  r  r  r�   r~   )r{   r|   rÙ  r  rf  r  rg  r  r:  r  rh  r  ri  r  r�   r~   r  r  r>  r  r=  r  rj  r„   r‡  rß  )r–   r„   r‡  r„   )kÚ
__future__r   r4  r:  rˆ  r*   r  rJ  rc   r7  r  r¾  Úcollections.abcr   r   Ú	functoolsr   Útypingr   r   r	   rY  r   r   r   r   r   r   r   r   r   Ú
exceptionsr   r   r   r   Úobjecträ   r¾   rc  r‡   rI  r€  r�  r9  rM   r  r  r  ÚEnumr   r   Úintr-   rR   r\   rk   rx   rz   r‰   rŽ   r¢   r¤   rÏ   rÜ   rç   rê   r—   rò   rÇ  rE   rÑ  r{   rõ   r×  rØ   r‰  r  r§  r¨  r±  r  ri  r(  rì   r.  r3  r“  rD  rI  rK  rM  rW  r6  rÀ   r¼   rB  Ú_ar–   r:   rO   rI   Ú_frE  rÉ  rË  rN   )r–   rŸ   s   00r!   ú<module>rê     s	  ðõ #ã 
Û Û Û Û Û Û Û 
Û Û ç -Ý %ß +Ñ +÷ (Ñ '÷÷ ÷ó ð ×!Ñ!€Ø'Ð ðÐ ð )Ð à2˜E×2Ñ2°2Ó6Ð ñ ‹H€	à"�g—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ôð Ö
=�˜AŸF›F q§v¡v°Ó'<Š1Ò
=ô€	÷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É"NÉ7NÊN
ÊN
Ê(N
Ë$NÌ(N