+
    )O|jÖ
  ã            
      ó   € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIHtH	t	 ^RI
Ht ]'       d	   ^ RIHtHt  ! R R]	4      tR R	 lt]P"                  R
 R l4       tR R lt]R8X  d¥   ^ RIt]P,                  ! 4       t]P1                  R4      '       g   Q R4       h]! R]4       ]! R]! ]P4                  4      4       ]! RRR7       ]! ]P6                  ! RR]P9                  R^4      R,          4      .4       F  t]! ]RR7       K  	  R# R# )z�PEP 656 support.

This module implements logic to detect if the currently running Python is
linked against musl, and what musl version is used.
)ÚannotationsN)ÚTYPE_CHECKINGÚ
NamedTuple)ÚELFFile)ÚIteratorÚSequencec                  ó,   € ] tR t^t$ R]R&   R]R&   RtR# )Ú_MuslVersionÚintÚmajorÚminor© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__r   ó    ÚMC:\Users\alokc\chatbot\backend\venv\Lib\site-packages\packaging/_musllinux.pyr	   r	      s   ‡ ØƒJØ‡Jr   r	   c               ó    € V ^8„  d   QhRRRR/# )é   ÚoutputÚstrÚreturnú_MuslVersion | Noner   )Úformats   "r   Ú__annotate__r      s   € ÷ Fñ F ð FÐ(;ñ Fr   c                ó‚  € R  V P                  4        4        Uu. uF  q'       g   K  VNK  	  pp\        V4      ^8  g   V^ ,          R,          R8w  d   R# \        P                  ! RV^,          4      pV'       g   R# \	        \        VP                  ^4      4      \        VP                  ^4      4      R7      # u upi )c              3  ó@   "  € T F  qP                  4       x € K  	  R # 5i)N)Ústrip)Ú.0Úns   & r   Ú	<genexpr>Ú&_parse_musl_version.<locals>.<genexpr>   s   é € Ð@Ñ,? qŸ™Ÿ˜Ó,?ùs   ‚:Né   NÚmuslNzVersion (\d+)\.(\d+))r   r   )Ú
splitlinesÚlenÚreÚmatchr	   r
   Úgroup)r   r"   ÚlinesÚms   &   r   Ú_parse_musl_versionr.      s�   € Ù@¨F×,=Ñ,=Ô,?Ô@ÓFÑ@�1ÃA�QˆQÑ@€EÐFÜ
ˆ5ƒz�A„~˜˜q� "�¨Ô/ÙÜ
�ŠÐ(¨%°­(Ó3€AßÙÜœc !§'¡'¨!£*›o´S¸¿¹À»³_ÔEÐEùò Gs
   š	B<¨B<c               ó    € V ^8„  d   QhRRRR/# )r   Ú
executabler   r   r   r   )r   s   "r   r   r   %   s   € ÷ ,ñ , #ð ,Ð*=ñ ,r   c                ó^  €  \        V R4      ;_uu_ 4       p\        V4      P                  pRRR4       Xe   RT9  d   R# \        P                  ! T.R\        P                  RR7      p\        TP                  4      #   + '       g   i     L[; i  \        \        \
        3 d     R# i ; i)aD  Detect currently-running musl runtime version.

This is done by checking the specified executable's dynamic linking
information, and invoking the loader to parse its output for a version
string. If the loader is musl, the output would be something like::

    musl libc (x86_64)
    Version 1.2.2
    Dynamic Program Loader
ÚrbNr&   FT)ÚcheckÚstderrÚtext)Úopenr   ÚinterpreterÚOSErrorÚ	TypeErrorÚ
ValueErrorÚ
subprocessÚrunÚPIPEr.   r4   )r0   ÚfÚldÚprocs   &   r   Ú_get_musl_versionrA   $   s…   € ðÜ�*˜d×#Ô# qÜ˜“×'Ñ'ˆB÷ $ð 
‚z�V 2Ô%ÙÜ�>Š>˜2˜$ e´J·O±OÈ$ÔO€DÜ˜tŸ{™{Ó+Ð+÷ $×#ûä”Y¤
Ð+ô Úðús-   ‚B –A?¬B Á?B	Â
B ÂB ÂB,Â+B,c               ó    € V ^8„  d   QhRRRR/# )r   ÚarchszSequence[str]r   zIterator[str]r   )r   s   "r   r   r   ;   s   € ÷ ?ñ ?˜ð ?¨=ñ ?r   c              #  óÈ   "  € \        \        P                  4      pVf   R# V  F8  p\        VP                  RR4       F  pRVP
                   RV RV 2x € K  	  K:  	  R# 5i)aª  Generate musllinux tags compatible to the current platform.

:param archs: Sequence of compatible architectures.
    The first one shall be the closest to the actual architecture and be the part of
    platform tag after the ``linux_`` prefix, e.g. ``x86_64``.
    The ``linux_`` prefix is assumed as a prerequisite for the current platform to
    be musllinux-compatible.

:returns: An iterator of compatible musllinux tags.
NÚ
musllinux_Ú_éÿÿÿÿ)rA   Úsysr0   Úranger   r   )rC   Úsys_muslÚarchr   s   &   r   Úplatform_tagsrL   ;   s]   é € ô !¤§¡Ó0€HØÒÙÛˆÜ˜8Ÿ>™>¨2¨rÖ2ˆEØ˜xŸ~™~Ð.¨a°¨w°a¸°vÐ>Ô>ó 3ó ùs   ‚A A"Ú__main__zlinux-z	not linuxzplat:zmusl:ztags:Ú )Úendz[.-]rF   Ú-z
      rG   )Ú__doc__Ú
__future__r   Ú	functoolsr)   r;   rH   Útypingr   r   Ú_elffiler   Úcollections.abcr   r   r	   r.   Ú	lru_cacherA   rL   r   Ú	sysconfigÚget_platformÚplatÚ
startswithÚprintr0   ÚsubÚsplitÚtr   r   r   Ú<module>r`      sô   ðñõ #ã Û 	Û Û 
ß ,å çß2ô�:ô õ
Fð ×Ñô,ó ð,õ,?ð& ˆzÔÛà×!Ò!Ó#€DØ�?‰?˜8×$Ò$Ð1 kÓ1Ð$á	ˆ'�4ÔÙ	ˆ'Ñ$ S§^¡^Ó4Ô5Ù	ˆ'�sÕÙ˜BŸFšF 7¨C°·±¸CÀÓ1CÀBÕ1GÓHÐIÖJˆÙˆa�Z× ó Kñ r   