+
    -IëjØ¿  ã                   ó.  € ^ RI t ^ RIt^ RIt^ RIH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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HtHt ^ RIHt ^ RIHtHtHtHtHt ^ RI H!t! ^ RI"H#t# ^ R	I$H%t% ^ R
I&H't'H(t( ^ RIH)t) ^ RI*H+t+H,t,H-t-H.t. ^ RI/H0t0H1t1 ^ RI2H3t3H4t4H5t5 ^ RI6H7t7H8t8  ! R R]44      t9 ! R R]44      t: ! R R]44      t; ! R R]44      t< ! R R]44      t= ! R R]44      t> ! R R]44      t? ! R R]44      t@ ! R  R!]44      tA ! R" R#]44      tB ! R$ R%]44      tC ! R& R']44      tD ! R( R)]44      tE ! R* R+]44      tF ! R, R-]44      tG ! R. R/]44      tHRStIRTtJ]P–                  ! RR07      ]I3R1 R2 ll4       tLRTtM] Pœ                  ! R34      tO]P–                  ! RR07      R4 R5 l4       tP ! R6 R7]44      tQ ! R8 R9]44      tR ! R: R;]44      tS ! R< R=]+4      tT ! R> R?]Pª                  4      tV ! R@ RA]Pª                  4      tW ! RB RC]Pª                  4      tX ! RD RE]Pª                  4      tY ! RF RG]Pª                  4      tZ ! RH RI]Pª                  4      t[RRt\ ! RJ RK]44      t] ! RL RM]44      t^ ! RN RO]44      t_]0 ! RP RQ]+4      4       t`R# )Ué    N)Úclosing)ÚBytesIO)Úutf8Ú
native_strÚ
to_unicode)Úgen)ÚHTTPRequestÚHTTPResponseÚ_RequestProxyÚ	HTTPErrorÚ
HTTPClient)Ú
HTTPServer)ÚIOLoop)ÚIOStream)Úgen_logÚapp_log)Únetutil)ÚAsyncHTTPTestCaseÚbind_unused_portÚgen_testÚ	ExpectLog)Úabstract_base_testÚignore_deprecation)ÚApplicationÚRequestHandlerÚurl)Úformat_timestampÚHTTPHeadersc                   ó&   a € ] tR t^)t o R tRtV tR# )ÚHelloWorldHandlerc                ó~   € V P                  R R4      pV P                  RR4       V P                  RV,          4       R# )ÚnameÚworldúContent-Typeú
text/plainz	Hello %s!N)Úget_argumentÚ
set_headerÚfinish)Úselfr"   s   & Ú>/usr/lib/python3/dist-packages/tornado/test/httpclient_test.pyÚgetÚHelloWorldHandler.get*   s3   € Ø× Ñ  ¨Ó1ˆØ�‰˜¨Ô5Ø�‰�K $Õ&Ö'ó    © N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r+   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r*   r    r    )   s   ø‡ € ÷(ð (r-   r    c                   ó&   a € ] tR t^0t o R tRtV tR# )ÚPostHandlerc                ót   € V P                  R V P                  R4      : RV P                  R4      : 24       R# )zPost arg1: Úarg1z, arg2: Úarg2N)r(   r&   ©r)   s   &r*   ÚpostÚPostHandler.post1   s/   € Ø�Šà× Ñ  Ö(¨$×*;Ñ*;¸FÕ*CðEö	
r-   r.   N©r0   r1   r2   r3   r>   r4   r5   r6   s   @r*   r9   r9   0   ó   ø‡ € ÷
ð 
r-   r9   c                   ó&   a € ] tR t^8t o R tRtV tR# )Ú
PutHandlerc                ór   € V P                  R 4       V P                  V P                  P                  4       R# )z
Put body: N©ÚwriteÚrequestÚbodyr=   s   &r*   ÚputÚPutHandler.put9   s$   € Ø�
‰
�<Ô Ø�
‰
�4—<‘<×$Ñ$Ö%r-   r.   N)r0   r1   r2   r3   rI   r4   r5   r6   s   @r*   rC   rC   8   ó   ø‡ € ÷&ð &r-   rC   c                   ó&   a € ] tR t^>t o R tRtV tR# )ÚRedirectHandlerc           	     óž   € V P                  R 4       V P                  V P                  R4      \        V P                  RR4      4      R7       R# )zredirects can have bodies toor   ÚstatusÚ302)rO   N)rF   Úredirectr&   Úintr=   s   &r*   ÚprepareÚRedirectHandler.prepare?   sB   € Ø�
‰
Ð2Ô3Ø�‰Ø×Ñ˜eÓ$¬S°×1BÑ1BÀ8ÈUÓ1SÓ-Tð 	ö 	
r-   r.   N©r0   r1   r2   r3   rS   r4   r5   r6   s   @r*   rM   rM   >   rA   r-   rM   c                   ó&   a € ] tR t^Ft o R tRtV tR# )ÚRedirectWithoutLocationHandlerc                óH   € V P                  R 4       V P                  4        R# )é-  N)Ú
set_statusr(   r=   s   &r*   rS   Ú&RedirectWithoutLocationHandler.prepareG   s   € à�‰˜ÔØ�‰Žr-   r.   NrU   r6   s   @r*   rW   rW   F   s   ø‡ € ÷ð r-   rW   c                   óD   a € ] tR t^Mt o ]P
                  R 4       tRtV tR# )ÚChunkHandlerc              #  ó¢   "  € V P                  R 4       V P                  4        \        P                  ! R4      x € V P                  R4       R# 5i)Úasdfç{®Gáz„?ÚqwerN)rF   Úflushr   Úsleepr=   s   &r*   r+   ÚChunkHandler.getN   s4   é € à�
‰
�6ÔØ�
‰
Œä�iŠi˜‹oÒØ�
‰
�6Öùó   ‚AAr.   N)	r0   r1   r2   r3   r   Ú	coroutiner+   r4   r5   r6   s   @r*   r]   r]   M   s   ø‡ € Ø‡]�]ñó ör-   r]   c                   ó&   a € ] tR t^Wt o R tRtV tR# )ÚAuthHandlerc                ó^   € V P                  V P                  P                  R ,          4       R# )ÚAuthorizationN)r(   rG   Úheadersr=   s   &r*   r+   ÚAuthHandler.getX   s   € Ø�‰�D—L‘L×(Ñ(¨Õ9Ö:r-   r.   Nr/   r6   s   @r*   rh   rh   W   s   ø‡ € ÷;ð ;r-   rh   c                   ó&   a € ] tR t^\t o R tRtV tR# )ÚCountdownHandlerc                ó    € \        V4      pV^ 8”  d+   V P                  V P                  RV^,
          4      4       R# V P                  R4       R# )r   Ú	countdownÚZeroN)rR   rQ   Úreverse_urlrF   )r)   Úcounts   &&r*   r+   ÚCountdownHandler.get]   s;   € Ü�E“
ˆØ�1Œ9Ø�M‰M˜$×*Ñ*¨;¸À½	ÓBÖCà�J‰J�vÖr-   r.   Nr/   r6   s   @r*   rn   rn   \   s   ø‡ € ÷ð r-   rn   c                   ó&   a € ] tR t^et o R tRtV tR# )ÚEchoPostHandlerc                óP   € V P                  V P                  P                  4       R # ©NrE   r=   s   &r*   r>   ÚEchoPostHandler.postf   s   € Ø�
‰
�4—<‘<×$Ñ$Ö%r-   r.   Nr@   r6   s   @r*   rv   rv   e   s   ø‡ € ÷&ð &r-   rv   c                   ó&   a € ] tR t^jt o R tRtV tR# )ÚUserAgentHandlerc                óp   € V P                  V P                  P                  P                  R R4      4       R# )ú
User-AgentzUser agent not setN)rF   rG   rk   r+   r=   s   &r*   r+   ÚUserAgentHandler.getk   s&   € Ø�
‰
�4—<‘<×'Ñ'×+Ñ+¨LÐ:NÓOÖPr-   r.   Nr/   r6   s   @r*   r{   r{   j   s   ø‡ € ÷Qð Qr-   r{   c                   ó,   a € ] tR t^ot o R tR tRtV tR# )ÚContentLength304Handlerc                óL   € V P                  R 4       V P                  R^*4       R# )é0  úContent-LengthN)rZ   r'   r=   s   &r*   r+   ÚContentLength304Handler.getp   s   € Ø�‰˜ÔØ�‰Ð(¨"Ö-r-   c                ó   € R # rx   r.   r=   s   &r*   Ú_clear_representation_headersÚ5ContentLength304Handler._clear_representation_headerst   s   € ñ 	r-   r.   N)r0   r1   r2   r3   r+   r†   r4   r5   r6   s   @r*   r€   r€   o   s   ø‡ € ò.÷ð r-   r€   c                   ó&   a € ] tR t^zt o R tRtV tR# )ÚPatchHandlerc                óP   € V P                  V P                  P                  4       R# )z=Return the request payload - so we can check it is being keptNrE   r=   s   &r*   ÚpatchÚPatchHandler.patch{   s   € à�
‰
�4—<‘<×$Ñ$Ö%r-   r.   N)r0   r1   r2   r3   r‹   r4   r5   r6   s   @r*   r‰   r‰   z   rK   r-   r‰   c                   ól   a € ] tR t^€t o ]P
                  R,           tR t];t;t;t	;t
;t;t;ttRtV tR# )ÚAllMethodsHandlerc                ó„   € V P                   P                  f   Q hV P                  V P                   P                  4       R # rx   )rG   ÚmethodrF   r=   s   &r*   r�   ÚAllMethodsHandler.methodƒ   s.   € Ø�|‰|×"Ñ"Ò.Ð.Ð.Ø�
‰
�4—<‘<×&Ñ&Ö'r-   r.   N)ÚOTHER)r0   r1   r2   r3   r   ÚSUPPORTED_METHODSr�   r+   Úheadr>   rI   ÚdeleteÚoptionsr‹   Úotherr4   r5   r6   s   @r*   rŽ   rŽ   €   sG   ø‡ € Ø&×8Ñ8¸:ÕEÐò(ð BHÐG€CÐGˆ$ÐG�ÐG˜ÐG˜fÐG wÐG°¾r-   rŽ   c                   ó&   a € ] tR t^Št o R tRtV tR# )ÚSetHeaderHandlerc                ó¦   € \        V P                  R 4      V P                  P                  R,          4       F  w  rV P	                  W4       K  	  R# )ÚkÚvN)ÚzipÚget_argumentsrG   Ú	argumentsr'   )r)   r›   rœ   s   &  r*   r+   ÚSetHeaderHandler.get‹   s>   € ô ˜×*Ñ*¨3Ó/°·±×1GÑ1GÈÕ1LÖM‰DˆAØ�O‰O˜AÖ!ó Nr-   r.   Nr/   r6   s   @r*   r™   r™   Š   s   ø‡ € ÷"ð "r-   r™   c                   ó2   a € ] tR t^’t o V 3R lR ltRtV tR# )ÚInvalidGzipHandlerc                ó   <€ V ^8„  d   QhRR/# )é   ÚreturnNr.   )Úformatr7   s   "€r*   Ú__annotate__ÚInvalidGzipHandler.__annotate__“   s   ø€ ÷ 	ñ 	�Tñ 	r-   c                ó  € V P                  R R4       V P                  RR4       RP                  R \        R4       4       4      R,          p\        P                  ! VP                  4       ^R7      R	,           pV P                  V4       R
# )r$   r%   úContent-EncodingÚgzipÚ c              3   ó.   "  € T F  pR V R2x € K  	  R# 5i)zHello World Ú
Nr.   ©Ú.0Úis   & r*   Ú	<genexpr>Ú)InvalidGzipHandler.get.<locals>.<genexpr>š   s   é € ÐA±[°˜ a S¨Õ+³[ùs   ‚i(#  :Ni;F N)Úcompressleveló    N)r'   ÚjoinÚranger«   ÚcompressÚencoderF   )r)   ÚtextrH   s   &  r*   r+   ÚInvalidGzipHandler.get“   se   € à�‰˜¨Ô5Ø�‰Ð*¨FÔ3ð �w‰wÑA´U¸4´[ÓAÓAÀ'ÕJˆÜ�}Š}˜TŸ[™[›]¸!Ô<¸vÕEˆØ�
‰
�4Ör-   r.   Nr/   r6   s   @r*   r¢   r¢   ’   s   ø‡ € ÷	ö 	r-   r¢   c                   ó&   a € ] tR t^Ÿt o R tRtV tR# )ÚHeaderEncodingHandlerc                ó|   € V P                  V P                  P                  R ,          P                  R4      4       R# )ÚFooú	ISO8859-1N)r(   rG   rk   r¹   r=   s   &r*   r+   ÚHeaderEncodingHandler.get    s(   € Ø�‰�D—L‘L×(Ñ(¨Õ/×6Ñ6°{ÓCÖDr-   r.   Nr/   r6   s   @r*   r½   r½   Ÿ   s   ø‡ € ÷Eð Er-   r½   )Úmaxsizec                ó0   € V ^8„  d   QhR\         R\        /# )r¤   Úsizer¥   )rR   Úbytes)r¦   s   "r*   r§   r§   ´   s   € ÷ 
ñ 
”Cð 
¬Uñ 
r-   c                ód  € \         P                  ! ^	\         P                  ^\         P                  ,           4      pRR,          p\	        V \        V4      ,          4       Uu. uF  q1P                  V4      NK  	  ppVP                  VP                  4       4       RP                  V4      # u upi )zšReturns a small gzip stream that expands to ``size`` bytes.

Compressed incrementally so that building it does not itself allocate
the decompressed size.
rµ   r-   i   )
ÚzlibÚcompressobjÚDEFLATEDÚ	MAX_WBITSr·   Úlenr¸   Úappendrb   r¶   )rÄ   Ú
compressorÚblockÚ_Úpiecess   &    r*   Ú	gzip_bombrÑ   ³   s†   € ô ×!Ò! !¤T§]¡]°B¼¿¹Õ4GÓH€JØ�[Õ!€EÜ27¸ÄÀEÃ
Õ8JÔ2KÓLÑ2K¨Q×!Ñ! %Ö(Ñ2K€FÐLØ
‡M�M�*×"Ñ"Ó$Ô%Ø�8‰8�FÓÐùò Ms   Á"B-a4  y///P/gnAOKxQCD3/o///3/wTwDEYRGA7v0f////4J8AiMMCAN37P/7//8E/ARCHBQC693/8//+DfwIgDgsAdO//+P//B/8EQBwWAOje//H//w/+CYA4LADQvf/j//8f/BMAcVgAoHv/x///P/gnAOKwAED3/o///3/wTwDEYQGA7v0f////4J8AiMMCAN37P/7//8E/ARCHBQC693/8//+DfwIgDgsAdO//+P//B/8EQBwWAOje//H//w/+CYA4LADQvf/j//8f/BMAcVgAoHv/x///P/gnAOKwAED3/o///3/wTwDEYQGA7v0f////4J8AiMMCAN37P/7//8E/ARCHBQC693/8//+DfwIgDgsAdO//+P//B/8EQBwWAOje//H//w/+CYA4LADQvf/j//8f/BMAcVgAoHv/x///P/gnAOKwAED3/o///3/wTwDEYQGA7v0f////4J8AiMMCAN37P/7//8E/ARCHBQC693/8//+DfwIgDgsAdO//+P//B/8EQBwWAOje//H//w/+CYA4LADQvf/j//8f/BMAcVgAoHv/Nw==c                ó$   € V ^8„  d   QhR\         /# )r¤   r¥   )rÅ   )r¦   s   "r*   r§   r§   Ö   s   € ÷ :ñ :”Eñ :r-   c                 óD   € RP                  R \        R4       4       4      # )z¶Returns a body big enough to be delivered in several chunks.

The contents are non-repeating so that a chunk which was dropped,
duplicated or delivered out of order can be detected.
r-   c              3   ó4   "  € T F  pR V,          x € K  	  R# 5i)s   %09d
Nr.   r¯   s   & r*   r²   Úlarge_body.<locals>.<genexpr>Ü   s   é € Ð9©= a�I —M’M«=ùs   ‚i † )r¶   r·   r.   r-   r*   Ú
large_bodyrÖ   Õ   s   € ð �8‰8Ñ9¬5°¬=Ó9Ó9Ð9r-   c                   ó*   a € ] tR t^ßt o RtR tRtV tR# )ÚGzipBombHandlerz=Sends a small response that decompresses to a very large one.c                ó®   € \        V P                  R \        \        4      4      4      pV P	                  RR4       V P                  \        V4      4       R# )rÄ   rª   r«   N)rR   r&   ÚstrÚGZIP_BOMB_SIZEr'   rF   rÑ   )r)   rÄ   s   & r*   r+   ÚGzipBombHandler.getâ   s=   € Ü�4×$Ñ$ V¬S´Ó-@ÓAÓBˆà�‰Ð*¨FÔ3Ø�
‰
”9˜T“?Ö#r-   r.   N©r0   r1   r2   r3   Ú__doc__r+   r4   r5   r6   s   @r*   rØ   rØ   ß   s   ø‡ € ÙG÷$ð $r-   rØ   c                   ó*   a € ] tR t^ét o RtR tRtV tR# )ÚBrotliBombHandlera  Sends a brotli-encoded bomb that the client never asked for.

No client implementation requests brotli, but libcurl builds its decoder
from the ``Content-Encoding`` of the response without checking it against
what was requested, so ``curl_httpclient`` decodes this anyway.
c                óT   € V P                  R R4       V P                  \        4       R# )rª   ÚbrN)r'   rF   ÚBROTLI_BOMBr=   s   &r*   r+   ÚBrotliBombHandler.getñ   s   € Ø�‰Ð*¨DÔ1Ø�
‰
”;Ör-   r.   NrÝ   r6   s   @r*   rà   rà   é   s   ø‡ € ñ÷ ð  r-   rà   c                   ó&   a € ] tR t^öt o R tRtV tR# )ÚLargeBodyHandlerc                ó\   € V P                  R R4       V P                  \        4       4       R# )r$   úapplication/octet-streamN)r'   rF   rÖ   r=   s   &r*   r+   ÚLargeBodyHandler.get÷   s!   € ð 	�‰˜Ð(BÔCØ�
‰
”:“<Ö r-   r.   Nr/   r6   s   @r*   ræ   ræ   ö   s   ø‡ € ÷!ð !r-   ræ   c                   ó‚  a € ] tR tRt o RtR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t] R 4       t!R t"R  t#] R! 4       t$R" t%] R# 4       t&] R$ 4       t'] R% 4       t(] R& 4       t)] R' 4       t*R( t+R) t,R* t-R+ t.R, t/R- t0] R. 4       t1R/ t2R0t3V t4R1# )2ÚHTTPClientCommonTestCasei  Fc                óZ  € \        \        R \        4      \        R\        4      \        R\        4      \        R\
        4      \        R\        4      \        R\        4      \        R\        4      \        R\        RR	7      \        R
\        4      \        R\        4      \        R\        4      \        R\        4      \        R\        4      \        R\        4      \        R\         4      \        R\"        4      \        R\$        4      \        R\&        4      \        R\(        4      .RR7      # )ú/helloú/postz/putz	/redirectú/redirect_without_locationú/chunkú/authz/countdown/([0-9]+)rp   )r"   ú	/echopostú/user_agentú/304_with_content_lengthú/all_methodsú/patchz/set_headerú/invalid_gzipú/header-encodingú
/gzip_bombú/brotli_bombú/large_bodyT)r«   )r   r   r    r9   rC   rM   rW   r]   rh   rn   rv   r{   r€   rŽ   r‰   r™   r¢   r½   rØ   rà   ræ   r=   s   &r*   Úget_appÚ HTTPClientCommonTestCase.get_app
  sè   € Üä�HÔ/Ó0Ü�Gœ[Ó)Ü�FœJÓ'Ü�K¤Ó1ÜÐ0Ô2PÓQÜ�HœlÓ+Ü�Gœ[Ó)ÜÐ)Ô+;À+ÔNÜ�K¤Ó1Ü�MÔ#3Ó4ÜÐ.Ô0GÓHÜ�NÔ$5Ó6Ü�HœlÓ+Ü�MÔ#3Ó4Ü�OÔ%7Ó8ÜÐ&Ô(=Ó>Ü�L¤/Ó2Ü�NÔ$5Ó6Ü�MÔ#3Ó4ð'ð* ô-
ð 	
r-   c                ó¢   € R pV P                  RRVR7      pV P                  VP                  ^È4       V P                  VP                  V4       R# )s   some patch datarö   ÚPATCH©r�   rH   N©ÚfetchÚassertEqualÚcoderH   )r)   rH   Úresponses   &  r*   Útest_patch_receives_payloadÚ4HTTPClientCommonTestCase.test_patch_receives_payload$  sC   € Ø!ˆØ—:‘:˜h¨w¸T�:ÓBˆØ×Ñ˜Ÿ™¨Ô,Ø×Ñ˜Ÿ™¨Ö-r-   c                ó¢  € V P                  R 4      pV P                  VP                  ^È4       V P                  VP                  R,          R4       V P                  VP                  R4       VP
                  f   Q hV P                  \        VP
                  4      ^ 4       V P                  R4      pV P                  VP                  R4       R# )rí   r$   r%   ó   Hello world!Nz/hello?name=Bens
   Hello Ben!)r  r  r  rk   rH   Úrequest_timerR   ©r)   r  s   & r*   Útest_hello_worldÚ)HTTPClientCommonTestCase.test_hello_world*  s£   € Ø—:‘:˜hÓ'ˆØ×Ñ˜Ÿ™¨Ô,Ø×Ñ˜×)Ñ)¨.Õ9¸<ÔHØ×Ñ˜Ÿ™¨Ô8Ø×$Ñ$Ò0Ð0Ð0Ø×Ñœ˜X×2Ñ2Ó3°QÔ7à—:‘:Ð/Ó0ˆØ×Ñ˜Ÿ™¨Ö6r-   c                ó    € . pV P                  R VP                  R7      pV P                  VR.4       V P                  VP                  4       R# )rí   ©Ústreaming_callbackr	  N)r  rÌ   r  ÚassertFalserH   ©r)   Úchunksr  s   &  r*   Útest_streaming_callbackÚ0HTTPClientCommonTestCase.test_streaming_callback5  sB   € àˆØ—:‘:˜h¸6¿=¹=�:ÓIˆà×Ñ˜ /Ð!2Ô3Ø×Ñ˜Ÿ™Ö'r-   c                ó  € . pV P                  R VP                  R7      pV P                  VP                  ^È4       V P                  RP	                  V4      \        4       4       V P                  VP                  4       R# )rû   r  r-   N)r  rÌ   r  r  r¶   rÖ   r  rH   r  s   &  r*   Ú"test_streaming_callback_large_bodyÚ;HTTPClientCommonTestCase.test_streaming_callback_large_body=  s`   € ð !ˆØ—:‘:˜mÀÇÁ�:ÓNˆØ×Ñ˜Ÿ™¨Ô,Ø×Ñ˜Ÿ™ &Ó)¬:«<Ô8Ø×Ñ˜Ÿ™Ö'r-   c                óü  a€ \        4        ^ oV3R lp\        P                  ! 4         \        P                  ! 4        V P	                  RVR7      p\        P
                  ! 4       ^,          p\        P                  ! 4        V P                  VP                  ^È4       V P                  S\        4       V P                  VP                  4       V P                  VR4       R#   \        P                  ! 4        i ; i)r   c                 ó,   <€ S\        V 4      ,          oR # rx   ©rË   ©ÚchunkÚreceiveds   &€r*   r  ÚVHTTPClientCommonTestCase.test_streaming_decompression_bomb.<locals>.streaming_callbackN  ó   ø€ àœ˜E›
Õ"ŠHr-   rù   r  Né   )rÑ   ÚtracemallocÚstartÚ
reset_peakr  Úget_traced_memoryÚstopr  r  rÛ   r  rH   Ú
assertLess)r)   r  r  Úpeakr  s   &   @r*   Ú!test_streaming_decompression_bombÚ:HTTPClientCommonTestCase.test_streaming_decompression_bombF  sº   ø€ ô
 	ŒØˆõ	#ô 	×ÒÔð	Ü×"Ò"Ô$Ø—z‘z ,ÐCU�zÓVˆHÜ×0Ò0Ó2°1Õ5ˆDä×ÒÔà×Ñ˜Ÿ™¨Ô,Ø×Ñ˜¤>Ô2Ø×Ñ˜Ÿ™Ô'Ø�‰˜Ð.Ö/øô ×ÒÕús   ªAC$ Ã$C;c           	     ód  € \        \        4       \        P                  ! 4         \        P                  ! 4        V P                  \        4      ;_uu_ 4        \        \        R RR7      ;_uu_ 4        V P                  R\        ,          RR7       RRR4       RRR4       \        P                  ! 4       ^,          p\        P                  ! 4        V P                  V\        ^,          4       R#   + '       g   i     Lh; i  + '       g   i     Ls; i  \        P                  ! 4        i ; i)z.*decompressed body too largeF©Úrequiredz/gzip_bomb?size=%dT©Úraise_errorN)rÑ   ÚUNBUFFERABLE_BOMB_SIZEr"  r#  r$  ÚassertRaisesr   r   r   r  r%  r&  r'  )r)   r(  s   & r*   Ú2test_decompression_bomb_without_streaming_callbackÚKHTTPClientCommonTestCase.test_decompression_bomb_without_streaming_callback_  sÍ   € ô 	Ô(Ô)ä×ÒÔð
	Ü×"Ò"Ô$Ø×"Ñ"¤9×-Õ-¬yÜÐ8À5÷0ö 0ð —
‘
Ø(Ô+AÕAÈtð ô ÷0×-ô ×0Ò0Ó2°1Õ5ˆDä×ÒÔð 	�‰˜Ô4¸Õ9Ö:÷0÷ 0ú×-×-ûô ×ÒÕús;   ¦2D ÁDÁ3C2	ÂDÂ$D Ã2DÃ=DÄD	ÄD ÄD/c                óö  a€ V P                   '       g   V P                  R 4       ^ oV3R lp\        P                  ! 4         \        P                  ! 4         V P                  RVR7       \        P                  ! 4       ^,          p\        P                  ! 4        V P                  S\        \        4      4       V P                  VR4       R#   \         d     Lqi ; i  \        P                  ! 4        i ; i)z/client does not decompress Content-Encoding: brc                 ó,   <€ S\        V 4      ,          oR # rx   r  r  s   &€r*   r  Ú[HTTPClientCommonTestCase.test_streaming_unsolicited_brotli_bomb.<locals>.streaming_callback€  r   r-   rú   r  Nr!  )Údecompresses_brotliÚskipTestr"  r#  r$  r  r   r%  r&  ÚassertGreaterrË   rã   r'  )r)   r  r(  r  s   &  @r*   Ú&test_streaming_unsolicited_brotli_bombÚ?HTTPClientCommonTestCase.test_streaming_unsolicited_brotli_bombv  sÇ   ø€ ð ×'×'Ð'Ø�M‰MÐKÔLØˆõ	#ô 	×ÒÔð	Ü×"Ò"Ô$ðØ—
‘
˜>Ð>P�
ÔQô ×0Ò0Ó2°1Õ5ˆDä×ÒÔð 	×Ñ˜8¤S¬Ó%5Ô6Ø�‰˜Ð.Ö/øô ô Ùðûô ×ÒÕús0   ÁC! ÁC Á,C! ÃCÃC! ÃCÃC! Ã!C8c                óž   € V P                  R RRR7      pV P                  VP                  ^È4       V P                  VP                  R4       R# )rî   ÚPOSTzarg1=foo&arg2=barr   s   Post arg1: foo, arg2: barNr  r  s   & r*   Ú	test_postÚ"HTTPClientCommonTestCase.test_post”  s@   € Ø—:‘:˜g¨fÐ;N�:ÓOˆØ×Ñ˜Ÿ™¨Ô,Ø×Ñ˜Ÿ™Ð(DÖEr-   c                óü   € V P                  R 4      pV P                  VP                  R4       . pV P                  R VP                  R7      pV P                  VRR.4       V P	                  VP                  4       R# )rð   ó   asdfqwerr  ó   asdfó   qwerN)r  r  rH   rÌ   r  )r)   r  r  s   &  r*   Útest_chunkedÚ%HTTPClientCommonTestCase.test_chunked™  sf   € Ø—:‘:˜hÓ'ˆØ×Ñ˜Ÿ™¨Ô4àˆØ—:‘:˜h¸6¿=¹=�:ÓIˆØ×Ñ˜ '¨7Ð!3Ô4Ø×Ñ˜Ÿ™Ö'r-   c                ó¸  a € \        4       w  r\        V4      ;_uu_ 4        \        P                  V 3R  l4       p\        P
                  ! W4       S P                  RV,          4      pVP                  4        S P                  VP                  R4       S P                  P                  VP                  4       4       RRR4       R#   + '       g   i     R# ; i)c              3   óâ   <"  € \        V 4      pVP                  R 4      x €pRV9  d   SP                  R4       VP                  RP	                  RR4      4      x € VP                  4        R# 5i)ó   

ó   HTTP/1.úrequires HTTP/1.xs7   HTTP/1.1 200 OK
Transfer-Encoding: chunked

1
1
1
2
0

ó   
ó   
N©r   Ú
read_untilr8  rF   ÚreplaceÚclose©ÚconnÚaddressÚstreamÚrequest_datar)   s   &&  €r*   Úaccept_callbackÚDHTTPClientCommonTestCase.test_chunked_close.<locals>.accept_callback¨  sk   øé € ô " $›�Ø%+×%6Ñ%6°{Ó%CÑC�Ø \Ô1Ø—M‘MÐ"5Ô6Ø—l‘lð
÷ �GØ˜wóóò ð —‘–ùó   ƒA,A/úhttp://127.0.0.1:%d/s   12N)r   r   r   rf   r   Úadd_accept_handlerr  Úrethrowr  rH   Úio_loopÚremove_handlerÚfileno©r)   ÚsockÚportrV  Úresps   f    r*   Útest_chunked_closeÚ+HTTPClientCommonTestCase.test_chunked_close¢  s“   ø€ ô &Ó'‰
ˆÜ�T�]�]ä�]‰]ôó ðô0 ×&Ò& tÔ=Ø—:‘:Ð4°tÕ;Ó<ˆDØ�L‰LŒNØ×Ñ˜TŸY™Y¨Ô.Ø�L‰L×'Ñ'¨¯©«Ô6÷? �]�]Š]ús   ¡BCÃC	c                ób   € V P                  V P                  R RRR7      P                  R4       R# )rñ   ÚAladdinúopen sesame©Úauth_usernameÚauth_passwordó"   Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==N©r  r  rH   r=   s   &r*   Útest_basic_authÚ(HTTPClientCommonTestCase.test_basic_authÇ  s0   € à×ÑØ�J‰JØ yÀð ó ç‰dØ1ö		
r-   c           	     ód   € V P                  V P                  R RRRR7      P                  R4       R# )rñ   rf  rg  Úbasic)ri  rj  Ú	auth_moderk  Nrl  r=   s   &r*   Útest_basic_auth_explicit_modeÚ6HTTPClientCommonTestCase.test_basic_auth_explicit_modeÐ  s7   € Ø×ÑØ�J‰JØØ'Ø+Ø!ð	 ó ÷
 ‰dØ1ö	
r-   c                óì   € V P                  V P                  R RRR7      P                  R4       \        P                  ! RR4      pV P                  V P                  R VRR7      P                  R4       R	# )
rñ   Útestu   123Â£rh  s   Basic dGVzdDoxMjPCow==ÚNFDu   josÃ©u   sÉ™crÉ™ts   Basic am9zw6k6c8mZY3LJmXQ=N)r  r  rH   ÚunicodedataÚ	normalize)r)   Úusernames   & r*   Útest_basic_auth_unicodeÚ0HTTPClientCommonTestCase.test_basic_auth_unicodeÛ  sh   € à×ÑØ�J‰J�w¨fÀGˆJÓL×QÑQØ%ô	
ô ×(Ò(¨°Ó8ˆØ×ÑØ�J‰J�w¨hÀjˆJÓQ×VÑVØ)ö	
r-   c                ó  € \        \        R RR7      ;_uu_ 4        V P                  \        \        34      ;_uu_ 4        V P                  RRRRRR7       R	R	R	4       R	R	R	4       R	#   + '       g   i     L; i  + '       g   i     R	# ; i)
zuncaught exceptionFr,  rñ   rf  rg  r_   T)ri  rj  rq  r/  N)r   r   r1  Ú
ValueErrorr   r  r=   s   &r*   Útest_unsupported_auth_modeÚ3HTTPClientCommonTestCase.test_unsupported_auth_modeê  sl   € ô ”wÐ 4¸u×EÖEØ×"Ñ"¤J´	Ð#:×;Õ;Ø—
‘
ØØ"+Ø"/Ø$Ø $ð ô ÷ <÷ FÑEß;×;ú÷ F×EÐEús"   ›$A;¿A(	ÁA;Á(A8Á3A;Á;B	c                ó¬  € V P                  R RR7      pV P                  RVP                  4       V P                  VP                  R,          P                  R4      4       V P                  R 4      pV P                  ^ÈVP                  4       V P                  VP                  P                  R4      4       V P                  RVP                  4       R# )	z/countdown/2F©Úfollow_redirectsé.  ÚLocationz/countdown/1z/countdown/0s   ZeroN)r  r  r  Ú
assertTruerk   ÚendswithÚeffective_urlrH   r  s   & r*   Útest_follow_redirectÚ-HTTPClientCommonTestCase.test_follow_redirectø  s�   € Ø—:‘:˜n¸u�:ÓEˆØ×Ñ˜˜hŸm™mÔ,Ø�‰˜×(Ñ(¨Õ4×=Ñ=¸nÓMÔNà—:‘:˜nÓ-ˆØ×Ñ˜˜hŸm™mÔ,Ø�‰˜×.Ñ.×7Ñ7¸ÓGÔHØ×Ñ˜ (§-¡-Ö0r-   c                ód   € V P                  R RR7      pV P                  RVP                  4       R# )rï   Tr�  rY   N©r  r  r  r  s   & r*   Útest_redirect_without_locationÚ7HTTPClientCommonTestCase.test_redirect_without_location  s+   € Ø—:‘:Ð:ÈT�:ÓRˆð
 	×Ñ˜˜hŸm™mÖ,r-   c                óf   € V P                  R RRR7      pV P                  VP                  R4       R# )ú/redirect?url=/put&status=307ÚPUTÚhellor   ó   Put body: helloN©r  r  rH   r  s   & r*   Útest_redirect_put_with_bodyÚ4HTTPClientCommonTestCase.test_redirect_put_with_body
  s3   € Ø—:‘:Ø+°EÀð ó 
ˆð 	×Ñ˜Ÿ™Ð(:Ö;r-   c                óf   € V P                  R RRR7      pV P                  VP                  R4       R# )r�  r�  T©r�   Úallow_nonstandard_methodss
   Put body: Nr“  r  s   & r*   Útest_redirect_put_without_bodyÚ7HTTPClientCommonTestCase.test_redirect_put_without_body  s4   € à—:‘:Ø+ØØ&*ð ó 
ˆð
 	×Ñ˜Ÿ™¨Ö6r-   c                ó0  € R Fø  pRV,          pV P                  VRRR7      pV P                  RVP                  4       R Fk  pV P                  W$RR7      pVR9   d(   V P                  \        V4      VP                  4       KD  V P	                  VP                  \        V4      R.4       Km  	  V P                  VRR	7      pV P                  ^ÈVP
                  4       V P                  RVP                  4       Kú  	  R F‘  pR
pR F;  pV P                  W$RR7      pV P                  V\        VP                  4      4       K=  	  V P                  VRR	7      pV P                  ^ÈVP
                  4       V P                  RVP                  4       K“  	  R# )rY   z$/redirect?url=/all_methods&status=%dr=  r-   r   s   GETTr—  ÚHEAD©r�   z%/redirect?url=/all_methods&status=307N)rY   rƒ  i/  )ÚGETÚOPTIONSr�  ÚDELETE)rY   rƒ  )i3  i4  )rž  rŸ  r=  r�  r   )r  r  rH   r   ÚassertInr  r   )r)   rO   r   rb  r�   s   &    r*   Útest_method_after_redirectÚ3HTTPClientCommonTestCase.test_method_after_redirect  sX  € ã%ˆFØ8¸6ÕAˆCØ—:‘:˜c¨&°s�:Ó;ˆDØ×Ñ˜V T§Y¡YÔ/ó >�Ø—z‘z #ÐPT�zÓU�Ø˜ZÔ'Ø×$Ñ$¤T¨&£\°4·9±9Ö=à—M‘M $§)¡)¬d°6«l¸FÐ-CÖDñ >ð —:‘:˜c¨&�:Ó1ˆDØ×Ñ˜S $§)¡)Ô,Ø×Ñ˜S $§)¡)Ö,ñ! &ó& !ˆFØ9ˆCÛE�Ø—z‘z #ÐPT�zÓU�Ø× Ñ  ¬°D·I±IÓ)>Ö?ñ Fð —:‘:˜c¨&�:Ó1ˆDØ×Ñ˜S $§)¡)Ô,Ø×Ñ˜S $§)¡)Ö,ó !r-   c                óØ   € V P                  R 4      P                  RR4      pV P                  V4      pV P                  R\        P
                  ! R4      ,           VP                  4       R# )rñ   zhttp://zhttp://me:secret@s   Basic s	   me:secretN)Úget_urlrO  r  r  Úbase64Ú	b64encoderH   )r)   r   r  s   &  r*   Útest_credentials_in_urlÚ0HTTPClientCommonTestCase.test_credentials_in_url7  sO   € Ø�l‰l˜7Ó#×+Ñ+¨IÐ7JÓKˆØ—:‘:˜c“?ˆØ×Ñ˜¤V×%5Ò%5°lÓ%CÕCÀXÇ]Á]ÖSr-   c                óN  € R p\         P                  ! R4      pV P                  RRVRR/R7      pV P                  VP                  R,          R4       V P                  VP
                  \        V4      4       V P                  RRVRR/R7      pV P                  VP                  R,          R	4       V P                  VP
                  V4       V P                  RRVRR/R
R7      pV P                  VP                  R,          R	4       V P                  VP
                  V4       R# )ô   Ã©s   e9rò   r=  r$   zapplication/blah)r�   rH   rk   rƒ   Ú2Ú1Úfoo)r�   rH   rk   Ú
user_agentN)ÚbinasciiÚa2b_hexr  r  rk   rH   r   )r)   Úunicode_bodyÚ	byte_bodyr  s   &   r*   Útest_body_encodingÚ+HTTPClientCommonTestCase.test_body_encoding<  s*  € ØˆÜ×$Ò$ UÓ+ˆ	ð —:‘:ØØØØ#Ð%7Ð8ð	 ó 
ˆð 	×Ñ˜×)Ñ)Ð*:Õ;¸SÔAØ×Ñ˜Ÿ™¬¨\Ó(:Ô;ð —:‘:ØØØØ#Ð%7Ð8ð	 ó 
ˆð 	×Ñ˜×)Ñ)Ð*:Õ;¸SÔAØ×Ñ˜Ÿ™¨	Ô2ð —:‘:ØØØØ#Ð%7Ð8Øð ó 
ˆð 	×Ñ˜×)Ñ)Ð*:Õ;¸SÔAØ×Ñ˜Ÿ™¨	Ö2r-   c                ó~  € V P                  R 4      pV P                  \        VP                  4      \        4       V P                  \        VP
                  R,          4      \        4       V P                  \        VP                  4      \        4       V P                  \        VP                  4      \        4       R# )rí   r$   N)
r  r  ÚtyperH   rÅ   rk   rÚ   r  rR   r‡  r  s   & r*   Ú
test_typesÚ#HTTPClientCommonTestCase.test_types`  s}   € Ø—:‘:˜hÓ'ˆØ×Ñœ˜hŸm™mÓ,¬eÔ4Ø×Ñœ˜h×.Ñ.¨~Õ>Ó?ÄÔEØ×Ñœ˜hŸm™mÓ,¬cÔ2Ø×Ñœ˜h×4Ñ4Ó5´sÖ;r-   c                ó~  € V P                  R RRR/R7      pV P                  VP                  R,          R4       V P                  VP                  R4       V P                  \        VP                  4      ^"4       \        P                  ! RVP                  R7      pV P                  VP                  4       R4       R	# )
rð   FzAccept-Encodingr«   )Údecompress_responserk   rª   rA  Úr)ÚmodeÚfileobjN)
r  r  rk   ÚassertNotEqualrH   rË   r«   ÚGzipFileÚbufferÚread)r)   r  Úfs   &  r*   Ú	test_gzipÚ"HTTPClientCommonTestCase.test_gzipg  s›   € ð —:‘:Ø¨%Ð:KÈVÐ9Tð ó 
ˆð 	×Ñ˜×)Ñ)Ð*<Õ=¸vÔFØ×Ñ˜HŸM™M¨;Ô7ð 	×Ñœ˜XŸ]™]Ó+¨RÔ0Ü�MŠM˜s¨H¯O©OÔ<ˆØ×Ñ˜Ÿ™› ;Ö/r-   c                ó8  € \        \        R RR7      ;_uu_ 4         V P                  R4      pV P                  VP                  ^È4       V P                  VP
                  R,          R4       RRR4       R#   \         d     Li ; i  + '       g   i     R# ; i)z..*Malformed HTTP message.*unconsumed gzip dataFr,  r÷   :Né   Ns   Hello World 0
N)r   r   r  r  r  rH   r   r  s   & r*   Útest_invalid_gzipÚ*HTTPClientCommonTestCase.test_invalid_gzipx  s‰   € ô ÜÐEÐPU÷
ö 
ðØŸ:™: oÓ6�Ø× Ñ  §¡°Ô4Ø× Ñ  §¡¨sÕ!3Ð5GÔH÷
ñ 
øô ô Ùðú÷
÷ 
ð 
ús)   ›B�AA7Á7BÂBÂBÂBÂB	c                óò   a aaa€ . o/ o. oVV3R  lpVVV 3R lpS P                  RVVR7       S P                  \        S4      ^S4       S P                  S^ ,          R4       S P                  SRR.4       R# )c                 ó
  <€ V P                  R 4      '       d   R# V P                  R4      '       d   SP                  V 4       R# V R8w  d8   V P                  R^4      w  rVP                  4       SVP	                  4       &   R# R# )zHTTP/1.1 101úHTTP/z
Ú:N)Ú
startswithrÌ   ÚsplitÚstripÚlower)Úheader_liner›   rœ   Ú
first_linerk   s   &  €€r*   Úheader_callbackÚFHTTPClientCommonTestCase.test_header_callback.<locals>.header_callbackŠ  sm   ø€ Ø×%Ñ% n×5Ò5áØ×'Ñ'¨×0Ò0Ø×!Ñ! +Ö.Ø Ô&Ø"×(Ñ(¨¨aÓ0‘�Ø%&§W¡W£Y�˜Ÿ™›	Ó"ñ 'r-   c                 ó\   <€ SP                  SR ,          R4       SP                  V 4       R# )zcontent-typeztext/html; charset=UTF-8N)r  rÌ   )r  r  rk   r)   s   &€€€r*   r  ÚIHTTPClientCommonTestCase.test_header_callback.<locals>.streaming_callback”  s'   ø€ ð ×Ñ˜W ^Õ4Ð6PÔQØ�M‰M˜%Ö r-   rð   )rÔ  r  zHTTP/[0-9]\.[0-9] 200.*
rB  rC  N)r  r  rË   ÚassertRegex)r)   rÔ  r  r  rÓ  rk   s   f  @@@r*   Útest_header_callbackÚ-HTTPClientCommonTestCase.test_header_callback…  sz   û€ Øˆ
ØˆØˆö	/÷	!ð 	�
‰
ØØ+Ø1ð 	ô 	
ð
 	×Ñœ˜Z›¨!¨ZÔ8Ø×Ñ˜ A�Ð(FÔGØ×Ñ˜ '¨7Ð!3Ö4r-   c                óÆ   a€ \        4       oV3R  lpV P                  RVR7       SP                  4        F(  w  r#V P                  W3P	                  4       8H  W#34       K*  	  R# )c                 ó\   <€ V P                  R 4      '       d   R# SP                  V 4       R# )rÌ  N)rÎ  Ú
parse_line)Úlinerk   s   &€r*   rÔ  ÚTHTTPClientCommonTestCase.test_header_callback_to_parse_line.<locals>.header_callback«  s#   ø€ Ø�‰˜w×'Ò'áØ×Ñ˜tÖ$r-   rí   )rÔ  N)r   r  Úget_allr…  rÐ  )r)   rÔ  r›   rœ   rk   s   &   @r*   Ú"test_header_callback_to_parse_lineÚ;HTTPClientCommonTestCase.test_header_callback_to_parse_line¤  sN   ø€ ô
 “-ˆõ	%ð 	�
‰
�8¨_ˆ
Ô=Ø—O‘OÖ%‰DˆAØ�O‰O˜A§¡£™N¨Q¨FÖ3ó &r-   c              #  ó*  "  € \        R RR7      pV P                  P                  RVR7      p VP                  V P	                  R4      4      x €pV P                  VP                  R4       VP                  4        R#   TP                  4        i ; i5i)ÚTestDefaultUserAgentF)r¯  Ú
allow_ipv6T)Úforce_instanceÚdefaultsró   s   TestDefaultUserAgentN)ÚdictÚhttp_clientÚ	__class__r  r¥  r  rH   rP  )r)   rç  Úclientr  s   &   r*   Útest_configure_defaultsÚ0HTTPClientCommonTestCase.test_configure_defaultsµ  ss   é € äÐ#9ÀeÔLˆà×!Ñ!×+Ñ+¸4È(Ð+ÓSˆð	Ø#Ÿ\™\¨$¯,©,°}Ó*EÓFÑFˆHØ×Ñ˜XŸ]™]Ð,CÔDà�L‰LŽNøˆF�L‰L�Nüs   ‚+B®>A> Á,BÁ>BÂBc                óà   € R	 Fg  p\         \        3 FT  pV! 4       pWR&   V P                  RVR7      pV P                  VP                  RRVP                  : RV: RV: 24       KV  	  Ki  	  R# )
ÚMyUserAgentó   MyUserAgentr}   ró   ©rk   z	response=z, value=z, container=N)rï  rð  )rè  r   r  r  rH   )r)   ÚvalueÚ	containerrk   rb  s   &    r*   Útest_header_typesÚ*HTTPClientCommonTestCase.test_header_typesÀ  sf   € ó
 5ˆEÜ"¤KÓ0�	Ù#›+�Ø(-˜Ñ%Ø—z‘z -¸�zÓA�Ø× Ñ Ø—I‘IÙ"à—y”y£%ªð4öó	 1ó 5r-   c                ó&  a € \        4       w  r\        V4      ;_uu_ 4        \        P                  V 3R  l4       p\        P
                  ! W4        S P                  RV,          4      pVP                  4        S P                  VP                  R,          R4       S P                  P                  VP                  4       4        RRR4       R#   S P                  P                  TP                  4       4       i ; i  + '       g   i     R# ; i)c              3   óâ   <"  € \        V 4      pVP                  R 4      x €pRV9  d   SP                  R4       VP                  RP	                  RR4      4      x € VP                  4        R# 5i)rH  rI  rJ  s2   HTTP/1.1 200 OK
X-XSS-Protection: 1;
	mode=block

rK  rL  NrM  rQ  s   &&  €r*   rV  ÚIHTTPClientCommonTestCase.test_multi_line_headers.<locals>.accept_callback×  si   øé € ä! $›�Ø%+×%6Ñ%6°{Ó%CÑC�Ø \Ô1Ø—M‘MÐ"5Ô6Ø—l‘lð÷
 �GØ˜wóó	ò 	ð —‘–ùrX  rY  zX-XSS-Protectionz1; mode=blockN)r   r   r   rf   r   rZ  r  r[  r  rk   r\  r]  r^  r_  s   f    r*   Útest_multi_line_headersÚ0HTTPClientCommonTestCase.test_multi_line_headersÑ  s¿   ø€ ô &Ó'‰
ˆÜ�T�]�]ä�]‰]ôó ðô" ×&Ò& tÔ=ð;Ø—z‘zÐ"8¸4Õ"?Ó@�Ø—‘”Ø× Ñ  §¡Ð.@Õ!AÀ?ÔSà—‘×+Ñ+¨D¯K©K«MÕ:÷5 ‰]øð4 —‘×+Ñ+¨D¯K©K«MÕ:ú÷5 �]ˆ]ús$   ¡0C?ÁACÂ)C?Ã+C<Ã<C?Ã?D	c              #  óÄ   "  € V P                   P                  V P                  R 4      RR/R7      x €pV P                  VP                  RP                  R4      4       R# 5i)rø   r¿   u   bÃ¤rrñ  rÀ   N)ré  r  r¥  r  rH   r¹   r  s   & r*   Útest_header_encodingÚ-HTTPClientCommonTestCase.test_header_encodingñ  s[   é € à×)Ñ)×/Ñ/Ø�L‰LÐ+Ó,à�xðð 0ó 
ñ 
ˆð 	×Ñ˜Ÿ™¨¯©¸Ó(DÖEùs   ‚AA c                ó¦   € V P                  R 4      pV P                  VP                  R4       V P                  VP                  R,          R4       R# )rô   r‚   rƒ   Ú42N)r  r  r  rk   r  s   & r*   Útest_304_with_content_lengthÚ5HTTPClientCommonTestCase.test_304_with_content_lengthû  sC   € ð
 —:‘:Ð8Ó9ˆØ×Ñ˜Ÿ™¨Ô,Ø×Ñ˜×)Ñ)Ð*:Õ;¸TÖBr-   c              #  óž   "  € V P                   P                  V P                  R 4      4      x €pV P                  VP                  R4       R# 5i©rí   r	  N©ré  r  r¥  r  rH   r  s   & r*   Útest_future_interfaceÚ.HTTPClientCommonTestCase.test_future_interface  s;   é € à×)Ñ)×/Ñ/°·±¸XÓ0FÓGÑGˆØ×Ñ˜Ÿ™¨Ö8ùs   ‚AAc              #  óØ  "  € V P                  \        4      ;_uu_ 4       pV P                  P                  V P	                  R 4      4      x € RRR4       XP
                  f   Q hVP
                  P                  f   Q hV P                  VP
                  P                  R4       V P                  VP
                  P                  P                  R4       R#   + '       g   i     L’; i5i©ú	/notfoundNé”  )	r1  r   ré  r  r¥  Ú	exceptionr  r  r  )r)   Úcontexts   & r*   Útest_future_http_errorÚ/HTTPClientCommonTestCase.test_future_http_error	  s­   é € à×Ñœy×)Ô)¨WØ×"Ñ"×(Ñ(¨¯©°kÓ)BÓCÒC÷ *à× Ñ Ò,Ð,Ð,Ø× Ñ ×)Ñ)Ò5Ð5Ð5Ø×Ñ˜×*Ñ*×/Ñ/°Ô5Ø×Ñ˜×*Ñ*×3Ñ3×8Ñ8¸#Ö>÷ *×)üs   ‚C* -CÁB
C*ÃC'	Ã"C*c              #  ó¢   "  € V P                   P                  V P                  R 4      RR7      x €pV P                  VP                  R4       R# 5i)r	  Fr.  r
  N)ré  r  r¥  r  r  r  s   & r*   Útest_future_http_error_no_raiseÚ8HTTPClientCommonTestCase.test_future_http_error_no_raise  sI   é € à×)Ñ)×/Ñ/Ø�L‰L˜Ó%°5ð 0ó 
ñ 
ˆð 	×Ñ˜Ÿ™¨Ö,ùre   c              #  óŽ  "  € V P                  R 4      pV P                  P                  V4      x €pV P                  VP                  P
                  V4       V P                  \        VP                  \        4      4       V P                  P                  VP                  4      x €pV P                  VP                  R4       R# 5ir  )
r¥  ré  r  r  rG   r   r…  Ú
isinstancer	   rH   )r)   r   r  Ú	response2s   &   r*   Ú test_reuse_request_from_responseÚ9HTTPClientCommonTestCase.test_reuse_request_from_response  s–   é € ð �l‰l˜8Ó$ˆØ×)Ñ)×/Ñ/°Ó4Ñ4ˆØ×Ñ˜×)Ñ)×-Ñ-¨sÔ3Ø�‰œ
 8×#3Ñ#3´[ÓAÔBØ×*Ñ*×0Ñ0°×1AÑ1AÓBÑBˆ	Ø×Ñ˜Ÿ™¨Ö9ùs   ‚CCc              #  óØ  "  € V P                  R 4      p\        VRR7      pV P                  P                  V4      x €pV P	                  VP
                  ^È4       V P                  \        \        34      ;_uu_ 4       p\        VRR7      pV P                  P                  V4      x € RRR4       V P                  R\        XP                  4      4       R#   + '       g   i     L7; i5i)rí   z	127.0.0.1©Únetwork_interfaceznot-interface-or-ipN)r¥  r	   ré  r  r  r  r1  r}  r   r¡  rÚ   r  )r)   r   rG   r  r  s   &    r*   Útest_bind_source_ipÚ,HTTPClientCommonTestCase.test_bind_source_ip&  s±   é € à�l‰l˜8Ó$ˆÜ˜c°[ÔAˆØ×)Ñ)×/Ñ/°Ó8Ñ8ˆØ×Ñ˜Ÿ™¨Ô,à×Ñ¤
¬IÐ6×7Ô7¸7Ü! #Ð9NÔOˆGØ×"Ñ"×(Ñ(¨Ó1Ò1÷ 8ð 	�‰Ð+¬S°×1BÑ1BÓ-CÖD÷ 8×7üs   ‚A;C*Á=+CÂ(/C*ÃC'	Ã"C*c                óÊ  € R F;  pV P                  RVR7      pV P                  VP                  \        V4      4       K=  	  R F<  pV P                  RVRR7      pV P                  VP                  \        V4      4       K>  	  V P                  RRR7      pV P                  VP                  R4       V P                  RRRR7      pV P                  VP                  R	4       R
# )rž  rõ   r�  r-   r   rœ  r’   Tr—  s   OTHERN©rž  r   rŸ  ©r=  r�  rÿ   )r  r  rH   r   )r)   r�   r  s   &  r*   Útest_all_methodsÚ)HTTPClientCommonTestCase.test_all_methods2  sÆ   € Û2ˆFØ—z‘z .¸�zÓ@ˆHØ×Ñ˜XŸ]™]¬D°«LÖ9ñ 3ó /ˆFØ—z‘z .¸Àc�zÓJˆHØ×Ñ˜XŸ]™]¬D°«LÖ9ñ /ð —:‘:˜n°V�:Ó<ˆØ×Ñ˜Ÿ™¨Ô,Ø—:‘:Ø 7Àdð ó 
ˆð 	×Ñ˜Ÿ™¨Ö1r-   c           
     óÌ  € R F’  pV P                  \        4      ;_uu_ 4       pV P                  RVRR7       RRR4       V P                  R\	        XP
                  4      4       V P                  RVRR7      pV P                  VP                  ^È4       K”  	  R Fž  pV P                  \        4      ;_uu_ 4       pV P                  RVRRR	7       RRR4       V P                  R
\	        XP
                  4      4       VR8w  g   Kl  V P                  RVRRRR7       V P                  XP                  ^È4       K   	  R#   + '       g   i     EL; i  + '       g   i     LŠ; i)r=  rõ   T)r�   r/  Nzmust not be Noner—  rž  rB  )r�   rH   r/  zmust be None)r�   rH   r˜  r/  r  r  )r1  r}  r  r¡  rÚ   r  r  r  )r)   r�   r  rb  s   &   r*   Útest_body_sanity_checksÚ0HTTPClientCommonTestCase.test_body_sanity_checks@  s-  € ã.ˆFØ×"Ñ"¤:×.Ô.°'Ø—
‘
˜>°&Àd�
ÔK÷ /à�M‰MÐ,¬c°'×2CÑ2CÓ.DÔEà—:‘:Ø vÈð ó ˆDð ×Ñ˜TŸY™Y¨Ö,ñ /ó 3ˆFØ×"Ñ"¤:×.Ô.°'Ø—
‘
Ø"¨6¸ÈTð ô ÷ /ð �M‰M˜.¬#¨g×.?Ñ.?Ó*@ÔAð ˜ŽØ—
‘
Ø"Ø!Ø Ø.2Ø $ð ô ð × Ñ  §¡¨CÖ0ó# 3÷ /×.Ð.ú÷ /×.ús   £D?Â;EÄ?EÅE#c                ó†   € V P                  R RRR7      pVP                  4        V P                  VP                  R4       R# )z/redirect?status=307&url=/putr�  s   hellor   r’  N)r  r[  r  rH   r  s   & r*   Útest_put_307Ú%HTTPClientCommonTestCase.test_put_307p  s?   € Ø—:‘:Ø+°EÀð ó 
ˆð 	×ÑÔØ×Ñ˜Ÿ™Ð(:Ö;r-   c                ó    € V P                  R 4      pVP                  4        V P                  VP                  R,          \	        R4      4       R# )z/set_header?k=foo&v=%E9r¿   r«  N)r  r[  r  rk   r   r  s   & r*   Útest_non_ascii_headerÚ.HTTPClientCommonTestCase.test_non_ascii_headerw  s=   € à—:‘:Ð7Ó8ˆØ×ÑÔØ×Ñ˜×)Ñ)¨%Õ0´*¸XÓ2FÖGr-   c                ó„  € \         P                   ! 4       pV P                  R 4      pVP                  4        V P                  VP                  4       VP                  f   Q hV P                  VP                  ^ 4       V P                  VP                  R4       V P                  VP                  4       VP                  f   Q hV P                  \        VP                  V,
          4      R4       VP                  P                  4        F1  w  r4T P                  ^ Tu;8*  ;'       d    R8  Mu RV RV 24       K3  	  R# )rí   Ng      ð?z
time_info[z] out of bounds: )Útimer  r[  ÚassertIsNotNoner
  ÚassertGreaterEqualr'  Ú
start_timeÚabsÚ	time_infoÚitemsr…  )r)   r.  r  r›   rœ   s   &    r*   Útest_response_timesÚ,HTTPClientCommonTestCase.test_response_times}  s   € ô —Y’Y“[ˆ
Ø—:‘:˜hÓ'ˆØ×ÑÔØ×Ñ˜X×2Ñ2Ô3Ø×$Ñ$Ò0Ð0Ð0Ø×Ñ × 5Ñ 5°qÔ9Ø�‰˜×-Ñ-¨sÔ3ð 	×Ñ˜X×0Ñ0Ô1Ø×"Ñ"Ò.Ð.Ð.Ø�‰œ˜H×/Ñ/°*Õ<Ó=¸sÔCà×&Ñ&×,Ñ,Ö.‰DˆAØ�O‰O˜A ŸLœL SœL¨J°q°cÐ9JÈ1È#Ð*NÖOó /r-   c                ó"  € V P                  R ^ R7      pV P                  VP                  ^È4       V P                  R ^ R7      pV P                  VP                  ^È4       V P                  R ^ ^ R7      pV P                  VP                  ^È4       R# )rí   )Úconnect_timeout)Úrequest_timeout)r5  r6  Nr‹  r  s   & r*   Útest_zero_timeoutÚ*HTTPClientCommonTestCase.test_zero_timeout‘  sv   € Ø—:‘:˜h¸�:Ó:ˆØ×Ñ˜Ÿ™¨Ô,à—:‘:˜h¸�:Ó:ˆØ×Ñ˜Ÿ™¨Ô,à—:‘:˜h¸È1�:ÓMˆØ×Ñ˜Ÿ™¨Ö,r-   c              #  ó†  "  € V P                   P                  V P                  R 4      4      pV P                  VP	                  4       4       \        \        R4      ;_uu_ 4       p\        ^d4       F/  p\        P                  ! R4      x € VP                  '       g   K/   M	  RRR4       R#   + '       g   i     R# ; i5i)z/404z$Exception after Future was cancelledr`   N)ré  r  r¥  r…  Úcancelr   r   r·   r   rc   Úlogged_stack)r)   ÚfutÚelr±   s   &   r*   Útest_error_after_cancelÚ0HTTPClientCommonTestCase.test_error_after_cancel›  s   é € à×Ñ×$Ñ$ T§\¡\°&Ó%9Ó:ˆØ�‰˜Ÿ
™
›Ô%Ü”wÐ F×GÔGÈ2ô
 ˜3–Z�Ü—i’i “oÒ%Ø—?—?’?Ùñ  ÷ H×G×GÒGüs$   ‚A"CÁ$6B-ÂB-Â#
CÂ-B>	Â8	Cc           
     ó4  € R FÃ  w  rV P                  VRR7      ;_uu_ 4        V P                  \        4      ;_uu_ 4        V P                  RRV/R7       RRR4       RRR4       V P                  VRR7      ;_uu_ 4        V P                  \        4      ;_uu_ 4        V P                  RVR/R7       RRR4       RRR4       KÅ  	  R#   + '       g   i     L}; i  + '       g   i     Lˆ; i  + '       g   i     LD; i  + '       g   i     EK  ; i)	úfoobar:rò  )r"   Úpositionrí   r®  rñ  NÚkey))rA  Úcr)zfoo
bar:Úlf)z	foo
bar:Úcrlf)ÚsubTestr1  r}  r  )r)   Úheaderr"   s   &  r*   Útest_header_crlfÚ)HTTPClientCommonTestCase.test_header_crlf©  sÂ   € ó
‰LˆFð
 —‘ 4°'�×:Õ:Ø×&Ñ&¤z×2Õ2Ø—J‘J˜x°%¸°�JÔA÷ 3÷ ;ð —‘ 4°%�×8Õ8Ø×&Ñ&¤z×2Õ2Ø—J‘J˜x°&¸%°�JÔA÷ 3÷ 9Ñ8ó
÷ 3×2ú÷ ;×:ú÷ 3×2ú÷ 9×8Ñ8úsG   £CÁCÁCÂDÂ C2Â6DÃCÃCÃC/Ã2DÃ=DÄDr.   N)5r0   r1   r2   r3   r7  rü   r  r  r  r  r)  r2  r:  r>  rD  rc  rm  rr  rz  r~  rˆ  rŒ  r”  r™  r¢  r¨  r´  r¸  rÄ  rÈ  rÙ  rá  r   rì  rô  rù  rü  r   r  r  r  r  r  r  r"  r%  r(  r2  r7  r>  rI  r4   r5   r6   s   @r*   rë   rë     sz  ø‡ € ð  Ðò
ò4.ò	7ò(ò(ò0ò2;ò.0ò<Fò
(ò#7òJ
ò	
ò
òò1ò-ò<ò7ò-ò<Tò
"3òH<ò0ò"ò5ò>4ð" ñó ðòò";ð@ ñFó ðFòCð ñ9ó ð9ð ñ?ó ð?ð ñ-ó ð-ð ñ
:ó ð
:ð ñ	Eó ð	Eò2ò1ò`<òHòPò(-ð ñó ð÷Bð Br-   rë   c                   óD   a € ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
ÚRequestProxyTestiº  c                ó|   € \        \        R RR7      \        4       4      pV P                  VP                  R4       R# )úhttp://example.com/r®  )r¯  N)r   r	   rè  r  r¯  ©r)   Úproxys   & r*   Útest_request_setÚ!RequestProxyTest.test_request_set»  s3   € ÜÜÐ-¸%Ô@Ä$Ã&ó
ˆð 	×Ñ˜×)Ñ)¨5Ö1r-   c                ó|   € \        \        R 4      \        RR7      4      pV P                  VP                  R4       R# )rN  r®  r  N)r   r	   rè  r  r  rO  s   & r*   Útest_default_setÚ!RequestProxyTest.test_default_setÁ  s4   € ÜÜÐ-Ó.´ÀuÔ0Mó
ˆð 	×Ñ˜×0Ñ0°%Ö8r-   c                ó€   € \        \        R RR7      \        RR7      4      pV P                  VP                  R4       R# )rN  r®  )Ú
proxy_hostÚbarN)r   r	   rè  r  rW  rO  s   & r*   Útest_both_setÚRequestProxyTest.test_both_setÇ  s7   € ÜÜÐ-¸%Ô@Ä$ÐRWÔBXó
ˆð 	×Ñ˜×)Ñ)¨5Ö1r-   c                óv   € \        \        R 4      \        4       4      pV P                  VP                  4       R# ©rN  N)r   r	   rè  ÚassertIsNoneri  rO  s   & r*   Útest_neither_setÚ!RequestProxyTest.test_neither_setÍ  s*   € ÜœkÐ*?Ó@Ä$Ã&ÓIˆØ×Ñ˜%×-Ñ-Ö.r-   c                óÌ   € \        \        R 4      \        4       4      pV P                  \        4      ;_uu_ 4        VP
                   RRR4       R#   + '       g   i     R# ; ir\  )r   r	   rè  r1  ÚAttributeErrorr®  rO  s   & r*   Útest_bad_attributeÚ#RequestProxyTest.test_bad_attributeÑ  s=   € ÜœkÐ*?Ó@Ä$Ã&ÓIˆØ×Ñœ~×.Õ.Ø�IŠI÷ /×.×.Ò.ús   »AÁA#	c                óf   € \        \        R 4      R4      pV P                  VP                  4       R# r\  )r   r	   r]  ri  rO  s   & r*   Útest_defaults_noneÚ#RequestProxyTest.test_defaults_noneÖ  s(   € ÜœkÐ*?Ó@À$ÓGˆØ×Ñ˜%×-Ñ-Ö.r-   r.   N)r0   r1   r2   r3   rQ  rT  rY  r^  rb  re  r4   r5   r6   s   @r*   rL  rL  º  s(   ø‡ € ò2ò9ò2ò/ò÷
/ð /r-   rL  c                   ó&   a € ] tR tRt o R tRtV tR# )ÚHTTPResponseTestCaseiÛ  c                ó¾   € \        \        R 4      ^È\        4       R7      p\        V4      pV P	                  VP                  R4      4       V P                  RV4       R# )úhttp://example.com)rÁ  zHTTPResponse(zcode=200N)r
   r	   r   rÚ   r…  rÎ  r¡  )r)   r  Úss   &  r*   Útest_strÚHTTPResponseTestCase.test_strÜ  sI   € ÜÜÐ,Ó-¨s¼7»9ô
ˆô �‹MˆØ�‰˜Ÿ™ _Ó5Ô6Ø�‰�j !Ö$r-   r.   N)r0   r1   r2   r3   rl  r4   r5   r6   s   @r*   rh  rh  Û  s   ø‡ € ÷%ð %r-   rh  c                   ó>   a € ] tR tRt o R tR tR tR tR tRt	V t
R# )	ÚSyncHTTPClientTestiå  c                óD  a aa€ \        R R7      S n        \        P                  ! 4       o\        P
                  VV 3R l4       oVV 3R lp\        P                  ! VR7      S n        S P                  P                  4        SP                  4        \        4       S n        R# )F)Úmake_currentc                  óÆ   <€ \        4       w  p Sn        \        R \        3.4      p\	        V4      Sn        SP
                  P                  V 4       SP                  4        R# )Ú/N)r   ra  r   r    r   ÚserverÚ
add_socketÚset)r`  ÚappÚeventr)   s     €€r*   Úinit_serverÚ-SyncHTTPClientTest.setUp.<locals>.init_serverê  sJ   ø€ ä.Ó0‰OˆD�$”)Ü Ô%6Ð7Ð8Ó9ˆCÜ$ S›/ˆDŒKØ�K‰K×"Ñ" 4Ô(Ø�I‰IŽKr-   c                  ór   <€ SP                   P                  S 4       SP                   P                  4        R # rx   )Úserver_ioloopÚrun_syncr#  )ry  r)   s   €€r*   r#  Ú'SyncHTTPClientTest.setUp.<locals>.startò  s)   ø€ Ø×Ñ×'Ñ'¨Ô4Ø×Ñ×$Ñ$Ö&r-   )ÚtargetN)r   r|  Ú	threadingÚEventr   rf   ÚThreadÚserver_threadr#  Úwaitr   ré  )r)   r#  rx  ry  s   f @@r*   ÚsetUpÚSyncHTTPClientTest.setUpæ  sq   ú€ Ü#°Ô7ˆÔÜ—’Ó!ˆä	�‰õ	ó 
ð	ö	'ô '×-Ò-°UÔ;ˆÔØ×Ñ× Ñ Ô"Ø�
‰
Œä%›<ˆÖr-   c                óê   a € V 3R  lpS P                   P                  V4       S P                  P                  4        S P                  P                  4        S P                   P                  RR7       R# )c                  ó¤   <€ SP                   P                  4        \        P                  V3R  l4       p SP                  P                  V 4       R# )c               3   ó¨   <"  € SP                   P                  4       x € \        ^4       F  p Rx € K	  	  SP                  P	                  4        R# 5i)é   N)rt  Úclose_all_connectionsr·   r|  r&  )r±   r)   s    €r*   Ú	slow_stopÚCSyncHTTPClientTest.tearDown.<locals>.stop_server.<locals>.slow_stop  s>   øé € à—k‘k×7Ñ7Ó9Ò9ô ˜qž�AÝñ "à×"Ñ"×'Ñ'Ö)ùs   ƒAAN)rt  r&  r   rf   r|  Úadd_callback)rŒ  r)   s    €r*   Ústop_serverÚ0SyncHTTPClientTest.tearDown.<locals>.stop_serverý  sA   ø€ Ø�K‰K×ÑÔô �]‰]ô*ó ð*ð ×Ñ×+Ñ+¨IÖ6r-   T)Úall_fdsN)r|  rŽ  rƒ  r¶   ré  rP  )r)   r�  s   f r*   ÚtearDownÚSyncHTTPClientTest.tearDownü  sY   ø€ õ	7ð& 	×Ñ×'Ñ'¨Ô4Ø×Ñ×ÑÔ!Ø×Ñ×ÑÔ Ø×Ñ× Ñ ¨Ð Ö.r-   c                ó,   € R V P                   V3,          # )zhttp://127.0.0.1:%d%s)ra  )r)   Úpaths   &&r*   r¥  ÚSyncHTTPClientTest.get_url  s   € Ø&¨$¯)©)°TÐ):Õ:Ð:r-   c                ó’   € V P                   P                  V P                  R 4      4      pV P                  RVP                  4       R# )rs  r	  Nr  r  s   & r*   Útest_sync_clientÚ#SyncHTTPClientTest.test_sync_client  s5   € Ø×#Ñ#×)Ñ)¨$¯,©,°sÓ*;Ó<ˆØ×Ñ˜¨(¯-©-Ö8r-   c                ó  € V P                  \        4      ;_uu_ 4       pV P                  P                  V P	                  R 4      4       RRR4       V P                  XP                  P                  R4       R#   + '       g   i     L8; ir  )r1  r   ré  r  r¥  r  r  r  )r)   Ú	assertions   & r*   Útest_sync_client_errorÚ)SyncHTTPClientTest.test_sync_client_error  s^   € ð ×Ñœy×)Ô)¨YØ×Ñ×"Ñ" 4§<¡<°Ó#<Ô=÷ *à×Ñ˜×,Ñ,×1Ñ1°3Ö7÷ *×)ús   ž+A9Á9B		)ré  ra  rt  r|  rƒ  N)r0   r1   r2   r3   r…  r’  r¥  r˜  rœ  r4   r5   r6   s   @r*   ro  ro  å  s#   ø‡ € ò(ò,/ò2;ò9÷8ð 8r-   ro  c                   ó&   a € ] tR tRt o R tRtV tR# )ÚSyncHTTPClientSubprocessTesti$  c                óV  € \         P                  ! \        P                  R R.\         P                  \         P
                  R^R7      pVP                  '       d*   \        R4       \        \        VP                  4      4       VP                  '       d   V P                  R4       R# R# )z-czMfrom tornado.httpclient import HTTPClient; f = lambda: None; c = HTTPClient()T)ÚstdoutÚstderrÚcheckÚtimeoutzSTDOUT:z%subprocess produced unexpected outputN)
Ú
subprocessÚrunÚsysÚ
executableÚPIPEÚSTDOUTr¡  Úprintr   Úfail)r)   Úprocs   & r*   Útest_destructor_logÚ0SyncHTTPClientSubprocessTest.test_destructor_log%  s{   € ô �~Š~ä—‘ØØ_ðô
 —?‘?Ü×$Ñ$ØØô

ˆð �;�;ˆ;Ü�)ÔÜ”*˜TŸ[™[Ó)Ô*Ø�;�;ˆ;Ø�I‰IÐ=Ö>ñ r-   r.   N)r0   r1   r2   r3   r®  r4   r5   r6   s   @r*   rŸ  rŸ  $  s   ø‡ € ÷?ð ?r-   rŸ  c                   óJ   a € ] tR tRt o R tR tR tR tR tR t	R t
R	tV tR
# )ÚHTTPRequestTestCaseiB  c                ó`   € \        R RR/R7      pV P                  VP                  RR/4       R# )rj  r®  rX  rñ  N)r	   r  rk   ©r)   rG   s   & r*   Útest_headersÚ HTTPRequestTestCase.test_headersC  s+   € ÜÐ2¸UÀE¸NÔKˆØ×Ñ˜Ÿ™¨5°%¨.Ö9r-   c                ój   € \        R 4      pRR/Vn        V P                  VP                  RR/4       R# )rj  rX  ÚbazN©r	   rk   r  r³  s   & r*   Útest_headers_setterÚ'HTTPRequestTestCase.test_headers_setterG  s0   € ÜÐ2Ó3ˆØ  %˜.ˆŒØ×Ñ˜Ÿ™¨5°%¨.Ö9r-   c                ób   € \        R 4      pRVn        V P                  VP                  / 4       R# )rj  Nr¸  r³  s   & r*   Útest_null_headers_setterÚ,HTTPRequestTestCase.test_null_headers_setterL  s(   € ÜÐ2Ó3ˆØˆŒØ×Ñ˜Ÿ™¨"Ö-r-   c                ój   € \        R RR7      pV P                  VP                  \        R4      4       R# )rj  r®  )rH   N)r	   r  rH   r   r³  s   & r*   Ú	test_bodyÚHTTPRequestTestCase.test_bodyQ  s'   € ÜÐ2¸Ô?ˆØ×Ñ˜Ÿ™¤t¨E£{Ö3r-   c                ót   € \        R 4      pRVn        V P                  VP                  \        R4      4       R# )rj  r®  N)r	   rH   r  r   r³  s   & r*   Útest_body_setterÚ$HTTPRequestTestCase.test_body_setterU  s,   € ÜÐ2Ó3ˆØˆŒØ×Ñ˜Ÿ™¤t¨E£{Ö3r-   c                óÜ   € \         P                   P                  \         P                  P                  4      p\	        R VR7      pV P                  VP                  R\        V4      /4       R# )rj  ©Úif_modified_sinceúIf-Modified-SinceN)ÚdatetimeÚnowÚtimezoneÚutcr	   r  rk   r   ©r)   Ú	http_daterG   s   &  r*   Útest_if_modified_sinceÚ*HTTPRequestTestCase.test_if_modified_sinceZ  sT   € Ü×%Ñ%×)Ñ)¬(×*;Ñ*;×*?Ñ*?Ó@ˆ	ÜÐ2ÀiÔPˆØ×ÑØ�O‰OÐ1Ô3CÀIÓ3NÐOö	
r-   c                ó  € \        4       ;_uu_ 4        \        P                  P                  4       pR R R 4       \        RXR7      pV P	                  VP
                  R\        V4      /4       R #   + '       g   i     LF; i)Nrj  rÅ  rÇ  )r   rÈ  Úutcnowr	   r  rk   r   rÌ  s   &  r*   Ú'test_if_modified_since_naive_deprecatedÚ;HTTPRequestTestCase.test_if_modified_since_naive_deprecateda  s]   € Ü×!Õ!Ü ×)Ñ)×0Ñ0Ó2ˆI÷ "äÐ2ÀiÔPˆØ×ÑØ�O‰OÐ1Ô3CÀIÓ3NÐOö	
÷ "×!ús   “A0Á0B 	r.   N)r0   r1   r2   r3   r´  r¹  r¼  r¿  rÂ  rÎ  rÒ  r4   r5   r6   s   @r*   r±  r±  B  s-   ø‡ € ò:ò:ò
.ò
4ò4ò

÷
ð 
r-   r±  c                   ó2   a € ] tR tRt o R tR tR tRtV tR# )ÚHTTPErrorTestCaseij  c                ó¶   € \        R 4      p\        P                  ! V4      pV P                  W4       V P                  VP                  VP                  4       R# )é“  N)r   ÚcopyÚassertIsNotr  r  )r)   ÚeÚe2s   &  r*   Ú	test_copyÚHTTPErrorTestCase.test_copyk  s>   € Ü�c‹NˆÜ�YŠY�q‹\ˆØ×Ñ˜ÔØ×Ñ˜Ÿ™ §¡Ö)r-   c                óˆ   € \        R 4      pV P                  \        V4      R4       V P                  \        V4      R4       R# )r×  úHTTP 403: ForbiddenN)r   r  rÚ   Úrepr)r)   rÚ  s   & r*   Útest_plain_errorÚ"HTTPErrorTestCase.test_plain_errorq  s5   € Ü�c‹NˆØ×Ñœ˜Q›Ð!6Ô7Ø×Ñœ˜a›Ð"7Ö8r-   c                óF  € \        \        R 4      R4      pV P                  \        4      ;_uu_ 4       pVP	                  4        RRR4       XP
                  pV P                  \        V4      R4       V P                  \        V4      R4       R#   + '       g   i     LT; i)rN  r×  Nrß  )	r
   r	   r1  r   r[  r  r  rÚ   rà  )r)   rb  ÚcmrÚ  s   &   r*   Útest_error_with_responseÚ*HTTPErrorTestCase.test_error_with_responsev  sq   € ÜœKÐ(=Ó>ÀÓDˆØ×Ñœy×)Ô)¨RØ�L‰LŒN÷ *à�L‰LˆØ×Ñœ˜Q›Ð!6Ô7Ø×Ñœ˜a›Ð"7Ö8÷	 *×)ús   ³BÂB 	r.   N)	r0   r1   r2   r3   rÜ  rá  rå  r4   r5   r6   s   @r*   rÕ  rÕ  j  s   ø‡ € ò*ò9÷
9ð 9r-   rÕ  c                   ó&   a € ] tR tRt o R tRtV tR# )ÚMaxBodySizeSmallHandleri„  c                ób   € V P                  R R4       V P                  R\        ,          4       R# ©r$   rè   ó   aN©r'   rF   ÚMAX_BODY_SIZEr=   s   &r*   r+   ÚMaxBodySizeSmallHandler.get…  s"   € Ø�‰˜Ð(BÔCØ�
‰
�4œ-Õ'Ö(r-   r.   Nr/   r6   s   @r*   rè  rè  „  s   ø‡ € ÷)ð )r-   rè  c                   ó&   a € ] tR tRt o R tRtV tR# )ÚMaxBodySizeLargeHandleriŠ  c                óp   € V P                  R R4       V P                  R\        ^,           ,          4       R# rê  rì  r=   s   &r*   r+   ÚMaxBodySizeLargeHandler.get‹  s'   € Ø�‰˜Ð(BÔCØ�
‰
�4œ=¨1Õ,Õ-Ö.r-   r.   Nr/   r6   s   @r*   rð  rð  Š  s   ø‡ € ÷/ð /r-   rð  c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚBodyBearingRedirectHandleri�  a  A redirect carrying a body of its own, larger than the limit.

Implementations differ here: libcurl discards the body of a redirect it
follows, while simple_httpclient applies ``max_body_size`` to every
response including the redirect, and so refuses this one before
following it.
c                ón   € V P                  R \        ^,          ,          4       V P                  R4       R# )Úxú/smallN)rF   rí  rQ   r=   s   &r*   rS   Ú"BodyBearingRedirectHandler.prepare™  s$   € Ø�
‰
�3œ-¨!Õ+Õ,Ô-Ø�‰�hÖr-   r.   N)r0   r1   r2   r3   rÞ   rS   r4   r5   r6   s   @r*   rô  rô  �  s   ø‡ € ñ÷ ð  r-   rô  c                   ó^   a € ] tR tRt o RtRtR tR tR tR t	R t
R	 tR
 tR tR tRtV tR# )ÚHTTPClientMaxBodySizeTestCaseiž  a   Tests for the limit on a response body held in memory.

Without a ``streaming_callback`` the whole body is buffered, so a
response larger than the client is prepared to hold cannot be retrieved
at all -- it can only be refused. Subclasses supply a client configured
with `MAX_BODY_SIZE`.
Nc           	     ó�   € \        \        R \        4      \        R\        4      \        R\        4      \        R\
        4      .4      # )r÷  ú/largeú/bombz/body_bearing_redirect)r   r   rè  rð  rØ   rô  r=   s   &r*   rü   Ú%HTTPClientMaxBodySizeTestCase.get_app­  s@   € Üä�HÔ5Ó6Ü�HÔ5Ó6Ü�Gœ_Ó-ÜÐ,Ô.HÓIð	ó
ð 	
r-   c                ó  € \         P                  ! 4       ;_uu_ 4       pV P                  eJ   VP                  \	        \
        V P                  P                  VR7      \        P                  R7      4       V P                  \        4      ;_uu_ 4       pV P                  ! V3RR/VB  R R R 4       R R R 4       V P                  XP                  P                  R4       R #   + '       g   i     L@; i  + '       g   i     LK; i)N©Úreason)Úlevelr/  TiW  )Ú
contextlibÚ	ExitStackÚrefusal_log_formatÚenter_contextr   r   r¦   ÚloggingÚINFOr1  r   r  r  r  r  )r)   r•  r  Úfetch_kwargsÚstackrä  s   &&&,  r*   Úassert_refusedÚ,HTTPClientMaxBodySizeTestCase.assert_refused·  s¹   € Ü×!Ò!×#Ô# uØ×&Ñ&Ò2Ø×#Ñ#ÜÜØ×/Ñ/×6Ñ6¸fÐ6ÓEÜ%Ÿl™lôôð ×"Ñ"¤9×-Ô-°Ø—
’
˜4ÑB¨TÐB°\ÒB÷ .÷ $ð 	×Ñ˜Ÿ™×*Ñ*¨CÖ0÷ .×-ú÷ $×#ús$   žA5C4ÂC!	Â)C4Ã!C1Ã,C4Ã4D	c                ój   a€ ^ oV3R lpV P                  WVR7       V P                  S\        4       R# )r   c                 ó,   <€ S\        V 4      ,          oR # rx   r  r  s   &€r*   r  ÚRHTTPClientMaxBodySizeTestCase.assert_streaming_refused.<locals>.streaming_callbackÈ  r   r-   )r  r  N)r  ÚassertLessEqualrí  )r)   r•  r  r  r  s   &&& @r*   Úassert_streaming_refusedÚ6HTTPClientMaxBodySizeTestCase.assert_streaming_refusedÅ  s3   ø€ Øˆõ	#ð 	×Ñ˜DÐDVÐÔWà×Ñ˜X¤}Ö5r-   c                ó–   € V P                  R 4      pVP                  4        V P                  VP                  R\        ,          4       R# )r÷  rë  N)r  r[  r  rH   rí  r  s   & r*   Útest_small_bodyÚ-HTTPClientMaxBodySizeTestCase.test_small_bodyÐ  s5   € à—:‘:˜hÓ'ˆØ×ÑÔØ×Ñ˜Ÿ™¨¬}Õ(<Ö=r-   c                ó,   € V P                  R RR7       R# ©rü  úContent-Length too longr   N©r  r=   s   &r*   Útest_large_bodyÚ-HTTPClientMaxBodySizeTestCase.test_large_bodyÖ  s   € à×Ñ˜HÐ-FÐÖGr-   c                ó,   € V P                  R RR7       R# ©rý  zdecompressed body too larger   Nr  r=   s   &r*   Útest_decompressed_body_sizeÚ9HTTPClientMaxBodySizeTestCase.test_decompressed_body_sizeÚ  s   € ð 	×Ñ˜GÐ,IÐÖJr-   c                ó,   € V P                  R RR7       R# r  ©r  r=   s   &r*   Ú"test_streaming_callback_over_limitÚ@HTTPClientMaxBodySizeTestCase.test_streaming_callback_over_limitß  s   € ð 	×%Ñ% hÐ7PÐ%ÖQr-   c                ó,   € V P                  R RR7       R# r  r!  r=   s   &r*   Ú/test_streaming_callback_decompressed_over_limitÚMHTTPClientMaxBodySizeTestCase.test_streaming_callback_decompressed_over_limitç  s   € à×%Ñ% gÐ6SÐ%ÖTr-   c                ó¼   € V P                  R RR7       V P                  R4      pVP                  4        V P                  VP                  R\
        ,          4       R# )rü  r  r   r÷  rë  N)r  r  r[  r  rH   rí  r  s   & r*   Útest_reuse_after_refusalÚ6HTTPClientMaxBodySizeTestCase.test_reuse_after_refusalë  sK   € ð 	×Ñ˜HÐ-FÐÔGØ—:‘:˜hÓ'ˆØ×ÑÔØ×Ñ˜Ÿ™¨¬}Õ(<Ö=r-   r.   )r0   r1   r2   r3   rÞ   r  rü   r  r  r  r  r  r"  r%  r(  r4   r5   r6   s   @r*   rú  rú  ž  sH   ø‡ € ñð Ðò
ò1ò	6ò>òHòKò
RòU÷>ð >r-   rú  i   i   i   )ar¦  r°  r  r   rØ  Ú	functoolsr«   r  r€  rÈ  Úior   r¥  r§  r+  r"  Útypingrw  ÚunittestrÇ   Útornado.escaper   r   r   Útornador   Útornado.httpclientr	   r
   r   r   r   Útornado.httpserverr   Útornado.ioloopr   Útornado.iostreamr   Útornado.logr   r   r   Útornado.testingr   r   r   r   Útornado.test.utilr   r   Útornado.webr   r   r   Útornado.httputilr   r   r    r9   rC   rM   rW   r]   rh   rn   rv   r{   r€   r‰   rŽ   r™   r¢   r½   rÛ   r0  Ú	lru_cacherÑ   ÚBROTLI_BOMB_SIZEÚ	b64decoderã   rÖ   rØ   rà   ræ   rë   ÚTestCaserL  rh  ro  rŸ  r±  rÕ  rí  rè  rð  rô  rú  r.   r-   r*   Ú<module>r=     s–  ðÛ Û Û Ý Û Û Û Û Û Û Ý Û Û 
Û Û Û Û Û Û ç 7Ñ 7Ý ÷õ õ *Ý !Ý %ß (Ý ß TÓ Tß Dß 8Ñ 8ß :ô(˜ô (ô
�.ô 
ô&�ô &ô
�nô 
ô ^ô ô�>ô ô;�.ô ;ô
�~ô ô&�nô &ô
Q�~ô Qô
˜nô ô&�>ô &ôH˜ô Hô"�~ô "ô
˜ô 
ôE˜Nô Eð "€ð +Ð ð ×Ò˜TÔ"Ø(ö 
ó #ð
ð& %Ð Ø×Òðó
€ð ×Ò˜TÔ"ô:ó #ð:ô$�nô $ô
 ˜ô 
 ô!�~ô !ôs
BÐ0ô s
Bôl/�x×(Ñ(ô /ôB%˜8×,Ñ,ô %ô<8˜×*Ñ*ô <8ô~? 8×#4Ñ#4ô ?ô<%
˜(×+Ñ+ô %
ôP9˜×)Ñ)ô 9ð. €ô)˜nô )ô/˜nô /ô  ô  ð ôS>Ð$5ó S>ó òS>r-   