Ë }æØj-Mˆãó@—ddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z ddl m Z mZmZm Z mZmZmZddlmZmZGd„d«ZGd „d «ZGd „d «Zd d„iZd„ZGd„d«Zdd„ZGd„d«Zd„Zd„Z Gd„d«Z!Gd„d«Z"y)éNé)Ú_)Úgetattr)ÚencodingÚerrorÚ loggingutilÚpycompatÚ repocacheÚutilÚvfs)ÚcborutilÚprocutilcó2—eZdZdZd„Zed„«Zd„Zd„Zy)Úchanneledoutputz^ Write data to out in the following format: data length (unsigned int), data có —||_||_y©N)ÚoutÚchannel)Úselfrrs ú;usr/lib/python3.12/site-packages/mercurial/commandserver.pyÚ__init__zchanneledoutput.__init__+s€ØˆŒØˆ� ócó —d|jzS©Ns <%c-channel>©r©rs rÚnamezchanneledoutput.name/ó€à §¡Ñ-Ð-rc óÊ—|sy|jjtjd|jt |««|z«|jj «y)Nó>cI)rÚwriteÚstructÚpackrÚlenÚflush)rÚdatas rr!zchanneledoutput.write3s@€ÙØ à �‰�‰”v—{‘{ 6¨4¯<©<¼¸T»ÓCÀdÑJÔKØ �‰�‰ÕrcóL—|dvr t|«‚t|j|«S©N)ÚisattyÚfilenoÚtellÚseek)ÚAttributeErrorrr©rÚattrs rÚ __getattr__zchanneledoutput.__getattr__:ó'€Ø Ð7Ñ 7Ü  Ó&Ð &Ü�t—x‘x Ó&Ð&rN) Ú__name__Ú __module__Ú __qualname__Ú__doc__rÚpropertyrr!r0©rrrr#s*„ñòðñ.óð.òó'rrcó&—eZdZdZdZd„Zd„Zd„Zy)Úchanneledmessagea  Write encoded message and metadata to out in the following format: data length (unsigned int), encoded message and metadata, as a flat key-value dict. Each message should have 'type' attribute. Messages of unknown type should be ignored. TcóB—t||«|_||_||_yr)rÚ_coutrÚ _encodefn)rrrÚ encodenameÚencodefns rrzchanneledmessage.__init__Ns€Ü$ S¨'Ó2ˆŒ Ø"ˆŒ Ø!ˆ�rc ó�—tj|«}|�||d<|jj|j |««y)Nsdata)r Ú byteskwargsr;r!r<)rr&Úoptss rr!zchanneledmessage.writeSs<€Ü×#Ñ# DÓ)ˆØ Ð Ø ˆD�‰MØ � ‰ ×јŸ™¨Ó-Õ.rcó.—t|j|«Sr)rr;r.s rr0zchanneledmessage.__getattr__Ys€Ü�t—z‘z 4Ó(Ð(rN)r2r3r4r5Ú structuredrr!r0r7rrr9r9@s„ñð€Jò"ò /ó )rr9cóV—eZdZdZdZd„Zed„«Zd d„Zd„Z d d„Z d„Z d „Z e Z d „Zy ) Úchanneledinputa/ Read data from in_. Requests for input are written to out in the following format: channel identifier - 'I' for plain input, 'L' line based (1 byte) how many bytes to send at most (unsigned int), The client replies with: data length (unsigned int), 0 meaning EOF data icó.—||_||_||_yr)Úin_rr)rrGrrs rrzchanneledinput.__init__ls€ØˆŒØˆŒØˆ� rcó —d|jzSrrrs rrzchanneledinput.nameqrrcóè—|dkrR|j}|j||j«}|}|r$|j||j«}||z }|rŒ$|S|j||j«S©Nr)Ú maxchunksizeÚ_readr©rÚsizeÚsÚbufs rÚreadzchanneledinput.readusp€Ø �!Š8ð×$Ñ$ˆDØ— ‘ ˜4 §¡Ó.ˆA؈CÙØ—J‘J˜t T§\¡\Ó2�Ø�q‘�òðˆJà—:‘:˜d D§L¡LÓ1Ð 1rcóN—|sy|dkDsJ‚|jjtjd||««|jj «|j j d«}tjd|«d}|sy|j j |«S)Nrrr éó>I)rr!r"r#r%rGrQÚunpack)rrNrÚlengths rrLzchanneledinput._read„s€€ÙØØ�aŠxˆˆxð �‰�‰”v—{‘{ 6¨7°DÓ9Ô:Ø �‰�‰Ôà—‘—‘˜qÓ!ˆÜ—‘˜u fÓ-¨aÑ0ˆÙØà—8‘8—=‘= Ó(Ð (rcóð—|dkr`|j}|j|d«}|}|r<|jd«s+|j|d«}||z }|r|jd«sŒ+|S|j|d«S)NróLó )rKrLÚendswithrMs rÚreadlinezchanneledinput.readline”sz€Ø �!Š8Ø×$Ñ$ˆDØ— ‘ ˜4 Ó&ˆA؈Cñ˜AŸJ™J uÔ-Ø—J‘J˜t TÓ*�Ø�q‘�ñ˜AŸJ™J uÕ-ðˆJà—:‘:˜d DÓ)Ð )rcó—|Srr7rs rÚ__iter__zchanneledinput.__iter__£s€Øˆ rcó6—|j«}|st‚|Sr)r[Ú StopIteration)rÚls rÚnextzchanneledinput.next¦s€Ø �M‰M‹OˆÙÜР؈rcóL—|dvr t|«‚t|j|«Sr()r-rrGr.s rr0zchanneledinput.__getattr__®r1rN)éÿÿÿÿ)r2r3r4r5rKrr6rrQrLr[r]raÚ__next__r0r7rrrErE]sL„ñ ð€Lòð ñ.óð.ó 2ò)ó *òòð €Hó'rrEscborcóJ—djtj|««S©Nr)Újoinr Ú streamencode)Úvs rÚrjµs€�s—x‘x¤× 5Ñ 5°aÓ 8Ô9rcó¼—|jdd«}|D]}tj|«}|sŒ||fcStjddj |«z«‚)Nó cmdserversmessage-encodingss"no supported message encodings: %só )Ú configlistÚ_messageencodersÚgetrÚAbortrg)ÚuiÚencnamesÚnÚfs rÚ_selectmessageencoderrv¹s]€Ø�}‰}˜\Ð+?Ó@€HÛ ˆÜ × Ñ  Ó #ˆÚ Ø�a�4ŠKðô �+‰+Ø-°· ± ¸(Ó0CÑCó ðrcóX—eZdZdZdd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z e e d œZ d „Zy)Úserverzm Listens for commands on fin, runs them and writes the output on a channel based stream to fout. Ncó~—tj«|_|r*|j|_||_|j|_n||_dx|_|_||_t|d«|_ t|d«|_ t|d«|_ t||d«|_ t|d«|_|jjdd«dk(rA|jj!«|_t#|jd|j¬ «d|_|jd d «d k(r!t'|«\}}t)|d ||«|_||_|j-dd«|_d|_|j.s8t3j2t2j4t2j6«|_yy)NódóeóoóIórrlólogó-)ÚrepoÚfpóuismessage-outputschannelómsshutdown-on-interrupt)rÚgetcwdÚcwdÚbaseuirrr�ÚrepouiÚ_prereposetupsrÚcdebugÚcerrÚcoutrEÚcinÚcresultÚconfigÚcopyÚ setuploggingÚcmsgrvr9ÚclientÚ configboolÚ_shutdown_on_interruptÚ_old_inthandlerÚsignalÚSIGINTÚSIG_IGN)rrrr�ÚfinÚfoutÚ prereposetupsÚencnameÚencfns rrzserver.__init__Êsc€Ü—?‘?Ó$ˆŒá ð—k‘kˆDŒG؈DŒIØŸ'™'ˆD�KàˆDŒGØ&*Ð *ˆDŒI˜œ Ø+ˆÔä% d¨DÓ1ˆŒ Ü# D¨$Ó/ˆŒ Ü# D¨$Ó/ˆŒ Ü! # t¨TÓ2ˆŒÜ& t¨TÓ2ˆŒ à �7‰7�>‰>˜,¨Ó /°4Ò 7ð—g‘g—l‘l“nˆDŒGÜ ˜Ÿ™ t°· ± Õ <àˆŒ Ø �9‰9�UÐ-Ó .°*Ò <Ü2°2Ó6‰NˆG�UÜ(¨¨t°W¸eÓDˆDŒIàˆŒ ð')§m¡mØ Ð2ó' ˆÔ#ð $ˆÔØ×*Ò*Ü#)§=¡=´·±ÄÇÁÓ#OˆDÕ ð+rcóz—|js/tjtj|j«yy)z9release and restore resources taken during server sessionN)r•r—r˜r–rs rÚcleanupzserver.cleanupøs(€à×*Ò*Ü �M‰Mœ&Ÿ-™-¨×)=Ñ)=Õ >ð+rcóR—|sy|jj|«}|st‚|Srf)r“rQÚEOFError)rrNr&s rrLz server._readýs+€ÙØà�{‰{×Ñ Ó%ˆñ܈Nàˆ rcóz—tjd|jd««d}|sy|j|«S)z[read a string from the channel format: data length (uint32), data rTrSrr)r"rUrL)rrVs rÚ_readstrzserver._readstr s6€ô —‘˜u d§j¡j°£mÓ4°QÑ7ˆÙØØ�z‰z˜&Ó!Ð!rcóL—|j«}|r|jd«SgS)z6read a list of NULL separated strings from the channeló)r¤Úsplit)rrOs rÚ _readlistzserver._readlists#€à �M‰M‹OˆÙ Ø—7‘7˜5“>Ð !àˆIrcó�—ddlm}|jr|j|«S tjtj|j «|j|«tjtjtj «S#tj$r‚t$rYnwxYw tjtjtj «n7#tjtjtj «wxYw|jjtd««y)Nr©Údispatchs interrupted! rc) Úr«r•r—r˜r–r™rÚSignalInterruptÚKeyboardInterruptrrr)rÚreqr«s rÚ_dispatchcommandzserver._dispatchcommandsÖ€Ýà × &Ò &à×$Ñ$ SÓ)Ð )ð 9Ü �M‰Mœ&Ÿ-™-¨×)=Ñ)=Ô >Ø×$Ñ$ SÓ)ô �M‰Mœ&Ÿ-™-¬¯©Õ 8øô×$Ñ$ò à Ü ò ñ ð  úð ä �M‰Mœ&Ÿ-™-¬¯©Õ 8øŒF�M‰Mœ&Ÿ-™-¬¯©Õ 8úð �‰� ‰ ”QÐ(Ó)Ô*Øs#¥>BÂB5Â2C,Â4B5Â5C,Ã,4D c ó:—ddlm}|j«}|jj «}|g}|j rž||j _|jj|j«}|j|_|j|«|x|j _|j j_ |j j«|D]G}|j«tj|j d«rŒ4|j#dddd«ŒI|j%|dd||j |j |j&|j(|j*|j,¬ «} |j/|«d z}|j0j3t5j6d t9|«««d |vr t;j<|j>«yy#d |vr t;j<|j>«wwxYw) zireads a list of terminated arguments, executes and writes the return code to the result channelrrªr*rƒsnonttystrues commandserverN©rœéÿs>is--cwd) r¬r«r¨rrr�r�r‡rˆÚ __class__ÚappendÚdirstateÚ_uiÚ invalidateallÚ resetstater Ú safehasattrr�Ú setconfigÚrequestrŒr‹r’r‰r°rŽr!r"r#ÚintÚosÚchdirr†) rr«ÚargsÚcopieduiÚuisrˆrrr¯Úrets rÚ runcommandzserver.runcommand6s�€õ à�~‰~Óˆð—7‘7—<‘<“>ˆØˆjˆØ �9Š9Ø'ˆD�I‰IÔ à—[‘[×*Ñ*¨4¯;©;Ó7ˆFØ"Ÿ-™-ˆFŒKØ �J‰J�vÔ Ø4:Ð :ˆD�I‰IŒL˜4Ÿ9™9×-Ñ-Ô1Ø �I‰I× #Ñ #Ô %ãˆBØ �M‰MŒOô×#Ñ# D§H¡H¨hÕ7Ø— ‘ ˜U I¨wÐ8HÕIð ð×ÑØ ‘ˆGØ Ø �I‰IØ �H‰HØ �I‰IØ �I‰IØ �I‰IØ×-Ñ-ðó  ˆð #Ø×'Ñ'¨Ó,¨sÑ2ˆCð �L‰L× Ñ œvŸ{™{¨5´#°c³(Ó;Ô <ð˜4ÑÜ—‘˜Ÿ™Õ"ð øˆx˜4ÑÜ—‘˜Ÿ™Õ"ð ús ÆA G4Ç4&HcóV—|jjtj«y)z1writes the current encoding to the result channelN)rŽr!rrs rÚ getencodingzserver.getencodinghs€à � ‰ ×Ñœ8×,Ñ,Õ-rcóà—|jj«dd}|rK|jj|«}|r ||«|dk7St j t d«|z«‚|dk7S)Nrcsunknown command %sr)r“r[Ú capabilitiesrprrqr)rÚcmdÚhandlers rÚserveonezserver.serveonelsp€Ø�k‰k×"Ñ"Ó$ S bÐ)ˆÙ Ø×'Ñ'×+Ñ+¨CÓ0ˆGÙÙ˜” ð �c‰zÐô—k‘k¤!Ð$9Ó":¸SÑ"@ÓAÐAà�c‰zÐr)s runcommands getencodingcó$—ddjt|j««z}|dz }|dtjzz }|dz }|jr|d|jjzz }|dt j «zz }tjtd«r |dz }|dtjd «zz }|jj|« |j«r |j«rŒy #t$rYy wxYw) Nscapabilities: rmrYs encoding: smessage-encoding: %s spid: %dÚgetpgidspgid: %drr)rgÚsortedrÈrr’rÚgetpidr rºr¾rÍrŒr!rËr¢)rÚhellomsgs rÚservez server.serve{sú€Ø$ t§y¡y´¸×8IÑ8IÓ1JÓ'KÑKˆØ�EшØ�M¤H×$5Ñ$5Ñ5Ñ5ˆØ�EÑˆØ �9Š9Ø Ð1°D·I±I×4FÑ4FÑFÑ FˆHØ�J¤§¡Ó!2Ñ2Ñ2ˆÜ × Ñ œB  Ô *Ø ˜Ñ ˆHØ ˜ ¤b§j¡j°£mÑ3Ñ 3ˆHð � ‰ �‰˜Ô!ð Ø—-‘-”/Øð—-‘-•/ðøô ò ñð úsà !DÄ DÄDr)r2r3r4r5rr rLr¤r¨r°rÄrÆrËrÈrÑr7rrrxrxÄsH„ñó ,Pò\?ò ò "òòò40#òd.ò ð$.¸{ÑK€Lórrxcóþ—|jdd«}|syt|jdd««}|dk(r|rtj||«}nÛ|dk(r!tj|j |«}nµt jt j|««}|jdd«}|jdd«}tjtjj|««}tj |tjj#|«|||¬«}|h} |r6| j%|j&«| j%|j(«| D]} | j+d|«Œy) záSet up server logging facility If cmdserver.log is '-', log messages will be sent to the given fp. It should be the 'd' channel while a client is connected, and otherwise is the stderr of the server process. rlrNs track-logr€s max-log-filess max-log-size)ÚmaxfilesÚmaxsize)r�ÚsetrnrÚfileobjectloggerÚferrr ÚabspathÚ expandpathÚ configintÚ configbytesÚvfsmodr r¾ÚpathÚdirnameÚ fileloggerÚbasenameÚaddr‡rrÚ setlogger) rrr�r‚ÚlogpathÚtrackedÚloggerrÓrÔr Ú targetuisÚus rr‘r‘•s,€ð�i‰i˜  fÓ-€GÙ Øä�"—-‘-  ¨lÓ;Ó<€Gà�$‚™2Ü×-Ñ-¨b°'Ó:‰Ø �DŠÜ×-Ñ-¨b¯g©g°wÓ?‰ä—,‘,œtŸ™¨wÓ7Ó8ˆà—<‘<  Ð.>Ó?ˆà—.‘. ¨Ó?ˆÜ�j‰jœŸ™Ÿ™¨Ó1Ó2ˆÜ×'Ñ'Ø Ü �G‰G× Ñ ˜WÓ %Ø ØØô  ˆð�€IÙ Ø� ‰ �d—k‘kÔ"Ø� ‰ �d—g‘gÔÛ ˆØ � ‰ �L &Õ)ñrcó—eZdZd„Zd„Zd„Zy)Ú pipeservicecó —||_||_yr)rrr�)rrrr�rAs rrzpipeservice.__init__¿s€ØˆŒØˆ� rcó—yrr7rs rÚinitzpipeservice.initÃs€Ø rcó—|j}|j«5\}}t||j||«} |j «|j «cddd«S#|j «wxYw#1swYyxYwr)rrÚprotectedfinoutrxr�rÑr )rrrršr›Úsvs rÚrunzpipeservice.runÆsh€Ø �W‰Wˆð× Ñ Ô !¡[ c¨4ܘ˜DŸI™I s¨DÓ1ˆBð Ø—x‘x“zà— ‘ ” ÷ "Ñ !øð — ‘ • ú÷ "Ð !ús"�A8ºA#Á A8Á#A5Á5A8Á8BN)r2r3r4rrìrðr7rrréré¾s„òò ó rrécóX—tjdd«tj«yrJ)r¾ÚsetpgidÚrandomÚseedr7rrÚ_initworkerprocessrõÒs€ô‡J�Jˆq�!Ôô ‡K�K…Mrcó—|jd«}|jd«}d} ||||||«} |j«|j« |j!« |j!«y#tj$r1}|jt d«|j z«Yd}~Œrd}~wt $rYŒ€t$rYŒŠwxYw#|j«wxYw#|r |j} n t|d«} | jtjtj«««‚xYw#t $rYywxYw#|j!« |j!«w#t $rYwwxYwxYw)NÚrbÚwbs abort: %s r{)ÚmakefilerÑrrqrÚmessageÚBrokenPipeErrorr®r r‹rr!rÚ strtolocalÚ tracebackÚ format_excÚclose) rrr�ÚconnÚcreatecmdserverrœršr›rïÚinstr‹s rÚ _serverequesträsB€Ø �-‰-˜Ó €CØ �=‰=˜Ó €DØ €BðÙ ˜T 4¨¨d°MÓ Bˆð Ø �H‰HŒJð �J‰J�Lð � ‰ Œ ð Ø �J‰J�Løô)�{‰{ò 7Ø �H‰H”Q�~Ó&¨¯©Ñ5× 6Ñ 6ûÜò Ù Ü ò Ù ð ûð �J‰J�Lûðñ Ø—7‘7‰Dä" 4¨Ó.ˆDØ � ‰ ”8×&Ñ&¤y×';Ñ';Ó'=Ó>Ô?Ø ûô ò Ù ð ûð � ‰ Œ ð Ø �J‰J�LøÜò Ù ð ýs›¦ C&³A6ÁC&Á%D=Á6C 'B5Â0CÂ5 CÃCÃCà Cà CÃCÃC#Ã#C&Ã&AD:Ä:E Ä= E ÅE Å E>ÅE/Å.E>Å/ E;Å8E>Å:E;Å;E>có8—eZdZdZdZd„Zd„Zd„Zd„Zd„Z d„Z y) ÚunixservicehandlerzÍSet of pluggable operations for unix-mode services Almost all methods except for createcmdserver() are called in the main process. You can't pass mutable resource back from createcmdserver(). Ncó—||_yr)rr)rrrs rrzunixservicehandler.__init__s €Øˆ�rcóð—tj||«|jtj«|j j td«|z«|j j«y)Nslistening at %s ) r ÚbindunixsocketÚlistenÚsocketÚ SOMAXCONNrrÚstatusrr%)rÚsockÚaddresss rÚ bindsocketzunixservicehandler.bindsocketsL€Ü ×јD 'Ô*Ø � ‰ ”F×$Ñ$Ô%Ø �‰�‰”qÐ-Ó.°Ñ8Ô9Ø �‰� ‰ �rcó.—tj|«yr)r¾Úunlink)rrs rÚ unlinksocketzunixservicehandler.unlinksockets€Ü � ‰ �'Õrcó—y)z9True if server should shut down; checked per pollintervalFr7rs rÚ shouldexitzunixservicehandler.shouldexits€àrcó—y)z/Called when main process notices new connectionNr7rs rÚ newconnectionz unixservicehandler.newconnection s�rcó4—t|j||||«S)zhCreate new command server instance; called in the process that serves for the current connection)rxrr)rr�rršr›rœs rrz"unixservicehandler.createcmdserver#s€ô�d—g‘g˜t S¨$° Ó>Ð>r) r2r3r4r5Ú pollintervalrrrrrrr7rrrrs,„ñð €Lòòò òò>ó?rrcóZ—eZdZdZdd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z d „Zd„Zy)ÚunixforkingservicezG Listens on unix domain socket and forks server per connection Ncón—||_||_|d|_tjt d«st jtd««‚|jst jtd««‚|xs t|«|_ d|_ d|_ d|_ d|_t«|_d|_|j%dd«}|dkrt jtd««‚t'j(||«|_t,j.rt1j2«yy) NsaddressÚAF_UNIXsunsupported platforms'no socket path specified with --addressrlsmax-repo-cachers(negative max-repo-cache size not allowed)rrr�rr rºr rrqrrÚ_servicehandlerÚ_sockÚ_mainipcÚ _workeripcÚ_oldsigchldhandlerrÕÚ _workerpidsÚ_socketunlinkedrÚr Ú repoloaderÚ _repoloaderr ÚisdarwinrÚgui)rrrr�rArÊÚmaxlens rrzunixforkingservice.__init__.sú€ØˆŒØˆŒ ؘJÑ'ˆŒ Ü×Ѥ¨ Ô2Ü—+‘+œaÐ 7Ó8Ó9Ð 9Ø�|Š|Ü—+‘+œaÐ JÓKÓLÐ LØ&Ò@Ô*<¸RÓ*@ˆÔ؈Œ ؈Œ ؈ŒØ"&ˆÔÜ›5ˆÔØ#ˆÔà—‘˜lÐ,=Ó>ˆØ �AŠ:Ü—+‘+œaÐ KÓLÓMÐ MÜ$×/Ñ/°°FÓ;ˆÔô × Ò Ü �L‰L�Nð rcó\—tjtj«|_tjtjtj«}|\|_|_|jj|j|j«tjtd«r#tjtj«tjtj|j «}||_d|_|j&j)«y)NÚ unblocksignalF)r rrÚ socketpairÚ SOCK_DGRAMrr rrrr rºrr*r—ÚSIGCHLDÚ_sigchldhandlerr!r#r%Ústart)rÚos rrìzunixforkingservice.initGs¾€Ü—]‘]¤6§>¡>Ó2ˆŒ ô × Ñ œfŸn™n¬f×.?Ñ.?Ó @ˆØ)*Ñ&ˆŒ �t”Ø ×Ñ×'Ñ'¨¯ © °D·L±LÔAÜ × Ñ œH oÔ 6Ü × "Ñ "¤6§>¡>Ô 2Ü �M‰Mœ&Ÿ.™.¨$×*>Ñ*>Ó ?ˆØ"#ˆÔØ$ˆÔØ ×Ñ×ÑÕ rcóv—|js-|jj|j«d|_yy)NT)r#rrrrs rÚ _unlinksocketz unixforkingservice._unlinksocketVs0€Ø×#Ò#Ø × Ñ × -Ñ -¨d¯l©lÔ ;Ø#'ˆDÕ ð$rcór—tjtj|j«|jj «|j j «|j j «|j«|jj«|jd«yrJ) r—r-r!rrÿrr r2r%ÚstopÚ _reapworkersrs rÚ_cleanupzunixforkingservice._cleanup[sv€Ü� ‰ ”f—n‘n d×&=Ñ&=Ô>Ø � ‰ ×ÑÔØ � ‰ ×ÑÔØ �‰×ÑÔØ ×ÑÔØ ×Ñ×ÑÔà ×ј!Õrcóp— |j«|j«y#|j«wxYwr)Ú _mainloopr6rs rrðzunixforkingservice.runes$€ð Ø �N‰NÔ à �M‰M�OøˆD�M‰M�Oús‚#£5có—d}|j}tj«}|j|jtj |j «|j|jtj |j« |s"|j«r|j«d}|j|j¬«}|s|rn(ŒG|D]!\}}|j|j|«Œ#Œm|j«y)NFT)Útimeout)rÚ selectorsÚDefaultSelectorÚregisterrÚ EVENT_READÚ_acceptnewconnectionrÚ_handlemainipcrr2Úselectrr&Úfileobjrÿ)rÚexitingÚhÚselectorÚeventsÚkeyÚ_masks rr8zunixforkingservice._mainloopksà€ØˆØ × Ñ ˆÜ×,Ñ,Ó.ˆØ×ÑØ �J‰Jœ ×,Ñ,¨d×.GÑ.Gô ð ×ÑØ �M‰Mœ9×/Ñ/°×1DÑ1Dô ðÙ˜qŸ|™|œ~ð ×"Ñ"Ô$Ø�Ø—_‘_¨Q¯^©^�_Ó<ˆFÙáØØÛ$‘ ��UØ—‘˜Ÿ™ hÕ/ð%ðð" �‰Õrcó—|j}|j«\}}tj«}|rZ |jj dd|«|j j|«|j«|j«y |j«|j«|jj«|j|«|j«|jj«tjd«y#|j«wxYw# |jjd¬«tjd«Yy#tjd«wxYwxYw)Nrlsforked worker process (pid=%d) rT)Úforcer³)rÚacceptr¾ÚforkrrÚlogr"rárrÿrÚ _runworkerr Ú_exitrý)rr rErDrÚ_addrÚpids rr?z'unixforkingservice._acceptnewconnectionˆs €Ø × Ñ ˆØ—k‘k“m‰ ˆˆeô �g‰g‹iˆÙ ð Ø—‘— ‘ Ø Ð"EÀsôð× Ñ ×$Ñ$ SÔ)Ø—‘Ô!à— ‘ • ð "Ø—‘Ô Ø— ‘ ” Ø— ‘ ×#Ñ#Ô%Ø—‘ Ô%Ø— ‘ ” Ø—‘×%Ñ%Ô'Ü—‘˜• øð— ‘ • ûð "ð"Ø—G‘G×%Ñ%¨DÐ%Ô1ä—H‘H˜S–Mø”B—H‘H˜S•Mýs1·ADÂB D1ÄD.Ä1FÄ4E'ÅFÅ'E>Å>Fcó\—|jd«}|jj|«y)z#Process messages sent from a workeri€N)Úrecvr%Úload)rr rErÝs rr@z!unixforkingservice._handlemainipc©s$€à�y‰y˜ÓˆØ ×Ñ×јdÕ#rcóB—|jtj«yr)r5r¾ÚWNOHANG)rr—Úframes rr.z"unixforkingservice._sigchldhandler®s€Ø ×Ñœ"Ÿ*™*Õ%rcó:—|jrf tjd|«\}}|dk(ry|j j dd|«|jj|«|jrŒeyy#t$r|jj «YywxYw)Nrcrrlsworker process exited (pid=%d) )r"r¾ÚwaitpidÚChildProcessErrorÚclearrrrMÚdiscard)rÚoptionsrQÚ_statuss rr5zunixforkingservice._reapworkers±sŠ€Ø×Òð Ü!Ÿz™z¨"¨gÓ6‘ ��Wð �aŠxàØ �G‰G�K‰K˜ Ð&IÈ3Ô OØ × Ñ × $Ñ $ SÔ )ð×Õøô%ò à× Ñ ×&Ñ&Ô(Ùð úsŽA4Á4#BÂBcóZ—tjtj|j«t«|j} t |j |j||j|jg¬«tj«y#tj«wxYw)Nr²) r—r-r!rõrrrrr�rÚ _reposetupÚgcÚcollect)rrrDs rrNzunixforkingservice._runworker¿sq€Ü� ‰ ”f—n‘n d×&=Ñ&=Ô>ÜÔØ × Ñ ˆð Ü Ø—‘Ø— ‘ ØØ×!Ñ!Ø#Ÿ™Ð/õ  ô �J‰J�LøŒB�J‰J�Lús Á9BÂB*cóP‡—|j«syGˆfd„d|j«Š‰|_|j|_|jj |j «}|€y|jjdd|j «tj||«y)Ncó"•‡—eZdZˆˆfd„ZˆxZS)ú8unixforkingservice._reposetup..unixcmdserverrepocóØ•—t‰|�« |jj|j«y#t j $r|jjdd«YywxYw)Nrls#failed to send repo root to master ) ÚsuperrÿÚ _cmdserveripcÚsendÚrootr rrrrM)rr´Úunixcmdserverrepos €€rrÿz>unixforkingservice._reposetup..unixcmdserverrepo.closeÓsWø€ÜÐ'¨Ñ4Ô6ðØ×&Ñ&×+Ñ+¨D¯I©IÕ6øÜ—|‘|òØ—G‘G—K‘KØ$Ð&Möðús‘%7·/A)Á(A))r2r3r4rÿÚ __classcell__)r´rks@€rrkreÒs ù„÷ ñ rrks repocachesrepo from cache: %s ) Úlocalr´r rhr%rprjrrrMr Ú copycache)rrrr�Ú cachedreporks @rr`zunixforkingservice._reposetupÎs€ø€Ø�z‰zŒ|Ø ö  §¡ô ð+ˆŒØ!Ÿ_™_ˆÔà×%Ñ%×)Ñ)¨$¯)©)Ó4ˆ Ø Ð Ø Ø �‰� ‰ �LÐ":¸D¿I¹IÔFÜ×јJ¨Õ-rr)r2r3r4r5rrìr2r6rðr8r?r@r.r5rNr`r7rrrr)sD„ñóò2 !ò(ò òò ò:"òB$ò &ò *ò ó.rr)NN)#rar¾rór;r—r r"rýÚi18nrr rr¬rrrr r r rÜÚutilsr rrr9rErorvrxr‘rérõrrrr7rrÚrrs®ðó Û Û ÛÛ Û Û ÛåÝ÷÷ñ÷÷ 'ñ'÷:)ñ)÷:T'ñT'ðp Ñ 9ðÐò ÷NñNób&*÷Rñò(ò$ ÷F?ñ?÷Dz.òz.r