+
    O|jA  ã                  óÖ   € ^ RI Ht ^ RIt^ RIt^ RIt^ RIHtHt ^ RIH	t	H
t
Ht ^RIHt ^RIHt ^RIHtHt ^RIHtHt R	R
.t]]]3,          tR R lt ! R R	]4      tRR R lltR# )é    )ÚannotationsN)Ú	AwaitableÚIterable)ÚAnyÚCallableÚcast)ÚHeaders)ÚInvalidHeader)Úbuild_www_authenticate_basicÚparse_authorization_basic)ÚHTTPResponseÚWebSocketServerProtocolÚ BasicAuthWebSocketServerProtocolÚbasic_auth_protocol_factoryc               ó    € V ^8„  d   QhRRRR/# )é   Úvaluer   ÚreturnÚbool© )Úformats   "ÚOC:\Users\alokc\chatbot\backend\venv\Lib\site-packages\websockets/legacy/auth.pyÚ__annotate__r      s   € ÷ Gñ G˜#ð G $ñ Gó    c                óŒ   €  V w  r\        V\        4      ;'       d    \        V\        4      #   \        \        3 d     R # i ; i©F)Ú
isinstanceÚstrÚ	TypeErrorÚ
ValueError)r   ÚusernameÚpasswords   &  r   Úis_credentialsr#      sG   € ðGØ"Ñˆô ˜(¤CÓ(×FÐF¬Z¸Ä#Ó-FÐFøô ”zÐ"ô Úðús   ‚. ®AÁAc                  ó~   a € ] tR t^t$ RtRtR]R&    RtR]R&    RRRR/R	 V 3R
 llltR R lt	R V 3R llt
RtV ;t# )r   z;
WebSocket server protocol that enforces HTTP Basic Auth.

Ú r   ÚrealmNú
str | Noner!   Úcheck_credentialsc          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r   Úargsr   r&   r'   r(   ú,Callable[[str, str], Awaitable[bool]] | NoneÚkwargsr   ÚNoner   )r   s   "r   r   Ú-BasicAuthWebSocketServerProtocol.__annotate__.   s=   € ÷ 
*ñ 
*àð
*ð ð
*ð Hð	
*ð
 ð
*ð 
ñ
*r   c               	óH   <€ Ve   Wn         W n        \        SV `  ! V/ VB  R # ©N)r&   Ú_check_credentialsÚsuperÚ__init__)Úselfr&   r(   r*   r,   Ú	__class__s   &$$*,€r   r3   Ú)BasicAuthWebSocketServerProtocol.__init__.   s(   ø€ ð ÒØŒJØ"3ÔÜ‰Ò˜$Ð) &Ô)r   c               ó$   € V ^8„  d   QhRRRRRR/# ©r   r!   r   r"   r   r   r   )r   s   "r   r   r.   :   s!   € ÷ ñ °ð ¸sð Àtñ r   c              ƒ  ó`   "  € V P                   e   V P                  W4      G Rj  x€L
 # R#  L5i)ar  
Check whether credentials are authorized.

This coroutine may be overridden in a subclass, for example to
authenticate against a database or an external service.

Args:
    username: HTTP Basic Auth username.
    password: HTTP Basic Auth password.

Returns:
    :obj:`True` if the handshake should continue;
    :obj:`False` if it should fail with an HTTP 401 error.

NF)r1   )r4   r!   r"   s   &&&r   r(   Ú2BasicAuthWebSocketServerProtocol.check_credentials:   s0   é € ð  ×"Ñ"Ò.Ø×0Ñ0°ÓD×DÐDáñ Eùs   ‚#.¥,¦.c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úpathr   Úrequest_headersr	   r   zHTTPResponse | Noner   )r   s   "r   r   r.   O   s-   € ÷ $Dñ $Dàð$Dð !ð$Dð 
ñ	$Dr   c              ƒ  ó2  <"  €  VR,          p \        T4      w  rET P                  YE4      G Rj  x€L
 '       g4   \        P                  P                  R\	        T P
                  4      3.R3# Y@n	        \        ST `-  Y4      G Rj  x€L
 #   \          d7    \        P                  P                  R\	        T P
                  4      3.R3u # i ; i  \         d7    \        P                  P                  R\	        T P
                  4      3.R3u # i ; i Lâ LŽ5i)zC
Check HTTP Basic Auth and return an HTTP 401 response if needed.

ÚAuthorizationzWWW-Authenticates   Missing credentials
s   Unsupported credentials
Ns   Invalid credentials
)ÚKeyErrorÚhttpÚ
HTTPStatusÚUNAUTHORIZEDr   r&   r   r
   r(   r!   r2   Úprocess_request)r4   r<   r=   Úauthorizationr!   r"   r5   s   &&&   €r   rD   Ú0BasicAuthWebSocketServerProtocol.process_requestO   s  øé € ð	Ø+¨OÕ<ˆMð	Ü!:¸=Ó!IÑˆHð ×+Ñ+¨HÓ?×?Ö?ä—‘×,Ñ,Ø$Ô&BÀ4Ç:Á:Ó&NÐOÐPØ(ðð ð !Œä‘WÑ,¨TÓC×CÐCøô3 ô 	ä—‘×,Ñ,Ø$Ô&BÀ4Ç:Á:Ó&NÐOÐPØ(ðò ð	ûô ô 	ä—‘×,Ñ,Ø$Ô&BÀ4Ç:Á:Ó&NÐOÐPØ,ðò ð	úñ @ñ Dùsf   ƒD…	B �C œD°D±	D»ADÂDÂDÂ>CÃ	DÃCÃDÃ>DÄDÄDÄDÄD)r1   r&   r!   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r&   Ú__annotations__r!   r3   r(   rD   Ú__static_attributes__Ú__classcell__)r5   s   @r   r   r      sX   ø‡ ñð
 €Eˆ3ƒOðð  €HˆjÓØ-ð
*ð !ð
*ð KO÷	
*ò 
*õ÷*$Dö $Dr   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r   r&   r'   Úcredentialsz*Credentials | Iterable[Credentials] | Noner(   r+   Úcreate_protocolz6Callable[..., BasicAuthWebSocketServerProtocol] | Noner   z/Callable[..., BasicAuthWebSocketServerProtocol]r   )r   s   "r   r   r   v   sC   € ÷ Hñ HØðHà;ðHð DðHð Lð	Hð
 5ñHr   c                óH  a€ VRJ VRJ 8X  d   \        R4      hVeÉ   \        V4      '       d   \        \        V4      .pM‘\	        V\
        4      '       dn   \        \        \
        \        ,          V4      4      p\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       g   \        RV 24      hM\        RV 24      h\        V4      oR V3R llpVf   \        p\        \        R	\        3,          V4      p\        P                  ! VV VR
7      # )a¢  
Protocol factory that enforces HTTP Basic Auth.

:func:`basic_auth_protocol_factory` is designed to integrate with
:func:`~websockets.legacy.server.serve` like this::

    serve(
        ...,
        create_protocol=basic_auth_protocol_factory(
            realm="my dev server",
            credentials=("hello", "iloveyou"),
        )
    )

Args:
    realm: Scope of protection. It should contain only ASCII characters
        because the encoding of non-ASCII characters is undefined.
        Refer to section 2.2 of :rfc:`7235` for details.
    credentials: Hard coded authorized credentials. It can be a
        ``(username, password)`` pair or a list of such pairs.
    check_credentials: Coroutine that verifies credentials.
        It receives ``username`` and ``password`` arguments
        and returns a :class:`bool`. One of ``credentials`` or
        ``check_credentials`` must be provided but not both.
    create_protocol: Factory that creates the protocol. By default, this
        is :class:`BasicAuthWebSocketServerProtocol`. It can be replaced
        by a subclass.
Raises:
    TypeError: If the ``credentials`` or ``check_credentials`` argument is
        wrong.

Nz/provide either credentials or check_credentialsc              3  ó8   "  € T F  p\        V4      x € K  	  R # 5ir0   )r#   )Ú.0Úitems   & r   Ú	<genexpr>Ú.basic_auth_protocol_factory.<locals>.<genexpr>¤   s   é € ÐIÑ8H°”~ d×+Ð+Ó8Hùs   ‚FTzinvalid credentials argument: c               ó$   € V ^8„  d   QhRRRRRR/# r8   r   )r   s   "r   r   Ú1basic_auth_protocol_factory.<locals>.__annotate__«   s&   € ÷ 	Dñ 	D¨cð 	D¸Sð 	DÀTñ 	Dr   c              “  óp   <"  €  SV ,          p\        P                  ! Y!4      #   \          d     R # i ; i5ir   )r@   ÚhmacÚcompare_digest)r!   r"   Úexpected_passwordÚcredentials_dicts   && €r   r(   Ú6basic_auth_protocol_factory.<locals>.check_credentials«   s=   øé € ðØ$4°XÕ$>Ð!ô ×&Ò&Ð'8ÓCÐCøô ô Úðüs   ƒ6…	$ Ž6¤3¯6²3³6.)r&   r(   )r   r#   r   ÚCredentialsr   r   ÚlistÚallÚdictr   r   Ú	functoolsÚpartial)r&   rP   r(   rQ   Úcredentials_listr^   s   &&&& @r   r   r   v   s  ø€ ðL 	�tÐÐ!2°dÐ!:Ô;ÜÐIÓJÐJàÒÜ˜+×&Ò&Ü $¤[°+Ó >Ð?ÑÜ˜¤X×.Ò.Ü#¤D¬´+Õ)>ÀÓ$LÓMÐß“3ÑIÑ8HÓI—3—3’3ÑIÑ8HÓI×IÒIÜÐ"@ÀÀÐ NÓOÐOð Jô Ð<¸[¸MÐJÓKÐKäÐ 0Ó1Ð÷	Dð 	Dð ÒÜ:ˆô Ü�Ô6Ð6Õ7¸ó€Oô ×ÒØØØ+ôð r   )NNNN)Ú
__future__r   rd   r[   rA   Úcollections.abcr   r   Útypingr   r   r   Údatastructuresr	   Ú
exceptionsr
   Úheadersr   r   Úserverr   r   Ú__all__Útupler   r`   r#   r   r   r   r   r   Ú<module>rp      sd   ðÝ "ã Û Û ß /ß &Ñ &å $Ý &ß Mß 9ð .Ð/LÐ
M€à�C˜�H�o€õGôVDÐ'>ô VD÷rHñ Hr   