@omnimedia/omnitool 1.1.0-101 → 1.1.0-104
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/README.md +2 -0
- package/package.json +3 -1
- package/s/driver/driver.ts +4 -0
- package/s/driver/parts/compositor.ts +4 -0
- package/s/features/speech/transcribe/parts/prep-audio.ts +19 -14
- package/s/timeline/parts/basics.ts +1 -1
- package/s/timeline/parts/resource-pool.ts +2 -2
- package/s/timeline/parts/resource.ts +0 -1
- package/s/timeline/renderers/player/player.ts +4 -0
- package/s/timeline/utils/checksum.ts +12 -9
- package/s/timeline/utils/datafile.ts +2 -12
- package/x/demo/demo.bundle.min.js +104 -104
- package/x/demo/demo.bundle.min.js.map +4 -4
- package/x/driver/driver.d.ts +1 -0
- package/x/driver/driver.js +3 -0
- package/x/driver/driver.js.map +1 -1
- package/x/driver/parts/compositor.d.ts +1 -0
- package/x/driver/parts/compositor.js +3 -0
- package/x/driver/parts/compositor.js.map +1 -1
- package/x/features/speech/transcribe/parts/prep-audio.js +17 -13
- package/x/features/speech/transcribe/parts/prep-audio.js.map +1 -1
- package/x/index.html +2 -2
- package/x/tests.bundle.min.js +109 -109
- package/x/tests.bundle.min.js.map +4 -4
- package/x/tests.html +1 -1
- package/x/timeline/parts/basics.d.ts +1 -1
- package/x/timeline/parts/resource-pool.js +2 -2
- package/x/timeline/parts/resource-pool.js.map +1 -1
- package/x/timeline/parts/resource.d.ts +0 -1
- package/x/timeline/renderers/player/player.d.ts +1 -0
- package/x/timeline/renderers/player/player.js +3 -0
- package/x/timeline/renderers/player/player.js.map +1 -1
- package/x/timeline/utils/checksum.d.ts +2 -4
- package/x/timeline/utils/checksum.js +11 -12
- package/x/timeline/utils/checksum.js.map +1 -1
- package/x/timeline/utils/datafile.d.ts +1 -2
- package/x/timeline/utils/datafile.js +3 -14
- package/x/timeline/utils/datafile.js.map +1 -1
package/x/tests.html
CHANGED
|
@@ -6,13 +6,13 @@ export class ResourcePool {
|
|
|
6
6
|
async store(datafile) {
|
|
7
7
|
const media = await Media.analyze(datafile);
|
|
8
8
|
const { hash } = media.datafile.checksum;
|
|
9
|
-
const { filename,
|
|
9
|
+
const { filename, url, blob } = media.datafile;
|
|
10
10
|
if (this.#map.has(hash)) {
|
|
11
11
|
const alreadyExists = this.#map.require(hash);
|
|
12
12
|
alreadyExists.filename = filename;
|
|
13
13
|
}
|
|
14
14
|
else
|
|
15
|
-
this.#map.set(hash, { kind: "media", filename,
|
|
15
|
+
this.#map.set(hash, { kind: "media", filename, url, blob, duration: media.duration });
|
|
16
16
|
return media;
|
|
17
17
|
}
|
|
18
18
|
require(hash) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-pool.js","sourceRoot":"","sources":["../../../s/timeline/parts/resource-pool.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AAE9B,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA;AAIhC,MAAM,OAAO,YAAY;IACxB,IAAI,GAAG,IAAI,IAAwB,CAAA;IAEnC,sDAAsD;IACtD,KAAK,CAAC,KAAK,CAAC,QAAkB;QAC7B,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC3C,MAAM,EAAC,IAAI,EAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAA;QACtC,MAAM,EAAC,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"resource-pool.js","sourceRoot":"","sources":["../../../s/timeline/parts/resource-pool.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AAE9B,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA;AAIhC,MAAM,OAAO,YAAY;IACxB,IAAI,GAAG,IAAI,IAAwB,CAAA;IAEnC,sDAAsD;IACtD,KAAK,CAAC,KAAK,CAAC,QAAkB;QAC7B,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC3C,MAAM,EAAC,IAAI,EAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAA;QACtC,MAAM,EAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAC,GAAG,KAAK,CAAC,QAAQ,CAAA;QAE5C,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAC7C,aAAa,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAClC,CAAC;;YAEA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAC,CAAC,CAAA;QAEpF,OAAO,KAAK,CAAA;IACb,CAAC;IAED,OAAO,CAAC,IAAU;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;CACD"}
|
|
@@ -13,6 +13,7 @@ export declare class VideoPlayer {
|
|
|
13
13
|
pause(): void;
|
|
14
14
|
seek(timeMs: number): Promise<void>;
|
|
15
15
|
setFPS(value: number): void;
|
|
16
|
+
resize(width: number, height: number): void;
|
|
16
17
|
get isSeeking(): boolean;
|
|
17
18
|
get isPlaying(): boolean;
|
|
18
19
|
get duration(): import("../../../units/ms.js").Ms;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"player.js","sourceRoot":"","sources":["../../../../s/timeline/renderers/player/player.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,EAAE,EAAC,MAAM,sBAAsB,CAAA;AACvC,OAAO,EAAC,GAAG,EAAC,MAAM,uBAAuB,CAAA;AACzC,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAA;AAO5C,MAAM,OAAO,WAAW;IAQd;IAPT,MAAM,CAAmB;IACzB,QAAQ,CAAU;IAElB,YAAY,GAAkB,IAAI,CAAA;IAClC,UAAU,GAAyB,IAAI,CAAA;IAEvC,YACS,MAAc,EACtB,YAA0B,EAC1B,QAAsB;QAFd,WAAM,GAAN,MAAM,CAAQ;QAItB,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAA;QAC5D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;IACrD,CAAC;IAED,KAAK,CAAC,IAAI;QACT,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IAC5B,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;IAED,IAAI,CAAC,MAAc;QAClB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAA;QAC1B,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAA;IACpF,CAAC;IAED,MAAM,CAAC,KAAa;QACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IACjC,CAAC;IAED,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAA;IAChC,CAAC;IAED,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAA;IAC/B,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAA;IAC9B,CAAC;IAED,IAAI,WAAW;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAA;IACjC,CAAC;IAED,IAAI,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAA;IAClC,CAAC;IAED,IAAI,YAAY,CAAC,IAAY;QAC5B,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAA;IAClC,CAAC;IAED;;MAEE;IACF,KAAK,CAAC,MAAM,CAAC,QAAsB;QAClC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS;YAClB,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,WAAW;QAChB,OAAO,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAA;YAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;YACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;YACjD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;YACjD,KAAK,CAAC,KAAK,EAAE,CAAA;QACd,CAAC;IACF,CAAC;CACD"}
|
|
1
|
+
{"version":3,"file":"player.js","sourceRoot":"","sources":["../../../../s/timeline/renderers/player/player.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,EAAE,EAAC,MAAM,sBAAsB,CAAA;AACvC,OAAO,EAAC,GAAG,EAAC,MAAM,uBAAuB,CAAA;AACzC,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAA;AAO5C,MAAM,OAAO,WAAW;IAQd;IAPT,MAAM,CAAmB;IACzB,QAAQ,CAAU;IAElB,YAAY,GAAkB,IAAI,CAAA;IAClC,UAAU,GAAyB,IAAI,CAAA;IAEvC,YACS,MAAc,EACtB,YAA0B,EAC1B,QAAsB;QAFd,WAAM,GAAN,MAAM,CAAQ;QAItB,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAA;QAC5D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;IACrD,CAAC;IAED,KAAK,CAAC,IAAI;QACT,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IAC5B,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;IAED,IAAI,CAAC,MAAc;QAClB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAA;QAC1B,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAA;IACpF,CAAC;IAED,MAAM,CAAC,KAAa;QACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IACjC,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,MAAc;QACnC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAClC,CAAC;IAED,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAA;IAChC,CAAC;IAED,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAA;IAC/B,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAA;IAC9B,CAAC;IAED,IAAI,WAAW;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAA;IACjC,CAAC;IAED,IAAI,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAA;IAClC,CAAC;IAED,IAAI,YAAY,CAAC,IAAY;QAC5B,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAA;IAClC,CAAC;IAED;;MAEE;IACF,KAAK,CAAC,MAAM,CAAC,QAAsB;QAClC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS;YAClB,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,WAAW;QAChB,OAAO,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAA;YAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;YACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;YACjD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;YACjD,KAAK,CAAC,KAAK,EAAE,CAAA;QACd,CAAC;IACF,CAAC;CACD"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { Hash } from "../parts/basics.js";
|
|
2
2
|
export declare class Checksum {
|
|
3
|
-
data: Uint8Array;
|
|
4
|
-
bytes: Uint8Array;
|
|
5
3
|
hash: Hash;
|
|
6
4
|
nickname: string;
|
|
7
|
-
constructor(
|
|
8
|
-
static make(
|
|
5
|
+
constructor(hash: Hash, nickname: string);
|
|
6
|
+
static make(file: Blob): Promise<Checksum>;
|
|
9
7
|
}
|
|
@@ -1,21 +1,20 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hex, thumbprint } from "@e280/stz";
|
|
2
|
+
import { blake3 } from "@awasm/noble";
|
|
2
3
|
export class Checksum {
|
|
3
|
-
data;
|
|
4
|
-
bytes;
|
|
5
4
|
hash;
|
|
6
5
|
nickname;
|
|
7
|
-
constructor(
|
|
8
|
-
this.data = data;
|
|
9
|
-
this.bytes = bytes;
|
|
6
|
+
constructor(hash, nickname) {
|
|
10
7
|
this.hash = hash;
|
|
11
8
|
this.nickname = nickname;
|
|
12
9
|
}
|
|
13
|
-
static async make(
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
|
|
10
|
+
static async make(file) {
|
|
11
|
+
const hasher = blake3.create();
|
|
12
|
+
for await (const chunk of file.stream())
|
|
13
|
+
hasher.update(chunk);
|
|
14
|
+
const digest = hasher.digest();
|
|
15
|
+
const hash = hex.fromBytes(digest);
|
|
16
|
+
const nickname = thumbprint.sigil.fromBytes(digest);
|
|
17
|
+
return new this(hash, nickname);
|
|
19
18
|
}
|
|
20
19
|
}
|
|
21
20
|
//# sourceMappingURL=checksum.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checksum.js","sourceRoot":"","sources":["../../../s/timeline/utils/checksum.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAE,UAAU,EAAC,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"checksum.js","sourceRoot":"","sources":["../../../s/timeline/utils/checksum.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAE,UAAU,EAAC,MAAM,WAAW,CAAA;AACzC,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAA;AAInC,MAAM,OAAO,QAAQ;IAEZ;IACA;IAFR,YACQ,IAAU,EACV,QAAgB;QADhB,SAAI,GAAJ,IAAI,CAAM;QACV,aAAQ,GAAR,QAAQ,CAAQ;IACrB,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAU;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAA;QAE9B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YACtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAErB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAA;QAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAClC,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACnD,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAChC,CAAC;CACD"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { Checksum } from "./checksum.js";
|
|
2
2
|
export declare class Datafile {
|
|
3
3
|
url: string;
|
|
4
|
-
bytes: Uint8Array;
|
|
5
4
|
blob: Blob;
|
|
6
5
|
filename: string;
|
|
7
6
|
checksum: Checksum;
|
|
8
|
-
constructor(url: string,
|
|
7
|
+
constructor(url: string, blob: Blob, filename: string, checksum: Checksum);
|
|
9
8
|
static make(file: Blob, name?: string): Promise<Datafile>;
|
|
10
9
|
static load(path: string): Promise<void>;
|
|
11
10
|
}
|
|
@@ -1,33 +1,22 @@
|
|
|
1
1
|
import { Checksum } from "./checksum.js";
|
|
2
2
|
export class Datafile {
|
|
3
3
|
url;
|
|
4
|
-
bytes;
|
|
5
4
|
blob;
|
|
6
5
|
filename;
|
|
7
6
|
checksum;
|
|
8
|
-
constructor(url,
|
|
7
|
+
constructor(url, blob, filename, checksum) {
|
|
9
8
|
this.url = url;
|
|
10
|
-
this.bytes = bytes;
|
|
11
9
|
this.blob = blob;
|
|
12
10
|
this.filename = filename;
|
|
13
11
|
this.checksum = checksum;
|
|
14
12
|
}
|
|
15
13
|
static async make(file, name) {
|
|
16
|
-
const
|
|
17
|
-
const bytes = new Uint8Array(buffer);
|
|
18
|
-
const checksum = await Checksum.make(bytes);
|
|
14
|
+
const checksum = await Checksum.make(file);
|
|
19
15
|
const filename = name ?? checksum.nickname;
|
|
20
16
|
const url = URL.createObjectURL(file);
|
|
21
|
-
return new this(url,
|
|
17
|
+
return new this(url, file, filename, checksum);
|
|
22
18
|
}
|
|
23
19
|
static async load(path) {
|
|
24
|
-
// const file = await fetch(path)
|
|
25
|
-
// const buffer = await file.arrayBuffer()
|
|
26
|
-
// const bytes = new Uint8Array(buffer)
|
|
27
|
-
// const filename = file?.headers.get('Content-Disposition')?.split('filename=')[1] ?? "file"
|
|
28
|
-
// console.log(filename)
|
|
29
|
-
// const checksum = await Checksum.make(bytes)
|
|
30
|
-
// return new this(path, bytes, filename, checksum)
|
|
31
20
|
}
|
|
32
21
|
}
|
|
33
22
|
//# sourceMappingURL=datafile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datafile.js","sourceRoot":"","sources":["../../../s/timeline/utils/datafile.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAA;AAEtC,MAAM,OAAO,QAAQ;IAEZ;IACA;IACA;IACA;
|
|
1
|
+
{"version":3,"file":"datafile.js","sourceRoot":"","sources":["../../../s/timeline/utils/datafile.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAA;AAEtC,MAAM,OAAO,QAAQ;IAEZ;IACA;IACA;IACA;IAJR,YACQ,GAAW,EACX,IAAU,EACV,QAAgB,EAChB,QAAkB;QAHlB,QAAG,GAAH,GAAG,CAAQ;QACX,SAAI,GAAJ,IAAI,CAAM;QACV,aAAQ,GAAR,QAAQ,CAAQ;QAChB,aAAQ,GAAR,QAAQ,CAAU;IACvB,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAU,EAAE,IAAa;QAC1C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,QAAQ,GAAG,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAA;QAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QACrC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAY;IAC9B,CAAC;CACD"}
|