ó
    !¬Ÿb|   ã                   óþ  • S r SSKrSSKJr  SSK7  SSKJr  SSKJr  0 r\R                  " 5       \S'   S=r
rS=rrS	=rrS
=rrS=rrS=rrS=rrS=rrS=rrS=rrS=rrS=r r!S=r"r#S=r$r%S=r&r'S=r(r)S=r*r+S=r,r-S=r.r/S=r0r1S=r2r3S=r4r5S=r6r7S=r8r9\" SS 5      r: " S! S"\;5      r</ \<l=        \>" \<5      r?\S   R€                  rA\?\AlB        \C/\AlD        \S   RŠ                  rFS\FlB        \?/\FlD        \S   RŽ                  rH\I\HlB        \?\I/\HlD        \S   R”                  rK\I\KlB        \?\C/\KlD        \S   R˜                  rM\I\MlB        \?\N\O/\MlD        \S   R                   rQ\I\QlB        \?/\QlD        \S   R¤                  rS\C\SlB        \?\C/\SlD        \S   R¨                  rU\C\UlB        \?\I/\UlD        \S   R¬                  rW\C\WlB        \?\I/\WlD        \S   R°                  rY\C\YlB        \?\I/\YlD        \S   R´                  r[\C\[lB        \?\I/\[lD        \S   R¸                  r]\C\]lB        \?/\]lD         " S# S$\^5      r_S% r`\_" \A" \"5      5      ra\aRÅ                  5         \_" \A" \
5      5      rc\cRÅ                  5         S& rdS' reS( rfS) rgg)*z
Python bindings for libmagic
é    N)Ú
namedtuple)Ú*)Úfind_libraryé   )ÚloaderÚmagicé   é   é   é   é    é@   é€   é   i   i   i  i   i   i    i @  i €  i   i   i   i   i    i °? Ú	FileMagic)Ú	mime_typeÚencodingÚnamec                   ó   • \ rS rSrSrg)Ú	magic_seté3   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Ú./usr/lib/python3/dist-packages/magic/compat.pyr   r   3   s   † Úr   r   c                   ó€   • \ rS rSrS rS r\S 5       r\S 5       rS r	S r
S rS	 rS
 rSS jrS rS rS rS rSrg)ÚMagicék   c                 ó   • Xl         g ©N©Ú_magic_t)ÚselfÚmss     r   Ú__init__ÚMagic.__init__l   s   € Ø�r   c                 ó.   • [        U R                  5        g)z?
Closes the magic database and deallocates any resources used.
N)Ú_closer&   ©r'   s    r   ÚcloseÚMagic.closeo   s   € ô 	ˆt�}‰}Õr   c                 óˆ   • U c  g [        U [        5      (       a  U $  [        U S5      $ ! [         a    [        U 5      s $ f = f©Nzutf-8)Ú
isinstanceÚstrÚ	TypeError)Úss    r   Ú__tostrÚMagic.__tostru   sE   € à‰9ØÜ�aœ×ÑØˆHð	Ü�q˜'“?Ð"øÜó 	Ü�q“6ŠMð	úó   �) ©AÁ Ac                 óˆ   • U c  g [        U [        5      (       a  U $  [        U S5      $ ! [         a    [        U 5      s $ f = fr1   )r2   Úbytesr4   )Úbs    r   Ú	__tobytesÚMagic.__tobytes€   sF   € à‰9ØÜ�aœ×ÑØˆHð	Ü˜˜GÓ$Ð$øÜó 	Ü˜“8ŠOð	úr8   c                 óz   • [         R                  [        U R                  [         R	                  U5      5      5      $ )zÈ
Returns a textual description of the contents of the argument passed
as a filename or None if an error occurred and the MAGIC_ERROR flag
is set. A call to errno() will return the numeric error code.
)r!   Ú_Magic__tostrÚ_filer&   Ú_Magic__tobytes©r'   Úfilenames     r   ÚfileÚ
Magic.file‹   s'   € ô �}‰}œU 4§=¡=´%·/±/À(Ó2KÓLÓMÐMr   c                 óT   • [         R                  [        U R                  U5      5      $ )zÏ
Returns a textual description of the contents of the argument passed
as a file descriptor or None if an error occurred and the MAGIC_ERROR
flag is set. A call to errno() will return the numeric error code.
)r!   r?   Ú_descriptorr&   )r'   Úfds     r   Ú
descriptorÚMagic.descriptor“   s   € ô �}‰}œ[¨¯©¸Ó;Ó<Ð<r   c           	      óh   • [         R                  [        U R                  U[	        U5      5      5      $ )zÆ
Returns a textual description of the contents of the argument passed
as a buffer or None if an error occurred and the MAGIC_ERROR flag
is set. A call to errno() will return the numeric error code.
)r!   r?   Ú_bufferr&   Úlen)r'   Úbufs     r   ÚbufferÚMagic.buffer›   s$   € ô �}‰}œW T§]¡]°C¼¸S»ÓBÓCÐCr   c                 óR   • [         R                  [        U R                  5      5      $ )zP
Returns a textual explanation of the last error or None
if there was no error.
)r!   r?   Ú_errorr&   r-   s    r   ÚerrorÚMagic.error£   s   € ô
 �}‰}œV D§M¡MÓ2Ó3Ð3r   c                 ó.   • [        U R                  U5      $ )zú
Set flags on the magic object which determine how magic checking
behaves; a bitwise OR of the flags described in libmagic(3), but
without the MAGIC_ prefix.

Returns -1 on systems that don't support utime(2) or utimes(2)
when PRESERVE_ATIME is set.
)Ú	_setflagsr&   )r'   Úflagss     r   ÚsetflagsÚMagic.setflagsª   s   € ô ˜Ÿ™¨Ó.Ð.r   Nc                 óT   • [        U R                  [        R                  U5      5      $ )zá
Must be called to load entries in the colon separated list of database
files passed as argument or the default database file if no argument
before any magic queries can be performed.

Returns 0 on success and -1 on failure.
)Ú_loadr&   r!   rA   rB   s     r   ÚloadÚ
Magic.loadµ   s   € ô �T—]‘]¤E§O¡O°HÓ$=Ó>Ð>r   c                 óT   • [        U R                  [        R                  U5      5      $ )a  
Compile entries in the colon separated list of database files
passed as argument or the default database file if no argument.
The compiled files created are named from the basename(1) of each file
argument with ".mgc" appended to it.

Returns 0 on success and -1 on failure.
)Ú_compiler&   r!   rA   ©r'   Údbss     r   ÚcompileÚMagic.compile¿   s   € ô ˜Ÿ™¤u§¡°sÓ';Ó<Ð<r   c                 óT   • [        U R                  [        R                  U5      5      $ ©z¶
Check the validity of entries in the colon separated list of
database files passed as argument or the default database file
if no argument.

Returns 0 on success and -1 on failure.
)Ú_checkr&   r!   rA   r`   s     r   ÚcheckÚMagic.checkÊ   s   € ô �d—m‘m¤U§_¡_°SÓ%9Ó:Ð:r   c                 óT   • [        U R                  [        R                  U5      5      $ re   )Ú_listr&   r!   rA   r`   s     r   ÚlistÚ
Magic.listÔ   s   € ô �T—]‘]¤E§O¡O°CÓ$8Ó9Ð9r   c                 ó,   • [        U R                  5      $ )zì
Returns a numeric error code. If return value is 0, an internal
magic error occurred. If return value is non-zero, the value is
an OS error code. Use the errno module or os.strerror() can be used
to provide detailed error information.
)Ú_errnor&   r-   s    r   ÚerrnoÚMagic.errnoÞ   s   € ô �d—m‘mÓ$Ð$r   r%   r$   )r   r   r   r   r)   r.   Ústaticmethodr?   rA   rD   rI   rO   rS   rX   r\   rb   rg   rk   ro   r   r   r   r   r!   r!   k   sh   † òòð ñó ðð ñó ðòNò=òDò4ò	/ô?ò	=ò;ò:õ%r   r!   c                 ó*   • [        [        U 5      5      $ )zX
Returns a magic object on success and None on failure.
Flags argument as for setflags.
)r!   Ú_open)rW   s    r   Úopenrt   è   s   € ô
 ”�u“ÓÐr   c                 ó�   • U R                  S5      nUS   n[        U5      S:X  a  US   nOSn[        XUR                  SS5      S9$ )Nz; r   r	   r   Ú zcharset=)r   r   r   )ÚsplitrM   r   Úreplace)Úmime_detectedÚtype_detectedÚsplatr   Úmime_encodings        r   Ú_create_filemagicr}   ÷   sU   € Ø×Ñ Ó%€EØ�a‘€IÜ
ˆ5ƒz�QƒØ˜a™‰àˆä˜-Ø+×3Ñ3°JÀÓCñEð Er   c                 óf   • [        [        R                  U 5      [        R                  U 5      5      $ )z\Detect mime type, encoding and file type from a filename

Returns a `FileMagic` namedtuple.
)r}   Ú
mime_magicrD   Ú
none_magic)rC   s    r   Údetect_from_filenamer�     s(   € ô œZŸ_™_¨XÓ6Ü'Ÿ_™_¨XÓ6ó8ð 8r   c                 ó†   • U R                  5       n[        [        R                  U5      [        R                  U5      5      $ )zbDetect mime type, encoding and file type from file-like object

Returns a `FileMagic` namedtuple.
)Úfilenor}   r   rI   r€   )ÚfobjÚfile_descriptors     r   Údetect_from_fobjr†     s9   € ð —k‘k“m€OÜœZ×2Ñ2°?ÓCÜ'×2Ñ2°?ÓCóEð Er   c                 óf   • [        [        R                  U 5      [        R                  U 5      5      $ )zWDetect mime type, encoding and file type from bytes

Returns a `FileMagic` namedtuple.
)r}   r   rO   r€   )Úbyte_contents    r   Údetect_from_contentr‰     s,   € ô œZ×.Ñ.¨|Ó<Ü'×.Ñ.¨|Ó<ó>ð >r   )hÚ__doc__ÚctypesÚcollectionsr   Úctypes.utilr   rv   r   Ú
_librariesÚload_libÚ
MAGIC_NONEÚNONEÚMAGIC_DEBUGÚDEBUGÚMAGIC_SYMLINKÚSYMLINKÚMAGIC_COMPRESSÚCOMPRESSÚMAGIC_DEVICESÚDEVICESÚMAGIC_MIME_TYPEÚ	MIME_TYPEÚMAGIC_CONTINUEÚCONTINUEÚMAGIC_CHECKÚCHECKÚMAGIC_PRESERVE_ATIMEÚPRESERVE_ATIMEÚ	MAGIC_RAWÚRAWÚMAGIC_ERRORÚERRORÚMAGIC_MIME_ENCODINGÚMIME_ENCODINGÚ
MAGIC_MIMEÚMIMEÚMAGIC_APPLEÚAPPLEÚMAGIC_NO_CHECK_COMPRESSÚNO_CHECK_COMPRESSÚMAGIC_NO_CHECK_TARÚNO_CHECK_TARÚMAGIC_NO_CHECK_SOFTÚNO_CHECK_SOFTÚMAGIC_NO_CHECK_APPTYPEÚNO_CHECK_APPTYPEÚMAGIC_NO_CHECK_ELFÚNO_CHECK_ELFÚMAGIC_NO_CHECK_TEXTÚNO_CHECK_TEXTÚMAGIC_NO_CHECK_CDFÚNO_CHECK_CDFÚMAGIC_NO_CHECK_TOKENSÚNO_CHECK_TOKENSÚMAGIC_NO_CHECK_ENCODINGÚNO_CHECK_ENCODINGÚMAGIC_NO_CHECK_BUILTINÚNO_CHECK_BUILTINr   Ú	Structurer   Ú_fields_ÚPOINTERÚmagic_tÚ
magic_openrs   ÚrestypeÚc_intÚargtypesÚmagic_closer,   Ú
magic_filer@   Úc_char_pÚmagic_descriptorrG   Úmagic_bufferrL   Úc_void_pÚc_size_tÚmagic_errorrR   Úmagic_setflagsrV   Ú
magic_loadr[   Úmagic_compiler_   Úmagic_checkrf   Ú
magic_listrj   Úmagic_errnorn   Úobjectr!   rt   r   r\   r€   r}   r�   r†   r‰   r   r   r   Ú<module>r×      sa  ðñó å "ä Ý $õ à€
Ø—o’oÓ'€
ˆ7Ñ ð Ð €
ˆTØÐ €ˆeØÐ €�ØÐ €�ØÐ €�Ø Ð  €�)ØÐ €�ØÐ €ˆeØ(+Ð +Ð �~ØÐ €	ˆCØÐ €ˆeØ&*Ð *Ð �mØÐ €
ˆTØÐ €ˆeà.2Ð 2Ð Ð+Ø$(Ð (Ð �\Ø&+Ð +Ð �mØ,1Ð 1Ð Ð)Ø$)Ð )Ð �\Ø&,Ð ,Ð �mØ$*Ð *Ð �\Ø*1Ð 1Ð ˜Ø.5Ð 5Ð Ð+à,3Ð 3Ð Ð)á�{Ð$EÓF€	ô	�	ô 	ð €	Ô Ù
�)Ó
€à�7Ñ×&Ñ&€Ø€„Ø�€„à	�GÑ	×	(Ñ	(€Ø€„Ø�)€„à�7Ñ×&Ñ&€Ø€„Ø˜8Ð$€„à˜Ñ!×2Ñ2€Ø€Ô Ø Ð'€Ô à
�WÑ
×
*Ñ
*€Ø€„Ø˜X xÐ0€Ô à	�GÑ	×	(Ñ	(€Ø€„Ø�)€„à�wÑ×.Ñ.€	Ø€	Ô Ø˜uÐ%€	Ô à�7Ñ×&Ñ&€Ø€„Ø˜8Ð$€„à�gÑ×,Ñ,€Ø€Ô Ø˜hÐ'€Ô à	�GÑ	×	(Ñ	(€Ø€„Ø˜HÐ%€„à�7Ñ×&Ñ&€Ø€„Ø˜8Ð$€„à	�GÑ	×	(Ñ	(€Ø€„Ø�)€„ôz%ˆFô z%òzñ ‘5˜Ó$Ó%€
Ø 
‡�Ô Ù‘5˜Ó$Ó%€
Ø 
‡�Ô ò	Eò8òEó>r   