footprintjs 9.35.0 → 9.36.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/CLAUDE.md +2 -2
- package/dist/esm/lib/engine/handlers/SubflowExecutor.js +3 -32
- package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +1 -1
- package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.d.ts +3 -2
- package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.js +24 -157
- package/dist/esm/lib/engine/narrative/types.d.ts +1 -9
- package/dist/esm/lib/engine/narrative/types.js +1 -1
- package/dist/esm/lib/engine/types.d.ts +1 -3
- package/dist/esm/lib/engine/types.js +1 -1
- package/dist/esm/lib/memory/StageContext.d.ts +1 -17
- package/dist/esm/lib/memory/StageContext.js +2 -37
- package/dist/esm/lib/memory/runPolicy.d.ts +2 -3
- package/dist/esm/lib/memory/runPolicy.js +3 -4
- package/dist/esm/lib/recorder/CombinedRecorder.d.ts +2 -33
- package/dist/esm/lib/recorder/CombinedRecorder.js +10 -62
- package/dist/esm/lib/recorder/CompositeRecorder.d.ts +15 -26
- package/dist/esm/lib/recorder/CompositeRecorder.js +33 -97
- package/dist/esm/lib/recorder/EmitRecorder.d.ts +2 -7
- package/dist/esm/lib/recorder/EmitRecorder.js +1 -1
- package/dist/esm/lib/recorder/hooks.d.ts +249 -0
- package/dist/esm/lib/recorder/hooks.js +132 -0
- package/dist/esm/lib/recorder/snapshot.d.ts +19 -0
- package/dist/esm/lib/recorder/snapshot.js +26 -0
- package/dist/esm/lib/runner/DeferredObserverTier.js +13 -23
- package/dist/esm/lib/runner/ExecutionRuntime.d.ts +1 -18
- package/dist/esm/lib/runner/ExecutionRuntime.js +2 -37
- package/dist/esm/lib/runner/FlowChartExecutor.d.ts +4 -8
- package/dist/esm/lib/runner/FlowChartExecutor.js +27 -24
- package/dist/esm/lib/scope/ScopeFacade.d.ts +5 -0
- package/dist/esm/lib/scope/ScopeFacade.js +30 -52
- package/dist/esm/lib/scope/types.d.ts +1 -9
- package/dist/esm/lib/scope/types.js +1 -1
- package/dist/lib/engine/handlers/SubflowExecutor.js +3 -32
- package/dist/lib/engine/narrative/FlowRecorderDispatcher.js +24 -157
- package/dist/lib/engine/narrative/types.js +1 -1
- package/dist/lib/engine/types.js +1 -1
- package/dist/lib/memory/StageContext.js +1 -36
- package/dist/lib/memory/runPolicy.js +3 -4
- package/dist/lib/recorder/CombinedRecorder.js +11 -63
- package/dist/lib/recorder/CompositeRecorder.js +33 -97
- package/dist/lib/recorder/EmitRecorder.js +1 -1
- package/dist/lib/recorder/hooks.js +140 -0
- package/dist/lib/recorder/snapshot.js +30 -0
- package/dist/lib/runner/DeferredObserverTier.js +14 -24
- package/dist/lib/runner/ExecutionRuntime.js +1 -36
- package/dist/lib/runner/FlowChartExecutor.js +27 -24
- package/dist/lib/scope/ScopeFacade.js +30 -52
- package/dist/lib/scope/types.js +1 -1
- package/dist/types/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +1 -1
- package/dist/types/lib/engine/narrative/FlowRecorderDispatcher.d.ts +3 -2
- package/dist/types/lib/engine/narrative/types.d.ts +1 -9
- package/dist/types/lib/engine/types.d.ts +1 -3
- package/dist/types/lib/memory/StageContext.d.ts +1 -17
- package/dist/types/lib/memory/runPolicy.d.ts +2 -3
- package/dist/types/lib/recorder/CombinedRecorder.d.ts +2 -33
- package/dist/types/lib/recorder/CompositeRecorder.d.ts +15 -26
- package/dist/types/lib/recorder/EmitRecorder.d.ts +2 -7
- package/dist/types/lib/recorder/hooks.d.ts +249 -0
- package/dist/types/lib/recorder/snapshot.d.ts +19 -0
- package/dist/types/lib/runner/ExecutionRuntime.d.ts +1 -18
- package/dist/types/lib/runner/FlowChartExecutor.d.ts +4 -8
- package/dist/types/lib/scope/ScopeFacade.d.ts +5 -0
- package/dist/types/lib/scope/types.d.ts +1 -9
- package/package.json +1 -1
- package/dist/esm/lib/recorder/invokeHook.d.ts +0 -8
- package/dist/esm/lib/recorder/invokeHook.js +0 -9
- package/dist/lib/recorder/invokeHook.js +0 -13
- package/dist/types/lib/recorder/invokeHook.d.ts +0 -8
|
@@ -4,13 +4,16 @@
|
|
|
4
4
|
* Implements IControlFlowNarrative so it can replace the single
|
|
5
5
|
* ControlFlowNarrativeGenerator in the traverser's HandlerDeps.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* Every event goes through `recorder/hooks.ts · fire` (the one per-recorder loop): a failing
|
|
8
|
+
* recorder is warned about in dev mode and never breaks execution — even when what it threw
|
|
9
|
+
* cannot be turned into a string.
|
|
9
10
|
*
|
|
10
11
|
* When no recorders are attached, every method is a fast no-op (empty array check).
|
|
11
12
|
*/
|
|
12
|
-
import {
|
|
13
|
+
import { fire, warnInDevMode } from '../../recorder/hooks.js';
|
|
13
14
|
import { extractErrorInfo } from '../errors/errorInfo.js';
|
|
15
|
+
/** The flow channel's isolation: a throwing recorder is warned about in dev mode, then skipped. */
|
|
16
|
+
const FLOW_FAILURE = warnInDevMode('FlowRecorderDispatcher');
|
|
14
17
|
export class FlowRecorderDispatcher {
|
|
15
18
|
recorders = [];
|
|
16
19
|
/** Attach a FlowRecorder. Duplicate IDs are allowed (same as scope ScopeRecorder). */
|
|
@@ -34,29 +37,13 @@ export class FlowRecorderDispatcher {
|
|
|
34
37
|
if (this.recorders.length === 0)
|
|
35
38
|
return;
|
|
36
39
|
const event = { stageName, description, traversalContext, stageType };
|
|
37
|
-
|
|
38
|
-
try {
|
|
39
|
-
r.onStageExecuted?.(event);
|
|
40
|
-
}
|
|
41
|
-
catch (err) {
|
|
42
|
-
if (isDevMode())
|
|
43
|
-
console.warn(`[footprint] FlowRecorderDispatcher: recorder "${r.id}" threw in onStageExecuted: ${err}`);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
40
|
+
fire(this.recorders, 'onStageExecuted', event, FLOW_FAILURE);
|
|
46
41
|
}
|
|
47
42
|
onNext(fromStage, toStage, description, traversalContext) {
|
|
48
43
|
if (this.recorders.length === 0)
|
|
49
44
|
return;
|
|
50
45
|
const event = { from: fromStage, to: toStage, description, traversalContext };
|
|
51
|
-
|
|
52
|
-
try {
|
|
53
|
-
r.onNext?.(event);
|
|
54
|
-
}
|
|
55
|
-
catch (err) {
|
|
56
|
-
if (isDevMode())
|
|
57
|
-
console.warn(`[footprint] FlowRecorderDispatcher: recorder "${r.id}" threw in onNext: ${err}`);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
46
|
+
fire(this.recorders, 'onNext', event, FLOW_FAILURE);
|
|
60
47
|
}
|
|
61
48
|
onDecision(deciderName, chosenBranch, rationale, deciderDescription, traversalContext, evidence) {
|
|
62
49
|
if (this.recorders.length === 0)
|
|
@@ -69,99 +56,43 @@ export class FlowRecorderDispatcher {
|
|
|
69
56
|
traversalContext,
|
|
70
57
|
evidence,
|
|
71
58
|
};
|
|
72
|
-
|
|
73
|
-
try {
|
|
74
|
-
r.onDecision?.(event);
|
|
75
|
-
}
|
|
76
|
-
catch (err) {
|
|
77
|
-
if (isDevMode())
|
|
78
|
-
console.warn(`[footprint] FlowRecorderDispatcher: recorder "${r.id}" threw in onDecision: ${err}`);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
59
|
+
fire(this.recorders, 'onDecision', event, FLOW_FAILURE);
|
|
81
60
|
}
|
|
82
61
|
onFork(parentStage, childNames, traversalContext) {
|
|
83
62
|
if (this.recorders.length === 0)
|
|
84
63
|
return;
|
|
85
64
|
const event = { parent: parentStage, children: childNames, traversalContext };
|
|
86
|
-
|
|
87
|
-
try {
|
|
88
|
-
r.onFork?.(event);
|
|
89
|
-
}
|
|
90
|
-
catch (err) {
|
|
91
|
-
if (isDevMode())
|
|
92
|
-
console.warn(`[footprint] FlowRecorderDispatcher: recorder "${r.id}" threw in onFork: ${err}`);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
65
|
+
fire(this.recorders, 'onFork', event, FLOW_FAILURE);
|
|
95
66
|
}
|
|
96
67
|
onSelected(parentStage, selectedNames, totalCount, traversalContext, evidence) {
|
|
97
68
|
if (this.recorders.length === 0)
|
|
98
69
|
return;
|
|
99
70
|
const event = { parent: parentStage, selected: selectedNames, total: totalCount, traversalContext, evidence };
|
|
100
|
-
|
|
101
|
-
try {
|
|
102
|
-
r.onSelected?.(event);
|
|
103
|
-
}
|
|
104
|
-
catch (err) {
|
|
105
|
-
if (isDevMode())
|
|
106
|
-
console.warn(`[footprint] FlowRecorderDispatcher: recorder "${r.id}" threw in onSelected: ${err}`);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
71
|
+
fire(this.recorders, 'onSelected', event, FLOW_FAILURE);
|
|
109
72
|
}
|
|
110
73
|
onSubflowEntry(subflowName, subflowId, description, traversalContext, mappedInput) {
|
|
111
74
|
if (this.recorders.length === 0)
|
|
112
75
|
return;
|
|
113
76
|
const event = { name: subflowName, subflowId, description, traversalContext, mappedInput };
|
|
114
|
-
|
|
115
|
-
try {
|
|
116
|
-
r.onSubflowEntry?.(event);
|
|
117
|
-
}
|
|
118
|
-
catch (err) {
|
|
119
|
-
if (isDevMode())
|
|
120
|
-
console.warn(`[footprint] FlowRecorderDispatcher: recorder "${r.id}" threw in onSubflowEntry: ${err}`);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
77
|
+
fire(this.recorders, 'onSubflowEntry', event, FLOW_FAILURE);
|
|
123
78
|
}
|
|
124
79
|
onSubflowExit(subflowName, subflowId, traversalContext, outputState) {
|
|
125
80
|
if (this.recorders.length === 0)
|
|
126
81
|
return;
|
|
127
82
|
const event = { name: subflowName, subflowId, traversalContext, outputState };
|
|
128
|
-
|
|
129
|
-
try {
|
|
130
|
-
r.onSubflowExit?.(event);
|
|
131
|
-
}
|
|
132
|
-
catch (err) {
|
|
133
|
-
if (isDevMode())
|
|
134
|
-
console.warn(`[footprint] FlowRecorderDispatcher: recorder "${r.id}" threw in onSubflowExit: ${err}`);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
83
|
+
fire(this.recorders, 'onSubflowExit', event, FLOW_FAILURE);
|
|
137
84
|
}
|
|
138
85
|
onSubflowRegistered(subflowId, name, description, specStructure) {
|
|
139
86
|
if (this.recorders.length === 0)
|
|
140
87
|
return;
|
|
141
88
|
const event = { subflowId, name, description, specStructure };
|
|
142
|
-
|
|
143
|
-
try {
|
|
144
|
-
r.onSubflowRegistered?.(event);
|
|
145
|
-
}
|
|
146
|
-
catch (err) {
|
|
147
|
-
if (isDevMode())
|
|
148
|
-
console.warn(`[footprint] FlowRecorderDispatcher: recorder "${r.id}" threw in onSubflowRegistered: ${err}`);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
89
|
+
fire(this.recorders, 'onSubflowRegistered', event, FLOW_FAILURE);
|
|
151
90
|
}
|
|
152
91
|
onLoop(targetStage, iteration, description, traversalContext) {
|
|
153
92
|
if (this.recorders.length === 0)
|
|
154
93
|
return;
|
|
155
94
|
const event = { target: targetStage, iteration, description, traversalContext };
|
|
156
|
-
|
|
157
|
-
try {
|
|
158
|
-
r.onLoop?.(event);
|
|
159
|
-
}
|
|
160
|
-
catch (err) {
|
|
161
|
-
if (isDevMode())
|
|
162
|
-
console.warn(`[footprint] FlowRecorderDispatcher: recorder "${r.id}" threw in onLoop: ${err}`);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
95
|
+
fire(this.recorders, 'onLoop', event, FLOW_FAILURE);
|
|
165
96
|
}
|
|
166
97
|
onBreak(stageName, traversalContext, reason, propagatedFromSubflow) {
|
|
167
98
|
if (this.recorders.length === 0)
|
|
@@ -172,30 +103,14 @@ export class FlowRecorderDispatcher {
|
|
|
172
103
|
...(reason !== undefined && { reason }),
|
|
173
104
|
...(propagatedFromSubflow !== undefined && { propagatedFromSubflow }),
|
|
174
105
|
};
|
|
175
|
-
|
|
176
|
-
try {
|
|
177
|
-
r.onBreak?.(event);
|
|
178
|
-
}
|
|
179
|
-
catch (err) {
|
|
180
|
-
if (isDevMode())
|
|
181
|
-
console.warn(`[footprint] FlowRecorderDispatcher: recorder "${r.id}" threw in onBreak: ${err}`);
|
|
182
|
-
}
|
|
183
|
-
}
|
|
106
|
+
fire(this.recorders, 'onBreak', event, FLOW_FAILURE);
|
|
184
107
|
}
|
|
185
108
|
onError(stageName, errorMessage, error, traversalContext) {
|
|
186
109
|
if (this.recorders.length === 0)
|
|
187
110
|
return;
|
|
188
111
|
const structuredError = extractErrorInfo(error);
|
|
189
112
|
const event = { stageName, message: errorMessage, structuredError, traversalContext, channel: 'flow' };
|
|
190
|
-
|
|
191
|
-
try {
|
|
192
|
-
r.onError?.(event);
|
|
193
|
-
}
|
|
194
|
-
catch (err) {
|
|
195
|
-
if (isDevMode())
|
|
196
|
-
console.warn(`[footprint] FlowRecorderDispatcher: recorder "${r.id}" threw in onError: ${err}`);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
113
|
+
fire(this.recorders, 'onError', event, FLOW_FAILURE);
|
|
199
114
|
}
|
|
200
115
|
onStageRetry(stageName, stageId, attempt, maxAttempts, delayMs, error, traversalContext) {
|
|
201
116
|
if (this.recorders.length === 0)
|
|
@@ -212,85 +127,37 @@ export class FlowRecorderDispatcher {
|
|
|
212
127
|
traversalContext,
|
|
213
128
|
channel: 'flow',
|
|
214
129
|
};
|
|
215
|
-
|
|
216
|
-
try {
|
|
217
|
-
r.onStageRetry?.(event);
|
|
218
|
-
}
|
|
219
|
-
catch (err) {
|
|
220
|
-
if (isDevMode())
|
|
221
|
-
console.warn(`[footprint] FlowRecorderDispatcher: recorder "${r.id}" threw in onStageRetry: ${err}`);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
130
|
+
fire(this.recorders, 'onStageRetry', event, FLOW_FAILURE);
|
|
224
131
|
}
|
|
225
132
|
onPause(stageName, stageId, pauseData, subflowPath, traversalContext) {
|
|
226
133
|
if (this.recorders.length === 0)
|
|
227
134
|
return;
|
|
228
135
|
const event = { stageName, stageId, pauseData, subflowPath, traversalContext, channel: 'flow' };
|
|
229
|
-
|
|
230
|
-
try {
|
|
231
|
-
r.onPause?.(event);
|
|
232
|
-
}
|
|
233
|
-
catch (err) {
|
|
234
|
-
if (isDevMode())
|
|
235
|
-
console.warn(`[footprint] FlowRecorderDispatcher: recorder "${r.id}" threw in onPause: ${err}`);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
136
|
+
fire(this.recorders, 'onPause', event, FLOW_FAILURE);
|
|
238
137
|
}
|
|
239
138
|
onResume(stageName, stageId, hasInput, traversalContext) {
|
|
240
139
|
if (this.recorders.length === 0)
|
|
241
140
|
return;
|
|
242
141
|
const event = { stageName, stageId, hasInput, traversalContext, channel: 'flow' };
|
|
243
|
-
|
|
244
|
-
try {
|
|
245
|
-
r.onResume?.(event);
|
|
246
|
-
}
|
|
247
|
-
catch (err) {
|
|
248
|
-
if (isDevMode())
|
|
249
|
-
console.warn(`[footprint] FlowRecorderDispatcher: recorder "${r.id}" threw in onResume: ${err}`);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
142
|
+
fire(this.recorders, 'onResume', event, FLOW_FAILURE);
|
|
252
143
|
}
|
|
253
144
|
onRunStart(input, traversalContext) {
|
|
254
145
|
if (this.recorders.length === 0)
|
|
255
146
|
return;
|
|
256
147
|
const event = { payload: input, traversalContext };
|
|
257
|
-
|
|
258
|
-
try {
|
|
259
|
-
r.onRunStart?.(event);
|
|
260
|
-
}
|
|
261
|
-
catch (err) {
|
|
262
|
-
if (isDevMode())
|
|
263
|
-
console.warn(`[footprint] FlowRecorderDispatcher: recorder "${r.id}" threw in onRunStart: ${err}`);
|
|
264
|
-
}
|
|
265
|
-
}
|
|
148
|
+
fire(this.recorders, 'onRunStart', event, FLOW_FAILURE);
|
|
266
149
|
}
|
|
267
150
|
onRunEnd(output, traversalContext) {
|
|
268
151
|
if (this.recorders.length === 0)
|
|
269
152
|
return;
|
|
270
153
|
const event = { payload: output, traversalContext };
|
|
271
|
-
|
|
272
|
-
try {
|
|
273
|
-
r.onRunEnd?.(event);
|
|
274
|
-
}
|
|
275
|
-
catch (err) {
|
|
276
|
-
if (isDevMode())
|
|
277
|
-
console.warn(`[footprint] FlowRecorderDispatcher: recorder "${r.id}" threw in onRunEnd: ${err}`);
|
|
278
|
-
}
|
|
279
|
-
}
|
|
154
|
+
fire(this.recorders, 'onRunEnd', event, FLOW_FAILURE);
|
|
280
155
|
}
|
|
281
156
|
onRunFailed(error, traversalContext) {
|
|
282
157
|
if (this.recorders.length === 0)
|
|
283
158
|
return;
|
|
284
159
|
const event = { structuredError: error, traversalContext };
|
|
285
|
-
|
|
286
|
-
try {
|
|
287
|
-
r.onRunFailed?.(event);
|
|
288
|
-
}
|
|
289
|
-
catch (err) {
|
|
290
|
-
if (isDevMode())
|
|
291
|
-
console.warn(`[footprint] FlowRecorderDispatcher: recorder "${r.id}" threw in onRunFailed: ${err}`);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
160
|
+
fire(this.recorders, 'onRunFailed', event, FLOW_FAILURE);
|
|
294
161
|
}
|
|
295
162
|
/**
|
|
296
163
|
* Returns sentences from an attached NarrativeFlowRecorder (looked up by ID).
|
|
@@ -302,4 +169,4 @@ export class FlowRecorderDispatcher {
|
|
|
302
169
|
return narrative?.getSentences() ?? [];
|
|
303
170
|
}
|
|
304
171
|
}
|
|
305
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd1JlY29yZGVyRGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL25hcnJhdGl2ZS9GbG93UmVjb3JkZXJEaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFHSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFZMUQsTUFBTSxPQUFPLHNCQUFzQjtJQUN6QixTQUFTLEdBQW1CLEVBQUUsQ0FBQztJQUV2QyxzRkFBc0Y7SUFDdEYsTUFBTSxDQUFDLFFBQXNCO1FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxrREFBa0Q7SUFDbEQsTUFBTSxDQUFDLEVBQVU7UUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxzREFBc0Q7SUFDdEQsaUJBQWlCO1FBQ2YsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxrR0FBa0c7SUFDbEcsZUFBZSxDQUF3QyxFQUFVO1FBQy9ELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFrQixDQUFDO0lBQ2xFLENBQUM7SUFFRCw2RUFBNkU7SUFFN0UsZUFBZSxDQUNiLFNBQWlCLEVBQ2pCLFdBQStCLEVBQy9CLGdCQUE4QyxFQUM5QyxTQUFvQjtRQUVwQixJQUFJLElBQUksQ0FBQyxT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LENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsQ0FBQztZQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxTQUFTLEVBQUU7b0JBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxpREFBaUQsQ0FBQyxDQUFDLEVBQUUsMkJBQTJCLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDeEcsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQVk7UUFDVixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUF3QixXQUFXLENBQUMsQ0FBQztRQUMzRSxPQUFPLFNBQVMsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDekMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGbG93UmVjb3JkZXJEaXNwYXRjaGVyIOKAlCBGYW5zIG91dCBjb250cm9sIGZsb3cgZXZlbnRzIHRvIE4gYXR0YWNoZWQgRmxvd1JlY29yZGVycy5cbiAqXG4gKiBJbXBsZW1lbnRzIElDb250cm9sRmxvd05hcnJhdGl2ZSBzbyBpdCBjYW4gcmVwbGFjZSB0aGUgc2luZ2xlXG4gKiBDb250cm9sRmxvd05hcnJhdGl2ZUdlbmVyYXRvciBpbiB0aGUgdHJhdmVyc2VyJ3MgSGFuZGxlckRlcHMuXG4gKlxuICogRGVzaWduIG1pcnJvcnMgU2NvcGVGYWNhZGUuX2ludm9rZUhvb2s6IGl0ZXJhdGUgcmVjb3JkZXJzLCBjYWxsIG9wdGlvbmFsXG4gKiBob29rcywgc3dhbGxvdyBlcnJvcnMgc28gYSBmYWlsaW5nIHJlY29yZGVyIG5ldmVyIGJyZWFrcyBleGVjdXRpb24uXG4gKlxuICogV2hlbiBubyByZWNvcmRlcnMgYXJlIGF0dGFjaGVkLCBldmVyeSBtZXRob2QgaXMgYSBmYXN0IG5vLW9wIChlbXB0eSBhcnJheSBjaGVjaykuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBEZWNpc2lvbkV2aWRlbmNlLCBTZWxlY3Rpb25FdmlkZW5jZSB9IGZyb20gJy4uLy4uL2RlY2lkZS90eXBlcy5qcyc7XG5pbXBvcnQgeyBpc0Rldk1vZGUgfSBmcm9tICcuLi8uLi9kZXZNb2RlLmpzJztcbmltcG9ydCB0eXBlIHsgU3RydWN0dXJlZEVycm9ySW5mbyB9IGZyb20gJy4uL2Vycm9ycy9lcnJvckluZm8uanMnO1xuaW1wb3J0IHsgZXh0cmFjdEVycm9ySW5mbyB9IGZyb20gJy4uL2Vycm9ycy9lcnJvckluZm8uanMnO1xuaW1wb3J0IHR5cGUgeyBOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL05hcnJhdGl2ZUZsb3dSZWNvcmRlci5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEZsb3dCcmVha0V2ZW50LFxuICBGbG93UmVjb3JkZXIsXG4gIEZsb3dTdGFnZUV2ZW50LFxuICBGbG93U3RhZ2VSZXRyeUV2ZW50LFxuICBJQ29udHJvbEZsb3dOYXJyYXRpdmUsXG4gIFN0YWdlVHlwZSxcbiAgVHJhdmVyc2FsQ29udGV4dCxcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBGbG93UmVjb3JkZXJEaXNwYXRjaGVyIGltcGxlbWVudHMgSUNvbnRyb2xGbG93TmFycmF0aXZlIHtcbiAgcHJpdmF0ZSByZWNvcmRlcnM6IEZsb3dSZWNvcmRlcltdID0gW107XG5cbiAgLyoqIEF0dGFjaCBhIEZsb3dSZWNvcmRlci4gRHVwbGljYXRlIElEcyBhcmUgYWxsb3dlZCAoc2FtZSBhcyBzY29wZSBTY29wZVJlY29yZGVyKS4gKi9cbiAgYXR0YWNoKHJlY29yZGVyOiBGbG93UmVjb3JkZXIpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZGVycy5wdXNoKHJlY29yZGVyKTtcbiAgfVxuXG4gIC8qKiBEZXRhY2ggYWxsIEZsb3dSZWNvcmRlcnMgd2l0aCB0aGUgZ2l2ZW4gSUQuICovXG4gIGRldGFjaChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5yZWNvcmRlcnMgPSB0aGlzLnJlY29yZGVycy5maWx0ZXIoKHIpID0+IHIuaWQgIT09IGlkKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIGEgZGVmZW5zaXZlIGNvcHkgb2YgYXR0YWNoZWQgcmVjb3JkZXJzLiAqL1xuICBnZXRTY29wZVJlY29yZGVycygpOiBGbG93UmVjb3JkZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnJlY29yZGVyc107XG4gIH1cblxuICAvKiogRmluZCBhIHJlY29yZGVyIGJ5IElELiBVc2VmdWwgZm9yIHJldHJpZXZpbmcgYnVpbHQtaW4gcmVjb3JkZXJzIGxpa2UgTmFycmF0aXZlRmxvd1JlY29yZGVyLiAqL1xuICBnZXRSZWNvcmRlckJ5SWQ8VCBleHRlbmRzIEZsb3dSZWNvcmRlciA9IEZsb3dSZWNvcmRlcj4oaWQ6IHN0cmluZyk6IFQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlY29yZGVycy5maW5kKChyKSA9PiByLmlkID09PSBpZCkgYXMgVCB8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIOKUgOKUgCBJQ29udHJvbEZsb3dOYXJyYXRpdmUgaW1wbGVtZW50YXRpb24g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgb25TdGFnZUV4ZWN1dGVkKFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdHJhdmVyc2FsQ29udGV4dDogVHJhdmVyc2FsQ29udGV4dCB8IHVuZGVmaW5lZCxcbiAgICBzdGFnZVR5cGU6IFN0YWdlVHlwZSxcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50OiBGbG93U3RhZ2VFdmVudCA9IHsgc3RhZ2VOYW1lLCBkZXNjcmlwdGlvbiwgdHJhdmVyc2FsQ29udGV4dCwgc3RhZ2VUeXBlIH07XG4gICAgZm9yIChjb25zdCByIG9mIHRoaXMucmVjb3JkZXJzKSB7XG4gICAgICB0cnkge1xuICAgICAgICByLm9uU3RhZ2VFeGVjdXRlZD8uKGV2ZW50KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpXG4gICAgICAgICAgY29uc29sZS53YXJuKGBbZm9vdHByaW50XSBGbG93UmVjb3JkZXJEaXNwYXRjaGVyOiByZWNvcmRlciBcIiR7ci5pZH1cIiB0aHJldyBpbiBvblN0YWdlRXhlY3V0ZWQ6ICR7ZXJyfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uTmV4dChmcm9tU3RhZ2U6IHN0cmluZywgdG9TdGFnZTogc3RyaW5nLCBkZXNjcmlwdGlvbj86IHN0cmluZywgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQgPSB7IGZyb206IGZyb21TdGFnZSwgdG86IHRvU3RhZ2UsIGRlc2NyaXB0aW9uLCB0cmF2ZXJzYWxDb250ZXh0IH07XG4gICAgZm9yIChjb25zdCByIG9mIHRoaXMucmVjb3JkZXJzKSB7XG4gICAgICB0cnkge1xuICAgICAgICByLm9uTmV4dD8uKGV2ZW50KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIGNvbnNvbGUud2FybihgW2Zvb3RwcmludF0gRmxvd1JlY29yZGVyRGlzcGF0Y2hlcjogcmVjb3JkZXIgXCIke3IuaWR9XCIgdGhyZXcgaW4gb25OZXh0OiAke2Vycn1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkRlY2lzaW9uKFxuICAgIGRlY2lkZXJOYW1lOiBzdHJpbmcsXG4gICAgY2hvc2VuQnJhbmNoOiBzdHJpbmcsXG4gICAgcmF0aW9uYWxlPzogc3RyaW5nLFxuICAgIGRlY2lkZXJEZXNjcmlwdGlvbj86IHN0cmluZyxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgICBldmlkZW5jZT86IERlY2lzaW9uRXZpZGVuY2UsXG4gICk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGRlY2lkZXI6IGRlY2lkZXJOYW1lLFxuICAgICAgY2hvc2VuOiBjaG9zZW5CcmFuY2gsXG4gICAgICByYXRpb25hbGUsXG4gICAgICBkZXNjcmlwdGlvbjogZGVjaWRlckRlc2NyaXB0aW9uLFxuICAgICAgdHJhdmVyc2FsQ29udGV4dCxcbiAgICAgIGV2aWRlbmNlLFxuICAgIH07XG4gICAgZm9yIChjb25zdCByIG9mIHRoaXMucmVjb3JkZXJzKSB7XG4gICAgICB0cnkge1xuICAgICAgICByLm9uRGVjaXNpb24/LihldmVudCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKVxuICAgICAgICAgIGNvbnNvbGUud2FybihgW2Zvb3RwcmludF0gRmxvd1JlY29yZGVyRGlzcGF0Y2hlcjogcmVjb3JkZXIgXCIke3IuaWR9XCIgdGhyZXcgaW4gb25EZWNpc2lvbjogJHtlcnJ9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25Gb3JrKHBhcmVudFN0YWdlOiBzdHJpbmcsIGNoaWxkTmFtZXM6IHN0cmluZ1tdLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBldmVudCA9IHsgcGFyZW50OiBwYXJlbnRTdGFnZSwgY2hpbGRyZW46IGNoaWxkTmFtZXMsIHRyYXZlcnNhbENvbnRleHQgfTtcbiAgICBmb3IgKGNvbnN0IHIgb2YgdGhpcy5yZWNvcmRlcnMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHIub25Gb3JrPy4oZXZlbnQpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSkgY29uc29sZS53YXJuKGBbZm9vdHByaW50XSBGbG93UmVjb3JkZXJEaXNwYXRjaGVyOiByZWNvcmRlciBcIiR7ci5pZH1cIiB0aHJldyBpbiBvbkZvcms6ICR7ZXJyfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uU2VsZWN0ZWQoXG4gICAgcGFyZW50U3RhZ2U6IHN0cmluZyxcbiAgICBzZWxlY3RlZE5hbWVzOiBzdHJpbmdbXSxcbiAgICB0b3RhbENvdW50OiBudW1iZXIsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgZXZpZGVuY2U/OiBTZWxlY3Rpb25FdmlkZW5jZSxcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBwYXJlbnQ6IHBhcmVudFN0YWdlLCBzZWxlY3RlZDogc2VsZWN0ZWROYW1lcywgdG90YWw6IHRvdGFsQ291bnQsIHRyYXZlcnNhbENvbnRleHQsIGV2aWRlbmNlIH07XG4gICAgZm9yIChjb25zdCByIG9mIHRoaXMucmVjb3JkZXJzKSB7XG4gICAgICB0cnkge1xuICAgICAgICByLm9uU2VsZWN0ZWQ/LihldmVudCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKVxuICAgICAgICAgIGNvbnNvbGUud2FybihgW2Zvb3RwcmludF0gRmxvd1JlY29yZGVyRGlzcGF0Y2hlcjogcmVjb3JkZXIgXCIke3IuaWR9XCIgdGhyZXcgaW4gb25TZWxlY3RlZDogJHtlcnJ9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25TdWJmbG93RW50cnkoXG4gICAgc3ViZmxvd05hbWU6IHN0cmluZyxcbiAgICBzdWJmbG93SWQ/OiBzdHJpbmcsXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgbWFwcGVkSW5wdXQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBuYW1lOiBzdWJmbG93TmFtZSwgc3ViZmxvd0lkLCBkZXNjcmlwdGlvbiwgdHJhdmVyc2FsQ29udGV4dCwgbWFwcGVkSW5wdXQgfTtcbiAgICBmb3IgKGNvbnN0IHIgb2YgdGhpcy5yZWNvcmRlcnMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHIub25TdWJmbG93RW50cnk/LihldmVudCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKVxuICAgICAgICAgIGNvbnNvbGUud2FybihgW2Zvb3RwcmludF0gRmxvd1JlY29yZGVyRGlzcGF0Y2hlcjogcmVjb3JkZXIgXCIke3IuaWR9XCIgdGhyZXcgaW4gb25TdWJmbG93RW50cnk6ICR7ZXJyfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uU3ViZmxvd0V4aXQoXG4gICAgc3ViZmxvd05hbWU6IHN0cmluZyxcbiAgICBzdWJmbG93SWQ/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgb3V0cHV0U3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBuYW1lOiBzdWJmbG93TmFtZSwgc3ViZmxvd0lkLCB0cmF2ZXJzYWxDb250ZXh0LCBvdXRwdXRTdGF0ZSB9O1xuICAgIGZvciAoY29uc3QgciBvZiB0aGlzLnJlY29yZGVycykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgci5vblN1YmZsb3dFeGl0Py4oZXZlbnQpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSlcbiAgICAgICAgICBjb25zb2xlLndhcm4oYFtmb290cHJpbnRdIEZsb3dSZWNvcmRlckRpc3BhdGNoZXI6IHJlY29yZGVyIFwiJHtyLmlkfVwiIHRocmV3IGluIG9uU3ViZmxvd0V4aXQ6ICR7ZXJyfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uU3ViZmxvd1JlZ2lzdGVyZWQoc3ViZmxvd0lkOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgZGVzY3JpcHRpb24/OiBzdHJpbmcsIHNwZWNTdHJ1Y3R1cmU/OiB1bmtub3duKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBzdWJmbG93SWQsIG5hbWUsIGRlc2NyaXB0aW9uLCBzcGVjU3RydWN0dXJlIH07XG4gICAgZm9yIChjb25zdCByIG9mIHRoaXMucmVjb3JkZXJzKSB7XG4gICAgICB0cnkge1xuICAgICAgICByLm9uU3ViZmxvd1JlZ2lzdGVyZWQ/LihldmVudCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKVxuICAgICAgICAgIGNvbnNvbGUud2FybihgW2Zvb3RwcmludF0gRmxvd1JlY29yZGVyRGlzcGF0Y2hlcjogcmVjb3JkZXIgXCIke3IuaWR9XCIgdGhyZXcgaW4gb25TdWJmbG93UmVnaXN0ZXJlZDogJHtlcnJ9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25Mb29wKHRhcmdldFN0YWdlOiBzdHJpbmcsIGl0ZXJhdGlvbjogbnVtYmVyLCBkZXNjcmlwdGlvbj86IHN0cmluZywgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQgPSB7IHRhcmdldDogdGFyZ2V0U3RhZ2UsIGl0ZXJhdGlvbiwgZGVzY3JpcHRpb24sIHRyYXZlcnNhbENvbnRleHQgfTtcbiAgICBmb3IgKGNvbnN0IHIgb2YgdGhpcy5yZWNvcmRlcnMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHIub25Mb29wPy4oZXZlbnQpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSkgY29uc29sZS53YXJuKGBbZm9vdHByaW50XSBGbG93UmVjb3JkZXJEaXNwYXRjaGVyOiByZWNvcmRlciBcIiR7ci5pZH1cIiB0aHJldyBpbiBvbkxvb3A6ICR7ZXJyfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQnJlYWsoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICAgIHByb3BhZ2F0ZWRGcm9tU3ViZmxvdz86IHN0cmluZyxcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50OiBGbG93QnJlYWtFdmVudCA9IHtcbiAgICAgIHN0YWdlTmFtZSxcbiAgICAgIC4uLih0cmF2ZXJzYWxDb250ZXh0ICYmIHsgdHJhdmVyc2FsQ29udGV4dCB9KSxcbiAgICAgIC4uLihyZWFzb24gIT09IHVuZGVmaW5lZCAmJiB7IHJlYXNvbiB9KSxcbiAgICAgIC4uLihwcm9wYWdhdGVkRnJvbVN1YmZsb3cgIT09IHVuZGVmaW5lZCAmJiB7IHByb3BhZ2F0ZWRGcm9tU3ViZmxvdyB9KSxcbiAgICB9O1xuICAgIGZvciAoY29uc3QgciBvZiB0aGlzLnJlY29yZGVycykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgci5vbkJyZWFrPy4oZXZlbnQpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSlcbiAgICAgICAgICBjb25zb2xlLndhcm4oYFtmb290cHJpbnRdIEZsb3dSZWNvcmRlckRpc3BhdGNoZXI6IHJlY29yZGVyIFwiJHtyLmlkfVwiIHRocmV3IGluIG9uQnJlYWs6ICR7ZXJyfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uRXJyb3Ioc3RhZ2VOYW1lOiBzdHJpbmcsIGVycm9yTWVzc2FnZTogc3RyaW5nLCBlcnJvcjogdW5rbm93biwgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3Qgc3RydWN0dXJlZEVycm9yID0gZXh0cmFjdEVycm9ySW5mbyhlcnJvcik7XG4gICAgY29uc3QgZXZlbnQgPSB7IHN0YWdlTmFtZSwgbWVzc2FnZTogZXJyb3JNZXNzYWdlLCBzdHJ1Y3R1cmVkRXJyb3IsIHRyYXZlcnNhbENvbnRleHQsIGNoYW5uZWw6ICdmbG93JyBhcyBjb25zdCB9O1xuICAgIGZvciAoY29uc3QgciBvZiB0aGlzLnJlY29yZGVycykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgci5vbkVycm9yPy4oZXZlbnQpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSlcbiAgICAgICAgICBjb25zb2xlLndhcm4oYFtmb290cHJpbnRdIEZsb3dSZWNvcmRlckRpc3BhdGNoZXI6IHJlY29yZGVyIFwiJHtyLmlkfVwiIHRocmV3IGluIG9uRXJyb3I6ICR7ZXJyfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uU3RhZ2VSZXRyeShcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBzdGFnZUlkOiBzdHJpbmcsXG4gICAgYXR0ZW1wdDogbnVtYmVyLFxuICAgIG1heEF0dGVtcHRzOiBudW1iZXIsXG4gICAgZGVsYXlNczogbnVtYmVyLFxuICAgIGVycm9yOiB1bmtub3duLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3Qgc3RydWN0dXJlZEVycm9yID0gZXh0cmFjdEVycm9ySW5mbyhlcnJvcik7XG4gICAgY29uc3QgZXZlbnQ6IEZsb3dTdGFnZVJldHJ5RXZlbnQgPSB7XG4gICAgICBzdGFnZU5hbWUsXG4gICAgICBzdGFnZUlkLFxuICAgICAgYXR0ZW1wdCxcbiAgICAgIG1heEF0dGVtcHRzLFxuICAgICAgZGVsYXlNcyxcbiAgICAgIG1lc3NhZ2U6IHN0cnVjdHVyZWRFcnJvci5tZXNzYWdlLFxuICAgICAgc3RydWN0dXJlZEVycm9yLFxuICAgICAgdHJhdmVyc2FsQ29udGV4dCxcbiAgICAgIGNoYW5uZWw6ICdmbG93JyBhcyBjb25zdCxcbiAgICB9O1xuICAgIGZvciAoY29uc3QgciBvZiB0aGlzLnJlY29yZGVycykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgci5vblN0YWdlUmV0cnk/LihldmVudCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKVxuICAgICAgICAgIGNvbnNvbGUud2FybihgW2Zvb3RwcmludF0gRmxvd1JlY29yZGVyRGlzcGF0Y2hlcjogcmVjb3JkZXIgXCIke3IuaWR9XCIgdGhyZXcgaW4gb25TdGFnZVJldHJ5OiAke2Vycn1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblBhdXNlKFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIHN0YWdlSWQ6IHN0cmluZyxcbiAgICBwYXVzZURhdGE6IHVua25vd24sXG4gICAgc3ViZmxvd1BhdGg6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQgPSB7IHN0YWdlTmFtZSwgc3RhZ2VJZCwgcGF1c2VEYXRhLCBzdWJmbG93UGF0aCwgdHJhdmVyc2FsQ29udGV4dCwgY2hhbm5lbDogJ2Zsb3cnIGFzIGNvbnN0IH07XG4gICAgZm9yIChjb25zdCByIG9mIHRoaXMucmVjb3JkZXJzKSB7XG4gICAgICB0cnkge1xuICAgICAgICByLm9uUGF1c2U/LihldmVudCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKVxuICAgICAgICAgIGNvbnNvbGUud2FybihgW2Zvb3RwcmludF0gRmxvd1JlY29yZGVyRGlzcGF0Y2hlcjogcmVjb3JkZXIgXCIke3IuaWR9XCIgdGhyZXcgaW4gb25QYXVzZTogJHtlcnJ9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25SZXN1bWUoc3RhZ2VOYW1lOiBzdHJpbmcsIHN0YWdlSWQ6IHN0cmluZywgaGFzSW5wdXQ6IGJvb2xlYW4sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBzdGFnZU5hbWUsIHN0YWdlSWQsIGhhc0lucHV0LCB0cmF2ZXJzYWxDb250ZXh0LCBjaGFubmVsOiAnZmxvdycgYXMgY29uc3QgfTtcbiAgICBmb3IgKGNvbnN0IHIgb2YgdGhpcy5yZWNvcmRlcnMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHIub25SZXN1bWU/LihldmVudCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKVxuICAgICAgICAgIGNvbnNvbGUud2FybihgW2Zvb3RwcmludF0gRmxvd1JlY29yZGVyRGlzcGF0Y2hlcjogcmVjb3JkZXIgXCIke3IuaWR9XCIgdGhyZXcgaW4gb25SZXN1bWU6ICR7ZXJyfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uUnVuU3RhcnQoaW5wdXQ6IHVua25vd24sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBwYXlsb2FkOiBpbnB1dCwgdHJhdmVyc2FsQ29udGV4dCB9O1xuICAgIGZvciAoY29uc3QgciBvZiB0aGlzLnJlY29yZGVycykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgci5vblJ1blN0YXJ0Py4oZXZlbnQpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSlcbiAgICAgICAgICBjb25zb2xlLndhcm4oYFtmb290cHJpbnRdIEZsb3dSZWNvcmRlckRpc3BhdGNoZXI6IHJlY29yZGVyIFwiJHtyLmlkfVwiIHRocmV3IGluIG9uUnVuU3RhcnQ6ICR7ZXJyfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uUnVuRW5kKG91dHB1dDogdW5rbm93biwgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQgPSB7IHBheWxvYWQ6IG91dHB1dCwgdHJhdmVyc2FsQ29udGV4dCB9O1xuICAgIGZvciAoY29uc3QgciBvZiB0aGlzLnJlY29yZGVycykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgci5vblJ1bkVuZD8uKGV2ZW50KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpXG4gICAgICAgICAgY29uc29sZS53YXJuKGBbZm9vdHByaW50XSBGbG93UmVjb3JkZXJEaXNwYXRjaGVyOiByZWNvcmRlciBcIiR7ci5pZH1cIiB0aHJldyBpbiBvblJ1bkVuZDogJHtlcnJ9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25SdW5GYWlsZWQoZXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm8sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBzdHJ1Y3R1cmVkRXJyb3I6IGVycm9yLCB0cmF2ZXJzYWxDb250ZXh0IH07XG4gICAgZm9yIChjb25zdCByIG9mIHRoaXMucmVjb3JkZXJzKSB7XG4gICAgICB0cnkge1xuICAgICAgICByLm9uUnVuRmFpbGVkPy4oZXZlbnQpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChpc0Rldk1vZGUoKSlcbiAgICAgICAgICBjb25zb2xlLndhcm4oYFtmb290cHJpbnRdIEZsb3dSZWNvcmRlckRpc3BhdGNoZXI6IHJlY29yZGVyIFwiJHtyLmlkfVwiIHRocmV3IGluIG9uUnVuRmFpbGVkOiAke2Vycn1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBzZW50ZW5jZXMgZnJvbSBhbiBhdHRhY2hlZCBOYXJyYXRpdmVGbG93UmVjb3JkZXIgKGxvb2tlZCB1cCBieSBJRCkuXG4gICAqIENhbGxlcnMgdGhhdCBuZWVkIHNlbnRlbmNlcyBzaG91bGQgYXR0YWNoIGEgTmFycmF0aXZlRmxvd1JlY29yZGVyIHdpdGggaWQgJ25hcnJhdGl2ZSdcbiAgICogYW5kIHJldHJpZXZlIGl0IGRpcmVjdGx5IHZpYSBnZXRSZWNvcmRlckJ5SWQoKSBpZiB0aGV5IG5lZWQgdHlwZWQgYWNjZXNzLlxuICAgKi9cbiAgZ2V0U2VudGVuY2VzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBuYXJyYXRpdmUgPSB0aGlzLmdldFJlY29yZGVyQnlJZDxOYXJyYXRpdmVGbG93UmVjb3JkZXI+KCduYXJyYXRpdmUnKTtcbiAgICByZXR1cm4gbmFycmF0aXZlPy5nZXRTZW50ZW5jZXMoKSA/PyBbXTtcbiAgfVxufVxuIl19
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd1JlY29yZGVyRGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL25hcnJhdGl2ZS9GbG93UmVjb3JkZXJEaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBR0gsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVkxRCxtR0FBbUc7QUFDbkcsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFFN0QsTUFBTSxPQUFPLHNCQUFzQjtJQUN6QixTQUFTLEdBQW1CLEVBQUUsQ0FBQztJQUV2QyxzRkFBc0Y7SUFDdEYsTUFBTSxDQUFDLFFBQXNCO1FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxrREFBa0Q7SUFDbEQsTUFBTSxDQUFDLEVBQVU7UUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxzREFBc0Q7SUFDdEQsaUJBQWlCO1FBQ2YsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxrR0FBa0c7SUFDbEcsZUFBZSxDQUF3QyxFQUFVO1FBQy9ELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFrQixDQUFDO0lBQ2xFLENBQUM7SUFFRCw2RUFBNkU7SUFFN0UsZUFB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LEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFlLEVBQUUsZ0JBQW1DO1FBQzNELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU87UUFDeEMsTUFBTSxLQUFLLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQTBCLEVBQUUsZ0JBQW1DO1FBQ3pFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU87UUFDeEMsTUFBTSxLQUFLLEdBQUcsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQVk7UUFDVixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUF3QixXQUFXLENBQUMsQ0FBQztRQUMzRSxPQUFPLFNBQVMsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDekMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGbG93UmVjb3JkZXJEaXNwYXRjaGVyIOKAlCBGYW5zIG91dCBjb250cm9sIGZsb3cgZXZlbnRzIHRvIE4gYXR0YWNoZWQgRmxvd1JlY29yZGVycy5cbiAqXG4gKiBJbXBsZW1lbnRzIElDb250cm9sRmxvd05hcnJhdGl2ZSBzbyBpdCBjYW4gcmVwbGFjZSB0aGUgc2luZ2xlXG4gKiBDb250cm9sRmxvd05hcnJhdGl2ZUdlbmVyYXRvciBpbiB0aGUgdHJhdmVyc2VyJ3MgSGFuZGxlckRlcHMuXG4gKlxuICogRXZlcnkgZXZlbnQgZ29lcyB0aHJvdWdoIGByZWNvcmRlci9ob29rcy50cyDCtyBmaXJlYCAodGhlIG9uZSBwZXItcmVjb3JkZXIgbG9vcCk6IGEgZmFpbGluZ1xuICogcmVjb3JkZXIgaXMgd2FybmVkIGFib3V0IGluIGRldiBtb2RlIGFuZCBuZXZlciBicmVha3MgZXhlY3V0aW9uIOKAlCBldmVuIHdoZW4gd2hhdCBpdCB0aHJld1xuICogY2Fubm90IGJlIHR1cm5lZCBpbnRvIGEgc3RyaW5nLlxuICpcbiAqIFdoZW4gbm8gcmVjb3JkZXJzIGFyZSBhdHRhY2hlZCwgZXZlcnkgbWV0aG9kIGlzIGEgZmFzdCBuby1vcCAoZW1wdHkgYXJyYXkgY2hlY2spLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRGVjaXNpb25FdmlkZW5jZSwgU2VsZWN0aW9uRXZpZGVuY2UgfSBmcm9tICcuLi8uLi9kZWNpZGUvdHlwZXMuanMnO1xuaW1wb3J0IHsgZmlyZSwgd2FybkluRGV2TW9kZSB9IGZyb20gJy4uLy4uL3JlY29yZGVyL2hvb2tzLmpzJztcbmltcG9ydCB0eXBlIHsgU3RydWN0dXJlZEVycm9ySW5mbyB9IGZyb20gJy4uL2Vycm9ycy9lcnJvckluZm8uanMnO1xuaW1wb3J0IHsgZXh0cmFjdEVycm9ySW5mbyB9IGZyb20gJy4uL2Vycm9ycy9lcnJvckluZm8uanMnO1xuaW1wb3J0IHR5cGUgeyBOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL05hcnJhdGl2ZUZsb3dSZWNvcmRlci5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEZsb3dCcmVha0V2ZW50LFxuICBGbG93UmVjb3JkZXIsXG4gIEZsb3dTdGFnZUV2ZW50LFxuICBGbG93U3RhZ2VSZXRyeUV2ZW50LFxuICBJQ29udHJvbEZsb3dOYXJyYXRpdmUsXG4gIFN0YWdlVHlwZSxcbiAgVHJhdmVyc2FsQ29udGV4dCxcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKiBUaGUgZmxvdyBjaGFubmVsJ3MgaXNvbGF0aW9uOiBhIHRocm93aW5nIHJlY29yZGVyIGlzIHdhcm5lZCBhYm91dCBpbiBkZXYgbW9kZSwgdGhlbiBza2lwcGVkLiAqL1xuY29uc3QgRkxPV19GQUlMVVJFID0gd2FybkluRGV2TW9kZSgnRmxvd1JlY29yZGVyRGlzcGF0Y2hlcicpO1xuXG5leHBvcnQgY2xhc3MgRmxvd1JlY29yZGVyRGlzcGF0Y2hlciBpbXBsZW1lbnRzIElDb250cm9sRmxvd05hcnJhdGl2ZSB7XG4gIHByaXZhdGUgcmVjb3JkZXJzOiBGbG93UmVjb3JkZXJbXSA9IFtdO1xuXG4gIC8qKiBBdHRhY2ggYSBGbG93UmVjb3JkZXIuIER1cGxpY2F0ZSBJRHMgYXJlIGFsbG93ZWQgKHNhbWUgYXMgc2NvcGUgU2NvcGVSZWNvcmRlcikuICovXG4gIGF0dGFjaChyZWNvcmRlcjogRmxvd1JlY29yZGVyKTogdm9pZCB7XG4gICAgdGhpcy5yZWNvcmRlcnMucHVzaChyZWNvcmRlcik7XG4gIH1cblxuICAvKiogRGV0YWNoIGFsbCBGbG93UmVjb3JkZXJzIHdpdGggdGhlIGdpdmVuIElELiAqL1xuICBkZXRhY2goaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucmVjb3JkZXJzID0gdGhpcy5yZWNvcmRlcnMuZmlsdGVyKChyKSA9PiByLmlkICE9PSBpZCk7XG4gIH1cblxuICAvKiogUmV0dXJucyBhIGRlZmVuc2l2ZSBjb3B5IG9mIGF0dGFjaGVkIHJlY29yZGVycy4gKi9cbiAgZ2V0U2NvcGVSZWNvcmRlcnMoKTogRmxvd1JlY29yZGVyW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5yZWNvcmRlcnNdO1xuICB9XG5cbiAgLyoqIEZpbmQgYSByZWNvcmRlciBieSBJRC4gVXNlZnVsIGZvciByZXRyaWV2aW5nIGJ1aWx0LWluIHJlY29yZGVycyBsaWtlIE5hcnJhdGl2ZUZsb3dSZWNvcmRlci4gKi9cbiAgZ2V0UmVjb3JkZXJCeUlkPFQgZXh0ZW5kcyBGbG93UmVjb3JkZXIgPSBGbG93UmVjb3JkZXI+KGlkOiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZWNvcmRlcnMuZmluZCgocikgPT4gci5pZCA9PT0gaWQpIGFzIFQgfCB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyDilIDilIAgSUNvbnRyb2xGbG93TmFycmF0aXZlIGltcGxlbWVudGF0aW9uIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIG9uU3RhZ2VFeGVjdXRlZChcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIHRyYXZlcnNhbENvbnRleHQ6IFRyYXZlcnNhbENvbnRleHQgfCB1bmRlZmluZWQsXG4gICAgc3RhZ2VUeXBlOiBTdGFnZVR5cGUsXG4gICk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBldmVudDogRmxvd1N0YWdlRXZlbnQgPSB7IHN0YWdlTmFtZSwgZGVzY3JpcHRpb24sIHRyYXZlcnNhbENvbnRleHQsIHN0YWdlVHlwZSB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvblN0YWdlRXhlY3V0ZWQnLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uTmV4dChmcm9tU3RhZ2U6IHN0cmluZywgdG9TdGFnZTogc3RyaW5nLCBkZXNjcmlwdGlvbj86IHN0cmluZywgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQgPSB7IGZyb206IGZyb21TdGFnZSwgdG86IHRvU3RhZ2UsIGRlc2NyaXB0aW9uLCB0cmF2ZXJzYWxDb250ZXh0IH07XG4gICAgZmlyZSh0aGlzLnJlY29yZGVycywgJ29uTmV4dCcsIGV2ZW50LCBGTE9XX0ZBSUxVUkUpO1xuICB9XG5cbiAgb25EZWNpc2lvbihcbiAgICBkZWNpZGVyTmFtZTogc3RyaW5nLFxuICAgIGNob3NlbkJyYW5jaDogc3RyaW5nLFxuICAgIHJhdGlvbmFsZT86IHN0cmluZyxcbiAgICBkZWNpZGVyRGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgZXZpZGVuY2U/OiBEZWNpc2lvbkV2aWRlbmNlLFxuICApOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBkZWNpZGVyOiBkZWNpZGVyTmFtZSxcbiAgICAgIGNob3NlbjogY2hvc2VuQnJhbmNoLFxuICAgICAgcmF0aW9uYWxlLFxuICAgICAgZGVzY3JpcHRpb246IGRlY2lkZXJEZXNjcmlwdGlvbixcbiAgICAgIHRyYXZlcnNhbENvbnRleHQsXG4gICAgICBldmlkZW5jZSxcbiAgICB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvbkRlY2lzaW9uJywgZXZlbnQsIEZMT1dfRkFJTFVSRSk7XG4gIH1cblxuICBvbkZvcmsocGFyZW50U3RhZ2U6IHN0cmluZywgY2hpbGROYW1lczogc3RyaW5nW10sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBwYXJlbnQ6IHBhcmVudFN0YWdlLCBjaGlsZHJlbjogY2hpbGROYW1lcywgdHJhdmVyc2FsQ29udGV4dCB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvbkZvcmsnLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uU2VsZWN0ZWQoXG4gICAgcGFyZW50U3RhZ2U6IHN0cmluZyxcbiAgICBzZWxlY3RlZE5hbWVzOiBzdHJpbmdbXSxcbiAgICB0b3RhbENvdW50OiBudW1iZXIsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgZXZpZGVuY2U/OiBTZWxlY3Rpb25FdmlkZW5jZSxcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBwYXJlbnQ6IHBhcmVudFN0YWdlLCBzZWxlY3RlZDogc2VsZWN0ZWROYW1lcywgdG90YWw6IHRvdGFsQ291bnQsIHRyYXZlcnNhbENvbnRleHQsIGV2aWRlbmNlIH07XG4gICAgZmlyZSh0aGlzLnJlY29yZGVycywgJ29uU2VsZWN0ZWQnLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uU3ViZmxvd0VudHJ5KFxuICAgIHN1YmZsb3dOYW1lOiBzdHJpbmcsXG4gICAgc3ViZmxvd0lkPzogc3RyaW5nLFxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICAgIG1hcHBlZElucHV0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBldmVudCA9IHsgbmFtZTogc3ViZmxvd05hbWUsIHN1YmZsb3dJZCwgZGVzY3JpcHRpb24sIHRyYXZlcnNhbENvbnRleHQsIG1hcHBlZElucHV0IH07XG4gICAgZmlyZSh0aGlzLnJlY29yZGVycywgJ29uU3ViZmxvd0VudHJ5JywgZXZlbnQsIEZMT1dfRkFJTFVSRSk7XG4gIH1cblxuICBvblN1YmZsb3dFeGl0KFxuICAgIHN1YmZsb3dOYW1lOiBzdHJpbmcsXG4gICAgc3ViZmxvd0lkPzogc3RyaW5nLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICAgIG91dHB1dFN0YXRlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBldmVudCA9IHsgbmFtZTogc3ViZmxvd05hbWUsIHN1YmZsb3dJZCwgdHJhdmVyc2FsQ29udGV4dCwgb3V0cHV0U3RhdGUgfTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25TdWJmbG93RXhpdCcsIGV2ZW50LCBGTE9XX0ZBSUxVUkUpO1xuICB9XG5cbiAgb25TdWJmbG93UmVnaXN0ZXJlZChzdWJmbG93SWQ6IHN0cmluZywgbmFtZTogc3RyaW5nLCBkZXNjcmlwdGlvbj86IHN0cmluZywgc3BlY1N0cnVjdHVyZT86IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQgPSB7IHN1YmZsb3dJZCwgbmFtZSwgZGVzY3JpcHRpb24sIHNwZWNTdHJ1Y3R1cmUgfTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25TdWJmbG93UmVnaXN0ZXJlZCcsIGV2ZW50LCBGTE9XX0ZBSUxVUkUpO1xuICB9XG5cbiAgb25Mb29wKHRhcmdldFN0YWdlOiBzdHJpbmcsIGl0ZXJhdGlvbjogbnVtYmVyLCBkZXNjcmlwdGlvbj86IHN0cmluZywgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQgPSB7IHRhcmdldDogdGFyZ2V0U3RhZ2UsIGl0ZXJhdGlvbiwgZGVzY3JpcHRpb24sIHRyYXZlcnNhbENvbnRleHQgfTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25Mb29wJywgZXZlbnQsIEZMT1dfRkFJTFVSRSk7XG4gIH1cblxuICBvbkJyZWFrKFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgICBwcm9wYWdhdGVkRnJvbVN1YmZsb3c/OiBzdHJpbmcsXG4gICk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBldmVudDogRmxvd0JyZWFrRXZlbnQgPSB7XG4gICAgICBzdGFnZU5hbWUsXG4gICAgICAuLi4odHJhdmVyc2FsQ29udGV4dCAmJiB7IHRyYXZlcnNhbENvbnRleHQgfSksXG4gICAgICAuLi4ocmVhc29uICE9PSB1bmRlZmluZWQgJiYgeyByZWFzb24gfSksXG4gICAgICAuLi4ocHJvcGFnYXRlZEZyb21TdWJmbG93ICE9PSB1bmRlZmluZWQgJiYgeyBwcm9wYWdhdGVkRnJvbVN1YmZsb3cgfSksXG4gICAgfTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25CcmVhaycsIGV2ZW50LCBGTE9XX0ZBSUxVUkUpO1xuICB9XG5cbiAgb25FcnJvcihzdGFnZU5hbWU6IHN0cmluZywgZXJyb3JNZXNzYWdlOiBzdHJpbmcsIGVycm9yOiB1bmtub3duLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBzdHJ1Y3R1cmVkRXJyb3IgPSBleHRyYWN0RXJyb3JJbmZvKGVycm9yKTtcbiAgICBjb25zdCBldmVudCA9IHsgc3RhZ2VOYW1lLCBtZXNzYWdlOiBlcnJvck1lc3NhZ2UsIHN0cnVjdHVyZWRFcnJvciwgdHJhdmVyc2FsQ29udGV4dCwgY2hhbm5lbDogJ2Zsb3cnIGFzIGNvbnN0IH07XG4gICAgZmlyZSh0aGlzLnJlY29yZGVycywgJ29uRXJyb3InLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uU3RhZ2VSZXRyeShcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBzdGFnZUlkOiBzdHJpbmcsXG4gICAgYXR0ZW1wdDogbnVtYmVyLFxuICAgIG1heEF0dGVtcHRzOiBudW1iZXIsXG4gICAgZGVsYXlNczogbnVtYmVyLFxuICAgIGVycm9yOiB1bmtub3duLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3Qgc3RydWN0dXJlZEVycm9yID0gZXh0cmFjdEVycm9ySW5mbyhlcnJvcik7XG4gICAgY29uc3QgZXZlbnQ6IEZsb3dTdGFnZVJldHJ5RXZlbnQgPSB7XG4gICAgICBzdGFnZU5hbWUsXG4gICAgICBzdGFnZUlkLFxuICAgICAgYXR0ZW1wdCxcbiAgICAgIG1heEF0dGVtcHRzLFxuICAgICAgZGVsYXlNcyxcbiAgICAgIG1lc3NhZ2U6IHN0cnVjdHVyZWRFcnJvci5tZXNzYWdlLFxuICAgICAgc3RydWN0dXJlZEVycm9yLFxuICAgICAgdHJhdmVyc2FsQ29udGV4dCxcbiAgICAgIGNoYW5uZWw6ICdmbG93JyBhcyBjb25zdCxcbiAgICB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvblN0YWdlUmV0cnknLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uUGF1c2UoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgc3RhZ2VJZDogc3RyaW5nLFxuICAgIHBhdXNlRGF0YTogdW5rbm93bixcbiAgICBzdWJmbG93UGF0aDogcmVhZG9ubHkgc3RyaW5nW10sXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBldmVudCA9IHsgc3RhZ2VOYW1lLCBzdGFnZUlkLCBwYXVzZURhdGEsIHN1YmZsb3dQYXRoLCB0cmF2ZXJzYWxDb250ZXh0LCBjaGFubmVsOiAnZmxvdycgYXMgY29uc3QgfTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25QYXVzZScsIGV2ZW50LCBGTE9XX0ZBSUxVUkUpO1xuICB9XG5cbiAgb25SZXN1bWUoc3RhZ2VOYW1lOiBzdHJpbmcsIHN0YWdlSWQ6IHN0cmluZywgaGFzSW5wdXQ6IGJvb2xlYW4sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBzdGFnZU5hbWUsIHN0YWdlSWQsIGhhc0lucHV0LCB0cmF2ZXJzYWxDb250ZXh0LCBjaGFubmVsOiAnZmxvdycgYXMgY29uc3QgfTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25SZXN1bWUnLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uUnVuU3RhcnQoaW5wdXQ6IHVua25vd24sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBwYXlsb2FkOiBpbnB1dCwgdHJhdmVyc2FsQ29udGV4dCB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvblJ1blN0YXJ0JywgZXZlbnQsIEZMT1dfRkFJTFVSRSk7XG4gIH1cblxuICBvblJ1bkVuZChvdXRwdXQ6IHVua25vd24sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBwYXlsb2FkOiBvdXRwdXQsIHRyYXZlcnNhbENvbnRleHQgfTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25SdW5FbmQnLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uUnVuRmFpbGVkKGVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBldmVudCA9IHsgc3RydWN0dXJlZEVycm9yOiBlcnJvciwgdHJhdmVyc2FsQ29udGV4dCB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvblJ1bkZhaWxlZCcsIGV2ZW50LCBGTE9XX0ZBSUxVUkUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgc2VudGVuY2VzIGZyb20gYW4gYXR0YWNoZWQgTmFycmF0aXZlRmxvd1JlY29yZGVyIChsb29rZWQgdXAgYnkgSUQpLlxuICAgKiBDYWxsZXJzIHRoYXQgbmVlZCBzZW50ZW5jZXMgc2hvdWxkIGF0dGFjaCBhIE5hcnJhdGl2ZUZsb3dSZWNvcmRlciB3aXRoIGlkICduYXJyYXRpdmUnXG4gICAqIGFuZCByZXRyaWV2ZSBpdCBkaXJlY3RseSB2aWEgZ2V0UmVjb3JkZXJCeUlkKCkgaWYgdGhleSBuZWVkIHR5cGVkIGFjY2Vzcy5cbiAgICovXG4gIGdldFNlbnRlbmNlcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbmFycmF0aXZlID0gdGhpcy5nZXRSZWNvcmRlckJ5SWQ8TmFycmF0aXZlRmxvd1JlY29yZGVyPignbmFycmF0aXZlJyk7XG4gICAgcmV0dXJuIG5hcnJhdGl2ZT8uZ2V0U2VudGVuY2VzKCkgPz8gW107XG4gIH1cbn1cbiJdfQ==
|
|
@@ -426,13 +426,5 @@ export interface FlowRecorder {
|
|
|
426
426
|
/** Called before each run to reset per-run state. Implement for stateful recorders. */
|
|
427
427
|
clear?(): void;
|
|
428
428
|
/** Optional: expose collected data for inclusion in snapshots. */
|
|
429
|
-
toSnapshot?():
|
|
430
|
-
name: string;
|
|
431
|
-
description?: string;
|
|
432
|
-
preferredOperation?: 'translate' | 'accumulate' | 'aggregate';
|
|
433
|
-
data: unknown;
|
|
434
|
-
/** Machine-readable facts about the bundle itself — see
|
|
435
|
-
* {@link import('../../runner/ExecutionRuntime.js').RecorderSnapshot.meta}. */
|
|
436
|
-
meta?: Readonly<Record<string, unknown>>;
|
|
437
|
-
};
|
|
429
|
+
toSnapshot?(): import('../../recorder/snapshot.js').RecorderBundle;
|
|
438
430
|
}
|
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
9
|
export {};
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSUNvbnRyb2xGbG93TmFycmF0aXZlIOKAlCBJbnRlcmZhY2UgZm9yIGNvbnRyb2wgZmxvdyBuYXJyYXRpdmUgZ2VuZXJhdGlvbi5cbiAqXG4gKiBDYXB0dXJlcyBGTE9XIGV2ZW50cyBkdXJpbmcgdHJhdmVyc2FsOiBkZWNpc2lvbnMsIGZvcmtzLCBsb29wcywgc3ViZmxvd3MuXG4gKiBDb21wbGVtZW50YXJ5IHRvIHNjb3BlL3JlY29yZGVycy9OYXJyYXRpdmVSZWNvcmRlciB3aGljaCBjYXB0dXJlcyBEQVRBIGV2ZW50cy5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBEZWNpc2lvbkV2aWRlbmNlLCBTZWxlY3Rpb25FdmlkZW5jZSB9IGZyb20gJy4uLy4uL2RlY2lkZS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0cnVjdHVyZWRFcnJvckluZm8gfSBmcm9tICcuLi9lcnJvcnMvZXJyb3JJbmZvLmpzJztcblxuLyoqXG4gKlxuICogVXNlcyBOdWxsIE9iamVjdCBwYXR0ZXJuOiBOdWxsQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3Igc2F0aXNmaWVzIHRoaXNcbiAqIGludGVyZmFjZSB3aXRoIGVtcHR5IG1ldGhvZHMgZm9yIHplcm8tY29zdCBkaXNhYmxlZCBwYXRoLlxuICovXG5cbi8qKlxuICogVGhlIGtpbmQgb2Ygc3RhZ2UgdGhhdCBjb21wbGV0ZWQuIExldHMgY29uc3VtZXJzIHJvdXRlIHVuaWZvcm1cbiAqIFwiZGlkIHRoaXMgc3RhZ2UgZXhlY3V0ZVwiIGhhbmRsaW5nIHdpdGhvdXQgYSBzaWRlLXRhYmxlIGxvb2t1cCBpbnRvXG4gKiB0aGUgY2hhcnQgc3BlYy4gUmVxdWlyZWQgb24gZXZlcnkgYG9uU3RhZ2VFeGVjdXRlZGAgZXZlbnQgc2luY2VcbiAqIHByb3Bvc2FsICMwMDMgdW5pZmllZCB0aGUgZXZlbnQgdG8gZmlyZSBmb3IgQUxMIHN0YWdlIGtpbmRzLlxuICovXG5leHBvcnQgdHlwZSBTdGFnZVR5cGUgPSAnbGluZWFyJyB8ICdkZWNpZGVyJyB8ICdmb3JrJyB8ICdzZWxlY3RvcicgfCAnc3ViZmxvdy1tb3VudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRyb2xGbG93TmFycmF0aXZlIHtcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGEgc3RhZ2UgY29tcGxldGVzIGl0cyBtYWluIHdvcmsuIEZpcmVzIGZvciBBTEwgc3RhZ2VcbiAgICoga2luZHMgKGAnbGluZWFyJ2AsIGAnZGVjaWRlcidgLCBgJ2ZvcmsnYCwgYCdzZWxlY3RvcidgLCBgJ3N1YmZsb3ctbW91bnQnYClcbiAgICogQUZURVIgdGhlIGNvcnJlc3BvbmRpbmcgc3BlY2lhbGl6ZWQgZXZlbnQgKGBvbkRlY2lzaW9uYCwgYG9uRm9ya2AsXG4gICAqIGBvblNlbGVjdGVkYCwgYG9uU3ViZmxvd0VudHJ5YCkuIEZvciBsaW5lYXIgc3RhZ2VzLCBmaXJlcyBhZnRlclxuICAgKiB0aGUgc3RhZ2UgZnVuY3Rpb24gcmV0dXJucy5cbiAgICpcbiAgICogQ29uc3VtZXJzIHRyYWNraW5nIFwiZGlkIHRoaXMgc3RhZ2UgcnVuP1wiIHVzZSB0aGlzIGV2ZW50IHVuaWZvcm1seVxuICAgKiBhbmQgc3dpdGNoIG9uIGBzdGFnZVR5cGVgIGZvciBraW5kLXNwZWNpZmljIHdvcmsuXG4gICAqL1xuICBvblN0YWdlRXhlY3V0ZWQoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgZGVzY3JpcHRpb246IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICB0cmF2ZXJzYWxDb250ZXh0OiBUcmF2ZXJzYWxDb250ZXh0IHwgdW5kZWZpbmVkLFxuICAgIHN0YWdlVHlwZTogU3RhZ2VUeXBlLFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgb24gbGluZWFyIGNvbnRpbnVhdGlvbiBmcm9tIG9uZSBzdGFnZSB0byB0aGUgbmV4dC4gKi9cbiAgb25OZXh0KGZyb21TdGFnZTogc3RyaW5nLCB0b1N0YWdlOiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGEgZGVjaWRlciBzZWxlY3RzIGEgYnJhbmNoLiBNb3N0IHZhbHVhYmxlIGZvciBMTE0gY29udGV4dC4gKi9cbiAgb25EZWNpc2lvbihcbiAgICBkZWNpZGVyTmFtZTogc3RyaW5nLFxuICAgIGNob3NlbkJyYW5jaDogc3RyaW5nLFxuICAgIHJhdGlvbmFsZT86IHN0cmluZyxcbiAgICBkZWNpZGVyRGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgZXZpZGVuY2U/OiBEZWNpc2lvbkV2aWRlbmNlLFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBhIGZvcmsgZXhlY3V0ZXMgYWxsIGNoaWxkcmVuIGluIHBhcmFsbGVsLiAqL1xuICBvbkZvcmsocGFyZW50U3RhZ2U6IHN0cmluZywgY2hpbGROYW1lczogc3RyaW5nW10sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBzZWxlY3RvciBwaWNrcyBhIHN1YnNldCBvZiBjaGlsZHJlbi4gKi9cbiAgb25TZWxlY3RlZChcbiAgICBwYXJlbnRTdGFnZTogc3RyaW5nLFxuICAgIHNlbGVjdGVkTmFtZXM6IHN0cmluZ1tdLFxuICAgIHRvdGFsQ291bnQ6IG51bWJlcixcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgICBldmlkZW5jZT86IFNlbGVjdGlvbkV2aWRlbmNlLFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBlbnRlcmluZyBhIHN1YmZsb3cgKG5lc3RlZCBjb250ZXh0IGJvdW5kYXJ5KS4gKi9cbiAgb25TdWJmbG93RW50cnkoXG4gICAgc3ViZmxvd05hbWU6IHN0cmluZyxcbiAgICBzdWJmbG93SWQ/OiBzdHJpbmcsXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgbWFwcGVkSW5wdXQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gZXhpdGluZyBhIHN1YmZsb3cuICovXG4gIG9uU3ViZmxvd0V4aXQoXG4gICAgc3ViZmxvd05hbWU6IHN0cmluZyxcbiAgICBzdWJmbG93SWQ/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgb3V0cHV0U3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBkeW5hbWljIHN1YmZsb3cgaXMgcmVnaXN0ZXJlZCBkdXJpbmcgdHJhdmVyc2FsLiAqL1xuICBvblN1YmZsb3dSZWdpc3RlcmVkKHN1YmZsb3dJZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nLCBzcGVjU3RydWN0dXJlPzogdW5rbm93bik6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCBvbiBsb29wIGl0ZXJhdGlvbiAoYmFjay1lZGdlIHRyYXZlcnNhbCkuICovXG4gIG9uTG9vcCh0YXJnZXRTdGFnZTogc3RyaW5nLCBpdGVyYXRpb246IG51bWJlciwgZGVzY3JpcHRpb24/OiBzdHJpbmcsIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYSBzdGFnZSB0cmlnZ2VycyBicmVhayAoZWFybHkgdGVybWluYXRpb24pLlxuICAgKlxuICAgKiBAcGFyYW0gcmVhc29uIC0gT3B0aW9uYWwgc3RyaW5nIHBhc3NlZCB0byBgc2NvcGUuJGJyZWFrKHJlYXNvbilgLlxuICAgKiBAcGFyYW0gcHJvcGFnYXRlZEZyb21TdWJmbG93IC0gV2hlbiBzZXQsIHRoaXMgYnJlYWsgd2FzIHJhaXNlZCBvbiB0aGVcbiAgICogICBwYXJlbnQgYmVjYXVzZSBhbiBpbm5lciBzdWJmbG93ICh0aGlzIGlkKSBicm9rZSB3aXRoIGBwcm9wYWdhdGVCcmVha2BcbiAgICogICBlbmFibGVkLiBVc2VkIGJ5IHJlY29yZGVycyB0byBkaXN0aW5ndWlzaCBvcmlnaW5hdGluZyB2cyBwcm9wYWdhdGVkXG4gICAqICAgYnJlYWtzIGFuZCByZW5kZXIgdGhlbSBhY2NvcmRpbmdseS5cbiAgICovXG4gIG9uQnJlYWsoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICAgIHByb3BhZ2F0ZWRGcm9tU3ViZmxvdz86IHN0cmluZyxcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBzdGFnZSB0aHJvd3MgYW4gZXJyb3IuIFJhdyBlcnJvciBpcyBleHRyYWN0ZWQgaW50byBzdHJ1Y3R1cmVkIGRldGFpbHMuICovXG4gIG9uRXJyb3Ioc3RhZ2VOYW1lOiBzdHJpbmcsIGVycm9yTWVzc2FnZTogc3RyaW5nLCBlcnJvcjogdW5rbm93biwgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhbiBhdHRlbXB0IGF0IGEgc3RhZ2Ugd2l0aCBhIGRlY2xhcmVkIGByZXRyeWAgcG9saWN5IGZhaWxlZFxuICAgKiBBTkQgYW5vdGhlciBhdHRlbXB0IHdpbGwgcnVuLiBGaXJlcyBhZnRlciB0aGUgZmFpbGVkIGF0dGVtcHQncyBzdGFnZWRcbiAgICogd3JpdGVzIGFyZSBkaXNjYXJkZWQgYW5kIEJFRk9SRSB0aGUgYmFja29mZiB3YWl0LCBzbyBhIGxpdmUgbW9uaXRvciBsZWFybnNcbiAgICogXCJyZXRyeWluZyBpbiA1MDAgbXNcIiB3aGVuIHRoZSBkZWNpc2lvbiBpcyBtYWRlLCBub3QgYWZ0ZXIgdGhlIHdhaXQuXG4gICAqXG4gICAqIEV2ZW50IGFyaXRobWV0aWM6IGFuIGV4aGF1c3RlZCBwb2xpY3kgZmlyZXMgYGF0dGVtcHRzIC0gMWAgb2YgdGhlc2UgYW5kXG4gICAqIHRoZW4gb25lIGBvbkVycm9yYDsgYSBgcmV0cnlPbmAgdGhhdCBkZWNsaW5lcyBmaXJlcyBaRVJPIG9mIHRoZXNlIGFuZCBvbmVcbiAgICogYG9uRXJyb3JgLiBUaGUgZmluYWwgYXR0ZW1wdCBuZXZlciBmaXJlcyB0aGlzIGV2ZW50LlxuICAgKi9cbiAgb25TdGFnZVJldHJ5KFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIHN0YWdlSWQ6IHN0cmluZyxcbiAgICBhdHRlbXB0OiBudW1iZXIsXG4gICAgbWF4QXR0ZW1wdHM6IG51bWJlcixcbiAgICBkZWxheU1zOiBudW1iZXIsXG4gICAgZXJyb3I6IHVua25vd24sXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGEgcGF1c2FibGUgc3RhZ2UgcGF1c2VzIGV4ZWN1dGlvbi4gKi9cbiAgb25QYXVzZShcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBzdGFnZUlkOiBzdHJpbmcsXG4gICAgcGF1c2VEYXRhOiB1bmtub3duLFxuICAgIHN1YmZsb3dQYXRoOiByZWFkb25seSBzdHJpbmdbXSxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBwYXVzZWQgc3RhZ2UgaXMgcmVzdW1lZC4gKi9cbiAgb25SZXN1bWUoc3RhZ2VOYW1lOiBzdHJpbmcsIHN0YWdlSWQ6IHN0cmluZywgaGFzSW5wdXQ6IGJvb2xlYW4sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIHRvcC1sZXZlbCBgZXhlY3V0b3IucnVuKClgLCBCRUZPUkUgdGhlIGZpcnN0IHN0YWdlIGV4ZWN1dGVzLlxuICAgKiBgaW5wdXRgIGlzIHRoZSB2YWx1ZSBwYXNzZWQgdmlhIGBydW4oe2lucHV0fSlgIChhZnRlciBzY2hlbWEgdmFsaWRhdGlvbikuXG4gICAqIFN1YmZsb3ctdHJhdmVyc2VycyBkbyBOT1QgZmlyZSB0aGlzIGV2ZW50IOKAlCB0aGV5IGZpcmUgYG9uU3ViZmxvd0VudHJ5YC5cbiAgICovXG4gIG9uUnVuU3RhcnQoaW5wdXQ6IHVua25vd24sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIHRvcC1sZXZlbCBgZXhlY3V0b3IucnVuKClgLCBBRlRFUiB0aGUgbGFzdCBzdGFnZSBjb21taXRzLlxuICAgKiBgb3V0cHV0YCBpcyB0aGUgdmFsdWUgdGhlIGNoYXJ0IHJldHVybmVkLiBOT1QgZmlyZWQgb24gcGF1c2UgKHRoZSBydW5cbiAgICogZGlkbid0IGVuZDsgaXQgc3VzcGVuZGVkKSBvciBvbiB1bmNhdWdodCBlcnJvci4gU3ViZmxvdy10cmF2ZXJzZXJzIGRvXG4gICAqIE5PVCBmaXJlIHRoaXMgZXZlbnQg4oCUIHRoZXkgZmlyZSBgb25TdWJmbG93RXhpdGAuXG4gICAqL1xuICBvblJ1bkVuZChvdXRwdXQ6IHVua25vd24sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIHRvcC1sZXZlbCBgZXhlY3V0b3IucnVuKClgIHdoZW4gdHJhdmVyc2FsIHRocm93cyBhXG4gICAqIE5PTi1wYXVzZSBlcnJvciwgQkVGT1JFIHRoZSBleGNlcHRpb24gcHJvcGFnYXRlcyB0byBgcnVuKClgJ3MgY2FsbGVyLlxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSBURVJNSU5BTCBjb3VudGVycGFydCB0byBgb25SdW5FbmRgIOKAlCBpdCBjbG9zZXMgdGhlIHJ1blxuICAgKiBib3VuZGFyeSBzeW1tZXRyaWNhbGx5IHNvIGV2ZXJ5IGBvblJ1blN0YXJ0YCBpcyBmb2xsb3dlZCBieSBleGFjdGx5XG4gICAqIG9uZSBvZiBgb25SdW5FbmRgIChjbGVhbikgb3IgYG9uUnVuRmFpbGVkYCAoZXJyb3IpLiBXaXRob3V0IGl0LCBhXG4gICAqIGxpdmUgbW9uaXRvciBzZWVzIGBvblJ1blN0YXJ0YCB0aGVuIHNpbGVuY2Ugb24gYSBmYWlsZWQgcnVuIGFuZCBjYW4ndFxuICAgKiB0ZWxsIFwic3RpbGwgcnVubmluZ1wiIGZyb20gXCJjcmFzaGVkLlwiXG4gICAqXG4gICAqIEVycm9ycyBTVElMTCB0aHJvdyDigJQgdGhpcyBpcyB0aGUgb2JzZXJ2YWJsZSB0ZXJtaW5hbCBzaWduYWwsIG5vdCBhXG4gICAqIHJlY292ZXJ5IG1lY2hhbmlzbSAobm8gcm91dGluZywgbm8gZXJyb3Itc3ViZmxvdykuIFBhdXNlIGlzIE5PVCBhblxuICAgKiBlcnJvciwgc28gaXQgZG9lcyBub3QgZmlyZSB0aGlzLiBTdWJmbG93LXRyYXZlcnNlcnMgZG8gTk9UIGZpcmUgaXQ7XG4gICAqIHRoZWlyIGVycm9ycyBwcm9wYWdhdGUgdG8gdGhlIHBhcmVudCBhbmQgc3VyZmFjZSBhdCB0aGUgdG9wIGxldmVsLlxuICAgKi9cbiAgb25SdW5GYWlsZWQoZXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm8sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKiogUmV0dXJucyBhY2N1bXVsYXRlZCBuYXJyYXRpdmUgc2VudGVuY2VzIGluIGV4ZWN1dGlvbiBvcmRlci4gKi9cbiAgZ2V0U2VudGVuY2VzKCk6IHN0cmluZ1tdO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUcmF2ZXJzYWxDb250ZXh0IOKAlCByZWFkLW9ubHkgZXhlY3V0aW9uIGNvbnRleHQgZnJvbSB0aGUgdHJhdmVyc2VyLlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFRyYXZlcnNhbCBjb250ZXh0IGF0dGFjaGVkIHRvIGV2ZXJ5IEZsb3dSZWNvcmRlciBldmVudC5cbiAqIENyZWF0ZWQgYnkgdGhlIHRyYXZlcnNlciBkdXJpbmcgREZTLCBwYXNzZWQgdG8gcmVjb3JkZXJzIGFzIHJlYWQtb25seSBkYXRhLlxuICogRW5hYmxlcyByZWNvcmRlcnMgdG8gYnVpbGQgdHJlZXMsIGdyb3VwIGJ5IHN1YmZsb3csIGFuZCBjb3JyZWxhdGUgZXZlbnRzXG4gKiB3aXRob3V0IG1haW50YWluaW5nIHRoZWlyIG93biBzdGFja3Mgb3IgcG9zdC1wcm9jZXNzaW5nLlxuICpcbiAqIExpa2UgT3BlblRlbGVtZXRyeSdzIHNwYW4gY29udGV4dDogc3RhZ2VJZCArIHBhcmVudFN0YWdlSWQgZm9ybSBhIHRyZWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhdmVyc2FsQ29udGV4dCB7XG4gIC8qKlxuICAgKiBQZXItYGV4ZWN1dG9yLnJ1bigpYCBpZGVudGlmaWVyLiBHZW5lcmF0ZWQgb25jZSBhdCB0aGUgc3RhcnQgb2YgZXZlcnlcbiAgICogYHJ1bigpYCAoYW5kIGFnYWluIG9uIGByZXN1bWUoKWApOyBzaGFyZWQgYnkgZXZlcnkgZXZlbnQgb2YgdGhhdCBydW47XG4gICAqIGRpZmZlcnMgYWNyb3NzIGNvbnNlY3V0aXZlIHJ1bnMgb2YgdGhlIHNhbWUgZXhlY3V0b3IuXG4gICAqXG4gICAqIEZvcm1hdDogYCR7RGF0ZS5ub3coKX0tJHtjb3VudGVyfWAg4oCUIHNvcnRhYmxlIGxleGljb2dyYXBoaWNhbGx5ICg9PVxuICAgKiBjaHJvbm9sb2dpY2FsbHkgZm9yIHJ1bnMgPiAxbXMgYXBhcnQpLiBQcm9jZXNzLWxvY2FsIOKAlCBmb3IgY3Jvc3MtXG4gICAqIHByb2Nlc3MgY29ycmVsYXRpb24gdXNlIGBnZXRFbnYoKS50cmFjZUlkYCAoY29uc3VtZXItc3VwcGxpZWQpLlxuICAgKlxuICAgKiBSZWNvcmRlcnMgdGhhdCBhY2N1bXVsYXRlIHN0YXRlIGFjcm9zcyBydW5zIChmb3JrIGJvb2trZWVwaW5nLFxuICAgKiBzaWJsaW5nLWhhbmRvZmYgc3RhdGUsIGV0Yy4pIGRldGVjdCBcIm5ldyBydW5cIiB2aWFcbiAgICogYGV2ZW50LnRyYXZlcnNhbENvbnRleHQucnVuSWQgIT09IHRoaXMubGFzdFJ1bklkYCBhbmQgcmVzZXRcbiAgICogdHJhbnNpZW50IGJvb2trZWVwaW5nLiBSZWNvcmRlcnMgdGhhdCBkb24ndCBjYXJlIGFib3V0IHNjb3BpbmdcbiAgICogaWdub3JlIHRoZSBmaWVsZC5cbiAgICovXG4gIHJlYWRvbmx5IHJ1bklkOiBzdHJpbmc7XG4gIC8qKiBTdGFibGUgc3RhZ2UgaWRlbnRpZmllciBmcm9tIHRoZSBidWlsZGVyIChtYXRjaGVzIHNwZWMgbm9kZSBpZCkuICovXG4gIHJlYWRvbmx5IHN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIFVuaXF1ZSBwZXItZXhlY3V0aW9uLXN0ZXAgaWRlbnRpZmllci4gRm9ybWF0OiBbc3ViZmxvd1BhdGgvXXN0YWdlSWQjZXhlY3V0aW9uSW5kZXguXG4gICAqICBDb3VudGVyIHJlc2V0cyBwZXIgZXhlY3V0b3Ig4oCUIGNvbWJpbmUgd2l0aCBgcnVuSWRgIGZvciBnbG9iYWxseSB1bmlxdWUgc3RlcCBrZXlzLiAqL1xuICByZWFkb25seSBydW50aW1lU3RhZ2VJZDogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgc3RhZ2UgbmFtZS4gKi9cbiAgcmVhZG9ubHkgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBQYXJlbnQgc3RhZ2UgSUQg4oCUIHdhbGsgdXAgdG8gcmVjb25zdHJ1Y3QgdGhlIHRyZWUuIFVuZGVmaW5lZCBhdCByb290LiAqL1xuICByZWFkb25seSBwYXJlbnRTdGFnZUlkPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBhcmVudCBFWEVDVVRJT04gc3RlcCdzIHJ1bnRpbWVTdGFnZUlkIOKAlCB0aGUgcnVudGltZSB0d2luIG9mXG4gICAqIGBwYXJlbnRTdGFnZUlkYCAoUkZDLTAwMyBEMSkuIFdhbGsgdXAgdG8gcmVjb25zdHJ1Y3QgdGhlIHJ1bnRpbWVcbiAgICogYW5jZXN0b3IgY2hhaW47IGxvb3AgcmUtZW50cmllcyBzdGF5IHVuYW1iaWd1b3VzIGJlY2F1c2UgcnVudGltZSBpZHNcbiAgICogKGBzdGFnZUlkI2V4ZWN1dGlvbkluZGV4YCkgZGlmZmVyIHBlciBpdGVyYXRpb24gZXZlbiB3aGVuIHN0YWdlIGlkc1xuICAgKiByZXBlYXQuIENyb3NzZXMgc3ViZmxvdyBib3VuZGFyaWVzOiB0aGUgZmlyc3Qgc3RhZ2UgaW5zaWRlIGEgc3ViZmxvd1xuICAgKiBwb2ludHMgYXQgdGhlIE1PVU5UIHN0YWdlJ3MgcnVudGltZVN0YWdlSWQgaW4gdGhlIHBhcmVudCB0cmF2ZXJzZXIuXG4gICAqIFVuZGVmaW5lZCBvbmx5IGF0IHRoZSBmaXJzdCBzdGFnZSBvZiB0aGUgdG9wLWxldmVsIGNoYXJ0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGFyZW50UnVudGltZVN0YWdlSWQ/OiBzdHJpbmc7XG4gIC8qKiBTdWJmbG93IElEIHdoZW4gaW5zaWRlIGEgc3ViZmxvdy4gVW5kZWZpbmVkIGF0IHJvb3QgbGV2ZWwuICovXG4gIHJlYWRvbmx5IHN1YmZsb3dJZD86IHN0cmluZztcbiAgLyoqIEZ1bGwgc3ViZmxvdyBwYXRoIGZvciBuZXN0ZWQgc3ViZmxvd3MgKGUuZy4sIFwic2Ytb3V0ZXIvc2YtaW5uZXJcIikuICovXG4gIHJlYWRvbmx5IHN1YmZsb3dQYXRoPzogc3RyaW5nO1xuICAvKiogTmVzdGluZyBkZXB0aCAoMCA9IHJvb3QsIDEgPSBpbnNpZGUgZmlyc3Qgc3ViZmxvdywgZXRjLikuICovXG4gIHJlYWRvbmx5IGRlcHRoOiBudW1iZXI7XG4gIC8qKlxuICAgKiBIb3cgbWFueSB0aW1lcyB0aGlzIHN0YWdlIGhhcyBleGVjdXRlZCBCRUZPUkUgaW4gdGhpcyBydW4g4oCUIHRoZSBsb29wXG4gICAqIGl0ZXJhdGlvbiBjb3VudCB3aGVuIGEgbm9kZSBpcyByZXZpc2l0ZWQgKGUuZy4gdmlhIGBsb29wVG9gKS4gQWJzZW50IG9uIHRoZVxuICAgKiBmaXJzdCBleGVjdXRpb247IGAxYCBvbiB0aGUgZmlyc3QgbG9vcC1iYWNrLCBgMmAgb24gdGhlIG5leHQsIOKApiAoaS5lLlxuICAgKiBgdmlzaXRDb3VudCAtIDFgKS4gUnVuLXNjb3BlZCAocmVzZXRzIGVhY2ggYHJ1bigpYC9gcmVzdW1lKClgKSBhbmQgbW9ub3RvbmljXG4gICAqIGFjcm9zcyBzdWJmbG93IHJlLW1vdW50cy4gUG9wdWxhdGVkIGZvciBldmVyeSBzdGFnZSBraW5kLiBNaXJyb3JzIHRoZVxuICAgKiBuYXJyYXRpdmUgcmVjb3JkZXIncyBcInBhc3MgTlwiIGNvdW50LlxuICAgKi9cbiAgcmVhZG9ubHkgbG9vcEl0ZXJhdGlvbj86IG51bWJlcjtcbiAgLyoqIEZvcmsgYnJhbmNoIElEIHdoZW4gaW5zaWRlIGEgcGFyYWxsZWwgb3IgZGVjaWRlciBicmFuY2guICovXG4gIHJlYWRvbmx5IGZvcmtCcmFuY2g/OiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZsb3dSZWNvcmRlciDigJQgUGx1Z2dhYmxlIG9ic2VydmVyIGZvciBjb250cm9sIGZsb3cgZXZlbnRzLlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblN0YWdlRXhlY3V0ZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGFnZUV2ZW50IHtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogVHJhdmVyc2FsIGNvbnRleHQgZnJvbSB0aGUgZW5naW5lIOKAlCByZWFkLW9ubHksIHNldCBieSB0cmF2ZXJzZXIuICovXG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKipcbiAgICogV2hpY2gga2luZCBvZiBzdGFnZSBjb21wbGV0ZWQuIFRoZSBlbmdpbmUgZmlyZXMgYG9uU3RhZ2VFeGVjdXRlZGBcbiAgICogdW5pZm9ybWx5IGZvciBldmVyeSBzdGFnZSBraW5kIChwcm9wb3NhbCAjMDAzKTsgY29uc3VtZXJzIHJvdXRlIGJ5XG4gICAqIGBzdGFnZVR5cGVgIHdpdGhvdXQgYSBjaGFydC1zcGVjIGxvb2t1cC5cbiAgICovXG4gIHN0YWdlVHlwZTogU3RhZ2VUeXBlO1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbk5leHQuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dOZXh0RXZlbnQge1xuICBmcm9tOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25EZWNpc2lvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0RlY2lzaW9uRXZlbnQge1xuICBkZWNpZGVyOiBzdHJpbmc7XG4gIGNob3Nlbjogc3RyaW5nO1xuICByYXRpb25hbGU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqIFN0cnVjdHVyZWQgZGVjaXNpb24gZXZpZGVuY2UgZnJvbSBkZWNpZGUoKSBoZWxwZXIuICovXG4gIGV2aWRlbmNlPzogRGVjaXNpb25FdmlkZW5jZTtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25Gb3JrLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93Rm9ya0V2ZW50IHtcbiAgcGFyZW50OiBzdHJpbmc7XG4gIGNoaWxkcmVuOiBzdHJpbmdbXTtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uU2VsZWN0ZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTZWxlY3RlZEV2ZW50IHtcbiAgcGFyZW50OiBzdHJpbmc7XG4gIHNlbGVjdGVkOiBzdHJpbmdbXTtcbiAgdG90YWw6IG51bWJlcjtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBTdHJ1Y3R1cmVkIHNlbGVjdGlvbiBldmlkZW5jZSBmcm9tIHNlbGVjdCgpIGhlbHBlci4gKi9cbiAgZXZpZGVuY2U/OiBTZWxlY3Rpb25FdmlkZW5jZTtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25TdWJmbG93LiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93U3ViZmxvd0V2ZW50IHtcbiAgbmFtZTogc3RyaW5nO1xuICAvKiogU3ViZmxvdyBpZGVudGlmaWVyIOKAlCB1c2UgdGhpcyB0byBsb29rIHVwIHRoZSBmdWxsIHNwZWMgdmlhIHRoZSBtYW5pZmVzdC4gKi9cbiAgc3ViZmxvd0lkPzogc3RyaW5nO1xuICAvKiogQnVpbGQtdGltZSBkZXNjcmlwdGlvbiBvZiB3aGF0IHRoaXMgc3ViZmxvdyBkb2VzLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBNYXBwZWQgaW5wdXQgdmFsdWVzIHNlbnQgSU5UTyB0aGUgc3ViZmxvdyAoZnJvbSBpbnB1dE1hcHBlci9pbnB1dEtleXMpLiBQcmVzZW50IG9uIGVudHJ5IGV2ZW50cy4gKi9cbiAgbWFwcGVkSW5wdXQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIFN1YmZsb3cgc2hhcmVkIHN0YXRlIGF0IGV4aXQuIFByZXNlbnQgb24gZXhpdCBldmVudHMuICovXG4gIG91dHB1dFN0YXRlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uU3ViZmxvd1JlZ2lzdGVyZWQgKGR5bmFtaWMgc3ViZmxvdyBhdHRhY2htZW50KS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1N1YmZsb3dSZWdpc3RlcmVkRXZlbnQge1xuICAvKiogU3ViZmxvdyBpZGVudGlmaWVyLiAqL1xuICBzdWJmbG93SWQ6IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIG5hbWUuICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIEJ1aWxkLXRpbWUgZGVzY3JpcHRpb24uICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogRnVsbCBzcGVjIHN0cnVjdHVyZSAod2hlbiBhdmFpbGFibGUgZnJvbSBidWlsZFRpbWVTdHJ1Y3R1cmUpLiAqL1xuICBzcGVjU3RydWN0dXJlPzogdW5rbm93bjtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uTG9vcC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0xvb3BFdmVudCB7XG4gIHRhcmdldDogc3RyaW5nO1xuICBpdGVyYXRpb246IG51bWJlcjtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbkJyZWFrLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93QnJlYWtFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGZyZWUtZm9ybSByZWFzb24gc3VwcGxpZWQgYnkgYHNjb3BlLiRicmVhayhyZWFzb24pYC4gQWJzZW50XG4gICAqIHdoZW4gdGhlIHN0YWdlIGludm9rZWQgYCRicmVhaygpYCB3aXRob3V0IGFuIGFyZ3VtZW50LiBQcm9wYWdhdGVzIHdoZW5cbiAgICogYSBzdWJmbG93IGlzIG1vdW50ZWQgd2l0aCBgcHJvcGFnYXRlQnJlYWs6IHRydWVgIOKAlCB0aGUgb3V0ZXIgYnJlYWtcbiAgICogZXZlbnQgY2FycmllcyB0aGUgaW5uZXIgYnJlYWsncyByZWFzb24gdG9vLlxuICAgKi9cbiAgcmVhc29uPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hlbiB0cnVlLCB0aGlzIGJyZWFrIGV2ZW50IHdhcyByYWlzZWQgb24gdGhlIFBBUkVOVCBiZWNhdXNlIGFuIGlubmVyXG4gICAqIHN1YmZsb3cncyBicmVhayBwcm9wYWdhdGVkIHVwICh2aWEgYFN1YmZsb3dNb3VudE9wdGlvbnMucHJvcGFnYXRlQnJlYWtgKS5cbiAgICogVGhlIG9yaWdpbmF0aW5nIGlubmVyIGJyZWFrIGZpcmVzIGl0cyBvd24gYG9uQnJlYWtgIGV2ZW50IHNlcGFyYXRlbHlcbiAgICog4oCUIHRoaXMgZmxhZyBsZXRzIHJlY29yZGVycyBkaXN0aW5ndWlzaCB0aGUgdHdvLlxuICAgKi9cbiAgcHJvcGFnYXRlZEZyb21TdWJmbG93Pzogc3RyaW5nO1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbkVycm9yLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93RXJyb3JFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIC8qKiBTdHJ1Y3R1cmVkIGVycm9yIGRldGFpbHMg4oCUIHByZXNlcnZlcyBmaWVsZC1sZXZlbCBpc3N1ZXMsIGVycm9yIGNvZGVzLCBldGMuICovXG4gIHN0cnVjdHVyZWRFcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKlxuICAgKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgYCdmbG93J2Agb24gZXZlcnkgZW5naW5lLWRpc3BhdGNoZWRcbiAgICogZXZlbnQuIGBpc0Zsb3dFdmVudCgpYCBjaGVja3MgaXQgZmlyc3QgKGJhY2tsb2cgQjMpOyBvcHRpb25hbCBzb1xuICAgKiBjb25zdW1lci1mYWJyaWNhdGVkIGV2ZW50cyAodGVzdHMsIHJlcGxheXMpIHJlbWFpbiB0eXBlLXZhbGlkIGFuZCBmYWxsXG4gICAqIGJhY2sgdG8gdGhlIGxlZ2FjeSBwaXBlbGluZUlkLWFic2VuY2UgaGV1cmlzdGljLlxuICAgKi9cbiAgY2hhbm5lbD86ICdmbG93Jztcbn1cblxuLyoqXG4gKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uU3RhZ2VSZXRyeSDigJQgb25lIGZhaWxlZCBhdHRlbXB0IGF0IGEgc3RhZ2VcbiAqIHRoYXQgY2FycmllcyBhIGRlY2xhcmVkIHtAbGluayBpbXBvcnQoJy4uL3R5cGVzLmpzJykuUmV0cnlQb2xpY3l9LCBhbmQgd2hpY2hcbiAqIFdJTEwgYmUgYXR0ZW1wdGVkIGFnYWluLlxuICpcbiAqIFdIWSB0aGlzIGV2ZW50IGV4aXN0czogYSByZXRyeSBoYW5kLXJvbGxlZCBpbnNpZGUgYSBzdGFnZSBmdW5jdGlvbiBsZWF2ZXMgbm9cbiAqIG1hcmsgb24gdGhlIHRyYWNlIGF0IGFsbC4gVGhpcyBldmVudCBpcyB3aGF0IG1ha2VzIGEgZGVjbGFyZWQgcmV0cnkgcGFydCBvZlxuICogdGhlIHJlY29yZCDigJQgd2hpY2ggYXR0ZW1wdCBmYWlsZWQsIHdoeSwgaG93IGxvbmcgdGhlIGVuZ2luZSB3YWl0ZWQsIGFuZCBob3dcbiAqIG1hbnkgYXR0ZW1wdHMgdGhlIHBvbGljeSBhbGxvd3MuXG4gKlxuICogRmlyZXMgb25seSBmb3IgYXR0ZW1wdHMgZm9sbG93ZWQgYnkgYW5vdGhlciBhdHRlbXB0LiBUaGUgZmluYWwgZmFpbHVyZSB0YWtlc1xuICogdGhlIG9yZGluYXJ5IGVycm9yIHBhdGggKGBvbkVycm9yYCksIHNvIHRoZSB0d28gbmV2ZXIgZG91YmxlLXJlcG9ydCB0aGUgc2FtZVxuICogZmFpbHVyZTogYW4gZXhoYXVzdGVkIGBhdHRlbXB0czogM2AgcG9saWN5IGVtaXRzIDIgcmV0cnkgZXZlbnRzICsgMSBlcnJvclxuICogZXZlbnQ7IGEgYHJldHJ5T25gIHRoYXQgZGVjbGluZXMgZW1pdHMgMCByZXRyeSBldmVudHMgKyAxIGVycm9yIGV2ZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGFnZVJldHJ5RXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgLyoqIFN0YWJsZSBzdGFnZSBpZGVudGlmaWVyIGZyb20gdGhlIGJ1aWxkZXIgKG1hdGNoZXMgc3BlYyBub2RlIGlkKS4gKi9cbiAgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogV2hpY2ggYXR0ZW1wdCBqdXN0IEZBSUxFRCwgMS1iYXNlZC4gKi9cbiAgYXR0ZW1wdDogbnVtYmVyO1xuICAvKiogVG90YWwgYXR0ZW1wdHMgdGhlIHBvbGljeSBhbGxvd3MsIGluY2x1ZGluZyB0aGUgZmlyc3QuICovXG4gIG1heEF0dGVtcHRzOiBudW1iZXI7XG4gIC8qKiBNaWxsaXNlY29uZHMgdGhlIGVuZ2luZSB3aWxsIHdhaXQgYmVmb3JlIHRoZSBuZXh0IGF0dGVtcHQuIGAwYCA9IGltbWVkaWF0ZS4gKi9cbiAgZGVsYXlNczogbnVtYmVyO1xuICAvKiogSHVtYW4tcmVhZGFibGUgbWVzc2FnZSDigJQgdGhlIHNhbWUgc3RyaW5nIGBvbkVycm9yYCB3b3VsZCBjYXJyeS4gKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuICAvKiogU3RydWN0dXJlZCBkZXRhaWxzIG9mIHRoZSBlcnJvciB0aGF0IGVuZGVkIHRoaXMgYXR0ZW1wdC4gKi9cbiAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqIEV4cGxpY2l0IGNoYW5uZWwgZGlzY3JpbWluYW50IOKAlCBzZWUge0BsaW5rIEZsb3dFcnJvckV2ZW50LmNoYW5uZWx9LiAqL1xuICBjaGFubmVsPzogJ2Zsb3cnO1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblBhdXNlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93UGF1c2VFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBzdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBEYXRhIGZyb20gdGhlIHBhdXNlIHNpZ25hbCAocXVlc3Rpb24sIHJlYXNvbiwgbWV0YWRhdGEpLiAqL1xuICBwYXVzZURhdGE/OiB1bmtub3duO1xuICAvKiogUGF0aCB0aHJvdWdoIHN1YmZsb3dzIHRvIHRoZSBwYXVzZWQgc3RhZ2UuIEVtcHR5IGF0IHJvb3QgbGV2ZWwuICovXG4gIHN1YmZsb3dQYXRoOiByZWFkb25seSBzdHJpbmdbXTtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgc2VlIHtAbGluayBGbG93RXJyb3JFdmVudC5jaGFubmVsfS4gKi9cbiAgY2hhbm5lbD86ICdmbG93Jztcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25SZXN1bWUuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dSZXN1bWVFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBzdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHJlc3VtZSBpbnB1dCB3YXMgcHJvdmlkZWQuICovXG4gIGhhc0lucHV0OiBib29sZWFuO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqIEV4cGxpY2l0IGNoYW5uZWwgZGlzY3JpbWluYW50IOKAlCBzZWUge0BsaW5rIEZsb3dFcnJvckV2ZW50LmNoYW5uZWx9LiAqL1xuICBjaGFubmVsPzogJ2Zsb3cnO1xufVxuXG4vKipcbiAqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25SdW5TdGFydCAvIG9uUnVuRW5kLlxuICpcbiAqIEJyYWNrZXRzIHRoZSB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCBjYWxsLiBTdWJmbG93cyBoYXZlIHRoZWlyIG93blxuICogcGFpciAoYG9uU3ViZmxvd0VudHJ5YCAvIGBvblN1YmZsb3dFeGl0YCk7IHRoZSBydW4gcGFpciBpcyB0aGUgT1VURVJNT1NUXG4gKiBib3VuZGFyeSwgc28gY29uc3VtZXJzIGJ1aWxkaW5nIFwiZXZlcnkgc3RlcCBoYXMgYW4gaW4vb3V0XCIgdmlld3MgY2FuXG4gKiBjbG9zZSB0aGUgY2hhaW4gYXQgdGhlIHRvcCBsZXZlbC5cbiAqXG4gKiAgIC0gYG9uUnVuU3RhcnRgIHBheWxvYWQg4oaSIHRoZSBpbnB1dCBwYXNzZWQgdG8gYHJ1bih7aW5wdXR9KWBcbiAqICAgLSBgb25SdW5FbmRgICAgcGF5bG9hZCDihpIgdGhlIGNoYXJ0J3MgcmV0dXJuIHZhbHVlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1J1bkV2ZW50IHtcbiAgLyoqIE9uIGBvblJ1blN0YXJ0YDogdGhlIGlucHV0IGZyb20gYHJ1bih7aW5wdXR9KWAgYWZ0ZXIgc2NoZW1hIHZhbGlkYXRpb24uXG4gICAqICBPbiBgb25SdW5FbmRgOiB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGNoYXJ0LiBVbmRlZmluZWQgaWYgbmVpdGhlci4gKi9cbiAgcGF5bG9hZD86IHVua25vd247XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xufVxuXG4vKipcbiAqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25SdW5GYWlsZWQg4oCUIHRoZSBURVJNSU5BTCBmYWlsdXJlIGJvdW5kYXJ5XG4gKiBmb3IgYSB0b3AtbGV2ZWwgcnVuLiBNaXJyb3Igb2YgYG9uUnVuRW5kYCBmb3IgdGhlIGVycm9yIHBhdGg6IGl0IGZpcmVzXG4gKiBvbmNlLCBkdXJpbmcgdHJhdmVyc2FsLCB3aGVuIHRoZSBydW4gdGhyb3dzIGEgbm9uLXBhdXNlIGVycm9yLCBiZWZvcmVcbiAqIHRoZSBleGNlcHRpb24gcHJvcGFnYXRlcy4gQ2FycmllcyB0aGUgc3RydWN0dXJlZCBlcnJvciAoZmllbGQtbGV2ZWxcbiAqIGlzc3VlcywgY29kZXMpIHJhdGhlciB0aGFuIGEgZmxhdHRlbmVkIHN0cmluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93UnVuRmFpbGVkRXZlbnQge1xuICAvKiogU3RydWN0dXJlZCBkZXRhaWxzIG9mIHRoZSBlcnJvciB0aGF0IHRlcm1pbmF0ZWQgdGhlIHJ1bi4gKi9cbiAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbn1cblxuLyoqXG4gKiBGbG93UmVjb3JkZXIg4oCUIFBsdWdnYWJsZSBvYnNlcnZlciBmb3IgY29udHJvbCBmbG93IGV2ZW50cy5cbiAqXG4gKiBNaXJyb3JzIHRoZSBzY29wZS1sZXZlbCBTY29wZVJlY29yZGVyIHBhdHRlcm4gZm9yIHRoZSBlbmdpbmUgbGF5ZXIuXG4gKiBBbGwgbWV0aG9kcyBhcmUgb3B0aW9uYWwg4oCUIGltcGxlbWVudCBvbmx5IHRoZSBob29rcyB5b3UgbmVlZC5cbiAqIFJlY29yZGVycyBhcmUgaW52b2tlZCBzeW5jaHJvbm91c2x5IGluIGF0dGFjaG1lbnQgb3JkZXIuXG4gKiBJZiBhIHJlY29yZGVyIHRocm93cywgdGhlIGVycm9yIGlzIGNhdWdodCBhbmQgc3dhbGxvd2VkOyBleGVjdXRpb24gY29udGludWVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtZXRyaWNzUmVjb3JkZXI6IEZsb3dSZWNvcmRlciA9IHtcbiAqICAgaWQ6ICdtZXRyaWNzJyxcbiAqICAgb25Mb29wOiAoZXZlbnQpID0+IHJlY29yZE1ldHJpYygnbG9vcC5pdGVyYXRpb24nLCBldmVudC5pdGVyYXRpb24pLFxuICogICBvbkRlY2lzaW9uOiAoZXZlbnQpID0+IHJlY29yZE1ldHJpYygnZGVjaXNpb24nLCBldmVudC5jaG9zZW4pLFxuICogfTtcbiAqIGV4ZWN1dG9yLmF0dGFjaEZsb3dSZWNvcmRlcihtZXRyaWNzUmVjb3JkZXIpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1JlY29yZGVyIHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgb25TdGFnZUV4ZWN1dGVkPyhldmVudDogRmxvd1N0YWdlRXZlbnQpOiB2b2lkO1xuICBvbk5leHQ/KGV2ZW50OiBGbG93TmV4dEV2ZW50KTogdm9pZDtcbiAgb25EZWNpc2lvbj8oZXZlbnQ6IEZsb3dEZWNpc2lvbkV2ZW50KTogdm9pZDtcbiAgb25Gb3JrPyhldmVudDogRmxvd0ZvcmtFdmVudCk6IHZvaWQ7XG4gIG9uU2VsZWN0ZWQ/KGV2ZW50OiBGbG93U2VsZWN0ZWRFdmVudCk6IHZvaWQ7XG4gIG9uU3ViZmxvd0VudHJ5PyhldmVudDogRmxvd1N1YmZsb3dFdmVudCk6IHZvaWQ7XG4gIG9uU3ViZmxvd0V4aXQ/KGV2ZW50OiBGbG93U3ViZmxvd0V2ZW50KTogdm9pZDtcbiAgLyoqIENhbGxlZCB3aGVuIGEgZHluYW1pYyBzdWJmbG93IGlzIHJlZ2lzdGVyZWQgZHVyaW5nIHRyYXZlcnNhbC4gKi9cbiAgb25TdWJmbG93UmVnaXN0ZXJlZD8oZXZlbnQ6IEZsb3dTdWJmbG93UmVnaXN0ZXJlZEV2ZW50KTogdm9pZDtcbiAgb25Mb29wPyhldmVudDogRmxvd0xvb3BFdmVudCk6IHZvaWQ7XG4gIG9uQnJlYWs/KGV2ZW50OiBGbG93QnJlYWtFdmVudCk6IHZvaWQ7XG4gIG9uRXJyb3I/KGV2ZW50OiBGbG93RXJyb3JFdmVudCk6IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsZWQgb25jZSBwZXIgZmFpbGVkIGF0dGVtcHQgdGhhdCBXSUxMIGJlIHJldHJpZWQsIGZvciBzdGFnZXMgY2FycnlpbmcgYVxuICAgKiBkZWNsYXJlZCBgcmV0cnlgIHBvbGljeS4gVGhlIGZpbmFsIGZhaWx1cmUgYXJyaXZlcyB2aWEgYG9uRXJyb3JgIGluc3RlYWQsXG4gICAqIHNvIGEgc3RhZ2UgbmV2ZXIgcmVwb3J0cyB0aGUgc2FtZSBmYWlsdXJlIHR3aWNlLiBTZWVcbiAgICoge0BsaW5rIEZsb3dTdGFnZVJldHJ5RXZlbnR9IGZvciB0aGUgZXhhY3QgZXZlbnQgYXJpdGhtZXRpYy5cbiAgICovXG4gIG9uU3RhZ2VSZXRyeT8oZXZlbnQ6IEZsb3dTdGFnZVJldHJ5RXZlbnQpOiB2b2lkO1xuICBvblBhdXNlPyhldmVudDogRmxvd1BhdXNlRXZlbnQpOiB2b2lkO1xuICBvblJlc3VtZT8oZXZlbnQ6IEZsb3dSZXN1bWVFdmVudCk6IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsZWQgb25jZSBwZXIgdG9wLWxldmVsIGBleGVjdXRvci5ydW4oKWAgQkVGT1JFIHRyYXZlcnNhbCBiZWdpbnMuXG4gICAqIENhcnJpZXMgYGV2ZW50LnBheWxvYWQgPSBydW4oe2lucHV0fSlgLiBTdWJmbG93LXRyYXZlcnNlcnMgZG9uJ3QgZmlyZSBpdC5cbiAgICovXG4gIG9uUnVuU3RhcnQ/KGV2ZW50OiBGbG93UnVuRXZlbnQpOiB2b2lkO1xuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIHRvcC1sZXZlbCBgZXhlY3V0b3IucnVuKClgIEFGVEVSIHRyYXZlcnNhbCBjb21wbGV0ZXNcbiAgICogY2xlYW5seS4gQ2FycmllcyBgZXZlbnQucGF5bG9hZCA9IGNoYXJ0J3MgcmV0dXJuIHZhbHVlYC4gTk9UIGZpcmVkIG9uXG4gICAqIHBhdXNlICh0aGUgcnVuIGRpZG4ndCBlbmQpIG9yIHVuY2F1Z2h0IGVycm9yLlxuICAgKi9cbiAgb25SdW5FbmQ/KGV2ZW50OiBGbG93UnVuRXZlbnQpOiB2b2lkO1xuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIHRvcC1sZXZlbCBgZXhlY3V0b3IucnVuKClgIHdoZW4gdGhlIHJ1biB0aHJvd3MgYVxuICAgKiBub24tcGF1c2UgZXJyb3IsIEJFRk9SRSB0aGUgZXhjZXB0aW9uIHByb3BhZ2F0ZXMuIFRoZSBURVJNSU5BTFxuICAgKiBjb3VudGVycGFydCB0byBgb25SdW5FbmRgIOKAlCBsZXRzIGEgbW9uaXRvciBjbG9zZSB0aGUgcnVuIGJvdW5kYXJ5IG9uXG4gICAqIGZhaWx1cmUgaW5zdGVhZCBvZiB3YWl0aW5nIGZvcmV2ZXIuIE5PVCBmaXJlZCBvbiBwYXVzZS5cbiAgICovXG4gIG9uUnVuRmFpbGVkPyhldmVudDogRmxvd1J1bkZhaWxlZEV2ZW50KTogdm9pZDtcbiAgLyoqIENhbGxlZCBiZWZvcmUgZWFjaCBydW4gdG8gcmVzZXQgcGVyLXJ1biBzdGF0ZS4gSW1wbGVtZW50IGZvciBzdGF0ZWZ1bCByZWNvcmRlcnMuICovXG4gIGNsZWFyPygpOiB2b2lkO1xuICAvKiogT3B0aW9uYWw6IGV4cG9zZSBjb2xsZWN0ZWQgZGF0YSBmb3IgaW5jbHVzaW9uIGluIHNuYXBzaG90cy4gKi9cbiAgdG9TbmFwc2hvdD8oKToge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBwcmVmZXJyZWRPcGVyYXRpb24/OiAndHJhbnNsYXRlJyB8ICdhY2N1bXVsYXRlJyB8ICdhZ2dyZWdhdGUnO1xuICAgIGRhdGE6IHVua25vd247XG4gICAgLyoqIE1hY2hpbmUtcmVhZGFibGUgZmFjdHMgYWJvdXQgdGhlIGJ1bmRsZSBpdHNlbGYg4oCUIHNlZVxuICAgICAqICB7QGxpbmsgaW1wb3J0KCcuLi8uLi9ydW5uZXIvRXhlY3V0aW9uUnVudGltZS5qcycpLlJlY29yZGVyU25hcHNob3QubWV0YX0uICovXG4gICAgbWV0YT86IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgfTtcbn1cbiJdfQ==
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSUNvbnRyb2xGbG93TmFycmF0aXZlIOKAlCBJbnRlcmZhY2UgZm9yIGNvbnRyb2wgZmxvdyBuYXJyYXRpdmUgZ2VuZXJhdGlvbi5cbiAqXG4gKiBDYXB0dXJlcyBGTE9XIGV2ZW50cyBkdXJpbmcgdHJhdmVyc2FsOiBkZWNpc2lvbnMsIGZvcmtzLCBsb29wcywgc3ViZmxvd3MuXG4gKiBDb21wbGVtZW50YXJ5IHRvIHNjb3BlL3JlY29yZGVycy9OYXJyYXRpdmVSZWNvcmRlciB3aGljaCBjYXB0dXJlcyBEQVRBIGV2ZW50cy5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBEZWNpc2lvbkV2aWRlbmNlLCBTZWxlY3Rpb25FdmlkZW5jZSB9IGZyb20gJy4uLy4uL2RlY2lkZS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0cnVjdHVyZWRFcnJvckluZm8gfSBmcm9tICcuLi9lcnJvcnMvZXJyb3JJbmZvLmpzJztcblxuLyoqXG4gKlxuICogVXNlcyBOdWxsIE9iamVjdCBwYXR0ZXJuOiBOdWxsQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3Igc2F0aXNmaWVzIHRoaXNcbiAqIGludGVyZmFjZSB3aXRoIGVtcHR5IG1ldGhvZHMgZm9yIHplcm8tY29zdCBkaXNhYmxlZCBwYXRoLlxuICovXG5cbi8qKlxuICogVGhlIGtpbmQgb2Ygc3RhZ2UgdGhhdCBjb21wbGV0ZWQuIExldHMgY29uc3VtZXJzIHJvdXRlIHVuaWZvcm1cbiAqIFwiZGlkIHRoaXMgc3RhZ2UgZXhlY3V0ZVwiIGhhbmRsaW5nIHdpdGhvdXQgYSBzaWRlLXRhYmxlIGxvb2t1cCBpbnRvXG4gKiB0aGUgY2hhcnQgc3BlYy4gUmVxdWlyZWQgb24gZXZlcnkgYG9uU3RhZ2VFeGVjdXRlZGAgZXZlbnQgc2luY2VcbiAqIHByb3Bvc2FsICMwMDMgdW5pZmllZCB0aGUgZXZlbnQgdG8gZmlyZSBmb3IgQUxMIHN0YWdlIGtpbmRzLlxuICovXG5leHBvcnQgdHlwZSBTdGFnZVR5cGUgPSAnbGluZWFyJyB8ICdkZWNpZGVyJyB8ICdmb3JrJyB8ICdzZWxlY3RvcicgfCAnc3ViZmxvdy1tb3VudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRyb2xGbG93TmFycmF0aXZlIHtcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGEgc3RhZ2UgY29tcGxldGVzIGl0cyBtYWluIHdvcmsuIEZpcmVzIGZvciBBTEwgc3RhZ2VcbiAgICoga2luZHMgKGAnbGluZWFyJ2AsIGAnZGVjaWRlcidgLCBgJ2ZvcmsnYCwgYCdzZWxlY3RvcidgLCBgJ3N1YmZsb3ctbW91bnQnYClcbiAgICogQUZURVIgdGhlIGNvcnJlc3BvbmRpbmcgc3BlY2lhbGl6ZWQgZXZlbnQgKGBvbkRlY2lzaW9uYCwgYG9uRm9ya2AsXG4gICAqIGBvblNlbGVjdGVkYCwgYG9uU3ViZmxvd0VudHJ5YCkuIEZvciBsaW5lYXIgc3RhZ2VzLCBmaXJlcyBhZnRlclxuICAgKiB0aGUgc3RhZ2UgZnVuY3Rpb24gcmV0dXJucy5cbiAgICpcbiAgICogQ29uc3VtZXJzIHRyYWNraW5nIFwiZGlkIHRoaXMgc3RhZ2UgcnVuP1wiIHVzZSB0aGlzIGV2ZW50IHVuaWZvcm1seVxuICAgKiBhbmQgc3dpdGNoIG9uIGBzdGFnZVR5cGVgIGZvciBraW5kLXNwZWNpZmljIHdvcmsuXG4gICAqL1xuICBvblN0YWdlRXhlY3V0ZWQoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgZGVzY3JpcHRpb246IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICB0cmF2ZXJzYWxDb250ZXh0OiBUcmF2ZXJzYWxDb250ZXh0IHwgdW5kZWZpbmVkLFxuICAgIHN0YWdlVHlwZTogU3RhZ2VUeXBlLFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgb24gbGluZWFyIGNvbnRpbnVhdGlvbiBmcm9tIG9uZSBzdGFnZSB0byB0aGUgbmV4dC4gKi9cbiAgb25OZXh0KGZyb21TdGFnZTogc3RyaW5nLCB0b1N0YWdlOiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGEgZGVjaWRlciBzZWxlY3RzIGEgYnJhbmNoLiBNb3N0IHZhbHVhYmxlIGZvciBMTE0gY29udGV4dC4gKi9cbiAgb25EZWNpc2lvbihcbiAgICBkZWNpZGVyTmFtZTogc3RyaW5nLFxuICAgIGNob3NlbkJyYW5jaDogc3RyaW5nLFxuICAgIHJhdGlvbmFsZT86IHN0cmluZyxcbiAgICBkZWNpZGVyRGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgZXZpZGVuY2U/OiBEZWNpc2lvbkV2aWRlbmNlLFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBhIGZvcmsgZXhlY3V0ZXMgYWxsIGNoaWxkcmVuIGluIHBhcmFsbGVsLiAqL1xuICBvbkZvcmsocGFyZW50U3RhZ2U6IHN0cmluZywgY2hpbGROYW1lczogc3RyaW5nW10sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBzZWxlY3RvciBwaWNrcyBhIHN1YnNldCBvZiBjaGlsZHJlbi4gKi9cbiAgb25TZWxlY3RlZChcbiAgICBwYXJlbnRTdGFnZTogc3RyaW5nLFxuICAgIHNlbGVjdGVkTmFtZXM6IHN0cmluZ1tdLFxuICAgIHRvdGFsQ291bnQ6IG51bWJlcixcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgICBldmlkZW5jZT86IFNlbGVjdGlvbkV2aWRlbmNlLFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBlbnRlcmluZyBhIHN1YmZsb3cgKG5lc3RlZCBjb250ZXh0IGJvdW5kYXJ5KS4gKi9cbiAgb25TdWJmbG93RW50cnkoXG4gICAgc3ViZmxvd05hbWU6IHN0cmluZyxcbiAgICBzdWJmbG93SWQ/OiBzdHJpbmcsXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgbWFwcGVkSW5wdXQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gZXhpdGluZyBhIHN1YmZsb3cuICovXG4gIG9uU3ViZmxvd0V4aXQoXG4gICAgc3ViZmxvd05hbWU6IHN0cmluZyxcbiAgICBzdWJmbG93SWQ/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgb3V0cHV0U3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBkeW5hbWljIHN1YmZsb3cgaXMgcmVnaXN0ZXJlZCBkdXJpbmcgdHJhdmVyc2FsLiAqL1xuICBvblN1YmZsb3dSZWdpc3RlcmVkKHN1YmZsb3dJZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nLCBzcGVjU3RydWN0dXJlPzogdW5rbm93bik6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCBvbiBsb29wIGl0ZXJhdGlvbiAoYmFjay1lZGdlIHRyYXZlcnNhbCkuICovXG4gIG9uTG9vcCh0YXJnZXRTdGFnZTogc3RyaW5nLCBpdGVyYXRpb246IG51bWJlciwgZGVzY3JpcHRpb24/OiBzdHJpbmcsIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYSBzdGFnZSB0cmlnZ2VycyBicmVhayAoZWFybHkgdGVybWluYXRpb24pLlxuICAgKlxuICAgKiBAcGFyYW0gcmVhc29uIC0gT3B0aW9uYWwgc3RyaW5nIHBhc3NlZCB0byBgc2NvcGUuJGJyZWFrKHJlYXNvbilgLlxuICAgKiBAcGFyYW0gcHJvcGFnYXRlZEZyb21TdWJmbG93IC0gV2hlbiBzZXQsIHRoaXMgYnJlYWsgd2FzIHJhaXNlZCBvbiB0aGVcbiAgICogICBwYXJlbnQgYmVjYXVzZSBhbiBpbm5lciBzdWJmbG93ICh0aGlzIGlkKSBicm9rZSB3aXRoIGBwcm9wYWdhdGVCcmVha2BcbiAgICogICBlbmFibGVkLiBVc2VkIGJ5IHJlY29yZGVycyB0byBkaXN0aW5ndWlzaCBvcmlnaW5hdGluZyB2cyBwcm9wYWdhdGVkXG4gICAqICAgYnJlYWtzIGFuZCByZW5kZXIgdGhlbSBhY2NvcmRpbmdseS5cbiAgICovXG4gIG9uQnJlYWsoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICAgIHByb3BhZ2F0ZWRGcm9tU3ViZmxvdz86IHN0cmluZyxcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBzdGFnZSB0aHJvd3MgYW4gZXJyb3IuIFJhdyBlcnJvciBpcyBleHRyYWN0ZWQgaW50byBzdHJ1Y3R1cmVkIGRldGFpbHMuICovXG4gIG9uRXJyb3Ioc3RhZ2VOYW1lOiBzdHJpbmcsIGVycm9yTWVzc2FnZTogc3RyaW5nLCBlcnJvcjogdW5rbm93biwgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhbiBhdHRlbXB0IGF0IGEgc3RhZ2Ugd2l0aCBhIGRlY2xhcmVkIGByZXRyeWAgcG9saWN5IGZhaWxlZFxuICAgKiBBTkQgYW5vdGhlciBhdHRlbXB0IHdpbGwgcnVuLiBGaXJlcyBhZnRlciB0aGUgZmFpbGVkIGF0dGVtcHQncyBzdGFnZWRcbiAgICogd3JpdGVzIGFyZSBkaXNjYXJkZWQgYW5kIEJFRk9SRSB0aGUgYmFja29mZiB3YWl0LCBzbyBhIGxpdmUgbW9uaXRvciBsZWFybnNcbiAgICogXCJyZXRyeWluZyBpbiA1MDAgbXNcIiB3aGVuIHRoZSBkZWNpc2lvbiBpcyBtYWRlLCBub3QgYWZ0ZXIgdGhlIHdhaXQuXG4gICAqXG4gICAqIEV2ZW50IGFyaXRobWV0aWM6IGFuIGV4aGF1c3RlZCBwb2xpY3kgZmlyZXMgYGF0dGVtcHRzIC0gMWAgb2YgdGhlc2UgYW5kXG4gICAqIHRoZW4gb25lIGBvbkVycm9yYDsgYSBgcmV0cnlPbmAgdGhhdCBkZWNsaW5lcyBmaXJlcyBaRVJPIG9mIHRoZXNlIGFuZCBvbmVcbiAgICogYG9uRXJyb3JgLiBUaGUgZmluYWwgYXR0ZW1wdCBuZXZlciBmaXJlcyB0aGlzIGV2ZW50LlxuICAgKi9cbiAgb25TdGFnZVJldHJ5KFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIHN0YWdlSWQ6IHN0cmluZyxcbiAgICBhdHRlbXB0OiBudW1iZXIsXG4gICAgbWF4QXR0ZW1wdHM6IG51bWJlcixcbiAgICBkZWxheU1zOiBudW1iZXIsXG4gICAgZXJyb3I6IHVua25vd24sXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGEgcGF1c2FibGUgc3RhZ2UgcGF1c2VzIGV4ZWN1dGlvbi4gKi9cbiAgb25QYXVzZShcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBzdGFnZUlkOiBzdHJpbmcsXG4gICAgcGF1c2VEYXRhOiB1bmtub3duLFxuICAgIHN1YmZsb3dQYXRoOiByZWFkb25seSBzdHJpbmdbXSxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBwYXVzZWQgc3RhZ2UgaXMgcmVzdW1lZC4gKi9cbiAgb25SZXN1bWUoc3RhZ2VOYW1lOiBzdHJpbmcsIHN0YWdlSWQ6IHN0cmluZywgaGFzSW5wdXQ6IGJvb2xlYW4sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIHRvcC1sZXZlbCBgZXhlY3V0b3IucnVuKClgLCBCRUZPUkUgdGhlIGZpcnN0IHN0YWdlIGV4ZWN1dGVzLlxuICAgKiBgaW5wdXRgIGlzIHRoZSB2YWx1ZSBwYXNzZWQgdmlhIGBydW4oe2lucHV0fSlgIChhZnRlciBzY2hlbWEgdmFsaWRhdGlvbikuXG4gICAqIFN1YmZsb3ctdHJhdmVyc2VycyBkbyBOT1QgZmlyZSB0aGlzIGV2ZW50IOKAlCB0aGV5IGZpcmUgYG9uU3ViZmxvd0VudHJ5YC5cbiAgICovXG4gIG9uUnVuU3RhcnQoaW5wdXQ6IHVua25vd24sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIHRvcC1sZXZlbCBgZXhlY3V0b3IucnVuKClgLCBBRlRFUiB0aGUgbGFzdCBzdGFnZSBjb21taXRzLlxuICAgKiBgb3V0cHV0YCBpcyB0aGUgdmFsdWUgdGhlIGNoYXJ0IHJldHVybmVkLiBOT1QgZmlyZWQgb24gcGF1c2UgKHRoZSBydW5cbiAgICogZGlkbid0IGVuZDsgaXQgc3VzcGVuZGVkKSBvciBvbiB1bmNhdWdodCBlcnJvci4gU3ViZmxvdy10cmF2ZXJzZXJzIGRvXG4gICAqIE5PVCBmaXJlIHRoaXMgZXZlbnQg4oCUIHRoZXkgZmlyZSBgb25TdWJmbG93RXhpdGAuXG4gICAqL1xuICBvblJ1bkVuZChvdXRwdXQ6IHVua25vd24sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIHRvcC1sZXZlbCBgZXhlY3V0b3IucnVuKClgIHdoZW4gdHJhdmVyc2FsIHRocm93cyBhXG4gICAqIE5PTi1wYXVzZSBlcnJvciwgQkVGT1JFIHRoZSBleGNlcHRpb24gcHJvcGFnYXRlcyB0byBgcnVuKClgJ3MgY2FsbGVyLlxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSBURVJNSU5BTCBjb3VudGVycGFydCB0byBgb25SdW5FbmRgIOKAlCBpdCBjbG9zZXMgdGhlIHJ1blxuICAgKiBib3VuZGFyeSBzeW1tZXRyaWNhbGx5IHNvIGV2ZXJ5IGBvblJ1blN0YXJ0YCBpcyBmb2xsb3dlZCBieSBleGFjdGx5XG4gICAqIG9uZSBvZiBgb25SdW5FbmRgIChjbGVhbikgb3IgYG9uUnVuRmFpbGVkYCAoZXJyb3IpLiBXaXRob3V0IGl0LCBhXG4gICAqIGxpdmUgbW9uaXRvciBzZWVzIGBvblJ1blN0YXJ0YCB0aGVuIHNpbGVuY2Ugb24gYSBmYWlsZWQgcnVuIGFuZCBjYW4ndFxuICAgKiB0ZWxsIFwic3RpbGwgcnVubmluZ1wiIGZyb20gXCJjcmFzaGVkLlwiXG4gICAqXG4gICAqIEVycm9ycyBTVElMTCB0aHJvdyDigJQgdGhpcyBpcyB0aGUgb2JzZXJ2YWJsZSB0ZXJtaW5hbCBzaWduYWwsIG5vdCBhXG4gICAqIHJlY292ZXJ5IG1lY2hhbmlzbSAobm8gcm91dGluZywgbm8gZXJyb3Itc3ViZmxvdykuIFBhdXNlIGlzIE5PVCBhblxuICAgKiBlcnJvciwgc28gaXQgZG9lcyBub3QgZmlyZSB0aGlzLiBTdWJmbG93LXRyYXZlcnNlcnMgZG8gTk9UIGZpcmUgaXQ7XG4gICAqIHRoZWlyIGVycm9ycyBwcm9wYWdhdGUgdG8gdGhlIHBhcmVudCBhbmQgc3VyZmFjZSBhdCB0aGUgdG9wIGxldmVsLlxuICAgKi9cbiAgb25SdW5GYWlsZWQoZXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm8sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKiogUmV0dXJucyBhY2N1bXVsYXRlZCBuYXJyYXRpdmUgc2VudGVuY2VzIGluIGV4ZWN1dGlvbiBvcmRlci4gKi9cbiAgZ2V0U2VudGVuY2VzKCk6IHN0cmluZ1tdO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUcmF2ZXJzYWxDb250ZXh0IOKAlCByZWFkLW9ubHkgZXhlY3V0aW9uIGNvbnRleHQgZnJvbSB0aGUgdHJhdmVyc2VyLlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFRyYXZlcnNhbCBjb250ZXh0IGF0dGFjaGVkIHRvIGV2ZXJ5IEZsb3dSZWNvcmRlciBldmVudC5cbiAqIENyZWF0ZWQgYnkgdGhlIHRyYXZlcnNlciBkdXJpbmcgREZTLCBwYXNzZWQgdG8gcmVjb3JkZXJzIGFzIHJlYWQtb25seSBkYXRhLlxuICogRW5hYmxlcyByZWNvcmRlcnMgdG8gYnVpbGQgdHJlZXMsIGdyb3VwIGJ5IHN1YmZsb3csIGFuZCBjb3JyZWxhdGUgZXZlbnRzXG4gKiB3aXRob3V0IG1haW50YWluaW5nIHRoZWlyIG93biBzdGFja3Mgb3IgcG9zdC1wcm9jZXNzaW5nLlxuICpcbiAqIExpa2UgT3BlblRlbGVtZXRyeSdzIHNwYW4gY29udGV4dDogc3RhZ2VJZCArIHBhcmVudFN0YWdlSWQgZm9ybSBhIHRyZWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhdmVyc2FsQ29udGV4dCB7XG4gIC8qKlxuICAgKiBQZXItYGV4ZWN1dG9yLnJ1bigpYCBpZGVudGlmaWVyLiBHZW5lcmF0ZWQgb25jZSBhdCB0aGUgc3RhcnQgb2YgZXZlcnlcbiAgICogYHJ1bigpYCAoYW5kIGFnYWluIG9uIGByZXN1bWUoKWApOyBzaGFyZWQgYnkgZXZlcnkgZXZlbnQgb2YgdGhhdCBydW47XG4gICAqIGRpZmZlcnMgYWNyb3NzIGNvbnNlY3V0aXZlIHJ1bnMgb2YgdGhlIHNhbWUgZXhlY3V0b3IuXG4gICAqXG4gICAqIEZvcm1hdDogYCR7RGF0ZS5ub3coKX0tJHtjb3VudGVyfWAg4oCUIHNvcnRhYmxlIGxleGljb2dyYXBoaWNhbGx5ICg9PVxuICAgKiBjaHJvbm9sb2dpY2FsbHkgZm9yIHJ1bnMgPiAxbXMgYXBhcnQpLiBQcm9jZXNzLWxvY2FsIOKAlCBmb3IgY3Jvc3MtXG4gICAqIHByb2Nlc3MgY29ycmVsYXRpb24gdXNlIGBnZXRFbnYoKS50cmFjZUlkYCAoY29uc3VtZXItc3VwcGxpZWQpLlxuICAgKlxuICAgKiBSZWNvcmRlcnMgdGhhdCBhY2N1bXVsYXRlIHN0YXRlIGFjcm9zcyBydW5zIChmb3JrIGJvb2trZWVwaW5nLFxuICAgKiBzaWJsaW5nLWhhbmRvZmYgc3RhdGUsIGV0Yy4pIGRldGVjdCBcIm5ldyBydW5cIiB2aWFcbiAgICogYGV2ZW50LnRyYXZlcnNhbENvbnRleHQucnVuSWQgIT09IHRoaXMubGFzdFJ1bklkYCBhbmQgcmVzZXRcbiAgICogdHJhbnNpZW50IGJvb2trZWVwaW5nLiBSZWNvcmRlcnMgdGhhdCBkb24ndCBjYXJlIGFib3V0IHNjb3BpbmdcbiAgICogaWdub3JlIHRoZSBmaWVsZC5cbiAgICovXG4gIHJlYWRvbmx5IHJ1bklkOiBzdHJpbmc7XG4gIC8qKiBTdGFibGUgc3RhZ2UgaWRlbnRpZmllciBmcm9tIHRoZSBidWlsZGVyIChtYXRjaGVzIHNwZWMgbm9kZSBpZCkuICovXG4gIHJlYWRvbmx5IHN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIFVuaXF1ZSBwZXItZXhlY3V0aW9uLXN0ZXAgaWRlbnRpZmllci4gRm9ybWF0OiBbc3ViZmxvd1BhdGgvXXN0YWdlSWQjZXhlY3V0aW9uSW5kZXguXG4gICAqICBDb3VudGVyIHJlc2V0cyBwZXIgZXhlY3V0b3Ig4oCUIGNvbWJpbmUgd2l0aCBgcnVuSWRgIGZvciBnbG9iYWxseSB1bmlxdWUgc3RlcCBrZXlzLiAqL1xuICByZWFkb25seSBydW50aW1lU3RhZ2VJZDogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgc3RhZ2UgbmFtZS4gKi9cbiAgcmVhZG9ubHkgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBQYXJlbnQgc3RhZ2UgSUQg4oCUIHdhbGsgdXAgdG8gcmVjb25zdHJ1Y3QgdGhlIHRyZWUuIFVuZGVmaW5lZCBhdCByb290LiAqL1xuICByZWFkb25seSBwYXJlbnRTdGFnZUlkPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBhcmVudCBFWEVDVVRJT04gc3RlcCdzIHJ1bnRpbWVTdGFnZUlkIOKAlCB0aGUgcnVudGltZSB0d2luIG9mXG4gICAqIGBwYXJlbnRTdGFnZUlkYCAoUkZDLTAwMyBEMSkuIFdhbGsgdXAgdG8gcmVjb25zdHJ1Y3QgdGhlIHJ1bnRpbWVcbiAgICogYW5jZXN0b3IgY2hhaW47IGxvb3AgcmUtZW50cmllcyBzdGF5IHVuYW1iaWd1b3VzIGJlY2F1c2UgcnVudGltZSBpZHNcbiAgICogKGBzdGFnZUlkI2V4ZWN1dGlvbkluZGV4YCkgZGlmZmVyIHBlciBpdGVyYXRpb24gZXZlbiB3aGVuIHN0YWdlIGlkc1xuICAgKiByZXBlYXQuIENyb3NzZXMgc3ViZmxvdyBib3VuZGFyaWVzOiB0aGUgZmlyc3Qgc3RhZ2UgaW5zaWRlIGEgc3ViZmxvd1xuICAgKiBwb2ludHMgYXQgdGhlIE1PVU5UIHN0YWdlJ3MgcnVudGltZVN0YWdlSWQgaW4gdGhlIHBhcmVudCB0cmF2ZXJzZXIuXG4gICAqIFVuZGVmaW5lZCBvbmx5IGF0IHRoZSBmaXJzdCBzdGFnZSBvZiB0aGUgdG9wLWxldmVsIGNoYXJ0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGFyZW50UnVudGltZVN0YWdlSWQ/OiBzdHJpbmc7XG4gIC8qKiBTdWJmbG93IElEIHdoZW4gaW5zaWRlIGEgc3ViZmxvdy4gVW5kZWZpbmVkIGF0IHJvb3QgbGV2ZWwuICovXG4gIHJlYWRvbmx5IHN1YmZsb3dJZD86IHN0cmluZztcbiAgLyoqIEZ1bGwgc3ViZmxvdyBwYXRoIGZvciBuZXN0ZWQgc3ViZmxvd3MgKGUuZy4sIFwic2Ytb3V0ZXIvc2YtaW5uZXJcIikuICovXG4gIHJlYWRvbmx5IHN1YmZsb3dQYXRoPzogc3RyaW5nO1xuICAvKiogTmVzdGluZyBkZXB0aCAoMCA9IHJvb3QsIDEgPSBpbnNpZGUgZmlyc3Qgc3ViZmxvdywgZXRjLikuICovXG4gIHJlYWRvbmx5IGRlcHRoOiBudW1iZXI7XG4gIC8qKlxuICAgKiBIb3cgbWFueSB0aW1lcyB0aGlzIHN0YWdlIGhhcyBleGVjdXRlZCBCRUZPUkUgaW4gdGhpcyBydW4g4oCUIHRoZSBsb29wXG4gICAqIGl0ZXJhdGlvbiBjb3VudCB3aGVuIGEgbm9kZSBpcyByZXZpc2l0ZWQgKGUuZy4gdmlhIGBsb29wVG9gKS4gQWJzZW50IG9uIHRoZVxuICAgKiBmaXJzdCBleGVjdXRpb247IGAxYCBvbiB0aGUgZmlyc3QgbG9vcC1iYWNrLCBgMmAgb24gdGhlIG5leHQsIOKApiAoaS5lLlxuICAgKiBgdmlzaXRDb3VudCAtIDFgKS4gUnVuLXNjb3BlZCAocmVzZXRzIGVhY2ggYHJ1bigpYC9gcmVzdW1lKClgKSBhbmQgbW9ub3RvbmljXG4gICAqIGFjcm9zcyBzdWJmbG93IHJlLW1vdW50cy4gUG9wdWxhdGVkIGZvciBldmVyeSBzdGFnZSBraW5kLiBNaXJyb3JzIHRoZVxuICAgKiBuYXJyYXRpdmUgcmVjb3JkZXIncyBcInBhc3MgTlwiIGNvdW50LlxuICAgKi9cbiAgcmVhZG9ubHkgbG9vcEl0ZXJhdGlvbj86IG51bWJlcjtcbiAgLyoqIEZvcmsgYnJhbmNoIElEIHdoZW4gaW5zaWRlIGEgcGFyYWxsZWwgb3IgZGVjaWRlciBicmFuY2guICovXG4gIHJlYWRvbmx5IGZvcmtCcmFuY2g/OiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZsb3dSZWNvcmRlciDigJQgUGx1Z2dhYmxlIG9ic2VydmVyIGZvciBjb250cm9sIGZsb3cgZXZlbnRzLlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblN0YWdlRXhlY3V0ZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGFnZUV2ZW50IHtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogVHJhdmVyc2FsIGNvbnRleHQgZnJvbSB0aGUgZW5naW5lIOKAlCByZWFkLW9ubHksIHNldCBieSB0cmF2ZXJzZXIuICovXG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKipcbiAgICogV2hpY2gga2luZCBvZiBzdGFnZSBjb21wbGV0ZWQuIFRoZSBlbmdpbmUgZmlyZXMgYG9uU3RhZ2VFeGVjdXRlZGBcbiAgICogdW5pZm9ybWx5IGZvciBldmVyeSBzdGFnZSBraW5kIChwcm9wb3NhbCAjMDAzKTsgY29uc3VtZXJzIHJvdXRlIGJ5XG4gICAqIGBzdGFnZVR5cGVgIHdpdGhvdXQgYSBjaGFydC1zcGVjIGxvb2t1cC5cbiAgICovXG4gIHN0YWdlVHlwZTogU3RhZ2VUeXBlO1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbk5leHQuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dOZXh0RXZlbnQge1xuICBmcm9tOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25EZWNpc2lvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0RlY2lzaW9uRXZlbnQge1xuICBkZWNpZGVyOiBzdHJpbmc7XG4gIGNob3Nlbjogc3RyaW5nO1xuICByYXRpb25hbGU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqIFN0cnVjdHVyZWQgZGVjaXNpb24gZXZpZGVuY2UgZnJvbSBkZWNpZGUoKSBoZWxwZXIuICovXG4gIGV2aWRlbmNlPzogRGVjaXNpb25FdmlkZW5jZTtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25Gb3JrLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93Rm9ya0V2ZW50IHtcbiAgcGFyZW50OiBzdHJpbmc7XG4gIGNoaWxkcmVuOiBzdHJpbmdbXTtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uU2VsZWN0ZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTZWxlY3RlZEV2ZW50IHtcbiAgcGFyZW50OiBzdHJpbmc7XG4gIHNlbGVjdGVkOiBzdHJpbmdbXTtcbiAgdG90YWw6IG51bWJlcjtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBTdHJ1Y3R1cmVkIHNlbGVjdGlvbiBldmlkZW5jZSBmcm9tIHNlbGVjdCgpIGhlbHBlci4gKi9cbiAgZXZpZGVuY2U/OiBTZWxlY3Rpb25FdmlkZW5jZTtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25TdWJmbG93LiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93U3ViZmxvd0V2ZW50IHtcbiAgbmFtZTogc3RyaW5nO1xuICAvKiogU3ViZmxvdyBpZGVudGlmaWVyIOKAlCB1c2UgdGhpcyB0byBsb29rIHVwIHRoZSBmdWxsIHNwZWMgdmlhIHRoZSBtYW5pZmVzdC4gKi9cbiAgc3ViZmxvd0lkPzogc3RyaW5nO1xuICAvKiogQnVpbGQtdGltZSBkZXNjcmlwdGlvbiBvZiB3aGF0IHRoaXMgc3ViZmxvdyBkb2VzLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBNYXBwZWQgaW5wdXQgdmFsdWVzIHNlbnQgSU5UTyB0aGUgc3ViZmxvdyAoZnJvbSBpbnB1dE1hcHBlci9pbnB1dEtleXMpLiBQcmVzZW50IG9uIGVudHJ5IGV2ZW50cy4gKi9cbiAgbWFwcGVkSW5wdXQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIFN1YmZsb3cgc2hhcmVkIHN0YXRlIGF0IGV4aXQuIFByZXNlbnQgb24gZXhpdCBldmVudHMuICovXG4gIG91dHB1dFN0YXRlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uU3ViZmxvd1JlZ2lzdGVyZWQgKGR5bmFtaWMgc3ViZmxvdyBhdHRhY2htZW50KS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1N1YmZsb3dSZWdpc3RlcmVkRXZlbnQge1xuICAvKiogU3ViZmxvdyBpZGVudGlmaWVyLiAqL1xuICBzdWJmbG93SWQ6IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIG5hbWUuICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIEJ1aWxkLXRpbWUgZGVzY3JpcHRpb24uICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogRnVsbCBzcGVjIHN0cnVjdHVyZSAod2hlbiBhdmFpbGFibGUgZnJvbSBidWlsZFRpbWVTdHJ1Y3R1cmUpLiAqL1xuICBzcGVjU3RydWN0dXJlPzogdW5rbm93bjtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uTG9vcC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0xvb3BFdmVudCB7XG4gIHRhcmdldDogc3RyaW5nO1xuICBpdGVyYXRpb246IG51bWJlcjtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbkJyZWFrLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93QnJlYWtFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGZyZWUtZm9ybSByZWFzb24gc3VwcGxpZWQgYnkgYHNjb3BlLiRicmVhayhyZWFzb24pYC4gQWJzZW50XG4gICAqIHdoZW4gdGhlIHN0YWdlIGludm9rZWQgYCRicmVhaygpYCB3aXRob3V0IGFuIGFyZ3VtZW50LiBQcm9wYWdhdGVzIHdoZW5cbiAgICogYSBzdWJmbG93IGlzIG1vdW50ZWQgd2l0aCBgcHJvcGFnYXRlQnJlYWs6IHRydWVgIOKAlCB0aGUgb3V0ZXIgYnJlYWtcbiAgICogZXZlbnQgY2FycmllcyB0aGUgaW5uZXIgYnJlYWsncyByZWFzb24gdG9vLlxuICAgKi9cbiAgcmVhc29uPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hlbiB0cnVlLCB0aGlzIGJyZWFrIGV2ZW50IHdhcyByYWlzZWQgb24gdGhlIFBBUkVOVCBiZWNhdXNlIGFuIGlubmVyXG4gICAqIHN1YmZsb3cncyBicmVhayBwcm9wYWdhdGVkIHVwICh2aWEgYFN1YmZsb3dNb3VudE9wdGlvbnMucHJvcGFnYXRlQnJlYWtgKS5cbiAgICogVGhlIG9yaWdpbmF0aW5nIGlubmVyIGJyZWFrIGZpcmVzIGl0cyBvd24gYG9uQnJlYWtgIGV2ZW50IHNlcGFyYXRlbHlcbiAgICog4oCUIHRoaXMgZmxhZyBsZXRzIHJlY29yZGVycyBkaXN0aW5ndWlzaCB0aGUgdHdvLlxuICAgKi9cbiAgcHJvcGFnYXRlZEZyb21TdWJmbG93Pzogc3RyaW5nO1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbkVycm9yLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93RXJyb3JFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIC8qKiBTdHJ1Y3R1cmVkIGVycm9yIGRldGFpbHMg4oCUIHByZXNlcnZlcyBmaWVsZC1sZXZlbCBpc3N1ZXMsIGVycm9yIGNvZGVzLCBldGMuICovXG4gIHN0cnVjdHVyZWRFcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKlxuICAgKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgYCdmbG93J2Agb24gZXZlcnkgZW5naW5lLWRpc3BhdGNoZWRcbiAgICogZXZlbnQuIGBpc0Zsb3dFdmVudCgpYCBjaGVja3MgaXQgZmlyc3QgKGJhY2tsb2cgQjMpOyBvcHRpb25hbCBzb1xuICAgKiBjb25zdW1lci1mYWJyaWNhdGVkIGV2ZW50cyAodGVzdHMsIHJlcGxheXMpIHJlbWFpbiB0eXBlLXZhbGlkIGFuZCBmYWxsXG4gICAqIGJhY2sgdG8gdGhlIGxlZ2FjeSBwaXBlbGluZUlkLWFic2VuY2UgaGV1cmlzdGljLlxuICAgKi9cbiAgY2hhbm5lbD86ICdmbG93Jztcbn1cblxuLyoqXG4gKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uU3RhZ2VSZXRyeSDigJQgb25lIGZhaWxlZCBhdHRlbXB0IGF0IGEgc3RhZ2VcbiAqIHRoYXQgY2FycmllcyBhIGRlY2xhcmVkIHtAbGluayBpbXBvcnQoJy4uL3R5cGVzLmpzJykuUmV0cnlQb2xpY3l9LCBhbmQgd2hpY2hcbiAqIFdJTEwgYmUgYXR0ZW1wdGVkIGFnYWluLlxuICpcbiAqIFdIWSB0aGlzIGV2ZW50IGV4aXN0czogYSByZXRyeSBoYW5kLXJvbGxlZCBpbnNpZGUgYSBzdGFnZSBmdW5jdGlvbiBsZWF2ZXMgbm9cbiAqIG1hcmsgb24gdGhlIHRyYWNlIGF0IGFsbC4gVGhpcyBldmVudCBpcyB3aGF0IG1ha2VzIGEgZGVjbGFyZWQgcmV0cnkgcGFydCBvZlxuICogdGhlIHJlY29yZCDigJQgd2hpY2ggYXR0ZW1wdCBmYWlsZWQsIHdoeSwgaG93IGxvbmcgdGhlIGVuZ2luZSB3YWl0ZWQsIGFuZCBob3dcbiAqIG1hbnkgYXR0ZW1wdHMgdGhlIHBvbGljeSBhbGxvd3MuXG4gKlxuICogRmlyZXMgb25seSBmb3IgYXR0ZW1wdHMgZm9sbG93ZWQgYnkgYW5vdGhlciBhdHRlbXB0LiBUaGUgZmluYWwgZmFpbHVyZSB0YWtlc1xuICogdGhlIG9yZGluYXJ5IGVycm9yIHBhdGggKGBvbkVycm9yYCksIHNvIHRoZSB0d28gbmV2ZXIgZG91YmxlLXJlcG9ydCB0aGUgc2FtZVxuICogZmFpbHVyZTogYW4gZXhoYXVzdGVkIGBhdHRlbXB0czogM2AgcG9saWN5IGVtaXRzIDIgcmV0cnkgZXZlbnRzICsgMSBlcnJvclxuICogZXZlbnQ7IGEgYHJldHJ5T25gIHRoYXQgZGVjbGluZXMgZW1pdHMgMCByZXRyeSBldmVudHMgKyAxIGVycm9yIGV2ZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGFnZVJldHJ5RXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgLyoqIFN0YWJsZSBzdGFnZSBpZGVudGlmaWVyIGZyb20gdGhlIGJ1aWxkZXIgKG1hdGNoZXMgc3BlYyBub2RlIGlkKS4gKi9cbiAgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogV2hpY2ggYXR0ZW1wdCBqdXN0IEZBSUxFRCwgMS1iYXNlZC4gKi9cbiAgYXR0ZW1wdDogbnVtYmVyO1xuICAvKiogVG90YWwgYXR0ZW1wdHMgdGhlIHBvbGljeSBhbGxvd3MsIGluY2x1ZGluZyB0aGUgZmlyc3QuICovXG4gIG1heEF0dGVtcHRzOiBudW1iZXI7XG4gIC8qKiBNaWxsaXNlY29uZHMgdGhlIGVuZ2luZSB3aWxsIHdhaXQgYmVmb3JlIHRoZSBuZXh0IGF0dGVtcHQuIGAwYCA9IGltbWVkaWF0ZS4gKi9cbiAgZGVsYXlNczogbnVtYmVyO1xuICAvKiogSHVtYW4tcmVhZGFibGUgbWVzc2FnZSDigJQgdGhlIHNhbWUgc3RyaW5nIGBvbkVycm9yYCB3b3VsZCBjYXJyeS4gKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuICAvKiogU3RydWN0dXJlZCBkZXRhaWxzIG9mIHRoZSBlcnJvciB0aGF0IGVuZGVkIHRoaXMgYXR0ZW1wdC4gKi9cbiAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqIEV4cGxpY2l0IGNoYW5uZWwgZGlzY3JpbWluYW50IOKAlCBzZWUge0BsaW5rIEZsb3dFcnJvckV2ZW50LmNoYW5uZWx9LiAqL1xuICBjaGFubmVsPzogJ2Zsb3cnO1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblBhdXNlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93UGF1c2VFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBzdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBEYXRhIGZyb20gdGhlIHBhdXNlIHNpZ25hbCAocXVlc3Rpb24sIHJlYXNvbiwgbWV0YWRhdGEpLiAqL1xuICBwYXVzZURhdGE/OiB1bmtub3duO1xuICAvKiogUGF0aCB0aHJvdWdoIHN1YmZsb3dzIHRvIHRoZSBwYXVzZWQgc3RhZ2UuIEVtcHR5IGF0IHJvb3QgbGV2ZWwuICovXG4gIHN1YmZsb3dQYXRoOiByZWFkb25seSBzdHJpbmdbXTtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgc2VlIHtAbGluayBGbG93RXJyb3JFdmVudC5jaGFubmVsfS4gKi9cbiAgY2hhbm5lbD86ICdmbG93Jztcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25SZXN1bWUuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dSZXN1bWVFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBzdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHJlc3VtZSBpbnB1dCB3YXMgcHJvdmlkZWQuICovXG4gIGhhc0lucHV0OiBib29sZWFuO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqIEV4cGxpY2l0IGNoYW5uZWwgZGlzY3JpbWluYW50IOKAlCBzZWUge0BsaW5rIEZsb3dFcnJvckV2ZW50LmNoYW5uZWx9LiAqL1xuICBjaGFubmVsPzogJ2Zsb3cnO1xufVxuXG4vKipcbiAqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25SdW5TdGFydCAvIG9uUnVuRW5kLlxuICpcbiAqIEJyYWNrZXRzIHRoZSB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCBjYWxsLiBTdWJmbG93cyBoYXZlIHRoZWlyIG93blxuICogcGFpciAoYG9uU3ViZmxvd0VudHJ5YCAvIGBvblN1YmZsb3dFeGl0YCk7IHRoZSBydW4gcGFpciBpcyB0aGUgT1VURVJNT1NUXG4gKiBib3VuZGFyeSwgc28gY29uc3VtZXJzIGJ1aWxkaW5nIFwiZXZlcnkgc3RlcCBoYXMgYW4gaW4vb3V0XCIgdmlld3MgY2FuXG4gKiBjbG9zZSB0aGUgY2hhaW4gYXQgdGhlIHRvcCBsZXZlbC5cbiAqXG4gKiAgIC0gYG9uUnVuU3RhcnRgIHBheWxvYWQg4oaSIHRoZSBpbnB1dCBwYXNzZWQgdG8gYHJ1bih7aW5wdXR9KWBcbiAqICAgLSBgb25SdW5FbmRgICAgcGF5bG9hZCDihpIgdGhlIGNoYXJ0J3MgcmV0dXJuIHZhbHVlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1J1bkV2ZW50IHtcbiAgLyoqIE9uIGBvblJ1blN0YXJ0YDogdGhlIGlucHV0IGZyb20gYHJ1bih7aW5wdXR9KWAgYWZ0ZXIgc2NoZW1hIHZhbGlkYXRpb24uXG4gICAqICBPbiBgb25SdW5FbmRgOiB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGNoYXJ0LiBVbmRlZmluZWQgaWYgbmVpdGhlci4gKi9cbiAgcGF5bG9hZD86IHVua25vd247XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xufVxuXG4vKipcbiAqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25SdW5GYWlsZWQg4oCUIHRoZSBURVJNSU5BTCBmYWlsdXJlIGJvdW5kYXJ5XG4gKiBmb3IgYSB0b3AtbGV2ZWwgcnVuLiBNaXJyb3Igb2YgYG9uUnVuRW5kYCBmb3IgdGhlIGVycm9yIHBhdGg6IGl0IGZpcmVzXG4gKiBvbmNlLCBkdXJpbmcgdHJhdmVyc2FsLCB3aGVuIHRoZSBydW4gdGhyb3dzIGEgbm9uLXBhdXNlIGVycm9yLCBiZWZvcmVcbiAqIHRoZSBleGNlcHRpb24gcHJvcGFnYXRlcy4gQ2FycmllcyB0aGUgc3RydWN0dXJlZCBlcnJvciAoZmllbGQtbGV2ZWxcbiAqIGlzc3VlcywgY29kZXMpIHJhdGhlciB0aGFuIGEgZmxhdHRlbmVkIHN0cmluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93UnVuRmFpbGVkRXZlbnQge1xuICAvKiogU3RydWN0dXJlZCBkZXRhaWxzIG9mIHRoZSBlcnJvciB0aGF0IHRlcm1pbmF0ZWQgdGhlIHJ1bi4gKi9cbiAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbn1cblxuLyoqXG4gKiBGbG93UmVjb3JkZXIg4oCUIFBsdWdnYWJsZSBvYnNlcnZlciBmb3IgY29udHJvbCBmbG93IGV2ZW50cy5cbiAqXG4gKiBNaXJyb3JzIHRoZSBzY29wZS1sZXZlbCBTY29wZVJlY29yZGVyIHBhdHRlcm4gZm9yIHRoZSBlbmdpbmUgbGF5ZXIuXG4gKiBBbGwgbWV0aG9kcyBhcmUgb3B0aW9uYWwg4oCUIGltcGxlbWVudCBvbmx5IHRoZSBob29rcyB5b3UgbmVlZC5cbiAqIFJlY29yZGVycyBhcmUgaW52b2tlZCBzeW5jaHJvbm91c2x5IGluIGF0dGFjaG1lbnQgb3JkZXIuXG4gKiBJZiBhIHJlY29yZGVyIHRocm93cywgdGhlIGVycm9yIGlzIGNhdWdodCBhbmQgc3dhbGxvd2VkOyBleGVjdXRpb24gY29udGludWVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtZXRyaWNzUmVjb3JkZXI6IEZsb3dSZWNvcmRlciA9IHtcbiAqICAgaWQ6ICdtZXRyaWNzJyxcbiAqICAgb25Mb29wOiAoZXZlbnQpID0+IHJlY29yZE1ldHJpYygnbG9vcC5pdGVyYXRpb24nLCBldmVudC5pdGVyYXRpb24pLFxuICogICBvbkRlY2lzaW9uOiAoZXZlbnQpID0+IHJlY29yZE1ldHJpYygnZGVjaXNpb24nLCBldmVudC5jaG9zZW4pLFxuICogfTtcbiAqIGV4ZWN1dG9yLmF0dGFjaEZsb3dSZWNvcmRlcihtZXRyaWNzUmVjb3JkZXIpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1JlY29yZGVyIHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgb25TdGFnZUV4ZWN1dGVkPyhldmVudDogRmxvd1N0YWdlRXZlbnQpOiB2b2lkO1xuICBvbk5leHQ/KGV2ZW50OiBGbG93TmV4dEV2ZW50KTogdm9pZDtcbiAgb25EZWNpc2lvbj8oZXZlbnQ6IEZsb3dEZWNpc2lvbkV2ZW50KTogdm9pZDtcbiAgb25Gb3JrPyhldmVudDogRmxvd0ZvcmtFdmVudCk6IHZvaWQ7XG4gIG9uU2VsZWN0ZWQ/KGV2ZW50OiBGbG93U2VsZWN0ZWRFdmVudCk6IHZvaWQ7XG4gIG9uU3ViZmxvd0VudHJ5PyhldmVudDogRmxvd1N1YmZsb3dFdmVudCk6IHZvaWQ7XG4gIG9uU3ViZmxvd0V4aXQ/KGV2ZW50OiBGbG93U3ViZmxvd0V2ZW50KTogdm9pZDtcbiAgLyoqIENhbGxlZCB3aGVuIGEgZHluYW1pYyBzdWJmbG93IGlzIHJlZ2lzdGVyZWQgZHVyaW5nIHRyYXZlcnNhbC4gKi9cbiAgb25TdWJmbG93UmVnaXN0ZXJlZD8oZXZlbnQ6IEZsb3dTdWJmbG93UmVnaXN0ZXJlZEV2ZW50KTogdm9pZDtcbiAgb25Mb29wPyhldmVudDogRmxvd0xvb3BFdmVudCk6IHZvaWQ7XG4gIG9uQnJlYWs/KGV2ZW50OiBGbG93QnJlYWtFdmVudCk6IHZvaWQ7XG4gIG9uRXJyb3I/KGV2ZW50OiBGbG93RXJyb3JFdmVudCk6IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsZWQgb25jZSBwZXIgZmFpbGVkIGF0dGVtcHQgdGhhdCBXSUxMIGJlIHJldHJpZWQsIGZvciBzdGFnZXMgY2FycnlpbmcgYVxuICAgKiBkZWNsYXJlZCBgcmV0cnlgIHBvbGljeS4gVGhlIGZpbmFsIGZhaWx1cmUgYXJyaXZlcyB2aWEgYG9uRXJyb3JgIGluc3RlYWQsXG4gICAqIHNvIGEgc3RhZ2UgbmV2ZXIgcmVwb3J0cyB0aGUgc2FtZSBmYWlsdXJlIHR3aWNlLiBTZWVcbiAgICoge0BsaW5rIEZsb3dTdGFnZVJldHJ5RXZlbnR9IGZvciB0aGUgZXhhY3QgZXZlbnQgYXJpdGhtZXRpYy5cbiAgICovXG4gIG9uU3RhZ2VSZXRyeT8oZXZlbnQ6IEZsb3dTdGFnZVJldHJ5RXZlbnQpOiB2b2lkO1xuICBvblBhdXNlPyhldmVudDogRmxvd1BhdXNlRXZlbnQpOiB2b2lkO1xuICBvblJlc3VtZT8oZXZlbnQ6IEZsb3dSZXN1bWVFdmVudCk6IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsZWQgb25jZSBwZXIgdG9wLWxldmVsIGBleGVjdXRvci5ydW4oKWAgQkVGT1JFIHRyYXZlcnNhbCBiZWdpbnMuXG4gICAqIENhcnJpZXMgYGV2ZW50LnBheWxvYWQgPSBydW4oe2lucHV0fSlgLiBTdWJmbG93LXRyYXZlcnNlcnMgZG9uJ3QgZmlyZSBpdC5cbiAgICovXG4gIG9uUnVuU3RhcnQ/KGV2ZW50OiBGbG93UnVuRXZlbnQpOiB2b2lkO1xuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIHRvcC1sZXZlbCBgZXhlY3V0b3IucnVuKClgIEFGVEVSIHRyYXZlcnNhbCBjb21wbGV0ZXNcbiAgICogY2xlYW5seS4gQ2FycmllcyBgZXZlbnQucGF5bG9hZCA9IGNoYXJ0J3MgcmV0dXJuIHZhbHVlYC4gTk9UIGZpcmVkIG9uXG4gICAqIHBhdXNlICh0aGUgcnVuIGRpZG4ndCBlbmQpIG9yIHVuY2F1Z2h0IGVycm9yLlxuICAgKi9cbiAgb25SdW5FbmQ/KGV2ZW50OiBGbG93UnVuRXZlbnQpOiB2b2lkO1xuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIHRvcC1sZXZlbCBgZXhlY3V0b3IucnVuKClgIHdoZW4gdGhlIHJ1biB0aHJvd3MgYVxuICAgKiBub24tcGF1c2UgZXJyb3IsIEJFRk9SRSB0aGUgZXhjZXB0aW9uIHByb3BhZ2F0ZXMuIFRoZSBURVJNSU5BTFxuICAgKiBjb3VudGVycGFydCB0byBgb25SdW5FbmRgIOKAlCBsZXRzIGEgbW9uaXRvciBjbG9zZSB0aGUgcnVuIGJvdW5kYXJ5IG9uXG4gICAqIGZhaWx1cmUgaW5zdGVhZCBvZiB3YWl0aW5nIGZvcmV2ZXIuIE5PVCBmaXJlZCBvbiBwYXVzZS5cbiAgICovXG4gIG9uUnVuRmFpbGVkPyhldmVudDogRmxvd1J1bkZhaWxlZEV2ZW50KTogdm9pZDtcbiAgLyoqIENhbGxlZCBiZWZvcmUgZWFjaCBydW4gdG8gcmVzZXQgcGVyLXJ1biBzdGF0ZS4gSW1wbGVtZW50IGZvciBzdGF0ZWZ1bCByZWNvcmRlcnMuICovXG4gIGNsZWFyPygpOiB2b2lkO1xuICAvKiogT3B0aW9uYWw6IGV4cG9zZSBjb2xsZWN0ZWQgZGF0YSBmb3IgaW5jbHVzaW9uIGluIHNuYXBzaG90cy4gKi9cbiAgdG9TbmFwc2hvdD8oKTogaW1wb3J0KCcuLi8uLi9yZWNvcmRlci9zbmFwc2hvdC5qcycpLlJlY29yZGVyQnVuZGxlO1xufVxuIl19
|
|
@@ -414,9 +414,7 @@ export interface IExecutionRuntime {
|
|
|
414
414
|
* and mirror (`ExecutionRuntime.newRoot`). `SubflowExecutor` swaps a
|
|
415
415
|
* subflow's seed frame for the frame its first stage runs on with it.
|
|
416
416
|
*/
|
|
417
|
-
newRoot
|
|
418
|
-
/** @deprecated since 9.35.0 — the mirror follows `RunPolicy.mirror`; `ExecutionRuntime.enableRedactedMirror`. */
|
|
419
|
-
enableRedactedMirror?(): void;
|
|
417
|
+
newRoot(name: string, id: string): StageContext;
|
|
420
418
|
getSnapshot(options?: {
|
|
421
419
|
redact?: boolean;
|
|
422
420
|
}): {
|