Ë
    *Œ:jÞ/  ã                   óœ  — 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 d dlmZmZmZmZmZmZmZ d dlZd dlmZ er!d dlmZ d dlmZ d dlmZ d d	lmZ eeeeef   Z ejB                  ejD                  fZ#ej                  d
k(  re#ejH                  fz  Z# ejJ                  d«      Z& G d„ d«      Z' G d„ d«      Z(y)é    N)Ú
formatdate)Ú	FrameType)ÚTYPE_CHECKINGÚListÚOptionalÚSequenceÚSetÚTupleÚUnion)ÚConfig)ÚH11Protocol)ÚHttpToolsProtocol)ÚWebSocketProtocol)Ú
WSProtocolÚwin32zuvicorn.errorc                   ó   — e Zd ZdZdd„Zy)ÚServerStatezP
    Shared servers state that is available between all protocol instances.
    Nc                 ó\   — d| _         t        «       | _        t        «       | _        g | _        y )Nr   )Útotal_requestsÚsetÚconnectionsÚtasksÚdefault_headers)Úselfs    úP/var/www/html/tokenscope/api/venv/lib/python3.12/site-packages/uvicorn/server.pyÚ__init__zServerState.__init__*   s%   € ØˆÔÜ-0«UˆÔÜ(+«ˆŒ
Ø:<ˆÕó    ©ÚreturnN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   © r   r   r   r   %   s   „ ñô=r   r   c                   óP  — e Zd Zdeddfd„Zddeeej                        ddfd„Zddeeej                        ddfd„Z	ddeeej                        ddfd„Z
d	eej                     ddfd
„Zdd„Zdedefd„Zddeeej                        ddfd„Zdd„Zdd„Zdedee   ddfd„Zy)ÚServerÚconfigr   Nc                 óh   — || _         t        «       | _        d| _        d| _        d| _        d| _        y )NFg        )r'   r   Úserver_stateÚstartedÚshould_exitÚ
force_exitÚlast_notified)r   r'   s     r   r   zServer.__init__2   s1   € ØˆŒÜ'›MˆÔàˆŒØ ˆÔØˆŒØ ˆÕr   Úsocketsc                 ó€   — | j                   j                  «        t        j                  | j	                  |¬«      «      S )N©r.   )r'   Úsetup_event_loopÚasyncioÚrunÚserve)r   r.   s     r   r3   z
Server.run;   s,   € Ø�‰×$Ñ$Ô&Ü�{‰{˜4Ÿ:™:¨g˜:Ó6Ó7Ð7r   c              ƒ   ór  K  — t        j                  «       }| j                  }|j                  s|j	                  «        |j                  |«      | _        | j                  «        d}dt        j                  dd¬«      z   dz   }t        j                  ||d|i¬«       | j                  |¬	«      ƒ d {  –—†  | j                  ry | j                  «       ƒ d {  –—†  | j                  |¬	«      ƒ d {  –—†  d
}dt        j                  dd¬«      z   dz   }t        j                  ||d|i¬«       y 7 Œ}7 ŒZ7 ŒB­w)NzStarted server process [%d]zStarted server process [z%dÚcyan)Úfgú]Úcolor_message©Úextrar0   zFinished server process [%d]zFinished server process [)ÚosÚgetpidr'   ÚloadedÚloadÚlifespan_classÚlifespanÚinstall_signal_handlersÚclickÚstyleÚloggerÚinfoÚstartupr+   Ú	main_loopÚshutdown)r   r.   Ú
process_idr'   Úmessager9   s         r   r4   zServer.serve?   s	  è ø€ Ü—Y‘Y“[ˆ
à—‘ˆØ�}Š}Ø�K‰KŒMà×-Ñ-¨fÓ5ˆŒà×$Ñ$Ô&à/ˆØ2´U·[±[ÀÈ&Ô5QÑQÐTWÑWˆÜ�‰�G˜Z°ÀÐ/OˆÔPà�l‰l 7ˆlÓ+×+Ð+Ø×ÒØØ�n‰nÓ×ÐØ�m‰m GˆmÓ,×,Ð,à0ˆØ3´e·k±kÀ$È6Ô6RÑRÐUXÑXˆÜ�‰�G˜Z°ÀÐ/OˆÕPð 	,øð 	øØ,ús6   ‚B1D7Â3D1Â4$D7ÃD3ÃD7Ã2D5Ã3?D7Ä3D7Ä5D7c              ƒ   óˆ  ‡ ‡K  — ‰ j                   j                  «       ƒ d {  –—†  ‰ j                   j                  rd‰ _        y ‰ j                  Š	 ddt        t
        j                     dt
        j                  fˆˆ fd„}t        j                  «       }|�²dt        j                  dt        j                  fd„}g ‰ _        |D ]~  }t        j                  «       dk(  }‰j                  dkD  r
|r ||«      }|j                  ||‰j                   ‰j"                  ¬	«      ƒ d {  –—† }‰ j                  j%                  |«       Œ€ |}�nå‰j&                  �’t        j(                  ‰j&                  t        j*                  t        j,                  «      }|j                  ||‰j                   ‰j"                  ¬	«      ƒ d {  –—† }|j.                  €J ‚|j.                  }|g‰ _        �nG‰j0                  �Òd
}	t2        j4                  j7                  ‰j0                  «      r)t3        j8                  ‰j0                  «      j:                  }	|j=                  |‰j0                  ‰j                   ‰j"                  ¬«      ƒ d {  –—† }t3        j>                  ‰j0                  |	«       |j.                  €J ‚|j.                  }|g‰ _        ni	 |j                  |‰j@                  ‰jB                  ‰j                   ‰j"                  ¬«      ƒ d {  –—† }j.                  €J ‚|j.                  }|g‰ _        |€‰ jQ                  |«       d‰ _)        y 	 d‰ _)        y 7 �Œ07 �Œ27 �Œš7 ŒÝ7 ŒU# tD        $ rW}
tF        jI                  |
«       ‰ j                   jK                  «       ƒ d {  –—†7   tM        jN                  d«       Y d }
~
Œ®d }
~
ww xY w­w)NTÚ_loopr   c                 ój   •— ‰j                  ‰‰j                  ‰j                  j                  | ¬«      S )N)r'   r)   Ú	app_staterM   )Úhttp_protocol_classr)   rA   Ústate)rM   r'   r   s    €€r   Úcreate_protocolz'Server.startup.<locals>.create_protocol`   s9   ø€ ð ×-Ñ-ØØ!×.Ñ.ØŸ-™-×-Ñ-Øð	 .ó ð r   Úsockc                 ód   — ddl m} | j                  t        j                  «       «      } ||«      S )Nr   )Ú	fromshare)ÚsocketrU   Úsharer<   r=   )rS   rU   Ú	sock_datas      r   Ú_share_socketz%Server.startup.<locals>._share_socketq   s&   € õ
 -à ŸJ™J¤r§y¡y£{Ó3�	Ù  Ó+Ð+r   ÚWindowsé   )rS   ÚsslÚbacklogi¶  )Úpathr\   r]   )ÚhostÚportr\   r]   ©N)*rA   rG   r+   r'   r   r2   ÚAbstractEventLoopÚProtocolÚget_running_looprV   Ú
SocketTypeÚserversÚplatformÚsystemÚworkersÚcreate_serverr\   r]   ÚappendÚfdÚfromfdÚAF_UNIXÚSOCK_STREAMr.   Úudsr<   r^   ÚexistsÚstatÚst_modeÚcreate_unix_serverÚchmodr_   r`   ÚOSErrorrE   ÚerrorrI   ÚsysÚexitÚ_log_started_messager*   )r   r.   rR   ÚlooprY   rS   Ú
is_windowsÚserverÚ	listenersÚ	uds_permsÚexcr'   s   `          @r   rG   zServer.startupX   s,  ùè ø€ Ø�m‰m×#Ñ#Ó%×%Ð%Ø�=‰=×$Ò$Ø#ˆDÔØà—‘ˆð :>ñ	ÜœG×5Ñ5Ñ6ð	ä×Ñö	ô ×'Ñ'Ó)ˆð Ðð,Ü×'Ñ'ð,ä×"Ñ"ó,ð >@ˆDŒLØò ,�Ü%Ÿ_™_Ó.°)Ñ;�
Ø—>‘> AÒ%©*Ù(¨Ó.�DØ#×1Ñ1Ø#¨$°F·J±JÈÏÉð  2ó  ÷ �ð —‘×#Ñ# FÕ+ð,ð  ŠIà�Y‰YÐ"ä—=‘= §¡¬F¯N©N¼F×<NÑ<NÓOˆDØ×-Ñ-Ø d°·
±
ÀFÇNÁNð .ó ÷ ˆFð —>‘>Ð-Ð-Ð-ØŸ™ˆIØ"˜8ˆDŽLà�Z‰ZÐ#àˆIÜ�w‰w�~‰~˜fŸj™jÔ)ÜŸG™G F§J¡JÓ/×7Ñ7�	Ø×2Ñ2Ø f§j¡j°f·j±jÈ&Ï.É.ð 3ó ÷ ˆFô �H‰H�V—Z‘Z Ô+Ø—>‘>Ð-Ð-Ð-ØŸ™ˆIØ"˜8ˆD�LðØ#×1Ñ1Ø#ØŸ™ØŸ™ØŸ
™
Ø"ŸN™Nð  2ó  ÷ �ð —>‘>Ð-Ð-Ð-ØŸ™ˆIØ"˜8ˆDŒLàˆ?Ø×%Ñ% iÔ0ð ˆ�ð àˆ�ð} 	&ùðNùðùðøðùô ò Ü—‘˜SÔ!Ø—m‘m×,Ñ,Ó.×.Ñ.Ü—‘˜—‘ûðüs“   „O¢M£D OÄ#MÄ$BOÆ>MÆ?B>OÉ=MÉ>AOËAM ÌMÌM ÌAOÍOÍOÍOÍM Í	N?Í(2N:ÎNÎN:Î5OÎ:N?Î?Or~   c                 ó  — | j                   }|j                  �*|d   }t        j                  d|j	                  «       «       y |j
                  �!t        j                  d|j
                  «       y d}|j                  €dn|j                  }d|v rd}|j                  }|dk(  r|d   j	                  «       d   }|j                  rd	nd
}d|› d�}dt        j                  |d¬«      z   dz   }	t        j                  ||||d|	i¬«       y )Nr   z3Uvicorn running on socket %s (Press CTRL+C to quit)z8Uvicorn running on unix socket %s (Press CTRL+C to quit)z
%s://%s:%dz0.0.0.0ú:z%s://[%s]:%dr[   ÚhttpsÚhttpzUvicorn running on z (Press CTRL+C to quit)T)Úboldr9   r:   )r'   rl   rE   rF   Úgetsocknamerp   r_   r`   r\   rC   rD   )
r   r~   r'   rS   Úaddr_formatr_   r`   Úprotocol_namerK   r9   s
             r   rz   zServer._log_started_message¹   s  € Ø—‘ˆà�9‰9Ð Ø˜Q‘<ˆDÜ�K‰KØEØ× Ñ Ó"õð
 �Z‰ZÐ#Ü�K‰KØJÈFÏJÉJõð
 'ˆKØ &§¡Ð 3‘9¸¿¹ˆDØ�d‰{à,�à—;‘;ˆDØ�qŠyØ  ‘|×/Ñ/Ó1°!Ñ4�à'-§z¢z™G°vˆMØ+¨K¨=Ð8OÐPˆGà%Ü—+‘+˜k°Ô5ñ6à+ñ,ð ô
 �K‰KØØØØØ&¨Ð6ð õ r   c              ƒ   óÚ   K  — d}| j                  |«      ƒ d {  –—† }|sD|dz  }|dz  }t        j                  d«      ƒ d {  –—†  | j                  |«      ƒ d {  –—† }|sŒCy y 7 ŒK7 Œ$7 Œ­w)Nr   r[   i / çš™™™™™¹?)Úon_tickr2   Úsleep)r   Úcounterr+   s      r   rH   zServer.main_loopâ   si   è ø€ ØˆØ ŸL™L¨Ó1×1ˆÙØ�q‰LˆGØ Ñ&ˆGÜ—-‘- Ó$×$Ð$Ø $§¡¨WÓ 5×5ˆKô	 ð 2øð %øØ5ús9   ‚A+™A%š(A+ÁA'ÁA+ÁA)ÁA+Á#A+Á'A+Á)A+r�   c              ƒ   ót  K  — |dz  dk(  rÚt        j                   «       }t        |d¬«      j                  «       }| j                  j                  rd|fg}ng }|| j                  j
                  z   | j                  _        | j                  j                  �O|| j                  z
  | j                  j                  kD  r)|| _	        | j                  j                  «       ƒ d {  –—†  | j                  ry| j                  j                  �-| j                  j                  | j                  j                  k\  S y7 ŒU­w)Né
   r   T)Úusegmts   dateF)Útimer   Úencoder'   Údate_headerÚencoded_headersr)   r   Úcallback_notifyr-   Útimeout_notifyr+   Úlimit_max_requestsr   )r   r�   Úcurrent_timeÚcurrent_dater“   s        r   r‹   zServer.on_tickë   s  è ø€ à�R‰<˜1ÒÜŸ9™9›;ˆLÜ% l¸4Ô@×GÑGÓIˆLà�{‰{×&Ò&Ø '¨Ð6Ð7‘à �ð ˜dŸk™k×9Ñ9Ñ9ð ×ÑÔ-ð
 �{‰{×*Ñ*Ð6Ø $×"4Ñ"4Ñ4°t·{±{×7QÑ7QÒQØ)5�DÔ&ØŸ+™+×5Ñ5Ó7×7Ð7ð ×ÒØØ�;‰;×)Ñ)Ð5Ø×$Ñ$×3Ñ3°t·{±{×7UÑ7UÑUÐUØð 8ús   ‚CD8Ã D6Ã!AD8c              ƒ   óx  K  — t         j                  d«       | j                  D ]  }|j                  «        Œ |xs g D ]  }|j                  «        Œ t	        | j
                  j                  «      D ]  }|j                  «        Œ t        j                  d«      ƒ d {  –—†  	 t        j                  | j                  «       | j                  j                  ¬«      ƒ d {  –—†  | j*                  s#| j,                  j                  «       ƒ d {  –—†  y y 7 Œv7 Œ6# t        j                  $ r‡ t         j                  dt!        | j
                  j"                  «      «       | j
                  j"                  D ]8  }t$        j&                  dk  r|j)                  «        Œ'|j)                  d¬«       Œ: Y ŒÍw xY w7 Œ§­w)NzShutting downrŠ   )Útimeoutz=Cancel %s running task(s), timeout graceful shutdown exceeded)é   é	   z2Task cancelled, timeout graceful shutdown exceeded)Úmsg)rE   rF   rf   ÚcloseÚlistr)   r   rI   r2   rŒ   Úwait_forÚ_wait_tasks_to_completer'   Útimeout_graceful_shutdownÚTimeoutErrorrw   Úlenr   rx   Úversion_infoÚcancelr,   rA   )r   r.   r}   rS   Ú
connectionÚts         r   rI   zServer.shutdown  sx  è ø€ Ü�‰�OÔ$ð —l‘lò 	ˆFØ�L‰L�Nð	à’M˜rò 	ˆDØ�J‰J�Lð	ô ˜t×0Ñ0×<Ñ<Ó=ò 	"ˆJØ×ÑÕ!ð	"ä�m‰m˜CÓ × Ð ð	WÜ×"Ñ"Ø×,Ñ,Ó.ØŸ™×=Ñ=ô÷ ð ð  �ŠØ—-‘-×(Ñ(Ó*×*Ñ*ð ð) 	!øðùô ×#Ñ#ò 		WÜ�L‰LØOÜ�D×%Ñ%×+Ñ+Ó,ôð ×&Ñ&×,Ñ,ò W�Ü×#Ñ# fÒ,Ø—H‘H•Jà—H‘HÐ!U�HÕVò	Wð		Wúð +úsU   ‚BF:Â DÂ!F:Â&<D Ã"DÃ#D Ã')F:ÄF8ÄF:ÄD ÄBF5Æ2F:Æ4F5Æ5F:c              ƒ   óÖ  K  — | j                   j                  r…| j                  syd}t        j	                  |«       | j                   j                  rL| j                  s@t        j                  d«      ƒ d {  –—†  | j                   j                  r| j                  sŒ@| j                   j                  r…| j                  syd}t        j	                  |«       | j                   j                  rL| j                  s@t        j                  d«      ƒ d {  –—†  | j                   j                  r| j                  sŒ@| j                  D ]  }|j                  «       ƒ d {  –—†  Œ y 7 Œì7 ŒS7 Œ­w)Nz8Waiting for connections to close. (CTRL+C to force quit)rŠ   z@Waiting for background tasks to complete. (CTRL+C to force quit))
r)   r   r,   rE   rF   r2   rŒ   r   rf   Úwait_closed)r   rž   r}   s      r   r¢   zServer._wait_tasks_to_complete*  s  è ø€ à×Ñ×(Ò(°·²ØLˆCÜ�K‰K˜ÔØ×#Ñ#×/Ò/¸¿ºÜ—m‘m CÓ(×(Ð(ð ×#Ñ#×/Ò/¸¿»ð ×Ñ×"Ò"¨4¯?ª?ØTˆCÜ�K‰K˜ÔØ×#Ñ#×)Ò)°$·/²/Ü—m‘m CÓ(×(Ð(ð ×#Ñ#×)Ò)°$·/³/ð —l‘lò 	'ˆFØ×$Ñ$Ó&×&Ñ&ñ	'ð )øð )øð 'úsC   ‚A4E)Á6E#Á7&E)ÂA3E)ÄE%Ä&E)Ä9"E)ÅE'ÅE)Å%E)Å'E)c                 óF  — t        j                  «       t        j                  «       ury t        j                  «       }	 t
        D ]   }|j                  || j                  |d «       Œ" y # t        $ r. t
        D ]"  }t        j                  || j                  «       Œ$ Y y w xY wra   )
Ú	threadingÚcurrent_threadÚmain_threadr2   Úget_event_loopÚHANDLED_SIGNALSÚadd_signal_handlerÚhandle_exitÚNotImplementedErrorÚsignal)r   r{   Úsigs      r   rB   zServer.install_signal_handlers<  s�   € Ü×#Ñ#Ó%¬Y×-BÑ-BÓ-DÑDàä×%Ñ%Ó'ˆð	5Ü&ò J�Ø×'Ñ'¨¨T×-=Ñ-=¸sÀDÕIñJøä"ò 	5ä&ò 5�Ü—‘˜c 4×#3Ñ#3Õ4ò5ð	5ús   ¿)A) Á)4B ÂB r¶   Úframec                 ó`   — | j                   r|t        j                  k(  rd| _        y d| _         y )NT)r+   rµ   ÚSIGINTr,   )r   r¶   r·   s      r   r³   zServer.handle_exitK  s%   € Ø×Ò ¤v§}¡}Ò 4Ø"ˆD�Oà#ˆDÕr   ra   r   )r    r!   r"   r   r   r   r   rV   r3   r4   rG   r   re   rz   rH   ÚintÚboolr‹   rI   r¢   rB   r   r³   r$   r   r   r&   r&   1   s  „ ð!˜vð !¨$ó !ñ8˜8 D¨¯©Ñ$7Ñ8ð 8ÀDó 8ñQ 8¨D°·±Ñ,?Ñ#@ð QÈDó Qñ2_ X¨d°6·=±=Ñ.AÑ%Bð _Èdó _ðB'¨h°v×7HÑ7HÑ.Ið 'Èdó 'óR6ð Sð ¨Tó ñ8!+ h¨t°F·M±MÑ/BÑ&Cð !+Ètó !+óF'ó$5ð$˜sð $¨8°IÑ+>ð $À4ô $r   r&   ))r2   Úloggingr<   rg   rµ   rV   rx   r­   r‘   Úemail.utilsr   Útypesr   Útypingr   r   r   r   r	   r
   r   rC   Úuvicorn.configr   Úuvicorn.protocols.http.h11_implr   Ú%uvicorn.protocols.http.httptools_implr   Ú,uvicorn.protocols.websockets.websockets_implr   Ú)uvicorn.protocols.websockets.wsproto_implr   Ú	Protocolsr¹   ÚSIGTERMr±   ÚSIGBREAKÚ	getLoggerrE   r   r&   r$   r   r   ú<module>rÉ      s·   ðÛ Û Û 	Û Û Û Û 
Û Û Ý "Ý ß M× MÑ Mã å !áÝ;ÝGÝNÝDà�kÐ#4°jÐBSÐSÑT€Ið ‡M�MØ
‡N�Nð€ð ‡<�<�7ÒØ˜Ÿ™Ð)Ñ)€Oà	ˆ×	Ñ	˜?Ó	+€÷	=ñ 	=÷^$ò ^$r   