§
    £”j‘ž ã                  ó  — 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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%j&        Z'd
Z(dZ)dZ* e
j+        i ¦  «        Z, e%¦   «         Z- ej.        ej/        ej0        ¦  «        Z1 G d„ dej2        ¦  «        Z3e3j4        Z4	  G d„ de5¦  «        Z6e4ddddddddddddddfd„Z7	 	 d„d…d„Z8	 d†d‡d „Z9dˆd%„Z: G d&„ d'e¦  «        Z;d(„ Z<d)„ Z=d‰d+„Z>d,„ Z?dŠd-„Z@d.„ ZAd/„ ZBd0„ ZCd1„ ZD G d2„ d3¦  «        ZEd4„ ZFd5„ ZG	 d‹d6„ZH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dŒd8„ZIeIZJ	 d9„ ZKd�d<„ZLdŽdC„ZMd�dD„ZNdE„ ZOd�dG„ZPdH„ ZQd†dI„ZRd‘dJ„ZSd’dK„ZTdL„ ZUdM„ ZVdN„ Z0dO„ ZWd“dQ„ZXd”dU„ZYd•dX„ZZd–dZ„Z[d•d[„Z\d—d_„Z]d˜dj„Z^d™dl„Z_ G dm„ dn¦  «        Z`do„ e`ja        D ¦   «         Zb eN eR eTe`eb¬p¦  «        dq„ ebD ¦   «         ¬p¦  «        dr„ ebD ¦   «         ¬p¦  «        Z` G ds„ dt¦  «        Zc eR eTec¦  «        ¦  «        Zc G du„ dv¦  «        Zddw„ edja        D ¦   «         Ze eR eTedee¬p¦  «        ee¬p¦  «        Zd G dx„ dy¦  «        Zfdz„ efja        D ¦   «         Zg eN eR eTefeg¬p¦  «        eg¬p¦  «        eg¬p¦  «        Zf G d{„ dW¦  «        Zhd|„ d}D ¦   «         Zg eN eR eTeheg¬p¦  «        eg¬p¦  «        eg¬p¦  «        Zhe%fdfd~„Zi eIdd¬¦  «         G d€„ d�¦  «        ¦   «         Zjd‚„ Zkdƒ„ Z.dS )šé    )Ú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dS )Ú_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                ó   — dS )NÚNOTHING© ©Úselfs    úY/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/attr/_make.pyÚ__repr__z_Nothing.__repr__K   s   € Øˆyó    c                ó   — dS )NFr   r   s    r!   Ú__bool__z_Nothing.__bool__N   s   € Øˆur#   N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚenumÚautor   r"   r%   r   r#   r!   r   r   >   sK   € € € € € ðð ð ˆdŒi‰kŒk€Gðð ð ðð ð ð ð r#   r   c                  ó0   — e Zd ZdZ ed¦  «        dfd„ZdS )Ú_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__f   s   € Ø  %Ð'Ð'r#   )r&   r'   r(   r)   Útyper2   r   r#   r!   r-   r-   Z   sA   € € € € € ð	ð 	ð ,0¨4°©:¬:¸Rð (ð (ð (ð (ð (ð (r#   r-   Tc                óh  — t          |||d¦  «        \  }}}}|�|dur|durd}t          |¦  «        ‚|	�I| 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*
    .. versionchanged:: 25.4.0
       *kw_only* can now be None, and its default is also changed from False to
       None.
    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   j   sø  € õt $>ØˆR�˜ñ$ô $Ñ €Bˆ��yð Ð˜D¨Ð,Ð,°¸UÐ1BÐ1BØFˆÝ˜‰nŒnÐàÐØ�'Ð!Ð!àOð õ ˜S‘/”/Ð!Ý˜Ñ Ô ð 	"Ø>ˆCÝ˜S‘/”/Ð!Ý˜'Ñ"Ô"ˆàÐØˆõ �*�t¥U˜mÑ,Ô,ð /Ý”\ :Ð.ˆ
àð %•Z 	­Dµ%¨=Ñ9Ô9ð %Ý˜)Ð$ˆ	àð %•Z 	­Dµ%¨=Ñ9Ô9ð %Ý˜)Ð$ˆ	åð ð ð Ø�ðà�)ðð ˆTðð ˆDð	ð
 ˆTðð ˆTðð �)ðð �ðð ˆTðð �ðð ˆ2ðð ˆvðð ˆeðð �)ðð �:ðð  ˆeð!ð r#   Ú ÚscriptÚstrÚglobsúdict[str, Any] | NoneÚlocsúMapping[str, object] | NoneÚfilenameÚreturnÚNonec                óJ   — t          | |d¦  «        }t          |||¦  «         dS )z[
    Evaluate the script with the given global (globs) and local (locs)
    variables.
    ÚexecN)ÚcompileÚeval)rT   rV   rX   rZ   Úbytecodes        r!   Ú_compile_and_evalrb   Ø   s-   € õ �v˜x¨Ñ0Ô0€HÝˆ�5˜$ÑÔÐÐÐr#   Úlocalsúdict[str, Any]c                ó  — |€i n|}d}|}	 t          | ¦  «        d|                      d¦  «        |f}t          j                             ||¦  «        }||k    rn|dd…         › d|› d�}|dz  }Œct          | |||¦  «         |S )zP
    Cache the script with _linecache_, compile it and return the _locals_.
    Nr
   Téÿÿÿÿú-ú>)ÚlenÚ
splitlinesÚ	linecacheÚcacheÚ
setdefaultrb   )	rT   rZ   rV   rc   rX   ÚcountÚbase_filenameÚlinecache_tupleÚold_vals	            r!   Ú_linecache_and_compilerr   æ   s¸   € ð �ˆ2ˆ2 V€Dð €EØ€Mðå�‰KŒKØØ×Ò˜dÑ#Ô#Øð	
ˆõ ”/×,Ò,¨X°ÑGÔGˆØ�oÒ%Ð%Øà# C R CÔ(Ð3Ð3¨5Ð3Ð3Ð3ˆØ�‰
ˆðõ �f˜e T¨8Ñ4Ô4Ð4à€Kr#   Úcls_nameÚ
attr_namesú	list[str]r3   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   )rs   rt   Úattr_class_nameÚbodyry   Ú	attr_namerz   s          r!   Ú_make_attr_tuple_classr€   	  sr   € ð "Ð-Ð-Ð-€OØ€DÝ! *Ñ-Ô-ð +ð +‰ˆˆ9àð 	ð 	ð 	ð 	õ # 6Ñ*Ô*ˆˆY‰ˆÝ�¥% ¨4Ñ0Ô0Ð0r#   c                  ó.   — e Zd ZU ded<   ded<   ded<   dS )Ú_Attributesr3   Úattrsúlist[Attribute]Ú
base_attrsúdict[str, type]Úbase_attrs_mapN)r&   r'   r(   Ú__annotations__r   r#   r!   r‚   r‚      s3   € € € € € € Ø€K€K�KØÐÐÑØ#Ð#Ð#Ñ#Ð#Ð#r#   r‚   c                ó¼   — t          | ¦  «        } |                      d¦  «        r|                      d¦  «        r
| dd…         } |                      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
   rf   )rU   Ú
startswithÚendswithÚ_CLASSVAR_PREFIXES)Úannots    r!   Ú_is_class_varr�   &  s\   € õ �‰JŒJ€Eð ×Ò˜
Ñ#Ô#ð ¨¯ª°zÑ(BÔ(Bð Ø�a˜�d”ˆà×ÒÕ.Ñ/Ô/Ð/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•   7  s   € ð ˜#œ,Ð&Ð&r#   ú'tuple[list[Attribute], dict[str, type]]c                ó¼  — g }i }t          | j        dd…         ¦  «        D ]\}t          |dg ¦  «        D ]H}|j        s	|j        |v rŒ|                     d¬¦  «        }|                     |¦  «         |||j        <   ŒIŒ]g }t          ¦   «         }t          |¦  «        D ]<}|j        |v rŒ|                     d|¦  «         | 	                    |j        ¦  «         Œ=||fS )zQ
    Collect attr.ibs from base classes of *cls*, except *taken_attr_names*.
    r
   rf   Ú__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Ô9ð 	-ð 	-ˆAØŒ{ð ˜aœfÐ(8Ð8Ð8Øà—’ 4�Ñ(Ô(ˆAØ×Ò˜aÑ Ô Ð Ø$,ˆM˜!œ&Ñ!Ð!ð	-ð €HÝ‰5Œ5€DÝ�jÑ!Ô!ð ð ˆØŒ6�Tˆ>ˆ>ØØ�Š˜˜1ÑÔÐØ�Š�”ÑÔÐÐà�]Ð"Ð"r#   c                ó  — g }i }| j         dd…         D ]o}t          |dg ¦  «        D ][}|j        |v rŒ|                     d¬¦  «        }|                     |j        ¦  «         |                     |¦  «         |||j        <   Œ\Œp||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
   rf   r˜   Tr™   )rœ   r�   rž   rŸ   r£   r    )r“   r¤   r…   r¥   r¦   r§   s         r!   Ú_collect_base_attrs_brokenr¬   _  sµ   € ð €JØ€Mð ”K  " Ô%ð -ð -ˆÝ˜Ð#4°bÑ9Ô9ð 	-ð 	-ˆAØŒvÐ)Ð)Ð)Øà—’ 4�Ñ(Ô(ˆAØ× Ò  ¤Ñ(Ô(Ð(Ø×Ò˜aÑ Ô Ð Ø$,ˆM˜!œ&Ñ!Ð!ð	-ð �}Ð$Ð$r#   c           
     óê  ‡‡‡‡‡— | j         Št          | ¦  «        Š|�#t          |                     ¦   «         ¦  «        }�n0|du rþd„ ‰                     ¦   «         D ¦   «         }g }t	          ¦   «         }‰                     ¦   «         D ]y\  }	}
t          |
¦  «        rŒ|                     |	¦  «         ‰                     |	t          ¦  «        }|j	        t          urt          |¦  «        }|                     |	|f¦  «         Œz||z
  }|r:t          dd                     t          |ˆfd„¬¦  «        ¦  «        z   dz   ¦  «        ‚n.t          d	„ ‰                     ¦   «         D ¦   «         d
„ ¬¦  «        }t           j        Št$          j        j        Šˆˆˆˆfd„|D ¦   «         }|rt+          | d„ |D ¦   «         ¦  «        \  }}nt-          | d„ |D ¦   «         ¦  «        \  }}‰t$          j        j        u rd„ |D ¦   «         }d„ |D ¦   «         }||z   }|D ]a}|j        sXt3                               |¦  «        dt7          |j        ¦  «        ¦  «         t3                               |¦  «        dd¦  «         Œb|�t;           || |¦  «        ¦  «        }d}d„ |D ¦   «         D ]<}|du r"|j        t          u rd|›�}t?          |¦  «        ‚|du r|j        t          urd}Œ=|D ]a}|j        sXt3                               |¦  «        dt7          |j        ¦  «        ¦  «         t3                               |¦  «        dd¦  «         Œbd„ |D ¦   «         }tA          | j!        |¦  «        }tE           ||¦  «        ||¦  «        S )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`.
    NTc                ó4   — h | ]\  }}|j         t          u ¯|’ŒS r   ©Ú	__class__rO   ©Ú.0rž   Úattrs      r!   ú	<setcomp>z#_transform_attrs.<locals>.<setcomp>“  s3   € ð 
ð 
ð 
á��dØŒ~¥Ð.Ð.ð à.Ð.Ð.r#   z1The following `attr.ib`s lack a type annotation: ú, c                ó8   •— ‰                      | ¦  «        j        S r/   )ÚgetÚcounter)ÚnÚcds    €r!   ú<lambda>z"_transform_attrs.<locals>.<lambda>©  s   ø€ °b·f²f¸Q±i´iÔ6G€ r#   )Úkeyú.c              3  ó@   K  — | ]\  }}|j         t          u ¯||fV — Œd S r/   r¯   r±   s      r!   ú	<genexpr>z#_transform_attrs.<locals>.<genexpr>¯  sC   è è € ð ð á�D˜$Ø”>¥]Ð2Ð2ð �t�à2Ð2Ð2Ð2ðð r#   c                ó   — | d         j         S ©Nr
   )r¸   )Úes    r!   r»   z"_transform_attrs.<locals>.<lambda>´  s   € ˜!˜Aœ$œ,€ r#   c           
     ó\   •— g | ](\  }} ‰||‰‰u‰                      |¦  «        ¦  «        ‘Œ)S r   )r·   )r²   r   ÚcaÚannsÚfcar>   Únos      €€€€r!   ú
<listcomp>z$_transform_attrs.<locals>.<listcomp>¹  sX   ø€ ð ð ð ñ ˆI�rð 	ˆØØØ˜2ÐØ�HŠH�YÑÔñ		
ô 	
ðð ð r#   c                ó   — h | ]	}|j         ’Œ
S r   ©rž   ©r²   r§   s     r!   r´   z#_transform_attrs.<locals>.<setcomp>Å  ó   € Ð,Ð,Ð,˜Q�!”&Ð,Ð,Ð,r#   c                ó   — h | ]	}|j         ’Œ
S r   rÊ   rË   s     r!   r´   z#_transform_attrs.<locals>.<setcomp>É  rÌ   r#   c                ó:   — g | ]}|                      d ¬¦  «        ‘ŒS ©T)r>   ©rŸ   rË   s     r!   rÈ   z$_transform_attrs.<locals>.<listcomp>Í  s&   € Ð?Ð?Ð?°�Q—X’X d�XÑ+Ô+Ð?Ð?Ð?r#   c                ó:   — g | ]}|                      d ¬¦  «        ‘ŒS rÏ   rÐ   rË   s     r!   rÈ   z$_transform_attrs.<locals>.<listcomp>Î  s&   € ÐAÐAÐA°�a—h’h t�hÑ,Ô,ÐAÐAÐAr#   rD   Úalias_is_defaultFc              3  ó>   K  — | ]}|j         d u¯|j        d u ¯|V — ŒdS )FN)r;   r>   rË   s     r!   r¿   z#_transform_attrs.<locals>.<genexpr>ä  s:   è è € ÐMÐM�A !¤&°Ð"5Ð"5¸!¼)ÀuÐ:LÐ:LˆaÐ:LÐ:LÐ:LÐ:LÐMÐMr#   zlNo mandatory attributes allowed after an attribute with a default value or factory.  Attribute in question: c                ó   — g | ]	}|j         ‘Œ
S r   rÊ   rË   s     r!   rÈ   z$_transform_attrs.<locals>.<listcomp>õ  s   € Ð(Ð(Ð(˜Q�!”&Ð(Ð(Ð(r#   )#r’   r   rK   Úitemsr¡   r�   r£   r·   r   r°   rO   rR   r    r   ÚjoinÚsortedÚ	AttributeÚfrom_counting_attrÚ
ClassPropsÚKeywordOnlyÚNOrª   r¬   ÚFORCErD   Ú_OBJ_SETATTRÚ__get__Ú_default_init_alias_forrž   rL   r6   rG   r€   r&   r‚   )r“   ÚtheseÚauto_attribsr>   Úcollect_by_mroÚfield_transformerÚca_listÚca_namesÚannot_namesr   r3   r§   ÚunannotatedÚ	own_attrsr…   r¥   rƒ   Úhad_defaultrQ   rt   Ú
AttrsClassrÅ   rº   rÆ   rÇ   s      `                 @@@@r!   Ú_transform_attrsrì   {  s@  øøøøø€ ð$ 
Œ€BÝ˜CÑ Ô €DàÐÝ�u—{’{‘}”}Ñ%Ô%ˆ‰Ø	˜Ð	Ð	ð
ð 
à Ÿhšh™jœjð
ñ 
ô 
ˆð
 ˆÝ‘e”eˆØ#Ÿzšz™|œ|ð 	+ð 	+‰OˆI�tÝ˜TÑ"Ô"ð ØØ�OŠO˜IÑ&Ô&Ð&Ø—’�y¥'Ñ*Ô*ˆAàŒ{¥-Ð/Ð/Ý˜1‘I”I�Ø�NŠN˜I q˜>Ñ*Ô*Ð*Ð*à Ñ,ˆØð 	Ý+ØCØ—)’)Ý˜;Ð,GÐ,GÐ,GÐ,GÐHÑHÔHñô ñð ñ	ñô ð ð	õ ðð à"$§(¢(¡*¤*ðñ ô ð
 'Ð&ð
ñ 
ô 
ˆõ Ô
&€CÝ	Ô	Ô	"€Bðð ð ð ð ð ð ð %ðñ ô €Ið ð 
Ý$7ØÐ,Ð, )Ð,Ñ,Ô,ñ%
ô %
Ñ!ˆ
�M�Mõ %?ØÐ,Ð, )Ð,Ñ,Ô,ñ%
ô %
Ñ!ˆ
�Mð •*Ô(Ô.Ð.Ð.Ø?Ð?°YÐ?Ñ?Ô?ˆ	ØAÐA°jÐAÑAÔAˆ
à˜Ñ"€Eð
 ð >ð >ˆØŒwð 	>å× Ò  Ñ#Ô# GÕ-DÀQÄVÑ-LÔ-LÑMÔMÐMÝ× Ò  Ñ#Ô#Ð$6¸Ñ=Ô=Ð=øàÐ$ÝÐ'Ð'¨¨UÑ3Ô3Ñ4Ô4ˆð €KØMÐM˜ÐMÑMÔMð ð ˆØ˜$ÐÐ 1¤9µÐ#7Ð#7ð Gð  BCð  Gð  GˆCÝ˜S‘/”/Ð!à˜%ÐÐ A¤IµWÐ$<Ð$<ØˆKøð ð >ð >ˆØŒwð 	>Ý× Ò  Ñ#Ô# GÕ-DÀQÄVÑ-LÔ-LÑMÔMÐMÝ× Ò  Ñ#Ô#Ð$6¸Ñ=Ô=Ð=øð )Ð( %Ð(Ñ(Ô(€JÝ'¨¬°jÑAÔA€Jå�z�z %Ñ(Ô(¨*°mÑDÔDÐDr#   c                ó2  — g d¢}|�|                      d¦  «         n|                     g d¢¦  «         |                     ddg¦  «         t          |d¦  «        }| t          j        |dœ}t          d                     |¦  «        ||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)rc   Ú__getattr__)r    ÚextendÚ_generate_unique_filenamerÞ   rß   rr   rÖ   )rî   rð   r“   ÚlinesÚunique_filenameÚglobs         r!   Ú_make_cached_property_getattrrù   û  sè   € ðð ð €Eð Ð#Ø�ŠØ:ñ	
ô 	
ð 	
ð 	
ð 	�Šð	ð 	ð 	ñ	
ô 	
ð 	
ð 
‡L‚Là$Ø)ð	
ñô ð õ 0°°YÑ?Ô?€Oð /Ý+Ô3Ø,ðð €Dõ "Ø�	Š	�%ÑÔ˜/¨4¸À¸ðñ ô àôð r#   c                ó~   — t          | t          ¦  «        r"|dv rt                               | ||¦  «         dS 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  /  sL   € õ �$�Ñ&Ô&ð ¨4ð 4ð ,ð ,õ 	×!Ò! $¨¨eÑ4Ô4Ð4Øˆå
Ðr#   c                ó€   — t          | t          ¦  «        r#|dk    rt                               | |¦  «         dS t          ‚)z4
    Attached to frozen classes as __delattr__.
    rÿ   N)rJ   r   Ú__delattr__r   )r    rž   s     r!   Ú_frozen_delattrsr  @  sA   € õ �$�Ñ&Ô&ð ¨4°;Ò+>Ð+>Ý×!Ò! $¨Ñ-Ô-Ð-Øˆå
Ðr#   c                 ó  — 	 | \  }n1# t           $ r$ dt          | ¦  «        › d�}t          |¦  «        d‚w xY w|j        }t	          |¦  «        }|D ]/}|j        sŒ
|j        }|j        }||vrt          ||¦  «        ||<   Œ0 |di |¤ŽS )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   ri   rF   r°   Úfieldsr;   rž   rD   r�   )	ÚargsÚchangesÚinstrQ   r“   rƒ   r§   r   Ú	init_names	            r!   rŸ   rŸ   K  sÅ   € ðJ'Ø‰ˆˆøÝð 'ð 'ð 'àO½¸T¹¼ÐOÐOÐOð 	õ ˜‰nŒn $Ð&ð	'øøøð Œ.€CÝ�3‰KŒK€EØð :ð :ˆØŒvð 	ØØ”Fˆ	Ø”Gˆ	Ø˜GÐ#Ð#Ý!(¨¨yÑ!9Ô!9ˆG�IÑøàˆ3ˆ>ˆ>�ˆ>ˆ>Ðs   ‚ ‡.5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d"S )&Ú_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_setattrr“   r3   râ   ÚboolÚpropsrÚ   Úhas_custom_setattrc                óÚ  — t          ||||j        |j        |j        ¦  «        \  }}}|| _        |j        rt          |j        ¦  «        ni | _        || _	        d„ |D ¦   «         | _
        || _        t          d„ |D ¦   «         ¦  «        | _        |j        | _        |j        | _        |j        | _        |j        t(          j        j        u | _        t1          t3          |dd¦  «        ¦  «        | _        d| _        | j        r8|j        }	t;          j        |	¦  «        }
t?          |
j         ¦  «        dk    | _        t1          t3          |dd¦  «        ¦  «        | _!        t1          |¦  «         | _"        |j#        | _$        |j%        | _&        || _'        d| _(        | j	        | j        d<   || j        d<   |j        r&tR          | j        d	<   tT          | j        d
<   d| _(        n�| j&        tV          tX          j-        tX          j.        fv rjdx}}|D ]}|j/        �d}|j0        �d}|r|r nŒ| j&        tV          k    r|s|r.| j&        tX          j-        k    r|r| j&        tX          j.        k    r	|sd | _&        |j1        r'|  2                    ¦   «         \  | j        d<   | j        d<   g | _3        d| _4        tk          | j        d¦  «        rtk          | j        d¦  «        s| j6        | _7        d S | j8        | _7        d S )Nc                ó   — h | ]	}|j         ’Œ
S r   rÊ   rË   s     r!   r´   z)_ClassBuilder.__init__.<locals>.<setcomp>¶  s   € Ð7Ð7Ð7 q˜AœFÐ7Ð7Ð7r#   c              3  ó$   K  — | ]}|j         V — Œd S r/   rÊ   rË   s     r!   r¿   z)_ClassBuilder.__init__.<locals>.<genexpr>¸  s$   è è € Ð 7Ð 7¨A ¤Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7r#   Ú__attrs_pre_init__Fr
   Ú__attrs_post_init__r˜   Ú__attrs_props__r  r  TÚ__getstate__Ú__setstate__r'   r(   )9rì   r>   Úcollected_fields_by_mrorä   rò   Ú
is_slottedÚdictr’   r  r  r  r  rL   r  r!  Ú	is_frozenr  Úhas_weakref_slotr"  ÚhashabilityrÚ   ÚHashabilityÚHASHABLE_CACHEDr  r$  r�   r  r  r*  ÚinspectÚ	signatureri   Ú
parametersr  r  Úis_exceptionr  Úon_setattr_hookr  r  r#  r  r  Ú_DEFAULT_ON_SETATTRr   ÚvalidateÚconvertr7   r<   Úadded_picklingÚ_make_getstate_setstater   r  ÚhasattrÚ_add_method_dunders_safer  Ú_add_method_dunders_unsafe)r    r“   rá   râ   r%  r&  rƒ   r…   Úbase_mapÚpre_init_funcÚpre_init_signatureÚhas_validatorÚhas_converterr§   s                 r!   Ú__init__z_ClassBuilder.__init__¢  s=  € õ '7ØØØØŒMØÔ)ØÔ#ñ'
ô '
Ñ#ˆˆz˜8ð ˆŒ	Ø/4Ô/?ÐG�˜cœlÑ+Ô+Ð+ÀRˆŒØˆŒØ7Ð7¨JÐ7Ñ7Ô7ˆÔØ&ˆÔÝ Ð 7Ð 7°Ð 7Ñ 7Ô 7Ñ7Ô7ˆÔØÔ&ˆŒØ”ˆŒØ"Ô3ˆÔàÔ¥Ô!7Ô!GÐGð 	Ôõ "¥'¨#Ð/CÀUÑ"KÔ"KÑLÔLˆÔØ"'ˆÔØÔð 	Mð  Ô2ˆMÝ!(Ô!2°=Ñ!AÔ!AÐÝ&)Ð*<Ô*GÑ&HÔ&HÈ1Ò&LˆDÔ#Ý"¥7¨3Ð0EÀuÑ#MÔ#MÑNÔNˆÔÝ#'¨¡;¤;˜ˆÔØÔ)ˆŒØ Ô0ˆÔà#5ˆÔ Ø"'ˆÔà,0¬KˆŒÐ(Ñ)Ø,1ˆŒÐ(Ñ)àŒ?ð 	(Ý,<ˆDŒN˜=Ñ)Ý,<ˆDŒN˜=Ñ)à&*ˆDÔ#Ð#ØÔÝÝÔÝŒOð"
ð 
ð 
ð
 -2Ð1ˆM˜MØð ð �Ø”;Ð*Ø$(�MØ”;Ð*Ø$(�Mà ð  ]ð Ø�Eøð Ô$Õ(;Ò;Ð;Ø*ð <Ø.;ð <ð Ô$­Ô(8Ò8Ð8ÀÐ8ØÔ$­¬Ò7Ð7ÀÐ7ð
 $(�Ô àÔð 	/ð ×,Ò,Ñ.Ô.ñØ”˜~Ñ.Ø”˜~Ñ.ð ð 	Ôð !ˆÔõ �t”y ,Ñ/Ô/ð 	GµwØŒI�~ñ8
ô 8
ð 	Gð (,Ô'DˆDÔ$Ð$Ð$à'+Ô'FˆDÔ$Ð$Ð$r#   c                ó"   — d| j         j        › d�S )Nz<_ClassBuilder(cls=z)>)rò   r&   r   s    r!   r"   z_ClassBuilder.__repr__  s   € Ø; T¤YÔ%7Ð;Ð;Ð;Ð;r#   r[   r\   c                ó  — d                      d„ | j        D ¦   «         ¦  «        }i }| j        D ]\  }}}|                     |¦  «         Œt          |t	          | j        d¦  «        |¦  «        }| j        D ]\  }}} || j        |¦  «         ŒdS )z=
        Evaluate any registered snippets in one go.
        rñ   c                ó   — g | ]
}|d          ‘ŒS )r   r   )r²   Úsnippets     r!   rÈ   z0_ClassBuilder._eval_snippets.<locals>.<listcomp>  s   € ÐLÐLÐL¨7˜G AœJÐLÐLÐLr#   ÚmethodsN)rÖ   r   Úupdaterr   rõ   rò   r  )r    rT   rV   Ú_Úsnippet_globsrX   Úhooks          r!   Ú_eval_snippetsz_ClassBuilder._eval_snippets
  s¹   € ð —’ÐLÐL°dÔ6KÐLÑLÔLÑMÔMˆØˆØ#'Ô#8ð 	(ð 	(ÑˆAˆ}˜aØ�LŠL˜Ñ'Ô'Ð'Ð'å%ØÝ% d¤i°Ñ;Ô;Øñ
ô 
ˆð Ô/ð 	'ð 	'‰JˆAˆq�$ØˆD�” Ñ&Ô&Ð&Ð&ð	'ð 	'r#   c                ó`  — |                       ¦   «          | j        du r3|                      ¦   «         }t          j        |¦  «        | j        _        n/|                      ¦   «         }t          rt          j
        |¦  «        }t          |dd¦  «        rd|j        vr|                     ¦   «          |S )zƒ
        Finalize class based on the accumulated configuration.

        Builder cannot be used after calling this method.
        TÚ__attrs_init_subclass__N)rS  r!  Ú_create_slots_classÚweakrefÚrefrò   Ú__attrs_base_of_slotted__Ú_patch_original_classr   ÚabcÚupdate_abstractmethodsr�   r’   rU  )r    r“   s     r!   Úbuild_classz_ClassBuilder.build_class  s¯   € ð 	×ÒÑÔÐØŒ;˜$ÐÐØ×*Ò*Ñ,Ô,ˆCÝ29´+¸cÑ2BÔ2BˆDŒIÔ/Ð/à×,Ò,Ñ.Ô.ˆCÝð 6ÝÔ0°Ñ5Ô5�õ
 �CÐ2°DÑ9Ô9ð	*à)°´Ð=Ð=à×'Ò'Ñ)Ô)Ð)àˆ
r#   c                óÌ  — | j         }| j        }| j        rl| j        D ]d}||vr^t	          ||t
          ¦  «        t
          urAt          j        t          ¦  «        5  t          ||¦  «         ddd¦  «         n# 1 swxY w Y   Œe| j
                             ¦   «         D ]\  }}t          |||¦  «         Œ| j        s+t	          |dd¦  «        rd|_        | j        st           |_        |S )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#  r_  r  rÞ   r  )r    r“   Ú
base_namesrž   r  s        r!   rZ  z#_ClassBuilder._patch_original_class5  sL  € ð ŒiˆØÔ%ˆ
ð Ôð 
	+ØÔ(ð 	+ð 	+�à 
Ð*Ð*Ý  T­9Ñ5Ô5½YÐFÐFõ
 $Ô,­^Ñ<Ô<ð +ð +Ý  TÑ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +øð  œ>×/Ò/Ñ1Ô1ð 	&ð 	&‰KˆD�%Ý�C˜˜uÑ%Ô%Ð%Ð%ð Ô&ð 	/­7ØÐ(¨%ñ,
ô ,
ð 	/ð ).ˆCÔ%àÔ+ð /Ý".�”àˆ
s   ÁA6Á6A:	Á=A:	c           	     ó”  ‡ ‡‡‡‡— ˆ fd„‰ j                              ¦   «         D ¦   «         }t          t          d¦  «        rt          j        ‰ j        ¦  «         ‰ j        sBd|d<   ‰ j        s6‰ j        j        D ])Š‰j	         
                    dd¦  «        rt          |d<    nŒ*i }d}‰ j        j        dd…         D ]OŠ‰j	         
                    dd	¦  «        �d
}|                     ˆfd„t          ‰dg ¦  «        D ¦   «         ¦  «         ŒPt          ‰ j        ¦  «        Š‰ j        }‰ j        r#dt          ‰ j        dd¦  «        vrd|vr|s|dz  }d„ |                     ¦   «         D ¦   «         }g }|rÂt'          ‰ j        ¦  «        }|                     ¦   «         D ]T\  }}	||fz  }||= |                     |	¦  «         t+          j        |	¦  «        j        }
|
t*          j        j        ur|
||<   ŒU| 
                    d¦  «        }|�|                     |¦  «         t5          ||‰ j        ¦  «        |d<   ˆfd„|D ¦   «         Šˆfd„|                     ¦   «         D ¦   «         Šˆfd„‰D ¦   «         Š|                     ‰¦  «         ‰ j        r‰                     t8          ¦  «         t;          ‰¦  «        |d<   ‰ j        j        |d<    t?          ‰ j        ¦  «        ‰ j        j         ‰ j        j        |¦  «        }tC          j"        |j	         #                    ¦   «         |¦  «        D ]¢}tI          |tJ          tL          f¦  «        rt          |j'        dd	¦  «        }n=tI          |tP          ¦  «        rt          |j)        dd	¦  «        }nt          |dd	¦  «        }|sŒu|D ]*}	 |j*        ‰ j        u }|r||_*        Œ# tV          $ r Y Œ'w xY wŒ£|S )zL
        Build and return a new class with a `__slots__` attribute.
        c                óV   •— i | ]%\  }}|g t          ‰j        ¦  «        ¢d ‘d‘R v¯"||“Œ&S )r’   Ú__weakref__)rL   r  )r²   ÚkÚvr    s      €r!   ú
<dictcomp>z5_ClassBuilder._create_slots_class.<locals>.<dictcomp>]  sR   ø€ ð 
ð 
ð 
á��1ØÐM�% Ô 0Ñ1Ô1ÐM°:ÐM¸}ÐMÐMÐMÐMð ˆqàMÐMÐMr#   Ú_clear_type_descriptorsFr_  r  r
   rf   ri  NTc                ó2   •— i | ]}|t          ‰|¦  «        “ŒS r   ©r�   )r²   rž   r¦   s     €r!   rl  z5_ClassBuilder._create_slots_class.<locals>.<dictcomp>€  s5   ø€ ð ð ð àð �' (¨DÑ1Ô1ðð ð r#   Ú	__slots__r   )ri  c                óN   — i | ]"\  }}t          |t          ¦  «        ¯||j        “Œ#S r   )rJ   r   Úfunc)r²   rž   Úcached_props      r!   rl  z5_ClassBuilder._create_slots_class.<locals>.<dictcomp>‘  sA   € ð 
ð 
ð 
á!��kÝ˜+¥Ñ7Ô7ð
Ø�+Ô"ð
ð 
ð 
r#   ró   c                ó   •— g | ]}|‰v¯|‘Œ	S r   r   )r²   rž   rf  s     €r!   rÈ   z5_ClassBuilder._create_slots_class.<locals>.<listcomp>°  s#   ø€ ÐGÐGÐG˜t°¸JÐ0FÐ0F�dÐ0FÐ0FÐ0Fr#   c                ó$   •— i | ]\  }}|‰v ¯	||“ŒS r   r   )r²   ÚslotÚslot_descriptorÚ
slot_namess      €r!   rl  z5_ClassBuilder._create_slots_class.<locals>.<dictcomp>¶  s4   ø€ ð 
ð 
ð 
á%��oØ�zÐ!Ð!ð �/à!Ð!Ð!r#   c                ó   •— g | ]}|‰v¯|‘Œ	S r   r   )r²   rž   Úreused_slotss     €r!   rÈ   z5_ClassBuilder._create_slots_class.<locals>.<listcomp>»  s#   ø€ ÐNÐNÐN˜t°TÀÐ5MÐ5M�dÐ5MÐ5MÐ5Mr#   r(   Ú__closure__),r  rÕ   rA  Úsysrm  rò   r#  r  Ú	__bases__r’   r·   rÞ   rœ   rO  r�   r¡   r  r  r"  r   r    r7  r8  Úreturn_annotationÚ	ParameterÚemptyrù   r  Ú_HASH_CACHE_FIELDrL   r(   r3   r&   Ú	itertoolsÚchainÚvaluesrJ   ÚclassmethodÚstaticmethodÚ__func__r|   ÚfgetÚcell_contentsrG   )r    rº   Úexisting_slotsÚweakref_inheritedÚnamesrî   Ú&additional_closure_functions_to_updateÚclass_annotationsrž   rr  Ú
annotationrð   r“   ÚitemÚclosure_cellsÚcellÚmatchr¦   rf  rz  rx  s   `                @@@@r!   rV  z!_ClassBuilder._create_slots_classY  s»  øøøøø€ ð
ð 
ð 
ð 
àœ×,Ò,Ñ.Ô.ð
ñ 
ô 
ˆõ •3Ð1Ñ2Ô2ð 	3ÝÔ'¨¬	Ñ2Ô2Ð2ð Ô&ð 	Ø*/ˆBÐ&Ñ'àÔ+ð Ø $¤	Ô 3ð ð �HØÔ(×,Ò,Ð-DÀeÑLÔLð Ý,8˜˜=Ñ)Ø˜ðð ˆØ!ÐØœ	Ô)¨!¨B¨$Ô/ð 	ð 	ˆHØÔ ×$Ò$ ]°DÑ9Ô9ÐEØ$(Ð!Ø×!Ò!ðð ð ð å '¨°+¸rÑ BÔ Bðñ ô ñô ð ð õ ˜Ô)Ñ*Ô*ˆ
àÔ ˆàÔð	&à¥W¨T¬Y¸ÀRÑ%HÔ%HÐHÐHØ UÐ*Ð*Ø%ð +ð Ð%Ñ%ˆEð
ð 
à%'§X¢X¡Z¤Zð
ñ 
ô 
Ðð 24Ð.Øð 	Ý 0°´Ñ ;Ô ;ÐØ/×5Ò5Ñ7Ô7ð 9ð 9‘
��dà˜$˜Ñ �à�t�HØ6×=Ò=¸dÑCÔCÐCÝ$Ô.¨tÑ4Ô4ÔF�
Ø¥WÔ%6Ô%<Ð<Ð<Ø.8Ð% dÑ+øà!Ÿvšv mÑ4Ô4ÐØÐ+Ø6×=Ò=Ð>NÑOÔOÐOå =Ø!Ð#3°T´Yñ!ô !ˆBˆ}Ñð HÐGÐGÐG uÐGÑGÔGˆ
ð
ð 
ð 
ð 
à)7×)=Ò)=Ñ)?Ô)?ð
ñ 
ô 
ˆð
 OÐNÐNÐN zÐNÑNÔNˆ
Ø
�	Š	�,ÑÔÐØÔð 	1Ø×ÒÕ/Ñ0Ô0Ð0å 
Ñ+Ô+ˆˆ;‰à!œYÔ3ˆˆ>Ñð �d�4”9‰oŒo˜dœiÔ0°$´)Ô2EÀrÑJÔJˆõ ”OØŒL×ÒÑ!Ô!Ð#Iñ
ô 
ð 	1ð 	1ˆDõ ˜$¥­lÐ ;Ñ<Ô<ð 	Cõ !(¨¬°}ÀdÑ KÔ K��Ý˜D¥(Ñ+Ô+ð Cõ !(¨¬	°=À$Ñ GÔ G��å '¨¨m¸TÑ BÔ B�à ð ØØ%ð 1ð 1�ð1Ø Ô.°$´)Ð;�Eð
 ð 1Ø-0˜Ô*øøõ "ð ð ð à�Dðøøøð1ð ˆ
s   ÎN7Î7
OÏOc                óŠ   ‡ — t          ‰ j        |¦  «        \  }}ˆ fd„}‰ j                             |||f¦  «         d‰ _        ‰ S )Nc                óD   •— ‰                      |d         ¦  «        | d<   d S )Nr"   ©r  ©Úcls_dictrV   r    s     €r!   Ú_attach_reprz,_ClassBuilder.add_repr.<locals>._attach_reprë  s&   ø€ Ø#'×#;Ò#;¸EÀ*Ô<MÑ#NÔ#NˆH�ZÑ Ð Ð r#   T)Ú_make_repr_scriptr  r   r    r  )r    ÚnsrT   rV   r™  s   `    r!   Úadd_reprz_ClassBuilder.add_reprè  sc   ø€ Ý)¨$¬+°rÑ:Ô:‰ˆ�ð	Oð 	Oð 	Oð 	Oð 	Oð 	Ô×$Ò$ f¨e°\Ð%BÑCÔCÐCØˆÔØˆr#   c                óv   — | j         sd}t          |¦  «        ‚d„ }|                      |¦  «        | j        d<   | S )Nz3__str__ can only be generated if a __repr__ exists.c                ó*   — |                       ¦   «         S r/   ©r"   r   s    r!   Ú__str__z&_ClassBuilder.add_str.<locals>.__str__÷  s   € Ø—=’=‘?”?Ð"r#   r   )r  rG   r  r  )r    rQ   r   s      r!   Úadd_strz_ClassBuilder.add_strò  sN   € ØÔð 	"ØGˆCÝ˜S‘/”/Ð!ð	#ð 	#ð 	#ð %)×$<Ò$<¸WÑ$EÔ$EˆŒ�yÑ!Øˆr#   c                ón   ‡‡— t          d„ | j        D ¦   «         ¦  «        Šˆfd„}| j        Šˆˆfd„}||fS )zF
        Create custom __setstate__ and __getstate__ methods.
        c              3  ó&   K  — | ]}|d k    ¯|V — ŒdS )ri  Nr   )r²   Úans     r!   r¿   z8_ClassBuilder._make_getstate_setstate.<locals>.<genexpr>  s5   è è € ð !
ð !
Ø¨R°=Ò-@Ð-@ˆBÐ-@Ð-@Ð-@Ð-@ð!
ð !
r#   c                ó"   •‡ — ˆ fd„‰D ¦   «         S )ú9
            Automatically created by attrs.
            c                ó2   •— i | ]}|t          ‰|¦  «        “ŒS r   ro  ©r²   rž   r    s     €r!   rl  zQ_ClassBuilder._make_getstate_setstate.<locals>.slots_getstate.<locals>.<dictcomp>
  s%   ø€ ÐKÐKÐK°$�D�' $¨Ñ-Ô-ÐKÐKÐKr#   r   )r    Ústate_attr_namess   `€r!   Úslots_getstatez=_ClassBuilder._make_getstate_setstate.<locals>.slots_getstate  s"   øø€ ð LÐKÐKÐKÐ:JÐKÑKÔKÐKr#   c                ó  •— t                                | ¦  «        }t          |t          ¦  «        r#t	          ‰|¦  «        D ]\  }} |||¦  «         Œn‰D ]}||v r ||||         ¦  «         Œ‰r |t
          d¦  «         dS dS )r¦  N)rÞ   rß   rJ   rL   Úzipr�  )r    ÚstateÚ_ClassBuilder__bound_setattrrž   r  Úhash_caching_enabledr©  s        €€r!   Úslots_setstatez=_ClassBuilder._make_getstate_setstate.<locals>.slots_setstate  sÂ   ø€ õ +×2Ò2°4Ñ8Ô8ˆOÝ˜%¥Ñ'Ô'ð ;õ $'Ð'7¸Ñ#?Ô#?ð 1ð 1‘K�D˜%Ø#�O D¨%Ñ0Ô0Ð0Ð0ð1ð -ð ;ð ;�DØ˜u�}�}Ø'˜¨¨e°D¬kÑ:Ô:Ð:øð $ð 9Ø�Õ 1°4Ñ8Ô8Ð8Ð8Ð8ð9ð 9r#   )rL   r  r  )r    rª  r°  r¯  r©  s      @@r!   r@  z%_ClassBuilder._make_getstate_setstateý  s‰   øø€ õ
 !ð !
ð !
ØÔ)ð!
ñ !
ô !
ñ 
ô 
Ðð	Lð 	Lð 	Lð 	Lð 	Lð  $Ô/Ðð	9ð 	9ð 	9ð 	9ð 	9ð 	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                             |||f¦  «         ‰ S )	N©ÚfrozenÚ
cache_hashr˜  r1  rX   r[   r\   c                óD   •— ‰                      |d         ¦  «        | d<   d S r²  r–  )r˜  rX   r    s     €r!   Úattach_hashz+_ClassBuilder.add_hash.<locals>.attach_hash2  s&   ø€ Ø#'×#;Ò#;¸DÀÔ<LÑ#MÔ#MˆH�ZÑ Ð Ð r#   )r˜  r1  rX   r1  r[   r\   )Ú_make_hash_scriptrò   r  r  r  r   r    )r    rT   rV   rº  s   `   r!   Úadd_hashz_ClassBuilder.add_hash*  sy   ø€ Ý)ØŒIØŒKØ”<ØÔ'ð	
ñ 
ô 
‰ˆ�ð	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Ô×$Ò$ f¨e°[Ð%AÑBÔBÐBàˆr#   c                óü   ‡ ‡— t          ‰ j        ‰ j        ‰ j        ‰ j        ‰ j        ‰ j        ‰ j        ‰ j        ‰ j	        ‰ j
        ‰ j        d¬¦  «        \  }}Šˆˆ fd„}‰ j                             |||f¦  «         ‰ S )NF©Ú
attrs_initc                óV   •— |d         }‰|_         ‰                     |¦  «        | d<   d S )NrI  ©rˆ   r  ©r˜  rV   r;   r   r    s      €€r!   Ú_attach_initz,_ClassBuilder.add_init.<locals>._attach_initI  s3   ø€ Ø˜Ô$ˆDØ#.ˆDÔ Ø#'×#;Ò#;¸DÑ#AÔ#AˆH�ZÑ Ð Ð r#   ©Ú_make_init_scriptrò   r  r  r  r  r  r!  r  r  r  r  r   r    )r    rT   rV   rÃ  r   s   `   @r!   Úadd_initz_ClassBuilder.add_init9  s¨   øø€ Ý%6ØŒIØŒKØÔØÔ#ØÔØŒLØŒKØÔØÔØŒLØÔØð&
ñ &
ô &
Ñ"ˆ��{ð	Bð 	Bð 	Bð 	Bð 	Bð 	Bð
 	Ô×$Ò$ f¨e°\Ð%BÑCÔCÐCàˆr#   c                óJ   — |                       t          ¦  «        | j        d<   | S )NÚ__replace__)r  rŸ   r  r   s    r!   Úadd_replacez_ClassBuilder.add_replaceR  s!   € Ø(,×(@Ò(@ÅÑ(HÔ(HˆŒ�}Ñ%Øˆr#   c                óR   — t          d„ | j        D ¦   «         ¦  «        | j        d<   d S )Nc              3  ó@   K  — | ]}|j         ¯	|j        °|j        V — Œd S r/   )r;   r>   rž   )r²   Úfields     r!   r¿   z/_ClassBuilder.add_match_args.<locals>.<genexpr>W  sL   è è € ð 1
ð 1
àØŒzð1
ð #(¤-ð1
ØŒJð1
ð 1
ð 1
ð 1
ð 1
ð 1
r#   Ú__match_args__)rL   r  r  r   s    r!   Úadd_match_argsz_ClassBuilder.add_match_argsV  s=   € Ý+0ð 1
ð 1
àœð1
ñ 1
ô 1
ñ ,
ô ,
ˆŒÐ'Ñ(Ð(Ð(r#   c                óü   ‡ ‡— t          ‰ j        ‰ j        ‰ j        ‰ j        ‰ j        ‰ j        ‰ j        ‰ j        ‰ j	        ‰ j
        ‰ j        d¬¦  «        \  }}Šˆˆ fd„}‰ j                             |||f¦  «         ‰ S )NTr¾  c                óV   •— |d         }‰|_         ‰                     |¦  «        | d<   d S )NÚ__attrs_init__rÁ  rÂ  s      €€r!   Ú_attach_attrs_initz8_ClassBuilder.add_attrs_init.<locals>._attach_attrs_initm  s5   ø€ ØÐ)Ô*ˆDØ#.ˆDÔ Ø)-×)AÒ)AÀ$Ñ)GÔ)GˆHÐ%Ñ&Ð&Ð&r#   rÄ  )r    rT   rV   rÒ  r   s   `   @r!   Úadd_attrs_initz_ClassBuilder.add_attrs_init]  s©   øø€ Ý%6ØŒIØŒKØÔØÔ#ØÔØŒLØŒKØÔØÔØŒLØÔØð&
ñ &
ô &
Ñ"ˆ��{ð	Hð 	Hð 	Hð 	Hð 	Hð 	Hð
 	Ô×$Ò$ f¨eÐ5GÐ%HÑIÔIÐIàˆr#   c                óœ   ‡ — ‰ j         }t          ‰ j        ¦  «        \  }}ˆ fd„}‰ j                             |||f¦  «         t
          |d<   ‰ S )Nc                óD   •— ‰                      |d         ¦  «        | d<   d S )NÚ__eq__r–  r—  s     €r!   Ú
_attach_eqz(_ClassBuilder.add_eq.<locals>._attach_eq{  s%   ø€ Ø!%×!9Ò!9¸%À¼/Ñ!JÔ!JˆH�XÑÐÐr#   Ú__ne__)r  Ú_make_eq_scriptr  r   r    rØ  )r    rº   rT   rV   r×  s   `    r!   Úadd_eqz_ClassBuilder.add_eqv  si   ø€ ØŒ^ˆå'¨¬Ñ4Ô4‰ˆ�ð	Kð 	Kð 	Kð 	Kð 	Kð 	Ô×$Ò$ f¨e°ZÐ%@ÑAÔAÐAåˆˆ8‰àˆr#   c                ó„   ‡ — ‰ j         }ˆ fd„t          ‰ j        ‰ j        ¦  «        D ¦   «         \  |d<   |d<   |d<   |d<   ‰ S )Nc              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S r/   r–  )r²   Úmethr    s     €r!   r¿   z*_ClassBuilder.add_order.<locals>.<genexpr>‡  sM   øè è € ð B
ð B
àð ×$Ò$ TÑ*Ô*ðB
ð B
ð B
ð B
ð B
ð B
r#   Ú__lt__Ú__le__Ú__gt__Ú__ge__)r  Ú_make_orderrò   r  )r    rº   s   ` r!   Ú	add_orderz_ClassBuilder.add_order„  sg   ø€ ØŒ^ˆðB
ð B
ð B
ð B
å# D¤I¨t¬{Ñ;Ô;ðB
ñ B
ô B
Ñ>ˆˆ8‰�b˜‘l B x¡L°"°X±,ð
 ˆr#   c                ó  ‡— i Š| j         D ],}|j        p| j        }|r|t          j        ur||f‰|j        <   Œ-‰s| S | j        rd}t          |¦  «        ‚ˆfd„}d| j        d<   |  	                    |¦  «        | j        d<   d| _
        | S )Nz7Can't combine custom __setattr__ with on_setattr hooks.c                ó‚   •— 	 ‰|         \  }} || ||¦  «        }n# t           $ r |}Y nw xY wt          | ||¦  «         d S r/   )ÚKeyErrorrÞ   )r    rž   Úvalr§   rR  ÚnvalÚsa_attrss         €r!   r  z._ClassBuilder.add_setattr.<locals>.__setattr__ž  sl   ø€ ð*Ø" 4œ.‘��4ð �t˜D ! SÑ)Ô)��øõ ð ð ð Ø���ðøøøõ
 ˜˜t TÑ*Ô*Ð*Ð*Ð*s   ƒ œ+ª+Tr_  r  )r  rC   r  r   ÚNO_OPrž   r  rG   r  r  r#  )r    r§   rC   rQ   r  ré  s        @r!   Úadd_setattrz_ClassBuilder.add_setattrŽ  sÅ   ø€ ØˆØ”ð 	1ð 	1ˆAØœÐ9¨Ô)9ˆJØð 1˜jµ´Ð=Ð=Ø#$ j =�˜œÑ øàð 	ØˆKàÔ#ð 	"àKˆCÝ˜S‘/”/Ð!ð	+ð 	+ð 	+ð 	+ð 	+ð 37ˆŒÐ.Ñ/Ø(,×(@Ò(@ÀÑ(MÔ(MˆŒ�}Ñ%Ø"&ˆÔàˆr#   Úmethodr   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    rì  s     r!   rC  z(_ClassBuilder._add_method_dunders_unsafe®  sR   € ð !œIÔ0ˆÔà!%¤Ô!7ÐKÐK¸&¼/ÐKÐKˆÔð M°4´9Ô3IÐLÐLÐLð 	Œð ˆr#   c                ó®  — t          j        t          ¦  «        5  | j        j        |_        ddd¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  | j        j        › d|j        › �|_        ddd¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  d| j        j        › d�|_        ddd¦  «         n# 1 swxY w Y   |S )zL
        Add __module__ and __qualname__ to a *method* if possible.
        Nr½   rî  )ra  rb  rc  rò   r'   r(   r&   r)   rï  s     r!   rB  z&_ClassBuilder._add_method_dunders_safe¼  s¤  € õ Ô ¥Ñ0Ô0ð 	5ð 	5Ø $¤	Ô 4ˆFÔð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5õ Ô ¥Ñ0Ô0ð 	Pð 	PØ%)¤YÔ%;Ð"OÐ"O¸f¼oÐ"OÐ"OˆFÔð	Pð 	Pð 	Pñ 	Pô 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pøøøð 	Pð 	Pð 	Pð 	Põ Ô ¥Ñ0Ô0ð 	^ð 	^Ø]ÀDÄIÔDZÐ]Ð]Ð]ˆFŒNð	^ð 	^ð 	^ñ 	^ô 	^ð 	^ð 	^ð 	^ð 	^ð 	^ð 	^øøøð 	^ð 	^ð 	^ð 	^ð ˆs0   š8¸<¿<ÁBÂBÂBÂ(C
Ã
CÃCN)r“   r3   râ   r$  r%  rÚ   r&  r$  )r[   r\   )rì  r   r[   r   )r&   r'   r(   r)   rp  rI  r"   rS  r]  rZ  rV  rœ  r¡  r@  r´  r¼  rÆ  rÉ  rÎ  rÓ  rÚ  rã  rë  rC  rB  r   r#   r!   r  r  …  su  € € € € € ðð ð€Ið0cGð cGð cGð cGðJ<ð <ð <ð'ð 'ð 'ð 'ð$ð ð ð2"ð "ð "ðHMð Mð Mð^ð ð ð	ð 	ð 	ð'.ð '.ð '.ð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ø  Ì  s†   € ð
 €�3 ¨$ °¸TÐ0AÐBÑCÔC€Ø6ˆÝ˜‰oŒoÐð €Ø�Cˆxˆð 
€zØˆà€}Øˆà	ˆU€{€{�u �}�}Ø=ˆÝ˜‰oŒ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                ó6   — t          | ¦  «        rd| }} n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ñ  s,   € õ �E‰?Œ?ð 	Ø˜u�3ˆEˆEàˆ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ÔC€Ø6ˆÝ˜‰oŒoÐðð ð ð €Ø1Ð1°#Ñ6Ô6‰ˆˆWØ�G˜S 'Ð)Ð)ð 
€zØ ˆFˆˆà/Ð/°Ñ3Ô3‰
ˆˆFà€}Ø˜vˆyˆˆà5Ð5°eÑ<Ô<Ñˆˆyà	ˆU€{€{�u �}�}Ø=ˆÝ˜‰oŒoÐàˆv�u˜iÐ'Ð'r#   c                óZ   — |du s|du r|S |€|du r|S |D ]}t          | |¦  «        r dS Œ|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    sd   € ð ˆt€|€|�t˜u�}�}Øˆà€|˜ uÐ,Ð,Øˆð ð ð ˆÝ˜c 6Ñ*Ô*ð 	Ø�5�5ð	ð €Nr#   Fc                óZ  ‡‡‡‡‡‡‡‡	‡
‡‡‡‡‡‡‡‡‡‡‡‡‡— ‰�(ddl }|                     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*.
    .. versionchanged:: 25.4.0
       *kw_only* now only applies to attributes defined in the current class,
       and respects attribute-level ``kw_only=False`` settings.
    .. versionadded:: 25.4.0 *force_kw_only*
    Nr   zQThe `repr_ns` argument is deprecated and will be removed in or after August 2025.é   )Ú
stacklevelc                ó|  •— ‰pt          | ¦  «        }‰du ot          | t          ¦  «        }‰ot          | d¦  «        }|r|rd}t	          |¦  «        ‚| ot          | ‰‰d¦  «        }t          j        }|r|j        }n}‰du r‰r|j	        n|j
        }nh‰du r|j        }n\‰€I‰du rt          | d¦  «        r|j        }n>|du r|du r‰r|j	        n|j
        }n%|du r|j        }n|j        }nd}t          |¦  «        ‚t          j        }‰r‰r|j        n|j        }	n|j        }	t          d"i d|“d	|“d
‰“d‰“dt          | ‰‰d¦  «        “dt          | ‰‰d¦  «        “d|“d| ot          | ‰‰d¦  «        “d|“d‰“d|	“d‰!“d‰“dt          | ‰‰d‰¬¦  «        “d‰“d‰“Ž}
|
j        s‰rd}t          |¦  «        ‚t%          | ‰ ‰|
|¬¦  «        }|
j        r|                     ‰¦  «         |
j        r|                     ¦   «          |
j        r|                     ¦   «          |
j        r|                     ¦   «          ‰s|                     ¦   «          |
j        r|                     ¦   «          n"|
j        |j        u r|                     ¦   «          |
j        r|                      ¦   «          n'| !                    ¦   «          ‰rd}t          |¦  «        ‚tD          r$t          | d ¦  «        s| #                    ¦   «          tH          r&‰r$t          | d!¦  «        s| %                    ¦   «          | &                    ¦   «         S )#NTr  z/Can't freeze a class with a custom __setattr__.)rÖ  rØ  Fr³  r5   r:  r2  r0  r/  Ú
added_init©rI  Ú
added_reprrŸ  Úadded_eqÚadded_ordering)rÞ  rß  rà  rá  r4  Úadded_match_argsr>   r3  Ú	added_strr?  )r-  r.  )r6   r;  rä   zlInvalid value for cache_hash.  To use hash caching, hashing must be either explicitly or implicitly enabled.)râ   r%  r&  zFInvalid value for cache_hash.  To use hash caching, init must be True.rÈ  rÍ  r   )'Ú_has_frozen_base_classÚ
issubclassr   r•   rG   r  rÚ   r5  ÚLEAVE_ALONEr6  ÚHASHABLEÚ
UNHASHABLErF   rÛ   rÝ   ÚYESrÜ   Úis_hashabler  r	  rœ  r  r¡  r
  rÚ  r  rã  rë  r¼  r4  r´  r  rÆ  rÓ  r   rÉ  r   rÎ  r]  )"r“   r2  Úis_excÚhas_own_setattrrQ   r?   r5  r4  rÛ   Úkwor%  Úbuilderrâ   rÿ  Úauto_excr¸  rã   Úeq_rä   Úforce_kw_onlyr·  Úgetstate_setstater:   r;   r>   Ú
match_argsrC   Úorder_r8   Úrepr_nsÚslotsrU   rá   Úweakref_slots"               €€€€€€€€€€€€€€€€€€€€€€r!   Úwrapzattrs.<locals>.wrap¡  sÀ  ø€ àÐ9Õ4°SÑ9Ô9ˆ	Ø˜TÐ!ÐD¥j°µmÑ&DÔ&DˆØ%ð 
Õ*<Ø�ñ+
ô +
ˆð ð 	"˜yð 	"ØCˆCÝ˜S‘/”/Ð!àˆZð 
Õ;Ø��kÐ#7ñ
ô 
ˆõ !Ô,ˆàð 	!Ø%Ô1ˆKˆKØ�Tˆ\ˆ\ð ð*�Ô+Ð+à Ô)ð ˆKð
 �Uˆ]ˆ]Ø%Ô1ˆKˆKØˆ\Ø˜dÐ"Ð"Õ'9¸#¸zÑ'JÔ'JÐ"Ø)Ô5��Ø�t�� 	¨TÐ 1Ð 1ð "ð.�KÔ/Ð/à$Ô-ð �ð
 �u��Ø)Ô5��à)Ô4��àJˆCÝ˜C‘.”.Ð å Ô,ˆØð 	!Ø'4ÐI�+Ô#Ð#¸+¼/ˆCˆCà”.ˆCåð !
ð !
ð !
Ø˜ð!
à�ið!
ð �uð!
ð %3 Nð	!
õ
 7Ø�T˜;¨ñô ð ð!
õ 7Ø�T˜;¨ñô ð ð!
ð �Rð!
ð  &˜:ð Ý/ØØØØ8ñ	ô øð!
ð& $˜ð'!
ð( (˜Zð)!
ð* �Cð+!
ð, *˜\ð-!
ð. �cð/!
õ0 ;ØØ!ØØ0Øðñ ô ð ð1!
ð> '˜Jð?!
ð@ 0Ð/ðA!
ˆðF Ô ð 	! Zð 	!ð AˆCÝ˜C‘.”.Ð åØØØ%ØØ.ð
ñ 
ô 
ˆð Ôð 	&Ø×Ò˜WÑ%Ô%Ð%àŒ?ð 	Ø�OŠOÑÔÐàŒ>ð 	Ø�NŠNÑÔÐØÔð 	 Ø×ÒÑÔÐàð 	"Ø×ÒÑ!Ô!Ð!àÔð 	&Ø×ÒÑÔÐÐØÔ +Ô"8Ð8Ð8Ø×#Ò#Ñ%Ô%Ð%àÔð 	%Ø×ÒÑÔÐÐà×"Ò"Ñ$Ô$Ð$Øð %Ø^�Ý ‘n”nÐ$åð 	"Õ 2°3¸Ñ FÔ Fð 	"Ø×ÒÑ!Ô!Ð!õ ð	%àð	%õ ' sÐ,<Ñ=Ô=ð	%ð
 ×"Ò"Ñ$Ô$Ð$à×"Ò"Ñ$Ô$Ð$r#   )	ÚwarningsÚwarnÚDeprecationWarningrø  rJ   rK   rL   r   rM   )Ú	maybe_clsrá   r  r8   r9   r:   r;   r   r·  r!  rU   râ   r>   r¸  r  r?   rA   rÿ  rã   r  rC   rä   r  Úunsafe_hashr  r#  r"  r  r  s    ``` ``````````  `````` `  @@r!   rƒ   rƒ   -  sZ  øøøøøøøøøøøøøøøøøøøøøø€ ðB ÐØˆˆˆà�ŠÝØcñô ð ð	 	ñ 	
ô 	
ð 	
õ ,¨C°°U¸DÑAÔA�K€Cˆð ÐØˆå�*�t¥U˜mÑ,Ô,ð /Ý”\ :Ð.ˆ
ðG%ð G%ð G%ð G%ð G%ð G%ð G%ð G%ð G%ð G%ð G%ð G%ð G%ð G%ð G%ð G%ð G%ð G%ð G%ð G%ð G%ð G%ð G%ð G%ð G%ð G%ðV ÐØˆàˆ4�	‰?Œ?Ð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  9  s   € ð
 Œ?Õ.Ð.Ð.r#   r“   Ú	func_namec           
     óL   — d|› d| j         › dt          | d| j        ¦  «        › d�S )zF
    Create a "filename" suitable for a function being generated.
    z<attrs generated ú r½   r(   rh   )r'   r�   r&   )r“   r)  s     r!   rõ   rõ   A  sF   € ð
	9˜Ið 	9ð 	9¨¬ð 	9ð 	9Ý�3˜¨¬Ñ5Ô5ð	9ð 	9ð 	9ðr#   rƒ   r„   r·  r$  r¸  útuple[str, dict]c                óN  ‡‡‡	‡
‡‡— 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„}|r�‰                     |dt          › d�z   ¦  «         |r4 |dt          › d�|dz  ¦  «         ‰                     |dz  dz   ¦  «         n |dt          › d�|dz  ¦  «         ‰                     |dt          › �z   ¦  «         n |d|¦  «         d                     ‰¦  «        }|‰	fS )Nc              3  óL   K  — | ]}|j         d u s|j         ­|j        d u ¯|V — Œ dS )TN)r:   r?   rË   s     r!   r¿   z$_make_hash_script.<locals>.<genexpr>N  sA   è è € ð ð Ø˜AœF d˜N˜N¨q¬v¨~À!Ä$È$À,À,ˆÀ,À,À,À,ðð r#   ú        r:   zdef __hash__(selfzhash((z))z):z, *zC, _cache_wrapper=__import__('attr._make')._make._CacheHashWrapper):z_cache_wrapper(ú)c           	     óT  •— ‰                      || z   ‰z   |d‰	› d�z   g¦  «         ‰D ]d}|j        r:d|j        › d�}|j        ‰|<   ‰                     |d|› d|j        › d�z   ¦  «         ŒC‰                     |d|j        › d�z   ¦  «         Œe‰                     |dz   ‰z   ¦  «         d	S )
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/  ú,rP  Ú_keyú(self.z),ú        self.ú    N)rô   r@   rž   r    )
ÚprefixÚindentr§   Úcmp_namerƒ   Úclosing_bracesrV   Ú	hash_funcÚmethod_linesÚ	type_hashs
       €€€€€€r!   Úappend_hash_computation_linesz8_make_hash_script.<locals>.append_hash_computation_linesf  s  ø€ ð 	×Òà˜‘ )Ñ+ØÐ0 IÐ0Ð0Ð0Ñ0ðñ	
ô 	
ð 	
ð ð 	Hð 	HˆAØŒxð HØ+˜qœvÐ+Ð+Ð+�Ø"#¤(��h‘Ø×#Ò#ØÐB¨ÐBÐB¸¼ÐBÐBÐBÑBñô ð ð ð ×#Ò# FÐ-F¸Q¼VÐ-FÐ-FÐ-FÑ$FÑGÔGÐGÐGà×Ò˜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    r�  rÖ   )r“   rƒ   r·  r¸  ÚtabÚhash_defr>  rT   r:  rV   r;  r<  r=  s    `      @@@@@r!   r»  r»  K  sá  øøøøøø€ õ ð ð Øðñ ô ñ ô €Eð €CåÕ.¨s°FÑ;Ô;Ñ<Ô<€Ià€Eà"€HØ€IØ€NØð Ø�DÑˆˆà�EÑˆàÐYÑYˆØ%¨	Ñ1ˆ	Ø˜#Ñˆà�:€Lð>ð >ð >ð >ð >ð >ð >ð >ð >ð >ð4 ð 6Ø×Ò˜CÐ"IÕ->Ð"IÐ"IÐ"IÑIÑJÔJÐJØð 	Ø)Ð)ØCÕ->ÐCÐCÐCÀSÈ1ÁWñô ð ð ×Ò  a¡¨#¡Ñ.Ô.Ð.Ð.à)Ð)Ø.Õ)Ð.Ð.Ð.°°a±ñô ð ð 	×Ò˜CÐ"DÕ1BÐ"DÐ"DÑDÑEÔEÐEÐEà%Ð% i°Ñ5Ô5Ð5à�YŠY�|Ñ$Ô$€FØ�5ˆ=Ðr#   c                óŒ   — t          | |dd¬¦  «        \  }}t          ||t          | d¦  «        ¬¦  «         |d         | _        | S )z%
    Add a hash method to *cls*.
    Fr¶  r³  ©rZ   )r»  rb   rõ   r³  ©r“   rƒ   rT   rV   s       r!   Ú	_add_hashrG  “  sc   € õ &ØˆU˜5¨Uðñ ô �M€FˆEõ Ø�Õ 9¸#¸zÑ JÔ Jðñ ô ð ð ˜Ô$€C„LØ€Jr#   c                óR   — |                       |¦  «        }|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Ø  ¡  s.   € ð
 �[Š[˜ÑÔ€FØ•ÐÐÝÐàˆ:Ðr#   rK   c                óò  — d„ | D ¦   «         } g d¢}i }| r¶|                      d¦  «         | D ]ˆ}|j        rBd|j        › d�}|j        ||<   |                      d|› d|j        › d|› d	|j        › d
�	¦  «         n%|                      d|j        › d|j        › �¦  «         || d         ur|d         › d�|d<   Œ‰|                      d¦  «         n|                      d¦  «         d                     |¦  «        }||fS )z6
    Create __eq__ method for *cls* with *attrs*.
    c                ó    — g | ]}|j         ¯	|‘ŒS r   )r?   rË   s     r!   rÈ   z#_make_eq_script.<locals>.<listcomp>±  s   € Ð&Ð&Ð&�1 ¤Ð&ˆQÐ&Ð&Ð&r#   )zdef __eq__(self, other):z-    if other.__class__ is not self.__class__:z        return NotImplementedz    return  (rP  r3  r/  r4  z) == z(other.r0  r5  z
 == other.rf   z andz    )z    return Truerñ   )r    r@   rž   rÖ   )rƒ   rö   rV   r§   r9  rT   s         r!   rÙ  rÙ  ­  sY  € ð 'Ð&˜Ð&Ñ&Ô&€Eðð ð €Eð €EØð (Ø�Š�_Ñ%Ô%Ð%Øð 	/ð 	/ˆAØŒxð 	IØ+˜qœvÐ+Ð+Ð+�ð #$¤(��h‘Ø—’ØV˜xÐVÐV¨q¬vÐVÐV¸HÐVÐVÈQÌVÐVÐVÐVñô ð ð ð —’ÐG¨Q¬VÐGÐG¸q¼vÐGÐGÑHÔHÐHØ˜˜bœ	Ð!Ð!Ø$ RœyÐ.Ð.Ð.��b‘	øØ�Š�WÑÔÐÐà�ŠÐ&Ñ'Ô'Ð'à�YŠY�uÑÔ€Fà�5ˆ=Ðr#   c                ó\   ‡‡— d„ ‰D ¦   «         Šˆfd„Šˆfd„}ˆfd„}ˆfd„}ˆfd„}||||fS )z9
    Create ordering methods for *cls* with *attrs*.
    c                ó    — g | ]}|j         ¯	|‘ŒS r   )rA   rË   s     r!   rÈ   z_make_order.<locals>.<listcomp>Ö  s   € Ð)Ð)Ð)�1 ¤Ð)ˆQÐ)Ð)Ð)r#   c                óP   •‡ — t          d„ ˆ fd„‰D ¦   «         D ¦   «         ¦  «        S )z&
        Save us some typing.
        c              3  ó:   K  — | ]\  }}|r ||¦  «        n|V — Œd S r/   r   )r²   r  r¼   s      r!   r¿   z6_make_order.<locals>.attrs_to_tuple.<locals>.<genexpr>Ü  sK   è è € ð 
ð 
á��sð Ð(ˆCˆC�‰JŒJˆJ 5ð
ð 
ð 
ð 
ð 
ð 
r#   c              3  óP   •K  — | ] }t          ‰|j        ¦  «        |j        fV — Œ!d S r/   )r�   rž   rB   )r²   r§   Úobjs     €r!   r¿   z6_make_order.<locals>.attrs_to_tuple.<locals>.<genexpr>Þ  sG   øè è € ð ð Ø89•˜˜aœfÑ%Ô% q¤{Ð3ðð ð ð ð ð r#   )rL   )rS  rƒ   s   `€r!   Úattrs_to_tuplez#_make_order.<locals>.attrs_to_tupleØ  sW   øø€ õ ð 
ð 
ðð ð ð Ø=Bðñ ô ð
ñ 
ô 
ñ 
ô 
ð 	
r#   c                ó^   •— |j         | j         u r ‰| ¦  «         ‰|¦  «        k     S t          S ©z1
        Automatically created by attrs.
        ©r°   rI  ©r    rJ  rT  s     €r!   rÞ  z_make_order.<locals>.__lt__ã  ó9   ø€ ð Œ?˜dœnÐ,Ð,Ø!�> $Ñ'Ô'¨.¨.¸Ñ*?Ô*?Ò?Ð?åÐr#   c                ó^   •— |j         | j         u r ‰| ¦  «         ‰|¦  «        k    S t          S rV  rW  rX  s     €r!   rß  z_make_order.<locals>.__le__ì  ó9   ø€ ð Œ?˜dœnÐ,Ð,Ø!�> $Ñ'Ô'¨>¨>¸%Ñ+@Ô+@Ò@Ð@åÐr#   c                ó^   •— |j         | j         u r ‰| ¦  «         ‰|¦  «        k    S t          S rV  rW  rX  s     €r!   rà  z_make_order.<locals>.__gt__õ  rY  r#   c                ó^   •— |j         | j         u r ‰| ¦  «         ‰|¦  «        k    S t          S rV  rW  rX  s     €r!   rá  z_make_order.<locals>.__ge__þ  r[  r#   r   )r“   rƒ   rÞ  rß  rà  rá  rT  s    `    @r!   râ  râ  Ò  s§   øø€ ð *Ð)˜Ð)Ñ)Ô)€Eð	
ð 	
ð 	
ð 	
ð 	
ðð ð ð ð ðð ð ð ð ðð ð ð ð ðð ð ð ð ð �6˜6 6Ð)Ð)r#   c                ó®   — |€| j         }t          |¦  «        \  }}t          ||t          | d¦  «        ¬¦  «         |d         | _        t
          | _        | S )z5
    Add equality methods to *cls* with *attrs*.
    NrÖ  rE  )r˜   rÙ  rb   rõ   rÖ  rØ  rF  s       r!   Ú_add_eqr_  
  sd   € ð €}ØÔ#ˆå# EÑ*Ô*�M€FˆEÝØ�Õ 9¸#¸xÑ HÔ Hðñ ô ð ð �x”€C„JÝ€C„Jà€Jr#   c                ó¾  — t          d„ | D ¦   «         ¦  «        }d„ |D ¦   «         }t          |d<   t          |d<   t          |d<   g }|D ]H\  }}}|rd|z   nd|z   dz   }|t          k    r|›d	|›d
�n
|›d	|›d|›d�}	|                     |	¦  «         ŒId                     |¦  «        }
|€d}n|dz   }ddddddddddddd|› d|
› d�dd g}d!                     |¦  «        |fS )"zC
    Create the source and globs for a __repr__ and return it.
    c              3  óp   K  — | ]1}|j         d u¯|j        |j         du rt           n|j         |j        fV — Œ2dS )FTN)r8   rž   r;   rË   s     r!   r¿   z$_make_repr_script.<locals>.<genexpr>"  sV   è è € ð "ð "àØŒ6˜ÐÐð 
Œ˜!œ& D˜.˜.•$�$¨a¬f°q´vÐ>àÐÐÐð"ð "r#   c                ó8   — i | ]\  }}}|t           k    ¯|d z   |“ŒS )Ú_repr)r8   )r²   rž   ÚrrP  s       r!   rl  z%_make_repr_script.<locals>.<dictcomp>'  s0   € ð ð ð Ù(˜d A qÀQÍ$ÂYÀYˆˆw‰˜ÀYÀYÀYr#   r   rc  r   r@  zgetattr(self, "z", NOTHING)z={z!r}z_repr(z)}rµ   Nz1{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   r   rc  r   r8   r    rÖ   )rƒ   r›  Úattr_names_with_reprsrV   Úattribute_fragmentsrž   rd  ry   ÚaccessorÚfragmentÚrepr_fragmentÚcls_name_fragmentrö   s                r!   rš  rš    s�  € õ "ð "ð "àð"ñ "ô "ñ ô Ðð
ð Ø,Aðñ ô €Eõ €Eˆ)ÑÝ,€EÐ
ÑÝ€Eˆ)ÑØÐØ+ð 	-ð 	-‰
ˆˆa�àÐMˆG�d‰NˆNÐ%6¸Ñ%=ÀÑ%Mð 	ð
 •DŠyˆyð  ˜4˜4   Ð*Ð*à'+ t t¨T¨T¨T°8°8°8Ð<ð 	ð
 	×"Ò" 8Ñ,Ô,Ð,Ð,Ø—I’IÐ1Ñ2Ô2€Mà	€zØOÐÐàÐ!=Ñ=Ðð 	ØØDØ"Ø+ØDØØ-ØØØ-ØØ=Ð)Ð=Ð=¨MÐ=Ð=Ð=ØØ.ð€Eð$ �9Š9�UÑÔ˜UÐ"Ð"r#   c                ó˜   — |€| j         }t          ||¦  «        \  }}t          ||t          | d¦  «        ¬¦  «         |d         | _        | S )z%
    Add a repr method to *cls*.
    Nr"   rE  )r˜   rš  rb   rõ   r"   )r“   r›  rƒ   rT   rV   s        r!   Ú	_add_reprrm  T  s`   € ð €}ØÔ#ˆå% e¨RÑ0Ô0�M€FˆEÝØ�Õ 9¸#¸zÑ JÔ Jðñ ô ð ð ˜Ô$€C„LØ€Jr#   c                ó\  — t          | ¦  «        }|€Ut          | t          ¦  «        s@t          | ¦  «        }t          |dd¦  «        €d}t	          |¦  «        ‚t          |¦  «        S t          | dd¦  «        }|€2|�t          |dd¦  «        }|�	|| _        |S | ›d�}t          |¦  «        ‚|S )aµ  
    Return the tuple of *attrs* attributes for a class or instance.

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

    Args:
        cls (type): Class or instance to introspect.

    Raises:
        TypeError: If *cls* is neither a class nor an *attrs* instance.

        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.
    .. versionchanged:: 26.1.0 Add support for instances.
    Nr˜   z0Passed object must be a class or attrs instance.ú! is not an attrs-decorated class.)r   rJ   r3   r�   rF   r	  r˜   r   )r“   Úgeneric_baseÚtype_rQ   rƒ   s        r!   r	  r	  c  sÆ   € õ0 $ CÑ(Ô(€LàÐ¥J¨sµDÑ$9Ô$9ÐÝ�S‘	”	ˆÝ�5Ð+¨TÑ2Ô2Ð:ØDˆCÝ˜C‘.”.Ð å�e‰}Œ}Ðå�CÐ*¨DÑ1Ô1€Eà€}ØÐ#Ý˜LÐ*;¸TÑBÔBˆEØÐ ð ',�Ô#Ø�ØÐ9Ð9Ð9ˆÝ" 3Ñ'Ô'Ð'à€Lr#   c                ó´   — t          | t          ¦  «        sd}t          |¦  «        ‚t          | dd¦  «        }|€| ›d�}t	          |¦  «        ‚d„ |D ¦   «         S )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
    zPassed object must be a class.r˜   Nro  c                ó   — i | ]
}|j         |“ŒS r   rÊ   rË   s     r!   rl  zfields_dict.<locals>.<dictcomp>°  s   € Ð%Ð%Ð%˜!ˆAŒF�AÐ%Ð%Ð%r#   )rJ   r3   rF   r�   r   )r“   rQ   rƒ   s      r!   Úfields_dictrt  –  sn   € õ& �c�4Ñ Ô ð Ø.ˆÝ˜‰nŒnÐÝ�CÐ*¨DÑ1Ô1€EØ€}ØÐ9Ð9Ð9ˆÝ" 3Ñ'Ô'Ð'Ø%Ð%˜uÐ%Ñ%Ô%Ð%r#   c           	     ó¦   — t           j        du rdS t          | j        ¦  «        D ]+}|j        }|�  || |t          | |j        ¦  «        ¦  «         Œ,dS )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§   rk  s      r!   r=  r=  ³  sg   € õ Ô %Ð'Ð'Øˆå�D”NÑ#Ô#ð .ð .ˆØŒKˆØˆ=ØˆAˆd�A•w˜t Q¤VÑ,Ô,Ñ-Ô-Ð-øð.ð .r#   c                óB   — |                      | ¦  «        }|od|j        v S )z>
    Check if the attribute name comes from a slot class.
    rp  )r·   r’   )Úa_namer¥   r“   s      r!   Ú_is_slot_attrry  Å  s)   € ð ×
Ò
˜FÑ
#Ô
#€CØÐ.�; #¤,Ð.Ð.r#   útuple[str, dict, dict]c                ó”  — |
d uo|
t           j        u}|r|rd}t          |¦  «        ‚|p|}g }i }|D ]€}|j        s|j        t
          u rŒ|                     |¦  «         |||j        <   |j        �+|du r$|j        t           j        urd}t          |¦  «        ‚d}Œi|r|j        t           j        urd}Œ�t          |||||||||	|||rdnd¦  «        \  }}}| j
        t          j        v r/|                     t          j        | j
                 j        ¦  «         |                     t
          |dœ¦  «         |rt          j        |d<   |||fS )Nz$Frozen classes can't use on_setattr.TrÑ  rI  )r   Ú	attr_dictrï   )r   rê  rG   r;   r6   r   r    rž   rC   Ú_attrs_to_init_scriptr'   r|  ÚmodulesrO  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_attrsr|  r§   rT   rV   r   s                        r!   rÅ  rÅ  Í  s¦  € ð 	˜dÐ"ÐJ ~½W¼]Ð'Jð ð ð Ð$ð Ø4ˆÝ˜‰oŒoÐà%Ð/¨ÐØ€NØ€IØð (ð (ˆØŒvð 	˜!œ)¥wÐ.Ð.Øà×Ò˜aÑ Ô Ð Øˆ	�!”&ÑàŒ<Ð#Ø˜ˆ~ˆ~ !¤,µg´mÐ"CÐ"CØ<�Ý  ‘o”oÐ%à#'Ð Ð Øð 	( A¤L½¼Ð$EÐ$EØ#'Ð øå!6ØØØØØØØØØØØØ&Ð6ÐÐ¨Jñ"ô "Ñ€FˆE�;ð „~�œÐ$Ð$à�Š•S”[ ¤Ô0Ô9Ñ:Ô:Ð:à	‡L‚L�W°9Ð=Ð=Ñ>Ô>Ð>àð <õ (4Ô';ˆÐ#Ñ$à�5˜+Ð%Ð%r#   r   Ú	value_varÚhas_on_setattrc                ó   — d| › d|› d�S )zJ
    Use the cached object.setattr to set *attr_name* to *value_var*.
    ú
_setattr('r?  r0  r   )r   r†  r‡  s      r!   Ú_setattrrŠ    s   € ð 3˜	Ð2Ð2 iÐ2Ð2Ð2Ð2r#   r<   Ú	Converterc                ó<   — d| › d|                      | |¦  «        › d�S )zk
    Use the cached object.setattr to set *attr_name* to *value_var*, but run
    its converter first.
    r‰  r?  r0  )Ú_fmt_converter_call©r   r†  r‡  r<   s       r!   Ú_setattr_with_converterr�    s.   € ð ]˜	Ð\Ð\ i×&CÒ&CÀIÈyÑ&YÔ&YÐ\Ð\Ð\Ð\r#   r  c                ó8   — |rt          | |d¦  «        S d| › d|› �S )zo
    Unless *attr_name* has an on_setattr hook, use normal assignment. Otherwise
    relegate to _setattr.
    Tr@  rA  )rŠ  )r   r  r‡  s      r!   Ú_assignr‘  #  s4   € ð
 ð 0Ý˜	 5¨$Ñ/Ô/Ð/à(�9Ð(Ð( Ð(Ð(Ð(r#   c                ób   — |rt          | |d|¦  «        S d| › d|                     | |¦  «        › �S )z�
    Unless *attr_name* has an on_setattr hook, use normal assignment after
    conversion. Otherwise relegate to _setattr_with_converter.
    Tr@  rA  )r�  r�  rŽ  s       r!   Ú_assign_with_converterr“  .  sG   € ð ð NÝ& y°)¸TÀ9ÑMÔMÐMàV�9ÐVÐV ×!>Ò!>¸yÈ)Ñ!TÔ!TÐVÐVÐVr#   r   r¥   r†   c                ór   ‡— | du r$|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   r   rU   r†  r‡  r$  r[   c                óV   •— t          | ‰¦  «        rt          | ||¦  «        S d| › d|› �S ©Nú_inst_dict['z'] = )ry  rŠ  )r   r†  r‡  r¥   s      €r!   Ú
fmt_setterz&_determine_setters.<locals>.fmt_setterK  s@   ø€ õ ˜Y¨Ñ6Ô6ð FÝ 	¨9°nÑEÔEÐEà= )Ð=Ð=°)Ð=Ð=Ð=r#   r<   r‹  c                ó„   •— |st          | ‰¦  «        rt          | |||¦  «        S d| › d|                     | |¦  «        › �S r–  )ry  r�  r�  )r   r†  r‡  r<   r¥   s       €r!   Úfmt_setter_with_converterz5_determine_setters.<locals>.fmt_setter_with_converterS  sd   ø€ ð ð ¥¨y¸-Ñ!HÔ!Hð Ý.Ø˜y¨.¸)ñô ð ð h )ÐgÐg°)×2OÒ2OÐPYÐ[dÑ2eÔ2eÐgÐgÐgr#   )z_inst_dict = self.__dict__©r   rU   r†  rU   r‡  r$  r[   rU   ©
r   rU   r†  rU   r‡  r$  r<   r‹  r[   rU   )rŠ  r�  r‘  r“  )r·  r   r¥   r˜  rš  s     `  r!   Ú_determine_settersr�  ;  sŒ   ø€ ð �€~€~Ø�Dˆ=ˆ=Ø•xÕ!8Ð8Ð8ð	>ð 	>ð 	>ð 	>ð 	>ð 	>ð	hð 	hð 	hð 	hð 	hð 	hð ,ØØ%ð
ð 	
ð �wÕ.Ð.Ð.r#   r2  r0  Úcall_pre_initr€  Úcall_post_initÚdoes_cache_hashr  r„  rƒ  Úmethod_namec           
     óæ  — |rdgng }|	r|                      d¦  «         t          |||¦  «        \  }}}|                     |¦  «         g }g }g }g }i }ddi}| D �]ã}|j        r|                      |¦  «         |j        }|j        dup|j        t          j        uo|
}|j        }t          |j
        t          ¦  «        }|r|j
        j        rdnd}|j        �/t          |j        t          ¦  «        st          |j        ¦  «        }n|j        }|j        du �r|r•t           |j        fz  }|�K|                       |||d|› d	�z   ||¦  «        ¦  «         |j        ||                     |j        ¦  «        <   n'|                       |||d|› d	�z   |¦  «        ¦  «         |j
        j        ||<   �n]|�I|                       ||d
|› d�||¦  «        ¦  «         |j        ||                     |j        ¦  «        <   �n|                       ||d
|› d�|¦  «        ¦  «         �nì|j
        t&          urº|s¸|› d|› d�}|j        r|                      |¦  «         n*|                      |¦  «         |                      |¦  «         |�E|                       |||||¦  «        ¦  «         |j        ||                     |j        ¦  «        <   �nF|                       ||||¦  «        ¦  «         �n$|�rt|› d�}|j        r|                      |¦  «         n*|                      |¦  «         |                      |¦  «         |                      d|› d�¦  «         t           |j        fz  }|�‰|                      d |||||¦  «        z   ¦  «         |                      d¦  «         |                      d |||dz   |z   d	z   ||¦  «        z   ¦  «         |j        ||                     |j        ¦  «        <   nd|                      d ||||¦  «        z   ¦  «         |                      d¦  «         |                      d |||dz   |z   d	z   |¦  «        z   ¦  «         |j
        j        ||<   n­|j        r|                      |¦  «         n*|                      |¦  «         |                      |¦  «         |�D|                       |||||¦  «        ¦  «         |j        ||                     |j        ¦  «        <   n |                       ||||¦  «        ¦  «         |j        du r(|j        �|€|j        ||<   �ŒÐ|�|j        r
|j        ||<   �Œå|rkt.          |d<   |                      d¦  «         |D ]I}d|j        z   }d|j        z   }|                      d|› d|› d|j        › d	�¦  «         |j        ||<   |||<   ŒJ|r|                      d¦  «         |r<|r|rdt0          › d�} ndt0          › d�} ndt0          › d�} |                      | ¦  «         |r8d                      d!„ | D ¦   «         ¦  «        }!|                      d"|!› d	�¦  «         d#                     |¦  «        }d#                     |¦  «        }|rX||rd#nd› d$d#                     |¦  «        › �z  }d#                     d%„ d&„ |D ¦   «         D ¦   «         ¦  «        }"||rd#ndz  }||"z  }|r|r	d'|› d	�|d(<   d)}#d*|› d|› d+|r|#                     |¦  «        nd,› d-�||fS ).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    rS   Fre  r0  zattr_dict['z
'].defaultz=attr_dict['z=NOTHINGzif z is not NOTHING:r6  zelse:Tr   z#if _config._run_validators is True:Ú__attr_validator_Ú__attr_z(self, z, self.zself.__attrs_post_init__()r‰  z', None)r—  z	'] = Noner@  z = Noner2  c              3  ó8   K  — | ]}|j         ¯	d |j        › �V — ŒdS )r@  N)r;   rž   rË   s     r!   r¿   z(_attrs_to_init_script.<locals>.<genexpr>P	  s4   è è € ÐBÐB¨Q¸1¼6ÐBÐ( ¤Ð(Ð(ÐBÐBÐBÐBÐBÐBr#   zBaseException.__init__(self, rµ   z*, c                ó   — g | ]	}|› d |› �‘Œ
S )ú=r   )r²   Úkw_arg_names     r!   rÈ   z)_attrs_to_init_script.<locals>.<listcomp>Z	  s8   € ð ð ð ð  ð Ð.Ð. Ð.Ð.ðð ð r#   c              3  óL   K  — | ]}|                      d ¦  «        d         V — Œ dS )r§  r   N)Úsplit)r²   Úkwas     r!   r¿   z(_attrs_to_init_script.<locals>.<genexpr>]	  s1   è è € Ð#NÐ#N¸# C§I¢I¨c¡N¤N°1Ô$5Ð#NÐ#NÐ#NÐ#NÐ#NÐ#Nr#   zself.__attrs_pre_init__(r   z
    zdef z):
    Úpassrñ   )r    r�  rô   r7   rž   rC   r   rê  rD   rJ   r6   rI   Ú
takes_selfr<   r‹  r;   Ú_INIT_FACTORY_PATÚ_get_global_namerP   r   r>   r3   Ú_first_param_typer   r�  rÖ   )$rƒ   r2  r0  rž  r€  rŸ  r   r¥   r  r„  rƒ  r¡  rö   Úextra_linesr˜  rš  r
  Úpre_init_argsÚkw_only_argsÚattrs_to_validateÚnames_for_globalsr   r§   r   r‡  Úarg_nameÚhas_factoryÚ
maybe_selfr<   Úinit_factory_nameÚargÚval_nameÚinit_hash_cacheÚvalsÚpre_init_kw_only_argsÚNLs$                                       r!   r}  r}  j  sX	  € ð( .;ÐBÐ(Ð)Ð)À€Eàð 
Ø�Šð 3ñ		
ô 	
ð 	
õ :LØ�:˜}ñ:ô :Ñ6€K�Ð6ð 
‡L‚L�ÑÔÐà€DØ€MØ€LØÐð ÐØ˜TÐ"€Kàð XDñ XDˆØŒ;ð 	(Ø×$Ò$ QÑ'Ô'Ð'à”Fˆ	Øœ¨TÐ1ð 
ØŒL¥¤Ð-ÐDÐ2Dð 	ð
 ”7ˆå  ¤­GÑ4Ô4ˆØ*ÐK¨q¬yÔ/CÐK�V�VÈˆ
àŒ;Ð"­:°a´kÅ9Ñ+MÔ+MÐ"Ý! !¤+Ñ.Ô.ˆIˆIàœˆIàŒ6�Uˆ?‰?Øð *Ý$5¸¼¸	Ñ$AÐ!ØÐ(Ø—L’LØ1Ð1Ø%Ø-Ð0A°JÐ0AÐ0AÐ0AÑAØ*Ø%ñ	ô ñô ð ð "Ô+ð & i×&@Ò&@ÀÄÑ&HÔ&HÑIÐIð —L’LØ"˜
Ø%Ø-Ð0A°JÐ0AÐ0AÐ0AÑAØ*ñô ñô ð ð 89´yÔ7HÐ!Ð"3Ñ4Ñ4ØÐ&Ø—’Ø-Ð-Ø!Ø; iÐ;Ð;Ð;Ø&Ø!ñ	ô ñô ð ð Ô'ð " )×"<Ò"<¸Q¼VÑ"DÔ"DÑEÑEð —’Ø�JØ!Ø; iÐ;Ð;Ð;Ø&ñô ñô ð ñ ð ŒY�gÐ%Ð%¨kÐ%ØÐ@Ð@¨9Ð@Ð@Ð@ˆCØŒyð /Ø×#Ò# CÑ(Ô(Ð(Ð(à—’˜CÑ Ô Ð Ø×$Ò$ XÑ.Ô.Ð.àÐ$Ø—’Ø-Ð-Ø! 8¨^¸Yñô ñô ð ð Ô'ð " )×"<Ò"<¸Q¼VÑ"DÔ"DÑEÑEð —’˜Z˜Z¨	°8¸^ÑLÔLÑMÔMÐMÑMàñ =	NØÐ'Ð'Ð'ˆCØŒyð /Ø×#Ò# CÑ(Ô(Ð(Ð(à—’˜CÑ Ô Ð Ø×$Ò$ XÑ.Ô.Ð.Ø�LŠLÐ9˜xÐ9Ð9Ð9Ñ:Ô:Ð:å 1°Q´V°IÑ =ÐØÐ$Ø—’ØØ/Ð/Ø! 8¨^¸Yñô ññô ð ð —’˜WÑ%Ô%Ð%Ø—’ØØ/Ð/Ø!Ø)¨CÑ/°*Ñ<¸sÑBØ&Ø!ñ	ô ññô ð ð Ô'ð " )×"<Ò"<¸Q¼VÑ"DÔ"DÑEÐEð —’Ø˜Z˜Z¨	°8¸^ÑLÔLÑLñô ð ð —’˜WÑ%Ô%Ð%Ø—’ØØ �jØ!Ø)¨CÑ/°*Ñ<¸sÑBØ&ñô ññô ð ð 45´9Ô3DÐÐ/Ñ0Ð0àŒyð /Ø×#Ò# HÑ-Ô-Ð-Ð-à—’˜HÑ%Ô%Ð%Ø×$Ò$ XÑ.Ô.Ð.àÐ$Ø—’Ø-Ð-Ø! 8¨^¸Yñô ñô ð ð Ô'ð " )×"<Ò"<¸Q¼VÑ"DÔ"DÑEÐEð —’˜Z˜Z¨	°8¸^ÑLÔLÑMÔMÐMàŒ6�Tˆ>ˆ>ØŒvÐ! iÐ&7Ø()¬�˜HÑ%Ñ%ØÐ&¨9Ô+FÐ&à(1Ô(C�˜HÑ%ùàð -Ý'.Ð˜)Ñ$Ø�ŠÐ:Ñ;Ô;Ð;Ø"ð 	-ð 	-ˆAØ*¨Q¬VÑ3ˆHØ! A¤FÑ*ˆIØ�LŠLÐL ÐLÐL°ÐLÐLÀ1Ä6ÐLÐLÐLÑMÔMÐMØ*+¬+Ð˜hÑ'Ø+,Ð˜iÑ(Ð(àð 3Ø�ŠÐ1Ñ2Ô2Ð2ð ð &Øð 	AØð NØ"JÕ/@Ð"JÐ"JÐ"J��à"MÕ1BÐ"MÐ"MÐ"M��à@Õ&7Ð@Ð@Ð@ˆOØ�Š�_Ñ%Ô%Ð%ð ð >Ø�xŠxÐBÐB°%ÐBÑBÔBÑBÔBˆà�ŠÐ<°TÐ<Ð<Ð<Ñ=Ô=Ð=à�9Š9�T‰?Œ?€DØ—I’I˜mÑ,Ô,€MØð /à˜4Ð'�4�4 RÐEÐE¨D¯IªI°lÑ,CÔ,CÐEÐEÑEˆØ $§	¢	ðð ð $OÐ#NÀÐ#NÑ#NÔ#Nðñ ô ñ!
ô !
Ðð 	 Ð6˜˜°BÑ6ˆØÐ.Ñ.ˆàð ?Ð*ð ?à>¨mÐ>Ð>Ð>ˆˆa‰ð 
€Bð	�ð 	ð 	 Tð 	ð 	ØÐ(€R‡W‚WˆU�^„^€^ &ð	ð 	ð 	ð 	Øðð r#   rž   c                ó,   — |                       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.
    rP  )ÚlstriprÊ   s    r!   rà   rà   r	  s   € ð �;Š;�sÑÔÐr#   c                  ón   — 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dS )rØ   az  
    *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.
    - ``alias_is_default`` (`bool`): Whether the ``alias`` was automatically
      generated (``True``) or explicitly provided by the user (``False``).
    - ``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*
    .. versionadded:: 26.1.0 *alias_is_default*

    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   rÒ   NFc                ó|  — t          ||p||p|d¦  «        \  }}}}t                               | ¦  «        } |d|¦  «          |d|¦  «          |d|¦  «          |d|¦  «          |d|¦  «          |d|¦  «          |d|¦  «          |d	|¦  «          |d
|¦  «          |d|¦  «          |d|¦  «          |d|	r!t          j        t          |	¦  «        ¦  «        nt          ¦  «          |d|
¦  «          |d|¦  «          |d|¦  «          |d|¦  «          |d|¦  «          |d|€|d u n|¦  «         d S )NTrž   r6   r7   r8   r?   r@   rA   rB   r:   r;   r<   r=   r3   r>   rš   rC   rD   rÒ   )rE   rÞ   rß   ÚtypesÚMappingProxyTyper1  Ú_EMPTY_METADATA_SINGLETON)r    rž   r6   r7   r8   r9   r:   r;   rš   r=   r3   r<   r>   r?   r@   rA   rB   rC   rD   rÒ   Úbound_setattrs                        r!   rI  zAttribute.__init__Â	  sÔ  € õ, (BØ��˜2˜yÐ1¨E°4ñ(
ô (
Ñ$ˆˆF�E˜9õ
 %×,Ò,¨TÑ2Ô2ˆð 	ˆ�f˜dÑ#Ô#Ð#Øˆ�i Ñ)Ô)Ð)Øˆ�k 9Ñ-Ô-Ð-Øˆ�f˜dÑ#Ô#Ð#Øˆ�d˜BÑÔÐØˆ�h Ñ'Ô'Ð'Øˆ�g˜uÑ%Ô%Ð%Øˆ�k 9Ñ-Ô-Ð-Øˆ�f˜dÑ#Ô#Ð#Øˆ�f˜dÑ#Ô#Ð#Øˆ�k 9Ñ-Ô-Ð-ØˆØð ð/•Ô&¥t¨H¡~¤~Ñ6Ô6Ð6å.ñ	
ô 	
ð 	
ð 	ˆ�f˜dÑ#Ô#Ð#Øˆ�i Ñ)Ô)Ð)Øˆ�k 9Ñ-Ô-Ð-Øˆ�l JÑ/Ô/Ð/Øˆ�g˜uÑ%Ô%Ð%ØˆØØ-Ð5ˆE�TˆMˆMÐ;Kñ	
ô 	
ð 	
ð 	
ð 	
r#   c                ó   — t           ‚r/   )r   r  s      r!   r  zAttribute.__setattr__þ	  s   € Ý!Ð!r#   rž   rU   rÄ   rO   r>   r$  c                ó4  — |€|j         }n|j         �d|› d�}t          |¦  «        ‚ | ||j        |j        |j        d |j        |j        d|j        ||j        |j	        €|n|j	        |j
        |j        |j        |j        |j        |j        |j        d u ¦  «        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Ä   r>   r3   rQ   s         r!   rÙ   zAttribute.from_counting_attr
  s²   € ð ˆ<Ø”7ˆDˆDØŒWÐ Ø[ÐSWÐ[Ð[Ð[ˆCÝ˜S‘/”/Ð!ØˆsØØŒKØŒMØŒGØØŒGØŒGØØŒKØØŒLØ”zÐ)ˆGˆG¨r¬zØŒEØŒIØŒHØŒLØŒMØŒHØŒH˜Ðñ'
ô 
ð 	
r#   c                ó\  — t          j         | ¦  «        }|                     |                     ¦   «         ¦  «         d|v r(d|vr$t                               |¦  «        dd¦  «         nDd|v r@d|vr<| j        r5t                               |¦  «        dt          |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
        rD   rÒ   Frž   )ÚcopyÚ	_setattrsrÕ   rÞ   rß   rÒ   rà   rž   )r    r  Únews      r!   rŸ   zAttribute.evolve$
  s½   € õ Œi˜‰oŒoˆà�Š�g—m’m‘o”oÑ&Ô&Ð&à�gÐÐÐ"4¸GÐ"CÐ"Cå× Ò  Ñ%Ô%Ð&8¸%Ñ@Ô@Ð@Ð@à�gÐÐØ˜wÐ&Ð&àÔ%ð 'õ
 × Ò  Ñ%Ô%ØÕ0°´Ñ:Ô:ñô ð ð ˆ
r#   c                óD   ‡ — t          ˆ fd„‰ j        D ¦   «         ¦  «        S )ú(
        Play nice with pickle.
        c              3  ól   •K  — | ].}|d k    rt          ‰|¦  «        nt          ‰j        ¦  «        V — Œ/dS )r=   N)r�   r1  r=   r¨  s     €r!   r¿   z)Attribute.__getstate__.<locals>.<genexpr>H
  sZ   øè è € ð 
ð 
àð $(¨:Ò#5Ð#5�G�D˜$ÑÔÐ½4ÀÄÑ;NÔ;Nð
ð 
ð 
ð 
ð 
ð 
r#   ©rL   rp  r   s   `r!   r-  zAttribute.__getstate__D
  s?   ø€ õ ð 
ð 
ð 
ð 
àœð
ñ 
ô 
ñ 
ô 
ð 	
r#   c                óx  — t          |¦  «        t          | j        ¦  «        k     rlt          t          | j        |¦  «        ¦  «        }|                     d¦  «        du p+|                     d¦  «        t          |d         ¦  «        k    }g |¢|‘R }|                      t          | j        |¦  «        ¦  «         dS )rÑ  rD   Nrž   )ri   rp  r1  r¬  r·   rà   rÎ  )r    r­  Ú
state_dictrÒ   s       r!   r.  zAttribute.__setstate__M
  sÂ   € õ ˆu‰:Œ:�˜DœNÑ+Ô+Ò+Ð+õ �c $¤.°%Ñ8Ô8Ñ9Ô9ˆJØ)Ÿ~š~Øñ ô  àð ð  à#Ÿš¨Ñ0Ô0Õ4KØ˜6Ô"ñ5ô 5ò ð ð
 /�eÐ.Ð-Ð.Ð.ˆEà�Š•s˜4œ>¨5Ñ1Ô1Ñ2Ô2Ð2Ð2Ð2r#   c           	     óØ   — t                                | ¦  «        }|D ]L\  }}|dk    r |||¦  «         Œ |||r!t          j        t	          |¦  «        ¦  «        nt
          ¦  «         ŒMd S )Nr=   )rÞ   rß   rÄ  rÅ  r1  rÆ  )r    Úname_values_pairsrÇ  rž   r  s        r!   rÎ  zAttribute._setattrs^
  s‘   € Ý$×,Ò,¨TÑ2Ô2ˆØ,ð 	ð 	‰KˆD�%Ø�zÒ!Ð!Ø�˜d EÑ*Ô*Ð*Ð*à�Øð !ð7�Ô.­t°E©{¬{Ñ;Ô;Ð;å6ñô ð ð ð		ð 	r#   )NNNFNNNNNNNr/   )rž   rU   rÄ   rO   r>   r$  )r&   r'   r(   r)   rp  rI  r  r…  rÙ   rŸ   r-  r.  rÎ  r   r#   r!   rØ   rØ   }	  sÓ   € € € € € ð+ð +ð^€Ið> ØØØØØØØØØØð):
ð :
ð :
ð :
ðx"ð "ð "ð à?Cð
ð 
ð 
ð 
ñ „[ð
ðDð ð ð@
ð 
ð 
ð3ð 3ð 3ð"ð ð ð ð r#   rØ   c                óv   — g | ]6}t          |t          d |dk    d dd|dk    ddt          |¦  «        ¬¦  «        ‘Œ7S )NrÒ   TFr=   ©rž   r6   r7   r8   r9   r?   rA   r:   r;   rš   rD   ©rØ   r   rà   ©r²   rž   s     r!   rÈ   rÈ   n
  sm   € ð ð ð ð 	õ ØÝØØÐ(Ò(ØØØØ�jÒ ØØÝ% dÑ+Ô+ðñ ô ðð ð r#   )rƒ   c                ó(   — g | ]}|j         d k    ¯|‘ŒS r™   rÊ   rË   s     r!   rÈ   rÈ   ‚
  s$   € Ð6Ð6Ð6�Q ¤¨+Ò 5Ð 5ˆqÐ 5Ð 5Ð 5r#   c                ó6   — g | ]}|j         ¯	|j        d k    ¯|‘ŒS r™   )r:   rž   rË   s     r!   rÈ   rÈ   „
  s+   € Ð
=Ð
=Ð
=�˜AœFÐ
= q¤v°Ò'<Ð'<ˆ1Ð'<Ð'<Ð'<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¬	¦  «        ‘R Zd
Zd„ Z	d„ Z
d„ ZdS )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              #  óv   K  — | ]4}t          |t          |¦  «        t          d dd ddddd dd dd ¬¦  «        V — Œ5d S )NTF©rž   rD   r6   r7   r8   r9   r:   r;   r>   r?   r@   rA   rB   rš   rC   )rØ   rà   r   rÛ  s     r!   r¿   z_CountingAttr.<genexpr>¤
  s|   è è € ð 
ð 
ð$ õ# ØÝ-¨dÑ3Ô3ÝØØØØØØØØØØØØðñ ô ð
ð 
ð 
ð 
ð 
ð 
r#   )	r¸   rÊ  r8   r?   rA   r:   r;   rC   rD   r=   NTFrà  r   c                ó$  — t           xj        dz  c_        t           j        | _        || _        || _        || _        || _        || _        || _        || _	        || _
        || _        || _        || _        |	| _        |
| _        || _        || _        d S 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!   rI  z_CountingAttr.__init__Ö
  s�   € õ& 	Ð!Ô! QÑ&Ð!Ô!Ý$Ô0ˆŒØˆŒØ#ˆŒØ"ˆŒØˆŒ	ØˆŒØˆŒØˆŒ
Ø"ˆŒØˆŒ	ØˆŒ	Ø ˆŒØˆŒ	ØˆŒØ$ˆŒØˆŒ
ˆ
ˆ
r#   c                óX   — | j         €|| _         n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û
  s-   € ð Œ?Ð"Ø"ˆDŒOˆOå" 4¤?°DÑ9Ô9ˆDŒOØˆr#   c                ó\   — | 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)r­  )rÊ  r   r   rI   rä  s     r!   r6   z_CountingAttr.default	  s0   € ð Œ=¥Ð'Ð'Ý(Ð(å °Ð6Ñ6Ô6ˆŒàˆr#   )r&   r'   r(   r)   rp  rL   rØ   r˜   râ  rI  r7   r6   r   r#   r!   rO   rO   ˆ
  sá   € € € € € ðð ð€Ið$0Ø	ˆð 
ð 
ð$
ð%
ñ 
ô 
ñ 

ô 

ð0ð> 	ˆ	ØØØØØØØØØØØØØØØð	
ñ 	
ô 	
ð?0ð 0€Oðb €Kð#ð #ð #ðJð ð ðð ð ð ð r#   rO   c                  ó~   — e Zd ZdZ G d„ dej        ¦  «        Z G d„ dej        ¦  «        ZdZd„ Z	e
d„ ¦   «         Zd	S )
rÚ   a¥  
    Effective class properties as derived from parameters to `attr.s()` or
    `define()` decorators.

    This is the same data structure that *attrs* uses internally to decide how
    to construct the final class.

    Warning:

        This feature is currently **experimental** and is not covered by our
        strict backwards-compatibility guarantees.


    Attributes:
        is_exception (bool):
            Whether the class is treated as an exception class.

        is_slotted (bool):
            Whether the class is `slotted <slotted classes>`.

        has_weakref_slot (bool):
            Whether the class has a slot for weak references.

        is_frozen (bool):
            Whether the class is frozen.

        kw_only (KeywordOnly):
            Whether / how the class enforces keyword-only arguments on the
            ``__init__`` method.

        collected_fields_by_mro (bool):
            Whether the class fields were collected by method resolution order.
            That is, correctly but unlike `dataclasses`.

        added_init (bool):
            Whether the class has an *attrs*-generated ``__init__`` method.

        added_repr (bool):
            Whether the class has an *attrs*-generated ``__repr__`` method.

        added_eq (bool):
            Whether the class has *attrs*-generated equality methods.

        added_ordering (bool):
            Whether the class has *attrs*-generated ordering methods.

        hashability (Hashability): How `hashable <hashing>` the class is.

        added_match_args (bool):
            Whether the class supports positional `match <match>` over its
            fields.

        added_str (bool):
            Whether the class has an *attrs*-generated ``__str__`` method.

        added_pickling (bool):
            Whether the class has *attrs*-generated ``__getstate__`` and
            ``__setstate__`` methods for `pickle`.

        on_setattr_hook (Callable[[Any, Attribute[Any], Any], Any] | None):
            The class's ``__setattr__`` hook.

        field_transformer (Callable[[Attribute[Any]], Attribute[Any]] | None):
            The class's `field transformers <transform-fields>`.

    .. versionadded:: 25.4.0
    c                  ó(   — e Zd ZdZdZ	 dZ	 dZ	 dZdS )úClassProps.HashabilityzO
        The hashability of a class.

        .. versionadded:: 25.4.0
        ÚhashableÚhashable_cacheÚ
unhashableÚleave_aloneN)r&   r'   r(   r)   r  r6  r  r  r   r#   r!   r5  rè  d  s9   € € € € € ð	ð 	ð ˆØ#Ø*ˆØ6Ø!ˆ
Ø+Ø#ˆØ'Ð'r#   r5  c                  ó"   — e Zd ZdZdZ	 dZ	 dZdS )úClassProps.KeywordOnlyzw
        How attributes should be treated regarding keyword-only parameters.

        .. versionadded:: 25.4.0
        rÇ   ÚyesÚforceN)r&   r'   r(   r)   rÜ   r  rÝ   r   r#   r!   rÛ   rî  t  s1   € € € € € ð	ð 	ð ˆØ.ØˆØQØˆØ.Ð.r#   rÛ   ©r:  r0  r3  r2  r>   r/  r  r	  r
  r  r4  r  r  r?  r;  rä   c                óæ   — || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        || _        || _        || _        || _        d S r/   rñ  )r    r:  r0  r3  r2  r>   r/  r  r	  r
  r  r4  r  r  r?  r;  rä   s                    r!   rI  zClassProps.__init__•  sƒ   € ð& )ˆÔØ$ˆŒØ 0ˆÔØ"ˆŒØˆŒØ'>ˆÔ$Ø$ˆŒØ$ˆŒØ ˆŒØ,ˆÔØ&ˆÔØ 0ˆÔØ"ˆŒØ,ˆÔØ.ˆÔØ!2ˆÔÐÐr#   c                ób   — | j         t          j        j        u p| j         t          j        j        u S r/   )r4  rÚ   r5  r  r6  r   s    r!   r  zClassProps.is_hashable¹  s1   € ð Ô¥
Ô 6Ô ?Ð?ð JØÔ¥:Ô#9Ô#IÐIð	
r#   N)r&   r'   r(   r)   r*   ÚEnumr5  rÛ   rp  rI  r|   r  r   r#   r!   rÚ   rÚ     s«   € € € € € ðBð BðH(ð (ð (ð (ð (�d”iñ (ô (ð (ð /ð /ð /ð /ð /�d”iñ /ô /ð /ð€Ið&"3ð "3ð "3ðH ð
ð 
ñ „Xð
ð 
ð 
r#   rÚ   c                óf   — g | ].}t          |t          d dd dddddt          |¦  «        ¬¦  «        ‘Œ/S )NTFrÙ  rÚ  rÛ  s     r!   rÈ   rÈ   Á  sb   € ð ð ð ð 	õ ØÝØØØØØØØØÝ% dÑ+Ô+ðñ ô ðð ð r#   c                  ó*   — e Zd ZdZdZdd„Zd„ Zd„ ZdS )	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   r­  Fc                ó"   — || _         || _        d S r/   r÷  )r    rP   r­  s      r!   rI  zFactory.__init__ê  s   € ØˆŒØ$ˆŒˆˆr#   c                óD   ‡ — t          ˆ fd„‰ j        D ¦   «         ¦  «        S )rÑ  c              3  ó8   •K  — | ]}t          ‰|¦  «        V — Œd S r/   ro  r¨  s     €r!   r¿   z'Factory.__getstate__.<locals>.<genexpr>ò  s-   øè è € ÐDÐD¨T•W˜T 4Ñ(Ô(ÐDÐDÐDÐDÐDÐDr#   rÓ  r   s   `r!   r-  zFactory.__getstate__î  s*   ø€ õ ÐDÐDÐDÐD°T´^ÐDÑDÔDÑDÔDÐDr#   c                ó^   — t          | j        |¦  «        D ]\  }}t          | ||¦  «         ŒdS )rÑ  N)r¬  rp  re  )r    r­  rž   r  s       r!   r.  zFactory.__setstate__ô  sB   € õ ˜tœ~¨uÑ5Ô5ð 	'ð 	'‰KˆD�%Ý�D˜$ Ñ&Ô&Ð&Ð&ð	'ð 	'r#   N)F)r&   r'   r(   r)   rp  rI  r-  r.  r   r#   r!   rI   rI   Õ  sZ   € € € € € ðð ð$ *€Ið%ð %ð %ð %ðEð Eð Eð'ð 'ð 'ð 'ð 'r#   rI   c                óJ   — g | ] }t          |t          d dd ddddd¬¦
  «
        ‘Œ!S ©NTF)
rž   r6   r7   r8   r9   r?   rA   r:   r;   rš   ©rØ   r   rÛ  s     r!   rÈ   rÈ   ü  óW   € ð ð ð ð 	õ ØÝØØØØØØØØðñ ô ðð ð r#   c                  óP   — e Zd ZdZdZdddœd„Zedd	„¦   «         Zdd„Zd„ Z	d„ Z
dS )r‹  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__r°  Ú_global_namer<   Útakes_fieldr­  F©r­  r  c               ó~  ‡ — |‰ _         |‰ _        |‰ _        t          |¦  «        }|                     ¦   «         ‰ _        ‰ j        s‰ j        sˆ fd„‰ _        n>‰ j        r‰ j        sˆ fd„‰ _        n%‰ j        s‰ j        rˆ fd„‰ _        n‰ j         ‰ _        |                     ¦   «         }|�|‰ j        j        d<   d S d S )Nc                ó.   •— ‰                      | ¦  «        S r/   ©r<   )r  rP  Ú__r    s      €r!   r»   z$Converter.__init__.<locals>.<lambda>6  s   ø€ °·²ÀÑ1FÔ1F€ r#   c                ó0   •— ‰                      | |¦  «        S r/   r  )r  Úinstancer  r    s      €r!   r»   z$Converter.__init__.<locals>.<lambda>8  s   ø€ ¸¿ºØ�xñ9ô 9€ r#   c                ó0   •— ‰                      | |¦  «        S r/   r  )r  r  rÌ  r    s      €r!   r»   z$Converter.__init__.<locals>.<lambda><  s   ø€ °T·^²^Ø�uñ6ô 6€ r#   r[   )	r<   r­  r  r   Úget_first_param_typer°  r  Úget_return_typerˆ   )r    r<   r­  r  ÚexÚrts   `     r!   rI  zConverter.__init__-  sû   ø€ Ø"ˆŒØ$ˆŒØ&ˆÔå! )Ñ,Ô,ˆØ!#×!8Ò!8Ñ!:Ô!:ˆÔà”ð 	+ 4Ô#3ð 	+ØFÐFÐFÐFˆDŒMˆMØŒ_ð 		+ TÔ%5ð 		+ðð ð ð ˆDŒMˆMð ”ð 	+ TÔ%5ð 	+ðð ð ð ˆDŒMˆMð !œNˆDŒMà×ÒÑ!Ô!ˆØˆ>Ø68ˆDŒMÔ)¨(Ñ3Ð3Ð3ð ˆ>r#   r   rU   r[   c                ó   — d| › �S )zh
        Return the name that a converter for an attribute name *attr_name*
        would have.
        Ú__attr_converter_r   )r   s    r!   r¯  zConverter._get_global_nameF  s   € ð / 9Ð.Ð.Ð.r#   r†  c                ó,  — | j         s"| j        s|                      |¦  «        › d|› d�S | j         r%| j        r|                      |¦  «        › d|› d|› d�S | j         r|                      |¦  «        › d|› d�S |                      |¦  «        › 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`.
        re  r0  z, self, attr_dict['z'])z, self)z, attr_dict[')r­  r  r¯  )r    r   r†  s      r!   r�  zConverter._fmt_converter_callN  sà   € ð ”ð 	F 4Ô#3ð 	FØ×+Ò+¨IÑ6Ô6ÐEÐE¸ÐEÐEÐEÐEàŒ?ð 	f˜tÔ/ð 	fØ×+Ò+¨IÑ6Ô6ÐeÐe¸ÐeÐeÐW`ÐeÐeÐeÐeàŒ?ð 	LØ×+Ò+¨IÑ6Ô6ÐKÐK¸ÐKÐKÐKÐKà×'Ò'¨	Ñ2Ô2Ð[Ð[°YÐ[Ð[ÈYÐ[Ð[Ð[Ð[r#   c                ó,   — | j         | j        | j        dœS )zx
        Return a dict containing only converter and takes_self -- the rest gets
        computed when loading.
        ©r<   r­  r  r  r   s    r!   r-  zConverter.__getstate___  s#   € ð œØœ/ØÔ+ð
ð 
ð 	
r#   c                ó    —  | j         di |¤Ž dS )z+
        Load instance from state.
        Nr   r  )r    r­  s     r!   r.  zConverter.__setstate__j  s"   € ð 	ˆŒÐÐ˜ÐÐÐÐÐr#   N)r   rU   r[   rU   )r   rU   r†  rU   r[   rU   )r&   r'   r(   r)   rp  rI  r†  r¯  r�  r-  r.  r   r#   r!   r‹  r‹    s›   € € € € € ðð ð(€Ið 16À5ð 9ð 9ð 9ð 9ð 9ð2 ð/ð /ð /ñ „\ð/ð\ð \ð \ð \ð"	
ð 	
ð 	
ðð ð ð ð r#   c                óJ   — g | ] }t          |t          d dd ddddd¬¦
  «
        ‘Œ!S rý  rþ  rÛ  s     r!   rÈ   rÈ   q  rÿ  r#   r  c                óÞ  ‡— t          j        d| ¦  «        } t          |t          ¦  «        r|}n:t          |t          t
          f¦  «        rd„ |D ¦   «         }nd}t          |¦  «        ‚|                     dd¦  «        }|                     dd¦  «        }|                     dd¦  «        }	i Š|�‰                     |¦  «         |�|‰d<   |�|‰d<   |	�|	‰d<   t          j
        | |i ˆfd„¦  «        }
t          j        t          t          ¦  «        5  t          j        d	¦  «        j                             d
d¦  «        |
_        ddd¦  «         n# 1 swxY w Y   |                     dd¦  «        }t)          ||                     d¦  «        |                     d¦  «        d¦  «        \  |d<   |d<    t+          dd|i|¤Ž|
¦  «        }d„ |                     ¦   «         D ¦   «         |_        |S )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.
    ÚNFKCc                ó,   — i | ]}|t          ¦   «         “ŒS r   )rR   rË   s     r!   rl  zmake_class.<locals>.<dictcomp>»  s   € Ð/Ð/Ð/ A�A•v‘x”xÐ/Ð/Ð/r#   z(attrs argument must be a dict or a list.r*  Nr+  rI  c                ó.   •— |                       ‰¦  «        S r/   )rO  )r›  r~   s    €r!   r»   zmake_class.<locals>.<lambda>Î  s   ø€ ¸¿	º	À$¹¼€ r#   r
   r&   Ú__main__r9   r?   rA   Trá   c                ó2   — i | ]\  }}|j         ®||j         “ŒS r/   )r3   )r²   rj  rk  s      r!   rl  zmake_class.<locals>.<dictcomp>ç  s.   € ð ð ð Ù�a˜°!´&Ð2Dˆˆ1Œ6Ð2DÐ2DÐ2Dr#   r   )ÚunicodedataÚ	normalizerJ   r1  rK   rL   rF   ÚpoprO  rÄ  Ú	new_classra  rb  rc  rG   r|  Ú	_getframeÚ	f_globalsr·   r'   rø  r  rÕ   rˆ   )rž   rƒ   ÚbasesÚ
class_bodyÚattributes_argumentsr˜  rQ   r  r�  Ú	user_initrq  r9   r“   r~   s                @r!   Ú
make_classr'  †  sd  ø€ õ` Ô  ¨Ñ.Ô.€Då�%�ÑÔð ØˆˆÝ	�E�D¥%˜=Ñ	)Ô	)ð Ø/Ð/¨Ð/Ñ/Ô/ˆˆà8ˆÝ˜‰nŒnÐà�|Š|Ð0°$Ñ7Ô7€HØ—’Ð2°DÑ9Ô9€IØ—’˜Z¨Ñ.Ô.€Ià€DØÐØ�Š�JÑÔÐØÐØ%-ˆÐ!Ñ"ØÐØ&/ˆÐ"Ñ#ØÐØ$ˆˆZÑåŒO˜D %¨Ð-GÐ-GÐ-GÐ-GÑHÔH€Eõ 
Ô	�^­ZÑ	8Ô	8ð 
ð 
Ýœ=¨Ñ+Ô+Ô5×9Ò9Ø˜
ñ
ô 
ˆÔð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð ×
"Ò
" 5¨$Ñ
/Ô
/€Cõ 	"ØØ× Ò  Ñ&Ô&Ø× Ò  Ñ)Ô)Øñ		ô 	ñØ˜TÑ"Ø˜WÑ%ð 9�&Ð
8Ð
8�xÐ
8Ð#7Ð
8Ð
8¸Ñ
?Ô
?€Cðð Ø&ŸnšnÑ.Ô.ðñ ô €CÔð €Js   Ä3EÅEÅE)r   r'  c                  ó,   — e Zd ZdZ e¦   «         Zd„ ZdS )Ú_AndValidatorz2
    Compose many validators to a single one.
    c                ó4   — | j         D ]} ||||¦  «         Œd S r/   )Ú_validators)r    r  r³   r  rk  s        r!   r  z_AndValidator.__call__ù  s5   € ØÔ!ð 	!ð 	!ˆAØˆAˆd�D˜%Ñ Ô Ð Ð ð	!ð 	!r#   N)r&   r'   r(   r)   rR   r+  r  r   r#   r!   r)  r)  ñ  s:   € € € € € ðð ð �&‘(”(€Kð!ð !ð !ð !ð !r#   r)  c                 ó¬   — g }| D ]4}|                      t          |t          ¦  «        r|j        n|g¦  «         Œ5t          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   )Ú
validatorsr½  r7   s      r!   rN   rN   þ  sh   € ð €DØð 
ð 
ˆ	Ø�Šå˜)¥]Ñ3Ô3ðˆIÔ!Ð!à�ñ	
ô 	
ð 	
ð 	
õ �˜t™œÑ%Ô%Ð%r#   c                 óð  ‡ — t          d„ ‰ D ¦   «         ¦  «        }|rˆ fd„}nˆ fd„}‰ s-t          d¦  «        }|j                             ||dœ¦  «         n‹t	          ‰ d         ¦  «                             ¦   «         }|r
||j        d<   ‰ d         }t          st          |t          ¦  «        r|j	        }t	          |¦  «         
                    ¦   «         }|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          ¦  «        V — Œd S r/   ©rJ   r‹  )r²   Úcs     r!   r¿   zpipe.<locals>.<genexpr>%  s,   è è € ÐGÐG°q�* Q­	Ñ2Ô2ÐGÐGÐGÐGÐGÐGr#   c                ól   •— ‰D ]/}t          |t          ¦  «        r || ||¦  «        n
 || ¦  «        } Œ0| S r/   r0  )rç  r  rÌ  r1  Ú
converterss       €r!   Úpipe_converterzpipe.<locals>.pipe_converter)  sM   ø€ Øð ð �å+5°a½Ñ+CÔ+CÐO�A�A�c˜4 Ñ'Ô'Ð'ÈÈÈ3ÉÌð �ð ˆJr#   c                ó(   •— ‰D ]} || ¦  «        } Œ| S r/   r   )rç  r1  r3  s     €r!   r4  zpipe.<locals>.pipe_converter3  s&   ø€ Øð ð �Ø�a˜‘f”f��àˆJr#   ÚA)rç  r[   r   rç  rf   r[   Tr  )rö  r	   rˆ   rO  r   r  r   rJ   r‹  r  r  )r3  Úreturn_instancer4  r6  ÚtÚlastr  s   `      r!   rM   rM     sH  ø€ õ  ÐGÐG¸JÐGÑGÔGÑGÔG€Oàð ð	ð 	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð ð :å�C‰LŒLˆØÔ&×-Ò-°aÀ1Ð.EÐ.EÑFÔFÐFÐFõ ! ¨A¤Ñ/Ô/×DÒDÑFÔFˆØð 	6Ø45ˆNÔ*¨5Ñ1à˜"Œ~ˆÝð 	!¥
¨4µÑ ;Ô ;ð 	!Ø”=ˆDõ " $Ñ'Ô'×7Ò7Ñ9Ô9ˆØð 	:Ø79ˆNÔ*¨8Ñ4àð LÝ˜°DÀdÐKÑKÔKÐKØÐr#   )NrS   )
rT   rU   rV   rW   rX   rY   rZ   rU   r[   r\   r/   )
rT   rU   rZ   rU   rV   rW   rc   rY   r[   rd   )rs   rU   rt   ru   r[   r3   )r[   r–   )r[   r‚   )T)NNNNNNNFFTFFFFFNNFFNNNTNT)r“   r3   r)  rU   r[   rU   )
r“   r3   rƒ   r„   r·  r$  r¸  r$  r[   r,  )r“   r3   rƒ   r„   )rƒ   rK   r[   r,  )r[   r,  )NN)r[   rz  r›  rœ  )r   rU   r  rU   r‡  r$  r[   rU   )r·  r$  r   r$  r¥   r†   )rƒ   r„   r2  r$  r0  r$  rž  r$  r€  r$  rŸ  r$  r   r$  r¥   r†   r  r$  r„  r$  rƒ  r$  r¡  rU   r[   rz  )rž   rU   r[   rU   )lÚ
__future__r   r[  ra  rÍ  r*   r7  r‚  rk   r|  rÄ  r  rW  Úcollections.abcr   r   Ú	functoolsr   Útypingr   r   r	   rS   r   r   r   r   r   r   r   r   r   Ú
exceptionsr   r   r   r   Úobjectr  rÞ   r®  rŽ   r�  rÅ  rÆ  r`  rM   r>  r=  r<  rô  r   r   Úintr-   rR   rb   rr   r€   r‚   r�   r•   rª   r¬   rì   rù   r  r  rŸ   r  rø  rE   r  rƒ   r  r  rõ   r»  rG  rØ  rÙ  râ  r_  rš  rm  r	  rt  ry  rÅ  rŠ  r�  r‘  r“  r�  r}  rà   rØ   rp  Ú_arO   rÚ   Ú_casrI   Ú_fr‹  r'  r)  rN   r   r#   r!   ú<module>rD     s>	  ðð #Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø €€€à -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø %Ð %Ð %Ð %Ð %Ð %Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +ð (Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð Ô!€Ø'Ð ðÐ ð )Ð à2˜EÔ2°2Ñ6Ô6Ð ð ˆF‰HŒH€	à"�g”l 7¤?°GÔ4DÑEÔEÐ ðð ð ð ð ˆtŒyñ ô ð ð( Ô
€ðð(ð (ð (ð (ð (˜ñ (ô (ð (ð" ØØ	ØØ	Ø	ØØ	ØØØØØ
ØØ
ðkð kð kð kðb )-Øð	 ð  ð  ð  ð  ð$ +/ð	 ð  ð  ð  ð  ðF1ð 1ð 1ð 1ð.$ð $ð $ð $ð $�*ñ $ô $ð $ð0ð 0ð 0ð"'ð 'ð 'ð#ð #ð #ð #ðB%ð %ð %ð8}Eð }Eð }Eð }Eð@1ð 1ð 1ðhð ð ð"ð ð ð7ð 7ð 7ðtD	ð D	ð D	ð D	ð D	ñ D	ô D	ð D	ðNð ð ð8((ð ((ð ((ðX .2ðð ð ð ð6 Ø
ØØ	ØØ	Ø	Ø
ØØØØØØØØØ
ØØØØØØØØð3Bð Bð Bð BðJ 
€ðð/ð /ð /ðð ð ð ðEð Eð Eð EðPð ð ð ð	ð 	ð 	ð"ð "ð "ð "ðJ5*ð 5*ð 5*ðpð ð ð ð"6#ð 6#ð 6#ð 6#ðrð ð ð ð0ð 0ð 0ðf&ð &ð &ð:.ð .ð .ð$/ð /ð /ðB&ð B&ð B&ð B&ðJ3ð 3ð 3ð 3ð]ð ]ð ]ð ]ð)ð )ð )ð )ð
Wð 
Wð 
Wð 
Wð,/ð ,/ð ,/ð ,/ð^Eð Eð Eð EðPð ð ð ðnð nð nð nð nñ nô nð nðbð ð Ô#ðñ ô €ð" ˆIØ€GØˆ	�) 2Ð&Ñ&Ô&Ø6Ð6˜"Ð6Ñ6Ô6ðñ ô ð >Ð
=�bÐ
=Ñ
=Ô
=ðñ ô €	ðQð Qð Qð Qð Qñ Qô Qð Qðh �˜	˜	 -Ñ0Ô0Ñ1Ô1€ð_
ð _
ð _
ð _
ð _
ñ _
ô _
ð _
ðDð ð Ô$ðñ ô €ð" ˆW�Y�Y˜z°Ð6Ñ6Ô6¸dÐCÑCÔC€
ð$'ð $'ð $'ð $'ð $'ñ $'ô $'ð $'ðNð ð Ô!ðñ ô €ð  ˆ)�G�G˜I˜I g°RÐ8Ñ8Ô8ÀÐCÑCÔCÈ2Ð
NÑ
NÔ
N€ð_ð _ð _ð _ð _ñ _ô _ð _ðDð ð ;ðñ ô €ð  ˆIØ€GˆIˆI�i rÐ*Ñ*Ô*°"Ð5Ñ5Ô5¸Rðñ ô €	ð �y¨Tðdð dð dð dðV €ˆT˜tÐ$Ñ$Ô$ð	!ð 	!ð 	!ð 	!ð 	!ñ 	!ô 	!ñ %Ô$ð	!ð&ð &ð &ð.9ð 9ð 9ð 9ð 9r#   