@orcabus/platform-cdk-constructs 1.0.8 → 1.1.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 +2 -2
- package/api-gateway/api-gateway.js +1 -1
- package/deployment-stack-pipeline/artifact-bucket.js +1 -1
- package/deployment-stack-pipeline/pipeline.js +1 -1
- package/dynamodb/index.js +2 -2
- package/ecs/index.js +1 -1
- package/eventbridge-rules/sfn-slack-notification.js +1 -1
- package/lambda/build_python/Dockerfile +1 -1
- package/lambda/index.js +6 -6
- package/lambda/layers/fastapi_tools/poetry.lock +69 -14
- package/lambda/layers/fastapi_tools/pyproject.toml +1 -1
- package/lambda/layers/fastapi_tools/uv.lock +3 -0
- package/lambda/layers/icav2_tools/poetry.lock +5 -67
- package/lambda/layers/icav2_tools/pyproject.toml +1 -1
- package/lambda/layers/mart_tools/poetry.lock +3 -3
- package/lambda/layers/mart_tools/pyproject.toml +1 -1
- package/lambda/layers/orcabus_api_tools/poetry.lock +3 -4
- package/lambda/layers/orcabus_api_tools/pyproject.toml +1 -1
- package/monitored-queue/index.js +1 -1
- package/named-lambda-role/index.js +1 -1
- package/package.json +1 -1
- package/provider-function/index.js +1 -1
- package/shared-config/networking.js +2 -2
- package/shared-config/slack.js +1 -1
package/.jsii
CHANGED
|
@@ -11976,6 +11976,6 @@
|
|
|
11976
11976
|
"symbolId": "shared-config/slack:SlackAlerts"
|
|
11977
11977
|
}
|
|
11978
11978
|
},
|
|
11979
|
-
"version": "1.0
|
|
11980
|
-
"fingerprint": "
|
|
11979
|
+
"version": "1.1.0",
|
|
11980
|
+
"fingerprint": "f+Y/SautOwRY+yUpMkV1ROtib0cW5HISrSkdL9wnX6w="
|
|
11981
11981
|
}
|
|
@@ -15,7 +15,7 @@ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
|
15
15
|
const aws_route53_targets_1 = require("aws-cdk-lib/aws-route53-targets");
|
|
16
16
|
const config_1 = require("./config");
|
|
17
17
|
class OrcaBusApiGateway extends constructs_1.Construct {
|
|
18
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.apigateway.OrcaBusApiGateway", version: "1.0
|
|
18
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.apigateway.OrcaBusApiGateway", version: "1.1.0" };
|
|
19
19
|
/**
|
|
20
20
|
* The AWS region where the API Gateway is deployed.
|
|
21
21
|
*/
|
|
@@ -13,7 +13,7 @@ exports.CROSS_DEPLOYMENT_ARTIFACT_BUCKET_NAME = "orcabus-cross-deployment-codepi
|
|
|
13
13
|
exports.CROSS_DEPLOYMENT_ARTIFACT_KMS_ALIAS = "orcabus-cross-deployment-codepipeline-artifact";
|
|
14
14
|
exports.CROSS_DEPLOYMENT_ARTIFACT_KMS_ARN_SSM_PARAMETER_NAME = "/orcabus/deployment-stack-pipeline/artifact-bucket/kms-key-arn";
|
|
15
15
|
class CrossDeploymentArtifactBucket extends constructs_1.Construct {
|
|
16
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.CrossDeploymentArtifactBucket", version: "1.0
|
|
16
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.CrossDeploymentArtifactBucket", version: "1.1.0" };
|
|
17
17
|
/**
|
|
18
18
|
* The S3 bucket used to store artifacts for cross-deployment pipelines.
|
|
19
19
|
*/
|
|
@@ -45,7 +45,7 @@ exports.DEFAULT_INSTALL_COMMANDS = [
|
|
|
45
45
|
* before using this construct.
|
|
46
46
|
*/
|
|
47
47
|
class DeploymentStackPipeline extends constructs_1.Construct {
|
|
48
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "1.0
|
|
48
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "1.1.0" };
|
|
49
49
|
/**
|
|
50
50
|
* The code pipeline construct that is created.
|
|
51
51
|
*/
|
package/dynamodb/index.js
CHANGED
|
@@ -40,7 +40,7 @@ const dynamodb = __importStar(require("aws-cdk-lib/aws-dynamodb"));
|
|
|
40
40
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
41
41
|
const config_1 = require("./config");
|
|
42
42
|
class DynamoDbPartitionedConstruct extends constructs_1.Construct {
|
|
43
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbPartitionedConstruct", version: "1.0
|
|
43
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbPartitionedConstruct", version: "1.1.0" };
|
|
44
44
|
table;
|
|
45
45
|
constructor(scope, id, props) {
|
|
46
46
|
super(scope, id);
|
|
@@ -75,7 +75,7 @@ class DynamoDbPartitionedConstruct extends constructs_1.Construct {
|
|
|
75
75
|
}
|
|
76
76
|
exports.DynamoDbPartitionedConstruct = DynamoDbPartitionedConstruct;
|
|
77
77
|
class DynamoDbNonPartitionedConstruct extends constructs_1.Construct {
|
|
78
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbNonPartitionedConstruct", version: "1.0
|
|
78
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbNonPartitionedConstruct", version: "1.1.0" };
|
|
79
79
|
table;
|
|
80
80
|
constructor(scope, id, props) {
|
|
81
81
|
super(scope, id);
|
package/ecs/index.js
CHANGED
|
@@ -55,7 +55,7 @@ exports.LAMBDA_ARCHITECTURE_MAP = {
|
|
|
55
55
|
['ARM64']: lambda.Architecture.ARM_64
|
|
56
56
|
};
|
|
57
57
|
class EcsFargateTaskConstruct extends constructs_1.Construct {
|
|
58
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "1.0
|
|
58
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "1.1.0" };
|
|
59
59
|
cluster;
|
|
60
60
|
taskDefinition;
|
|
61
61
|
taskExecutionRole;
|
|
@@ -17,7 +17,7 @@ var SfnEventStatus;
|
|
|
17
17
|
SfnEventStatus["ABORTED"] = "ABORTED";
|
|
18
18
|
})(SfnEventStatus || (exports.SfnEventStatus = SfnEventStatus = {}));
|
|
19
19
|
class SfnSlackNotification extends constructs_1.Construct {
|
|
20
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnSlackNotification", version: "1.0
|
|
20
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnSlackNotification", version: "1.1.0" };
|
|
21
21
|
rule;
|
|
22
22
|
constructor(scope, id, props) {
|
|
23
23
|
super(scope, id);
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# 4. Replaced /usr/app/venv/pip with uv pip shell script wrapper
|
|
8
8
|
# The correct AWS SAM build image based on the runtime of the function will be
|
|
9
9
|
# passed as build arg. The default allows to do `docker build .` when testing.
|
|
10
|
-
ARG IMAGE=public.ecr.aws/sam/build-python3.
|
|
10
|
+
ARG IMAGE=public.ecr.aws/sam/build-python3.14:latest
|
|
11
11
|
FROM $IMAGE
|
|
12
12
|
|
|
13
13
|
ARG TARGETPLATFORM
|
package/lambda/index.js
CHANGED
|
@@ -57,7 +57,7 @@ function getPythonUvDockerImage() {
|
|
|
57
57
|
return aws_cdk_lib_1.DockerImage.fromBuild(path_1.default.join(__dirname, 'build_python'));
|
|
58
58
|
}
|
|
59
59
|
class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
|
|
60
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "1.0
|
|
60
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "1.1.0" };
|
|
61
61
|
// Class constructs, to be used for caching the layers
|
|
62
62
|
// This means that if there are multiple lambdas throughout the stack
|
|
63
63
|
// They will all use the same layer
|
|
@@ -144,7 +144,7 @@ class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
|
|
|
144
144
|
if (!PythonUvFunction.orcabusApiToolsLayer.has(scope)) {
|
|
145
145
|
const layer = new aws_lambda_python_alpha_1.PythonLayerVersion(scope, 'orcabusApiToolsLayer', {
|
|
146
146
|
entry: path_1.default.join(__dirname, 'layers/orcabus_api_tools'),
|
|
147
|
-
compatibleRuntimes: [lambda.Runtime.
|
|
147
|
+
compatibleRuntimes: [lambda.Runtime.PYTHON_3_14],
|
|
148
148
|
compatibleArchitectures: [lambda.Architecture.ARM_64],
|
|
149
149
|
license: 'GPL3',
|
|
150
150
|
description: 'orcabusApiToolsLayer',
|
|
@@ -179,7 +179,7 @@ class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
|
|
|
179
179
|
if (!PythonUvFunction.martLayer.has(scope)) {
|
|
180
180
|
const layer = new aws_lambda_python_alpha_1.PythonLayerVersion(scope, 'martToolsLayer', {
|
|
181
181
|
entry: path_1.default.join(__dirname, 'layers/mart_tools'),
|
|
182
|
-
compatibleRuntimes: [lambda.Runtime.
|
|
182
|
+
compatibleRuntimes: [lambda.Runtime.PYTHON_3_14],
|
|
183
183
|
compatibleArchitectures: [lambda.Architecture.ARM_64],
|
|
184
184
|
license: 'GPL3',
|
|
185
185
|
description: 'martToolsLayer',
|
|
@@ -214,7 +214,7 @@ class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
|
|
|
214
214
|
if (!PythonUvFunction.icav2Layer.has(scope)) {
|
|
215
215
|
const layer = new aws_lambda_python_alpha_1.PythonLayerVersion(scope, 'icav2ToolsLayer', {
|
|
216
216
|
entry: path_1.default.join(__dirname, 'layers/icav2_tools'),
|
|
217
|
-
compatibleRuntimes: [lambda.Runtime.
|
|
217
|
+
compatibleRuntimes: [lambda.Runtime.PYTHON_3_14],
|
|
218
218
|
compatibleArchitectures: [lambda.Architecture.ARM_64],
|
|
219
219
|
license: 'GPL3',
|
|
220
220
|
description: 'icav2ToolsLayer',
|
|
@@ -253,7 +253,7 @@ class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
|
|
|
253
253
|
if (!PythonUvFunction.fastApiLayer.has(scope)) {
|
|
254
254
|
const layer = new aws_lambda_python_alpha_1.PythonLayerVersion(scope, 'fastApiLayer', {
|
|
255
255
|
entry: path_1.default.join(__dirname, 'layers/fastapi_tools'),
|
|
256
|
-
compatibleRuntimes: [lambda.Runtime.
|
|
256
|
+
compatibleRuntimes: [lambda.Runtime.PYTHON_3_14],
|
|
257
257
|
compatibleArchitectures: [lambda.Architecture.ARM_64],
|
|
258
258
|
license: 'GPL3',
|
|
259
259
|
description: 'fastApiLayer',
|
|
@@ -388,4 +388,4 @@ class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
|
|
|
388
388
|
}
|
|
389
389
|
}
|
|
390
390
|
exports.PythonUvFunction = PythonUvFunction;
|
|
391
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQ0Esd0RBRUM7O0FBcENELDhFQUF5RztBQUV6RywrREFBaUQ7QUFDakQsK0VBQWlFO0FBQ2pFLHlEQUEyQztBQUMzQyx5REFBMkM7QUFDM0MsdURBQXlDO0FBQ3pDLHFDQUF3QztBQUN4Qyw2Q0FBd0M7QUFFeEMsZ0RBQXdCO0FBRXhCLHVEQUlnQztBQUNoQyxxQ0FPa0I7QUFDbEIsb0NBQTBDO0FBQzFDLHdEQUFtRTtBQUNuRSxrREFJZ0M7QUFHaEMsU0FBZ0Isc0JBQXNCO0lBQ2xDLE9BQU8seUJBQVcsQ0FBQyxTQUFTLENBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBd0ZELE1BQWEsZ0JBQWlCLFNBQVEsd0NBQWM7O0lBQ2hELHNEQUFzRDtJQUN0RCxxRUFBcUU7SUFDckUsbUNBQW1DO0lBQzNCLE1BQU0sQ0FBQyxvQkFBb0IsR0FBeUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUM5RSxNQUFNLENBQUMsU0FBUyxHQUF5QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ25FLE1BQU0sQ0FBQyxVQUFVLEdBQXlDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDcEUsTUFBTSxDQUFDLFlBQVksR0FBeUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUU5RSxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTRCO1FBQ2xFLE1BQU0sT0FBTyxHQUFHO1lBQ1osR0FBRyxLQUFLO1lBQ1IsUUFBUSxFQUFFO2dCQUNOLEdBQUcsS0FBSyxDQUFDLFFBQVE7Z0JBQ2pCLFNBQVMsRUFBRTtvQkFDUCxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsU0FBUztvQkFDNUIsMkRBQTJEO29CQUMzRCxjQUFjLEVBQ1YsS0FB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TUFBTSw2Q0FBNkMsR0FBRyxDQUNwRCxLQUFLLENBQUMsNkNBQTZDLElBQUksMkRBQW1ELENBQzNHLENBQUE7UUFFRCw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQy9CLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUNwQiw0REFBNEQ7WUFDNUQsT0FBTyxFQUFFLENBQUMseUJBQXlCLEVBQUUsa0JBQWtCLENBQUM7WUFDeEQsU0FBUyxFQUFFO2dCQUNQLGVBQWUsaUJBQU0sSUFBSSwyQkFBZ0IsQ0FBQyxTQUFTLENBQUMsYUFBYSwrQ0FBK0MsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJO2dCQUN2SSxlQUFlLGlCQUFNLElBQUksMkJBQWdCLENBQUMsU0FBUyxDQUFDLGFBQWEseURBQXlELENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSTtnQkFDakosZUFBZSxpQkFBTSxJQUFJLDJCQUFnQixDQUFDLFNBQVMsQ0FBQyxhQUFhLDZDQUE2QyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUk7YUFDeEk7U0FDSixDQUFDLENBQ0wsQ0FBQztRQUVGLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsY0FBYyxDQUNmLDhCQUE4QixFQUFFLDhCQUE4QixDQUFDLFVBQVUsQ0FDNUUsQ0FBQTtRQUNELElBQUksQ0FBQyxjQUFjLENBQ2YsZ0JBQWdCLEVBQUUsc0JBQWMsQ0FDbkMsQ0FBQTtJQUNMLENBQUM7O0FBelpMLDRDQTJaQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UHl0aG9uRnVuY3Rpb24sIFB5dGhvbkZ1bmN0aW9uUHJvcHMsIFB5dGhvbkxheWVyVmVyc2lvbn0gZnJvbSBcIkBhd3MtY2RrL2F3cy1sYW1iZGEtcHl0aG9uLWFscGhhXCI7XG5pbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0ICogYXMgc2VjcmV0c01hbmFnZXIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlclwiO1xuaW1wb3J0ICogYXMgc3NtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3NtXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCAqIGFzIHMzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIjtcbmltcG9ydCB7TmFnU3VwcHJlc3Npb25zfSBmcm9tIFwiY2RrLW5hZ1wiO1xuaW1wb3J0IHtEb2NrZXJJbWFnZX0gZnJvbSAnYXdzLWNkay1saWInO1xuXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQge1xuICAgIFBhcmFtc0FuZFNlY3JldHNMYXllclZlcnNpb24sXG4gICAgUGFyYW1zQW5kU2VjcmV0c0xvZ0xldmVsLFxuICAgIFBhcmFtc0FuZFNlY3JldHNWZXJzaW9ucyxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQge1xuICAgIC8vIE9yY2FidXMgZGVmYXVsdHNcbiAgICBERUZBVUxUX0hPU1ROQU1FX1NTTV9QQVJBTUVURVIsIERFRkFVTFRfT1JDQUJVU19UT0tFTl9TRUNSRVRfSUQsXG4gICAgLy8gTWFydCBkZWZhdWx0c1xuICAgIE1BUlRfRU5WX1ZBUlMsIE1BUlRfTEFNQkRBX0ZVTkNUSU9OX05BTUUsXG4gICAgTUFSVF9TM19CVUNLRVQsXG4gICAgTUFSVF9TM19QUkVGSVgsXG59IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHtyZXNvbHZlU3RhZ2VOYW1lfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7QUNDT1VOVF9JRF9BTElBUywgUkVHSU9OfSBmcm9tIFwiLi4vc2hhcmVkLWNvbmZpZy9hY2NvdW50c1wiO1xuaW1wb3J0IHtcbiAgSUNBVjJfQUNDRVNTX1RPS0VOX1NFQ1JFVF9JRCxcbiAgSUNBVjJfQkFTRV9VUkwsIElDQVYyX1BST0pFQ1RfVE9fU1RPUkFHRV9DT05GSUdVUkFUSU9OU19TU01fUEFSQU1FVEVSX1BBVEhfUFJFRklYLFxuICBJQ0FWMl9TVE9SQUdFX0NPTkZJR1VSQVRJT05fU1NNX1BBUkFNRVRFUl9QQVRIX1BSRUZJWCwgSUNBVjJfU1RPUkFHRV9DUkVERU5USUFMU19TU01fUEFSQU1FVEVSX1BBVEhfUFJFRklYXG59IGZyb20gXCIuLi9zaGFyZWQtY29uZmlnL2ljYXYyXCI7XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFB5dGhvblV2RG9ja2VySW1hZ2UoKTogRG9ja2VySW1hZ2Uge1xuICAgIHJldHVybiBEb2NrZXJJbWFnZS5mcm9tQnVpbGQocGF0aC5qb2luKF9fZGlybmFtZSwgJ2J1aWxkX3B5dGhvbicpKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmNhYnVzUmVzb3VyY2VzUHJvcHMge1xuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGhlIG9yY2FidXNUb2tlblNlY3JldElkLCBvdGhlcndpc2UgaXQgd2lsbCBkZWZhdWx0IHRvIEBERUZBVUxUX09SQ0FCVVNfVE9LRU5fU0VDUkVUX0lEXG4gICAgICovXG4gICAgcmVhZG9ubHkgb3JjYWJ1c1Rva2VuU2VjcmV0SWQ/OiBzdHJpbmdcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGhlIGhvc3RuYW1lU3NtUGFyYW1ldGVyTmFtZSwgb3RoZXJ3aXNlIGl0IHdpbGwgZGVmYXVsdCB0byBAREVGQVVMVF9IT1NUTkFNRV9TU01fUEFSQU1FVEVSXG4gICAgICovXG4gICAgcmVhZG9ubHkgaG9zdG5hbWVTc21QYXJhbWV0ZXJOYW1lPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFydEVudmlyb25tZW50VmFyaWFibGVzIHtcbiAgICAvKipcbiAgICAgKiBQcm92aWRlIHRoZSBhdGhlbmFXb3JrZ3JvdXBOYW1lLCBvdGhlcndpc2UgaXQgd2lsbCBkZWZhdWx0IHRvIEBNQVJUX0VOVl9WQVJTLkFUSEVOQV9XT1JLR1JPVVBfTkFNRVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGF0aGVuYVdvcmtncm91cE5hbWU/OiBzdHJpbmdcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGhlIGF0aGVuYURhdGFzb3VyY2VOYW1lLCBvdGhlcndpc2UgaXQgd2lsbCBkZWZhdWx0IHRvIEBNQVJUX0VOVl9WQVJTLmF0aGVuYURhdGFzb3VyY2VOYW1lXG4gICAgICovXG4gICAgcmVhZG9ubHkgYXRoZW5hRGF0YXNvdXJjZU5hbWU/OiBzdHJpbmdcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGhlIGF0aGVuYURhdGFiYXNlTmFtZSwgb3RoZXJ3aXNlIGl0IHdpbGwgZGVmYXVsdCB0byBATUFSVF9FTlZfVkFSUy5BVEhFTkFfREFUQUJBU0VfTkFNRVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGF0aGVuYURhdGFiYXNlTmFtZT86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEljYXYyUmVzb3VyY2VzUHJvcHMge1xuICAgIC8qKlxuICAgICAqIFRoZSBpZCBvZiB0aGUgc2VjcmV0IHRoYXQgY29udGFpbnMgdGhlIGljYXYyIGFjY2VzcyB0b2tlblxuICAgICAqIG90aGVyd2lzZSBpdCB3aWxsIGRlZmF1bHQgdG8gQElDQVYyX0FDQ0VTU19UT0tFTl9TRUNSRVRfSURcbiAgICAgKi9cbiAgICByZWFkb25seSBpY2F2MkFjY2Vzc1Rva2VuU2VjcmV0SWQ/OiBzdHJpbmdcbiAgICByZWFkb25seSBpY2F2MlN0b3JhZ2VDb25maWd1cmF0aW9uU3NtUGFyYW1ldGVyUGF0aFByZWZpeD86IHN0cmluZ1xuICAgIHJlYWRvbmx5IGljYXYyUHJvamVjdFRvU3RvcmFnZUNvbmZpZ3VyYXRpb25zU3NtUGFyYW1ldGVyUGF0aFByZWZpeD86IHN0cmluZ1xuICAgIHJlYWRvbmx5IGljYXYyU3RvcmFnZUNyZWRlbnRpYWxzU3NtUGFyYW1ldGVyUGF0aFByZWZpeD86IHN0cmluZ1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUHl0aG9uVXZGdW5jdGlvblByb3BzIGV4dGVuZHMgUHl0aG9uRnVuY3Rpb25Qcm9wcyB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdG8gaW5jbHVkZSB0aGUgb3JjYWJ1cyBhcGkgdG9vbHMgbGF5ZXIgaW4gdGhlIGxhbWJkYSBmdW5jdGlvbiBidWlsZFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGluY2x1ZGVPcmNhYnVzQXBpVG9vbHNMYXllcj86IGJvb2xlYW5cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUgdGhlIG1hcnQgbGF5ZXIgaW4gdGhlIGxhbWJkYSBmdW5jdGlvbiBidWlsZFxuICAgICAqIE5vdGUgdGhhdCB0aGUgbWFydCBsYXllciBpcyBhIGxpdHRsZSBoZWF2aWVyIHRoYW4gdGhlIG9yY2FidXMgYXBpIHRvb2xzIGxheWVyXG4gICAgICogU2luY2Ugd2UgcmVxdWlyZSBwYW5kYXMgdG8gYmUgaW5zdGFsbGVkXG4gICAgICovXG4gICAgcmVhZG9ubHkgaW5jbHVkZU1hcnRMYXllcj86IGJvb2xlYW5cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUgdGhlIGljYXYyIGxheWVyIGluIHRoZSBsYW1iZGEgZnVuY3Rpb24gYnVpbGRcbiAgICAgKi9cbiAgICByZWFkb25seSBpbmNsdWRlSWNhdjJMYXllcj86IGJvb2xlYW5cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUgdGhlIGZhc3RhcGkgbGF5ZXIgaW4gdGhlIGxhbWJkYSBmdW5jdGlvbiBidWlsZFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGluY2x1ZGVGYXN0QXBpTGF5ZXI/OiBib29sZWFuXG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlIHRoZSBvcmNhYnVzVG9rZW5SZXNvdXJjZXMsIG9wdGlvbmFsLCBvdGhlcndpc2UgaXQgd2lsbCBkZWZhdWx0IHRvXG4gICAgICogQERFRkFVTFRfT1JDQUJVU19UT0tFTl9TRUNSRVRfSUQgYW5kIEBERUZBVUxUX0hPU1ROQU1FX1NTTV9QQVJBTUVURVJcbiAgICAgKiBmb3IgdGhlIHNlY3JldCBhbmQgU1NNIHBhcmFtZXRlciByZXNwZWN0aXZlbHlcbiAgICAgKi9cbiAgICByZWFkb25seSBvcmNhYnVzVG9rZW5SZXNvdXJjZXM/OiBPcmNhYnVzUmVzb3VyY2VzUHJvcHNcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGhlIG1hcnRFbnZpcm9ubWVudFZhcmlhYmxlcywgb3B0aW9uYWwsIG90aGVyd2lzZSBpdCB3aWxsIGRlZmF1bHQgdG9cbiAgICAgKiBATUFSVF9FTlZfVkFSUy5BVEhFTkFfV09SS0dST1VQX05BTUUsIEBNQVJUX0VOVl9WQVJTLkFUSEVOQV9EQVRBU09VUkNFX05BTUVcbiAgICAgKiBhbmQgQE1BUlRfRU5WX1ZBUlMuQVRIRU5BX0RBVEFCQVNFX05BTUUgZm9yIHRoZSBhdGhlbmEgd29ya2dyb3VwLCBkYXRhc291cmNlIGFuZCBkYXRhYmFzZSByZXNwZWN0aXZlbHlcbiAgICAgKi9cbiAgICByZWFkb25seSBtYXJ0RW52aXJvbm1lbnRWYXJpYWJsZXM/OiBNYXJ0RW52aXJvbm1lbnRWYXJpYWJsZXNcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGhlIGljYXYyUmVzb3VyY2VzLCBvcHRpb25hbCwgb3RoZXJ3aXNlIGl0IHdpbGwgZGVmYXVsdCB0b1xuICAgICAqIEBERUZBVUxUX0lDQVYyX0FDQ0VTU19UT0tFTl9TRUNSRVRfSUQgZm9yIHRoZSBzZWNyZXRcbiAgICAgKi9cbiAgICByZWFkb25seSBpY2F2MlJlc291cmNlcz86IEljYXYyUmVzb3VyY2VzUHJvcHNcbn1cblxuXG5leHBvcnQgY2xhc3MgUHl0aG9uVXZGdW5jdGlvbiBleHRlbmRzIFB5dGhvbkZ1bmN0aW9uIHtcbiAgICAvLyBDbGFzcyBjb25zdHJ1Y3RzLCB0byBiZSB1c2VkIGZvciBjYWNoaW5nIHRoZSBsYXllcnNcbiAgICAvLyBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGxhbWJkYXMgdGhyb3VnaG91dCB0aGUgc3RhY2tcbiAgICAvLyBUaGV5IHdpbGwgYWxsIHVzZSB0aGUgc2FtZSBsYXllclxuICAgIHByaXZhdGUgc3RhdGljIG9yY2FidXNBcGlUb29sc0xheWVyOiBNYXA8Q29uc3RydWN0LCBsYW1iZGEuSUxheWVyVmVyc2lvbj4gPSBuZXcgTWFwKCk7XG4gICAgcHJpdmF0ZSBzdGF0aWMgbWFydExheWVyOiBNYXA8Q29uc3RydWN0LCBsYW1iZGEuSUxheWVyVmVyc2lvbj4gPSBuZXcgTWFwKCk7XG4gICAgcHJpdmF0ZSBzdGF0aWMgaWNhdjJMYXllcjogTWFwPENvbnN0cnVjdCwgbGFtYmRhLklMYXllclZlcnNpb24+ID0gbmV3IE1hcCgpO1xuICAgIHByaXZhdGUgc3RhdGljIGZhc3RBcGlMYXllcjogTWFwPENvbnN0cnVjdCwgbGFtYmRhLklMYXllclZlcnNpb24+ID0gbmV3IE1hcCgpO1xuXG4gICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB5dGhvblV2RnVuY3Rpb25Qcm9wcykge1xuICAgICAgICBjb25zdCB1dlByb3BzID0ge1xuICAgICAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgICAgICBidW5kbGluZzoge1xuICAgICAgICAgICAgICAgIC4uLnByb3BzLmJ1bmRsaW5nLFxuICAgICAgICAgICAgICAgIGJ1aWxkQXJnczoge1xuICAgICAgICAgICAgICAgICAgICAuLi5wcm9wcy5idW5kbGluZz8uYnVpbGRBcmdzLFxuICAgICAgICAgICAgICAgICAgICAvLyBBZGQgVEFSR0VUUExBVEZPUk0gdG8gYnVpbGQgYXJncyBpZiBpdCdzIG5vdCBhbHJlYWR5IHNldFxuICAgICAgICAgICAgICAgICAgICBUQVJHRVRQTEFURk9STTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmJ1bmRsaW5nPy5idWlsZEFyZ3M/LlRBUkdFVFBMQVRGT1JNID8/IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LmRvY2tlclBsYXRmb3JtLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaW1hZ2U6IGdldFB5dGhvblV2RG9ja2VySW1hZ2UoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kSG9va3M6IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICBiZWZvcmVCdW5kbGluZyhpbnB1dERpcjogc3RyaW5nLCBvdXRwdXREaXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5idW5kbGluZz8uY29tbWFuZEhvb2tzPy5iZWZvcmVCdW5kbGluZyBhcyB1bmtub3duIGFzIHN0cmluZ1tdID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIGFmdGVyQnVuZGxpbmcoaW5wdXREaXI6IHN0cmluZywgb3V0cHV0RGlyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHByb3BzLmJ1bmRsaW5nPy5jb21tYW5kSG9va3M/LmFmdGVyQnVuZGxpbmcgYXMgdW5rbm93biBhcyBzdHJpbmdbXSA/PyBbXSkuY29uY2F0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSB0ZXN0cyBkaXJlY3RvcnkgZnJvbSBwYW5kYXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgcm0gLXJmICR7b3V0cHV0RGlyfS9wYW5kYXMvdGVzdHNgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgKnB5YyBmaWxlcyBhbmQgX19weWNhY2hlX18gZGlyZWN0b3JpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZmluZCAke291dHB1dERpcn0gLXR5cGUgZiAtbmFtZSAnKi5weWMnIC1kZWxldGVgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgX19weWNhY2hlX18gZGlyZWN0b3JpZXMgY29udGVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZmluZCAke291dHB1dERpcn0gLXR5cGUgZCAtbmFtZSAnX19weWNhY2hlX18nIC1leGVjIHJtIC1yZiB7fS8qIFxcXFw7YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWxldGUgdGhlIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIHRoZW1zZWx2ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZmluZCAke291dHB1dERpcn0gLXR5cGUgZCAtbmFtZSAnX19weWNhY2hlX18nIC1kZWxldGVgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFyYW1zQW5kU2VjcmV0czpcbiAgICAgICAgICAgICAgICBwcm9wcy5wYXJhbXNBbmRTZWNyZXRzID8/XG4gICAgICAgICAgICAgICAgUGFyYW1zQW5kU2VjcmV0c0xheWVyVmVyc2lvbi5mcm9tVmVyc2lvbihQYXJhbXNBbmRTZWNyZXRzVmVyc2lvbnMuVjFfMF8xMDMsIHtcbiAgICAgICAgICAgICAgICAgICAgY2FjaGVFbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjYWNoZVNpemU6IDMwMCxcbiAgICAgICAgICAgICAgICAgICAgbG9nTGV2ZWw6IFBhcmFtc0FuZFNlY3JldHNMb2dMZXZlbC5ERUJVRyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkLCB1dlByb3BzKTtcblxuICAgICAgICBpZiAocHJvcHMuaW5jbHVkZU9yY2FidXNBcGlUb29sc0xheWVyKSB7XG4gICAgICAgICAgICAvKiBTZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIE9yY2FidXMgcmVzb3VyY2VzICovXG4gICAgICAgICAgICB0aGlzLnNldE9yY2FidXNSZXNvdXJjZXMocHJvcHMub3JjYWJ1c1Rva2VuUmVzb3VyY2VzID8/IHt9KVxuXG4gICAgICAgICAgICAvKiBCdWlsZCB0aGUgb3JjYWJ1cyBBcGkgdG9vbHMgbGF5ZXIgKi9cbiAgICAgICAgICAgIHRoaXMuYnVpbGRPcmNhYnVzQXBpVG9vbHNMYXllcihzY29wZSlcbiAgICAgICAgICAgIHRoaXMuYWRkTGF5ZXJzKDxQeXRob25MYXllclZlcnNpb24+UHl0aG9uVXZGdW5jdGlvbi5vcmNhYnVzQXBpVG9vbHNMYXllci5nZXQoc2NvcGUpKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BzLmluY2x1ZGVNYXJ0TGF5ZXIpIHtcbiAgICAgICAgICAgIC8qIFNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgbWFydCByZXNvdXJjZXMgKi9cbiAgICAgICAgICAgIHRoaXMuc2V0QXRoZW5hUmVzb3VyY2VzKHByb3BzLm1hcnRFbnZpcm9ubWVudFZhcmlhYmxlcyA/PyB7fSlcblxuICAgICAgICAgICAgLyogQnVpbGQgdGhlIG1hcnQgbGF5ZXIgKi9cbiAgICAgICAgICAgIHRoaXMuYnVpbGRNYXJ0VG9vbHNMYXllcihzY29wZSlcbiAgICAgICAgICAgIHRoaXMuYWRkTGF5ZXJzKDxQeXRob25MYXllclZlcnNpb24+UHl0aG9uVXZGdW5jdGlvbi5tYXJ0TGF5ZXIuZ2V0KHNjb3BlKSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcm9wcy5pbmNsdWRlSWNhdjJMYXllcikge1xuICAgICAgICAgICAgLyogU2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSBpY2F2MiByZXNvdXJjZXMgKi9cbiAgICAgICAgICAgIHRoaXMuc2V0SWNhdjJSZXNvdXJjZXMocHJvcHMuaWNhdjJSZXNvdXJjZXMgPz8ge30pXG5cbiAgICAgICAgICAgIC8qIEJ1aWxkIHRoZSBpY2F2MiBsYXllciAqL1xuICAgICAgICAgICAgdGhpcy5idWlsZEljYXYyTGF5ZXIoc2NvcGUpXG4gICAgICAgICAgICB0aGlzLmFkZExheWVycyg8UHl0aG9uTGF5ZXJWZXJzaW9uPlB5dGhvblV2RnVuY3Rpb24uaWNhdjJMYXllci5nZXQoc2NvcGUpKVxuICAgICAgICAgICAgLy8gQWRkIG5hZyBzdXBwcmVzc2lvblxuICAgICAgICAgICAgLy8gU2luY2UgdGhlIGxhbWJkYSB3aWxsIG5lZWQgdG8gYWNjZXNzIHRoZSBTU00gcGFyYW1ldGVyc1xuICAgICAgICAgICAgTmFnU3VwcHJlc3Npb25zLmFkZFJlc291cmNlU3VwcHJlc3Npb25zKFxuICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNScsXG4gICAgICAgICAgICAgICAgICByZWFzb246ICdUaGUgbGFtYmRhIGlhbSByb2xlIG5lZWRzIHRvIGFjY2VzcyB0aGUgc3NtIHBhcmFtZXRlcnMuJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BzLmluY2x1ZGVGYXN0QXBpTGF5ZXIpIHtcbiAgICAgICAgICAgIC8qIEJ1aWxkIHRoZSBmYXN0YXBpIGxheWVyICovXG4gICAgICAgICAgICB0aGlzLmJ1aWxkRmFzdEFwaUxheWVyKHNjb3BlKVxuICAgICAgICAgICAgdGhpcy5hZGRMYXllcnMoPFB5dGhvbkxheWVyVmVyc2lvbj5QeXRob25VdkZ1bmN0aW9uLmZhc3RBcGlMYXllci5nZXQoc2NvcGUpKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZE9yY2FidXNBcGlUb29sc0xheWVyKHNjb3BlOiBDb25zdHJ1Y3QpIHtcbiAgICAgICAgLy8gT25seSBidWlsZCBvcmNhYnVzIGFwaSBsYXllciBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICAgIGlmICghUHl0aG9uVXZGdW5jdGlvbi5vcmNhYnVzQXBpVG9vbHNMYXllci5oYXMoc2NvcGUpKSB7XG4gICAgICAgICAgICBjb25zdCBsYXllciA9IG5ldyBQeXRob25MYXllclZlcnNpb24oc2NvcGUsICdvcmNhYnVzQXBpVG9vbHNMYXllcicsIHtcbiAgICAgICAgICAgICAgICBlbnRyeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ2xheWVycy9vcmNhYnVzX2FwaV90b29scycpLFxuICAgICAgICAgICAgICAgIGNvbXBhdGlibGVSdW50aW1lczogW2xhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzEyXSxcbiAgICAgICAgICAgICAgICBjb21wYXRpYmxlQXJjaGl0ZWN0dXJlczogW2xhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0XSxcbiAgICAgICAgICAgICAgICBsaWNlbnNlOiAnR1BMMycsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdvcmNhYnVzQXBpVG9vbHNMYXllcicsXG4gICAgICAgICAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IGdldFB5dGhvblV2RG9ja2VySW1hZ2UoKSxcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZEhvb2tzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVCdW5kbGluZyhpbnB1dERpcjogc3RyaW5nLCBvdXRwdXREaXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJCdW5kbGluZyhpbnB1dERpcjogc3RyaW5nLCBvdXRwdXREaXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgcGlwIGluc3RhbGwgJHtpbnB1dERpcn0gLS10YXJnZXQgJHtvdXRwdXREaXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSB0ZXN0cyBkaXJlY3RvcnkgZnJvbSBwYW5kYXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHJtIC1yZiAke291dHB1dERpcn0vcGFuZGFzL3Rlc3RzYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSAqcHljIGZpbGVzIGFuZCBfX3B5Y2FjaGVfXyBkaXJlY3Rvcmllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZmluZCAke291dHB1dERpcn0gLXR5cGUgZiAtbmFtZSAnKi5weWMnIC1kZWxldGVgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWxldGUgdGhlIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIGNvbnRlbnRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBmaW5kICR7b3V0cHV0RGlyfSAtdHlwZSBkIC1uYW1lICdfX3B5Y2FjaGVfXycgLWV4ZWMgcm0gLXJmIHt9LyogXFxcXDtgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWxldGUgdGhlIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIHRoZW1zZWx2ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGZpbmQgJHtvdXRwdXREaXJ9IC10eXBlIGQgLW5hbWUgJ19fcHljYWNoZV9fJyAtZGVsZXRlYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIFB5dGhvblV2RnVuY3Rpb24ub3JjYWJ1c0FwaVRvb2xzTGF5ZXIuc2V0KHNjb3BlLCBsYXllcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkTWFydFRvb2xzTGF5ZXIoc2NvcGU6IENvbnN0cnVjdCkge1xuICAgICAgICAvLyBPbmx5IGJ1aWxkIHRoZSBsYXllciBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICAgIGlmICghUHl0aG9uVXZGdW5jdGlvbi5tYXJ0TGF5ZXIuaGFzKHNjb3BlKSkge1xuICAgICAgICAgICAgY29uc3QgbGF5ZXIgPSBuZXcgUHl0aG9uTGF5ZXJWZXJzaW9uKHNjb3BlLCAnbWFydFRvb2xzTGF5ZXInLCB7XG4gICAgICAgICAgICAgICAgZW50cnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdsYXllcnMvbWFydF90b29scycpLFxuICAgICAgICAgICAgICAgIGNvbXBhdGlibGVSdW50aW1lczogW2xhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzEyXSxcbiAgICAgICAgICAgICAgICBjb21wYXRpYmxlQXJjaGl0ZWN0dXJlczogW2xhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0XSxcbiAgICAgICAgICAgICAgICBsaWNlbnNlOiAnR1BMMycsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdtYXJ0VG9vbHNMYXllcicsXG4gICAgICAgICAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IGdldFB5dGhvblV2RG9ja2VySW1hZ2UoKSxcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZEhvb2tzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVCdW5kbGluZyhpbnB1dERpcjogc3RyaW5nLCBvdXRwdXREaXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJCdW5kbGluZyhpbnB1dERpcjogc3RyaW5nLCBvdXRwdXREaXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgcGlwIGluc3RhbGwgJHtpbnB1dERpcn0gLS10YXJnZXQgJHtvdXRwdXREaXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSB0ZXN0cyBkaXJlY3RvcnkgZnJvbSBwYW5kYXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHJtIC1yZiAke291dHB1dERpcn0vcGFuZGFzL3Rlc3RzYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSAqcHljIGZpbGVzIGFuZCBfX3B5Y2FjaGVfXyBkaXJlY3Rvcmllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZmluZCAke291dHB1dERpcn0gLXR5cGUgZiAtbmFtZSAnKi5weWMnIC1kZWxldGVgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWxldGUgdGhlIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIGNvbnRlbnRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBmaW5kICR7b3V0cHV0RGlyfSAtdHlwZSBkIC1uYW1lICdfX3B5Y2FjaGVfXycgLWV4ZWMgcm0gLXJmIHt9LyogXFxcXDtgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWxldGUgdGhlIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIHRoZW1zZWx2ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGZpbmQgJHtvdXRwdXREaXJ9IC10eXBlIGQgLW5hbWUgJ19fcHljYWNoZV9fJyAtZGVsZXRlYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBQeXRob25VdkZ1bmN0aW9uLm1hcnRMYXllci5zZXQoc2NvcGUsIGxheWVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRJY2F2MkxheWVyKHNjb3BlOiBDb25zdHJ1Y3QpIHtcbiAgICAgICAgLy8gT25seSBidWlsZCB0aGUgbGF5ZXIgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgICAgICBpZiAoIVB5dGhvblV2RnVuY3Rpb24uaWNhdjJMYXllci5oYXMoc2NvcGUpKSB7XG4gICAgICAgICAgICBjb25zdCBsYXllciA9IG5ldyBQeXRob25MYXllclZlcnNpb24oc2NvcGUsICdpY2F2MlRvb2xzTGF5ZXInLCB7XG4gICAgICAgICAgICAgICAgZW50cnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdsYXllcnMvaWNhdjJfdG9vbHMnKSxcbiAgICAgICAgICAgICAgICBjb21wYXRpYmxlUnVudGltZXM6IFtsYW1iZGEuUnVudGltZS5QWVRIT05fM18xMl0sXG4gICAgICAgICAgICAgICAgY29tcGF0aWJsZUFyY2hpdGVjdHVyZXM6IFtsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NF0sXG4gICAgICAgICAgICAgICAgbGljZW5zZTogJ0dQTDMnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnaWNhdjJUb29sc0xheWVyJyxcbiAgICAgICAgICAgICAgICBidW5kbGluZzoge1xuICAgICAgICAgICAgICAgICAgICBpbWFnZTogZ2V0UHl0aG9uVXZEb2NrZXJJbWFnZSgpLFxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kSG9va3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZUJ1bmRsaW5nKGlucHV0RGlyOiBzdHJpbmcsIG91dHB1dERpcjogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhZnRlckJ1bmRsaW5nKGlucHV0RGlyOiBzdHJpbmcsIG91dHB1dERpcjogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBwaXAgaW5zdGFsbCAke2lucHV0RGlyfSAtLXRhcmdldCAke291dHB1dERpcn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWxldGUgdGhlIHRlc3RzIGRpcmVjdG9yeSBmcm9tIHBhbmRhc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgcm0gLXJmICR7b3V0cHV0RGlyfS9wYW5kYXMvdGVzdHNgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWxldGUgdGhlICpweWMgZmlsZXMgYW5kIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBmaW5kICR7b3V0cHV0RGlyfSAtdHlwZSBmIC1uYW1lICcqLnB5YycgLWRlbGV0ZWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgX19weWNhY2hlX18gZGlyZWN0b3JpZXMgY29udGVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGZpbmQgJHtvdXRwdXREaXJ9IC10eXBlIGQgLW5hbWUgJ19fcHljYWNoZV9fJyAtZXhlYyBybSAtcmYge30vKiBcXFxcO2AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgX19weWNhY2hlX18gZGlyZWN0b3JpZXMgdGhlbXNlbHZlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZmluZCAke291dHB1dERpcn0gLXR5cGUgZCAtbmFtZSAnX19weWNhY2hlX18nIC1kZWxldGVgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVbmluc3RhbGwgYm90bzMgJiBib3RvY29yZSB0byBhdm9pZCBibG9hdGluZyB0aGUgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGlwIGlzIGFsaWFzZWQgdG8gJ3V2IHBpcCcgc28gbm8gbmVlZCB0byBpbmNsdWRlIC0teWVzIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgcGlwIHVuaW5zdGFsbCBib3RvMyBib3RvY29yZWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBybSAtcmYgJHtvdXRwdXREaXJ9L2JvdG8zICR7b3V0cHV0RGlyfS9ib3RvY29yZWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgUHl0aG9uVXZGdW5jdGlvbi5pY2F2MkxheWVyLnNldChzY29wZSwgbGF5ZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZEZhc3RBcGlMYXllcihzY29wZTogQ29uc3RydWN0KSB7XG4gICAgICAgIC8vIE9ubHkgYnVpbGQgdGhlIGxheWVyIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICAgICAgaWYgKCFQeXRob25VdkZ1bmN0aW9uLmZhc3RBcGlMYXllci5oYXMoc2NvcGUpKSB7XG4gICAgICAgICAgICBjb25zdCBsYXllciA9IG5ldyBQeXRob25MYXllclZlcnNpb24oc2NvcGUsICdmYXN0QXBpTGF5ZXInLCB7XG4gICAgICAgICAgICAgICAgZW50cnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdsYXllcnMvZmFzdGFwaV90b29scycpLFxuICAgICAgICAgICAgICAgIGNvbXBhdGlibGVSdW50aW1lczogW2xhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzEyXSxcbiAgICAgICAgICAgICAgICBjb21wYXRpYmxlQXJjaGl0ZWN0dXJlczogW2xhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0XSxcbiAgICAgICAgICAgICAgICBsaWNlbnNlOiAnR1BMMycsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdmYXN0QXBpTGF5ZXInLFxuICAgICAgICAgICAgICAgIGJ1bmRsaW5nOiB7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiBnZXRQeXRob25VdkRvY2tlckltYWdlKCksXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRIb29rczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlQnVuZGxpbmcoaW5wdXREaXI6IHN0cmluZywgb3V0cHV0RGlyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyQnVuZGxpbmcoaW5wdXREaXI6IHN0cmluZywgb3V0cHV0RGlyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHBpcCBpbnN0YWxsICR7aW5wdXREaXJ9IC0tdGFyZ2V0ICR7b3V0cHV0RGlyfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgdGVzdHMgZGlyZWN0b3J5IGZyb20gcGFuZGFzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBybSAtcmYgJHtvdXRwdXREaXJ9L3BhbmRhcy90ZXN0c2AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgKnB5YyBmaWxlcyBhbmQgX19weWNhY2hlX18gZGlyZWN0b3JpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGZpbmQgJHtvdXRwdXREaXJ9IC10eXBlIGYgLW5hbWUgJyoucHljJyAtZGVsZXRlYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSBfX3B5Y2FjaGVfXyBkaXJlY3RvcmllcyBjb250ZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZmluZCAke291dHB1dERpcn0gLXR5cGUgZCAtbmFtZSAnX19weWNhY2hlX18nIC1leGVjIHJtIC1yZiB7fS8qIFxcXFw7YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSBfX3B5Y2FjaGVfXyBkaXJlY3RvcmllcyB0aGVtc2VsdmVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBmaW5kICR7b3V0cHV0RGlyfSAtdHlwZSBkIC1uYW1lICdfX3B5Y2FjaGVfXycgLWRlbGV0ZWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgUHl0aG9uVXZGdW5jdGlvbi5mYXN0QXBpTGF5ZXIuc2V0KHNjb3BlLCBsYXllcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE9yY2FidXNSZXNvdXJjZXMoXG4gICAgICAgIHByb3BzOiBPcmNhYnVzUmVzb3VyY2VzUHJvcHNcbiAgICApIHtcbiAgICAgICAgLy8gU2V0IHNlY3JldCBvYmplY3RcbiAgICAgICAgY29uc3Qgb3JjYWJ1c1Rva2VuU2VjcmV0SWQgPSBzZWNyZXRzTWFuYWdlci5TZWNyZXQuZnJvbVNlY3JldE5hbWVWMihcbiAgICAgICAgICAgIHRoaXMsICdvcmNhYnVzVG9rZW5TZWNyZXRJZCcsXG4gICAgICAgICAgICBwcm9wcy5vcmNhYnVzVG9rZW5TZWNyZXRJZCA/PyBERUZBVUxUX09SQ0FCVVNfVE9LRU5fU0VDUkVUX0lEXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGhvc3RuYW1lU3NtUGFyYW1ldGVyTmFtZSA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICAgICAgICB0aGlzLCAnaG9zdG5hbWVTc21QYXJhbWV0ZXJOYW1lJyxcbiAgICAgICAgICAgIHByb3BzLmhvc3RuYW1lU3NtUGFyYW1ldGVyTmFtZSA/PyBERUZBVUxUX0hPU1ROQU1FX1NTTV9QQVJBTUVURVIsXG4gICAgICAgIClcblxuICAgICAgICAvLyBBZGQgcGVybWlzc2lvbnMgZm9yIHRoZSBzZWNyZXQgYW5kIFNTTSBwYXJhbWV0ZXJcbiAgICAgICAgLy8gVG8gdGhlIGN1cnJlbnQgdmVyc2lvblxuICAgICAgICBvcmNhYnVzVG9rZW5TZWNyZXRJZC5ncmFudFJlYWQodGhpcy5jdXJyZW50VmVyc2lvbik7XG4gICAgICAgIGhvc3RuYW1lU3NtUGFyYW1ldGVyTmFtZS5ncmFudFJlYWQodGhpcy5jdXJyZW50VmVyc2lvbilcblxuICAgICAgICAvLyBBZGQgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAgICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoXG4gICAgICAgICAgICAnT1JDQUJVU19UT0tFTl9TRUNSRVRfSUQnLCBvcmNhYnVzVG9rZW5TZWNyZXRJZC5zZWNyZXROYW1lLFxuICAgICAgICApXG4gICAgICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoXG4gICAgICAgICAgICAnSE9TVE5BTUVfU1NNX1BBUkFNRVRFUl9OQU1FJywgaG9zdG5hbWVTc21QYXJhbWV0ZXJOYW1lLnBhcmFtZXRlck5hbWUsXG4gICAgICAgIClcbiAgICB9XG5cblxuICAgIHByaXZhdGUgc2V0QXRoZW5hUmVzb3VyY2VzKFxuICAgICAgICBwcm9wczogTWFydEVudmlyb25tZW50VmFyaWFibGVzXG4gICAgKSB7XG4gICAgICAgIC8vIFJlc29sdmUgdGhlIHN0YWdlIG5hbWUgYnkgcGVyZm9ybWluZyBhIHJldmVyc2UgbG9va3VwIHVzaW5nIGNkay5Bd3MuQUNDT1VOVF9JRCBvbiBBQ0NPVU5UX0lEX0FMSUFTXG4gICAgICAgIGNvbnN0IHN0YWdlTmFtZSA9IHJlc29sdmVTdGFnZU5hbWUodGhpcylcblxuICAgICAgICBjb25zdCBhdGhlbmFTM0J1Y2tldCA9IHMzLkJ1Y2tldC5mcm9tQnVja2V0TmFtZShcbiAgICAgICAgICAgIHRoaXMsICdhdGhlbmFTM0J1Y2tldCcsXG4gICAgICAgICAgICBNQVJUX1MzX0JVQ0tFVFtzdGFnZU5hbWVdXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBhdGhlbmFGdW5jdGlvbk5hbWUgPSBsYW1iZGEuRnVuY3Rpb24uZnJvbUZ1bmN0aW9uTmFtZShcbiAgICAgICAgICAgIHRoaXMsICdsYW1iZGFGdW5jdGlvbk5hbWUnLCBNQVJUX0xBTUJEQV9GVU5DVElPTl9OQU1FXG4gICAgICAgIClcblxuICAgICAgICAvLyBBZGQgZW52IHZhcnNcbiAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIGt2IHBhaXJzIG9mIE1BUlRfRU5WX1ZBUlNcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoTUFSVF9FTlZfVkFSUykpIHtcbiAgICAgICAgICAgIC8vIEFmdGVyXG4gICAgICAgICAgICBpZiAocHJvcHNba2V5IGFzIGtleW9mIE1hcnRFbnZpcm9ubWVudFZhcmlhYmxlc10gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoa2V5LCBwcm9wc1trZXkgYXMga2V5b2YgTWFydEVudmlyb25tZW50VmFyaWFibGVzXSEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEVudmlyb25tZW50KGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGVybWlzc2lvbnNcbiAgICAgICAgdGhpcy5jdXJyZW50VmVyc2lvbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICAgICAgICAvLyBGcm9tIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdGhlbmEvbGF0ZXN0L3VnL2V4YW1wbGUtcG9saWNpZXMtd29ya2dyb3VwLmh0bWxcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgIC8vIFdvcmtncm91cCBsaXN0c1xuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkxpc3RFbmdpbmVWZXJzaW9ucycsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6TGlzdFdvcmtHcm91cHMnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkxpc3REYXRhQ2F0YWxvZ3MnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkxpc3REYXRhYmFzZXMnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkdldERhdGFiYXNlJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpMaXN0VGFibGVNZXRhZGF0YScsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6R2V0VGFibGVNZXRhZGF0YScsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6R2V0RGF0YUNhdGFsb2cnLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbYGFybjphd3M6YXRoZW5hOiR7UkVHSU9OfToke0FDQ09VTlRfSURfQUxJQVNbc3RhZ2VOYW1lXX06KmBdLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmN1cnJlbnRWZXJzaW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgICAgICAgIC8vIEZyb20gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F0aGVuYS9sYXRlc3QvdWcvZXhhbXBsZS1wb2xpY2llcy13b3JrZ3JvdXAuaHRtbFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgLy8gV29ya2dyb3VwIGV4ZWN1dGlvbnNcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpCYXRjaEdldFF1ZXJ5RXhlY3V0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpHZXRRdWVyeUV4ZWN1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6TGlzdFF1ZXJ5RXhlY3V0aW9ucycsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6U3RhcnRRdWVyeUV4ZWN1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6U3RvcFF1ZXJ5RXhlY3V0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpHZXRRdWVyeVJlc3VsdHMnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkdldFF1ZXJ5UmVzdWx0c1N0cmVhbScsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6Q3JlYXRlTmFtZWRRdWVyeScsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6R2V0TmFtZWRRdWVyeScsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6QmF0Y2hHZXROYW1lZFF1ZXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpMaXN0TmFtZWRRdWVyaWVzJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpEZWxldGVOYW1lZFF1ZXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpDcmVhdGVQcmVwYXJlZFN0YXRlbWVudCcsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6R2V0UHJlcGFyZWRTdGF0ZW1lbnQnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkxpc3RQcmVwYXJlZFN0YXRlbWVudHMnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOlVwZGF0ZVByZXBhcmVkU3RhdGVtZW50JyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpEZWxldGVQcmVwYXJlZFN0YXRlbWVudCcsXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgYGFybjphd3M6YXRoZW5hOiR7UkVHSU9OfToke0FDQ09VTlRfSURfQUxJQVNbc3RhZ2VOYW1lXX06d29ya2dyb3VwLyR7TUFSVF9FTlZfVkFSUy5hdGhlbmFXb3JrZ3JvdXBOYW1lfWAsXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQWRkIHJlYWQgYWNjZXNzIHRvIHRoZSBTMyBidWNrZXRcbiAgICAgICAgYXRoZW5hUzNCdWNrZXQuZ3JhbnRSZWFkV3JpdGUoXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRWZXJzaW9uLFxuICAgICAgICAgICAgYCR7TUFSVF9TM19QUkVGSVh9KmBcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIEFkZCBpbnZva2UgYWNjZXNzIHRvIHRoZSBsYW1iZGEgZnVuY3Rpb25cbiAgICAgICAgYXRoZW5hRnVuY3Rpb25OYW1lLmdyYW50SW52b2tlKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50VmVyc2lvblxuICAgICAgICApXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJY2F2MlJlc291cmNlcyhcbiAgICAgICAgcHJvcHM6IEljYXYyUmVzb3VyY2VzUHJvcHNcbiAgICApIHtcbiAgICAgICAgLy8gUmVzb2x2ZSB0aGUgc3RhZ2UgbmFtZSBieSBwZXJmb3JtaW5nIGEgcmV2ZXJzZSBsb29rdXAgdXNpbmcgY2RrLkF3cy5BQ0NPVU5UX0lEIG9uIEFDQ09VTlRfSURfQUxJQVNcbiAgICAgICAgY29uc3Qgc3RhZ2VOYW1lID0gcmVzb2x2ZVN0YWdlTmFtZSh0aGlzKVxuXG4gICAgICAgIC8vIFNldCBzZWNyZXQgb2JqZWN0XG4gICAgICAgIGNvbnN0IGljYXYyQWNjZXNzVG9rZW5TZWNyZXRJZE9iamVjdCA9IHNlY3JldHNNYW5hZ2VyLlNlY3JldC5mcm9tU2VjcmV0TmFtZVYyKFxuICAgICAgICAgICAgdGhpcywgJ0lDQVYyX0FDQ0VTU19UT0tFTl9TRUNSRVRfSUQnLFxuICAgICAgICAgICAgcHJvcHMuaWNhdjJBY2Nlc3NUb2tlblNlY3JldElkID8/IElDQVYyX0FDQ0VTU19UT0tFTl9TRUNSRVRfSURbc3RhZ2VOYW1lXVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEFkZCBwZXJtaXNzaW9ucyBmb3IgdGhlIHNlY3JldCBhbmQgU1NNIHBhcmFtZXRlclxuICAgICAgICAvLyBUbyB0aGUgY3VycmVudCB2ZXJzaW9uXG4gICAgICAgIGljYXYyQWNjZXNzVG9rZW5TZWNyZXRJZE9iamVjdC5ncmFudFJlYWQodGhpcy5jdXJyZW50VmVyc2lvbik7XG5cbiAgICAgICAgLy8gQWRkIGNvbmZpZ3VyYXRpb24gcGF0aHNcbiAgICAgICAgY29uc3QgaWNhdjJTdG9yYWdlQ29uZmlndXJhdGlvblNzbVBhcmFtZXRlclBhdGhQcmVmaXggPSAoXG4gICAgICAgICAgcHJvcHMuaWNhdjJTdG9yYWdlQ29uZmlndXJhdGlvblNzbVBhcmFtZXRlclBhdGhQcmVmaXggPz8gSUNBVjJfU1RPUkFHRV9DT05GSUdVUkFUSU9OX1NTTV9QQVJBTUVURVJfUEFUSF9QUkVGSVhcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBpY2F2MlByb2plY3RUb1N0b3JhZ2VDb25maWd1cmF0aW9uc1NzbVBhcmFtZXRlclBhdGhQcmVmaXggPSAoXG4gICAgICAgICAgcHJvcHMuaWNhdjJQcm9qZWN0VG9TdG9yYWdlQ29uZmlndXJhdGlvbnNTc21QYXJhbWV0ZXJQYXRoUHJlZml4ID8/IElDQVYyX1BST0pFQ1RfVE9fU1RPUkFHRV9DT05GSUdVUkFUSU9OU19TU01fUEFSQU1FVEVSX1BBVEhfUFJFRklYXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgaWNhdjJTdG9yYWdlQ3JlZGVudGlhbHNTc21QYXJhbWV0ZXJQYXRoUHJlZml4ID0gKFxuICAgICAgICAgIHByb3BzLmljYXYyU3RvcmFnZUNyZWRlbnRpYWxzU3NtUGFyYW1ldGVyUGF0aFByZWZpeCA/PyBJQ0FWMl9TVE9SQUdFX0NSRURFTlRJQUxTX1NTTV9QQVJBTUVURVJfUEFUSF9QUkVGSVhcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIHRoZSBzc20gcGFyYW1ldGVyIHBhdGhzXG4gICAgICAgIHRoaXMuY3VycmVudFZlcnNpb24uYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICAgIC8vIFdlIG1heSBuZWVkIHRvIGdldCB0aGUgcGFyYW1ldGVycyBpbmRpdmlkdWFsbHkgb3IgYnkgcGF0aFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IFsnc3NtOkdldFBhcmFtZXRlcnNCeVBhdGgnLCAnc3NtOkdldFBhcmFtZXRlciddLFxuICAgICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgICAgICBgYXJuOmF3czpzc206JHtSRUdJT059OiR7QUNDT1VOVF9JRF9BTElBU1tzdGFnZU5hbWVdfTpwYXJhbWV0ZXIke2ljYXYyU3RvcmFnZUNvbmZpZ3VyYXRpb25Tc21QYXJhbWV0ZXJQYXRoUHJlZml4LnJlcGxhY2UoL1xcLyQvLCBcIlwiKX0vKmAsXG4gICAgICAgICAgICAgICAgICAgIGBhcm46YXdzOnNzbToke1JFR0lPTn06JHtBQ0NPVU5UX0lEX0FMSUFTW3N0YWdlTmFtZV19OnBhcmFtZXRlciR7aWNhdjJQcm9qZWN0VG9TdG9yYWdlQ29uZmlndXJhdGlvbnNTc21QYXJhbWV0ZXJQYXRoUHJlZml4LnJlcGxhY2UoL1xcLyQvLCBcIlwiKX0vKmAsXG4gICAgICAgICAgICAgICAgICAgIGBhcm46YXdzOnNzbToke1JFR0lPTn06JHtBQ0NPVU5UX0lEX0FMSUFTW3N0YWdlTmFtZV19OnBhcmFtZXRlciR7aWNhdjJTdG9yYWdlQ3JlZGVudGlhbHNTc21QYXJhbWV0ZXJQYXRoUHJlZml4LnJlcGxhY2UoL1xcLyQvLCBcIlwiKX0vKmAsXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQWRkIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgICAgICB0aGlzLmFkZEVudmlyb25tZW50KFxuICAgICAgICAgICAgJ0lDQVYyX0FDQ0VTU19UT0tFTl9TRUNSRVRfSUQnLCBpY2F2MkFjY2Vzc1Rva2VuU2VjcmV0SWRPYmplY3Quc2VjcmV0TmFtZSxcbiAgICAgICAgKVxuICAgICAgICB0aGlzLmFkZEVudmlyb25tZW50KFxuICAgICAgICAgICAgJ0lDQVYyX0JBU0VfVVJMJywgSUNBVjJfQkFTRV9VUkwsXG4gICAgICAgIClcbiAgICB9XG5cbn1cblxuXG5cblxuIl19
|
|
391
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQ0Esd0RBRUM7O0FBcENELDhFQUF5RztBQUV6RywrREFBaUQ7QUFDakQsK0VBQWlFO0FBQ2pFLHlEQUEyQztBQUMzQyx5REFBMkM7QUFDM0MsdURBQXlDO0FBQ3pDLHFDQUF3QztBQUN4Qyw2Q0FBd0M7QUFFeEMsZ0RBQXdCO0FBRXhCLHVEQUlnQztBQUNoQyxxQ0FPa0I7QUFDbEIsb0NBQTBDO0FBQzFDLHdEQUFtRTtBQUNuRSxrREFJZ0M7QUFHaEMsU0FBZ0Isc0JBQXNCO0lBQ2xDLE9BQU8seUJBQVcsQ0FBQyxTQUFTLENBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBd0ZELE1BQWEsZ0JBQWlCLFNBQVEsd0NBQWM7O0lBQ2hELHNEQUFzRDtJQUN0RCxxRUFBcUU7SUFDckUsbUNBQW1DO0lBQzNCLE1BQU0sQ0FBQyxvQkFBb0IsR0FBeUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUM5RSxNQUFNLENBQUMsU0FBUyxHQUF5QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ25FLE1BQU0sQ0FBQyxVQUFVLEdBQXlDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDcEUsTUFBTSxDQUFDLFlBQVksR0FBeUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUU5RSxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTRCO1FBQ2xFLE1BQU0sT0FBTyxHQUFHO1lBQ1osR0FBRyxLQUFLO1lBQ1IsUUFBUSxFQUFFO2dCQUNOLEdBQUcsS0FBSyxDQUFDLFFBQVE7Z0JBQ2pCLFNBQVMsRUFBRTtvQkFDUCxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsU0FBUztvQkFDNUIsMkRBQTJEO29CQUMzRCxjQUFjLEVBQ1YsS0FB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TUFBTSw2Q0FBNkMsR0FBRyxDQUNwRCxLQUFLLENBQUMsNkNBQTZDLElBQUksMkRBQW1ELENBQzNHLENBQUE7UUFFRCw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQy9CLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUNwQiw0REFBNEQ7WUFDNUQsT0FBTyxFQUFFLENBQUMseUJBQXlCLEVBQUUsa0JBQWtCLENBQUM7WUFDeEQsU0FBUyxFQUFFO2dCQUNQLGVBQWUsaUJBQU0sSUFBSSwyQkFBZ0IsQ0FBQyxTQUFTLENBQUMsYUFBYSwrQ0FBK0MsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJO2dCQUN2SSxlQUFlLGlCQUFNLElBQUksMkJBQWdCLENBQUMsU0FBUyxDQUFDLGFBQWEseURBQXlELENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSTtnQkFDakosZUFBZSxpQkFBTSxJQUFJLDJCQUFnQixDQUFDLFNBQVMsQ0FBQyxhQUFhLDZDQUE2QyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUk7YUFDeEk7U0FDSixDQUFDLENBQ0wsQ0FBQztRQUVGLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsY0FBYyxDQUNmLDhCQUE4QixFQUFFLDhCQUE4QixDQUFDLFVBQVUsQ0FDNUUsQ0FBQTtRQUNELElBQUksQ0FBQyxjQUFjLENBQ2YsZ0JBQWdCLEVBQUUsc0JBQWMsQ0FDbkMsQ0FBQTtJQUNMLENBQUM7O0FBelpMLDRDQTJaQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UHl0aG9uRnVuY3Rpb24sIFB5dGhvbkZ1bmN0aW9uUHJvcHMsIFB5dGhvbkxheWVyVmVyc2lvbn0gZnJvbSBcIkBhd3MtY2RrL2F3cy1sYW1iZGEtcHl0aG9uLWFscGhhXCI7XG5pbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0ICogYXMgc2VjcmV0c01hbmFnZXIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlclwiO1xuaW1wb3J0ICogYXMgc3NtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3NtXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCAqIGFzIHMzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIjtcbmltcG9ydCB7TmFnU3VwcHJlc3Npb25zfSBmcm9tIFwiY2RrLW5hZ1wiO1xuaW1wb3J0IHtEb2NrZXJJbWFnZX0gZnJvbSAnYXdzLWNkay1saWInO1xuXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQge1xuICAgIFBhcmFtc0FuZFNlY3JldHNMYXllclZlcnNpb24sXG4gICAgUGFyYW1zQW5kU2VjcmV0c0xvZ0xldmVsLFxuICAgIFBhcmFtc0FuZFNlY3JldHNWZXJzaW9ucyxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQge1xuICAgIC8vIE9yY2FidXMgZGVmYXVsdHNcbiAgICBERUZBVUxUX0hPU1ROQU1FX1NTTV9QQVJBTUVURVIsIERFRkFVTFRfT1JDQUJVU19UT0tFTl9TRUNSRVRfSUQsXG4gICAgLy8gTWFydCBkZWZhdWx0c1xuICAgIE1BUlRfRU5WX1ZBUlMsIE1BUlRfTEFNQkRBX0ZVTkNUSU9OX05BTUUsXG4gICAgTUFSVF9TM19CVUNLRVQsXG4gICAgTUFSVF9TM19QUkVGSVgsXG59IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHtyZXNvbHZlU3RhZ2VOYW1lfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7QUNDT1VOVF9JRF9BTElBUywgUkVHSU9OfSBmcm9tIFwiLi4vc2hhcmVkLWNvbmZpZy9hY2NvdW50c1wiO1xuaW1wb3J0IHtcbiAgSUNBVjJfQUNDRVNTX1RPS0VOX1NFQ1JFVF9JRCxcbiAgSUNBVjJfQkFTRV9VUkwsIElDQVYyX1BST0pFQ1RfVE9fU1RPUkFHRV9DT05GSUdVUkFUSU9OU19TU01fUEFSQU1FVEVSX1BBVEhfUFJFRklYLFxuICBJQ0FWMl9TVE9SQUdFX0NPTkZJR1VSQVRJT05fU1NNX1BBUkFNRVRFUl9QQVRIX1BSRUZJWCwgSUNBVjJfU1RPUkFHRV9DUkVERU5USUFMU19TU01fUEFSQU1FVEVSX1BBVEhfUFJFRklYXG59IGZyb20gXCIuLi9zaGFyZWQtY29uZmlnL2ljYXYyXCI7XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFB5dGhvblV2RG9ja2VySW1hZ2UoKTogRG9ja2VySW1hZ2Uge1xuICAgIHJldHVybiBEb2NrZXJJbWFnZS5mcm9tQnVpbGQocGF0aC5qb2luKF9fZGlybmFtZSwgJ2J1aWxkX3B5dGhvbicpKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmNhYnVzUmVzb3VyY2VzUHJvcHMge1xuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGhlIG9yY2FidXNUb2tlblNlY3JldElkLCBvdGhlcndpc2UgaXQgd2lsbCBkZWZhdWx0IHRvIEBERUZBVUxUX09SQ0FCVVNfVE9LRU5fU0VDUkVUX0lEXG4gICAgICovXG4gICAgcmVhZG9ubHkgb3JjYWJ1c1Rva2VuU2VjcmV0SWQ/OiBzdHJpbmdcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGhlIGhvc3RuYW1lU3NtUGFyYW1ldGVyTmFtZSwgb3RoZXJ3aXNlIGl0IHdpbGwgZGVmYXVsdCB0byBAREVGQVVMVF9IT1NUTkFNRV9TU01fUEFSQU1FVEVSXG4gICAgICovXG4gICAgcmVhZG9ubHkgaG9zdG5hbWVTc21QYXJhbWV0ZXJOYW1lPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFydEVudmlyb25tZW50VmFyaWFibGVzIHtcbiAgICAvKipcbiAgICAgKiBQcm92aWRlIHRoZSBhdGhlbmFXb3JrZ3JvdXBOYW1lLCBvdGhlcndpc2UgaXQgd2lsbCBkZWZhdWx0IHRvIEBNQVJUX0VOVl9WQVJTLkFUSEVOQV9XT1JLR1JPVVBfTkFNRVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGF0aGVuYVdvcmtncm91cE5hbWU/OiBzdHJpbmdcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGhlIGF0aGVuYURhdGFzb3VyY2VOYW1lLCBvdGhlcndpc2UgaXQgd2lsbCBkZWZhdWx0IHRvIEBNQVJUX0VOVl9WQVJTLmF0aGVuYURhdGFzb3VyY2VOYW1lXG4gICAgICovXG4gICAgcmVhZG9ubHkgYXRoZW5hRGF0YXNvdXJjZU5hbWU/OiBzdHJpbmdcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGhlIGF0aGVuYURhdGFiYXNlTmFtZSwgb3RoZXJ3aXNlIGl0IHdpbGwgZGVmYXVsdCB0byBATUFSVF9FTlZfVkFSUy5BVEhFTkFfREFUQUJBU0VfTkFNRVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGF0aGVuYURhdGFiYXNlTmFtZT86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEljYXYyUmVzb3VyY2VzUHJvcHMge1xuICAgIC8qKlxuICAgICAqIFRoZSBpZCBvZiB0aGUgc2VjcmV0IHRoYXQgY29udGFpbnMgdGhlIGljYXYyIGFjY2VzcyB0b2tlblxuICAgICAqIG90aGVyd2lzZSBpdCB3aWxsIGRlZmF1bHQgdG8gQElDQVYyX0FDQ0VTU19UT0tFTl9TRUNSRVRfSURcbiAgICAgKi9cbiAgICByZWFkb25seSBpY2F2MkFjY2Vzc1Rva2VuU2VjcmV0SWQ/OiBzdHJpbmdcbiAgICByZWFkb25seSBpY2F2MlN0b3JhZ2VDb25maWd1cmF0aW9uU3NtUGFyYW1ldGVyUGF0aFByZWZpeD86IHN0cmluZ1xuICAgIHJlYWRvbmx5IGljYXYyUHJvamVjdFRvU3RvcmFnZUNvbmZpZ3VyYXRpb25zU3NtUGFyYW1ldGVyUGF0aFByZWZpeD86IHN0cmluZ1xuICAgIHJlYWRvbmx5IGljYXYyU3RvcmFnZUNyZWRlbnRpYWxzU3NtUGFyYW1ldGVyUGF0aFByZWZpeD86IHN0cmluZ1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUHl0aG9uVXZGdW5jdGlvblByb3BzIGV4dGVuZHMgUHl0aG9uRnVuY3Rpb25Qcm9wcyB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdG8gaW5jbHVkZSB0aGUgb3JjYWJ1cyBhcGkgdG9vbHMgbGF5ZXIgaW4gdGhlIGxhbWJkYSBmdW5jdGlvbiBidWlsZFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGluY2x1ZGVPcmNhYnVzQXBpVG9vbHNMYXllcj86IGJvb2xlYW5cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUgdGhlIG1hcnQgbGF5ZXIgaW4gdGhlIGxhbWJkYSBmdW5jdGlvbiBidWlsZFxuICAgICAqIE5vdGUgdGhhdCB0aGUgbWFydCBsYXllciBpcyBhIGxpdHRsZSBoZWF2aWVyIHRoYW4gdGhlIG9yY2FidXMgYXBpIHRvb2xzIGxheWVyXG4gICAgICogU2luY2Ugd2UgcmVxdWlyZSBwYW5kYXMgdG8gYmUgaW5zdGFsbGVkXG4gICAgICovXG4gICAgcmVhZG9ubHkgaW5jbHVkZU1hcnRMYXllcj86IGJvb2xlYW5cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUgdGhlIGljYXYyIGxheWVyIGluIHRoZSBsYW1iZGEgZnVuY3Rpb24gYnVpbGRcbiAgICAgKi9cbiAgICByZWFkb25seSBpbmNsdWRlSWNhdjJMYXllcj86IGJvb2xlYW5cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUgdGhlIGZhc3RhcGkgbGF5ZXIgaW4gdGhlIGxhbWJkYSBmdW5jdGlvbiBidWlsZFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGluY2x1ZGVGYXN0QXBpTGF5ZXI/OiBib29sZWFuXG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlIHRoZSBvcmNhYnVzVG9rZW5SZXNvdXJjZXMsIG9wdGlvbmFsLCBvdGhlcndpc2UgaXQgd2lsbCBkZWZhdWx0IHRvXG4gICAgICogQERFRkFVTFRfT1JDQUJVU19UT0tFTl9TRUNSRVRfSUQgYW5kIEBERUZBVUxUX0hPU1ROQU1FX1NTTV9QQVJBTUVURVJcbiAgICAgKiBmb3IgdGhlIHNlY3JldCBhbmQgU1NNIHBhcmFtZXRlciByZXNwZWN0aXZlbHlcbiAgICAgKi9cbiAgICByZWFkb25seSBvcmNhYnVzVG9rZW5SZXNvdXJjZXM/OiBPcmNhYnVzUmVzb3VyY2VzUHJvcHNcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGhlIG1hcnRFbnZpcm9ubWVudFZhcmlhYmxlcywgb3B0aW9uYWwsIG90aGVyd2lzZSBpdCB3aWxsIGRlZmF1bHQgdG9cbiAgICAgKiBATUFSVF9FTlZfVkFSUy5BVEhFTkFfV09SS0dST1VQX05BTUUsIEBNQVJUX0VOVl9WQVJTLkFUSEVOQV9EQVRBU09VUkNFX05BTUVcbiAgICAgKiBhbmQgQE1BUlRfRU5WX1ZBUlMuQVRIRU5BX0RBVEFCQVNFX05BTUUgZm9yIHRoZSBhdGhlbmEgd29ya2dyb3VwLCBkYXRhc291cmNlIGFuZCBkYXRhYmFzZSByZXNwZWN0aXZlbHlcbiAgICAgKi9cbiAgICByZWFkb25seSBtYXJ0RW52aXJvbm1lbnRWYXJpYWJsZXM/OiBNYXJ0RW52aXJvbm1lbnRWYXJpYWJsZXNcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGUgdGhlIGljYXYyUmVzb3VyY2VzLCBvcHRpb25hbCwgb3RoZXJ3aXNlIGl0IHdpbGwgZGVmYXVsdCB0b1xuICAgICAqIEBERUZBVUxUX0lDQVYyX0FDQ0VTU19UT0tFTl9TRUNSRVRfSUQgZm9yIHRoZSBzZWNyZXRcbiAgICAgKi9cbiAgICByZWFkb25seSBpY2F2MlJlc291cmNlcz86IEljYXYyUmVzb3VyY2VzUHJvcHNcbn1cblxuXG5leHBvcnQgY2xhc3MgUHl0aG9uVXZGdW5jdGlvbiBleHRlbmRzIFB5dGhvbkZ1bmN0aW9uIHtcbiAgICAvLyBDbGFzcyBjb25zdHJ1Y3RzLCB0byBiZSB1c2VkIGZvciBjYWNoaW5nIHRoZSBsYXllcnNcbiAgICAvLyBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGxhbWJkYXMgdGhyb3VnaG91dCB0aGUgc3RhY2tcbiAgICAvLyBUaGV5IHdpbGwgYWxsIHVzZSB0aGUgc2FtZSBsYXllclxuICAgIHByaXZhdGUgc3RhdGljIG9yY2FidXNBcGlUb29sc0xheWVyOiBNYXA8Q29uc3RydWN0LCBsYW1iZGEuSUxheWVyVmVyc2lvbj4gPSBuZXcgTWFwKCk7XG4gICAgcHJpdmF0ZSBzdGF0aWMgbWFydExheWVyOiBNYXA8Q29uc3RydWN0LCBsYW1iZGEuSUxheWVyVmVyc2lvbj4gPSBuZXcgTWFwKCk7XG4gICAgcHJpdmF0ZSBzdGF0aWMgaWNhdjJMYXllcjogTWFwPENvbnN0cnVjdCwgbGFtYmRhLklMYXllclZlcnNpb24+ID0gbmV3IE1hcCgpO1xuICAgIHByaXZhdGUgc3RhdGljIGZhc3RBcGlMYXllcjogTWFwPENvbnN0cnVjdCwgbGFtYmRhLklMYXllclZlcnNpb24+ID0gbmV3IE1hcCgpO1xuXG4gICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB5dGhvblV2RnVuY3Rpb25Qcm9wcykge1xuICAgICAgICBjb25zdCB1dlByb3BzID0ge1xuICAgICAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgICAgICBidW5kbGluZzoge1xuICAgICAgICAgICAgICAgIC4uLnByb3BzLmJ1bmRsaW5nLFxuICAgICAgICAgICAgICAgIGJ1aWxkQXJnczoge1xuICAgICAgICAgICAgICAgICAgICAuLi5wcm9wcy5idW5kbGluZz8uYnVpbGRBcmdzLFxuICAgICAgICAgICAgICAgICAgICAvLyBBZGQgVEFSR0VUUExBVEZPUk0gdG8gYnVpbGQgYXJncyBpZiBpdCdzIG5vdCBhbHJlYWR5IHNldFxuICAgICAgICAgICAgICAgICAgICBUQVJHRVRQTEFURk9STTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmJ1bmRsaW5nPy5idWlsZEFyZ3M/LlRBUkdFVFBMQVRGT1JNID8/IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LmRvY2tlclBsYXRmb3JtLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaW1hZ2U6IGdldFB5dGhvblV2RG9ja2VySW1hZ2UoKSxcbiAgICAgICAgICAgICAgICBjb21tYW5kSG9va3M6IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICBiZWZvcmVCdW5kbGluZyhpbnB1dERpcjogc3RyaW5nLCBvdXRwdXREaXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5idW5kbGluZz8uY29tbWFuZEhvb2tzPy5iZWZvcmVCdW5kbGluZyBhcyB1bmtub3duIGFzIHN0cmluZ1tdID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIGFmdGVyQnVuZGxpbmcoaW5wdXREaXI6IHN0cmluZywgb3V0cHV0RGlyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHByb3BzLmJ1bmRsaW5nPy5jb21tYW5kSG9va3M/LmFmdGVyQnVuZGxpbmcgYXMgdW5rbm93biBhcyBzdHJpbmdbXSA/PyBbXSkuY29uY2F0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSB0ZXN0cyBkaXJlY3RvcnkgZnJvbSBwYW5kYXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgcm0gLXJmICR7b3V0cHV0RGlyfS9wYW5kYXMvdGVzdHNgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgKnB5YyBmaWxlcyBhbmQgX19weWNhY2hlX18gZGlyZWN0b3JpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZmluZCAke291dHB1dERpcn0gLXR5cGUgZiAtbmFtZSAnKi5weWMnIC1kZWxldGVgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgX19weWNhY2hlX18gZGlyZWN0b3JpZXMgY29udGVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZmluZCAke291dHB1dERpcn0gLXR5cGUgZCAtbmFtZSAnX19weWNhY2hlX18nIC1leGVjIHJtIC1yZiB7fS8qIFxcXFw7YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWxldGUgdGhlIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIHRoZW1zZWx2ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZmluZCAke291dHB1dERpcn0gLXR5cGUgZCAtbmFtZSAnX19weWNhY2hlX18nIC1kZWxldGVgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFyYW1zQW5kU2VjcmV0czpcbiAgICAgICAgICAgICAgICBwcm9wcy5wYXJhbXNBbmRTZWNyZXRzID8/XG4gICAgICAgICAgICAgICAgUGFyYW1zQW5kU2VjcmV0c0xheWVyVmVyc2lvbi5mcm9tVmVyc2lvbihQYXJhbXNBbmRTZWNyZXRzVmVyc2lvbnMuVjFfMF8xMDMsIHtcbiAgICAgICAgICAgICAgICAgICAgY2FjaGVFbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjYWNoZVNpemU6IDMwMCxcbiAgICAgICAgICAgICAgICAgICAgbG9nTGV2ZWw6IFBhcmFtc0FuZFNlY3JldHNMb2dMZXZlbC5ERUJVRyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkLCB1dlByb3BzKTtcblxuICAgICAgICBpZiAocHJvcHMuaW5jbHVkZU9yY2FidXNBcGlUb29sc0xheWVyKSB7XG4gICAgICAgICAgICAvKiBTZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIE9yY2FidXMgcmVzb3VyY2VzICovXG4gICAgICAgICAgICB0aGlzLnNldE9yY2FidXNSZXNvdXJjZXMocHJvcHMub3JjYWJ1c1Rva2VuUmVzb3VyY2VzID8/IHt9KVxuXG4gICAgICAgICAgICAvKiBCdWlsZCB0aGUgb3JjYWJ1cyBBcGkgdG9vbHMgbGF5ZXIgKi9cbiAgICAgICAgICAgIHRoaXMuYnVpbGRPcmNhYnVzQXBpVG9vbHNMYXllcihzY29wZSlcbiAgICAgICAgICAgIHRoaXMuYWRkTGF5ZXJzKDxQeXRob25MYXllclZlcnNpb24+UHl0aG9uVXZGdW5jdGlvbi5vcmNhYnVzQXBpVG9vbHNMYXllci5nZXQoc2NvcGUpKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BzLmluY2x1ZGVNYXJ0TGF5ZXIpIHtcbiAgICAgICAgICAgIC8qIFNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgbWFydCByZXNvdXJjZXMgKi9cbiAgICAgICAgICAgIHRoaXMuc2V0QXRoZW5hUmVzb3VyY2VzKHByb3BzLm1hcnRFbnZpcm9ubWVudFZhcmlhYmxlcyA/PyB7fSlcblxuICAgICAgICAgICAgLyogQnVpbGQgdGhlIG1hcnQgbGF5ZXIgKi9cbiAgICAgICAgICAgIHRoaXMuYnVpbGRNYXJ0VG9vbHNMYXllcihzY29wZSlcbiAgICAgICAgICAgIHRoaXMuYWRkTGF5ZXJzKDxQeXRob25MYXllclZlcnNpb24+UHl0aG9uVXZGdW5jdGlvbi5tYXJ0TGF5ZXIuZ2V0KHNjb3BlKSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcm9wcy5pbmNsdWRlSWNhdjJMYXllcikge1xuICAgICAgICAgICAgLyogU2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSBpY2F2MiByZXNvdXJjZXMgKi9cbiAgICAgICAgICAgIHRoaXMuc2V0SWNhdjJSZXNvdXJjZXMocHJvcHMuaWNhdjJSZXNvdXJjZXMgPz8ge30pXG5cbiAgICAgICAgICAgIC8qIEJ1aWxkIHRoZSBpY2F2MiBsYXllciAqL1xuICAgICAgICAgICAgdGhpcy5idWlsZEljYXYyTGF5ZXIoc2NvcGUpXG4gICAgICAgICAgICB0aGlzLmFkZExheWVycyg8UHl0aG9uTGF5ZXJWZXJzaW9uPlB5dGhvblV2RnVuY3Rpb24uaWNhdjJMYXllci5nZXQoc2NvcGUpKVxuICAgICAgICAgICAgLy8gQWRkIG5hZyBzdXBwcmVzc2lvblxuICAgICAgICAgICAgLy8gU2luY2UgdGhlIGxhbWJkYSB3aWxsIG5lZWQgdG8gYWNjZXNzIHRoZSBTU00gcGFyYW1ldGVyc1xuICAgICAgICAgICAgTmFnU3VwcHJlc3Npb25zLmFkZFJlc291cmNlU3VwcHJlc3Npb25zKFxuICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNScsXG4gICAgICAgICAgICAgICAgICByZWFzb246ICdUaGUgbGFtYmRhIGlhbSByb2xlIG5lZWRzIHRvIGFjY2VzcyB0aGUgc3NtIHBhcmFtZXRlcnMuJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BzLmluY2x1ZGVGYXN0QXBpTGF5ZXIpIHtcbiAgICAgICAgICAgIC8qIEJ1aWxkIHRoZSBmYXN0YXBpIGxheWVyICovXG4gICAgICAgICAgICB0aGlzLmJ1aWxkRmFzdEFwaUxheWVyKHNjb3BlKVxuICAgICAgICAgICAgdGhpcy5hZGRMYXllcnMoPFB5dGhvbkxheWVyVmVyc2lvbj5QeXRob25VdkZ1bmN0aW9uLmZhc3RBcGlMYXllci5nZXQoc2NvcGUpKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZE9yY2FidXNBcGlUb29sc0xheWVyKHNjb3BlOiBDb25zdHJ1Y3QpIHtcbiAgICAgICAgLy8gT25seSBidWlsZCBvcmNhYnVzIGFwaSBsYXllciBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICAgIGlmICghUHl0aG9uVXZGdW5jdGlvbi5vcmNhYnVzQXBpVG9vbHNMYXllci5oYXMoc2NvcGUpKSB7XG4gICAgICAgICAgICBjb25zdCBsYXllciA9IG5ldyBQeXRob25MYXllclZlcnNpb24oc2NvcGUsICdvcmNhYnVzQXBpVG9vbHNMYXllcicsIHtcbiAgICAgICAgICAgICAgICBlbnRyeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ2xheWVycy9vcmNhYnVzX2FwaV90b29scycpLFxuICAgICAgICAgICAgICAgIGNvbXBhdGlibGVSdW50aW1lczogW2xhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzE0XSxcbiAgICAgICAgICAgICAgICBjb21wYXRpYmxlQXJjaGl0ZWN0dXJlczogW2xhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0XSxcbiAgICAgICAgICAgICAgICBsaWNlbnNlOiAnR1BMMycsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdvcmNhYnVzQXBpVG9vbHNMYXllcicsXG4gICAgICAgICAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IGdldFB5dGhvblV2RG9ja2VySW1hZ2UoKSxcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZEhvb2tzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVCdW5kbGluZyhpbnB1dERpcjogc3RyaW5nLCBvdXRwdXREaXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJCdW5kbGluZyhpbnB1dERpcjogc3RyaW5nLCBvdXRwdXREaXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgcGlwIGluc3RhbGwgJHtpbnB1dERpcn0gLS10YXJnZXQgJHtvdXRwdXREaXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSB0ZXN0cyBkaXJlY3RvcnkgZnJvbSBwYW5kYXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHJtIC1yZiAke291dHB1dERpcn0vcGFuZGFzL3Rlc3RzYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSAqcHljIGZpbGVzIGFuZCBfX3B5Y2FjaGVfXyBkaXJlY3Rvcmllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZmluZCAke291dHB1dERpcn0gLXR5cGUgZiAtbmFtZSAnKi5weWMnIC1kZWxldGVgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWxldGUgdGhlIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIGNvbnRlbnRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBmaW5kICR7b3V0cHV0RGlyfSAtdHlwZSBkIC1uYW1lICdfX3B5Y2FjaGVfXycgLWV4ZWMgcm0gLXJmIHt9LyogXFxcXDtgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWxldGUgdGhlIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIHRoZW1zZWx2ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGZpbmQgJHtvdXRwdXREaXJ9IC10eXBlIGQgLW5hbWUgJ19fcHljYWNoZV9fJyAtZGVsZXRlYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIFB5dGhvblV2RnVuY3Rpb24ub3JjYWJ1c0FwaVRvb2xzTGF5ZXIuc2V0KHNjb3BlLCBsYXllcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkTWFydFRvb2xzTGF5ZXIoc2NvcGU6IENvbnN0cnVjdCkge1xuICAgICAgICAvLyBPbmx5IGJ1aWxkIHRoZSBsYXllciBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICAgIGlmICghUHl0aG9uVXZGdW5jdGlvbi5tYXJ0TGF5ZXIuaGFzKHNjb3BlKSkge1xuICAgICAgICAgICAgY29uc3QgbGF5ZXIgPSBuZXcgUHl0aG9uTGF5ZXJWZXJzaW9uKHNjb3BlLCAnbWFydFRvb2xzTGF5ZXInLCB7XG4gICAgICAgICAgICAgICAgZW50cnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdsYXllcnMvbWFydF90b29scycpLFxuICAgICAgICAgICAgICAgIGNvbXBhdGlibGVSdW50aW1lczogW2xhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzE0XSxcbiAgICAgICAgICAgICAgICBjb21wYXRpYmxlQXJjaGl0ZWN0dXJlczogW2xhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0XSxcbiAgICAgICAgICAgICAgICBsaWNlbnNlOiAnR1BMMycsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdtYXJ0VG9vbHNMYXllcicsXG4gICAgICAgICAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IGdldFB5dGhvblV2RG9ja2VySW1hZ2UoKSxcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZEhvb2tzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVCdW5kbGluZyhpbnB1dERpcjogc3RyaW5nLCBvdXRwdXREaXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJCdW5kbGluZyhpbnB1dERpcjogc3RyaW5nLCBvdXRwdXREaXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgcGlwIGluc3RhbGwgJHtpbnB1dERpcn0gLS10YXJnZXQgJHtvdXRwdXREaXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSB0ZXN0cyBkaXJlY3RvcnkgZnJvbSBwYW5kYXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHJtIC1yZiAke291dHB1dERpcn0vcGFuZGFzL3Rlc3RzYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSAqcHljIGZpbGVzIGFuZCBfX3B5Y2FjaGVfXyBkaXJlY3Rvcmllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZmluZCAke291dHB1dERpcn0gLXR5cGUgZiAtbmFtZSAnKi5weWMnIC1kZWxldGVgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWxldGUgdGhlIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIGNvbnRlbnRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBmaW5kICR7b3V0cHV0RGlyfSAtdHlwZSBkIC1uYW1lICdfX3B5Y2FjaGVfXycgLWV4ZWMgcm0gLXJmIHt9LyogXFxcXDtgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWxldGUgdGhlIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIHRoZW1zZWx2ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGZpbmQgJHtvdXRwdXREaXJ9IC10eXBlIGQgLW5hbWUgJ19fcHljYWNoZV9fJyAtZGVsZXRlYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBQeXRob25VdkZ1bmN0aW9uLm1hcnRMYXllci5zZXQoc2NvcGUsIGxheWVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRJY2F2MkxheWVyKHNjb3BlOiBDb25zdHJ1Y3QpIHtcbiAgICAgICAgLy8gT25seSBidWlsZCB0aGUgbGF5ZXIgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgICAgICBpZiAoIVB5dGhvblV2RnVuY3Rpb24uaWNhdjJMYXllci5oYXMoc2NvcGUpKSB7XG4gICAgICAgICAgICBjb25zdCBsYXllciA9IG5ldyBQeXRob25MYXllclZlcnNpb24oc2NvcGUsICdpY2F2MlRvb2xzTGF5ZXInLCB7XG4gICAgICAgICAgICAgICAgZW50cnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdsYXllcnMvaWNhdjJfdG9vbHMnKSxcbiAgICAgICAgICAgICAgICBjb21wYXRpYmxlUnVudGltZXM6IFtsYW1iZGEuUnVudGltZS5QWVRIT05fM18xNF0sXG4gICAgICAgICAgICAgICAgY29tcGF0aWJsZUFyY2hpdGVjdHVyZXM6IFtsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NF0sXG4gICAgICAgICAgICAgICAgbGljZW5zZTogJ0dQTDMnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnaWNhdjJUb29sc0xheWVyJyxcbiAgICAgICAgICAgICAgICBidW5kbGluZzoge1xuICAgICAgICAgICAgICAgICAgICBpbWFnZTogZ2V0UHl0aG9uVXZEb2NrZXJJbWFnZSgpLFxuICAgICAgICAgICAgICAgICAgICBjb21tYW5kSG9va3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZUJ1bmRsaW5nKGlucHV0RGlyOiBzdHJpbmcsIG91dHB1dERpcjogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhZnRlckJ1bmRsaW5nKGlucHV0RGlyOiBzdHJpbmcsIG91dHB1dERpcjogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBwaXAgaW5zdGFsbCAke2lucHV0RGlyfSAtLXRhcmdldCAke291dHB1dERpcn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWxldGUgdGhlIHRlc3RzIGRpcmVjdG9yeSBmcm9tIHBhbmRhc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgcm0gLXJmICR7b3V0cHV0RGlyfS9wYW5kYXMvdGVzdHNgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWxldGUgdGhlICpweWMgZmlsZXMgYW5kIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBmaW5kICR7b3V0cHV0RGlyfSAtdHlwZSBmIC1uYW1lICcqLnB5YycgLWRlbGV0ZWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgX19weWNhY2hlX18gZGlyZWN0b3JpZXMgY29udGVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGZpbmQgJHtvdXRwdXREaXJ9IC10eXBlIGQgLW5hbWUgJ19fcHljYWNoZV9fJyAtZXhlYyBybSAtcmYge30vKiBcXFxcO2AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgX19weWNhY2hlX18gZGlyZWN0b3JpZXMgdGhlbXNlbHZlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZmluZCAke291dHB1dERpcn0gLXR5cGUgZCAtbmFtZSAnX19weWNhY2hlX18nIC1kZWxldGVgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVbmluc3RhbGwgYm90bzMgJiBib3RvY29yZSB0byBhdm9pZCBibG9hdGluZyB0aGUgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGlwIGlzIGFsaWFzZWQgdG8gJ3V2IHBpcCcgc28gbm8gbmVlZCB0byBpbmNsdWRlIC0teWVzIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgcGlwIHVuaW5zdGFsbCBib3RvMyBib3RvY29yZWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBybSAtcmYgJHtvdXRwdXREaXJ9L2JvdG8zICR7b3V0cHV0RGlyfS9ib3RvY29yZWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgUHl0aG9uVXZGdW5jdGlvbi5pY2F2MkxheWVyLnNldChzY29wZSwgbGF5ZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZEZhc3RBcGlMYXllcihzY29wZTogQ29uc3RydWN0KSB7XG4gICAgICAgIC8vIE9ubHkgYnVpbGQgdGhlIGxheWVyIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICAgICAgaWYgKCFQeXRob25VdkZ1bmN0aW9uLmZhc3RBcGlMYXllci5oYXMoc2NvcGUpKSB7XG4gICAgICAgICAgICBjb25zdCBsYXllciA9IG5ldyBQeXRob25MYXllclZlcnNpb24oc2NvcGUsICdmYXN0QXBpTGF5ZXInLCB7XG4gICAgICAgICAgICAgICAgZW50cnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdsYXllcnMvZmFzdGFwaV90b29scycpLFxuICAgICAgICAgICAgICAgIGNvbXBhdGlibGVSdW50aW1lczogW2xhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzE0XSxcbiAgICAgICAgICAgICAgICBjb21wYXRpYmxlQXJjaGl0ZWN0dXJlczogW2xhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0XSxcbiAgICAgICAgICAgICAgICBsaWNlbnNlOiAnR1BMMycsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdmYXN0QXBpTGF5ZXInLFxuICAgICAgICAgICAgICAgIGJ1bmRsaW5nOiB7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiBnZXRQeXRob25VdkRvY2tlckltYWdlKCksXG4gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRIb29rczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlQnVuZGxpbmcoaW5wdXREaXI6IHN0cmluZywgb3V0cHV0RGlyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyQnVuZGxpbmcoaW5wdXREaXI6IHN0cmluZywgb3V0cHV0RGlyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHBpcCBpbnN0YWxsICR7aW5wdXREaXJ9IC0tdGFyZ2V0ICR7b3V0cHV0RGlyfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgdGVzdHMgZGlyZWN0b3J5IGZyb20gcGFuZGFzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBybSAtcmYgJHtvdXRwdXREaXJ9L3BhbmRhcy90ZXN0c2AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgKnB5YyBmaWxlcyBhbmQgX19weWNhY2hlX18gZGlyZWN0b3JpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGZpbmQgJHtvdXRwdXREaXJ9IC10eXBlIGYgLW5hbWUgJyoucHljJyAtZGVsZXRlYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSBfX3B5Y2FjaGVfXyBkaXJlY3RvcmllcyBjb250ZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZmluZCAke291dHB1dERpcn0gLXR5cGUgZCAtbmFtZSAnX19weWNhY2hlX18nIC1leGVjIHJtIC1yZiB7fS8qIFxcXFw7YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSBfX3B5Y2FjaGVfXyBkaXJlY3RvcmllcyB0aGVtc2VsdmVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBmaW5kICR7b3V0cHV0RGlyfSAtdHlwZSBkIC1uYW1lICdfX3B5Y2FjaGVfXycgLWRlbGV0ZWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgUHl0aG9uVXZGdW5jdGlvbi5mYXN0QXBpTGF5ZXIuc2V0KHNjb3BlLCBsYXllcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE9yY2FidXNSZXNvdXJjZXMoXG4gICAgICAgIHByb3BzOiBPcmNhYnVzUmVzb3VyY2VzUHJvcHNcbiAgICApIHtcbiAgICAgICAgLy8gU2V0IHNlY3JldCBvYmplY3RcbiAgICAgICAgY29uc3Qgb3JjYWJ1c1Rva2VuU2VjcmV0SWQgPSBzZWNyZXRzTWFuYWdlci5TZWNyZXQuZnJvbVNlY3JldE5hbWVWMihcbiAgICAgICAgICAgIHRoaXMsICdvcmNhYnVzVG9rZW5TZWNyZXRJZCcsXG4gICAgICAgICAgICBwcm9wcy5vcmNhYnVzVG9rZW5TZWNyZXRJZCA/PyBERUZBVUxUX09SQ0FCVVNfVE9LRU5fU0VDUkVUX0lEXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGhvc3RuYW1lU3NtUGFyYW1ldGVyTmFtZSA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICAgICAgICB0aGlzLCAnaG9zdG5hbWVTc21QYXJhbWV0ZXJOYW1lJyxcbiAgICAgICAgICAgIHByb3BzLmhvc3RuYW1lU3NtUGFyYW1ldGVyTmFtZSA/PyBERUZBVUxUX0hPU1ROQU1FX1NTTV9QQVJBTUVURVIsXG4gICAgICAgIClcblxuICAgICAgICAvLyBBZGQgcGVybWlzc2lvbnMgZm9yIHRoZSBzZWNyZXQgYW5kIFNTTSBwYXJhbWV0ZXJcbiAgICAgICAgLy8gVG8gdGhlIGN1cnJlbnQgdmVyc2lvblxuICAgICAgICBvcmNhYnVzVG9rZW5TZWNyZXRJZC5ncmFudFJlYWQodGhpcy5jdXJyZW50VmVyc2lvbik7XG4gICAgICAgIGhvc3RuYW1lU3NtUGFyYW1ldGVyTmFtZS5ncmFudFJlYWQodGhpcy5jdXJyZW50VmVyc2lvbilcblxuICAgICAgICAvLyBBZGQgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAgICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoXG4gICAgICAgICAgICAnT1JDQUJVU19UT0tFTl9TRUNSRVRfSUQnLCBvcmNhYnVzVG9rZW5TZWNyZXRJZC5zZWNyZXROYW1lLFxuICAgICAgICApXG4gICAgICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoXG4gICAgICAgICAgICAnSE9TVE5BTUVfU1NNX1BBUkFNRVRFUl9OQU1FJywgaG9zdG5hbWVTc21QYXJhbWV0ZXJOYW1lLnBhcmFtZXRlck5hbWUsXG4gICAgICAgIClcbiAgICB9XG5cblxuICAgIHByaXZhdGUgc2V0QXRoZW5hUmVzb3VyY2VzKFxuICAgICAgICBwcm9wczogTWFydEVudmlyb25tZW50VmFyaWFibGVzXG4gICAgKSB7XG4gICAgICAgIC8vIFJlc29sdmUgdGhlIHN0YWdlIG5hbWUgYnkgcGVyZm9ybWluZyBhIHJldmVyc2UgbG9va3VwIHVzaW5nIGNkay5Bd3MuQUNDT1VOVF9JRCBvbiBBQ0NPVU5UX0lEX0FMSUFTXG4gICAgICAgIGNvbnN0IHN0YWdlTmFtZSA9IHJlc29sdmVTdGFnZU5hbWUodGhpcylcblxuICAgICAgICBjb25zdCBhdGhlbmFTM0J1Y2tldCA9IHMzLkJ1Y2tldC5mcm9tQnVja2V0TmFtZShcbiAgICAgICAgICAgIHRoaXMsICdhdGhlbmFTM0J1Y2tldCcsXG4gICAgICAgICAgICBNQVJUX1MzX0JVQ0tFVFtzdGFnZU5hbWVdXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBhdGhlbmFGdW5jdGlvbk5hbWUgPSBsYW1iZGEuRnVuY3Rpb24uZnJvbUZ1bmN0aW9uTmFtZShcbiAgICAgICAgICAgIHRoaXMsICdsYW1iZGFGdW5jdGlvbk5hbWUnLCBNQVJUX0xBTUJEQV9GVU5DVElPTl9OQU1FXG4gICAgICAgIClcblxuICAgICAgICAvLyBBZGQgZW52IHZhcnNcbiAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIGt2IHBhaXJzIG9mIE1BUlRfRU5WX1ZBUlNcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoTUFSVF9FTlZfVkFSUykpIHtcbiAgICAgICAgICAgIC8vIEFmdGVyXG4gICAgICAgICAgICBpZiAocHJvcHNba2V5IGFzIGtleW9mIE1hcnRFbnZpcm9ubWVudFZhcmlhYmxlc10gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoa2V5LCBwcm9wc1trZXkgYXMga2V5b2YgTWFydEVudmlyb25tZW50VmFyaWFibGVzXSEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEVudmlyb25tZW50KGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGVybWlzc2lvbnNcbiAgICAgICAgdGhpcy5jdXJyZW50VmVyc2lvbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICAgICAgICAvLyBGcm9tIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdGhlbmEvbGF0ZXN0L3VnL2V4YW1wbGUtcG9saWNpZXMtd29ya2dyb3VwLmh0bWxcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgIC8vIFdvcmtncm91cCBsaXN0c1xuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkxpc3RFbmdpbmVWZXJzaW9ucycsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6TGlzdFdvcmtHcm91cHMnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkxpc3REYXRhQ2F0YWxvZ3MnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkxpc3REYXRhYmFzZXMnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkdldERhdGFiYXNlJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpMaXN0VGFibGVNZXRhZGF0YScsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6R2V0VGFibGVNZXRhZGF0YScsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6R2V0RGF0YUNhdGFsb2cnLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbYGFybjphd3M6YXRoZW5hOiR7UkVHSU9OfToke0FDQ09VTlRfSURfQUxJQVNbc3RhZ2VOYW1lXX06KmBdLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmN1cnJlbnRWZXJzaW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgICAgICAgIC8vIEZyb20gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F0aGVuYS9sYXRlc3QvdWcvZXhhbXBsZS1wb2xpY2llcy13b3JrZ3JvdXAuaHRtbFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgLy8gV29ya2dyb3VwIGV4ZWN1dGlvbnNcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpCYXRjaEdldFF1ZXJ5RXhlY3V0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpHZXRRdWVyeUV4ZWN1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6TGlzdFF1ZXJ5RXhlY3V0aW9ucycsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6U3RhcnRRdWVyeUV4ZWN1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6U3RvcFF1ZXJ5RXhlY3V0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpHZXRRdWVyeVJlc3VsdHMnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkdldFF1ZXJ5UmVzdWx0c1N0cmVhbScsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6Q3JlYXRlTmFtZWRRdWVyeScsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6R2V0TmFtZWRRdWVyeScsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6QmF0Y2hHZXROYW1lZFF1ZXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpMaXN0TmFtZWRRdWVyaWVzJyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpEZWxldGVOYW1lZFF1ZXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpDcmVhdGVQcmVwYXJlZFN0YXRlbWVudCcsXG4gICAgICAgICAgICAgICAgICAgICdhdGhlbmE6R2V0UHJlcGFyZWRTdGF0ZW1lbnQnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOkxpc3RQcmVwYXJlZFN0YXRlbWVudHMnLFxuICAgICAgICAgICAgICAgICAgICAnYXRoZW5hOlVwZGF0ZVByZXBhcmVkU3RhdGVtZW50JyxcbiAgICAgICAgICAgICAgICAgICAgJ2F0aGVuYTpEZWxldGVQcmVwYXJlZFN0YXRlbWVudCcsXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgYGFybjphd3M6YXRoZW5hOiR7UkVHSU9OfToke0FDQ09VTlRfSURfQUxJQVNbc3RhZ2VOYW1lXX06d29ya2dyb3VwLyR7TUFSVF9FTlZfVkFSUy5hdGhlbmFXb3JrZ3JvdXBOYW1lfWAsXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQWRkIHJlYWQgYWNjZXNzIHRvIHRoZSBTMyBidWNrZXRcbiAgICAgICAgYXRoZW5hUzNCdWNrZXQuZ3JhbnRSZWFkV3JpdGUoXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRWZXJzaW9uLFxuICAgICAgICAgICAgYCR7TUFSVF9TM19QUkVGSVh9KmBcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIEFkZCBpbnZva2UgYWNjZXNzIHRvIHRoZSBsYW1iZGEgZnVuY3Rpb25cbiAgICAgICAgYXRoZW5hRnVuY3Rpb25OYW1lLmdyYW50SW52b2tlKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50VmVyc2lvblxuICAgICAgICApXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJY2F2MlJlc291cmNlcyhcbiAgICAgICAgcHJvcHM6IEljYXYyUmVzb3VyY2VzUHJvcHNcbiAgICApIHtcbiAgICAgICAgLy8gUmVzb2x2ZSB0aGUgc3RhZ2UgbmFtZSBieSBwZXJmb3JtaW5nIGEgcmV2ZXJzZSBsb29rdXAgdXNpbmcgY2RrLkF3cy5BQ0NPVU5UX0lEIG9uIEFDQ09VTlRfSURfQUxJQVNcbiAgICAgICAgY29uc3Qgc3RhZ2VOYW1lID0gcmVzb2x2ZVN0YWdlTmFtZSh0aGlzKVxuXG4gICAgICAgIC8vIFNldCBzZWNyZXQgb2JqZWN0XG4gICAgICAgIGNvbnN0IGljYXYyQWNjZXNzVG9rZW5TZWNyZXRJZE9iamVjdCA9IHNlY3JldHNNYW5hZ2VyLlNlY3JldC5mcm9tU2VjcmV0TmFtZVYyKFxuICAgICAgICAgICAgdGhpcywgJ0lDQVYyX0FDQ0VTU19UT0tFTl9TRUNSRVRfSUQnLFxuICAgICAgICAgICAgcHJvcHMuaWNhdjJBY2Nlc3NUb2tlblNlY3JldElkID8/IElDQVYyX0FDQ0VTU19UT0tFTl9TRUNSRVRfSURbc3RhZ2VOYW1lXVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEFkZCBwZXJtaXNzaW9ucyBmb3IgdGhlIHNlY3JldCBhbmQgU1NNIHBhcmFtZXRlclxuICAgICAgICAvLyBUbyB0aGUgY3VycmVudCB2ZXJzaW9uXG4gICAgICAgIGljYXYyQWNjZXNzVG9rZW5TZWNyZXRJZE9iamVjdC5ncmFudFJlYWQodGhpcy5jdXJyZW50VmVyc2lvbik7XG5cbiAgICAgICAgLy8gQWRkIGNvbmZpZ3VyYXRpb24gcGF0aHNcbiAgICAgICAgY29uc3QgaWNhdjJTdG9yYWdlQ29uZmlndXJhdGlvblNzbVBhcmFtZXRlclBhdGhQcmVmaXggPSAoXG4gICAgICAgICAgcHJvcHMuaWNhdjJTdG9yYWdlQ29uZmlndXJhdGlvblNzbVBhcmFtZXRlclBhdGhQcmVmaXggPz8gSUNBVjJfU1RPUkFHRV9DT05GSUdVUkFUSU9OX1NTTV9QQVJBTUVURVJfUEFUSF9QUkVGSVhcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBpY2F2MlByb2plY3RUb1N0b3JhZ2VDb25maWd1cmF0aW9uc1NzbVBhcmFtZXRlclBhdGhQcmVmaXggPSAoXG4gICAgICAgICAgcHJvcHMuaWNhdjJQcm9qZWN0VG9TdG9yYWdlQ29uZmlndXJhdGlvbnNTc21QYXJhbWV0ZXJQYXRoUHJlZml4ID8/IElDQVYyX1BST0pFQ1RfVE9fU1RPUkFHRV9DT05GSUdVUkFUSU9OU19TU01fUEFSQU1FVEVSX1BBVEhfUFJFRklYXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgaWNhdjJTdG9yYWdlQ3JlZGVudGlhbHNTc21QYXJhbWV0ZXJQYXRoUHJlZml4ID0gKFxuICAgICAgICAgIHByb3BzLmljYXYyU3RvcmFnZUNyZWRlbnRpYWxzU3NtUGFyYW1ldGVyUGF0aFByZWZpeCA/PyBJQ0FWMl9TVE9SQUdFX0NSRURFTlRJQUxTX1NTTV9QQVJBTUVURVJfUEFUSF9QUkVGSVhcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIFByb3ZpZGUgYWNjZXNzIHRvIHRoZSBzc20gcGFyYW1ldGVyIHBhdGhzXG4gICAgICAgIHRoaXMuY3VycmVudFZlcnNpb24uYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICAgIC8vIFdlIG1heSBuZWVkIHRvIGdldCB0aGUgcGFyYW1ldGVycyBpbmRpdmlkdWFsbHkgb3IgYnkgcGF0aFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IFsnc3NtOkdldFBhcmFtZXRlcnNCeVBhdGgnLCAnc3NtOkdldFBhcmFtZXRlciddLFxuICAgICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgICAgICBgYXJuOmF3czpzc206JHtSRUdJT059OiR7QUNDT1VOVF9JRF9BTElBU1tzdGFnZU5hbWVdfTpwYXJhbWV0ZXIke2ljYXYyU3RvcmFnZUNvbmZpZ3VyYXRpb25Tc21QYXJhbWV0ZXJQYXRoUHJlZml4LnJlcGxhY2UoL1xcLyQvLCBcIlwiKX0vKmAsXG4gICAgICAgICAgICAgICAgICAgIGBhcm46YXdzOnNzbToke1JFR0lPTn06JHtBQ0NPVU5UX0lEX0FMSUFTW3N0YWdlTmFtZV19OnBhcmFtZXRlciR7aWNhdjJQcm9qZWN0VG9TdG9yYWdlQ29uZmlndXJhdGlvbnNTc21QYXJhbWV0ZXJQYXRoUHJlZml4LnJlcGxhY2UoL1xcLyQvLCBcIlwiKX0vKmAsXG4gICAgICAgICAgICAgICAgICAgIGBhcm46YXdzOnNzbToke1JFR0lPTn06JHtBQ0NPVU5UX0lEX0FMSUFTW3N0YWdlTmFtZV19OnBhcmFtZXRlciR7aWNhdjJTdG9yYWdlQ3JlZGVudGlhbHNTc21QYXJhbWV0ZXJQYXRoUHJlZml4LnJlcGxhY2UoL1xcLyQvLCBcIlwiKX0vKmAsXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQWRkIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgICAgICB0aGlzLmFkZEVudmlyb25tZW50KFxuICAgICAgICAgICAgJ0lDQVYyX0FDQ0VTU19UT0tFTl9TRUNSRVRfSUQnLCBpY2F2MkFjY2Vzc1Rva2VuU2VjcmV0SWRPYmplY3Quc2VjcmV0TmFtZSxcbiAgICAgICAgKVxuICAgICAgICB0aGlzLmFkZEVudmlyb25tZW50KFxuICAgICAgICAgICAgJ0lDQVYyX0JBU0VfVVJMJywgSUNBVjJfQkFTRV9VUkwsXG4gICAgICAgIClcbiAgICB9XG5cbn1cblxuXG5cblxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# This file is automatically @generated by Poetry
|
|
1
|
+
# This file is automatically @generated by Poetry 2.3.1 and should not be changed by hand.
|
|
2
2
|
|
|
3
3
|
[[package]]
|
|
4
4
|
name = "annotated-types"
|
|
@@ -6,6 +6,7 @@ version = "0.7.0"
|
|
|
6
6
|
description = "Reusable constraint types to use with typing.Annotated"
|
|
7
7
|
optional = false
|
|
8
8
|
python-versions = ">=3.8"
|
|
9
|
+
groups = ["main"]
|
|
9
10
|
files = [
|
|
10
11
|
{file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"},
|
|
11
12
|
{file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"},
|
|
@@ -17,6 +18,7 @@ version = "4.9.0"
|
|
|
17
18
|
description = "High level compatibility layer for multiple asynchronous event loop implementations"
|
|
18
19
|
optional = false
|
|
19
20
|
python-versions = ">=3.9"
|
|
21
|
+
groups = ["main"]
|
|
20
22
|
files = [
|
|
21
23
|
{file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c"},
|
|
22
24
|
{file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028"},
|
|
@@ -25,11 +27,10 @@ files = [
|
|
|
25
27
|
[package.dependencies]
|
|
26
28
|
idna = ">=2.8"
|
|
27
29
|
sniffio = ">=1.1"
|
|
28
|
-
typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""}
|
|
29
30
|
|
|
30
31
|
[package.extras]
|
|
31
32
|
doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"]
|
|
32
|
-
test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"]
|
|
33
|
+
test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""]
|
|
33
34
|
trio = ["trio (>=0.26.1)"]
|
|
34
35
|
|
|
35
36
|
[[package]]
|
|
@@ -38,6 +39,7 @@ version = "1.38.21"
|
|
|
38
39
|
description = "The AWS SDK for Python"
|
|
39
40
|
optional = false
|
|
40
41
|
python-versions = ">=3.9"
|
|
42
|
+
groups = ["main"]
|
|
41
43
|
files = [
|
|
42
44
|
{file = "boto3-1.38.21-py3-none-any.whl", hash = "sha256:37e4b6b7f77f4cc476ea82eb76a502a289bb750eee96f7d07ec9bcec6592191a"},
|
|
43
45
|
{file = "boto3-1.38.21.tar.gz", hash = "sha256:417d0328fd3394ffb1c1f400d4277d45b0b86f48d2f088a02306474969344a47"},
|
|
@@ -57,6 +59,7 @@ version = "1.38.21"
|
|
|
57
59
|
description = "Low-level, data-driven core of boto 3."
|
|
58
60
|
optional = false
|
|
59
61
|
python-versions = ">=3.9"
|
|
62
|
+
groups = ["main"]
|
|
60
63
|
files = [
|
|
61
64
|
{file = "botocore-1.38.21-py3-none-any.whl", hash = "sha256:567b4d338114174d0b41857002a4b1e8efb68f1654ed9f3ec6c34ebdef5e9eaf"},
|
|
62
65
|
{file = "botocore-1.38.21.tar.gz", hash = "sha256:08d5e9c00e5cc9e0ae0e60570846011789dc7f1d4ea094b3f3e3f3ae1ff2063a"},
|
|
@@ -76,6 +79,7 @@ version = "2025.4.26"
|
|
|
76
79
|
description = "Python package for providing Mozilla's CA Bundle."
|
|
77
80
|
optional = false
|
|
78
81
|
python-versions = ">=3.6"
|
|
82
|
+
groups = ["main"]
|
|
79
83
|
files = [
|
|
80
84
|
{file = "certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3"},
|
|
81
85
|
{file = "certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6"},
|
|
@@ -87,6 +91,7 @@ version = "3.4.2"
|
|
|
87
91
|
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
|
|
88
92
|
optional = false
|
|
89
93
|
python-versions = ">=3.7"
|
|
94
|
+
groups = ["main"]
|
|
90
95
|
files = [
|
|
91
96
|
{file = "charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941"},
|
|
92
97
|
{file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd"},
|
|
@@ -188,6 +193,7 @@ version = "8.2.1"
|
|
|
188
193
|
description = "Composable command line interface toolkit"
|
|
189
194
|
optional = false
|
|
190
195
|
python-versions = ">=3.10"
|
|
196
|
+
groups = ["main"]
|
|
191
197
|
files = [
|
|
192
198
|
{file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b"},
|
|
193
199
|
{file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202"},
|
|
@@ -202,10 +208,12 @@ version = "0.4.6"
|
|
|
202
208
|
description = "Cross-platform colored terminal text."
|
|
203
209
|
optional = false
|
|
204
210
|
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
|
|
211
|
+
groups = ["main", "dev"]
|
|
205
212
|
files = [
|
|
206
213
|
{file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
|
|
207
214
|
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
|
|
208
215
|
]
|
|
216
|
+
markers = {main = "platform_system == \"Windows\" or sys_platform == \"win32\"", dev = "sys_platform == \"win32\""}
|
|
209
217
|
|
|
210
218
|
[[package]]
|
|
211
219
|
name = "dnspython"
|
|
@@ -213,6 +221,7 @@ version = "2.7.0"
|
|
|
213
221
|
description = "DNS toolkit"
|
|
214
222
|
optional = false
|
|
215
223
|
python-versions = ">=3.9"
|
|
224
|
+
groups = ["main"]
|
|
216
225
|
files = [
|
|
217
226
|
{file = "dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86"},
|
|
218
227
|
{file = "dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1"},
|
|
@@ -233,6 +242,7 @@ version = "0.16.0"
|
|
|
233
242
|
description = "A DynamoDB library on top of Pydantic and boto3."
|
|
234
243
|
optional = false
|
|
235
244
|
python-versions = ">=3.7"
|
|
245
|
+
groups = ["main"]
|
|
236
246
|
files = [
|
|
237
247
|
{file = "dyntastic-0.16.0-py3-none-any.whl", hash = "sha256:24508d58a0e98c65900e4c09477ba7f1728e92f605a11fbe83bb4e44dd189e44"},
|
|
238
248
|
{file = "dyntastic-0.16.0.tar.gz", hash = "sha256:56820083b657384f2956d0f65d48c3171a10d135f57ce7b40e0030a1c1be0cf7"},
|
|
@@ -244,7 +254,7 @@ pydantic = ">=1.7.1,<3"
|
|
|
244
254
|
|
|
245
255
|
[package.extras]
|
|
246
256
|
deploy = ["twine"]
|
|
247
|
-
dev = ["black", "boto3-stubs[dynamodb]", "coverage", "flake8 (<5)", "flake8 (==6.0.0)", "flake8-bugbear", "isort", "moto (==4.2.2)", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytest-sugar", "pytest-xdist"]
|
|
257
|
+
dev = ["black", "boto3-stubs[dynamodb]", "coverage", "flake8 (<5) ; python_version == \"3.7\"", "flake8 (==6.0.0) ; python_version > \"3.7\"", "flake8-bugbear", "isort", "moto (==4.2.2)", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytest-sugar", "pytest-xdist"]
|
|
248
258
|
|
|
249
259
|
[[package]]
|
|
250
260
|
name = "email-validator"
|
|
@@ -252,6 +262,7 @@ version = "2.2.0"
|
|
|
252
262
|
description = "A robust email address syntax and deliverability validation library."
|
|
253
263
|
optional = false
|
|
254
264
|
python-versions = ">=3.8"
|
|
265
|
+
groups = ["main"]
|
|
255
266
|
files = [
|
|
256
267
|
{file = "email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631"},
|
|
257
268
|
{file = "email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7"},
|
|
@@ -267,6 +278,7 @@ version = "0.115.12"
|
|
|
267
278
|
description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
|
|
268
279
|
optional = false
|
|
269
280
|
python-versions = ">=3.8"
|
|
281
|
+
groups = ["main"]
|
|
270
282
|
files = [
|
|
271
283
|
{file = "fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d"},
|
|
272
284
|
{file = "fastapi-0.115.12.tar.gz", hash = "sha256:1e2c2a2646905f9e83d32f04a3f86aff4a286669c6c950ca95b5fd68c2602681"},
|
|
@@ -293,6 +305,7 @@ version = "0.0.7"
|
|
|
293
305
|
description = "Run and manage FastAPI apps from the command line with FastAPI CLI. 🚀"
|
|
294
306
|
optional = false
|
|
295
307
|
python-versions = ">=3.8"
|
|
308
|
+
groups = ["main"]
|
|
296
309
|
files = [
|
|
297
310
|
{file = "fastapi_cli-0.0.7-py3-none-any.whl", hash = "sha256:d549368ff584b2804336c61f192d86ddea080c11255f375959627911944804f4"},
|
|
298
311
|
{file = "fastapi_cli-0.0.7.tar.gz", hash = "sha256:02b3b65956f526412515907a0793c9094abd4bfb5457b389f645b0ea6ba3605e"},
|
|
@@ -312,6 +325,7 @@ version = "0.16.0"
|
|
|
312
325
|
description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
|
|
313
326
|
optional = false
|
|
314
327
|
python-versions = ">=3.8"
|
|
328
|
+
groups = ["main"]
|
|
315
329
|
files = [
|
|
316
330
|
{file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"},
|
|
317
331
|
{file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"},
|
|
@@ -323,6 +337,7 @@ version = "1.0.9"
|
|
|
323
337
|
description = "A minimal low-level HTTP client."
|
|
324
338
|
optional = false
|
|
325
339
|
python-versions = ">=3.8"
|
|
340
|
+
groups = ["main"]
|
|
326
341
|
files = [
|
|
327
342
|
{file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"},
|
|
328
343
|
{file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"},
|
|
@@ -344,6 +359,7 @@ version = "0.6.4"
|
|
|
344
359
|
description = "A collection of framework independent HTTP protocol utils."
|
|
345
360
|
optional = false
|
|
346
361
|
python-versions = ">=3.8.0"
|
|
362
|
+
groups = ["main"]
|
|
347
363
|
files = [
|
|
348
364
|
{file = "httptools-0.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3c73ce323711a6ffb0d247dcd5a550b8babf0f757e86a52558fe5b86d6fefcc0"},
|
|
349
365
|
{file = "httptools-0.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:345c288418f0944a6fe67be8e6afa9262b18c7626c3ef3c28adc5eabc06a68da"},
|
|
@@ -399,6 +415,7 @@ version = "0.28.1"
|
|
|
399
415
|
description = "The next generation HTTP client."
|
|
400
416
|
optional = false
|
|
401
417
|
python-versions = ">=3.8"
|
|
418
|
+
groups = ["main"]
|
|
402
419
|
files = [
|
|
403
420
|
{file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"},
|
|
404
421
|
{file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"},
|
|
@@ -411,7 +428,7 @@ httpcore = "==1.*"
|
|
|
411
428
|
idna = "*"
|
|
412
429
|
|
|
413
430
|
[package.extras]
|
|
414
|
-
brotli = ["brotli", "brotlicffi"]
|
|
431
|
+
brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""]
|
|
415
432
|
cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
|
|
416
433
|
http2 = ["h2 (>=3,<5)"]
|
|
417
434
|
socks = ["socksio (==1.*)"]
|
|
@@ -423,6 +440,7 @@ version = "3.10"
|
|
|
423
440
|
description = "Internationalized Domain Names in Applications (IDNA)"
|
|
424
441
|
optional = false
|
|
425
442
|
python-versions = ">=3.6"
|
|
443
|
+
groups = ["main"]
|
|
426
444
|
files = [
|
|
427
445
|
{file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"},
|
|
428
446
|
{file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"},
|
|
@@ -437,6 +455,7 @@ version = "2.1.0"
|
|
|
437
455
|
description = "brain-dead simple config-ini parsing"
|
|
438
456
|
optional = false
|
|
439
457
|
python-versions = ">=3.8"
|
|
458
|
+
groups = ["dev"]
|
|
440
459
|
files = [
|
|
441
460
|
{file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"},
|
|
442
461
|
{file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"},
|
|
@@ -448,6 +467,7 @@ version = "3.1.6"
|
|
|
448
467
|
description = "A very fast and expressive template engine."
|
|
449
468
|
optional = false
|
|
450
469
|
python-versions = ">=3.7"
|
|
470
|
+
groups = ["main"]
|
|
451
471
|
files = [
|
|
452
472
|
{file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"},
|
|
453
473
|
{file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"},
|
|
@@ -465,6 +485,7 @@ version = "1.0.1"
|
|
|
465
485
|
description = "JSON Matching Expressions"
|
|
466
486
|
optional = false
|
|
467
487
|
python-versions = ">=3.7"
|
|
488
|
+
groups = ["main"]
|
|
468
489
|
files = [
|
|
469
490
|
{file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"},
|
|
470
491
|
{file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"},
|
|
@@ -476,6 +497,7 @@ version = "0.19.0"
|
|
|
476
497
|
description = "AWS Lambda support for ASGI applications"
|
|
477
498
|
optional = false
|
|
478
499
|
python-versions = ">=3.7"
|
|
500
|
+
groups = ["main"]
|
|
479
501
|
files = [
|
|
480
502
|
{file = "mangum-0.19.0-py3-none-any.whl", hash = "sha256:e500b35f495d5e68ac98bc97334896d6101523f2ee2c57ba6a61893b65266e59"},
|
|
481
503
|
{file = "mangum-0.19.0.tar.gz", hash = "sha256:e388e7c491b7b67970f8234e46fd4a7b21ff87785848f418de08148f71cf0bd6"},
|
|
@@ -490,6 +512,7 @@ version = "3.0.0"
|
|
|
490
512
|
description = "Python port of markdown-it. Markdown parsing, done right!"
|
|
491
513
|
optional = false
|
|
492
514
|
python-versions = ">=3.8"
|
|
515
|
+
groups = ["main"]
|
|
493
516
|
files = [
|
|
494
517
|
{file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"},
|
|
495
518
|
{file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"},
|
|
@@ -514,6 +537,7 @@ version = "3.0.2"
|
|
|
514
537
|
description = "Safely add untrusted strings to HTML/XML markup."
|
|
515
538
|
optional = false
|
|
516
539
|
python-versions = ">=3.9"
|
|
540
|
+
groups = ["main"]
|
|
517
541
|
files = [
|
|
518
542
|
{file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"},
|
|
519
543
|
{file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"},
|
|
@@ -584,6 +608,7 @@ version = "0.1.2"
|
|
|
584
608
|
description = "Markdown URL utilities"
|
|
585
609
|
optional = false
|
|
586
610
|
python-versions = ">=3.7"
|
|
611
|
+
groups = ["main"]
|
|
587
612
|
files = [
|
|
588
613
|
{file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"},
|
|
589
614
|
{file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"},
|
|
@@ -595,6 +620,7 @@ version = "1.38.0"
|
|
|
595
620
|
description = "Type annotations for boto3 SecretsManager 1.38.0 service generated with mypy-boto3-builder 8.10.1"
|
|
596
621
|
optional = false
|
|
597
622
|
python-versions = ">=3.8"
|
|
623
|
+
groups = ["dev"]
|
|
598
624
|
files = [
|
|
599
625
|
{file = "mypy_boto3_secretsmanager-1.38.0-py3-none-any.whl", hash = "sha256:48d5057450ee307b132ce2d0976233a2c5331616fabdf423ecbc103f7431dd5e"},
|
|
600
626
|
{file = "mypy_boto3_secretsmanager-1.38.0.tar.gz", hash = "sha256:1666108e70f03e4dc1de449388d7facb77aba231a026bac0c3240fc27fd31a98"},
|
|
@@ -606,6 +632,7 @@ version = "1.38.5"
|
|
|
606
632
|
description = "Type annotations for boto3 SSM 1.38.5 service generated with mypy-boto3-builder 8.10.1"
|
|
607
633
|
optional = false
|
|
608
634
|
python-versions = ">=3.8"
|
|
635
|
+
groups = ["dev"]
|
|
609
636
|
files = [
|
|
610
637
|
{file = "mypy_boto3_ssm-1.38.5-py3-none-any.whl", hash = "sha256:1bb0f932bee9038a53ab02781f959fc553a5d7f5e9d7cba56f998d0eb0a5878f"},
|
|
611
638
|
{file = "mypy_boto3_ssm-1.38.5.tar.gz", hash = "sha256:e95bbad7d2f6b4849bc946eb9bbcc1f134cbdaafb172c365bedecdb3104eee0e"},
|
|
@@ -617,6 +644,7 @@ version = "25.0"
|
|
|
617
644
|
description = "Core utilities for Python packages"
|
|
618
645
|
optional = false
|
|
619
646
|
python-versions = ">=3.8"
|
|
647
|
+
groups = ["dev"]
|
|
620
648
|
files = [
|
|
621
649
|
{file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"},
|
|
622
650
|
{file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"},
|
|
@@ -628,6 +656,7 @@ version = "1.6.0"
|
|
|
628
656
|
description = "plugin and hook calling mechanisms for python"
|
|
629
657
|
optional = false
|
|
630
658
|
python-versions = ">=3.9"
|
|
659
|
+
groups = ["dev"]
|
|
631
660
|
files = [
|
|
632
661
|
{file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"},
|
|
633
662
|
{file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"},
|
|
@@ -643,6 +672,7 @@ version = "2.11.4"
|
|
|
643
672
|
description = "Data validation using Python type hints"
|
|
644
673
|
optional = false
|
|
645
674
|
python-versions = ">=3.9"
|
|
675
|
+
groups = ["main"]
|
|
646
676
|
files = [
|
|
647
677
|
{file = "pydantic-2.11.4-py3-none-any.whl", hash = "sha256:d9615eaa9ac5a063471da949c8fc16376a84afb5024688b3ff885693506764eb"},
|
|
648
678
|
{file = "pydantic-2.11.4.tar.gz", hash = "sha256:32738d19d63a226a52eed76645a98ee07c1f410ee41d93b4afbfa85ed8111c2d"},
|
|
@@ -656,7 +686,7 @@ typing-inspection = ">=0.4.0"
|
|
|
656
686
|
|
|
657
687
|
[package.extras]
|
|
658
688
|
email = ["email-validator (>=2.0.0)"]
|
|
659
|
-
timezone = ["tzdata"]
|
|
689
|
+
timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""]
|
|
660
690
|
|
|
661
691
|
[[package]]
|
|
662
692
|
name = "pydantic-core"
|
|
@@ -664,6 +694,7 @@ version = "2.33.2"
|
|
|
664
694
|
description = "Core functionality for Pydantic validation and serialization"
|
|
665
695
|
optional = false
|
|
666
696
|
python-versions = ">=3.9"
|
|
697
|
+
groups = ["main"]
|
|
667
698
|
files = [
|
|
668
699
|
{file = "pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8"},
|
|
669
700
|
{file = "pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d"},
|
|
@@ -775,6 +806,7 @@ version = "2.19.1"
|
|
|
775
806
|
description = "Pygments is a syntax highlighting package written in Python."
|
|
776
807
|
optional = false
|
|
777
808
|
python-versions = ">=3.8"
|
|
809
|
+
groups = ["main"]
|
|
778
810
|
files = [
|
|
779
811
|
{file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"},
|
|
780
812
|
{file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"},
|
|
@@ -789,6 +821,7 @@ version = "7.4.4"
|
|
|
789
821
|
description = "pytest: simple powerful testing with Python"
|
|
790
822
|
optional = false
|
|
791
823
|
python-versions = ">=3.7"
|
|
824
|
+
groups = ["dev"]
|
|
792
825
|
files = [
|
|
793
826
|
{file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"},
|
|
794
827
|
{file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"},
|
|
@@ -809,6 +842,7 @@ version = "2.9.0.post0"
|
|
|
809
842
|
description = "Extensions to the standard Python datetime module"
|
|
810
843
|
optional = false
|
|
811
844
|
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
|
|
845
|
+
groups = ["main"]
|
|
812
846
|
files = [
|
|
813
847
|
{file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"},
|
|
814
848
|
{file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"},
|
|
@@ -823,6 +857,7 @@ version = "1.1.0"
|
|
|
823
857
|
description = "Read key-value pairs from a .env file and set them as environment variables"
|
|
824
858
|
optional = false
|
|
825
859
|
python-versions = ">=3.9"
|
|
860
|
+
groups = ["main"]
|
|
826
861
|
files = [
|
|
827
862
|
{file = "python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d"},
|
|
828
863
|
{file = "python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5"},
|
|
@@ -837,6 +872,7 @@ version = "0.0.20"
|
|
|
837
872
|
description = "A streaming multipart parser for Python"
|
|
838
873
|
optional = false
|
|
839
874
|
python-versions = ">=3.8"
|
|
875
|
+
groups = ["main"]
|
|
840
876
|
files = [
|
|
841
877
|
{file = "python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104"},
|
|
842
878
|
{file = "python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13"},
|
|
@@ -848,6 +884,7 @@ version = "6.0.2"
|
|
|
848
884
|
description = "YAML parser and emitter for Python"
|
|
849
885
|
optional = false
|
|
850
886
|
python-versions = ">=3.8"
|
|
887
|
+
groups = ["main"]
|
|
851
888
|
files = [
|
|
852
889
|
{file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"},
|
|
853
890
|
{file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"},
|
|
@@ -910,6 +947,7 @@ version = "2.32.3"
|
|
|
910
947
|
description = "Python HTTP for Humans."
|
|
911
948
|
optional = false
|
|
912
949
|
python-versions = ">=3.8"
|
|
950
|
+
groups = ["main"]
|
|
913
951
|
files = [
|
|
914
952
|
{file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"},
|
|
915
953
|
{file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"},
|
|
@@ -931,6 +969,7 @@ version = "14.0.0"
|
|
|
931
969
|
description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
|
|
932
970
|
optional = false
|
|
933
971
|
python-versions = ">=3.8.0"
|
|
972
|
+
groups = ["main"]
|
|
934
973
|
files = [
|
|
935
974
|
{file = "rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0"},
|
|
936
975
|
{file = "rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725"},
|
|
@@ -949,6 +988,7 @@ version = "0.14.6"
|
|
|
949
988
|
description = "Rich toolkit for building command-line applications"
|
|
950
989
|
optional = false
|
|
951
990
|
python-versions = ">=3.8"
|
|
991
|
+
groups = ["main"]
|
|
952
992
|
files = [
|
|
953
993
|
{file = "rich_toolkit-0.14.6-py3-none-any.whl", hash = "sha256:764f3a5f9e4b539ce805596863299e8982599514906dc5e3ccc2d390ef74c301"},
|
|
954
994
|
{file = "rich_toolkit-0.14.6.tar.gz", hash = "sha256:9dbd40e83414b84e828bf899115fff8877ce5951b73175f44db142902f07645d"},
|
|
@@ -965,16 +1005,17 @@ version = "0.12.0"
|
|
|
965
1005
|
description = "An Amazon S3 Transfer Manager"
|
|
966
1006
|
optional = false
|
|
967
1007
|
python-versions = ">=3.9"
|
|
1008
|
+
groups = ["main"]
|
|
968
1009
|
files = [
|
|
969
1010
|
{file = "s3transfer-0.12.0-py3-none-any.whl", hash = "sha256:35b314d7d82865756edab59f7baebc6b477189e6ab4c53050e28c1de4d9cce18"},
|
|
970
1011
|
{file = "s3transfer-0.12.0.tar.gz", hash = "sha256:8ac58bc1989a3fdb7c7f3ee0918a66b160d038a147c7b5db1500930a607e9a1c"},
|
|
971
1012
|
]
|
|
972
1013
|
|
|
973
1014
|
[package.dependencies]
|
|
974
|
-
botocore = ">=1.37.4,<2.
|
|
1015
|
+
botocore = ">=1.37.4,<2.0a0"
|
|
975
1016
|
|
|
976
1017
|
[package.extras]
|
|
977
|
-
crt = ["botocore[crt] (>=1.37.4,<2.
|
|
1018
|
+
crt = ["botocore[crt] (>=1.37.4,<2.0a0)"]
|
|
978
1019
|
|
|
979
1020
|
[[package]]
|
|
980
1021
|
name = "shellingham"
|
|
@@ -982,6 +1023,7 @@ version = "1.5.4"
|
|
|
982
1023
|
description = "Tool to Detect Surrounding Shell"
|
|
983
1024
|
optional = false
|
|
984
1025
|
python-versions = ">=3.7"
|
|
1026
|
+
groups = ["main"]
|
|
985
1027
|
files = [
|
|
986
1028
|
{file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"},
|
|
987
1029
|
{file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"},
|
|
@@ -993,6 +1035,7 @@ version = "1.17.0"
|
|
|
993
1035
|
description = "Python 2 and 3 compatibility utilities"
|
|
994
1036
|
optional = false
|
|
995
1037
|
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
|
|
1038
|
+
groups = ["main"]
|
|
996
1039
|
files = [
|
|
997
1040
|
{file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"},
|
|
998
1041
|
{file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"},
|
|
@@ -1004,6 +1047,7 @@ version = "1.3.1"
|
|
|
1004
1047
|
description = "Sniff out which async library your code is running under"
|
|
1005
1048
|
optional = false
|
|
1006
1049
|
python-versions = ">=3.7"
|
|
1050
|
+
groups = ["main"]
|
|
1007
1051
|
files = [
|
|
1008
1052
|
{file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"},
|
|
1009
1053
|
{file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"},
|
|
@@ -1015,6 +1059,7 @@ version = "0.46.2"
|
|
|
1015
1059
|
description = "The little ASGI library that shines."
|
|
1016
1060
|
optional = false
|
|
1017
1061
|
python-versions = ">=3.9"
|
|
1062
|
+
groups = ["main"]
|
|
1018
1063
|
files = [
|
|
1019
1064
|
{file = "starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35"},
|
|
1020
1065
|
{file = "starlette-0.46.2.tar.gz", hash = "sha256:7f7361f34eed179294600af672f565727419830b54b7b084efe44bb82d2fccd5"},
|
|
@@ -1032,6 +1077,7 @@ version = "0.15.3"
|
|
|
1032
1077
|
description = "Typer, build great CLIs. Easy to code. Based on Python type hints."
|
|
1033
1078
|
optional = false
|
|
1034
1079
|
python-versions = ">=3.7"
|
|
1080
|
+
groups = ["main"]
|
|
1035
1081
|
files = [
|
|
1036
1082
|
{file = "typer-0.15.3-py3-none-any.whl", hash = "sha256:c86a65ad77ca531f03de08d1b9cb67cd09ad02ddddf4b34745b5008f43b239bd"},
|
|
1037
1083
|
{file = "typer-0.15.3.tar.gz", hash = "sha256:818873625d0569653438316567861899f7e9972f2e6e0c16dab608345ced713c"},
|
|
@@ -1049,6 +1095,7 @@ version = "4.13.2"
|
|
|
1049
1095
|
description = "Backported and Experimental Type Hints for Python 3.8+"
|
|
1050
1096
|
optional = false
|
|
1051
1097
|
python-versions = ">=3.8"
|
|
1098
|
+
groups = ["main"]
|
|
1052
1099
|
files = [
|
|
1053
1100
|
{file = "typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c"},
|
|
1054
1101
|
{file = "typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"},
|
|
@@ -1060,6 +1107,7 @@ version = "0.4.1"
|
|
|
1060
1107
|
description = "Runtime typing introspection tools"
|
|
1061
1108
|
optional = false
|
|
1062
1109
|
python-versions = ">=3.9"
|
|
1110
|
+
groups = ["main"]
|
|
1063
1111
|
files = [
|
|
1064
1112
|
{file = "typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51"},
|
|
1065
1113
|
{file = "typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28"},
|
|
@@ -1074,6 +1122,7 @@ version = "1.1.0"
|
|
|
1074
1122
|
description = "Universally Unique Lexicographically Sortable Identifier"
|
|
1075
1123
|
optional = false
|
|
1076
1124
|
python-versions = "*"
|
|
1125
|
+
groups = ["main"]
|
|
1077
1126
|
files = [
|
|
1078
1127
|
{file = "ulid-py-1.1.0.tar.gz", hash = "sha256:dc6884be91558df077c3011b9fb0c87d1097cb8fc6534b11f310161afd5738f0"},
|
|
1079
1128
|
{file = "ulid_py-1.1.0-py2.py3-none-any.whl", hash = "sha256:b56a0f809ef90d6020b21b89a87a48edc7c03aea80e5ed5174172e82d76e3987"},
|
|
@@ -1085,13 +1134,14 @@ version = "2.4.0"
|
|
|
1085
1134
|
description = "HTTP library with thread-safe connection pooling, file post, and more."
|
|
1086
1135
|
optional = false
|
|
1087
1136
|
python-versions = ">=3.9"
|
|
1137
|
+
groups = ["main"]
|
|
1088
1138
|
files = [
|
|
1089
1139
|
{file = "urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813"},
|
|
1090
1140
|
{file = "urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466"},
|
|
1091
1141
|
]
|
|
1092
1142
|
|
|
1093
1143
|
[package.extras]
|
|
1094
|
-
brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
|
|
1144
|
+
brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""]
|
|
1095
1145
|
h2 = ["h2 (>=4,<5)"]
|
|
1096
1146
|
socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
|
|
1097
1147
|
zstd = ["zstandard (>=0.18.0)"]
|
|
@@ -1102,6 +1152,7 @@ version = "0.34.2"
|
|
|
1102
1152
|
description = "The lightning-fast ASGI server."
|
|
1103
1153
|
optional = false
|
|
1104
1154
|
python-versions = ">=3.9"
|
|
1155
|
+
groups = ["main"]
|
|
1105
1156
|
files = [
|
|
1106
1157
|
{file = "uvicorn-0.34.2-py3-none-any.whl", hash = "sha256:deb49af569084536d269fe0a6d67e3754f104cf03aba7c11c40f01aadf33c403"},
|
|
1107
1158
|
{file = "uvicorn-0.34.2.tar.gz", hash = "sha256:0e929828f6186353a80b58ea719861d2629d766293b6d19baf086ba31d4f3328"},
|
|
@@ -1114,12 +1165,12 @@ h11 = ">=0.8"
|
|
|
1114
1165
|
httptools = {version = ">=0.6.3", optional = true, markers = "extra == \"standard\""}
|
|
1115
1166
|
python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""}
|
|
1116
1167
|
pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""}
|
|
1117
|
-
uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "
|
|
1168
|
+
uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\" and extra == \"standard\""}
|
|
1118
1169
|
watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""}
|
|
1119
1170
|
websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""}
|
|
1120
1171
|
|
|
1121
1172
|
[package.extras]
|
|
1122
|
-
standard = ["colorama (>=0.4)", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"]
|
|
1173
|
+
standard = ["colorama (>=0.4) ; sys_platform == \"win32\"", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1) ; sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\"", "watchfiles (>=0.13)", "websockets (>=10.4)"]
|
|
1123
1174
|
|
|
1124
1175
|
[[package]]
|
|
1125
1176
|
name = "uvloop"
|
|
@@ -1127,6 +1178,8 @@ version = "0.21.0"
|
|
|
1127
1178
|
description = "Fast implementation of asyncio event loop on top of libuv"
|
|
1128
1179
|
optional = false
|
|
1129
1180
|
python-versions = ">=3.8.0"
|
|
1181
|
+
groups = ["main"]
|
|
1182
|
+
markers = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\""
|
|
1130
1183
|
files = [
|
|
1131
1184
|
{file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ec7e6b09a6fdded42403182ab6b832b71f4edaf7f37a9a0e371a01db5f0cb45f"},
|
|
1132
1185
|
{file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:196274f2adb9689a289ad7d65700d37df0c0930fd8e4e743fa4834e850d7719d"},
|
|
@@ -1178,6 +1231,7 @@ version = "1.0.5"
|
|
|
1178
1231
|
description = "Simple, modern and high performance file watching and code reload in python."
|
|
1179
1232
|
optional = false
|
|
1180
1233
|
python-versions = ">=3.9"
|
|
1234
|
+
groups = ["main"]
|
|
1181
1235
|
files = [
|
|
1182
1236
|
{file = "watchfiles-1.0.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5c40fe7dd9e5f81e0847b1ea64e1f5dd79dd61afbedb57759df06767ac719b40"},
|
|
1183
1237
|
{file = "watchfiles-1.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8c0db396e6003d99bb2d7232c957b5f0b5634bbd1b24e381a5afcc880f7373fb"},
|
|
@@ -1261,6 +1315,7 @@ version = "15.0.1"
|
|
|
1261
1315
|
description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)"
|
|
1262
1316
|
optional = false
|
|
1263
1317
|
python-versions = ">=3.9"
|
|
1318
|
+
groups = ["main"]
|
|
1264
1319
|
files = [
|
|
1265
1320
|
{file = "websockets-15.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d63efaa0cd96cf0c5fe4d581521d9fa87744540d4bc999ae6e08595a1014b45b"},
|
|
1266
1321
|
{file = "websockets-15.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac60e3b188ec7574cb761b08d50fcedf9d77f1530352db4eef1707fe9dee7205"},
|
|
@@ -1334,6 +1389,6 @@ files = [
|
|
|
1334
1389
|
]
|
|
1335
1390
|
|
|
1336
1391
|
[metadata]
|
|
1337
|
-
lock-version = "2.
|
|
1338
|
-
python-versions = "^3.
|
|
1339
|
-
content-hash = "
|
|
1392
|
+
lock-version = "2.1"
|
|
1393
|
+
python-versions = "^3.14, <3.15"
|
|
1394
|
+
content-hash = "426c38d55ce1eba9b607f234fc2b5f1e2ee9870afcc8ce5ae12ea4ad49fbb8e6"
|
|
@@ -14,7 +14,7 @@ homepage = "https://github.com/orcabus/platform-cdk-constructs"
|
|
|
14
14
|
repository = "https://github.com/orcabus/platform-cdk-constructs"
|
|
15
15
|
|
|
16
16
|
[tool.poetry.dependencies]
|
|
17
|
-
python = "^3.
|
|
17
|
+
python = "^3.14, <3.15"
|
|
18
18
|
fastapi = {extras = ["standard"], version = ">=0.115.6"}
|
|
19
19
|
pydantic = "^2.10.5"
|
|
20
20
|
mangum = "^0.19.0"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# This file is automatically @generated by Poetry 2.1
|
|
1
|
+
# This file is automatically @generated by Poetry 2.3.1 and should not be changed by hand.
|
|
2
2
|
|
|
3
3
|
[[package]]
|
|
4
4
|
name = "annotated-doc"
|
|
@@ -39,7 +39,6 @@ files = [
|
|
|
39
39
|
[package.dependencies]
|
|
40
40
|
idna = ">=2.8"
|
|
41
41
|
sniffio = ">=1.1"
|
|
42
|
-
typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""}
|
|
43
42
|
|
|
44
43
|
[package.extras]
|
|
45
44
|
trio = ["trio (>=0.31.0)"]
|
|
@@ -994,70 +993,10 @@ files = [
|
|
|
994
993
|
{file = "ruamel.yaml-0.18.14.tar.gz", hash = "sha256:7227b76aaec364df15936730efbf7d72b30c0b79b1d578bbb8e3dcb2d81f52b7"},
|
|
995
994
|
]
|
|
996
995
|
|
|
997
|
-
[package.dependencies]
|
|
998
|
-
"ruamel.yaml.clib" = {version = ">=0.2.7", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.14\""}
|
|
999
|
-
|
|
1000
996
|
[package.extras]
|
|
1001
997
|
docs = ["mercurial (>5.7)", "ryd"]
|
|
1002
998
|
jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"]
|
|
1003
999
|
|
|
1004
|
-
[[package]]
|
|
1005
|
-
name = "ruamel-yaml-clib"
|
|
1006
|
-
version = "0.2.12"
|
|
1007
|
-
description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml"
|
|
1008
|
-
optional = false
|
|
1009
|
-
python-versions = ">=3.9"
|
|
1010
|
-
groups = ["main"]
|
|
1011
|
-
markers = "platform_python_implementation == \"CPython\" and python_version < \"3.14\""
|
|
1012
|
-
files = [
|
|
1013
|
-
{file = "ruamel.yaml.clib-0.2.12-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:11f891336688faf5156a36293a9c362bdc7c88f03a8a027c2c1d8e0bcde998e5"},
|
|
1014
|
-
{file = "ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:a606ef75a60ecf3d924613892cc603b154178ee25abb3055db5062da811fd969"},
|
|
1015
|
-
{file = "ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd5415dded15c3822597455bc02bcd66e81ef8b7a48cb71a33628fc9fdde39df"},
|
|
1016
|
-
{file = "ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f66efbc1caa63c088dead1c4170d148eabc9b80d95fb75b6c92ac0aad2437d76"},
|
|
1017
|
-
{file = "ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:22353049ba4181685023b25b5b51a574bce33e7f51c759371a7422dcae5402a6"},
|
|
1018
|
-
{file = "ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:932205970b9f9991b34f55136be327501903f7c66830e9760a8ffb15b07f05cd"},
|
|
1019
|
-
{file = "ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a52d48f4e7bf9005e8f0a89209bf9a73f7190ddf0489eee5eb51377385f59f2a"},
|
|
1020
|
-
{file = "ruamel.yaml.clib-0.2.12-cp310-cp310-win32.whl", hash = "sha256:3eac5a91891ceb88138c113f9db04f3cebdae277f5d44eaa3651a4f573e6a5da"},
|
|
1021
|
-
{file = "ruamel.yaml.clib-0.2.12-cp310-cp310-win_amd64.whl", hash = "sha256:ab007f2f5a87bd08ab1499bdf96f3d5c6ad4dcfa364884cb4549aa0154b13a28"},
|
|
1022
|
-
{file = "ruamel.yaml.clib-0.2.12-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:4a6679521a58256a90b0d89e03992c15144c5f3858f40d7c18886023d7943db6"},
|
|
1023
|
-
{file = "ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:d84318609196d6bd6da0edfa25cedfbabd8dbde5140a0a23af29ad4b8f91fb1e"},
|
|
1024
|
-
{file = "ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb43a269eb827806502c7c8efb7ae7e9e9d0573257a46e8e952f4d4caba4f31e"},
|
|
1025
|
-
{file = "ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:811ea1594b8a0fb466172c384267a4e5e367298af6b228931f273b111f17ef52"},
|
|
1026
|
-
{file = "ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cf12567a7b565cbf65d438dec6cfbe2917d3c1bdddfce84a9930b7d35ea59642"},
|
|
1027
|
-
{file = "ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7dd5adc8b930b12c8fc5b99e2d535a09889941aa0d0bd06f4749e9a9397c71d2"},
|
|
1028
|
-
{file = "ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1492a6051dab8d912fc2adeef0e8c72216b24d57bd896ea607cb90bb0c4981d3"},
|
|
1029
|
-
{file = "ruamel.yaml.clib-0.2.12-cp311-cp311-win32.whl", hash = "sha256:bd0a08f0bab19093c54e18a14a10b4322e1eacc5217056f3c063bd2f59853ce4"},
|
|
1030
|
-
{file = "ruamel.yaml.clib-0.2.12-cp311-cp311-win_amd64.whl", hash = "sha256:a274fb2cb086c7a3dea4322ec27f4cb5cc4b6298adb583ab0e211a4682f241eb"},
|
|
1031
|
-
{file = "ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632"},
|
|
1032
|
-
{file = "ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d"},
|
|
1033
|
-
{file = "ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c"},
|
|
1034
|
-
{file = "ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd"},
|
|
1035
|
-
{file = "ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31"},
|
|
1036
|
-
{file = "ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680"},
|
|
1037
|
-
{file = "ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d"},
|
|
1038
|
-
{file = "ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5"},
|
|
1039
|
-
{file = "ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4"},
|
|
1040
|
-
{file = "ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a"},
|
|
1041
|
-
{file = "ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475"},
|
|
1042
|
-
{file = "ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef"},
|
|
1043
|
-
{file = "ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6"},
|
|
1044
|
-
{file = "ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf"},
|
|
1045
|
-
{file = "ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1"},
|
|
1046
|
-
{file = "ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01"},
|
|
1047
|
-
{file = "ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6"},
|
|
1048
|
-
{file = "ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3"},
|
|
1049
|
-
{file = "ruamel.yaml.clib-0.2.12-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:fc4b630cd3fa2cf7fce38afa91d7cfe844a9f75d7f0f36393fa98815e911d987"},
|
|
1050
|
-
{file = "ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bc5f1e1c28e966d61d2519f2a3d451ba989f9ea0f2307de7bc45baa526de9e45"},
|
|
1051
|
-
{file = "ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a0e060aace4c24dcaf71023bbd7d42674e3b230f7e7b97317baf1e953e5b519"},
|
|
1052
|
-
{file = "ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2f1c3765db32be59d18ab3953f43ab62a761327aafc1594a2a1fbe038b8b8a7"},
|
|
1053
|
-
{file = "ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d85252669dc32f98ebcd5d36768f5d4faeaeaa2d655ac0473be490ecdae3c285"},
|
|
1054
|
-
{file = "ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e143ada795c341b56de9418c58d028989093ee611aa27ffb9b7f609c00d813ed"},
|
|
1055
|
-
{file = "ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2c59aa6170b990d8d2719323e628aaf36f3bfbc1c26279c0eeeb24d05d2d11c7"},
|
|
1056
|
-
{file = "ruamel.yaml.clib-0.2.12-cp39-cp39-win32.whl", hash = "sha256:beffaed67936fbbeffd10966a4eb53c402fafd3d6833770516bf7314bc6ffa12"},
|
|
1057
|
-
{file = "ruamel.yaml.clib-0.2.12-cp39-cp39-win_amd64.whl", hash = "sha256:040ae85536960525ea62868b642bdb0c2cc6021c9f9d507810c0c604e66f5a7b"},
|
|
1058
|
-
{file = "ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f"},
|
|
1059
|
-
]
|
|
1060
|
-
|
|
1061
1000
|
[[package]]
|
|
1062
1001
|
name = "s3transfer"
|
|
1063
1002
|
version = "0.14.0"
|
|
@@ -1071,10 +1010,10 @@ files = [
|
|
|
1071
1010
|
]
|
|
1072
1011
|
|
|
1073
1012
|
[package.dependencies]
|
|
1074
|
-
botocore = ">=1.37.4,<2.
|
|
1013
|
+
botocore = ">=1.37.4,<2.0a0"
|
|
1075
1014
|
|
|
1076
1015
|
[package.extras]
|
|
1077
|
-
crt = ["botocore[crt] (>=1.37.4,<2.
|
|
1016
|
+
crt = ["botocore[crt] (>=1.37.4,<2.0a0)"]
|
|
1078
1017
|
|
|
1079
1018
|
[[package]]
|
|
1080
1019
|
name = "schema-salad"
|
|
@@ -1196,7 +1135,6 @@ files = [
|
|
|
1196
1135
|
|
|
1197
1136
|
[package.dependencies]
|
|
1198
1137
|
anyio = ">=3.6.2,<5"
|
|
1199
|
-
typing-extensions = {version = ">=4.10.0", markers = "python_version < \"3.13\""}
|
|
1200
1138
|
|
|
1201
1139
|
[package.extras]
|
|
1202
1140
|
full = ["httpx (>=0.27.0,<0.29.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.18)", "pyyaml"]
|
|
@@ -1321,5 +1259,5 @@ toml = ["tomli_w (>=1.0.0,<2)"]
|
|
|
1321
1259
|
|
|
1322
1260
|
[metadata]
|
|
1323
1261
|
lock-version = "2.1"
|
|
1324
|
-
python-versions = "
|
|
1325
|
-
content-hash = "
|
|
1262
|
+
python-versions = "^3.14, <3.15"
|
|
1263
|
+
content-hash = "a5b62376948887cdd479c0fae46e967b0b2c0bf2e6734d299be2d82ee09b48fe"
|
|
@@ -14,7 +14,7 @@ homepage = "https://github.com/orcabus/platform-cdk-constructs"
|
|
|
14
14
|
repository = "https://github.com/orcabus/platform-cdk-constructs"
|
|
15
15
|
|
|
16
16
|
[tool.poetry.dependencies]
|
|
17
|
-
python = "
|
|
17
|
+
python = "^3.14, <3.15"
|
|
18
18
|
wrapica = "2.40.1.post20251107162736"
|
|
19
19
|
|
|
20
20
|
[tool.poetry.group.dev]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# This file is automatically @generated by Poetry 2.1
|
|
1
|
+
# This file is automatically @generated by Poetry 2.3.1 and should not be changed by hand.
|
|
2
2
|
|
|
3
3
|
[[package]]
|
|
4
4
|
name = "colorama"
|
|
@@ -299,5 +299,5 @@ files = [
|
|
|
299
299
|
|
|
300
300
|
[metadata]
|
|
301
301
|
lock-version = "2.1"
|
|
302
|
-
python-versions = "^3.
|
|
303
|
-
content-hash = "
|
|
302
|
+
python-versions = "^3.14, <3.15"
|
|
303
|
+
content-hash = "9a08fc36c54147ff50b53a139cccd72f2f2d6c5498cf08fdb45e60b5d9eeb8e5"
|
|
@@ -14,7 +14,7 @@ homepage = "https://github.com/orcabus/platform-cdk-constructs"
|
|
|
14
14
|
repository = "https://github.com/orcabus/platform-cdk-constructs"
|
|
15
15
|
|
|
16
16
|
[tool.poetry.dependencies]
|
|
17
|
-
python = "^3.
|
|
17
|
+
python = "^3.14, <3.15"
|
|
18
18
|
pandas = "^2.2.3"
|
|
19
19
|
|
|
20
20
|
[tool.poetry.group.dev]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# This file is automatically @generated by Poetry 2.1
|
|
1
|
+
# This file is automatically @generated by Poetry 2.3.1 and should not be changed by hand.
|
|
2
2
|
|
|
3
3
|
[[package]]
|
|
4
4
|
name = "annotated-types"
|
|
@@ -27,7 +27,6 @@ files = [
|
|
|
27
27
|
[package.dependencies]
|
|
28
28
|
idna = ">=2.8"
|
|
29
29
|
sniffio = ">=1.1"
|
|
30
|
-
typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""}
|
|
31
30
|
|
|
32
31
|
[package.extras]
|
|
33
32
|
doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"]
|
|
@@ -515,5 +514,5 @@ zstd = ["zstandard (>=0.18.0)"]
|
|
|
515
514
|
|
|
516
515
|
[metadata]
|
|
517
516
|
lock-version = "2.1"
|
|
518
|
-
python-versions = "^3.
|
|
519
|
-
content-hash = "
|
|
517
|
+
python-versions = "^3.14, <3.15"
|
|
518
|
+
content-hash = "2c6cf768214845626e1452ff927f2c1de56d6b220e8168cebc36e1121cf4aead"
|
|
@@ -14,7 +14,7 @@ homepage = "https://github.com/orcabus/platform-cdk-constructs"
|
|
|
14
14
|
repository = "https://github.com/orcabus/platform-cdk-constructs"
|
|
15
15
|
|
|
16
16
|
[tool.poetry.dependencies]
|
|
17
|
-
python = "^3.
|
|
17
|
+
python = "^3.14, <3.15"
|
|
18
18
|
requests = "^2.31.0"
|
|
19
19
|
fastapi = "^0.115.12"
|
|
20
20
|
|
package/monitored-queue/index.js
CHANGED
|
@@ -13,7 +13,7 @@ const aws_cloudwatch_actions_1 = require("aws-cdk-lib/aws-cloudwatch-actions");
|
|
|
13
13
|
* SNS topic.
|
|
14
14
|
*/
|
|
15
15
|
class MonitoredQueue extends constructs_1.Construct {
|
|
16
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueue", version: "1.0
|
|
16
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueue", version: "1.1.0" };
|
|
17
17
|
queue;
|
|
18
18
|
deadLetterQueue;
|
|
19
19
|
alarm;
|
|
@@ -7,7 +7,7 @@ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
|
7
7
|
* A construct which represents a named role that a Lambda function can assume.
|
|
8
8
|
*/
|
|
9
9
|
class NamedLambdaRole extends aws_iam_1.Role {
|
|
10
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole", version: "1.0
|
|
10
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole", version: "1.1.0" };
|
|
11
11
|
constructor(scope, id, props) {
|
|
12
12
|
super(scope, id, {
|
|
13
13
|
assumedBy: new aws_iam_1.ServicePrincipal("lambda.amazonaws.com"),
|
package/package.json
CHANGED
|
@@ -15,7 +15,7 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
|
15
15
|
* to the provider framework.
|
|
16
16
|
*/
|
|
17
17
|
class ProviderFunction extends constructs_1.Construct {
|
|
18
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.provider.ProviderFunction", version: "1.0
|
|
18
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.provider.ProviderFunction", version: "1.1.0" };
|
|
19
19
|
_function;
|
|
20
20
|
_response;
|
|
21
21
|
constructor(scope, id, props) {
|
|
@@ -23,7 +23,7 @@ exports.VPC_LOOKUP_PROPS = {
|
|
|
23
23
|
* Helper for looking up the shared OrcaBus VPC.
|
|
24
24
|
*/
|
|
25
25
|
class OrcaBusVpc {
|
|
26
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusVpc", version: "1.0
|
|
26
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusVpc", version: "1.1.0" };
|
|
27
27
|
/**
|
|
28
28
|
* The shared VPC that is used by OrcaBus.
|
|
29
29
|
* @param scope
|
|
@@ -42,7 +42,7 @@ exports.SHARED_SECURITY_GROUP_NAME = "OrcaBusSharedComputeSecurityGroup";
|
|
|
42
42
|
* Helper for looking up the shared compute security group by name.
|
|
43
43
|
*/
|
|
44
44
|
class OrcaBusSharedComputeSecurityGroup {
|
|
45
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusSharedComputeSecurityGroup", version: "1.0
|
|
45
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusSharedComputeSecurityGroup", version: "1.1.0" };
|
|
46
46
|
/**
|
|
47
47
|
* The shared security group that is used by compute resources to access the database.
|
|
48
48
|
* @param scope
|
package/shared-config/slack.js
CHANGED
|
@@ -11,7 +11,7 @@ exports.SLACK_ALERTS_SNS_TOPIC = "AwsChatBotTopic-alerts";
|
|
|
11
11
|
* A helper class to construct the arn for the slack SNS topic.
|
|
12
12
|
*/
|
|
13
13
|
class SlackAlerts {
|
|
14
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.slack.SlackAlerts", version: "1.0
|
|
14
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.slack.SlackAlerts", version: "1.1.0" };
|
|
15
15
|
/**
|
|
16
16
|
* Format the ARN for the slack alerts SNS topic for the current stack.
|
|
17
17
|
* @param stack
|