
    i2;                        S SK r S SKrS SKrS SKJr  S SKJr  S SKJr  S SK	J
r
Jr  \R                  " \5      rS\S\4S jrS\S\4S	 jrS\S\4S
 jrS\S\4S jr " S S\5      r " S S\5      r\R.                  \R0                  \R2                  \R4                  \R6                  1r\" \5      \-
  rSrSr  " S S5      r! " S S\5      r" " S S5      r#g)    N)IntEnum)BytesIO)List)BytesStringsreturnc                 h    [         R                  " U 5      R                  5       R                  S5      $ )zEncode bytes into a URL-safe Base64 string without padding

Parameters:
    s (``bytes``):
        Bytes to encode

Returns:
    ``str``: The encoded bytes
=)base64urlsafe_b64encodedecodestripr   s    =/app/mltbenv/lib/python3.13/site-packages/pyrogram/file_id.py
b64_encoder      s)     ##A&--/55c::    c                 T    [         R                  " U S[        U 5      * S-  -  -   5      $ )zDecode a URL-safe Base64 string without padding to bytes

Parameters:
    s (``str``):
        String to decode

Returns:
    ``bytes``: The decoded string
r      )r   urlsafe_b64decodelenr   s    r   
b64_decoder   ,   s)     ##AAw{(;$;<<r   c                     / nSnU  H>  nU(       d  US-  nM  U(       a  UR                  SU45        SnUR                  U5        M@     U(       a  UR                  SU45        [        U5      $ )zzZero-value RLE encoder

Parameters:
    s (``bytes``):
        Bytes to encode

Returns:
    ``bytes``: The encoded bytes
r      extendappendbytes)r   rnbs       r   
rle_encoder"   9   se     AAFA!Q HHQK  		!Q8Or   c                     / nSnU  H>  nU(       d  SnM  U(       a  UR                  SU-  5        SnM-  UR                  U5        M@     [        U5      $ )zzZero-value RLE decoder

Parameters:
    s (``bytes``):
        Bytes to decode

Returns:
    ``bytes``: The decoded bytes
FTr   r   )r   r   zr!   s       r   
rle_decoder&   V   sQ     AAAHHTAXAHHQK  8Or   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SrSrSrSrSrSrg)FileTypeq   zKnown file typesr   r         r               	   
                         N)__name__
__module____qualname____firstlineno____doc__	THUMBNAIL
CHAT_PHOTOPHOTOVOICEVIDEODOCUMENT	ENCRYPTEDTEMPSTICKERAUDIO	ANIMATIONENCRYPTED_THUMBNAIL	WALLPAPER
VIDEO_NOTE
SECURE_RAWSECURE
BACKGROUNDDOCUMENT_AS_FILE__static_attributes__r9   r   r   r(   r(   q   sa    IJEEEHIDGEIIJJFJr   r(   c                   ,    \ rS rSrSrSrSrSrSrSr	Sr
g	)
ThumbnailSource   zKnown thumbnail sourcesr   r   r*   r+   r   r9   N)r:   r;   r<   r=   r>   LEGACYr?   CHAT_PHOTO_SMALLCHAT_PHOTO_BIGSTICKER_SET_THUMBNAILrQ   r9   r   r   rS   rS      s     !FINr   rS   i   i   c            %           \ rS rSrSrSr\\SSSSSSSSSSSSSSS.S\S	\S
\S\S\S\	S\S\S\S\
S\S\	S\S\S\S\S\S\4$S jjr\S\	4S j5       rSSS.S\S	\4S jjrS rS rg)!FileId   r      r   N )majorminorfile_referenceurlmedia_idaccess_hash	volume_idthumbnail_sourcethumbnail_file_typethumbnail_sizesecretlocal_idchat_idchat_access_hashsticker_set_idsticker_set_access_hashr^   r_   	file_typedc_idr`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   c                    Xl         X l        X0l        X@l        XPl        X`l        Xpl        Xl        Xl        Xl	        Xl
        Xl        Xl        Xl        Xl        UU l        UU l        UU l        g N)r^   r_   rn   ro   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   )selfr^   r_   rn   ro   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   s                      r   __init__FileId.__init__   sl    * 

"
, &" 0#6 ,  0,'>$r   file_idc                    [        [        U 5      5      nUS   nUS:  a  Sn[        US S 5      nOUS   n[        US S 5      n[        R                  " SUR                  S5      5      u  pV[        U[        -  5      n[        U[        -  5      nU[        ) -  nU[        ) -  n [        U5      nU(       aL  [        R
                  " U5      n	[        R                  " S	UR                  S5      5      u  n
[        UUUUU	U
S
9$ U(       a  [        R
                  " U5      OSn[        R                  " SUR                  S5      5      u  pU[        ;   Ga  [        R                  " S	UR                  S5      5      u  nUS:  a  SO%[        R                  " SUR                  S5      5      u  n [        U5      nU[        R                   :X  a<  [        R                  " SUR                  S5      5      u  nn[        UUUUUUU
UUUUS9$ U[        R"                  :X  aI  [        R                  " SUR                  S5      5      u  nnn[%        U5      n[        UUUUUUU
UUUUUS9$ U[        R&                  [        R(                  4;   a>  [        R                  " SUR                  S5      5      u  nnn[        UUUUUUU
UUUUUS9$ U[        R*                  :X  a>  [        R                  " SUR                  S5      5      u  nnn[        UUUUUUU
UUUUUS9$ U[,        ;   a  [        UUUUUUU
S9$ g ! [         a    [        SU SU  35      ef = f! [         a    [        SU SU  35      ef = f)Nr   r   <iir/   zUnknown file_type z of file_id <q)r^   r_   rn   ro   ra   rc   r   <qqr7   r$   <izUnknown thumbnail_source <qir3   )r^   r_   rn   ro   r`   rb   rc   rd   re   rh   ri   <iii)r^   r_   rn   ro   r`   rb   rc   rd   re   rf   rg   ri   <qqi   )r^   r_   rn   ro   r`   rb   rc   rd   re   rj   rk   ri   )r^   r_   rn   ro   r`   rb   rc   rd   re   rl   rm   ri   )r^   r_   rn   ro   r`   rb   rc   )r&   r   r   structunpackreadboolWEB_LOCATION_FLAGFILE_REFERENCE_FLAGr(   
ValueErrorr   rZ   r   PHOTO_TYPESrS   rU   r?   chrrV   rW   rX   DOCUMENT_TYPES)ru   decodedr^   r_   bufferrn   ro   has_web_locationhas_file_referencera   rc   r`   rb   rd   re   rh   ri   rf   rg   rj   rk   rl   rm   s                          r   r   FileId.decode   s   Z01 19EWSb\*FBKEWSb\*F "==A?	  	,= =>!).A"AB 	'''	)))		T +I ++f%C!==v{{1~>LK#'  0BF+s &eV[[_ E#tV[[^<JI(-	v}}T6;;WX>7Zf#23C#D   ?#9#99#)==B#H '#1% +'%5!%   ?#<#<<@FfV\VaVabdVe@f=#^X!$^!4'#1% +'%5(;#1%   O$D$DoFdFd#ee6<mmFFKKXZO6\3)8'#1% +'%5#%5%   ?#H#HHDJMMRXZ`ZeZefhZiDjA 7'#1% +'%5#1,C%  &#-!'  'I  	T1)L	RSS	T2  f #<=M<Nl[bZc!deefs   %L4 .M 4MM/)r^   r_   c          	         Ub  UOU R                   nUb  UOU R                  n[        5       nU R                  nU R                  (       a	  U[
        -  nU R                  (       a	  U[        -  nUR                  [        R                  " SX@R                  5      5        U R                  (       a$  UR                  [        U R                  5      5        U R                  (       a$  UR                  [        U R                  5      5        UR                  [        R                  " SU R                  U R                  5      5        U R                  [         ;   Ga
  UR                  [        R                  " SU R"                  5      5        US:  a0  UR                  [        R                  " SU R$                  5      5        U R$                  [&        R(                  :X  a=  UR                  [        R                  " SU R*                  U R,                  5      5        GOyU R$                  [&        R.                  :X  aQ  UR                  [        R                  " SU R0                  [3        U R4                  5      U R,                  5      5        GO
U R$                  [&        R6                  [&        R8                  4;   aG  UR                  [        R                  " SU R:                  U R<                  U R,                  5      5        OU R$                  [&        R>                  :X  aF  UR                  [        R                  " SU R@                  U RB                  U R,                  5      5        O0U[D        ;   a&  UR                  [        R                  " SX!5      5        UR                  [        R                  " S	X!5      5        [G        [I        URK                  5       5      5      $ )
Nry   r{   rz   r   r|   r}   r~   r   z<bb)&r^   r_   r   rn   ra   r   r`   r   writer   packro   r   r   rb   rc   r   rd   re   rS   rU   rh   ri   r?   rf   ordrg   rV   rW   rj   rk   rX   rl   rm   r   r   r"   getvalue)rr   r^   r_   r   rn   s        r   encodeFileId.encodeT  s   *

*

NN	88**I,,IV[[	::>?88LL)*LLt2234V[[t7G7GHI>>[(LLT4>>:;zV[[t/D/DEF$$(>(>>V[[T]]KL&&/*C*CCV[[,,++,MM	  &&?+K+K_MkMk*llV[[LL))MM	  &&/*O*OOV[[''00MM	  .(LLUE9:V[[56*V__%6788r   c                     [        U R                  R                  5        VVs0 s H  u  pUc  M
  X_M     snn5      $ s  snnf rq   str__dict__itemsrr   kvs      r   __str__FileId.__str__  6    T]]%8%8%:L%:TQaDAD%:LMML   	>
>
)rc   rk   rj   ro   r`   rn   ri   r^   rb   r_   rh   rm   rl   rf   rg   re   ra   rd   )r:   r;   r<   r=   MAJORMINORintr(   r   r   rS   rs   staticmethodr   r   r   rQ   r9   r   r   rZ   rZ      s8   EE  !$,0(,  $"'+'&?&? &? 	&?
 &? &? &? &? &? &? *&? &&? &? &? &?  !&?" #&?$ %&?& "%'&?P J J JX &* :9s :9# :9xNr   rZ   c                   0    \ rS rSrSrSrSrSrSrSr	Sr
S	rg
)FileUniqueTypei  zKnown file unique typesr   r   r*   r+   r   r,   r9   N)r:   r;   r<   r=   r>   WEBrA   rD   rN   rE   rF   rQ   r9   r   r   r   r     s#    !
CEHFIDr   r   c                   d    \ rS rSrSSSSS.S\S\S\S\S\4
S	 jjr\S
\4S j5       r	S r
S rSrg)FileUniqueIdi  N)ra   rb   rd   ri   file_unique_typera   rb   rd   ri   c                @    Xl         X l        X0l        X@l        XPl        g rq   )r   ra   rb   rd   ri   )rr   r   ra   rb   rd   ri   s         r   rs   FileUniqueId.__init__  s     !1 " r   file_unique_idc                    [        [        [        U 5      5      5      n[        R                  " SUR                  S5      5      u  n [        U5      nU[        R                  :X  a   [        R
                  " U5      n[        UUS9$ U[        R                  :X  a2  [        R                  " SUR                  5       5      u  pE[        UUUS9$ U[        R                  :X  a1  [        R                  " SUR                  5       5      u  n[        UUS	9$ [        S
U SU  35      e! [         a    [        SU SU  35      ef = f)Nr|   r   zUnknown file_unique_type z of file_unique_id )r   ra   r}   )r   rd   ri   rz   )r   rb   z%Unknown decoder for file_unique_type )r   r&   r   r   r   r   r   r   r   r   r   rA   rD   )r   r   r   ra   rd   ri   rb   s          r   r   FileUniqueId.decode  s@   J~$>?@"MM$A?	p-.>? ~111++f%C!1 
 ~333"(--v{{}"EI!1#!  ~666dFKKM:IH!1!  @AQ@RRefteuvww;  	p89I8JJ]^l]mnoo	ps   D" "D>c                 D   U R                   [        R                  :X  a6  [        R                  " SU R                   [        U R                  5      5      nOU R                   [        R                  :X  a8  [        R                  " SU R                   U R                  U R                  5      nOcU R                   [        R                  :X  a-  [        R                  " SU R                   U R                  5      nO[        SU R                    35      e[        [        U5      5      $ )Nz<isz<iqiz<iqz%Unknown encoder for file_unique_type )r   r   r   r   r   r   ra   rA   rd   ri   rD   rb   r   r   r"   )rr   strings     r   r   FileUniqueId.encode  s      N$6$66[[(=(=vdhh?OPF""n&:&::[[)>)>PTP]P]^F""n&=&==[[(=(=t}}MF DTEZEZD[\]]*V,--r   c                     [        U R                  R                  5        VVs0 s H  u  pUc  M
  X_M     snn5      $ s  snnf rq   r   r   s      r   r   FileUniqueId.__str__  r   r   )r   ri   rb   ra   rd   )r:   r;   r<   r=   r   r   r   rs   r   r   r   r   rQ   r9   r   r   r   r     so     !(! ! 	!
 ! ! #xs #x #xJ.Nr   r   )$r   loggingr   enumr   ior   typingr   pyrogram.raw.corer   r   	getLoggerr:   logr   r   r   r   r"   r&   r(   rS   r?   r@   rA   rK   rJ   r   setr   r   r   rZ   r   r   r9   r   r   <module>r      s  &       +!
;% 
;C 
;
=# 
=% 
=% E :% E 6w ,g  !!8#6#6HZHZ++-X,   vN vNrW CN CNr   