ó
    ×›‘h¹o  ã                   ó†  • S r SSKrSSKJrJrJr  SSKJrJrJ	r	  SSK
JrJrJrJr  SSKJr  SSKJr  SSKJr  SS	KJrJr  SS
KJr   " S S\R4                  5      r " S S5      r " S S\R4                  5      r " S S\R<                  5      r\R@                  " \\RB                  5         " S S\R4                  5      r"g)z%
Tests for L{twisted.words.service}.
é    N)ÚcheckersÚcredentialsÚportal)ÚaddressÚdeferÚreactor)ÚDeferredÚDeferredListÚmaybeDeferredÚsucceed)Úpb)Úproto_helpers)Úunittest)ÚewordsÚservice)Úircc                   óJ   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)Ú
RealmTestsé   c                 óä  • [         R                  " S5      nSUR                  5       -   n[        USUR	                  5       -   5      n[        USUR	                  5       -   5      nSUR	                  5       -   S-   n[        [
        SUR	                  5       -   5      n[        [
        SUR	                  5       -   5      nU R                  U" U5      5      n	U R                  X9R                  5        U R                  U" U5      5      R                  U5        [        X&S5        U R                  U" S	UR                  5       -   5      5      n	U R                  S	UR                  5       -   U	R                  5        U R                  U" S	UR                  5       -   5      5      n
U R                  Xš5        [        X&S
5        U R                  U" SUR                  5       -   5      5      R                  U5        g )NÚ	realmnameÚtestÚcreateÚgetÚ	OnRequestÚ	DuplicateÚNoSuchTÚnewFÚanother)r   ÚInMemoryWordsRealmÚlowerÚgetattrÚtitler   ÚsuccessResultOfÚassertEqualÚnameÚfailureResultOfÚtrapÚsetattrÚassertIdentical)ÚselfÚkindÚrealmr&   r   r   ÚflagÚdupExcÚ	noSuchExcÚpÚnewps              ÚcC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/words/test/test_service.pyÚ_entityCreationTestÚRealmTests._entityCreationTest   sŠ  € ä×*Ò*¨;Ó7ˆà˜Ÿ
™
›Ñ$ˆÜ˜ ¨4¯:©:«<Ñ 7Ó8ˆÜ�e˜U T§Z¡Z£\Ñ1Ó2ˆØ˜$Ÿ*™*›,Ñ&¨Ñ4ˆÜœ ¨t¯z©z«|Ñ!;Ó<ˆÜœF H¨t¯z©z«|Ñ$;Ó<ˆ	ð × Ñ ¡¨£Ó.ˆØ×Ñ˜Ÿv™vÔ&ð 	×Ñ™V D›\Ó*×/Ñ/°Ô7ô 	�˜TÔ"Ø× Ñ ¡ U¨T¯Z©Z«\Ñ%9Ó!:Ó;ˆØ×Ñ˜ §¡£Ñ-¨q¯v©vÔ6ð ×#Ñ#¡C¨°·
±
³Ñ(<Ó$=Ó>ˆØ×Ñ˜QÔ%ô 	�˜UÔ#Ø×Ñ™S ¨T¯Z©Z«\Ñ!9Ó:Ó;×@Ñ@ÀÕKó    c                 ó$   • U R                  S5      $ )NÚUser©r4   ©r+   s    r3   ÚtestUserCreationÚRealmTests.testUserCreation4   s   € Ø×'Ñ'¨Ó/Ð/r6   c                 ó$   • U R                  S5      $ )NÚGroupr9   r:   s    r3   ÚtestGroupCreationÚRealmTests.testGroupCreation7   s   € Ø×'Ñ'¨Ó0Ð0r6   c                 ó®  • [         R                  " S5      nU R                  UR                  S5      5      nU R                  UR	                  S5      5      nU R                  X#5        U R                  UR                  S5      5      nU R                  X45        U R                  UR                  S5      5      R                  [        R                  5        g )Nr   ÚtestuserÚ
nosuchuser)r   r    r$   Ú
createUserÚgetUserr*   Ú
lookupUserr'   r(   r   Ú
NoSuchUser)r+   r-   ÚuserÚ	retrievedÚlookedUps        r3   ÚtestUserRetrievalÚRealmTests.testUserRetrieval:   s¯   € Ü×*Ò*¨;Ó7ˆð ×#Ñ# E×$4Ñ$4°ZÓ$@ÓAˆð ×(Ñ(¨¯©°zÓ)BÓCˆ	Ø×Ñ˜TÔ-ð ×'Ñ'¨×(8Ñ(8¸Ó(DÓEˆØ×Ñ˜YÔ1ð 
×	Ñ	˜e×.Ñ.¨|Ó<Ó	=×	BÑ	BÄ6×CTÑCTÕ	Ur6   c                 ó‚  • [         R                  " S5      n[         R                  " S5      nU R                  UR	                  U5      5      nU R                  X#5        U R                  UR                  S5      5      nU R                  X45        U R                  UR                  S5      5      nU R                  XE5        g )Nr   rB   )r   r    r8   r$   ÚaddUserr*   rE   rF   )r+   r-   r1   rH   rI   rJ   s         r3   ÚtestUserAdditionÚRealmTests.testUserAdditionK   s�   € Ü×*Ò*¨;Ó7ˆô �LŠL˜Ó$ˆØ×#Ñ# E§M¡M°!Ó$4Ó5ˆØ×Ñ˜QÔ%ð ×(Ñ(¨¯©°zÓ)BÓCˆ	Ø×Ñ˜TÔ-ð ×'Ñ'¨×(8Ñ(8¸Ó(DÓEˆØ×Ñ˜YÕ1r6   c                 óL  • [         R                  " S5      nU R                  UR                  S5      5      nU R                  UR	                  S5      5      nU R                  X#5        U R                  UR	                  S5      5      R                  [        R                  5        g )Nr   Ú	testgroupÚnosuchgroup)
r   r    r$   ÚcreateGroupÚgetGroupr*   r'   r(   r   ÚNoSuchGroup)r+   r-   ÚgrouprI   s       r3   ÚtestGroupRetrievalÚRealmTests.testGroupRetrieval[   s|   € Ü×*Ò*¨;Ó7ˆà×$Ñ$ U×%6Ñ%6°{Ó%CÓDˆà×(Ñ(¨¯©¸Ó)DÓEˆ	à×Ñ˜UÔ.à	×	Ñ	˜eŸn™n¨]Ó;Ó	<×	AÑ	AÄ&×BTÑBTÕ	Ur6   c                 óþ   • [         R                  " S5      n[         R                  " S5      nU R                  UR	                  U5      5        U R                  UR                  S5      5      nU R                  X#5        g )Nr   rR   Ú	testGroup)r   r    r>   r$   ÚaddGrouprU   r*   )r+   r-   r1   rW   s       r3   ÚtestGroupAdditionÚRealmTests.testGroupAdditionf   s^   € Ü×*Ò*¨;Ó7ˆä�MŠM˜+Ó&ˆØ×Ñ˜UŸ^™^¨AÓ.Ô/Ø×$Ñ$ U§^¡^°KÓ%@ÓAˆØ×Ñ˜QÕ&r6   c                 ó°   • [         R                  " S5      nU R                  UR                  S5      5        U R                  UR	                  S5      5        g)zº
Try creating a group with the same name as an existing user and
assert that it succeeds, since users and groups should not be in the
same namespace and collisions should be impossible.
r   r   N)r   r    r$   rD   rT   )r+   r-   s     r3   ÚtestGroupUsernameCollisionÚ%RealmTests.testGroupUsernameCollisionn   sF   € ô ×*Ò*¨;Ó7ˆà×Ñ˜U×-Ñ-¨fÓ5Ô6Ø×Ñ˜U×.Ñ.¨vÓ6Õ7r6   c                 óv  • [         R                  " S5      nU R                  UR                  S5      5        U R                  UR                  S5      5        U R                  UR	                  5       5      nU Vs/ s H  o3R
                  PM     nnUR                  5         U R                  USS/5        g s  snf )Nr   ÚgrouponeÚgrouptwo)r   r    r$   rT   Ú
itergroupsr&   Úsortr%   )r+   r-   ÚgroupsÚgÚns        r3   ÚtestEnumerationÚRealmTests.testEnumerationy   s–   € Ü×*Ò*¨;Ó7ˆØ×Ñ˜U×.Ñ.¨zÓ:Ô;à×Ñ˜U×.Ñ.¨zÓ:Ô;à×%Ñ% e×&6Ñ&6Ó&8Ó9ˆá#Ó$šV˜�VŒV™VˆÐ$Ø	�‰ŒØ×Ñ˜˜Z¨Ð4Õ5ùò %s   Á:B6© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r4   r;   r?   rK   rO   rX   r]   r`   rj   Ú__static_attributes__rl   r6   r3   r   r      s2   † òLò>0ò1òWò"2ò 	Wò'ò	8õ
6r6   r   c                   óJ   • \ rS rSr\R
                  " SSS5      4S jrS rSrg)	ÚTestCaseUserAggé†   ÚTCPú	127.0.0.1i1Ô  c                 ó&  • Xl         [        R                  " 5       U l        UR	                  U5      U l        U R
                  U R                  l        U R
                  U R                   l        U R
                  R                  U R                  5        g ©N)rH   r   Ú StringTransportWithDisconnectionÚ	transportÚbuildProtocolÚprotocolÚmindÚmakeConnection)r+   rH   r-   Úfactoryr   s        r3   Ú__init__ÚTestCaseUserAgg.__init__‡   s`   € ð Œ	Ü&×GÒGÓIˆŒØ×-Ñ-¨gÓ6ˆŒØ"&§-¡-ˆ�‰ÔØŸ™ˆ�	‰	ŒØ�‰×$Ñ$ T§^¡^Õ4r6   c                 ó:   • U R                   R                  U5        g rx   )r|   ÚdataReceived)r+   Ústuffs     r3   ÚwriteÚTestCaseUserAgg.write•   s   € Ø�‰×"Ñ" 5Õ)r6   )r|   rz   rH   N)	rm   rn   ro   rp   r   ÚIPv4Addressr€   r…   rq   rl   r6   r3   rs   rs   †   s    † ð ×#Ò# E¨;¸Ó>ô5õ*r6   rs   c                   ó´   • \ rS rSr/ SQrS rS rSS jrS rSS jr	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)ÚIRCProtocolTestsé™   )ÚuseruserÚ	otheruserÚsomeguyÚ	firstuserÚusernameÚuseroneÚusertwoÚ	userthreeÚuserfours   userfiveÚsomeuserc                 óJ  • [         R                  " S5      U l        [        R                  " 5       U l        [        R                  " U R                  U R
                  /5      U l        [         R                  " U R                  U R                  5      U l	        / nU R                   Hq  n[        U[        5      (       a  UR                  S5      nUR                  U R                  R                  U5      5        U R
                  R!                  X"S-   5        Ms     [#        U5      $ )Nr   úutf-8Ú	_password)r   r    r-   r   Ú'InMemoryUsernamePasswordDatabaseDontUseÚcheckerr   ÚPortalÚ
IRCFactoryr   ÚSTATIC_USERSÚ
isinstanceÚbytesÚdecodeÚappendrD   rN   r
   )r+   ÚcÚnicks      r3   ÚsetUpÚIRCProtocolTests.setUp¨   sÊ   € Ü×/Ò/°Ó<ˆŒ
Ü×GÒGÓIˆŒÜ—m’m D§J¡J°·±°Ó?ˆŒÜ×)Ò)¨$¯*©*°d·k±kÓBˆŒàˆØ×%Ô%ˆDÜ˜$¤×&Ñ&Ø—{‘{ 7Ó+�Ø�H‰H�T—Z‘Z×*Ñ*¨4Ó0Ô1Ø�L‰L× Ñ  ¨kÑ'9Ö:ñ	 &ô
 ˜A‹Ðr6   c                 ó  • U R                  U5      n[        R                  [        R                  [        R                  [        R
                  /nU H  u  pEnXS;   d  M  UR                  U5        M      U R                  USU< 35        g)z�
The user has been greeted with the four messages that are (usually)
considered to start an IRC session.

Asserts that the required responses were received.
zMissing responses for N)Ú	_responser   ÚRPL_WELCOMEÚRPL_YOURHOSTÚRPL_CREATEDÚ
RPL_MYINFOÚremoveÚassertFalse)r+   rH   ÚresponseÚexpectedÚprefixÚcommandÚargss          r3   Ú_assertGreetingÚ IRCProtocolTests._assertGreeting¶   sm   € ð —>‘> $Ó'ˆÜ—O‘O¤S×%5Ñ%5´s·±ÌÏÉÐWˆÛ%-Ñ!ˆF˜TØÕ"Ø—‘ Ö(ñ &.ð 	×Ñ˜Ð%;¸H¹<Ð#HÕIr6   Nc                 óh   • Uc  US-   nUR                  SU S35        UR                  SU S35        g )Nr—   zPASS z
zNICK z extrainfo
)r…   )r+   rH   r¢   Úpasswords       r3   Ú_loginÚIRCProtocolTests._loginÅ   s<   € ØÑØ˜kÑ)ˆHØ�
‰
�U˜8˜* DÐ)Ô*Ø�
‰
�U˜4˜& Ð/Õ0r6   c                 ó¼   • U R                  U R                  R                  U5      5      n[        X R                  U R                  5      nU R                  X15        U$ rx   )r$   r-   rF   rs   r   r¶   )r+   r&   rH   Úaggs       r3   Ú_loggedInUserÚIRCProtocolTests._loggedInUserË   sF   € Ø×#Ñ# D§J¡J×$9Ñ$9¸$Ó$?Ó@ˆÜ˜d§J¡J°·±Ó=ˆØ�‰�CÔØˆ
r6   c                 ó4  • UR                   R                  5       nUR                  S5      nUR                  5       nUR                   R	                  5         / n[        [        R                  U5       H"  nUb  US   U:X  d  M  UR                  U5        M$     U$ )z‹
Extracts the user's response, and returns a list of parsed lines.
If messageType is defined, only messages of that type will be returned.
r–   é   )	rz   ÚvaluerŸ   Ú
splitlinesÚclearÚmapr   Úparsemsgr    )r+   rH   ÚmessageTyper­   ÚresultÚmessages         r3   r¦   ÚIRCProtocolTests._responseÑ   s€   € ð
 —>‘>×'Ñ'Ó)ˆØ—?‘? 7Ó+ˆØ×&Ñ&Ó(ˆØ�‰×ÑÔØˆÜœ3Ÿ<™<¨Ö2ˆGØÑ" g¨a¡j°KÕ&?Ø—‘˜gÖ&ñ 3ð ˆr6   c                 óH   • U R                  S5      nU R                  U5        g )NrŽ   )rº   r²   )r+   rH   s     r3   ÚtestPASSLoginÚIRCProtocolTests.testPASSLoginà   s    € Ø×!Ñ! +Ó.ˆØ×Ñ˜TÕ"r6   c                 ó<  • U R                  U R                  R                  S5      5      n[        XR                  U R                  5      nUR                  S5        U R                  US5      nU R                  [        U5      S5        U R                  US   S   [        R                  5        U R                  US   S   S5        U R                  US   S   SS/5        UR                  R                  5         UR                  S5        U R                  U5        g	)
z•
Sending NICK without PASS will prompt the user for their password.
When the user sends their password to NickServ, it will respond with a
Greeting.
rŽ   zNICK firstuser extrainfo
ÚPRIVMSGr½   r   é   z	Password?z%PRIVMSG nickserv firstuser_password
N)r$   r-   rF   rs   r   r…   r¦   r%   Úlenr   ÚNICKSERVrz   rÀ   r²   ©r+   rŽ   rH   r­   s       r3   Útest_nickServLoginÚ#IRCProtocolTests.test_nickServLoginä   sæ   € ð ×(Ñ(¨¯©×)>Ñ)>¸{Ó)KÓLˆ	ä˜y¯*©*°d·l±lÓCˆØ�
‰
Ð1Ô2Ø—>‘> $¨	Ó2ˆØ×Ñœ˜X›¨Ô*Ø×Ñ˜ !™ Q™¬×)9Ñ)9Ô:Ø×Ñ˜ !™ Q™¨Ô3Ø×Ñ˜ !™ Q™¨+°{Ð)CÔDØ�‰×ÑÔà�
‰
Ð<Ô=Ø×Ñ˜TÕ"r6   c                 óL  • U R                  U R                  R                  S5      5      n[        XR                  U R                  5      nU R                  USS5        U R                  US5      nU R                  [        U5      S5        U R                  US   S   SS/5        g )NrŽ   Ú	wrongpassrË   r½   r   rÌ   zLogin failed.  Goodbye.)	r$   r-   rF   rs   r   r¶   r¦   r%   rÍ   rÏ   s       r3   ÚtestFailedLoginÚ IRCProtocolTests.testFailedLoginø   s‡   € Ø×(Ñ(¨¯©×)>Ñ)>¸{Ó)KÓLˆ	ä˜y¯*©*°d·l±lÓCˆØ�‰�D˜+ {Ô3Ø—>‘> $¨	Ó2ˆØ×Ñœ˜X›¨Ô*Ø×Ñ˜ !™ Q™¨+Ð7PÐ)QÕRr6   c                 ó4  ^• / mU R                  U R                  R                  S5      5      n[        XR                  U R                  5      nU R                  US5        U4S jUR                  l        UR                  S5        U R                  TS/5        g )NrŽ   c                  ó&   >• T R                  S5      $ )NT)r    )Úlogouts   €r3   Ú<lambda>Ú-IRCProtocolTests.testLogout.<locals>.<lambda>  s   ø€  v§}¡}°TÔ':r6   zQUIT
T)
r$   r-   rF   rs   r   r¶   r|   rØ   r…   r%   )r+   rŽ   rH   rØ   s      @r3   Ú
testLogoutÚIRCProtocolTests.testLogout  ss   ø€ ØˆØ×(Ñ(¨¯©×)>Ñ)>¸{Ó)KÓLˆ	ä˜y¯*©*°d·l±lÓCˆØ�‰�D˜+Ô&Ü:ˆ�‰ÔØ�
‰
�:ÔØ×Ñ˜ $ Õ(r6   c                 ó‚  • U R                  U R                  R                  S5      5      nU R                  U R                  R                  S5      5      nSUR                  S'   [        XR                  U R                  5      nU R                  US5        UR                  R                  5         UR                  S5        U R                  U5      nU R                  [        U5      S5        U R                  US   S   S5        U R                  US   S	   S
5        U R                  US   S   S/5        U R                  US	   S	   S5        U R                  US   S	   S5        U R                  US   S	   S5        U R                  US   S	   S5        U R                  S5      nUR                  R                  5         UR                  R                  5         UR                  S5        U R                  U5      nU R                  U5      nU R                  [        U5      S	5        U R                  US   S   S5        U R                  US   S	   S
5        U R                  US   S   S/5        U R                  US	   S   S5        U R                  US	   S	   S5        U R                  US	   S   / SQ/ SQ/5        g )NrŽ   Úsomechannelzsome random topicÚtopicúJOIN #somechannel
é   r   zfirstuser!firstuser@realmnamer½   ÚJOINrÌ   ú#somechannelÚ353Ú366é   Ú332é   Ú333rŒ   úotheruser!otheruser@realmnamer   )rŒ   Ú=rã   zfirstuser otheruser)rŒ   rë   rã   zotheruser firstuser)r$   r-   rF   rT   Úmetars   r   r¶   rz   rÀ   r…   r¦   r%   rÍ   rº   ÚassertIn)r+   rŽ   rÞ   rH   r­   ÚotherÚevents          r3   ÚtestJoinÚIRCProtocolTests.testJoin  st  € Ø×(Ñ(¨¯©×)>Ñ)>¸{Ó)KÓLˆ	à×*Ñ*¨4¯:©:×+AÑ+AÀ-Ó+PÓQˆà$7ˆ×Ñ˜Ñ!ô ˜y¯*©*°d·l±lÓCˆØ�‰�D˜+Ô&Ø�‰×ÑÔØ�
‰
Ð*Ô+à—>‘> $Ó'ˆØ×Ñœ˜X›¨Ô*ð 	×Ñ˜ !™ Q™Ð)HÔIØ×Ñ˜ !™ Q™¨Ô0Ø×Ñ˜ !™ Q™¨.Ð)9Ô:ð 	×Ñ˜ !™ Q™¨Ô/Ø×Ñ˜ !™ Q™¨Ô/ð 	×Ñ˜ !™ Q™¨Ô/Ø×Ñ˜ !™ Q™¨Ô/ð ×"Ñ" ;Ó/ˆà�‰×ÑÔØ�‰×ÑÔØ�‰Ð+Ô,ð —>‘> %Ó(ˆà—‘˜tÓ$ˆØ×Ñœ˜U› QÔ'Ø×Ñ˜˜q™ !™Ð&EÔFØ×Ñ˜˜q™ !™ fÔ-Ø×Ñ˜˜q™ !™ ~Ð&6Ô7à×Ñ˜ !™ Q™¨Ô5Ø×Ñ˜ !™ Q™¨Ô/Ø�‰Ø�Q‰K˜‰NâIÚIðõ	
r6   c                 ó  • U R                  U R                  R                  S5      5      nU R                  U R                  R                  S5      5        [	        XR                  U R
                  5      nU R                  US5        UR                  R                  5         UR                  S5        U R                  U5      nU Vs/ s H  oDS   PM	     nnU R                  SU5        U R                  SU5        gs  snf )zW
When a user joins a group without a topic, no topic information is
sent to that user.
rŽ   rÞ   rà   r½   rç   ré   N)r$   r-   rF   rT   rs   r   r¶   rz   rÀ   r…   r¦   ÚassertNotIn)r+   rŽ   rH   r­   ÚrÚresponseCodess         r3   Útest_joinTopiclessÚ#IRCProtocolTests.test_joinTopiclessB  sÊ   € ð
 ×(Ñ(¨¯©×)>Ñ)>¸{Ó)KÓLˆ	à×Ñ˜TŸZ™Z×3Ñ3°MÓBÔCô ˜y¯*©*°d·l±lÓCˆØ�‰�D˜+Ô&Ø�‰×ÑÔØ�
‰
Ð*Ô+à—>‘> $Ó'ˆÙ'/Ó0¢x !˜1œ¡xˆÐ0Ø×Ñ˜ Ô.Ø×Ñ˜ Õ.ùò 1s   ÃC<c                 ó†  • U R                  S5      nU R                  U R                  R                  S5      5        UR	                  S5        UR
                  R                  5         U R                  S5      nUR	                  S5        UR
                  R                  5         UR
                  R                  5         UR	                  S5        U R                  U5      nU R                  U5      nU R                  [        U5      S5        U R                  US   S   S5        U R                  US   S   S	5        U R                  US   S
   SS/5        U R                  X45        UR	                  S5        UR
                  R                  5         UR
                  R                  5         UR	                  S5        U R                  U5      nU R                  U5      nU R                  [        U5      S5        U R                  US   S   S5        U R                  US   S   S	5        U R                  US   S
   SS/5        U R                  X45        UR	                  S5        UR
                  R                  5         UR
                  R                  5         UR	                  S5        U R                  U5      nU R                  U5      nU R                  [        U5      S5        U R                  US   S   S5        U R                  US   S   S	5        U R                  US   S
   SS/5        U R                  X45        g )Nr‹   rÞ   rà   rŒ   zPART #somechannel
r½   r   úuseruser!useruser@realmnameÚPARTrÌ   rã   Úleavingz(PART #somechannel :goodbye stupidheads
zgoodbye stupidheadss   JOIN #somechannel
s)   PART #somechannel :goodbye stupidheads1
zgoodbye stupidheads1©
rº   r$   r-   rT   r…   rz   rÀ   r¦   r%   rÍ   ©r+   rH   rî   r­   rï   s        r3   Ú	testLeaveÚIRCProtocolTests.testLeaveV  s²  € Ø×!Ñ! *Ó-ˆà×Ñ˜TŸZ™Z×3Ñ3°MÓBÔCà�
‰
Ð*Ô+Ø�‰×ÑÔà×"Ñ" ;Ó/ˆà�‰Ð+Ô,à�‰×ÑÔØ�‰×ÑÔà�
‰
Ð*Ô+à—>‘> $Ó'ˆØ—‘˜uÓ%ˆà×Ñœ˜X›¨Ô*Ø×Ñ˜ !™ Q™Ð)FÔGØ×Ñ˜ !™ Q™¨Ô0Ø×Ñ˜ !™ Q™¨.¸)Ð)DÔEØ×Ñ˜Ô)ð 	�
‰
Ð*Ô+à�‰×ÑÔØ�‰×ÑÔà�
‰
Ð?Ô@à—>‘> $Ó'ˆØ—‘˜uÓ%ˆà×Ñœ˜X›¨Ô*Ø×Ñ˜ !™ Q™Ð)FÔGØ×Ñ˜ !™ Q™¨Ô0Ø×Ñ˜ !™ Q™¨.Ð:OÐ)PÔQØ×Ñ˜Ô)à�
‰
Ð+Ô,à�‰×ÑÔØ�‰×ÑÔà�
‰
ÐAÔBà—>‘> $Ó'ˆØ—‘˜uÓ%ˆà×Ñœ˜X›¨Ô*Ø×Ñ˜ !™ Q™Ð)FÔGØ×Ñ˜ !™ Q™¨Ô0Ø×Ñ˜ !™ Q™¨.Ð:PÐ)QÔRØ×Ñ˜Õ)r6   c                 ó°  • U R                  S5      n[        R                  " S5      nSUR                  S'   SUR                  S'   SUR                  S'   U R	                  U R
                  R                  U5      5        UR                  R                  5         UR                  S	5        U R                  U5      nU R                  US
   S   S5        U R                  US
   S   S5        U R                  US
   S   / SQ5        U R                  US   S   S5        U R                  US   S   / SQ5        UR                  R                  5         UR                  S5        U R                  U5      nU R                  US   S   S5        U R                  US   S   / SQ5        U R                  US   S   S5        U R                  US   S   / SQ5        g )Nr‹   rÞ   úThis is a test topic.rß   Úsome_fellowÚtopic_authoriqË¢Ú
topic_daterà   ræ   r   r   r½   rç   rÌ   )r‹   rã   r  rè   ré   )r‹   rã   r  Ú77777777úTOPIC #somechannel
)rº   r   r>   rì   r$   r-   r\   rz   rÀ   r…   r¦   r%   )r+   rH   rW   r­   s       r3   ÚtestGetTopicÚIRCProtocolTests.testGetTopic‘  s­  € Ø×!Ñ! *Ó-ˆä—’˜mÓ,ˆØ5ˆ�
‰
�7ÑØ%2ˆ�
‰
�>Ñ"Ø#+ˆ�
‰
�<Ñ à×Ñ˜TŸZ™Z×0Ñ0°Ó7Ô8à�‰×ÑÔØ�
‰
Ð*Ô+à—>‘> $Ó'ˆà×Ñ˜ !™ Q™¨Ô5Ø×Ñ˜ !™ Q™¨Ô/ð 	×ÑØ�Q‰K˜‰NÒQô	
ð 	×Ñ˜ !™ Q™¨Ô/Ø×ÑØ�Q‰K˜‰NÒSô	
ð 	�‰×ÑÔà�
‰
Ð+Ô,à—>‘> $Ó'ˆà×Ñ˜ !™ Q™¨Ô/Ø×ÑØ�Q‰K˜‰NÒQô	
ð 	×Ñ˜ !™ Q™¨Ô/Ø×ÑØ�Q‰K˜‰NÒSõ	
r6   c                 ój  • U R                  S5      nU R                  U R                  R                  S5      5      nUR	                  S5        U R                  S5      nUR	                  S5        UR
                  R                  5         UR
                  R                  5         UR	                  S5        U R                  U5      nU R                  U5      nU R                  XE5        U R                  US   S   S5        U R                  US   S   S	5        U R                  US   S
   SS/5        UR
                  R                  5         SUR                  S'   UR	                  S5        U R                  U5      nU R                  US   S   S5        U R                  US   S
   / SQ5        U R                  US   S   S5        U R                  US   S
   / SQ5        UR
                  R                  5         UR	                  S5        U R                  U5      nU R                  US   S   S5        g )Nr‹   rÞ   rà   rŒ   z,TOPIC #somechannel :This is the new topic.
r   rê   r½   ÚTOPICrÌ   rã   úThis is the new topic.i90  r  r  rç   )rŒ   rã   r  ré   )rŒ   rã   rŒ   Ú12345zTOPIC #asdlkjasd
Ú403)
rº   r$   r-   rT   r…   rz   rÀ   r¦   r%   rì   )r+   rH   rÞ   rî   r­   rï   s         r3   ÚtestSetTopicÚIRCProtocolTests.testSetTopic»  së  € Ø×!Ñ! *Ó-ˆà×*Ñ*¨4¯:©:×+AÑ+AÀ-Ó+PÓQˆà�
‰
Ð*Ô+à×"Ñ" ;Ó/ˆà�‰Ð+Ô,à�‰×ÑÔØ�‰×ÑÔà�‰ÐDÔEà—>‘> %Ó(ˆØ—‘˜tÓ$ˆà×Ñ˜Ô)à×Ñ˜ !™ Q™Ð)HÔIØ×Ñ˜ !™ Q™¨Ô1Ø×Ñ˜ !™ Q™¨.Ð:RÐ)SÔTà�‰×ÑÔà).ˆ×Ñ˜Ñ&Ø�‰Ð,Ô-à—>‘> %Ó(ˆØ×Ñ˜ !™ Q™¨Ô/Ø×ÑØ�Q‰K˜‰NÒSô	
ð 	×Ñ˜ !™ Q™¨Ô/Ø×ÑØ�Q‰K˜‰NÒOô	
ð 	�‰×ÑÔØ�‰Ð*Ô+à—>‘> %Ó(ˆØ×Ñ˜ !™ Q™¨Õ/r6   c                 óœ  • U R                  S5      nU R                  U R                  R                  S5      5        UR	                  S5        U R                  S5      nUR	                  S5        UR
                  R                  5         UR
                  R                  5         UR	                  S5        U R                  U5      nU R                  U5      nU R                  U5        U R                  [        U5      S5        U R                  US   S   S5        U R                  US   S   S	S
5        U R                  US   S   SS/5        g )Nr‹   rÞ   rà   rŒ   z%PRIVMSG #somechannel :Hello, world.
r½   r   rù   rË   éÿÿÿÿrÌ   rã   zHello, world.)rº   r$   r-   rT   r…   rz   rÀ   r¦   r¬   r%   rÍ   rý   s        r3   ÚtestGroupMessageÚ!IRCProtocolTests.testGroupMessageé  s  € Ø×!Ñ! *Ó-ˆà×Ñ˜TŸZ™Z×3Ñ3°MÓBÔCà�
‰
Ð*Ô+à×"Ñ" ;Ó/ˆà�‰Ð+Ô,à�‰×ÑÔØ�‰×ÑÔà�
‰
Ð<Ô=à—>‘> $Ó'ˆØ—‘˜uÓ%ˆà×Ñ˜Ô"Ø×Ñœ˜U› QÔ'Ø×Ñ˜˜q™ !™Ð&CÔDØ×Ñ˜˜q™ !™ i°Ô4Ø×Ñ˜˜q™ !™ ~°Ð&GÕHr6   c                 ó  • U R                  S5      nU R                  S5      nUR                  R                  5         UR                  R                  5         UR                  S5        U R	                  U5      nU R	                  U5      nU R                  U5        U R                  [        U5      S5        U R                  US   S   S5        U R                  US   S   S5        U R                  US   S   SS	/5        UR                  S
5        U R	                  U5      nU R                  [        U5      S5        U R                  US   S   S5        U R                  US   S   S5        U R                  US   S   / SQ5        g )Nr‹   rŒ   z#PRIVMSG otheruser :Hello, monkey.
r½   r   rù   rË   rÌ   zHello, monkey.z)PRIVMSG nousernamedthis :Hello, monkey.
r   Ú401)r‹   ÚnousernamedthiszNo such nick/channel.)rº   rz   rÀ   r…   r¦   r¬   r%   rÍ   rý   s        r3   ÚtestPrivateMessageÚ#IRCProtocolTests.testPrivateMessage  sW  € Ø×!Ñ! *Ó-ˆà×"Ñ" ;Ó/ˆà�‰×ÑÔØ�‰×ÑÔà�
‰
Ð:Ô;à—>‘> $Ó'ˆØ—‘˜uÓ%ˆà×Ñ˜Ô"Ø×Ñœ˜U› QÔ'Ø×Ñ˜˜q™ !™Ð&CÔDØ×Ñ˜˜q™ !™ iÔ0Ø×Ñ˜˜q™ !™ {Ð4DÐ&EÔFà�
‰
Ð@ÔAà—>‘> $Ó'ˆà×Ñœ˜X›¨Ô*Ø×Ñ˜ !™ Q™¨Ô5Ø×Ñ˜ !™ Q™¨Ô/Ø×ÑØ�Q‰K˜‰NÒTõ	
r6   c                 ó  • U R                  S5      nUR                  R                  5         UR                  S5        U R	                  U5      nU R                  [        U5      S5        U R                  US   S   S5        g )Nr‹   zOPER user pass
r½   r   Ú491©rº   rz   rÀ   r…   r¦   r%   rÍ   ©r+   rH   r­   s      r3   ÚtestOperÚIRCProtocolTests.testOper   si   € Ø×!Ñ! *Ó-ˆà�‰×ÑÔØ�
‰
Ð'Ô(Ø—>‘> $Ó'ˆà×Ñœ˜X›¨Ô*Ø×Ñ˜ !™ Q™¨Õ/r6   c                 óh  • U R                  S5      nUR                  R                  5         UR                  S5        U R	                  U5      nU R                  [        U5      S5        U R                  US   S   S5        U R                  US   S   S5        U R                  US   S   SS/5        g )	Nr‹   zMODE useruser
r½   r   r   Ú221rÌ   Ú+r  r  s      r3   ÚtestGetUserModeÚ IRCProtocolTests.testGetUserMode*  sž   € Ø×!Ñ! *Ó-ˆà�‰×ÑÔØ�
‰
Ð&Ô'à—>‘> $Ó'ˆØ×Ñœ˜X›¨Ô*Ø×Ñ˜ !™ Q™¨Ô5Ø×Ñ˜ !™ Q™¨Ô/Ø×Ñ˜ !™ Q™¨*°cÐ):Õ;r6   c                 ó  • U R                  S5      nUR                  R                  5         UR                  S5        U R	                  U5      nU R                  [        U5      S5        U R                  US   S   S5        g )Nr‹   zMODE useruser +abcd
r½   r   Ú472r  r  s      r3   ÚtestSetUserModeÚ IRCProtocolTests.testSetUserMode6  si   € Ø×!Ñ! *Ó-ˆà�‰×ÑÔØ�
‰
Ð,Ô-à—>‘> $Ó'ˆØ×Ñœ˜X›¨Ô*Ø×Ñ˜ !™ Q™¨Õ/r6   c                 óz  • U R                  S5      nU R                  U R                  R                  S5      5        UR	                  S5        UR
                  R                  5         UR	                  S5        U R                  U5      nU R                  [        U5      S5        U R                  US   S   S5        g )Nr‹   rÞ   rà   zMODE #somechannel
r½   r   Ú324rü   r  s      r3   ÚtestGetGroupModeÚ!IRCProtocolTests.testGetGroupMode@  s“   € Ø×!Ñ! *Ó-ˆà×Ñ˜TŸZ™Z×3Ñ3°MÓBÔCà�
‰
Ð*Ô+à�‰×ÑÔØ�
‰
Ð*Ô+à—>‘> $Ó'ˆØ×Ñœ˜X›¨Ô*Ø×Ñ˜ !™ Q™¨Õ/r6   c                 óz  • U R                  S5      nU R                  U R                  R                  S5      5        UR	                  S5        UR
                  R                  5         UR	                  S5        U R                  U5      nU R                  [        U5      S5        U R                  US   S   S5        g )Nr‹   Ú	groupnameúJOIN #groupname
zMODE #groupname +abcd
r½   r   r%  rü   r  s      r3   ÚtestSetGroupModeÚ!IRCProtocolTests.testSetGroupModeN  s“   € Ø×!Ñ! *Ó-ˆà×Ñ˜TŸZ™Z×3Ñ3°KÓ@ÔAà�
‰
Ð(Ô)à�‰×ÑÔØ�
‰
Ð.Ô/à—>‘> $Ó'ˆØ×Ñœ˜X›¨Ô*Ø×Ñ˜ !™ Q™¨Õ/r6   c           	      óÄ  • [         R                  " S5      nU R                  U R                  R	                  U5      5        / nS H9  nU R                  U5      nUR                  U5        US   R                  S5        M;     U H  nUR                  R                  5         M     US   R                  S5        U R                  US   5      nU R                  U R                  US   5      5        U R                  U R                  US   5      5        / SQnUS S  HÈ  u  p‰n
U R                  US	5        U R                  U	S
5        U
u  nnnnnnnnU R                  US5        U R                  US5        U R                  XÇ;   5        U R                  US	5        U R                  US	5        UR                  U5        U R                  US5        U R                  USU-   5        MÊ     U R                  U5        US   u  p‰n
U R                  US	5        U R                  U	S5        U
u  nnnU R                  US5        U R                  US5        U R                  US5        g )Nr-  )r�   r‘   r’   r  r.  r   zWHO #groupname
r½   rÌ   r   Ú352r�   z
#groupnameÚHz0 Ú315zEnd of /WHO list.)r   r>   r$   r-   r\   rº   r    r…   rz   rÀ   r¦   r¬   r%   Ú
assertTruer«   )r+   rW   Úusersr¢   ÚurH   rô   Ú	wantusersr¯   Úcoder„   ÚmynameÚ	theirnameÚ	theirhostÚtheirserverÚ	theirnickr.   ÚextraÚchannels                      r3   ÚtestWhoÚIRCProtocolTests.testWho\  s8  € Ü—’˜kÓ*ˆØ×Ñ˜TŸZ™Z×0Ñ0°Ó7Ô8àˆÛ5ˆDØ×"Ñ" 4Ó(ˆAØ�L‰L˜ŒOØ�"‰I�O‰OÐ1Ö2ñ 6ó ˆDØ�N‰N× Ñ Ö"ñ ð 	ˆa‰�‰Ð+Ô,à�N‰N˜5 ™8Ó$ˆØ×Ñ˜Ÿ™¨¨a©Ó1Ô2Ø×Ñ˜Ÿ™¨¨a©Ó1Ô2â7ˆ	Ø#$ S b£6ÑˆF˜%Ø×Ñ˜V [Ô1Ø×Ñ˜T 5Ô)ð ñ	ØØØØØØØØà×Ñ˜V YÔ/Ø×Ñ˜U LÔ1Ø�O‰O˜IÑ2Ô3Ø×Ñ˜Y¨Ô4Ø×Ñ˜[¨+Ô6Ø×Ñ˜YÔ'Ø×Ñ˜T 3Ô'Ø×Ñ˜U D¨9Ñ$4Ö5ñ+ $*ð, 	×Ñ˜Ô#à ™eÑˆ�eØ×Ñ˜ Ô-Ø×Ñ˜˜uÔ%Ø!&Ñˆ�˜Ø×Ñ˜ Ô+Ø×Ñ˜ ,Ô/Ø×Ñ˜Ð 3Õ4r6   c                 óÀ  • U R                  S5      nUR                  R                  5         U R                  U R                  R                  S5      5      nS Ul        SUR                  S'   UR                  S5        U R                  U5      nU R                  [        U5      S5        Uu  pEU R                  US   S	5        U R                  US
   S5        U R                  US   S   S5        U R                  US   S
   S5        U R                  US   S   S5        U R                  US   S   S5        U R                  US   S	5        U R                  US
   S5        U R                  US   S   S5        U R                  US   S
   S5        UR                  R                  5         UR                  S5        U R                  U5      nU R                  [        U5      S5        Uu  peU R                  US
   S5        U R                  US   S
   S5        U R                  US   S   S5        U R                  US   S   S5        U R                  US
   S5        g )Nr”   Ú	somegroupc                  ó   • [        S5      $ )Né   )r   rl   r6   r3   rÙ   Ú+IRCProtocolTests.testList.<locals>.<lambda>”  s   € ¤¨¤r6   zthis is the topic woorß   zLIST #somegroup
rÌ   r   r   r½   Ú322Ú17ræ   Ú323zEnd of /LISTzLIST
)rº   rz   rÀ   r$   r-   rT   Úsizerì   r…   r¦   r%   rÍ   )r+   rH   rD  rô   ÚrespÚendÚfg1s          r3   ÚtestListÚIRCProtocolTests.testList�  s'  € Ø×!Ñ! *Ó-ˆØ�‰×ÑÔà×(Ñ(¨¯©×)?Ñ)?ÀÓ)LÓMˆ	Ù,ˆ	ŒØ"9ˆ	�‰�wÑð 	�
‰
Ð(Ô)à�N‰N˜4Ó ˆØ×Ñœ˜Q› Ô#Ø‰	ˆà×Ñ˜˜a™ +Ô.Ø×Ñ˜˜a™ %Ô(Ø×Ñ˜˜a™ ™ ZÔ0Ø×Ñ˜˜a™ ™ [Ô1Ø×Ñ˜˜a™ ™ TÔ*Ø×Ñ˜˜a™ ™Ð%<Ô=à×Ñ˜˜Q™ Ô-Ø×Ñ˜˜Q™ Ô'Ø×Ñ˜˜Q™ ™ JÔ/Ø×Ñ˜˜Q™ ™ NÔ3à�‰×ÑÔð 	�
‰
�:ÔØ�N‰N˜4Ó ˆØ×Ñœ˜Q› Ô#à‰ˆà×Ñ˜˜Q™ Ô'Ø×Ñ˜˜Q™ ™ KÔ0Ø×Ñ˜˜Q™ ™ DÔ)Ø×Ñ˜˜Q™ ™Ð$;Ô<à×Ñ˜˜Q™ Õ'r6   c                 óL  • U R                  S5      n[        R                  " S5      nS Ul        SUl        [
        R
                  " 5       S-
  Ul        U R                  U R                  R                  U5      5        UR                  R                  5         UR                  S5        U R                  U5      nU R                  [        U5      S5        Uu  pEpgnU R                  US   S	5        U R                  US
   S5        U R                  US   S   S5        U R                  US   S
   S5        U R                  US   S   S5        U R                  US   S   S	5        U R                  US   S   S5        U R                  US   S   S5        U R                  US   S	5        U R                  US
   S5        U R                  US   S   S5        U R                  US   S
   S5        U R                  US   S   S	5        U R                  US   S   S5        U R                  US   S	5        U R                  US
   S5        U R                  US   S   S5        U R                  US   S
   S5        U R                  US   S   S5        U R                  US   S   S5        U R                  US   S   S5        U R                  US   S	5        U R                  US
   S5        U R                  US   S   S5        U R                  US   S
   S5        U R                  US   S   S5        U R                  US   S	5        U R                  US
   S5        U R                  US   S   S5        U R                  US   S
   S5        U R                  US   S   S5        g )Nr�   Úotherguyc                  ól   • [        [        R                  " S5      [        R                  " S5      /5      $ )NÚgroupAÚgroupB)Úiterr   r>   rl   r6   r3   rÙ   Ú,IRCProtocolTests.testWhois.<locals>.<lambda>¾  s#   € ¤dÜ�]Š]˜8Ó$¤g§m¢m°HÓ&=Ð>ô'
r6   é
   é   zWHOIS otherguy
rá   r   r   r½   Ú311rÌ   ræ   rè   Ú*Ú312zHi mom!Ú317Ú15Ú10zseconds idle, signon timeÚ319z#groupA #groupBÚ318zEnd of WHOIS list.)rº   r   r8   re   ÚsignOnÚtimeÚlastMessager$   r-   rN   rz   rÀ   r…   r¦   r%   rÍ   )	r+   rH   rR  rô   ÚwuserÚwserverÚidleÚchannelsrM  s	            r3   Ú	testWhoisÚIRCProtocolTests.testWhoisº  sq  € Ø×!Ñ! )Ó,ˆä—<’< 
Ó+ˆñ
ˆÔð ˆŒÜ#Ÿyšy›{¨RÑ/ˆÔà×Ñ˜TŸZ™Z×/Ñ/°Ó9Ô:à�‰×ÑÔØ�
‰
Ð'Ô(Ø�N‰N˜4Ó ˆà×Ñœ˜Q› Ô#Ø./Ñ+ˆ˜¨à×Ñ˜˜q™ ;Ô/Ø×Ñ˜˜q™ 5Ô)Ø×Ñ˜˜q™ !™ iÔ0Ø×Ñ˜˜q™ !™ jÔ1Ø×Ñ˜˜q™ !™ jÔ1Ø×Ñ˜˜q™ !™ kÔ2Ø×Ñ˜˜q™ !™ cÔ*Ø×Ñ˜˜q™ !™ jÔ1à×Ñ˜ ™ [Ô1Ø×Ñ˜ ™ UÔ+Ø×Ñ˜ ™ A™¨	Ô2Ø×Ñ˜ ™ A™¨
Ô3Ø×Ñ˜ ™ A™¨Ô4Ø×Ñ˜ ™ A™¨	Ô2à×Ñ˜˜a™ +Ô.Ø×Ñ˜˜a™ %Ô(Ø×Ñ˜˜a™ ™ YÔ/Ø×Ñ˜˜a™ ™ ZÔ0Ø×Ñ˜˜a™ ™ TÔ*Ø×Ñ˜˜a™ ™ TÔ*Ø×Ñ˜˜a™ ™Ð%@ÔAà×Ñ˜ !™ kÔ2Ø×Ñ˜ !™ eÔ,Ø×Ñ˜ !™ Q™¨Ô3Ø×Ñ˜ !™ Q™¨Ô4Ø×Ñ˜ !™ Q™Ð):Ô;à×Ñ˜˜Q™ Ô-Ø×Ñ˜˜Q™ Ô'Ø×Ñ˜˜Q™ ™ IÔ.Ø×Ñ˜˜Q™ ™ JÔ/Ø×Ñ˜˜Q™ ™Ð$8Õ9r6   )r™   r   r   r-   rx   )rm   rn   ro   rp   rœ   r£   r²   r¶   rº   r¦   rÈ   rÐ   rÔ   rÛ   rð   rö   rþ   r  r  r  r  r  r"  r&  r*  r/  rA  rO  ri  rq   rl   r6   r3   r‰   r‰   ™   sŠ   † ò€LòòJô1òôò#ò#ò(Sò)ò5
òn/ò(9*òv(
òT,0ò\Iò2
ò<0ò
<ò0ò0ò0ò15òf)(õV5:r6   r‰   c                   ó2   • \ rS rSrS rS rS rS rS rSr	g)	ÚTestMindiò  c                 ó<   • / U l         / U l        / U l        / U l        g rx   )ÚjoinsÚpartsÚmessagesrì   )r+   ÚaÚkws      r3   r€   ÚTestMind.__init__ó  s   € ØˆŒ
ØˆŒ
ØˆŒØˆ�	r6   c                 ó<   • U R                   R                  X45        g rx   )rn  r    )r+   rH   rW   s      r3   Úremote_userJoinedÚTestMind.remote_userJoinedù  s   € Ø�
‰
×Ñ˜4˜-Õ(r6   c                 ó>   • U R                   R                  XU45        g rx   )ro  r    )r+   rH   rW   Úreasons       r3   Úremote_userLeftÚTestMind.remote_userLeftü  s   € Ø�
‰
×Ñ˜4¨Ð/Õ0r6   c                 ó>   • U R                   R                  XU45        g rx   )rp  r    )r+   ÚsenderÚ	recipientrÅ   s       r3   Úremote_receiveÚTestMind.remote_receiveÿ  s   € Ø�‰×Ñ˜f°Ð9Õ:r6   c                 ó<   • U R                   R                  X45        g rx   )rì   r    )r+   rW   rì   s      r3   Úremote_groupMetaUpdateÚTestMind.remote_groupMetaUpdate  s   € Ø�	‰	×Ñ˜%˜Õ'r6   )rn  rp  rì   ro  N)
rm   rn   ro   rp   r€   ru  ry  r~  r�  rq   rl   r6   r3   rl  rl  ò  s   † òò)ò1ò;õ(r6   rl  c                   óP   • \ rS rSrS rS rS rS r\R                  S 5       r
Srg)	ÚPBProtocolTestsi	  c                 ó¦  • [         R                  " S5      U l        [        R                  " 5       U l        [        R                  " U R                  U R
                  /5      U l        [        R                  " U R                  5      U l
        U R                  U R                  l        SU R                  l        [        R                  " 5       U l        SU R                  l        [         R"                  " SU R                  5      U l        [         R&                  " SU R$                  R)                  5       R*                  U R                  5      U l        g )Nr   Tr   rv   )r   r    r-   r   r˜   r™   r   rš   r   ÚPBServerFactoryÚserverFactoryÚ_protocolFactoryr|   ÚunsafeTracebacksÚPBClientFactoryÚclientFactoryr   Ú	listenTCPÚ
serverPortÚ
connectTCPÚgetHostÚportÚ
clientConnr:   s    r3   r£   ÚPBProtocolTests.setUp
  sä   € Ü×/Ò/°Ó<ˆŒ
Ü×GÒGÓIˆŒÜ—m’m D§J¡J°·±°Ó?ˆŒÜ×/Ò/°·±Ó<ˆÔØ&*×&;Ñ&;ˆ×ÑÔ#Ø.2ˆ×ÑÔ+Ü×/Ò/Ó1ˆÔØ.2ˆ×ÑÔ+Ü!×+Ò+¨A¨t×/AÑ/AÓBˆŒÜ!×,Ò,Ø˜Ÿ™×0Ñ0Ó2×7Ñ7¸×9KÑ9Kó
ˆ�r6   c                 óP   • [         R                  " S5      U l        U R                  $ )Nr   )r   ÚBrokerÚ_serverProtocol)r+   r±   rr  s      r3   rˆ  Ú PBProtocolTests._protocolFactory  s   € Ü!Ÿyšy¨›|ˆÔØ×#Ñ#Ð#r6   c                 óæ   ^• [        5       mU R                  R                  U4S j5        [        [	        U R
                  R                  5      [	        U R                  R                  5      T/5      $ )Nc                  ó&   >• T R                  S 5      $ rx   )Úcallback)Úd3s   €r3   rÙ   Ú*PBProtocolTests.tearDown.<locals>.<lambda>  s   ø€ ¸¿¹ÀDÔ8Ir6   )	r	   r•  ÚnotifyOnDisconnectr
   r   r�  ÚstopListeningr‘  Ú
disconnect)r+   rš  s    @r3   ÚtearDownÚPBProtocolTests.tearDown  sX   ø€ Ü‹ZˆØ×Ñ×/Ñ/Ô0IÔJÜä˜dŸo™o×;Ñ;Ó<Ü˜dŸo™o×8Ñ8Ó9Øðó
ð 	
r6   c                 ó"  ^ ^^• Un[        U[        5      (       a  UR                  S5      n[        R                  " XB5      mT R
                  R                  XB5        T R                  R                  U5      nUR                  UUU 4S j5        U$ )NÚasciic                 ó<   >• TR                   R                  TT5      $ rx   )r‹  Úlogin)ÚignÚcredsr}   r+   s    €€€r3   rÙ   Ú1PBProtocolTests._loggedInAvatar.<locals>.<lambda>.  s   ø€  $×"4Ñ"4×":Ñ":¸5À$Ô"Gr6   )
r�   ÚstrÚencoder   ÚUsernamePasswordr™   rN   r-   rD   ÚaddCallback)r+   r&   rµ   r}   Ú	nameBytesÚdr¦  s   `  `  @r3   Ú_loggedInAvatarÚPBProtocolTests._loggedInAvatar'  sk   ú€ Øˆ	Ü�dœC× Ñ ØŸ™ GÓ,ˆIÜ×,Ò,¨YÓAˆØ�‰×Ñ˜YÔ1Ø�J‰J×!Ñ! $Ó'ˆØ	�‰ÖGÔHØˆr6   c              #   ój  #   • [        5       nU R                  SSU5      v •n[        5       nU R                  SSU5      v •n[        5       nU R                  SSU5      v •nU R                  R                  S5      v •  U R                  R                  S5      v •  UR	                  S5      v •nUR	                  S5      v •nUR	                  S5      v •  UR	                  S5      v •  UR	                  S5      v •  UR                  S	S
05      v •  UR                  5       v •  UR                  5       v •  g 7f)NÚones   p1Útwos   p2s   threes   p3Úfoobars   barfoos   texts   hello, monkeys)rl  r®  r-   rT   ÚjoinÚsendÚleave)	r+   Úmindoner±  Úmindtwor²  Ú	mindThreeÚthreerc   rd   s	            r3   Ú
testGroupsÚPBProtocolTests.testGroups1  s  é € ä“*ˆØ×(Ñ(¨°°wÓ?Ñ?ˆä“*ˆØ×(Ñ(¨°°wÓ?Ñ?ˆä“Jˆ	Ø×*Ñ*¨8°U¸IÓFÑFˆà�j‰j×$Ñ$ XÓ.Ò.Ø�j‰j×$Ñ$ YÓ/Ò/àŸ™ (Ó+Ñ+ˆØŸ™ )Ó,Ñ,ˆà�h‰h�xÓ Ò Ø�h‰h�yÓ!Ò!Ø�j‰j˜Ó"Ò"à�m‰m˜WÐ&7Ð8Ó9Ò9à�n‰nÓÒØ�n‰nÓÓùs   ‚D1D3)r•  r™   r‘  r‹  r   r-   r‡  r�  N)rm   rn   ro   rp   r£   rˆ  rŸ  r®  r   ÚinlineCallbacksr»  rq   rl   r6   r3   r„  r„  	  s0   † ò
ò$ò	
òð ×Ññó ór6   r„  )#Ú__doc__rc  Útwisted.credr   r   r   Útwisted.internetr   r   r   Útwisted.internet.deferr	   r
   r   r   Útwisted.spreadr   Útwisted.testr   Útwisted.trialr   Útwisted.wordsr   r   Útwisted.words.protocolsr   ÚTestCaser   rs   r‰   ÚPBMindrl  ÚsetUnjellyableForClassÚPBMindReferencer„  rl   r6   r3   Ú<module>rË     s    ðñó ç 6Ñ 6ß 4Ñ 4ß QÓ QÝ Ý &Ý "ß )Ý 'ôo6�×"Ñ"ô o6÷d*ñ *ô&V	:�x×(Ñ(ô V	:ôr(ˆw�~‰~ô (ð( × Ò ˜( G×$;Ñ$;Ô <ô@�h×'Ñ'õ @r6   