<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
2aT                 @   s  d dl Z d dlZd dlZd dlZd dlZddddddgZG dd deZi Zg Z	dNd
dZ
dOddZdPddZdd Zdd ZdQddZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG d d! d!eZeZG d"d# d#eZG d$d% d%eZG d&d' d'eZG d(d) d)eZd*d+ Ze jjd,rhe  e jjd-rej d.re
d.ded. ej d/re
d/ded/ ej d0re
d0ded0 ej d1re
d1ded1 ej d2re
d2ded2 ej!dd3 d4krG d5d6 d6eZ"g Z	i Ze
d7e" e j#j$e jjd8d9d:Z%x8d;d<d=d>d?d@e%fD ]"Z&ej e&rde
e&dee& qdW ej!dAkrG dBdC dCeZ'G dDdE dEeZ(e
dFde(dFdR e
d;de(d;dS e
dGde(dGdT e
dCde(dHdU dIe jkrpe jdI j)e j*Z+e+j,  xBe+D ]:Z-e-dJkr*ee-dVZ.e.d	 dkr*e
e-dee-dW q*W dZ-[-[+dKdL Z/e0dMkre/  dS )X    NErroropenopen_newopen_new_tabgetregisterc               @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r   r   //opt/alt/python36/lib64/python3.6/webbrowser.pyr      s      c             C   s<   ||gt | j < |dkr$tj|  n|dk r8tjd|  d S )Nr   )	_browserslower	_tryorderappendinsert)nameklassinstanceupdate_tryorderr   r   r   r      s
    c             C   s   | d k	r| g}nt }x|D ]}d|krVtj|}|d dkrLt|d d S t|S qyt|j  }W n tk
r   t|}Y nX |d d k	r|d S |d d k	r|d  S qW t	dd S )Nz%sr   &r   z!could not locate runnable browserr   )
r   shlexsplitBackgroundBrowserGenericBrowserr   r   KeyError_synthesizer   )ZusingZalternativesbrowsercommandr   r   r   r      s$    


Tc             C   s,   x&t D ]}t|}|j| ||rdS qW dS )NTF)r   r   r   )urlnew	autoraiser   r   r   r   r   r   9   s
    
c             C   s
   t | dS )Nr   )r   )r!   r   r   r   r   @   s    c             C   s
   t | dS )N   )r   )r!   r   r   r   r   C   s    c             C   s   | j  d }tj|sd d gS tjj|}yt|j  }W n tk
rR   d d gS X |d }|r|j |jkrdd l	}|j	|}| |_
tjj| |_t| d || d |gS d d gS )Nr   r   )r   shutilwhichospathbasenamer   r   r   copyr   r   )r   r   cmdr   r    Z
controllerr*   r   r   r   r   G   s"    


r   c               @   s6   e Zd ZdgZdddZdddZd	d
 Zdd ZdS )BaseBrowserz%s c             C   s   || _ || _d S )N)r   r)   )selfr   r   r   r   __init__n   s    zBaseBrowser.__init__r   Tc             C   s   t d S )N)NotImplementedError)r.   r!   r"   r#   r   r   r   r   r   s    zBaseBrowser.openc             C   s   | j |dS )Nr   )r   )r.   r!   r   r   r   r   u   s    zBaseBrowser.open_newc             C   s   | j |dS )Nr$   )r   )r.   r!   r   r   r   r   x   s    zBaseBrowser.open_new_tabN)r-   )r   T)r   r	   r
   argsr/   r   r   r   r   r   r   r   r,   i   s
   

r,   c               @   s   e Zd Zdd ZdddZdS )	r   c             C   sF   t |tr|| _dg| _n|d | _|dd  | _tjj| j| _d S )Nz%sr   r   )
isinstancestrr   r1   r'   r(   r)   )r.   r   r   r   r   r/      s    


zGenericBrowser.__init__r   Tc                sl   | j g fdd| jD  }y6tjd d dkr<tj|}ntj|dd}|j  S  tk
rf   dS X d S )Nc                s   g | ]}|j d  qS )z%s)replace).0arg)r!   r   r   
<listcomp>   s   z'GenericBrowser.open.<locals>.<listcomp>   winT)	close_fdsF)r   r1   sysplatform
subprocessPopenwaitOSError)r.   r!   r"   r#   cmdlinepr   )r!   r   r      s    
zGenericBrowser.openN)r   T)r   r	   r
   r/   r   r   r   r   r   r   |   s   
r   c               @   s   e Zd ZdddZdS )r   r   Tc                sp   | j g fdd| jD  }y:tjd d dkr<tj|}ntj|ddd}|j d kS  tk
rj   dS X d S )Nc                s   g | ]}|j d  qS )z%s)r4   )r5   r6   )r!   r   r   r7      s   z*BackgroundBrowser.open.<locals>.<listcomp>r8   r9   T)r:   start_new_sessionF)r   r1   r;   r<   r=   r>   pollr@   )r.   r!   r"   r#   rA   rB   r   )r!   r   r      s    zBackgroundBrowser.openN)r   T)r   r	   r
   r   r   r   r   r   r      s   r   c               @   s>   e Zd ZdZdZdZddgZdZdZdZ	dd Z
dd	d
ZdS )UnixBrowserNFTz%actionz%sc       
      C   s   g }|r*| j r*t|}| j | }|r*|g}| jg| | }|sD| jrLtj}nd }tj|d|| jrd|pfd |dd}|ry|jd}	|	 S  tj	k
r   dS X n&| jr|j
 d krdS dS n
|j  S d S )NT)r:   stdinstdoutstderrrC      F)
raise_optsintr   
backgroundr=   DEVNULLr>   redirect_stdoutr?   ZTimeoutExpiredrD   )
r.   r1   Zremoter#   Z	raise_optoptrA   ZinoutrB   rcr   r   r   _invoke   s0    

 



zUnixBrowser._invoker   c                s   |dkr| j  nB|dkr | j n2|dkrB| jd kr:| j qR| j ntdd|   fdd| jD }dd |D }| j|d	|}|sfd
d| jD }| j|ddS d	S d S )Nr   r   r$   zBad 'new' parameter to open(); zexpected 0, 1, or 2, got %sc                s    g | ]}|j d j d qS )z%sz%action)r4   )r5   r6   )actionr!   r   r   r7      s   z$UnixBrowser.open.<locals>.<listcomp>c             S   s   g | ]}|r|qS r   r   )r5   r6   r   r   r   r7      s    Tc                s   g | ]}|j d  qS )z%s)r4   )r5   r6   )r!   r   r   r7      s    F)remote_actionremote_action_newwinremote_action_newtabr   remote_argsrQ   r1   )r.   r!   r"   r#   r1   successr   )rR   r!   r   r      s$    

zUnixBrowser.open)r   T)r   r	   r
   rJ   rL   rN   rV   rS   rT   rU   rQ   r   r   r   r   r   rE      s   #rE   c               @   s$   e Zd ZddgZdZdZdZdZdS )Mozillaz%actionz%sr-   z-new-windowz-new-tabTN)r   r	   r
   rV   rS   rT   rU   rL   r   r   r   r   rX      s
   rX   c               @   s,   e Zd ZddgZddgZdZdZdZdZd	S )
Netscapez-noraisez-raisez-remotezopenURL(%s%action)r-   z,new-windowz,new-tabTN)	r   r	   r
   rJ   rV   rS   rT   rU   rL   r   r   r   r   rY     s   rY   c               @   s(   e Zd ZddgZddgZdZdZdZdS )	Galeonz-noraiser-   z%actionz%sz-nz-wTN)r   r	   r
   rJ   rV   rS   rT   rL   r   r   r   r   rZ     s
   rZ   c               @   s$   e Zd ZddgZdZdZdZdZdS )Chromez%actionz%sr-   z--new-windowTN)r   r	   r
   rV   rS   rT   rU   rL   r   r   r   r   r[     s
   r[   c               @   s$   e Zd ZddgZdZdZdZdZdS )Operaz%actionz%sr-   z--new-windowTN)r   r	   r
   rV   rS   rT   rU   rL   r   r   r   r   r\   "  s
   r\   c               @   s(   e Zd ZddgZdZdZdZdZdZdS )Elinksz-remotezopenURL(%s%action)r-   z,new-windowz,new-tabFN)	r   r	   r
   rV   rS   rT   rU   rL   rN   r   r   r   r   r]   ,  s   r]   c               @   s   e Zd ZdddZdS )	Konquerorr   Tc             C   s   |dkrd}nd}t j}yt jd||gd|||d}W n tk
rJ   Y nX |j  dS y t jdd|gd|||dd	}W n tk
r   Y nX |j d krdS y t jd
d|gd|||dd	}W n tk
r   dS X |j d kS d S )Nr$   ZnewTabZopenURL	kfmclientT)r:   rF   rG   rH   	konquerorz--silent)r:   rF   rG   rH   rC   kfmz-dF)r=   rM   r>   r@   r?   rD   )r.   r!   r"   r#   rR   devnullrB   r   r   r   r   A  s:    zKonqueror.openN)r   T)r   r	   r
   r   r   r   r   r   r^   :  s   r^   c               @   s&   e Zd Zdd Zdd Zd
ddZd	S )Grailc             C   s   dd l }dd l}dd l}dd l}tjj|j d}|jtj	 d }tjj||d }|j |}|shd S |j|j
|j}	xX|D ]P}
y|	j|
 W n8 tk
r   ytj|
 W n tk
r   Y nX Y q~X |	S q~W d S )Nr   z.grail-unixz-*)globpwdsockettempfiler'   r(   joinZ
gettempdirgetpwuidgetuidZAF_UNIXZSOCK_STREAMZconnectr@   unlink)r.   rd   re   rf   rg   ZtempdiruserfilenameZmaybessfnr   r   r   _find_grail_rcr  s*    

zGrail._find_grail_rcc             C   s&   | j  }|sdS |j| |j  dS )Nr   r   )rp   sendclose)r.   rR   rn   r   r   r   _remote  s    
zGrail._remoter   Tc             C   s&   |r| j d| }n| j d| }|S )NzLOADNEW zLOAD )rs   )r.   r!   r"   r#   okr   r   r   r     s    z
Grail.openN)r   T)r   r	   r
   rp   rs   r   r   r   r   r   rc   n  s   rc   c              C   s  t jdrtdd td dtjkr>t jdr>tdd td dtjkrbt jdrbtdd td dtjkrt jdrtdttd t jdrtdd td x&dD ]} t j| rt| d t|  qW x&dD ]} t j| rt| d t|  qW t jdrtdttd nt jdr*tdttd x*dD ]"} t j| r0t| d t	|  q0W t jdrrtdd td x*d D ]"} t j| rxt| d t
|  qxW t jdrtdd td t jdrtdd td t jdrtdtd  d S )!Nzxdg-openZGNOME_DESKTOP_SESSION_IDz	gvfs-openz
gnome-openZKDE_FULL_SESSIONr_   zx-www-browserfirefox	iceweaseliceape	seamonkeymozilla-firefoxmozilla-firebirdfirebirdmozillanetscapera   r`   galeonepiphanyZ	skipstonegoogle-chromechromechromiumchromium-browseroperaZmosaicZgrail)ru   rv   rw   rx   )ry   rz   r{   r|   r}   )r~   r   )r   r   r   r   )r%   r&   r   r   r'   environr^   rX   rY   rZ   r[   r\   rc   )r   r   r   r   register_X_browsers  sH    



 


r   ZDISPLAYZTERMzwww-browserZlinksZelinksZlynxZw3mr8   r9   c               @   s   e Zd ZdddZdS )WindowsDefaultr   Tc             C   s,   yt j| W n tk
r"   dS X dS d S )NFT)r'   Z	startfiler@   )r.   r!   r"   r#   r   r   r   r     s
    zWindowsDefault.openN)r   T)r   r	   r
   r   r   r   r   r   r     s   r   zwindows-defaultZPROGRAMFILESzC:\Program FileszInternet Explorer\IEXPLORE.EXEru   r{   rx   r|   r}   r   darwinc               @   s   e Zd Zdd ZdddZdS )	MacOSXc             C   s
   || _ d S )N)r   )r.   r   r   r   r   r/   &  s    zMacOSX.__init__r   Tc       	      C   s   d|krd| }t t|}| jdkr8d|jdd }n<| jdkrHd}nd	|d
  }d|jdd }d| j||f }tjdd}|d krdS |j| |j }| S )N:zfile:defaultzopen location "%s""z%22ZOmniWebr-   ztoWindow %dr   zOpenURL "%s"ztell application "%s"
                                activate
                                %s %s
                            end tell	osascriptwF)rK   boolr   r4   r'   popenwriterr   )	r.   r!   r"   r#   scriptZtoWindowr+   osapiperP   r   r   r   r   )  s     


zMacOSX.openN)r   T)r   r	   r
   r/   r   r   r   r   r   r     s   
r   c               @   s   e Zd Zdd ZdddZdS )	MacOSXOSAScriptc             C   s
   || _ d S )N)_name)r.   r   r   r   r   r/   K  s    zMacOSXOSAScript.__init__r   Tc             C   sb   | j dkrd|jdd }nd| j |jddf }tjdd}|d krJdS |j| |j }| S )	Nr   zopen location "%s"r   z%22z
                   tell application "%s"
                       activate
                       open location "%s"
                   end
                   r   r   F)r   r4   r'   r   r   rr   )r.   r!   r"   r#   r   r   rP   r   r   r   r   N  s    

zMacOSXOSAScript.openN)r   T)r   r	   r
   r/   r   r   r   r   r   r   J  s   r   Zsafarir   r   ZBROWSERr-   c        	      C   s   dd l } dtjd  }y| j tjdd  d\}}W nJ | jk
r~ } z,t|tjd t|tjd tjd W Y d d }~X nX d}x*|D ]"\}}|dkrd}q|dkrd}qW t|dkrt|tjd tjd |d }t|| td	 d S )
Nr   zDUsage: %s [-n | -t] url
    -n: open new window
    -t: open new tabr   Zntd)filez-nz-tr$   )	getoptr;   argverrorprintrH   exitlenr   )	r   usageZoptsr1   msgZnew_winoar!   r   r   r   main~  s(      

r   __main__)Nr   )N)r   T)r   r   r   r   r   r   r   )1r'   r   r%   r;   r=   __all__	Exceptionr   r   r   r   r   r   r   r   r   objectr,   r   r   rE   rX   rY   rZ   r[   ZChromiumr\   r]   r^   rc   r   r   r&   r<   r   r(   rh   Ziexplorer   r   r   r   pathsepZ_userchoicesreverserA   r+   r   r   r   r   r   r   <module>   s   



"N

	
45B

.



