+
    -IëjÂ~  ã                   ó¾  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	 ^ RI
Ht ^ RI
Ht ^ RIHtHt ^ RIHtHtHtHtHt ^ RIHt ^ RIHtHtHtHt ^ RIt]P:                  '       d	   ^ R	IHtHt ]P@                  ! R
4      t!]PD                  ! R4      t# ! R R4      t$ ! R R]4      t% ! R R]4      t&]'R8X  d   ]PP                  ! ]%4       ]! 4        R# R# )z5Non-blocking HTTP client implementation using pycurl.N)ÚBytesIO)Úhttputil)Úioloop)Úutf8Ú
native_str)ÚHTTPRequestÚHTTPResponseÚ	HTTPErrorÚAsyncHTTPClientÚmain)Úapp_log)ÚDictÚAnyÚCallableÚOptional)ÚDequeÚTupleztornado.curl_httpclients   |
c                   ó‚   a € ] tR t^3t o RtRtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 lt	V 3R
 lR lt
RtV tR# )Ú_CurlStreamingBufferai  Delivers response body chunks from libcurl to a ``streaming_callback``.

libcurl runs its write callback from inside
``curl_multi_socket_action``, where it is not safe to run application
code (which may reenter this client, or raise exceptions that libcurl
would turn into transfer errors). Chunks are therefore queued here and
delivered later from the `.IOLoop`.

Queuing alone would let the amount of buffered data grow with whatever
the server chooses to send, which is a problem when
``decompress_response`` is in use: a "decompression bomb" lets a server
turn a few kilobytes on the wire into gigabytes of decompressed data,
all of which would pile up in the `.IOLoop`'s callback queue before any
of it reached the application. To bound this, the transfer is paused
once more than `max_buffer_size` bytes are waiting, and resumed after
the callback has consumed them.
c                óZ   <€ V ^8„  d   QhRRRS[ P                  RS[S[.S[3,          RR/# )é   ÚclientÚCurlAsyncHTTPClientÚcurlÚcallbackÚreturnN)ÚpycurlÚCurlr   Úbytesr   )ÚformatÚ__classdict__s   "€Ú9/usr/lib/python3/dist-packages/tornado/curl_httpclient.pyÚ__annotate__Ú!_CurlStreamingBuffer.__annotate__Q   sB   ø€ ÷ %ñ %à%ð%ñ �k‰kð%ñ ™E˜7¡C˜<Õ(ð	%ð
 
ñ%ó    c                óÆ   € Wn         VP                  V n        W n        W0n        \        P
                  ! 4       V n        ^ V n        ^ V n        RV n	        RV n
        RV n        R# )é    FN)r   Úio_loopr   r   ÚcollectionsÚdequeÚchunksÚsizeÚtotalÚbody_too_largeÚpausedÚflush_scheduled)Úselfr   r   r   s   &&&&r!   Ú__init__Ú_CurlStreamingBuffer.__init__Q   sS   € ð ŒØ—~‘~ˆŒàŒ	Ø ŒÜ!×'Ò'Ó)ˆŒØˆŒ	ØˆŒ
Ø#ˆÔØˆŒØ$ˆÖr$   c                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r   Úchunkr   ©r   Úint)r   r    s   "€r!   r"   r#   c   s   ø€ ÷ ñ ™5ð ¡Sñ r$   c                óÖ  € V P                   \        V4      ,           V P                  P                  8”  d
   RV n        ^ # V P
                  V P                  8¼  d   RV n        \        P                  # V P                  P                  V4       V ;P
                  \        V4      ,          un        V ;P                   \        V4      ,          un         V P                  4        \        V4      # )z#libcurl ``WRITEFUNCTION`` callback.T)r,   Úlenr   Úmax_body_sizer-   r+   Úmax_buffer_sizer.   r   ÚWRITEFUNC_PAUSEr*   ÚappendÚ_schedule_flush©r0   r5   s   &&r!   ÚwriteÚ_CurlStreamingBuffer.writec   s¡   € à�:‰:œ˜E›
Õ" T§[¡[×%>Ñ%>Ô>ð
 #'ˆDÔÙØ�9‰9˜×,Ñ,Ô,ð ˆDŒKÜ×)Ñ)Ð)Ø�‰×Ñ˜5Ô!Ø�	Š	”S˜“ZÕ�	Ø�
Š
”c˜%“jÕ �
Ø×ÑÔÜ�5‹zÐr$   c                ó   <€ V ^8„  d   QhRR/# ©r   r   N© )r   r    s   "€r!   r"   r#   x   s   ø€ ÷ 2ñ 2 ñ 2r$   c                ó†   € V P                   '       g/   R V n         V P                  P                  V P                  4       R# R# )TN)r/   r'   Úadd_callbackÚflush©r0   s   &r!   r>   Ú$_CurlStreamingBuffer._schedule_flushx   s1   € Ø×#×#Ð#Ø#'ˆDÔ Ø�L‰L×%Ñ% d§j¡jÖ1ñ $r$   c                ó   <€ V ^8„  d   QhRR/# rC   rD   )r   r    s   "€r!   r"   r#   }   s   ø€ ÷ $4ñ $4�tñ $4r$   c                óœ  € RV n          V P                  '       dP   V P                  P                  4       pV ;P                  \	        V4      ,          un        V P                  V4       Ka   V P                  '       d   V P                  4        R# V P                  '       d_   RV n        V P                  eH    V P                  P                  \        P                  4       V P                  P                  ^ 4       R# R# R#   \        P                   d     R# i ; i  T P                  '       d   T P                  4        i T P                  '       dx   RT n        T P                  eb    T P                  P                  \        P                  4       T P                  P                  ^ 4       i   \        P                   d     i i ; ii i ; i)z?Pass everything we have buffered to the ``streaming_callback``.FN)r/   r*   Úpopleftr+   r9   r   r>   r.   r   Úpauser   Ú
PAUSE_CONTr   Ú_set_timeoutÚerrorr?   s   & r!   rG   Ú_CurlStreamingBuffer.flush}   sZ  € à$ˆÔð!	4Ø—+—+�+ØŸ™×+Ñ+Ó-�Ø—	’	œS ›ZÕ'•	Ø—‘˜eÖ$ð ð
 �{�{ˆ{à×$Ñ$Ö&Ø——�Ø#�”Ø—9‘9Ò(ð4ð
 Ÿ	™	Ÿ™¬×(9Ñ(9Ô:ð  Ÿ™×0Ñ0°Ö3ñ- )ñ øô "Ÿ<™<ô ò ð	ûð �{�{ˆ{à×$Ñ$Õ&Ø——�Ø#�”Ø—9‘9Ò(ð4ð
 Ÿ	™	Ÿ™¬×(9Ñ(9Ô:ð  Ÿ™×0Ñ0°Õ3øô "Ÿ<™<ô ñ ð	úð )ð úsM   ‰D ›AD Â7)D ÄDÄDÄ5GÅGÅ))F.ÆGÆ.GÇGÇGÇGc                ó   <€ V ^8„  d   QhRR/# rC   rD   )r   r    s   "€r!   r"   r#   £   s   ø€ ÷ ñ ˜ñ r$   c                óB   € RV n         RV n        V P                  4        R# )zŠDeliver any remaining data at the end of the request.

The curl handle may be reset and reused after this, so we must not
touch it again.
NF)r   r.   rG   rH   s   &r!   ÚfinishÚ_CurlStreamingBuffer.finish£   s   € ð ˆŒ	ØˆŒØ�
‰
Žr$   )
r-   r   r*   r   r   r/   r'   r.   r+   r,   Ni   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r;   r1   r@   r>   rG   rT   Ú__static_attributes__Ú__classdictcell__©r    s   @r!   r   r   3   sD   ø‡ € ñð6 "€O÷%ð %÷$ð ÷*2ð 2÷
$4ð $4÷Lö r$   r   c                   óZ  a a€ ] tR t^®t oR"V3R lV 3R llltV3R lV 3R lltV3R lR ltV3R lR ltV3R	 lR
 ltV3R lR lt	V3R lR lt
V3R lR ltV3R lR ltV3R lR ltR#V3R lR lltV3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR  ltR!tVtV ;t# )$r   c                óV   <€ V ^8„  d   QhRS[ RS[S[S[S[3,          ,          RS[ RR/# )r   Úmax_clientsÚdefaultsr:   r   N)r7   r   r   Ústrr   )r   r    s   "€r!   r"   Ú CurlAsyncHTTPClient.__annotate__¯   s@   ø€ ÷ $5ñ $5áð$5ñ ™4¡¡S �>Õ*ð$5ñ ð	$5ð
 
ñ$5r$   c                ó2  <€ \         SV `  VR 7       W0n        \        P                  ! 4       V n        V P
                  P                  \        P                  V P                  4       V P
                  P                  \        P                  V P                  4       \        V4       Uu. uF  q@P                  4       NK  	  upV n        V P                  R,          V n        \        P                   ! 4       V n        / V n        RV n        \(        P*                  ! V P,                  R4      V n        V P.                  P1                  4        \        P2                  ! 4       pV P
                  P5                  V4       V P
                  P7                  V4       R# u upi ))ra   :NNNNéè  )ÚsuperÚ
initializer:   r   Ú	CurlMultiÚ_multiÚsetoptÚM_TIMERFUNCTIONrO   ÚM_SOCKETFUNCTIONÚ_handle_socketÚrangeÚ_curl_createÚ_curlsÚ
_free_listr(   r)   Ú	_requestsÚ_fdsÚ_timeoutr   ÚPeriodicCallbackÚ_handle_force_timeoutÚ_force_timeout_callbackÚstartr   Ú
add_handleÚremove_handle)r0   r`   ra   r:   ÚiÚdummy_curl_handleÚ	__class__s   &&&&  €r!   rg   ÚCurlAsyncHTTPClient.initialize¯   s/  ø€ ô 	‰Ñ HÐÔ-Ø*Ôä×&Ò&Ó(ˆŒØ�‰×Ñœ6×1Ñ1°4×3DÑ3DÔEØ�‰×Ñœ6×2Ñ2°D×4GÑ4GÔHÜ49¸+Ô4FÓGÑ4F¨q×(Ñ(Ö*Ñ4FÑGˆŒØŸ+™+ a�.ˆŒä×ÒÓð 	Œð ˆŒ	ØˆŒô (.×'>Ò'>Ø×&Ñ&¨ó(
ˆÔ$ð 	×$Ñ$×*Ñ*Ô,ô #ŸKšK›MÐØ�‰×ÑÐ0Ô1Ø�‰×!Ñ!Ð"3Ö4ùò1 Hs   Â'Fc                ó   <€ V ^8„  d   QhRR/# rC   rD   )r   r    s   "€r!   r"   rc   Õ   s   ø€ ÷ ñ �tñ r$   c                óT  <€ V P                   P                  4        V P                  e&   V P                  P	                  V P                  4       V P
                   F  pVP                  4        K  	  V P                  P                  4        \        SV `  4        R V n         R V n        R # ©N)	rw   Ústoprt   r'   Úremove_timeoutrp   Úcloseri   rf   )r0   r   r}   s   & €r!   r„   ÚCurlAsyncHTTPClient.closeÕ   sv   ø€ Ø×$Ñ$×)Ñ)Ô+Ø�=‰=Ò$Ø�L‰L×'Ñ'¨¯©Ô6Ø—K”KˆDØ�J‰JŽLñ  à�‰×ÑÔÜ‰‰Œð
 (,ˆÔ$ØˆŽr$   c                ó@   <€ V ^8„  d   QhRS[ RS[S[.R3,          RR/# )r   Úrequestr   Nr   )r   r   r   )r   r    s   "€r!   r"   rc   ä   s1   ø€ ÷ ñ Ù"ðÙ.6¹°~ÀtÐ7KÕ.Lðà	ñr$   c                ó²   € V P                   P                  WV P                  P                  4       34       V P	                  4        V P                  ^ 4       R# ©r&   N)rr   r=   r'   ÚtimeÚ_process_queuerO   )r0   r‡   r   s   &&&r!   Ú
fetch_implÚCurlAsyncHTTPClient.fetch_implä   sB   € ð 	�‰×Ñ˜w°$·,±,×2CÑ2CÓ2EÐFÔGØ×ÑÔØ×Ñ˜!Ör$   c          
      ó6   <€ V ^8„  d   QhRS[ RS[ RS[RS[RR/# )r   ÚeventÚfdÚmultiÚdatar   N)r7   r   r   )r   r    s   "€r!   r"   rc   ë   s0   ø€ ÷ )ñ )¡Cð )©Sð )¹ð )ÁEð )Èdñ )r$   c           	     óø  € \         P                  \        P                  P                  \         P
                  \        P                  P                  \         P                  \        P                  P                  \         P                  \        P                  P                  \        P                  P                  ,          /pV\         P                  8X  d=   W P                  9   d+   V P                  P                  V4       V P                  V R# R# WQ,          pW P                  9   d   V P                  P                  V4       V P                  P                  W P                  V4       W`P                  V&   R# )zOCalled by libcurl when it wants to change the file descriptors
it cares about.
N)r   Ú	POLL_NONEr   ÚIOLoopÚNONEÚPOLL_INÚREADÚPOLL_OUTÚWRITEÚ
POLL_INOUTÚPOLL_REMOVErs   r'   Úremove_handlerÚadd_handlerÚ_handle_events)r0   r�   r�   r‘   r’   Ú	event_mapÚioloop_events   &&&&&  r!   rm   Ú"CurlAsyncHTTPClient._handle_socketë   sñ   € ô
 ×ÑœfŸm™m×0Ñ0Ü�N‰NœFŸM™M×.Ñ.Ü�O‰OœVŸ]™]×0Ñ0Ü×ÑœvŸ}™}×1Ñ1´F·M±M×4GÑ4GÕGð	
ˆ	ð ”F×&Ñ&Ô&Ø—Y‘YŒØ—‘×+Ñ+¨BÔ/Ø—I‘I˜b’Mñ ð %Õ+ˆLð —Y‘YŒØ—‘×+Ñ+¨BÔ/Ø�L‰L×$Ñ$ R×)<Ñ)<¸lÔKØ(�I‰I�b‹Mr$   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Úmsecsr   N©r7   )r   r    s   "€r!   r"   rc     s   ø€ ÷ 
ñ 
¡#ð 
¨$ñ 
r$   c                ó  € V P                   e&   V P                  P                  V P                   4       V P                  P                  V P                  P	                  4       VR,          ,           V P
                  4      V n         R# )z(Called by libcurl to schedule a timeout.Ng     @�@)rt   r'   rƒ   Úadd_timeoutrŠ   Ú_handle_timeout)r0   r¤   s   &&r!   rO   Ú CurlAsyncHTTPClient._set_timeout  sY   € à�=‰=Ò$Ø�L‰L×'Ñ'¨¯©Ô6ØŸ™×0Ñ0Ø�L‰L×ÑÓ %¨&¥.Õ0°$×2FÑ2Fó
ˆŽr$   c                ó*   <€ V ^8„  d   QhRS[ RS[ RR/# )r   r�   Úeventsr   Nr¥   )r   r    s   "€r!   r"   rc     s"   ø€ ÷ (ñ (¡ð (©cð (°dñ (r$   c                óú  € ^ pV\         P                  P                  ,          '       d   V\        P                  ,          pV\         P                  P
                  ,          '       d   V\        P                  ,          p  V P                  P                  W4      w  rEV\        P                  8w  g   K6   T P                  4        R#   \        P                   d   pTP                  ^ ,          p Rp?LWRp?ii ; i)zHCalled by IOLoop when there is activity on one of our
file descriptors.
N)r   r•   r˜   r   Ú
CSELECT_INrš   ÚCSELECT_OUTri   Úsocket_actionrP   ÚargsÚE_CALL_MULTI_PERFORMÚ_finish_pending_requests)r0   r�   r«   ÚactionÚretÚnum_handlesÚes   &&&    r!   rŸ   Ú"CurlAsyncHTTPClient._handle_events  s´   € ð ˆØ”F—M‘M×&Ñ&×&Ô&Ø”f×'Ñ'Õ'ˆFØ”F—M‘M×'Ñ'×'Ô'Ø”f×(Ñ(Õ(ˆFØð Ø#'§;¡;×#<Ñ#<¸RÓ#HÑ �ð ”f×1Ñ1Ö1ØØ×%Ñ%Ö'øô	 —<‘<ô  Ø—f‘f˜Q•i•ûð ús   ÂC ÃC:ÃC5Ã5C:c                ó   <€ V ^8„  d   QhRR/# rC   rD   )r   r    s   "€r!   r"   rc   "  s   ø€ ÷ +ñ + ñ +r$   c                ó’  € RV n           V P                  P                  \        P                  ^ 4      w  rV\        P                  8w  g   KE   T P                  4        T P                  P                  4       pT^ 8¼  d   T P                  T4       R# R#   \        P
                   d   pTP                  ^ ,          p Rp?L‹Rp?ii ; i)z7Called by IOLoop when the requested timeout has passed.N)rt   ri   r¯   r   ÚSOCKET_TIMEOUTrP   r°   r±   r²   ÚtimeoutrO   )r0   r´   rµ   r¶   Únew_timeouts   &    r!   r¨   Ú#CurlAsyncHTTPClient._handle_timeout"  s¢   € àˆŒØð Ø#'§;¡;×#<Ñ#<¼V×=RÑ=RÐTUÓ#VÑ �ð ”f×1Ñ1Ö1ØØ×%Ñ%Ô'ð —k‘k×)Ñ)Ó+ˆØ˜!ÔØ×Ñ˜kÖ*ñ øô) —<‘<ô  Ø—f‘f˜Q•i•ûð ús   Š,B ÂCÂ)CÃCc                ó   <€ V ^8„  d   QhRR/# rC   rD   )r   r    s   "€r!   r"   rc   ?  s   ø€ ÷ (ñ ( tñ (r$   c                óü   €   V P                   P                  4       w  rV\        P
                  8w  g   K5   T P                  4        R#   \        P                   d   pTP                  ^ ,          p Rp?LWRp?ii ; i)z`Called by IOLoop periodically to ask libcurl to process any
events it may have forgotten about.
N)ri   Ú
socket_allr   rP   r°   r±   r²   )r0   r´   rµ   r¶   s   &   r!   rv   Ú)CurlAsyncHTTPClient._handle_force_timeout?  sc   € ð ð Ø#'§;¡;×#9Ñ#9Ó#;Ñ �ð ”f×1Ñ1Ö1ØØ×%Ñ%Ö'øô	 —<‘<ô  Ø—f‘f˜Q•i•ûð ús   ƒA	 Á	A;ÁA6Á6A;c                ó   <€ V ^8„  d   QhRR/# rC   rD   )r   r    s   "€r!   r"   rc   L  s   ø€ ÷ ñ ¨$ñ r$   c                óæ   €  V P                   P                  4       w  rpV F  pV P                  V4       K  	  V F  w  rEpV P                  WEV4       K  	  V^ 8X  g   K_   T P                  4        R# )zRProcess any requests that were completed by the last
call to multi.socket_action.
N)ri   Ú	info_readÚ_finishr‹   )r0   Únum_qÚok_listÚerr_listr   ÚerrnumÚerrmsgs   &      r!   r²   Ú,CurlAsyncHTTPClient._finish_pending_requestsL  sg   € ð Ø'+§{¡{×'<Ñ'<Ó'>Ñ$ˆE˜HÛ�Ø—‘˜TÖ"ñ  ã(0Ñ$�˜fØ—‘˜T¨6Ö2ñ )1à˜ŽzØØ×ÑÖr$   c                ó   <€ V ^8„  d   QhRR/# rC   rD   )r   r    s   "€r!   r"   rc   Z  s   ø€ ÷ *ñ * ñ *r$   c                ó$  €  ^ pV P                   '       Ed   V P                  '       Ed   V^,          pV P                   P                  4       pV P                  P                  4       w  r4pR\        P
                  ! 4       R\        4       RRRRRVRVR	VR
\        P                  ! 4       RV P                  P                  4       P                  4       /	Vn
         V P                  VVVP                  R,          VP                  R,          4       V P                  P                  V4       EK(  V'       d   EK6  R#   \         dL   pTP                  4        T P                   P!                  T4       T! \#        TRTR7      4        Rp?EK†  Rp?ii ; i)TÚheadersÚbufferÚstreaming_bufferNr-   Fr‡   r   Úqueue_start_timeÚcurl_start_timeÚcurl_start_ioloop_timeéW  )r‡   ÚcoderP   )rq   rr   ÚpoprL   r   ÚHTTPHeadersr   rŠ   r'   ÚcurrentÚinfoÚ_curl_setup_requestri   ry   Ú	ExceptionÚresetr=   r   )r0   Ústartedr   r‡   r   rÑ   r¶   s   &      r!   r‹   Ú"CurlAsyncHTTPClient._process_queueZ  s@  € ØØˆGØ—/—/‘/ d§n§n¡nØ˜1•�Ø—‘×*Ñ*Ó,�Ø8<¿¹×8NÑ8NÓ8PÑ5�Ð$4ð œx×3Ò3Ó5Øœg›iØ&¨Ø$ eØ˜wØ Ø&Ð(8Ø%¤t§y¢y£{Ø,¨d¯l©l×.BÑ.BÓ.D×.IÑ.IÓ.Kð
�”	ð1Ø×,Ñ,ØØØŸ	™	 (Õ+ØŸ	™	 )Õ,ô	ð& —K‘K×*Ñ*¨4×0ç’7Ùøô! !ô Oð —J‘J”LØ—O‘O×*Ñ*¨4Ô0Ùœ\°'ÀÈ1ÔM×NÓNûðOús   Ã6D9 Ä9FÅ?F
Æ
Fc                ód   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[,          RR/# )r   r   Ú
curl_errorÚcurl_messager   N)r   r   r   r7   rb   )r   r    s   "€r!   r"   rc   †  sE   ø€ ÷ C%ñ C%á�k‰kðC%ñ ™S•MðC%ñ ™s•mð	C%ð
 
ñC%r$   c                ó(  € VP                   pR Vn         V P                  P                  V4       VR,          pVR,          pVe(   T;'       g    VP                  p VP	                  4        VR,          pV'       dU   Vf   Q hV'       d   RV P                  3,          p\        W#4      pVf   Q hVP                  p	R p
VP                  4        R pMQR pVP                  \        P                  4      p	VP                  \        P                  4      p
VP!                  ^ 4       \#        VR,          VR,          ,
          VP                  \        P$                  4      VP                  \        P&                  4      VP                  \        P(                  4      VP                  \        P*                  4      VP                  \        P,                  4      VP                  \        P.                  4      VP                  \        P0                  4      R7      p VR	,          ! \3        VR,          V	VR
,          VV
VVR
,          P5                  RR 4      V P6                  P9                  4       VR,          ,
          VR,          VR7
      4       VP;                  4        V P<                  P?                  V4       R #   \
         d'    T P                  TR,          P                  4        EL{i ; i  \
         d    T P                  TR	,          4        L†i ; i)NrÐ   r-   r‡   rÏ   z'body exceeded max_body_size of %d bytesrÓ   rÑ   )ÚqueueÚ
namelookupÚconnectÚ
appconnectÚpretransferÚstarttransferr,   Úredirectr   rÎ   zX-Http-ReasonrÒ   )
r‡   rÕ   rÎ   rÏ   Úeffective_urlrP   ÚreasonÚrequest_timeÚ
start_timeÚ	time_info) rÙ   ri   rz   r-   rT   rÛ   Úhandle_callback_exceptionÚstreaming_callbackr:   Ú	CurlErrorrÕ   r„   Úgetinfor   Ú	HTTP_CODEÚEFFECTIVE_URLÚseekÚdictÚNAMELOOKUP_TIMEÚCONNECT_TIMEÚAPPCONNECT_TIMEÚPRETRANSFER_TIMEÚSTARTTRANSFER_TIMEÚ
TOTAL_TIMEÚREDIRECT_TIMEr   Úgetr'   rŠ   rÜ   rq   r=   )r0   r   rà   rá   rÙ   rÐ   r-   rÏ   rP   rÕ   rê   rî   s   &&&&        r!   rÅ   ÚCurlAsyncHTTPClient._finish†  s…  € ð �y‰yˆØˆŒ	Ø�‰×!Ñ! $Ô'ØÐ 2Õ3ÐØÐ.Õ/ˆØÒ'Ø+×NÐNÐ/?×/NÑ/NˆNðSØ ×'Ñ'Ô)ð �h•ˆßØÒ+Ð+Ð+ßØHØ×&Ñ&ðLõ  �ô ˜jÓ7ˆEØÒ$Ð$Ð$Ø—:‘:ˆDØ ˆMØ�L‰LŒNØ‰FàˆEØ—<‘<¤× 0Ñ 0Ó1ˆDØ ŸL™L¬×)=Ñ)=Ó>ˆMØ�K‰K˜ŒNô ØÐ/Õ0°4Ð8JÕ3KÕKØ—|‘|¤F×$:Ñ$:Ó;Ø—L‘L¤×!4Ñ!4Ó5Ø—|‘|¤F×$:Ñ$:Ó;ØŸ™¤V×%<Ñ%<Ó=ØŸ,™,¤v×'@Ñ'@ÓAØ—,‘,œv×0Ñ0Ó1Ø—\‘\¤&×"6Ñ"6Ó7ô	
ˆ	ð	=Ø�ÖÜØ  �OØØ  �OØ!Ø"/ØØ 	�?×.Ñ.¨ÀÓEØ!%§¡×!2Ñ!2Ó!4°tÐ<TÕ7UÕ!UØ#Ð$5Õ6Ø'ôôð  	�
‰
ŒØ�‰×Ñ˜tÖ$øôe ô SØ×.Ñ.¨t°I­×/QÑ/Q×RðSûô^ ô 	=Ø×*Ñ*¨4°
Õ+;Ö<ð	=ús%   ÁJ7 ÈA4K+ Ê7-K(Ë'K(Ë+#LÌLc                ó$   <€ V ^8„  d   QhRS[ RR/# )r   r   r   N)r   )r   r    s   "€r!   r"   rc   Ë  s   ø€ ÷ Kñ K±#ð K¸$ñ Kr$   c                ó8   € \         P                  ! R VRR7       R# )zException in callback %rT)Úexc_infoN)r   rP   )r0   r   s   &&r!   rï   Ú-CurlAsyncHTTPClient.handle_callback_exceptionË  s   € Ü�ŠÐ0°(ÀT×Jr$   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r   r   ©r   r   )r   r    s   "€r!   r"   rc   Î  s   ø€ ÷ ñ ™fŸk™kñ r$   c                ó,   € \         P                  ! 4       # r�   r  rH   s   &r!   ro   Ú CurlAsyncHTTPClient._curl_createÎ  s   € Ü�{Š{‹}Ðr$   c          
      ó^   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[P
                  RR/# )r   r   r‡   rÏ   rÎ   r   N)r   r   r   r   r   r×   )r   r    s   "€r!   r"   rc   Ñ  sN   ø€ ÷ n0ñ n0á�k‰kðn0ñ ðn0ñ ð	n0ñ
 ×%Ñ%ðn0ð 
ñn0r$   c           	     ó  a aaa€ \         P                  \        P                  4      '       dK   SP	                  \
        P                  ^4       SP	                  \
        P                  S P                  4       \        \
        R4      '       d‡   SP	                  \
        P                  \
        P                  \
        P                  ,          4       SP	                  \
        P                  \
        P                  \
        P                  ,          4       SP	                  \
        P                  \        VP                   4      4       RVP"                  9  d   RVP"                  R&   RVP"                  9  d   RVP"                  R&   VP"                  P%                  4        UUu. uF@  w  rVR\        V4      P'                  R4      \        V4      P'                  R4      3,          NKB  	  pppV F0  p\(        P+                  V4      '       g   K   \-        RV,          4      h	  SP	                  \
        P.                  V4       SP	                  \
        P0                  \2        P4                  ! S P6                  WBP8                  4      4       VP:                  '       d4   \=        S SVP:                  4      p	V	SP>                  R	&   V	P@                  p
MR
 VVV 3R llp
SP	                  \
        PB                  V
4       SP	                  \
        PD                  VPF                  4       SP	                  \
        PH                  VPJ                  4       VPL                  f   Q hSP	                  \
        PN                  \Q        RVPL                  ,          4      4       VPR                  f   Q hSP	                  \
        PT                  \Q        RVPR                  ,          4      4       VPV                  '       d5   SP	                  \
        PX                  \        VPV                  4      4       M SP	                  \
        PX                  R4       VPZ                  '       d+   SP	                  \
        P\                  VPZ                  4       VP^                  '       d"   SP	                  \
        P`                  R4       M SP	                  \
        P`                  R4       VPb                  '       Ed   VPd                  '       Edl   SP	                  \
        Pf                  VPb                  4       SP	                  \
        Ph                  VPd                  4       VPj                  '       d\   VPl                  f   Q h\n        Pp                  ! VPj                  VPl                  4      pSP	                  \
        Pr                  V4       VPt                  e   VPt                  R8X  d0   SP	                  \
        Pv                  \
        Px                  4       M›VPt                  R8X  d0   SP	                  \
        Pv                  \
        Pz                  4       M[\-        RVPt                  ,          4      h SP}                  \
        Pf                  4       SP}                  \
        Pr                  4       VP€                  '       dB   SP	                  \
        P‚                  ^4       SP	                  \
        P„                  ^4       M@SP	                  \
        P‚                  ^ 4       SP	                  \
        P„                  ^ 4       VP†                  e,   SP	                  \
        Pˆ                  VP†                  4       M VPŠ                  RJ d0   SP	                  \
        PŒ                  \
        PŽ                  4       M.SP	                  \
        PŒ                  \
        P�                  4       R\
        P’                  R\
        P”                  R\
        P–                  R\
        P˜                  /p0 R%mpVP›                  4        F  pSP	                  VR4       K  	  VPœ                  V9   dC   SP}                  \
        Pž                  4       SP	                  WÂPœ                  ,          R4       MjVP                   '       g   VPœ                  V9   d,   SP	                  \
        Pž                  VPœ                  4       M\£        RVPœ                  ,           4      hVPœ                  R&9   pVP¤                  RJpVP                   '       gI   V'       d	   V'       d   V'       d1   V'       g)   \-        RV'       d   RMR: RVPœ                  : R24      hV'       g
   V'       EdE   VPœ                  R8X  d   \-        R4      h\§        \©        VP¤                  ;'       g    R4      4      oR VV3R  llpSP	                  \
        Pª                  SP¬                  4       SP	                  \
        P®                  V4       VPœ                  R8X  d?   SP	                  \
        P°                  \³        VP¤                  ;'       g    R4      4       M]SP	                  \
        P–                  R4       SP	                  \
        P´                  \³        VP¤                  ;'       g    R4      4       VP¶                  Ee=   VP¸                  f   Q hVPº                  e   VPº                  R8X  d0   SP	                  \
        P¼                  \
        Px                  4       M\VPº                  R8X  d0   SP	                  \
        P¼                  \
        Pz                  4       M\-        R!VPº                  ,          4      h\n        Pp                  ! VP¶                  VP¸                  4      pSP	                  \
        P¾                  V4       \         PÁ                  R"VPœ                  VP                   VP¶                  4       MJSP}                  \
        P¾                  4       \         PÁ                  R#VPœ                  VP                   4       VPÂ                  e+   SP	                  \
        PÄ                  VPÂ                  4       VPÆ                  e+   SP	                  \
        PÈ                  VPÆ                  4       VPÊ                  e   \-        R$4      h\Ì        PÎ                  ! 4       ^8”  d!   SP	                  \
        PÐ                  ^4       VPÒ                  e   VPÓ                  S4       R# R# u uppi   \~         d%    SP	                  \
        Pf                  R4        EL i ; i)'é   Ú	PROTOCOLSÚExpectÚ ÚPragmas   %s: %sÚASCIIz	ISO8859-1z+Illegal characters in header (CR or LF): %rrÐ   c                ó0   € V ^8„  d   QhR\         R\        /# r4   r6   )r   s   "r!   r"   Ú=CurlAsyncHTTPClient._curl_setup_request.<locals>.__annotate__  s   € ÷ +ñ +¤eð +´ñ +r$   c                 ó¦   <€ SP                  4       \        V 4      ,           SP                  8”  d   R SP                  R&   ^ # SP	                  V 4      # )Tr-   )Útellr9   r:   rÙ   r@   )r5   rÏ   r   r0   s   &€€€r!   Úwrite_functionÚ?CurlAsyncHTTPClient._curl_setup_request.<locals>.write_function  sC   ø€ Ø—;‘;“=¤3 u£:Õ-°×0BÑ0BÔBØ26�D—I‘IÐ.Ñ/ñ Ø—|‘| EÓ*Ð*r$   Nre   z Mozilla/5.0 (compatible; pycurl)zgzip,deflateÚbasicÚdigestzUnsupported proxy_auth_mode %sFÚGETÚPOSTÚPUTÚHEADTzunknown method z
Body must znot zbe None for method z+ (unless allow_nonstandard_methods is true)z!Body must be None for GET requestc                ó(   € V ^8„  d   QhR\         RR/# )r   Úcmdr   Nr¥   )r   s   "r!   r"   r  ˆ  s   € ÷ +ñ +œ3ð + 4ñ +r$   c                 óP   <€ V SP                   8X  d   SP                  ^ 4       R# R# r‰   )ÚIOCMD_RESTARTREADrõ   )r  r   Úrequest_buffers   &€€r!   ÚioctlÚ6CurlAsyncHTTPClient._curl_setup_request.<locals>.ioctlˆ  s$   ø€ Ø˜$×0Ñ0Ô0Ø"×'Ñ'¨Ö*ñ 1r$   zUnsupported auth_mode %sz%s %s (username: %r)ú%s %sz,ssl_options not supported in curl_httpclient>   ÚPATCHÚDELETEÚOPTIONS)r  r$  r  )jÚcurl_logÚisEnabledForÚloggingÚDEBUGrj   r   ÚVERBOSEÚDEBUGFUNCTIONÚ_curl_debugÚhasattrr  Ú
PROTO_HTTPÚPROTO_HTTPSÚREDIR_PROTOCOLSÚURLr   ÚurlrÎ   Úget_allÚencodeÚCR_OR_LF_REÚsearchÚ
ValueErrorÚ
HTTPHEADERÚHEADERFUNCTIONÚ	functoolsÚpartialÚ_curl_header_callbackÚheader_callbackrð   r   rÙ   r@   ÚWRITEFUNCTIONÚFOLLOWLOCATIONÚfollow_redirectsÚ	MAXREDIRSÚmax_redirectsÚconnect_timeoutÚCONNECTTIMEOUT_MSr7   Úrequest_timeoutÚ
TIMEOUT_MSÚ
user_agentÚ	USERAGENTÚnetwork_interfaceÚ	INTERFACEÚdecompress_responseÚENCODINGÚ
proxy_hostÚ
proxy_portÚPROXYÚ	PROXYPORTÚproxy_usernameÚproxy_passwordr   Úencode_username_passwordÚPROXYUSERPWDÚproxy_auth_modeÚ	PROXYAUTHÚHTTPAUTH_BASICÚHTTPAUTH_DIGESTÚunsetoptÚ	TypeErrorÚvalidate_certÚSSL_VERIFYPEERÚSSL_VERIFYHOSTÚca_certsÚCAINFOÚ
allow_ipv6Ú	IPRESOLVEÚIPRESOLVE_V4ÚIPRESOLVE_WHATEVERÚHTTPGETr  ÚUPLOADÚNOBODYÚvaluesÚmethodÚCUSTOMREQUESTÚallow_nonstandard_methodsÚKeyErrorÚbodyr   r   ÚREADFUNCTIONÚreadÚIOCTLFUNCTIONÚPOSTFIELDSIZEr9   Ú
INFILESIZEÚauth_usernameÚauth_passwordÚ	auth_modeÚHTTPAUTHÚUSERPWDÚdebugÚclient_certÚSSLCERTÚ
client_keyÚSSLKEYÚssl_optionsÚ	threadingÚactive_countÚNOSIGNALÚprepare_curl_callback)r0   r   r‡   rÏ   rÎ   ÚkÚvÚencoded_headersÚlinerÐ   r  ÚcredentialsÚcurl_optionsÚcustom_methodsÚoÚbody_expectedÚbody_presentr!  Úuserpwdr   s   ff&f&              @r!   rÚ   Ú'CurlAsyncHTTPClient._curl_setup_requestÑ  sX	  û€ ô × Ñ ¤§¡×/Ò/Ø�K‰KœŸ™¨Ô*Ø�K‰Kœ×,Ñ,¨d×.>Ñ.>Ô?ÜÜ�K÷
ò 
ð �K‰Kœ×(Ñ(¬&×*;Ñ*;¼f×>PÑ>PÕ*PÔQØ�K‰Kœ×.Ñ.´×0AÑ0AÄF×DVÑDVÕ0VÔWà�‰”F—J‘J¤
¨7¯;©;Ó 7Ô8ð ˜7Ÿ?™?Ô*Ø(*ˆG�O‰O˜HÑ%ð ˜7Ÿ?™?Ô*Ø(*ˆG�O‰O˜HÑ%ð
  Ÿ™×/Ñ/Ô1ô
ñ 2‘�ð Ü˜!‹}×#Ñ# GÓ,¬j¸«m×.BÑ.BÀ;Ó.OÐP÷Qð Qá1ð 	ñ 
ó
 $ˆDÜ×!Ñ! $×'Ô'Ü Ð!NÐQUÕ!UÓVÐVñ $ð 	�‰”F×%Ñ% Ô7à�‰Ü×!Ñ!Ü×ÒØ×*Ñ*¨G×5LÑ5Lóô	
ð ×%×%Ð%ä3Ø�d˜G×6Ñ6ó Ðð -=ˆD�I‰IÐ(Ñ)Ø-×3Ñ3‰N÷+ò +ð 	�‰”F×(Ñ(¨.Ô9Ø�‰”F×)Ñ)¨7×+CÑ+CÔDØ�‰”F×$Ñ$ g×&;Ñ&;Ô<Ø×&Ñ&Ò2Ð2Ð2Ø�‰”F×,Ñ,¬c°$¸×9PÑ9PÕ2PÓ.QÔRØ×&Ñ&Ò2Ð2Ð2Ø�‰”F×%Ñ%¤s¨4°'×2IÑ2IÕ+IÓ'JÔKØ××ÐØ�K‰Kœ×(Ñ(¬*°W×5GÑ5GÓ*HÕIà�K‰Kœ×(Ñ(Ð*LÔMØ×$×$Ð$Ø�K‰Kœ×(Ñ(¨'×*CÑ*CÔDØ×&×&Ð&Ø�K‰KœŸ™¨Õ8à�K‰KœŸ™¨Ô.Ø××Ñ '×"4×"4Ñ"4Ø�K‰KœŸ™ g×&8Ñ&8Ô9Ø�K‰Kœ×(Ñ(¨'×*<Ñ*<Ô=Ø×%×%Ð%Ø×-Ñ-Ò9Ð9Ð9Ü&×?Ò?Ø×*Ñ*¨G×,BÑ,Bó�ð —‘œF×/Ñ/°Ô=à×&Ñ&Ò.°'×2IÑ2IÈWÔ2TØ—‘œF×,Ñ,¬f×.CÑ.CÕDØ×(Ñ(¨HÔ4Ø—‘œF×,Ñ,¬f×.DÑ.DÕEä Ø4°w×7NÑ7NÕNóð ð.Ø—‘œfŸl™lÔ+ð �M‰Mœ&×-Ñ-Ô.Ø× × Ð Ø�K‰Kœ×-Ñ-¨qÔ1Ø�K‰Kœ×-Ñ-¨qÕ1à�K‰Kœ×-Ñ-¨qÔ1Ø�K‰Kœ×-Ñ-¨qÔ1Ø×ÑÒ'Ø�K‰KœŸ™ w×'7Ñ'7Õ8ð à×Ñ Ó&ð �K‰Kœ×(Ñ(¬&×*=Ñ*=Õ>à�K‰Kœ×(Ñ(¬&×*CÑ*CÔDð
 ”6—>‘>Ø”F—K‘KØ”6—=‘=Ø”F—M‘Mð	
ˆò 8ˆØ×$Ñ$Ö&ˆAØ�K‰K˜˜5Ö!ñ 'à�>‰>˜\Ô)Ø�M‰Mœ&×.Ñ.Ô/Ø�K‰K˜§^¡^Õ4°dÕ;Ø×.×.Ð.°'·.±.ÀNÔ2RØ�K‰Kœ×,Ñ,¨g¯n©nÕ=äÐ,¨w¯~©~Õ=Ó>Ð>àŸ™Ð*BÑBˆØ—|‘|¨4Ð/ˆØ×0×0Ð0÷ §lß§]å ÷ "/‘v°BÒ6¸¿¼ðHóð ÷ ŸL˜LØ�~‰~ Ô&ô !Ð!DÓEÐEÜ$¤T¨'¯,©,×*<Ð*<¸"Ó%=Ó>ˆN÷+ñ +ð �K‰Kœ×+Ñ+¨^×-@Ñ-@ÔAØ�K‰Kœ×,Ñ,¨eÔ4Ø�~‰~ Ô'Ø—‘œF×0Ñ0´#°g·l±l×6HÐ6HÀbÓ2IÕJà—‘œFŸM™M¨4Ô0Ø—‘œF×-Ñ-¬s°7·<±<×3EÐ3EÀ2Ó/FÔGà× Ñ Ó,Ø×(Ñ(Ò4Ð4Ð4Ø× Ñ Ò(¨G×,=Ñ,=ÀÔ,HØ—‘œFŸO™O¬V×-BÑ-BÕCØ×"Ñ" hÔ.Ø—‘œFŸO™O¬V×-CÑ-CÕDä Ð!;¸g×>OÑ>OÕ!OÓPÐPä×7Ò7Ø×%Ñ% w×'<Ñ'<óˆGð �K‰KœŸ™¨Ô0Ü�N‰NØ&Ø—‘Ø—‘Ø×%Ñ%õ	ð �M‰Mœ&Ÿ.™.Ô)Ü�N‰N˜7 G§N¡N°G·K±KÔ@à×ÑÒ*Ø�K‰KœŸ™¨×(;Ñ(;Ô<à×ÑÒ)Ø�K‰KœŸ™ w×'9Ñ'9Ô:à×ÑÒ*ÜÐKÓLÐLä×!Ò!Ó# aÔ'ð �K‰KœŸ™¨Ô+Ø×(Ñ(Ò4Ø×)Ñ)¨$Ö/ñ 5ùóY
øô^ ô .Ø—‘œFŸL™L¨"×-ð.ús   Æ$AuÙ+u õ+vö
vc                óZ   <€ V ^8„  d   QhRS[ P                  RS[S[.R3,          RS[RR/# )r   rÎ   r>  NÚheader_line_bytesr   )r   r×   r   rb   r   )r   r    s   "€r!   r"   rc   Á  sD   ø€ ÷ (ñ (á×%Ñ%ð(ñ "¡3 %¨ +Õ.ð(ñ !ð	(ð
 
ñ(r$   c                óš  € \        VP                  R 4      4      pVe   V P                  P                  W$4       VP	                  4       pVP                  R4      '       d4   VP                  4         \        P                  ! V4      w  rVpRV,          pV'       g   R# VP                  V4       R#   \        P                   d     R# i ; i)Úlatin1NzHTTP/zX-Http-Reason: %s)r   Údecoder'   rF   ÚrstripÚ
startswithÚclearr   Úparse_response_start_lineÚHTTPInputErrorÚ
parse_line)r0   rÎ   r>  r�  Úheader_lineÚ_versionÚ_coderë   s   &&&&    r!   r=  Ú)CurlAsyncHTTPClient._curl_header_callbackÁ  sµ   € ô !Ð!2×!9Ñ!9¸(Ó!CÓDˆØÒ&Ø�L‰L×%Ñ% oÔCð "×(Ñ(Ó*ˆØ×!Ñ! '×*Ò*Ø�M‰MŒOðÜ,4×,NÒ,NØó-Ñ)� &ð 2°FÕ:�÷ ÙØ×Ñ˜;Ö'øô	 ×*Ñ*ô Úðús   Á2"B1 Â1C
Ã	C
c                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r   Ú
debug_typeÚ	debug_msgr   N©r7   rb   )r   r    s   "€r!   r"   rc   Ú  s'   ø€ ÷ 
Hñ 
H¡cð 
H±cð 
H¸dñ 
Hr$   c                óV  € RpV^ 8X  d2   \        V4      p\        P                  RVP                  4       4       R# VR9   dB   \        V4      pVP	                  4        F   p\        P                  RW1,          V4       K"  	  R# V^8X  d    \        P                  RW1,          V4       R# R# )ÚIz%sr#  z%s %rN)r¢  Ú<Ú>r£  r¤  )r
  r   )r   r'  rx  ÚstripÚ
splitlines)r0   rž  rŸ  Údebug_typesr…  s   &&&  r!   r-  ÚCurlAsyncHTTPClient._curl_debugÚ  s„   € Ø/ˆØ˜Œ?Ü" 9Ó-ˆIÜ�N‰N˜4 §¡Ó!2Ö3Ø˜6Ô!Ü" 9Ó-ˆIØ!×,Ñ,Ö.�Ü—‘˜w¨Õ(?ÀÖFó /à˜1Œ_Ü�N‰N˜7 KÕ$;¸YÖGñ r$   )rp   rs   rw   rq   ri   rr   rt   r:   )é
   Ni  @)NN)rV   rW   rX   rY   rg   r„   rŒ   rm   rO   rŸ   r¨   rv   r²   r‹   rÅ   rï   ro   rÚ   r=  r-  r[   r\   Ú__classcell__)r}   r    s   @@r!   r   r   ®   s·   ù‡ € ÷$5õ $5÷Ló ÷ð ÷)ð )÷:
ð 
÷(ð (÷$+ð +÷:(ð (÷ð ÷*ð *÷XC%ò C%÷JKð K÷ð ÷n0ð n0÷`(ð (÷2
H÷ 
Hð 
Hr$   r   c                   ó2   a € ] tR tRt o V 3R lR ltRtV tR# )rñ   iç  c                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r   ÚerrnoÚmessager   Nr   )r   r    s   "€r!   r"   ÚCurlError.__annotate__è  s"   ø€ ÷ ñ ™cð ©Cð °Dñ r$   c                óB   € \         P                  ! V R V4       Wn        R# )rÔ   N)r	   r1   r­  )r0   r­  r®  s   &&&r!   r1   ÚCurlError.__init__è  s   € Ü×Ò˜4  gÔ.ØŽ
r$   )r­  N)rV   rW   rX   rY   r1   r[   r\   r]   s   @r!   rñ   rñ   ç  s   ø‡ € ÷ö r$   rñ   Ú__main__))rZ   r(   r;  r)  r   Úrer~  rŠ   Úior   Útornador   r   Útornado.escaper   r   Útornado.httpclientr   r   r	   r
   r   Útornado.logr   Útypingr   r   r   r   ÚTYPE_CHECKINGr   r   Ú	getLoggerr'  Úcompiler6  r   r   rñ   rV   Ú	configurerD   r$   r!   Ú<module>r¾     s¾   ðñ  <ã Û Û Û Û 	Û Û Ý å Ý ç +÷õ õ  ç 0Ó 0Û à	××Ðß#à×ÒÐ6Ó7€à�jŠj˜Ó"€÷xñ xôvvH˜/ô vHôr�	ô ð ˆzÔØ×ÒÐ1Ô2Ù†Fñ r$   