§
    ƒnócâO  ã                  ó  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZ	ddl
mZmZmZ dZdZdZdZd	Zd
ZdZda G d„ d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zd*d+d „Zd,d"„Zd-d&„Zd.d'„Zd*d/d)„ZdS )0é    )ÚannotationsNé   )Ú
OrderedSetÚgenerate_listÚ
Popen_safeé   é   é   é   é   é   i5  pFc                  ó   — e Zd Zd	d„ZdS )
Ú	DataSizesÚptrsizeÚintÚis_leÚboolÚreturnÚNonec                óV  — |rd}nd}|dz   | _         d| _        |dz   | _        d| _        |dz   | _        d| _        |dk    rF|d	z   | _        d
| _        |d	z   | _        d
| _	        |d	z   | _
        d
| _        |dz   | _        d
| _        d S |dz   | _        d| _        |dz   | _        d| _	        d S )Nú<ú>Úhr   ÚIé   Úié@   ÚQé   Úq)ÚHalfÚHalfSizeÚWordÚWordSizeÚSwordÚ	SwordSizeÚAddrÚAddrSizeÚOffÚOffSizeÚXWordÚ	XWordSizeÚSxwordÚ
SxwordSize)Úselfr   r   Úps       ú=/usr/lib/python3/dist-packages/mesonbuild/scripts/depfixer.pyÚ__init__zDataSizes.__init__'   sÉ   € Øð 	ØˆAˆAàˆAØ˜‘GˆŒ	ØˆŒØ˜‘GˆŒ	ØˆŒØ˜‘WˆŒ
ØˆŒØ�bŠ=ˆ=Ø˜C™ˆDŒIØˆDŒMØ˜3‘wˆDŒHØˆDŒLØ˜S™ˆDŒJØˆDŒNØ˜c™'ˆDŒKØˆDŒOˆOˆOà˜C™ˆDŒIØˆDŒMØ˜3‘wˆDŒHØˆDŒLˆLˆLó    N)r   r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__r2   © r3   r1   r   r   &   s(   € € € € € ðð ð ð ð ð r3   r   c                  ó(   ‡ — e Zd Zdˆ fd	„Zdd„Zˆ xZS )ÚDynamicEntryÚifileú
T.BinaryIOr   r   r   r   r   r   c                óR  •— t          ¦   «                              ||¦  «         || _        |dk    r|t          j        | j        |                     | j        ¦  «        ¦  «        d         | _        t          j        | j	        |                     | j
        ¦  «        ¦  «        d         | _        d S t          j        | j        |                     | j        ¦  «        ¦  «        d         | _        t          j        | j        |                     | j        ¦  «        ¦  «        d         | _        d S ©Nr   r   )Úsuperr2   r   ÚstructÚunpackr-   Úreadr.   Úd_tagr+   r,   Úvalr%   r&   r#   r$   )r/   r:   r   r   Ú	__class__s       €r1   r2   zDynamicEntry.__init__B   sÖ   ø€ Ý‰Œ×Ò˜ %Ñ(Ô(Ð(ØˆŒØ�bŠ=ˆ=Ýœ t¤{°E·J²J¸t¼Ñ4OÔ4OÑPÔPÐQRÔSˆDŒJÝ”} T¤Z°·²¸D¼NÑ1KÔ1KÑLÔLÈQÔOˆDŒHˆHˆHåœ t¤z°5·:²:¸d¼nÑ3MÔ3MÑNÔNÈqÔQˆDŒJÝ”} T¤Y°·
²
¸4¼=Ñ0IÔ0IÑJÔJÈ1ÔMˆDŒHˆHˆHr3   Úofilec                ó°  — | j         dk    rf|                     t          j        | j        | j        ¦  «        ¦  «         |                     t          j        | j        | j        ¦  «        ¦  «         d S |                     t          j        | j        | j        ¦  «        ¦  «         |                     t          j        | j	        | j        ¦  «        ¦  «         d S )Nr   )
r   Úwriter?   Úpackr-   rB   r+   rC   r%   r#   )r/   rE   s     r1   rG   zDynamicEntry.writeL   s£   € ØŒ<˜2ÒÐØ�KŠK�œ D¤K°´Ñ<Ô<Ñ=Ô=Ð=Ø�KŠK�œ D¤J°´Ñ9Ô9Ñ:Ô:Ð:Ð:Ð:à�KŠK�œ D¤J°´
Ñ;Ô;Ñ<Ô<Ð<Ø�KŠK�œ D¤I¨t¬xÑ8Ô8Ñ9Ô9Ð9Ð9Ð9r3   ©r:   r;   r   r   r   r   r   r   )rE   r;   r   r   )r4   r5   r6   r2   rG   Ú__classcell__©rD   s   @r1   r9   r9   A   sW   ø€ € € € € ðNð Nð Nð Nð Nð Nð:ð :ð :ð :ð :ð :ð :ð :r3   r9   c                  ó    ‡ — e Zd Zd
ˆ fd	„Zˆ xZS )ÚSectionHeaderr:   r;   r   r   r   r   r   r   c                ó  •— t          ¦   «                              ||¦  «         |dk    }t          j        | j        |                     | j        ¦  «        ¦  «        d         | _        t          j        | j        |                     | j        ¦  «        ¦  «        d         | _        |r>t          j        | j	        |                     | j
        ¦  «        ¦  «        d         | _        n=t          j        | j        |                     | j        ¦  «        ¦  «        d         | _        t          j        | j        |                     | j        ¦  «        ¦  «        d         | _        t          j        | j        |                     | j        ¦  «        ¦  «        d         | _        |r>t          j        | j	        |                     | j
        ¦  «        ¦  «        d         | _        n=t          j        | j        |                     | j        ¦  «        ¦  «        d         | _        t          j        | j        |                     | j        ¦  «        ¦  «        d         | _        t          j        | j        |                     | j        ¦  «        ¦  «        d         | _        |r>t          j        | j	        |                     | j
        ¦  «        ¦  «        d         | _        n=t          j        | j        |                     | j        ¦  «        ¦  «        d         | _        |r?t          j        | j	        |                     | j
        ¦  «        ¦  «        d         | _        d S t          j        | j        |                     | j        ¦  «        ¦  «        d         | _        d S r=   )r>   r2   r?   r@   r#   rA   r$   Úsh_nameÚsh_typer+   r,   Úsh_flagsr'   r(   Úsh_addrr)   r*   Ú	sh_offsetÚsh_sizeÚsh_linkÚsh_infoÚsh_addralignÚ
sh_entsize)r/   r:   r   r   Úis_64rD   s        €r1   r2   zSectionHeader.__init__U   s”  ø€ Ý‰Œ×Ò˜ %Ñ(Ô(Ð(Ø˜2’ˆõ ”} T¤Y°·
²
¸4¼=Ñ0IÔ0IÑJÔJÈ1ÔMˆŒå”} T¤Y°·
²
¸4¼=Ñ0IÔ0IÑJÔJÈ1ÔMˆŒàð 	SÝ"œM¨$¬*°e·j²jÀÄÑ6PÔ6PÑQÔQÐRSÔTˆDŒMˆMå"œM¨$¬)°U·Z²ZÀÄÑ5NÔ5NÑOÔOÐPQÔRˆDŒMå”} T¤Y°·
²
¸4¼=Ñ0IÔ0IÑJÔJÈ1ÔMˆŒåœ t¤x°·²¸D¼LÑ1IÔ1IÑJÔJÈ1ÔMˆŒàð 	RÝ!œ=¨¬°U·Z²ZÀÄÑ5OÔ5OÑPÔPÐQRÔSˆDŒLˆLå!œ=¨¬°E·J²J¸t¼}Ñ4MÔ4MÑNÔNÈqÔQˆDŒLå”} T¤Y°·
²
¸4¼=Ñ0IÔ0IÑJÔJÈ1ÔMˆŒå”} T¤Y°·
²
¸4¼=Ñ0IÔ0IÑJÔJÈ1ÔMˆŒàð 	WÝ &¤¨d¬j¸%¿*º*ÀTÄ^Ñ:TÔ:TÑ UÔ UÐVWÔ XˆDÔÐå &¤¨d¬i¸¿ºÀDÄMÑ9RÔ9RÑ SÔ SÐTUÔ VˆDÔàð 	UÝ$œm¨D¬J¸¿
º
À4Ä>Ñ8RÔ8RÑSÔSÐTUÔVˆDŒOˆOˆOå$œm¨D¬I°u·z²zÀ$Ä-Ñ7PÔ7PÑQÔQÐRSÔTˆDŒOˆOˆOr3   rI   )r4   r5   r6   r2   rJ   rK   s   @r1   rM   rM   T   sG   ø€ € € € € ð#Uð #Uð #Uð #Uð #Uð #Uð #Uð #Uð #Uð #Ur3   rM   c                  óê   ‡ — e Zd Zd1d2ˆ fd„Zd3d	„Zd4d
„Zd5d„Zd4d„Zd6d„Zd7d„Z	d4d„Z
d4d„Zd8d„Zd9d„Zd4d„Zed:d„¦   «         Zd;d „Zd<d$„Zd;d%„Zd;d&„Zed:d'„¦   «         Zd=d)„Zd>d.„Zd?d/„Zd@d0„Zˆ xZS )AÚElfTÚbfileÚstrÚverboser   r   r   c                óÜ  •— || _         || _        g | _        g | _        |                      |¦  «         	 |                      ¦   «         \  | _        | _        t          ¦   «          	                    | j        | j        ¦  «         |  
                    ¦   «          |                      ¦   «          |                      ¦   «          d S # t          j        t          f$ r |                      ¦   «          ‚ w xY w©N)r\   r^   ÚsectionsÚdynamicÚopen_bfÚdetect_elf_typer   r   r>   r2   Úparse_headerÚparse_sectionsÚparse_dynamicr?   ÚerrorÚRuntimeErrorÚclose_bf)r/   r\   r^   rD   s      €r1   r2   zElf.__init__{   sÜ   ø€ ØˆŒ
ØˆŒØˆŒØˆŒØ�Š�UÑÔÐð	Ø)-×)=Ò)=Ñ)?Ô)?Ñ&ˆTŒ\˜4œ:Ý‰GŒG×Ò˜Tœ\¨4¬:Ñ6Ô6Ð6Ø×ÒÑÔÐØ×ÒÑ!Ô!Ð!Ø×ÒÑ Ô Ð Ð Ð øÝ”�lÐ+ð 	ð 	ð 	Ø�MŠM‰OŒOˆOØð	øøøs   ´B	B? Â?,C+c                óà  — d | _         d | _        	 t          |d¦  «        | _         d S # t          $ r¼}t	          j        t          j        |¦  «        j        ¦  «        | _        t          j	        |t          j
        t          j        z  t          j        z  ¦  «         	 t          |d¦  «        | _         n1# t          $ r$ t          j	        || j        ¦  «         d | _        |‚w xY wY d }~d S d }~ww xY w)Nzr+b)ÚbfÚbf_permsÚopenÚPermissionErrorÚstatÚS_IMODEÚosÚlstatÚst_modeÚchmodÚS_IREADÚS_IWRITEÚS_IEXECÚ	Exception)r/   r\   Úes      r1   rc   zElf.open_bf‹   sé   € ØˆŒØˆŒð
	Ý˜5 %Ñ(Ô(ˆDŒGˆGˆGøÝð 	ð 	ð 	Ý œL­¬°%©¬Ô)@ÑAÔAˆDŒMÝŒH�U�DœL­4¬=Ñ8½4¼<ÑGÑHÔHÐHðÝ˜u eÑ,Ô,�”�øÝð ð ð Ý”˜ ¤Ñ.Ô.Ð.Ø $�”Ø�ðøøøð �����øøøøð		øøøs-   �' §
C-±A)C(ÂB1Â0C(Â1.CÃC(Ã(C-c                óÖ   — | j         �a| j        �8t          j        | j                              ¦   «         | j        ¦  «         d | _        | j                              ¦   «          d | _         d S d S r`   )rl   rm   rr   ÚfchmodÚfilenoÚclose©r/   s    r1   rj   zElf.close_bfš   s[   € ØŒ7ÐØŒ}Ð(Ý”	˜$œ'Ÿ.š.Ñ*Ô*¨D¬MÑ:Ô:Ð:Ø $�”ØŒG�MŠM‰OŒOˆOØˆDŒGˆGˆGð Ðr3   ú'Elf'c                ó   — | S r`   r7   r   s    r1   Ú	__enter__zElf.__enter__¢   s   € Øˆr3   c                ó.   — |                       ¦   «          d S r`   ©rj   r   s    r1   Ú__del__zElf.__del__¥   ó   € Ø�Š‰Œˆˆˆr3   Úexc_typeúT.AnyÚ	exc_valueÚ	tracebackc                ó.   — |                       ¦   «          d S r`   r„   )r/   r‡   r‰   rŠ   s       r1   Ú__exit__zElf.__exit__¨   r†   r3   úT.Tuple[int, bool]c                ó¬  — | j                              d¦  «        }|dd…         dk    r3| j        rt          d| j        ›d�¦  «         t          j        d¦  «         |d         dk    rd}n,|d         d	k    rd
}nt          j        d| j        ›d�¦  «         |d         dk    rd}n,|d         d	k    rd}nt          j        d| j        ›d�¦  «         ||fS )Né   r	   r   s   ELFúFile z is not an ELF file.r   é    r   r   z has unknown ELF class.r   TFz has unknown ELF endianness.)rl   rA   r^   Úprintr\   ÚsysÚexit)r/   Údatar   r   s       r1   rd   zElf.detect_elf_type«   sò   € ØŒw�|Š|˜A‰ŒˆØ��!�Œ9˜ÒÐð Œ|ð BÝÐ@˜dœjÐ@Ð@Ð@ÑAÔAÐAÝŒH�Q‰KŒKˆKØ�Œ7�aŠ<ˆ<ØˆGˆGØ�!ŒW˜Š\ˆ\ØˆGˆGåŒHÐB˜TœZÐBÐBÐBÑCÔCÐCØ�Œ7�aŠ<ˆ<ØˆEˆEØ�!ŒW˜Š\ˆ\ØˆEˆEåŒHÐG˜TœZÐGÐGÐGÑHÔHÐHØ˜ˆ~Ðr3   c                ó^  — | j                              d¦  «         t          j        d| j                              d¦  «        ¦  «        d         | _        t          j        | j        | j                              | j        ¦  «        ¦  «        d         | _        t          j        | j        | j                              | j        ¦  «        ¦  «        d         | _	        t          j        | j
        | j                              | j        ¦  «        ¦  «        d         | _        t          j        | j        | j                              | j        ¦  «        ¦  «        d         | _        t          j        | j        | j                              | j        ¦  «        ¦  «        d         | _        t          j        | j        | j                              | j        ¦  «        ¦  «        d         | _        t          j        | j
        | j                              | j        ¦  «        ¦  «        d         | _        t          j        | j        | j                              | j        ¦  «        ¦  «        d         | _        t          j        | j        | j                              | j        ¦  «        ¦  «        d         | _        t          j        | j        | j                              | j        ¦  «        ¦  «        d         | _        t          j        | j        | j                              | j        ¦  «        ¦  «        d         | _        t          j        | j        | j                              | j        ¦  «        ¦  «        d         | _        t          j        | j        | j                              | j        ¦  «        ¦  «        d         | _        d S )Nr   Ú16sé   )rl   Úseekr?   r@   rA   Úe_identr!   r"   Úe_typeÚ	e_machiner#   r$   Ú	e_versionr'   r(   Úe_entryr)   r*   Úe_phoffÚe_shoffÚe_flagsÚe_ehsizeÚe_phentsizeÚe_phnumÚe_shentsizeÚe_shnumÚ
e_shstrndxr   s    r1   re   zElf.parse_headerÁ   sd  € ØŒ�Š�Q‰ŒˆÝ”} U¨D¬G¯LªL¸Ñ,<Ô,<Ñ=Ô=¸aÔ@ˆŒÝ”m D¤I¨t¬w¯|ª|¸D¼MÑ/JÔ/JÑKÔKÈAÔNˆŒÝœ t¤y°$´'·,²,¸t¼}Ñ2MÔ2MÑNÔNÈqÔQˆŒÝœ t¤y°$´'·,²,¸t¼}Ñ2MÔ2MÑNÔNÈqÔQˆŒÝ”} T¤Y°´·²¸T¼]Ñ0KÔ0KÑLÔLÈQÔOˆŒÝ”} T¤X¨t¬w¯|ª|¸D¼LÑ/IÔ/IÑJÔJÈ1ÔMˆŒÝ”} T¤X¨t¬w¯|ª|¸D¼LÑ/IÔ/IÑJÔJÈ1ÔMˆŒÝ”} T¤Y°´·²¸T¼]Ñ0KÔ0KÑLÔLÈQÔOˆŒÝœ d¤i°´·²¸d¼mÑ1LÔ1LÑMÔMÈaÔPˆŒÝ!œ=¨¬°D´G·L²LÀÄÑ4OÔ4OÑPÔPÐQRÔSˆÔÝ”} T¤Y°´·²¸T¼]Ñ0KÔ0KÑLÔLÈQÔOˆŒÝ!œ=¨¬°D´G·L²LÀÄÑ4OÔ4OÑPÔPÐQRÔSˆÔÝ”} T¤Y°´·²¸T¼]Ñ0KÔ0KÑLÔLÈQÔOˆŒÝ œ-¨¬	°4´7·<²<ÀÄÑ3NÔ3NÑOÔOÐPQÔRˆŒˆˆr3   c                óâ   — | j                              | j        ¦  «         t          | j        ¦  «        D ]:}| j                             t          | j         | j        | j	        ¦  «        ¦  «         Œ;d S r`   )
rl   r™   r    Úranger¦   ra   ÚappendrM   r   r   )r/   Ú_s     r1   rf   zElf.parse_sectionsÒ   sj   € ØŒ�Š�T”\Ñ"Ô"Ð"Ý�t”|Ñ$Ô$ð 	Sð 	SˆAØŒM× Ò ¥¨t¬w¸¼ÀdÄjÑ!QÔ!QÑRÔRÐRÐRð	Sð 	Sr3   Úbytesc                ó  — g }| j                              d¦  «        }|dk    rJ|                     |¦  «         | j                              d¦  «        }|dk    rt          d¦  «        ‚|dk    °Jd                     |¦  «        S )Nr	   ó    r3   z&Tried to read past the end of the file)rl   rA   rª   ri   Újoin)r/   ÚarrÚxs      r1   Úread_strzElf.read_str×   sv   € ØˆØŒG�LŠL˜‰OŒOˆØ�5ŠjˆjØ�JŠJ�q‰MŒMˆMØ”—’˜Q‘”ˆAØ�CŠxˆxÝ"Ð#KÑLÔLÐLð	 �5Šjˆjð
 �xŠx˜‰}Œ}Ðr3   Útarget_nameúT.Optional[SectionHeader]c                óÈ   — | j         | j                 }| j         D ]G}| j                             |j        |j        z   ¦  «         |                      ¦   «         }||k    r|c S ŒHd S r`   )ra   r§   rl   r™   rS   rO   r²   )r/   r³   Úsection_namesr   Únames        r1   Úfind_sectionzElf.find_sectioná   sj   € Øœ d¤oÔ6ˆØ”ð 	ð 	ˆAØŒG�LŠL˜Ô0°1´9Ñ<Ñ=Ô=Ð=Ø—=’=‘?”?ˆDØ�{Ò"Ð"Ø���ð #àˆtr3   c                ó  — |                       d¦  «        }|€d S | j                             |j        ¦  «         	 t	          | j        | j        | j        ¦  «        }| j                             |¦  «         |j	        dk    rd S ŒH)Nó   .dynamicTr   )
r¸   rl   r™   rS   r9   r   r   rb   rª   rB   )r/   Úsecrz   s      r1   rg   zElf.parse_dynamicê   s|   € Ø×Ò Ñ,Ô,ˆØˆ;ØˆFØŒ�Š�S”]Ñ#Ô#Ð#ð	Ý˜TœW d¤l°D´JÑ?Ô?ˆAØŒL×Ò Ñ"Ô"Ð"ØŒw˜!Š|ˆ|Ø�ð		r3   úT.Generator[str, None, None]c              #  óà   K  — | j         | j                 }| j         D ]Q}| j                             |j        |j        z   ¦  «         |                      ¦   «                              ¦   «         V — ŒRd S r`   )ra   r§   rl   r™   rS   rO   r²   Údecode)r/   r¶   r   s      r1   Úget_section_nameszElf.get_section_namesõ   sp   è è € àœ d¤oÔ6ˆØ”ð 	+ð 	+ˆAØŒG�LŠL˜Ô0°1´9Ñ<Ñ=Ô=Ð=Ø—-’-‘/”/×(Ò(Ñ*Ô*Ð*Ð*Ð*Ð*ð	+ð 	+r3   úT.Optional[str]c                ó  — d }d }| j         D ]&}|j        t          k    r|}|j        t          k    r|}Œ'|�|€d S | j                             |j        |j        z   ¦  «         |                      ¦   «                              ¦   «         S r`   )	rb   rB   Ú	DT_SONAMEÚ	DT_STRTABrl   r™   rC   r²   r¾   )r/   ÚsonameÚstrtabr   s       r1   Ú
get_sonamezElf.get_sonameü   s‡   € ØˆØˆØ”ð 	ð 	ˆAØŒw�)Ò#Ð#Ø�ØŒw�)Ò#Ð#Ø�øØˆ>˜V˜^Ø�4ØŒ�Š�V”Z &¤*Ñ,Ñ-Ô-Ð-Ø�}Š}‰Œ×%Ò%Ñ'Ô'Ð'r3   Úentrynumr   úT.Optional[int]c                ó®   — |                       d¦  «        }| j        D ]7}|j        |k    r*|j        |j        z   }t          |t          ¦  «        sJ ‚|c S Œ8d S ©Nó   .dynstr)r¸   rb   rB   rS   rC   Ú
isinstancer   )r/   rÇ   r»   r   Úress        r1   Úget_entry_offsetzElf.get_entry_offset	  sl   € Ø×Ò 
Ñ+Ô+ˆØ”ð 	ð 	ˆAØŒw˜(Ò"Ð"Ø”m a¤eÑ+�Ý! #¥sÑ+Ô+Ð+Ð+Ð+Ø�
�
�
ð #ð ˆtr3   c                ó¾   — |                       t          ¦  «        }|€d S | j                             |¦  «         |                      ¦   «                              ¦   «         S r`   )rÎ   ÚDT_RPATHrl   r™   r²   r¾   ©r/   Úoffsets     r1   Ú	get_rpathzElf.get_rpath  sM   € Ø×&Ò&¥xÑ0Ô0ˆØˆ>Ø�4ØŒ�Š�VÑÔÐØ�}Š}‰Œ×%Ò%Ñ'Ô'Ð'r3   c                ó¾   — |                       t          ¦  «        }|€d S | j                             |¦  «         |                      ¦   «                              ¦   «         S r`   )rÎ   Ú
DT_RUNPATHrl   r™   r²   r¾   rÑ   s     r1   Úget_runpathzElf.get_runpath  sM   € Ø×&Ò&¥zÑ2Ô2ˆØˆ>Ø�4ØŒ�Š�VÑÔÐØ�}Š}‰Œ×%Ò%Ñ'Ô'Ð'r3   c              #  ó
  K  — |                       d¦  «        }| j        D ]c}|j        t          k    rQ|j        |j        z   }| j                             |¦  «         |                      ¦   «          	                    ¦   «         V — Œdd S rÊ   )
r¸   rb   rB   Ú	DT_NEEDEDrS   rC   rl   r™   r²   r¾   )r/   r»   r   rÒ   s       r1   Úget_depszElf.get_deps   s„   è è € à×Ò 
Ñ+Ô+ˆØ”ð 	/ð 	/ˆAØŒw�)Ò#Ð#Øœ¨¬Ñ.�Ø”—’˜VÑ$Ô$Ð$Ø—m’m‘o”o×,Ò,Ñ.Ô.Ð.Ð.Ð.øð		/ð 	/r3   Úprefixc                ót  — |                       d¦  «        }g }| j        D ]'}|j        t          k    r|                     |¦  «         Œ(|D ]î}|j        |j        z   }| j                             |¦  «         |  	                    ¦   «         }| 
                    |¦  «        rš|                     dd¬¦  «        d         }dt          |¦  «        t          |¦  «        z
  z  }||z   }	t          |	¦  «        t          |¦  «        k    sJ ‚| j                             |¦  «         | j                             |	¦  «         Œïd S )NrË   ó   /r	   )Úmaxsplitéÿÿÿÿr®   )r¸   rb   rB   rØ   rª   rS   rC   rl   r™   r²   Ú
startswithÚrsplitÚlenrG   )
r/   rÚ   r»   Údepsr   rÒ   r·   ÚbasenameÚpaddingÚnewnames
             r1   Úfix_depszElf.fix_deps)  s)  € Ø×Ò 
Ñ+Ô+ˆØˆØ”ð 	ð 	ˆAØŒw�)Ò#Ð#Ø—’˜A‘”�øØð 
	'ð 
	'ˆAØ”] Q¤UÑ*ˆFØŒG�LŠL˜Ñ Ô Ð Ø—=’=‘?”?ˆDØ�Š˜vÑ&Ô&ð 'ØŸ;š; t°a˜;Ñ8Ô8¸Ô<�Ø¥3 t¡9¤9­s°8©}¬}Ñ#<Ñ=�Ø" WÑ,�Ý˜7‘|”|¥s¨4¡y¤yÒ0Ð0Ð0Ð0Ø”—’˜VÑ$Ô$Ð$Ø”—’˜gÑ&Ô&Ð&øð
	'ð 
	'r3   ÚfnameÚrpath_dirs_to_removeúT.Set[bytes]Ú	new_rpathc                óz   — |                       |||t          ¦  «         |                       |||t          ¦  «         d S r`   )Úfix_rpathtype_entryrÐ   rÕ   )r/   rç   rè   rê   s       r1   Ú	fix_rpathzElf.fix_rpath;  s@   € ð 	× Ò  Ð(<¸iÍÑRÔRÐRØ× Ò  Ð(<¸iÍÑTÔTÐTÐTÐTr3   c                ó¦  — |                       |¦  «        }|€| j        rt          d|›d�¦  «         d S | j                             |¦  «         |                      ¦   «         }t          ¦   «         }|r(|                     |                     d¦  «        ¦  «         |rI|                     d¦  «        D ]3}||v s-|dt          |¦  «        z  k    s|r| 
                    |¦  «         Œ4d                     |¦  «        }t          |¦  «        t          |¦  «        k     rPd                     |                     d¦  «        |                     d¦  «        ¦  «        }	t          j        |	¦  «         |s|                      |¦  «         d S | j                             |¦  «         | j                             |¦  «         | j                             d¦  «         d S )Nr�   z@ does not have an rpath. It should be a fully static executable.ó   :ó   Xz@New rpath must not be longer than the old one.
 Old: {}
 New: {}úutf-8r®   )rÎ   r^   r’   rl   r™   r²   r   ÚupdateÚsplitrá   Úaddr¯   Úformatr¾   r“   r”   Úremove_rpath_entryrG   )
r/   rç   rè   rê   rÇ   Úrp_offÚ	old_rpathÚ
new_rpathsÚ	rpath_dirÚmsgs
             r1   rì   zElf.fix_rpathtype_entryA  sê  € Ø×&Ò& xÑ0Ô0ˆØˆ>ØŒ|ð iÝÐg˜eÐgÐgÐgÑhÔhÐhØˆFØŒ�Š�VÑÔÐà—M’M‘O”Oˆ	õ  ‘\”\ˆ
Øð 	5Ø×Ò˜iŸošo¨dÑ3Ô3Ñ4Ô4Ð4Øð 	2ð 'Ÿ_š_¨TÑ2Ô2ð 2ð 2�	Ø!Ð%9Ð9Ð9Ø! d­S°©^¬^Ñ&;Ò<Ð<Ø ð 2Ø"Ÿš yÑ1Ô1Ð1øð —I’I˜jÑ)Ô)ˆ	åˆy‰>Œ>�C 	™NœNÒ*Ð*ØV×]Ò]Ð^g×^nÒ^nÐovÑ^wÔ^wð  zC÷  zJò  zJð  KRñ  zSô  zSñ  Tô  TˆCÝŒH�S‰MŒMˆMð ð 	!Ø×#Ò# HÑ-Ô-Ð-Ð-Ð-àŒG�LŠL˜Ñ Ô Ð ØŒG�MŠM˜)Ñ$Ô$Ð$ØŒG�MŠM˜%Ñ Ô Ð Ð Ð r3   c                ó  — |                       d¦  «        }|€d S t          | j        ¦  «        D ]Q\  }}|j        |k    rA| j        |         }d|_        | j        d |…         | j        |dz   d …         z   |gz   | _         nŒR| j        |d …         D ]/}|j        t          k    r|xj        d| j        dz  z  z  c_         nŒ0| j                             |j	        ¦  «         | j        D ]}| 
                    | j        ¦  «         Œd S )Nrº   r   r	   r   r   )r¸   Ú	enumeraterb   rB   ÚDT_MIPS_RLD_MAP_RELrC   r   rl   r™   rS   rG   )r/   rÇ   r»   r   ÚentryÚrpentrys         r1   rö   zElf.remove_rpath_entryn  s'  € Ø×Ò Ñ,Ô,ˆØˆ;Ø�4Ý# D¤LÑ1Ô1ð 	ð 	‰JˆQ�ØŒ{˜hÒ&Ð&Øœ, qœ/�Ø !�”Ø#œ|¨B¨Q¨BÔ/°$´,¸qÀ1¹u¸v¸vÔ2FÑFÈ'ÈÑR�”Ø�ð	 'ð ”\ ! " "Ô%ð 	ð 	ˆEØŒ{Õ1Ò1Ð1Ø�	”	˜Q $¤,°!Ñ"3Ñ4Ñ4�	”	Ø�ð 2ð 	Œ�Š�S”]Ñ#Ô#Ð#Ø”\ð 	!ð 	!ˆEØ�KŠK˜œÑ Ô Ð Ð Øˆtr3   ©T)r\   r]   r^   r   r   r   )r\   r]   r   r   )r   r   )r   r€   )r‡   rˆ   r‰   rˆ   rŠ   rˆ   r   r   )r   r�   )r   r¬   )r³   r¬   r   r´   )r   r¼   )r   rÀ   )rÇ   r   r   rÈ   )rÚ   r¬   r   r   )rç   r]   rè   ré   rê   r¬   r   r   )
rç   r]   rè   ré   rê   r¬   rÇ   r   r   r   )rÇ   r   r   r   )r4   r5   r6   r2   rc   rj   r‚   r…   rŒ   rd   re   rf   r²   r¸   rg   r   r¿   rÆ   rÎ   rÓ   rÖ   rÙ   ræ   rí   rì   rö   rJ   rK   s   @r1   r[   r[   z   s  ø€ € € € € ðð ð ð ð ð ð ð ð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð,Sð Sð Sð Sð"Sð Sð Sð Sð
ð ð ð ðð ð ð ð	ð 	ð 	ð 	ð ð+ð +ð +ñ „]ð+ð(ð (ð (ð (ðð ð ð ð(ð (ð (ð (ð(ð (ð (ð (ð ð/ð /ð /ñ „]ð/ð'ð 'ð 'ð 'ð$Uð Uð Uð Uð+!ð +!ð +!ð +!ðZð ð ð ð ð ð ð r3   r[   Trç   r]   rè   ré   rê   úT.Optional[bytes]r^   r   r   r   c                óŽ   — |�Bt          | |¦  «        5 }|                     | ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S d S r`   )r[   rí   )rç   rè   rê   r^   rz   s        r1   Úfix_elfr  ‚  s«   € ØÐÝ�˜Ñ Ô ð 	@ Aà�KŠK˜Ð3°YÑ?Ô?Ð?ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð Ðs   “8¸<¿<úT.List[str]c                ó  — t          dd| gt          j        ¬¦  «        \  }}}|j        dk    r t          j        |j        |j        |¦  «        ‚g }d}|                     d¦  «        D ]�}|                     ¦   «         }d|vrŒ|                     ¦   «                              dd¦  «        \  }}|d	k    r|}|d
k    rI|dk    rC|                     dd¦  «        d                              ¦   «         }	|                     |	¦  «         Œž|S )NÚotoolz-l)Ústderrr   ÚFOOBARú
ú r	   ÚcmdÚpathÚLC_RPATHú()	r   Ú
subprocessÚDEVNULLÚ
returncodeÚCalledProcessErrorÚargsró   Ústriprª   )
rç   r0   Úoutr«   ÚresultÚcurrent_cmdÚlineÚkeyÚvalueÚrps
             r1   Úget_darwin_rpaths_to_remover  ˆ  s  € Ý˜G T¨5Ð1½*Ô:LÐMÑMÔM�I€A€sˆAØ„|�qÒÐÝÔ+¨A¬L¸!¼&À#ÑFÔFÐFØ€FØ€KØ—	’	˜$‘”ð 	ð 	ˆØ�zŠz‰|Œ|ˆØ�dˆ?ˆ?ØØ—Z’Z‘\”\×'Ò'¨¨QÑ/Ô/‰
ˆˆUØ�%Š<ˆ<ØˆKØ�&Š=ˆ=˜[¨JÒ6Ð6Ø—’˜S !Ñ$Ô$ QÔ'×-Ò-Ñ/Ô/ˆBØ�MŠM˜"ÑÔÐøØ€Mr3   Ú
final_pathÚinstall_name_mappingsúT.Dict[str, str]c                ó0  — 	 t          | ¦  «        }n# t          j        $ r Y d S w xY w	 g }|rIt          |¦  «        D ]	}|d|gz  }Œ
t          j        d| g|z   t          j        t          j        ¬¦  «         g }|r|d|gz  }|                      d¦  «        r|d|gz  }|r"|                     ¦   «         D ]\  }}|d||gz  }Œ|r2t          j        d| g|z   t          j        t          j        ¬¦  «         d S d S # t          $ r}	t          |	¦  «        ‚d }	~	ww xY w)Nz-delete_rpathÚinstall_name_tool)Ústdoutr  z
-add_rpathÚdylibz-idz-change)
r  r  r  r   Ú
check_callr  ÚendswithÚitemsry   Ú
SystemExit)
rç   rê   r  r  Úrpathsr  r  ÚoldÚnewÚerrs
             r1   Ú
fix_darwinr-  š  s£  € ðÝ,¨UÑ3Ô3ˆˆøÝÔ(ð ð ð ð 	ˆˆðøøøð)ØˆØð 	=õ( ! Ñ(Ô(ð .ð .�Ø˜¨"Ð-Ñ-��ÝÔ!Ð#6¸Ð">ÀÑ"EÝ)3Ô);Ý)3Ô);ð=ñ =ô =ð =ð ˆØð 	.Ø�\ 9Ð-Ñ-ˆDà�>Š>˜'Ñ"Ô"ð 	(Ø�U˜JÐ'Ñ'ˆDØ ð 	.Ø1×7Ò7Ñ9Ô9ð .ð .‘��SØ˜ C¨Ð-Ñ-��Øð 	=ÝÔ!Ð#6¸Ð">ÀÑ"EÝ)3Ô);Ý)3Ô);ð=ñ =ô =ð =ð =ð =ð	=ð 	=øõ ð ð ð Ý˜‰oŒoÐøøøøðøøøs$   ‚ ’%¤%©C
C7 Ã7
DÄDÄDc                ó’  — t          j        dd| dg¦  «         t          ddd¬¦  «        5 }|                     ¦   «         }|                     d¦  «         |D ],}|                     d¦  «        s|                     |¦  «         Œ-|                     ¦   «          d d d ¦  «         n# 1 swxY w Y   t          j        dd	| dg¦  «         d S )
NÚjarÚxfzMETA-INF/MANIFEST.MFzr+rñ   )Úencodingr   zClass-Path:ÚufM)r  r%  rn   Ú	readlinesr™   rß   rG   Útruncate)rç   ÚfÚlinesr  s       r1   Úfix_jarr7  Ì  s  € ÝÔ˜5 $¨Ð/EÐFÑGÔGÐGÝ	Ð$ d°WÐ	=Ñ	=Ô	=ð ÀØ—’‘”ˆØ	�Šˆq‰	Œ	ˆ	Øð 	ð 	ˆDØ—?’? =Ñ1Ô1ð Ø—’˜‘”�øØ	�
Š
‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ Ô˜5 %¨Ð0FÐGÑHÔHÐHÐHÐHs   «A-B$Â$B(Â+B(úT.Union[str, bytes]c                óX  — |                       d¦  «        rd S 	 |                       d¦  «        rt          | ¦  «         d S t          |t          ¦  «        r|                     d¦  «        }t          | |||¦  «         d S # t          $ r1}t          |j        t          ¦  «        r|j        dk    rn‚ Y d }~nd }~ww xY wt          du r!t          t          j        d¦  «        ¦  «        a	t          r>t          |t          ¦  «        r|                     d¦  «        }t          | |||¦  «         d S d S )N)z.az.libz.pdbz.hz.hppz.dllz.exez.jarÚutf8r   Fr"  )r&  r7  rÌ   r]   Úencoder  r(  Úcoder   ÚINSTALL_NAME_TOOLr   ÚshutilÚwhichr¬   r¾   r-  )rç   rè   rê   r  r  r^   rz   s          r1   rí   rí   Ü  sQ  € ð
 ‡~‚~ÐJÑKÔKð ØˆðØ�>Š>˜&Ñ!Ô!ð 	Ý�E‰NŒNˆNØˆFÝ�i¥Ñ%Ô%ð 	1Ø!×(Ò(¨Ñ0Ô0ˆIÝ�Ð+¨Y¸Ñ@Ô@Ð@ØˆøÝð ð ð Ý�a”f�cÑ"Ô"ð 	 q¤v°¢{ {Øàð ˆDˆDˆDˆDøøøøðøøøõ ˜EÐ!Ð!Ý ¥¤Ð.AÑ!BÔ!BÑCÔCÐÝð HÝ�i¥Ñ'Ô'ð 	1Ø!×(Ò(¨Ñ0Ô0ˆIÝ�5˜) ZÐ1FÑGÔGÐGÐGÐGðHð Hs   ™$A= ¿<A= Á=
B8Â'B3Â3B8r  )
rç   r]   rè   ré   rê   r  r^   r   r   r   )rç   r]   r   r  )
rç   r]   rê   r]   r  r]   r  r   r   r   )rç   r]   r   r   )rç   r]   rè   ré   rê   r8  r  r]   r  r   r^   r   r   r   )Ú
__future__r   r“   rr   rp   r?   r>  r  ÚtypingÚTÚmesonlibr   r   r   Ú
SHT_STRTABrØ   rÐ   rÕ   rÃ   rÂ   rþ   r=  r   r9   rM   r[   r  r  r-  r7  rí   r7   r3   r1   ú<module>rE     së  ðð #Ð "Ð "Ð "Ð "Ð "ð €
€
€
Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð à <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <à€
Ø€	Ø€Ø€
Ø€	Ø€	Ø Ð ð Ð ðð ð ð ð ñ ô ð ð6:ð :ð :ð :ð :�9ñ :ô :ð :ð&$Uð $Uð $Uð $Uð $U�Iñ $Uô $Uð $UðLFð Fð Fð Fð Fˆ)ñ Fô Fð FðP@ð @ð @ð @ð @ðð ð ð ð$0ð 0ð 0ð 0ðdIð Ið Ið Ið Hð Hð Hð Hð Hð Hð Hr3   