+
    üÐjp/  ã                  ó`  € R t ^ RIHt ^ RIt^ RI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 ^ 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# ^ RI$H%t%H&t& ^ RI'H(t(H)t)H*t*H+t+ ^ RI,H-t- ^ RI.H/t/ ^ RI0H1t1 ]2! 4       t3 ! R R]4      t4 ! R R]4      t5R# )z
Tests for L{twisted.web.tap}.
)ÚannotationsN)Úcast)ÚskipIf)Ú	endpointsÚreactor)ÚIReactorCoreÚIReactorUNIX)ÚFilePath)ÚrequireModule)Ú
ThreadPool)Ú
UsageError)ÚPBServerFactory)ÚTestCase)Údemo)ÚResourcePublisherÚUserDirectory)ÚPythonScript)ÚSite)ÚDataÚFile)ÚOptionsÚ_AddHeadersResourceÚmakePersonalServerFactoryÚmakeService)ÚDummyRequest)Ú	CGIScript)ÚWSGIResourcec                  ó   € ] tR t^(tRtR R ltR R lt]! ]P                  ! ]
4      '       * R4      R R l4       tR	 R
 ltR R ltR R ltR R lt]! ]P                  ! ]
4      '       * R4      R R l4       t]! ]P                  ! ]
4      '       * R4      R R l4       tR R ltR R ltR R ltR R lt]! ]! R4      RJR4      R  R! l4       t]! ]! R4      RJ R"4      R# R$ l4       tR% R& ltR' R( ltR) R* ltR+ R, ltR- R. ltR/tR# )0ÚServiceTestsz<
Tests for the service creation APIs in L{twisted.web.tap}.
c               ó   € V ^8„  d   QhRR/# )é   Úreturnztuple[FilePath[str], File]© )Úformats   "Ú;/usr/lib/python3/dist-packages/twisted/web/test/test_tap.pyÚ__annotate__ÚServiceTests.__annotate__-   s   € ÷ ñ Ð7ñ ó    c                óº   € \        V P                  4       4      pVP                  4        \        4       pVP	                  RVP
                  .4       VR,          pW3# )aK  
Helper for the I{--path} tests which creates a directory and creates
an L{Options} object which uses that directory as its static
filesystem root.

@return: A two-tuple of a L{FilePath} referring to the directory and
    the value associated with the C{'root'} key in the L{Options}
    instance after parsing a I{--path} option.
ú--pathÚroot)r	   ÚmktempÚmakedirsr   ÚparseOptionsÚpath)Úselfr.   Úoptionsr*   s   &   r$   Ú_pathOptionÚServiceTests._pathOption-   sL   € ô ˜Ÿ™›Ó&ˆØ�‰ŒÜ“)ˆØ×Ñ˜h¨¯	©	Ð2Ô3Ø�v�ˆØˆzÐr'   c               ó   € V ^8„  d   QhRR/# ©r    r!   ÚNoner"   )r#   s   "r$   r%   r&   >   s   € ÷ /ñ /˜4ñ /r'   c                ó¢   € V P                  4       w  rV P                  V\        4       V P                  VP                  VP                  4       R# )zr
The I{--path} option causes L{Options} to create a root resource
which serves responses from the specified path.
N)r1   ÚassertIsInstancer   ÚassertEqualr.   ©r/   r.   r*   s   &  r$   Ú	test_pathÚServiceTests.test_path>   s<   € ð
 ×%Ñ%Ó'‰
ˆØ×Ñ˜d¤DÔ)Ø×Ñ˜Ÿ™ D§I¡IÖ.r'   z0The reactor does not support UNIX domain socketsc               ó   € V ^8„  d   QhRR/# r4   r"   )r#   s   "r$   r%   r&   K   s   € ÷ >ñ > ñ >r'   c                ó2  € \        V P                  4       4      pVP                  4        V P                  4       p\        4       pVP	                  RRV,           RVP
                  .4       \        V4      pVP                  4        V P                  VP                  4       V P                  VP                  ^ ,          P                  P                  \        4       V P                  VP                  ^ ,          P                  P                  P
                  VP
                  4       V P!                  \"        P
                  P%                  V4      4       V P!                  \&        P(                  ! \"        P&                  ! V4      P*                  4      4       R# )z�
The I{--path} option to L{makeService} causes it to return a service
which will listen on the server address given by the I{--port} option.
ú--portúunix:r)   N)r	   r+   r,   r   r-   r.   r   ÚstartServiceÚ
addCleanupÚstopServicer7   ÚservicesÚfactoryÚresourcer   r8   Ú
assertTrueÚosÚexistsÚstatÚS_ISSOCKÚst_mode)r/   r.   Úportr0   Úservices   &    r$   Útest_pathServerÚServiceTests.test_pathServerG   s
  € ô ˜Ÿ™›Ó&ˆØ�‰ŒØ�{‰{‹}ˆÜ“)ˆØ×Ñ˜h¨°$­¸À$Ç)Á)ÐLÔMÜ˜gÓ&ˆØ×ÑÔØ�‰˜×+Ñ+Ô,Ø×Ñ˜g×.Ñ.¨qÕ1×9Ñ9×BÑBÄDÔIØ×Ñ˜×)Ñ)¨!Õ,×4Ñ4×=Ñ=×BÑBÀDÇIÁIÔNØ�‰œŸ™Ÿ™ tÓ,Ô-Ø�‰œŸš¤b§g¢g¨d£m×&;Ñ&;Ó<Ö=r'   c               ó   € V ^8„  d   QhRR/# r4   r"   )r#   s   "r$   r%   r&   ]   s   € ÷ Iñ I 4ñ Ir'   c                ó¶   € V P                  4       w  rVP                  R4      P                  R4       V P                  VP	                  RR4      \
        4       R# )z
The I{--path} option creates a root resource which serves a
L{CGIScript} instance for any child with the C{".cgi"} extension.
zfoo.cgir'   N)r1   ÚchildÚ
setContentr7   ÚgetChildr   r9   s   &  r$   Útest_cgiProcessorÚServiceTests.test_cgiProcessor]   sF   € ð
 ×%Ñ%Ó'‰
ˆØ�
‰
�9Ó×(Ñ(¨Ô-Ø×Ñ˜dŸm™m¨I°tÓ<¼iÖHr'   c               ó   € V ^8„  d   QhRR/# r4   r"   )r#   s   "r$   r%   r&   f   s   € ÷ Lñ L 4ñ Lr'   c                ó¶   € V P                  4       w  rVP                  R4      P                  R4       V P                  VP	                  RR4      \
        4       R# )z‚
The I{--path} option creates a root resource which serves a
L{PythonScript} instance for any child with the C{".epy"} extension.
zfoo.epyr'   N)r1   rR   rS   r7   rT   r   r9   s   &  r$   Útest_epyProcessorÚServiceTests.test_epyProcessorf   sF   € ð
 ×%Ñ%Ó'‰
ˆØ�
‰
�9Ó×(Ñ(¨Ô-Ø×Ñ˜dŸm™m¨I°tÓ<¼lÖKr'   c               ó   € V ^8„  d   QhRR/# r4   r"   )r#   s   "r$   r%   r&   o   s   € ÷ 4ñ 4 4ñ 4r'   c                ó*  € V P                  4       w  rVP                  R4      P                  R4       VP                  RR4      pV P	                  V\
        4       V P                  VP                  R4       V P                  VP                  R4       R# )zš
The I{--path} option creates a root resource which serves the
C{resource} global defined by the Python source in any child with
the C{".rpy"} extension.
zfoo.rpysN   from twisted.web.static import Data
resource = Data('content', 'major/minor')
NÚcontentzmajor/minor)	r1   rR   rS   rT   r7   r   r8   ÚdataÚtype)r/   r.   r*   rR   s   &   r$   Útest_rpyProcessorÚServiceTests.test_rpyProcessoro   sz   € ð ×%Ñ%Ó'‰
ˆØ�
‰
�9Ó×(Ñ(ð;ô	
ð —‘˜i¨Ó.ˆØ×Ñ˜e¤TÔ*Ø×Ñ˜Ÿ™ YÔ/Ø×Ñ˜Ÿ™ ]Ö3r'   c               ó   € V ^8„  d   QhRR/# r4   r"   )r#   s   "r$   r%   r&      s   € ÷ <ñ <°ñ <r'   c                óþ   € \        \        RR4      4      p\        V4      pV P                  V\        4       V P                  VP
                  \        4       V P                  VP
                  P                  V4       R# )zo
L{makePersonalServerFactory} returns a PB server factory which has
as its root object a L{ResourcePublisher}.
s   foo barz
text/plainN)	r   r   r   r7   r   r*   r   ÚassertIdenticalÚsite)r/   re   ÚserverFactorys   &  r$   Útest_makePersonalServerFactoryÚ+ServiceTests.test_makePersonalServerFactory   sb   € ô ”D˜ \Ó2Ó3ˆÜ1°$Ó7ˆØ×Ñ˜m¬_Ô=Ø×Ñ˜m×0Ñ0Ô2CÔDØ×Ñ˜]×/Ñ/×4Ñ4°dÖ;r'   c               ó   € V ^8„  d   QhRR/# r4   r"   )r#   s   "r$   r%   r&   �   s   € ÷ >ñ > Tñ >r'   c                ó¾  € V P                  4       p\        4       pVP                  RRV,           R.4       \        V4      pVP	                  4        V P                  VP                  4       V P                  \        P                  P                  V4      4       V P                  \        P                  ! \        P                  ! V4      P                  4      4       R# )z‘
The I{--personal} option to L{makeService} causes it to return a
service which will listen on the server address given by the I{--port}
option.
r>   r?   ú
--personalN)r+   r   r-   r   r@   rA   rB   rF   rG   r.   rH   rI   rJ   rK   )r/   rL   r0   rM   s   &   r$   Útest_personalServerÚ ServiceTests.test_personalServerŒ   s“   € ð �{‰{‹}ˆÜ“)ˆØ×Ñ˜h¨°$­¸ÐEÔFÜ˜gÓ&ˆØ×ÑÔØ�‰˜×+Ñ+Ô,Ø�‰œŸ™Ÿ™ tÓ,Ô-Ø�‰œŸš¤b§g¢g¨d£m×&;Ñ&;Ó<Ö=r'   c               ó   € V ^8„  d   QhRR/# r4   r"   )r#   s   "r$   r%   r&   £   s   € ÷ 	>ñ 	>¨$ñ 	>r'   c                ó  € \        4       pVP                  R.4       \        P                  P	                  \        P                  P                  R\        P                  4      4      pV P                  VR,          ^ ,          RV 24       R# )z¦
If the I{--port} option not specified but the I{--personal} option is,
L{Options} defaults the port to C{UserDirectory.userSocketName} in the
user's home directory.
rk   Ú~Úportsr?   N)	r   r-   rG   r.   Ú
expanduserÚjoinr   ÚuserSocketNamer8   )r/   r0   r.   s   &  r$   Útest_defaultPersonalPathÚ%ServiceTests.test_defaultPersonalPathŸ   sd   € ô “)ˆØ×Ñ˜l˜^Ô,Ü�w‰w×!Ñ!¤"§'¡'§,¡,¨s´M×4PÑ4PÓ"QÓRˆØ×Ñ˜ Õ)¨!Õ,°°d°V¨nÖ=r'   c               ó   € V ^8„  d   QhRR/# r4   r"   )r#   s   "r$   r%   r&   ®   s   € ÷ 	
ñ 	
 $ñ 	
r'   c                ó´   € \        4       pVP                  . 4       V P                  \        P                  ! VR,          ^ ,          R4      R,          R4       R# )zT
If the I{--port} option is not specified, L{Options} defaults the port
to C{8080}.
rq   N:Nr    N)ÚTCP)i�  N)r   r-   r8   r   Ú_parseServer©r/   r0   s   & r$   Útest_defaultPortÚServiceTests.test_defaultPort®   sI   € ô
 “)ˆØ×Ñ˜RÔ Ø×ÑÜ×"Ò" 7¨7Õ#3°AÕ#6¸Ó=¸bÕAÐCXö	
r'   c               ó   € V ^8„  d   QhRR/# r4   r"   )r#   s   "r$   r%   r&   ¹   s   € ÷ 3ñ 3˜tñ 3r'   c                óÀ   € \        4       pVP                  . RO4       V P                  RVR,          ^ ,          4       V P                  RVR,          ^,          4       R# )zA
If the I{--http} option is given twice, there are two listeners
Ú8001rq   Ú8002N)ú--listenztcp:8001r‚   ztcp:8002©r   r-   ÚassertInr{   s   & r$   Útest_twoPortsÚServiceTests.test_twoPorts¹   sJ   € ô “)ˆØ×ÑÒMÔNØ�‰�f˜g gÕ.¨qÕ1Ô2Ø�‰�f˜g gÕ.¨qÕ1Ö2r'   c               ó   € V ^8„  d   QhRR/# r4   r"   )r#   s   "r$   r%   r&   Â   s   € ÷ 1ñ 1˜4ñ 1r'   c                ó  € \        4       pVP                  R\        R,           .4       VR,          pV P                  V\        4       V P                  VP                  \        4       V P                  \        VP                  \        4      4       V P                  VP                  \        4       V P                  VP                  P                  4       \        \         \        4      P#                  R4       V P                  VP                  P                  4       V P                  VP                  P$                  4       \        \         \        4      P#                  R4       V P                  VP                  P$                  4       R# )z¡
The I{--wsgi} option takes the fully-qualifed Python name of a WSGI
application object and creates a L{WSGIResource} at the root which
serves that application.
ú--wsgiz.applicationr*   ÚstartupÚshutdownN)r   r-   Ú__name__rF   r   rd   Ú_reactorr   Ú
isinstanceÚ_threadpoolr   Ú_applicationÚapplicationÚassertFalseÚstartedr   r   ÚfireSystemEventÚjoined)r/   r0   r*   s   &  r$   Ú	test_wsgiÚServiceTests.test_wsgiÂ   s  € ô “)ˆØ×Ñ˜h¬°>Õ(AÐBÔCØ�v�ˆØ�‰˜œlÔ+Ø×Ñ˜TŸ]™]¬GÔ4Ø�‰œ
 4×#3Ñ#3´ZÓ@ÔAØ×Ñ˜T×.Ñ.´Ô<ð 	×Ñ˜×)Ñ)×1Ñ1Ô2ÜŒ\œ7Ó#×3Ñ3°IÔ>Ø�‰˜×(Ñ(×0Ñ0Ô1Ø×Ñ˜×)Ñ)×0Ñ0Ô1ÜŒ\œ7Ó#×3Ñ3°JÔ?Ø�‰˜×(Ñ(×/Ñ/Ö0r'   c               ó   € V ^8„  d   QhRR/# r4   r"   )r#   s   "r$   r%   r&   Ø   s   € ÷ Nñ N¨ñ Nr'   c                óÊ   € \        4       p\        R,           R3 FE  pV P                  \        VP                  RV.4      pV P                  \        V4      RV: 24       KG  	  R# )zV
If I{--wsgi} is given an invalid name, L{Options.parseOptions}
raises L{UsageError}.
z.nosuchthingzfoo.r‰   zNo such WSGI application: N)r   rŒ   ÚassertRaisesr   r-   r8   Ústr)r/   r0   ÚnameÚexcs   &   r$   Útest_invalidApplicationÚ$ServiceTests.test_invalidApplicationØ   s[   € ô
 “)ˆÜ Õ.°Ó7ˆDØ×#Ñ#¤J°×0DÑ0DÀxÐQUÐFVÓWˆCØ×ÑœS ›XÐ)CÀDÁ8Ð'LÖMó 8r'   zOpenSSL.SSLNzSSL module is available.c               ó   € V ^8„  d   QhRR/# r4   r"   )r#   s   "r$   r%   r&   ã   s   € ÷ 	Iñ 	I¨tñ 	Ir'   c                ó¤   € \        4       pV P                  \        VP                  R.4      pV P	                  RVP
                  ^ ,          4       R# )zX
An L{UsageError} is raised when C{https} is requested but there is no
support for SSL.
ú--https=443zSSL support not installedN)r   rš   r   r-   r8   Úargs)r/   r0   Ú	exceptions   &  r$   Útest_HTTPSFailureOnMissingSSLÚ*ServiceTests.test_HTTPSFailureOnMissingSSLâ   sA   € ô “)ˆà×%Ñ%¤j°'×2FÑ2FÈÈÓXˆ	à×ÑÐ4°i·n±nÀQÕ6GÖHr'   zSSL module is not available.c               ó   € V ^8„  d   QhRR/# r4   r"   )r#   s   "r$   r%   r&   ï   s   € ÷ 	2ñ 	2°$ñ 	2r'   c                ó¾   € \        4       pVP                  R.4       V P                  RVR,          ^ ,          4       V P                  RVR,          ^ ,          4       R# )z=
When SSL support is present, it accepts the --https option.
r¢   Ússlrq   Ú443Nrƒ   r{   s   & r$   Ú test_HTTPSAcceptedOnAvailableSSLÚ-ServiceTests.test_HTTPSAcceptedOnAvailableSSLî   sK   € ô
 “)ˆà×Ñ˜m˜_Ô-à�‰�e˜W WÕ-¨aÕ0Ô1Ø�‰�e˜W WÕ-¨aÕ0Ö1r'   c               ó   € V ^8„  d   QhRR/# r4   r"   )r#   s   "r$   r%   r&   ú   s   € ÷ Pñ P¨ñ Pr'   c                óv   € \        4       pVP                  . RO4       V P                  VR,          RR.4       R# )z5
When --add-header is specific, the value is parsed.
ÚextraHeadersN©ú--add-headerzK1: V1r±   zK2: V2©ÚK1ÚV1©ÚK2ÚV2)r   r-   r8   r{   s   & r$   Útest_add_header_parsingÚ$ServiceTests.test_add_header_parsingú   s4   € ô “)ˆØ×ÑÒQÔRØ×Ñ˜ Õ0°<ÀÐ2NÖOr'   c               ó   € V ^8„  d   QhRR/# r4   r"   )r#   s   "r$   r%   r&     s   € ÷ Eñ E¨$ñ Er'   c                ó`  € \        4       pVP                  . RO4       \        V4      pVP                  ^ ,          P                  P
                  pV P                  V\        4       V P                  VP                  RR.4       V P                  VP                  \        P                  4       R# )zR
When --add-header is specified, the resource is a composition that adds
headers.
Nr°   r²   rµ   )r   r-   r   rC   rD   rE   r7   r   r8   Ú_headersÚ_originalResourcer   ÚTest)r/   r0   rM   rE   s   &   r$   Útest_add_header_resourceÚ%ServiceTests.test_add_header_resource  s†   € ô
 “)ˆØ×ÑÒQÔRÜ˜gÓ&ˆØ×#Ñ# AÕ&×.Ñ.×7Ñ7ˆØ×Ñ˜hÔ(;Ô<Ø×Ñ˜×*Ñ*¨\¸<Ð,HÔIØ×Ñ˜h×8Ñ8¼$¿)¹)ÖDr'   c               ó   € V ^8„  d   QhRR/# r4   r"   )r#   s   "r$   r%   r&     s   € ÷ +ñ +¨dñ +r'   c                óJ  € \        4       pVP                  R.4       \        V4       V P                  V P                  .4      pV P                  V^ ,          R,          \        4       V P                  V^ ,          R,          R4       V P                  \        V4      ^4       R# )z'
Passing --notracebacks is deprecated.
z--notracebacksÚcategoryÚmessagez/--notracebacks was deprecated in Twisted 19.7.0N)r   r-   r   ÚflushWarningsÚtest_noTracebacksDeprecationr8   ÚDeprecationWarningÚlen)r/   r0   Úwarningss   &  r$   rÆ   Ú)ServiceTests.test_noTracebacksDeprecation  s‹   € ô “)ˆØ×ÑÐ.Ð/Ô0Ü�GÔà×%Ñ% t×'HÑ'HÐ&IÓJˆØ×Ñ˜ !� ZÕ0Ô2DÔEØ×ÑØ�Q�K˜	Õ"Ð$Uô	
ð 	×Ñœ˜X›¨Ö*r'   c               ó   € V ^8„  d   QhRR/# r4   r"   )r#   s   "r$   r%   r&     s   € ÷ Gñ G¨ñ Gr'   c                óÀ   € \        4       pVP                  R.4       \        V4      pV P                  VP                  ^ ,          P
                  P                  4       R# )zU
Passing --display-tracebacks will enable traceback rendering on the
generated Site.
z--display-tracebacksN)r   r-   r   rF   rC   rD   ÚdisplayTracebacks©r/   r0   rM   s   &  r$   Útest_displayTracebacksÚ#ServiceTests.test_displayTracebacks  sJ   € ô
 “)ˆØ×ÑÐ4Ð5Ô6Ü˜gÓ&ˆØ�‰˜×(Ñ(¨Õ+×3Ñ3×EÑEÖFr'   c               ó   € V ^8„  d   QhRR/# r4   r"   )r#   s   "r$   r%   r&   (  s   € ÷ Hñ H°ñ Hr'   c                ó¾   € \        4       pVP                  . 4       \        V4      pV P                  VP                  ^ ,          P
                  P                  4       R# )z\
Not passing --display-tracebacks will leave traceback rendering on the
generated Site off.
N)r   r-   r   r’   rC   rD   rÍ   rÎ   s   &  r$   Útest_displayTracebacksNotGivenÚ+ServiceTests.test_displayTracebacksNotGiven(  sH   € ô
 “)ˆØ×Ñ˜RÔ Ü˜gÓ&ˆØ×Ñ˜×)Ñ)¨!Õ,×4Ñ4×FÑFÖGr'   r"   )rŒ   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r1   r:   r   r   Ú
providedByr   rN   rU   rY   r`   rg   rl   ru   r|   r…   r–   rž   r
   r¥   r«   r¸   r¿   rÆ   rÏ   rÓ   Ú__static_attributes__r"   r'   r$   r   r   (   s6  † ñõõ"/ñ Ø×#Ò# GÓ,Ô,Ø:óô>ó	ð>õ$IõLõ4õ <ñ Ø×#Ò# GÓ,Ô,Ø:óô>ó	ð>ñ Ø×#Ò# GÓ,Ô,Ø:óô	>ó	ð	>õ	
õ3õ1õ,Nñ ‰M˜-Ó(°Ð4Ð6PÓQô	Ió Rð	Iñ ‰M˜-Ó(¨DÐ0Ð2PÓQô	2ó Rð	2õPõEõ+õG÷Hñ Hr'   r   c                  ó"   € ] tR tRtR R ltRtR# )ÚAddHeadersResourceTestsi3  c               ó   € V ^8„  d   QhRR/# r4   r"   )r#   s   "r$   r%   Ú$AddHeadersResourceTests.__annotate__4  s   € ÷ Nñ N¨$ñ Nr'   c                ó4  € \        \        P                  ! 4       . RO4      p\        . 4      pVP	                  RV4       V P                  VP                  P                  R4      RR.4       V P                  VP                  P                  R4      R.4       R# )	zK
When getChildWithDefault is invoked, it adds the headers to the
response.
r³   r´   r¶   r·   ÚV3Ú N)r²   rµ   )r³   rà   )r   r   r¾   r   ÚgetChildWithDefaultr8   ÚresponseHeadersÚgetRawHeaders)r/   rE   Úrequests   &  r$   Útest_getChildWithDefaultÚ0AddHeadersResourceTests.test_getChildWithDefault4  s~   € ô
 'Ü�IŠI‹KÒCó
ˆô ˜rÓ"ˆØ×$Ñ$ R¨Ô1Ø×Ñ˜×0Ñ0×>Ñ>¸tÓDÀtÈTÀlÔSØ×Ñ˜×0Ñ0×>Ñ>¸tÓDÀtÀfÖMr'   r"   N)rŒ   rÕ   rÖ   r×   ræ   rÚ   r"   r'   r$   rÜ   rÜ   3  s   † ÷Nñ Nr'   rÜ   )6rØ   Ú
__future__r   rG   rI   Útypingr   Úunittestr   Útwisted.internetr   r   Útwisted.internet.interfacesr   r   Útwisted.python.filepathr	   Útwisted.python.reflectr
   Útwisted.python.threadpoolr   Útwisted.python.usager   Útwisted.spread.pbr   Útwisted.trial.unittestr   Útwisted.webr   Útwisted.web.distribr   r   Útwisted.web.scriptr   Útwisted.web.serverr   Útwisted.web.staticr   r   Útwisted.web.tapr   r   r   r   Útwisted.web.test.requesthelperr   Útwisted.web.twcgir   Útwisted.web.wsgir   Úobjectr‘   r   rÜ   r"   r'   r$   Ú<module>rý      s}   ðñõ #ã 	Û Ý Ý ç /ß BÝ ,Ý 0Ý 0Ý +Ý -Ý +Ý ß @Ý +Ý #ß )÷ó õ 8Ý 'Ý )á‹h€ôHH�8ô HHôVN˜hö Nr'   