@stevenvo780/st-lang 2.7.0 → 2.7.1

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.
@@ -0,0 +1,446 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // DPLL SAT Solver with Unit Propagation & Pure Literal Elimination
4
+ // Uses Tseitin transformation for linear-size CNF encoding.
5
+ // ============================================================
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.dpll = dpll;
8
+ const propositional_1 = require("./propositional");
9
+ const TRUE_FORMULA = { kind: 'atom', name: '__TRUE__' };
10
+ const FALSE_FORMULA = { kind: 'atom', name: '__FALSE__' };
11
+ /**
12
+ * Simplify NNF formula, detecting trivial contradictions and tautologies.
13
+ */
14
+ function simplifyNNF(f) {
15
+ switch (f.kind) {
16
+ case 'atom':
17
+ case 'not':
18
+ return f;
19
+ case 'and': {
20
+ if (!f.args || f.args.length < 2)
21
+ return f;
22
+ const left = simplifyNNF(f.args[0]);
23
+ const right = simplifyNNF(f.args[1]);
24
+ if (left === FALSE_FORMULA || right === FALSE_FORMULA)
25
+ return FALSE_FORMULA;
26
+ if (left === TRUE_FORMULA)
27
+ return right;
28
+ if (right === TRUE_FORMULA)
29
+ return left;
30
+ // Detect (A & !A) pattern
31
+ if (isComplement(left, right))
32
+ return FALSE_FORMULA;
33
+ if (left === f.args[0] && right === f.args[1])
34
+ return f;
35
+ return { kind: 'and', args: [left, right] };
36
+ }
37
+ case 'or': {
38
+ if (!f.args || f.args.length < 2)
39
+ return f;
40
+ const left = simplifyNNF(f.args[0]);
41
+ const right = simplifyNNF(f.args[1]);
42
+ if (left === TRUE_FORMULA || right === TRUE_FORMULA)
43
+ return TRUE_FORMULA;
44
+ if (left === FALSE_FORMULA)
45
+ return right;
46
+ if (right === FALSE_FORMULA)
47
+ return left;
48
+ // Detect (A | !A) pattern
49
+ if (isComplement(left, right))
50
+ return TRUE_FORMULA;
51
+ if (left === f.args[0] && right === f.args[1])
52
+ return f;
53
+ return { kind: 'or', args: [left, right] };
54
+ }
55
+ default:
56
+ return f;
57
+ }
58
+ }
59
+ function isComplement(a, b) {
60
+ if (a.kind === 'not' && a.args?.[0]?.kind === 'atom' && b.kind === 'atom') {
61
+ return a.args[0].name === b.name;
62
+ }
63
+ if (b.kind === 'not' && b.args?.[0]?.kind === 'atom' && a.kind === 'atom') {
64
+ return b.args[0].name === a.name;
65
+ }
66
+ return false;
67
+ }
68
+ /**
69
+ * Tseitin CNF encoder: converts an arbitrary propositional formula to CNF
70
+ * in linear time/space by introducing auxiliary variables for each gate.
71
+ */
72
+ class TseitinEncoder {
73
+ atomMap = new Map();
74
+ atomNames = [];
75
+ nextVar = 1;
76
+ rawClauses = [];
77
+ getVar(name) {
78
+ let v = this.atomMap.get(name);
79
+ if (v !== undefined)
80
+ return v;
81
+ v = this.nextVar++;
82
+ this.atomMap.set(name, v);
83
+ this.atomNames.push(name);
84
+ return v;
85
+ }
86
+ freshVar() {
87
+ const v = this.nextVar++;
88
+ this.atomNames.push(`_t${v}`);
89
+ return v;
90
+ }
91
+ get numVars() {
92
+ return this.nextVar - 1;
93
+ }
94
+ get clauses() {
95
+ return this.rawClauses.map((c) => new Int32Array(c));
96
+ }
97
+ encode(formula) {
98
+ const nnf = simplifyNNF((0, propositional_1.toNNF)(formula));
99
+ // After simplification, check for trivially true/false
100
+ if (nnf === FALSE_FORMULA) {
101
+ this.rawClauses.push([]); // empty clause = unsatisfiable
102
+ return;
103
+ }
104
+ if (nnf === TRUE_FORMULA) {
105
+ return; // no clauses = satisfiable
106
+ }
107
+ const topLit = this.encodeNode(nnf);
108
+ this.rawClauses.push([topLit]);
109
+ }
110
+ encodeNode(f) {
111
+ switch (f.kind) {
112
+ case 'atom':
113
+ return f.name ? this.getVar(f.name) : this.freshVar();
114
+ case 'not':
115
+ if (f.args?.[0]?.kind === 'atom' && f.args[0].name) {
116
+ return -this.getVar(f.args[0].name);
117
+ }
118
+ return -this.encodeNode(f.args[0]);
119
+ case 'and': {
120
+ const children = this.flattenAssoc(f, 'and');
121
+ if (children.length === 1)
122
+ return this.encodeNode(children[0]);
123
+ const lits = children.map((c) => this.encodeNode(c));
124
+ const g = this.freshVar();
125
+ for (const l of lits)
126
+ this.rawClauses.push([-g, l]);
127
+ this.rawClauses.push([...lits.map((l) => -l), g]);
128
+ return g;
129
+ }
130
+ case 'or': {
131
+ const children = this.flattenAssoc(f, 'or');
132
+ if (children.length === 1)
133
+ return this.encodeNode(children[0]);
134
+ const lits = children.map((c) => this.encodeNode(c));
135
+ const g = this.freshVar();
136
+ this.rawClauses.push([-g, ...lits]);
137
+ for (const l of lits)
138
+ this.rawClauses.push([-l, g]);
139
+ return g;
140
+ }
141
+ case 'implies': {
142
+ const a = this.encodeNode(f.args[0]);
143
+ const b = this.encodeNode(f.args[1]);
144
+ const g = this.freshVar();
145
+ this.rawClauses.push([-g, -a, b]);
146
+ this.rawClauses.push([a, g]);
147
+ this.rawClauses.push([-b, g]);
148
+ return g;
149
+ }
150
+ case 'biconditional': {
151
+ const a = this.encodeNode(f.args[0]);
152
+ const b = this.encodeNode(f.args[1]);
153
+ const g = this.freshVar();
154
+ this.rawClauses.push([-g, -a, b]);
155
+ this.rawClauses.push([-g, -b, a]);
156
+ this.rawClauses.push([a, b, g]);
157
+ this.rawClauses.push([-a, -b, g]);
158
+ return g;
159
+ }
160
+ case 'xor': {
161
+ const a = this.encodeNode(f.args[0]);
162
+ const b = this.encodeNode(f.args[1]);
163
+ const g = this.freshVar();
164
+ this.rawClauses.push([-g, a, b]);
165
+ this.rawClauses.push([-g, -a, -b]);
166
+ this.rawClauses.push([g, -a, b]);
167
+ this.rawClauses.push([g, a, -b]);
168
+ return g;
169
+ }
170
+ case 'nand': {
171
+ const a = this.encodeNode(f.args[0]);
172
+ const b = this.encodeNode(f.args[1]);
173
+ const g = this.freshVar();
174
+ this.rawClauses.push([-g, -a, -b]);
175
+ this.rawClauses.push([a, g]);
176
+ this.rawClauses.push([b, g]);
177
+ return g;
178
+ }
179
+ case 'nor': {
180
+ const a = this.encodeNode(f.args[0]);
181
+ const b = this.encodeNode(f.args[1]);
182
+ const g = this.freshVar();
183
+ this.rawClauses.push([-g, -a]);
184
+ this.rawClauses.push([-g, -b]);
185
+ this.rawClauses.push([a, b, g]);
186
+ return g;
187
+ }
188
+ default:
189
+ return this.freshVar();
190
+ }
191
+ }
192
+ flattenAssoc(f, kind) {
193
+ if (f.kind !== kind || !f.args)
194
+ return [f];
195
+ const result = [];
196
+ for (const arg of f.args) {
197
+ if (arg) {
198
+ if (arg.kind === kind) {
199
+ result.push(...this.flattenAssoc(arg, kind));
200
+ }
201
+ else {
202
+ result.push(arg);
203
+ }
204
+ }
205
+ }
206
+ return result;
207
+ }
208
+ }
209
+ /**
210
+ * DPLL SAT Solver with unit propagation and pure literal elimination.
211
+ */
212
+ function dpll(formula, timeoutMs = 30000) {
213
+ const encoder = new TseitinEncoder();
214
+ encoder.encode(formula);
215
+ const result = dpllSolve(encoder.clauses, encoder.numVars, encoder.atomNames, timeoutMs);
216
+ if (result.satisfiable && result.model) {
217
+ const filtered = {};
218
+ for (const [key, val] of Object.entries(result.model)) {
219
+ if (!key.startsWith('_t')) {
220
+ filtered[key] = val;
221
+ }
222
+ }
223
+ result.model = filtered;
224
+ }
225
+ return result;
226
+ }
227
+ // Status per clause: 0 = active, 1 = satisfied
228
+ // Status per variable: 0 = unassigned, 1 = true, -1 = false
229
+ function dpllSolve(clauses, numVars, atomNames, timeoutMs) {
230
+ const startTime = Date.now();
231
+ const numClauses = clauses.length;
232
+ if (numClauses === 0) {
233
+ return { satisfiable: true, model: buildModel(new Int8Array(numVars + 1), atomNames) };
234
+ }
235
+ // Check for empty clauses
236
+ for (const c of clauses) {
237
+ if (c.length === 0)
238
+ return { satisfiable: false };
239
+ }
240
+ // For each literal, track which clauses contain it
241
+ const litClauses = new Map();
242
+ for (let ci = 0; ci < numClauses; ci++) {
243
+ for (let li = 0; li < clauses[ci].length; li++) {
244
+ const lit = clauses[ci][li];
245
+ let list = litClauses.get(lit);
246
+ if (!list) {
247
+ list = [];
248
+ litClauses.set(lit, list);
249
+ }
250
+ list.push(ci);
251
+ }
252
+ }
253
+ // Track satisfied clauses and remaining literal counts per clause
254
+ const satisfied = new Uint8Array(numClauses);
255
+ const remaining = new Int32Array(numClauses); // count of non-falsified literals
256
+ const assignment = new Int8Array(numVars + 1); // 0=unset, 1=true, -1=false
257
+ for (let ci = 0; ci < numClauses; ci++) {
258
+ remaining[ci] = clauses[ci].length;
259
+ }
260
+ const trail = [];
261
+ function assignLiteral(lit) {
262
+ const v = lit > 0 ? lit : -lit;
263
+ const val = lit > 0 ? 1 : -1;
264
+ assignment[v] = val;
265
+ const entry = { variable: v, satisfiedClauses: [], decrementedClauses: [] };
266
+ trail.push(entry);
267
+ // Clauses containing this literal become satisfied
268
+ const posLitClauses = litClauses.get(lit);
269
+ if (posLitClauses) {
270
+ for (const ci of posLitClauses) {
271
+ if (!satisfied[ci]) {
272
+ satisfied[ci] = 1;
273
+ entry.satisfiedClauses.push(ci);
274
+ }
275
+ }
276
+ }
277
+ // Clauses containing -lit lose one literal
278
+ const negLitClauses = litClauses.get(-lit);
279
+ if (negLitClauses) {
280
+ for (const ci of negLitClauses) {
281
+ if (!satisfied[ci]) {
282
+ remaining[ci]--;
283
+ entry.decrementedClauses.push(ci);
284
+ if (remaining[ci] === 0)
285
+ return false; // conflict: clause falsified
286
+ }
287
+ }
288
+ }
289
+ return true;
290
+ }
291
+ function unassignTrail(count) {
292
+ while (trail.length > count) {
293
+ const entry = trail.pop();
294
+ assignment[entry.variable] = 0;
295
+ for (const ci of entry.satisfiedClauses) {
296
+ satisfied[ci] = 0;
297
+ }
298
+ for (const ci of entry.decrementedClauses) {
299
+ remaining[ci]++;
300
+ }
301
+ }
302
+ }
303
+ // Unit propagation: find clauses with remaining === 1 and not satisfied
304
+ function unitPropagation() {
305
+ let changed = true;
306
+ while (changed) {
307
+ changed = false;
308
+ for (let ci = 0; ci < numClauses; ci++) {
309
+ if (satisfied[ci])
310
+ continue;
311
+ if (remaining[ci] === 0)
312
+ return false;
313
+ if (remaining[ci] === 1) {
314
+ // Find the unassigned literal
315
+ const clause = clauses[ci];
316
+ let unitLit = 0;
317
+ for (let li = 0; li < clause.length; li++) {
318
+ const lit = clause[li];
319
+ const v = lit > 0 ? lit : -lit;
320
+ if (assignment[v] === 0) {
321
+ unitLit = lit;
322
+ break;
323
+ }
324
+ }
325
+ if (unitLit !== 0) {
326
+ if (!assignLiteral(unitLit))
327
+ return false;
328
+ changed = true;
329
+ }
330
+ }
331
+ }
332
+ }
333
+ return true;
334
+ }
335
+ // Pure literal elimination
336
+ function pureLiteralElimination() {
337
+ for (let v = 1; v <= numVars; v++) {
338
+ if (assignment[v] !== 0)
339
+ continue;
340
+ let posActive = false;
341
+ let negActive = false;
342
+ const posC = litClauses.get(v);
343
+ if (posC) {
344
+ for (const ci of posC) {
345
+ if (!satisfied[ci]) {
346
+ posActive = true;
347
+ break;
348
+ }
349
+ }
350
+ }
351
+ const negC = litClauses.get(-v);
352
+ if (negC) {
353
+ for (const ci of negC) {
354
+ if (!satisfied[ci]) {
355
+ negActive = true;
356
+ break;
357
+ }
358
+ }
359
+ }
360
+ if (posActive && !negActive)
361
+ assignLiteral(v);
362
+ else if (!posActive && negActive)
363
+ assignLiteral(-v);
364
+ }
365
+ }
366
+ function chooseVariable() {
367
+ let bestVar = 0;
368
+ let bestScore = -1;
369
+ for (let v = 1; v <= numVars; v++) {
370
+ if (assignment[v] !== 0)
371
+ continue;
372
+ let score = 0;
373
+ const posC = litClauses.get(v);
374
+ if (posC) {
375
+ for (const ci of posC) {
376
+ if (!satisfied[ci])
377
+ score++;
378
+ }
379
+ }
380
+ const negC = litClauses.get(-v);
381
+ if (negC) {
382
+ for (const ci of negC) {
383
+ if (!satisfied[ci])
384
+ score++;
385
+ }
386
+ }
387
+ if (score > bestScore) {
388
+ bestScore = score;
389
+ bestVar = v;
390
+ }
391
+ }
392
+ return bestVar;
393
+ }
394
+ function solve() {
395
+ if (Date.now() - startTime > timeoutMs)
396
+ return false;
397
+ const savePoint = trail.length;
398
+ if (!unitPropagation()) {
399
+ unassignTrail(savePoint);
400
+ return false;
401
+ }
402
+ pureLiteralElimination();
403
+ // Check if all clauses are satisfied
404
+ let allSat = true;
405
+ for (let ci = 0; ci < numClauses; ci++) {
406
+ if (!satisfied[ci]) {
407
+ if (remaining[ci] === 0) {
408
+ unassignTrail(savePoint);
409
+ return false;
410
+ }
411
+ allSat = false;
412
+ }
413
+ }
414
+ if (allSat)
415
+ return true;
416
+ const v = chooseVariable();
417
+ if (v === 0) {
418
+ unassignTrail(savePoint);
419
+ return false;
420
+ }
421
+ // Try true
422
+ const beforeBranch = trail.length;
423
+ if (assignLiteral(v) && solve())
424
+ return true;
425
+ unassignTrail(beforeBranch);
426
+ // Try false
427
+ if (assignLiteral(-v) && solve())
428
+ return true;
429
+ unassignTrail(beforeBranch);
430
+ unassignTrail(savePoint);
431
+ return false;
432
+ }
433
+ const sat = solve();
434
+ if (sat) {
435
+ return { satisfiable: true, model: buildModel(assignment, atomNames) };
436
+ }
437
+ return { satisfiable: false };
438
+ }
439
+ function buildModel(assignment, atomNames) {
440
+ const model = {};
441
+ for (let i = 0; i < atomNames.length; i++) {
442
+ model[atomNames[i]] = assignment[i + 1] === 1 || assignment[i + 1] === 0;
443
+ }
444
+ return model;
445
+ }
446
+ //# sourceMappingURL=dpll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dpll.js","sourceRoot":"","sources":["../../../src/profiles/classical/dpll.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,mEAAmE;AACnE,4DAA4D;AAC5D,+DAA+D;;AA4N/D,oBAiBC;AA1OD,mDAAwC;AAUxC,MAAM,YAAY,GAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AACjE,MAAM,aAAa,GAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAEnE;;GAEG;AACH,SAAS,WAAW,CAAC,CAAU;IAC7B,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK;YACR,OAAO,CAAC,CAAC;QAEX,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,IAAI,KAAK,aAAa,IAAI,KAAK,KAAK,aAAa;gBAAE,OAAO,aAAa,CAAC;YAC5E,IAAI,IAAI,KAAK,YAAY;gBAAE,OAAO,KAAK,CAAC;YACxC,IAAI,KAAK,KAAK,YAAY;gBAAE,OAAO,IAAI,CAAC;YACxC,0BAA0B;YAC1B,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC;gBAAE,OAAO,aAAa,CAAC;YACpD,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;YACxD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QAC9C,CAAC;QAED,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,IAAI,KAAK,YAAY,IAAI,KAAK,KAAK,YAAY;gBAAE,OAAO,YAAY,CAAC;YACzE,IAAI,IAAI,KAAK,aAAa;gBAAE,OAAO,KAAK,CAAC;YACzC,IAAI,KAAK,KAAK,aAAa;gBAAE,OAAO,IAAI,CAAC;YACzC,0BAA0B;YAC1B,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC;gBAAE,OAAO,YAAY,CAAC;YACnD,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;YACxD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QAC7C,CAAC;QAED;YACE,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,CAAU,EAAE,CAAU;IAC1C,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1E,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;IACnC,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1E,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;IACnC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,cAAc;IACV,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IACnC,SAAS,GAAa,EAAE,CAAC;IAC1B,OAAO,GAAG,CAAC,CAAC;IACZ,UAAU,GAAe,EAAE,CAAC;IAEpC,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC;QAC9B,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,QAAQ;QACd,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,OAAgB;QACrB,MAAM,GAAG,GAAG,WAAW,CAAC,IAAA,qBAAK,EAAC,OAAO,CAAC,CAAC,CAAC;QACxC,uDAAuD;QACvD,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,+BAA+B;YACzD,OAAO;QACT,CAAC;QACD,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YACzB,OAAO,CAAC,2BAA2B;QACrC,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACjC,CAAC;IAEO,UAAU,CAAC,CAAU;QAC3B,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,MAAM;gBACT,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAExD,KAAK,KAAK;gBACR,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACnD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACtC,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAEtC,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/D,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC1B,KAAK,MAAM,CAAC,IAAI,IAAI;oBAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAClD,OAAO,CAAC,CAAC;YACX,CAAC;YAED,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/D,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;gBACpC,KAAK,MAAM,CAAC,IAAI,IAAI;oBAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpD,OAAO,CAAC,CAAC;YACX,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9B,OAAO,CAAC,CAAC;YACX,CAAC;YAED,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAClC,OAAO,CAAC,CAAC;YACX,CAAC;YAED,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjC,OAAO,CAAC,CAAC;YACX,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7B,OAAO,CAAC,CAAC;YACX,CAAC;YAED,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAChC,OAAO,CAAC,CAAC;YACX,CAAC;YAED;gBACE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,CAAU,EAAE,IAAkB;QACjD,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,GAAG,EAAE,CAAC;gBACR,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBACtB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC/C,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED;;GAEG;AACH,SAAgB,IAAI,CAAC,OAAgB,EAAE,YAAoB,KAAK;IAC9D,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;IACrC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAExB,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEzF,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACtB,CAAC;QACH,CAAC;QACD,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+CAA+C;AAC/C,4DAA4D;AAE5D,SAAS,SAAS,CAChB,OAAiB,EACjB,OAAe,EACf,SAAmB,EACnB,SAAiB;IAEjB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAElC,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC;IACzF,CAAC;IAED,0BAA0B;IAC1B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,mDAAmD;IACnD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC/C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;QACvC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,GAAG,EAAE,CAAC;gBACV,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,kCAAkC;IAChF,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,4BAA4B;IAE3E,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;QACvC,SAAS,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;IACrC,CAAC;IASD,MAAM,KAAK,GAAiB,EAAE,CAAC;IAE/B,SAAS,aAAa,CAAC,GAAW;QAChC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/B,MAAM,GAAG,GAAW,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAEpB,MAAM,KAAK,GAAe,EAAE,QAAQ,EAAE,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;QACxF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElB,mDAAmD;QACnD,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE,CAAC;gBAC/B,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;oBACnB,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;oBAClB,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;QAED,2CAA2C;QAC3C,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE,CAAC;gBAC/B,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;oBACnB,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;oBAChB,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAClC,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC;wBAAE,OAAO,KAAK,CAAC,CAAC,6BAA6B;gBACtE,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,aAAa,CAAC,KAAa;QAClC,OAAO,KAAK,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;YAC3B,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC/B,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBACxC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;YACD,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;gBAC1C,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,SAAS,eAAe;QACtB,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,OAAO,OAAO,EAAE,CAAC;YACf,OAAO,GAAG,KAAK,CAAC;YAChB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;gBACvC,IAAI,SAAS,CAAC,EAAE,CAAC;oBAAE,SAAS;gBAC5B,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACtC,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxB,8BAA8B;oBAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;oBAC3B,IAAI,OAAO,GAAG,CAAC,CAAC;oBAChB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;wBAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;wBACvB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;wBAC/B,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;4BACxB,OAAO,GAAG,GAAG,CAAC;4BACd,MAAM;wBACR,CAAC;oBACH,CAAC;oBACD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;wBAClB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;4BAAE,OAAO,KAAK,CAAC;wBAC1C,OAAO,GAAG,IAAI,CAAC;oBACjB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2BAA2B;IAC3B,SAAS,sBAAsB;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,SAAS;YAClC,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;oBACtB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;wBACnB,SAAS,GAAG,IAAI,CAAC;wBACjB,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;oBACtB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;wBACnB,SAAS,GAAG,IAAI,CAAC;wBACjB,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,SAAS,IAAI,CAAC,SAAS;gBAAE,aAAa,CAAC,CAAC,CAAC,CAAC;iBACzC,IAAI,CAAC,SAAS,IAAI,SAAS;gBAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,SAAS,cAAc;QACrB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,SAAS;YAClC,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;oBACtB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;wBAAE,KAAK,EAAE,CAAC;gBAC9B,CAAC;YACH,CAAC;YACD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;oBACtB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;wBAAE,KAAK,EAAE,CAAC;gBAC9B,CAAC;YACH,CAAC;YACD,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;gBACtB,SAAS,GAAG,KAAK,CAAC;gBAClB,OAAO,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,SAAS,KAAK;QACZ,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS;YAAE,OAAO,KAAK,CAAC;QAErD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;QAE/B,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YACvB,aAAa,CAAC,SAAS,CAAC,CAAC;YACzB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,sBAAsB,EAAE,CAAC;QAEzB,qCAAqC;QACrC,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;gBACnB,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxB,aAAa,CAAC,SAAS,CAAC,CAAC;oBACzB,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,MAAM,GAAG,KAAK,CAAC;YACjB,CAAC;QACH,CAAC;QACD,IAAI,MAAM;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,CAAC,GAAG,cAAc,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,aAAa,CAAC,SAAS,CAAC,CAAC;YACzB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,WAAW;QACX,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;QAClC,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QAC7C,aAAa,CAAC,YAAY,CAAC,CAAC;QAE5B,YAAY;QACZ,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QAC9C,aAAa,CAAC,YAAY,CAAC,CAAC;QAE5B,aAAa,CAAC,SAAS,CAAC,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC;IAEpB,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;IACzE,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,UAAU,CAAC,UAAqB,EAAE,SAAmB;IAC5D,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"propositional.d.ts","sourceRoot":"","sources":["../../../src/profiles/classical/propositional.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,OAAO,EACP,UAAU,EACV,SAAS,EACT,MAAM,EACN,YAAY,EACZ,gBAAgB,EAEhB,SAAS,EAGV,MAAM,aAAa,CAAC;AAOrB,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAEpD;AAkBD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAqCnE;AAyBD;;GAEG;AACH,wBAAiB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,CAc7E;AAwLD,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAElD;AA4GD,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAEzC;AAkJD,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAEzC;AA6BD,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAEzC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,EAAE,CA8BrD;AAgrBD,qBAAa,sBAAuB,YAAW,YAAY;IACzD,IAAI,SAA6B;IACjC,WAAW,SACgG;IAE3G,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,EAAE;IAkD/C,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;IA2CvC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;IA2C7C,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS;IA2B/C,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS;IA6CpE,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;IA4DzC,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;IA2GpC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB;IA4E9C,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,SAAS;CA2BnD"}
1
+ {"version":3,"file":"propositional.d.ts","sourceRoot":"","sources":["../../../src/profiles/classical/propositional.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,OAAO,EACP,UAAU,EACV,SAAS,EACT,MAAM,EACN,YAAY,EACZ,gBAAgB,EAEhB,SAAS,EAGV,MAAM,aAAa,CAAC;AASrB,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAEpD;AAkBD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAqCnE;AAyBD;;GAEG;AACH,wBAAiB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,CAc7E;AAwLD,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAElD;AA4GD,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAEzC;AAkJD,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAEzC;AA6BD,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAEzC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,EAAE,CA8BrD;AAmsBD,qBAAa,sBAAuB,YAAW,YAAY;IACzD,IAAI,SAA6B;IACjC,WAAW,SACgG;IAE3G,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,EAAE;IAkD/C,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;IAgEvC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;IAgE7C,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS;IA6B/C,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS;IAmDpE,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;IAwFzC,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS;IA2GpC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB;IA4E9C,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,SAAS;CA6BnD"}