§
    ß·iG'  ã                  ó°   — d dl mZ d dlZd dlZd dlmZ d dlZddl	m
Z
 ddl	mZ ddl	mZ ddlmZ ej        rd dlZ G d	„ d
¦  «        Z G d„ d¦  «        ZdS )é    )ÚannotationsNé   )Údump_header)Úparse_dict_header)Úquote_header_valueé   )ÚCallbackDictc                  óz   — e Zd ZdZ	 	 ddd„Zdd„Zdd„Zd d!d„Zd"d„Zd#d„Z	e
d$d„¦   «         Zd%d„Zd%d„Zd%d„ZdS )&ÚAuthorizationa»  Represents the parts of an ``Authorization`` request header.

    :attr:`.Request.authorization` returns an instance if the header is set.

    An instance can be used with the test :class:`.Client` request methods' ``auth``
    parameter to send the header in test requests.

    Depending on the auth scheme, either :attr:`parameters` or :attr:`token` will be
    set. The ``Basic`` scheme's token is decoded into the ``username`` and ``password``
    parameters.

    For convenience, ``auth["key"]`` and ``auth.key`` both access the key in the
    :attr:`parameters` dict, along with ``auth.get("key")`` and ``"key" in auth``.

    .. versionchanged:: 2.3
        The ``token`` parameter and attribute was added to support auth schemes that use
        a token instead of parameters, such as ``Bearer``.

    .. versionchanged:: 2.3
        The object is no longer a ``dict``.

    .. versionchanged:: 0.5
        The object is an immutable dict.
    NÚ	auth_typeÚstrÚdataúdict[str, str | None] | NoneÚtokenú
str | NoneÚreturnÚNonec                ó<   — || _         	 |€i }|| _        	 || _        d S ©N)ÚtypeÚ
parametersr   )Úselfr   r   r   s       úa/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/werkzeug/datastructures/auth.pyÚ__init__zAuthorization.__init__+   s7   € ð ˆŒ	ØRàˆ<ØˆDàˆŒð	ð ˆŒ
ð	ð 	ó    Únamec                ó6   — | j                              |¦  «        S r   ©r   Úget©r   r   s     r   Ú__getattr__zAuthorization.__getattr__C   ó   € ØŒ×"Ò" 4Ñ(Ô(Ð(r   c                ó6   — | j                              |¦  «        S r   r   r    s     r   Ú__getitem__zAuthorization.__getitem__F   r"   r   ÚkeyÚdefaultc                ó8   — | j                              ||¦  «        S r   r   ©r   r%   r&   s      r   r   zAuthorization.getI   ó   € ØŒ×"Ò" 3¨Ñ0Ô0Ð0r   Úboolc                ó   — || j         v S r   ©r   ©r   r%   s     r   Ú__contains__zAuthorization.__contains__L   ó   € Ø�d”oÐ%Ð%r   ÚotherÚobjectc                óš   — t          |t          ¦  «        st          S |j        | j        k    o|j        | j        k    o|j        | j        k    S r   )Ú
isinstancer   ÚNotImplementedr   r   r   ©r   r0   s     r   Ú__eq__zAuthorization.__eq__O   sP   € Ý˜%¥Ñ/Ô/ð 	"Ý!Ð!ð ŒJ˜$œ)Ò#ð 4Ø”˜tœzÒ)ð4àÔ  D¤OÒ3ð	
r   Úvalueúte.Self | Nonec                óê  — |sdS |                      d¦  «        \  }}}|                     ¦   «         }|                     ¦   «         }|dk    rk	 t          j        |¦  «                             ¦   «                               d¦  «        \  }}}n# t          j        t          f$ r Y dS w xY w | |||dœ¦  «        S d| 	                    d¦  «        v r | |t          |¦  «        d¦  «        S  | |d|¦  «        S )zÄParse an ``Authorization`` header value and return an instance, or ``None``
        if the value is empty.

        :param value: The header value to parse.

        .. versionadded:: 2.3
        Nú Úbasicú:)ÚusernameÚpasswordú=)Ú	partitionÚlowerÚstripÚbase64Ú	b64decodeÚdecodeÚbinasciiÚErrorÚUnicodeErrorÚrstripr   )Úclsr7   ÚschemeÚ_Úrestr=   r>   s          r   Úfrom_headerzAuthorization.from_headerY   s  € ð ð 	Ø�4àŸ/š/¨#Ñ.Ô.‰ˆ��4Ø—’‘”ˆØ�zŠz‰|Œ|ˆà�WÒÐðÝ(.Ô(8¸Ñ(>Ô(>×(EÒ(EÑ(GÔ(G×(QÒ(QÐRUÑ(VÔ(VÑ%�˜!˜X˜XøÝ”N¥LÐ1ð ð ð Ø�t�tðøøøð �3�v¨HÀ(ÐKÐKÑLÔLÐLà�$—+’+˜cÑ"Ô"Ð"Ð"à�3�vÕ0°Ñ6Ô6¸Ñ=Ô=Ð=ð ˆs�6˜4 Ñ&Ô&Ð&s   Á=B ÂB%Â$B%c                óf  — | j         dk    rMt          j        | j        › d| j        › �                     ¦   «         ¦  «                             d¦  «        }d|› �S | j        �#| j                              ¦   «         › d| j        › �S | j                              ¦   «         › dt          | j
        ¦  «        › �S )ziProduce an ``Authorization`` header value representing this data.

        .. versionadded:: 2.0
        r;   r<   ÚasciizBasic Nr:   )r   rC   Ú	b64encoder=   r>   ÚencoderE   r   Útitler   r   ©r   r7   s     r   Ú	to_headerzAuthorization.to_headerx   s¶   € ð
 Œ9˜ÒÐÝÔ$Ø”=Ð2Ð2 4¤=Ð2Ð2×9Ò9Ñ;Ô;ñô çŠf�W‰oŒoð ð $˜EÐ#Ð#Ð#àŒ:Ð!Ø”i—o’oÑ'Ô'Ð6Ð6¨$¬*Ð6Ð6Ð6à”)—/’/Ñ#Ô#ÐDÐD¥k°$´/Ñ&BÔ&BÐDÐDÐDr   c                ó*   — |                       ¦   «         S r   ©rU   ©r   s    r   Ú__str__zAuthorization.__str__ˆ   ó   € Ø�~Š~ÑÔÐr   c                ó\   — dt          | ¦  «        j        › d|                      ¦   «         › d�S ©Nú<r:   ú>©r   Ú__name__rU   rX   s    r   Ú__repr__zAuthorization.__repr__‹   ó.   € Ø<•4˜‘:”:Ô&Ð<Ð<¨¯ªÑ)9Ô)9Ð<Ð<Ð<Ð<r   ©NN)r   r   r   r   r   r   r   r   ©r   r   r   r   r   ©r%   r   r&   r   r   r   ©r%   r   r   r*   ©r0   r1   r   r*   ©r7   r   r   r8   ©r   r   )r`   Ú
__module__Ú__qualname__Ú__doc__r   r!   r$   r   r.   r6   ÚclassmethodrN   rU   rY   ra   © r   r   r   r      s  € € € € € ðð ð8 .2Ø ð	ð ð ð ð ð0)ð )ð )ð )ð)ð )ð )ð )ð1ð 1ð 1ð 1ð 1ð&ð &ð &ð &ð
ð 
ð 
ð 
ð ð'ð 'ð 'ñ „[ð'ð<Eð Eð Eð Eð  ð  ð  ð  ð=ð =ð =ð =ð =ð =r   r   c                  óZ  ‡ — e Zd ZdZ	 	 d*d+d	„Zd,d„Zed-d„¦   «         Zej        d.d„¦   «         Zed/d„¦   «         Z	e	j        d0d„¦   «         Z	ed1d„¦   «         Z
e
j        d2d„¦   «         Z
d3d„Zd4d„Zd5d„Zd6d„Zd7ˆ fd„Zd8d„Zd9d„Zd:d"„Zd;d<d$„Zed=d&„¦   «         Zd-d'„Zd-d(„Zd-d)„Zˆ xZS )>ÚWWWAuthenticateaÜ  Represents the parts of a ``WWW-Authenticate`` response header.

    Set :attr:`.Response.www_authenticate` to an instance of list of instances to set
    values for this header in the response. Modifying this instance will modify the
    header value.

    Depending on the auth scheme, either :attr:`parameters` or :attr:`token` should be
    set. The ``Basic`` scheme will encode ``username`` and ``password`` parameters to a
    token.

    For convenience, ``auth["key"]`` and ``auth.key`` both act on the :attr:`parameters`
    dict, and can be used to get, set, or delete parameters. ``auth.get("key")`` and
    ``"key" in auth`` are also provided.

    .. versionchanged:: 2.3
        The ``token`` parameter and attribute was added to support auth schemes that use
        a token instead of parameters, such as ``Bearer``.

    .. versionchanged:: 2.3
        The object is no longer a ``dict``.

    .. versionchanged:: 2.3
        The ``on_update`` parameter was removed.
    Nr   r   Úvaluesr   r   r   c                ó†   ‡ — |                      ¦   «         ‰ _        t          |ˆ fd„¦  «        ‰ _        |‰ _        d ‰ _        d S )Nc                ó,   •— ‰                      ¦   «         S r   ©Ú_trigger_on_update©rL   r   s    €r   ú<lambda>z*WWWAuthenticate.__init__.<locals>.<lambda>±   s   ø€ ˜d×5Ò5Ñ7Ô7€ r   )rA   Ú_typer	   Ú_parametersÚ_tokenÚ
_on_update)r   r   rq   r   s   `   r   r   zWWWAuthenticate.__init__©   sK   ø€ ð —_’_Ñ&Ô&ˆŒ
Ý2>ØÐ7Ð7Ð7Ð7ñ3
ô 3
ˆÔð ˆŒØIMˆŒˆˆr   r   r   c                óB   — | j         �|                       | ¦  «         d S d S r   )r{   rX   s    r   ru   z"WWWAuthenticate._trigger_on_update¶   s*   € ØŒ?Ð&Ø�OŠO˜DÑ!Ô!Ð!Ð!Ð!ð 'Ð&r   c                ó   — | j         S )zDThe authorization scheme, like ``basic``, ``digest``, or ``bearer``.)rx   rX   s    r   r   zWWWAuthenticate.typeº   s   € ð ŒzÐr   r7   c                ó<   — || _         |                      ¦   «          d S r   )rx   ru   rT   s     r   r   zWWWAuthenticate.type¿   s!   € àˆŒ
Ø×ÒÑ!Ô!Ð!Ð!Ð!r   údict[str, str | None]c                ó   — | j         S ©zA dict of parameters for the header. Only one of this or :attr:`token` should
        have a value for a given scheme.
        )ry   rX   s    r   r   zWWWAuthenticate.parametersÄ   s   € ð
 ÔÐr   údict[str, str]c                ó`   ‡ — t          |ˆ fd„¦  «        ‰ _        ‰                      ¦   «          d S )Nc                ó,   •— ‰                      ¦   «         S r   rt   rv   s    €r   rw   z,WWWAuthenticate.parameters.<locals>.<lambda>Í   s   ø€ ¸×9PÒ9PÑ9RÔ9R€ r   )r	   ry   ru   rT   s   ` r   r   zWWWAuthenticate.parametersË   s7   ø€ å'¨Ð/RÐ/RÐ/RÐ/RÑSÔSˆÔØ×ÒÑ!Ô!Ð!Ð!Ð!r   c                ó   — | j         S r�   )rz   rX   s    r   r   zWWWAuthenticate.tokenÐ   s   € ð
 Œ{Ðr   c                ó<   — || _         |                      ¦   «          dS )z–A token for the header. Only one of this or :attr:`parameters` should have a
        value for a given scheme.

        .. versionadded:: 2.3
        N)rz   ru   rT   s     r   r   zWWWAuthenticate.token×   s#   € ð ˆŒØ×ÒÑ!Ô!Ð!Ð!Ð!r   r%   c                ó6   — | j                              |¦  «        S r   r   r-   s     r   r$   zWWWAuthenticate.__getitem__á   s   € ØŒ×"Ò" 3Ñ'Ô'Ð'r   c                ój   — |€|| j         v r| j         |= n
|| j         |<   |                      ¦   «          d S r   ©r   ru   )r   r%   r7   s      r   Ú__setitem__zWWWAuthenticate.__setitem__ä   sC   € Øˆ=Ø�d”oÐ%Ð%Ø”O CÐ(øà#(ˆDŒO˜CÑ à×ÒÑ!Ô!Ð!Ð!Ð!r   c                óT   — || j         v r| j         |= |                      ¦   «          d S d S r   r‰   r-   s     r   Ú__delitem__zWWWAuthenticate.__delitem__í   s9   € Ø�$”/Ð!Ð!Ø” Ð$Ø×#Ò#Ñ%Ô%Ð%Ð%Ð%ð "Ð!r   r   c                ó   — | |         S r   rn   r    s     r   r!   zWWWAuthenticate.__getattr__ò   s   € Ø�DŒzÐr   c                ób   •— |dv r$t          ¦   «                              ||¦  «         d S || |<   d S )N>   rx   rz   r{   ry   )ÚsuperÚ__setattr__)r   r   r7   Ú	__class__s      €r   r�   zWWWAuthenticate.__setattr__õ   s<   ø€ ØÐCÐCÐCÝ‰GŒG×Ò  eÑ,Ô,Ð,Ð,Ð,àˆD�‰JˆJˆJr   c                ó   — | |= d S r   rn   r    s     r   Ú__delattr__zWWWAuthenticate.__delattr__û   s   € Ø�ˆJˆJˆJr   r*   c                ó   — || j         v S r   r,   r-   s     r   r.   zWWWAuthenticate.__contains__þ   r/   r   r0   r1   c                óš   — t          |t          ¦  «        st          S |j        | j        k    o|j        | j        k    o|j        | j        k    S r   )r3   rp   r4   r   r   r   r5   s     r   r6   zWWWAuthenticate.__eq__  sP   € Ý˜%¥Ñ1Ô1ð 	"Ý!Ð!ð ŒJ˜$œ)Ò#ð 4Ø”˜tœzÒ)ð4àÔ  D¤OÒ3ð	
r   r&   c                ó8   — | j                              ||¦  «        S r   r   r(   s      r   r   zWWWAuthenticate.get  r)   r   r8   c                ó  — |sdS |                      d¦  «        \  }}}|                     ¦   «         }|                     ¦   «         }d|                     d¦  «        v r | |t	          |¦  «        d¦  «        S  | |d|¦  «        S )zÆParse a ``WWW-Authenticate`` header value and return an instance, or ``None``
        if the value is empty.

        :param value: The header value to parse.

        .. versionadded:: 2.3
        Nr:   r?   )r@   rA   rB   rI   r   )rJ   r7   rK   rL   rM   s        r   rN   zWWWAuthenticate.from_header  sŒ   € ð ð 	Ø�4àŸ/š/¨#Ñ.Ô.‰ˆ��4Ø—’‘”ˆØ�zŠz‰|Œ|ˆà�$—+’+˜cÑ"Ô"Ð"Ð"à�3�vÕ0°Ñ6Ô6¸Ñ=Ô=Ð=ð ˆs�6˜4 Ñ&Ô&Ð&r   c                ó¼  — | j         �#| j                             ¦   «         › d| j         › �S | j        dk    rxg }| j                             ¦   «         D ]D\  }}|dv rt          |d¬¦  «        }nt          |¦  «        }|                     |› d|› �¦  «         ŒEdd	                     |¦  «        › �S | j                             ¦   «         › dt          | j        ¦  «        › �S )
zCProduce a ``WWW-Authenticate`` header value representing this data.Nr:   Údigest>   ÚqopÚnonceÚrealmÚdomainÚopaqueF)Úallow_tokenr?   zDigest z, )	r   r   rS   r   Úitemsr   ÚappendÚjoinr   )r   r    r%   r7   s       r   rU   zWWWAuthenticate.to_header%  só   € àŒ:Ð!Ø”i—o’oÑ'Ô'Ð6Ð6¨$¬*Ð6Ð6Ð6àŒ9˜Ò Ð ØˆEà"œo×3Ò3Ñ5Ô5ð /ð /‘
��UØÐGÐGÐGÝ.¨uÀ%ÐHÑHÔH�E�Eå.¨uÑ5Ô5�Eà—’ Ð-Ð- eÐ-Ð-Ñ.Ô.Ð.Ð.à/˜TŸYšY uÑ-Ô-Ð/Ð/Ð/à”)—/’/Ñ#Ô#ÐDÐD¥k°$´/Ñ&BÔ&BÐDÐDÐDr   c                ó*   — |                       ¦   «         S r   rW   rX   s    r   rY   zWWWAuthenticate.__str__9  rZ   r   c                ó\   — dt          | ¦  «        j        › d|                      ¦   «         › d�S r\   r_   rX   s    r   ra   zWWWAuthenticate.__repr__<  rb   r   rc   )r   r   rq   r   r   r   )r   r   ri   )r7   r   r   r   )r   r   )r7   r‚   r   r   )r   r   )r7   r   r   r   )r%   r   r   r   )r%   r   r7   r   r   r   )r%   r   r   r   rd   )r   r   r7   r   r   r   )r   r   r   r   rf   rg   r   re   rh   )r`   rj   rk   rl   r   ru   Úpropertyr   Úsetterr   r   r$   rŠ   rŒ   r!   r�   r“   r.   r6   r   rm   rN   rU   rY   ra   Ú__classcell__)r‘   s   @r   rp   rp   �   sN  ø€ € € € € ðð ð8 04Ø ð	Nð Nð Nð Nð Nð"ð "ð "ð "ð ðð ð ñ „Xðð 
„[ð"ð "ð "ñ „[ð"ð ð ð  ð  ñ „Xð ð Ôð"ð "ð "ñ Ôð"ð ðð ð ñ „Xðð „\ð"ð "ð "ñ „\ð"ð(ð (ð (ð (ð"ð "ð "ð "ð&ð &ð &ð &ð
ð ð ð ðð ð ð ð ð ðð ð ð ð&ð &ð &ð &ð
ð 
ð 
ð 
ð1ð 1ð 1ð 1ð 1ð ð'ð 'ð 'ñ „[ð'ð,Eð Eð Eð Eð( ð  ð  ð  ð=ð =ð =ð =ð =ð =ð =ð =r   rp   )Ú
__future__r   rC   rF   Úcollections.abcÚabcÚcabcÚtypingÚtÚhttpr   r   r   Ú
structuresr	   ÚTYPE_CHECKINGÚtyping_extensionsÚter   rp   rn   r   r   ú<module>r³      s  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø %Ð %Ð %Ð %Ð %Ð %Ø $Ð $Ð $Ð $Ð $Ð $à„?ð #Ø"Ð"Ð"Ð"ð{=ð {=ð {=ð {=ð {=ñ {=ô {=ð {=ð|n=ð n=ð n=ð n=ð n=ñ n=ô n=ð n=ð n=ð n=r   