@misofm/sdk 0.2.0 → 0.3.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/README.md +37 -5
- package/dist/catalog.d.ts +30 -0
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +60 -1
- package/dist/catalog.js.map +1 -1
- package/dist/contracts/miso_drop/drop.d.ts +550 -0
- package/dist/contracts/miso_drop/drop.d.ts.map +1 -0
- package/dist/contracts/miso_drop/drop.js +523 -0
- package/dist/contracts/miso_drop/drop.js.map +1 -0
- package/dist/contracts.d.ts +1 -0
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +3 -0
- package/dist/contracts.js.map +1 -1
- package/dist/credits.d.ts.map +1 -1
- package/dist/credits.js +4 -2
- package/dist/credits.js.map +1 -1
- package/dist/drop.d.ts +120 -0
- package/dist/drop.d.ts.map +1 -0
- package/dist/drop.js +152 -0
- package/dist/drop.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/read/artist.d.ts +24 -0
- package/dist/read/artist.d.ts.map +1 -0
- package/dist/read/artist.js +114 -0
- package/dist/read/artist.js.map +1 -0
- package/dist/read/catalog.d.ts +63 -0
- package/dist/read/catalog.d.ts.map +1 -0
- package/dist/read/catalog.js +252 -0
- package/dist/read/catalog.js.map +1 -0
- package/dist/read/client.d.ts +36 -0
- package/dist/read/client.d.ts.map +1 -0
- package/dist/read/client.js +46 -0
- package/dist/read/client.js.map +1 -0
- package/dist/read/config.d.ts +83 -0
- package/dist/read/config.d.ts.map +1 -0
- package/dist/read/config.js +76 -0
- package/dist/read/config.js.map +1 -0
- package/dist/read/genres.d.ts +7 -0
- package/dist/read/genres.d.ts.map +1 -0
- package/dist/read/genres.js +38 -0
- package/dist/read/genres.js.map +1 -0
- package/dist/read/index.d.ts +12 -0
- package/dist/read/index.d.ts.map +1 -0
- package/dist/read/index.js +23 -0
- package/dist/read/index.js.map +1 -0
- package/dist/read/internal/scalars.d.ts +23 -0
- package/dist/read/internal/scalars.d.ts.map +1 -0
- package/dist/read/internal/scalars.js +56 -0
- package/dist/read/internal/scalars.js.map +1 -0
- package/dist/read/internal/walrus.d.ts +4 -0
- package/dist/read/internal/walrus.d.ts.map +1 -0
- package/dist/read/internal/walrus.js +23 -0
- package/dist/read/internal/walrus.js.map +1 -0
- package/dist/read/receipts.d.ts +22 -0
- package/dist/read/receipts.d.ts.map +1 -0
- package/dist/read/receipts.js +233 -0
- package/dist/read/receipts.js.map +1 -0
- package/dist/read/types.d.ts +279 -0
- package/dist/read/types.d.ts.map +1 -0
- package/dist/read/types.js +21 -0
- package/dist/read/types.js.map +1 -0
- package/dist/read/wallet.d.ts +58 -0
- package/dist/read/wallet.d.ts.map +1 -0
- package/dist/read/wallet.js +325 -0
- package/dist/read/wallet.js.map +1 -0
- package/dist/read/works.d.ts +31 -0
- package/dist/read/works.d.ts.map +1 -0
- package/dist/read/works.js +106 -0
- package/dist/read/works.js.map +1 -0
- package/package.json +16 -3
- package/src/catalog.ts +118 -0
- package/src/contracts/miso_drop/drop.ts +798 -0
- package/src/contracts.ts +4 -0
- package/src/credits.ts +26 -12
- package/src/drop.ts +266 -0
- package/src/index.ts +5 -0
- package/src/read/artist.ts +136 -0
- package/src/read/catalog.ts +293 -0
- package/src/read/client.ts +79 -0
- package/src/read/config.ts +164 -0
- package/src/read/genres.ts +37 -0
- package/src/read/index.ts +53 -0
- package/src/read/internal/scalars.ts +57 -0
- package/src/read/internal/walrus.ts +32 -0
- package/src/read/receipts.ts +266 -0
- package/src/read/types.ts +361 -0
- package/src/read/wallet.ts +360 -0
- package/src/read/works.ts +164 -0
package/README.md
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
# @misofm/sdk
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
record production line and
|
|
5
|
-
extensions (credits, cover art, royalty pools)
|
|
6
|
-
|
|
7
|
-
`@misonetwork/sdk`'s bare protocol primitives.
|
|
3
|
+
The complete client SDK for the **Miso platform layer** on Sui: composed catalog,
|
|
4
|
+
artist, wallet, and receipt reads; the record production line and sale of copies;
|
|
5
|
+
first-party protocol extensions (credits, cover art, royalty pools); and the
|
|
6
|
+
opinionated publish flow built on `@misonetwork/sdk`'s bare protocol primitives.
|
|
8
7
|
|
|
9
8
|
## The split
|
|
10
9
|
|
|
@@ -94,6 +93,37 @@ Holding the ids yourself? Every builder and reader is exported bare, taking
|
|
|
94
93
|
import { buyRecord, getSale } from "@misofm/sdk/pressing";
|
|
95
94
|
```
|
|
96
95
|
|
|
96
|
+
### High-level platform reads
|
|
97
|
+
|
|
98
|
+
`@misofm/sdk/read` turns protocol, pressing, PartyOS, credits, cover, and wallet
|
|
99
|
+
objects into the JSON-safe views a client actually renders. It works in browsers,
|
|
100
|
+
Workers, and servers. Miso's HTTP API is a thin validated and cached transport over
|
|
101
|
+
this same surface, not a separate domain implementation.
|
|
102
|
+
|
|
103
|
+
```ts
|
|
104
|
+
import {
|
|
105
|
+
createMisoClient,
|
|
106
|
+
getDiscoverShelf,
|
|
107
|
+
getReleaseDetail,
|
|
108
|
+
getOwnedRecords,
|
|
109
|
+
} from "@misofm/sdk/read";
|
|
110
|
+
|
|
111
|
+
const miso = createMisoClient({ network: "testnet" });
|
|
112
|
+
|
|
113
|
+
const discover = await getDiscoverShelf(miso);
|
|
114
|
+
const release = await getReleaseDetail(miso, releaseId);
|
|
115
|
+
const library = await getOwnedRecords(miso, walletAddress);
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
The package root also exposes the same functions under the `read` namespace:
|
|
119
|
+
|
|
120
|
+
```ts
|
|
121
|
+
import { read } from "@misofm/sdk";
|
|
122
|
+
|
|
123
|
+
const miso = read.createMisoClient({ network: "testnet" });
|
|
124
|
+
const artist = await read.getArtistProfile(miso, partyId);
|
|
125
|
+
```
|
|
126
|
+
|
|
97
127
|
### Payment
|
|
98
128
|
|
|
99
129
|
`listing::buy` takes a bare `Balance<Currency>`, and `buyRecord` sources it with
|
|
@@ -321,6 +351,8 @@ src/
|
|
|
321
351
|
share-template.ts embedded `share` package bytecode
|
|
322
352
|
credits.ts EXTENSION: contributor credits + the three role vocabularies
|
|
323
353
|
cover.ts EXTENSION: release cover art (Walrus blob via ori)
|
|
354
|
+
drop.ts existing launch-drop compatibility surface
|
|
355
|
+
read/ high-level catalog, artist, wallet, and receipt views
|
|
324
356
|
extensions/
|
|
325
357
|
royalty-pool.ts EXTENSION: create + share a RoyaltyPool<Share, Currency>
|
|
326
358
|
execute.ts executeViaExecutor, layered on @misonetwork/sdk's buildTx/toExecResult
|
package/dist/catalog.d.ts
CHANGED
|
@@ -1,6 +1,36 @@
|
|
|
1
1
|
import type { ClientWithCoreApi } from "@mysten/sui/client";
|
|
2
2
|
import type { SuiGraphQLClient } from "@mysten/sui/graphql";
|
|
3
3
|
import { type Recording } from "@misonetwork/sdk";
|
|
4
|
+
import { type CreditView, type RecordingCreditsView } from "./credits.ts";
|
|
5
|
+
export interface GetReleaseTrackCreditsOptions {
|
|
6
|
+
/** Core Miso package that defines Composition and Recording. */
|
|
7
|
+
misoPackageId: string;
|
|
8
|
+
/** Package that defines the composition_credits extension key. */
|
|
9
|
+
compositionCreditsPackageId: string;
|
|
10
|
+
/** Package that defines the recording_credits extension key. */
|
|
11
|
+
recordingCreditsPackageId: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ReleaseTrackCredits {
|
|
14
|
+
compositionCredits: CreditView[];
|
|
15
|
+
recordingCredits: RecordingCreditsView;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Composition and recording credits for every track on a release, keyed by
|
|
19
|
+
* recording id.
|
|
20
|
+
*
|
|
21
|
+
* The read follows the chain's actual object graph instead of release credits:
|
|
22
|
+
* Release -> Recording -> Composition. Recording credit fields and recording
|
|
23
|
+
* type parameters are fetched together for every track. Composition addresses
|
|
24
|
+
* are then resolved concurrently, deduplicated, and all composition credit
|
|
25
|
+
* fields are fetched concurrently as well.
|
|
26
|
+
*/
|
|
27
|
+
export declare function getReleaseTrackCredits(client: ClientWithCoreApi, graphqlClient: SuiGraphQLClient, releaseId: string, options: GetReleaseTrackCreditsOptions): Promise<Record<string, ReleaseTrackCredits>>;
|
|
28
|
+
/**
|
|
29
|
+
* Composition and recording credits for the supplied recordings, keyed by
|
|
30
|
+
* recording id. This form is intended for consumers that already loaded a
|
|
31
|
+
* release and do not need to fetch it again.
|
|
32
|
+
*/
|
|
33
|
+
export declare function getTrackCreditsByRecordingIds(client: ClientWithCoreApi, graphqlClient: SuiGraphQLClient, recordingIdsInput: readonly string[], options: GetReleaseTrackCreditsOptions): Promise<Record<string, ReleaseTrackCredits>>;
|
|
4
34
|
export interface GetAdministeredRecordingsOptions {
|
|
5
35
|
/**
|
|
6
36
|
* Maximum lookups in flight at once. The traversal is one lookup per admin
|
package/dist/catalog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAML,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,6BAA6B;IAC5C,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,2BAA2B,EAAE,MAAM,CAAC;IACpC,gEAAgE;IAChE,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,EAAE,UAAU,EAAE,CAAC;IACjC,gBAAgB,EAAE,oBAAoB,CAAC;CACxC;AAQD;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,gBAAgB,EAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAQ9C;AAED;;;;GAIG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,gBAAgB,EAC/B,iBAAiB,EAAE,SAAS,MAAM,EAAE,EACpC,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAoD9C;AAED,MAAM,WAAW,gCAAgC;IAC/C;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,gBAAgB,EAC/B,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,gCAAqC,GAC7C,OAAO,CAAC,SAAS,EAAE,CAAC,CAsBtB"}
|
package/dist/catalog.js
CHANGED
|
@@ -1,6 +1,65 @@
|
|
|
1
1
|
// Copyright (c) Miso Labs, Inc.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { getOwnedRecordingAdminCaps, getRecordingByShareType, } from "@misonetwork/sdk";
|
|
3
|
+
import { getCompositionAddressByShareType, getOwnedRecordingAdminCaps, getRecordingByShareType, getRecordingShareTypes, getReleaseById, } from "@misonetwork/sdk";
|
|
4
|
+
import { getCompositionCredits, getRecordingCredits, } from "./credits.js";
|
|
5
|
+
const EMPTY_RECORDING_CREDITS = {
|
|
6
|
+
credits: [],
|
|
7
|
+
primaryArtistIds: [],
|
|
8
|
+
featuredArtistIds: [],
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Composition and recording credits for every track on a release, keyed by
|
|
12
|
+
* recording id.
|
|
13
|
+
*
|
|
14
|
+
* The read follows the chain's actual object graph instead of release credits:
|
|
15
|
+
* Release -> Recording -> Composition. Recording credit fields and recording
|
|
16
|
+
* type parameters are fetched together for every track. Composition addresses
|
|
17
|
+
* are then resolved concurrently, deduplicated, and all composition credit
|
|
18
|
+
* fields are fetched concurrently as well.
|
|
19
|
+
*/
|
|
20
|
+
export async function getReleaseTrackCredits(client, graphqlClient, releaseId, options) {
|
|
21
|
+
const release = await getReleaseById(client, releaseId);
|
|
22
|
+
return getTrackCreditsByRecordingIds(client, graphqlClient, release.tracks.map((track) => track.recordingId), options);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Composition and recording credits for the supplied recordings, keyed by
|
|
26
|
+
* recording id. This form is intended for consumers that already loaded a
|
|
27
|
+
* release and do not need to fetch it again.
|
|
28
|
+
*/
|
|
29
|
+
export async function getTrackCreditsByRecordingIds(client, graphqlClient, recordingIdsInput, options) {
|
|
30
|
+
const recordingIds = [...new Set(recordingIdsInput)];
|
|
31
|
+
const recordingReads = await Promise.all(recordingIds.map(async (recordingId) => {
|
|
32
|
+
const [recordingCredits, [, compositionShareType]] = await Promise.all([
|
|
33
|
+
getRecordingCredits(client, recordingId, options.recordingCreditsPackageId),
|
|
34
|
+
getRecordingShareTypes(client, recordingId),
|
|
35
|
+
]);
|
|
36
|
+
return { recordingId, recordingCredits, compositionShareType };
|
|
37
|
+
}));
|
|
38
|
+
const compositionShareTypes = [...new Set(recordingReads.map((read) => read.compositionShareType))];
|
|
39
|
+
const compositionAddressEntries = await Promise.all(compositionShareTypes.map(async (shareType) => {
|
|
40
|
+
const compositionId = await getCompositionAddressByShareType(graphqlClient, shareType, options.misoPackageId);
|
|
41
|
+
if (!compositionId)
|
|
42
|
+
throw new Error(`Composition not found for share type: ${shareType}`);
|
|
43
|
+
return [shareType, compositionId];
|
|
44
|
+
}));
|
|
45
|
+
const compositionAddressByShareType = new Map(compositionAddressEntries);
|
|
46
|
+
const compositionIds = [...new Set(compositionAddressEntries.map(([, compositionId]) => compositionId))];
|
|
47
|
+
const compositionCreditEntries = await Promise.all(compositionIds.map(async (compositionId) => {
|
|
48
|
+
const credits = await getCompositionCredits(client, compositionId, options.compositionCreditsPackageId);
|
|
49
|
+
return [compositionId, credits ?? []];
|
|
50
|
+
}));
|
|
51
|
+
const compositionCreditsById = new Map(compositionCreditEntries);
|
|
52
|
+
return Object.fromEntries(recordingReads.map((read) => {
|
|
53
|
+
const compositionId = compositionAddressByShareType.get(read.compositionShareType);
|
|
54
|
+
return [
|
|
55
|
+
read.recordingId,
|
|
56
|
+
{
|
|
57
|
+
compositionCredits: compositionCreditsById.get(compositionId) ?? [],
|
|
58
|
+
recordingCredits: read.recordingCredits ?? EMPTY_RECORDING_CREDITS,
|
|
59
|
+
},
|
|
60
|
+
];
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
4
63
|
/**
|
|
5
64
|
* Every `Recording` administered by `owner`.
|
|
6
65
|
*
|
package/dist/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sCAAsC;AActC,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sCAAsC;AActC,OAAO,EACL,gCAAgC,EAChC,0BAA0B,EAC1B,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,GAEf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GAGpB,MAAM,cAAc,CAAC;AAgBtB,MAAM,uBAAuB,GAAyB;IACpD,OAAO,EAAE,EAAE;IACX,gBAAgB,EAAE,EAAE;IACpB,iBAAiB,EAAE,EAAE;CACtB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAyB,EACzB,aAA+B,EAC/B,SAAiB,EACjB,OAAsC;IAEtC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACxD,OAAO,6BAA6B,CAClC,MAAM,EACN,aAAa,EACb,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,EAChD,OAAO,CACR,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,MAAyB,EACzB,aAA+B,EAC/B,iBAAoC,EACpC,OAAsC;IAEtC,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAErD,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;QACrC,MAAM,CAAC,gBAAgB,EAAE,CAAC,EAAE,oBAAoB,CAAC,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACrE,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,yBAAyB,CAAC;YAC3E,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC;SAC5C,CAAC,CAAC;QACH,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;IACjE,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,qBAAqB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACpG,MAAM,yBAAyB,GAAG,MAAM,OAAO,CAAC,GAAG,CACjD,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QAC5C,MAAM,aAAa,GAAG,MAAM,gCAAgC,CAC1D,aAAa,EACb,SAAS,EACT,OAAO,CAAC,aAAa,CACtB,CAAC;QACF,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,SAAS,EAAE,CAAC,CAAC;QAC1F,OAAO,CAAC,SAAS,EAAE,aAAa,CAAU,CAAC;IAC7C,CAAC,CAAC,CACH,CAAC;IACF,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEzE,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACzG,MAAM,wBAAwB,GAAG,MAAM,OAAO,CAAC,GAAG,CAChD,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;QACzC,MAAM,OAAO,GAAG,MAAM,qBAAqB,CACzC,MAAM,EACN,aAAa,EACb,OAAO,CAAC,2BAA2B,CACpC,CAAC;QACF,OAAO,CAAC,aAAa,EAAE,OAAO,IAAI,EAAE,CAAU,CAAC;IACjD,CAAC,CAAC,CACH,CAAC;IACF,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAEjE,OAAO,MAAM,CAAC,WAAW,CACvB,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1B,MAAM,aAAa,GAAG,6BAA6B,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAE,CAAC;QACpF,OAAO;YACL,IAAI,CAAC,WAAW;YAChB;gBACE,kBAAkB,EAAE,sBAAsB,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE;gBACnE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,uBAAuB;aACnE;SACF,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAWD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,MAAyB,EACzB,aAA+B,EAC/B,KAAa,EACb,aAAqB,EACrB,UAA4C,EAAE;IAE9C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,MAAM,0BAA0B,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IAE5E,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACtB,IAAI,CAAC;gBACH,OAAO,MAAM,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAC5F,CAAC;YAAC,MAAM,CAAC;gBACP,kEAAkE;gBAClE,sEAAsE;gBACtE,4CAA4C;gBAC5C,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,OAAO;YAAE,IAAI,GAAG;gBAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|