+
     wig  c                   s   R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt. R5Ot ! R R]4      t	]P                  ! 4       t/ tRsRsR6RR/R lltR6R ltR7R ltR	 tR
 tRR/R lt ! R R4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t]t ! R R]4      t ! R R]4      t ! R R]4      t ! R  R!]4      t R" t!R# t"]PF                  R$,          R%8X  d    ! R& R']4      t$]PF                  R(8X  d    ! R) R*]4      t%]PF                  R+8X  d$   ^ R,I&H't' ]''       d   ^ R-I(H)t)H*t*H+t+  ! R. R/]4      t,R0 R1 lt-R6R2 R3 llt.]/R48X  d
   ].! 4        R# R# )8z?Interfaces for launching and remotely controlling web browsers.NErrorc                   s    ] tR t^tRtR# )r     N)__name__
__module____qualname____firstlineno____static_attributes__r       #/usr/lib64/python3.14/webbrowser.pyr    r       s    r   	preferredFc               sL   \         ;_uu_ 4        \        f   \        4        W.\        V P	                  4       &   V'       g   \
        '       d&   V  R2\
        8X  d   \        P                  ^ V 4       M\        P                  V 4       RRR4       R#   + '       g   i     R# ; i)zRegister a browser connector.Nz.desktop)_lock	_tryorderregister_standard_browsers	_browserslower_os_preferred_browserinsertZappend)nameZklassinstancer	   s   &&&$r   registerr      sj    	&(#("3	$**,
 ..dV83DH]3]Q%T" 
s   >B:BB#	c                s0   \         f*   \        ;_uu_ 4        \         f   \        4        RRR4       V e   V .pM\         pV F  pRV9   dB   \        P                  ! V4      pVR,          R8X  d   \        VRR 4      u # \        V4      u #  \        VP                  4       ,          pV^,          e   V^,          u # V^ ,          f   K  V^ ,          ! 4       u # 	  \        R4      h  + '       g   i     L; i  \         d    \        T4      p Lki ; i)zCReturn a browser launcher instance appropriate for the environment.N%sZ&z!could not locate runnable browseri)r   r
   r   shlexsplitBackgroundBrowserGenericBrowserr   r   KeyError_synthesizer    )ZusingZalternativesbrowsercommands   &   r   getr   (   s    U *,  w 7?kk'*Gr{c!("66%g../#GMMO4 qz%qz!'qz|##  $ 3
443 U&  /%g./s   C)C<)C9	<DDc                s    \         f*   \        ;_uu_ 4        \         f   \        4        RRR4       \          F)  p\        V4      pVP	                  WV4      '       g   K(   R# 	  R#   + '       g   i     LE; i)aZ  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.

If opening the browser succeeds, return True.
If there is a problem, return False.
NTF)r   r
   r   r   open)urlnew	autoraiser   r   s   &&&  r   r   r   K   sV     U *,  d)<<),,   Us   A''A7	c                s    \        V ^4      # )zmOpen url in a new window of the default browser.

If not possible, then open url in the only browser window.
r   r      &r   open_newr%   b       
 Q<r   c                s    \        V ^4      # )z}Open url in a new page ("tab") of the default browser.

If not possible, then the behavior becomes equivalent to open_new().
r"   r#   r$   r   open_new_tabr'   j   r&   r   c               s   V P                  4       ^ ,          p\        P                  ! V4      '       g   RR.# \        P                  P                  V4      p \        VP                  4       ,          pT^,          pT'       dq   TP                  4       TP
                  8X  dR   ^ RI	pTP                  T4      pYn
        \        P                  P                  T 4      Tn        \        T RYQR7       RT.# RR.#   \         d    RR.u # i ; i)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].

N)r   r	   )r   shutilwhichospathbasenamer   r   r   copyr   r   )r   r	   cmdr   r   Z
controllerr-   s   &$     r   r   r   r   s     --/!
C<<d|77C DDJJL) Jdjjlj&9&99YYz*
! gg..w7
$Ij!!$<  d|s   C8 8D
	D
c                   sZ   a  ] tR t^t o RtR.tR
R ltRR ltR tR t	]
R 4       tRtV tR	# )BaseBrowserz3Parent class for all browsers. Do not use directly.r   c                s    Wn         Wn        R # N)r   r,   selfr      &&r   __init__ZBaseBrowser.__init__   s    	r   c                s    \         hr0   )ZNotImplementedErrorr2   r   r    r!      &&&&r   r   ZBaseBrowser.open   s    !!r   c                s&    V P                  V^4      # )   r"   r2   r   r3   r   r%   ZBaseBrowser.open_new       yya  r   c                s&    V P                  V^4      # )   r"   r8   r3   r   r'   ZBaseBrowser.open_new_tab   r9   r   c                s    V '       d6   V P                  4       P                  R4      '       d   \        RV  24      hR# R# )zCEnsures that the URL is safe to pass to subprocesses as a parameterZ-zInvalid URL: N)ZlstripZ
startswithZ
ValueErrorr#   r$   r   
_check_urlZBaseBrowser._check_url   s6     3::<**3//}SE233 03r   )r,   r   N)     T)r   r   r   r   __doc__argsr4   r   r%   r'   Zstaticmethodr;   r   __classdictcell____classdict__   @r   r/   r/      s7     =6D"!! 4 4r   r/   c                   s4   a  ] tR t^t o RtR tRR ltRtV tR# )r   zOClass for all browsers started with a command
and without remote functionality.c                s    \        V\        4      '       d   Wn        R .V n        MV^ ,          V n        VR,          V n        \        P
                  P                  V P                  4      V n        R# )r   :r7   NNN)
isinstancestrr   r@   r*   r+   r,   r1   r3   r   r4   ZGenericBrowser.__init__   sO    dC  IDI QDIRDI((3r   c                s   \         P                  ! R V4       V P                  V4       V P                  .V P                   Uu. uF  pVP                  RV4      NK  	  up,           p \         P                  R,          R8X  d   \        P                  ! V4      pM\        P                  ! VRR7      pVP                  4       '       * # u upi   \         d     R# i ; i)webbrowser.openr   Ni   NwinT)	close_fdsF)sysauditr;   r   r@   replaceplatform
subprocessPopenwaitOSErrorr2   r   r    r!   argcmdlinep   &&&&   r   r   ZGenericBrowser.open   s    		#S)99+,0II!7,5S "%T3!7,5!7 7	||B5($$W-$$W=vvx<!7  		s   C(AC CC)r@   r,   r   Nr=   )	r   r   r   r   r?   r4   r   r   rA   rB   rD   r   r   r      s     ,4 r   r   c                   s.   a  ] tR t^t o RtRR ltRtV tR# )r   zAClass for all browsers which are to be started in the
background.c                s   V P                   .V P                   Uu. uF  pVP                  R V4      NK  	  up,           p\        P                  ! RV4       V P                  V4        \        P                  R,          R8X  d   \        P                  ! V4      pM\        P                  ! VRRR7      pVP                  4       RJ # u upi   \         d     R# i ; i)r   rG   rH   rI   T)rJ   start_new_sessionNF)r   r@   rM   rK   rL   r;   rN   rO   rP   pollrR   rS   rW   r   r   ZBackgroundBrowser.open   s    99+,0II!7,5S "%T3!7,5!7 7		#S)	||B5($$W-$$W7;=668t##!7  		s   C(AC CCr   Nr=   r   r   r   r   r?   r   r   rA   rB   rD   r   r   r      s      r   r   c                   sX   a  ] tR t^t o RtRtRtRtRR.tRt	Rt
RtR
R ltRR ltR	tV tR# )UnixBrowserz=Parent class for all Unix browsers with remote functionality.NFT%actionr   c           	     s   . pV'       d<   V P                   '       d*   \        V4      pV P                   V,          pV'       d   V.pV P                  .V,           V,           pV'       g   V P                  '       d   \        P
                  pMR p\        P                  ! TRTV P                  ;'       d    T;'       g    R VRR7      p	V'       d    V	P                  ^4      p
V
'       * # V P                  '       d   V	P                  4       f   R# R# V	P                  4       '       * #   \        P                   d     R# i ; i)NTrJ   stdinstdoutstderrrX   F)
raise_optsZintr   
backgroundrO   DEVNULLrP   redirect_stdoutrQ   ZTimeoutExpiredrY   )r2   r@   Zremoter!   r   Z	raise_optZoptrU   ZinoutrV   rcs   &&&&&      r   _invokeZUnixBrowser._invoke   s    	doooII//),C E	99+	)D0T___&&E EWE%)%9%9%C%Ce%K%Kt$)TC VVAYv ___vvxvvx< ,, s   D& &D?>D?c                s   \         P                  ! R V4       V P                  V4       V^ 8X  d   V P                  pMQV^8X  d   V P                  pM=V^8X  d)   V P
                  f   V P                  pMV P
                  pM\        RV 24      hV P                   Uu. uF%  pVP                  RV4      P                  RV4      NK'  	  ppV Uu. uF  qU'       g   K  VNK  	  ppV P                  VRW14      pV'       g>   V P                   Uu. uF  qUP                  RV4      NK  	  ppV P                  VRR4      # R# u upi u upi u upi )rG   z8Bad 'new' parameter to open(); expected 0, 1, or 2, got r   r\   TF)rK   rL   r;   remote_actionremote_action_newwinremote_action_newtabr    remote_argsrM   rf   r@   )r2   r   r    r!   actionrT   r@   Zsuccesss   &&&&    r   r   ZUnixBrowser.open  s8   		#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=	EEEr   r0   r=   )r   r   r   r   r?   ra   rb   rd   rj   rg   rh   ri   rf   r   r   rA   rB   rD   r   r[   r[      sD     GJJO d#KM" H r   r[   c                   s2    ] tR tRtRtRR.tRtRtRtRt	R	t
R
# )Mozillai/  z$Launcher class for Mozilla browsers.r\   r   r<   z-new-windowz-new-tabTr   Nr   r   r   r   r?   rj   rg   rh   ri   rb   r   r   r   r   rl   rl   /  s%    .d#KM(%Jr   rl   c                   s6    ] tR tRtRtRR.tRR.tRtRtR	t	R
t
R# )Epiphanyi9  z$Launcher class for Epiphany browser.z-noraiser<   r\   r   -nz-wTr   N)r   r   r   r   r?   ra   rj   rg   rh   rb   r   r   r   r   rn   rn   9  s)    .b!Jd#KMJr   rn   c                   2    ] tR tRtRtRR.tRtRtRtRt	Rt
R	# )
ChromeiC  z)Launcher class for Google Chrome browser.r\   r   r<   --new-windowTr   Nrm   r   r   r   rq   rq   C  s%    3d#KM)Jr   rq   c                   rp   )
OperaiP  z!Launcher class for Opera browser.r\   r   r<   rr   Tr   Nrm   r   r   r   rs   rs   P  s%    +d#KM)Jr   rs   c                   s6    ] tR tRtRtRR.tRtRtRtRt	Rt
R	tR
# )ElinksiZ  z#Launcher class for Elinks browsers.z-remotezopenURL(%s%action)r<   z,new-windowz,new-tabFr   N)r   r   r   r   r?   rj   rg   rh   ri   rb   rd   r   r   r   r   rt   rt   Z  s-    -23KM(%J Or   rt   c                   s.   a  ] tR tRt o RtRR ltRtV tR# )	Konquerorih  zController for the KDE File Manager (kfm, or Konqueror).

See the output of ``kfmclient --commands``
for more information on the Konqueror remote-control interface.
c           	     s   \         P                  ! R V4       V P                  V4       V^8X  d   RpMRp\        P                  p \        P
                  ! RWA.RVWUR7      pVP                  4        R#   \         d     Mi ; i \        P
                  ! RRT.RTYURR7      pTP                  4       f   R# M  \         d     Mi ; i \        P
                  ! R
RT.RTYURR7      pTP                  4       R	J #   \         d     R# i ; i)rG   ZnewTabZopenURL	kfmclientT)rJ   r^   r_   r`   	konquerorz--silentr]   Nkfmz-dF)	rK   rL   r;   rO   rc   rP   rQ   rR   rY   )r2   r   r    r!   rk   ZdevnullrV   rW   r   r   ZKonqueror.openo  s#   		#S)!8FF$$
	  +v!;+/w(/AA FFH  			  +z3!?+/w(/379A vvx  	  			$  %s!3+/w(/379A 668t##  		s6   A4 4BBB9 9CCC; ;D
	D
r   Nr=   rZ   rB   rD   r   ru   ru   h  s     ,$ ,$r   ru   c                   rp   )
Edgei  z*Launcher class for Microsoft Edge browser.r\   r   r<   rr   Tr   Nrm   r   r   r   ry   ry     s%    4d#KM)Jr   ry   c                  s   \         P                  ! R 4      '       d   \        R R\        R 4      4       \         P                  ! R4      '       d   \        RR\        . RO4      4       \        P
                  ! RR4      P                  R4      p RV 9   g   R\        P                  9   d3   \         P                  ! R4      '       d   \        RR\        R4      4       R	V 9   g   R
\        P                  9   d7   \         P                  ! R4      '       d   \        R\        \        R4      4       \         P                  ! R4      '       d   \        RR\        R4      4       R F7  p\         P                  ! V4      '       g   K!  \        VR\        V4      4       K9  	  \         P                  ! R4      '       d   \        R\        \        R4      4       M6\         P                  ! R4      '       d   \        R\        \        R4      4       \         P                  ! R4      '       d   \        RR\        R4      4       R F7  p\         P                  ! V4      '       g   K!  \        VR\        V4      4       K9  	  \         P                  ! R4      '       d   \        RR\        R4      4       \         P                  ! R4      '       d   \        RR\        R4      4       R# R# )zxdg-openNgioZXDG_CURRENT_DESKTOPr<   :ZGNOMEZGNOME_DESKTOP_SESSION_IDz	gvfs-openZKDEZKDE_FULL_SESSIONrv   zx-www-browserrx   rw   Zepiphanyoperamicrosoft-edge)rz   r   z--r   )firefoxZ	iceweasel	seamonkeyzmozilla-firefoxmozilla)zgoogle-chromechromeZchromiumzchromium-browser)r(   r)   r   r   r*   Zgetenvr   environru   rl   rn   rq   rs   ry   )Z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                  s
  a . s \        P                  R 8X  dY   \        RR\	        R4      4       \        RR\	        R4      4       \        RR\	        R4      4       \        RR\	        R4      4       \        P                  R8X  d   \        R	R\        4       R
R7       \        P                  R8X  d   \        RR\        R4      4       \        P                  R,          R8X  Ed   \        R\        4       \        P                  P                  \        P                  P                  RR4      R4      p \        P                  P                  \        P                  P                  RR4      R4      pRRRRRW3 F7  p\        P                  ! V4      '       g   K!  \        VR\        V4      4       K9  	  \        P                  ! R4      '       d   \        RR\        R4      4       EM\        P                  R 8w  d   \        P                  P                  R4      '       g&   \        P                  P                  R4      '       db    RP!                  4       p\"        P$                  ! V\"        P&                  R7      pVP)                  4       P+                  4       pVs\7        4        \        P                  P                  R4      '       d   \        P                  ! R 4      '       d   \        R R\9        R 4      4       \        P                  ! R!4      '       d   \        R!R\9        R!4      4       \        P                  ! R"4      '       d   \        R"R\;        R"4      4       \        P                  ! R#4      '       d   \        R#R\9        R#4      4       \        P                  ! R$4      '       d   \        R$R\9        R$4      4       R%\        P                  9   Ed+   \        P                  R%,          P!                  \        P<                  4      pVP?                  4        V F  o\@        ;QJ d    V3R& lR' 4       F  '       d   K   R(M	  R
M! V3R& lR' 4       4      '       da    \B        SPE                  4       ,          p\G        V^,          \8        4      '       g'   \         PI                  ^ SPE                  4       4       K   SR)8w  g   K  \M        SR
R7      pV^,          e   K  \        SR\9        S4      R
R7       K  	  R# R#   \.        \"        P0                  \2        \4        3 d     ELi ; i  \J         d     L|i ; i)*darwinZMacOSXNdefaultr   zgoogle chromer~   ZsafariiosZ
iosbrowserT)r	   Z
serenityosZBrowserrH   rI   zwindows-defaultzPROGRAMFILES(x86)zC:\Program Files (x86)z%Microsoft\Edge\Application\msedge.exeZPROGRAMFILESzC:\Program Filesr   r   r|   zMicrosoftEdge.exer}   ZDISPLAYZWAYLAND_DISPLAYz$xdg-settings get default-web-browser)r`   ZTERMzwww-browserZlinksZelinksZlynxZw3mZBROWSERc              3   s,   <"   T F	  qS9  x  K  	  R # 5ir0   r   )Z.0ZxrU   s   & r   Z	<genexpr>Z-register_standard_browsers.<locals>.<genexpr><  s     3UG#Us   z 	Fr<   )'r   rK   rN   r   MacOSXOSAScript
IOSBrowserr   WindowsDefaultr*   r+   Zjoinr   r   r(   r)   ry   r   rO   Zcheck_outputrc   ZdecodeZstripr   ZFileNotFoundErrorZCalledProcessErrorZPermissionErrorZNotADirectoryErrorr   r   rt   ZpathsepZreverseZallr   r   rE   r   r   r   )	Zedge64Zedge32r   r.   Z
raw_resultZresultZuserchoicesr   rU   s	           @r   r   r     s   I
||x4!;<4!ABD/)"<=4!:; ||utZ\TB
|||#D"3I">?
||B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s3U3sss3U333!'8G
 &gaj.AA!((GMMO<  B "}!'T:q6>WdN7,CtT# # 9 &z'D'D#%79 P   s%   AT	 'T5	%T21T25UUrH   rI   c                   *   a  ] tR tRt o RR ltRtV tR# )r   iV  c                s    \         P                  ! R V4       V P                  V4        \        P                  ! V4       R#   \
         d     R# i ; i)rG   TF)rK   rL   r;   r*   Z	startfilerR   r5   r6   r   r   ZWindowsDefault.openW  sI    II'-OOC S!    s   A AAr   Nr=   r   r   r   r   r   r   rA   rB   rD   r   r   r   V  s     
	 
	r   r   r   c                   s@   a a ] tR tRt oRV 3R lltRR ltRtVtV ;t# )r   ih  c                s&   < \         SV `  V4       R # r0   )Zsuperr4   )r2   r   	__class__s   &&r   r4   ZMacOSXOSAScript.__init__i  s    GT"r   c                s   \         P                  ! R V4       V P                  V4       VP                  RR4      pV P                  R8X  d@   VP                  R4      w  rEpV'       d   VP                  4       R9   d   RV R2pMRV R2pMRV P                   R	V R
2p\        P                  ! RR4      pVf   R# VP                  V4       VP                  4       p	V	'       * # )rG   Z"z%22r   r{   zopen location "u2  
                        use framework "AppKit"
                        use AppleScript version "2.4"
                        use scripting additions

                        property NSWorkspace : a reference to current application's NSWorkspace
                        property NSURL : a reference to current application's NSURL

                        set http_url to NSURL's URLWithString:"https://python.org"
                        set browser_url to (NSWorkspace's sharedWorkspace)'s ¬
                            URLForApplicationToOpenURL:http_url
                        set app_path to browser_url's relativePath as text -- NSURL to absolute path '/Applications/Safari.app'

                        tell application app_path
                            activate
                            open location "z7"
                        end tell
                    z&
                   tell application "zH"
                       activate
                       open location "z,"
                   end
                   Z	osascriptZwF>   ZhttpZhttps)rK   rL   r;   rM   r   Z	partitionr   r*   ZpopenZwriteZclose)
r2   r   r    r!   ZprotoZ_sepZ_restZscriptZosapipere   s
   &&&&      r   r   ZMacOSXOSAScript.openl  s    II'-OOC ++c5)CyyI%%(]]3%7"UEKKM->>.se15F
", -05 1F&&&*ii[ 1''*e , hh{C0GMM&!B6Mr   r   )r   r=   )	r   r   r   r   r4   r   r   rA   Z__classcell__)r   rC   s   @@r   r   r   h  s     	#-	 -	r   r   r   )objc)c_void_pc_char_pc_ulongc                   r   )r   i  c                s
   \         P                  ! R V4       V P                  V4       \        f   R# \        \        P
                  n        \        P                  ! R4      p\        P                  ! R4      p\        \        \        \        .\        P
                  n        \        P
                  ! VVVP                  R4      ^4      p\        P                  ! R4      p\        P                  ! R4      p\        \        \        .\        P
                  n        \        P
                  ! WxV4      p	\        P                  ! R4      p
\        P                  ! R	4      p\        \        .\        P
                  n        \        P
                  ! W4      p\        P                  ! R
4      p\        \        \        \        \        .\        P
                  n        R\        P
                  n        \        P
                  ! WV	RR4       R# )rG   NFs   NSStrings   stringWithCString:encoding:zutf-8s   NSURLs   URLWithString:s   UIApplications   sharedApplications"   openURL:options:completionHandler:T)rK   rL   r;   r   r   Zobjc_msgSendZrestypeZobjc_getClassZsel_registerNamer   r   ZargtypesZencode)r2   r   r    r!   ZNSStringZconstructorZ
url_stringZNSURLZurlWithString_Zns_urlZUIApplicationZsharedApplicationZ
shared_appZopenURL_s   &&&&          r   r   ZIOSBrowser.open  s{   II'-OOC | )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   Nr=   r   rB   rD   r   r   r     s     5	 5	r   r   c                H    V ^8  d   QhR\         \        ,          R,          /# r:   arg_listNZlistrF   Zformat   "r   __annotate__r     s      cT) r   c           
      s    ^ RI pVP                  RRR7      pVP                  RRR7       VP                  4       pVP                  RR	R
^^ RRR7       VP                  RRR
^^ RRR7       VP	                  V 4      pV# )r>   NzOpen URL in a web browser.T)ZdescriptionZcolorr   zURL to open)helpro   rr   Zstore_constnew_winzopen new window)rk   Zconstr   Zdestr   z-tz	--new-tabzopen new tab)argparseZArgumentParserZadd_argumentZadd_mutually_exclusive_group
parse_args)r   r   ZparserZgroupr@   s   &    r   r   r     s    $$0 % F M2//1E	t^M	-  / 
t[	*  , X&DKr   c                r   r   r   r   r   r   r   r     s      49t# r   c                 sr    \        V 4      p\        VP                  VP                  4       \	        R 4       R# )ZN)r   r   r   r   Zprint)r   r@   s   & r   mainr     s%    hD4<< 	$Kr   Z__main__)r    r   r%   r'   r   r   r0   r=   )0r?   r*   r   r(   rK   rO   Z	threadingZ__all__Z	Exceptionr    ZRLockr
   r   r   r   r   r   r   r%   r'   r   r/   r   r   r[   rl   rn   rq   ZChromiumrs   rt   ru   ry   r   r   rN   r   r   Z_ios_supportr   Zctypesr   r   r   r   r   r   r   r   r   r   <module>r      s   E 
   
  
J	I 	 			 #e # 5F.e D4 42[ : (N+ Nbk { [  K [ 3$ 3$l; "7AtcUX <<u " <<81+ 1l <<5!666[ 6r( zF r   