
    i                         S SK r S SKJr  S SKrS SKJr  S SKJrJrJrJ	r	  S SK
Jr  \ R                  " \5      r " S S5      rg)    N)Tuple)raw)ChannelInvalidChannelPrivatePersistentTimestampInvalidPersistentTimestampOutdated)ZERO_CHANNEL_IDc                   0    \ rS rSrSSS\\\4   4S jrSrg)RecoverGaps   selfzpyrogram.Clientreturnc                 H  #    SnSnU R                   (       a  [        R                  S5        X4$ U R                  R	                  5       I Sh  vN nU(       d  [        R                  S5        X4$ [        R                  S5        U GH  nUu  pVpxn	Sn
  U R                  U[        :  a^  [        R                  R                  R                  U R                  U5      I Sh  vN [        R                  R                  5       USSS9O([        R                  R                  R                  UUSS	95      I Sh  vN n[)        U[        R                  R                  R*                  5      (       a>  U R                  R	                  UUSUR,                  UR.                  45      I Sh  vN   GO[)        U[        R                  R                  R0                  5      (       a7  UR2                  nU R                  R	                  UUSUU	45      I Sh  vN   GM  [)        U[        R                  R                  R4                  5      (       aD  UR6                  R2                  nUR6                  R,                  nUR6                  R.                  n	GO[)        U[        R                  R                  R8                  5      (       aM  UR:                  R2                  nUR:                  R,                  nUR:                  R.                  n	X:X  a  GOaUn
GO[)        U[        R                  R                  R<                  5      (       a4  U R                  R	                  UUR2                  SUU	45      I Sh  vN   GO[)        U[        R                  R                  R>                  5      (       aA  UR@                  R2                  nU R                  R	                  UUSUU	45      I Sh  vN   GMW  [)        U[        R                  R                  RB                  5      (       a  UR2                  nURD                   Vs0 s H  oRF                  U_M     nnURH                   Vs0 s H  oRF                  U_M     nnURJ                   HM  nUS
-  nU RL                  RN                  RQ                  [        R                  RS                  UUSS9UU45        MO     URT                   H/  nUS
-  nU RL                  RN                  RQ                  UX45        M1     [)        U[        R                  R                  R4                  [        R                  R                  RB                  45      (       a  OGM  U R                  R	                  UUSUU	45      I Sh  vN   GM     [        R                  SX5        X4$  GNf GN GN! [         ["        4 a(    U R                  R	                  U5      I Sh  vN     M  [$        [&        4 a     GMr  f = f GNb GN GN GN0s  snf s  snf  N7f)av  Restores updates for the time while the client was offline.

.. note::

    To use this method, you must set the ``Client.skip_updates`` and ``Client.in_memory`` parameter to False, otherwise updates state saving and recovery will not work.

.. include:: /_includes/usable-by/users-bots.rst

Returns:
    ``tuple``: The number of messages and updates recovered is returned.
r   z9Recover gaps disabled in client params. Skipping recoveryNz"No states found, skipping recoveryzStarted gaps recovering...i'  F)channelfilterptslimitforce)r   dateqts   )messager   	pts_countz$Recovered %s messages and %s updates)+skip_updateslogdebugstorageupdate_stateinfoinvoker	   r   	functionsupdatesGetChannelDifferenceresolve_peertypesChannelMessagesFilterEmptyGetDifferencer   r   r   r   
isinstanceDifferenceEmptyr   seqDifferenceTooLongr   
DifferencestateDifferenceSliceintermediate_stateChannelDifferenceEmptyChannelDifferenceTooLongdialogChannelDifferenceusersidchatsnew_messages
dispatcherupdates_queue
put_nowaitUpdateNewMessageother_updates)r   message_updates_counterother_updates_counterstateslocal_stater6   	local_pts	local_qts
local_date	local_seqprev_ptsdiffir5   r7   r   updates                    S/app/mltbenv/lib/python3.13/site-packages/pyrogram/methods/advanced/recover_gaps.pyrecover_gapsRecoverGaps.recover_gaps   s-     #$ !IIQR+CC||0022HH9:+CC-.!K>I;B9)H!%  /1 --BB*.*;*;B*?$?#&99#G#G#I )"'"' C  --;; )!+ ! < " D( dCII$5$5$E$EFF,,33%  II HH   cii&7&7&I&IJJ $I,,33% &%   cii&7&7&B&BCC $

I!%J $

Icii&7&7&G&GHH $ 7 7 ; ;I!%!8!8!=!=J $ 7 7 ; ;I,(Hcii&7&7&N&NOO,,33 HH &%   cii&7&7&P&PQQ $I,,33% &%   cii&7&7&I&IJJ $I*.**5*Qq*5*.**5*Qq*5#00G+q0+OO11<<II66(/$-*, 7 
 "!
  1 #00F)Q.)OO11<<. 1 dSYY%6%6%A%A399CTCTCfCf$ghhY \ ,,++  g "z 	79Ph'??M 3" %@ '7 ,,33B77735OP 0 652s   AX"V3AX"AV<"V6#AV<9V9:V<>A*X"(X
)A(X"XEX"0X1A2X"#X$AX"8XX"X4DX"X #X"6V<9V<<.X*W-+X0X"3XX"XX"X"X"X"X" N)__name__
__module____qualname____firstlineno__r   intrK   __static_attributes__rM       rJ   r   r      s$    Y@!2 Y@uS#X Y@rT   r   )loggingtypingr   pyrogramr   pyrogram.errorsr   r   r   r   pyrogram.utilsr	   	getLoggerrN   r   r   rM   rT   rJ   <module>r[      s:   &     s s *!Z@ Z@rT   