ó
    6°hc�  ã                  ó  • S SK Jr  S SKrS SKrSSKJr  SSKJrJrJ	r	J
r
  SSKJrJr   " S S\R                  5      r " S	 S
\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 " 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SNS' jrSOS( jr      SPS) jr!    SQS* jr"S+ r#S, r$ SRS- jr%S. r&S/ r'S0 r(S1 r)S2 r*S3 r+S4 r,S5 r-S6 r.S7 r/S8 r0SSS9 jr1SSS: jr2SSS; jr3SSS< jr4S= r5S> r6S\/\7\'\\2\8\40r9S? r:S@ r;SA r<SB r=STSC jr>SD r?SE r@SF rASG rBSH rCSI rDSJ rESK rFSL rGSM rHg)Ué    )ÚannotationsNé   )Ú_)ÚerrorÚpycompatÚsmartsetÚutil)ÚdateutilÚ
stringutilc                  ó   • \ rS rSrSrg)ÚResourceUnavailableé   © N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Ú8/usr/lib/python3/dist-packages/mercurial/templateutil.pyr   r      ó   † Úr   r   c                  ó   • \ rS rSrSrg)ÚTemplateNotFoundé   r   Nr   r   r   r   r   r      r   r   r   c                  ó˜  • \ rS rSrSr\R                  r\R                  S 5       r	\R                  S 5       r
\R                  S 5       r\R                  S 5       r\R                  S 5       r\R                  S 5       r\R                  S	 5       r\R                  S
 5       r\R                  S 5       r\R                  S 5       rSrg)Úwrappedé"   zŽObject requiring extra conversion prior to displaying or processing
as value

Use unwrapvalue() or unwrapastype() to obtain the inner object.
c                ó   • g)zRTest if the specified item is in self

The item argument may be a wrapped object.
Nr   ©ÚselfÚcontextÚmappingÚitems       r   ÚcontainsÚwrapped.contains+   ó   � r   c                ó   • g)z³Return a member item for the specified key

The key argument may be a wrapped object.
A returned object may be either a wrapped object or a pure value
depending on the self type.
Nr   ©r!   r"   r#   Úkeys       r   Ú	getmemberÚwrapped.getmember2   r'   r   c                ó   • g)zbReturn the smallest item, which may be either a wrapped or a pure
value depending on the self typeNr   ©r!   r"   r#   s      r   ÚgetminÚwrapped.getmin;   r'   r   c                ó   • g)zaReturn the largest item, which may be either a wrapped or a pure
value depending on the self typeNr   r.   s      r   ÚgetmaxÚwrapped.getmax@   r'   r   c                ó   • g)z–Return new container of the same type which includes only the
selected elements

select() takes each item as a wrapped object and returns True/False.
Nr   ©r!   r"   r#   Úselects       r   ÚfilterÚwrapped.filterE   r'   r   c                ó   • g)zYield each template mappingNr   ©r!   r"   s     r   ÚitermapsÚwrapped.itermapsM   r'   r   c                ó   • g)z¶Join items with the separator; Returns a bytes or (possibly nested)
generator of bytes

A pre-configured template may be rendered per item if this container
holds unprintable items.
Nr   ©r!   r"   r#   Úseps       r   ÚjoinÚwrapped.joinQ   r'   r   c                ó   • g)z°Return a bytes or (possibly nested) generator of bytes representing
the underlying object

A pre-configured template may be rendered if the underlying object is
not printable.
Nr   r.   s      r   ÚshowÚwrapped.showZ   r'   r   c                ó   • g)z2Return a boolean representation of the inner valueNr   r.   s      r   ÚtoboolÚwrapped.toboolc   r'   r   c                ó   • g)z„Move the inner value object out or create a value representation

A returned value must be serializable by templaterfilters.json().
Nr   r.   s      r   ÚtovalueÚwrapped.tovalueg   r'   r   r   N)r   r   r   r   Ú__doc__ÚabcÚABCMetaÚ__metaclass__Úabstractmethodr%   r+   r/   r2   r7   r;   r@   rC   rF   rI   r   r   r   r   r   r   "   s  † ñð —K‘K€Mà×Ññó ðð 	×Ññó ðð 	×Ññ,ó ð,ð 	×Ññ,ó ð,ð 	×Ññó ðð 	×Ññ*ó ð*ð 	×Ññó ðð 	×Ññó ðð 	×ÑñAó ðAð 	×Ññó ór   r   c                  óZ   • \ rS rSrSr\R                  rS r\R                  S 5       r
Srg)Úmappableéo   z:Object which can be converted to a single template mappingc              #  ó2   #   • U R                  U5      v •  g 7f©N)Útomapr:   s     r   r;   Úmappable.itermapst   s   é € Ø�j‰j˜Ó!Ó!ùs   ‚c                ó   • g)z2Create a single template mapping representing thisNr   r:   s     r   rU   Úmappable.tomapw   r'   r   r   N)r   r   r   r   rK   rL   rM   rN   r;   rO   rU   r   r   r   r   rQ   rQ   o   s/   † ÙDà—K‘K€Mò"ð 	×ÑñAó óAr   rQ   c                  ó`   • \ 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)Úwrappedbytesé|   zWrapper for byte stringc                ó   • Xl         g rT   ©Ú_value©r!   Úvalues     r   Ú__init__Úwrappedbytes.__init__   ó   € Ø�r   c                ó6   • [        XU5      nX0R                  ;   $ rT   )Ú	stringifyr^   r    s       r   r%   Úwrappedbytes.contains‚   s   € Ü˜¨4Ó0ˆØ—{‘{Ñ"Ð"r   c                ó‚   • [         R                  " [        S5      [        R                  " U R
                  5      -  5      e©Ns   %r is not a dictionary©r   Ú
ParseErrorr   r   Úbytestrr^   r)   s       r   r+   Úwrappedbytes.getmember†   s2   € Ü×ÒÜÐ'Ó(¬8×+;Ò+;¸D¿K¹KÓ+HÑHó
ð 	
r   c                ó.   • U R                  X[        5      $ rT   ©Ú_getbyÚminr.   s      r   r/   Úwrappedbytes.getmin‹   ó   € Ø�{‰{˜7¬SÓ1Ð1r   c                ó.   • U R                  X[        5      $ rT   ©ro   Úmaxr.   s      r   r2   Úwrappedbytes.getmaxŽ   rr   r   c                ó®   • U R                   (       d  [        R                  " [        S5      5      eU" [        R
                  " U R                   5      5      $ )Ns   empty string)r^   r   rj   r   r   Úiterbytestr)r!   r"   r#   Úfuncs       r   ro   Úwrappedbytes._getby‘   s9   € Ø�{�{Ü×"Ò"¤1 _Ó#5Ó6Ð6Ù”H×(Ò(¨¯©Ó5Ó6Ð6r   c                ó‚   • [         R                  " [        S5      [        R                  " U R
                  5      -  5      e)Ns   %r is not filterableri   r5   s       r   r7   Úwrappedbytes.filter–   s2   € Ü×ÒÜÐ%Ó&¬×)9Ò)9¸$¿+¹+Ó)FÑFó
ð 	
r   c                ó‚   • [         R                  " [        S5      [        R                  " U R
                  5      -  5      e©Ns   %r is not iterable of mappingsri   r:   s     r   r;   Úwrappedbytes.itermaps›   s2   € Ü×ÒÜÐ/Ó0´8×3CÒ3CÀDÇKÁKÓ3PÑPó
ð 	
r   c                óV   • [        [        R                  " U R                  5      U5      $ rT   )Ú	joinitemsr   rx   r^   r>   s       r   r@   Úwrappedbytes.join    s   € Üœ×-Ò-¨d¯k©kÓ:¸CÓ@Ð@r   c                ó   • U R                   $ rT   r]   r.   s      r   rC   Úwrappedbytes.show£   ó   € Ø�{‰{Ðr   c                ó,   • [        U R                  5      $ rT   )Úboolr^   r.   s      r   rF   Úwrappedbytes.tobool¦   s   € Ü�D—K‘KÓ Ð r   c                ó   • U R                   $ rT   r]   r.   s      r   rI   Úwrappedbytes.tovalue©   r…   r   r]   N)r   r   r   r   rK   ra   r%   r+   r/   r2   ro   r7   r;   r@   rC   rF   rI   r   r   r   r   rZ   rZ   |   sB   † Ù!òò#ò
ò
2ò2ò7ò

ò

ò
Aòò!õr   rZ   c                  óZ   • \ 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)Úwrappedvalueé­   z2Generic wrapper for pure non-list/dict/bytes valuec                ó   • Xl         g rT   r]   r_   s     r   ra   Úwrappedvalue.__init__°   rc   r   c                óZ   • [         R                  " [        S5      U R                  -  5      e©Ns   %r is not iterable©r   rj   r   r^   r    s       r   r%   Úwrappedvalue.contains³   ó"   € Ü×ÒœqÐ!6Ó7¸$¿+¹+ÑEÓFÐFr   c                óZ   • [         R                  " [        S5      U R                  -  5      erh   r’   r)   s       r   r+   Úwrappedvalue.getmember¶   s"   € Ü×ÒœqÐ!:Ó;¸d¿k¹kÑIÓJÐJr   c                óZ   • [         R                  " [        S5      U R                  -  5      er‘   r’   r.   s      r   r/   Úwrappedvalue.getmin¹   r”   r   c                óZ   • [         R                  " [        S5      U R                  -  5      er‘   r’   r.   s      r   r2   Úwrappedvalue.getmax¼   r”   r   c                óZ   • [         R                  " [        S5      U R                  -  5      er‘   r’   r5   s       r   r7   Úwrappedvalue.filter¿   r”   r   c                óZ   • [         R                  " [        S5      U R                  -  5      er~   r’   r:   s     r   r;   Úwrappedvalue.itermapsÂ   s'   € Ü×ÒÜÐ/Ó0°4·;±;Ñ>ó
ð 	
r   c                óZ   • [         R                  " [        S5      U R                  -  5      er‘   r’   r>   s       r   r@   Úwrappedvalue.joinÇ   r”   r   c                ó^   • U R                   c  g[        R                  " U R                   5      $ ©Nr   )r^   r   rk   r.   s      r   rC   Úwrappedvalue.showÊ   s$   € Ø�;‰;ÑØÜ×Ò §¡Ó,Ð,r   c                óÆ   • U R                   c  g[        U R                   [        5      (       a  U R                   $ [        [        R                  " U R                   5      5      $ )NF)r^   Ú
isinstancer‡   r   rk   r.   s      r   rF   Úwrappedvalue.toboolÏ   sD   € Ø�;‰;ÑØÜ�d—k‘k¤4×(Ñ(Ø—;‘;Ðä”H×$Ò$ T§[¡[Ó1Ó2Ð2r   c                ó   • U R                   $ rT   r]   r.   s      r   rI   Úwrappedvalue.tovalue×   r…   r   r]   N)r   r   r   r   rK   ra   r%   r+   r/   r2   r7   r;   r@   rC   rF   rI   r   r   r   r   rŒ   rŒ   ­   sB   † Ù<òòGòKòGòGòGò
ò
Gò-ò
3õr   rŒ   c                  ó^   • \ rS rS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g)ÚdateéÛ   zWrapper for date tuplec                óJ   • [        [        U5      u  U l        U l        X l        g rT   )ÚmapÚintÚ	_unixtimeÚ	_tzoffsetÚ_showfmt)r!   r`   Úshowfmts      r   ra   Údate.__init__Þ   s   € ô *-¬S°%«Ñ&ˆŒ˜œØ�r   c                ó@   • [         R                  " [        S5      5      e©Ns   date is not iterable©r   rj   r   r    s       r   r%   Údate.containsä   ó   € Ü×ÒœqÐ!8Ó9Ó:Ð:r   c                ó@   • [         R                  " [        S5      5      e)Ns   date is not a dictionaryr¶   r)   s       r   r+   Údate.getmemberç   s   € Ü×ÒœqÐ!<Ó=Ó>Ð>r   c                ó@   • [         R                  " [        S5      5      erµ   r¶   r.   s      r   r/   Údate.getminê   r¸   r   c                ó@   • [         R                  " [        S5      5      erµ   r¶   r.   s      r   r2   Údate.getmaxí   r¸   r   c                ó@   • [         R                  " [        S5      5      erµ   r¶   r5   s       r   r7   Údate.filterð   r¸   r   c                ó@   • [         R                  " [        S5      5      erµ   r¶   r>   s       r   r@   Ú	date.joinó   r¸   r   c                óL   • U R                   U R                  U R                  4-  $ rT   )r±   r¯   r°   r.   s      r   rC   Ú	date.showö   s   € Ø�}‰} §¡°·±Ð?Ñ?Ð?r   c                ó4   • U R                   U R                  S.$ )N)s   unixtimes   tzoffset©r¯   r°   r:   s     r   rU   Ú
date.tomapù   s   € Ø!Ÿ^™^¸$¿.¹.ÑIÐIr   c                ó   • g©NTr   r.   s      r   rF   Údate.toboolü   s   € Ør   c                ó2   • U R                   U R                  4$ rT   rÆ   r.   s      r   rI   Údate.tovalueÿ   s   € Ø—‘ §¡Ð/Ð/r   )r±   r°   r¯   N)s   %d %d)r   r   r   r   rK   ra   r%   r+   r/   r2   r7   r@   rC   rU   rF   rI   r   r   r   r   rª   rª   Û   s>   † Ù ô ò;ò?ò;ò;ò;ò;ò@òJòõ0r   rª   c                  ój   • \ rS rS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g)Úhybridi  aƒ  Wrapper for list or dict to support legacy template

    This class allows us to handle both:
    - "{files}" (legacy command-line-specific list hack) and
    - "{files % '{file}
'}" (hgweb-style with inlining and function support)
    and to access raw values:
    - "{ifcontains(file, files, ...)}", "{ifcontains(key, extras, ...)}"
    - "{get(extras, key)}"
    - "{files|json}"
    Nc                ó@   • Xl         X l        X0l        X@l        XPl        g rT   )Ú_genÚ_valuesÚ_makemapÚ_joinfmtÚ_keytype)r!   ÚgenÚvaluesÚmakemapÚjoinfmtÚkeytypes         r   ra   Úhybrid.__init__  s   € ØŒ	ØŒØŒØŒØ�r   c                óJ   • [        XX0R                  5      nX0R                  ;   $ rT   )ÚunwrapastyperÔ   rÑ   r    s       r   r%   Úhybrid.contains  s   € Ü˜G¨d·M±MÓBˆØ—|‘|Ñ#Ð#r   c                óö   • [        U R                  S5      (       d  [        R                  " [	        S5      5      e[        XX0R                  5      nU R                  X0R                  R                  U5      5      $ )NÚgetó   not a dictionary)	ÚhasattrrÑ   r   rj   r   rÜ   rÔ   Ú
_wrapvaluerß   r)   s       r   r+   Úhybrid.getmember  sX   € ä�t—|‘| U×+Ñ+Ü×"Ò"¤1Ð%8Ó#9Ó:Ð:Ü˜7¨S·-±-Ó@ˆØ�‰˜s§L¡L×$4Ñ$4°SÓ$9Ó:Ð:r   c                ó.   • U R                  X[        5      $ rT   rn   r.   s      r   r/   Úhybrid.getmin!  rr   r   c                ó.   • U R                  X[        5      $ rT   rt   r.   s      r   r2   Úhybrid.getmax$  rr   r   c                ó¨   • U R                   (       d  [        R                  " [        S5      5      eU" U R                   5      nU R	                  XD5      $ ©Ns   empty sequence)rÑ   r   rj   r   râ   )r!   r"   r#   ry   Úvals        r   ro   Úhybrid._getby'  s=   € Ø�|�|Ü×"Ò"¤1Ð%6Ó#7Ó8Ð8Ù�4—<‘<Ó ˆØ�‰˜sÓ(Ð(r   c                ó^   • Uc  g [        US5      (       a  U$ [        S XU R                  5      $ )NrÒ   )rá   Ú
hybriditemrÒ   )r!   r*   rê   s      r   râ   Úhybrid._wrapvalue-  s/   € Ø‰;ØÜ�3˜
×#Ñ#àˆJÜ˜$ ¨$¯-©-Ó8Ð8r   c           
     ó²  • [        U R                  S5      (       aM  U R                  R                  5        VVs0 s H%  u  pEU" U R                  XE5      5      (       d  M#  XE_M'     nnnO9U R                   Vs/ s H"  oS" U R                  XU5      5      (       d  M   UPM$     nn[	        S X`R
                  U R                  U R                  5      $ s  snnf s  snf ©Nrß   )rá   rÑ   Úitemsrâ   rÎ   rÒ   rÓ   rÔ   )r!   r"   r#   r6   ÚkÚvrÖ   s          r   r7   Úhybrid.filter5  s­   € Ü�4—<‘< ×'Ñ'ð !ŸL™L×.Ñ.Ô0ôâ0‘D�AÙ˜$Ÿ/™/¨!Ó/×0ó �’Ù0ð ñ ˆFð "&§¢ÓO¢˜A°¸¿¹ÈÓ8M×1N—a¡ˆFÐOÜ�d˜F§M¡M°4·=±=À$Ç-Á-ÓPÐPùóùò Ps   ¹"CÁCÁ7CÂCc              #  ó^   #   • U R                   nU R                   H  nU" U5      v •  M     g 7frT   )rÒ   rÑ   )r!   r"   r×   Úxs       r   r;   Úhybrid.itermaps@  s&   é € Ø—-‘-ˆØ—”ˆAÙ˜!“*Ôò ùs   ‚+-c                óD   ^ • [        U 4S jT R                   5       U5      $ )Nc              3  óF   >#   • U  H  nTR                  U5      v •  M     g 7frT   )rÓ   )Ú.0rö   r!   s     €r   Ú	<genexpr>Úhybrid.join.<locals>.<genexpr>G  s   øé € ÐA²L¨q˜$Ÿ-™-¨×*Ð*²Lùs   ƒ!)r�   rÑ   r>   s   `   r   r@   Úhybrid.joinE  s   ø€ äÔA°D·L²LÓAÀ3ÓGÐGr   c                óv   • U R                   nUc  U R                  XS5      $ [        U5      (       a  U" 5       $ U$ ©Nó    )rÐ   r@   Úcallable©r!   r"   r#   rÕ   s       r   rC   Úhybrid.showI  s6   € à�i‰iˆØ‰;Ø—9‘9˜W¨tÓ4Ð4Ü�C�=‰=Ù“5ˆLØˆ
r   c                ó,   • [        U R                  5      $ rT   )r‡   rÑ   r.   s      r   rF   Úhybrid.toboolR  s   € Ü�D—L‘LÓ!Ð!r   c           
     óì   • U R                   n[        US5      (       a0  UR                  5        VVs0 s H  u  pEU[        XU5      _M     snn$ U Vs/ s H  n[        XU5      PM     sn$ s  snnf s  snf rð   )rÑ   rá   rñ   Úunwrapvalue)r!   r"   r#   Úxsrò   ró   rö   s          r   rI   Úhybrid.tovalueU  sf   € à�\‰\ˆÜ�2�u×ÑØDFÇHÁHÄJÔOÂJ¹D¸A�A”{ 7°QÓ7Ò7ÁJÒOÐOÙ:<Ó=º"°Q”˜G¨aÖ0¹"Ñ=Ð=ùó PùÚ=s   ±A+ÁA1)rÐ   rÓ   rÔ   rÒ   rÑ   rT   )r   r   r   r   rK   ra   r%   r+   r/   r2   ro   râ   r7   r;   r@   rC   rF   rI   r   r   r   r   rÎ   rÎ     sJ   † ñ	ô ò$ò;ò2ò2ò)ò9ò	Qòò
Hòò"õ>r   rÎ   c                  óZ   • \ 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)rí   i]  z¢Wrapper for non-list/dict object to support map operation

This class allows us to handle both:
- "{manifest}"
- "{manifest % '{rev}:{node}'}"
- "{manifest.rev}"
c                ó4   • Xl         X l        X0l        X@l        g rT   )rÐ   Ú_keyr^   rÒ   )r!   rÕ   r*   r`   r×   s        r   ra   Úhybriditem.__init__f  s   € ØŒ	ØŒ	ØŒØ�r   c                ó8   • U R                  U R                  5      $ rT   )rÒ   r  r:   s     r   rU   Úhybriditem.tomapl  s   € Ø�}‰}˜TŸY™YÓ'Ð'r   c                óR   • [        XU R                  5      nUR                  XU5      $ rT   )Úmakewrappedr^   r%   )r!   r"   r#   r$   Úws        r   r%   Úhybriditem.containso  s#   € Ü˜¨$¯+©+Ó6ˆØ�z‰z˜'¨DÓ1Ð1r   c                óR   • [        XU R                  5      nUR                  XU5      $ rT   )r  r^   r+   )r!   r"   r#   r*   r  s        r   r+   Úhybriditem.getmembers  s#   € Ü˜¨$¯+©+Ó6ˆØ�{‰{˜7¨SÓ1Ð1r   c                óP   • [        XU R                  5      nUR                  X5      $ rT   )r  r^   r/   ©r!   r"   r#   r  s       r   r/   Úhybriditem.getminw  ó!   € Ü˜¨$¯+©+Ó6ˆØ�x‰x˜Ó)Ð)r   c                óP   • [        XU R                  5      nUR                  X5      $ rT   )r  r^   r2   r  s       r   r2   Úhybriditem.getmax{  r  r   c                óR   • [        XU R                  5      nUR                  XU5      $ rT   )r  r^   r7   )r!   r"   r#   r6   r  s        r   r7   Úhybriditem.filter  s#   € Ü˜¨$¯+©+Ó6ˆØ�x‰x˜¨&Ó1Ð1r   c                óR   • [        XU R                  5      nUR                  XU5      $ rT   )r  r^   r@   )r!   r"   r#   r?   r  s        r   r@   Úhybriditem.joinƒ  s#   € Ü˜¨$¯+©+Ó6ˆØ�v‰v�g¨Ó,Ð,r   c                ó’   • U R                   nUc   [        R                  " U R                  5      $ [	        U5      (       a  U" 5       $ U$ rT   )rÐ   r   rk   r^   r  r  s       r   rC   Úhybriditem.show‡  s:   € à�i‰iˆØ‰;Ü×#Ò# D§K¡KÓ0Ð0Ü�C�=‰=Ù“5ˆLØˆ
r   c                óP   • [        XU R                  5      nUR                  X5      $ rT   )r  r^   rF   r  s       r   rF   Úhybriditem.tobool�  r  r   c                ó.   • [        XU R                  5      $ rT   )Ú_unthunkr^   r.   s      r   rI   Úhybriditem.tovalue”  s   € Ü˜¨$¯+©+Ó6Ð6r   )rÐ   r  rÒ   r^   N)r   r   r   r   rK   ra   rU   r%   r+   r/   r2   r7   r@   rC   rF   rI   r   r   r   r   rí   rí   ]  s>   † ñò ò(ò2ò2ò*ò*ò2ò-òò*õ7r   rí   c                  ój   • \ rS rS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g)Úrevslisti˜  aB  Wrapper for a smartset (a list/set of revision numbers)

If name specified, the revs will be rendered with the old-style list
template of the given name by default.

The cachekey provides a hint to cache further computation on this
smartset. If the underlying smartset is dynamically created, the cachekey
should be None.
Nc                óv   • [        U[        R                  5      (       d   eXl        X l        X0l        X@l        g rT   )r¥   r   ÚabstractsmartsetÚ_repoÚ_revsÚ_nameÚcachekey)r!   ÚrepoÚrevsÚnamer.  s        r   ra   Úrevslist.__init__£  s/   € Ü˜$¤× 9Ñ 9×:Ñ:Ð:Ð:ØŒ
ØŒ
ØŒ
Ø �r   c                ó6   • [        XU5      nX@R                  ;   $ rT   )Úunwrapintegerr,  )r!   r"   r#   r$   Úrevs        r   r%   Úrevslist.containsª  s   € Ü˜G¨dÓ3ˆØ—j‘jÑ Ð r   c                ó@   • [         R                  " [        S5      5      e©Nrà   r¶   r)   s       r   r+   Úrevslist.getmember®  ó   € Ü×ÒœqÐ!4Ó5Ó6Ð6r   c                ób   • U R                  5       nU" U R                  R                  5       5      $ rT   )Ú_makehybriditemfuncr,  rp   ©r!   r"   r#   Úmakehybriditems       r   r/   Úrevslist.getmin±  ó&   € Ø×1Ñ1Ó3ˆÙ˜dŸj™jŸn™nÓ.Ó/Ð/r   c                ób   • U R                  5       nU" U R                  R                  5       5      $ rT   )r<  r,  ru   r=  s       r   r2   Úrevslist.getmaxµ  r@  r   c                ó�   ^^• U R                  5       mU R                  R                  UU4S j5      n[        U R                  US S9$ )Nc                ó    >• T" T" U 5      5      $ rT   r   )Úrr>  r6   s    €€r   Ú<lambda>Ú!revslist.filter.<locals>.<lambda>»  s   ø€ ©F±>À!Ó3DÔ,Er   )r1  )r<  r,  r7   r(  r+  )r!   r"   r#   r6   Úfrevsr>  s      ` @r   r7   Úrevslist.filter¹  s9   ù€ Ø×1Ñ1Ó3ˆØ—
‘
×!Ñ!Õ"EÓFˆä˜Ÿ
™
 E°Ñ5Ð5r   c              #  óf   #   • U R                  5       nU R                   H  nU" U5      v •  M     g 7frT   )Ú_makemapfuncr,  )r!   r"   r×   rE  s       r   r;   Úrevslist.itermaps¿  s+   é € Ø×#Ñ#Ó%ˆØ—”ˆAÙ˜!“*Ôò ùó   ‚/1c                ó0   ^• U R                  5       mU4S j$ )Nc                ó   >• [        S X T5      $ rT   )rí   )rE  r×   s    €r   rF  Ú.revslist._makehybriditemfunc.<locals>.<lambda>Æ  s   ø€ œ D¨!°Ô8r   )rK  )r!   r×   s    @r   r<  Úrevslist._makehybriditemfuncÄ  s   ø€ Ø×#Ñ#Ó%ˆÜ8Ð8r   c                ó^   ^^• U R                   mU R                  mT(       a  UU4S j$ U4S j$ )Nc                ó   >• TU STU    0$ ©Ns   ctxr   )rE  r1  r/  s    €€r   rF  Ú'revslist._makemapfunc.<locals>.<lambda>Ì  s   ø€ ˜d A v¨t°A©wÑ7r   c                ó   >• STU    0$ rT  r   )rE  r/  s    €r   rF  rU  Î  s   ø€ ˜f d¨1¡gÑ.r   )r+  r-  )r!   r1  r/  s    @@r   rK  Úrevslist._makemapfuncÈ  s$   ù€ Ø�z‰zˆØ�z‰zˆÞÝ7Ð7ä.Ð.r   c                ó.   • [        U R                  U5      $ rT   )r�   r,  r>   s       r   r@   Úrevslist.joinÐ  s   € Ü˜Ÿ™ SÓ)Ð)r   c                ó¾   • U R                   (       a6  U R                   Vs/ s H  nSU-  PM
     nn[        XU R                   U5      $ U R                  XS5      $ s  snf )Ns   %dr   )r-  r,  Ú_showcompatlistr@   )r!   r"   r#   rE  Úsrevss        r   rC   Úrevslist.showÓ  sN   € Ø�:�:Ø(,¯
ª
Ó3ª
 1�U˜Q”Y©
ˆEÐ3Ü" 7°T·Z±ZÀÓGÐGà—9‘9˜W¨tÓ4Ð4ùò 4s    Ac                ó,   • [        U R                  5      $ rT   )r‡   r,  r.   s      r   rF   Úrevslist.toboolÚ  s   € Ü�D—J‘JÓÐr   c                ó   • U R                   $ rT   )r,  r.   s      r   rI   Úrevslist.tovalueÝ  s   € Ø�z‰zÐr   )r-  r+  r,  r.  ©NN)r   r   r   r   rK   ra   r%   r+   r/   r2   r7   r;   r<  rK  r@   rC   rF   rI   r   r   r   r   r(  r(  ˜  sH   † ñô!ò!ò7ò0ò0ò6òò
9ò/ò*ò5ò õr   r(  c                  óR   • \ rS rS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g)Ú_mappingsequenceiá  zÕWrapper for sequence of template mappings

This represents an inner template structure (i.e. a list of dicts),
which can also be rendered by the specified named/literal template.

Template mappings may be nested.
Nc                ó`   • Ub  Ub  [         R                  " S5      eXl        X l        X0l        g )Ns$   name and tmpl are mutually exclusive)r   ÚProgrammingErrorr-  Ú_tmplÚ_defaultsep)r!   r1  Útmplr?   s       r   ra   Ú_mappingsequence.__init__ê  s5   € ØÑ Ñ 0Ü×(Ò(Ø7óð ð Œ
ØŒ
ØÕr   c                ó@   • [         R                  " [        S5      5      e©Ns   not comparabler¶   r    s       r   r%   Ú_mappingsequence.containsó  ó   € Ü×ÒœqÐ!2Ó3Ó4Ð4r   c                ó@   • [         R                  " [        S5      5      er8  r¶   r)   s       r   r+   Ú_mappingsequence.getmemberö  r:  r   c                ó@   • [         R                  " [        S5      5      erl  r¶   r.   s      r   r/   Ú_mappingsequence.getminù  rn  r   c                ó@   • [         R                  " [        S5      5      erl  r¶   r.   s      r   r2   Ú_mappingsequence.getmaxü  rn  r   c                ó@   • [         R                  " [        S5      5      e)Ns   not filterable without templater¶   r5   s       r   r7   Ú_mappingsequence.filterÿ  s   € ä×ÒœqÐ!CÓDÓEÐEr   c                ó  ^ ^• [        TUT R                  T5      5      nT R                  (       a  UU 4S jU 5       nO>T R                  (       a  UU 4S jU 5       nO[        R
                  " [        S5      5      e[        XS5      $ )Nc              3  ó\   >#   • U  H!  nTR                  TR                  U5      v •  M#     g 7frT   )Úprocessr-  ©rú   Úmr"   r!   s     €€r   rû   Ú(_mappingsequence.join.<locals>.<genexpr>  s#   øé € ÐIÂ¸1˜Ÿ™¨¯
©
°A×6Ð6Âùó   ƒ),c              3  ó\   >#   • U  H!  nTR                  TR                  U5      v •  M#     g 7frT   )Úexpandrg  rz  s     €€r   rû   r|    s#   øé € ÐHºx¸!˜Ÿ™ t§z¡z°1×5Ð5ºxùr}  s    not displayable without template)Ú_iteroverlaymapsr;   r-  rg  r   rj   r   r�   )r!   r"   r#   r?   ÚmapsiterÚitemiters   ``    r   r@   Ú_mappingsequence.join  s^   ù€ Ü# G¨W°d·m±mÀGÓ6LÓMˆØ�:�:ÝIÁÓI‰HØ�Z�ZÝH¹xÓH‰Hä×"Ò"¤1Ð%HÓ#IÓJÐJÜ˜Ó'Ð'r   c                ó:   • U R                  XU R                  5      $ rT   )r@   rh  r.   s      r   rC   Ú_mappingsequence.show  s   € Ø�y‰y˜¨4×+;Ñ+;Ó<Ð<r   c                ó  • UR                  5       n/ nU R                  U5       HZ  nUR                  X%5      nUR                  UR	                  5        VVs0 s H  u  pxXs;  d  M  U[        XU5      _M     snn5        M\     U$ s  snnf rT   )Úknownresourcekeysr;   Ú
overlaymapÚappendrñ   r  )	r!   r"   r#   Úknownresrñ   ÚnmÚlmrò   ró   s	            r   rI   Ú_mappingsequence.tovalue  s‰   € Ø×,Ñ,Ó.ˆØˆØ—-‘- Ö(ˆBà×#Ñ# GÓ0ˆBØ�L‰Lð !#§¡¤
ôâ *™˜ØÑ(ó 3�A”{ 7°Ó2Ò2Ù *òöñ )ð ˆùós   ÁBÁ%B)rh  r-  rg  ©NNr   )r   r   r   r   rK   ra   r%   r+   r/   r2   r7   r@   rC   rI   r   r   r   r   rd  rd  á  s5   † ñôò5ò7ò5ò5òFò(ò=õr   rd  c                  ó<   ^ • \ rS rSrSrSU 4S jjrS rS rSrU =r	$ )Úmappinggeneratori   z~Wrapper for generator of template mappings

The function ``make(context, *args)`` should return a generator of
mapping dicts.
c                ó>   >• [         TU ]  X4U5        Xl        X l        g rT   )Úsuperra   Ú_makeÚ_args)r!   ÚmakeÚargsr1  ri  r?   Ú	__class__s         €r   ra   Úmappinggenerator.__init__'  s   ø€ Ü‰Ñ˜ SÔ)ØŒ
Ø�
r   c                ó<   • U R                   " U/U R                  Q76 $ rT   ©r“  r”  r:   s     r   r;   Úmappinggenerator.itermaps,  ó   € Ø�zŠz˜'Ð/ D§J¡JÒ/Ð/r   c                ó6   • [        U R                  U5      5      $ rT   )Ú	_nonemptyr;   r.   s      r   rF   Úmappinggenerator.tobool/  s   € Ü˜Ÿ™ wÓ/Ó0Ð0r   ©r”  r“  )r   NNr   ©
r   r   r   r   rK   ra   r;   rF   r   Ú__classcell__©r—  s   @r   r�  r�     s   ø† ñ÷ò
0÷1ð 1r   r�  c                  ó<   ^ • \ rS rSrSrSU 4S jjrS rS rSrU =r	$ )Úmappinglisti3  z%Wrapper for list of template mappingsc                ó2   >• [         TU ]  X#U5        Xl        g rT   )r’  ra   Ú	_mappings)r!   Úmappingsr1  ri  r?   r—  s        €r   ra   Úmappinglist.__init__6  s   ø€ Ü‰Ñ˜ SÔ)Ø!�r   c                ó,   • [        U R                  5      $ rT   )Úiterr§  r:   s     r   r;   Úmappinglist.itermaps:  ó   € Ü�D—N‘NÓ#Ð#r   c                ó,   • [        U R                  5      $ rT   )r‡   r§  r.   s      r   rF   Úmappinglist.tobool=  r­  r   )r§  rŽ  r¡  r£  s   @r   r¥  r¥  3  s   ø† Ù/÷"ò$÷$ð $r   r¥  c                  óH   ^ • \ rS rSrSrSU 4S jjrS rS rU 4S jrSr	U =r
$ )	ÚmappingdictiA  z¯Wrapper for a single template mapping

This isn't a sequence in a way that the underlying dict won't be iterated
as a dict, but shares most of the _mappingsequence functions.
c                ó0   >• [         TU ]  X#5        Xl        g rT   )r’  ra   Ú_mapping)r!   r#   r1  ri  r—  s       €r   ra   Úmappingdict.__init__H  s   ø€ Ü‰Ñ˜Ô$Ø�r   c                ó   • U R                   $ rT   ©r³  r:   s     r   rU   Úmappingdict.tomapL  s   € Ø�}‰}Ðr   c                ó   • grÉ   r   r.   s      r   rF   Úmappingdict.toboolO  s   € ð r   c                ó(   >• [         TU ]  X5      S   $ )Nr   )r’  rI   )r!   r"   r#   r—  s      €r   rI   Úmappingdict.tovalueU  s   ø€ Ü‰w‰˜wÓ0°Ñ3Ð3r   r¶  rb  )r   r   r   r   rK   ra   rU   rF   rI   r   r¢  r£  s   @r   r±  r±  A  s!   ø† ñ÷ òò÷4ó 4r   r±  c                  ó2   ^ • \ rS rSrSrU 4S jrS rSrU =r$ )ÚmappingnoneiY  zªWrapper for None, but supports map operation

This represents None of Optional[mappable]. It's similar to
mapplinglist([]), but the underlying value is not [], but None.
c                ó$   >• [         TU ]  S 5        g rT   )r’  ra   )r!   r—  s    €r   ra   Úmappingnone.__init__`  s   ø€ Ü‰Ñ˜Õr   c                ó   • [        / 5      $ rT   )r«  r:   s     r   r;   Úmappingnone.itermapsc  s   € Ü�B‹xˆr   r   )	r   r   r   r   rK   ra   r;   r   r¢  r£  s   @r   r½  r½  Y  s   ø† ñõ÷ð r   r½  c                  óz   • \ rS rSrSrSS jrS rS rS rS r	S r
S	 r\S
 5       rS rS rS rS rS rS rSrg)Úmappedgeneratorig  zöWrapper for generator of strings which acts as a list

The function ``make(context, *args)`` should return a generator of
byte strings, or a generator of (possibly nested) generators of byte
strings (i.e. a generator for a list of byte strings.)
c                ó   • Xl         X l        g rT   rš  )r!   r•  r–  s      r   ra   Úmappedgenerator.__init__o  s   € ØŒ
Ø�
r   c                ó@   • [        XU5      nX0R                  X5      ;   $ rT   )re   rI   r    s       r   r%   Úmappedgenerator.containss  s    € Ü˜¨4Ó0ˆØ—|‘| GÓ5Ñ5Ð5r   c                ó<   • U R                   " U/U R                  Q76 $ rT   rš  r:   s     r   rÐ   Úmappedgenerator._genw  rœ  r   c                ó@   • [         R                  " [        S5      5      er8  r¶   r)   s       r   r+   Úmappedgenerator.getmemberz  r:  r   c                ó.   • U R                  X[        5      $ rT   rn   r.   s      r   r/   Úmappedgenerator.getmin}  rr   r   c                ó.   • U R                  X[        5      $ rT   rt   r.   s      r   r2   Úmappedgenerator.getmax€  rr   r   c                ó€   • U R                  X5      nU(       d  [        R                  " [        S5      5      eU" U5      $ ré   )rI   r   rj   r   )r!   r"   r#   ry   r  s        r   ro   Úmappedgenerator._getbyƒ  s3   € Ø�\‰\˜'Ó+ˆÞÜ×"Ò"¤1Ð%6Ó#7Ó8Ð8Ù�B‹xˆr   c              #  ó|   #   • U" U /UQ76  H+  n[        XU5      nU" [        U5      5      (       d  M'  Uv •  M-     g 7frT   )re   rZ   )r"   r#   r•  r–  r6   rö   Úss          r   Ú_filteredgenÚmappedgenerator._filteredgen‰  s9   é € á�gÐ% Õ%ˆAÜ˜'¨AÓ.ˆAÙ”l 1“o×&Ó&Ø”ò &ùs   ‚-<³	<c                ó`   • X R                   U R                  U4n[        U R                  U5      $ rT   )r“  r”  rÃ  rÔ  )r!   r"   r#   r6   r–  s        r   r7   Úmappedgenerator.filter�  s)   € ØŸ™ T§Z¡Z°Ð8ˆÜ˜t×0Ñ0°$Ó7Ð7r   c                ó@   • [         R                  " [        S5      5      e)Ns   list of strings is not mappabler¶   r:   s     r   r;   Úmappedgenerator.itermaps”  s   € Ü×ÒœqÐ!CÓDÓEÐEr   c                ó8   • [        U R                  U5      U5      $ rT   )r�   rÐ   r>   s       r   r@   Úmappedgenerator.join—  s   € Ü˜Ÿ™ 7Ó+¨SÓ1Ð1r   c                ó&   • U R                  XS5      $ r¢   )r@   r.   s      r   rC   Úmappedgenerator.showš  s   € Ø�y‰y˜¨3Ó/Ð/r   c                ó6   • [        U R                  U5      5      $ rT   )rž  rÐ   r.   s      r   rF   Úmappedgenerator.tobool�  s   € Ü˜Ÿ™ 7Ó+Ó,Ð,r   c                ód   • U R                  U5       Vs/ s H  n[        XU5      PM     sn$ s  snf rT   )rÐ   re   )r!   r"   r#   rö   s       r   rI   Úmappedgenerator.tovalue   s,   € Ø8<¿	¹	À'Ô8JÓKÒ8J°1”	˜'¨AÖ.Ñ8JÑKÐKùÒKs   ”-r   N)r   )r   r   r   r   rK   ra   r%   rÐ   r+   r/   r2   ro   ÚstaticmethodrÔ  r7   r;   r@   rC   rF   rI   r   r   r   r   rÃ  rÃ  g  s^   † ñôò6ò0ò7ò2ò2òð ñó ðò8òFò2ò0ò-õLr   rÃ  c                óŠ   ^ ^^^^• [         R                  mTc  Sm[         R                  m[        UT U UU4S jU UU4S j5      $ )z>Wrap data to support both dict-like and string-like operationss   %s=%sc                ó   >• TU TTU    0$ rT   r   )rò   Údatar*   r`   s    €€€r   rF  Úhybriddict.<locals>.<lambda>­  s   ø€ �3˜˜5 $ q¡'Ñ*r   c                ó0   >• TT" U 5      T" TU    5      4-  $ rT   r   )rò   rå  ÚfmtÚprefmts    €€€r   rF  ræ  ®  s   ø€ �#™ ›¡F¨4°©7£OÐ4Ò4r   ©r   Úidentityrk   rÎ   )rå  r*   r`   rè  rÕ   ré  s   ```` @r   Ú
hybriddictrì  ¤  s<   ü€ ä×Ñ€FØ
�{ØˆÜ×!Ñ!ˆÜØØÞ*Þ4ó	ð r   c                ó~   ^^^• [         R                  mTc  Sm[         R                  m[        X0U4S jUU4S j5      $ )z>Wrap data to support both list-like and string-like operationss   %sc                ó   >• TU 0$ rT   r   )rö   r1  s    €r   rF  Úhybridlist.<locals>.<lambda>¸  s	   ø€ ¨¨a¡yr   c                ó   >• TT" U 5      -  $ rT   r   )rö   rè  ré  s    €€r   rF  rï  ¸  s   ø€ ¸CÁ&ÈÃ)ºOr   rê  )rå  r1  rè  rÕ   ré  s    `` @r   Ú
hybridlistrñ  ²  s4   ú€ ä×Ñ€FØ
�{ØˆÜ×!Ñ!ˆÜ�#Ô0Õ2KÓLÐLr   c	                óŠ   • UR                  5        V	V
s/ s H	  u  pšXIXZ0PM     nn	n
[        XX+Xx5      n[        X4XVUS9$ s  sn
n	f )z¸Wrap data like hybriddict(), but also supports old-style list template

This exists for backward compatibility with the old-style template. Use
hybriddict() for new template keywords.
)r*   r`   rè  rÕ   )rñ   r[  rì  )r"   r#   r1  rå  r*   r`   rè  ÚpluralÚ	separatorrò   ró   ÚcÚfs                r   Ú
compatdictr÷  »  sG   € ð  )-¯
©
¬Ô5ª¡ ˆ#�%Ó	©€AÑ5Ü˜¨$°6ÓE€AÜ�d¨5¸qÑAÐAùó 	6s   ”?c                óB   • [        XX#Xg5      n[        X4=(       d    UXXS9$ )z¸Wrap data like hybridlist(), but also supports old-style list template

This exists for backward compatibility with the old-style template. Use
hybridlist() for new template keywords.
)r1  rè  rÕ   )r[  rñ  )	r"   r#   r1  rå  Úelementrè  ró  rô  rö  s	            r   Ú
compatlistrú  Ð  s#   € ô 	˜¨$°fÓH€AÜ�d§¨D°cÑAÐAr   c                ó®   ^• T VVs/ s H	  u  pEXES.PM     nnn[        XX&SS9n[        R                  " T5      m[        UTU4S jU4S j5      $ s  snnf )z­Wrap list of (dest, source) file names to support old-style list
template and field names

This exists for backward compatibility. Use hybriddict for new template
keywords.
)ó   nameó   sources   file_copies)ró  c                ó   >• X TU    S.$ )N)rü  ó   pathrý  r   ©rò   Úcopiess    €r   rF  Ú&compatfilecopiesdict.<locals>.<lambda>ñ  s   ø€ ˜A°f¸Q±iÒ@r   c                ó   >• SU TU    4-  $ )Ns   %s (%s)r   r   s    €r   rF  r  ò  s   ø€ �*  6¨!¡9˜~Ò-r   )r[  r	   ÚsortdictrÎ   )r"   r#   r1  r  rò   ró   rõ  rö  s      `    r   Úcompatfilecopiesdictr  ã  sX   ø€ ñ 17Ô7²©¨�1Ô	#±€AÑ7Ü˜¨$¸.ÑI€AÜ�]Š]˜6Ó"€FÜØ	ØÜ@Ü-ó	ð ùó 	8s   ‡Ac                óR   • [        XX#5      n[        XCS [        R                  5      $ )zžWrap list of file names to support old-style list template and field
names

This exists for backward compatibility. Use hybridlist for new template
keywords.
c                ó
   • X S.$ )N)s   filerÿ  r   )rö   s    r   rF  Ú!compatfileslist.<locals>.<lambda>ÿ  s   €  aÒ4r   )r[  rÎ   r   rë  )r"   r#   r1  Úfilesrö  s        r   Úcompatfileslistr
  ö  s+   € ô 	˜¨$Ó6€AÜØ	Ñ4´h×6GÑ6Góð r   c              #  óÜ  ^ ^^#   • U(       d  TS-   nU(       d0  SU-   nT R                  U5      (       a  T R                  UT5      v •  gT R                  T5      (       dV  [        US   [        5      (       a  UR	                  U5      v •  gU H#  n[        U5      nUR                  T5        Uv •  M%     gSU-   n	T R                  U	5      (       a  T R                  U	T5      v •  T4U UU4S jjn
ST-   nT R                  U5      (       a  UR                  5       nOSnU H  nU
" U5      v •  M     Ub  U
" XËS9v •  S	U-   nT R                  U5      (       a  T R                  UT5      v •  gg7f)
a  Return a generator that renders old-style list template

name is name of key in template map.
values is list of strings or dicts.
plural is plural of name, if not simply name + 's'.
separator is used to join values as a string

expansion works like this, given name 'foo'.

if values is empty, expand 'no_foos'.

if 'foo' not in template map, return values as a string,
joined by 'separator'.

expand 'start_foos'.

for each value, expand 'foo'. if 'last_foo' in template
map, expand it instead of 'foo' for last key.

expand 'end_foos'.
ó   ss   no_Nr   s   start_c                óþ   >• 0 n UR                  U 5        TR	                  TU5      nTR                  X5      $ ! [        [        [        4 a.     U  H	  u  p4XBU'   M      NJ! [        [        4 a    XT'     Naf = ff = frT   )ÚupdateÚAttributeErrorÚ	TypeErrorÚ
ValueErrorrˆ  ry  )ró   ÚtagÚvmappingÚaÚbr"   r#   r1  s        €€€r   ÚoneÚ_showcompatlist.<locals>.one/  s‰   ø€ Øˆð	#Ø�O‰O˜AÔð ×%Ñ% g¨xÓ8ˆØ�‰˜sÓ-Ð-øô ¤	¬:Ð6ó 	#ð#ó ‘D�AØ"#˜Q“Kó øäœzÐ*ó #Ø!"˜”ð#úð	#ús'   …9 ¹A<ÁA Á A8Á4A<Á7A8Á8A<s   last_)r  s   end_)Úpreloadry  r¥   Úbytesr@   Údictr  Úpop)r"   r#   r1  rÖ   ró  rô  Únonameró   rE  Ú	startnamer  ÚlastnameÚlastÚendnames   ```           r   r[  r[    sV  úé € ö0 Ø˜‘ˆÞØ˜&‘ˆØ�?‰?˜6×"Ñ"Ø—/‘/ &¨'Ó2Ò2ØØ�?‰?˜4× Ñ Ü�f˜Q‘i¤×'Ñ'Ø—.‘. Ó(Ò(ð 	ó	 �Ü˜“G�Ø—‘˜Ô!Ø”ñ ð 	Ø˜FÑ"€IØ‡��y×!Ñ!Ø�o‰o˜i¨Ó1Ò1à÷ .ñ .ð" ˜$‰€HØ‡��x× Ñ Ø�z‰z‹|‰àˆÛˆÙ�!‹fŒñ àÑÙ�$Ñ%Ò%Ø˜Ñ€GØ‡��w×ÑØ�o‰o˜g wÓ/Ó/ð  ùs   …E'E,c              #  ód  #   • [        U[        5      (       a  UR                  X5      n[        U[        5      (       a  Uv •  g[        U[        5      (       a  [
        R                  " SU-  5      eUc  g[        US5      (       d  [        R                  " U5      v •  gU Hˆ  n[        U[        5      (       a  UR                  X5      n[        U[        5      (       a  Uv •  MD  Uc  MI  [        US5      (       d  [        R                  " U5      v •  Mt  [        XU5       Sh  v•N   MŠ     g N	7f)z=Yield a single stream from a possibly nested set of iteratorssH   Mercurial IO including templates is done with bytes, not strings, got %rNÚ__iter__)r¥   r   rC   r  Ústrr   rf  rá   r   rk   Úflatten)r"   r#   ÚthingÚis       r   r$  r$  N  sû   é € ä�%œ×!Ñ!Ø—
‘
˜7Ó,ˆÜ�%œ×ÑØ‹Ü	�Eœ3×	Ñ	ô ×$Ò$ð0Ø27ñ8ó
ð 	
ð 
‰ØÜ�U˜J×'Ñ'Ü×Ò˜uÓ%Ó%ãˆAÜ˜!œW×%Ñ%Ø—F‘F˜7Ó,�Ü˜!œU×#Ñ#Ø”Ø‘ÙÜ˜Q 
×+Ñ+Ü×&Ò& qÓ)Ô)ä" 7°QÓ7×7Ò7ò ñ 8ùs   ‚D"D0Ä$D.Ä%
D0c                óf   • [        U[        5      (       a  U$ SR                  [        XU5      5      $ )zETurn values into bytes by converting into text and concatenating themr   )r¥   r  r@   r$  ©r"   r#   r%  s      r   re   re   m  s*   € ä�%œ×ÑØˆØ�8‰8”G˜G¨eÓ4Ó5Ð5r   c                óF   •  U u  pU[         L a  U$ U[        L a  US   n OgM!  )z\Find symbolic name for the given compiled expression; returns None
if nothing found reliablyr   N)Ú	runsymbolÚ	runfilter)Úargry   rå  s      r   Úfindsymbolicnamer-  t  s4   € ð Ø‰
ˆØ”9ÒØˆKØ”YÒØ�q‘'‰Càñ r   c                ó<   •  [        U 5        g! [         a     gf = f)NTF)ÚnextÚStopIteration)Úxiters    r   rž  rž  �  s#   € ðÜˆUŒØøÜó Ùðús   ‚ Ž
šc                ó\   • [        U[        R                  5      (       d  U$ [        XU5      $ )z&Evaluate a lazy byte string into value)r¥   ÚtypesÚGeneratorTypere   r(  s      r   r%  r%  ‰  s'   € ä�eœU×0Ñ0×1Ñ1ØˆÜ�W uÓ-Ð-r   c                ó   • Uu  p4U" XU5      $ )z}Evaluate given argument as a bare template object which may require
further processing (such as folding generator of strings)r   )r"   r#   r,  ry   rå  s        r   Ú
evalrawexpr6  �  s   € ð �J€DÙ� $Ó'Ð'r   c                ó2   • [        XU5      n[        XU5      $ )z)Evaluate given argument to wrapped object)r6  r  )r"   r#   r,  r%  s       r   Úevalwrappedr8  —  s   € ä�w¨Ó-€EÜ�w¨Ó/Ð/r   c                óž   • [        U[        5      (       a  U$ [        XU5      n[        U[        5      (       a  [	        U5      $ [        U5      $ )zLift object to a wrapped type)r¥   r   r%  r  rZ   rŒ   r(  s      r   r  r  �  sC   € ä�%œ×!Ñ!ØˆÜ�W uÓ-€EÜ�%œ×ÑÜ˜EÓ"Ð"Ü˜ÓÐr   c           	     ó.   • [        X[        XU5      5      $ )z%Evaluate given argument as value type)r  r6  ©r"   r#   r,  s      r   Úevalfuncargr<  §  s   € ä�w¬°GÀcÓ)JÓKÐKr   c                óf   • [        U[        5      (       a  UR                  X5      $ [        XU5      $ )z.Move the inner value object out of the wrapper)r¥   r   rI   r%  r(  s      r   r  r  ¬  s-   € ä�%œ×!Ñ!Ø�}‰}˜WÓ.Ð.ô �G eÓ,Ð,r   c                ó¨   • Uu  p4U[         L a"  U" XUSS9nUc  [        R                  " U5      nO	U" XU5      n[        XU5      R	                  X5      $ )zCEvaluate given argument as boolean, but also takes boolean literalsN©Údefault)r*  r   Ú	parseboolr  rF   ©r"   r#   r,  ry   rå  r%  s         r   ÚevalbooleanrC  µ  sY   € à�J€DØŒyÒÙ�W t°TÑ:ˆØ‰=ä×(Ò(¨Ó.ˆEøá�W tÓ,ˆÜ�w¨Ó/×6Ñ6°wÓHÐHr   c                ó2   • [        XU5      n[        XXC5      $ )z\Evaluate given argument as a date tuple or a date string; returns
a (unixtime, offset) tuple)r6  Ú
unwrapdate©r"   r#   r,  Úerrr%  s        r   ÚevaldaterH  Â  s   € ô �w¨Ó-€EÜ�g¨Ó3Ð3r   c                ób  • [        U[        5      (       a  UR                  X5      $ [        XU5      n [        R
                  " U5      $ ! [         a)    [        R                  " U=(       d    [        S5      5      e[        R                   a    U(       d  e [        R                  " U5      ef = f)Ns   not a date tuple nor a string)
r¥   rª   rI   r  r
   Ú	parsedater  r   rj   r   ©r"   r#   r%  rG  s       r   rE  rE  É  s‘   € Ü�%œ×ÑØ�}‰}˜WÓ.Ð.ä˜¨%Ó0€Eð$Ü×!Ò! %Ó(Ð(øÜó KÜ×Ò˜s×I¤aÐ(HÓ&IÓJÐJÜ×Ñó $ÞØÜ×Ò˜sÓ#Ð#ð$ús   ´A
 Á
A$B.c                ó2   • [        XU5      n[        XXC5      $ rT   )r6  r4  rF  s        r   ÚevalintegerrM  Ø  s   € Ü�w¨Ó-€EÜ˜¨5Ó6Ð6r   c                óª   • [        XU5      n [        U5      $ ! [        [        4 a)    [        R
                  " U=(       d    [        S5      5      ef = f)Ns   not an integer)r  r®   r  r  r   rj   r   rK  s       r   r4  r4  Ý  sM   € Ü˜¨%Ó0€Eð<Ü�5‹zÐøÜ”zÐ"ó <Ü×Ò˜s×:¤aÐ(9Ó&:Ó;Ð;ð<ús	   Ž
 ™9Ac           	     ó.   • [        X[        XU5      5      $ rT   )re   r6  r;  s      r   Ú
evalstringrP  å  s   € Ü�W¤z°'ÀCÓ'HÓIÐIr   c                óV   • Uu  p4U[         L a  U" XXDS9nO	U" XU5      n[        XU5      $ )zTEvaluate given argument as string template, but returns symbol name
if it is unknownr?  )r*  re   rB  s         r   ÚevalstringliteralrR  é  s8   € ð �J€DØŒyÒÙ�W tÑ:‰á�W tÓ,ˆÜ�W uÓ-Ð-r   c                óv   •  [         U   nU" XU5      $ ! [         a    [        R                  " SU-  5      ef = f)zBMove the inner value object out of the wrapper and coerce its types   invalid type specified: %r)Ú_unwrapfuncbytypeÚKeyErrorr   rf  )r"   r#   r%  Útyprö  s        r   rÜ   rÜ   ü  sK   € ðJÜ˜cÑ"ˆñ ˆW˜uÓ%Ð%øô ó JÜ×$Ò$Ð%BÀSÑ%HÓIÐIðJús   ‚	 ”$8c                ó   • [        U5      $ rT   )r®   ©r"   r#   rå  s      r   Ú
runintegerrY    s   € Üˆt‹9Ðr   c                ó   • U$ rT   r   rX  s      r   Ú	runstringr[  	  s   € Ø€Kr   c                ó   ^ • U 4S jnU$ )Nc                óH   >• [         R                  " [        S5      T-  5      e)Ns$   recursive reference '%s' in template)r   ÚAbortr   )r"   r#   r*   s     €r   ÚshowrecursionÚ._recursivesymbolblocker.<locals>.showrecursion  s   ø€ Ü�kŠkœ!ÐCÓDÀsÑJÓKÐKr   r   )r*   r_  s   ` r   Ú_recursivesymbolblockerra    s   ø€ õLð Ðr   c                ó  • U R                  X5      nUc/  UR                  5       n[        U5      XR'    U R                  X%5      n[        U5      (       a	   U" X5      $ U$ ! [         a    Un N)f = f! [         a     g f = frT   )ÚsymbolÚcopyra  ry  r   r  r   )r"   r#   r*   r@  ró   Úsafemappings         r   r*  r*    s�   € Ø�‰�wÓ$€AØ�yð —l‘l“nˆÜ2°3Ó7ˆÑð	Ø—‘ Ó1ˆAô �‡{�{ð	Ù�WÓ&Ð&ð €Høô  ó 	ØŠAð	ûô #ó 	áð	ús#   ³A ÁA1 ÁA.Á-A.Á1
A>Á=A>c              #  ó:   #   • U H  n[        XU5      v •  M     g 7frT   )r6  )r"   r#   Útemplater,  s       r   Úruntemplaterh  )  s   é € ÛˆÜ˜¨3Ó/Ô/ò ùs   ‚c                óì   • Uu  p4[        XU5      n[        USS 5      n [        XXV5      nU" U5      $ ! [        R                   a,  n[        R                  " [        U5      [        X45      S9eS nAff = f)NÚ_intype©Úhint)r6  ÚgetattrrÜ   r   rj   r  Ú_formatfiltererror)r"   r#   rå  r,  Úfiltr%  ÚintypeÚes           r   r+  r+  .  st   € Ø�I€CÜ�w¨Ó-€EÜ�T˜9 dÓ+€FðMÜ˜W¨uÓ=ˆÙ�E‹{ÐøÜ×Ñó MÜ×Òœu Q›xÔ.@ÀÓ.KÑLÐLûðMús   Ÿ3 ³A3Á'A.Á.A3c                ó¢   • [         R                  " UR                  5      n[        U 5      nU(       d  [	        S5      U-  $ [	        S5      UU4-  $ )Ns(   incompatible use of template filter '%s's8   template filter '%s' is not compatible with keyword '%s')r   Úsysbytesr   r-  r   )r,  ro  ÚfnÚsyms       r   rn  rn  9  sS   € Ü	×	Ò	˜4Ÿ=™=Ó	)€BÜ
˜3Ó
€CÞÜÐ<Ó=ÀÑBÐBÜÐHÓIØ
ØðMñ ð r   c              #  óf   #   • [        U5       H  u  p4U R                  X5      nX5S'   Uv •  M      g7f)zqGenerate combined mappings from the original mapping and an iterable
of partial mappings to override the originals   indexN)Ú	enumeraterˆ  )r"   ÚorigmappingÚnewmappingsr&  r‹  rŒ  s         r   r€  r€  D  s4   é € ô ˜;Ö'‰ˆØ×Ñ Ó0ˆØˆ8‰ØŒò (ùrM  c              #  ó(  #   •  UR                  U 5      n[        XU5       H  n	[        X	U5      v •  M     g ! [        R                   aD  n[        U5      nU(       d  e [	        S5      U-  n[        R                  " [        U5      US9eS nAff = f7f)Ns+   keyword '%s' does not support map operationrk  )r;   r   rj   r-  r   r  r€  r6  )
r"   r#   ÚdÚdargÚtargÚditerrG  ru  rl  rŒ  s
             r   Ú	_applymapr  M  s†   é € ð6Ø—
‘
˜7Ó#ˆô ˜w°Ö7ˆÜ˜ dÓ+Ô+ò 8øô ×Ñó 6Ü˜tÓ$ˆÞØÜÐ?Ó@À3ÑFˆÜ×Òœu S›z°Ñ5Ð5ûð6üs%   ‚B„7 •"B·BÁ?B
Â
BÂBc                óB   • Uu  p4[        XU5      n[        [        XX44S9$ )N)r–  )r8  rÃ  r  )r"   r#   rå  r|  r}  r{  s         r   Úrunmapr�  Z  s'   € Ø�J€DÜ�G dÓ+€AÜœ9¨G¸Ð+CÑDÐDr   c                ó€  • Uu  p4[        XU5      n[        U[        5      (       a,  U R                  XR	                  U 5      5      n[        XU5      $  UR                  XU5      $ ! [        R                   aD  n[        U5      nU(       d  e [        S5      U-  n	[        R                  " [        U5      U	S9eS nAff = f)Ns.   keyword '%s' does not support member operationrk  )r8  r¥   rQ   rˆ  rU   r*  r+   r   rj   r-  r   r  )
r"   r#   rå  r|  Úmembr{  rŒ  rG  ru  rl  s
             r   Ú	runmemberr„  `  s«   € Ø�J€DÜ�G dÓ+€AÜ�!”X×ÑØ×Ñ ¯©°Ó)9Ó:ˆÜ˜ dÓ+Ð+ð6Ø�{‰{˜7¨TÓ2Ð2øÜ×Ñó 6Ü˜tÓ$ˆÞØÜÐBÓCÀcÑIˆÜ×Òœu S›z°Ñ5Ð5ûð6ús   ÁA% Á%B=Á9?B8Â8B=c                ó4   • [        XU[        S5      5      nU* $ )Ns"   negation needs an integer argument)rM  r   rX  s      r   Ú	runnegater†  p  s"   € ÜØ˜$¤Ð"GÓ Hó€Dð ˆ5€Lr   c                óÐ   • Uu  p4n[        XU[        S5      5      n[        XU[        S5      5      n U" XE5      $ ! [         a     [        R                  " [        S5      5      ef = f)Ns#   arithmetic only defined on integerss   division by zero is not defined)rM  r   ÚZeroDivisionErrorr   r^  )r"   r#   rå  ry   ÚleftÚrights         r   Úrunarithmeticr‹  w  ss   € ØÑ€D�ÜØ˜$¤Ð"HÓ Ió€Dô Ø˜%¤Ð#IÓ!Jó€EðAÙ�DÓ Ð øÜó AÜ�kŠkœ!Ð>Ó?Ó@Ð@ðAús	   ³; »*A%c              #  óT   #   • SnU  H  nU(       a  SnOU(       a  Uv •  Uv •  M     g7f)z9Join items with the separator; Returns generator of bytesTFNr   )r‚  r?   Úfirströ   s       r   r�   r�   …  s)   é € à€EÛˆÞØ‰EÞØŠIØŒò ùs   ‚&()ó   keyó   valueNNrb  )rŽ  r�  NNr   )NNNr   rÿ   rT   )r   )IÚ
__future__r   rL   r3  Úi18nr   Ú r   r   r   r	   Úutilsr
   r   r^  r   r   r   rQ   rZ   rŒ   rª   rÎ   rí   r(  rd  r�  r¥  r±  r½  rÃ  rì  rñ  r÷  rú  r  r
  r[  r$  re   r-  rž  r%  r6  r8  r  r<  r  rC  rH  rE  rM  r4  rP  rR  r  r®   rT  rÜ   rY  r[  ra  r*  rh  r+  rn  r€  r  r�  r„  r†  r‹  r�   r   r   r   Ú<module>r”     s  ðõ #ã 
Û å ÷ó ÷ô	˜%Ÿ+™+ô 	ô	�u—{‘{ô 	÷Jñ J÷Z
Añ 
Aô.�7ô .ôb+�7ô +ô\%0ˆ8�Wô %0ôPW>ˆWô W>ôt87�˜7ô 87ôvFˆwô FôR<�wô <ô~1Ð'ô 1ô&$Ð"ô $ô4�(Ð,ô 4ô0�,ô ô:L�gô :LôzôMð 	Ø
ØØØôBð4 ØØØôBò&ò&
ð <@ôH0òV8ò>6ò
òò.ò(ò0òòLò
-ò
Iô4ô$ô7ô
<òJò.ð 	ˆ+Ø	ˆ9Øˆ*Øˆð	Ð ò&òòòôò*0ò
Mòòò
,òEò6ò òAór   