ó
    6°hdc  ã                  ó¾  • S SK Jr  S SKrS SKrS SKrSSKJrJrJr  SSKJ	r	  \R                  r
SrSr\R                  " S	S
5      r " S S5      r " S S5      r\" 5       r " S S5      r " S S5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r\R3                  \" 5       5         " S S\5      r\R3                  \" 5       5         " S S \5      r\R3                  \" 5       5         " S! S"\5      r\R3                  \" 5       5         " S# S$\5      r\R3                  \" 5       5        S% r\" 5       R?                  5       r g)&é    )ÚannotationsNé   )ÚerrorÚi18nÚpycompaté   )Ú
stringutils   servers   clientÚcompenginewireprotosupport)ÚnameÚserverpriorityÚclientpriorityc                  ó*   • \ rS rSrS rSS jrS rSrg)Úpropertycacheé!   c                ó2   • Xl         UR                  U l        g ©N)ÚfuncÚ__name__r   )Úselfr   s     Ú=/usr/lib/python3/dist-packages/mercurial/utils/compression.pyÚ__init__Úpropertycache.__init__"   s   € ØŒ	Ø—M‘Mˆ�	ó    Nc                óJ   • U R                  U5      nU R                  X5        U$ r   )r   Ú
cachevalue)r   ÚobjÚtypeÚresults       r   Ú__get__Úpropertycache.__get__&   s    € Ø—‘˜3“ˆØ�‰˜Ô$Øˆr   c                ó4   • X!R                   U R                  '   g r   )Ú__dict__r   )r   r   Úvalues      r   r   Úpropertycache.cachevalue+   s   € à"'�‰�T—Y‘YÒr   )r   r   r   )r   Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r   Ú__static_attributes__© r   r   r   r   !   s   † ò"ôõ
(r   r   c                  óx   • \ rS rSrSrS rS rS rS rS r	\
S 5       r\
S	 5       rS
 rS rSS jrS rS rSrg)Úcompressormanageré0   a/  Holds registrations of various compression engines.

This class essentially abstracts the differences between compression
engines to allow new compression formats to be added easily, possibly from
extensions.

Compressors are registered against the global instance by calling its
``register()`` method.
c                óJ   • 0 U l         0 U l        0 U l        0 U l        0 U l        g r   )Ú_enginesÚ_bundlenamesÚ_bundletypesÚ_revlogheadersÚ
_wiretypes©r   s    r   r   Úcompressormanager.__init__;   s(   € ØˆŒàˆÔàˆÔà ˆÔàˆ�r   c                ó    • U R                   U   $ r   ©r.   ©r   Úkeys     r   Ú__getitem__Úcompressormanager.__getitem__F   s   € Ø�}‰}˜SÑ!Ð!r   c                ó   • XR                   ;   $ r   r6   r7   s     r   Ú__contains__Úcompressormanager.__contains__I   s   € Ø—m‘mÑ#Ð#r   c                óH   • [        U R                  R                  5       5      $ r   )Úiterr.   Úkeysr3   s    r   Ú__iter__Úcompressormanager.__iter__L   s   € Ü�D—M‘M×&Ñ&Ó(Ó)Ð)r   c                ó  • [        U[        5      (       d  [        [        S5      5      eUR	                  5       nX R
                  ;   a"  [        R                  " [        S5      U-  5      eUR                  5       nU(       a—  Uu  pEX@R                  ;   a"  [        R                  " [        S5      U-  5      eXPR                  ;   a0  [        R                  " [        S5      XPR                  U   4-  5      eU(       a  X R                  U'   X R                  U'   UR                  5       nU(       aY  UR                  nXpR                  ;   a0  [        R                  " [        S5      XpR                  U   4-  5      eX R                  U'   UR                  5       nU(       a?  X€R                  ;   a0  [        R                  " [        S5      X€R                  U   4-  5      eU(       a  X R                  U'   XR
                  U'   g)zhRegister a compression engine with the manager.

The argument must be a ``compressionengine`` instance.
s$   argument must be a compressionengines(   compression engine %s already registereds!   bundle name %s already registereds'   bundle type %s already registered by %ss5   wire protocol compression %s already registered by %ss)   revlog header %s already registered by %sN)Ú
isinstanceÚcompressionengineÚ
ValueErrorÚ_r   r.   r   ÚAbortÚ
bundletyper/   r0   Úwireprotosupportr2   Úrevlogheaderr1   )	r   Úenginer   Ú
bundleinfoÚ
bundlenamerI   ÚwiresupportÚwiretyperK   s	            r   ÚregisterÚcompressormanager.registerO   sÑ  € ô
 ˜&Ô"3×4Ñ4ÜœQÐFÓGÓHÐHà�{‰{‹}ˆà—=‘=Ó Ü—+’+ÜÐ=Ó>ÀÑEóð ð ×&Ñ&Ó(ˆ
ÞØ%/Ñ"ˆJà×.Ñ.Ó.Ü—k’kÜÐ:Ó;¸jÑHóð ð ×.Ñ.Ó.Ü—k’kÜÐ@ÓAØ!×#4Ñ#4°ZÑ#@ÐAñBóð ö Ø04×!Ñ! *Ñ-à,0×Ñ˜jÑ)à×-Ñ-Ó/ˆÞØ"×'Ñ'ˆHØŸ?™?Ó*Ü—k’kÜð,óð  §¡°Ñ!:Ð;ñ	<óð ð )-�O‰O˜HÑ%à×*Ñ*Ó,ˆÞ˜L×,?Ñ,?Ó?Ü—+’+ÜÐ>Ó?Ø×!4Ñ!4°\Ñ!BÐCñDóð ö
 Ø04×Ñ Ñ-à$�‰�dÒr   c                óH   • [        U R                  R                  5       5      $ r   )Úsetr/   r@   r3   s    r   ÚsupportedbundlenamesÚ&compressormanager.supportedbundlenamesŒ   ó   € ä�4×$Ñ$×)Ñ)Ó+Ó,Ð,r   c                óH   • [        U R                  R                  5       5      $ r   )rT   r0   r@   r3   s    r   ÚsupportedbundletypesÚ&compressormanager.supportedbundletypes�   rW   r   c                óÈ   • U R                   U R                  U      nUR                  5       (       d0  [        R                  " [        S5      UR                  5       -  5      eU$ )z©Obtain a compression engine registered to a bundle name.

Will raise KeyError if the bundle type isn't registered.

Will abort if the engine is known but not available.
ó)   compression engine %s could not be loaded)r.   r/   Ú	availabler   rH   rG   r   )r   rN   rL   s      r   ÚforbundlenameÚcompressormanager.forbundlename”   óX   € ð —‘˜t×0Ñ0°Ñ<Ñ=ˆØ×Ñ×!Ñ!Ü—+’+ÜÐ>Ó?À&Ç+Á+Ã-ÑOóð ð ˆr   c                óÈ   • U R                   U R                  U      nUR                  5       (       d0  [        R                  " [        S5      UR                  5       -  5      eU$ )z©Obtain a compression engine registered to a bundle type.

Will raise KeyError if the bundle type isn't registered.

Will abort if the engine is known but not available.
r\   )r.   r0   r]   r   rH   rG   r   )r   rI   rL   s      r   ÚforbundletypeÚcompressormanager.forbundletype¢   r`   r   c                óR  ^• U[         [        4;   d   eU[         :X  a  SOSmU R                  R                  5        Vs/ s H  o0R                  U   PM     nnU(       a(  U Vs/ s H  o3R                  5       (       d  M  UPM     nnU4S jn[        [        XES95      $ s  snf s  snf )zÇObtain compression engines that support the wire protocol.

Returns a list of engines in prioritized order, most desired first.

If ``onlyavailable`` is set, filter out engines that can't be
loaded.
r   r   c                óZ   >• U R                  5       nS[        UT5      -  UR                  4$ )Néÿÿÿÿ)rJ   Úgetattrr   )ÚeÚwÚattrs     €r   ÚgetkeyÚ6compressormanager.supportedwireengines.<locals>.getkeyÀ   s.   ø€ ð ×"Ñ"Ó$ˆAØœ  4Ó(Ñ(¨!¯&©&Ð0Ð0r   )r8   )Ú
SERVERROLEÚ
CLIENTROLEr2   Úvaluesr.   r]   ÚlistÚsorted)r   ÚroleÚonlyavailablerh   Úenginesrk   rj   s         @r   ÚsupportedwireenginesÚ&compressormanager.supportedwireengines°   s�   ø€ ð œ
¤JÐ/Ó/Ð/Ð/à#'¬:Ó#5ÑÐ;Kˆà-1¯_©_×-CÑ-CÔ-EÓFÒ-E¨—=‘= Ô#Ñ-EˆÐFÞÙ")Ó;¢'˜Q¯[©[¯]—q¡'ˆGÐ;õ	1ô ”F˜7Ñ/Ó0Ð0ùò Gùâ;s   ¾BÁ#B$Á?B$c                óÈ   • U R                   U R                  U      nUR                  5       (       d0  [        R                  " [        S5      UR                  5       -  5      eU$ )Nr\   )r.   r2   r]   r   rH   rG   r   )r   rP   rL   s      r   ÚforwiretypeÚcompressormanager.forwiretypeÉ   sT   € Ø—‘˜tŸ™¨xÑ8Ñ9ˆØ×Ñ×!Ñ!Ü—+’+ÜÐ>Ó?À&Ç+Á+Ã-ÑOóð ð ˆr   c                ó:   • U R                   U R                  U      $ )z}Obtain a compression engine registered to a revlog header.

Will raise KeyError if the revlog header value isn't registered.
)r.   r1   )r   Úheaders     r   ÚforrevlogheaderÚ!compressormanager.forrevlogheaderÑ   s   € ð
 �}‰}˜T×0Ñ0°Ñ8Ñ9Ð9r   )r/   r0   r.   r1   r2   N)T)r   r%   r&   r'   Ú__doc__r   r9   r<   rA   rQ   ÚpropertyrU   rY   r^   rb   ru   rx   r|   r(   r)   r   r   r+   r+   0   sb   † ñò	ò"ò$ò*ò;%ðz ñ-ó ð-ð ñ-ó ð-òòô1ò2õ:r   r+   c                  óP   • \ rS rSrSrS rS rS rS rS r	SS	 jr
S
 rSS jrSrg)rE   éÜ   zmBase class for compression engines.

Compression engines must implement the interface defined by this class.
c                ó   • [        5       e)zReturns the name of the compression engine.

This is the key the engine is registered under.

This method must be implemented.
©ÚNotImplementedErrorr3   s    r   r   Úcompressionengine.nameâ   ó   € ô "Ó#Ð#r   c                ó   • g)zãWhether the compression engine is available.

The intent of this method is to allow optional compression engines
that may not be available in all installations (such as engines relying
on C extensions that may not be present).
Tr)   r3   s    r   r]   Úcompressionengine.availableë   s   € ð r   c                ó   • g)aU  Describes bundle identifiers for this engine.

If this compression engine isn't supported for bundles, returns None.

If this engine can be used for bundles, returns a 2-tuple of strings of
the user-facing "bundle spec" compression name and an internal
identifier used to denote the compression format within bundles. To
exclude the name from external usage, set the first element to ``None``.

If bundle compression is supported, the class must also implement
``compressstream`` and `decompressorreader``.

The docstring of this method is used in the help system to tell users
about this engine.
Nr)   r3   s    r   rI   Úcompressionengine.bundletypeô   s   € ð  r   c                ó   • g)a  Declare support for this compression format on the wire protocol.

If this compression engine isn't supported for compressing wire
protocol payloads, returns None.

Otherwise, returns ``compenginewireprotosupport`` with the following
fields:

* String format identifier
* Integer priority for the server
* Integer priority for the client

The integer priorities are used to order the advertisement of format
support by server and client. The highest integer is advertised
first. Integers with non-positive values aren't advertised.

The priority values are somewhat arbitrary and only used for default
ordering. The relative order can be changed via config options.

If wire protocol compression is supported, the class must also implement
``compressstream`` and ``decompressorreader``.
Nr)   r3   s    r   rJ   Ú"compressionengine.wireprotosupport  s   € ð. r   c                ó   • g)a(  Header added to revlog chunks that identifies this engine.

If this engine can be used to compress revlogs, this method should
return the bytes used to identify chunks compressed with this engine.
Else, the method should return ``None`` to indicate it does not
participate in revlog compression.
Nr)   r3   s    r   rK   Úcompressionengine.revlogheader  s   € ð r   Nc                ó   • [        5       e)aS  Compress an iterator of chunks.

The method receives an iterator (ideally a generator) of chunks of
bytes to be compressed. It returns an iterator (ideally a generator)
of bytes of chunks representing the compressed output.

Optionally accepts an argument defining how to perform compression.
Each engine treats this argument differently.
rƒ   ©r   ÚitÚoptss      r   ÚcompressstreamÚ compressionengine.compressstream)  s   € ô "Ó#Ð#r   c                ó   • [        5       e)zÊPerform decompression on a file object.

Argument is an object with a ``read(size)`` method that returns
compressed data. Return value is an object with a ``read(size)`` that
returns uncompressed data.
rƒ   ©r   Úfhs     r   ÚdecompressorreaderÚ$compressionengine.decompressorreader5  r†   r   c                ó   • [        5       e)aä  Obtain an object that can be used to compress revlog entries.

The object has a ``compress(data)`` method that compresses binary
data. This method returns compressed binary data or ``None`` if
the data could not be compressed (too small, not compressible, etc).
The returned data should have a header uniquely identifying this
compression format so decompression can be routed to this engine.
This header should be identified by the ``revlogheader()`` return
value.

The object has a ``decompress(data)`` method that decompresses
data. The method will only be called if ``data`` begins with
``revlogheader()``. The method should return the raw, uncompressed
data or raise a ``StorageError``.

The object is reusable but is not thread safe.
rƒ   ©r   r’   s     r   ÚrevlogcompressorÚ"compressionengine.revlogcompressor>  s   € ô$ "Ó#Ð#r   r)   r   )r   r%   r&   r'   r~   r   r]   rI   rJ   rK   r“   r˜   rœ   r(   r)   r   r   rE   rE   Ü   s/   † ñò
$òòò$ò2ô
$ò$÷$r   rE   c                  ó&   • \ rS rSrS rS rS rSrg)Ú_CompressedStreamReaderiS  c                ó–   • [        US5      (       a  UR                  U l        OUR                  U l        / U l        SU l        SU l        g )NÚunbufferedreadr   F)Úhasattrr¡   Ú_readerÚreadÚ_pendingÚ_posÚ_eofr–   s     r   r   Ú _CompressedStreamReader.__init__T  s=   € Ü�2Ð'×(Ñ(Ø×,Ñ,ˆD�LàŸ7™7ˆDŒLØˆŒØˆŒ	Øˆ�	r   c                ó   • [        5       er   rƒ   )r   Úchunks     r   Ú_decompressÚ#_CompressedStreamReader._decompress]  s   € Ü!Ó#Ð#r   c                óz  • / n U R                   (       Ga&  [        U R                   S   5      XR                  -   :”  a_  U R                   S   nUR                  X0R                  U R                  U-    5        U =R                  U-  sl        SR	                  U5      $ U R                   R                  S5      nU R                  (       a9  UR                  X0R                  S  5        U[        U5      U R                  -
  -  nOUR                  U5        U[        U5      -  nSU l        U R                   (       a  GM&  U R                  (       a  SR	                  U5      $ U R                  S5      nU R                  U5        U(       d3  U R                   (       d"  U R                  (       d  SR	                  U5      $ GM¹  )Nr   r   i   )	r¥   Úlenr¦   ÚappendÚjoinÚpopr§   r£   r«   )r   ÚlÚbufÚnewbufrª   s        r   r¤   Ú_CompressedStreamReader.read`  s=  € ØˆØØ—-—-�-Ü�t—}‘} QÑ'Ó(¨1¯y©y©=Ó8Ø!Ÿ]™]¨1Ñ-�FØ—J‘J˜v§i¡i°$·)±)¸a±-Ð@ÔAØ—I’I ‘N•IØŸ8™8 C›=Ð(àŸ™×*Ñ*¨1Ó-�Ø—9—9Ø—J‘J˜v§i¡i kÐ2Ô3Øœ˜V› t§y¡yÑ0Ñ0‘Aà—J‘J˜vÔ&Øœ˜V›Ñ$�AØ�”	ð —-—-’-ð  �y�yØ—x‘x “}Ð$Ø—L‘L Ó'ˆEØ×Ñ˜UÔ#Þ §§°t·y·yà—x‘x “}Ð$ò/ r   )r§   r¥   r¦   r£   N)r   r%   r&   r'   r   r«   r¤   r(   r)   r   r   rŸ   rŸ   S  s   † òò$õ%r   rŸ   c                  ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )Ú_GzipCompressedStreamReaderi|  c                óX   >• [         TU ]  U5        [        R                  " 5       U l        g r   )Úsuperr   ÚzlibÚdecompressobjÚ
_decompobj©r   r—   Ú	__class__s     €r   r   Ú$_GzipCompressedStreamReader.__init__}  s    ø€ Ü‰Ñ˜ÔÜ×,Ò,Ó.ˆ�r   c                óZ  • U R                   R                  U5      nU(       a  U R                  R                  U5        U R                   R	                  5       n UR                  S5        UR                  5         UR                  S:X  a  SU l        g g ! [        R                   a     g f = f)Nó   xT)
r¼   Ú
decompressr¥   r¯   ÚcopyÚflushÚunused_datar§   rº   r   )r   rª   r´   Úds       r   r«   Ú'_GzipCompressedStreamReader._decompress�  s…   € Ø—‘×+Ñ+¨EÓ2ˆÞØ�M‰M× Ñ  Ô(Ø�O‰O× Ñ Ó"ˆð	Ø�L‰L˜ÔØ�G‰GŒIØ�}‰} Ó$Ø �•	ð %øä�z‰zó 	Ùð	ús   Á8B ÂB*Â)B*©r¼   r§   ©r   r%   r&   r'   r   r«   r(   Ú__classcell__©r¾   s   @r   r·   r·   |  s   ø† õ/÷ð r   r·   c                  ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )Ú_BZ2CompressedStreamReaderi�  c                óX   >• [         TU ]  U5        [        R                  " 5       U l        g r   )r¹   r   Úbz2ÚBZ2Decompressorr¼   r½   s     €r   r   Ú#_BZ2CompressedStreamReader.__init__�  s    ø€ Ü‰Ñ˜ÔÜ×-Ò-Ó/ˆ�r   c                ó0  • U R                   R                  U5      nU(       a  U R                  R                  U5          U R                   R                  S5      nU(       a  U R                  R                  U5        Og MA  ! [         a
    SU l         g f = f©NTr   )r¼   rÂ   r¥   r¯   ÚEOFErrorr§   ©r   rª   r´   s      r   r«   Ú&_BZ2CompressedStreamReader._decompress”  s|   € Ø—‘×+Ñ+¨EÓ2ˆÞØ�M‰M× Ñ  Ô(ð	ØØŸ™×3Ñ3°CÓ8�ÞØ—M‘M×(Ñ(¨Õ0àñ øô ó 	ØˆDŽIð	ús   ¿?B Á?B ÂBÂBrÈ   rÉ   rË   s   @r   rÍ   rÍ   �  s   ø† õ0÷ð r   rÍ   c                  ó(   ^ • \ rS rSrU 4S jrSrU =r$ )Ú#_TruncatedBZ2CompressedStreamReaderi£  c                ó    >• [         TU ]  U5        U R                  R                  S5      nU(       a  U R                  R                  U5        g g )Nó   BZ)r¹   r   r¼   rÂ   r¥   r¯   )r   r—   r´   r¾   s      €r   r   Ú,_TruncatedBZ2CompressedStreamReader.__init__¤  s>   ø€ Ü‰Ñ˜ÔØ—‘×+Ñ+¨EÓ2ˆÞØ�M‰M× Ñ  Õ(ð r   r)   )r   r%   r&   r'   r   r(   rÊ   rË   s   @r   rØ   rØ   £  s   ø† ÷)ó )r   rØ   c                  ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )Ú_ZstdCompressedStreamReaderi«  c                óv   >• [         TU ]  U5        X l        UR                  5       R	                  5       U l        g r   )r¹   r   Ú_zstdÚZstdDecompressorr»   r¼   )r   r—   Úzstdr¾   s      €r   r   Ú$_ZstdCompressedStreamReader.__init__¬  s.   ø€ Ü‰Ñ˜ÔØŒ
Ø×/Ñ/Ó1×?Ñ?ÓAˆ�r   c                óP  • U R                   R                  U5      nU(       a  U R                  R                  U5          U R                   R                  S5      nU(       a  U R                  R                  U5        Og MA  ! U R                  R
                   a
    SU l         g f = frÓ   )r¼   rÂ   r¥   r¯   rß   Ú	ZstdErrorr§   rÕ   s      r   r«   Ú'_ZstdCompressedStreamReader._decompress±  s†   € Ø—‘×+Ñ+¨EÓ2ˆÞØ�M‰M× Ñ  Ô(ð	ØØŸ™×3Ñ3°CÓ8�ÞØ—M‘M×(Ñ(¨Õ0àñ øð �z‰z×#Ñ#ó 	ØˆDŽIð	ús   ¿?B Á?B Â!B%Â$B%)r¼   r§   rß   rÉ   rË   s   @r   rÝ   rÝ   «  s   ø† õB÷
ð r   rÝ   c                  óZ   • \ rS rSrS rS rS rS rSS jrS r	 " S	 S
5      r
SS jrSrg)Ú_zlibengineiÀ  c                ó   • g)Nó   zlibr)   r3   s    r   r   Ú_zlibengine.nameÁ  ó   € Ør   c                ó   • g)z¼zlib compression using the DEFLATE algorithm.

All Mercurial clients should support this format. The compression
algorithm strikes a reasonable balance between compression ratio
and size.
)s   gzips   GZr)   r3   s    r   rI   Ú_zlibengine.bundletypeÄ  s   € ð r   c                ó   • [        SSS5      $ )Nré   é   ©Úcompewireprotosupportr3   s    r   rJ   Ú_zlibengine.wireprotosupportÍ  ó   € Ü$ W¨b°"Ó5Ð5r   c                ó   • g)NrÁ   r)   r3   s    r   rK   Ú_zlibengine.revlogheaderÐ  s   € Ør   Nc              #  óà   #   • U=(       d    0 n[         R                  " UR                  SS5      5      nU H!  nUR                  U5      nU(       d  M  Uv •  M#     UR	                  5       v •  g 7f)Nó   levelrf   )rº   ÚcompressobjÚgetÚcompressrÄ   ©r   r‘   r’   Úzrª   Údatas         r   r“   Ú_zlibengine.compressstreamÓ  sZ   é € Ø�z�rˆä×Ò˜TŸX™X h°Ó3Ó4ˆÛˆEØ—:‘:˜eÓ$ˆD÷ ˆtØ”
ñ ð �g‰g‹i‹ùó   ‚AA.ÁA.c                ó   • [        U5      $ r   )r·   r–   s     r   r˜   Ú_zlibengine.decompressorreaderà  s   € Ü*¨2Ó.Ð.r   c                  ó*   • \ rS rSrSS jrS rS rSrg)Ú _zlibengine.zlibrevlogcompressoriã  Nc                ó   • Xl         g r   ©Ú_level)r   Úlevels     r   r   Ú)_zlibengine.zlibrevlogcompressor.__init__ä  s   € Ø�Kr   c                ó~  • [        U5      nUS:”  d   eUS:  a  g US::  aV  U R                  c  [        R                  " U5      nO [        R                  " XR                  5      n[        U5      U:  a  U$ g U R                  c  [        R                  " 5       nO[        R                  " U R                  S9n/ nSnXb:  a0  US-   nUR                  UR                  XU 5      5        UnXb:  a  M0  UR                  UR                  5       5        [        [        [         U5      5      U:  a  SR                  U5      $ g )Nr   é,   é@B ©r  i   r   )
r®   r  rº   rú   rø   r¯   rÄ   ÚsumÚmapr°   )r   rý   ÚinsizeÚ
compressedrü   ÚpartsÚposÚpos2s           r   rú   Ú)_zlibengine.zlibrevlogcompressor.compressç  s  € Ü˜“YˆFà˜A“:Ð�:à˜‹{Øà˜7Ó"Ø—;‘;Ñ&Ü!%§¢¨tÓ!4‘Jä!%§¢¨t·[±[Ó!A�JÜ�z“? VÓ+Ø%Ð%Øð —;‘;Ñ&Ü×(Ò(Ó*‘Aä×(Ò(¨t¯{©{Ñ;�AØ�Ø�Ø“lØ ™;�DØ—L‘L §¡¨D°T¨NÓ!;Ô<Ø�Cð •lð —‘˜QŸW™W›YÔ'ä”sœ3 “Ó'¨&Ó0ØŸ8™8 E›?Ð*Ør   c                óÔ   •  [         R                  " U5      $ ! [         R                   a;  n[        R                  " [	        S5      [
        R                  " U5      -  5      eS nAff = f)Nó   revlog decompress error: %s)rº   rÂ   r   ÚStorageErrorrG   r	   Úforcebytestr)r   rý   rh   s      r   rÂ   Ú+_zlibengine.zlibrevlogcompressor.decompress  sY   € ðÜ—’ tÓ,Ð,øÜ—:‘:ó Ü×(Ò(ÜÐ4Ó5Ü ×-Ò-¨aÓ0ñ1óð ûðús   ‚ ˜A'¬6A"Á"A'r  r   ©r   r%   r&   r'   r   rú   rÂ   r(   r)   r   r   Úzlibrevlogcompressorr  ã  s   † ô	 ò#	õJ	r   r  c                óP   • S nUb  UR                  S5      nU R                  U5      $ )Ns
   zlib.level)rù   r  ©r   r’   r  s      r   rœ   Ú_zlibengine.revlogcompressor  s,   € ØˆØÑØ—H‘H˜]Ó+ˆEØ×(Ñ(¨Ó/Ð/r   r)   r   )r   r%   r&   r'   r   rI   rJ   rK   r“   r˜   r  rœ   r(   r)   r   r   rç   rç   À  s0   † òòò6òôò/÷0ñ 0÷d0r   rç   c                  ó6   • \ rS rSrS rS rS rS	S jrS rSr	g)
Ú
_bz2enginei  c                ó   • g)Ns   bz2r)   r3   s    r   r   Ú_bz2engine.name   s   € Ør   c                ó   • g)a[  An algorithm that produces smaller bundles than ``gzip``.

All Mercurial clients should support this format.

This engine will likely produce smaller bundles than ``gzip`` but
will be significantly slower, both during compression and
decompression.

If available, the ``zstd`` engine can yield similar or better
compression at much higher speeds.
)ó   bzip2rÚ   r)   r3   s    r   rI   Ú_bz2engine.bundletype#  s   € ð r   c                ó   • [        SSS5      $ )Nr$  r   rð   r3   s    r   rJ   Ú_bz2engine.wireprotosupport3  s   € Ü$ X¨q°!Ó4Ð4r   Nc              #  óà   #   • U=(       d    0 n[         R                  " UR                  SS5      5      nU H!  nUR                  U5      nU(       d  M  Uv •  M#     UR	                  5       v •  g 7f)Nr÷   é	   )rÏ   ÚBZ2Compressorrù   rú   rÄ   rû   s         r   r“   Ú_bz2engine.compressstream6  sX   é € Ø�z�rˆÜ×Ò˜dŸh™h x°Ó3Ó4ˆÛˆEØ—:‘:˜eÓ$ˆDßˆtØ”
ñ ð
 �g‰g‹i‹ùrÿ   c                ó   • [        U5      $ r   )rÍ   r–   s     r   r˜   Ú_bz2engine.decompressorreader@  s   € Ü)¨"Ó-Ð-r   r)   r   )
r   r%   r&   r'   r   rI   rJ   r“   r˜   r(   r)   r   r   r   r     s   † òòò 5ôõ.r   r   c                  ó&   • \ rS rSrS rS rS rSrg)Ú_truncatedbz2engineiG  c                ó   • g)Ns   bz2truncatedr)   r3   s    r   r   Ú_truncatedbz2engine.nameH  s   € Ør   c                ó   • g)N)Ns   _truncatedBZr)   r3   s    r   rI   Ú_truncatedbz2engine.bundletypeK  s   € Ø$r   c                ó   • [        U5      $ r   )rØ   r–   s     r   r˜   Ú&_truncatedbz2engine.decompressorreaderP  s   € Ü2°2Ó6Ð6r   r)   N)r   r%   r&   r'   r   rI   r˜   r(   r)   r   r   r/  r/  G  s   † òò%õ
7r   r/  c                  óZ   • \ rS rSrS rS rS rS rSS jrS r	 " S	 S
5      r
SS jrSrg)Ú_noopengineiW  c                ó   • g)Nó   noner)   r3   s    r   r   Ú_noopengine.nameX  rë   r   c                ó   • g)z]No compression is performed.

Use this compression engine to explicitly disable compression.
)r9  s   UNr)   r3   s    r   rI   Ú_noopengine.bundletype[  s   € ð
 r   c                ó   • [        SSS5      $ )Nr9  r   é
   rð   r3   s    r   rJ   Ú_noopengine.wireprotosupporte  s   € Ü$ W¨a°Ó4Ð4r   c                ó   • g)Nó    r)   r3   s    r   rK   Ú_noopengine.revlogheaderj  s   € Ør   Nc                ó   • U$ r   r)   r�   s      r   r“   Ú_noopengine.compressstreamm  ó   € Øˆ	r   c                ó   • U$ r   r)   r–   s     r   r˜   Ú_noopengine.decompressorreaderp  rE  r   c                  ó   • \ rS rSrS rSrg)Ú _noopengine.nooprevlogcompressoris  c                ó   • g r   r)   )r   rý   s     r   rú   Ú)_noopengine.nooprevlogcompressor.compresst  s   € Ør   r)   N)r   r%   r&   r'   rú   r(   r)   r   r   ÚnooprevlogcompressorrI  s  s   † õ	r   rL  c                ó"   • U R                  5       $ r   )rL  r›   s     r   rœ   Ú_noopengine.revlogcompressorw  s   € Ø×(Ñ(Ó*Ð*r   r)   r   )r   r%   r&   r'   r   rI   rJ   rK   r“   r˜   rL  rœ   r(   r)   r   r   r7  r7  W  s/   † òòò5ò
ôò÷ñ ÷+r   r7  c                  óp   • \ rS rSrS r\S 5       rS rS rS r	S r
SS	 jrS
 r " S S5      rSS jrSrg)Ú_zstdenginei~  c                ó   • g)Nó   zstdr)   r3   s    r   r   Ú_zstdengine.name  rë   r   c                óL   •  SSK Jn  UR                    U$ ! [         a     g f = f)Nr   )rá   )Ú rá   Ú__version__ÚImportError)r   rá   s     r   Ú_moduleÚ_zstdengine._module‚  s,   € ð	Ýð ×ÒØˆKøÜó 	Ùð	ús   ‚ –
#¢#c                ó,   • [        U R                  5      $ r   )ÚboolrX  r3   s    r   r]   Ú_zstdengine.available�  s   € Ü�D—L‘LÓ!Ð!r   c                ó   • g)a´  A modern compression algorithm that is fast and highly flexible.

Only supported by Mercurial 4.1 and newer clients.

With the default settings, zstd compression is both faster and yields
better compression than ``gzip``. It also frequently yields better
compression than ``bzip2`` while operating at much higher speeds.

If this engine is available and backwards compatibility is not a
concern, it is likely the best available engine.
)rR  s   ZSr)   r3   s    r   rI   Ú_zstdengine.bundletype’  s   € ð r   c                ó   • [        SSS5      $ )NrR  é2   rð   r3   s    r   rJ   Ú_zstdengine.wireprotosupport   ró   r   c                ó   • g)Nó   (r)   r3   s    r   rK   Ú_zstdengine.revlogheader£  rë   r   Nc              #  ó.  #   • U=(       d    0 nUR                  SS5      nUR                  SS5      nU R                  nUR                  X4S9R                  5       nU H!  nUR	                  U5      nU(       d  M  Uv •  M#     UR                  5       v •  g 7f)Nr÷   é   s   threadsr   )r  Úthreads)rù   rX  ÚZstdCompressorrø   rú   rÄ   )	r   r‘   r’   r  rg  rá   rü   rª   rý   s	            r   r“   Ú_zstdengine.compressstream¦  s„   é € Ø�z�rˆð —‘˜ 1Ó%ˆà—(‘(˜: qÓ)ˆà�|‰|ˆØ×Ñ eÐÐ=×IÑIÓKˆÛˆEØ—:‘:˜eÓ$ˆDßˆtØ”
ñ ð
 �g‰g‹i‹ùs   ‚A4BÁ:Bc                ó,   • [        XR                  5      $ r   )rÝ   rX  r–   s     r   r˜   Ú_zstdengine.decompressorreader¸  s   € Ü*¨2¯|©|Ó<Ð<r   c                  ó*   • \ rS rSrSS jrS rS rSrg)Ú _zstdengine.zstdrevlogcompressori»  c                óš   • UR                  US9U l        UR                  5       U l        UR                  U l        UR                  U l        g )Nr  )rh  Ú_cctxrà   Ú_dctxÚ"COMPRESSION_RECOMMENDED_INPUT_SIZEÚ_compinsizeÚ$DECOMPRESSION_RECOMMENDED_INPUT_SIZEÚ_decompinsize)r   rá   r  s      r   r   Ú)_zstdengine.zstdrevlogcompressor.__init__¼  sE   € ð
 ×,Ñ,°5Ð,Ð9ˆDŒJØ×.Ñ.Ó0ˆDŒJØ#×FÑFˆDÔØ!%×!JÑ!JˆDÕr   c                ó  • [        U5      nUS:”  d   eUS:  a  g US::  a-  U R                  R                  U5      n[        U5      U:  a  U$ g U R                  R                  5       n/ nSnXb:  aB  X`R                  -   nUR                  XU 5      nU(       a  UR                  U5        UnXb:  a  MB  UR                  UR                  5       5        [        [        [         U5      5      U:  a  SR                  U5      $ g )Nr   r`  r  r   )
r®   ro  rú   rø   rr  r¯   rÄ   r  r  r°   )	r   rý   r  r  rü   Úchunksr  r  rª   s	            r   rú   Ú)_zstdengine.zstdrevlogcompressor.compressÆ  sè   € Ü˜“YˆFà˜A“:Ð�:à˜‹{Øà˜7Ó"Ø!ŸZ™Z×0Ñ0°Ó6�
Ü�z“? VÓ+Ø%Ð%Øà—J‘J×*Ñ*Ó,�Ø�Ø�Ø“lØ×!1Ñ!1Ñ1�DØŸJ™J t° ~Ó6�EÞØŸ™ eÔ,Ø�Cð •lð —‘˜aŸg™g›iÔ(ä”sœ3 Ó'Ó(¨6Ó1ØŸ8™8 FÓ+Ð+Ør   c                ó–  • [        U5      n U R                  R                  5       n/ nSnXR:  aB  XPR                  -   nUR	                  XU 5      nU(       a  UR                  U5        UnXR:  a  MB  SR                  U5      $ ! [         a;  n[        R                  " [        S5      [        R                  " U5      -  5      eS nAff = f)Nr   r   r  )r®   rp  r»   rt  rÂ   r¯   r°   Ú	Exceptionr   r  rG   r	   r  )	r   rý   r  Údobjrw  r  r  rª   rh   s	            r   rÂ   Ú+_zstdengine.zstdrevlogcompressor.decompressã  s¾   € Ü˜“YˆFðð —z‘z×/Ñ/Ó1�Ø�Ø�Ø“lØ×!3Ñ!3Ñ3�DØ ŸO™O¨D°T¨NÓ;�EÞØŸ™ eÔ,Ø�Cð •lð —x‘x Ó'Ð'øÜó Ü×(Ò(ÜÐ4Ó5Ü ×-Ò-¨aÓ0ñ1óð ûðús   �A#B Á2B Â
CÂ6CÃC)ro  rr  rp  rt  N)rf  r  r)   r   r   Úzstdrevlogcompressorrm  »  s   † ô	Kò	õ:	r   r}  c                ó    • U=(       d    0 nUR                  S5      nUc  UR                  S5      nUc  SnU R                  U R                  US9$ )Ns
   zstd.levelr÷   rf  r  )rù   r}  rX  r  s      r   rœ   Ú_zstdengine.revlogcompressorû  sP   € Ø�z�rˆØ—‘˜Ó'ˆØ‰=Ø—H‘H˜XÓ&ˆEØ‰=ØˆEØ×(Ñ(¨¯©¸UÐ(ÐCÐCr   r)   r   )r   r%   r&   r'   r   r   rX  r]   rI   rJ   rK   r“   r˜   r}  rœ   r(   r)   r   r   rP  rP  ~  sJ   † òð ñ
ó ð
ò"òò6òôò$=÷>ñ >÷@Dr   rP  c                 ó¸  • 0 n  " S S5      n[          HÃ  n[         U   nUR                  5       (       d  M#  UR                  5       nU(       a
  US   (       d  MF  SUS   [        R                  " UR                  5      4-  nU" 5       n[        R
                  " U5      Ul        UR                  R                  Ul        UR                  Ul        X`US   '   MÅ     U $ )z@Obtains a list of available bundle compressions for use in help.c                  ó   • \ rS rSrSrg)Ú*bundlecompressiontopics.<locals>.docobjecti  r)   N)r   r%   r&   r'   r(   r)   r   r   Ú	docobjectr‚    s   † Úr   rƒ  r   s   ``%s``
    %s)	Úcompenginesr]   rI   r   ÚgetdocÚsysstrr~   Ú_origdocÚ	_origfunc)Úitemsrƒ  r   rL   ÚbtÚdocr#   s          r   ÚbundlecompressiontopicsrŒ    sÀ   € ð €E÷ñ ÷ ˆÜ˜TÑ"ˆà×Ñ×!Ñ!Ùà×ÑÓ ˆÞ˜˜AŸÙà 2 a¡5¬(¯/ª/¸&×:KÑ:KÓ*LÐ"MÑMˆá“ˆÜ Ÿš¨Ó,ˆŒØ×*Ñ*×2Ñ2ˆŒØ ×+Ñ+ˆŒàˆb�‰e‹ñ# ð& €Lr   )!Ú
__future__r   rÏ   Úcollectionsrº   rU  r   r   r   r	   rG   rm   rn   Ú
namedtuplerñ   r   r+   r„  rE   rŸ   r·   rÍ   rØ   rÝ   rç   rQ   r   r/  r7  rP  rŒ  ro   Úi18nfunctionsr)   r   r   Ú<module>r‘     s}  ðõ #ã 
Û Û ÷ñ õ
 ð 	‡F�F€ð €
Ø€
à#×.Ò.Ø Ø0óÐ ÷(ñ (÷f:ñ f:ñR  Ó!€÷t$ñ t$÷n&%ñ &%ôRÐ"9ô ô&Ð!8ô ô()Ð*Dô )ôÐ"9ô ô*Y0Ð#ô Y0ðx × Ñ ‘[“]Ô #ô".Ð"ô ".ðJ × Ñ ‘Z“\Ô "ô
7Ð+ô 
7ð × Ñ Ñ(Ó*Ô +ô!+Ð#ô !+ðH × Ñ ‘[“]Ô #ôDDÐ#ô DDðN × Ñ ‘[“]Ô #òñ@ (Ó)×0Ñ0Ó2�r   