annosearch 0.2.1 → 0.2.3
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 +4 -2
- package/dist/iiif.js +1 -1
- package/dist/iiif.js.map +1 -1
- package/dist/load.js +42 -10
- package/dist/load.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
|
|
2
2
|
# Annotation Search
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
# AnnoSearch
|
|
5
|
+
|
|
6
|
+
AnnoSearch uses [Quickwit](https://quickwit.io) as its backend database to efficiently index and query [W3C Web Annotation](https://www.w3.org/TR/annotation-model/) data. AnnoSearch can ingest data directly from [IIIF](https://iiif.io/) resources such as IIIF collections and web annotation servers such as [Miiify](https://github.com/nationalarchives/miiify) and make it available to IIIF viewers through the [IIIF Content Search 2.0 API](https://iiif.io/api/search/2.0/). Annosearch supports type-safe ingestion using the [Maniiifest](https://github.com/jptmoore/maniiifest) library.
|
|
5
7
|
|
|
6
8
|
## Tutorial
|
|
7
9
|
|
|
@@ -20,7 +22,7 @@ After Quickwit finishes ingesting and indexing the data we can perform a search.
|
|
|
20
22
|
```
|
|
21
23
|
❯ annosearch search --index cookbook --query brunnen
|
|
22
24
|
{
|
|
23
|
-
"@context": "http://
|
|
25
|
+
"@context": "http://iiif.io/api/search/2/context.json",
|
|
24
26
|
"id": "http://localhost:3000/cookbook/search?q=brunnen&page=0",
|
|
25
27
|
"type": "AnnotationPage",
|
|
26
28
|
"startIndex": 0,
|
package/dist/iiif.js
CHANGED
|
@@ -11,7 +11,7 @@ function makeSearchResponse(indexId, data, searchUrl, query, motivation, user, m
|
|
|
11
11
|
const userParam = user ? `&user=${encodeURIComponent(user)}` : '';
|
|
12
12
|
const id = `${searchUrl}/${indexId}/search?q=${queryParam}${motivationParam}${dateParam}${userParam}`;
|
|
13
13
|
return {
|
|
14
|
-
"@context": "http://
|
|
14
|
+
"@context": "http://iiif.io/api/search/2/context.json",
|
|
15
15
|
id: `${id}&page=${page}`,
|
|
16
16
|
type: "AnnotationPage",
|
|
17
17
|
partOf: totalPages > 1 ? {
|
package/dist/iiif.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iiif.js","sourceRoot":"","sources":["../src/iiif.ts"],"names":[],"mappings":";;AAEA,gDAkCC;AAlCD,SAAgB,kBAAkB,CAAC,OAAe,EAAE,IAAS,EAAE,SAAiB,EAAE,KAAa,EAAE,UAAkB,EAAE,IAAY,EAAE,OAAe,EAAE,IAAY,EAAE,IAAY;IAC1K,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,eAAe,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,MAAM,EAAE,GAAG,GAAG,SAAS,IAAI,OAAO,aAAa,UAAU,GAAG,eAAe,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;IAEtG,OAAO;QACH,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"iiif.js","sourceRoot":"","sources":["../src/iiif.ts"],"names":[],"mappings":";;AAEA,gDAkCC;AAlCD,SAAgB,kBAAkB,CAAC,OAAe,EAAE,IAAS,EAAE,SAAiB,EAAE,KAAa,EAAE,UAAkB,EAAE,IAAY,EAAE,OAAe,EAAE,IAAY,EAAE,IAAY;IAC1K,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,eAAe,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,MAAM,EAAE,GAAG,GAAG,SAAS,IAAI,OAAO,aAAa,UAAU,GAAG,eAAe,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;IAEtG,OAAO;QACH,UAAU,EAAE,0CAA0C;QACtD,EAAE,EAAE,GAAG,EAAE,SAAS,IAAI,EAAE;QACxB,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,EAAE,EAAE,EAAE;YACN,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,IAAI,CAAC,QAAQ;YACpB,KAAK,EAAE;gBACH,EAAE,EAAE,GAAG,EAAE,SAAS;gBAClB,IAAI,EAAE,gBAAgB;aACzB;YACD,IAAI,EAAE;gBACF,EAAE,EAAE,GAAG,EAAE,SAAS,UAAU,GAAG,CAAC,EAAE;gBAClC,IAAI,EAAE,gBAAgB;aACzB;SACJ,CAAC,CAAC,CAAC,SAAS;QACb,UAAU,EAAE,IAAI,GAAG,OAAO;QAC1B,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,mBAC5B,GAAG,EACR,CAAC;QACH,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;QAC9D,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;KACjE,CAAC;AACN,CAAC"}
|
package/dist/load.js
CHANGED
|
@@ -16,11 +16,43 @@ const errors_1 = require("./errors");
|
|
|
16
16
|
const quickwit_1 = require("./quickwit");
|
|
17
17
|
const contentType = 'application/x-ndjson';
|
|
18
18
|
const quickwitClient = (0, quickwit_1.createClient)(contentType);
|
|
19
|
-
function
|
|
19
|
+
function modifyAnnotationTarget(annotation, uri, type) {
|
|
20
|
+
const parser = new maniiifest_1.Maniiifest(annotation, "Annotation");
|
|
21
|
+
const target = parser.getAnnotationTarget();
|
|
22
|
+
const partOf = {
|
|
23
|
+
id: uri,
|
|
24
|
+
type: type,
|
|
25
|
+
};
|
|
26
|
+
const modifySingleTarget = (singleTarget) => {
|
|
27
|
+
if (typeof singleTarget === "string") {
|
|
28
|
+
// If the target is a string, return it wrapped in the specified object structure
|
|
29
|
+
return { id: singleTarget, partOf: partOf };
|
|
30
|
+
}
|
|
31
|
+
else if (typeof singleTarget === "object" && singleTarget !== null) {
|
|
32
|
+
// If the target is already an object, add or merge the partOf field
|
|
33
|
+
return Object.assign(Object.assign({}, singleTarget), { partOf: partOf });
|
|
34
|
+
}
|
|
35
|
+
// Return the target as-is for unexpected types
|
|
36
|
+
return singleTarget;
|
|
37
|
+
};
|
|
38
|
+
if (Array.isArray(target)) {
|
|
39
|
+
return { target: target.map(modifySingleTarget) };
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
return { target: modifySingleTarget(target) };
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function* processAnnotationsTarget(parser, uri, type) {
|
|
46
|
+
for (const annotation of parser.iterateAnnotationPageAnnotation()) {
|
|
47
|
+
const modifiedTarget = modifyAnnotationTarget(annotation, uri, type).target;
|
|
48
|
+
yield Object.assign(Object.assign({}, annotation), { target: modifiedTarget });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function processAnnotations(indexId, uri, type, parser, commit) {
|
|
20
52
|
return __awaiter(this, void 0, void 0, function* () {
|
|
21
53
|
let currentParser = parser;
|
|
22
54
|
while (currentParser) {
|
|
23
|
-
const annotations = Array.from(currentParser
|
|
55
|
+
const annotations = Array.from(processAnnotationsTarget(currentParser, uri, type));
|
|
24
56
|
if (annotations.length > 0) {
|
|
25
57
|
const payload = (0, utils_1.createJsonl)(annotations);
|
|
26
58
|
const url = commit ? `${indexId}/ingest?commit=force` : `${indexId}/ingest`;
|
|
@@ -52,17 +84,17 @@ function processAnnotations(indexId, parser, commit) {
|
|
|
52
84
|
}
|
|
53
85
|
});
|
|
54
86
|
}
|
|
55
|
-
function processAnnotationPageRef(indexId, annotationPageUrl, commit) {
|
|
87
|
+
function processAnnotationPageRef(indexId, uri, type, annotationPageUrl, commit) {
|
|
56
88
|
return __awaiter(this, void 0, void 0, function* () {
|
|
57
89
|
const jsonData = yield (0, utils_1.fetchJson)(annotationPageUrl);
|
|
58
90
|
const parser = new maniiifest_1.Maniiifest(jsonData, "AnnotationPage");
|
|
59
|
-
yield processAnnotations(indexId, parser, commit);
|
|
91
|
+
yield processAnnotations(indexId, uri, type, parser, commit);
|
|
60
92
|
});
|
|
61
93
|
}
|
|
62
|
-
function processAnnotationPage(indexId, page, commit) {
|
|
94
|
+
function processAnnotationPage(indexId, uri, type, page, commit) {
|
|
63
95
|
return __awaiter(this, void 0, void 0, function* () {
|
|
64
96
|
const parser = new maniiifest_1.Maniiifest(page, "AnnotationPage");
|
|
65
|
-
yield processAnnotations(indexId, parser, commit);
|
|
97
|
+
yield processAnnotations(indexId, uri, type, parser, commit);
|
|
66
98
|
});
|
|
67
99
|
}
|
|
68
100
|
function processManifest(indexId, manifestUrl, commit) {
|
|
@@ -76,10 +108,10 @@ function processManifest(indexId, manifestUrl, commit) {
|
|
|
76
108
|
const annotationPages = parser.iterateManifestCanvasW3cAnnotationPage();
|
|
77
109
|
for (const page of annotationPages) {
|
|
78
110
|
if (page.items) {
|
|
79
|
-
yield processAnnotationPage(indexId, page, commit);
|
|
111
|
+
yield processAnnotationPage(indexId, manifestUrl, type, page, commit);
|
|
80
112
|
}
|
|
81
113
|
else {
|
|
82
|
-
yield processAnnotationPageRef(indexId, page.id, commit);
|
|
114
|
+
yield processAnnotationPageRef(indexId, manifestUrl, type, page.id, commit);
|
|
83
115
|
}
|
|
84
116
|
}
|
|
85
117
|
});
|
|
@@ -115,10 +147,10 @@ function processAnnotationCollection(indexId, annotationCollectionUrl, commit) {
|
|
|
115
147
|
}
|
|
116
148
|
const firstPage = parser.getAnnotationCollectionFirst();
|
|
117
149
|
if (typeof firstPage === 'string') { // means it is a URI
|
|
118
|
-
yield processAnnotationPageRef(indexId, firstPage, commit);
|
|
150
|
+
yield processAnnotationPageRef(indexId, annotationCollectionUrl, type, firstPage, commit);
|
|
119
151
|
}
|
|
120
152
|
else {
|
|
121
|
-
yield processAnnotationPage(indexId, firstPage, commit);
|
|
153
|
+
yield processAnnotationPage(indexId, annotationCollectionUrl, type, firstPage, commit);
|
|
122
154
|
}
|
|
123
155
|
});
|
|
124
156
|
}
|
package/dist/load.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.js","sourceRoot":"","sources":["../src/load.ts"],"names":[],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../src/load.ts"],"names":[],"mappings":";;;;;;;;;;;AA0IA,8BAyBC;AAnKD,2CAAwC;AACxC,mCAAiD;AACjD,qCAA2E;AAC3E,yCAA0C;AAE1C,MAAM,WAAW,GAAG,sBAAsB,CAAC;AAC3C,MAAM,cAAc,GAAG,IAAA,uBAAY,EAAC,WAAW,CAAC,CAAC;AAGjD,SAAS,sBAAsB,CAAC,UAAe,EAAE,GAAW,EAAE,IAAY;IACtE,MAAM,MAAM,GAAG,IAAI,uBAAU,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAG;QACX,EAAE,EAAE,GAAG;QACP,IAAI,EAAE,IAAI;KACb,CAAC;IACF,MAAM,kBAAkB,GAAG,CAAC,YAAiB,EAAE,EAAE;QAC7C,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACnC,iFAAiF;YACjF,OAAO,EAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YACnE,oEAAoE;YACpE,uCAAW,YAAY,KAAE,MAAM,EAAE,MAAM,IAAE;QAC7C,CAAC;QACD,+CAA+C;QAC/C,OAAO,YAAY,CAAC;IACxB,CAAC,CAAC;IACF,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,EAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACJ,OAAO,EAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAC,CAAC;IAChD,CAAC;AACL,CAAC;AAED,QAAQ,CAAC,CAAC,wBAAwB,CAAC,MAAW,EAAE,GAAW,EAAE,IAAY;IACrE,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,+BAA+B,EAAE,EAAE,CAAC;QAChE,MAAM,cAAc,GAAG,sBAAsB,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC;QAC5E,sCAAU,UAAU,KAAE,MAAM,EAAE,cAAc,GAAC,CAAC;IAClD,CAAC;AACL,CAAC;AAED,SAAe,kBAAkB,CAAC,OAAe,EAAE,GAAW,EAAE,IAAY,EAAE,MAAW,EAAE,MAAe;;QACtG,IAAI,aAAa,GAAG,MAAM,CAAC;QAC3B,OAAO,aAAa,EAAE,CAAC;YACnB,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YACnF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,IAAA,mBAAW,EAAC,WAAW,CAAC,CAAC;gBACzC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,sBAAsB,CAAC,CAAC,CAAC,GAAG,OAAO,SAAS,CAAC;gBAC5E,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACzD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACjB,MAAM,IAAI,kCAAyB,CAAC,yCAAyC,CAAC,CAAC;gBACnF,CAAC;gBACD,mDAAmD;gBACnD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAC3C,wDAAwD;oBACxD,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACJ,MAAM,IAAI,kCAAyB,CAAC,uDAAuD,CAAC,CAAC;gBACjG,CAAC;YACL,CAAC;YAED,gDAAgD;YAChD,MAAM,WAAW,GAAG,aAAa,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC;YAC3D,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,QAAQ,GAAG,MAAM,IAAA,iBAAS,EAAC,WAAW,CAAC,CAAC;gBAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACZ,MAAM,IAAI,kCAAyB,CAAC,sCAAsC,CAAC,CAAC;gBAChF,CAAC;gBACD,aAAa,GAAG,IAAI,uBAAU,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACJ,aAAa,GAAG,IAAI,CAAC;YACzB,CAAC;QACL,CAAC;IAEL,CAAC;CAAA;AAED,SAAe,wBAAwB,CAAC,OAAe,EAAE,GAAW,EAAE,IAAY,EAAE,iBAAyB,EAAE,MAAe;;QAC1H,MAAM,QAAQ,GAAG,MAAM,IAAA,iBAAS,EAAC,iBAAiB,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,uBAAU,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAC1D,MAAM,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;CAAA;AAED,SAAe,qBAAqB,CAAC,OAAe,EAAE,GAAW,EAAE,IAAY,EAAE,IAAS,EAAE,MAAe;;QACvG,MAAM,MAAM,GAAG,IAAI,uBAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACtD,MAAM,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;CAAA;AAED,SAAe,eAAe,CAAC,OAAe,EAAE,WAAmB,EAAE,MAAe;;QAChF,MAAM,QAAQ,GAAG,MAAM,IAAA,iBAAS,EAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,uBAAU,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAC3C,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACtB,MAAM,IAAI,6BAAoB,CAAC,oCAAoC,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,eAAe,GAAG,MAAM,CAAC,sCAAsC,EAAE,CAAC;QACxE,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,MAAM,qBAAqB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1E,CAAC;iBAAM,CAAC;gBACJ,MAAM,wBAAwB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YAChF,CAAC;QACL,CAAC;IACL,CAAC;CAAA;AAED,SAAe,iBAAiB,CAAC,OAAe,EAAE,aAAqB,EAAE,MAAe;;QACpF,MAAM,QAAQ,GAAG,MAAM,IAAA,iBAAS,EAAC,aAAa,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,uBAAU,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAC3C,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YACxB,MAAM,IAAI,6BAAoB,CAAC,sCAAsC,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,yBAAyB,EAAE,CAAC;QACrD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAG,IAAI,uBAAU,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,UAAU,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC;YAC/C,IAAI,UAAU,EAAE,CAAC;gBACb,MAAM,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,kCAAyB,CAAC,qBAAqB,CAAC,CAAC;YAC/D,CAAC;QACL,CAAC;IACL,CAAC;CAAA;AAED,SAAe,2BAA2B,CAAC,OAAe,EAAE,uBAA+B,EAAE,MAAe;;QACxG,MAAM,QAAQ,GAAG,MAAM,IAAA,iBAAS,EAAC,uBAAuB,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,uBAAU,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,MAAM,CAAC,2BAA2B,EAAE,CAAC;QAClD,IAAI,IAAI,KAAK,sBAAsB,EAAE,CAAC;YAClC,MAAM,IAAI,6BAAoB,CAAC,uCAAuC,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,4BAA4B,EAAE,CAAC;QACxD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC,CAAC,oBAAoB;YACrD,MAAM,wBAAwB,CAAC,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9F,CAAC;aAAM,CAAC;YACJ,MAAM,qBAAqB,CAAC,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,SAAgB,EAAE,MAAM,CAAC,CAAC;QAClG,CAAC;IACL,CAAC;CAAA;AAED,SAAsB,SAAS,CAAC,OAAe,EAAE,GAAW,EAAE,IAAY,EAAE,MAAe;;QACvF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YACjC,MAAM,IAAI,kCAAyB,CAAC,gCAAgC,CAAC,CAAC;QAC1E,CAAC;QAED,uEAAuE;QACvE,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,YAAY,OAAO,WAAW,CAAC,CAAC;QAC/E,IAAI,aAAa,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,kCAAyB,CAAC,SAAS,OAAO,wBAAwB,CAAC,CAAC;QAClF,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,SAAS,GAAG,eAAe,OAAO,EAAE,CAAC,CAAC;QACjE,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,UAAU;gBACX,MAAM,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC5C,MAAM;YACV,KAAK,YAAY;gBACb,MAAM,iBAAiB,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC9C,MAAM;YACV,KAAK,sBAAsB;gBACvB,MAAM,2BAA2B,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBACxD,MAAM;YACV;gBACI,MAAM,IAAI,kCAAyB,CAAC,kBAAkB,CAAC,CAAC;QAChE,CAAC;IACL,CAAC;CAAA"}
|