aws-cdk 2.177.0 → 2.178.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD_PARTY_LICENSES +5518 -181
- package/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/lib/api/aws-auth/sdk-logger.d.ts +4 -0
- package/lib/api/aws-auth/sdk-logger.js +18 -7
- package/lib/api/aws-auth/sdk-provider.js +4 -3
- package/lib/api/aws-auth/sdk.d.ts +1 -0
- package/lib/api/aws-auth/sdk.js +4 -3
- package/lib/api/aws-auth/tracing.d.ts +11 -0
- package/lib/api/aws-auth/tracing.js +60 -0
- package/lib/api/deployments/asset-publishing.js +7 -1
- package/lib/cli/cdk-toolkit.d.ts +6 -0
- package/lib/cli/cdk-toolkit.js +11 -10
- package/lib/cli/cli.js +10 -5
- package/lib/cli/parse-command-line-arguments.js +11 -15
- package/lib/cli/user-input.d.ts +4 -4
- package/lib/cli/user-input.js +1 -1
- package/lib/commands/context.js +2 -2
- package/lib/index.js +204 -158
- package/lib/index_bg.wasm +0 -0
- package/lib/init-templates/.init-version.json +1 -1
- package/lib/init-templates/.recommended-feature-flags.json +2 -1
- package/lib/legacy-exports-source.d.ts +1 -1
- package/lib/legacy-exports-source.js +3 -3
- package/lib/logging.d.ts +6 -13
- package/lib/logging.js +25 -70
- package/lib/toolkit/cli-io-host.d.ts +16 -12
- package/lib/toolkit/cli-io-host.js +127 -30
- package/package.json +10 -10
- package/test/_helpers/prompts.d.ts +11 -0
- package/test/_helpers/prompts.js +22 -0
- package/test/api/aws-auth/sdk-logger.test.js +16 -11
- package/test/api/logs/logging.test.js +4 -54
- package/test/cli/cdk-toolkit.test.js +7 -7
- package/test/cli/cli-arguments.test.js +4 -4
- package/test/cli/cli.test.js +2 -2
- package/test/cli/user-config.test.js +28 -1
- package/test/toolkit/cli-io-host-corked.test.d.ts +1 -0
- package/test/toolkit/cli-io-host-corked.test.js +73 -0
- package/test/toolkit/cli-io-host.test.js +164 -60
- package/lib/util/tracing.d.ts +0 -9
- package/lib/util/tracing.js +0 -58
|
@@ -2,13 +2,17 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CliIoHost = exports.levelPriority = void 0;
|
|
4
4
|
exports.isCI = isCI;
|
|
5
|
+
const util = require("node:util");
|
|
5
6
|
const chalk = require("chalk");
|
|
7
|
+
const promptly = require("promptly");
|
|
8
|
+
const error_1 = require("./error");
|
|
6
9
|
exports.levelPriority = {
|
|
7
10
|
error: 0,
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
result: 1,
|
|
12
|
+
warn: 2,
|
|
13
|
+
info: 3,
|
|
14
|
+
debug: 4,
|
|
15
|
+
trace: 5,
|
|
12
16
|
};
|
|
13
17
|
/**
|
|
14
18
|
* A simple IO host for the CLI that writes messages to the console.
|
|
@@ -24,6 +28,9 @@ class CliIoHost {
|
|
|
24
28
|
return CliIoHost._instance;
|
|
25
29
|
}
|
|
26
30
|
constructor(props = {}) {
|
|
31
|
+
// Corked Logging
|
|
32
|
+
this.corkedCounter = 0;
|
|
33
|
+
this.corkedLoggingBuffer = [];
|
|
27
34
|
this._currentAction = props.currentAction ?? 'none';
|
|
28
35
|
this._isTTY = props.isTTY ?? process.stdout.isTTY ?? false;
|
|
29
36
|
this._logLevel = props.logLevel ?? 'info';
|
|
@@ -91,6 +98,31 @@ class CliIoHost {
|
|
|
91
98
|
set logLevel(level) {
|
|
92
99
|
this._logLevel = level;
|
|
93
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Executes a block of code with corked logging. All log messages during execution
|
|
103
|
+
* are buffered and only written when all nested cork blocks complete (when CORK_COUNTER reaches 0).
|
|
104
|
+
* The corking is bound to the specific instance of the CliIoHost.
|
|
105
|
+
*
|
|
106
|
+
* @param block - Async function to execute with corked logging
|
|
107
|
+
* @returns Promise that resolves with the block's return value
|
|
108
|
+
*/
|
|
109
|
+
async withCorkedLogging(block) {
|
|
110
|
+
this.corkedCounter++;
|
|
111
|
+
try {
|
|
112
|
+
return await block();
|
|
113
|
+
}
|
|
114
|
+
finally {
|
|
115
|
+
this.corkedCounter--;
|
|
116
|
+
if (this.corkedCounter === 0) {
|
|
117
|
+
// Process each buffered message through notify
|
|
118
|
+
for (const ioMessage of this.corkedLoggingBuffer) {
|
|
119
|
+
await this.notify(ioMessage);
|
|
120
|
+
}
|
|
121
|
+
// remove all buffered messages in-place
|
|
122
|
+
this.corkedLoggingBuffer.splice(0);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
94
126
|
/**
|
|
95
127
|
* Notifies the host of a message.
|
|
96
128
|
* The caller waits until the notification completes.
|
|
@@ -102,34 +134,33 @@ class CliIoHost {
|
|
|
102
134
|
if (exports.levelPriority[msg.level] > exports.levelPriority[this.logLevel]) {
|
|
103
135
|
return;
|
|
104
136
|
}
|
|
137
|
+
if (this.corkedCounter > 0) {
|
|
138
|
+
this.corkedLoggingBuffer.push(msg);
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
105
141
|
const output = this.formatMessage(msg);
|
|
106
|
-
const stream = this.
|
|
107
|
-
|
|
108
|
-
stream.write(output, (err) => {
|
|
109
|
-
if (err) {
|
|
110
|
-
reject(err);
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
resolve();
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
});
|
|
142
|
+
const stream = this.selectStream(msg.level);
|
|
143
|
+
stream.write(output);
|
|
117
144
|
}
|
|
118
145
|
/**
|
|
119
|
-
* Determines
|
|
146
|
+
* Determines the output stream, based on message level and configuration.
|
|
120
147
|
*/
|
|
121
|
-
|
|
122
|
-
//
|
|
123
|
-
//
|
|
124
|
-
//
|
|
125
|
-
//
|
|
126
|
-
//
|
|
127
|
-
|
|
128
|
-
|
|
148
|
+
selectStream(level) {
|
|
149
|
+
// The stream selection policy for the CLI is the following:
|
|
150
|
+
//
|
|
151
|
+
// (1) Messages of level `result` always go to `stdout`
|
|
152
|
+
// (2) Messages of level `error` always go to `stderr`.
|
|
153
|
+
// (3a) All remaining messages go to `stderr`.
|
|
154
|
+
// (3b) If we are in CI mode, all remaining messages go to `stdout`.
|
|
155
|
+
//
|
|
156
|
+
switch (level) {
|
|
157
|
+
case 'error':
|
|
158
|
+
return process.stderr;
|
|
159
|
+
case 'result':
|
|
160
|
+
return process.stdout;
|
|
161
|
+
default:
|
|
162
|
+
return this.isCI ? process.stdout : process.stderr;
|
|
129
163
|
}
|
|
130
|
-
if (level == 'error')
|
|
131
|
-
return process.stderr;
|
|
132
|
-
return CliIoHost.instance().isCI ? process.stdout : process.stderr;
|
|
133
164
|
}
|
|
134
165
|
/**
|
|
135
166
|
* Notifies the host of a message that requires a response.
|
|
@@ -138,11 +169,49 @@ class CliIoHost {
|
|
|
138
169
|
* default response from the input message will be used.
|
|
139
170
|
*/
|
|
140
171
|
async requestResponse(msg) {
|
|
172
|
+
// First call out to a registered instance if we have one
|
|
141
173
|
if (this._internalIoHost) {
|
|
142
174
|
return this._internalIoHost.requestResponse(msg);
|
|
143
175
|
}
|
|
144
|
-
|
|
145
|
-
|
|
176
|
+
// If the request cannot be prompted for by the CliIoHost, we just accept the default
|
|
177
|
+
if (!isPromptableRequest(msg)) {
|
|
178
|
+
await this.notify(msg);
|
|
179
|
+
return msg.defaultResponse;
|
|
180
|
+
}
|
|
181
|
+
const response = await this.withCorkedLogging(async () => {
|
|
182
|
+
// prepare prompt data
|
|
183
|
+
// @todo this format is not defined anywhere, probably should be
|
|
184
|
+
const data = msg.data ?? {};
|
|
185
|
+
const motivation = data.motivation ?? 'User input is needed';
|
|
186
|
+
const concurrency = data.concurrency ?? 0;
|
|
187
|
+
// only talk to user if STDIN is a terminal (otherwise, fail)
|
|
188
|
+
if (!this.isTTY) {
|
|
189
|
+
throw new error_1.ToolkitError(`${motivation}, but terminal (TTY) is not attached so we are unable to get a confirmation from the user`);
|
|
190
|
+
}
|
|
191
|
+
// only talk to user if concurrency is 1 (otherwise, fail)
|
|
192
|
+
if (concurrency > 1) {
|
|
193
|
+
throw new error_1.ToolkitError(`${motivation}, but concurrency is greater than 1 so we are unable to get a confirmation from the user`);
|
|
194
|
+
}
|
|
195
|
+
// Basic confirmation prompt
|
|
196
|
+
// We treat all requests with a boolean response as confirmation prompts
|
|
197
|
+
if (isConfirmationPrompt(msg)) {
|
|
198
|
+
const confirmed = await promptly.confirm(`${chalk.cyan(msg.message)} (y/n)`);
|
|
199
|
+
if (!confirmed) {
|
|
200
|
+
throw new error_1.ToolkitError('Aborted by user');
|
|
201
|
+
}
|
|
202
|
+
return confirmed;
|
|
203
|
+
}
|
|
204
|
+
// Asking for a specific value
|
|
205
|
+
const prompt = extractPromptInfo(msg);
|
|
206
|
+
const answer = await promptly.prompt(`${chalk.cyan(msg.message)} (${prompt.default})`, {
|
|
207
|
+
default: prompt.default,
|
|
208
|
+
});
|
|
209
|
+
return prompt.convertAnswer(answer);
|
|
210
|
+
});
|
|
211
|
+
// We need to cast this because it is impossible to narrow the generic type
|
|
212
|
+
// isPromptableRequest ensures that the response type is one we can prompt for
|
|
213
|
+
// the remaining code ensure we are indeed returning the correct type
|
|
214
|
+
return response;
|
|
146
215
|
}
|
|
147
216
|
/**
|
|
148
217
|
* Formats a message for console output with optional color support
|
|
@@ -166,9 +235,37 @@ class CliIoHost {
|
|
|
166
235
|
}
|
|
167
236
|
}
|
|
168
237
|
exports.CliIoHost = CliIoHost;
|
|
238
|
+
/**
|
|
239
|
+
* This IoHost implementation considers a request promptable, if:
|
|
240
|
+
* - it's a yes/no confirmation
|
|
241
|
+
* - asking for a string or number value
|
|
242
|
+
*/
|
|
243
|
+
function isPromptableRequest(msg) {
|
|
244
|
+
return isConfirmationPrompt(msg)
|
|
245
|
+
|| typeof msg.defaultResponse === 'string'
|
|
246
|
+
|| typeof msg.defaultResponse === 'number';
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Check if the request is a confirmation prompt
|
|
250
|
+
* We treat all requests with a boolean response as confirmation prompts
|
|
251
|
+
*/
|
|
252
|
+
function isConfirmationPrompt(msg) {
|
|
253
|
+
return typeof msg.defaultResponse === 'boolean';
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Helper to extract information for promptly from the request
|
|
257
|
+
*/
|
|
258
|
+
function extractPromptInfo(msg) {
|
|
259
|
+
const isNumber = (typeof msg.defaultResponse === 'number');
|
|
260
|
+
return {
|
|
261
|
+
default: util.format(msg.defaultResponse),
|
|
262
|
+
convertAnswer: isNumber ? (v) => Number(v) : (v) => String(v),
|
|
263
|
+
};
|
|
264
|
+
}
|
|
169
265
|
const styleMap = {
|
|
170
266
|
error: chalk.red,
|
|
171
267
|
warn: chalk.yellow,
|
|
268
|
+
result: chalk.white,
|
|
172
269
|
info: chalk.white,
|
|
173
270
|
debug: chalk.gray,
|
|
174
271
|
trace: chalk.gray,
|
|
@@ -180,4 +277,4 @@ const styleMap = {
|
|
|
180
277
|
function isCI() {
|
|
181
278
|
return process.env.CI !== undefined && process.env.CI !== 'false' && process.env.CI !== '0';
|
|
182
279
|
}
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWlvLWhvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjbGktaW8taG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFtV0Esb0JBRUM7QUFyV0QsK0JBQStCO0FBeUVsQixRQUFBLGFBQWEsR0FBbUM7SUFDM0QsS0FBSyxFQUFFLENBQUM7SUFDUixJQUFJLEVBQUUsQ0FBQztJQUNQLElBQUksRUFBRSxDQUFDO0lBQ1AsS0FBSyxFQUFFLENBQUM7SUFDUixLQUFLLEVBQUUsQ0FBQztDQUNULENBQUM7QUErRUY7O0dBRUc7QUFDSCxNQUFhLFNBQVM7SUFDcEI7O09BRUc7SUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQXdCLEVBQUUsRUFBRSxRQUFRLEdBQUcsS0FBSztRQUMxRCxJQUFJLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNyQyxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQWFELFlBQW9CLFFBQXdCLEVBQUU7UUFDNUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsYUFBYSxJQUFJLE1BQXVCLENBQUM7UUFDckUsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztRQUMzRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDO1FBQzFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxjQUFjLENBQUMsTUFBZTtRQUNuQyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsZUFB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Q0FBQyxNQUFNO0lBQ2xCLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSztJQUNqQixLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUk7SUFDakIsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJO0NBQ2xCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxTQUFnQixJQUFJO0lBQ2xCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLE9BQU8sSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUM7QUFDOUYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcblxuZXhwb3J0IHR5cGUgSW9NZXNzYWdlQ29kZUNhdGVnb3J5ID0gJ1RPT0xLSVQnIHwgJ1NESycgfCAnQVNTRVRTJztcbmV4cG9ydCB0eXBlIElvQ29kZUxldmVsID0gJ0UnIHwgJ1cnIHwgJ0knO1xuZXhwb3J0IHR5cGUgSW9NZXNzYWdlU3BlY2lmaWNDb2RlPEwgZXh0ZW5kcyBJb0NvZGVMZXZlbD4gPSBgQ0RLXyR7SW9NZXNzYWdlQ29kZUNhdGVnb3J5fV8ke0x9JHtudW1iZXJ9JHtudW1iZXJ9JHtudW1iZXJ9JHtudW1iZXJ9YDtcbmV4cG9ydCB0eXBlIElvTWVzc2FnZUNvZGUgPSBJb01lc3NhZ2VTcGVjaWZpY0NvZGU8SW9Db2RlTGV2ZWw+O1xuXG4vKipcbiAqIEJhc2ljIG1lc3NhZ2Ugc3RydWN0dXJlIGZvciB0b29sa2l0IG5vdGlmaWNhdGlvbnMuXG4gKiBNZXNzYWdlcyBhcmUgZW1pdHRlZCBieSB0aGUgdG9vbGtpdCBhbmQgaGFuZGxlZCBieSB0aGUgSW9Ib3N0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElvTWVzc2FnZTxUPiB7XG4gIC8qKlxuICAgKiBUaGUgdGltZSB0aGUgbWVzc2FnZSB3YXMgZW1pdHRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWU6IERhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgbGV2ZWwgb2YgdGhlIG1lc3NhZ2UuXG4gICAqL1xuICByZWFkb25seSBsZXZlbDogSW9NZXNzYWdlTGV2ZWw7XG5cbiAgLyoqXG4gICAqIFRoZSBhY3Rpb24gdGhhdCB0cmlnZ2VyZWQgdGhlIG1lc3NhZ2UuXG4gICAqL1xuICByZWFkb25seSBhY3Rpb246IFRvb2xraXRBY3Rpb247XG5cbiAgLyoqXG4gICAqIEEgc2hvcnQgbWVzc2FnZSBjb2RlIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIGEgbWVzc2FnZSB0eXBlIHVzaW5nIHRoZSBmb3JtYXQgQ0RLX1tDQVRFR09SWV1fW0UvVy9JXVswMDAtOTk5XS5cbiAgICpcbiAgICogVGhlIGxldmVsIGluZGljYXRvciBmb2xsb3dzIHRoZXNlIHJ1bGVzOlxuICAgKiAtICdFJyBmb3IgZXJyb3IgbGV2ZWwgbWVzc2FnZXNcbiAgICogLSAnVycgZm9yIHdhcm5pbmcgbGV2ZWwgbWVzc2FnZXNcbiAgICogLSAnSScgZm9yIGluZm8vZGVidWcvdHJhY2UgbGV2ZWwgbWVzc2FnZXNcbiAgICpcbiAgICogQ29kZXMgZW5kaW5nIGluIDAwMCBhcmUgZ2VuZXJpYyBtZXNzYWdlcywgd2hpbGUgY29kZXMgZW5kaW5nIGluIDAwMS05OTkgYXJlIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBtZXNzYWdlLlxuICAgKiBUaGUgZm9sbG93aW5nIGFyZSBleGFtcGxlcyBvZiB2YWxpZCBhbmQgaW52YWxpZCBtZXNzYWdlIGNvZGVzOlxuICAgKiBgYGB0c1xuICAgKiAnQ0RLX0FTU0VUU19JMDAwJyAgICAgICAvLyB2YWxpZDogZ2VuZXJpYyBhc3NldHMgaW5mbyBtZXNzYWdlXG4gICAqICdDREtfVE9PTEtJVF9FMDAyJyAgICAgIC8vIHZhbGlkOiBzcGVjaWZpYyB0b29sa2l0IGVycm9yIG1lc3NhZ2VcbiAgICogJ0NES19TREtfVzAyMycgICAgICAgICAgLy8gdmFsaWQ6IHNwZWNpZmljIHNkayB3YXJuaW5nIG1lc3NhZ2VcbiAgICogYGBgXG4gICAqL1xuICByZWFkb25seSBjb2RlOiBJb01lc3NhZ2VDb2RlO1xuXG4gIC8qKlxuICAgKiBUaGUgbWVzc2FnZSB0ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgbWVzc2FnZSB3aWxsIGJlIHdyaXR0ZW4gdG8gc3Rkb3V0XG4gICAqIHJlZ2FyZGxlc3Mgb2YgYW55IG90aGVyIHBhcmFtZXRlcnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmb3JjZVN0ZG91dD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRhIGF0dGFjaGVkIHRvIHRoZSBtZXNzYWdlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YT86IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW9SZXF1ZXN0PFQsIFU+IGV4dGVuZHMgSW9NZXNzYWdlPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IHJlc3BvbnNlIHRoYXQgd2lsbCBiZSB1c2VkIGlmIG5vIGRhdGEgaXMgcmV0dXJuZWQuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0UmVzcG9uc2U6IFU7XG59XG5cbmV4cG9ydCB0eXBlIElvTWVzc2FnZUxldmVsID0gJ2Vycm9yJyB8ICd3YXJuJyB8ICdpbmZvJyB8ICdkZWJ1ZycgfCAndHJhY2UnO1xuXG5leHBvcnQgY29uc3QgbGV2ZWxQcmlvcml0eTogUmVjb3JkPElvTWVzc2FnZUxldmVsLCBudW1iZXI+ID0ge1xuICBlcnJvcjogMCxcbiAgd2FybjogMSxcbiAgaW5mbzogMixcbiAgZGVidWc6IDMsXG4gIHRyYWNlOiA0LFxufTtcblxuLyoqXG4gKiBUaGUgY3VycmVudCBhY3Rpb24gYmVpbmcgcGVyZm9ybWVkIGJ5IHRoZSBDTEkuICdub25lJyByZXByZXNlbnRzIHRoZSBhYnNlbmNlIG9mIGFuIGFjdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgVG9vbGtpdEFjdGlvbiA9XG58ICdib290c3RyYXAnXG58ICdzeW50aCdcbnwgJ2xpc3QnXG58ICdkaWZmJ1xufCAnZGVwbG95J1xufCAncm9sbGJhY2snXG58ICd3YXRjaCdcbnwgJ2Rlc3Ryb3knXG58ICdjb250ZXh0J1xufCAnZG9jcydcbnwgJ2RvY3RvcidcbnwgJ2djJ1xufCAnaW1wb3J0J1xufCAnbWV0YWRhdGEnXG58ICdub3RpY2VzJ1xufCAnaW5pdCdcbnwgJ21pZ3JhdGUnXG58ICd2ZXJzaW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBJSW9Ib3N0IHtcbiAgLyoqXG4gICAqIE5vdGlmaWVzIHRoZSBob3N0IG9mIGEgbWVzc2FnZS5cbiAgICogVGhlIGNhbGxlciB3YWl0cyB1bnRpbCB0aGUgbm90aWZpY2F0aW9uIGNvbXBsZXRlcy5cbiAgICovXG4gIG5vdGlmeTxUPihtc2c6IElvTWVzc2FnZTxUPik6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIE5vdGlmaWVzIHRoZSBob3N0IG9mIGEgbWVzc2FnZSB0aGF0IHJlcXVpcmVzIGEgcmVzcG9uc2UuXG4gICAqXG4gICAqIElmIHRoZSBob3N0IGRvZXMgbm90IHJldHVybiBhIHJlc3BvbnNlIHRoZSBzdWdnZXN0ZWRcbiAgICogZGVmYXVsdCByZXNwb25zZSBmcm9tIHRoZSBpbnB1dCBtZXNzYWdlIHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIHJlcXVlc3RSZXNwb25zZTxULCBVPihtc2c6IElvUmVxdWVzdDxULCBVPik6IFByb21pc2U8VT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpSW9Ib3N0UHJvcHMge1xuICAvKipcbiAgICogVGhlIGluaXRpYWwgVG9vbGtpdCBhY3Rpb24gdGhlIGhvc3RzIHN0YXJ0cyB3aXRoLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnbm9uZSdcbiAgICovXG4gIHJlYWRvbmx5IGN1cnJlbnRBY3Rpb24/OiBUb29sa2l0QWN0aW9uO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHRoZSB2ZXJib3NpdHkgb2YgdGhlIG91dHB1dC5cbiAgICpcbiAgICogVGhlIENsaUlvSG9zdCB3aWxsIHN0aWxsIHJlY2VpdmUgYWxsIG1lc3NhZ2VzIGFuZCByZXF1ZXN0cyxcbiAgICogYnV0IG9ubHkgdGhlIG1lc3NhZ2VzIGluY2x1ZGVkIGluIHRoaXMgbGV2ZWwgd2lsbCBiZSBwcmludGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnaW5mbydcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0xldmVsPzogSW9NZXNzYWdlTGV2ZWw7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyB0aGUgYXV0b21hdGljIFRUWSBkZXRlY3Rpb24uXG4gICAqXG4gICAqIFdoZW4gVFRZIGlzIGRpc2FibGVkLCB0aGUgQ0xJIHdpbGwgaGF2ZSBubyBpbnRlcmFjdGlvbnMgb3IgY29sb3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGV0ZXJtaW5lZCBmcm9tIHRoZSBjdXJyZW50IHByb2Nlc3NcbiAgICovXG4gIHJlYWRvbmx5IGlzVFRZPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgQ2xpSW9Ib3N0IGlzIHJ1bm5pbmcgaW4gQ0kgbW9kZS5cbiAgICpcbiAgICogSW4gQ0kgbW9kZSwgYWxsIG5vbi1lcnJvciBvdXRwdXQgZ29lcyB0byBzdGRvdXQgaW5zdGVhZCBvZiBzdGRlcnIuXG4gICAqIFNldCB0byBmYWxzZSBpbiB0aGUgQ2xpSW9Ib3N0IGNvbnN0cnVjdG9yIGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4gaWYgdGhlIENMSSBDSSBhcmd1bWVudCBpcyBwYXNzZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZXRlcm1pbmVkIGZyb20gdGhlIGVudmlyb25tZW50LCBzcGVjaWZpY2FsbHkgYmFzZWQgb24gYHByb2Nlc3MuZW52LkNJYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNDST86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSBzaW1wbGUgSU8gaG9zdCBmb3IgdGhlIENMSSB0aGF0IHdyaXRlcyBtZXNzYWdlcyB0byB0aGUgY29uc29sZS5cbiAqL1xuZXhwb3J0IGNsYXNzIENsaUlvSG9zdCBpbXBsZW1lbnRzIElJb0hvc3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2luZ2xldG9uIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgaW5zdGFuY2UocHJvcHM6IENsaUlvSG9zdFByb3BzID0ge30sIGZvcmNlTmV3ID0gZmFsc2UpOiBDbGlJb0hvc3Qge1xuICAgIGlmIChmb3JjZU5ldyB8fCAhQ2xpSW9Ib3N0Ll9pbnN0YW5jZSkge1xuICAgICAgQ2xpSW9Ib3N0Ll9pbnN0YW5jZSA9IG5ldyBDbGlJb0hvc3QocHJvcHMpO1xuICAgIH1cbiAgICByZXR1cm4gQ2xpSW9Ib3N0Ll9pbnN0YW5jZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIENsaUlvSG9zdFxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBDbGlJb0hvc3QgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBfY3VycmVudEFjdGlvbjogVG9vbGtpdEFjdGlvbjtcbiAgcHJpdmF0ZSBfaXNDSTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfaXNUVFk6IGJvb2xlYW47XG4gIHByaXZhdGUgX2xvZ0xldmVsOiBJb01lc3NhZ2VMZXZlbDtcbiAgcHJpdmF0ZSBfaW50ZXJuYWxJb0hvc3Q/OiBJSW9Ib3N0O1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJvcHM6IENsaUlvSG9zdFByb3BzID0ge30pIHtcbiAgICB0aGlzLl9jdXJyZW50QWN0aW9uID0gcHJvcHMuY3VycmVudEFjdGlvbiA/PyAnbm9uZScgYXMgVG9vbGtpdEFjdGlvbjtcbiAgICB0aGlzLl9pc1RUWSA9IHByb3BzLmlzVFRZID8/IHByb2Nlc3Muc3Rkb3V0LmlzVFRZID8/IGZhbHNlO1xuICAgIHRoaXMuX2xvZ0xldmVsID0gcHJvcHMubG9nTGV2ZWwgPz8gJ2luZm8nO1xuICAgIHRoaXMuX2lzQ0kgPSBwcm9wcy5pc0NJID8/IGlzQ0koKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzaW5nbGV0b24gaW5zdGFuY2VcbiAgICovXG4gIHB1YmxpYyByZWdpc3RlcklvSG9zdChpb0hvc3Q6IElJb0hvc3QpIHtcbiAgICBpZiAoaW9Ib3N0ICE9PSB0aGlzKSB7XG4gICAgICB0aGlzLl9pbnRlcm5hbElvSG9zdCA9IGlvSG9zdDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgYWN0aW9uIGJlaW5nIHBlcmZvcm1lZCBieSB0aGUgQ0xJLlxuICAgKi9cbiAgcHVibGljIGdldCBjdXJyZW50QWN0aW9uKCk6IFRvb2xraXRBY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50QWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGN1cnJlbnQgYWN0aW9uIGJlaW5nIHBlcmZvcm1lZCBieSB0aGUgQ0xJLlxuICAgKlxuICAgKiBAcGFyYW0gYWN0aW9uIFRoZSBhY3Rpb24gYmVpbmcgcGVyZm9ybWVkIGJ5IHRoZSBDTEkuXG4gICAqL1xuICBwdWJsaWMgc2V0IGN1cnJlbnRBY3Rpb24oYWN0aW9uOiBUb29sa2l0QWN0aW9uKSB7XG4gICAgdGhpcy5fY3VycmVudEFjdGlvbiA9IGFjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBob3N0IGNhbiB1c2UgaW50ZXJhY3Rpb25zIGFuZCBtZXNzYWdlIHN0eWxpbmcuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzVFRZKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1RUWTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgVFRZIG1vZGUsIGkuZSBjYW4gdGhlIGhvc3QgdXNlIGludGVyYWN0aW9ucyBhbmQgbWVzc2FnZSBzdHlsaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgc2V0IFRUWSBtb2RlXG4gICAqL1xuICBwdWJsaWMgc2V0IGlzVFRZKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNUVFkgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBDbGlJb0hvc3QgaXMgcnVubmluZyBpbiBDSSBtb2RlLiBJbiBDSSBtb2RlLCBhbGwgbm9uLWVycm9yIG91dHB1dCBnb2VzIHRvIHN0ZG91dCBpbnN0ZWFkIG9mIHN0ZGVyci5cbiAgICovXG4gIHB1YmxpYyBnZXQgaXNDSSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNDSTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIENJIG1vZGUuIEluIENJIG1vZGUsIGFsbCBub24tZXJyb3Igb3V0cHV0IGdvZXMgdG8gc3Rkb3V0IGluc3RlYWQgb2Ygc3RkZXJyLlxuICAgKiBAcGFyYW0gdmFsdWUgc2V0IHRoZSBDSSBtb2RlXG4gICAqL1xuICBwdWJsaWMgc2V0IGlzQ0kodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc0NJID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgdGhyZXNob2xkLiBNZXNzYWdlcyB3aXRoIGEgbG93ZXIgcHJpb3JpdHkgbGV2ZWwgd2lsbCBiZSBpZ25vcmVkLlxuICAgKi9cbiAgcHVibGljIGdldCBsb2dMZXZlbCgpOiBJb01lc3NhZ2VMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ0xldmVsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGN1cnJlbnQgdGhyZXNob2xkLiBNZXNzYWdlcyB3aXRoIGEgbG93ZXIgcHJpb3JpdHkgbGV2ZWwgd2lsbCBiZSBpZ25vcmVkLlxuICAgKiBAcGFyYW0gbGV2ZWwgVGhlIG5ldyBsb2cgbGV2ZWwgdGhyZXNob2xkXG4gICAqL1xuICBwdWJsaWMgc2V0IGxvZ0xldmVsKGxldmVsOiBJb01lc3NhZ2VMZXZlbCkge1xuICAgIHRoaXMuX2xvZ0xldmVsID0gbGV2ZWw7XG4gIH1cblxuICAvKipcbiAgICogTm90aWZpZXMgdGhlIGhvc3Qgb2YgYSBtZXNzYWdlLlxuICAgKiBUaGUgY2FsbGVyIHdhaXRzIHVudGlsIHRoZSBub3RpZmljYXRpb24gY29tcGxldGVzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIG5vdGlmeTxUPihtc2c6IElvTWVzc2FnZTxUPik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9pbnRlcm5hbElvSG9zdCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2ludGVybmFsSW9Ib3N0Lm5vdGlmeShtc2cpO1xuICAgIH1cblxuICAgIGlmIChsZXZlbFByaW9yaXR5W21zZy5sZXZlbF0gPiBsZXZlbFByaW9yaXR5W3RoaXMubG9nTGV2ZWxdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0ID0gdGhpcy5mb3JtYXRNZXNzYWdlKG1zZyk7XG4gICAgY29uc3Qgc3RyZWFtID0gdGhpcy5zdHJlYW0obXNnLmxldmVsLCBtc2cuZm9yY2VTdGRvdXQgPz8gZmFsc2UpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHN0cmVhbS53cml0ZShvdXRwdXQsIChlcnIpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGljaCBvdXRwdXQgc3RyZWFtIHRvIHVzZSBiYXNlZCBvbiBsb2cgbGV2ZWwgYW5kIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwcml2YXRlIHN0cmVhbShsZXZlbDogSW9NZXNzYWdlTGV2ZWwsIGZvcmNlU3Rkb3V0OiBib29sZWFuKSB7XG4gICAgLy8gRm9yIGxlZ2FjeSBwdXJwb3NlcyBhbGwgbG9nIHN0cmVhbXMgYXJlIHdyaXR0ZW4gdG8gc3RkZXJyIGJ5IGRlZmF1bHQsIHVubGVzc1xuICAgIC8vIHNwZWNpZmllZCBvdGhlcndpc2UsIGJ5IHBhc3NpbmcgYGZvcmNlU3Rkb3V0YCwgd2hpY2ggaXMgdXNlZCBieSB0aGUgYGRhdGEoKWAgbG9nZ2luZyBmdW5jdGlvbiwgb3JcbiAgICAvLyBpZiB0aGUgQ0RLIGlzIHJ1bm5pbmcgaW4gYSBDSSBlbnZpcm9ubWVudC4gVGhpcyBpcyBiZWNhdXNlIHNvbWUgQ0kgZW52aXJvbm1lbnRzIHdpbGwgaW1tZWRpYXRlbHlcbiAgICAvLyBmYWlsIGlmIHN0ZGVyciBpcyB3cml0dGVuIHRvLiBJbiB0aGVzZSBjYXNlcywgd2UgZGV0ZWN0IGlmIHdlIGFyZSBpbiBhIENJIGVudmlyb25tZW50IGFuZFxuICAgIC8vIHdyaXRlIGFsbCBtZXNzYWdlcyB0byBzdGRvdXQgaW5zdGVhZC5cbiAgICBpZiAoZm9yY2VTdGRvdXQpIHtcbiAgICAgIHJldHVybiBwcm9jZXNzLnN0ZG91dDtcbiAgICB9XG4gICAgaWYgKGxldmVsID09ICdlcnJvcicpIHJldHVybiBwcm9jZXNzLnN0ZGVycjtcbiAgICByZXR1cm4gQ2xpSW9Ib3N0Lmluc3RhbmNlKCkuaXNDSSA/IHByb2Nlc3Muc3Rkb3V0IDogcHJvY2Vzcy5zdGRlcnI7XG4gIH1cblxuICAvKipcbiAgICogTm90aWZpZXMgdGhlIGhvc3Qgb2YgYSBtZXNzYWdlIHRoYXQgcmVxdWlyZXMgYSByZXNwb25zZS5cbiAgICpcbiAgICogSWYgdGhlIGhvc3QgZG9lcyBub3QgcmV0dXJuIGEgcmVzcG9uc2UgdGhlIHN1Z2dlc3RlZFxuICAgKiBkZWZhdWx0IHJlc3BvbnNlIGZyb20gdGhlIGlucHV0IG1lc3NhZ2Ugd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlcXVlc3RSZXNwb25zZTxULCBVPihtc2c6IElvUmVxdWVzdDxULCBVPik6IFByb21pc2U8VT4ge1xuICAgIGlmICh0aGlzLl9pbnRlcm5hbElvSG9zdCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2ludGVybmFsSW9Ib3N0LnJlcXVlc3RSZXNwb25zZShtc2cpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMubm90aWZ5KG1zZyk7XG4gICAgcmV0dXJuIG1zZy5kZWZhdWx0UmVzcG9uc2U7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0cyBhIG1lc3NhZ2UgZm9yIGNvbnNvbGUgb3V0cHV0IHdpdGggb3B0aW9uYWwgY29sb3Igc3VwcG9ydFxuICAgKi9cbiAgcHJpdmF0ZSBmb3JtYXRNZXNzYWdlKG1zZzogSW9NZXNzYWdlPGFueT4pOiBzdHJpbmcge1xuICAgIC8vIGFwcGx5IHByb3ZpZGVkIHN0eWxlIG9yIGEgZGVmYXVsdCBzdHlsZSBpZiB3ZSdyZSBpbiBUVFkgbW9kZVxuICAgIGxldCBtZXNzYWdlX3RleHQgPSB0aGlzLl9pc1RUWVxuICAgICAgPyBzdHlsZU1hcFttc2cubGV2ZWxdKG1zZy5tZXNzYWdlKVxuICAgICAgOiBtc2cubWVzc2FnZTtcblxuICAgIC8vIHByZXBlbmQgdGltZXN0YW1wIGlmIElvTWVzc2FnZUxldmVsIGlzIERFQlVHIG9yIFRSQUNFLiBQb3N0cGVuZCBhIG5ld2xpbmUuXG4gICAgcmV0dXJuICgobXNnLmxldmVsID09PSAnZGVidWcnIHx8IG1zZy5sZXZlbCA9PT0gJ3RyYWNlJylcbiAgICAgID8gYFske3RoaXMuZm9ybWF0VGltZShtc2cudGltZSl9XSAke21lc3NhZ2VfdGV4dH1gXG4gICAgICA6IG1lc3NhZ2VfdGV4dCkgKyAnXFxuJztcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXRzIGRhdGUgdG8gSEg6TU06U1NcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0VGltZShkOiBEYXRlKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYWQgPSAobjogbnVtYmVyKTogc3RyaW5nID0+IG4udG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIHJldHVybiBgJHtwYWQoZC5nZXRIb3VycygpKX06JHtwYWQoZC5nZXRNaW51dGVzKCkpfToke3BhZChkLmdldFNlY29uZHMoKSl9YDtcbiAgfVxufVxuXG5jb25zdCBzdHlsZU1hcDogUmVjb3JkPElvTWVzc2FnZUxldmVsLCAoc3RyOiBzdHJpbmcpID0+IHN0cmluZz4gPSB7XG4gIGVycm9yOiBjaGFsay5yZWQsXG4gIHdhcm46IGNoYWxrLnllbGxvdyxcbiAgaW5mbzogY2hhbGsud2hpdGUsXG4gIGRlYnVnOiBjaGFsay5ncmF5LFxuICB0cmFjZTogY2hhbGsuZ3JheSxcbn07XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IHByb2Nlc3MgaXMgcnVubmluZyBpbiBhIENJIGVudmlyb25tZW50XG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IHByb2Nlc3MgaXMgcnVubmluZyBpbiBhIENJIGVudmlyb25tZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NJKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gcHJvY2Vzcy5lbnYuQ0kgIT09IHVuZGVmaW5lZCAmJiBwcm9jZXNzLmVudi5DSSAhPT0gJ2ZhbHNlJyAmJiBwcm9jZXNzLmVudi5DSSAhPT0gJzAnO1xufVxuIl19
|
|
280
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWlvLWhvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjbGktaW8taG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpZEEsb0JBRUM7QUFuZEQsa0NBQWtDO0FBQ2xDLCtCQUErQjtBQUMvQixxQ0FBcUM7QUFDckMsbUNBQXVDO0FBaUUxQixRQUFBLGFBQWEsR0FBbUM7SUFDM0QsS0FBSyxFQUFFLENBQUM7SUFDUixNQUFNLEVBQUUsQ0FBQztJQUNULElBQUksRUFBRSxDQUFDO0lBQ1AsSUFBSSxFQUFFLENBQUM7SUFDUCxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxDQUFDO0NBQ1QsQ0FBQztBQWdGRjs7R0FFRztBQUNILE1BQWEsU0FBUztJQUNwQjs7T0FFRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBd0IsRUFBRSxFQUFFLFFBQVEsR0FBRyxLQUFLO1FBQzFELElBQUksUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3JDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBa0JELFlBQW9CLFFBQXdCLEVBQUU7UUFKOUMsaUJBQWlCO1FBQ1Qsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDVCx3QkFBbUIsR0FBcUIsRUFBRSxDQUFDO1FBRzFELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLGFBQWEsSUFBSSxNQUF1QixDQUFDO1FBQ3JFLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7UUFDM0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQztRQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUss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QU8sT0FBTyxHQUFHLENBQUMsZUFBZSxLQUFLLFNBQVMsQ0FBQztBQUNsRCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGlCQUFpQixDQUFDLEdBQXdCO0lBSWpELE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsZUFBZSxLQUFLLFFBQVEsQ0FBQyxDQUFDO0lBQzNELE9BQU87UUFDTCxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDO1FBQ3pDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0tBQzlELENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxRQUFRLEdBQW9EO0lBQ2hFLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRztJQUNoQixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU07SUFDbEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLO0lBQ25CLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSztJQUNqQixLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUk7SUFDakIsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJO0NBQ2xCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxTQUFnQixJQUFJO0lBQ2xCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLE9BQU8sSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUM7QUFDOUYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCAqIGFzIHByb21wdGx5IGZyb20gJ3Byb21wdGx5JztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4vZXJyb3InO1xuXG5leHBvcnQgdHlwZSBJb01lc3NhZ2VDb2RlQ2F0ZWdvcnkgPSAnVE9PTEtJVCcgfCAnU0RLJyB8ICdBU1NFVFMnO1xuZXhwb3J0IHR5cGUgSW9Db2RlTGV2ZWwgPSAnRScgfCAnVycgfCAnSSc7XG5leHBvcnQgdHlwZSBJb01lc3NhZ2VTcGVjaWZpY0NvZGU8TCBleHRlbmRzIElvQ29kZUxldmVsPiA9IGBDREtfJHtJb01lc3NhZ2VDb2RlQ2F0ZWdvcnl9XyR7TH0ke251bWJlcn0ke251bWJlcn0ke251bWJlcn0ke251bWJlcn1gO1xuZXhwb3J0IHR5cGUgSW9NZXNzYWdlQ29kZSA9IElvTWVzc2FnZVNwZWNpZmljQ29kZTxJb0NvZGVMZXZlbD47XG5cbi8qKlxuICogQmFzaWMgbWVzc2FnZSBzdHJ1Y3R1cmUgZm9yIHRvb2xraXQgbm90aWZpY2F0aW9ucy5cbiAqIE1lc3NhZ2VzIGFyZSBlbWl0dGVkIGJ5IHRoZSB0b29sa2l0IGFuZCBoYW5kbGVkIGJ5IHRoZSBJb0hvc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW9NZXNzYWdlPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSB0aW1lIHRoZSBtZXNzYWdlIHdhcyBlbWl0dGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdGltZTogRGF0ZTtcblxuICAvKipcbiAgICogVGhlIGxvZyBsZXZlbCBvZiB0aGUgbWVzc2FnZS5cbiAgICovXG4gIHJlYWRvbmx5IGxldmVsOiBJb01lc3NhZ2VMZXZlbDtcblxuICAvKipcbiAgICogVGhlIGFjdGlvbiB0aGF0IHRyaWdnZXJlZCB0aGUgbWVzc2FnZS5cbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvbjogVG9vbGtpdEFjdGlvbjtcblxuICAvKipcbiAgICogQSBzaG9ydCBtZXNzYWdlIGNvZGUgdW5pcXVlbHkgaWRlbnRpZnlpbmcgYSBtZXNzYWdlIHR5cGUgdXNpbmcgdGhlIGZvcm1hdCBDREtfW0NBVEVHT1JZXV9bRS9XL0ldWzAwMC05OTldLlxuICAgKlxuICAgKiBUaGUgbGV2ZWwgaW5kaWNhdG9yIGZvbGxvd3MgdGhlc2UgcnVsZXM6XG4gICAqIC0gJ0UnIGZvciBlcnJvciBsZXZlbCBtZXNzYWdlc1xuICAgKiAtICdXJyBmb3Igd2FybmluZyBsZXZlbCBtZXNzYWdlc1xuICAgKiAtICdJJyBmb3IgaW5mby9kZWJ1Zy90cmFjZSBsZXZlbCBtZXNzYWdlc1xuICAgKlxuICAgKiBDb2RlcyBlbmRpbmcgaW4gMDAwIGFyZSBnZW5lcmljIG1lc3NhZ2VzLCB3aGlsZSBjb2RlcyBlbmRpbmcgaW4gMDAxLTk5OSBhcmUgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIG1lc3NhZ2UuXG4gICAqIFRoZSBmb2xsb3dpbmcgYXJlIGV4YW1wbGVzIG9mIHZhbGlkIGFuZCBpbnZhbGlkIG1lc3NhZ2UgY29kZXM6XG4gICAqIGBgYHRzXG4gICAqICdDREtfQVNTRVRTX0kwMDAnICAgICAgIC8vIHZhbGlkOiBnZW5lcmljIGFzc2V0cyBpbmZvIG1lc3NhZ2VcbiAgICogJ0NES19UT09MS0lUX0UwMDInICAgICAgLy8gdmFsaWQ6IHNwZWNpZmljIHRvb2xraXQgZXJyb3IgbWVzc2FnZVxuICAgKiAnQ0RLX1NES19XMDIzJyAgICAgICAgICAvLyB2YWxpZDogc3BlY2lmaWMgc2RrIHdhcm5pbmcgbWVzc2FnZVxuICAgKiBgYGBcbiAgICovXG4gIHJlYWRvbmx5IGNvZGU6IElvTWVzc2FnZUNvZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIHRleHQuXG4gICAqL1xuICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRhIGF0dGFjaGVkIHRvIHRoZSBtZXNzYWdlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YT86IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW9SZXF1ZXN0PFQsIFU+IGV4dGVuZHMgSW9NZXNzYWdlPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IHJlc3BvbnNlIHRoYXQgd2lsbCBiZSB1c2VkIGlmIG5vIGRhdGEgaXMgcmV0dXJuZWQuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0UmVzcG9uc2U6IFU7XG59XG5cbmV4cG9ydCB0eXBlIElvTWVzc2FnZUxldmVsID0gJ2Vycm9yJyB8ICdyZXN1bHQnIHwgJ3dhcm4nIHwgJ2luZm8nIHwgJ2RlYnVnJyB8ICd0cmFjZSc7XG5cbmV4cG9ydCBjb25zdCBsZXZlbFByaW9yaXR5OiBSZWNvcmQ8SW9NZXNzYWdlTGV2ZWwsIG51bWJlcj4gPSB7XG4gIGVycm9yOiAwLFxuICByZXN1bHQ6IDEsXG4gIHdhcm46IDIsXG4gIGluZm86IDMsXG4gIGRlYnVnOiA0LFxuICB0cmFjZTogNSxcbn07XG5cbi8qKlxuICogVGhlIGN1cnJlbnQgYWN0aW9uIGJlaW5nIHBlcmZvcm1lZCBieSB0aGUgQ0xJLiAnbm9uZScgcmVwcmVzZW50cyB0aGUgYWJzZW5jZSBvZiBhbiBhY3Rpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFRvb2xraXRBY3Rpb24gPVxufCAnYXNzZW1ibHknXG58ICdib290c3RyYXAnXG58ICdzeW50aCdcbnwgJ2xpc3QnXG58ICdkaWZmJ1xufCAnZGVwbG95J1xufCAncm9sbGJhY2snXG58ICd3YXRjaCdcbnwgJ2Rlc3Ryb3knXG58ICdjb250ZXh0J1xufCAnZG9jcydcbnwgJ2RvY3RvcidcbnwgJ2djJ1xufCAnaW1wb3J0J1xufCAnbWV0YWRhdGEnXG58ICdub3RpY2VzJ1xufCAnaW5pdCdcbnwgJ21pZ3JhdGUnXG58ICd2ZXJzaW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBJSW9Ib3N0IHtcbiAgLyoqXG4gICAqIE5vdGlmaWVzIHRoZSBob3N0IG9mIGEgbWVzc2FnZS5cbiAgICogVGhlIGNhbGxlciB3YWl0cyB1bnRpbCB0aGUgbm90aWZpY2F0aW9uIGNvbXBsZXRlcy5cbiAgICovXG4gIG5vdGlmeTxUPihtc2c6IElvTWVzc2FnZTxUPik6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIE5vdGlmaWVzIHRoZSBob3N0IG9mIGEgbWVzc2FnZSB0aGF0IHJlcXVpcmVzIGEgcmVzcG9uc2UuXG4gICAqXG4gICAqIElmIHRoZSBob3N0IGRvZXMgbm90IHJldHVybiBhIHJlc3BvbnNlIHRoZSBzdWdnZXN0ZWRcbiAgICogZGVmYXVsdCByZXNwb25zZSBmcm9tIHRoZSBpbnB1dCBtZXNzYWdlIHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIHJlcXVlc3RSZXNwb25zZTxULCBVPihtc2c6IElvUmVxdWVzdDxULCBVPik6IFByb21pc2U8VT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpSW9Ib3N0UHJvcHMge1xuICAvKipcbiAgICogVGhlIGluaXRpYWwgVG9vbGtpdCBhY3Rpb24gdGhlIGhvc3RzIHN0YXJ0cyB3aXRoLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnbm9uZSdcbiAgICovXG4gIHJlYWRvbmx5IGN1cnJlbnRBY3Rpb24/OiBUb29sa2l0QWN0aW9uO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHRoZSB2ZXJib3NpdHkgb2YgdGhlIG91dHB1dC5cbiAgICpcbiAgICogVGhlIENsaUlvSG9zdCB3aWxsIHN0aWxsIHJlY2VpdmUgYWxsIG1lc3NhZ2VzIGFuZCByZXF1ZXN0cyxcbiAgICogYnV0IG9ubHkgdGhlIG1lc3NhZ2VzIGluY2x1ZGVkIGluIHRoaXMgbGV2ZWwgd2lsbCBiZSBwcmludGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnaW5mbydcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0xldmVsPzogSW9NZXNzYWdlTGV2ZWw7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyB0aGUgYXV0b21hdGljIFRUWSBkZXRlY3Rpb24uXG4gICAqXG4gICAqIFdoZW4gVFRZIGlzIGRpc2FibGVkLCB0aGUgQ0xJIHdpbGwgaGF2ZSBubyBpbnRlcmFjdGlvbnMgb3IgY29sb3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGV0ZXJtaW5lZCBmcm9tIHRoZSBjdXJyZW50IHByb2Nlc3NcbiAgICovXG4gIHJlYWRvbmx5IGlzVFRZPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgQ2xpSW9Ib3N0IGlzIHJ1bm5pbmcgaW4gQ0kgbW9kZS5cbiAgICpcbiAgICogSW4gQ0kgbW9kZSwgYWxsIG5vbi1lcnJvciBvdXRwdXQgZ29lcyB0byBzdGRvdXQgaW5zdGVhZCBvZiBzdGRlcnIuXG4gICAqIFNldCB0byBmYWxzZSBpbiB0aGUgQ2xpSW9Ib3N0IGNvbnN0cnVjdG9yIGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4gaWYgdGhlIENMSSBDSSBhcmd1bWVudCBpcyBwYXNzZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZXRlcm1pbmVkIGZyb20gdGhlIGVudmlyb25tZW50LCBzcGVjaWZpY2FsbHkgYmFzZWQgb24gYHByb2Nlc3MuZW52LkNJYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNDST86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSBzaW1wbGUgSU8gaG9zdCBmb3IgdGhlIENMSSB0aGF0IHdyaXRlcyBtZXNzYWdlcyB0byB0aGUgY29uc29sZS5cbiAqL1xuZXhwb3J0IGNsYXNzIENsaUlvSG9zdCBpbXBsZW1lbnRzIElJb0hvc3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2luZ2xldG9uIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgaW5zdGFuY2UocHJvcHM6IENsaUlvSG9zdFByb3BzID0ge30sIGZvcmNlTmV3ID0gZmFsc2UpOiBDbGlJb0hvc3Qge1xuICAgIGlmIChmb3JjZU5ldyB8fCAhQ2xpSW9Ib3N0Ll9pbnN0YW5jZSkge1xuICAgICAgQ2xpSW9Ib3N0Ll9pbnN0YW5jZSA9IG5ldyBDbGlJb0hvc3QocHJvcHMpO1xuICAgIH1cbiAgICByZXR1cm4gQ2xpSW9Ib3N0Ll9pbnN0YW5jZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIENsaUlvSG9zdFxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBDbGlJb0hvc3QgfCB1bmRlZmluZWQ7XG5cbiAgLy8gaW50ZXJuYWwgc3RhdGUgZm9yIGdldHRlcnMvc2V0dGVyXG4gIHByaXZhdGUgX2N1cnJlbnRBY3Rpb246IFRvb2xraXRBY3Rpb247XG4gIHByaXZhdGUgX2lzQ0k6IGJvb2xlYW47XG4gIHByaXZhdGUgX2lzVFRZOiBib29sZWFuO1xuICBwcml2YXRlIF9sb2dMZXZlbDogSW9NZXNzYWdlTGV2ZWw7XG4gIHByaXZhdGUgX2ludGVybmFsSW9Ib3N0PzogSUlvSG9zdDtcblxuICAvLyBDb3JrZWQgTG9nZ2luZ1xuICBwcml2YXRlIGNvcmtlZENvdW50ZXIgPSAwO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvcmtlZExvZ2dpbmdCdWZmZXI6IElvTWVzc2FnZTxhbnk+W10gPSBbXTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByb3BzOiBDbGlJb0hvc3RQcm9wcyA9IHt9KSB7XG4gICAgdGhpcy5fY3VycmVudEFjdGlvbiA9IHByb3BzLmN1cnJlbnRBY3Rpb24gPz8gJ25vbmUnIGFzIFRvb2xraXRBY3Rpb247XG4gICAgdGhpcy5faXNUVFkgPSBwcm9wcy5pc1RUWSA/PyBwcm9jZXNzLnN0ZG91dC5pc1RUWSA/PyBmYWxzZTtcbiAgICB0aGlzLl9sb2dMZXZlbCA9IHByb3BzLmxvZ0xldmVsID8/ICdpbmZvJztcbiAgICB0aGlzLl9pc0NJID0gcHJvcHMuaXNDSSA/PyBpc0NJKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2luZ2xldG9uIGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJJb0hvc3QoaW9Ib3N0OiBJSW9Ib3N0KSB7XG4gICAgaWYgKGlvSG9zdCAhPT0gdGhpcykge1xuICAgICAgdGhpcy5faW50ZXJuYWxJb0hvc3QgPSBpb0hvc3Q7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGFjdGlvbiBiZWluZyBwZXJmb3JtZWQgYnkgdGhlIENMSS5cbiAgICovXG4gIHB1YmxpYyBnZXQgY3VycmVudEFjdGlvbigpOiBUb29sa2l0QWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudEFjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjdXJyZW50IGFjdGlvbiBiZWluZyBwZXJmb3JtZWQgYnkgdGhlIENMSS5cbiAgICpcbiAgICogQHBhcmFtIGFjdGlvbiBUaGUgYWN0aW9uIGJlaW5nIHBlcmZvcm1lZCBieSB0aGUgQ0xJLlxuICAgKi9cbiAgcHVibGljIHNldCBjdXJyZW50QWN0aW9uKGFjdGlvbjogVG9vbGtpdEFjdGlvbikge1xuICAgIHRoaXMuX2N1cnJlbnRBY3Rpb24gPSBhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaG9zdCBjYW4gdXNlIGludGVyYWN0aW9ucyBhbmQgbWVzc2FnZSBzdHlsaW5nLlxuICAgKi9cbiAgcHVibGljIGdldCBpc1RUWSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNUVFk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IFRUWSBtb2RlLCBpLmUgY2FuIHRoZSBob3N0IHVzZSBpbnRlcmFjdGlvbnMgYW5kIG1lc3NhZ2Ugc3R5bGluZy5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIHNldCBUVFkgbW9kZVxuICAgKi9cbiAgcHVibGljIHNldCBpc1RUWSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzVFRZID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgQ2xpSW9Ib3N0IGlzIHJ1bm5pbmcgaW4gQ0kgbW9kZS4gSW4gQ0kgbW9kZSwgYWxsIG5vbi1lcnJvciBvdXRwdXQgZ29lcyB0byBzdGRvdXQgaW5zdGVhZCBvZiBzdGRlcnIuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzQ0koKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzQ0k7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBDSSBtb2RlLiBJbiBDSSBtb2RlLCBhbGwgbm9uLWVycm9yIG91dHB1dCBnb2VzIHRvIHN0ZG91dCBpbnN0ZWFkIG9mIHN0ZGVyci5cbiAgICogQHBhcmFtIHZhbHVlIHNldCB0aGUgQ0kgbW9kZVxuICAgKi9cbiAgcHVibGljIHNldCBpc0NJKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNDSSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHRocmVzaG9sZC4gTWVzc2FnZXMgd2l0aCBhIGxvd2VyIHByaW9yaXR5IGxldmVsIHdpbGwgYmUgaWdub3JlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgbG9nTGV2ZWwoKTogSW9NZXNzYWdlTGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl9sb2dMZXZlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjdXJyZW50IHRocmVzaG9sZC4gTWVzc2FnZXMgd2l0aCBhIGxvd2VyIHByaW9yaXR5IGxldmVsIHdpbGwgYmUgaWdub3JlZC5cbiAgICogQHBhcmFtIGxldmVsIFRoZSBuZXcgbG9nIGxldmVsIHRocmVzaG9sZFxuICAgKi9cbiAgcHVibGljIHNldCBsb2dMZXZlbChsZXZlbDogSW9NZXNzYWdlTGV2ZWwpIHtcbiAgICB0aGlzLl9sb2dMZXZlbCA9IGxldmVsO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIGEgYmxvY2sgb2YgY29kZSB3aXRoIGNvcmtlZCBsb2dnaW5nLiBBbGwgbG9nIG1lc3NhZ2VzIGR1cmluZyBleGVjdXRpb25cbiAgICogYXJlIGJ1ZmZlcmVkIGFuZCBvbmx5IHdyaXR0ZW4gd2hlbiBhbGwgbmVzdGVkIGNvcmsgYmxvY2tzIGNvbXBsZXRlICh3aGVuIENPUktfQ09VTlRFUiByZWFjaGVzIDApLlxuICAgKiBUaGUgY29ya2luZyBpcyBib3VuZCB0byB0aGUgc3BlY2lmaWMgaW5zdGFuY2Ugb2YgdGhlIENsaUlvSG9zdC5cbiAgICpcbiAgICogQHBhcmFtIGJsb2NrIC0gQXN5bmMgZnVuY3Rpb24gdG8gZXhlY3V0ZSB3aXRoIGNvcmtlZCBsb2dnaW5nXG4gICAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBibG9jaydzIHJldHVybiB2YWx1ZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIHdpdGhDb3JrZWRMb2dnaW5nPFQ+KGJsb2NrOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgdGhpcy5jb3JrZWRDb3VudGVyKys7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBibG9jaygpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmNvcmtlZENvdW50ZXItLTtcbiAgICAgIGlmICh0aGlzLmNvcmtlZENvdW50ZXIgPT09IDApIHtcbiAgICAgICAgLy8gUHJvY2VzcyBlYWNoIGJ1ZmZlcmVkIG1lc3NhZ2UgdGhyb3VnaCBub3RpZnlcbiAgICAgICAgZm9yIChjb25zdCBpb01lc3NhZ2Ugb2YgdGhpcy5jb3JrZWRMb2dnaW5nQnVmZmVyKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5ub3RpZnkoaW9NZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyByZW1vdmUgYWxsIGJ1ZmZlcmVkIG1lc3NhZ2VzIGluLXBsYWNlXG4gICAgICAgIHRoaXMuY29ya2VkTG9nZ2luZ0J1ZmZlci5zcGxpY2UoMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE5vdGlmaWVzIHRoZSBob3N0IG9mIGEgbWVzc2FnZS5cbiAgICogVGhlIGNhbGxlciB3YWl0cyB1bnRpbCB0aGUgbm90aWZpY2F0aW9uIGNvbXBsZXRlcy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBub3RpZnk8VD4obXNnOiBJb01lc3NhZ2U8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5faW50ZXJuYWxJb0hvc3QpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnRlcm5hbElvSG9zdC5ub3RpZnkobXNnKTtcbiAgICB9XG5cbiAgICBpZiAobGV2ZWxQcmlvcml0eVttc2cubGV2ZWxdID4gbGV2ZWxQcmlvcml0eVt0aGlzLmxvZ0xldmVsXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvcmtlZENvdW50ZXIgPiAwKSB7XG4gICAgICB0aGlzLmNvcmtlZExvZ2dpbmdCdWZmZXIucHVzaChtc2cpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dCA9IHRoaXMuZm9ybWF0TWVzc2FnZShtc2cpO1xuICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuc2VsZWN0U3RyZWFtKG1zZy5sZXZlbCk7XG4gICAgc3RyZWFtLndyaXRlKG91dHB1dCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB0aGUgb3V0cHV0IHN0cmVhbSwgYmFzZWQgb24gbWVzc2FnZSBsZXZlbCBhbmQgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHByaXZhdGUgc2VsZWN0U3RyZWFtKGxldmVsOiBJb01lc3NhZ2VMZXZlbCkge1xuICAgIC8vIFRoZSBzdHJlYW0gc2VsZWN0aW9uIHBvbGljeSBmb3IgdGhlIENMSSBpcyB0aGUgZm9sbG93aW5nOlxuICAgIC8vXG4gICAgLy8gICAoMSkgTWVzc2FnZXMgb2YgbGV2ZWwgYHJlc3VsdGAgYWx3YXlzIGdvIHRvIGBzdGRvdXRgXG4gICAgLy8gICAoMikgTWVzc2FnZXMgb2YgbGV2ZWwgYGVycm9yYCBhbHdheXMgZ28gdG8gYHN0ZGVycmAuXG4gICAgLy8gICAoM2EpIEFsbCByZW1haW5pbmcgbWVzc2FnZXMgZ28gdG8gYHN0ZGVycmAuXG4gICAgLy8gICAoM2IpIElmIHdlIGFyZSBpbiBDSSBtb2RlLCBhbGwgcmVtYWluaW5nIG1lc3NhZ2VzIGdvIHRvIGBzdGRvdXRgLlxuICAgIC8vXG4gICAgc3dpdGNoIChsZXZlbCkge1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gcHJvY2Vzcy5zdGRlcnI7XG4gICAgICBjYXNlICdyZXN1bHQnOlxuICAgICAgICByZXR1cm4gcHJvY2Vzcy5zdGRvdXQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5pc0NJID8gcHJvY2Vzcy5zdGRvdXQgOiBwcm9jZXNzLnN0ZGVycjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTm90aWZpZXMgdGhlIGhvc3Qgb2YgYSBtZXNzYWdlIHRoYXQgcmVxdWlyZXMgYSByZXNwb25zZS5cbiAgICpcbiAgICogSWYgdGhlIGhvc3QgZG9lcyBub3QgcmV0dXJuIGEgcmVzcG9uc2UgdGhlIHN1Z2dlc3RlZFxuICAgKiBkZWZhdWx0IHJlc3BvbnNlIGZyb20gdGhlIGlucHV0IG1lc3NhZ2Ugd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlcXVlc3RSZXNwb25zZTxEYXRhVHlwZSwgUmVzcG9uc2VUeXBlPihtc2c6IElvUmVxdWVzdDxEYXRhVHlwZSwgUmVzcG9uc2VUeXBlPik6IFByb21pc2U8UmVzcG9uc2VUeXBlPiB7XG4gICAgLy8gRmlyc3QgY2FsbCBvdXQgdG8gYSByZWdpc3RlcmVkIGluc3RhbmNlIGlmIHdlIGhhdmUgb25lXG4gICAgaWYgKHRoaXMuX2ludGVybmFsSW9Ib3N0KSB7XG4gICAgICByZXR1cm4gdGhpcy5faW50ZXJuYWxJb0hvc3QucmVxdWVzdFJlc3BvbnNlKG1zZyk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIHJlcXVlc3QgY2Fubm90IGJlIHByb21wdGVkIGZvciBieSB0aGUgQ2xpSW9Ib3N0LCB3ZSBqdXN0IGFjY2VwdCB0aGUgZGVmYXVsdFxuICAgIGlmICghaXNQcm9tcHRhYmxlUmVxdWVzdChtc2cpKSB7XG4gICAgICBhd2FpdCB0aGlzLm5vdGlmeShtc2cpO1xuICAgICAgcmV0dXJuIG1zZy5kZWZhdWx0UmVzcG9uc2U7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLndpdGhDb3JrZWRMb2dnaW5nKGFzeW5jICgpOiBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IHRydWU+ID0+IHtcbiAgICAgIC8vIHByZXBhcmUgcHJvbXB0IGRhdGFcbiAgICAgIC8vIEB0b2RvIHRoaXMgZm9ybWF0IGlzIG5vdCBkZWZpbmVkIGFueXdoZXJlLCBwcm9iYWJseSBzaG91bGQgYmVcbiAgICAgIGNvbnN0IGRhdGE6IHtcbiAgICAgICAgbW90aXZhdGlvbj86IHN0cmluZztcbiAgICAgICAgY29uY3VycmVuY3k/OiBudW1iZXI7XG4gICAgICB9ID0gbXNnLmRhdGEgPz8ge307XG5cbiAgICAgIGNvbnN0IG1vdGl2YXRpb24gPSBkYXRhLm1vdGl2YXRpb24gPz8gJ1VzZXIgaW5wdXQgaXMgbmVlZGVkJztcbiAgICAgIGNvbnN0IGNvbmN1cnJlbmN5ID0gZGF0YS5jb25jdXJyZW5jeSA/PyAwO1xuXG4gICAgICAvLyBvbmx5IHRhbGsgdG8gdXNlciBpZiBTVERJTiBpcyBhIHRlcm1pbmFsIChvdGhlcndpc2UsIGZhaWwpXG4gICAgICBpZiAoIXRoaXMuaXNUVFkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgJHttb3RpdmF0aW9ufSwgYnV0IHRlcm1pbmFsIChUVFkpIGlzIG5vdCBhdHRhY2hlZCBzbyB3ZSBhcmUgdW5hYmxlIHRvIGdldCBhIGNvbmZpcm1hdGlvbiBmcm9tIHRoZSB1c2VyYCk7XG4gICAgICB9XG5cbiAgICAgIC8vIG9ubHkgdGFsayB0byB1c2VyIGlmIGNvbmN1cnJlbmN5IGlzIDEgKG90aGVyd2lzZSwgZmFpbClcbiAgICAgIGlmIChjb25jdXJyZW5jeSA+IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgJHttb3RpdmF0aW9ufSwgYnV0IGNvbmN1cnJlbmN5IGlzIGdyZWF0ZXIgdGhhbiAxIHNvIHdlIGFyZSB1bmFibGUgdG8gZ2V0IGEgY29uZmlybWF0aW9uIGZyb20gdGhlIHVzZXJgKTtcbiAgICAgIH1cblxuICAgICAgLy8gQmFzaWMgY29uZmlybWF0aW9uIHByb21wdFxuICAgICAgLy8gV2UgdHJlYXQgYWxsIHJlcXVlc3RzIHdpdGggYSBib29sZWFuIHJlc3BvbnNlIGFzIGNvbmZpcm1hdGlvbiBwcm9tcHRzXG4gICAgICBpZiAoaXNDb25maXJtYXRpb25Qcm9tcHQobXNnKSkge1xuICAgICAgICBjb25zdCBjb25maXJtZWQgPSBhd2FpdCBwcm9tcHRseS5jb25maXJtKGAke2NoYWxrLmN5YW4obXNnLm1lc3NhZ2UpfSAoeS9uKWApO1xuICAgICAgICBpZiAoIWNvbmZpcm1lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoJ0Fib3J0ZWQgYnkgdXNlcicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb25maXJtZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIEFza2luZyBmb3IgYSBzcGVjaWZpYyB2YWx1ZVxuICAgICAgY29uc3QgcHJvbXB0ID0gZXh0cmFjdFByb21wdEluZm8obXNnKTtcbiAgICAgIGNvbnN0IGFuc3dlciA9IGF3YWl0IHByb21wdGx5LnByb21wdChgJHtjaGFsay5jeWFuKG1zZy5tZXNzYWdlKX0gKCR7cHJvbXB0LmRlZmF1bHR9KWAsIHtcbiAgICAgICAgZGVmYXVsdDogcHJvbXB0LmRlZmF1bHQsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBwcm9tcHQuY29udmVydEFuc3dlcihhbnN3ZXIpO1xuICAgIH0pO1xuXG4gICAgLy8gV2UgbmVlZCB0byBjYXN0IHRoaXMgYmVjYXVzZSBpdCBpcyBpbXBvc3NpYmxlIHRvIG5hcnJvdyB0aGUgZ2VuZXJpYyB0eXBlXG4gICAgLy8gaXNQcm9tcHRhYmxlUmVxdWVzdCBlbnN1cmVzIHRoYXQgdGhlIHJlc3BvbnNlIHR5cGUgaXMgb25lIHdlIGNhbiBwcm9tcHQgZm9yXG4gICAgLy8gdGhlIHJlbWFpbmluZyBjb2RlIGVuc3VyZSB3ZSBhcmUgaW5kZWVkIHJldHVybmluZyB0aGUgY29ycmVjdCB0eXBlXG4gICAgcmV0dXJuIHJlc3BvbnNlIGFzIFJlc3BvbnNlVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXRzIGEgbWVzc2FnZSBmb3IgY29uc29sZSBvdXRwdXQgd2l0aCBvcHRpb25hbCBjb2xvciBzdXBwb3J0XG4gICAqL1xuICBwcml2YXRlIGZvcm1hdE1lc3NhZ2UobXNnOiBJb01lc3NhZ2U8YW55Pik6IHN0cmluZyB7XG4gICAgLy8gYXBwbHkgcHJvdmlkZWQgc3R5bGUgb3IgYSBkZWZhdWx0IHN0eWxlIGlmIHdlJ3JlIGluIFRUWSBtb2RlXG4gICAgbGV0IG1lc3NhZ2VfdGV4dCA9IHRoaXMuX2lzVFRZXG4gICAgICA/IHN0eWxlTWFwW21zZy5sZXZlbF0obXNnLm1lc3NhZ2UpXG4gICAgICA6IG1zZy5tZXNzYWdlO1xuXG4gICAgLy8gcHJlcGVuZCB0aW1lc3RhbXAgaWYgSW9NZXNzYWdlTGV2ZWwgaXMgREVCVUcgb3IgVFJBQ0UuIFBvc3RwZW5kIGEgbmV3bGluZS5cbiAgICByZXR1cm4gKChtc2cubGV2ZWwgPT09ICdkZWJ1ZycgfHwgbXNnLmxldmVsID09PSAndHJhY2UnKVxuICAgICAgPyBgWyR7dGhpcy5mb3JtYXRUaW1lKG1zZy50aW1lKX1dICR7bWVzc2FnZV90ZXh0fWBcbiAgICAgIDogbWVzc2FnZV90ZXh0KSArICdcXG4nO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdHMgZGF0ZSB0byBISDpNTTpTU1xuICAgKi9cbiAgcHJpdmF0ZSBmb3JtYXRUaW1lKGQ6IERhdGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhZCA9IChuOiBudW1iZXIpOiBzdHJpbmcgPT4gbi50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgcmV0dXJuIGAke3BhZChkLmdldEhvdXJzKCkpfToke3BhZChkLmdldE1pbnV0ZXMoKSl9OiR7cGFkKGQuZ2V0U2Vjb25kcygpKX1gO1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBJb0hvc3QgaW1wbGVtZW50YXRpb24gY29uc2lkZXJzIGEgcmVxdWVzdCBwcm9tcHRhYmxlLCBpZjpcbiAqIC0gaXQncyBhIHllcy9ubyBjb25maXJtYXRpb25cbiAqIC0gYXNraW5nIGZvciBhIHN0cmluZyBvciBudW1iZXIgdmFsdWVcbiAqL1xuZnVuY3Rpb24gaXNQcm9tcHRhYmxlUmVxdWVzdChtc2c6IElvUmVxdWVzdDxhbnksIGFueT4pOiBtc2cgaXMgSW9SZXF1ZXN0PGFueSwgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4ge1xuICByZXR1cm4gaXNDb25maXJtYXRpb25Qcm9tcHQobXNnKVxuICAgIHx8IHR5cGVvZiBtc2cuZGVmYXVsdFJlc3BvbnNlID09PSAnc3RyaW5nJ1xuICAgIHx8IHR5cGVvZiBtc2cuZGVmYXVsdFJlc3BvbnNlID09PSAnbnVtYmVyJztcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgcmVxdWVzdCBpcyBhIGNvbmZpcm1hdGlvbiBwcm9tcHRcbiAqIFdlIHRyZWF0IGFsbCByZXF1ZXN0cyB3aXRoIGEgYm9vbGVhbiByZXNwb25zZSBhcyBjb25maXJtYXRpb24gcHJvbXB0c1xuICovXG5mdW5jdGlvbiBpc0NvbmZpcm1hdGlvblByb21wdChtc2c6IElvUmVxdWVzdDxhbnksIGFueT4pOiBtc2cgaXMgSW9SZXF1ZXN0PGFueSwgYm9vbGVhbj4ge1xuICByZXR1cm4gdHlwZW9mIG1zZy5kZWZhdWx0UmVzcG9uc2UgPT09ICdib29sZWFuJztcbn1cblxuLyoqXG4gKiBIZWxwZXIgdG8gZXh0cmFjdCBpbmZvcm1hdGlvbiBmb3IgcHJvbXB0bHkgZnJvbSB0aGUgcmVxdWVzdFxuICovXG5mdW5jdGlvbiBleHRyYWN0UHJvbXB0SW5mbyhtc2c6IElvUmVxdWVzdDxhbnksIGFueT4pOiB7XG4gIGRlZmF1bHQ6IHN0cmluZztcbiAgY29udmVydEFuc3dlcjogKGlucHV0OiBzdHJpbmcpID0+IHN0cmluZyB8IG51bWJlcjtcbn0ge1xuICBjb25zdCBpc051bWJlciA9ICh0eXBlb2YgbXNnLmRlZmF1bHRSZXNwb25zZSA9PT0gJ251bWJlcicpO1xuICByZXR1cm4ge1xuICAgIGRlZmF1bHQ6IHV0aWwuZm9ybWF0KG1zZy5kZWZhdWx0UmVzcG9uc2UpLFxuICAgIGNvbnZlcnRBbnN3ZXI6IGlzTnVtYmVyID8gKHYpID0+IE51bWJlcih2KSA6ICh2KSA9PiBTdHJpbmcodiksXG4gIH07XG59XG5cbmNvbnN0IHN0eWxlTWFwOiBSZWNvcmQ8SW9NZXNzYWdlTGV2ZWwsIChzdHI6IHN0cmluZykgPT4gc3RyaW5nPiA9IHtcbiAgZXJyb3I6IGNoYWxrLnJlZCxcbiAgd2FybjogY2hhbGsueWVsbG93LFxuICByZXN1bHQ6IGNoYWxrLndoaXRlLFxuICBpbmZvOiBjaGFsay53aGl0ZSxcbiAgZGVidWc6IGNoYWxrLmdyYXksXG4gIHRyYWNlOiBjaGFsay5ncmF5LFxufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBydW5uaW5nIGluIGEgQ0kgZW52aXJvbm1lbnRcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBydW5uaW5nIGluIGEgQ0kgZW52aXJvbm1lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ0koKTogYm9vbGVhbiB7XG4gIHJldHVybiBwcm9jZXNzLmVudi5DSSAhPT0gdW5kZWZpbmVkICYmIHByb2Nlc3MuZW52LkNJICE9PSAnZmFsc2UnICYmIHByb2Nlc3MuZW52LkNJICE9PSAnMCc7XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aws-cdk",
|
|
3
3
|
"description": "CDK Toolkit, the command line tool for CDK apps",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.178.1",
|
|
5
5
|
"bin": {
|
|
6
6
|
"cdk": "bin/cdk"
|
|
7
7
|
},
|
|
@@ -103,10 +103,10 @@
|
|
|
103
103
|
},
|
|
104
104
|
"license": "Apache-2.0",
|
|
105
105
|
"devDependencies": {
|
|
106
|
-
"@aws-cdk/cdk-build-tools": "2.
|
|
107
|
-
"@aws-cdk/cli-plugin-contract": "2.
|
|
108
|
-
"@aws-cdk/pkglint": "2.
|
|
109
|
-
"@aws-cdk/user-input-gen": "2.
|
|
106
|
+
"@aws-cdk/cdk-build-tools": "2.178.1-alpha.0",
|
|
107
|
+
"@aws-cdk/cli-plugin-contract": "2.178.1",
|
|
108
|
+
"@aws-cdk/pkglint": "2.178.1-alpha.0",
|
|
109
|
+
"@aws-cdk/user-input-gen": "2.178.1-alpha.0",
|
|
110
110
|
"@octokit/rest": "^18.12.0",
|
|
111
111
|
"@types/archiver": "^5.3.4",
|
|
112
112
|
"@types/fs-extra": "^9.0.13",
|
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
"@types/uuid": "^8.3.4",
|
|
122
122
|
"@types/wrap-ansi": "^3.0.0",
|
|
123
123
|
"@types/yargs": "^15.0.19",
|
|
124
|
-
"aws-cdk-lib": "2.
|
|
124
|
+
"aws-cdk-lib": "2.178.1",
|
|
125
125
|
"aws-sdk-client-mock": "^4.0.1",
|
|
126
126
|
"aws-sdk-client-mock-jest": "^4.0.1",
|
|
127
127
|
"axios": "^1.7.7",
|
|
@@ -139,9 +139,9 @@
|
|
|
139
139
|
"ts-mock-imports": "^1.3.16",
|
|
140
140
|
"xml-js": "^1.6.11",
|
|
141
141
|
"@aws-cdk/cloud-assembly-schema": "^39.2.0",
|
|
142
|
-
"@aws-cdk/cloudformation-diff": "2.
|
|
143
|
-
"@aws-cdk/cx-api": "2.
|
|
144
|
-
"@aws-cdk/region-info": "2.
|
|
142
|
+
"@aws-cdk/cloudformation-diff": "2.178.1",
|
|
143
|
+
"@aws-cdk/cx-api": "2.178.1",
|
|
144
|
+
"@aws-cdk/region-info": "2.178.1",
|
|
145
145
|
"@aws-sdk/client-appsync": "^3.699.0",
|
|
146
146
|
"@aws-sdk/client-cloudformation": "^3.699.0",
|
|
147
147
|
"@aws-sdk/client-cloudwatch-logs": "^3.699.0",
|
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
"@smithy/util-waiter": "^3.2.0",
|
|
174
174
|
"archiver": "^5.3.2",
|
|
175
175
|
"camelcase": "^6.3.0",
|
|
176
|
-
"cdk-assets": "^3.0.0-rc.
|
|
176
|
+
"cdk-assets": "^3.0.0-rc.127",
|
|
177
177
|
"cdk-from-cfn": "^0.162.0",
|
|
178
178
|
"chalk": "^4",
|
|
179
179
|
"chokidar": "^3.6.0",
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sends a response to a prompt to stdin
|
|
3
|
+
* When using this in tests, call just before the prompt runs.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* sendResponse('y');
|
|
8
|
+
* await prompt('Confirm (y/n)?');
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
export declare function sendResponse(res: string, delay?: number): void;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sendResponse = sendResponse;
|
|
4
|
+
/**
|
|
5
|
+
* Sends a response to a prompt to stdin
|
|
6
|
+
* When using this in tests, call just before the prompt runs.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* sendResponse('y');
|
|
11
|
+
* await prompt('Confirm (y/n)?');
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
function sendResponse(res, delay = 0) {
|
|
15
|
+
if (!delay) {
|
|
16
|
+
setImmediate(() => process.stdin.emit('data', `${res}\n`));
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
setTimeout(() => process.stdin.emit('data', `${res}\n`), delay);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByb21wdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFVQSxvQ0FNQztBQWhCRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixZQUFZLENBQUMsR0FBVyxFQUFFLEtBQUssR0FBRyxDQUFDO0lBQ2pELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztTQUFNLENBQUM7UUFDTixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsRSxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2VuZHMgYSByZXNwb25zZSB0byBhIHByb21wdCB0byBzdGRpblxuICogV2hlbiB1c2luZyB0aGlzIGluIHRlc3RzLCBjYWxsIGp1c3QgYmVmb3JlIHRoZSBwcm9tcHQgcnVucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIHNlbmRSZXNwb25zZSgneScpO1xuICogYXdhaXQgcHJvbXB0KCdDb25maXJtICh5L24pPycpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kUmVzcG9uc2UocmVzOiBzdHJpbmcsIGRlbGF5ID0gMCkge1xuICBpZiAoIWRlbGF5KSB7XG4gICAgc2V0SW1tZWRpYXRlKCgpID0+IHByb2Nlc3Muc3RkaW4uZW1pdCgnZGF0YScsIGAke3Jlc31cXG5gKSk7XG4gIH0gZWxzZSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiBwcm9jZXNzLnN0ZGluLmVtaXQoJ2RhdGEnLCBgJHtyZXN9XFxuYCksIGRlbGF5KTtcbiAgfVxufVxuIl19
|
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const sdk_logger_1 = require("../../../lib/api/aws-auth/sdk-logger");
|
|
4
|
-
const logging = require("../../../lib/logging");
|
|
5
4
|
describe(sdk_logger_1.SdkToCliLogger, () => {
|
|
6
|
-
const
|
|
7
|
-
|
|
5
|
+
const ioHost = {
|
|
6
|
+
notify: jest.fn(),
|
|
7
|
+
requestResponse: jest.fn(),
|
|
8
|
+
};
|
|
9
|
+
const logger = new sdk_logger_1.SdkToCliLogger(ioHost);
|
|
8
10
|
beforeEach(() => {
|
|
9
|
-
|
|
11
|
+
ioHost.notify.mockReset();
|
|
10
12
|
});
|
|
11
|
-
test.each(['trace', 'debug'])('%s method does not call
|
|
12
|
-
logger[
|
|
13
|
-
expect(
|
|
13
|
+
test.each(['trace', 'debug'])('%s method does not call notify', (method) => {
|
|
14
|
+
logger[method]('SDK Logger test message');
|
|
15
|
+
expect(ioHost.notify).not.toHaveBeenCalled();
|
|
14
16
|
});
|
|
15
|
-
test.each(['info', 'warn', 'error'])('%s method logs to
|
|
16
|
-
logger[
|
|
17
|
-
expect(
|
|
17
|
+
test.each(['info', 'warn', 'error'])('%s method logs to notify', (method) => {
|
|
18
|
+
logger[method]('SDK Logger test message');
|
|
19
|
+
expect(ioHost.notify).toHaveBeenCalledWith(expect.objectContaining({
|
|
20
|
+
level: 'trace',
|
|
21
|
+
message: `[SDK ${method}] SDK Logger test message`,
|
|
22
|
+
}));
|
|
18
23
|
});
|
|
19
24
|
});
|
|
20
25
|
const SUCCESS_CALL = {
|
|
@@ -70,4 +75,4 @@ test('formatting a failing SDK call includes the error', () => {
|
|
|
70
75
|
const output = (0, sdk_logger_1.formatSdkLoggerContent)([ERROR_CALL]);
|
|
71
76
|
expect(output).toContain('it failed');
|
|
72
77
|
});
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLWxvZ2dlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2RrLWxvZ2dlci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscUVBQThGO0FBRTlGLFFBQVEsQ0FBQywyQkFBYyxFQUFFLEdBQUcsRUFBRTtJQUM1QixNQUFNLE1BQU0sR0FBRztRQUNiLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1FBQ2pCLGVBQWUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO0tBQzNCLENBQUM7SUFDRixNQUFNLE1BQU0sR0FBRyxJQUFJLDJCQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFMUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBZ0MsQ0FBQyxDQUFDLGdDQUFnQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDeEcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDMUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMvQyxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBZ0MsQ0FBQyxDQUFDLDBCQUEwQixFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDekcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDMUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7WUFDakUsS0FBSyxFQUFFLE9BQU87WUFDZCxPQUFPLEVBQUUsUUFBUSxNQUFNLDJCQUEyQjtTQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNLFlBQVksR0FBRztJQUNuQixVQUFVLEVBQUUsVUFBVTtJQUN0QixXQUFXLEVBQUUsMEJBQTBCO0lBQ3ZDLEtBQUssRUFBRTtRQUNMLE1BQU0sRUFBRSxPQUFPO1FBQ2YsbUJBQW1CLEVBQUUsU0FBUztLQUMvQjtJQUNELE1BQU0sRUFBRSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRTtJQUM5QyxRQUFRLEVBQUU7UUFDUixjQUFjLEVBQUUsR0FBRztRQUNuQixTQUFTLEVBQUUsTUFBTTtRQUNqQixpQkFBaUIsRUFBRSxLQUFLO1FBQ3hCLElBQUksRUFBRSxTQUFTO1FBQ2YsUUFBUSxFQUFFLENBQUM7UUFDWCxlQUFlLEVBQUUsRUFBRTtLQUNwQjtDQUNGLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBRztJQUNqQixVQUFVLEVBQUUsVUFBVTtJQUN0QixXQUFXLEVBQUUsMEJBQTBCO0lBQ3ZDLEtBQUssRUFBRTtRQUNMLE1BQU0sRUFBRSxPQUFPO1FBQ2YsbUJBQW1CLEVBQUUsU0FBUztLQUMvQjtJQUNELEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUM7SUFDN0IsUUFBUSxFQUFFO1FBQ1IsY0FBYyxFQUFFLEdBQUc7UUFDbkIsUUFBUSxFQUFFLENBQUM7UUFDWCxlQUFlLEVBQUUsRUFBRTtLQUNwQjtDQUNGLENBQUM7QUFFRixJQUFJLENBQUMsMkRBQTJELEVBQUUsR0FBRyxFQUFFO0lBQ3JFLE1BQU0sTUFBTSxHQUFHLElBQUEsbUNBQXNCLEVBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3RELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUNuQyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyx3REFBd0QsRUFBRSxHQUFHLEVBQUU7SUFDbEUsTUFBTSxNQUFNLEdBQUcsSUFBQSxtQ0FBc0IsRUFBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDcEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ25DLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLGtGQUFrRixFQUFFLEdBQUcsRUFBRTtJQUM1RixNQUFNLE1BQU0sR0FBRyxJQUFBLG1DQUFzQixFQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUN0RCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsK0VBQStFLEVBQUUsR0FBRyxFQUFFO0lBQ3pGLE1BQU0sTUFBTSxHQUFHLElBQUEsbUNBQXNCLEVBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3BELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxrREFBa0QsRUFBRSxHQUFHLEVBQUU7SUFDNUQsTUFBTSxNQUFNLEdBQUcsSUFBQSxtQ0FBc0IsRUFBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDcEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN4QyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcm1hdFNka0xvZ2dlckNvbnRlbnQsIFNka1RvQ2xpTG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2FwaS9hd3MtYXV0aC9zZGstbG9nZ2VyJztcblxuZGVzY3JpYmUoU2RrVG9DbGlMb2dnZXIsICgpID0+IHtcbiAgY29uc3QgaW9Ib3N0ID0ge1xuICAgIG5vdGlmeTogamVzdC5mbigpLFxuICAgIHJlcXVlc3RSZXNwb25zZTogamVzdC5mbigpLFxuICB9O1xuICBjb25zdCBsb2dnZXIgPSBuZXcgU2RrVG9DbGlMb2dnZXIoaW9Ib3N0KTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBpb0hvc3Qubm90aWZ5Lm1vY2tSZXNldCgpO1xuICB9KTtcblxuICB0ZXN0LmVhY2goWyd0cmFjZScsICdkZWJ1ZyddIGFzIEFycmF5PGtleW9mIFNka1RvQ2xpTG9nZ2VyPikoJyVzIG1ldGhvZCBkb2VzIG5vdCBjYWxsIG5vdGlmeScsIChtZXRob2QpID0+IHtcbiAgICBsb2dnZXJbbWV0aG9kXSgnU0RLIExvZ2dlciB0ZXN0IG1lc3NhZ2UnKTtcbiAgICBleHBlY3QoaW9Ib3N0Lm5vdGlmeSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgfSk7XG5cbiAgdGVzdC5lYWNoKFsnaW5mbycsICd3YXJuJywgJ2Vycm9yJ10gYXMgQXJyYXk8a2V5b2YgU2RrVG9DbGlMb2dnZXI+KSgnJXMgbWV0aG9kIGxvZ3MgdG8gbm90aWZ5JywgKG1ldGhvZCkgPT4ge1xuICAgIGxvZ2dlclttZXRob2RdKCdTREsgTG9nZ2VyIHRlc3QgbWVzc2FnZScpO1xuICAgIGV4cGVjdChpb0hvc3Qubm90aWZ5KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICBsZXZlbDogJ3RyYWNlJyxcbiAgICAgIG1lc3NhZ2U6IGBbU0RLICR7bWV0aG9kfV0gU0RLIExvZ2dlciB0ZXN0IG1lc3NhZ2VgLFxuICAgIH0pKTtcbiAgfSk7XG59KTtcblxuY29uc3QgU1VDQ0VTU19DQUxMID0ge1xuICBjbGllbnROYW1lOiAnUzNDbGllbnQnLFxuICBjb21tYW5kTmFtZTogJ0dldEJ1Y2tldExvY2F0aW9uQ29tbWFuZCcsXG4gIGlucHV0OiB7XG4gICAgQnVja2V0OiAnLi4uLi4nLFxuICAgIEV4cGVjdGVkQnVja2V0T3duZXI6IHVuZGVmaW5lZCxcbiAgfSxcbiAgb3V0cHV0OiB7IExvY2F0aW9uQ29uc3RyYWludDogJ2V1LWNlbnRyYWwtMScgfSxcbiAgbWV0YWRhdGE6IHtcbiAgICBodHRwU3RhdHVzQ29kZTogMjAwLFxuICAgIHJlcXVlc3RJZDogJy4uLi4nLFxuICAgIGV4dGVuZGVkUmVxdWVzdElkOiAnLi4uJyxcbiAgICBjZklkOiB1bmRlZmluZWQsXG4gICAgYXR0ZW1wdHM6IDIsXG4gICAgdG90YWxSZXRyeURlbGF5OiAzMCxcbiAgfSxcbn07XG5cbmNvbnN0IEVSUk9SX0NBTEwgPSB7XG4gIGNsaWVudE5hbWU6ICdTM0NsaWVudCcsXG4gIGNvbW1hbmROYW1lOiAnR2V0QnVja2V0TG9jYXRpb25Db21tYW5kJyxcbiAgaW5wdXQ6IHtcbiAgICBCdWNrZXQ6ICcuLi4uLicsXG4gICAgRXhwZWN0ZWRCdWNrZXRPd25lcjogdW5kZWZpbmVkLFxuICB9LFxuICBlcnJvcjogbmV3IEVycm9yKCdpdCBmYWlsZWQnKSxcbiAgbWV0YWRhdGE6IHtcbiAgICBodHRwU3RhdHVzQ29kZTogMjAwLFxuICAgIGF0dGVtcHRzOiAyLFxuICAgIHRvdGFsUmV0cnlEZWxheTogMzAsXG4gIH0sXG59O1xuXG50ZXN0KCdmb3JtYXR0aW5nIGEgc3VjY2Vzc2Z1bCBTREsgY2FsbCBsb29rcyBicm9hZGx5IHJlYXNvbmFibGUnLCAoKSA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGZvcm1hdFNka0xvZ2dlckNvbnRlbnQoW1NVQ0NFU1NfQ0FMTF0pO1xuICBleHBlY3Qob3V0cHV0KS50b01hdGNoU25hcHNob3QoKTtcbn0pO1xuXG50ZXN0KCdmb3JtYXR0aW5nIGEgZmFpbGluZyBTREsgY2FsbCBsb29rcyBicm9hZGx5IHJlYXNvbmFibGUnLCAoKSA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGZvcm1hdFNka0xvZ2dlckNvbnRlbnQoW0VSUk9SX0NBTExdKTtcbiAgZXhwZWN0KG91dHB1dCkudG9NYXRjaFNuYXBzaG90KCk7XG59KTtcblxudGVzdCgnZm9ybWF0dGluZyBhIHN1Y2Nlc3NmdWwgU0RLIGNhbGwgaW5jbHVkZXMgYXR0ZW1wdHMgYW5kIHJldHJpZXMgaWYgZ3JlYXRlciB0aGFuIDEnLCAoKSA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGZvcm1hdFNka0xvZ2dlckNvbnRlbnQoW1NVQ0NFU1NfQ0FMTF0pO1xuICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJzIgYXR0ZW1wdHMnKTtcbiAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCczMG1zJyk7XG59KTtcblxudGVzdCgnZm9ybWF0dGluZyBhIGZhaWxpbmcgU0RLIGNhbGwgaW5jbHVkZXMgYXR0ZW1wdHMgYW5kIHJldHJpZXMgaWYgZ3JlYXRlciB0aGFuIDEnLCAoKSA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGZvcm1hdFNka0xvZ2dlckNvbnRlbnQoW0VSUk9SX0NBTExdKTtcbiAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCcyIGF0dGVtcHRzJyk7XG4gIGV4cGVjdChvdXRwdXQpLnRvQ29udGFpbignMzBtcycpO1xufSk7XG5cbnRlc3QoJ2Zvcm1hdHRpbmcgYSBmYWlsaW5nIFNESyBjYWxsIGluY2x1ZGVzIHRoZSBlcnJvcicsICgpID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gZm9ybWF0U2RrTG9nZ2VyQ29udGVudChbRVJST1JfQ0FMTF0pO1xuICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJ2l0IGZhaWxlZCcpO1xufSk7XG4iXX0=
|