Ë
    V.jR' ã                  ó˜  — d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZmZ d dlmZ d dlmZmZmZmZ d dlm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 m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=m>Z> ddl?m@Z@mAZAmBZB ddlCmDZD ddgZEe3ZFejŽ                  ZGeGdz   ZH G d„ de«      ZI G d„ d«      ZJe	eFgeJf   ZK edeK¬«      ZL	 	 	 	 d*d „ZMe	eFeJgdf   ZN ed!eN¬«      ZO	 	 	 	 d+d"„ZPed,d#„«       ZQed,d$„«       ZRed,d%„«       ZSed,d&„«       ZTed,d'„«       ZUd-d(„ZVd-d)„ZWy).é    )ÚannotationsN)ÚEnum)Ú
accumulate)ÚCallableÚIterableÚTupleÚTypeVar)Úget_app)ÚBufferÚindentÚreshape_textÚunindent)ÚClipboardData)ÚDocument)ÚAlwaysÚ	ConditionÚFilterÚhas_argÚis_read_onlyÚis_searching)Úin_paste_modeÚis_multilineÚvi_digraph_modeÚvi_insert_modeÚvi_insert_multiple_modeÚvi_modeÚvi_navigation_modeÚvi_recording_macroÚvi_replace_modeÚvi_replace_single_modeÚvi_search_direction_reversedÚvi_selection_modeÚvi_waiting_for_text_object_mode)ÚVt100Parser)ÚDIGRAPHS)ÚKeyPressÚKeyPressEvent)ÚCharacterFindÚ	InputMode)ÚKeys)ÚSearchDirection)Ú	PasteModeÚSelectionStateÚSelectionTypeé   )ÚConditionalKeyBindingsÚKeyBindingsÚKeyBindingsBaseé   )Úget_by_nameÚload_vi_bindingsÚload_vi_search_bindingsÚ
0123456789c                  ó   — e Zd ZdZdZdZdZy)ÚTextObjectTypeÚ	EXCLUSIVEÚ	INCLUSIVEÚLINEWISEÚBLOCKN)Ú__name__Ú
__module__Ú__qualname__r:   r;   r<   r=   © ó    úhC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\prompt_toolkit/key_binding/bindings/vi.pyr9   r9   <   s   „ Ø€IØ€IØ€HØ�ErB   r9   c                  ón   — e Zd ZdZdej
                  f	 	 	 	 	 d
d„Zedd„«       Zdd„Z	dd„Z
dd„Zdd„Zy	)Ú
TextObjectz‰
    Return struct for functions wrapped in ``text_object``.
    Both `start` and `end` are relative to the current cursor position.
    r   c                ó.   — || _         || _        || _        y ©N)ÚstartÚendÚtype)ÚselfrH   rI   rJ   s       rC   Ú__init__zTextObject.__init__I   s   € ð ˆŒ
ØˆŒØˆ�	rB   c                óÖ   — | j                   t        j                  k(  rt        j                  S | j                   t        j
                  k(  rt        j
                  S t        j                  S rG   )rJ   r9   r<   r.   ÚLINESr=   Ú
CHARACTERS©rK   s    rC   Úselection_typezTextObject.selection_typeP   sJ   € à�9‰9œ×/Ñ/Ò/Ü ×&Ñ&Ð&Ø�9‰9œ×,Ñ,Ò,Ü ×&Ñ&Ð&ä ×+Ñ+Ð+rB   c                ó”   — | j                   | j                  k  r| j                   | j                  fS | j                  | j                   fS )zA
        Return a (start, end) tuple where start <= end.
        )rH   rI   rP   s    rC   ÚsortedzTextObject.sortedY   s:   € ð �:‰:˜Ÿ™Ò Ø—:‘:˜tŸx™xÐ'Ð'à—8‘8˜TŸZ™ZÐ'Ð'rB   c                ój  — | j                  «       \  }}|}| j                  t        j                  k(  r)|j	                  ||j
                  z   «      d   dk(  r|dz  }| j                  t        j                  k(  r|dz  }| j                  t        j                  k(  r–|j	                  ||j
                  z   «      \  }}|j                  |d«      |j
                  z
  }|j	                  ||j
                  z   «      \  }}|j                  |t        |j                  |   «      «      |j
                  z
  }||fS )a2  
        Return a (start, end) tuple with start <= end that indicates the range
        operators should operate on.
        `buffer` is used to get start and end of line positions.

        This should return something that can be used in a slice, so the `end`
        position is *not* included.
        r3   r   )rS   rJ   r9   r:   Útranslate_index_to_positionÚcursor_positionr;   r<   Útranslate_row_col_to_indexÚlenÚlines)rK   ÚdocumentrH   rI   ÚdocÚrowÚcols          rC   Úoperator_rangezTextObject.operator_rangeb   s  € ð —[‘[“]‰
ˆˆsØˆð �I‰Iœ×1Ñ1Ò1Ø×/Ñ/°°c×6IÑ6IÑ0IÓJÈ1ÑMÐQRÒRð �1‰HˆCØ�9‰9œ×0Ñ0Ò0Ø�1‰HˆCØ�9‰9œ×/Ñ/Ò/à×6Ñ6°u¸s×?RÑ?RÑ7RÓS‰HˆC�Ø×2Ñ2°3¸Ó:¸S×=PÑ=PÑPˆEØ×6Ñ6°s¸S×=PÑ=PÑ7PÓQ‰HˆC�à×.Ñ.¨s´C¸¿	¹	À#¹Ó4GÓHØ×%Ñ%ñ&ð ð �cˆzÐrB   c                óú   — | j                  |j                  «      \  }}||j                  z  }||j                  z  }|j                  j                  |«      \  }}|j                  j                  |«      \  }}||fS )z7
        Return a (start_line, end_line) pair.
        )r^   rZ   rV   rU   )rK   ÚbufferÚfrom_ÚtoÚ_s        rC   Úget_line_numberszTextObject.get_line_numbers‚   sx   € ð
 ×'Ñ'¨¯©Ó8‰	ˆˆrØ�×'Ñ'Ñ'ˆØ
ˆf×$Ñ$Ñ$ˆð —?‘?×>Ñ>¸uÓE‰ˆˆqØ—‘×;Ñ;¸BÓ?‰ˆˆAà�bˆyÐrB   c                óD  — | j                  |j                  «      \  }}||j                  z  }||j                  z  }| j                  t        j
                  k7  r|dz  }t        |j                  |t        || j                  ¬«      «      }|j                  «       \  }}||fS )zA
        Turn text object into `ClipboardData` instance.
        r3   )Úoriginal_cursor_positionrJ   )r^   rZ   rV   rJ   r9   r<   r   Útextr-   rQ   Úcut_selection)rK   r`   ra   rb   rZ   Únew_documentÚclipboard_datas          rC   ÚcutzTextObject.cut‘   s�   € ð ×'Ñ'¨¯©Ó8‰	ˆˆrà�×'Ñ'Ñ'ˆØ
ˆf×$Ñ$Ñ$ˆð �9‰9œ×/Ñ/Ò/Ø�!‰GˆBäØ�K‰KØÜ°EÀ×@SÑ@SÔTó
ˆð (0×'=Ñ'=Ó'?Ñ$ˆ�nØ˜^Ð+Ð+rB   N)rH   ÚintrI   rl   rJ   r9   )Úreturnr.   )rm   útuple[int, int])rZ   r   rm   rn   )r`   r   rm   rn   )r`   r   rm   ztuple[Document, ClipboardData])r>   r?   r@   Ú__doc__r9   r:   rL   ÚpropertyrQ   rS   r^   rd   rk   rA   rB   rC   rE   rE   C   sZ   „ ñð &'¸~×?WÑ?WðØðØ"ðØ.<óð ò,ó ð,ó(óó@ô,rB   rE   Ú_TOF)Úboundc                óF   ‡ — t        «       ddddœ	 	 	 	 	 	 	 	 	 	 	 dˆ fd„}|S )zY
    Create a decorator that can be used to register Vi text object implementations.
    F)ÚfilterÚno_move_handlerÚno_selection_handlerÚeagerc                ó(   •‡ ‡‡‡‡— dˆˆ ˆˆˆˆfd„}|S )a‚  
        Register a text object function.

        Usage::

            @text_object('w', filter=..., no_move_handler=False)
            def handler(event):
                # Return a text object for this key.
                return TextObject(...)

        :param no_move_handler: Disable the move handler in navigation mode.
            (It's still active in selection mode.)
        c                ó  •‡ —  ‰j                   ‰t        ‰z  ‰dœŽdˆ fd„«       }‰s+ ‰j                   ‰t         ‰z  t        z  ‰dœŽdˆ fd„«       }‰	s+ ‰j                   ‰t         ‰z  t        z  ‰dœŽdˆ fd„«       }‰ S )N©rt   rw   c                ó>  •— | j                   j                  }t        |j                  xs d| j                  xs dz  «      | _         ‰| «      }|j                  }|�|�	 || |«       d | j                   j                  _        d | j                   j                  _        y ©Nr3   )ÚappÚvi_stateÚstrÚoperator_argÚargÚ_argÚoperator_func)Úeventr~   Útext_objrƒ   Útext_object_funcs       €rC   Ú_apply_operator_to_text_objectzvcreate_text_object_decorator.<locals>.text_object_decorator.<locals>.decorator.<locals>._apply_operator_to_text_objectÍ   sŒ   ø€ ð
 !Ÿ9™9×-Ñ-�Ü  (×"7Ñ"7Ò"<¸1ÀÇÁÂÈaÑ!PÓQ�”
ñ ,¨EÓ2�ð
 !)× 6Ñ 6�àÐ'¨MÐ,Eá! %¨Ô2ð 48�—	‘	×"Ñ"Ô0Ø26�—	‘	×"Ñ"Õ/rB   c                óh   •—  ‰| «      }| j                   xj                  |j                  z  c_        y)zK
                    Move handler for navigation mode.
                    N)Úcurrent_bufferrV   rH   )r„   Útext_objectr†   s     €rC   Ú_move_in_navigation_modezpcreate_text_object_decorator.<locals>.text_object_decorator.<locals>.decorator.<locals>._move_in_navigation_modeè   s,   ø€ ñ #3°5Ó"9�KØ×(Ñ(×8Ò8¸K×<MÑ<MÑMÖ8rB   c                óÜ  •—  ‰| «      }| j                   }|j                  }|€y|j                  r“|j                  |j                  «      \  }}||j
                  z  }||j
                  z  }||_        ||_        |j                  t        j                  k(  rt        j                  |_        yt        j                  |_        y| j                   xj
                  |j                  z  c_        y)zJ
                    Move handler for selection mode.
                    N)r‰   Úselection_staterI   r^   rZ   rV   rf   rJ   r9   r<   r.   rN   rO   rH   )r„   rŠ   Úbuffr�   rH   rI   r†   s         €rC   Ú_move_in_selection_modezocreate_text_object_decorator.<locals>.text_object_decorator.<locals>.decorator.<locals>._move_in_selection_modeù   sÎ   ø€ ñ #3°5Ó"9�KØ ×/Ñ/�DØ&*×&:Ñ&:�Oà&Ð.Øð #—’à%0×%?Ñ%?ÀÇÁÓ%N™
˜˜sØ ×!5Ñ!5Ñ5˜Ø˜t×3Ñ3Ñ3˜àCH˜Ô@Ø/2˜Ô,ð '×+Ñ+¬~×/FÑ/FÒFÜ3@×3FÑ3F˜OÕ0ä3@×3KÑ3K˜OÕ0à×,Ñ,×<Ò<À×@QÑ@QÑQÖ<rB   ©r„   ÚErm   ÚNone©Úaddr#   r   r"   )
r†   r‡   r‹   r�   rw   rt   Úkey_bindingsÚkeysru   rv   s
   `   €€€€€€rC   Ú	decoratorzNcreate_text_object_decorator.<locals>.text_object_decorator.<locals>.decoratorÌ   s¿   ù€ Øˆ\×ÑØÔ=ÀÑFÈeòô7óð7ñ, #à!�×!Ñ!ØÜ;Ð;Øñä(ñ)ð  òôNóðNñ (à!�×!Ñ!ØÜ;Ð;Øñä'ñ(ð  òôRóðRð> $Ð#rB   )r†   rq   rm   rq   rA   )rt   ru   rv   rw   r–   r—   r•   s   ````` €rC   Útext_object_decoratorz;create_text_object_decorator.<locals>.text_object_decorator·   s   ý€ ÷*S	$ò S	$ðj ÐrB   )r–   ú
Keys | strrt   r   ru   Úboolrv   rš   rw   rš   rm   zCallable[[_TOF], _TOF]©r   )r•   r˜   s   ` rC   Úcreate_text_object_decoratorrœ   °   s`   ø€ ô  ›Ø %Ø%*ØñjØðjàðjð ðjð #ð	jð
 ðjð 
 õjðX !Ð rB   Ú_OFc                ó:   ‡ — t        «       ddœ	 	 	 	 	 	 	 dˆ fd„}|S )zK
    Create a decorator that can be used for registering Vi operators.
    Frz   c                ó    •‡ ‡‡— dˆˆ ˆˆfd„}|S )zÉ
        Register a Vi operator.

        Usage::

            @operator('d', filter=...)
            def handler(event, text_object):
                # Do something with the text object here.
        c                ó¶   •‡ —  ‰j                   ‰t         ‰z  t        z  ‰dœŽdˆ fd„«       } ‰j                   ‰t         ‰z  t        z  ‰dœŽdˆ fd„«       }‰ S )Nrz   c                ó†   •— ‰| j                   j                  _        | j                  | j                   j                  _        y)zE
                Handle operator in navigation mode.
                N)r}   r~   rƒ   r�   r€   )r„   rƒ   s    €rC   Ú_operator_in_navigationzicreate_operator_decorator.<locals>.operator_decorator.<locals>.decorator.<locals>._operator_in_navigation@  s.   ø€ ð 4A�—	‘	×"Ñ"Ô0Ø27·)±)�—	‘	×"Ñ"Õ/rB   c                ó|  •— | j                   }|j                  }|�¡|j                  t        j                  k(  rt
        j                  }n>|j                  t        j                  k(  rt
        j                  }nt
        j                  }t        |j                  |j                  z
  |¬«      } ‰| |«       d|_        yy)zD
                Handle operator in selection mode.
                N©rJ   )r‰   r�   rJ   r.   rN   r9   r<   r=   r;   rE   rf   rV   )r„   rŽ   r�   Útext_obj_typerŠ   rƒ   s        €rC   Ú_operator_in_selectionzhcreate_operator_decorator.<locals>.operator_decorator.<locals>.decorator.<locals>._operator_in_selectionO  s¦   ø€ ð ×+Ñ+�Ø"&×"6Ñ"6�à"Ð.à&×+Ñ+¬}×/BÑ/BÒBÜ(6×(?Ñ(?™Ø(×-Ñ-´×1DÑ1DÒDÜ(6×(<Ñ(<™ä(6×(@Ñ(@˜ä",Ø'×@Ñ@À4×CWÑCWÑWØ*ô#�Kñ " %¨Ô5ð ,0�DÕ(ð% /rB   r�   r“   )rƒ   r¢   r¦   rw   rt   r•   r–   s   `  €€€€rC   r—   zHcreate_operator_decorator.<locals>.operator_decorator.<locals>.decorator?  sy   ù€ Øˆ\×ÑØÜ7Ð7¸&Ñ@ÔCUÑUØòô
<óð
<ð ˆ\×ÑØÜ7Ð7¸&Ñ@ÔCTÑTØòô
0óð
0ð6 !Ð rB   )rƒ   r�   rm   r�   rA   )rt   rw   r–   r—   r•   s   ``` €rC   Úoperator_decoratorz5create_operator_decorator.<locals>.operator_decorator2  s   û€ ÷0	!ð 0	!ðd ÐrB   )r–   r™   rt   r   rw   rš   rm   zCallable[[_OF], _OF]r›   )r•   r§   s   ` rC   Úcreate_operator_decoratorr¨   +  s:   ø€ ô -3«HÀEñ?Øð?Ø#)ð?Ø=Að?à	õ?ðB ÐrB   c                 ó>   — t        «       j                  j                  S rG   )r
   r‰   Úis_returnablerA   rB   rC   rª   rª   v  s   € ä‹9×#Ñ#×1Ñ1Ð1rB   c                 ó¦   — t        «       j                  } t        | j                  xr' | j                  j                  t
        j                  k(  «      S rG   )r
   r‰   rš   r�   rJ   r.   r=   )rŽ   s    rC   Úin_block_selectionr¬   {  sA   € ä‹9×#Ñ#€DÜØ×ÑÒQ ×!5Ñ!5×!:Ñ!:¼m×>QÑ>QÑ!Qóð rB   c                 óB   — t        «       j                  j                  d uS rG   )r
   r~   Údigraph_symbol1rA   rB   rC   Údigraph_symbol_1_givenr¯   ƒ  s   € ä‹9×Ñ×-Ñ-°TÐ9Ð9rB   c                 óD   — t        «       j                  j                  dk(  S )z-Returns True when the search buffer is empty.Ú )r
   r‰   rg   rA   rB   rC   Úsearch_buffer_is_emptyr²   ˆ  s   € ô ‹9×#Ñ#×(Ñ(¨BÑ.Ð.rB   c                 ó>   — t        «       j                  j                  S rG   )r
   r~   Útilde_operatorrA   rB   rC   r´   r´   Ž  s   € ä‹9×Ñ×,Ñ,Ð,rB   c                 ó|  ‡�‡‘‡’— t        «       } | j                  }t        t        t        df   t        t
        t        gt        f   f   }dt        «       d„ fdt        «       d„ fdt        «       d„ fdt        «       d	„ fd
t        d„ fg}  |dt        ¬«      t        d«      «        |d«      dûd„«       } |dt        ¬«      dûd„«       } |dt        ¬«      dûd„«       } |dt        ¬«       |dt        ¬«      dûd„«       «       } |dt        ¬«      dûd„«       } |dt        ¬«       |dt        ¬«      dûd„«       «       }	 |dt        ¬«      dûd„«       }
 |dt        ¬«      dûd„«       } |dt        ¬«      dûd „«       } |dt        ¬«      dûd!„«       } |d"t        ¬«       |d#t        ¬«      dûd$„«       «       } |d%t        ¬«      dûd&„«       }  |d't        t        z  ¬«      t        d(«      «         |d't        t         z  ¬«      t        d(«      «        |d't         t        z  ¬«      dûd)„«       } |d*t        ¬«      dûd+„«       } |d*t        ¬«      dûd,„«       } |d-t        t         z  ¬«      dûd.„«       } |d/t        t         z  ¬«      dûd0„«       } |d1t        t         z  ¬«      dûd2„«       } |d3d3t        t         z  ¬«       |d4t        t         z  ¬«      dûd5„«       «       } |d6t        ¬«      dûd7„«       } |d8d8t        ¬«      dûd9„«       } |d:t        ¬«      dûd;„«       } |d<t        t         z  ¬«      dûd=„«       } |d>t        t         z  ¬«      dûd?„«       } |d>t        t         z  ¬«      düdýdA„«       Š� |d/t        t         z  ¬«      dûˆ�fdB„«       } |dCt        t         z  ¬«      dûdD„«       } |dEdCt        t         z  ¬«      dûdF„«       } |dCt        t         z  ¬«      dûdG„«       } |dEdCt        t         z  ¬«      dûdH„«       }  |dIt        ¬«      dûdJ„«       }! |dKt        ¬«      dûdL„«       }" |dMt         j"                  dIt        ¬«      dûdN„«       }# |dMt         j"                  dKt        ¬«      dûdO„«       }$ |dPt        ¬«      dûdQ„«       }% |dRt        ¬«      dûdS„«       }& |dTt        t         z  ¬«      dûdU„«       }' |dVt        dW„ ¬X«      dûdY„«       }( |dZt        ¬«      dûd[„«       }) |dt        ¬«      dûd\„«       }* |dZt        ¬«      dûd]„«       }+ |d^t        ¬«      dûd_„«       }, |d^t        ¬«      dûd`„«       }- |dt        ¬«      dûda„«       }. |d-dbt        ¬«       |d-dct        ¬«      dûdd„«       «       }/ |d:t        ¬«      dûde„«       }0 |dft        ¬«      dûdg„«       }1 |dhdht        ¬«       |dit        ¬«      dûdj„«       «       }2 |dkt        ¬«      dûdl„«       }3 |dmt        ¬«      dûdn„«       }4 |dodot        ¬«       |dpt        ¬«      dûdq„«       «       }5 |drdrt        ¬«       |dst        ¬«      dûdt„«       «       }6 |dut        t         z  ¬«      dûdv„«       }7 |dwt        t         z  ¬«      dûdx„«       }8 |dyt        ¬«      dûdz„«       }9 |dEdVdVt        t         z  ¬«      dûd{„«       }: |dEd|d|t        t         z  ¬«      dûd}„«       }; |dEdydyt        t         z  ¬«      dûd~„«       }< |dt        ¬«      dûd€„«       }= |d�t        ¬«      dûd‚„«       }> |dƒt        ¬«      dûd„„«       }? |d…t        ¬«      dûd†„«       }@t%        | «      Š‘t'        | «      Š’ |t         j"                  t(        ¬«      dûd‡„«       }A	 dü	 	 	 	 	 dþˆ‘fdˆ„}B |Bd@d@«        |Bd@d‰«        |Bd‰d@«        |Bd‰d‰«       	 	 	 	 	 	 	 	 dÿˆ‘fdŠ„}C|D ]  \  }D}E}F C|E|Fg|D¢­Ž  Œ  ‰‘dh«      �d d‹„«       }G ‰‘dMt         j"                  dh«      �d dŒ„«       }H ‰‘do«      �d d�„«       }I ‰‘dr«      �d dŽ„«       }J ‰‘dEd�«      �d d�„«       }K ‰’d‘«      �dd’„«       }L ‰’d“«      �dd”„«       }M ‰’d•«      �dd–„«       }N ‰’db«      �dd—„«       }O ‰’dc«      �dd˜„«       }P ‰’d™«      �ddš„«       }Q ‰’d«      �dd›„«       }R ‰’d<dbd‰¬œ«      �dd�„«       }S ‰’d-dbd‰¬œ«      �ddž„«       }T ‰’d<dcd‰¬œ«      �ddŸ„«       }U ‰’d-dcd‰¬œ«      �dd „«       }V ‰’d-dId‰¬œ«      �dd¡„«       }W ‰’d¢«      �dd£„«       }X ‰’d¤«      �dd¥„«       }Y	 �d	 	 	 	 	 	 	 	 	 �dˆ’fd¦„}Zd§D ],  }[d¨D ]  \  }\}] Z|\|][«       Œ  Zdƒd…[d‘«        |Zd©dª|[d“«       Œ.  ‰’d©«      �dd«„«       }^ ‰’dª«      �dd¬„«       }_ ‰’d­t         j"                  «      �dd®„«       }` ‰’d¯t         j"                  «      �dd°„«       }a ‰’d±t         j"                  «      �dd²„«       }b ‰’d³t         j"                  «      �dd´„«       }c�dˆ’fdµ„}d |dd‰«        |dd@«        ‰’d¶«       ‰’d·«      �dd¸„«       «       }e ‰’dd‰d‰¬¹«      �ddº„«       }f ‰’dd‰d‰¬¹«      �dd»„«       }g ‰’d¼«       ‰’d½«       ‰’d¾«      �dd¿„«       «       «       }h ‰’dÀ«      �ddÁ„«       }i ‰’dÂ«      �ddÃ„«       }j ‰’dÄ«      �ddÅ„«       }k ‰’dÆd‰¬œ«      �ddÇ„«       }l |dÆt        ¬«      dûdÈ„«       }m ‰’dÉd‰¬œ«      �ddÊ„«       }n |dÉt        ¬«      dûdË„«       }o |dÌdkt        t        z  ¬«       |dÌd±t        t        z  ¬«       |dÌd't        t        z  ¬«      dûdÍ„«       «       «       }p |dÌdmt        t        z  ¬«       |dÌd‘t        t        z  ¬«      dûdÎ„«       «       }q |dÌdÌt        t        z  ¬«      dûdÏ„«       }r ‰’dÐ«      �ddÑ„«       }s ‰’dÒ«      �ddÓ„«       }t ‰’dEdE«      �ddÔ„«       }u ‰’dEdÕ«      �ddÖ„«       }v ‰’dEd™«      �dd×„«       }w ‰’dEd«      �ddØ„«       }x ‰’dEdÙ«      �ddÚ„«       }y ‰’dÛ«      �ddÜ„«       }z |dÛt*        ¬«      dûdÝ„«       }{dÞD ]%  }| |||t        t        z  t(        z  ¬«      dûdß„«       }}Œ'  |d¤t        t        z  t(        z  t*        z  ¬«      dûdà„«       }~ |t         j"                  t,        ¬«      dûdá„«       } |t         j"                  t.        ¬«      dûdâ„«       }€ |t         j"                  t0        dã„ ¬X«      dûdä„«       }� |dt0        ¬«      dûdå„«       }‚ |dæt0        ¬«      dûdç„«       }ƒ |d·t0        ¬«      dûdè„«       }„ |d¾t0        ¬«      dûdé„«       }… |dt0        ¬«       |dt0        ¬«      dûdê„«       «       }† |dëdìt        ¬«      dûdí„«       }‡ |dëdît        ¬«      dûdï„«       }ˆ |dðt        t,        z  ¬«      dûdñ„«       }‰ |t         j"                  t2        t4         z  ¬«      dûdò„«       }Š |t         j"                  t2        t4        z  ¬«      dûdó„«       }‹ |dôt        t,        z  ¬«      dûdõ„«       }Œ |d�t         j"                  t        t6         z  ¬«      dûdö„«       }� |d�t        t6        z  ¬«      dûd÷„«       }Ž |døt         j"                  t        d@¬ù«      dûdú„«       }�t9        | t:        «      S (  z�
    Vi extensions.

    # Overview of Readline Vi commands:
    # http://www.catonmat.net/download/bash-vi-editing-mode-cheat-sheet.pdf
    .)ÚgÚ?c                ó.   — t        j                  | d«      S )NÚrot_13)ÚcodecsÚencode©Ústrings    rC   Ú<lambda>z"load_vi_bindings.<locals>.<lambda>°  s   € œ6Ÿ=™=¨°Ô:rB   )r¶   Úuc                ó$   —  | j                   «       S rG   ©Úlowerr¼   s    rC   r¾   z"load_vi_bindings.<locals>.<lambda>³  ó   € ¨l¨f¯l©l¬nrB   )r¶   ÚUc                ó$   —  | j                   «       S rG   ©Úupperr¼   s    rC   r¾   z"load_vi_bindings.<locals>.<lambda>µ  rÃ   rB   )r¶   Ú~c                ó$   —  | j                   «       S rG   ©Úswapcaser¼   s    rC   r¾   z"load_vi_bindings.<locals>.<lambda>·  s   € ¨o¨f¯o©oÔ.?rB   )rÈ   c                ó$   —  | j                   «       S rG   rÊ   r¼   s    rC   r¾   z"load_vi_bindings.<locals>.<lambda>»  s   € ˜?˜6Ÿ?™?Ô,rB   zc-v©rt   zquoted-insertÚescaper‘   c                óp  — | j                   }| j                  j                  }|j                  t        j
                  t        j                  fv r-|xj                  |j                  j                  «       z  c_        t        j                  |_        t        |j                  «      r|j                  «        yy)z4
        Escape goes to vi navigation mode.
        N)r‰   r}   r~   Ú
input_moder)   ÚINSERTÚREPLACErV   rZ   Úget_cursor_left_positionÚ
NAVIGATIONrš   r�   Úexit_selection)r„   r`   r~   s      rC   Ú_back_to_navigationz-load_vi_bindings.<locals>._back_to_navigationÂ  sˆ   € ð
 ×%Ñ%ˆØ—9‘9×%Ñ%ˆà×Ñ¤9×#3Ñ#3´Y×5FÑ5FÐ"GÑGØ×"Ò" f§o¡o×&NÑ&NÓ&PÑPÕ"ä'×2Ñ2ˆÔä�×&Ñ&Ô'Ø×!Ñ!Õ#ð (rB   Úkc                óP   — | j                   j                  | j                  ¬«       y)z-
        Arrow up in selection mode.
        ©ÚcountN)r‰   Ú	cursor_upr�   ©r„   s    rC   Ú_up_in_selectionz*load_vi_bindings.<locals>._up_in_selectionÒ  s   € ð
 	×Ñ×&Ñ&¨U¯Y©YÐ&Õ7rB   Újc                óP   — | j                   j                  | j                  ¬«       y)z/
        Arrow down in selection mode.
        rÙ   N)r‰   Úcursor_downr�   rÜ   s    rC   Ú_down_in_selectionz,load_vi_bindings.<locals>._down_in_selectionÙ  s   € ð
 	×Ñ×(Ñ(¨u¯y©yÐ(Õ9rB   Úupzc-pc                óP   — | j                   j                  | j                  ¬«       y)zA
        Arrow up and ControlP in navigation mode go up.
        rÙ   N©r‰   Úauto_upr�   rÜ   s    rC   Ú_up_in_navigationz+load_vi_bindings.<locals>._up_in_navigationà  s   € ð 	×Ñ×$Ñ$¨5¯9©9Ð$Õ5rB   c                óR   — | j                   j                  | j                  d¬«       y)zd
        Go up, but if we enter a new history entry, move to the start of the
        line.
        T©rÚ   Ú&go_to_start_of_line_if_history_changesNrä   rÜ   s    rC   Ú_go_upz load_vi_bindings.<locals>._go_upè  s&   € ð 	×Ñ×$Ñ$Ø—)‘)ÀDð 	%õ 	
rB   Údownzc-nc                óP   — | j                   j                  | j                  ¬«       y)z>
        Arrow down and Control-N in navigation mode.
        rÙ   N©r‰   Ú	auto_downr�   rÜ   s    rC   Ú_go_downz"load_vi_bindings.<locals>._go_downò  s   € ð 	×Ñ×&Ñ&¨U¯Y©YÐ&Õ7rB   c                óR   — | j                   j                  | j                  d¬«       y)z\
        Go down, but if we enter a new history entry, go to the start of the line.
        Trè   Nrí   rÜ   s    rC   Ú	_go_down2z#load_vi_bindings.<locals>._go_down2ú  s&   € ð
 	×Ñ×&Ñ&Ø—)‘)ÀDð 	'õ 	
rB   Ú	backspacec                óž   — | j                   xj                  | j                   j                  j                  | j                  ¬«      z  c_        y)z2
        In navigation-mode, move cursor.
        rÙ   N)r‰   rV   rZ   rÓ   r�   rÜ   s    rC   Ú_go_leftz"load_vi_bindings.<locals>._go_left  s<   € ð
 	×Ñ×,Ò,Ø× Ñ ×)Ñ)×BÑBÈÏÉÐBÓSñ	
Ö,rB   c                óz   — | j                   }|j                  r|j                  «        y |j                  d¬«       y )NT)Úselect_first)r‰   Úcomplete_stateÚcomplete_nextÚstart_completion©r„   Úbs     rC   Ú_complete_nextz(load_vi_bindings.<locals>._complete_next  s1   € à× Ñ ˆà×ÒØ�O‰OÕà×Ñ¨DÐÕ1rB   c                óz   — | j                   }|j                  r|j                  «        y|j                  d¬«       y)z4
        Control-P: To previous completion.
        T)Úselect_lastN)r‰   r÷   Úcomplete_previousrù   rú   s     rC   Ú_complete_prevz(load_vi_bindings.<locals>._complete_prev  s5   € ð
 × Ñ ˆà×ÒØ×ÑÕ!à×Ñ¨4ÐÕ0rB   úc-gzc-yc                ó&   — d| j                   _        y)z,
        Accept current completion.
        N)r‰   r÷   rÜ   s    rC   Ú_accept_completionz,load_vi_bindings.<locals>._accept_completion!  s   € ð /3ˆ×ÑÕ+rB   zc-ec                ó8   — | j                   j                  «        y)zF
        Cancel completion. Go back to originally typed text.
        N)r‰   Úcancel_completionrÜ   s    rC   Ú_cancel_completionz,load_vi_bindings.<locals>._cancel_completion)  s   € ð
 	×Ñ×.Ñ.Õ0rB   Úenterzaccept-linec                ó²   — | j                   }|j                  | j                  ¬«       |xj                  |j                  j                  d¬«      z  c_        y)z3
        Go to the beginning of next line.
        rÙ   T©Úafter_whitespaceN)r‰   rà   r�   rV   rZ   Úget_start_of_line_positionrú   s     rC   Ú_start_of_next_linez-load_vi_bindings.<locals>._start_of_next_line9  sL   € ð
 × Ñ ˆØ	�‰˜EŸI™IˆÔ&Ø	×Ò˜QŸZ™Z×BÑBØ!ð Có 
ñ 	
ÖrB   Úinsertc                óV   — t         j                  | j                  j                  _        y©z*
        Pressing the Insert key.
        N©r)   rÑ   r}   r~   rÐ   rÜ   s    rC   Ú_insert_modez&load_vi_bindings.<locals>._insert_modeH  s   € ô
 )2×(8Ñ(8ˆ�	‰	×ÑÕ%rB   c                óV   — t         j                  | j                  j                  _        yr  )r)   rÔ   r}   r~   rÐ   rÜ   s    rC   Ú_navigation_modez*load_vi_bindings.<locals>._navigation_modeO  s   € ô
 )2×(<Ñ(<ˆ�	‰	×ÑÕ%rB   Úac                óØ   — | j                   xj                  | j                   j                  j                  «       z  c_        t        j
                  | j                  j                  _        y rG   )	r‰   rV   rZ   Úget_cursor_right_positionr)   rÑ   r}   r~   rÐ   rÜ   s    rC   Ú_azload_vi_bindings.<locals>._aV  sM   € ð 	×Ñ×,Ò,Ø× Ñ ×)Ñ)×CÑCÓEñ	
Õ,ô )2×(8Ñ(8ˆ�	‰	×ÑÕ%rB   ÚAc                óØ   — | j                   xj                  | j                   j                  j                  «       z  c_        t        j
                  | j                  j                  _        y rG   )	r‰   rV   rZ   Úget_end_of_line_positionr)   rÑ   r}   r~   rÐ   rÜ   s    rC   Ú_Azload_vi_bindings.<locals>._A_  sK   € à×Ñ×,Ò,Ø× Ñ ×)Ñ)×BÑBÓDñ	
Õ,ô )2×(8Ñ(8ˆ�	‰	×ÑÕ%rB   ÚCc                ó  — | j                   }|j                  |j                  j                  «       ¬«      }| j                  j
                  j                  |«       t        j                  | j                  j                  _
        y)z_
        Change to end of line.
        Same as 'c$' (which is implemented elsewhere.)
        rÙ   N)r‰   ÚdeleterZ   r  r}   Ú	clipboardÚset_textr)   rÑ   r~   rÐ   ©r„   r`   Údeleteds      rC   Ú_change_until_end_of_linez3load_vi_bindings.<locals>._change_until_end_of_linef  s\   € ð ×%Ñ%ˆà—-‘- f§o¡o×&NÑ&NÓ&P�-ÓQˆØ�	‰	×Ñ×$Ñ$ WÔ-Ü(1×(8Ñ(8ˆ�	‰	×ÑÕ%rB   ÚcÚSc                óÆ  — | j                   }t        |j                  j                  t        j
                  «      }| j                  j                  j                  |«       |xj                  |j                  j                  d¬«      z  c_	        |j                  |j                  j                  «       ¬«       t        j                  | j                  j                  _        y)z%
        Change current line
        Tr	  rÙ   N)r‰   r   rZ   Úcurrent_liner.   rN   r}   r  Úset_datarV   r  r  r  r)   rÑ   r~   rÐ   )r„   r`   Údatas      rC   Ú_change_current_linez.load_vi_bindings.<locals>._change_current_liner  s§   € ð ×%Ñ%ˆô ˜VŸ_™_×9Ñ9¼=×;NÑ;NÓOˆØ�	‰	×Ñ×$Ñ$ TÔ*ð 	×Ò &§/¡/×"LÑ"LØ!ð #Mó #
ñ 	
Õð 	�‰˜FŸO™O×DÑDÓFˆÔGÜ(1×(8Ñ(8ˆ�	‰	×ÑÕ%rB   ÚDc                óº   — | j                   }|j                  |j                  j                  «       ¬«      }| j                  j
                  j                  |«       y)zH
        Delete from cursor position until the end of the line.
        rÙ   N)r‰   r  rZ   r  r}   r  r   r!  s      rC   Ú_delete_until_end_of_linez3load_vi_bindings.<locals>._delete_until_end_of_line…  sD   € ð
 ×%Ñ%ˆØ—-‘- f§o¡o×&NÑ&NÓ&P�-ÓQˆØ�	‰	×Ñ×$Ñ$ WÕ-rB   Údc           	     óª  — | j                   }|j                  j                  }dj                  |d|j                  j                   «      }dj                  ||j                  j                  |j                  j                  | j
                  z    «      }dj                  ||j                  j                  | j
                  z   d «      }|r|r|dz   }t        ||z   t        |«      t        |«      z   t        |j                  d«      «      z
  ¬«      |_        | j                  j                  j                  t        |t        j                  «      «       y)z<
        Delete line. (Or the following 'n' lines.)
        Ú
NÚ )rg   rV   )r‰   rZ   rY   ÚjoinÚcursor_position_rowr�   r   rX   Úlstripr}   r  r(  r   r.   rN   )r„   r`   rY   Úbeforer"  Úafters         rC   Ú_delete_linez&load_vi_bindings.<locals>._delete_lineŽ  s  € ð
 ×%Ñ%ˆð —‘×%Ñ%ˆà—‘˜5Ð!F 6§?¡?×#FÑ#FÐGÓHˆØ—)‘)ØØ—‘×3Ñ3°f·o±o×6YÑ6YØ—)‘)ñ7ðó
ˆð —	‘	˜% §¡× CÑ CÀeÇiÁiÑ OÐ QÐRÓSˆñ ‘eØ˜d‘]ˆFô #Ø˜%‘ä ›K¬#¨e«*Ñ4´s¸5¿<¹<ÈÓ;LÓ7MÑMô
ˆŒð 	�	‰	×Ñ×$Ñ$¤]°7¼M×<OÑ<OÓ%PÕQrB   Úxc                ó‚   — | j                   j                  «       }| j                  j                  j	                  |«       y)zB
        Cut selection.
        ('x' is not an operator.)
        N)r‰   rh   r}   r  r(  )r„   rj   s     rC   Ú_cutzload_vi_bindings.<locals>._cut¯  s0   € ð ×-Ñ-×;Ñ;Ó=ˆØ�	‰	×Ñ×$Ñ$ ^Õ4rB   Úic                óV   — t         j                  | j                  j                  _        y rG   r  rÜ   s    rC   Ú_izload_vi_bindings.<locals>._i¸  s   € ä(1×(8Ñ(8ˆ�	‰	×ÑÕ%rB   ÚIc                óÜ   — t         j                  | j                  j                  _        | j
                  xj                  | j
                  j                  j                  d¬«      z  c_        y )NTr	  )	r)   rÑ   r}   r~   rÐ   r‰   rV   rZ   r  rÜ   s    rC   Ú_Izload_vi_bindings.<locals>._I¼  sT   € ä(1×(8Ñ(8ˆ�	‰	×ÑÔ%Ø×Ñ×,Ò,Ø× Ñ ×)Ñ)×DÑDØ!%ð Eó ñ	
Ö,rB   Fc                ó`  — | j                   }g }|rdd„}ndd„}t        |j                  j                  «       «      D ]/  \  }}|j	                   ||«      «       |dk(  sŒ# ||«      |_        Œ1 ||_        t        j                  | j                  j                  _        |j                  «        y)z1
        Insert in block selection mode.
        c                ó   — | d   S r|   rA   ©Úfrom_tos    rC   Úget_poszDload_vi_bindings.<locals>.insert_in_block_selection.<locals>.get_posÑ  ó   € Ø˜q‘zÐ!rB   c                ó   — | d   S )Nr   rA   rC  s    rC   rE  zDload_vi_bindings.<locals>.insert_in_block_selection.<locals>.get_posÖ  rF  rB   r   N)rD  rn   rm   rl   )r‰   Ú	enumeraterZ   Úselection_rangesÚappendrV   Úmultiple_cursor_positionsr)   ÚINSERT_MULTIPLEr}   r~   rÐ   rÕ   )r„   r6  rŽ   Ú	positionsrE  r;  rD  s          rC   Úinsert_in_block_selectionz3load_vi_bindings.<locals>.insert_in_block_selectionÅ  s�   € ð
 ×#Ñ#ˆð ˆ	áô"ó
"ô $ D§M¡M×$BÑ$BÓ$DÖE‰JˆAˆwØ×Ñ™W WÓ-Ô.Ø�A‹vÙ'.¨wÓ'7�Õ$ð Fð
 *3ˆÔ&ô )2×(AÑ(Aˆ�	‰	×ÑÔ%Ø×ÑÕrB   c                ó   •—  ‰| d¬«       y )NT)r6  rA   )r„   rN  s    €rC   Ú_append_after_blockz-load_vi_bindings.<locals>._append_after_blockä  s   ø€ á! %¨tÖ4rB   ÚJc                ól   — t        | j                  «      D ]  }| j                  j                  «        Œ y)z
        Join lines.
        N©Úranger�   r‰   Újoin_next_line©r„   r;  s     rC   Ú_joinzload_vi_bindings.<locals>._joinè  s)   € ô
 �u—y‘yÖ!ˆAØ× Ñ ×/Ñ/Õ1ñ "rB   r¶   c                óp   — t        | j                  «      D ]  }| j                  j                  d¬«       Œ  y)z+
        Join lines without space.
        r±   ©Ú	separatorNrS  rV  s     rC   Ú_join_nospacez'load_vi_bindings.<locals>._join_nospaceð  s.   € ô
 �u—y‘yÖ!ˆAØ× Ñ ×/Ñ/¸"Ð/Õ=ñ "rB   c                ó8   — | j                   j                  «        y)z&
        Join selected lines.
        N©r‰   Újoin_selected_linesrÜ   s    rC   Ú_join_selectionz)load_vi_bindings.<locals>._join_selectionø  s   € ð
 	×Ñ×0Ñ0Õ2rB   c                ó<   — | j                   j                  d¬«       y)z4
        Join selected lines without space.
        r±   rY  Nr]  rÜ   s    rC   Ú_join_selection_nospacez1load_vi_bindings.<locals>._join_selection_nospaceÿ  s   € ð
 	×Ñ×0Ñ0¸2Ð0Õ>rB   Úpc                ó´   — | j                   j                  | j                  j                  j	                  «       | j
                  t        j                  ¬«       y)z
        Paste after
        ©rÚ   Ú
paste_modeN)r‰   Úpaste_clipboard_datar}   r  Úget_datar�   r,   ÚVI_AFTERrÜ   s    rC   Ú_pastez load_vi_bindings.<locals>._paste  sC   € ð
 	×Ñ×1Ñ1Ø�I‰I×Ñ×(Ñ(Ó*Ø—)‘)Ü ×)Ñ)ð 	2õ 	
rB   ÚPc                ó´   — | j                   j                  | j                  j                  j	                  «       | j
                  t        j                  ¬«       y)z
        Paste before
        rd  N)r‰   rf  r}   r  rg  r�   r,   Ú	VI_BEFORErÜ   s    rC   Ú_paste_beforez'load_vi_bindings.<locals>._paste_before  sC   € ð
 	×Ñ×1Ñ1Ø�I‰I×Ñ×(Ñ(Ó*Ø—)‘)Ü ×*Ñ*ð 	2õ 	
rB   Ú"c                ó  — | j                   d   j                  }|t        v ri| j                  j                  j
                  j                  |«      }|r7| j                  j                  || j                  t        j                  ¬«       yyy)z,
        Paste from named register.
        r3   rd  N)Úkey_sequencer)  Úvi_register_namesr}   r~   Únamed_registersÚgetr‰   rf  r�   r,   rh  ©r„   r$  r)  s      rC   Ú_paste_registerz)load_vi_bindings.<locals>._paste_register  sz   € ð
 ×Ñ˜qÑ!×&Ñ&ˆØÔ!Ñ!Ø—9‘9×%Ñ%×5Ñ5×9Ñ9¸!Ó<ˆDÙØ×$Ñ$×9Ñ9Ø §	¡	´i×6HÑ6Hð :õ ð ð "rB   c                ó  — | j                   d   j                  }|t        v ri| j                  j                  j
                  j                  |«      }|r7| j                  j                  || j                  t        j                  ¬«       yyy)z5
        Paste (before) from named register.
        r3   rd  N)rp  r)  rq  r}   r~   rr  rs  r‰   rf  r�   r,   rl  rt  s      rC   Ú_paste_register_beforez0load_vi_bindings.<locals>._paste_register_before)  sz   € ð
 ×Ñ˜qÑ!×&Ñ&ˆØÔ!Ñ!Ø—9‘9×%Ñ%×5Ñ5×9Ñ9¸!Ó<ˆDÙØ×$Ñ$×9Ñ9Ø §	¡	´i×6IÑ6Ið :õ ð ð "rB   Úrc                óV   — t         j                  | j                  j                  _        y)z.
        Go to 'replace-single'-mode.
        N)r)   ÚREPLACE_SINGLEr}   r~   rÐ   rÜ   s    rC   Ú_replacez"load_vi_bindings.<locals>._replace6  s   € ô
 )2×(@Ñ(@ˆ�	‰	×ÑÕ%rB   ÚRc                óV   — t         j                  | j                  j                  _        y)z'
        Go to 'replace'-mode.
        N)r)   rÒ   r}   r~   rÐ   rÜ   s    rC   Ú_replace_modez'load_vi_bindings.<locals>._replace_mode=  s   € ô
 )2×(9Ñ(9ˆ�	‰	×ÑÕ%rB   Úsc                óì   — | j                   j                  | j                  ¬«      }| j                  j                  j                  |«       t        j                  | j                  j                  _	        y)z_
        Substitute with new text
        (Delete character(s) and go to insert mode.)
        rÙ   N)
r‰   r  r�   r}   r  r   r)   rÑ   r~   rÐ   ©r„   rg   s     rC   Ú_substitutez%load_vi_bindings.<locals>._substituteD  sQ   € ð ×#Ñ#×*Ñ*°·±Ð*Ó;ˆØ�	‰	×Ñ×$Ñ$ TÔ*Ü(1×(8Ñ(8ˆ�	‰	×ÑÕ%rB   r¿   c                 ó   — y)NFrA   ©Úes    rC   r¾   z"load_vi_bindings.<locals>.<lambda>N  s   € À5rB   )rt   Úsave_beforec                ól   — t        | j                  «      D ]  }| j                  j                  «        Œ y rG   )rT  r�   r‰   ÚundorV  s     rC   Ú_undozload_vi_bindings.<locals>._undoN  s'   € ä�u—y‘yÖ!ˆAØ× Ñ ×%Ñ%Õ'ñ "rB   ÚVc                óX   — | j                   j                  t        j                  ¬«       y)z(
        Start lines selection.
        ©rQ   N)r‰   Ústart_selectionr.   rN   rÜ   s    rC   Ú_visual_linez&load_vi_bindings.<locals>._visual_lineS  ó!   € ð
 	×Ñ×,Ñ,¼M×<OÑ<OÐ,ÕPrB   c                óX   — | j                   j                  t        j                  ¬«       y)z-
        Enter block selection mode.
        rŒ  N)r‰   r�  r.   r=   rÜ   s    rC   Ú_visual_blockz'load_vi_bindings.<locals>._visual_blockZ  r�  rB   c                óÐ   — | j                   j                  }|�N|j                  t        j                  k7  rt        j                  |_        y| j                   j                  «        yy)zn
        Exit line selection mode, or go from non line selection mode to line
        selection mode.
        N)r‰   r�   rJ   r.   rN   rÕ   ©r„   r�   s     rC   Ú_visual_line2z'load_vi_bindings.<locals>._visual_line2a  óT   € ð  ×.Ñ.×>Ñ>ˆàÐ&Ø×#Ñ#¤}×':Ñ':Ò:Ü'4×':Ñ':�Õ$à×$Ñ$×3Ñ3Õ5ð	 'rB   Úvc                óX   — | j                   j                  t        j                  ¬«       y)z1
        Enter character selection mode.
        rŒ  N)r‰   r�  r.   rO   rÜ   s    rC   Ú_visualz!load_vi_bindings.<locals>._visualo  s!   € ð
 	×Ñ×,Ñ,¼M×<TÑ<TÐ,ÕUrB   c                óÐ   — | j                   j                  }|�N|j                  t        j                  k7  rt        j                  |_        y| j                   j                  «        yy)z}
        Exit character selection mode, or go from non-character-selection mode
        to character selection mode.
        N)r‰   r�   rJ   r.   rO   rÕ   r“  s     rC   Ú_visual2z"load_vi_bindings.<locals>._visual2v  sT   € ð  ×.Ñ.×>Ñ>ˆàÐ&Ø×#Ñ#¤}×'?Ñ'?Ò?Ü'4×'?Ñ'?�Õ$à×$Ñ$×3Ñ3Õ5ð	 'rB   c                óÐ   — | j                   j                  }|�N|j                  t        j                  k7  rt        j                  |_        y| j                   j                  «        yy)zq
        Exit block selection mode, or go from non block selection mode to block
        selection mode.
        N)r‰   r�   rJ   r.   r=   rÕ   r“  s     rC   Ú_visual_block2z(load_vi_bindings.<locals>._visual_block2„  r•  rB   ÚwÚWc                óÄ   — | j                   }|j                  rH|j                  j                  t        j                  k(  r t        j
                  |j                  _        yyy)zP
        Switch from visual linewise mode to visual characterwise mode.
        N)r‰   r�   rJ   r.   rN   rO   ©r„   r`   s     rC   Ú_visual_auto_wordz+load_vi_bindings.<locals>._visual_auto_word’  sS   € ð ×%Ñ%ˆð ×"Ò"Ø×&Ñ&×+Ñ+¬}×/BÑ/BÒBä*7×*BÑ*BˆF×"Ñ"Õ'ð Cð #rB   c                ó
  — | j                   }t        | j                  t        |j                  j
                  «      «      }|rB| j                   j                  |¬«      }| j                  j                  j                  |«       yy)z#
        Delete character.
        rÙ   N)
r‰   Úminr�   rX   rZ   Úcurrent_line_after_cursorr  r}   r  r   ©r„   rŽ   rÚ   rg   s       rC   Ú_deletez!load_vi_bindings.<locals>._delete   sg   € ð
 ×#Ñ#ˆÜ�E—I‘Iœs 4§=¡=×#JÑ#JÓKÓLˆÙØ×'Ñ'×.Ñ.°UÐ.Ó;ˆDØ�I‰I×Ñ×(Ñ(¨Õ.ð rB   ÚXc                ó
  — | j                   }t        | j                  t        |j                  j
                  «      «      }|rB| j                   j                  |¬«      }| j                  j                  j                  |«       y y )NrÙ   )
r‰   r£  r�   rX   rZ   Úcurrent_line_before_cursorÚdelete_before_cursorr}   r  r   r¥  s       rC   Ú_delete_before_cursorz/load_vi_bindings.<locals>._delete_before_cursor«  se   € à×#Ñ#ˆÜ�E—I‘Iœs 4§=¡=×#KÑ#KÓLÓMˆÙØ×'Ñ'×<Ñ<À5Ð<ÓIˆDØ�I‰I×Ñ×(Ñ(¨Õ.ð rB   ÚyÚYc                óö   — dj                  | j                  j                  j                  d| j                   «      }| j
                  j                  j                  t        |t        j                  «      «       y)z&
        Yank the whole line.
        r0  N)r2  r‰   rZ   Úlines_from_currentr�   r}   r  r(  r   r.   rN   r�  s     rC   Ú
_yank_linez$load_vi_bindings.<locals>._yank_line³  sT   € ð �y‰y˜×-Ñ-×6Ñ6×IÑIÈ+ÈEÏIÉIÐVÓWˆØ�	‰	×Ñ×$Ñ$¤]°4¼×9LÑ9LÓ%MÕNrB   Ú+c                óì   — | j                   }|xj                  |j                  j                  | j                  ¬«      z  c_        |xj                  |j                  j                  d¬«      z  c_        y)z;
        Move to first non whitespace of next line
        rÙ   Tr	  N)r‰   rV   rZ   Úget_cursor_down_positionr�   r  r   s     rC   Ú
_next_linez$load_vi_bindings.<locals>._next_line¼  sk   € ð
 ×%Ñ%ˆØ×Ò &§/¡/×"JÑ"JØ—)‘)ð #Kó #
ñ 	
Õð 	×Ò &§/¡/×"LÑ"LØ!ð #Mó #
ñ 	
ÖrB   Ú-c                óì   — | j                   }|xj                  |j                  j                  | j                  ¬«      z  c_        |xj                  |j                  j                  d¬«      z  c_        y)z?
        Move to first non whitespace of previous line
        rÙ   Tr	  N)r‰   rV   rZ   Úget_cursor_up_positionr�   r  r   s     rC   Ú
_prev_linez$load_vi_bindings.<locals>._prev_lineÉ  sk   € ð
 ×%Ñ%ˆØ×Ò &§/¡/×"HÑ"HØ—)‘)ð #Ió #
ñ 	
Õð 	×Ò &§/¡/×"LÑ"LØ!ð #Mó #
ñ 	
ÖrB   Ú>zc-tc                ó|   — | j                   }|j                  j                  }t        |||| j                  z   «       y)z
        Indent lines.
        N)r‰   rZ   r3  r   r�   )r„   r`   Úcurrent_rows      rC   Ú_indentz!load_vi_bindings.<locals>._indentÖ  s3   € ð ×%Ñ%ˆØ—o‘o×9Ñ9ˆÜˆv�{ K°%·)±)Ñ$;Õ<rB   Ú<zc-dc                óŒ   — | j                   j                  j                  }t        | j                   ||| j                  z   «       y)z!
        Unindent lines.
        N)r‰   rZ   r3  r   r�   )r„   r»  s     rC   Ú	_unindentz#load_vi_bindings.<locals>._unindentà  s6   € ð ×*Ñ*×3Ñ3×GÑGˆÜ�×%Ñ% {°KÀ%Ç)Á)Ñ4KÕLrB   ÚOc                ó    — | j                   j                  t        «        ¬«       t        j                  | j
                  j                  _        y)z:
        Open line above and enter insertion mode
        ©Úcopy_marginN)r‰   Úinsert_line_abover   r)   rÑ   r}   r~   rÐ   rÜ   s    rC   Ú_open_abovez%load_vi_bindings.<locals>._open_aboveé  ó8   € ð
 	×Ñ×.Ñ.¼}»Ð;NÐ.ÔOÜ(1×(8Ñ(8ˆ�	‰	×ÑÕ%rB   Úoc                ó    — | j                   j                  t        «        ¬«       t        j                  | j
                  j                  _        y)z:
        Open line below and enter insertion mode
        rÂ  N)r‰   Úinsert_line_belowr   r)   rÑ   r}   r~   rÐ   rÜ   s    rC   Ú_open_belowz%load_vi_bindings.<locals>._open_belowñ  rÆ  rB   rÈ   c                óœ   — | j                   }|j                  j                  }|�(|dk7  r"|j                  |j	                  «       d¬«       yyy)zL
        Reverse case of current character and move cursor forward.
        Nr0  T©Ú	overwrite)r‰   rZ   Úcurrent_charÚinsert_textrË   )r„   r`   r$  s      rC   Ú_reverse_casez'load_vi_bindings.<locals>._reverse_caseù  sI   € ð
 ×%Ñ%ˆØ�O‰O×(Ñ(ˆàˆ=˜Q $šYØ×Ñ˜qŸz™z›|°tÐÕ<ð 'ˆ=rB   c                ó@   — | j                   }|j                  d„ «       y)z)
        Lowercase current line.
        c                ó"   — | j                  «       S rG   rÁ   ©r  s    rC   r¾   z;load_vi_bindings.<locals>._lowercase_line.<locals>.<lambda>
  ó
   € ¨a¯g©g¬irB   N©r‰   Útransform_current_line©r„   rŽ   s     rC   Ú_lowercase_linez)load_vi_bindings.<locals>._lowercase_line  ó   € ð
 ×#Ñ#ˆØ×#Ñ#Ñ$7Õ8rB   rÄ   c                ó@   — | j                   }|j                  d„ «       y)z)
        Uppercase current line.
        c                ó"   — | j                  «       S rG   rÆ   rÓ  s    rC   r¾   z;load_vi_bindings.<locals>._uppercase_line.<locals>.<lambda>  rÔ  rB   NrÕ  r×  s     rC   Ú_uppercase_linez)load_vi_bindings.<locals>._uppercase_line  rÙ  rB   c                ó@   — | j                   }|j                  d„ «       y)z0
        Swap case of the current line.
        c                ó"   — | j                  «       S rG   rÊ   rÓ  s    rC   r¾   z:load_vi_bindings.<locals>._swapcase_line.<locals>.<lambda>  s
   € ¨a¯j©j¬lrB   NrÕ  r×  s     rC   Ú_swapcase_linez(load_vi_bindings.<locals>._swapcase_line  s   € ð
 ×#Ñ#ˆØ×#Ñ#Ñ$:Õ;rB   Ú#c                óì   — | j                   }| j                  j                  }|j                  j	                  «       |_        t        j                  |_        |j                  || j                  d¬«       y)z9
        Go to previous occurrence of this word.
        F©rÚ   Úinclude_current_positionN)r‰   r}   Úcurrent_search_staterZ   Úget_word_under_cursorrg   r+   ÚBACKWARDÚ	directionÚapply_searchr�   ©r„   rû   Úsearch_states      rC   Ú_prev_occurrencez*load_vi_bindings.<locals>._prev_occurrence  sW   € ð
 × Ñ ˆØ—y‘y×5Ñ5ˆàŸJ™J×<Ñ<Ó>ˆÔÜ!0×!9Ñ!9ˆÔà	�‰�|¨5¯9©9ÈuˆÕUrB   Ú*c                óì   — | j                   }| j                  j                  }|j                  j	                  «       |_        t        j                  |_        |j                  || j                  d¬«       y)z5
        Go to next occurrence of this word.
        Frâ  N)r‰   r}   rä  rZ   rå  rg   r+   ÚFORWARDrç  rè  r�   ré  s      rC   Ú_next_occurrencez*load_vi_bindings.<locals>._next_occurrence)  sW   € ð
 × Ñ ˆØ—y‘y×5Ñ5ˆàŸJ™J×<Ñ<Ó>ˆÔÜ!0×!8Ñ!8ˆÔà	�‰�|¨5¯9©9ÈuˆÕUrB   Ú(c                 ó   — y rG   rA   rÜ   s    rC   Ú_begin_of_sentencez,load_vi_bindings.<locals>._begin_of_sentence6  ó   € ð 	rB   Ú)c                 ó   — y rG   rA   rÜ   s    rC   Ú_end_of_sentencez*load_vi_bindings.<locals>._end_of_sentence<  ró  rB   c                óL   — | j                   j                  j                  «        y)zF
        Unknown key binding while waiting for a text object.
        N)r}   ÚoutputÚbellrÜ   s    rC   Ú_unknown_text_objectz.load_vi_bindings.<locals>._unknown_text_objectE  s   € ð
 	�	‰	×Ñ×ÑÕrB   c                ót   •‡ ‡— ‰rdt         j                  d‰    f}nd‰    } ‰|dt         iŽdˆ ˆfd„«       }y)zð
        Delete and change operators.

        :param delete_only: Create an operator that deletes, but doesn't go to insert mode.
        :param with_register: Copy the deleted text to this named register instead of the clipboard.
        rn  Úcdrt   c                ó¨  •— d }| j                   }|r|j                  |«      \  }}||_        |rx|j                  rl‰rE| j                  d   j
                  }|t        v rI|| j                  j                  j                  |<   n%| j                  j                  j                  |«       ‰s*t        j                  | j                  j                  _        y y r|   )r‰   rk   rZ   rg   rp  r)  rq  r}   r~   rr  r  r(  r)   rÑ   rÐ   )r„   rŠ   rj   rŽ   ri   Úreg_nameÚdelete_onlyÚwith_registers         €€rC   Údelete_or_change_operatorz_load_vi_bindings.<locals>.create_delete_and_change_operators.<locals>.delete_or_change_operator_  s³   ø€ à!ˆNØ×'Ñ'ˆDáØ/:¯©¸tÓ/DÑ,�˜nØ ,�”ñ  .×"5Ò"5Ù Ø$×1Ñ1°!Ñ4×9Ñ9�HØÔ#4Ñ4ØGU˜Ÿ	™	×*Ñ*×:Ñ:¸8ÒDà—I‘I×'Ñ'×0Ñ0°Ô@ñ Ü09×0@Ñ0@�—	‘	×"Ñ"Õ-ð rB   N©r„   r‘   rŠ   rE   rm   r’   )r*   ÚAnyr   )rÿ  r   Úhandler_keysr  Úoperators   ``  €rC   Ú"create_delete_and_change_operatorsz<load_vi_bindings.<locals>.create_delete_and_change_operatorsP  sG   ú€ ñ Ø¤§¡¨4°Ñ+<Ð=‰Là Ñ,ˆLá	�<Ð	6¬¨Ñ	6õ	Aó 
7ñ	ArB   Tc                ó:   •‡—  ‰|d| t          z  iŽdˆfd„«       }y )Nrt   c                ó  •— | j                   }|j                  |j                  «      \  }}||k  r[|j                  |j                  |z   |j                  |z   ‰«       |xj                  |j
                  xs |j                  z  c_        yy)zX
            Apply transformation (uppercase, lowercase, rot13, swap case).
            N)r‰   r^   rZ   Útransform_regionrV   rI   rH   )r„   rŠ   rŽ   rH   rI   Útransform_funcs        €rC   rc   z=load_vi_bindings.<locals>.create_transform_handler.<locals>._}  sƒ   ø€ ð
 ×'Ñ'ˆDØ$×3Ñ3°D·M±MÓB‰JˆE�3à�sŠ{à×%Ñ%Ø×(Ñ(¨5Ñ0Ø×(Ñ(¨3Ñ.Ø"ôð ×$Ò$¨¯©Ò(L¸;×;LÑ;LÑLÖ$ð rB   r  )r   )rt   r
  r  rc   r  s    `  €rC   Úcreate_transform_handlerz2load_vi_bindings.<locals>.create_transform_handlerz  s*   ù€ ñ 
�1Ð	4˜V¤| mÑ3Ñ	4ô	Mó 
5ñ	MrB   c                ó¤   — |j                  | j                  «      \  }}|j                  r&| j                  j                  j                  |«       yy)z-
        Yank operator. (Copy text.)
        N)rk   r‰   rg   r}   r  r(  )r„   rŠ   rc   rj   s       rC   Ú_yankzload_vi_bindings.<locals>._yank“  sC   € ð
 (ŸO™O¨E×,@Ñ,@ÓAÑˆˆ>Ø×ÒØ�I‰I×Ñ×(Ñ(¨Õ8ð rB   c                óÊ   — | j                   d   j                  }|t        v rB|j                  | j                  «      \  }}|| j
                  j                  j                  |<   yy)z3
        Yank selection to named register.
        r3   N)rp  r)  rq  rk   r‰   r}   r~   rr  )r„   rŠ   r$  rc   rj   s        rC   Ú_yank_to_registerz+load_vi_bindings.<locals>._yank_to_registerœ  s[   € ð
 ×Ñ˜qÑ!×&Ñ&ˆØÔ!Ñ!Ø +§¡°×0DÑ0DÓ EÑˆAˆ~Ø4BˆE�I‰I×Ñ×.Ñ.¨qÒ1ð "rB   c                ó|   — | j                   }|j                  |«      \  }}t        |||dz   | j                  ¬«       y)z
        Indent.
        r3   rÙ   N)r‰   rd   r   r�   ©r„   rŠ   rŽ   ra   rb   s        rC   Ú_indent_text_objectz-load_vi_bindings.<locals>._indent_text_object¦  s9   € ð
 ×#Ñ#ˆØ×0Ñ0°Ó6‰	ˆˆrÜˆt�U˜B ™F¨%¯)©)Ö4rB   c                ó|   — | j                   }|j                  |«      \  }}t        |||dz   | j                  ¬«       y)z
        Unindent.
        r3   rÙ   N)r‰   rd   r   r�   r  s        rC   Ú_unindent_text_objectz/load_vi_bindings.<locals>._unindent_text_object¯  s9   € ð
 ×#Ñ#ˆØ×0Ñ0°Ó6‰	ˆˆrÜ��u˜b 1™f¨E¯I©IÖ6rB   Úqc                ó^   — | j                   }|j                  |«      \  }}t        |||«       y)z
        Reshape text.
        N)r‰   rd   r   r  s        rC   Ú_reshapez"load_vi_bindings.<locals>._reshape¸  s/   € ð
 ×#Ñ#ˆØ×0Ñ0°Ó6‰	ˆˆrÜ�T˜5 "Õ%rB   rû   c                ó|   — t        | j                  j                  j                  | j                  ¬«      xs d«      S )z.
        Move one word or token left.
        rÙ   r   ©rE   r‰   rZ   Úfind_start_of_previous_wordr�   rÜ   s    rC   Ú_bzload_vi_bindings.<locals>._bÅ  s:   € ô
 Ø× Ñ ×)Ñ)×EÑEÈEÏIÉIÐEÓVò Øó
ð 	
rB   ÚBc                ó~   — t        | j                  j                  j                  | j                  d¬«      xs d«      S )z.
        Move one non-blank word left
        T©rÚ   ÚWORDr   r  rÜ   s    rC   Ú_Bzload_vi_bindings.<locals>._BÏ  sD   € ô
 Ø× Ñ ×)Ñ)×EÑEØ—i‘i dð Fó ò ð ó	
ð 	
rB   Ú$c                ó\   — t        | j                  j                  j                  «       «      S )zL
        'c$', 'd$' and '$':  Delete/change/move until end of line.
        )rE   r‰   rZ   r  rÜ   s    rC   Ú_dollarz!load_vi_bindings.<locals>._dollarÛ  s$   € ô
 ˜%×.Ñ.×7Ñ7×PÑPÓRÓSÐSrB   c                óÀ   — t        | j                  j                  j                  | j                  ¬«      xs$ | j                  j                  j                  «       «      S )zO
        'word' forward. 'cw', 'dw', 'w': Delete/change/move one word.
        rÙ   ©rE   r‰   rZ   Úfind_next_word_beginningr�   Úget_end_of_document_positionrÜ   s    rC   Ú_word_forwardz'load_vi_bindings.<locals>._word_forwardâ  sP   € ô
 Ø× Ñ ×)Ñ)×BÑBÈÏÉÐBÓSò LØ×#Ñ#×,Ñ,×IÑIÓKó
ð 	
rB   c                óÂ   — t        | j                  j                  j                  | j                  d¬«      xs$ | j                  j                  j                  «       «      S )zO
        'WORD' forward. 'cW', 'dW', 'W': Delete/change/move one WORD.
        Tr  r%  rÜ   s    rC   Ú_WORD_forwardz'load_vi_bindings.<locals>._WORD_forwardì  sZ   € ô
 Ø× Ñ ×)Ñ)×BÑBØ—i‘i dð Có ò Lð ×#Ñ#×,Ñ,×IÑIÓKó	
ð 	
rB   r…  c                ó¦   — | j                   j                  j                  | j                  ¬«      }t	        |r|dz
  ndt
        j                  ¬«      S )z0
        End of 'word': 'ce', 'de', 'e'
        rÙ   r3   r   r¤   ©r‰   rZ   Úfind_next_word_endingr�   rE   r9   r;   ©r„   rI   s     rC   Ú_end_of_wordz&load_vi_bindings.<locals>._end_of_wordø  sB   € ð
 ×"Ñ"×+Ñ+×AÑAÈÏ	É	ÐAÓRˆÜ¡S˜# š'¨a´n×6NÑ6NÔOÐOrB   c                ó¨   — | j                   j                  j                  | j                  d¬«      }t	        |r|dz
  ndt
        j                  ¬«      S )z0
        End of 'WORD': 'cE', 'dE', 'E'
        Tr  r3   r   r¤   r,  r.  s     rC   Ú_end_of_WORDz&load_vi_bindings.<locals>._end_of_WORD   sL   € ð
 ×"Ñ"×+Ñ+×AÑAØ—)‘) $ð Bó 
ˆô ¡S˜# š'¨a´n×6NÑ6NÔOÐOrB   ©ru   c                óh   — | j                   j                  j                  «       \  }}t        ||«      S )z+
        Inner 'word': ciw and diw
        ©r‰   rZ   Úfind_boundaries_of_current_wordrE   ©r„   rH   rI   s      rC   Ú_inner_wordz%load_vi_bindings.<locals>._inner_word
  s/   € ð
 ×)Ñ)×2Ñ2×RÑRÓT‰
ˆˆsÜ˜% Ó%Ð%rB   c                ól   — | j                   j                  j                  d¬«      \  }}t        ||«      S )z'
        A 'word': caw and daw
        T)Úinclude_trailing_whitespacer4  r6  s      rC   Ú_a_wordz!load_vi_bindings.<locals>._a_word  s<   € ð
 ×)Ñ)×2Ñ2×RÑRØ(,ð Só 
‰
ˆˆsô ˜% Ó%Ð%rB   c                ól   — | j                   j                  j                  d¬«      \  }}t        ||«      S )z+
        Inner 'WORD': ciW and diW
        T)r  r4  r6  s      rC   Ú_inner_WORDz%load_vi_bindings.<locals>._inner_WORD  s<   € ð
 ×)Ñ)×2Ñ2×RÑRØð Só 
‰
ˆˆsô ˜% Ó%Ð%rB   c                ón   — | j                   j                  j                  dd¬«      \  }}t        ||«      S )z'
        A 'WORD': caw and daw
        T)r  r9  r4  r6  s      rC   Ú_a_WORDz!load_vi_bindings.<locals>._a_WORD&  s>   € ð
 ×)Ñ)×2Ñ2×RÑRØ°4ð Só 
‰
ˆˆsô ˜% Ó%Ð%rB   c                óÂ   — | j                   j                  j                  «       }| j                   j                  j                  | j                  ¬«      }t        ||«      S )z!
        Auto paragraph.
        rÙ   )r‰   rZ   Ústart_of_paragraphÚend_of_paragraphr�   rE   r6  s      rC   Ú
_paragraphz$load_vi_bindings.<locals>._paragraph0  sN   € ð
 ×$Ñ$×-Ñ-×@Ñ@ÓBˆØ×"Ñ"×+Ñ+×<Ñ<À5Ç9Á9Ð<ÓMˆÜ˜% Ó%Ð%rB   Ú^c                ó`   — t        | j                  j                  j                  d¬«      «      S )z9'c^', 'd^' and '^': Soft start of line, after whitespace.Tr	  ©rE   r‰   rZ   r  rÜ   s    rC   Ú_start_of_linez(load_vi_bindings.<locals>._start_of_line9  s4   € ô Ø× Ñ ×)Ñ)×DÑDØ!%ð Eó ó
ð 	
rB   Ú0c                ó`   — t        | j                  j                  j                  d¬«      «      S )z¤
        'c0', 'd0': Hard start of line, before whitespace.
        (The move '0' key is implemented elsewhere, because a '0' could also change the `arg`.)
        Fr	  rE  rÜ   s    rC   Ú_hard_start_of_linez-load_vi_bindings.<locals>._hard_start_of_lineB  s4   € ô Ø× Ñ ×)Ñ)×DÑDØ!&ð Eó ó
ð 	
rB   c                óš   •‡ ‡‡— dˆˆ ˆfd„}|€)  ‰d‰   ‰ d¬«      |«         ‰d‰   ‰d¬«      |«       y  ‰d‰   |d¬«      |«       y)zÂ
        Delete/Change string between this start and stop character. But keep these characters.
        This implements all the ci", ci<, ci{, ci(, di", di<, ca", ca<, ... combinations.
        c                ó˜  •— ‰‰k(  rO| j                   j                  j                  ‰d¬«      }| j                   j                  j                  ‰d¬«      }nL| j                   j                  j	                  ‰‰«      }| j                   j                  j                  ‰‰«      }|�|�‰rdnd}t        |dz   |z
  ||z   «      S t        d«      S )NF)Úin_current_liner   r3   )r‰   rZ   Úfind_backwardsÚfindÚfind_enclosing_bracket_leftÚfind_enclosing_bracket_rightrE   )r„   rH   rI   ÚoffsetÚci_endÚci_startÚinners       €€€rC   Úhandlerz?load_vi_bindings.<locals>.create_ci_ca_handles.<locals>.handlerW  s×   ø€ Ø˜6Ò!à×,Ñ,×5Ñ5×DÑDØ¨eð Eó �ð ×*Ñ*×3Ñ3×8Ñ8¸ÐQVÐ8ÓW‘ð ×,Ñ,×5Ñ5×QÑQØ˜fó�ð ×*Ñ*×3Ñ3×PÑPØ˜fó�ð Ð  S _Ù#™¨�Ü! %¨!¡)¨fÑ"4°c¸F±lÓCÐCô " !“}Ð$rB   NÚaiTr2  ©r„   r‘   rm   rE   rA   )rS  rR  rT  ÚkeyrU  rŠ   s   ```  €rC   Úcreate_ci_ca_handlesz.load_vi_bindings.<locals>.create_ci_ca_handlesN  sT   û€ ÷	%ð. ˆ;ØD‰K˜˜U™ X¸tÔDÀWÔMØB‰K˜˜U™ V¸TÔBÀ7ÕKà?‰K˜˜U™ S¸$Ô?ÀÕHrB   )FT))rn  rn  )Ú'rZ  )Ú`r[  )Ú[Ú])r½  r¹  )Ú{Ú})rð  rô  r^  r_  c                óz   — | j                   j                  j                  | j                  d¬«      }t	        |«      S )zi
        Move to previous blank-line separated section.
        Implements '{', 'c{', 'd{', 'y{'
        T)rÚ   r5  )r‰   rZ   r@  r�   rE   ©r„   Úindexs     rC   Ú_previous_sectionz+load_vi_bindings.<locals>._previous_sectionƒ  s<   € ð ×$Ñ$×-Ñ-×@Ñ@Ø—)‘) Dð Aó 
ˆô ˜%Ó Ð rB   c                óz   — | j                   j                  j                  | j                  d¬«      }t	        |«      S )ze
        Move to next blank-line separated section.
        Implements '}', 'c}', 'd}', 'y}'
        T)rÚ   r6  )r‰   rZ   rA  r�   rE   ra  s     rC   Ú_next_sectionz'load_vi_bindings.<locals>._next_sectionŽ  s;   € ð ×$Ñ$×-Ñ-×>Ñ>Ø—)‘) 4ð ?ó 
ˆô ˜%Ó Ð rB   Úfc                ó(  — t        | j                  d«      | j                  j                  _        | j
                  j                  j                  | j                  d| j                  ¬«      }|rt        |t        j                  ¬«      S t        d«      S )zˆ
        Go to next occurrence of character. Typing 'fx' will move the
        cursor to the next occurrence of character. 'x'.
        FT©rL  rÚ   r¤   r   ©r(   r)  r}   r~   Úlast_character_findr‰   rZ   rN  r�   rE   r9   r;   ©r„   Úmatchs     rC   Ú_find_next_occurrencez/load_vi_bindings.<locals>._find_next_occurrence™  ss   € ô 2?¸u¿z¹zÈ5Ó1Qˆ�	‰	×ÑÔ.Ø×$Ñ$×-Ñ-×2Ñ2Ø�J‰J¨°E·I±Ið 3ó 
ˆñ Ü˜e¬.×*BÑ*BÔCÐCä˜a“=Ð rB   ÚFc                óò   — t        | j                  d«      | j                  j                  _        t        | j                  j                  j                  | j                  d| j                  ¬«      xs d«      S )z�
        Go to previous occurrence of character. Typing 'Fx' will move the
        cursor to the previous occurrence of character. 'x'.
        Trh  r   )
r(   r)  r}   r~   rj  rE   r‰   rZ   rM  r�   rÜ   s    rC   Ú_find_previous_occurrencez3load_vi_bindings.<locals>._find_previous_occurrence¨  sf   € ô 2?¸u¿z¹zÈ4Ó1Pˆ�	‰	×ÑÔ.ÜØ× Ñ ×)Ñ)×8Ñ8Ø—
‘
¨D¸¿	¹	ð 9ó ò ð ó	
ð 	
rB   Útc                ó.  — t        | j                  d«      | j                  j                  _        | j
                  j                  j                  | j                  d| j                  ¬«      }|rt        |dz
  t        j                  ¬«      S t        d«      S )zQ
        Move right to the next occurrence of c, then one char backward.
        FTrh  r3   r¤   r   ri  rk  s     rC   Ú_tzload_vi_bindings.<locals>._t¶  sw   € ô
 2?¸u¿z¹zÈ5Ó1Qˆ�	‰	×ÑÔ.Ø×$Ñ$×-Ñ-×2Ñ2Ø�J‰J¨°E·I±Ið 3ó 
ˆñ Ü˜e a™i¬n×.FÑ.FÔGÐGä˜a“=Ð rB   ÚTc                ó  — t        | j                  d«      | j                  j                  _        | j
                  j                  j                  | j                  d| j                  ¬«      }t        |r	|dz   «      S d«      S )zS
        Move left to the previous occurrence of c, then one char forward.
        Trh  r3   r   )
r(   r)  r}   r~   rj  r‰   rZ   rM  r�   rE   rk  s     rC   Ú_Tzload_vi_bindings.<locals>._TÄ  sl   € ô
 2?¸u¿z¹zÈ4Ó1Pˆ�	‰	×ÑÔ.Ø×$Ñ$×-Ñ-×<Ñ<Ø�J‰J¨°E·I±Ið =ó 
ˆô ¡u˜% !™)Ó4Ð4°!Ó4Ð4rB   c                ó2   •‡ —  ‰‰ rdnd«      dˆ fd„«       }y)z.
        Create ',' and ';' commands.
        Ú,Ú;c                óð  •— d}| j                   j                  }t        j                  }|j                  r¨|j                  j
                  }|j                  j                  }‰r| }|r3| j                  j                  j                  |d| j                  ¬«      }nB| j                  j                  j                  |d| j                  ¬«      }t        j                  }|rt        ||¬«      S t        d«      S )zB
            Repeat the last 'f'/'F'/'t'/'T' command.
            r   Trh  r¤   )r}   r~   r9   r:   rj  Ú	characterÚ	backwardsr‰   rZ   rM  r�   rN  r;   rE   )r„   Úposr~   rJ   Úcharr|  Úreverses         €rC   rc   z+load_vi_bindings.<locals>.repeat.<locals>._Ô  sÞ   ø€ ð
  ˆCØ—y‘y×)Ñ)ˆHä!×+Ñ+ˆDà×+Ò+Ø×3Ñ3×=Ñ=�Ø$×8Ñ8×BÑB�	áØ$- �IáØ×.Ñ.×7Ñ7×FÑFØ¨d¸%¿)¹)ð Gó ‘Cð  ×.Ñ.×7Ñ7×<Ñ<Ø¨d¸%¿)¹)ð =ó �Cô *×3Ñ3�DÙÜ! #¨DÔ1Ð1ä! !“}Ð$rB   NrW  rA   )r  rc   rŠ   s   ` €rC   Úrepeatz load_vi_bindings.<locals>.repeatÏ  s    ù€ ñ
 
™G‘S¨Ó	-ô	%ó 
.ñ	%rB   ÚhÚleftc                ót   — t        | j                  j                  j                  | j                  ¬«      «      S )z:
        Implements 'ch', 'dh', 'h': Cursor left.
        rÙ   )rE   r‰   rZ   rÓ   r�   rÜ   s    rC   Ú_leftzload_vi_bindings.<locals>._leftö  s2   € ô Ø× Ñ ×)Ñ)×BÑBÈÏÉÐBÓSó
ð 	
rB   )ru   rv   c                ó”   — t        | j                  j                  j                  | j                  ¬«      t
        j                  ¬«      S )z<
        Implements 'cj', 'dj', 'j', ... Cursor up.
        rÙ   r¤   )rE   r‰   rZ   r³  r�   r9   r<   rÜ   s    rC   Ú_downzload_vi_bindings.<locals>._down   s;   € ô Ø× Ñ ×)Ñ)×BÑBÈÏÉÐBÓSÜ×(Ñ(ô
ð 	
rB   c                ó”   — t        | j                  j                  j                  | j                  ¬«      t
        j                  ¬«      S )z<
        Implements 'ck', 'dk', 'k', ... Cursor up.
        rÙ   r¤   )rE   r‰   rZ   r·  r�   r9   r<   rÜ   s    rC   Ú_upzload_vi_bindings.<locals>._up  s;   € ô
 Ø× Ñ ×)Ñ)×@Ñ@ÀuÇyÁyÐ@ÓQÜ×(Ñ(ô
ð 	
rB   Úlr1  Úrightc                ót   — t        | j                  j                  j                  | j                  ¬«      «      S )zL
        Implements 'cl', 'dl', 'l', 'c ', 'd ', ' '. Cursor right.
        rÙ   )rE   r‰   rZ   r  r�   rÜ   s    rC   Ú_rightz load_vi_bindings.<locals>._right  s2   € ô Ø× Ñ ×)Ñ)×CÑCÈ%Ï)É)ÐCÓTó
ð 	
rB   ÚHc                ót  — | j                   j                  j                  }| j                  }|rP|j                  rD|j
                  j                  |j                  j                  d¬«      d«      |j                  z
  }n t        |j
                  j                  «       }t        |t        j                  ¬«      S )zz
        Moves to the start of the visible region. (Below the scroll offset.)
        Implements 'cH', 'dH', 'H'.
        T)Úafter_scroll_offsetr   r¤   )r}   ÚlayoutÚcurrent_windowr‰   Úrender_inforZ   rW   Úfirst_visible_linerV   rX   Útext_before_cursorrE   r9   r<   ©r„   r�  rû   r}  s       rC   Ú_top_of_screenz(load_vi_bindings.<locals>._top_of_screen"  sš   € ð �I‰I×Ñ×+Ñ+ˆØ× Ñ ˆá�—’ð —
‘
×5Ñ5Ø—M‘M×4Ñ4ÈÐ4ÓNÐPQóð ×#Ñ#ñ$ñ ô �q—z‘z×4Ñ4Ó5Ð5ˆCÜ˜#¤N×$;Ñ$;Ô<Ð<rB   ÚMc                óp  — | j                   j                  j                  }| j                  }|rN|j                  rB|j
                  j                  |j                  j                  «       d«      |j                  z
  }n t        |j
                  j                  «       }t        |t        j                  ¬«      S )zp
        Moves cursor to the vertical center of the visible region.
        Implements 'cM', 'dM', 'M'.
        r   r¤   )r}   r�  r‘  r‰   r’  rZ   rW   Úcenter_visible_linerV   rX   r”  rE   r9   r<   r•  s       rC   Ú_middle_of_screenz+load_vi_bindings.<locals>._middle_of_screen:  s”   € ð �I‰I×Ñ×+Ñ+ˆØ× Ñ ˆá�—’ð —
‘
×5Ñ5Ø—M‘M×5Ñ5Ó7¸óð ×#Ñ#ñ$ñ ô �q—z‘z×4Ñ4Ó5Ð5ˆCÜ˜#¤N×$;Ñ$;Ô<Ð<rB   ÚLc                ór  — | j                   j                  j                  }| j                  }|rP|j                  rD|j
                  j                  |j                  j                  d¬«      d«      |j                  z
  }nt        |j
                  j                  «      }t        |t        j                  ¬«      S )zT
        Moves to the end of the visible region. (Above the scroll offset.)
        T)Úbefore_scroll_offsetr   r¤   )r}   r�  r‘  r‰   r’  rZ   rW   Úlast_visible_linerV   rX   Útext_after_cursorrE   r9   r<   r•  s       rC   Ú_end_of_screenz(load_vi_bindings.<locals>._end_of_screenR  s—   € ð
 �I‰I×Ñ×+Ñ+ˆØ× Ñ ˆá�—’ð —
‘
×5Ñ5Ø—M‘M×3Ñ3ÈÐ3ÓNÐPQóð ×#Ñ#ñ$ñ ô �a—j‘j×2Ñ2Ó3ˆCÜ˜#¤N×$;Ñ$;Ô<Ð<rB   Únc                ó²   — | j                   }| j                  j                  }|j                  |d| j                  ¬«      }t        ||j                  z
  «      S )z
        Search next.
        F©rã  rÚ   ©r‰   r}   rä  Úget_search_positionr�   rE   rV   ©r„   rŽ   rê  rV   s       rC   Ú_search_nextz&load_vi_bindings.<locals>._search_nexti  sV   € ð
 ×#Ñ#ˆØ—y‘y×5Ñ5ˆà×2Ñ2Ø°5ÀÇ	Á	ð 3ó 
ˆô ˜/¨D×,@Ñ,@Ñ@ÓAÐArB   c                ó€   — | j                   j                  }| j                  j                  |d| j                  ¬«       y)zR
        Search next in navigation mode. (This goes through the history.)
        Fr£  N©r}   rä  r‰   rè  r�   ©r„   rê  s     rC   Ú_search_next2z'load_vi_bindings.<locals>._search_next2v  s7   € ð
 —y‘y×5Ñ5ˆà×Ñ×)Ñ)Ø°5ÀÇ	Á	ð 	*õ 	
rB   ÚNc                ó´   — | j                   }| j                  j                  }|j                  | d| j                  ¬«      }t        ||j                  z
  «      S )z"
        Search previous.
        Fr£  r¤  r¦  s       rC   Ú_search_previousz*load_vi_bindings.<locals>._search_previous�  sX   € ð
 ×#Ñ#ˆØ—y‘y×5Ñ5ˆà×2Ñ2ØˆM°EÀÇÁð 3ó 
ˆô ˜/¨D×,@Ñ,@Ñ@ÓAÐArB   c                ó‚   — | j                   j                  }| j                  j                  | d| j                  ¬«       y)zV
        Search previous in navigation mode. (This goes through the history.)
        Fr£  Nr©  rª  s     rC   Ú_search_previous2z+load_vi_bindings.<locals>._search_previous2Ž  s9   € ð
 —y‘y×5Ñ5ˆà×Ñ×)Ñ)ØˆM°EÀÇÁð 	*õ 	
rB   Úzc                óŽ   — | j                   }|j                  j                  | j                  j                  j
                  _        y)zd
        Scrolls the window to makes the current line the first line in the visible region.
        N)r‰   rZ   r3  r}   r�  r‘  Úvertical_scrollrú   s     rC   Ú_scroll_topz%load_vi_bindings.<locals>._scroll_top™  s1   € ð × Ñ ˆØ:;¿*¹*×:XÑ:Xˆ�	‰	×Ñ×'Ñ'Õ7rB   c                óN   — d| j                   j                  j                  _        y)zc
        Scrolls the window to makes the current line the last line in the visible region.
        r   N)r}   r�  r‘  r³  rÜ   s    rC   Ú_scroll_bottomz(load_vi_bindings.<locals>._scroll_bottom£  s   € ð ;<ˆ�	‰	×Ñ×'Ñ'Õ7rB   c                ój  — | j                   j                  j                  }| j                  }|r…|j                  rx|j                  }|j
                  dz  }t        d|j                  j                  dz
  «      }d}|dkD  r+|j                  |«      }||z   |k  r||z  }|dz  }nn|dkD  rŒ+||_
        yyy)z9
        Center Window vertically around cursor.
        r/   r   r3   N)r}   r�  r‘  r‰   r’  Úwindow_heightÚmaxrZ   r3  Úget_height_for_liner³  )r„   r�  rû   ÚinfoÚscroll_heightr¬  ÚheightÚline_heights           rC   Ú_scroll_centerz(load_vi_bindings.<locals>._scroll_center®  s¼   € ð
 �I‰I×Ñ×+Ñ+ˆØ× Ñ ˆá�—’Ø—=‘=ˆDð !×.Ñ.°!Ñ3ˆMä�A�q—z‘z×5Ñ5¸Ñ9Ó:ˆAØˆFØ�a’%Ø"×6Ñ6°qÓ9�à˜KÑ'¨-Ò7Ø˜kÑ)�FØ˜‘F‘Aàð �a“%ð !"ˆAÕð% ˆ1rB   Ú%c                ó  — | j                   }| j                  r«d| j                  cxk  rdk  r‹n t        d«      S |j                  j	                  t        | j                  |j                  j                  z  dz
  dz  «      d«      }t        ||j                  j                  z
  t        j                  ¬«      S t        d«      S |j                  j                  «       }|rt        |t        j                  ¬«      S t        d«      S )z›
        Implements 'c%', 'd%', '%, 'y%' (Move to corresponding bracket.)
        If an 'arg' has been given, go this this % position in the file.
        r   éd   r3   r¤   )r‰   r‚   r�   rZ   rW   rl   Ú
line_countrE   rV   r9   r<   Úfind_matching_bracket_positionr;   )r„   r`   Úabsolute_indexrl  s       rC   Ú_goto_corresponding_bracketz5load_vi_bindings.<locals>._goto_corresponding_bracketÊ  sÜ   € ð ×%Ñ%ˆà�:Š:ð �5—9‘9Ô# Ô#ô " !“}Ð$ð "(§¡×!KÑ!KÜ˜Ÿ™ V§_¡_×%?Ñ%?Ñ?À!ÑCÀsÑJÓKÈQó"�ô "Ø" V§_¡_×%DÑ%DÑDÜ'×0Ñ0ôð ô
 " !“}Ð$ð —O‘O×BÑBÓDˆEÙÜ! %¬n×.FÑ.FÔGÐGä! !“}Ð$rB   Ú|c                óx   — t        | j                  j                  j                  | j                  dz
  «      «      S )z�
        Move to the n-th column (you may specify the argument n by typing it on
        number keys, for example, 20|).
        r3   )rE   r‰   rZ   Úget_column_cursor_positionr�   rÜ   s    rC   Ú
_to_columnz$load_vi_bindings.<locals>._to_columnè  s4   € ô Ø× Ñ ×)Ñ)×DÑDÀUÇYÁYÐQRÁ]ÓSó
ð 	
rB   c                ó"  — | j                   j                  }| j                  rEt        |j	                  | j
                  dz
  d«      |j                  z
  t        j                  ¬«      S t        |j                  «       t        j                  ¬«      S )z_
        Go to the start of the very first line.
        Implements 'gg', 'cgg', 'ygg'
        r3   r   r¤   )
r‰   rZ   r‚   rE   rW   r�   rV   r9   r<   Úget_start_of_document_position)r„   r.  s     rC   Ú_goto_first_linez*load_vi_bindings.<locals>._goto_first_lineò  sx   € ð × Ñ ×)Ñ)ˆà�:Š:äØ×,Ñ,¨U¯Y©Y¸©]¸AÓ>À×ARÑARÑRÜ#×,Ñ,ôð ô Ø×0Ñ0Ó2¼×9PÑ9Pôð rB   rc   c                ó|   — t        | j                  j                  j                  «       t        j
                  ¬«      S )zQ
        Go to last non-blank of line.
        'g_', 'cg_', 'yg_', etc..
        r¤   )rE   r‰   rZ   Ú'last_non_blank_of_current_line_positionr9   r;   rÜ   s    rC   Ú_goto_last_linez)load_vi_bindings.<locals>._goto_last_line  s2   € ô Ø× Ñ ×)Ñ)×QÑQÓSÜ×)Ñ)ô
ð 	
rB   c                ó¦   — | j                   j                  j                  | j                  ¬«      }t	        |�|dz
  ndt
        j                  ¬«      S )zZ
        Go to last character of previous word.
        'ge', 'cge', 'yge', etc..
        rÙ   r3   r   r¤   ©r‰   rZ   Úfind_previous_word_endingr�   rE   r9   r;   ©r„   Úprev_ends     rC   Ú_gezload_vi_bindings.<locals>._ge  sR   € ð ×'Ñ'×0Ñ0×JÑJØ—)‘)ð Kó 
ˆô Ø$Ð0ˆH�qŠL°a¼n×>VÑ>Vô
ð 	
rB   c                ó¨   — | j                   j                  j                  | j                  d¬«      }t	        |�|dz
  ndt
        j                  ¬«      S )zZ
        Go to last character of previous WORD.
        'gE', 'cgE', 'ygE', etc..
        Tr  r3   r   r¤   rÒ  rÔ  s     rC   Ú_gEzload_vi_bindings.<locals>._gE  sT   € ð ×'Ñ'×0Ñ0×JÑJØ—)‘) $ð Kó 
ˆô Ø$Ð0ˆH�qŠL°a¼n×>VÑ>Vô
ð 	
rB   Úmc           	     ó–  — | j                   j                  j                  }| j                  }|r‘|j                  r…|j                  j
                  }|j                  j                  d¬«      }|t        t        |dz  t        |j                  j                  «      «      «      z  }t        |t        j                  ¬«      S t        d«      S )zY
        Like g0, but half a screenwidth to the right. (Or as much as possible.)
        Fr	  r/   r¤   r   )r}   r�  r‘  r‰   r’  Úwindow_widthrZ   r  rl   r£  rX   r'  rE   r9   r;   )r„   r�  rŽ   ÚwidthrH   s        rC   Ú_gmzload_vi_bindings.<locals>._gm+  s™   € ð
 �I‰I×Ñ×+Ñ+ˆØ×#Ñ#ˆá�—’Ø—M‘M×.Ñ.ˆEØ—M‘M×<Ñ<ÈeÐ<ÓTˆEØ”Sœ˜U Q™Y¬¨D¯M©M×,FÑ,FÓ(GÓHÓIÑIˆEä˜e¬.×*BÑ*BÔCÐCÜ˜!‹}ÐrB   ÚGc                óÌ   — | j                   }t        |j                  j                  |j                  j                  dz
  d«      |j
                  z
  t        j                  ¬«      S )zL
        Go to the end of the document. (If no arg has been given.)
        r3   r   r¤   )r‰   rE   rZ   rW   rÃ  rV   r9   r<   )r„   Úbufs     rC   Ú
_last_linez$load_vi_bindings.<locals>._last_line;  sW   € ð
 ×"Ñ"ˆÜØ�L‰L×3Ñ3°C·L±L×4KÑ4KÈaÑ4OÐQRÓSØ×!Ñ!ñ"ä×(Ñ(ô
ð 	
rB   c                óT   — | j                   j                  | j                  dz
  «       y)zh
        If an argument is given, move to this line in the  history. (for
        example, 15G)
        r3   N)r‰   Úgo_to_historyr�   rÜ   s    rC   Ú_to_nth_history_linez.load_vi_bindings.<locals>._to_nth_history_lineK  s    € ð 	×Ñ×*Ñ*¨5¯9©9°q©=Õ9rB   Ú	123456789c                ó:   — | j                  | j                  «       y)zK
            Always handle numerics in navigation mode as arg.
            N©Úappend_to_arg_countr)  rÜ   s    rC   r‚   zload_vi_bindings.<locals>._argU  s   € ð ×%Ñ% e§j¡jÕ1rB   c                ó:   — | j                  | j                  «       y)z9
        Zero when an argument was already give.
        Nrç  rÜ   s    rC   Ú_0_argz load_vi_bindings.<locals>._0_arga  s   € ð 	×!Ñ! %§*¡*Õ-rB   c                óR   — | j                   j                  | j                  d¬«       y)z1
        Insert data at cursor position.
        TrÌ  N)r‰   rÏ  r)  rÜ   s    rC   Ú_insert_textz&load_vi_bindings.<locals>._insert_textn  s!   € ð
 	×Ñ×(Ñ(¨¯©¸tÐ(ÕDrB   c                óâ   — | j                   j                  | j                  d¬«       | j                   xj                  dz  c_        t        j
                  | j                  j                  _        y)z>
        Replace single character at cursor position.
        TrÌ  r3   N)	r‰   rÏ  r)  rV   r)   rÔ   r}   r~   rÐ   rÜ   s    rC   Ú_replace_singlez)load_vi_bindings.<locals>._replace_singleu  sP   € ð
 	×Ñ×(Ñ(¨¯©¸tÐ(ÔDØ×Ñ×,Ò,°Ñ1Õ,Ü(1×(<Ñ(<ˆ�	‰	×ÑÕ%rB   c                ó   — | j                    S rG   )Ú	is_repeatr„  s    rC   r¾   z"load_vi_bindings.<locals>.<lambda>�  s
   €  1§;¡;™rB   c                ó²  — | j                   }|j                  }g }d}|j                  D ]3  }|j                  ||| «       |j                  | j                  «       |}Œ5 |j                  ||d «       t        |j                  «      D ��cg c]  \  }}||z   dz   ‘Œ }}}dj                  |«      |_        ||_        |xj                  dz  c_        yc c}}w )zŽ
        Insert data at multiple cursor positions at once.
        (Usually a result of pressing 'I' or 'A' in block-selection mode.)
        r   Nr3   r±   )r‰   rg   rK  rJ  r)  rH  r2  rV   )	r„   rŽ   Úoriginal_textrg   rb  Úp2r;  r}  Únew_cursor_positionss	            rC   Ú_insert_text_multiple_cursorsz7load_vi_bindings.<locals>._insert_text_multiple_cursors~  sÖ   € ð ×#Ñ#ˆØŸ	™	ˆð ˆØˆà×0Ô0ˆBØ�K‰K˜ a¨Ð+Ô,Ø�K‰K˜Ÿ
™
Ô#Ø‰Að 1ð
 	�‰�M ! "Ð%Ô&ô '0°×0NÑ0NÔ&Oô 
Ù&O™F˜A˜sˆC�!‰G�a‹KÐ&Oð 	ñ  
ð
 —G‘G˜D“MˆŒ	Ø)=ˆÔ&Ø×Ò Ñ!Öùó 
s   ÂCc                ó$  — | j                   }|j                  }d}g }d}|j                  D ]B  }|dkD  r%||dz
     dk7  r|j                  |||dz
   «       d}n|j                  ||| «       |}ŒD |j                  ||d «       |rb|dd D �cg c]  }t	        |«      ‘Œ }}t        t        |«      «      }	dj                  |«      |_        |	|_        |xj                  dz  c_        y| j                  j                  j                  «        yc c}w )	z4
        Backspace, using multiple cursors.
        Fr   r3   r0  TNéÿÿÿÿr±   )r‰   rg   rK  rJ  rX   Úlistr   r2  rV   r}   rø  rù  )
r„   rŽ   rò  Údeleted_somethingrg   rb  ró  ÚpartÚlengthsrô  s
             rC   Ú_delete_before_multiple_cursorsz9load_vi_bindings.<locals>._delete_before_multiple_cursors   s  € ð
 ×#Ñ#ˆØŸ	™	ˆð "ÐØˆØˆà×0Ô0ˆBØ�AŠv˜-¨¨Q©Ñ/°4Ò7Ø—‘˜M¨!¨b°1©fÐ5Ô6Ø$(Ñ!à—‘˜M¨!¨BÐ/Ô0Ø‰Að 1ð 	�‰�M ! "Ð%Ô&áà-1°#°2©YÓ7©Y T”s˜4•y¨YˆGÐ7Ü#'¬
°7Ó(;Ó#<Ð ð Ÿ™ ›ˆDŒIØ-AˆDÔ*Ø× Ò  AÑ%Ö à�I‰I×Ñ×!Ñ!Õ#ùò 8s   ÂDr  c                óæ  — | j                   }|j                  }d}g }g }d}|j                  D ]6  }|j                  ||| «       |t	        |«      k\  s||   dk(  r|}Œ0|dz   }d}Œ8 |j                  ||d «       |rM|dd D �cg c]  }t	        |«      ‘Œ }	}t        t        |	«      «      }dj                  |«      |_        ||_        y| j                  j                  j                  «        yc c}w )	z1
        Delete, using multiple cursors.
        Fr   r0  r3   TNr÷  r±   )r‰   rg   rK  rJ  rX   rø  r   r2  r}   rø  rù  )
r„   rŽ   rò  rù  rg   rô  rb  ró  rú  rû  s
             rC   Ú_delete_after_multiple_cursorsz8load_vi_bindings.<locals>._delete_after_multiple_cursorsÃ  sú   € ð
 ×#Ñ#ˆØŸ	™	ˆð "ÐØˆØ!ÐØˆà×0Ô0ˆBØ�K‰K˜ a¨Ð+Ô,Ø”S˜Ó'Ò'¨=¸Ñ+<ÀÒ+Dà‘à˜‘F�Ø$(Ñ!ð 1ð 	�‰�M ! "Ð%Ô&áà-1°#°2©YÓ7©Y T”s˜4•y¨YˆGÐ7Ü#'¬
°7Ó(;Ó#<Ð ð Ÿ™ ›ˆDŒIØ-AˆDÕ*à�I‰I×Ñ×!Ñ!Õ#ùò 8s   ÂC.c                ó  — | j                   }g }|j                  D ]9  }|j                  j                  |«      d   dkD  r|dz  }|j	                  |«       Œ; ||_        |j                  j
                  dkD  r|xj                  dz  c_        yy)z`
        Move all cursors to the left.
        (But keep all cursors on the same line.)
        r3   r   N)r‰   rK  rZ   rU   rJ  Úcursor_position_colrV   )r„   rŽ   Únew_positionsrb  s       rC   Ú_left_multiplez(load_vi_bindings.<locals>._left_multipleç  s‰   € ð ×#Ñ#ˆØˆà×/Ô/ˆAØ�}‰}×8Ñ8¸Ó;¸AÑ>ÀÒBØ�Q‘�Ø× Ñ  Õ#ð 0ð
 *7ˆÔ&à�=‰=×,Ñ,¨qÒ0Ø× Ò  AÑ%Ö ð 1rB   c                óZ  — | j                   }g }|j                  D ][  }|j                  j                  |«      \  }}|t	        |j                  j
                  |   «      k  r|dz  }|j                  |«       Œ] ||_        |j                  j                  s|xj                  dz  c_        yy)za
        Move all cursors to the right.
        (But keep all cursors on the same line.)
        r3   N)	r‰   rK  rZ   rU   rX   rY   rJ  Úis_cursor_at_the_end_of_linerV   )r„   rŽ   r  rb  r\   Úcolumns         rC   Ú_right_multiplez)load_vi_bindings.<locals>._right_multipleú  sœ   € ð ×#Ñ#ˆØˆà×/Ô/ˆAØŸ-™-×CÑCÀAÓF‰KˆC�Øœ˜DŸM™M×/Ñ/°Ñ4Ó5Ò5Ø�Q‘�Ø× Ñ  Õ#ð	 0ð *7ˆÔ&à�}‰}×9Ò9Ø× Ò  AÑ%Ö ð :rB   c                 ó   — y)zN
        Ignore all up/down key presses when in multiple cursor mode.
        NrA   rÜ   s    rC   Ú_updown_multiplez*load_vi_bindings.<locals>._updown_multiple  s   � rB   zc-xzc-lc                ó8   — | j                   j                  «        y)z�
        Pressing the ControlX - ControlL sequence in Vi mode does line
        completion based on the other lines in the document and the history.
        N)r‰   Ústart_history_lines_completionrÜ   s    rC   Ú_complete_linez(load_vi_bindings.<locals>._complete_line  s   € ð 	×Ñ×;Ñ;Õ=rB   zc-fc                 ó   — y)z&
        Complete file names.
        NrA   rÜ   s    rC   Ú_complete_filenamez,load_vi_bindings.<locals>._complete_filename  s   € ð 	rB   zc-kc                ó:   — d| j                   j                  _        y)z'
        Go into digraph mode.
        TN)r}   r~   Úwaiting_for_digraphrÜ   s    rC   Ú_digraphz"load_vi_bindings.<locals>._digraph%  s   € ð
 26ˆ�	‰	×ÑÕ.rB   c                óN   — | j                   | j                  j                  _        y)z'
        First digraph symbol.
        N)r)  r}   r~   r®   rÜ   s    rC   Ú	_digraph1z#load_vi_bindings.<locals>._digraph1,  s   € ð
 .3¯Z©Zˆ�	‰	×ÑÕ*rB   c                óÄ  — 	 | j                   j                  j                  xs d| j                  f}|t        vr|ddd…   }t        |   }| j                   j                  j
                  t        j                  k(  }| j                  j                  t        |«      |¬«       d| j                   j                  _        d| j                   j                  _        d| j                   j                  _        y# t        $ r' | j                   j                  j                  «        Y Œfw xY w# d| j                   j                  _        d| j                   j                  _        w xY w)z!
        Insert digraph.
        r±   Nr÷  rÌ  F)r}   r~   r®   r)  r%   rÐ   r)   rÒ   r‰   rÏ  Úchrr  ÚKeyErrorrø  rù  )r„   ÚcodeÚsymbolrÍ  s       rC   Ú_create_digraphz)load_vi_bindings.<locals>._create_digraph3  s  € ð
	6ð —	‘	×"Ñ"×2Ñ2Ò8°bØ—
‘
ð%ˆDð œ8Ñ#Ø™D˜b˜D‘z�Ü˜d‘^ˆFð Ÿ	™	×*Ñ*×5Ñ5¼×9JÑ9JÑJˆIØ× Ñ ×,Ñ,¬S°«[ÀIÐ,ÔNØ5:ˆE�I‰I×ÑÔ2à5:ˆE�I‰I×ÑÔ2Ø15ˆE�I‰I×ÑÕ.øô ò 	$à�I‰I×Ñ×!Ñ!Ö#ð	$ûð 6;ˆE�I‰I×ÑÔ2Ø15ˆE�I‰I×ÑÕ.ús+   ‚A	C4 ÁA2D' Ã4-D$Ä!D' Ä#D$Ä$D' Ä'8Ezc-oc                ó:   — d| j                   j                  _        y)z<
        Go into normal mode for one single action.
        TN)r}   r~   Útemporary_navigation_moderÜ   s    rC   Ú_quick_normal_modez,load_vi_bindings.<locals>._quick_normal_modeM  s   € ð
 8<ˆ�	‰	×ÑÕ4rB   c                ó�   — | j                   d   j                  }|t        v r%| j                  j                  }||_        d|_        yy)z(
        Start recording macro.
        r3   r±   N)rp  r)  rq  r}   r~   Úrecording_registerÚcurrent_recording)r„   r$  r~   s      rC   Ú_start_macroz&load_vi_bindings.<locals>._start_macroT  sG   € ð
 ×Ñ˜qÑ!×&Ñ&ˆØÔ!Ñ!Ø—y‘y×)Ñ)ˆHà*+ˆHÔ'Ø)+ˆHÕ&ð	 "rB   c                ó¾   — | j                   j                  }|j                  r;t        |j                  «      |j
                  |j                  <   d|_        d|_        yy)z'
        Stop recording macro.
        Nr±   )r}   r~   r  r   r  rr  )r„   r~   s     rC   Ú_stop_macroz%load_vi_bindings.<locals>._stop_macro`  sZ   € ð
 —9‘9×%Ñ%ˆð ×&Ò&ÜDQØ×*Ñ*óEˆH×$Ñ$ X×%@Ñ%@ÑAð +/ˆHÔ'Ø)+ˆHÕ&ð 'rB   Ú@)rt   Úrecord_in_macroc                ó¢  — | j                   d   j                  }	 | j                  j                  j                  |   }g }t        |j                  «      }|j                  |j                  «       |j                  «        t        | j                  «      D ])  }| j                  j                  j                  |d¬«       Œ+ y# t
        $ r Y yw xY w)al  
        Execute macro.

        Notice that we pass `record_in_macro=False`. This ensures that the `@x`
        keys don't appear in the recording itself. This function inserts the
        body of the called macro back into the KeyProcessor, so these keys will
        be added later on to the macro of their handlers have
        `record_in_macro=True`.
        r3   NT)Úfirst)rp  r)  r}   r~   rr  r  r$   rJ  Úfeedrg   ÚflushrT  r�   Úkey_processorÚfeed_multiple)r„   r$  Úmacror–   Úparserrc   s         rC   Ú_execute_macroz(load_vi_bindings.<locals>._execute_macroo  s­   € ð ×Ñ˜qÑ!×&Ñ&ˆð	Ø—I‘I×&Ñ&×6Ñ6°qÑ9ˆEð  "ˆä˜TŸ[™[Ó)ˆØ�‰�E—J‘JÔØ�‰Œô �u—y‘yÖ!ˆAØ�I‰I×#Ñ#×1Ñ1°$¸dÐ1ÕCñ "øô ò 	Ùð	ús   ›#C Ã	CÃCr�   )F)r„   r‘   r6  rš   rm   r’   )rÿ  rš   r   rš   rm   r’   )rt   r   r
  zCallable[[str], str]r  r   rm   r’   r  rW  rG   )
rS  r   rR  r   rT  rš   rX  z
str | Nonerm   r’   )r  rš   rm   r’   )r1   r”   r   r   r   r   r   r´   r   r4   r"   r   rª   r   r   r¬   r*   r  r¨   rœ   r#   r   r   r    r   r   r¯   r   r0   r   )“r•   ÚhandleÚTransformFunctionÚvi_transform_functionsrÖ   rÝ   rá   ræ   rê   rï   rñ   rô   rü   r   r  r  r  r  r  r  r  r#  r*  r-  r7  r:  r=  r@  rP  rW  r[  r_  ra  ri  rm  ru  rw  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×   rf  Úfuncr  r  r  r  r  r  r   r#  r(  r*  r/  r1  r7  r:  r<  r>  rB  rF  rI  rY  rT  rS  rR  rc  re  rm  rp  rs  rv  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,  rN  r  rŠ   s“                                                                                                                                                   @@@rC   r5   r5   “  sÇ  ú€ ô  “=€LØ×Ñ€Fô
 œe¤C¨ H™o¬v´xÄÀÄsÀ
Ñ7KÐKÑLÐð
 Ü‹HÙ:ð	
ð 
”V“XÑ<Ð=à	”V“XÑ<Ð=à	”V“XÑ?Ð@àÜÙ,ð	
ð7Ðð* )�Fˆ5œÔ(¬°_Ó)EÔFáˆHÓò$ó ð$ñ ˆCÔ)Ô*ò8ó +ð8ñ ˆCÔ)Ô*ò:ó +ð:ñ ˆDÔ+Ô,ÙˆEÔ,Ô-ò6ó .ó -ð6ñ ˆCÔ*Ô+ò
ó ,ð
ñ ˆFÔ-Ô.ÙˆEÔ,Ô-ò8ó .ó /ð8ñ ˆCÔ*Ô+ò
ó ,ð
ñ ˆKÔ 2Ô3ò
ó 4ð
ñ ˆEœ.Ô)ò2ó *ð2ñ ˆEœ.Ô)ò	1ó *ð	1ñ ˆEœ.Ô)ÙˆEœ.Ô)ò3ó *ó *ð3ñ ˆEœ.Ô)ò1ó *ð1ð ?�Fˆ7Ô-´Ñ=Ô>Ü�MÓ"ôð :�Fˆ7œ=¬L¨=Ñ8Ô9¼+ÀmÓ:TÔUáˆGœ]˜NÔ-?Ñ?Ô@ò
ó Að
ñ ˆHÔ/Ô0ò9ó 1ð9ñ ˆHœ^Ô,ò=ó -ð=ñ ˆCÔ*¬l¨]Ñ:Ô;ò9ó <ð9ñ ˆCÔ*¬l¨]Ñ:Ô;ò9ó <ð9ñ ˆCÔ*¬l¨]Ñ:Ô;ò	9ó <ð	9ñ ˆC�Ô/´<°-Ñ?Ô@ÙˆCÔ*¬l¨]Ñ:Ô;ò9ó <ó Að9ñ" ˆCÔ*Ô+ò.ó ,ð.ñ ˆC�Ô/Ô0òRó 1ðRñ@ ˆCÔ)Ô*ò5ó +ð5ñ ˆCÔ*¬l¨]Ñ:Ô;ò9ó <ð9ñ ˆCÔ*¬l¨]Ñ:Ô;ò
ó <ð
ñ ˆCÔ*¬l¨]Ñ:Ô;óó <ðñ< ˆCÔ*¬l¨]Ñ:Ô;ô5ó <ð5ñ ˆCÔ*¬l¨]Ñ:Ô;ò2ó <ð2ñ ˆC�Ô/´<°-Ñ?Ô@ò>ó Að>ñ ˆCÔ)¬\¨MÑ9Ô:ò3ó ;ð3ñ ˆC�Ô.´,°Ñ>Ô?ò?ó @ð?ñ ˆCÔ*Ô+ò
ó ,ð
ñ ˆCÔ*Ô+ò
ó ,ð
ñ ˆC”—‘˜3Ô'9Ô:ò
ó ;ð
ñ ˆC”—‘˜3Ô'9Ô:ò
ó ;ð
ñ ˆCÔ*Ô+òAó ,ðAñ ˆCÔ*Ô+ò:ó ,ð:ñ ˆCÔ*¬l¨]Ñ:Ô;ò9ó <ð9ñ ˆCÔ*¹ÔJò(ó Kð(ñ ˆCÔ*Ô+òQó ,ðQñ ˆEÔ,Ô-òQó .ðQñ ˆCÔ)Ô*ò6ó +ð6ñ ˆCÔ*Ô+òVó ,ðVñ ˆCÔ)Ô*ò6ó +ð6ñ ˆEÔ+Ô,ò6ó -ð6ñ ˆC�Ô.Ô/ÙˆC�Ô.Ô/ò
Có 0ó 0ð
Cñ ˆCÔ*Ô+ò/ó ,ð/ñ ˆCÔ*Ô+ò/ó ,ð/ñ ˆC�Ô/Ô0ÙˆCÔ*Ô+òOó ,ó 1ðOñ ˆCÔ*Ô+ò

ó ,ð

ñ ˆCÔ*Ô+ò

ó ,ð

ñ ˆC�Ô/Ô0ÙˆEœ.Ô)ò=ó *ó 1ð=ñ ˆC�Ô/Ô0ÙˆEœ.Ô)òMó *ó 1ðMñ ˆCÔ*¬l¨]Ñ:Ô;ò9ó <ð9ñ ˆCÔ*¬l¨]Ñ:Ô;ò9ó <ð9ñ ˆCÔ*Ô+ò=ó ,ð=ñ ˆC��cÔ"4¼°}Ñ"DÔEò9ó Fð9ñ ˆC��cÔ"4¼°}Ñ"DÔEò9ó Fð9ñ ˆC��cÔ"4¼°}Ñ"DÔEò<ó Fð<ñ ˆCÔ*Ô+ò
Vó ,ð
Vñ ˆCÔ*Ô+ò
Vó ,ð
Vñ ˆCÔ*Ô+òó ,ðñ
 ˆCÔ*Ô+òó ,ðô
 )¨Ó6€HÜ.¨|Ó<€KáŒD�H‰HÔ<Ô=ò ó >ð ð 27ð#AØð#AØ*.ð#Aà	õ#AñJ ' u¨eÔ4Ù& u¨dÔ3Ù& t¨UÔ3Ù& t¨TÔ2ðMØðMØ(<ðMØBEðMà	õMó, -‰
ˆˆ1ˆdÙ   DÐ-¨1Ô-ð -ñ ˆcƒ]ó9ó ð9ñ ˆc”4—8‘8˜SÓ!óCó "ðCñ ˆcƒ]ó5ó ð5ñ ˆcƒ]ó7ó ð7ñ ˆc�3Óó&ó ð&ñ �Óó
ó ð
ñ �Óó	
ó ð	
ñ �ÓóTó ðTñ �Óó
ó ð
ñ �Óó	
ó ð	
ñ �ÓóPó ðPñ �ÓóPó ðPñ ��c¨4Ô0ó&ó 1ð&ñ ��c¨4Ô0ó&ó 1ð&ñ ��c¨4Ô0ó&ó 1ð&ñ ��c¨4Ô0ó&ó 1ð&ñ ��c¨4Ô0ó&ó 1ð&ñ �Óó
ó ð
ñ �Óó	
ó ð	
ð DHñ$IØð$IØ"ð$IØ+/ð$IØ6@ð$Ià	ö$IóL ˆó!
ÑˆH�fñ ! ¨6°5Õ9ð!
ñ 	˜S # u¨cÔ2Ù˜S # u¨cÕ2ð ñ �Óó!ó ð!ñ �Óó!ó ð!ñ �”d—h‘hÓó!ó  ð!ñ �”d—h‘hÓó
ó  ð
ñ �”d—h‘hÓó!ó  ð!ñ �”d—h‘hÓó5ó  ð5ö"%ñH ˆ4„LÙ
ˆ5„Má�ÓÙ�Óó
ó ó ð
ñ � dÀÔFó
ó	 Gð
ñ � dÀÔFó
ó Gð
ñ �ÓÙ�ÓÙ�Óó
ó ó ó ð
ñ �Óó=ó ð=ñ. �Óó=ó ð=ñ. �Óó=ó ð=ñ, � dÔ+ó
Bó ,ð
Bñ ˆCÔ*Ô+ò
ó ,ð
ñ � dÔ+ó
Bó ,ð
Bñ ˆCÔ*Ô+ò
ó ,ð
ñ ˆC�Ô/Ô2CÑCÔDÙˆC�Ô/Ô2CÑCÔDÙˆC�Ô!3Ô6GÑ!GÔHòYó Ió Eó EðYñ ˆC�Ô/Ô2CÑCÔDÙˆC�Ô/Ô2CÑCÔDò<ó Eó Eð<ñ ˆC�Ô/Ô2CÑCÔDò"ó Eð"ñ6 �Óó%ó ð%ñ: �Óó
ó ð
ñ ��cÓóó ðñ& ��cÓó
ó ð
ñ ��cÓó

ó ð

ñ ��cÓó

ó ð

ñ ��cÓóó ðñ �Óó	
ó ð	
ñ ˆCœÔ ò:ó !ð:ó ˆá	ØÜ%Üñ ä-ñ.ô

ò	2ó

ñ	2ð ñ ØäÔ!2Ñ2Ô5TÑTä
ñôò.óð.ñ ŒD�H‰Hœ_Ô-òEó .ðEñ ŒD�H‰HÔ3Ô4ò=ó 5ð=ñ Ü�‰Ü&Ù.ôò
"óð
"ñ: ˆKÔ 7Ô8ò $ó 9ð $ñD ˆHÔ4Ô5ò!$ó 6ð!$ñF ˆFÔ2Ô3ò&ó 4ð&ñ$ ˆGÔ3Ô4ò&ó 5ð&ñ& ˆDÔ0Ô1ÙˆFÔ2Ô3òó 4ó 2ðñ
 ˆE�5¤Ô0ò>ó 1ð>ñ ˆE�5¤Ô0òó 1ðñ ˆEœ.¬?Ñ:Ô;ò6ó <ð6ñ ŒD�H‰Hœ_Ô0FÐ/FÑFÔGò8ó Hð8ñ ŒD�H‰Hœ_Ô/EÑEÔFò6ó Gð6ñ2 ˆEœ.¬?Ñ:Ô;ò<ó <ð<ñ ˆC”—‘Ô"4Ô8JÐ7JÑ"JÔKò	,ó Lð	,ñ ˆCÔ*Ô-?Ñ?Ô@ò,ó Að,ñ ˆC”—‘Ô"4ÀeÔLòDó MðDô: " ,´Ó8Ð8rB   c                 óž  — t        «       } | j                  }ddlm}   |dt        t
        z  t         z  ¬«      |j                  «         |dt        t
        z  t        z  ¬«      |j                  «         |d«      |j                  «         |dt        t
        z  t         z  ¬«      |j                  «         |dt        t
        z  t        z  ¬«      |j                  «         |d«      |j                  «         |dt        ¬«      |j                  «         |dt        ¬«      |j                  «         |dt        ¬«      |j                  «         |d	«      |j                  «         |d
«      |j                  «         |dt        ¬«      |j                  «         |d«      |j                  «       t        | t         «      S )Nr3   )ÚsearchÚ/rÍ   r·   zc-szc-rr  zc-cr  rò   rÎ   )r1   r”   r±   r2  r   r"   r!   Ú start_forward_incremental_searchÚ start_reverse_incremental_searchr   Úaccept_searchÚreverse_incremental_searchÚforward_incremental_searchÚabort_searchr²   r0   r   )r•   r-  r2  s      rC   r6   r6   �  s¬  € Ü“=€LØ×Ñ€FÝð�FØÜ"Ô%6Ñ6Ô;WÐ:WÑWôð ×-Ñ-ô/ð�FØÜ"Ô%6Ñ6Ô:VÑVôð ×-Ñ-ô/ð �Fˆ5ƒM�&×9Ñ9Ô:ð�FØÜ"Ô%6Ñ6Ô;WÐ:WÑWôð ×-Ñ-ô/ð�FØÜ"Ô%6Ñ6Ô:VÑVôð ×-Ñ-ô/ð �Fˆ5ƒM�&×9Ñ9Ô:ð )�Fˆ7œ<Ô(¨×)=Ñ)=Ô>à&�Fˆ5œÔ& v×'HÑ'HÔIØ&�Fˆ5œÔ& v×'HÑ'HÔIà�Fˆ5ƒM�&×%Ñ%Ô&Ø�Fˆ5ƒM�&×%Ñ%Ô&Ø6�Fˆ;Ô5Ô6°v×7JÑ7JÔKð �Fˆ8Ó�V×)Ñ)Ô*ä! ,´Ó8Ð8rB   )r•   r1   rm   z%Callable[..., Callable[[_TOF], _TOF]])r•   r1   rm   z#Callable[..., Callable[[_OF], _OF]])rm   rš   )rm   r2   )XÚ
__future__r   rº   r½   Úenumr   Ú	itertoolsr   Útypingr   r   r   r	   Ú"prompt_toolkit.application.currentr
   Úprompt_toolkit.bufferr   r   r   r   Úprompt_toolkit.clipboardr   Úprompt_toolkit.documentr   Úprompt_toolkit.filtersr   r   r   r   r   r   Úprompt_toolkit.filters.appr   r   r   r   r   r   r   r   r   r    r!   r"   r#   Ú!prompt_toolkit.input.vt100_parserr$   Ú#prompt_toolkit.key_binding.digraphsr%   Ú(prompt_toolkit.key_binding.key_processorr&   r'   Ú#prompt_toolkit.key_binding.vi_stater(   r)   Úprompt_toolkit.keysr*   Úprompt_toolkit.searchr+   Úprompt_toolkit.selectionr,   r-   r.   r•   r0   r1   r2   Únamed_commandsr4   Ú__all__r‘   Úascii_lowercaserq  r9   rE   ÚTextObjectFunctionrq   rœ   ÚOperatorFunctionr�   r¨   rª   r¬   r¯   r²   r´   r5   r6   rA   rB   rC   Ú<module>rP     s”  ðå "ã Û Ý Ý  ß 5Ó 5å 6ß HÓ HÝ 2Ý ,÷÷ ÷÷ ÷ õ õ :Ý 8ß Lß HÝ $Ý 1ß MÑ Mç OÑ OÝ 'ð Øð€ð
 €à×(Ñ(€à# lÑ2Ð ô�Tô ÷e,ñ e,ðR ˜q˜c :˜oÑ.Ð ÙˆvÐ/Ô0€ðs!Øðs!à*ós!ðn ˜Q 
˜O¨TÐ1Ñ2Ð ÙˆeÐ+Ô,€ðHØðHà(óHðV ò2ó ð2ð òó ðð ò:ó ð:ð ò/ó ð/ð
 ò-ó ð-óz9ôz7)9rB   