devtools-protocol 0.0.1436416 → 0.0.1439209
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1583,7 +1583,8 @@
|
|
1583
1583
|
"SignatureInputHeaderMissingRequiredParameters",
|
1584
1584
|
"ValidationFailedSignatureExpired",
|
1585
1585
|
"ValidationFailedInvalidLength",
|
1586
|
-
"ValidationFailedSignatureMismatch"
|
1586
|
+
"ValidationFailedSignatureMismatch",
|
1587
|
+
"ValidationFailedIntegrityMismatch"
|
1587
1588
|
]
|
1588
1589
|
},
|
1589
1590
|
{
|
@@ -1682,6 +1683,13 @@
|
|
1682
1683
|
"name": "signatureBase",
|
1683
1684
|
"type": "string"
|
1684
1685
|
},
|
1686
|
+
{
|
1687
|
+
"name": "integrityAssertions",
|
1688
|
+
"type": "array",
|
1689
|
+
"items": {
|
1690
|
+
"type": "string"
|
1691
|
+
}
|
1692
|
+
},
|
1685
1693
|
{
|
1686
1694
|
"name": "request",
|
1687
1695
|
"$ref": "AffectedRequest"
|
@@ -14022,7 +14030,8 @@
|
|
14022
14030
|
"SamePartyFromCrossPartyContext",
|
14023
14031
|
"NameValuePairExceedsMaxSize",
|
14024
14032
|
"PortMismatch",
|
14025
|
-
"SchemeMismatch"
|
14033
|
+
"SchemeMismatch",
|
14034
|
+
"AnonymousContext"
|
14026
14035
|
]
|
14027
14036
|
},
|
14028
14037
|
{
|
@@ -22299,31 +22308,36 @@
|
|
22299
22308
|
]
|
22300
22309
|
},
|
22301
22310
|
{
|
22302
|
-
"id": "
|
22303
|
-
"description": "Enum of shared storage access
|
22311
|
+
"id": "SharedStorageAccessScope",
|
22312
|
+
"description": "Enum of shared storage access scopes.",
|
22304
22313
|
"type": "string",
|
22305
22314
|
"enum": [
|
22306
|
-
"
|
22307
|
-
"
|
22308
|
-
"
|
22309
|
-
"
|
22310
|
-
|
22311
|
-
|
22312
|
-
|
22313
|
-
|
22314
|
-
|
22315
|
-
|
22316
|
-
|
22317
|
-
"
|
22318
|
-
"
|
22319
|
-
"
|
22320
|
-
"
|
22321
|
-
"
|
22322
|
-
"
|
22323
|
-
"
|
22324
|
-
"
|
22325
|
-
"
|
22326
|
-
"
|
22315
|
+
"window",
|
22316
|
+
"sharedStorageWorklet",
|
22317
|
+
"protectedAudienceWorklet",
|
22318
|
+
"header"
|
22319
|
+
]
|
22320
|
+
},
|
22321
|
+
{
|
22322
|
+
"id": "SharedStorageAccessMethod",
|
22323
|
+
"description": "Enum of shared storage access methods.",
|
22324
|
+
"type": "string",
|
22325
|
+
"enum": [
|
22326
|
+
"addModule",
|
22327
|
+
"createWorklet",
|
22328
|
+
"selectURL",
|
22329
|
+
"run",
|
22330
|
+
"batchUpdate",
|
22331
|
+
"set",
|
22332
|
+
"append",
|
22333
|
+
"delete",
|
22334
|
+
"clear",
|
22335
|
+
"get",
|
22336
|
+
"keys",
|
22337
|
+
"values",
|
22338
|
+
"entries",
|
22339
|
+
"length",
|
22340
|
+
"remainingBudget"
|
22327
22341
|
]
|
22328
22342
|
},
|
22329
22343
|
{
|
@@ -23874,9 +23888,14 @@
|
|
23874
23888
|
"$ref": "Network.TimeSinceEpoch"
|
23875
23889
|
},
|
23876
23890
|
{
|
23877
|
-
"name": "
|
23891
|
+
"name": "scope",
|
23892
|
+
"description": "Enum value indicating the access scope.",
|
23893
|
+
"$ref": "SharedStorageAccessScope"
|
23894
|
+
},
|
23895
|
+
{
|
23896
|
+
"name": "method",
|
23878
23897
|
"description": "Enum value indicating the Shared Storage API method invoked.",
|
23879
|
-
"$ref": "
|
23898
|
+
"$ref": "SharedStorageAccessMethod"
|
23880
23899
|
},
|
23881
23900
|
{
|
23882
23901
|
"name": "mainFrameId",
|
@@ -23885,7 +23904,12 @@
|
|
23885
23904
|
},
|
23886
23905
|
{
|
23887
23906
|
"name": "ownerOrigin",
|
23888
|
-
"description": "
|
23907
|
+
"description": "Serialization of the origin owning the Shared Storage data.",
|
23908
|
+
"type": "string"
|
23909
|
+
},
|
23910
|
+
{
|
23911
|
+
"name": "ownerSite",
|
23912
|
+
"description": "Serialization of the site owning the Shared Storage data.",
|
23889
23913
|
"type": "string"
|
23890
23914
|
},
|
23891
23915
|
{
|
@@ -27987,6 +28011,41 @@
|
|
27987
28011
|
"type": "integer"
|
27988
28012
|
}
|
27989
28013
|
]
|
28014
|
+
},
|
28015
|
+
{
|
28016
|
+
"name": "addService",
|
28017
|
+
"description": "Adds a service with |uuid| to the peripheral with |address|.",
|
28018
|
+
"parameters": [
|
28019
|
+
{
|
28020
|
+
"name": "address",
|
28021
|
+
"type": "string"
|
28022
|
+
},
|
28023
|
+
{
|
28024
|
+
"name": "serviceUuid",
|
28025
|
+
"type": "string"
|
28026
|
+
}
|
28027
|
+
],
|
28028
|
+
"returns": [
|
28029
|
+
{
|
28030
|
+
"name": "id",
|
28031
|
+
"description": "An identifier that uniquely represents this service.",
|
28032
|
+
"type": "string"
|
28033
|
+
}
|
28034
|
+
]
|
28035
|
+
},
|
28036
|
+
{
|
28037
|
+
"name": "removeService",
|
28038
|
+
"description": "Removes the service respresented by |id| from the peripheral with |address|.",
|
28039
|
+
"parameters": [
|
28040
|
+
{
|
28041
|
+
"name": "address",
|
28042
|
+
"type": "string"
|
28043
|
+
},
|
28044
|
+
{
|
28045
|
+
"name": "id",
|
28046
|
+
"type": "string"
|
28047
|
+
}
|
28048
|
+
]
|
27990
28049
|
}
|
27991
28050
|
],
|
27992
28051
|
"events": [
|
package/package.json
CHANGED
package/pdl/browser_protocol.pdl
CHANGED
@@ -823,6 +823,7 @@ experimental domain Audits
|
|
823
823
|
ValidationFailedSignatureExpired
|
824
824
|
ValidationFailedInvalidLength
|
825
825
|
ValidationFailedSignatureMismatch
|
826
|
+
ValidationFailedIntegrityMismatch
|
826
827
|
|
827
828
|
# Details for issues around "Attribution Reporting API" usage.
|
828
829
|
# Explainer: https://github.com/WICG/attribution-reporting-api
|
@@ -859,6 +860,7 @@ experimental domain Audits
|
|
859
860
|
properties
|
860
861
|
SRIMessageSignatureError error
|
861
862
|
string signatureBase
|
863
|
+
array of string integrityAssertions
|
862
864
|
AffectedRequest request
|
863
865
|
|
864
866
|
type GenericIssueErrorType extends string
|
@@ -6640,6 +6642,8 @@ domain Network
|
|
6640
6642
|
PortMismatch
|
6641
6643
|
# The cookie's source scheme value does not match the request origin's scheme.
|
6642
6644
|
SchemeMismatch
|
6645
|
+
# Unpartitioned cookie access from an anonymous context was blocked.
|
6646
|
+
AnonymousContext
|
6643
6647
|
|
6644
6648
|
# Types of reasons why a cookie should have been blocked by 3PCD but is exempted for the request.
|
6645
6649
|
experimental type CookieExemptionReason extends string
|
@@ -10554,30 +10558,32 @@ experimental domain Storage
|
|
10554
10558
|
bidderTrustedSignals
|
10555
10559
|
sellerTrustedSignals
|
10556
10560
|
|
10557
|
-
# Enum of shared storage access
|
10558
|
-
type
|
10559
|
-
enum
|
10560
|
-
|
10561
|
-
|
10562
|
-
|
10563
|
-
|
10564
|
-
|
10565
|
-
|
10566
|
-
|
10567
|
-
|
10568
|
-
|
10569
|
-
|
10570
|
-
|
10571
|
-
|
10572
|
-
|
10573
|
-
|
10574
|
-
|
10575
|
-
|
10576
|
-
|
10577
|
-
|
10578
|
-
|
10579
|
-
|
10580
|
-
|
10561
|
+
# Enum of shared storage access scopes.
|
10562
|
+
type SharedStorageAccessScope extends string
|
10563
|
+
enum
|
10564
|
+
window
|
10565
|
+
sharedStorageWorklet
|
10566
|
+
protectedAudienceWorklet
|
10567
|
+
header
|
10568
|
+
|
10569
|
+
# Enum of shared storage access methods.
|
10570
|
+
type SharedStorageAccessMethod extends string
|
10571
|
+
enum
|
10572
|
+
addModule
|
10573
|
+
createWorklet
|
10574
|
+
selectURL
|
10575
|
+
run
|
10576
|
+
batchUpdate
|
10577
|
+
set
|
10578
|
+
append
|
10579
|
+
delete
|
10580
|
+
clear
|
10581
|
+
get
|
10582
|
+
keys
|
10583
|
+
values
|
10584
|
+
entries
|
10585
|
+
length
|
10586
|
+
remainingBudget
|
10581
10587
|
|
10582
10588
|
# Struct for a single key-value pair in an origin's shared storage.
|
10583
10589
|
type SharedStorageEntry extends object
|
@@ -10993,12 +10999,16 @@ experimental domain Storage
|
|
10993
10999
|
parameters
|
10994
11000
|
# Time of the access.
|
10995
11001
|
Network.TimeSinceEpoch accessTime
|
11002
|
+
# Enum value indicating the access scope.
|
11003
|
+
SharedStorageAccessScope scope
|
10996
11004
|
# Enum value indicating the Shared Storage API method invoked.
|
10997
|
-
|
11005
|
+
SharedStorageAccessMethod method
|
10998
11006
|
# DevTools Frame Token for the primary frame tree's root.
|
10999
11007
|
Page.FrameId mainFrameId
|
11000
|
-
#
|
11008
|
+
# Serialization of the origin owning the Shared Storage data.
|
11001
11009
|
string ownerOrigin
|
11010
|
+
# Serialization of the site owning the Shared Storage data.
|
11011
|
+
string ownerSite
|
11002
11012
|
# The sub-parameters wrapped by `params` are all optional and their
|
11003
11013
|
# presence/absence depends on `type`.
|
11004
11014
|
SharedStorageAccessParams params
|
@@ -13297,6 +13307,21 @@ experimental domain BluetoothEmulation
|
|
13297
13307
|
GATTOperationType type
|
13298
13308
|
integer code
|
13299
13309
|
|
13310
|
+
# Adds a service with |uuid| to the peripheral with |address|.
|
13311
|
+
command addService
|
13312
|
+
parameters
|
13313
|
+
string address
|
13314
|
+
string serviceUuid
|
13315
|
+
returns
|
13316
|
+
# An identifier that uniquely represents this service.
|
13317
|
+
string id
|
13318
|
+
|
13319
|
+
# Removes the service respresented by |id| from the peripheral with |address|.
|
13320
|
+
command removeService
|
13321
|
+
parameters
|
13322
|
+
string address
|
13323
|
+
string id
|
13324
|
+
|
13300
13325
|
# Event for when a GATT operation of |type| to the peripheral with |address|
|
13301
13326
|
# happened.
|
13302
13327
|
event gattOperationReceived
|
@@ -5311,6 +5311,20 @@ export namespace ProtocolMapping {
|
|
5311
5311
|
paramsType: [Protocol.BluetoothEmulation.SimulateGATTOperationResponseRequest];
|
5312
5312
|
returnType: void;
|
5313
5313
|
};
|
5314
|
+
/**
|
5315
|
+
* Adds a service with |uuid| to the peripheral with |address|.
|
5316
|
+
*/
|
5317
|
+
'BluetoothEmulation.addService': {
|
5318
|
+
paramsType: [Protocol.BluetoothEmulation.AddServiceRequest];
|
5319
|
+
returnType: Protocol.BluetoothEmulation.AddServiceResponse;
|
5320
|
+
};
|
5321
|
+
/**
|
5322
|
+
* Removes the service respresented by |id| from the peripheral with |address|.
|
5323
|
+
*/
|
5324
|
+
'BluetoothEmulation.removeService': {
|
5325
|
+
paramsType: [Protocol.BluetoothEmulation.RemoveServiceRequest];
|
5326
|
+
returnType: void;
|
5327
|
+
};
|
5314
5328
|
}
|
5315
5329
|
}
|
5316
5330
|
|
@@ -4534,6 +4534,16 @@ export namespace ProtocolProxyApi {
|
|
4534
4534
|
*/
|
4535
4535
|
simulateGATTOperationResponse(params: Protocol.BluetoothEmulation.SimulateGATTOperationResponseRequest): Promise<void>;
|
4536
4536
|
|
4537
|
+
/**
|
4538
|
+
* Adds a service with |uuid| to the peripheral with |address|.
|
4539
|
+
*/
|
4540
|
+
addService(params: Protocol.BluetoothEmulation.AddServiceRequest): Promise<Protocol.BluetoothEmulation.AddServiceResponse>;
|
4541
|
+
|
4542
|
+
/**
|
4543
|
+
* Removes the service respresented by |id| from the peripheral with |address|.
|
4544
|
+
*/
|
4545
|
+
removeService(params: Protocol.BluetoothEmulation.RemoveServiceRequest): Promise<void>;
|
4546
|
+
|
4537
4547
|
/**
|
4538
4548
|
* Event for when a GATT operation of |type| to the peripheral with |address|
|
4539
4549
|
* happened.
|
@@ -4938,6 +4938,16 @@ export namespace ProtocolTestsProxyApi {
|
|
4938
4938
|
*/
|
4939
4939
|
simulateGATTOperationResponse(params: Protocol.BluetoothEmulation.SimulateGATTOperationResponseRequest): Promise<{id: number, result: void, sessionId: string}>;
|
4940
4940
|
|
4941
|
+
/**
|
4942
|
+
* Adds a service with |uuid| to the peripheral with |address|.
|
4943
|
+
*/
|
4944
|
+
addService(params: Protocol.BluetoothEmulation.AddServiceRequest): Promise<{id: number, result: Protocol.BluetoothEmulation.AddServiceResponse, sessionId: string}>;
|
4945
|
+
|
4946
|
+
/**
|
4947
|
+
* Removes the service respresented by |id| from the peripheral with |address|.
|
4948
|
+
*/
|
4949
|
+
removeService(params: Protocol.BluetoothEmulation.RemoveServiceRequest): Promise<{id: number, result: void, sessionId: string}>;
|
4950
|
+
|
4941
4951
|
/**
|
4942
4952
|
* Event for when a GATT operation of |type| to the peripheral with |address|
|
4943
4953
|
* happened.
|
package/types/protocol.d.ts
CHANGED
@@ -3540,7 +3540,7 @@ export namespace Protocol {
|
|
3540
3540
|
|
3541
3541
|
export type SharedDictionaryError = ('UseErrorCrossOriginNoCorsRequest' | 'UseErrorDictionaryLoadFailure' | 'UseErrorMatchingDictionaryNotUsed' | 'UseErrorUnexpectedContentDictionaryHeader' | 'WriteErrorCossOriginNoCorsRequest' | 'WriteErrorDisallowedBySettings' | 'WriteErrorExpiredResponse' | 'WriteErrorFeatureDisabled' | 'WriteErrorInsufficientResources' | 'WriteErrorInvalidMatchField' | 'WriteErrorInvalidStructuredHeader' | 'WriteErrorNavigationRequest' | 'WriteErrorNoMatchField' | 'WriteErrorNonListMatchDestField' | 'WriteErrorNonSecureContext' | 'WriteErrorNonStringIdField' | 'WriteErrorNonStringInMatchDestList' | 'WriteErrorNonStringMatchField' | 'WriteErrorNonTokenTypeField' | 'WriteErrorRequestAborted' | 'WriteErrorShuttingDown' | 'WriteErrorTooLongIdField' | 'WriteErrorUnsupportedType');
|
3542
3542
|
|
3543
|
-
export type SRIMessageSignatureError = ('MissingSignatureHeader' | 'MissingSignatureInputHeader' | 'InvalidSignatureHeader' | 'InvalidSignatureInputHeader' | 'SignatureHeaderValueIsNotByteSequence' | 'SignatureHeaderValueIsParameterized' | 'SignatureHeaderValueIsIncorrectLength' | 'SignatureInputHeaderMissingLabel' | 'SignatureInputHeaderValueNotInnerList' | 'SignatureInputHeaderValueMissingComponents' | 'SignatureInputHeaderInvalidComponentType' | 'SignatureInputHeaderInvalidComponentName' | 'SignatureInputHeaderInvalidHeaderComponentParameter' | 'SignatureInputHeaderInvalidDerivedComponentParameter' | 'SignatureInputHeaderKeyIdLength' | 'SignatureInputHeaderInvalidParameter' | 'SignatureInputHeaderMissingRequiredParameters' | 'ValidationFailedSignatureExpired' | 'ValidationFailedInvalidLength' | 'ValidationFailedSignatureMismatch');
|
3543
|
+
export type SRIMessageSignatureError = ('MissingSignatureHeader' | 'MissingSignatureInputHeader' | 'InvalidSignatureHeader' | 'InvalidSignatureInputHeader' | 'SignatureHeaderValueIsNotByteSequence' | 'SignatureHeaderValueIsParameterized' | 'SignatureHeaderValueIsIncorrectLength' | 'SignatureInputHeaderMissingLabel' | 'SignatureInputHeaderValueNotInnerList' | 'SignatureInputHeaderValueMissingComponents' | 'SignatureInputHeaderInvalidComponentType' | 'SignatureInputHeaderInvalidComponentName' | 'SignatureInputHeaderInvalidHeaderComponentParameter' | 'SignatureInputHeaderInvalidDerivedComponentParameter' | 'SignatureInputHeaderKeyIdLength' | 'SignatureInputHeaderInvalidParameter' | 'SignatureInputHeaderMissingRequiredParameters' | 'ValidationFailedSignatureExpired' | 'ValidationFailedInvalidLength' | 'ValidationFailedSignatureMismatch' | 'ValidationFailedIntegrityMismatch');
|
3544
3544
|
|
3545
3545
|
/**
|
3546
3546
|
* Details for issues around "Attribution Reporting API" usage.
|
@@ -3582,6 +3582,7 @@ export namespace Protocol {
|
|
3582
3582
|
export interface SRIMessageSignatureIssueDetails {
|
3583
3583
|
error: SRIMessageSignatureError;
|
3584
3584
|
signatureBase: string;
|
3585
|
+
integrityAssertions: string[];
|
3585
3586
|
request: AffectedRequest;
|
3586
3587
|
}
|
3587
3588
|
|
@@ -11321,7 +11322,7 @@ export namespace Protocol {
|
|
11321
11322
|
/**
|
11322
11323
|
* Types of reasons why a cookie may not be sent with a request.
|
11323
11324
|
*/
|
11324
|
-
export type CookieBlockedReason = ('SecureOnly' | 'NotOnPath' | 'DomainMismatch' | 'SameSiteStrict' | 'SameSiteLax' | 'SameSiteUnspecifiedTreatedAsLax' | 'SameSiteNoneInsecure' | 'UserPreferences' | 'ThirdPartyPhaseout' | 'ThirdPartyBlockedInFirstPartySet' | 'UnknownError' | 'SchemefulSameSiteStrict' | 'SchemefulSameSiteLax' | 'SchemefulSameSiteUnspecifiedTreatedAsLax' | 'SamePartyFromCrossPartyContext' | 'NameValuePairExceedsMaxSize' | 'PortMismatch' | 'SchemeMismatch');
|
11325
|
+
export type CookieBlockedReason = ('SecureOnly' | 'NotOnPath' | 'DomainMismatch' | 'SameSiteStrict' | 'SameSiteLax' | 'SameSiteUnspecifiedTreatedAsLax' | 'SameSiteNoneInsecure' | 'UserPreferences' | 'ThirdPartyPhaseout' | 'ThirdPartyBlockedInFirstPartySet' | 'UnknownError' | 'SchemefulSameSiteStrict' | 'SchemefulSameSiteLax' | 'SchemefulSameSiteUnspecifiedTreatedAsLax' | 'SamePartyFromCrossPartyContext' | 'NameValuePairExceedsMaxSize' | 'PortMismatch' | 'SchemeMismatch' | 'AnonymousContext');
|
11325
11326
|
|
11326
11327
|
/**
|
11327
11328
|
* Types of reasons why a cookie should have been blocked by 3PCD but is exempted for the request.
|
@@ -16361,9 +16362,14 @@ export namespace Protocol {
|
|
16361
16362
|
export type InterestGroupAuctionFetchType = ('bidderJs' | 'bidderWasm' | 'sellerJs' | 'bidderTrustedSignals' | 'sellerTrustedSignals');
|
16362
16363
|
|
16363
16364
|
/**
|
16364
|
-
* Enum of shared storage access
|
16365
|
+
* Enum of shared storage access scopes.
|
16365
16366
|
*/
|
16366
|
-
export type
|
16367
|
+
export type SharedStorageAccessScope = ('window' | 'sharedStorageWorklet' | 'protectedAudienceWorklet' | 'header');
|
16368
|
+
|
16369
|
+
/**
|
16370
|
+
* Enum of shared storage access methods.
|
16371
|
+
*/
|
16372
|
+
export type SharedStorageAccessMethod = ('addModule' | 'createWorklet' | 'selectURL' | 'run' | 'batchUpdate' | 'set' | 'append' | 'delete' | 'clear' | 'get' | 'keys' | 'values' | 'entries' | 'length' | 'remainingBudget');
|
16367
16373
|
|
16368
16374
|
/**
|
16369
16375
|
* Struct for a single key-value pair in an origin's shared storage.
|
@@ -17136,18 +17142,26 @@ export namespace Protocol {
|
|
17136
17142
|
* Time of the access.
|
17137
17143
|
*/
|
17138
17144
|
accessTime: Network.TimeSinceEpoch;
|
17145
|
+
/**
|
17146
|
+
* Enum value indicating the access scope.
|
17147
|
+
*/
|
17148
|
+
scope: SharedStorageAccessScope;
|
17139
17149
|
/**
|
17140
17150
|
* Enum value indicating the Shared Storage API method invoked.
|
17141
17151
|
*/
|
17142
|
-
|
17152
|
+
method: SharedStorageAccessMethod;
|
17143
17153
|
/**
|
17144
17154
|
* DevTools Frame Token for the primary frame tree's root.
|
17145
17155
|
*/
|
17146
17156
|
mainFrameId: Page.FrameId;
|
17147
17157
|
/**
|
17148
|
-
*
|
17158
|
+
* Serialization of the origin owning the Shared Storage data.
|
17149
17159
|
*/
|
17150
17160
|
ownerOrigin: string;
|
17161
|
+
/**
|
17162
|
+
* Serialization of the site owning the Shared Storage data.
|
17163
|
+
*/
|
17164
|
+
ownerSite: string;
|
17151
17165
|
/**
|
17152
17166
|
* The sub-parameters wrapped by `params` are all optional and their
|
17153
17167
|
* presence/absence depends on `type`.
|
@@ -19557,6 +19571,23 @@ export namespace Protocol {
|
|
19557
19571
|
code: integer;
|
19558
19572
|
}
|
19559
19573
|
|
19574
|
+
export interface AddServiceRequest {
|
19575
|
+
address: string;
|
19576
|
+
serviceUuid: string;
|
19577
|
+
}
|
19578
|
+
|
19579
|
+
export interface AddServiceResponse {
|
19580
|
+
/**
|
19581
|
+
* An identifier that uniquely represents this service.
|
19582
|
+
*/
|
19583
|
+
id: string;
|
19584
|
+
}
|
19585
|
+
|
19586
|
+
export interface RemoveServiceRequest {
|
19587
|
+
address: string;
|
19588
|
+
id: string;
|
19589
|
+
}
|
19590
|
+
|
19560
19591
|
/**
|
19561
19592
|
* Event for when a GATT operation of |type| to the peripheral with |address|
|
19562
19593
|
* happened.
|