Ë ‚Ö¦i ã ó— ddlZddlZddlZddlZddlZddlZ ddlZdZddl m Z ddlm Z gd¢Z ejed¬«d ZGd „d e«ZGd „d e«ZGd„de«ZGd„de«ZGd„de«ZGd„de«ZdZdZhd£Zgd¢ZdddœZdZej<dgd¢«Zej<d gd!¢«Z d"„Z d#„Z!dVd$„Z"dVd%„Z#dWd&„Z$erd'„Z%Gd(„d)«Z&erGd*„d+e&«Z'e jQd+«ed,k(�rêddl)Z)e)jTd-¬.«Z+e+jYd/d0d1d2¬3«e+jYd4d5d6d7¬3«e+jYd8d9d:e-d;e›d«e+jYd?d@dAe-dB¬>«e+jYdCdDdEddF¬G«e+j]«Z/e/j`Z0e/j se0d:k(reZ0e&e/jbe0¬H«Z2ne0d:k(reZ0e'e/jbe0¬H«Z2e2jg«Z4dIe4vre2jk«e2jme/jl«\Z7Z8Z9Z:Z;ee-e:«e/j~z dOz«Z9e2j�e9e:«\Z7ZAeAD]a\ZBZCe eCdP«j‰dQdO«dZEe eCdR«ZFe-eCd«ZGe Ú100Ú101Ú211Ú215Ú220Ú221Ú222Ú224Ú225Ú230Ú231Ú282)ÚsubjectÚfromÚdatez message-idÚ referencesú:bytesú:linesr5r6)ÚbytesÚlinesó Ú GroupInfo)ÚgroupÚlastÚfirstÚflagÚ ArticleInfo)ÚnumberÚ message_idr8cóÜ— g}t|«D]K\}}t|t«r%|j|j |xsd««Œ;|j|«ŒMdj |«S)NÚasciiÚ)Ú_email_decode_headerÚ isinstancer7ÚappendÚdecodeÚjoin)Ú header_strÚpartsÚvÚencs rrrªs^€ð@à €EÜ& zÖ2‰ˆˆ3Ü �aœÔ Ø �L‰L˜Ÿ™ #¢.¨Ó1Õ 2à �L‰L˜�Oð 3ð �7‰7�5‹>Ðrcó†— g}|D]t}|ddk(r|ddjd«\}}}d|z}n|jd«\}}}|j«}tj||«}|j |«Œvt }t |«t |«kr td«‚|dt |«|k7r td«‚|S)NrÚ:éz$LIST OVERVIEW.FMT response too shortz*LIST OVERVIEW.FMT redefines default fields)Ú partitionÚlowerÚ_OVERVIEW_FMT_ALTERNATIVESÚgetrGÚ_DEFAULT_OVERVIEW_FMTÚlenr )r8ÚfmtÚlineÚnameÚ_ÚsuffixÚdefaultss rÚ_parse_overview_fmtr]µs΀ð$ð €CÛˆØ �‰7�cŠ>à" 1 2˜h×0Ñ0°Ó5‰OˆD�!�Vؘ‘:‰Dð#Ÿn™n¨SÓ1‰OˆD�!�VØ�z‰z‹|ˆÜ)×-Ñ-¨d°DÓ9ˆà � ‰ �4Õðô%€HÜ ˆ3ƒx”#�h“-ÒÜÐBÓCÐCØ ˆ>ŒC�‹MИhÒ&ÜÐHÓIÐIØ €Jrcó²— tt«}g}|D]¿}i}|jd«^}}t|«}t |«D]|\} } | t|«k\rŒ|| } | j d«} | |k\rE| sC| dz} | r*| dt| «j «| k7r td«‚| r| t| «dnd} | ||| <Œ~|j||f«ŒÁ|S)NÚ rOz: z?OVER/XOVER response doesn't include names of additional headers) rVrUÚsplitÚintÚ enumerateÚ startswithrRr rG)r8rWÚdata_process_funcÚ n_defaultsÚoverviewrXÚfieldsÚarticle_numberÚtokensÚiÚtokenÚ field_nameÚ is_metadataÚhs rÚ_parse_overviewroÎs€ðäÔ*Ó+€JØ€Hۈ؈Ø"&§*¡*¨TÓ"2Ј˜Ü˜^Ó,ˆÜ! &Ö)‰HˆAˆuØ”C˜“HŠ}ðؘQ™ˆJØ$×/Ñ/°Ó4ˆKØ�JŠ¡{ð Ñ%�Ù˜U 7¤C¨£F˜^×1Ñ1Ó3°qÒ8Ü'ð)FóGðGá*/˜œc !›f˜g™°T�Ø"ˆF�3�q‘6ŠNð!*ð" �‰˜¨Ð0Õ1ð+ð, €Orcó"— |€ |dd}|dd}t|dd«}t|dd«}t|dd«}t|dd«}t|dd«}t|dd«}|dkr|dz }n |dkr|d z }tj||||||«S) NiúÿÿÿéééüÿÿÿéþÿÿÿéFiÐédil)raÚdatetime)Údate_strÚtime_strÚhoursÚminutesÚsecondsÚyearÚmonthÚdays rÚ_parse_datetimer€ës€ððÐØ˜B˜C�=ˆØ˜C˜R�=ˆÜ �˜˜!� Ó €EÜ�(˜1˜Q�-Ó €GÜ�(˜1˜2�,Ó€GÜ ˆx˜˜ˆ}Ó €DÜ �˜˜B�Ó €EÜ ˆh�r�sˆmÓ €Cð ˆb‚yØ �‰ ‰Ø �ŠØ �‰ ˆÜ × Ñ ˜T 5¨#¨u°g¸wÓ GÐGrcóÞ— t|tj«sd}ndj|«}|j}|r|dz}dj||«}||fSdj||«}||fS)NÚ000000z({0.hour:02d}{0.minute:02d}{0.second:02d}rvz{0:02d}{1.month:02d}{1.day:02d}z{0:04d}{1.month:02d}{1.day:02d})rFrwÚformatr})ÚdtÚlegacyryÚyrxs rÚ_unparse_datetimer‡s�€ð ô �bœ(×+Ñ+Ô ,؉à=×DÑDÀRÓHˆØ �‰€AÙ Ø �‰GˆØ4×;Ñ;¸A¸rÓBˆð �XÐ Ðð5×;Ñ;¸A¸rÓBˆØ �XÐ ÐrcóV— |€tj«}|j||¬«S)N)Úserver_hostname)ÚsslÚ_create_stdlib_contextÚ wrap_socket)ÚsockÚcontextÚhostnames rÚ _encrypt_onr�s2€ð ð ˆ?Ü×0Ñ0Ó2ˆGØ×"Ñ" 4¸Ð"ÓBÐBrcó¦—eZdZdZdZeddddefd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „ZeZd „Zd„Zd7d„Zd„Zd8d„Zd„Zd8d„Zd8d„Zd„Zd„Zd„Zddœd„Zddœd„Zd8ddœd„Zd„Zd„Zd„Z d„Z!ddœd „Z"d!„Z#d"„Z$d8d#„Z%d$„Z&d%„Z'd8d&„Z(d8ddœd'„Z)d8ddœd(„Z*d8ddœd)„Z+d*„Z,ddœd+„Z-ddœd,„Z.ddœd-„Z/d.„Z0d/„Z1d0„Z2d1„Z3d2„Z4d3„Z5d9d4„Z6d5„Z7e8rd8d6„Z9yy):rzutf-8ÚsurrogateescapeNFcó|— ||_||_|j|«|_d|_ |jj d«|_|j |«|s|r|j|||«yy#|jr|jj«|jj«‚xYw)NÚrwb) ÚhostÚportÚ_create_socketr�ÚfileÚmakefileÚ _base_initÚloginÚclose)rr•r–ÚuserÚpasswordÚ readermodeÚusenetrcÚtimeouts rrz NNTP.__init__;sž€ð ð"ˆŒ ؈Œ Ø×'Ñ'¨Ó0ˆŒ ؈Œ ð ØŸ ™ ×*Ñ*¨5Ó1ˆDŒIØ �O‰O˜JÔ 'Ù‘xØ— ‘ ˜4 ¨8Õ4ð øð Ø�yŠyØ— ‘ —‘Ô!Ø �I‰I�O‰OÔ Ø ús ®AA8Á8AB;có— d|_|j«|_d|_|j «d|_|rAd|jvr3|j «|j sd|_|j «d|_d|_y)NrFÚREADER) Ú debuggingÚ_getrespÚwelcomeÚ_capsÚgetcapabilitiesÚreadermode_afterauthÚ_setreadermodeÚtls_onÚ authenticated)rrŸs rršzNNTP._base_init^s…€ð ðˆŒØ—}‘}“ˆŒ ðˆŒ Ø ×ÑÔð%*ˆÔ!Ù ˜(¨$¯*©*Ñ4Ø × Ñ Ô !Ø×,Ò,à!�” Ø×$Ñ$Ô&𠈌 ð#ˆÕrcó—|S©Nr©rs rÚ __enter__zNNTP.__enter__€s€Øˆ rcóÖ‡—ˆfd„}|«r* ‰j«|«r‰j«yyy#ttf$rYŒ+wxYw#|«r‰j«wwxYw)Ncó•—t‰d«S)Nr˜)Úhasattrr¯s€rÚzNNTP.__exit__..„s ø€œw t¨VÔ4r)ÚquitÚOSErrorÚEOFErrorÚ_close)rrÚ is_connecteds` rÚ__exit__z NNTP.__exit__ƒsdø€Û4ˆ Ù Œ>ð "Ø— ‘ ” ñ ”>Ø—K‘K•Mð"ð øôœXÐ&ò Ùð ûñ ”>Ø—K‘K•Mð"ús!�9¹A ÁAÁ A Á AÁA(cóЗ|� |s td«‚tjd||j|j«t j |j|jf|«S)Nz0Non-blocking socket (timeout=0) is not supportedznntplib.connect)Ú ValueErrorÚsysÚauditr•r–ÚsocketÚcreate_connection)rr¡s rr—zNNTP._create_socketŽsQ€Ø Ð ¡wÜÐOÓPÐ PÜ � ‰ Ð# T¨4¯9©9°d·i±iÔ@Ü×'Ñ'¨¯©°D·I±IÐ(>ÀÓHÐHrcór— |jrtdt|j««|jS)Nz *welcome*)r¤ÚprintÚreprr¦r¯s rÚ getwelcomezNNTP.getwelcome”s,€ð .ð �>Š>œ5 ¬d°4·<±<Ó.@ÔAØ�|‰|Ðrcóp— |j€wd|_d|_ |j«\}}||_d|vr!t t t |d««|_d|vrdj|d«|_|jS|jS#ttf$ri|_Y|jSwxYw)NrPÚVERSIONÚIMPLEMENTATIONÚ ) r§Ú nntp_versionÚnntp_implementationÚ capabilitiesÚmaxÚmaprarIr r)rÚrespÚcapss rr¨zNNTP.getcapabilities�s€ð ð �:‰:Ð Ø !ˆDÔ Ø'+ˆDÔ $ð PØ!×.Ñ.Ó0‘ ��dð "�” Ø Ñ$ô),¬C´°T¸)±_Ó,EÓ(F�DÔ%Ø# tÑ+Ø/2¯x©x¸Ð=MÑ8NÓ/O�DÔ,Ø�z‰zЈt�z‰zÐøô'Ô(:Ð;ò à�• ð�z‰zÐð ús�BÂB5Â4B5có— ||_yr®)r¤)rÚlevels rÚset_debuglevelzNNTP.set_debuglevel³s€ð Hð ˆ�rcóø— tjd||«|tz}|jdkDrt dt |««|j j|«|j j«y)Nznntplib.putlinerPz*put*) r½r¾Ú_CRLFr¤rÂrÃr˜ÚwriteÚflush©rrXs rÚ_putlinez NNTP._putline¼sX€ð 3ä � ‰ Ð# T¨4Ô0Ø”e‰|ˆØ �>‰>˜AÒ œu W¬d°4«jÔ9Ø � ‰ �‰˜ÔØ � ‰ �‰Õrcó¶— |jrtdt|««|j|j|j «}|j |«y)Nz*cmd*)r¤rÂrÃÚencodeÚencodingÚerrorsrØr×s rÚ_putcmdz NNTP._putcmdÅs?€ð 0à �>Š>œ5 ¬$¨t«*Ô5Ø�{‰{˜4Ÿ=™=¨$¯+©+Ó6ˆØ � ‰ �dÕrcó(— |jjtdz«}t|«tkDr t d«‚|j dkDrt dt|««|st‚|r#|ddtk(r|dd}|S|ddtvr|dd}|S)NrPz line too longz*get*rtéÿÿÿÿ) r˜ÚreadlineÚ_MAXLINErVr r¤rÂrÃr·rÔ)rÚ strip_crlfrXs rÚ_getlinez NNTP._getlineÌsœ€ð #ð�y‰y×!Ñ!¤(¨A¡+Ó.ˆÜ ˆt‹9”xÒ Ü Ó0Ð 0Ø �>‰>˜AÒ Ü �'œ4 ›:Ô &Ùœ8�^Ù Ø�B�CˆyœEÒ!ؘC˜R�y�ðˆ ð�b�c�œeÑ#ؘC˜R�y�؈ rcó— |j«}|jrtdt|««|j |j |j «}|dd}|dk(r t|«‚|dk(r t|«‚|dvr t|«‚|S)Nz*resp*rPÚ4Ú5Ú123) rãr¤rÂrÃrHrÛrÜrr r )rrÎÚcs rr¥z NNTP._getrespÝs†€ð %ð�}‰}‹ˆØ �>Š>œ5 ¬4°«:Ô6Ø�{‰{˜4Ÿ=™=¨$¯+©+Ó6ˆØ ��!ˆHˆØ �Š8Ü$ TÓ*Ð *Ø �Š8Ü$ TÓ*Ð *Ø �E‰>Ü# DÓ)Ð )؈ rcó— d} t|ttf«rt|d«x}}|j «}|ddt vr t |«‚g}|�Jdtzdf} |jd«}||vrni|jd«r|dd}|j|«Œ>d} |j«}||k(rn(|jd«r|dd}|j|«Œ>|r|j«||fS#|r|j«wwxYw)NÚwbr ó.s. rPFs..) rFÚstrr7Úopenr¥Ú _LONGRESPrrÔrãrcrÕrGrœ)rr˜Ú openedFilerÎr8Ú terminatorsrXÚ terminators rÚ _getlongrespzNNTP._getlongrespís.€ð ðˆ ð #ä˜$¤¤e  Ô-Ü$(¨¨tÓ$4Ð4� ˜Tà—=‘=“?ˆDØ�B�QˆxœyÑ(Ü$ TÓ*Ð*àˆEØÐà#¤e™|¨VÐ4� ØØŸ=™=¨Ó/�Dؘ{Ñ*ØØ—‘ uÔ-Ø# A B˜x˜Ø—J‘J˜tÔ$ð ð"� ØØŸ=™=›?�DؘzÒ)ØØ—‘ uÔ-Ø# A B˜x˜Ø—L‘L Ô&ð ñØ× Ñ Ô"à�Uˆ{ÐøñØ× Ñ Õ"ðús …CC4Ã4D cóF— |j|«|j«Sr®)rÝr¥r×s rÚ _shortcmdzNNTP._shortcmds€ð ,à � ‰ �TÔØ�}‰}‹ÐrcóH— |j|«|j|«Sr®)rÝrò)rrXr˜s rÚ_longcmdz NNTP._longcmd!s$€ð 0à � ‰ �TÔØ× Ñ  Ó&Ð&rcóÄ— |j|«|j|«\}}||D�cgc](}|j|j|j«‘Œ*c}fScc}wr®)rÝròrHrÛrÜ)rrXr˜rÎÚlists rÚ_longcmdstringzNNTP._longcmdstring'si€ð ð � ‰ �TÔØ×&Ñ& tÓ,‰ ˆˆdØÙ"&ó(Ù"&˜$ð—k‘k $§-¡-°·±Õ=Ø"&ñ(ð(ð (ùò(s¬-AcóÀ— |jS#t$rYnwxYw |jd«\}}t|«}n#t$r t dd}YnwxYw||_|S)NzLIST OVERVIEW.FMT)Ú_cachedoverviewfmtÚAttributeErrorrùr]r rU)rrÎr8rWs rÚ_getoverviewfmtzNNTP._getoverviewfmt1sz€ð 8ð Ø×*Ñ*Ð *øÜò Ù ð úð -Ø×-Ñ-Ð.AÓB‰KˆD�%ô & eÓ,‰Cøô "ò +ä'©Ð*ŠCð +úð #&ˆÔ؈ sƒ � šŸ?¿AÁAcóT—|D�cgc]}t|j«Ž‘Œc}Scc}wr®)r:r`)rr8rXs rÚ _grouplistzNNTP._grouplistBs%€á5:Ó;±U¨T” ˜4Ÿ:™:›<Ò(°UÑ;Ð;ùÒ;s…%cót— i}|jd«\}}|D]}|j«^}}|||<Œ||fS)NÚ CAPABILITIES)rùr`)rrÏrÎr8rXrYris rrËzNNTP.capabilitiesFsP€ð ð ˆØ×)Ñ)¨.Ó9‰ ˆˆeÛˆDØ ŸJ™J›LˆMˆD�6؈D�ŠJðð�TˆzÐr)r˜có`— t|tjtjf«s.tdj |j j ««‚t||jdk«\}}dj ||«}|j||«\}}||j|«fS)NúAthe date parameter must be a date or datetime object, not '{:40}'rqzNEWGROUPS {0} {1}) rFrwr3Ú TypeErrorrƒÚ __class__rr‡rÉrùrÿ)rr3r˜rxryÚcmdrÎr8s rÚ newgroupszNNTP.newgroupsTs €ð ô ˜$¤§¡´· ± Ð >Ô?Üðß$™f T§^¡^×%<Ñ%<Ó=ó?ð ?ô/¨t°T×5FÑ5FÈÑ5JÓKш�(Ø!×(Ñ(¨°8Ó<ˆØ×)Ñ)¨#¨tÓ4‰ ˆˆeØ�T—_‘_ UÓ+Ð+Ð+rcó6— t|tjtjf«s.tdj |j j ««‚t||jdk«\}}dj |||«}|j||«S)NrrqzNEWNEWS {0} {1} {2}) rFrwr3rrƒrrr‡rÉrù)rr;r3r˜rxryrs rÚnewnewsz NNTP.newnewsds‹€ð ô˜$¤§¡´· ± Ð >Ô?Üðß$™f T§^¡^×%<Ñ%<Ó=ó?ð ?ô/¨t°T×5FÑ5FÈÑ5JÓKш�(Ø#×*Ñ*¨5°(¸HÓEˆØ×"Ñ" 3¨Ó-Ð-rcóh— |�d|z}nd}|j||«\}}||j|«fS)Nz LIST ACTIVE ÚLIST)rùrÿ)rÚ group_patternr˜ÚcommandrÎr8s rrøz NNTP.listtsH€ð ð Ð $Ø$ }Ñ4‰GàˆGØ×)Ñ)¨'°4Ó8‰ ˆˆeØ�T—_‘_ UÓ+Ð+Ð+rcóN—tjd«}|jd|z«\}}|jd«s|jd|z«\}}i}|D]D}|j |j ««}|sŒ%|j dd«\} } |s| cS| || <ŒF|r||fSy)Nz^(?P[^ ]+)[ ]+(.*)$zLIST NEWSGROUPS r(zXGTITLE rPrqrD)ÚreÚcompilerùrcÚsearchÚstripr;) rr Ú return_allÚline_patrÎr8ÚgroupsÚraw_lineÚmatchrYÚdescs rÚ_getdescriptionszNNTP._getdescriptionsƒs²€Ü—:‘:Ð>Ó?ˆà×)Ñ)Ð*<¸}Ñ*LÓM‰ ˆˆeØ�‰˜uÔ%ð×-Ñ-¨j¸=Ñ.HÓI‰KˆD�%؈ۈHØ—O‘O H§N¡NÓ$4Ó5ˆEÚØ"Ÿ[™[¨¨AÓ.‘ ��dÙ!Ø’KØ#��t’ ð ñ ؘ�<Ð ðrcó(— |j|d«S)NF©r)rr;s rÚ descriptionzNNTP.descriptionšs€ð 7ð×$Ñ$ U¨EÓ2Ð2rcó(— |j|d«S)NTr)rr s rÚ descriptionszNNTP.descriptions§s€Ø5Ø×$Ñ$ ]°DÓ9Ð9rcóV— |jd|z«}|jd«s t|«‚|j«}dx}x}}t |«}|dkDr1|d}|dkDr'|d}|dkDr|d}|dkDr|dj «}|t |«t |«t |«|fS)NzGROUP r'rrPrqr rr)rôrcrr`rVrRra)rrYrÎÚwordsÚcountr=r<Úns rr;z NNTP.group«s¹€ð ð�~‰~˜h¨™oÓ.ˆØ�‰˜uÔ%Ü  Ó&Ð &Ø— ‘ “ ˆØ Ð ˆÐ �˜Ü �‹JˆØ ˆqŠ5ؘ!‘HˆEØ�1Šuؘa™�Ø�q’5Ø  ™8�Dؘ1’uØ$ Q™xŸ~™~Ó/˜Ø”S˜“Z¤ U£¬S°«Y¸Ð<ÐrcóT— |�dj|«}nd}|j||«S)Nz ARTICLE {0}ÚARTICLEr;r<s rÚarticlez NNTP.articles5€ð ð Ð #Ø×&Ñ& |Ó4‰CàˆCØ�|‰|˜C Ó&Ð&rcó&— |jd«S)NÚSLAVE)rôr¯s rÚslavez NNTP.slave$s€ð ð�~‰~˜gÓ&Ð&rc󾇗 tjd«Š|jdj||«|«\}}ˆfd„}||D�cgc] }||«‘Œ c}fScc}w)Nz^([0-9]+) ?(.*) ?z XHDR {0} {1}cóR•—‰j|«}|r|jdd«S|S)NrPrq)rr;)rXÚmÚpats €rÚ remove_numberz NNTP.xhdr..remove_number5s'ø€Ø— ‘ ˜$“ˆAÙ$%�1—7‘7˜1˜a“=Ð /¨4Ð /r)rrrùrƒ) rÚhdrrìr˜rÎr8rLrXrKs @rÚxhdrz NNTP.xhdr*seø€ð ô�j‰jÐ-Ó.ˆØ×)Ñ)¨.×*?Ñ*?ÀÀSÓ*IÈ4ÓP‰ ˆˆeô 0ð±eÓ<±e¨d‘m DÕ)°eÑ<Ð<Ð<ùÒÜ Ó%Ð %Ø�A‰wˆÜ ˆt‹9˜Š?Ü Ó%Ð %Ø”_ T¨4Ó0Ð0Ð0rcóü—|j|«}|jd«s t|«‚t|tt f«r|j «}|D]`}|jt«s|jd«tz}|jd«rd|z}|jj|«Œb|jjd«|jj«|j«S)NÚ3r9rës. )rôrcrrFr7Ú bytearrayÚ splitlinesÚendswithrÔÚrstripr˜rÕrÖr¥)rr ÚfrÎrXs rÚ_postz NNTP._postts½€Ø�~‰~˜gÓ&ˆà�‰˜sÔ#Ü  Ó&Ð &Ü �aœ%¤Ð+Ô ,Ø— ‘ “ˆAó ˆDØ—=‘=¤Ô'Ø—{‘{ 7Ó+¬eÑ3�Ø�‰˜tÔ$ؘd‘{�Ø �I‰I�O‰O˜DÕ !ð ð � ‰ �‰˜Ô!Ø � ‰ �‰ÔØ�}‰}‹Ðrcó(— |jd|«S)NÚPOST)rd)rÚdatas rÚpostz NNTP.post‰s€ð 1ð�z‰z˜& $Ó'Ð'rcóF— |jdj|«|«S)Nz IHAVE {0})rdrƒ)rrArgs rÚihavez NNTP.ihave�s&€ð Oð �z‰z˜+×,Ñ,¨ZÓ8¸$Ó?Ð?rcóÈ— |jr|jj«|`|jj«y#|jj«wxYwr®)r˜rœr�r¯s rr¸z NNTP._close™s>€ð Ø�yŠyØ— ‘ —‘Ô!Ø�Ià �I‰I�O‰OÕ øˆD�I‰I�O‰OÕ ús ‚(AÁA!cóv— |jd«}|j«|S#|j«wxYw)NÚQUIT)rôr¸)rrÎs rrµz NNTP.quit¡s5€ð 1ð Ø—>‘> &Ó)ˆDà �K‰KŒM؈ øð �K‰K�Músƒ&¦8cól—|jr td«‚|s |s td«‚ |r=|s;ddl}|j«}|j|j«}|r |d}|d}|sy|j d|z«}|jd«r=|s t|«‚|j d|z«}|jd«s t|«‚d|_ |j«|jr7d |jvr(|j«d|_ |j«yyy#t $rYŒËwxYw) NzAlready logged in.z7At least one of `user` and `usenetrc` must be specifiedrrqzauthinfo user Ú381zauthinfo pass Ú281r£)r¬r¼ÚnetrcÚauthenticatorsr•r¶rôrcrr r§r¨r©rª)rr�ržr rqÚ credentialsÚauthrÎs rr›z NNTP.loginªs5€Ø × Ò ÜÐ1Ó2Ð 2Ù™HÜØIóKð Kð Ù¡ÛØ#Ÿk™k›m� Ø"×1Ñ1°$·)±)Ó<�ÙØ ™7�DØ# A™w�HñØ Ø�~‰~Ð.°Ñ5Ó6ˆØ �?‰?˜5Ô !ÙÜ$ TÓ*Ð*à—~‘~Ð&6¸Ñ&AÓB�Ø—‘ uÔ-Ü,¨TÓ2Ð2àˆŒ Ø ×ÑÔð × $Ò $¨¸¿¹Ñ)CØ × Ñ Ô !àˆDŒJØ × Ñ Õ "ð *DÐ $øô%ò Ù ð ús¨?D'Ä' D3Ä2D3cóº— |jd«|_y#t$rYyt$r.}|jj d«rd|_n‚Yd}~yd}~wwxYw)Nz mode readerÚ480T)rôr¦r rrrcr©)rÚes rrªzNNTP._setreadermodeÓsT€ð ØŸ>™>¨-Ó8ˆD�LøÜ!ò á Ü!ò Ø�z‰z×$Ñ$ UÔ+à,0�Õ)àô*ûð ús‚™ A¤A¬$AÁAcó¸— |jr td«‚|jr td«‚|jd«}|j d«r|j j «t|j||j«|_|jjd«|_d|_d|_ |j«ytd«‚)NzTLS is already enabled.z+TLS cannot be started after authentication.ÚSTARTTLSÚ382r”TzTLS failed to start.)r«r¼r¬rôrcr˜rœr�r�r•r™r§r¨r)rrŽrÎs rÚstarttlsz NNTP.starttlsás¯€ð ð �{Š{Ü Ð!:Ó;Ð;Ø×!Ò!Ü Ð!NÓOÐOØ—>‘> *Ó-ˆDØ�‰˜uÔ%Ø— ‘ —‘Ô!Ü'¨¯ © °7¸D¿I¹IÓF�” Ø ŸI™I×.Ñ.¨uÓ5�” Ø"�” ð"�” Ø×$Ñ$Õ&äÐ 6Ó7Ð7r)Tr®)NNT):rrrrÛrÜÚ NNTP_PORTrrršr°rºr—rÄr¨rÒÚdebugrØrÝrãr¥ròrôrörùrýrÿrËrr rørrrr;r%r)r+r/r3r<r8r=rArDrGrNrRrWr3rdrhrjr¸rµr›rªÚ _have_sslr{rrrrr+sc„ð€HØ €Fà"+°$ÀØ ¨5Ø0ó!òF #òDò "òIò òò,ð €Eòòóò"ó ,ò\ó 'ó (òò"<ò ð'+ô,ð ,0ô.ð ,¨tô ,òò. 3ò:ò=ð4 ô1ò)ò%ó )ò%ò%ó=ð '¨dô 'ð '¨dô 'ð '°ô 'ò'ð &*ô=ð )-ô 1ð*.ô1ò61ò"ò*(ò@òòó'#òR ñô 8ðrrcó8‡—eZdZedddddefˆfd„ Zˆfd„ZˆxZS)ÚNNTP_SSLNFc ó@•— ||_t‰ |� |||||||«yr®)Ú ssl_contextÚsuperr) rr•r–r�ržr‚rŸr r¡rs €rrzNNTP_SSL.__init__üs.ø€ð ð +ˆDÔ Ü ‰GÑ ˜T 4¨¨x¸Ø% wõ 0rcó–•—t‰|�|«} t||j|j«}|S#|j «‚xYwr®)rƒr—r�r‚r•rœ)rr¡r�rs €rr—zNNTP_SSL._create_socketsIø€Ü‘7Ñ)¨'Ó2ˆDð Ü" 4¨×)9Ñ)9¸4¿9¹9ÓE�ð � øð  Ø— ‘ ” Øús ’!5µA)rrrÚ NNTP_SSL_PORTrrr—Ú __classcell__)rs@rr€r€ús$ø„à&3ب¸$Ø#¨eØ3õ 0÷ ð rr€Ú__main__zJ nntplib built-in demo - display the latest articles in a newsgroup)rz-gz--groupzgmane.comp.python.generalz3group to fetch messages from (default: %(default)s))Údefaultr%z-sz--serverz news.gmane.ioz+NNTP server hostname (default: %(default)s)z-pz--portrßzNNTP port number (default: z / Ú))rˆÚtyper%z-nz --nb-articlesé z2number of articles to fetch (default: %(default)s)z-Sz--sslÚ store_truezuse NNTP over SSL)Úactionrˆr%)r•r–ryÚGroupÚhaszarticles, rangeÚtocó8—t|«|kDr |d|dz dz}|S)Nrrz...)rV)ÚsÚlims rÚcutr”6s&€Ü ˆq‹6�CŠ<Ø�(�3˜‘7� ˜eÑ#ˆA؈rrPr2Úr©s˜ððóB Û ÛÛÛ ÛðÛð€Iå>Ý*ò €ð €×Ñ�X gÕ.ð €ô0� ô0ô �Yô ô ˜ô ô ˜ô ô ˜ ô ô �Iô ð € Ø€ ò € ò OÐð Ø ñÐð €à "ˆK× "Ñ " ;Ú#Eó G€ ð%ˆk×$Ñ$ ]Ú%FóH€ ò òó2ó:Hó,ñ4 ò C÷K 8ñK 8ñ\ ô�4ôð. ‡N�N�:Ôð ˆzÓÛà $ˆX× $Ñ $ð2NôO€Fà ×ј˜iÐ1LØRðôTà ×ј˜j°/ØJðôLà ×ј˜h°¹ÚFOÒQ^Ð_ðôaà ×ј˜o°rÀØQðôSà ×ј˜g¨lÀEØ0ðô2à × Ñ Ó €Dà �9‰9€DØ �8Š8Ø �2Š:؈DÙ �d—k‘k¨Ô -‰à �2Š:Ø ˆDÙ ˜$Ÿ+™+¨DÔ 1ˆà × Ñ Ó €DØ�TÑØ � ‰ Œ Ø%&§W¡W¨T¯Z©ZÓ%8Ñ"€Dˆ%�˜˜dÙ ˆ'�4˜ Ð'8¸%ÀÀtÔLòñ ‘�D“ ˜D×,Ñ,Ñ,¨qÑ0Ó 1€EØ—g‘g˜e TÓ*�O€Dˆ)Û!‰ ˆ�Ù˜t F™|Ó,×2Ñ2°3¸Ó:¸1Ñ=ˆÙ  Y¡Ó0ˆÙ�D˜‘NÓ#ˆÙ Ð%×,Ñ,Ø‘c˜& "“o¡s¨7°BÓ'7¸ó@õ ð "ð‡F�F…HðaøðUò؃Iðús›K6Ë6LÌL