@restatedev/restate-cdk 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,23 +1,59 @@
1
- name: Publish package to NPM
1
+ name: Publish release to NPM
2
+
2
3
  on:
3
4
  release:
4
5
  types: [published]
6
+
5
7
  jobs:
6
8
  build:
9
+ # prevent from running on forks
10
+ if: github.repository_owner == 'restatedev'
7
11
  runs-on: ubuntu-latest
12
+
8
13
  permissions:
9
- contents: read
14
+ contents: write
10
15
  packages: write
16
+
11
17
  steps:
12
18
  - uses: actions/checkout@v4
13
- # Setup .npmrc file to publish to NPM
14
19
  - uses: actions/setup-node@v4
15
20
  with:
16
- node-version: "20.x"
21
+ node-version: "22.x"
17
22
  registry-url: "https://registry.npmjs.org"
23
+
18
24
  - run: npm ci
25
+
26
+ - name: Extract tag version
27
+ # expected tag format is vX.Y.Z
28
+ run: |
29
+ echo "Full GITHUB_REF: ${GITHUB_REF}"
30
+ TAG_VERSION=${GITHUB_REF#refs/tags/v}
31
+ if [ -z "$TAG_VERSION" ]; then
32
+ echo "Error: TAG_VERSION is empty. Exiting."
33
+ exit 1
34
+ fi
35
+ echo "Extracted TAG_VERSION: $TAG_VERSION"
36
+ echo "TAG_VERSION=$TAG_VERSION" >> $GITHUB_ENV
37
+
38
+ - name: Update package version
39
+ run: npm version $TAG_VERSION --no-git-tag-version
40
+
41
+ - name: Commit and push
42
+ run: |
43
+ git config --global user.name "github-actions[bot]"
44
+ git config --global user.email "github-actions[bot]@users.noreply.github.com"
45
+ git commit -am "Release ${TAG_VERSION}"
46
+ git push origin HEAD:main
47
+ env:
48
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
49
+
19
50
  - run: npm run build
20
51
  - run: npm run test
21
- - run: npm publish --tag latest --access public
52
+ - run: |
53
+ if [[ ${{ github.event.release.prerelease }} == true ]]; then
54
+ npm publish --tag next --access public
55
+ else
56
+ npm publish --tag latest --access public
57
+ fi
22
58
  env:
23
59
  NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
@@ -1,4 +1,4 @@
1
- name: Build and test
1
+ name: Publish snapshot to NPM
2
2
 
3
3
  on:
4
4
  push:
@@ -9,16 +9,12 @@ jobs:
9
9
  # prevent from running on forks
10
10
  if: github.repository_owner == 'restatedev'
11
11
  runs-on: ubuntu-latest
12
- strategy:
13
- matrix:
14
- node-version: [20.x]
15
12
 
16
13
  steps:
17
14
  - uses: actions/checkout@v4
18
- - name: Use Node.js ${{ matrix.node-version }}
19
- uses: actions/setup-node@v4
15
+ - uses: actions/setup-node@v4
20
16
  with:
21
- node-version: ${{ matrix.node-version }}
17
+ node-version: "22.x"
22
18
  registry-url: "https://registry.npmjs.org"
23
19
  - run: npm ci
24
20
  - run: npm run build
@@ -37,7 +33,7 @@ jobs:
37
33
  NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
38
34
  run: |
39
35
  # We're using 0.0.0 to avoid this version to be higher than released versions.
40
- # To use it:
36
+ # To use it:
41
37
  # "@restatedev/restate-cdk": "^0.0.0-SNAPSHOT"
42
38
  npm version 0.0.0-SNAPSHOT-$(date '+%Y%m%d%H%M%S') --git-tag-version false
43
39
  # We use dist-tag dev for the snapshot releases, see https://docs.npmjs.com/cli/v9/commands/npm-dist-tag for more info
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2023 - Restate Software, Inc., Restate GmbH
3
+ Copyright (c) 2023-2025 - Restate Software, Inc., Restate GmbH
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -3,13 +3,18 @@
3
3
  [![Discord](https://img.shields.io/discord/1128210118216007792?logo=discord)](https://discord.gg/skW3AZ6uGd)
4
4
  [![Twitter](https://img.shields.io/twitter/follow/restatedev.svg?style=social&label=Follow)](https://twitter.com/intent/follow?screen_name=restatedev)
5
5
 
6
- # Restate CDK support
6
+ # Restate CDK Construct Library
7
7
 
8
- AWS Cloud Development Kit (CDK) construct library for deploying [Restate](https://restate.dev) and Restate services on
9
- AWS. This library helps you when deploying Restate services to AWS Lambda as well as for managing self-hosted Restate
10
- deployments on your own infrastructure. For more information on CDK, please
8
+ AWS Cloud Development Kit (CDK) construct library for deploying [Restate](https://restate.dev) and
9
+ Restate services on AWS.
10
+
11
+ [Restate](https://github.com/restatedev/restate) is the platform for building resilient applications
12
+ that tolerate all infrastructure faults w/o the need for a PhD. For more information on CDK, please
11
13
  see [Getting started with the AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html).
12
14
 
15
+ This library helps you manage registering AWS Lambda-based Restate services in Restate environments.
16
+ It also offers basic support for creating self-hosted Restate deployments on your own AWS infrastructure.
17
+
13
18
  ## Installation
14
19
 
15
20
  Inside an existing CDK project, add the library from [npm](https://www.npmjs.com/package/@restatedev/restate-cdk):
@@ -23,17 +28,16 @@ npm i @restatedev/restate-cdk
23
28
  - [`RestateCloudEnvironment`](./lib/restate-constructs/restate-cloud-environment.ts) - Supports deploying Restate
24
29
  services to an existing [Restate Cloud](https://cloud.restate.dev) environment.
25
30
  - [`SingleNodeRestateDeployment`](./lib/restate-constructs/single-node-restate-deployment.ts) - Deploys a self-hosted
26
- Restate server running on Amazon EC2; this provides a basic single-node deployment targeted at development and testing
31
+ Restate server running on Amazon EC2; this provides a basic single-node deployment targeted at
32
+ development and testing
27
33
  - [`ServiceDeployer`](./lib/restate-constructs/service-deployer.ts) - facilitates registration of Lambda-based service
28
34
  handlers with a Restate environment, such as a self-hosted EC2 environment
29
35
 
30
- For a more detailed overview, please see
31
- the [Restate CDK documentation](https://docs.restate.dev/deploy/lambda/cdk).
36
+ For a more detailed look, please refer to the [Restate CDK documentation](https://docs.restate.dev/deploy/lambda/cdk).
32
37
 
33
38
  ### Examples
34
39
 
35
40
  You can use the following templates to bootstrap your own CDK projects:
36
41
 
37
42
  - [e2e tests in this repository](test/e2e)
38
- - [typescript-lambda-cdk](https://github.com/restatedev/examples/tree/main/templates/typescript-lambda-cdk)
39
- - [kotlin-gradle-lambda-cdk](https://github.com/restatedev/examples/tree/main/templates/kotlin-gradle-lambda-cdk)
43
+ - the official [Restate examples](https://github.com/restatedev/examples) repository
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  /*
3
- * Copyright (c) 2024 - Restate Software, Inc., Restate GmbH
3
+ * Copyright (c) 2023-2025 - Restate Software, Inc., Restate GmbH
4
4
  *
5
- * This file is part of the Restate SDK for Node.js/TypeScript,
5
+ * This file is part of the Restate CDK Construct Library,
6
6
  * which is released under the MIT license.
7
7
  *
8
8
  * You can find a copy of the license in file LICENSE in the root
@@ -16,4 +16,4 @@ var TracingMode;
16
16
  TracingMode["DISABLED"] = "DISABLED";
17
17
  TracingMode["AWS_XRAY"] = "AWS_XRAY";
18
18
  })(TracingMode || (exports.TracingMode = TracingMode = {}));
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95bWVudHMtY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL3Jlc3RhdGUtY29uc3RydWN0cy9kZXBsb3ltZW50cy1jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7R0FTRzs7O0FBRUgsSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLG9DQUFxQixDQUFBO0lBQ3JCLG9DQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxXQUFXLDJCQUFYLFdBQVcsUUFHdEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDI0IC0gUmVzdGF0ZSBTb2Z0d2FyZSwgSW5jLiwgUmVzdGF0ZSBHbWJIXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFJlc3RhdGUgU0RLIGZvciBOb2RlLmpzL1R5cGVTY3JpcHQsXG4gKiB3aGljaCBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKlxuICogWW91IGNhbiBmaW5kIGEgY29weSBvZiB0aGUgbGljZW5zZSBpbiBmaWxlIExJQ0VOU0UgaW4gdGhlIHJvb3RcbiAqIGRpcmVjdG9yeSBvZiB0aGlzIHJlcG9zaXRvcnkgb3IgcGFja2FnZSwgb3IgYXRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXN0YXRlZGV2L3Nkay10eXBlc2NyaXB0L2Jsb2IvbWFpbi9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGVudW0gVHJhY2luZ01vZGUge1xuICBESVNBQkxFRCA9IFwiRElTQUJMRURcIixcbiAgQVdTX1hSQVkgPSBcIkFXU19YUkFZXCIsXG59XG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95bWVudHMtY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL3Jlc3RhdGUtY29uc3RydWN0cy9kZXBsb3ltZW50cy1jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7R0FTRzs7O0FBRUgsSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLG9DQUFxQixDQUFBO0lBQ3JCLG9DQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxXQUFXLDJCQUFYLFdBQVcsUUFHdEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIzLTIwMjUgLSBSZXN0YXRlIFNvZnR3YXJlLCBJbmMuLCBSZXN0YXRlIEdtYkhcbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUmVzdGF0ZSBDREsgQ29uc3RydWN0IExpYnJhcnksXG4gKiB3aGljaCBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKlxuICogWW91IGNhbiBmaW5kIGEgY29weSBvZiB0aGUgbGljZW5zZSBpbiBmaWxlIExJQ0VOU0UgaW4gdGhlIHJvb3RcbiAqIGRpcmVjdG9yeSBvZiB0aGlzIHJlcG9zaXRvcnkgb3IgcGFja2FnZSwgb3IgYXRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXN0YXRlZGV2L3Nkay10eXBlc2NyaXB0L2Jsb2IvbWFpbi9MSUNFTlNFXG4gKi9cblxuZXhwb3J0IGVudW0gVHJhY2luZ01vZGUge1xuICBESVNBQkxFRCA9IFwiRElTQUJMRURcIixcbiAgQVdTX1hSQVkgPSBcIkFXU19YUkFZXCIsXG59XG4iXX0=
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  /*
3
- * Copyright (c) 2023 - Restate Software, Inc., Restate GmbH
3
+ * Copyright (c) 2023-2025 - Restate Software, Inc., Restate GmbH
4
4
  *
5
- * This file is part of the Restate SDK for Node.js/TypeScript,
5
+ * This file is part of the Restate CDK Construct Library,
6
6
  * which is released under the MIT license.
7
7
  *
8
8
  * You can find a copy of the license in file LICENSE in the root
@@ -248,4 +248,4 @@ class FargateRestateDeployment extends constructs_1.Construct {
248
248
  }
249
249
  }
250
250
  exports.FargateRestateDeployment = FargateRestateDeployment;
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFyZ2F0ZS1yZXN0YXRlLWRlcGxveW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvcmVzdGF0ZS1jb25zdHJ1Y3RzL2ZhcmdhdGUtcmVzdGF0ZS1kZXBsb3ltZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7O0dBU0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILDJDQUF1QztBQUN2QyxpREFBbUM7QUFDbkMsd0VBQTBEO0FBQzFELDJEQUE2QztBQUM3Qyx5REFBMkM7QUFDM0MseURBQTJDO0FBQzNDLHlEQUEyQztBQUMzQyx5REFBMkM7QUFDM0MsNkVBQStEO0FBQy9ELDZEQUErQztBQUMvQyx5RUFBMkQ7QUFJM0QsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFDaEMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDL0IsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7QUFDbEMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDaEMsTUFBTSxxQkFBcUIsR0FBRyw4QkFBOEIsQ0FBQztBQUM3RCxNQUFNLDBCQUEwQixHQUFHLFFBQVEsQ0FBQztBQUM1QyxNQUFNLHVCQUF1QixHQUFHLFFBQVEsQ0FBQztBQW9FekM7Ozs7R0FJRztBQUNILE1BQWEsd0JBQXlCLFNBQVEsc0JBQVM7SUFXckQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFN0UsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxxQkFBcUIsQ0FBQztRQUNq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QyxVQUFVLEdBQUcsV0FBVyxLQUFLLENBQUMsT0FBTyxHQUFHLG1CQUFtQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztRQUMzRyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsS0FBSyxDQUFDLE9BQU8sSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQ2xFLENBQUM7Q0FDRjtBQW5ORCw0REFtTkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIzIC0gUmVzdGF0ZSBTb2Z0d2FyZSwgSW5jLiwgUmVzdGF0ZSBHbWJIXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFJlc3RhdGUgU0RLIGZvciBOb2RlLmpzL1R5cGVTY3JpcHQsXG4gKiB3aGljaCBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKlxuICogWW91IGNhbiBmaW5kIGEgY29weSBvZiB0aGUgbGljZW5zZSBpbiBmaWxlIExJQ0VOU0UgaW4gdGhlIHJvb3RcbiAqIGRpcmVjdG9yeSBvZiB0aGlzIHJlcG9zaXRvcnkgb3IgcGFja2FnZSwgb3IgYXRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXN0YXRlZGV2L3Nkay10eXBlc2NyaXB0L2Jsb2IvbWFpbi9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGFjbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlclwiO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcbmltcG9ydCAqIGFzIGVmcyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVmc1wiO1xuaW1wb3J0ICogYXMgZWxiMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjJcIjtcbmltcG9ydCAqIGFzIHI1MyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCAqIGFzIHRhcmdldHMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzLXRhcmdldHNcIjtcbmltcG9ydCB7IElSZXN0YXRlRW52aXJvbm1lbnQgfSBmcm9tIFwiLi9yZXN0YXRlLWVudmlyb25tZW50XCI7XG5pbXBvcnQgeyBUcmFjaW5nTW9kZSB9IGZyb20gXCIuL2RlcGxveW1lbnRzLWNvbW1vblwiO1xuXG5jb25zdCBQVUJMSUNfSU5HUkVTU19QT1JUID0gNDQzO1xuY29uc3QgUFVCTElDX0FETUlOX1BPUlQgPSA5MDcwO1xuY29uc3QgUkVTVEFURV9JTkdSRVNTX1BPUlQgPSA4MDgwO1xuY29uc3QgUkVTVEFURV9BRE1JTl9QT1JUID0gOTA3MDtcbmNvbnN0IFJFU1RBVEVfSU1BR0VfREVGQVVMVCA9IFwiZG9ja2VyLmlvL3Jlc3RhdGVkZXYvcmVzdGF0ZVwiO1xuY29uc3QgUkVTVEFURV9ET0NLRVJfREVGQVVMVF9UQUcgPSBcImxhdGVzdFwiO1xuY29uc3QgQURPVF9ET0NLRVJfREVGQVVMVF9UQUcgPSBcImxhdGVzdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RhdGVGYXJnYXRlUHJvcHMge1xuICAvKiogVGhlIFZQQyBpbiB3aGljaCB0byBsYXVuY2ggdGhlIFJlc3RhdGUgaG9zdC4gKi9cbiAgdnBjPzogZWMyLklWcGM7XG5cbiAgLyoqIExvZyBncm91cCBmb3IgUmVzdGF0ZSBzZXJ2aWNlIGxvZ3MuICovXG4gIGxvZ0dyb3VwPzogbG9ncy5Mb2dHcm91cDtcblxuICAvKiogVHJhY2luZyBtb2RlIGZvciBSZXN0YXRlIHNlcnZpY2VzLiBEZWZhdWx0cyB0byB7QGxpbmsgVHJhY2luZ01vZGUuRElTQUJMRUR9LiAqL1xuICB0cmFjaW5nPzogVHJhY2luZ01vZGU7XG5cbiAgLyoqIFByZWZpeCBmb3IgcmVzb3VyY2VzIGNyZWF0ZWQgYnkgdGhpcyBjb25zdHJ1Y3QgdGhhdCByZXF1aXJlIHVuaXF1ZSBuYW1lcy4gKi9cbiAgcHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKiBFQ1MgY2x1c3RlciBuYW1lLiAqL1xuICBjbHVzdGVyTmFtZT86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgbmFtZS4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIHJlc3RhdGVJbWFnZT86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgdGFnLiBEZWZhdWx0cyB0byBgbGF0ZXN0YC4gKi9cbiAgcmVzdGF0ZVRhZz86IHN0cmluZztcblxuICAvKiogQW1hem9uIERpc3RybyBmb3IgT3BlbiBUZWxlbWV0cnkgRG9ja2VyIGltYWdlIHRhZy4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIGFkb3RUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IGZvciBSZXN0YXRlIGNvbnRhaW5lci4gVXNlIGl0IHRvIGNvbmZpZ3VyZSBsb2dnaW5nIGFuZCBvdGhlciBwcm9jZXNzLWxldmVsIHNldHRpbmdzLlxuICAgKi9cbiAgZW52aXJvbm1lbnQ/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBSZXN0YXRlIGNvbnRhaW5lciBleHRyYSBhcmd1bWVudHMuXG4gICAqL1xuICBjb21tYW5kPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBmdWxsIG5hbWUgZm9yIHRoZSBwdWJsaWMgZW5kcG9pbnQuXG4gICAqL1xuICBkbnNOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEROUyB6b25lIGluIHdoaWNoIHRvIGNyZWF0ZSB0aGUgcHVibGljIGVuZHBvaW50LlxuICAgKi9cbiAgaG9zdGVkWm9uZTogcjUzLklIb3N0ZWRab25lO1xuXG4gIC8qKlxuICAgKiBSZW1vdmFsIHBvbGljeSBmb3IgbG9uZy1saXZlZCByZXNvdXJjZXMgKHN0b3JhZ2UsIGxvZ3MpLiBEZWZhdWx0OiBgY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWWAuXG4gICAqL1xuICByZW1vdmFsUG9saWN5PzogY2RrLlJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZXIgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIGxvYWRCYWxhbmNlcj86IHtcbiAgICAvKiogQHNlZSBCYXNlTG9hZEJhbGFuY2VyUHJvcHMuaW50ZXJuZXRGYWNpbmcgKi9cbiAgICBpbnRlcm5ldEZhY2luZz86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJZiB5b3Ugc2V0IHRoaXMgdG8gZmFsc2UsIHlvdSBjYW4gY3VzdG9taXplIHRoZSBhY2Nlc3MgdG8gdGhlIHBhaXIgb2YgQUxCIGxpc3RlbmVycyB2aWFcbiAgICAgKiB7QGxpbmsgRmFyZ2F0ZVJlc3RhdGVEZXBsb3ltZW50LmluZ3Jlc3NMaXN0ZW5lcn0gYW5kIHtAbGluayBGYXJnYXRlUmVzdGF0ZURlcGxveW1lbnQuYWRtaW5MaXN0ZW5lcn0uXG4gICAgICpcbiAgICAgKiBAc2VlIEJhc2VBcHBsaWNhdGlvbkxpc3RlbmVyUHJvcHMub3BlbiAqL1xuICAgIG9wZW4/OiBib29sZWFuO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBSZXN0YXRlIHNlcnZpY2UgZGVwbG95bWVudCBydW5uaW5nIGFzIGEgRmFyZ2F0ZSB0YXNrIGFuZCBiYWNrZWQgYnkgRUZTLlxuICpcbiAqIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBjb25zdHJ1Y3QgaXMgc3RpbGwgZXhwZXJpbWVudGFsISBVc2Ugd2l0aCBjYXV0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgRmFyZ2F0ZVJlc3RhdGVEZXBsb3ltZW50IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVJlc3RhdGVFbnZpcm9ubWVudCB7XG4gIHJlYWRvbmx5IGludm9rZXJSb2xlOiBpYW0uSVJvbGU7XG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG5cbiAgcmVhZG9ubHkgaW5ncmVzc1VybDogc3RyaW5nO1xuICByZWFkb25seSBhZG1pblVybDogc3RyaW5nO1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwOiBlYzIuU2VjdXJpdHlHcm91cDtcbiAgcmVhZG9ubHkgZGF0YVN0b3JlOiBlZnMuRmlsZVN5c3RlbTtcbiAgcmVhZG9ubHkgaW5ncmVzc0xpc3RlbmVyOiBlbGIyLkFwcGxpY2F0aW9uTGlzdGVuZXI7XG4gIHJlYWRvbmx5IGFkbWluTGlzdGVuZXI6IGVsYjIuQXBwbGljYXRpb25MaXN0ZW5lcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmVzdGF0ZUZhcmdhdGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnZwYyA9IHByb3BzLnZwYyA/PyBlYzIuVnBjLmZyb21Mb29rdXAodGhpcywgXCJWcGNcIiwgeyBpc0RlZmF1bHQ6IHRydWUgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlSW1hZ2UgPSBwcm9wcy5yZXN0YXRlSW1hZ2UgPz8gUkVTVEFURV9JTUFHRV9ERUZBVUxUO1xuICAgIGNvbnN0IHJlc3RhdGVUYWcgPSBwcm9wcy5yZXN0YXRlVGFnID8/IFJFU1RBVEVfRE9DS0VSX0RFRkFVTFRfVEFHO1xuICAgIGNvbnN0IGFkb3RUYWcgPSBwcm9wcy5hZG90VGFnID8/IEFET1RfRE9DS0VSX0RFRkFVTFRfVEFHOyAvLyBUT0RPOiBhZGQgWC1SYXkgc3VwcG9ydCBsaWtlIHdlIGhhdmUgZm9yIEVDMlxuXG4gICAgY29uc3QgZnMgPSBuZXcgZWZzLkZpbGVTeXN0ZW0odGhpcywgXCJEYXRhU3RvcmVcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGxpZmVjeWNsZVBvbGljeTogZWZzLkxpZmVjeWNsZVBvbGljeS5BRlRFUl8zMF9EQVlTLFxuICAgICAgcGVyZm9ybWFuY2VNb2RlOiBlZnMuUGVyZm9ybWFuY2VNb2RlLkdFTkVSQUxfUFVSUE9TRSxcbiAgICAgIHRocm91Z2hwdXRNb2RlOiBlZnMuVGhyb3VnaHB1dE1vZGUuQlVSU1RJTkcsXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgfSk7XG4gICAgZnMuYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgc2lkOiBcIkFsbG93RWZzTW91bnRcIixcbiAgICAgICAgYWN0aW9uczogW1wiZWxhc3RpY2ZpbGVzeXN0ZW06Q2xpZW50TW91bnRcIl0sXG4gICAgICAgIC8vIFJlc3RyaWN0aW5nIHRvIHRoZSBFQ1MgZXhlY3V0aW9uIHJvbGUgZG9lcyBub3Qgd29yazsgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIgLSBFRlMgYWNjZXNzIGlzIHNlY3VyZWQgYnkgYSBzZWN1cml0eSBncm91cFxuICAgICAgICBwcmluY2lwYWxzOiBbbmV3IGlhbS5BbnlQcmluY2lwYWwoKV0sXG4gICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICBCb29sOiB7XG4gICAgICAgICAgICBcImVsYXN0aWNmaWxlc3lzdGVtOkFjY2Vzc2VkVmlhTW91bnRUYXJnZXRcIjogXCJ0cnVlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgdGhpcy5kYXRhU3RvcmUgPSBmcztcblxuICAgIGNvbnN0IGNsdXN0ZXIgPSBuZXcgZWNzLkNsdXN0ZXIodGhpcywgXCJDbHVzdGVyXCIsIHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICBjbHVzdGVyTmFtZTogcHJvcHMuY2x1c3Rlck5hbWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlVGFzayA9IG5ldyBlY3MuRmFyZ2F0ZVRhc2tEZWZpbml0aW9uKHRoaXMsIFwiUmVzdGF0ZVRhc2tcIiwge1xuICAgICAgY3B1OiA0MDk2LFxuICAgICAgbWVtb3J5TGltaXRNaUI6IDgxOTIsXG4gICAgICBydW50aW1lUGxhdGZvcm06IHtcbiAgICAgICAgY3B1QXJjaGl0ZWN0dXJlOiBlY3MuQ3B1QXJjaGl0ZWN0dXJlLkFSTTY0LFxuICAgICAgICBvcGVyYXRpbmdTeXN0ZW1GYW1pbHk6IGVjcy5PcGVyYXRpbmdTeXN0ZW1GYW1pbHkuTElOVVgsXG4gICAgICB9LFxuICAgICAgdm9sdW1lczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJyZXN0YXRlU3RvcmVcIixcbiAgICAgICAgICBlZnNWb2x1bWVDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICBmaWxlU3lzdGVtSWQ6IGZzLmZpbGVTeXN0ZW1JZCxcbiAgICAgICAgICAgIGF1dGhvcml6YXRpb25Db25maWc6IHt9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gVE9ETzogU3RhcnQgYW4gQURPVCBjb250YWluZXIgYW5kIGhvb2sgaXQgdXAgdG8gUmVzdGF0ZSBhbmQgQVdTIFgtUmF5IG9yIGFub3RoZXIgT1RlbCBzaW5rXG4gICAgLy8gaWYgKHByb3BzLnRyYWNpbmcgPT09IFRyYWNpbmdNb2RlLkFXU19YUkFZKSB7XG4gICAgLy8gICByZXN0YXRlVGFzay50YXNrUm9sZS5hZGRNYW5hZ2VkUG9saWN5KGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcIkFXU1hyYXlXcml0ZU9ubHlBY2Nlc3NcIikpO1xuICAgIC8vIH1cblxuICAgIG5ldyBpYW0uUG9saWN5KHRoaXMsIFwiVGFza1BvbGljeVwiLCB7XG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBzaWQ6IFwiQWxsb3dBc3N1bWVBbnlSb2xlXCIsXG4gICAgICAgICAgYWN0aW9uczogW1wic3RzOkFzc3VtZVJvbGVcIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLCAvLyB3ZSBkb24ndCBrbm93IHVwZnJvbnQgd2hhdCBpbnZva2VyIHJvbGVzIHdlIG1heSBiZSBhc2tlZCB0byBhc3N1bWUgYXQgcnVudGltZVxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSkuYXR0YWNoVG9Sb2xlKHJlc3RhdGVUYXNrLnRhc2tSb2xlKTtcblxuICAgIGNvbnN0IGludm9rZXJSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiSW52b2tlclJvbGVcIiwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLkFyblByaW5jaXBhbChyZXN0YXRlVGFzay50YXNrUm9sZS5yb2xlQXJuKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkFzc3VtZWQgYnkgUmVzdGF0ZSBkZXBsb3ltZW50IHRvIGludm9rZSBMYW1iZGEtYmFzZWQgc2VydmljZXNcIixcbiAgICB9KTtcbiAgICBpbnZva2VyUm9sZS5ncmFudEFzc3VtZVJvbGUocmVzdGF0ZVRhc2sudGFza1JvbGUpO1xuICAgIHRoaXMuaW52b2tlclJvbGUgPSBpbnZva2VyUm9sZTtcblxuICAgIGNvbnN0IGxvZ0dyb3VwID1cbiAgICAgIHByb3BzLmxvZ0dyb3VwID8/XG4gICAgICBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCBcIkxvZ3NcIiwge1xuICAgICAgICBsb2dHcm91cE5hbWU6IGAvcmVzdGF0ZS8ke2lkfWAsXG4gICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9NT05USCxcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeSA/PyBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlID0gcmVzdGF0ZVRhc2suYWRkQ29udGFpbmVyKFwiUmVzdGF0ZVwiLCB7XG4gICAgICBjb250YWluZXJOYW1lOiBcInJlc3RhdGUtcnVudGltZVwiLFxuICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tUmVnaXN0cnkoYCR7cmVzdGF0ZUltYWdlfToke3Jlc3RhdGVUYWd9YCksXG4gICAgICBwb3J0TWFwcGluZ3M6IFt7IGNvbnRhaW5lclBvcnQ6IFJFU1RBVEVfSU5HUkVTU19QT1JUIH0sIHsgY29udGFpbmVyUG9ydDogUkVTVEFURV9BRE1JTl9QT1JUIH1dLFxuICAgICAgbG9nZ2luZzogZWNzLkxvZ0RyaXZlci5hd3NMb2dzKHtcbiAgICAgICAgbG9nR3JvdXAsXG4gICAgICAgIHN0cmVhbVByZWZpeDogXCJyZXN0YXRlXCIsXG4gICAgICB9KSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFJFU1RBVEVfTE9HX0ZPUk1BVDogXCJqc29uXCIsXG4gICAgICAgIFJFU1RBVEVfTk9ERV9OQU1FOiBcImZhcmdhdGVcIixcbiAgICAgIH0sXG4gICAgICBjb21tYW5kOiBwcm9wcy5jb21tYW5kLFxuICAgICAgc3RhcnRUaW1lb3V0OiBjZGsuRHVyYXRpb24uc2Vjb25kcygyMCksXG4gICAgICBzdG9wVGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMjApLFxuICAgIH0pO1xuICAgIHJlc3RhdGUuYWRkTW91bnRQb2ludHMoe1xuICAgICAgY29udGFpbmVyUGF0aDogXCIvcmVzdGF0ZS1kYXRhXCIsXG4gICAgICByZWFkT25seTogZmFsc2UsXG4gICAgICBzb3VyY2VWb2x1bWU6IFwicmVzdGF0ZVN0b3JlXCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlU2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBcIlNlY3VyaXR5R3JvdXBcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5zZWN1cml0eUdyb3VwID0gcmVzdGF0ZVNlY3VyaXR5R3JvdXA7XG5cbiAgICBjb25zdCByZXN0YXRlRmFyZ2F0ZVNlcnZpY2UgPSBuZXcgZWNzLkZhcmdhdGVTZXJ2aWNlKHRoaXMsIFwiU2VydmljZVwiLCB7XG4gICAgICBjbHVzdGVyLFxuICAgICAgdGFza0RlZmluaXRpb246IHJlc3RhdGVUYXNrLFxuICAgICAgYXNzaWduUHVibGljSXA6IHRydWUsXG4gICAgICBjaXJjdWl0QnJlYWtlcjoge1xuICAgICAgICBlbmFibGU6IHRydWUsXG4gICAgICAgIHJvbGxiYWNrOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiAwLCAvLyBhbGxvdyBzY2FsZSBkb3duIHRvIHplcm8gZHVyaW5nIGRlcGxveW1lbnRzIChyZXF1aXJlZCBmb3IgYXQtbW9zdC0xIG1heCBzZXR0aW5nKVxuICAgICAgbWF4SGVhbHRoeVBlcmNlbnQ6IDEwMCwgLy8gZG9uJ3Qgc3RhcnQgbW9yZSB0aGFuIG9uZSBjb3B5XG4gICAgICBzZWN1cml0eUdyb3VwczogW3Jlc3RhdGVTZWN1cml0eUdyb3VwXSxcbiAgICB9KTtcblxuICAgIGZzLmNvbm5lY3Rpb25zLmFsbG93RGVmYXVsdFBvcnRGcm9tKHJlc3RhdGVTZWN1cml0eUdyb3VwKTtcbiAgICBmcy5jb25uZWN0aW9ucy5hbGxvd0RlZmF1bHRQb3J0VG8ocmVzdGF0ZVNlY3VyaXR5R3JvdXApO1xuICAgIGZzLmdyYW50Um9vdEFjY2VzcyhyZXN0YXRlRmFyZ2F0ZVNlcnZpY2UudGFza0RlZmluaXRpb24udGFza1JvbGUuZ3JhbnRQcmluY2lwYWwpO1xuXG4gICAgY29uc3QgYWxiID0gbmV3IGVsYjIuQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIodGhpcywgXCJBbGJcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGludGVybmV0RmFjaW5nOiBwcm9wcy5sb2FkQmFsYW5jZXI/LmludGVybmV0RmFjaW5nLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcHVibGljQXBpQ2VydGlmaWNhdGUgPSBuZXcgYWNtLkNlcnRpZmljYXRlKHRoaXMsIFwiQ2VydGlmaWNhdGVcIiwge1xuICAgICAgZG9tYWluTmFtZTogcHJvcHMuZG5zTmFtZSxcbiAgICAgIHZhbGlkYXRpb246IGFjbS5DZXJ0aWZpY2F0ZVZhbGlkYXRpb24uZnJvbURucyhwcm9wcy5ob3N0ZWRab25lKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGluZ3Jlc3NMaXN0ZW5lciA9IGFsYi5hZGRMaXN0ZW5lcihcIkluZ3Jlc3NMaXN0ZW5lclwiLCB7XG4gICAgICBwb3J0OiBQVUJMSUNfSU5HUkVTU19QT1JULFxuICAgICAgcHJvdG9jb2w6IGVsYjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQUyxcbiAgICAgIGNlcnRpZmljYXRlczogW3B1YmxpY0FwaUNlcnRpZmljYXRlXSxcbiAgICAgIG9wZW46IHByb3BzLmxvYWRCYWxhbmNlcj8ub3BlbixcbiAgICB9KTtcbiAgICBpbmdyZXNzTGlzdGVuZXIuYWRkVGFyZ2V0cyhcIkZhcmdhdGVJbmdyZXNzVGFyZ2V0XCIsIHtcbiAgICAgIHRhcmdldHM6IFtcbiAgICAgICAgcmVzdGF0ZUZhcmdhdGVTZXJ2aWNlLmxvYWRCYWxhbmNlclRhcmdldCh7XG4gICAgICAgICAgY29udGFpbmVyTmFtZTogcmVzdGF0ZS5jb250YWluZXJOYW1lLFxuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IFJFU1RBVEVfSU5HUkVTU19QT1JULFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgICBwb3J0OiBSRVNUQVRFX0lOR1JFU1NfUE9SVCxcbiAgICAgIHByb3RvY29sOiBlbGIyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUCxcbiAgICAgIGhlYWx0aENoZWNrOiB7XG4gICAgICAgIHBhdGg6IFwiL3Jlc3RhdGUvaGVhbHRoXCIsXG4gICAgICAgIGludGVydmFsOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgaGVhbHRoeVRocmVzaG9sZENvdW50OiAzLFxuICAgICAgICB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudDogMyxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMiksXG4gICAgICB9LFxuICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTogY2RrLkR1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgfSk7XG4gICAgdGhpcy5pbmdyZXNzTGlzdGVuZXIgPSBpbmdyZXNzTGlzdGVuZXI7XG5cbiAgICBjb25zdCBhZG1pbkxpc3RlbmVyID0gYWxiLmFkZExpc3RlbmVyKFwiQWRtaW5MaXN0ZW5lclwiLCB7XG4gICAgICBwb3J0OiBQVUJMSUNfQURNSU5fUE9SVCxcbiAgICAgIHByb3RvY29sOiBlbGIyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUFMsXG4gICAgICBjZXJ0aWZpY2F0ZXM6IFtwdWJsaWNBcGlDZXJ0aWZpY2F0ZV0sXG4gICAgfSk7XG4gICAgYWRtaW5MaXN0ZW5lci5hZGRUYXJnZXRzKFwiRmFyZ2F0ZUFkbWluVGFyZ2V0XCIsIHtcbiAgICAgIHRhcmdldHM6IFtcbiAgICAgICAgcmVzdGF0ZUZhcmdhdGVTZXJ2aWNlLmxvYWRCYWxhbmNlclRhcmdldCh7XG4gICAgICAgICAgY29udGFpbmVyTmFtZTogcmVzdGF0ZS5jb250YWluZXJOYW1lLFxuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IFJFU1RBVEVfQURNSU5fUE9SVCxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgICAgcG9ydDogUkVTVEFURV9BRE1JTl9QT1JULFxuICAgICAgcHJvdG9jb2w6IGVsYjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQLFxuICAgICAgaGVhbHRoQ2hlY2s6IHtcbiAgICAgICAgcGF0aDogXCIvaGVhbHRoXCIsXG4gICAgICAgIGludGVydmFsOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgaGVhbHRoeVRocmVzaG9sZENvdW50OiAzLFxuICAgICAgICB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudDogMyxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMiksXG4gICAgICB9LFxuICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTogY2RrLkR1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgfSk7XG4gICAgdGhpcy5hZG1pbkxpc3RlbmVyID0gYWRtaW5MaXN0ZW5lcjtcblxuICAgIG5ldyByNTMuQVJlY29yZCh0aGlzLCBcIkFsYkFsaWFzXCIsIHtcbiAgICAgIHpvbmU6IHByb3BzLmhvc3RlZFpvbmUsXG4gICAgICByZWNvcmROYW1lOiBwcm9wcy5kbnNOYW1lLnNwbGl0KFwiLlwiKVswXSxcbiAgICAgIHRhcmdldDogcjUzLlJlY29yZFRhcmdldC5mcm9tQWxpYXMobmV3IHRhcmdldHMuTG9hZEJhbGFuY2VyVGFyZ2V0KGFsYikpLFxuICAgICAgLy8gb3RoZXIgQVJlY29yZCBjb25maWd1cmF0aW9uLi4uXG4gICAgfSk7XG5cbiAgICB0aGlzLmluZ3Jlc3NVcmwgPSBgaHR0cHM6Ly8ke3Byb3BzLmRuc05hbWV9JHtQVUJMSUNfSU5HUkVTU19QT1JUID09IDQ0MyA/IFwiXCIgOiBgOiR7UFVCTElDX0lOR1JFU1NfUE9SVH1gfWA7XG4gICAgdGhpcy5hZG1pblVybCA9IGBodHRwczovLyR7cHJvcHMuZG5zTmFtZX06JHtQVUJMSUNfQURNSU5fUE9SVH1gO1xuICB9XG59XG4iXX0=
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFyZ2F0ZS1yZXN0YXRlLWRlcGxveW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvcmVzdGF0ZS1jb25zdHJ1Y3RzL2ZhcmdhdGUtcmVzdGF0ZS1kZXBsb3ltZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7O0dBU0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILDJDQUF1QztBQUN2QyxpREFBbUM7QUFDbkMsd0VBQTBEO0FBQzFELDJEQUE2QztBQUM3Qyx5REFBMkM7QUFDM0MseURBQTJDO0FBQzNDLHlEQUEyQztBQUMzQyx5REFBMkM7QUFDM0MsNkVBQStEO0FBQy9ELDZEQUErQztBQUMvQyx5RUFBMkQ7QUFJM0QsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFDaEMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDL0IsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7QUFDbEMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDaEMsTUFBTSxxQkFBcUIsR0FBRyw4QkFBOEIsQ0FBQztBQUM3RCxNQUFNLDBCQUEwQixHQUFHLFFBQVEsQ0FBQztBQUM1QyxNQUFNLHVCQUF1QixHQUFHLFFBQVEsQ0FBQztBQW9FekM7Ozs7R0FJRztBQUNILE1BQWEsd0JBQXlCLFNBQVEsc0JBQVM7SUFXckQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFN0UsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxxQkFBcUIsQ0FBQztRQUNq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QyxVQUFVLEdBQUcsV0FBVyxLQUFLLENBQUMsT0FBTyxHQUFHLG1CQUFtQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztRQUMzRyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsS0FBSyxDQUFDLE9BQU8sSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQ2xFLENBQUM7Q0FDRjtBQW5ORCw0REFtTkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIzLTIwMjUgLSBSZXN0YXRlIFNvZnR3YXJlLCBJbmMuLCBSZXN0YXRlIEdtYkhcbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUmVzdGF0ZSBDREsgQ29uc3RydWN0IExpYnJhcnksXG4gKiB3aGljaCBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKlxuICogWW91IGNhbiBmaW5kIGEgY29weSBvZiB0aGUgbGljZW5zZSBpbiBmaWxlIExJQ0VOU0UgaW4gdGhlIHJvb3RcbiAqIGRpcmVjdG9yeSBvZiB0aGlzIHJlcG9zaXRvcnkgb3IgcGFja2FnZSwgb3IgYXRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXN0YXRlZGV2L3Nkay10eXBlc2NyaXB0L2Jsb2IvbWFpbi9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGFjbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlclwiO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcbmltcG9ydCAqIGFzIGVmcyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVmc1wiO1xuaW1wb3J0ICogYXMgZWxiMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjJcIjtcbmltcG9ydCAqIGFzIHI1MyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCAqIGFzIHRhcmdldHMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzLXRhcmdldHNcIjtcbmltcG9ydCB7IElSZXN0YXRlRW52aXJvbm1lbnQgfSBmcm9tIFwiLi9yZXN0YXRlLWVudmlyb25tZW50XCI7XG5pbXBvcnQgeyBUcmFjaW5nTW9kZSB9IGZyb20gXCIuL2RlcGxveW1lbnRzLWNvbW1vblwiO1xuXG5jb25zdCBQVUJMSUNfSU5HUkVTU19QT1JUID0gNDQzO1xuY29uc3QgUFVCTElDX0FETUlOX1BPUlQgPSA5MDcwO1xuY29uc3QgUkVTVEFURV9JTkdSRVNTX1BPUlQgPSA4MDgwO1xuY29uc3QgUkVTVEFURV9BRE1JTl9QT1JUID0gOTA3MDtcbmNvbnN0IFJFU1RBVEVfSU1BR0VfREVGQVVMVCA9IFwiZG9ja2VyLmlvL3Jlc3RhdGVkZXYvcmVzdGF0ZVwiO1xuY29uc3QgUkVTVEFURV9ET0NLRVJfREVGQVVMVF9UQUcgPSBcImxhdGVzdFwiO1xuY29uc3QgQURPVF9ET0NLRVJfREVGQVVMVF9UQUcgPSBcImxhdGVzdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RhdGVGYXJnYXRlUHJvcHMge1xuICAvKiogVGhlIFZQQyBpbiB3aGljaCB0byBsYXVuY2ggdGhlIFJlc3RhdGUgaG9zdC4gKi9cbiAgdnBjPzogZWMyLklWcGM7XG5cbiAgLyoqIExvZyBncm91cCBmb3IgUmVzdGF0ZSBzZXJ2aWNlIGxvZ3MuICovXG4gIGxvZ0dyb3VwPzogbG9ncy5Mb2dHcm91cDtcblxuICAvKiogVHJhY2luZyBtb2RlIGZvciBSZXN0YXRlIHNlcnZpY2VzLiBEZWZhdWx0cyB0byB7QGxpbmsgVHJhY2luZ01vZGUuRElTQUJMRUR9LiAqL1xuICB0cmFjaW5nPzogVHJhY2luZ01vZGU7XG5cbiAgLyoqIFByZWZpeCBmb3IgcmVzb3VyY2VzIGNyZWF0ZWQgYnkgdGhpcyBjb25zdHJ1Y3QgdGhhdCByZXF1aXJlIHVuaXF1ZSBuYW1lcy4gKi9cbiAgcHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKiBFQ1MgY2x1c3RlciBuYW1lLiAqL1xuICBjbHVzdGVyTmFtZT86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgbmFtZS4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIHJlc3RhdGVJbWFnZT86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgdGFnLiBEZWZhdWx0cyB0byBgbGF0ZXN0YC4gKi9cbiAgcmVzdGF0ZVRhZz86IHN0cmluZztcblxuICAvKiogQW1hem9uIERpc3RybyBmb3IgT3BlbiBUZWxlbWV0cnkgRG9ja2VyIGltYWdlIHRhZy4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIGFkb3RUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IGZvciBSZXN0YXRlIGNvbnRhaW5lci4gVXNlIGl0IHRvIGNvbmZpZ3VyZSBsb2dnaW5nIGFuZCBvdGhlciBwcm9jZXNzLWxldmVsIHNldHRpbmdzLlxuICAgKi9cbiAgZW52aXJvbm1lbnQ/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBSZXN0YXRlIGNvbnRhaW5lciBleHRyYSBhcmd1bWVudHMuXG4gICAqL1xuICBjb21tYW5kPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBmdWxsIG5hbWUgZm9yIHRoZSBwdWJsaWMgZW5kcG9pbnQuXG4gICAqL1xuICBkbnNOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEROUyB6b25lIGluIHdoaWNoIHRvIGNyZWF0ZSB0aGUgcHVibGljIGVuZHBvaW50LlxuICAgKi9cbiAgaG9zdGVkWm9uZTogcjUzLklIb3N0ZWRab25lO1xuXG4gIC8qKlxuICAgKiBSZW1vdmFsIHBvbGljeSBmb3IgbG9uZy1saXZlZCByZXNvdXJjZXMgKHN0b3JhZ2UsIGxvZ3MpLiBEZWZhdWx0OiBgY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWWAuXG4gICAqL1xuICByZW1vdmFsUG9saWN5PzogY2RrLlJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZXIgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIGxvYWRCYWxhbmNlcj86IHtcbiAgICAvKiogQHNlZSBCYXNlTG9hZEJhbGFuY2VyUHJvcHMuaW50ZXJuZXRGYWNpbmcgKi9cbiAgICBpbnRlcm5ldEZhY2luZz86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJZiB5b3Ugc2V0IHRoaXMgdG8gZmFsc2UsIHlvdSBjYW4gY3VzdG9taXplIHRoZSBhY2Nlc3MgdG8gdGhlIHBhaXIgb2YgQUxCIGxpc3RlbmVycyB2aWFcbiAgICAgKiB7QGxpbmsgRmFyZ2F0ZVJlc3RhdGVEZXBsb3ltZW50LmluZ3Jlc3NMaXN0ZW5lcn0gYW5kIHtAbGluayBGYXJnYXRlUmVzdGF0ZURlcGxveW1lbnQuYWRtaW5MaXN0ZW5lcn0uXG4gICAgICpcbiAgICAgKiBAc2VlIEJhc2VBcHBsaWNhdGlvbkxpc3RlbmVyUHJvcHMub3BlbiAqL1xuICAgIG9wZW4/OiBib29sZWFuO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBSZXN0YXRlIHNlcnZpY2UgZGVwbG95bWVudCBydW5uaW5nIGFzIGEgRmFyZ2F0ZSB0YXNrIGFuZCBiYWNrZWQgYnkgRUZTLlxuICpcbiAqIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBjb25zdHJ1Y3QgaXMgc3RpbGwgZXhwZXJpbWVudGFsISBVc2Ugd2l0aCBjYXV0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgRmFyZ2F0ZVJlc3RhdGVEZXBsb3ltZW50IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVJlc3RhdGVFbnZpcm9ubWVudCB7XG4gIHJlYWRvbmx5IGludm9rZXJSb2xlOiBpYW0uSVJvbGU7XG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG5cbiAgcmVhZG9ubHkgaW5ncmVzc1VybDogc3RyaW5nO1xuICByZWFkb25seSBhZG1pblVybDogc3RyaW5nO1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwOiBlYzIuU2VjdXJpdHlHcm91cDtcbiAgcmVhZG9ubHkgZGF0YVN0b3JlOiBlZnMuRmlsZVN5c3RlbTtcbiAgcmVhZG9ubHkgaW5ncmVzc0xpc3RlbmVyOiBlbGIyLkFwcGxpY2F0aW9uTGlzdGVuZXI7XG4gIHJlYWRvbmx5IGFkbWluTGlzdGVuZXI6IGVsYjIuQXBwbGljYXRpb25MaXN0ZW5lcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmVzdGF0ZUZhcmdhdGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnZwYyA9IHByb3BzLnZwYyA/PyBlYzIuVnBjLmZyb21Mb29rdXAodGhpcywgXCJWcGNcIiwgeyBpc0RlZmF1bHQ6IHRydWUgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlSW1hZ2UgPSBwcm9wcy5yZXN0YXRlSW1hZ2UgPz8gUkVTVEFURV9JTUFHRV9ERUZBVUxUO1xuICAgIGNvbnN0IHJlc3RhdGVUYWcgPSBwcm9wcy5yZXN0YXRlVGFnID8/IFJFU1RBVEVfRE9DS0VSX0RFRkFVTFRfVEFHO1xuICAgIGNvbnN0IGFkb3RUYWcgPSBwcm9wcy5hZG90VGFnID8/IEFET1RfRE9DS0VSX0RFRkFVTFRfVEFHOyAvLyBUT0RPOiBhZGQgWC1SYXkgc3VwcG9ydCBsaWtlIHdlIGhhdmUgZm9yIEVDMlxuXG4gICAgY29uc3QgZnMgPSBuZXcgZWZzLkZpbGVTeXN0ZW0odGhpcywgXCJEYXRhU3RvcmVcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGxpZmVjeWNsZVBvbGljeTogZWZzLkxpZmVjeWNsZVBvbGljeS5BRlRFUl8zMF9EQVlTLFxuICAgICAgcGVyZm9ybWFuY2VNb2RlOiBlZnMuUGVyZm9ybWFuY2VNb2RlLkdFTkVSQUxfUFVSUE9TRSxcbiAgICAgIHRocm91Z2hwdXRNb2RlOiBlZnMuVGhyb3VnaHB1dE1vZGUuQlVSU1RJTkcsXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgfSk7XG4gICAgZnMuYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgc2lkOiBcIkFsbG93RWZzTW91bnRcIixcbiAgICAgICAgYWN0aW9uczogW1wiZWxhc3RpY2ZpbGVzeXN0ZW06Q2xpZW50TW91bnRcIl0sXG4gICAgICAgIC8vIFJlc3RyaWN0aW5nIHRvIHRoZSBFQ1MgZXhlY3V0aW9uIHJvbGUgZG9lcyBub3Qgd29yazsgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIgLSBFRlMgYWNjZXNzIGlzIHNlY3VyZWQgYnkgYSBzZWN1cml0eSBncm91cFxuICAgICAgICBwcmluY2lwYWxzOiBbbmV3IGlhbS5BbnlQcmluY2lwYWwoKV0sXG4gICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICBCb29sOiB7XG4gICAgICAgICAgICBcImVsYXN0aWNmaWxlc3lzdGVtOkFjY2Vzc2VkVmlhTW91bnRUYXJnZXRcIjogXCJ0cnVlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgdGhpcy5kYXRhU3RvcmUgPSBmcztcblxuICAgIGNvbnN0IGNsdXN0ZXIgPSBuZXcgZWNzLkNsdXN0ZXIodGhpcywgXCJDbHVzdGVyXCIsIHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICBjbHVzdGVyTmFtZTogcHJvcHMuY2x1c3Rlck5hbWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlVGFzayA9IG5ldyBlY3MuRmFyZ2F0ZVRhc2tEZWZpbml0aW9uKHRoaXMsIFwiUmVzdGF0ZVRhc2tcIiwge1xuICAgICAgY3B1OiA0MDk2LFxuICAgICAgbWVtb3J5TGltaXRNaUI6IDgxOTIsXG4gICAgICBydW50aW1lUGxhdGZvcm06IHtcbiAgICAgICAgY3B1QXJjaGl0ZWN0dXJlOiBlY3MuQ3B1QXJjaGl0ZWN0dXJlLkFSTTY0LFxuICAgICAgICBvcGVyYXRpbmdTeXN0ZW1GYW1pbHk6IGVjcy5PcGVyYXRpbmdTeXN0ZW1GYW1pbHkuTElOVVgsXG4gICAgICB9LFxuICAgICAgdm9sdW1lczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJyZXN0YXRlU3RvcmVcIixcbiAgICAgICAgICBlZnNWb2x1bWVDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICBmaWxlU3lzdGVtSWQ6IGZzLmZpbGVTeXN0ZW1JZCxcbiAgICAgICAgICAgIGF1dGhvcml6YXRpb25Db25maWc6IHt9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gVE9ETzogU3RhcnQgYW4gQURPVCBjb250YWluZXIgYW5kIGhvb2sgaXQgdXAgdG8gUmVzdGF0ZSBhbmQgQVdTIFgtUmF5IG9yIGFub3RoZXIgT1RlbCBzaW5rXG4gICAgLy8gaWYgKHByb3BzLnRyYWNpbmcgPT09IFRyYWNpbmdNb2RlLkFXU19YUkFZKSB7XG4gICAgLy8gICByZXN0YXRlVGFzay50YXNrUm9sZS5hZGRNYW5hZ2VkUG9saWN5KGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcIkFXU1hyYXlXcml0ZU9ubHlBY2Nlc3NcIikpO1xuICAgIC8vIH1cblxuICAgIG5ldyBpYW0uUG9saWN5KHRoaXMsIFwiVGFza1BvbGljeVwiLCB7XG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBzaWQ6IFwiQWxsb3dBc3N1bWVBbnlSb2xlXCIsXG4gICAgICAgICAgYWN0aW9uczogW1wic3RzOkFzc3VtZVJvbGVcIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLCAvLyB3ZSBkb24ndCBrbm93IHVwZnJvbnQgd2hhdCBpbnZva2VyIHJvbGVzIHdlIG1heSBiZSBhc2tlZCB0byBhc3N1bWUgYXQgcnVudGltZVxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSkuYXR0YWNoVG9Sb2xlKHJlc3RhdGVUYXNrLnRhc2tSb2xlKTtcblxuICAgIGNvbnN0IGludm9rZXJSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiSW52b2tlclJvbGVcIiwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLkFyblByaW5jaXBhbChyZXN0YXRlVGFzay50YXNrUm9sZS5yb2xlQXJuKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkFzc3VtZWQgYnkgUmVzdGF0ZSBkZXBsb3ltZW50IHRvIGludm9rZSBMYW1iZGEtYmFzZWQgc2VydmljZXNcIixcbiAgICB9KTtcbiAgICBpbnZva2VyUm9sZS5ncmFudEFzc3VtZVJvbGUocmVzdGF0ZVRhc2sudGFza1JvbGUpO1xuICAgIHRoaXMuaW52b2tlclJvbGUgPSBpbnZva2VyUm9sZTtcblxuICAgIGNvbnN0IGxvZ0dyb3VwID1cbiAgICAgIHByb3BzLmxvZ0dyb3VwID8/XG4gICAgICBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCBcIkxvZ3NcIiwge1xuICAgICAgICBsb2dHcm91cE5hbWU6IGAvcmVzdGF0ZS8ke2lkfWAsXG4gICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9NT05USCxcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeSA/PyBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlID0gcmVzdGF0ZVRhc2suYWRkQ29udGFpbmVyKFwiUmVzdGF0ZVwiLCB7XG4gICAgICBjb250YWluZXJOYW1lOiBcInJlc3RhdGUtcnVudGltZVwiLFxuICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tUmVnaXN0cnkoYCR7cmVzdGF0ZUltYWdlfToke3Jlc3RhdGVUYWd9YCksXG4gICAgICBwb3J0TWFwcGluZ3M6IFt7IGNvbnRhaW5lclBvcnQ6IFJFU1RBVEVfSU5HUkVTU19QT1JUIH0sIHsgY29udGFpbmVyUG9ydDogUkVTVEFURV9BRE1JTl9QT1JUIH1dLFxuICAgICAgbG9nZ2luZzogZWNzLkxvZ0RyaXZlci5hd3NMb2dzKHtcbiAgICAgICAgbG9nR3JvdXAsXG4gICAgICAgIHN0cmVhbVByZWZpeDogXCJyZXN0YXRlXCIsXG4gICAgICB9KSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFJFU1RBVEVfTE9HX0ZPUk1BVDogXCJqc29uXCIsXG4gICAgICAgIFJFU1RBVEVfTk9ERV9OQU1FOiBcImZhcmdhdGVcIixcbiAgICAgIH0sXG4gICAgICBjb21tYW5kOiBwcm9wcy5jb21tYW5kLFxuICAgICAgc3RhcnRUaW1lb3V0OiBjZGsuRHVyYXRpb24uc2Vjb25kcygyMCksXG4gICAgICBzdG9wVGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMjApLFxuICAgIH0pO1xuICAgIHJlc3RhdGUuYWRkTW91bnRQb2ludHMoe1xuICAgICAgY29udGFpbmVyUGF0aDogXCIvcmVzdGF0ZS1kYXRhXCIsXG4gICAgICByZWFkT25seTogZmFsc2UsXG4gICAgICBzb3VyY2VWb2x1bWU6IFwicmVzdGF0ZVN0b3JlXCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlU2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBcIlNlY3VyaXR5R3JvdXBcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5zZWN1cml0eUdyb3VwID0gcmVzdGF0ZVNlY3VyaXR5R3JvdXA7XG5cbiAgICBjb25zdCByZXN0YXRlRmFyZ2F0ZVNlcnZpY2UgPSBuZXcgZWNzLkZhcmdhdGVTZXJ2aWNlKHRoaXMsIFwiU2VydmljZVwiLCB7XG4gICAgICBjbHVzdGVyLFxuICAgICAgdGFza0RlZmluaXRpb246IHJlc3RhdGVUYXNrLFxuICAgICAgYXNzaWduUHVibGljSXA6IHRydWUsXG4gICAgICBjaXJjdWl0QnJlYWtlcjoge1xuICAgICAgICBlbmFibGU6IHRydWUsXG4gICAgICAgIHJvbGxiYWNrOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiAwLCAvLyBhbGxvdyBzY2FsZSBkb3duIHRvIHplcm8gZHVyaW5nIGRlcGxveW1lbnRzIChyZXF1aXJlZCBmb3IgYXQtbW9zdC0xIG1heCBzZXR0aW5nKVxuICAgICAgbWF4SGVhbHRoeVBlcmNlbnQ6IDEwMCwgLy8gZG9uJ3Qgc3RhcnQgbW9yZSB0aGFuIG9uZSBjb3B5XG4gICAgICBzZWN1cml0eUdyb3VwczogW3Jlc3RhdGVTZWN1cml0eUdyb3VwXSxcbiAgICB9KTtcblxuICAgIGZzLmNvbm5lY3Rpb25zLmFsbG93RGVmYXVsdFBvcnRGcm9tKHJlc3RhdGVTZWN1cml0eUdyb3VwKTtcbiAgICBmcy5jb25uZWN0aW9ucy5hbGxvd0RlZmF1bHRQb3J0VG8ocmVzdGF0ZVNlY3VyaXR5R3JvdXApO1xuICAgIGZzLmdyYW50Um9vdEFjY2VzcyhyZXN0YXRlRmFyZ2F0ZVNlcnZpY2UudGFza0RlZmluaXRpb24udGFza1JvbGUuZ3JhbnRQcmluY2lwYWwpO1xuXG4gICAgY29uc3QgYWxiID0gbmV3IGVsYjIuQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIodGhpcywgXCJBbGJcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGludGVybmV0RmFjaW5nOiBwcm9wcy5sb2FkQmFsYW5jZXI/LmludGVybmV0RmFjaW5nLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcHVibGljQXBpQ2VydGlmaWNhdGUgPSBuZXcgYWNtLkNlcnRpZmljYXRlKHRoaXMsIFwiQ2VydGlmaWNhdGVcIiwge1xuICAgICAgZG9tYWluTmFtZTogcHJvcHMuZG5zTmFtZSxcbiAgICAgIHZhbGlkYXRpb246IGFjbS5DZXJ0aWZpY2F0ZVZhbGlkYXRpb24uZnJvbURucyhwcm9wcy5ob3N0ZWRab25lKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGluZ3Jlc3NMaXN0ZW5lciA9IGFsYi5hZGRMaXN0ZW5lcihcIkluZ3Jlc3NMaXN0ZW5lclwiLCB7XG4gICAgICBwb3J0OiBQVUJMSUNfSU5HUkVTU19QT1JULFxuICAgICAgcHJvdG9jb2w6IGVsYjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQUyxcbiAgICAgIGNlcnRpZmljYXRlczogW3B1YmxpY0FwaUNlcnRpZmljYXRlXSxcbiAgICAgIG9wZW46IHByb3BzLmxvYWRCYWxhbmNlcj8ub3BlbixcbiAgICB9KTtcbiAgICBpbmdyZXNzTGlzdGVuZXIuYWRkVGFyZ2V0cyhcIkZhcmdhdGVJbmdyZXNzVGFyZ2V0XCIsIHtcbiAgICAgIHRhcmdldHM6IFtcbiAgICAgICAgcmVzdGF0ZUZhcmdhdGVTZXJ2aWNlLmxvYWRCYWxhbmNlclRhcmdldCh7XG4gICAgICAgICAgY29udGFpbmVyTmFtZTogcmVzdGF0ZS5jb250YWluZXJOYW1lLFxuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IFJFU1RBVEVfSU5HUkVTU19QT1JULFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgICBwb3J0OiBSRVNUQVRFX0lOR1JFU1NfUE9SVCxcbiAgICAgIHByb3RvY29sOiBlbGIyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUCxcbiAgICAgIGhlYWx0aENoZWNrOiB7XG4gICAgICAgIHBhdGg6IFwiL3Jlc3RhdGUvaGVhbHRoXCIsXG4gICAgICAgIGludGVydmFsOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgaGVhbHRoeVRocmVzaG9sZENvdW50OiAzLFxuICAgICAgICB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudDogMyxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMiksXG4gICAgICB9LFxuICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTogY2RrLkR1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgfSk7XG4gICAgdGhpcy5pbmdyZXNzTGlzdGVuZXIgPSBpbmdyZXNzTGlzdGVuZXI7XG5cbiAgICBjb25zdCBhZG1pbkxpc3RlbmVyID0gYWxiLmFkZExpc3RlbmVyKFwiQWRtaW5MaXN0ZW5lclwiLCB7XG4gICAgICBwb3J0OiBQVUJMSUNfQURNSU5fUE9SVCxcbiAgICAgIHByb3RvY29sOiBlbGIyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUFMsXG4gICAgICBjZXJ0aWZpY2F0ZXM6IFtwdWJsaWNBcGlDZXJ0aWZpY2F0ZV0sXG4gICAgfSk7XG4gICAgYWRtaW5MaXN0ZW5lci5hZGRUYXJnZXRzKFwiRmFyZ2F0ZUFkbWluVGFyZ2V0XCIsIHtcbiAgICAgIHRhcmdldHM6IFtcbiAgICAgICAgcmVzdGF0ZUZhcmdhdGVTZXJ2aWNlLmxvYWRCYWxhbmNlclRhcmdldCh7XG4gICAgICAgICAgY29udGFpbmVyTmFtZTogcmVzdGF0ZS5jb250YWluZXJOYW1lLFxuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IFJFU1RBVEVfQURNSU5fUE9SVCxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgICAgcG9ydDogUkVTVEFURV9BRE1JTl9QT1JULFxuICAgICAgcHJvdG9jb2w6IGVsYjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQLFxuICAgICAgaGVhbHRoQ2hlY2s6IHtcbiAgICAgICAgcGF0aDogXCIvaGVhbHRoXCIsXG4gICAgICAgIGludGVydmFsOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgaGVhbHRoeVRocmVzaG9sZENvdW50OiAzLFxuICAgICAgICB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudDogMyxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMiksXG4gICAgICB9LFxuICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTogY2RrLkR1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgfSk7XG4gICAgdGhpcy5hZG1pbkxpc3RlbmVyID0gYWRtaW5MaXN0ZW5lcjtcblxuICAgIG5ldyByNTMuQVJlY29yZCh0aGlzLCBcIkFsYkFsaWFzXCIsIHtcbiAgICAgIHpvbmU6IHByb3BzLmhvc3RlZFpvbmUsXG4gICAgICByZWNvcmROYW1lOiBwcm9wcy5kbnNOYW1lLnNwbGl0KFwiLlwiKVswXSxcbiAgICAgIHRhcmdldDogcjUzLlJlY29yZFRhcmdldC5mcm9tQWxpYXMobmV3IHRhcmdldHMuTG9hZEJhbGFuY2VyVGFyZ2V0KGFsYikpLFxuICAgICAgLy8gb3RoZXIgQVJlY29yZCBjb25maWd1cmF0aW9uLi4uXG4gICAgfSk7XG5cbiAgICB0aGlzLmluZ3Jlc3NVcmwgPSBgaHR0cHM6Ly8ke3Byb3BzLmRuc05hbWV9JHtQVUJMSUNfSU5HUkVTU19QT1JUID09IDQ0MyA/IFwiXCIgOiBgOiR7UFVCTElDX0lOR1JFU1NfUE9SVH1gfWA7XG4gICAgdGhpcy5hZG1pblVybCA9IGBodHRwczovLyR7cHJvcHMuZG5zTmFtZX06JHtQVUJMSUNfQURNSU5fUE9SVH1gO1xuICB9XG59XG4iXX0=
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  /*
3
- * Copyright (c) 2023 - Restate Software, Inc., Restate GmbH
3
+ * Copyright (c) 2023-2025 - Restate Software, Inc., Restate GmbH
4
4
  *
5
- * This file is part of the Restate SDK for Node.js/TypeScript,
5
+ * This file is part of the Restate CDK Construct Library,
6
6
  * which is released under the MIT license.
7
7
  *
8
8
  * You can find a copy of the license in file LICENSE in the root
@@ -30,4 +30,4 @@ __exportStar(require("./restate-environment"), exports);
30
30
  __exportStar(require("./restate-cloud-environment"), exports);
31
31
  __exportStar(require("./deployments-common"), exports);
32
32
  __exportStar(require("./single-node-restate-deployment"), exports);
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvcmVzdGF0ZS1jb25zdHJ1Y3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7O0dBU0c7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxxREFBbUM7QUFDbkMsK0RBQTZDO0FBQzdDLHdEQUFzQztBQUN0Qyw4REFBNEM7QUFDNUMsdURBQXFDO0FBQ3JDLG1FQUFpRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjMgLSBSZXN0YXRlIFNvZnR3YXJlLCBJbmMuLCBSZXN0YXRlIEdtYkhcbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUmVzdGF0ZSBTREsgZm9yIE5vZGUuanMvVHlwZVNjcmlwdCxcbiAqIHdoaWNoIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqXG4gKiBZb3UgY2FuIGZpbmQgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGluIGZpbGUgTElDRU5TRSBpbiB0aGUgcm9vdFxuICogZGlyZWN0b3J5IG9mIHRoaXMgcmVwb3NpdG9yeSBvciBwYWNrYWdlLCBvciBhdFxuICogaHR0cHM6Ly9naXRodWIuY29tL3Jlc3RhdGVkZXYvc2RrLXR5cGVzY3JpcHQvYmxvYi9tYWluL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9zZXJ2aWNlLWRlcGxveWVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mYXJnYXRlLXJlc3RhdGUtZGVwbG95bWVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVzdGF0ZS1lbnZpcm9ubWVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVzdGF0ZS1jbG91ZC1lbnZpcm9ubWVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVwbG95bWVudHMtY29tbW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zaW5nbGUtbm9kZS1yZXN0YXRlLWRlcGxveW1lbnRcIjtcbiJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvcmVzdGF0ZS1jb25zdHJ1Y3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7O0dBU0c7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxxREFBbUM7QUFDbkMsK0RBQTZDO0FBQzdDLHdEQUFzQztBQUN0Qyw4REFBNEM7QUFDNUMsdURBQXFDO0FBQ3JDLG1FQUFpRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjMtMjAyNSAtIFJlc3RhdGUgU29mdHdhcmUsIEluYy4sIFJlc3RhdGUgR21iSFxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBSZXN0YXRlIENESyBDb25zdHJ1Y3QgTGlicmFyeSxcbiAqIHdoaWNoIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqXG4gKiBZb3UgY2FuIGZpbmQgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGluIGZpbGUgTElDRU5TRSBpbiB0aGUgcm9vdFxuICogZGlyZWN0b3J5IG9mIHRoaXMgcmVwb3NpdG9yeSBvciBwYWNrYWdlLCBvciBhdFxuICogaHR0cHM6Ly9naXRodWIuY29tL3Jlc3RhdGVkZXYvc2RrLXR5cGVzY3JpcHQvYmxvYi9tYWluL0xJQ0VOU0VcbiAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9zZXJ2aWNlLWRlcGxveWVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mYXJnYXRlLXJlc3RhdGUtZGVwbG95bWVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVzdGF0ZS1lbnZpcm9ubWVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVzdGF0ZS1jbG91ZC1lbnZpcm9ubWVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVwbG95bWVudHMtY29tbW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zaW5nbGUtbm9kZS1yZXN0YXRlLWRlcGxveW1lbnRcIjtcbiJdfQ==
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  /*
3
- * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH
3
+ * Copyright (c) 2023-2025 - Restate Software, Inc., Restate GmbH
4
4
  *
5
- * This file is part of the Restate SDK for Node.js/TypeScript,
5
+ * This file is part of the Restate CDK Construct Library,
6
6
  * which is released under the MIT license.
7
7
  *
8
8
  * You can find a copy of the license in file LICENSE in the root
@@ -246,4 +246,4 @@ async function createAuthHeader(props) {
246
246
  async function sleep(millis) {
247
247
  return new Promise((resolve) => setTimeout(resolve, millis));
248
248
  }
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcmVzdGF0ZS1jb25zdHJ1Y3RzL3JlZ2lzdGVyLXNlcnZpY2UtaGFuZGxlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJSCw0REFBK0I7QUFDL0IsNEVBQThGO0FBQzlGLG1DQUFtQztBQUNuQyxrREFBb0M7QUFDcEMsZ0RBQWtDO0FBNENsQyxNQUFNLHlCQUF5QixHQUFHLENBQUMsQ0FBQyxDQUFDLDJGQUEyRjtBQUNoSSxNQUFNLHlCQUF5QixHQUFHLENBQUMsQ0FBQztBQUVwQyxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQztBQUN2QyxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUM7QUFFakM7OztHQUdHO0FBQ0ksTUFBTSxPQUFPLEdBQXFELEtBQUssV0FBVyxLQUFLO0lBQzVGLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRXZCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxrQkFBNEMsQ0FBQztJQUVqRSxNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDL0IsU0FBUyxFQUFFLElBQUk7S0FDaEIsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxVQUFVLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2pDLFNBQVMsRUFBRSxJQUFJO1FBQ2Ysa0JBQWtCLEVBQUUsS0FBSyxDQUFDLFFBQVEsS0FBSyxNQUFNO0tBQzlDLENBQUMsQ0FBQztJQUNILE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBUSxFQUFFLEVBQUU7UUFDakMsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzVCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxpSEFBaUg7UUFDakgsMkdBQTJHO1FBQzNHLCtHQUErRztRQUMvRyx1QkFBdUI7UUFFdkIsb0VBQW9FO1FBQ3BFLDJEQUEyRDtRQUMzRCxxRUFBcUU7UUFDckUsOENBQThDO1FBQzlDLG1HQUFtRztRQUNuRyxvRkFBb0Y7UUFDcEYsbUdBQW1HO1FBQ25HLGlDQUFpQztRQUNqQyx3QkFBd0I7UUFDeEIsNEJBQTRCO1FBQzVCLHVEQUF1RDtRQUN2RCxFQUFFO1FBQ0YsdUVBQXVFO1FBQ3ZFLHdDQUF3QztRQUN4QyxzSEFBc0g7UUFDdEgsTUFBTTtRQUNOLElBQUk7UUFFSixPQUFPLENBQUMsSUFBSSxDQUFDLDhGQUE4RixDQUFDLENBQUM7UUFDN0csT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxNQUFNLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWpELElBQUksT0FBTyxDQUFDO0lBRVosTUFBTSxjQUFjLEdBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxTQUFTLENBQUM7SUFFbEQsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDbEUsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLE9BQU8sS0FBSyxDQUFDLENBQUM7UUFDMUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUN6QyxNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUssQ0FBQyxDQUFDO1FBQ2hGLElBQUksY0FBYyxHQUFHLFNBQVMsQ0FBQztRQUMvQixJQUFJLFlBQVksR0FBRyxTQUFTLENBQUM7UUFDN0IsSUFBSSxDQUFDO1lBQ0gsY0FBYyxHQUFHLE1BQU0sSUFBQSxvQkFBSyxFQUFDLGNBQWMsRUFBRTtnQkFDM0MsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO2dCQUN6QixPQUFPLEVBQUUsVUFBVTtnQkFDbkIsS0FBSyxFQUFFLGFBQWE7YUFDckIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1lBRW5ELE9BQU8sQ0FBQyxHQUFHLENBQUMsbUNBQW1DLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3hFLElBQUksY0FBYyxDQUFDLE1BQU0sSUFBSSxHQUFHLElBQUksY0FBYyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDaEUsTUFBTTtZQUNSLENBQUM7WUFDRCxPQUFPLENBQUMsS0FBSyxDQUNYLGdDQUFnQyxjQUFjLENBQUMsVUFBVSxLQUFLLGNBQWMsQ0FBQyxNQUFNLGFBQWEsT0FBTyxHQUFHLENBQzNHLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLFlBQVksR0FBSSxDQUFXLEVBQUUsT0FBTyxDQUFDO1lBQ3JDLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLFlBQVksY0FBYyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7UUFFRCxJQUFJLE9BQU8sSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsNENBQTRDLE9BQU8sWUFBWSxDQUFDLENBQUM7WUFDL0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksR0FBRyxjQUFjLEVBQUUsVUFBVSxLQUFLLGNBQWMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQy9GLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxDQUFDO1FBRWIsTUFBTSxjQUFjLEdBQUcsSUFBQSxrQkFBUyxFQUFDLElBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLEdBQUcsSUFBSyxDQUFDLENBQUMsZ0NBQWdDO1FBQ2hHLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLGNBQWMsUUFBUSxDQUFDLENBQUM7UUFDdEQsTUFBTSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0lBQy9ELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN6QyxHQUFHLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtRQUMzQixlQUFlLEVBQUUsS0FBSyxDQUFDLGFBQWE7S0FDckMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxhQUFhLENBQUM7SUFDbEIsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLGNBQWMsS0FBSyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7SUFFakYsdUJBQXVCLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUM7WUFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxPQUFPLEtBQUssQ0FBQyxDQUFDO1lBQzFELE1BQU0sVUFBVSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDekMsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFNLENBQUMsQ0FBQztZQUNsRixNQUFNLDBCQUEwQixHQUFHLE1BQU0sSUFBQSxvQkFBSyxFQUFDLGNBQWMsRUFBRTtnQkFDN0QsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO2dCQUN6QixNQUFNLEVBQUUsTUFBTTtnQkFDZCxJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixPQUFPLEVBQUU7b0JBQ1AsY0FBYyxFQUFFLGtCQUFrQjtvQkFDbEMsR0FBRyxVQUFVO2lCQUNkO2dCQUNELEtBQUssRUFBRSxhQUFhO2FBQ3JCLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztZQUVwRCxJQUFJLDBCQUEwQixDQUFDLE1BQU0sSUFBSSxHQUFHLElBQUksMEJBQTBCLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO2dCQUN4RixNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sMEJBQTBCLENBQUMsSUFBSSxFQUFFLENBQStCLENBQUM7Z0JBRXpGLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO29CQUN0RixhQUFhO3dCQUNYLG9HQUFvRzs0QkFDcEcsYUFBYSxLQUFLLENBQUMsV0FBVyxnQkFBZ0I7NEJBQzlDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzs0QkFDcEQsR0FBRyxDQUFDO29CQUVOLE9BQU8sR0FBRyx5QkFBeUIsQ0FBQyxDQUFDLG1CQUFtQjtvQkFDeEQsTUFBTTtnQkFDUixDQUFDO2dCQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMscUNBQXFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFFdEYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLE9BQU8sQ0FBQztnQkFFeEQsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLENBQUMsUUFBUSxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUM5QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7d0JBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxPQUFPLENBQUMsSUFBSSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO3dCQUM5RSxTQUFTO29CQUNYLENBQUM7b0JBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsT0FBTyxDQUFDLElBQUksT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQztvQkFDeEYsTUFBTSxVQUFVLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDekMsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFNLENBQUMsQ0FBQztvQkFDakYsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFBLG9CQUFLLEVBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLGFBQWEsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUU7d0JBQ3RGLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTt3QkFDekIsTUFBTSxFQUFFLE9BQU87d0JBQ2YsT0FBTyxFQUFFOzRCQUNQLGNBQWMsRUFBRSxrQkFBa0I7NEJBQ2xDLEdBQUcsVUFBVTt5QkFDZDt3QkFDRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQzt3QkFDMUMsS0FBSyxFQUFFLGFBQWE7cUJBQ3JCLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztvQkFFbkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7b0JBQ2hFLElBQUksYUFBYSxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQzt3QkFDaEMsYUFBYSxHQUFHLHNCQUFzQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsWUFBWSxhQUFhLENBQUMsVUFBVSxLQUFLLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQzt3QkFDM0ksTUFBTSx1QkFBdUIsQ0FBQyxDQUFDLHFFQUFxRTtvQkFDdEcsQ0FBQztvQkFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztnQkFDcEYsQ0FBQztnQkFFRCxPQUFPLENBQUMsbUJBQW1CO1lBQzdCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLFNBQVMsR0FBRyxNQUFNLDBCQUEwQixDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMxRCxhQUFhLEdBQUcsd0JBQXdCLDBCQUEwQixDQUFDLE1BQU0sTUFBTSxTQUFTLEVBQUUsQ0FBQztnQkFDM0YsT0FBTyxDQUFDLEdBQUcsQ0FBQztvQkFDVixPQUFPLEVBQUUsa0NBQWtDO29CQUMzQyxJQUFJLEVBQUUsMEJBQTBCLENBQUMsTUFBTTtvQkFDdkMsSUFBSSxFQUFFLFNBQVM7aUJBQ2hCLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXlCLENBQVcsRUFBRSxPQUFPLGFBQWEsT0FBTyxHQUFHLENBQUMsQ0FBQztZQUNwRixhQUFhLEdBQUksQ0FBVyxFQUFFLE9BQU8sQ0FBQztRQUN4QyxDQUFDO1FBRUQsSUFBSSxPQUFPLElBQUkseUJBQXlCLEVBQUUsQ0FBQztZQUN6QyxhQUFhLEdBQUcsbUJBQW1CLE9BQU8sMEJBQTBCLGFBQWEsRUFBRSxDQUFDO1lBQ3BGLE1BQU07UUFDUixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsQ0FBQztRQUNiLE1BQU0sY0FBYyxHQUFHLElBQUEsa0JBQVMsRUFBQyxJQUFLLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxHQUFHLElBQUssQ0FBQyxDQUFDLGtCQUFrQjtRQUNsRixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixjQUFjLFFBQVEsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxJQUFJLG1FQUFtRSxDQUFDLENBQUM7QUFDeEcsQ0FBQyxDQUFDO0FBaE1XLFFBQUEsT0FBTyxXQWdNbEI7QUFFRixLQUFLLFVBQVUsZ0JBQWdCLENBQUMsS0FBNkI7SUFDM0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzlCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsaURBQWlELEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDekYsTUFBTSxHQUFHLEdBQUcsSUFBSSw2Q0FBb0IsRUFBRSxDQUFDO0lBQ3ZDLE1BQU0sUUFBUSxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FDN0IsSUFBSSw4Q0FBcUIsQ0FBQztRQUN4QixRQUFRLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtLQUNuQyxDQUFDLENBQ0gsQ0FBQztJQUVGLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLFFBQVEsQ0FBQyxJQUFJLGFBQWEsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDOUYsT0FBTztRQUNMLGFBQWEsRUFBRSxVQUFVLFFBQVEsQ0FBQyxZQUFZLEVBQUU7S0FDakQsQ0FBQztBQUNKLENBQUM7QUFFRCxLQUFLLFVBQVUsS0FBSyxDQUFDLE1BQWM7SUFDakMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQy9ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIzLTIwMjQgLSBSZXN0YXRlIFNvZnR3YXJlLCBJbmMuLCBSZXN0YXRlIEdtYkhcbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUmVzdGF0ZSBTREsgZm9yIE5vZGUuanMvVHlwZVNjcmlwdCxcbiAqIHdoaWNoIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqXG4gKiBZb3UgY2FuIGZpbmQgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGluIGZpbGUgTElDRU5TRSBpbiB0aGUgcm9vdFxuICogZGlyZWN0b3J5IG9mIHRoaXMgcmVwb3NpdG9yeSBvciBwYWNrYWdlLCBvciBhdFxuICogaHR0cHM6Ly9naXRodWIuY29tL3Jlc3RhdGVkZXYvc2RrLXR5cGVzY3JpcHQvYmxvYi9tYWluL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBIYW5kbGVyIH0gZnJvbSBcImF3cy1sYW1iZGEvaGFuZGxlclwiO1xuaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUV2ZW50IH0gZnJvbSBcImF3cy1sYW1iZGEvdHJpZ2dlci9jbG91ZGZvcm1hdGlvbi1jdXN0b20tcmVzb3VyY2VcIjtcbmltcG9ydCBmZXRjaCBmcm9tIFwibm9kZS1mZXRjaFwiO1xuaW1wb3J0IHsgR2V0U2VjcmV0VmFsdWVDb21tYW5kLCBTZWNyZXRzTWFuYWdlckNsaWVudCB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtc2VjcmV0cy1tYW5hZ2VyXCI7XG5pbXBvcnQgeyByYW5kb21JbnQgfSBmcm9tIFwiY3J5cHRvXCI7XG5pbXBvcnQgKiBhcyBodHRwcyBmcm9tIFwibm9kZTpodHRwc1wiO1xuaW1wb3J0ICogYXMgaHR0cCBmcm9tIFwibm9kZTpodHRwXCI7XG5cbi8qKlxuICogQ3VzdG9tIFJlc291cmNlIGV2ZW50IHNoYXBlIGZvciByZWdpc3RlcmluZyBSZXN0YXRlIExhbWJkYSBzZXJ2aWNlIGhhbmRsZXJzIHdpdGggYSBSZXN0YXRlIGVudmlyb25tZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdHJhdGlvblByb3BlcnRpZXMge1xuICAvKiogV2hlcmUgdG8gZmluZCB0aGUgUmVzdGF0ZSBhZG1pbiBlbmRwb2ludC4gKi9cbiAgYWRtaW5Vcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHNlcnZpY2UgbmFtZSB0byBsb29rIGZvciBpbiB0aGUgZGVwbG95bWVudC4gSWYgbW9yZSB0aGFuIG9uZSBzZXJ2aWNlIGlzIGJlaGluZCB0aGUgc2FtZSBlbmRwb2ludCwgYW55IG9uZVxuICAgKiBzaG91bGQgbWF0Y2guIExlYXZlIHVuc2V0IHRvIHNraXAgdGhlIGNoZWNrLlxuICAgKi9cbiAgc2VydmljZVBhdGg/OiBzdHJpbmc7XG5cbiAgc2VydmljZUxhbWJkYUFybj86IHN0cmluZztcblxuICBpbnZva2VSb2xlQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBdXRoZW50aWNhdGlvbiB0b2tlbiBBUk4gdG8gdXNlIHdpdGggdGhlIGFkbWluIGVuZHBvaW50LiBUaGUgc2VjcmV0IHZhbHVlIHdpbGwgYmUgdXNlZCBhcyBhIGJlYXJlciB0b2tlbiwgaWYgc2V0LlxuICAgKi9cbiAgYXV0aFRva2VuU2VjcmV0QXJuPzogc3RyaW5nO1xuXG4gIC8qKiBOb3QgdXNlZCBieSB0aGUgaGFuZGxlciwgcHVyZWx5IHVzZWQgdG8gdHJpY2sgQ2xvdWRGb3JtYXRpb24gdG8gcGVyZm9ybSBhbiB1cGRhdGUgd2hlbiBpdCBvdGhlcndpc2Ugd291bGQgbm90LiAqL1xuICBjb25maWd1cmF0aW9uVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBtYXJrIHRoZSBzZXJ2aWNlIGFzIHByaXZhdGUsIGFuZCBtYWtlIGl0IHVuYXZhaWxhYmxlIHRvIGJlIGNhbGxlZCB2aWEgUmVzdGF0ZSBpbmdyZXNzLiBJZiB0aGVyZSBhcmVcbiAgICogbXVsdGlwbGUgc2VydmljZXMgcHJvdmlkZWQgYnkgdGhlIGVuZHBvaW50LCB0aGV5IHdpbGwgYWxsIGJlIG1hcmtlZCBhcyBzcGVjaWZpZWQuXG4gICAqL1xuICBwcml2YXRlPzogXCJ0cnVlXCIgfCBcImZhbHNlXCI7XG5cbiAgLyoqIFdoZXRoZXIgdG8gdHJ1c3QgYW55IGNlcnRpZmljYXRlIHdoZW4gY29ubmVjdGluZyB0byB0aGUgYWRtaW4gZW5kcG9pbnQuICovXG4gIGluc2VjdXJlPzogXCJ0cnVlXCIgfCBcImZhbHNlXCI7XG5cbiAgLy8gcmVtb3ZhbFBvbGljeT86IHN0cmluZztcbn1cblxudHlwZSBSZWdpc3RlckRlcGxveW1lbnRSZXNwb25zZSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgc2VydmljZXM6IHsgbmFtZTogc3RyaW5nOyByZXZpc2lvbjogbnVtYmVyOyBwdWJsaWM6IGJvb2xlYW4gfVtdO1xufTtcblxuY29uc3QgTUFYX0hFQUxUSF9DSEVDS19BVFRFTVBUUyA9IDU7IC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBxdWl0ZSBsb25nIHRvIGFsbG93IHNvbWUgdGltZSBmb3IgZmlyc3QtcnVuIEVDMiBhbmQgRG9ja2VyIGJvb3QgdXBcbmNvbnN0IE1BWF9SRUdJU1RSQVRJT05fQVRURU1QVFMgPSAzO1xuXG5jb25zdCBERVBMT1lNRU5UU19QQVRIID0gXCJkZXBsb3ltZW50c1wiO1xuY29uc3QgU0VSVklDRVNfUEFUSCA9IFwic2VydmljZXNcIjtcblxuLyoqXG4gKiBDdXN0b20gUmVzb3VyY2UgZXZlbnQgaGFuZGxlciBmb3IgUmVzdGF0ZSBzZXJ2aWNlIHJlZ2lzdHJhdGlvbi4gVGhpcyBoYW5kbGVyIGJhY2tzIHRoZSBjdXN0b20gcmVzb3VyY2VzIGNyZWF0ZWQgYnlcbiAqIHtAbGluayBTZXJ2aWNlRGVwbG95ZXJ9IHRvIGZhY2lsaXRhdGUgTGFtYmRhIHNlcnZpY2UgaGFuZGxlciBkaXNjb3ZlcnkuXG4gKi9cbmV4cG9ydCBjb25zdCBoYW5kbGVyOiBIYW5kbGVyPENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudCwgdm9pZD4gPSBhc3luYyBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgY29uc29sZS5sb2coeyBldmVudCB9KTtcblxuICBjb25zdCBwcm9wcyA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcyBhcyBSZWdpc3RyYXRpb25Qcm9wZXJ0aWVzO1xuXG4gIGNvbnN0IGh0dHBBZ2VudCA9IG5ldyBodHRwLkFnZW50KHtcbiAgICBrZWVwQWxpdmU6IHRydWUsXG4gIH0pO1xuICBjb25zdCBodHRwc0FnZW50ID0gbmV3IGh0dHBzLkFnZW50KHtcbiAgICBrZWVwQWxpdmU6IHRydWUsXG4gICAgcmVqZWN0VW5hdXRob3JpemVkOiBwcm9wcy5pbnNlY3VyZSAhPT0gXCJ0cnVlXCIsXG4gIH0pO1xuICBjb25zdCBhZ2VudFNlbGVjdG9yID0gKHVybDogVVJMKSA9PiB7XG4gICAgaWYgKHVybC5wcm90b2NvbCA9PSBcImh0dHA6XCIpIHtcbiAgICAgIHJldHVybiBodHRwQWdlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBodHRwc0FnZW50O1xuICAgIH1cbiAgfTtcblxuICBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgPT09IFwiRGVsZXRlXCIpIHtcbiAgICAvLyBTaW5jZSB3ZSByZXRhaW4gb2xkZXIgTGFtYmRhIGhhbmRsZXIgdmVyc2lvbnMgb24gdXBkYXRlLCB3ZSBhbHNvIGxlYXZlIHRoZSByZWdpc3RlcmVkIHNlcnZpY2UgYWxvbmUuIFRoZXJlIG1heVxuICAgIC8vIGJlIHVuZmluaXNoZWQgaW52b2NhdGlvbnMgdGhhdCByZXF1aXJlIGl0OyBpbiB0aGUgZnV0dXJlIHdlIHdvdWxkIHdhbnQgdG8gaW5mb3JtIFJlc3RhdGUgdGhhdCB3ZSB3YW50IHRvXG4gICAgLy8gZGUtcmVnaXN0ZXIgdGhlIHNlcnZpY2UsIGFuZCB3YWl0IGZvciBSZXN0YXRlIHRvIGxldCB1cyBrbm93IHRoYXQgaXQgaXMgc2FmZSB0byBkZWxldGUgdGhlIGRlcGxveWVkIEZ1bmN0aW9uXG4gICAgLy8gdmVyc2lvbiBmcm9tIExhbWJkYS5cblxuICAgIC8vIGNvbnN0IHByb3BzID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzIGFzIFJlZ2lzdHJhdGlvblByb3BlcnRpZXM7XG4gICAgLy8gaWYgKHByb3BzLnJlbW92YWxQb2xpY3kgPT09IGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1kpIHtcbiAgICAvLyAgIGNvbnNvbGUubG9nKGBEZS1yZWdpc3RlcmluZyBzZXJ2aWNlICR7cHJvcHMuc2VydmljZUxhbWJkYUFybn1gKTtcbiAgICAvLyAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgLy8gICBjb25zdCBpZCA9IGJ0b2EocHJvcHMuc2VydmljZUxhbWJkYUFybiEpOyAvLyBUT0RPOiB3ZSBzaG91bGQgYmUgdHJlYXRpbmcgc2VydmljZSBpZHMgYXMgb3BhcXVlXG4gICAgLy8gICBjb25zdCBkZWxldGVDYWxsVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxlci5hYm9ydChcInRpbWVvdXRcIiksIDVfMDAwKTtcbiAgICAvLyAgIGNvbnN0IGRlbGV0ZVJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7cHJvcHMuYWRtaW5Vcmx9LyR7REVQTE9ZTUVOVFNfUEFUSH0vJHtpZH0/Zm9yY2U9dHJ1ZWAsIHtcbiAgICAvLyAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAvLyAgICAgbWV0aG9kOiBcIkRFTEVURVwiLFxuICAgIC8vICAgICBhZ2VudDogYWdlbnRTZWxlY3RvcixcbiAgICAvLyAgIH0pLmZpbmFsbHkoKCkgPT4gY2xlYXJUaW1lb3V0KGRlbGV0ZUNhbGxUaW1lb3V0KSk7XG4gICAgLy9cbiAgICAvLyAgIGNvbnNvbGUubG9nKGBHb3QgZGVsZXRlIHJlc3BvbnNlIGJhY2s6ICR7ZGVsZXRlUmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgIC8vICAgaWYgKGRlbGV0ZVJlc3BvbnNlLnN0YXR1cyAhPSAyMDIpIHtcbiAgICAvLyAgICAgdGhyb3cgbmV3IEVycm9yKGBSZW1vdmluZyBzZXJ2aWNlIGRlcGxveW1lbnQgZmFpbGVkOiAke2RlbGV0ZVJlc3BvbnNlLnN0YXR1c1RleHR9ICgke2RlbGV0ZVJlc3BvbnNlLnN0YXR1c30pYCk7XG4gICAgLy8gICB9XG4gICAgLy8gfVxuXG4gICAgY29uc29sZS53YXJuKFwiRGUtcmVnaXN0ZXJpbmcgc2VydmljZXMgaXMgbm90IHN1cHBvcnRlZCBjdXJyZW50bHkuIFByZXZpb3VzIHZlcnNpb24gd2lsbCByZW1haW4gcmVnaXN0ZXJlZC5cIik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYXV0aEhlYWRlciA9IGF3YWl0IGNyZWF0ZUF1dGhIZWFkZXIocHJvcHMpO1xuXG4gIGxldCBhdHRlbXB0O1xuXG4gIGNvbnN0IGhlYWx0aENoZWNrVXJsID0gYCR7cHJvcHMuYWRtaW5Vcmx9L2hlYWx0aGA7XG5cbiAgYXR0ZW1wdCA9IDE7XG4gIGNvbnNvbGUubG9nKGBQZXJmb3JtaW5nIGhlYWx0aCBjaGVjayBhZ2FpbnN0OiAke2hlYWx0aENoZWNrVXJsfWApO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnNvbGUubG9nKGBNYWtpbmcgaGVhbHRoIGNoZWNrIHJlcXVlc3QgIyR7YXR0ZW1wdH0uLi5gKTtcbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGNvbnN0IGhlYWx0aENoZWNrVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxlci5hYm9ydChcInRpbWVvdXRcIiksIDVfMDAwKTtcbiAgICBsZXQgaGVhbHRoUmVzcG9uc2UgPSB1bmRlZmluZWQ7XG4gICAgbGV0IGVycm9yTWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgaGVhbHRoUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChoZWFsdGhDaGVja1VybCwge1xuICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBoZWFkZXJzOiBhdXRoSGVhZGVyLFxuICAgICAgICBhZ2VudDogYWdlbnRTZWxlY3RvcixcbiAgICAgIH0pLmZpbmFsbHkoKCkgPT4gY2xlYXJUaW1lb3V0KGhlYWx0aENoZWNrVGltZW91dCkpO1xuXG4gICAgICBjb25zb2xlLmxvZyhgR290IGhlYWx0aCBjaGVjayByZXNwb25zZSBiYWNrOiAke2hlYWx0aFJlc3BvbnNlLnN0YXR1c31gKTtcbiAgICAgIGlmIChoZWFsdGhSZXNwb25zZS5zdGF0dXMgPj0gMjAwICYmIGhlYWx0aFJlc3BvbnNlLnN0YXR1cyA8IDMwMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBSZXN0YXRlIGhlYWx0aCBjaGVjayBmYWlsZWQ6ICR7aGVhbHRoUmVzcG9uc2Uuc3RhdHVzVGV4dH0gKCR7aGVhbHRoUmVzcG9uc2Uuc3RhdHVzfTsgYXR0ZW1wdCAke2F0dGVtcHR9KWAsXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGVycm9yTWVzc2FnZSA9IChlIGFzIEVycm9yKT8ubWVzc2FnZTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFJlc3RhdGUgaGVhbHRoIGNoZWNrIGZhaWxlZDogXCIke2Vycm9yTWVzc2FnZX1cIiAoYXR0ZW1wdCAke2F0dGVtcHR9KWApO1xuICAgIH1cblxuICAgIGlmIChhdHRlbXB0ID49IE1BWF9IRUFMVEhfQ0hFQ0tfQVRURU1QVFMpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEFkbWluIHNlcnZpY2UgaGVhbHRoIGNoZWNrIGZhaWxpbmcgYWZ0ZXIgJHthdHRlbXB0fSBhdHRlbXB0cy5gKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UgPz8gYCR7aGVhbHRoUmVzcG9uc2U/LnN0YXR1c1RleHR9ICgke2hlYWx0aFJlc3BvbnNlPy5zdGF0dXN9KWApO1xuICAgIH1cbiAgICBhdHRlbXB0ICs9IDE7XG5cbiAgICBjb25zdCB3YWl0VGltZU1pbGxpcyA9IHJhbmRvbUludCgyXzAwMCkgKyAyICoqIGF0dGVtcHQgKiAxXzAwMDsgLy8gM3MgLT4gNnMgLT4gMTBzIC0+IDE4cyAtPiAzNHNcbiAgICBjb25zb2xlLmxvZyhgUmV0cnlpbmcgYWZ0ZXIgJHt3YWl0VGltZU1pbGxpc30gbXMuLi5gKTtcbiAgICBhd2FpdCBzbGVlcCh3YWl0VGltZU1pbGxpcyk7XG4gIH1cblxuICBjb25zdCBkZXBsb3ltZW50c1VybCA9IGAke3Byb3BzLmFkbWluVXJsfS8ke0RFUExPWU1FTlRTX1BBVEh9YDtcbiAgY29uc3QgcmVnaXN0cmF0aW9uUmVxdWVzdCA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBhcm46IHByb3BzLnNlcnZpY2VMYW1iZGFBcm4sXG4gICAgYXNzdW1lX3JvbGVfYXJuOiBwcm9wcy5pbnZva2VSb2xlQXJuLFxuICB9KTtcblxuICBsZXQgZmFpbHVyZVJlYXNvbjtcbiAgYXR0ZW1wdCA9IDE7XG4gIGNvbnNvbGUubG9nKGBSZWdpc3RlcmluZyBzZXJ2aWNlcyBhdCAke2RlcGxveW1lbnRzVXJsfTogJHtyZWdpc3RyYXRpb25SZXF1ZXN0fWApO1xuXG4gIHJlZ2lzdHJhdGlvbl9yZXRyeV9sb29wOiB3aGlsZSAodHJ1ZSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zb2xlLmxvZyhgTWFraW5nIHJlZ2lzdHJhdGlvbiByZXF1ZXN0ICMke2F0dGVtcHR9Li4uYCk7XG4gICAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgY29uc3QgcmVnaXN0ZXJDYWxsVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxlci5hYm9ydChcInRpbWVvdXRcIiksIDEwXzAwMCk7XG4gICAgICBjb25zdCByZWdpc3RlckRlcGxveW1lbnRSZXNwb25zZSA9IGF3YWl0IGZldGNoKGRlcGxveW1lbnRzVXJsLCB7XG4gICAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgIGJvZHk6IHJlZ2lzdHJhdGlvblJlcXVlc3QsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAuLi5hdXRoSGVhZGVyLFxuICAgICAgICB9LFxuICAgICAgICBhZ2VudDogYWdlbnRTZWxlY3RvcixcbiAgICAgIH0pLmZpbmFsbHkoKCkgPT4gY2xlYXJUaW1lb3V0KHJlZ2lzdGVyQ2FsbFRpbWVvdXQpKTtcblxuICAgICAgaWYgKHJlZ2lzdGVyRGVwbG95bWVudFJlc3BvbnNlLnN0YXR1cyA+PSAyMDAgJiYgcmVnaXN0ZXJEZXBsb3ltZW50UmVzcG9uc2Uuc3RhdHVzIDwgMzAwKSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gKGF3YWl0IHJlZ2lzdGVyRGVwbG95bWVudFJlc3BvbnNlLmpzb24oKSkgYXMgUmVnaXN0ZXJEZXBsb3ltZW50UmVzcG9uc2U7XG5cbiAgICAgICAgaWYgKHByb3BzLnNlcnZpY2VQYXRoICYmICFyZXNwb25zZS5zZXJ2aWNlcy5maW5kKChzKSA9PiBzLm5hbWUgPT09IHByb3BzLnNlcnZpY2VQYXRoKSkge1xuICAgICAgICAgIGZhaWx1cmVSZWFzb24gPVxuICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2VlZGVkLCBidXQgbm9uZSBvZiB0aGUgc2VydmljZSBuYW1lcyBpbiB0aGUgZGVwbG95bWVudCBtYXRjaCB0aGUgc3BlY2lmaWVkIG5hbWUuIFwiICtcbiAgICAgICAgICAgIGBFeHBlY3RlZCBcIiR7cHJvcHMuc2VydmljZVBhdGh9XCIsIGdvdCBiYWNrOiBbYCArXG4gICAgICAgICAgICByZXNwb25zZS5zZXJ2aWNlcy5tYXAoKHN2YykgPT4gc3ZjPy5uYW1lKS5qb2luKFwiLCBcIikgK1xuICAgICAgICAgICAgXCJdXCI7XG5cbiAgICAgICAgICBhdHRlbXB0ID0gTUFYX1JFR0lTVFJBVElPTl9BVFRFTVBUUzsgLy8gZG9uJ3QgcmV0cnkgdGhpc1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzZnVsIHJlZ2lzdHJhdGlvbiEgU2VydmljZXM6IFwiLCBKU09OLnN0cmluZ2lmeShyZXNwb25zZS5zZXJ2aWNlcykpO1xuXG4gICAgICAgIGNvbnN0IGlzUHVibGljID0gKHByb3BzLnByaXZhdGUgPz8gXCJmYWxzZVwiKSA9PT0gXCJmYWxzZVwiO1xuXG4gICAgICAgIGZvciAoY29uc3Qgc2VydmljZSBvZiByZXNwb25zZS5zZXJ2aWNlcyA/PyBbXSkge1xuICAgICAgICAgIGlmIChzZXJ2aWNlLnB1YmxpYyA9PT0gaXNQdWJsaWMpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBTZXJ2aWNlICR7c2VydmljZS5uYW1lfSBpcyAke2lzUHVibGljID8gXCJwdWJsaWNcIiA6IFwicHJpdmF0ZVwifS5gKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnNvbGUubG9nKGBNYXJraW5nIHNlcnZpY2UgJHtzZXJ2aWNlLm5hbWV9IGFzICR7aXNQdWJsaWMgPyBcInB1YmxpY1wiIDogXCJwcml2YXRlXCJ9Li4uYCk7XG4gICAgICAgICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgICAgICBjb25zdCBwcml2YXRlQ2FsbFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoXCJ0aW1lb3V0XCIpLCAxMF8wMDApO1xuICAgICAgICAgIGNvbnN0IHBhdGNoUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtwcm9wcy5hZG1pblVybH0vJHtTRVJWSUNFU19QQVRIfS8ke3NlcnZpY2UubmFtZX1gLCB7XG4gICAgICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICAgICAgbWV0aG9kOiBcIlBBVENIXCIsXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgICAgICAuLi5hdXRoSGVhZGVyLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgcHVibGljOiBpc1B1YmxpYyB9KSxcbiAgICAgICAgICAgIGFnZW50OiBhZ2VudFNlbGVjdG9yLFxuICAgICAgICAgIH0pLmZpbmFsbHkoKCkgPT4gY2xlYXJUaW1lb3V0KHByaXZhdGVDYWxsVGltZW91dCkpO1xuXG4gICAgICAgICAgY29uc29sZS5sb2coYEdvdCBwYXRjaCByZXNwb25zZSBiYWNrOiAke3BhdGNoUmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgICAgICAgIGlmIChwYXRjaFJlc3BvbnNlLnN0YXR1cyAhPSAyMDApIHtcbiAgICAgICAgICAgIGZhaWx1cmVSZWFzb24gPSBgTWFya2luZyBzZXJ2aWNlIGFzICR7cHJvcHMucHJpdmF0ZSA/IFwicHJpdmF0ZVwiIDogXCJwdWJsaWNcIn0gZmFpbGVkOiAke3BhdGNoUmVzcG9uc2Uuc3RhdHVzVGV4dH0gKCR7cGF0Y2hSZXNwb25zZS5zdGF0dXN9KWA7XG4gICAgICAgICAgICBicmVhayByZWdpc3RyYXRpb25fcmV0cnlfbG9vcDsgLy8gZG9uJ3QgdGhyb3cgaW1tZWRpYXRlbHkgLSBsZXQgcmV0cnkgbG9vcCBkZWNpZGUgd2hldGhlciB0byBhYm9ydCBzXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc29sZS5sb2coYFN1Y2Nlc3NmdWxseSBtYXJrZWQgc2VydmljZSBhcyAke2lzUHVibGljID8gXCJwdWJsaWNcIiA6IFwicHJpdmF0ZVwifS5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjsgLy8gT3ZlcmFsbCBzdWNjZXNzIVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZXJyb3JCb2R5ID0gYXdhaXQgcmVnaXN0ZXJEZXBsb3ltZW50UmVzcG9uc2UudGV4dCgpO1xuICAgICAgICBmYWlsdXJlUmVhc29uID0gYFJlZ2lzdHJhdGlvbiBmYWlsZWQgKCR7cmVnaXN0ZXJEZXBsb3ltZW50UmVzcG9uc2Uuc3RhdHVzfSk6ICR7ZXJyb3JCb2R5fWA7XG4gICAgICAgIGNvbnNvbGUubG9nKHtcbiAgICAgICAgICBtZXNzYWdlOiBgR290IGVycm9yIHJlc3BvbnNlIGZyb20gUmVzdGF0ZS5gLFxuICAgICAgICAgIGNvZGU6IHJlZ2lzdGVyRGVwbG95bWVudFJlc3BvbnNlLnN0YXR1cyxcbiAgICAgICAgICBib2R5OiBlcnJvckJvZHksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFJlZ2lzdHJhdGlvbiBmYWlsZWQ6ICR7KGUgYXMgRXJyb3IpPy5tZXNzYWdlfSAoYXR0ZW1wdCAke2F0dGVtcHR9KWApO1xuICAgICAgZmFpbHVyZVJlYXNvbiA9IChlIGFzIEVycm9yKT8ubWVzc2FnZTtcbiAgICB9XG5cbiAgICBpZiAoYXR0ZW1wdCA+PSBNQVhfUkVHSVNUUkFUSU9OX0FUVEVNUFRTKSB7XG4gICAgICBmYWlsdXJlUmVhc29uID0gYEdpdmluZyB1cCBhZnRlciAke2F0dGVtcHR9IGF0dGVtcHRzLiBMYXN0IGVycm9yOiAke2ZhaWx1cmVSZWFzb259YDtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBhdHRlbXB0ICs9IDE7XG4gICAgY29uc3Qgd2FpdFRpbWVNaWxsaXMgPSByYW5kb21JbnQoMl8wMDApICsgMiAqKiBhdHRlbXB0ICogMV8wMDA7IC8vIDNzIC0+IDZzIC0+IDEwc1xuICAgIGNvbnNvbGUubG9nKGBSZXRyeWluZyByZWdpc3RyYXRpb24gYWZ0ZXIgJHt3YWl0VGltZU1pbGxpc30gbXMuLi5gKTtcbiAgICBhd2FpdCBzbGVlcCh3YWl0VGltZU1pbGxpcyk7XG4gIH1cblxuICBjb25zb2xlLmVycm9yKGZhaWx1cmVSZWFzb24pO1xuICB0aHJvdyBuZXcgRXJyb3IoZmFpbHVyZVJlYXNvbiA/PyBcIlJlc3RhdGUgc2VydmljZSByZWdpc3RyYXRpb24gZmFpbGVkLiBQbGVhc2Ugc2VlIGxvZ3MgZm9yIGRldGFpbHMuXCIpO1xufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQXV0aEhlYWRlcihwcm9wczogUmVnaXN0cmF0aW9uUHJvcGVydGllcyk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICBpZiAoIXByb3BzLmF1dGhUb2tlblNlY3JldEFybikge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnNvbGUubG9nKGBVc2luZyBiZWFyZXIgYXV0aGVudGljYXRpb24gdG9rZW4gZnJvbSBzZWNyZXQgJHtwcm9wcy5hdXRoVG9rZW5TZWNyZXRBcm59YCk7XG4gIGNvbnN0IHNzbSA9IG5ldyBTZWNyZXRzTWFuYWdlckNsaWVudCgpO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNzbS5zZW5kKFxuICAgIG5ldyBHZXRTZWNyZXRWYWx1ZUNvbW1hbmQoe1xuICAgICAgU2VjcmV0SWQ6IHByb3BzLmF1dGhUb2tlblNlY3JldEFybixcbiAgICB9KSxcbiAgKTtcblxuICBjb25zb2xlLmxvZyhgU3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCBzZWNyZXQgXCIke3Jlc3BvbnNlLk5hbWV9XCIgdmVyc2lvbiAke3Jlc3BvbnNlLlZlcnNpb25JZH1gKTtcbiAgcmV0dXJuIHtcbiAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7cmVzcG9uc2UuU2VjcmV0U3RyaW5nfWAsXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNsZWVwKG1pbGxpczogbnVtYmVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtaWxsaXMpKTtcbn1cbiJdfQ==
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcmVzdGF0ZS1jb25zdHJ1Y3RzL3JlZ2lzdGVyLXNlcnZpY2UtaGFuZGxlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJSCw0REFBK0I7QUFDL0IsNEVBQThGO0FBQzlGLG1DQUFtQztBQUNuQyxrREFBb0M7QUFDcEMsZ0RBQWtDO0FBNENsQyxNQUFNLHlCQUF5QixHQUFHLENBQUMsQ0FBQyxDQUFDLDJGQUEyRjtBQUNoSSxNQUFNLHlCQUF5QixHQUFHLENBQUMsQ0FBQztBQUVwQyxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQztBQUN2QyxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUM7QUFFakM7OztHQUdHO0FBQ0ksTUFBTSxPQUFPLEdBQXFELEtBQUssV0FBVyxLQUFLO0lBQzVGLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRXZCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxrQkFBNEMsQ0FBQztJQUVqRSxNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDL0IsU0FBUyxFQUFFLElBQUk7S0FDaEIsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxVQUFVLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2pDLFNBQVMsRUFBRSxJQUFJO1FBQ2Ysa0JBQWtCLEVBQUUsS0FBSyxDQUFDLFFBQVEsS0FBSyxNQUFNO0tBQzlDLENBQUMsQ0FBQztJQUNILE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBUSxFQUFFLEVBQUU7UUFDakMsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzVCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxV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QUErQixjQUFjLFFBQVEsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxJQUFJLG1FQUFtRSxDQUFDLENBQUM7QUFDeEcsQ0FBQyxDQUFDO0FBaE1XLFFBQUEsT0FBTyxXQWdNbEI7QUFFRixLQUFLLFVBQVUsZ0JBQWdCLENBQUMsS0FBNkI7SUFDM0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzlCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsaURBQWlELEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDekYsTUFBTSxHQUFHLEdBQUcsSUFBSSw2Q0FBb0IsRUFBRSxDQUFDO0lBQ3ZDLE1BQU0sUUFBUSxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FDN0IsSUFBSSw4Q0FBcUIsQ0FBQztRQUN4QixRQUFRLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtLQUNuQyxDQUFDLENBQ0gsQ0FBQztJQUVGLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLFFBQVEsQ0FBQyxJQUFJLGFBQWEsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDOUYsT0FBTztRQUNMLGFBQWEsRUFBRSxVQUFVLFFBQVEsQ0FBQyxZQUFZLEVBQUU7S0FDakQsQ0FBQztBQUNKLENBQUM7QUFFRCxLQUFLLFVBQVUsS0FBSyxDQUFDLE1BQWM7SUFDakMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQy9ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIzLTIwMjUgLSBSZXN0YXRlIFNvZnR3YXJlLCBJbmMuLCBSZXN0YXRlIEdtYkhcbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUmVzdGF0ZSBDREsgQ29uc3RydWN0IExpYnJhcnksXG4gKiB3aGljaCBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKlxuICogWW91IGNhbiBmaW5kIGEgY29weSBvZiB0aGUgbGljZW5zZSBpbiBmaWxlIExJQ0VOU0UgaW4gdGhlIHJvb3RcbiAqIGRpcmVjdG9yeSBvZiB0aGlzIHJlcG9zaXRvcnkgb3IgcGFja2FnZSwgb3IgYXRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXN0YXRlZGV2L3Nkay10eXBlc2NyaXB0L2Jsb2IvbWFpbi9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgSGFuZGxlciB9IGZyb20gXCJhd3MtbGFtYmRhL2hhbmRsZXJcIjtcbmltcG9ydCB7IENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudCB9IGZyb20gXCJhd3MtbGFtYmRhL3RyaWdnZXIvY2xvdWRmb3JtYXRpb24tY3VzdG9tLXJlc291cmNlXCI7XG5pbXBvcnQgZmV0Y2ggZnJvbSBcIm5vZGUtZmV0Y2hcIjtcbmltcG9ydCB7IEdldFNlY3JldFZhbHVlQ29tbWFuZCwgU2VjcmV0c01hbmFnZXJDbGllbnQgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXNlY3JldHMtbWFuYWdlclwiO1xuaW1wb3J0IHsgcmFuZG9tSW50IH0gZnJvbSBcImNyeXB0b1wiO1xuaW1wb3J0ICogYXMgaHR0cHMgZnJvbSBcIm5vZGU6aHR0cHNcIjtcbmltcG9ydCAqIGFzIGh0dHAgZnJvbSBcIm5vZGU6aHR0cFwiO1xuXG4vKipcbiAqIEN1c3RvbSBSZXNvdXJjZSBldmVudCBzaGFwZSBmb3IgcmVnaXN0ZXJpbmcgUmVzdGF0ZSBMYW1iZGEgc2VydmljZSBoYW5kbGVycyB3aXRoIGEgUmVzdGF0ZSBlbnZpcm9ubWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyYXRpb25Qcm9wZXJ0aWVzIHtcbiAgLyoqIFdoZXJlIHRvIGZpbmQgdGhlIFJlc3RhdGUgYWRtaW4gZW5kcG9pbnQuICovXG4gIGFkbWluVXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBzZXJ2aWNlIG5hbWUgdG8gbG9vayBmb3IgaW4gdGhlIGRlcGxveW1lbnQuIElmIG1vcmUgdGhhbiBvbmUgc2VydmljZSBpcyBiZWhpbmQgdGhlIHNhbWUgZW5kcG9pbnQsIGFueSBvbmVcbiAgICogc2hvdWxkIG1hdGNoLiBMZWF2ZSB1bnNldCB0byBza2lwIHRoZSBjaGVjay5cbiAgICovXG4gIHNlcnZpY2VQYXRoPzogc3RyaW5nO1xuXG4gIHNlcnZpY2VMYW1iZGFBcm4/OiBzdHJpbmc7XG5cbiAgaW52b2tlUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogQXV0aGVudGljYXRpb24gdG9rZW4gQVJOIHRvIHVzZSB3aXRoIHRoZSBhZG1pbiBlbmRwb2ludC4gVGhlIHNlY3JldCB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMgYSBiZWFyZXIgdG9rZW4sIGlmIHNldC5cbiAgICovXG4gIGF1dGhUb2tlblNlY3JldEFybj86IHN0cmluZztcblxuICAvKiogTm90IHVzZWQgYnkgdGhlIGhhbmRsZXIsIHB1cmVseSB1c2VkIHRvIHRyaWNrIENsb3VkRm9ybWF0aW9uIHRvIHBlcmZvcm0gYW4gdXBkYXRlIHdoZW4gaXQgb3RoZXJ3aXNlIHdvdWxkIG5vdC4gKi9cbiAgY29uZmlndXJhdGlvblZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gbWFyayB0aGUgc2VydmljZSBhcyBwcml2YXRlLCBhbmQgbWFrZSBpdCB1bmF2YWlsYWJsZSB0byBiZSBjYWxsZWQgdmlhIFJlc3RhdGUgaW5ncmVzcy4gSWYgdGhlcmUgYXJlXG4gICAqIG11bHRpcGxlIHNlcnZpY2VzIHByb3ZpZGVkIGJ5IHRoZSBlbmRwb2ludCwgdGhleSB3aWxsIGFsbCBiZSBtYXJrZWQgYXMgc3BlY2lmaWVkLlxuICAgKi9cbiAgcHJpdmF0ZT86IFwidHJ1ZVwiIHwgXCJmYWxzZVwiO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHRydXN0IGFueSBjZXJ0aWZpY2F0ZSB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIGFkbWluIGVuZHBvaW50LiAqL1xuICBpbnNlY3VyZT86IFwidHJ1ZVwiIHwgXCJmYWxzZVwiO1xuXG4gIC8vIHJlbW92YWxQb2xpY3k/OiBzdHJpbmc7XG59XG5cbnR5cGUgUmVnaXN0ZXJEZXBsb3ltZW50UmVzcG9uc2UgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHNlcnZpY2VzOiB7IG5hbWU6IHN0cmluZzsgcmV2aXNpb246IG51bWJlcjsgcHVibGljOiBib29sZWFuIH1bXTtcbn07XG5cbmNvbnN0IE1BWF9IRUFMVEhfQ0hFQ0tfQVRURU1QVFMgPSA1OyAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgcXVpdGUgbG9uZyB0byBhbGxvdyBzb21lIHRpbWUgZm9yIGZpcnN0LXJ1biBFQzIgYW5kIERvY2tlciBib290IHVwXG5jb25zdCBNQVhfUkVHSVNUUkFUSU9OX0FUVEVNUFRTID0gMztcblxuY29uc3QgREVQTE9ZTUVOVFNfUEFUSCA9IFwiZGVwbG95bWVudHNcIjtcbmNvbnN0IFNFUlZJQ0VTX1BBVEggPSBcInNlcnZpY2VzXCI7XG5cbi8qKlxuICogQ3VzdG9tIFJlc291cmNlIGV2ZW50IGhhbmRsZXIgZm9yIFJlc3RhdGUgc2VydmljZSByZWdpc3RyYXRpb24uIFRoaXMgaGFuZGxlciBiYWNrcyB0aGUgY3VzdG9tIHJlc291cmNlcyBjcmVhdGVkIGJ5XG4gKiB7QGxpbmsgU2VydmljZURlcGxveWVyfSB0byBmYWNpbGl0YXRlIExhbWJkYSBzZXJ2aWNlIGhhbmRsZXIgZGlzY292ZXJ5LlxuICovXG5leHBvcnQgY29uc3QgaGFuZGxlcjogSGFuZGxlcjxDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnQsIHZvaWQ+ID0gYXN5bmMgZnVuY3Rpb24gKGV2ZW50KSB7XG4gIGNvbnNvbGUubG9nKHsgZXZlbnQgfSk7XG5cbiAgY29uc3QgcHJvcHMgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMgYXMgUmVnaXN0cmF0aW9uUHJvcGVydGllcztcblxuICBjb25zdCBodHRwQWdlbnQgPSBuZXcgaHR0cC5BZ2VudCh7XG4gICAga2VlcEFsaXZlOiB0cnVlLFxuICB9KTtcbiAgY29uc3QgaHR0cHNBZ2VudCA9IG5ldyBodHRwcy5BZ2VudCh7XG4gICAga2VlcEFsaXZlOiB0cnVlLFxuICAgIHJlamVjdFVuYXV0aG9yaXplZDogcHJvcHMuaW5zZWN1cmUgIT09IFwidHJ1ZVwiLFxuICB9KTtcbiAgY29uc3QgYWdlbnRTZWxlY3RvciA9ICh1cmw6IFVSTCkgPT4ge1xuICAgIGlmICh1cmwucHJvdG9jb2wgPT0gXCJodHRwOlwiKSB7XG4gICAgICByZXR1cm4gaHR0cEFnZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaHR0cHNBZ2VudDtcbiAgICB9XG4gIH07XG5cbiAgaWYgKGV2ZW50LlJlcXVlc3RUeXBlID09PSBcIkRlbGV0ZVwiKSB7XG4gICAgLy8gU2luY2Ugd2UgcmV0YWluIG9sZGVyIExhbWJkYSBoYW5kbGVyIHZlcnNpb25zIG9uIHVwZGF0ZSwgd2UgYWxzbyBsZWF2ZSB0aGUgcmVnaXN0ZXJlZCBzZXJ2aWNlIGFsb25lLiBUaGVyZSBtYXlcbiAgICAvLyBiZSB1bmZpbmlzaGVkIGludm9jYXRpb25zIHRoYXQgcmVxdWlyZSBpdDsgaW4gdGhlIGZ1dHVyZSB3ZSB3b3VsZCB3YW50IHRvIGluZm9ybSBSZXN0YXRlIHRoYXQgd2Ugd2FudCB0b1xuICAgIC8vIGRlLXJlZ2lzdGVyIHRoZSBzZXJ2aWNlLCBhbmQgd2FpdCBmb3IgUmVzdGF0ZSB0byBsZXQgdXMga25vdyB0aGF0IGl0IGlzIHNhZmUgdG8gZGVsZXRlIHRoZSBkZXBsb3llZCBGdW5jdGlvblxuICAgIC8vIHZlcnNpb24gZnJvbSBMYW1iZGEuXG5cbiAgICAvLyBjb25zdCBwcm9wcyA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcyBhcyBSZWdpc3RyYXRpb25Qcm9wZXJ0aWVzO1xuICAgIC8vIGlmIChwcm9wcy5yZW1vdmFsUG9saWN5ID09PSBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZKSB7XG4gICAgLy8gICBjb25zb2xlLmxvZyhgRGUtcmVnaXN0ZXJpbmcgc2VydmljZSAke3Byb3BzLnNlcnZpY2VMYW1iZGFBcm59YCk7XG4gICAgLy8gICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIC8vICAgY29uc3QgaWQgPSBidG9hKHByb3BzLnNlcnZpY2VMYW1iZGFBcm4hKTsgLy8gVE9ETzogd2Ugc2hvdWxkIGJlIHRyZWF0aW5nIHNlcnZpY2UgaWRzIGFzIG9wYXF1ZVxuICAgIC8vICAgY29uc3QgZGVsZXRlQ2FsbFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoXCJ0aW1lb3V0XCIpLCA1XzAwMCk7XG4gICAgLy8gICBjb25zdCBkZWxldGVSZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke3Byb3BzLmFkbWluVXJsfS8ke0RFUExPWU1FTlRTX1BBVEh9LyR7aWR9P2ZvcmNlPXRydWVgLCB7XG4gICAgLy8gICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgLy8gICAgIG1ldGhvZDogXCJERUxFVEVcIixcbiAgICAvLyAgICAgYWdlbnQ6IGFnZW50U2VsZWN0b3IsXG4gICAgLy8gICB9KS5maW5hbGx5KCgpID0+IGNsZWFyVGltZW91dChkZWxldGVDYWxsVGltZW91dCkpO1xuICAgIC8vXG4gICAgLy8gICBjb25zb2xlLmxvZyhgR290IGRlbGV0ZSByZXNwb25zZSBiYWNrOiAke2RlbGV0ZVJlc3BvbnNlLnN0YXR1c31gKTtcbiAgICAvLyAgIGlmIChkZWxldGVSZXNwb25zZS5zdGF0dXMgIT0gMjAyKSB7XG4gICAgLy8gICAgIHRocm93IG5ldyBFcnJvcihgUmVtb3Zpbmcgc2VydmljZSBkZXBsb3ltZW50IGZhaWxlZDogJHtkZWxldGVSZXNwb25zZS5zdGF0dXNUZXh0fSAoJHtkZWxldGVSZXNwb25zZS5zdGF0dXN9KWApO1xuICAgIC8vICAgfVxuICAgIC8vIH1cblxuICAgIGNvbnNvbGUud2FybihcIkRlLXJlZ2lzdGVyaW5nIHNlcnZpY2VzIGlzIG5vdCBzdXBwb3J0ZWQgY3VycmVudGx5LiBQcmV2aW91cyB2ZXJzaW9uIHdpbGwgcmVtYWluIHJlZ2lzdGVyZWQuXCIpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGF1dGhIZWFkZXIgPSBhd2FpdCBjcmVhdGVBdXRoSGVhZGVyKHByb3BzKTtcblxuICBsZXQgYXR0ZW1wdDtcblxuICBjb25zdCBoZWFsdGhDaGVja1VybCA9IGAke3Byb3BzLmFkbWluVXJsfS9oZWFsdGhgO1xuXG4gIGF0dGVtcHQgPSAxO1xuICBjb25zb2xlLmxvZyhgUGVyZm9ybWluZyBoZWFsdGggY2hlY2sgYWdhaW5zdDogJHtoZWFsdGhDaGVja1VybH1gKTtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zb2xlLmxvZyhgTWFraW5nIGhlYWx0aCBjaGVjayByZXF1ZXN0ICMke2F0dGVtcHR9Li4uYCk7XG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICBjb25zdCBoZWFsdGhDaGVja1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoXCJ0aW1lb3V0XCIpLCA1XzAwMCk7XG4gICAgbGV0IGhlYWx0aFJlc3BvbnNlID0gdW5kZWZpbmVkO1xuICAgIGxldCBlcnJvck1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgIGhlYWx0aFJlc3BvbnNlID0gYXdhaXQgZmV0Y2goaGVhbHRoQ2hlY2tVcmwsIHtcbiAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgaGVhZGVyczogYXV0aEhlYWRlcixcbiAgICAgICAgYWdlbnQ6IGFnZW50U2VsZWN0b3IsXG4gICAgICB9KS5maW5hbGx5KCgpID0+IGNsZWFyVGltZW91dChoZWFsdGhDaGVja1RpbWVvdXQpKTtcblxuICAgICAgY29uc29sZS5sb2coYEdvdCBoZWFsdGggY2hlY2sgcmVzcG9uc2UgYmFjazogJHtoZWFsdGhSZXNwb25zZS5zdGF0dXN9YCk7XG4gICAgICBpZiAoaGVhbHRoUmVzcG9uc2Uuc3RhdHVzID49IDIwMCAmJiBoZWFsdGhSZXNwb25zZS5zdGF0dXMgPCAzMDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgUmVzdGF0ZSBoZWFsdGggY2hlY2sgZmFpbGVkOiAke2hlYWx0aFJlc3BvbnNlLnN0YXR1c1RleHR9ICgke2hlYWx0aFJlc3BvbnNlLnN0YXR1c307IGF0dGVtcHQgJHthdHRlbXB0fSlgLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnJvck1lc3NhZ2UgPSAoZSBhcyBFcnJvcik/Lm1lc3NhZ2U7XG4gICAgICBjb25zb2xlLmVycm9yKGBSZXN0YXRlIGhlYWx0aCBjaGVjayBmYWlsZWQ6IFwiJHtlcnJvck1lc3NhZ2V9XCIgKGF0dGVtcHQgJHthdHRlbXB0fSlgKTtcbiAgICB9XG5cbiAgICBpZiAoYXR0ZW1wdCA+PSBNQVhfSEVBTFRIX0NIRUNLX0FUVEVNUFRTKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBBZG1pbiBzZXJ2aWNlIGhlYWx0aCBjaGVjayBmYWlsaW5nIGFmdGVyICR7YXR0ZW1wdH0gYXR0ZW1wdHMuYCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlID8/IGAke2hlYWx0aFJlc3BvbnNlPy5zdGF0dXNUZXh0fSAoJHtoZWFsdGhSZXNwb25zZT8uc3RhdHVzfSlgKTtcbiAgICB9XG4gICAgYXR0ZW1wdCArPSAxO1xuXG4gICAgY29uc3Qgd2FpdFRpbWVNaWxsaXMgPSByYW5kb21JbnQoMl8wMDApICsgMiAqKiBhdHRlbXB0ICogMV8wMDA7IC8vIDNzIC0+IDZzIC0+IDEwcyAtPiAxOHMgLT4gMzRzXG4gICAgY29uc29sZS5sb2coYFJldHJ5aW5nIGFmdGVyICR7d2FpdFRpbWVNaWxsaXN9IG1zLi4uYCk7XG4gICAgYXdhaXQgc2xlZXAod2FpdFRpbWVNaWxsaXMpO1xuICB9XG5cbiAgY29uc3QgZGVwbG95bWVudHNVcmwgPSBgJHtwcm9wcy5hZG1pblVybH0vJHtERVBMT1lNRU5UU19QQVRIfWA7XG4gIGNvbnN0IHJlZ2lzdHJhdGlvblJlcXVlc3QgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgYXJuOiBwcm9wcy5zZXJ2aWNlTGFtYmRhQXJuLFxuICAgIGFzc3VtZV9yb2xlX2FybjogcHJvcHMuaW52b2tlUm9sZUFybixcbiAgfSk7XG5cbiAgbGV0IGZhaWx1cmVSZWFzb247XG4gIGF0dGVtcHQgPSAxO1xuICBjb25zb2xlLmxvZyhgUmVnaXN0ZXJpbmcgc2VydmljZXMgYXQgJHtkZXBsb3ltZW50c1VybH06ICR7cmVnaXN0cmF0aW9uUmVxdWVzdH1gKTtcblxuICByZWdpc3RyYXRpb25fcmV0cnlfbG9vcDogd2hpbGUgKHRydWUpIHtcbiAgICB0cnkge1xuICAgICAgY29uc29sZS5sb2coYE1ha2luZyByZWdpc3RyYXRpb24gcmVxdWVzdCAjJHthdHRlbXB0fS4uLmApO1xuICAgICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgIGNvbnN0IHJlZ2lzdGVyQ2FsbFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoXCJ0aW1lb3V0XCIpLCAxMF8wMDApO1xuICAgICAgY29uc3QgcmVnaXN0ZXJEZXBsb3ltZW50UmVzcG9uc2UgPSBhd2FpdCBmZXRjaChkZXBsb3ltZW50c1VybCwge1xuICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBib2R5OiByZWdpc3RyYXRpb25SZXF1ZXN0LFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgLi4uYXV0aEhlYWRlcixcbiAgICAgICAgfSxcbiAgICAgICAgYWdlbnQ6IGFnZW50U2VsZWN0b3IsXG4gICAgICB9KS5maW5hbGx5KCgpID0+IGNsZWFyVGltZW91dChyZWdpc3RlckNhbGxUaW1lb3V0KSk7XG5cbiAgICAgIGlmIChyZWdpc3RlckRlcGxveW1lbnRSZXNwb25zZS5zdGF0dXMgPj0gMjAwICYmIHJlZ2lzdGVyRGVwbG95bWVudFJlc3BvbnNlLnN0YXR1cyA8IDMwMCkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IChhd2FpdCByZWdpc3RlckRlcGxveW1lbnRSZXNwb25zZS5qc29uKCkpIGFzIFJlZ2lzdGVyRGVwbG95bWVudFJlc3BvbnNlO1xuXG4gICAgICAgIGlmIChwcm9wcy5zZXJ2aWNlUGF0aCAmJiAhcmVzcG9uc2Uuc2VydmljZXMuZmluZCgocykgPT4gcy5uYW1lID09PSBwcm9wcy5zZXJ2aWNlUGF0aCkpIHtcbiAgICAgICAgICBmYWlsdXJlUmVhc29uID1cbiAgICAgICAgICAgIFwiUmVnaXN0cmF0aW9uIHN1Y2NlZWRlZCwgYnV0IG5vbmUgb2YgdGhlIHNlcnZpY2UgbmFtZXMgaW4gdGhlIGRlcGxveW1lbnQgbWF0Y2ggdGhlIHNwZWNpZmllZCBuYW1lLiBcIiArXG4gICAgICAgICAgICBgRXhwZWN0ZWQgXCIke3Byb3BzLnNlcnZpY2VQYXRofVwiLCBnb3QgYmFjazogW2AgK1xuICAgICAgICAgICAgcmVzcG9uc2Uuc2VydmljZXMubWFwKChzdmMpID0+IHN2Yz8ubmFtZSkuam9pbihcIiwgXCIpICtcbiAgICAgICAgICAgIFwiXVwiO1xuXG4gICAgICAgICAgYXR0ZW1wdCA9IE1BWF9SRUdJU1RSQVRJT05fQVRURU1QVFM7IC8vIGRvbid0IHJldHJ5IHRoaXNcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKFwiU3VjY2Vzc2Z1bCByZWdpc3RyYXRpb24hIFNlcnZpY2VzOiBcIiwgSlNPTi5zdHJpbmdpZnkocmVzcG9uc2Uuc2VydmljZXMpKTtcblxuICAgICAgICBjb25zdCBpc1B1YmxpYyA9IChwcm9wcy5wcml2YXRlID8/IFwiZmFsc2VcIikgPT09IFwiZmFsc2VcIjtcblxuICAgICAgICBmb3IgKGNvbnN0IHNlcnZpY2Ugb2YgcmVzcG9uc2Uuc2VydmljZXMgPz8gW10pIHtcbiAgICAgICAgICBpZiAoc2VydmljZS5wdWJsaWMgPT09IGlzUHVibGljKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgU2VydmljZSAke3NlcnZpY2UubmFtZX0gaXMgJHtpc1B1YmxpYyA/IFwicHVibGljXCIgOiBcInByaXZhdGVcIn0uYCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zb2xlLmxvZyhgTWFya2luZyBzZXJ2aWNlICR7c2VydmljZS5uYW1lfSBhcyAke2lzUHVibGljID8gXCJwdWJsaWNcIiA6IFwicHJpdmF0ZVwifS4uLmApO1xuICAgICAgICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgICAgICAgY29uc3QgcHJpdmF0ZUNhbGxUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiBjb250cm9sbGVyLmFib3J0KFwidGltZW91dFwiKSwgMTBfMDAwKTtcbiAgICAgICAgICBjb25zdCBwYXRjaFJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7cHJvcHMuYWRtaW5Vcmx9LyR7U0VSVklDRVNfUEFUSH0vJHtzZXJ2aWNlLm5hbWV9YCwge1xuICAgICAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgICAgIG1ldGhvZDogXCJQQVRDSFwiLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgLi4uYXV0aEhlYWRlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHB1YmxpYzogaXNQdWJsaWMgfSksXG4gICAgICAgICAgICBhZ2VudDogYWdlbnRTZWxlY3RvcixcbiAgICAgICAgICB9KS5maW5hbGx5KCgpID0+IGNsZWFyVGltZW91dChwcml2YXRlQ2FsbFRpbWVvdXQpKTtcblxuICAgICAgICAgIGNvbnNvbGUubG9nKGBHb3QgcGF0Y2ggcmVzcG9uc2UgYmFjazogJHtwYXRjaFJlc3BvbnNlLnN0YXR1c31gKTtcbiAgICAgICAgICBpZiAocGF0Y2hSZXNwb25zZS5zdGF0dXMgIT0gMjAwKSB7XG4gICAgICAgICAgICBmYWlsdXJlUmVhc29uID0gYE1hcmtpbmcgc2VydmljZSBhcyAke3Byb3BzLnByaXZhdGUgPyBcInByaXZhdGVcIiA6IFwicHVibGljXCJ9IGZhaWxlZDogJHtwYXRjaFJlc3BvbnNlLnN0YXR1c1RleHR9ICgke3BhdGNoUmVzcG9uc2Uuc3RhdHVzfSlgO1xuICAgICAgICAgICAgYnJlYWsgcmVnaXN0cmF0aW9uX3JldHJ5X2xvb3A7IC8vIGRvbid0IHRocm93IGltbWVkaWF0ZWx5IC0gbGV0IHJldHJ5IGxvb3AgZGVjaWRlIHdoZXRoZXIgdG8gYWJvcnQgc1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnNvbGUubG9nKGBTdWNjZXNzZnVsbHkgbWFya2VkIHNlcnZpY2UgYXMgJHtpc1B1YmxpYyA/IFwicHVibGljXCIgOiBcInByaXZhdGVcIn0uYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47IC8vIE92ZXJhbGwgc3VjY2VzcyFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGVycm9yQm9keSA9IGF3YWl0IHJlZ2lzdGVyRGVwbG95bWVudFJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgZmFpbHVyZVJlYXNvbiA9IGBSZWdpc3RyYXRpb24gZmFpbGVkICgke3JlZ2lzdGVyRGVwbG95bWVudFJlc3BvbnNlLnN0YXR1c30pOiAke2Vycm9yQm9keX1gO1xuICAgICAgICBjb25zb2xlLmxvZyh7XG4gICAgICAgICAgbWVzc2FnZTogYEdvdCBlcnJvciByZXNwb25zZSBmcm9tIFJlc3RhdGUuYCxcbiAgICAgICAgICBjb2RlOiByZWdpc3RlckRlcGxveW1lbnRSZXNwb25zZS5zdGF0dXMsXG4gICAgICAgICAgYm9keTogZXJyb3JCb2R5LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBSZWdpc3RyYXRpb24gZmFpbGVkOiAkeyhlIGFzIEVycm9yKT8ubWVzc2FnZX0gKGF0dGVtcHQgJHthdHRlbXB0fSlgKTtcbiAgICAgIGZhaWx1cmVSZWFzb24gPSAoZSBhcyBFcnJvcik/Lm1lc3NhZ2U7XG4gICAgfVxuXG4gICAgaWYgKGF0dGVtcHQgPj0gTUFYX1JFR0lTVFJBVElPTl9BVFRFTVBUUykge1xuICAgICAgZmFpbHVyZVJlYXNvbiA9IGBHaXZpbmcgdXAgYWZ0ZXIgJHthdHRlbXB0fSBhdHRlbXB0cy4gTGFzdCBlcnJvcjogJHtmYWlsdXJlUmVhc29ufWA7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgYXR0ZW1wdCArPSAxO1xuICAgIGNvbnN0IHdhaXRUaW1lTWlsbGlzID0gcmFuZG9tSW50KDJfMDAwKSArIDIgKiogYXR0ZW1wdCAqIDFfMDAwOyAvLyAzcyAtPiA2cyAtPiAxMHNcbiAgICBjb25zb2xlLmxvZyhgUmV0cnlpbmcgcmVnaXN0cmF0aW9uIGFmdGVyICR7d2FpdFRpbWVNaWxsaXN9IG1zLi4uYCk7XG4gICAgYXdhaXQgc2xlZXAod2FpdFRpbWVNaWxsaXMpO1xuICB9XG5cbiAgY29uc29sZS5lcnJvcihmYWlsdXJlUmVhc29uKTtcbiAgdGhyb3cgbmV3IEVycm9yKGZhaWx1cmVSZWFzb24gPz8gXCJSZXN0YXRlIHNlcnZpY2UgcmVnaXN0cmF0aW9uIGZhaWxlZC4gUGxlYXNlIHNlZSBsb2dzIGZvciBkZXRhaWxzLlwiKTtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUF1dGhIZWFkZXIocHJvcHM6IFJlZ2lzdHJhdGlvblByb3BlcnRpZXMpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgaWYgKCFwcm9wcy5hdXRoVG9rZW5TZWNyZXRBcm4pIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zb2xlLmxvZyhgVXNpbmcgYmVhcmVyIGF1dGhlbnRpY2F0aW9uIHRva2VuIGZyb20gc2VjcmV0ICR7cHJvcHMuYXV0aFRva2VuU2VjcmV0QXJufWApO1xuICBjb25zdCBzc20gPSBuZXcgU2VjcmV0c01hbmFnZXJDbGllbnQoKTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzc20uc2VuZChcbiAgICBuZXcgR2V0U2VjcmV0VmFsdWVDb21tYW5kKHtcbiAgICAgIFNlY3JldElkOiBwcm9wcy5hdXRoVG9rZW5TZWNyZXRBcm4sXG4gICAgfSksXG4gICk7XG5cbiAgY29uc29sZS5sb2coYFN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgc2VjcmV0IFwiJHtyZXNwb25zZS5OYW1lfVwiIHZlcnNpb24gJHtyZXNwb25zZS5WZXJzaW9uSWR9YCk7XG4gIHJldHVybiB7XG4gICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Jlc3BvbnNlLlNlY3JldFN0cmluZ31gLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBzbGVlcChtaWxsaXM6IG51bWJlcikge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbWlsbGlzKSk7XG59XG4iXX0=
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  /*
3
- * Copyright (c) 2024 - Restate Software, Inc., Restate GmbH
3
+ * Copyright (c) 2023-2025 - Restate Software, Inc., Restate GmbH
4
4
  *
5
- * This file is part of the Restate SDK for Node.js/TypeScript,
5
+ * This file is part of the Restate CDK Construct Library,
6
6
  * which is released under the MIT license.
7
7
  *
8
8
  * You can find a copy of the license in file LICENSE in the root
@@ -111,4 +111,4 @@ const CONFIG = {
111
111
  principalArn: "arn:aws:iam::654654156625:role/RestateCloud",
112
112
  },
113
113
  };
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdGF0ZS1jbG91ZC1lbnZpcm9ubWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9yZXN0YXRlLWNvbnN0cnVjdHMvcmVzdGF0ZS1jbG91ZC1lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCx5REFBMkM7QUFFM0MsMkNBQXVDO0FBOEJ2Qzs7O0dBR0c7QUFDSCxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBUXBEOzs7Ozs7Ozs7T0FTRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBbUM7UUFDM0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLHVCQUF1QixDQUFDO1FBQ3RELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGlCQUFpQixDQUFDLEtBQWdCLEVBQUUsS0FBbUM7UUFDL0UsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDckQsU0FBUyxFQUFFLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsY0FBYyxDQUFDO2dCQUNoRixZQUFZLEVBQUU7b0JBQ1osZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGFBQWE7b0JBQ3JDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWTtpQkFDckQ7YUFDRixDQUFDO1NBQ0gsQ0FBQyxDQUFDO1FBQ0gsV0FBVyxDQUFDLGdCQUFpQixDQUFDLGFBQWEsQ0FDekMsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1lBQ3RCLFVBQVUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3RELE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO1NBQzVCLENBQUMsQ0FDSCxDQUFDO1FBQ0YsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBbERELDBEQWtEQztBQUVELFNBQVMsYUFBYSxDQUFDLE1BQTBCLEVBQUUsYUFBNEI7SUFDN0UsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckQsT0FBTyxXQUFXLFNBQVMsUUFBUSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pFLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxNQUEwQixFQUFFLGFBQTRCO0lBQy9FLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELE9BQU8sV0FBVyxTQUFTLFFBQVEsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxDQUFDO0FBVUQsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUM7QUFFckMsTUFBTSxNQUFNLEdBQUc7SUFDYixFQUFFLEVBQUU7UUFDRixTQUFTLEVBQUUsY0FBYztRQUN6QixZQUFZLEVBQUUsNkNBQTZDO0tBQzVEO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsU0FBUyxFQUFFLGNBQWM7UUFDekIsWUFBWSxFQUFFLDZDQUE2QztLQUM1RDtDQUMwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyNCAtIFJlc3RhdGUgU29mdHdhcmUsIEluYy4sIFJlc3RhdGUgR21iSFxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBSZXN0YXRlIFNESyBmb3IgTm9kZS5qcy9UeXBlU2NyaXB0LFxuICogd2hpY2ggaXMgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICpcbiAqIFlvdSBjYW4gZmluZCBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgaW4gZmlsZSBMSUNFTlNFIGluIHRoZSByb290XG4gKiBkaXJlY3Rvcnkgb2YgdGhpcyByZXBvc2l0b3J5IG9yIHBhY2thZ2UsIG9yIGF0XG4gKiBodHRwczovL2dpdGh1Yi5jb20vcmVzdGF0ZWRldi9zZGstdHlwZXNjcmlwdC9ibG9iL21haW4vTElDRU5TRVxuICovXG5cbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0ICogYXMgc2VjcmV0cyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgSVJlc3RhdGVFbnZpcm9ubWVudCB9IGZyb20gXCIuL3Jlc3RhdGUtZW52aXJvbm1lbnRcIjtcbmltcG9ydCB7IFNlcnZpY2VEZXBsb3llciB9IGZyb20gXCIuL3NlcnZpY2UtZGVwbG95ZXJcIjtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIFJlc3RhdGUgQ2xvdWQgZW52aXJvbm1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdGF0ZUNsb3VkRW52aXJvbm1lbnRQcm9wcyB7XG4gIC8qKlxuICAgKiBVbmlxdWUgaWQgb2YgdGhlIGVudmlyb25tZW50IChpbmNsdWRpbmcgdGhlIGBlbnZfYCBwcmVmaXgpLlxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnRJZDogRW52aXJvbm1lbnRJZDtcblxuICAvKipcbiAgICogQVBJIGtleSB3aXRoIGFkbWluaXN0cmF0aXZlIHBlcm1pc3Npb25zLiBVc2VkIHRvIG1hbmFnZSBzZXJ2aWNlcyB0byB0aGUgZW52aXJvbm1lbnQsIHNlZSB7QGxpbmsgU2VydmljZURlcGxveWVyfS5cbiAgICovXG4gIHJlYWRvbmx5IGFwaUtleTogc2VjcmV0cy5JU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBSZWdpb24gb2YgdGhlIGVudmlyb25tZW50LiBEZWZhdWx0cyB0byBgdXNgLiBWYWxpZCB2YWx1ZXM6IFtgdXNgLCBgZXVgXS5cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IFJlc3RhdGVDbG91ZFJlZ2lvbjtcblxuICAvKipcbiAgICogSW52b2tlciByb2xlIHRoYXQgY2FuIGJlIGFzc3VtZWQgYnkgUmVzdGF0ZSBDbG91ZC4gSWYgeW91IHVzZSB7QGxpbmsgU2VydmljZURlcGxveWVyfSB0byByZWdpc3RlciBMYW1iZGEgZnVuY3Rpb25zXG4gICAqIGFzIGhhbmRsZXJzLCB0aGUgbmVjZXNzYXJ5IGludm9rZSBwZXJtaXNzaW9ucyB3aWxsIGJlIGdyYW50ZWQgYXV0b21hdGljYWxseS5cbiAgICovXG4gIHJlYWRvbmx5IGludm9rZXJSb2xlPzogaWFtLklSb2xlO1xufVxuXG4vKipcbiAqIEEgZGlzdGluY3QgUmVzdGF0ZSBDbG91ZCBlbnZpcm9ubWVudCByZWZlcmVuY2UuIFRoaXMgaXMgYSBjb252ZW5pZW5jZSB1dGlsaXR5IGZvciBkZXBsb3lpbmcgdG8gdGhlXG4gKiBbUmVzdGF0ZSBDbG91ZF0oaHR0cHM6Ly9jbG91ZC5yZXN0YXRlLmRldi8pIGhvc3RlZCBzZXJ2aWNlLlxuICovXG5leHBvcnQgY2xhc3MgUmVzdGF0ZUNsb3VkRW52aXJvbm1lbnQgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUmVzdGF0ZUVudmlyb25tZW50IHtcbiAgcmVhZG9ubHkgZW52aXJvbm1lbnRJZDogRW52aXJvbm1lbnRJZDtcbiAgcmVhZG9ubHkgYWRtaW5Vcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgaW5ncmVzc1VybDogc3RyaW5nO1xuICByZWFkb25seSBhdXRoVG9rZW46IHNlY3JldHMuSVNlY3JldDtcbiAgcmVhZG9ubHkgaW52b2tlclJvbGU6IGlhbS5JUm9sZTtcbiAgcmVhZG9ubHkgcmVnaW9uOiBSZXN0YXRlQ2xvdWRSZWdpb247XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBSZXN0YXRlIENsb3VkIGVudmlyb25tZW50IHJlZmVyZW5jZSBhbG9uZyB3aXRoIGludm9rZXIuIE5vdGUgdGhhdCB0aGlzIGNvbnN0cnVjdCBpcyBvbmx5IGEgcG9pbnRlciB0b1xuICAgKiBhbiBleGlzdGluZyBSZXN0YXRlIENsb3VkIGVudmlyb25tZW50IGFuZCBkb2VzIG5vdCBjcmVhdGUgaXQuIFVubGVzcyB0aGUgYGludm9rZXJSb2xlYCBwcm9wZXJ0eSBpcyBzcGVjaWZpZWQsIGl0XG4gICAqIGRvZXMgY3JlYXRlIGEgbmV3IHJvbGUgdGhhdCBjYW4gYmUgYXNzdW1lZCBieSBSZXN0YXRlIENsb3VkLCB3aGljaCBpcyB1c2VkIHRvIHRoZSBzZXJ2aWNlIGhhbmRsZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgcGFyZW50IGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gaWQgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBwcm9wcyBlbnZpcm9ubWVudCBwcm9wZXJ0aWVzXG4gICAqIEByZXR1cm5zIFJlc3RhdGUgQ2xvdWQgZW52aXJvbm1lbnRcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSZXN0YXRlQ2xvdWRFbnZpcm9ubWVudFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmVudmlyb25tZW50SWQgPSBwcm9wcy5lbnZpcm9ubWVudElkO1xuICAgIHRoaXMucmVnaW9uID0gcHJvcHMucmVnaW9uID8/IFJFU1RBVEVfQ0xPVURfUkVHSU9OX1VTO1xuICAgIHRoaXMuaW52b2tlclJvbGUgPSBwcm9wcy5pbnZva2VyUm9sZSA/PyB0aGlzLmNyZWF0ZUludm9rZXJSb2xlKHRoaXMsIHByb3BzKTtcbiAgICB0aGlzLmF1dGhUb2tlbiA9IHByb3BzLmFwaUtleTtcbiAgICB0aGlzLmFkbWluVXJsID0gYWRtaW5FbmRwb2ludCh0aGlzLnJlZ2lvbiwgcHJvcHMuZW52aXJvbm1lbnRJZCk7XG4gICAgdGhpcy5pbmdyZXNzVXJsID0gaW5ncmVzc0VuZHBvaW50KHRoaXMucmVnaW9uLCBwcm9wcy5lbnZpcm9ubWVudElkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIHJvbGUgaXMgdXNlZCBieSBSZXN0YXRlIHRvIGludm9rZSBMYW1iZGEgc2VydmljZSBoYW5kbGVyczsgc2VlIGh0dHBzOi8vZG9jcy5yZXN0YXRlLmRldi9kZXBsb3kvY2xvdWQgZm9yXG4gICAqIGluZm9ybWF0aW9uIG9uIGRlcGxveWluZyBzZXJ2aWNlcyB0byBSZXN0YXRlIENsb3VkIGVudmlyb25tZW50cy4gRm9yIHN0YW5kYWxvbmUgZW52aXJvbm1lbnRzLCB0aGUgRUMyIGluc3RhbmNlXG4gICAqIHByb2ZpbGUgY2FuIGJlIHVzZWQgZGlyZWN0bHkgaW5zdGVhZCBvZiBjcmVhdGluZyBhIHNlcGFyYXRlIHJvbGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlSW52b2tlclJvbGUoc2NvcGU6IENvbnN0cnVjdCwgcHJvcHM6IFJlc3RhdGVDbG91ZEVudmlyb25tZW50UHJvcHMpOiBpYW0uSVJvbGUge1xuICAgIGNvbnN0IGludm9rZXJSb2xlID0gbmV3IGlhbS5Sb2xlKHNjb3BlLCBcIkludm9rZXJSb2xlXCIsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5BY2NvdW50UHJpbmNpcGFsKENPTkZJR1t0aGlzLnJlZ2lvbl0uYWNjb3VudElkKS53aXRoQ29uZGl0aW9ucyh7XG4gICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgIFwic3RzOkV4dGVybmFsSWRcIjogcHJvcHMuZW52aXJvbm1lbnRJZCxcbiAgICAgICAgICBcImF3czpQcmluY2lwYWxBcm5cIjogQ09ORklHW3RoaXMucmVnaW9uXS5wcmluY2lwYWxBcm4sXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICB9KTtcbiAgICBpbnZva2VyUm9sZS5hc3N1bWVSb2xlUG9saWN5IS5hZGRTdGF0ZW1lbnRzKFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBwcmluY2lwYWxzOiBbbmV3IGlhbS5BY2NvdW50UHJpbmNpcGFsKFwiNjU0NjU0MTU2NjI1XCIpXSxcbiAgICAgICAgYWN0aW9uczogW1wic3RzOlRhZ1Nlc3Npb25cIl0sXG4gICAgICB9KSxcbiAgICApO1xuICAgIHJldHVybiBpbnZva2VyUm9sZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZG1pbkVuZHBvaW50KHJlZ2lvbjogUmVzdGF0ZUNsb3VkUmVnaW9uLCBlbnZpcm9ubWVudElkOiBFbnZpcm9ubWVudElkKTogc3RyaW5nIHtcbiAgY29uc3QgYmFyZUVudklkID0gZW52aXJvbm1lbnRJZC5yZXBsYWNlKC9eZW52Xy8sIFwiXCIpO1xuICByZXR1cm4gYGh0dHBzOi8vJHtiYXJlRW52SWR9LmVudi4ke3JlZ2lvbn0ucmVzdGF0ZS5jbG91ZDo5MDcwYDtcbn1cblxuZnVuY3Rpb24gaW5ncmVzc0VuZHBvaW50KHJlZ2lvbjogUmVzdGF0ZUNsb3VkUmVnaW9uLCBlbnZpcm9ubWVudElkOiBFbnZpcm9ubWVudElkKTogc3RyaW5nIHtcbiAgY29uc3QgYmFyZUVudklkID0gZW52aXJvbm1lbnRJZC5yZXBsYWNlKC9eZW52Xy8sIFwiXCIpO1xuICByZXR1cm4gYGh0dHBzOi8vJHtiYXJlRW52SWR9LmVudi4ke3JlZ2lvbn0ucmVzdGF0ZS5jbG91ZGA7XG59XG5cbmV4cG9ydCB0eXBlIEVudmlyb25tZW50SWQgPSBgZW52XyR7c3RyaW5nfWA7XG5leHBvcnQgdHlwZSBSZXN0YXRlQ2xvdWRSZWdpb24gPSBcInVzXCIgfCBcImV1XCI7XG5cbmludGVyZmFjZSBSZWdpb25Db25maWcge1xuICBhY2NvdW50SWQ6IHN0cmluZztcbiAgcHJpbmNpcGFsQXJuOiBzdHJpbmc7XG59XG5cbmNvbnN0IFJFU1RBVEVfQ0xPVURfUkVHSU9OX1VTID0gXCJ1c1wiO1xuXG5jb25zdCBDT05GSUcgPSB7XG4gIHVzOiB7XG4gICAgYWNjb3VudElkOiBcIjY1NDY1NDE1NjYyNVwiLFxuICAgIHByaW5jaXBhbEFybjogXCJhcm46YXdzOmlhbTo6NjU0NjU0MTU2NjI1OnJvbGUvUmVzdGF0ZUNsb3VkXCIsXG4gIH0sXG4gIGV1OiB7XG4gICAgYWNjb3VudElkOiBcIjY1NDY1NDE1NjYyNVwiLFxuICAgIHByaW5jaXBhbEFybjogXCJhcm46YXdzOmlhbTo6NjU0NjU0MTU2NjI1OnJvbGUvUmVzdGF0ZUNsb3VkXCIsXG4gIH0sXG59IGFzIFJlY29yZDxSZXN0YXRlQ2xvdWRSZWdpb24sIFJlZ2lvbkNvbmZpZz47XG4iXX0=
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdGF0ZS1jbG91ZC1lbnZpcm9ubWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9yZXN0YXRlLWNvbnN0cnVjdHMvcmVzdGF0ZS1jbG91ZC1lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCx5REFBMkM7QUFFM0MsMkNBQXVDO0FBOEJ2Qzs7O0dBR0c7QUFDSCxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBUXBEOzs7Ozs7Ozs7T0FTRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBbUM7UUFDM0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLHVCQUF1QixDQUFDO1FBQ3RELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGlCQUFpQixDQUFDLEtBQWdCLEVBQUUsS0FBbUM7UUFDL0UsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDckQsU0FBUyxFQUFFLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsY0FBYyxDQUFDO2dCQUNoRixZQUFZLEVBQUU7b0JBQ1osZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGFBQWE7b0JBQ3JDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWTtpQkFDckQ7YUFDRixDQUFDO1NBQ0gsQ0FBQyxDQUFDO1FBQ0gsV0FBVyxDQUFDLGdCQUFpQixDQUFDLGFBQWEsQ0FDekMsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1lBQ3RCLFVBQVUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3RELE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO1NBQzVCLENBQUMsQ0FDSCxDQUFDO1FBQ0YsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBbERELDBEQWtEQztBQUVELFNBQVMsYUFBYSxDQUFDLE1BQTBCLEVBQUUsYUFBNEI7SUFDN0UsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckQsT0FBTyxXQUFXLFNBQVMsUUFBUSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pFLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxNQUEwQixFQUFFLGFBQTRCO0lBQy9FLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELE9BQU8sV0FBVyxTQUFTLFFBQVEsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxDQUFDO0FBVUQsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUM7QUFFckMsTUFBTSxNQUFNLEdBQUc7SUFDYixFQUFFLEVBQUU7UUFDRixTQUFTLEVBQUUsY0FBYztRQUN6QixZQUFZLEVBQUUsNkNBQTZDO0tBQzVEO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsU0FBUyxFQUFFLGNBQWM7UUFDekIsWUFBWSxFQUFFLDZDQUE2QztLQUM1RDtDQUMwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMy0yMDI1IC0gUmVzdGF0ZSBTb2Z0d2FyZSwgSW5jLiwgUmVzdGF0ZSBHbWJIXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFJlc3RhdGUgQ0RLIENvbnN0cnVjdCBMaWJyYXJ5LFxuICogd2hpY2ggaXMgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICpcbiAqIFlvdSBjYW4gZmluZCBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgaW4gZmlsZSBMSUNFTlNFIGluIHRoZSByb290XG4gKiBkaXJlY3Rvcnkgb2YgdGhpcyByZXBvc2l0b3J5IG9yIHBhY2thZ2UsIG9yIGF0XG4gKiBodHRwczovL2dpdGh1Yi5jb20vcmVzdGF0ZWRldi9zZGstdHlwZXNjcmlwdC9ibG9iL21haW4vTElDRU5TRVxuICovXG5cbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0ICogYXMgc2VjcmV0cyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgSVJlc3RhdGVFbnZpcm9ubWVudCB9IGZyb20gXCIuL3Jlc3RhdGUtZW52aXJvbm1lbnRcIjtcbmltcG9ydCB7IFNlcnZpY2VEZXBsb3llciB9IGZyb20gXCIuL3NlcnZpY2UtZGVwbG95ZXJcIjtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIFJlc3RhdGUgQ2xvdWQgZW52aXJvbm1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdGF0ZUNsb3VkRW52aXJvbm1lbnRQcm9wcyB7XG4gIC8qKlxuICAgKiBVbmlxdWUgaWQgb2YgdGhlIGVudmlyb25tZW50IChpbmNsdWRpbmcgdGhlIGBlbnZfYCBwcmVmaXgpLlxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnRJZDogRW52aXJvbm1lbnRJZDtcblxuICAvKipcbiAgICogQVBJIGtleSB3aXRoIGFkbWluaXN0cmF0aXZlIHBlcm1pc3Npb25zLiBVc2VkIHRvIG1hbmFnZSBzZXJ2aWNlcyB0byB0aGUgZW52aXJvbm1lbnQsIHNlZSB7QGxpbmsgU2VydmljZURlcGxveWVyfS5cbiAgICovXG4gIHJlYWRvbmx5IGFwaUtleTogc2VjcmV0cy5JU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBSZWdpb24gb2YgdGhlIGVudmlyb25tZW50LiBEZWZhdWx0cyB0byBgdXNgLiBWYWxpZCB2YWx1ZXM6IFtgdXNgLCBgZXVgXS5cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IFJlc3RhdGVDbG91ZFJlZ2lvbjtcblxuICAvKipcbiAgICogSW52b2tlciByb2xlIHRoYXQgY2FuIGJlIGFzc3VtZWQgYnkgUmVzdGF0ZSBDbG91ZC4gSWYgeW91IHVzZSB7QGxpbmsgU2VydmljZURlcGxveWVyfSB0byByZWdpc3RlciBMYW1iZGEgZnVuY3Rpb25zXG4gICAqIGFzIGhhbmRsZXJzLCB0aGUgbmVjZXNzYXJ5IGludm9rZSBwZXJtaXNzaW9ucyB3aWxsIGJlIGdyYW50ZWQgYXV0b21hdGljYWxseS5cbiAgICovXG4gIHJlYWRvbmx5IGludm9rZXJSb2xlPzogaWFtLklSb2xlO1xufVxuXG4vKipcbiAqIEEgZGlzdGluY3QgUmVzdGF0ZSBDbG91ZCBlbnZpcm9ubWVudCByZWZlcmVuY2UuIFRoaXMgaXMgYSBjb252ZW5pZW5jZSB1dGlsaXR5IGZvciBkZXBsb3lpbmcgdG8gdGhlXG4gKiBbUmVzdGF0ZSBDbG91ZF0oaHR0cHM6Ly9jbG91ZC5yZXN0YXRlLmRldi8pIGhvc3RlZCBzZXJ2aWNlLlxuICovXG5leHBvcnQgY2xhc3MgUmVzdGF0ZUNsb3VkRW52aXJvbm1lbnQgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUmVzdGF0ZUVudmlyb25tZW50IHtcbiAgcmVhZG9ubHkgZW52aXJvbm1lbnRJZDogRW52aXJvbm1lbnRJZDtcbiAgcmVhZG9ubHkgYWRtaW5Vcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgaW5ncmVzc1VybDogc3RyaW5nO1xuICByZWFkb25seSBhdXRoVG9rZW46IHNlY3JldHMuSVNlY3JldDtcbiAgcmVhZG9ubHkgaW52b2tlclJvbGU6IGlhbS5JUm9sZTtcbiAgcmVhZG9ubHkgcmVnaW9uOiBSZXN0YXRlQ2xvdWRSZWdpb247XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBSZXN0YXRlIENsb3VkIGVudmlyb25tZW50IHJlZmVyZW5jZSBhbG9uZyB3aXRoIGludm9rZXIuIE5vdGUgdGhhdCB0aGlzIGNvbnN0cnVjdCBpcyBvbmx5IGEgcG9pbnRlciB0b1xuICAgKiBhbiBleGlzdGluZyBSZXN0YXRlIENsb3VkIGVudmlyb25tZW50IGFuZCBkb2VzIG5vdCBjcmVhdGUgaXQuIFVubGVzcyB0aGUgYGludm9rZXJSb2xlYCBwcm9wZXJ0eSBpcyBzcGVjaWZpZWQsIGl0XG4gICAqIGRvZXMgY3JlYXRlIGEgbmV3IHJvbGUgdGhhdCBjYW4gYmUgYXNzdW1lZCBieSBSZXN0YXRlIENsb3VkLCB3aGljaCBpcyB1c2VkIHRvIHRoZSBzZXJ2aWNlIGhhbmRsZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgcGFyZW50IGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gaWQgY29uc3RydWN0IGlkXG4gICAqIEBwYXJhbSBwcm9wcyBlbnZpcm9ubWVudCBwcm9wZXJ0aWVzXG4gICAqIEByZXR1cm5zIFJlc3RhdGUgQ2xvdWQgZW52aXJvbm1lbnRcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSZXN0YXRlQ2xvdWRFbnZpcm9ubWVudFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmVudmlyb25tZW50SWQgPSBwcm9wcy5lbnZpcm9ubWVudElkO1xuICAgIHRoaXMucmVnaW9uID0gcHJvcHMucmVnaW9uID8/IFJFU1RBVEVfQ0xPVURfUkVHSU9OX1VTO1xuICAgIHRoaXMuaW52b2tlclJvbGUgPSBwcm9wcy5pbnZva2VyUm9sZSA/PyB0aGlzLmNyZWF0ZUludm9rZXJSb2xlKHRoaXMsIHByb3BzKTtcbiAgICB0aGlzLmF1dGhUb2tlbiA9IHByb3BzLmFwaUtleTtcbiAgICB0aGlzLmFkbWluVXJsID0gYWRtaW5FbmRwb2ludCh0aGlzLnJlZ2lvbiwgcHJvcHMuZW52aXJvbm1lbnRJZCk7XG4gICAgdGhpcy5pbmdyZXNzVXJsID0gaW5ncmVzc0VuZHBvaW50KHRoaXMucmVnaW9uLCBwcm9wcy5lbnZpcm9ubWVudElkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIHJvbGUgaXMgdXNlZCBieSBSZXN0YXRlIHRvIGludm9rZSBMYW1iZGEgc2VydmljZSBoYW5kbGVyczsgc2VlIGh0dHBzOi8vZG9jcy5yZXN0YXRlLmRldi9kZXBsb3kvY2xvdWQgZm9yXG4gICAqIGluZm9ybWF0aW9uIG9uIGRlcGxveWluZyBzZXJ2aWNlcyB0byBSZXN0YXRlIENsb3VkIGVudmlyb25tZW50cy4gRm9yIHN0YW5kYWxvbmUgZW52aXJvbm1lbnRzLCB0aGUgRUMyIGluc3RhbmNlXG4gICAqIHByb2ZpbGUgY2FuIGJlIHVzZWQgZGlyZWN0bHkgaW5zdGVhZCBvZiBjcmVhdGluZyBhIHNlcGFyYXRlIHJvbGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlSW52b2tlclJvbGUoc2NvcGU6IENvbnN0cnVjdCwgcHJvcHM6IFJlc3RhdGVDbG91ZEVudmlyb25tZW50UHJvcHMpOiBpYW0uSVJvbGUge1xuICAgIGNvbnN0IGludm9rZXJSb2xlID0gbmV3IGlhbS5Sb2xlKHNjb3BlLCBcIkludm9rZXJSb2xlXCIsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5BY2NvdW50UHJpbmNpcGFsKENPTkZJR1t0aGlzLnJlZ2lvbl0uYWNjb3VudElkKS53aXRoQ29uZGl0aW9ucyh7XG4gICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgIFwic3RzOkV4dGVybmFsSWRcIjogcHJvcHMuZW52aXJvbm1lbnRJZCxcbiAgICAgICAgICBcImF3czpQcmluY2lwYWxBcm5cIjogQ09ORklHW3RoaXMucmVnaW9uXS5wcmluY2lwYWxBcm4sXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICB9KTtcbiAgICBpbnZva2VyUm9sZS5hc3N1bWVSb2xlUG9saWN5IS5hZGRTdGF0ZW1lbnRzKFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBwcmluY2lwYWxzOiBbbmV3IGlhbS5BY2NvdW50UHJpbmNpcGFsKFwiNjU0NjU0MTU2NjI1XCIpXSxcbiAgICAgICAgYWN0aW9uczogW1wic3RzOlRhZ1Nlc3Npb25cIl0sXG4gICAgICB9KSxcbiAgICApO1xuICAgIHJldHVybiBpbnZva2VyUm9sZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZG1pbkVuZHBvaW50KHJlZ2lvbjogUmVzdGF0ZUNsb3VkUmVnaW9uLCBlbnZpcm9ubWVudElkOiBFbnZpcm9ubWVudElkKTogc3RyaW5nIHtcbiAgY29uc3QgYmFyZUVudklkID0gZW52aXJvbm1lbnRJZC5yZXBsYWNlKC9eZW52Xy8sIFwiXCIpO1xuICByZXR1cm4gYGh0dHBzOi8vJHtiYXJlRW52SWR9LmVudi4ke3JlZ2lvbn0ucmVzdGF0ZS5jbG91ZDo5MDcwYDtcbn1cblxuZnVuY3Rpb24gaW5ncmVzc0VuZHBvaW50KHJlZ2lvbjogUmVzdGF0ZUNsb3VkUmVnaW9uLCBlbnZpcm9ubWVudElkOiBFbnZpcm9ubWVudElkKTogc3RyaW5nIHtcbiAgY29uc3QgYmFyZUVudklkID0gZW52aXJvbm1lbnRJZC5yZXBsYWNlKC9eZW52Xy8sIFwiXCIpO1xuICByZXR1cm4gYGh0dHBzOi8vJHtiYXJlRW52SWR9LmVudi4ke3JlZ2lvbn0ucmVzdGF0ZS5jbG91ZGA7XG59XG5cbmV4cG9ydCB0eXBlIEVudmlyb25tZW50SWQgPSBgZW52XyR7c3RyaW5nfWA7XG5leHBvcnQgdHlwZSBSZXN0YXRlQ2xvdWRSZWdpb24gPSBcInVzXCIgfCBcImV1XCI7XG5cbmludGVyZmFjZSBSZWdpb25Db25maWcge1xuICBhY2NvdW50SWQ6IHN0cmluZztcbiAgcHJpbmNpcGFsQXJuOiBzdHJpbmc7XG59XG5cbmNvbnN0IFJFU1RBVEVfQ0xPVURfUkVHSU9OX1VTID0gXCJ1c1wiO1xuXG5jb25zdCBDT05GSUcgPSB7XG4gIHVzOiB7XG4gICAgYWNjb3VudElkOiBcIjY1NDY1NDE1NjYyNVwiLFxuICAgIHByaW5jaXBhbEFybjogXCJhcm46YXdzOmlhbTo6NjU0NjU0MTU2NjI1OnJvbGUvUmVzdGF0ZUNsb3VkXCIsXG4gIH0sXG4gIGV1OiB7XG4gICAgYWNjb3VudElkOiBcIjY1NDY1NDE1NjYyNVwiLFxuICAgIHByaW5jaXBhbEFybjogXCJhcm46YXdzOmlhbTo6NjU0NjU0MTU2NjI1OnJvbGUvUmVzdGF0ZUNsb3VkXCIsXG4gIH0sXG59IGFzIFJlY29yZDxSZXN0YXRlQ2xvdWRSZWdpb24sIFJlZ2lvbkNvbmZpZz47XG4iXX0=
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  /*
3
- * Copyright (c) 2024 - Restate Software, Inc., Restate GmbH
3
+ * Copyright (c) 2023-2025 - Restate Software, Inc., Restate GmbH
4
4
  *
5
- * This file is part of the Restate SDK for Node.js/TypeScript,
5
+ * This file is part of the Restate CDK Construct Library,
6
6
  * which is released under the MIT license.
7
7
  *
8
8
  * You can find a copy of the license in file LICENSE in the root
@@ -27,4 +27,4 @@ class RestateEnvironment {
27
27
  }
28
28
  }
29
29
  exports.RestateEnvironment = RestateEnvironment;
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdGF0ZS1lbnZpcm9ubWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9yZXN0YXRlLWNvbnN0cnVjdHMvcmVzdGF0ZS1lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOzs7QUErQkg7Ozs7R0FJRztBQUNILE1BQWEsa0JBQWtCO0lBSzdCLFlBQW9CLEtBQTBCO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQTBCO1FBQzlDLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUFkRCxnREFjQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjQgLSBSZXN0YXRlIFNvZnR3YXJlLCBJbmMuLCBSZXN0YXRlIEdtYkhcbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUmVzdGF0ZSBTREsgZm9yIE5vZGUuanMvVHlwZVNjcmlwdCxcbiAqIHdoaWNoIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqXG4gKiBZb3UgY2FuIGZpbmQgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGluIGZpbGUgTElDRU5TRSBpbiB0aGUgcm9vdFxuICogZGlyZWN0b3J5IG9mIHRoaXMgcmVwb3NpdG9yeSBvciBwYWNrYWdlLCBvciBhdFxuICogaHR0cHM6Ly9naXRodWIuY29tL3Jlc3RhdGVkZXYvc2RrLXR5cGVzY3JpcHQvYmxvYi9tYWluL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCAqIGFzIHNlY3JldHMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlclwiO1xuaW1wb3J0IHsgRnVuY3Rpb25PcHRpb25zIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IFNpbmdsZU5vZGVSZXN0YXRlRGVwbG95bWVudCB9IGZyb20gXCIuL3NpbmdsZS1ub2RlLXJlc3RhdGUtZGVwbG95bWVudFwiO1xuaW1wb3J0IHsgUmVzdGF0ZUNsb3VkRW52aXJvbm1lbnQgfSBmcm9tIFwiLi9yZXN0YXRlLWNsb3VkLWVudmlyb25tZW50XCI7XG5cbi8qKlxuICogQSBSZXN0YXRlIGVudmlyb25tZW50IGlzIGEgdW5pcXVlIGRlcGxveW1lbnQgb2YgdGhlIFJlc3RhdGUgc2VydmljZS4gSW1wbGVtZW50YXRpb25zIG9mIHRoaXMgaW50ZXJmYWNlIG1heSByZWZlciB0b1xuICogY2xvdWQgb3Igc2VsZi1tYW5hZ2VkIGVudmlyb25tZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUmVzdGF0ZUVudmlyb25tZW50IGV4dGVuZHMgUGljazxGdW5jdGlvbk9wdGlvbnMsIFwidnBjXCIgfCBcInZwY1N1Ym5ldHNcIiB8IFwic2VjdXJpdHlHcm91cHNcIj4ge1xuICAvKipcbiAgICogVGhlIGV4dGVybmFsIGludm9rZXIgcm9sZSB0aGF0IFJlc3RhdGUgY2FuIGFzc3VtZSB0byBleGVjdXRlIHNlcnZpY2UgaGFuZGxlcnMuIElmIGxlZnQgdW5zZXQsIGl0J3MgYXNzdW1lZCB0aGF0XG4gICAqIHRoZSBSZXN0YXRlIGRlcGxveW1lbnQgaGFzIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gaW52b2tlIHRoZSBzZXJ2aWNlIGhhbmRsZXJzIGRpcmVjdGx5LiBTZXR0aW5nIHRoaXMgcm9sZSBhbGxvd3NcbiAgICogdGhlIGNvbnN0cnVjdHMgdG8gZW5zdXJlIGFwcHJvcHJpYXRlIHBlcm1pc3Npb25zIGFyZSBncmFudGVkIHRvIGFueSBkZXBsb3llZCBzZXJ2aWNlIGhhbmRsZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgaW52b2tlclJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBhZG1pbiBlbmRwb2ludCBvZiB0aGUgUmVzdGF0ZSBlbnZpcm9ubWVudCB3aGVyZSBzZXJ2aWNlcyB3aWxsIGJlIGRlcGxveWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRtaW5Vcmw6IHN0cmluZztcblxuICAvKipcbiAgICogQXV0aGVudGljYXRpb24gdG9rZW4gdG8gaW5jbHVkZSBhcyBhIGJlYXJlciB0b2tlbiBpbiByZXF1ZXN0cyB0byB0aGUgYWRtaW4gZW5kcG9pbnQuXG4gICAqL1xuICByZWFkb25seSBhdXRoVG9rZW4/OiBzZWNyZXRzLklTZWNyZXQ7XG59XG5cbi8qKlxuICogQSByZWZlcmVuY2UgdG8gYSBSZXN0YXRlIEVudmlyb25tZW50IHRoYXQgY2FuIGJlIHVzZWQgYXMgYSB0YXJnZXQgZm9yIGRlcGxveWluZyBzZXJ2aWNlcy4gVXNlIHtAbGluayBmcm9tQXR0cmlidXRlc31cbiAqIHRvIGluc3RhbnRpYXRlIGFuIGFyYml0cmFyeSBwb2ludGVyIHRvIGFuIGV4aXN0aW5nIGVudmlyb25tZW50LCBvciBvbmUgb2YgdGhlIHtAbGluayBTaW5nbGVOb2RlUmVzdGF0ZURlcGxveW1lbnR9IG9yXG4gKiB7QGxpbmsgUmVzdGF0ZUNsb3VkRW52aXJvbm1lbnR9IGNvbnZlbmllbmNlIGNsYXNzZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXN0YXRlRW52aXJvbm1lbnQgaW1wbGVtZW50cyBJUmVzdGF0ZUVudmlyb25tZW50IHtcbiAgcmVhZG9ubHkgYWRtaW5Vcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgYXV0aFRva2VuPzogc2VjcmV0cy5JU2VjcmV0O1xuICByZWFkb25seSBpbnZva2VyUm9sZT86IGlhbS5JUm9sZTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByb3BzOiBJUmVzdGF0ZUVudmlyb25tZW50KSB7XG4gICAgdGhpcy5hZG1pblVybCA9IHByb3BzLmFkbWluVXJsO1xuICAgIHRoaXMuaW52b2tlclJvbGUgPSBwcm9wcy5pbnZva2VyUm9sZTtcbiAgICB0aGlzLmF1dGhUb2tlbiA9IHByb3BzLmF1dGhUb2tlbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQXR0cmlidXRlcyhwcm9wczogSVJlc3RhdGVFbnZpcm9ubWVudCk6IElSZXN0YXRlRW52aXJvbm1lbnQge1xuICAgIHJldHVybiBuZXcgUmVzdGF0ZUVudmlyb25tZW50KHByb3BzKTtcbiAgfVxufVxuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdGF0ZS1lbnZpcm9ubWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9yZXN0YXRlLWNvbnN0cnVjdHMvcmVzdGF0ZS1lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOzs7QUErQkg7Ozs7R0FJRztBQUNILE1BQWEsa0JBQWtCO0lBSzdCLFlBQW9CLEtBQTBCO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQTBCO1FBQzlDLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUFkRCxnREFjQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjMtMjAyNSAtIFJlc3RhdGUgU29mdHdhcmUsIEluYy4sIFJlc3RhdGUgR21iSFxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBSZXN0YXRlIENESyBDb25zdHJ1Y3QgTGlicmFyeSxcbiAqIHdoaWNoIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqXG4gKiBZb3UgY2FuIGZpbmQgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGluIGZpbGUgTElDRU5TRSBpbiB0aGUgcm9vdFxuICogZGlyZWN0b3J5IG9mIHRoaXMgcmVwb3NpdG9yeSBvciBwYWNrYWdlLCBvciBhdFxuICogaHR0cHM6Ly9naXRodWIuY29tL3Jlc3RhdGVkZXYvc2RrLXR5cGVzY3JpcHQvYmxvYi9tYWluL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCAqIGFzIHNlY3JldHMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlclwiO1xuaW1wb3J0IHsgRnVuY3Rpb25PcHRpb25zIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IFNpbmdsZU5vZGVSZXN0YXRlRGVwbG95bWVudCB9IGZyb20gXCIuL3NpbmdsZS1ub2RlLXJlc3RhdGUtZGVwbG95bWVudFwiO1xuaW1wb3J0IHsgUmVzdGF0ZUNsb3VkRW52aXJvbm1lbnQgfSBmcm9tIFwiLi9yZXN0YXRlLWNsb3VkLWVudmlyb25tZW50XCI7XG5cbi8qKlxuICogQSBSZXN0YXRlIGVudmlyb25tZW50IGlzIGEgdW5pcXVlIGRlcGxveW1lbnQgb2YgdGhlIFJlc3RhdGUgc2VydmljZS4gSW1wbGVtZW50YXRpb25zIG9mIHRoaXMgaW50ZXJmYWNlIG1heSByZWZlciB0b1xuICogY2xvdWQgb3Igc2VsZi1tYW5hZ2VkIGVudmlyb25tZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUmVzdGF0ZUVudmlyb25tZW50IGV4dGVuZHMgUGljazxGdW5jdGlvbk9wdGlvbnMsIFwidnBjXCIgfCBcInZwY1N1Ym5ldHNcIiB8IFwic2VjdXJpdHlHcm91cHNcIj4ge1xuICAvKipcbiAgICogVGhlIGV4dGVybmFsIGludm9rZXIgcm9sZSB0aGF0IFJlc3RhdGUgY2FuIGFzc3VtZSB0byBleGVjdXRlIHNlcnZpY2UgaGFuZGxlcnMuIElmIGxlZnQgdW5zZXQsIGl0J3MgYXNzdW1lZCB0aGF0XG4gICAqIHRoZSBSZXN0YXRlIGRlcGxveW1lbnQgaGFzIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gaW52b2tlIHRoZSBzZXJ2aWNlIGhhbmRsZXJzIGRpcmVjdGx5LiBTZXR0aW5nIHRoaXMgcm9sZSBhbGxvd3NcbiAgICogdGhlIGNvbnN0cnVjdHMgdG8gZW5zdXJlIGFwcHJvcHJpYXRlIHBlcm1pc3Npb25zIGFyZSBncmFudGVkIHRvIGFueSBkZXBsb3llZCBzZXJ2aWNlIGhhbmRsZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgaW52b2tlclJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBhZG1pbiBlbmRwb2ludCBvZiB0aGUgUmVzdGF0ZSBlbnZpcm9ubWVudCB3aGVyZSBzZXJ2aWNlcyB3aWxsIGJlIGRlcGxveWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRtaW5Vcmw6IHN0cmluZztcblxuICAvKipcbiAgICogQXV0aGVudGljYXRpb24gdG9rZW4gdG8gaW5jbHVkZSBhcyBhIGJlYXJlciB0b2tlbiBpbiByZXF1ZXN0cyB0byB0aGUgYWRtaW4gZW5kcG9pbnQuXG4gICAqL1xuICByZWFkb25seSBhdXRoVG9rZW4/OiBzZWNyZXRzLklTZWNyZXQ7XG59XG5cbi8qKlxuICogQSByZWZlcmVuY2UgdG8gYSBSZXN0YXRlIEVudmlyb25tZW50IHRoYXQgY2FuIGJlIHVzZWQgYXMgYSB0YXJnZXQgZm9yIGRlcGxveWluZyBzZXJ2aWNlcy4gVXNlIHtAbGluayBmcm9tQXR0cmlidXRlc31cbiAqIHRvIGluc3RhbnRpYXRlIGFuIGFyYml0cmFyeSBwb2ludGVyIHRvIGFuIGV4aXN0aW5nIGVudmlyb25tZW50LCBvciBvbmUgb2YgdGhlIHtAbGluayBTaW5nbGVOb2RlUmVzdGF0ZURlcGxveW1lbnR9IG9yXG4gKiB7QGxpbmsgUmVzdGF0ZUNsb3VkRW52aXJvbm1lbnR9IGNvbnZlbmllbmNlIGNsYXNzZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXN0YXRlRW52aXJvbm1lbnQgaW1wbGVtZW50cyBJUmVzdGF0ZUVudmlyb25tZW50IHtcbiAgcmVhZG9ubHkgYWRtaW5Vcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgYXV0aFRva2VuPzogc2VjcmV0cy5JU2VjcmV0O1xuICByZWFkb25seSBpbnZva2VyUm9sZT86IGlhbS5JUm9sZTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByb3BzOiBJUmVzdGF0ZUVudmlyb25tZW50KSB7XG4gICAgdGhpcy5hZG1pblVybCA9IHByb3BzLmFkbWluVXJsO1xuICAgIHRoaXMuaW52b2tlclJvbGUgPSBwcm9wcy5pbnZva2VyUm9sZTtcbiAgICB0aGlzLmF1dGhUb2tlbiA9IHByb3BzLmF1dGhUb2tlbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQXR0cmlidXRlcyhwcm9wczogSVJlc3RhdGVFbnZpcm9ubWVudCk6IElSZXN0YXRlRW52aXJvbm1lbnQge1xuICAgIHJldHVybiBuZXcgUmVzdGF0ZUVudmlyb25tZW50KHByb3BzKTtcbiAgfVxufVxuIl19
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  /*
3
- * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH
3
+ * Copyright (c) 2023-2025 - Restate Software, Inc., Restate GmbH
4
4
  *
5
- * This file is part of the Restate SDK for Node.js/TypeScript,
5
+ * This file is part of the Restate CDK Construct Library,
6
6
  * which is released under the MIT license.
7
7
  *
8
8
  * You can find a copy of the license in file LICENSE in the root
@@ -92,7 +92,7 @@ class ServiceDeployer extends constructs_1.Construct {
92
92
  bundling: props?.bundling ?? {
93
93
  minify: false,
94
94
  sourceMap: true,
95
- externalModules: ["@aws-sdk/*", "aws-sdk"],
95
+ externalModules: ["@aws-sdk/*"],
96
96
  platform: "node",
97
97
  target: "node22",
98
98
  },
@@ -192,4 +192,4 @@ class ServiceDeployer extends constructs_1.Construct {
192
192
  }
193
193
  }
194
194
  exports.ServiceDeployer = ServiceDeployer;
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1kZXBsb3llci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9yZXN0YXRlLWNvbnN0cnVjdHMvc2VydmljZS1kZXBsb3llci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCwwREFBNkI7QUFDN0IsMkNBQXVDO0FBQ3ZDLGlEQUFtQztBQUNuQyxpRUFBbUQ7QUFDbkQseURBQTJDO0FBQzNDLCtEQUFpRDtBQUNqRCwyRUFBNkQ7QUFDN0QsMkRBQTZDO0FBSzdDLE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBNkNsRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsc0JBQVM7SUFPNUMsWUFDRSxLQUFnQixFQUNoQixFQUFVO0lBQ1Y7OztPQUdHO0lBQ0gsS0FnQjJDO1FBRTNDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUN2RSxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVk7WUFDakMsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ3pCLFdBQVcsRUFBRSxxQ0FBcUM7WUFDbEQsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLElBQUksbUJBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLG1DQUFtQyxDQUFDO1lBQ2hGLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTTtZQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDckQsVUFBVSxFQUFFLEdBQUc7WUFDZixPQUFPLEVB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LypcbiAqIENvcHlyaWdodCAoYykgMjAyMy0yMDI0IC0gUmVzdGF0ZSBTb2Z0d2FyZSwgSW5jLiwgUmVzdGF0ZSBHbWJIXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFJlc3RhdGUgU0RLIGZvciBOb2RlLmpzL1R5cGVTY3JpcHQsXG4gKiB3aGljaCBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKlxuICogWW91IGNhbiBmaW5kIGEgY29weSBvZiB0aGUgbGljZW5zZSBpbiBmaWxlIExJQ0VOU0UgaW4gdGhlIHJvb3RcbiAqIGRpcmVjdG9yeSBvZiB0aGlzIHJlcG9zaXRvcnkgb3IgcGFja2FnZSwgb3IgYXRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXN0YXRlZGV2L3Nkay10eXBlc2NyaXB0L2Jsb2IvbWFpbi9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGNyIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0ICogYXMgbGFtYmRhX25vZGUgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCI7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xuaW1wb3J0ICogYXMgc2VjcmV0cyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBJUmVzdGF0ZUVudmlyb25tZW50IH0gZnJvbSBcIi4vcmVzdGF0ZS1lbnZpcm9ubWVudFwiO1xuaW1wb3J0IHsgUmVnaXN0cmF0aW9uUHJvcGVydGllcyB9IGZyb20gXCIuL3JlZ2lzdGVyLXNlcnZpY2UtaGFuZGxlclwiO1xuXG5jb25zdCBERUZBVUxUX1RJTUVPVVQgPSBjZGsuRHVyYXRpb24uc2Vjb25kcygxODApO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VSZWdpc3RyYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IEFSTiBmb3IgdGhlIGF1dGhlbnRpY2F0aW9uIHRva2VuIHRvIHVzZSB3aGVuIGNhbGxpbmcgdGhlIGFkbWluIEFQSS4gVGFrZXMgcHJlY2VkZW5jZVxuICAgKiBvdmVyIHRoZSBlbnZpcm9ubWVudCdzIHRva2VuLlxuICAgKi9cbiAgYXV0aFRva2VuPzogc2VjcmV0cy5JU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNraXAgZ3JhbnRpbmcgdGhlIGludm9rZXIgcm9sZSBwZXJtaXNzaW9uIHRvIGludm9rZSB0aGUgc2VydmljZSBoYW5kbGVyLiBUaGUgZGVwbG95ZXIgYnkgZGVmYXVsdFxuICAgKiB3aWxsIGdyYW50IHRoZSBpbnZva2VyIHJvbGUgcGVybWlzc2lvbiB0byBpbnZva2UgdGhlIGhhbmRsZXIsIGJ1dCB5b3UgY2FuIHNldCB0aGlzIHRvIGB0cnVlYCB0byBoYW5kbGUgdGhpc1xuICAgKiBtYW51YWxseS5cbiAgICovXG4gIHNraXBJbnZva2VGdW5jdGlvbkdyYW50PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUHJpdmF0ZSBzZXJ2aWNlcyBhcmUgb25seSBhdmFpbGFibGUgdG8gb3RoZXIgUmVzdGF0ZSBzZXJ2aWNlcyBpbiB0aGUgc2FtZSBlbnZpcm9ubWVudCwgYW5kIGFyZSBub3QgYWNjZXNzaWJsZSBmb3JcbiAgICogaW5ncmVzcy1iYXNlZCBpbnZvY2F0aW9uLiBJZiBtdWx0aXBsZSBzZXJ2aWNlcyBhcmUgZXhwb3NlZCBieSB0aGUgc2FtZSBoYW5kbGVyLCBhbGwgb2YgdGhlbSB3aWxsIGJlIHVwZGF0ZWQuXG4gICAqIERlZmF1bHQ6IGBmYWxzZWAsIGkuZS4gc2VydmljZXMgd2lsbCBiZSBtYWRlIHB1YmxpYyBhbmQgcmVhY2hhYmxlIHZpYSBpbmdyZXNzIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLnJlc3RhdGUuZGV2L29wZXJhdGUvcmVnaXN0cmF0aW9uI3ByaXZhdGUtc2VydmljZXNcbiAgICovXG4gIHByaXZhdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGR1bW15IHBhcmFtZXRlciB0byBmb3JjZSBDbG91ZEZvcm1hdGlvbiB0byB1cGRhdGUgdGhlIGRlcGxveW1lbnQgd2hlbiB0aGUgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBVc2VmdWwgaWZcbiAgICogeW91IHdhbnQgdG8gdGFyZ2V0IHRoZSBcImxhdGVzdCB2ZXJzaW9uXCIgb2YgYSBzZXJ2aWNlIGhhbmRsZXIgYW5kIG5lZWQgdG8gZm9yY2UgYSBkZXBsb3ltZW50IGluIG9yZGVyIHRvIHRyaWdnZXJcbiAgICogZGlzY292ZXJ5LiBTZXQgdGhpcyB0byBhIG5ldyB2YWx1ZSBldmVyeSB0aW1lIHlvdSB3YW50IHRvIGZvcmNlIGEgc2VydmljZSByZWdpc3RyYXRpb24gdG8gaGFwcGVuLCBlLmcuIGEgdGltZXN0YW1wLlxuICAgKi9cbiAgY29uZmlndXJhdGlvblZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFjY2VwdCBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZXMuXG4gICAqL1xuICBpbnNlY3VyZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBjdXN0b20gYWRtaW4gZW5kcG9pbnQgVVJMLCBvdmVycmlkaW5nIHRoZSBvbmUgZXhwb3NlZCBieSB0aGUgdGFyZ2V0IGVudmlyb25tZW50LiBZb3UgbWF5IG5lZWQgdGhpcyBpZlxuICAgKiB0aGUgYEVudmlyb25tZW50YCBjb25zdHJ1Y3QgaXMgcmVwb3J0aW5nIGEgZGlmZmVyZW50IFVSTCBmcm9tIHRoZSBvbmUgdGhhdCB0aGUgZGVwbG95ZXIgY2FuIHJlYWNoLCBlLmcuIGlmIHlvdXJcbiAgICogUmVzdGF0ZSBzZXJ2aWNlIGlzIGJlaGluZCBhIGxvYWQgYmFsYW5jZXIuXG4gICAqL1xuICBhZG1pblVybD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZWdpc3RlciBMYW1iZGEtYmFja2VkIHJlc3RhdGUgc2VydmljZXMgd2l0aCBSZXN0YXRlIGVudmlyb25tZW50cy5cbiAqXG4gKiBZb3UgY2FuIHJldXNlIHRoZSBzYW1lIGRlcGxveWVyIHRvIHJlZ2lzdGVyIHRoZSBzZXJ2aWNlcyBleHBvc2VkIGJ5IG11bHRpcGxlIGhhbmRsZXJzLiBZb3UgY2FuIGFsc28gcmV1c2UgdGhlXG4gKiBkZXBsb3llciB0byB0YXJnZXQgbXVsdGlwbGUgUmVzdGF0ZSBlbnZpcm9ubWVudHMsIHByb3ZpZGVkIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGNvbXBhdGlibGUgKGUuZy4gdGhlIFJlc3RhdGVcbiAqIGVudmlyb25tZW50cyBpdCBuZWVkcyB0byBjb21tdW5pY2F0ZSB3aXRoIGFyZSBhbGwgYWNjZXNzaWJsZSBmcm9tIHRoZSBzYW1lIFZQQyBhbmQgU2VjdXJpdHkgR3JvdXBzLCBhY2NlcHQgdGhlIHNhbWVcbiAqIGF1dGhlbnRpY2F0aW9uIHRva2VuLCBhbmQgc28gb24pLiBDb252ZXJzZWx5LCB5b3UgY2FuIGNyZWF0ZSBtdWx0aXBsZSBkZXBsb3llcnMgaW4gY2FzZXMgd2hlbiB5b3UgbmVlZCB0byBkZXBsb3kgdG9cbiAqIG11bHRpcGxlIGVudmlyb25tZW50cyB0aGF0IHJlcXVpcmUgZGlzdGluY3QgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBEZXBsb3ltZW50IGxvZ3MgYXJlIHJldGFpbmVkIGZvciAzMCBkYXlzIGJ5IGRlZmF1bHQuXG4gKlxuICogQHNlZSB7cmVnaXN0ZXJ9XG4gKi9cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlRGVwbG95ZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKiogVGhlIGN1c3RvbSByZXNvdXJjZSBwcm92aWRlciBmb3IgaGFuZGxpbmcgXCJkZXBsb3ltZW50XCIgcmVzb3VyY2VzLiAqL1xuICByZWFkb25seSBkZXBsb3ltZW50UmVzb3VyY2VQcm92aWRlcjogY3IuUHJvdmlkZXI7XG4gIHJlYWRvbmx5IGV2ZW50SGFuZGxlcjogbGFtYmRhX25vZGUuTm9kZWpzRnVuY3Rpb247XG5cbiAgcHJpdmF0ZSBpbnZvY2F0aW9uUG9saWN5PzogaWFtLlBvbGljeTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogQWxsb3dzIHRoZSBjdXN0b20gcmVzb3VyY2UgZXZlbnQgaGFuZGxlciBwcm9wZXJ0aWVzIHRvIGJlIG92ZXJyaWRkZW4uIFRoZSBtYWluIHVzZSBjYXNlIGZvciB0aGlzIGlzIHNwZWNpZnlpbmdcbiAgICAgKiBWUEMgYW5kIHNlY3VyaXR5IGdyb3VwIHNldHRpbmdzIGZvciBSZXN0YXRlIGVudmlyb25tZW50cyB0aGF0IHJlcXVpcmUgaXQuXG4gICAgICovXG4gICAgcHJvcHM/OiBQaWNrPFxuICAgICAgbGFtYmRhX25vZGUuTm9kZWpzRnVuY3Rpb25Qcm9wcyxcbiAgICAgIHwgXCJhbGxvd1B1YmxpY1N1Ym5ldFwiXG4gICAgICB8IFwiYXJjaGl0ZWN0dXJlXCJcbiAgICAgIHwgXCJydW50aW1lXCJcbiAgICAgIHwgXCJidW5kbGluZ1wiXG4gICAgICB8IFwiZGVwc0xvY2tGaWxlUGF0aFwiXG4gICAgICB8IFwiY29kZVwiXG4gICAgICB8IFwiZW50cnlcIlxuICAgICAgfCBcImZ1bmN0aW9uTmFtZVwiXG4gICAgICB8IFwibG9nR3JvdXBcIlxuICAgICAgfCBcInNlY3VyaXR5R3JvdXBzXCJcbiAgICAgIHwgXCJ0aW1lb3V0XCJcbiAgICAgIHwgXCJ2cGNcIlxuICAgICAgfCBcInZwY1N1Ym5ldHNcIlxuICAgID4gJlxuICAgICAgUGljazxsb2dzLkxvZ0dyb3VwUHJvcHMsIFwicmVtb3ZhbFBvbGljeVwiPixcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuZXZlbnRIYW5kbGVyID0gbmV3IGxhbWJkYV9ub2RlLk5vZGVqc0Z1bmN0aW9uKHRoaXMsIFwiRXZlbnRIYW5kbGVyXCIsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogcHJvcHM/LmZ1bmN0aW9uTmFtZSxcbiAgICAgIGxvZ0dyb3VwOiBwcm9wcz8ubG9nR3JvdXAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJSZXN0YXRlIGN1c3RvbSByZWdpc3RyYXRpb24gaGFuZGxlclwiLFxuICAgICAgZW50cnk6IHByb3BzPy5lbnRyeSA/PyBwYXRoLmpvaW4oX19kaXJuYW1lLCBcInJlZ2lzdGVyLXNlcnZpY2UtaGFuZGxlci9pbmRleC5qc1wiKSxcbiAgICAgIGFyY2hpdGVjdHVyZTogcHJvcHM/LmFyY2hpdGVjdHVyZSA/PyBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgIHJ1bnRpbWU6IHByb3BzPy5ydW50aW1lID8/IGxhbWJkYS5SdW50aW1lLk5PREVKU18yMl9YLFxuICAgICAgbWVtb3J5U2l6ZTogMTI4LFxuICAgICAgdGltZW91dDogcHJvcHM/LnRpbWVvdXQgPz8gREVGQVVMVF9USU1FT1VULFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgTk9ERV9PUFRJT05TOiBcIi0tZW5hYmxlLXNvdXJjZS1tYXBzXCIsXG4gICAgICB9LFxuICAgICAgYnVuZGxpbmc6IHByb3BzPy5idW5kbGluZyA/PyB7XG4gICAgICAgIG1pbmlmeTogZmFsc2UsXG4gICAgICAgIHNvdXJjZU1hcDogdHJ1ZSxcbiAgICAgICAgZXh0ZXJuYWxNb2R1bGVzOiBbXCJAYXdzLXNkay8qXCIsIFwiYXdzLXNka1wiXSxcbiAgICAgICAgcGxhdGZvcm06IFwibm9kZVwiLFxuICAgICAgICB0YXJnZXQ6IFwibm9kZTIyXCIsXG4gICAgICB9LFxuICAgICAgZGVwc0xvY2tGaWxlUGF0aDogcHJvcHM/LmRlcHNMb2NrRmlsZVBhdGgsXG4gICAgICAuLi4ocHJvcHM/LnZwY1xuICAgICAgICA/ICh7XG4gICAgICAgICAgICB2cGM6IHByb3BzPy52cGMsXG4gICAgICAgICAgICB2cGNTdWJuZXRzOiBwcm9wcz8udnBjU3VibmV0cyxcbiAgICAgICAgICAgIHNlY3VyaXR5R3JvdXBzOiBwcm9wcz8uc2VjdXJpdHlHcm91cHMsXG4gICAgICAgICAgfSBzYXRpc2ZpZXMgUGljazxsYW1iZGEuRnVuY3Rpb25PcHRpb25zLCBcInZwY1wiIHwgXCJ2cGNTdWJuZXRzXCIgfCBcInNlY3VyaXR5R3JvdXBzXCI+KVxuICAgICAgICA6IHt9KSxcbiAgICAgIGFsbG93UHVibGljU3VibmV0OiBwcm9wcz8uYWxsb3dQdWJsaWNTdWJuZXQsXG4gICAgfSk7XG5cbiAgICBpZiAoIXByb3BzPy5sb2dHcm91cCkge1xuICAgICAgLy8gQnkgZGVmYXVsdCwgTGFtYmRhIEZ1bmN0aW9ucyBoYXZlIGEgbG9nIGdyb3VwIHdpdGggbmV2ZXItZXhwaXJpbmcgcmV0ZW50aW9uIHBvbGljeS5cbiAgICAgIG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsIFwiRGVwbG95bWVudExvZ3NcIiwge1xuICAgICAgICBsb2dHcm91cE5hbWU6IGAvYXdzL2xhbWJkYS8ke3RoaXMuZXZlbnRIYW5kbGVyLmZ1bmN0aW9uTmFtZX1gLFxuICAgICAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfTU9OVEgsXG4gICAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzPy5yZW1vdmFsUG9saWN5ID8/IGNkay5SZW1vdmFsUG9saWN5LlJFVEFJTl9PTl9VUERBVEVfT1JfREVMRVRFLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5kZXBsb3ltZW50UmVzb3VyY2VQcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCBcIkN1c3RvbVJlc291cmNlUHJvdmlkZXJcIiwge1xuICAgICAgb25FdmVudEhhbmRsZXI6IHRoaXMuZXZlbnRIYW5kbGVyLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcGxveSBhIExhbWJkYS1iYWNrZWQgUmVzdGF0ZSBoYW5kbGVyIHRvIGEgZ2l2ZW4gZW52aXJvbm1lbnQuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBhIGNoYW5nZSBpbiB0aGUgaGFuZGxlciBwcm9wZXJ0aWVzIGlzIG5lY2Vzc2FyeSB0byB0cmlnZ2VyIHJlLWRpc2NvdmVyeSBkdWUgdG8gaG93IENsb3VkRm9ybWF0aW9uIHVwZGF0ZXNcbiAgICogd29yay4gSWYgeW91IGRlcGxveSBhIGZpeGVkIExhbWJkYSBhbGlhcyBzdWNoIGFzIGAkTEFURVNUYCB3aGljaCBpc24ndCBjaGFuZ2luZyBvbiBldmVyeSBoYW5kbGVyIGNvZGUgb3JcbiAgICogY29uZmlndXJhdGlvbiB1cGRhdGUsIHlvdSB3aWxsIHdhbnQgdG8gc2V0IHRoZSBgY29uZmlndXJhdGlvblZlcnNpb25gIHByb3BlcnR5IGluIGBvcHRpb25zYCB0byBhIG5ldyB2YWx1ZSAoZS5nLiBhXG4gICAqIHRpbWVzdGFtcCkgdG8gZW5zdXJlIGFuIHVwZGF0ZSB0byB0aGUgUmVzdGF0ZSBlbnZpcm9ubWVudCBpcyB0cmlnZ2VyZWQgb24gc3RhY2sgZGVwbG95bWVudC5cbiAgICpcbiAgICogQHBhcmFtIGhhbmRsZXIgc2VydmljZSBoYW5kbGVyIC0gbXVzdCBiZSBhIHNwZWNpZmljIGZ1bmN0aW9uIHZlcnNpb24sIHVzZSBcImxhdGVzdFwiIGlmIHlvdSBkb24ndCBjYXJlIGFib3V0IGV4cGxpY2l0IHZlcnNpb25pbmdcbiAgICogQHBhcmFtIGVudmlyb25tZW50IHRhcmdldCBSZXN0YXRlIGVudmlyb25tZW50XG4gICAqIEBwYXJhbSBvcHRpb25zIGFkZGl0aW9uYWwgb3B0aW9uczsgc2VlIGZpZWxkIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHNcbiAgICogQHNlZSB7U2VydmljZVJlZ2lzdHJhdGlvblByb3BzfVxuICAgKi9cbiAgcmVnaXN0ZXIoaGFuZGxlcjogbGFtYmRhLklWZXJzaW9uLCBlbnZpcm9ubWVudDogSVJlc3RhdGVFbnZpcm9ubWVudCwgb3B0aW9ucz86IFNlcnZpY2VSZWdpc3RyYXRpb25Qcm9wcykge1xuICAgIHRoaXMucmVnaXN0ZXJTZXJ2aWNlSW50ZXJuYWwodW5kZWZpbmVkLCBoYW5kbGVyLCBlbnZpcm9ubWVudCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogRGVwbG95IGEgTGFtYmRhLWJhY2tlZCBSZXN0YXRlIGhhbmRsZXIgdG8gYSBnaXZlbiBlbnZpcm9ubWVudCwgZW5zdXJpbmcgdGhhdCBhIHBhcnRpY3VsYXIgc2VydmljZSBuYW1lIGV4aXN0cy5cbiAgICpcbiAgICogTm90ZSB0aGF0IGEgY2hhbmdlIGluIHRoZSBoYW5kbGVyIHByb3BlcnRpZXMgaXMgbmVjZXNzYXJ5IHRvIHRyaWdnZXIgcmUtZGlzY292ZXJ5IGR1ZSB0byBob3cgQ2xvdWRGb3JtYXRpb24gdXBkYXRlc1xuICAgKiB3b3JrLiBJZiB5b3UgZGVwbG95IGEgZml4ZWQgTGFtYmRhIGFsaWFzIHN1Y2ggYXMgYCRMQVRFU1RgIHdoaWNoIGlzbid0IGNoYW5naW5nIG9uIGV2ZXJ5IGhhbmRsZXIgY29kZSBvclxuICAgKiBjb25maWd1cmF0aW9uIHVwZGF0ZSwgeW91IHdpbGwgd2FudCB0byBzZXQgdGhlIGBjb25maWd1cmF0aW9uVmVyc2lvbmAgcHJvcGVydHkgaW4gYG9wdGlvbnNgIHRvIGEgbmV3IHZhbHVlIChlLmcuIGFcbiAgICogdGltZXN0YW1wKSB0byBlbnN1cmUgYW4gdXBkYXRlIHRvIHRoZSBSZXN0YXRlIGVudmlyb25tZW50IGlzIHRyaWdnZXJlZCBvbiBzdGFjayBkZXBsb3ltZW50LlxuICAgKlxuICAgKiBAcGFyYW0gc2VydmljZU5hbWUgdGhlIHNlcnZpY2UgbmFtZSB3aXRoaW4gUmVzdGF0ZSAtIGFzIGEgc2FmZXR5IG1lY2hhbmlzbSwgdGhpcyBtdXN0IG1hdGNoIHRoZSBzZXJ2aWNlJ3NcbiAgICogICAgICAgIHNlbGYtcmVwb3J0ZWQgbmFtZSBkdXJpbmcgZGlzY292ZXJ5OyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgc2VydmljZXMsIG9uZSBvZiB0aGVtIG11c3QgbWF0Y2ggb3IgdGhlXG4gICAqICAgICAgICBkZXBsb3ltZW50IGZhaWxzXG4gICAqIEBwYXJhbSBoYW5kbGVyIHNlcnZpY2UgaGFuZGxlciAtIG11c3QgYmUgYSBzcGVjaWZpYyBmdW5jdGlvbiB2ZXJzaW9uLCB1c2UgXCJsYXRlc3RcIiBpZiB5b3UgZG9uJ3QgY2FyZSBhYm91dCBleHBsaWNpdCB2ZXJzaW9uaW5nXG4gICAqIEBwYXJhbSBlbnZpcm9ubWVudCB0YXJnZXQgUmVzdGF0ZSBlbnZpcm9ubWVudFxuICAgKiBAcGFyYW0gb3B0aW9ucyBhZGRpdGlvbmFsIG9wdGlvbnM7IHNlZSBmaWVsZCBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzXG4gICAqL1xuICBkZXBsb3lTZXJ2aWNlKFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgaGFuZGxlcjogbGFtYmRhLklWZXJzaW9uLFxuICAgIGVudmlyb25tZW50OiBJUmVzdGF0ZUVudmlyb25tZW50LFxuICAgIG9wdGlvbnM/OiBTZXJ2aWNlUmVnaXN0cmF0aW9uUHJvcHMsXG4gICkge1xuICAgIHRoaXMucmVnaXN0ZXJTZXJ2aWNlSW50ZXJuYWwoc2VydmljZU5hbWUsIGhhbmRsZXIsIGVudmlyb25tZW50LCBvcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJTZXJ2aWNlSW50ZXJuYWwoXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBoYW5kbGVyOiBsYW1iZGEuSVZlcnNpb24sXG4gICAgZW52aXJvbm1lbnQ6IElSZXN0YXRlRW52aXJvbm1lbnQsXG4gICAgb3B0aW9ucz86IFNlcnZpY2VSZWdpc3RyYXRpb25Qcm9wcyxcbiAgKSB7XG4gICAgY29uc3QgYXV0aFRva2VuID0gb3B0aW9ucz8uYXV0aFRva2VuID8/IGVudmlyb25tZW50LmF1dGhUb2tlbjtcbiAgICBhdXRoVG9rZW4/LmdyYW50UmVhZCh0aGlzLmRlcGxveW1lbnRSZXNvdXJjZVByb3ZpZGVyLm9uRXZlbnRIYW5kbGVyKTtcblxuICAgIGNvbnN0IGRlcGxveW1lbnQgPSBuZXcgY2RrLkN1c3RvbVJlc291cmNlKGhhbmRsZXIsIFwiUmVzdGF0ZURlcGxveW1lbnRcIiwge1xuICAgICAgc2VydmljZVRva2VuOiB0aGlzLmRlcGxveW1lbnRSZXNvdXJjZVByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OlJlc3RhdGVTZXJ2aWNlRGVwbG95bWVudFwiLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBzZXJ2aWNlUGF0aDogc2VydmljZU5hbWUsXG4gICAgICAgIGFkbWluVXJsOiBvcHRpb25zPy5hZG1pblVybCA/PyBlbnZpcm9ubWVudC5hZG1pblVybCxcbiAgICAgICAgYXV0aFRva2VuU2VjcmV0QXJuOiBhdXRoVG9rZW4/LnNlY3JldEFybixcbiAgICAgICAgc2VydmljZUxhbWJkYUFybjogaGFuZGxlci5mdW5jdGlvbkFybixcbiAgICAgICAgaW52b2tlUm9sZUFybjogZW52aXJvbm1lbnQuaW52b2tlclJvbGU/LnJvbGVBcm4sXG4gICAgICAgIC8vIHJlbW92YWxQb2xpY3k6IFwicmV0YWluXCIsXG4gICAgICAgIHByaXZhdGU6IChvcHRpb25zPy5wcml2YXRlID8/IGZhbHNlKS50b1N0cmluZygpIGFzIFwidHJ1ZVwiIHwgXCJmYWxzZVwiLFxuICAgICAgICBjb25maWd1cmF0aW9uVmVyc2lvbjpcbiAgICAgICAgICBvcHRpb25zPy5jb25maWd1cmF0aW9uVmVyc2lvbiB8fCBoYW5kbGVyLmZ1bmN0aW9uQXJuLmVuZHNXaXRoKFwiOiRMQVRFU1RcIilcbiAgICAgICAgICAgID8gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgaW5zZWN1cmU6IChvcHRpb25zPy5pbnNlY3VyZSA/PyBmYWxzZSkudG9TdHJpbmcoKSBhcyBcInRydWVcIiB8IFwiZmFsc2VcIixcbiAgICAgIH0gc2F0aXNmaWVzIFJlZ2lzdHJhdGlvblByb3BlcnRpZXMsXG4gICAgfSk7XG5cbiAgICBpZiAoZW52aXJvbm1lbnQuaW52b2tlclJvbGUgJiYgIW9wdGlvbnM/LnNraXBJbnZva2VGdW5jdGlvbkdyYW50KSB7XG4gICAgICAvLyBXZSBjcmVhdGUgYSBzZXBhcmF0ZSBwb2xpY3kgd2hpY2ggd2UnbGwgYXR0YWNoIHRvIHRoZSBwcm92aWRlZCBpbnZva2VyIHJvbGUuIFRoaXMgYnJlYWtzIGEgY2lyY3VsYXIgY3Jvc3Mtc3RhY2tcbiAgICAgIC8vIGRlcGVuZGVuY3kgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUgY3JlYXRlZCBiZXR3ZWVuIHRoZSBzZXJ2aWNlIGRlcGxveWVyIGFuZCB0aGUgaW52b2tlciByb2xlLlxuICAgICAgaWYgKCF0aGlzLmludm9jYXRpb25Qb2xpY3kpIHtcbiAgICAgICAgdGhpcy5pbnZvY2F0aW9uUG9saWN5ID0gbmV3IGlhbS5Qb2xpY3kodGhpcywgXCJJbnZvY2F0aW9uUG9saWN5XCIpO1xuICAgICAgICAvLyBEZXNwaXRlIHRoZSBBUk4gcmVmZXJlbmNlIGFib3ZlLCBDbG91ZEZvcm1hdGlvbiBzb21ldGltZXMgdHJpZXMgdG8gaW52b2tlIHRoZSBjdXN0b20gcmVzb3VyY2UgaGFuZGxlciBiZWZvcmVcbiAgICAgICAgLy8gYWxsIHBlcm1pc3Npb25zIGFyZSBhcHBsaWVkLiBBZGRpbmcgYW4gZXhwbGljaXQgZGVwZW5kZW5jeSBpbmNsdWRlcyBhIGRlcGVuZGVuY3kgb24gYW55IHBlbmRpbmcgcG9saWN5IHVwZGF0ZXNcbiAgICAgICAgLy8gZGVmaW5lZCBpbiB0aGUgc2FtZSBzdGFjayBhcyB0aGUgc2VydmljZSBkZXBsb3llciwgd2hpY2ggc2VlbXMgdG8gaGVscC4gU29tZSBwcm9wYWdhdGlvbiBkZWxheSBtaWdodCBzdGlsbCBtZWFuXG4gICAgICAgIC8vIHdlIGxlYW4gb24gcmV0cmllcyBpbiB0aGUgZGVwbG95ZXIgZXZlbnQgaGFuZGxlciBpbiBhbnkgZXZlbnQgYnV0IHRoaXMgcmVkdWNlcyB0aGUgcHJvYmFiaWxpdHkgb2YgZmFpbHVyZS5cbiAgICAgICAgZGVwbG95bWVudC5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5pbnZvY2F0aW9uUG9saWN5KTtcbiAgICAgICAgdGhpcy5pbnZvY2F0aW9uUG9saWN5LmF0dGFjaFRvUm9sZShlbnZpcm9ubWVudC5pbnZva2VyUm9sZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmludm9jYXRpb25Qb2xpY3kuYWRkU3RhdGVtZW50cyhcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcImxhbWJkYTpJbnZva2VGdW5jdGlvblwiXSxcbiAgICAgICAgICByZXNvdXJjZXM6IGhhbmRsZXIubGFtYmRhLnJlc291cmNlQXJuc0ZvckdyYW50SW52b2tlLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1kZXBsb3llci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9yZXN0YXRlLWNvbnN0cnVjdHMvc2VydmljZS1kZXBsb3llci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCwwREFBNkI7QUFDN0IsMkNBQXVDO0FBQ3ZDLGlEQUFtQztBQUNuQyxpRUFBbUQ7QUFDbkQseURBQTJDO0FBQzNDLCtEQUFpRDtBQUNqRCwyRUFBNkQ7QUFDN0QsMkRBQTZDO0FBSzdDLE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBNkNsRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsc0JBQVM7SUFPNUMsWUFDRSxLQUFnQixFQUNoQixFQUFVO0lBQ1Y7OztPQUdHO0lBQ0gsS0FnQjJDO1FBRTNDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUN2RSxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVk7WUFDakMsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRO1lBQ3pCLFdBQVcsRUFBRSxxQ0FBcUM7WUFDbEQsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLElBQUksbUJBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLG1DQUFtQyxDQUFDO1lBQ2hGLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTTtZQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDckQsVUFBVSxFQUFFLEdBQUc7WUFDZixPQUFPLEVB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eXJpZ2h0IChjKSAyMDIzLTIwMjUgLSBSZXN0YXRlIFNvZnR3YXJlLCBJbmMuLCBSZXN0YXRlIEdtYkhcbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUmVzdGF0ZSBDREsgQ29uc3RydWN0IExpYnJhcnksXG4gKiB3aGljaCBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKlxuICogWW91IGNhbiBmaW5kIGEgY29weSBvZiB0aGUgbGljZW5zZSBpbiBmaWxlIExJQ0VOU0UgaW4gdGhlIHJvb3RcbiAqIGRpcmVjdG9yeSBvZiB0aGlzIHJlcG9zaXRvcnkgb3IgcGFja2FnZSwgb3IgYXRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXN0YXRlZGV2L3Nkay10eXBlc2NyaXB0L2Jsb2IvbWFpbi9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGNyIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0ICogYXMgbGFtYmRhX25vZGUgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCI7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xuaW1wb3J0ICogYXMgc2VjcmV0cyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBJUmVzdGF0ZUVudmlyb25tZW50IH0gZnJvbSBcIi4vcmVzdGF0ZS1lbnZpcm9ubWVudFwiO1xuaW1wb3J0IHsgUmVnaXN0cmF0aW9uUHJvcGVydGllcyB9IGZyb20gXCIuL3JlZ2lzdGVyLXNlcnZpY2UtaGFuZGxlclwiO1xuXG5jb25zdCBERUZBVUxUX1RJTUVPVVQgPSBjZGsuRHVyYXRpb24uc2Vjb25kcygxODApO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VSZWdpc3RyYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IEFSTiBmb3IgdGhlIGF1dGhlbnRpY2F0aW9uIHRva2VuIHRvIHVzZSB3aGVuIGNhbGxpbmcgdGhlIGFkbWluIEFQSS4gVGFrZXMgcHJlY2VkZW5jZVxuICAgKiBvdmVyIHRoZSBlbnZpcm9ubWVudCdzIHRva2VuLlxuICAgKi9cbiAgYXV0aFRva2VuPzogc2VjcmV0cy5JU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNraXAgZ3JhbnRpbmcgdGhlIGludm9rZXIgcm9sZSBwZXJtaXNzaW9uIHRvIGludm9rZSB0aGUgc2VydmljZSBoYW5kbGVyLiBUaGUgZGVwbG95ZXIgYnkgZGVmYXVsdFxuICAgKiB3aWxsIGdyYW50IHRoZSBpbnZva2VyIHJvbGUgcGVybWlzc2lvbiB0byBpbnZva2UgdGhlIGhhbmRsZXIsIGJ1dCB5b3UgY2FuIHNldCB0aGlzIHRvIGB0cnVlYCB0byBoYW5kbGUgdGhpc1xuICAgKiBtYW51YWxseS5cbiAgICovXG4gIHNraXBJbnZva2VGdW5jdGlvbkdyYW50PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUHJpdmF0ZSBzZXJ2aWNlcyBhcmUgb25seSBhdmFpbGFibGUgdG8gb3RoZXIgUmVzdGF0ZSBzZXJ2aWNlcyBpbiB0aGUgc2FtZSBlbnZpcm9ubWVudCwgYW5kIGFyZSBub3QgYWNjZXNzaWJsZSBmb3JcbiAgICogaW5ncmVzcy1iYXNlZCBpbnZvY2F0aW9uLiBJZiBtdWx0aXBsZSBzZXJ2aWNlcyBhcmUgZXhwb3NlZCBieSB0aGUgc2FtZSBoYW5kbGVyLCBhbGwgb2YgdGhlbSB3aWxsIGJlIHVwZGF0ZWQuXG4gICAqIERlZmF1bHQ6IGBmYWxzZWAsIGkuZS4gc2VydmljZXMgd2lsbCBiZSBtYWRlIHB1YmxpYyBhbmQgcmVhY2hhYmxlIHZpYSBpbmdyZXNzIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLnJlc3RhdGUuZGV2L29wZXJhdGUvcmVnaXN0cmF0aW9uI3ByaXZhdGUtc2VydmljZXNcbiAgICovXG4gIHByaXZhdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGR1bW15IHBhcmFtZXRlciB0byBmb3JjZSBDbG91ZEZvcm1hdGlvbiB0byB1cGRhdGUgdGhlIGRlcGxveW1lbnQgd2hlbiB0aGUgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBVc2VmdWwgaWZcbiAgICogeW91IHdhbnQgdG8gdGFyZ2V0IHRoZSBcImxhdGVzdCB2ZXJzaW9uXCIgb2YgYSBzZXJ2aWNlIGhhbmRsZXIgYW5kIG5lZWQgdG8gZm9yY2UgYSBkZXBsb3ltZW50IGluIG9yZGVyIHRvIHRyaWdnZXJcbiAgICogZGlzY292ZXJ5LiBTZXQgdGhpcyB0byBhIG5ldyB2YWx1ZSBldmVyeSB0aW1lIHlvdSB3YW50IHRvIGZvcmNlIGEgc2VydmljZSByZWdpc3RyYXRpb24gdG8gaGFwcGVuLCBlLmcuIGEgdGltZXN0YW1wLlxuICAgKi9cbiAgY29uZmlndXJhdGlvblZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFjY2VwdCBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZXMuXG4gICAqL1xuICBpbnNlY3VyZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBjdXN0b20gYWRtaW4gZW5kcG9pbnQgVVJMLCBvdmVycmlkaW5nIHRoZSBvbmUgZXhwb3NlZCBieSB0aGUgdGFyZ2V0IGVudmlyb25tZW50LiBZb3UgbWF5IG5lZWQgdGhpcyBpZlxuICAgKiB0aGUgYEVudmlyb25tZW50YCBjb25zdHJ1Y3QgaXMgcmVwb3J0aW5nIGEgZGlmZmVyZW50IFVSTCBmcm9tIHRoZSBvbmUgdGhhdCB0aGUgZGVwbG95ZXIgY2FuIHJlYWNoLCBlLmcuIGlmIHlvdXJcbiAgICogUmVzdGF0ZSBzZXJ2aWNlIGlzIGJlaGluZCBhIGxvYWQgYmFsYW5jZXIuXG4gICAqL1xuICBhZG1pblVybD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZWdpc3RlciBMYW1iZGEtYmFja2VkIHJlc3RhdGUgc2VydmljZXMgd2l0aCBSZXN0YXRlIGVudmlyb25tZW50cy5cbiAqXG4gKiBZb3UgY2FuIHJldXNlIHRoZSBzYW1lIGRlcGxveWVyIHRvIHJlZ2lzdGVyIHRoZSBzZXJ2aWNlcyBleHBvc2VkIGJ5IG11bHRpcGxlIGhhbmRsZXJzLiBZb3UgY2FuIGFsc28gcmV1c2UgdGhlXG4gKiBkZXBsb3llciB0byB0YXJnZXQgbXVsdGlwbGUgUmVzdGF0ZSBlbnZpcm9ubWVudHMsIHByb3ZpZGVkIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGNvbXBhdGlibGUgKGUuZy4gdGhlIFJlc3RhdGVcbiAqIGVudmlyb25tZW50cyBpdCBuZWVkcyB0byBjb21tdW5pY2F0ZSB3aXRoIGFyZSBhbGwgYWNjZXNzaWJsZSBmcm9tIHRoZSBzYW1lIFZQQyBhbmQgU2VjdXJpdHkgR3JvdXBzLCBhY2NlcHQgdGhlIHNhbWVcbiAqIGF1dGhlbnRpY2F0aW9uIHRva2VuLCBhbmQgc28gb24pLiBDb252ZXJzZWx5LCB5b3UgY2FuIGNyZWF0ZSBtdWx0aXBsZSBkZXBsb3llcnMgaW4gY2FzZXMgd2hlbiB5b3UgbmVlZCB0byBkZXBsb3kgdG9cbiAqIG11bHRpcGxlIGVudmlyb25tZW50cyB0aGF0IHJlcXVpcmUgZGlzdGluY3QgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBEZXBsb3ltZW50IGxvZ3MgYXJlIHJldGFpbmVkIGZvciAzMCBkYXlzIGJ5IGRlZmF1bHQuXG4gKlxuICogQHNlZSB7cmVnaXN0ZXJ9XG4gKi9cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlRGVwbG95ZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKiogVGhlIGN1c3RvbSByZXNvdXJjZSBwcm92aWRlciBmb3IgaGFuZGxpbmcgXCJkZXBsb3ltZW50XCIgcmVzb3VyY2VzLiAqL1xuICByZWFkb25seSBkZXBsb3ltZW50UmVzb3VyY2VQcm92aWRlcjogY3IuUHJvdmlkZXI7XG4gIHJlYWRvbmx5IGV2ZW50SGFuZGxlcjogbGFtYmRhX25vZGUuTm9kZWpzRnVuY3Rpb247XG5cbiAgcHJpdmF0ZSBpbnZvY2F0aW9uUG9saWN5PzogaWFtLlBvbGljeTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogQWxsb3dzIHRoZSBjdXN0b20gcmVzb3VyY2UgZXZlbnQgaGFuZGxlciBwcm9wZXJ0aWVzIHRvIGJlIG92ZXJyaWRkZW4uIFRoZSBtYWluIHVzZSBjYXNlIGZvciB0aGlzIGlzIHNwZWNpZnlpbmdcbiAgICAgKiBWUEMgYW5kIHNlY3VyaXR5IGdyb3VwIHNldHRpbmdzIGZvciBSZXN0YXRlIGVudmlyb25tZW50cyB0aGF0IHJlcXVpcmUgaXQuXG4gICAgICovXG4gICAgcHJvcHM/OiBQaWNrPFxuICAgICAgbGFtYmRhX25vZGUuTm9kZWpzRnVuY3Rpb25Qcm9wcyxcbiAgICAgIHwgXCJhbGxvd1B1YmxpY1N1Ym5ldFwiXG4gICAgICB8IFwiYXJjaGl0ZWN0dXJlXCJcbiAgICAgIHwgXCJydW50aW1lXCJcbiAgICAgIHwgXCJidW5kbGluZ1wiXG4gICAgICB8IFwiZGVwc0xvY2tGaWxlUGF0aFwiXG4gICAgICB8IFwiY29kZVwiXG4gICAgICB8IFwiZW50cnlcIlxuICAgICAgfCBcImZ1bmN0aW9uTmFtZVwiXG4gICAgICB8IFwibG9nR3JvdXBcIlxuICAgICAgfCBcInNlY3VyaXR5R3JvdXBzXCJcbiAgICAgIHwgXCJ0aW1lb3V0XCJcbiAgICAgIHwgXCJ2cGNcIlxuICAgICAgfCBcInZwY1N1Ym5ldHNcIlxuICAgID4gJlxuICAgICAgUGljazxsb2dzLkxvZ0dyb3VwUHJvcHMsIFwicmVtb3ZhbFBvbGljeVwiPixcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuZXZlbnRIYW5kbGVyID0gbmV3IGxhbWJkYV9ub2RlLk5vZGVqc0Z1bmN0aW9uKHRoaXMsIFwiRXZlbnRIYW5kbGVyXCIsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogcHJvcHM/LmZ1bmN0aW9uTmFtZSxcbiAgICAgIGxvZ0dyb3VwOiBwcm9wcz8ubG9nR3JvdXAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJSZXN0YXRlIGN1c3RvbSByZWdpc3RyYXRpb24gaGFuZGxlclwiLFxuICAgICAgZW50cnk6IHByb3BzPy5lbnRyeSA/PyBwYXRoLmpvaW4oX19kaXJuYW1lLCBcInJlZ2lzdGVyLXNlcnZpY2UtaGFuZGxlci9pbmRleC5qc1wiKSxcbiAgICAgIGFyY2hpdGVjdHVyZTogcHJvcHM/LmFyY2hpdGVjdHVyZSA/PyBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgIHJ1bnRpbWU6IHByb3BzPy5ydW50aW1lID8/IGxhbWJkYS5SdW50aW1lLk5PREVKU18yMl9YLFxuICAgICAgbWVtb3J5U2l6ZTogMTI4LFxuICAgICAgdGltZW91dDogcHJvcHM/LnRpbWVvdXQgPz8gREVGQVVMVF9USU1FT1VULFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgTk9ERV9PUFRJT05TOiBcIi0tZW5hYmxlLXNvdXJjZS1tYXBzXCIsXG4gICAgICB9LFxuICAgICAgYnVuZGxpbmc6IHByb3BzPy5idW5kbGluZyA/PyB7XG4gICAgICAgIG1pbmlmeTogZmFsc2UsXG4gICAgICAgIHNvdXJjZU1hcDogdHJ1ZSxcbiAgICAgICAgZXh0ZXJuYWxNb2R1bGVzOiBbXCJAYXdzLXNkay8qXCJdLFxuICAgICAgICBwbGF0Zm9ybTogXCJub2RlXCIsXG4gICAgICAgIHRhcmdldDogXCJub2RlMjJcIixcbiAgICAgIH0sXG4gICAgICBkZXBzTG9ja0ZpbGVQYXRoOiBwcm9wcz8uZGVwc0xvY2tGaWxlUGF0aCxcbiAgICAgIC4uLihwcm9wcz8udnBjXG4gICAgICAgID8gKHtcbiAgICAgICAgICAgIHZwYzogcHJvcHM/LnZwYyxcbiAgICAgICAgICAgIHZwY1N1Ym5ldHM6IHByb3BzPy52cGNTdWJuZXRzLFxuICAgICAgICAgICAgc2VjdXJpdHlHcm91cHM6IHByb3BzPy5zZWN1cml0eUdyb3VwcyxcbiAgICAgICAgICB9IHNhdGlzZmllcyBQaWNrPGxhbWJkYS5GdW5jdGlvbk9wdGlvbnMsIFwidnBjXCIgfCBcInZwY1N1Ym5ldHNcIiB8IFwic2VjdXJpdHlHcm91cHNcIj4pXG4gICAgICAgIDoge30pLFxuICAgICAgYWxsb3dQdWJsaWNTdWJuZXQ6IHByb3BzPy5hbGxvd1B1YmxpY1N1Ym5ldCxcbiAgICB9KTtcblxuICAgIGlmICghcHJvcHM/LmxvZ0dyb3VwKSB7XG4gICAgICAvLyBCeSBkZWZhdWx0LCBMYW1iZGEgRnVuY3Rpb25zIGhhdmUgYSBsb2cgZ3JvdXAgd2l0aCBuZXZlci1leHBpcmluZyByZXRlbnRpb24gcG9saWN5LlxuICAgICAgbmV3IGxvZ3MuTG9nR3JvdXAodGhpcywgXCJEZXBsb3ltZW50TG9nc1wiLCB7XG4gICAgICAgIGxvZ0dyb3VwTmFtZTogYC9hd3MvbGFtYmRhLyR7dGhpcy5ldmVudEhhbmRsZXIuZnVuY3Rpb25OYW1lfWAsXG4gICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9NT05USCxcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHM/LnJlbW92YWxQb2xpY3kgPz8gY2RrLlJlbW92YWxQb2xpY3kuUkVUQUlOX09OX1VQREFURV9PUl9ERUxFVEUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmRlcGxveW1lbnRSZXNvdXJjZVByb3ZpZGVyID0gbmV3IGNyLlByb3ZpZGVyKHRoaXMsIFwiQ3VzdG9tUmVzb3VyY2VQcm92aWRlclwiLCB7XG4gICAgICBvbkV2ZW50SGFuZGxlcjogdGhpcy5ldmVudEhhbmRsZXIsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGVwbG95IGEgTGFtYmRhLWJhY2tlZCBSZXN0YXRlIGhhbmRsZXIgdG8gYSBnaXZlbiBlbnZpcm9ubWVudC5cbiAgICpcbiAgICogTm90ZSB0aGF0IGEgY2hhbmdlIGluIHRoZSBoYW5kbGVyIHByb3BlcnRpZXMgaXMgbmVjZXNzYXJ5IHRvIHRyaWdnZXIgcmUtZGlzY292ZXJ5IGR1ZSB0byBob3cgQ2xvdWRGb3JtYXRpb24gdXBkYXRlc1xuICAgKiB3b3JrLiBJZiB5b3UgZGVwbG95IGEgZml4ZWQgTGFtYmRhIGFsaWFzIHN1Y2ggYXMgYCRMQVRFU1RgIHdoaWNoIGlzbid0IGNoYW5naW5nIG9uIGV2ZXJ5IGhhbmRsZXIgY29kZSBvclxuICAgKiBjb25maWd1cmF0aW9uIHVwZGF0ZSwgeW91IHdpbGwgd2FudCB0byBzZXQgdGhlIGBjb25maWd1cmF0aW9uVmVyc2lvbmAgcHJvcGVydHkgaW4gYG9wdGlvbnNgIHRvIGEgbmV3IHZhbHVlIChlLmcuIGFcbiAgICogdGltZXN0YW1wKSB0byBlbnN1cmUgYW4gdXBkYXRlIHRvIHRoZSBSZXN0YXRlIGVudmlyb25tZW50IGlzIHRyaWdnZXJlZCBvbiBzdGFjayBkZXBsb3ltZW50LlxuICAgKlxuICAgKiBAcGFyYW0gaGFuZGxlciBzZXJ2aWNlIGhhbmRsZXIgLSBtdXN0IGJlIGEgc3BlY2lmaWMgZnVuY3Rpb24gdmVyc2lvbiwgdXNlIFwibGF0ZXN0XCIgaWYgeW91IGRvbid0IGNhcmUgYWJvdXQgZXhwbGljaXQgdmVyc2lvbmluZ1xuICAgKiBAcGFyYW0gZW52aXJvbm1lbnQgdGFyZ2V0IFJlc3RhdGUgZW52aXJvbm1lbnRcbiAgICogQHBhcmFtIG9wdGlvbnMgYWRkaXRpb25hbCBvcHRpb25zOyBzZWUgZmllbGQgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlsc1xuICAgKiBAc2VlIHtTZXJ2aWNlUmVnaXN0cmF0aW9uUHJvcHN9XG4gICAqL1xuICByZWdpc3RlcihoYW5kbGVyOiBsYW1iZGEuSVZlcnNpb24sIGVudmlyb25tZW50OiBJUmVzdGF0ZUVudmlyb25tZW50LCBvcHRpb25zPzogU2VydmljZVJlZ2lzdHJhdGlvblByb3BzKSB7XG4gICAgdGhpcy5yZWdpc3RlclNlcnZpY2VJbnRlcm5hbCh1bmRlZmluZWQsIGhhbmRsZXIsIGVudmlyb25tZW50LCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXBsb3kgYSBMYW1iZGEtYmFja2VkIFJlc3RhdGUgaGFuZGxlciB0byBhIGdpdmVuIGVudmlyb25tZW50LCBlbnN1cmluZyB0aGF0IGEgcGFydGljdWxhciBzZXJ2aWNlIG5hbWUgZXhpc3RzLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgYSBjaGFuZ2UgaW4gdGhlIGhhbmRsZXIgcHJvcGVydGllcyBpcyBuZWNlc3NhcnkgdG8gdHJpZ2dlciByZS1kaXNjb3ZlcnkgZHVlIHRvIGhvdyBDbG91ZEZvcm1hdGlvbiB1cGRhdGVzXG4gICAqIHdvcmsuIElmIHlvdSBkZXBsb3kgYSBmaXhlZCBMYW1iZGEgYWxpYXMgc3VjaCBhcyBgJExBVEVTVGAgd2hpY2ggaXNuJ3QgY2hhbmdpbmcgb24gZXZlcnkgaGFuZGxlciBjb2RlIG9yXG4gICAqIGNvbmZpZ3VyYXRpb24gdXBkYXRlLCB5b3Ugd2lsbCB3YW50IHRvIHNldCB0aGUgYGNvbmZpZ3VyYXRpb25WZXJzaW9uYCBwcm9wZXJ0eSBpbiBgb3B0aW9uc2AgdG8gYSBuZXcgdmFsdWUgKGUuZy4gYVxuICAgKiB0aW1lc3RhbXApIHRvIGVuc3VyZSBhbiB1cGRhdGUgdG8gdGhlIFJlc3RhdGUgZW52aXJvbm1lbnQgaXMgdHJpZ2dlcmVkIG9uIHN0YWNrIGRlcGxveW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBzZXJ2aWNlTmFtZSB0aGUgc2VydmljZSBuYW1lIHdpdGhpbiBSZXN0YXRlIC0gYXMgYSBzYWZldHkgbWVjaGFuaXNtLCB0aGlzIG11c3QgbWF0Y2ggdGhlIHNlcnZpY2Unc1xuICAgKiAgICAgICAgc2VsZi1yZXBvcnRlZCBuYW1lIGR1cmluZyBkaXNjb3Zlcnk7IGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBzZXJ2aWNlcywgb25lIG9mIHRoZW0gbXVzdCBtYXRjaCBvciB0aGVcbiAgICogICAgICAgIGRlcGxveW1lbnQgZmFpbHNcbiAgICogQHBhcmFtIGhhbmRsZXIgc2VydmljZSBoYW5kbGVyIC0gbXVzdCBiZSBhIHNwZWNpZmljIGZ1bmN0aW9uIHZlcnNpb24sIHVzZSBcImxhdGVzdFwiIGlmIHlvdSBkb24ndCBjYXJlIGFib3V0IGV4cGxpY2l0IHZlcnNpb25pbmdcbiAgICogQHBhcmFtIGVudmlyb25tZW50IHRhcmdldCBSZXN0YXRlIGVudmlyb25tZW50XG4gICAqIEBwYXJhbSBvcHRpb25zIGFkZGl0aW9uYWwgb3B0aW9uczsgc2VlIGZpZWxkIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHNcbiAgICovXG4gIGRlcGxveVNlcnZpY2UoXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyxcbiAgICBoYW5kbGVyOiBsYW1iZGEuSVZlcnNpb24sXG4gICAgZW52aXJvbm1lbnQ6IElSZXN0YXRlRW52aXJvbm1lbnQsXG4gICAgb3B0aW9ucz86IFNlcnZpY2VSZWdpc3RyYXRpb25Qcm9wcyxcbiAgKSB7XG4gICAgdGhpcy5yZWdpc3RlclNlcnZpY2VJbnRlcm5hbChzZXJ2aWNlTmFtZSwgaGFuZGxlciwgZW52aXJvbm1lbnQsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlclNlcnZpY2VJbnRlcm5hbChcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIGhhbmRsZXI6IGxhbWJkYS5JVmVyc2lvbixcbiAgICBlbnZpcm9ubWVudDogSVJlc3RhdGVFbnZpcm9ubWVudCxcbiAgICBvcHRpb25zPzogU2VydmljZVJlZ2lzdHJhdGlvblByb3BzLFxuICApIHtcbiAgICBjb25zdCBhdXRoVG9rZW4gPSBvcHRpb25zPy5hdXRoVG9rZW4gPz8gZW52aXJvbm1lbnQuYXV0aFRva2VuO1xuICAgIGF1dGhUb2tlbj8uZ3JhbnRSZWFkKHRoaXMuZGVwbG95bWVudFJlc291cmNlUHJvdmlkZXIub25FdmVudEhhbmRsZXIpO1xuXG4gICAgY29uc3QgZGVwbG95bWVudCA9IG5ldyBjZGsuQ3VzdG9tUmVzb3VyY2UoaGFuZGxlciwgXCJSZXN0YXRlRGVwbG95bWVudFwiLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHRoaXMuZGVwbG95bWVudFJlc291cmNlUHJvdmlkZXIuc2VydmljZVRva2VuLFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6UmVzdGF0ZVNlcnZpY2VEZXBsb3ltZW50XCIsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHNlcnZpY2VQYXRoOiBzZXJ2aWNlTmFtZSxcbiAgICAgICAgYWRtaW5Vcmw6IG9wdGlvbnM/LmFkbWluVXJsID8/IGVudmlyb25tZW50LmFkbWluVXJsLFxuICAgICAgICBhdXRoVG9rZW5TZWNyZXRBcm46IGF1dGhUb2tlbj8uc2VjcmV0QXJuLFxuICAgICAgICBzZXJ2aWNlTGFtYmRhQXJuOiBoYW5kbGVyLmZ1bmN0aW9uQXJuLFxuICAgICAgICBpbnZva2VSb2xlQXJuOiBlbnZpcm9ubWVudC5pbnZva2VyUm9sZT8ucm9sZUFybixcbiAgICAgICAgLy8gcmVtb3ZhbFBvbGljeTogXCJyZXRhaW5cIixcbiAgICAgICAgcHJpdmF0ZTogKG9wdGlvbnM/LnByaXZhdGUgPz8gZmFsc2UpLnRvU3RyaW5nKCkgYXMgXCJ0cnVlXCIgfCBcImZhbHNlXCIsXG4gICAgICAgIGNvbmZpZ3VyYXRpb25WZXJzaW9uOlxuICAgICAgICAgIG9wdGlvbnM/LmNvbmZpZ3VyYXRpb25WZXJzaW9uIHx8IGhhbmRsZXIuZnVuY3Rpb25Bcm4uZW5kc1dpdGgoXCI6JExBVEVTVFwiKVxuICAgICAgICAgICAgPyBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBpbnNlY3VyZTogKG9wdGlvbnM/Lmluc2VjdXJlID8/IGZhbHNlKS50b1N0cmluZygpIGFzIFwidHJ1ZVwiIHwgXCJmYWxzZVwiLFxuICAgICAgfSBzYXRpc2ZpZXMgUmVnaXN0cmF0aW9uUHJvcGVydGllcyxcbiAgICB9KTtcblxuICAgIGlmIChlbnZpcm9ubWVudC5pbnZva2VyUm9sZSAmJiAhb3B0aW9ucz8uc2tpcEludm9rZUZ1bmN0aW9uR3JhbnQpIHtcbiAgICAgIC8vIFdlIGNyZWF0ZSBhIHNlcGFyYXRlIHBvbGljeSB3aGljaCB3ZSdsbCBhdHRhY2ggdG8gdGhlIHByb3ZpZGVkIGludm9rZXIgcm9sZS4gVGhpcyBicmVha3MgYSBjaXJjdWxhciBjcm9zcy1zdGFja1xuICAgICAgLy8gZGVwZW5kZW5jeSB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBjcmVhdGVkIGJldHdlZW4gdGhlIHNlcnZpY2UgZGVwbG95ZXIgYW5kIHRoZSBpbnZva2VyIHJvbGUuXG4gICAgICBpZiAoIXRoaXMuaW52b2NhdGlvblBvbGljeSkge1xuICAgICAgICB0aGlzLmludm9jYXRpb25Qb2xpY3kgPSBuZXcgaWFtLlBvbGljeSh0aGlzLCBcIkludm9jYXRpb25Qb2xpY3lcIik7XG4gICAgICAgIC8vIERlc3BpdGUgdGhlIEFSTiByZWZlcmVuY2UgYWJvdmUsIENsb3VkRm9ybWF0aW9uIHNvbWV0aW1lcyB0cmllcyB0byBpbnZva2UgdGhlIGN1c3RvbSByZXNvdXJjZSBoYW5kbGVyIGJlZm9yZVxuICAgICAgICAvLyBhbGwgcGVybWlzc2lvbnMgYXJlIGFwcGxpZWQuIEFkZGluZyBhbiBleHBsaWNpdCBkZXBlbmRlbmN5IGluY2x1ZGVzIGEgZGVwZW5kZW5jeSBvbiBhbnkgcGVuZGluZyBwb2xpY3kgdXBkYXRlc1xuICAgICAgICAvLyBkZWZpbmVkIGluIHRoZSBzYW1lIHN0YWNrIGFzIHRoZSBzZXJ2aWNlIGRlcGxveWVyLCB3aGljaCBzZWVtcyB0byBoZWxwLiBTb21lIHByb3BhZ2F0aW9uIGRlbGF5IG1pZ2h0IHN0aWxsIG1lYW5cbiAgICAgICAgLy8gd2UgbGVhbiBvbiByZXRyaWVzIGluIHRoZSBkZXBsb3llciBldmVudCBoYW5kbGVyIGluIGFueSBldmVudCBidXQgdGhpcyByZWR1Y2VzIHRoZSBwcm9iYWJpbGl0eSBvZiBmYWlsdXJlLlxuICAgICAgICBkZXBsb3ltZW50Lm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLmludm9jYXRpb25Qb2xpY3kpO1xuICAgICAgICB0aGlzLmludm9jYXRpb25Qb2xpY3kuYXR0YWNoVG9Sb2xlKGVudmlyb25tZW50Lmludm9rZXJSb2xlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW52b2NhdGlvblBvbGljeS5hZGRTdGF0ZW1lbnRzKFxuICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1wibGFtYmRhOkludm9rZUZ1bmN0aW9uXCJdLFxuICAgICAgICAgIHJlc291cmNlczogaGFuZGxlci5sYW1iZGEucmVzb3VyY2VBcm5zRm9yR3JhbnRJbnZva2UsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -58,6 +58,12 @@ export interface SingleNodeRestateProps {
58
58
  totalMemorySize?: cdk.Size;
59
59
  };
60
60
  };
61
+ /**
62
+ * Environment properties to set for Restate. This is a simple way to pass custom configuration parameters.
63
+ */
64
+ environment?: {
65
+ [key: string]: string;
66
+ };
61
67
  /**
62
68
  * Completely override the Restate server configuration. Note that other Restate configuration options
63
69
  * will effectively be ignored if this is set. See https://docs.restate.dev/operate/configuration/server/
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  /*
3
- * Copyright (c) 2023-2024 - Restate Software, Inc., Restate GmbH
3
+ * Copyright (c) 2023-2025 - Restate Software, Inc., Restate GmbH
4
4
  *
5
- * This file is part of the Restate SDK for Node.js/TypeScript,
5
+ * This file is part of the Restate CDK Construct Library,
6
6
  * which is released under the MIT license.
7
7
  *
8
8
  * You can find a copy of the license in file LICENSE in the root
@@ -120,6 +120,14 @@ class SingleNodeRestateDeployment extends constructs_1.Construct {
120
120
  const restateTag = props.restateTag ?? RESTATE_DOCKER_DEFAULT_TAG;
121
121
  const adotTag = props.adotTag ?? ADOT_DOCKER_DEFAULT_TAG;
122
122
  this.tlsEnabled = props.tlsTermination === TlsTermination.ON_HOST_SELF_SIGNED_CERTIFICATE;
123
+ const envDefaults = {
124
+ RESTATE_OBSERVABILITY__LOG__FORMAT: "Json",
125
+ RUST_LOG: "info",
126
+ RESTATE_OBSERVABILITY__TRACING__ENDPOINT: "http://localhost:4317",
127
+ };
128
+ const envArgs = Object.entries({ ...envDefaults, ...(props.environment ?? {}) })
129
+ .map(([key, value]) => `-e ${key}="${value}"`)
130
+ .join(" ");
123
131
  const initScript = ec2.UserData.forLinux();
124
132
  initScript.addCommands("set -euf -o pipefail", `yum install -y npm && npm install -gq @restatedev/restate@${restateTag}`, "yum install -y docker", this.mountDataVolumeScript(), "mkdir -p /etc/restate", ["cat << EOF > /etc/restate/config.toml", this.restateConfig(id, props), "EOF"].join("\n"), "systemctl start docker.service",
125
133
  // Start the ADOT collector - needed for X-ray trace forwarding
@@ -131,8 +139,7 @@ class SingleNodeRestateDeployment extends constructs_1.Construct {
131
139
  " --volume /etc/restate:/etc/restate" +
132
140
  " --volume /var/restate:/restate-data" +
133
141
  " --network=host" +
134
- " -e RESTATE_OBSERVABILITY__LOG__FORMAT=Json -e RUST_LOG=info,restate_worker::partition=warn" +
135
- " -e RESTATE_OBSERVABILITY__TRACING__ENDPOINT=http://localhost:4317" +
142
+ ` ${envArgs}` +
136
143
  ` --log-driver=awslogs --log-opt awslogs-group=${logGroup.logGroupName}` +
137
144
  ` ${restateImage}:${restateTag}` +
138
145
  " --config-file /etc/restate/config.toml");
@@ -322,4 +329,4 @@ fi
322
329
  }
323
330
  }
324
331
  exports.SingleNodeRestateDeployment = SingleNodeRestateDeployment;
325
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLW5vZGUtcmVzdGF0ZS1kZXBsb3ltZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL3Jlc3RhdGUtY29uc3RydWN0cy9zaW5nbGUtbm9kZS1yZXN0YXRlLWRlcGxveW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7R0FTRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsMkNBQXVDO0FBQ3ZDLDJEQUE2QztBQUM3Qyx5REFBMkM7QUFDM0MseURBQTJDO0FBRTNDLDZEQUFtRDtBQUVuRCw2Q0FBNEM7QUFzRzVDLElBQVksY0FXWDtBQVhELFdBQVksY0FBYztJQUN4Qjs7T0FFRztJQUNILDJEQUFRLENBQUE7SUFFUjs7O09BR0c7SUFDSCx5R0FBK0IsQ0FBQTtBQUNqQyxDQUFDLEVBWFcsY0FBYyw4QkFBZCxjQUFjLFFBV3pCO0FBRUQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7QUFDbEMsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLENBQUM7QUFDckMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDaEMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUM7QUFDcEMsTUFBTSxxQkFBcUIsR0FBRyw4QkFBOEIsQ0FBQztBQUM3RCxNQUFNLDBCQUEwQixHQUFHLFFBQVEsQ0FBQztBQUM1QyxNQUFNLHVCQUF1QixHQUFHLFFBQVEsQ0FBQztBQUN6QyxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQztBQUVwQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFhLDJCQUE0QixTQUFRLHNCQUFTO0lBYXhELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNkI7UUFDckUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENB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a0I7Z0JBQ2xCLCtCQUErQjtnQkFDL0IsRUFBRTtnQkFDRiw4REFBOEQ7Z0JBQzlELGtFQUFrRTtnQkFDbEUsb0NBQW9DO2dCQUNwQyw0QkFBNEI7Z0JBQzVCLCtCQUErQjtnQkFDL0IsaUNBQWlDO2dCQUNqQyxFQUFFO2dCQUNGLGdCQUFnQjtnQkFDaEIsbUNBQW1DLGtCQUFrQixHQUFHO2dCQUN4RCxLQUFLO2dCQUNMLEdBQUc7YUFDSixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDYixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBM1NELGtFQTJTQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjMtMjAyNCAtIFJlc3RhdGUgU29mdHdhcmUsIEluYy4sIFJlc3RhdGUgR21iSFxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBSZXN0YXRlIFNESyBmb3IgTm9kZS5qcy9UeXBlU2NyaXB0LFxuICogd2hpY2ggaXMgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICpcbiAqIFlvdSBjYW4gZmluZCBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgaW4gZmlsZSBMSUNFTlNFIGluIHRoZSByb290XG4gKiBkaXJlY3Rvcnkgb2YgdGhpcyByZXBvc2l0b3J5IG9yIHBhY2thZ2UsIG9yIGF0XG4gKiBodHRwczovL2dpdGh1Yi5jb20vcmVzdGF0ZWRldi9zZGstdHlwZXNjcmlwdC9ibG9iL21haW4vTElDRU5TRVxuICovXG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IElSZXN0YXRlRW52aXJvbm1lbnQgfSBmcm9tIFwiLi9yZXN0YXRlLWVudmlyb25tZW50XCI7XG5pbXBvcnQgeyBUcmFjaW5nTW9kZSB9IGZyb20gXCIuL2RlcGxveW1lbnRzLWNvbW1vblwiO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpbmdsZU5vZGVSZXN0YXRlUHJvcHMge1xuICAvKiogRUMyIGluc3RhbmNlIHR5cGUgdG8gdXNlLiAqL1xuICBpbnN0YW5jZVR5cGU/OiBlYzIuSW5zdGFuY2VUeXBlO1xuXG4gIC8qKiBNYWNoaW5lIGltYWdlLiBOb3RlOiBzdGFydHVwIHNjcmlwdCBleHBlY3RzIHl1bS1iYXNlZCBwYWNrYWdlIG1hbmFnZW1lbnQuICovXG4gIG1hY2hpbmVJbWFnZT86IGVjMi5JTWFjaGluZUltYWdlO1xuXG4gIC8qKiBUaGUgVlBDIGluIHdoaWNoIHRvIGxhdW5jaCB0aGUgUmVzdGF0ZSBob3N0LiAqL1xuICB2cGM/OiBlYzIuSVZwYztcblxuICBuZXR3b3JrQ29uZmlndXJhdGlvbj86IHtcbiAgICAvKipcbiAgICAgKiBTdWJuZXQgdHlwZSBmb3IgdGhlIFJlc3RhdGUgaG9zdC5cbiAgICAgKlxuICAgICAqIEF2YWlsYWJsZSBvcHRpb25zOlxuICAgICAqICAtIFtEZWZhdWx0XSB7QGxpbmsgZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTU30gd2lsbCBjcmVhdGUgdGhlIFJlc3RhdGUgaW5zdGFuY2Ugd2l0aCBvdXRib3VuZCBpbnRlcm5ldFxuICAgICAqICAgIGFjY2VzcyBvbmx5LCBzbyB0aGF0IGl0IGNhbiBpbnZva2UgSFRUUCBlbmRwb2ludHMuIFRoZSBzZWN1cml0eSBncm91cHMge0BsaW5rIGluZ3Jlc3NTZWN1cml0eUdyb3VwfSBhbmRcbiAgICAgKiAgICB7QGxpbmsgYWRtaW5TZWN1cml0eUdyb3VwfSBjb250cm9sIGluYm91bmQgdHJhZmZpYyB0byB0aGUgc2VydmljZSBpbmdyZXNzIGFuZCBhZG1pbiBwb3J0cyByZXNwZWN0aXZlbHkuXG4gICAgICogICAgQ29uZmlndXJlIHtAbGluayBTZXJ2aWNlRGVwbG95ZXJ9IHRvIHVzZSB0aGUgbGF0dGVyLCBhbmQgc2V0IHVwIGluZ3Jlc3MgdHJhZmZpYyByb3V0aW5nIG91dHNpZGUgb2YgdGhpc1xuICAgICAqICAgIGNvbnN0cnVjdCB1c2luZyB0aGUgZm9ybWVyLlxuICAgICAqICAtIEluc2VjdXJlLCBpbnRlcm5ldC1mYWNpbmcge0BsaW5rIGVjMi5TdWJuZXRUeXBlLlBVQkxJQ30gd2lsbCBhbHNvIHByb3Zpc2lvbiBhbiBuZ2lueCByZXZlcnNlIHByb3h5XG4gICAgICogICAgYW5kIGFuIEhUVFAgbGlzdGVuZXIgd2l0aCBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlLlxuICAgICAqL1xuICAgIHN1Ym5ldFR5cGU/OiBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTIHwgZWMyLlN1Ym5ldFR5cGUuUFVCTElDO1xuICB9O1xuXG4gIC8qKlxuICAgKiBBbGxvdyBpbmNvbWluZyBpbmdyZXNzIHRyYWZmaWMgZnJvbSBhbnl3aGVyZS4gRGVmYXVsdDogYGZhbHNlYC4gQWx0ZXJuYXRpdmVseSwgYWRkIHJ1bGVzIHRvIHRoZVxuICAgKiBgaW5ncmVzc1NlY3VyaXR5R3JvdXBgIGRpcmVjdGx5LlxuICAgKi9cbiAgcHVibGljSW5ncmVzcz86IGJvb2xlYW47XG5cbiAgLyoqIExvZyBncm91cCBmb3IgUmVzdGF0ZSBzZXJ2aWNlIGxvZ3MuICovXG4gIGxvZ0dyb3VwPzogbG9ncy5Mb2dHcm91cDtcblxuICAvKiogVHJhY2luZyBtb2RlIGZvciBSZXN0YXRlIHNlcnZpY2VzLiBEZWZhdWx0cyB0byB7QGxpbmsgVHJhY2luZ01vZGUuRElTQUJMRUR9LiAqL1xuICB0cmFjaW5nPzogVHJhY2luZ01vZGU7XG5cbiAgLyoqIFByZWZpeCBmb3IgcmVzb3VyY2VzIGNyZWF0ZWQgYnkgdGhpcyBjb25zdHJ1Y3QgdGhhdCByZXF1aXJlIHVuaXF1ZSBuYW1lcy4gKi9cbiAgcHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKiBSZXN0YXRlIERvY2tlciBpbWFnZSBuYW1lLiBEZWZhdWx0cyB0byBgbGF0ZXN0YC4gKi9cbiAgcmVzdGF0ZUltYWdlPzogc3RyaW5nO1xuXG4gIC8qKiBSZXN0YXRlIERvY2tlciBpbWFnZSB0YWcuIERlZmF1bHRzIHRvIGBsYXRlc3RgLiAqL1xuICByZXN0YXRlVGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFQlMgZGF0YSB2b2x1bWUgc2V0dGluZ3MgZm9yIFJlc3RhdGUgZGF0YSBzdG9yYWdlLiBJZiBub3Qgc3BlY2lmaWVkLCBhIGRlZmF1bHQgOEdCIHZvbHVtZSB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICBkYXRhVm9sdW1lT3B0aW9ucz86IGVjMi5FYnNEZXZpY2VQcm9wcyB8IHVuZGVmaW5lZDtcblxuICAvKiogUmVzdGF0ZSBoaWdoLWxldmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBzZXQge0BsaW5rIHJlc3RhdGVDb25maWdPdmVycmlkZX0uICovXG4gIHJlc3RhdGVDb25maWc/OiB7XG4gICAgLyoqIERlZmF1bHRzIHRvIHRoZSBjb25zdHJ1Y3QgaWQgaWYgbGVmdCB1bnNwZWNpZmllZC4gKi9cbiAgICBjbHVzdGVyTmFtZT86IHN0cmluZztcbiAgICAvKiogRGVmYXVsdHMgdG8gNC4gT25seSB0YWtlcyBlZmZlY3Qgb24gaW5pdGlhbCBwcm92aXNpb25pbmcuICovXG4gICAgYm9vdHN0cmFwTnVtUGFydGl0aW9ucz86IG51bWJlcjtcbiAgICAvKiogUm9ja3NEQiBzZXR0aW5ncy4gKi9cbiAgICByb2Nrc2RiPzoge1xuICAgICAgLyoqIERlZmF1bHRzIHRvIDUxMiBNQi4gKi9cbiAgICAgIHRvdGFsTWVtb3J5U2l6ZT86IGNkay5TaXplO1xuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIENvbXBsZXRlbHkgb3ZlcnJpZGUgdGhlIFJlc3RhdGUgc2VydmVyIGNvbmZpZ3VyYXRpb24uIE5vdGUgdGhhdCBvdGhlciBSZXN0YXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgKiB3aWxsIGVmZmVjdGl2ZWx5IGJlIGlnbm9yZWQgaWYgdGhpcyBpcyBzZXQuIFNlZSBodHRwczovL2RvY3MucmVzdGF0ZS5kZXYvb3BlcmF0ZS9jb25maWd1cmF0aW9uL3NlcnZlci9cbiAgICogZm9yIGRldGFpbHMuXG4gICAqL1xuICByZXN0YXRlQ29uZmlnT3ZlcnJpZGU/OiBzdHJpbmc7XG5cbiAgLyoqIEFtYXpvbiBEaXN0cm8gZm9yIE9wZW4gVGVsZW1ldHJ5IERvY2tlciBpbWFnZSB0YWcuIERlZmF1bHRzIHRvIGBsYXRlc3RgLiAqL1xuICBhZG90VGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZW1vdmFsIHBvbGljeSBmb3IgbG9uZy1saXZlZCByZXNvdXJjZXMgKHN0b3JhZ2UsIGxvZ3MpLiBEZWZhdWx0OiBgY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWWAuXG4gICAqL1xuICByZW1vdmFsUG9saWN5PzogY2RrLlJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIENvbnRyb2wgb24taG9zdCBUTFMgdGVybWluYXRpb24gZm9yIGluZ3Jlc3MgYW5kIGFkbWluIHBvcnRzLiBEZWZhdWx0cyB0byBgVGxzVGVybWluYXRpb24uTk9ORWAuIEN1cnJlbnRseSwgZW5hYmxpbmdcbiAgICogVExTIGltcGxpY2l0bHkgZW5hYmxlcyBhbiBgbmdpbnhgIHNlcnZpY2UgdG8gYmUgY29uZmlndXJlZCBvbiB0aGUgaG9zdC4gRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiB0aGlzIG9wdGlvbiwgdGhlXG4gICAqIGluZ3Jlc3Mgc2VjdXJpdHkgZ3JvdXAgd2lsbCBiZSBjb25maWd1cmVkIHRvIGFsbG93IGluYm91bmQgdHJhZmZpYyB0byB0aGUgYXBwcm9wcmlhdGUgcG9ydCAtIDgwODAgZm9yIG5vIFRMUywgb3JcbiAgICogNDQzIHdpdGggVExTIGVuYWJsZWQuXG4gICAqL1xuICB0bHNUZXJtaW5hdGlvbj86IFRsc1Rlcm1pbmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVhZCB0aW1lb3V0IGZvciBwcm94aWVkIGluZ3Jlc3MgcmVxdWVzdHMuIERlZmF1bHQ6IDM2MDAgc2Vjb25kcy5cbiAgICovXG4gIGluZ3Jlc3NQcm94eVJlYWRUaW1lb3V0PzogY2RrLkR1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBDb21wbGV0ZWx5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGBuZ2lueGAgY29uZmlndXJhdGlvbiBmb3IgdGhlIGluZ3Jlc3MgcHJveHkuIE5vdGUgdGhhdCBvdGhlclxuICAgKiBpbmdyZXNzIHByb3h5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIGVmZmVjdGl2ZWx5IGJlIGlnbm9yZWQgaWYgdGhpcyBpcyBzZXQuXG4gICAqL1xuICBpbmdyZXNzTmdpbnhDb25maWdPdmVycmlkZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gVGxzVGVybWluYXRpb24ge1xuICAvKipcbiAgICogRGlzYWJsZWQgKGRlZmF1bHQpOyBleHBvc2UgdGhlIGByZXN0YXRlLXNlcnZlcmAgSFRUUCBwb3J0cyBkaXJlY3RseS5cbiAgICovXG4gIERJU0FCTEVELFxuXG4gIC8qKlxuICAgKiBVc2Ugc2VsZi1zaWduZWQgY2VydGlmaWNhdGVzIGZvciBUTFMgdGVybWluYXRpb24gb24gdGhlIGluZ3Jlc3MgYW5kIGFkbWluIHBvcnRzLiBDb252ZW5pZW50IGZvciBxdWljayB0ZXN0aW5nLFxuICAgKiBtYWtlIHN1cmUgeW91IHNldCBgaW5zZWN1cmVgID0gYHRydWVgIHdoZW4gdXNpbmcgYFNlcnZpY2VEZXBsb3llcmAgdG8gYWNjZXB0IHRoaXMgY2VydGlmaWNhdGUuXG4gICAqL1xuICBPTl9IT1NUX1NFTEZfU0lHTkVEX0NFUlRJRklDQVRFLFxufVxuXG5jb25zdCBSRVNUQVRFX0lOR1JFU1NfUE9SVCA9IDgwODA7XG5jb25zdCBSRVNUQVRFX1RMU19JTkdSRVNTX1BPUlQgPSA0NDM7XG5jb25zdCBSRVNUQVRFX0FETUlOX1BPUlQgPSA5MDcwO1xuY29uc3QgUkVTVEFURV9UTFNfQURNSU5fUE9SVCA9IDkwNzM7XG5jb25zdCBSRVNUQVRFX0lNQUdFX0RFRkFVTFQgPSBcImRvY2tlci5pby9yZXN0YXRlZGV2L3Jlc3RhdGVcIjtcbmNvbnN0IFJFU1RBVEVfRE9DS0VSX0RFRkFVTFRfVEFHID0gXCJsYXRlc3RcIjtcbmNvbnN0IEFET1RfRE9DS0VSX0RFRkFVTFRfVEFHID0gXCJsYXRlc3RcIjtcbmNvbnN0IERBVEFfREVWSUNFX05BTUUgPSBcIi9kZXYvc2RkXCI7XG5cbi8qKlxuICogQ3JlYXRlcyBhIFJlc3RhdGUgc2VydmljZSBkZXBsb3ltZW50IGJhY2tlZCBieSBhIHNpbmdsZSBFQzIgaW5zdGFuY2UsIHN1aXRhYmxlIGZvciBkZXZlbG9wbWVudCBhbmQgdGVzdGluZyBwdXJwb3Nlcy5cbiAqXG4gKiAqKkR1cmFiaWxpdHkqKlxuICpcbiAqIFJlc3RhdGUgZGF0YSB3aWxsIGJlIHN0b3JlZCBpbiBhIHNlcGFyYXRlIEVCUyB2b2x1bWUgd2hpY2ggeW91IGNhbiBjb25maWd1cmUgZXhwbGljaXRseSB2aWEgdGhlIGBkYXRhVm9sdW1lT3B0aW9uc2BcbiAqIHByb3BlcnR5LiBVcGRhdGluZyBjb25maWd1cmF0aW9uIHNldHRpbmdzIG1heSB0cmlnZ2VyIGluc3RhbmNlIHJlYm9vdCBvciByZXBsYWNlbWVudCAtIGNvbnNpZGVyIHNuYXBzaG90dGluZyB0aGUgZGF0YVxuICogdm9sdW1lIHByaW9yIHRvIGRlcGxveW1lbnRzLCBhbmQgZW5hYmxpbmcgaW5zdGFuY2UgdGVybWluYXRpb24gcHJvdGVjdGlvbi5cbiAqXG4gKiAqKlNlY3VyaXR5KipcbiAqXG4gKiBUaGUgRUMyIGluc3RhbmNlIHdpbGwgYmUgY3JlYXRlZCBpbiB0aGUgZGVmYXVsdCBWUEMgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuIFR3byBzZWN1cml0eSBncm91cHMgYXJlIGNyZWF0ZWQsXG4gKiBgaW5ncmVzc1NlY3VyaXR5R3JvdXBgIGFuZCBgYWRtaW5TZWN1cml0eUdyb3VwYCwgd2hpY2ggY29udHJvbCBhY2Nlc3MgdG8gdGhlIFJlc3RhdGUgc2VydmljZSBpbmdyZXNzIGFuZCBhZG1pbiBwb3J0c1xuICogcmVzcGVjdGl2ZWx5LiBZb3UgbXVzdCBhZGQgYXBwcm9wcmlhdGUgcnVsZXMgb3IgYWRkIG90aGVyIHJlc291cmNlcyB0byB0aGVzZSBzZWN1cml0eSBncm91cHMgdG8gYWxsb3cgYWNjZXNzLlxuICpcbiAqIFNlZSB7QGxpbmsgU2luZ2xlTm9kZVJlc3RhdGVQcm9wc30gZm9yIGF2YWlsYWJsZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCB7QGxpbmsgU2VydmljZURlcGxveWVyfSBmb3IgZGVwbG95aW5nXG4gKiBMYW1iZGEgaGFuZGxlcnMgdG8gZW52aXJvbm1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgU2luZ2xlTm9kZVJlc3RhdGVEZXBsb3ltZW50IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVJlc3RhdGVFbnZpcm9ubWVudCB7XG4gIHJlYWRvbmx5IGluc3RhbmNlOiBlYzIuSW5zdGFuY2U7XG4gIHJlYWRvbmx5IGluc3RhbmNlUm9sZTogaWFtLklSb2xlO1xuICByZWFkb25seSBpbnZva2VyUm9sZTogaWFtLklSb2xlO1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuICByZWFkb25seSBpbmdyZXNzU2VjdXJpdHlHcm91cDogZWMyLklTZWN1cml0eUdyb3VwO1xuICByZWFkb25seSBpbmdyZXNzUG9ydDogbnVtYmVyO1xuICByZWFkb25seSBpbmdyZXNzVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFkbWluU2VjdXJpdHlHcm91cDogZWMyLklTZWN1cml0eUdyb3VwO1xuICByZWFkb25seSBhZG1pblBvcnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgYWRtaW5Vcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgdGxzRW5hYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2luZ2xlTm9kZVJlc3RhdGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnZwYyA9IHByb3BzLnZwYyA/PyBlYzIuVnBjLmZyb21Mb29rdXAodGhpcywgXCJWcGNcIiwgeyBpc0RlZmF1bHQ6IHRydWUgfSk7XG5cbiAgICBjb25zdCBzdWJuZXRUeXBlID0gcHJvcHMubmV0d29ya0NvbmZpZ3VyYXRpb24/LnN1Ym5ldFR5cGUgPz8gZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUztcblxuICAgIHRoaXMuaW5zdGFuY2VSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiSW5zdGFuY2VSb2xlXCIsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKFwiZWMyLmFtYXpvbmF3cy5jb21cIiksXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXCJBbWF6b25TU01NYW5hZ2VkSW5zdGFuY2VDb3JlXCIpXSxcbiAgICB9KTtcblxuICAgIHRoaXMuaW52b2tlclJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgXCJJbnZva2VyUm9sZVwiLCB7XG4gICAgICBhc3N1bWVkQnk6IHRoaXMuaW5zdGFuY2VSb2xlLFxuICAgIH0pO1xuXG4gICAgbmV3IGlhbS5Qb2xpY3kodGhpcywgXCJBc3N1bWVJbnZva2VyUm9sZVBvbGljeVwiLCB7XG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBzaWQ6IFwiQWxsb3dBc3N1bWVJbnZva2VyUm9sZVwiLFxuICAgICAgICAgIGFjdGlvbnM6IFtcInN0czpBc3N1bWVSb2xlXCJdLFxuICAgICAgICAgIHJlc291cmNlczogW3RoaXMuaW52b2tlclJvbGUucm9sZUFybl0sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KS5hdHRhY2hUb1JvbGUodGhpcy5pbnN0YW5jZVJvbGUpO1xuXG4gICAgY29uc3QgbG9nR3JvdXAgPVxuICAgICAgcHJvcHMubG9nR3JvdXAgPz9cbiAgICAgIG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsIFwiTG9nc1wiLCB7XG4gICAgICAgIGxvZ0dyb3VwTmFtZTogYC9yZXN0YXRlLyR7aWR9YCxcbiAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX01PTlRILFxuICAgICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIH0pO1xuICAgIGxvZ0dyb3VwLmdyYW50V3JpdGUodGhpcy5pbnN0YW5jZVJvbGUpO1xuXG4gICAgY29uc3QgcmVzdGF0ZUltYWdlID0gcHJvcHMucmVzdGF0ZUltYWdlID8/IFJFU1RBVEVfSU1BR0VfREVGQVVMVDtcbiAgICBjb25zdCByZXN0YXRlVGFnID0gcHJvcHMucmVzdGF0ZVRhZyA/PyBSRVNUQVRFX0RPQ0tFUl9ERUZBVUxUX1RBRztcbiAgICBjb25zdCBhZG90VGFnID0gcHJvcHMuYWRvdFRhZyA/PyBBRE9UX0RPQ0tFUl9ERUZBVUxUX1RBRztcblxuICAgIHRoaXMudGxzRW5hYmxlZCA9IHByb3BzLnRsc1Rlcm1pbmF0aW9uID09PSBUbHNUZXJtaW5hdGlvbi5PTl9IT1NUX1NFTEZfU0lHTkVEX0NFUlRJRklDQVRFO1xuXG4gICAgY29uc3QgaW5pdFNjcmlwdCA9IGVjMi5Vc2VyRGF0YS5mb3JMaW51eCgpO1xuICAgIGluaXRTY3JpcHQuYWRkQ29tbWFuZHMoXG4gICAgICBcInNldCAtZXVmIC1vIHBpcGVmYWlsXCIsXG4gICAgICBgeXVtIGluc3RhbGwgLXkgbnBtICYmIG5wbSBpbnN0YWxsIC1ncSBAcmVzdGF0ZWRldi9yZXN0YXRlQCR7cmVzdGF0ZVRhZ31gLFxuICAgICAgXCJ5dW0gaW5zdGFsbCAteSBkb2NrZXJcIixcbiAgICAgIHRoaXMubW91bnREYXRhVm9sdW1lU2NyaXB0KCksXG5cbiAgICAgIFwibWtkaXIgLXAgL2V0Yy9yZXN0YXRlXCIsXG4gICAgICBbXCJjYXQgPDwgRU9GID4gL2V0Yy9yZXN0YXRlL2NvbmZpZy50b21sXCIsIHRoaXMucmVzdGF0ZUNvbmZpZyhpZCwgcHJvcHMpLCBcIkVPRlwiXS5qb2luKFwiXFxuXCIpLFxuXG4gICAgICBcInN5c3RlbWN0bCBzdGFydCBkb2NrZXIuc2VydmljZVwiLFxuXG4gICAgICAvLyBTdGFydCB0aGUgQURPVCBjb2xsZWN0b3IgLSBuZWVkZWQgZm9yIFgtcmF5IHRyYWNlIGZvcndhcmRpbmdcbiAgICAgIGBpZiBbIFwiJChkb2NrZXIgcHMgLXFhIC1mIG5hbWU9YWRvdClcIiBdOyB0aGVuIGRvY2tlciBzdG9wIGFkb3QgfHwgdHJ1ZTsgZG9ja2VyIHJtIGFkb3Q7IGZpYCxcbiAgICAgIFwiZG9ja2VyIHJ1biAtLW5hbWUgYWRvdCAtLXJlc3RhcnQgb24tZmFpbHVyZSAtLWRldGFjaFwiICtcbiAgICAgICAgXCIgLXAgNDMxNzo0MzE3IC1wIDU1NjgwOjU1NjgwIC1wIDg4ODk6ODg4OFwiICtcbiAgICAgICAgYCBwdWJsaWMuZWNyLmF3cy9hd3Mtb2JzZXJ2YWJpbGl0eS9hd3Mtb3RlbC1jb2xsZWN0b3I6JHthZG90VGFnfWAsXG5cbiAgICAgIC8vIFN0YXJ0IHRoZSBSZXN0YXRlIHNlcnZlciBjb250YWluZXJcbiAgICAgIGBpZiBbIFwiJChkb2NrZXIgcHMgLXFhIC1mIG5hbWU9cmVzdGF0ZSlcIiBdOyB0aGVuIGRvY2tlciBzdG9wIHJlc3RhdGUgfHwgdHJ1ZTsgZG9ja2VyIHJtIHJlc3RhdGU7IGZpYCxcbiAgICAgIFwiZG9ja2VyIHJ1biAtLW5hbWUgcmVzdGF0ZSAtLXJlc3RhcnQgb24tZmFpbHVyZSAtLWRldGFjaFwiICtcbiAgICAgICAgXCIgLS12b2x1bWUgL2V0Yy9yZXN0YXRlOi9ldGMvcmVzdGF0ZVwiICtcbiAgICAgICAgXCIgLS12b2x1bWUgL3Zhci9yZXN0YXRlOi9yZXN0YXRlLWRhdGFcIiArXG4gICAgICAgIFwiIC0tbmV0d29yaz1ob3N0XCIgK1xuICAgICAgICBcIiAtZSBSRVNUQVRFX09CU0VSVkFCSUxJVFlfX0xPR19fRk9STUFUPUpzb24gLWUgUlVTVF9MT0c9aW5mbyxyZXN0YXRlX3dvcmtlcjo6cGFydGl0aW9uPXdhcm5cIiArXG4gICAgICAgIFwiIC1lIFJFU1RBVEVfT0JTRVJWQUJJTElUWV9fVFJBQ0lOR19fRU5EUE9JTlQ9aHR0cDovL2xvY2FsaG9zdDo0MzE3XCIgK1xuICAgICAgICBgIC0tbG9nLWRyaXZlcj1hd3Nsb2dzIC0tbG9nLW9wdCBhd3Nsb2dzLWdyb3VwPSR7bG9nR3JvdXAubG9nR3JvdXBOYW1lfWAgK1xuICAgICAgICBgICR7cmVzdGF0ZUltYWdlfToke3Jlc3RhdGVUYWd9YCArXG4gICAgICAgIFwiIC0tY29uZmlnLWZpbGUgL2V0Yy9yZXN0YXRlL2NvbmZpZy50b21sXCIsXG4gICAgKTtcblxuICAgIC8vIE9wdGlvbmFsbHksIGNvbmZpZ3VyZSBhbmQgc3RhcnQgdGhlIG5naW54IHNlcnZpY2VcbiAgICBpZiAodGhpcy50bHNFbmFibGVkKSB7XG4gICAgICBpZiAoc3VibmV0VHlwZSA9PSBlYzIuU3VibmV0VHlwZS5QVUJMSUMpIHtcbiAgICAgICAgaW5pdFNjcmlwdC5hZGRDb21tYW5kcyhcbiAgICAgICAgICBcInl1bSBpbnN0YWxsIC15IG5naW54XCIsXG4gICAgICAgICAgXCJta2RpciAtcCAvZXRjL3BraS9wcml2YXRlXCIsXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJvcGVuc3NsIHJlcSAtbmV3IC14NTA5IC1ub2RlcyAtc2hhMjU2IC1kYXlzIDM2NSAtZXh0ZW5zaW9ucyB2M19jYVwiLFxuICAgICAgICAgICAgXCIgLXN1YmogJy9DPURFL1NUPUJlcmxpbi9MPUJlcmxpbi9PPXJlc3RhdGUuZGV2L09VPWRlbW8vQ049cmVzdGF0ZS5leGFtcGxlLmNvbSdcIixcbiAgICAgICAgICAgIFwiIC1uZXdrZXkgcnNhOjIwNDggLWtleW91dCAvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5rZXkgLW91dCAvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5jcnRcIixcbiAgICAgICAgICBdLmpvaW4oXCJcIiksXG5cbiAgICAgICAgICBbXCJjYXQgPDwgRU9GID4gL2V0Yy9uZ2lueC9jb25mLmQvcmVzdGF0ZS1pbmdyZXNzLmNvbmZcIiwgdGhpcy5pbmdyZXNzTmdpbnhDb25maWcocHJvcHMpLCBcIkVPRlwiXS5qb2luKFwiXFxuXCIpLFxuICAgICAgICAgIFwic3lzdGVtY3RsIHN0YXJ0IG5naW54XCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY2xvdWRDb25maWcgPSBlYzIuVXNlckRhdGEuY3VzdG9tKFtgY2xvdWRfZmluYWxfbW9kdWxlczpgLCBgLSBbc2NyaXB0cy11c2VyLCBhbHdheXNdYF0uam9pbihcIlxcblwiKSk7XG5cbiAgICBjb25zdCB1c2VyRGF0YSA9IG5ldyBlYzIuTXVsdGlwYXJ0VXNlckRhdGEoKTtcbiAgICB1c2VyRGF0YS5hZGRVc2VyRGF0YVBhcnQoY2xvdWRDb25maWcsIFwidGV4dC9jbG91ZC1jb25maWdcIik7XG4gICAgdXNlckRhdGEuYWRkVXNlckRhdGFQYXJ0KGluaXRTY3JpcHQsIFwidGV4dC94LXNoZWxsc2NyaXB0XCIpO1xuXG4gICAgY29uc3QgcmVzdGF0ZUluc3RhbmNlID0gbmV3IGVjMi5JbnN0YW5jZSh0aGlzLCBcIkhvc3RcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIHZwY1N1Ym5ldHM6IHsgc3VibmV0VHlwZSB9LFxuICAgICAgaW5zdGFuY2VUeXBlOiBwcm9wcy5pbnN0YW5jZVR5cGUgPz8gbmV3IGVjMi5JbnN0YW5jZVR5cGUoXCJ0NGcubWljcm9cIiksXG4gICAgICBtYWNoaW5lSW1hZ2U6XG4gICAgICAgIHByb3BzLm1hY2hpbmVJbWFnZSA/P1xuICAgICAgICBlYzIuTWFjaGluZUltYWdlLmxhdGVzdEFtYXpvbkxpbnV4MjAyMyh7XG4gICAgICAgICAgY3B1VHlwZTogZWMyLkFtYXpvbkxpbnV4Q3B1VHlwZS5BUk1fNjQsXG4gICAgICAgIH0pLFxuICAgICAgcm9sZTogdGhpcy5pbnN0YW5jZVJvbGUsXG4gICAgICBibG9ja0RldmljZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGRldmljZU5hbWU6IERBVEFfREVWSUNFX05BTUUsXG4gICAgICAgICAgdm9sdW1lOiB7XG4gICAgICAgICAgICBlYnNEZXZpY2U6IHtcbiAgICAgICAgICAgICAgdm9sdW1lU2l6ZTogOCxcbiAgICAgICAgICAgICAgZGVsZXRlT25UZXJtaW5hdGlvbjogcHJvcHMucmVtb3ZhbFBvbGljeSA9PT0gUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgICAgICAgICAuLi4ocHJvcHMuZGF0YVZvbHVtZU9wdGlvbnMgPz8ge30pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZpcnR1YWxOYW1lOiBcInJlc3RhdGUtZGF0YVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdXNlckRhdGEsXG4gICAgfSk7XG5cbiAgICB0aGlzLmluc3RhbmNlID0gcmVzdGF0ZUluc3RhbmNlO1xuXG4gICAgLy8gV2Ugc3RhcnQgdGhlIEFET1QgY29sbGVjdG9yIHJlZ2FyZGxlc3MsIGFuZCBjb250cm9sIHdoZXRoZXIgdHJhY2VzIHdpbGwgYmUgZXhwb3J0ZWQgdG8gWC1SYXkgdXNpbmcgaW5zdGFuY2Ugcm9sZVxuICAgIC8vIHBlcm1pc3Npb25zLiBUaGlzIHdheSBoaXN0b3JpYyB0cmFjZXMgd2lsbCBiZSBidWZmZXJlZCBvbiB0aGUgaG9zdCwgZXZlbiBpZiB0cmFjaW5nIGlzIGRpc2FibGVkIGluaXRpYWxseS5cbiAgICBpZiAocHJvcHMudHJhY2luZyA9PT0gVHJhY2luZ01vZGUuQVdTX1hSQVkpIHtcbiAgICAgIHJlc3RhdGVJbnN0YW5jZS5yb2xlLmFkZE1hbmFnZWRQb2xpY3koaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFwiQVdTWHJheVdyaXRlT25seUFjY2Vzc1wiKSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5ncmVzc1NlY3VyaXR5R3JvdXAgPSBuZXcgZWMyLlNlY3VyaXR5R3JvdXAodGhpcywgXCJJbmdyZXNzU2VjdXJpdHlHcm91cFwiLCB7XG4gICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgZGVzY3JpcHRpb246IFwiUmVzdGF0ZSBJbmdyZXNzIEFDTHNcIixcbiAgICB9KTtcbiAgICByZXN0YXRlSW5zdGFuY2UuYWRkU2VjdXJpdHlHcm91cChpbmdyZXNzU2VjdXJpdHlHcm91cCk7XG4gICAgY29uc3QgYWRtaW5TZWN1cml0eUdyb3VwID0gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsIFwiQWRtaW5TZWN1cml0eUdyb3VwXCIsIHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICBkZXNjcmlwdGlvbjogXCJSZXN0YXRlIEFkbWluIEFDTHNcIixcbiAgICB9KTtcbiAgICByZXN0YXRlSW5zdGFuY2UuYWRkU2VjdXJpdHlHcm91cChhZG1pblNlY3VyaXR5R3JvdXApO1xuXG4gICAgdGhpcy5pbmdyZXNzUG9ydCA9IHRoaXMudGxzRW5hYmxlZCA/IFJFU1RBVEVfVExTX0lOR1JFU1NfUE9SVCA6IFJFU1RBVEVfSU5HUkVTU19QT1JUO1xuICAgIHRoaXMuYWRtaW5Qb3J0ID0gdGhpcy50bHNFbmFibGVkID8gUkVTVEFURV9UTFNfQURNSU5fUE9SVCA6IFJFU1RBVEVfQURNSU5fUE9SVDtcblxuICAgIGluZ3Jlc3NTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgKHByb3BzLnB1YmxpY0luZ3Jlc3MgPz8gZmFsc2UpID8gZWMyLlBlZXIuYW55SXB2NCgpIDogaW5ncmVzc1NlY3VyaXR5R3JvdXAsXG4gICAgICBlYzIuUG9ydC50Y3AodGhpcy5pbmdyZXNzUG9ydCksXG4gICAgICBcIlJlc3RhdGUgaW5ncmVzc1wiLFxuICAgICk7XG4gICAgYWRtaW5TZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKGFkbWluU2VjdXJpdHlHcm91cCwgZWMyLlBvcnQudGNwKHRoaXMuYWRtaW5Qb3J0KSwgXCJSZXN0YXRlIGFkbWluXCIpO1xuXG4gICAgY29uc3QgcHJvdG9jb2wgPSB0aGlzLnRsc0VuYWJsZWQgPyBcImh0dHBzXCIgOiBcImh0dHBcIjtcbiAgICBjb25zdCBob3N0bmFtZSA9XG4gICAgICBwcm9wcy5uZXR3b3JrQ29uZmlndXJhdGlvbj8uc3VibmV0VHlwZSAhPT0gZWMyLlN1Ym5ldFR5cGUuUFVCTElDXG4gICAgICAgID8gYCR7cmVzdGF0ZUluc3RhbmNlLmluc3RhbmNlUHJpdmF0ZURuc05hbWV9YFxuICAgICAgICA6IGAke3Jlc3RhdGVJbnN0YW5jZS5pbnN0YW5jZVB1YmxpY0Ruc05hbWV9YDtcbiAgICB0aGlzLmluZ3Jlc3NVcmwgPSBgJHtwcm90b2NvbH06Ly8ke2hvc3RuYW1lfWAgKyAodGhpcy5pbmdyZXNzUG9ydCA9PT0gNDQzID8gXCJcIiA6IGA6JHt0aGlzLmluZ3Jlc3NQb3J0fWApO1xuICAgIHRoaXMuYWRtaW5VcmwgPSBgJHtwcm90b2NvbH06Ly8ke2hvc3RuYW1lfToke3RoaXMuYWRtaW5Qb3J0fWA7XG5cbiAgICB0aGlzLmluZ3Jlc3NTZWN1cml0eUdyb3VwID0gaW5ncmVzc1NlY3VyaXR5R3JvdXA7XG4gICAgdGhpcy5hZG1pblNlY3VyaXR5R3JvdXAgPSBhZG1pblNlY3VyaXR5R3JvdXA7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzdGF0ZUNvbmZpZyhpZDogc3RyaW5nLCBwcm9wczogU2luZ2xlTm9kZVJlc3RhdGVQcm9wcykge1xuICAgIHJldHVybiAoXG4gICAgICBwcm9wcy5yZXN0YXRlQ29uZmlnT3ZlcnJpZGUgPz9cbiAgICAgIFtcbiAgICAgICAgYHJvbGVzID0gW2AsXG4gICAgICAgIGAgICAgXCJ3b3JrZXJcIixgLFxuICAgICAgICBgICAgIFwiYWRtaW5cIixgLFxuICAgICAgICBgICAgIFwibWV0YWRhdGEtc3RvcmVcIixgLFxuICAgICAgICBgXWAsXG4gICAgICAgIGBub2RlLW5hbWUgPSBcInJlc3RhdGUtMFwiYCxcbiAgICAgICAgYGNsdXN0ZXItbmFtZSA9IFwiJHtwcm9wcy5yZXN0YXRlQ29uZmlnPy5jbHVzdGVyTmFtZSA/PyBpZH1cImAsXG4gICAgICAgIGBhbGxvdy1ib290c3RyYXAgPSB0cnVlYCxcbiAgICAgICAgYGJvb3RzdHJhcC1udW0tcGFydGl0aW9ucyA9ICR7cHJvcHMucmVzdGF0ZUNvbmZpZz8uYm9vdHN0cmFwTnVtUGFydGl0aW9ucyA/PyA0fWAsXG4gICAgICAgIGBkZWZhdWx0LXRocmVhZC1wb29sLXNpemUgPSAzYCxcbiAgICAgICAgYHN0b3JhZ2UtaGlnaC1wcmlvcml0eS1iZy10aHJlYWRzID0gM2AsXG4gICAgICAgIGBzdG9yYWdlLWxvdy1wcmlvcml0eS1iZy10aHJlYWRzID0gM2AsXG4gICAgICAgIGByb2Nrc2RiLXRvdGFsLW1lbW9yeS1zaXplID0gXCIke3Byb3BzLnJlc3RhdGVDb25maWc/LnJvY2tzZGI/LnRvdGFsTWVtb3J5U2l6ZT8udG9NZWJpYnl0ZXMoKSA/PyA1MTIuMCArIFwiIE1CXCJ9XCJgLFxuICAgICAgICBgcm9ja3NkYi10b3RhbC1tZW10YWJsZXMtcmF0aW8gPSAwLjYwYCxcbiAgICAgICAgYHJvY2tzZGItYmctdGhyZWFkcyA9IDNgLFxuICAgICAgICBgcm9ja3NkYi1oaWdoLXByaW9yaXR5LWJnLXRocmVhZHMgPSAzYCxcbiAgICAgICAgYGAsXG4gICAgICAgIGBbd29ya2VyXWAsXG4gICAgICAgIGBpbnRlcm5hbC1xdWV1ZS1sZW5ndGggPSAxMDAwYCxcbiAgICAgICAgYGAsXG4gICAgICAgIGBbd29ya2VyLnN0b3JhZ2VdYCxcbiAgICAgICAgYHJvY2tzZGItbWF4LWJhY2tncm91bmQtam9icyA9IDNgLFxuICAgICAgICBgcm9ja3NkYi1zdGF0aXN0aWNzLWxldmVsID0gXCJleGNlcHQtZGV0YWlsZWQtdGltZXJzXCJgLFxuICAgICAgICBgbnVtLXBhcnRpdGlvbnMtdG8tc2hhcmUtbWVtb3J5LWJ1ZGdldCA9IDRgLFxuICAgICAgICBgYCxcbiAgICAgICAgYFthZG1pbl1gLFxuICAgICAgICBgYmluZC1hZGRyZXNzID0gXCIke3RoaXMudGxzRW5hYmxlZCA/IFwiMTI3LjAuMC4xXCIgOiBcIjAuMC4wLjBcIn06JHtSRVNUQVRFX0FETUlOX1BPUlR9XCJgLFxuICAgICAgICBgYCxcbiAgICAgICAgYFthZG1pbi5xdWVyeS1lbmdpbmVdYCxcbiAgICAgICAgYG1lbW9yeS1zaXplID0gXCI1MC4wIE1CXCJgLFxuICAgICAgICBgcXVlcnktcGFyYWxsZWxpc20gPSA0YCxcbiAgICAgICAgYGAsXG4gICAgICAgIGBbaW5ncmVzc11gLFxuICAgICAgICBgYmluZC1hZGRyZXNzID0gXCIke3RoaXMudGxzRW5hYmxlZCA/IFwiMTI3LjAuMC4xXCIgOiBcIjAuMC4wLjBcIn06JHtSRVNUQVRFX0lOR1JFU1NfUE9SVH1cImAsXG4gICAgICAgIGByb2Nrc2RiLW1heC1iYWNrZ3JvdW5kLWpvYnMgPSAzYCxcbiAgICAgICAgYHJvY2tzZGItc3RhdGlzdGljcy1sZXZlbCA9IFwiZXhjZXB0LWRldGFpbGVkLXRpbWVyc1wiYCxcbiAgICAgICAgYHdyaXRlci1iYXRjaC1jb21taXQtY291bnQgPSAxMDAwYCxcbiAgICAgICAgYGAsXG4gICAgICAgIGBbbWV0YWRhdGEtc3RvcmUucm9ja3NkYl1gLFxuICAgICAgICBgcm9ja3NkYi1tYXgtYmFja2dyb3VuZC1qb2JzID0gMWAsXG4gICAgICAgIGByb2Nrc2RiLXN0YXRpc3RpY3MtbGV2ZWwgPSBcImV4Y2VwdC1kZXRhaWxlZC10aW1lcnNcImAsXG4gICAgICBdLmpvaW4oXCJcXG5cIilcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1vdW50RGF0YVZvbHVtZVNjcmlwdCgpIHtcbiAgICByZXR1cm4gYFxuaWYgbW91bnQgfCBncmVwIC1xcyAnL3Zhci9yZXN0YXRlJzsgdGhlblxuICBlY2hvIFwiL3Zhci9yZXN0YXRlIGlzIG1vdW50ZWRcIlxuZWxzZVxuICBpZiBbIC1kIC92YXIvcmVzdGF0ZSBdOyB0aGVuXG4gICAgaWYgWyBcIiQobHMgLUEgL3Zhci9yZXN0YXRlKVwiIF07IHRoZW5cbiAgICAgIGVjaG8gXCJEYXRhIGV4aXN0cyBpbiAvdmFyL3Jlc3RhdGUgdGhhdCBpcyBub3Qgb24gZGF0YSB2b2x1bWU7IHJlZnVzaW5nIHRvIG92ZXJ3cml0ZSFcIlxuICAgICAgZXhpdCAxXG4gICAgZmlcbiAgZWxzZVxuICAgIG1rZGlyIC92YXIvcmVzdGF0ZVxuICBmaVxuICBpZiBmaWxlIC1zTCAke0RBVEFfREVWSUNFX05BTUV9IHwgZ3JlcCAtcSAnOiBkYXRhJCc7IHRoZW5cbiAgICBta2ZzIC10IHhmcyAke0RBVEFfREVWSUNFX05BTUV9XG4gIGZpXG4gIG1vdW50ICR7REFUQV9ERVZJQ0VfTkFNRX0gL3Zhci9yZXN0YXRlXG4gIGlmICEgZ3JlcCAtcXMgJy92YXIvcmVzdGF0ZScgL2V0Yy9mc3RhYjsgdGhlblxuICAgIGVjaG8gXCIke0RBVEFfREVWSUNFX05BTUV9IC92YXIvcmVzdGF0ZSB4ZnMgZGVmYXVsdHMgMCAwXCIgPj4gL2V0Yy9mc3RhYlxuICAgIGVjaG8gXCJBZGRlZCBlbnRyeSBmb3IgJHtEQVRBX0RFVklDRV9OQU1FfSB0byAvZXRjL2ZzdGFiXCJcbiAgZWxzZVxuICAgIGVjaG8gXCJFbnRyeSBmb3IgJHtEQVRBX0RFVklDRV9OQU1FfSBhbHJlYWR5IGV4aXN0cyBpbiAvZXRjL2ZzdGFiXCJcbiAgZmlcbmZpXG5gO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBwcm9wcyBjb25zdHJ1Y3QgcHJvcGVydGllc1xuICAgKiBAcmV0dXJucyBuZ2lueCBjb25maWd1cmF0aW9uIHRvIHVzZSBmb3IgaW5ncmVzcyByZXZlcnNlIHByb3h5LCBmb3JtYXR0ZWQgYXMgYSBtdWx0aS1saW5lIHN0cmluZ1xuICAgKi9cbiAgcHJvdGVjdGVkIGluZ3Jlc3NOZ2lueENvbmZpZyhwcm9wczogU2luZ2xlTm9kZVJlc3RhdGVQcm9wcykge1xuICAgIHJldHVybiAoXG4gICAgICBwcm9wcy5pbmdyZXNzTmdpbnhDb25maWdPdmVycmlkZSA/P1xuICAgICAgW1xuICAgICAgICBcInNlcnZlciB7XCIsXG4gICAgICAgIGAgIGxpc3RlbiAke1JFU1RBVEVfVExTX0lOR1JFU1NfUE9SVH0gc3NsIGh0dHAyO2AsXG4gICAgICAgIGAgIGxpc3RlbiBbOjpdOiR7UkVTVEFURV9UTFNfSU5HUkVTU19QT1JUfSBzc2wgaHR0cDI7YCxcbiAgICAgICAgXCIgIHNlcnZlcl9uYW1lIF87XCIsXG4gICAgICAgIFwiICByb290IC91c3Ivc2hhcmUvbmdpbngvaHRtbDtcIixcbiAgICAgICAgXCJcIixcbiAgICAgICAgJyAgc3NsX2NlcnRpZmljYXRlIFwiL2V0Yy9wa2kvcHJpdmF0ZS9yZXN0YXRlLXNlbGZzaWduZWQuY3J0XCI7JyxcbiAgICAgICAgJyAgc3NsX2NlcnRpZmljYXRlX2tleSBcIi9ldGMvcGtpL3ByaXZhdGUvcmVzdGF0ZS1zZWxmc2lnbmVkLmtleVwiOycsXG4gICAgICAgIFwiICBzc2xfc2Vzc2lvbl9jYWNoZSBzaGFyZWQ6U1NMOjFtO1wiLFxuICAgICAgICBcIiAgc3NsX3Nlc3Npb25fdGltZW91dCAxMG07XCIsXG4gICAgICAgIFwiICBzc2xfY2lwaGVycyBQUk9GSUxFPVNZU1RFTTtcIixcbiAgICAgICAgXCIgIHNzbF9wcmVmZXJfc2VydmVyX2NpcGhlcnMgb247XCIsXG4gICAgICAgIFwiXCIsXG4gICAgICAgIFwiICBsb2NhdGlvbiAvIHtcIixcbiAgICAgICAgYCAgICBwcm94eV9wYXNzIGh0dHA6Ly9sb2NhbGhvc3Q6JHtSRVNUQVRFX0lOR1JFU1NfUE9SVH07YCxcbiAgICAgICAgYCAgICBwcm94eV9yZWFkX3RpbWVvdXQgJHtwcm9wcy5pbmdyZXNzUHJveHlSZWFkVGltZW91dD8udG9TZWNvbmRzKCkgPz8gMzYwMH07YCxcbiAgICAgICAgXCIgIH1cIixcbiAgICAgICAgXCJ9XCIsXG4gICAgICAgIFwiXCIsXG4gICAgICAgIFwic2VydmVyIHtcIixcbiAgICAgICAgYCAgbGlzdGVuICR7UkVTVEFURV9UTFNfQURNSU5fUE9SVH0gc3NsIGh0dHAyO2AsXG4gICAgICAgIGAgIGxpc3RlbiBbOjpdOiR7UkVTVEFURV9UTFNfQURNSU5fUE9SVH0gc3NsIGh0dHAyO2AsXG4gICAgICAgIFwiICBzZXJ2ZXJfbmFtZSBfO1wiLFxuICAgICAgICBcIiAgcm9vdCAvdXNyL3NoYXJlL25naW54L2h0bWw7XCIsXG4gICAgICAgIFwiXCIsXG4gICAgICAgICcgIHNzbF9jZXJ0aWZpY2F0ZSBcIi9ldGMvcGtpL3ByaXZhdGUvcmVzdGF0ZS1zZWxmc2lnbmVkLmNydFwiOycsXG4gICAgICAgICcgIHNzbF9jZXJ0aWZpY2F0ZV9rZXkgXCIvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5rZXlcIjsnLFxuICAgICAgICBcIiAgc3NsX3Nlc3Npb25fY2FjaGUgc2hhcmVkOlNTTDoxbTtcIixcbiAgICAgICAgXCIgIHNzbF9zZXNzaW9uX3RpbWVvdXQgMTBtO1wiLFxuICAgICAgICBcIiAgc3NsX2NpcGhlcnMgUFJPRklMRT1TWVNURU07XCIsXG4gICAgICAgIFwiICBzc2xfcHJlZmVyX3NlcnZlcl9jaXBoZXJzIG9uO1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICBcIiAgbG9jYXRpb24gLyB7XCIsXG4gICAgICAgIGAgICAgcHJveHlfcGFzcyBodHRwOi8vbG9jYWxob3N0OiR7UkVTVEFURV9BRE1JTl9QT1JUfTtgLFxuICAgICAgICBcIiAgfVwiLFxuICAgICAgICBcIn1cIixcbiAgICAgIF0uam9pbihcIlxcblwiKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
332
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLW5vZGUtcmVzdGF0ZS1kZXBsb3ltZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL3Jlc3RhdGUtY29uc3RydWN0cy9zaW5nbGUtbm9kZS1yZXN0YXRlLWRlcGxveW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7R0FTRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsMkNBQXVDO0FBQ3ZDLDJEQUE2QztBQUM3Qyx5REFBMkM7QUFDM0MseURBQTJDO0FBRTNDLDZEQUFtRDtBQUVuRCw2Q0FBNEM7QUE2RzVDLElBQVksY0FXWDtBQVhELFdBQVksY0FBYztJQUN4Qjs7T0FFRztJQUNILDJEQUFRLENBQUE7SUFFUjs7O09BR0c7SUFDSCx5R0FBK0IsQ0FBQTtBQUNqQyxDQUFDLEVBWFcsY0FBYyw4QkFBZCxjQUFjLFFBV3pCO0FBRUQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7QUFDbEMsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLENBQUM7QUFDckMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDaEMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUM7QUFDcEMsTUFBTSxxQkFBcUIsR0FBRyw4QkFBOEIsQ0FBQztBQUM3RCxNQUFNLDBCQUEwQixHQUFHLFFBQVEsQ0FBQztBQUM1QyxNQUFNLHVCQUF1QixHQUFHLFFBQVEsQ0FBQztBQUN6QyxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQztBQUVwQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFhLDJCQUE0QixTQUFRLHNCQUFTO0lBYXhELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNkI7UUFDckUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENB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Z0JBQ2xCLCtCQUErQjtnQkFDL0IsRUFBRTtnQkFDRiw4REFBOEQ7Z0JBQzlELGtFQUFrRTtnQkFDbEUsb0NBQW9DO2dCQUNwQyw0QkFBNEI7Z0JBQzVCLCtCQUErQjtnQkFDL0IsaUNBQWlDO2dCQUNqQyxFQUFFO2dCQUNGLGdCQUFnQjtnQkFDaEIsbUNBQW1DLG9CQUFvQixHQUFHO2dCQUMxRCwwQkFBMEIsS0FBSyxDQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxJQUFJLElBQUksR0FBRztnQkFDL0UsS0FBSztnQkFDTCxHQUFHO2dCQUNILEVBQUU7Z0JBQ0YsVUFBVTtnQkFDVixZQUFZLHNCQUFzQixhQUFhO2dCQUMvQyxpQkFBaUIsc0JBQXNCLGFBQWE7Z0JBQ3BELGtCQUFrQjtnQkFDbEIsK0JBQStCO2dCQUMvQixFQUFFO2dCQUNGLDhEQUE4RDtnQkFDOUQsa0VBQWtFO2dCQUNsRSxvQ0FBb0M7Z0JBQ3BDLDRCQUE0QjtnQkFDNUIsK0JBQStCO2dCQUMvQixpQ0FBaUM7Z0JBQ2pDLEVBQUU7Z0JBQ0YsZ0JBQWdCO2dCQUNoQixtQ0FBbUMsa0JBQWtCLEdBQUc7Z0JBQ3hELEtBQUs7Z0JBQ0wsR0FBRzthQUNKLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUNiLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFuVEQsa0VBbVRDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMy0yMDI1IC0gUmVzdGF0ZSBTb2Z0d2FyZSwgSW5jLiwgUmVzdGF0ZSBHbWJIXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFJlc3RhdGUgQ0RLIENvbnN0cnVjdCBMaWJyYXJ5LFxuICogd2hpY2ggaXMgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICpcbiAqIFlvdSBjYW4gZmluZCBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgaW4gZmlsZSBMSUNFTlNFIGluIHRoZSByb290XG4gKiBkaXJlY3Rvcnkgb2YgdGhpcyByZXBvc2l0b3J5IG9yIHBhY2thZ2UsIG9yIGF0XG4gKiBodHRwczovL2dpdGh1Yi5jb20vcmVzdGF0ZWRldi9zZGstdHlwZXNjcmlwdC9ibG9iL21haW4vTElDRU5TRVxuICovXG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IElSZXN0YXRlRW52aXJvbm1lbnQgfSBmcm9tIFwiLi9yZXN0YXRlLWVudmlyb25tZW50XCI7XG5pbXBvcnQgeyBUcmFjaW5nTW9kZSB9IGZyb20gXCIuL2RlcGxveW1lbnRzLWNvbW1vblwiO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpbmdsZU5vZGVSZXN0YXRlUHJvcHMge1xuICAvKiogRUMyIGluc3RhbmNlIHR5cGUgdG8gdXNlLiAqL1xuICBpbnN0YW5jZVR5cGU/OiBlYzIuSW5zdGFuY2VUeXBlO1xuXG4gIC8qKiBNYWNoaW5lIGltYWdlLiBOb3RlOiBzdGFydHVwIHNjcmlwdCBleHBlY3RzIHl1bS1iYXNlZCBwYWNrYWdlIG1hbmFnZW1lbnQuICovXG4gIG1hY2hpbmVJbWFnZT86IGVjMi5JTWFjaGluZUltYWdlO1xuXG4gIC8qKiBUaGUgVlBDIGluIHdoaWNoIHRvIGxhdW5jaCB0aGUgUmVzdGF0ZSBob3N0LiAqL1xuICB2cGM/OiBlYzIuSVZwYztcblxuICBuZXR3b3JrQ29uZmlndXJhdGlvbj86IHtcbiAgICAvKipcbiAgICAgKiBTdWJuZXQgdHlwZSBmb3IgdGhlIFJlc3RhdGUgaG9zdC5cbiAgICAgKlxuICAgICAqIEF2YWlsYWJsZSBvcHRpb25zOlxuICAgICAqICAtIFtEZWZhdWx0XSB7QGxpbmsgZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTU30gd2lsbCBjcmVhdGUgdGhlIFJlc3RhdGUgaW5zdGFuY2Ugd2l0aCBvdXRib3VuZCBpbnRlcm5ldFxuICAgICAqICAgIGFjY2VzcyBvbmx5LCBzbyB0aGF0IGl0IGNhbiBpbnZva2UgSFRUUCBlbmRwb2ludHMuIFRoZSBzZWN1cml0eSBncm91cHMge0BsaW5rIGluZ3Jlc3NTZWN1cml0eUdyb3VwfSBhbmRcbiAgICAgKiAgICB7QGxpbmsgYWRtaW5TZWN1cml0eUdyb3VwfSBjb250cm9sIGluYm91bmQgdHJhZmZpYyB0byB0aGUgc2VydmljZSBpbmdyZXNzIGFuZCBhZG1pbiBwb3J0cyByZXNwZWN0aXZlbHkuXG4gICAgICogICAgQ29uZmlndXJlIHtAbGluayBTZXJ2aWNlRGVwbG95ZXJ9IHRvIHVzZSB0aGUgbGF0dGVyLCBhbmQgc2V0IHVwIGluZ3Jlc3MgdHJhZmZpYyByb3V0aW5nIG91dHNpZGUgb2YgdGhpc1xuICAgICAqICAgIGNvbnN0cnVjdCB1c2luZyB0aGUgZm9ybWVyLlxuICAgICAqICAtIEluc2VjdXJlLCBpbnRlcm5ldC1mYWNpbmcge0BsaW5rIGVjMi5TdWJuZXRUeXBlLlBVQkxJQ30gd2lsbCBhbHNvIHByb3Zpc2lvbiBhbiBuZ2lueCByZXZlcnNlIHByb3h5XG4gICAgICogICAgYW5kIGFuIEhUVFAgbGlzdGVuZXIgd2l0aCBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlLlxuICAgICAqL1xuICAgIHN1Ym5ldFR5cGU/OiBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTIHwgZWMyLlN1Ym5ldFR5cGUuUFVCTElDO1xuICB9O1xuXG4gIC8qKlxuICAgKiBBbGxvdyBpbmNvbWluZyBpbmdyZXNzIHRyYWZmaWMgZnJvbSBhbnl3aGVyZS4gRGVmYXVsdDogYGZhbHNlYC4gQWx0ZXJuYXRpdmVseSwgYWRkIHJ1bGVzIHRvIHRoZVxuICAgKiBgaW5ncmVzc1NlY3VyaXR5R3JvdXBgIGRpcmVjdGx5LlxuICAgKi9cbiAgcHVibGljSW5ncmVzcz86IGJvb2xlYW47XG5cbiAgLyoqIExvZyBncm91cCBmb3IgUmVzdGF0ZSBzZXJ2aWNlIGxvZ3MuICovXG4gIGxvZ0dyb3VwPzogbG9ncy5Mb2dHcm91cDtcblxuICAvKiogVHJhY2luZyBtb2RlIGZvciBSZXN0YXRlIHNlcnZpY2VzLiBEZWZhdWx0cyB0byB7QGxpbmsgVHJhY2luZ01vZGUuRElTQUJMRUR9LiAqL1xuICB0cmFjaW5nPzogVHJhY2luZ01vZGU7XG5cbiAgLyoqIFByZWZpeCBmb3IgcmVzb3VyY2VzIGNyZWF0ZWQgYnkgdGhpcyBjb25zdHJ1Y3QgdGhhdCByZXF1aXJlIHVuaXF1ZSBuYW1lcy4gKi9cbiAgcHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKiBSZXN0YXRlIERvY2tlciBpbWFnZSBuYW1lLiBEZWZhdWx0cyB0byBgbGF0ZXN0YC4gKi9cbiAgcmVzdGF0ZUltYWdlPzogc3RyaW5nO1xuXG4gIC8qKiBSZXN0YXRlIERvY2tlciBpbWFnZSB0YWcuIERlZmF1bHRzIHRvIGBsYXRlc3RgLiAqL1xuICByZXN0YXRlVGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFQlMgZGF0YSB2b2x1bWUgc2V0dGluZ3MgZm9yIFJlc3RhdGUgZGF0YSBzdG9yYWdlLiBJZiBub3Qgc3BlY2lmaWVkLCBhIGRlZmF1bHQgOEdCIHZvbHVtZSB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICBkYXRhVm9sdW1lT3B0aW9ucz86IGVjMi5FYnNEZXZpY2VQcm9wcyB8IHVuZGVmaW5lZDtcblxuICAvKiogUmVzdGF0ZSBoaWdoLWxldmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBzZXQge0BsaW5rIHJlc3RhdGVDb25maWdPdmVycmlkZX0uICovXG4gIHJlc3RhdGVDb25maWc/OiB7XG4gICAgLyoqIERlZmF1bHRzIHRvIHRoZSBjb25zdHJ1Y3QgaWQgaWYgbGVmdCB1bnNwZWNpZmllZC4gKi9cbiAgICBjbHVzdGVyTmFtZT86IHN0cmluZztcbiAgICAvKiogRGVmYXVsdHMgdG8gNC4gT25seSB0YWtlcyBlZmZlY3Qgb24gaW5pdGlhbCBwcm92aXNpb25pbmcuICovXG4gICAgYm9vdHN0cmFwTnVtUGFydGl0aW9ucz86IG51bWJlcjtcbiAgICAvKiogUm9ja3NEQiBzZXR0aW5ncy4gKi9cbiAgICByb2Nrc2RiPzoge1xuICAgICAgLyoqIERlZmF1bHRzIHRvIDUxMiBNQi4gKi9cbiAgICAgIHRvdGFsTWVtb3J5U2l6ZT86IGNkay5TaXplO1xuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHByb3BlcnRpZXMgdG8gc2V0IGZvciBSZXN0YXRlLiBUaGlzIGlzIGEgc2ltcGxlIHdheSB0byBwYXNzIGN1c3RvbSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuXG4gICAqL1xuICBlbnZpcm9ubWVudD86IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqXG4gICAqIENvbXBsZXRlbHkgb3ZlcnJpZGUgdGhlIFJlc3RhdGUgc2VydmVyIGNvbmZpZ3VyYXRpb24uIE5vdGUgdGhhdCBvdGhlciBSZXN0YXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgKiB3aWxsIGVmZmVjdGl2ZWx5IGJlIGlnbm9yZWQgaWYgdGhpcyBpcyBzZXQuIFNlZSBodHRwczovL2RvY3MucmVzdGF0ZS5kZXYvb3BlcmF0ZS9jb25maWd1cmF0aW9uL3NlcnZlci9cbiAgICogZm9yIGRldGFpbHMuXG4gICAqL1xuICByZXN0YXRlQ29uZmlnT3ZlcnJpZGU/OiBzdHJpbmc7XG5cbiAgLyoqIEFtYXpvbiBEaXN0cm8gZm9yIE9wZW4gVGVsZW1ldHJ5IERvY2tlciBpbWFnZSB0YWcuIERlZmF1bHRzIHRvIGBsYXRlc3RgLiAqL1xuICBhZG90VGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZW1vdmFsIHBvbGljeSBmb3IgbG9uZy1saXZlZCByZXNvdXJjZXMgKHN0b3JhZ2UsIGxvZ3MpLiBEZWZhdWx0OiBgY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWWAuXG4gICAqL1xuICByZW1vdmFsUG9saWN5PzogY2RrLlJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIENvbnRyb2wgb24taG9zdCBUTFMgdGVybWluYXRpb24gZm9yIGluZ3Jlc3MgYW5kIGFkbWluIHBvcnRzLiBEZWZhdWx0cyB0byBgVGxzVGVybWluYXRpb24uTk9ORWAuIEN1cnJlbnRseSwgZW5hYmxpbmdcbiAgICogVExTIGltcGxpY2l0bHkgZW5hYmxlcyBhbiBgbmdpbnhgIHNlcnZpY2UgdG8gYmUgY29uZmlndXJlZCBvbiB0aGUgaG9zdC4gRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiB0aGlzIG9wdGlvbiwgdGhlXG4gICAqIGluZ3Jlc3Mgc2VjdXJpdHkgZ3JvdXAgd2lsbCBiZSBjb25maWd1cmVkIHRvIGFsbG93IGluYm91bmQgdHJhZmZpYyB0byB0aGUgYXBwcm9wcmlhdGUgcG9ydCAtIDgwODAgZm9yIG5vIFRMUywgb3JcbiAgICogNDQzIHdpdGggVExTIGVuYWJsZWQuXG4gICAqL1xuICB0bHNUZXJtaW5hdGlvbj86IFRsc1Rlcm1pbmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVhZCB0aW1lb3V0IGZvciBwcm94aWVkIGluZ3Jlc3MgcmVxdWVzdHMuIERlZmF1bHQ6IDM2MDAgc2Vjb25kcy5cbiAgICovXG4gIGluZ3Jlc3NQcm94eVJlYWRUaW1lb3V0PzogY2RrLkR1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBDb21wbGV0ZWx5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGBuZ2lueGAgY29uZmlndXJhdGlvbiBmb3IgdGhlIGluZ3Jlc3MgcHJveHkuIE5vdGUgdGhhdCBvdGhlclxuICAgKiBpbmdyZXNzIHByb3h5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIGVmZmVjdGl2ZWx5IGJlIGlnbm9yZWQgaWYgdGhpcyBpcyBzZXQuXG4gICAqL1xuICBpbmdyZXNzTmdpbnhDb25maWdPdmVycmlkZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gVGxzVGVybWluYXRpb24ge1xuICAvKipcbiAgICogRGlzYWJsZWQgKGRlZmF1bHQpOyBleHBvc2UgdGhlIGByZXN0YXRlLXNlcnZlcmAgSFRUUCBwb3J0cyBkaXJlY3RseS5cbiAgICovXG4gIERJU0FCTEVELFxuXG4gIC8qKlxuICAgKiBVc2Ugc2VsZi1zaWduZWQgY2VydGlmaWNhdGVzIGZvciBUTFMgdGVybWluYXRpb24gb24gdGhlIGluZ3Jlc3MgYW5kIGFkbWluIHBvcnRzLiBDb252ZW5pZW50IGZvciBxdWljayB0ZXN0aW5nLFxuICAgKiBtYWtlIHN1cmUgeW91IHNldCBgaW5zZWN1cmVgID0gYHRydWVgIHdoZW4gdXNpbmcgYFNlcnZpY2VEZXBsb3llcmAgdG8gYWNjZXB0IHRoaXMgY2VydGlmaWNhdGUuXG4gICAqL1xuICBPTl9IT1NUX1NFTEZfU0lHTkVEX0NFUlRJRklDQVRFLFxufVxuXG5jb25zdCBSRVNUQVRFX0lOR1JFU1NfUE9SVCA9IDgwODA7XG5jb25zdCBSRVNUQVRFX1RMU19JTkdSRVNTX1BPUlQgPSA0NDM7XG5jb25zdCBSRVNUQVRFX0FETUlOX1BPUlQgPSA5MDcwO1xuY29uc3QgUkVTVEFURV9UTFNfQURNSU5fUE9SVCA9IDkwNzM7XG5jb25zdCBSRVNUQVRFX0lNQUdFX0RFRkFVTFQgPSBcImRvY2tlci5pby9yZXN0YXRlZGV2L3Jlc3RhdGVcIjtcbmNvbnN0IFJFU1RBVEVfRE9DS0VSX0RFRkFVTFRfVEFHID0gXCJsYXRlc3RcIjtcbmNvbnN0IEFET1RfRE9DS0VSX0RFRkFVTFRfVEFHID0gXCJsYXRlc3RcIjtcbmNvbnN0IERBVEFfREVWSUNFX05BTUUgPSBcIi9kZXYvc2RkXCI7XG5cbi8qKlxuICogQ3JlYXRlcyBhIFJlc3RhdGUgc2VydmljZSBkZXBsb3ltZW50IGJhY2tlZCBieSBhIHNpbmdsZSBFQzIgaW5zdGFuY2UsIHN1aXRhYmxlIGZvciBkZXZlbG9wbWVudCBhbmQgdGVzdGluZyBwdXJwb3Nlcy5cbiAqXG4gKiAqKkR1cmFiaWxpdHkqKlxuICpcbiAqIFJlc3RhdGUgZGF0YSB3aWxsIGJlIHN0b3JlZCBpbiBhIHNlcGFyYXRlIEVCUyB2b2x1bWUgd2hpY2ggeW91IGNhbiBjb25maWd1cmUgZXhwbGljaXRseSB2aWEgdGhlIGBkYXRhVm9sdW1lT3B0aW9uc2BcbiAqIHByb3BlcnR5LiBVcGRhdGluZyBjb25maWd1cmF0aW9uIHNldHRpbmdzIG1heSB0cmlnZ2VyIGluc3RhbmNlIHJlYm9vdCBvciByZXBsYWNlbWVudCAtIGNvbnNpZGVyIHNuYXBzaG90dGluZyB0aGUgZGF0YVxuICogdm9sdW1lIHByaW9yIHRvIGRlcGxveW1lbnRzLCBhbmQgZW5hYmxpbmcgaW5zdGFuY2UgdGVybWluYXRpb24gcHJvdGVjdGlvbi5cbiAqXG4gKiAqKlNlY3VyaXR5KipcbiAqXG4gKiBUaGUgRUMyIGluc3RhbmNlIHdpbGwgYmUgY3JlYXRlZCBpbiB0aGUgZGVmYXVsdCBWUEMgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuIFR3byBzZWN1cml0eSBncm91cHMgYXJlIGNyZWF0ZWQsXG4gKiBgaW5ncmVzc1NlY3VyaXR5R3JvdXBgIGFuZCBgYWRtaW5TZWN1cml0eUdyb3VwYCwgd2hpY2ggY29udHJvbCBhY2Nlc3MgdG8gdGhlIFJlc3RhdGUgc2VydmljZSBpbmdyZXNzIGFuZCBhZG1pbiBwb3J0c1xuICogcmVzcGVjdGl2ZWx5LiBZb3UgbXVzdCBhZGQgYXBwcm9wcmlhdGUgcnVsZXMgb3IgYWRkIG90aGVyIHJlc291cmNlcyB0byB0aGVzZSBzZWN1cml0eSBncm91cHMgdG8gYWxsb3cgYWNjZXNzLlxuICpcbiAqIFNlZSB7QGxpbmsgU2luZ2xlTm9kZVJlc3RhdGVQcm9wc30gZm9yIGF2YWlsYWJsZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCB7QGxpbmsgU2VydmljZURlcGxveWVyfSBmb3IgZGVwbG95aW5nXG4gKiBMYW1iZGEgaGFuZGxlcnMgdG8gZW52aXJvbm1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgU2luZ2xlTm9kZVJlc3RhdGVEZXBsb3ltZW50IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVJlc3RhdGVFbnZpcm9ubWVudCB7XG4gIHJlYWRvbmx5IGluc3RhbmNlOiBlYzIuSW5zdGFuY2U7XG4gIHJlYWRvbmx5IGluc3RhbmNlUm9sZTogaWFtLklSb2xlO1xuICByZWFkb25seSBpbnZva2VyUm9sZTogaWFtLklSb2xlO1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuICByZWFkb25seSBpbmdyZXNzU2VjdXJpdHlHcm91cDogZWMyLklTZWN1cml0eUdyb3VwO1xuICByZWFkb25seSBpbmdyZXNzUG9ydDogbnVtYmVyO1xuICByZWFkb25seSBpbmdyZXNzVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFkbWluU2VjdXJpdHlHcm91cDogZWMyLklTZWN1cml0eUdyb3VwO1xuICByZWFkb25seSBhZG1pblBvcnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgYWRtaW5Vcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgdGxzRW5hYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2luZ2xlTm9kZVJlc3RhdGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnZwYyA9IHByb3BzLnZwYyA/PyBlYzIuVnBjLmZyb21Mb29rdXAodGhpcywgXCJWcGNcIiwgeyBpc0RlZmF1bHQ6IHRydWUgfSk7XG5cbiAgICBjb25zdCBzdWJuZXRUeXBlID0gcHJvcHMubmV0d29ya0NvbmZpZ3VyYXRpb24/LnN1Ym5ldFR5cGUgPz8gZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUztcblxuICAgIHRoaXMuaW5zdGFuY2VSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiSW5zdGFuY2VSb2xlXCIsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKFwiZWMyLmFtYXpvbmF3cy5jb21cIiksXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXCJBbWF6b25TU01NYW5hZ2VkSW5zdGFuY2VDb3JlXCIpXSxcbiAgICB9KTtcblxuICAgIHRoaXMuaW52b2tlclJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgXCJJbnZva2VyUm9sZVwiLCB7XG4gICAgICBhc3N1bWVkQnk6IHRoaXMuaW5zdGFuY2VSb2xlLFxuICAgIH0pO1xuXG4gICAgbmV3IGlhbS5Qb2xpY3kodGhpcywgXCJBc3N1bWVJbnZva2VyUm9sZVBvbGljeVwiLCB7XG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBzaWQ6IFwiQWxsb3dBc3N1bWVJbnZva2VyUm9sZVwiLFxuICAgICAgICAgIGFjdGlvbnM6IFtcInN0czpBc3N1bWVSb2xlXCJdLFxuICAgICAgICAgIHJlc291cmNlczogW3RoaXMuaW52b2tlclJvbGUucm9sZUFybl0sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KS5hdHRhY2hUb1JvbGUodGhpcy5pbnN0YW5jZVJvbGUpO1xuXG4gICAgY29uc3QgbG9nR3JvdXAgPVxuICAgICAgcHJvcHMubG9nR3JvdXAgPz9cbiAgICAgIG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsIFwiTG9nc1wiLCB7XG4gICAgICAgIGxvZ0dyb3VwTmFtZTogYC9yZXN0YXRlLyR7aWR9YCxcbiAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX01PTlRILFxuICAgICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIH0pO1xuICAgIGxvZ0dyb3VwLmdyYW50V3JpdGUodGhpcy5pbnN0YW5jZVJvbGUpO1xuXG4gICAgY29uc3QgcmVzdGF0ZUltYWdlID0gcHJvcHMucmVzdGF0ZUltYWdlID8/IFJFU1RBVEVfSU1BR0VfREVGQVVMVDtcbiAgICBjb25zdCByZXN0YXRlVGFnID0gcHJvcHMucmVzdGF0ZVRhZyA/PyBSRVNUQVRFX0RPQ0tFUl9ERUZBVUxUX1RBRztcbiAgICBjb25zdCBhZG90VGFnID0gcHJvcHMuYWRvdFRhZyA/PyBBRE9UX0RPQ0tFUl9ERUZBVUxUX1RBRztcblxuICAgIHRoaXMudGxzRW5hYmxlZCA9IHByb3BzLnRsc1Rlcm1pbmF0aW9uID09PSBUbHNUZXJtaW5hdGlvbi5PTl9IT1NUX1NFTEZfU0lHTkVEX0NFUlRJRklDQVRFO1xuXG4gICAgY29uc3QgZW52RGVmYXVsdHMgPSB7XG4gICAgICBSRVNUQVRFX09CU0VSVkFCSUxJVFlfX0xPR19fRk9STUFUOiBcIkpzb25cIixcbiAgICAgIFJVU1RfTE9HOiBcImluZm9cIixcbiAgICAgIFJFU1RBVEVfT0JTRVJWQUJJTElUWV9fVFJBQ0lOR19fRU5EUE9JTlQ6IFwiaHR0cDovL2xvY2FsaG9zdDo0MzE3XCIsXG4gICAgfTtcbiAgICBjb25zdCBlbnZBcmdzID0gT2JqZWN0LmVudHJpZXMoeyAuLi5lbnZEZWZhdWx0cywgLi4uKHByb3BzLmVudmlyb25tZW50ID8/IHt9KSB9KVxuICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgLWUgJHtrZXl9PVwiJHt2YWx1ZX1cImApXG4gICAgICAuam9pbihcIiBcIik7XG5cbiAgICBjb25zdCBpbml0U2NyaXB0ID0gZWMyLlVzZXJEYXRhLmZvckxpbnV4KCk7XG4gICAgaW5pdFNjcmlwdC5hZGRDb21tYW5kcyhcbiAgICAgIFwic2V0IC1ldWYgLW8gcGlwZWZhaWxcIixcbiAgICAgIGB5dW0gaW5zdGFsbCAteSBucG0gJiYgbnBtIGluc3RhbGwgLWdxIEByZXN0YXRlZGV2L3Jlc3RhdGVAJHtyZXN0YXRlVGFnfWAsXG4gICAgICBcInl1bSBpbnN0YWxsIC15IGRvY2tlclwiLFxuICAgICAgdGhpcy5tb3VudERhdGFWb2x1bWVTY3JpcHQoKSxcblxuICAgICAgXCJta2RpciAtcCAvZXRjL3Jlc3RhdGVcIixcbiAgICAgIFtcImNhdCA8PCBFT0YgPiAvZXRjL3Jlc3RhdGUvY29uZmlnLnRvbWxcIiwgdGhpcy5yZXN0YXRlQ29uZmlnKGlkLCBwcm9wcyksIFwiRU9GXCJdLmpvaW4oXCJcXG5cIiksXG5cbiAgICAgIFwic3lzdGVtY3RsIHN0YXJ0IGRvY2tlci5zZXJ2aWNlXCIsXG5cbiAgICAgIC8vIFN0YXJ0IHRoZSBBRE9UIGNvbGxlY3RvciAtIG5lZWRlZCBmb3IgWC1yYXkgdHJhY2UgZm9yd2FyZGluZ1xuICAgICAgYGlmIFsgXCIkKGRvY2tlciBwcyAtcWEgLWYgbmFtZT1hZG90KVwiIF07IHRoZW4gZG9ja2VyIHN0b3AgYWRvdCB8fCB0cnVlOyBkb2NrZXIgcm0gYWRvdDsgZmlgLFxuICAgICAgXCJkb2NrZXIgcnVuIC0tbmFtZSBhZG90IC0tcmVzdGFydCBvbi1mYWlsdXJlIC0tZGV0YWNoXCIgK1xuICAgICAgICBcIiAtcCA0MzE3OjQzMTcgLXAgNTU2ODA6NTU2ODAgLXAgODg4OTo4ODg4XCIgK1xuICAgICAgICBgIHB1YmxpYy5lY3IuYXdzL2F3cy1vYnNlcnZhYmlsaXR5L2F3cy1vdGVsLWNvbGxlY3Rvcjoke2Fkb3RUYWd9YCxcblxuICAgICAgLy8gU3RhcnQgdGhlIFJlc3RhdGUgc2VydmVyIGNvbnRhaW5lclxuICAgICAgYGlmIFsgXCIkKGRvY2tlciBwcyAtcWEgLWYgbmFtZT1yZXN0YXRlKVwiIF07IHRoZW4gZG9ja2VyIHN0b3AgcmVzdGF0ZSB8fCB0cnVlOyBkb2NrZXIgcm0gcmVzdGF0ZTsgZmlgLFxuICAgICAgXCJkb2NrZXIgcnVuIC0tbmFtZSByZXN0YXRlIC0tcmVzdGFydCBvbi1mYWlsdXJlIC0tZGV0YWNoXCIgK1xuICAgICAgICBcIiAtLXZvbHVtZSAvZXRjL3Jlc3RhdGU6L2V0Yy9yZXN0YXRlXCIgK1xuICAgICAgICBcIiAtLXZvbHVtZSAvdmFyL3Jlc3RhdGU6L3Jlc3RhdGUtZGF0YVwiICtcbiAgICAgICAgXCIgLS1uZXR3b3JrPWhvc3RcIiArXG4gICAgICAgIGAgJHtlbnZBcmdzfWAgK1xuICAgICAgICBgIC0tbG9nLWRyaXZlcj1hd3Nsb2dzIC0tbG9nLW9wdCBhd3Nsb2dzLWdyb3VwPSR7bG9nR3JvdXAubG9nR3JvdXBOYW1lfWAgK1xuICAgICAgICBgICR7cmVzdGF0ZUltYWdlfToke3Jlc3RhdGVUYWd9YCArXG4gICAgICAgIFwiIC0tY29uZmlnLWZpbGUgL2V0Yy9yZXN0YXRlL2NvbmZpZy50b21sXCIsXG4gICAgKTtcblxuICAgIC8vIE9wdGlvbmFsbHksIGNvbmZpZ3VyZSBhbmQgc3RhcnQgdGhlIG5naW54IHNlcnZpY2VcbiAgICBpZiAodGhpcy50bHNFbmFibGVkKSB7XG4gICAgICBpZiAoc3VibmV0VHlwZSA9PSBlYzIuU3VibmV0VHlwZS5QVUJMSUMpIHtcbiAgICAgICAgaW5pdFNjcmlwdC5hZGRDb21tYW5kcyhcbiAgICAgICAgICBcInl1bSBpbnN0YWxsIC15IG5naW54XCIsXG4gICAgICAgICAgXCJta2RpciAtcCAvZXRjL3BraS9wcml2YXRlXCIsXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJvcGVuc3NsIHJlcSAtbmV3IC14NTA5IC1ub2RlcyAtc2hhMjU2IC1kYXlzIDM2NSAtZXh0ZW5zaW9ucyB2M19jYVwiLFxuICAgICAgICAgICAgXCIgLXN1YmogJy9DPURFL1NUPUJlcmxpbi9MPUJlcmxpbi9PPXJlc3RhdGUuZGV2L09VPWRlbW8vQ049cmVzdGF0ZS5leGFtcGxlLmNvbSdcIixcbiAgICAgICAgICAgIFwiIC1uZXdrZXkgcnNhOjIwNDggLWtleW91dCAvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5rZXkgLW91dCAvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5jcnRcIixcbiAgICAgICAgICBdLmpvaW4oXCJcIiksXG5cbiAgICAgICAgICBbXCJjYXQgPDwgRU9GID4gL2V0Yy9uZ2lueC9jb25mLmQvcmVzdGF0ZS1pbmdyZXNzLmNvbmZcIiwgdGhpcy5pbmdyZXNzTmdpbnhDb25maWcocHJvcHMpLCBcIkVPRlwiXS5qb2luKFwiXFxuXCIpLFxuICAgICAgICAgIFwic3lzdGVtY3RsIHN0YXJ0IG5naW54XCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY2xvdWRDb25maWcgPSBlYzIuVXNlckRhdGEuY3VzdG9tKFtgY2xvdWRfZmluYWxfbW9kdWxlczpgLCBgLSBbc2NyaXB0cy11c2VyLCBhbHdheXNdYF0uam9pbihcIlxcblwiKSk7XG5cbiAgICBjb25zdCB1c2VyRGF0YSA9IG5ldyBlYzIuTXVsdGlwYXJ0VXNlckRhdGEoKTtcbiAgICB1c2VyRGF0YS5hZGRVc2VyRGF0YVBhcnQoY2xvdWRDb25maWcsIFwidGV4dC9jbG91ZC1jb25maWdcIik7XG4gICAgdXNlckRhdGEuYWRkVXNlckRhdGFQYXJ0KGluaXRTY3JpcHQsIFwidGV4dC94LXNoZWxsc2NyaXB0XCIpO1xuXG4gICAgY29uc3QgcmVzdGF0ZUluc3RhbmNlID0gbmV3IGVjMi5JbnN0YW5jZSh0aGlzLCBcIkhvc3RcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIHZwY1N1Ym5ldHM6IHsgc3VibmV0VHlwZSB9LFxuICAgICAgaW5zdGFuY2VUeXBlOiBwcm9wcy5pbnN0YW5jZVR5cGUgPz8gbmV3IGVjMi5JbnN0YW5jZVR5cGUoXCJ0NGcubWljcm9cIiksXG4gICAgICBtYWNoaW5lSW1hZ2U6XG4gICAgICAgIHByb3BzLm1hY2hpbmVJbWFnZSA/P1xuICAgICAgICBlYzIuTWFjaGluZUltYWdlLmxhdGVzdEFtYXpvbkxpbnV4MjAyMyh7XG4gICAgICAgICAgY3B1VHlwZTogZWMyLkFtYXpvbkxpbnV4Q3B1VHlwZS5BUk1fNjQsXG4gICAgICAgIH0pLFxuICAgICAgcm9sZTogdGhpcy5pbnN0YW5jZVJvbGUsXG4gICAgICBibG9ja0RldmljZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGRldmljZU5hbWU6IERBVEFfREVWSUNFX05BTUUsXG4gICAgICAgICAgdm9sdW1lOiB7XG4gICAgICAgICAgICBlYnNEZXZpY2U6IHtcbiAgICAgICAgICAgICAgdm9sdW1lU2l6ZTogOCxcbiAgICAgICAgICAgICAgZGVsZXRlT25UZXJtaW5hdGlvbjogcHJvcHMucmVtb3ZhbFBvbGljeSA9PT0gUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgICAgICAgICAuLi4ocHJvcHMuZGF0YVZvbHVtZU9wdGlvbnMgPz8ge30pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZpcnR1YWxOYW1lOiBcInJlc3RhdGUtZGF0YVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdXNlckRhdGEsXG4gICAgfSk7XG5cbiAgICB0aGlzLmluc3RhbmNlID0gcmVzdGF0ZUluc3RhbmNlO1xuXG4gICAgLy8gV2Ugc3RhcnQgdGhlIEFET1QgY29sbGVjdG9yIHJlZ2FyZGxlc3MsIGFuZCBjb250cm9sIHdoZXRoZXIgdHJhY2VzIHdpbGwgYmUgZXhwb3J0ZWQgdG8gWC1SYXkgdXNpbmcgaW5zdGFuY2Ugcm9sZVxuICAgIC8vIHBlcm1pc3Npb25zLiBUaGlzIHdheSBoaXN0b3JpYyB0cmFjZXMgd2lsbCBiZSBidWZmZXJlZCBvbiB0aGUgaG9zdCwgZXZlbiBpZiB0cmFjaW5nIGlzIGRpc2FibGVkIGluaXRpYWxseS5cbiAgICBpZiAocHJvcHMudHJhY2luZyA9PT0gVHJhY2luZ01vZGUuQVdTX1hSQVkpIHtcbiAgICAgIHJlc3RhdGVJbnN0YW5jZS5yb2xlLmFkZE1hbmFnZWRQb2xpY3koaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFwiQVdTWHJheVdyaXRlT25seUFjY2Vzc1wiKSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5ncmVzc1NlY3VyaXR5R3JvdXAgPSBuZXcgZWMyLlNlY3VyaXR5R3JvdXAodGhpcywgXCJJbmdyZXNzU2VjdXJpdHlHcm91cFwiLCB7XG4gICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgZGVzY3JpcHRpb246IFwiUmVzdGF0ZSBJbmdyZXNzIEFDTHNcIixcbiAgICB9KTtcbiAgICByZXN0YXRlSW5zdGFuY2UuYWRkU2VjdXJpdHlHcm91cChpbmdyZXNzU2VjdXJpdHlHcm91cCk7XG4gICAgY29uc3QgYWRtaW5TZWN1cml0eUdyb3VwID0gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsIFwiQWRtaW5TZWN1cml0eUdyb3VwXCIsIHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICBkZXNjcmlwdGlvbjogXCJSZXN0YXRlIEFkbWluIEFDTHNcIixcbiAgICB9KTtcbiAgICByZXN0YXRlSW5zdGFuY2UuYWRkU2VjdXJpdHlHcm91cChhZG1pblNlY3VyaXR5R3JvdXApO1xuXG4gICAgdGhpcy5pbmdyZXNzUG9ydCA9IHRoaXMudGxzRW5hYmxlZCA/IFJFU1RBVEVfVExTX0lOR1JFU1NfUE9SVCA6IFJFU1RBVEVfSU5HUkVTU19QT1JUO1xuICAgIHRoaXMuYWRtaW5Qb3J0ID0gdGhpcy50bHNFbmFibGVkID8gUkVTVEFURV9UTFNfQURNSU5fUE9SVCA6IFJFU1RBVEVfQURNSU5fUE9SVDtcblxuICAgIGluZ3Jlc3NTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgKHByb3BzLnB1YmxpY0luZ3Jlc3MgPz8gZmFsc2UpID8gZWMyLlBlZXIuYW55SXB2NCgpIDogaW5ncmVzc1NlY3VyaXR5R3JvdXAsXG4gICAgICBlYzIuUG9ydC50Y3AodGhpcy5pbmdyZXNzUG9ydCksXG4gICAgICBcIlJlc3RhdGUgaW5ncmVzc1wiLFxuICAgICk7XG4gICAgYWRtaW5TZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKGFkbWluU2VjdXJpdHlHcm91cCwgZWMyLlBvcnQudGNwKHRoaXMuYWRtaW5Qb3J0KSwgXCJSZXN0YXRlIGFkbWluXCIpO1xuXG4gICAgY29uc3QgcHJvdG9jb2wgPSB0aGlzLnRsc0VuYWJsZWQgPyBcImh0dHBzXCIgOiBcImh0dHBcIjtcbiAgICBjb25zdCBob3N0bmFtZSA9XG4gICAgICBwcm9wcy5uZXR3b3JrQ29uZmlndXJhdGlvbj8uc3VibmV0VHlwZSAhPT0gZWMyLlN1Ym5ldFR5cGUuUFVCTElDXG4gICAgICAgID8gYCR7cmVzdGF0ZUluc3RhbmNlLmluc3RhbmNlUHJpdmF0ZURuc05hbWV9YFxuICAgICAgICA6IGAke3Jlc3RhdGVJbnN0YW5jZS5pbnN0YW5jZVB1YmxpY0Ruc05hbWV9YDtcbiAgICB0aGlzLmluZ3Jlc3NVcmwgPSBgJHtwcm90b2NvbH06Ly8ke2hvc3RuYW1lfWAgKyAodGhpcy5pbmdyZXNzUG9ydCA9PT0gNDQzID8gXCJcIiA6IGA6JHt0aGlzLmluZ3Jlc3NQb3J0fWApO1xuICAgIHRoaXMuYWRtaW5VcmwgPSBgJHtwcm90b2NvbH06Ly8ke2hvc3RuYW1lfToke3RoaXMuYWRtaW5Qb3J0fWA7XG5cbiAgICB0aGlzLmluZ3Jlc3NTZWN1cml0eUdyb3VwID0gaW5ncmVzc1NlY3VyaXR5R3JvdXA7XG4gICAgdGhpcy5hZG1pblNlY3VyaXR5R3JvdXAgPSBhZG1pblNlY3VyaXR5R3JvdXA7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzdGF0ZUNvbmZpZyhpZDogc3RyaW5nLCBwcm9wczogU2luZ2xlTm9kZVJlc3RhdGVQcm9wcykge1xuICAgIHJldHVybiAoXG4gICAgICBwcm9wcy5yZXN0YXRlQ29uZmlnT3ZlcnJpZGUgPz9cbiAgICAgIFtcbiAgICAgICAgYHJvbGVzID0gW2AsXG4gICAgICAgIGAgICAgXCJ3b3JrZXJcIixgLFxuICAgICAgICBgICAgIFwiYWRtaW5cIixgLFxuICAgICAgICBgICAgIFwibWV0YWRhdGEtc3RvcmVcIixgLFxuICAgICAgICBgXWAsXG4gICAgICAgIGBub2RlLW5hbWUgPSBcInJlc3RhdGUtMFwiYCxcbiAgICAgICAgYGNsdXN0ZXItbmFtZSA9IFwiJHtwcm9wcy5yZXN0YXRlQ29uZmlnPy5jbHVzdGVyTmFtZSA/PyBpZH1cImAsXG4gICAgICAgIGBhbGxvdy1ib290c3RyYXAgPSB0cnVlYCxcbiAgICAgICAgYGJvb3RzdHJhcC1udW0tcGFydGl0aW9ucyA9ICR7cHJvcHMucmVzdGF0ZUNvbmZpZz8uYm9vdHN0cmFwTnVtUGFydGl0aW9ucyA/PyA0fWAsXG4gICAgICAgIGBkZWZhdWx0LXRocmVhZC1wb29sLXNpemUgPSAzYCxcbiAgICAgICAgYHN0b3JhZ2UtaGlnaC1wcmlvcml0eS1iZy10aHJlYWRzID0gM2AsXG4gICAgICAgIGBzdG9yYWdlLWxvdy1wcmlvcml0eS1iZy10aHJlYWRzID0gM2AsXG4gICAgICAgIGByb2Nrc2RiLXRvdGFsLW1lbW9yeS1zaXplID0gXCIke3Byb3BzLnJlc3RhdGVDb25maWc/LnJvY2tzZGI/LnRvdGFsTWVtb3J5U2l6ZT8udG9NZWJpYnl0ZXMoKSA/PyA1MTIuMCArIFwiIE1CXCJ9XCJgLFxuICAgICAgICBgcm9ja3NkYi10b3RhbC1tZW10YWJsZXMtcmF0aW8gPSAwLjYwYCxcbiAgICAgICAgYHJvY2tzZGItYmctdGhyZWFkcyA9IDNgLFxuICAgICAgICBgcm9ja3NkYi1oaWdoLXByaW9yaXR5LWJnLXRocmVhZHMgPSAzYCxcbiAgICAgICAgYGAsXG4gICAgICAgIGBbd29ya2VyXWAsXG4gICAgICAgIGBpbnRlcm5hbC1xdWV1ZS1sZW5ndGggPSAxMDAwYCxcbiAgICAgICAgYGAsXG4gICAgICAgIGBbd29ya2VyLnN0b3JhZ2VdYCxcbiAgICAgICAgYHJvY2tzZGItbWF4LWJhY2tncm91bmQtam9icyA9IDNgLFxuICAgICAgICBgcm9ja3NkYi1zdGF0aXN0aWNzLWxldmVsID0gXCJleGNlcHQtZGV0YWlsZWQtdGltZXJzXCJgLFxuICAgICAgICBgbnVtLXBhcnRpdGlvbnMtdG8tc2hhcmUtbWVtb3J5LWJ1ZGdldCA9IDRgLFxuICAgICAgICBgYCxcbiAgICAgICAgYFthZG1pbl1gLFxuICAgICAgICBgYmluZC1hZGRyZXNzID0gXCIke3RoaXMudGxzRW5hYmxlZCA/IFwiMTI3LjAuMC4xXCIgOiBcIjAuMC4wLjBcIn06JHtSRVNUQVRFX0FETUlOX1BPUlR9XCJgLFxuICAgICAgICBgYCxcbiAgICAgICAgYFthZG1pbi5xdWVyeS1lbmdpbmVdYCxcbiAgICAgICAgYG1lbW9yeS1zaXplID0gXCI1MC4wIE1CXCJgLFxuICAgICAgICBgcXVlcnktcGFyYWxsZWxpc20gPSA0YCxcbiAgICAgICAgYGAsXG4gICAgICAgIGBbaW5ncmVzc11gLFxuICAgICAgICBgYmluZC1hZGRyZXNzID0gXCIke3RoaXMudGxzRW5hYmxlZCA/IFwiMTI3LjAuMC4xXCIgOiBcIjAuMC4wLjBcIn06JHtSRVNUQVRFX0lOR1JFU1NfUE9SVH1cImAsXG4gICAgICAgIGByb2Nrc2RiLW1heC1iYWNrZ3JvdW5kLWpvYnMgPSAzYCxcbiAgICAgICAgYHJvY2tzZGItc3RhdGlzdGljcy1sZXZlbCA9IFwiZXhjZXB0LWRldGFpbGVkLXRpbWVyc1wiYCxcbiAgICAgICAgYHdyaXRlci1iYXRjaC1jb21taXQtY291bnQgPSAxMDAwYCxcbiAgICAgICAgYGAsXG4gICAgICAgIGBbbWV0YWRhdGEtc3RvcmUucm9ja3NkYl1gLFxuICAgICAgICBgcm9ja3NkYi1tYXgtYmFja2dyb3VuZC1qb2JzID0gMWAsXG4gICAgICAgIGByb2Nrc2RiLXN0YXRpc3RpY3MtbGV2ZWwgPSBcImV4Y2VwdC1kZXRhaWxlZC10aW1lcnNcImAsXG4gICAgICBdLmpvaW4oXCJcXG5cIilcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1vdW50RGF0YVZvbHVtZVNjcmlwdCgpIHtcbiAgICByZXR1cm4gYFxuaWYgbW91bnQgfCBncmVwIC1xcyAnL3Zhci9yZXN0YXRlJzsgdGhlblxuICBlY2hvIFwiL3Zhci9yZXN0YXRlIGlzIG1vdW50ZWRcIlxuZWxzZVxuICBpZiBbIC1kIC92YXIvcmVzdGF0ZSBdOyB0aGVuXG4gICAgaWYgWyBcIiQobHMgLUEgL3Zhci9yZXN0YXRlKVwiIF07IHRoZW5cbiAgICAgIGVjaG8gXCJEYXRhIGV4aXN0cyBpbiAvdmFyL3Jlc3RhdGUgdGhhdCBpcyBub3Qgb24gZGF0YSB2b2x1bWU7IHJlZnVzaW5nIHRvIG92ZXJ3cml0ZSFcIlxuICAgICAgZXhpdCAxXG4gICAgZmlcbiAgZWxzZVxuICAgIG1rZGlyIC92YXIvcmVzdGF0ZVxuICBmaVxuICBpZiBmaWxlIC1zTCAke0RBVEFfREVWSUNFX05BTUV9IHwgZ3JlcCAtcSAnOiBkYXRhJCc7IHRoZW5cbiAgICBta2ZzIC10IHhmcyAke0RBVEFfREVWSUNFX05BTUV9XG4gIGZpXG4gIG1vdW50ICR7REFUQV9ERVZJQ0VfTkFNRX0gL3Zhci9yZXN0YXRlXG4gIGlmICEgZ3JlcCAtcXMgJy92YXIvcmVzdGF0ZScgL2V0Yy9mc3RhYjsgdGhlblxuICAgIGVjaG8gXCIke0RBVEFfREVWSUNFX05BTUV9IC92YXIvcmVzdGF0ZSB4ZnMgZGVmYXVsdHMgMCAwXCIgPj4gL2V0Yy9mc3RhYlxuICAgIGVjaG8gXCJBZGRlZCBlbnRyeSBmb3IgJHtEQVRBX0RFVklDRV9OQU1FfSB0byAvZXRjL2ZzdGFiXCJcbiAgZWxzZVxuICAgIGVjaG8gXCJFbnRyeSBmb3IgJHtEQVRBX0RFVklDRV9OQU1FfSBhbHJlYWR5IGV4aXN0cyBpbiAvZXRjL2ZzdGFiXCJcbiAgZmlcbmZpXG5gO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBwcm9wcyBjb25zdHJ1Y3QgcHJvcGVydGllc1xuICAgKiBAcmV0dXJucyBuZ2lueCBjb25maWd1cmF0aW9uIHRvIHVzZSBmb3IgaW5ncmVzcyByZXZlcnNlIHByb3h5LCBmb3JtYXR0ZWQgYXMgYSBtdWx0aS1saW5lIHN0cmluZ1xuICAgKi9cbiAgcHJvdGVjdGVkIGluZ3Jlc3NOZ2lueENvbmZpZyhwcm9wczogU2luZ2xlTm9kZVJlc3RhdGVQcm9wcykge1xuICAgIHJldHVybiAoXG4gICAgICBwcm9wcy5pbmdyZXNzTmdpbnhDb25maWdPdmVycmlkZSA/P1xuICAgICAgW1xuICAgICAgICBcInNlcnZlciB7XCIsXG4gICAgICAgIGAgIGxpc3RlbiAke1JFU1RBVEVfVExTX0lOR1JFU1NfUE9SVH0gc3NsIGh0dHAyO2AsXG4gICAgICAgIGAgIGxpc3RlbiBbOjpdOiR7UkVTVEFURV9UTFNfSU5HUkVTU19QT1JUfSBzc2wgaHR0cDI7YCxcbiAgICAgICAgXCIgIHNlcnZlcl9uYW1lIF87XCIsXG4gICAgICAgIFwiICByb290IC91c3Ivc2hhcmUvbmdpbngvaHRtbDtcIixcbiAgICAgICAgXCJcIixcbiAgICAgICAgJyAgc3NsX2NlcnRpZmljYXRlIFwiL2V0Yy9wa2kvcHJpdmF0ZS9yZXN0YXRlLXNlbGZzaWduZWQuY3J0XCI7JyxcbiAgICAgICAgJyAgc3NsX2NlcnRpZmljYXRlX2tleSBcIi9ldGMvcGtpL3ByaXZhdGUvcmVzdGF0ZS1zZWxmc2lnbmVkLmtleVwiOycsXG4gICAgICAgIFwiICBzc2xfc2Vzc2lvbl9jYWNoZSBzaGFyZWQ6U1NMOjFtO1wiLFxuICAgICAgICBcIiAgc3NsX3Nlc3Npb25fdGltZW91dCAxMG07XCIsXG4gICAgICAgIFwiICBzc2xfY2lwaGVycyBQUk9GSUxFPVNZU1RFTTtcIixcbiAgICAgICAgXCIgIHNzbF9wcmVmZXJfc2VydmVyX2NpcGhlcnMgb247XCIsXG4gICAgICAgIFwiXCIsXG4gICAgICAgIFwiICBsb2NhdGlvbiAvIHtcIixcbiAgICAgICAgYCAgICBwcm94eV9wYXNzIGh0dHA6Ly9sb2NhbGhvc3Q6JHtSRVNUQVRFX0lOR1JFU1NfUE9SVH07YCxcbiAgICAgICAgYCAgICBwcm94eV9yZWFkX3RpbWVvdXQgJHtwcm9wcy5pbmdyZXNzUHJveHlSZWFkVGltZW91dD8udG9TZWNvbmRzKCkgPz8gMzYwMH07YCxcbiAgICAgICAgXCIgIH1cIixcbiAgICAgICAgXCJ9XCIsXG4gICAgICAgIFwiXCIsXG4gICAgICAgIFwic2VydmVyIHtcIixcbiAgICAgICAgYCAgbGlzdGVuICR7UkVTVEFURV9UTFNfQURNSU5fUE9SVH0gc3NsIGh0dHAyO2AsXG4gICAgICAgIGAgIGxpc3RlbiBbOjpdOiR7UkVTVEFURV9UTFNfQURNSU5fUE9SVH0gc3NsIGh0dHAyO2AsXG4gICAgICAgIFwiICBzZXJ2ZXJfbmFtZSBfO1wiLFxuICAgICAgICBcIiAgcm9vdCAvdXNyL3NoYXJlL25naW54L2h0bWw7XCIsXG4gICAgICAgIFwiXCIsXG4gICAgICAgICcgIHNzbF9jZXJ0aWZpY2F0ZSBcIi9ldGMvcGtpL3ByaXZhdGUvcmVzdGF0ZS1zZWxmc2lnbmVkLmNydFwiOycsXG4gICAgICAgICcgIHNzbF9jZXJ0aWZpY2F0ZV9rZXkgXCIvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5rZXlcIjsnLFxuICAgICAgICBcIiAgc3NsX3Nlc3Npb25fY2FjaGUgc2hhcmVkOlNTTDoxbTtcIixcbiAgICAgICAgXCIgIHNzbF9zZXNzaW9uX3RpbWVvdXQgMTBtO1wiLFxuICAgICAgICBcIiAgc3NsX2NpcGhlcnMgUFJPRklMRT1TWVNURU07XCIsXG4gICAgICAgIFwiICBzc2xfcHJlZmVyX3NlcnZlcl9jaXBoZXJzIG9uO1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICBcIiAgbG9jYXRpb24gLyB7XCIsXG4gICAgICAgIGAgICAgcHJveHlfcGFzcyBodHRwOi8vbG9jYWxob3N0OiR7UkVTVEFURV9BRE1JTl9QT1JUfTtgLFxuICAgICAgICBcIiAgfVwiLFxuICAgICAgICBcIn1cIixcbiAgICAgIF0uam9pbihcIlxcblwiKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ module.exports = {
2
+ testEnvironment: "node",
3
+ transform: {
4
+ "^.+\\.tsx?$": "ts-jest",
5
+ },
6
+ };
@@ -0,0 +1,8 @@
1
+ const baseConfig = require("./jest.config.base");
2
+
3
+ module.exports = {
4
+ ...baseConfig,
5
+ roots: ["<rootDir>/test"],
6
+ testMatch: ["<rootDir>/test/e2e/**/*.e2e.ts"],
7
+ testTimeout: 600_000,
8
+ };
package/jest.config.js CHANGED
@@ -1,8 +1,9 @@
1
+ const baseConfig = require("./jest.config.base");
2
+
1
3
  module.exports = {
2
- testEnvironment: "node",
4
+ ...baseConfig,
3
5
  roots: ["<rootDir>/test"],
4
- testMatch: ["**/*.test.ts"],
5
- transform: {
6
- "^.+\\.tsx?$": "ts-jest",
7
- },
6
+ testMatch: ["<rootDir>/test/**/*.test.ts"],
7
+ // Exclude E2E tests
8
+ testPathIgnorePatterns: ["/node_modules/", "/test/e2e/"],
8
9
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@restatedev/restate-cdk",
3
3
  "description": "Restate.dev CDK constructs",
4
- "version": "1.1.0",
4
+ "version": "1.1.1",
5
5
  "author": "Restate Developers",
6
6
  "license": "MIT",
7
7
  "email": "code@restate.dev",
@@ -20,7 +20,8 @@
20
20
  "prebundle": "rm -rf dist",
21
21
  "postbundle": "cd dist && zip -r index.zip index.js*",
22
22
  "watch": "tsc -w",
23
- "test": "jest",
23
+ "test": "jest --config jest.config.js",
24
+ "test:e2e": "npx tsx test/handlers/build.mts && jest --config jest.config.e2e.js",
24
25
  "lint": "npx prettier --check .",
25
26
  "cdk": "cdk"
26
27
  },
@@ -30,14 +31,15 @@
30
31
  "@types/jest": "^29.5.14",
31
32
  "@types/node": "^22.9.0",
32
33
  "@types/source-map-support": "^0.5.10",
33
- "esbuild": "^0.24.0",
34
+ "esbuild": "^0.25.0",
34
35
  "jest": "^29.7.0",
35
36
  "jest-cdk-snapshot": "^2.2.5",
36
37
  "prettier": "^3.3.3",
37
38
  "source-map-support": "^0.5.21",
38
39
  "ts-jest": "^29.2.5",
39
40
  "tsx": "^4.19.2",
40
- "typescript": "^5.7.0"
41
+ "typescript": "^5.7.0",
42
+ "zx": "^8.3.2"
41
43
  },
42
44
  "peerDependencies": {
43
45
  "@aws-sdk/client-secrets-manager": "^3.637.0",
@@ -779,9 +779,9 @@ exports[`Restate constructs Create a self-hosted Restate environment deployed on
779
779
  docker run --name restate --restart on-failure --detach
780
780
  --volume /etc/restate:/etc/restate --volume
781
781
  /var/restate:/restate-data --network=host -e
782
- RESTATE_OBSERVABILITY__LOG__FORMAT=Json -e
783
- RUST_LOG=info,restate_worker::partition=warn -e
784
- RESTATE_OBSERVABILITY__TRACING__ENDPOINT=http://localhost:4317
782
+ RESTATE_OBSERVABILITY__LOG__FORMAT="Json" -e
783
+ RUST_LOG="info" -e
784
+ RESTATE_OBSERVABILITY__TRACING__ENDPOINT="http://localhost:4317"
785
785
  --log-driver=awslogs --log-opt awslogs-group=
786
786
  - Ref: RestateLogsFD86ECAE
787
787
  - ' docker.io/restatedev/restate:latest --config-file /etc/restate/config.toml'
@@ -1118,9 +1118,11 @@ exports[`Restate constructs Create a self-hosted Restate environment deployed on
1118
1118
  docker run --name restate --restart on-failure --detach
1119
1119
  --volume /etc/restate:/etc/restate --volume
1120
1120
  /var/restate:/restate-data --network=host -e
1121
- RESTATE_OBSERVABILITY__LOG__FORMAT=Json -e
1122
- RUST_LOG=info,restate_worker::partition=warn -e
1123
- RESTATE_OBSERVABILITY__TRACING__ENDPOINT=http://localhost:4317
1121
+ RESTATE_OBSERVABILITY__LOG__FORMAT="Json" -e
1122
+ RUST_LOG="info" -e
1123
+ RESTATE_OBSERVABILITY__TRACING__ENDPOINT="http://localhost:4317"
1124
+ -e
1125
+ RESTATE_INGRESS__ADVERTISED_INGRESS_ENDPOINT="http://restate-ingress"
1124
1126
  --log-driver=awslogs --log-opt awslogs-group=
1125
1127
  - Ref: RestateLogsFD86ECAE
1126
1128
  - ' docker.io/restatedev/restate:custom-version --config-file /etc/restate/config.toml'
@@ -1372,6 +1374,12 @@ exports[`Restate constructs Deploy a Lambda service handler to Restate Cloud env
1372
1374
  - ServiceDeployerEventHandler89EAD25F
1373
1375
  - Arn
1374
1376
  - ':*'
1377
+ - Action: 'lambda:GetFunction'
1378
+ Effect: Allow
1379
+ Resource:
1380
+ 'Fn::GetAtt':
1381
+ - ServiceDeployerEventHandler89EAD25F
1382
+ - Arn
1375
1383
  Version: '2012-10-17'
1376
1384
  PolicyName: >-
1377
1385
  ServiceDeployerCustomResourceProviderframeworkonEventServiceRoleDefaultPolicy740A65C9
@@ -1625,6 +1633,12 @@ exports[`Restate constructs Deploy a Lambda service handler to existing Restate
1625
1633
  - ServiceDeployerEventHandler89EAD25F
1626
1634
  - Arn
1627
1635
  - ':*'
1636
+ - Action: 'lambda:GetFunction'
1637
+ Effect: Allow
1638
+ Resource:
1639
+ 'Fn::GetAtt':
1640
+ - ServiceDeployerEventHandler89EAD25F
1641
+ - Arn
1628
1642
  Version: '2012-10-17'
1629
1643
  PolicyName: >-
1630
1644
  ServiceDeployerCustomResourceProviderframeworkonEventServiceRoleDefaultPolicy740A65C9
@@ -1714,9 +1728,9 @@ Mappings:
1714
1728
  ca-west-1:
1715
1729
  value: nodejs20.x
1716
1730
  cn-north-1:
1717
- value: nodejs18.x
1731
+ value: nodejs20.x
1718
1732
  cn-northwest-1:
1719
- value: nodejs18.x
1733
+ value: nodejs20.x
1720
1734
  eu-central-1:
1721
1735
  value: nodejs20.x
1722
1736
  eu-central-2:
@@ -1750,9 +1764,9 @@ Mappings:
1750
1764
  us-east-2:
1751
1765
  value: nodejs20.x
1752
1766
  us-gov-east-1:
1753
- value: nodejs18.x
1767
+ value: nodejs20.x
1754
1768
  us-gov-west-1:
1755
- value: nodejs18.x
1769
+ value: nodejs20.x
1756
1770
  us-iso-east-1:
1757
1771
  value: nodejs18.x
1758
1772
  us-iso-west-1:
@@ -1986,6 +2000,12 @@ exports[`Restate constructs Restate Cloud Environment construct with role refere
1986
2000
  - ServiceDeployerEventHandler89EAD25F
1987
2001
  - Arn
1988
2002
  - ':*'
2003
+ - Action: 'lambda:GetFunction'
2004
+ Effect: Allow
2005
+ Resource:
2006
+ 'Fn::GetAtt':
2007
+ - ServiceDeployerEventHandler89EAD25F
2008
+ - Arn
1989
2009
  Version: '2012-10-17'
1990
2010
  PolicyName: >-
1991
2011
  ServiceDeployerCustomResourceProviderframeworkonEventServiceRoleDefaultPolicy740A65C9
@@ -2066,7 +2086,7 @@ exports[`Restate constructs Service Deployer overrides 1`] = `
2066
2086
  - arm64
2067
2087
  Code:
2068
2088
  S3Bucket: cdk-hnb659fds-assets-account-id-region
2069
- S3Key: 7c53a580f65616cf4ae29ac9b381d44124f1f8566f9708c0d2226a75abf4355e.zip
2089
+ S3Key: 9b2f401811d992475d0f265d5bf5fdfd2f1fbbe762760b5674e60f80274bc089.zip
2070
2090
  Description: Restate custom registration handler
2071
2091
  Environment:
2072
2092
  Variables:
@@ -2125,6 +2145,12 @@ exports[`Restate constructs Service Deployer overrides 1`] = `
2125
2145
  - ServiceDeployerEventHandler89EAD25F
2126
2146
  - Arn
2127
2147
  - ':*'
2148
+ - Action: 'lambda:GetFunction'
2149
+ Effect: Allow
2150
+ Resource:
2151
+ 'Fn::GetAtt':
2152
+ - ServiceDeployerEventHandler89EAD25F
2153
+ - Arn
2128
2154
  Version: '2012-10-17'
2129
2155
  PolicyName: >-
2130
2156
  ServiceDeployerCustomResourceProviderframeworkonEventServiceRoleDefaultPolicy740A65C9
@@ -0,0 +1,11 @@
1
+ ## Restate CDK e2e tests
2
+
3
+ The CDK stacks in this directory serve a dual purpose of providing usage examples, and validation targets during development.
4
+
5
+ Some of these are wrapped in e2e tests you can run with:
6
+
7
+ ```shell
8
+ npm run test:e2e
9
+ ```
10
+
11
+ To run the automated e2e tests, you'll generally need valid AWS or Restate Cloud credentials. To speed things up you can set `RETAIN_STACK=true`.
@@ -0,0 +1,19 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 - Restate Software, Inc., Restate GmbH
3
+ *
4
+ * This file is part of the Restate CDK Construct Library,
5
+ * which is released under the MIT license.
6
+ *
7
+ * You can find a copy of the license in file LICENSE in the root
8
+ * directory of this repository or package, or at
9
+ * https://github.com/restatedev/sdk-typescript/blob/main/LICENSE
10
+ */
11
+
12
+ import { $, cd } from "zx";
13
+ import * as path from "path";
14
+ import { fileURLToPath } from "url";
15
+
16
+ $.verbose = true;
17
+
18
+ cd(path.dirname(fileURLToPath(import.meta.url)));
19
+ await $`npx esbuild --bundle --platform=node handler.js --outfile=dist/bundle.js`;
@@ -1,7 +1,7 @@
1
1
  /*
2
- * Copyright (c) 2024 - Restate Software, Inc., Restate GmbH
2
+ * Copyright (c) 2023-2025 - Restate Software, Inc., Restate GmbH
3
3
  *
4
- * This file is part of the Restate SDK for Node.js/TypeScript,
4
+ * This file is part of the Restate CDK Construct Library,
5
5
  * which is released under the MIT license.
6
6
  *
7
7
  * You can find a copy of the license in file LICENSE in the root
@@ -1,12 +0,0 @@
1
- set -euf -o pipefail
2
-
3
- # need to run in dev so it can access the dev.restate.cloud hosted zone
4
- npx cdk --app 'npx tsx single-node-ec2-alb.e2e.ts' \
5
- --profile restate-cloud-dev-admin \
6
- deploy \
7
- --output cdk.ec2-alb.out \
8
- --context vpc_id=vpc-058ff0dc027b2df5a \
9
- --context domainName=dev.restate.cloud \
10
- --context hostname=single-node-ec2 #\
11
- # --require-approval never \
12
- # --no-rollback
@@ -1,8 +0,0 @@
1
- set -euf -o pipefail
2
-
3
- npx cdk --app 'npx tsx single-node-ec2.e2e.ts' \
4
- --profile restate-eng \
5
- deploy \
6
- --require-approval never
7
- # --no-rollback
8
- # --context vpc_id=vpc-0d2e373fed47934f3 \ # VPC in mgmt account 663487780041 with egress gw
@@ -1,11 +0,0 @@
1
- set -euf -o pipefail
2
-
3
- export AWS_PROFILE=restate-eng RESTATE_ENV_ID=env_201j8ncr31esdhxzkk8jzkkgffw RESTATE_API_KEY=key_10urPk2V8gxnLKo84E7RYum.EfiNa3UiVoXKXmRbGBTPhifFv6uMeRch68rKotZRLwLM
4
- export RESTATE_ENV_URL=https://$(echo $RESTATE_ENV_ID | cut -f2 -d_).env.us.restate.cloud/Greeter/greet
5
-
6
- npx cdk --app 'npx tsx restate-cloud.e2e.ts' synth
7
- npx cdk --app 'npx tsx restate-cloud.e2e.ts' deploy --require-approval never --no-rollback
8
-
9
- curl $RESTATE_ENV_URL -H "Authorization: Bearer $RESTATE_API_KEY" --json '"e2e-test"'
10
-
11
- npx cdk --app 'npx tsx restate-cloud.e2e.ts' destroy --force
@@ -1,11 +0,0 @@
1
- set -euf -o pipefail
2
-
3
- # need to run in dev so it can access the dev.restate.cloud hosted zone
4
- npx cdk --app 'npx tsx single-node-ec2-alb.e2e.ts' \
5
- --profile restate-cloud-dev-admin \
6
- destroy \
7
- --output cdk.ec2-alb.out \
8
- --context vpc_id=vpc-058ff0dc027b2df5a \
9
- --context domainName=dev.restate.cloud \
10
- --context hostname=single-node-ec2 \
11
- --force