§
    ¨öÉgÍo ã                  ó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 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j)        ¦  «        Z* G d„ dej+        ¦  «        Z,e,j-        Z-	  G d„ de.¦  «        Z/e-ddddddddddddddfd„Z0dld„Z1dmd„Z2d„ Z3 e3dg d¢¦  «        Z4d„ Z5d„ Z6d„ Z7d„ Z8d„ Z9d„ Z:d„ Z;d„ Z<d „ Z= G d!„ d"¦  «        Z>d#„ Z?d$„ Z@	 dnd%„ZA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dod&„ZBeBZC	 d'„ ZDd(„ ZEd)„ ZFd*„ ZGd+„ ZHd,„ ZId-„ ZJdmd.„ZKd/„ ZLdpd0„ZMd1„ ZNd2„ ZOd3„ Z)d4„ ZPd5„ ZQdqd<„ZRdrd?„ZSdsdA„ZTdrdB„ZUdtdG„ZVdudU„ZWdvdW„ZX G dX„ dY¦  «        ZYdZ„ eYjZ        D ¦   «         Z[ eG eK eMeYe[¬[¦  «        d\„ e[D ¦   «         ¬[¦  «        d]„ e[D ¦   «         ¬[¦  «        ZY G d^„ d_¦  «        Z\ eK eMe\¦  «        ¦  «        Z\ G d`„ da¦  «        Z]db„ e]jZ        D ¦   «         Z^ eG eK eMe]e^¬[¦  «        e^¬[¦  «        e^¬[¦  «        Z] G dc„ d>¦  «        Z_dd„ deD ¦   «         Z^ eG eK eMe_e^¬[¦  «        e^¬[¦  «        e^¬[¦  «        Z_efdfdf„Z` eBdd¬g¦  «         G dh„ di¦  «        ¦   «         Zadj„ Zbdk„ Z'dS )wé    )ÚannotationsN)Ú
itemgetteré   )Ú_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    úV/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/attr/_make.pyÚ__repr__z_Nothing.__repr__I   s   € Øˆyó    c                ó   — dS )NFr   r   s    r   Ú__bool__z_Nothing.__bool__L   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__d   s   € Ø  %Ð'Ð'r   )r!   r"   r#   r$   Útyper-   r   r   r   r(   r(   X   sA   € € € € € ð	ð 	ð ,0¨4°©:¬:¸Rð (ð (ð (ð (ð (ð (r   r(   TFc                ó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*
    TNFú6Invalid value for hash.  Must be True, False, or None.z=The `default` and `factory` arguments are mutually exclusive.z*The `factory` argument must be a callable.ÚdefaultÚ	validatorÚreprÚcmpÚhashÚinitÚ	converterÚmetadatar.   Úkw_onlyÚeqÚeq_keyÚorderÚ	order_keyÚ
on_setattrÚaliasr   )Ú_determine_attrib_eq_orderÚ	TypeErrorr   Ú
ValueErrorÚcallableÚFactoryÚ
isinstanceÚlistÚtupler   ÚpipeÚand_Ú_CountingAttr)r1   r2   r3   r4   r5   r6   r8   r.   r7   Úfactoryr9   r:   r<   r>   r?   r;   r=   Úmsgs                     r   ÚattribrM   h   sø  € õn $>Øˆ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   Ú c                óJ   — t          | |d¦  «        }t          |||¦  «         dS )z[
    Evaluate the script with the given global (globs) and local (locs)
    variables.
    ÚexecN)ÚcompileÚeval)ÚscriptÚglobsÚlocsÚfilenameÚbytecodes        r   Ú_compile_and_evalrX   Ó   s-   € õ
 �v˜x¨Ñ0Ô0€HÝˆ�5˜$ÑÔÐÐÐr   c                ó  — |€i n|}d}|}	 t          |¦  «        d|                     d¦  «        |f}t          j                             ||¦  «        }	|	|k    rn|dd…         › d|› d�}|dz  }Œct          ||||¦  «         ||          S )zO
    Create the method with the script given and return the method object.
    Nr   Téÿÿÿÿú-ú>)ÚlenÚ
splitlinesÚ	linecacheÚcacheÚ
setdefaultrX   )
ÚnamerS   rV   rT   ÚlocalsrU   ÚcountÚbase_filenameÚlinecache_tupleÚold_vals
             r   Ú_make_methodrh   Ü   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à�Œ:Ðr   c                ó"  — | › d�}d|› d�dg}|r2t          |¦  «        D ]!\  }}|                     d|› d|› d�¦  «         Œ"n|                     d¦  «         t          t          d	œ}t	          d
                     |¦  «        |¦  «         ||         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))
    Ú
Attributeszclass z(tuple):z    __slots__ = ()ú    z% = _attrs_property(_attrs_itemgetter(ú))z    pass)Ú_attrs_itemgetterÚ_attrs_propertyú
)Ú	enumerateÚappendr   ÚpropertyrX   Újoin)Úcls_nameÚ
attr_namesÚattr_class_nameÚattr_class_templateÚiÚ	attr_namerT   s          r   Ú_make_attr_tuple_classrz   ù   sÓ   € ð "Ð-Ð-Ð-€Oà*�Ð*Ð*Ð*ØðÐð ð /Ý% jÑ1Ô1ð 	ð 	‰LˆAˆyØ×&Ò&ØL�yÐLÐLÀqÐLÐLÐLñô ð ð ð	ð
 	×"Ò" :Ñ.Ô.Ð.Ý",ÅÐJÐJ€EÝ�d—i’iÐ 3Ñ4Ô4°eÑ<Ô<Ð<Ø�Ô!Ð!r   Ú_Attributes)ÚattrsÚ
base_attrsÚbase_attrs_mapc                ó¼   — 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   rZ   )ÚstrÚ
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Œ   4  s   € ð ˜#œ,Ð&Ð&r   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   rZ   Ú__attrs_attrs__T©Ú	inheritedr   )
ÚreversedÚ__mro__Úgetattrr�   rb   Úevolverq   Ú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   rZ   rŽ   Tr�   )r’   r“   rb   r”   r—   rq   )rŠ   r˜   r}   r™   rš   r›   s         r   Ú_collect_base_attrs_brokenr    Z  sµ   € ð €JØ€Mð ”K  " Ô%ð -ð -ˆÝ˜Ð#4°bÑ9Ô9ð 	-ð 	-ˆAØŒvÐ)Ð)Ð)Øà—’ 4�Ñ(Ô(ˆAØ× Ò  ¤Ñ(Ô(Ð(Ø×Ò˜aÑ Ô Ð Ø$,ˆM˜!œ&Ñ!Ð!ð	-ð �}Ð$Ð$r   c           
     óT  ‡‡— | j         Št          | ¦  «        Š|�#t          |                     ¦   «         ¦  «        }�na|du �r.d„ ‰                     ¦   «         D ¦   «         }g }t	          ¦   «         }‰                     ¦   «         D ]˜\  }	}
t          |
¦  «        rŒ|                     |	¦  «         ‰                     |	t          ¦  «        }t          |t          ¦  «        s'|t          u rt          ¦   «         nt          |¬¦  «        }|                     |	|f¦  «         Œ™||z
  }t          |¦  «        dk    r:t          dd                     t!          |ˆfd„¬	¦  «        ¦  «        z   d
z   ¦  «        ‚n.t!          d„ ‰                     ¦   «         D ¦   «         d„ ¬	¦  «        }ˆfd„|D ¦   «         }|rt#          | d„ |D ¦   «         ¦  «        \  }}nt%          | d„ |D ¦   «         ¦  «        \  }}|rd„ |D ¦   «         }d„ |D ¦   «         }||z   }d}d„ |D ¦   «         D ]<}|du r"|j        t          u rd|›�}t)          |¦  «        ‚|du r|j        t          urd}Œ=|� || |¦  «        }d„ |D ¦   «         }d„ |D ¦   «         }t+          | j        |¦  «        }t/           ||¦  «        ||f¦  «        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                óB   — h | ]\  }}t          |t          ¦  «        ¯|’ŒS r   ©rE   rJ   ©Ú.0rb   Úattrs      r   ú	<setcomp>z#_transform_attrs.<locals>.<setcomp>‰  s<   € ð 
ð 
ð 
á��dÝ˜$¥Ñ.Ô.ð
Øð
ð 
ð 
r   ©r1   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  óN   K  — | ] \  }}t          |t          ¦  «        ¯||fV — Œ!d S r*   r£   r¤   s      r   ú	<genexpr>z#_transform_attrs.<locals>.<genexpr>¥  sN   è è € ð ð á�D˜$Ý˜d¥MÑ2Ô2ðØ�t�ðð ð ð ð ð r   c                ó   — | d         j         S ©Nr   )r¬   )Úes    r   r¯   z"_transform_attrs.<locals>.<lambda>ª  s   € ˜!˜Aœ$œ,€ r   c           	     óv   •— g | ]5\  }}t                                ||‰                     |¦  «        ¬ ¦  «        ‘Œ6S ))rb   Úcar.   )Ú	AttributeÚfrom_counting_attrr«   )r¥   ry   r¸   Úannss      €r   ú
<listcomp>z$_transform_attrs.<locals>.<listcomp>­  sW   ø€ ð ð ð ñ ˆI�rõ 	×$Ò$Ø˜r¨¯ª°Ñ(;Ô(;ð 	%ñ 	
ô 	
ðð ð r   c                ó   — h | ]	}|j         ’Œ
S r   ©rb   ©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)r9   ©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   Fc              3  ó>   K  — | ]}|j         d u¯|j        d u ¯|V — ŒdS )FN)r6   r9   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                óp   — g | ]3}|j         s(|                     t          |j        ¦  «        ¬ ¦  «        n|‘Œ4S ))r?   )r?   r”   Ú_default_init_alias_forrb   r¿   s     r   r¼   z$_transform_attrs.<locals>.<listcomp>Ö  sO   € ð ð ð àð @A¼wÐMˆ�ŠÕ.¨q¬vÑ6Ô6ˆÑ7Ô7Ð7ÈAðð ð r   c                ó   — g | ]	}|j         ‘Œ
S r   r¾   r¿   s     r   r¼   z$_transform_attrs.<locals>.<listcomp>Ý  s   € Ð(Ð(Ð(˜Q�!”&Ð(Ð(Ð(r   )r‰   r   rF   Úitemsr•   r‡   r—   r«   r   rE   rJ   rM   rq   r]   r   rs   Úsortedrž   r    r1   rB   rz   r!   r{   )rŠ   ÚtheseÚauto_attribsr9   Úcollect_by_mroÚfield_transformerÚca_listÚca_namesÚannot_namesry   r.   r›   ÚunannotatedÚ	own_attrsr}   r™   r|   Úhad_defaultrL   ru   Ú
AttrsClassr»   r®   s                        @@r   Ú_transform_attrsr×   v  s‡  øø€ ð 
Œ€BÝ˜CÑ Ô €DàÐÝ�u—{’{‘}”}Ñ%Ô%ˆ‰Ø	˜Ð	Ñ	ð
ð 
à Ÿhšh™jœjð
ñ 
ô 
ˆð
 ˆÝ‘e”eˆØ#Ÿzšz™|œ|ð 	+ð 	+‰OˆI�tÝ˜TÑ"Ô"ð ØØ�OŠO˜IÑ&Ô&Ð&Ø—’�y¥'Ñ*Ô*ˆAå˜a¥Ñ/Ô/ð DØ !¥W  •F‘H”H�Hµ&ÀÐ2CÑ2CÔ2C�Ø�NŠN˜I q˜>Ñ*Ô*Ð*Ð*à Ñ,ˆÝˆ{ÑÔ˜aÒÐÝ+ØCØ—)’)Ý˜;Ð,GÐ,GÐ,GÐ,GÐHÑHÔHñô ñð ñ	ñô ð ð  õ ðð à"$§(¢(¡*¤*ðñ ô ð
 'Ð&ð
ñ 
ô 
ˆðð ð ð ð %ð	ñ ô €Ið ð 
Ý$7ØÐ,Ð, )Ð,Ñ,Ô,ñ%
ô %
Ñ!ˆ
�M�Mõ %?ØÐ,Ð, )Ð,Ñ,Ô,ñ%
ô %
Ñ!ˆ
�Mð ð BØ?Ð?°YÐ?Ñ?Ô?ˆ	ØAÐA°jÐAÑAÔAˆ
à˜Ñ"€Eð €KØMÐM˜ÐMÑMÔMð ð ˆØ˜$ÐÐ 1¤9µÐ#7Ð#7ð Gð  BCð  Gð  GˆCÝ˜S‘/”/Ð!à˜%ÐÐ A¤IµWÐ$<Ð$<ØˆKøàÐ$Ø!Ð! # uÑ-Ô-ˆð
ð àðñ ô €Eð )Ð( %Ð(Ñ(Ô(€JÝ'¨¬°jÑAÔA€Jå˜
˜
 5Ñ)Ô)¨:°}ÐEÑFÔFÐFr   c                ó(  — g d¢}|�|                      d¦  «         n|                     g d¢¦  «         |                     ddg¦  «         t          |d¦  «        }| t          j        |dœ}t          dd	                     |¦  «        ||d
|i¬¦  «        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Ú__getattr__ro   Ú_cls)rc   )rq   ÚextendÚ_generate_unique_filenameÚ_OBJ_SETATTRÚ__get__rh   rs   )rÙ   rÛ   rŠ   ÚlinesÚunique_filenameÚglobs         r   Ú_make_cached_property_getattrrå   ã  sé   € ðð ð €Eð Ð#Ø�ŠØ:ñ	
ô 	
ð 	
ð 	
ð 	�Šð	ð 	ð 	ñ	
ô 	
ð 	
ð 
‡L‚Là$Ø)ð	
ñô ð õ 0°°YÑ?Ô?€Oð /Ý+Ô3Ø,ðð €Dõ ØØ�	Š	�%ÑÔØØà�Cð
ðñ ô ð 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)rE   ÚBaseExceptionÚ__setattr__r   ©r   rb   Úvalues      r   Ú_frozen_setattrsrð     sL   € õ �$�Ñ&Ô&ð ¨4ð 4ð ,ð ,õ 	×!Ò! $¨¨eÑ4Ô4Ð4Øˆå
Ðr   c                ó|   — t          | t          ¦  «        r!|dv rt                               | |¦  «         dS t          ‚)z4
    Attached to frozen classes as __delattr__.
    )rë   N)rE   rì   Ú__delattr__r   )r   rb   s     r   Ú_frozen_delattrsró   .  sA   € õ �$�Ñ&Ô&ð ¨4°>Ð+AÐ+AÝ×!Ò! $¨Ñ-Ô-Ð-Øˆå
Ð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   )	rB   r]   rA   Ú	__class__Úfieldsr6   rb   r?   r“   )	ÚargsÚchangesÚinstrL   rŠ   r|   r›   ry   Ú	init_names	            r   r”   r”   9  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„ 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„ Zd„ ZdS )Ú_ClassBuilderz(
    Iteratively build *one* class.
    )Ú_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Ú_slotsÚ_weakref_slotÚ_wrote_own_setattrc                ód  — t          ||||||¦  «        \  }}}|| _        |rt          |j        ¦  «        ni | _        || _        d„ |D ¦   «         | _        || _        t          d„ |D ¦   «         ¦  «        | _	        || _
        || _        || _        |	| _        t          t          |dd¦  «        ¦  «        | _        d| _        | j        r8|j        }t'          j        |¦  «        }t+          |j        ¦  «        dk    | _        t          t          |dd¦  «        ¦  «        | _        t          |¦  «         | _        |
| _        || _        || _        d| _        | j        | j        d<   |r&t:          | j        d<   t<          | j        d	<   d
| _        n{|t>          t@          j!        t@          j"        fv r[dx}}|D ]}|j#        �d
}|j$        �d
}|r|r nŒ|t>          k    r|s|r$|t@          j!        k    r|r|t@          j"        k    r	|sd | _        |r)|  %                    ¦   «         \  | j        d<   | j        d<   d S 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Ž   rí   rò   TÚ__getstate__Ú__setstate__)&r×   rÝ   Údictr‰   r  rþ   r   rÿ   rG   rý   r  r  r  r  Úboolr“   r  r
  r  ÚinspectÚ	signaturer]   Ú
parametersr  r  r  r	  r  r  rð   ró   Ú_DEFAULT_ON_SETATTRr   ÚvalidateÚconvertr2   r7   Ú_make_getstate_setstate)r   rŠ   rÌ   ÚslotsÚfrozenÚweakref_slotÚgetstate_setstaterÍ   r9   Ú
cache_hashÚis_excrÎ   r>   Úhas_custom_setattrrÏ   r|   r}   Úbase_mapÚpre_init_funcÚpre_init_signatureÚhas_validatorÚhas_converterr›   s                          r   Ú__init__z_ClassBuilder.__init__�  s˜  € õ" '7ØØØØØØñ'
ô '
Ñ#ˆˆz˜8ð ˆŒ	Ø/4Ð<�˜cœlÑ+Ô+Ð+¸"ˆŒØˆŒØ7Ð7¨JÐ7Ñ7Ô7ˆÔØ&ˆÔÝ Ð 7Ð 7°Ð 7Ñ 7Ô 7Ñ7Ô7ˆÔØˆŒØˆŒØ)ˆÔØ%ˆÔÝ!¥'¨#Ð/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ˆÔÝ#'¨¡;¤;˜ˆÔØˆŒØ%ˆÔà#5ˆÔ Ø"'ˆÔà,0¬KˆŒÐ(Ñ)àð 	(Ý,<ˆDŒN˜=Ñ)Ý,<ˆDŒN˜=Ñ)à&*ˆDÔ#Ð#ØÝÝÔÝŒOð
ð 
ð 
ð
 -2Ð1ˆM˜MØð ð �Ø”;Ð*Ø$(�MØ”;Ð*Ø$(�Mà ð  ]ð Ø�Eøð Õ"5Ò5Ð5Ø*ð 6Ø.;ð 6ð ¥'Ô"2Ò2Ð2¸=Ð2Ø¥'¤/Ò1Ð1¸-Ð1ð
 $(�Ô àð 	/ð ×,Ò,Ñ.Ô.ñØ”˜~Ñ.Ø”˜~Ñ.Ð.Ð.ð	/ð 	/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   c                óü   — | j         du r|                      ¦   «         }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)	r  Ú_create_slots_classÚ_patch_original_classr	   ÚabcÚupdate_abstractmethodsr“   r‰   r-  )r   rŠ   s     r   Úbuild_classz_ClassBuilder.build_classì  sˆ   € ð Œ;˜$ÐÐØ×*Ò*Ñ,Ô,ˆCˆCà×,Ò,Ñ.Ô.ˆ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  r4  r  rà   rí   )r   rŠ   Ú
base_namesrb   rï   s        r   r/  z#_ClassBuilder._patch_original_class  sL  € ð ŒiˆØÔ%ˆ
ð Ôð 
	+ØÔ(ð 	+ð 	+�à 
Ð*Ð*Ý  T­9Ñ5Ô5½YÐFÐFõ
 $Ô,­^Ñ<Ô<ð +ð +Ý  TÑ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +øð  œ>×/Ò/Ñ1Ô1ð 	&ð 	&‰KˆD�%Ý�C˜˜uÑ%Ô%Ð%Ð%ð Ô&ð 	/­7ØÐ(¨%ñ,
ô ,
ð 	/ð ).ˆCÔ%àÔ+ð /Ý".�”àˆ
s   ÁA6Á6A:	Á=A:	c           	     ó8  ‡ ‡‡‡‡— ˆ fd„‰ j                              ¦   «         D ¦   «         }‰ 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¦  «        }|�|                     |¦  «         t/          ||‰ j        ¦  «        |d<   ˆfd„|D ¦   «         Šˆfd„|                     ¦   «         D ¦   «         Šˆfd„‰D ¦   «         Š| 
                    ‰¦  «         ‰ j        r‰                     t2          ¦  «         t5          ‰¦  «        |d<   ‰ j        j        |d<    t9          ‰ j        ¦  «        ‰ j        j        ‰ j        j        |¦  «        }t=          j        |j                              ¦   «         |¦  «        D ]¢}tC          |tD          tF          f¦  «        rt          |j$        dd¦  «        }n=tC          |tJ          ¦  «        rt          |j&        dd¦  «        }nt          |dd¦  «        }|sŒu|D ]*}	 |j'        ‰ j        u }|r||_'        Œ# tP          $ 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__)rG   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   Fr4  rí   r   rZ   r>  NTc                ó2   •— i | ]}|t          ‰|¦  «        “ŒS r   ©r“   )r¥   rb   rš   s     €r   rA  z5_ClassBuilder._create_slots_class.<locals>.<dictcomp>J  s5   ø€ ð ð ð àð �' (¨DÑ1Ô1ðð ð r   Ú	__slots__r   )r>  c                óX   — i | ]'\  }}t          |t          j        ¦  «        ¯||j        “Œ(S r   )rE   Ú	functoolsÚcached_propertyÚfunc)r¥   rb   rG  s      r   rA  z5_ClassBuilder._create_slots_class.<locals>.<dictcomp>[  sD   € ð 
ð 
ð 
á%��oÝ˜/­9Ô+DÑEÔEð
Ø�/Ô&ð
ð 
ð 
r   rÜ   c                ó   •— g | ]}|‰v¯|‘Œ	S r   r   )r¥   rb   r;  s     €r   r¼   z5_ClassBuilder._create_slots_class.<locals>.<listcomp>z  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   rA  z5_ClassBuilder._create_slots_class.<locals>.<dictcomp>€  s4   ø€ ð 
ð 
ð 
á%��oØ�zÐ!Ð!ð �/à!Ð!Ð!r   c                ó   •— g | ]}|‰v¯|‘Œ	S r   r   )r¥   rb   Ú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Ê   r  r  rÝ   Ú	__bases__r‰   r«   rà   r’   Úupdater“   r•   r   rý   r  r   rq   r  r  Úreturn_annotationÚ	ParameterÚemptyrå   r  Ú_HASH_CACHE_FIELDrG   r#   r.   r!   Ú	itertoolsÚchainÚvaluesrE   ÚclassmethodÚstaticmethodÚ__func__rr   ÚfgetÚcell_contentsrB   )r   r®   Úexisting_slotsÚweakref_inheritedÚnamesrÙ   Ú&additional_closure_functions_to_updateÚclass_annotationsrb   rH  Ú
annotationrÛ   rŠ   ÚitemÚclosure_cellsÚcellÚmatchrš   r;  rO  rM  s   `                @@@@r   r.  z!_ClassBuilder._create_slots_class'  s“  øøøøø€ ð
ð 
ð 
ð 
àœ×,Ò,Ñ.Ô.ð
ñ 
ô 
ˆð Ô&ð 	Ø*/ˆ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ð
ð 
à)+¯ª©¬ð
ñ 
ô 
Ðð 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   Í1N	Î	
NÎNc                ór   — |                       t          | j        || j        ¦  «        ¦  «        | j        d<   | S )Nr   )Ú_add_method_dundersÚ
_make_reprrþ   rÝ   r  )r   Únss     r   Úadd_reprz_ClassBuilder.add_repr²  s8   € Ø%)×%=Ò%=Ý�t”{ B¨¬	Ñ2Ô2ñ&
ô &
ˆŒ�zÑ"ð ˆr   c                ó    — | j                              d¦  «        }|€d}t          |¦  «        ‚d„ }|                      |¦  «        | j         d<   | S )Nr   z3__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   rq  )r  r«   rB   rj  )r   r3   rL   rq  s       r   Úadd_strz_ClassBuilder.add_str¸  s]   € ØŒ~×!Ò! *Ñ-Ô-ˆØˆ<Ø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 )r>  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   rC  ©r¥   rb   r   s     €r   rA  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 )rw  N)rà   rá   rE   rG   ÚziprV  )r   ÚstateÚ_ClassBuilder__bound_setattrrb   rï   Úhash_caching_enabledrz  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   )rG   rý   r  )r   r{  r�  r€  rz  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        ¬¦  «        ¦  «        | j        d<   | S )N©r  r"  rƒ  )rj  Ú
_make_hashrÝ   rþ   r  r  r  r   s    r   Úadd_hashz_ClassBuilder.add_hashñ  sL   € Ø%)×%=Ò%=ÝØ”	Ø”Ø”|ØÔ+ð	ñ ô ñ&
ô &
ˆŒ�zÑ"ð ˆr   c                óà   — |                       t          | j        | j        | j        | j        | j        | j        | j        | j	        | j
        | j        | j        d¬¦  «        ¦  «        | j        d<   | S )NF©Ú
attrs_initr*  ©rj  Ú
_make_initrÝ   rþ   r  r
  r  r  r  r  rÿ   r  r	  r  r   s    r   Úadd_initz_ClassBuilder.add_initý  sw   € Ø%)×%=Ò%=ÝØ”	Ø”ØÔ"ØÔ'ØÔ#Ø”Ø”ØÔ ØÔ#Ø”ØÔ Ø ðñ ô ñ&
ô &
ˆŒ�zÑ"ð" ˆr   c                óB   — |                       d„ ¦  «        | j        d<   | S )Nc                ó   — t          | fi |¤ŽS r*   rÄ   )r   rø   s     r   r¯   z+_ClassBuilder.add_replace.<locals>.<lambda>  s   € ¥F¨4Ð$;Ð$;°7Ð$;Ð$;€ r   Ú__replace__)rj  r  r   s    r   Úadd_replacez_ClassBuilder.add_replace  s+   € Ø(,×(@Ò(@Ø;Ð;ñ)
ô )
ˆŒ�}Ñ%ð ˆr   c                óR   — t          d„ | j        D ¦   «         ¦  «        | j        d<   d S )Nc              3  ó@   K  — | ]}|j         ¯	|j        °|j        V — Œd S r*   )r6   r9   rb   )r¥   Úfields     r   r³   z/_ClassBuilder.add_match_args.<locals>.<genexpr>  sL   è è € ð 1
ð 1
àØŒzð1
ð #(¤-ð1
ØŒJð1
ð 1
ð 1
ð 1
ð 1
ð 1
r   Ú__match_args__)rG   rþ   r  r   s    r   Úadd_match_argsz_ClassBuilder.add_match_args  s=   € Ý+0ð 1
ð 1
àœð1
ñ 1
ô 1
ñ ,
ô ,
ˆŒÐ'Ñ(Ð(Ð(r   c                óà   — |                       t          | j        | j        | j        | j        | j        | j        | j        | j	        | j
        | j        | j        d¬¦  «        ¦  «        | j        d<   | S )NTrŠ  Ú__attrs_init__rŒ  r   s    r   Úadd_attrs_initz_ClassBuilder.add_attrs_init  sx   € Ø+/×+CÒ+CÝØ”	Ø”ØÔ"ØÔ'ØÔ#Ø”Ø”ØÔ ØÔ#Ø”ØÔ Øðñ ô ñ,
ô ,
ˆŒÐ'Ñ(ð" ˆr   c                ó¼   — | j         }|                      t          | j        | j        ¦  «        ¦  «        |d<   |                      t          ¦   «         ¦  «        |d<   | S )NÚ__eq__Ú__ne__)r  rj  Ú_make_eqrÝ   rþ   Ú_make_ne©r   r®   s     r   Úadd_eqz_ClassBuilder.add_eq2  sU   € ØŒ^ˆà×/Ò/Ý�T”Y ¤Ñ,Ô,ñ
ô 
ˆˆ8‰ð ×/Ò/µ±
´
Ñ;Ô;ˆˆ8‰àˆr   c                ó„   ‡ — ‰ j         }ˆ fd„t          ‰ j        ‰ j        ¦  «        D ¦   «         \  |d<   |d<   |d<   |d<   ‰ S )Nc              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S r*   )rj  )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   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                ó$  ‡— | j         r| S 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   rb   Úvalr›   ÚhookÚnvalÚsa_attrss         €r   rí   z._ClassBuilder.add_setattr.<locals>.__setattr__Y  sl   ø€ ð*Ø" 4œ.‘��4ð �t˜D ! SÑ)Ô)��øõ ð ð ð Ø���ðøøøõ
 ˜˜t TÑ*Ô*Ð*Ð*Ð*s   ƒ œ+ª+Tr4  rí   )r  rþ   r>   r	  r   ÚNO_OPrb   r  rB   r  rj  r  )r   r›   r>   rL   rí   r±  s        @r   Úadd_setattrz_ClassBuilder.add_setattrF  sÔ   ø€ ØŒ<ð 	ØˆKàˆØ”ð 	1ð 	1ˆAØœÐ9¨Ô)9ˆJØð 1˜jµ´Ð=Ð=Ø#$ j =�˜œÑ øàð 	ØˆKàÔ#ð 	"àKˆCÝ˜S‘/”/Ð!ð	+ð 	+ð 	+ð 	+ð 	+ð 37ˆŒÐ.Ñ/Ø(,×(@Ò(@ÀÑ(MÔ(MˆŒ�}Ñ%Ø"&ˆÔàˆ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±   z$Method generated by attrs for class )r6  r7  r8  rÝ   r"   r#   r!   r$   )r   Úmethods     r   rj  z!_ClassBuilder._add_method_dundersi  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ð 	ð 	ð-Ø”9Ô)ð-ð -ð -ð ŒNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ˆs0   š8¸<¿<ÁBÂBÂBÂ(C
Ã
CÃCN)r!   r"   r#   r$   rD  r*  r   r2  r/  r.  rm  rr  r  r„  rˆ  rŽ  r’  r—  rš  r¡  rª  r³  rj  r   r   r   rü   rü   s  s>  € € € € € ðð ð€Ið*Z/ð Z/ð Z/ðx<ð <ð <ðð ð ð."ð "ð "ðHIð Ið IðVð ð ð
ð 
ð 
ð'.ð '.ð '.ðRð ð ð
ð 
ð 
ðð ð ð(ð ð ð
ð 
ð 
ðð ð ð(ð ð ðð ð ð!ð !ð !ðFð ð ð ð 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.©ÚanyrB   )r4   r:   r<   Ú
default_eqrL   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)rC   )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º  )	r4   r:   r<   r¼  rL   rÀ  Úcmp_keyr;   r=   s	            r   r@   r@   ˜  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Údundersr1   Údunders         r   Ú_determine_whether_to_implementrÇ  Ã  sd   € ð ˆt€|€|�t˜u�}�}Øˆà€|˜ uÐ,Ð,Øˆð ð ð ˆÝ˜c 6Ñ*Ô*ð 	Ø�5�5ð	ð €Nr   c                óV  ‡‡‡‡‡‡‡‡	‡
‡‡‡‡‡‡‡‡‡‡‡‡— ‰�(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*.
    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	          |¦  «        ‚t          | ‰‰|‰t          | ‰‰d‰¬¦  «        ‰‰‰
|‰‰|‰¦  «        }t          | ‰‰d¦  «        r|                     ‰¦  «         ‰du r|                     ¦   «          t          | ‰‰d¦  «        }|s|du r| 	                    ¦   «          |s&t          | ‰‰d¦  «        r| 
                    ¦   «          |                     ¦   «          ‰€‰du rt          | d	¦  «        rd
Š‰dur‰d
ur‰�d}t          |¦  «        ‚‰d
u s‰€|d
u s|r‰
rd}t          |¦  «        ‚nJ‰du s
‰€|du r|du r|                     ¦   «          n'‰
rd}t          |¦  «        ‚|                     ¦   «          t          | ‰‰d¦  «        r|                     ¦   «          n'|                     ¦   «          ‰
rd}t          |¦  «        ‚t"          r$t          | d¦  «        s|                     ¦   «          t&          r&‰r$t          | d¦  «        s|                     ¦   «          |                     ¦   «         S )NTrí   z/Can't freeze a class with a custom __setattr__.)r  r  r¨   rp  )rœ  r�  )r¥  r¦  r§  r¨  rƒ  Fr0   zlInvalid value for cache_hash.  To use hash caching, hashing must be either explicitly or implicitly enabled.©r*  zFInvalid value for cache_hash.  To use hash caching, init must be True.r‘  r–  )Ú_has_frozen_base_classÚ
issubclassrì   rŒ   rB   rü   rÇ  rm  rr  r¡  rª  r³  rA   rˆ  r„  rŽ  rš  r   r’  r	   r—  r2  )rŠ   Ú	is_frozenr#  Úhas_own_setattrrL   Úbuilderr:   rÍ   rÄ  Úauto_excr"  rÎ   Úeq_rÏ   r  r!  r5   r6   r9   Ú
match_argsr>   Úorder_r3   Úrepr_nsr  r‚   rÌ   r   s          €€€€€€€€€€€€€€€€€€€€€r   Úwrapzattrs.<locals>.wrapL  sh  ø€ ØÐ9Õ4°SÑ9Ô9ˆ	Ø˜TÐ!ÐD¥j°µmÑ&DÔ&DˆØ%ð 
Õ*<Ø�ñ+
ô +
ˆð ð 	"˜yð 	"ØCˆCÝ˜S‘/”/Ð!åØØØØØÝ+ØØ!ØØ0Øðñ ô ð ØØØØØØØñ)
ô 
ˆõ, +Ø��{ Mñ
ô 
ð 	&ð ×Ò˜WÑ%Ô%Ð%Ø�$ˆ;ˆ;Ø�OŠOÑÔÐå,Ø��kÐ#7ñ
ô 
ˆð ð 	˜" ˜*˜*Ø�NŠNÑÔÐØð 	 Õ9Ø�˜Ð&Nñ
ô 
ð 	 ð ×ÒÑÔÐà×ÒÑÔÐð ˆLØ˜tÐ#Ð#Ý" 3¨
Ñ3Ô3ð $ð ˆDà�tÐÐ ¨EÐ 1Ð 1°dÐ6FàJˆCÝ˜C‘.”.Ð à�5ˆ=ˆ=˜T˜\¨b°E¨k¨k¸f¨kð ð %ð E�Ý ‘n”nÐ$ð%ð �Tˆ\ˆ\ØˆL˜R 4˜Z˜Z¨I¸Ð,=Ð,=ð ×ÒÑÔÐÐð ð %ð E�Ý ‘n”nÐ$Ø×#Ò#Ñ%Ô%Ð%å*Ø��{ Mñ
ô 
ð 	%ð ×ÒÑÔÐÐà×"Ò"Ñ$Ô$Ð$Øð %Ø^�Ý ‘n”nÐ$åð 	"Õ 2°3¸Ñ FÔ Fð 	"Ø×ÒÑ!Ô!Ð!õ ð	%àð	%õ ' sÐ,<Ñ=Ô=ð	%ð
 ×"Ò"Ñ$Ô$Ð$à×"Ò"Ñ$Ô$Ð$r   )	ÚwarningsÚwarnÚDeprecationWarningr½  rE   rF   rG   r   rH   )Ú	maybe_clsrÌ   rÖ  r3   r4   r5   r6   r  r  r   r‚   rÍ   r9   r"  rÒ  r:   r<   rÄ  rÎ   r!  r>   rÏ   rÔ  Úunsafe_hashrØ  r×  rÓ  rÕ  s    ``` ``````````  ``````   @@r   r|   r|   Ý  sS  øøøøøøøøøøøøøøøøøøøøø€ ðx ÐØˆˆˆà�ŠÝØ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%ð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Í  Ä  s   € ð
 Œ?Õ.Ð.Ð.r   c           
     ó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#   r\   )r"   r“   r!   )rŠ   Ú	func_names     r   rß   rß   Ì  sF   € ð
	9˜Ið 	9ð 	9¨¬ð 	9ð 	9Ý�3˜¨¬Ñ5Ô5ð	9ð 	9ð 	9ðr   c                ón  ‡‡	‡
‡‡‡— t          d„ ‰D ¦   «         ¦  «        Šd}t          | d¦  «        }t          |¦  «        Š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                     ‰¦  «        }t          d||‰
¦  «        S )Nc              3  óL   K  — | ]}|j         d u s|j         ­|j        d u ¯|V — Œ dS )TN)r5   r:   r¿   s     r   r³   z_make_hash.<locals>.<genexpr>×  sA   è è € ð ð Ø˜AœF d˜N˜N¨q¬v¨~À!Ä$È$À,À,ˆÀ,À,À,À,ðð r   ú        r5   zdef __hash__(selfzhash((rl   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ã  ú,Ú_Ú_keyú(self.z),ú        self.rk   N)rÞ   r;   rb   rq   )
ÚprefixÚindentr›   Úcmp_namer|   Úclosing_bracesrT   Ú	hash_funcÚmethod_linesÚ	type_hashs
       €€€€€€r   Úappend_hash_computation_linesz1_make_hash.<locals>.append_hash_computation_linesð  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 ro   rƒ  )rG   rß   r5   rq   rV  rs   rh   )rŠ   r|   r  r"  Útabrã   Úhash_defrò  rS   rî  rT   rï  rð  rñ  s    `       @@@@@r   r‡  r‡  Ö  sí  øøøøøø€ Ýð ð Øðñ ô ñ ô €Eð €Cå/°°VÑ<Ô<€OÝ�_Ñ%Ô%€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Ý˜
 F¨O¸UÑCÔCÐCr   c                ó6   — t          | |dd¬¦  «        | _        | S )z%
    Add a hash method to *cls*.
    Fr†  )r‡  rƒ  ©rŠ   r|   s     r   Ú	_add_hashrú    s!   € õ ˜c 5°À5ÐIÑIÔI€C„LØ€Jr   c                 ó   — d„ } | S )z
    Create __ne__ method.
    c                óR   — |                       |¦  «        }|t          u rt          S | S )zj
        Check equality and either forward a NotImplemented or
        return the result negated.
        )rœ  ÚNotImplemented)r   ÚotherÚresults      r   r�  z_make_ne.<locals>.__ne__*  s.   € ð
 —’˜UÑ#Ô#ˆØ•^Ð#Ð#Ý!Ð!àˆzÐr   r   )r�  s    r   rŸ  rŸ  %  s   € ð
	ð 	ð 	ð €Mr   c                ó.  — d„ |D ¦   «         }t          | 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                     |¦  «        }t          d|||¦  «        S )z6
    Create __eq__ method for *cls* with *attrs*.
    c                ó    — g | ]}|j         ¯	|‘ŒS r   )r:   r¿   s     r   r¼   z_make_eq.<locals>.<listcomp><  s   € Ð&Ð&Ð&�1 ¤Ð&ˆQÐ&Ð&Ð&r   r:   )zdef __eq__(self, other):z-    if other.__class__ is not self.__class__:z        return NotImplementedz    return  (rç  rè  rã  ré  z) == z(other.rä  rê  z
 == other.rZ   z andz    )z    return Truero   rœ  )rß   rq   r;   rb   rs   rh   )rŠ   r|   rã   râ   rT   r›   rí  rS   s           r   rž  rž  8  sr  € ð 'Ð&˜Ð&Ñ&Ô&€Eå/°°TÑ:Ô:€Oðð ð €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ÑAÔAÐAr   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   )r<   r¿   s     r   r¼   z_make_order.<locals>.<listcomp>b  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>h  sK   è è € ð 
ð 
á��sð Ð(ˆCˆC�‰JŒJˆJ 5ð
ð 
ð 
ð 
ð 
ð 
r   c              3  óP   •K  — | ] }t          ‰|j        ¦  «        |j        fV — Œ!d S r*   )r“   rb   r=   )r¥   r›   Úobjs     €r   r³   z6_make_order.<locals>.attrs_to_tuple.<locals>.<genexpr>j  sG   øè è € ð ð Ø89•˜˜aœfÑ%Ô% q¤{Ð3ðð ð ð ð ð r   )rG   )r  r|   s   `€r   Úattrs_to_tuplez#_make_order.<locals>.attrs_to_tupled  sW   øø€ õ ð 
ð 
ðð ð ð Ø=Bðñ ô ð
ñ 
ô 
ñ 
ô 
ð 	
r   c                ó^   •— |j         | j         u r ‰| ¦  «         ‰|¦  «        k     S t          S ©z1
        Automatically created by attrs.
        ©rõ   rý  ©r   rþ  r  s     €r   r¥  z_make_order.<locals>.__lt__o  ó9   ø€ ð Œ?˜dœnÐ,Ð,Ø!�> $Ñ'Ô'¨.¨.¸Ñ*?Ô*?Ò?Ð?åÐr   c                ó^   •— |j         | j         u r ‰| ¦  «         ‰|¦  «        k    S t          S r
  r  r  s     €r   r¦  z_make_order.<locals>.__le__x  ó9   ø€ ð Œ?˜dœnÐ,Ð,Ø!�> $Ñ'Ô'¨>¨>¸%Ñ+@Ô+@Ò@Ð@åÐr   c                ó^   •— |j         | j         u r ‰| ¦  «         ‰|¦  «        k    S t          S r
  r  r  s     €r   r§  z_make_order.<locals>.__gt__�  r  r   c                ó^   •— |j         | j         u r ‰| ¦  «         ‰|¦  «        k    S t          S r
  r  r  s     €r   r¨  z_make_order.<locals>.__ge__Š  r  r   r   )rŠ   r|   r¥  r¦  r§  r¨  r  s    `    @r   r©  r©  ^  s§   øø€ ð *Ð)˜Ð)Ñ)Ô)€Eð	
ð 	
ð 	
ð 	
ð 	
ðð ð ð ð ðð ð ð ð ðð ð ð ð ðð ð ð ð ð �6˜6 6Ð)Ð)r   c                óh   — |€| j         }t          | |¦  «        | _        t          ¦   «         | _        | S )z5
    Add equality methods to *cls* with *attrs*.
    )rŽ   rž  rœ  rŸ  r�  rù  s     r   Ú_add_eqr  –  s2   € ð €}ØÔ#ˆå˜#˜uÑ%Ô%€C„JÝ‘”€C„Jà€Jr   c                óü  — t          |d¦  «        }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}t          d!d"                     |¦  «        ||¬#¦  «        S )$Nr3   c              3  óp   K  — | ]1}|j         d u¯|j        |j         du rt           n|j         |j        fV — Œ2dS )FTN)r3   rb   r6   r¿   s     r   r³   z_make_repr.<locals>.<genexpr>¨  sV   è è € ð "ð "àØŒ6˜ÐÐð 
Œ˜!œ& D˜.˜.•$�$¨a¬f°q´vÐ>àÐÐÐð"ð "r   c                ó8   — i | ]\  }}}|t           k    ¯|d z   |“ŒS )Ú_repr)r3   )r¥   rb   Úrrç  s       r   rA  z_make_repr.<locals>.<dictcomp>­  s0   € ð ð ð Ù(˜d A qÀQÍ$ÂYÀYˆˆw‰˜ÀYÀYÀYr   r   r8  r   rô  zgetattr(self, "z", NOTHING)z={z!r}z_repr(z)}r©   z1{self.__class__.__qualname__.rsplit(">.", 1)[-1]}z.{self.__class__.__name__}zdef __repr__(self):z  try:z:    already_repring = _compat.repr_context.already_repringz  except AttributeError:z!    already_repring = {id(self),}z:    _compat.repr_context.already_repring = already_repringz  else:z#    if id(self) in already_repring:z      return '...'z	    else:z#      already_repring.add(id(self))z    return f'ú(z)'z
  finally:z$    already_repring.remove(id(self))r   ro   )rT   )	rß   rG   r   r8  r   r3   rq   rs   rh   )r|   rl  rŠ   rã   Úattr_names_with_reprsrT   Úattribute_fragmentsrb   r  rx   ÚaccessorÚfragmentÚrepr_fragmentÚcls_name_fragmentrâ   s                  r   rk  rk  £  s±  € Ý/°°VÑ<Ô<€Oõ "ð "ð "àð"ñ "ô "ñ ô Ðð
ð Ø,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õ$ Ø�D—I’I˜eÑ$Ô$ o¸Uðñ ô ð r   c                óD   — |€| j         }t          ||| ¦  «        | _        | S )z%
    Add a repr method to *cls*.
    )rŽ   rk  r   )rŠ   rl  r|   s      r   Ú	_add_reprr!  Ü  s)   € ð €}ØÔ#ˆå˜e R¨Ñ-Ô-€C„LØ€Jr   c                óþ   — t          | ¦  «        }|€&t          | t          ¦  «        sd}t          |¦  «        ‚t	          | dd¦  «        }|€2|�t	          |dd¦  «        }|�	|| _        |S | ›d�}t          |¦  «        ‚|S )aG  
    Return the tuple of *attrs* attributes for a class.

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

    Args:
        cls (type): Class to introspect.

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

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

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

    .. versionchanged:: 16.2.0 Returned tuple allows accessing the fields
       by name.
    .. versionchanged:: 23.1.0 Add support for generic classes.
    NúPassed object must be a class.rŽ   ú! is not an attrs-decorated class.)r   rE   r.   rA   r“   rŽ   r   )rŠ   Úgeneric_baserL   r|   s       r   rö   rö   ç  sœ   € õ. $ CÑ(Ô(€LàÐ¥J¨sµDÑ$9Ô$9ÐØ.ˆÝ˜‰nŒnÐå�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
    r#  rŽ   Nr$  c                ó   — i | ]
}|j         |“ŒS r   r¾   r¿   s     r   rA  zfields_dict.<locals>.<dictcomp>/  s   € Ð%Ð%Ð%˜!ˆAŒF�AÐ%Ð%Ð%r   )rE   r.   rA   r“   r   )rŠ   rL   r|   s      r   Úfields_dictr(    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õ   r2   r“   rb   )rù   r›   r@  s      r   r  r  2  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.
    rD  )r«   r‰   )Úa_namer™   rŠ   s      r   Ú_is_slot_attrr-  D  s)   € ð ×
Ò
˜FÑ
#Ô
#€CØÐ.�; #¤,Ð.Ð.r   c                óÂ  — |
d uo|
t           j        u}|r|rd}t          |¦  «        ‚|p|}g }i }|D ]m}|j        s|j        t
          u rŒ|                     |¦  «         |||j        <   |j        �|du rd}t          |¦  «        ‚d}ŒV|r|j        t           j        urd}Œnt          | d¦  «        }t          |||||||||	|||rdnd¦  «        \  }}}| j        t          j        v r/|                     t          j        | j                 j        ¦  «         |                     t
          |dœ¦  «         |rt           j        |d<   t%          |rdnd|||¦  «        }||_        |S )Nz$Frozen classes can't use on_setattr.Tr6   r™  r*  )r   Ú	attr_dictrÚ   )r   r²  rB   r6   r1   r   rq   rb   r>   rß   Ú_attrs_to_init_scriptr"   ÚsysÚmodulesrR  r‰   rà   rá   rh   Ú__annotations__)rŠ   r|   Úpre_initÚpre_init_has_argsÚ	post_initr  r  r"  r™   r#  Úcls_on_setattrr‹  Úhas_cls_on_setattrrL   Úneeds_cached_setattrÚfiltered_attrsr/  r›   rã   rS   rT   r   r6   s                          r   r�  r�  L  sÏ  € ð 	˜dÐ"ÐJ ~½W¼]Ð'Jð ð ð Ð$ð Ø4ˆÝ˜‰oŒoÐà%Ð/¨ÐØ€NØ€IØð (ð (ˆØŒvð 	˜!œ)¥wÐ.Ð.Øà×Ò˜aÑ Ô Ð Øˆ	�!”&ÑàŒ<Ð#Ø˜ˆ~ˆ~Ø<�Ý  ‘o”oÐ%à#'Ð Ð Øð 	( A¤L½¼Ð$EÐ$EØ#'Ð øå/°°VÑ<Ô<€Oå!6ØØØØØØØØØØØØ&Ð6ÐÐ¨Jñ"ô "Ñ€FˆE�;ð „~�œÐ$Ð$à�Š•S”[ ¤Ô0Ô9Ñ:Ô:Ð:à	‡L‚L�W°9Ð=Ð=Ñ>Ô>Ð>àð <õ (4Ô';ˆÐ#Ñ$åØ&Ð6ÐÐ¨JØØØñ	ô €Dð '€DÔà€Kr   ry   r‚   Ú	value_varÚhas_on_setattrr  Úreturnc                ó   — d| › d|› d�S )zJ
    Use the cached object.setattr to set *attr_name* to *value_var*.
    ú
_setattr('ró  rä  r   )ry   r;  r<  s      r   Ú_setattrr@  ›  s   € ð 3˜	Ð2Ð2 iÐ2Ð2Ð2Ð2r   r7   Ú	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ó  rä  )Ú_fmt_converter_call©ry   r;  r<  r7   s       r   Ú_setattr_with_converterrE  ¢  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ô  rõ  )r@  )ry   rï   r<  s      r   Ú_assignrG  ¬  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ô  rõ  )rE  rC  rD  s       r   Ú_assign_with_converterrI  ·  sG   € ð ð NÝ& y°)¸TÀ9ÑMÔMÐMàV�9ÐVÐV ×!>Ò!>¸yÈ)Ñ!TÔ!TÐVÐVÐVr   r  r  r™   údict[str, type]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   ry   r‚   r;  r<  r  r=  c                óV   •— t          | ‰¦  «        rt          | ||¦  «        S d| › d|› �S ©Nú_inst_dict['z'] = )r-  r@  )ry   r;  r<  r™   s      €r   Ú
fmt_setterz&_determine_setters.<locals>.fmt_setterÔ  s@   ø€ õ ˜Y¨Ñ6Ô6ð FÝ 	¨9°nÑEÔEÐEà= )Ð=Ð=°)Ð=Ð=Ð=r   r7   rA  c                ó„   •— |st          | ‰¦  «        rt          | |||¦  «        S d| › d|                     | |¦  «        › �S rM  )r-  rE  rC  )ry   r;  r<  r7   r™   s       €r   Úfmt_setter_with_converterz5_determine_setters.<locals>.fmt_setter_with_converterÜ  sd   ø€ ð ð ¥¨y¸-Ñ!HÔ!Hð Ý.Ø˜y¨.¸)ñô ð ð h )ÐgÐg°)×2OÒ2OÐPYÐ[dÑ2eÔ2eÐgÐgÐgr   )z_inst_dict = self.__dict__©ry   r‚   r;  r‚   r<  r  r=  r‚   ©
ry   r‚   r;  r‚   r<  r  r7   rA  r=  r‚   )r@  rE  rG  rI  )r  r  r™   rO  rQ  s     `  r   Ú_determine_settersrT  Ä  sŒ   ø€ ð �€~€~Ø�Dˆ=ˆ=Ø•xÕ!8Ð8Ð8ð	>ð 	>ð 	>ð 	>ð 	>ð 	>ð	hð 	hð 	hð 	hð 	hð 	hð ,ØØ%ð
ð 	
ð �wÕ.Ð.Ð.r   r|   úlist[Attribute]rÏ  Ú
is_slottedÚcall_pre_initr5  Úcall_post_initÚdoes_cache_hashr#  r9  r8  Úmethod_nameútuple[str, dict, dict]c           
     ó>  — |rdgng }|	r|                      d¦  «         t          |||¦  «        \  }}}|                     |¦  «         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        ¦  «        <   �n|                       ||||¦  «        ¦  «         �nú|�r_|› 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#                     |¦  «        }|}!|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   rN   Fr  rä  zattr_dict['z
'].defaultz=attr_dict['z=NOTHINGzif z is not NOTHING:rk   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)rN  z	'] = Nonerô  z = Noneræ  c              3  ó8   K  — | ]}|j         ¯	d |j        › �V — ŒdS )rô  N)r6   rb   r¿   s     r   r³   z(_attrs_to_init_script.<locals>.<genexpr>Õ  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>ß  s8   € ð ð ð ð  ð Ð.Ð. Ð.Ð.ðð ð r   c              3  óL   K  — | ]}|                      d ¦  «        d         V — Œ dS )ra  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):
    Úpassro   )rq   rT  rÞ   r2   rb   r>   r   r²  r?   rE   r1   rD   Ú
takes_selfr7   rA  r6   Ú_INIT_FACTORY_PATÚ_get_global_namerK   r   r9   r.   Ú_first_param_typer   rV  rs   )$r|   rÏ  rV  rW  r5  rX  rY  r™   r#  r9  r8  rZ  râ   Úextra_linesrO  rQ  r÷   Úkw_only_argsÚattrs_to_validateÚnames_for_globalsr   r›   ry   r<  Úarg_nameÚhas_factoryÚ
maybe_selfr7   Úinit_factory_nameÚargÚval_nameÚinit_hash_cacheÚvalsÚpre_init_argsÚpre_init_kw_only_argsÚNLs$                                       r   r0  r0  ó  s	  € ð( .;ÐBÐ(Ð)Ð)À€Eàð 
Ø�Šð 3ñ		
ô 	
ð 	
õ :LØ�:˜}ñ:ô :Ñ6€K�Ð6ð 
‡L‚L�ÑÔÐà€DØ€LØÐð ÐØ˜TÐ"€Kàð UDñ U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Ñ Ô Ð àÐ$Ø—’Ø-Ð-Ø! 8¨^¸Yñô ñô ð ð Ô'ð " )×"<Ò"<¸Q¼VÑ"DÔ"DÑEÑEð —’˜Z˜Z¨	°8¸^ÑLÔLÑMÔMÐMÑMàñ ;	NØÐ'Ð'Ð'ˆCØŒyð !Ø×#Ò# CÑ(Ô(Ð(Ð(à—’˜CÑ Ô Ð Ø�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Ñ%Ô%Ð%àÐ$Ø—’Ø-Ð-Ø! 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Ø€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   rb   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.
    rç  )Úlstripr¾   s    r   rÈ   rÈ   ÷  s   € ð �;Š;�sÑÔÐr   c                  óh   — e Zd ZdZdZ	 	 	 	 	 	 	 	 	 	 dd„Zd„ Zedd„¦   «         Zd„ Z	d	„ Z
d
„ Zd„ ZdS )r¹   a²  
    *Read-only* representation of an attribute.

    .. warning::

       You should never instantiate this class yourself.

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

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

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

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


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

    For the full version history of the fields, see `attr.ib`.
    )rb   r1   r2   r3   r:   r;   r<   r=   r5   r6   r8   r.   r7   r9   r�   r>   r?   NFc                óX  — 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 S )NTrb   r1   r2   r3   r:   r;   r<   r=   r5   r6   r7   r8   r.   r9   r�   r>   r?   )r@   rà   rá   ÚtypesÚMappingProxyTyper  Ú_EMPTY_METADATA_SINGLETON)r   rb   r1   r2   r3   r4   r5   r6   r�   r8   r.   r7   r9   r:   r;   r<   r=   r>   r?   Úbound_setattrs                       r   r*  zAttribute.__init__C	  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Ñ%Ô%Ð%Ð%Ð%r   c                ó   — t           ‚r*   )r   rî   s      r   rí   zAttribute.__setattr__z	  s   € Ý!Ð!r   c           
     óª   ‡— |€‰j         }n‰j         �d}t          |¦  «        ‚ˆfd„t          j        D ¦   «         } | d|‰j        ‰j        |d ddœ|¤ŽS )Nz8Type annotation and type argument cannot both be presentc                ó:   •— i | ]}|d v¯|t          ‰|¦  «        “ŒS ))rb   r2   r1   r.   r�   rC  )r¥   r?  r¸   s     €r   rA  z0Attribute.from_counting_attr.<locals>.<dictcomp>…	  sE   ø€ ð 
ð 
ð 
àØððð ð �w�r˜1‰~Œ~ðð ð r   F)rb   r2   r1   r.   r4   r�   r   )r.   rB   r¹   rD  Ú
_validatorÚ_default)rŠ   rb   r¸   r.   rL   Ú	inst_dicts     `   r   rº   zAttribute.from_counting_attr}	  s—   ø€ ð ˆ<Ø”7ˆDˆDØŒWÐ ØLˆCÝ˜S‘/”/Ð!ð
ð 
ð 
ð 
åÔ(ð
ñ 
ô 
ˆ	ð ˆsð 
ØØ”mØ”KØØØð
ð 
ð ð
ð 
ð 	
r   c                ó|   — 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
        )ÚcopyÚ	_setattrsrÊ   )r   rø   Únews      r   r”   zAttribute.evolveœ	  s0   € õ Œi˜‰oŒoˆà�Š�g—m’m‘o”oÑ&Ô&Ð&àˆ
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 )r8   N)r“   r  r8   ry  s     €r   r³   z)Attribute.__getstate__.<locals>.<genexpr>²	  sZ   øè è € ð 
ð 
àð $(¨:Ò#5Ð#5�G�D˜$ÑÔÐ½4ÀÄÑ;NÔ;Nð
ð 
ð 
ð 
ð 
ð 
r   ©rG   rD  r   s   `r   r  zAttribute.__getstate__®	  s?   ø€ õ ð 
ð 
ð 
ð 
àœð
ñ 
ô 
ñ 
ô 
ð 	
r   c                óV   — |                       t          | j        |¦  «        ¦  «         dS ©r�  N)rŠ  r}  rD  ©r   r~  s     r   r  zAttribute.__setstate__·	  s(   € ð 	�Š•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 )Nr8   )rà   rá   r~  r  r  r€  )r   Úname_values_pairsr�  rb   rï   s        r   rŠ  zAttribute._setattrs½	  s‘   € Ý$×,Ò,¨TÑ2Ô2ˆØ,ð 	ð 	‰KˆD�%Ø�zÒ!Ð!Ø�˜d EÑ*Ô*Ð*Ð*à�Øð !ð7�Ô.­t°E©{¬{Ñ;Ô;Ð;å6ñô ð ð ð		ð 	r   )
NNNFNNNNNNr*   )r!   r"   r#   r$   rD  r*  rí   rZ  rº   r”   r  r  rŠ  r   r   r   r¹   r¹   	  sÆ   € € € € € ð(ð (ðX€Ið< ØØØØØØØØØð'5&ð 5&ð 5&ð 5&ðn"ð "ð "ð ð
ð 
ð 
ñ „[ð
ð<ð ð ð$
ð 
ð 
ð3ð 3ð 3ðð ð ð ð r   r¹   c                ón   — g | ]2}t          |t          d dd dd|dk    ddt          |¦  «        ¬¦  «        ‘Œ3S )NTFr8   )rb   r1   r2   r3   r4   r:   r<   r5   r6   r�   r?   )r¹   r   rÈ   ©r¥   rb   s     r   r¼   r¼   Í	  sg   € ð ð ð ð 	õ ØÝØØØØØØ�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�   )r5   rb   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 )rJ   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…  r?   r7   r¬   r:   r;   r5   r6   r9   r8   r>   r<   r=   r3   r.   c              #  óv   K  — | ]4}t          |t          |¦  «        t          d dd ddddd dd dd ¬¦  «        V — Œ5d S )NTF©rb   r?   r1   r2   r3   r4   r5   r6   r9   r:   r;   r<   r=   r�   r>   )r¹   rÈ   r   r–  s     r   r³   z_CountingAttr.<genexpr>
  s|   è è € ð 
ð 
ð$ õ# ØÝ-¨dÑ3Ô3ÝØØØØØØØØØØØØðñ ô ð
ð 
ð 
ð 
ð 
ð 
r   )	r¬   r†  r3   r:   r<   r5   r6   r>   r?   r8   NTFr›  r   c                ó$  — t           xj        dz  c_        t           j        | _        || _        || _        || _        || _        || _        || _        || _	        || _
        || _        || _        || _        |	| _        |
| _        || _        || _        d S rµ   )rJ   Úcls_counterr¬   r†  r…  r7   r3   r:   r;   r<   r=   r5   r6   r8   r.   r9   r>   r?   )r   r1   r2   r3   r4   r5   r6   r7   r8   r.   r9   r:   r;   r<   r=   r>   r?   s                    r   r*  z_CountingAttr.__init__5
  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…  rI   ©r   r¤  s     r   r2   z_CountingAttr.validatorZ
  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)rg  )r†  r   r   rD   rŸ  s     r   r1   z_CountingAttr.defaulth
  s0   € ð Œ=¥Ð'Ð'Ý(Ð(å °Ð6Ñ6Ô6ˆŒàˆr   )r!   r"   r#   r$   rD  rG   r¹   rŽ   r�  r*  r2   r1   r   r   r   rJ   rJ   ç	  sá   € € € € € ðð ð€Ið$0Ø	ˆð 
ð 
ð$
ð%
ñ 
ô 
ñ 

ô 

ð0ð> 	ˆ	ØØØØØØØØØØØØØØØð	
ñ 	
ô 	
ð?0ð 0€Oðb €Kð#ð #ð #ðJð ð ðð ð ð ð r   rJ   c                  ó*   — e Zd ZdZdZdd„Zd„ Zd„ ZdS )	rD   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*
    ©rK   rg  Fc                ó"   — || _         || _        d S r*   r¢  )r   rK   rg  s      r   r*  zFactory.__init__“
  s   € ØˆŒØ$ˆŒˆˆr   c                óD   ‡ — t          ˆ fd„‰ j        D ¦   «         ¦  «        S )r�  c              3  ó8   •K  — | ]}t          ‰|¦  «        V — Œd S r*   rC  ry  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‘  )r}  rD  r:  )r   r~  rb   rï   s       r   r  zFactory.__setstate__�
  sB   € õ ˜tœ~¨uÑ5Ô5ð 	'ð 	'‰KˆD�%Ý�D˜$ Ñ&Ô&Ð&Ð&ð	'ð 	'r   N)F)r!   r"   r#   r$   rD  r*  r  r  r   r   r   rD   rD   ~
  sZ   € € € € € ðð ð$ *€Ið%ð %ð %ð %ðEð Eð Eð'ð 'ð 'ð 'ð 'r   rD   c                óJ   — g | ] }t          |t          d dd ddddd¬¦
  «
        ‘Œ!S ©NTF)
rb   r1   r2   r3   r4   r:   r<   r5   r6   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 )rA  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__rj  Ú_global_namer7   Útakes_fieldrg  F©rg  r®  c               óz  ‡ — |‰ _         |‰ _        |‰ _        t          |¦  «        }|                     ¦   «         ‰ _        ‰ j        s‰ j        sˆ fd„‰ _        n<‰ j        r‰ j        sˆ fd„‰ _        n#‰ j        s‰ j        rˆ fd„‰ _        n
ˆ fd„‰ _        |                     ¦   «         }|�|‰ j        j        d<   d S d S )Nc                ó.   •— ‰                      | ¦  «        S r*   ©r7   )rï   rç  Ú__r   s      €r   r¯   z$Converter.__init__.<locals>.<lambda>ß
  s   ø€ °·²ÀÑ1FÔ1F€ r   c                ó0   •— ‰                      | |¦  «        S r*   r²  )rï   Úinstancer³  r   s      €r   r¯   z$Converter.__init__.<locals>.<lambda>á
  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   c                ó2   •— ‰                      | ||¦  «        S r*   r²  )rï   rµ  r•  r   s      €r   r¯   z$Converter.__init__.<locals>.<lambda>é
  s   ø€ ¸4¿>º>Ø�x ñ<ô <€ r   r=  )	r7   rg  r®  r   Úget_first_param_typerj  r¬  Úget_return_typer3  )r   r7   rg  r®  ÚexÚrts   `     r   r*  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ðð ð ð ˆDŒMð ×ÒÑ!Ô!ˆØˆ>Ø68ˆDŒMÔ)¨(Ñ3Ð3Ð3ð ˆ>r   ry   r‚   r=  c                ó   — d| › �S )zh
        Return the name that a converter for an attribute name *attr_name*
        would have.
        Ú__attr_converter_r   )ry   s    r   ri  zConverter._get_global_nameñ
  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`.
        r  rä  z, self, attr_dict['z'])z, self)z, attr_dict[')rg  r®  ri  )r   ry   r;  s      r   rC  zConverter._fmt_converter_callù
  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.
        ©r7   rg  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’  s     r   r  zConverter.__setstate__  s"   € ð 	ˆŒÐÐ˜ÐÐÐÐÐr   N)ry   r‚   r=  r‚   )ry   r‚   r;  r‚   r=  r‚   )r!   r"   r#   r$   rD  r*  r[  ri  rC  r  r  r   r   r   rA  rA  ¸
  s›   € € € € € ðð ð(€Ið 16À5ð 9ð 9ð 9ð 9ð 9ð6 ð/ð /ð /ñ „\ð/ð\ð \ð \ð \ð"	
ð 	
ð 	
ðð ð ð ð r   c                óJ   — g | ] }t          |t          d dd ddddd¬¦
  «
        ‘Œ!S r¨  r©  r–  s     r   r¼   r¼     rª  r   rÀ  c                ó´  ‡— 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)``

    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*
    c                ó,   — i | ]}|t          ¦   «         “ŒS r   )rM   r¿   s     r   rA  zmake_class.<locals>.<dictcomp>\  s   € Ð/Ð/Ð/ A�A•v‘x”xÐ/Ð/Ð/r   z(attrs argument must be a dict or a list.r  Nr  r*  c                ó.   •— |                       ‰¦  «        S r*   )rR  )rl  Úbodys    €r   r¯   zmake_class.<locals>.<lambda>o  s   ø€ ¸¿	º	À$¹¼€ r   r   r!   Ú__main__r4   r:   r<   TrÌ   c                ó2   — i | ]\  }}|j         ®||j         “ŒS r*   )r.   )r¥   r?  r@  s      r   rA  zmake_class.<locals>.<dictcomp>ˆ  s.   € ð ð ð Ù�a˜°!´&Ð2Dˆˆ1Œ6Ð2DÐ2DÐ2Dr   r   )rE   r  rF   rG   rA   ÚpoprR  r~  Ú	new_classr6  r7  r8  rB   r1  Ú	_getframeÚ	f_globalsr«   r"   r½  rþ   rÊ   r3  )rb   r|   ÚbasesÚ
class_bodyÚattributes_argumentsÚcls_dictrL   r4  r6  Ú	user_initÚtype_r4   rŠ   rÆ  s                @r   Ú
make_classrÓ  1  sR  ø€ õP �%�ÑÔð ØˆˆÝ	�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   Ã=3D<Ä<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ï   r@  s        r   r¬  z_AndValidator.__call__š  s5   € ØÔ!ð 	!ð 	!ˆAØˆAˆd�D˜%Ñ Ô Ð Ð ð	!ð 	!r   N)r!   r"   r#   r$   rM   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Þ   rE   rÕ  r×  rG   )Ú
validatorsrv  r2   s      r   rI   rI   Ÿ  sh   € ð €DØð 
ð 
ˆ	Ø�Šå˜)¥]Ñ3Ô3ðˆIÔ!Ð!à�ñ	
ô 	
ð 	
ð 	
õ �˜t™œÑ%Ô%Ð%r   c                 óú  ‡ — t          d„ ‰ D ¦   «         ¦  «        }|rˆ fd„}nˆ fd„}‰ s2t          j        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*   ©rE   rA  )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*   rÜ  )r®  rù   r•  rÝ  Ú
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®  rÝ  rß  s     €r   rà  zpipe.<locals>.pipe_converterÔ  s&   ø€ Øð ð �Ø�a˜‘f”f��àˆJr   ÚA)r®  r=  r   r®  rZ   r=  Tr¯  )r»  ÚtypingÚTypeVarr3  rR  r   r¸  r
   rE   rA  r¬  r¹  )rß  Úreturn_instancerà  râ  ÚtÚlastr»  s   `      r   rH   rH   ¶  sL  ø€ õ  ÐGÐG¸JÐGÑGÔGÑGÔG€Oàð ð	ð 	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð ð :åŒN˜3ÑÔˆØÔ&×-Ò-°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   )NrN   r*   )T)NNNNNNNFFTFFFFFNNFFNNNTN)NNrR  rS  )ry   r‚   rï   r‚   r<  r  r=  r‚   )r  r  r  r  r™   rJ  )r|   rU  rÏ  r  rV  r  rW  r  r5  r  rX  r  rY  r  r™   rJ  r#  r  r9  r  r8  r  rZ  r‚   r=  r[  )rb   r‚   r=  r‚   )cÚ
__future__r   r0  r6  r‰  r%   rF  r  rW  r_   r1  r~  rã  Úoperatorr   rN   r   r   r   r	   r
   r   r   r   r   Ú
exceptionsr   r   r   r   Úobjectrí   rà   rh  r…   rV  r  r€  r5  rH   r  r  r  ÚEnumr   r   Úintr(   rM   rX   rh   rz   r{   r‡   rŒ   rž   r    r×   rå   rð   ró   r”   rü   r½  r@   rÇ  r|   rþ   rÍ  rß   r‡  rú  rŸ  rž  r©  r  rk  r!  rö   r(  r-  r�  r@  rE  rG  rI  rT  r0  rÈ   r¹   rD  Ú_arJ   rD   Ú_frA  rÓ  rÕ  rI   r   r   r   ú<module>rð     sD  ðð #Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø 
€
€
€
Ø €€€Ø €€€à Ð Ð Ð Ð Ð ð (Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð Ô!€Ø'Ð ðÐ ð )Ð à2˜EÔ2°2Ñ6Ô6Ð ð ˆF‰HŒH€	à"�g”l 7¤?°GÔ4DÑEÔEÐ ðð ð ð ð ˆtŒyñ ô ð ð( Ô
€ðð(ð (ð (ð (ð (˜ñ (ô (ð (ð" ØØ	ØØ	Ø	ØØ	ØØØØØ
ØØ
ðhð hð hð hðV ð  ð  ð  ðð ð ð ð:"ð "ð "ð: %Ð$Øðð ð ñ
ô 
€ð0ð 0ð 0ð"'ð 'ð 'ð#ð #ð #ð>%ð %ð %ð8jGð jGð jGðZ7ð 7ð 7ðtð ð ð"ð ð ð7ð 7ð 7ðtFð Fð Fð Fð Fñ Fô Fð FðRð ð ð8((ð ((ð ((ðX .2ðð ð ð ð6 Ø
ØØ	ØØ	Ø	Ø
ØØØØØØØØØ
ØØØØØØØð1]ð ]ð ]ð ]ð@ 
€ðð/ð /ð /ðð ð ðDDð DDð DDðNð ð ðð ð ð&#Bð #Bð #BðL5*ð 5*ð 5*ðp
ð 
ð 
ð 
ð6ð 6ð 6ðrð ð ð ð+ð +ð +ð\&ð &ð &ð:.ð .ð .ð$/ð /ð /ðLð Lð Lð^3ð 3ð 3ð 3ð]ð ]ð ]ð ]ð)ð )ð )ð )ð
Wð 
Wð 
Wð 
Wð,/ð ,/ð ,/ð ,/ð^Að Að Að AðHð ð ð ðHð Hð Hð Hð Hñ Hô Hð HðVð ð Ô#ðñ ô €ð" ˆIØ€GØˆ	�) 2Ð&Ñ&Ô&Ø6Ð6˜"Ð6Ñ6Ô6ðñ ô ð >Ð
=�bÐ
=Ñ
=Ô
=ðñ ô €	ðQð Qð Qð Qð Qñ Qô Qð Qðh �˜	˜	 -Ñ0Ô0Ñ1Ô1€ð$'ð $'ð $'ð $'ð $'ñ $'ô $'ð $'ðNð ð Ô!ðñ ô €ð  ˆ)�G�G˜I˜I g°RÐ8Ñ8Ô8ÀÐCÑCÔCÈ2Ð
NÑ
NÔ
N€ðað að að að añ aô að aðHð ð ;ðñ ô €ð  ˆIØ€GˆIˆI�i rÐ*Ñ*Ô*°"Ð5Ñ5Ô5¸Rðñ ô €	ð �y¨TðZð Zð Zð ZðB €ˆT˜tÐ$Ñ$Ô$ð	!ð 	!ð 	!ð 	!ð 	!ñ 	!ô 	!ñ %Ô$ð	!ð&ð &ð &ð.9ð 9ð 9ð 9ð 9r   