a
    $ñ»j‚- ã                   @  sž  d dl mZ d dlZd dl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 dd	l	mZ dd
l	mZ ddl	mZ G dd„ dejƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ dejƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ dejƒZG dd„ dejƒZG d d!„ d!ejƒZG d"d#„ d#ejƒZeG d$d%„ d%ƒƒZ G d&d'„ d'ejƒZ!G d(d)„ d)ejƒZ"eG d*d+„ d+ƒƒZ#eG d,d-„ d-ƒƒZ$eG d.d/„ d/ƒƒZ%eG d0d1„ d1ƒƒZ&G d2d3„ d3ejƒZ'G d4d5„ d5ejƒZ(G d6d7„ d7ejƒZ)eG d8d9„ d9ƒƒZ*G d:d;„ d;ejƒZ+eG d<d=„ d=ƒƒZ,G d>d?„ d?ejƒZ-G d@dA„ dAejƒZ.G dBdC„ dCejƒZ/eG dDdE„ dEƒƒZ0eG dFdG„ dGƒƒZ1eG dHdI„ dIƒƒZ2eG dJdK„ dKƒƒZ3eG dLdM„ dMƒƒZ4eG dNdO„ dOƒƒZ5eG dPdQ„ dQƒƒZ6eG dRdS„ dSƒƒZ7eG dTdU„ dUƒƒZ8G dVdW„ dWejƒZ9G dXdY„ dYejƒZ:G dZd[„ d[ejƒZ;eG d\d]„ d]ƒƒZ<eG d^d_„ d_ƒƒZ=eG d`da„ daƒƒZ>eG dbdc„ dcƒƒZ?eG ddde„ deƒƒZ@eG dfdg„ dgƒƒZAG dhdi„ diejƒZBeG djdk„ dkƒƒZCeG dldm„ dmƒƒZDeG dndo„ doƒƒZEG dpdq„ dqejƒZFeG drds„ dsƒƒZGeG dtdu„ duƒƒZHG dvdw„ dwejƒZIeG dxdy„ dyƒƒZJeG dzd{„ d{ƒƒZKG d|d}„ d}ejƒZLeG d~d„ dƒƒZMeG d€d�„ d�ƒƒZNeG d‚dƒ„ dƒƒƒZOG d„d…„ d…ejƒZPG d†d‡„ d‡ejƒZQeG dˆd‰„ d‰ƒƒZReG dŠd‹„ d‹ƒƒZSeG dŒd�„ d�ƒƒZTeG dŽd�„ d�ƒƒZUeG d�d‘„ d‘ƒƒZVG d’d“„ d“ejƒZWeG d”d•„ d•ƒƒZXG d–d—„ d—ejƒZYeG d˜d™„ d™ƒƒZZG dšd›„ d›ejƒZ[eG dœd�„ d�ƒƒZ\eG dždŸ„ dŸƒƒZ]G d d¡„ d¡ejƒZ^G d¢d£„ d£eƒZ_eG d¤d¥„ d¥ƒƒZ`eG d¦d§„ d§ƒƒZaeG d¨d©„ d©ƒƒZbeG dªd«„ d«ƒƒZceG d¬d­„ d­ƒƒZdeG d®d¯„ d¯ƒƒZeeG d°d±„ d±ƒƒZfeG d²d³„ d³ƒƒZgG d´dµ„ dµeƒZhG d¶d·„ d·ejƒZieG d¸d¹„ d¹ƒƒZjeG dºd»„ d»ƒƒZkeG d¼d½„ d½ƒƒZleG d¾d¿„ d¿ƒƒZmeG dÀdÁ„ dÁƒƒZneG dÂdÃ„ dÃƒƒZoeG dÄdÅ„ dÅƒƒZpdÆdÇdÈœdÉdÊ„ZqdÇdËœdÌdÍ„ZrdÎdËœdÏdÐ„ZsdÎdËœdÑdÒ„ZtdÎdËœdÓdÔ„ZudÇdËœdÕdÖ„ZvdÇdËœd×dØ„Zw�d×ddÙdÚdÚdÚdÚdÛdÜdÇdÝœ	dÞdß„Zx�dØdàdÚdÚdÚdádÇdâœdãdä„ZydÇdËœdådæ„Zz�dÙdçdèdèdèdédêdëdìdÇdíœ	dîdï„Z{�dÚdðdìdìdñdòœdódô„Z|�dÛdçdèdèdèdédÇdõœdöd÷„Z}�dÜdëdëdëdìdìdÇdøœdùdú„Z~�dÝdëdëdÇdûœdüdý„ZdþdËœdÿ�d „Z€dàdñ�dœ�d�d„Z��dÞ�ddþ�dœ�d�d„Z‚d�d�d	œ�d
�d„Zƒd�d�d	œ�d�d„Z„d�d�dœ�d�d„Z…d�d�dœ�d�d„Z†ddÇ�d	œ�d�d„Z‡�dßddàdìdì�d�dœ�d�d„Zˆ�dà�d�ddÇ�dœ�d�d„Z‰dçdÇ�dœ�d�d „ZŠdçdÇ�d!œ�d"�d#„Z‹�dádàdàdÚdÚdÚdìdì�d$�d%�d&�d'dëdádÎ�d(œ�d)�d*„ZŒ�d+dÇ�d,œ�d-�d.„Z�ddÇ�d/œ�d0�d1„ZŽdçdÇ�d2œ�d3�d4„Z��d5dÇ�d6œ�d7�d8„Z��dâdàdÚdÚ�d9dÇ�d:œ�d;�d<„Z‘d�d=�d	œ�d>�d?„Z’�dã�d@�dA�dBœ�dC�dD„Z“dçdÇ�dEœ�dF�dG„Z”dçdÇ�dEœ�dH�dI„Z•dà�d=�dœ�dJ�dK„Z–�dädàdÅ�d@�dL�dMœ�dN�dO„Z—dçdÇ�dPœ�dQ�dR„Z˜e�dSƒeG �dT�dU„ �dUƒƒƒZ™e�dVƒeG �dW�dX„ �dXƒƒƒZše�dYƒeG �dZ�d[„ �d[ƒƒƒZ›e�d\ƒeG �d]�d^„ �d^ƒƒƒZœe�d_ƒeG �d`�da„ �daƒƒƒZ�e�dbƒeG �dc�dd„ �ddƒƒƒZže�deƒeG �df�dg„ �dgƒƒƒZŸe�dhƒeG �di�dj„ �djƒƒƒZ e�dkƒeG �dl�dm„ �dmƒƒƒZ¡e�dnƒeG �do�dp„ �dpƒƒƒZ¢e�dqƒeG �dr�ds„ �dsƒƒƒZ£e�dtƒeG �du�dv„ �dvƒƒƒZ¤e�dwƒeG �dx�dy„ �dyƒƒƒZ¥e�dzƒeG �d{�d|„ �d|ƒƒƒZ¦e�d}ƒeG �d~�d„ �dƒƒƒZ§e�d€ƒeG �d��d‚„ �d‚ƒƒƒZ¨e�dƒƒeG �d„�d…„ �d…ƒƒƒZ©e�d†ƒeG �d‡�dˆ„ �dˆƒƒƒZªe�d‰ƒeG �dŠ�d‹„ �d‹ƒƒƒZ«e�dŒƒeG �d��dŽ„ �dŽƒƒƒZ¬e�d�ƒeG �d��d‘„ �d‘ƒƒƒZ­e�d’ƒeG �d“�d”„ �d”ƒƒƒZ®e�d•ƒeG �d–�d—„ �d—ƒƒƒZ¯e�d˜ƒeG �d™�dš„ �dšƒƒƒZ°e�d›ƒeG �dœ�d�„ �d�ƒƒƒZ±e�džƒeG �dŸ�d „ �d ƒƒƒZ²e�d¡ƒeG �d¢�d£„ �d£ƒƒƒZ³e�d¤ƒeG �d¥�d¦„ �d¦ƒƒƒZ´e�d§ƒeG �d¨�d©„ �d©ƒƒƒZµe�dªƒeG �d«�d¬„ �d¬ƒƒƒZ¶e�d­ƒeG �d®�d¯„ �d¯ƒƒƒZ·e�d°ƒeG �d±�d²„ �d²ƒƒƒZ¸e�d³ƒeG �d´�dµ„ �dµƒƒƒZ¹e�d¶ƒeG �d·�d¸„ �d¸ƒƒƒZºe�d¹ƒeG �dº�d»„ �d»ƒƒƒZ»e�d¼ƒeG �d½�d¾„ �d¾ƒƒƒZ¼e�d¿ƒeG �dÀ�dÁ„ �dÁƒƒƒZ½e�dÂƒeG �dÃ�dÄ„ �dÄƒƒƒZ¾e�dÅƒeG �dÆ�dÇ„ �dÇƒƒƒZ¿e�dÈƒeG �dÉ�dÊ„ �dÊƒƒƒZÀe�dËƒeG �dÌ�dÍ„ �dÍƒƒƒZÁe�dÎƒeG �dÏ�dÐ„ �dÐƒƒƒZÂe�dÑƒeG �dÒ�dÓ„ �dÓƒƒƒZÃe�dÔƒeG �dÕ�dÖ„ �dÖƒƒƒZÄdS (å  é    )ÚannotationsN)Ú	dataclassé   )Úevent_classÚT_JSON_DICT)Údebugger)Ú	emulation)Úio)Úpage)Úruntime)Úsecurityc                   @  s~   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZddœdd„Zedd dœdd„ƒZdS )ÚResourceTypez:Resource type as it was perceived by the rendering engine.ZDocumentZ
StylesheetZImageZMediaZFontZScriptZ	TextTrackÚXHRZFetchZPrefetchZEventSourceZ	WebSocketZManifestZSignedExchangeZPingZCSPViolationReportZ	PreflightZFedCMÚOtherÚstr©Úreturnc                 C  s   | j S ©N©Úvalue©Úself© r   ú3E:\soccer\ml_env\Lib\site-packages\mycdp/network.pyÚto_json+   s    zResourceType.to_json©Újsonr   c                 C  s   | |ƒS r   r   ©Úclsr   r   r   r   Ú	from_json.   s    zResourceType.from_jsonN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ZDOCUMENTZ
STYLESHEETZIMAGEZMEDIAZFONTZSCRIPTZ
TEXT_TRACKr   ZFETCHZPREFETCHZEVENT_SOURCEZ
WEB_SOCKETZMANIFESTZSIGNED_EXCHANGEZPINGZCSP_VIOLATION_REPORTZ	PREFLIGHTZFED_CMÚOTHERr   Úclassmethodr   r   r   r   r   r      s.   r   c                      sB   e Zd ZdZddœdd„Zedd dœdd„ƒZ‡ fd	d
„Z‡  ZS )ÚLoaderIdzUnique loader identifier.r   r   c                 C  s   | S r   r   r   r   r   r   r   6   s    zLoaderId.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   9   s    zLoaderId.from_jsonc                   s   d  tƒ  ¡ ¡S )NzLoaderId({})©ÚformatÚsuperÚ__repr__r   ©Ú	__class__r   r   r*   =   s    zLoaderId.__repr__©	r    r!   r"   r#   r   r%   r   r*   Ú__classcell__r   r   r+   r   r&   3   s
   r&   c                      sB   e Zd ZdZddœdd„Zedd dœdd„ƒZ‡ fd	d
„Z‡  ZS )Ú	RequestIdzUnique request identifier.r   r   c                 C  s   | S r   r   r   r   r   r   r   D   s    zRequestId.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   G   s    zRequestId.from_jsonc                   s   d  tƒ  ¡ ¡S )NzRequestId({})r'   r   r+   r   r   r*   K   s    zRequestId.__repr__r-   r   r   r+   r   r/   A   s
   r/   c                      sB   e Zd ZdZddœdd„Zedd dœdd„ƒZ‡ fd	d
„Z‡  ZS )ÚInterceptionIdz&Unique intercepted request identifier.r   r   c                 C  s   | S r   r   r   r   r   r   r   R   s    zInterceptionId.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   U   s    zInterceptionId.from_jsonc                   s   d  tƒ  ¡ ¡S )NzInterceptionId({})r'   r   r+   r   r   r*   Y   s    zInterceptionId.__repr__r-   r   r   r+   r   r0   O   s
   r0   c                   @  sj   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZddœdd„Zedd dœdd„ƒZdS )ÚErrorReasonz#Network level fetch failure reason.ZFailedZAbortedZTimedOutZAccessDeniedZConnectionClosedZConnectionResetZConnectionRefusedZConnectionAbortedZConnectionFailedZNameNotResolvedZInternetDisconnectedZAddressUnreachableZBlockedByClientZBlockedByResponser   r   c                 C  s   | j S r   r   r   r   r   r   r   n   s    zErrorReason.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   q   s    zErrorReason.from_jsonN)r    r!   r"   r#   ZFAILEDZABORTEDZ	TIMED_OUTÚACCESS_DENIEDZCONNECTION_CLOSEDZCONNECTION_RESETZCONNECTION_REFUSEDZCONNECTION_ABORTEDZCONNECTION_FAILEDZNAME_NOT_RESOLVEDZINTERNET_DISCONNECTEDZADDRESS_UNREACHABLEZBLOCKED_BY_CLIENTZBLOCKED_BY_RESPONSEr   r%   r   r   r   r   r   r1   ]   s$   r1   c                      sB   e Zd ZdZddœdd„Zedd dœdd„ƒZ‡ fd	d
„Z‡  ZS )ÚTimeSinceEpochz2UTC time in seconds, counted from January 1, 1970.Úfloatr   c                 C  s   | S r   r   r   r   r   r   r   y   s    zTimeSinceEpoch.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   |   s    zTimeSinceEpoch.from_jsonc                   s   d  tƒ  ¡ ¡S )NzTimeSinceEpoch({})r'   r   r+   r   r   r*   €   s    zTimeSinceEpoch.__repr__r-   r   r   r+   r   r3   v   s
   r3   c                      sB   e Zd ZdZddœdd„Zedd dœdd„ƒZ‡ fd	d
„Z‡  ZS )ÚMonotonicTimezEMonotonically increasing time (sec) from arbitrary point in the past.r4   r   c                 C  s   | S r   r   r   r   r   r   r   ‡   s    zMonotonicTime.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   Š   s    zMonotonicTime.from_jsonc                   s   d  tƒ  ¡ ¡S )NzMonotonicTime({})r'   r   r+   r   r   r*   Ž   s    zMonotonicTime.__repr__r-   r   r   r+   r   r5   „   s
   r5   c                      sB   e Zd ZdZddœdd„Zedd dœdd„ƒZ‡ fd	d
„Z‡  ZS )ÚHeadersz;Request / response headers as keys / values of JSON object.Údictr   c                 C  s   | S r   r   r   r   r   r   r   •   s    zHeaders.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   ˜   s    zHeaders.from_jsonc                   s   d  tƒ  ¡ ¡S )NzHeaders({})r'   r   r+   r   r   r*   œ   s    zHeaders.__repr__r-   r   r   r+   r   r6   ’   s
   r6   c                   @  sV   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
Zddœdd„Zedd dœdd„ƒZdS )ÚConnectionTypez@Underlying connection technology supposedly used by the browser.ÚnoneZ
cellular2gZ
cellular3gZ
cellular4gZ	bluetoothZethernetZwifiZwimaxÚotherr   r   c                 C  s   | j S r   r   r   r   r   r   r   ¬   s    zConnectionType.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   ¯   s    zConnectionType.from_jsonN)r    r!   r"   r#   ÚNONEZ
CELLULAR2GZ
CELLULAR3GZ
CELLULAR4GZ	BLUETOOTHZETHERNETZWIFIZWIMAXr$   r   r%   r   r   r   r   r   r8       s   r8   c                   @  s>   e Zd ZdZdZdZdZddœdd„Zedd d	œd
d„ƒZ	dS )ÚCookieSameSitezs
    Represents the cookie's 'SameSite' status:
    https://tools.ietf.org/html/draft-west-first-party-cookies
    ZStrictZLaxÚNoner   r   c                 C  s   | j S r   r   r   r   r   r   r   ½   s    zCookieSameSite.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   À   s    zCookieSameSite.from_jsonN)
r    r!   r"   r#   ZSTRICTZLAXr;   r   r%   r   r   r   r   r   r<   ´   s   r<   c                   @  s>   e Zd ZdZdZdZdZddœdd„Zedd d	œd
d„ƒZ	dS )ÚCookiePriorityzr
    Represents the cookie's 'Priority' status:
    https://tools.ietf.org/html/draft-west-cookie-priority-00
    ÚLowÚMediumÚHighr   r   c                 C  s   | j S r   r   r   r   r   r   r   Î   s    zCookiePriority.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   Ñ   s    zCookiePriority.from_jsonN)
r    r!   r"   r#   ÚLOWÚMEDIUMÚHIGHr   r%   r   r   r   r   r   r>   Å   s   r>   c                   @  s>   e Zd ZdZdZdZdZddœdd„Zedd d	œd
d„ƒZ	dS )ÚCookieSourceSchemezü
    Represents the source scheme of the origin that originally set the cookie.
    A value of "Unset" allows protocol clients to emulate legacy cookie scope
    for the scheme.
    This is a temporary ability and it will be removed in the future.
    ZUnsetZ	NonSecureÚSecurer   r   c                 C  s   | j S r   r   r   r   r   r   r   á   s    zCookieSourceScheme.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   ä   s    zCookieSourceScheme.from_jsonN)
r    r!   r"   r#   ZUNSETZ
NON_SECUREZSECUREr   r%   r   r   r   r   r   rE   Ö   s   rE   c                   @  sä   e Zd ZU dZded< ded< ded< ded< ded< ded< ded	< ded
< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded< dZded< dZded< ddœdd„Zedd dœdd „ƒZ	dS )!ÚResourceTimingz#Timing information for the request.r4   Úrequest_timeÚproxy_startÚ	proxy_endÚ	dns_startÚdns_endÚconnect_startÚconnect_endÚ	ssl_startÚssl_endÚworker_startÚworker_readyÚworker_fetch_startÚworker_respond_with_settledÚ
send_startÚsend_endÚ
push_startÚpush_endÚreceive_headers_startÚreceive_headers_endNútyping.Optional[float]Úworker_router_evaluation_startÚworker_cache_lookup_startr   r   c                 C  sð   t ƒ }| j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | j	|d	< | j
|d
< | j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | jd urØ| j|d< | jd urì| j|d< |S )NÚrequestTimeÚ
proxyStartÚproxyEndÚdnsStartÚdnsEndÚconnectStartÚ
connectEndÚsslStartÚsslEndÚworkerStartÚworkerReadyÚworkerFetchStartÚworkerRespondWithSettledÚ	sendStartÚsendEndÚ	pushStartÚpushEndÚreceiveHeadersStartÚreceiveHeadersEndÚworkerRouterEvaluationStartÚworkerCacheLookupStart)r7   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r\   r]   ©r   r   r   r   r   r     s4    



















ÿ

zResourceTiming.to_jsonr   c                 C  s0  | t | d¡ƒt | d¡ƒt | d¡ƒt | d¡ƒt | d¡ƒt | d¡ƒt | d¡ƒt | d¡ƒt | d	¡ƒt | d
¡ƒt | d¡ƒt | d¡ƒt | d¡ƒt | d¡ƒt | d¡ƒt | d¡ƒt | d¡ƒt | d¡ƒt | d¡ƒ| dd ¡d u�rt | d¡ƒnd | dd ¡d u�r(t | d¡ƒnd d�S )Nr^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   )rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r\   r]   ©r4   Úgetr   r   r   r   r   6  s:    ÿÿÿâzResourceTiming.from_json)
r    r!   r"   r#   Ú__annotations__r\   r]   r   r%   r   r   r   r   r   rG   é   s2   
rG   c                   @  sF   e Zd ZdZdZdZdZdZdZddœd	d
„Z	e
dd dœdd„ƒZdS )ÚResourcePriorityz'Loading priority of a resource request.ZVeryLowr?   r@   rA   ZVeryHighr   r   c                 C  s   | j S r   r   r   r   r   r   r   c  s    zResourcePriority.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   f  s    zResourcePriority.from_jsonN)r    r!   r"   r#   ZVERY_LOWrB   rC   rD   Z	VERY_HIGHr   r%   r   r   r   r   r   rw   [  s   rw   c                   @  sF   e Zd ZdZdZdZdZdZdZddœd	d
„Z	e
dd dœdd„ƒZdS )ÚRenderBlockingBehaviorz3The render-blocking behavior of a resource request.ZBlockingZInBodyParserBlockingZNonBlockingZNonBlockingDynamicZPotentiallyBlockingr   r   c                 C  s   | j S r   r   r   r   r   r   r   s  s    zRenderBlockingBehavior.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   v  s    z RenderBlockingBehavior.from_jsonN)r    r!   r"   r#   ZBLOCKINGZIN_BODY_PARSER_BLOCKINGZNON_BLOCKINGZNON_BLOCKING_DYNAMICZPOTENTIALLY_BLOCKINGr   r%   r   r   r   r   r   rx   k  s   rx   c                   @  s@   e Zd ZU dZdZded< ddœdd„Zedd d	œd
d„ƒZdS )ÚPostDataEntryz!Post data entry for HTTP request.Nútyping.Optional[str]Úbytes_r   r   c                 C  s   t ƒ }| jd ur| j|d< |S )NÚbytes)r7   r{   rs   r   r   r   r   €  s    

zPostDataEntry.to_jsonr   c                 C  s(   | |  dd ¡d ur t|  d¡ƒnd d�S )Nr|   )r{   ©ru   r   r   r   r   r   r   †  s
    ÿüzPostDataEntry.from_json)	r    r!   r"   r#   r{   rv   r   r%   r   r   r   r   r   ry   {  s
   
ry   c                   @  s¼   e Zd ZU dZded< ded< ded< ded< 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dœdd„Zedd dœdd„ƒZd
S )ÚRequestzHTTP request data.r   ÚurlÚmethodr6   Úheadersrw   Úinitial_priorityÚreferrer_policyNrz   Úurl_fragmentÚ	post_dataútyping.Optional[bool]Úhas_post_dataz+typing.Optional[typing.List[PostDataEntry]]Úpost_data_entriesz*typing.Optional[security.MixedContentType]Úmixed_content_typeÚis_link_preloadz!typing.Optional[TrustTokenParams]Útrust_token_paramsÚis_same_siter   r   c                 C  s  t ƒ }| j|d< | j|d< | j ¡ |d< | j ¡ |d< | j|d< | jd urT| j|d< | jd urh| j|d< | j	d ur|| j	|d< | j
d uršd	d
„ | j
D ƒ|d< | jd ur²| j ¡ |d< | jd urÆ| j|d< | jd urÞ| j ¡ |d< | jd urò| j|d< | jd u�r| j|d< |S )Nr   r€   r�   ÚinitialPriorityÚreferrerPolicyÚurlFragmentÚpostDataÚhasPostDatac                 S  s   g | ]}|  ¡ ‘qS r   ©r   ©Ú.0Úir   r   r   Ú
<listcomp>Ä  s   z#Request.to_json.<locals>.<listcomp>ÚpostDataEntriesÚmixedContentTypeÚisLinkPreloadÚtrustTokenParamsÚ
isSameSiteZisAdRelated)r7   r   r€   r�   r   r‚   rƒ   r„   r…   r‡   rˆ   r‰   rŠ   r‹   rŒ   Zis_ad_relatedrs   r   r   r   r   ¶  s6    









ÿ







zRequest.to_jsonr   c                 C  sX  | t | d¡ƒt | d¡ƒt | d¡¡t | d¡¡t | d¡ƒ| dd ¡d ur`t | d¡ƒnd | dd ¡d ur€t | d¡ƒnd | dd ¡d ur t| d¡ƒnd | d	d ¡d urÄd
d„ |d	 D ƒnd | dd ¡d urètj | d¡¡nd | dd ¡d u�r
t| d¡ƒnd | dd ¡d u�r.t | d¡¡nd | dd ¡d u�rPt| d¡ƒnd d�S )Nr   r€   r�   r�   rŽ   r�   r�   r‘   r—   c                 S  s   g | ]}t  |¡‘qS r   )ry   r   r“   r   r   r   r–   í  ó    z%Request.from_json.<locals>.<listcomp>r˜   r™   rš   r›   )r   r€   r�   r‚   rƒ   r„   r…   r‡   rˆ   r‰   rŠ   r‹   rŒ   )	r   ru   r6   r   rw   Úboolr   ZMixedContentTypeÚTrustTokenParamsr   r   r   r   r   Ó  sF    ÿÿÿÿÿýÿÿÿÿÐzRequest.from_json)r    r!   r"   r#   rv   r„   r…   r‡   rˆ   r‰   rŠ   r‹   rŒ   r   r%   r   r   r   r   r   r~   ‘  s"   
r~   c                   @  st   e Zd ZU dZded< ded< ded< ded< ded< ded	< ded
< ded< ddœdd„Zedd dœdd„ƒZdS )ÚSignedCertificateTimestampz0Details of a signed certificate timestamp (SCT).r   ÚstatusÚoriginÚlog_descriptionÚlog_idr4   Ú	timestampÚhash_algorithmÚsignature_algorithmÚsignature_datar   r   c                 C  sZ   t ƒ }| j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | j|d< |S )	Nr    r¡   ÚlogDescriptionÚlogIdr¤   ÚhashAlgorithmÚsignatureAlgorithmÚsignatureData)	r7   r    r¡   r¢   r£   r¤   r¥   r¦   r§   rs   r   r   r   r     s    







z"SignedCertificateTimestamp.to_jsonr   c                 C  sh   | t | d¡ƒt | d¡ƒt | d¡ƒt | d¡ƒt| d¡ƒt | d¡ƒt | d¡ƒt | d¡ƒd	�S )
Nr    r¡   r¨   r©   r¤   rª   r«   r¬   )r    r¡   r¢   r£   r¤   r¥   r¦   r§   )r   ru   r4   r   r   r   r   r   +  s    øz$SignedCertificateTimestamp.from_jsonN©r    r!   r"   r#   rv   r   r%   r   r   r   r   r   rŸ   
  s   
rŸ   c                   @  s¸   e Zd ZU dZded< ded< ded< ded< ded< d	ed
< ded< ded< ded< ded< ded< ded< dZded< dZded< dZded< ddœdd„Ze	dd dœd d!„ƒZ
dS )"ÚSecurityDetailsz!Security details about a request.r   ÚprotocolÚkey_exchangeÚcipherzsecurity.CertificateIdÚcertificate_idÚsubject_nameútyping.List[str]Úsan_listÚissuerr3   Ú
valid_fromÚvalid_toz'typing.List[SignedCertificateTimestamp]Ú!signed_certificate_timestamp_listÚ!CertificateTransparencyComplianceÚ#certificate_transparency_compliancer�   Úencrypted_client_helloNrz   Úkey_exchange_groupÚmacútyping.Optional[int]Úserver_signature_algorithmr   r   c                 C  sâ   t ƒ }| j|d< | j|d< | j|d< | j ¡ |d< | j|d< dd„ | jD ƒ|d< | j|d	< | j	 ¡ |d
< | j
 ¡ |d< dd„ | jD ƒ|d< | j ¡ |d< | j|d< | jd ur¶| j|d< | jd urÊ| j|d< | jd urÞ| j|d< |S )Nr¯   ÚkeyExchanger±   ÚcertificateIdÚsubjectNamec                 S  s   g | ]}|‘qS r   r   r“   r   r   r   r–   e  rœ   z+SecurityDetails.to_json.<locals>.<listcomp>ÚsanListr¶   Ú	validFromÚvalidToc                 S  s   g | ]}|  ¡ ‘qS r   r’   r“   r   r   r   r–   i  s   ÚsignedCertificateTimestampListÚ!certificateTransparencyComplianceÚencryptedClientHelloÚkeyExchangeGroupr¾   ÚserverSignatureAlgorithm)r7   r¯   r°   r±   r²   r   r³   rµ   r¶   r·   r¸   r¹   r»   r¼   r½   r¾   rÀ   rs   r   r   r   r   ^  s.    




ÿ
ÿ






zSecurityDetails.to_jsonr   c                 C  s  | t | d¡ƒt | d¡ƒt | d¡ƒtj | d¡¡t | d¡ƒdd„ |d D ƒt | d	¡ƒt | d
¡¡t | d¡¡dd„ |d D ƒt | d¡¡t| d¡ƒ| dd ¡d urÂt | d¡ƒnd | dd ¡d urât | d¡ƒnd | dd ¡d u�rt| d¡ƒnd d�S )Nr¯   rÁ   r±   rÂ   rÃ   c                 S  s   g | ]}t |ƒ‘qS r   ©r   r“   r   r   r   r–   ‚  rœ   z-SecurityDetails.from_json.<locals>.<listcomp>rÄ   r¶   rÅ   rÆ   c                 S  s   g | ]}t  |¡‘qS r   )rŸ   r   r“   r   r   r   r–   †  s   ÿrÇ   rÈ   rÉ   rÊ   r¾   rË   )r¯   r°   r±   r²   r³   rµ   r¶   r·   r¸   r¹   r»   r¼   r½   r¾   rÀ   )	r   ru   r   ZCertificateIdr   r3   rº   r�   Úintr   r   r   r   r   x  s:    ÿþÿÿÿÿßzSecurityDetails.from_json)r    r!   r"   r#   rv   r½   r¾   rÀ   r   r%   r   r   r   r   r   r®   9  s&   
r®   c                   @  s>   e Zd ZdZdZdZdZddœdd„Zedd d	œd
d„ƒZ	dS )rº   zBWhether the request complied with Certificate Transparency policy.Úunknownznot-compliantZ	compliantr   r   c                 C  s   | j S r   r   r   r   r   r   r   ¦  s    z)CertificateTransparencyCompliance.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   ©  s    z+CertificateTransparencyCompliance.from_jsonN)
r    r!   r"   r#   ÚUNKNOWNZNOT_COMPLIANTZ	COMPLIANTr   r%   r   r   r   r   r   rº      s   rº   c                   @  sr   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZddœdd„Zedd dœdd„ƒZdS )ÚBlockedReasonz#The reason why request was blocked.r:   Úcspzmixed-contentr¡   Z	inspectorÚ	integrityzsubresource-filterzcontent-typez%coep-frame-resource-needs-coep-headerz2coop-sandboxed-iframe-cannot-navigate-to-coop-pagezcorp-not-same-originz;corp-not-same-origin-after-defaulted-to-same-origin-by-coepz:corp-not-same-origin-after-defaulted-to-same-origin-by-dipzCcorp-not-same-origin-after-defaulted-to-same-origin-by-coep-and-dipzcorp-not-same-sitezsri-message-signature-mismatchr   r   c                 C  s   | j S r   r   r   r   r   r   r   Ë  s    zBlockedReason.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   Î  s    zBlockedReason.from_jsonN)r    r!   r"   r#   r$   ZCSPZMIXED_CONTENTZORIGINZ	INSPECTORZ	INTEGRITYZSUBRESOURCE_FILTERZCONTENT_TYPEZ%COEP_FRAME_RESOURCE_NEEDS_COEP_HEADERZ2COOP_SANDBOXED_IFRAME_CANNOT_NAVIGATE_TO_COOP_PAGEZCORP_NOT_SAME_ORIGINZ;CORP_NOT_SAME_ORIGIN_AFTER_DEFAULTED_TO_SAME_ORIGIN_BY_COEPZ:CORP_NOT_SAME_ORIGIN_AFTER_DEFAULTED_TO_SAME_ORIGIN_BY_DIPZCCORP_NOT_SAME_ORIGIN_AFTER_DEFAULTED_TO_SAME_ORIGIN_BY_COEP_AND_DIPZCORP_NOT_SAME_SITEZSRI_MESSAGE_SIGNATURE_MISMATCHr   r%   r   r   r   r   r   rÐ   ®  s2   ÿÿÿÿÿrÐ   c                   @  s¢   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZddœd d!„Z e!dd d"œd#d$„ƒZ"d%S )&Ú	CorsErrorz-
    The reason why request was blocked.
    ZDisallowedByModeZInvalidResponseZWildcardOriginNotAllowedZMissingAllowOriginHeaderZMultipleAllowOriginValuesZInvalidAllowOriginValueZAllowOriginMismatchZInvalidAllowCredentialsZCorsDisabledSchemeZPreflightInvalidStatusZPreflightDisallowedRedirectZ!PreflightWildcardOriginNotAllowedZ!PreflightMissingAllowOriginHeaderZ"PreflightMultipleAllowOriginValuesZ PreflightInvalidAllowOriginValueZPreflightAllowOriginMismatchZ PreflightInvalidAllowCredentialsZPreflightMissingAllowExternalZPreflightInvalidAllowExternalZ$InvalidAllowMethodsPreflightResponseZ$InvalidAllowHeadersPreflightResponseZ#MethodDisallowedByPreflightResponseZ#HeaderDisallowedByPreflightResponseZRedirectContainsCredentialsZInsecureLocalNetworkZInvalidLocalNetworkAccessZNoCorsRedirectModeNotFollowZ"LocalNetworkAccessPermissionDeniedr   r   c                 C  s   | j S r   r   r   r   r   r   r     s    zCorsError.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r     s    zCorsError.from_jsonN)#r    r!   r"   r#   ZDISALLOWED_BY_MODEZINVALID_RESPONSEZWILDCARD_ORIGIN_NOT_ALLOWEDZMISSING_ALLOW_ORIGIN_HEADERZMULTIPLE_ALLOW_ORIGIN_VALUESZINVALID_ALLOW_ORIGIN_VALUEZALLOW_ORIGIN_MISMATCHZINVALID_ALLOW_CREDENTIALSZCORS_DISABLED_SCHEMEZPREFLIGHT_INVALID_STATUSZPREFLIGHT_DISALLOWED_REDIRECTZ%PREFLIGHT_WILDCARD_ORIGIN_NOT_ALLOWEDZ%PREFLIGHT_MISSING_ALLOW_ORIGIN_HEADERZ&PREFLIGHT_MULTIPLE_ALLOW_ORIGIN_VALUESZ$PREFLIGHT_INVALID_ALLOW_ORIGIN_VALUEZPREFLIGHT_ALLOW_ORIGIN_MISMATCHZ#PREFLIGHT_INVALID_ALLOW_CREDENTIALSZ PREFLIGHT_MISSING_ALLOW_EXTERNALZ PREFLIGHT_INVALID_ALLOW_EXTERNALZ(INVALID_ALLOW_METHODS_PREFLIGHT_RESPONSEZ(INVALID_ALLOW_HEADERS_PREFLIGHT_RESPONSEZ'METHOD_DISALLOWED_BY_PREFLIGHT_RESPONSEZ'HEADER_DISALLOWED_BY_PREFLIGHT_RESPONSEZREDIRECT_CONTAINS_CREDENTIALSZINSECURE_LOCAL_NETWORKZINVALID_LOCAL_NETWORK_ACCESSZ NO_CORS_REDIRECT_MODE_NOT_FOLLOWZ&LOCAL_NETWORK_ACCESS_PERMISSION_DENIEDr   r%   r   r   r   r   r   rÓ   Ó  sL   ÿÿÿÿÿÿrÓ   c                   @  s@   e Zd ZU ded< ded< ddœdd„Zedd d	œd
d„ƒZdS )ÚCorsErrorStatusrÓ   Ú
cors_errorr   Úfailed_parameterr   r   c                 C  s"   t ƒ }| j ¡ |d< | j|d< |S )NÚ	corsErrorÚfailedParameter)r7   rÕ   r   rÖ   rs   r   r   r   r     s    
zCorsErrorStatus.to_jsonr   c                 C  s"   | t  | d¡¡t| d¡ƒd�S )Nr×   rØ   )rÕ   rÖ   )rÓ   r   ru   r   r   r   r   r   r     s    þzCorsErrorStatus.from_jsonN©r    r!   r"   rv   r   r%   r   r   r   r   r   rÔ   	  s
   
rÔ   c                   @  sB   e Zd ZdZdZdZdZdZddœdd	„Ze	dd d
œdd„ƒZ
dS )ÚServiceWorkerResponseSourcez!Source of serviceworker response.zcache-storagez
http-cachezfallback-codeÚnetworkr   r   c                 C  s   | j S r   r   r   r   r   r   r   #  s    z#ServiceWorkerResponseSource.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   &  s    z%ServiceWorkerResponseSource.from_jsonN)r    r!   r"   r#   ZCACHE_STORAGEZ
HTTP_CACHEZFALLBACK_CODEÚNETWORKr   r%   r   r   r   r   r   rÚ     s   rÚ   c                   @  sP   e Zd ZU dZded< ded< dZded< d	d
œdd„Zed	d dœdd„ƒZdS )rž   zÕ
    Determines what type of Trust Token operation is executed and
    depending on the type, some additional parameters. The values
    are specified in third_party/blink/renderer/core/fetch/trust_token.idl.
    ÚTrustTokenOperationTypeÚ	operationr   Úrefresh_policyNú!typing.Optional[typing.List[str]]Úissuersr   r   c                 C  s@   t ƒ }| j ¡ |d< | j|d< | jd ur<dd„ | jD ƒ|d< |S )NrÞ   ÚrefreshPolicyc                 S  s   g | ]}|‘qS r   r   r“   r   r   r   r–   ?  rœ   z,TrustTokenParams.to_json.<locals>.<listcomp>rá   )r7   rÞ   r   rß   rá   rs   r   r   r   r   :  s    

zTrustTokenParams.to_jsonr   c                 C  sF   | t  | d¡¡t| d¡ƒ| dd ¡d ur>dd„ |d D ƒnd d�S )NrÞ   râ   rá   c                 S  s   g | ]}t |ƒ‘qS r   rÌ   r“   r   r   r   r–   H  rœ   z.TrustTokenParams.from_json.<locals>.<listcomp>)rÞ   rß   rá   )rÝ   r   ru   r   r   r   r   r   r   B  s    ÿúzTrustTokenParams.from_json)	r    r!   r"   r#   rv   rá   r   r%   r   r   r   r   r   rž   +  s   
rž   c                   @  s:   e Zd ZdZdZdZddœdd„Zedd dœd	d
„ƒZdS )rÝ   ZIssuanceZ
RedemptionZSigningr   r   c                 C  s   | j S r   r   r   r   r   r   r   T  s    zTrustTokenOperationType.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   W  s    z!TrustTokenOperationType.from_jsonN)	r    r!   r"   ZISSUANCEZ
REDEMPTIONZSIGNINGr   r%   r   r   r   r   r   rÝ   O  s   rÝ   c                   @  sR   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
dœdd„Zed
d dœdd„ƒZdS )ÚAlternateProtocolUsagezEThe reason Chrome uses specific transport protocol for HTTP semanticsZalternativeJobWonWithoutRaceZalternativeJobWonRaceZmainJobWonRaceZmappingMissingÚbrokenZdnsAlpnH3JobWonWithoutRaceZdnsAlpnH3JobWonRaceZunspecifiedReasonr   r   c                 C  s   | j S r   r   r   r   r   r   r   g  s    zAlternateProtocolUsage.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   j  s    z AlternateProtocolUsage.from_jsonN)r    r!   r"   r#   Z ALTERNATIVE_JOB_WON_WITHOUT_RACEZALTERNATIVE_JOB_WON_RACEZMAIN_JOB_WON_RACEZMAPPING_MISSINGZBROKENZ DNS_ALPN_H3_JOB_WON_WITHOUT_RACEZDNS_ALPN_H3_JOB_WON_RACEZUNSPECIFIED_REASONr   r%   r   r   r   r   r   rã   \  s   rã   c                   @  sF   e Zd ZdZdZdZdZdZdZddœd	d
„Z	e
dd dœdd„ƒZdS )ÚServiceWorkerRouterSourcez Source of service worker router.rÛ   Úcachezfetch-eventzrace-network-and-fetch-handlerzrace-network-and-cacher   r   c                 C  s   | j S r   r   r   r   r   r   r   w  s    z!ServiceWorkerRouterSource.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   z  s    z#ServiceWorkerRouterSource.from_jsonN)r    r!   r"   r#   rÜ   ZCACHEZFETCH_EVENTZRACE_NETWORK_AND_FETCH_HANDLERZRACE_NETWORK_AND_CACHEr   r%   r   r   r   r   r   rå   o  s   rå   c                   @  sT   e Zd ZU dZded< dZded< dZded< ddœd	d
„Zedd dœdd„ƒZ	dS )ÚServiceWorkerRouterInfoNr¿   Úrule_id_matchedz*typing.Optional[ServiceWorkerRouterSource]Úmatched_source_typeÚactual_source_typer   r   c                 C  sN   t ƒ }| jd ur| j|d< | jd ur2| j ¡ |d< | jd urJ| j ¡ |d< |S )NÚruleIdMatchedÚmatchedSourceTypeÚactualSourceType)r7   rè   ré   r   rê   rs   r   r   r   r   Š  s    



zServiceWorkerRouterInfo.to_jsonr   c                 C  sl   | |  dd ¡d ur t|  d¡ƒnd |  dd ¡d urBt |  d¡¡nd |  dd ¡d urdt |  d¡¡nd d�S )Nrë   rì   rí   )rè   ré   rê   )ru   rÍ   rå   r   r   r   r   r   r   ”  s    ÿýÿýÿîz!ServiceWorkerRouterInfo.from_json)
r    r!   r"   rè   rv   ré   rê   r   r%   r   r   r   r   r   rç     s   

rç   c                   @  sP  e Zd ZU dZded< ded< ded< ded< ded	< ded
< ded< ded< ded< 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%< 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.d/œd0d1„Zed.d d2œd3d4„ƒZdS )5ÚResponsezHTTP response data.r   r   rÍ   r    Ústatus_textr6   r�   Ú	mime_typeÚcharsetr�   Úconnection_reusedr4   Úconnection_idÚencoded_data_lengthzsecurity.SecurityStateÚsecurity_stateNrz   Úheaders_textútyping.Optional[Headers]Úrequest_headersÚrequest_headers_textÚremote_ip_addressr¿   Úremote_portr†   Úfrom_disk_cacheÚfrom_service_workerÚfrom_prefetch_cacheÚfrom_early_hintsz(typing.Optional[ServiceWorkerRouterInfo]Úservice_worker_router_infoztyping.Optional[ResourceTiming]Útimingz,typing.Optional[ServiceWorkerResponseSource]Úservice_worker_response_sourceútyping.Optional[TimeSinceEpoch]Úresponse_timeÚcache_storage_cache_namer¯   z'typing.Optional[AlternateProtocolUsage]Úalternate_protocol_usageú typing.Optional[SecurityDetails]Úsecurity_detailsr   r   c                 C  sü  t ƒ }| j|d< | j|d< | j|d< | j ¡ |d< | j|d< | j|d< | j|d< | j	|d< | j
|d	< | j ¡ |d
< | jd ur†| j|d< | jd urž| j ¡ |d< | jd ur²| j|d< | jd urÆ| j|d< | jd urÚ| j|d< | jd urî| j|d< | jd u�r| j|d< | jd u�r| j|d< | jd u�r0| j|d< | jd u�rJ| j ¡ |d< | jd u�rd| j ¡ |d< | jd u�r~| j ¡ |d< | jd u�r˜| j ¡ |d< | jd u�r®| j|d< | jd u�rÄ| j|d< | jd u�rÞ| j ¡ |d< | jd u�rø| j ¡ |d< |S )Nr   r    Ú
statusTextr�   ÚmimeTyperñ   ÚconnectionReusedÚconnectionIdÚencodedDataLengthÚsecurityStateÚheadersTextÚrequestHeadersÚrequestHeadersTextÚremoteIPAddressÚ
remotePortÚfromDiskCacheÚfromServiceWorkerÚfromPrefetchCacheÚfromEarlyHintsÚserviceWorkerRouterInfor  ÚserviceWorkerResponseSourceÚresponseTimeÚcacheStorageCacheNamer¯   ÚalternateProtocolUsageÚsecurityDetails)r7   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  r¯   r  r  rs   r   r   r   r   õ  sb    





















ÿÿ

ÿzResponse.to_jsonr   c                  C  sÐ  | t | d¡ƒt| d¡ƒt | d¡ƒt | d¡¡t | d¡ƒt | d¡ƒt| d¡ƒt| d¡ƒt| d	¡ƒtj | d
¡¡| dd ¡d uržt | d¡ƒnd | dd ¡d urÀt | d¡¡nd | dd ¡d uràt | d¡ƒnd | dd ¡d u�rt | d¡ƒnd | dd ¡d u�r$t| d¡ƒnd | dd ¡d u�rFt| d¡ƒnd | dd ¡d u�rht| d¡ƒnd | dd ¡d u�rŠt| d¡ƒnd | dd ¡d u�r¬t| d¡ƒnd | dd ¡d u�rÐt	 | d¡¡nd | dd ¡d u�rôt
 | d¡¡nd | dd ¡d u�rt | d¡¡nd | dd ¡d u�r<t | d¡¡nd | dd ¡d u�r^t | d¡ƒnd | dd ¡d u�r€t | d¡ƒnd | dd ¡d u�r¤t | d¡¡nd | dd ¡d u�rÈt | d¡¡nd d�S )Nr   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  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  r¯   r  r  )r   ru   rÍ   r6   r   r�   r4   r   ZSecurityStaterç   rG   rÚ   r3   rã   r®   r   r   r   r   r   +  sŽ    ÿÿÿÿÿÿÿÿÿÿýÿÿýÿÿÿÿýÿÿšzResponse.from_json)r    r!   r"   r#   rv   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î   ­  s@   
þ
6rî   c                   @  s<   e Zd ZU dZded< ddœdd„Zedd dœd	d
„ƒZdS )ÚWebSocketRequestzWebSocket request data.r6   r�   r   r   c                 C  s   t ƒ }| j ¡ |d< |S )Nr�   )r7   r�   r   rs   r   r   r   r   ž  s    zWebSocketRequest.to_jsonr   c                 C  s   | t  | d¡¡d�S )Nr�   )r�   )r6   r   ru   r   r   r   r   r   £  s    ÿzWebSocketRequest.from_jsonNr­   r   r   r   r   r  ˜  s
   
r  c                   @  sp   e Zd ZU dZded< ded< ded< dZd	ed
< dZded< dZd	ed< ddœdd„Ze	dd dœdd„ƒZ
dS )ÚWebSocketResponsezWebSocket response data.rÍ   r    r   rï   r6   r�   Nrz   rö   r÷   rø   rù   r   r   c                 C  sl   t ƒ }| j|d< | j|d< | j ¡ |d< | jd ur<| j|d< | jd urT| j ¡ |d< | jd urh| j|d< |S )Nr    r	  r�   r  r  r  )r7   r    rï   r�   r   rö   rø   rù   rs   r   r   r   r   º  s    






zWebSocketResponse.to_jsonr   c              
   C  s�   | t | d¡ƒt| d¡ƒt | d¡¡| dd ¡d urFt| d¡ƒnd | dd ¡d urht | d¡¡nd | dd ¡d urˆt| d¡ƒnd d�S )Nr    r	  r�   r  r  r  )r    rï   r�   rö   rø   rù   )rÍ   ru   r   r6   r   r   r   r   r   r   Ç  s    ÿÿÿïzWebSocketResponse.from_json)r    r!   r"   r#   rv   rö   rø   rù   r   r%   r   r   r   r   r   r  ª  s   
r  c                   @  sL   e Zd ZU dZded< ded< ded< dd	œd
d„Zedd dœdd„ƒZdS )ÚWebSocketFramez„
    WebSocket message data. This represents an entire WebSocket message,
    not just a fragmented frame as the name suggests.
    r4   Úopcoder�   Úmaskr   Úpayload_datar   r   c                 C  s(   t ƒ }| j|d< | j|d< | j|d< |S )Nr!  r"  ÚpayloadData)r7   r!  r"  r#  rs   r   r   r   r   ð  s
    


zWebSocketFrame.to_jsonr   c                 C  s,   | t | d¡ƒt| d¡ƒt| d¡ƒd�S )Nr!  r"  r$  )r!  r"  r#  )r4   ru   r�   r   r   r   r   r   r   ÷  s
    ýzWebSocketFrame.from_jsonNr­   r   r   r   r   r   ß  s   
r   c                   @  sX   e Zd ZU dZded< ded< ded< dZd	ed
< ddœdd„Zedd dœdd„ƒZdS )ÚCachedResourcez&Information about the cached resource.r   r   r   Útype_r4   Ú	body_sizeNútyping.Optional[Response]Úresponser   r   c                 C  sD   t ƒ }| j|d< | j ¡ |d< | j|d< | jd ur@| j ¡ |d< |S )Nr   ÚtypeÚbodySizer)  )r7   r   r&  r   r'  r)  rs   r   r   r   r     s    


zCachedResource.to_jsonr   c              	   C  sP   | t | d¡ƒt | d¡¡t| d¡ƒ| dd ¡d urHt | d¡¡nd d�S )Nr   r*  r+  r)  )r   r&  r'  r)  )r   ru   r   r   r4   rî   r   r   r   r   r     s    ÿùzCachedResource.from_json)	r    r!   r"   r#   rv   r)  r   r%   r   r   r   r   r   r%     s   
	r%  c                   @  sx   e Zd ZU 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dœdd„Z
edd dœdd„ƒZdS )Ú	Initiatorz(Information about the request initiator.r   r&  Nz#typing.Optional[runtime.StackTrace]Ústackrz   r   r[   Úline_numberÚcolumn_numberútyping.Optional[RequestId]Ú
request_idr   r   c                 C  s€   t ƒ }| j|d< | jd ur(| j ¡ |d< | jd ur<| j|d< | jd urP| j|d< | jd urd| j|d< | jd ur|| j ¡ |d< |S )Nr*  r-  r   Ú
lineNumberÚcolumnNumberÚ	requestId)r7   r&  r-  r   r   r.  r/  r1  rs   r   r   r   r   6  s    








zInitiator.to_jsonr   c                 C  sº   | t | d¡ƒ| dd ¡d ur0tj | d¡¡nd | dd ¡d urPt | d¡ƒnd | dd ¡d urpt| d¡ƒnd | dd ¡d ur�t| d¡ƒnd | dd ¡d ur²t | d¡¡nd d�S )Nr*  r-  r   r2  r3  r4  )r&  r-  r   r.  r/  r1  )r   ru   r   Z
StackTracer   r4   r/   r   r   r   r   r   E  s$    ÿÿÿÿÿçzInitiator.from_json)r    r!   r"   r#   rv   r-  r   r.  r/  r1  r   r%   r   r   r   r   r   r,  #  s   
r,  c                   @  sD   e Zd ZU dZded< ded< ddœdd	„Zedd d
œdd„ƒZdS )ÚCookiePartitionKeyzÁ
    cookiePartitionKey object
    The representation of the components of the key that are created
    by the cookiePartitionKey class contained in
    net/cookies/cookie_partition_key.h.
    r   Útop_level_siter�   Úhas_cross_site_ancestorr   r   c                 C  s   t ƒ }| j|d< | j|d< |S )NÚtopLevelSiteÚhasCrossSiteAncestor)r7   r6  r7  rs   r   r   r   r   t  s    

zCookiePartitionKey.to_jsonr   c                 C  s    | t | d¡ƒt| d¡ƒd�S )Nr8  r9  )r6  r7  ©r   ru   r�   r   r   r   r   r   z  s    þzCookiePartitionKey.from_jsonNr­   r   r   r   r   r5  e  s   
r5  c                   @  s¼   e Zd ZU dZded< ded< ded< ded< ded< d	ed
< d	ed< d	ed< ded< ded< ded< dZded< dZded< dZded< dZded< ddœdd„Z	e
dd dœd d!„ƒZdS )"ÚCookiezCookie objectr   Únamer   ÚdomainÚpathrÍ   Úsizer�   Ú	http_onlyÚsecureÚsessionr>   ÚpriorityrE   Úsource_schemeÚsource_portNr[   Úexpiresútyping.Optional[CookieSameSite]Ú	same_siteú#typing.Optional[CookiePartitionKey]Úpartition_keyr†   Úpartition_key_opaquer   r   c                 C  sØ   t ƒ }| j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | j	 
¡ |d	< | j 
¡ |d
< | j|d< | jd ur�| j|d< | jd ur¨| j 
¡ |d< | jd urÀ| j 
¡ |d< | jd urÔ| j|d< |S )Nr<  r   r=  r>  r?  ÚhttpOnlyrA  rB  rC  ÚsourceSchemeÚ
sourcePortrF  ÚsameSiteÚpartitionKeyÚpartitionKeyOpaque)r7   r<  r   r=  r>  r?  r@  rA  rB  rC  r   rD  rE  rF  rH  rJ  rK  rs   r   r   r   r   ¨  s*    














zCookie.to_jsonr   c                 C  s  | t | d¡ƒt | d¡ƒt | d¡ƒt | d¡ƒt| d¡ƒt| d¡ƒt| d¡ƒt| d¡ƒt | d	¡¡t | d
¡¡t| d¡ƒ| dd ¡d ur¨t| d¡ƒnd | dd ¡d urÊt | d¡¡nd | dd ¡d urìt	 | d¡¡nd | dd ¡d u�rt| d¡ƒnd d�S )Nr<  r   r=  r>  r?  rL  rA  rB  rC  rM  rN  rF  rO  rP  rQ  )r<  r   r=  r>  r?  r@  rA  rB  rC  rD  rE  rF  rH  rJ  rK  )
r   ru   rÍ   r�   r>   r   rE   r4   r<   r5  r   r   r   r   r   ¿  s6    ÿÿÿÿÿàzCookie.from_json)r    r!   r"   r#   rv   rF  rH  rJ  rK  r   r%   r   r   r   r   r   r;  ‚  s&   
r;  c                   @  s‚   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZddœdd„Zedd dœdd„ƒZdS )ÚSetCookieBlockedReasonz@Types of reasons why a cookie may not be stored from a response.Ú
SecureOnlyÚSameSiteStrictÚSameSiteLaxÚSameSiteUnspecifiedTreatedAsLaxÚSameSiteNoneInsecureÚUserPreferencesÚThirdPartyPhaseoutÚ ThirdPartyBlockedInFirstPartySetÚSyntaxErrorZSchemeNotSupportedZOverwriteSecureZInvalidDomainZInvalidPrefixÚUnknownErrorÚSchemefulSameSiteStrictÚSchemefulSameSiteLaxÚ(SchemefulSameSiteUnspecifiedTreatedAsLaxÚNameValuePairExceedsMaxSizeZDisallowedCharacterZNoCookieContentr   r   c                 C  s   | j S r   r   r   r   r   r   r   ÿ  s    zSetCookieBlockedReason.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r     s    z SetCookieBlockedReason.from_jsonN)r    r!   r"   r#   ÚSECURE_ONLYÚSAME_SITE_STRICTÚSAME_SITE_LAXÚ$SAME_SITE_UNSPECIFIED_TREATED_AS_LAXÚSAME_SITE_NONE_INSECUREÚUSER_PREFERENCESÚTHIRD_PARTY_PHASEOUTÚ&THIRD_PARTY_BLOCKED_IN_FIRST_PARTY_SETZSYNTAX_ERRORZSCHEME_NOT_SUPPORTEDZOVERWRITE_SECUREZINVALID_DOMAINZINVALID_PREFIXÚUNKNOWN_ERRORÚSCHEMEFUL_SAME_SITE_STRICTÚSCHEMEFUL_SAME_SITE_LAXÚ.SCHEMEFUL_SAME_SITE_UNSPECIFIED_TREATED_AS_LAXÚ NAME_VALUE_PAIR_EXCEEDS_MAX_SIZEZDISALLOWED_CHARACTERZNO_COOKIE_CONTENTr   r%   r   r   r   r   r   rR  æ  s2   ÿrR  c                   @  sz   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZddœdd„Zedd dœdd„ƒZdS )ÚCookieBlockedReasonz=Types of reasons why a cookie may not be sent with a request.rS  Z	NotOnPathZDomainMismatchrT  rU  rV  rW  rX  rY  rZ  r\  r]  r^  r_  r`  ZPortMismatchZSchemeMismatchZAnonymousContextr   r   c                 C  s   | j S r   r   r   r   r   r   r     s    zCookieBlockedReason.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   !  s    zCookieBlockedReason.from_jsonN)r    r!   r"   r#   ra  ZNOT_ON_PATHZDOMAIN_MISMATCHrb  rc  rd  re  rf  rg  rh  ri  rj  rk  rl  rm  ZPORT_MISMATCHZSCHEME_MISMATCHZANONYMOUS_CONTEXTr   r%   r   r   r   r   r   rn    s.   ÿrn  c                   @  s^   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZddœdd„Zedd dœdd„ƒZdS )ÚCookieExemptionReasonzn
    Types of reasons why a cookie should have been blocked by 3PCD,
    but is exempted for the request.
    r=   ZUserSettingZTPCDMetadataZTPCDDeprecationTrialZTopLevelTPCDDeprecationTrialZTPCDHeuristicsZEnterprisePolicyZStorageAccessZTopLevelStorageAccessÚSchemeZSameSiteNoneCookiesInSandboxr   r   c                 C  s   | j S r   r   r   r   r   r   r   7  s    zCookieExemptionReason.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   :  s    zCookieExemptionReason.from_jsonN)r    r!   r"   r#   r;   ZUSER_SETTINGZTPCD_METADATAZTPCD_DEPRECATION_TRIALZ TOP_LEVEL_TPCD_DEPRECATION_TRIALZTPCD_HEURISTICSZENTERPRISE_POLICYZSTORAGE_ACCESSZTOP_LEVEL_STORAGE_ACCESSZSCHEMEZ!SAME_SITE_NONE_COOKIES_IN_SANDBOXr   r%   r   r   r   r   r   ro  &  s   ro  c                   @  sP   e Zd ZU dZded< ded< dZded< d	d
œdd„Zed	d dœdd„ƒZdS )ÚBlockedSetCookieWithReasonzU
    A cookie which was not stored from a response with the corresponding reason
    z#typing.List[SetCookieBlockedReason]Úblocked_reasonsr   Úcookie_lineNztyping.Optional[Cookie]Úcookier   r   c                 C  s@   t ƒ }dd„ | jD ƒ|d< | j|d< | jd ur<| j ¡ |d< |S )Nc                 S  s   g | ]}|  ¡ ‘qS r   r’   r“   r   r   r   r–   R  rœ   z6BlockedSetCookieWithReason.to_json.<locals>.<listcomp>ÚblockedReasonsÚ
cookieLinert  )r7   rr  rs  rt  r   rs   r   r   r   r   P  s    

z"BlockedSetCookieWithReason.to_jsonr   c                 C  sF   | dd„ |d D ƒt | d¡ƒ| dd ¡d ur>t | d¡¡nd d�S )Nc                 S  s   g | ]}t  |¡‘qS r   )rR  r   r“   r   r   r   r–   [  s   ÿz8BlockedSetCookieWithReason.from_json.<locals>.<listcomp>ru  rv  rt  )rr  rs  rt  )r   ru   r;  r   r   r   r   r   r   X  s    þÿ÷z$BlockedSetCookieWithReason.from_json)	r    r!   r"   r#   rv   rt  r   r%   r   r   r   r   r   rq  ?  s   
rq  c                   @  sL   e Zd ZU dZded< ded< ded< dd	œd
d„Zedd dœdd„ƒZdS )ÚExemptedSetCookieWithReasonz¼
    A cookie should have been blocked by 3PCD but is exempted and stored
    from a response with the corresponding reason.
    A cookie could only have at most one exemption reason.
    ro  Úexemption_reasonr   rs  r;  rt  r   r   c                 C  s0   t ƒ }| j ¡ |d< | j|d< | j ¡ |d< |S )NÚexemptionReasonrv  rt  )r7   rx  r   rs  rt  rs   r   r   r   r   w  s
    
z#ExemptedSetCookieWithReason.to_jsonr   c                 C  s0   | t  | d¡¡t| d¡ƒt | d¡¡d�S )Nry  rv  rt  )rx  rs  rt  )ro  r   ru   r   r;  r   r   r   r   r   ~  s    ÿûz%ExemptedSetCookieWithReason.from_jsonNr­   r   r   r   r   rw  h  s   
rw  c                   @  sP   e Zd ZU dZded< ded< dZded< d	d
œdd„Zed	d dœdd„ƒZdS )ÚAssociatedCookiez›
    A cookie associated with the request which may or may not be sent with it.
    Includes the cookies itself and reasons for blocking or exemption.
    r;  rt  z typing.List[CookieBlockedReason]rr  Nz&typing.Optional[CookieExemptionReason]rx  r   r   c                 C  sD   t ƒ }| j ¡ |d< dd„ | jD ƒ|d< | jd ur@| j ¡ |d< |S )Nrt  c                 S  s   g | ]}|  ¡ ‘qS r   r’   r“   r   r   r   r–   ›  rœ   z,AssociatedCookie.to_json.<locals>.<listcomp>ru  ry  )r7   rt  r   rr  rx  rs   r   r   r   r   ˜  s    
zAssociatedCookie.to_jsonr   c                 C  sH   | t  | d¡¡dd„ |d D ƒ| dd ¡d ur@t | d¡¡nd d�S )Nrt  c                 S  s   g | ]}t  |¡‘qS r   )rn  r   r“   r   r   r   r–   ¤  s   ÿz.AssociatedCookie.from_json.<locals>.<listcomp>ru  ry  )rt  rr  rx  )r;  r   ru   ro  r   r   r   r   r      s    þÿ÷zAssociatedCookie.from_json)	r    r!   r"   r#   rv   rx  r   r%   r   r   r   r   r   rz  ‰  s   
rz  c                   @  sÈ   e Zd ZU dZded< 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dœdd„Zedd dœdd„ƒZdS ) ÚCookieParamzCookie parameter objectr   r<  r   Nrz   r   r=  r>  r†   rA  r@  rG  rH  r  rF  útyping.Optional[CookiePriority]rC  ú#typing.Optional[CookieSourceScheme]rD  r¿   rE  rI  rJ  r   r   c                 C  s  t ƒ }| j|d< | j|d< | jd ur.| j|d< | jd urB| j|d< | jd urV| j|d< | jd urj| j|d< | jd ur~| j|d< | jd ur–| j 	¡ |d< | j
d ur®| j
 	¡ |d	< | jd urÆ| j 	¡ |d
< | jd urÞ| j 	¡ |d< | jd urò| j|d< | jd u�r| j 	¡ |d< |S )Nr<  r   r   r=  r>  rA  rL  rO  rF  rC  rM  rN  rP  )r7   r<  r   r   r=  r>  rA  r@  rH  r   rF  rC  rD  rE  rJ  rs   r   r   r   r   Õ  s4    

















zCookieParam.to_jsonr   c                 C  s’  | t | d¡ƒt | d¡ƒ| dd ¡d ur8t | d¡ƒnd | dd ¡d urXt | d¡ƒnd | dd ¡d urxt | d¡ƒnd | dd ¡d ur˜t| d¡ƒnd | dd ¡d ur¸t| d¡ƒnd | dd ¡d urÚt | d¡¡nd | d	d ¡d urüt | d	¡¡nd | d
d ¡d u�r t | d
¡¡nd | dd ¡d u�rDt | d¡¡nd | dd ¡d u�rft| d¡ƒnd | dd ¡d u�rŠt	 | d¡¡nd d�S )Nr<  r   r   r=  r>  rA  rL  rO  rF  rC  rM  rN  rP  )r<  r   r   r=  r>  rA  r@  rH  rF  rC  rD  rE  rJ  )
r   ru   r�   r<   r   r3   r>   rE   rÍ   r5  r   r   r   r   r   ñ  sJ    ÿÿÿÿÿÿÿÿÿÿÿÈzCookieParam.from_json)r    r!   r"   r#   rv   r   r=  r>  rA  r@  rH  rF  rC  rD  rE  rJ  r   r%   r   r   r   r   r   r{  °  s"   
r{  c                   @  sX   e Zd ZU dZded< ded< ded< dZded< d	d
œdd„Zed	d dœdd„ƒZdS )ÚAuthChallengez8Authorization challenge for HTTP status code 401 or 407.r   r¡   ÚschemeÚrealmNrz   Úsourcer   r   c                 C  s<   t ƒ }| j|d< | j|d< | j|d< | jd ur8| j|d< |S )Nr¡   r  r€  r�  )r7   r¡   r  r€  r�  rs   r   r   r   r   <  s    




zAuthChallenge.to_jsonr   c                 C  sL   | t | d¡ƒt | d¡ƒt | d¡ƒ| dd ¡d urDt | d¡ƒnd d�S )Nr¡   r  r€  r�  )r¡   r  r€  r�  ©r   ru   r   r   r   r   r   E  s    ÿùzAuthChallenge.from_json)	r    r!   r"   r#   rv   r�  r   r%   r   r   r   r   r   r~  0  s   
	r~  c                   @  sT   e Zd ZU dZded< dZded< dZded< dd	œd
d„Zedd dœdd„ƒZ	dS )ÚAuthChallengeResponsezResponse to an AuthChallenge.r   r)  Nrz   ÚusernameÚpasswordr   r   c                 C  s<   t ƒ }| j|d< | jd ur$| j|d< | jd ur8| j|d< |S )Nr)  r„  r…  )r7   r)  r„  r…  rs   r   r   r   r   b  s    




zAuthChallengeResponse.to_jsonr   c                 C  sT   | t | d¡ƒ| dd ¡d ur,t | d¡ƒnd | dd ¡d urLt | d¡ƒnd d�S )Nr)  r„  r…  )r)  r„  r…  r‚  r   r   r   r   r   k  s    ÿÿözAuthChallengeResponse.from_json)
r    r!   r"   r#   rv   r„  r…  r   r%   r   r   r   r   r   rƒ  S  s   
	rƒ  c                   @  s:   e Zd ZdZdZdZddœdd„Zedd dœd	d
„ƒZdS )ÚInterceptionStagez®
    Stages of the interception to begin intercepting.
    Request will intercept before the request is sent.
    Response will intercept after the response is received.
    r~   ZHeadersReceivedr   r   c                 C  s   | j S r   r   r   r   r   r   r   …  s    zInterceptionStage.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   ˆ  s    zInterceptionStage.from_jsonN)	r    r!   r"   r#   ZREQUESTZHEADERS_RECEIVEDr   r%   r   r   r   r   r   r†  |  s   r†  c                   @  sX   e Zd ZU dZdZded< dZded< dZded< d	d
œdd„Ze	d	d dœdd„ƒZ
dS )ÚRequestPatternz!Request pattern for interception.Nrz   Úurl_patternútyping.Optional[ResourceType]Úresource_typez"typing.Optional[InterceptionStage]Úinterception_stager   r   c                 C  sN   t ƒ }| jd ur| j|d< | jd ur2| j ¡ |d< | jd urJ| j ¡ |d< |S )NÚ
urlPatternÚresourceTypeÚinterceptionStage)r7   rˆ  rŠ  r   r‹  rs   r   r   r   r   ˜  s    



zRequestPattern.to_jsonr   c                 C  sl   | |  dd ¡d ur t|  d¡ƒnd |  dd ¡d urBt |  d¡¡nd |  dd ¡d urdt |  d¡¡nd d�S )NrŒ  r�  rŽ  )rˆ  rŠ  r‹  )ru   r   r   r   r†  r   r   r   r   r   ¢  s    ÿÿÿòzRequestPattern.from_json)r    r!   r"   r#   rˆ  rv   rŠ  r‹  r   r%   r   r   r   r   r   r‡  �  s   

r‡  c                   @  sˆ   e Zd ZU dZded< ded< ded< ded< ded< ded	< d
Zded< d
Zded< d
Zded< ddœdd„Ze	dd dœdd„ƒZ
d
S )ÚSignedExchangeSignaturez«
    Information about a signed exchange signature.
    https://wicg.github.io/webpackage/
    draft-yasskin-httpbis-origin-signed-exchanges-impl.html#rfc.section.3.1
    r   ÚlabelÚ	signaturerÒ   Úvalidity_urlrÍ   ÚdaterF  Nrz   Úcert_urlÚcert_sha256rà   Úcertificatesr   r   c                 C  sŒ   t ƒ }| j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | jd urV| j|d< | jd urj| j|d< | j	d urˆd	d
„ | j	D ƒ|d< |S )Nr�  r‘  rÒ   ÚvalidityUrlr“  rF  ÚcertUrlÚ
certSha256c                 S  s   g | ]}|‘qS r   r   r“   r   r   r   r–   Þ  rœ   z3SignedExchangeSignature.to_json.<locals>.<listcomp>r–  )
r7   r�  r‘  rÒ   r’  r“  rF  r”  r•  r–  rs   r   r   r   r   Ñ  s    










zSignedExchangeSignature.to_jsonr   c                 C  s´   | t | d¡ƒt | d¡ƒt | d¡ƒt | d¡ƒt| d¡ƒt| d¡ƒ| dd ¡d urht | d¡ƒnd | dd ¡d urˆt | d¡ƒnd | d	d ¡d ur¬d
d„ |d	 D ƒnd d�	S )Nr�  r‘  rÒ   r—  r“  rF  r˜  r™  r–  c                 S  s   g | ]}t |ƒ‘qS r   rÌ   r“   r   r   r   r–   õ  rœ   z5SignedExchangeSignature.from_json.<locals>.<listcomp>)	r�  r‘  rÒ   r’  r“  rF  r”  r•  r–  ©r   ru   rÍ   r   r   r   r   r   á  s"    ÿÿÿìz!SignedExchangeSignature.from_json)r    r!   r"   r#   rv   r”  r•  r–  r   r%   r   r   r   r   r   r�  ·  s   
r�  c                   @  s\   e Zd ZU dZded< ded< ded< ded	< ded
< ddœdd„Zedd dœdd„ƒZdS )ÚSignedExchangeHeaderz¬
    Information about a signed exchange header.
    https://wicg.github.io/webpackage/
    draft-yasskin-httpbis-origin-signed-exchanges-impl.html#cbor-representation
    r   Úrequest_urlrÍ   Úresponse_coder6   Úresponse_headersz$typing.List[SignedExchangeSignature]Ú
signaturesÚheader_integrityr   r   c                 C  sJ   t ƒ }| j|d< | j|d< | j ¡ |d< dd„ | jD ƒ|d< | j|d< |S )NÚ
requestUrlÚresponseCodeÚresponseHeadersc                 S  s   g | ]}|  ¡ ‘qS r   r’   r“   r   r   r   r–     rœ   z0SignedExchangeHeader.to_json.<locals>.<listcomp>rŸ  ÚheaderIntegrity)r7   rœ  r�  rž  r   rŸ  r   rs   r   r   r   r     s    


zSignedExchangeHeader.to_jsonr   c              	   C  sJ   | t | d¡ƒt| d¡ƒt | d¡¡dd„ |d D ƒt | d¡ƒd�S )	Nr¡  r¢  r£  c                 S  s   g | ]}t  |¡‘qS r   )r�  r   r“   r   r   r   r–     s   ÿz2SignedExchangeHeader.from_json.<locals>.<listcomp>rŸ  r¤  )rœ  r�  rž  rŸ  r   )r   ru   rÍ   r6   r   r   r   r   r   r     s    þøzSignedExchangeHeader.from_jsonNr­   r   r   r   r   r›  ü  s   
	r›  c                   @  sJ   e Zd ZdZdZdZdZdZdZdZ	dd	œd
d„Z
edd dœdd„ƒZdS )ÚSignedExchangeErrorFieldz/Field type for a signed exchange related error.ZsignatureSigZsignatureIntegrityZsignatureCertUrlZsignatureCertSha256ZsignatureValidityUrlZsignatureTimestampsr   r   c                 C  s   | j S r   r   r   r   r   r   r   /  s    z SignedExchangeErrorField.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   2  s    z"SignedExchangeErrorField.from_jsonN)r    r!   r"   r#   ZSIGNATURE_SIGZSIGNATURE_INTEGRITYZSIGNATURE_CERT_URLZSIGNATURE_CERT_SHA256ZSIGNATURE_VALIDITY_URLZSIGNATURE_TIMESTAMPSr   r%   r   r   r   r   r   r¥  &  s   r¥  c                   @  sT   e Zd ZU dZded< dZded< dZded< d	d
œdd„Zed	d dœdd„ƒZ	dS )ÚSignedExchangeErrorú-Information about a signed exchange response.r   ÚmessageNr¿   Úsignature_indexz)typing.Optional[SignedExchangeErrorField]Úerror_fieldr   r   c                 C  s@   t ƒ }| j|d< | jd ur$| j|d< | jd ur<| j ¡ |d< |S )Nr¨  ÚsignatureIndexÚ
errorField)r7   r¨  r©  rª  r   rs   r   r   r   r   A  s    



zSignedExchangeError.to_jsonr   c                 C  sV   | t | d¡ƒ| dd ¡d ur,t| d¡ƒnd | dd ¡d urNt | d¡¡nd d�S )Nr¨  r«  r¬  )r¨  r©  rª  )r   ru   rÍ   r¥  r   r   r   r   r   r   J  s    ÿÿözSignedExchangeError.from_json)
r    r!   r"   r#   rv   r©  rª  r   r%   r   r   r   r   r   r¦  7  s   
	r¦  c                   @  sh   e Zd ZU dZded< ded< dZded< dZd	ed
< dZded< ddœdd„Ze	dd dœdd„ƒZ
dS )ÚSignedExchangeInfor§  rî   Úouter_responser�   Úhas_extra_infoNz%typing.Optional[SignedExchangeHeader]Úheaderr  r  z1typing.Optional[typing.List[SignedExchangeError]]Úerrorsr   r   c                 C  sp   t ƒ }| j ¡ |d< | j|d< | jd ur6| j ¡ |d< | jd urN| j ¡ |d< | jd urldd„ | jD ƒ|d< |S )NÚouterResponseÚhasExtraInfor°  r  c                 S  s   g | ]}|  ¡ ‘qS r   r’   r“   r   r   r   r–   t  rœ   z.SignedExchangeInfo.to_json.<locals>.<listcomp>r±  )r7   r®  r   r¯  r°  r  r±  rs   r   r   r   r   k  s    



zSignedExchangeInfo.to_jsonr   c              	   C  sŒ   | t  | d¡¡t| d¡ƒ| dd ¡d ur<t | d¡¡nd | dd ¡d ur^t | d¡¡nd | dd ¡d ur„dd„ | d¡D ƒnd d�S )	Nr²  r³  r°  r  r±  c                 S  s   g | ]}t  |¡‘qS r   )r¦  r   r“   r   r   r   r–   „  s   z0SignedExchangeInfo.from_json.<locals>.<listcomp>)r®  r¯  r°  r  r±  )rî   r   ru   r�   r›  r®   r   r   r   r   r   w  s"    ÿýÿýÿñzSignedExchangeInfo.from_json)r    r!   r"   r#   rv   r°  r  r±  r   r%   r   r   r   r   r   r­  [  s   
r­  c                   @  sB   e Zd ZdZdZdZdZdZddœdd	„Ze	dd d
œdd„ƒZ
dS )ÚContentEncodingz3List of content encodings supported by the backend.ÚdeflateÚgzipÚbrZzstdr   r   c                 C  s   | j S r   r   r   r   r   r   r   “  s    zContentEncoding.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   –  s    zContentEncoding.from_jsonN)r    r!   r"   r#   ZDEFLATEZGZIPZBRZZSTDr   r%   r   r   r   r   r   r´  Œ  s   r´  c                   @  sŒ   e Zd ZU ded< ded< ded< 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dœdd„Z	e
dd dœdd„ƒZdS )ÚNetworkConditionsr   rˆ  r4   ÚlatencyÚdownload_throughputÚupload_throughputNútyping.Optional[ConnectionType]Úconnection_typer[   Úpacket_lossr¿   Úpacket_queue_lengthr†   Úpacket_reorderingÚoffliner   r   c                 C  sš   t ƒ }| j|d< | j|d< | j|d< | j|d< | jd urF| j ¡ |d< | jd urZ| j|d< | jd urn| j|d< | j	d ur‚| j	|d< | j
d ur–| j
|d	< |S )
NrŒ  r¹  ÚdownloadThroughputÚuploadThroughputÚconnectionTypeÚ
packetLossÚpacketQueueLengthÚpacketReorderingrÁ  )r7   rˆ  r¹  rº  r»  r½  r   r¾  r¿  rÀ  rÁ  rs   r   r   r   r   ¸  s     












zNetworkConditions.to_jsonr   c                 C  sÚ   | t | d¡ƒt| d¡ƒt| d¡ƒt| d¡ƒ| dd ¡d urRt | d¡¡nd | dd ¡d urrt| d¡ƒnd | dd ¡d ur’t| d¡ƒnd | dd ¡d ur²t| d¡ƒnd | d	d ¡d urÒt| d	¡ƒnd d
�	S )NrŒ  r¹  rÂ  rÃ  rÄ  rÅ  rÆ  rÇ  rÁ  )	rˆ  r¹  rº  r»  r½  r¾  r¿  rÀ  rÁ  )r   ru   r4   r8   r   rÍ   r�   r   r   r   r   r   Ê  s.    ýÿÿÿÿÿëzNetworkConditions.from_json)r    r!   r"   rv   r½  r¾  r¿  rÀ  rÁ  r   r%   r   r   r   r   r   r¸  ›  s   
r¸  c                   @  s@   e Zd ZU ded< ded< ddœdd„Zedd d	œd
d„ƒZdS )ÚBlockPatternr   rˆ  r�   Úblockr   r   c                 C  s   t ƒ }| j|d< | j|d< |S )NrŒ  rÉ  )r7   rˆ  rÉ  rs   r   r   r   r   ñ  s    

zBlockPattern.to_jsonr   c                 C  s    | t | d¡ƒt| d¡ƒd�S )NrŒ  rÉ  )rˆ  rÉ  r:  r   r   r   r   r   ÷  s    þzBlockPattern.from_jsonNrÙ   r   r   r   r   rÈ  å  s
   
rÈ  c                   @  s6   e Zd ZdZdZddœdd„Zedd dœdd	„ƒZd
S )ÚDirectSocketDnsQueryTypeZipv4Zipv6r   r   c                 C  s   | j S r   r   r   r   r   r   r   	  s    z DirectSocketDnsQueryType.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   	  s    z"DirectSocketDnsQueryType.from_jsonN)r    r!   r"   ZIPV4ZIPV6r   r%   r   r   r   r   r   rÊ  ÿ  s
   rÊ  c                   @  sh   e Zd ZU ded< dZded< dZded< dZded< dZded	< d
dœdd„Ze	d
d dœdd„ƒZ
dS )ÚDirectTCPSocketOptionsr�   Úno_delayNr[   Úkeep_alive_delayÚsend_buffer_sizeÚreceive_buffer_sizeú)typing.Optional[DirectSocketDnsQueryType]Údns_query_typer   r   c                 C  sh   t ƒ }| j|d< | jd ur$| j|d< | jd ur8| j|d< | jd urL| j|d< | jd urd| j ¡ |d< |S )NÚnoDelayÚkeepAliveDelayÚsendBufferSizeÚreceiveBufferSizeÚdnsQueryType)r7   rÌ  rÍ  rÎ  rÏ  rÑ  r   rs   r   r   r   r   	  s    







zDirectTCPSocketOptions.to_jsonr   c              
   C  s–   | t | d¡ƒ| dd ¡d ur,t| d¡ƒnd | dd ¡d urLt| d¡ƒnd | dd ¡d urlt| d¡ƒnd | dd ¡d urŽt | d¡¡nd d�S )NrÒ  rÓ  rÔ  rÕ  rÖ  )rÌ  rÍ  rÎ  rÏ  rÑ  )r�   ru   r4   rÊ  r   r   r   r   r   r   $	  s"    ÿÿÿýÿñz DirectTCPSocketOptions.from_json)r    r!   r"   rv   rÍ  rÎ  rÏ  rÑ  r   r%   r   r   r   r   r   rË  	  s   
rË  c                   @  s¨   e Zd ZU 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dœdd„Zedd dœdd„ƒZdS )ÚDirectUDPSocketOptionsNrz   Úremote_addrr¿   rû   Ú
local_addrÚ
local_portrÐ  rÑ  r[   rÎ  rÏ  r†   Úmulticast_loopbackÚmulticast_time_to_liveÚmulticast_allow_address_sharingr   r   c                 C  sÖ   t ƒ }| jd ur| j|d< | jd ur.| j|d< | jd urB| j|d< | jd urV| j|d< | jd urn| j ¡ |d< | jd ur‚| j|d< | jd ur–| j|d< | j	d urª| j	|d< | j
d ur¾| j
|d	< | jd urÒ| j|d
< |S )NÚ
remoteAddrr  Ú	localAddrÚ	localPortrÖ  rÔ  rÕ  ÚmulticastLoopbackÚmulticastTimeToLiveÚmulticastAllowAddressSharing)r7   rØ  rû   rÙ  rÚ  rÑ  r   rÎ  rÏ  rÛ  rÜ  rÝ  rs   r   r   r   r   K	  s.    

















ÿzDirectUDPSocketOptions.to_jsonr   c                 C  sP  | |  dd ¡d ur t|  d¡ƒnd |  dd ¡d ur@t|  d¡ƒnd |  dd ¡d ur`t|  d¡ƒnd |  dd ¡d ur€t|  d¡ƒnd |  dd ¡d ur¢t |  d¡¡nd |  dd ¡d urÂt|  d¡ƒnd |  dd ¡d urât|  d¡ƒnd |  dd ¡d u�rt|  d¡ƒnd |  d	d ¡d u�r&t|  d	¡ƒnd |  d
d ¡d u�rHt|  d
¡ƒnd d�
S )NrÞ  r  rß  rà  rÖ  rÔ  rÕ  rá  râ  rã  )
rØ  rû   rÙ  rÚ  rÑ  rÎ  rÏ  rÛ  rÜ  rÝ  )ru   r   rÍ   rÊ  r   r4   r�   r   r   r   r   r   e	  sH    ÿÿÿÿýÿÿÿÿÿýÿÞz DirectUDPSocketOptions.from_json)r    r!   r"   rØ  rv   rû   rÙ  rÚ  rÑ  rÎ  rÏ  rÛ  rÜ  rÝ  r   r%   r   r   r   r   r   r×  9	  s   
r×  c                   @  sP   e Zd ZU ded< dZded< dZded< dd	œd
d„Zedd dœdd„ƒZdS )ÚDirectUDPMessager   ÚdataNrz   rØ  r¿   rû   r   r   c                 C  s<   t ƒ }| j|d< | jd ur$| j|d< | jd ur8| j|d< |S )Nrå  rÞ  r  )r7   rå  rØ  rû   rs   r   r   r   r   –	  s    




zDirectUDPMessage.to_jsonr   c                 C  sR   | t |d ƒ| dd ¡d ur*t | d¡ƒnd | dd ¡d urJt| d¡ƒnd d�S )Nrå  rÞ  r  )rå  rØ  rû   rš  r   r   r   r   r   Ÿ	  s    
ÿÿùzDirectUDPMessage.from_json)	r    r!   r"   rv   rØ  rû   r   r%   r   r   r   r   r   rä  �	  s   
	rä  c                   @  sB   e Zd ZdZdZdZdZdZddœdd	„Ze	dd d
œdd„ƒZ
dS )ÚLocalNetworkAccessRequestPolicyZAllowZBlockFromInsecureToMorePrivateZWarnFromInsecureToMorePrivateZPermissionBlockZPermissionWarnr   r   c                 C  s   | j S r   r   r   r   r   r   r   ³	  s    z'LocalNetworkAccessRequestPolicy.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   ¶	  s    z)LocalNetworkAccessRequestPolicy.from_jsonN)r    r!   r"   ZALLOWZ#BLOCK_FROM_INSECURE_TO_MORE_PRIVATEZ"WARN_FROM_INSECURE_TO_MORE_PRIVATEZPERMISSION_BLOCKZPERMISSION_WARNr   r%   r   r   r   r   r   ræ  ¬	  s   ræ  c                   @  s>   e Zd ZdZdZdZdZddœdd„Zedd d	œd
d„ƒZ	dS )ÚIPAddressSpaceZLoopbackZLocalZPublicÚUnknownr   r   c                 C  s   | j S r   r   r   r   r   r   r   Á	  s    zIPAddressSpace.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   Ä	  s    zIPAddressSpace.from_jsonN)
r    r!   r"   ZLOOPBACKZLOCALZPUBLICrÏ   r   r%   r   r   r   r   r   rç  »	  s   rç  c                   @  s8   e Zd ZU ded< ddœdd„Zedd dœdd	„ƒZd
S )ÚConnectTimingr4   rH   r   r   c                 C  s   t ƒ }| j|d< |S )Nr^   )r7   rH   rs   r   r   r   r   Ò	  s    
zConnectTiming.to_jsonr   c                 C  s   | t | d¡ƒd�S )Nr^   )rH   rt   r   r   r   r   r   ×	  s    ÿzConnectTiming.from_jsonNrÙ   r   r   r   r   ré  É	  s   
ré  c                   @  sH   e Zd ZU ded< ded< ded< ddœd	d
„Zedd dœdd„ƒZdS )ÚClientSecurityStater�   Úinitiator_is_secure_contextrç  Úinitiator_ip_address_spaceræ  Ú#local_network_access_request_policyr   r   c                 C  s0   t ƒ }| j|d< | j ¡ |d< | j ¡ |d< |S )NÚinitiatorIsSecureContextÚinitiatorIPAddressSpaceÚlocalNetworkAccessRequestPolicy)r7   rë  rì  r   rí  rs   r   r   r   r   ä	  s    
ÿÿzClientSecurityState.to_jsonr   c                 C  s0   | t | d¡ƒt | d¡¡t | d¡¡d�S )Nrî  rï  rð  )rë  rì  rí  )r�   ru   rç  r   ræ  r   r   r   r   r   ï	  s    ÿÿÿùzClientSecurityState.from_jsonNrÙ   r   r   r   r   rê  Þ	  s   
rê  c                   @  sL   e Zd ZU dZded< ded< ded< dd	œd
d„Zedd dœdd„ƒZdS )ÚAdScriptIdentifiera  
    Identifies the script on the stack that caused a resource or element to be
    labeled as an ad. For resources, this indicates the context that triggered
    the fetch. For elements, this indicates the context that caused the element
    to be appended to the DOM.
    zruntime.ScriptIdÚ	script_idzruntime.UniqueDebuggerIdÚdebugger_idr   r<  r   r   c                 C  s0   t ƒ }| j ¡ |d< | j ¡ |d< | j|d< |S )NÚscriptIdÚ
debuggerIdr<  )r7   rò  r   ró  r<  rs   r   r   r   r   
  s
    
zAdScriptIdentifier.to_jsonr   c                 C  s2   | t j | d¡¡t j | d¡¡t|d ƒd�S )Nrô  rõ  r<  )rò  ró  r<  )r   ZScriptIdr   ru   ZUniqueDebuggerIdr   r   r   r   r   r   
  s    ÿ
ûzAdScriptIdentifier.from_jsonNr­   r   r   r   r   rñ  þ	  s   
rñ  c                   @  sH   e Zd ZU dZded< dZded< ddœd	d
„Zedd dœdd„ƒZdS )Ú
AdAncestryz�
    Encapsulates the script ancestry and the root script filter list rule that
    caused the resource or element to be labeled as an ad.
    ztyping.List[AdScriptIdentifier]Úancestry_chainNrz   Úroot_script_filterlist_ruler   r   c                 C  s2   t ƒ }dd„ | jD ƒ|d< | jd ur.| j|d< |S )Nc                 S  s   g | ]}|  ¡ ‘qS r   r’   r“   r   r   r   r–   0
  rœ   z&AdAncestry.to_json.<locals>.<listcomp>ÚancestryChainÚrootScriptFilterlistRule)r7   r÷  rø  rs   r   r   r   r   .
  s
    

zAdAncestry.to_jsonr   c                 C  s6   | dd„ |d D ƒ|  dd ¡d ur.t|d ƒnd d�S )Nc                 S  s   g | ]}t  |¡‘qS r   )rñ  r   r“   r   r   r   r–   8
  s   z(AdAncestry.from_json.<locals>.<listcomp>rù  rú  )r÷  rø  r}   r   r   r   r   r   5
  s    ÿÿúzAdAncestry.from_json)	r    r!   r"   r#   rv   rø  r   r%   r   r   r   r   r   rö  
  s   
rö  c                   @  sL   e Zd ZU dZdZded< dZded< ddœd	d
„Zedd dœdd„ƒZ	dS )ÚAdProvenanceaÏ  
    Represents the provenance of an ad resource or element. Only one of
    ``filterlistRule`` or ``adScriptAncestry`` can be set. If `filterlistRule`
    is provided, the resource URL directly matches a filter list rule. If
    ``adScriptAncestry`` is provided, an ad script initiated the resource fetch
    or appended the element to the DOM. If neither is provided, the entity is
    known to be an ad, but provenance tracking information is unavailable.
    Nrz   Úfilterlist_ruleztyping.Optional[AdAncestry]Úad_script_ancestryr   r   c                 C  s6   t ƒ }| jd ur| j|d< | jd ur2| j ¡ |d< |S )NÚfilterlistRuleÚadScriptAncestry)r7   rü  rý  r   rs   r   r   r   r   P
  s    


zAdProvenance.to_jsonr   c                 C  sF   | |  dd ¡d urt|d ƒnd |  dd ¡d ur>t |d ¡nd d�S )Nrþ  rÿ  )rü  rý  )ru   r   rö  r   r   r   r   r   r   X
  s    ÿÿúzAdProvenance.from_json)
r    r!   r"   r#   rü  rv   rý  r   r%   r   r   r   r   r   rû  A
  s   
	rû  c                   @  sJ   e Zd ZdZdZdZdZdZdZdZ	dd	œd
d„Z
edd dœdd„ƒZdS )ÚCrossOriginOpenerPolicyValueZ
SameOriginZSameOriginAllowPopupsZRestrictPropertiesZ
UnsafeNoneZSameOriginPlusCoepZRestrictPropertiesPlusCoepZNoopenerAllowPopupsr   r   c                 C  s   | j S r   r   r   r   r   r   r   m
  s    z$CrossOriginOpenerPolicyValue.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   p
  s    z&CrossOriginOpenerPolicyValue.from_jsonN)r    r!   r"   ZSAME_ORIGINZSAME_ORIGIN_ALLOW_POPUPSZRESTRICT_PROPERTIESZUNSAFE_NONEZSAME_ORIGIN_PLUS_COEPZRESTRICT_PROPERTIES_PLUS_COEPZNOOPENER_ALLOW_POPUPSr   r%   r   r   r   r   r   r   d
  s   r   c                   @  sX   e Zd ZU ded< ded< dZded< dZded< dd	œd
d„Zedd dœdd„ƒZdS )ÚCrossOriginOpenerPolicyStatusr   r   Úreport_only_valueNrz   Úreporting_endpointÚreport_only_reporting_endpointr   r   c                 C  sN   t ƒ }| j ¡ |d< | j ¡ |d< | jd ur6| j|d< | jd urJ| j|d< |S ©Nr   ÚreportOnlyValueÚreportingEndpointÚreportOnlyReportingEndpoint©r7   r   r   r  r  r  rs   r   r   r   r   |
  s    


ÿz%CrossOriginOpenerPolicyStatus.to_jsonr   c                 C  sd   | t  | d¡¡t  | d¡¡| dd ¡d ur<t| d¡ƒnd | dd ¡d ur\t| d¡ƒnd d�S ©Nr   r  r  r  )r   r  r  r  )r   r   ru   r   r   r   r   r   r   ˆ
  s    ÿÿÿóz'CrossOriginOpenerPolicyStatus.from_json©	r    r!   r"   rv   r  r  r   r%   r   r   r   r   r   r  u
  s   
r  c                   @  s:   e Zd ZdZdZdZddœdd„Zedd dœd	d
„ƒZdS )ÚCrossOriginEmbedderPolicyValuer=   ZCredentiallessZRequireCorpr   r   c                 C  s   | j S r   r   r   r   r   r   r   ¡
  s    z&CrossOriginEmbedderPolicyValue.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   ¤
  s    z(CrossOriginEmbedderPolicyValue.from_jsonN)	r    r!   r"   r;   ZCREDENTIALLESSZREQUIRE_CORPr   r%   r   r   r   r   r   r  œ
  s   r  c                   @  sX   e Zd ZU ded< ded< dZded< dZded< dd	œd
d„Zedd dœdd„ƒZdS )ÚCrossOriginEmbedderPolicyStatusr  r   r  Nrz   r  r  r   r   c                 C  sN   t ƒ }| j ¡ |d< | j ¡ |d< | jd ur6| j|d< | jd urJ| j|d< |S r  r	  rs   r   r   r   r   °
  s    


ÿz'CrossOriginEmbedderPolicyStatus.to_jsonr   c                 C  sd   | t  | d¡¡t  | d¡¡| dd ¡d ur<t| d¡ƒnd | dd ¡d ur\t| d¡ƒnd d�S r
  )r  r   ru   r   r   r   r   r   r   ¼
  s    ÿÿÿóz)CrossOriginEmbedderPolicyStatus.from_jsonr  r   r   r   r   r  ©
  s   
r  c                   @  s6   e Zd ZdZdZddœdd„Zedd dœdd	„ƒZd
S )ÚContentSecurityPolicySourceÚHTTPZMetar   r   c                 C  s   | j S r   r   r   r   r   r   r   Ô
  s    z#ContentSecurityPolicySource.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   ×
  s    z%ContentSecurityPolicySource.from_jsonN)r    r!   r"   r  ZMETAr   r%   r   r   r   r   r   r  Ð
  s
   r  c                   @  sH   e Zd ZU ded< ded< ded< ddœd	d
„Zedd dœdd„ƒZdS )ÚContentSecurityPolicyStatusr   Úeffective_directivesr�   Úis_enforcedr  r�  r   r   c                 C  s,   t ƒ }| j|d< | j|d< | j ¡ |d< |S )NÚeffectiveDirectivesÚ
isEnforcedr�  )r7   r  r  r�  r   rs   r   r   r   r   â
  s
    

z#ContentSecurityPolicyStatus.to_jsonr   c                 C  s.   | t | d¡ƒt| d¡ƒt | d¡¡d�S )Nr  r  r�  )r  r  r�  )r   ru   r�   r  r   r   r   r   r   r   é
  s
    ýz%ContentSecurityPolicyStatus.from_jsonNrÙ   r   r   r   r   r  Ü
  s   
r  c                   @  sT   e Zd ZU dZded< dZded< dZded< dd	œd
d„Zedd dœdd„ƒZ	dS )ÚSecurityIsolationStatusNz.typing.Optional[CrossOriginOpenerPolicyStatus]Úcoopz0typing.Optional[CrossOriginEmbedderPolicyStatus]Úcoepz9typing.Optional[typing.List[ContentSecurityPolicyStatus]]rÑ   r   r   c                 C  sX   t ƒ }| jd ur| j ¡ |d< | jd ur6| j ¡ |d< | jd urTdd„ | jD ƒ|d< |S )Nr  r  c                 S  s   g | ]}|  ¡ ‘qS r   r’   r“   r   r   r   r–   ÿ
  rœ   z3SecurityIsolationStatus.to_json.<locals>.<listcomp>rÑ   )r7   r  r   r  rÑ   rs   r   r   r   r   ø
  s    


zSecurityIsolationStatus.to_jsonr   c                 C  sp   | |  dd ¡d ur"t |  d¡¡nd |  dd ¡d urDt |  d¡¡nd |  dd ¡d urhdd„ |d D ƒnd d�S )Nr  r  rÑ   c                 S  s   g | ]}t  |¡‘qS r   )r  r   r“   r   r   r   r–     rœ   z5SecurityIsolationStatus.from_json.<locals>.<listcomp>)r  r  rÑ   )ru   r  r   r  r   r   r   r   r     s    ÿÿÿòz!SecurityIsolationStatus.from_json)
r    r!   r"   r  rv   r  rÑ   r   r%   r   r   r   r   r   r  ò
  s   

r  c                   @  sB   e Zd ZdZdZdZdZdZddœdd	„Ze	dd d
œdd„ƒZ
dS )ÚReportStatusz%The status of a Reporting API report.ZQueuedZPendingZMarkedForRemovalÚSuccessr   r   c                 C  s   | j S r   r   r   r   r   r   r     s    zReportStatus.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   !  s    zReportStatus.from_jsonN)r    r!   r"   r#   ZQUEUEDZPENDINGZMARKED_FOR_REMOVALÚSUCCESSr   r%   r   r   r   r   r   r    s   r  c                      s>   e Zd Zddœdd„Zedd dœdd„ƒZ‡ fdd	„Z‡  ZS )
ÚReportIdr   r   c                 C  s   | S r   r   r   r   r   r   r   '  s    zReportId.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   *  s    zReportId.from_jsonc                   s   d  tƒ  ¡ ¡S )NzReportId({})r'   r   r+   r   r   r*   .  s    zReportId.__repr__)r    r!   r"   r   r%   r   r*   r.   r   r   r+   r   r  &  s   r  c                   @  s|   e Zd ZU dZded< ded< ded< ded< ded	< d
ed< d
ed< ded< ded< ddœdd„Zedd dœdd„ƒZdS )ÚReportingApiReportz?An object representing a report generated by the Reporting API.r  Úid_r   Úinitiator_urlÚdestinationr&  r3   r¤   rÍ   ÚdepthÚcompleted_attemptsr7   Úbodyr  r    r   r   c                 C  sp   t ƒ }| j ¡ |d< | j|d< | j|d< | j|d< | j ¡ |d< | j|d< | j|d< | j	|d< | j
 ¡ |d	< |S )
NÚidÚinitiatorUrlr  r*  r¤   r   ÚcompletedAttemptsr"  r    )r7   r  r   r  r  r&  r¤   r   r!  r"  r    rs   r   r   r   r   H  s    





zReportingApiReport.to_jsonr   c                 C  sz   | t  | d¡¡t| d¡ƒt| d¡ƒt| d¡ƒt | d¡¡t| d¡ƒt| d¡ƒt| d¡ƒt | d	¡¡d
�	S )Nr#  r$  r  r*  r¤   r   r%  r"  r    )	r  r  r  r&  r¤   r   r!  r"  r    )r  r   ru   r   r3   rÍ   r7   r  r   r   r   r   r   U  s    ÷zReportingApiReport.from_jsonNr­   r   r   r   r   r  2  s   
r  c                   @  s@   e Zd ZU ded< ded< ddœdd„Zedd dœd	d
„ƒZdS )ÚReportingApiEndpointr   r   Ú
group_namer   r   c                 C  s   t ƒ }| j|d< | j|d< |S )Nr   Ú	groupName)r7   r   r'  rs   r   r   r   r   k  s    

zReportingApiEndpoint.to_jsonr   c                 C  s    | t | d¡ƒt | d¡ƒd�S )Nr   r(  )r   r'  r‚  r   r   r   r   r   q  s    þzReportingApiEndpoint.from_jsonNrÙ   r   r   r   r   r&  d  s
   
r&  c                   @  sD   e Zd ZU dZded< ded< ddœdd„Zedd d	œd
d„ƒZdS )ÚDeviceBoundSessionKeyz-Unique identifier for a device bound session.r   Úsiter  r   r   c                 C  s   t ƒ }| j|d< | j|d< |S )Nr*  r#  )r7   r*  r  rs   r   r   r   r   �  s    

zDeviceBoundSessionKey.to_jsonr   c                 C  s    | t | d¡ƒt | d¡ƒd�S )Nr*  r#  )r*  r  r‚  r   r   r   r   r   ‡  s    þzDeviceBoundSessionKey.from_jsonNr­   r   r   r   r   r)  y  s   
r)  c                   @  sD   e Zd ZU dZded< ded< ddœdd	„Zedd d
œdd„ƒZdS )ÚDeviceBoundSessionWithUsagez5How a device bound session was used during a request.r)  Úsession_keyr   Úusager   r   c                 C  s"   t ƒ }| j ¡ |d< | j|d< |S )NÚ
sessionKeyr-  )r7   r,  r   r-  rs   r   r   r   r   —  s    
z#DeviceBoundSessionWithUsage.to_jsonr   c                 C  s"   | t  | d¡¡t| d¡ƒd�S )Nr.  r-  )r,  r-  )r)  r   ru   r   r   r   r   r   r   �  s    ÿüz%DeviceBoundSessionWithUsage.from_jsonNr­   r   r   r   r   r+  �  s   
r+  c                   @  sh   e Zd ZU dZded< ded< ded< ded< ded< d	Zd
ed< ddœdd„Zedd dœdd„ƒZd	S )ÚDeviceBoundSessionCookieCravingz(A device bound session's cookie craving.r   r<  r=  r>  r�   rA  r@  NrG  rH  r   r   c                 C  sT   t ƒ }| j|d< | j|d< | j|d< | j|d< | j|d< | jd urP| j ¡ |d< |S )Nr<  r=  r>  rA  rL  rO  )r7   r<  r=  r>  rA  r@  rH  r   rs   r   r   r   r   ·  s    





z'DeviceBoundSessionCookieCraving.to_jsonr   c                 C  sf   | t | d¡ƒt | d¡ƒt | d¡ƒt| d¡ƒt| d¡ƒ| dd ¡d ur^t | d¡¡nd d�S )Nr<  r=  r>  rA  rL  rO  )r<  r=  r>  rA  r@  rH  )r   ru   r�   r<   r   r   r   r   r   r   Â  s    ÿøz)DeviceBoundSessionCookieCraving.from_json)	r    r!   r"   r#   rv   rH  r   r%   r   r   r   r   r   r/  §  s   
r/  c                   @  sL   e Zd ZU dZded< ded< ded< ddœdd	„Zedd d
œdd„ƒZdS )ÚDeviceBoundSessionUrlRulez,A device bound session's inclusion URL rule.r   Ú	rule_typeÚhost_patternÚpath_prefixr   r   c                 C  s(   t ƒ }| j|d< | j|d< | j|d< |S )NÚruleTypeÚhostPatternÚ
pathPrefix)r7   r1  r2  r3  rs   r   r   r   r   ×  s
    


z!DeviceBoundSessionUrlRule.to_jsonr   c                 C  s,   | t | d¡ƒt | d¡ƒt | d¡ƒd�S )Nr4  r5  r6  )r1  r2  r3  r‚  r   r   r   r   r   Þ  s
    ýz#DeviceBoundSessionUrlRule.from_jsonNr­   r   r   r   r   r0  Ð  s   
r0  c                   @  sL   e Zd ZU dZded< ded< ded< dd	œd
d„Zedd dœdd„ƒZdS )Ú DeviceBoundSessionInclusionRulesz)A device bound session's inclusion rules.r   r¡   r�   Úinclude_sitez&typing.List[DeviceBoundSessionUrlRule]Ú	url_rulesr   r   c                 C  s2   t ƒ }| j|d< | j|d< dd„ | jD ƒ|d< |S )Nr¡   ÚincludeSitec                 S  s   g | ]}|  ¡ ‘qS r   r’   r“   r   r   r   r–   õ  rœ   z<DeviceBoundSessionInclusionRules.to_json.<locals>.<listcomp>ÚurlRules)r7   r¡   r8  r9  rs   r   r   r   r   ñ  s
    

z(DeviceBoundSessionInclusionRules.to_jsonr   c                 C  s0   | t | d¡ƒt| d¡ƒdd„ |d D ƒd�S )Nr¡   r:  c                 S  s   g | ]}t  |¡‘qS r   )r0  r   r“   r   r   r   r–   ý  s   ÿz>DeviceBoundSessionInclusionRules.from_json.<locals>.<listcomp>r;  )r¡   r8  r9  r:  r   r   r   r   r   ø  s    þýz*DeviceBoundSessionInclusionRules.from_jsonNr­   r   r   r   r   r7  ç  s   
r7  c                   @  sp   e Zd ZU dZded< ded< ded< ded	< d
ed< ded< dZded< ddœdd„Zedd dœdd„ƒZdS )ÚDeviceBoundSessionzA device bound session.r)  Úkeyr   Úrefresh_urlr7  Úinclusion_rulesz,typing.List[DeviceBoundSessionCookieCraving]Úcookie_cravingsr3   Úexpiry_dater´   Úallowed_refresh_initiatorsNrz   Úcached_challenger   r   c                 C  sz   t ƒ }| j ¡ |d< | j|d< | j ¡ |d< dd„ | jD ƒ|d< | j ¡ |d< dd„ | jD ƒ|d	< | jd urv| j|d
< |S )Nr=  Ú
refreshUrlÚinclusionRulesc                 S  s   g | ]}|  ¡ ‘qS r   r’   r“   r   r   r   r–     rœ   z.DeviceBoundSession.to_json.<locals>.<listcomp>ÚcookieCravingsÚ
expiryDatec                 S  s   g | ]}|‘qS r   r   r“   r   r   r   r–     s   ÚallowedRefreshInitiatorsÚcachedChallenge)	r7   r=  r   r>  r?  r@  rA  rB  rC  rs   r   r   r   r     s    
ÿ


zDeviceBoundSession.to_jsonr   c                 C  sx   | t  | d¡¡t|d ƒt |d ¡dd„ |d D ƒt | d¡¡dd„ |d	 D ƒ| d
d ¡d urpt|d
 ƒnd d�S )Nr=  rD  rE  c                 S  s   g | ]}t  |¡‘qS r   )r/  r   r“   r   r   r   r–   &  s   ÿz0DeviceBoundSession.from_json.<locals>.<listcomp>rF  rG  c                 S  s   g | ]}t |ƒ‘qS r   rÌ   r“   r   r   r   r–   +  s   rH  rI  )r=  r>  r?  r@  rA  rB  rC  )r)  r   ru   r   r7  r3   r   r   r   r   r     s"    
ÿþÿÿðzDeviceBoundSession.from_json)	r    r!   r"   r#   rv   rC  r   r%   r   r   r   r   r   r<    s   
r<  c                      sB   e Zd ZdZddœdd„Zedd dœdd„ƒZ‡ fd	d
„Z‡  ZS )ÚDeviceBoundSessionEventIdz5A unique identifier for a device bound session event.r   r   c                 C  s   | S r   r   r   r   r   r   r   7  s    z!DeviceBoundSessionEventId.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   :  s    z#DeviceBoundSessionEventId.from_jsonc                   s   d  tƒ  ¡ ¡S )NzDeviceBoundSessionEventId({})r'   r   r+   r   r   r*   >  s    z"DeviceBoundSessionEventId.__repr__r-   r   r   r+   r   rJ  4  s
   rJ  c                   @  sB  e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9d8Z:d9Z;d:Z<d;Z=d<Z>d=Z?d>Z@d?ZAd@ZBdAZCdBZDdCZEdDZFdEZGdFdGœdHdI„ZHeIdFd dJœdKdL„ƒZJdMS )NÚDeviceBoundSessionFetchResultz>A fetch result for a device bound session creation or refresh.r  ÚKeyErrorZSigningErrorZServerRequestedTerminationZInvalidSessionIdZInvalidChallengeZTooManyChallengesZInvalidFetcherUrlZInvalidRefreshUrlZTransientHttpErrorZScopeOriginSameSiteMismatchZRefreshUrlSameSiteMismatchZMismatchedSessionIdZMissingScopeZNoCredentialsZ)SubdomainRegistrationWellKnownUnavailableZ!SubdomainRegistrationUnauthorizedZ'SubdomainRegistrationWellKnownMalformedZ#SessionProviderWellKnownUnavailableZ RelyingPartyWellKnownUnavailableZFederatedKeyThumbprintMismatchZInvalidFederatedSessionUrlZInvalidFederatedKeyZTooManyRelyingOriginLabelsZBoundCookieSetForbiddenZNetErrorÚ
ProxyErrorZEmptySessionConfigZInvalidCredentialsConfigZInvalidCredentialsTypeZInvalidCredentialsEmptyNameZInvalidCredentialsCookieZPersistentHttpErrorZRegistrationAttemptedChallengeZInvalidScopeOriginZScopeOriginContainsPathZRefreshInitiatorNotStringZ"RefreshInitiatorInvalidHostPatternZInvalidScopeSpecificationZMissingScopeSpecificationTypeZEmptyScopeSpecificationDomainZEmptyScopeSpecificationPathZInvalidScopeSpecificationTypeZInvalidScopeIncludeSiteZMissingScopeIncludeSiteZ FederatedNotAuthorizedByProviderZ$FederatedNotAuthorizedByRelyingPartyZ!SessionProviderWellKnownMalformedZ)SessionProviderWellKnownHasProviderOriginZRelyingPartyWellKnownMalformedZ&RelyingPartyWellKnownHasRelyingOriginsZ-InvalidFederatedSessionProviderSessionMissingZ*InvalidFederatedSessionWrongProviderOriginZ$InvalidCredentialsCookieCreationTimeZInvalidCredentialsCookieNameZInvalidCredentialsCookieParsingZ,InvalidCredentialsCookieUnpermittedAttributeZ%InvalidCredentialsCookieInvalidDomainZInvalidCredentialsCookiePrefixZInvalidScopeRulePathZInvalidScopeRuleHostPatternZ(ScopeRuleOriginScopedHostPatternMismatchZ&ScopeRuleSiteScopedHostPatternMismatchZSigningQuotaExceededZInvalidConfigJsonZ1InvalidFederatedSessionProviderFailedToRestoreKeyZFailedToUnwrapKeyZSessionDeletedDuringRefreshr   r   c                 C  s   | j S r   r   r   r   r   r   r   §  s    z%DeviceBoundSessionFetchResult.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   ª  s    z'DeviceBoundSessionFetchResult.from_jsonN)Kr    r!   r"   r#   r  Z	KEY_ERRORZSIGNING_ERRORZSERVER_REQUESTED_TERMINATIONZINVALID_SESSION_IDZINVALID_CHALLENGEZTOO_MANY_CHALLENGESZINVALID_FETCHER_URLZINVALID_REFRESH_URLZTRANSIENT_HTTP_ERRORZSCOPE_ORIGIN_SAME_SITE_MISMATCHZREFRESH_URL_SAME_SITE_MISMATCHZMISMATCHED_SESSION_IDZMISSING_SCOPEZNO_CREDENTIALSZ-SUBDOMAIN_REGISTRATION_WELL_KNOWN_UNAVAILABLEZ#SUBDOMAIN_REGISTRATION_UNAUTHORIZEDZ+SUBDOMAIN_REGISTRATION_WELL_KNOWN_MALFORMEDZ'SESSION_PROVIDER_WELL_KNOWN_UNAVAILABLEZ$RELYING_PARTY_WELL_KNOWN_UNAVAILABLEZ!FEDERATED_KEY_THUMBPRINT_MISMATCHZINVALID_FEDERATED_SESSION_URLZINVALID_FEDERATED_KEYZTOO_MANY_RELYING_ORIGIN_LABELSZBOUND_COOKIE_SET_FORBIDDENZ	NET_ERRORZPROXY_ERRORZEMPTY_SESSION_CONFIGZINVALID_CREDENTIALS_CONFIGZINVALID_CREDENTIALS_TYPEZINVALID_CREDENTIALS_EMPTY_NAMEZINVALID_CREDENTIALS_COOKIEZPERSISTENT_HTTP_ERRORZ REGISTRATION_ATTEMPTED_CHALLENGEZINVALID_SCOPE_ORIGINZSCOPE_ORIGIN_CONTAINS_PATHZREFRESH_INITIATOR_NOT_STRINGZ&REFRESH_INITIATOR_INVALID_HOST_PATTERNZINVALID_SCOPE_SPECIFICATIONZ MISSING_SCOPE_SPECIFICATION_TYPEZ EMPTY_SCOPE_SPECIFICATION_DOMAINZEMPTY_SCOPE_SPECIFICATION_PATHZ INVALID_SCOPE_SPECIFICATION_TYPEZINVALID_SCOPE_INCLUDE_SITEZMISSING_SCOPE_INCLUDE_SITEZ$FEDERATED_NOT_AUTHORIZED_BY_PROVIDERZ)FEDERATED_NOT_AUTHORIZED_BY_RELYING_PARTYZ%SESSION_PROVIDER_WELL_KNOWN_MALFORMEDZ/SESSION_PROVIDER_WELL_KNOWN_HAS_PROVIDER_ORIGINZ"RELYING_PARTY_WELL_KNOWN_MALFORMEDZ,RELYING_PARTY_WELL_KNOWN_HAS_RELYING_ORIGINSZ2INVALID_FEDERATED_SESSION_PROVIDER_SESSION_MISSINGZ/INVALID_FEDERATED_SESSION_WRONG_PROVIDER_ORIGINZ(INVALID_CREDENTIALS_COOKIE_CREATION_TIMEZINVALID_CREDENTIALS_COOKIE_NAMEZ"INVALID_CREDENTIALS_COOKIE_PARSINGZ0INVALID_CREDENTIALS_COOKIE_UNPERMITTED_ATTRIBUTEZ)INVALID_CREDENTIALS_COOKIE_INVALID_DOMAINZ!INVALID_CREDENTIALS_COOKIE_PREFIXZINVALID_SCOPE_RULE_PATHZINVALID_SCOPE_RULE_HOST_PATTERNZ.SCOPE_RULE_ORIGIN_SCOPED_HOST_PATTERN_MISMATCHZ,SCOPE_RULE_SITE_SCOPED_HOST_PATTERN_MISMATCHZSIGNING_QUOTA_EXCEEDEDZINVALID_CONFIG_JSONZ8INVALID_FEDERATED_SESSION_PROVIDER_FAILED_TO_RESTORE_KEYZFAILED_TO_UNWRAP_KEYZSESSION_DELETED_DURING_REFRESHr   r%   r   r   r   r   r   rK  B  s®   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrK  c                   @  s`   e Zd ZU dZded< dZded< dZded< dZded	< d
dœdd„Ze	d
d dœdd„ƒZ
dS )ÚDeviceBoundSessionFailedRequestz<Details about a failed device bound session network request.r   rœ  Nrz   Ú	net_errorr¿   Úresponse_errorÚresponse_error_bodyr   r   c                 C  sP   t ƒ }| j|d< | jd ur$| j|d< | jd ur8| j|d< | jd urL| j|d< |S )Nr¡  ÚnetErrorÚresponseErrorÚresponseErrorBody)r7   rœ  rO  rP  rQ  rs   r   r   r   r   ½  s    






z'DeviceBoundSessionFailedRequest.to_jsonr   c                 C  sl   | t |d ƒ| dd ¡d ur(t |d ƒnd | dd ¡d urFt|d ƒnd | dd ¡d urdt |d ƒnd d�S )Nr¡  rR  rS  rT  )rœ  rO  rP  rQ  rš  r   r   r   r   r   È  s    
ÿÿÿöz)DeviceBoundSessionFailedRequest.from_json)r    r!   r"   r#   rv   rO  rP  rQ  r   r%   r   r   r   r   r   rN  ¯  s   
rN  c                   @  sT   e Zd ZU dZded< dZded< dZded< d	d
œdd„Zed	d dœdd„ƒZ	dS )ÚCreationEventDetailsz+Session event details specific to creation.rK  Úfetch_resultNú#typing.Optional[DeviceBoundSession]Únew_sessionú0typing.Optional[DeviceBoundSessionFailedRequest]Úfailed_requestr   r   c                 C  sH   t ƒ }| j ¡ |d< | jd ur,| j ¡ |d< | jd urD| j ¡ |d< |S )NÚfetchResultÚ
newSessionÚfailedRequest)r7   rV  r   rX  rZ  rs   r   r   r   r   ä  s    

zCreationEventDetails.to_jsonr   c                 C  sZ   | t  | d¡¡| dd ¡d ur0t | d¡¡nd | dd ¡d urRt | d¡¡nd d�S )Nr[  r\  r]  )rV  rX  rZ  )rK  r   ru   r<  rN  r   r   r   r   r   í  s    ÿÿýÿõzCreationEventDetails.from_json)
r    r!   r"   r#   rv   rX  rZ  r   r%   r   r   r   r   r   rU  Ø  s   
	rU  c                   @  sh   e Zd ZU dZded< ded< dZded< dZd	ed
< dZded< ddœdd„Ze	dd dœdd„ƒZ
dS )ÚRefreshEventDetailsz*Session event details specific to refresh.r   Úrefresh_resultr�   Úwas_fully_proactive_refreshNz.typing.Optional[DeviceBoundSessionFetchResult]rV  rW  rX  rY  rZ  r   r   c                 C  sf   t ƒ }| j|d< | j|d< | jd ur2| j ¡ |d< | jd urJ| j ¡ |d< | jd urb| j ¡ |d< |S )NÚrefreshResultÚwasFullyProactiveRefreshr[  r\  r]  )r7   r_  r`  rV  r   rX  rZ  rs   r   r   r   r     s    




zRefreshEventDetails.to_jsonr   c              
   C  s†   | t | d¡ƒt| d¡ƒ| dd ¡d ur:t | d¡¡nd | dd ¡d ur\t | d¡¡nd | dd ¡d ur~t | d¡¡nd d�S )Nra  rb  r[  r\  r]  )r_  r`  rV  rX  rZ  )r   ru   r�   rK  r   r<  rN  r   r   r   r   r     s*    ÿýÿýÿýÿízRefreshEventDetails.from_json)r    r!   r"   r#   rv   rV  rX  rZ  r   r%   r   r   r   r   r   r^  þ  s   
r^  c                   @  s<   e Zd ZU dZded< ddœdd„Zedd dœd	d
„ƒZdS )ÚTerminationEventDetailsz.Session event details specific to termination.r   Údeletion_reasonr   r   c                 C  s   t ƒ }| j|d< |S )NÚdeletionReason)r7   rd  rs   r   r   r   r   8  s    
zTerminationEventDetails.to_jsonr   c                 C  s   | t | d¡ƒd�S )Nre  )rd  r‚  r   r   r   r   r   =  s    ÿz!TerminationEventDetails.from_jsonNr­   r   r   r   r   rc  2  s
   
rc  c                   @  sD   e Zd ZU dZded< ded< ddœdd„Zedd d	œd
d„ƒZdS )ÚChallengeEventDetailsz-Session event details specific to challenges.r   Úchallenge_resultÚ	challenger   r   c                 C  s   t ƒ }| j|d< | j|d< |S )NÚchallengeResultrh  )r7   rg  rh  rs   r   r   r   r   L  s    

zChallengeEventDetails.to_jsonr   c                 C  s    | t | d¡ƒt | d¡ƒd�S )Nri  rh  )rg  rh  r‚  r   r   r   r   r   R  s    þzChallengeEventDetails.from_jsonNr­   r   r   r   r   rf  D  s   
rf  c                   @  sx   e Zd ZU 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dœdd„Z
edd dœdd„ƒZdS )ÚLoadNetworkResourcePageResultz:An object providing the result of a network resource load.r�   ÚsuccessNr[   rO  rz   Únet_error_nameÚhttp_status_codez typing.Optional[io.StreamHandle]Ústreamr÷   r�   r   r   c                 C  s€   t ƒ }| j|d< | jd ur$| j|d< | jd ur8| j|d< | jd urL| j|d< | jd urd| j ¡ |d< | jd ur|| j ¡ |d< |S )Nrk  rR  ÚnetErrorNameÚhttpStatusCodern  r�   )r7   rk  rO  rl  rm  rn  r   r�   rs   r   r   r   r   g  s    








z%LoadNetworkResourcePageResult.to_jsonr   c                 C  sº   | t | d¡ƒ| dd ¡d ur,t| d¡ƒnd | dd ¡d urLt| d¡ƒnd | dd ¡d urlt| d¡ƒnd | dd ¡d ur�tj | d¡¡nd | dd ¡d ur²t | d¡¡nd d�S )Nrk  rR  ro  rp  rn  r�   )rk  rO  rl  rm  rn  r�   )r�   ru   r4   r   r	   ÚStreamHandler   r6   r   r   r   r   r   v  s$    ÿÿÿÿÿðz'LoadNetworkResourcePageResult.from_json)r    r!   r"   r#   rv   rO  rl  rm  rn  r�   r   r%   r   r   r   r   r   rj  Z  s   
rj  c                   @  sD   e Zd ZU dZded< ded< ddœdd„Zedd d	œd
d„ƒZdS )ÚLoadNetworkResourceOptionszf
    An options object that may be extended later to better support CORS,
    CORB and streaming.
    r�   Údisable_cacheÚinclude_credentialsr   r   c                 C  s   t ƒ }| j|d< | j|d< |S )NÚdisableCacheÚincludeCredentials)r7   rs  rt  rs   r   r   r   r   •  s    

z"LoadNetworkResourceOptions.to_jsonr   c                 C  s    | t | d¡ƒt | d¡ƒd�S )Nru  rv  )rs  rt  )r�   ru   r   r   r   r   r   ›  s    þz$LoadNetworkResourceOptions.from_jsonNr­   r   r   r   r   rr  Œ  s   
rr  ztyping.List[ContentEncoding]z0typing.Generator[T_JSON_DICT, T_JSON_DICT, None])Ú	encodingsr   c                 c  s,   t ƒ }dd„ | D ƒ|d< d|dœ}|V }dS )z©
    Sets a list of content encodings that will be accepted.
    Empty list means no encoding is accepted.
    :param encodings: List of accepted content encodings.
    c                 S  s   g | ]}|  ¡ ‘qS r   r’   r“   r   r   r   r–   ¬  rœ   z*set_accepted_encodings.<locals>.<listcomp>rw  zNetwork.setAcceptedEncodings©r€   ÚparamsN©r7   )rw  ry  Úcmd_dictr   r   r   r   Úset_accepted_encodings£  s    þr|  r   c                  c  s   ddi} | V }dS )z5Clears accepted encodings set by setAcceptedEncodingsr€   z&Network.clearAcceptedEncodingsOverrideNr   ©r{  r   r   r   r   Ú!clear_accepted_encodings_override´  s    ÿr~  z0typing.Generator[T_JSON_DICT, T_JSON_DICT, bool]c                  c  s   ddi} | V }t |d ƒS )zp
    Tells whether clearing browser cache is supported.
    :returns: True if browser cache can be cleared.
    r€   zNetwork.canClearBrowserCacheÚresult©r�   r}  r   r   r   Úcan_clear_browser_cache¾  s    ÿr�  c                  c  s   ddi} | V }t |d ƒS )zt
    Tells whether clearing browser cookies is supported.
    :returns: True if browser cookies can be cleared.
    r€   zNetwork.canClearBrowserCookiesr  r€  r}  r   r   r   Úcan_clear_browser_cookiesÌ  s    ÿr‚  c                  c  s   ddi} | V }t |d ƒS )z‰
    Tells whether emulation of network conditions is supported.
    :returns: True if emulation of network conditions is supported.
    r€   z#Network.canEmulateNetworkConditionsr  r€  r}  r   r   r   Úcan_emulate_network_conditionsÚ  s    ÿrƒ  c                  c  s   ddi} | V }dS )zClears browser cache.r€   zNetwork.clearBrowserCacheNr   r}  r   r   r   Úclear_browser_cacheè  s    ÿr„  c                  c  s   ddi} | V }dS )zClears browser cookies.r€   zNetwork.clearBrowserCookiesNr   r}  r   r   r   Úclear_browser_cookiesð  s    ÿr…  útyping.Optional[ErrorReason]rz   r÷   z&typing.Optional[AuthChallengeResponse])	Úinterception_idÚerror_reasonÚraw_responser   r€   r…   r�   Úauth_challenge_responser   c                 c  s¢   t ƒ }|  ¡ |d< |dur&| ¡ |d< |dur6||d< |durF||d< |durV||d< |durf||d< |durz| ¡ |d< |durŽ| ¡ |d	< d
|dœ}	|	V }
dS )aæ  
    Response to Network.requestIntercepted
    which either modifies the request to continue with any modifications,
    or blocks it, or completes it with the provided response bytes.
    If a network fetch occurs as a result which encounters a redirect
    an additional Network.requestIntercepted event will be sent with the
    same InterceptionId.
    Deprecated, use Fetch.continueRequest, Fetch.fulfillRequest
    and Fetch.failRequest instead.
    :param interception_id:
    :param error_reason: *(Optional)*
     If set this causes the request to fail with the given reason.
     Passing `Aborted` for requests marked with `isNavigationRequest` also
     cancels the navigation. Must not be set in response to an authChallenge.
    :param raw_response: *(Optional)*
     If set the requests completes using with the provided base64 encoded
     raw response, including HTTP status line and headers etc...
     Must not be set in response to an authChallenge.
     (Encoded as a base64 string when passed over JSON)
    :param url: *(Optional)*
     If set the request url will be modified in a way that's not observable
     by page. Must not be set in response to an authChallenge.
    :param method: *(Optional)*
     If set this allows the request method to be overridden.
     Must not be set in response to an authChallenge.
    :param post_data: *(Optional)*
     If set this allows postData to be set.
     Must not be set in response to an authChallenge.
    :param headers: *(Optional)*
     If set this allows the request headers to be changed.
     Must not be set in response to an authChallenge.
    :param auth_challenge_response: *(Optional)*
     Response to a requestIntercepted with an authChallenge.
     Must not be set otherwise.
    ÚinterceptionIdNZerrorReasonZrawResponser   r€   r�   r�   ZauthChallengeResponsez"Network.continueInterceptedRequestrx  ©r7   r   )r‡  rˆ  r‰  r   r€   r…   r�   rŠ  ry  r{  r   r   r   r   Úcontinue_intercepted_requestú  s(    -þr�  r   rI  )r<  r   r=  r>  rJ  r   c                 c  sf   t ƒ }| |d< |dur||d< |dur.||d< |dur>||d< |durR| ¡ |d< d|dœ}|V }dS )	a¹  
    Deletes browser cookies with matching name and url
    or domain/path/partitionKey pair.
    :param name: Name of the cookies to remove.
    :param url: *(Optional)*
     If specified, deletes all the cookies with the given name where domain
     and path match provided URL.
    :param domain: *(Optional)*
     If specified, deletes only cookies with the exact domain.
    :param path: *(Optional)*
     If specified, deletes only cookies with the exact path.
    :param partition_key: **(EXPERIMENTAL)** *(Optional)*
     If specified, deletes only cookies with the the given name
     and partitionKey where all partition key attributes match
     the cookie partition key attribute.
    r<  Nr   r=  r>  rP  zNetwork.deleteCookiesrx  rŒ  )r<  r   r=  r>  rJ  ry  r{  r   r   r   r   Údelete_cookies>  s    þrŽ  c                  c  s   ddi} | V }dS )z_
    Disables network tracking.
    Prevents network events from being sent to the client.
    r€   zNetwork.disableNr   r}  r   r   r   Údisablef  s    ÿr�  r�   r4   r¼  r[   r¿   r†   )	rÁ  r¹  rº  r»  r½  r¾  r¿  rÀ  r   c                 c  s~   t ƒ }| |d< ||d< ||d< ||d< |dur:| ¡ |d< |durJ||d< |durZ||d< |durj||d	< d
|dœ}	|	V }
dS )a¨  
    Activates emulation of network conditions.
    :param offline: True to emulate internet disconnection.
    :param latency: Minimum latency from request sent to
     response headers received (ms).
    :param download_throughput:
     Maximal aggregated download throughput (bytes/sec).
     -1 disables download throttling.
    :param upload_throughput:
     Maximal aggregated upload throughput (bytes/sec).
     -1 disables upload throttling.
    :param connection_type: *(Optional)* Connection type if known.
    :param packet_loss: **(EXPERIMENTAL)** *(Optional)*
     WebRTC packet loss (percent, 0-100).
     0 disables packet loss emulation, 100 drops all the packets.
    :param packet_queue_length: **(EXPERIMENTAL)** *(Optional)*
     WebRTC packet queue length (packet).
     0 removes any queue length limitations.
    :param packet_reordering: **(EXPERIMENTAL)** *(Optional)*
     WebRTC packetReordering feature.
    rÁ  r¹  rÂ  rÃ  NrÄ  rÅ  rÆ  rÇ  z Network.emulateNetworkConditionsrx  rŒ  )rÁ  r¹  rº  r»  r½  r¾  r¿  rÀ  ry  r{  r   r   r   r   Úemulate_network_conditionsq  s"    þr�  ztyping.List[NetworkConditions]z<typing.Generator[T_JSON_DICT, T_JSON_DICT, typing.List[str]])Úmatched_network_conditionsrÁ  Úemulate_offline_service_workerr   c                 c  sZ   t ƒ }|dur||d< |dur&||d< dd„ | D ƒ|d< d|dœ}|V }d	d„ |d
 D ƒS )aL  
    Activates emulation of network conditions for individual requests using URL
    match patterns. Unlike the deprecated Network.emulateNetworkConditions this
    method does not affect `navigator` state. Use Network.overrideNetworkState
    to explicitly modify ``navigator`` behavior.
    :param offline: **(DEPRECATED)** *(Optional)*
     True to emulate internet disconnection.
     Deprecated, use the offline property in matchedNetworkConditions
     or emulateOfflineServiceWorker instead.
    :param emulate_offline_service_worker: *(Optional)*
     True to emulate offline service worker.
    :param matched_network_conditions:
     Configure conditions for matching requests.
     If multiple entries match a request, the first entry wins.
     Global conditions can be configured by leaving the urlPattern
     for the conditions empty. These global conditions are also applied
     for throttling of p2p connections.
    :returns: An id for each entry in matchedNetworkConditions.
     The id will be included in the requestWillBeSentExtraInfo
     for requests affected by a rule.
    NrÁ  ZemulateOfflineServiceWorkerc                 S  s   g | ]}|  ¡ ‘qS r   r’   r“   r   r   r   r–   Ã  s   z6emulate_network_conditions_by_rule.<locals>.<listcomp>ZmatchedNetworkConditionsz&Network.emulateNetworkConditionsByRulerx  c                 S  s   g | ]}t |ƒ‘qS r   rÌ   r“   r   r   r   r–   Ë  rœ   ZruleIdsrz  )r‘  rÁ  r’  ry  r{  r   r   r   r   Ú"emulate_network_conditions_by_rule¤  s    ÿ
þr“  )rÁ  r¹  rº  r»  r½  r   c                 c  sN   t ƒ }| |d< ||d< ||d< ||d< |dur:| ¡ |d< d|dœ}|V }dS )	a  
    Override the state of navigator.onLine and navigator.connection.
    :param offline: True to emulate internet disconnection.
    :param latency: Minimum latency from request sent
     to response headers received (ms).
    :param download_throughput: Maximal aggregated download throughput
     (bytes/sec). -1 disables download throttling.
    :param upload_throughput: Maximal aggregated upload throughput
     (bytes/sec).  -1 disables upload throttling.
    :param connection_type: *(Optional)* Connection type if known.
    rÁ  r¹  rÂ  rÃ  NrÄ  zNetwork.overrideNetworkStaterx  rŒ  )rÁ  r¹  rº  r»  r½  ry  r{  r   r   r   r   Úoverride_network_stateÎ  s    þr”  )Úmax_total_buffer_sizeÚmax_resource_buffer_sizeÚmax_post_data_sizeÚreport_direct_socket_trafficÚenable_durable_messagesr   c                 c  sj   t ƒ }| dur| |d< |dur&||d< |dur6||d< |durF||d< |durV||d< d|dœ}|V }dS )	aå  
    Enables network tracking.
    (Network events will now be delivered to the client.)
    :param max_total_buffer_size: **(EXPERIMENTAL)** *(Optional)*
    Buffer size in bytes to use when preserving network payloads (XHRs, etc).
    This is the maximum number of bytes
    that will be collected by this DevTools session.
    :param max_resource_buffer_size: **(EXPERIMENTAL)** *(Optional)*
     Per-resource buffer size in bytes to use when preserving network payloads
     (XHRs, etc).
    :param max_post_data_size: *(Optional)* Longest post body size (in bytes)
     that would be included in requestWillBeSent notification
    :param report_direct_socket_traffic: **(EXPERIMENTAL)** *(Optional)*
     Whether DirectSocket chunk send/receive events should be reported.
    :param enable_durable_messages: **(EXPERIMENTAL)** *(Optional)*
     Enable storing response bodies outside of renderer,
     so that these survive a cross-process navigation.
     Requires maxTotalBufferSize to be set. Currently defaults to false.
     This field is being deprecated in favor of the dedicated
     configureDurableMessages command, due to the possibility of deadlocks when
     awaiting Network.enable before issuing Runtime.runIfWaitingForDebugger.
    NÚmaxTotalBufferSizeÚmaxResourceBufferSizeZmaxPostDataSizeZreportDirectSocketTrafficZenableDurableMessageszNetwork.enablerx  rz  )r•  r–  r—  r˜  r™  ry  r{  r   r   r   r   Úenableî  s    þrœ  )r•  r–  r   c                 c  s:   t ƒ }| dur| |d< |dur&||d< d|dœ}|V }dS )aÍ  
    Configures storing response bodies outside of renderer,
    so that these survive a cross-process navigation.
    If maxTotalBufferSize is not set, durable messages are disabled.
    :param max_total_buffer_size: *(Optional)*
     Buffer size in bytes to use when preserving network payloads (XHRs, etc).
    :param max_resource_buffer_size: *(Optional)*
     Per-resource buffer size in bytes to use
     when preserving network payloads (XHRs, etc).
    Nrš  r›  z Network.configureDurableMessagesrx  rz  )r•  r–  ry  r{  r   r   r   r   Úconfigure_durable_messages  s    þr�  z?typing.Generator[T_JSON_DICT, T_JSON_DICT, typing.List[Cookie]]c                  c  s    ddi} | V }dd„ |d D ƒS )zå
    Returns all browser cookies. Depending on the backend support,
    will return detailed cookie information in the ``cookies`` field.
    Deprecated. Use Storage.getCookies instead.
    :returns: Array of cookie objects.
    r€   zNetwork.getAllCookiesc                 S  s   g | ]}t  |¡‘qS r   ©r;  r   r“   r   r   r   r–   D  rœ   z#get_all_cookies.<locals>.<listcomp>Úcookiesr   r}  r   r   r   Úget_all_cookies7  s    
ÿr   )r¡   r   c                 c  s0   t ƒ }| |d< d|dœ}|V }dd„ |d D ƒS )z`
    Returns the DER-encoded certificate.
    :param origin: Origin to get certificate for.
    r¡   zNetwork.getCertificaterx  c                 S  s   g | ]}t |ƒ‘qS r   rÌ   r“   r   r   r   r–   U  rœ   z#get_certificate.<locals>.<listcomp>Z
tableNamesrz  ©r¡   ry  r{  r   r   r   r   Úget_certificateG  s    þr¢  rà   )Úurlsr   c                 c  sB   t ƒ }| dur dd„ | D ƒ|d< d|dœ}|V }dd„ |d D ƒS )	a¥  
    Returns all browser cookies for the current URL.
    Depending on the backend support,
    will return detailed cookie information in the ``cookies`` field.
    :param urls: *(Optional)*
    The list of URLs for which applicable cookies will be fetched.
    If not specified, it's assumed to be set to the list containing
    the URLs of the page and all of its subframes.
    :returns: Array of cookie objects.
    Nc                 S  s   g | ]}|‘qS r   r   r“   r   r   r   r–   g  rœ   zget_cookies.<locals>.<listcomp>r£  zNetwork.getCookiesrx  c                 S  s   g | ]}t  |¡‘qS r   rž  r“   r   r   r   r–   m  rœ   rŸ  rz  )r£  ry  r{  r   r   r   r   Úget_cookiesX  s    þr¤  zCtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[str, bool]])r1  r   c                 c  s>   t ƒ }|  ¡ |d< d|dœ}|V }t| d¡ƒt| d¡ƒfS )a  
    Returns content served for the given request.
    :param request_id: Identifier of the network request to get content for.
    :returns: A tuple with the following items:
        0. **body** - Response body.
        1. **base64Encoded** - True, if content was sent as base64.
    r4  zNetwork.getResponseBodyrx  r"  Úbase64Encoded©r7   r   r   ru   r�   ©r1  ry  r{  r   r   r   r   Úget_response_bodyp  s    
þr¨  c                 c  s>   t ƒ }|  ¡ |d< d|dœ}|V }t| d¡ƒt| d¡ƒfS )a’  
    Returns post data sent with the request.
    Returns an error when no data was sent with the request.
    :param request_id: Identifier of the network request to get content for.
    :returns: A tuple with the following items:
        0. **postData** - Request body string,
            omitting files from multipart requests
        1. **base64Encoded** - True, if content was sent as base64.
    r4  zNetwork.getRequestPostDatarx  r�   r¥  r¦  r§  r   r   r   Úget_request_post_data„  s    þr©  )r‡  r   c                 c  s>   t ƒ }|  ¡ |d< d|dœ}|V }t| d¡ƒt| d¡ƒfS )a?  
    Returns content served for the given currently intercepted request.
    :param interception_id:
     Identifier for the intercepted request to get body for.
    :returns: A tuple with the following items:
        0. **body** - Response body.
        1. **base64Encoded** - True, if content was sent as base64.
    r‹  z&Network.getResponseBodyForInterceptionrx  r"  r¥  r¦  ©r‡  ry  r{  r   r   r   r   Ú"get_response_body_for_interceptionš  s    þr«  z;typing.Generator[T_JSON_DICT, T_JSON_DICT, io.StreamHandle]c                 c  s4   t ƒ }|  ¡ |d< d|dœ}|V }tj | d¡¡S )as  
    Returns a handle to the stream representing the response body.
    Note that after this command, the intercepted request can't be
    continued as is -- you either need to cancel it or to provide
    the response body. The stream only supports sequential read;
    IO.read will fail if the position is specified.
    **EXPERIMENTAL**
    :param interception_id:
    r‹  z/Network.takeResponseBodyForInterceptionAsStreamrx  rn  )r7   r   r	   rq  r   ru   rª  r   r   r   Ú-take_response_body_for_interception_as_stream¯  s    þr¬  c                 c  s&   t ƒ }|  ¡ |d< d|dœ}|V }dS )a=  
    This method sends a new XMLHttpRequest,
    which is identical to the original one.
    The following parameters should be identical:
    method, url, async, request body, extra headers, withCredentials,
    attribute, user, password.
    **EXPERIMENTAL**
    :param request_id: Identifier of XHR to replay.
    r4  zNetwork.replayXHRrx  NrŒ  r§  r   r   r   Ú
replay_xhrÅ  s    þr­  zMtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.List[debugger.SearchMatch]])r1  ÚqueryÚcase_sensitiveÚis_regexr   c                 c  s\   t ƒ }|  ¡ |d< ||d< |dur*||d< |dur:||d< d|dœ}|V }dd	„ |d
 D ƒS )ac  
    Searches for given string in response content.
    :param request_id: Identifier of the network response to search.
    :param query: String to search for.
    :param case_sensitive: *(Optional)* If true, search is case sensitive.
    :param is_regex: *(Optional)* If true, treats string parameter as regex.
    :returns: List of search matches.
    r4  r®  NZcaseSensitiveZisRegexzNetwork.searchInResponseBodyrx  c                 S  s   g | ]}t j |¡‘qS r   )r   ZSearchMatchr   r“   r   r   r   r–   ö  rœ   z+search_in_response_body.<locals>.<listcomp>r  rŒ  )r1  r®  r¯  r°  ry  r{  r   r   r   r   Úsearch_in_response_bodyÚ  s    þr±  z*typing.Optional[typing.List[BlockPattern]])Úurl_patternsr£  r   c                 c  sN   t ƒ }| dur dd„ | D ƒ|d< |dur:dd„ |D ƒ|d< d|dœ}|V }dS )	aF  
    Blocks URLs from loading.
    :param url_patterns: *(Optional)*
    Patterns to match in the order in which they are given.
    These patterns also take precedence over any wildcard patterns
    defined in `urls`.
    :param urls: **(DEPRECATED)** *(Optional)*
    URL patterns to block. Wildcards ('*') are allowed.
    Nc                 S  s   g | ]}|  ¡ ‘qS r   r’   r“   r   r   r   r–     rœ   z$set_blocked_urls.<locals>.<listcomp>ZurlPatternsc                 S  s   g | ]}|‘qS r   r   r“   r   r   r   r–   
  rœ   r£  zNetwork.setBlockedURLsrx  rz  )r²  r£  ry  r{  r   r   r   r   Úset_blocked_urlsù  s    þr³  )Úbypassr   c                 c  s"   t ƒ }| |d< d|dœ}|V }dS )z~
    Toggles ignoring of service worker for each request.
    :param bypass: Bypass service worker and load from network.
    r´  zNetwork.setBypassServiceWorkerrx  Nrz  )r´  ry  r{  r   r   r   r   Úset_bypass_service_worker  s    þrµ  )Úcache_disabledr   c                 c  s"   t ƒ }| |d< d|dœ}|V }dS )zŒ
    Toggles ignoring cache for each request.
    If ``true``, cache will not be used.
    :param cache_disabled: Cache disabled state.
    ZcacheDisabledzNetwork.setCacheDisabledrx  Nrz  )r¶  ry  r{  r   r   r   r   Úset_cache_disabled"  s    þr·  rG  r  r|  r}  )r<  r   r   r=  r>  rA  r@  rH  rF  rC  rD  rE  rJ  r   c                 c  sø   t ƒ }| |d< ||d< |dur&||d< |dur6||d< |durF||d< |durV||d< |durf||d< |durz| ¡ |d	< |durŽ| ¡ |d
< |	dur¢|	 ¡ |d< |
dur¶|
 ¡ |d< |durÆ||d< |durÚ| ¡ |d< d|dœ}|V }t| d¡ƒS )aÀ  
    Sets a cookie with the given cookie data.
    (May overwrite equivalent cookies if they exist.)
    :param name: Cookie name.
    :param value: Cookie value.
    :param url: *(Optional)*
     The request-URI to associate with the setting of the cookie.
     This value can affect the default domain, path, source port,
     and source scheme values of the created cookie.
    :param domain: *(Optional)* Cookie domain.
    :param path: *(Optional)* Cookie path.
    :param secure: *(Optional)* True if cookie is secure.
    :param http_only: *(Optional)* True if cookie is http-only.
    :param same_site: *(Optional)* Cookie SameSite type.
    :param expires: *(Optional)*
     Cookie expiration date, session cookie if not set
    :param priority: **(EXPERIMENTAL)** *(Optional)* Cookie Priority type.
    :param source_scheme: **(EXPERIMENTAL)** *(Optional)*
     Cookie source scheme type.
    :param source_port: **(EXPERIMENTAL)** *(Optional)*
     Cookie source port.
     Valid values are {-1, [1, 65535]}, -1 indicates an unspecified port.
     An unspecified port value allows protocol clients to emulate legacy
     cookie scope for the port. This is a temporary ability
     and it will be removed in the future.
    :param partition_key: **(EXPERIMENTAL)** *(Optional)* Cookie partition key.
     If not set, the cookie will be set as not partitioned.
    :returns: Always set to true.
     If an error occurs, the response indicates protocol error.
    r<  r   Nr   r=  r>  rA  rL  rO  rF  rC  rM  rN  rP  zNetwork.setCookierx  rk  )r7   r   r�   ru   )r<  r   r   r=  r>  rA  r@  rH  rF  rC  rD  rE  rJ  ry  r{  r   r   r   r   Ú
set_cookie3  s<    -þr¸  ztyping.List[CookieParam])rŸ  r   c                 c  s,   t ƒ }dd„ | D ƒ|d< d|dœ}|V }dS )zD
    Sets given cookies.
    :param cookies: Cookies to be set.
    c                 S  s   g | ]}|  ¡ ‘qS r   r’   r“   r   r   r   r–   ‰  rœ   zset_cookies.<locals>.<listcomp>rŸ  zNetwork.setCookiesrx  Nrz  )rŸ  ry  r{  r   r   r   r   Úset_cookies�  s    þr¹  )r�   r   c                 c  s&   t ƒ }|  ¡ |d< d|dœ}|V }dS )z”
    Specifies whether to always send extra HTTP headers with the requests
    from this page.
    :param headers: Map with extra HTTP headers.
    r�   zNetwork.setExtraHTTPHeadersrx  NrŒ  )r�   ry  r{  r   r   r   r   Úset_extra_http_headers‘  s    þrº  )Úenabledr   c                 c  s"   t ƒ }| |d< d|dœ}|V }dS )z˜
    Specifies whether to attach a page script stack id in requests
    :param enabled: Whether to attach a page script stack for debugging purpose
    r»  zNetwork.setAttachDebugStackrx  Nrz  )r»  ry  r{  r   r   r   r   Úset_attach_debug_stack¢  s    þr¼  ztyping.List[RequestPattern])Úpatternsr   c                 c  s,   t ƒ }dd„ | D ƒ|d< d|dœ}|V }dS )a0  
    Sets the requests to intercept that match the provided patterns
    and optionally resource types.
    Deprecated, please use Fetch.enable instead.
    :param patterns: Requests matching any of these patterns will be forwarded
    and wait for the corresponding continueInterceptedRequest call.
    c                 S  s   g | ]}|  ¡ ‘qS r   r’   r“   r   r   r   r–   ½  rœ   z,set_request_interception.<locals>.<listcomp>r½  zNetwork.setRequestInterceptionrx  Nrz  )r½  ry  r{  r   r   r   r   Úset_request_interception²  s    
þr¾  z,typing.Optional[emulation.UserAgentMetadata])Ú
user_agentÚaccept_languageÚplatformÚuser_agent_metadatar   c                 c  sV   t ƒ }| |d< |dur||d< |dur.||d< |durB| ¡ |d< d|dœ}|V }dS )a’  
    Allows overriding user agent with the given string.
    :param user_agent: User agent to use.
    :param accept_language: *(Optional)* Browser language to emulate.
    :param platform: *(Optional)*
     The platform navigator.platform should return.
    :param user_agent_metadata: **(EXPERIMENTAL)** *(Optional)*
     To be sent in Sec-CH-UA-* headers and returned in navigator.userAgentData
    Z	userAgentNZacceptLanguagerÁ  ZuserAgentMetadatazNetwork.setUserAgentOverriderx  rŒ  )r¿  rÀ  rÁ  rÂ  ry  r{  r   r   r   r   Úset_user_agent_overrideÅ  s    þrÃ  z/typing.Generator[T_JSON_DICT, T_JSON_DICT, str]c                 c  s0   t ƒ }|  ¡ |d< d|dœ}|V }t| d¡ƒS )at  
    Enables streaming of the response for the given requestId.
    If enabled, the dataReceived event contains the data
    that was received during streaming.
    **EXPERIMENTAL**
    :param request_id: Identifier of the request to stream.
    :returns: Data that has been buffered until streaming is enabled.
     (Encoded as a base64 string when passed over JSON)
    r4  zNetwork.streamResourceContentrx  ZbufferedData)r7   r   r   ru   r§  r   r   r   Ústream_resource_contentã  s    þrÄ  útyping.Optional[page.FrameId]zCtyping.Generator[T_JSON_DICT, T_JSON_DICT, SecurityIsolationStatus])Úframe_idr   c                 c  s:   t ƒ }| dur|  ¡ |d< d|dœ}|V }t | d¡¡S )z¿
    Returns information about the COEP/COOP isolation status.
    **EXPERIMENTAL**
    :param frame_id: *(Optional)*
    If no frameId is provided, the status of the target is provided.
    NÚframeIdz"Network.getSecurityIsolationStatusrx  r    )r7   r   r  r   ru   )rÆ  ry  r{  r   r   r   r   Úget_security_isolation_statusù  s    	þrÈ  )rœ  r   c                 c  s"   t ƒ }| |d< d|dœ}|V }dS )a,  
    Enables tracking for the Reporting API.
    Events generated by the Reporting API will now be delivered to the client.
    Enabling triggers 'reportingApiReportAdded' for all existing reports.
    **EXPERIMENTAL**
    :param enable: Whether to enable or disable events for the Reporting API
    rœ  zNetwork.enableReportingApirx  Nrz  ©rœ  ry  r{  r   r   r   r   Úenable_reporting_api  s    
þrÊ  c                 c  s"   t ƒ }| |d< d|dœ}|V }dS )z•
    Sets up tracking device bound sessions and fetching
    of initial set of sessions.
    :param enable: Whether to enable or disable events.
    rœ  z!Network.enableDeviceBoundSessionsrx  Nrz  rÉ  r   r   r   Úenable_device_bound_sessions   s    þrË  c                 c  s*   t ƒ }| |d< d|dœ}|V }t|d ƒS )zŽ
    Fetches the schemeful site for a specific origin.
    :param origin: The URL origin.
    :returns: The corresponding schemeful site.
    r¡   zNetwork.fetchSchemefulSiterx  ZschemefulSite)r7   r   r¡  r   r   r   Úfetch_schemeful_site1  s    þrÌ  zItyping.Generator[T_JSON_DICT, T_JSON_DICT, LoadNetworkResourcePageResult])r   ÚoptionsrÆ  r   c                 c  sN   t ƒ }|dur| ¡ |d< | |d< | ¡ |d< d|dœ}|V }t | d¡¡S )a,  
    Fetches the resource and returns the content.
    :param frame_id: *(Optional)* Frame id to get the resource for.
     Mandatory for frame targets, and should be omitted for worker targets.
    :param url: URL of the resource to get content for.
    :param options: Options for the request.
    NrÇ  r   rÍ  zNetwork.loadNetworkResourcerx  Úresource)r7   r   rj  r   ru   )r   rÍ  rÆ  ry  r{  r   r   r   r   Úload_network_resourceC  s    þrÏ  )Ú%enable_third_party_cookie_restrictionr   c                 c  s"   t ƒ }| |d< d|dœ}|V }dS )zÜ
    Sets Controls for third-party cookie access
    Page reload is required before the new cookie behavior will be observed
    :param enable_third_party_cookie_restriction:
     Whether 3pc restriction is enabled.
    Z!enableThirdPartyCookieRestrictionzNetwork.setCookieControlsrx  Nrz  )rÐ  ry  r{  r   r   r   r   Úset_cookie_controls\  s    	þÿþrÑ  zNetwork.dataReceivedc                   @  sN   e Zd ZU dZded< ded< ded< ded< d	ed
< edd dœdd„ƒZdS )ÚDataReceivedz4Fired when data chunk was received over the network.r/   r1  r5   r¤   rÍ   Údata_lengthrô   rz   rå  r   r   c              	   C  s\   | t  | d¡¡t | d¡¡t| d¡ƒt| d¡ƒ| dd ¡d urTt| d¡ƒnd d�S )Nr4  r¤   Z
dataLengthr  rå  )r1  r¤   rÓ  rô   rå  )r/   r   ru   r5   rÍ   r   r   r   r   r   r   �  s    ÿøzDataReceived.from_jsonN©r    r!   r"   r#   rv   r%   r   r   r   r   r   rÒ  p  s   
rÒ  z"Network.eventSourceMessageReceivedc                   @  sN   e Zd ZU dZded< ded< ded< ded< ded	< ed
d dœdd„ƒZdS )ÚEventSourceMessageReceivedz+Fired when EventSource message is received.r/   r1  r5   r¤   r   Ú
event_nameÚevent_idrå  r   r   c              	   C  sH   | t  | d¡¡t | d¡¡t| d¡ƒt| d¡ƒt| d¡ƒd�S )Nr4  r¤   Z	eventNameÚeventIdrå  )r1  r¤   rÖ  r×  rå  ©r/   r   ru   r5   r   r   r   r   r   r   Ÿ  s    ûz$EventSourceMessageReceived.from_jsonNrÔ  r   r   r   r   rÕ  �  s   
rÕ  zNetwork.loadingFailedc                   @  s^   e Zd ZU dZded< ded< ded< ded	< d
ed< ded< ded< edd dœdd„ƒZdS )ÚLoadingFailedz+Fired when HTTP request has failed to load.r/   r1  r5   r¤   r   r&  r   Ú
error_textr†   Úcanceledztyping.Optional[BlockedReason]Úblocked_reasonz typing.Optional[CorsErrorStatus]Úcors_error_statusr   r   c                 C  s¢   | t  | d¡¡t | d¡¡t | d¡¡t| d¡ƒ| dd ¡d urVt| d¡ƒnd | dd ¡d urxt | d¡¡nd | dd ¡d uršt | d¡¡nd d�S )	Nr4  r¤   r*  Z	errorTextrÜ  ZblockedReasonZcorsErrorStatus)r1  r¤   r&  rÛ  rÜ  rÝ  rÞ  )	r/   r   ru   r5   r   r   r�   rÐ   rÔ   r   r   r   r   r   ¾  s    ÿÿÿîzLoadingFailed.from_jsonNrÔ  r   r   r   r   rÚ  ª  s   
rÚ  zNetwork.loadingFinishedc                   @  s>   e Zd ZU dZded< ded< ded< edd d	œd
d„ƒZdS )ÚLoadingFinishedz-Fired when HTTP request has finished loading.r/   r1  r5   r¤   r4   rô   r   r   c                 C  s0   | t  | d¡¡t | d¡¡t| d¡ƒd�S )Nr4  r¤   r  )r1  r¤   rô   )r/   r   ru   r5   r4   r   r   r   r   r   â  s
    ýzLoadingFinished.from_jsonNrÔ  r   r   r   r   rß  ×  s   
rß  zNetwork.requestInterceptedc                   @  s†   e Zd ZU dZded< ded< ded< ded	< d
ed< ded< ded< ded< ded< ded< ded< ded< edd dœdd„ƒZdS )ÚRequestInterceptedz¶
    **EXPERIMENTAL**
    Details of an intercepted HTTP request,
    which must be either allowed, blocked, modified or mocked.
    Deprecated, use Fetch.requestPaused instead.
    r0   r‡  r~   Úrequestzpage.FrameIdrÆ  r   rŠ  r�   Úis_navigation_requestr†   Úis_downloadrz   Úredirect_urlztyping.Optional[AuthChallenge]Úauth_challenger†  Úresponse_error_reasonr¿   Úresponse_status_coder÷   rž  r0  r1  r   r   c                 C  s:  | t  | d¡¡t | d¡¡tj | d¡¡t | d¡¡t| d¡ƒ| dd ¡d urft| d¡ƒnd | dd ¡d ur†t| d¡ƒnd | dd ¡d ur¨t	 | d¡¡nd | d	d ¡d urÊt
 | d	¡¡nd | d
d ¡d urêt| d
¡ƒnd | dd ¡d u�rt | d¡¡nd | dd ¡d u�r2t | d¡¡nd d�S )Nr‹  rá  rÇ  r�  ZisNavigationRequestZ
isDownloadZredirectUrlZauthChallengeZresponseErrorReasonZresponseStatusCoder£  r4  )r‡  rá  rÆ  rŠ  râ  rã  rä  rå  ræ  rç  rž  r1  )r0   r   ru   r~   r
   ÚFrameIdr   r�   r   r~  r1   rÍ   r6   r/   r   r   r   r   r     s<    ÿÿÿÿÿÿÿÿ×zRequestIntercepted.from_jsonNrÔ  r   r   r   r   rà  ë  s   
rà  zNetwork.requestServedFromCachec                   @  s.   e Zd ZU dZded< edd dœdd„ƒZdS )	ÚRequestServedFromCachez-Fired if request ended up loading from cache.r/   r1  r   r   c                 C  s   | t  | d¡¡d�S )Nr4  )r1  )r/   r   ru   r   r   r   r   r   P  s    z RequestServedFromCache.from_jsonNrÔ  r   r   r   r   ré  I  s   
ré  zNetwork.requestWillBeSentc                   @  sŽ   e Zd ZU dZded< ded< ded< ded	< d
ed< ded< ded< ded< ded< ded< ded< ded< ded< edd dœdd„ƒZd S )!ÚRequestWillBeSentz.Fired when page is about to send HTTP request.r/   r1  r&   Ú	loader_idr   Údocument_urlr~   rá  r5   r¤   r3   Ú	wall_timer,  Ú	initiatorr�   Úredirect_has_extra_infor(  Úredirect_responser‰  r&  rÅ  rÆ  r†   Úhas_user_gesturez'typing.Optional[RenderBlockingBehavior]Úrender_blocking_behaviorr   r   c                 C  s   | t  | d¡¡t | d¡¡t| d¡ƒt | d¡¡t | d¡¡t | d¡¡t | d¡¡t	| d¡ƒ| d	d ¡d urŽt
 | d	¡¡nd | d
d ¡d ur°t | d
¡¡nd | dd ¡d urÔtj | d¡¡nd | dd ¡d urôt	| d¡ƒnd | dd ¡d u�rt | d¡¡nd d�S )Nr4  ÚloaderIdZdocumentURLrá  r¤   ÚwallTimerî  ZredirectHasExtraInfoZredirectResponser*  rÇ  ZhasUserGestureZrenderBlockingBehavior)r1  rë  rì  rá  r¤   rí  rî  rï  rð  r&  rÆ  rñ  rò  )r/   r   ru   r&   r   r~   r5   r3   r,  r�   rî   r   r
   rè  rx   r   r   r   r   r   w  s6    ÿÿÿÿýÿçzRequestWillBeSent.from_jsonNrÔ  r   r   r   r   rê  U  s    
rê  zNetwork.resourceChangedPriorityc                   @  s>   e Zd ZU dZded< ded< ded< edd d	œd
d„ƒZdS )ÚResourceChangedPriorityz/Fired when resource loading priority is changedr/   r1  rw   Únew_priorityr5   r¤   r   r   c                 C  s2   | t  | d¡¡t | d¡¡t | d¡¡d�S )Nr4  ZnewPriorityr¤   )r1  rö  r¤   )r/   r   ru   rw   r5   r   r   r   r   r   ¡  s
    ýz!ResourceChangedPriority.from_jsonNrÔ  r   r   r   r   rõ  –  s   
rõ  zNetwork.signedExchangeReceivedc                   @  s6   e Zd ZU dZded< ded< edd dœdd	„ƒZd
S )ÚSignedExchangeReceivedz;Fired when a signed exchange was received over the network.r/   r1  r­  Úinfor   r   c                 C  s$   | t  | d¡¡t | d¡¡d�S )Nr4  rø  )r1  rø  )r/   r   ru   r­  r   r   r   r   r   ³  s    þz SignedExchangeReceived.from_jsonNrÔ  r   r   r   r   r÷  ª  s
   
r÷  zNetwork.responseReceivedc                   @  s^   e Zd ZU dZded< ded< ded< ded	< d
ed< ded< ded< edd dœdd„ƒZdS )ÚResponseReceivedz&Fired when HTTP response is available.r/   r1  r&   rë  r5   r¤   r   r&  rî   r)  r�   r¯  rÅ  rÆ  r   r   c                 C  s~   | t  | d¡¡t | d¡¡t | d¡¡t | d¡¡t | d¡¡t| d¡ƒ| dd ¡d urvtj	 | d¡¡nd d�S )	Nr4  ró  r¤   r*  r)  r³  rÇ  )r1  rë  r¤   r&  r)  r¯  rÆ  )
r/   r   ru   r&   r5   r   rî   r�   r
   rè  r   r   r   r   r   Ð  s    ÿözResponseReceived.from_jsonNrÔ  r   r   r   r   rù  »  s   
rù  zNetwork.webSocketClosedc                   @  s6   e Zd ZU dZded< ded< edd dœdd	„ƒZd
S )ÚWebSocketClosedzFired when WebSocket is closed.r/   r1  r5   r¤   r   r   c                 C  s$   | t  | d¡¡t | d¡¡d�S )Nr4  r¤   )r1  r¤   ©r/   r   ru   r5   r   r   r   r   r   ê  s    þzWebSocketClosed.from_jsonNrÔ  r   r   r   r   rú  á  s
   
rú  zNetwork.webSocketCreatedc                   @  s>   e Zd ZU dZded< ded< ded< edd d	œd
d„ƒZdS )ÚWebSocketCreatedzFired upon WebSocket creation.r/   r1  r   r   útyping.Optional[Initiator]rî  r   r   c                 C  sB   | t  | d¡¡t|d ƒ| dd ¡d ur:t | d¡¡nd d�S )Nr4  r   rî  )r1  r   rî  )r/   r   ru   r   r,  r   r   r   r   r   ý  s    
ÿûzWebSocketCreated.from_jsonNrÔ  r   r   r   r   rü  ò  s   
rü  zNetwork.webSocketFrameErrorc                   @  s>   e Zd ZU dZded< ded< ded< edd d	œd
d„ƒZdS )ÚWebSocketFrameErrorz*Fired when WebSocket message error occurs.r/   r1  r5   r¤   r   Úerror_messager   r   c                 C  s.   | t  | d¡¡t | d¡¡t|d ƒd�S )Nr4  r¤   ÚerrorMessage)r1  r¤   rÿ  rÙ  r   r   r   r   r     s
    
ýzWebSocketFrameError.from_jsonNrÔ  r   r   r   r   rþ    s   
rþ  zNetwork.webSocketFrameReceivedc                   @  s>   e Zd ZU dZded< ded< ded< edd d	œd
d„ƒZdS )ÚWebSocketFrameReceivedz)Fired when WebSocket message is received.r/   r1  r5   r¤   r   r)  r   r   c                 C  s2   | t  | d¡¡t | d¡¡t | d¡¡d�S ©Nr4  r¤   r)  )r1  r¤   r)  ©r/   r   ru   r5   r   r   r   r   r   r   '  s
    ýz WebSocketFrameReceived.from_jsonNrÔ  r   r   r   r   r    s   
r  zNetwork.webSocketFrameSentc                   @  s>   e Zd ZU dZded< ded< ded< edd d	œd
d„ƒZdS )ÚWebSocketFrameSentz%Fired when WebSocket message is sent.r/   r1  r5   r¤   r   r)  r   r   c                 C  s2   | t  | d¡¡t | d¡¡t | d¡¡d�S r  r  r   r   r   r   r   ;  s
    ýzWebSocketFrameSent.from_jsonNrÔ  r   r   r   r   r  0  s   
r  z*Network.webSocketHandshakeResponseReceivedc                   @  s>   e Zd ZU dZded< ded< ded< edd d	œd
d„ƒZdS )Ú"WebSocketHandshakeResponseReceivedz:Fired when WebSocket handshake response becomes available.r/   r1  r5   r¤   r  r)  r   r   c                 C  s2   | t  | d¡¡t | d¡¡t | d¡¡d�S r  )r/   r   ru   r5   r  r   r   r   r   r   O  s
    ýz,WebSocketHandshakeResponseReceived.from_jsonNrÔ  r   r   r   r   r  D  s   
r  z)Network.webSocketWillSendHandshakeRequestc                   @  sF   e Zd ZU dZded< ded< ded< ded	< ed
d dœdd„ƒZdS )Ú!WebSocketWillSendHandshakeRequestz4Fired when WebSocket is about to initiate handshake.r/   r1  r5   r¤   r3   rí  r  rá  r   r   c              	   C  s@   | t  | d¡¡t | d¡¡t | d¡¡t | d¡¡d�S )Nr4  r¤   rô  rá  )r1  r¤   rí  rá  )r/   r   ru   r5   r3   r  r   r   r   r   r   g  s    üz+WebSocketWillSendHandshakeRequest.from_jsonNrÔ  r   r   r   r   r  Z  s   
r  zNetwork.webTransportCreatedc                   @  sF   e Zd ZU dZded< ded< ded< ded	< ed
d dœdd„ƒZdS )ÚWebTransportCreatedz!Fired upon WebTransport creation.r/   Útransport_idr   r   r5   r¤   rý  rî  r   r   c              	   C  sR   | t  | d¡¡t| d¡ƒt | d¡¡| dd ¡d urJt | d¡¡nd d�S )NÚtransportIdr   r¤   rî  )r  r   r¤   rî  )r/   r   ru   r   r5   r,  r   r   r   r   r   ~  s    ÿúzWebTransportCreated.from_jsonNrÔ  r   r   r   r   r  q  s   
r  z)Network.webTransportConnectionEstablishedc                   @  s6   e Zd ZU dZded< ded< edd dœdd	„ƒZd
S )Ú!WebTransportConnectionEstablishedz.Fired when WebTransport handshake is finished.r/   r  r5   r¤   r   r   c                 C  s$   | t  | d¡¡t | d¡¡d�S ©Nr	  r¤   )r  r¤   rû  r   r   r   r   r   “  s    þz+WebTransportConnectionEstablished.from_jsonNrÔ  r   r   r   r   r
  Š  s
   
r
  zNetwork.webTransportClosedc                   @  s6   e Zd ZU dZded< ded< edd dœdd	„ƒZd
S )ÚWebTransportClosedz$Fired when WebTransport is disposed.r/   r  r5   r¤   r   r   c                 C  s$   | t  | d¡¡t | d¡¡d�S r  rû  r   r   r   r   r   ¤  s    þzWebTransportClosed.from_jsonNrÔ  r   r   r   r   r  ›  s
   
r  zNetwork.directTCPSocketCreatedc                   @  sV   e Zd ZU dZded< ded< ded< ded	< d
ed< ded< edd dœdd„ƒZdS )ÚDirectTCPSocketCreatedz,Fired upon direct_socket.TCPSocket creation.r/   Ú
identifierr   rØ  rÍ   rû   rË  rÍ  r5   r¤   rý  rî  r   r   c              
   C  s`   | t  |d ¡t|d ƒt|d ƒt |d ¡t |d ¡| dd ¡d urXt |d ¡nd d�S )Nr  rÞ  r  rÍ  r¤   rî  )r  rØ  rû   rÍ  r¤   rî  )r/   r   r   rÍ   rË  r5   ru   r,  r   r   r   r   r   ¸  s    

ÿøz DirectTCPSocketCreated.from_jsonNrÔ  r   r   r   r   r  ¬  s   
r  zNetwork.directTCPSocketOpenedc                   @  sV   e Zd ZU dZded< ded< ded< ded	< d
ed< ded< edd dœdd„ƒZdS )ÚDirectTCPSocketOpenedz8Fired when direct_socket.TCPSocket connection is opened.r/   r  r   rØ  rÍ   rû   r5   r¤   rz   rÙ  r¿   rÚ  r   r   c              
   C  sp   | t  |d ¡t|d ƒt|d ƒt |d ¡| dd ¡d urJt|d ƒnd | dd ¡d urht|d ƒnd d�S )Nr  rÞ  r  r¤   rß  rà  )r  rØ  rû   r¤   rÙ  rÚ  ©r/   r   r   rÍ   r5   ru   r   r   r   r   r   Ó  s    

ÿÿözDirectTCPSocketOpened.from_jsonNrÔ  r   r   r   r   r  Æ  s   
r  zNetwork.directTCPSocketAbortedc                   @  s>   e Zd ZU dZded< ded< ded< edd d	œd
d„ƒZdS )ÚDirectTCPSocketAbortedz.Fired when direct_socket.TCPSocket is aborted.r/   r  r   rÿ  r5   r¤   r   r   c                 C  s*   | t  |d ¡t|d ƒt |d ¡d�S ©Nr  r   r¤   )r  rÿ  r¤   ©r/   r   r   r5   r   r   r   r   r   ë  s
    
ýz DirectTCPSocketAborted.from_jsonNrÔ  r   r   r   r   r  ã  s   
r  zNetwork.directTCPSocketClosedc                   @  s6   e Zd ZU dZded< ded< edd dœdd	„ƒZd
S )ÚDirectTCPSocketClosedz-Fired when direct_socket.TCPSocket is closed.r/   r  r5   r¤   r   r   c                 C  s    | t  |d ¡t |d ¡d�S ©Nr  r¤   )r  r¤   ©r/   r   r5   r   r   r   r   r   û  s    þzDirectTCPSocketClosed.from_jsonNrÔ  r   r   r   r   r  ô  s
   
r  z Network.directTCPSocketChunkSentc                   @  s>   e Zd ZU dZded< ded< ded< edd d	œd
d„ƒZdS )ÚDirectTCPSocketChunkSentz4Fired when data is sent to tcp direct socket stream.r/   r  r   rå  r5   r¤   r   r   c                 C  s*   | t  |d ¡t|d ƒt |d ¡d�S ©Nr  rå  r¤   )r  rå  r¤   r  r   r   r   r   r     s
    
ýz"DirectTCPSocketChunkSent.from_jsonNrÔ  r   r   r   r   r    s   
r  z$Network.directTCPSocketChunkReceivedc                   @  s>   e Zd ZU dZded< ded< ded< edd d	œd
d„ƒZdS )ÚDirectTCPSocketChunkReceivedz:Fired when data is received from tcp direct socket stream.r/   r  r   rå  r5   r¤   r   r   c                 C  s*   | t  |d ¡t|d ƒt |d ¡d�S r  r  r   r   r   r   r     s
    
ýz&DirectTCPSocketChunkReceived.from_jsonNrÔ  r   r   r   r   r    s   
r  z+Network.directUDPSocketJoinedMulticastGroupc                   @  s2   e Zd ZU ded< ded< edd dœdd„ƒZd	S )
Ú#DirectUDPSocketJoinedMulticastGroupr/   r  r   Ú
ip_addressr   r   c                 C  s   | t  |d ¡t|d ƒd�S ©Nr  Z	IPAddress)r  r  ©r/   r   r   r   r   r   r   r   +  s    
þz-DirectUDPSocketJoinedMulticastGroup.from_jsonN©r    r!   r"   rv   r%   r   r   r   r   r   r  %  s   
r  z)Network.directUDPSocketLeftMulticastGroupc                   @  s2   e Zd ZU ded< ded< edd dœdd„ƒZd	S )
Ú!DirectUDPSocketLeftMulticastGroupr/   r  r   r  r   r   c                 C  s   | t  |d ¡t|d ƒd�S r  r  r   r   r   r   r   ;  s    
þz+DirectUDPSocketLeftMulticastGroup.from_jsonNr  r   r   r   r   r  5  s   
r  zNetwork.directUDPSocketCreatedc                   @  sF   e Zd ZU dZded< ded< ded< ded	< ed
d dœdd„ƒZdS )ÚDirectUDPSocketCreatedz,Fired upon direct_socket.UDPSocket creation.r/   r  r×  rÍ  r5   r¤   rý  rî  r   r   c                 C  sL   | t  |d ¡t |d ¡t |d ¡| dd ¡d urDt |d ¡nd d�S )Nr  rÍ  r¤   rî  )r  rÍ  r¤   rî  )r/   r   r×  r5   ru   r,  r   r   r   r   r   L  s    ÿúz DirectUDPSocketCreated.from_jsonNrÔ  r   r   r   r   r   C  s   
r   zNetwork.directUDPSocketOpenedc                   @  sV   e Zd ZU dZded< ded< ded< ded	< d
ed< ded< edd dœdd„ƒZdS )ÚDirectUDPSocketOpenedz8Fired when direct_socket.UDPSocket connection is opened.r/   r  r   rÙ  rÍ   rÚ  r5   r¤   rz   rØ  r¿   rû   r   r   c              
   C  sp   | t  |d ¡t|d ƒt|d ƒt |d ¡| dd ¡d urJt|d ƒnd | dd ¡d urht|d ƒnd d�S )Nr  rß  rà  r¤   rÞ  r  )r  rÙ  rÚ  r¤   rØ  rû   r  r   r   r   r   r   e  s    

ÿÿözDirectUDPSocketOpened.from_jsonNrÔ  r   r   r   r   r!  X  s   
r!  zNetwork.directUDPSocketAbortedc                   @  s>   e Zd ZU dZded< ded< ded< edd d	œd
d„ƒZdS )ÚDirectUDPSocketAbortedz.Fired when direct_socket.UDPSocket is aborted.r/   r  r   rÿ  r5   r¤   r   r   c                 C  s*   | t  |d ¡t|d ƒt |d ¡d�S r  r  r   r   r   r   r   }  s
    
ýz DirectUDPSocketAborted.from_jsonNrÔ  r   r   r   r   r"  u  s   
r"  zNetwork.directUDPSocketClosedc                   @  s6   e Zd ZU dZded< ded< edd dœdd	„ƒZd
S )ÚDirectUDPSocketClosedz-Fired when direct_socket.UDPSocket is closed.r/   r  r5   r¤   r   r   c                 C  s    | t  |d ¡t |d ¡d�S r  r  r   r   r   r   r   �  s    þzDirectUDPSocketClosed.from_jsonNrÔ  r   r   r   r   r#  †  s
   
r#  z Network.directUDPSocketChunkSentc                   @  s>   e Zd ZU dZded< ded< ded< edd d	œd
d„ƒZdS )ÚDirectUDPSocketChunkSentz7Fired when message is sent to udp direct socket stream.r/   r  rä  r¨  r5   r¤   r   r   c                 C  s,   | t  |d ¡t |d ¡t |d ¡d�S ©Nr  r¨  r¤   )r  r¨  r¤   ©r/   r   rä  r5   r   r   r   r   r   �  s
    ýz"DirectUDPSocketChunkSent.from_jsonNrÔ  r   r   r   r   r$  •  s   
r$  z$Network.directUDPSocketChunkReceivedc                   @  s>   e Zd ZU dZded< ded< ded< edd d	œd
d„ƒZdS )ÚDirectUDPSocketChunkReceivedz=Fired when message is received from udp direct socket stream.r/   r  rä  r¨  r5   r¤   r   r   c                 C  s,   | t  |d ¡t |d ¡t |d ¡d�S r%  r&  r   r   r   r   r   ®  s
    ýz&DirectUDPSocketChunkReceived.from_jsonNrÔ  r   r   r   r   r'  ¦  s   
r'  z"Network.requestWillBeSentExtraInfoc                   @  sf   e Zd ZU dZded< ded< ded< ded	< d
ed< ded< ded< ded< edd dœdd„ƒZdS )ÚRequestWillBeSentExtraInfoa_  
    Fired when additional information about a requestWillBeSent event
    is available from the network stack. Not every requestWillBeSent event
    will have an additional requestWillBeSentExtraInfo fired for it,
    and there is no guarantee whether requestWillBeSent
    or requestWillBeSentExtraInfo will be fired first for the same request.
    r/   r1  ztyping.List[AssociatedCookie]Úassociated_cookiesr6   r�   ré  Úconnect_timingz9typing.Optional[typing.List[DeviceBoundSessionWithUsage]]Údevice_bound_session_usagesz$typing.Optional[ClientSecurityState]Úclient_security_stater†   Ú"site_has_cookie_in_other_partitionrz   Úapplied_network_conditions_idr   r   c                 C  sÆ   | t  | d¡¡dd„ |d D ƒt |d ¡t | d¡¡| dd ¡d ur\dd„ |d D ƒnd | d	d ¡d ur~t | d	¡¡nd | d
d ¡d uržt| d
¡ƒnd | dd ¡d ur¾t| d¡ƒnd d�S )Nr4  c                 S  s   g | ]}t  |¡‘qS r   )rz  r   r“   r   r   r   r–   ß  s   ÿz8RequestWillBeSentExtraInfo.from_json.<locals>.<listcomp>ZassociatedCookiesr�   ZconnectTimingZdeviceBoundSessionUsagesc                 S  s   g | ]}t  |¡‘qS r   )r+  r   r“   r   r   r   r–   å  s   ÿZclientSecurityStateZsiteHasCookieInOtherPartitionZappliedNetworkConditionsId)r1  r)  r�   r*  r+  r,  r-  r.  )r/   r   ru   r6   ré  rê  r�   r   r   r   r   r   r   Û  s8    þüþýÿýÿýÿäz$RequestWillBeSentExtraInfo.from_jsonNrÔ  r   r   r   r   r(  ·  s   
	r(  z!Network.responseReceivedExtraInfoc                   @  sn   e Zd ZU dZded< ded< ded< ded	< d
ed< ded< ded< ded< ded< edd dœdd„ƒZdS )ÚResponseReceivedExtraInfoa#  
    Fired when additional information about a responseReceived event is
    available from the network stack. Not every responseReceived event
    will have an additional responseReceivedExtraInfo for it, and
    responseReceivedExtraInfo may be fired before or after responseReceived.
    r/   r1  z'typing.List[BlockedSetCookieWithReason]Úblocked_cookiesr6   r�   rç  Úresource_ip_address_spacerÍ   Ústatus_coderz   rö   rI  Úcookie_partition_keyr†   Úcookie_partition_key_opaquez9typing.Optional[typing.List[ExemptedSetCookieWithReason]]Úexempted_cookiesr   r   c                 C  sØ   | t  | d¡¡dd„ | d¡D ƒt | d¡¡t | d¡¡t| d¡ƒ| dd ¡d urht| d¡ƒnd | d	d ¡d urŠt | d	¡¡nd | d
d ¡d urªt| d
¡ƒnd | dd ¡d urÐdd„ | d¡D ƒnd d�	S )Nr4  c                 S  s   g | ]}t  |¡‘qS r   )rq  r   r“   r   r   r   r–   2  s   ÿz7ResponseReceivedExtraInfo.from_json.<locals>.<listcomp>ZblockedCookiesr�   ZresourceIPAddressSpaceZ
statusCoder  ZcookiePartitionKeyZcookiePartitionKeyOpaqueZexemptedCookiesc                 S  s   g | ]}t  |¡‘qS r   )rw  r   r“   r   r   r   r–   H  s   ÿ)	r1  r0  r�   r1  r2  rö   r3  r4  r5  )	r/   r   ru   r6   rç  rÍ   r   r5  r�   r   r   r   r   r   .  s:    þÿÿýÿýÿüþãz#ResponseReceivedExtraInfo.from_jsonNrÔ  r   r   r   r   r/  ý  s   
r/  z"Network.responseReceivedEarlyHintsc                   @  s6   e Zd ZU dZded< ded< edd dœdd	„ƒZd
S )ÚResponseReceivedEarlyHintsa  
    Fired when 103 Early Hints headers is received in addition to the common
    response. Not every responseReceived event will have an
    responseReceivedEarlyHints fired.
    Only one responseReceivedEarlyHints may be fired
    for eached responseReceived event.
    r/   r1  r6   r�   r   r   c                 C  s$   | t  | d¡¡t | d¡¡d�S )Nr4  r�   )r1  r�   )r/   r   ru   r6   r   r   r   r   r   e  s    þz$ResponseReceivedEarlyHints.from_jsonNrÔ  r   r   r   r   r6  Q  s
   
	r6  zNetwork.trustTokenOperationDonec                   @  sV   e Zd ZU dZded< ded< ded< ded	< ded
< ded< edd dœdd„ƒZdS )ÚTrustTokenOperationDonezÿ
    Fired exactly once for each Trust Token operation. Depending on
    the type of the operation and whether the operation succeeded or
    failed, the event is fired before the corresponding request was sent
    or after the response was received.
    r   r    rÝ   r&  r/   r1  rz   Útop_level_originÚissuer_originr¿   Úissued_token_countr   r   c              
   C  s�   | t | d¡ƒt | d¡¡t | d¡¡| dd ¡d urHt | d¡ƒnd | dd ¡d urht | d¡ƒnd | dd ¡d urˆt| d¡ƒnd d�S )Nr    r*  r4  ZtopLevelOriginZissuerOriginZissuedTokenCount)r    r&  r1  r8  r9  r:  )r   ru   rÝ   r   r/   rÍ   r   r   r   r   r   „  s    ÿÿÿôz!TrustTokenOperationDone.from_jsonNrÔ  r   r   r   r   r7  m  s   

r7  zNetwork.policyUpdatedc                   @  s$   e Zd ZdZedd dœdd„ƒZdS )ÚPolicyUpdatedz,Fired once security policy has been updated.r   r   c                 C  s   | ƒ S r   r   r   r   r   r   r   ›  s    zPolicyUpdated.from_jsonN)r    r!   r"   r#   r%   r   r   r   r   r   r;  –  s   r;  zNetwork.reportingApiReportAddedc                   @  s.   e Zd ZU dZded< edd dœdd„ƒZdS )	ÚReportingApiReportAddedzn
    Is sent whenever a new report is added.
    And after 'enableReportingApi' for all existing reports.
    r  Úreportr   r   c                 C  s   | t  |d ¡d�S ©Nr=  )r=  )r  r   r   r   r   r   r   ©  s    z!ReportingApiReportAdded.from_jsonNrÔ  r   r   r   r   r<     s   
r<  z!Network.reportingApiReportUpdatedc                   @  s*   e Zd ZU ded< edd dœdd„ƒZdS )ÚReportingApiReportUpdatedr  r=  r   r   c                 C  s   | t  | d¡¡d�S r>  )r  r   ru   r   r   r   r   r   ³  s    z#ReportingApiReportUpdated.from_jsonNr  r   r   r   r   r?  ®  s   
r?  z-Network.reportingApiEndpointsChangedForOriginc                   @  s2   e Zd ZU ded< ded< edd dœdd„ƒZd	S )
Ú%ReportingApiEndpointsChangedForOriginr   r¡   z!typing.List[ReportingApiEndpoint]Ú	endpointsr   r   c                 C  s&   | t | d¡ƒdd„ | d¡D ƒd�S )Nr¡   c                 S  s   g | ]}t  |¡‘qS r   )r&  r   r“   r   r   r   r–   Å  s   ÿzCReportingApiEndpointsChangedForOrigin.from_json.<locals>.<listcomp>rA  )r¡   rA  r‚  r   r   r   r   r   ¿  s    þþz/ReportingApiEndpointsChangedForOrigin.from_jsonNr  r   r   r   r   r@  ¸  s   
r@  z Network.deviceBoundSessionsAddedc                   @  s.   e Zd ZU dZded< edd dœdd„ƒZdS )	ÚDeviceBoundSessionsAddedzATriggered when the initial set of device bound sessions is added.ztyping.List[DeviceBoundSession]Úsessionsr   r   c                 C  s   | dd„ |  d¡D ƒd�S )Nc                 S  s   g | ]}t  |¡‘qS r   )r<  r   r“   r   r   r   r–   Ö  s   z6DeviceBoundSessionsAdded.from_json.<locals>.<listcomp>rC  )rC  )ru   r   r   r   r   r   Ó  s
    ÿÿz"DeviceBoundSessionsAdded.from_jsonNrÔ  r   r   r   r   rB  Ì  s   
rB  z'Network.deviceBoundSessionEventOccurredc                   @  sf   e Zd ZU dZded< ded< ded< ded	< d
ed< ded< ded< ded< edd dœdd„ƒZdS )ÚDeviceBoundSessionEventOccurredz3Triggered when a device bound session event occurs.rJ  r×  r   r*  r�   Ú	succeededrz   Ú
session_idz%typing.Optional[CreationEventDetails]Úcreation_event_detailsz$typing.Optional[RefreshEventDetails]Úrefresh_event_detailsz(typing.Optional[TerminationEventDetails]Útermination_event_detailsz&typing.Optional[ChallengeEventDetails]Úchallenge_event_detailsr   r   c                 C  sÖ   | t  | d¡¡t| d¡ƒt| d¡ƒ| dd ¡d urFt| d¡ƒnd | dd ¡d urht | d¡¡nd | dd ¡d urŠt | d¡¡nd | dd ¡d ur¬t | d¡¡nd | dd ¡d urÎt | d¡¡nd d	�S )
NrØ  r*  rE  Z	sessionIdZcreationEventDetailsZrefreshEventDetailsZterminationEventDetailsZchallengeEventDetails)r×  r*  rE  rF  rG  rH  rI  rJ  )	rJ  r   ru   r   r�   rU  r^  rc  rf  r   r   r   r   r   ï  s8    ÿýÿýÿýÿýÿæz)DeviceBoundSessionEventOccurred.from_jsonNrÔ  r   r   r   r   rD  Û  s   
rD  )NNNNNNN)NNNN)NNNN)NN)N)NNNNN)NN)N)NN)NN)NNNNNNNNNNN)NNN)N)N)ÅÚ
__future__r   ÚenumÚtypingÚdataclassesr   Úutilr   r   Ú r   r   r	   r
   r   r   ÚEnumr   r   r&   r/   r0   r1   r4   r3   r5   r7   r6   r8   r<   r>   rE   rG   rw   rx   ry   r~   rŸ   r®   rº   rÐ   rÓ   rÔ   rÚ   rž   rÝ   rã   rå   rç   rî   r  r  r   r%  r,  r5  r;  rR  rn  ro  rq  rw  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   r  r  r  r  r  r  r  r  r  r&  r)  r+  r/  r0  r7  r<  rJ  rK  rN  rU  r^  rc  rf  rj  rr  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³  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ù  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(  r/  r6  r7  r;  r<  r?  r@  rB  rD  r   r   r   r   Ú<module>   sô  qx.f%6#- k4 "Ac!( &"()D)#0I-S !"&&$1(/m(%31
      ø F   û(   ø 5 ý/û!    û0 þÿ ü   þ          ó8N  ü ÿý +\
?$DR'