
    -hh^                        S SK r S SKrS SKrS SKrS SKrS SKr/ SQr " S S\5      r\R                  " 5       r
0 rSqSqS5SS.S jjrS5S jrS6S	 jrS
 rS rSS.S jr " S S5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r\r " S S\5      r " S S\5      r " S S \5      r " S! S"\5      rS# r S$ r!\RD                  SS% S&:X  a   " S' S(\5      r#\RD                  S):X  a   " S* S+\5      r$\RD                  S,:X  a"  S S-K%J&r&  \&(       a
  S S.K'J(r(J)r)J*r*   " S/ S0\5      r+S1\,\-   S-  4S2 jr.S5S1\,\-   S-  4S3 jjr/\0S4:X  a  \/" 5         gg)7    N)Erroropenopen_newopen_new_tabgetregisterc                       \ rS rSrSrg)r       N)__name__
__module____qualname____firstlineno____static_attributes__r       3/opt/python-3.13.8/usr/lib/python3.13/webbrowser.pyr   r      s    r   r   F	preferredc                ,   [            [        c
  [        5         X/[        U R	                  5       '   U(       d  [
        (       a$  U  S3[
        :X  a  [        R                  SU 5        O[        R                  U 5        S S S 5        g ! , (       d  f       g = f)Nz.desktopr   )_lock	_tryorderregister_standard_browsers	_browserslower_os_preferred_browserinsertappend)nameklassinstancer   s       r   r   r      sf    	&(#("3	$**,
 ..dV83DH]3]Q%T" 
s   A5B
Bc                    [         c   [           [         c
  [        5         S S S 5        U b  U /nO[         nU H|  nSU;   a<  [        R                  " U5      nUS   S:X  a  [        US S 5      s  $ [        U5      s  $  [        UR                  5          nUS   b  US   s  $ US   c  Mr  US   " 5       s  $    [        S5      e! , (       d  f       N= f! [         a    [        U5      n NVf = f)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?kk'*Gr{c!("66%g../#GMMO4 qz%qz!'qz|##  $ 3
443 U&  /%g./s   C=C
CC+*C+c                     [         c   [           [         c
  [        5         S S S 5        [          H'  n[        U5      nUR	                  XU5      (       d  M'    g   g! , (       d  f       N@= f)NTF)r   r   r   r   r   )urlnew	autoraiser   r.   s        r   r   r   L   sT      *,  d)<<),,   Us   A
A(c                     [        U S5      $ Nr%   r   r1   s    r   r   r   c       
 Q<r   c                     [        U S5      $ N   r6   r7   s    r   r   r   k   r8   r   c                   U R                  5       S   n[        R                  " U5      (       d  S S /$ [        R                  R                  U5      n [        UR                  5          nUS   nU(       al  UR                  5       UR
                  :X  aN  SS K	nUR                  U5      nXl
        [        R                  R                  U 5      Ul        [        U S XQS9  S U/$ S S /$ ! [         a    S S /s $ f = f)Nr   r%   )r    r   )r'   shutilwhichospathbasenamer   r   r*   copyr   r   )r.   r   cmdr   r/   
controllerrB   s          r   r+   r+   s   s     --/!
C<<d|77C DDJJL) Jdjjlj&9&99YYz*
! gg..w7
$Ij!!$<  d|s   C& &C76C7c                   :    \ rS rSrS/rS	S jrS
S jrS rS rSr	g)BaseBrowser   r"   c                     Xl         Xl        g N)r   rA   selfr   s     r   __init__BaseBrowser.__init__   s    	r   c                     [         erI   )NotImplementedErrorrK   r1   r2   r3   s       r   r   BaseBrowser.open   s    !!r   c                 &    U R                  US5      $ r5   r6   rK   r1   s     r   r   BaseBrowser.open_new       yya  r   c                 &    U R                  US5      $ r:   r6   rS   s     r   r   BaseBrowser.open_new_tab   rU   r   )rA   r   N) r   T)
r   r   r   r   argsrL   r   r   r   r   r   r   r   rF   rF      s     6D"!!r   rF   c                   $    \ rS rSrS rSS jrSrg)r)      c                     [        U[        5      (       a  Xl        S/U l        OUS   U l        USS  U l        [        R
                  R                  U R                  5      U l        g )Nr"   r   r%   )
isinstancestrr   rZ   r?   r@   rA   rJ   s     r   rL   GenericBrowser.__init__   sQ    dC  IDI QDIQRDI((3r   c                    [         R                  " SU5        U R                  /U R                   Vs/ s H  nUR	                  SU5      PM     sn-   n [         R
                  S S S:X  a  [        R                  " U5      nO[        R                  " USS9nUR                  5       (       + $ s  snf ! [         a     gf = f)Nwebbrowser.openr"      winT)	close_fdsF)
sysauditr   rZ   replaceplatform
subprocessPopenwaitOSErrorrK   r1   r2   r3   argcmdlineps          r   r   GenericBrowser.open   s    		#S)99+,0II!7,5S "%T3!7,5!7 7	||BQ5($$W-$$W=vvx<!7  		s   B,AB1 1
B>=B>)rZ   rA   r   NrY   )r   r   r   r   rL   r   r   r   r   r   r)   r)      s    4r   r)   c                       \ rS rSrSS jrSrg)r(      c                 ~   U R                   /U R                   Vs/ s H  nUR                  SU5      PM     sn-   n[        R                  " SU5         [        R
                  S S S:X  a  [        R                  " U5      nO[        R                  " USSS9nUR                  5       S L $ s  snf ! [         a     gf = f)Nr"   rb   rc   rd   T)re   start_new_sessionF)
r   rZ   rh   rf   rg   ri   rj   rk   pollrm   rn   s          r   r   BackgroundBrowser.open   s    99+,0II!7,5S "%T3!7,5!7 7		#S)	||BQ5($$W-$$W7;=668t##!7  		s   B*AB/ /
B<;B<r   NrY   r   r   r   r   r   r   r   r   r   r(   r(      s    r   r(   c                   H    \ rS rSrSrSrSrSS/rSrSr	Sr
S
S jrSS jrS	rg)UnixBrowser   NFT%actionr"   c           	      J   / nU(       a5  U R                   (       a$  [        U5      nU R                   U   nU(       a  U/nU R                  /U-   U-   nU(       d  U R                  (       a  [        R
                  nOS n[        R                  " USUU R                  =(       a    U=(       d    S USS9n	U(       a   U	R                  S5      n
U
(       + $ U R                  (       a  U	R                  5       c  ggU	R                  5       (       + $ ! [        R                   a     gf = f)NTre   stdinstdoutstderrrv      F)
raise_optsintr   
backgroundrj   DEVNULLrk   redirect_stdoutrl   TimeoutExpiredrw   )rK   rZ   remoter3   r1   	raise_optoptrp   inoutrq   rcs              r   _invokeUnixBrowser._invoke   s    	dooII//),C E	99+	)D0T__&&E EWE%)%9%9%Ce%Kt$)TC VVAYv __vvxvvx< ,, s   :D D"!D"c                 n   [         R                  " SU5        US:X  a  U R                  nONUS:X  a  U R                  nO;US:X  a'  U R                  c  U R                  nOU R                  nO[        SU 35      eU R                   Vs/ s H%  nUR                  SU5      R                  SU5      PM'     nnU Vs/ s H  oU(       d  M  UPM     nnU R                  USX15      nU(       d>  U R                   Vs/ s H  oUR                  SU5      PM     nnU R                  US	S	5      $ gs  snf s  snf s  snf )
Nrb   r   r%   r;   z8Bad 'new' parameter to open(); expected 0, 1, or 2, got r"   r}   TF)
rf   rg   remote_actionremote_action_newwinremote_action_newtabr   remote_argsrh   r   rZ   )rK   r1   r2   r3   actionro   rZ   successs           r   r   UnixBrowser.open  s*   		#S)!8''FAX..FAX((02222 4475: ; ;  ++-+C D#&..y&A+ 	 -#+tst+,,tT9:6:ii@isKKc*iD@<<eU33-+ As   ,D(9
D-D-7D2r   rI   rY   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r{   r{      s;     JJO d#KM" Hr   r{   c                   ,    \ rS rSrSS/rSrSrSrSrSr	g	)
Mozillai'  r}   r"   rX   z-new-windowz-new-tabTr   N
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   '  s$     d#KM(%Jr   r   c                   0    \ rS rSrSS/rSS/rSrSrSrS	r	g
)Epiphanyi1  z-noraiserX   r}   r"   -nz-wTr   N)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   1  s(     b!Jd#KMJr   r   c                   ,    \ rS rSrSS/rSrSrSrSrSr	g)	Chromei;  r}   r"   rX   --new-windowTr   Nr   r   r   r   r   r   ;  $     d#KM)Jr   r   c                   ,    \ rS rSrSS/rSrSrSrSrSr	g)	OperaiH  r}   r"   rX   r   Tr   Nr   r   r   r   r   r   H  r   r   r   c                   0    \ rS rSrSS/rSrSrSrSrSr	Sr
g	)
ElinksiR  z-remotezopenURL(%s%action)rX   z,new-windowz,new-tabFr   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   R  s,     23KM(%J Or   r   c                       \ rS rSrSS jrSrg)	Konquerori`  c           	         [         R                  " SU5        US:X  a  SnOSn[        R                  n [        R                  " SXA/SUXUS9nUR                  5         g! [         a     Of = f [        R                  " SS	U/SUXUSS
9nUR                  5       c  gO! [         a     Of = f [        R                  " SSU/SUXUSS
9nUR                  5       S L $ ! [         a     gf = f)Nrb   r;   newTabopenURL	kfmclientT)re   r   r   r   	konquerorz--silentr   kfmz-dF)rf   rg   rj   r   rk   rl   rm   rw   )rK   r1   r2   r3   r   devnullrq   s          r   r   Konqueror.openg  s   		#S)!8FF$$
	  +v!;+/w(/AA FFH  			  +z3!?+/w(/379A vvx  	  			$  %s!3+/w(/379A 668t##  		s5   A 
A+*A+/B 
B*)B*.C 
C('C(r   NrY   ry   r   r   r   r   r   `  s    +$r   r   c                   ,    \ rS rSrSS/rSrSrSrSrSr	g)	Edgei  r}   r"   rX   r   Tr   Nr   r   r   r   r   r     r   r   r   c                     [         R                  " S5      (       a  [        SS [        S5      5        [         R                  " S5      (       a  [        SS [        / SQ5      5        [        R
                  " SS5      R                  S5      n SU ;   d  S[        R                  ;   a1  [         R                  " S	5      (       a  [        S	S [        S	5      5        S
U ;   d  S[        R                  ;   a5  [         R                  " S5      (       a  [        S[        [        S5      5        [         R                  " S5      (       a  [        SS [        S5      5        S H6  n[         R                  " U5      (       d  M   [        US [        U5      5        M8     [         R                  " S5      (       a  [        S[        [        S5      5        O5[         R                  " S5      (       a  [        S[        [        S5      5        [         R                  " S5      (       a  [        SS [        S5      5        S H6  n[         R                  " U5      (       d  M   [        US [        U5      5        M8     [         R                  " S5      (       a  [        SS [        S5      5        [         R                  " S5      (       a  [        SS [        S5      5        g g )Nzxdg-opengio)r   r   z--r"   XDG_CURRENT_DESKTOPrX   :GNOMEGNOME_DESKTOP_SESSION_IDz	gvfs-openKDEKDE_FULL_SESSIONr   zx-www-browser)firefox	iceweasel	seamonkeyzmozilla-firefoxmozillar   r   epiphany)zgoogle-chromechromechromiumzchromium-browseroperamicrosoft-edge)r=   r>   r   r(   r?   getenvr'   environr   r   r   r   r   r   )xdg_desktopr.   s     r   register_X_browsersr     s    ||JT#4Z#@A ||E/0KLM))126<<SAK 
K		#rzz	1LL%%d$5k$BC 
+		rzz	)LL%%i;)?@ ||O$$$(9/(JK<<  WdGG$45 ||E	9U#34	k	"	"i;)?@ ||JT8J#78 O<<  WdF7O4 O
 ||G$g/||$%%!4.>)?@ &r   c                     / q [        R                  S:X  aX  [        SS [	        S5      5        [        SS [	        S5      5        [        SS [	        S5      5        [        SS [	        S5      5        [        R                  S:X  a  [        SS [        5       S	S
9  [        R                  S:X  a  [        SS [        S5      5        [        R                  S S S:X  Ga  [        S[        5        [        R                  R                  [        R                  R                  SS5      S5      n [        R                  R                  [        R                  R                  SS5      S5      nSSSSSX4 H6  n[        R                  " U5      (       d  M   [        US [        U5      5        M8     [        R                  " S5      (       a  [        SS [        S5      5        GO[        R                  S:w  a  [        R                  R                  S5      (       d$  [        R                  R                  S5      (       a^   SR!                  5       n["        R$                  " U["        R&                  S9nUR)                  5       R+                  5       nUq[7        5         [        R                  R                  S5      (       a  [        R                  " S5      (       a  [        SS [9        S5      5        [        R                  " S 5      (       a  [        S S [9        S 5      5        [        R                  " S!5      (       a  [        S!S [;        S!5      5        [        R                  " S"5      (       a  [        S"S [9        S"5      5        [        R                  " S#5      (       a  [        S#S [9        S#5      5        S$[        R                  ;   ay  [        R                  S$   R!                  [        R<                  5      nUR?                  5         U H2  nUS%:w  d  M  [A        US	S
9nUS&   b  M  [        US [9        U5      S	S
9  M4     g g ! [.        ["        R0                  [2        [4        4 a     GNf = f)'NdarwinMacOSXdefaultr   r   safariios
iosbrowserTr   
serenityosBrowserrc   rd   zwindows-defaultzPROGRAMFILES(x86)zC:\Program Files (x86)z%Microsoft\Edge\Application\msedge.exePROGRAMFILESzC:\Program Filesr   r   r   zMicrosoftEdge.exer   DISPLAYWAYLAND_DISPLAYz$xdg-settings get default-web-browser)r   TERMzwww-browserlinkselinkslynxw3mBROWSERrX   r%   )!r   rf   ri   r   MacOSXOSAScript
IOSBrowserr(   WindowsDefaultr?   r@   joinr   r   r=   r>   r   r'   rj   check_outputr   decodestripr   FileNotFoundErrorCalledProcessErrorPermissionErrorNotADirectoryErrorr   r)   r   pathsepreverser+   )edge64edge32r.   rC   
raw_resultresultuserchoicesrp   s           r   r   r     s=   I
||x4!;<4!:;D/)"<=4!:; ||utZ\TB
|||#D"3I">?
||BQ5 "N3 bjjnn-@B[\HJ bjjnn^=PQHJ!;	81G||G$$$(9'(BC1 <<+,,%tT2E-FG <<8#	)B)BbjjnnUfFgFg	/<BBD'44SASAST
#**,224 )/%! ::>>&!!||M**n].KL||G$$$w(?@||H%%4)9:||F##~f'=>||E""nU&;< BJJjj+11"**= #G"}!'T:q6>WdN7,CtT	 # 9 &z'D'D#%79 s   7AP; ;$Q#"Q#rc   rd   c                       \ rS rSrSS jrSrg)r   i@  c                     [         R                  " SU5         [        R                  " U5        g! [         a     gf = f)Nrb   TF)rf   rg   r?   	startfilerm   rP   s       r   r   WindowsDefault.openA  s=    II'-S!    s   0 
==r   NrY   ry   r   r   r   r   r   @  s    		r   r   r   c                   6   ^  \ rS rSrSU 4S jjrSS jrSrU =r$ )r   iQ  c                 $   > [         TU ]  U5        g rI   )superrL   )rK   r   	__class__s     r   rL   MacOSXOSAScript.__init__R  s    GT"r   c                 .   [         R                  " SU5        UR                  SS5      nU R                  S:X  a  SU S3nOSU R                   SU S3n[        R
                  " S	S
5      nUc  gUR                  U5        UR                  5       nU(       + $ )Nrb   "z%22r   zopen location "z&
                   tell application "zH"
                       activate
                       open location "z,"
                   end
                   	osascriptwF)rf   rg   rh   r   r?   popenwriteclose)rK   r1   r2   r3   scriptosapiper   s          r   r   MacOSXOSAScript.openU  s    II'-++c5)CyyI%*3%q1&&*ii[ 1''*e , hh{C0GMM&!B6Mr   r   )r   rY   )r   r   r   r   rL   r   r   __classcell__)r   s   @r   r   r   Q  s    	#	 	r   r   r   )objc)c_void_pc_char_pc_ulongc                       \ rS rSrSS jrSrg)r   is  c                    [         R                  " SU5        [        c  g[        [        R                  l        [        R                  " S5      n[        R                  " S5      n[        [        [        [        /[        R                  l
        [        R                  " UUUR                  S5      S5      n[        R                  " S5      n[        R                  " S5      n[        [        [        /[        R                  l
        [        R                  " XxU5      n	[        R                  " S	5      n
[        R                  " S
5      n[        [        /[        R                  l
        [        R                  " X5      n[        R                  " S5      n[        [        [        [        [        /[        R                  l
        S [        R                  l        [        R                  " XU	S S 5        g)Nrb   Fs   NSStrings   stringWithCString:encoding:zutf-8   s   NSURLs   URLWithString:s   UIApplications   sharedApplications"   openURL:options:completionHandler:T)rf   rg   r   r  objc_msgSendrestypeobjc_getClasssel_registerNamer  r  argtypesencode)rK   r1   r2   r3   NSStringconstructor
url_stringNSURLurlWithString_ns_urlUIApplicationsharedApplication
shared_appopenURL_s                 r   r   IOSBrowser.opent  so   II'-| )1D% ))+6H//0NOK*2Hh)PD&**

7#	J &&x0E!223DEN*2Hh)GD&&&ujIF
 !../?@M $ 5 56J K*2H)=D&**=LJ ,,-RSH(Hh*D& )-D%jFD$Gr   r   NrY   ry   r   r   r   r   r   s  s    4	r   r   arg_listc           
          SS K nUR                  SS9nUR                  SSS9  UR                  5       nUR                  SSS	S
SSSS9  UR                  SSS	SSSSS9  UR	                  U 5      nU$ )Nr   zOpen URL in a web browser.)descriptionr1   zURL to open)helpr   r   store_constr%   new_winzopen new window)r   constr   destr  z-tz	--new-tabr;   zopen new tab)argparseArgumentParseradd_argumentadd_mutually_exclusive_group
parse_args)r  r   parsergrouprZ   s        r   r$  r$    s    $$1M$NF
M2//1E	t^M	-  / 
t[	*  , X&DKr   c                 p    [        U 5      n[        UR                  UR                  5        [	        S5        g )N)r$  r   r1   r  print)r  rZ   s     r   mainr*    s%    hD4<< 	$Kr   __main__rI   rY   )1r?   r&   r=   rf   rj   	threading__all__	Exceptionr   RLockr   r   r   r   r   r   r   r   r   r+   rF   r)   r(   r{   r   r   r   Chromiumr   r   r   r   r   r   ri   r   r   _ios_supportr   ctypesr  r  r  r   listr_   r$  r*  r   r   r   r   <module>r4     s  
 
   
  
J	I 	 			 #e # 5F. ', D! !&[ 8 &M+ M`k { [  K [ 2$ 2$j; "7AtVU~ <<u
 
  <<8+ 8 <<5!665[ 5pcT) $49t#  zF r   