
    c                       d dl mZ d dlZdej        v sdej        v s ed          	 d dlZ ej        dd           d dlmZ  ej        d	d
           d dlmZ  ej        dd           d dlm	Z	  ej        dd           d dlm
Z
  ej        dd           d dlmZ  ej        dd           d dlmZ  ej        d           n# e$ r  ed          w xY wd dlZd dlZd dlZd dlmZ d dlZd dlZd dlZd dl mZmZmZ d dlmZ d dlmZ dZdZda d Z!d Z"d  Z#d! Z$ ej%        d"          Z&d# Z'd$ Z(dqd&Z)d' Z* G d( d)ej+                  Z, G d* d+e,          Z- G d, d-e,          Z. G d. d/ej+                  Z/ G d0 d1e0          Z1 G d2 d3e0          Z2 G d4 d5ej3        ej4                  Z5 G d6 d7ej+                  Z6 G d8 d9ej4                  Z7 G d: d;e8          Z9 G d< d=e0          Z: G d> d?e:          Z; G d@ dAe;          Z< G dB dCe;          Z= G dD dEe=          Z> G dF dGe;          Z? G dH dIe;          Z@ G dJ dKe@          ZA G dL dMe;          ZB G dN dOe@          ZC G dP dQe;          ZD G dR dSe;          ZE G dT dUe;          ZF G dV dWeF          ZG G dX dYe;          ZH G dZ d[e;          ZI G d\ d]e;          ZJ G d^ d_e;          ZK G d` daejL                  ZM G db dce:ejN                  ZO G dd dee:ejN                  ZP G df dge:ejQ                  ZRdh ZSdi ZTdj ZUe=e>eBeCeDeFeEeGeHeIeAeJe?dkZVeOeRePdlZWdm ZXdn ZYdo ZZdp Z[dS )r    )UINotImportableNDISPLAYWAYLAND_DISPLAYz7No graphical display detected, falling back to text UI.GLibz2.0)r   Pangoz1.0)r   Gdkz3.0)r   	GdkPixbuf)r	   Gtk)r
   	GtkSource4)r   cairoz?Please install the reportbug-gtk package to use this interface.)Queue)	NoPackageNoBugsQuertBTSError)debbugs)launch_browserTz"/usr/share/pixmaps/debian-logo.pngc                 T    | t           k    rdS | t          k    rdS t          |           S )Nz<MainContext of UI thread>z!<MainContext of reportbug thread>)
ui_contextreportbug_contextrepr)contexts    5/usr/lib/python3/dist-packages/reportbug/ui/gtk_ui.py_describe_contextr   O   s1    *++	%	%	%22G}}    c                     t           j                                        }|| k    r/t          dt	          |           dt	          |                    |                                st          d          d S )NzFunction should be called in z but was called in z*Function should be called with %s acquired)r   MainContextref_thread_defaultAssertionErrorr   is_owner)expectedreallys     r   _assert_contextr#   X   s    0022F n/9999;LV;T;T;TV W W 	W ?? KIJJJK Kr   c                  f    t          j        t          j                    t          j                   d S N)oskillgetpidsignalSIGINT r   r   _exitr,   d   s"    GBIKK'''''r   c                     d| z  S )N	<b>%s</b>r+   ss    r   	highlightr1   h   s    ?r   z<.*?>c                 8    t                               d|           S N )re_markup_freesubr/   s    r   markup_freer7   o   s    b!$$$r   c                 V    |                                  } | d         dv r
| d d         S | S )N)?:)stripr/   s    r   ask_freer=   s   s0    			Au
"vHr   Fc                 ^   t          t                     t          j                    }|                    t          j        j                   |                    t          j        j	        t          j        j	                   |r|
                    |            n|                    |            |S r%   )r#   r   r
   ScrolledWindowset_shadow_type
ShadowType	ETCHED_IN
set_policy
PolicyType	AUTOMATICadd_with_viewportadd)widgetwith_viewportscrolleds      r   create_scrollablerK   z   s    J!##HS^56660#.2JKKK ""6****VOr   c                 f   t          t                     t          j        t          t          j        j        t          j        j        z  t          j        j	        t          j
        j        |           }|                    dd            |                    d           |                                 d S )Nresponsec                 *    |                                  S r%   destroy)dargss     r   <lambda>zinfo_dialog.<locals>.<lambda>   s    		 r   	Reportbug)r#   r   r
   MessageDialog	assistantDialogFlagsMODALDESTROY_WITH_PARENTMessageTypeINFOButtonsTypeCLOSEconnect	set_titleshow_all)messagedialogs     r   info_dialogrc      s    Jy#/*?#/Be*e"3S_5JGU UF
NN:;;<<<
[!!!
OOr   c                       e Zd Zd ZdS )CustomDialogc                 :   t          t                     t          j                            | dt
          t          j        j        t          j        j        z  |           | 	                    |d                    | 
                    d           t          j        d          }|
                    d           | j                            |ddd           t          j        d          }|                    |d	dd           t          j        d
d
dd          }|                    |d	dd           t          j                            |t          j        j                  }	|                    |	ddd           t          j        |          }
|
                    d           |
                    t          j        j                   |
                    d           |
                    dd	           |                    |
d	dd            | j        |g|R i | d S )NrT   r9      
   spacing   Tr   Fg      ?g      ?)xalignyalignxscaleyscalelabel	can-focus)r#   r   r
   Dialog__init__rV   rW   rX   rY   set_default_responseset_border_widthVBoxvbox
pack_startHBox	AlignmentImagenew_from_stockIconSizeDIALOGLabelset_line_wrapset_justifyJustificationFILLset_selectableset_propertysetup_dialog)selfstock_imagera   buttonsrR   kwargsrx   hboxalignimagerq   s              r   rt   zCustomDialog.__init__   s   
###
D+yO1CO4WW#	% 	% 	% 	!!'"+...a   x###a   	T4q111 x###eT1---
 SSMMMudA...	((cl6IJJtT1---	(((D!!!#+0111T""";...udA...$000000000r   N__name__
__module____qualname__rt   r+   r   r   re   re      s#        !1 !1 !1 !1 !1r   re   c                        e Zd Zd Zd Zd ZdS )InputStringDialogc           	          t          t                     t                              | t          j        |t          j        t          j        j        t          j	        t          j        j
        f           d S r%   )r#   r   re   rt   r
   STOCK_DIALOG_INFOSTOCK_CANCELResponseTypeCANCELSTOCK_OKACCEPT)r   ra   s     r   rt   zInputStringDialog.__init__   sa    
###dC$97"/1A1H"|S-=-DF	G 	G 	G 	G 	Gr   c                     t          t                     t          j                    | _        |                    | j        ddd           d S )NFTr   )r#   r   r
   Entryentryry   r   rx   s     r   r   zInputStringDialog.setup_dialog   s=    
###Y[[

E433333r   c                 \    t          t                     | j                                        S r%   r#   r   r   get_textr   s    r   	get_valuezInputStringDialog.get_value   $    
###z""$$$r   N)r   r   r   rt   r   r   r+   r   r   r   r      sD        G G G4 4 4
% % % % %r   r   c                   L    e Zd Zed             Zed             Zd Zd Zd ZdS )ExceptionDialogc                 >     t          t                      fd}|S )Nc           
          r | ||           t                               j        d                    t	          j        | ||                               d S r3   )applicationrun_once_in_main_threadstart_dialogjoin	tracebackformat_exception)exctypevaluetbclsoldhooks      r   
excepthookz5ExceptionDialog.create_excepthook.<locals>.excepthook   sl     ,+++//0@02	8RSZ\ace8f8f0g0gi i i i ir   r#   r   )r   r   r   s   `` r   create_excepthookz!ExceptionDialog.create_excepthook   s?    )***	i 	i 	i 	i 	i 	i r   c                     t          t                     	  | |          }|                                 d S # t          $ r t	                       Y d S w xY wr%   )r#   r   r`   	Exceptionr,   )r   r   rb   s      r   r   zExceptionDialog.start_dialog   sb    
###	SWWFOO 	 	 	GGGGGG	s   7 AAc                     t          t                     t                              | t          j        dt          j        t          j        j        f|           d S )NzSAn error has occurred while doing an operation in Reportbug.
Please report the bug.)	r#   r   re   rt   r
   STOCK_DIALOG_ERRORSTOCK_CLOSEr   r]   )r   r   s     r   rt   zExceptionDialog.__init__   su    
###dC$:  =S  VY  Ve  gj  gw  g}  U~  @B  	C  	C  	C  	C  	Cr   c                    t           j                            d          }|                    |ddd           t          j                    }|                    d           |                                                    |           t          |          }|	                    |           | 
                    d| j                   d S )NzMore detailsTr   FrM   )r
   Expandernew_with_mnemonicry   TextViewset_editable
get_bufferset_textrK   rG   r^   on_response)r   rx   r   expanderviewrJ   s         r   r   zExceptionDialog.setup_dialog   s    <11.AA$a000|~~%   ""2&&&$T**XZ!122222r   c                 J    t          t                     t                       d S r%   r#   r   r,   r   rb   ress      r   r   zExceptionDialog.on_response       
###r   N)	r   r   r   classmethodr   r   rt   r   r   r+   r   r   r   r      sx        
 
 [
   [C C C3 3 3    r   r   c                       e Zd Zd Zd ZdS )ReportViewerDialogc           
         t          t                     t          j                            | dt
          t          j        j        t          j        j        z  t          j	        t          j
        j        t          j        t          j
        j        f           || _        |                     dd           |                     t          j
        j                   |                     d           |                     d| j                   t          j                    }|                                                    | j                   | j                            t3          |          ddd           |                                  d S )NrT     rk   rM   Tr   )r#   r   r
   rs   rt   rV   rW   rX   rY   
STOCK_COPYr   APPLYr   r]   ra   set_default_sizeru   rv   r^   r   r   r   r   rx   ry   rK   r`   )r   ra   r   s      r   rt   zReportViewerDialog.__init__   s*   
###
D+yO1CO4WW ^S-=-C _c.>.DF	G 	G 	G c3'''!!#"2"8999a   Z!1222|~~""4<000	.t44dD!DDDr   c                    t          t                     |t          j        j        k    rFt          j                            t          j                  }|	                    | j
        d           d S |                                  d S )Nr9   )r#   r   r
   r   r   	Clipboardgetr   SELECTION_CLIPBOARDr   ra   rP   )r   rb   r   	clipboards       r   r   zReportViewerDialog.on_response  sj    
### #"((())#*ABBIt|R00000LLNNNNNr   N)r   r   r   rt   r   r+   r   r   r   r      s2          &    r   r   c                       e Zd ZdZd Zd ZdS )Bugz(Encapsulate a bug report for the GTK+ UIc                 Z   |j         | _        d                    |j                  | _        |j        | _        |j        | _        |j        | _	        |j
        | _
        |j        | _        d                    |j                  | _        |j
        | _        |j        | _        |j        | _        d S )Nz, )bug_numidr   tagstagpackagependingstatus
originatorreporterdateseverityfound_versionsversion
filed_datelog_modifiedmodified_datesubjectinfo)r   bugs     r   rt   zBug.__init__  s    +99SX&&{kH	yy!344( -K			r   c              #      K   | j         V  | j        V  | j        V  | j        V  | j        V  | j        V  | j        V  | j        V  | j        V  | j	        V  | j
        V  d S r%   )r   r   r   r   r   r   r   r   r   r   r   r   s    r   __iter__zBug.__iter__"  s      ghlikmimlo      r   N)r   r   r   __doc__rt   r   r+   r   r   r   r     s8        22     ! ! ! ! !r   r   c                   :    e Zd Zd Zd Zd Zd Zd ZddZd	 Z	d
S )	BugReportc                 $   |                     d          }d}g | _        |t          |          k     re||         }|dz  }|                                snC| j                            |           |                    d          rn|t          |          k     ed}g }d}|t          |          k     rl||         }|                    |           |dz  }|                                s|dk     r|dz  }U|dk    r|dk    s|dk    rd	}nd}|t          |          k     l|rId                    |d d
                   | _        d                    ||dz
  d                    | _        d S d                    |d d                   | _        d| _        d S )N
r      zSubject:F   z-- Package-specific info:z-- System Information:Tr4   )	splitheaderslenr<   append
startswithr   original_infoothers)r   ra   linesilinestorer   	has_others           r   rt   zBugReport.__init__1  s   d###e**nn8DFA::<< L%%%z**  #e**nn 	#e**nn8DKKFA::<< 199QJEzzt'BBBdNfFfFf 	E #e**nn  	!%49!5!5D))E!a%&&M22DKKK!%49!5!5DDKKKr   c                     | j         S r%   )r   r   s    r   
get_otherszBugReport.get_othersV  s
    {r   c                     | j         S r%   )r   r   s    r   get_original_infozBugReport.get_original_infoY  s    !!r   c                 T    | j         D ]}d|v r|t          d          d          c S  d S NSubject	Subject: )r   r   )r   headers     r   get_subjectzBugReport.get_subject\  sL    l 	1 	1FF""c+..//0000 #	1 	1r   c                     t          t          | j                            D ]!}d| j        |         v rd|z   | j        |<    d S "d S r  )ranger   r   )r   r   r  s      r   set_subjectzBugReport.set_subjecta  sZ    s4<(()) 	 	ADLO++"-"7Q ,	 	r   O   Fc                     d}d}|                                 D ]U}|r||dz   z  }|                                sd}#t          j        |||          }|d                    |          dz   z  }V|S )z8Wrap every line in the message, except the pseudoheadersr4   Tr   F)widthbreak_long_words)
splitlinesr<   textwrapwrapr   )r   msgr  r  bodypheadr  tmps           r   wrap_bug_bodyzBugReport.wrap_bug_bodyg  s     NN$$ 
	* 
	*D t#zz|| "!E -E1AC C CCDIIcNNT))DDr   c                     | j         rGd                    d                    | j                  |                     |          | j                   S d                    d                    | j                  |                     |                    S )Nz	{}
{}

{}r   z{}
{}
)r   formatr   r   r  r   r   s     r   create_messagezBugReport.create_message{  sx    ; 	i!((4<)@)@$BTBTUYBZBZ\`\ghhh  4<!8!8$:L:LT:R:RSSSr   N)r  F)
r   r   r   rt   r  r	  r  r  r  r"  r+   r   r   r   r   0  s        # # #J  " " "1 1 1
     (T T T T Tr   r   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
BugPagec
                    t          t                     t          j                            |            t
          j                            |            |                     d           t          j	                    | _
        || _        || _        | j        j        | _        || _        || _        || _        || _        || _        || _        |	| _        d | _        t          j        d          }
|
                    t          j        d          ddd           t          j                    | _        | j                            d           |
                    | j        ddd           |                     |
           d S )	NT   ri   zRetrieving bug information.rp   Fr   {Gz?)r#   r   	threadingThreadrt   r
   EventBox	setDaemonr   r   r   rb   rV   r   number	queryonlybtsmirrors
http_proxytimeoutarchived
bug_statusrw   ry   r   ProgressBarprogressset_pulse_steprG   )r   rV   rb   r,  r-  r.  r/  r0  r1  r2  rx   s              r   rt   zBugPage.__init__  s=   
###!!$'''d###t'))">5"$ x###	(EFFFtUVWWW))$$T***udA666r   c                    | j                                         st          d          | j                                          t	          j        d| j                   t          j        t          | j
                  | j        | j        | j        | j        | j                  }|s!| j                            | j                   d S |d         | _        | j                            | j        |           d S )Nz%Could not acquire my own main-contextrh   )r/  r0  r2  r   )r   acquirer   push_thread_defaultr   timeout_addpulser   
get_reportintr,  r1  r.  r/  r0  r2  r   r   	not_foundr3  foundr!  s     r   runzBugPage.run  s    |##%% 	J !HIII((*** 	TZ(((!#dk"2"2DL"&(DL-1_t}V V V  	G44T^DDDDD"1gDO44TZFFFFFr   c                     t          t                     |                                 }|r+|                     |           |                                 d S d S r%   )r#   r   	get_childremoveunparent)r   childs     r   drop_progressbarzBugPage.drop_progressbar  sY    
###   	KKNN	 	r   c                     t          t                     | j                                         |                                 S r%   )r#   r   r5  r;  is_aliver   s    r   r;  zBugPage.pulse  s2    
###}}r   c                     t          t                     |                                  |                     t	          j        d                     |                                  d S )Nz-The bug can't be fetched or it doesn't exist.rp   )r#   r   rF  rG   r
   r   r`   r   s    r   r>  zBugPage.not_found  sS    
###!PQQQRRRr   c                    t          t                     |                                  |d         j        }|d         }t	          j        d          }|                    d           t	          j        d|z             }|                    d           |	                    t          j
        j                   |                    |ddd           t	          j                    }d}|D ]}t	          j                    }	|	                    d           |	                                                    |d d	                    |r%|	                    t          j        j        d           |                    |	ddd           | }t)          |d          }
|                    |
ddd           t	          j                    }t	          j        d
          }|                    d| j                   |                    |ddd           | j        st	          j        d          }|                    t          j                            t          j        t          j        j                             |                    d| j                    |                    |ddd           |                    |ddd           | !                    |           | "                                 d S )Nr   r   r&  ri   zDescription: rp   TFi'  zOpen in browserclickedReply)#r#   r   rF  r   r
   rw   rv   r   r   r   r   r   ry   r   r   r   r   set_state_flags
StateFlagsPRELIGHTrK   
HButtonBoxButtonr^   on_open_browserr-  	set_imager|   r}   
STOCK_EDITr~   BUTTONon_replyrG   r`   )r   r   descbodiesrx   rq   viewsoddr  r   rJ   bboxbuttons                r   r?  zBugPage.found  s   
###Awax###b!!!	$ 6777D!!!#+0111udA...

 
	 
	D<>>De$$$ OO&&tFUF|444 E$$S^%<eDDDT5$222'CC$UD11$a000~"3444y$"6777dA...~ 	3Zg...FSY55cnclFYZZ[[[NN9dm444OOFD$222eT1---r   c                     t          t                     t          t          j        | j        t          | j                  | j                             d S r%   )	r#   r   r   r   get_report_urlr.  r=  r,  r2  r   r\  s     r   rR  zBugPage.on_open_browser  sA    
###w-dhDK8H8H$-XXYYYYYr   c                     t          t                     | j                            | j                   | j                                         	 | j                                         d S # t          $ r Y d S w xY wr%   )
r#   r   r   set_next_valuer3  rV   forward_pagerb   rP   AttributeErrorr_  s     r   rV  zBugPage.on_reply  s~    
###''888##%%%	K!!!!! 	 	 	DD	s   A) )
A76A7N)r   r   r   rt   r@  rF  r;  r>  r?  rR  rV  r+   r   r   r$  r$    s          :G G G$    
  ( ( (TZ Z Z    r   r$  c                        e Zd Zd Zd Zd ZdS )
BugsDialogc                    t          t                     t          j                            | d|t          j        j        t          j        j        z  t          j        t          j	        j
        f           || _        || _        |j        | _        t          j                    | _        | j                            | j        ddd           |                     d| j                   |                     dd           d S )NzReportbug: bug informationTr   rM   X  )r#   r   r
   rs   rt   rW   rX   rY   r   r   r]   rV   r-  r   Notebooknotebookrx   ry   r^   r   r   )r   rV   r-  s      r   rt   zBugsDialog.__init__  s    
###
D">	O1CO4WW _c.>.DE	G 	G 	G #"$0	T]D$:::Z!1222c3'''''r   c                 .    |                                   d S r%   rO   r   rR   s     r   r   zBugsDialog.on_response  s    r   c                     t          | j        | || j        g|R  }| j                            |t          j        |                     |                                 d S )Nrp   )r$  rV   r-  ri  append_pager
   r   start)r   r,  rR   pages       r   show_bugzBugsDialog.show_bug  sW    t~tVT^KdKKK!!$	(?(?(?@@@

r   N)r   r   r   rt   r   rp  r+   r   r   re  re    sA        ( ( (      r   re  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	ReportbugApplicationc                     t          t                     t          j                            |            |                     d           t                      | _        d | _        d S NT)	r#   r   r(  r)  rt   r+  r   queue
next_valuer   s    r   rt   zReportbugApplication.__init__  sP    )***!!$'''tWW
r   c                     t                                           st          d          t                                            t	          j                     d S )NzCould not acquire UI context)r   r8  r   r9  r
   mainr   s    r   r@  zReportbugApplication.run"  sG    !!## 	A !?@@@&&(((




r   c                 \    t          t                     | j                                        S r%   )r#   r   ru  r   r   s    r   get_last_valuez#ReportbugApplication.get_last_value*  s#    )***z~~r   c                 z    t          t                     | j                            | j                   d | _        d S r%   )r#   r   ru  putrv  r   s    r   put_next_valuez#ReportbugApplication.put_next_value.  s1    
###
t'''r   c                 <    t          t                     || _        d S r%   )r#   r   rv  r   r   s     r   ra  z#ReportbugApplication.set_next_value3  s    
###r   c                 B    fd}t          j        |           d S )Nc                  @    t          t                       i  dS NFr#   r   )rR   funcr   s   r   callbackz>ReportbugApplication.run_once_in_main_thread.<locals>.callback:  s+    J'''D$!&!!!5r   )r   idle_add)r   r  rR   r   r  s    ``` r   r   z,ReportbugApplication.run_once_in_main_thread7  s@    	 	 	 	 	 	 	
 	hr   c                       fd}t          j        |                                            }t          |t                    r||S )Nc                      t          t                     	  i }                     |            n,# t          $ r}                    |           Y d }~nd }~ww xY w                                 dS r  )r#   r   ra  BaseExceptionr}  )reterR   r  r   r   s     r   r  z:ReportbugApplication.call_in_main_thread.<locals>.callbackD  s    J''')dD+F++ ##C(((( ! ' ' '##A&&&&&&&&'
 !!!5s   5 
AAA)r   r  rz  
isinstancer  )r   r  rR   r   r  r  s   ````  r   call_in_main_threadz(ReportbugApplication.call_in_main_threadA  sm    
	 
	 
	 
	 
	 
	 
	 
	 	h!!##c=)) 	IJr   N)
r   r   r   rt   r@  rz  r}  ra  r   r  r+   r   r   rr  rr    s}                   
              r   rr  c                       e Zd Zd ZdS )
SyncReturnc                 r    t          t                     t                              | |           || _        d S r%   )r#   r   RuntimeErrorrt   result)r   r  s     r   rt   zSyncReturn.__init__\  s2    )***dF+++r   Nr   r+   r   r   r  r  [  s#            r   r  c                       e Zd Zd Zd ZdS )ReportbugConnectorc                 .    t          t                     d S r%   r  r   rR   r   s      r   execute_operationz$ReportbugConnector.execute_operationc  s    
###r   c                 2    t          t                     ||fS r%   r   )r   rR   r   s      r   sync_pre_operationz%ReportbugConnector.sync_pre_operationi  s    )***V|r   N)r   r   r   r  r  r+   r   r   r  r  b  s2              r   r  c                       e Zd ZdZej        j        ZdZe	Z
 ej        d          Zd Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd ZdS )Pager   Fz#fff8aec                 &   t          t                     || _        |j        | _        |                                 | _        | | j        _        | j                            d           | j                                         t          j
        | _        d S )Nrk   )r#   r   rV   r   create_widgetrH   ro  rv   r`   r  next_page_numpage_num)r   rV   s     r   rt   zPage.__init__v  sw    
###"$0((**$$Q'''*r   c                 ^   t          t                     |                                  |                                  |                    dd          | _        |                    dd          | _         | j        |i | | j        	                                 | 
                                 d S )Nempty_okFpresubj)r#   r   	switch_inconnect_signalspopr  r  executerV   showsetup_focusr  s      r   r  zPage.execute_operation  s    
###

:u55zz)U33d%f%%%r   c                 .    t          t                     d S r%   r  r   s    r   r  zPage.connect_signals      
#####r   c                 n    t          t                     | j                            | j        |           d S r%   )r#   r   rV   set_page_completerH   )r   completes     r   r  zPage.set_page_complete  s0    
###((h?????r   c                 n    t          t                     | j                            | j        |           d S r%   )r#   r   rV   set_page_typerH   )r   types     r   r  zPage.set_page_type  s0    
###$$T[$77777r   c                 v    t          t                     |r"| j                            | j        |           d S d S r%   )r#   r   rV   set_page_titlerH   )r   titles     r   r  zPage.set_page_title  sB    
### 	>N))$+u=====	> 	>r   c                    t          t                     t          xj        dz  c_        | j                            | j        | j                   |                     | j	                   | 
                    | j                   |                     d           | j                            | j        t          j                            | j                             | j                            |            | j                                         d S )Nr   rT   )r#   r   r  r  rV   insert_pagerH   r  r  default_completer  	page_typer  set_page_side_imager	   Pixbufnew_from_file
side_imageset_next_pagecommitr   s    r   r  zPage.switch_in  s    
###a""4;>>>t45554>***K(((**4;	8H8V8VW[Wf8g8ghhh$$T***r   c                 `    t          t                     | j                                         d S r%   )r#   r   rH   
grab_focusr   s    r   r  zPage.setup_focus  s*    
###     r   c                     t          t                     | j                            | j                  r| j                                         d S d S r%   )r#   r   rV   get_page_completerH   rb  rk  s     r   activate_forwardzPage.activate_forward  sN    
###>++DK88 	*N'')))))	* 	*r   c                 .    t          t                     d S r%   r  r   s    r   
switch_outzPage.switch_out  r  r   c                 Z    t          t                     | j        rdS t          |          S rt  )r#   r   r  boolr  s     r   is_validzPage.is_valid  s+    
###= 	4;;r   c                    t          t                     |                                 }|                     |          r1| j                            |           |                     d           d S |                     d           d S NTF)r#   r   r   r  r   ra  r  )r   rR   r   r   s       r   validatezPage.validate  s~    
###  == 	*++E222""4(((((""5)))))r   N)r   r   r   r  r
   AssistantPageTypeCONTENTr  r  DEBIAN_LOGOr  r   color_parseWARNING_COLORrt   r  r  r  r  r  r  r  r  r  r  r  r+   r   r   r  r  o  s        M%-IJ#COI..M+ + +  $ $ $@ @ @8 8 8> > >
  
  
 ! ! !
* * *$ $ $  * * * * *r   r  c                   0    e Zd Zej        j        ZdZd ZdS )	IntroPageTc                    t          t                     t          j        d          }t          j        d          }|                    d           |                    d           |                    t          j        j	                   |
                    |ddd           t          j                            dd	          }|
                    |ddd           |S )
N   ri   a'  
<b>Reportbug</b> is a tool designed to make the reporting of bugs in Debian and derived distributions relatively painless.

This wizard will guide you through the bug reporting process step by step.

<b>Note:</b> bug reports are publicly archived (including the email address of the submitter).rp   TFr   z1https://salsa.debian.org/reportbug-team/reportbugzHomepage of reportbug project)r#   r   r
   rw   r   set_use_markupr   r   r   r   ry   
LinkButtonnew_with_label)r   rx   rq   links       r   r  zIntroPage.create_widget  s    
###x###	 !b c c c 	T"""D!!!#+0111udA...~,,-`-LN NeT1---r   N)	r   r   r   r
   r  INTROr  r  r  r+   r   r   r  r    s4        %+I    r   r  c                   .    e Zd Zd Zd Zd Zd Zd	dZdS )
GetStringPagec                 `    t          t                     | j                                         d S r%   r#   r   r   r  r   s    r   r  zGetStringPage.setup_focus  *    
###
r   c                    t          t                     t          j        d          }t          j                    | _        | j                            d           | j                            t          j        j	                   | j        
                    d           | j                            dd           t          j                    | _        |                    | j        ddd           |                    | j        ddd           |S Nr&  ri   Trr   Fr   )r#   r   r
   rw   r   rq   r   r   r   r   r   r   r   r   ry   r   s     r   r  zGetStringPage.create_widget  s    
###x###Y[[

  &&&
s05666
!!$'''
U333Y[[

E4333
E4333r   c                     t          t                     | j                            d| j                   | j                            d| j                   d S )Nchangedactivate)r#   r   r   r^   r  r  r   s    r   r  zGetStringPage.connect_signals  sK    
###
9dm444
:t'<=====r   c                 \    t          t                     | j                                        S r%   r   r   s    r   r   zGetStringPage.get_value  r   r   NFr4   c                 l   t          t                     t          j        | j        j        |                    dd                     | j                            |           |r|                                 t          j
                    }t          j        t                    }|D ]}|                    |g           |                    |           |                    d           |                    d           | j                            |           nd | _        |                                  d S )Nz8(enter Ctrl+c to exit reportbug without reporting a bug)r4   Tr   )r#   r   r   r  rq   r   replacer   sortr
   EntryCompletion	ListStorestrr   	set_modelset_inline_selectionset_text_columnset_completion
completionr  )r   promptoptionsforce_promptdefaultr  modeloptions           r   r  zGetStringPage.execute  s   
###dj)6>>:tvx+y+yzzz
G$$$ 	#LLNNN,..JM#&&E! ' 'fX&&&&  '''++D111&&q)))J%%j1111"DOr   )NFr4   r   r   r   r  r  r  r   r  r+   r   r   r  r    sd               > > >
% % %     r   r  c                       e Zd Zd ZdS )GetPasswordPagec                     t          t                     t                              |           }| j                            d           |S r  )r#   r   r  r  r   set_visibilityr   rH   s     r   r  zGetPasswordPage.create_widget  s>    
###,,T22
!!%(((r   N)r   r   r   r  r+   r   r   r  r    s#            r   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )GetMultilinePagec                 `    t          t                     | j                                         d S r%   r#   r   r   r  r   s    r   r  zGetMultilinePage.setup_focus  *    
###	r   c                 v   t          t                     t          j        d          }t          j                    | _        | j                            d           | j                            t          j        j	                   | j        
                    d           | j                            dd           |                    | j        ddd           t          j                    | _        | j                                        | _        t#          | j                  }|                    |ddd           |S r  )r#   r   r
   rw   r   rq   r   r   r   r   r   r   ry   r   r   r   bufferrK   )r   rx   rJ   s      r   r  zGetMultilinePage.create_widget!  s    
###x###Y[[

  &&&
s05666
!!$'''
U333
E4333LNN	i**,,$TY//$a000r   c                 n    t          t                     | j                            d| j                   d S Nr  )r#   r   r  r^   r  r   s    r   r  z GetMultilinePage.connect_signals1  s0    
###It}55555r   c                     t          t                     | j                            | j                                        | j                                        d          }|                    d          S )NTr   )r#   r   r  r   get_start_iterget_end_iterr   r   texts     r   r   zGetMultilinePage.get_value5  sX    
###{##DK$>$>$@$@$+BZBZB\B\^bcczz$r   c                     t          t                     d| _        t          j        | j        j        |           | j                            d           | j                            d           d S )NTr4   r  )	r#   r   r  r   r  rq   r   r  emitr   r  s     r   r  zGetMultilinePage.execute:  s`    
###dj)6222R   #####r   Nr  r+   r   r   r  r    s_             6 6 6     
$ $ $ $ $r   r  c                   *    e Zd ZdZd Zd Zd Zd ZdS )TreePageNc                     t          t                     t          j        | g|R i | | j                                        | _        d S r%   )r#   r   r  rt   r   get_selection	selectionr  s      r   rt   zTreePage.__init__F  sI    
###d,T,,,V,,,0022r   c                 `    t          t                     | j                                         d S r%   r  r   s    r   r  zTreePage.setup_focusK  r  r   c                 n    t          t                     | j                            d| j                   d S r  )r#   r   r  r^   r  r   s    r   r  zTreePage.connect_signalsO  s0    
###y$-88888r   c                    t          t                     | j                                        \  }}| j                                        t
          j        j        k    }g }|D ]T}|                    |	                    |          | j
                  }|"|                    t          |                     U|r
|s|d         S |S Nr   )r#   r   r  get_selected_rowsget_moder
   SelectionModeMULTIPLEr   get_itervalue_columnr   r7   )r   r  pathsmultipler  pathr   s          r   r   zTreePage.get_valueS  s    
###~7799u>**,,0A0JJ 	2 	2DOOENN4$8$8$:KLLE k%00111 	( 	!9r   )r   r   r   r  rt   r  r  r   r+   r   r   r  r  C  sU        L3 3 3
  9 9 9    r   r  c                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )	GetListPager   c                    t          t                     t          j        d          }t          j                    | _        | j                            d           | j                            t          j        j	                   |
                    | j        ddd           t          j        d          }t          j                    | _        | j                            d           | j                                                            t          j        j                   t'          | j                  }|
                    |ddd           t          j                    }|                    d           |                    t          j        j                   t          j        t          j                  }|                    d| j                   |
                    |ddd           t          j        t          j                  }|                    d| j                   |
                    |ddd           |
                    |ddd           |
                    |ddd           |S )	Nr&  ri   TFr   rk   )stockrK  )r#   r   r
   rw   r   rq   r   r   r   r   ry   rz   TreeViewr   set_rules_hintr  set_moder  r  rK   
VButtonBoxset_spacing
set_layoutButtonBoxStyleSTARTrQ  	STOCK_ADDr^   on_addSTOCK_REMOVE	on_remove)r   rx   r   rJ   r[  r\  s         r   r  zGetListPage.create_widgetd  s   
###x###Y[[

  &&&
s05666
E4333x"""LNN		  &&&	!!**3+<+EFFF$TY//$a000~*0111#-000y$+...tQ///#"2333y$.111tQ///eT1---dD!,,,r   c                     t          t                     g }| j        D ]"}|                    || j                            #|S r%   )r#   r   r  r   r  )r   valuesrows      r   r   zGetListPage.get_value  sH    
###: 	2 	2CMM#d/01111r   c                     t          t                     t          d          }|                                 |                    d| j                   d S )NzAdd a new item to the listrM   )r#   r   r   r`   r^   on_add_dialog_response)r   r\  rb   s      r   r+  zGetListPage.on_add  sK    
###"#?@@z4#>?????r   c                    t          t                     |t          j        j        k    rA| j                            |                                g           |                                  |	                                 d S r%   )
r#   r   r
   r   r   r  r   r   r  rP   r   s      r   r2  z"GetListPage.on_add_dialog_response  si    
####")))Jv//112333MMOOOr   c                 4   t          t                     | j                                        \  }}g }|D ]/}|                    | j                            |                     0|D ]}| j                            |           |                                  d S r%   )	r#   r   r  r  r   r  r  rC  r  )r   r\  r  r  itersr  iters          r   r-  zGetListPage.on_remove  s    
###~7799u 	4 	4DLL,,T223333 	$ 	$DJd####r   c                    t          t                     d| _        t          j        | j        j        |           t          j        t                    | _
        | j
                            d| j                   | j                            | j
                   | j                            t          j        j                   | j                            t          j        dt          j                    d                     d S )NTzrow-changedItemr   r  )r#   r   r  r   r  rq   r   r
   r  r  r  r^   r  r   r  r  r$  r  r  append_columnTreeViewColumnCellRendererTextr  s     r   r  zGetListPage.execute  s    
###dj)6222]3''

=$-888	DJ''' 1 :;;;	 263;O;Q;QXY Z Z Z[[[[[r   N)
r   r   r   r  r  r   r+  r2  r-  r  r+   r   r   r  r  a  s{        L  <  @ @ @  	 	 	\ \ \ \ \r   r  c                   T    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
	 	 ddZd Zd Zd	S )MenuPager   c                 X    t          t                     t          j        | g|R i | d S r%   )r#   r   r  rt   r  s      r   rt   zMenuPage.__init__  s6    
###d,T,,,V,,,,,r   c                 `    t          t                     | j                                         d S r%   r  r   s    r   r  zMenuPage.setup_focus  r  r   c                    t          t                     t          j        d          }t          j                    | _        | j                            d           | j                            t          j        j	                   |
                    | j        ddd           t          j                    | _        | j                                        }|                    t          j                   t!          |                     |                    t          j        j                            |                     |                    t          j        j                                      | _        t!          |                     |                    t          j        j                            |                     |                    t          j        j                                      | _        | j                                        | _        | j                            t          j        j                   | j                            d           t          j                    | _         tC          | j                  }|"                    t          j#        j$        t          j#        j%                   |
                    |ddd           |&                                 |S )Nr&  ri   TFr   )selectednormal)'r#   r   r
   rw   r   rq   r   r   r   r   ry   r"  r   get_style_context	add_classSTYLE_CLASS_CELLdict_rgba_to_stringget_background_colorrN  SELECTEDNORMAL
background	get_color
foregroundr  r  r$  r  NONEset_activate_on_single_clickCellRendererTogglechkboxrK   rC   rD   NEVERALWAYSr`   )r   rx   style_contextrJ   s       r   r  zMenuPage.create_widget  s*   
###x###Y[[

  &&&
s05666
E4333LNN		3355 4555 ))-*L*LS^Md*e*eff''(J(J3>K`(a(abbd d d ))-*A*A#.BY*Z*Z[[''(?(?@U(V(VWWY Y Y 0022 1 6777	..t444,..$TY//CN0#.2GHHH$a000r   c                     t          t                     t                              |            | j                            d| j                   d S )Nrow-activated)r#   r   r  r  r   r^   	on_toggler   s    r   r  zMenuPage.connect_signals  sD    
###T"""	/4>:::::r   c                     t          t                     g }| j        D ]7}|d         r-|                    t	          || j                                      8t          |          dk    r| j        s|d         S |S r  )r#   r   r  r   r7   r  r   r  )r   r  r0  s      r   r   zMenuPage.get_value  s|    
###: 	C 	CC1v Ck#d.?*@AABBBv;;??4=?!9r   c                     d                     t          |j        dz            t          |j        dz            t          |j        dz                      S )Nz#{:02x}{:02x}{:02x}   )r   r=  redgreenblue)r   rgbas     r   rH  zMenuPage._rgba_to_string  sP    $++C3,?,?,/
S0@,A,A,/	C,@,@B B 	Br   c                 "    | j          o| j         S r%   )r  r  r   s    r   _is_suitable_radio_buttonz"MenuPage._is_suitable_radio_button  s    = 6%66r   NFc	                 <   t          t                     t          j        | j        j        |           t          j        t          t          t                    | _
        | j                            | j
                   || _        | j                            |                                            t          j        d| j        d          }	|	                    | j        | j                   | j                            |	           t          j                    }
t          j        d|
d          }	|	                    |
| j                   | j                            |	           t          j                    }|                    dt.          j        j                   |                    dd	           t          j        d
|d          }|                    || j                   | j                            |           d }t5          |t6                    r|rh|D ]e}||v r_d                    ||                                                   }| j
                            dt?          |          |g          }||k    r|}f|                                 D ]d\  }}|r||vrYd                    |                                          }| j
                            dt?          |          |g          }||k    r|}enp|D ]m}d                    |d                                                   }| j
                            dt?          |d                   |g          }|d         |k    r|}n|r| j
        !                    |dd           | "                                 d S )NSelr   )activeOptionr   )markupz	wrap-modez
wrap-widthi  Descriptionr   r9   FT)#r#   r   r   r  rq   r   r
   r  r  r  r  r   r  r  rR  	set_radiora  r;  set_cell_data_funcon_cell_funcr:  r<  r   r   WrapModeWORDr  rG  r   r   r   r1   items	set_valuer  )r   parr  r  r  any_okorderextrasr  column	cell_textrenddesc_columndefault_iterr  r  r6  rW  r0  s                      r   r  zMenuPage.execute  sO   
###dj)3///]4c22
	DJ''' d<<>>???#E4;qAAA!!$+t/@AAA	'''(**	#HiBBB!!)T->???	'''#%%+u~':;;;,,,,(1EEE&&tT->???	,,, gt$$ 	( 0# 0 0F(("xx(=(=(?(?@@#z00%69J9JD1QRR!W,,+/L ' , , ,e 3 388DJJLL11D:,,eYv5F5F-MNND(('+,  ( (xxA//z((%3q61B1BD)IJJq6W$$#'L 	8J  q$777r   c                    | j         sIt          j        |          }| j        D ],}|j        |k    r| j        sd|d<   |d          |d<   'd|d<   -n"| j        |         d          | j        |         d<   |                                  d S )NTr   F)r  r
   TreePathr  r  r  r  )r   rH   r  dataselected_pathr0  s         r   rX  zMenuPage.on_toggle%  s    } 	:L..Mz # #8},,= ,!%A%(VA"CFF# '+j&6q&9"9DJtQr   c                 2   |                     |d          rt          |t          j                  r#|                    d| j        d                    d S |                    d| j        d                    |                    d| j        d                    d S t          |t          j                  r#|                    d| j        d                    d S |                    d| j        d                    |                    d| j        d                    d S )Nr   zcell-backgroundrB  rL  rN  rC  )r   r  r
   rQ  r   rL  rN  )r   rt  cellr  itr{  s         r   rk  zMenuPage.on_cell_func4  s   ??2q!! 	K$ 677 M!!"3T_Z5PQQQQQ!!,
0KLLL!!,
0KLLLLL$ 677 K!!"3T_X5NOOOOO!!,0IJJJ!!,0IJJJJJr   )NFNNF)r   r   r   r  rt   r  r  r  r   rH  ra  r  rX  rk  r+   r   r   r>  r>    s        L- - -    @; ; ;
  B B B
7 7 7 BG271 1 1 1f  K K K K Kr   r>  c                   h    e Zd ZdZdZ	 	 	 ddZd Zd	 Zd
 Zd Z	d Z
d Zd Zd Zd ZddZd ZdS )HandleBTSQueryPageTr   Nr4   Fnoc           
      X   t          t                     || _        || _        || _        || _        || _        || _        |rt          j	        j
        | _        t          j        |         }|                    d          }|st          d           t!          |t"                    r(|}|	r|dz  }dt          j        |         d         d|}n;dt          j        |         d         dd                    d |D                       }| j                            | j        j        |           	 t          j        ||||||||		          \  }}}nM# t0          $ r@}d
t          j        |         d         dt3          |          d}t5          |          d }~ww xY w	 |s|t6          t8          |dk    rd|fz  }nd}g }|D ]O\  }}t;          |d |          }|                    |t?          tA          tB          |                    f           P||fi fS # t6          $ r t6          w xY w)Nbtsrootz(source)z	Querying namez$ bug tracking system for reports on z! bug tracking system for reports rh  c                 ,    g | ]}t          |          S r+   )r  ).0xs     r   
<listcomp>z9HandleBTSQueryPage.sync_pre_operation.<locals>.<listcomp>b  s?      yR  yR  yR  EFy|}~yy  yR  yR  yRr   )r/  r   r0  r2  sourcezUnable to connect to z BTS (error: "z"); r   z%d bug reports foundzOne bug report foundc                     | j         S r%   )r   )bs    r   rS   z7HandleBTSQueryPage.sync_pre_operation.<locals>.<lambda>|  s     r   )keyreverse)"r#   r   r.  r/  r0  r1  r2  r-  r
   r  CONFIRMr  r   SYSTEMSr   r  r  r  r   r   r   rV   set_progress_labelget_reportsr   r   r   r   r   sortedr   listmapr   )r   r   r.  r1  r/  r0  r-  screenr2  r  r  r   buglistmbox_reader_cmdlatest_firstsysinforootpkgnameprogress_labelcountsectitle	hierarchyr  errmsgreportcategorybugss                              r   r  z%HandleBTSQueryPage.sync_pre_operationG  s    	)***$ " 	; 2:DN/#&{{9%% 	#T"""gs## 	TG &:%T[TcdgThioTpTpTpryryzNN	T RYQ`adQeflQmQmQmorowow  yR  yR  JQ  yR  yR  yR  pS  pS  pS  TN001RTbccc	(+2+>#w%,I ,I ,I(UHii  	( 	( 	( 	(FMoVYFZ[aFbFbFbdhijdkdkdkdklF'''	(	 .$#O L1995@HH5H&/ G GNHd$T/B/BLYYYGMM8T#c72C2C-D-D"EFFFF)2-- 	 	 	O	s%   - E 
F;FFA:H H)c                 `    t          t                     | j                                         d S r%   r  r   s    r   r  zHandleBTSQueryPage.setup_focus  r  r   c           
         t          t                     t          j        d          }t          j        d          | _        |                    | j        ddd           t          j        d          }t          j        d          }|                    |ddd           t          j                    | _	        |                    | j	        ddd           t          j
                    }|                    t          j                            t          j        t          j        j                             |                    t          j        j                   |                    d	| j                   |                    |ddd           |                    |ddd           t          j                    | _        | j                            d           t3          | j                  }g d
| _        t7          | j        t9          t;          t=          | j                                                D ]e}t          j        |d         t          j                     |d                   }|!                    d           | j        "                    |           f|                    |ddd           t          j
        d          }|                    t          j                            t          j#        t          j        j$                             |                    d	| j%                   |                    |ddd           |S )Nrk   ri   zCList of bugs. Select a bug to retrieve and submit more information.rp   FTzFilter:r   rK  )IDTagPackagerg  Status	SubmitterDateSeverityVersionz
Filed datezModified dater   r9  z#Retrieve and submit bug information)&r#   r   r
   rw   r   rq   ry   rz   r   r   rQ  rS  r|   r}   STOCK_CLEARr~   MENU
set_reliefReliefStylerO  r^   on_filter_clearr"  r   r#  rK   columnszipr  r  r   r;  r<  set_reorderabler:  
STOCK_INFOrU  on_retrieve_info)r   rx   r   rq   r\  rJ   colrt  s           r   r  z HandleBTSQueryPage.create_widget  s   
###x"""Y%jkkk

E4333x"""		***udA...Y[[

D$22211#/3<CTUUVVV#/.///y$"6777tQ///eT1---LNN		  &&&$TY//7 7 7t|T%DL0A0A*B*B%C%CDD 	, 	,C'A0D0F0FSQRVTTTF""4(((I##F++++$a000"GHHH11#.#,BUVVWWWy$"7888tQ///r   c                     t          t                     t                              |            | j                            d| j                   | j                            d| j                   d S )NrW  r  )	r#   r   r  r  r   r^   r  r   on_filter_changedr   s    r   r  z"HandleBTSQueryPage.connect_signals  s`    
###  &&&	/4+@AAA
9d&<=====r   c                 b    t          t                     | j                            d           d S r3   )r#   r   r   r   r_  s     r   r  z"HandleBTSQueryPage.on_filter_clear  s,    
###
Br   c                     t          t                     |                                                                | j        _        | j                                         d S r%   )r#   r   r   lowerr  filter_textfilterrefilter)r   r   s     r   r  z$HandleBTSQueryPage.on_filter_changed  sJ    
###!&!1!1!7!7!9!9
r   c           	      T   t          t                     t                              |           }|st	          d           d S t          | j        | j                  }|D ]5}|                    || j	        | j
        | j        | j        | j                   6|                                 d S )NzPlease select one or more bugs)r#   r   r  r   rc   re  rV   r-  rp  r.  r/  r0  r1  r2  r`   )r   rR   bug_idsrb   r   s        r   r  z#HandleBTSQueryPage.on_retrieve_info  s    
###$$T** 	8999FDNDN;; 	f 	fBOOB$,W[Wdeeeer   c                 .    t          t                     dS rt  r  r  s     r   r  zHandleBTSQueryPage.is_valid      
###tr   c                 .    t          t                     d S r%   r  r   s    r   r   zHandleBTSQueryPage.get_value  s    
###tr   c                 p   t          t                     d}t          t          | j                            D ]@}| j                            ||          }|r!|| j                            ||          dz   z  }A|                                }| j        j        	                    d          D ]	}||v r dS 
dS )Nr4   rh  TF)
r#   r   r  r   r  r  r   r  r  r   )r   r6  r  r  r   tokens         r   match_filterzHandleBTSQueryPage.match_filter  s    
###T\**++ 	> 	>CJ((s33E >
,,T377#==zz||Z+11#66 	 	E}}tt ur   c                    t          t                     |                     |          }| j                            |          sI|sG|                    |          }|r.|                     |          rdS |                    |          }|.dS |S r  )r#   r   r  r  iter_parentiter_children	iter_next)r   r  r6  	user_datamatchesr  s         r   filter_visible_funcz&HandleBTSQueryPage.filter_visible_func  s    
#####D))z%%d++ 	G 	$$T**B )$$R((  4__R((  ) 5r   c                    t          t                     t          j        | j        j        d|z             t          j        t          gt          | j
                  z   | _        |D ]}d gt          | j
                  z  }|d         |d<   | j                            d |          }|d         D ]=}| j                            |t          t          t          |                               >| j                            t          j        j                   d| j        _        | j                                        | _        | j                            | j                   | j                            | j                   d S )Nz^%s. Double-click a bug to retrieve and submit more information, or press 'Next' if none match.r      r   r4   )r#   r   r   r  rq   r   r
   	TreeStorer  r   r  r  r   r  r  r  r$  r  r  r  
filter_newr  set_visible_funcr  r   r  )r   r  r  r  r0  r6  r   s          r   r  zHandleBTSQueryPage.execute  s`   
###dj)  ,L  OW  ,W  	X  	X  	X]cUS->->%>@
 	= 	=H&3t|,,,Ca[CF:$$T3//D{ = =
!!$Sc]](;(;<<<<= 	 1 :;;;!#
j++--$$T%=>>>	DK(((((r   )Nr4   FNr  FNNNNFr%   )r   r   r   r  r  r  r  r  r  r  r  r  r  r   r  r  r  r+   r   r   r  r  C  s        Lmq>BZ_= = = =~     ! ! !F> > >       

 
 
    
      ) ) ) ) )r   r  c                   2    e Zd ZdZd Zd Zd Zd Zdd
Zd	S )ShowReportPageTc                 z    t          t                     t          | j        d d d d d d d d 	  	        | _        | j        S r%   )r#   r   r$  rV   ro  r   s    r   r  zShowReportPage.create_widget  s;    
###DND$dD$PTVZ[[	yr   c                 .    t          t                     d S r%   r  r   s    r   r   zShowReportPage.get_value  r  r   c                 .    t          t                     dS rt  r  r  s     r   r  zShowReportPage.is_valid  r  r   c                     t          t                     |                    d          rt          j        j        | _        ||fS )Nr-  )r#   r   r   r
   r  r  r  r  s      r   r  z!ShowReportPage.sync_pre_operation  s<    )***::k"" 	; 2:DNV|r   Fr4   r  Nc
                 0   t          t                     || j        _        || j        _        || j        _        || j        _        || j        _        || j        _        || j        _	        | j        
                                 |                                  d S r%   )r#   r   ro  r,  r.  r/  r0  r1  r-  r2  rn  r  )
r   r,  systemr/  r0  r1  r-  r  r2  r  s
             r   r  zShowReportPage.execute  sx    
###!		#	)	#	'	%		r   )Fr4   r  N)	r   r   r   r  r  r   r  r  r  r+   r   r   r  r    sj          
      
 
 
 
 
 
r   r  c                       e Zd ZdZd Zd ZdS )DisplayReportPageTc                     t          t                     t          j                    | _        | j                            d           t          | j                  }|S r  )r#   r   r
   r   r   r   rK   )r   rJ   s     r   r  zDisplayReportPage.create_widget)  sG    
###LNN		u%%%$TY//r   c                     t          t                     |r||z  }| j                                                            |           d S r%   )r#   r   r   r   r   r   ra   rR   s      r   r  zDisplayReportPage.execute0  sI    
### 	%nG	''00000r   Nr   r   r   r  r  r  r+   r   r   r  r  &  s8          1 1 1 1 1r   r  c                       e Zd ZdZd Zd ZdS )LongMessagePageTc                    t          t                     t          j                    | _        | j                            d           | j                            t          j        j                   | j        	                    d           | j        
                    dd           t          j                    }|                    | j                   |S )NTrr   F)r#   r   r
   r   rq   r   r   r   r   r   r   r*  rG   )r   ebs     r   r  zLongMessagePage.create_widget;  s    
###Y[[

  &&&
s05666
!!$'''
U333\^^
tz	r   c                     t          t                     ||z  }d                    d |                                D                       }d|v rd|z   }t	          j        | j        j        |           d S )Nz

c              3      K   | ]}||V  	d S r%   r+   )r  rp  s     r   	<genexpr>z*LongMessagePage.execute.<locals>.<genexpr>K  s'      IIcSIcIIIIIIr   nnnnnnzThank you for your report.

)r#   r   r   r  r   r  rq   r   r  s      r   r  zLongMessagePage.executeF  sy    
###D. ++IIW-?-?-A-AIIIIIw6@Gdj)733333r   Nr  r+   r   r   r  r  8  s8        	 	 	4 4 4 4 4r   r  c                   0    e Zd Zej        j        ZdZd ZdS )FinalMessagePageTc                 X    t          t                     t          j        | g|R i | d S r%   )r#   r   r  r  r  s      r   r  zFinalMessagePage.executeU  s7    
###6t666v66666r   N)	r   r   r   r
   r  SUMMARYr  r  r  r+   r   r   r  r  Q  s4        %-I7 7 7 7 7r   r  c                   :    e Zd Zd Zd Zd Zd Zd Zd Zd
dZ	d	S )
EditorPagec                 &   t          t                     t          j        d          }t          j        d          }|                    t          j        d          ddd           t          j                    | _        |                    | j        ddd           |                    |ddd           t          j
                    | _        t          j        | j        	          | _        | j                            t          j        d
                     | j                            t          j        j                   t(          	 dd lan# t*          $ r
 t,          aY nw xY wt(          t,          ur1	 t(                              | j                   n# t0          $ r Y nw xY wt3          | j                  }|                    |ddd           t          j                            d          }t          j                    }|                    t          j        d
                     |                    d           |                                | _        t3          |          }|                     |           |                    |ddd           t(          t,          u rt          j!                    t          j        d          }|"                    d           |#                    d           |$                    d           |%                    dd                                |           &                    t          j'        j(        | j)                   *                    dfd           |                    ddd           |S )Nrk   ri   r&  r  rp   FTr   )r  	MonospacezOther system informationzDPlease install <b>python3-gtkspellcheck</b> to enable spell checkingrr   zbutton-press-eventc                  ,                                     S r%   rO   )rR   boxs    r   rS   z*EditorPage.create_widget.<locals>.<lambda>  s    CKKMM r   )+r#   r   r
   rw   rz   ry   r   r   r   r   Bufferinfo_bufferViewr   modify_fontr   FontDescriptionset_wrap_moderl  rm  gtkspellcheckImportErrorNotImplementedSpellCheckerr   rK   r   r   r   r   r   others_bufferrG   r*  r  r   r   r   	modify_bg	StateTyperK  r  r^   )r   rx   r   rJ   r   r   rq   r  s          @r   r  zEditorPage.create_widget[  s.   
###x"""x###	444eT1EEEy{{dD!444eT1---$+--N$*:;;;		e3K@@AAA	 1222  /$$$$$ / / / ./ ..**495555   $TY//$a000<112LMM|~~.{;;<<<%   !__..$T**X%q111N**,..CI$jkkkE  &&&%%%  &&&{E222GGENNNMM#-.0BCCCKK,.I.I.I.IJJJOOCa000s$   E E%$E%7F 
F$#F$c                     t          t                     |                                 d         at	          | j        dd          5 }|                    t                     d d d            d S # 1 swxY w Y   d S )Nr   wbackslashreplace)errors)r#   r   r   report_messageopenfilenamewrite)r   fs     r   r  zEditorPage.switch_out  s    
###))!,$--?@@@ 	$AGGN###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   A..A25A2c                     t          t                     | j                            d| j                   | j                            d| j                   d S r  )r#   r   r  r^   r  r   r   s    r   r  zEditorPage.connect_signals  sK    
###  DM:::Y66666r   c                    t          t                     | j                            | j                                        | j                                        d          }|                                sd S | j                                                                        }|                                sd S | j        	                    |           | j        
                    |          }||| j        k    fS rt  )r#   r   r  r   r  r  r<   r   r  r  r"  ra   )r   r   r   ra   s       r   r   zEditorPage.get_value  s    
###(()9)H)H)J)J)-)9)F)F)H)H)-/ / zz|| 	4,''))//11}} 	4(((+,,T22DL011r   c                 x    t          t                     | j                            d| j                  | _        d S )Nzfocus-in-event)r#   r   r   r^   on_view_focus_in_eventfocus_in_idr   s    r   handle_first_infozEditorPage.handle_first_info  s4    
###9,,-=t?Z[[r   c                     t          t                     | j                            d           |                    | j                   d S r3   )r#   r   r  r   
disconnectr  )r   r   rR   s      r   r  z!EditorPage.on_view_focus_in_event  sB    
###!!"%%%()))))r   utf-8c                    t          t                     || _        t          |          | _        || _        || _        | j                            | j        	                                           | j
                            | j                                                   | j                                        }|                                dk    rd}|                                  | j                            |           d S )NzDear Maintainer,zXPlease type your report here.
The text will be wrapped to be max 79 chars long per line.)r#   r   ra   r   r  r	  charsetr   r   r  r   r  r	  r<   r  r  )r   ra   r	  editorr  r   s         r   r  zEditorPage.execute  s    
###(( dk5577888##DK$:$:$<$<==={,,..::<<---nD""$$$!!$'''''r   N)r  )
r   r   r   r  r  r  r   r  r  r  r+   r   r   r  r  Z  s        4 4 4l$ $ $7 7 7
2 2 2\ \ \* * *( ( ( ( ( (r   r  c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )SelectOptionsPageFc                 t   t          t                     t          j                    | _        | j                            d           | j                            t          j        j                   t          j	        d          | _
        | j
                            | j        ddd           d | _        | j
        S )NTrk   ri   F)r#   r   r
   r   rq   r   r   r   r   rw   rx   ry   r  r   s    r   r  zSelectOptionsPage.create_widget  s    
###Y[[

  &&&
s05666HQ'''		TZa888yr   c                     t          t                     | j                            |           | j                                         d S r%   r#   r   r   ra  rV   rb  )r   r\  menuopts      r   
on_clickedzSelectOptionsPage.on_clicked  sA    
###''000##%%%%%r   c                 V    t          t                     t          t                     d S r%   )r#   r   r   r  r_  s     r   on_display_clickedz$SelectOptionsPage.on_display_clicked  s$    
###>*****r   c                     t          t                     | j        rVd| j        j        _        d| j        j        _        | j                                         | j                                         d S d S rt  )r#   r   r  propscan_defaulthas_defaultgrab_defaultr  r   s    r   r  zSelectOptionsPage.setup_focus  sl    
###< 	&-1DL*-1DL*L%%'''L##%%%%%		& 	&r   c                 4   t          t                     |                    dd          }t          j        | j        j        |           g }|D ]}||                                         }d|v r"d|v r'd|v rFt          j	        d          }|
                    d| j                   |                    |           qt          j	                    }t          j        ||                                                   }|                    |           |
                    d| j        |                                           |                                rp|                    d	|                                z             || _        |                    d
t          j                               |                    d
|           x|                    |           |D ]}| j                            |ddd
            | j                                         d S )Nz(e to edit)r4   zChange editorz"Pipe the message through the pagerzPrint message to stdoutzDisplay message in a text viewrp   rK  r.   r   FT)r#   r   r  r   r  rq   r   r  r
   rQ  r^   r   r   r   rG   r  isupper
set_markupr   r  insert
HSeparatorrx   ry   r`   )	r   r  menuoptsr  r   r  rW  r\  rq   s	            r   r  zSelectOptionsPage.execute  s   
###r22dj)6222 	+ 	+G7==??+D$&&3t;;(D00*JKKKy$*ABBBv&&&&	(@AAA

5!!!y$/7==??KKK??$$ +$$[5>>3C3C%CDDD#)DLNN1cn&6&6777NN1f----NN6**** 	9 	9FI  a8888	r   N)	r   r   r   r  r  r  r   r  r  r+   r   r   r  r    se          & & &
+ + +
& & &$ $ $ $ $r   r  c                   $    e Zd ZdZd Zd Zd ZdS )
SystemPageFc                    t          t                     t          j                    }t                                          | _        | j                            d           | j                            d| j	                   |
                    | j        ddd           t          j                    }|                    | j                                                   |
                    |ddd           |S )NTzchild-exitedr   F)r#   r   r
   rz   VteTerminalterminalset_cursor_blink_moder^   on_child_exitedry   
VScrollbarset_adjustmentget_vadjustment)r   r   	scrollbars      r   r  zSystemPage.create_widget  s    
###xzz++D111nd.BCCCtT1555N$$	  !>!>!@!@AAA	5$222r   c                     t          t                     | j                            |           | j                                         d S r%   r  )r   r1  
exitstatuss      r   r3  zSystemPage.on_child_exited  sA    
###''
333##%%%%%r   c                     t          t                     | j                            t          j        j        t          j        d         dd|gd t          j
        j        d d dd 	  	         d S )NHOMEz	/bin/bashz-cr9   )r#   r   r1  spawn_asyncr/  PtyFlagsDEFAULTr&   environr   
SpawnFlags)r   cmdlines     r   r  zSystemPage.execute$  s    
###!!#,"6
68J[Z^`gLhjnptp  qH  JN  PT  VX  Z^  	_  	_  	_  	_  	_r   N)r   r   r   r  r  r3  r  r+   r   r   r-  r-    sL          & & &
_ _ _ _ _r   r-  c                   >    e Zd Zej        j        Zd Zd Zd Z	d Z
dS )ProgressPagec                 `    t          t                     | j                                         dS rt  )r#   r   r5  r;  r   s    r   r;  zProgressPage.pulse,  s)    
###tr   c                    t          t                     t          j        d          }t          j                    | _        | j                            d           | j                            t          j        j	                   t          j
                    | _        | j                            d           |                    | j        ddd           |                    | j        ddd           t          j        d| j                   |S )Nrk   ri   Tr'  Fr   rh   )r#   r   r
   rw   r   rq   r   r   r   r   r4  r5  r6  ry   r   r:  r;  r   s     r   r  zProgressPage.create_widget1  s    
###x"""Y[[

  &&&
s05666))$$T***
E4333udA666TZ(((r   c                 l    t          t                     t          j        | j        j        |           d S r%   )r#   r   r   r  rq   r   r  s     r   	set_labelzProgressPage.set_label>  s-    
###dj)400000r   c                 X    t          t                     |                     d           d S )NzThis operation may take a while)r#   r   rG  r   s    r   reset_labelzProgressPage.reset_labelB  s)    
###899999r   N)r   r   r   r
   r  PROGRESSr  r;  r  rG  rI  r+   r   r   rC  rC  )  s[        %.I  
  1 1 1: : : : :r   rC  c                   \    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd ZdS )ReportbugAssistantc                    t          t                     t          j                            |            || _        |                     d           |                                  d | _        d | _	        d | _
        |                     dd           |                     | j                   |                                  |                                  d S )NrT   rg  r   )r#   r   r
   	Assistantrt   r   r_   hack_buttonsshowing_pagerequested_pageprogress_pager   set_forward_page_funcforwardr  setup_pagesr   r   s     r   rt   zReportbugAssistant.__init__H  s    
###t$$$&{### "!c3'''""4<000r   c                    t          t                     t          |t          j                  rd|                                dk    r|                    d| j                   d S |                                dk    r|                    d| j                   d S |                                dk    ret          j        	                    t          j
        t          j        j                  }|                    d           |                    |           d S |                                dk    ret          j        	                    t          j        t          j        j                  }|                    d           |                    |           d S t          |t          j                  r|                    | j                   d S d S )Nzgtk-go-backr  z	gtk-applyz
gtk-cancel_Quitzgtk-go-forward	_Continue)r#   r   r  r
   rQ  	get_labelr^   on_back_showr|   r}   
STOCK_QUITr~   rU  rG  rS  STOCK_GO_FORWARD	Containerforall_hack_buttons)r   rH   r   s      r   r`  z ReportbugAssistant._hack_buttonsW  s   
### fcj)) 	!!]22vt'8999!![00vt'8999!!\11	00141DF F  )))  '''!!%555	001Es|GZ[[  ---  '''fcm,, 	.MM$,-----	. 	.r   c                 X    t          t                     |                     |            d S r%   )r#   r   r`  r   s    r   rO  zReportbugAssistant.hack_buttonsr  s*    
###4     r   c                 <   t          t                     |                     d| j                   |                     d| j                   |                     d| j                   |                     d| j                   |                     d| j                   d S )Ncancelpreparezdelete-eventapplyclose)r#   r   r^   confirm_exit
on_preparerf  r   s    r   r  z"ReportbugAssistant.connect_signalsv  s    
###Xt0111Y000^TZ000Wdj)))Wdj)))))r   c                 V    t          t                     |                                 d S r%   )r#   r   hider  s     r   r[  zReportbugAssistant.on_back_show~  s!    
###r   c                    t          t                     | j        r| j        | j        k    rs|                                 | j        j        k    rQ| j                                         | j        j        	                    d           | j        
                                 |j        | _        | j        | j        k    r| j                                         t          j        | j        j                   d S r  )r#   r   rP  rQ  get_current_pager  r   r}  rH   set_sensitiver  ro  rR  rI  r   r  r  )r   rV   rH   s      r   rh  zReportbugAssistant.on_prepare  s    
###  	+!2d6I!I!IdNcNcNeNehlhy  iC  OC  OC++---$225999((***"K 222**,,,d'344444r   c                 J    t          t                     t                       d S r%   r   rk  s     r   rf  zReportbugAssistant.close  r   r   c                 v   t          t                     t          j        d t          j        j        t          j        j        z  t          j        j        t          j	        j
        d          }|                                }|                                 |t          j        j        k    rt                       d S d S )Nz(Are you sure you want to quit Reportbug?)r#   r   r
   rU   rW   rX   rY   rZ   WARNINGr\   YES_NOr@  rP   r   YESr,   )r   rR   rb   rM   s       r   rg  zReportbugAssistant.confirm_exit  s    
###"4)>Ad)d#&?#:CO<R#MO O ::<<s'+++GGGGG ,+r   c                 4    t          t                     |dz   S Nr   r  )r   r  s     r   rT  zReportbugAssistant.forward  s    
###!|r   c                     t          t                     |                     |                     | j        j                             d S r%   )r#   r   set_current_pagerT  rP  r  r   s    r   rb  zReportbugAssistant.forward_page  s<    
###dll4+<+EFFGGGGGr   c                     t          t                     || _        | j        | j        k    r|                     |j                   d S d S r%   )r#   r   rQ  rP  rR  rv  r  )r   ro  s     r   r  z ReportbugAssistant.set_next_page  sM    
###" 222!!$-00000 32r   c                 h    t          t                     | j                            ||z             d S r%   )r#   r   rR  rG  )r   r  rR   r   s       r   r  z%ReportbugAssistant.set_progress_label  s1    
###$$TD[11111r   c                     t          t                     t          |           | _        | j                                         t          |           | _        | j                                         dt          _        d S rt  )	r#   r   r  rP  r  rC  rR  r  r  r   s    r   rU  zReportbugAssistant.setup_pages  sh    
### &dOO##%%%)$//$$&&&r   N)r   r   r   rt   r`  rO  r  r[  rh  rf  rg  rT  rb  r  r  rU  r+   r   r   rL  rL  G  s          . . .6! ! !* * *  5 5 5"      H H H1 1 12 2 2    r   rL  c                   "    e Zd Zd Zd ZddZdS )YesNoDialogc                 @   t          t                     t          j                            | t
          t          j        j        t          j        j        z  t          j	        j
        t          j        j                   || _        |                     d| j                   d S NrM   )r#   r   r
   rU   rt   rV   rW   rX   rY   rZ   QUESTIONr\   rq  r   r^   r   rV  s     r   rt   zYesNoDialog.__init__  sw    
###""4CO4ICOLo4o#&?#;S_=S	U 	U 	U&Z!122222r   c                     t          t                     | j                            |t          j        j        k               | j                                         |                                  d S r%   )	r#   r   r   ra  r
   r   rr  r}  rP   r   s      r   r   zYesNoDialog.on_response  sX    
###''s/?/C(CDDD'')))r   NTFc                    t          t                     |                     |           |r%|                     t          j        j                   n$|                     t          j        j                   |                                  d S r%   )	r#   r   r(  ru   r
   r   rr  NOr`   )r   r  yeshelpnohelpr  nowraps         r   r  zYesNoDialog.execute_operation  sr    
### 	;%%c&6&:;;;;%%c&6&9:::r   )NNTFr   r   r   rt   r   r  r+   r   r   r{  r{    sF        3 3 3       r   r{  c                        e Zd Zd Zd Zd ZdS )DisplayFailureDialogc                 @   t          t                     t          j                            | t
          t          j        j        t          j        j        z  t          j	        j
        t          j        j                   || _        |                     d| j                   d S r}  )r#   r   r
   rU   rt   rV   rW   rX   rY   rZ   rp  r\   r]   r   r^   r   rV  s     r   rt   zDisplayFailureDialog.__init__  sw    
###""4CO4ICOLo4o#&?#:CO<Q	S 	S 	S&Z!122222r   c                     t          t                     | j                                         |                                  d S r%   )r#   r   r   r}  rP   r   s      r   r   z DisplayFailureDialog.on_response  s6    
###'')))r   c                     t          t                     |                     ||z             |                                  d S r%   )r#   r   r(  r`   )r   r  rR   s      r   r  z&DisplayFailureDialog.execute_operation  s7    
###d
###r   Nr  r+   r   r   r  r    sA        3 3 3  
    r   r  c                   "    e Zd Zd Zd ZddZdS )GetFilenameDialogc           	      .   t          t                     t          j                            | dt
          t          j        t          j        j        t          j	        t          j        j
        f           || _        |                     d| j                   d S )Nr4   )r   rM   )r#   r   r
   FileChooserDialogrt   rV   r   r   r   
STOCK_OPENOKr   r^   r   rV  s     r   rt   zGetFilenameDialog.__init__  s    
###&&tRSEUWZWgWnEH^UXUeUhEj& 	k 	k 	k&Z!122222r   c                    t          t                     d }|t          j        j        k    r|                                 }| j                            |           | j                                         | 	                                 d S r%   )
r#   r   r
   r   r  get_filenamer   ra  r}  rP   )r   rb   r   r   s       r   r   zGetFilenameDialog.on_response  st    
####"%%%%%''E''...'')))r   Fc                     t          t                     |                     t          |                     |                                  d S r%   )r#   r   r_   r=   r`   )r   r  r  s      r   r  z#GetFilenameDialog.execute_operation  s9    
###x'''r   NFr  r+   r   r   r  r    sF        3 3 3       r   r  c                  l    t          t                     t          j        t          j        g| R i | d S r%   )r#   r   r   r   rV   r  rR   r   s     r   log_messager    s;    %&&&'	(DVtVVVvVVVVVr   c                  V    t          t                     d|d<   d|d<   t          | i |S )NTr  r  )r#   r   menur  s     r   select_multipler    s8    %&&&F:F:    r   c                 r    t          t                     d| v rt          | g|R i |S t          | g|R i |S )NENTER)r#   r   get_list_get_multiline)r  rR   r   s      r   get_multiliner    sX    %&&&&0000000f6t666v666r   )
get_stringget_passwordr  handle_bts_queryshow_reportlong_messagedisplay_reportfinal_messagespawn_editorselect_optionsr  r  r  )yes_nor  display_failurec                 >     t          t                      fd}|S )Nc                  (   t          t                     t                                        }	  |j        | i |\  } }n# t
          $ r}|j        cY d }~S d }~ww xY wt          j        |j        g| R i | t          	                                S r%   )
r#   r   r   r  r  r  r  r   r  rz  )rR   r   opr  klassparents       r   r  zcreate_forwarder.<locals>.func/  s    )***,,UF;;	020$A&AALD&& 	 	 	8OOOOOO	+B,@R4RRR6RRR))+++s   A 
AAAAr   )r  r  r  s   `` r   create_forwarderr  ,  s8    %&&&, , , , , , Kr   c                     t          t                     |                                D ]$\  }}t          | |          t	                      |<   %d S r%   )r#   r   rn  r  globals)r  
operations	operationr  s       r   forward_operationsr  <  sV    %&&&&,,.. ? ?	5/>>		)? ?r   c                     	 t          j        dd           ddlma n # t          t
          f$ r d} t          j        d t          j        j	        t          j        j
        z  t          j        j        t          j        j        d           }|                    | dz             |                                 |                                 t          j                    r&t          j                     t          j                    &t(          j                                        st/          j        dddd	           Y d
S w xY wt3          j                    at6                                          st;          d          t6                                           t2          j                                        a t(          j!        }tD          #                    |          t(          _!        t          j$        %                    tL                     tO                      a(tP          )                                 tU          tP          tV                     tP          ,                    tZ          tP                    a.tU          t\          t^                     dS )Nr/  z2.91r   )r/  zxPlease install the %s package to use the GTK+ (known as 'gtk' in reportbug) interface.
Falling back to 'text' interface.z<b>gir1.2-vte-2.91</b>zx-terminal-emulatorz-ezreportbug -u textFz"Could not acquire new main-contextT)0girequire_versiongi.repositoryr/  r  
ValueErrorr
   rU   rW   rX   rY   rZ   r[   r\   r]   r(  r@  rP   events_pendingmain_iterationsysstdoutisattyr&   execlpr   r   r   r8  r   r9  r  r   r   r   r   Windowset_default_icon_from_filer  rr  r   rn  r  dialogsr  rL  rV   pages)ra   rb   r   s      r   
initializer  B  s   
5&)))%%%%%%%$   %"4)>Ad)d#&?#79NPTV V'$<<===

 "" 	!     "" 	!z  "" 	_I+-BDJ]^^^uu (**$$&& CABBB))+++
 !))++J nG$66w??CN J))+666&((K{G,,,//0BKPPIy%(((4s    DD<;D<c                  .    t          t                     dS rt  r   r+   r   r   	can_inputr  s  s    %&&&4r   r  )\reportbug.exceptionsr   r&   r?  r  r  r  r   r   r   r	   r
   r   require_foreignr  r  rer   ru  r   r(  r  r)   r   r   r   	reportbugr   reportbug.urlutilsr   ISATTYr  r  r   r#   r,   r1   compiler5   r7   r=   rK   rc   rs   re   r   r   r   objectr   r   r*  r)  r$  re  rr  r  r  r  r  r  r  r  r  r  r  r>  r  r  r  r  r  r  r  r-  rC  rN  rL  rU   r{  r  r  r  r  r  r  r  r  r  r  r  r  r+   r   r   <module>r     sb	  0 1 0 0 0 0 0 				RZ#4
#B#B
/S
T
TT]IIIBvu%%%""""""Bw&&&######Bue$$$!!!!!!B{E***''''''Bue$$$!!!!!!B{C(((''''''Bw ] ] ]
/[
\
\\] 


 				                 A A A A A A A A A A       - - - - - -	2
   	K 	K 	K( ( (   G$$% % %  	 	 	 	  "1 "1 "1 "1 "13: "1 "1 "1J% % % % % % % %"+ + + + +l + + +\       @! ! ! ! !& ! ! !:OT OT OT OT OT OT OT OTf{ { { { {clI, { { {|       0= = = = =9+ = = =D       	 	 	 	 	 	 	 	W* W* W* W* W* W* W* W*t       4. . . . .D . . .b    m   $$ $$ $$ $$ $$t $$ $$ $$N    t   <L\ L\ L\ L\ L\( L\ L\ L\^PK PK PK PK PKt PK PK PKf}) }) }) }) }) }) }) })@         T      F1 1 1 1 1 1 1 1$4 4 4 4 4d 4 4 427 7 7 7 7 7 7 7j( j( j( j( j( j( j( j(ZC C C C C C C CL_ _ _ _ _ _ _ _8: : : : :4 : : :<u u u u u u u ur    $c&7   0    -s/@   &    *C,A   0W W W
! ! !7 7 7 %(/&(,*#, +	 	 !,2    ? ? ?. . .b    s   BC C