ó
    Ý)Ðg3  ã                   óÒ   • S SK r S SK Jr  S SKJrJrJrJrJrJrJ	r	J
r
Jr  \" S5      rS r " S S\5      r\rS\S	\4S
 jr " S S\\   5      r " S S\\   5      r " S S5      rg)é    N)ÚReferenceType)	ÚIterableÚOptionalÚGenericÚDictÚIteratorÚTypeVarÚTYPE_CHECKINGÚAnyÚCallableÚTc                 ó   • U b  U " 5       $ S $ ©N© )Úrefs    Ú./usr/lib/python3/dist-packages/debian/_util.pyÚresolve_refr      s   € à‘O‰3‹5Ð-¨Ð-ó    c                   ó’   ^ • \ rS rSrSrS/r\(       a  S\SS4U 4S jjrS r	S\
4S	 jrS
\S\4S jrS
\S\4S jrS\4S jrSrU =r$ )Ú_CaseInsensitiveStringé   zCase insensitive string.
    Ú	str_lowerÚsÚreturnNc                 ó:   >• [         [        U ]  U5        SU l        g )NÚ )Úsuperr   Ú__init__r   )Úselfr   Ú	__class__s     €r   r   Ú_CaseInsensitiveString.__init__   s   ø€ ÜÔ(¨$Ñ8¸Ô;ØˆD�Nr   c                 óZ   • [         R                  X5      nUR                  5       Ul        U$ r   )ÚstrÚ__new__Úlowerr   )ÚclsÚstr_r   s      r   r$   Ú_CaseInsensitiveString.__new__   s"   € Ü�K‰K˜Ó"ˆà—j‘j“lˆŒØˆr   c                 ó,   • [        U R                  5      $ r   )Úhashr   ©r   s    r   Ú__hash__Ú_CaseInsensitiveString.__hash__$   s   € Ü�D—N‘NÓ#Ð#r   Úotherc                 ó^   •  U R                   UR                  5       :H  $ ! [         a     gf = f)NF)r   r%   ÚAttributeError©r   r.   s     r   Ú__eq__Ú_CaseInsensitiveString.__eq__'   s.   € ð	Ø—>‘> U§[¡[£]Ñ2Ð2øÜó 	Ùð	ús   ‚ Ÿ
,«,c                 ó   • X:X  + $ r   r   r1   s     r   Ú__ne__Ú_CaseInsensitiveString.__ne__-   s   € ØÒ Ð r   c                 ó   • U R                   $ r   ©r   r+   s    r   r%   Ú_CaseInsensitiveString.lower0   s   € Ø�~‰~Ðr   r8   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__r
   r#   r   r$   Úintr,   r   r2   Úboolr5   r%   Ú__static_attributes__Ú__classcell__)r    s   @r   r   r      sm   ø† ñà�€Iæð	 ˜cð 	  d÷ 	 òð$˜#ô $ð˜Cð  Cô ð!˜Cð ! Dô !ð�s÷ ò r   r   Úxr   c                 ó"   • U R                  5       $ r   )r%   )rD   s    r   Údefault_field_sort_keyrF   7   s   € Ø�7‰7‹9Ðr   c                   ó    • \ rS rSrSrS r\S 5       r\R                  S 5       rS r	SS.S	 jr
SS.S
 jr\S 5       r\S 5       rS rS rSrg)ÚLinkedListNodeé;   )Ú_previous_nodeÚvalueÚ	next_nodeÚ__weakref__c                 ó,   • S U l         S U l        Xl        g r   )rJ   rL   rK   ©r   rK   s     r   r   ÚLinkedListNode.__init__?   s   € à"ˆÔØˆŒØ�
r   c                 ó,   • [        U R                  5      $ r   )r   rJ   r+   s    r   Úprevious_nodeÚLinkedListNode.previous_nodeE   s   € ô ˜4×.Ñ.Ó/Ð/r   c                 óP   • Ub  [         R                  " U5      U l        g S U l        g r   )Úweakrefr   rJ   ©r   Únodes     r   rR   rS   J   s!   € ð 48Ñ3CœgŸkšk¨$Ó/ˆÕÈˆÕr   c                 óŠ   • [         R                  U R                  U R                  5        S U l        S U l        U R                  $ r   )rH   Ú
link_nodesrR   rL   rK   r+   s    r   ÚremoveÚLinkedListNode.removeO   s5   € ä×!Ñ! $×"4Ñ"4°d·n±nÔEØ!ˆÔØˆŒØ�z‰zÐr   F)Úskip_currentc             #   óx   #   • U(       a  U R                   OU nU(       a  Uv •  UR                   nU(       a  M  g g 7fr   )rL   ©r   r\   rW   s      r   Ú	iter_nextÚLinkedListNode.iter_nextV   s,   é € ö ".ˆt�~Š~°4ˆÞØŠJØ—>‘>ˆD÷ Šdùó   ‚4:¸:c             #   óx   #   • U(       a  U R                   OU nU(       a  Uv •  UR                   nU(       a  M  g g 7fr   )rR   r^   s      r   Úiter_previousÚLinkedListNode.iter_previous_   s0   é € ö &2ˆt×!Ò!°tˆÞØŠJØ×%Ñ%ˆD÷ Šdùra   c                 ó:   • U(       a  Xl         U (       a  Xl        g g r   ©rR   rL   rf   s     r   rY   ÚLinkedListNode.link_nodesh   s   € ö Ø&3Ô#ÞØ&/Õ#ð r   c                 óX   • [         R                  X5        [         R                  X5        g r   )rH   rY   )Ú
first_nodeÚnew_nodeÚ	last_nodes      r   Ú_insert_linkÚLinkedListNode._insert_linkp   s    € ô 	×!Ñ! *Ô7Ü×!Ñ! (Õ6r   c                 ól   • XLa  XR                   Ld   e[        R                  U R                   X5        g r   )rR   rH   rl   ©r   rj   s     r   Úinsert_beforeÚLinkedListNode.insert_beforey   s/   € àÒ#¨×8JÑ8JÒ(JÐJÐJÜ×#Ñ# D×$6Ñ$6¸ÕGr   c                 ól   • XLa  XR                   Ld   e[        R                  XU R                   5        g r   )rL   rH   rl   ro   s     r   Úinsert_afterÚLinkedListNode.insert_after~   s+   € àÒ#¨¿¹Ò(FÐFÐFÜ×#Ñ# D°D·N±NÕCr   )rJ   rL   rR   rK   N)r:   r;   r<   r=   r?   r   ÚpropertyrR   ÚsetterrZ   r_   rc   ÚstaticmethodrY   rl   rp   rs   rB   r   r   r   rH   rH   ;   s‰   † àG€Iòð ñ0ó ð0ð ×ÑñNó ðNòð  %õ"ð $)õ&ð ñ0ó ð0ð ñ7ó ð7òHõ
Dr   rH   c                   ó¨   • \ rS rSrSrSrSS jrS\4S jrS\	4S jr
\S	 5       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S jrSrg)Ú
LinkedListé„   ab  Specialized linked list implementation to support the deb822 parser needs

We deliberately trade "encapsulation" for features needed by this library
to facilitate their implementation.  Notably, we allow nodes to leak and assume
well-behaved calls to remove_node - because that makes it easier to implement
components like Deb822InvalidParagraphElement.
©Ú	head_nodeÚ	tail_nodeÚ_sizeNc                 óX   • S U l         S U l        SU l        Ub  U R                  U5        g g ©Nr   )r|   r}   r~   Úextend)r   Úvaluess     r   r   ÚLinkedList.__init__�   s.   € àˆŒØˆŒØˆŒ
ØÑØ�K‰K˜Õð r   r   c                 ó   • U R                   S L$ r   )r|   r+   s    r   Ú__bool__ÚLinkedList.__bool__—   s   € Ø�~‰~ TÐ)Ð)r   c                 ó   • U R                   $ r   )r~   r+   s    r   Ú__len__ÚLinkedList.__len__š   s   € Ø�z‰zÐr   c                 óL   • U R                   b  U R                   R                  $ S $ r   )r}   rK   r+   s    r   ÚtailÚLinkedList.tail�   s"   € ð (,§~¡~Ñ'Aˆt�~‰~×#Ñ#ÐKÀtÐKr   c                 ój   • U R                   c  [        S5      eU R                  U R                   5        g )Nzpop from empty list)r}   Ú
IndexErrorÚremove_noder+   s    r   ÚpopÚLinkedList.pop¢   s*   € Ø�>‰>Ñ!ÜÐ2Ó3Ð3Ø×Ñ˜Ÿ™Õ(r   c              #   ó`   #   • U R                   nUc  g UR                  5        S h  v•N   g  N7fr   )r|   r_   )r   r|   s     r   Ú
iter_nodesÚLinkedList.iter_nodes§   s)   é € à—N‘Nˆ	ØÑØØ×&Ñ&Ó(×(Ó(ùs   ‚$.¦,§.c              #   óN   #   • S U R                  5        5        S h  v•N   g  N7f)Nc              3   ó8   #   • U  H  oR                   v •  M     g 7fr   ©rK   )Ú.0rW   s     r   Ú	<genexpr>Ú&LinkedList.__iter__.<locals>.<genexpr>°   s   é € Ð=Ò+< 4—J–JÒ+<ùó   ‚)r“   r+   s    r   Ú__iter__ÚLinkedList.__iter__®   s   é € á=¨4¯?©?Ô+<Ó=×=Ó=ùs   ‚%�#ž%c              #   ón   #   • U R                   nUc  g S UR                  5        5        S h  v•N   g  N7f)Nc              3   ó8   #   • U  H  oR                   v •  M     g 7fr   r—   )r˜   Úns     r   r™   Ú*LinkedList.__reversed__.<locals>.<genexpr>·   s   é € Ð?Ò%> —G–GÒ%>ùr›   )r}   rc   )r   r}   s     r   Ú__reversed__ÚLinkedList.__reversed__²   s.   é € à—N‘Nˆ	ØÑØÙ? Y×%<Ñ%<Ô%>Ó?×?Ó?ùs   ‚+5­3®5c                 ó6  • XR                   L a&  UR                  U l         U R                   c  S U l        O.XR                  L a   UR                  U l        U R                  c   eU R                  S:”  d   eU =R                  S-  sl        UR                  5         g )Nr   é   )r|   rL   r}   rR   r~   rZ   rV   s     r   r�   ÚLinkedList.remove_node¹   sx   € à—>‘>Ò!Ø!Ÿ^™^ˆDŒNØ�~‰~Ñ%Ø!%�”øØ—^‘^Ò#Ø!×/Ñ/ˆDŒNð —>‘>Ñ-Ð-Ð-Ø�z‰z˜A‹~Ðˆ~Ø�
Š
�a‰�
Ø�‰�r   c                 ót   • U R                   c  U R                  U5      $ U R                  XR                   5      $ r   )r|   Úappendrp   rO   s     r   Úinsert_at_headÚLinkedList.insert_at_headÈ   s0   € à�>‰>Ñ!Ø—;‘;˜uÓ%Ð%Ø×!Ñ! %¯©Ó8Ð8r   c                 ó  • [        U5      nU R                  c  X l        X l        OGU R                  c   eU R                  ULd   eU R                  Ul        X R                  l        X l        U =R
                  S-  sl        U$ )Nr¥   )rH   r|   r}   rR   rL   r~   )r   rK   rW   s      r   r¨   ÚLinkedList.appendÎ   ss   € ä˜eÓ$ˆØ�>‰>Ñ!Ø!ŒNØ!�Nð —>‘>Ñ-Ð-Ð-ð —>‘>¨Ò-Ð-Ð-Ø!%§¡ˆDÔØ'+�N‰NÔ$Ø!ŒNØ�
Š
�a‰�
Øˆr   c                 ó8   • U R                  [        U5      U5      $ r   )Úinsert_node_beforerH   ©r   rK   Úexisting_nodes      r   rp   ÚLinkedList.insert_beforeá   s   € à×&Ñ&¤~°eÓ'<¸mÓLÐLr   c                 ó8   • U R                  [        U5      U5      $ r   )Úinsert_node_afterrH   r¯   s      r   rs   ÚLinkedList.insert_afterå   s   € à×%Ñ%¤n°UÓ&;¸]ÓKÐKr   c                 óô   • U R                   c  [        S5      eUR                  c  UR                  b  [        S5      eUR	                  U5        X R                   L a  Xl         U =R
                  S-  sl        U$ ©Nz,List is empty; node argument cannot be validz&New node must not already be inserted!r¥   )r|   Ú
ValueErrorrL   rR   rp   r~   ©r   rj   r°   s      r   r®   ÚLinkedList.insert_node_beforeé   sj   € à�>‰>Ñ!ÜÐKÓLÐLØ×ÑÑ)¨X×-CÑ-CÑ-OÜÐEÓFÐFØ×#Ñ# HÔ-ØŸN™NÒ*Ø%ŒNØ�
Š
�a‰�
Øˆr   c                 óô   • U R                   c  [        S5      eUR                  c  UR                  b  [        S5      eUR	                  U5        X R                   L a  Xl         U =R
                  S-  sl        U$ r¶   )r}   r·   rL   rR   rs   r~   r¸   s      r   r³   ÚLinkedList.insert_node_afterõ   sj   € à�>‰>Ñ!ÜÐKÓLÐLØ×ÑÑ)¨X×-CÑ-CÑ-OÜÐEÓFÐFØ×"Ñ" 8Ô,ØŸN™NÒ*Ø%ŒNØ�
Š
�a‰�
Øˆr   c                 ó8   • U H  nU R                  U5        M     g r   )r¨   )r   r‚   Úvs      r   r�   ÚLinkedList.extend  s   € ãˆAØ�K‰K˜ŽNò r   c                 ó.   • S U l         S U l        SU l        g r€   r{   r+   s    r   ÚclearÚLinkedList.clear  s   € ØˆŒØˆŒØˆ�
r   )r~   r|   r}   r   )r   N)r:   r;   r<   r=   r>   r?   r   rA   r…   r@   rˆ   ru   r‹   r�   r“   rœ   r¢   r�   r©   r¨   rp   rs   r®   r³   r�   rÀ   rB   r   r   r   ry   ry   „   s…   † ñð 4€Iô ð*˜$ô *ð˜ô ð ñLó ðLô)ò
)ò>ò@òò9òò&MòLò
ò
ò÷
r   ry   c                   óî   • \ rS rSrSrSS jrS\SS4S jrS\SS4S jrS\	\   4S	 jr
S\	\   4S
 jrS\4S jrS\S\4S jr\rS rS\SS4S jrS\SS4S jrS\S\SS4S jrS\S\SS4S jrS rSrg)Ú
OrderedSeti  z¹A set-like object that preserves order when iterating over it

We use this to keep track of keys in Deb822Dict, because it's much faster
to look up if a key is in a set than in a list.
Nc                 ón   • 0 U l         [        5       U l        Uc  / nU H  nU R                  U5        M     g r   )Ú_OrderedSet__tablery   Ú_OrderedSet__orderÚadd©r   ÚiterableÚitems      r   r   ÚOrderedSet.__init__  s4   € ð ˆŒÜ!“|ˆŒØÑØˆHÛˆDØ�H‰H�TŽNò r   rÊ   r   c                 ó¸   • X;  a+  U R                   R                  U5      n X R                  U'   g g ! [         a    U R                   R	                  U5        e f = fr   )rÆ   r¨   rÅ   Ú	Exceptionr�   ©r   rÊ   rW   s      r   rÇ   ÚOrderedSet.add!  sZ   € ØÓð
 —<‘<×&Ñ& tÓ,ˆDðØ%)—‘˜TÒ"ð øô ó Ø—‘×(Ñ(¨Ô.Øðús	   ¢2 ²'Ac                 ór   • U R                   U   nU R                   U	 U R                  R                  U5        g r   )rÅ   rÆ   r�   rÎ   s      r   rZ   ÚOrderedSet.remove.  s0   € ð �|‰|˜DÑ!ˆØ�L‰L˜ÐØ�‰× Ñ  Õ&r   c                 ó,   • [        U R                  5      $ r   )ÚiterrÆ   r+   s    r   rœ   ÚOrderedSet.__iter__5  s   € ä�D—L‘LÓ!Ð!r   c                 ó>   • [        [        U R                  5      5      $ r   )rÓ   ÚreversedrÆ   r+   s    r   r¢   ÚOrderedSet.__reversed__9  s   € ä”H˜TŸ\™\Ó*Ó+Ð+r   c                 ó,   • [        U R                  5      $ r   )ÚlenrÆ   r+   s    r   rˆ   ÚOrderedSet.__len__=  s   € Ü�4—<‘<Ó Ð r   c                 ó   • XR                   ;   $ r   )rÅ   ©r   rÊ   s     r   Ú__contains__ÚOrderedSet.__contains__@  s   € ð —|‘|Ñ#Ð#r   c                 ó8   • U H  nU R                  U5        M     g r   )rÇ   rÈ   s      r   r�   ÚOrderedSet.extendH  s   € ãˆDØ�H‰H�TŽNò r   c                 óN   • U R                  XR                  R                  5        g)z2Re-order the given item so it is "last" in the setN)Ú_reorderrÆ   r¨   rÜ   s     r   Ú
order_lastÚOrderedSet.order_lastN  s   € à�‰�dŸL™L×/Ñ/Õ0r   c                 óN   • U R                  XR                  R                  5        g)z3Re-order the given item so it is "first" in the setN)râ   rÆ   r©   rÜ   s     r   Úorder_firstÚOrderedSet.order_firstR  s   € à�‰�dŸL™L×7Ñ7Õ8r   Úreference_itemc                 ót   ^ ^• X:X  a  [        S5      eT R                  U   mT R                  UUU 4S j5        g)zTRe-order the given item so appears directly after the reference item in the sequenceú*Cannot re-order an item relative to itselfc                 ó<   >• TR                   R                  U T5      $ r   )rÆ   rp   ©rD   Úreference_noder   s    €€r   Ú<lambda>Ú)OrderedSet.order_before.<locals>.<lambda>[  s   ø€  d§l¡l×&@Ñ&@ÀÀNÔ&Sr   N©r·   rÅ   râ   ©r   rÊ   rè   rí   s   `  @r   Úorder_beforeÚOrderedSet.order_beforeV  s2   ù€ àÓ!ÜÐIÓJÐJØŸ™ nÑ5ˆØ�‰�dÕSÕTr   c                 ót   ^ ^• X:X  a  [        S5      eT R                  U   mT R                  UUU 4S j5        g)zURe-order the given item so appears directly before the reference item in the sequencerê   c                 ó<   >• TR                   R                  U T5      $ r   )rÆ   rs   rì   s    €€r   rî   Ú(OrderedSet.order_after.<locals>.<lambda>b  s   ø€  d§l¡l×&?Ñ&?ÀÀ>Ô&Rr   Nrð   rñ   s   `  @r   Úorder_afterÚOrderedSet.order_after]  s2   ù€ àÓ!ÜÐIÓJÐJØŸ™ nÑ5ˆØ�‰�dÕRÕSr   c                 ó˜   • U R                   U   nU R                  R                  U5        U" UR                  5      nX@R                   U'   g r   )rÅ   rÆ   r�   rK   )r   rÊ   Ú
reinserterrW   rj   s        r   râ   ÚOrderedSet._reorderd  s>   € ð
 �|‰|˜DÑ!ˆØ�‰× Ñ  Ô&Ù˜dŸj™jÓ)ˆØ%�‰�TÒr   )Ú__orderÚ__tabler   )r:   r;   r<   r=   r>   r   r#   rÇ   rZ   r   rœ   r¢   r@   rˆ   rA   rÝ   r¨   r�   rã   ræ   rò   r÷   râ   rB   r   r   r   rÃ   rÃ     sä   † ñôð˜ð  ô ð'˜3ð ' 4ô 'ð"˜( 3™-ô "ð,˜h s™mô ,ð!˜ô !ð$ ð $¨ô $ð €Fòð1˜sð 1 tô 1ð9 ð 9¨ô 9ðU ð U°cð U¸dô UðT ð T°Sð T¸Tô Tõ&r   rÃ   )rU   r   Útypingr   r   r   r   r   r	   r
   r   r   r   r   r#   r   Ú_strIrF   rH   ry   rÃ   r   r   r   Ú<module>r      s…   ðÛ Ý !÷÷ õ ñ ˆCƒL€ò.ô
˜Sô ðB 	€ð˜cð  cô ôFD�W˜Q‘Zô FDôRE�˜‘ô E÷P`&ò `&r   