@yume-chan/adb-credential-web 2.0.1 → 3.0.0-beta.0
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.
- package/LICENSE +1 -1
- package/README.md +6 -3
- package/esm/index.d.ts +2 -23
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +2 -102
- package/esm/index.js.map +1 -1
- package/esm/manager.d.ts +9 -0
- package/esm/manager.d.ts.map +1 -0
- package/esm/manager.js +56 -0
- package/esm/manager.js.map +1 -0
- package/esm/storage/index.d.ts +6 -0
- package/esm/storage/index.d.ts.map +1 -0
- package/esm/storage/index.js +6 -0
- package/esm/storage/index.js.map +1 -0
- package/esm/storage/indexed-db/index.d.ts +3 -0
- package/esm/storage/indexed-db/index.d.ts.map +1 -0
- package/esm/storage/indexed-db/index.js +3 -0
- package/esm/storage/indexed-db/index.js.map +1 -0
- package/esm/storage/indexed-db/shared.d.ts +4 -0
- package/esm/storage/indexed-db/shared.d.ts.map +1 -0
- package/esm/storage/indexed-db/shared.js +50 -0
- package/esm/storage/indexed-db/shared.js.map +1 -0
- package/esm/storage/indexed-db/v1.d.ts +5 -0
- package/esm/storage/indexed-db/v1.d.ts.map +1 -0
- package/esm/storage/indexed-db/v1.js +22 -0
- package/esm/storage/indexed-db/v1.js.map +1 -0
- package/esm/storage/indexed-db/v2.d.ts +14 -0
- package/esm/storage/indexed-db/v2.d.ts.map +1 -0
- package/esm/storage/indexed-db/v2.js +78 -0
- package/esm/storage/indexed-db/v2.js.map +1 -0
- package/esm/storage/local-storage.d.ts +8 -0
- package/esm/storage/local-storage.d.ts.map +1 -0
- package/esm/storage/local-storage.js +25 -0
- package/esm/storage/local-storage.js.map +1 -0
- package/esm/storage/password.d.ts +27 -0
- package/esm/storage/password.d.ts.map +1 -0
- package/esm/storage/password.js +129 -0
- package/esm/storage/password.js.map +1 -0
- package/esm/storage/prf/index.d.ts +4 -0
- package/esm/storage/prf/index.d.ts.map +1 -0
- package/esm/storage/prf/index.js +4 -0
- package/esm/storage/prf/index.js.map +1 -0
- package/esm/storage/prf/source.d.ts +27 -0
- package/esm/storage/prf/source.d.ts.map +1 -0
- package/esm/storage/prf/source.js +2 -0
- package/esm/storage/prf/source.js.map +1 -0
- package/esm/storage/prf/storage.d.ts +19 -0
- package/esm/storage/prf/storage.d.ts.map +1 -0
- package/esm/storage/prf/storage.js +125 -0
- package/esm/storage/prf/storage.js.map +1 -0
- package/esm/storage/prf/web-authn.d.ts +55 -0
- package/esm/storage/prf/web-authn.d.ts.map +1 -0
- package/esm/storage/prf/web-authn.js +138 -0
- package/esm/storage/prf/web-authn.js.map +1 -0
- package/esm/storage/type.d.ts +11 -0
- package/esm/storage/type.d.ts.map +1 -0
- package/esm/storage/type.js +2 -0
- package/esm/storage/type.js.map +1 -0
- package/package.json +8 -5
- package/src/index.ts +2 -121
- package/src/manager.ts +82 -0
- package/src/storage/index.ts +5 -0
- package/src/storage/indexed-db/index.ts +2 -0
- package/src/storage/indexed-db/shared.ts +62 -0
- package/src/storage/indexed-db/v1.ts +29 -0
- package/src/storage/indexed-db/v2.ts +95 -0
- package/src/storage/local-storage.ts +37 -0
- package/src/storage/password.ts +245 -0
- package/src/storage/prf/index.ts +3 -0
- package/src/storage/prf/source.ts +35 -0
- package/src/storage/prf/storage.ts +191 -0
- package/src/storage/prf/web-authn.ts +175 -0
- package/src/storage/type.ts +18 -0
- package/CHANGELOG.md +0 -141
- package/tsconfig.build.tsbuildinfo +0 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
2
|
+
|
|
3
|
+
export interface TangoPrfCreationResult {
|
|
4
|
+
/**
|
|
5
|
+
* The generated PRF output
|
|
6
|
+
*/
|
|
7
|
+
output: BufferSource;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* ID of the created secret key
|
|
11
|
+
*/
|
|
12
|
+
id: Uint8Array<ArrayBuffer>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface TangoPrfSource {
|
|
16
|
+
/**
|
|
17
|
+
* Creates a new secret key and generate PRF output using the key and input data.
|
|
18
|
+
*
|
|
19
|
+
* @param input The input data
|
|
20
|
+
*/
|
|
21
|
+
create(
|
|
22
|
+
input: Uint8Array<ArrayBuffer>,
|
|
23
|
+
): MaybePromiseLike<TangoPrfCreationResult>;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Generates PRF output using the secret key and input data.
|
|
27
|
+
*
|
|
28
|
+
* @param id ID of the secret key
|
|
29
|
+
* @param input The input data
|
|
30
|
+
*/
|
|
31
|
+
get(
|
|
32
|
+
id: BufferSource,
|
|
33
|
+
input: Uint8Array<ArrayBuffer>,
|
|
34
|
+
): MaybePromiseLike<BufferSource>;
|
|
35
|
+
}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import type { MaybeError } from "@yume-chan/adb";
|
|
2
|
+
import { toLocalUint8Array } from "@yume-chan/adb";
|
|
3
|
+
import { toUint8Array } from "@yume-chan/stream-extra";
|
|
4
|
+
import {
|
|
5
|
+
buffer,
|
|
6
|
+
struct,
|
|
7
|
+
u16,
|
|
8
|
+
Uint8ArrayExactReadable,
|
|
9
|
+
} from "@yume-chan/struct";
|
|
10
|
+
|
|
11
|
+
import type { TangoKey, TangoKeyStorage } from "../type.js";
|
|
12
|
+
|
|
13
|
+
import type { TangoPrfSource } from "./source.js";
|
|
14
|
+
|
|
15
|
+
// PRF generally uses FIDO HMAC secret extension, which uses HMAC with SHA-256,
|
|
16
|
+
// and this input is used as salt, so should be 32 bytes
|
|
17
|
+
const PrfInputLength = 32;
|
|
18
|
+
const HkdfInfoLength = 32;
|
|
19
|
+
// We use HMAC with SHA-512, so should be 64 bytes
|
|
20
|
+
const HkdfSaltLength = 64;
|
|
21
|
+
// AES-GCM recommends 12-byte (96-bit) IV for performance and interoperability
|
|
22
|
+
const AesIvLength = 12;
|
|
23
|
+
|
|
24
|
+
async function deriveAesKey(
|
|
25
|
+
source: BufferSource,
|
|
26
|
+
info: Uint8Array<ArrayBuffer>,
|
|
27
|
+
salt: Uint8Array<ArrayBuffer>,
|
|
28
|
+
): Promise<CryptoKey> {
|
|
29
|
+
const baseKey = await crypto.subtle.importKey(
|
|
30
|
+
"raw",
|
|
31
|
+
source,
|
|
32
|
+
"HKDF",
|
|
33
|
+
false,
|
|
34
|
+
["deriveKey"],
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
return await crypto.subtle.deriveKey(
|
|
38
|
+
{
|
|
39
|
+
name: "HKDF",
|
|
40
|
+
hash: "SHA-512",
|
|
41
|
+
info,
|
|
42
|
+
salt,
|
|
43
|
+
} satisfies globalThis.HkdfParams,
|
|
44
|
+
baseKey,
|
|
45
|
+
{ name: "AES-GCM", length: 256 },
|
|
46
|
+
false,
|
|
47
|
+
["encrypt", "decrypt"],
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const Bundle = struct(
|
|
52
|
+
{
|
|
53
|
+
id: buffer(u16),
|
|
54
|
+
prfInput: buffer(PrfInputLength),
|
|
55
|
+
hkdfInfo: buffer(HkdfInfoLength),
|
|
56
|
+
hkdfSalt: buffer(HkdfSaltLength),
|
|
57
|
+
aesIv: buffer(AesIvLength),
|
|
58
|
+
encrypted: buffer(u16),
|
|
59
|
+
},
|
|
60
|
+
{ littleEndian: true },
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* A `TangoDataStorage` that encrypts and decrypts data using PRF
|
|
65
|
+
*/
|
|
66
|
+
export class TangoPrfStorage implements TangoKeyStorage {
|
|
67
|
+
readonly #storage: TangoKeyStorage;
|
|
68
|
+
readonly #source: TangoPrfSource;
|
|
69
|
+
#prevId: Uint8Array<ArrayBuffer> | undefined;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Creates a new instance of `TangoPrfStorage`
|
|
73
|
+
*
|
|
74
|
+
* @param storage Another `TangoDataStorage` to store and retrieve the encrypted data
|
|
75
|
+
* @param source The `TangoPrfSource` to generate PRF output
|
|
76
|
+
*/
|
|
77
|
+
constructor(storage: TangoKeyStorage, source: TangoPrfSource) {
|
|
78
|
+
this.#storage = storage;
|
|
79
|
+
this.#source = source;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
async save(
|
|
83
|
+
privateKey: Uint8Array,
|
|
84
|
+
name: string | undefined,
|
|
85
|
+
): Promise<undefined> {
|
|
86
|
+
const prfInput = new Uint8Array(PrfInputLength);
|
|
87
|
+
crypto.getRandomValues(prfInput);
|
|
88
|
+
|
|
89
|
+
// Maybe reuse the credential, but use different PRF input and HKDF params
|
|
90
|
+
let id: Uint8Array<ArrayBuffer>;
|
|
91
|
+
let prfOutput: BufferSource;
|
|
92
|
+
if (this.#prevId) {
|
|
93
|
+
prfOutput = await this.#source.get(this.#prevId, prfInput);
|
|
94
|
+
id = this.#prevId;
|
|
95
|
+
} else {
|
|
96
|
+
({ output: prfOutput, id } = await this.#source.create(prfInput));
|
|
97
|
+
this.#prevId = id;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const info = new Uint8Array(HkdfInfoLength);
|
|
101
|
+
crypto.getRandomValues(info);
|
|
102
|
+
|
|
103
|
+
const salt = new Uint8Array(HkdfSaltLength);
|
|
104
|
+
crypto.getRandomValues(salt);
|
|
105
|
+
|
|
106
|
+
let aesKey: CryptoKey;
|
|
107
|
+
try {
|
|
108
|
+
aesKey = await deriveAesKey(prfOutput, info, salt);
|
|
109
|
+
} finally {
|
|
110
|
+
// Clear secret memory
|
|
111
|
+
toUint8Array(prfOutput).fill(0);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
const iv = new Uint8Array(AesIvLength);
|
|
115
|
+
crypto.getRandomValues(iv);
|
|
116
|
+
|
|
117
|
+
const encrypted = await crypto.subtle.encrypt(
|
|
118
|
+
{ name: "AES-GCM", iv },
|
|
119
|
+
aesKey,
|
|
120
|
+
toLocalUint8Array(privateKey),
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
const bundle = Bundle.serialize({
|
|
124
|
+
id,
|
|
125
|
+
prfInput,
|
|
126
|
+
hkdfInfo: info,
|
|
127
|
+
hkdfSalt: salt,
|
|
128
|
+
aesIv: iv,
|
|
129
|
+
encrypted: new Uint8Array(encrypted),
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
await this.#storage.save(bundle, name);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
async *load(): AsyncGenerator<MaybeError<TangoKey>, void, void> {
|
|
136
|
+
for await (const result of this.#storage.load()) {
|
|
137
|
+
if (result instanceof Error) {
|
|
138
|
+
yield result;
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
const { privateKey: serialized, name } = result;
|
|
143
|
+
|
|
144
|
+
try {
|
|
145
|
+
const bundle = Bundle.deserialize(
|
|
146
|
+
new Uint8ArrayExactReadable(serialized),
|
|
147
|
+
);
|
|
148
|
+
|
|
149
|
+
const prfOutput = await this.#source.get(
|
|
150
|
+
bundle.id as Uint8Array<ArrayBuffer>,
|
|
151
|
+
bundle.prfInput as Uint8Array<ArrayBuffer>,
|
|
152
|
+
);
|
|
153
|
+
|
|
154
|
+
this.#prevId = bundle.id as Uint8Array<ArrayBuffer>;
|
|
155
|
+
|
|
156
|
+
let aesKey: CryptoKey;
|
|
157
|
+
try {
|
|
158
|
+
aesKey = await deriveAesKey(
|
|
159
|
+
prfOutput,
|
|
160
|
+
bundle.hkdfInfo as Uint8Array<ArrayBuffer>,
|
|
161
|
+
bundle.hkdfSalt as Uint8Array<ArrayBuffer>,
|
|
162
|
+
);
|
|
163
|
+
} finally {
|
|
164
|
+
// Clear secret memory
|
|
165
|
+
toUint8Array(prfOutput).fill(0);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
const decrypted = await crypto.subtle.decrypt(
|
|
169
|
+
{
|
|
170
|
+
name: "AES-GCM",
|
|
171
|
+
iv: bundle.aesIv as Uint8Array<ArrayBuffer>,
|
|
172
|
+
},
|
|
173
|
+
aesKey,
|
|
174
|
+
bundle.encrypted as Uint8Array<ArrayBuffer>,
|
|
175
|
+
);
|
|
176
|
+
|
|
177
|
+
try {
|
|
178
|
+
yield { privateKey: new Uint8Array(decrypted), name };
|
|
179
|
+
} finally {
|
|
180
|
+
// Clear secret memory
|
|
181
|
+
// Caller is not allowed to use `decrypted` after `yield` returns
|
|
182
|
+
new Uint8Array(decrypted).fill(0);
|
|
183
|
+
}
|
|
184
|
+
} catch (e) {
|
|
185
|
+
yield e instanceof Error
|
|
186
|
+
? e
|
|
187
|
+
: new Error(String(e), { cause: e });
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import type { TangoPrfSource } from "./source.js";
|
|
2
|
+
|
|
3
|
+
function checkCredential(
|
|
4
|
+
credential: Credential | null,
|
|
5
|
+
): asserts credential is PublicKeyCredential {
|
|
6
|
+
if (!credential || !(credential instanceof PublicKeyCredential)) {
|
|
7
|
+
throw new Error("Can't create credential");
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function getPrfOutput(credential: PublicKeyCredential) {
|
|
12
|
+
const extensions = credential.getClientExtensionResults();
|
|
13
|
+
|
|
14
|
+
const prf = extensions["prf"];
|
|
15
|
+
if (!prf) {
|
|
16
|
+
throw new NotSupportedError();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return prf;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
class NotSupportedError extends Error {
|
|
23
|
+
constructor() {
|
|
24
|
+
super("PRF extension is not supported");
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
class OperationCancelledError extends Error {
|
|
29
|
+
constructor() {
|
|
30
|
+
super("The operation is either cancelled by user or timed out");
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export class TangoWebAuthnPrfSource implements TangoPrfSource {
|
|
35
|
+
static NotSupportedError = NotSupportedError;
|
|
36
|
+
static OperationCancelledError = OperationCancelledError;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Checks if the runtime supports WebAuthn PRF extension.
|
|
40
|
+
*
|
|
41
|
+
* Note that using the extension also requires a supported authenticator.
|
|
42
|
+
* Whether an authenticator supports the extension can only be checked
|
|
43
|
+
* during the `create` process.
|
|
44
|
+
* @returns `true` if the runtime supports WebAuthn PRF extension
|
|
45
|
+
*/
|
|
46
|
+
static async isSupported(): Promise<boolean> {
|
|
47
|
+
if (typeof PublicKeyCredential === "undefined") {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (!PublicKeyCredential.getClientCapabilities) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const clientCapabilities =
|
|
56
|
+
await PublicKeyCredential.getClientCapabilities();
|
|
57
|
+
if (!clientCapabilities["extension:prf"]) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
readonly #appName: string;
|
|
65
|
+
readonly #userName: string;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Creates a new instance of `TangoWebAuthnPrfSource`
|
|
69
|
+
*
|
|
70
|
+
* @param appName Name of your website shows in Passkey manager
|
|
71
|
+
* @param userName Display name of the credential shows in Passkey manager
|
|
72
|
+
*/
|
|
73
|
+
constructor(appName: string, userName: string) {
|
|
74
|
+
this.#appName = appName;
|
|
75
|
+
this.#userName = userName;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Creates a new credential and generate PRF output using the credential and input data.
|
|
80
|
+
*
|
|
81
|
+
* @param input The input data
|
|
82
|
+
* @returns The credential ID and PRF output
|
|
83
|
+
* @throws `NotSupportedError` if the runtime or authenticator doesn't support PRF extension
|
|
84
|
+
* @throws `OperationCancelledError` if the attestation is either cancelled by user or timed out
|
|
85
|
+
*/
|
|
86
|
+
async create(input: Uint8Array<ArrayBuffer>): Promise<{
|
|
87
|
+
output: BufferSource;
|
|
88
|
+
id: Uint8Array<ArrayBuffer>;
|
|
89
|
+
}> {
|
|
90
|
+
const challenge = new Uint8Array(32);
|
|
91
|
+
crypto.getRandomValues(challenge);
|
|
92
|
+
|
|
93
|
+
let attestation;
|
|
94
|
+
try {
|
|
95
|
+
attestation = await navigator.credentials.create({
|
|
96
|
+
publicKey: {
|
|
97
|
+
challenge,
|
|
98
|
+
extensions: { prf: { eval: { first: input } } },
|
|
99
|
+
pubKeyCredParams: [
|
|
100
|
+
{ type: "public-key", alg: -7 },
|
|
101
|
+
{ type: "public-key", alg: -257 },
|
|
102
|
+
],
|
|
103
|
+
rp: { name: this.#appName },
|
|
104
|
+
user: {
|
|
105
|
+
id: challenge,
|
|
106
|
+
name: this.#userName,
|
|
107
|
+
displayName: this.#userName,
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
} catch {
|
|
112
|
+
throw new OperationCancelledError();
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
checkCredential(attestation);
|
|
116
|
+
|
|
117
|
+
const prf = getPrfOutput(attestation);
|
|
118
|
+
if (prf.enabled === undefined) {
|
|
119
|
+
throw new NotSupportedError();
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const id = new Uint8Array(attestation.rawId);
|
|
123
|
+
|
|
124
|
+
if (prf.results) {
|
|
125
|
+
return { output: prf.results.first, id };
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Some authenticators only support getting PRF in assertion
|
|
129
|
+
const output = await this.get(id, input);
|
|
130
|
+
return { output, id };
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Generates PRF output using a credential and input data.
|
|
135
|
+
*
|
|
136
|
+
* @param id ID of a previously created credential
|
|
137
|
+
* @param input The input data
|
|
138
|
+
* @returns PRF output
|
|
139
|
+
* @throws `OperationCancelledError` if the attestation is either cancelled by user or timed out
|
|
140
|
+
*/
|
|
141
|
+
async get(
|
|
142
|
+
id: BufferSource,
|
|
143
|
+
input: Uint8Array<ArrayBuffer>,
|
|
144
|
+
): Promise<BufferSource> {
|
|
145
|
+
const challenge = new Uint8Array(32);
|
|
146
|
+
crypto.getRandomValues(challenge);
|
|
147
|
+
|
|
148
|
+
let assertion;
|
|
149
|
+
try {
|
|
150
|
+
assertion = await navigator.credentials.get({
|
|
151
|
+
publicKey: {
|
|
152
|
+
allowCredentials: [{ type: "public-key", id }],
|
|
153
|
+
challenge,
|
|
154
|
+
extensions: { prf: { eval: { first: input } } },
|
|
155
|
+
},
|
|
156
|
+
});
|
|
157
|
+
} catch {
|
|
158
|
+
throw new OperationCancelledError();
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
checkCredential(assertion);
|
|
162
|
+
|
|
163
|
+
const prfOutput = getPrfOutput(assertion);
|
|
164
|
+
if (!prfOutput.results) {
|
|
165
|
+
throw new NotSupportedError();
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
return prfOutput.results.first;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export namespace TangoWebAuthnPrfSource {
|
|
173
|
+
export type NotSupportedError = typeof NotSupportedError;
|
|
174
|
+
export type OperationCancelledError = typeof OperationCancelledError;
|
|
175
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { MaybeError } from "@yume-chan/adb";
|
|
2
|
+
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
3
|
+
|
|
4
|
+
export interface TangoKey {
|
|
5
|
+
privateKey: Uint8Array;
|
|
6
|
+
name: string | undefined;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface TangoKeyStorage {
|
|
10
|
+
save(
|
|
11
|
+
privateKey: Uint8Array,
|
|
12
|
+
name: string | undefined,
|
|
13
|
+
): MaybePromiseLike<undefined>;
|
|
14
|
+
|
|
15
|
+
load():
|
|
16
|
+
| Iterable<MaybeError<TangoKey>>
|
|
17
|
+
| AsyncIterable<MaybeError<TangoKey>>;
|
|
18
|
+
}
|
package/CHANGELOG.md
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
# Change Log - @yume-chan/adb-credential-web
|
|
2
|
-
|
|
3
|
-
## 2.0.1
|
|
4
|
-
|
|
5
|
-
### Patch Changes
|
|
6
|
-
|
|
7
|
-
- @yume-chan/adb@2.0.1
|
|
8
|
-
|
|
9
|
-
## 2.0.0
|
|
10
|
-
|
|
11
|
-
### Patch Changes
|
|
12
|
-
|
|
13
|
-
- Updated dependencies
|
|
14
|
-
- Updated dependencies [05c01ad]
|
|
15
|
-
- @yume-chan/adb@2.0.0
|
|
16
|
-
|
|
17
|
-
## 1.1.0
|
|
18
|
-
|
|
19
|
-
### Patch Changes
|
|
20
|
-
|
|
21
|
-
- Updated dependencies [ab98953]
|
|
22
|
-
- @yume-chan/adb@1.1.0
|
|
23
|
-
|
|
24
|
-
## 1.0.1
|
|
25
|
-
|
|
26
|
-
### Patch Changes
|
|
27
|
-
|
|
28
|
-
- 53688d3: Use PNPM workspace and Changesets to manage the monorepo.
|
|
29
|
-
|
|
30
|
-
Because Changesets doesn't support alpha versions (`0.x.x`), this version is `1.0.0`. Future versions will follow SemVer rules, for example, breaking API changes will introduce a new major version.
|
|
31
|
-
|
|
32
|
-
- db8466f: Add common interface for device observers
|
|
33
|
-
- Updated dependencies [53688d3]
|
|
34
|
-
- Updated dependencies [db8466f]
|
|
35
|
-
- Updated dependencies [db8466f]
|
|
36
|
-
- Updated dependencies [db8466f]
|
|
37
|
-
- @yume-chan/adb@1.0.1
|
|
38
|
-
|
|
39
|
-
This log was last generated on Tue, 18 Jun 2024 02:49:43 GMT and should not be manually modified.
|
|
40
|
-
|
|
41
|
-
## 0.0.24
|
|
42
|
-
|
|
43
|
-
Tue, 18 Jun 2024 02:49:43 GMT
|
|
44
|
-
|
|
45
|
-
_Version update only_
|
|
46
|
-
|
|
47
|
-
## 0.0.23
|
|
48
|
-
|
|
49
|
-
Thu, 21 Mar 2024 03:15:10 GMT
|
|
50
|
-
|
|
51
|
-
_Version update only_
|
|
52
|
-
|
|
53
|
-
## 0.0.22
|
|
54
|
-
|
|
55
|
-
Wed, 13 Dec 2023 05:57:27 GMT
|
|
56
|
-
|
|
57
|
-
_Version update only_
|
|
58
|
-
|
|
59
|
-
## 0.0.21
|
|
60
|
-
|
|
61
|
-
Fri, 25 Aug 2023 14:05:18 GMT
|
|
62
|
-
|
|
63
|
-
### Updates
|
|
64
|
-
|
|
65
|
-
- Add name for public keys
|
|
66
|
-
- Change to save private keys in IndexedDB, allow usage from Web Workers
|
|
67
|
-
|
|
68
|
-
## 0.0.20
|
|
69
|
-
|
|
70
|
-
Mon, 05 Jun 2023 02:51:41 GMT
|
|
71
|
-
|
|
72
|
-
### Updates
|
|
73
|
-
|
|
74
|
-
- Change `AdbWebCredentialStore` to save private keys in IndexedDB, so it can be used in Web Workers. Previously saved keys in `localStorage` will be ignored and a new key will be generated.
|
|
75
|
-
|
|
76
|
-
## 0.0.19
|
|
77
|
-
|
|
78
|
-
Sun, 09 Apr 2023 05:55:33 GMT
|
|
79
|
-
|
|
80
|
-
_Version update only_
|
|
81
|
-
|
|
82
|
-
## 0.0.18
|
|
83
|
-
|
|
84
|
-
Wed, 25 Jan 2023 21:33:49 GMT
|
|
85
|
-
|
|
86
|
-
_Version update only_
|
|
87
|
-
|
|
88
|
-
## 0.0.17
|
|
89
|
-
|
|
90
|
-
Tue, 18 Oct 2022 09:32:30 GMT
|
|
91
|
-
|
|
92
|
-
### Updates
|
|
93
|
-
|
|
94
|
-
- Update to use new stream util package
|
|
95
|
-
|
|
96
|
-
## 0.0.16
|
|
97
|
-
|
|
98
|
-
Sat, 28 May 2022 03:56:37 GMT
|
|
99
|
-
|
|
100
|
-
### Updates
|
|
101
|
-
|
|
102
|
-
- Upgrade TypeScript to 4.7.2 to enable Node.js ESM
|
|
103
|
-
|
|
104
|
-
## 0.0.15
|
|
105
|
-
|
|
106
|
-
Mon, 02 May 2022 04:18:01 GMT
|
|
107
|
-
|
|
108
|
-
_Version update only_
|
|
109
|
-
|
|
110
|
-
## 0.0.14
|
|
111
|
-
|
|
112
|
-
Sat, 30 Apr 2022 14:05:48 GMT
|
|
113
|
-
|
|
114
|
-
_Version update only_
|
|
115
|
-
|
|
116
|
-
## 0.0.13
|
|
117
|
-
|
|
118
|
-
Thu, 28 Apr 2022 01:23:53 GMT
|
|
119
|
-
|
|
120
|
-
_Version update only_
|
|
121
|
-
|
|
122
|
-
## 0.0.12
|
|
123
|
-
|
|
124
|
-
Sun, 03 Apr 2022 11:18:47 GMT
|
|
125
|
-
|
|
126
|
-
_Version update only_
|
|
127
|
-
|
|
128
|
-
## 0.0.11
|
|
129
|
-
|
|
130
|
-
Sun, 03 Apr 2022 10:54:15 GMT
|
|
131
|
-
|
|
132
|
-
### Updates
|
|
133
|
-
|
|
134
|
-
- Update to use Web Streams API
|
|
135
|
-
- Improve compatibility with Node.js 12 ESM format
|
|
136
|
-
|
|
137
|
-
## 0.0.10
|
|
138
|
-
|
|
139
|
-
Sun, 09 Jan 2022 15:52:20 GMT
|
|
140
|
-
|
|
141
|
-
_Initial release_
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"fileNames":["../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2023.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2024.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.esnext.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2023.array.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2024.object.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.es2024.string.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.esnext.array.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.esnext.collection.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.esnext.promise.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.esnext.iterator.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.esnext.float16.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/.pnpm/typescript@5.8.2/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/.pnpm/@yume-chan+async@4.0.2/node_modules/@yume-chan/async/dts/async-operation-manager.d.ts","../../node_modules/.pnpm/@yume-chan+async@4.0.2/node_modules/@yume-chan/async/dts/delay.d.ts","../../node_modules/.pnpm/@yume-chan+async@4.0.2/node_modules/@yume-chan/async/dts/promise-resolver.d.ts","../../node_modules/.pnpm/@yume-chan+async@4.0.2/node_modules/@yume-chan/async/dts/maybe-promise.d.ts","../../node_modules/.pnpm/@yume-chan+async@4.0.2/node_modules/@yume-chan/async/dts/index.d.ts","../struct/esm/bipedal.d.ts","../struct/esm/readable.d.ts","../struct/esm/field/types.d.ts","../struct/esm/field/serialize.d.ts","../struct/esm/field/factory.d.ts","../struct/esm/field/index.d.ts","../struct/esm/buffer.d.ts","../struct/esm/types.d.ts","../struct/esm/struct.d.ts","../struct/esm/concat.d.ts","../struct/esm/extend.d.ts","../struct/esm/number.d.ts","../struct/esm/string.d.ts","../struct/esm/utils.d.ts","../struct/esm/index.d.ts","../stream-extra/esm/types.d.ts","../stream-extra/esm/stream.d.ts","../stream-extra/esm/buffered.d.ts","../stream-extra/esm/buffered-transform.d.ts","../stream-extra/esm/concat.d.ts","../stream-extra/esm/consumable.d.ts","../stream-extra/esm/maybe-consumable-ns.d.ts","../stream-extra/esm/maybe-consumable.d.ts","../stream-extra/esm/distribution.d.ts","../stream-extra/esm/wrap-readable.d.ts","../stream-extra/esm/duplex.d.ts","../stream-extra/esm/encoding.d.ts","../stream-extra/esm/inspect.d.ts","../stream-extra/esm/pipe-from.d.ts","../stream-extra/esm/push-readable.d.ts","../stream-extra/esm/split-string.d.ts","../stream-extra/esm/struct-deserialize.d.ts","../stream-extra/esm/struct-serialize.d.ts","../stream-extra/esm/task.d.ts","../stream-extra/esm/try-close.d.ts","../stream-extra/esm/wrap-writable.d.ts","../stream-extra/esm/index.d.ts","../adb/esm/features.d.ts","../adb/esm/banner.d.ts","../event/esm/disposable.d.ts","../event/esm/event.d.ts","../event/esm/event-emitter.d.ts","../event/esm/sticky-event-emitter.d.ts","../event/esm/utils.d.ts","../event/esm/index.d.ts","../adb/esm/commands/base.d.ts","../adb/esm/commands/framebuffer.d.ts","../adb/esm/commands/power.d.ts","../adb/esm/commands/reverse.d.ts","../adb/esm/commands/subprocess/none/spawner.d.ts","../adb/esm/commands/subprocess/none/process.d.ts","../adb/esm/commands/subprocess/pty.d.ts","../adb/esm/commands/subprocess/none/pty.d.ts","../adb/esm/commands/subprocess/none/service.d.ts","../adb/esm/commands/subprocess/none/index.d.ts","../adb/esm/commands/subprocess/shell/spawner.d.ts","../adb/esm/commands/subprocess/shell/process.d.ts","../adb/esm/commands/subprocess/shell/pty.d.ts","../adb/esm/commands/subprocess/shell/service.d.ts","../adb/esm/commands/subprocess/shell/shared.d.ts","../adb/esm/commands/subprocess/shell/index.d.ts","../adb/esm/commands/subprocess/service.d.ts","../adb/esm/commands/subprocess/utils.d.ts","../adb/esm/commands/subprocess/index.d.ts","../adb/esm/utils/auto-reset-event.d.ts","../adb/esm/utils/base64.d.ts","../adb/esm/utils/hex.d.ts","../adb/esm/utils/no-op.d.ts","../adb/esm/utils/ref.d.ts","../adb/esm/utils/sequence-equal.d.ts","../adb/esm/utils/index.d.ts","../adb/esm/commands/sync/socket.d.ts","../adb/esm/commands/sync/stat.d.ts","../adb/esm/commands/sync/list.d.ts","../adb/esm/commands/sync/pull.d.ts","../adb/esm/commands/sync/push.d.ts","../adb/esm/commands/sync/request.d.ts","../adb/esm/commands/sync/response.d.ts","../adb/esm/commands/sync/sync.d.ts","../adb/esm/commands/sync/index.d.ts","../adb/esm/commands/tcpip.d.ts","../adb/esm/commands/index.d.ts","../adb/esm/adb.d.ts","../adb/esm/daemon/packet.d.ts","../adb/esm/daemon/auth.d.ts","../adb/esm/daemon/crypto.d.ts","../adb/esm/daemon/device.d.ts","../adb/esm/daemon/dispatcher.d.ts","../adb/esm/daemon/socket.d.ts","../adb/esm/daemon/transport.d.ts","../adb/esm/daemon/index.d.ts","../adb/esm/device-observer.d.ts","../adb/esm/server/commands/m-dns.d.ts","../adb/esm/server/commands/wireless.d.ts","../adb/esm/server/commands/index.d.ts","../adb/esm/server/stream.d.ts","../adb/esm/server/transport.d.ts","../adb/esm/server/client.d.ts","../adb/esm/server/observer.d.ts","../adb/esm/server/index.d.ts","../adb/esm/index.d.ts","./src/index.ts"],"fileIdsList":[[185],[84,121,122,123,166],[122],[129,167],[99,167],[130,131,132,133,148,164,165],[130],[121,130,167],[139,145,146,147],[134,135,137,138],[84,121,134,167],[84,121,136,167],[134,137,167],[84,121],[139,145,167],[140,141,142,143,144],[84,121,140,167],[140,142,167],[99],[156,157,158,159,160,161,162,163],[99,156,157],[99,121,156],[99,121,156,157],[99,121,155,167],[99,156],[99,121,156,157,158,167],[84,129,168],[84,121,168],[121,167,168],[168,169,170,171,172,173,174],[99,121],[121,129,167,172],[84,121,122,123,167,168,169],[84,129],[122,123,155,166,167,175,176,184],[84,121,122,129,167,176,179,180,181],[177,178],[182],[180,181,182,183],[84,100,121,182],[122,123,167,182],[129],[99,149,150,151,152,153,154],[124,125],[124],[124,125,126,127,128],[125,126],[125],[84,101,102],[84,99,101],[101],[101,107],[84,101,109],[101,102,103,104,105,107,108,109,110,111,112,113,114,115,116,117,118,119,120],[101,105,107],[105,106],[100,101],[100],[99,103],[99,101],[101,102,114],[84,101],[84],[90],[93],[85,86,87,88],[87,88,89],[87],[84,86],[85,86,90,91,92,93,94,95,96,97,98],[90,91],[90,92],[84,86,90],[80,81,82,83]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"8bf8b5e44e3c9c36f98e1007e8b7018c0f38d8adc07aecef42f5200114547c70","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"4942ce52738852aac9e3eb7b2743abd920ea3f62dfc930e8ab49db6672c5d292","impliedFormat":1},{"version":"f232c6de4d9dacf27320453a89e04c29b3bcc7a084ee6184de18a15e4a1a3a1d","impliedFormat":1},{"version":"557a9670c1bb00cdd5eb309ed1e28665fdefe501a4b12eb124dc1bcaa1498328","impliedFormat":1},{"version":"0bbbbb1b5a4f7a77a28dbcd2fc59311affab8cfed9dba97b5d5cf20ae7fbc3f3","impliedFormat":1},{"version":"f9e4b9df247b6b2ec942f9a043801a67c70d94014546d6d2c27d32cb729e470c","impliedFormat":1},{"version":"19872606f722ee6d7e7ae009f5e1d5518695d592de0bc88fbecffb09a190f61c","impliedFormat":99},{"version":"87b3f584a85a5c19bbc331b864710b5a17385c555449f10f1172a2fcdd461e80","impliedFormat":99},{"version":"584c50ac39249bea22701fc35e079d771574d7c7a5974813cac8478e49dd197f","impliedFormat":99},{"version":"f479141fdc9002c67ba83693f4d6b61daecb7af890d5f821dada93894b1c72bf","impliedFormat":99},{"version":"cc3fd3344888f2d160e3ef75189a200fd80e72f4ef4b61455a4474d79477bdeb","impliedFormat":99},{"version":"9ed39feaedfaa6d05973b74694ab07211fff43efb1ca554be3bda00ac86de46d","impliedFormat":99},{"version":"30dd5b92fc2765d755b3fb4c9da73926895a89c5a618018f2f5e259e7860b1f4","impliedFormat":99},{"version":"f03d368eceab76c159f7d9649c64aabb9f9c02f46b8d2a2c60a9e9cf4e2053fb","impliedFormat":99},{"version":"7baf146c111bff2cfcd0d3a69bbd4469d9618c9e08fb63eba7a8bf0e4b5f1417","impliedFormat":99},{"version":"2b8f38a2e51f762168a4ab8a06c92a78240f65ddaed431005b1056df859f1457","impliedFormat":99},{"version":"a55b182059f77da2687ed0e8877fd4e24481e883fcaf311f48b8ad98673e3e74","impliedFormat":99},{"version":"e4a185f4c6aa238c812d3c2ba9746d4bf198a31e70e9fae83d107457f0ab10df","impliedFormat":99},{"version":"910abfd85acbc348dd025d4d661db4625d4458de02c7419d948af152c282e512","impliedFormat":99},{"version":"0e7c5f81cf7dc16c999d304b346382a6002366a59278023907ea8c5685800c03","impliedFormat":99},{"version":"ca896dd22a7f1395338a89d9af4199176e8de935628611e299b218183b0f3e8f","affectsGlobalScope":true,"impliedFormat":99},{"version":"27b560836a01152ed34769a9757f2b063c4dd0d7c1e875977c9ecffd50a66098","impliedFormat":99},{"version":"705e82082894a3dc7f6b92b023914e1bf0db10788ddbdf07806002c26a1db3a9","impliedFormat":99},{"version":"93758b16a8798ec0957abf049ef5091497465d024e3b68a2be986ae984b8ebb0","impliedFormat":99},{"version":"233b3ef5dfa40f3459846e94d43c000736582e2ca85d17c496a47e582f79d102","impliedFormat":99},{"version":"256ac5c01fbbd7f17ec5d916b2cf1c4639cef6d5ac2161c82849db6cdc8d0c42","impliedFormat":99},{"version":"3a6fe6996faa81aac1b9671e3ede384329cffe766eb86d357d90ea5e4b9899be","impliedFormat":99},{"version":"620121398a0868aae1852fef40e3a17837301b7a893953dd40081b4fce66ad0b","impliedFormat":99},{"version":"01d8b9ab9821f80e59270ec682228e98a9f6a7c9bf3d3f64bc9bc57c7853e7c2","impliedFormat":99},{"version":"afe4250b9645928151991fd60790a92571d9251b60be91032152b472d6830ebf","impliedFormat":99},{"version":"68cdca7414470b34b6dba8e14fdbf17393148f84944d31e2adf5ed933f3ec8fa","impliedFormat":99},{"version":"0703fbf0cefe3eaa09abff465ad292b89464a2c80bb8d2bb2942fc3dc08e0285","impliedFormat":99},{"version":"d24fed323d65a8d753ff2d0ea105f5d0788a50b585c1a1334d9bd336b2f378c7","impliedFormat":99},{"version":"4ebc57d20caf062019a2b8c9ce1e54602a411022eb4f7fa325888b9bcf63693a","impliedFormat":99},{"version":"52279f70738da349b60a09be1294e3295c7e37189c10deb083ed6b5eb1c86744","impliedFormat":99},{"version":"6fa6950e14d6ca719a29c3ad2fb79d2b03a175af9e3441b3e762cf3b22c92d2b","impliedFormat":99},{"version":"98678d6ac29dfa3f80452de2a87f464dee4908476f817d6f5e0677802ad43f7b","impliedFormat":99},{"version":"b81bc956c1dfc60bfb0513e73aaad2f0331adf19407fdce70379bc7dc02c4e15","impliedFormat":99},{"version":"b96ce25bbc9ee012b65c73821ae59f90a168d1aa62da606948de8bcc561b1fde","impliedFormat":99},{"version":"560a9f24b6bcfc74fc2a18f6e8355aff169d15541c6ebd0ff7e05bdaad2f8949","impliedFormat":99},{"version":"aa375ae5339d3a81d468812021abeb49eafd532086482680f04ff539c93669bf","impliedFormat":99},{"version":"370c1b27c11d16c33a1fc96d8304fa7a2d4397cf849c6681e3c45b3818a933d7","impliedFormat":99},{"version":"b3f766182cb2158c59e513af05994dec67564359d841cdcc7dcbcb16aea3974e","impliedFormat":99},{"version":"142e20882a4b6555b471993a338c2148f555a3bf566eb99fa35a9cd12a49e10d","impliedFormat":99},{"version":"e4aecc7e3307c1c9602cb743977073f239781d74998285e3647e5b8884354506","impliedFormat":99},{"version":"207ecf493b69ddca525bbbd8f1d120d99d00be1448ae8c0e690526f24dc182ca","impliedFormat":99},{"version":"af6ac8a19dbd05c34feff97d0eae81194fd0be1358bd2366478e9a574492d332","impliedFormat":99},{"version":"346557f6ca397f60089615ebe31c22e9aaa64ed104db53e72858a5b3c97aab66","impliedFormat":99},{"version":"e3427f1af48d46a0ebf78760ab9417773d00be504683ec0dd1c70e6eef3391ba","impliedFormat":99},{"version":"f00b8fc0c970cfd54d4df6047aae216bce4d7a2ceb6610655541a678ac54c57a","impliedFormat":99},{"version":"6006c2501c5f4bd65c31bad2a9ef2895a3c71d9d65a5ded4a85b1c9514c18041","impliedFormat":99},{"version":"1a47bba67b1bec83023979d7972c25f286e293902b6f4fd15c6dee8f55eff714","impliedFormat":99},{"version":"09d4077fd1fd4bf639ffacecb0adb3f375ceaf3d3b947d31f30948176f762d76","impliedFormat":99},{"version":"bdb1cfa306afeae93721bab7efe74258761247a644d85a5a10fb739a8606ab14","impliedFormat":99},{"version":"b249d533a9799a13f724da99defffd318b4acf61a5ad421a1d1ea6f60683a5f0","impliedFormat":99},{"version":"71e066dd48d78ac8a6f732f47310cfaf86bf15cd5ace83c449fd1bacc38aa7f5","impliedFormat":99},{"version":"ed82977a9c942b909b2996783b9bbe90fe91391a51c511dc69d7bb20e94a8437","impliedFormat":99},{"version":"85c41b79bab9f8c206d16452e577fcbe186ade544cb526364d7bca5ed9574fcb","impliedFormat":99},{"version":"45124b54526973bc3aafc573815d1a5cebc683b61c48f35aceccfe16aec2aabc","impliedFormat":99},{"version":"132ef8884970a9bed2bd5981db6ab7984f8743e18935d17187f17a40eac526c6","impliedFormat":99},{"version":"8f9027142f8676845857e9381a5942f80b1470233ab99e92baa52000d7293af0","impliedFormat":99},{"version":"e14af15d10a42b4e2eca9a12fd371b9243d5be470d307e94217df9b381d0628f","impliedFormat":99},{"version":"32a5dd335b39a6ead7f14c9ada92c4293d1d48fd1e9a504db28aa03571071e45","impliedFormat":99},{"version":"36bc119be692c5a87c85d755981faa6c83f7cb24918baed60bbd1d0cf958af41","impliedFormat":99},{"version":"78919e464c45553fe117be5827356fb8733d5dbe97c53da3df32b68d4d986f6d","impliedFormat":99},{"version":"232606d9b702acabb28c11ac3096ec8b164abc7025ab970175b2fb0c7e46fed6","impliedFormat":99},{"version":"6ed8b6e8060c452971256594b8f874c357a469393296e87bb3c2f1d5b4405bd1","impliedFormat":99},{"version":"51b82d4844fc1e4326629d5189ee0306b0e5d8b5986f263572b3056100d411c4","impliedFormat":99},{"version":"9bf6d10700e6702ac26248138a6bbc9f55d582c488be81a41be3b3eadedc936b","impliedFormat":99},{"version":"07a6c18e08abb31b5e4aa18c945c79195d3f453fc9419e54a75b9491c0a63d5b","impliedFormat":99},{"version":"40471ac4c2b6056bdc7ee09f1f279345d8fcc40b8b326eac38cff2df37ece97a","impliedFormat":99},{"version":"c82303f9ddeb0df5c2853ba02e9f1603ad0f01200225e6ee4cb2da53757243c0","impliedFormat":99},{"version":"6ca4db25e7bb76bda633a36d700bf10a07535a80df1870c375c8469c820448fc","impliedFormat":99},{"version":"6bfed074c652e8043dfc926842ebc05f81db6c0c45b521e4bedc9dd8998df736","impliedFormat":99},{"version":"61b6076ddd630a3ea556e9836d6b8b46d9b1e30b5d4caa338a7c0162cd148e75","impliedFormat":99},{"version":"21f936f4e0645998eb943a0b51ae386fb8c30dc5c2ec3af0202783eb6bc454ff","impliedFormat":99},{"version":"b33ef430acb7969ba485827d1dedd66d315263a57ff29a809cd246ea53d3509e","impliedFormat":99},{"version":"e0dfc3c48a5eb78ea39a9ae0d17c472e1aeb4ee213b65f6d3b54f145fafbbc42","impliedFormat":99},{"version":"694249bf032f13738866491f2f15fe984381fb6f45d7be8e29936c2c11f085d5","impliedFormat":99},{"version":"9b4f6757a9bfca5f00390e50f1b08406e73bc8d1591ec8dd9ff606333f2c5761","impliedFormat":99},{"version":"d70c85a5a0ab30712a9ace0ecb31ff2339cfb3fc209f9a3c578f64f11f7fcd44","impliedFormat":99},{"version":"60dffeffb44ee472d799379d115ef4a5ffb380dd48c45d7bf5e0e3a3224d246e","impliedFormat":99},{"version":"58b7381ddbfd466a014ad08b174df5efbe10193e297ce9da9d30c8d9cfe2c6eb","impliedFormat":99},{"version":"1d385ac55b2dfea2248fc155c4a96f7209a157612cdc1ee23d86d0377afb5834","impliedFormat":99},{"version":"4876b5ff21c8d3d161d00608f8022ebbd8ecc57555cf8e765bbc42ce13ddc378","impliedFormat":99},{"version":"eb90fe18be0b3b5b759ff8f055e9ccb19c6a4287c9061c7a4bb9805968e46498","impliedFormat":99},{"version":"a8e3ca933f3a58c5a3071761a493c760a55305b8f537a47a47a1c7c421ead6df","impliedFormat":99},{"version":"055d5c58abf9c069d88cd9f62a426008adc38258390ceba978fa527fffa54441","impliedFormat":99},{"version":"b6d7d9de1e7f4c2333c3e51dc3469dc181717f737314750214936ff33a4d7d8e","impliedFormat":99},{"version":"eea976052efa564c8567a9c2905505854e59baea57831348bb97580ec12581aa","impliedFormat":99},{"version":"5bca7d06fb545a2ea8b22930e5c6752e46bd7b87b11677f964df7248d5702e9c","impliedFormat":99},{"version":"e213c05bfecf005d421301d658aa8838cf03913c9d5aa0d112a5b33e5cf4ce4c","impliedFormat":99},{"version":"bdfab105e5c6c095171d0721a84fafab796b301b7f5129158e6e7292b26a4410","impliedFormat":99},{"version":"d3f2d733b25bb7dbc29a22679abb5e8bd7235f491aec7c919272b9a824818bfa","impliedFormat":99},{"version":"816958f37db39f1d6352d585cb545c46093b56be9a9f7b49714b4e7fe75af8e1","impliedFormat":99},{"version":"c3e9d6bbda8078eb2b97d69ec0d5fd4585aaa7f966581dd273d890c6f8cdc910","impliedFormat":99},{"version":"6651e0e8d0a95ccab2cd3b24df4ea6c33da06499f588938f8758d2d3e822090a","impliedFormat":99},{"version":"43214bffa2a064162dc1c709f7a7b3d0d8fb5aff2267d092e7291b1b044010c6","impliedFormat":99},{"version":"c3ceb3c63334d4f5f85a03477ca9b91c2580cfd066094a1b58a9139bbe7eacb9","impliedFormat":99},{"version":"8a6c4b0864ddb785d14b36fd4fba10d56c5207d2951e2309c5616d80636e33a6","impliedFormat":99},{"version":"d44a0baed7a6e69366547f41056652efc7e8f3ba445696daa62469dc9703e3a9","impliedFormat":99},{"version":"00a2ff8223ad17bacbce81edb4fbee1ae7d8430c46cf1a86936642c14a6c0407","impliedFormat":99},{"version":"e790bdb4a5ddb41d954275aeb1984ae35acbbf7ee3056ccb06e190dee4b28358","impliedFormat":99},{"version":"f6c7758a570559d39699a30603a2036959300104e95fb1a4d7e1a06c5d78f23f","impliedFormat":99},{"version":"23e57691630d0e1269a2505390eb858a3fb4c1a144d9a32a375d40b9ff9fb127","impliedFormat":99},{"version":"9794fd5a3d2183b5a987c6b02cf3732fdf1ed97b6f66d1c858b50a318069b637","impliedFormat":99},{"version":"74c194a9e7a5a5880e675fa8c22bc7d06e10c97c868117d145734aacfbda7381","impliedFormat":99},{"version":"8412532110345cff6fd711070808f845a9d9ef812cf84411ccf0d072fd0598a9","signature":"4459f3f804efd49e456e742393dcac5710c13e630a8b170dc1e4d3687d5df63c","impliedFormat":99}],"root":[186],"options":{"composite":true,"declaration":true,"declarationDir":"./esm","declarationMap":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"module":199,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitReturns":true,"noImplicitThis":true,"noUncheckedIndexedAccess":true,"noUncheckedSideEffectImports":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./esm","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"stripInternal":true,"target":99,"verbatimModuleSyntax":true},"referencedMap":[[186,1],[167,2],[123,3],[130,4],[131,5],[166,6],[132,7],[133,8],[148,9],[139,10],[135,11],[137,12],[138,13],[134,14],[136,14],[146,15],[145,16],[141,17],[142,12],[143,18],[144,19],[140,14],[164,20],[158,21],[159,22],[160,23],[161,19],[162,19],[156,24],[157,25],[163,26],[165,7],[169,27],[171,28],[172,29],[175,30],[168,31],[173,32],[174,33],[176,34],[185,35],[182,36],[179,37],[177,38],[178,38],[184,39],[183,38],[180,40],[181,41],[149,42],[155,43],[126,44],[125,45],[129,46],[127,47],[128,48],[103,49],[102,50],[104,51],[105,51],[108,52],[110,53],[111,51],[121,54],[112,51],[106,55],[107,56],[113,57],[114,51],[115,51],[101,58],[116,59],[117,60],[119,61],[109,62],[120,62],[85,63],[91,64],[94,65],[95,65],[89,66],[90,67],[88,68],[87,69],[99,70],[96,64],[86,63],[97,71],[93,72],[92,73],[84,74]],"latestChangedDtsFile":"./esm/index.d.ts","version":"5.8.2"}
|