§
    ®eîi±¥  ã                   ó
  — d Z ddlZddlZddlmZ ddlmZmZm	Z	m
Z
mZmZ ddlmZ ddlmZmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddl m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z- ddl.m/Z/m0Z0m1Z1 er
ddl2m3Z3m4Z4m5Z5 e6e7e1eee/e7f         e7f         Z8 ee9d¬¦  «        Z:e G d„ de
e/         ¦  «        ¦   «         Z;e G d„ d¦  «        ¦   «         Z< G d„ deee/e7f         ¦  «        Z=dS )z-This module contains the ConversationHandler.é    N)Ú	dataclass)ÚTYPE_CHECKINGÚAnyÚFinalÚGenericÚNoReturnÚcast)ÚUpdate)ÚDEFAULT_TRUEÚDefaultValue)Ú
get_logger)Úbuild_repr_with_selected_attrs)ÚDVType)Úwarn)ÚApplicationHandlerStop)ÚExtBot)ÚBaseHandler)ÚCallbackQueryHandler)ÚChosenInlineResultHandler)ÚInlineQueryHandler)ÚStringCommandHandler)ÚStringRegexHandler)ÚTypeHandler)ÚTrackingDict)ÚCCTÚConversationDictÚConversationKey)ÚApplicationÚJobÚJobQueueÚConversationHandler)Ú
class_namec                   ó@   — e Zd ZU dZdZeed<   eed<   ded<   eed<   dS )	Ú_ConversationTimeoutContextz‘Used as a datastore for conversation timeouts. Passed in the
    :paramref:`JobQueue.run_once.data` parameter. See :meth:`_trigger_timeout`.
    )ÚapplicationÚcallback_contextÚconversation_keyÚupdater'   r(   ú.Application[Any, CCT, Any, Any, Any, JobQueue]r%   r&   N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   Ú__annotations__r
   r   © ó    ún/home/div/.hermes/hermes-agent/venv/lib/python3.11/site-packages/telegram/ext/_handlers/conversationhandler.pyr$   r$   3   sQ   € € € € € € ðð ð R€Ià%Ð%Ð%Ñ%Ø€N€N�NØAÐAÐAÑAØÐÐÑÐÐr1   r$   c                   óN   — e Zd ZU dZdZej        ed<   eed<   de	fd„Z
defd„ZdS )	ÚPendingStatea  Thin wrapper around :class:`asyncio.Task` to handle block=False handlers. Note that this is
    a public class of this module, since :meth:`Application.update_persistence` needs to access it.
    It's still hidden from users, since this module itself is private.
    ©Ú	old_stateÚtaskr7   r6   Úreturnc                 ó4   — | j                              ¦   «         S ©N)r7   Údone©Úselfs    r2   r;   zPendingState.doneM   s   € ØŒy�~Š~ÑÔÐr1   c                 óJ  — | j                              ¦   «         st          d¦  «        ‚| j                              ¦   «         }|r't                               d| j        ¦  «         | j        S | j                              ¦   «         }|€| j        €t          j        }n	|€| j        S |S )a�  Returns the new state of the :class:`ConversationHandler` if available. If there was an
        exception during the task execution, then return the old state. If both the new and old
        state are :obj:`None`, return `CH.END`. If only the new state is :obj:`None`, return the
        old state.

        Raises:
            :exc:`RuntimeError`: If the current task has not yet finished.
        zNew state is not yet availablez<Task function raised exception. Falling back to old state %s)	r7   r;   ÚRuntimeErrorÚ	exceptionÚ_LOGGERr6   Úresultr!   ÚEND)r=   ÚexcÚress      r2   ÚresolvezPendingState.resolveP   s¨   € ð Œy�~Š~ÑÔð 	AÝÐ?Ñ@Ô@Ð@àŒi×!Ò!Ñ#Ô#ˆØð 	"Ý×ÒØNØ”ñô ð ð ”>Ð!àŒi×ÒÑ Ô ˆØˆ;˜4œ>Ð1Ý%Ô)ˆCˆCØˆ[à”>Ð!àˆ
r1   N)r*   r+   r,   r-   r.   ÚasyncioÚTaskr/   ÚobjectÚboolr;   rF   r0   r1   r2   r4   r4   A   sw   € € € € € € ðð ð
 &€Ià
Œ,ÐÐÑØÐÐÑð �dð  ð  ð  ð  ð˜ð ð ð ð ð ð r1   r4   c                   ó  — e Zd ZU dZdZdZee         ed<   	 dZ	ee         ed<   	 dZ
ee         ed<   	 d	d
d
d	ddd	def	dddeeeeef                  deeeeeeef                  f         deeeeef                  dededededeej        z  dz  dedz  dedeeef         dz  dee         fd„Zdefd„Zedeeeeef                  fd„¦   «         Zej        dedefd„¦   «         Zedeeeeeeef                  f         fd „¦   «         Zej        dedefd!„¦   «         Zedeeeeef                  fd"„¦   «         Zej        dedefd#„¦   «         Zedefd$„¦   «         Z e j        dedefd%„¦   «         Z edefd&„¦   «         Z!e!j        dedefd'„¦   «         Z!edefd(„¦   «         Z"e"j        dedefd)„¦   «         Z"edefd*„¦   «         Z#e#j        dedefd+„¦   «         Z#edeej        z  dz  fd,„¦   «         Z$e$j        dedefd-„¦   «         Z$ededz  fd.„¦   «         Z%e%j        dedefd/„¦   «         Z%edefd0„¦   «         Z&e&j        dedefd1„¦   «         Z&edeeef         dz  fd2„¦   «         Z'e'j        dedefd3„¦   «         Z'd4d5deee(e)ef         f         fd6„Z*d7ede)fd8„Z+d9e,j-        d4d:d7ed;ed<e)ddfd=„Z.d9ed4d:d7ed;ed<e)ddfd>„Z/d7ede0e         dz  fd?„Z1d7ed4d@dAe0e         d;ededz  f
dB„Z2	 dGd9edCe)dDedz  ddfdE„Z3d;eddfdF„Z4dS )Hr!   aè#  
    A handler to hold a conversation with a single or multiple users through Telegram updates by
    managing three collections of other handlers.

    Warning:
        :class:`ConversationHandler` heavily relies on incoming updates being processed one by one.
        When using this handler, :attr:`telegram.ext.ApplicationBuilder.concurrent_updates` should
        be set to :obj:`False`.

    Note:
        :class:`ConversationHandler` will only accept updates that are (subclass-)instances of
        :class:`telegram.Update`. This is, because depending on the :attr:`per_user` and
        :attr:`per_chat`, :class:`ConversationHandler` relies on
        :attr:`telegram.Update.effective_user` and/or :attr:`telegram.Update.effective_chat` in
        order to determine which conversation an update should belong to. For
        :attr:`per_message=True <per_message>`, :class:`ConversationHandler` uses
        :attr:`update.callback_query.message.message_id <telegram.Message.message_id>` when
        :attr:`per_chat=True <per_chat>` and
        :attr:`update.callback_query.inline_message_id <.CallbackQuery.inline_message_id>` when
        :attr:`per_chat=False <per_chat>`. For a more detailed explanation, please see our `FAQ`_.

        Finally, :class:`ConversationHandler`, does *not* handle (edited) channel posts.

    .. _`FAQ`: https://github.com/python-telegram-bot/python-telegram-bot/wiki        /Frequently-Asked-Questions#what-do-the-per_-settings-in-conversation handler-do

    The first collection, a :obj:`list` named :attr:`entry_points`, is used to initiate the
    conversation, for example with a :class:`telegram.ext.CommandHandler` or
    :class:`telegram.ext.MessageHandler`.

    The second collection, a :obj:`dict` named :attr:`states`, contains the different conversation
    steps and one or more associated handlers that should be used if the user sends a message when
    the conversation with them is currently in that state. Here you can also define a state for
    :attr:`TIMEOUT` to define the behavior when :attr:`conversation_timeout` is exceeded, and a
    state for :attr:`WAITING` to define behavior when a new update is received while the previous
    :attr:`block=False <block>` handler is not finished.

    The third collection, a :obj:`list` named :attr:`fallbacks`, is used if the user is currently
    in a conversation but the state has either no associated handler or the handler that is
    associated to the state is inappropriate for the update, for example if the update contains a
    command, but a regular text message is expected. You could use this for a ``/cancel`` command
    or to let the user know their message was not recognized.

    To change the state of conversation, the callback function of a handler must return the new
    state after responding to the user. If it does not return anything (returning :obj:`None` by
    default), the state will not change. If an entry point callback function returns :obj:`None`,
    the conversation ends immediately after the execution of this callback function.
    To end the conversation, the callback function must return :attr:`END` or ``-1``. To
    handle the conversation timeout, use handler :attr:`TIMEOUT` or ``-2``.
    Finally, :class:`telegram.ext.ApplicationHandlerStop` can be used in conversations as described
    in its documentation.

    Note:
        In each of the described collections of handlers, a handler may in turn be a
        :class:`ConversationHandler`. In that case, the child :class:`ConversationHandler` should
        have the attribute :attr:`map_to_parent` which allows returning to the parent conversation
        at specified states within the child conversation.

        Note that the keys in :attr:`map_to_parent` must not appear as keys in :attr:`states`
        attribute or else the latter will be ignored. You may map :attr:`END` to one of the parents
        states to continue the parent conversation after the child conversation has ended or even
        map a state to :attr:`END` to end the *parent* conversation from within the child
        conversation. For an example on nested :class:`ConversationHandler` s, see
        :any:`examples.nestedconversationbot`.

    Examples:
        * :any:`Conversation Bot <examples.conversationbot>`
        * :any:`Conversation Bot 2 <examples.conversationbot2>`
        * :any:`Nested Conversation Bot <examples.nestedconversationbot>`
        * :any:`Persistent Conversation Bot <examples.persistentconversationbot>`

    Args:
        entry_points (list[:class:`telegram.ext.BaseHandler`]): A list of :obj:`BaseHandler`
            objects that
            can trigger the start of the conversation. The first handler whose :meth:`check_update`
            method returns :obj:`True` will be used. If all return :obj:`False`, the update is not
            handled.
        states (dict[:obj:`object`, list[:class:`telegram.ext.BaseHandler`]]): A :obj:`dict` that
            defines the different states of conversation a user can be in and one or more
            associated :obj:`BaseHandler` objects that should be used in that state. The first
            handler whose :meth:`check_update` method returns :obj:`True` will be used.
        fallbacks (list[:class:`telegram.ext.BaseHandler`]): A list of handlers that might be used
            if the user is in a conversation, but every handler for their current state returned
            :obj:`False` on :meth:`check_update`. The first handler which :meth:`check_update`
            method returns :obj:`True` will be used. If all return :obj:`False`, the update is not
            handled.
        allow_reentry (:obj:`bool`, optional): If set to :obj:`True`, a user that is currently in a
            conversation can restart the conversation by triggering one of the entry points.
            Default is :obj:`False`.
        per_chat (:obj:`bool`, optional): If the conversation key should contain the Chat's ID.
            Default is :obj:`True`.
        per_user (:obj:`bool`, optional): If the conversation key should contain the User's ID.
            Default is :obj:`True`.
        per_message (:obj:`bool`, optional): If the conversation key should contain the Message's
            ID. Default is :obj:`False`.
        conversation_timeout (:obj:`float` | :obj:`datetime.timedelta`, optional): When this
            handler is inactive more than this timeout (in seconds), it will be automatically
            ended. If this value is ``0`` or :obj:`None` (default), there will be no timeout. The
            last received update and the corresponding :class:`context <.CallbackContext>` will be
            handled by *ALL* the handler's whose :meth:`check_update` method returns :obj:`True`
            that are in the state :attr:`ConversationHandler.TIMEOUT`.

            Caution:
                * This feature relies on the :attr:`telegram.ext.Application.job_queue` being set
                  and hence requires that the dependencies that :class:`telegram.ext.JobQueue`
                  relies on are installed.
                * Using :paramref:`conversation_timeout` with nested conversations is currently
                  not supported. You can still try to use it, but it will likely behave
                  differently from what you expect.

        name (:obj:`str`, optional): The name for this conversation handler. Required for
            persistence.
        persistent (:obj:`bool`, optional): If the conversation's dict for this handler should be
            saved. :paramref:`name` is required and persistence has to be set in
            :attr:`Application <.Application.persistence>`.

            .. versionchanged:: 20.0
                Was previously named as ``persistence``.
        map_to_parent (dict[:obj:`object`, :obj:`object`], optional): A :obj:`dict` that can be
            used to instruct a child conversation handler to transition into a mapped state on
            its parent conversation handler in place of a specified nested state.
        block (:obj:`bool`, optional): Pass :obj:`False` or :obj:`True` to set a default value for
            the :attr:`BaseHandler.block` setting of all handlers (in :attr:`entry_points`,
            :attr:`states` and :attr:`fallbacks`). The resolution order for checking if a handler
            should be run non-blocking is:

            1. :attr:`telegram.ext.BaseHandler.block` (if set)
            2. the value passed to this parameter (if any)
            3. :attr:`telegram.ext.Defaults.block` (if defaults are used)

            .. seealso:: :wiki:`Concurrency`

            .. versionchanged:: 20.0
                No longer overrides the handlers settings. Resolution order was changed.

    Raises:
        :exc:`ValueError`: If :paramref:`persistent` is used but :paramref:`name` was not set, or
            when :attr:`per_message`, :attr:`per_chat`, :attr:`per_user` are all :obj:`False`.

    Attributes:
        block (:obj:`bool`): Determines whether the callback will run in a blocking way. Always
            :obj:`True` since conversation handlers handle any non-blocking callbacks internally.

    )Ú_allow_reentryÚ_blockÚ_child_conversationsÚ_conversation_timeoutÚ_conversationsÚ_entry_pointsÚ
_fallbacksÚ_map_to_parentÚ_nameÚ	_per_chatÚ_per_messageÚ	_per_userÚ_persistentÚ_statesÚ_timeout_jobs_lockÚtimeout_jobséÿÿÿÿrC   éþÿÿÿÚTIMEOUTéýÿÿÿÚWAITINGFTNr=   zConversationHandler[CCT]Úentry_pointsÚstatesÚ	fallbacksÚallow_reentryÚper_chatÚper_userÚper_messageÚconversation_timeoutÚnameÚ
persistentÚmap_to_parentÚblockc                 ó6  — ddl m}m}m}m} d| _        || _        || _        || _        || _	        || _
        || _        || _        || _        || _        |	| _        || _        i | _        t%          j        ¦   «         | _        i | _        t-          ¦   «         | _        |
r| j        st3          d¦  «        ‚|
| _        t7          | j        | j        | j        f¦  «        st3          d¦  «        ‚| j        r| j        st?          dd¬¦  «         g }|                      |¦  «         |                      |¦  «         | !                    ¦   «         D ]}|                      |¦  «         Œ| j         "                    d	„ |D ¦   «         ¦  «         d
}|D �]�}tG          |tH          tJ          z  ¦  «        r!t?          d|j&        j'        › d�d¬¦  «         �n!tG          |tP          ¦  «        r:tS          |j*        tV          ¦  «        s t?          d|j*        j'        › d�d¬¦  «         nÒtG          ||¦  «        rt?          dd¬¦  «         n°| j        rHtG          ||tX          z  tZ          z  |z  |z  ¦  «        r"t?          d|j&        j'        › d|› �d¬¦  «         na| j        r*tG          |t\          ¦  «        st?          d|› �d¬¦  «         n0| j        s)tG          |t\          ¦  «        rt?          d|› �d¬¦  «         | j/        r&tG          || j&        ¦  «        rt?          dd¬¦  «         �Œ‘d S )Nr   )ÚPollAnswerHandlerÚPollHandlerÚPreCheckoutQueryHandlerÚShippingQueryHandlerTz:Conversations can't be persistent when handler is unnamed.z='per_user', 'per_chat' and 'per_message' can't all be 'False'znIf 'per_message=True' is used, 'per_chat=True' should also be used, since message IDs are not globally unique.é   ©Ú
stacklevelc              3   óD   K  — | ]}t          |t          ¦  «        ¯|V — Œd S r:   )Ú
isinstancer!   )Ú.0Úhandlers     r2   ú	<genexpr>z/ConversationHandler.__init__.<locals>.<genexpr>c  sF   è è € ð )
ð )
Øµ:¸gÕGZÑ3[Ô3[ð)
Øð)
ð )
ð )
ð )
ð )
ð )
r1   zÌ Read this FAQ entry to learn more about the per_* settings: https://github.com/python-telegram-bot/python-telegram-bot/wiki/Frequently-Asked-Questions#what-do-the-per_-settings-in-conversationhandler-do.zJThe `ConversationHandler` only handles updates of type `telegram.Update`. z handles updates of type `str`.zkThe `ConversationHandler` only handles updates of type `telegram.Update`. The TypeHandler is set to handle ú.z�PollHandler will never trigger in a conversation since it has no information about the chat or the user who voted in it. Do you mean the `PollAnswerHandler`?zUpdates handled by zb only have information about the user, so this handler won't ever be triggered if `per_chat=True`.z–If 'per_message=True', all entry points, state handlers, and fallbacks must be 'CallbackQueryHandler', since no other handlers have a message context.zUIf 'per_message=False', 'CallbackQueryHandler' will not be tracked for every message.z«Using `conversation_timeout` with nested conversations is currently not supported. You can still try to use it, but it will likely behave differently from what you expect.)0Útelegram.extrn   ro   rp   rq   rl   rM   rQ   rY   rR   rL   rW   rU   rV   rO   rT   rS   r[   rG   ÚLockrZ   rP   ÚsetrN   ri   Ú
ValueErrorrX   Úanyrf   re   rg   r   ÚextendÚvaluesr(   rv   r   r   Ú	__class__r*   r   Ú
issubclassÚtyper
   r   r   r   rh   )r=   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rn   ro   rp   rq   Úall_handlersÚstate_handlersÚper_faq_linkrx   s                        r2   Ú__init__zConversationHandler.__init__  sy  € ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð $(ˆŒ
à$)ˆŒàEQˆÔØMSˆŒØBKˆŒà$1ˆÔØ'ˆŒØ'ˆŒØ"-ˆÔØCWˆÔ"Ø!%ˆŒ
Ø;HˆÔð >@ˆÔÝ")¤,¡.¤.ˆÔØ02ˆÔÝ>A¹e¼eˆÔ!àð 	[˜dœið 	[ÝÐYÑZÔZÐZØ!+ˆÔå�D”M 4¤=°$Ô2BÐCÑDÔDð 	^ÝÐ\Ñ]Ô]Ð]àÔð 	 D¤Mð 	Ýð=àðñ ô ð ð @BˆØ×Ò˜LÑ)Ô)Ð)Ø×Ò˜IÑ&Ô&Ð&à$Ÿmšm™oœoð 	0ð 	0ˆNØ×Ò Ñ/Ô/Ð/Ð/àÔ!×(Ò(ð )
ð )
Ø#/ð)
ñ )
ô )
ñ 	
ô 	
ð 	
ð_ð 	ð $ð :	ñ :	ˆGÝ˜'Õ#7Õ:LÑ#LÑMÔMð 1ÝðSØÔ(Ô1ðSð Sð Sà ðñ ô ð ñ õ
 ˜G¥[Ñ1Ô1ð +½*ÀWÄ\ÕSYÑ:ZÔ:Zð +ÝðRØ9@¼Ô9NðRð Rð Rà ðñ ô ð ð õ
 ˜G [Ñ1Ô1ð %Ýð+ð  !ð	ñ ô ð ð ð ”ð ÝØØ(Ý(ñ)å/ñ0ð .ñ.ð (ñ	(ñô ðõ ð&¨'Ô*;Ô*Dð &ð &à#ð&ð &ð  !ð	ñ ô ð ð ð Ô!ð ­*°WÕ>RÑ*SÔ*Sð Ýð=à.:ð=ð =ð  !ð	ñ ô ð ð ð Ô%ð ­*°WÕ>RÑ*SÔ*Sð Ýð@Ø1=ð@ð @à ðñ ô ð ð Ô(ð ­Z¸ÀÄÑ-PÔ-Pð Ýð8ð  !ð	ñ ô ð ùðk:	ð :	r1   r8   c                 ó  — d}t          t          | j                             ¦   «         ¦  «        d|…         ¦  «        }t	          |¦  «        }t          | j        ¦  «        |k    r|dd…         dz   }t          | | j        |¬¦  «        S )a—  Give a string representation of the ConversationHandler in the form
        ``ConversationHandler[name=..., states={...}]``.

        If there are more than 3 states, only the first 3 states are listed.

        As this class doesn't implement :meth:`object.__str__`, the default implementation
        will be used, which is equivalent to :meth:`__repr__`.

        Returns:
            :obj:`str`
        é   Nr\   z, ...})ri   rb   )ÚdictÚlistrb   ÚitemsÚstrÚlenr   ri   )r=   Útruncation_thresholdrb   Ústates_strings       r2   Ú__repr__zConversationHandler.__repr__¬  s�   € ð  !ÐÝ•d˜4œ;×,Ò,Ñ.Ô.Ñ/Ô/Ð0EÐ1EÐ0EÔFÑGÔGˆÝ˜F™œˆÝˆtŒ{ÑÔÐ2Ò2Ð2Ø)¨#¨2¨#Ô.°Ñ9ˆMå-ØØ”Ø ð
ñ 
ô 
ð 	
r1   c                 ó   — | j         S )zŽlist[:class:`telegram.ext.BaseHandler`]: A list of :obj:`BaseHandler` objects that can
        trigger the start of the conversation.
        )rQ   r<   s    r2   ra   z ConversationHandler.entry_pointsÄ  s   € ð
 Ô!Ð!r1   Ú_c                 ó    — t          d¦  «        ‚)NzDYou can not assign a new value to entry_points after initialization.©ÚAttributeError©r=   r”   s     r2   ra   z ConversationHandler.entry_pointsË  s   € åØRñ
ô 
ð 	
r1   c                 ó   — | j         S )a   dict[:obj:`object`, list[:class:`telegram.ext.BaseHandler`]]: A :obj:`dict` that
        defines the different states of conversation a user can be in and one or more
        associated :obj:`BaseHandler` objects that should be used in that state.
        )rY   r<   s    r2   rb   zConversationHandler.statesÑ  s   € ð Œ|Ðr1   c                 ó    — t          d¦  «        ‚)Nz>You can not assign a new value to states after initialization.r–   r˜   s     r2   rb   zConversationHandler.statesÙ  s   € åÐ]Ñ^Ô^Ð^r1   c                 ó   — | j         S )zâlist[:class:`telegram.ext.BaseHandler`]: A list of handlers that might be used if
        the user is in a conversation, but every handler for their current state returned
        :obj:`False` on :meth:`check_update`.
        )rR   r<   s    r2   rc   zConversationHandler.fallbacksÝ  s   € ð ŒÐr1   c                 ó    — t          d¦  «        ‚)NzAYou can not assign a new value to fallbacks after initialization.r–   r˜   s     r2   rc   zConversationHandler.fallbackså  s   € åÐ`ÑaÔaÐar1   c                 ó   — | j         S )zQ:obj:`bool`: Determines if a user can restart a conversation with an entry point.)rL   r<   s    r2   rd   z!ConversationHandler.allow_reentryé  s   € ð Ô"Ð"r1   c                 ó    — t          d¦  «        ‚)NzEYou can not assign a new value to allow_reentry after initialization.r–   r˜   s     r2   rd   z!ConversationHandler.allow_reentryî  ó   € åØSñ
ô 
ð 	
r1   c                 ó   — | j         S )zB:obj:`bool`: If the conversation key should contain the User's ID.)rW   r<   s    r2   rf   zConversationHandler.per_userô  ó   € ð Œ~Ðr1   c                 ó    — t          d¦  «        ‚)Nz@You can not assign a new value to per_user after initialization.r–   r˜   s     r2   rf   zConversationHandler.per_userù  ó   € åÐ_Ñ`Ô`Ð`r1   c                 ó   — | j         S )zB:obj:`bool`: If the conversation key should contain the Chat's ID.)rU   r<   s    r2   re   zConversationHandler.per_chatý  r¡   r1   c                 ó    — t          d¦  «        ‚)Nz@You can not assign a new value to per_chat after initialization.r–   r˜   s     r2   re   zConversationHandler.per_chat  r£   r1   c                 ó   — | j         S )zE:obj:`bool`: If the conversation key should contain the message's ID.)rV   r<   s    r2   rg   zConversationHandler.per_message  s   € ð Ô Ð r1   c                 ó    — t          d¦  «        ‚)NzCYou can not assign a new value to per_message after initialization.r–   r˜   s     r2   rg   zConversationHandler.per_message  s   € åÐbÑcÔcÐcr1   c                 ó   — | j         S )z¯:obj:`float` | :obj:`datetime.timedelta`: Optional. When this
        handler is inactive more than this timeout (in seconds), it will be automatically
        ended.
        )rO   r<   s    r2   rh   z(ConversationHandler.conversation_timeout  s   € ð Ô)Ð)r1   c                 ó    — t          d¦  «        ‚)NzLYou can not assign a new value to conversation_timeout after initialization.r–   r˜   s     r2   rh   z(ConversationHandler.conversation_timeout  s   € åØZñ
ô 
ð 	
r1   c                 ó   — | j         S )zE:obj:`str`: Optional. The name for this :class:`ConversationHandler`.)rT   r<   s    r2   ri   zConversationHandler.name  s   € ð ŒzÐr1   c                 ó    — t          d¦  «        ‚)Nz<You can not assign a new value to name after initialization.r–   r˜   s     r2   ri   zConversationHandler.name$  s   € åÐ[Ñ\Ô\Ð\r1   c                 ó   — | j         S )zÕ:obj:`bool`: Optional. If the conversations dict for this handler should be
        saved. :attr:`name` is required and persistence has to be set in
        :attr:`Application <.Application.persistence>`.
        )rX   r<   s    r2   rj   zConversationHandler.persistent(  s   € ð ÔÐr1   c                 ó    — t          d¦  «        ‚)NzBYou can not assign a new value to persistent after initialization.r–   r˜   s     r2   rj   zConversationHandler.persistent0  s   € åÐaÑbÔbÐbr1   c                 ó   — | j         S )a
  dict[:obj:`object`, :obj:`object`]: Optional. A :obj:`dict` that can be
        used to instruct a nested :class:`ConversationHandler` to transition into a mapped state on
        its parent :class:`ConversationHandler` in place of a specified nested state.
        )rS   r<   s    r2   rk   z!ConversationHandler.map_to_parent4  s   € ð Ô"Ð"r1   c                 ó    — t          d¦  «        ‚)NzEYou can not assign a new value to map_to_parent after initialization.r–   r˜   s     r2   rk   z!ConversationHandler.map_to_parent<  rŸ   r1   r%   r   c              ƒ   ód  K  — | j         r| j        r|j        st          d¦  «        ‚| j        }t          dt          ¦   «         ¦  «        | _        | j                             |¦  «         |j                             | j        ¦  «        ƒ d{V —†}| j         	                    |¦  «         | 
                    ¦   «         D ],\  }}|| j        k    r|                      | j        |¬¦  «         Œ-| j        | j        i}| j        D ]1}|                     |                     |¬¦  «        ƒ d{V —†¦  «         Œ2|S )aý  Initializes the persistence for this handler and its child conversations.
        While this method is marked as protected, we expect it to be called by the
        Application/parent conversations. It's just protected to hide it from users.

        Args:
            application (:class:`telegram.ext.Application`): The application.

        Returns:
            A dict {conversation.name -> TrackingDict}, which contains all dict of this
            conversation and possible child conversations.

        zRThis handler is not persistent, has no name or the application has no persistence!z%TrackingDict[ConversationKey, object]N)Ú	new_stateÚkey)r%   )rj   ri   Úpersistencer?   rP   r	   r   r(   Úget_conversationsÚupdate_no_trackr�   rC   Ú_update_staterN   Ú_initialize_persistence)r=   r%   Úcurrent_conversationsÚstored_datar²   ÚstateÚoutrx   s           r2   r·   z+ConversationHandler._initialize_persistenceB  sˆ  è è € ð ”ð 	 D¤Ið 	°+Ô2Ið 	Ýðñô ð ð
 !%Ô 3ÐÝ"Ø3Ý‰NŒNñ
ô 
ˆÔð
 	Ô×"Ò"Ð#8Ñ9Ô9Ð9ð (Ô3×EÒEÀdÄiÑPÔPÐPÐPÐPÐPÐPÐPˆØÔ×+Ò+¨KÑ8Ô8Ð8ð &×+Ò+Ñ-Ô-ð 	@ð 	@‰JˆC�Ø˜œÒ Ð Ø×"Ò"¨T¬X¸3Ð"Ñ?Ô?Ð?øàŒy˜$Ô-Ð.ˆàÔ0ð 	ð 	ˆGØ�JŠJØ×5Ò5Ø +ð 6ñ ô ð ð ð ð ð ð ñô ð ð ð ˆ
r1   r(   c                 óâ  — |j         }|j        }g }| j        r+|€t          d¦  «        ‚|                     |j        ¦  «         | j        r+|€t          d¦  «        ‚|                     |j        ¦  «         | j        rf|j        €t          d¦  «        ‚|j        j	        r |                     |j        j	        ¦  «         n$|                     |j        j
        j        ¦  «         t          |¦  «        S )z7Builds the conversation key associated with the update.Nz2Can't build key for update without effective chat!z2Can't build key for update without effective user!z1Can't build key for update without CallbackQuery!)Úeffective_chatÚeffective_userre   r?   ÚappendÚidrf   rg   Úcallback_queryÚinline_message_idÚmessageÚ
message_idÚtuple)r=   r(   ÚchatÚuserr²   s        r2   Ú_get_keyzConversationHandler._get_keyv  sð   € àÔ$ˆØÔ$ˆà!ˆàŒ=ð 	 Øˆ|Ý"Ð#WÑXÔXÐXØ�JŠJ�t”wÑÔÐàŒ=ð 	 Øˆ|Ý"Ð#WÑXÔXÐXØ�JŠJ�t”wÑÔÐàÔð 	EØÔ$Ð,Ý"Ð#VÑWÔWÐWØÔ$Ô6ð EØ—
’
˜6Ô0ÔBÑCÔCÐCÐCà—
’
˜6Ô0Ô8ÔCÑDÔDÐDå�S‰zŒzÐr1   r±   r)   Úcontextr'   c              ƒ   ó¶   K  — 	 |ƒ d {V —†}n4# t           $ r'}t                               d|¬¦  «         Y d }~d S d }~ww xY w|                      |||||¬¦  «        S )NzTNon-blocking handler callback raised exception. Not scheduling conversation timeout.©Úexc_info)r±   r%   r(   rÉ   r'   )Ú	ExceptionrA   ÚdebugÚ_schedule_job)r=   r±   r%   r(   rÉ   r'   Úeffective_new_staterD   s           r2   Ú_schedule_job_delayedz)ConversationHandler._schedule_job_delayed‘  sŸ   è è € ð	Ø(1 / / / / / /ÐÐøÝð 	ð 	ð 	Ý�MŠMðàð ñ ô ð ð
 �4�4�4�4�4øøøøð	øøøð ×!Ò!Ø)Ø#ØØØ-ð "ñ 
ô 
ð 	
s   „ �
>—9¹>c           
      ó  — || j         k    rdS 	 |j        }|                     | j        | j        t          ||||¦  «        ¬¦  «        | j        |<   dS # t          $ r'}t           	                    d|¬¦  «         Y d}~dS d}~ww xY w)zRSchedules a job which executes :meth:`_trigger_timeout` upon conversation timeout.N)ÚdatazFailed to schedule timeout.rË   )
rC   Ú	job_queueÚrun_onceÚ_trigger_timeoutrh   r$   r[   rÍ   rA   r@   )r=   r±   r%   r(   rÉ   r'   Új_queuerD   s           r2   rÏ   z!ConversationHandler._schedule_jobª  s¾   € ð ˜œÒ Ð ØˆFð		Kà!Ô+ˆGØ29×2BÒ2BØÔ%ØÔ)Ý0Ð1AÀ6È;ÐX_Ñ`Ô`ð 3Cñ 3ô 3ˆDÔÐ.Ñ/Ð/Ð/øõ
 ð 	Kð 	Kð 	KÝ×ÒÐ;ÀcÐÑJÔJÐJÐJÐJÐJÐJÐJÐJøøøøð	Køøøs   �AA Á
BÁA>Á>Bc                 ó6  — t          |t          ¦  «        sdS |j        s|j        rdS | j        r	|j        sdS | j        r	|j        sdS | j        r	|j	        sdS |j	        r| j        r|j	        j
        sdS |                      |¦  «        }| j                             |¦  «        }d}t          |t          ¦  «        �r t                               d¦  «         |                     ¦   «         rƒ|                     ¦   «         }|j        €7|j                             ¦   «         r| j                             |d¦  «         d}n€|                      ||¦  «         | j                             |¦  «        }nO| j                             | j        g ¦  «        }|D ]*}|                     |¦  «        }|�|dur| j        |||fc S Œ+dS t                               dt7          |¦  «        t7          |¦  «        ¦  «         d}|�| j        r-| j        D ]!}	|	                     |¦  «        }|�|dur|	} nŒ"|€dS |�j|€h| j                             |g ¦  «        D ]!}
|
                     |¦  «        }|�|dur|
} n,Œ"| j        D ]!}|                     |¦  «        }|�|dur|} nŒ"dS ||||fS )a(  
        Determines whether an update should be handled by this conversation handler, and if so in
        which state the conversation currently is.

        Args:
            update (:class:`telegram.Update` | :obj:`object`): Incoming update.

        Returns:
            :obj:`bool`

        Nz&Waiting for asyncio Task to finish ...Fz'Selecting conversation %s with state %s)rv   r
   Úchannel_postÚedited_channel_postre   r½   rf   r¾   rg   rÁ   rÃ   rÈ   rP   Úgetr4   rA   rÎ   r;   rF   r6   r7   r@   Úpopr¶   rb   r`   Úcheck_updaterŽ   rd   ra   rc   )r=   r(   r²   rº   ÚcheckrE   ÚhandlersÚhandler_rx   Úentry_pointÚ	candidateÚfallbacks               r2   rÝ   z ConversationHandler.check_updateÂ  s  € õ ˜&¥&Ñ)Ô)ð 	Ø�4àÔð 	 &Ô"<ð 	Ø�4ØŒ=ð 	 Ô!6ð 	Ø�4ØŒ=ð 	 Ô!6ð 	Ø�4ØÔð 	 FÔ$9ð 	Ø�4ØÔ ð 	 T¤]ð 	¸6Ô;PÔ;Xð 	Ø�4à�mŠm˜FÑ#Ô#ˆØÔ#×'Ò'¨Ñ,Ô,ˆØ#ˆõ �e�\Ñ*Ô*ñ 	Ý�MŠMÐBÑCÔCÐCð �zŠz‰|Œ|ð Ø—m’m‘o”o�à”?Ð*¨u¬z×/CÒ/CÑ/EÔ/EÐ*ØÔ'×+Ò+¨C°Ñ6Ô6Ð6Ø �E�Eà×&Ò& s¨CÑ0Ô0Ð0Ø Ô/×3Ò3°CÑ8Ô8�E�Eð  œ;Ÿ?š?¨4¬<¸Ñ<Ô<�Ø (ð Bð B�HØ$×1Ò1°&Ñ9Ô9�EØÐ(¨U¸%Ð-?Ð-?Ø#œ|¨S°(¸EÐAÐAÐAÐAøØ�tå�ŠÐ?ÅÀSÁÄÍ3ÈuÉ:Ì:ÑVÔVÐVà&*ˆð ˆ=˜DÔ.ˆ=Ø#Ô0ð  ð  �Ø#×0Ò0°Ñ8Ô8�ØÐ$¨°eÐ);Ð);Ø)�GØ�Eøð �=Ø˜4ð Ð  Ø!œ[Ÿ_š_¨U°BÑ7Ô7ð  ð  �	Ø!×.Ò.¨vÑ6Ô6�ØÐ$¨°eÐ);Ð);Ø'�GØ�Eøð !%¤ð  ð  �HØ$×1Ò1°&Ñ9Ô9�EØÐ(¨U¸%Ð-?Ð-?Ø"*˜Ø˜øð  ˜4à�c˜7 EÐ)Ð)r1   z)Application[Any, CCT, Any, Any, Any, Any]Úcheck_resultc           
   ƒ   óè  K  — |\  }}}}d}	| j         4 ƒd{V —† | j                             |d¦  «        }
|
�|
                     ¦   «          ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   |j        t
          ur|j        }ng| j        t
          ur| j        }nQt          |j        t          ¦  «        r|j        j
        �|j        j
        j        }nt          j        |j        ¦  «        }	 |r|                     ||||¦  «        ƒ d{V —†}n7|                     |                     ||||¦  «        |d|j        › d�¬¦  «        }n # t           $ r}|j        }d}	Y d}~nd}~ww xY w| j         4 ƒd{V —† | j        r¨|j        €t)          dd¬	¦  «         n�|j        j        j        st)          d
d¬	¦  «         nlt          |t.          j        ¦  «        r9|                     |                      |||||¦  «        |d|j        › d�¬¦  «         n|                      |||||¦  «         ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   t          | j        t8          ¦  «        rh|| j        v r_|                      | j        ||¦  «         |	r't!          | j                             |¦  «        ¦  «        ‚| j                             |¦  «        S || j         k    r|                      |||¦  «         |	rt           ‚dS )aL  Send the update to the callback for the current state and BaseHandler

        Args:
            check_result: The result from :meth:`check_update`. For this handler it's a tuple of
                the conversation state, key, handler, and the handler's check result.
            update (:class:`telegram.Update`): Incoming telegram update.
            application (:class:`telegram.ext.Application`): Application that originated the
                update.
            context (:class:`telegram.ext.CallbackContext`): The context as provided by
                the application.

        FNzConversationHandler:z:handle_update:non_blocking_cb)Ú	coroutiner(   ri   TzHIgnoring `conversation_timeout` because the Application has no JobQueue.é   rs   zQIgnoring `conversation_timeout` because the Applications JobQueue is not running.z:handle_update:timeout_job)r(   ri   )!rZ   r[   rÜ   Úschedule_removalrl   r   rM   rv   Úbotr   Údefaultsr   Ú	get_valueÚhandle_updateÚcreate_taskÚ	update_idr   rº   rh   rÔ   r   Ú	schedulerÚrunningrG   rH   rÑ   rÏ   rk   r‹   r¶   rC   rÛ   r`   )r=   r(   r%   rä   rÉ   Úcurrent_stater'   rx   Úhandler_check_resultÚraise_dp_handler_stopÚtimeout_jobrl   r±   r@   s                 r2   rì   z!ConversationHandler.handle_update  sã  è è € ð& JVÑFˆÐ'¨Ð2FØ %ÐàÔ*ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/àÔ+×/Ò/Ð0@À$ÑGÔGˆKàÐ&Ø×,Ò,Ñ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð Œ=¥Ð,Ð,Ø”MˆEˆEØŒ[¥Ð,Ð,Ø”KˆEˆEÝ˜œ­Ñ0Ô0ð 	:°[´_Ô5MÐ5YØ”OÔ,Ô2ˆEˆEå Ô*¨7¬=Ñ9Ô9ˆEð	)Øð Ø*1×*?Ò*?Ø˜KÐ)=¸wñ+ô +ð %ð %ð %ð %ð %ð %�	�	ð (×3Ò3Ø%×3Ò3Ø Ð-AÀ7ñô ð "Ø`°Ô0@Ð`Ð`Ð`ð 4ñ ô �	øøõ &ð 	)ð 	)ð 	)Ø!œˆIØ$(Ð!Ð!Ð!Ð!Ð!Ð!øøøøð	)øøøð Ô*ð 	bð 	bð 	bð 	bð 	bð 	bð 	bð 	bØÔ(ð bØÔ(Ð0ÝØbØ#$ðñ ô ð ð ð %Ô.Ô8Ô@ð bÝð'à#$ðñ ô ð ð õ
   	­7¬<Ñ8Ô8ð bð  ×+Ò+Ø×2Ò2Ø% {°F¸GÐEUñô ð  &Ø`°FÔ4DÐ`Ð`Ð`ð ,ñ ô ð ð ð ×&Ò& y°+¸vÀwÐP`ÑaÔaÐað1	bð 	bð 	bñ 	bô 	bð 	bð 	bð 	bð 	bð 	bð 	bð 	bð 	bð 	bð 	bð 	bð 	bð 	bð 	bð 	bð 	bð 	bð 	bøøøð 	bð 	bð 	bð 	bõ4 �dÔ(­$Ñ/Ô/ð 	5°IÀÔASÐ4SÐ4SØ×Ò˜tœxÐ)9¸7ÑCÔCÐCØ$ð PÝ,¨TÔ-?×-CÒ-CÀIÑ-NÔ-NÑOÔOÐOØÔ%×)Ò)¨)Ñ4Ô4Ð4à˜DœLÒ(Ð(Ø×Ò˜yÐ*:¸GÑDÔDÐDà ð 	)õ )Ð(àˆts=   ™2AÁ
A'Á*A'Ã,AE Å
E"Å	EÅE"Å2B0H4È4
H>ÉH>r²   rx   c                 óš  — || j         k    r|| j        v r
| j        |= d S d S t          |t          j        ¦  «        r3t          | j                             |¦  «        |¬¦  «        | j        |<   d S |�[|| j        vrFt          |�t          |j
        j        ¦  «        nd› d|› d| j        �
d| j        z   nd› d�d¬	¦  «         || j        |<   d S d S )
Nr5   r   z returned state z, which is unknown to the ConversationHandlerÚ Ú rz   rr   rs   )rC   rP   rv   rG   rH   r4   rÛ   rb   r   ÚreprÚcallbackr*   ri   )r=   r±   r²   rx   s       r2   r¶   z!ConversationHandler._update_state�  s2  € ð ˜œÒ Ð Ø�dÔ)Ð)Ð)àÔ'¨Ð,Ð,Ð,ð *Ð)õ ˜	¥7¤<Ñ0Ô0ð 	1Ý'3ØÔ-×1Ò1°#Ñ6Ô6¸Yð(ñ (ô (ˆDÔ Ñ$Ð$Ð$ð Ð"Ø ¤Ð+Ð+ÝØ:AÐ:M•t˜GÔ,Ô5Ñ6Ô6Ð6ÐS`ð ^ð ^Ø&/ð^ð ^à=A¼YÐ=R¨#°´	©/¨/ÐXZð^ð ^ð ^ð  !ð	ñ ô ð ð (1ˆDÔ Ñ$Ð$Ð$ð #Ð"r1   c              ƒ   óö  K  — t          d|j        ¦  «        }t          d|j        ¦  «        }t                               d|j        ¦  «         |j        }| j        4 ƒd{V —† | j         	                    |j        ¦  «        }||ur	 ddd¦  «        ƒd{V —† dS | j        |j        = ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   | j
         	                    | j        g ¦  «        }|D ]m}|                     |j        ¦  «        }|�O|durK	 |                     |j        |j        ||¦  «        ƒ d{V —† ŒL# t           $ r t#          dd¬¦  «         Y Œiw xY wŒn|                      | j        |j        ¦  «         dS )	zßThis is run whenever a conversation has timed out. Also makes sure that all handlers
        which are in the :attr:`TIMEOUT` state and whose :meth:`BaseHandler.check_update` returns
        :obj:`True` is handled.
        r   r$   z7Conversation timeout was triggered for conversation %s!NFzWApplicationHandlerStop in TIMEOUT state of ConversationHandler has no effect. Ignoring.rr   rs   )r	   ÚjobrÓ   rA   rÎ   r'   r&   rZ   r[   rÛ   rb   r^   rÝ   r(   rì   r%   r   r   r¶   rC   )	r=   rÉ   rû   Úctxtr&   Ú	found_jobrß   rx   rÞ   s	            r2   rÖ   z$ConversationHandler._trigger_timeout˜  s�  è è € õ
 �5˜'œ+Ñ&Ô&ˆÝÐ1°3´8Ñ<Ô<ˆå�ŠØEÀtÔG\ñ	
ô 	
ð 	
ð  Ô0ÐàÔ*ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ØÔ)×-Ò-¨dÔ.CÑDÔDˆIØ Ð#Ð#àð		9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð
 Ô! $Ô"7Ð8ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð ”;—?’? 4¤<°Ñ4Ô4ˆØð 	ð 	ˆGØ×(Ò(¨¬Ñ5Ô5ˆEØÐ  U°%Ð%7Ð%7ð	Ø!×/Ò/Øœ TÔ%5°uÐ>Nñô ð ð ð ð ð ð ð ð øõ .ð ð ð ÝðGà#$ðñ ô ð ð ð ðøøøøð 	×Ò˜4œ8 TÔ%:Ñ;Ô;Ð;Ð;Ð;s*   Á!%B8ÂB8Â8
CÃCÄ(D7Ä7EÅEr:   )5r*   r+   r,   r-   r.   rC   r   Úintr/   r^   r`   r   rŒ   r   r
   r   rI   r‹   rJ   ÚfloatÚdtmÚ	timedeltarŽ   r   rˆ   r’   Úpropertyra   Úsetterr   rb   rc   rd   rf   re   rg   rh   ri   rj   rk   r   r   r·   rÈ   rG   rH   rÑ   rÏ   Ú_CheckUpdateTyperÝ   rì   r¶   rÖ   r0   r1   r2   r!   r!   n   s  € € € € € € ðOð Oðb€Ið& €CˆˆsŒÐÐÑØPØ€GˆU�3ŒZÐÐÑðð €GˆU�3ŒZÐÐÑð?ð $ØØØ!Ø=AØØ Ø59Ø*ðLð LØ(ðLà˜; v¨s°FÐ':Ô;Ô<ðLð �V˜T +¨f°c¸6Ð.AÔ"BÔCÐCÔDðLð ˜ F¨C°Ð$7Ô8Ô9ð	Lð
 ðLð ðLð ðLð ðLð $ c¤mÑ3°dÑ:ðLð �D‰jðLð ðLð ˜F F˜NÔ+¨dÑ2ðLð �dŒ|ðLð Lð Lð Lð\
˜#ð 
ð 
ð 
ð 
ð0 ð"˜d ;¨v°s¸FÐ/BÔ#CÔDð "ð "ð "ñ „Xð"ð Ôð
˜fð 
¨ð 
ð 
ð 
ñ Ôð
ð
 ð˜˜V T¨+°f¸cÀ6Ð6IÔ*JÔ%KÐKÔLð ð ð ñ „Xðð „]ð_˜ð _ 8ð _ð _ð _ñ „]ð_ð ð˜4 ¨F°C¸Ð,?Ô @ÔAð ð ð ñ „Xðð Ôðb˜6ð b hð bð bð bñ Ôðbð ð#˜tð #ð #ð #ñ „Xð#ð Ôð
˜vð 
¨(ð 
ð 
ð 
ñ Ôð
ð
 ð˜$ð ð ð ñ „Xðð „_ða˜&ð a Xð að að añ „_ðað ð˜$ð ð ð ñ „Xðð „_ða˜&ð a Xð að að añ „_ðað ð!˜Tð !ð !ð !ñ „Xð!ð Ôðd˜Vð d¨ð dð dð dñ Ôðdð ð*à	�”Ñ	 Ñ	%ð*ð *ð *ñ „Xð*ð Ô ð
 fð 
°ð 
ð 
ð 
ñ !Ô ð
ð
 ð�c˜D‘jð ð ð ñ „Xðð 
„[ð]�fð ] ð ]ð ]ð ]ñ „[ð]ð ð ˜Dð  ð  ð  ñ „Xð ð Ôðc˜Fð c xð cð cð cñ Ôðcð ð#˜t F¨F NÔ3°dÑ:ð #ð #ð #ñ „Xð#ð Ôð
˜vð 
¨(ð 
ð 
ð 
ñ Ôð
ð
2Ø(ð2à	ˆc�< °Ð 7Ô8Ð8Ô	9ð2ð 2ð 2ð 2ðh˜vð ¨/ð ð ð ð ð6
à”<ð
ð Fð
ð ð	
ð
 ð
ð *ð
ð 
ð
ð 
ð 
ð 
ð2KàðKð FðKð ð	Kð
 ðKð *ðKð 
ðKð Kð Kð Kð0Y* 6ð Y*Ð.>¸sÔ.CÀdÑ.Jð Y*ð Y*ð Y*ð Y*ðvbàðbð Aðbð ' sÔ+ð	bð
 ðbð 
�$‰ðbð bð bð bðJ VZð1ð 1Øð1Ø&5ð1Ø@KÈdÑ@Rð1à	ð1ð 1ð 1ð 1ð.%<¨cð %<°dð %<ð %<ð %<ð %<ð %<ð %<r1   )>r-   rG   Údatetimer   Údataclassesr   Útypingr   r   r   r   r   r	   Útelegramr
   Útelegram._utils.defaultvaluer   r   Útelegram._utils.loggingr   Útelegram._utils.reprr   Útelegram._utils.typesr   Útelegram._utils.warningsr   Útelegram.ext._applicationr   Útelegram.ext._extbotr   Ú"telegram.ext._handlers.basehandlerr   Ú+telegram.ext._handlers.callbackqueryhandlerr   Ú0telegram.ext._handlers.choseninlineresulthandlerr   Ú)telegram.ext._handlers.inlinequeryhandlerr   Ú+telegram.ext._handlers.stringcommandhandlerr   Ú)telegram.ext._handlers.stringregexhandlerr   Ú"telegram.ext._handlers.typehandlerr   Ú telegram.ext._utils.trackingdictr   Útelegram.ext._utils.typesr   r   r   r{   r   r   r    rÅ   rI   r  r*   rA   r$   r4   r!   r0   r1   r2   ú<module>r     s½  ðð& 4Ð 3à €€€Ø Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eà Ð Ð Ð Ð Ð Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ .Ð .Ð .Ð .Ð .Ð .Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø (Ð (Ð (Ð (Ð (Ð (Ø )Ð )Ð )Ð )Ð )Ð )Ø <Ð <Ð <Ð <Ð <Ð <Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø :Ð :Ð :Ð :Ð :Ð :Ø LÐ LÐ LÐ LÐ LÐ LØ VÐ VÐ VÐ VÐ VÐ VØ HÐ HÐ HÐ HÐ HÐ HØ LÐ LÐ LÐ LÐ LÐ LØ HÐ HÐ HÐ HÐ HÐ HØ :Ð :Ð :Ð :Ð :Ð :Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ Làð 8Ø7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ø˜ °+¸fÀcÈ6Ð>QÔ2RÐTZÐZÔ[Ð à
ˆ*�XÐ*?Ð
@Ñ
@Ô
@€ð ð
ð 
ð 
ð 
ð 
 '¨#¤,ñ 
ô 
ñ „ð
ð ð)ð )ð )ð )ð )ñ )ô )ñ „ð)ðXO<ð O<ð O<ð O<ð O<˜+ f¨c°6Ð&9Ô:ñ O<ô O<ð O<ð O<ð O<r1   