aontu 0.41.0 → 0.43.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/ctx.d.ts +5 -2
- package/dist/ctx.js +2 -1
- package/dist/ctx.js.map +1 -1
- package/dist/lang.d.ts +5 -1
- package/dist/lang.js +100 -24
- package/dist/lang.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/type.d.ts +5 -0
- package/dist/type.js.map +1 -1
- package/dist/unify.js +292 -13
- package/dist/unify.js.map +1 -1
- package/dist/utility.js +6 -2
- package/dist/utility.js.map +1 -1
- package/dist/val/BagVal.d.ts +0 -3
- package/dist/val/BagVal.js +6 -6
- package/dist/val/BagVal.js.map +1 -1
- package/dist/val/ConjunctVal.d.ts +1 -1
- package/dist/val/ConjunctVal.js +137 -14
- package/dist/val/ConjunctVal.js.map +1 -1
- package/dist/val/CopyFuncVal.js +3 -2
- package/dist/val/CopyFuncVal.js.map +1 -1
- package/dist/val/DisjunctVal.js +4 -0
- package/dist/val/DisjunctVal.js.map +1 -1
- package/dist/val/ExpectVal.js +16 -3
- package/dist/val/ExpectVal.js.map +1 -1
- package/dist/val/JunctionVal.d.ts +1 -0
- package/dist/val/JunctionVal.js +6 -1
- package/dist/val/JunctionVal.js.map +1 -1
- package/dist/val/KeyFuncVal.js +0 -2
- package/dist/val/KeyFuncVal.js.map +1 -1
- package/dist/val/ListVal.d.ts +1 -0
- package/dist/val/ListVal.js +33 -66
- package/dist/val/ListVal.js.map +1 -1
- package/dist/val/MapVal.d.ts +3 -2
- package/dist/val/MapVal.js +67 -95
- package/dist/val/MapVal.js.map +1 -1
- package/dist/val/MoveFuncVal.d.ts +2 -1
- package/dist/val/MoveFuncVal.js +78 -13
- package/dist/val/MoveFuncVal.js.map +1 -1
- package/dist/val/PathFuncVal.js +25 -4
- package/dist/val/PathFuncVal.js.map +1 -1
- package/dist/val/{RefVal.d.ts → PathVal.d.ts} +4 -3
- package/dist/val/{RefVal.js → PathVal.js} +75 -77
- package/dist/val/PathVal.js.map +1 -0
- package/dist/val/PlusOpVal.d.ts +1 -1
- package/dist/val/PrefVal.js +18 -5
- package/dist/val/PrefVal.js.map +1 -1
- package/dist/val/SpreadVal.d.ts +20 -0
- package/dist/val/SpreadVal.js +194 -0
- package/dist/val/SpreadVal.js.map +1 -0
- package/dist/val/Val.d.ts +2 -1
- package/dist/val/Val.js +7 -8
- package/dist/val/Val.js.map +1 -1
- package/dist/val/VarVal.js +2 -2
- package/dist/val/VarVal.js.map +1 -1
- package/package.json +5 -6
- package/src/ctx.ts +16 -3
- package/src/lang.ts +113 -23
- package/src/type.ts +5 -0
- package/src/unify.ts +310 -13
- package/src/utility.ts +5 -2
- package/src/val/BagVal.ts +6 -7
- package/src/val/ConjunctVal.ts +131 -13
- package/src/val/CopyFuncVal.ts +3 -2
- package/src/val/DisjunctVal.ts +6 -0
- package/src/val/ExpectVal.ts +18 -4
- package/src/val/JunctionVal.ts +5 -1
- package/src/val/KeyFuncVal.ts +0 -3
- package/src/val/ListVal.ts +38 -88
- package/src/val/MapVal.ts +75 -124
- package/src/val/MoveFuncVal.ts +79 -14
- package/src/val/PathFuncVal.ts +29 -4
- package/src/val/PathVal.ts +435 -0
- package/src/val/PrefVal.ts +19 -6
- package/src/val/{RefVal.ts → RefVal.ts.old} +30 -19
- package/src/val/SpreadVal.ts +275 -0
- package/src/val/Val.ts +9 -9
- package/src/val/VarVal.ts +2 -2
- package/dist/val/RefVal.js.map +0 -1
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
/* Copyright (c) 2021-2025 Richard Rodger, MIT License */
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
import Util from 'node:util'
|
|
5
|
-
|
|
6
4
|
import {
|
|
7
5
|
walk,
|
|
8
6
|
explainOpen,
|
|
@@ -16,6 +14,7 @@ import type {
|
|
|
16
14
|
ValSpec,
|
|
17
15
|
} from '../type'
|
|
18
16
|
|
|
17
|
+
|
|
19
18
|
import {
|
|
20
19
|
DONE,
|
|
21
20
|
} from '../type'
|
|
@@ -137,10 +136,23 @@ class RefVal extends FeatureVal {
|
|
|
137
136
|
unify(peer: Val, ctx: AontuContext): Val {
|
|
138
137
|
peer = peer ?? top()
|
|
139
138
|
|
|
139
|
+
// TEMPORARY: nerf RefVals to verify spread-first resolution
|
|
140
|
+
return makeNilErr(ctx, 'ref_test_block', this, peer)
|
|
141
|
+
|
|
140
142
|
const te = ctx.explain && explainOpen(ctx, ctx.explain, 'Ref', this, peer)
|
|
141
143
|
let out: Val = this
|
|
142
144
|
let why = 'id'
|
|
143
145
|
|
|
146
|
+
// Defer ref resolution on first pass and while spreads remain
|
|
147
|
+
if (0 === ctx.cc || 0 < ctx.sc) {
|
|
148
|
+
if (!peer.isTop && this.id !== peer.id) {
|
|
149
|
+
out = new ConjunctVal({ peg: [this, peer] }, ctx)
|
|
150
|
+
}
|
|
151
|
+
out.dc = DONE === out.dc ? DONE : this.dc + 1
|
|
152
|
+
explainClose(te, out)
|
|
153
|
+
return out
|
|
154
|
+
}
|
|
155
|
+
|
|
144
156
|
if (this.id !== peer.id) {
|
|
145
157
|
|
|
146
158
|
// TODO: not resolved when all Vals in path are done is an error
|
|
@@ -359,31 +371,30 @@ class RefVal extends FeatureVal {
|
|
|
359
371
|
if (this.mark.type || this.mark.hide) {
|
|
360
372
|
out.mark.type = this.mark.type
|
|
361
373
|
out.mark.hide = this.mark.hide
|
|
362
|
-
|
|
363
|
-
// walk(out, (_key: string | number | undefined, val: Val) => {
|
|
364
|
-
// val.mark.type = this.mark.type
|
|
365
|
-
// val.mark.hide = this.mark.hide
|
|
366
|
-
// return val
|
|
367
|
-
// })
|
|
368
374
|
}
|
|
369
375
|
|
|
370
376
|
if (this.mark._hide_found) {
|
|
371
377
|
out.mark.hide = true
|
|
372
378
|
}
|
|
373
379
|
|
|
374
|
-
//
|
|
375
|
-
|
|
376
|
-
|
|
380
|
+
// Cache clone+walk results per (ref, target) per iteration.
|
|
381
|
+
const cacheKey = this.id + '|' + out.id
|
|
382
|
+
const cache = ctx._refCloneCache
|
|
383
|
+
const cached = cache?.get(cacheKey)
|
|
384
|
+
if (cached !== undefined) {
|
|
385
|
+
out = cached
|
|
386
|
+
}
|
|
387
|
+
else {
|
|
388
|
+
out = out.clone(ctx)
|
|
377
389
|
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
})
|
|
384
|
-
//}
|
|
390
|
+
walk(out, (_key: string | number | undefined, val: Val) => {
|
|
391
|
+
val.mark.type = false
|
|
392
|
+
val.mark.hide = false
|
|
393
|
+
return val
|
|
394
|
+
})
|
|
385
395
|
|
|
386
|
-
|
|
396
|
+
cache?.set(cacheKey, out)
|
|
397
|
+
}
|
|
387
398
|
}
|
|
388
399
|
}
|
|
389
400
|
}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
/* Copyright (c) 2025 Richard Rodger, MIT License */
|
|
2
|
+
|
|
3
|
+
// SpreadVal represents a spread constraint (&:{...}).
|
|
4
|
+
// It owns all spread application logic — MapVal and ListVal know
|
|
5
|
+
// nothing about spreads. A parsed `{a:1, &:{x:2}}` becomes
|
|
6
|
+
// `ConjunctVal([MapVal({a:1}), SpreadVal({x:2})])`.
|
|
7
|
+
//
|
|
8
|
+
// SpreadVal.unify applies the constraint to a peer MapVal/ListVal
|
|
9
|
+
// by unifying each of the peer's children with a per-key clone of
|
|
10
|
+
// the spread constraint.
|
|
11
|
+
|
|
12
|
+
import type {
|
|
13
|
+
Val,
|
|
14
|
+
ValSpec,
|
|
15
|
+
} from '../type'
|
|
16
|
+
|
|
17
|
+
import {
|
|
18
|
+
DONE,
|
|
19
|
+
} from '../type'
|
|
20
|
+
|
|
21
|
+
import { AontuContext } from '../ctx'
|
|
22
|
+
import { unite } from '../unify'
|
|
23
|
+
|
|
24
|
+
import {
|
|
25
|
+
propagateMarks,
|
|
26
|
+
walk,
|
|
27
|
+
explainOpen,
|
|
28
|
+
ec,
|
|
29
|
+
explainClose,
|
|
30
|
+
} from '../utility'
|
|
31
|
+
|
|
32
|
+
import { makeNilErr } from '../err'
|
|
33
|
+
|
|
34
|
+
import {
|
|
35
|
+
top
|
|
36
|
+
} from './top'
|
|
37
|
+
|
|
38
|
+
import { FeatureVal } from './FeatureVal'
|
|
39
|
+
import { ConjunctVal } from './ConjunctVal'
|
|
40
|
+
import { NilVal } from './NilVal'
|
|
41
|
+
import { MapVal } from './MapVal'
|
|
42
|
+
import { ListVal } from './ListVal'
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class SpreadVal extends FeatureVal {
|
|
46
|
+
isSpread = true
|
|
47
|
+
isGenable = true
|
|
48
|
+
cjo = 110000 // Sorts after MapVal/ListVal in ConjunctVal norm
|
|
49
|
+
|
|
50
|
+
constructor(spec: ValSpec, ctx?: AontuContext) {
|
|
51
|
+
super(spec, ctx)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
unify(peer: Val, ctx: AontuContext): Val {
|
|
56
|
+
peer = peer ?? top()
|
|
57
|
+
|
|
58
|
+
const te = ctx.explain && explainOpen(ctx, ctx.explain, 'Spread', this, peer)
|
|
59
|
+
|
|
60
|
+
let out: Val
|
|
61
|
+
|
|
62
|
+
if (peer.isTop) {
|
|
63
|
+
// Self-unify: spread is a constraint, not a value that converges.
|
|
64
|
+
// Mark done to prevent fixpoint cycling.
|
|
65
|
+
out = this
|
|
66
|
+
out.dc = DONE
|
|
67
|
+
}
|
|
68
|
+
else if ((peer as any).isSpread) {
|
|
69
|
+
// SpreadVal + SpreadVal: unify the two constraints
|
|
70
|
+
const merged = unite(
|
|
71
|
+
te ? ctx.clone({ explain: ec(te, 'SPR') }) : ctx,
|
|
72
|
+
this.peg, peer.peg, 'spread-merge')
|
|
73
|
+
out = new SpreadVal({ peg: merged }, ctx)
|
|
74
|
+
out.dc = merged.done ? DONE : this.dc + 1
|
|
75
|
+
}
|
|
76
|
+
else if (peer.isMap) {
|
|
77
|
+
// SpreadVal + MapVal: apply spread to each map key
|
|
78
|
+
out = this.applyToMap(peer as any, ctx, te)
|
|
79
|
+
}
|
|
80
|
+
else if (peer.isList) {
|
|
81
|
+
// SpreadVal + ListVal: apply spread to each list element
|
|
82
|
+
out = this.applyToList(peer as any, ctx, te)
|
|
83
|
+
}
|
|
84
|
+
else if (peer.isConjunct) {
|
|
85
|
+
// SpreadVal + ConjunctVal: unify with the conjunct.
|
|
86
|
+
// The conjunct fold will place us last (high cjo).
|
|
87
|
+
out = peer.unify(this, te ? ctx.clone({ explain: ec(te, 'SCJ') }) : ctx)
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
// SpreadVal + other: defer by wrapping in ConjunctVal
|
|
91
|
+
out = new ConjunctVal({ peg: [peer, this] }, ctx)
|
|
92
|
+
out.dc = this.dc + 1
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Track unresolved spread count.
|
|
96
|
+
// cc=0: increment for spreads that don't vanish.
|
|
97
|
+
// cc>0: decrement when a spread vanishes.
|
|
98
|
+
if (0 === ctx.cc) {
|
|
99
|
+
if (out.isSpread && !out.done) {
|
|
100
|
+
ctx.sc++
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else if (ctx.sc > 0) {
|
|
104
|
+
if (!(out.isSpread && !out.done)) {
|
|
105
|
+
ctx.sc--
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
ctx.explain && explainClose(te, out)
|
|
110
|
+
return out
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
// Apply this spread constraint to each key in a MapVal.
|
|
115
|
+
// Uses unite() per key with the correct descended context.
|
|
116
|
+
applyToMap(map: MapVal, ctx: AontuContext, te: any): Val {
|
|
117
|
+
const spread = this.peg
|
|
118
|
+
|
|
119
|
+
const mapKeys = Object.keys(map.peg)
|
|
120
|
+
|
|
121
|
+
// If map has no keys, preserve the spread for future merges.
|
|
122
|
+
// Mark as DONE to prevent fixpoint cycling.
|
|
123
|
+
if (mapKeys.length === 0) {
|
|
124
|
+
const out = new ConjunctVal({ peg: [map, this] }, ctx)
|
|
125
|
+
out.dc = DONE
|
|
126
|
+
return out
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const out = new MapVal({ peg: {} }, ctx)
|
|
130
|
+
out.closed = map.closed
|
|
131
|
+
out.optionalKeys = 0 < map.optionalKeys.length
|
|
132
|
+
? [...map.optionalKeys] : map.optionalKeys
|
|
133
|
+
out.site = map.site
|
|
134
|
+
|
|
135
|
+
let done = true
|
|
136
|
+
|
|
137
|
+
for (const key of mapKeys) {
|
|
138
|
+
const child = map.peg[key]
|
|
139
|
+
const keyctx = ctx.descend(key)
|
|
140
|
+
// Clone the spread for this key's context, then resolve any
|
|
141
|
+
// path-dependent functions (key(), path(), etc.) by unifying
|
|
142
|
+
// with TOP. This ensures the spread values are concrete before
|
|
143
|
+
// being merged as peer keys into the child map.
|
|
144
|
+
let key_spread = spread.spreadClone(keyctx)
|
|
145
|
+
if (!key_spread.done) {
|
|
146
|
+
key_spread = unite(keyctx, key_spread, top(), 'spread-resolve')
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Clear type marks on the spread constraint root and its
|
|
150
|
+
// direct children — type() constrains but should not mark
|
|
151
|
+
// children as type-invisible.
|
|
152
|
+
key_spread.mark.type = false
|
|
153
|
+
key_spread.mark.hide = false
|
|
154
|
+
if (key_spread.isMap) {
|
|
155
|
+
for (const k in key_spread.peg) {
|
|
156
|
+
if (key_spread.peg[k]?.isVal) {
|
|
157
|
+
key_spread.peg[k].mark.type = false
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
propagateMarks(map, child)
|
|
163
|
+
|
|
164
|
+
out.peg[key] =
|
|
165
|
+
undefined === child ? key_spread :
|
|
166
|
+
child.isNil ? child :
|
|
167
|
+
key_spread.isNil ? key_spread :
|
|
168
|
+
key_spread.isTop && child.done ? child :
|
|
169
|
+
child.isTop && key_spread.done ? key_spread :
|
|
170
|
+
unite(te ? keyctx.clone({ explain: ec(te, 'SK:' + key) }) : keyctx,
|
|
171
|
+
child, key_spread, 'spread-apply')
|
|
172
|
+
|
|
173
|
+
done = done && (DONE === out.peg[key].dc)
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
out.dc = done ? DONE : map.dc + 1
|
|
177
|
+
|
|
178
|
+
propagateMarks(map, out)
|
|
179
|
+
// NOTE: do not propagate type/hide marks from the spread constraint
|
|
180
|
+
// to the output — a type spread constrains children but doesn't
|
|
181
|
+
// make them type-invisible.
|
|
182
|
+
|
|
183
|
+
return out
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
// Apply this spread constraint to each element in a ListVal.
|
|
188
|
+
applyToList(list: ListVal, ctx: AontuContext, te: any): Val {
|
|
189
|
+
const spread = this.peg
|
|
190
|
+
|
|
191
|
+
const listKeys = Object.keys(list.peg)
|
|
192
|
+
|
|
193
|
+
if (listKeys.length === 0) {
|
|
194
|
+
const out = new ConjunctVal({ peg: [list, this] }, ctx)
|
|
195
|
+
out.dc = DONE
|
|
196
|
+
return out
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
const out = new ListVal({ peg: [] }, ctx)
|
|
200
|
+
out.closed = list.closed
|
|
201
|
+
out.optionalKeys = 0 < list.optionalKeys.length
|
|
202
|
+
? [...list.optionalKeys] : list.optionalKeys
|
|
203
|
+
out.site = list.site
|
|
204
|
+
|
|
205
|
+
let done = true
|
|
206
|
+
|
|
207
|
+
for (const key of listKeys) {
|
|
208
|
+
const child = list.peg[key]
|
|
209
|
+
const keyctx = ctx.descend(key)
|
|
210
|
+
const key_spread = spread.spreadClone(keyctx)
|
|
211
|
+
|
|
212
|
+
propagateMarks(list, child)
|
|
213
|
+
|
|
214
|
+
out.peg[key as any] =
|
|
215
|
+
undefined === child ? key_spread :
|
|
216
|
+
child.isNil ? child :
|
|
217
|
+
key_spread.isNil ? key_spread :
|
|
218
|
+
key_spread.isTop && child.done ? child :
|
|
219
|
+
child.isTop && key_spread.done ? key_spread :
|
|
220
|
+
unite(te ? keyctx.clone({ explain: ec(te, 'SL:' + key) }) : keyctx,
|
|
221
|
+
child, key_spread, 'spread-apply-list')
|
|
222
|
+
|
|
223
|
+
done = done && (DONE === out.peg[key as any]?.dc)
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
out.dc = done ? DONE : list.dc + 1
|
|
227
|
+
|
|
228
|
+
propagateMarks(list, out)
|
|
229
|
+
|
|
230
|
+
return out
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
clone(ctx: AontuContext, spec?: ValSpec): Val {
|
|
235
|
+
const out = new SpreadVal({
|
|
236
|
+
peg: this.peg.clone(ctx, spec),
|
|
237
|
+
...(spec || {}),
|
|
238
|
+
}, ctx)
|
|
239
|
+
out.dc = this.done ? DONE : out.dc
|
|
240
|
+
out.site = this.site
|
|
241
|
+
return out
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
spreadClone(ctx: AontuContext): Val {
|
|
246
|
+
if (!this.isPathDependent) return this
|
|
247
|
+
return this.clone(ctx)
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
get canon(): string {
|
|
252
|
+
// Use {&:...} for map spreads, [&:...] for list spreads, {&:X} for scalars
|
|
253
|
+
const pc = this.peg.canon
|
|
254
|
+
if (this.peg.isMap) return '{&:' + pc.slice(1, -1) + '}' // {&:k:v,...}
|
|
255
|
+
if (this.peg.isList) return '[&:' + pc.slice(1, -1) + ']' // [&:v,...]
|
|
256
|
+
return '{&:' + pc + '}'
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
gen(_ctx: AontuContext) {
|
|
261
|
+
// Unresolved spread (never applied to a map/list) generates
|
|
262
|
+
// as undefined — the spread is a constraint, not a value.
|
|
263
|
+
return undefined
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
inspection() {
|
|
268
|
+
return 'spread'
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
export {
|
|
274
|
+
SpreadVal,
|
|
275
|
+
}
|
package/src/val/Val.ts
CHANGED
|
@@ -69,10 +69,11 @@ abstract class Val {
|
|
|
69
69
|
declare isList: boolean
|
|
70
70
|
declare isScalar: boolean
|
|
71
71
|
declare isScalarKind: boolean
|
|
72
|
-
declare
|
|
72
|
+
declare isPath: boolean
|
|
73
73
|
declare isPref: boolean
|
|
74
74
|
declare isVar: boolean
|
|
75
75
|
declare isBag: boolean
|
|
76
|
+
declare isSpread: boolean
|
|
76
77
|
declare isNumber: boolean
|
|
77
78
|
declare isInteger: boolean
|
|
78
79
|
declare isString: boolean
|
|
@@ -150,8 +151,10 @@ abstract class Val {
|
|
|
150
151
|
|
|
151
152
|
if (Array.isArray(this.peg)) {
|
|
152
153
|
let spread = (this.peg as any)[SPREAD]
|
|
153
|
-
|
|
154
|
-
|
|
154
|
+
if (this.peg.includes(undefined)) {
|
|
155
|
+
this.peg = this.peg.filter(n => undefined !== n)
|
|
156
|
+
}
|
|
157
|
+
;(this.peg as any)[SPREAD] = spread
|
|
155
158
|
}
|
|
156
159
|
|
|
157
160
|
// spec.path takes precedence over ctx.path: lets callers (notably
|
|
@@ -239,7 +242,7 @@ abstract class Val {
|
|
|
239
242
|
get isPathDependent(): boolean {
|
|
240
243
|
if (this._isPathDependent !== undefined) return this._isPathDependent
|
|
241
244
|
let dep =
|
|
242
|
-
this.
|
|
245
|
+
this.isPath || this.isKeyFunc || this.isPathFunc ||
|
|
243
246
|
this.isMoveFunc || this.isSuperFunc
|
|
244
247
|
if (!dep) {
|
|
245
248
|
const peg = this.peg
|
|
@@ -255,10 +258,6 @@ abstract class Val {
|
|
|
255
258
|
if (c && c.isVal && c.isPathDependent) { dep = true; break }
|
|
256
259
|
}
|
|
257
260
|
}
|
|
258
|
-
if (!dep) {
|
|
259
|
-
const spreadCj = (this as any).spread?.cj as Val | undefined
|
|
260
|
-
if (spreadCj && spreadCj.isPathDependent) dep = true
|
|
261
|
-
}
|
|
262
261
|
}
|
|
263
262
|
this._isPathDependent = dep
|
|
264
263
|
return dep
|
|
@@ -367,10 +366,11 @@ Object.assign(Val.prototype, {
|
|
|
367
366
|
isList: false,
|
|
368
367
|
isScalar: false,
|
|
369
368
|
isScalarKind: false,
|
|
370
|
-
|
|
369
|
+
isPath: false,
|
|
371
370
|
isPref: false,
|
|
372
371
|
isVar: false,
|
|
373
372
|
isBag: false,
|
|
373
|
+
isSpread: false,
|
|
374
374
|
isNumber: false,
|
|
375
375
|
isInteger: false,
|
|
376
376
|
isString: false,
|
package/src/val/VarVal.ts
CHANGED
|
@@ -62,7 +62,7 @@ class VarVal extends FeatureVal {
|
|
|
62
62
|
if (this.peg.isVal) {
|
|
63
63
|
// $.a.b.c - convert path to absolute
|
|
64
64
|
// if (this.peg instanceof RefVal) {
|
|
65
|
-
if (this.peg.
|
|
65
|
+
if (this.peg.isPath) {
|
|
66
66
|
this.peg.absolute = true
|
|
67
67
|
nameVal = this.peg
|
|
68
68
|
}
|
|
@@ -76,7 +76,7 @@ class VarVal extends FeatureVal {
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
// if (!(nameVal instanceof RefVal) && DONE === nameVal.dc) {
|
|
79
|
-
if (!(nameVal.
|
|
79
|
+
if (!(nameVal.isPath) && DONE === nameVal.dc) {
|
|
80
80
|
if (nameVal instanceof StringVal) {
|
|
81
81
|
let found = ctx.vars[nameVal.peg]
|
|
82
82
|
if (undefined === found) {
|
package/dist/val/RefVal.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RefVal.js","sourceRoot":"","sources":["../../src/val/RefVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAKzD,wCAKmB;AAQnB,kCAEgB;AAIhB,gCAAmC;AACnC,oCAAgC;AAGhC,+BAEc;AAGd,2CAAuC;AACvC,6CAAyC;AACzC,2CAAuC;AACvC,+CAA2C;AAC3C,qCAAiC;AACjC,6CAAyC;AAIzC,MAAM,MAAO,SAAQ,uBAAU;IAQ7B,YACE,IAIC,EACD,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAflB,UAAK,GAAG,IAAI,CAAA;QACZ,cAAS,GAAG,IAAI,CAAA;QAChB,QAAG,GAAG,KAAK,CAAA;QAEX,aAAQ,GAAY,KAAK,CAAA;QACzB,WAAM,GAAY,KAAK,CAAA;QAWrB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;QAEb,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB;YAChE,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;QAEvC,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC,MAAM,CAAA;QAElC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QAC3B,CAAC;QAED,0CAA0C;IAC5C,CAAC;IAGD,MAAM,CAAC,IAAS;QACd,IAAI,OAAO,CAAA;QAEX,8BAA8B;QAE9B,IAAI,QAAQ,KAAK,OAAO,IAAI,EAAE,CAAC;YAC7B,OAAO,GAAG,IAAI,CAAA;YACd,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxB,CAAC;aAEI,IAAI,IAAI,YAAY,qBAAS,EAAE,CAAC;YACnC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAA;YAClB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxB,CAAC;aAEI,IAAI,IAAI,YAAY,uBAAU,EAAE,CAAC;YACpC,0BAA0B;YAC1B,OAAO,GAAG,IAAI,CAAC,GAAG,CAAA;YAClB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxB,CAAC;QAED,wCAAwC;QACxC,sCAAsC;QACtC,4BAA4B;aACvB,IAAI,IAAI,YAAY,qBAAS,EAAE,CAAC;YACnC,sFAAsF;YACtF,IAAI,QAAQ,GAAa,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC5C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;QAC5B,CAAC;aAEI,IAAI,IAAI,YAAY,eAAM,EAAE,CAAC;YAChC,OAAO,GAAG,IAAI,CAAA;YACd,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxB,CAAC;aAEI,IAAI,IAAI,YAAY,MAAM,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;YACtB,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACpB,CAAC;YACH,CAAC;iBACI,CAAC;gBACJ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;wBAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;oBACpB,CAAC;yBAEI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;wBAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBACpB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAGD,KAAK,CAAC,IAAS,EAAE,GAAiB;QAChC,IAAI,GAAG,IAAI,IAAI,IAAA,SAAG,GAAE,CAAA;QAEpB,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,IAAI,IAAA,qBAAW,EAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAC1E,IAAI,GAAG,GAAQ,IAAI,CAAA;QACnB,IAAI,GAAG,GAAG,IAAI,CAAA;QAEd,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YAExB,gEAAgE;YAChE,0BAA0B;YAC1B,sEAAsE;YACtE,IAAI,KAAK,GAAoB,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAEhE,MAAM,QAAQ,GAAG,KAAK,IAAI,IAAI,CAAA;YAE9B,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;gBAClD,GAAG,GAAG,IAAI,CAAA;YACZ,CAAC;iBACI,IAAI,QAAQ,YAAY,MAAM,EAAE,CAAC;gBACpC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,GAAG,GAAG,IAAI,CAAA;oBACV,GAAG,GAAG,IAAI,CAAA;gBACZ,CAAC;qBACI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACpB,GAAG,GAAG,IAAA,gBAAU,EAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;oBAC1D,GAAG,GAAG,IAAI,CAAA;gBACZ,CAAC;gBAED,YAAY;qBACP,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;oBACnC,GAAG,GAAG,IAAI,CAAA;oBACV,GAAG,GAAG,IAAI,CAAA;gBACZ,CAAC;qBAEI,CAAC;oBACJ,oCAAoC;oBACpC,IAAI,CAAC,EAAE,GAAG,WAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,WAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;oBAC/C,GAAG,GAAG,IAAI,yBAAW,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;oBACjD,GAAG,GAAG,IAAI,CAAA;gBACZ,CAAC;YACH,CAAC;iBACI,CAAC;gBACJ,GAAG,GAAG,IAAA,aAAK,EAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAA,YAAE,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;gBACpF,GAAG,GAAG,GAAG,CAAA;YACX,CAAC;YAED,GAAG,CAAC,EAAE,GAAG,WAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,WAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;QAC/C,CAAC;QAED,mJAAmJ;QAEnJ,IAAA,sBAAY,EAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QACrB,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,IAAI,CAAC,GAAiB;QACpB,IAAI,GAAG,GAAoB,SAAS,CAAA;QAEpC,wDAAwD;QACxD,2EAA2E;QAC3E,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;QACtD,IAAI,YAAY,EAAE,CAAC;YACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjC,YAAY,GAAG,KAAK,CAAA;oBACpB,MAAK;gBACP,CAAC;YACH,CAAC;QACH,CAAC;QACD,+EAA+E;QAC/E,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnE,IAAI,QAAQ,GAAG,IAAI,CAAA;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,IAAI,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAAC,QAAQ,GAAG,KAAK,CAAC;oBAAC,MAAK;gBAAC,CAAC;YACrD,CAAC;YACD,YAAY,GAAG,QAAQ,CAAA;QACzB,CAAC;QAED,IAAI,OAAO,GAAa,EAAE,CAAA;QAC1B,IAAI,EAAE,GAAG,CAAC,CAAA;QACV,mBAAmB;QAEnB,IAAI,YAAY,EAAE,CAAC;YACjB,wDAAwD;YACxD,GAAG,GAAG,IAAA,gBAAU,EAAC,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,CAAA;QAC3C,CAAC;aACI,CAAC;YAEJ,IAAI,KAAK,GAAa,EAAE,CAAA;YAExB,IAAI,KAAK,GAAa,EAAE,CAAA;YAExB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;gBAC5C,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACvB,IAAI,IAAI,YAAY,eAAM,EAAE,CAAC;oBAC3B,IAAI,MAAM,GAAI,IAAe,CAAC,GAAG,CAAA;oBACjC,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;oBAExC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;wBACnB,IAAI,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBAClB,CAAC;6BACI,CAAC;4BACJ,sCAAsC;4BACtC,OAAM;wBACR,CAAC;oBACH,CAAC;oBAED,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;wBACpB,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;4BACb,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBAClB,CAAC;6BACI,CAAC;4BACJ,sCAAsC;4BACtC,OAAM;wBACR,CAAC;oBACH,CAAC;yBACI,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;wBAC3B,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;4BACb,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBAClB,CAAC;6BACI,CAAC;4BACJ,sCAAsC;4BACtC,OAAM;wBACR,CAAC;oBACH,CAAC;yBACI,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;wBAC5B,IAAI,GAAI,IAAe,CAAC,KAAK,CAAC,IAAA,SAAG,GAAE,EAAE,GAAG,CAAC,CAAA;wBACzC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;4BACf,0CAA0C;4BAC1C,OAAM;wBACR,CAAC;6BACI,CAAC;4BACJ,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAA;wBACtB,CAAC;oBACH,CAAC;gBACH,CAAC;qBACI,CAAC;oBACJ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAClB,CAAC;YACH,CAAC;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,OAAO,GAAG,KAAK,CAAA;YACjB,CAAC;iBACI,CAAC;gBACJ,4BAA4B;gBAC5B,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CACvB,CAAC,EACD,CACE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1B,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7B,CAAC,CAAC,CAAC,WAAW;iBACnB,CACF,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACjB,CAAC;YAED,IAAI,GAAG,GAAG,GAAG,CAAA;YACb,OAAO,GAAG,OAAO;iBACd,MAAM,CAAC,CAAC,CAAC,CAAW,EAAE,CAAS,EAAE,EAAE,CAClC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAE9D,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;gBACzC,IAAI,EAAE,GAAG,IAAI,qBAAS,CAAC,EAAE,GAAG,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAA;gBAE5D,qBAAqB;gBACrB,EAAE,CAAC,EAAE,GAAG,WAAI,CAAA;gBACZ,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;gBAEnB,OAAO,EAAE,CAAA;YACX,CAAC;YAED,IAAI,IAAI,GAAG,GAAG,CAAC,IAAW,CAAA;YAE1B,IAAI,MAAM,GAAG,KAAK,CAAA;YAElB,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjB,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;oBACjC,IAAI,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAA;oBACtB,sCAAsC;oBAEtC,oEAAoE;oBAEpE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;wBACf,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;oBACvB,CAAC;yBACI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBACrB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;oBACvB,CAAC;yBACI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;wBACnB,MAAM,GAAG,IAAI,CAAA;wBACb,MAAM;oBACR,CAAC;yBACI,CAAC;wBACJ,MAAM;oBACR,CAAC;oBAED,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;wBACjB,MAAM,GAAG,IAAI,CAAA;wBACb,MAAK;oBACP,CAAC;gBAEH,CAAC;YACH,CAAC;YAED,sEAAsE;YAGtE,IAAI,MAAM,EAAE,CAAC;gBACX,GAAG,GAAG,IAAA,gBAAU,EAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;YACxC,CAAC;iBACI,IAAI,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC/B,GAAG,GAAG,IAAI,CAAA;gBAEV,uDAAuD;gBACvD,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,0CAA0C;oBAE3D,8BAA8B;oBAE9B,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;wBACrC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;wBAC9B,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;wBAE9B,+DAA+D;wBAC/D,mCAAmC;wBACnC,mCAAmC;wBACnC,eAAe;wBACf,KAAK;oBACP,CAAC;oBAED,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;wBAC1B,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;oBACtB,CAAC;oBAED,8BAA8B;oBAE9B,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAEpB,0CAA0C;oBAC1C,IAAA,cAAI,EAAC,GAAG,EAAE,CAAC,IAAiC,EAAE,GAAQ,EAAE,EAAE;wBACxD,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA;wBACrB,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA;wBACrB,OAAO,GAAG,CAAA;oBACZ,CAAC,CAAC,CAAA;oBACF,GAAG;oBAEH,6BAA6B;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QAED,kJAAkJ;QAElJ,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,IAAI,CAAC,IAAS;QACZ,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAA;IACrD,CAAC;IAGD,KAAK,CAAC,GAAiB,EAAE,IAAc;QACrC,IAAI,GAAG,GAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;YAC1B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;SAChB,CAAY,CAAA;QACb,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,IAAI,KAAK;QACP,IAAI,GAAG,GACL,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1B,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,0BAA0B;YAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACvC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;iBAC5B,IAAI,CAAC,GAAG,CAAC,CAAA;QACd,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,GAAG,CAAC,GAAiB;QACnB,0DAA0D;QAC1D,IAAI,GAAG,GAAG,IAAA,gBAAU,EAClB,GAAG,EACH,KAAK,EACL,IAAI,EAAE,gDAAgD;QACtD,SAAS,CACV,CAAA;QAED,qCAAqC;QACrC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACpB,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QAC5B,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QAC5B,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QAE5B,OAAO,SAAS,CAAA;IAClB,CAAC;IAGD,UAAU;QACR,OAAO;YACL,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;SAC5B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAClC,CAAC;CAEF;AAIC,wBAAM"}
|