Socket
Socket
Sign inDemoInstall

@aws-cdk/cfnspec

Package Overview
Dependencies
Maintainers
5
Versions
476
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aws-cdk/cfnspec - npm Package Compare versions

Comparing version 1.18.0 to 1.19.0

.nyc_output/1665d45f-21b4-4035-a7d5-e63e90cd0af7.json

2

.nyc_output/processinfo/index.json

@@ -1,1 +0,1 @@

{"processes":{"06452454-f09e-432f-b70a-d0dc20f5f18f":{"parent":null,"children":[]},"264b7c46-d7b5-43b4-ba59-80e40095cf0b":{"parent":null,"children":[]}},"files":{"/codebuild/output/src347528954/src/packages/@aws-cdk/cfnspec/lib/index.js":["06452454-f09e-432f-b70a-d0dc20f5f18f","264b7c46-d7b5-43b4-ba59-80e40095cf0b"],"/codebuild/output/src347528954/src/packages/@aws-cdk/cfnspec/lib/schema/augmentation.js":["06452454-f09e-432f-b70a-d0dc20f5f18f","264b7c46-d7b5-43b4-ba59-80e40095cf0b"],"/codebuild/output/src347528954/src/packages/@aws-cdk/cfnspec/lib/schema/base-types.js":["06452454-f09e-432f-b70a-d0dc20f5f18f","264b7c46-d7b5-43b4-ba59-80e40095cf0b"],"/codebuild/output/src347528954/src/packages/@aws-cdk/cfnspec/lib/schema/index.js":["06452454-f09e-432f-b70a-d0dc20f5f18f","264b7c46-d7b5-43b4-ba59-80e40095cf0b"],"/codebuild/output/src347528954/src/packages/@aws-cdk/cfnspec/lib/schema/property.js":["06452454-f09e-432f-b70a-d0dc20f5f18f","264b7c46-d7b5-43b4-ba59-80e40095cf0b"],"/codebuild/output/src347528954/src/packages/@aws-cdk/cfnspec/lib/schema/resource-type.js":["06452454-f09e-432f-b70a-d0dc20f5f18f","264b7c46-d7b5-43b4-ba59-80e40095cf0b"],"/codebuild/output/src347528954/src/packages/@aws-cdk/cfnspec/lib/schema/specification.js":["06452454-f09e-432f-b70a-d0dc20f5f18f","264b7c46-d7b5-43b4-ba59-80e40095cf0b"]},"externalIds":{}}
{"processes":{"1665d45f-21b4-4035-a7d5-e63e90cd0af7":{"parent":null,"children":[]},"dad3c374-d551-4bd9-93f2-7d72ddef9fbd":{"parent":null,"children":[]}},"files":{"/codebuild/output/src456218634/src/packages/@aws-cdk/cfnspec/lib/index.js":["1665d45f-21b4-4035-a7d5-e63e90cd0af7","dad3c374-d551-4bd9-93f2-7d72ddef9fbd"],"/codebuild/output/src456218634/src/packages/@aws-cdk/cfnspec/lib/schema/index.js":["1665d45f-21b4-4035-a7d5-e63e90cd0af7","dad3c374-d551-4bd9-93f2-7d72ddef9fbd"],"/codebuild/output/src456218634/src/packages/@aws-cdk/cfnspec/lib/schema/base-types.js":["1665d45f-21b4-4035-a7d5-e63e90cd0af7","dad3c374-d551-4bd9-93f2-7d72ddef9fbd"],"/codebuild/output/src456218634/src/packages/@aws-cdk/cfnspec/lib/schema/property.js":["1665d45f-21b4-4035-a7d5-e63e90cd0af7","dad3c374-d551-4bd9-93f2-7d72ddef9fbd"],"/codebuild/output/src456218634/src/packages/@aws-cdk/cfnspec/lib/schema/resource-type.js":["1665d45f-21b4-4035-a7d5-e63e90cd0af7","dad3c374-d551-4bd9-93f2-7d72ddef9fbd"],"/codebuild/output/src456218634/src/packages/@aws-cdk/cfnspec/lib/schema/specification.js":["1665d45f-21b4-4035-a7d5-e63e90cd0af7","dad3c374-d551-4bd9-93f2-7d72ddef9fbd"],"/codebuild/output/src456218634/src/packages/@aws-cdk/cfnspec/lib/schema/augmentation.js":["1665d45f-21b4-4035-a7d5-e63e90cd0af7","dad3c374-d551-4bd9-93f2-7d72ddef9fbd"]},"externalIds":{}}

@@ -13,2 +13,3 @@ "use strict";

const path = require("path");
const lib_1 = require("../lib");
const scrutiny_1 = require("./scrutiny");

@@ -30,2 +31,3 @@ async function main() {

scrutiny_1.detectScrutinyTypes(spec);
replaceIncompleteTypes(spec);
spec.Fingerprint = md5(JSON.stringify(normalize(spec)));

@@ -52,2 +54,22 @@ const outDir = path.join(process.cwd(), 'spec');

}
/**
* Fix incomplete type definitions in PropertyTypes
*
* Some user-defined types are defined to not have any properties, and not
* be a collection of other types either. They have no definition at all.
*
* Add a property object type with empty properties.
*/
function replaceIncompleteTypes(spec) {
for (const [name, definition] of Object.entries(spec.PropertyTypes)) {
if (!lib_1.schema.isRecordType(definition)
&& !lib_1.schema.isCollectionProperty(definition)
&& !lib_1.schema.isScalarProperty(definition)
&& !lib_1.schema.isPrimitiveProperty(definition)) {
// tslint:disable-next-line:no-console
console.log(`[${name}] Incomplete type, adding empty "Properties" field`);
definition.Properties = {};
}
}
}
function merge(spec, fragment, jsonPath) {

@@ -118,2 +140,2 @@ if (!fragment) {

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJidWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7O0dBS0c7O0FBRUgsaURBQWtEO0FBQ2xELCtCQUFnQztBQUNoQywyQkFBNEI7QUFDNUIsNkJBQThCO0FBRTlCLHlDQUFpRDtBQUVqRCxLQUFLLFVBQVUsSUFBSTtJQUNqQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN6RCxNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekMsTUFBTSxJQUFJLEdBQXlCLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUM3RixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDaEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2hDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ25DO2FBQU07WUFDTCxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNuQztLQUNGO0lBRUQsOEJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFMUIs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Q0FBQztJQUNoQixDQUFDO0FBQ0gsQ0FBQztBQUVELElBQUksRUFBRTtLQUNILEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNULHNDQUFzQztJQUN0QyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogSW52b2tlZCBhcyBwYXJ0IG9mIHRoZSBcImJ1aWxkXCIgc2NyaXB0IG9mIHRoaXMgcGFja2FnZSxcbiAqIHRoaXMgc2NyaXB0IHRha2VzIGFsbCBzcGVjaWZpY2F0aW9uIGZyYWdtZW50cyBpbiB0aGVcbiAqIGBzcGVjLXNvdXJjZWAgZm9sZGVyIGFuZCBnZW5lcmF0ZXMgYSB1bmlmaWVkIHNwZWNpZmljYXRpb25cbiAqIGRvY3VtZW50IGF0IGBzcGVjL3NwZWNpZmljYXRpb24uanNvbmAuXG4gKi9cblxuaW1wb3J0IGZhc3RKc29uUGF0Y2ggPSByZXF1aXJlKCdmYXN0LWpzb24tcGF0Y2gnKTtcbmltcG9ydCBmcyA9IHJlcXVpcmUoJ2ZzLWV4dHJhJyk7XG5pbXBvcnQgbWQ1ID0gcmVxdWlyZSgnbWQ1Jyk7XG5pbXBvcnQgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmltcG9ydCB7IHNjaGVtYSB9IGZyb20gJy4uL2xpYic7XG5pbXBvcnQgeyBkZXRlY3RTY3J1dGlueVR5cGVzIH0gZnJvbSAnLi9zY3J1dGlueSc7XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gIGNvbnN0IGlucHV0RGlyID0gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICdzcGVjLXNvdXJjZScpO1xuICBjb25zdCBmaWxlcyA9IGF3YWl0IGZzLnJlYWRkaXIoaW5wdXREaXIpO1xuICBjb25zdCBzcGVjOiBzY2hlbWEuU3BlY2lmaWNhdGlvbiA9IHsgUHJvcGVydHlUeXBlczoge30sIFJlc291cmNlVHlwZXM6IHt9LCBGaW5nZXJwcmludDogJycgfTtcbiAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzLmZpbHRlcihuID0+IG4uZW5kc1dpdGgoJy5qc29uJykpLnNvcnQoKSkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmcy5yZWFkSnNvbihwYXRoLmpvaW4oaW5wdXREaXIsIGZpbGUpKTtcbiAgICBpZiAoZmlsZS5pbmRleE9mKCdwYXRjaCcpID09PSAtMSkge1xuICAgICAgZGVjb3JhdGVSZXNvdXJjZVR5cGVzKGRhdGEpO1xuICAgICAgZm9yRWFjaFNlY3Rpb24oc3BlYywgZGF0YSwgbWVyZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3JFYWNoU2VjdGlvbihzcGVjLCBkYXRhLCBwYXRjaCk7XG4gICAgfVxuICB9XG5cbiAgZGV0ZWN0U2NydXRpbnlUeXBlcyhzcGVjKTtcblxuICBzcGVjLkZpbmdlcnByaW50ID0gbWQ1KEpTT04uc3RyaW5naWZ5KG5vcm1hbGl6ZShzcGVjKSkpO1xuXG4gIGNvbnN0IG91dERpciA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnc3BlYycpO1xuICBhd2FpdCBmcy5ta2RpcnAob3V0RGlyKTtcbiAgYXdhaXQgZnMud3JpdGVKc29uKHBhdGguam9pbihvdXREaXIsICdzcGVjaWZpY2F0aW9uLmpzb24nKSwgc3BlYywgeyBzcGFjZXM6IDIgfSk7XG59XG5cbmZ1bmN0aW9uIGZvckVhY2hTZWN0aW9uKHNwZWM6IHNjaGVtYS5TcGVjaWZpY2F0aW9uLCBkYXRhOiBhbnksIGNiOiAoc3BlYzogYW55LCBmcmFnbWVudDogYW55LCBwYXRoOiBzdHJpbmdbXSkgPT4gdm9pZCkge1xuICBjYihzcGVjLlByb3BlcnR5VHlwZXMsIGRhdGEuUHJvcGVydHlUeXBlcywgWydQcm9wZXJ0eVR5cGVzJ10pO1xuICBjYihzcGVjLlJlc291cmNlVHlwZXMsIGRhdGEuUmVzb3VyY2VUeXBlcywgWydSZXNvdXJjZVR5cGVzJ10pO1xuICAvLyBQZXItcmVzb3VyY2Ugc3BlY3MgYXJlIGtleWVkIG9uIFJlc291cmNlVHlwZSAoc2luZ3VsYXIpLCBidXQgd2Ugd2FudCBpdCBpbiBSZXNvdXJjZVR5cGVzIChwbHVyYWwpXG4gIGNiKHNwZWMuUmVzb3VyY2VUeXBlcywgZGF0YS5SZXNvdXJjZVR5cGUsIFsnUmVzb3VyY2VUeXBlJ10pO1xufVxuXG5mdW5jdGlvbiBkZWNvcmF0ZVJlc291cmNlVHlwZXMoZGF0YTogYW55KSB7XG4gIGNvbnN0IHJlcXVpcmVkVHJhbnNmb3JtID0gZGF0YS5SZXNvdXJjZVNwZWNpZmljYXRpb25UcmFuc2Zvcm0gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpZiAoIXJlcXVpcmVkVHJhbnNmb3JtKSB7IHJldHVybjsgfVxuICBjb25zdCByZXNvdXJjZVR5cGVzID0gZGF0YS5SZXNvdXJjZVR5cGVzIHx8IGRhdGEuUmVzb3VyY2VUeXBlO1xuICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMocmVzb3VyY2VUeXBlcykpIHtcbiAgICByZXNvdXJjZVR5cGVzW25hbWVdLlJlcXVpcmVkVHJhbnNmb3JtID0gcmVxdWlyZWRUcmFuc2Zvcm07XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2Uoc3BlYzogYW55LCBmcmFnbWVudDogYW55LCBqc29uUGF0aDogc3RyaW5nW10pIHtcbiAgaWYgKCFmcmFnbWVudCkgeyByZXR1cm47IH1cbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZnJhZ21lbnQpKSB7XG4gICAgaWYgKGtleSBpbiBzcGVjKSB7XG4gICAgICBjb25zdCBzcGVjVmFsID0gc3BlY1trZXldO1xuICAgICAgY29uc3QgZnJhZ1ZhbCA9IGZyYWdtZW50W2tleV07XG4gICAgICBpZiAodHlwZW9mIHNwZWNWYWwgIT09IHR5cGVvZiBmcmFnVmFsKSB7XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBdHRlbXB0ZWQgdG8gbWVyZ2UgJHtKU09OLnN0cmluZ2lmeShmcmFnVmFsKX0gaW50byBpbmNvbXBhdGlibGUgJHtKU09OLnN0cmluZ2lmeShzcGVjVmFsKX0gYXQgcGF0aCAke2pzb25QYXRoLmpvaW4oJy8nKX0vJHtrZXl9YCk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHNwZWNWYWwgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb25mbGljdCB3aGVuIGF0dGVtcHRpbmcgdG8gbWVyZ2UgJHtKU09OLnN0cmluZ2lmeShmcmFnVmFsKX0gaW50byAke0pTT04uc3RyaW5naWZ5KHNwZWNWYWwpfSBhdCBwYXRoICR7anNvblBhdGguam9pbignLycpfS8ke2tleX1gKTtcbiAgICAgIH1cbiAgICAgIG1lcmdlKHNwZWNWYWwsIGZyYWdWYWwsIFsuLi5qc29uUGF0aCwga2V5XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNwZWNba2V5XSA9IGZyYWdtZW50W2tleV07XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBhdGNoKHNwZWM6IGFueSwgZnJhZ21lbnQ6IGFueSkge1xuICBpZiAoIWZyYWdtZW50KSB7IHJldHVybjsgfVxuICBpZiAoJ3BhdGNoJyBpbiBmcmFnbWVudCkge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1jb25zb2xlXG4gICAgY29uc29sZS5sb2coYEFwcGx5aW5nIHBhdGNoOiAke2ZyYWdtZW50LnBhdGNoLmRlc2NyaXB0aW9ufWApO1xuICAgIGZhc3RKc29uUGF0Y2guYXBwbHlQYXRjaChzcGVjLCBmcmFnbWVudC5wYXRjaC5vcGVyYXRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhmcmFnbWVudCkpIHtcbiAgICAgIHBhdGNoKHNwZWNba2V5XSwgZnJhZ21lbnRba2V5XSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogTW9kaWZpZXMgdGhlIHByb3ZpZGVkIHNwZWNpZmljYXRpb24gc28gdGhhdCBgYFJlc291cmNlVHlwZXNgYCBhbmQgYGBQcm9wZXJ0eVR5cGVzYGAgYXJlIGxpc3RlZCBpbiBhbHBoYWJldGljYWwgb3JkZXIuXG4gKlxuICogQHBhcmFtIHNwZWMgYW4gQVdTIENsb3VkRm9ybWF0aW9uIFJlc291cmNlIFNwZWNpZmljYXRpb24gZG9jdW1lbnQuXG4gKlxuICogQHJldHVybnMgYGBzcGVjYGAsIGFmdGVyIGhhdmluZyBzb3J0ZWQgdGhlIGBgUmVzb3VyY2VUeXBlc2BgIGFuZCBgYFByb3BlcnR5VHlwZXNgYCBzZWN0aW9ucyBhbHBoYWJldGljYWxseS5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplKHNwZWM6IHNjaGVtYS5TcGVjaWZpY2F0aW9uKTogc2NoZW1hLlNwZWNpZmljYXRpb24ge1xuICBzcGVjLlJlc291cmNlVHlwZXMgPSBub3JtYWxpemVTZWN0aW9uKHNwZWMuUmVzb3VyY2VUeXBlcyk7XG4gIGlmIChzcGVjLlByb3BlcnR5VHlwZXMpIHtcbiAgICBzcGVjLlByb3BlcnR5VHlwZXMgPSBub3JtYWxpemVTZWN0aW9uKHNwZWMuUHJvcGVydHlUeXBlcyk7XG4gIH1cbiAgcmV0dXJuIHNwZWM7XG5cbiAgZnVuY3Rpb24gbm9ybWFsaXplU2VjdGlvbjxUPihzZWN0aW9uOiB7IFtuYW1lOiBzdHJpbmddOiBUIH0pOiB7IFtuYW1lOiBzdHJpbmddOiBUIH0ge1xuICAgIGNvbnN0IHJlc3VsdDogeyBbbmFtZTogc3RyaW5nXTogVCB9ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoc2VjdGlvbikuc29ydCgpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IHNlY3Rpb25ba2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5tYWluKClcbiAgLmNhdGNoKGUgPT4ge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1jb25zb2xlXG4gICAgY29uc29sZS5lcnJvcihlLnN0YWNrKTtcbiAgICBwcm9jZXNzLmV4aXQoLTEpO1xuICB9KTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJidWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7O0dBS0c7O0FBRUgsaURBQWtEO0FBQ2xELCtCQUFnQztBQUNoQywyQkFBNEI7QUFDNUIsNkJBQThCO0FBQzlCLGdDQUFnQztBQUNoQyx5Q0FBaUQ7QUFFakQsS0FBSyxVQUFVLElBQUk7SUFDakIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDekQsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sSUFBSSxHQUF5QixFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDN0YsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2hFLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNoQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QixjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNuQzthQUFNO1lBQ0wsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDbkM7S0FDRjtJQUVELDhCQUFtQixDQUFDLElBQUksQ0FB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USxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDakM7S0FDRjtBQUNILENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLFNBQVMsQ0FBQyxJQUEwQjtJQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7UUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDM0Q7SUFDRCxPQUFPLElBQUksQ0FBQztJQUVaLFNBQVMsZ0JBQWdCLENBQUksT0FBOEI7UUFDekQsTUFBTSxNQUFNLEdBQTBCLEVBQUUsQ0FBQztRQUN6QyxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDN0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM1QjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7QUFDSCxDQUFDO0FBRUQsSUFBSSxFQUFFO0tBQ0gsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ1Qsc0NBQXNDO0lBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBJbnZva2VkIGFzIHBhcnQgb2YgdGhlIFwiYnVpbGRcIiBzY3JpcHQgb2YgdGhpcyBwYWNrYWdlLFxuICogdGhpcyBzY3JpcHQgdGFrZXMgYWxsIHNwZWNpZmljYXRpb24gZnJhZ21lbnRzIGluIHRoZVxuICogYHNwZWMtc291cmNlYCBmb2xkZXIgYW5kIGdlbmVyYXRlcyBhIHVuaWZpZWQgc3BlY2lmaWNhdGlvblxuICogZG9jdW1lbnQgYXQgYHNwZWMvc3BlY2lmaWNhdGlvbi5qc29uYC5cbiAqL1xuXG5pbXBvcnQgZmFzdEpzb25QYXRjaCA9IHJlcXVpcmUoJ2Zhc3QtanNvbi1wYXRjaCcpO1xuaW1wb3J0IGZzID0gcmVxdWlyZSgnZnMtZXh0cmEnKTtcbmltcG9ydCBtZDUgPSByZXF1aXJlKCdtZDUnKTtcbmltcG9ydCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuaW1wb3J0IHsgc2NoZW1hIH0gZnJvbSAnLi4vbGliJztcbmltcG9ydCB7IGRldGVjdFNjcnV0aW55VHlwZXMgfSBmcm9tICcuL3NjcnV0aW55JztcblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgaW5wdXREaXIgPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJ3NwZWMtc291cmNlJyk7XG4gIGNvbnN0IGZpbGVzID0gYXdhaXQgZnMucmVhZGRpcihpbnB1dERpcik7XG4gIGNvbnN0IHNwZWM6IHNjaGVtYS5TcGVjaWZpY2F0aW9uID0geyBQcm9wZXJ0eVR5cGVzOiB7fSwgUmVzb3VyY2VUeXBlczoge30sIEZpbmdlcnByaW50OiAnJyB9O1xuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMuZmlsdGVyKG4gPT4gbi5lbmRzV2l0aCgnLmpzb24nKSkuc29ydCgpKSB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGZzLnJlYWRKc29uKHBhdGguam9pbihpbnB1dERpciwgZmlsZSkpO1xuICAgIGlmIChmaWxlLmluZGV4T2YoJ3BhdGNoJykgPT09IC0xKSB7XG4gICAgICBkZWNvcmF0ZVJlc291cmNlVHlwZXMoZGF0YSk7XG4gICAgICBmb3JFYWNoU2VjdGlvbihzcGVjLCBkYXRhLCBtZXJnZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvckVhY2hTZWN0aW9uKHNwZWMsIGRhdGEsIHBhdGNoKTtcbiAgICB9XG4gIH1cblxuICBkZXRlY3RTY3J1dGlueVR5cGVzKHNwZWMpO1xuICByZXBsYWNlSW5jb21wbGV0ZVR5cGVzKHNwZWMpO1xuXG4gIHNwZWMuRmluZ2VycHJpbnQgPSBtZDUoSlNPTi5zdHJpbmdpZnkobm9ybWFsaXplKHNwZWMpKSk7XG5cbiAgY29uc3Qgb3V0RGlyID0gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICdzcGVjJyk7XG4gIGF3YWl0IGZzLm1rZGlycChvdXREaXIpO1xuICBhd2FpdCBmcy53cml0ZUpzb24ocGF0aC5qb2luKG91dERpciwgJ3NwZWNpZmljYXRpb24uanNvbicpLCBzcGVjLCB7IHNwYWNlczogMiB9KTtcbn1cblxuZnVuY3Rpb24gZm9yRWFjaFNlY3Rpb24oc3BlYzogc2NoZW1hLlNwZWNpZmljYXRpb24sIGRhdGE6IGFueSwgY2I6IChzcGVjOiBhbnksIGZyYWdtZW50OiBhbnksIHBhdGg6IHN0cmluZ1tdKSA9PiB2b2lkKSB7XG4gIGNiKHNwZWMuUHJvcGVydHlUeXBlcywgZGF0YS5Qcm9wZXJ0eVR5cGVzLCBbJ1Byb3BlcnR5VHlwZXMnXSk7XG4gIGNiKHNwZWMuUmVzb3VyY2VUeXBlcywgZGF0YS5SZXNvdXJjZVR5cGVzLCBbJ1Jlc291cmNlVHlwZXMnXSk7XG4gIC8vIFBlci1yZXNvdXJjZSBzcGVjcyBhcmUga2V5ZWQgb24gUmVzb3VyY2VUeXBlIChzaW5ndWxhciksIGJ1dCB3ZSB3YW50IGl0IGluIFJlc291cmNlVHlwZXMgKHBsdXJhbClcbiAgY2Ioc3BlYy5SZXNvdXJjZVR5cGVzLCBkYXRhLlJlc291cmNlVHlwZSwgWydSZXNvdXJjZVR5cGUnXSk7XG59XG5cbmZ1bmN0aW9uIGRlY29yYXRlUmVzb3VyY2VUeXBlcyhkYXRhOiBhbnkpIHtcbiAgY29uc3QgcmVxdWlyZWRUcmFuc2Zvcm0gPSBkYXRhLlJlc291cmNlU3BlY2lmaWNhdGlvblRyYW5zZm9ybSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlmICghcmVxdWlyZWRUcmFuc2Zvcm0pIHsgcmV0dXJuOyB9XG4gIGNvbnN0IHJlc291cmNlVHlwZXMgPSBkYXRhLlJlc291cmNlVHlwZXMgfHwgZGF0YS5SZXNvdXJjZVR5cGU7XG4gIGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhyZXNvdXJjZVR5cGVzKSkge1xuICAgIHJlc291cmNlVHlwZXNbbmFtZV0uUmVxdWlyZWRUcmFuc2Zvcm0gPSByZXF1aXJlZFRyYW5zZm9ybTtcbiAgfVxufVxuXG4vKipcbiAqIEZpeCBpbmNvbXBsZXRlIHR5cGUgZGVmaW5pdGlvbnMgaW4gUHJvcGVydHlUeXBlc1xuICpcbiAqIFNvbWUgdXNlci1kZWZpbmVkIHR5cGVzIGFyZSBkZWZpbmVkIHRvIG5vdCBoYXZlIGFueSBwcm9wZXJ0aWVzLCBhbmQgbm90XG4gKiBiZSBhIGNvbGxlY3Rpb24gb2Ygb3RoZXIgdHlwZXMgZWl0aGVyLiBUaGV5IGhhdmUgbm8gZGVmaW5pdGlvbiBhdCBhbGwuXG4gKlxuICogQWRkIGEgcHJvcGVydHkgb2JqZWN0IHR5cGUgd2l0aCBlbXB0eSBwcm9wZXJ0aWVzLlxuICovXG5mdW5jdGlvbiByZXBsYWNlSW5jb21wbGV0ZVR5cGVzKHNwZWM6IHNjaGVtYS5TcGVjaWZpY2F0aW9uKSB7XG4gIGZvciAoY29uc3QgW25hbWUsIGRlZmluaXRpb25dIG9mIE9iamVjdC5lbnRyaWVzKHNwZWMuUHJvcGVydHlUeXBlcykpIHtcbiAgICBpZiAoIXNjaGVtYS5pc1JlY29yZFR5cGUoZGVmaW5pdGlvbilcbiAgICAmJiAhc2NoZW1hLmlzQ29sbGVjdGlvblByb3BlcnR5KGRlZmluaXRpb24pXG4gICAgJiYgIXNjaGVtYS5pc1NjYWxhclByb3BlcnR5KGRlZmluaXRpb24pXG4gICAgJiYgIXNjaGVtYS5pc1ByaW1pdGl2ZVByb3BlcnR5KGRlZmluaXRpb24pKSB7XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uc29sZVxuICAgICAgY29uc29sZS5sb2coYFske25hbWV9XSBJbmNvbXBsZXRlIHR5cGUsIGFkZGluZyBlbXB0eSBcIlByb3BlcnRpZXNcIiBmaWVsZGApO1xuXG4gICAgICAoZGVmaW5pdGlvbiBhcyB1bmtub3duIGFzIHNjaGVtYS5SZWNvcmRQcm9wZXJ0eSkuUHJvcGVydGllcyA9IHt9O1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZShzcGVjOiBhbnksIGZyYWdtZW50OiBhbnksIGpzb25QYXRoOiBzdHJpbmdbXSkge1xuICBpZiAoIWZyYWdtZW50KSB7IHJldHVybjsgfVxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhmcmFnbWVudCkpIHtcbiAgICBpZiAoa2V5IGluIHNwZWMpIHtcbiAgICAgIGNvbnN0IHNwZWNWYWwgPSBzcGVjW2tleV07XG4gICAgICBjb25zdCBmcmFnVmFsID0gZnJhZ21lbnRba2V5XTtcbiAgICAgIGlmICh0eXBlb2Ygc3BlY1ZhbCAhPT0gdHlwZW9mIGZyYWdWYWwpIHtcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEF0dGVtcHRlZCB0byBtZXJnZSAke0pTT04uc3RyaW5naWZ5KGZyYWdWYWwpfSBpbnRvIGluY29tcGF0aWJsZSAke0pTT04uc3RyaW5naWZ5KHNwZWNWYWwpfSBhdCBwYXRoICR7anNvblBhdGguam9pbignLycpfS8ke2tleX1gKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2Ygc3BlY1ZhbCAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbmZsaWN0IHdoZW4gYXR0ZW1wdGluZyB0byBtZXJnZSAke0pTT04uc3RyaW5naWZ5KGZyYWdWYWwpfSBpbnRvICR7SlNPTi5zdHJpbmdpZnkoc3BlY1ZhbCl9IGF0IHBhdGggJHtqc29uUGF0aC5qb2luKCcvJyl9LyR7a2V5fWApO1xuICAgICAgfVxuICAgICAgbWVyZ2Uoc3BlY1ZhbCwgZnJhZ1ZhbCwgWy4uLmpzb25QYXRoLCBrZXldKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3BlY1trZXldID0gZnJhZ21lbnRba2V5XTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcGF0Y2goc3BlYzogYW55LCBmcmFnbWVudDogYW55KSB7XG4gIGlmICghZnJhZ21lbnQpIHsgcmV0dXJuOyB9XG4gIGlmICgncGF0Y2gnIGluIGZyYWdtZW50KSB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmxvZyhgQXBwbHlpbmcgcGF0Y2g6ICR7ZnJhZ21lbnQucGF0Y2guZGVzY3JpcHRpb259YCk7XG4gICAgZmFzdEpzb25QYXRjaC5hcHBseVBhdGNoKHNwZWMsIGZyYWdtZW50LnBhdGNoLm9wZXJhdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGZyYWdtZW50KSkge1xuICAgICAgcGF0Y2goc3BlY1trZXldLCBmcmFnbWVudFtrZXldKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcHJvdmlkZWQgc3BlY2lmaWNhdGlvbiBzbyB0aGF0IGBgUmVzb3VyY2VUeXBlc2BgIGFuZCBgYFByb3BlcnR5VHlwZXNgYCBhcmUgbGlzdGVkIGluIGFscGhhYmV0aWNhbCBvcmRlci5cbiAqXG4gKiBAcGFyYW0gc3BlYyBhbiBBV1MgQ2xvdWRGb3JtYXRpb24gUmVzb3VyY2UgU3BlY2lmaWNhdGlvbiBkb2N1bWVudC5cbiAqXG4gKiBAcmV0dXJucyBgYHNwZWNgYCwgYWZ0ZXIgaGF2aW5nIHNvcnRlZCB0aGUgYGBSZXNvdXJjZVR5cGVzYGAgYW5kIGBgUHJvcGVydHlUeXBlc2BgIHNlY3Rpb25zIGFscGhhYmV0aWNhbGx5LlxuICovXG5mdW5jdGlvbiBub3JtYWxpemUoc3BlYzogc2NoZW1hLlNwZWNpZmljYXRpb24pOiBzY2hlbWEuU3BlY2lmaWNhdGlvbiB7XG4gIHNwZWMuUmVzb3VyY2VUeXBlcyA9IG5vcm1hbGl6ZVNlY3Rpb24oc3BlYy5SZXNvdXJjZVR5cGVzKTtcbiAgaWYgKHNwZWMuUHJvcGVydHlUeXBlcykge1xuICAgIHNwZWMuUHJvcGVydHlUeXBlcyA9IG5vcm1hbGl6ZVNlY3Rpb24oc3BlYy5Qcm9wZXJ0eVR5cGVzKTtcbiAgfVxuICByZXR1cm4gc3BlYztcblxuICBmdW5jdGlvbiBub3JtYWxpemVTZWN0aW9uPFQ+KHNlY3Rpb246IHsgW25hbWU6IHN0cmluZ106IFQgfSk6IHsgW25hbWU6IHN0cmluZ106IFQgfSB7XG4gICAgY29uc3QgcmVzdWx0OiB7IFtuYW1lOiBzdHJpbmddOiBUIH0gPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhzZWN0aW9uKS5zb3J0KCkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gc2VjdGlvbltrZXldO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbm1haW4oKVxuICAuY2F0Y2goZSA9PiB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmVycm9yKGUuc3RhY2spO1xuICAgIHByb2Nlc3MuZXhpdCgtMSk7XG4gIH0pO1xuIl19

@@ -109,3 +109,4 @@ #!/usr/bin/env node

signAssembly: true,
assemblyOriginatorKeyFile: "../../key.snk"
assemblyOriginatorKeyFile: "../../key.snk",
iconUrl: "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png"
},

@@ -127,3 +128,4 @@ java: {

type: "git",
url: "https://github.com/aws/aws-cdk.git"
url: "https://github.com/aws/aws-cdk.git",
directory: `packages/@aws-cdk/${packageName}`,
},

@@ -133,10 +135,13 @@ homepage: "https://github.com/aws/aws-cdk",

build: "cdk-build",
watch: "cdk-watch",
lint: "cdk-lint",
test: "cdk-test",
integ: "cdk-integ",
lint: "cdk-lint",
pkglint: "pkglint -f",
package: "cdk-package",
awslint: "cdk-awslint",
pkglint: "pkglint -f",
test: "cdk-test",
watch: "cdk-watch",
cfn2ts: "cfn2ts"
cfn2ts: "cfn2ts",
'build+test+package': "npm run build+test && npm run package",
'build+test': "npm run build && npm test",
compat: "cdk-compat"
},

@@ -158,53 +163,70 @@ 'cdk-build': {

},
jest: {
moduleFileExtensions: [
"js"
],
coverageThreshold: {
global: {
branches: 60,
statements: 80
}
}
},
license: "Apache-2.0",
devDependencies: {
"@aws-cdk/assert": `^${version}`,
"cdk-build-tools": `^${version}`,
"cfn2ts": `^${version}`,
"pkglint": `^${version}`,
"@aws-cdk/assert": version,
"cdk-build-tools": version,
"cfn2ts": version,
"pkglint": version,
},
dependencies: {
"@aws-cdk/core": `^${version}`,
"@aws-cdk/core": version,
},
peerDependencies: {
"@aws-cdk/core": `^${version}`,
"@aws-cdk/core": version,
},
engines: {
node: '>= 10.3.0'
}
},
stability: "experimental"
});
await write('.gitignore', [
'*.js',
'*.js.map',
'*.d.ts',
'tsconfig.json',
'tslint.json',
'node_modules',
'*.generated.ts',
'*.js',
'*.js.map',
'*.snk',
'dist',
'.jsii',
'',
'.LAST_BUILD',
'.LAST_PACKAGE',
'.nycrc',
'.nyc_output',
'coverage',
'dist',
'tsconfig.json',
'tslint.json',
'.nycrc',
'.LAST_PACKAGE',
'*.snk',
]);
await write('.npmignore', [
'# The basics',
'# Don\'t include original .ts files when doing `npm pack`',
'*.ts',
'*.tgz',
'*.snk',
'!*.d.ts',
'!*.js',
'',
'# Coverage',
'coverage',
'.nyc_output',
'.nycrc',
'*.tgz',
'',
'# Build gear',
'dist',
'.LAST_PACKAGE',
'.LAST_BUILD',
'.LAST_PACKAGE',
'.jsii',
'!*.js',
'',
'# Include .jsii',
'!.jsii',
'',
'*.snk',
'',
'*.tsbuildinfo',
'',
'tsconfig.json',
]);

@@ -215,11 +237,8 @@ await write('lib/index.ts', [

]);
await write(`test/test.${lowcaseModuleName}.ts`, [
"import { Test, testCase } from 'nodeunit';",
await write(`test/${lowcaseModuleName}.test.ts`, [
"import '@aws-cdk/assert/jest';",
"import {} from '../lib';",
"",
"export = testCase({",
" notTested(test: Test) {",
" test.ok(true, 'No tests are specified for this package.');",
" test.done();",
" }",
"test('No tests are specified for this package', () => {",
" expect(true).toBe(true);",
"});",

@@ -229,3 +248,18 @@ ]);

`## ${namespace} Construct Library`,
'<!--BEGIN STABILITY BANNER-->',
'',
'---',
'',
'![Stability: Experimental](https://img.shields.io/badge/stability-Experimental-important.svg?style=for-the-badge)',
'',
'> **This is a _developer preview_ (public beta) module. Releases might lack important features and might have',
'> future breaking changes.**',
'>',
'> This API is still under active development and subject to non-backward',
'> compatible changes or removal in any future version. Use of the API is not recommended in production',
'> environments. Experimental APIs are not subject to the Semantic Versioning model.',
'',
'---',
'<!--END STABILITY BANNER-->',
'',
'This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project.',

@@ -241,7 +275,17 @@ '',

}
// bootstrap and build the package and all deps to ensure integrity
// build the package
const lerna = path.join(path.dirname(require.resolve('lerna/package.json')), 'cli.js');
await exec(`${lerna} bootstrap`);
await exec(`${lerna} run --include-dependencies --progress pkglint --scope ${packageName}`);
await exec(`${lerna} run --include-dependencies --progress build --scope ${packageName}`);
await exec(`${lerna} run --progress build --scope ${packageName}`);
// update decdk
const decdkPkgJsonPath = path.join(require.resolve('decdk'), '..', '..', 'package.json');
const decdkPkg = JSON.parse(await fs.readFile(decdkPkgJsonPath, 'utf8'));
const unorderedDeps = {
...decdkPkg.dependencies,
[packageName]: version
};
decdkPkg.dependencies = {};
Object.keys(unorderedDeps).sort().forEach(k => {
decdkPkg.dependencies[k] = unorderedDeps[k];
});
await fs.writeFile(decdkPkgJsonPath, JSON.stringify(decdkPkg, null, 2) + '\n');
}

@@ -270,2 +314,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1pc3NpbmctbGlicmFyaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY3JlYXRlLW1pc3NpbmctbGlicmFyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUE7OztHQUdHOztBQUVILCtDQUFnRDtBQUNoRCwrQkFBZ0M7QUFDaEMsNkJBQThCO0FBQzlCLGtDQUFtQztBQUVuQyxvQkFBb0I7QUFDcEIsNEJBQTRCO0FBQzVCLDJDQUEyQztBQUUzQyxLQUFLLFVBQVUsSUFBSTtJQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsRUFBRTtRQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxJQUFJLDREQUE0RCxDQUFDLENBQUM7S0FDeEg7SUFFRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFFbkQsNkNBQTZDO0lBQzdDLEtBQUssTUFBTSxTQUFTLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFO1FBQzVDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUssaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTlHLE1BQU0sVUFBVSxHQUFHLEdBQUcsWUFBWSxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNoRyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUVoRCxNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzdELE1BQU0sV0FBVyxHQUFHLFlBQVksVUFBVSxFQUFFLENBQUM7UUFFN0Msd0RBQXdEO1FBQ3hELElBQUksTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3BDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQy9ELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM3QyxJQUFJLE1BQU0sR0FBc0IsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLGNBQWMsQ0FBQztZQUN4RSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTtnQkFBRSxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUFFO1lBQ3RELElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDcEMsOEVBQThFO2dCQUM5RSxTQUFTO2FBQ1Y7aUJBQU0sSUFBSSxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxZQUFZLElBQUksY0FBYyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3hHLHVGQUF1RjtnQkFDdkYsU0FBUzthQUNWO2lCQUFNO2dCQUNMLG1GQUFtRjtnQkFDbkYsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLFNBQVMsT0FBTyxXQUFXLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RCxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN2QixXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztnQkFDakQsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQzlELE1BQU0sT0FBTyxHQUFHO29CQUNkLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFO29CQUNsRSxNQUFNLFNBQVMsNEJBQTRCO29CQUMzQyxvQkFBb0IsaUJBQWlCLGNBQWM7aUJBQ3BELENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNiLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQy9ELFNBQVM7YUFDVjtTQUNGO1FBRUQsZUFBZTtRQUNmLE1BQU0sYUFBYSxHQUFHLGNBQWMsWUFBWSxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBRXJFLGFBQWE7UUFDYixNQUFNLFdBQVcsR0FBRyx3QkFBd0IsQ0FBQztRQUM3QyxNQUFNLFdBQVcsR0FBRyxZQUFZLEtBQUssS0FBSztZQUN4QyxDQUFDLENBQUMsWUFBWSxpQkFBaUIsRUFBRTtZQUNqQyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQy9ELE1BQU0sY0FBYyxHQUFHLFlBQVksS0FBSyxLQUFLO1lBQzNDLENBQUMsQ0FBQyxpQkFBaUI7WUFDbkIsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixFQUFFLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUUvRCxlQUFlO1FBQ2YsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLEtBQUssS0FBSztZQUM5QyxDQUFDLENBQUMsaUJBQWlCO1lBQ25CLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDL0QsTUFBTSxjQUFjLEdBQUcsV0FBVyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RELE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFM0QsS0FBSyxVQUFVLEtBQUssQ0FBQyxZQUFvQixFQUFFLFFBQW9DO1lBQzdFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ3RELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXJCLElBQUksSUFBSSxDQUFDO1lBQ1QsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUU7Z0JBQ2hDLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxxQkFBcUI7YUFDbEQ7aUJBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNsQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM1QjtpQkFBTSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRTtnQkFDdkMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUMvQztpQkFBTTtnQkFDTCxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixHQUFHLFFBQVEsQ0FBQyxDQUFDO2FBQzFEO1lBRUQsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLFdBQVcsS0FBSyxDQUFDLENBQUM7UUFFdkQsTUFBTSxLQUFLLENBQUMsY0FBYyxFQUFFO1lBQzFCLElBQUksRUFBRSxXQUFXO1lBQ2pCLE9BQU87WUFDUCxXQUFXLEVBQUUsaUNBQWlDLFNBQVMsRUFBRTtZQUN6RCxJQUFJLEVBQUUsY0FBYztZQUNwQixLQUFLLEVBQUUsZ0JBQWdCO1lBQ3ZCLElBQUksRUFBRTtnQkFDSixNQUFNLEVBQUUsTUFBTTtnQkFDZCxPQUFPLEVBQUU7b0JBQ1AsTUFBTSxFQUFFO3dCQUNOLFNBQVMsRUFBRSxhQUFhO3dCQUN4QixTQUFTLEVBQUUsYUFBYTt3QkFDeEIsWUFBWSxFQUFFLElBQUk7d0JBQ2xCLHlCQUF5QixFQUFFLGVBQWU7cUJBQzNDO29CQUNELElBQUksRUFBRTt3QkFDSixPQUFPLEVBQUUsR0FBRyxXQUFXLElBQUksV0FBVyxFQUFFO3dCQUN4QyxLQUFLLEVBQUU7NEJBQ0wsT0FBTyxFQUFFLFdBQVc7NEJBQ3BCLFVBQVUsRUFBRSxjQUFjO3lCQUMzQjtxQkFDRjtvQkFDRCxNQUFNLEVBQUU7d0JBQ04sUUFBUSxFQUFFLGNBQWM7d0JBQ3hCLE1BQU0sRUFBRSxnQkFBZ0I7cUJBQ3pCO2lCQUNGO2FBQ0Y7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsR0FBRyxFQUFFLG9DQUFvQzthQUMxQztZQUNELFFBQVEsRUFBRSxnQ0FBZ0M7WUFDMUMsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSxXQUFXO2dCQUNsQixLQUFLLEVBQUUsV0FBVztnQkFDbEIsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixPQUFPLEVBQUUsYUFBYTtnQkFDdEIsT0FBTyxFQUFFLFlBQVk7Z0JBQ3JCLElBQUksRUFBRSxVQUFVO2dCQUNoQixLQUFLLEVBQUUsV0FBVztnQkFDbEIsTUFBTSxFQUFFLFFBQVE7YUFDakI7WUFDRCxXQUFXLEVBQUU7Z0JBQ1gsY0FBYyxFQUFFLFNBQVM7YUFDMUI7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsS0FBSztnQkFDTCxLQUFLO2dCQUNMLFlBQVk7Z0JBQ1osU0FBUztnQkFDVCxVQUFVO2FBQ1g7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLHFCQUFxQjtnQkFDM0IsR0FBRyxFQUFFLHdCQUF3QjtnQkFDN0IsWUFBWSxFQUFFLElBQUk7YUFDbkI7WUFDRCxPQUFPLEVBQUUsWUFBWTtZQUNyQixlQUFlLEVBQUU7Z0JBQ2YsaUJBQWlCLEVBQUUsSUFBSSxPQUFPLEVBQUU7Z0JBQ2hDLGlCQUFpQixFQUFFLElBQUksT0FBTyxFQUFFO2dCQUNoQyxRQUFRLEVBQUUsSUFBSSxPQUFPLEVBQUU7Z0JBQ3ZCLFNBQVMsRUFBRSxJQUFJLE9BQU8sRUFBRTthQUN6QjtZQUNELFlBQVksRUFBRTtnQkFDWixlQUFlLEVBQUUsSUFBSSxPQUFPLEVBQUU7YUFDL0I7WUFDRCxnQkFBZ0IsRUFBRTtnQkFDaEIsZUFBZSxFQUFFLElBQUksT0FBTyxFQUFFO2FBQy9CO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxXQUFXO2FBQ2xCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxLQUFLLENBQUMsWUFBWSxFQUFFO1lBQ3hCLFFBQVE7WUFDUixnQkFBZ0I7WUFDaEIsTUFBTTtZQUNOLFVBQVU7WUFDVixPQUFPO1lBQ1AsT0FBTztZQUNQLGFBQWE7WUFDYixlQUFlO1lBQ2YsUUFBUTtZQUNSLGFBQWE7WUFDYixVQUFVO1lBQ1YsTUFBTTtZQUNOLGVBQWU7WUFDZixhQUFhO1NBQ2QsQ0FBQyxDQUFDO1FBRUgsTUFBTSxLQUFLLENBQUMsWUFBWSxFQUFFO1lBQ3hCLGNBQWM7WUFDZCxNQUFNO1lBQ04sT0FBTztZQUNQLE9BQU87WUFDUCxTQUFTO1lBQ1QsT0FBTztZQUNQLEVBQUU7WUFDRixZQUFZO1lBQ1osVUFBVTtZQUNWLGFBQWE7WUFDYixRQUFRO1lBQ1IsRUFBRTtZQUNGLGNBQWM7WUFDZCxNQUFNO1lBQ04sYUFBYTtZQUNiLGVBQWU7WUFDZixPQUFPO1NBQ1IsQ0FBQyxDQUFDO1FBRUgsTUFBTSxLQUFLLENBQUMsY0FBYyxFQUFFO1lBQzFCLE1BQU0sU0FBUyw0QkFBNEI7WUFDM0Msb0JBQW9CLGlCQUFpQixjQUFjO1NBQ3BELENBQUMsQ0FBQztRQUVILE1BQU0sS0FBSyxDQUFDLGFBQWEsaUJBQWlCLEtBQUssRUFBRTtZQUMvQyw0Q0FBNEM7WUFDNUMsMEJBQTBCO1lBQzFCLEVBQUU7WUFDRixxQkFBcUI7WUFDckIsNkJBQTZCO1lBQzdCLG9FQUFvRTtZQUNwRSxzQkFBc0I7WUFDdEIsT0FBTztZQUNQLEtBQUs7U0FDTixDQUFDLENBQUM7UUFFSCxNQUFNLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFDdkIsTUFBTSxTQUFTLG9CQUFvQjtZQUNuQyxFQUFFO1lBQ0YsaUdBQWlHO1lBQ2pHLEVBQUU7WUFDRixPQUFPO1lBQ1AsVUFBVSxpQkFBaUIsZUFBZSxXQUFXLEtBQUs7WUFDMUQsS0FBSztTQUNOLENBQUMsQ0FBQztRQUVILE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3JELEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ2hELE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzNFO1FBRUQsbUVBQW1FO1FBQ25FLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RixNQUFNLElBQUksQ0FBQyxHQUFHLEtBQUssWUFBWSxDQUFDLENBQUM7UUFDakMsTUFBTSxJQUFJLENBQUMsR0FBRyxLQUFLLDBEQUEwRCxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzVGLE1BQU0sSUFBSSxDQUFDLEdBQUcsS0FBSyx3REFBd0QsV0FBVyxFQUFFLENBQUMsQ0FBQztLQUMzRjtBQUNILENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFDLENBQUM7QUFFSCxLQUFLLFVBQVUsSUFBSSxDQUFDLE9BQWU7SUFDakMsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFO1FBQzdDLEtBQUssRUFBRSxDQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFFO1FBQ3pDLEtBQUssRUFBRSxJQUFJO0tBQ1osQ0FBQyxDQUFDO0lBQ0gsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUM5QixLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ3hCLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRTtnQkFDZCxPQUFPLEVBQUUsRUFBRSxDQUFDO2FBQ2I7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUN2RDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG4vKipcbiAqIGF1dG9tYXRpY2FsbHkgY3JlYXRlcyBhIG1vZHVsZSBmb3IgYW55IENsb3VkRm9ybWF0aW9uIG5hbWVzcGFjZXMgdGhhdCBkbyBub3RcbiAqIGhhdmUgYW4gQVdTIGNvbnN0cnVjdCBsaWJyYXJ5LlxuICovXG5cbmltcG9ydCBjaGlsZF9wcm9jZXNzID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpO1xuaW1wb3J0IGZzID0gcmVxdWlyZSgnZnMtZXh0cmEnKTtcbmltcG9ydCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuaW1wb3J0IGNmbnNwZWMgPSByZXF1aXJlKCcuLi9saWInKTtcblxuLy8gZG9uJ3QgYmUgYSBwcnVkZTpcbi8vIHRzbGludDpkaXNhYmxlOm5vLWNvbnNvbGVcbi8vIHRzbGludDpkaXNhYmxlOm9iamVjdC1saXRlcmFsLWtleS1xdW90ZXNcblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3Qgcm9vdCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicpO1xuICBpZiAocGF0aC5iYXNlbmFtZShyb290KSAhPT0gJ0Bhd3MtY2RrJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgU29tZXRoaW5nIHdlbnQgd3JvbmcuIFdlIGV4cGVjdGVkICR7cm9vdH0gdG8gYmUgdGhlIFwicGFja2FnZXMvQGF3cy1jZGtcIiBkaXJlY3RvcnkuIERpZCB5b3UgbW92ZSBtZT9gKTtcbiAgfVxuXG4gIGNvbnN0IHZlcnNpb24gPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuXG4gIC8vIGl0ZXJhdGUgb3ZlciBhbGwgY2xvdWRmb3JtYXRpb24gbmFtZXNwYWNlc1xuICBmb3IgKGNvbnN0IG5hbWVzcGFjZSBvZiBjZm5zcGVjLm5hbWVzcGFjZXMoKSkge1xuICAgIGNvbnN0IFttb2R1bGVGYW1pbHksIG1vZHVsZUJhc2VOYW1lXSA9IChuYW1lc3BhY2UgPT09ICdBV1M6OlNlcnZlcmxlc3MnID8gJ0FXUzo6U0FNJyA6IG5hbWVzcGFjZSkuc3BsaXQoJzo6Jyk7XG5cbiAgICBjb25zdCBtb2R1bGVOYW1lID0gYCR7bW9kdWxlRmFtaWx5fS0ke21vZHVsZUJhc2VOYW1lLnJlcGxhY2UoL1ZcXGQrJC8sICcnKX1gLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgcGFja2FnZVBhdGggPSBwYXRoLmpvaW4ocm9vdCwgbW9kdWxlTmFtZSk7XG5cbiAgICBjb25zdCBsb3djYXNlTW9kdWxlTmFtZSA9IG1vZHVsZUJhc2VOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSBgQGF3cy1jZGsvJHttb2R1bGVOYW1lfWA7XG5cbiAgICAvLyB3ZSBhbHJlYWR5IGhhdmUgYSBtb2R1bGUgZm9yIHRoaXMgbmFtZXNhcGNlLCBtb3ZlIG9uLlxuICAgIGlmIChhd2FpdCBmcy5wYXRoRXhpc3RzKHBhY2thZ2VQYXRoKSkge1xuICAgICAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gcGF0aC5qb2luKHBhY2thZ2VQYXRoLCAncGFja2FnZS5qc29uJyk7XG4gICAgICBjb25zdCBwYWNrYWdlSnNvbiA9IHJlcXVpcmUocGFja2FnZUpzb25QYXRoKTtcbiAgICAgIGxldCBzY29wZXM6IHN0cmluZyB8IHN0cmluZ1tdID0gcGFja2FnZUpzb25bJ2Nkay1idWlsZCddLmNsb3VkZm9ybWF0aW9uO1xuICAgICAgaWYgKHR5cGVvZiBzY29wZXMgPT09ICdzdHJpbmcnKSB7IHNjb3BlcyA9IFtzY29wZXNdOyB9XG4gICAgICBpZiAoc2NvcGVzLmluZGV4T2YobmFtZXNwYWNlKSAhPT0gLTEpIHtcbiAgICAgICAgLy8gVjItc3R5bGUgbW9kdWxlIGlzIGFscmVhZHkgbW9kZWxlZCBpbiB0aGUgcm9vdCBwYWNrYWdlLCBub3RoaW5nIHRvIGJlIGRvbmUhXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIGlmIChhd2FpdCBmcy5wYXRoRXhpc3RzKHBhdGguam9pbihyb290LCBgJHttb2R1bGVGYW1pbHl9LSR7bW9kdWxlQmFzZU5hbWV9YC50b0xvY2FsZUxvd2VyQ2FzZSgpKSkpIHtcbiAgICAgICAgLy8gVjItc3R5bGUgcGFja2FnZSBhbHJlYWR5IGhhcyBpdCdzIG93biBwYWNrYWdlIChsZWdhY3kgYmVoYXZpb3IpLCBub3RoaW5nIHRvIGJlIGRvbmUhXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVjItc3R5bGUgcGFja2FnZSBuZWVkcyB0byBiZSBhZGRlZCB0byBpdCdzIFwiVjFcIiBwYWNrYWdlLi4uIEdldCBkb3duIHRvIGJ1c2luZXNzIVxuICAgICAgICBjb25zb2xlLmVycm9yKGBBZGRpbmcgJHtuYW1lc3BhY2V9IHRvICR7cGFja2FnZU5hbWV9YCk7XG4gICAgICAgIHNjb3Blcy5wdXNoKG5hbWVzcGFjZSk7XG4gICAgICAgIHBhY2thZ2VKc29uWydjZGstYnVpbGQnXS5jbG91ZGZvcm1hdGlvbiA9IHNjb3BlcztcbiAgICAgICAgYXdhaXQgZnMud3JpdGVKc29uKHBhY2thZ2VKc29uUGF0aCwgcGFja2FnZUpzb24sIHsgZW5jb2Rpbmc6ICd1dGYtOCcsIHNwYWNlczogMiB9KTtcbiAgICAgICAgY29uc3QgaW5kZXhUc1BhdGggPSBwYXRoLmpvaW4ocGFja2FnZVBhdGgsICdsaWInLCAnaW5kZXgudHMnKTtcbiAgICAgICAgY29uc3QgaW5kZXhUcyA9IFtcbiAgICAgICAgICAoYXdhaXQgZnMucmVhZEZpbGUoaW5kZXhUc1BhdGgsIHsgZW5jb2Rpbmc6ICd1dGY4JyB9KSkudHJpbVJpZ2h0KCksXG4gICAgICAgICAgYC8vICR7bmFtZXNwYWNlfSBDbG91ZEZvcm1hdGlvbiBSZXNvdXJjZXM6YCxcbiAgICAgICAgICBgZXhwb3J0ICogZnJvbSAnLi8ke2xvd2Nhc2VNb2R1bGVOYW1lfS5nZW5lcmF0ZWQnO2BcbiAgICAgICAgXS5qb2luKCdcXG4nKTtcbiAgICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKGluZGV4VHNQYXRoLCBpbmRleFRzLCB7IGVuY29kaW5nOiAndXRmOCcgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRvdG5ldCBuYW1lc1xuICAgIGNvbnN0IGRvdG5ldFBhY2thZ2UgPSBgQW1hem9uLkNESy4ke21vZHVsZUZhbWlseX0uJHttb2R1bGVCYXNlTmFtZX1gO1xuXG4gICAgLy8gamF2YSBuYW1lc1xuICAgIGNvbnN0IGphdmFHcm91cElkID0gJ3NvZnR3YXJlLmFtYXpvbi5hd3NjZGsnO1xuICAgIGNvbnN0IGphdmFQYWNrYWdlID0gbW9kdWxlRmFtaWx5ID09PSAnQVdTJ1xuICAgICAgPyBgc2VydmljZXMuJHtsb3djYXNlTW9kdWxlTmFtZX1gXG4gICAgICA6IGAke21vZHVsZUZhbWlseS50b0xvY2FsZUxvd2VyQ2FzZSgpfS4ke2xvd2Nhc2VNb2R1bGVOYW1lfWA7XG4gICAgY29uc3QgamF2YUFydGlmYWN0SWQgPSBtb2R1bGVGYW1pbHkgPT09ICdBV1MnXG4gICAgICA/IGxvd2Nhc2VNb2R1bGVOYW1lXG4gICAgICA6IGAke21vZHVsZUZhbWlseS50b0xvY2FsZUxvd2VyQ2FzZSgpfS0ke2xvd2Nhc2VNb2R1bGVOYW1lfWA7XG5cbiAgICAvLyBweXRob24gbmFtZXNcbiAgICBjb25zdCBweXRob25EaXN0U3ViTmFtZSA9IG1vZHVsZUZhbWlseSA9PT0gJ0FXUydcbiAgICAgID8gbG93Y2FzZU1vZHVsZU5hbWVcbiAgICAgIDogYCR7bW9kdWxlRmFtaWx5LnRvTG9jYWxlTG93ZXJDYXNlKCl9LiR7bG93Y2FzZU1vZHVsZU5hbWV9YDtcbiAgICBjb25zdCBweXRob25EaXN0TmFtZSA9IGBhd3MtY2RrLiR7cHl0aG9uRGlzdFN1Yk5hbWV9YDtcbiAgICBjb25zdCBweXRob25Nb2R1bGVOYW1lID0gcHl0aG9uRGlzdE5hbWUucmVwbGFjZSgvLS9nLCBcIl9cIik7XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZShyZWxhdGl2ZVBhdGg6IHN0cmluZywgY29udGVudHM6IHN0cmluZ1tdIHwgc3RyaW5nIHwgb2JqZWN0KSB7XG4gICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguam9pbihwYWNrYWdlUGF0aCwgcmVsYXRpdmVQYXRoKTtcbiAgICAgIGNvbnN0IGRpciA9IHBhdGguZGlybmFtZShmdWxsUGF0aCk7XG4gICAgICBhd2FpdCBmcy5ta2RpcnAoZGlyKTtcblxuICAgICAgbGV0IGRhdGE7XG4gICAgICBpZiAodHlwZW9mIGNvbnRlbnRzID09PSAnc3RyaW5nJykge1xuICAgICAgICBkYXRhID0gY29udGVudHMudHJpbUxlZnQoKTsgLy8gdHJpbSBmaXJzdCBuZXdsaW5lXG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoY29udGVudHMpKSB7XG4gICAgICAgIGRhdGEgPSBjb250ZW50cy5qb2luKCdcXG4nKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbnRlbnRzID09PSAnb2JqZWN0Jykge1xuICAgICAgICBkYXRhID0gSlNPTi5zdHJpbmdpZnkoY29udGVudHMsIHVuZGVmaW5lZCwgMik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHlwZSBvZiBjb250ZW50czogJyArIGNvbnRlbnRzKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKGZ1bGxQYXRoLCBkYXRhICsgJ1xcbicpO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKGBnZW5lcmF0aW5nIG1vZHVsZSBmb3IgJHtwYWNrYWdlTmFtZX0uLi5gKTtcblxuICAgIGF3YWl0IHdyaXRlKCdwYWNrYWdlLmpzb24nLCB7XG4gICAgICBuYW1lOiBwYWNrYWdlTmFtZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBkZXNjcmlwdGlvbjogYFRoZSBDREsgQ29uc3RydWN0IExpYnJhcnkgZm9yICR7bmFtZXNwYWNlfWAsXG4gICAgICBtYWluOiAnbGliL2luZGV4LmpzJyxcbiAgICAgIHR5cGVzOiAnbGliL2luZGV4LmQudHMnLFxuICAgICAganNpaToge1xuICAgICAgICBvdXRkaXI6ICdkaXN0JyxcbiAgICAgICAgdGFyZ2V0czoge1xuICAgICAgICAgIGRvdG5ldDoge1xuICAgICAgICAgICAgbmFtZXNwYWNlOiBkb3RuZXRQYWNrYWdlLFxuICAgICAgICAgICAgcGFja2FnZUlkOiBkb3RuZXRQYWNrYWdlLFxuICAgICAgICAgICAgc2lnbkFzc2VtYmx5OiB0cnVlLFxuICAgICAgICAgICAgYXNzZW1ibHlPcmlnaW5hdG9yS2V5RmlsZTogXCIuLi8uLi9rZXkuc25rXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIGphdmE6IHtcbiAgICAgICAgICAgIHBhY2thZ2U6IGAke2phdmFHcm91cElkfS4ke2phdmFQYWNrYWdlfWAsXG4gICAgICAgICAgICBtYXZlbjoge1xuICAgICAgICAgICAgICBncm91cElkOiBqYXZhR3JvdXBJZCxcbiAgICAgICAgICAgICAgYXJ0aWZhY3RJZDogamF2YUFydGlmYWN0SWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHB5dGhvbjoge1xuICAgICAgICAgICAgZGlzdE5hbWU6IHB5dGhvbkRpc3ROYW1lLFxuICAgICAgICAgICAgbW9kdWxlOiBweXRob25Nb2R1bGVOYW1lXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmVwb3NpdG9yeToge1xuICAgICAgICB0eXBlOiBcImdpdFwiLFxuICAgICAgICB1cmw6IFwiaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrLmdpdFwiXG4gICAgICB9LFxuICAgICAgaG9tZXBhZ2U6IFwiaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrXCIsXG4gICAgICBzY3JpcHRzOiB7XG4gICAgICAgIGJ1aWxkOiBcImNkay1idWlsZFwiLFxuICAgICAgICBpbnRlZzogXCJjZGstaW50ZWdcIixcbiAgICAgICAgbGludDogXCJjZGstbGludFwiLFxuICAgICAgICBwYWNrYWdlOiBcImNkay1wYWNrYWdlXCIsXG4gICAgICAgIGF3c2xpbnQ6IFwiY2RrLWF3c2xpbnRcIixcbiAgICAgICAgcGtnbGludDogXCJwa2dsaW50IC1mXCIsXG4gICAgICAgIHRlc3Q6IFwiY2RrLXRlc3RcIixcbiAgICAgICAgd2F0Y2g6IFwiY2RrLXdhdGNoXCIsXG4gICAgICAgIGNmbjJ0czogXCJjZm4ydHNcIlxuICAgICAgfSxcbiAgICAgICdjZGstYnVpbGQnOiB7XG4gICAgICAgIGNsb3VkZm9ybWF0aW9uOiBuYW1lc3BhY2VcbiAgICAgIH0sXG4gICAgICBrZXl3b3JkczogW1xuICAgICAgICBcImF3c1wiLFxuICAgICAgICBcImNka1wiLFxuICAgICAgICBcImNvbnN0cnVjdHNcIixcbiAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICBtb2R1bGVOYW1lXG4gICAgICBdLFxuICAgICAgYXV0aG9yOiB7XG4gICAgICAgIG5hbWU6IFwiQW1hem9uIFdlYiBTZXJ2aWNlc1wiLFxuICAgICAgICB1cmw6IFwiaHR0cHM6Ly9hd3MuYW1hem9uLmNvbVwiLFxuICAgICAgICBvcmdhbml6YXRpb246IHRydWVcbiAgICAgIH0sXG4gICAgICBsaWNlbnNlOiBcIkFwYWNoZS0yLjBcIixcbiAgICAgIGRldkRlcGVuZGVuY2llczoge1xuICAgICAgICBcIkBhd3MtY2RrL2Fzc2VydFwiOiBgXiR7dmVyc2lvbn1gLFxuICAgICAgICBcImNkay1idWlsZC10b29sc1wiOiBgXiR7dmVyc2lvbn1gLFxuICAgICAgICBcImNmbjJ0c1wiOiBgXiR7dmVyc2lvbn1gLFxuICAgICAgICBcInBrZ2xpbnRcIjogYF4ke3ZlcnNpb259YCxcbiAgICAgIH0sXG4gICAgICBkZXBlbmRlbmNpZXM6IHtcbiAgICAgICAgXCJAYXdzLWNkay9jb3JlXCI6IGBeJHt2ZXJzaW9ufWAsXG4gICAgICB9LFxuICAgICAgcGVlckRlcGVuZGVuY2llczoge1xuICAgICAgICBcIkBhd3MtY2RrL2NvcmVcIjogYF4ke3ZlcnNpb259YCxcbiAgICAgIH0sXG4gICAgICBlbmdpbmVzOiB7XG4gICAgICAgIG5vZGU6ICc+PSAxMC4zLjAnXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBhd2FpdCB3cml0ZSgnLmdpdGlnbm9yZScsIFtcbiAgICAgICcqLmQudHMnLFxuICAgICAgJyouZ2VuZXJhdGVkLnRzJyxcbiAgICAgICcqLmpzJyxcbiAgICAgICcqLmpzLm1hcCcsXG4gICAgICAnKi5zbmsnLFxuICAgICAgJy5qc2lpJyxcbiAgICAgICcuTEFTVF9CVUlMRCcsXG4gICAgICAnLkxBU1RfUEFDS0FHRScsXG4gICAgICAnLm55Y3JjJyxcbiAgICAgICcubnljX291dHB1dCcsXG4gICAgICAnY292ZXJhZ2UnLFxuICAgICAgJ2Rpc3QnLFxuICAgICAgJ3RzY29uZmlnLmpzb24nLFxuICAgICAgJ3RzbGludC5qc29uJyxcbiAgICBdKTtcblxuICAgIGF3YWl0IHdyaXRlKCcubnBtaWdub3JlJywgW1xuICAgICAgJyMgVGhlIGJhc2ljcycsXG4gICAgICAnKi50cycsXG4gICAgICAnKi50Z3onLFxuICAgICAgJyouc25rJyxcbiAgICAgICchKi5kLnRzJyxcbiAgICAgICchKi5qcycsXG4gICAgICAnJyxcbiAgICAgICcjIENvdmVyYWdlJyxcbiAgICAgICdjb3ZlcmFnZScsXG4gICAgICAnLm55Y19vdXRwdXQnLFxuICAgICAgJy5ueWNyYycsXG4gICAgICAnJyxcbiAgICAgICcjIEJ1aWxkIGdlYXInLFxuICAgICAgJ2Rpc3QnLFxuICAgICAgJy5MQVNUX0JVSUxEJyxcbiAgICAgICcuTEFTVF9QQUNLQUdFJyxcbiAgICAgICcuanNpaScsXG4gICAgXSk7XG5cbiAgICBhd2FpdCB3cml0ZSgnbGliL2luZGV4LnRzJywgW1xuICAgICAgYC8vICR7bmFtZXNwYWNlfSBDbG91ZEZvcm1hdGlvbiBSZXNvdXJjZXM6YCxcbiAgICAgIGBleHBvcnQgKiBmcm9tICcuLyR7bG93Y2FzZU1vZHVsZU5hbWV9LmdlbmVyYXRlZCc7YFxuICAgIF0pO1xuXG4gICAgYXdhaXQgd3JpdGUoYHRlc3QvdGVzdC4ke2xvd2Nhc2VNb2R1bGVOYW1lfS50c2AsIFtcbiAgICAgIFwiaW1wb3J0IHsgVGVzdCwgdGVzdENhc2UgfSBmcm9tICdub2RldW5pdCc7XCIsXG4gICAgICBcImltcG9ydCB7fSBmcm9tICcuLi9saWInO1wiLFxuICAgICAgXCJcIixcbiAgICAgIFwiZXhwb3J0ID0gdGVzdENhc2Uoe1wiLFxuICAgICAgXCIgICAgbm90VGVzdGVkKHRlc3Q6IFRlc3QpIHtcIixcbiAgICAgIFwiICAgICAgICB0ZXN0Lm9rKHRydWUsICdObyB0ZXN0cyBhcmUgc3BlY2lmaWVkIGZvciB0aGlzIHBhY2thZ2UuJyk7XCIsXG4gICAgICBcIiAgICAgICAgdGVzdC5kb25lKCk7XCIsXG4gICAgICBcIiAgICB9XCIsXG4gICAgICBcIn0pO1wiLFxuICAgIF0pO1xuXG4gICAgYXdhaXQgd3JpdGUoJ1JFQURNRS5tZCcsIFtcbiAgICAgIGAjIyAke25hbWVzcGFjZX0gQ29uc3RydWN0IExpYnJhcnlgLFxuICAgICAgJycsXG4gICAgICAnVGhpcyBtb2R1bGUgaXMgcGFydCBvZiB0aGUgW0FXUyBDbG91ZCBEZXZlbG9wbWVudCBLaXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkaykgcHJvamVjdC4nLFxuICAgICAgJycsXG4gICAgICAnYGBgdHMnLFxuICAgICAgYGltcG9ydCAke2xvd2Nhc2VNb2R1bGVOYW1lfSA9IHJlcXVpcmUoJyR7cGFja2FnZU5hbWV9Jyk7YCxcbiAgICAgICdgYGAnLFxuICAgIF0pO1xuXG4gICAgY29uc3QgdGVtcGxhdGVEaXIgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAndGVtcGxhdGUnKTtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgYXdhaXQgZnMucmVhZGRpcih0ZW1wbGF0ZURpcikpIHtcbiAgICAgIGF3YWl0IGZzLmNvcHkocGF0aC5qb2luKHRlbXBsYXRlRGlyLCBmaWxlKSwgcGF0aC5qb2luKHBhY2thZ2VQYXRoLCBmaWxlKSk7XG4gICAgfVxuXG4gICAgLy8gYm9vdHN0cmFwIGFuZCBidWlsZCB0aGUgcGFja2FnZSBhbmQgYWxsIGRlcHMgdG8gZW5zdXJlIGludGVncml0eVxuICAgIGNvbnN0IGxlcm5hID0gcGF0aC5qb2luKHBhdGguZGlybmFtZShyZXF1aXJlLnJlc29sdmUoJ2xlcm5hL3BhY2thZ2UuanNvbicpKSwgJ2NsaS5qcycpO1xuICAgIGF3YWl0IGV4ZWMoYCR7bGVybmF9IGJvb3RzdHJhcGApO1xuICAgIGF3YWl0IGV4ZWMoYCR7bGVybmF9IHJ1biAtLWluY2x1ZGUtZGVwZW5kZW5jaWVzIC0tcHJvZ3Jlc3MgcGtnbGludCAtLXNjb3BlICR7cGFja2FnZU5hbWV9YCk7XG4gICAgYXdhaXQgZXhlYyhgJHtsZXJuYX0gcnVuIC0taW5jbHVkZS1kZXBlbmRlbmNpZXMgLS1wcm9ncmVzcyBidWlsZCAtLXNjb3BlICR7cGFja2FnZU5hbWV9YCk7XG4gIH1cbn1cblxubWFpbigpLmNhdGNoKGUgPT4ge1xuICBjb25zb2xlLmVycm9yKGUpO1xuICBwcm9jZXNzLmV4aXQoMSk7XG59KTtcblxuYXN5bmMgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBzdHJpbmcpIHtcbiAgY29uc3QgY2hpbGQgPSBjaGlsZF9wcm9jZXNzLnNwYXduKGNvbW1hbmQsIFtdLCB7XG4gICAgc3RkaW86IFsgJ2lnbm9yZScsICdpbmhlcml0JywgJ2luaGVyaXQnIF0sXG4gICAgc2hlbGw6IHRydWVcbiAgfSk7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgob2ssIGZhaWwpID0+IHtcbiAgICBjaGlsZC5vbmNlKCdlcnJvcicsIGUgPT4gZmFpbChlKSk7XG4gICAgY2hpbGQub25jZSgnZXhpdCcsIGNvZGUgPT4ge1xuICAgICAgaWYgKGNvZGUgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG9rKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFpbChuZXcgRXJyb3IoJ25vbi16ZXJvIGV4aXQgY29kZTogJyArIGNvZGUpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1pc3NpbmctbGlicmFyaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY3JlYXRlLW1pc3NpbmctbGlicmFyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUE7OztHQUdHOztBQUVILCtDQUFnRDtBQUNoRCwrQkFBZ0M7QUFDaEMsNkJBQThCO0FBQzlCLGtDQUFtQztBQUVuQyxvQkFBb0I7QUFDcEIsNEJBQTRCO0FBQzVCLDJDQUEyQztBQUUzQyxLQUFLLFVBQVUsSUFBSTtJQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsRUFBRTtRQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxJQUFJLDREQUE0RCxDQUFDLENBQUM7S0FDeEg7SUFFRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFFbkQsNkNBQTZDO0lBQzdDLEtBQUssTUFBTSxTQUFTLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFO1FBQzVDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUssaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTlHLE1BQU0sVUFBVSxHQUFHLEdBQUcsWUFBWSxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNoRyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUVoRCxNQUFNLGlCQUFpQixHQUFH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QUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDaEY7QUFDSCxDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBRUgsS0FBSyxVQUFVLElBQUksQ0FBQyxPQUFlO0lBQ2pDLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRTtRQUM3QyxLQUFLLEVBQUUsQ0FBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBRTtRQUN6QyxLQUFLLEVBQUUsSUFBSTtLQUNaLENBQUMsQ0FBQztJQUNILE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDOUIsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtZQUN4QixJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQ2QsT0FBTyxFQUFFLEVBQUUsQ0FBQzthQUNiO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDdkQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuLyoqXG4gKiBhdXRvbWF0aWNhbGx5IGNyZWF0ZXMgYSBtb2R1bGUgZm9yIGFueSBDbG91ZEZvcm1hdGlvbiBuYW1lc3BhY2VzIHRoYXQgZG8gbm90XG4gKiBoYXZlIGFuIEFXUyBjb25zdHJ1Y3QgbGlicmFyeS5cbiAqL1xuXG5pbXBvcnQgY2hpbGRfcHJvY2VzcyA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKTtcbmltcG9ydCBmcyA9IHJlcXVpcmUoJ2ZzLWV4dHJhJyk7XG5pbXBvcnQgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmltcG9ydCBjZm5zcGVjID0gcmVxdWlyZSgnLi4vbGliJyk7XG5cbi8vIGRvbid0IGJlIGEgcHJ1ZGU6XG4vLyB0c2xpbnQ6ZGlzYWJsZTpuby1jb25zb2xlXG4vLyB0c2xpbnQ6ZGlzYWJsZTpvYmplY3QtbGl0ZXJhbC1rZXktcXVvdGVzXG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gIGNvbnN0IHJvb3QgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nKTtcbiAgaWYgKHBhdGguYmFzZW5hbWUocm9vdCkgIT09ICdAYXdzLWNkaycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNvbWV0aGluZyB3ZW50IHdyb25nLiBXZSBleHBlY3RlZCAke3Jvb3R9IHRvIGJlIHRoZSBcInBhY2thZ2VzL0Bhd3MtY2RrXCIgZGlyZWN0b3J5LiBEaWQgeW91IG1vdmUgbWU/YCk7XG4gIH1cblxuICBjb25zdCB2ZXJzaW9uID0gcmVxdWlyZSgnLi4vcGFja2FnZS5qc29uJykudmVyc2lvbjtcblxuICAvLyBpdGVyYXRlIG92ZXIgYWxsIGNsb3VkZm9ybWF0aW9uIG5hbWVzcGFjZXNcbiAgZm9yIChjb25zdCBuYW1lc3BhY2Ugb2YgY2Zuc3BlYy5uYW1lc3BhY2VzKCkpIHtcbiAgICBjb25zdCBbbW9kdWxlRmFtaWx5LCBtb2R1bGVCYXNlTmFtZV0gPSAobmFtZXNwYWNlID09PSAnQVdTOjpTZXJ2ZXJsZXNzJyA/ICdBV1M6OlNBTScgOiBuYW1lc3BhY2UpLnNwbGl0KCc6OicpO1xuXG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IGAke21vZHVsZUZhbWlseX0tJHttb2R1bGVCYXNlTmFtZS5yZXBsYWNlKC9WXFxkKyQvLCAnJyl9YC50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IHBhY2thZ2VQYXRoID0gcGF0aC5qb2luKHJvb3QsIG1vZHVsZU5hbWUpO1xuXG4gICAgY29uc3QgbG93Y2FzZU1vZHVsZU5hbWUgPSBtb2R1bGVCYXNlTmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gYEBhd3MtY2RrLyR7bW9kdWxlTmFtZX1gO1xuXG4gICAgLy8gd2UgYWxyZWFkeSBoYXZlIGEgbW9kdWxlIGZvciB0aGlzIG5hbWVzYXBjZSwgbW92ZSBvbi5cbiAgICBpZiAoYXdhaXQgZnMucGF0aEV4aXN0cyhwYWNrYWdlUGF0aCkpIHtcbiAgICAgIGNvbnN0IHBhY2thZ2VKc29uUGF0aCA9IHBhdGguam9pbihwYWNrYWdlUGF0aCwgJ3BhY2thZ2UuanNvbicpO1xuICAgICAgY29uc3QgcGFja2FnZUpzb24gPSByZXF1aXJlKHBhY2thZ2VKc29uUGF0aCk7XG4gICAgICBsZXQgc2NvcGVzOiBzdHJpbmcgfCBzdHJpbmdbXSA9IHBhY2thZ2VKc29uWydjZGstYnVpbGQnXS5jbG91ZGZvcm1hdGlvbjtcbiAgICAgIGlmICh0eXBlb2Ygc2NvcGVzID09PSAnc3RyaW5nJykgeyBzY29wZXMgPSBbc2NvcGVzXTsgfVxuICAgICAgaWYgKHNjb3Blcy5pbmRleE9mKG5hbWVzcGFjZSkgIT09IC0xKSB7XG4gICAgICAgIC8vIFYyLXN0eWxlIG1vZHVsZSBpcyBhbHJlYWR5IG1vZGVsZWQgaW4gdGhlIHJvb3QgcGFja2FnZSwgbm90aGluZyB0byBiZSBkb25lIVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSBpZiAoYXdhaXQgZnMucGF0aEV4aXN0cyhwYXRoLmpvaW4ocm9vdCwgYCR7bW9kdWxlRmFtaWx5fS0ke21vZHVsZUJhc2VOYW1lfWAudG9Mb2NhbGVMb3dlckNhc2UoKSkpKSB7XG4gICAgICAgIC8vIFYyLXN0eWxlIHBhY2thZ2UgYWxyZWFkeSBoYXMgaXQncyBvd24gcGFja2FnZSAobGVnYWN5IGJlaGF2aW9yKSwgbm90aGluZyB0byBiZSBkb25lIVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFYyLXN0eWxlIHBhY2thZ2UgbmVlZHMgdG8gYmUgYWRkZWQgdG8gaXQncyBcIlYxXCIgcGFja2FnZS4uLiBHZXQgZG93biB0byBidXNpbmVzcyFcbiAgICAgICAgY29uc29sZS5lcnJvcihgQWRkaW5nICR7bmFtZXNwYWNlfSB0byAke3BhY2thZ2VOYW1lfWApO1xuICAgICAgICBzY29wZXMucHVzaChuYW1lc3BhY2UpO1xuICAgICAgICBwYWNrYWdlSnNvblsnY2RrLWJ1aWxkJ10uY2xvdWRmb3JtYXRpb24gPSBzY29wZXM7XG4gICAgICAgIGF3YWl0IGZzLndyaXRlSnNvbihwYWNrYWdlSnNvblBhdGgsIHBhY2thZ2VKc29uLCB7IGVuY29kaW5nOiAndXRmLTgnLCBzcGFjZXM6IDIgfSk7XG4gICAgICAgIGNvbnN0IGluZGV4VHNQYXRoID0gcGF0aC5qb2luKHBhY2thZ2VQYXRoLCAnbGliJywgJ2luZGV4LnRzJyk7XG4gICAgICAgIGNvbnN0IGluZGV4VHMgPSBbXG4gICAgICAgICAgKGF3YWl0IGZzLnJlYWRGaWxlKGluZGV4VHNQYXRoLCB7IGVuY29kaW5nOiAndXRmOCcgfSkpLnRyaW1SaWdodCgpLFxuICAgICAgICAgIGAvLyAke25hbWVzcGFjZX0gQ2xvdWRGb3JtYXRpb24gUmVzb3VyY2VzOmAsXG4gICAgICAgICAgYGV4cG9ydCAqIGZyb20gJy4vJHtsb3djYXNlTW9kdWxlTmFtZX0uZ2VuZXJhdGVkJztgXG4gICAgICAgIF0uam9pbignXFxuJyk7XG4gICAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShpbmRleFRzUGF0aCwgaW5kZXhUcywgeyBlbmNvZGluZzogJ3V0ZjgnIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkb3RuZXQgbmFtZXNcbiAgICBjb25zdCBkb3RuZXRQYWNrYWdlID0gYEFtYXpvbi5DREsuJHttb2R1bGVGYW1pbHl9LiR7bW9kdWxlQmFzZU5hbWV9YDtcblxuICAgIC8vIGphdmEgbmFtZXNcbiAgICBjb25zdCBqYXZhR3JvdXBJZCA9ICdzb2Z0d2FyZS5hbWF6b24uYXdzY2RrJztcbiAgICBjb25zdCBqYXZhUGFja2FnZSA9IG1vZHVsZUZhbWlseSA9PT0gJ0FXUydcbiAgICAgID8gYHNlcnZpY2VzLiR7bG93Y2FzZU1vZHVsZU5hbWV9YFxuICAgICAgOiBgJHttb2R1bGVGYW1pbHkudG9Mb2NhbGVMb3dlckNhc2UoKX0uJHtsb3djYXNlTW9kdWxlTmFtZX1gO1xuICAgIGNvbnN0IGphdmFBcnRpZmFjdElkID0gbW9kdWxlRmFtaWx5ID09PSAnQVdTJ1xuICAgICAgPyBsb3djYXNlTW9kdWxlTmFtZVxuICAgICAgOiBgJHttb2R1bGVGYW1pbHkudG9Mb2NhbGVMb3dlckNhc2UoKX0tJHtsb3djYXNlTW9kdWxlTmFtZX1gO1xuXG4gICAgLy8gcHl0aG9uIG5hbWVzXG4gICAgY29uc3QgcHl0aG9uRGlzdFN1Yk5hbWUgPSBtb2R1bGVGYW1pbHkgPT09ICdBV1MnXG4gICAgICA/IGxvd2Nhc2VNb2R1bGVOYW1lXG4gICAgICA6IGAke21vZHVsZUZhbWlseS50b0xvY2FsZUxvd2VyQ2FzZSgpfS4ke2xvd2Nhc2VNb2R1bGVOYW1lfWA7XG4gICAgY29uc3QgcHl0aG9uRGlzdE5hbWUgPSBgYXdzLWNkay4ke3B5dGhvbkRpc3RTdWJOYW1lfWA7XG4gICAgY29uc3QgcHl0aG9uTW9kdWxlTmFtZSA9IHB5dGhvbkRpc3ROYW1lLnJlcGxhY2UoLy0vZywgXCJfXCIpO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGUocmVsYXRpdmVQYXRoOiBzdHJpbmcsIGNvbnRlbnRzOiBzdHJpbmdbXSB8IHN0cmluZyB8IG9iamVjdCkge1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLmpvaW4ocGFja2FnZVBhdGgsIHJlbGF0aXZlUGF0aCk7XG4gICAgICBjb25zdCBkaXIgPSBwYXRoLmRpcm5hbWUoZnVsbFBhdGgpO1xuICAgICAgYXdhaXQgZnMubWtkaXJwKGRpcik7XG5cbiAgICAgIGxldCBkYXRhO1xuICAgICAgaWYgKHR5cGVvZiBjb250ZW50cyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZGF0YSA9IGNvbnRlbnRzLnRyaW1MZWZ0KCk7IC8vIHRyaW0gZmlyc3QgbmV3bGluZVxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNvbnRlbnRzKSkge1xuICAgICAgICBkYXRhID0gY29udGVudHMuam9pbignXFxuJyk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb250ZW50cyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgZGF0YSA9IEpTT04uc3RyaW5naWZ5KGNvbnRlbnRzLCB1bmRlZmluZWQsIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHR5cGUgb2YgY29udGVudHM6ICcgKyBjb250ZW50cyk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShmdWxsUGF0aCwgZGF0YSArICdcXG4nKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhgZ2VuZXJhdGluZyBtb2R1bGUgZm9yICR7cGFja2FnZU5hbWV9Li4uYCk7XG5cbiAgICBhd2FpdCB3cml0ZSgncGFja2FnZS5qc29uJywge1xuICAgICAgbmFtZTogcGFja2FnZU5hbWUsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgZGVzY3JpcHRpb246IGBUaGUgQ0RLIENvbnN0cnVjdCBMaWJyYXJ5IGZvciAke25hbWVzcGFjZX1gLFxuICAgICAgbWFpbjogJ2xpYi9pbmRleC5qcycsXG4gICAgICB0eXBlczogJ2xpYi9pbmRleC5kLnRzJyxcbiAgICAgIGpzaWk6IHtcbiAgICAgICAgb3V0ZGlyOiAnZGlzdCcsXG4gICAgICAgIHRhcmdldHM6IHtcbiAgICAgICAgICBkb3RuZXQ6IHtcbiAgICAgICAgICAgIG5hbWVzcGFjZTogZG90bmV0UGFja2FnZSxcbiAgICAgICAgICAgIHBhY2thZ2VJZDogZG90bmV0UGFja2FnZSxcbiAgICAgICAgICAgIHNpZ25Bc3NlbWJseTogdHJ1ZSxcbiAgICAgICAgICAgIGFzc2VtYmx5T3JpZ2luYXRvcktleUZpbGU6IFwiLi4vLi4va2V5LnNua1wiLFxuICAgICAgICAgICAgaWNvblVybDogXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYXdzL2F3cy1jZGsvbWFzdGVyL2xvZ28vZGVmYXVsdC0yNTYtZGFyay5wbmdcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgamF2YToge1xuICAgICAgICAgICAgcGFja2FnZTogYCR7amF2YUdyb3VwSWR9LiR7amF2YVBhY2thZ2V9YCxcbiAgICAgICAgICAgIG1hdmVuOiB7XG4gICAgICAgICAgICAgIGdyb3VwSWQ6IGphdmFHcm91cElkLFxuICAgICAgICAgICAgICBhcnRpZmFjdElkOiBqYXZhQXJ0aWZhY3RJZFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcHl0aG9uOiB7XG4gICAgICAgICAgICBkaXN0TmFtZTogcHl0aG9uRGlzdE5hbWUsXG4gICAgICAgICAgICBtb2R1bGU6IHB5dGhvbk1vZHVsZU5hbWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByZXBvc2l0b3J5OiB7XG4gICAgICAgIHR5cGU6IFwiZ2l0XCIsXG4gICAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsuZ2l0XCIsXG4gICAgICAgIGRpcmVjdG9yeTogYHBhY2thZ2VzL0Bhd3MtY2RrLyR7cGFja2FnZU5hbWV9YCxcbiAgICAgIH0sXG4gICAgICBob21lcGFnZTogXCJodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGtcIixcbiAgICAgIHNjcmlwdHM6IHtcbiAgICAgICAgYnVpbGQ6IFwiY2RrLWJ1aWxkXCIsXG4gICAgICAgIHdhdGNoOiBcImNkay13YXRjaFwiLFxuICAgICAgICBsaW50OiBcImNkay1saW50XCIsXG4gICAgICAgIHRlc3Q6IFwiY2RrLXRlc3RcIixcbiAgICAgICAgaW50ZWc6IFwiY2RrLWludGVnXCIsXG4gICAgICAgIHBrZ2xpbnQ6IFwicGtnbGludCAtZlwiLFxuICAgICAgICBwYWNrYWdlOiBcImNkay1wYWNrYWdlXCIsXG4gICAgICAgIGF3c2xpbnQ6IFwiY2RrLWF3c2xpbnRcIixcbiAgICAgICAgY2ZuMnRzOiBcImNmbjJ0c1wiLFxuICAgICAgICAnYnVpbGQrdGVzdCtwYWNrYWdlJzogXCJucG0gcnVuIGJ1aWxkK3Rlc3QgJiYgbnBtIHJ1biBwYWNrYWdlXCIsXG4gICAgICAgICdidWlsZCt0ZXN0JzogXCJucG0gcnVuIGJ1aWxkICYmIG5wbSB0ZXN0XCIsXG4gICAgICAgIGNvbXBhdDogXCJjZGstY29tcGF0XCJcbiAgICAgIH0sXG4gICAgICAnY2RrLWJ1aWxkJzoge1xuICAgICAgICBjbG91ZGZvcm1hdGlvbjogbmFtZXNwYWNlXG4gICAgICB9LFxuICAgICAga2V5d29yZHM6IFtcbiAgICAgICAgXCJhd3NcIixcbiAgICAgICAgXCJjZGtcIixcbiAgICAgICAgXCJjb25zdHJ1Y3RzXCIsXG4gICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgbW9kdWxlTmFtZVxuICAgICAgXSxcbiAgICAgIGF1dGhvcjoge1xuICAgICAgICBuYW1lOiBcIkFtYXpvbiBXZWIgU2VydmljZXNcIixcbiAgICAgICAgdXJsOiBcImh0dHBzOi8vYXdzLmFtYXpvbi5jb21cIixcbiAgICAgICAgb3JnYW5pemF0aW9uOiB0cnVlXG4gICAgICB9LFxuICAgICAgamVzdDoge1xuICAgICAgICBtb2R1bGVGaWxlRXh0ZW5zaW9uczogW1xuICAgICAgICAgIFwianNcIlxuICAgICAgICBdLFxuICAgICAgICBjb3ZlcmFnZVRocmVzaG9sZDoge1xuICAgICAgICAgIGdsb2JhbDoge1xuICAgICAgICAgICAgYnJhbmNoZXM6IDYwLFxuICAgICAgICAgICAgc3RhdGVtZW50czogODBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBsaWNlbnNlOiBcIkFwYWNoZS0yLjBcIixcbiAgICAgIGRldkRlcGVuZGVuY2llczoge1xuICAgICAgICBcIkBhd3MtY2RrL2Fzc2VydFwiOiB2ZXJzaW9uLFxuICAgICAgICBcImNkay1idWlsZC10b29sc1wiOiB2ZXJzaW9uLFxuICAgICAgICBcImNmbjJ0c1wiOiB2ZXJzaW9uLFxuICAgICAgICBcInBrZ2xpbnRcIjogdmVyc2lvbixcbiAgICAgIH0sXG4gICAgICBkZXBlbmRlbmNpZXM6IHtcbiAgICAgICAgXCJAYXdzLWNkay9jb3JlXCI6IHZlcnNpb24sXG4gICAgICB9LFxuICAgICAgcGVlckRlcGVuZGVuY2llczoge1xuICAgICAgICBcIkBhd3MtY2RrL2NvcmVcIjogdmVyc2lvbixcbiAgICAgIH0sXG4gICAgICBlbmdpbmVzOiB7XG4gICAgICAgIG5vZGU6ICc+PSAxMC4zLjAnXG4gICAgICB9LFxuICAgICAgc3RhYmlsaXR5OiBcImV4cGVyaW1lbnRhbFwiXG4gICAgfSk7XG5cbiAgICBhd2FpdCB3cml0ZSgnLmdpdGlnbm9yZScsIFtcbiAgICAgICcqLmpzJyxcbiAgICAgICcqLmpzLm1hcCcsXG4gICAgICAnKi5kLnRzJyxcbiAgICAgICd0c2NvbmZpZy5qc29uJyxcbiAgICAgICd0c2xpbnQuanNvbicsXG4gICAgICAnbm9kZV9tb2R1bGVzJyxcbiAgICAgICcqLmdlbmVyYXRlZC50cycsXG4gICAgICAnZGlzdCcsXG4gICAgICAnLmpzaWknLFxuICAgICAgJycsXG4gICAgICAnLkxBU1RfQlVJTEQnLFxuICAgICAgJy5ueWNfb3V0cHV0JyxcbiAgICAgICdjb3ZlcmFnZScsXG4gICAgICAnLm55Y3JjJyxcbiAgICAgICcuTEFTVF9QQUNLQUdFJyxcbiAgICAgICcqLnNuaycsXG4gICAgXSk7XG5cbiAgICBhd2FpdCB3cml0ZSgnLm5wbWlnbm9yZScsIFtcbiAgICAgICcjIERvblxcJ3QgaW5jbHVkZSBvcmlnaW5hbCAudHMgZmlsZXMgd2hlbiBkb2luZyBgbnBtIHBhY2tgJyxcbiAgICAgICcqLnRzJyxcbiAgICAgICchKi5kLnRzJyxcbiAgICAgICdjb3ZlcmFnZScsXG4gICAgICAnLm55Y19vdXRwdXQnLFxuICAgICAgJyoudGd6JyxcbiAgICAgICcnLFxuICAgICAgJ2Rpc3QnLFxuICAgICAgJy5MQVNUX1BBQ0tBR0UnLFxuICAgICAgJy5MQVNUX0JVSUxEJyxcbiAgICAgICchKi5qcycsXG4gICAgICAnJyxcbiAgICAgICcjIEluY2x1ZGUgLmpzaWknLFxuICAgICAgJyEuanNpaScsXG4gICAgICAnJyxcbiAgICAgICcqLnNuaycsXG4gICAgICAnJyxcbiAgICAgICcqLnRzYnVpbGRpbmZvJyxcbiAgICAgICcnLFxuICAgICAgJ3RzY29uZmlnLmpzb24nLFxuICAgIF0pO1xuXG4gICAgYXdhaXQgd3JpdGUoJ2xpYi9pbmRleC50cycsIFtcbiAgICAgIGAvLyAke25hbWVzcGFjZX0gQ2xvdWRGb3JtYXRpb24gUmVzb3VyY2VzOmAsXG4gICAgICBgZXhwb3J0ICogZnJvbSAnLi8ke2xvd2Nhc2VNb2R1bGVOYW1lfS5nZW5lcmF0ZWQnO2BcbiAgICBdKTtcblxuICAgIGF3YWl0IHdyaXRlKGB0ZXN0LyR7bG93Y2FzZU1vZHVsZU5hbWV9LnRlc3QudHNgLCBbXG4gICAgICBcImltcG9ydCAnQGF3cy1jZGsvYXNzZXJ0L2plc3QnO1wiLFxuICAgICAgXCJpbXBvcnQge30gZnJvbSAnLi4vbGliJztcIixcbiAgICAgIFwiXCIsXG4gICAgICBcInRlc3QoJ05vIHRlc3RzIGFyZSBzcGVjaWZpZWQgZm9yIHRoaXMgcGFja2FnZScsICgpID0+IHtcIixcbiAgICAgIFwiICBleHBlY3QodHJ1ZSkudG9CZSh0cnVlKTtcIixcbiAgICAgIFwifSk7XCIsXG4gICAgXSk7XG5cbiAgICBhd2FpdCB3cml0ZSgnUkVBRE1FLm1kJywgW1xuICAgICAgYCMjICR7bmFtZXNwYWNlfSBDb25zdHJ1Y3QgTGlicmFyeWAsXG4gICAgICAnPCEtLUJFR0lOIFNUQUJJTElUWSBCQU5ORVItLT4nLFxuICAgICAgJycsXG4gICAgICAnLS0tJyxcbiAgICAgICcnLFxuICAgICAgJyFbU3RhYmlsaXR5OiBFeHBlcmltZW50YWxdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2Uvc3RhYmlsaXR5LUV4cGVyaW1lbnRhbC1pbXBvcnRhbnQuc3ZnP3N0eWxlPWZvci10aGUtYmFkZ2UpJyxcbiAgICAgICcnLFxuICAgICAgJz4gKipUaGlzIGlzIGEgX2RldmVsb3BlciBwcmV2aWV3XyAocHVibGljIGJldGEpIG1vZHVsZS4gUmVsZWFzZXMgbWlnaHQgbGFjayBpbXBvcnRhbnQgZmVhdHVyZXMgYW5kIG1pZ2h0IGhhdmUnLFxuICAgICAgJz4gZnV0dXJlIGJyZWFraW5nIGNoYW5nZXMuKionLFxuICAgICAgJz4nLFxuICAgICAgJz4gVGhpcyBBUEkgaXMgc3RpbGwgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50IGFuZCBzdWJqZWN0IHRvIG5vbi1iYWNrd2FyZCcsXG4gICAgICAnPiBjb21wYXRpYmxlIGNoYW5nZXMgb3IgcmVtb3ZhbCBpbiBhbnkgZnV0dXJlIHZlcnNpb24uIFVzZSBvZiB0aGUgQVBJIGlzIG5vdCByZWNvbW1lbmRlZCBpbiBwcm9kdWN0aW9uJyxcbiAgICAgICc+IGVudmlyb25tZW50cy4gRXhwZXJpbWVudGFsIEFQSXMgYXJlIG5vdCBzdWJqZWN0IHRvIHRoZSBTZW1hbnRpYyBWZXJzaW9uaW5nIG1vZGVsLicsXG4gICAgICAnJyxcbiAgICAgICctLS0nLFxuICAgICAgJzwhLS1FTkQgU1RBQklMSVRZIEJBTk5FUi0tPicsXG4gICAgICAnJyxcbiAgICAgICdUaGlzIG1vZHVsZSBpcyBwYXJ0IG9mIHRoZSBbQVdTIENsb3VkIERldmVsb3BtZW50IEtpdF0oaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrKSBwcm9qZWN0LicsXG4gICAgICAnJyxcbiAgICAgICdgYGB0cycsXG4gICAgICBgaW1wb3J0ICR7bG93Y2FzZU1vZHVsZU5hbWV9ID0gcmVxdWlyZSgnJHtwYWNrYWdlTmFtZX0nKTtgLFxuICAgICAgJ2BgYCcsXG4gICAgXSk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZURpciA9IHBhdGguam9pbihfX2Rpcm5hbWUsICd0ZW1wbGF0ZScpO1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBhd2FpdCBmcy5yZWFkZGlyKHRlbXBsYXRlRGlyKSkge1xuICAgICAgYXdhaXQgZnMuY29weShwYXRoLmpvaW4odGVtcGxhdGVEaXIsIGZpbGUpLCBwYXRoLmpvaW4ocGFja2FnZVBhdGgsIGZpbGUpKTtcbiAgICB9XG5cbiAgICAvLyBidWlsZCB0aGUgcGFja2FnZVxuICAgIGNvbnN0IGxlcm5hID0gcGF0aC5qb2luKHBhdGguZGlybmFtZShyZXF1aXJlLnJlc29sdmUoJ2xlcm5hL3BhY2thZ2UuanNvbicpKSwgJ2NsaS5qcycpO1xuICAgIGF3YWl0IGV4ZWMoYCR7bGVybmF9IHJ1biAtLXByb2dyZXNzIGJ1aWxkIC0tc2NvcGUgJHtwYWNrYWdlTmFtZX1gKTtcblxuICAgIC8vIHVwZGF0ZSBkZWNka1xuICAgIGNvbnN0IGRlY2RrUGtnSnNvblBhdGggPSBwYXRoLmpvaW4ocmVxdWlyZS5yZXNvbHZlKCdkZWNkaycpLCAnLi4nLCAnLi4nLCAncGFja2FnZS5qc29uJyk7XG4gICAgY29uc3QgZGVjZGtQa2cgPSBKU09OLnBhcnNlKGF3YWl0IGZzLnJlYWRGaWxlKGRlY2RrUGtnSnNvblBhdGgsICd1dGY4JykpO1xuICAgIGNvbnN0IHVub3JkZXJlZERlcHMgPSB7XG4gICAgICAuLi5kZWNka1BrZy5kZXBlbmRlbmNpZXMsXG4gICAgICBbcGFja2FnZU5hbWVdOiB2ZXJzaW9uXG4gICAgfTtcbiAgICBkZWNka1BrZy5kZXBlbmRlbmNpZXMgPSB7fTtcbiAgICBPYmplY3Qua2V5cyh1bm9yZGVyZWREZXBzKS5zb3J0KCkuZm9yRWFjaChrID0+IHtcbiAgICAgIGRlY2RrUGtnLmRlcGVuZGVuY2llc1trXSA9IHVub3JkZXJlZERlcHNba107XG4gICAgfSk7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKGRlY2RrUGtnSnNvblBhdGgsIEpTT04uc3RyaW5naWZ5KGRlY2RrUGtnLCBudWxsLCAyKSArICdcXG4nKTtcbiAgfVxufVxuXG5tYWluKCkuY2F0Y2goZSA9PiB7XG4gIGNvbnNvbGUuZXJyb3IoZSk7XG4gIHByb2Nlc3MuZXhpdCgxKTtcbn0pO1xuXG5hc3luYyBmdW5jdGlvbiBleGVjKGNvbW1hbmQ6IHN0cmluZykge1xuICBjb25zdCBjaGlsZCA9IGNoaWxkX3Byb2Nlc3Muc3Bhd24oY29tbWFuZCwgW10sIHtcbiAgICBzdGRpbzogWyAnaWdub3JlJywgJ2luaGVyaXQnLCAnaW5oZXJpdCcgXSxcbiAgICBzaGVsbDogdHJ1ZVxuICB9KTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChvaywgZmFpbCkgPT4ge1xuICAgIGNoaWxkLm9uY2UoJ2Vycm9yJywgZSA9PiBmYWlsKGUpKTtcbiAgICBjaGlsZC5vbmNlKCdleGl0JywgY29kZSA9PiB7XG4gICAgICBpZiAoY29kZSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gb2soKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWlsKG5ldyBFcnJvcignbm9uLXplcm8gZXhpdCBjb2RlOiAnICsgY29kZSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cbiJdfQ==

@@ -109,3 +109,3 @@ import { Documented, PrimitiveType } from './base-types';

export declare function isUpdateType(str: string): str is UpdateType;
export declare function isScalarPropery(prop: Property): prop is ScalarProperty;
export declare function isScalarProperty(prop: Property): prop is ScalarProperty;
export declare function isPrimitiveProperty(prop: Property): prop is PrimitiveProperty;

@@ -112,0 +112,0 @@ export declare function isComplexProperty(prop: Property): prop is ComplexProperty;

@@ -21,3 +21,3 @@ "use strict";

exports.isUpdateType = isUpdateType;
function isScalarPropery(prop) {
function isScalarProperty(prop) {
return isPrimitiveProperty(prop)

@@ -28,3 +28,3 @@ || isComplexProperty(prop)

}
exports.isScalarPropery = isScalarPropery;
exports.isScalarProperty = isScalarProperty;
function isPrimitiveProperty(prop) {

@@ -138,2 +138,2 @@ return !!prop.PrimitiveType;

exports.isTagPropertyStringMap = isTagPropertyStringMap;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwcm9wZXJ0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZDQUF5RDtBQXVIekQsSUFBWSxVQUlYO0FBSkQsV0FBWSxVQUFVO0lBQ3BCLHlDQUEyQixDQUFBO0lBQzNCLHFDQUF1QixDQUFBO0lBQ3ZCLGlDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFKVyxVQUFVLEdBQVYsa0JBQVUsS0FBVixrQkFBVSxRQUlyQjtBQUVELFNBQWdCLFlBQVksQ0FBQyxHQUFXO0lBQ3RDLFFBQVEsR0FBRyxFQUFFO1FBQ2IsS0FBSyxVQUFVLENBQUMsV0FBVyxDQUFDO1FBQzVCLEtBQUssVUFBVSxDQUFDLFNBQVMsQ0FBQztRQUMxQixLQUFLLFVBQVUsQ0FBQyxPQUFPO1lBQ3JCLE9BQU8sSUFBSSxDQUFDO1FBQ2Q7WUFDRSxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQztBQVRELG9DQVNDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLElBQWM7SUFDNUMsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7V0FDM0IsaUJBQWlCLENBQUMsSUFBSSxDQUFDO1FBQzFCLHVFQUF1RTtXQUNwRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFMRCwwQ0FLQztBQUVELFNBQWdCLG1CQUFtQixDQUFDLElBQWM7SUFDaEQsT0FBTyxDQUFDLENBQUUsSUFBMEIsQ0FBQyxhQUFhLENBQUM7QUFDckQsQ0FBQztBQUZELGtEQUVDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQUMsSUFBYztJQUM5QyxNQUFNLFFBQVEsR0FBSSxJQUF3QixDQUFDLElBQUksQ0FBQztJQUNoRCxPQUFPLFFBQVEsSUFBSSxJQUFJLElBQUksUUFBUSxLQUFLLEtBQUssSUFBSSxRQUFRLEtBQUss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Q0FDcEQsQ0FBQztBQUVKLENBQUM7QUFSRCxzREFRQztBQUVELFNBQWdCLDZCQUE2QixDQUFDLElBQWM7SUFDMUQsT0FBUSxJQUFvQyxDQUFDLFFBQVEsS0FBSyxhQUFhLENBQUM7QUFDMUUsQ0FBQztBQUZELHNFQUVDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQUMsSUFBYztJQUM5QyxPQUFRLElBQXdCLENBQUMsYUFBYSxLQUFLLDBCQUFhLENBQUMsSUFBSSxDQUFDO0FBQ3hFLENBQUM7QUFGRCw4Q0FFQztBQUVELFNBQWdCLHNCQUFzQixDQUFDLElBQWM7SUFDbkQsT0FBUSxJQUE2QixDQUFDLGlCQUFpQixLQUFLLFFBQVEsQ0FBQztBQUN2RSxDQUFDO0FBRkQsd0RBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEb2N1bWVudGVkLCBQcmltaXRpdmVUeXBlIH0gZnJvbSAnLi9iYXNlLXR5cGVzJztcblxuZXhwb3J0IHR5cGUgUHJvcGVydHkgPSBTY2FsYXJQcm9wZXJ0eSB8IENvbGxlY3Rpb25Qcm9wZXJ0eTtcbmV4cG9ydCB0eXBlIFNjYWxhclByb3BlcnR5ID0gUHJpbWl0aXZlUHJvcGVydHkgfCBDb21wbGV4UHJvcGVydHkgfCBVbmlvblByb3BlcnR5O1xuZXhwb3J0IHR5cGUgQ29sbGVjdGlvblByb3BlcnR5ID0gTGlzdFByb3BlcnR5IHwgTWFwUHJvcGVydHkgfCBVbmlvblByb3BlcnR5O1xuZXhwb3J0IHR5cGUgTGlzdFByb3BlcnR5ID0gUHJpbWl0aXZlTGlzdFByb3BlcnR5IHwgQ29tcGxleExpc3RQcm9wZXJ0eTtcbmV4cG9ydCB0eXBlIE1hcFByb3BlcnR5ID0gUHJpbWl0aXZlTWFwUHJvcGVydHkgfCBDb21wbGV4TWFwUHJvcGVydHk7XG5leHBvcnQgdHlwZSBUYWdQcm9wZXJ0eSA9IFRhZ1Byb3BlcnR5U3RhbmRhcmQgfCBUYWdQcm9wZXJ0eUF1dG9TY2FsaW5nR3JvdXAgfCBUYWdQcm9wZXJ0eUpzb24gfCBUYWdQcm9wZXJ0eVN0cmluZ01hcDtcblxuZXhwb3J0IGludGVyZmFjZSBQcm9wZXJ0eUJhc2UgZXh0ZW5kcyBEb2N1bWVudGVkIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwcm9wZXJ0eSBpcyByZXF1aXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIFJlcXVpcmVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIER1cmluZyBhIHN0YWNrIHVwZGF0ZSwgdGhlIHVwZGF0ZSBiZWhhdmlvciB3aGVuIHlvdSBhZGQsIHJlbW92ZSwgb3IgbW9kaWZ5IHRoZSBwcm9wZXJ0eS4gQVdTIENsb3VkRm9ybWF0aW9uXG4gICAqIHJlcGxhY2VzIHRoZSByZXNvdXJjZSB3aGVuIHlvdSBjaGFuZ2UgYMOMbW11dGFibGVgYHByb3BlcnRpZXMuIEFXUyBDbG91ZEZvcm1hdGlvbiBkb2Vzbid0IHJlcGxhY2UgdGhlIHJlc291cmNlXG4gICAqIHdoZW4geW91IGNoYW5nZSBgYE11dGFibGVgYCBwcm9wZXJ0aWVzLiBgYENvbmRpdGlvbmFsYGAgdXBkYXRlcyBjYW4gYmUgbXV0YWJsZSBvciBpbW11dGFibGUsIGRlcGVuZGluZyBvbiwgZm9yXG4gICAqIGV4YW1wbGUsIHdoaWNoIG90aGVyIHByb3BlcnRpZXMgeW91IHVwZGF0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFVwZGF0ZVR5cGUuTXV0YWJsZVxuICAgKi9cbiAgVXBkYXRlVHlwZT86IFVwZGF0ZVR5cGU7XG5cbiAgLyoqXG4gICAqIER1cmluZyBhIHN0YWNrIHVwZGF0ZSwgd2hhdCBraW5kIG9mIGFkZGl0aW9uYWwgc2NydXRpbnkgY2hhbmdlcyB0byB0aGlzIHByb3BlcnR5IHNob3VsZCBiZSBzdWJqZWN0ZWQgdG9cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgU2NydXRpbnlUeXBlPzogUHJvcGVydHlTY3J1dGlueVR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpbWl0aXZlUHJvcGVydHkgZXh0ZW5kcyBQcm9wZXJ0eUJhc2Uge1xuICAvKiogVGhlIHZhbGlkIHByaW1pdGl2ZSB0eXBlIGZvciB0aGUgcHJvcGVydHkuICovXG4gIFByaW1pdGl2ZVR5cGU6IFByaW1pdGl2ZVR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGxleFByb3BlcnR5IGV4dGVuZHMgUHJvcGVydHlCYXNlIHtcbiAgLyoqIFRoZSB0eXBlIG9mIHZhbGlkIHZhbHVlcyBmb3IgdGhpcyBwcm9wZXJ0eSAqL1xuICBUeXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFByb3BlcnR5QmFzZSBleHRlbmRzIFByb3BlcnR5QmFzZSB7XG4gIC8qKlxuICAgKiBBIGxpc3QgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB2YWx1ZXMuXG4gICAqL1xuICBUeXBlOiAnTGlzdCc7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBBV1MgQ2xvdWRGb3JtYXRpb24gYWxsb3dzIGR1cGxpY2F0ZSB2YWx1ZXMuIElmIHRoZSB2YWx1ZSBpcyBgYHRydWVgYCwgQVdTIENsb3VkRm9ybWF0aW9uXG4gICAqIGlnbm9yZXMgZHVwbGljYXRlIHZhbHVlcy4gaWYgdGhlIHZhbHVlIGlzICBgYGZhbHNlYGAsIEFXUyBDbG91ZEZvcm1hdGlvbiByZXR1cm5zIGFuIGFycm9yIGlmIHlvdSBzdWJtaXQgZHVwbGljYXRlXG4gICAqIHZhbHVlcy5cbiAgICovXG4gIER1cGxpY2F0ZXNBbGxvd2VkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmltaXRpdmVMaXN0UHJvcGVydHkgZXh0ZW5kcyBMaXN0UHJvcGVydHlCYXNlIHtcbiAgLyoqIFRoZSB2YWxpZCBwcmltaXRpdmUgdHlwZSBmb3IgdGhlIHByb3BlcnR5LiAqL1xuICBQcmltaXRpdmVJdGVtVHlwZTogUHJpbWl0aXZlVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wbGV4TGlzdFByb3BlcnR5IGV4dGVuZHMgTGlzdFByb3BlcnR5QmFzZSB7XG4gIC8qKiBWYWxpZCB2YWx1ZXMgZm9yIHRoZSBwcm9wZXJ0eSAqL1xuICBJdGVtVHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcFByb3BlcnR5QmFzZSBleHRlbmRzIFByb3BlcnR5QmFzZSB7XG4gIC8qKiBBIG1hcCBpcyBhIHNldCBvZiBrZXktdmFsdWUgcGFpcnMsIHdoZXJlIHRoZSBrZXlzIGFyZSBhbHdheXMgc3RyaW5ncy4gKi9cbiAgVHlwZTogJ01hcCc7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBBV1MgQ2xvdWRGb3JtYXRpb24gYWxsb3dzIGR1cGxpY2F0ZSB2YWx1ZXMuIElmIHRoZSB2YWx1ZSBpcyBgYHRydWVgYCwgQVdTIENsb3VkRm9ybWF0aW9uXG4gICAqIGlnbm9yZXMgZHVwbGljYXRlIHZhbHVlcy4gaWYgdGhlIHZhbHVlIGlzICBgYGZhbHNlYGAsIEFXUyBDbG91ZEZvcm1hdGlvbiByZXR1cm5zIGFuIGFycm9yIGlmIHlvdSBzdWJtaXQgZHVwbGljYXRlXG4gICAqIHZhbHVlcy5cbiAgICovXG4gIER1cGxpY2F0ZXNBbGxvd2VkPzogZmFsc2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpbWl0aXZlTWFwUHJvcGVydHkgZXh0ZW5kcyBNYXBQcm9wZXJ0eUJhc2Uge1xuICAvKiogVGhlIHZhbGlkIHByaW1pdGl2ZSB0eXBlIGZvciB0aGUgcHJvcGVydHkuICovXG4gIFByaW1pdGl2ZUl0ZW1UeXBlOiBQcmltaXRpdmVUeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsZXhNYXBQcm9wZXJ0eSBleHRlbmRzIE1hcFByb3BlcnR5QmFzZSB7XG4gIC8qKiBWYWxpZCB2YWx1ZXMgZm9yIHRoZSBwcm9wZXJ0eSAqL1xuICBJdGVtVHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhZ1Byb3BlcnR5U3RhbmRhcmQgZXh0ZW5kcyBQcm9wZXJ0eUJhc2Uge1xuICBJdGVtVHlwZTogJ1RhZycgfCAnVGFnc0VudHJ5JyB8ICdUYWdSZWYnO1xuICBUeXBlOiAnVGFncyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnUHJvcGVydHlBdXRvU2NhbGluZ0dyb3VwIGV4dGVuZHMgUHJvcGVydHlCYXNlIHtcbiAgSXRlbVR5cGU6ICdUYWdQcm9wZXJ0eSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnUHJvcGVydHlKc29uIGV4dGVuZHMgUHJvcGVydHlCYXNlIHtcbiAgUHJpbWl0aXZlVHlwZTogUHJpbWl0aXZlVHlwZS5Kc29uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhZ1Byb3BlcnR5U3RyaW5nTWFwIGV4dGVuZHMgUHJvcGVydHlCYXNlIHtcbiAgUHJpbWl0aXZlSXRlbVR5cGU6ICdTdHJpbmcnO1xufVxuXG4vKipcbiAqIEEgcHJvcGVydHkgdHlwZSB0aGF0IGNhbiBiZSBvbmUgb2Ygc2V2ZXJhbCB0eXBlcy4gQ3VycmVudGx5IHVzZWQgb25seSBpbiBTQU0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5pb25Qcm9wZXJ0eSBleHRlbmRzIFByb3BlcnR5QmFzZSB7XG4gIC8qKiBWYWxpZCBwcmltaXRpdmUgdHlwZXMgZm9yIHRoZSBwcm9wZXJ0eSAqL1xuICBQcmltaXRpdmVUeXBlcz86IFByaW1pdGl2ZVR5cGVbXTtcbiAgLyoqIFZhbGlkIGNvbXBsZXggdHlwZXMgZm9yIHRoZSBwcm9wZXJ0eSAqL1xuICBUeXBlcz86IHN0cmluZ1tdXG4gIC8qKiBWYWxpZCBwcmltaXRpdmUgaXRlbSB0eXBlcyBmb3IgdGhpcyBwcm9wZXJ0eSAqL1xuICBQcmltaXRpdmVJdGVtVHlwZXM/OiBQcmltaXRpdmVUeXBlW107XG4gIC8qKiBWYWxpZCBsaXN0IGl0ZW0gdHlwZXMgZm9yIHRoZSBwcm9wZXJ0eSAqL1xuICBJdGVtVHlwZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGVudW0gVXBkYXRlVHlwZSB7XG4gIENvbmRpdGlvbmFsID0gJ0NvbmRpdGlvbmFsJyxcbiAgSW1tdXRhYmxlID0gJ0ltbXV0YWJsZScsXG4gIE11dGFibGUgPSAnTXV0YWJsZSdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVXBkYXRlVHlwZShzdHI6IHN0cmluZyk6IHN0ciBpcyBVcGRhdGVUeXBlIHtcbiAgc3dpdGNoIChzdHIpIHtcbiAgY2FzZSBVcGRhdGVUeXBlLkNvbmRpdGlvbmFsOlxuICBjYXNlIFVwZGF0ZVR5cGUuSW1tdXRhYmxlOlxuICBjYXNlIFVwZGF0ZVR5cGUuTXV0YWJsZTpcbiAgICByZXR1cm4gdHJ1ZTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2NhbGFyUHJvcGVyeShwcm9wOiBQcm9wZXJ0eSk6IHByb3AgaXMgU2NhbGFyUHJvcGVydHkge1xuICByZXR1cm4gaXNQcmltaXRpdmVQcm9wZXJ0eShwcm9wKVxuICAgIHx8IGlzQ29tcGxleFByb3BlcnR5KHByb3ApXG4gICAgLy8gQSBVbmlvblByb3BlcnR5IGlzIG9ubHkgU2NhbGFyIGlmIGl0IGRlZmluZXMgVHlwZXMgb3IgUHJpbWl0aXZlVHlwZXNcbiAgICB8fCAoaXNVbmlvblByb3BlcnR5KHByb3ApICYmICEhKHByb3AuVHlwZXMgfHwgcHJvcC5QcmltaXRpdmVUeXBlcykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQcmltaXRpdmVQcm9wZXJ0eShwcm9wOiBQcm9wZXJ0eSk6IHByb3AgaXMgUHJpbWl0aXZlUHJvcGVydHkge1xuICByZXR1cm4gISEocHJvcCBhcyBQcmltaXRpdmVQcm9wZXJ0eSkuUHJpbWl0aXZlVHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29tcGxleFByb3BlcnR5KHByb3A6IFByb3BlcnR5KTogcHJvcCBpcyBDb21wbGV4UHJvcGVydHkge1xuICBjb25zdCBwcm9wVHlwZSA9IChwcm9wIGFzIENvbXBsZXhQcm9wZXJ0eSkuVHlwZTtcbiAgcmV0dXJuIHByb3BUeXBlICE9IG51bGwgJiYgcHJvcFR5cGUgIT09ICdNYXAnICYmIHByb3BUeXBlICE9PSAnTGlzdCc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbGxlY3Rpb25Qcm9wZXJ0eShwcm9wOiBQcm9wZXJ0eSk6IHByb3AgaXMgQ29sbGVjdGlvblByb3BlcnR5IHtcbiAgcmV0dXJuIGlzTGlzdFByb3BlcnR5KHByb3ApXG4gICAgfHwgaXNNYXBQcm9wZXJ0eShwcm9wKVxuICAgIC8vIEEgVW5pb25Qcm9wZXJ0eSBpcyBvbmx5IENvbGxlY3Rpb24gaWYgaXQgZGVmaW5lcyBJdGVtVHlwZXMgb3IgUHJpbWl0aXZlSXRlbVR5cGVzXG4gICAgfHwgKGlzVW5pb25Qcm9wZXJ0eShwcm9wKSAmJiAhIShwcm9wLkl0ZW1UeXBlcyB8fCBwcm9wLlByaW1pdGl2ZUl0ZW1UeXBlcykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMaXN0UHJvcGVydHkocHJvcDogUHJvcGVydHkpOiBwcm9wIGlzIExpc3RQcm9wZXJ0eSB7XG4gIHJldHVybiAocHJvcCBhcyBMaXN0UHJvcGVydHkpLlR5cGUgPT09ICdMaXN0Jztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJpbWl0aXZlTGlzdFByb3BlcnR5KHByb3A6IFByb3BlcnR5KTogcHJvcCBpcyBQcmltaXRpdmVMaXN0UHJvcGVydHkge1xuICByZXR1cm4gaXNMaXN0UHJvcGVydHkocHJvcCkgJiYgISEocHJvcCBhcyBQcmltaXRpdmVMaXN0UHJvcGVydHkpLlByaW1pdGl2ZUl0ZW1UeXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb21wbGV4TGlzdFByb3BlcnR5KHByb3A6IFByb3BlcnR5KTogcHJvcCBpcyBDb21wbGV4TGlzdFByb3BlcnR5IHtcbiAgcmV0dXJuIGlzTGlzdFByb3BlcnR5KHByb3ApICYmICEhKHByb3AgYXMgQ29tcGxleExpc3RQcm9wZXJ0eSkuSXRlbVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc01hcFByb3BlcnR5KHByb3A6IFByb3BlcnR5KTogcHJvcCBpcyBNYXBQcm9wZXJ0eSB7XG4gIHJldHVybiAocHJvcCBhcyBNYXBQcm9wZXJ0eSkuVHlwZSA9PT0gJ01hcCc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ByaW1pdGl2ZU1hcFByb3BlcnR5KHByb3A6IFByb3BlcnR5KTogcHJvcCBpcyBQcmltaXRpdmVNYXBQcm9wZXJ0eSB7XG4gIHJldHVybiBpc01hcFByb3BlcnR5KHByb3ApICYmICEhKHByb3AgYXMgUHJpbWl0aXZlTWFwUHJvcGVydHkpLlByaW1pdGl2ZUl0ZW1UeXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb21wbGV4TWFwUHJvcGVydHkocHJvcDogUHJvcGVydHkpOiBwcm9wIGlzIENvbXBsZXhNYXBQcm9wZXJ0eSB7XG4gIHJldHVybiBpc01hcFByb3BlcnR5KHByb3ApICYmICEhKHByb3AgYXMgQ29tcGxleE1hcFByb3BlcnR5KS5JdGVtVHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVW5pb25Qcm9wZXJ0eShwcm9wOiBQcm9wZXJ0eSk6IHByb3AgaXMgVW5pb25Qcm9wZXJ0eSB7XG4gIGNvbnN0IGNhc3RQcm9wID0gcHJvcCBhcyBVbmlvblByb3BlcnR5O1xuICByZXR1cm4gISEoY2FzdFByb3AuSXRlbVR5cGVzIHx8IGNhc3RQcm9wLlByaW1pdGl2ZVR5cGVzIHx8IGNhc3RQcm9wLlR5cGVzKTtcbn1cblxuZXhwb3J0IGVudW0gUHJvcGVydHlTY3J1dGlueVR5cGUge1xuICAvKipcbiAgICogTm8gYWRkaXRpb25hbCBzY3J1dGlueVxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhbiBJQU0gcG9saWN5IGRpcmVjdGx5IG9uIGEgcmVzb3VyY2VcbiAgICovXG4gIElubGluZVJlc291cmNlUG9saWN5ID0gJ0lubGluZVJlc291cmNlUG9saWN5JyxcblxuICAvKipcbiAgICogRWl0aGVyIGFuIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudCBvciBhIGRpY3Rpb25hcnkgb2YgcG9saWN5IGRvY3VtZW50c1xuICAgKi9cbiAgSW5saW5lSWRlbnRpdHlQb2xpY2llcyA9ICdJbmxpbmVJZGVudGl0eVBvbGljaWVzJyxcblxuICAvKipcbiAgICogQSBsaXN0IG9mIG1hbmFnZWQgcG9saWNpZXMgKG9uIGFuIGlkZW50aXR5IHJlc291cmNlKVxuICAgKi9cbiAgTWFuYWdlZFBvbGljaWVzID0gJ01hbmFnZWRQb2xpY2llcycsXG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGluZ3Jlc3MgcnVsZXMgKG9uIGEgc2VjdXJpdHkgZ3JvdXApXG4gICAqL1xuICBJbmdyZXNzUnVsZXMgPSAnSW5ncmVzc1J1bGVzJyxcblxuICAvKipcbiAgICogQSBzZXQgb2YgZWdyZXNzIHJ1bGVzIChvbiBhIHNlY3VyaXR5IGdyb3VwKVxuICAgKi9cbiAgRWdyZXNzUnVsZXMgPSAnRWdyZXNzUnVsZXMnLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQcm9wZXJ0eVNjcnV0aW55VHlwZShzdHI6IHN0cmluZyk6IHN0ciBpcyBQcm9wZXJ0eVNjcnV0aW55VHlwZSB7XG4gIHJldHVybiAoUHJvcGVydHlTY3J1dGlueVR5cGUgYXMgYW55KVtzdHJdICE9PSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhhdCB0aGUgcHJvcGVydHkgKipjYW4qKiBiZSBhIFRhZyBQcm9wZXJ0eVxuICpcbiAqIFRoZSBwcm9wZXJ0eSBpcyBvbmx5IGEgVGFnIGlmIHRoZSBuYW1lIG9mIHRoaXMgcHJvcGVydHkgaXMgVGFncywgd2hpY2ggaXNcbiAqIHZhbGlkYXRlZCB1c2luZyBgUmVzb3VyY2VUeXBlLmlzVGFnZ2FibGUocmVzb3VyY2UpYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVGFnUHJvcGVydHkocHJvcDogUHJvcGVydHkpOiBwcm9wIGlzIFRhZ1Byb3BlcnR5IHtcbiAgcmV0dXJuIChcbiAgICBpc1RhZ1Byb3BlcnR5U3RhbmRhcmQocHJvcCkgfHxcbiAgICBpc1RhZ1Byb3BlcnR5QXV0b1NjYWxpbmdHcm91cChwcm9wKSB8fFxuICAgIGlzVGFnUHJvcGVydHlKc29uKHByb3ApIHx8XG4gICAgaXNUYWdQcm9wZXJ0eVN0cmluZ01hcChwcm9wKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUYWdQcm9wZXJ0eVN0YW5kYXJkKHByb3A6IFByb3BlcnR5KTogcHJvcCBpcyBUYWdQcm9wZXJ0eVN0YW5kYXJkIHtcbiAgcmV0dXJuIChcbiAgICAocHJvcCBhcyBUYWdQcm9wZXJ0eVN0YW5kYXJkKS5JdGVtVHlwZSA9PT0gJ1RhZycgfHxcbiAgICAocHJvcCBhcyBUYWdQcm9wZXJ0eVN0YW5kYXJkKS5JdGVtVHlwZSA9PT0gJ1RhZ3NFbnRyeScgfHxcbiAgICAocHJvcCBhcyBUYWdQcm9wZXJ0eVN0YW5kYXJkKS5UeXBlID09PSAnVGFncycgfHxcbiAgICAocHJvcCBhcyBUYWdQcm9wZXJ0eVN0YW5kYXJkKS5JdGVtVHlwZSA9PT0gJ1RhZ1JlZidcbiAgKTtcblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUYWdQcm9wZXJ0eUF1dG9TY2FsaW5nR3JvdXAocHJvcDogUHJvcGVydHkpOiBwcm9wIGlzIFRhZ1Byb3BlcnR5QXV0b1NjYWxpbmdHcm91cCB7XG4gIHJldHVybiAocHJvcCBhcyBUYWdQcm9wZXJ0eUF1dG9TY2FsaW5nR3JvdXApLkl0ZW1UeXBlID09PSAnVGFnUHJvcGVydHknO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUYWdQcm9wZXJ0eUpzb24ocHJvcDogUHJvcGVydHkpOiBwcm9wIGlzIFRhZ1Byb3BlcnR5SnNvbiB7XG4gIHJldHVybiAocHJvcCBhcyBUYWdQcm9wZXJ0eUpzb24pLlByaW1pdGl2ZVR5cGUgPT09IFByaW1pdGl2ZVR5cGUuSnNvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGFnUHJvcGVydHlTdHJpbmdNYXAocHJvcDogUHJvcGVydHkpOiBwcm9wIGlzIFRhZ1Byb3BlcnR5U3RyaW5nTWFwIHtcbiAgcmV0dXJuIChwcm9wIGFzIFRhZ1Byb3BlcnR5U3RyaW5nTWFwKS5QcmltaXRpdmVJdGVtVHlwZSA9PT0gJ1N0cmluZyc7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwcm9wZXJ0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZDQUF5RDtBQXVIekQsSUFBWSxVQUlYO0FBSkQsV0FBWSxVQUFVO0lBQ3BCLHlDQUEyQixDQUFBO0lBQzNCLHFDQUF1QixDQUFBO0lBQ3ZCLGlDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFKVyxVQUFVLEdBQVYsa0JBQVUsS0FBVixrQkFBVSxRQUlyQjtBQUVELFNBQWdCLFlBQVksQ0FBQyxHQUFXO0lBQ3RDLFFBQVEsR0FBRyxFQUFFO1FBQ2IsS0FBSyxVQUFVLENBQUMsV0FBVyxDQUFDO1FBQzVCLEtBQUssVUFBVSxDQUFDLFNBQVMsQ0FBQztRQUMxQixLQUFLLFVBQVUsQ0FBQyxPQUFPO1lBQ3JCLE9BQU8sSUFBSSxDQUFDO1FBQ2Q7WUFDRSxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQztBQVRELG9DQVNDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBYztJQUM3QyxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQztXQUMzQixpQkFBaUIsQ0FBQyxJQUFJLENBQUM7UUFDMUIsdUVBQXVFO1dBQ3BFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7QUFDeEUsQ0FBQztBQUxELDRDQUtDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQUMsSUFBYztJQUNoRCxPQUFPLENBQUMsQ0FBRSxJQUEwQixDQUFDLGFBQWEsQ0FBQztBQUNyRCxDQUFDO0FBRkQsa0RBRUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBQyxJQUFjO0lBQzlDLE1BQU0sUUFBUSxHQUFJLElBQXdCLENBQUMsSUFBSSxDQUFDO0lBQ2hELE9BQU8sUUFBUSxJQUFJLElBQUksSUFBSSxRQUFRLEtBQUssS0FBSyxJQUFJLFFBQVEsS0FB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USxDQUNwRCxDQUFDO0FBRUosQ0FBQztBQVJELHNEQVFDO0FBRUQsU0FBZ0IsNkJBQTZCLENBQUMsSUFBYztJQUMxRCxPQUFRLElBQW9DLENBQUMsUUFBUSxLQUFLLGFBQWEsQ0FBQztBQUMxRSxDQUFDO0FBRkQsc0VBRUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBQyxJQUFjO0lBQzlDLE9BQVEsSUFBd0IsQ0FBQyxhQUFhLEtBQUssMEJBQWEsQ0FBQyxJQUFJLENBQUM7QUFDeEUsQ0FBQztBQUZELDhDQUVDO0FBRUQsU0FBZ0Isc0JBQXNCLENBQUMsSUFBYztJQUNuRCxPQUFRLElBQTZCLENBQUMsaUJBQWlCLEtBQUssUUFBUSxDQUFDO0FBQ3ZFLENBQUM7QUFGRCx3REFFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERvY3VtZW50ZWQsIFByaW1pdGl2ZVR5cGUgfSBmcm9tICcuL2Jhc2UtdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBQcm9wZXJ0eSA9IFNjYWxhclByb3BlcnR5IHwgQ29sbGVjdGlvblByb3BlcnR5O1xuZXhwb3J0IHR5cGUgU2NhbGFyUHJvcGVydHkgPSBQcmltaXRpdmVQcm9wZXJ0eSB8IENvbXBsZXhQcm9wZXJ0eSB8IFVuaW9uUHJvcGVydHk7XG5leHBvcnQgdHlwZSBDb2xsZWN0aW9uUHJvcGVydHkgPSBMaXN0UHJvcGVydHkgfCBNYXBQcm9wZXJ0eSB8IFVuaW9uUHJvcGVydHk7XG5leHBvcnQgdHlwZSBMaXN0UHJvcGVydHkgPSBQcmltaXRpdmVMaXN0UHJvcGVydHkgfCBDb21wbGV4TGlzdFByb3BlcnR5O1xuZXhwb3J0IHR5cGUgTWFwUHJvcGVydHkgPSBQcmltaXRpdmVNYXBQcm9wZXJ0eSB8IENvbXBsZXhNYXBQcm9wZXJ0eTtcbmV4cG9ydCB0eXBlIFRhZ1Byb3BlcnR5ID0gVGFnUHJvcGVydHlTdGFuZGFyZCB8IFRhZ1Byb3BlcnR5QXV0b1NjYWxpbmdHcm91cCB8IFRhZ1Byb3BlcnR5SnNvbiB8IFRhZ1Byb3BlcnR5U3RyaW5nTWFwO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5QmFzZSBleHRlbmRzIERvY3VtZW50ZWQge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHByb3BlcnR5IGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgUmVxdWlyZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogRHVyaW5nIGEgc3RhY2sgdXBkYXRlLCB0aGUgdXBkYXRlIGJlaGF2aW9yIHdoZW4geW91IGFkZCwgcmVtb3ZlLCBvciBtb2RpZnkgdGhlIHByb3BlcnR5LiBBV1MgQ2xvdWRGb3JtYXRpb25cbiAgICogcmVwbGFjZXMgdGhlIHJlc291cmNlIHdoZW4geW91IGNoYW5nZSBgw4xtbXV0YWJsZWBgcHJvcGVydGllcy4gQVdTIENsb3VkRm9ybWF0aW9uIGRvZXNuJ3QgcmVwbGFjZSB0aGUgcmVzb3VyY2VcbiAgICogd2hlbiB5b3UgY2hhbmdlIGBgTXV0YWJsZWBgIHByb3BlcnRpZXMuIGBgQ29uZGl0aW9uYWxgYCB1cGRhdGVzIGNhbiBiZSBtdXRhYmxlIG9yIGltbXV0YWJsZSwgZGVwZW5kaW5nIG9uLCBmb3JcbiAgICogZXhhbXBsZSwgd2hpY2ggb3RoZXIgcHJvcGVydGllcyB5b3UgdXBkYXRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgVXBkYXRlVHlwZS5NdXRhYmxlXG4gICAqL1xuICBVcGRhdGVUeXBlPzogVXBkYXRlVHlwZTtcblxuICAvKipcbiAgICogRHVyaW5nIGEgc3RhY2sgdXBkYXRlLCB3aGF0IGtpbmQgb2YgYWRkaXRpb25hbCBzY3J1dGlueSBjaGFuZ2VzIHRvIHRoaXMgcHJvcGVydHkgc2hvdWxkIGJlIHN1YmplY3RlZCB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICBTY3J1dGlueVR5cGU/OiBQcm9wZXJ0eVNjcnV0aW55VHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmltaXRpdmVQcm9wZXJ0eSBleHRlbmRzIFByb3BlcnR5QmFzZSB7XG4gIC8qKiBUaGUgdmFsaWQgcHJpbWl0aXZlIHR5cGUgZm9yIHRoZSBwcm9wZXJ0eS4gKi9cbiAgUHJpbWl0aXZlVHlwZTogUHJpbWl0aXZlVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wbGV4UHJvcGVydHkgZXh0ZW5kcyBQcm9wZXJ0eUJhc2Uge1xuICAvKiogVGhlIHR5cGUgb2YgdmFsaWQgdmFsdWVzIGZvciB0aGlzIHByb3BlcnR5ICovXG4gIFR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0UHJvcGVydHlCYXNlIGV4dGVuZHMgUHJvcGVydHlCYXNlIHtcbiAgLyoqXG4gICAqIEEgbGlzdCBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHZhbHVlcy5cbiAgICovXG4gIFR5cGU6ICdMaXN0JztcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIEFXUyBDbG91ZEZvcm1hdGlvbiBhbGxvd3MgZHVwbGljYXRlIHZhbHVlcy4gSWYgdGhlIHZhbHVlIGlzIGBgdHJ1ZWBgLCBBV1MgQ2xvdWRGb3JtYXRpb25cbiAgICogaWdub3JlcyBkdXBsaWNhdGUgdmFsdWVzLiBpZiB0aGUgdmFsdWUgaXMgIGBgZmFsc2VgYCwgQVdTIENsb3VkRm9ybWF0aW9uIHJldHVybnMgYW4gYXJyb3IgaWYgeW91IHN1Ym1pdCBkdXBsaWNhdGVcbiAgICogdmFsdWVzLlxuICAgKi9cbiAgRHVwbGljYXRlc0FsbG93ZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByaW1pdGl2ZUxpc3RQcm9wZXJ0eSBleHRlbmRzIExpc3RQcm9wZXJ0eUJhc2Uge1xuICAvKiogVGhlIHZhbGlkIHByaW1pdGl2ZSB0eXBlIGZvciB0aGUgcHJvcGVydHkuICovXG4gIFByaW1pdGl2ZUl0ZW1UeXBlOiBQcmltaXRpdmVUeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsZXhMaXN0UHJvcGVydHkgZXh0ZW5kcyBMaXN0UHJvcGVydHlCYXNlIHtcbiAgLyoqIFZhbGlkIHZhbHVlcyBmb3IgdGhlIHByb3BlcnR5ICovXG4gIEl0ZW1UeXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwUHJvcGVydHlCYXNlIGV4dGVuZHMgUHJvcGVydHlCYXNlIHtcbiAgLyoqIEEgbWFwIGlzIGEgc2V0IG9mIGtleS12YWx1ZSBwYWlycywgd2hlcmUgdGhlIGtleXMgYXJlIGFsd2F5cyBzdHJpbmdzLiAqL1xuICBUeXBlOiAnTWFwJztcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIEFXUyBDbG91ZEZvcm1hdGlvbiBhbGxvd3MgZHVwbGljYXRlIHZhbHVlcy4gSWYgdGhlIHZhbHVlIGlzIGBgdHJ1ZWBgLCBBV1MgQ2xvdWRGb3JtYXRpb25cbiAgICogaWdub3JlcyBkdXBsaWNhdGUgdmFsdWVzLiBpZiB0aGUgdmFsdWUgaXMgIGBgZmFsc2VgYCwgQVdTIENsb3VkRm9ybWF0aW9uIHJldHVybnMgYW4gYXJyb3IgaWYgeW91IHN1Ym1pdCBkdXBsaWNhdGVcbiAgICogdmFsdWVzLlxuICAgKi9cbiAgRHVwbGljYXRlc0FsbG93ZWQ/OiBmYWxzZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmltaXRpdmVNYXBQcm9wZXJ0eSBleHRlbmRzIE1hcFByb3BlcnR5QmFzZSB7XG4gIC8qKiBUaGUgdmFsaWQgcHJpbWl0aXZlIHR5cGUgZm9yIHRoZSBwcm9wZXJ0eS4gKi9cbiAgUHJpbWl0aXZlSXRlbVR5cGU6IFByaW1pdGl2ZVR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGxleE1hcFByb3BlcnR5IGV4dGVuZHMgTWFwUHJvcGVydHlCYXNlIHtcbiAgLyoqIFZhbGlkIHZhbHVlcyBmb3IgdGhlIHByb3BlcnR5ICovXG4gIEl0ZW1UeXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnUHJvcGVydHlTdGFuZGFyZCBleHRlbmRzIFByb3BlcnR5QmFzZSB7XG4gIEl0ZW1UeXBlOiAnVGFnJyB8ICdUYWdzRW50cnknIHwgJ1RhZ1JlZic7XG4gIFR5cGU6ICdUYWdzJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWdQcm9wZXJ0eUF1dG9TY2FsaW5nR3JvdXAgZXh0ZW5kcyBQcm9wZXJ0eUJhc2Uge1xuICBJdGVtVHlwZTogJ1RhZ1Byb3BlcnR5Jztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWdQcm9wZXJ0eUpzb24gZXh0ZW5kcyBQcm9wZXJ0eUJhc2Uge1xuICBQcmltaXRpdmVUeXBlOiBQcmltaXRpdmVUeXBlLkpzb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnUHJvcGVydHlTdHJpbmdNYXAgZXh0ZW5kcyBQcm9wZXJ0eUJhc2Uge1xuICBQcmltaXRpdmVJdGVtVHlwZTogJ1N0cmluZyc7XG59XG5cbi8qKlxuICogQSBwcm9wZXJ0eSB0eXBlIHRoYXQgY2FuIGJlIG9uZSBvZiBzZXZlcmFsIHR5cGVzLiBDdXJyZW50bHkgdXNlZCBvbmx5IGluIFNBTS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmlvblByb3BlcnR5IGV4dGVuZHMgUHJvcGVydHlCYXNlIHtcbiAgLyoqIFZhbGlkIHByaW1pdGl2ZSB0eXBlcyBmb3IgdGhlIHByb3BlcnR5ICovXG4gIFByaW1pdGl2ZVR5cGVzPzogUHJpbWl0aXZlVHlwZVtdO1xuICAvKiogVmFsaWQgY29tcGxleCB0eXBlcyBmb3IgdGhlIHByb3BlcnR5ICovXG4gIFR5cGVzPzogc3RyaW5nW11cbiAgLyoqIFZhbGlkIHByaW1pdGl2ZSBpdGVtIHR5cGVzIGZvciB0aGlzIHByb3BlcnR5ICovXG4gIFByaW1pdGl2ZUl0ZW1UeXBlcz86IFByaW1pdGl2ZVR5cGVbXTtcbiAgLyoqIFZhbGlkIGxpc3QgaXRlbSB0eXBlcyBmb3IgdGhlIHByb3BlcnR5ICovXG4gIEl0ZW1UeXBlcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZW51bSBVcGRhdGVUeXBlIHtcbiAgQ29uZGl0aW9uYWwgPSAnQ29uZGl0aW9uYWwnLFxuICBJbW11dGFibGUgPSAnSW1tdXRhYmxlJyxcbiAgTXV0YWJsZSA9ICdNdXRhYmxlJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVcGRhdGVUeXBlKHN0cjogc3RyaW5nKTogc3RyIGlzIFVwZGF0ZVR5cGUge1xuICBzd2l0Y2ggKHN0cikge1xuICBjYXNlIFVwZGF0ZVR5cGUuQ29uZGl0aW9uYWw6XG4gIGNhc2UgVXBkYXRlVHlwZS5JbW11dGFibGU6XG4gIGNhc2UgVXBkYXRlVHlwZS5NdXRhYmxlOlxuICAgIHJldHVybiB0cnVlO1xuICBkZWZhdWx0OlxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTY2FsYXJQcm9wZXJ0eShwcm9wOiBQcm9wZXJ0eSk6IHByb3AgaXMgU2NhbGFyUHJvcGVydHkge1xuICByZXR1cm4gaXNQcmltaXRpdmVQcm9wZXJ0eShwcm9wKVxuICAgIHx8IGlzQ29tcGxleFByb3BlcnR5KHByb3ApXG4gICAgLy8gQSBVbmlvblByb3BlcnR5IGlzIG9ubHkgU2NhbGFyIGlmIGl0IGRlZmluZXMgVHlwZXMgb3IgUHJpbWl0aXZlVHlwZXNcbiAgICB8fCAoaXNVbmlvblByb3BlcnR5KHByb3ApICYmICEhKHByb3AuVHlwZXMgfHwgcHJvcC5QcmltaXRpdmVUeXBlcykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQcmltaXRpdmVQcm9wZXJ0eShwcm9wOiBQcm9wZXJ0eSk6IHByb3AgaXMgUHJpbWl0aXZlUHJvcGVydHkge1xuICByZXR1cm4gISEocHJvcCBhcyBQcmltaXRpdmVQcm9wZXJ0eSkuUHJpbWl0aXZlVHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29tcGxleFByb3BlcnR5KHByb3A6IFByb3BlcnR5KTogcHJvcCBpcyBDb21wbGV4UHJvcGVydHkge1xuICBjb25zdCBwcm9wVHlwZSA9IChwcm9wIGFzIENvbXBsZXhQcm9wZXJ0eSkuVHlwZTtcbiAgcmV0dXJuIHByb3BUeXBlICE9IG51bGwgJiYgcHJvcFR5cGUgIT09ICdNYXAnICYmIHByb3BUeXBlICE9PSAnTGlzdCc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbGxlY3Rpb25Qcm9wZXJ0eShwcm9wOiBQcm9wZXJ0eSk6IHByb3AgaXMgQ29sbGVjdGlvblByb3BlcnR5IHtcbiAgcmV0dXJuIGlzTGlzdFByb3BlcnR5KHByb3ApXG4gICAgfHwgaXNNYXBQcm9wZXJ0eShwcm9wKVxuICAgIC8vIEEgVW5pb25Qcm9wZXJ0eSBpcyBvbmx5IENvbGxlY3Rpb24gaWYgaXQgZGVmaW5lcyBJdGVtVHlwZXMgb3IgUHJpbWl0aXZlSXRlbVR5cGVzXG4gICAgfHwgKGlzVW5pb25Qcm9wZXJ0eShwcm9wKSAmJiAhIShwcm9wLkl0ZW1UeXBlcyB8fCBwcm9wLlByaW1pdGl2ZUl0ZW1UeXBlcykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMaXN0UHJvcGVydHkocHJvcDogUHJvcGVydHkpOiBwcm9wIGlzIExpc3RQcm9wZXJ0eSB7XG4gIHJldHVybiAocHJvcCBhcyBMaXN0UHJvcGVydHkpLlR5cGUgPT09ICdMaXN0Jztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJpbWl0aXZlTGlzdFByb3BlcnR5KHByb3A6IFByb3BlcnR5KTogcHJvcCBpcyBQcmltaXRpdmVMaXN0UHJvcGVydHkge1xuICByZXR1cm4gaXNMaXN0UHJvcGVydHkocHJvcCkgJiYgISEocHJvcCBhcyBQcmltaXRpdmVMaXN0UHJvcGVydHkpLlByaW1pdGl2ZUl0ZW1UeXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb21wbGV4TGlzdFByb3BlcnR5KHByb3A6IFByb3BlcnR5KTogcHJvcCBpcyBDb21wbGV4TGlzdFByb3BlcnR5IHtcbiAgcmV0dXJuIGlzTGlzdFByb3BlcnR5KHByb3ApICYmICEhKHByb3AgYXMgQ29tcGxleExpc3RQcm9wZXJ0eSkuSXRlbVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc01hcFByb3BlcnR5KHByb3A6IFByb3BlcnR5KTogcHJvcCBpcyBNYXBQcm9wZXJ0eSB7XG4gIHJldHVybiAocHJvcCBhcyBNYXBQcm9wZXJ0eSkuVHlwZSA9PT0gJ01hcCc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ByaW1pdGl2ZU1hcFByb3BlcnR5KHByb3A6IFByb3BlcnR5KTogcHJvcCBpcyBQcmltaXRpdmVNYXBQcm9wZXJ0eSB7XG4gIHJldHVybiBpc01hcFByb3BlcnR5KHByb3ApICYmICEhKHByb3AgYXMgUHJpbWl0aXZlTWFwUHJvcGVydHkpLlByaW1pdGl2ZUl0ZW1UeXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb21wbGV4TWFwUHJvcGVydHkocHJvcDogUHJvcGVydHkpOiBwcm9wIGlzIENvbXBsZXhNYXBQcm9wZXJ0eSB7XG4gIHJldHVybiBpc01hcFByb3BlcnR5KHByb3ApICYmICEhKHByb3AgYXMgQ29tcGxleE1hcFByb3BlcnR5KS5JdGVtVHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVW5pb25Qcm9wZXJ0eShwcm9wOiBQcm9wZXJ0eSk6IHByb3AgaXMgVW5pb25Qcm9wZXJ0eSB7XG4gIGNvbnN0IGNhc3RQcm9wID0gcHJvcCBhcyBVbmlvblByb3BlcnR5O1xuICByZXR1cm4gISEoY2FzdFByb3AuSXRlbVR5cGVzIHx8IGNhc3RQcm9wLlByaW1pdGl2ZVR5cGVzIHx8IGNhc3RQcm9wLlR5cGVzKTtcbn1cblxuZXhwb3J0IGVudW0gUHJvcGVydHlTY3J1dGlueVR5cGUge1xuICAvKipcbiAgICogTm8gYWRkaXRpb25hbCBzY3J1dGlueVxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhbiBJQU0gcG9saWN5IGRpcmVjdGx5IG9uIGEgcmVzb3VyY2VcbiAgICovXG4gIElubGluZVJlc291cmNlUG9saWN5ID0gJ0lubGluZVJlc291cmNlUG9saWN5JyxcblxuICAvKipcbiAgICogRWl0aGVyIGFuIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudCBvciBhIGRpY3Rpb25hcnkgb2YgcG9saWN5IGRvY3VtZW50c1xuICAgKi9cbiAgSW5saW5lSWRlbnRpdHlQb2xpY2llcyA9ICdJbmxpbmVJZGVudGl0eVBvbGljaWVzJyxcblxuICAvKipcbiAgICogQSBsaXN0IG9mIG1hbmFnZWQgcG9saWNpZXMgKG9uIGFuIGlkZW50aXR5IHJlc291cmNlKVxuICAgKi9cbiAgTWFuYWdlZFBvbGljaWVzID0gJ01hbmFnZWRQb2xpY2llcycsXG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGluZ3Jlc3MgcnVsZXMgKG9uIGEgc2VjdXJpdHkgZ3JvdXApXG4gICAqL1xuICBJbmdyZXNzUnVsZXMgPSAnSW5ncmVzc1J1bGVzJyxcblxuICAvKipcbiAgICogQSBzZXQgb2YgZWdyZXNzIHJ1bGVzIChvbiBhIHNlY3VyaXR5IGdyb3VwKVxuICAgKi9cbiAgRWdyZXNzUnVsZXMgPSAnRWdyZXNzUnVsZXMnLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQcm9wZXJ0eVNjcnV0aW55VHlwZShzdHI6IHN0cmluZyk6IHN0ciBpcyBQcm9wZXJ0eVNjcnV0aW55VHlwZSB7XG4gIHJldHVybiAoUHJvcGVydHlTY3J1dGlueVR5cGUgYXMgYW55KVtzdHJdICE9PSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhhdCB0aGUgcHJvcGVydHkgKipjYW4qKiBiZSBhIFRhZyBQcm9wZXJ0eVxuICpcbiAqIFRoZSBwcm9wZXJ0eSBpcyBvbmx5IGEgVGFnIGlmIHRoZSBuYW1lIG9mIHRoaXMgcHJvcGVydHkgaXMgVGFncywgd2hpY2ggaXNcbiAqIHZhbGlkYXRlZCB1c2luZyBgUmVzb3VyY2VUeXBlLmlzVGFnZ2FibGUocmVzb3VyY2UpYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVGFnUHJvcGVydHkocHJvcDogUHJvcGVydHkpOiBwcm9wIGlzIFRhZ1Byb3BlcnR5IHtcbiAgcmV0dXJuIChcbiAgICBpc1RhZ1Byb3BlcnR5U3RhbmRhcmQocHJvcCkgfHxcbiAgICBpc1RhZ1Byb3BlcnR5QXV0b1NjYWxpbmdHcm91cChwcm9wKSB8fFxuICAgIGlzVGFnUHJvcGVydHlKc29uKHByb3ApIHx8XG4gICAgaXNUYWdQcm9wZXJ0eVN0cmluZ01hcChwcm9wKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUYWdQcm9wZXJ0eVN0YW5kYXJkKHByb3A6IFByb3BlcnR5KTogcHJvcCBpcyBUYWdQcm9wZXJ0eVN0YW5kYXJkIHtcbiAgcmV0dXJuIChcbiAgICAocHJvcCBhcyBUYWdQcm9wZXJ0eVN0YW5kYXJkKS5JdGVtVHlwZSA9PT0gJ1RhZycgfHxcbiAgICAocHJvcCBhcyBUYWdQcm9wZXJ0eVN0YW5kYXJkKS5JdGVtVHlwZSA9PT0gJ1RhZ3NFbnRyeScgfHxcbiAgICAocHJvcCBhcyBUYWdQcm9wZXJ0eVN0YW5kYXJkKS5UeXBlID09PSAnVGFncycgfHxcbiAgICAocHJvcCBhcyBUYWdQcm9wZXJ0eVN0YW5kYXJkKS5JdGVtVHlwZSA9PT0gJ1RhZ1JlZidcbiAgKTtcblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUYWdQcm9wZXJ0eUF1dG9TY2FsaW5nR3JvdXAocHJvcDogUHJvcGVydHkpOiBwcm9wIGlzIFRhZ1Byb3BlcnR5QXV0b1NjYWxpbmdHcm91cCB7XG4gIHJldHVybiAocHJvcCBhcyBUYWdQcm9wZXJ0eUF1dG9TY2FsaW5nR3JvdXApLkl0ZW1UeXBlID09PSAnVGFnUHJvcGVydHknO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUYWdQcm9wZXJ0eUpzb24ocHJvcDogUHJvcGVydHkpOiBwcm9wIGlzIFRhZ1Byb3BlcnR5SnNvbiB7XG4gIHJldHVybiAocHJvcCBhcyBUYWdQcm9wZXJ0eUpzb24pLlByaW1pdGl2ZVR5cGUgPT09IFByaW1pdGl2ZVR5cGUuSnNvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGFnUHJvcGVydHlTdHJpbmdNYXAocHJvcDogUHJvcGVydHkpOiBwcm9wIGlzIFRhZ1Byb3BlcnR5U3RyaW5nTWFwIHtcbiAgcmV0dXJuIChwcm9wIGFzIFRhZ1Byb3BlcnR5U3RyaW5nTWFwKS5QcmltaXRpdmVJdGVtVHlwZSA9PT0gJ1N0cmluZyc7XG59XG4iXX0=

@@ -18,3 +18,3 @@ import { Documented } from './base-types';

PropertyTypes: {
[name: string]: PropertyBag | Property;
[name: string]: PropertyType;
};

@@ -30,5 +30,19 @@ /**

/**
* Describing a user-defined property type
*
* Even though looks weird, the CloudFormation spec does not make a distinction between properties and
* property TYPES: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification-format.html
*
* That means that a "type" comes with fields such as "Required", "UpdateType Mutable", etc
* (even though those only make sense for a particular PROPERTY of that type). They only seem to occur
* on non-Record properties though.
*
* In practice, even though aliases for Primitive properties are allowed, only RecordProperties
* and CollectionProperties seem to actually occur in the spec in the "types" section.
*/
export declare type PropertyType = RecordProperty | Property;
/**
* The specifications of a property object type.
*/
export interface PropertyBag extends Documented {
export interface RecordProperty extends Documented {
/**

@@ -41,2 +55,5 @@ * The properties of the Property type.

}
export declare function isPropertyBag(propertyType: PropertyBag | Property): propertyType is PropertyBag;
/**
* Whether the given type definition is a Record property
*/
export declare function isRecordType(propertyType: PropertyType): propertyType is RecordProperty;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function isPropertyBag(propertyType) {
/**
* Whether the given type definition is a Record property
*/
function isRecordType(propertyType) {
return 'Properties' in propertyType;
}
exports.isPropertyBag = isPropertyBag;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlY2lmaWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNwZWNpZmljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFtQ0EsU0FBZ0IsYUFBYSxDQUFDLFlBQW9DO0lBQ2hFLE9BQU8sWUFBWSxJQUFJLFlBQVksQ0FBQztBQUN0QyxDQUFDO0FBRkQsc0NBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEb2N1bWVudGVkIH0gZnJvbSAnLi9iYXNlLXR5cGVzJztcbmltcG9ydCB7IFByb3BlcnR5IH0gZnJvbSAnLi9wcm9wZXJ0eSc7XG5pbXBvcnQgeyBSZXNvdXJjZVR5cGUgfSBmcm9tICcuL3Jlc291cmNlLXR5cGUnO1xuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvY2ZuLXJlc291cmNlLXNwZWNpZmljYXRpb24tZm9ybWF0Lmh0bWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTcGVjaWZpY2F0aW9uIHtcbiAgLyoqXG4gICAqIEEgZmluZ2VycHJpbnQgb2YgdGhlIHRlbXBsYXRlLCB0aGF0IGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSB0ZW1wbGF0ZSBoYXMgY2hhbmdlZC5cbiAgICovXG4gIEZpbmdlcnByaW50OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGb3IgcmVzb3VyY2VzIHRoYXQgaGF2ZSBwcm9wZXJ0aWVzIHdpdGhpbiBhIHByb3BlcnR5IChhbHNvIGtub3duIGFzIHN1YnByb3BlcnRpZXMpLCBhIGxpc3Qgb2Ygc3VicHJvcGVydHlcbiAgICogc3BlY2lmaWNhdGlvbnMsIHN1Y2ggYXMgd2hpY2ggcHJvcGVydGllcyBhcmUgcmVxdWlyZWQsIHRoZSB0eXBlIG9mIGFsbG93ZWQgdmFsdWUgZm9yIGVhY2ggcHJvcGVydHksIGFuZCB0aGVpclxuICAgKiB1cGRhdGUgYmVoYXZpb3IuXG4gICAqL1xuICBQcm9wZXJ0eVR5cGVzOiB7IFtuYW1lOiBzdHJpbmddOiBQcm9wZXJ0eUJhZyB8IFByb3BlcnR5IH07XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiByZXNvdXJjZXMgYW5kIGluZm9ybWF0aW9uIGFib3V0IGVhY2ggcmVzb3VyY2UncyBwcm9wZXJ0aWVzLCBzdWNoIGFzIGl0J3MgcHJvcGVydHkgbmFtZXMsIHdoaWNoXG4gICAqIHByb3BlcnRpZXMgYXJlIHJlcXVpcmVkLCBhbmQgdGhlaXIgdXBkYXRlIGJlaGF2aW9yLlxuICAgKi9cbiAgUmVzb3VyY2VUeXBlczogeyBbbmFtZTogc3RyaW5nXTogUmVzb3VyY2VUeXBlIH07XG59XG5cbi8qKlxuICogVGhlIHNwZWNpZmljYXRpb25zIG9mIGEgcHJvcGVydHkgb2JqZWN0IHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcGVydHlCYWcgZXh0ZW5kcyBEb2N1bWVudGVkIHtcbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBQcm9wZXJ0eSB0eXBlLlxuICAgKi9cbiAgUHJvcGVydGllczogeyBbbmFtZTogc3RyaW5nXTogUHJvcGVydHkgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvcGVydHlCYWcocHJvcGVydHlUeXBlOiBQcm9wZXJ0eUJhZyB8IFByb3BlcnR5KTogcHJvcGVydHlUeXBlIGlzIFByb3BlcnR5QmFnIHtcbiAgcmV0dXJuICdQcm9wZXJ0aWVzJyBpbiBwcm9wZXJ0eVR5cGU7XG59XG4iXX0=
exports.isRecordType = isRecordType;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlY2lmaWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNwZWNpZmljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFrREE7O0dBRUc7QUFDSCxTQUFnQixZQUFZLENBQUMsWUFBMEI7SUFDckQsT0FBTyxZQUFZLElBQUksWUFBWSxDQUFDO0FBQ3RDLENBQUM7QUFGRCxvQ0FFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERvY3VtZW50ZWQgfSBmcm9tICcuL2Jhc2UtdHlwZXMnO1xuaW1wb3J0IHsgUHJvcGVydHkgfSBmcm9tICcuL3Byb3BlcnR5JztcbmltcG9ydCB7IFJlc291cmNlVHlwZSB9IGZyb20gJy4vcmVzb3VyY2UtdHlwZSc7XG5cbi8qKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9jZm4tcmVzb3VyY2Utc3BlY2lmaWNhdGlvbi1mb3JtYXQuaHRtbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNwZWNpZmljYXRpb24ge1xuICAvKipcbiAgICogQSBmaW5nZXJwcmludCBvZiB0aGUgdGVtcGxhdGUsIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHRlbXBsYXRlIGhhcyBjaGFuZ2VkLlxuICAgKi9cbiAgRmluZ2VycHJpbnQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEZvciByZXNvdXJjZXMgdGhhdCBoYXZlIHByb3BlcnRpZXMgd2l0aGluIGEgcHJvcGVydHkgKGFsc28ga25vd24gYXMgc3VicHJvcGVydGllcyksIGEgbGlzdCBvZiBzdWJwcm9wZXJ0eVxuICAgKiBzcGVjaWZpY2F0aW9ucywgc3VjaCBhcyB3aGljaCBwcm9wZXJ0aWVzIGFyZSByZXF1aXJlZCwgdGhlIHR5cGUgb2YgYWxsb3dlZCB2YWx1ZSBmb3IgZWFjaCBwcm9wZXJ0eSwgYW5kIHRoZWlyXG4gICAqIHVwZGF0ZSBiZWhhdmlvci5cbiAgICovXG4gIFByb3BlcnR5VHlwZXM6IHsgW25hbWU6IHN0cmluZ106IFByb3BlcnR5VHlwZSB9O1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgcmVzb3VyY2VzIGFuZCBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIHJlc291cmNlJ3MgcHJvcGVydGllcywgc3VjaCBhcyBpdCdzIHByb3BlcnR5IG5hbWVzLCB3aGljaFxuICAgKiBwcm9wZXJ0aWVzIGFyZSByZXF1aXJlZCwgYW5kIHRoZWlyIHVwZGF0ZSBiZWhhdmlvci5cbiAgICovXG4gIFJlc291cmNlVHlwZXM6IHsgW25hbWU6IHN0cmluZ106IFJlc291cmNlVHlwZSB9O1xufVxuXG4vKipcbiAqIERlc2NyaWJpbmcgYSB1c2VyLWRlZmluZWQgcHJvcGVydHkgdHlwZVxuICpcbiAqIEV2ZW4gdGhvdWdoIGxvb2tzIHdlaXJkLCB0aGUgQ2xvdWRGb3JtYXRpb24gc3BlYyBkb2VzIG5vdCBtYWtlIGEgZGlzdGluY3Rpb24gYmV0d2VlbiBwcm9wZXJ0aWVzIGFuZFxuICogcHJvcGVydHkgVFlQRVM6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2Nmbi1yZXNvdXJjZS1zcGVjaWZpY2F0aW9uLWZvcm1hdC5odG1sXG4gKlxuICogVGhhdCBtZWFucyB0aGF0IGEgXCJ0eXBlXCIgY29tZXMgd2l0aCBmaWVsZHMgc3VjaCBhcyBcIlJlcXVpcmVkXCIsIFwiVXBkYXRlVHlwZSBNdXRhYmxlXCIsIGV0Y1xuICogKGV2ZW4gdGhvdWdoIHRob3NlIG9ubHkgbWFrZSBzZW5zZSBmb3IgYSBwYXJ0aWN1bGFyIFBST1BFUlRZIG9mIHRoYXQgdHlwZSkuIFRoZXkgb25seSBzZWVtIHRvIG9jY3VyXG4gKiBvbiBub24tUmVjb3JkIHByb3BlcnRpZXMgdGhvdWdoLlxuICpcbiAqIEluIHByYWN0aWNlLCBldmVuIHRob3VnaCBhbGlhc2VzIGZvciBQcmltaXRpdmUgcHJvcGVydGllcyBhcmUgYWxsb3dlZCwgb25seSBSZWNvcmRQcm9wZXJ0aWVzXG4gKiBhbmQgQ29sbGVjdGlvblByb3BlcnRpZXMgc2VlbSB0byBhY3R1YWxseSBvY2N1ciBpbiB0aGUgc3BlYyBpbiB0aGUgXCJ0eXBlc1wiIHNlY3Rpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFByb3BlcnR5VHlwZSA9IFJlY29yZFByb3BlcnR5IHwgUHJvcGVydHk7XG5cbi8qKlxuICogVGhlIHNwZWNpZmljYXRpb25zIG9mIGEgcHJvcGVydHkgb2JqZWN0IHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkUHJvcGVydHkgZXh0ZW5kcyBEb2N1bWVudGVkIHtcbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBQcm9wZXJ0eSB0eXBlLlxuICAgKi9cbiAgUHJvcGVydGllczogeyBbbmFtZTogc3RyaW5nXTogUHJvcGVydHkgfTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBnaXZlbiB0eXBlIGRlZmluaXRpb24gaXMgYSBSZWNvcmQgcHJvcGVydHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmVjb3JkVHlwZShwcm9wZXJ0eVR5cGU6IFByb3BlcnR5VHlwZSk6IHByb3BlcnR5VHlwZSBpcyBSZWNvcmRQcm9wZXJ0eSB7XG4gIHJldHVybiAnUHJvcGVydGllcycgaW4gcHJvcGVydHlUeXBlO1xufVxuIl19
{
"name": "@aws-cdk/cfnspec",
"description": "The CloudFormation resource specification used by @aws-cdk packages",
"version": "1.18.0",
"version": "1.19.0",
"scripts": {

@@ -27,7 +27,7 @@ "update": "cdk-build && /bin/bash build-tools/update.sh",

"@types/md5": "^2.1.33",
"cdk-build-tools": "1.18.0",
"cdk-build-tools": "1.19.0",
"fast-json-patch": "^2.2.1",
"fs-extra": "^8.1.0",
"json-diff": "^0.5.4",
"pkglint": "1.18.0",
"pkglint": "1.19.0",
"sort-json": "^2.0.0"

@@ -34,0 +34,0 @@ },

@@ -30,3 +30,3 @@ "use strict";

const type = specification.PropertyTypes[typeName];
if (schema_1.isPropertyBag(type)) {
if (schema_1.isRecordType(type)) {
validateProperties(typeName, test, type.Properties, specification);

@@ -154,2 +154,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlYy12YWxpZGF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3BlYy12YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0Esd0NBQXlDO0FBQ3pDLDBDQUE2RDtBQUU3RCxTQUFnQixxQkFBcUIsQ0FBQyxJQUFVLEVBQUUsYUFBNEI7SUFDNUUscUJBQXFCLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzNDLHFCQUFxQixDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBSEQsc0RBR0M7QUFFRCxTQUFTLHFCQUFxQixDQUFDLElBQVUsRUFBRSxhQUE0QjtJQUNyRSxLQUFLLE1BQU0sUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1FBQy9ELElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLGlDQUFpQyxDQUFDLENBQUM7UUFDckQsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JFLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxRQUFRLG1EQUFtRCxDQUFDLENBQUM7U0FDM0g7UUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFBRSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FBRTtRQUM1RixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFBRSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFF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O0dBRUc7QUFDSCxTQUFTLE9BQU8sQ0FBSSxFQUFPLEVBQUUsR0FBRyxJQUFXO0lBQ3pDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXhCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1FBQ3RCLEtBQUssTUFBTSxPQUFPLElBQUksR0FBRyxFQUFFO1lBQ3pCLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDcEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyQjtTQUNGO0tBQ0Y7SUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlc3QgfSBmcm9tICdub2RldW5pdCc7XG5pbXBvcnQgc2NoZW1hID0gcmVxdWlyZSgnLi4vbGliL3NjaGVtYScpO1xuaW1wb3J0IHsgaXNQcm9wZXJ0eUJhZywgU3BlY2lmaWNhdGlvbiB9IGZyb20gJy4uL2xpYi9zY2hlbWEnO1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTcGVjaWZpY2F0aW9uKHRlc3Q6IFRlc3QsIHNwZWNpZmljYXRpb246IFNwZWNpZmljYXRpb24pIHtcbiAgdmFsaWRhdGVSZXNvdXJjZVR5cGVzKHRlc3QsIHNwZWNpZmljYXRpb24pO1xuICB2YWxpZGF0ZVByb3BlcnR5VHlwZXModGVzdCwgc3BlY2lmaWNhdGlvbik7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUmVzb3VyY2VUeXBlcyh0ZXN0OiBUZXN0LCBzcGVjaWZpY2F0aW9uOiBTcGVjaWZpY2F0aW9uKSB7XG4gIGZvciAoY29uc3QgdHlwZU5hbWUgb2YgT2JqZWN0LmtleXMoc3BlY2lmaWNhdGlvbi5SZXNvdXJjZVR5cGVzKSkge1xuICAgIHRlc3Qub2sodHlwZU5hbWUsICdSZXNvdXJjZSB0eXBlIG5hbWUgaXMgbm90IGVtcHR5Jyk7XG4gICAgY29uc3QgdHlwZSA9IHNwZWNpZmljYXRpb24uUmVzb3VyY2VUeXBlc1t0eXBlTmFtZV07XG4gICAgdGVzdC5ub3RFcXVhbCh0eXBlLkRvY3VtZW50YXRpb24sIG51bGwsIGAke3R5cGVOYW1lfSBpcyBkb2N1bWVudGVkYCk7XG4gICAgaWYgKHR5cGUuU2NydXRpbnlUeXBlKSB7XG4gICAgICB0ZXN0Lm9rKHNjaGVtYS5pc1Jlc291cmNlU2NydXRpbnlUeXBlKHR5cGUuU2NydXRpbnlUeXBlKSwgYCR7dHlwZU5hbWV9LlNjcnV0aW55VHlwZSBpcyBub3QgYSB2YWxpZCBSZXNvdXJjZVNjcnV0aW55VHlwZWApO1xuICAgIH1cbiAgICBpZiAodHlwZS5Qcm9wZXJ0aWVzKSB7IHZhbGlkYXRlUHJvcGVydGllcyh0eXBlTmFtZSwgdGVzdCwgdHlwZS5Qcm9wZXJ0aWVzLCBzcGVjaWZpY2F0aW9uKTsgfVxuICAgIGlmICh0eXBlLkF0dHJpYnV0ZXMpIHsgdmFsaWRhdGVBdHRyaWJ1dGVzKHR5cGVOYW1lLCB0ZXN0LCB0eXBlLkF0dHJpYnV0ZXMsIHNwZWNpZmljYXRpb24pOyB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eVR5cGVzKHRlc3Q6IFRlc3QsIHNwZWNpZmljYXRpb246IFNwZWNpZmljYXRpb24pIHtcbiAgZm9yIChjb25zdCB0eXBlTmFtZSBvZiBPYmplY3Qua2V5cyhzcGVjaWZpY2F0aW9uLlByb3BlcnR5VHlwZXMpKSB7XG4gICAgdGVzdC5vayh0eXBlTmFtZSwgJ1Byb3BlcnR5IHR5cGUgbmFtZSBpcyBub3QgZW1wdHknKTtcbiAgICBjb25zdCB0eXBlID0gc3BlY2lmaWNhdGlvbi5Qcm9wZXJ0eVR5cGVzW3R5cGVOYW1lXTtcbiAgICBpZiAoaXNQcm9wZXJ0eUJhZyh0eXBlKSkge1xuICAgICAgdmFsaWRhdGVQcm9wZXJ0aWVzKHR5cGVOYW1lLCB0ZXN0LCB0eXBlLlByb3BlcnRpZXMsIHNwZWNpZmljYXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWxpZGF0ZVByb3BlcnRpZXModHlwZU5hbWUsIHRlc3QsIHsgJzx0aGlzPic6IHR5cGUgfSwgc3BlY2lmaWNhdGlvbik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydGllcyh0eXBlTmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Q6IFRlc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczogeyBbbmFtZTogc3RyaW5nXTogc2NoZW1hLlByb3BlcnR5IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNhdGlvbjogU3BlY2lmaWNhdGlvbikge1xuICBjb25zdCBleHBlY3RlZEtleXMgPSBbJ0RvY3VtZW50YXRpb24nLCAnUmVxdWlyZWQnLCAnVXBkYXRlVHlwZScsICdTY3J1dGlueVR5cGUnXTtcbiAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKHByb3BlcnRpZXMpKSB7XG5cbiAgICBjb25zdCBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbbmFtZV07XG4gICAgdGVzdC5ub3RFcXVhbChwcm9wZXJ0eS5Eb2N1bWVudGF0aW9uLCAnJywgYCR7dHlwZU5hbWV9LlByb3BlcnRpZXMuJHtuYW1lfSBpcyBkb2N1bWVudGVkYCk7XG4gICAgdGVzdC5vayghcHJvcGVydHkuVXBkYXRlVHlwZSB8fCBzY2hlbWEuaXNVcGRhdGVUeXBlKHByb3BlcnR5LlVwZGF0ZVR5cGUpLCBgJHt0eXBlTmFtZX0uUHJvcGVydGllcy4ke25hbWV9IGhhcyB2YWxpZCBVcGRhdGVUeXBlYCk7XG4gICAgaWYgKHByb3BlcnR5LlNjcnV0aW55VHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0ZXN0Lm9rKHNjaGVtYS5pc1Byb3BlcnR5U2NydXRpbnlUeXBlKHByb3BlcnR5LlNjcnV0aW55VHlwZSksIGAke3R5cGVOYW1lfS5Qcm9wZXJ0aWVzLiR7bmFtZX0gaGFzIHZhbGlkIFNjcnV0aW55VHlwZWApO1xuICAgIH1cblxuICAgIGlmIChzY2hlbWEuaXNQcmltaXRpdmVQcm9wZXJ0eShwcm9wZXJ0eSkpIHtcbiAgICAgIHRlc3Qub2soc2NoZW1hLmlzUHJpbWl0aXZlVHlwZShwcm9wZXJ0eS5QcmltaXRpdmVUeXBlKSwgYCR7dHlwZU5hbWV9LlByb3BlcnRpZXMuJHtuYW1lfSBoYXMgYSB2YWxpZCBQcmltaXRpdmVUeXBlYCk7XG4gICAgICBleHBlY3RlZEtleXMucHVzaCgnUHJpbWl0aXZlVHlwZScpO1xuXG4gICAgfSBlbHNlIGlmIChzY2hlbWEuaXNQcmltaXRpdmVMaXN0UHJvcGVydHkocHJvcGVydHkpKSB7XG4gICAgICBleHBlY3RlZEtleXMucHVzaCgnVHlwZScsICdEdXBsaWNhdGVzQWxsb3dlZCcsICdQcmltaXRpdmVJdGVtVHlwZScpO1xuICAgICAgdGVzdC5vayhzY2hlbWEuaXNQcmltaXRpdmVUeXBlKHByb3BlcnR5LlByaW1pdGl2ZUl0ZW1UeXBlKSwgYCR7dHlwZU5hbWV9LlByb3BlcnRpZXMuJHtuYW1lfSBoYXMgYSB2YWxpZCBQcmltaXRpdmVJdGVtVHlwZWApO1xuXG4gICAgfSBlbHNlIGlmIChzY2hlbWEuaXNQcmltaXRpdmVNYXBQcm9wZXJ0eShwcm9wZXJ0eSkpIHtcbiAgICAgIGV4cGVjdGVkS2V5cy5wdXNoKCdUeXBlJywgJ0R1cGxpY2F0ZXNBbGxvd2VkJywgJ1ByaW1pdGl2ZUl0ZW1UeXBlJywgJ1R5cGUnKTtcbiAgICAgIHRlc3Qub2soc2NoZW1hLmlzUHJpbWl0aXZlVHlwZShwcm9wZXJ0eS5QcmltaXRpdmVJdGVtVHlwZSksIGAke3R5cGVOYW1lfS5Qcm9wZXJ0aWVzLiR7bmFtZX0gaGFzIGEgdmFsaWQgUHJpbWl0aXZlSXRlbVR5cGVgKTtcbiAgICAgIHRlc3Qub2soIXByb3BlcnR5LkR1cGxpY2F0ZXNBbGxvd2VkLCBgJHt0eXBlTmFtZX0uUHJvcGVydGllcy4ke25hbWV9IGRvZXMgbm90IGFsbG93IGR1cGxpY2F0ZXNgKTtcblxuICAgIH0gZWxzZSBpZiAoc2NoZW1hLmlzQ29tcGxleExpc3RQcm9wZXJ0eShwcm9wZXJ0eSkpIHtcbiAgICAgIGV4cGVjdGVkS2V5cy5wdXNoKCdUeXBlJywgJ0R1cGxpY2F0ZXNBbGxvd2VkJywgJ0l0ZW1UeXBlJywgJ1R5cGUnKTtcbiAgICAgIHRlc3Qub2socHJvcGVydHkuSXRlbVR5cGUsIGAke3R5cGVOYW1lfS5Qcm9wZXJ0aWVzLiR7bmFtZX0gaGFzIGEgdmFsaWQgSXRlbVR5cGVgKTtcbiAgICAgIGlmIChwcm9wZXJ0eS5JdGVtVHlwZSAhPT0gJ1RhZycpIHtcbiAgICAgICAgY29uc3QgZnFuID0gYCR7dHlwZU5hbWUuc3BsaXQoJy4nKVswXX0uJHtwcm9wZXJ0eS5JdGVtVHlwZX1gO1xuICAgICAgICBjb25zdCByZXNvbHZlZFR5cGUgPSBzcGVjaWZpY2F0aW9uLlByb3BlcnR5VHlwZXMgJiYgc3BlY2lmaWNhdGlvbi5Qcm9wZXJ0eVR5cGVzW2Zxbl07XG4gICAgICAgIHRlc3Qub2socmVzb2x2ZWRUeXBlLCBgJHt0eXBlTmFtZX0uUHJvcGVydGllcy4ke25hbWV9IEl0ZW1UeXBlICgke2Zxbn0pIHJlc29sdmVzYCk7XG4gICAgICB9XG5cbiAgICB9IGVsc2UgaWYgKHNjaGVtYS5pc0NvbXBsZXhNYXBQcm9wZXJ0eShwcm9wZXJ0eSkpIHtcbiAgICAgIGV4cGVjdGVkS2V5cy5wdXNoKCdUeXBlJywgJ0R1cGxpY2F0ZXNBbGxvd2VkJywgJ0l0ZW1UeXBlJywgJ1R5cGUnKTtcbiAgICAgIHRlc3Qub2socHJvcGVydHkuSXRlbVR5cGUsIGAke3R5cGVOYW1lfS5Qcm9wZXJ0aWVzLiR7bmFtZX0gaGFzIGEgdmFsaWQgSXRlbVR5cGVgKTtcbiAgICAgIGNvbnN0IGZxbiA9IGAke3R5cGVOYW1lLnNwbGl0KCcuJylbMF19LiR7cHJvcGVydHkuSXRlbVR5cGV9YDtcbiAgICAgIGNvbnN0IHJlc29sdmVkVHlwZSA9IHNwZWNpZmljYXRpb24uUHJvcGVydHlUeXBlcyAmJiBzcGVjaWZpY2F0aW9uLlByb3BlcnR5VHlwZXNbZnFuXTtcbiAgICAgIHRlc3Qub2socmVzb2x2ZWRUeXBlLCBgJHt0eXBlTmFtZX0uUHJvcGVydGllcy4ke25hbWV9IEl0ZW1UeXBlICgke2Zxbn0pIHJlc29sdmVzYCk7XG4gICAgICB0ZXN0Lm9rKCFwcm9wZXJ0eS5EdXBsaWNhdGVzQWxsb3dlZCwgYCR7dHlwZU5hbWV9LlByb3BlcnRpZXMuJHtuYW1lfSBkb2VzIG5vdCBhbGxvdyBkdXBsaWNhdGVzYCk7XG5cbiAgICB9IGVsc2UgaWYgKHNjaGVtYS5pc0NvbXBsZXhQcm9wZXJ0eShwcm9wZXJ0eSkpIHtcbiAgICAgIGV4cGVjdGVkS2V5cy5wdXNoKCdUeXBlJyk7XG4gICAgICB0ZXN0Lm9rKHByb3BlcnR5LlR5cGUsIGAke3R5cGVOYW1lfS5Qcm9wZXJ0aWVzLiR7bmFtZX0gaGFzIGEgdmFsaWQgdHlwZWApO1xuICAgICAgY29uc3QgZnFuID0gYCR7dHlwZU5hbWUuc3BsaXQoJy4nKVswXX0uJHtwcm9wZXJ0eS5UeXBlfWA7XG4gICAgICBjb25zdCByZXNvbHZlZFR5cGUgPSBzcGVjaWZpY2F0aW9uLlByb3BlcnR5VHlwZXMgJiYgc3BlY2lmaWNhdGlvbi5Qcm9wZXJ0eVR5cGVzW2Zxbl07XG4gICAgICB0ZXN0Lm9rKHJlc29sdmVkVHlwZSwgYCR7dHlwZU5hbWV9LlByb3BlcnRpZXMuJHtuYW1lfSB0eXBlICgke2Zxbn0pIHJlc29sdmVzYCk7XG5cbiAgICB9IGVsc2UgaWYgKHNjaGVtYS5pc1VuaW9uUHJvcGVydHkocHJvcGVydHkpKSB7XG4gICAgICBleHBlY3RlZEtleXMucHVzaCgnUHJpbWl0aXZlVHlwZXMnLCAnUHJpbWl0aXZlSXRlbVR5cGVzJywgJ0l0ZW1UeXBlcycsICdUeXBlcycpO1xuICAgICAgaWYgKHByb3BlcnR5LlByaW1pdGl2ZVR5cGVzKSB7XG4gICAgICAgIGZvciAoY29uc3QgdHlwZSBvZiBwcm9wZXJ0eS5QcmltaXRpdmVUeXBlcykge1xuICAgICAgICAgIHRlc3Qub2soc2NoZW1hLmlzUHJpbWl0aXZlVHlwZSh0eXBlKSwgYCR7dHlwZU5hbWV9LlByb3BlcnRpZXMuJHtuYW1lfSBoYXMgb25seSB2YWxpZCBQcmltaXRpdmVUeXBlc2ApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocHJvcGVydHkuSXRlbVR5cGVzKSB7XG4gICAgICAgIGZvciAoY29uc3QgdHlwZSBvZiBwcm9wZXJ0eS5JdGVtVHlwZXMpIHtcbiAgICAgICAgICBjb25zdCBmcW4gPSBgJHt0eXBlTmFtZS5zcGxpdCgnLicpWzBdfS4ke3R5cGV9YDtcbiAgICAgICAgICBjb25zdCByZXNvbHZlZFR5cGUgPSBzcGVjaWZpY2F0aW9uLlByb3BlcnR5VHlwZXMgJiYgc3BlY2lmaWNhdGlvbi5Qcm9wZXJ0eVR5cGVzW2Zxbl07XG4gICAgICAgICAgdGVzdC5vayhyZXNvbHZlZFR5cGUsIGAke3R5cGVOYW1lfS5Qcm9wZXJ0aWVzLiR7bmFtZX0gdHlwZSAoJHtmcW59KSByZXNvbHZlc2ApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocHJvcGVydHkuVHlwZXMpIHtcbiAgICAgICAgZm9yIChjb25zdCB0eXBlIG9mIHByb3BlcnR5LlR5cGVzKSB7XG4gICAgICAgICAgY29uc3QgZnFuID0gYCR7dHlwZU5hbWUuc3BsaXQoJy4nKVswXX0uJHt0eXBlfWA7XG4gICAgICAgICAgY29uc3QgcmVzb2x2ZWRUeXBlID0gc3BlY2lmaWNhdGlvbi5Qcm9wZXJ0eVR5cGVzICYmIHNwZWNpZmljYXRpb24uUHJvcGVydHlUeXBlc1tmcW5dO1xuICAgICAgICAgIHRlc3Qub2socmVzb2x2ZWRUeXBlLCBgJHt0eXBlTmFtZX0uUHJvcGVydGllcy4ke25hbWV9IHR5cGUgKCR7ZnFufSkgcmVzb2x2ZXNgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRlc3Qub2soZmFsc2UsIGAke3R5cGVOYW1lfS5Qcm9wZXJ0aWVzLiR7bmFtZX0gaGFzIGtub3duIHR5cGVgKTtcbiAgICB9XG5cbiAgICB0ZXN0LmRlZXBFcXVhbChcbiAgICAgICAgd2l0aG91dChPYmplY3Qua2V5cyhwcm9wZXJ0eSksIGV4cGVjdGVkS2V5cyksIFtdLFxuICAgICAgICBgJHt0eXBlTmFtZX0uUHJvcGVydGllcy4ke25hbWV9IGhhcyBubyBleHRyYSBwcm9wZXJ0aWVzYCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVBdHRyaWJ1dGVzKHR5cGVOYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdDogVGVzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7IFtuYW1lOiBzdHJpbmddOiBzY2hlbWEuQXR0cmlidXRlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNhdGlvbjogU3BlY2lmaWNhdGlvbikge1xuICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMoYXR0cmlidXRlcykpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzW25hbWVdO1xuICAgIHRlc3Qub2soKCdUeXBlJyBpbiBhdHRyaWJ1dGUpICE9PSAoJ1ByaW1pdGl2ZVR5cGUnIGluIGF0dHJpYnV0ZSkpO1xuICAgIGlmIChzY2hlbWEuaXNQcmltaXRpdmVBdHRyaWJ1dGUoYXR0cmlidXRlKSkge1xuICAgICAgdGVzdC5vayghc2NoZW1hLmlzTGlzdEF0dHJpYnV0ZShhdHRyaWJ1dGUpLCBgJHt0eXBlTmFtZX0uQXR0cmlidXRlcy4ke25hbWV9IGlzIG9ubHkgYSBQcmltaXRpdmUgdHlwZWApO1xuICAgICAgdGVzdC5vayhzY2hlbWEuaXNQcmltaXRpdmVUeXBlKGF0dHJpYnV0ZS5QcmltaXRpdmVUeXBlKSwgYCR7dHlwZU5hbWV9LkF0dHJpYnV0ZXMuJHtuYW1lfSBoYXMgYSB2YWxpZCBQcmltaXRpdmVUeXBlYCk7XG4gICAgICB0ZXN0Lm9rKCEoJ1ByaW1pdGl2ZUl0ZW1UeXBlJyBpbiBhdHRyaWJ1dGUpLCBgJHt0eXBlTmFtZX0uQXR0cmlidXRlcy4ke25hbWV9IGhhcyBubyBQcmltaXRpdmVJdGVtVHlwZWApO1xuICAgICAgdGVzdC5vayghKCdJdGVtVHlwZScgaW4gYXR0cmlidXRlKSwgYCR7dHlwZU5hbWV9LkF0dHJpYnV0ZXMuJHtuYW1lfSBoYXMgbm8gSXRlbVR5cGVgKTtcbiAgICB9IGVsc2UgaWYgKHNjaGVtYS5pc1ByaW1pdGl2ZUxpc3RBdHRyaWJ1dGUoYXR0cmlidXRlKSkge1xuICAgICAgdGVzdC5vayghc2NoZW1hLmlzQ29tcGxleExpc3RBdHRyaWJ1dGUoYXR0cmlidXRlKSwgYCR7dHlwZU5hbWV9LkF0dHJpYnV0ZXMuJHtuYW1lfSBpcyBvbmx5IGEgTGlzdDxQcmltaXRpdmU+IHR5cGVgKTtcbiAgICAgIHRlc3Qub2soc2NoZW1hLmlzUHJpbWl0aXZlVHlwZShhdHRyaWJ1dGUuUHJpbWl0aXZlSXRlbVR5cGUpLCBgJHt0eXBlTmFtZX0uQXR0cmlidXRlcy4ke25hbWV9IGhhcyBhIHZhbGlkIFByaW1pdGl2ZUl0ZW1UeXBlYCk7XG4gICAgICB0ZXN0Lm9rKCEoJ0l0ZW1UeXBlJyBpbiBhdHRyaWJ1dGUpLCBgJHt0eXBlTmFtZX0uQXR0cmlidXRlcy4ke25hbWV9IGhhcyBubyBJdGVtVHlwZWApO1xuICAgIH0gZWxzZSBpZiAoc2NoZW1hLmlzQ29tcGxleExpc3RBdHRyaWJ1dGUoYXR0cmlidXRlKSkge1xuICAgICAgdGVzdC5vayhhdHRyaWJ1dGUuSXRlbVR5cGUsIGAke3R5cGVOYW1lfS5BdHRyaWJ1dGVzLiR7bmFtZX0gaXMgYSB2YWxpZCBMaXN0PENvbXBsZXg+IHR5cGVgKTtcbiAgICAgIGNvbnN0IGZxbiA9IGAke3R5cGVOYW1lLnNwbGl0KCcuJylbMF19LiR7YXR0cmlidXRlLkl0ZW1UeXBlfWA7XG4gICAgICBjb25zdCByZXNvbHZlZFR5cGUgPSBzcGVjaWZpY2F0aW9uLlByb3BlcnR5VHlwZXMgJiYgc3BlY2lmaWNhdGlvbi5Qcm9wZXJ0eVR5cGVzW2Zxbl07XG4gICAgICB0ZXN0Lm9rKHJlc29sdmVkVHlwZSwgYCR7dHlwZU5hbWV9LkF0dHJpYnV0ZXMuJHtuYW1lfSBJdGVtVHlwZSAoJHtmcW59KSByZXNvbHZlc2ApO1xuICAgICAgdGVzdC5vayghKCdQcmltaXRpdmVJdGVtVHlwZScgaW4gYXR0cmlidXRlKSwgYCR7dHlwZU5hbWV9LkF0dHJpYnV0ZXMuJHtuYW1lfSBoYXMgbm8gUHJpbWl0aXZlSXRlbVR5cGVgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGVzdC5vayhmYWxzZSwgYCR7dHlwZU5hbWV9LkF0dHJpYnV0ZXMuJHtuYW1lfSBoYXMgYSB2YWxpZCB0eXBlYCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIGVsZW1lbnRzIGZyb20gYSBzZXRcbiAqL1xuZnVuY3Rpb24gd2l0aG91dDxUPih4czogVFtdLCAuLi5zZXRzOiBUW11bXSkge1xuICBjb25zdCByZXQgPSBuZXcgU2V0KHhzKTtcblxuICBmb3IgKGNvbnN0IHNldCBvZiBzZXRzKSB7XG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHNldCkge1xuICAgICAgaWYgKHJldC5oYXMoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0LmRlbGV0ZShlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gQXJyYXkuZnJvbShyZXQpO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlYy12YWxpZGF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3BlYy12YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0Esd0NBQXlDO0FBQ3pDLDBDQUE0RDtBQUU1RCxTQUFnQixxQkFBcUIsQ0FBQyxJQUFVLEVBQUUsYUFBNEI7SUFDNUUscUJBQXFCLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzNDLHFCQUFxQixDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBSEQsc0RBR0M7QUFFRCxTQUFTLHFCQUFxQixDQUFDLElBQVUsRUFBRSxhQUE0QjtJQUNyRSxLQUFLLE1BQU0sUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1FBQy9ELElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLGlDQUFpQyxDQUFDLENBQUM7UUFDckQsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JFLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxRQUFRLG1EQUFtRCxDQUFDLENBQUM7U0FDM0g7UUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFBRSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FBRTtRQUM1RixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFBRSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFF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O0dBRUc7QUFDSCxTQUFTLE9BQU8sQ0FBSSxFQUFPLEVBQUUsR0FBRyxJQUFXO0lBQ3pDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXhCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1FBQ3RCLEtBQUssTUFBTSxPQUFPLElBQUksR0FBRyxFQUFFO1lBQ3pCLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDcEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyQjtTQUNGO0tBQ0Y7SUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlc3QgfSBmcm9tICdub2RldW5pdCc7XG5pbXBvcnQgc2NoZW1hID0gcmVxdWlyZSgnLi4vbGliL3NjaGVtYScpO1xuaW1wb3J0IHsgaXNSZWNvcmRUeXBlLCBTcGVjaWZpY2F0aW9uIH0gZnJvbSAnLi4vbGliL3NjaGVtYSc7XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNwZWNpZmljYXRpb24odGVzdDogVGVzdCwgc3BlY2lmaWNhdGlvbjogU3BlY2lmaWNhdGlvbikge1xuICB2YWxpZGF0ZVJlc291cmNlVHlwZXModGVzdCwgc3BlY2lmaWNhdGlvbik7XG4gIHZhbGlkYXRlUHJvcGVydHlUeXBlcyh0ZXN0LCBzcGVjaWZpY2F0aW9uKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVSZXNvdXJjZVR5cGVzKHRlc3Q6IFRlc3QsIHNwZWNpZmljYXRpb246IFNwZWNpZmljYXRpb24pIHtcbiAgZm9yIChjb25zdCB0eXBlTmFtZSBvZiBPYmplY3Qua2V5cyhzcGVjaWZpY2F0aW9uLlJlc291cmNlVHlwZXMpKSB7XG4gICAgdGVzdC5vayh0eXBlTmFtZSwgJ1Jlc291cmNlIHR5cGUgbmFtZSBpcyBub3QgZW1wdHknKTtcbiAgICBjb25zdCB0eXBlID0gc3BlY2lmaWNhdGlvbi5SZXNvdXJjZVR5cGVzW3R5cGVOYW1lXTtcbiAgICB0ZXN0Lm5vdEVxdWFsKHR5cGUuRG9jdW1lbnRhdGlvbiwgbnVsbCwgYCR7dHlwZU5hbWV9IGlzIGRvY3VtZW50ZWRgKTtcbiAgICBpZiAodHlwZS5TY3J1dGlueVR5cGUpIHtcbiAgICAgIHRlc3Qub2soc2NoZW1hLmlzUmVzb3VyY2VTY3J1dGlueVR5cGUodHlwZS5TY3J1dGlueVR5cGUpLCBgJHt0eXBlTmFtZX0uU2NydXRpbnlUeXBlIGlzIG5vdCBhIHZhbGlkIFJlc291cmNlU2NydXRpbnlUeXBlYCk7XG4gICAgfVxuICAgIGlmICh0eXBlLlByb3BlcnRpZXMpIHsgdmFsaWRhdGVQcm9wZXJ0aWVzKHR5cGVOYW1lLCB0ZXN0LCB0eXBlLlByb3BlcnRpZXMsIHNwZWNpZmljYXRpb24pOyB9XG4gICAgaWYgKHR5cGUuQXR0cmlidXRlcykgeyB2YWxpZGF0ZUF0dHJpYnV0ZXModHlwZU5hbWUsIHRlc3QsIHR5cGUuQXR0cmlidXRlcywgc3BlY2lmaWNhdGlvbik7IH1cbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnR5VHlwZXModGVzdDogVGVzdCwgc3BlY2lmaWNhdGlvbjogU3BlY2lmaWNhdGlvbikge1xuICBmb3IgKGNvbnN0IHR5cGVOYW1lIG9mIE9iamVjdC5rZXlzKHNwZWNpZmljYXRpb24uUHJvcGVydHlUeXBlcykpIHtcbiAgICB0ZXN0Lm9rKHR5cGVOYW1lLCAnUHJvcGVydHkgdHlwZSBuYW1lIGlzIG5vdCBlbXB0eScpO1xuICAgIGNvbnN0IHR5cGUgPSBzcGVjaWZpY2F0aW9uLlByb3BlcnR5VHlwZXNbdHlwZU5hbWVdO1xuICAgIGlmIChpc1JlY29yZFR5cGUodHlwZSkpIHtcbiAgICAgIHZhbGlkYXRlUHJvcGVydGllcyh0eXBlTmFtZSwgdGVzdCwgdHlwZS5Qcm9wZXJ0aWVzLCBzcGVjaWZpY2F0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsaWRhdGVQcm9wZXJ0aWVzKHR5cGVOYW1lLCB0ZXN0LCB7ICc8dGhpcz4nOiB0eXBlIH0sIHNwZWNpZmljYXRpb24pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnRpZXModHlwZU5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0OiBUZXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHsgW25hbWU6IHN0cmluZ106IHNjaGVtYS5Qcm9wZXJ0eSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljYXRpb246IFNwZWNpZmljYXRpb24pIHtcbiAgY29uc3QgZXhwZWN0ZWRLZXlzID0gWydEb2N1bWVudGF0aW9uJywgJ1JlcXVpcmVkJywgJ1VwZGF0ZVR5cGUnLCAnU2NydXRpbnlUeXBlJ107XG4gIGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhwcm9wZXJ0aWVzKSkge1xuXG4gICAgY29uc3QgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW25hbWVdO1xuICAgIHRlc3Qubm90RXF1YWwocHJvcGVydHkuRG9jdW1lbnRhdGlvbiwgJycsIGAke3R5cGVOYW1lfS5Qcm9wZXJ0aWVzLiR7bmFtZX0gaXMgZG9jdW1lbnRlZGApO1xuICAgIHRlc3Qub2soIXByb3BlcnR5LlVwZGF0ZVR5cGUgfHwgc2NoZW1hLmlzVXBkYXRlVHlwZShwcm9wZXJ0eS5VcGRhdGVUeXBlKSwgYCR7dHlwZU5hbWV9LlByb3BlcnRpZXMuJHtuYW1lfSBoYXMgdmFsaWQgVXBkYXRlVHlwZWApO1xuICAgIGlmIChwcm9wZXJ0eS5TY3J1dGlueVR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGVzdC5vayhzY2hlbWEuaXNQcm9wZXJ0eVNjcnV0aW55VHlwZShwcm9wZXJ0eS5TY3J1dGlueVR5cGUpLCBgJHt0eXBlTmFtZX0uUHJvcGVydGllcy4ke25hbWV9IGhhcyB2YWxpZCBTY3J1dGlueVR5cGVgKTtcbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hLmlzUHJpbWl0aXZlUHJvcGVydHkocHJvcGVydHkpKSB7XG4gICAgICB0ZXN0Lm9rKHNjaGVtYS5pc1ByaW1pdGl2ZVR5cGUocHJvcGVydHkuUHJpbWl0aXZlVHlwZSksIGAke3R5cGVOYW1lfS5Qcm9wZXJ0aWVzLiR7bmFtZX0gaGFzIGEgdmFsaWQgUHJpbWl0aXZlVHlwZWApO1xuICAgICAgZXhwZWN0ZWRLZXlzLnB1c2goJ1ByaW1pdGl2ZVR5cGUnKTtcblxuICAgIH0gZWxzZSBpZiAoc2NoZW1hLmlzUHJpbWl0aXZlTGlzdFByb3BlcnR5KHByb3BlcnR5KSkge1xuICAgICAgZXhwZWN0ZWRLZXlzLnB1c2goJ1R5cGUnLCAnRHVwbGljYXRlc0FsbG93ZWQnLCAnUHJpbWl0aXZlSXRlbVR5cGUnKTtcbiAgICAgIHRlc3Qub2soc2NoZW1hLmlzUHJpbWl0aXZlVHlwZShwcm9wZXJ0eS5QcmltaXRpdmVJdGVtVHlwZSksIGAke3R5cGVOYW1lfS5Qcm9wZXJ0aWVzLiR7bmFtZX0gaGFzIGEgdmFsaWQgUHJpbWl0aXZlSXRlbVR5cGVgKTtcblxuICAgIH0gZWxzZSBpZiAoc2NoZW1hLmlzUHJpbWl0aXZlTWFwUHJvcGVydHkocHJvcGVydHkpKSB7XG4gICAgICBleHBlY3RlZEtleXMucHVzaCgnVHlwZScsICdEdXBsaWNhdGVzQWxsb3dlZCcsICdQcmltaXRpdmVJdGVtVHlwZScsICdUeXBlJyk7XG4gICAgICB0ZXN0Lm9rKHNjaGVtYS5pc1ByaW1pdGl2ZVR5cGUocHJvcGVydHkuUHJpbWl0aXZlSXRlbVR5cGUpLCBgJHt0eXBlTmFtZX0uUHJvcGVydGllcy4ke25hbWV9IGhhcyBhIHZhbGlkIFByaW1pdGl2ZUl0ZW1UeXBlYCk7XG4gICAgICB0ZXN0Lm9rKCFwcm9wZXJ0eS5EdXBsaWNhdGVzQWxsb3dlZCwgYCR7dHlwZU5hbWV9LlByb3BlcnRpZXMuJHtuYW1lfSBkb2VzIG5vdCBhbGxvdyBkdXBsaWNhdGVzYCk7XG5cbiAgICB9IGVsc2UgaWYgKHNjaGVtYS5pc0NvbXBsZXhMaXN0UHJvcGVydHkocHJvcGVydHkpKSB7XG4gICAgICBleHBlY3RlZEtleXMucHVzaCgnVHlwZScsICdEdXBsaWNhdGVzQWxsb3dlZCcsICdJdGVtVHlwZScsICdUeXBlJyk7XG4gICAgICB0ZXN0Lm9rKHByb3BlcnR5Lkl0ZW1UeXBlLCBgJHt0eXBlTmFtZX0uUHJvcGVydGllcy4ke25hbWV9IGhhcyBhIHZhbGlkIEl0ZW1UeXBlYCk7XG4gICAgICBpZiAocHJvcGVydHkuSXRlbVR5cGUgIT09ICdUYWcnKSB7XG4gICAgICAgIGNvbnN0IGZxbiA9IGAke3R5cGVOYW1lLnNwbGl0KCcuJylbMF19LiR7cHJvcGVydHkuSXRlbVR5cGV9YDtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRUeXBlID0gc3BlY2lmaWNhdGlvbi5Qcm9wZXJ0eVR5cGVzICYmIHNwZWNpZmljYXRpb24uUHJvcGVydHlUeXBlc1tmcW5dO1xuICAgICAgICB0ZXN0Lm9rKHJlc29sdmVkVHlwZSwgYCR7dHlwZU5hbWV9LlByb3BlcnRpZXMuJHtuYW1lfSBJdGVtVHlwZSAoJHtmcW59KSByZXNvbHZlc2ApO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIGlmIChzY2hlbWEuaXNDb21wbGV4TWFwUHJvcGVydHkocHJvcGVydHkpKSB7XG4gICAgICBleHBlY3RlZEtleXMucHVzaCgnVHlwZScsICdEdXBsaWNhdGVzQWxsb3dlZCcsICdJdGVtVHlwZScsICdUeXBlJyk7XG4gICAgICB0ZXN0Lm9rKHByb3BlcnR5Lkl0ZW1UeXBlLCBgJHt0eXBlTmFtZX0uUHJvcGVydGllcy4ke25hbWV9IGhhcyBhIHZhbGlkIEl0ZW1UeXBlYCk7XG4gICAgICBjb25zdCBmcW4gPSBgJHt0eXBlTmFtZS5zcGxpdCgnLicpWzBdfS4ke3Byb3BlcnR5Lkl0ZW1UeXBlfWA7XG4gICAgICBjb25zdCByZXNvbHZlZFR5cGUgPSBzcGVjaWZpY2F0aW9uLlByb3BlcnR5VHlwZXMgJiYgc3BlY2lmaWNhdGlvbi5Qcm9wZXJ0eVR5cGVzW2Zxbl07XG4gICAgICB0ZXN0Lm9rKHJlc29sdmVkVHlwZSwgYCR7dHlwZU5hbWV9LlByb3BlcnRpZXMuJHtuYW1lfSBJdGVtVHlwZSAoJHtmcW59KSByZXNvbHZlc2ApO1xuICAgICAgdGVzdC5vayghcHJvcGVydHkuRHVwbGljYXRlc0FsbG93ZWQsIGAke3R5cGVOYW1lfS5Qcm9wZXJ0aWVzLiR7bmFtZX0gZG9lcyBub3QgYWxsb3cgZHVwbGljYXRlc2ApO1xuXG4gICAgfSBlbHNlIGlmIChzY2hlbWEuaXNDb21wbGV4UHJvcGVydHkocHJvcGVydHkpKSB7XG4gICAgICBleHBlY3RlZEtleXMucHVzaCgnVHlwZScpO1xuICAgICAgdGVzdC5vayhwcm9wZXJ0eS5UeXBlLCBgJHt0eXBlTmFtZX0uUHJvcGVydGllcy4ke25hbWV9IGhhcyBhIHZhbGlkIHR5cGVgKTtcbiAgICAgIGNvbnN0IGZxbiA9IGAke3R5cGVOYW1lLnNwbGl0KCcuJylbMF19LiR7cHJvcGVydHkuVHlwZX1gO1xuICAgICAgY29uc3QgcmVzb2x2ZWRUeXBlID0gc3BlY2lmaWNhdGlvbi5Qcm9wZXJ0eVR5cGVzICYmIHNwZWNpZmljYXRpb24uUHJvcGVydHlUeXBlc1tmcW5dO1xuICAgICAgdGVzdC5vayhyZXNvbHZlZFR5cGUsIGAke3R5cGVOYW1lfS5Qcm9wZXJ0aWVzLiR7bmFtZX0gdHlwZSAoJHtmcW59KSByZXNvbHZlc2ApO1xuXG4gICAgfSBlbHNlIGlmIChzY2hlbWEuaXNVbmlvblByb3BlcnR5KHByb3BlcnR5KSkge1xuICAgICAgZXhwZWN0ZWRLZXlzLnB1c2goJ1ByaW1pdGl2ZVR5cGVzJywgJ1ByaW1pdGl2ZUl0ZW1UeXBlcycsICdJdGVtVHlwZXMnLCAnVHlwZXMnKTtcbiAgICAgIGlmIChwcm9wZXJ0eS5QcmltaXRpdmVUeXBlcykge1xuICAgICAgICBmb3IgKGNvbnN0IHR5cGUgb2YgcHJvcGVydHkuUHJpbWl0aXZlVHlwZXMpIHtcbiAgICAgICAgICB0ZXN0Lm9rKHNjaGVtYS5pc1ByaW1pdGl2ZVR5cGUodHlwZSksIGAke3R5cGVOYW1lfS5Qcm9wZXJ0aWVzLiR7bmFtZX0gaGFzIG9ubHkgdmFsaWQgUHJpbWl0aXZlVHlwZXNgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHByb3BlcnR5Lkl0ZW1UeXBlcykge1xuICAgICAgICBmb3IgKGNvbnN0IHR5cGUgb2YgcHJvcGVydHkuSXRlbVR5cGVzKSB7XG4gICAgICAgICAgY29uc3QgZnFuID0gYCR7dHlwZU5hbWUuc3BsaXQoJy4nKVswXX0uJHt0eXBlfWA7XG4gICAgICAgICAgY29uc3QgcmVzb2x2ZWRUeXBlID0gc3BlY2lmaWNhdGlvbi5Qcm9wZXJ0eVR5cGVzICYmIHNwZWNpZmljYXRpb24uUHJvcGVydHlUeXBlc1tmcW5dO1xuICAgICAgICAgIHRlc3Qub2socmVzb2x2ZWRUeXBlLCBgJHt0eXBlTmFtZX0uUHJvcGVydGllcy4ke25hbWV9IHR5cGUgKCR7ZnFufSkgcmVzb2x2ZXNgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHByb3BlcnR5LlR5cGVzKSB7XG4gICAgICAgIGZvciAoY29uc3QgdHlwZSBvZiBwcm9wZXJ0eS5UeXBlcykge1xuICAgICAgICAgIGNvbnN0IGZxbiA9IGAke3R5cGVOYW1lLnNwbGl0KCcuJylbMF19LiR7dHlwZX1gO1xuICAgICAgICAgIGNvbnN0IHJlc29sdmVkVHlwZSA9IHNwZWNpZmljYXRpb24uUHJvcGVydHlUeXBlcyAmJiBzcGVjaWZpY2F0aW9uLlByb3BlcnR5VHlwZXNbZnFuXTtcbiAgICAgICAgICB0ZXN0Lm9rKHJlc29sdmVkVHlwZSwgYCR7dHlwZU5hbWV9LlByb3BlcnRpZXMuJHtuYW1lfSB0eXBlICgke2Zxbn0pIHJlc29sdmVzYCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICB0ZXN0Lm9rKGZhbHNlLCBgJHt0eXBlTmFtZX0uUHJvcGVydGllcy4ke25hbWV9IGhhcyBrbm93biB0eXBlYCk7XG4gICAgfVxuXG4gICAgdGVzdC5kZWVwRXF1YWwoXG4gICAgICAgIHdpdGhvdXQoT2JqZWN0LmtleXMocHJvcGVydHkpLCBleHBlY3RlZEtleXMpLCBbXSxcbiAgICAgICAgYCR7dHlwZU5hbWV9LlByb3BlcnRpZXMuJHtuYW1lfSBoYXMgbm8gZXh0cmEgcHJvcGVydGllc2ApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlQXR0cmlidXRlcyh0eXBlTmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Q6IFRlc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczogeyBbbmFtZTogc3RyaW5nXTogc2NoZW1hLkF0dHJpYnV0ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljYXRpb246IFNwZWNpZmljYXRpb24pIHtcbiAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpKSB7XG4gICAgY29uc3QgYXR0cmlidXRlID0gYXR0cmlidXRlc1tuYW1lXTtcbiAgICB0ZXN0Lm9rKCgnVHlwZScgaW4gYXR0cmlidXRlKSAhPT0gKCdQcmltaXRpdmVUeXBlJyBpbiBhdHRyaWJ1dGUpKTtcbiAgICBpZiAoc2NoZW1hLmlzUHJpbWl0aXZlQXR0cmlidXRlKGF0dHJpYnV0ZSkpIHtcbiAgICAgIHRlc3Qub2soIXNjaGVtYS5pc0xpc3RBdHRyaWJ1dGUoYXR0cmlidXRlKSwgYCR7dHlwZU5hbWV9LkF0dHJpYnV0ZXMuJHtuYW1lfSBpcyBvbmx5IGEgUHJpbWl0aXZlIHR5cGVgKTtcbiAgICAgIHRlc3Qub2soc2NoZW1hLmlzUHJpbWl0aXZlVHlwZShhdHRyaWJ1dGUuUHJpbWl0aXZlVHlwZSksIGAke3R5cGVOYW1lfS5BdHRyaWJ1dGVzLiR7bmFtZX0gaGFzIGEgdmFsaWQgUHJpbWl0aXZlVHlwZWApO1xuICAgICAgdGVzdC5vayghKCdQcmltaXRpdmVJdGVtVHlwZScgaW4gYXR0cmlidXRlKSwgYCR7dHlwZU5hbWV9LkF0dHJpYnV0ZXMuJHtuYW1lfSBoYXMgbm8gUHJpbWl0aXZlSXRlbVR5cGVgKTtcbiAgICAgIHRlc3Qub2soISgnSXRlbVR5cGUnIGluIGF0dHJpYnV0ZSksIGAke3R5cGVOYW1lfS5BdHRyaWJ1dGVzLiR7bmFtZX0gaGFzIG5vIEl0ZW1UeXBlYCk7XG4gICAgfSBlbHNlIGlmIChzY2hlbWEuaXNQcmltaXRpdmVMaXN0QXR0cmlidXRlKGF0dHJpYnV0ZSkpIHtcbiAgICAgIHRlc3Qub2soIXNjaGVtYS5pc0NvbXBsZXhMaXN0QXR0cmlidXRlKGF0dHJpYnV0ZSksIGAke3R5cGVOYW1lfS5BdHRyaWJ1dGVzLiR7bmFtZX0gaXMgb25seSBhIExpc3Q8UHJpbWl0aXZlPiB0eXBlYCk7XG4gICAgICB0ZXN0Lm9rKHNjaGVtYS5pc1ByaW1pdGl2ZVR5cGUoYXR0cmlidXRlLlByaW1pdGl2ZUl0ZW1UeXBlKSwgYCR7dHlwZU5hbWV9LkF0dHJpYnV0ZXMuJHtuYW1lfSBoYXMgYSB2YWxpZCBQcmltaXRpdmVJdGVtVHlwZWApO1xuICAgICAgdGVzdC5vayghKCdJdGVtVHlwZScgaW4gYXR0cmlidXRlKSwgYCR7dHlwZU5hbWV9LkF0dHJpYnV0ZXMuJHtuYW1lfSBoYXMgbm8gSXRlbVR5cGVgKTtcbiAgICB9IGVsc2UgaWYgKHNjaGVtYS5pc0NvbXBsZXhMaXN0QXR0cmlidXRlKGF0dHJpYnV0ZSkpIHtcbiAgICAgIHRlc3Qub2soYXR0cmlidXRlLkl0ZW1UeXBlLCBgJHt0eXBlTmFtZX0uQXR0cmlidXRlcy4ke25hbWV9IGlzIGEgdmFsaWQgTGlzdDxDb21wbGV4PiB0eXBlYCk7XG4gICAgICBjb25zdCBmcW4gPSBgJHt0eXBlTmFtZS5zcGxpdCgnLicpWzBdfS4ke2F0dHJpYnV0ZS5JdGVtVHlwZX1gO1xuICAgICAgY29uc3QgcmVzb2x2ZWRUeXBlID0gc3BlY2lmaWNhdGlvbi5Qcm9wZXJ0eVR5cGVzICYmIHNwZWNpZmljYXRpb24uUHJvcGVydHlUeXBlc1tmcW5dO1xuICAgICAgdGVzdC5vayhyZXNvbHZlZFR5cGUsIGAke3R5cGVOYW1lfS5BdHRyaWJ1dGVzLiR7bmFtZX0gSXRlbVR5cGUgKCR7ZnFufSkgcmVzb2x2ZXNgKTtcbiAgICAgIHRlc3Qub2soISgnUHJpbWl0aXZlSXRlbVR5cGUnIGluIGF0dHJpYnV0ZSksIGAke3R5cGVOYW1lfS5BdHRyaWJ1dGVzLiR7bmFtZX0gaGFzIG5vIFByaW1pdGl2ZUl0ZW1UeXBlYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRlc3Qub2soZmFsc2UsIGAke3R5cGVOYW1lfS5BdHRyaWJ1dGVzLiR7bmFtZX0gaGFzIGEgdmFsaWQgdHlwZWApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZSBlbGVtZW50cyBmcm9tIGEgc2V0XG4gKi9cbmZ1bmN0aW9uIHdpdGhvdXQ8VD4oeHM6IFRbXSwgLi4uc2V0czogVFtdW10pIHtcbiAgY29uc3QgcmV0ID0gbmV3IFNldCh4cyk7XG5cbiAgZm9yIChjb25zdCBzZXQgb2Ygc2V0cykge1xuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBzZXQpIHtcbiAgICAgIGlmIChyZXQuaGFzKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldC5kZWxldGUoZWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIEFycmF5LmZyb20ocmV0KTtcbn1cbiJdfQ==

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc