+
   Xdmc                   s   R t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIHtHtHt ^ RIHt ]! RR	4       ^ R
IHt ]! RR4       ^ RIHt ]! RR4       ^ RIHt ^ RIt^ RIt]P0                  ! R4      tR R lt]]n        ]! ^ 4      t ]! ]! ]P>                  ! R4      4      4      t]P>                  ! R4      '       d4   ]PD                  PG                  ]! ]P>                  ! R4      4      R4      t$M+]PD                  PG                  ]PJ                  ! 4       R4      t$]P>                  ! R4      '       d4   ]PD                  PG                  ]! ]P>                  ! R4      4      R4      t&M+]PD                  PG                  ]PJ                  ! 4       R4      t&R R lt']'! 4       t(](PR                  '       d   ^ RI*t*^ RI+t+^ RI,t,]*PZ                  ! 4       t.](P^                  '       d   ^ RI0H1t1H2t2H3t3 M^ RI4t4 ! R R4      t5R R  lt6R(R! R" llt7R# R$ lt8R% R& lt9]:R'8X  d
   ]9! 4        R# R#   ] ]!3 d    ]! ^ 4      t ELi ; i))z%
Main program of ibus-typing-booster
Any)Union)Type)OptionalN)signalSIGTERMSIGINT)require_versionIBusz1.0)r	   Gioz2.0)r
   GLib)r   ibus-typing-boosterc                s    V ^8  d   QhR\         \        ,          R\        R\        \        P                  ,          RR/# )   exc_type	exc_valueexc_tracebackreturnN)r   ZBaseExceptionr   typesZTracebackTypeformat   "-/usr/share/ibus-typing-booster/engine/main.py__annotate__r   2   s@      =! E//0 
	    c                s    \        V \        4      '       d   \        P                  ! WV4       R# \        P                  RWV3R7       R# )zLog any unhandled exception.NzUnhandled exception)Zexc_info)Z
issubclassKeyboardInterruptsysZ__excepthook__LOGGERZerror)r   r   r   s   &&&r   log_unhandled_exceptionr   2   sA     (-..8>
LL}5  r   ZIBUS_TYPING_BOOSTER_DEBUG_LEVELZIBUS_TYPING_BOOSTER_LOCATIONZiconszshare/ibus-typing-booster/iconsZ IBUS_TYPING_BOOSTER_LIB_LOCATIONzibus-setup-typing-boosterz!libexec/ibus-setup-typing-boosterc                s$    V ^8  d   QhR\         /# )r   r   r    r   r   r   r   r   Y   s     $ $C $r   c            	     s2   \         P                  ! 4       p V P                  RRRRRRR7       V P                  RR	RR
RRR7       V P                  RRRRRRR7       V P                  RRRRRRR7       V P                  RRRRRRR7       V P                  4       # )z Parse the command line argumentsz--daemonz-dZ
store_truedaemonFz#Run as daemon, default: %(default)s)ZactionZdestdefaultZhelpz--ibusz-iibusz+Set the IME icon file, default: %(default)sz--xmlz-xxmlz1output the engines xml part, default: %(default)sz
--no-debugz-nno_debugz	--profilez-pprofilezXDo not write log file ~/.local/share/ibus-typing-booster/debug.log, default: %(default)szWprint profiling information into the debug log. Works only when --no-debug is not used.)argparseZArgumentParserZadd_argument
parse_args)Zparsers    r   r$   r$   Y   s    $$&F
D2  4 $:  < @  B d!  " T4  5 r   )Element
SubElementtostringc                   sp   a  ] tR t^t o RtV 3R lR ltV 3R lR ltV 3R lR ltRV 3R	 lR
 lltRt	V t
R# )IMAppzInput method application classc                $   < V ^8  d   QhRS[ RR/# )r   exec_by_ibusr   N)Zboolr   __classdict__   "r   r   IMApp.__annotate__   s     .< .<T .<d .<r   c                s   \         ^8  d   \        P                  RV4       \        P                  ! 4       V n        \        P                  ! 4       V n        V P                  P                  RV P                  4       \        P                  ! V P                  4      V n        RV n        V'       d   V P                  P                  R^ 4       R# \        P                   ! RR\"        P$                  ! 4       RRRRR	7      V n        R
pRpRpRpRp\(        P*                  P-                  \.        R4      p\(        P0                  ! V\(        P2                  4      '       g   RpRpRp	\        P4                  ! VVVVRVVVV	R7	      p
V P&                  P7                  V
4       V P                  P9                  V P&                  4       R# )   z IMApp.__init__(exec_by_ibus=%s)
ZdisconnectedFz&org.freedesktop.IBus.IbusTypingBoosterzTyping Booster ComponentGPLz0http://mike-fabian.github.io/ibus-typing-boosterr   )namedescriptionZversionlicenseauthorZhomepageZ
textdomaintyping-boosterTyping Booster,A completion input method to speedup typing.tibus-typing-booster.svg r      🚀)	r1   longnamer2   languager3   r4   iconlayoutsymbolNIMike FABIAN <mfabian@redhat.com>, Anish Patil <anish.developer@gmail.com>)DEBUG_LEVELr   debugr   ZMainLoop_IMApp__mainloopr	   ZBusZ_IMApp__busZconnect_IMApp__bus_destroy_cbfactoryZEngineFactory_IMApp__factory	destroyedZrequest_nameZ	Componentitb_versionZget_versionZ_IMApp__componentospathjoinICON_DIRaccessF_OKZ
EngineDescZ
add_engineZregister_component)selfr*   r1   r<   r2   r=   r4   r>   r?   r@   engines   &&         r   __init__ZIMApp.__init__   sh   ?LL<lK--/XXZ


>4+@+@A ..tzz:JJ##8!=  $~~=6#//1DK0 2D $D'HHKH>  77<<*CDD99T277++FF__$.61<.6-2,2*.,2,24F ''/JJ))$*:*:;r   c                   < V ^8  d   QhRR/# r   r   N r+   r-   r   r   r.      s        T  r   c                s    \         ^8  d   \        P                  R4       \        P                  '       d   \
        P                  4        V P                  P                  4        V P                  4        R# )z Run the input method applicationzIMApp.run()
N)
rB   r   rC   _ARGSr"   _PROFILEZenablerD   runrE   rP      &r   rX   Z	IMApp.run   sD    ?LL)===OOr   c                rS   rT   rU   r+   r-   r   r   r.      s        d  r   c                sf    \         ^8  d   \        P                  R4       V P                  4        R# )z!Quit the input method applicationzIMApp.quit()
N)rB   r   rC   rE   rY   rZ   r   quitZ
IMApp.quit   s"    ?LL)*r   Nc                r)   )r   busr   Nr    r+   r-   r   r   r.      s     H HC H4 Hr   c                s   \         ^8  d   \        P                  RV4       V P                  '       d   R# \        P	                  R4       V P
                  P                  4        RV n        V P                  P                  4        \        P                  '       d   \        P                  4        \        P                  ! 4       p\        P                   ! \        VR7      pVP#                  4        VP%                  R4       VP'                  R^4       VP'                  R^4       VP'                  R	^4       VP'                  R
^4       VP'                  R^4       \        P	                  RVP)                  4       4       R# R# )r/   zIMApp.__bus_destroy_cb(bus=%s)
Nzfinalizing:)T)ZstreamZ
cumulativeZ	tabsqliteZhunspell_suggestZhunspell_tableitb_utilZ	itb_emojizProfiling info:
%s)rB   r   rC   rH   inforG   Z
do_destroyrD   r[   rV   r"   rW   ZdisableioZStringIOpstatsZStatsZ
strip_dirsZ
sort_statsZprint_statsZgetvalue)rP   r\   Zstats_streamZstatss   &&  r   Z__bus_destroy_cbZIMApp.__bus_destroy_cb   s   ?LL;SA>>>N#!!#===;;=LLL,?E\*k2.0"5.3j"-k2.KK-|/D/D/FG r   )Z__busZ__componentZ	__factoryZ
__mainlooprH   N)__name__Z
__module__Z__qualname__Z__firstlineno____doc__rR   rX   r[   rE   Z__static_attributes__Z__classdictcell__)r,   s   @r   r(   r(      s9     (.< .<`      H H Hr   r(   c                s(    V ^8  d   QhR\         RR/# )r   ima_insr   N)r(   r   r   r   r   r      s      U t r   c                sP    V P                  4        \        P                  ! 4        R# )zC
Clean up when the input method application was killed by a signal
N)r[   r   exit)rd   rZ   r   cleanuprf      s     LLNHHJr   c                s4    V ^8  d   QhR\         R\        RR/# )r   elementlevelr   N)r   intr   r   r   r   r      s!      C  D r   c                s   RVR,          ,           pV f   R# \        V 4      '       d   V P                  '       d!   V P                  P                  4       '       g   VR,           V n        RpV  FY  pTp\        WA^,           4       VP                  '       d#   VP                  P                  4       '       d   KK  VR,           Vn        K[  	  Ve=   VP                  '       d!   VP                  P                  4       '       g	   W#n        R# R# R# V'       d=   V P                  '       d!   V P                  P                  4       '       g	   W n        R# R# R# )z#Use to format xml Element pretty :)
z    N)ZlentextZstripindentZtail)rg   rh   ZiZlast_subelementZ
subelements   &&   r   rl   rl      s    uV|A
7|||||7<<#5#5#7#7v:GL!J(O:Qw'???*//*?*?*A*A"#f*
	 "
 '$)))1E1E1K1K1M1M#$  2N ( ',,,gll.@.@.B.BL /C5r   c                    V ^8  d   QhRR/# rT   rU   r   r   r   r   r     s     C; C;4 C;r   c                 s(   \         P                  ! 4       p \        V P                  4       4      p\        R.4      p\	        W,
          4      R.,           pR8pR9R:R;R<R=R>R?R@RARBRCRDRERFRGRHRIRJRKRRP                  V4      ,           R,           ^3RLRMRNRORPRQRR.pRR.p\        R4      pV EF  p\        VR	4      p	Rp
R
pRpRpRpRpRpRp\        P                  P                  \        R4      pRpRp\         P                  ! R4      '       d   \         P                  ! 4       RS8  d   RpRp^ pRpVR8w  d   VP                  R^R7      w  ppRV RV 2p
RV RV R2p^ pV F'  w  pp\        P                  ! VV
4      '       g   K%  Tp M	  RpV F$  p\        P                  ! VV
4      '       g   K"  Rp M	  Rp\         P                    F'  w  pp\        P                  ! VV
4      '       g   K%  Tp M	  V R2pTpV P#                  V4      pV P%                  V4      p\&        RV
 2,           p\(        P*                  ! R VR!7      p\         P,                  ! VP/                  R"4      4      pVe   Tp\        V	R$4      p V
V n        \        V	R%4      p!VV!n        \        V	R&4      p"VV"n        \        V	R'4      p#VV#n        \        V	R(4      p$VV$n        \        V	R)4      p%VV%n        \        V	R*4      p&VV&n        \        V	R+4      p'VV'n        \        V	R,4      p(VV(n        \        V	R-4      p)VV)n        \        V	R.4      p*VV*n        \        V	R/4      p+VV+n        \        V	R04      p,VV,n        \        V	R14      p-\3        V4      V-n        EK  	  \5        V4       \7        VR2R3R47      P9                  R54      p.\        P:                  ! R64      p/V/P=                  RV.4      p.\>        P@                  PB                  PE                  V.R7,           PG                  R54      4       R## )Tz>
Writes the XML to describe the engine(s) to standard output.
ZNoIMEr5   ztb:(Z|z):[^:]+ztb:[^:]+:.*inscript.*ztb:si:.+ZenginesrQ   r6   r8   r0   rA   r   r:   r9   r7   r;   Zgnomeu   🚀︎Z	InputModez,/org/freedesktop/ibus/engine/typing-booster/Z-)Zmaxsplitztb:Z:z /org/freedesktop/ibus/engine/tb/Z/zlv3:ralt_switchz (tb)z --engine-name z*org.freedesktop.ibus.engine.typing-booster)ZschemarK   ZinputmodetruesymbolNr1   r<   r=   r3   r4   r>   r?   layout_variantlayout_optionr2   r@   setupicon_prop_keyrankZutf8r    )encodingZmethodzutf-8z
<\?.*\?>\nrj   )ZasZbnZbrxZdoiZdraZdvZguZhiZknZksZmaiZmlZmniZmrZneZnewZorZpaZsaZsatZsdZsiZtaZte)ztb:si:samanala    )ztb:[^:]+:.*inscript2.*i   )ztb:te:inscript   )ztb:ta:tamil99ru   )ztb:si:wijesekararu   )ztb:sd:inscriptru   )ztb:sa:harvard-kyotoru   )ztb:pa:inscriptru   )ztb:or:inscriptru   )z	tb:ne:romru   )ztb:mr:inscriptru   )ztb:ml:inscriptru   )ztb:mai:inscriptru   )z	tb:ks:kbdru   )z	tb:kn:kgpru   )ztb:hi:inscriptru   )ztb:gu:inscriptru   )ztb:bn:inscriptru   )ztb:as:inscriptru   )z	tb:ar:kbdr   )ztb:ja:anthy)ztb:zh:pyrv   )ztb:zh:py-gbrv   )ztb:zh:py-b5rv   )z
tb:ko:han2rv   )ztb:ko:romajarv   )i0   ru   )$r]   Z
M17nDbInfoZsetZget_imesZsortedrL   r%   r&   rJ   rK   rM   Z
is_desktopZget_gnome_shell_versionZsplitreZ	fullmatchZM17N_IME_SYMBOLSZget_iconZget_description
SETUP_TOOLr
   ZSettingsZvariant_to_valueZget_user_valuerk   strrl   r'   ZdecodeZcompileZsubr   ZstdoutZbufferZwriteZencode)0Zm17n_db_infoZm17n_input_methodsZm17n_input_methods_skipZsupported_input_methodsZindic_languagesZrank_patternsZralt_switch_patternsZegsZimeZ_enginer1   r<   r=   Zengine_licenser4   r?   rn   ro   r>   r2   r@   rq   rr   Zschema_pathZ	m17n_langZ	m17n_nameZpatternZpattern_rankZpattern_symbolrp   Z	gsettingsZuser_symbolZ_nameZ	_longnameZ	_languageZ_licenseZ_authorZ_iconZ_layoutZ_layout_variantZ_layout_optionZ_descZ_symbolZ_setupZ_icon_prop_keyZ_rankZegsoutZpatts0                                                   r   	write_xmlrz     so    &&(L\2245!#  %4	OD 	 	' 	 # 
C::o.	.	;Q? 	[.Mb 	!
 )
C&  #> ww||H&?@D((002g= "F#D""#&99S19#= Iy1YK0D='[)A7KD)6%<<..'D *7 F/<<.. %6M 0 F+3+D+D'<<..+F ,E e}H H ))#.D&66s;Ktf55LL?	 //$$%:;=" F7F+
w
3	!	w
3	!	gy1&Wh/7F+
Wh/$W.>?-#G_=+7M2 
Wh/GW-#G_=+7F+Y
{ '@ 3KfU,,2F7O ::m$DXXb&!FJJVD[009:r   c                rm   rT   rU   r   r   r   r   r     s     - -d -r   c                 sr  a \         P                  '       d   \        4        R# \        P                  ! 4       p \         P
                  '       g   \        P                  ! \        P                  P                  R4      \        P                  4      '       g   \        P                  ! R4       \        P                  P                  R4      p\        P                  P                  VR^^RRRRR7      p \        P                  ! R	4      pV P                  V4       \         P#                  \        P$                  4       \         P'                  V 4       \         P)                  R
4       \*        P,                  ! R4       \         P.                  '       d1   \        P0                  ! 4       '       d   \2        P4                  ! 4        \7        \         P8                  4      o\;        \<        V3R l4       \;        \>        V3R l4        SPA                  4        R#   \B         d    SPE                  4         R# i ; i)zMain programNz"~/.local/share/ibus-typing-boosterz+mkdir -p ~/.local/share/ibus-typing-boosterz,~/.local/share/ibus-typing-booster/debug.logZmidnightzUTF-8F)ZwhenZintervalZbackupCountrs   ZdelayZutcZatTimezP%(asctime)s %(filename)s line %(lineno)d %(funcName)s %(levelname)s: %(message)sz********** STARTING **********zibus-engine-tbc                    < \        S4      # ra   rf   ZsignumZstack_frameima   &&r   <lambda>main.<locals>.<lambda>  s	    r   c                 r{   ra   r|   r}   r   r   r   r     s	    ws|r   )#rV   r    rz   loggingZNullHandlerr!   rJ   rN   rK   Z
expanduserrO   ZsystemZhandlersZTimedRotatingFileHandlerZ	FormatterZsetFormatterr   ZsetLevelZDEBUGZ
addHandlerr^   r]   Zset_program_namer   Zforkr   re   r(   r   r   r   r   rX   r   r[   )Zlog_handlerZlogfileZlog_formatterr~   s      @r   mainr     s   yyy !  >>>yy""#GH  IICD''$$:<&&?? @  %%	M ]+
OOGMM"
k"
KK01./|||7799HHJ



C
7<=
6;<	   

s   H H65H6Z__main__)rt   );rc   Ztypingr   r   r   r   r   rJ   r   r#   rw   r   Zlogging.handlersr   r   r   Zgir   Zgi.repositoryr	   r
   r   r]   rI   Z	getLoggerr   r   Z
excepthookri   rB   ry   ZgetenvZ	TypeErrorZ
ValueErrorrK   rL   rM   Z
get_prefixrx   r$   rV   r"   ZcProfiler`   r_   ZProfilerW   r    Zxml.etree.ElementTreer%   r&   r'   rF   r(   rf   rl   rz   r   rb   rU   r   r   <module>r      s  (      	 
  	   * *     u       			0	1 )!fc"))$EFGHK 99+,,ww||BII456H ww|| "CEH 99/00BII89:#%J  +-J$L 	===!H999CC$ UH UHn*C;J-^ zF } 	: a&Ks   $I II