
    ]jo                    T   d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZmZmZ  G d d      Z G d	 d
      Z G d d      Z G d d      Ze G d d             Ze G d d             Ze G d d             Ze G d d             Ze G d d             Ze G d d             Ze G d d             Ze G d d             Ze G d d              Ze G d! d"             Ze G d# d$             Ze G d% d&             Ze G d' d(             Ze G d) d*             Z e G d+ d,             Z!e G d- d.             Z"e G d/ d0             Z#e G d1 d2             Z$e G d3 d4             Z%e G d5 d6             Z&e G d7 d8             Z'e G d9 d:             Z(e G d; d<             Z)e G d= d>             Z*e G d? d@             Z+e G dA dB             Z,e G dC dD             Z-e G dE dF             Z.e G dG dH             Z/e G dI dJ             Z0e G dK dL             Z1e G dM dN             Z2e G dO dP             Z3e G dQ dR             Z4e G dS dT             Z5e G dU dV             Z6e6Z7 G dW dX      Z8 G dY dZ      Z9d[d\d]d^d_d[d\d`Z: G da db      Z; e<       j{                  dLe>      Z? e<       j{                  dNe>      Z@ e<       j{                  dPe>      ZA e<       j{                  dRe>      ZB e<       j{                  dTe>      ZC e<       ZD edcd[eDj{                  dd      reDj{                  dde>      ne>       eded\eDj{                  df      reDj{                  dfe>      ne>       edgd]eDj{                  dh      reDj{                  dhe>      ne>       edid^eDj{                  dj      reDj{                  dje>      ne>       edkd_eDj{                  dl      reDj{                  dle>      ne>       edcd[eDj{                  dme>             ednd\eDj{                  dme>            d`e;_E        yo)p    )annotations)Callable)	dataclassfield)Anycommand_builder)EventConfig_EventWrapper_EventManagerc                       e Zd ZdZdZdZdZdZy)SameSitez	SameSite.strictlaxnonedefaultN)__name__
__module____qualname____doc__STRICTLAXNONEDEFAULT     Z/home/ubuntu/.local/lib/python3.12/site-packages/selenium/webdriver/common/bidi/network.pyr   r      s    F
CDGr   r   c                      e Zd ZdZdZdZy)DataTypez	DataType.requestresponseN)r   r   r   r   REQUESTRESPONSEr   r   r   r   r      s    GHr   r   c                      e Zd ZdZdZdZdZy)InterceptPhasezInterceptPhase.beforeRequestSentresponseStartedauthRequiredN)r   r   r   r   BEFOREREQUESTSENTRESPONSESTARTEDAUTHREQUIREDr   r   r   r%   r%       s    +'O!Lr   r%   c                      e Zd ZdZdZdZy)ContinueWithAuthNoCredentialszContinueWithAuthNoCredentials.r   cancelN)r   r   r   r   r   CANCELr   r   r   r-   r-   (   s    (GFr   r-   c                  .    e Zd ZU dZdZded<   dZded<   y)AuthChallengezAuthChallenge.N
str | Noneschemerealm)r   r   r   r   r3   __annotations__r4   r   r   r   r1   r1   /   s    FJE:r   r1   c                  L    e Zd ZU dZ edd      Zded<   dZded	<   dZded<   y)
AuthCredentialszAuthCredentials.passwordFr   initstrtypeNr2   username)	r   r   r   r   r   r<   r5   r=   r8   r   r   r   r7   r7   7   s*    ju5D#5HjHjr   r7   c                      e Zd ZU dZdZded<   dZded<   dZded<   dZded<   dZ	ded	<   dZ
ded
<   dZded<    ee      Zded<   y)BaseParameterszBaseParameters.N
Any | Nonecontextbool | None
is_blocked
navigationredirect_countr    	timestampuser_contextdefault_factory	list[Any]
intercepts)r   r   r   r   rA   r5   rC   rD   rE   r    rF   rG   r   listrK   r   r   r   r?   r?   @   sZ    GZ"J"!J
!!%NJ%GZ Iz #L*#!$7J	7r   r?   c                  >    e Zd ZU dZ edd      Zded<   dZded	<   y)
StringValuezStringValue.stringFr9   r;   r<   Nr2   valuer   r   r   r   r   r<   r5   rP   r   r   r   rN   rN   N        hU3D#3E:r   rN   c                  >    e Zd ZU dZ edd      Zded<   dZded	<   y)
Base64ValuezBase64Value.base64Fr9   r;   r<   Nr2   rP   rQ   r   r   r   rT   rT   V   rR   r   rT   c                      e Zd ZU dZdZded<   dZded<   dZded<   dZded<   dZ	ded	<   dZ
d
ed<   dZd
ed<   dZded<   dZded<   y)CookiezCookie.Nr2   namer@   rP   domainpathsizerB   	http_onlysecure	same_siteexpiry)r   r   r   r   rX   r5   rP   rY   rZ   r[   r\   r]   r^   r_   r   r   r   rW   rW   ^   s_    D*E:FJD*D*!I{!FK Iz FJr   rW   c                  .    e Zd ZU dZdZded<   dZded<   y)CookieHeaderzCookieHeader.Nr2   rX   r@   rP   r   r   r   r   rX   r5   rP   r   r   r   ra   ra   m   s    D*E:r   ra   c                      e Zd ZU dZdZded<   dZded<   dZded<   dZded<   dZ	ded<   dZ
ded	<   dZded
<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   y)FetchTimingInfozFetchTimingInfo.Nr@   time_originrequest_timeredirect_startredirect_endfetch_start	dns_startdns_endconnect_startconnect_end	tls_startrequest_startresponse_startresponse_end)r   r   r   r   re   r5   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   r   r   r   rd   rd   u   s    "K"#L*#!%NJ%#L*#"K" Iz GZ $M:$"K" Iz  $M:$!%NJ%#L*#r   rd   c                  .    e Zd ZU dZdZded<   dZded<   y)HeaderzHeader.Nr2   rX   r@   rP   rb   r   r   r   rs   rs      s    D*E:r   rs   c                  X    e Zd ZU dZdZded<   dZded<   dZded<   dZded<   dZ	ded<   y)		Initiatorz
Initiator.Nr@   column_numberline_numberr    stack_tracer<   )
r   r   r   r   rv   r5   rw   r    rx   r<   r   r   r   ru   ru      s7     $M:$"K"GZ"K"D*r   ru   c                       e Zd ZU dZdZded<   y)ResponseContentzResponseContent.Nr@   r[   )r   r   r   r   r[   r5   r   r   r   rz   rz      s    D*r   rz   c                      e Zd ZU dZdZded<   dZded<   dZded<   dZded<   dZ	d	ed
<    e
e      Zded<   dZded<   dZded<   dZded<   dZded<   dZded<    e
e      Zded<   y)ResponseDatazResponseData.Nr2   urlprotocolr@   statusstatus_textrB   
from_cacherH   rJ   headers	mime_typebytes_receivedheaders_size	body_sizecontentauth_challenges)r   r   r   r   r}   r5   r~   r   r   r   r   rL   r   r   r   r   r   r   r   r   r   r   r|   r|      s    CHjFJ"K""J"t4GY4 Iz !%NJ%#L*# Iz GZ!&t!<OY<r   r|   c                      e Zd ZU dZdZded<   dZded<   dZded<   dZded	<   dZ	ded
<   dZ
ded<   dZded<   dZded<   dZded<   y)SetCookieHeaderzSetCookieHeader.Nr2   rX   r@   rP   rY   rB   r\   r_   max_agerZ   r^   r]   )r   r   r   r   rX   r5   rP   rY   r\   r_   r   rZ   r^   r]   r   r   r   r   r      s_    D*E:FJ!I{!FJGZD* Iz FKr   r   c                  v    e Zd ZU dZ edd      Zded<   dZded	<   dZded
<   dZ	ded<   dZ
ded<   dZded<   y)UrlPatternPatternzUrlPatternPattern.patternFr9   r;   r<   Nr2   r~   hostnameportpathnamesearch)r   r   r   r   r   r<   r5   r~   r   r   r   r   r   r   r   r   r      sH    ie4D#4HjHjD*HjFJr   r   c                  >    e Zd ZU dZ edd      Zded<   dZded	<   y)
UrlPatternStringzUrlPatternString.rO   Fr9   r;   r<   Nr2   r   )r   r   r   r   r   r<   r5   r   r   r   r   r   r      s     hU3D#3GZr   r   c                      e Zd ZU dZ ee      Zded<   dZded<   dZ	ded<    ee      Z
ded	<    ee      Zded
<   y)AddDataCollectorParameterszAddDataCollectorParameters.rH   rJ   
data_typesNr@   max_encoded_data_sizecollector_typecontextsuser_contexts)r   r   r   r   r   rL   r   r5   r   r   r   r   r   r   r   r   r      sG    %!$7J	7(,:,!%NJ%5Hi5$T:M9:r   r   c                       e Zd ZU dZdZded<   y)AddDataCollectorResultzAddDataCollectorResult.Nr@   	collectorr   r   r   r   r   r5   r   r   r   r   r      s    ! Iz r   r   c                  f    e Zd ZU dZ ee      Zded<    ee      Zded<    ee      Z	ded<   y)AddInterceptParameterszAddInterceptParameters.rH   rJ   phasesr   url_patternsN)
r   r   r   r   r   rL   r   r5   r   r   r   r   r   r   r      s2    !d3FI35Hi5#D9L)9r   r   c                       e Zd ZU dZdZded<   y)AddInterceptResultzAddInterceptResult.Nr@   	interceptr   r   r   r   r   r5   r   r   r   r   r      s     Iz r   r   c                      e Zd ZU dZdZded<    ee      Zded<   dZ	ded<    ee      Z
ded	<   dZd
ed<   dZded<   y)ContinueResponseParameterszContinueResponseParameters.Nr@   r    rH   rJ   cookiescredentialsr   r2   reason_phrasestatus_code)r   r   r   r   r    r5   r   rL   r   r   r   r   r   r   r   r   r   r      sK    %GZt4GY4"K"t4GY4 $M:$"K"r   r   c                       e Zd ZU dZdZded<   y)ContinueWithAuthParameterszContinueWithAuthParameters.Nr@   r    r   r   r   r   r    r5   r   r   r   r   r     s    %GZr   r   c                  >    e Zd ZU dZ edd      Zded<   dZded	<   y)
ContinueWithAuthCredentialszContinueWithAuthCredentials.provideCredentialsFr9   r;   actionNr@   r   )r   r   r   r   r   r   r5   r   r   r   r   r   r     s!    & 45AFCA"K"r   r   c                       e Zd ZU dZdZded<   y)FailRequestParameterszFailRequestParameters.Nr@   r    r   r   r   r   r   r     s     GZr   r   c                  J    e Zd ZU dZdZded<   dZded<   dZded<   dZded<   y)	GetDataParameterszGetDataParameters.Nr@   	data_typer   rB   disownr    )	r   r   r   r   r   r5   r   r   r    r   r   r   r   r     s-     Iz  Iz FKGZr   r   c                       e Zd ZU dZdZded<   y)GetDataResultzGetDataResult.Nr@   bytes)r   r   r   r   r   r5   r   r   r   r   r   %  s    E:r   r   c                      e Zd ZU dZdZded<   dZded<    ee      Z	ded<    ee      Z
ded	<   dZd
ed<   dZded<   y)ProvideResponseParameterszProvideResponseParameters.Nr@   r    bodyrH   rJ   r   r   r2   r   r   )r   r   r   r   r    r5   r   r   rL   r   r   r   r   r   r   r   r   r   ,  sK    $GZD*t4GY4t4GY4 $M:$"K"r   r   c                       e Zd ZU dZdZded<   y)RemoveDataCollectorParameterszRemoveDataCollectorParameters.Nr@   r   r   r   r   r   r   r   8  s    ( Iz r   r   c                       e Zd ZU dZdZded<   y)RemoveInterceptParameterszRemoveInterceptParameters.Nr@   r   r   r   r   r   r   r   ?  s    $ Iz r   r   c                  <    e Zd ZU dZdZded<    ee      Zded<   y)SetCacheBehaviorParameterszSetCacheBehaviorParameters.Nr@   cache_behaviorrH   rJ   r   )	r   r   r   r   r   r5   r   rL   r   r   r   r   r   r   F  s    %!%NJ%5Hi5r   r   c                  f    e Zd ZU dZ ee      Zded<    ee      Zded<    ee      Z	ded<   y)SetExtraHeadersParameterszSetExtraHeadersParameters.rH   rJ   r   r   r   N)
r   r   r   r   r   rL   r   r5   r   r   r   r   r   r   r   N  s2    $t4GY45Hi5$T:M9:r   r   c                       e Zd ZU dZdZded<   y)AuthRequiredParameterszAuthRequiredParameters.Nr@   r!   r   r   r   r   r!   r5   r   r   r   r   r   W  s    !Hjr   r   c                       e Zd ZU dZdZded<   y)BeforeRequestSentParameterszBeforeRequestSentParameters.Nr@   	initiator)r   r   r   r   r   r5   r   r   r   r   r   ^  s    & Iz r   r   c                       e Zd ZU dZdZded<   y)FetchErrorParameterszFetchErrorParameters.Nr2   
error_text)r   r   r   r   r   r5   r   r   r   r   r   e  s    !J
!r   r   c                       e Zd ZU dZdZded<   y)ResponseCompletedParameterszResponseCompletedParameters.Nr@   r!   r   r   r   r   r   r   l  s    &Hjr   r   c                       e Zd ZU dZdZded<   y)ResponseStartedParameterszResponseStartedParameters.Nr@   r!   r   r   r   r   r   r   s  s    $Hjr   r   c                  <    e Zd ZU dZdZded<   dZded<   dZded<   y)DisownDataParameterszDisownDataParameters.Nr@   r   r   r    )r   r   r   r   r   r5   r   r    r   r   r   r   r   z  s#     Iz  Iz GZr   r   c                  (    e Zd ZdZdZdZddZddZy)	
BytesValuezA string or base64-encoded bytes value used in cookie operations.

    This corresponds to network.BytesValue in the WebDriver BiDi specification,
    wrapping either a plain string or a base64-encoded binary value.
    rO   rU   c                     || _         || _        y Nr<   rP   )selfr<   rP   s      r   __init__zBytesValue.__init__  s    	
r   c                4    | j                   | j                  dS )Nr   r   r   s    r   to_bidi_dictzBytesValue.to_bidi_dict  s    		DJJ77r   N)r<   r@   rP   r@   returnNone)r   dict)r   r   r   r   TYPE_STRINGTYPE_BASE64r   r   r   r   r   r   r     s     KK8r   r   c                      e Zd ZdZd Zd Zy)RequestzNWraps a BiDi network request event params and provides request action methods.c                    || _         t        |t              r|ni | _        | j                  j	                  di       xs i }|j	                  dd      | _        |j	                  d      | _        y )Nr    r}    )_conn
isinstancer   _paramsgetr}   _request_id)r   connparamsreqs       r   r   zRequest.__init__  sY    
!+FD!9vrlly"-3775"%779-r   c                    ddl m} d| j                  i}|j                  |       | j                  j                   |d|             y)z!Continue the intercepted request.r   r   r    network.continueRequestN)%selenium.webdriver.common.bidi.commonr	   r   updater   execute)r   kwargs_cbr   s       r   continue_requestzRequest.continue_request  s;    PT--.f

38&ABr   N)r   r   r   r   r   r   r   r   r   r   r     s    X.Cr   r   znetwork.authRequiredznetwork.beforeRequestSentznetwork.fetchErrorznetwork.responseCompletedznetwork.responseStarted)auth_requiredbefore_request_sentfetch_errorresponse_completedresponse_startedr   before_requestc                     e Zd ZU dZi Zded<   ddZ	 	 	 	 	 d	 	 	 	 	 	 	 	 	 d dZ	 	 	 d!	 	 	 	 	 d"dZ	 	 	 	 	 	 d#	 	 	 	 	 	 	 	 	 	 	 d$dZ		 	 	 	 	 	 d#	 	 	 	 	 	 	 	 	 	 	 d%d	Z
d&d'd
Zd!d(dZd&d'dZ	 	 	 	 d)	 	 	 	 	 	 	 d*dZ	 	 	 	 	 	 d#	 	 	 	 	 	 	 	 	 	 	 d+dZd&d,dZd&d-dZd.d/dZ	 	 	 d!	 	 	 	 	 d0dZd.dZd Zd Zd&dZd Zd Zd Zd Zd&d1dZd2dZddZy)3NetworkzWebDriver BiDi network module.zdict[str, EventConfig]EVENT_CONFIGSc                d    || _         t        || j                        | _        g | _        i | _        y r   )r   r   r  _event_managerrK   _handler_intercepts)r   r   s     r   r   zNetwork.__init__  s-    
+D$2D2DE%'35 r   Nc                    |t        d      |t        d      |||||d}|j                         D ci c]  \  }}|	|| }}}t        d|      }	| j                  j	                  |	      }
|
S c c}}w )z Execute network.addDataCollectorz<add_data_collector() missing required argument: 'data_types'zGadd_data_collector() missing required argument: 'max_encoded_data_size')	dataTypesmaxEncodedDataSizecollectorTyper   userContextsznetwork.addDataCollector	TypeErroritemsr	   r   r   )r   r   r   r   r   r   r   kvcmdresults              r   add_data_collectorzNetwork.add_data_collector  s     Z[[ (eff $"7+ )
 $*<<>C41aQ]!Q$CC8&A##C( Ds   
A2A2c                    |t        d      |||d}|j                         D ci c]  \  }}|	|| }}}t        d|      }| j                  j	                  |      }|S c c}}w )zExecute network.addInterceptz3add_intercept() missing required argument: 'phases')r   r   urlPatternsnetwork.addInterceptr  )	r   r   r   r   r   r  r  r  r  s	            r   add_interceptzNetwork.add_intercept  sz     >QRR  '

 $*<<>C41aQ]!Q$CC4f=##C( D
   
A#A#c                    |t        d      ||||||d}|j                         D 	ci c]  \  }}	|		||	 }}}	t        d|      }
| j                  j	                  |
      }|S c c}	}w )zExecute network.continueRequestz7continue_request() missing required argument: 'request')r    r   r   r   methodr}   r   r  )r   r    r   r   r   r  r}   r   r  r  r  r  s               r   r   zNetwork.continue_request  s     ?UVV 
 $*<<>C41aQ]!Q$CC7@##C( D
   
A&A&c                    |t        d      ||||||d}|j                         D 	ci c]  \  }}	|		||	 }}}	t        d|      }
| j                  j	                  |
      }|S c c}	}w )z Execute network.continueResponsez8continue_response() missing required argument: 'request')r    r   r   r   reasonPhrase
statusCodeznetwork.continueResponser  )r   r    r   r   r   r   r   r   r  r  r  r  s               r   continue_responsezNetwork.continue_response  s     ?VWW &)%
 $*<<>C41aQ]!Q$CC8&A##C( Dr  c                    |t        d      d|i}|j                         D ci c]  \  }}|	|| }}}t        d|      }| j                  j	                  |      }|S c c}}w )z Execute network.continueWithAuthz9continue_with_auth() missing required argument: 'request'r    network.continueWithAuthr  r   r    r   r  r  r  r  s          r   continue_with_authzNetwork.continue_with_auth   st    ?WXX w
 $*<<>C41aQ]!Q$CC8&A##C( D
   
A!A!c                   |t        d      |t        d      |t        d      |||d}|j                         D ci c]  \  }}|	|| }}}t        d|      }| j                  j	                  |      }|S c c}}w )zExecute network.disownDataz4disown_data() missing required argument: 'data_type'z4disown_data() missing required argument: 'collector'z2disown_data() missing required argument: 'request')dataTyper   r    znetwork.disownDatar  )	r   r   r   r    r   r  r  r  r  s	            r   disown_datazNetwork.disown_data-  s    RSSRSS?PQQ ""

 $*<<>C41aQ]!Q$CC2F;##C( Ds   
A=A=c                    |t        d      d|i}|j                         D ci c]  \  }}|	|| }}}t        d|      }| j                  j	                  |      }|S c c}}w )zExecute network.failRequestz3fail_request() missing required argument: 'request'r    znetwork.failRequestr  r#  s          r   fail_requestzNetwork.fail_request@  st    ?QRR w
 $*<<>C41aQ]!Q$CC3V<##C( Dr%  c                    |t        d      |t        d      ||||d}|j                         D ci c]  \  }}|	|| }}}t        d|      }| j                  j	                  |      }	|	S c c}}w )zExecute network.getDataz1get_data() missing required argument: 'data_type'z/get_data() missing required argument: 'request')r'  r   r   r    znetwork.getDatar  )
r   r   r   r   r    r   r  r  r  r  s
             r   get_datazNetwork.get_dataM  s     OPP?MNN ""	
 $*<<>C41aQ]!Q$CC/8##C( Ds   
A1 A1c                    |t        d      ||||||d}|j                         D 	ci c]  \  }}	|		||	 }}}	t        d|      }
| j                  j	                  |
      }|S c c}	}w )zExecute network.provideResponsez7provide_response() missing required argument: 'request')r    r   r   r   r  r  znetwork.provideResponser  )r   r    r   r   r   r   r   r   r  r  r  r  s               r   provide_responsezNetwork.provide_responsee  s     ?UVV )%
 $*<<>C41aQ]!Q$CC7@##C( Dr  c                    |t        d      d|i}|j                         D ci c]  \  }}|	|| }}}t        d|      }| j                  j	                  |      }|S c c}}w )z#Execute network.removeDataCollectorz>remove_data_collector() missing required argument: 'collector'r   znetwork.removeDataCollectorr  )r   r   r   r  r  r  r  s          r   remove_data_collectorzNetwork.remove_data_collector  su    \]] 
 $*<<>C41aQ]!Q$CC;VD##C( Dr%  c                    |t        d      d|i}|j                         D ci c]  \  }}|	|| }}}t        d|      }| j                  j	                  |      }|S c c}}w )zExecute network.removeInterceptz9remove_intercept() missing required argument: 'intercept'r   network.removeInterceptr  )r   r   r   r  r  r  r  s          r   remove_interceptzNetwork.remove_intercept  su    WXX 
 $*<<>C41aQ]!Q$CC7@##C( Dr%  c                    |t        d      ||d}|j                         D ci c]  \  }}|	|| }}}t        d|      }| j                  j	                  |      }|S c c}}w )z Execute network.setCacheBehaviorz@set_cache_behavior() missing required argument: 'cache_behavior')cacheBehaviorr   znetwork.setCacheBehaviorr  )r   r   r   r   r  r  r  r  s           r   set_cache_behaviorzNetwork.set_cache_behavior  sv    !^__ , 
 $*<<>C41aQ]!Q$CC8&A##C( Ds
   
A"A"c                    |t        d      |||d}|j                         D ci c]  \  }}|	|| }}}t        d|      }| j                  j	                  |      }|S c c}}w )zExecute network.setExtraHeadersz8set_extra_headers() missing required argument: 'headers')r   r   r  znetwork.setExtraHeadersr  )	r   r   r   r   r   r  r  r  r  s	            r   set_extra_headerszNetwork.set_extra_headers  sz     ?VWW  )

 $*<<>C41aQ]!Q$CC7@##C( Dr  c                    ddl m} |dg}d|i}|r||d<   | j                  j                   |d|            }|r<|j	                  d      }|r)|| j
                  vr| j
                  j                  |       |S )a  Add a low-level network intercept.

        Args:
            phases: list of intercept phases (default: ["beforeRequestSent"])
            url_patterns: optional URL patterns to filter

        Returns:
            dict with "intercept" key containing the intercept ID
        r   r   r&   r   r  r  r   )r   r	   r   r   r   rK   append)r   r   r   r   r   r  intercept_ids          r   _add_interceptzNetwork._add_intercept  s~     	Q>)*FF#$0F=!##C(>$GH!::k2LDOO C&&|4r   c                    ddl m} | j                  j                   |dd|i             || j                  v r| j                  j                  |       yy)z%Remove a low-level network intercept.r   r   r2  r   N)r   r	   r   r   rK   remove)r   r;  r   s      r   _remove_interceptzNetwork._remove_intercept  sG    P

38;:UVW4??*OO""<0 +r   c                    dddd}|j                  |      }|+dj                  t        |            }t        d| d|       |S )z;Map public request-handler aliases to supported event keys.r   r  )r   r  r   z, z#Unsupported request handler event 'z'. Available events: )r   joinsorted
ValueError)r   eventevent_aliasescanonical_eventavailable_eventss        r    _canonical_request_handler_eventz(Network._canonical_request_handler_event  sh     -.#3

 (++E2"#yy)>?5eW<QRbQcd  r   c                      j                  |      }ddd}||   } j                  |g|      }|r|j                  d      nd} fd}	 j                  ||	      }
|r| j                  |
<   |
S )a  Add a handler for network requests at the specified phase.

        Args:
            event: Event name, e.g. ``"before_request"`` or ``"before_request_sent"``.
            callback: Callable receiving a :class:`Request` instance.
            url_patterns: optional list of URL pattern dicts to filter.

        Returns:
            callback_id int for later removal via remove_request_handler.
        r&   r(   )r  r   )r   r   r   Nc                    t        | t              r| nt        | d      r| j                  ni }t	        j
                  |      } |       y )N__dict__)r   r   hasattrrK  r   r   )r   rawr    callbackr   s      r   _request_callbackz6Network.add_request_handler.<locals>._request_callback  sE     fd+ )0)Dfoo" 
 djj#.GWr   )rH  r<  r   add_event_handlerr  )r   rD  rN  r   rF  	phase_mapphaseintercept_resultr;  rO  callback_ids   ` `        r   add_request_handlerzNetwork.add_request_handler  s     ??F1+
	 /*..ugL.Y<L'++K8RV	 ,,_>OP4@D$$[1r   c                    | j                  |      }| j                  ||       | j                  j                  |d      }|r| j	                  |       yy)zRemove a network request handler and its associated network intercept.

        Args:
            event: The event name used when adding the handler.
            callback_id: The int returned by add_request_handler.
        N)rH  remove_event_handlerr  popr?  )r   rD  rT  rF  r;  s        r   remove_request_handlerzNetwork.remove_request_handler  sR     ??F!!/;?//33KF""<0 r   c                z    | j                          t        | j                        D ]  }| j                  |        y)z=Clear all request handlers and remove all tracked intercepts.N)clear_event_handlersrL   rK   r?  )r   r;  s     r   clear_request_handlerszNetwork.clear_request_handlers  s4    !!# 1 	1L""<0	1r   c                     ddl m  j                  dg      }|r|j                  d      nd} fd} j	                  d|      }|r| j
                  |<   |S )	a'  Add an auth handler that automatically provides credentials.

        Args:
            username: The username for basic authentication.
            password: The password for basic authentication.

        Returns:
            callback_id int for later removal via remove_auth_handler.
        r   r   r(   )r   r   Nc                   t        | t              r| nt        | d      r| j                  ni }t        |t              r!|j	                  di       j	                  d      nd }|r+j
                  j                   d|dddd             y y )NrK  r    r"  r   r8   )r<   r=   r8   )r    r   r   )r   r   rL  rK  r   r   r   )r   rM  
request_idr   r8   r   r=   s      r   _auth_callbackz0Network.add_auth_handler.<locals>._auth_callback)  s     fd+ )0)Dfoo"  c4( 	2&**95 
 

""2'1&:(2,4,4, r   r   )r   r	   r<  r   rP  r  )r   r=   r8   rS  r;  r`  rT  r   s   ```    @r   add_auth_handlerzNetwork.add_auth_handler  sj     	Q  ..~6F.G<L'++K8RV	6 ,,_nM4@D$$[1r   c                    | j                  d|       | j                  j                  |d      }|r| j                  |       yy)zRemove an auth handler by callback ID and its associated network intercept.

        Args:
            callback_id: The handler ID returned by add_auth_handler.
        r   N)rW  r  rX  r?  )r   rT  r;  s      r   remove_auth_handlerzNetwork.remove_auth_handlerH  sB     	!!/;?//33KF""<0 r   c                <    | j                   j                  |||      S )a  Add an event handler.

        Args:
            event: The event to subscribe to.
            callback: The callback function to execute on event.
            contexts: The context IDs to subscribe to (optional).

        Returns:
            The callback ID.
        )r  rP  )r   rD  rN  r   s       r   rP  zNetwork.add_event_handlerS  s     ""44UHhOOr   c                :    | j                   j                  ||      S )zRemove an event handler.

        Args:
            event: The event to unsubscribe from.
            callback_id: The callback ID.
        )r  rW  )r   rD  rT  s      r   rW  zNetwork.remove_event_handler`  s     ""77{KKr   c                6    | j                   j                         S )zClear all event handlers.)r  r[  r   s    r   r[  zNetwork.clear_event_handlersi  s    ""7799r   )r   r   )NNNNN)
r   list[Any] | Noner   r@   r   r@   r   rg  r   rg  )NNN)r   rg  r   rg  r   rg  )NNNNNN)r    r@   r   r@   r   rg  r   rg  r  r@   r}   r@   )r    r@   r   rg  r   r@   r   rg  r   r@   r   r@   r   )r    r@   )r   r@   r   r@   r    r@   )NNNN)r   r@   r   r@   r   rB   r    r@   )r    r@   r   r@   r   rg  r   rg  r   r@   r   r@   )r   r@   )r   r@   )NN)r   r@   r   rg  )r   rg  r   rg  r   rg  )rD  r;   rN  r   r   zlist[str] | Noner   int)rD  r;   rT  rh  r   r   )r   r   r   r   r  r5   r   r  r  r   r   r$  r(  r*  r,  r.  r0  r3  r6  r8  r<  r?  rH  rU  rY  r\  ra  rc  rP  rW  r[  r   r   r   r  r    s>   (,.M).6 (,,0%)%)*.$  * #	
 # (8 $(%))-	  # '	, #$($(!  "	
 "  8 #$("&$($("& "  	
 " "  4& !% $""  	
 4 #$($($("&  "	
 " "  4  %)%)*.	! # (	(.1 B11
.^	1PL:r   r  r   AuthRequiredr   BeforeRequestSentr   
FetchErrorr   ResponseCompletedr   ResponseStartedr   r  N)F
__future__r   collections.abcr   dataclassesr   r   typingr   r   r	   -selenium.webdriver.common.bidi._event_managerr
   r   r   r   r   r%   r-   r1   r7   r?   rN   rT   rW   ra   rd   rs   ru   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   disownDataParametersr   r   EVENT_NAME_MAPPINGr  globalsr   r   ri  rj  rk  rl  rm  _globalsr  r   r   r   <module>rw     s   # $ (  A c c  " "           
8 
8 
8             $ $ $$          = = ="          ; ; ; ! ! ! : : : ! ! ! # # #    # # #          # # # ! ! ! ! ! ! 6 6 6 ; ; ;       ! ! ! " " "                , 8 8"C C( ,6'51+1 w: w:v y}}5t< IMM"?F  Y]]148
 IMM"?F  )-- ;TB 9 .6ll>.J^T*PT
 '#3;<<@S3T($/Z^
 ,4LL,F\4(D
 &#3;<<@S3T($/Z^
 $!19>O1P&-VZ
 !2H(,,W]_cJde!"24OQYQ]Q]^dfjQkl7 r   