@esri/hub-common 9.3.0 → 9.4.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/dist/es2017/search/_searchContent.js +62 -0
- package/dist/es2017/search/_searchContent.js.map +1 -0
- package/dist/es2017/search/content-utils.js +422 -0
- package/dist/es2017/search/content-utils.js.map +1 -0
- package/dist/es2017/search/index.js +4 -0
- package/dist/es2017/search/index.js.map +1 -1
- package/dist/es2017/search/types.js +1 -0
- package/dist/es2017/search/types.js.map +1 -0
- package/dist/es2017/search/utils.js +344 -0
- package/dist/es2017/search/utils.js.map +1 -0
- package/dist/esm/search/_searchContent.js +70 -0
- package/dist/esm/search/_searchContent.js.map +1 -0
- package/dist/esm/search/content-utils.js +426 -0
- package/dist/esm/search/content-utils.js.map +1 -0
- package/dist/esm/search/index.js +4 -0
- package/dist/esm/search/index.js.map +1 -1
- package/dist/esm/search/types.js +1 -0
- package/dist/esm/search/types.js.map +1 -0
- package/dist/esm/search/utils.js +341 -0
- package/dist/esm/search/utils.js.map +1 -0
- package/dist/node/search/_searchContent.js +66 -0
- package/dist/node/search/_searchContent.js.map +1 -0
- package/dist/node/search/content-utils.js +432 -0
- package/dist/node/search/content-utils.js.map +1 -0
- package/dist/node/search/index.js +4 -0
- package/dist/node/search/index.js.map +1 -1
- package/dist/node/search/types.js +3 -0
- package/dist/node/search/types.js.map +1 -0
- package/dist/node/search/utils.js +357 -0
- package/dist/node/search/utils.js.map +1 -0
- package/dist/types/search/_searchContent.d.ts +7 -0
- package/dist/types/search/content-utils.d.ts +70 -0
- package/dist/types/search/index.d.ts +4 -0
- package/dist/types/search/types.d.ts +294 -0
- package/dist/types/search/utils.d.ts +92 -0
- package/dist/umd/common.umd.js +842 -1
- package/dist/umd/common.umd.js.map +1 -1
- package/dist/umd/common.umd.min.js +1 -1
- package/dist/umd/common.umd.min.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
/* Copyright (c) 2018-2021 Environmental Systems Research Institute, Inc.
|
|
2
|
+
* Apache-2.0 */
|
|
3
|
+
import { cloneObject, unique } from "../util";
|
|
4
|
+
/**
|
|
5
|
+
* Well known APIs
|
|
6
|
+
* Short-forms for specifying common APIs
|
|
7
|
+
*/
|
|
8
|
+
export const SEARCH_APIS = {
|
|
9
|
+
arcgis: {
|
|
10
|
+
label: "ArcGIS Online",
|
|
11
|
+
url: "https://www.arcgis.com",
|
|
12
|
+
type: "arcgis",
|
|
13
|
+
},
|
|
14
|
+
arcgisQA: {
|
|
15
|
+
label: "ArcGIS Online QAEXT",
|
|
16
|
+
url: "https://qaext.arcgis.com",
|
|
17
|
+
type: "arcgis",
|
|
18
|
+
},
|
|
19
|
+
arcgisDEV: {
|
|
20
|
+
label: "ArcGIS Online DEVEXT",
|
|
21
|
+
url: "https://devext.arcgis.com",
|
|
22
|
+
type: "arcgis",
|
|
23
|
+
},
|
|
24
|
+
hub: {
|
|
25
|
+
label: "ArcGIS Hub",
|
|
26
|
+
url: "https://hub.arcgis.com/api",
|
|
27
|
+
type: "arcgis-hub",
|
|
28
|
+
},
|
|
29
|
+
hubDEV: {
|
|
30
|
+
label: "ArcGIS Hub DEV",
|
|
31
|
+
url: "https://hubdev.arcgis.com/api",
|
|
32
|
+
type: "arcgis-hub",
|
|
33
|
+
},
|
|
34
|
+
hubQA: {
|
|
35
|
+
label: "ArcGIS Hub QA",
|
|
36
|
+
url: "https://hubqa.arcgis.com/api",
|
|
37
|
+
type: "arcgis-hub",
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* @private
|
|
42
|
+
* Convert api "names" into full ApiDefinitions
|
|
43
|
+
* @param apis
|
|
44
|
+
* @returns
|
|
45
|
+
*/
|
|
46
|
+
export function expandApis(apis) {
|
|
47
|
+
return apis.map((api) => {
|
|
48
|
+
if (typeof api === "string" && api in SEARCH_APIS) {
|
|
49
|
+
return SEARCH_APIS[api];
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// it's an object, so we trust that it's well formed
|
|
53
|
+
return api;
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* @private
|
|
59
|
+
* Merge multiple search responses
|
|
60
|
+
*
|
|
61
|
+
* Naieve implementation that just merges arrays
|
|
62
|
+
* @param responses
|
|
63
|
+
* @returns
|
|
64
|
+
*/
|
|
65
|
+
export function mergeSearchResults(responses) {
|
|
66
|
+
// Merge content
|
|
67
|
+
const content = responses.reduce((acc, response) => {
|
|
68
|
+
if (response.content) {
|
|
69
|
+
acc = acc.concat(response.content);
|
|
70
|
+
}
|
|
71
|
+
return acc;
|
|
72
|
+
}, []);
|
|
73
|
+
// Merge Facets
|
|
74
|
+
const facets = responses.reduce((acc, response) => {
|
|
75
|
+
if (response.facets) {
|
|
76
|
+
acc = acc.concat(response.facets);
|
|
77
|
+
}
|
|
78
|
+
return acc;
|
|
79
|
+
}, []);
|
|
80
|
+
return { content, facets };
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* @private
|
|
84
|
+
* Merge two date ranges by taking the longest span
|
|
85
|
+
* @param dr1
|
|
86
|
+
* @param dr2
|
|
87
|
+
* @returns
|
|
88
|
+
*/
|
|
89
|
+
export function mergeDateRange(dr1, dr2) {
|
|
90
|
+
const result = cloneObject(dr1);
|
|
91
|
+
// feels like there is a more concise way to do this...
|
|
92
|
+
if (dr2.from < dr1.from) {
|
|
93
|
+
result.from = dr2.from;
|
|
94
|
+
}
|
|
95
|
+
if (dr2.to > dr1.to) {
|
|
96
|
+
result.to = dr2.to;
|
|
97
|
+
}
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* @private
|
|
102
|
+
* Merge two [`MatchOptions`](../MatchOptions)
|
|
103
|
+
*
|
|
104
|
+
* Currently a naieve implementation where the arrays are simply merged
|
|
105
|
+
*
|
|
106
|
+
* @param mo1
|
|
107
|
+
* @param mo2
|
|
108
|
+
* @returns
|
|
109
|
+
*/
|
|
110
|
+
export function mergeMatchOptions(mo1, mo2) {
|
|
111
|
+
const result = {};
|
|
112
|
+
// None of these props are required, so we can't just
|
|
113
|
+
// use Object.keys/.entries
|
|
114
|
+
const props = ["any", "all", "not", "exact"];
|
|
115
|
+
props.forEach((prop) => {
|
|
116
|
+
const key = prop;
|
|
117
|
+
const merged = [...getMatchValue(mo1, key), ...getMatchValue(mo2, key)];
|
|
118
|
+
if (merged.length) {
|
|
119
|
+
// remove any dupes and set on the return
|
|
120
|
+
result[key] = merged.filter(unique);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
return result;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get the value of a property on an IMatchOptions
|
|
127
|
+
*
|
|
128
|
+
* This is complex b/c all the props are optional, and
|
|
129
|
+
* they could be a simple string, or an array of strings.
|
|
130
|
+
*
|
|
131
|
+
* This function normalizes all that and returns an array,
|
|
132
|
+
* which may or may not be empty
|
|
133
|
+
* @param option
|
|
134
|
+
* @param key
|
|
135
|
+
* @returns
|
|
136
|
+
*/
|
|
137
|
+
function getMatchValue(option, key) {
|
|
138
|
+
let matchValue = [];
|
|
139
|
+
if (option[key]) {
|
|
140
|
+
const val = option[key];
|
|
141
|
+
if (Array.isArray(val)) {
|
|
142
|
+
matchValue = val;
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
matchValue = [val];
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return matchValue;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* @private
|
|
152
|
+
* Convert a field value into a MatchOptions if it's not already one
|
|
153
|
+
* @param value
|
|
154
|
+
* @returns
|
|
155
|
+
*/
|
|
156
|
+
export function valueToMatchOptions(value) {
|
|
157
|
+
let result = {};
|
|
158
|
+
if (Array.isArray(value)) {
|
|
159
|
+
result = {
|
|
160
|
+
any: value,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
if (typeof value === "string") {
|
|
165
|
+
result = {
|
|
166
|
+
any: [value],
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
if (typeof value === "object") {
|
|
170
|
+
result = value;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return result;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* @private
|
|
177
|
+
* Convert a RelativeDate to a DateRange<number>
|
|
178
|
+
* @param relative
|
|
179
|
+
* @returns
|
|
180
|
+
*/
|
|
181
|
+
export function relativeDateToDateRange(relative) {
|
|
182
|
+
// hash of offsets
|
|
183
|
+
const offsetMs = {
|
|
184
|
+
min: 1000 * 60,
|
|
185
|
+
hours: 1000 * 60 * 60,
|
|
186
|
+
days: 1000 * 60 * 60 * 24,
|
|
187
|
+
weeks: 1000 * 60 * 60 * 24 * 7,
|
|
188
|
+
};
|
|
189
|
+
const now = new Date();
|
|
190
|
+
// default
|
|
191
|
+
const result = {
|
|
192
|
+
type: "date-range",
|
|
193
|
+
from: now.getTime(),
|
|
194
|
+
to: now.getTime(),
|
|
195
|
+
};
|
|
196
|
+
//
|
|
197
|
+
switch (relative.unit) {
|
|
198
|
+
case "hours":
|
|
199
|
+
case "days":
|
|
200
|
+
case "weeks":
|
|
201
|
+
result.from = result.to - offsetMs[relative.unit] * relative.num;
|
|
202
|
+
break;
|
|
203
|
+
case "months":
|
|
204
|
+
// get the current month and subtract num
|
|
205
|
+
now.setMonth(now.getMonth() - relative.num);
|
|
206
|
+
result.from = now.getTime();
|
|
207
|
+
break;
|
|
208
|
+
case "years":
|
|
209
|
+
now.setFullYear(now.getFullYear() - relative.num);
|
|
210
|
+
result.from = now.getTime();
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
return result;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* @private
|
|
217
|
+
* As a final `ISearchOptions` object gets created, many such objects are created, and
|
|
218
|
+
* need to be systematically "merged" so as to return consistently structured `q` and `filter`
|
|
219
|
+
* values.
|
|
220
|
+
* @param so1
|
|
221
|
+
* @param so2
|
|
222
|
+
* @param join
|
|
223
|
+
* @returns
|
|
224
|
+
*/
|
|
225
|
+
export function mergeSearchOptions(so1, so2, join) {
|
|
226
|
+
const result = cloneObject(so1);
|
|
227
|
+
const { q, filter } = so2;
|
|
228
|
+
if (q) {
|
|
229
|
+
result.q = (result.q ? ` (${result.q} ${join} ${q})` : q).trim();
|
|
230
|
+
}
|
|
231
|
+
if (filter) {
|
|
232
|
+
result.filter = (result.filter ? `(${result.filter} ${join} ${filter})` : filter).trim();
|
|
233
|
+
}
|
|
234
|
+
return result;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* @private
|
|
238
|
+
* Serialize a `MatchOptions` into `q` or `filter` on an `ISearchOptions`
|
|
239
|
+
* @param key
|
|
240
|
+
* @param opts
|
|
241
|
+
* @returns
|
|
242
|
+
*/
|
|
243
|
+
export function serializeMatchOptions(key, opts) {
|
|
244
|
+
const result = {
|
|
245
|
+
q: "",
|
|
246
|
+
filter: "",
|
|
247
|
+
};
|
|
248
|
+
if (opts.exact) {
|
|
249
|
+
// defined separately for refactoring later
|
|
250
|
+
const userFilterableFields = [
|
|
251
|
+
"username",
|
|
252
|
+
"firstname",
|
|
253
|
+
"lastname",
|
|
254
|
+
"fullname",
|
|
255
|
+
"email",
|
|
256
|
+
];
|
|
257
|
+
const itemFilterableFields = [
|
|
258
|
+
"title",
|
|
259
|
+
"tags",
|
|
260
|
+
"typekeywords",
|
|
261
|
+
"type",
|
|
262
|
+
"name",
|
|
263
|
+
"owner",
|
|
264
|
+
];
|
|
265
|
+
const groupFilterableFields = ["title", "typekeywords", "owner"];
|
|
266
|
+
const filterableFields = [
|
|
267
|
+
...userFilterableFields,
|
|
268
|
+
...itemFilterableFields,
|
|
269
|
+
...groupFilterableFields,
|
|
270
|
+
];
|
|
271
|
+
if (filterableFields.includes(key)) {
|
|
272
|
+
result.filter = serializeStringOrArray("AND", key, opts.exact);
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
// Treat it the same as .all
|
|
276
|
+
if (typeof opts.exact === "string") {
|
|
277
|
+
if (!opts.all) {
|
|
278
|
+
opts.all = [];
|
|
279
|
+
}
|
|
280
|
+
if (typeof opts.all === "string") {
|
|
281
|
+
opts.all = [opts.all];
|
|
282
|
+
}
|
|
283
|
+
opts.all.push(opts.exact);
|
|
284
|
+
}
|
|
285
|
+
if (Array.isArray(opts.exact)) {
|
|
286
|
+
if (!opts.all) {
|
|
287
|
+
opts.all = [];
|
|
288
|
+
}
|
|
289
|
+
if (typeof opts.all === "string") {
|
|
290
|
+
opts.all = [opts.all];
|
|
291
|
+
}
|
|
292
|
+
opts.all = opts.all.concat(opts.exact);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
// Handle the other props
|
|
297
|
+
if (opts.any) {
|
|
298
|
+
result.q = serializeStringOrArray("OR", key, opts.any);
|
|
299
|
+
}
|
|
300
|
+
if (opts.all) {
|
|
301
|
+
result.q =
|
|
302
|
+
(result.q ? result.q + " AND " : "") +
|
|
303
|
+
serializeStringOrArray("AND", key, opts.all);
|
|
304
|
+
}
|
|
305
|
+
if (opts.not) {
|
|
306
|
+
// negate the entries if they are not
|
|
307
|
+
result.q =
|
|
308
|
+
(result.q ? result.q + " AND " : "") +
|
|
309
|
+
serializeStringOrArray("OR", `-${key}`, opts.not);
|
|
310
|
+
}
|
|
311
|
+
return result;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* @private
|
|
315
|
+
* Serialize a DateRange<number> into a Portal Query string
|
|
316
|
+
* @param key
|
|
317
|
+
* @param range
|
|
318
|
+
* @returns
|
|
319
|
+
*/
|
|
320
|
+
export function serializeDateRange(key, range) {
|
|
321
|
+
return {
|
|
322
|
+
q: `${key}:[${range.from} TO ${range.to}]`,
|
|
323
|
+
filter: "",
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* @private
|
|
328
|
+
* Serialize a `string` or `string[]` into a string
|
|
329
|
+
* @param join
|
|
330
|
+
* @param key
|
|
331
|
+
* @param value
|
|
332
|
+
* @returns
|
|
333
|
+
*/
|
|
334
|
+
export function serializeStringOrArray(join, key, value) {
|
|
335
|
+
let q = "";
|
|
336
|
+
if (Array.isArray(value)) {
|
|
337
|
+
q = `(${key}:"${value.join(`" ${join} ${key}:"`)}")`;
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
q = `${key}:"${value}"`;
|
|
341
|
+
}
|
|
342
|
+
return q;
|
|
343
|
+
}
|
|
344
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/search/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { __awaiter, __generator } from "tslib";
|
|
2
|
+
import { expandContentFilter, serializeContentFilterForPortal, convertPortalResponseToFacets, } from "./content-utils";
|
|
3
|
+
import { searchItems } from "@esri/arcgis-rest-portal";
|
|
4
|
+
import { expandApis, mergeSearchResults } from "./utils";
|
|
5
|
+
import { itemToContent } from "..";
|
|
6
|
+
/**
|
|
7
|
+
* Search for content via the Portal or Hub API
|
|
8
|
+
* @param filter
|
|
9
|
+
* @param options
|
|
10
|
+
*/
|
|
11
|
+
export function _searchContent(filter, options) {
|
|
12
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
13
|
+
var expanded, apis, searchPromises, results;
|
|
14
|
+
return __generator(this, function (_a) {
|
|
15
|
+
switch (_a.label) {
|
|
16
|
+
case 0:
|
|
17
|
+
expanded = expandContentFilter(filter);
|
|
18
|
+
// APIs
|
|
19
|
+
if (!options.apis) {
|
|
20
|
+
// default to AGO PROD
|
|
21
|
+
options.apis = ["arcgis"];
|
|
22
|
+
}
|
|
23
|
+
apis = expandApis(options.apis);
|
|
24
|
+
searchPromises = apis.map(function (api) {
|
|
25
|
+
var _a;
|
|
26
|
+
// Portal Search
|
|
27
|
+
if (api.type === "arcgis") {
|
|
28
|
+
// serialize for portal
|
|
29
|
+
var so = serializeContentFilterForPortal(expanded);
|
|
30
|
+
// pass auth forward
|
|
31
|
+
if (options.authentication) {
|
|
32
|
+
so.authentication = options.authentication;
|
|
33
|
+
}
|
|
34
|
+
// Aggregations
|
|
35
|
+
if ((_a = options.aggregations) === null || _a === void 0 ? void 0 : _a.length) {
|
|
36
|
+
so.countFields = options.aggregations.join(",");
|
|
37
|
+
so.countSize = 200;
|
|
38
|
+
}
|
|
39
|
+
if (options.num) {
|
|
40
|
+
so.num = options.num;
|
|
41
|
+
}
|
|
42
|
+
return searchPortal(so);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// Hub API Search
|
|
46
|
+
// TODO: Implement hub api content search
|
|
47
|
+
return Promise.resolve({
|
|
48
|
+
content: [],
|
|
49
|
+
facets: [],
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
return [4 /*yield*/, Promise.all(searchPromises)];
|
|
54
|
+
case 1:
|
|
55
|
+
results = _a.sent();
|
|
56
|
+
// merge and return
|
|
57
|
+
return [2 /*return*/, mergeSearchResults(results)];
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
function searchPortal(searchOptions) {
|
|
63
|
+
return searchItems(searchOptions).then(function (resp) {
|
|
64
|
+
var content = resp.results.map(itemToContent);
|
|
65
|
+
// convert aggregations into facets
|
|
66
|
+
var facets = convertPortalResponseToFacets(resp);
|
|
67
|
+
return { content: content, facets: facets };
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=_searchContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_searchContent.js","sourceRoot":"","sources":["../../../src/search/_searchContent.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAkB,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAe,aAAa,EAAE,MAAM,IAAI,CAAC;AAEhD;;;;GAIG;AACH,MAAM,UAAgB,cAAc,CAClC,MAAyB,EACzB,OAA0B;;;;;;oBAGpB,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;oBAE7C,OAAO;oBACP,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;wBACjB,sBAAsB;wBACtB,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;qBAC3B;oBACK,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAGhC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG;;wBAClC,gBAAgB;wBAChB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;4BACzB,uBAAuB;4BACvB,IAAM,EAAE,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;4BACrD,oBAAoB;4BACpB,IAAI,OAAO,CAAC,cAAc,EAAE;gCAC1B,EAAE,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;6BAC5C;4BACD,eAAe;4BACf,UAAI,OAAO,CAAC,YAAY,0CAAE,MAAM,EAAE;gCAChC,EAAE,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gCAChD,EAAE,CAAC,SAAS,GAAG,GAAG,CAAC;6BACpB;4BACD,IAAI,OAAO,CAAC,GAAG,EAAE;gCACf,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;6BACtB;4BACD,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC;yBACzB;6BAAM;4BACL,iBAAiB;4BACjB,yCAAyC;4BACzC,OAAO,OAAO,CAAC,OAAO,CAAC;gCACrB,OAAO,EAAE,EAAmB;gCAC5B,MAAM,EAAE,EAAc;6BACvB,CAAC,CAAC;yBACJ;oBACH,CAAC,CAAC,CAAC;oBAEa,qBAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAA;;oBAA3C,OAAO,GAAG,SAAiC;oBACjD,mBAAmB;oBACnB,sBAAO,kBAAkB,CAAC,OAAO,CAAC,EAAC;;;;CACpC;AAED,SAAS,YAAY,CACnB,aAA6B;IAE7B,OAAO,WAAW,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAC,IAAI;QAC1C,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAChD,mCAAmC;QACnC,IAAM,MAAM,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACnD,OAAO,EAAE,OAAO,SAAA,EAAE,MAAM,QAAA,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC"}
|