+
    üÐj;  ã                   ób  € R 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 ^ RIHt ^ RIHt ^ R	IHt ^ R
IHtHtHt ^ RIHtHt ^ RIHtHtHtHtH t H!t!H"t"H#t#H$t$  ! R R]
4      t% ! R R]	4      t& ! R R]
4      t' ! R R]
4      t( ! R R]PR                  4      t* ! R R]	4      t+R# )z 
Tests for L{twisted.web.util}.
N)Údefer)ÚnetworkString)ÚFailure)ÚSynchronousTestCaseÚTestCase)ÚresourceÚutil)ÚFlattenerError)ÚFOUND)ÚRequest)Ú	TagLoaderÚflattenStringÚtags)ÚDummyChannelÚDummyRequest)	ÚDeferredResourceÚFailureElementÚParentRedirectÚ_FrameElementÚ_SourceFragmentElementÚ_SourceLineElementÚ_StackElementÚformatFailureÚ
redirectToc                   ó<   a € ] tR t^!t o RtR tR tR tR tRt	V t
R# )ÚRedirectToTestsz
Tests for L{redirectTo}.
c                óF  € \        \        4       R4      pRVn        Rp\        W!4       V P	                  VP
                  \        4       V P	                  VP                  P                  R4      V.4       V P	                  VP                  P                  R4      R.4       R# )zž
L{redirectTo} will set the C{Location} and C{Content-Type} headers on
its request, and set the response code to C{FOUND}, so the browser will
be redirected.
Tó   GETs   http://target.example.com/4321s   locations   content-types   text/html; charset=utf-8N)	r   r   Úmethodr   ÚassertEqualÚcoder
   ÚresponseHeadersÚgetRawHeaders©ÚselfÚrequestÚ	targetURLs   &  Ú</usr/lib/python3/dist-packages/twisted/web/test/test_util.pyÚtest_headersAndCodeÚ#RedirectToTests.test_headersAndCode&   sŠ   € ô œ,›.¨$Ó/ˆØˆŒØ5ˆ	Ü�9Ô&Ø×Ñ˜Ÿ™¤uÔ-Ø×ÑØ×#Ñ#×1Ñ1°+Ó>ÀÀô	
ð 	×ÑØ×#Ñ#×1Ñ1°/ÓBØ(Ð)ö	
ó    c                óv   € \        \        4       R4      pRVn        RpV P                  \        \
        W!4       R# )zG
L{redirectTo} will raise TypeError if unicode object is passed in URL
Tr   zhttp://target.example.com/4321N)r   r   r   ÚassertRaisesÚ	TypeErrorr   r#   s   &  r'   Útest_redirectToUnicodeURLÚ)RedirectToTests.test_redirectToUnicodeURL9   s0   € ô œ,›.¨$Ó/ˆØˆŒØ4ˆ	Ø×Ñœ)¤Z°ÖDr*   c                ó\   € \        R.4      p\        RV4      pRpV P                  W#4       R# )za
Legitimate URLs are fully interpolated in the `redirectTo` response body without transformation
r*   s   https://twisted.org/sÚ   
<html>
    <head>
        <meta http-equiv="refresh" content="0;URL=https://twisted.org/">
    </head>
    <body bgcolor="#FFFFFF" text="#000000">
    <a href="https://twisted.org/">click here</a>
    </body>
</html>
N©r   r   r   ©r$   r%   ÚhtmlÚexpecteds   &   r'   Útest_legitimateRedirectÚ'RedirectToTests.test_legitimateRedirectB   s4   € ô  ˜uÓ%ˆÜÐ1°7Ó;ˆð	ˆð 	×Ñ˜Ö(r*   c                ó\   € \        R.4      p\        RV4      pRpV P                  W#4       R# )z]
Malicious URLs are HTML-escaped before interpolating them in the `redirectTo` response body
r*   s?   https://twisted.org/"><script>alert(document.location)</script>sX  
<html>
    <head>
        <meta http-equiv="refresh" content="0;URL=https://twisted.org/&quot;&gt;&lt;script&gt;alert(document.location)&lt;/script&gt;">
    </head>
    <body bgcolor="#FFFFFF" text="#000000">
    <a href="https://twisted.org/&quot;&gt;&lt;script&gt;alert(document.location)&lt;/script&gt;">click here</a>
    </body>
</html>
Nr1   r2   s   &   r'   Útest_maliciousRedirectÚ&RedirectToTests.test_maliciousRedirectT   s7   € ô  ˜uÓ%ˆÜØNÐPWó
ˆð	ˆð 	×Ñ˜Ö(r*   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r(   r.   r5   r8   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r'   r   r   !   s$   ø‡ € ñò
ò&Eò)÷$)ð )r*   r   c                   óH   a € ] tR t^it o RtV 3R lR ltR tR tR tRt	V t
R# )	ÚParentRedirectTestsz
Test L{ParentRedirect}.
c                ó&   <€ V ^8„  d   QhRS[ RS[ /# )é   ÚrequestPathÚreturn)Úbytes)ÚformatrC   s   "€r'   Ú__annotate__Ú ParentRedirectTests.__annotate__n   s   ø€ ÷ ñ ©%ð ±Eñ r*   c                ó  € \        \        4       R4      pRVn        VP                  R4      P	                  R4      Vn        \        4       pVP                  ! V4       VP                  P                  R4      pVf   Q hVw  pV# )z©
Render a response to a request with path *requestPath*

@param requestPath: A slash-separated path like C{b'/foo/bar'}.

@returns: The value of the I{Location} header.
Tr   ó   /s   Location)
r   r   r   ÚlstripÚsplitÚprepathr   Úrenderr!   r"   )r$   rH   r%   r   ÚheadersÚlocations   &&    r'   ÚdoLocationTestÚ"ParentRedirectTests.doLocationTestn   sx   € ô œ,›.¨$Ó/ˆØˆŒØ%×,Ñ,¨TÓ2×8Ñ8¸Ó>ˆŒä!Ó#ˆØ�Š˜Ô à×)Ñ)×7Ñ7¸ÓDˆØÒ"Ð"Ð"Ø‰
ˆØˆr*   c                óŠ   € V P                  RV P                  R4      4       V P                  RV P                  R4      4       R# )zQ
At the URL root issue a redirect to the current URL, removing any query
string.
ó   http://10.0.0.1/rO   s   /?biff=baffN©r   rV   ©r$   s   &r'   Útest_locationRootÚ%ParentRedirectTests.test_locationRoot‚   s<   € ð
 	×ÑÐ,¨d×.AÑ.AÀ$Ó.GÔHØ×ÑÐ,¨d×.AÑ.AÀ.Ó.QÖRr*   c                óŠ   € V P                  RV P                  R4      4       V P                  RV P                  R4      4       R# )z\
A request for a resource one level down from the URL root produces
a redirect to the root.
rY   s   /foos   /foo?bar=sproiiingNrZ   r[   s   &r'   Útest_locationToRootÚ'ParentRedirectTests.test_locationToRootŠ   s?   € ð
 	×ÑÐ,¨d×.AÑ.AÀ'Ó.JÔKØ×ÑØ ×!4Ñ!4Ð5JÓ!Kö	
r*   c                óÌ   € V P                  RV P                  R4      4       V P                  RV P                  R4      4       V P                  RV P                  R4      4       R# )zX
Requests for resources directly under the path C{/foo/} produce
redirects to C{/foo/}.
s   http://10.0.0.1/foo/s   /foo/s   /foo/bars   /foo/bar?biz=bazNrZ   r[   s   &r'   Útest_locationUpOneÚ&ParentRedirectTests.test_locationUpOne”   s[   € ð
 	×ÑÐ0°$×2EÑ2EÀhÓ2OÔPØ×ÑÐ0°$×2EÑ2EÀkÓ2RÔSØ×ÑØ# T×%8Ñ%8Ð9LÓ%Mö	
r*   r:   N)r;   r<   r=   r>   r?   rV   r\   r_   rb   r@   rA   rB   s   @r'   rE   rE   i   s)   ø‡ € ñ÷ð ò(Sò
÷	
ð 	
r*   rE   c                   óf   a € ] tR t^ 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V tR# )ÚFailureElementTestszb
Tests for L{FailureElement} and related helpers which can render a
L{Failure} as an HTML string.
c                óê   € R pVP                   P                  ^,           V n         V! 4        R#   \         d8    \	        RR7      T n        T P
                  P                  R,          T n         R# i ; i)z?
Create a L{Failure} which can be used by the rendering tests.
c                  ó   € R p \        V 4      h)zThis is a problem)Ú	Exception)Úmessages    r'   ÚlineNumberProbeAlsoBrokenÚ<FailureElementTests.setUp.<locals>.lineNumberProbeAlsoBroken«   s   € Ø)ˆGÜ˜GÓ$Ð$r*   T)ÚcaptureVarsNéÿÿÿÿ)Ú__code__Úco_firstlinenoÚbaseÚBaseExceptionr   ÚfailureÚframesÚframe)r$   rj   s   & r'   ÚsetUpÚFailureElementTests.setUp¦   s]   € ò
	%ð
 .×6Ñ6×EÑEÈÕIˆŒ	ð	1Ù%Ö'øÜô 	1Ü"¨tÔ4ˆDŒLØŸ™×,Ñ,¨RÕ0ˆD�Jð	1ús   §0 °>A2Á1A2c                ó"  € \        \        \        P                  ! \        P                  ! RR7      \        P                  ! RR7      4      4      ^2R4      p\        RV4      pRpVP                  V P                  VP                  R4      4       V# )z>
L{_SourceLineElement} renders a source line and line number.
Ú
lineNumber©rS   Ú
sourceLinez    print 'hello'Nu:   <div><span>50</span><span> Â  Â print 'hello'</span></div>zutf-8)	r   r   r   ÚdivÚspanr   ÚaddCallbackr   Úencode)r$   ÚelementÚdr4   s   &   r'   Útest_sourceLineElementÚ*FailureElementTests.test_sourceLineElement¸   s{   € ô %ÜÜ—’œŸš¨,Ô7¼¿ºÈ,Ô9WÓXóð Øó
ˆô ˜$ Ó(ˆðOð 	ð 	
�‰�d×&Ñ&¨¯©¸Ó(@ÔAØˆr*   c                ó^  € \        \        \        P                  ! \        P                  ! RR7      \        P                  ! RR7      RR7      4      V P
                  4      p. R
Op\        RV4      pRp\        V4       F~  w  rVRpV^8:  d@   WGP                  RR.V^8H  ,          V P                  V,           RV,           4      ,          pKM  WGP                  RV P                  V,           RV,           4      ,          pK€  	  VP                  R	4      pVP                  V P                  V4       V# )zk
L{_SourceFragmentElement} renders source lines at and around the line
number indicated by a frame object.
rx   ry   rz   ÚsourceLinesÚ Nz?<div class="snippet{}Line"><span>{}</span><span>{}</span></div>Ú	HighlightÚutf8)u#    Â  Â message = "This is a problem"u    Â  Â raise Exception(message)r…   u    Â  Â  Â  Â )r   r   r   r{   r|   rt   r   Ú	enumeraterK   rp   r~   r}   r   )	r$   r   Úsourcer€   ÚstringToCheckForrx   rz   ÚtemplateÚbytesToCheckFors	   &        r'   Útest_sourceFragmentElementÚ.FailureElementTests.test_sourceFragmentElementË   s  € ô
 )ÜÜ—’Ü—I’I \Ô2Ü—I’I \Ô2Ø(ôóð �J‰Jó	
ˆò
ˆô
 ˜$ Ó(ˆàÐÜ&/°Ö&7Ñ"ˆJØXˆHØ˜QŒØ §O¡OØ˜Ð% j°A¡oÕ6Ø—I‘I 
Õ*Ø.°Õ;ó%õ Ò ð !§O¡OØ˜Ÿ	™	 JÕ.°°jµó%õ Ò ñ '8ð +×1Ñ1°&Ó9ˆà	�‰�d×&Ñ&¨Ô8Øˆr*   c           	     ó  € \        \        \        P                  ! RR7      4      V P                  4      p\        RV4      pVP                  V P                  R\        \        P                  R4      4      ,           R,           4       V# )z�
The I{filename} renderer of L{_FrameElement} renders the filename
associated with the frame object used to initialize the
L{_FrameElement}.
Úfilenamery   Nó   <span>Úcó   </span>)r   r   r   r|   rt   r   r}   r   r   Ú__file__Úrstrip©r$   r   r€   s   &  r'   Útest_frameElementFilenameÚ-FailureElementTests.test_frameElementFilenameõ   sg   € ô  ¤	¬$¯)ª)¸:Ô*FÓ GÈÏÉÓTˆÜ˜$ Ó(ˆØ	�‰ð ×ÑØœ¤h§o¡o°cÓ&:Ó;Õ;¸jÕHô		
ð ˆr*   c                óð   € \        \        \        P                  ! RR7      4      V P                  4      p\        RV4      pVP                  V P                  RV P                  ^,           3,          4       V# )z’
The I{lineNumber} renderer of L{_FrameElement} renders the line number
associated with the frame object used to initialize the
L{_FrameElement}.
rx   ry   Ns   <span>%d</span>)	r   r   r   r|   rt   r   r}   r   rp   r–   s   &  r'   Útest_frameElementLineNumberÚ/FailureElementTests.test_frameElementLineNumber  sX   € ô  ¤	¬$¯)ª)¸<Ô*HÓ IÈ4Ï:É:ÓVˆÜ˜$ Ó(ˆØ	�‰�d×&Ñ&Ð(:¸d¿i¹iÈ!½mÐ=MÕ(MÔNØˆr*   c                ó¾   € \        \        \        P                  ! RR7      4      V P                  4      p\        RV4      pVP                  V P                  R4       V# )z�
The I{function} renderer of L{_FrameElement} renders the line number
associated with the frame object used to initialize the
L{_FrameElement}.
Úfunctionry   Ns&   <span>lineNumberProbeAlsoBroken</span>)r   r   r   r|   rt   r   r}   r   r–   s   &  r'   Útest_frameElementFunctionÚ-FailureElementTests.test_frameElementFunction  sH   € ô  ¤	¬$¯)ª)¸:Ô*FÓ GÈÏÉÓTˆÜ˜$ Ó(ˆØ	�‰�d×&Ñ&Ð(QÔRØˆr*   c                ó^  € \        RV P                  4      pVP                  R4      p\        P                  ! 4       pV! RV4      pV P                  V\        4       V P                  VP                  V P                  4       V P                  V.VP                  P                  4       4       R# )z³
The I{source} renderer of L{_FrameElement} renders the source code near
the source filename/line number associated with the frame object used to
initialize the L{_FrameElement}.
Nr‰   )r   rt   ÚlookupRenderMethodr   r{   ÚassertIsInstancer   ÚassertIdenticalr   ÚloaderÚload©r$   r   ÚrendererÚtagÚresults   &    r'   Útest_frameElementSourceÚ+FailureElementTests.test_frameElementSource  sƒ   € ô    d§j¡jÓ1ˆØ×-Ñ-¨hÓ7ˆÜ�hŠh‹jˆÙ˜$ Ó$ˆØ×Ñ˜fÔ&<Ô=Ø×Ñ˜VŸ\™\¨4¯:©:Ô6Ø×Ñ˜#˜ §¡× 2Ñ 2Ó 4Ö5r*   c                ó   € \        RV P                  P                  R,          4      pVP                  R4      p\        P
                  ! 4       pV! RV4      pV P                  V\        4       V P                  V^ ,          \        4       V P                  V^ ,          P                  V P                  P                  ^ ,          4       V P                  V^,          \        4       V P                  V^,          P                  V P                  P                  ^,          4       V P                  V^ ,          P                  P                  4       V^,          P                  P                  4       4       V P                  ^\        V4      4       R# )z„
The I{frames} renderer of L{_StackElement} renders each stack frame in
the list of frames used to initialize the L{_StackElement}.
N:NrG   Nrs   )r   rr   rs   r¡   r   r{   r¢   Úlistr   r£   rt   ÚassertNotEqualr¤   r¥   r   Úlenr¦   s   &    r'   Útest_stackElementÚ%FailureElementTests.test_stackElement)  s  € ô
    d§l¡l×&9Ñ&9¸"Õ&=Ó>ˆØ×-Ñ-¨hÓ7ˆÜ�hŠh‹jˆÙ˜$ Ó$ˆØ×Ñ˜f¤dÔ+Ø×Ñ˜f Q�i¬Ô7Ø×Ñ˜V A�YŸ_™_¨d¯l©l×.AÑ.AÀ!Õ.DÔEØ×Ñ˜f Q�i¬Ô7Ø×Ñ˜V A�YŸ_™_¨d¯l©l×.AÑ.AÀ!Õ.DÔEà×Ñ˜F 1�I×,Ñ,×1Ñ1Ó3°V¸AµY×5EÑ5E×5JÑ5JÓ5LÔMØ×Ñ˜œC ›KÖ(r*   c                óp  € \        V P                  4      pVP                  R4      p\        P                  ! 4       pV! RV4      pV P                  V\        4       V P                  VP                  V P                  P                  4       V P                  V.VP                  P                  4       4       R# )zk
The I{traceback} renderer of L{FailureElement} renders the failure's
stack frames using L{_StackElement}.
Ú	tracebackN)r   rr   r¡   r   r{   r¢   r   r£   ÚstackFramesrs   r   r¤   r¥   r¦   s   &    r'   Útest_failureElementTracebackÚ0FailureElementTests.test_failureElementTraceback;  sˆ   € ô
 ! §¡Ó.ˆØ×-Ñ-¨kÓ:ˆÜ�hŠh‹jˆÙ˜$ Ó$ˆØ×Ñ˜f¤mÔ4Ø×Ñ˜V×/Ñ/°·±×1DÑ1DÔEØ×Ñ˜#˜ §¡× 2Ñ 2Ó 4Ö5r*   c           	     óÞ   € \        V P                  \        \        P                  ! RR7      4      4      p\        RV4      pRpVP                  V P                  RV,           R,           4       V# )zQ
The I{type} renderer of L{FailureElement} renders the failure's
exception type.
Útypery   Ns   builtins.Exceptionr‘   r“   ©r   rr   r   r   r|   r   r}   r   )r$   r   r€   Úexcs   &   r'   Útest_failureElementTypeÚ+FailureElementTests.test_failureElementTypeH  sU   € ô
 ! §¡¬y¼¿ºÈ&Ô9QÓ/RÓSˆÜ˜$ Ó(ˆØ#ˆØ	�‰�d×&Ñ&¨	°C­¸*Õ(DÔEØˆr*   c           	     ó¾   € \        V P                  \        \        P                  ! RR7      4      4      p\        RV4      pVP                  V P                  R4       V# )zQ
The I{value} renderer of L{FailureElement} renders the value's exception
value.
Úvaluery   Ns   <span>This is a problem</span>r¹   r–   s   &  r'   Útest_failureElementValueÚ,FailureElementTests.test_failureElementValueS  sH   € ô
 ! §¡¬y¼¿ºÈ'Ô9RÓ/SÓTˆÜ˜$ Ó(ˆØ	�‰�d×&Ñ&Ð(IÔJØˆr*   )rp   rr   rt   N)r;   r<   r=   r>   r?   ru   r�   r�   r—   rš   rž   rª   r°   rµ   r»   r¿   r@   rA   rB   s   @r'   re   re       sG   ø‡ € ñò
1ò$ò&(òTò 	ò	ò6ò)ò$6ò	÷ð r*   re   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )ÚFormatFailureTestsi^  z}
Tests for L{twisted.web.util.formatFailure} which returns an HTML string
representing the L{Failure} instance passed to it.
c                óL   € V P                  \        \        \        4       4       R# )ze
If there is an error flattening the L{Failure} instance,
L{formatFailure} raises L{FlattenerError}.
N)r,   r	   r   Úobjectr[   s   &r'   Útest_flattenerErrorÚ&FormatFailureTests.test_flattenerErrord  s   € ð
 	×Ñœ.¬-¼»ÖBr*   c                ó<  €  \        R4      h  \         d    \        \        4       4      p Mi ; iT P	                  T\
        4       T P                  \        ;QJ d    R T 4       F  '       d   K   RM	  RM! R T 4       4      4       T P                  RT4       R# )zµ
The return value of L{formatFailure} is a C{str} instance (not a
C{unicode} instance) with numeric character references for any non-ASCII
characters meant to appear in the output.
zFake bugc              3   ó*   "  € T F	  q^€8  x € K  	  R# 5i)é€   Nr:   )Ú.0Úchs   & r'   Ú	<genexpr>Ú7FormatFailureTests.test_returnsBytes.<locals>.<genexpr>w  s   é € Ð6©v¨ žH«vùs   ‚FTs   &#160;N)	rh   rq   r   r   r¢   rJ   Ú
assertTrueÚallÚassertIn)r$   r©   s   & r'   Útest_returnsBytesÚ$FormatFailureTests.test_returnsBytesk  st   € ð	.Ü˜JÓ'Ð'øÜô 	.Ü"¤7£9Ó-ŠFð	.úð 	×Ñ˜f¤eÔ,Ø�‰Ÿ›Ñ6©vÓ6ŸŸšÑ6©vÓ6Ó6Ô7à�‰�i Ö(s   ‚ �.­.r:   N)	r;   r<   r=   r>   r?   rÅ   rÑ   r@   rA   rB   s   @r'   rÂ   rÂ   ^  s   ø‡ € ñò
C÷)ð )r*   rÂ   c                   ó,   a € ] tR tRt o R tR tRtV tR# )Ú
SDResourcei|  c                ó   € Wn         R # ©N©Údefault)r$   rØ   s   &&r'   Ú__init__ÚSDResource.__init__}  s   € ØŽr*   c                ó’   € \         P                  ! V P                  4      p\        P                  ! V4      pVP
                  ! W4      # rÖ   )r   ÚsucceedrØ   r   r   ÚgetChildWithDefault)r$   Únamer%   r€   r   s   &&&  r'   rÝ   ÚSDResource.getChildWithDefault€  s5   € Ü�MŠM˜$Ÿ,™,Ó'ˆÜ×(Ò(¨Ó+ˆØ×+Ò+¨DÓ:Ð:r*   r×   N)r;   r<   r=   r>   rÙ   rÝ   r@   rA   rB   s   @r'   rÔ   rÔ   |  s   ø‡ € ò÷;ð ;r*   rÔ   c                   ó6   a € ] tR tRt o RtR tR tR tRtV t	R# )ÚDeferredResourceTestsi†  z 
Tests for L{DeferredResource}.
c                óÖ   € \         P                  ! 4       p^Vn        \        V4      p\	        . RO4      p\         P
                  ! W#4       V P                  VP                  RR.4       R# )é   ÚbarÚbazN)Úfoorä   rå   )r   ÚResourceÚisLeafrÔ   r   ÚgetChildForRequestr   Úpostpath)r$   ÚrÚsr€   s   &   r'   ÚtestDeferredResourceÚ*DeferredResourceTests.testDeferredResource‹  sQ   € Ü×ÒÓˆØˆŒÜ�q‹MˆÜÒ.Ó/ˆÜ×#Ò# AÔ)Ø×Ñ˜Ÿ™ e¨U ^Ö4r*   c                óð   € . p\        . 4      pVP                  Vn        \        P                  ! 4       p\        \        P                  ! V4      4      pVP                  V4       V P                  W.4       R# )z�
L{DeferredResource} uses the request object's C{render} method to
render the resource which is the result of the L{Deferred} being
handled.
N)	r   ÚappendrS   r   rç   r   r   rÜ   r   )r$   Úrenderedr%   r©   ÚdeferredResources   &    r'   Útest_renderÚ!DeferredResourceTests.test_render“  s^   € ð ˆÜ˜rÓ"ˆØ!Ÿ™ˆŒä×"Ò"Ó$ˆÜ+¬E¯MªM¸&Ó,AÓBÐØ×Ñ Ô(Ø×Ñ˜ 8Ö,r*   c                ó~  € \        . 4      pVP                  4       p\        \        4       4      p\	        \
        P                  ! V4      4      pVP                  V4       V P                  V P                  V4      V4       ?\        P                  ! 4        V P                  \        4      pV P                  V. 4       R# )z�
If the L{Deferred} fails, L{DeferredResource} reports the failure via
C{processingFailed}, and does not cause an unhandled error to be
logged.
N)r   ÚnotifyFinishr   ÚRuntimeErrorr   r   ÚfailrS   r   ÚfailureResultOfÚgcÚcollectÚflushLoggedErrors)r$   r%   r€   rr   rò   Úerrorss   &     r'   Útest_renderNoFailureÚ*DeferredResourceTests.test_renderNoFailure¢  s‘   € ô ˜rÓ"ˆØ× Ñ Ó"ˆÜœ,›.Ó)ˆÜ+¬E¯JªJ°wÓ,?Ó@ÐØ×Ñ Ô(Ø×Ñ˜×-Ñ-¨aÓ0°'Ô:ØÜ
�
Š
ŒØ×'Ñ'¬Ó5ˆØ×Ñ˜ Ö$r*   r:   N)
r;   r<   r=   r>   r?   rí   ró   rþ   r@   rA   rB   s   @r'   rá   rá   †  s   ø‡ € ñò5ò-÷%ð %r*   rá   ),r?   rú   Útwisted.internetr   Útwisted.python.compatr   Útwisted.python.failurer   Útwisted.trial.unittestr   r   Útwisted.webr   r   Útwisted.web.errorr	   Útwisted.web.httpr
   Útwisted.web.serverr   Útwisted.web.templater   r   r   Útwisted.web.test.requesthelperr   r   Útwisted.web.utilr   r   r   r   r   r   r   r   r   r   rE   re   rÂ   rç   rÔ   rá   r:   r*   r'   Ú<module>r     s–   ðñó 
å "Ý /Ý *ß @ß &Ý ,Ý "Ý &ß ?Ñ ?ß E÷
÷ 
õ 
ôE)�hô E)ôP4
Ð-ô 4
ôn{˜(ô {ô|)˜ô )ô<;�×"Ñ"ô ;ô+%Ð/ö +%r*   