+
    O|jC  ã                  ó®   € ^ RI H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Ht ^RIHtHt ^RIHtHt . ROtR R	 ltR
 R ltR R ltR R ltR# )é    )ÚannotationsN)ÚHeadersÚMultipleValuesError)ÚInvalidHeaderÚInvalidHeaderValueÚInvalidUpgrade)Úparse_connectionÚparse_upgrade)ÚConnectionOptionÚUpgradeProtocol)Ú
accept_keyÚgenerate_keyc               ó    € V ^8„  d   QhRRRR/# ©é   Úheadersr   ÚreturnÚstr© )Úformats   "ÚTC:\Users\alokc\chatbot\backend\venv\Lib\site-packages\websockets/legacy/handshake.pyÚ__annotate__r      s   € ÷ ñ ˜7ð  sñ ó    c                ó@   € \        4       pRV R&   RV R&   WR&   RV R&   V# )zÓ
Build a handshake request to send to the server.

Update request headers passed in argument.

Args:
    headers: Handshake request headers.

Returns:
    ``key`` that must be passed to :func:`check_response`.

Ú	websocketÚUpgradeÚ
ConnectionúSec-WebSocket-KeyÚ13úSec-WebSocket-Version)r   ©r   Úkeys   & r   Úbuild_requestr#      s8   € ô ‹.€CØ$€GˆIÑØ%€GˆLÑØ#&ÐÑ Ø'+€GÐ#Ñ$Ø€Jr   c               ó    € V ^8„  d   QhRRRR/# r   r   )r   s   "r   r   r   %   s   € ÷ =ñ =˜7ð = sñ =r   c                ó2  € \        V P                  R4       Uu. uF  p\        V4      NK  	  up. 4      p\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       g   \	        RRP                  V4      4      h\        V P                  R4       Uu. uF  p\        V4      NK  	  up. 4      p\        V4      ^8X  d   V^ ,          P                  4       R8X  g   \	        RRP                  V4      4      h V R,          p \        P                  ! TP                  4       RR7      p\        T4      ^8w  d   \#        RT4      h T R,          pTR8w  d   \#        RT4      hT# u upi u upi   \         d   p\        R4      ThR	p?i\         d   p\        RR
4      ThR	p?ii ; i  \        P                    d   p\#        RT4      ThR	p?ii ; i  \         d   p\        R4      ThR	p?i\         d   p\        RR
4      ThR	p?ii ; i)a.  
Check a handshake request received from the client.

This function doesn't verify that the request is an HTTP/1.1 or higher GET
request and doesn't perform ``Host`` and ``Origin`` checks. These controls
are usually performed earlier in the HTTP request handling code. They're
the responsibility of the caller.

Args:
    headers: Handshake request headers.

Returns:
    ``key`` that must be passed to :func:`build_response`.

Raises:
    InvalidHandshake: If the handshake request is invalid.
        Then, the server must return a 400 Bad Request error.

r   c              3  óF   "  € T F  qP                  4       R 8H  x € K  	  R# 5i©ÚupgradeN©Úlower©Ú.0Úvalues   & r   Ú	<genexpr>Ú check_request.<locals>.<genexpr>=   ó   é € ÐB±z¨e�{‰{‹} 	Ö)³zùó   ‚!TFú, r   r   r   Númultiple values)Úvalidater    r   )ÚsumÚget_allr	   Úanyr   Újoinr
   Úlenr*   ÚKeyErrorr   r   Úbase64Ú	b64decodeÚencodeÚbinasciiÚErrorr   )r   r-   Ú
connectionr(   Ús_w_keyÚexcÚraw_keyÚs_w_versions   &       r   Úcheck_requestrE   %   s÷  € ô( *-Ø.5¯o©o¸lÔ.KÓLÑ.K UÔ	˜%Ö	 Ñ.KÑLÈbó*€J÷ ‹3ÑB±zÓB�3�3Š3ÑB±zÓB×BÒBÜ˜\¨4¯9©9°ZÓ+@ÓAÐAä%(Ø+2¯?©?¸9Ô+EÓFÑ+E %Œ�uÖ	Ñ+EÑFÈó&€Gô �‹L˜AÔ '¨!¥*×"2Ñ"2Ó"4¸Ô"CÜ˜Y¨¯	©	°'Ó(:Ó;Ð;ðMØÐ-Õ.ˆðHÜ×"Ò" 7§>¡>Ó#3¸dÔCˆô ˆ7ƒ|�rÔÜ Ð!4°gÓ>Ð>ðQØÐ5Õ6ˆð �dÔÜ Ð!8¸+ÓFÐFà€NùòQ 	Mùò 	Gøô ô :ÜÐ/Ó0°cÐ9ûÜô MÜÐ/Ð1BÓCÈÐLûðMûô
 �>‰>ô HÜ Ð!4°gÓ>ÀCÐGûðHûô ô >ÜÐ3Ó4¸#Ð=ûÜô QÜÐ3Ð5FÓGÈSÐPûðQúsw   ™E1Â"E6Ä	E; Ä&F5 Å	G Å;F2ÆFÆF2ÆF2Æ F-Æ-F2Æ5GÇ
GÇGÇHÇ*G6Ç6HÈHÈHÈHc               ó$   € V ^8„  d   QhRRRRRR/# ©r   r   r   r"   r   r   ÚNoner   )r   s   "r   r   r   e   s!   € ÷ 2ñ 2˜Gð 2¨#ð 2°$ñ 2r   c                ó6   € RV R&   RV R&   \        V4      V R&   R# )z½
Build a handshake response to send to the client.

Update response headers passed in argument.

Args:
    headers: Handshake response headers.
    key: Returned by :func:`check_request`.

r   r   r   úSec-WebSocket-AcceptN)Úacceptr!   s   &&r   Úbuild_responserL   e   s'   € ð %€GˆIÑØ%€GˆLÑÜ&,¨S£k€GÐ"Ó#r   c               ó$   € V ^8„  d   QhRRRRRR/# rG   r   )r   s   "r   r   r   u   s&   € ÷ )Eñ )E˜Gð )E¨#ð )E°$ñ )Er   c                óâ  € \        V P                  R4       Uu. uF  p\        V4      NK  	  up. 4      p\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       g   \	        RRP                  V4      4      h\        V P                  R4       Uu. uF  p\        V4      NK  	  up. 4      p\        V4      ^8X  d   V^ ,          P                  4       R8X  g   \	        RRP                  V4      4      h V R	,          pT\        T4      8w  d   \        R	T4      hR
# u upi u upi   \         d   p\        R	4      ThR
p?i\         d   p\        R	R4      ThR
p?ii ; i)aw  
Check a handshake response received from the server.

This function doesn't verify that the response is an HTTP/1.1 or higher
response with a 101 status code. These controls are the responsibility of
the caller.

Args:
    headers: Handshake response headers.
    key: Returned by :func:`build_request`.

Raises:
    InvalidHandshake: If the handshake response is invalid.

r   c              3  óF   "  € T F  qP                  4       R 8H  x € K  	  R# 5ir'   r)   r+   s   & r   r.   Ú!check_response.<locals>.<genexpr>‰   r0   r1   TFÚ r   r   r2   rJ   Nr3   )r5   r6   r	   r7   r   r8   r
   r9   r*   r:   r   r   rK   r   )r   r"   r-   r@   r(   Ú
s_w_acceptrB   s   &&     r   Úcheck_responserS   u   sL  € ô  *-Ø.5¯o©o¸lÔ.KÓLÑ.K UÔ	˜%Ö	 Ñ.KÑLÈbó*€J÷ ‹3ÑB±zÓB�3�3Š3ÑB±zÓB×BÒBÜ˜\¨3¯8©8°JÓ+?Ó@Ð@ä%(Ø+2¯?©?¸9Ô+EÓFÑ+E %Œ�uÖ	Ñ+EÑFÈó&€Gô �‹L˜AÔ '¨!¥*×"2Ñ"2Ó"4¸Ô"CÜ˜Y¨¯	©	°'Ó(:Ó;Ð;ðPØÐ3Õ4ˆ
ð ”V˜C“[Ô Ü Ð!7¸ÓDÐDñ !ùò/ 	Mùò 	Gøô ô =ÜÐ2Ó3¸Ð<ûÜô PÜÐ2Ð4EÓFÈCÐOûðPús5   ™D-Â"D2Ä	D7 Ä7E.ÅEÅE.ÅE.ÅE)Å)E.)r#   rE   rL   rS   )Ú
__future__r   r;   r>   Údatastructuresr   r   Ú
exceptionsr   r   r   r   r	   r
   Útypingr   r   Úutilsr   rK   r   Ú__all__r#   rE   rL   rS   r   r   r   Ú<module>rZ      s>   ðÝ "ã Û ç 9ß JÑ Jß 5ß 6ß 6ò Q€õõ*=õ@2÷ )Er   