@elaraai/e3-ui 1.0.83 → 1.0.85
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/src/bind/data.d.ts +4 -3
- package/dist/src/bind/data.d.ts.map +1 -1
- package/dist/src/bind/data.js +4 -3
- package/dist/src/bind/data.js.map +1 -1
- package/dist/src/bind/record.d.ts +234 -6
- package/dist/src/bind/record.d.ts.map +1 -1
- package/dist/src/bind/record.js +250 -7
- package/dist/src/bind/record.js.map +1 -1
- package/dist/src/bind/sources.d.ts +148 -0
- package/dist/src/bind/sources.d.ts.map +1 -0
- package/dist/src/bind/sources.js +116 -0
- package/dist/src/bind/sources.js.map +1 -0
- package/dist/src/index.d.ts +4 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +9 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal.d.ts +4 -1
- package/dist/src/internal.d.ts.map +1 -1
- package/dist/src/internal.js +11 -1
- package/dist/src/internal.js.map +1 -1
- package/dist/src/query/builder.d.ts +3257 -0
- package/dist/src/query/builder.d.ts.map +1 -0
- package/dist/src/query/builder.js +126 -0
- package/dist/src/query/builder.js.map +1 -0
- package/dist/src/query/index.d.ts +108 -0
- package/dist/src/query/index.d.ts.map +1 -0
- package/dist/src/query/index.js +76 -0
- package/dist/src/query/index.js.map +1 -0
- package/dist/src/query/library.d.ts +3241 -0
- package/dist/src/query/library.d.ts.map +1 -0
- package/dist/src/query/library.js +114 -0
- package/dist/src/query/library.js.map +1 -0
- package/dist/src/query/queries.d.ts +4696 -0
- package/dist/src/query/queries.d.ts.map +1 -0
- package/dist/src/query/queries.js +129 -0
- package/dist/src/query/queries.js.map +1 -0
- package/dist/src/query/saved.d.ts +72 -0
- package/dist/src/query/saved.d.ts.map +1 -0
- package/dist/src/query/saved.js +84 -0
- package/dist/src/query/saved.js.map +1 -0
- package/dist/src/query/steps.d.ts +613 -0
- package/dist/src/query/steps.d.ts.map +1 -0
- package/dist/src/query/steps.js +316 -0
- package/dist/src/query/steps.js.map +1 -0
- package/dist/src/query/types.d.ts +444 -0
- package/dist/src/query/types.d.ts.map +1 -0
- package/dist/src/query/types.js +113 -0
- package/dist/src/query/types.js.map +1 -0
- package/dist/src/studio/builder.d.ts +3123 -0
- package/dist/src/studio/builder.d.ts.map +1 -0
- package/dist/src/studio/builder.js +115 -0
- package/dist/src/studio/builder.js.map +1 -0
- package/dist/src/studio/canvas.d.ts +83 -0
- package/dist/src/studio/canvas.d.ts.map +1 -0
- package/dist/src/studio/canvas.js +71 -0
- package/dist/src/studio/canvas.js.map +1 -0
- package/dist/src/studio/component.d.ts +178 -0
- package/dist/src/studio/component.d.ts.map +1 -0
- package/dist/src/studio/component.js +189 -0
- package/dist/src/studio/component.js.map +1 -0
- package/dist/src/studio/index.d.ts +104 -0
- package/dist/src/studio/index.d.ts.map +1 -0
- package/dist/src/studio/index.js +75 -0
- package/dist/src/studio/index.js.map +1 -0
- package/dist/src/studio/inspector.d.ts +208 -0
- package/dist/src/studio/inspector.d.ts.map +1 -0
- package/dist/src/studio/inspector.js +155 -0
- package/dist/src/studio/inspector.js.map +1 -0
- package/dist/src/studio/library.d.ts +3506 -0
- package/dist/src/studio/library.d.ts.map +1 -0
- package/dist/src/studio/library.js +245 -0
- package/dist/src/studio/library.js.map +1 -0
- package/dist/src/studio/page.d.ts +305 -0
- package/dist/src/studio/page.d.ts.map +1 -0
- package/dist/src/studio/page.js +105 -0
- package/dist/src/studio/page.js.map +1 -0
- package/dist/src/studio/pages.d.ts +10929 -0
- package/dist/src/studio/pages.d.ts.map +1 -0
- package/dist/src/studio/pages.js +502 -0
- package/dist/src/studio/pages.js.map +1 -0
- package/dist/src/studio/palette.d.ts +179 -0
- package/dist/src/studio/palette.d.ts.map +1 -0
- package/dist/src/studio/palette.js +120 -0
- package/dist/src/studio/palette.js.map +1 -0
- package/dist/src/studio/publish.d.ts +397 -0
- package/dist/src/studio/publish.d.ts.map +1 -0
- package/dist/src/studio/publish.js +198 -0
- package/dist/src/studio/publish.js.map +1 -0
- package/dist/src/ui.d.ts +16 -3
- package/dist/src/ui.d.ts.map +1 -1
- package/dist/src/ui.js +21 -1
- package/dist/src/ui.js.map +1 -1
- package/dist/test/bind/data/data.examples.d.ts +76 -1
- package/dist/test/bind/data/data.examples.d.ts.map +1 -1
- package/dist/test/bind/data/data.examples.js +176 -3
- package/dist/test/bind/data/data.examples.js.map +1 -1
- package/dist/test/bind/func/func.examples.d.ts +8 -0
- package/dist/test/bind/func/func.examples.d.ts.map +1 -1
- package/dist/test/bind/func/func.examples.js +4 -3
- package/dist/test/bind/func/func.examples.js.map +1 -1
- package/dist/test/bind/record/record.examples.d.ts +65 -1
- package/dist/test/bind/record/record.examples.d.ts.map +1 -1
- package/dist/test/bind/record/record.examples.js +21 -3
- package/dist/test/bind/record/record.examples.js.map +1 -1
- package/dist/test/query/query.examples.d.ts +5022 -0
- package/dist/test/query/query.examples.d.ts.map +1 -0
- package/dist/test/query/query.examples.js +467 -0
- package/dist/test/query/query.examples.js.map +1 -0
- package/dist/test/studio/component.examples.d.ts +7 -0
- package/dist/test/studio/component.examples.d.ts.map +1 -0
- package/dist/test/studio/component.examples.js +46 -0
- package/dist/test/studio/component.examples.js.map +1 -0
- package/dist/test/studio/page.examples.d.ts +7 -0
- package/dist/test/studio/page.examples.d.ts.map +1 -0
- package/dist/test/studio/page.examples.js +64 -0
- package/dist/test/studio/page.examples.js.map +1 -0
- package/dist/test/studio/studio.examples.d.ts +1766 -0
- package/dist/test/studio/studio.examples.d.ts.map +1 -0
- package/dist/test/studio/studio.examples.js +354 -0
- package/dist/test/studio/studio.examples.js.map +1 -0
- package/package.json +9 -8
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The builder's inspector (#996) — the selected placement's component, what
|
|
7
|
+
* it reads, its description and its layout, computed in East for the
|
|
8
|
+
* `StudioBuilder` renderer, which draws the inspector in its pane after the
|
|
9
|
+
* canvas. It writes no page: a layout edit is a request the canvas takes as
|
|
10
|
+
* one gesture of the page's editing session, undone, redone, discarded and
|
|
11
|
+
* applied with the rest.
|
|
12
|
+
*
|
|
13
|
+
* @packageDocumentation
|
|
14
|
+
*/
|
|
15
|
+
import { ArrayType, BooleanType, East, FunctionType, IntegerType, NullType, OptionType, SetType, StringType, StructType, none, some, } from "@elaraai/east";
|
|
16
|
+
import { SnapGrid } from "@elaraai/east-ui/internal";
|
|
17
|
+
import { TreePathType } from "@elaraai/e3-types";
|
|
18
|
+
import { StudioComponentType } from "./component.js";
|
|
19
|
+
import { StudioCellType } from "./pages.js";
|
|
20
|
+
// ============================================================================
|
|
21
|
+
// What the inspector shows
|
|
22
|
+
// ============================================================================
|
|
23
|
+
/**
|
|
24
|
+
* The selected placement's layout, as the canvas draws it.
|
|
25
|
+
*
|
|
26
|
+
* @property span - Its span, in columns of 12
|
|
27
|
+
* @property most - The most span its row leaves it: 12 less the row's other spans
|
|
28
|
+
* @property row - Its row, counting from 1 in the order the rows first appear
|
|
29
|
+
* @property rows - How many rows the page has
|
|
30
|
+
* @property height - Its height in px; `none` is its content's
|
|
31
|
+
* @property align - Where it sits in a taller row
|
|
32
|
+
*/
|
|
33
|
+
export const InspectorLayoutType = StructType({
|
|
34
|
+
span: IntegerType,
|
|
35
|
+
most: IntegerType,
|
|
36
|
+
row: IntegerType,
|
|
37
|
+
rows: IntegerType,
|
|
38
|
+
height: OptionType(IntegerType),
|
|
39
|
+
align: SnapGrid.Types.Align,
|
|
40
|
+
});
|
|
41
|
+
/**
|
|
42
|
+
* The selected placement, as the inspector shows it.
|
|
43
|
+
*
|
|
44
|
+
* @property key - The placement's key — what a layout request names
|
|
45
|
+
* @property name - Its title, else its component's name, else its component's key
|
|
46
|
+
* @property component - Its component's key
|
|
47
|
+
* @property changed - Its component's code changed since the page went live:
|
|
48
|
+
* its fingerprint differs from the one the live version's cell stored
|
|
49
|
+
* @property reads - The paths of the datasets its component's code reads, whole
|
|
50
|
+
* or a window at a time — the renderer prints each as its keypath (`.inputs.sales_daily`)
|
|
51
|
+
* @property description - Its component's description, fixed by its developer
|
|
52
|
+
* @property layout - Its layout ({@link InspectorLayoutType})
|
|
53
|
+
*/
|
|
54
|
+
export const InspectorSelectionType = StructType({
|
|
55
|
+
key: StringType,
|
|
56
|
+
name: StringType,
|
|
57
|
+
component: StringType,
|
|
58
|
+
changed: BooleanType,
|
|
59
|
+
reads: ArrayType(TreePathType),
|
|
60
|
+
description: OptionType(StringType),
|
|
61
|
+
layout: InspectorLayoutType,
|
|
62
|
+
});
|
|
63
|
+
/**
|
|
64
|
+
* The inspector, as the `StudioBuilder` renderer draws it.
|
|
65
|
+
*
|
|
66
|
+
* @property selection - The selected placement; `none` when nothing is selected
|
|
67
|
+
* @property onRequest - Asks the canvas for a layout change, which it takes as one gesture
|
|
68
|
+
*/
|
|
69
|
+
export const StudioInspectorPayloadType = StructType({
|
|
70
|
+
selection: OptionType(InspectorSelectionType),
|
|
71
|
+
onRequest: FunctionType([SnapGrid.Types.Request], NullType),
|
|
72
|
+
});
|
|
73
|
+
/**
|
|
74
|
+
* The selected placement, as the inspector shows it — `none` when nothing is
|
|
75
|
+
* selected, or the page has no placement under the selected key.
|
|
76
|
+
*
|
|
77
|
+
* @remarks
|
|
78
|
+
* `cells` are the page's placements as the canvas draws them, its unsaved
|
|
79
|
+
* drafts in place; `live` the live version's, whose fingerprints say whether a
|
|
80
|
+
* component's code changed since the page went live — a placement the live
|
|
81
|
+
* version does not hold has not gone live, and has not changed. A placement
|
|
82
|
+
* whose component the surface does not list is named by its component's key,
|
|
83
|
+
* reads nothing and has no description.
|
|
84
|
+
*/
|
|
85
|
+
export const inspectorSelection = East.function([ArrayType(StudioComponentType), ArrayType(StudioCellType), OptionType(ArrayType(StudioCellType)), OptionType(StringType)], OptionType(InspectorSelectionType), ($, listed, cells, live, selected) => {
|
|
86
|
+
const found = $.let(selected.match({
|
|
87
|
+
some: (_$2, key) => cells.firstMap((_$3, cell) => cell.key.equal(key).ifElse(() => East.value(some(cell), OptionType(StudioCellType)), () => East.value(none, OptionType(StudioCellType)))),
|
|
88
|
+
none: (_$2) => East.value(none, OptionType(StudioCellType)),
|
|
89
|
+
}), OptionType(StudioCellType));
|
|
90
|
+
$.if(found.hasTag("none"), ($2) => {
|
|
91
|
+
$2.return(East.value(none, OptionType(InspectorSelectionType)));
|
|
92
|
+
});
|
|
93
|
+
const cell = $.let(found.unwrap("some"));
|
|
94
|
+
const component = $.let(listed.firstMap((_$2, c) => c.key.equal(cell.component).ifElse(() => East.value(some(c), OptionType(StudioComponentType)), () => East.value(none, OptionType(StudioComponentType)))), OptionType(StudioComponentType));
|
|
95
|
+
const name = $.let(cell.title.match({
|
|
96
|
+
some: (_$2, title) => title,
|
|
97
|
+
none: (_$2) => component.match({ some: (_$3, c) => c.name, none: (_$3) => cell.component }),
|
|
98
|
+
}));
|
|
99
|
+
// The fingerprint the live version's cell stored, against its code's now.
|
|
100
|
+
const stored = $.let(live.match({
|
|
101
|
+
some: (_$2, liveCells) => liveCells.firstMap((_$3, c) => c.key.equal(cell.key).ifElse(() => East.value(some(c.fingerprint), OptionType(StringType)), () => East.value(none, OptionType(StringType)))),
|
|
102
|
+
none: (_$2) => East.value(none, OptionType(StringType)),
|
|
103
|
+
}), OptionType(StringType));
|
|
104
|
+
const changed = $.let(stored.match({
|
|
105
|
+
some: (_$2, fingerprint) => component.match({
|
|
106
|
+
some: (_$3, c) => c.fingerprint.notEqual(fingerprint),
|
|
107
|
+
none: (_$3) => East.value(false),
|
|
108
|
+
}),
|
|
109
|
+
none: (_$2) => East.value(false),
|
|
110
|
+
}));
|
|
111
|
+
const reads = $.let(component.match({
|
|
112
|
+
some: (_$2, c) => c.reads.paths.concat(c.reads.pages),
|
|
113
|
+
none: (_$2) => East.value([], ArrayType(TreePathType)),
|
|
114
|
+
}), ArrayType(TreePathType));
|
|
115
|
+
// Its row among the rows, in the order they first appear, and the room
|
|
116
|
+
// the row's other placements leave it.
|
|
117
|
+
const rows = $.let([], ArrayType(StringType));
|
|
118
|
+
const seen = $.let(new Set(), SetType(StringType));
|
|
119
|
+
const others = $.let(0n);
|
|
120
|
+
$.for(cells, ($2, c) => {
|
|
121
|
+
$2.if(seen.has(c.row).not(), ($3) => {
|
|
122
|
+
$3(seen.insert(c.row));
|
|
123
|
+
$3(rows.pushLast(c.row));
|
|
124
|
+
});
|
|
125
|
+
$2.if(c.row.equal(cell.row).and(() => c.key.notEqual(cell.key)), ($3) => {
|
|
126
|
+
$3.assign(others, others.add(c.span));
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
const row = $.let(0n);
|
|
130
|
+
$.for(rows, ($2, r, index) => {
|
|
131
|
+
$2.if(r.equal(cell.row), ($3) => {
|
|
132
|
+
$3.assign(row, index.add(1n));
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
return East.value(some({
|
|
136
|
+
key: cell.key,
|
|
137
|
+
name,
|
|
138
|
+
component: cell.component,
|
|
139
|
+
changed,
|
|
140
|
+
reads,
|
|
141
|
+
description: component.match({
|
|
142
|
+
some: (_$2, c) => c.description,
|
|
143
|
+
none: (_$2) => East.value(none, OptionType(StringType)),
|
|
144
|
+
}),
|
|
145
|
+
layout: {
|
|
146
|
+
span: cell.span,
|
|
147
|
+
most: East.value(12n).subtract(others),
|
|
148
|
+
row,
|
|
149
|
+
rows: rows.size(),
|
|
150
|
+
height: cell.height,
|
|
151
|
+
align: cell.align,
|
|
152
|
+
},
|
|
153
|
+
}), OptionType(InspectorSelectionType));
|
|
154
|
+
});
|
|
155
|
+
//# sourceMappingURL=inspector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../../src/studio/inspector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;GASG;AAEH,OAAO,EACH,SAAS,EACT,WAAW,EACX,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,UAAU,EACV,OAAO,EACP,UAAU,EACV,UAAU,EACV,IAAI,EACJ,IAAI,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;IAC1C,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,WAAW;IACjB,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC;IAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK;CAC9B,CAAC,CAAC;AAKH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAC;IAC7C,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,UAAU;IACrB,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,SAAS,CAAC,YAAY,CAAC;IAC9B,WAAW,EAAE,UAAU,CAAC,UAAU,CAAC;IACnC,MAAM,EAAE,mBAAmB;CAC9B,CAAC,CAAC;AAKH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,UAAU,CAAC;IACjD,SAAS,EAAE,UAAU,CAAC,sBAAsB,CAAC;IAC7C,SAAS,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;CAC9D,CAAC,CAAC;AAKH;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAC3C,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,EAC1H,UAAU,CAAC,sBAAsB,CAAC,EAClC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;IACjC,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC/B,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CACxE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC,EACxD,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC,CACrD,CAAC;QACF,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;KAC9D,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;QAC9B,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAClF,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC,EAC1D,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAC1D,CAAC,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAChC,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK;QAC3B,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;KAC9F,CAAC,CAAC,CAAC;IACJ,0EAA0E;IAC1E,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5B,IAAI,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CACjF,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,EAC7D,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CACjD,CAAC;QACF,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;KAC1D,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/B,IAAI,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;YACxC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC;YACrD,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;SACnC,CAAC;QACF,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;KACnC,CAAC,CAAC,CAAC;IACJ,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;QAChC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QACrD,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;KACzD,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;IAC7B,uEAAuE;IACvE,uCAAuC;IACvC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,EAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QACnB,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YAChC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;YACpE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;QACzB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;YAC5B,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QACnB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO;QACP,KAAK;QACL,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC;YACzB,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW;YAC/B,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;SAC1D,CAAC;QACF,MAAM,EAAE;YACJ,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YACtC,GAAG;YACH,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB;KACJ,CAAC,EAAE,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC5C,CAAC,CACJ,CAAC"}
|