
    db                        d Z ddlZddlZddlZddlZddlZddlZddlZg dZ G d de	          Z
 ej                    Zi Zdadad4dddZd4d	Zd5dZd Zd ZdddZ G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          ZeZ G d d e          Z  G d! d"e          Z! G d# d$e          Z" G d% d&e          Z#d' Z$d( Z%ej&        dd)         d*k    r G d+ d,e          Z'ej&        d-k    r G d. d/e          Z( G d0 d1e          Z)d2 Z*e+d3k    r e*             dS dS )6z?Interfaces for launching and remotely controlling web browsers.    N)Erroropenopen_newopen_new_tabgetregisterc                       e Zd ZdS )r   N)__name__
__module____qualname__       /croot/python-split_1694437901252/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/python3.11/webbrowser.pyr   r      s        Dr   r   F	preferredc                <   t           5  t          t                       ||gt          |                                 <   |st
          r%| t
          v rt                              d|            nt                              |            ddd           dS # 1 swxY w Y   dS )zRegister a browser connector.Nr   )_lock	_tryorderregister_standard_browsers	_browserslower_os_preferred_browserinsertappend)nameklassinstancer   s       r   r   r      s    	 # #&(((#(("3	$**,,
  	#. 	#4;P3P3PQ%%%%T"""# # # # # # # # # # # # # # # # # #s   A<BBBc                 .   t           4t          5  t           t                       ddd           n# 1 swxY w Y   | | g}nt           }|D ]}d|v rJt          j        |          }|d         dk    rt          |dd                   c S t          |          c S 	 t          |                                         }n# t          $ r t          |          }Y nw xY w|d         
|d         c S |d          |d                     c S t          d          )zCReturn a browser launcher instance appropriate for the environment.N%s&   r   z!could not locate runnable browser)r   r   r   shlexsplitBackgroundBrowserGenericBrowserr   r   KeyError_synthesizer   )usingalternativesbrowsercommands       r   r   r   &   s    	- 	- *,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- w  $ $7??k'**Gr{c!!("66666%g...../#GMMOO4 / / /%g../qz%qz!!!'!wqz||### (
3
4
44s   155B<<CCTc                     t           4t          5  t           t                       ddd           n# 1 swxY w Y   t           D ]+}t          |          }|                    | ||          r dS ,dS )a  Display url using the default browser.

    If possible, open url in a location determined by new.
    - 0: the same browser window (the default).
    - 1: a new browser window.
    - 2: a new browser page ("tab").
    If possible, autoraise raises the window (the default) or not.
    NTF)r   r   r   r   r   )urlnew	autoraiser   r+   s        r   r   r   H   s      	- 	- *,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-   d))<<S),, 	44	5s   155c                 "    t          | d          S )zuOpen url in a new window of the default browser.

    If not possible, then open url in the only browser window.
    r"   r   r.   s    r   r   r   [       
 Q<<r   c                 "    t          | d          S )zOpen url in a new page ("tab") of the default browser.

    If not possible, then the behavior becomes equivalent to open_new().
       r2   r3   s    r   r   r   b   r4   r   c                   |                                  d         }t          j        |          sddgS t          j                            |          }	 t          |                                         }n# t          $ r ddgcY S w xY w|d         }|rx|                                |j        k    r[ddl	}|	                    |          }| |_
        t          j                            |           |_        t          | d||           d|gS ddgS )a  Attempt to synthesize a controller based on existing controllers.

    This is useful to create a controller when a user specifies a path to
    an entry in the BROWSER environment variable -- we can copy a general
    controller to operate using a specific installation of the desired
    browser in this way.

    If we can't create a controller in this way, or if there is no
    executable for the requested browser, return [None, None].

    r   Nr"   )r   r   )r$   shutilwhichospathbasenamer   r   r'   copyr   r   )r+   r   cmdr   r,   
controllerr=   s          r   r(   r(   j   s    --//!
C< d|7C  DDJJLL)   d| J "djjllj&999YYz**
!
 g..w77
$yIIIIj!!$<s   A3 3BBc                   4    e Zd ZdZdgZddZddZd Zd	 Zd
S )BaseBrowserz3Parent class for all browsers. Do not use directly.r    c                 "    || _         || _        d S N)r   r<   selfr   s     r   __init__zBaseBrowser.__init__   s    	r   r   Tc                     t           rD   )NotImplementedErrorrF   r.   r/   r0   s       r   r   zBaseBrowser.open   s    !!r   c                 .    |                      |d          S )Nr"   r2   rF   r.   s     r   r   zBaseBrowser.open_new       yya   r   c                 .    |                      |d          S )Nr6   r2   rL   s     r   r   zBaseBrowser.open_new_tab   rM   r   N)rB   r   T)	r
   r   r   __doc__argsrG   r   r   r   r   r   r   rA   rA      sg        ==6D   " " " "! ! !! ! ! ! !r   rA   c                        e Zd ZdZd ZddZdS )r&   zVClass for all browsers started with a command
       and without remote functionality.c                     t          |t                    r|| _        dg| _        n|d         | _        |dd          | _        t          j                            | j                  | _        d S )Nr   r   r"   )
isinstancestrr   rQ   r:   r;   r<   rE   s     r   rG   zGenericBrowser.__init__   s_    dC   	!DIDII QDIQRRDI((33r   r   Tc                 :   t          j        d           | j        gfd| j        D             z   }	 t           j        d d         dk    rt          j        |          }nt          j        |d          }|                                 S # t          $ r Y dS w xY w)Nwebbrowser.openc                 <    g | ]}|                     d           S r   replace.0argr.   s     r   
<listcomp>z'GenericBrowser.open.<locals>.<listcomp>   7     !7 !7 !7%( "%T3!7!7 !7 !7 !7r      winT)	close_fdsF)	sysauditr   rQ   platform
subprocessPopenwaitOSErrorrF   r.   r/   r0   cmdlineps    `    r   r   zGenericBrowser.open   s    	#S)))9+ !7 !7 !7 !7,0I!7 !7 !7 7	|BQB5(($W--$W===vvxx< 	 	 	55	s   AB 
BBNrO   r
   r   r   rP   rG   r   r   r   r   r&   r&      sA        , ,4 4 4     r   r&   c                       e Zd ZdZddZdS )r%   zHClass for all browsers which are to be started in the
       background.r   Tc                 >   | j         gfd| j        D             z   }t          j        d           	 t          j        d d         dk    rt          j        |          }nt          j        |dd          }|                                d u S # t          $ r Y dS w xY w)Nc                 <    g | ]}|                     d           S rY   rZ   r\   s     r   r_   z*BackgroundBrowser.open.<locals>.<listcomp>   r`   r   rW   ra   rb   T)rc   start_new_sessionF)	r   rQ   rd   re   rf   rg   rh   pollrj   rk   s    `    r   r   zBackgroundBrowser.open   s    9+ !7 !7 !7 !7,0I!7 !7 !7 7	#S)))	|BQB5(($W--$W7;= = =FFHH$% 	 	 	55	s   AB 
BBNrO   r
   r   r   rP   r   r   r   r   r%   r%      s2              r   r%   c                   B    e Zd ZdZdZdZdZddgZdZdZ	dZ
d
dZdd	ZdS )UnixBrowserz=Parent class for all Unix browsers with remote functionality.NFT%actionr   c                    g }|r(| j         r!t          |          }| j         |         }|r|g}| j        g|z   |z   }|s| j        rt          j        }nd }t	          j        |d|| j        r|pd |d          }	|r/	 |	                    d          }
|
 S # t          j	        $ r Y dS w xY w| j        r|	
                                dS dS |	                                 S )NTrc   stdinstdoutstderrrr      F)
raise_optsintr   
backgroundrg   DEVNULLrh   redirect_stdoutri   TimeoutExpiredrs   )rF   rQ   remoter0   r.   	raise_optoptrl   inoutrm   rcs              r   _invokezUnixBrowser._invoke   s!   	 	&do 	&II/),C%I9+	)D0 	T_ 	&EE EWE%)%9%Ce%Kt$)TC C C  	 VVAYYv,   tt_ 	 vvxxtuvvxx<s   9B B$#B$r   c                    t          j        d           |dk    r| j        n@|dk    r| j        n2|dk    r| j        | j        n| j        nt          dd|z  z             fd| j        D             }d |D             }|                     |d	|          }|s*fd
| j        D             }|                     |dd          S d	S )NrW   r   r"   r6   zBad 'new' parameter to open(); zexpected 0, 1, or 2, got %sc                 d    g | ],}|                     d                                d          -S )r   rw   rZ   )r]   r^   actionr.   s     r   r_   z$UnixBrowser.open.<locals>.<listcomp>  sG     - - - D#&&..y&AA - - -r   c                     g | ]}||S r   r   )r]   r^   s     r   r_   z$UnixBrowser.open.<locals>.<listcomp>  s    +++s++++r   Tc                 <    g | ]}|                     d           S rY   rZ   r\   s     r   r_   z$UnixBrowser.open.<locals>.<listcomp>  s'    @@@sCKKc**@@@r   F)	rd   re   remote_actionremote_action_newwinremote_action_newtabr   remote_argsr   rQ   )rF   r.   r/   r0   rQ   successr   s    `    @r   r   zUnixBrowser.open  s   	#S)))!88'FFAXX.FFAXX(02295;< = = =- - - - -+- - -++t+++,,tT9c:: 	@@@@di@@@D<<eU3334r   rD   rO   )r
   r   r   rP   r~   r   r   r   r   r   r   r   r   r   r   r   rv   rv      so        GGJJO d#KM!  !  !  ! F     r   rv   c                   *    e Zd ZdZddgZdZdZdZdZdS )	Mozillaz$Launcher class for Mozilla browsers.rw   r   rB   z-new-windowz-new-tabTN	r
   r   r   rP   r   r   r   r   r   r   r   r   r   r     s4        ..d#KM(%JJJr   r   c                   2    e Zd ZdZddgZddgZdZdZdZd	Z	d
S )Netscapez$Launcher class for Netscape browser.-noraisez-raise-remoteopenURL(%s%action)rB   ,new-window,new-tabTN)
r
   r   r   rP   r~   r   r   r   r   r   r   r   r   r   r   '  s?        ..h'J23KM(%JJJr   r   c                   .    e Zd ZdZddgZddgZdZdZdZd	S )
Galeonz,Launcher class for Galeon/Epiphany browsers.r   rB   rw   r   -nz-wTN)	r
   r   r   rP   r~   r   r   r   r   r   r   r   r   r   2  s8        66b!Jd#KMJJJr   r   c                   *    e Zd ZdZddgZdZdZdZdZdS )Chromez)Launcher class for Google Chrome browser.rw   r   rB   --new-windowTNr   r   r   r   r   r   <  s4        //d#KM)JJJr   r   c                   *    e Zd ZdZddgZdZdZdZdZdS )Operaz!Launcher class for Opera browser.rw   r   rB   r   TNr   r   r   r   r   r   H  s4        ''d#KM)JJJr   r   c                   .    e Zd ZdZddgZdZdZdZdZdZ	dS )	Elinksz#Launcher class for Elinks browsers.r   r   rB   r   r   FN)
r
   r   r   rP   r   r   r   r   r   r   r   r   r   r   r   R  s<        ))23KM(%J OOOr   r   c                       e Zd ZdZddZdS )	KonquerorzController for the KDE File Manager (kfm, or Konqueror).

    See the output of ``kfmclient --commands``
    for more information on the Konqueror remote-control interface.
    r   Tc                    t          j        d|           |dk    rd}nd}t          j        }	 t          j        d||gd|||          }|                                 dS # t          $ r Y nw xY w	 t          j        dd	|gd|||d
          }|                                dS n# t          $ r Y nw xY w	 t          j        dd|gd|||d
          }|                                d u S # t          $ r Y dS w xY w)NrW   r6   newTabopenURL	kfmclientT)rc   rz   r{   r|   	konquerorz--silentry   kfmz-dF)rd   re   rg   r   rh   ri   rj   rs   )rF   r.   r/   r0   r   devnullrm   s          r   r   zKonqueror.openg  ss   	#S)))!88FFF$
	 +vs!;+/w(/A A AA FFHHH4  	 	 	D		 +z3!?+/w(/379 9 9A vvxxt  	  	 	 	D		& %s!3+/w(/379 9 9A FFHH$%  	 	 	55	s5   A   
A-,A-1B% %
B21B26C) )
C76C7NrO   rt   r   r   r   r   r   `  s2         +& +& +& +& +& +&r   r   c                   "    e Zd Zd Zd ZddZdS )Grailc                    dd l }dd l}dd l}dd l}t          j                            |                                d          }|                    t	          j	                              d         }t          j                            |
                    |          |
                    |          dz             }|                     |          }|sd S |                    |j        |j                  }	|D ]Q}
	 |	                    |
           |	c S # t          $ r) 	 t	          j        |
           n# t          $ r Y nw xY wY Nw xY wd S )Nr   z.grail-unixz-*)globpwdsockettempfiler:   r;   join
gettempdirgetpwuidgetuidescapeAF_UNIXSOCK_STREAMconnectrj   unlink)rF   r   r   r   r   tempdiruserfilenamemaybessfns              r   _find_grail_rczGrail._find_grail_rc  s[   


',,x2244,. .||BIKK((+7<<G 4 4dkk$6G6G$6NOO8$$ 	4MM&.&*<== 	 	B			"     IbMMMM   D			 	s6   6D
ED/.E/
D<9E;D<<EEc                     |                                  }|sdS |                    |           |                                 dS )Nr   r"   )r   sendclose)rF   r   r   s      r   _remotezGrail._remote  sA    !! 	1	v				qr   r   Tc                     t          j        d|           |r|                     d|z             }n|                     d|z             }|S )NrW   zLOADNEW zLOAD )rd   re   r   )rF   r.   r/   r0   oks        r   r   z
Grail.open  sO    	#S))) 	-j3.//BBgm,,B	r   NrO   )r
   r   r   r   r   r   r   r   r   r   r     sF          4       r   r   c                  Z   t          j        d          rt          dd t          d                     t          j        d          r t          dd t          g d                     dt          j        v r2t          j        d          rt          dd t          d                     dt          j        v r7t          j        d          r#t          dt          t          d                     t          j        d          rt          dd t          d                     d	D ]4} t          j        |           rt          | d t          |                      5d
D ]4} t          j        |           rt          | d t          |                      5t          j        d          r$t          dt          t          d                     n7t          j        d          r#t          dt          t          d                     dD ]4} t          j        |           rt          | d t          |                      5t          j        d          rt          dd t          d                     dD ]4} t          j        |           rt          | d t          |                      5t          j        d          rt          dd t          d                     t          j        d          rt          dd t          d                     t          j        d          rt          dt          d            d S d S )Nzxdg-opengio)r   r   z--r   GNOME_DESKTOP_SESSION_IDz	gvfs-openKDE_FULL_SESSIONr   zx-www-browser)firefox	iceweaseliceape	seamonkey)zmozilla-firefoxzmozilla-firebirdfirebirdmozillanetscaper   r   )galeonepiphany	skipstone)zgoogle-chromechromechromiumzchromium-browseroperamosaicgrail)r8   r9   r   r%   r:   environr   r   r   r   r   r   r   )r+   s    r   register_X_browsersr     s     |J BT#4Z#@#@AAA |E N/0K0K0KLLMMM "RZ//FL4M4M/d$5k$B$BCCC RZ''FL,E,E'i;)?)?@@@|O$$ L$(9/(J(JKKK C 6 6<   	6WdGG$4$4555+ 7 7 <   	7WdHW$5$5666 |E A	9U#3#34444	k	"	" Ai;)?)?@@@ * 5 5<   	5WdF7OO444 |K   Dd$5k$B$BCCC O 5 5<   	5WdF7OO444 |G 0$g/// |H >4!28!<!<=== |G '%&&&&&' 'r   c                     g a t          j        dk    rxt          dd t	          d                     t          dd t	          d                     t          dd t	          d                     t          dd t	          d                     t          j        dk    rt          dd t          d                     t          j        d d	         d
k    rt          dt                     t          j        	                    t          j
                            dd          d          } dddddd| fD ]4}t          j        |          rt          |d t          |                     5nt          j
                            d          st          j
                            d          r	 d                                }t          j        |t          j                  }|                                                                }|an(# t*          t          j        t.          t0          f$ r Y nw xY wt3                       t          j
                            d          rt          j        d          rt          dd t5          d                     t          j        d          rt          dd t5          d                     t          j        d          rt          dd t7          d                     t          j        d          rt          dd t5          d                     t          j        d          rt          dd t5          d                     dt          j
        v rt          j
        d                             t          j                  }|                                 |D ]C}|dk    r9t=          |d !          }|d"          t          |d t5          |          d !           Bd S d S )#NdarwinMacOSXdefaultr   r   safari
serenityosBrowserra   rb   zwindows-defaultPROGRAMFILESzC:\Program FileszInternet Explorer\IEXPLORE.EXEr   r   r   r   r   DISPLAYWAYLAND_DISPLAYz$xdg-settings get default-web-browser)r|   TERMzwww-browserlinkselinkslynxw3mBROWSERrB   Tr   r"   )r   rd   rf   r   MacOSXOSAScriptr%   WindowsDefaultr:   r;   r   r   r   r8   r9   r$   rg   check_outputr   decodestripr   FileNotFoundErrorCalledProcessErrorPermissionErrorNotADirectoryErrorr   r&   r   pathsepreverser(   )iexplorer+   r>   
raw_resultresultuserchoicesrl   s          r   r   r     s   I
|x4!;!;<<<4!:!:;;;D/)"<"<===4!:!:;;; ||##D"3I">">???
|BQB5  "N333 7<<
~?R S S AC C!:{I"GX7 	D 	DG|G$$ D$(9'(B(BCCC	D :>>)$$ 	"
7H(I(I 	"/<BBDD'4SASTTT
#**,,2244
 )/%%	 &z'DoWij     !!! :>>&!! 	=|M** Mn].K.KLLL|G$$ A$w(?(?@@@|H%% ;4)9)9:::|F## ?~f'='=>>>|E"" =nU&;&;<<< BJj+11"*== # 	U 	UG"}}!'T:::q6>WdN7,C,CtTTTT 	U 	Us   #AH   "H%$H%ra   rb   c                       e Zd ZddZdS )r   r   Tc                 |    t          j        d|           	 t          j        |           dS # t          $ r Y dS w xY w)NrW   TF)rd   re   r:   	startfilerj   rJ   s       r   r   zWindowsDefault.open^  sW    I'---S!!! t     uus   - 
;;NrO   )r
   r   r   r   r   r   r   r   r   ]  s(        		 		 		 		 		 		r   r   r   c                        e Zd ZdZd ZddZdS )r   a{  Launcher class for Aqua browsers on Mac OS X

        Optionally specify a browser name on instantiation.  Note that this
        will not work for Aqua browsers if the user has moved the application
        package after installation.

        If no browser is specified, the default browser, as specified in the
        Internet System Preferences panel, will be used.
        c                 f    t          j        | j        j         dt          d           || _        d S )Nz3 is deprecated in 3.11 use MacOSXOSAScript instead.r6   
stacklevelwarningswarn	__class__r
   DeprecationWarningr   rE   s     r   rG   zMacOSX.__init__y  sF    MT^4 : : :;MZ[] ] ] ]DIIIr   r   Tc                    t          j        d|           d|vsJ d|vrd|z   }t          t          |                    }| j        dk    rd|                    dd          z  }n@| j        d	k    rd
}nd|dz
  z  }d|                    dd          z  }d| j        d|d|d}t          j        dd          }|dS |                    |           |	                                }| S )NrW   ':zfile:r   open location "%s""%22OmniWebrB   ztoWindow %dr"   zOpenURL "%s"ztell application "zK"
                                activate
                                 z%
                            end tell	osascriptwF)
rd   re   r   boolr   r[   r:   popenwriter   )	rF   r.   r/   r0   scripttoWindowr>   osapiper   s	            r   r   zMacOSX.open~  s   I'---c>>>>#::ck d3ii..CyI%%-C0G0GG 9	))!HH  -a8H$s{{3'>'>> ,0999ccc888E
 h{C00GuMM&!!!B6Mr   NrO   rn   r   r   r   r   r   o  sA        	 		 	 	
 	  	  	  	  	  	r   r   c                   ^     e Zd Zd fd	Zed             Zej        d             Zd	dZ xZS )
r   r   c                 J    t                                          |           d S rD   )superrG   )rF   r   r  s     r   rG   zMacOSXOSAScript.__init__  s!    GGT"""""r   c                 |    t          j        | j        j         d| j        j         dt          d           | j        S Nz!._name is deprecated in 3.11 use z.name instead.r6   r  r	  )rF   s    r   _namezMacOSXOSAScript._name  sW    MT^4 J J"&."9J J J,< < < < 9r   c                     t          j        | j        j         d| j        j         dt          d           || _        d S r"  r	  )rF   vals     r   r#  zMacOSXOSAScript._name  sZ    MT^4 J J"&."9J J J,< < < < DIIIr   r   Tc                    | j         dk    rd|                    dd          z  }n d| j         |                    dd          fz  }t          j        dd          }|dS |                    |           |                                }| S )	Nr   r  r  r  z
                   tell application "%s"
                       activate
                       open location "%s"
                   end
                   r  r  F)r   r[   r:   r  r  r   )rF   r.   r/   r0   r  r  r   s          r   r   zMacOSXOSAScript.open  s    yI%%-C0G0GG
 	3;;sE#:#:;< h{C00GuMM&!!!B6Mr   )r   rO   )	r
   r   r   rG   propertyr#  setterr   __classcell__)r  s   @r   r   r     s        	# 	# 	# 	# 	# 	# 
	 	 
	 
	 	 
		 	 	 	 	 	 	 	r   r   c                  \   dd l } dt          j        d         z  }	 |                      t          j        dd          d          \  }}na# | j        $ rT}t	          |t          j                   t	          |t          j                   t          j        d           Y d }~nd }~ww xY wd}|D ]\  }}|dk    rd}|dk    rd}t          |          dk    r/t	          |t          j                   t          j        d           |d         }t          ||           t	          d	           d S )
Nr   zDUsage: %s [-n | -t] url
    -n: open new window
    -t: open new tabr"   ntd)filer   z-tr6   )	getoptrd   argverrorprintr|   exitlenr   )	r.  usageoptsrQ   msgnew_winoar.   s	            r   mainr:    s:   MMM(1+&E]]38ABB<77
dd<   c
####e#*%%%% G $ $199gg$YY!
4yyA~~e#*%%%%
q'Cg	$KKKKKs   +A 
B%A
B  B%__main__rD   rO   ),rP   r:   r#   r8   rd   rg   	threadingr
  __all__	Exceptionr   RLockr   r   r   r   r   r   r   r   r   r(   objectrA   r&   r%   rv   r   r   r   r   Chromiumr   r   r   r   r   r   rf   r   r   r   r:  r
   r   r   r   <module>rB     s;   E E 
			   



         
J
J
J	 	 	 	 	I 	 	 	 				 #e # # # # #5 5 5 5D   &     ',     D! ! ! ! !& ! ! !&    [   8       &L L L L L+ L L L^    k       {       [       [        K       [   2& 2& 2& 2& 2& 2& 2& 2&j, , , , ,K , , ,l@' @' @'DFU FU FU^ <u
 
 
 
 
 
 
 
  <8/ / / / / / / /b# # # # #+ # # #L  0 zDFFFFF r   