@aws-cdk/aws-bedrock-agentcore-alpha 2.241.0-alpha.0 → 2.243.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +395 -318
- package/.jsii.tabl.json.gz +0 -0
- package/lib/gateway/gateway-base.js +1 -1
- package/lib/gateway/gateway.js +10 -9
- package/lib/gateway/inbound-auth/authorizer.js +6 -6
- package/lib/gateway/inbound-auth/custom-claim.js +7 -7
- package/lib/gateway/interceptor.js +1 -1
- package/lib/gateway/outbound-auth/api-key.js +1 -1
- package/lib/gateway/outbound-auth/credential-provider.js +1 -1
- package/lib/gateway/protocol.js +2 -2
- package/lib/gateway/targets/schema/api-schema.js +7 -17
- package/lib/gateway/targets/schema/tool-schema.js +8 -18
- package/lib/gateway/targets/target-base.js +1 -1
- package/lib/gateway/targets/target-configuration.js +27 -26
- package/lib/gateway/targets/target.js +5 -4
- package/lib/gateway/validation-helpers.d.ts +0 -4
- package/lib/gateway/validation-helpers.js +1 -13
- package/lib/memory/memory-strategy.js +1 -1
- package/lib/memory/memory.js +2 -2
- package/lib/memory/strategies/managed-strategy.js +1 -1
- package/lib/memory/strategies/self-managed-strategy.js +1 -1
- package/lib/network/network-configuration.js +4 -4
- package/lib/runtime/inbound-auth/custom-claim.js +7 -7
- package/lib/runtime/inbound-auth/runtime-authorizer-configuration.js +5 -5
- package/lib/runtime/runtime-artifact.js +6 -6
- package/lib/runtime/runtime-base.js +4 -4
- package/lib/runtime/runtime-endpoint-base.js +1 -1
- package/lib/runtime/runtime-endpoint.js +10 -9
- package/lib/runtime/runtime.js +23 -22
- package/lib/runtime/validation-helpers.d.ts +0 -6
- package/lib/runtime/validation-helpers.js +3 -13
- package/lib/tools/browser.js +2 -2
- package/lib/tools/code-interpreter.js +2 -2
- package/lib/tools/validation-helpers.d.ts +0 -6
- package/lib/tools/validation-helpers.js +3 -13
- package/package.json +10 -10
|
@@ -40,6 +40,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
40
40
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
41
41
|
const bedrockagentcore = require("aws-cdk-lib/aws-bedrockagentcore");
|
|
42
42
|
const iam = require("aws-cdk-lib/aws-iam");
|
|
43
|
+
const errors_1 = require("aws-cdk-lib/core/lib/errors");
|
|
43
44
|
const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
|
|
44
45
|
const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
|
|
45
46
|
const perms_1 = require("../perms");
|
|
@@ -78,7 +79,7 @@ let GatewayTarget = (() => {
|
|
|
78
79
|
GatewayTarget = _classThis = _classDescriptor.value;
|
|
79
80
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
80
81
|
}
|
|
81
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayTarget", version: "2.
|
|
82
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayTarget", version: "2.243.0-alpha.0" };
|
|
82
83
|
/** Uniquely identifies this class. */
|
|
83
84
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-bedrock-agentcore-alpha.GatewayTarget';
|
|
84
85
|
/**
|
|
@@ -463,7 +464,7 @@ let GatewayTarget = (() => {
|
|
|
463
464
|
const patternErrors = (0, validation_helpers_1.validateFieldPattern)(gatewayTargetName, 'Gateway target name', /^([0-9a-zA-Z][-]?){1,100}$/, 'Gateway target name must contain only alphanumeric characters and hyphens, with hyphens only between characters');
|
|
464
465
|
const allErrors = [...lengthErrors, ...patternErrors];
|
|
465
466
|
if (allErrors.length > 0) {
|
|
466
|
-
throw new
|
|
467
|
+
throw new errors_1.ValidationError(allErrors.join('\n'), this);
|
|
467
468
|
}
|
|
468
469
|
}
|
|
469
470
|
/**
|
|
@@ -483,7 +484,7 @@ let GatewayTarget = (() => {
|
|
|
483
484
|
maxLength: 200,
|
|
484
485
|
});
|
|
485
486
|
if (errors.length > 0) {
|
|
486
|
-
throw new
|
|
487
|
+
throw new errors_1.ValidationError(errors.join('\n'), this);
|
|
487
488
|
}
|
|
488
489
|
}
|
|
489
490
|
static {
|
|
@@ -493,4 +494,4 @@ let GatewayTarget = (() => {
|
|
|
493
494
|
return GatewayTarget = _classThis;
|
|
494
495
|
})();
|
|
495
496
|
exports.GatewayTarget = GatewayTarget;
|
|
496
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGFyZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUFpRDtBQUVqRCxxRUFBcUU7QUFDckUsMkNBQTJDO0FBRTNDLDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFHMUUsb0NBQThDO0FBSTlDLCtDQUE0RjtBQUU1RixpRUFBdUw7QUFFdkwsOEVBQWlGO0FBQ2pGLDhEQUFtRztBQWtQbkc7OytFQUUrRTtBQUUvRTs7Ozs7Ozs7O0dBU0c7SUFFVSxhQUFhOzRCQUR6QixvQ0FBa0I7Ozs7c0JBQ2dCLCtCQUFpQjs7OzZCQUF6QixTQUFRLFdBQWlCOzs7O3FDQWlVakQsSUFBQSxrQ0FBYyxHQUFFO1lBQ2pCLDhLQUFPLFNBQVMsNkRBTWY7WUF4VUgsNktBOGFDOzs7OztRQTdhQyxzQ0FBc0M7UUFDL0IsTUFBTSxDQUFVLHFCQUFxQixHQUFXLG9EQUFvRCxDQUFDO1FBQzVHOzs7Ozs7OztXQVFHO1FBQ0ksTUFBTSxDQUFDLDJCQUEyQixDQUN2QyxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBOEI7Ozs7Ozs7Ozs7WUFFOUIsTUFBTSxxQkFBc0IsU0FBUSwrQkFBaUI7Z0JBQ25DLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO2dCQUM1QixRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztnQkFDMUIsSUFBSSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztnQkFDL0IsV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQzNCLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO2dCQUN4QixnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7Z0JBQ3RDLGtCQUFrQixHQUFHLHVDQUF5QixDQUFDLEdBQUcsQ0FBQztnQkFDbkQsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQ3RCLGFBQWEsR0FB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QUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBQSx3Q0FBbUIsRUFBQztnQkFDakMsS0FBSyxFQUFFLFdBQVc7Z0JBQ2xCLFNBQVMsRUFBRSw0QkFBNEI7Z0JBQ3ZDLFNBQVMsRUFBRSxDQUFDO2dCQUNaLFNBQVMsRUFBRSxHQUFHO2FBQ2YsQ0FBQyxDQUFDO1lBRUgsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN0QixNQUFNLElBQUksb0NBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDL0MsQ0FBQztTQUNGOztZQTdhVSx1REFBYTs7Ozs7QUFBYixzQ0FBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhenksIFRva2VuLCBOYW1lcyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB0eXBlIHsgSVJlc3RBcGkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheSc7XG5pbXBvcnQgKiBhcyBiZWRyb2NrYWdlbnRjb3JlIGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB0eXBlIHsgSUZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgSUdhdGV3YXkgfSBmcm9tICcuLi9nYXRld2F5LWJhc2UnO1xuaW1wb3J0IHsgR0FURVdBWV9TWU5DX1BFUk1TIH0gZnJvbSAnLi4vcGVybXMnO1xuaW1wb3J0IHR5cGUgeyBBcGlTY2hlbWEgfSBmcm9tICcuL3NjaGVtYS9hcGktc2NoZW1hJztcbmltcG9ydCB0eXBlIHsgVG9vbFNjaGVtYSB9IGZyb20gJy4vc2NoZW1hL3Rvb2wtc2NoZW1hJztcbmltcG9ydCB0eXBlIHsgSUdhdGV3YXlUYXJnZXQsIElNY3BHYXRld2F5VGFyZ2V0IH0gZnJvbSAnLi90YXJnZXQtYmFzZSc7XG5pbXBvcnQgeyBHYXRld2F5VGFyZ2V0QmFzZSwgR2F0ZXdheVRhcmdldFByb3RvY29sVHlwZSwgTWNwVGFyZ2V0VHlwZSB9IGZyb20gJy4vdGFyZ2V0LWJhc2UnO1xuaW1wb3J0IHR5cGUgeyBBcGlHYXRld2F5VG9vbENvbmZpZ3VyYXRpb24sIElUYXJnZXRDb25maWd1cmF0aW9uLCBNZXRhZGF0YUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3RhcmdldC1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IEFwaUdhdGV3YXlUYXJnZXRDb25maWd1cmF0aW9uLCBMYW1iZGFUYXJnZXRDb25maWd1cmF0aW9uLCBNY3BTZXJ2ZXJUYXJnZXRDb25maWd1cmF0aW9uLCBPcGVuQXBpVGFyZ2V0Q29uZmlndXJhdGlvbiwgU21pdGh5VGFyZ2V0Q29uZmlndXJhdGlvbiB9IGZyb20gJy4vdGFyZ2V0LWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnIH0gZnJvbSAnLi4vb3V0Ym91bmQtYXV0aC9jcmVkZW50aWFsLXByb3ZpZGVyJztcbmltcG9ydCB7IEdhdGV3YXlDcmVkZW50aWFsUHJvdmlkZXIgfSBmcm9tICcuLi9vdXRib3VuZC1hdXRoL2NyZWRlbnRpYWwtcHJvdmlkZXInO1xuaW1wb3J0IHsgdmFsaWRhdGVTdHJpbmdGaWVsZCwgdmFsaWRhdGVGaWVsZFBhdHRlcm4sIFZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4uL3ZhbGlkYXRpb24taGVscGVycyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9wc1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIENvbW1vbiBwcm9wZXJ0aWVzIGZvciBhbGwgR2F0ZXdheSBUYXJnZXQgdHlwZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5VGFyZ2V0Q29tbW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIFRoZSBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgZ2F0ZXdheVxuICAgKiBQYXR0ZXJuOiBeKFswLTlhLXpBLVpdWy1dPyl7MSwxMDB9JFxuICAgKiBAZGVmYXVsdCAtIGF1dG8gZ2VuZXJhdGVcbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXlUYXJnZXROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIFRoZSBkZXNjcmlwdGlvbiBjYW4gaGF2ZSB1cCB0byAyMDAgY2hhcmFjdGVyc1xuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIEdhdGV3YXkgVGFyZ2V0IHJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheVRhcmdldFByb3BzIGV4dGVuZHMgR2F0ZXdheVRhcmdldENvbW1vblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHRoaXMgdGFyZ2V0IGJlbG9uZ3MgdG9cbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXk6IElHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IGNvbmZpZ3VyYXRpb24gKExhbWJkYSwgT3BlbkFQSSwgb3IgU21pdGh5KVxuICAgKiBVc2Ugb25lIG9mIHRoZSBjb25maWd1cmF0aW9uIGhlbHBlciBjbGFzc2VzOlxuICAgKiAtIExhbWJkYVRhcmdldENvbmZpZ3VyYXRpb24uY3JlYXRlKClcbiAgICogLSBPcGVuQXBpVGFyZ2V0Q29uZmlndXJhdGlvbi5jcmVhdGUoKVxuICAgKiAtIFNtaXRoeVRhcmdldENvbmZpZ3VyYXRpb24uY3JlYXRlKClcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldENvbmZpZ3VyYXRpb246IElUYXJnZXRDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgYXV0aGVudGljYXRpb25cbiAgICogQGRlZmF1bHQgLSBbR2F0ZXdheUNyZWRlbnRpYWxQcm92aWRlci5mcm9tSWFtUm9sZSgpXVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM/OiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBMYW1iZGEtYmFzZWQgR2F0ZXdheSBUYXJnZXRcbiAqIENvbnZlbmllbmNlIGludGVyZmFjZSBmb3IgdGhlIG1vc3QgY29tbW9uIHVzZSBjYXNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheVRhcmdldExhbWJkYVByb3BzIGV4dGVuZHMgR2F0ZXdheVRhcmdldENvbW1vblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHRoaXMgdGFyZ2V0IGJlbG9uZ3MgdG9cbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXk6IElHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBUaGUgTGFtYmRhIGZ1bmN0aW9uIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgdGFyZ2V0XG4gICAqL1xuICByZWFkb25seSBsYW1iZGFGdW5jdGlvbjogSUZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgdG9vbCBzY2hlbWEgZGVmaW5pbmcgdGhlIGF2YWlsYWJsZSB0b29sc1xuICAgKi9cbiAgcmVhZG9ubHkgdG9vbFNjaGVtYTogVG9vbFNjaGVtYTtcblxuICAvKipcbiAgICogQ3JlZGVudGlhbCBwcm92aWRlcnMgZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqIExhbWJkYSB0YXJnZXRzIG9ubHkgc3VwcG9ydCBJQU0gcm9sZSBhdXRoZW50aWNhdGlvblxuICAgKiBAZGVmYXVsdCAtIFtHYXRld2F5Q3JlZGVudGlhbFByb3ZpZGVyLmZyb21JYW1Sb2xlKCldXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucz86IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhbiBPcGVuQVBJLWJhc2VkIEdhdGV3YXkgVGFyZ2V0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheVRhcmdldE9wZW5BcGlQcm9wcyBleHRlbmRzIEdhdGV3YXlUYXJnZXRDb21tb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSB0aGlzIHRhcmdldCBiZWxvbmdzIHRvXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5OiBJR2F0ZXdheTtcblxuICAvKipcbiAgICogVGhlIE9wZW5BUEkgc2NoZW1hIGRlZmluaW5nIHRoZSBBUElcbiAgICovXG4gIHJlYWRvbmx5IGFwaVNjaGVtYTogQXBpU2NoZW1hO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHZhbGlkYXRlIHRoZSBPcGVuQVBJIHNjaGVtYSAob25seSBhcHBsaWVzIHRvIGlubGluZSBzY2hlbWFzKVxuICAgKiBOb3RlOiBWYWxpZGF0aW9uIGlzIG9ubHkgcGVyZm9ybWVkIGZvciBpbmxpbmUgc2NoZW1hcyBkdXJpbmcgQ0RLIHN5bnRoZXNpcy5cbiAgICogUzMgYW5kIGFzc2V0LWJhc2VkIHNjaGVtYXMgY2Fubm90IGJlIHZhbGlkYXRlZCBhdCBzeW50aGVzaXMgdGltZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGVPcGVuQXBpU2NoZW1hPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ3JlZGVudGlhbCBwcm92aWRlcnMgZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqIE9wZW5BUEkgdGFyZ2V0cyBzdXBwb3J0IEFQSSBrZXkgYW5kIE9BdXRoIGF1dGhlbnRpY2F0aW9uIChub3QgSUFNKVxuICAgKiBAZGVmYXVsdCAtIElmIG5vdCBwcm92aWRlZCwgZGVmYXVsdHMgdG8gSUFNIHJvbGUgd2hpY2ggd2lsbCBmYWlsIGF0IHJ1bnRpbWVcbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zPzogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgU21pdGh5LWJhc2VkIEdhdGV3YXkgVGFyZ2V0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheVRhcmdldFNtaXRoeVByb3BzIGV4dGVuZHMgR2F0ZXdheVRhcmdldENvbW1vblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHRoaXMgdGFyZ2V0IGJlbG9uZ3MgdG9cbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXk6IElHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBUaGUgU21pdGh5IG1vZGVsIGRlZmluaW5nIHRoZSBBUElcbiAgICovXG4gIHJlYWRvbmx5IHNtaXRoeU1vZGVsOiBBcGlTY2hlbWE7XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWwgcHJvdmlkZXJzIGZvciBhdXRoZW50aWNhdGlvblxuICAgKiBTbWl0aHkgdGFyZ2V0cyBvbmx5IHN1cHBvcnQgSUFNIHJvbGUgYXV0aGVudGljYXRpb25cbiAgICogQGRlZmF1bHQgLSBbR2F0ZXdheUNyZWRlbnRpYWxQcm92aWRlci5mcm9tSWFtUm9sZSgpXVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM/OiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYW4gTUNQIFNlcnZlci1iYXNlZCBHYXRld2F5IFRhcmdldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlUYXJnZXRNY3BTZXJ2ZXJQcm9wcyBleHRlbmRzIEdhdGV3YXlUYXJnZXRDb21tb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSB0aGlzIHRhcmdldCBiZWxvbmdzIHRvXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5OiBJR2F0ZXdheTtcblxuICAvKipcbiAgICogVGhlIEhUVFBTIGVuZHBvaW50IFVSTCBvZiB0aGUgTUNQIHNlcnZlclxuICAgKlxuICAgKiBUaGUgZW5kcG9pbnQgbXVzdDpcbiAgICogLSBVc2UgSFRUUFMgcHJvdG9jb2xcbiAgICogLSBCZSBwcm9wZXJseSBVUkwtZW5jb2RlZFxuICAgKiAtIFBvaW50IHRvIGFuIE1DUCBzZXJ2ZXIgdGhhdCBpbXBsZW1lbnRzIHRvb2wgY2FwYWJpbGl0aWVzXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgYXV0aGVudGljYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zOiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYW4gQVBJIEdhdGV3YXktYmFzZWQgR2F0ZXdheSBUYXJnZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5VGFyZ2V0QXBpR2F0ZXdheVByb3BzIGV4dGVuZHMgR2F0ZXdheVRhcmdldENvbW1vblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHRoaXMgdGFyZ2V0IGJlbG9uZ3MgdG9cbiAgICogW2Rpc2FibGUtYXdzbGludDpwcmVmZXItcmVmLWludGVyZmFjZV1cbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXk6IElHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBUaGUgUkVTVCBBUEkgdG8gaW50ZWdyYXRlIHdpdGhcbiAgICogTXVzdCBiZSBpbiB0aGUgc2FtZSBhY2NvdW50IGFuZCByZWdpb24gYXMgdGhlIGdhdGV3YXlcbiAgICogW2Rpc2FibGUtYXdzbGludDpwcmVmZXItcmVmLWludGVyZmFjZV1cbiAgICovXG4gIHJlYWRvbmx5IHJlc3RBcGk6IElSZXN0QXBpO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhZ2UgbmFtZSBvZiB0aGUgUkVTVCBBUElcbiAgICogQGRlZmF1bHQgLSBVc2VzIHRoZSBkZXBsb3ltZW50IHN0YWdlIGZyb20gdGhlIFJlc3RBcGkgKHJlc3RBcGkuZGVwbG95bWVudFN0YWdlLnN0YWdlTmFtZSlcbiAgICovXG4gIHJlYWRvbmx5IHN0YWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUb29sIGNvbmZpZ3VyYXRpb24gZGVmaW5pbmcgd2hpY2ggb3BlcmF0aW9ucyB0byBleHBvc2VcbiAgICovXG4gIHJlYWRvbmx5IGFwaUdhdGV3YXlUb29sQ29uZmlndXJhdGlvbjogQXBpR2F0ZXdheVRvb2xDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgYXV0aGVudGljYXRpb25cbiAgICogQVBJIEdhdGV3YXkgdGFyZ2V0cyBzdXBwb3J0IElBTSBhbmQgQVBJIGtleSBhdXRoZW50aWNhdGlvblxuICAgKiBAZGVmYXVsdCAtIEVtcHR5IGFycmF5IChzZXJ2aWNlIGhhbmRsZXMgSUFNIGF1dG9tYXRpY2FsbHkpXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucz86IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXTtcblxuICAvKipcbiAgICogTWV0YWRhdGEgY29uZmlndXJhdGlvbiBmb3IgcGFzc2luZyBoZWFkZXJzIGFuZCBxdWVyeSBwYXJhbWV0ZXJzXG4gICAqIEFsbG93cyB5b3UgdG8gcGFzcyBhZGRpdGlvbmFsIGNvbnRleHQgdGhyb3VnaCBoZWFkZXJzIGFuZCBxdWVyeSBwYXJhbWV0ZXJzXG4gICAqIEBkZWZhdWx0IC0gTm8gbWV0YWRhdGEgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGFDb25maWd1cmF0aW9uPzogTWV0YWRhdGFDb25maWd1cmF0aW9uO1xufVxuXG4vKipcbiAqIEF0dHJpYnV0ZXMgZm9yIGltcG9ydGluZyBhbiBleGlzdGluZyBHYXRld2F5IFRhcmdldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlUYXJnZXRBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqL1xuICByZWFkb25seSB0YXJnZXRBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqL1xuICByZWFkb25seSBnYXRld2F5VGFyZ2V0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSB0aGlzIHRhcmdldCBiZWxvbmdzIHRvXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5OiBJR2F0ZXdheTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgc3RhdHVzIG9mIHRoZSB0YXJnZXRcbiAgICogQGRlZmF1bHQgLSBObyBzdGF0dXNcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgY3JlYXRpb24gdGltZXN0YW1wXG4gICAqIEBkZWZhdWx0IC0gTm8gY3JlYXRpb24gdGltZXN0YW1wXG4gICAqL1xuICByZWFkb25seSBjcmVhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGxhc3QgdXBkYXRlIHRpbWVzdGFtcFxuICAgKiBAZGVmYXVsdCAtIE5vIHVwZGF0ZSB0aW1lc3RhbXBcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZWRBdD86IHN0cmluZztcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICpcbiAqIERlZmluZXMgdG9vbHMgdGhhdCB5b3VyIGdhdGV3YXkgd2lsbCBob3N0LiBTdXBwb3J0cyBtdWx0aXBsZSB0YXJnZXQgdHlwZXM6XG4gKiAtIExhbWJkYTogV3JhcHMgYSBMYW1iZGEgZnVuY3Rpb24gYXMgTUNQIHRvb2xzXG4gKiAtIE9wZW5BUEk6IEV4cG9zZXMgYW4gT3BlbkFQSS9SRVNUIEFQSSBhcyBNQ1AgdG9vbHNcbiAqIC0gU21pdGh5OiBFeHBvc2VzIGEgU21pdGh5LW1vZGVsZWQgQVBJIGFzIE1DUCB0b29sc1xuICpcbiAqIEByZXNvdXJjZSBBV1M6OkJlZHJvY2tBZ2VudENvcmU6OkdhdGV3YXlUYXJnZXRcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlL2xhdGVzdC9kZXZndWlkZS9nYXRld2F5LWJ1aWxkaW5nLWFkZGluZy10YXJnZXRzLmh0bWxcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIEdhdGV3YXlUYXJnZXQgZXh0ZW5kcyBHYXRld2F5VGFyZ2V0QmFzZSBpbXBsZW1lbnRzIElNY3BHYXRld2F5VGFyZ2V0IHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtYmVkcm9jay1hZ2VudGNvcmUtYWxwaGEuR2F0ZXdheVRhcmdldCc7XG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgR2F0ZXdheSBUYXJnZXQgdXNpbmcgaXRzIGF0dHJpYnV0ZXNcbiAgICogVGhpcyBhbGxvd3MgeW91IHRvIHJlZmVyZW5jZSBhIEdhdGV3YXkgVGFyZ2V0IHRoYXQgd2FzIGNyZWF0ZWQgb3V0c2lkZSBvZiBDREtcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIGF0dHJzIFRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBleGlzdGluZyBHYXRld2F5IFRhcmdldFxuICAgKiBAcmV0dXJucyBBbiBJR2F0ZXdheVRhcmdldCBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhlIGltcG9ydGVkIHRhcmdldFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tR2F0ZXdheVRhcmdldEF0dHJpYnV0ZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGF0dHJzOiBHYXRld2F5VGFyZ2V0QXR0cmlidXRlcyxcbiAgKTogSUdhdGV3YXlUYXJnZXQge1xuICAgIGNsYXNzIEltcG9ydGVkR2F0ZXdheVRhcmdldCBleHRlbmRzIEdhdGV3YXlUYXJnZXRCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YXJnZXRBcm4gPSBhdHRycy50YXJnZXRBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0SWQgPSBhdHRycy50YXJnZXRJZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBuYW1lID0gYXR0cnMuZ2F0ZXdheVRhcmdldE5hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb24gPSBhdHRycy5zdGF0dXM7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZ2F0ZXdheSA9IGF0dHJzLmdhdGV3YXk7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMgPSBbXTtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YXJnZXRQcm90b2NvbFR5cGUgPSBHYXRld2F5VGFyZ2V0UHJvdG9jb2xUeXBlLk1DUDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBzdGF0dXMgPSBhdHRycy5zdGF0dXM7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzUmVhc29ucyA9IHVuZGVmaW5lZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBjcmVhdGVkQXQgPSBhdHRycy5jcmVhdGVkQXQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRlZEF0ID0gYXR0cnMudXBkYXRlZEF0O1xuXG4gICAgICBjb25zdHJ1Y3RvcihzOiBDb25zdHJ1Y3QsIGk6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzLCBpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZEdhdGV3YXlUYXJnZXQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBMYW1iZGEtYmFzZWQgTUNQIHRhcmdldFxuICAgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGNyZWF0aW5nIGEgdGFyZ2V0IHRoYXQgd3JhcHMgYSBMYW1iZGEgZnVuY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIHByb3BzIFRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgTGFtYmRhIHRhcmdldFxuICAgKiBAcmV0dXJucyBBIG5ldyBHYXRld2F5VGFyZ2V0IGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZvckxhbWJkYShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEdhdGV3YXlUYXJnZXRMYW1iZGFQcm9wcyxcbiAgKTogR2F0ZXdheVRhcmdldCB7XG4gICAgcmV0dXJuIG5ldyBHYXRld2F5VGFyZ2V0KHNjb3BlLCBpZCwge1xuICAgICAgZ2F0ZXdheTogcHJvcHMuZ2F0ZXdheSxcbiAgICAgIGdhdGV3YXlUYXJnZXROYW1lOiBwcm9wcy5nYXRld2F5VGFyZ2V0TmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zOiBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyxcbiAgICAgIHRhcmdldENvbmZpZ3VyYXRpb246IExhbWJkYVRhcmdldENvbmZpZ3VyYXRpb24uY3JlYXRlKFxuICAgICAgICBwcm9wcy5sYW1iZGFGdW5jdGlvbixcbiAgICAgICAgcHJvcHMudG9vbFNjaGVtYSxcbiAgICAgICksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIE9wZW5BUEktYmFzZWQgTUNQIHRhcmdldFxuICAgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGNyZWF0aW5nIGEgdGFyZ2V0IHRoYXQgZXhwb3NlcyBhbiBPcGVuQVBJL1JFU1QgQVBJXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcGVydGllcyBmb3IgdGhlIE9wZW5BUEkgdGFyZ2V0XG4gICAqIEByZXR1cm5zIEEgbmV3IEdhdGV3YXlUYXJnZXQgaW5zdGFuY2VcbiAgICpcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZm9yT3BlbkFwaShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEdhdGV3YXlUYXJnZXRPcGVuQXBpUHJvcHMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIHJldHVybiBuZXcgR2F0ZXdheVRhcmdldChzY29wZSwgaWQsIHtcbiAgICAgIGdhdGV3YXk6IHByb3BzLmdhdGV3YXksXG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMsXG4gICAgICB0YXJnZXRDb25maWd1cmF0aW9uOiBPcGVuQXBpVGFyZ2V0Q29uZmlndXJhdGlvbi5jcmVhdGUocHJvcHMuYXBpU2NoZW1hLCBwcm9wcy52YWxpZGF0ZU9wZW5BcGlTY2hlbWEpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIFNtaXRoeS1iYXNlZCBNQ1AgdGFyZ2V0XG4gICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgY3JlYXRpbmcgYSB0YXJnZXQgdGhhdCBleHBvc2VzIGEgU21pdGh5LW1vZGVsZWQgQVBJXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcGVydGllcyBmb3IgdGhlIFNtaXRoeSB0YXJnZXRcbiAgICogQHJldHVybnMgQSBuZXcgR2F0ZXdheVRhcmdldCBpbnN0YW5jZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmb3JTbWl0aHkoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBHYXRld2F5VGFyZ2V0U21pdGh5UHJvcHMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIHJldHVybiBuZXcgR2F0ZXdheVRhcmdldChzY29wZSwgaWQsIHtcbiAgICAgIGdhdGV3YXk6IHByb3BzLmdhdGV3YXksXG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMsXG4gICAgICB0YXJnZXRDb25maWd1cmF0aW9uOiBTbWl0aHlUYXJnZXRDb25maWd1cmF0aW9uLmNyZWF0ZShwcm9wcy5zbWl0aHlNb2RlbCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIE1DUCBTZXJ2ZXItYmFzZWQgdGFyZ2V0XG4gICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgY3JlYXRpbmcgYSB0YXJnZXQgdGhhdCBjb25uZWN0cyB0byBhbiBleHRlcm5hbCBNQ1Agc2VydmVyXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcGVydGllcyBmb3IgdGhlIE1DUCBzZXJ2ZXIgdGFyZ2V0XG4gICAqIEByZXR1cm5zIEEgbmV3IEdhdGV3YXlUYXJnZXQgaW5zdGFuY2VcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL2dhdGV3YXktdGFyZ2V0LU1DUHNlcnZlcnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmb3JNY3BTZXJ2ZXIoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBHYXRld2F5VGFyZ2V0TWNwU2VydmVyUHJvcHMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIHJldHVybiBuZXcgR2F0ZXdheVRhcmdldChzY29wZSwgaWQsIHtcbiAgICAgIGdhdGV3YXk6IHByb3BzLmdhdGV3YXksXG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMsXG4gICAgICB0YXJnZXRDb25maWd1cmF0aW9uOiBNY3BTZXJ2ZXJUYXJnZXRDb25maWd1cmF0aW9uLmNyZWF0ZShwcm9wcy5lbmRwb2ludCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEFQSSBHYXRld2F5LWJhc2VkIHRhcmdldFxuICAgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIGNyZWF0aW5nIGEgdGFyZ2V0IHRoYXQgY29ubmVjdHMgdG8gYW4gQVBJIEdhdGV3YXkgUkVTVCBBUElcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIHByb3BzIFRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgQVBJIEdhdGV3YXkgdGFyZ2V0XG4gICAqIEByZXR1cm5zIEEgbmV3IEdhdGV3YXlUYXJnZXQgaW5zdGFuY2VcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL2dhdGV3YXktdGFyZ2V0LWFwaS1nYXRld2F5Lmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZm9yQXBpR2F0ZXdheShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEdhdGV3YXlUYXJnZXRBcGlHYXRld2F5UHJvcHMsXG4gICk6IEdhdGV3YXlUYXJnZXQge1xuICAgIHJldHVybiBuZXcgR2F0ZXdheVRhcmdldChzY29wZSwgaWQsIHtcbiAgICAgIGdhdGV3YXk6IHByb3BzLmdhdGV3YXksXG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMsXG4gICAgICB0YXJnZXRDb25maWd1cmF0aW9uOiBBcGlHYXRld2F5VGFyZ2V0Q29uZmlndXJhdGlvbi5jcmVhdGUoe1xuICAgICAgICByZXN0QXBpOiBwcm9wcy5yZXN0QXBpLFxuICAgICAgICBzdGFnZTogcHJvcHMuc3RhZ2UsXG4gICAgICAgIGFwaUdhdGV3YXlUb29sQ29uZmlndXJhdGlvbjogcHJvcHMuYXBpR2F0ZXdheVRvb2xDb25maWd1cmF0aW9uLFxuICAgICAgICBtZXRhZGF0YUNvbmZpZ3VyYXRpb246IHByb3BzLm1ldGFkYXRhQ29uZmlndXJhdGlvbixcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YXJnZXRBcm47XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldElkO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuYW1lO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHRoaXMgdGFyZ2V0IGJlbG9uZ3MgdG9cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnYXRld2F5O1xuXG4gIC8qKlxuICAgKiBUaGUgY3JlZGVudGlhbCBwcm92aWRlcnMgZm9yIHRoaXMgdGFyZ2V0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM6IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHByb3RvY29sIHR5cGUgKGFsd2F5cyBNQ1AgZm9yIG5vdylcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YXJnZXRQcm90b2NvbFR5cGUgPSBHYXRld2F5VGFyZ2V0UHJvdG9jb2xUeXBlLk1DUDtcblxuICAvKipcbiAgICogVGhlIHNwZWNpZmljIE1DUCB0YXJnZXQgdHlwZSAoTGFtYmRhLCBPcGVuQVBJLCBTbWl0aHksIG9yIE1DUCBTZXJ2ZXIpXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0VHlwZTogTWNwVGFyZ2V0VHlwZTtcblxuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1cz87XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgcmVhc29ucyBmb3IgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdGF0dXNSZWFzb25zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRpbWVzdGFtcCB3aGVuIHRoZSBnYXRld2F5IHRhcmdldCB3YXMgY3JlYXRlZFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRlZEF0PztcblxuICAvKipcbiAgICogVGltZXN0YW1wIHdoZW4gdGhlIGdhdGV3YXkgdGFyZ2V0IHdhcyBsYXN0IHVwZGF0ZWRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVwZGF0ZWRBdD87XG5cbiAgcHJpdmF0ZSByZWFkb25seSB0YXJnZXRSZXNvdXJjZTogYmVkcm9ja2FnZW50Y29yZS5DZm5HYXRld2F5VGFyZ2V0O1xuICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldENvbmZpZ3VyYXRpb246IElUYXJnZXRDb25maWd1cmF0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBHYXRld2F5VGFyZ2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC8vIE1heGltdW0gbmFtZSBsZW5ndGggb2YgMTAwIGNoYXJhY3RlcnNcbiAgICAgIC8vIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9UZW1wbGF0ZVJlZmVyZW5jZS9hd3MtcmVzb3VyY2UtYmVkcm9ja2FnZW50Y29yZS1nYXRld2F5dGFyZ2V0Lmh0bWwjY2ZuLWJlZHJvY2thZ2VudGNvcmUtZ2F0ZXdheXRhcmdldC1uYW1lXG4gICAgICBwaHlzaWNhbE5hbWU6IHByb3BzLmdhdGV3YXlUYXJnZXROYW1lID8/XG4gICAgICAgIExhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywgeyBtYXhMZW5ndGg6IDEwMCB9KSxcbiAgICAgICAgfSksXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICAvLyBWYWxpZGF0ZSBhbmQgYXNzaWduIHByb3BlcnRpZXNcbiAgICB0aGlzLm5hbWUgPSB0aGlzLnBoeXNpY2FsTmFtZTtcbiAgICB0aGlzLnZhbGlkYXRlR2F0ZXdheVRhcmdldE5hbWUodGhpcy5uYW1lKTtcblxuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBwcm9wcy5kZXNjcmlwdGlvbjtcbiAgICBpZiAodGhpcy5kZXNjcmlwdGlvbikge1xuICAgICAgdGhpcy52YWxpZGF0ZURlc2NyaXB0aW9uKHRoaXMuZGVzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIHRoaXMuZ2F0ZXdheSA9IHByb3BzLmdhdGV3YXk7XG4gICAgdGhpcy50YXJnZXRDb25maWd1cmF0aW9uID0gcHJvcHMudGFyZ2V0Q29uZmlndXJhdGlvbjtcbiAgICB0aGlzLnRhcmdldFR5cGUgPSB0aGlzLnRhcmdldENvbmZpZ3VyYXRpb24udGFyZ2V0VHlwZTtcblxuICAgIC8vIEdldCB0YXJnZXQtc3BlY2lmaWMgY3JlZGVudGlhbCBjb25maWd1cmF0aW9uc1xuICAgIHRoaXMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMgPSB0aGlzLl9nZXRUYXJnZXRTcGVjaWZpY0NyZWRlbnRpYWxzKFxuICAgICAgcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMsXG4gICAgKTtcblxuICAgIC8vIEJpbmQgdGhlIHRhcmdldCBjb25maWd1cmF0aW9uXG4gICAgLy8gVGhpcyBzZXRzIHVwIHBlcm1pc3Npb25zIGFuZCBkZXBlbmRlbmNpZXNcbiAgICB0aGlzLnRhcmdldENvbmZpZ3VyYXRpb24uYmluZCh0aGlzLCB0aGlzLmdhdGV3YXkpO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBMMSBjb25zdHJ1Y3RcbiAgICBjb25zdCBjZm5Qcm9wczogYmVkcm9ja2FnZW50Y29yZS5DZm5HYXRld2F5VGFyZ2V0UHJvcHMgPSB7XG4gICAgICBnYXRld2F5SWRlbnRpZmllcjogdGhpcy5nYXRld2F5LmdhdGV3YXlJZCxcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM6IExhenkuYW55KHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4gdGhpcy5fcmVuZGVyQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMoKSxcbiAgICAgIH0pLFxuXG4gICAgICB0YXJnZXRDb25maWd1cmF0aW9uOiBMYXp5LmFueSh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IHRoaXMudGFyZ2V0Q29uZmlndXJhdGlvbi5fcmVuZGVyKCksXG4gICAgICB9KSxcblxuICAgICAgLy8gQWRkIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb24gZm9yIEFQSSBHYXRld2F5IHRhcmdldHNcbiAgICAgIG1ldGFkYXRhQ29uZmlndXJhdGlvbjogdGhpcy50YXJnZXRUeXBlID09PSBNY3BUYXJnZXRUeXBlLkFQSV9HQVRFV0FZICYmXG4gICAgICAgICh0aGlzLnRhcmdldENvbmZpZ3VyYXRpb24gYXMgQXBpR2F0ZXdheVRhcmdldENvbmZpZ3VyYXRpb24pLm1ldGFkYXRhQ29uZmlndXJhdGlvblxuICAgICAgICA/IHtcbiAgICAgICAgICBhbGxvd2VkUXVlcnlQYXJhbWV0ZXJzOiAodGhpcy50YXJnZXRDb25maWd1cmF0aW9uIGFzIEFwaUdhdGV3YXlUYXJnZXRDb25maWd1cmF0aW9uKS5tZXRhZGF0YUNvbmZpZ3VyYXRpb24hLmFsbG93ZWRRdWVyeVBhcmFtZXRlcnMsXG4gICAgICAgICAgYWxsb3dlZFJlcXVlc3RIZWFkZXJzOiAodGhpcy50YXJnZXRDb25maWd1cmF0aW9uIGFzIEFwaUdhdGV3YXlUYXJnZXRDb25maWd1cmF0aW9uKS5tZXRhZGF0YUNvbmZpZ3VyYXRpb24hLmFsbG93ZWRSZXF1ZXN0SGVhZGVycyxcbiAgICAgICAgICBhbGxvd2VkUmVzcG9uc2VIZWFkZXJzOiAodGhpcy50YXJnZXRDb25maWd1cmF0aW9uIGFzIEFwaUdhdGV3YXlUYXJnZXRDb25maWd1cmF0aW9uKS5tZXRhZGF0YUNvbmZpZ3VyYXRpb24hLmFsbG93ZWRSZXNwb25zZUhlYWRlcnMsXG4gICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfTtcblxuICAgIHRoaXMudGFyZ2V0UmVzb3VyY2UgPSBuZXcgYmVkcm9ja2FnZW50Y29yZS5DZm5HYXRld2F5VGFyZ2V0KFxuICAgICAgdGhpcyxcbiAgICAgICdSZXNvdXJjZScsXG4gICAgICBjZm5Qcm9wcyxcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnMpIHtcbiAgICAgIGZvciAoY29uc3QgcHJvdmlkZXIgb2YgdGhpcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucykge1xuICAgICAgICBwcm92aWRlclxuICAgICAgICAgIC5ncmFudE5lZWRlZFBlcm1pc3Npb25zVG9Sb2xlKHRoaXMuZ2F0ZXdheS5yb2xlKVxuICAgICAgICAgID8uYXBwbHlCZWZvcmUodGhpcy50YXJnZXRSZXNvdXJjZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy50YXJnZXRJZCA9IHRoaXMudGFyZ2V0UmVzb3VyY2UuYXR0clRhcmdldElkO1xuICAgIHRoaXMudGFyZ2V0QXJuID0gdGhpcy50YXJnZXRSZXNvdXJjZS5yZWY7XG4gICAgdGhpcy5zdGF0dXMgPSB0aGlzLnRhcmdldFJlc291cmNlLmF0dHJTdGF0dXM7XG4gICAgdGhpcy5zdGF0dXNSZWFzb25zID0gdGhpcy50YXJnZXRSZXNvdXJjZS5hdHRyU3RhdHVzUmVhc29ucztcbiAgICB0aGlzLmNyZWF0ZWRBdCA9IHRoaXMudGFyZ2V0UmVzb3VyY2UuYXR0ckNyZWF0ZWRBdDtcbiAgICB0aGlzLnVwZGF0ZWRBdCA9IHRoaXMudGFyZ2V0UmVzb3VyY2UuYXR0clVwZGF0ZWRBdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBzeW5jaHJvbml6ZSB0aGlzIGdhdGV3YXkncyB0YXJnZXRzXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGdyYW50cyB0aGUgYFN5bmNocm9uaXplR2F0ZXdheVRhcmdldHNgIHBlcm1pc3Npb24sIHdoaWNoIGlzIHByaW1hcmlseVxuICAgKiBuZWVkZWQgZm9yIE1DUCBTZXJ2ZXIgdGFyZ2V0cyB3aGVuIHlvdSBuZWVkIHRvIHJlZnJlc2ggdGhlIHRvb2wgY2F0YWxvZyBhZnRlciB0aGVcbiAgICogTUNQIHNlcnZlcidzIHRvb2xzIGhhdmUgY2hhbmdlZC5cbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgZ3JhbnRTeW5jKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIGdyYW50ZWU6IGdyYW50ZWUsXG4gICAgICBhY3Rpb25zOiBHQVRFV0FZX1NZTkNfUEVSTVMsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLmdhdGV3YXkuZ2F0ZXdheUFybl0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB0aGUgY3JlZGVudGlhbCBwcm92aWRlciBjb25maWd1cmF0aW9ucyBiYXNlZCBvbiB0YXJnZXQgdHlwZVxuICAgKlxuICAgKiAtIExhbWJkYSAmIFNtaXRoeTogRGVmYXVsdCB0byBJQU0gcm9sZSBpZiBub3QgcHJvdmlkZWRcbiAgICogLSBNQ1AgU2VydmVyOiBSZXR1cm4gdW5kZWZpbmVkIGlmIG5vdCBwcm92aWRlZCAoc2VydmljZSBoYW5kbGVzIE5vQXV0aClcbiAgICogLSBPcGVuQVBJICYgQVBJIEdhdGV3YXk6IFJldHVybiBhcy1pcyAobXVzdCBiZSBleHBsaWNpdGx5IHByb3ZpZGVkLCBzZXJ2aWNlIGhhbmRsZXMgYXV0b21hdGljYWxseSlcbiAgICpcbiAgICogQHBhcmFtIHByb3ZpZGVkQ3JlZGVudGlhbHMgVGhlIGNyZWRlbnRpYWxzIGZyb20gcHJvcHNcbiAgICogQHJldHVybnMgVGhlIGNyZWRlbnRpYWwgY29uZmlndXJhdGlvbnMgdG8gdXNlLCBvciB1bmRlZmluZWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIF9nZXRUYXJnZXRTcGVjaWZpY0NyZWRlbnRpYWxzKFxuICAgIHByb3ZpZGVkQ3JlZGVudGlhbHM6IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXSB8IHVuZGVmaW5lZCxcbiAgKTogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAocHJvdmlkZWRDcmVkZW50aWFscyAmJiBwcm92aWRlZENyZWRlbnRpYWxzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBwcm92aWRlZENyZWRlbnRpYWxzO1xuICAgIH1cbiAgICAvLyBBcHBseSB0YXJnZXQtc3BlY2lmaWMgZGVmYXVsdHMgd2hlbiBub3QgcHJvdmlkZWRcbiAgICBzd2l0Y2ggKHRoaXMudGFyZ2V0VHlwZSkge1xuICAgICAgY2FzZSBNY3BUYXJnZXRUeXBlLkxBTUJEQTpcbiAgICAgIGNhc2UgTWNwVGFyZ2V0VHlwZS5TTUlUSFlfTU9ERUw6XG4gICAgICAgIHJldHVybiBbR2F0ZXdheUNyZWRlbnRpYWxQcm92aWRlci5mcm9tSWFtUm9sZSgpXTtcblxuICAgICAgY2FzZSBNY3BUYXJnZXRUeXBlLk1DUF9TRVJWRVI6XG4gICAgICAgIC8vIFJldHVybiBlbXB0eSBhcnJheSwgLSBzZXJ2aWNlIGhhbmRsZXMgTm9BdXRoIGF1dG9tYXRpY2FsbHlcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgY2FzZSBNY3BUYXJnZXRUeXBlLk9QRU5BUElfU0NIRU1BOlxuICAgICAgY2FzZSBNY3BUYXJnZXRUeXBlLkFQSV9HQVRFV0FZOlxuICAgICAgICAvLyBObyBkZWZhdWx0IC0gbXVzdCBiZSBleHBsaWNpdGx5IHByb3ZpZGVkLCBzZXJ2aWNlIGhhbmRsZXMgYXV0b21hdGljYWxseVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gW0dhdGV3YXlDcmVkZW50aWFsUHJvdmlkZXIuZnJvbUlhbVJvbGUoKV07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgY3JlZGVudGlhbCBwcm92aWRlciBjb25maWd1cmF0aW9ucyBmb3IgQ2xvdWRGb3JtYXRpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIF9yZW5kZXJDcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zPy5tYXAocHJvdmlkZXIgPT4gcHJvdmlkZXIuX3JlbmRlcigpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGdhdGV3YXkgdGFyZ2V0IG5hbWUgZm9ybWF0XG4gICAqIFBhdHRlcm46IF4oWzAtOWEtekEtWl1bLV0/KXsxLDEwMH0kXG4gICAqIE1heCBsZW5ndGg6IDEwMCBjaGFyYWN0ZXJzXG4gICAqIEBwYXJhbSBnYXRld2F5VGFyZ2V0TmFtZSBUaGUgZ2F0ZXdheSB0YXJnZXQgbmFtZSB0byB2YWxpZGF0ZVxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBuYW1lIGlzIGludmFsaWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlR2F0ZXdheVRhcmdldE5hbWUoZ2F0ZXdheVRhcmdldE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQoZ2F0ZXdheVRhcmdldE5hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGVuZ3RoRXJyb3JzID0gdmFsaWRhdGVTdHJpbmdGaWVsZCh7XG4gICAgICB2YWx1ZTogZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICBmaWVsZE5hbWU6ICdHYXRld2F5IHRhcmdldCBuYW1lJyxcbiAgICAgIG1pbkxlbmd0aDogMSxcbiAgICAgIG1heExlbmd0aDogMTAwLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcGF0dGVybkVycm9ycyA9IHZhbGlkYXRlRmllbGRQYXR0ZXJuKFxuICAgICAgZ2F0ZXdheVRhcmdldE5hbWUsXG4gICAgICAnR2F0ZXdheSB0YXJnZXQgbmFtZScsXG4gICAgICAvXihbMC05YS16QS1aXVstXT8pezEsMTAwfSQvLFxuICAgICAgJ0dhdGV3YXkgdGFyZ2V0IG5hbWUgbXVzdCBjb250YWluIG9ubHkgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIGh5cGhlbnMsIHdpdGggaHlwaGVucyBvbmx5IGJldHdlZW4gY2hhcmFjdGVycycsXG4gICAgKTtcblxuICAgIGNvbnN0IGFsbEVycm9ycyA9IFsuLi5sZW5ndGhFcnJvcnMsIC4uLnBhdHRlcm5FcnJvcnNdO1xuICAgIGlmIChhbGxFcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihhbGxFcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGRlc2NyaXB0aW9uIGZvcm1hdFxuICAgKiBNdXN0IGJlIGJldHdlZW4gMSBhbmQgMjAwIGNoYXJhY3RlcnNcbiAgICogQHRocm93cyBFcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKGRlc2NyaXB0aW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlU3RyaW5nRmllbGQoe1xuICAgICAgdmFsdWU6IGRlc2NyaXB0aW9uLFxuICAgICAgZmllbGROYW1lOiAnR2F0ZXdheSB0YXJnZXQgZGVzY3JpcHRpb24nLFxuICAgICAgbWluTGVuZ3RoOiAxLFxuICAgICAgbWF4TGVuZ3RoOiAyMDAsXG4gICAgfSk7XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoZXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
497
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGFyZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUFpRDtBQUVqRCxxRUFBcUU7QUFDckUsMkNBQTJDO0FBRTNDLHdEQUE4RDtBQUM5RCw4RUFBOEY7QUFDOUYsMEVBQTBFO0FBRzFFLG9DQUE4QztBQUk5QywrQ0FBNEY7QUFFNUYsaUVBQXVMO0FBRXZMLDhFQUFpRjtBQUNqRiw4REFBa0Y7QUFrUGxGOzsrRUFFK0U7QUFFL0U7Ozs7Ozs7OztHQVNHO0lBRVUsYUFBYTs0QkFEekIsb0NBQWtCOzs7O3NCQUNnQiwrQkFBaUI7Ozs2QkFBekIsU0FBUSxXQUFpQjs7OztxQ0FpVWpELElBQUEsa0NBQWMsR0FBRTtZQUNqQiw4S0FBTyxTQUFTLDZEQU1mO1lBeFVILDZLQThhQzs7Ozs7UUE3YUMsc0NBQXNDO1FBQy9CLE1BQU0sQ0FBVSxxQkFBcUIsR0FBVyxvREFBb0QsQ0FBQztRQUM1Rzs7Ozs7Ozs7V0FRRztRQUNJLE1BQU0sQ0FBQywyQkFBMkIsQ0FDdkMsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQThCOzs7Ozs7Ozs7O1lBRTlCLE1BQU0scUJBQXNCLFNBQVEsK0JBQWlCO2dCQUNuQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztnQkFDNUIsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7Z0JBQzFCLElBQUksR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUM7Z0JBQy9CLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUMzQixPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQkFDeEIsZ0NBQWdDLEdBQUcsRUFBRSxDQUFDO2dCQUN0QyxrQkFBa0IsR0FBRyx1Q0FBeUIsQ0FBQyxHQUFHLENBQUM7Z0JBQ25ELE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO2dC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QW1CO1lBQzdDLElBQUksbUJBQUssQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsT0FBTztZQUNULENBQUM7WUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFBLHdDQUFtQixFQUFDO2dCQUNqQyxLQUFLLEVBQUUsV0FBVztnQkFDbEIsU0FBUyxFQUFFLDRCQUE0QjtnQkFDdkMsU0FBUyxFQUFFLENBQUM7Z0JBQ1osU0FBUyxFQUFFLEdBQUc7YUFDZixDQUFDLENBQUM7WUFFSCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sSUFBSSx3QkFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckQsQ0FBQztTQUNGOztZQTdhVSx1REFBYTs7Ozs7QUFBYixzQ0FBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhenksIFRva2VuLCBOYW1lcyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB0eXBlIHsgSVJlc3RBcGkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheSc7XG5pbXBvcnQgKiBhcyBiZWRyb2NrYWdlbnRjb3JlIGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB0eXBlIHsgSUZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9lcnJvcnMnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEsIE1ldGhvZE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgdHlwZSB7IElHYXRld2F5IH0gZnJvbSAnLi4vZ2F0ZXdheS1iYXNlJztcbmltcG9ydCB7IEdBVEVXQVlfU1lOQ19QRVJNUyB9IGZyb20gJy4uL3Blcm1zJztcbmltcG9ydCB0eXBlIHsgQXBpU2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEvYXBpLXNjaGVtYSc7XG5pbXBvcnQgdHlwZSB7IFRvb2xTY2hlbWEgfSBmcm9tICcuL3NjaGVtYS90b29sLXNjaGVtYSc7XG5pbXBvcnQgdHlwZSB7IElHYXRld2F5VGFyZ2V0LCBJTWNwR2F0ZXdheVRhcmdldCB9IGZyb20gJy4vdGFyZ2V0LWJhc2UnO1xuaW1wb3J0IHsgR2F0ZXdheVRhcmdldEJhc2UsIEdhdGV3YXlUYXJnZXRQcm90b2NvbFR5cGUsIE1jcFRhcmdldFR5cGUgfSBmcm9tICcuL3RhcmdldC1iYXNlJztcbmltcG9ydCB0eXBlIHsgQXBpR2F0ZXdheVRvb2xDb25maWd1cmF0aW9uLCBJVGFyZ2V0Q29uZmlndXJhdGlvbiwgTWV0YWRhdGFDb25maWd1cmF0aW9uIH0gZnJvbSAnLi90YXJnZXQtY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBBcGlHYXRld2F5VGFyZ2V0Q29uZmlndXJhdGlvbiwgTGFtYmRhVGFyZ2V0Q29uZmlndXJhdGlvbiwgTWNwU2VydmVyVGFyZ2V0Q29uZmlndXJhdGlvbiwgT3BlbkFwaVRhcmdldENvbmZpZ3VyYXRpb24sIFNtaXRoeVRhcmdldENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3RhcmdldC1jb25maWd1cmF0aW9uJztcbmltcG9ydCB0eXBlIHsgSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZyB9IGZyb20gJy4uL291dGJvdW5kLWF1dGgvY3JlZGVudGlhbC1wcm92aWRlcic7XG5pbXBvcnQgeyBHYXRld2F5Q3JlZGVudGlhbFByb3ZpZGVyIH0gZnJvbSAnLi4vb3V0Ym91bmQtYXV0aC9jcmVkZW50aWFsLXByb3ZpZGVyJztcbmltcG9ydCB7IHZhbGlkYXRlU3RyaW5nRmllbGQsIHZhbGlkYXRlRmllbGRQYXR0ZXJuIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi1oZWxwZXJzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3BzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQ29tbW9uIHByb3BlcnRpZXMgZm9yIGFsbCBHYXRld2F5IFRhcmdldCB0eXBlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlUYXJnZXRDb21tb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogVGhlIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBnYXRld2F5XG4gICAqIFBhdHRlcm46IF4oWzAtOWEtekEtWl1bLV0/KXsxLDEwMH0kXG4gICAqIEBkZWZhdWx0IC0gYXV0byBnZW5lcmF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheVRhcmdldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogVGhlIGRlc2NyaXB0aW9uIGNhbiBoYXZlIHVwIHRvIDIwMCBjaGFyYWN0ZXJzXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgR2F0ZXdheSBUYXJnZXQgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5VGFyZ2V0UHJvcHMgZXh0ZW5kcyBHYXRld2F5VGFyZ2V0Q29tbW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIGdhdGV3YXkgdGhpcyB0YXJnZXQgYmVsb25ncyB0b1xuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheTogSUdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgY29uZmlndXJhdGlvbiAoTGFtYmRhLCBPcGVuQVBJLCBvciBTbWl0aHkpXG4gICAqIFVzZSBvbmUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaGVscGVyIGNsYXNzZXM6XG4gICAqIC0gTGFtYmRhVGFyZ2V0Q29uZmlndXJhdGlvbi5jcmVhdGUoKVxuICAgKiAtIE9wZW5BcGlUYXJnZXRDb25maWd1cmF0aW9uLmNyZWF0ZSgpXG4gICAqIC0gU21pdGh5VGFyZ2V0Q29uZmlndXJhdGlvbi5jcmVhdGUoKVxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0Q29uZmlndXJhdGlvbjogSVRhcmdldENvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWwgcHJvdmlkZXJzIGZvciBhdXRoZW50aWNhdGlvblxuICAgKiBAZGVmYXVsdCAtIFtHYXRld2F5Q3JlZGVudGlhbFByb3ZpZGVyLmZyb21JYW1Sb2xlKCldXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucz86IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIExhbWJkYS1iYXNlZCBHYXRld2F5IFRhcmdldFxuICogQ29udmVuaWVuY2UgaW50ZXJmYWNlIGZvciB0aGUgbW9zdCBjb21tb24gdXNlIGNhc2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5VGFyZ2V0TGFtYmRhUHJvcHMgZXh0ZW5kcyBHYXRld2F5VGFyZ2V0Q29tbW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIGdhdGV3YXkgdGhpcyB0YXJnZXQgYmVsb25ncyB0b1xuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheTogSUdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIFRoZSBMYW1iZGEgZnVuY3Rpb24gdG8gYXNzb2NpYXRlIHdpdGggdGhpcyB0YXJnZXRcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUZ1bmN0aW9uOiBJRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSB0b29sIHNjaGVtYSBkZWZpbmluZyB0aGUgYXZhaWxhYmxlIHRvb2xzXG4gICAqL1xuICByZWFkb25seSB0b29sU2NoZW1hOiBUb29sU2NoZW1hO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgYXV0aGVudGljYXRpb25cbiAgICogTGFtYmRhIHRhcmdldHMgb25seSBzdXBwb3J0IElBTSByb2xlIGF1dGhlbnRpY2F0aW9uXG4gICAqIEBkZWZhdWx0IC0gW0dhdGV3YXlDcmVkZW50aWFsUHJvdmlkZXIuZnJvbUlhbVJvbGUoKV1cbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zPzogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGFuIE9wZW5BUEktYmFzZWQgR2F0ZXdheSBUYXJnZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5VGFyZ2V0T3BlbkFwaVByb3BzIGV4dGVuZHMgR2F0ZXdheVRhcmdldENvbW1vblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHRoaXMgdGFyZ2V0IGJlbG9uZ3MgdG9cbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXk6IElHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBUaGUgT3BlbkFQSSBzY2hlbWEgZGVmaW5pbmcgdGhlIEFQSVxuICAgKi9cbiAgcmVhZG9ubHkgYXBpU2NoZW1hOiBBcGlTY2hlbWE7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdmFsaWRhdGUgdGhlIE9wZW5BUEkgc2NoZW1hIChvbmx5IGFwcGxpZXMgdG8gaW5saW5lIHNjaGVtYXMpXG4gICAqIE5vdGU6IFZhbGlkYXRpb24gaXMgb25seSBwZXJmb3JtZWQgZm9yIGlubGluZSBzY2hlbWFzIGR1cmluZyBDREsgc3ludGhlc2lzLlxuICAgKiBTMyBhbmQgYXNzZXQtYmFzZWQgc2NoZW1hcyBjYW5ub3QgYmUgdmFsaWRhdGVkIGF0IHN5bnRoZXNpcyB0aW1lLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0ZU9wZW5BcGlTY2hlbWE/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgYXV0aGVudGljYXRpb25cbiAgICogT3BlbkFQSSB0YXJnZXRzIHN1cHBvcnQgQVBJIGtleSBhbmQgT0F1dGggYXV0aGVudGljYXRpb24gKG5vdCBJQU0pXG4gICAqIEBkZWZhdWx0IC0gSWYgbm90IHByb3ZpZGVkLCBkZWZhdWx0cyB0byBJQU0gcm9sZSB3aGljaCB3aWxsIGZhaWwgYXQgcnVudGltZVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM/OiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBTbWl0aHktYmFzZWQgR2F0ZXdheSBUYXJnZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5VGFyZ2V0U21pdGh5UHJvcHMgZXh0ZW5kcyBHYXRld2F5VGFyZ2V0Q29tbW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIGdhdGV3YXkgdGhpcyB0YXJnZXQgYmVsb25ncyB0b1xuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheTogSUdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIFRoZSBTbWl0aHkgbW9kZWwgZGVmaW5pbmcgdGhlIEFQSVxuICAgKi9cbiAgcmVhZG9ubHkgc21pdGh5TW9kZWw6IEFwaVNjaGVtYTtcblxuICAvKipcbiAgICogQ3JlZGVudGlhbCBwcm92aWRlcnMgZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqIFNtaXRoeSB0YXJnZXRzIG9ubHkgc3VwcG9ydCBJQU0gcm9sZSBhdXRoZW50aWNhdGlvblxuICAgKiBAZGVmYXVsdCAtIFtHYXRld2F5Q3JlZGVudGlhbFByb3ZpZGVyLmZyb21JYW1Sb2xlKCldXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucz86IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhbiBNQ1AgU2VydmVyLWJhc2VkIEdhdGV3YXkgVGFyZ2V0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheVRhcmdldE1jcFNlcnZlclByb3BzIGV4dGVuZHMgR2F0ZXdheVRhcmdldENvbW1vblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHRoaXMgdGFyZ2V0IGJlbG9uZ3MgdG9cbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXk6IElHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBUaGUgSFRUUFMgZW5kcG9pbnQgVVJMIG9mIHRoZSBNQ1Agc2VydmVyXG4gICAqXG4gICAqIFRoZSBlbmRwb2ludCBtdXN0OlxuICAgKiAtIFVzZSBIVFRQUyBwcm90b2NvbFxuICAgKiAtIEJlIHByb3Blcmx5IFVSTC1lbmNvZGVkXG4gICAqIC0gUG9pbnQgdG8gYW4gTUNQIHNlcnZlciB0aGF0IGltcGxlbWVudHMgdG9vbCBjYXBhYmlsaXRpZXNcbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWwgcHJvdmlkZXJzIGZvciBhdXRoZW50aWNhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM6IElDcmVkZW50aWFsUHJvdmlkZXJDb25maWdbXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhbiBBUEkgR2F0ZXdheS1iYXNlZCBHYXRld2F5IFRhcmdldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdhdGV3YXlUYXJnZXRBcGlHYXRld2F5UHJvcHMgZXh0ZW5kcyBHYXRld2F5VGFyZ2V0Q29tbW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIGdhdGV3YXkgdGhpcyB0YXJnZXQgYmVsb25ncyB0b1xuICAgKiBbZGlzYWJsZS1hd3NsaW50OnByZWZlci1yZWYtaW50ZXJmYWNlXVxuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheTogSUdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIFRoZSBSRVNUIEFQSSB0byBpbnRlZ3JhdGUgd2l0aFxuICAgKiBNdXN0IGJlIGluIHRoZSBzYW1lIGFjY291bnQgYW5kIHJlZ2lvbiBhcyB0aGUgZ2F0ZXdheVxuICAgKiBbZGlzYWJsZS1hd3NsaW50OnByZWZlci1yZWYtaW50ZXJmYWNlXVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzdEFwaTogSVJlc3RBcGk7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFnZSBuYW1lIG9mIHRoZSBSRVNUIEFQSVxuICAgKiBAZGVmYXVsdCAtIFVzZXMgdGhlIGRlcGxveW1lbnQgc3RhZ2UgZnJvbSB0aGUgUmVzdEFwaSAocmVzdEFwaS5kZXBsb3ltZW50U3RhZ2Uuc3RhZ2VOYW1lKVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRvb2wgY29uZmlndXJhdGlvbiBkZWZpbmluZyB3aGljaCBvcGVyYXRpb25zIHRvIGV4cG9zZVxuICAgKi9cbiAgcmVhZG9ubHkgYXBpR2F0ZXdheVRvb2xDb25maWd1cmF0aW9uOiBBcGlHYXRld2F5VG9vbENvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWwgcHJvdmlkZXJzIGZvciBhdXRoZW50aWNhdGlvblxuICAgKiBBUEkgR2F0ZXdheSB0YXJnZXRzIHN1cHBvcnQgSUFNIGFuZCBBUEkga2V5IGF1dGhlbnRpY2F0aW9uXG4gICAqIEBkZWZhdWx0IC0gRW1wdHkgYXJyYXkgKHNlcnZpY2UgaGFuZGxlcyBJQU0gYXV0b21hdGljYWxseSlcbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zPzogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdO1xuXG4gIC8qKlxuICAgKiBNZXRhZGF0YSBjb25maWd1cmF0aW9uIGZvciBwYXNzaW5nIGhlYWRlcnMgYW5kIHF1ZXJ5IHBhcmFtZXRlcnNcbiAgICogQWxsb3dzIHlvdSB0byBwYXNzIGFkZGl0aW9uYWwgY29udGV4dCB0aHJvdWdoIGhlYWRlcnMgYW5kIHF1ZXJ5IHBhcmFtZXRlcnNcbiAgICogQGRlZmF1bHQgLSBObyBtZXRhZGF0YSBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YUNvbmZpZ3VyYXRpb24/OiBNZXRhZGF0YUNvbmZpZ3VyYXRpb247XG59XG5cbi8qKlxuICogQXR0cmlidXRlcyBmb3IgaW1wb3J0aW5nIGFuIGV4aXN0aW5nIEdhdGV3YXkgVGFyZ2V0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheVRhcmdldEF0dHJpYnV0ZXMge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldEFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGdhdGV3YXkgdGFyZ2V0XG4gICAqL1xuICByZWFkb25seSB0YXJnZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXlUYXJnZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IHRoaXMgdGFyZ2V0IGJlbG9uZ3MgdG9cbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXk6IElHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBzdGF0dXMgb2YgdGhlIHRhcmdldFxuICAgKiBAZGVmYXVsdCAtIE5vIHN0YXR1c1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBjcmVhdGlvbiB0aW1lc3RhbXBcbiAgICogQGRlZmF1bHQgLSBObyBjcmVhdGlvbiB0aW1lc3RhbXBcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZWRBdD86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgbGFzdCB1cGRhdGUgdGltZXN0YW1wXG4gICAqIEBkZWZhdWx0IC0gTm8gdXBkYXRlIHRpbWVzdGFtcFxuICAgKi9cbiAgcmVhZG9ubHkgdXBkYXRlZEF0Pzogc3RyaW5nO1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKlxuICogRGVmaW5lcyB0b29scyB0aGF0IHlvdXIgZ2F0ZXdheSB3aWxsIGhvc3QuIFN1cHBvcnRzIG11bHRpcGxlIHRhcmdldCB0eXBlczpcbiAqIC0gTGFtYmRhOiBXcmFwcyBhIExhbWJkYSBmdW5jdGlvbiBhcyBNQ1AgdG9vbHNcbiAqIC0gT3BlbkFQSTogRXhwb3NlcyBhbiBPcGVuQVBJL1JFU1QgQVBJIGFzIE1DUCB0b29sc1xuICogLSBTbWl0aHk6IEV4cG9zZXMgYSBTbWl0aHktbW9kZWxlZCBBUEkgYXMgTUNQIHRvb2xzXG4gKlxuICogQHJlc291cmNlIEFXUzo6QmVkcm9ja0FnZW50Q29yZTo6R2F0ZXdheVRhcmdldFxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL2dhdGV3YXktYnVpbGRpbmctYWRkaW5nLXRhcmdldHMuaHRtbFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgR2F0ZXdheVRhcmdldCBleHRlbmRzIEdhdGV3YXlUYXJnZXRCYXNlIGltcGxlbWVudHMgSU1jcEdhdGV3YXlUYXJnZXQge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1iZWRyb2NrLWFnZW50Y29yZS1hbHBoYS5HYXRld2F5VGFyZ2V0JztcbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBHYXRld2F5IFRhcmdldCB1c2luZyBpdHMgYXR0cmlidXRlc1xuICAgKiBUaGlzIGFsbG93cyB5b3UgdG8gcmVmZXJlbmNlIGEgR2F0ZXdheSBUYXJnZXQgdGhhdCB3YXMgY3JlYXRlZCBvdXRzaWRlIG9mIENES1xuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCBpZFxuICAgKiBAcGFyYW0gYXR0cnMgVGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGV4aXN0aW5nIEdhdGV3YXkgVGFyZ2V0XG4gICAqIEByZXR1cm5zIEFuIElHYXRld2F5VGFyZ2V0IGluc3RhbmNlIHJlcHJlc2VudGluZyB0aGUgaW1wb3J0ZWQgdGFyZ2V0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21HYXRld2F5VGFyZ2V0QXR0cmlidXRlcyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYXR0cnM6IEdhdGV3YXlUYXJnZXRBdHRyaWJ1dGVzLFxuICApOiBJR2F0ZXdheVRhcmdldCB7XG4gICAgY2xhc3MgSW1wb3J0ZWRHYXRld2F5VGFyZ2V0IGV4dGVuZHMgR2F0ZXdheVRhcmdldEJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHRhcmdldEFybiA9IGF0dHJzLnRhcmdldEFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YXJnZXRJZCA9IGF0dHJzLnRhcmdldElkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IG5hbWUgPSBhdHRycy5nYXRld2F5VGFyZ2V0TmFtZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbiA9IGF0dHJzLnN0YXR1cztcbiAgICAgIHB1YmxpYyByZWFkb25seSBnYXRld2F5ID0gYXR0cnMuZ2F0ZXdheTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyA9IFtdO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHRhcmdldFByb3RvY29sVHlwZSA9IEdhdGV3YXlUYXJnZXRQcm90b2NvbFR5cGUuTUNQO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHN0YXR1cyA9IGF0dHJzLnN0YXR1cztcbiAgICAgIHB1YmxpYyByZWFkb25seSBzdGF0dXNSZWFzb25zID0gdW5kZWZpbmVkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGNyZWF0ZWRBdCA9IGF0dHJzLmNyZWF0ZWRBdDtcbiAgICAgIHB1YmxpYyByZWFkb25seSB1cGRhdGVkQXQgPSBhdHRycy51cGRhdGVkQXQ7XG5cbiAgICAgIGNvbnN0cnVjdG9yKHM6IENvbnN0cnVjdCwgaTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHMsIGkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IEltcG9ydGVkR2F0ZXdheVRhcmdldChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIExhbWJkYS1iYXNlZCBNQ1AgdGFyZ2V0XG4gICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgY3JlYXRpbmcgYSB0YXJnZXQgdGhhdCB3cmFwcyBhIExhbWJkYSBmdW5jdGlvblxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCBpZFxuICAgKiBAcGFyYW0gcHJvcHMgVGhlIHByb3BlcnRpZXMgZm9yIHRoZSBMYW1iZGEgdGFyZ2V0XG4gICAqIEByZXR1cm5zIEEgbmV3IEdhdGV3YXlUYXJnZXQgaW5zdGFuY2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZm9yTGFtYmRhKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogR2F0ZXdheVRhcmdldExhbWJkYVByb3BzLFxuICApOiBHYXRld2F5VGFyZ2V0IHtcbiAgICByZXR1cm4gbmV3IEdhdGV3YXlUYXJnZXQoc2NvcGUsIGlkLCB7XG4gICAgICBnYXRld2F5OiBwcm9wcy5nYXRld2F5LFxuICAgICAgZ2F0ZXdheVRhcmdldE5hbWU6IHByb3BzLmdhdGV3YXlUYXJnZXROYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM6IHByb3BzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zLFxuICAgICAgdGFyZ2V0Q29uZmlndXJhdGlvbjogTGFtYmRhVGFyZ2V0Q29uZmlndXJhdGlvbi5jcmVhdGUoXG4gICAgICAgIHByb3BzLmxhbWJkYUZ1bmN0aW9uLFxuICAgICAgICBwcm9wcy50b29sU2NoZW1hLFxuICAgICAgKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gT3BlbkFQSS1iYXNlZCBNQ1AgdGFyZ2V0XG4gICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgY3JlYXRpbmcgYSB0YXJnZXQgdGhhdCBleHBvc2VzIGFuIE9wZW5BUEkvUkVTVCBBUElcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIHByb3BzIFRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgT3BlbkFQSSB0YXJnZXRcbiAgICogQHJldHVybnMgQSBuZXcgR2F0ZXdheVRhcmdldCBpbnN0YW5jZVxuICAgKlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmb3JPcGVuQXBpKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogR2F0ZXdheVRhcmdldE9wZW5BcGlQcm9wcyxcbiAgKTogR2F0ZXdheVRhcmdldCB7XG4gICAgcmV0dXJuIG5ldyBHYXRld2F5VGFyZ2V0KHNjb3BlLCBpZCwge1xuICAgICAgZ2F0ZXdheTogcHJvcHMuZ2F0ZXdheSxcbiAgICAgIGdhdGV3YXlUYXJnZXROYW1lOiBwcm9wcy5nYXRld2F5VGFyZ2V0TmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zOiBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyxcbiAgICAgIHRhcmdldENvbmZpZ3VyYXRpb246IE9wZW5BcGlUYXJnZXRDb25maWd1cmF0aW9uLmNyZWF0ZShwcm9wcy5hcGlTY2hlbWEsIHByb3BzLnZhbGlkYXRlT3BlbkFwaVNjaGVtYSksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgU21pdGh5LWJhc2VkIE1DUCB0YXJnZXRcbiAgICogQ29udmVuaWVuY2UgbWV0aG9kIGZvciBjcmVhdGluZyBhIHRhcmdldCB0aGF0IGV4cG9zZXMgYSBTbWl0aHktbW9kZWxlZCBBUElcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIHByb3BzIFRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgU21pdGh5IHRhcmdldFxuICAgKiBAcmV0dXJucyBBIG5ldyBHYXRld2F5VGFyZ2V0IGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZvclNtaXRoeShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEdhdGV3YXlUYXJnZXRTbWl0aHlQcm9wcyxcbiAgKTogR2F0ZXdheVRhcmdldCB7XG4gICAgcmV0dXJuIG5ldyBHYXRld2F5VGFyZ2V0KHNjb3BlLCBpZCwge1xuICAgICAgZ2F0ZXdheTogcHJvcHMuZ2F0ZXdheSxcbiAgICAgIGdhdGV3YXlUYXJnZXROYW1lOiBwcm9wcy5nYXRld2F5VGFyZ2V0TmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zOiBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyxcbiAgICAgIHRhcmdldENvbmZpZ3VyYXRpb246IFNtaXRoeVRhcmdldENvbmZpZ3VyYXRpb24uY3JlYXRlKHByb3BzLnNtaXRoeU1vZGVsKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gTUNQIFNlcnZlci1iYXNlZCB0YXJnZXRcbiAgICogQ29udmVuaWVuY2UgbWV0aG9kIGZvciBjcmVhdGluZyBhIHRhcmdldCB0aGF0IGNvbm5lY3RzIHRvIGFuIGV4dGVybmFsIE1DUCBzZXJ2ZXJcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIHByb3BzIFRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgTUNQIHNlcnZlciB0YXJnZXRcbiAgICogQHJldHVybnMgQSBuZXcgR2F0ZXdheVRhcmdldCBpbnN0YW5jZVxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iZWRyb2NrLWFnZW50Y29yZS9sYXRlc3QvZGV2Z3VpZGUvZ2F0ZXdheS10YXJnZXQtTUNQc2VydmVycy5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZvck1jcFNlcnZlcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEdhdGV3YXlUYXJnZXRNY3BTZXJ2ZXJQcm9wcyxcbiAgKTogR2F0ZXdheVRhcmdldCB7XG4gICAgcmV0dXJuIG5ldyBHYXRld2F5VGFyZ2V0KHNjb3BlLCBpZCwge1xuICAgICAgZ2F0ZXdheTogcHJvcHMuZ2F0ZXdheSxcbiAgICAgIGdhdGV3YXlUYXJnZXROYW1lOiBwcm9wcy5nYXRld2F5VGFyZ2V0TmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zOiBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyxcbiAgICAgIHRhcmdldENvbmZpZ3VyYXRpb246IE1jcFNlcnZlclRhcmdldENvbmZpZ3VyYXRpb24uY3JlYXRlKHByb3BzLmVuZHBvaW50KSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gQVBJIEdhdGV3YXktYmFzZWQgdGFyZ2V0XG4gICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgY3JlYXRpbmcgYSB0YXJnZXQgdGhhdCBjb25uZWN0cyB0byBhbiBBUEkgR2F0ZXdheSBSRVNUIEFQSVxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCBpZFxuICAgKiBAcGFyYW0gcHJvcHMgVGhlIHByb3BlcnRpZXMgZm9yIHRoZSBBUEkgR2F0ZXdheSB0YXJnZXRcbiAgICogQHJldHVybnMgQSBuZXcgR2F0ZXdheVRhcmdldCBpbnN0YW5jZVxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iZWRyb2NrLWFnZW50Y29yZS9sYXRlc3QvZGV2Z3VpZGUvZ2F0ZXdheS10YXJnZXQtYXBpLWdhdGV3YXkuaHRtbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmb3JBcGlHYXRld2F5KFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogR2F0ZXdheVRhcmdldEFwaUdhdGV3YXlQcm9wcyxcbiAgKTogR2F0ZXdheVRhcmdldCB7XG4gICAgcmV0dXJuIG5ldyBHYXRld2F5VGFyZ2V0KHNjb3BlLCBpZCwge1xuICAgICAgZ2F0ZXdheTogcHJvcHMuZ2F0ZXdheSxcbiAgICAgIGdhdGV3YXlUYXJnZXROYW1lOiBwcm9wcy5nYXRld2F5VGFyZ2V0TmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zOiBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyxcbiAgICAgIHRhcmdldENvbmZpZ3VyYXRpb246IEFwaUdhdGV3YXlUYXJnZXRDb25maWd1cmF0aW9uLmNyZWF0ZSh7XG4gICAgICAgIHJlc3RBcGk6IHByb3BzLnJlc3RBcGksXG4gICAgICAgIHN0YWdlOiBwcm9wcy5zdGFnZSxcbiAgICAgICAgYXBpR2F0ZXdheVRvb2xDb25maWd1cmF0aW9uOiBwcm9wcy5hcGlHYXRld2F5VG9vbENvbmZpZ3VyYXRpb24sXG4gICAgICAgIG1ldGFkYXRhQ29uZmlndXJhdGlvbjogcHJvcHMubWV0YWRhdGFDb25maWd1cmF0aW9uLFxuICAgICAgfSksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldEFybjtcblxuICAvKipcbiAgICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0SWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5hbWU7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbjtcblxuICAvKipcbiAgICogVGhlIGdhdGV3YXkgdGhpcyB0YXJnZXQgYmVsb25ncyB0b1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIFRoZSBjcmVkZW50aWFsIHByb3ZpZGVycyBmb3IgdGhpcyB0YXJnZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvdG9jb2wgdHlwZSAoYWx3YXlzIE1DUCBmb3Igbm93KVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldFByb3RvY29sVHlwZSA9IEdhdGV3YXlUYXJnZXRQcm90b2NvbFR5cGUuTUNQO1xuXG4gIC8qKlxuICAgKiBUaGUgc3BlY2lmaWMgTUNQIHRhcmdldCB0eXBlIChMYW1iZGEsIE9wZW5BUEksIFNtaXRoeSwgb3IgTUNQIFNlcnZlcilcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YXJnZXRUeXBlOiBNY3BUYXJnZXRUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzIG9mIHRoZSBnYXRld2F5IHRhcmdldFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzPztcblxuICAvKipcbiAgICogVGhlIHN0YXR1cyByZWFzb25zIGZvciB0aGUgZ2F0ZXdheSB0YXJnZXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1c1JlYXNvbnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGltZXN0YW1wIHdoZW4gdGhlIGdhdGV3YXkgdGFyZ2V0IHdhcyBjcmVhdGVkXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVhdGVkQXQ/O1xuXG4gIC8qKlxuICAgKiBUaW1lc3RhbXAgd2hlbiB0aGUgZ2F0ZXdheSB0YXJnZXQgd2FzIGxhc3QgdXBkYXRlZFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRlZEF0PztcblxuICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldFJlc291cmNlOiBiZWRyb2NrYWdlbnRjb3JlLkNmbkdhdGV3YXlUYXJnZXQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGFyZ2V0Q29uZmlndXJhdGlvbjogSVRhcmdldENvbmZpZ3VyYXRpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEdhdGV3YXlUYXJnZXRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLy8gTWF4aW11bSBuYW1lIGxlbmd0aCBvZiAxMDAgY2hhcmFjdGVyc1xuICAgICAgLy8gQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1RlbXBsYXRlUmVmZXJlbmNlL2F3cy1yZXNvdXJjZS1iZWRyb2NrYWdlbnRjb3JlLWdhdGV3YXl0YXJnZXQuaHRtbCNjZm4tYmVkcm9ja2FnZW50Y29yZS1nYXRld2F5dGFyZ2V0LW5hbWVcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMuZ2F0ZXdheVRhcmdldE5hbWUgPz9cbiAgICAgICAgTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7IG1heExlbmd0aDogMTAwIH0pLFxuICAgICAgICB9KSxcbiAgICB9KTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIC8vIFZhbGlkYXRlIGFuZCBhc3NpZ24gcHJvcGVydGllc1xuICAgIHRoaXMubmFtZSA9IHRoaXMucGh5c2ljYWxOYW1lO1xuICAgIHRoaXMudmFsaWRhdGVHYXRld2F5VGFyZ2V0TmFtZSh0aGlzLm5hbWUpO1xuXG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IHByb3BzLmRlc2NyaXB0aW9uO1xuICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlRGVzY3JpcHRpb24odGhpcy5kZXNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy5nYXRld2F5ID0gcHJvcHMuZ2F0ZXdheTtcbiAgICB0aGlzLnRhcmdldENvbmZpZ3VyYXRpb24gPSBwcm9wcy50YXJnZXRDb25maWd1cmF0aW9uO1xuICAgIHRoaXMudGFyZ2V0VHlwZSA9IHRoaXMudGFyZ2V0Q29uZmlndXJhdGlvbi50YXJnZXRUeXBlO1xuXG4gICAgLy8gR2V0IHRhcmdldC1zcGVjaWZpYyBjcmVkZW50aWFsIGNvbmZpZ3VyYXRpb25zXG4gICAgdGhpcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyA9IHRoaXMuX2dldFRhcmdldFNwZWNpZmljQ3JlZGVudGlhbHMoXG4gICAgICBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucyxcbiAgICApO1xuXG4gICAgLy8gQmluZCB0aGUgdGFyZ2V0IGNvbmZpZ3VyYXRpb25cbiAgICAvLyBUaGlzIHNldHMgdXAgcGVybWlzc2lvbnMgYW5kIGRlcGVuZGVuY2llc1xuICAgIHRoaXMudGFyZ2V0Q29uZmlndXJhdGlvbi5iaW5kKHRoaXMsIHRoaXMuZ2F0ZXdheSk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIEwxIGNvbnN0cnVjdFxuICAgIGNvbnN0IGNmblByb3BzOiBiZWRyb2NrYWdlbnRjb3JlLkNmbkdhdGV3YXlUYXJnZXRQcm9wcyA9IHtcbiAgICAgIGdhdGV3YXlJZGVudGlmaWVyOiB0aGlzLmdhdGV3YXkuZ2F0ZXdheUlkLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9uczogTGF6eS5hbnkoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PiB0aGlzLl9yZW5kZXJDcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucygpLFxuICAgICAgfSksXG5cbiAgICAgIHRhcmdldENvbmZpZ3VyYXRpb246IExhenkuYW55KHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4gdGhpcy50YXJnZXRDb25maWd1cmF0aW9uLl9yZW5kZXIoKSxcbiAgICAgIH0pLFxuXG4gICAgICAvLyBBZGQgbWV0YWRhdGEgY29uZmlndXJhdGlvbiBmb3IgQVBJIEdhdGV3YXkgdGFyZ2V0c1xuICAgICAgbWV0YWRhdGFDb25maWd1cmF0aW9uOiB0aGlzLnRhcmdldFR5cGUgPT09IE1jcFRhcmdldFR5cGUuQVBJX0dBVEVXQVkgJiZcbiAgICAgICAgKHRoaXMudGFyZ2V0Q29uZmlndXJhdGlvbiBhcyBBcGlHYXRld2F5VGFyZ2V0Q29uZmlndXJhdGlvbikubWV0YWRhdGFDb25maWd1cmF0aW9uXG4gICAgICAgID8ge1xuICAgICAgICAgIGFsbG93ZWRRdWVyeVBhcmFtZXRlcnM6ICh0aGlzLnRhcmdldENvbmZpZ3VyYXRpb24gYXMgQXBpR2F0ZXdheVRhcmdldENvbmZpZ3VyYXRpb24pLm1ldGFkYXRhQ29uZmlndXJhdGlvbiEuYWxsb3dlZFF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgICAgICBhbGxvd2VkUmVxdWVzdEhlYWRlcnM6ICh0aGlzLnRhcmdldENvbmZpZ3VyYXRpb24gYXMgQXBpR2F0ZXdheVRhcmdldENvbmZpZ3VyYXRpb24pLm1ldGFkYXRhQ29uZmlndXJhdGlvbiEuYWxsb3dlZFJlcXVlc3RIZWFkZXJzLFxuICAgICAgICAgIGFsbG93ZWRSZXNwb25zZUhlYWRlcnM6ICh0aGlzLnRhcmdldENvbmZpZ3VyYXRpb24gYXMgQXBpR2F0ZXdheVRhcmdldENvbmZpZ3VyYXRpb24pLm1ldGFkYXRhQ29uZmlndXJhdGlvbiEuYWxsb3dlZFJlc3BvbnNlSGVhZGVycyxcbiAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9O1xuXG4gICAgdGhpcy50YXJnZXRSZXNvdXJjZSA9IG5ldyBiZWRyb2NrYWdlbnRjb3JlLkNmbkdhdGV3YXlUYXJnZXQoXG4gICAgICB0aGlzLFxuICAgICAgJ1Jlc291cmNlJyxcbiAgICAgIGNmblByb3BzLFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5jcmVkZW50aWFsUHJvdmlkZXJDb25maWd1cmF0aW9ucykge1xuICAgICAgZm9yIChjb25zdCBwcm92aWRlciBvZiB0aGlzLmNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zKSB7XG4gICAgICAgIHByb3ZpZGVyXG4gICAgICAgICAgLmdyYW50TmVlZGVkUGVybWlzc2lvbnNUb1JvbGUodGhpcy5nYXRld2F5LnJvbGUpXG4gICAgICAgICAgPy5hcHBseUJlZm9yZSh0aGlzLnRhcmdldFJlc291cmNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnRhcmdldElkID0gdGhpcy50YXJnZXRSZXNvdXJjZS5hdHRyVGFyZ2V0SWQ7XG4gICAgdGhpcy50YXJnZXRBcm4gPSB0aGlzLnRhcmdldFJlc291cmNlLnJlZjtcbiAgICB0aGlzLnN0YXR1cyA9IHRoaXMudGFyZ2V0UmVzb3VyY2UuYXR0clN0YXR1cztcbiAgICB0aGlzLnN0YXR1c1JlYXNvbnMgPSB0aGlzLnRhcmdldFJlc291cmNlLmF0dHJTdGF0dXNSZWFzb25zO1xuICAgIHRoaXMuY3JlYXRlZEF0ID0gdGhpcy50YXJnZXRSZXNvdXJjZS5hdHRyQ3JlYXRlZEF0O1xuICAgIHRoaXMudXBkYXRlZEF0ID0gdGhpcy50YXJnZXRSZXNvdXJjZS5hdHRyVXBkYXRlZEF0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHN5bmNocm9uaXplIHRoaXMgZ2F0ZXdheSdzIHRhcmdldHNcbiAgICpcbiAgICogVGhpcyBtZXRob2QgZ3JhbnRzIHRoZSBgU3luY2hyb25pemVHYXRld2F5VGFyZ2V0c2AgcGVybWlzc2lvbiwgd2hpY2ggaXMgcHJpbWFyaWx5XG4gICAqIG5lZWRlZCBmb3IgTUNQIFNlcnZlciB0YXJnZXRzIHdoZW4geW91IG5lZWQgdG8gcmVmcmVzaCB0aGUgdG9vbCBjYXRhbG9nIGFmdGVyIHRoZVxuICAgKiBNQ1Agc2VydmVyJ3MgdG9vbHMgaGF2ZSBjaGFuZ2VkLlxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBncmFudFN5bmMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZTogZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnM6IEdBVEVXQVlfU1lOQ19QRVJNUyxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMuZ2F0ZXdheS5nYXRld2F5QXJuXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHRoZSBjcmVkZW50aWFsIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb25zIGJhc2VkIG9uIHRhcmdldCB0eXBlXG4gICAqXG4gICAqIC0gTGFtYmRhICYgU21pdGh5OiBEZWZhdWx0IHRvIElBTSByb2xlIGlmIG5vdCBwcm92aWRlZFxuICAgKiAtIE1DUCBTZXJ2ZXI6IFJldHVybiB1bmRlZmluZWQgaWYgbm90IHByb3ZpZGVkIChzZXJ2aWNlIGhhbmRsZXMgTm9BdXRoKVxuICAgKiAtIE9wZW5BUEkgJiBBUEkgR2F0ZXdheTogUmV0dXJuIGFzLWlzIChtdXN0IGJlIGV4cGxpY2l0bHkgcHJvdmlkZWQsIHNlcnZpY2UgaGFuZGxlcyBhdXRvbWF0aWNhbGx5KVxuICAgKlxuICAgKiBAcGFyYW0gcHJvdmlkZWRDcmVkZW50aWFscyBUaGUgY3JlZGVudGlhbHMgZnJvbSBwcm9wc1xuICAgKiBAcmV0dXJucyBUaGUgY3JlZGVudGlhbCBjb25maWd1cmF0aW9ucyB0byB1c2UsIG9yIHVuZGVmaW5lZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgX2dldFRhcmdldFNwZWNpZmljQ3JlZGVudGlhbHMoXG4gICAgcHJvdmlkZWRDcmVkZW50aWFsczogSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ1tdIHwgdW5kZWZpbmVkLFxuICApOiBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnW10gfCB1bmRlZmluZWQge1xuICAgIGlmIChwcm92aWRlZENyZWRlbnRpYWxzICYmIHByb3ZpZGVkQ3JlZGVudGlhbHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHByb3ZpZGVkQ3JlZGVudGlhbHM7XG4gICAgfVxuICAgIC8vIEFwcGx5IHRhcmdldC1zcGVjaWZpYyBkZWZhdWx0cyB3aGVuIG5vdCBwcm92aWRlZFxuICAgIHN3aXRjaCAodGhpcy50YXJnZXRUeXBlKSB7XG4gICAgICBjYXNlIE1jcFRhcmdldFR5cGUuTEFNQkRBOlxuICAgICAgY2FzZSBNY3BUYXJnZXRUeXBlLlNNSVRIWV9NT0RFTDpcbiAgICAgICAgcmV0dXJuIFtHYXRld2F5Q3JlZGVudGlhbFByb3ZpZGVyLmZyb21JYW1Sb2xlKCldO1xuXG4gICAgICBjYXNlIE1jcFRhcmdldFR5cGUuTUNQX1NFUlZFUjpcbiAgICAgICAgLy8gUmV0dXJuIGVtcHR5IGFycmF5LCAtIHNlcnZpY2UgaGFuZGxlcyBOb0F1dGggYXV0b21hdGljYWxseVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICBjYXNlIE1jcFRhcmdldFR5cGUuT1BFTkFQSV9TQ0hFTUE6XG4gICAgICBjYXNlIE1jcFRhcmdldFR5cGUuQVBJX0dBVEVXQVk6XG4gICAgICAgIC8vIE5vIGRlZmF1bHQgLSBtdXN0IGJlIGV4cGxpY2l0bHkgcHJvdmlkZWQsIHNlcnZpY2UgaGFuZGxlcyBhdXRvbWF0aWNhbGx5XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBbR2F0ZXdheUNyZWRlbnRpYWxQcm92aWRlci5mcm9tSWFtUm9sZSgpXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyBjcmVkZW50aWFsIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb25zIGZvciBDbG91ZEZvcm1hdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgX3JlbmRlckNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb25zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuY3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbnM/Lm1hcChwcm92aWRlciA9PiBwcm92aWRlci5fcmVuZGVyKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgZ2F0ZXdheSB0YXJnZXQgbmFtZSBmb3JtYXRcbiAgICogUGF0dGVybjogXihbMC05YS16QS1aXVstXT8pezEsMTAwfSRcbiAgICogTWF4IGxlbmd0aDogMTAwIGNoYXJhY3RlcnNcbiAgICogQHBhcmFtIGdhdGV3YXlUYXJnZXROYW1lIFRoZSBnYXRld2F5IHRhcmdldCBuYW1lIHRvIHZhbGlkYXRlXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIG5hbWUgaXMgaW52YWxpZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVHYXRld2F5VGFyZ2V0TmFtZShnYXRld2F5VGFyZ2V0TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChnYXRld2F5VGFyZ2V0TmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsZW5ndGhFcnJvcnMgPSB2YWxpZGF0ZVN0cmluZ0ZpZWxkKHtcbiAgICAgIHZhbHVlOiBnYXRld2F5VGFyZ2V0TmFtZSxcbiAgICAgIGZpZWxkTmFtZTogJ0dhdGV3YXkgdGFyZ2V0IG5hbWUnLFxuICAgICAgbWluTGVuZ3RoOiAxLFxuICAgICAgbWF4TGVuZ3RoOiAxMDAsXG4gICAgfSk7XG5cbiAgICBjb25zdCBwYXR0ZXJuRXJyb3JzID0gdmFsaWRhdGVGaWVsZFBhdHRlcm4oXG4gICAgICBnYXRld2F5VGFyZ2V0TmFtZSxcbiAgICAgICdHYXRld2F5IHRhcmdldCBuYW1lJyxcbiAgICAgIC9eKFswLTlhLXpBLVpdWy1dPyl7MSwxMDB9JC8sXG4gICAgICAnR2F0ZXdheSB0YXJnZXQgbmFtZSBtdXN0IGNvbnRhaW4gb25seSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgaHlwaGVucywgd2l0aCBoeXBoZW5zIG9ubHkgYmV0d2VlbiBjaGFyYWN0ZXJzJyxcbiAgICApO1xuXG4gICAgY29uc3QgYWxsRXJyb3JzID0gWy4uLmxlbmd0aEVycm9ycywgLi4ucGF0dGVybkVycm9yc107XG4gICAgaWYgKGFsbEVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGFsbEVycm9ycy5qb2luKCdcXG4nKSwgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgZGVzY3JpcHRpb24gZm9ybWF0XG4gICAqIE11c3QgYmUgYmV0d2VlbiAxIGFuZCAyMDAgY2hhcmFjdGVyc1xuICAgKiBAdGhyb3dzIEVycm9yIGlmIHZhbGlkYXRpb24gZmFpbHNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQoZGVzY3JpcHRpb24pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JzID0gdmFsaWRhdGVTdHJpbmdGaWVsZCh7XG4gICAgICB2YWx1ZTogZGVzY3JpcHRpb24sXG4gICAgICBmaWVsZE5hbWU6ICdHYXRld2F5IHRhcmdldCBkZXNjcmlwdGlvbicsXG4gICAgICBtaW5MZW5ndGg6IDEsXG4gICAgICBtYXhMZW5ndGg6IDIwMCxcbiAgICB9KTtcblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihlcnJvcnMuam9pbignXFxuJyksIHRoaXMpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,21 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ValidationError = void 0;
|
|
4
3
|
exports.validateStringField = validateStringField;
|
|
5
4
|
exports.validateFieldPattern = validateFieldPattern;
|
|
6
5
|
exports.validateOpenApiSchema = validateOpenApiSchema;
|
|
7
6
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
8
|
-
/**
|
|
9
|
-
* Error thrown when validation fails
|
|
10
|
-
* @internal
|
|
11
|
-
*/
|
|
12
|
-
class ValidationError extends Error {
|
|
13
|
-
constructor(message) {
|
|
14
|
-
super(message);
|
|
15
|
-
this.name = 'ValidationError';
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
exports.ValidationError = ValidationError;
|
|
19
7
|
/**
|
|
20
8
|
* Validates the length of a string field against minimum and maximum constraints.
|
|
21
9
|
* @param value - The string value to validate
|
|
@@ -330,4 +318,4 @@ function validateOpenApiSchema(params) {
|
|
|
330
318
|
validateCallbacksAndWebhooks(schemaObj, schemaName, errors);
|
|
331
319
|
return errors;
|
|
332
320
|
}
|
|
333
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidmFsaWRhdGlvbi1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWdDQSxrREE2QkM7QUFZRCxvREFrQ0M7QUEyUUQsc0RBa0JDO0FBeFlELDZDQUFvQztBQUVwQzs7O0dBR0c7QUFDSCxNQUFhLGVBQWdCLFNBQVEsS0FBSztJQUN4QyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztLQUMvQjtDQUNGO0FBTEQsMENBS0M7QUFXRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxNQUE4QjtJQUNoRSxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7SUFFNUIsK0JBQStCO0lBQy9CLElBQUksTUFBTSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN6QixPQUFPLE1BQU0sQ0FBQyxDQUFDLDRDQUE0QztJQUM3RCxDQUFDO0lBRUQsa0RBQWtEO0lBQ2xELElBQUksbUJBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDckMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELDREQUE0RDtJQUM1RCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUUxQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMzQyxNQUFNLENBQUMsSUFBSSxDQUNULGFBQWEsTUFBTSxDQUFDLFNBQVMsT0FBTyxhQUFhLHNEQUFzRCxNQUFNLENBQUMsU0FBUyxhQUFhLENBQ3JJLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENB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RCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5cbi8qKlxuICogRXJyb3IgdGhyb3duIHdoZW4gdmFsaWRhdGlvbiBmYWlsc1xuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdWYWxpZGF0aW9uRXJyb3InO1xuICB9XG59XG5pbnRlcmZhY2UgSW50ZXJ2YWxWYWxpZGF0aW9uIHtcbiAgZmllbGROYW1lOiBzdHJpbmc7XG4gIG1pbkxlbmd0aDogbnVtYmVyO1xuICBtYXhMZW5ndGg6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFN0cmluZ0xlbmd0aFZhbGlkYXRpb24gZXh0ZW5kcyBJbnRlcnZhbFZhbGlkYXRpb24ge1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgbGVuZ3RoIG9mIGEgc3RyaW5nIGZpZWxkIGFnYWluc3QgbWluaW11bSBhbmQgbWF4aW11bSBjb25zdHJhaW50cy5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBzdHJpbmcgdmFsdWUgdG8gdmFsaWRhdGVcbiAqIEBwYXJhbSBmaWVsZE5hbWUgLSBOYW1lIG9mIHRoZSBmaWVsZCBiZWluZyB2YWxpZGF0ZWQgKGZvciBlcnJvciBtZXNzYWdlcylcbiAqIEBwYXJhbSBtaW5MZW5ndGggLSBNaW5pbXVtIGFsbG93ZWQgbGVuZ3RoIChkZWZhdWx0cyB0byAwKVxuICogQHBhcmFtIG1heExlbmd0aCAtIE1heGltdW0gYWxsb3dlZCBsZW5ndGhcbiAqIEByZXR1cm5zIHRydWUgaWYgdmFsaWRhdGlvbiBwYXNzZXNcbiAqIEB0aHJvd3MgRXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlscyB3aXRoIGN1cnJlbnQgbGVuZ3RoIGluZm9ybWF0aW9uXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU3RyaW5nRmllbGQocGFyYW1zOiBTdHJpbmdMZW5ndGhWYWxpZGF0aW9uKTogc3RyaW5nW10ge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgLy8gSGFuZGxlIG51bGwvdW5kZWZpbmVkIHZhbHVlc1xuICBpZiAocGFyYW1zLnZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gZXJyb3JzOyAvLyBTa2lwIHZhbGlkYXRpb24gZm9yIG51bGwvdW5kZWZpbmVkIHZhbHVlc1xuICB9XG5cbiAgLy8gU2tpcCB2YWxpZGF0aW9uIGlmIHZhbHVlIGlzIGFuIHVucmVzb2x2ZWQgdG9rZW5cbiAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChwYXJhbXMudmFsdWUpKSB7XG4gICAgcmV0dXJuIGVycm9ycztcbiAgfVxuXG4gIC8vIE5vdyBzYWZlIHRvIGFjY2VzcyAubGVuZ3RoIHNpbmNlIHdlIGtub3cgaXQncyBub3QgYSB0b2tlblxuICBjb25zdCBjdXJyZW50TGVuZ3RoID0gcGFyYW1zLnZhbHVlLmxlbmd0aDtcblxuICBpZiAocGFyYW1zLnZhbHVlLmxlbmd0aCA+IHBhcmFtcy5tYXhMZW5ndGgpIHtcbiAgICBlcnJvcnMucHVzaChcbiAgICAgIGBUaGUgZmllbGQgJHtwYXJhbXMuZmllbGROYW1lfSBpcyAke2N1cnJlbnRMZW5ndGh9IGNoYXJhY3RlcnMgbG9uZyBidXQgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHtwYXJhbXMubWF4TGVuZ3RofSBjaGFyYWN0ZXJzYCxcbiAgICApO1xuICB9XG5cbiAgaWYgKHBhcmFtcy52YWx1ZS5sZW5ndGggPCBwYXJhbXMubWluTGVuZ3RoKSB7XG4gICAgZXJyb3JzLnB1c2goXG4gICAgICBgVGhlIGZpZWxkICR7cGFyYW1zLmZpZWxkTmFtZX0gaXMgJHtjdXJyZW50TGVuZ3RofSBjaGFyYWN0ZXJzIGxvbmcgYnV0IG11c3QgYmUgYXQgbGVhc3QgJHtwYXJhbXMubWluTGVuZ3RofSBjaGFyYWN0ZXJzYCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGVycm9ycztcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBzdHJpbmcgZmllbGQgYWdhaW5zdCBhIHJlZ2V4IHBhdHRlcm4uXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgc3RyaW5nIHZhbHVlIHRvIHZhbGlkYXRlXG4gKiBAcGFyYW0gZmllbGROYW1lIC0gTmFtZSBvZiB0aGUgZmllbGQgYmVpbmcgdmFsaWRhdGVkIChmb3IgZXJyb3IgbWVzc2FnZXMpXG4gKiBAcGFyYW0gcGF0dGVybiAtIFJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIHRvIHRlc3QgYWdhaW5zdFxuICogQHBhcmFtIGN1c3RvbU1lc3NhZ2UgLSBPcHRpb25hbCBjdXN0b20gZXJyb3IgbWVzc2FnZVxuICogQHJldHVybnMgdHJ1ZSBpZiB2YWxpZGF0aW9uIHBhc3Nlc1xuICogQHRocm93cyBFcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzIHdpdGggZGV0YWlsZWQgbWVzc2FnZVxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZpZWxkUGF0dGVybihcbiAgdmFsdWU6IHN0cmluZyxcbiAgZmllbGROYW1lOiBzdHJpbmcsXG4gIHBhdHRlcm46IFJlZ0V4cCxcbiAgY3VzdG9tTWVzc2FnZT86IHN0cmluZyxcbik6IHN0cmluZ1tdIHtcbiAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIEhhbmRsZSBudWxsL3VuZGVmaW5lZCB2YWx1ZXNcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gZXJyb3JzOyAvLyBTa2lwIHZhbGlkYXRpb24gZm9yIG51bGwvdW5kZWZpbmVkIHZhbHVlc1xuICB9XG5cbiAgLy8gRXZhbHVhdGUgb25seSBpZiBpdCBpcyBub3QgYW4gdW5yZXNvbHZlZCBUb2tlblxuICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZCh2YWx1ZSkpIHtcbiAgICAvLyBWZXJpZnkgdHlwZVxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBlcnJvcnMucHVzaChgRXhwZWN0ZWQgc3RyaW5nIGZvciAke2ZpZWxkTmFtZX0sIGdvdCAke3R5cGVvZiB2YWx1ZX1gKTtcbiAgICAgIHJldHVybiBlcnJvcnM7IC8vIFJldHVybiBlYXJseSBpZiB2YWx1ZSBpcyBub3QgYSBzdHJpbmdcbiAgICB9XG4gICAgLy8gVmFsaWRhdGUgc3BlY2lmaWVkIHJlZ2V4XG4gICAgaWYgKCEocGF0dGVybiBpbnN0YW5jZW9mIFJlZ0V4cCkpIHtcbiAgICAgIGVycm9ycy5wdXNoKCdQYXR0ZXJuIG11c3QgYmUgYSB2YWxpZCByZWd1bGFyIGV4cHJlc3Npb24nKTtcbiAgICAgIHJldHVybiBlcnJvcnM7IC8vIFJldHVybiBlYXJseSBpZiBwYXR0ZXJuIGlzIG5vdCBhIFJlZ0V4cFxuICAgIH1cblxuICAgIC8vIFBhdHRlcm4gdmFsaWRhdGlvbiAob25seSBpZiB2YWx1ZSBpcyBzdHJpbmcgYW5kIHBhdHRlcm4gaXMgUmVnRXhwKVxuICAgIGlmICghcGF0dGVybi50ZXN0KHZhbHVlKSkge1xuICAgICAgY29uc3QgZGVmYXVsdE1lc3NhZ2UgPSBgVGhlIGZpZWxkICR7ZmllbGROYW1lfSB3aXRoIHZhbHVlIFwiJHt2YWx1ZX1cIiBkb2VzIG5vdCBtYXRjaCB0aGUgcmVxdWlyZWQgcGF0dGVybiAke3BhdHRlcm59YDtcbiAgICAgIGVycm9ycy5wdXNoKGN1c3RvbU1lc3NhZ2UgfHwgZGVmYXVsdE1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlcnJvcnM7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25GbjxUPiA9IChwYXJhbTogVCkgPT4gc3RyaW5nW107XG5cbi8qKlxuICogT3BlbkFQSSBzY2hlbWEgdmFsaWRhdGlvbiBwYXJhbWV0ZXJzXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcGVuQXBpU2NoZW1hVmFsaWRhdGlvblBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT3BlbkFQSSBzY2hlbWEgdG8gdmFsaWRhdGUgKGFzIGEgc3RyaW5nKVxuICAgKi9cbiAgc2NoZW1hOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIG5hbWUgZm9yIHRoZSBzY2hlbWEgKGZvciBlcnJvciBtZXNzYWdlcylcbiAgICovXG4gIHNjaGVtYU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VzIE9wZW5BUEkgc2NoZW1hIEpTT04gYW5kIHZhbGlkYXRlcyBmb3JtYXRcbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBwYXJzZU9wZW5BcGlKc29uKHNjaGVtYTogc3RyaW5nLCBzY2hlbWFOYW1lOiBzdHJpbmcsIGVycm9yczogc3RyaW5nW10pOiBhbnkgfCBudWxsIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShzY2hlbWEpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZXJyb3JzLnB1c2goYCR7c2NoZW1hTmFtZX0gbXVzdCBiZSBpbiBKU09OIGZvcm1hdC4gWUFNTCBpcyBub3Qgc3VwcG9ydGVkLiBFcnJvcjogJHtlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSl9YCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgT3BlbkFQSSB2ZXJzaW9uICgzLjAueCBvciAzLjEueClcbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZU9wZW5BcGlWZXJzaW9uKHNjaGVtYU9iajogYW55LCBzY2hlbWFOYW1lOiBzdHJpbmcsIGVycm9yczogc3RyaW5nW10pOiB2b2lkIHtcbiAgaWYgKCFzY2hlbWFPYmoub3BlbmFwaSkge1xuICAgIGVycm9ycy5wdXNoKGAke3NjaGVtYU5hbWV9IG11c3QgaW5jbHVkZSBhbiAnb3BlbmFwaScgZmllbGQgc3BlY2lmeWluZyB0aGUgdmVyc2lvbmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHZlcnNpb24gPSBzY2hlbWFPYmoub3BlbmFwaTtcbiAgICBpZiAodHlwZW9mIHZlcnNpb24gIT09ICdzdHJpbmcnKSB7XG4gICAgICBlcnJvcnMucHVzaChgJHtzY2hlbWFOYW1lfSAnb3BlbmFwaScgZmllbGQgbXVzdCBiZSBhIHN0cmluZ2ApO1xuICAgIH0gZWxzZSBpZiAoIXZlcnNpb24uc3RhcnRzV2l0aCgnMy4wLicpICYmICF2ZXJzaW9uLnN0YXJ0c1dpdGgoJzMuMS4nKSkge1xuICAgICAgZXJyb3JzLnB1c2goYCR7c2NoZW1hTmFtZX0gdmVyc2lvbiAke3ZlcnNpb259IGlzIG5vdCBzdXBwb3J0ZWQuIE9ubHkgT3BlbkFQSSAzLjAueCBhbmQgMy4xLnggYXJlIHN1cHBvcnRlZGApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBzZXJ2ZXIgVVJMc1xuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlU2VydmVyVXJscyhzY2hlbWFPYmo6IGFueSwgc2NoZW1hTmFtZTogc3RyaW5nLCBlcnJvcnM6IHN0cmluZ1tdKTogdm9pZCB7XG4gIGlmICghc2NoZW1hT2JqLnNlcnZlcnMgfHwgIUFycmF5LmlzQXJyYXkoc2NoZW1hT2JqLnNlcnZlcnMpIHx8IHNjaGVtYU9iai5zZXJ2ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIGVycm9ycy5wdXNoKGAke3NjaGVtYU5hbWV9IG11c3QgaW5jbHVkZSBhdCBsZWFzdCBvbmUgc2VydmVyIHdpdGggYSB2YWxpZCBVUkxgKTtcbiAgfSBlbHNlIHtcbiAgICBzY2hlbWFPYmouc2VydmVycy5mb3JFYWNoKChzZXJ2ZXI6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgaWYgKCFzZXJ2ZXIudXJsIHx8IHR5cGVvZiBzZXJ2ZXIudXJsICE9PSAnc3RyaW5nJykge1xuICAgICAgICBlcnJvcnMucHVzaChgJHtzY2hlbWFOYW1lfSBzZXJ2ZXJbJHtpbmRleH1dIG11c3QgaGF2ZSBhIHZhbGlkIFVSTGApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgVVJMIGNvbnRhaW5zIGEgcHJvdG9jb2wgc2VwYXJhdG9yXG4gICAgICAgIGlmICghc2VydmVyLnVybC5pbmNsdWRlcygnOi8vJykpIHtcbiAgICAgICAgICBlcnJvcnMucHVzaChgJHtzY2hlbWFOYW1lfSBzZXJ2ZXJbJHtpbmRleH1dIFVSTCBtdXN0IGNvbnRhaW4gYSBwcm90b2NvbCAoZS5nLiwgaHR0cDovLyBvciBodHRwczovLylgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBDaGVjayBpZiBpdCBzdGFydHMgd2l0aCBodHRwIG9yIGh0dHBzIChjYXNlLWluc2Vuc2l0aXZlKVxuICAgICAgICAgIC8vIEFsbG93IHRlbXBsYXRlIHZhcmlhYmxlcyBsaWtlIHtwcm90b2NvbH06Ly9cbiAgICAgICAgICBjb25zdCBwcm90b2NvbEVuZCA9IHNlcnZlci51cmwuaW5kZXhPZignOi8vJyk7XG4gICAgICAgICAgY29uc3QgcHJvdG9jb2wgPSBzZXJ2ZXIudXJsLnN1YnN0cmluZygwLCBwcm90b2NvbEVuZCk7XG5cbiAgICAgICAgICAvLyBJZiBwcm90b2NvbCBkb2Vzbid0IGNvbnRhaW4gdGVtcGxhdGUgdmFyaWFibGVzLCB2YWxpZGF0ZSBpdFxuICAgICAgICAgIGlmICghcHJvdG9jb2wuaW5jbHVkZXMoJ3snKSkge1xuICAgICAgICAgICAgaWYgKHByb3RvY29sLnRvTG93ZXJDYXNlKCkgIT09ICdodHRwJyAmJiBwcm90b2NvbC50b0xvd2VyQ2FzZSgpICE9PSAnaHR0cHMnKSB7XG4gICAgICAgICAgICAgIGVycm9ycy5wdXNoKGAke3NjaGVtYU5hbWV9IHNlcnZlclske2luZGV4fV0gVVJMIG11c3QgdXNlIEhUVFAgb3IgSFRUUFMgcHJvdG9jb2xgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gSWYgcHJvdG9jb2wgY29udGFpbnMgdGVtcGxhdGUgdmFyaWFibGVzLCBza2lwIHZhbGlkYXRpb24gKHdpbGwgYmUgdmFsaWRhdGVkIGF0IHJ1bnRpbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBwYXRocyBhbmQgb3BlcmF0aW9uc1xuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlUGF0aHNBbmRPcGVyYXRpb25zKHNjaGVtYU9iajogYW55LCBzY2hlbWFOYW1lOiBzdHJpbmcsIGVycm9yczogc3RyaW5nW10pOiB2b2lkIHtcbiAgaWYgKCFzY2hlbWFPYmoucGF0aHMgfHwgdHlwZW9mIHNjaGVtYU9iai5wYXRocyAhPT0gJ29iamVjdCcpIHtcbiAgICBlcnJvcnMucHVzaChgJHtzY2hlbWFOYW1lfSBtdXN0IGluY2x1ZGUgYSAncGF0aHMnIG9iamVjdGApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IG9wZXJhdGlvbnNNaXNzaW5nSWQ6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgdW5zdXBwb3J0ZWRNZWRpYVR5cGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3QgcGF0aHNXaXRoQ29tcGxleFNlcmlhbGl6ZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgT2JqZWN0LmVudHJpZXMoc2NoZW1hT2JqLnBhdGhzKS5mb3JFYWNoKChbcGF0aCwgcGF0aEl0ZW1dOiBbc3RyaW5nLCBhbnldKSA9PiB7XG4gICAgICAvLyBDaGVjayBmb3IgY29tcGxleCBwYXRoIHBhcmFtZXRlciBzZXJpYWxpemVyc1xuICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJ3s7JykgfHwgcGF0aC5pbmNsdWRlcygnez8nKSB8fCBwYXRoLmluY2x1ZGVzKCd7Kn0nKSkge1xuICAgICAgICBwYXRoc1dpdGhDb21wbGV4U2VyaWFsaXplcnMucHVzaChwYXRoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhdGhJdGVtICYmIHR5cGVvZiBwYXRoSXRlbSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgLy8gQ2hlY2sgZWFjaCBIVFRQIG1ldGhvZFxuICAgICAgICBjb25zdCBodHRwTWV0aG9kcyA9IFsnZ2V0JywgJ3Bvc3QnLCAncHV0JywgJ2RlbGV0ZScsICdwYXRjaCcsICdoZWFkJywgJ29wdGlvbnMnXTtcbiAgICAgICAgaHR0cE1ldGhvZHMuZm9yRWFjaChtZXRob2QgPT4ge1xuICAgICAgICAgIGlmIChwYXRoSXRlbVttZXRob2RdKSB7XG4gICAgICAgICAgICBjb25zdCBvcGVyYXRpb24gPSBwYXRoSXRlbVttZXRob2RdO1xuXG4gICAgICAgICAgICAvLyBDaGVjayBmb3Igb3BlcmF0aW9uSWQgKFJFUVVJUkVEKVxuICAgICAgICAgICAgaWYgKCFvcGVyYXRpb24ub3BlcmF0aW9uSWQpIHtcbiAgICAgICAgICAgICAgb3BlcmF0aW9uc01pc3NpbmdJZC5wdXNoKGAke21ldGhvZC50b1VwcGVyQ2FzZSgpfSAke3BhdGh9YCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENoZWNrIHJlcXVlc3QgYm9keSBtZWRpYSB0eXBlc1xuICAgICAgICAgICAgaWYgKG9wZXJhdGlvbi5yZXF1ZXN0Qm9keT8uY29udGVudCkge1xuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhvcGVyYXRpb24ucmVxdWVzdEJvZHkuY29udGVudCkuZm9yRWFjaChtZWRpYVR5cGUgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChtZWRpYVR5cGUgIT09ICdhcHBsaWNhdGlvbi9qc29uJyAmJlxuICAgICAgICAgICAgICAgICAgICBtZWRpYVR5cGUgIT09ICdhcHBsaWNhdGlvbi94bWwnICYmXG4gICAgICAgICAgICAgICAgICAgIG1lZGlhVHlwZSAhPT0gJ211bHRpcGFydC9mb3JtLWRhdGEnICYmXG4gICAgICAgICAgICAgICAgICAgIG1lZGlhVHlwZSAhPT0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpIHtcbiAgICAgICAgICAgICAgICAgIHVuc3VwcG9ydGVkTWVkaWFUeXBlcy5hZGQobWVkaWFUeXBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBDaGVjayByZXNwb25zZSBtZWRpYSB0eXBlc1xuICAgICAgICAgICAgaWYgKG9wZXJhdGlvbi5yZXNwb25zZXMpIHtcbiAgICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyhvcGVyYXRpb24ucmVzcG9uc2VzKS5mb3JFYWNoKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlc3BvbnNlLmNvbnRlbnQpLmZvckVhY2gobWVkaWFUeXBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1lZGlhVHlwZSAhPT0gJ2FwcGxpY2F0aW9uL2pzb24nICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBtZWRpYVR5cGUgIT09ICdhcHBsaWNhdGlvbi94bWwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdW5zdXBwb3J0ZWRNZWRpYVR5cGVzLmFkZChtZWRpYVR5cGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBDaGVjayBmb3IgY29tcGxleCBwYXJhbWV0ZXIgc2VyaWFsaXplcnNcbiAgICAgICAgICAgIGlmIChvcGVyYXRpb24ucGFyYW1ldGVycykge1xuICAgICAgICAgICAgICBvcGVyYXRpb24ucGFyYW1ldGVycy5mb3JFYWNoKChwYXJhbTogYW55LCBpZHg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwYXJhbS5zdHlsZSAmJiBbJ21hdHJpeCcsICdsYWJlbCcsICdkZWVwT2JqZWN0J10uaW5jbHVkZXMocGFyYW0uc3R5bGUpKSB7XG4gICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChgJHtzY2hlbWFOYW1lfSAke21ldGhvZC50b1VwcGVyQ2FzZSgpfSAke3BhdGh9IHBhcmFtZXRlclske2lkeH1dIHVzZXMgdW5zdXBwb3J0ZWQgc2VyaWFsaXphdGlvbiBzdHlsZTogJHtwYXJhbS5zdHlsZX1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAob3BlcmF0aW9uc01pc3NpbmdJZC5sZW5ndGggPiAwKSB7XG4gICAgICBlcnJvcnMucHVzaChgJHtzY2hlbWFOYW1lfSBvcGVyYXRpb25zIG11c3QgaW5jbHVkZSAnb3BlcmF0aW9uSWQnIGZpZWxkLiBNaXNzaW5nIGluOiAke29wZXJhdGlvbnNNaXNzaW5nSWQuam9pbignLCAnKX1gKTtcbiAgICB9XG5cbiAgICBpZiAocGF0aHNXaXRoQ29tcGxleFNlcmlhbGl6ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGVycm9ycy5wdXNoKGAke3NjaGVtYU5hbWV9IGNvbnRhaW5zIHVuc3VwcG9ydGVkIGNvbXBsZXggcGF0aCBwYXJhbWV0ZXIgc2VyaWFsaXplcnMgaW46ICR7cGF0aHNXaXRoQ29tcGxleFNlcmlhbGl6ZXJzLmpvaW4oJywgJyl9YCk7XG4gICAgfVxuXG4gICAgaWYgKHVuc3VwcG9ydGVkTWVkaWFUeXBlcy5zaXplID4gMCkge1xuICAgICAgY29uc3QgbWVkaWFUeXBlc0xpc3QgPSBBcnJheS5mcm9tKHVuc3VwcG9ydGVkTWVkaWFUeXBlcykuam9pbignLCAnKTtcbiAgICAgIGVycm9ycy5wdXNoKGAke3NjaGVtYU5hbWV9IHVzZXMgdW5zdXBwb3J0ZWQgbWVkaWEgdHlwZXM6ICR7bWVkaWFUeXBlc0xpc3R9LiBPbmx5IGFwcGxpY2F0aW9uL2pzb24sIGFwcGxpY2F0aW9uL3htbCwgbXVsdGlwYXJ0L2Zvcm0tZGF0YSwgYW5kIGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCBhcmUgc3VwcG9ydGVkYCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVjdXJzaXZlIGhlbHBlciB0byBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgc2NoZW1hIGNvbXBvc2l0aW9uIChvbmVPZiwgYW55T2YsIGFsbE9mKVxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGNoZWNrU2NoZW1hQ29tcG9zaXRpb24ob2JqOiBhbnksIHNjaGVtYU5hbWU6IHN0cmluZywgZXJyb3JzOiBzdHJpbmdbXSwgcGF0aDogc3RyaW5nID0gJycpOiB2b2lkIHtcbiAgaWYgKCFvYmogfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHJldHVybjtcblxuICAvLyBDaGVjayBjdXJyZW50IGxldmVsIGZvciB1bnN1cHBvcnRlZCBrZXl3b3Jkc1xuICBpZiAoJ29uZU9mJyBpbiBvYmopIHtcbiAgICBlcnJvcnMucHVzaChgJHtzY2hlbWFOYW1lfSBjb250YWlucyB1bnN1cHBvcnRlZCAnb25lT2YnIHNjaGVtYSBjb21wb3NpdGlvbiBhdCAke3BhdGggfHwgJ3Jvb3QnfWApO1xuICB9XG4gIGlmICgnYW55T2YnIGluIG9iaikge1xuICAgIGVycm9ycy5wdXNoKGAke3NjaGVtYU5hbWV9IGNvbnRhaW5zIHVuc3VwcG9ydGVkICdhbnlPZicgc2NoZW1hIGNvbXBvc2l0aW9uIGF0ICR7cGF0aCB8fCAncm9vdCd9YCk7XG4gIH1cbiAgaWYgKCdhbGxPZicgaW4gb2JqKSB7XG4gICAgZXJyb3JzLnB1c2goYCR7c2NoZW1hTmFtZX0gY29udGFpbnMgdW5zdXBwb3J0ZWQgJ2FsbE9mJyBzY2hlbWEgY29tcG9zaXRpb24gYXQgJHtwYXRoIHx8ICdyb290J31gKTtcbiAgfVxuXG4gIC8vIFJlY3Vyc2l2ZWx5IGNoZWNrIG5lc3RlZCBvYmplY3RzXG4gIE9iamVjdC5lbnRyaWVzKG9iaikuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgaWYgKGtleSAhPT0gJ29uZU9mJyAmJiBrZXkgIT09ICdhbnlPZicgJiYga2V5ICE9PSAnYWxsT2YnICYmIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IG5ld1BhdGggPSBwYXRoID8gYCR7cGF0aH0uJHtrZXl9YCA6IGtleTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNoZWNrU2NoZW1hQ29tcG9zaXRpb24oaXRlbSwgc2NoZW1hTmFtZSwgZXJyb3JzLCBgJHtuZXdQYXRofVske2luZGV4fV1gKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGVja1NjaGVtYUNvbXBvc2l0aW9uKHZhbHVlLCBzY2hlbWFOYW1lLCBlcnJvcnMsIG5ld1BhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHNjaGVtYSBjb21wb3NpdGlvbiAoY2hlY2tzIGZvciB1bnN1cHBvcnRlZCBvbmVPZiwgYW55T2YsIGFsbE9mKVxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlU2NoZW1hQ29tcG9zaXRpb24oc2NoZW1hT2JqOiBhbnksIHNjaGVtYU5hbWU6IHN0cmluZywgZXJyb3JzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAvLyBDaGVjayBjb21wb25lbnRzL2RlZmluaXRpb25zIGZvciB1bnN1cHBvcnRlZCBzY2hlbWEgY29tcG9zaXRpb25cbiAgaWYgKHNjaGVtYU9iai5jb21wb25lbnRzPy5zY2hlbWFzKSB7XG4gICAgY2hlY2tTY2hlbWFDb21wb3NpdGlvbihzY2hlbWFPYmouY29tcG9uZW50cy5zY2hlbWFzLCBzY2hlbWFOYW1lLCBlcnJvcnMsICdjb21wb25lbnRzLnNjaGVtYXMnKTtcbiAgfVxuICBpZiAoc2NoZW1hT2JqLmRlZmluaXRpb25zKSB7XG4gICAgY2hlY2tTY2hlbWFDb21wb3NpdGlvbihzY2hlbWFPYmouZGVmaW5pdGlvbnMsIHNjaGVtYU5hbWUsIGVycm9ycywgJ2RlZmluaXRpb25zJyk7XG4gIH1cblxuICAvLyBDaGVjayBwYXRocyBmb3IgdW5zdXBwb3J0ZWQgc2NoZW1hIGNvbXBvc2l0aW9uXG4gIGlmIChzY2hlbWFPYmoucGF0aHMpIHtcbiAgICBjaGVja1NjaGVtYUNvbXBvc2l0aW9uKHNjaGVtYU9iai5wYXRocywgc2NoZW1hTmFtZSwgZXJyb3JzLCAncGF0aHMnKTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBzZWN1cml0eSBzY2hlbWVzXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVTZWN1cml0eVNjaGVtZXMoc2NoZW1hT2JqOiBhbnksIHNjaGVtYU5hbWU6IHN0cmluZywgZXJyb3JzOiBzdHJpbmdbXSk6IHZvaWQge1xuICBpZiAoc2NoZW1hT2JqLnNlY3VyaXR5ICYmIEFycmF5LmlzQXJyYXkoc2NoZW1hT2JqLnNlY3VyaXR5KSAmJiBzY2hlbWFPYmouc2VjdXJpdHkubGVuZ3RoID4gMCkge1xuICAgIGVycm9ycy5wdXNoKGAke3NjaGVtYU5hbWV9IGNvbnRhaW5zIHNlY3VyaXR5IHNjaGVtZXMgYXQgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBsZXZlbC4gQXV0aGVudGljYXRpb24gbXVzdCBiZSBjb25maWd1cmVkIHVzaW5nIHRoZSBHYXRld2F5J3Mgb3V0Ym91bmQgYXV0aG9yaXphdGlvbiBjb25maWd1cmF0aW9uIGluc3RlYWRgKTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBjYWxsYmFja3MgYW5kIHdlYmhvb2tzXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVDYWxsYmFja3NBbmRXZWJob29rcyhzY2hlbWFPYmo6IGFueSwgc2NoZW1hTmFtZTogc3RyaW5nLCBlcnJvcnM6IHN0cmluZ1tdKTogdm9pZCB7XG4gIC8vIENoZWNrIGZvciBjYWxsYmFja3MgaW4gb3BlcmF0aW9uc1xuICBpZiAoc2NoZW1hT2JqLnBhdGhzKSB7XG4gICAgT2JqZWN0LmVudHJpZXMoc2NoZW1hT2JqLnBhdGhzKS5mb3JFYWNoKChbcGF0aCwgcGF0aEl0ZW1dOiBbc3RyaW5nLCBhbnldKSA9PiB7XG4gICAgICBpZiAocGF0aEl0ZW0gJiYgdHlwZW9mIHBhdGhJdGVtID09PSAnb2JqZWN0Jykge1xuICAgICAgICBPYmplY3QudmFsdWVzKHBhdGhJdGVtKS5mb3JFYWNoKChvcGVyYXRpb246IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChvcGVyYXRpb24gJiYgdHlwZW9mIG9wZXJhdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmIChvcGVyYXRpb24uY2FsbGJhY2tzKSB7XG4gICAgICAgICAgICAgIGVycm9ycy5wdXNoKGAke3NjaGVtYU5hbWV9IGNvbnRhaW5zIHVuc3VwcG9ydGVkICdjYWxsYmFja3MnIGluIHBhdGggJHtwYXRofWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBDaGVjayBmb3Igd2ViaG9va3NcbiAgaWYgKHNjaGVtYU9iai53ZWJob29rcykge1xuICAgIGVycm9ycy5wdXNoKGAke3NjaGVtYU5hbWV9IGNvbnRhaW5zIHVuc3VwcG9ydGVkICd3ZWJob29rcydgKTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhbiBPcGVuQVBJIHNjaGVtYSBhZ2FpbnN0IEdhdGV3YXkgcmVxdWlyZW1lbnRzXG4gKiBCYXNlZCBvbiBBV1MgZG9jdW1lbnRhdGlvbjogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlL2xhdGVzdC9kZXZndWlkZS9nYXRld2F5LXNjaGVtYS1vcGVuYXBpLmh0bWxcbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHZhbGlkYXRpb24gcGFyYW1ldGVyc1xuICogQHJldHVybnMgQXJyYXkgb2YgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcyAoZW1wdHkgaWYgdmFsaWQpXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlT3BlbkFwaVNjaGVtYShwYXJhbXM6IE9wZW5BcGlTY2hlbWFWYWxpZGF0aW9uUGFyYW1zKTogc3RyaW5nW10ge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHsgc2NoZW1hLCBzY2hlbWFOYW1lID0gJ09wZW5BUEkgc2NoZW1hJyB9ID0gcGFyYW1zO1xuXG4gIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQoc2NoZW1hKSkge1xuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cbiAgY29uc3Qgc2NoZW1hT2JqID0gcGFyc2VPcGVuQXBpSnNvbihzY2hlbWEsIHNjaGVtYU5hbWUsIGVycm9ycyk7XG4gIGlmICghc2NoZW1hT2JqKSByZXR1cm4gZXJyb3JzO1xuXG4gIHZhbGlkYXRlT3BlbkFwaVZlcnNpb24oc2NoZW1hT2JqLCBzY2hlbWFOYW1lLCBlcnJvcnMpO1xuICB2YWxpZGF0ZVNlcnZlclVybHMoc2NoZW1hT2JqLCBzY2hlbWFOYW1lLCBlcnJvcnMpO1xuICB2YWxpZGF0ZVBhdGhzQW5kT3BlcmF0aW9ucyhzY2hlbWFPYmosIHNjaGVtYU5hbWUsIGVycm9ycyk7XG4gIHZhbGlkYXRlU2NoZW1hQ29tcG9zaXRpb24oc2NoZW1hT2JqLCBzY2hlbWFOYW1lLCBlcnJvcnMpO1xuICB2YWxpZGF0ZVNlY3VyaXR5U2NoZW1lcyhzY2hlbWFPYmosIHNjaGVtYU5hbWUsIGVycm9ycyk7XG4gIHZhbGlkYXRlQ2FsbGJhY2tzQW5kV2ViaG9va3Moc2NoZW1hT2JqLCBzY2hlbWFOYW1lLCBlcnJvcnMpO1xuXG4gIHJldHVybiBlcnJvcnM7XG59XG4iXX0=
|
|
321
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidmFsaWRhdGlvbi1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBeUJBLGtEQTZCQztBQVlELG9EQWtDQztBQTJRRCxzREFrQkM7QUFqWUQsNkNBQW9DO0FBZXBDOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLE1BQThCO0lBQ2hFLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUU1QiwrQkFBK0I7SUFDL0IsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3pCLE9BQU8sTUFBTSxDQUFDLENBQUMsNENBQTRDO0lBQzdELENBQUM7SUFFRCxrREFBa0Q7SUFDbEQsSUFBSSxtQkFBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNyQyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsNERBQTREO0lBQzVELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBRTFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxJQUFJLENBQ1QsYUFBYSxNQUFNLENBQUMsU0FBUyxPQUFPLGFBQWEsc0RBQXNELE1BQU0sQ0FBQyxTQUFTLGFBQWEsQ0FDckksQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMzQyxNQUFNLENBQUMsSUFBSSxDQUNULGFBQWEsTUFBTSxDQUFDLFNBQVMsT0FBTyxhQUFhLHlDQUF5QyxNQUFNLENBQUMsU0FBUyxhQUFhLENBQ3hILENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7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QUksU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLGtDQUFrQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IscUJBQXFCLENBQUMsTUFBcUM7SUFDekUsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxHQUFHLGdCQUFnQixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRXpELElBQUksbUJBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUMvQixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQ0QsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvRCxJQUFJLENBQUMsU0FBUztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBRTlCLHNCQUFzQixDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEQsa0JBQWtCLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRCwwQkFBMEIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFELHlCQUF5QixDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekQsdUJBQXVCLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2RCw0QkFBNEIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb2tlbiB9IGZyb20gJ2F3cy1jZGstbGliJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuaW50ZXJmYWNlIEludGVydmFsVmFsaWRhdGlvbiB7XG4gIGZpZWxkTmFtZTogc3RyaW5nO1xuICBtaW5MZW5ndGg6IG51bWJlcjtcbiAgbWF4TGVuZ3RoOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBTdHJpbmdMZW5ndGhWYWxpZGF0aW9uIGV4dGVuZHMgSW50ZXJ2YWxWYWxpZGF0aW9uIHtcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIGxlbmd0aCBvZiBhIHN0cmluZyBmaWVsZCBhZ2FpbnN0IG1pbmltdW0gYW5kIG1heGltdW0gY29uc3RyYWludHMuXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgc3RyaW5nIHZhbHVlIHRvIHZhbGlkYXRlXG4gKiBAcGFyYW0gZmllbGROYW1lIC0gTmFtZSBvZiB0aGUgZmllbGQgYmVpbmcgdmFsaWRhdGVkIChmb3IgZXJyb3IgbWVzc2FnZXMpXG4gKiBAcGFyYW0gbWluTGVuZ3RoIC0gTWluaW11bSBhbGxvd2VkIGxlbmd0aCAoZGVmYXVsdHMgdG8gMClcbiAqIEBwYXJhbSBtYXhMZW5ndGggLSBNYXhpbXVtIGFsbG93ZWQgbGVuZ3RoXG4gKiBAcmV0dXJucyB0cnVlIGlmIHZhbGlkYXRpb24gcGFzc2VzXG4gKiBAdGhyb3dzIEVycm9yIGlmIHZhbGlkYXRpb24gZmFpbHMgd2l0aCBjdXJyZW50IGxlbmd0aCBpbmZvcm1hdGlvblxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVN0cmluZ0ZpZWxkKHBhcmFtczogU3RyaW5nTGVuZ3RoVmFsaWRhdGlvbik6IHN0cmluZ1tdIHtcbiAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIEhhbmRsZSBudWxsL3VuZGVmaW5lZCB2YWx1ZXNcbiAgaWYgKHBhcmFtcy52YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGVycm9yczsgLy8gU2tpcCB2YWxpZGF0aW9uIGZvciBudWxsL3VuZGVmaW5lZCB2YWx1ZXNcbiAgfVxuXG4gIC8vIFNraXAgdmFsaWRhdGlvbiBpZiB2YWx1ZSBpcyBhbiB1bnJlc29sdmVkIHRva2VuXG4gIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQocGFyYW1zLnZhbHVlKSkge1xuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cblxuICAvLyBOb3cgc2FmZSB0byBhY2Nlc3MgLmxlbmd0aCBzaW5jZSB3ZSBrbm93IGl0J3Mgbm90IGEgdG9rZW5cbiAgY29uc3QgY3VycmVudExlbmd0aCA9IHBhcmFtcy52YWx1ZS5sZW5ndGg7XG5cbiAgaWYgKHBhcmFtcy52YWx1ZS5sZW5ndGggPiBwYXJhbXMubWF4TGVuZ3RoKSB7XG4gICAgZXJyb3JzLnB1c2goXG4gICAgICBgVGhlIGZpZWxkICR7cGFyYW1zLmZpZWxkTmFtZX0gaXMgJHtjdXJyZW50TGVuZ3RofSBjaGFyYWN0ZXJzIGxvbmcgYnV0IG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICR7cGFyYW1zLm1heExlbmd0aH0gY2hhcmFjdGVyc2AsXG4gICAgKTtcbiAgfVxuXG4gIGlmIChwYXJhbXMudmFsdWUubGVuZ3RoIDwgcGFyYW1zLm1pbkxlbmd0aCkge1xuICAgIGVycm9ycy5wdXNoKFxuICAgICAgYFRoZSBmaWVsZCAke3BhcmFtcy5maWVsZE5hbWV9IGlzICR7Y3VycmVudExlbmd0aH0gY2hhcmFjdGVycyBsb25nIGJ1dCBtdXN0IGJlIGF0IGxlYXN0ICR7cGFyYW1zLm1pbkxlbmd0aH0gY2hhcmFjdGVyc2AsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBlcnJvcnM7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgc3RyaW5nIGZpZWxkIGFnYWluc3QgYSByZWdleCBwYXR0ZXJuLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHN0cmluZyB2YWx1ZSB0byB2YWxpZGF0ZVxuICogQHBhcmFtIGZpZWxkTmFtZSAtIE5hbWUgb2YgdGhlIGZpZWxkIGJlaW5nIHZhbGlkYXRlZCAoZm9yIGVycm9yIG1lc3NhZ2VzKVxuICogQHBhcmFtIHBhdHRlcm4gLSBSZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybiB0byB0ZXN0IGFnYWluc3RcbiAqIEBwYXJhbSBjdXN0b21NZXNzYWdlIC0gT3B0aW9uYWwgY3VzdG9tIGVycm9yIG1lc3NhZ2VcbiAqIEByZXR1cm5zIHRydWUgaWYgdmFsaWRhdGlvbiBwYXNzZXNcbiAqIEB0aHJvd3MgRXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlscyB3aXRoIGRldGFpbGVkIG1lc3NhZ2VcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGaWVsZFBhdHRlcm4oXG4gIHZhbHVlOiBzdHJpbmcsXG4gIGZpZWxkTmFtZTogc3RyaW5nLFxuICBwYXR0ZXJuOiBSZWdFeHAsXG4gIGN1c3RvbU1lc3NhZ2U/OiBzdHJpbmcsXG4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAvLyBIYW5kbGUgbnVsbC91bmRlZmluZWQgdmFsdWVzXG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGVycm9yczsgLy8gU2tpcCB2YWxpZGF0aW9uIGZvciBudWxsL3VuZGVmaW5lZCB2YWx1ZXNcbiAgfVxuXG4gIC8vIEV2YWx1YXRlIG9ubHkgaWYgaXQgaXMgbm90IGFuIHVucmVzb2x2ZWQgVG9rZW5cbiAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQodmFsdWUpKSB7XG4gICAgLy8gVmVyaWZ5IHR5cGVcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgZXJyb3JzLnB1c2goYEV4cGVjdGVkIHN0cmluZyBmb3IgJHtmaWVsZE5hbWV9LCBnb3QgJHt0eXBlb2YgdmFsdWV9YCk7XG4gICAgICByZXR1cm4gZXJyb3JzOyAvLyBSZXR1cm4gZWFybHkgaWYgdmFsdWUgaXMgbm90IGEgc3RyaW5nXG4gICAgfVxuICAgIC8vIFZhbGlkYXRlIHNwZWNpZmllZCByZWdleFxuICAgIGlmICghKHBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHApKSB7XG4gICAgICBlcnJvcnMucHVzaCgnUGF0dGVybiBtdXN0IGJlIGEgdmFsaWQgcmVndWxhciBleHByZXNzaW9uJyk7XG4gICAgICByZXR1cm4gZXJyb3JzOyAvLyBSZXR1cm4gZWFybHkgaWYgcGF0dGVybiBpcyBub3QgYSBSZWdFeHBcbiAgICB9XG5cbiAgICAvLyBQYXR0ZXJuIHZhbGlkYXRpb24gKG9ubHkgaWYgdmFsdWUgaXMgc3RyaW5nIGFuZCBwYXR0ZXJuIGlzIFJlZ0V4cClcbiAgICBpZiAoIXBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRNZXNzYWdlID0gYFRoZSBmaWVsZCAke2ZpZWxkTmFtZX0gd2l0aCB2YWx1ZSBcIiR7dmFsdWV9XCIgZG9lcyBub3QgbWF0Y2ggdGhlIHJlcXVpcmVkIHBhdHRlcm4gJHtwYXR0ZXJufWA7XG4gICAgICBlcnJvcnMucHVzaChjdXN0b21NZXNzYWdlIHx8IGRlZmF1bHRNZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXJyb3JzO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uRm48VD4gPSAocGFyYW06IFQpID0+IHN0cmluZ1tdO1xuXG4vKipcbiAqIE9wZW5BUEkgc2NoZW1hIHZhbGlkYXRpb24gcGFyYW1ldGVyc1xuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbkFwaVNjaGVtYVZhbGlkYXRpb25QYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9wZW5BUEkgc2NoZW1hIHRvIHZhbGlkYXRlIChhcyBhIHN0cmluZylcbiAgICovXG4gIHNjaGVtYTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBuYW1lIGZvciB0aGUgc2NoZW1hIChmb3IgZXJyb3IgbWVzc2FnZXMpXG4gICAqL1xuICBzY2hlbWFOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlcyBPcGVuQVBJIHNjaGVtYSBKU09OIGFuZCB2YWxpZGF0ZXMgZm9ybWF0XG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gcGFyc2VPcGVuQXBpSnNvbihzY2hlbWE6IHN0cmluZywgc2NoZW1hTmFtZTogc3RyaW5nLCBlcnJvcnM6IHN0cmluZ1tdKTogYW55IHwgbnVsbCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc2NoZW1hKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGVycm9ycy5wdXNoKGAke3NjaGVtYU5hbWV9IG11c3QgYmUgaW4gSlNPTiBmb3JtYXQuIFlBTUwgaXMgbm90IHN1cHBvcnRlZC4gRXJyb3I6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpfWApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIE9wZW5BUEkgdmVyc2lvbiAoMy4wLnggb3IgMy4xLngpXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVPcGVuQXBpVmVyc2lvbihzY2hlbWFPYmo6IGFueSwgc2NoZW1hTmFtZTogc3RyaW5nLCBlcnJvcnM6IHN0cmluZ1tdKTogdm9pZCB7XG4gIGlmICghc2NoZW1hT2JqLm9wZW5hcGkpIHtcbiAgICBlcnJvcnMucHVzaChgJHtzY2hlbWFOYW1lfSBtdXN0IGluY2x1ZGUgYW4gJ29wZW5hcGknIGZpZWxkIHNwZWNpZnlpbmcgdGhlIHZlcnNpb25gKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2ZXJzaW9uID0gc2NoZW1hT2JqLm9wZW5hcGk7XG4gICAgaWYgKHR5cGVvZiB2ZXJzaW9uICE9PSAnc3RyaW5nJykge1xuICAgICAgZXJyb3JzLnB1c2goYCR7c2NoZW1hTmFtZX0gJ29wZW5hcGknIGZpZWxkIG11c3QgYmUgYSBzdHJpbmdgKTtcbiAgICB9IGVsc2UgaWYgKCF2ZXJzaW9uLnN0YXJ0c1dpdGgoJzMuMC4nKSAmJiAhdmVyc2lvbi5zdGFydHNXaXRoKCczLjEuJykpIHtcbiAgICAgIGVycm9ycy5wdXNoKGAke3NjaGVtYU5hbWV9IHZlcnNpb24gJHt2ZXJzaW9ufSBpcyBub3Qgc3VwcG9ydGVkLiBPbmx5IE9wZW5BUEkgMy4wLnggYW5kIDMuMS54IGFyZSBzdXBwb3J0ZWRgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgc2VydmVyIFVSTHNcbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVNlcnZlclVybHMoc2NoZW1hT2JqOiBhbnksIHNjaGVtYU5hbWU6IHN0cmluZywgZXJyb3JzOiBzdHJpbmdbXSk6IHZvaWQge1xuICBpZiAoIXNjaGVtYU9iai5zZXJ2ZXJzIHx8ICFBcnJheS5pc0FycmF5KHNjaGVtYU9iai5zZXJ2ZXJzKSB8fCBzY2hlbWFPYmouc2VydmVycy5sZW5ndGggPT09IDApIHtcbiAgICBlcnJvcnMucHVzaChgJHtzY2hlbWFOYW1lfSBtdXN0IGluY2x1ZGUgYXQgbGVhc3Qgb25lIHNlcnZlciB3aXRoIGEgdmFsaWQgVVJMYCk7XG4gIH0gZWxzZSB7XG4gICAgc2NoZW1hT2JqLnNlcnZlcnMuZm9yRWFjaCgoc2VydmVyOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGlmICghc2VydmVyLnVybCB8fCB0eXBlb2Ygc2VydmVyLnVybCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goYCR7c2NoZW1hTmFtZX0gc2VydmVyWyR7aW5kZXh9XSBtdXN0IGhhdmUgYSB2YWxpZCBVUkxgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIENoZWNrIGlmIFVSTCBjb250YWlucyBhIHByb3RvY29sIHNlcGFyYXRvclxuICAgICAgICBpZiAoIXNlcnZlci51cmwuaW5jbHVkZXMoJzovLycpKSB7XG4gICAgICAgICAgZXJyb3JzLnB1c2goYCR7c2NoZW1hTmFtZX0gc2VydmVyWyR7aW5kZXh9XSBVUkwgbXVzdCBjb250YWluIGEgcHJvdG9jb2wgKGUuZy4sIGh0dHA6Ly8gb3IgaHR0cHM6Ly8pYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQ2hlY2sgaWYgaXQgc3RhcnRzIHdpdGggaHR0cCBvciBodHRwcyAoY2FzZS1pbnNlbnNpdGl2ZSlcbiAgICAgICAgICAvLyBBbGxvdyB0ZW1wbGF0ZSB2YXJpYWJsZXMgbGlrZSB7cHJvdG9jb2x9Oi8vXG4gICAgICAgICAgY29uc3QgcHJvdG9jb2xFbmQgPSBzZXJ2ZXIudXJsLmluZGV4T2YoJzovLycpO1xuICAgICAgICAgIGNvbnN0IHByb3RvY29sID0gc2VydmVyLnVybC5zdWJzdHJpbmcoMCwgcHJvdG9jb2xFbmQpO1xuXG4gICAgICAgICAgLy8gSWYgcHJvdG9jb2wgZG9lc24ndCBjb250YWluIHRlbXBsYXRlIHZhcmlhYmxlcywgdmFsaWRhdGUgaXRcbiAgICAgICAgICBpZiAoIXByb3RvY29sLmluY2x1ZGVzKCd7JykpIHtcbiAgICAgICAgICAgIGlmIChwcm90b2NvbC50b0xvd2VyQ2FzZSgpICE9PSAnaHR0cCcgJiYgcHJvdG9jb2wudG9Mb3dlckNhc2UoKSAhPT0gJ2h0dHBzJykge1xuICAgICAgICAgICAgICBlcnJvcnMucHVzaChgJHtzY2hlbWFOYW1lfSBzZXJ2ZXJbJHtpbmRleH1dIFVSTCBtdXN0IHVzZSBIVFRQIG9yIEhUVFBTIHByb3RvY29sYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIElmIHByb3RvY29sIGNvbnRhaW5zIHRlbXBsYXRlIHZhcmlhYmxlcywgc2tpcCB2YWxpZGF0aW9uICh3aWxsIGJlIHZhbGlkYXRlZCBhdCBydW50aW1lKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgcGF0aHMgYW5kIG9wZXJhdGlvbnNcbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVBhdGhzQW5kT3BlcmF0aW9ucyhzY2hlbWFPYmo6IGFueSwgc2NoZW1hTmFtZTogc3RyaW5nLCBlcnJvcnM6IHN0cmluZ1tdKTogdm9pZCB7XG4gIGlmICghc2NoZW1hT2JqLnBhdGhzIHx8IHR5cGVvZiBzY2hlbWFPYmoucGF0aHMgIT09ICdvYmplY3QnKSB7XG4gICAgZXJyb3JzLnB1c2goYCR7c2NoZW1hTmFtZX0gbXVzdCBpbmNsdWRlIGEgJ3BhdGhzJyBvYmplY3RgKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBvcGVyYXRpb25zTWlzc2luZ0lkOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHVuc3VwcG9ydGVkTWVkaWFUeXBlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IHBhdGhzV2l0aENvbXBsZXhTZXJpYWxpemVyczogc3RyaW5nW10gPSBbXTtcblxuICAgIE9iamVjdC5lbnRyaWVzKHNjaGVtYU9iai5wYXRocykuZm9yRWFjaCgoW3BhdGgsIHBhdGhJdGVtXTogW3N0cmluZywgYW55XSkgPT4ge1xuICAgICAgLy8gQ2hlY2sgZm9yIGNvbXBsZXggcGF0aCBwYXJhbWV0ZXIgc2VyaWFsaXplcnNcbiAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCd7OycpIHx8IHBhdGguaW5jbHVkZXMoJ3s/JykgfHwgcGF0aC5pbmNsdWRlcygneyp9JykpIHtcbiAgICAgICAgcGF0aHNXaXRoQ29tcGxleFNlcmlhbGl6ZXJzLnB1c2gocGF0aCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXRoSXRlbSAmJiB0eXBlb2YgcGF0aEl0ZW0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIC8vIENoZWNrIGVhY2ggSFRUUCBtZXRob2RcbiAgICAgICAgY29uc3QgaHR0cE1ldGhvZHMgPSBbJ2dldCcsICdwb3N0JywgJ3B1dCcsICdkZWxldGUnLCAncGF0Y2gnLCAnaGVhZCcsICdvcHRpb25zJ107XG4gICAgICAgIGh0dHBNZXRob2RzLmZvckVhY2gobWV0aG9kID0+IHtcbiAgICAgICAgICBpZiAocGF0aEl0ZW1bbWV0aG9kXSkge1xuICAgICAgICAgICAgY29uc3Qgb3BlcmF0aW9uID0gcGF0aEl0ZW1bbWV0aG9kXTtcblxuICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIG9wZXJhdGlvbklkIChSRVFVSVJFRClcbiAgICAgICAgICAgIGlmICghb3BlcmF0aW9uLm9wZXJhdGlvbklkKSB7XG4gICAgICAgICAgICAgIG9wZXJhdGlvbnNNaXNzaW5nSWQucHVzaChgJHttZXRob2QudG9VcHBlckNhc2UoKX0gJHtwYXRofWApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBDaGVjayByZXF1ZXN0IGJvZHkgbWVkaWEgdHlwZXNcbiAgICAgICAgICAgIGlmIChvcGVyYXRpb24ucmVxdWVzdEJvZHk/LmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMob3BlcmF0aW9uLnJlcXVlc3RCb2R5LmNvbnRlbnQpLmZvckVhY2gobWVkaWFUeXBlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobWVkaWFUeXBlICE9PSAnYXBwbGljYXRpb24vanNvbicgJiZcbiAgICAgICAgICAgICAgICAgICAgbWVkaWFUeXBlICE9PSAnYXBwbGljYXRpb24veG1sJyAmJlxuICAgICAgICAgICAgICAgICAgICBtZWRpYVR5cGUgIT09ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyAmJlxuICAgICAgICAgICAgICAgICAgICBtZWRpYVR5cGUgIT09ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKSB7XG4gICAgICAgICAgICAgICAgICB1bnN1cHBvcnRlZE1lZGlhVHlwZXMuYWRkKG1lZGlhVHlwZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ2hlY2sgcmVzcG9uc2UgbWVkaWEgdHlwZXNcbiAgICAgICAgICAgIGlmIChvcGVyYXRpb24ucmVzcG9uc2VzKSB7XG4gICAgICAgICAgICAgIE9iamVjdC52YWx1ZXMob3BlcmF0aW9uLnJlc3BvbnNlcykuZm9yRWFjaCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5jb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyZXNwb25zZS5jb250ZW50KS5mb3JFYWNoKG1lZGlhVHlwZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtZWRpYVR5cGUgIT09ICdhcHBsaWNhdGlvbi9qc29uJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFUeXBlICE9PSAnYXBwbGljYXRpb24veG1sJykge1xuICAgICAgICAgICAgICAgICAgICAgIHVuc3VwcG9ydGVkTWVkaWFUeXBlcy5hZGQobWVkaWFUeXBlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGNvbXBsZXggcGFyYW1ldGVyIHNlcmlhbGl6ZXJzXG4gICAgICAgICAgICBpZiAob3BlcmF0aW9uLnBhcmFtZXRlcnMpIHtcbiAgICAgICAgICAgICAgb3BlcmF0aW9uLnBhcmFtZXRlcnMuZm9yRWFjaCgocGFyYW06IGFueSwgaWR4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGFyYW0uc3R5bGUgJiYgWydtYXRyaXgnLCAnbGFiZWwnLCAnZGVlcE9iamVjdCddLmluY2x1ZGVzKHBhcmFtLnN0eWxlKSkge1xuICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goYCR7c2NoZW1hTmFtZX0gJHttZXRob2QudG9VcHBlckNhc2UoKX0gJHtwYXRofSBwYXJhbWV0ZXJbJHtpZHh9XSB1c2VzIHVuc3VwcG9ydGVkIHNlcmlhbGl6YXRpb24gc3R5bGU6ICR7cGFyYW0uc3R5bGV9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKG9wZXJhdGlvbnNNaXNzaW5nSWQubGVuZ3RoID4gMCkge1xuICAgICAgZXJyb3JzLnB1c2goYCR7c2NoZW1hTmFtZX0gb3BlcmF0aW9ucyBtdXN0IGluY2x1ZGUgJ29wZXJhdGlvbklkJyBmaWVsZC4gTWlzc2luZyBpbjogJHtvcGVyYXRpb25zTWlzc2luZ0lkLmpvaW4oJywgJyl9YCk7XG4gICAgfVxuXG4gICAgaWYgKHBhdGhzV2l0aENvbXBsZXhTZXJpYWxpemVycy5sZW5ndGggPiAwKSB7XG4gICAgICBlcnJvcnMucHVzaChgJHtzY2hlbWFOYW1lfSBjb250YWlucyB1bnN1cHBvcnRlZCBjb21wbGV4IHBhdGggcGFyYW1ldGVyIHNlcmlhbGl6ZXJzIGluOiAke3BhdGhzV2l0aENvbXBsZXhTZXJpYWxpemVycy5qb2luKCcsICcpfWApO1xuICAgIH1cblxuICAgIGlmICh1bnN1cHBvcnRlZE1lZGlhVHlwZXMuc2l6ZSA+IDApIHtcbiAgICAgIGNvbnN0IG1lZGlhVHlwZXNMaXN0ID0gQXJyYXkuZnJvbSh1bnN1cHBvcnRlZE1lZGlhVHlwZXMpLmpvaW4oJywgJyk7XG4gICAgICBlcnJvcnMucHVzaChgJHtzY2hlbWFOYW1lfSB1c2VzIHVuc3VwcG9ydGVkIG1lZGlhIHR5cGVzOiAke21lZGlhVHlwZXNMaXN0fS4gT25seSBhcHBsaWNhdGlvbi9qc29uLCBhcHBsaWNhdGlvbi94bWwsIG11bHRpcGFydC9mb3JtLWRhdGEsIGFuZCBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQgYXJlIHN1cHBvcnRlZGApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZSBoZWxwZXIgdG8gY2hlY2sgZm9yIHVuc3VwcG9ydGVkIHNjaGVtYSBjb21wb3NpdGlvbiAob25lT2YsIGFueU9mLCBhbGxPZilcbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBjaGVja1NjaGVtYUNvbXBvc2l0aW9uKG9iajogYW55LCBzY2hlbWFOYW1lOiBzdHJpbmcsIGVycm9yczogc3RyaW5nW10sIHBhdGg6IHN0cmluZyA9ICcnKTogdm9pZCB7XG4gIGlmICghb2JqIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSByZXR1cm47XG5cbiAgLy8gQ2hlY2sgY3VycmVudCBsZXZlbCBmb3IgdW5zdXBwb3J0ZWQga2V5d29yZHNcbiAgaWYgKCdvbmVPZicgaW4gb2JqKSB7XG4gICAgZXJyb3JzLnB1c2goYCR7c2NoZW1hTmFtZX0gY29udGFpbnMgdW5zdXBwb3J0ZWQgJ29uZU9mJyBzY2hlbWEgY29tcG9zaXRpb24gYXQgJHtwYXRoIHx8ICdyb290J31gKTtcbiAgfVxuICBpZiAoJ2FueU9mJyBpbiBvYmopIHtcbiAgICBlcnJvcnMucHVzaChgJHtzY2hlbWFOYW1lfSBjb250YWlucyB1bnN1cHBvcnRlZCAnYW55T2YnIHNjaGVtYSBjb21wb3NpdGlvbiBhdCAke3BhdGggfHwgJ3Jvb3QnfWApO1xuICB9XG4gIGlmICgnYWxsT2YnIGluIG9iaikge1xuICAgIGVycm9ycy5wdXNoKGAke3NjaGVtYU5hbWV9IGNvbnRhaW5zIHVuc3VwcG9ydGVkICdhbGxPZicgc2NoZW1hIGNvbXBvc2l0aW9uIGF0ICR7cGF0aCB8fCAncm9vdCd9YCk7XG4gIH1cblxuICAvLyBSZWN1cnNpdmVseSBjaGVjayBuZXN0ZWQgb2JqZWN0c1xuICBPYmplY3QuZW50cmllcyhvYmopLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGlmIChrZXkgIT09ICdvbmVPZicgJiYga2V5ICE9PSAnYW55T2YnICYmIGtleSAhPT0gJ2FsbE9mJyAmJiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBuZXdQYXRoID0gcGF0aCA/IGAke3BhdGh9LiR7a2V5fWAgOiBrZXk7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBjaGVja1NjaGVtYUNvbXBvc2l0aW9uKGl0ZW0sIHNjaGVtYU5hbWUsIGVycm9ycywgYCR7bmV3UGF0aH1bJHtpbmRleH1dYCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hlY2tTY2hlbWFDb21wb3NpdGlvbih2YWx1ZSwgc2NoZW1hTmFtZSwgZXJyb3JzLCBuZXdQYXRoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBzY2hlbWEgY29tcG9zaXRpb24gKGNoZWNrcyBmb3IgdW5zdXBwb3J0ZWQgb25lT2YsIGFueU9mLCBhbGxPZilcbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVNjaGVtYUNvbXBvc2l0aW9uKHNjaGVtYU9iajogYW55LCBzY2hlbWFOYW1lOiBzdHJpbmcsIGVycm9yczogc3RyaW5nW10pOiB2b2lkIHtcbiAgLy8gQ2hlY2sgY29tcG9uZW50cy9kZWZpbml0aW9ucyBmb3IgdW5zdXBwb3J0ZWQgc2NoZW1hIGNvbXBvc2l0aW9uXG4gIGlmIChzY2hlbWFPYmouY29tcG9uZW50cz8uc2NoZW1hcykge1xuICAgIGNoZWNrU2NoZW1hQ29tcG9zaXRpb24oc2NoZW1hT2JqLmNvbXBvbmVudHMuc2NoZW1hcywgc2NoZW1hTmFtZSwgZXJyb3JzLCAnY29tcG9uZW50cy5zY2hlbWFzJyk7XG4gIH1cbiAgaWYgKHNjaGVtYU9iai5kZWZpbml0aW9ucykge1xuICAgIGNoZWNrU2NoZW1hQ29tcG9zaXRpb24oc2NoZW1hT2JqLmRlZmluaXRpb25zLCBzY2hlbWFOYW1lLCBlcnJvcnMsICdkZWZpbml0aW9ucycpO1xuICB9XG5cbiAgLy8gQ2hlY2sgcGF0aHMgZm9yIHVuc3VwcG9ydGVkIHNjaGVtYSBjb21wb3NpdGlvblxuICBpZiAoc2NoZW1hT2JqLnBhdGhzKSB7XG4gICAgY2hlY2tTY2hlbWFDb21wb3NpdGlvbihzY2hlbWFPYmoucGF0aHMsIHNjaGVtYU5hbWUsIGVycm9ycywgJ3BhdGhzJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgc2VjdXJpdHkgc2NoZW1lc1xuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlU2VjdXJpdHlTY2hlbWVzKHNjaGVtYU9iajogYW55LCBzY2hlbWFOYW1lOiBzdHJpbmcsIGVycm9yczogc3RyaW5nW10pOiB2b2lkIHtcbiAgaWYgKHNjaGVtYU9iai5zZWN1cml0eSAmJiBBcnJheS5pc0FycmF5KHNjaGVtYU9iai5zZWN1cml0eSkgJiYgc2NoZW1hT2JqLnNlY3VyaXR5Lmxlbmd0aCA+IDApIHtcbiAgICBlcnJvcnMucHVzaChgJHtzY2hlbWFOYW1lfSBjb250YWlucyBzZWN1cml0eSBzY2hlbWVzIGF0IHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24gbGV2ZWwuIEF1dGhlbnRpY2F0aW9uIG11c3QgYmUgY29uZmlndXJlZCB1c2luZyB0aGUgR2F0ZXdheSdzIG91dGJvdW5kIGF1dGhvcml6YXRpb24gY29uZmlndXJhdGlvbiBpbnN0ZWFkYCk7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgY2FsbGJhY2tzIGFuZCB3ZWJob29rc1xuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlQ2FsbGJhY2tzQW5kV2ViaG9va3Moc2NoZW1hT2JqOiBhbnksIHNjaGVtYU5hbWU6IHN0cmluZywgZXJyb3JzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAvLyBDaGVjayBmb3IgY2FsbGJhY2tzIGluIG9wZXJhdGlvbnNcbiAgaWYgKHNjaGVtYU9iai5wYXRocykge1xuICAgIE9iamVjdC5lbnRyaWVzKHNjaGVtYU9iai5wYXRocykuZm9yRWFjaCgoW3BhdGgsIHBhdGhJdGVtXTogW3N0cmluZywgYW55XSkgPT4ge1xuICAgICAgaWYgKHBhdGhJdGVtICYmIHR5cGVvZiBwYXRoSXRlbSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhwYXRoSXRlbSkuZm9yRWFjaCgob3BlcmF0aW9uOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAob3BlcmF0aW9uICYmIHR5cGVvZiBvcGVyYXRpb24gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBpZiAob3BlcmF0aW9uLmNhbGxiYWNrcykge1xuICAgICAgICAgICAgICBlcnJvcnMucHVzaChgJHtzY2hlbWFOYW1lfSBjb250YWlucyB1bnN1cHBvcnRlZCAnY2FsbGJhY2tzJyBpbiBwYXRoICR7cGF0aH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gQ2hlY2sgZm9yIHdlYmhvb2tzXG4gIGlmIChzY2hlbWFPYmoud2ViaG9va3MpIHtcbiAgICBlcnJvcnMucHVzaChgJHtzY2hlbWFOYW1lfSBjb250YWlucyB1bnN1cHBvcnRlZCAnd2ViaG9va3MnYCk7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYW4gT3BlbkFQSSBzY2hlbWEgYWdhaW5zdCBHYXRld2F5IHJlcXVpcmVtZW50c1xuICogQmFzZWQgb24gQVdTIGRvY3VtZW50YXRpb246IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iZWRyb2NrLWFnZW50Y29yZS9sYXRlc3QvZGV2Z3VpZGUvZ2F0ZXdheS1zY2hlbWEtb3BlbmFwaS5odG1sXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB2YWxpZGF0aW9uIHBhcmFtZXRlcnNcbiAqIEByZXR1cm5zIEFycmF5IG9mIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMgKGVtcHR5IGlmIHZhbGlkKVxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZU9wZW5BcGlTY2hlbWEocGFyYW1zOiBPcGVuQXBpU2NoZW1hVmFsaWRhdGlvblBhcmFtcyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCB7IHNjaGVtYSwgc2NoZW1hTmFtZSA9ICdPcGVuQVBJIHNjaGVtYScgfSA9IHBhcmFtcztcblxuICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKHNjaGVtYSkpIHtcbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG4gIGNvbnN0IHNjaGVtYU9iaiA9IHBhcnNlT3BlbkFwaUpzb24oc2NoZW1hLCBzY2hlbWFOYW1lLCBlcnJvcnMpO1xuICBpZiAoIXNjaGVtYU9iaikgcmV0dXJuIGVycm9ycztcblxuICB2YWxpZGF0ZU9wZW5BcGlWZXJzaW9uKHNjaGVtYU9iaiwgc2NoZW1hTmFtZSwgZXJyb3JzKTtcbiAgdmFsaWRhdGVTZXJ2ZXJVcmxzKHNjaGVtYU9iaiwgc2NoZW1hTmFtZSwgZXJyb3JzKTtcbiAgdmFsaWRhdGVQYXRoc0FuZE9wZXJhdGlvbnMoc2NoZW1hT2JqLCBzY2hlbWFOYW1lLCBlcnJvcnMpO1xuICB2YWxpZGF0ZVNjaGVtYUNvbXBvc2l0aW9uKHNjaGVtYU9iaiwgc2NoZW1hTmFtZSwgZXJyb3JzKTtcbiAgdmFsaWRhdGVTZWN1cml0eVNjaGVtZXMoc2NoZW1hT2JqLCBzY2hlbWFOYW1lLCBlcnJvcnMpO1xuICB2YWxpZGF0ZUNhbGxiYWNrc0FuZFdlYmhvb2tzKHNjaGVtYU9iaiwgc2NoZW1hTmFtZSwgZXJyb3JzKTtcblxuICByZXR1cm4gZXJyb3JzO1xufVxuIl19
|
|
@@ -56,7 +56,7 @@ var MemoryStrategyType;
|
|
|
56
56
|
* @see https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/memory-strategies.html
|
|
57
57
|
*/
|
|
58
58
|
class MemoryStrategy {
|
|
59
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.MemoryStrategy", version: "2.
|
|
59
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.MemoryStrategy", version: "2.243.0-alpha.0" };
|
|
60
60
|
/**
|
|
61
61
|
* Default strategies for organizing and extracting memory data, each optimized for specific use cases.
|
|
62
62
|
* This strategy compresses conversations into concise overviews, preserving essential context and key insights for quick recall.
|
package/lib/memory/memory.js
CHANGED
|
@@ -87,7 +87,7 @@ const MEMORY_EXPIRATION_DAYS_MAX = 365;
|
|
|
87
87
|
* Contains methods and attributes valid for Memories either created with CDK or imported.
|
|
88
88
|
*/
|
|
89
89
|
class MemoryBase extends aws_cdk_lib_1.Resource {
|
|
90
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.MemoryBase", version: "2.
|
|
90
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.MemoryBase", version: "2.243.0-alpha.0" };
|
|
91
91
|
/**
|
|
92
92
|
* A reference to a Memory resource.
|
|
93
93
|
*/
|
|
@@ -369,7 +369,7 @@ let Memory = (() => {
|
|
|
369
369
|
Memory = _classThis = _classDescriptor.value;
|
|
370
370
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
371
371
|
}
|
|
372
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.Memory", version: "2.
|
|
372
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.Memory", version: "2.243.0-alpha.0" };
|
|
373
373
|
/** Uniquely identifies this class. */
|
|
374
374
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-bedrock-agentcore-alpha.Memory';
|
|
375
375
|
/**
|
|
@@ -25,7 +25,7 @@ const PROMPT_MAX_LENGTH = 30000;
|
|
|
25
25
|
* with specific models and prompt templates.
|
|
26
26
|
*/
|
|
27
27
|
class ManagedMemoryStrategy {
|
|
28
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ManagedMemoryStrategy", version: "2.
|
|
28
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ManagedMemoryStrategy", version: "2.243.0-alpha.0" };
|
|
29
29
|
name;
|
|
30
30
|
description;
|
|
31
31
|
/**
|
|
@@ -86,7 +86,7 @@ const DEFAULT_TOKEN_BASED_TRIGGER = 100;
|
|
|
86
86
|
* Use AgentCore memory for event storage with custom triggers. Define memory processing logic in your own environment.
|
|
87
87
|
*/
|
|
88
88
|
class SelfManagedMemoryStrategy {
|
|
89
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.SelfManagedMemoryStrategy", version: "2.
|
|
89
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.SelfManagedMemoryStrategy", version: "2.243.0-alpha.0" };
|
|
90
90
|
name;
|
|
91
91
|
description;
|
|
92
92
|
strategyType;
|
|
@@ -8,7 +8,7 @@ const ec2 = require("aws-cdk-lib/aws-ec2");
|
|
|
8
8
|
* Abstract base class for network configuration.
|
|
9
9
|
*/
|
|
10
10
|
class NetworkConfiguration {
|
|
11
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.NetworkConfiguration", version: "2.
|
|
11
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.NetworkConfiguration", version: "2.243.0-alpha.0" };
|
|
12
12
|
/**
|
|
13
13
|
* The network mode to use.
|
|
14
14
|
* Configure the security level for agent
|
|
@@ -87,7 +87,7 @@ exports.NetworkConfiguration = NetworkConfiguration;
|
|
|
87
87
|
* Network configuration for the Browser tool.
|
|
88
88
|
*/
|
|
89
89
|
class BrowserNetworkConfiguration extends NetworkConfiguration {
|
|
90
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.BrowserNetworkConfiguration", version: "2.
|
|
90
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.BrowserNetworkConfiguration", version: "2.243.0-alpha.0" };
|
|
91
91
|
/**
|
|
92
92
|
* Creates a public network configuration. PUBLIC is the default network mode.
|
|
93
93
|
* @returns A BrowserNetworkConfiguration.
|
|
@@ -133,7 +133,7 @@ exports.BrowserNetworkConfiguration = BrowserNetworkConfiguration;
|
|
|
133
133
|
* Network configuration for the Code Interpreter tool.
|
|
134
134
|
*/
|
|
135
135
|
class CodeInterpreterNetworkConfiguration extends NetworkConfiguration {
|
|
136
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.CodeInterpreterNetworkConfiguration", version: "2.
|
|
136
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.CodeInterpreterNetworkConfiguration", version: "2.243.0-alpha.0" };
|
|
137
137
|
/**
|
|
138
138
|
* Creates a public network configuration.
|
|
139
139
|
* @returns A CodeInterpreterNetworkConfiguration.
|
|
@@ -187,7 +187,7 @@ exports.CodeInterpreterNetworkConfiguration = CodeInterpreterNetworkConfiguratio
|
|
|
187
187
|
* Network configuration for the Runtime.
|
|
188
188
|
*/
|
|
189
189
|
class RuntimeNetworkConfiguration extends NetworkConfiguration {
|
|
190
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeNetworkConfiguration", version: "2.
|
|
190
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeNetworkConfiguration", version: "2.243.0-alpha.0" };
|
|
191
191
|
/**
|
|
192
192
|
* Creates a public network configuration. PUBLIC is the default network mode.
|
|
193
193
|
* @returns A RuntimeNetworkConfiguration.
|
|
@@ -16,8 +16,8 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
16
16
|
* and limitations under the License.
|
|
17
17
|
*/
|
|
18
18
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
19
|
+
const errors_1 = require("aws-cdk-lib/core/lib/errors");
|
|
19
20
|
const types_1 = require("../../common/types");
|
|
20
|
-
const validation_helpers_1 = require("../validation-helpers");
|
|
21
21
|
/**
|
|
22
22
|
* Represents a custom claim validation configuration for Runtime JWT authorizers.
|
|
23
23
|
* Custom claims allow you to validate additional fields in JWT tokens beyond
|
|
@@ -28,7 +28,7 @@ class RuntimeCustomClaim {
|
|
|
28
28
|
valueType;
|
|
29
29
|
operator;
|
|
30
30
|
value;
|
|
31
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeCustomClaim", version: "2.
|
|
31
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeCustomClaim", version: "2.243.0-alpha.0" };
|
|
32
32
|
/**
|
|
33
33
|
* Create a custom claim with a string value.
|
|
34
34
|
* String claims must use the EQUALS operator.
|
|
@@ -61,7 +61,7 @@ class RuntimeCustomClaim {
|
|
|
61
61
|
}
|
|
62
62
|
// Validate operator is valid for STRING_ARRAY type
|
|
63
63
|
if (operator !== types_1.CustomClaimOperator.CONTAINS && operator !== types_1.CustomClaimOperator.CONTAINS_ANY) {
|
|
64
|
-
throw new
|
|
64
|
+
throw new errors_1.UnscopedValidationError(`Custom claim '${name}': STRING_ARRAY type only supports CONTAINS or CONTAINS_ANY operators, got ${operator}`);
|
|
65
65
|
}
|
|
66
66
|
return new RuntimeCustomClaim(name, types_1.CustomClaimValueType.STRING_ARRAY, operator, values);
|
|
67
67
|
}
|
|
@@ -75,10 +75,10 @@ class RuntimeCustomClaim {
|
|
|
75
75
|
}
|
|
76
76
|
// Validate that value matches the valueType
|
|
77
77
|
if (valueType === types_1.CustomClaimValueType.STRING && typeof value !== 'string') {
|
|
78
|
-
throw new
|
|
78
|
+
throw new errors_1.UnscopedValidationError(`Custom claim '${name}': STRING type requires a string value, got ${typeof value}`);
|
|
79
79
|
}
|
|
80
80
|
if (valueType === types_1.CustomClaimValueType.STRING_ARRAY && !Array.isArray(value)) {
|
|
81
|
-
throw new
|
|
81
|
+
throw new errors_1.UnscopedValidationError(`Custom claim '${name}': STRING_ARRAY type requires an array value, got ${typeof value}`);
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
/**
|
|
@@ -100,7 +100,7 @@ class RuntimeCustomClaim {
|
|
|
100
100
|
// CONTAINS requires a single string value (check if claim array contains this string)
|
|
101
101
|
const values = this.value;
|
|
102
102
|
if (!aws_cdk_lib_1.Token.isUnresolved(values[0]) && values.length !== 1) {
|
|
103
|
-
throw new
|
|
103
|
+
throw new errors_1.UnscopedValidationError(`Custom claim '${this.name}': CONTAINS operator requires exactly one value, got ${values.length} values`);
|
|
104
104
|
}
|
|
105
105
|
claimMatchValue = {
|
|
106
106
|
matchValueString: values[0],
|
|
@@ -124,4 +124,4 @@ class RuntimeCustomClaim {
|
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
126
|
exports.RuntimeCustomClaim = RuntimeCustomClaim;
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNsYWltLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY3VzdG9tLWNsYWltLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCw2Q0FBb0M7QUFFcEMsd0RBQXNFO0FBQ3RFLDhDQUErRTtBQUUvRTs7OztHQUlHO0FBQ0gsTUFBYSxrQkFBa0I7SUFxQ1Y7SUFDQTtJQUNBO0lBQ0E7O0lBdkNuQjs7Ozs7OztPQU9HO0lBQ0ksTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFZLEVBQUUsS0FBYTtRQUN2RCxPQUFPLElBQUksa0JBQWtCLENBQUMsSUFBSSxFQUFFLDRCQUFvQixDQUFDLE1BQU0sRUFBRSwyQkFBbUIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDckc7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FDaEMsSUFBWSxFQUNaLE1BQWdCLEVBQ2hCLFdBQWdDLDJCQUFtQixDQUFDLFFBQVE7Ozs7Ozs7Ozs7UUFFNUQsbURBQW1EO1FBQ25ELElBQUksUUFBUSxLQUFLLDJCQUFtQixDQUFDLFFBQVEsSUFBSSxRQUFRLEtBQUssMkJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDL0YsTUFBTSxJQUFJLGdDQUF1QixDQUMvQixpQkFBaUIsSUFBSSw4RUFBOEUsUUFBUSxFQUFFLENBQzlHLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLGtCQUFrQixDQUFDLElBQUksRUFBRSw0QkFBb0IsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQzFGO0lBRUQsWUFDbUIsSUFBWSxFQUNaLFNBQStCLEVBQy9CLFFBQTZCLEVBQzdCLEtBQXdCO1FBSHhCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixjQUFTLEdBQVQsU0FBUyxDQUFzQjtRQUMvQixhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQUM3QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUV6QyxJQUFJLG1CQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDOUIsT0FBTztRQUNULENBQUM7UUFDRCw0Q0FBNEM7UUFDNUMsSUFBSSxTQUFTLEtBQUssNEJBQW9CLENBQUMsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzNFLE1BQU0sSUFBSSxnQ0FBdUIsQ0FBQyxpQkFBaUIsSUFBSSwrQ0FBK0MsT0FBTyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3hILENBQUM7UUFDRCxJQUFJLFNBQVMsS0FBSyw0QkFBb0IsQ0FBQyxZQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0UsTUFBTSxJQUFJLGdDQUF1QixDQUFDLGlCQUFpQixJQUFJLHFEQUFxRCxPQUFPLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDOUgsQ0FBQztLQUNGO0lBRUQ7OztPQUdHO0lBQ0ksT0FBTztRQUNaLCtEQUErRDtRQUMvRCxJQUFJLGVBQXVELENBQUM7UUFDNUQsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLDRCQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25ELGdFQUFnRTtZQUNoRSxlQUFlLEdBQUc7Z0JBQ2hCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxLQUFlO2FBQ3ZDLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLDRGQUE0RjtZQUM1RixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssMkJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ25ELHNGQUFzRjtnQkFDdEYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQWlCLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxtQkFBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUMxRCxNQUFNLElBQUksZ0NBQXVCLENBQy9CLGlCQUFpQixJQUFJLENBQUMsSUFBSSx3REFBd0QsTUFBTSxDQUFDLE1BQU0sU0FBUyxDQUN6RyxDQUFDO2dCQUNKLENBQUM7Z0JBQ0QsZUFBZSxHQUFHO29CQUNoQixnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO2lCQUM1QixDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLHlDQUF5QztnQkFDekMsZUFBZSxHQUFHO29CQUNoQixvQkFBb0IsRUFBRSxJQUFJLENBQUMsS0FBaUI7aUJBQzdDLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU87WUFDTCxxQkFBcUIsRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNoQywwQkFBMEIsRUFBRSxJQUFJLENBQUMsU0FBUztZQUMxQywwQkFBMEIsRUFBRTtnQkFDMUIsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ2pDLGVBQWUsRUFBRSxlQUFlO2FBQ2pDO1NBQ0YsQ0FBQztLQUNIOztBQS9GSCxnREFnR0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB0eXBlIHsgQ2ZuUnVudGltZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlJztcbmltcG9ydCB7IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvZXJyb3JzJztcbmltcG9ydCB7IEN1c3RvbUNsYWltT3BlcmF0b3IsIEN1c3RvbUNsYWltVmFsdWVUeXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL3R5cGVzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgY3VzdG9tIGNsYWltIHZhbGlkYXRpb24gY29uZmlndXJhdGlvbiBmb3IgUnVudGltZSBKV1QgYXV0aG9yaXplcnMuXG4gKiBDdXN0b20gY2xhaW1zIGFsbG93IHlvdSB0byB2YWxpZGF0ZSBhZGRpdGlvbmFsIGZpZWxkcyBpbiBKV1QgdG9rZW5zIGJleW9uZFxuICogdGhlIHN0YW5kYXJkIGF1ZGllbmNlLCBjbGllbnQsIGFuZCBzY29wZSB2YWxpZGF0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIFJ1bnRpbWVDdXN0b21DbGFpbSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBjdXN0b20gY2xhaW0gd2l0aCBhIHN0cmluZyB2YWx1ZS5cbiAgICogU3RyaW5nIGNsYWltcyBtdXN0IHVzZSB0aGUgRVFVQUxTIG9wZXJhdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY2xhaW0gaW4gdGhlIEpXVCB0b2tlblxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHN0cmluZyB2YWx1ZSB0byBtYXRjaCAobXVzdCBleGFjdGx5IGVxdWFsKVxuICAgKiBAcmV0dXJucyBBIFJ1bnRpbWVDdXN0b21DbGFpbSBjb25maWd1cmVkIGZvciBzdHJpbmcgdmFsaWRhdGlvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoU3RyaW5nVmFsdWUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogUnVudGltZUN1c3RvbUNsYWltIHtcbiAgICByZXR1cm4gbmV3IFJ1bnRpbWVDdXN0b21DbGFpbShuYW1lLCBDdXN0b21DbGFpbVZhbHVlVHlwZS5TVFJJTkcsIEN1c3RvbUNsYWltT3BlcmF0b3IuRVFVQUxTLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY3VzdG9tIGNsYWltIHdpdGggYSBzdHJpbmcgYXJyYXkgdmFsdWUuXG4gICAqIFN0cmluZyBhcnJheSBjbGFpbXMgY2FuIHVzZSBDT05UQUlOUyAoZGVmYXVsdCkgb3IgQ09OVEFJTlNfQU5ZIG9wZXJhdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY2xhaW0gaW4gdGhlIEpXVCB0b2tlblxuICAgKiBAcGFyYW0gdmFsdWVzIFRoZSBhcnJheSBvZiBzdHJpbmcgdmFsdWVzIHRvIG1hdGNoLiBGb3IgQ09OVEFJTlMgb3BlcmF0b3IsIG11c3QgY29udGFpbiBleGFjdGx5IG9uZSB2YWx1ZS5cbiAgICogQHBhcmFtIG9wZXJhdG9yIFRoZSBtYXRjaCBvcGVyYXRvciAoZGVmYXVsdHMgdG8gQ09OVEFJTlMpXG4gICAqIEByZXR1cm5zIEEgUnVudGltZUN1c3RvbUNsYWltIGNvbmZpZ3VyZWQgZm9yIHN0cmluZyBhcnJheSB2YWxpZGF0aW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGhTdHJpbmdBcnJheVZhbHVlKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZXM6IHN0cmluZ1tdLFxuICAgIG9wZXJhdG9yOiBDdXN0b21DbGFpbU9wZXJhdG9yID0gQ3VzdG9tQ2xhaW1PcGVyYXRvci5DT05UQUlOUyxcbiAgKTogUnVudGltZUN1c3RvbUNsYWltIHtcbiAgICAvLyBWYWxpZGF0ZSBvcGVyYXRvciBpcyB2YWxpZCBmb3IgU1RSSU5HX0FSUkFZIHR5cGVcbiAgICBpZiAob3BlcmF0b3IgIT09IEN1c3RvbUNsYWltT3BlcmF0b3IuQ09OVEFJTlMgJiYgb3BlcmF0b3IgIT09IEN1c3RvbUNsYWltT3BlcmF0b3IuQ09OVEFJTlNfQU5ZKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGBDdXN0b20gY2xhaW0gJyR7bmFtZX0nOiBTVFJJTkdfQVJSQVkgdHlwZSBvbmx5IHN1cHBvcnRzIENPTlRBSU5TIG9yIENPTlRBSU5TX0FOWSBvcGVyYXRvcnMsIGdvdCAke29wZXJhdG9yfWAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFJ1bnRpbWVDdXN0b21DbGFpbShuYW1lLCBDdXN0b21DbGFpbVZhbHVlVHlwZS5TVFJJTkdfQVJSQVksIG9wZXJhdG9yLCB2YWx1ZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZhbHVlVHlwZTogQ3VzdG9tQ2xhaW1WYWx1ZVR5cGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcGVyYXRvcjogQ3VzdG9tQ2xhaW1PcGVyYXRvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgKSB7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gVmFsaWRhdGUgdGhhdCB2YWx1ZSBtYXRjaGVzIHRoZSB2YWx1ZVR5cGVcbiAgICBpZiAodmFsdWVUeXBlID09PSBDdXN0b21DbGFpbVZhbHVlVHlwZS5TVFJJTkcgJiYgdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGBDdXN0b20gY2xhaW0gJyR7bmFtZX0nOiBTVFJJTkcgdHlwZSByZXF1aXJlcyBhIHN0cmluZyB2YWx1ZSwgZ290ICR7dHlwZW9mIHZhbHVlfWApO1xuICAgIH1cbiAgICBpZiAodmFsdWVUeXBlID09PSBDdXN0b21DbGFpbVZhbHVlVHlwZS5TVFJJTkdfQVJSQVkgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoYEN1c3RvbSBjbGFpbSAnJHtuYW1lfSc6IFNUUklOR19BUlJBWSB0eXBlIHJlcXVpcmVzIGFuIGFycmF5IHZhbHVlLCBnb3QgJHt0eXBlb2YgdmFsdWV9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciB0aGUgY3VzdG9tIGNsYWltIGFzIGEgQ2xvdWRGb3JtYXRpb24gcHJvcGVydHlcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3JlbmRlcigpOiBDZm5SdW50aW1lLkN1c3RvbUNsYWltVmFsaWRhdGlvblR5cGVQcm9wZXJ0eSB7XG4gICAgLy8gQnVpbGQgdGhlIGNsYWltIG1hdGNoIHZhbHVlIGJhc2VkIG9uIG9wZXJhdG9yIGFuZCB2YWx1ZSB0eXBlXG4gICAgbGV0IGNsYWltTWF0Y2hWYWx1ZTogQ2ZuUnVudGltZS5DbGFpbU1hdGNoVmFsdWVUeXBlUHJvcGVydHk7XG4gICAgaWYgKHRoaXMudmFsdWVUeXBlID09PSBDdXN0b21DbGFpbVZhbHVlVHlwZS5TVFJJTkcpIHtcbiAgICAgIC8vIFNUUklORyB0eXBlIGFsd2F5cyB1c2VzIG1hdGNoVmFsdWVTdHJpbmcgd2l0aCBFUVVBTFMgb3BlcmF0b3JcbiAgICAgIGNsYWltTWF0Y2hWYWx1ZSA9IHtcbiAgICAgICAgbWF0Y2hWYWx1ZVN0cmluZzogdGhpcy52YWx1ZSBhcyBzdHJpbmcsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTVFJJTkdfQVJSQVkgdHlwZTogQ09OVEFJTlMgdXNlcyBtYXRjaFZhbHVlU3RyaW5nLCBDT05UQUlOU19BTlkgdXNlcyBtYXRjaFZhbHVlU3RyaW5nTGlzdFxuICAgICAgaWYgKHRoaXMub3BlcmF0b3IgPT09IEN1c3RvbUNsYWltT3BlcmF0b3IuQ09OVEFJTlMpIHtcbiAgICAgICAgLy8gQ09OVEFJTlMgcmVxdWlyZXMgYSBzaW5nbGUgc3RyaW5nIHZhbHVlIChjaGVjayBpZiBjbGFpbSBhcnJheSBjb250YWlucyB0aGlzIHN0cmluZylcbiAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy52YWx1ZSBhcyBzdHJpbmdbXTtcbiAgICAgICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQodmFsdWVzWzBdKSAmJiB2YWx1ZXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICAgYEN1c3RvbSBjbGFpbSAnJHt0aGlzLm5hbWV9JzogQ09OVEFJTlMgb3BlcmF0b3IgcmVxdWlyZXMgZXhhY3RseSBvbmUgdmFsdWUsIGdvdCAke3ZhbHVlcy5sZW5ndGh9IHZhbHVlc2AsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjbGFpbU1hdGNoVmFsdWUgPSB7XG4gICAgICAgICAgbWF0Y2hWYWx1ZVN0cmluZzogdmFsdWVzWzBdLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ09OVEFJTlNfQU5ZIHVzZXMgbWF0Y2hWYWx1ZVN0cmluZ0xpc3RcbiAgICAgICAgY2xhaW1NYXRjaFZhbHVlID0ge1xuICAgICAgICAgIG1hdGNoVmFsdWVTdHJpbmdMaXN0OiB0aGlzLnZhbHVlIGFzIHN0cmluZ1tdLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpbmJvdW5kVG9rZW5DbGFpbU5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGluYm91bmRUb2tlbkNsYWltVmFsdWVUeXBlOiB0aGlzLnZhbHVlVHlwZSxcbiAgICAgIGF1dGhvcml6aW5nQ2xhaW1NYXRjaFZhbHVlOiB7XG4gICAgICAgIGNsYWltTWF0Y2hPcGVyYXRvcjogdGhpcy5vcGVyYXRvcixcbiAgICAgICAgY2xhaW1NYXRjaFZhbHVlOiBjbGFpbU1hdGNoVmFsdWUsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|