§
    (¶Õi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__© ó    ú!/usr/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Õ;PÐ3PÐ3PÝ×Ò˜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Ñ.Ô.Ð.Ð.Ð.ð/Ý# G§M¢M¡O¤OÔ4��øÝð /ð /ð /Ý% gÑ.Ô.���ð/øøøà�qŒzÐ%Ø˜q”zÐ!Ð!Ð!Ø˜”Ð'Ø!�w˜q”z‘|”|Ð#Ð#Ð#ð (å
Ð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 )Ñ,Ô,ð 	Ø�4�4ð	àˆ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 )z…Open 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ðÝ˜DŸJšJ™LœLÔ)ˆˆøÝð ð ð Ø�dˆ|ÐÐÐðøøøð ˜”€JØð "�d—j’j‘l”l jÔ&9Ò9Ð9ØˆˆˆØ—Y’Y˜zÑ*Ô*ˆ
Ø!ˆ
ŒÝ œ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˜   ó   € Ø�yŠy˜˜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   € € € € € Ø=Ð=àˆ6€Dðð ð ð ð"ð "ð "ð "ð!ð !ð !ð!ð !ð !ð !ð !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_   € Ý�d�CÑ Ô ð 	!ØˆDŒIØ˜ˆDŒIˆIð ˜QœˆDŒIØ˜Q˜R˜RœˆDŒIÝœ×(Ò(¨¬Ñ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Ø%(ð "%§¢¨T°3Ñ!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Ø,0¬Ið!7ñ !7ô !7ñ 7ˆð	ÝŒ|˜B˜Q˜BÔ 5Ò(Ð(ÝÔ$ WÑ-Ô-��åÔ$ W¸Ð=Ñ=Ô=�Ø—v’v‘x”x�<ÐøÝð 	ð 	ð 	Ø�5�5ð	øøø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Ø,0¬Ið!7ñ !7ô !7ñ 7ˆåŒ	Ð# SÑ)Ô)Ð)ð	ÝŒ|˜B˜Q˜BÔ 5Ò(Ð(ÝÔ$ WÑ-Ô-��åÔ$ W¸Ø7;ð=ñ =ô =�à—F’F‘H”H Ð$Ð%øÝð 	ð 	ð 	Ø�5�5ð	øøø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!  € Øˆ	Øð 	&�d”oð 	&å˜I™œˆIØ”/ )Ô,ˆCØÐ%  �Ià”9�+ 	Ñ)¨DÑ0ˆàð 	�T”_ð 	ÝÔ&ˆEˆEð ˆEÝÔ˜W°¸EØ%)Ô%9Ð%C¸eÐ%KÀtØ$)¸TðCñ Cô Cˆð ð 	 ðØ—V’V˜A‘Y”Y�à�v�øÝÔ,ð ð ð Ø�t�tðøøøàŒ_ð 	 Ø�vŠv‰xŒxÐØ�tà�uà—v’v‘x”x�<Ð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'   ø€ Ð@Ð@Ð@¨s�C—K’K  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Ñ)Ô)Ð)Ø�!Š8ˆ8ØÔ'ˆFˆFØ�AŠXˆXØÔ.ˆFˆFØ�AŠXˆXØÔ(Ð0ØÔ2��àÔ2��åÐ9Ø5¸Ñ;ñ<ñ =ô =ð =ð-ð -ð -ð -ð -ØÔ+ð-ñ -ô -ˆà+Ð+˜tÐ+Ñ+Ô+ˆØ—,’,˜t T¨9°cÑ:Ô:ˆØð 	à@Ð@Ð@Ð@°d´iÐ@Ñ@Ô@ˆDØ—<’<  e¨UÑ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Ø(ÐØ%ÐØ€J€J€Jr   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Ð3€KØ€MØ(ÐØ%ÐØ€J€J€Jr   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ØÐØ€J€J€Jr   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Ø)ÐØÐØ€J€J€Jr   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Ø)ÐØÐØ€J€J€Jr   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Ð3€KØ€MØ(ÐØ%ÐØ€Jð €O€O€Or   r§   c                   ó   — e Zd ZdZdd„ZdS )Ú	Konquerorz±Controller 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Ñ)Ô)Ð)à�!Š8ˆ8ØˆFˆFàˆFåÔ$ˆð
	ÝÔ  +¨v°sÐ!;Ø+/°wØ(/¸ðAñ Aô AˆAð �FŠF‰HŒHˆHà�4øõ ð 	ð 	ð 	àˆDð	øøøð	ÝÔ  +¨z¸3Ð!?Ø+/°wØ(/¸Ø37ð9ñ 9ô 9ˆAð �vŠv‰xŒxÐà�tð  øõ	 ð 	ð 	ð 	àˆDð	øøøð	&ÝÔ  %¨¨sÐ!3Ø+/°wØ(/¸Ø37ð9ñ 9ô 9ˆAð —F’F‘H”H Ð$Ð%øõ ð 	ð 	ð 	Ø�5�5ð	øøø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Ø,ñ.ô .ˆà�|Š|�BœI™KœKÑ(Ô(¨Ô+ˆÝ”7—<’< §¢¨GÑ 4Ô 4°d·k²kÀ$Ñ6GÔ6GÈ$Ñ6NÑOÔOˆØ—’˜8Ñ$Ô$ˆØð 	Ø�4Ø�MŠM˜&œ.¨&Ô*<Ñ=Ô=ˆØð 	ð 	ˆBð	Ø—	’	˜"‘”�ð ���øõ ð ð ð ðÝ”I˜b‘M”M�M�MøÝð ð ð Ø�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Ñ)Ô)Ð)Øð 	-Ø—’˜j¨3Ñ.Ñ/Ô/ˆBˆBà—’˜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Õ#4°ZÑ#@Ô#@ÑAÔAÐAõ „|�EÑÔð NÝ�˜Õ/Ð0KÐ0KÐ0KÑLÔLÑMÔMÐMð "¥R¤ZÐ/Ð/µF´LÀÑ4MÔ4MÐ/Ý�˜dÕ$5°kÑ$BÔ$BÑCÔCÐCð �RœZÐ'Ð'­F¬L¸Ñ,EÔ,EÐ'Ý��i­°;Ñ)?Ô)?Ñ@Ô@Ð@å„|�OÑ$Ô$ð LÝ� $Õ(9¸/Ñ(JÔ(JÑKÔKÐKð Cð 6ð 6ˆÝŒ<˜Ñ Ô ð 	6Ý�W˜d¥G¨GÑ$4Ô$4Ñ5Ô5Ð5øð+ð 7ð 7ˆõ Œ<˜Ñ Ô ð 	7Ý�W˜d¥H¨WÑ$5Ô$5Ñ6Ô6Ð6øõ „|�EÑÔð AÝ��	¥9¨UÑ#3Ô#3Ñ4Ô4Ð4Ð4Ý	Œ�kÑ	"Ô	"ð AÝ��i­°;Ñ)?Ô)?Ñ@Ô@Ð@ð *ð 5ð 5ˆÝŒ<˜Ñ Ô ð 	5Ý�W˜d¥F¨7¡O¤OÑ4Ô4Ð4øõ „|�KÑ Ô ð DÝ�˜dÕ$5°kÑ$BÔ$BÑCÔCÐCð Oð 5ð 5ˆÝŒ<˜Ñ Ô ð 	5Ý�W˜d¥F¨7¡O¤OÑ4Ô4Ð4øõ „|�GÑÔð 0Ý�˜$¥ g¡¤Ñ/Ô/Ð/õ „|�HÑÔð >Ý�˜4Õ!2°8Ñ!<Ô!<Ñ=Ô=Ð=õ „|�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    r“t          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�nët          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¦  «        rút          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 r‡t          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Õ"3°IÑ">Ô">Ñ?Ô?Ð?å
„|�B�Q�BÔ˜5Ò Ð åÐ"¥NÑ3Ô3Ð3õ ”7—<’<¥¤
§¢¨~Ð?RÑ SÔ SØ AñCô Cˆà! :¨{¸IØ" G¨Xð7ð 	Dð 	DˆGåŒ|˜GÑ$Ô$ð DÝ˜ $Õ(9¸'Ñ(BÔ(BÑCÔCÐCøñ	Dõ Œ:�>Š>˜)Ñ$Ô$ð 	"­¬
¯ªÐ7HÑ(IÔ(Ið 	"ð/Ø<×BÒBÑDÔD�Ý'Ô4°SÅÔASÐTÑTÔT�
Ø#×*Ò*Ñ,Ô,×2Ò2Ñ4Ô4�ð
 )/Ð%Ð%øõ	 &¥zÔ'DÅoÕWiÐjð ð ð Ø�ðøøøõ  Ñ!Ô!Ð!õ Œ:�>Š>˜&Ñ!Ô!ð 	=ÝŒ|˜MÑ*Ô*ð MÝ˜¨­n¸]Ñ.KÔ.KÑLÔLÐLåŒ|˜GÑ$Ô$ð AÝ˜ $­°wÑ(?Ô(?Ñ@Ô@Ð@ÝŒ|˜HÑ%Ô%ð ;Ý˜ 4­°Ñ)9Ô)9Ñ:Ô:Ð:åŒ|˜FÑ#Ô#ð ?Ý˜ ¥~°fÑ'=Ô'=Ñ>Ô>Ð>åŒ|˜EÑ"Ô"ð =Ý˜ ¥n°UÑ&;Ô&;Ñ<Ô<Ð<ð •B”JÐÐÝ”j Ô+×1Ò1µ"´*Ñ=Ô=ˆØ×ÒÑÔÐð #ð 	Uð 	UˆGØ˜"Š}ˆ}Ý! '°TÐ:Ñ:Ô:�Ø�q”6�>Ý˜W d­N¸7Ñ,CÔ,CÈtÐ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øõ ð ð ð ð �u�uðøøø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   € ÝŒM˜Tœ^Ô4ð :ð :ð :Ý;MÐZ[ð]ñ ]ô ]ð ]àˆDŒIˆIˆIr   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�>�>�>�>à˜#�:�:Ø˜c‘k�õ •d˜3‘i”i‘.”.ˆCØŒy˜IÒ%Ð%à-°·²¸CÀÑ0GÔ0GÑG��ð ”9 	Ò)Ð)Ø!�H�Hð  -°°a±Ñ8�HØ$ s§{¢{°3¸Ñ'>Ô'>Ñ>��ð ,0¬9¨9¨9°c°c°c¸8¸8¸8ðE�õ
 ”h˜{¨CÑ0Ô0ˆGØˆØ�uà�MŠM˜&Ñ!Ô!Ð!Ø—’‘”ˆBØ�6ˆMr   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!   ø€ Ý‰GŒG×Ò˜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   € åŒM˜Tœ^Ô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   € åŒM˜Tœ^Ô4ð Jð JØ"&¤.Ô"9ðJð Jð Jå,¸ð<ñ <ô <ð <ð ˆDŒIˆIˆIr   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’   € ØŒy˜IÒ%Ð%Ø-°·²¸CÀÑ0GÔ0GÑG��ðð
 œ	 3§;¢;¨s°EÑ#:Ô#:Ð;ñ<�õ ”h˜{¨CÑ0Ô0ˆGØˆØ�uà�MŠM˜&Ñ!Ô!Ð!Ø—’‘”ˆBØ�6ˆMr   )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:  € Ø€M€M€Mðåœ( 1œ+ñ&€EðØ—]’]¥3¤8¨A¨B¨B¤<°Ñ7Ô7‰
ˆˆdˆdøØŒ<ð ð ð Ýˆc�œ
Ð#Ñ#Ô#Ð#Ýˆe�#œ*Ð%Ñ%Ô%Ð%ÝŒ�‰Œˆˆˆˆˆˆøøøøðøøøð €GØð $ð $‰ˆˆ1Ø�Š9ˆ9 �g�gØ�$ŠYˆY !˜øÝ
ˆ4�y„y�A‚~€~Ýˆe�#œ*Ð%Ñ%Ô%Ð%ÝŒ�‰Œˆà
ˆqŒ'€CÝˆˆgÑÔÐå	ˆ$�K„K€K€K€Ks   ›+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ð 5ðDð ð ð ð&ð ð ðð ð ð ',ð ð ð ð ð ð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ÒÐØ€D�F„F€F€F€Fð Ðr   