sf-git-merge-driver 1.0.0-dev-3.14222686038-1 → 1.0.0-dev-3.14240014682-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.
- package/README.md +3 -3
- package/lib/merger/JsonMerger.js +60 -35
- package/lib/merger/JsonMerger.js.map +1 -1
- package/lib/merger/conflictMarker.d.ts +1 -1
- package/lib/merger/conflictMarker.js.map +1 -1
- package/lib/merger/textAttribute.d.ts +2 -1
- package/lib/merger/textAttribute.js +9 -8
- package/lib/merger/textAttribute.js.map +1 -1
- package/npm-shrinkwrap.json +958 -1289
- package/oclif.manifest.json +1 -1
- package/package.json +6 -5
package/README.md
CHANGED
|
@@ -47,7 +47,7 @@ EXAMPLES
|
|
|
47
47
|
$ sf git merge driver install
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
_See code: [src/commands/git/merge/driver/install.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.0-dev-3.
|
|
50
|
+
_See code: [src/commands/git/merge/driver/install.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.0-dev-3.14240014682-1/src/commands/git/merge/driver/install.ts)_
|
|
51
51
|
|
|
52
52
|
## `sf git merge driver run`
|
|
53
53
|
|
|
@@ -85,7 +85,7 @@ EXAMPLES
|
|
|
85
85
|
- output-file is the path to the file where the merged content will be written
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
-
_See code: [src/commands/git/merge/driver/run.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.0-dev-3.
|
|
88
|
+
_See code: [src/commands/git/merge/driver/run.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.0-dev-3.14240014682-1/src/commands/git/merge/driver/run.ts)_
|
|
89
89
|
|
|
90
90
|
## `sf git merge driver uninstall`
|
|
91
91
|
|
|
@@ -112,7 +112,7 @@ EXAMPLES
|
|
|
112
112
|
$ sf git merge driver uninstall
|
|
113
113
|
```
|
|
114
114
|
|
|
115
|
-
_See code: [src/commands/git/merge/driver/uninstall.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.0-dev-3.
|
|
115
|
+
_See code: [src/commands/git/merge/driver/uninstall.ts](https://github.com/scolladon/sf-git-merge-driver/blob/v1.0.0-dev-3.14240014682-1/src/commands/git/merge/driver/uninstall.ts)_
|
|
116
116
|
<!-- commandsstop -->
|
|
117
117
|
|
|
118
118
|
## How It Works
|
package/lib/merger/JsonMerger.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { deepEqual } from 'fast-equals';
|
|
2
|
+
import { isEmpty, keyBy } from 'lodash-es';
|
|
2
3
|
import { MetadataService } from '../service/MetadataService.js';
|
|
3
4
|
import { NamespaceHandler } from '../service/NamespaceHandler.js';
|
|
4
5
|
import { MergeScenario, getScenario } from '../types/mergeScenario.js';
|
|
5
6
|
import { ensureArray, getUniqueSortedProps, isObject, } from '../utils/mergeUtils.js';
|
|
6
7
|
import { ConflictMarker } from './conflictMarker.js';
|
|
7
|
-
import { mergeTextAttribute } from './textAttribute.js';
|
|
8
|
+
import { generateObj, mergeTextAttribute } from './textAttribute.js';
|
|
8
9
|
export class JsonMerger {
|
|
9
10
|
merge(ancestor, ours, theirs) {
|
|
10
11
|
const namespaceHandler = new NamespaceHandler();
|
|
@@ -27,7 +28,7 @@ export class JsonMerger {
|
|
|
27
28
|
break;
|
|
28
29
|
default: {
|
|
29
30
|
const obj = {
|
|
30
|
-
[key]:
|
|
31
|
+
[key]: mergeThreeWay(ancestor[key], ours[key], theirs[key]),
|
|
31
32
|
};
|
|
32
33
|
acc.push([obj]);
|
|
33
34
|
break;
|
|
@@ -42,7 +43,7 @@ export class JsonMerger {
|
|
|
42
43
|
};
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
|
-
|
|
46
|
+
function mergeThreeWay(ancestor, ours, theirs) {
|
|
46
47
|
const acc = [];
|
|
47
48
|
const props = getUniqueSortedProps(ancestor, ours, theirs);
|
|
48
49
|
for (const key of props) {
|
|
@@ -64,14 +65,33 @@ const mergeMetadata = (ancestor, ours, theirs) => {
|
|
|
64
65
|
acc.push(values);
|
|
65
66
|
}
|
|
66
67
|
return acc.flat();
|
|
67
|
-
}
|
|
68
|
+
}
|
|
69
|
+
function toJsonArray(inputObj) {
|
|
70
|
+
const acc = [];
|
|
71
|
+
for (const attribute of getUniqueSortedProps(inputObj)) {
|
|
72
|
+
const values = [];
|
|
73
|
+
const inputObjOfAttr = inputObj[attribute];
|
|
74
|
+
if (typeof inputObjOfAttr === 'object') {
|
|
75
|
+
const inputObjAtt = ensureArray(inputObjOfAttr);
|
|
76
|
+
for (const key of getUniqueSortedProps(inputObjAtt)) {
|
|
77
|
+
const inputObjKeyOfKey = inputObjAtt[key];
|
|
78
|
+
values.push({ [attribute]: toJsonArray(inputObjKeyOfKey) });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
values.push(generateObj(inputObjOfAttr, attribute));
|
|
83
|
+
}
|
|
84
|
+
acc.push(values);
|
|
85
|
+
}
|
|
86
|
+
return acc.flat();
|
|
87
|
+
}
|
|
68
88
|
const handleOursAndTheirs = (key, ours, theirs) => {
|
|
69
89
|
const obj = {};
|
|
70
|
-
obj[key] =
|
|
90
|
+
obj[key] = toJsonArray(ours[key]);
|
|
71
91
|
const acc = [];
|
|
72
|
-
if (!
|
|
92
|
+
if (!deepEqual(ours, theirs)) {
|
|
73
93
|
const theirsProp = {
|
|
74
|
-
[key]:
|
|
94
|
+
[key]: toJsonArray(theirs[key]),
|
|
75
95
|
};
|
|
76
96
|
ConflictMarker.addConflictMarkers(acc, obj, {}, theirsProp);
|
|
77
97
|
}
|
|
@@ -82,12 +102,12 @@ const handleOursAndTheirs = (key, ours, theirs) => {
|
|
|
82
102
|
};
|
|
83
103
|
const handleAncestorAndTheirs = (key, ancestor, theirs) => {
|
|
84
104
|
const acc = [];
|
|
85
|
-
if (!
|
|
105
|
+
if (!deepEqual(ancestor, theirs)) {
|
|
86
106
|
const ancestorProp = {
|
|
87
|
-
[key]:
|
|
107
|
+
[key]: toJsonArray(ancestor[key]),
|
|
88
108
|
};
|
|
89
109
|
const theirsProp = {
|
|
90
|
-
[key]:
|
|
110
|
+
[key]: toJsonArray(theirs[key]),
|
|
91
111
|
};
|
|
92
112
|
ConflictMarker.addConflictMarkers(acc, {}, ancestorProp, theirsProp);
|
|
93
113
|
}
|
|
@@ -95,12 +115,12 @@ const handleAncestorAndTheirs = (key, ancestor, theirs) => {
|
|
|
95
115
|
};
|
|
96
116
|
const handleAncestorAndOurs = (key, ancestor, ours) => {
|
|
97
117
|
const acc = [];
|
|
98
|
-
if (!
|
|
118
|
+
if (!deepEqual(ancestor, ours)) {
|
|
99
119
|
const oursProp = {
|
|
100
|
-
[key]:
|
|
120
|
+
[key]: toJsonArray(ours[key]),
|
|
101
121
|
};
|
|
102
122
|
const ancestorProp = {
|
|
103
|
-
[key]:
|
|
123
|
+
[key]: toJsonArray(ancestor[key]),
|
|
104
124
|
};
|
|
105
125
|
ConflictMarker.addConflictMarkers(acc, oursProp, ancestorProp, {});
|
|
106
126
|
}
|
|
@@ -109,9 +129,14 @@ const handleAncestorAndOurs = (key, ancestor, ours) => {
|
|
|
109
129
|
const mergeArrays = (ancestor, ours, theirs, attribute) => {
|
|
110
130
|
const keyField = MetadataService.getKeyFieldExtractor(attribute);
|
|
111
131
|
if (!keyField) {
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
132
|
+
// const scenario: MergeScenario = getScenario(ancestor, ours, theirs)
|
|
133
|
+
const arr = [];
|
|
134
|
+
// obj[attribute] = unionWith(ours, theirs, deepEqual)
|
|
135
|
+
// obj[attribute] = mergeTextAttribute(ours, theirs, deepEqual, attribute)
|
|
136
|
+
// obj[attribute] = []
|
|
137
|
+
ConflictMarker.addConflictMarkers(arr, toJsonArray({ [attribute]: ours }), toJsonArray({ [attribute]: ancestor }), toJsonArray({ [attribute]: theirs }));
|
|
138
|
+
return arr.flat();
|
|
139
|
+
// return mergeTextAttribute(ancestor, ours, theirs, attribute).flat()
|
|
115
140
|
}
|
|
116
141
|
const [keyedAnc, keyedOurs, keyedTheirs] = [ancestor, ours, theirs].map(arr => keyBy(arr, keyField));
|
|
117
142
|
return mergeByKeyField(keyedAnc, keyedOurs, keyedTheirs, attribute);
|
|
@@ -127,55 +152,55 @@ const mergeByKeyField = (ancestor, ours, theirs, attribute) => {
|
|
|
127
152
|
const obj = {};
|
|
128
153
|
switch (scenario) {
|
|
129
154
|
case MergeScenario.THEIRS_ONLY:
|
|
130
|
-
obj[attribute] =
|
|
155
|
+
obj[attribute] = mergeThreeWay({}, {}, theirsOfKey);
|
|
131
156
|
break;
|
|
132
157
|
case MergeScenario.OURS_ONLY:
|
|
133
|
-
obj[attribute] =
|
|
158
|
+
obj[attribute] = mergeThreeWay({}, oursOfKey, {});
|
|
134
159
|
break;
|
|
135
160
|
case MergeScenario.ANCESTOR_ONLY:
|
|
136
161
|
break;
|
|
137
162
|
case MergeScenario.OURS_AND_THEIRS:
|
|
138
|
-
if (
|
|
139
|
-
obj[attribute] =
|
|
163
|
+
if (deepEqual(oursOfKey, theirsOfKey)) {
|
|
164
|
+
obj[attribute] = mergeThreeWay({}, {}, theirsOfKey);
|
|
140
165
|
}
|
|
141
166
|
else {
|
|
142
|
-
obj[attribute] =
|
|
167
|
+
obj[attribute] = mergeThreeWay({}, oursOfKey, theirsOfKey);
|
|
143
168
|
}
|
|
144
169
|
break;
|
|
145
170
|
case MergeScenario.ANCESTOR_AND_THEIRS:
|
|
146
|
-
if (!
|
|
171
|
+
if (!deepEqual(ancestorOfKey, theirsOfKey)) {
|
|
147
172
|
const ancestorProp = {
|
|
148
|
-
[attribute]:
|
|
173
|
+
[attribute]: mergeThreeWay({}, ancestorOfKey, {}),
|
|
149
174
|
};
|
|
150
175
|
const theirsProp = {
|
|
151
|
-
[attribute]:
|
|
176
|
+
[attribute]: mergeThreeWay({}, {}, theirsOfKey),
|
|
152
177
|
};
|
|
153
178
|
ConflictMarker.addConflictMarkers(acc, {}, ancestorProp, theirsProp);
|
|
154
179
|
}
|
|
155
180
|
break;
|
|
156
181
|
case MergeScenario.ANCESTOR_AND_OURS:
|
|
157
|
-
if (!
|
|
182
|
+
if (!deepEqual(ancestorOfKey, oursOfKey)) {
|
|
158
183
|
const oursProp = {
|
|
159
|
-
[attribute]:
|
|
184
|
+
[attribute]: mergeThreeWay({}, oursOfKey, {}),
|
|
160
185
|
};
|
|
161
186
|
const ancestorProp = {
|
|
162
|
-
[attribute]:
|
|
187
|
+
[attribute]: mergeThreeWay({}, ancestorOfKey, {}),
|
|
163
188
|
};
|
|
164
189
|
ConflictMarker.addConflictMarkers(acc, oursProp, ancestorProp, {});
|
|
165
190
|
}
|
|
166
191
|
break;
|
|
167
192
|
case MergeScenario.ALL:
|
|
168
|
-
if (
|
|
169
|
-
obj[attribute] =
|
|
193
|
+
if (deepEqual(oursOfKey, theirsOfKey)) {
|
|
194
|
+
obj[attribute] = mergeThreeWay({}, {}, theirsOfKey);
|
|
170
195
|
}
|
|
171
|
-
else if (
|
|
172
|
-
obj[attribute] =
|
|
196
|
+
else if (deepEqual(ancestorOfKey, oursOfKey)) {
|
|
197
|
+
obj[attribute] = mergeThreeWay({}, {}, theirsOfKey);
|
|
173
198
|
}
|
|
174
|
-
else if (
|
|
175
|
-
obj[attribute] =
|
|
199
|
+
else if (deepEqual(ancestorOfKey, theirsOfKey)) {
|
|
200
|
+
obj[attribute] = mergeThreeWay({}, oursOfKey, {});
|
|
176
201
|
}
|
|
177
202
|
else {
|
|
178
|
-
obj[attribute] =
|
|
203
|
+
obj[attribute] = mergeThreeWay(ancestorOfKey, oursOfKey, theirsOfKey);
|
|
179
204
|
}
|
|
180
205
|
break;
|
|
181
206
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonMerger.js","sourceRoot":"","sources":["../../src/merger/JsonMerger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"JsonMerger.js","sourceRoot":"","sources":["../../src/merger/JsonMerger.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,5 @@ import type { JsonArray, JsonObject } from '../types/jsonTypes.js';
|
|
|
2
2
|
export declare class ConflictMarker {
|
|
3
3
|
private static hasConflict;
|
|
4
4
|
static hasConflictMarker(): boolean;
|
|
5
|
-
static addConflictMarkers(acc: JsonArray, ours: JsonObject, ancestor: JsonObject, theirs: JsonObject): void;
|
|
5
|
+
static addConflictMarkers(acc: JsonArray, ours: JsonObject | JsonArray, ancestor: JsonObject | JsonArray, theirs: JsonObject | JsonArray): void;
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conflictMarker.js","sourceRoot":"","sources":["../../src/merger/conflictMarker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EACL,IAAI,EACJ,KAAK,EACL,OAAO,EACP,MAAM,EACN,SAAS,EACT,QAAQ,GACT,MAAM,gCAAgC,CAAA;AAGvC,MAAM,OAAO,cAAc;IACjB,MAAM,CAAC,WAAW,GAAG,KAAK,CAAA;IAE3B,MAAM,CAAC,iBAAiB;QAC7B,OAAO,cAAc,CAAC,WAAW,CAAA;IACnC,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAC9B,GAAc,EACd,
|
|
1
|
+
{"version":3,"file":"conflictMarker.js","sourceRoot":"","sources":["../../src/merger/conflictMarker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EACL,IAAI,EACJ,KAAK,EACL,OAAO,EACP,MAAM,EACN,SAAS,EACT,QAAQ,GACT,MAAM,gCAAgC,CAAA;AAGvC,MAAM,OAAO,cAAc;IACjB,MAAM,CAAC,WAAW,GAAG,KAAK,CAAA;IAE3B,MAAM,CAAC,iBAAiB;QAC7B,OAAO,cAAc,CAAC,WAAW,CAAA;IACnC,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAC9B,GAAc,EACd,IAA4B,EAC5B,QAAgC,EAChC,MAA8B;QAE9B,cAAc,CAAC,WAAW,GAAG,IAAI,CAAA;QACjC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,OAAO,GAAG,KAAK,EAAE,EAAE,CAAC,CAAA;QAC9C,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACxD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QAC9B,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;QAChE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;QACnC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QAC5D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IAClC,CAAC"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import type { JsonArray, JsonValue } from '../types/jsonTypes.js';
|
|
1
|
+
import type { JsonArray, JsonObject, JsonValue } from '../types/jsonTypes.js';
|
|
2
|
+
export declare const generateObj: (value: JsonValue | null, attrib: string) => JsonObject;
|
|
2
3
|
export declare const mergeTextAttribute: (ancestor: JsonValue | null, ours: JsonValue | null, theirs: JsonValue | null, attrib: string) => JsonArray;
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { deepEqual } from 'fast-equals';
|
|
2
|
+
import { isNil } from 'lodash-es';
|
|
2
3
|
import { TEXT_TAG } from '../constant/conflicConstant.js';
|
|
3
4
|
import { MergeScenario, getScenario } from '../types/mergeScenario.js';
|
|
4
5
|
import { ConflictMarker } from './conflictMarker.js';
|
|
6
|
+
export const generateObj = (value, attrib) => {
|
|
7
|
+
return isNil(value) ? {} : { [attrib]: [{ [TEXT_TAG]: value }] };
|
|
8
|
+
};
|
|
5
9
|
export const mergeTextAttribute = (ancestor, ours, theirs, attrib) => {
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const objAnc = generateObj(ancestor);
|
|
10
|
-
const objOurs = generateObj(ours);
|
|
11
|
-
const objTheirs = generateObj(theirs);
|
|
10
|
+
const objAnc = generateObj(ancestor, attrib);
|
|
11
|
+
const objOurs = generateObj(ours, attrib);
|
|
12
|
+
const objTheirs = generateObj(theirs, attrib);
|
|
12
13
|
const scenario = getScenario(objAnc, objOurs, objTheirs);
|
|
13
14
|
const acc = [];
|
|
14
15
|
// Early return for identical values
|
|
15
|
-
if (
|
|
16
|
+
if (deepEqual(ours, theirs) &&
|
|
16
17
|
(scenario === MergeScenario.OURS_AND_THEIRS ||
|
|
17
18
|
scenario === MergeScenario.ALL)) {
|
|
18
19
|
return [objOurs];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textAttribute.js","sourceRoot":"","sources":["../../src/merger/textAttribute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"textAttribute.js","sourceRoot":"","sources":["../../src/merger/textAttribute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAEzD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,KAAuB,EACvB,MAAc,EACF,EAAE;IACd,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;AAClE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,QAA0B,EAC1B,IAAsB,EACtB,MAAwB,EACxB,MAAc,EACH,EAAE;IACb,MAAM,MAAM,GAAe,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IACxD,MAAM,OAAO,GAAe,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACrD,MAAM,SAAS,GAAe,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACzD,MAAM,QAAQ,GAAkB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;IACvE,MAAM,GAAG,GAAc,EAAE,CAAA;IAEzB,oCAAoC;IACpC,IACE,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;QACvB,CAAC,QAAQ,KAAK,aAAa,CAAC,eAAe;YACzC,QAAQ,KAAK,aAAa,CAAC,GAAG,CAAC,EACjC,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,CAAA;IAClB,CAAC;IAED,kCAAkC;IAClC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,aAAa,CAAC,WAAW;YAC5B,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACnB,MAAK;QAEP,KAAK,aAAa,CAAC,SAAS;YAC1B,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACjB,MAAK;QAEP,KAAK,aAAa,CAAC,eAAe;YAChC,cAAc,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;YAC9D,MAAK;QAEP,KAAK,aAAa,CAAC,mBAAmB;YACpC,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACxB,cAAc,CAAC,kBAAkB,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;YAC/D,CAAC;YACD,MAAK;QAEP,KAAK,aAAa,CAAC,iBAAiB;YAClC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,cAAc,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;YAC7D,CAAC;YACD,MAAK;QAEP,KAAK,aAAa,CAAC,GAAG;YACpB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACrB,CAAC;iBAAM,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBAC/B,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACnB,CAAC;iBAAM,CAAC;gBACN,cAAc,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;YACpE,CAAC;YACD,MAAK;IACT,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA"}
|