@restatedev/restate-cdk 0.8.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,11 +9,11 @@ jobs:
9
9
  contents: read
10
10
  packages: write
11
11
  steps:
12
- - uses: actions/checkout@v3
12
+ - uses: actions/checkout@v4
13
13
  # Setup .npmrc file to publish to NPM
14
- - uses: actions/setup-node@v3
14
+ - uses: actions/setup-node@v4
15
15
  with:
16
- node-version: "16.x"
16
+ node-version: "20.x"
17
17
  registry-url: 'https://registry.npmjs.org'
18
18
  - run: npm ci
19
19
  - run: npm run build
@@ -3,8 +3,6 @@ name: Build and test
3
3
  on:
4
4
  push:
5
5
  branches: [ main ]
6
- pull_request:
7
- branches: [ main ]
8
6
 
9
7
  jobs:
10
8
  build:
@@ -13,12 +11,12 @@ jobs:
13
11
  runs-on: ubuntu-latest
14
12
  strategy:
15
13
  matrix:
16
- node-version: [ 19.x ]
14
+ node-version: [ 20.x ]
17
15
 
18
16
  steps:
19
- - uses: actions/checkout@v3
17
+ - uses: actions/checkout@v4
20
18
  - name: Use Node.js ${{ matrix.node-version }}
21
- uses: actions/setup-node@v3
19
+ uses: actions/setup-node@v4
22
20
  with:
23
21
  node-version: ${{ matrix.node-version }}
24
22
  registry-url: 'https://registry.npmjs.org'
package/README.md CHANGED
@@ -10,23 +10,27 @@ AWS. This library helps you when deploying Restate services to AWS Lambda as wel
10
10
  deployments on your own infrastructure. For more information on CDK, please
11
11
  see [Getting started with the AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html).
12
12
 
13
+ ## Installation
14
+
15
+ Inside an existing CDK project, add the library from [npm](https://www.npmjs.com/package/@restatedev/restate-cdk):
16
+
17
+ ```shell
18
+ npm i @restatedev/restate-cdk
19
+ ```
20
+
13
21
  ## Available constructs
14
22
 
15
- - [`LambdaServiceRegistry`](./lib/restate-constructs/lambda-service-registry.ts) - A collection of Lambda-deployed
16
- Restate services, this construct automatically registers the latest function version as a new deployment revision in a
17
- Restate instance
18
23
  - [`SingleNodeRestateDeployment`](./lib/restate-constructs/single-node-restate-deployment.ts) - Deploys a self-hosted
19
- Restate instance on EC2; note this is a single-node deployment targeted at development and testing
20
- - [`RestateCloudEnvironment`](./lib/restate-constructs/restate-cloud-environment.ts) - A Restate Cloud instance
24
+ Restate server running on Amazon EC2; this provides a basic single-node deployment targeted at development and testing
25
+ - [`ServiceDeployer`](./lib/restate-constructs/service-deployer.ts) - facilitates registration of Lambda-based service
26
+ handlers with a Restate environment, such as a self-hosted EC2 environment
21
27
 
22
28
  For a more detailed overview, please see
23
- the [Restate CDK documentation](https://docs.restate.dev/services/deployment/cdk).
29
+ the [Restate CDK documentation](https://docs.restate.dev/deploy/lambda/cdk).
24
30
 
25
31
  ### Examples
26
32
 
27
- You can use the following examples as references for your own CDK projects:
33
+ You can use the following templates to bootstrap your own CDK projects:
28
34
 
29
- - [hello-world-lambda-cdk](https://github.com/restatedev/examples/tree/main/kotlin/hello-world-lambda-cdk) - Kotlin
30
- service deployed to AWS Lambda
31
- - [Restate Holiday](https://github.com/restatedev/restate-holiday) - a more complex example of a fictional reservation
32
- service demonstrating the Saga orchestration pattern
35
+ - [typescript-lambda-cdk](https://github.com/restatedev/examples/tree/main/templates/typescript-lambda-cdk)
36
+ - [kotlin-gradle-lambda-cdk](https://github.com/restatedev/examples/tree/main/templates/kotlin-gradle-lambda-cdk)
@@ -14,6 +14,6 @@ export interface RegistrationProperties {
14
14
  }
15
15
  /**
16
16
  * Custom Resource event handler for Restate service registration. This handler backs the custom resources created by
17
- * {@link LambdaServiceRegistry} to facilitate Lambda service handler discovery.
17
+ * {@link ServiceDeployer} to facilitate Lambda service handler discovery.
18
18
  */
19
19
  export declare const handler: Handler<CloudFormationCustomResourceEvent, void>;
@@ -40,7 +40,8 @@ exports.handler = void 0;
40
40
  const node_fetch_1 = __importDefault(require("node-fetch"));
41
41
  const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
42
42
  const crypto_1 = require("crypto");
43
- const https = __importStar(require("https"));
43
+ const https = __importStar(require("node:https"));
44
+ const http = __importStar(require("node:http"));
44
45
  const MAX_HEALTH_CHECK_ATTEMPTS = 5; // This is intentionally quite long to allow some time for first-run EC2 and Docker boot up
45
46
  const MAX_REGISTRATION_ATTEMPTS = 3;
46
47
  // const INSECURE = true;
@@ -49,10 +50,26 @@ const SERVICES_PATH = "services";
49
50
  const DEPLOYMENTS_PATH_LEGACY = "endpoints"; // temporarily fall back for legacy clusters
50
51
  /**
51
52
  * Custom Resource event handler for Restate service registration. This handler backs the custom resources created by
52
- * {@link LambdaServiceRegistry} to facilitate Lambda service handler discovery.
53
+ * {@link ServiceDeployer} to facilitate Lambda service handler discovery.
53
54
  */
54
55
  const handler = async function (event) {
55
56
  console.log({ event });
57
+ const props = event.ResourceProperties;
58
+ const httpAgent = new http.Agent({
59
+ keepAlive: true,
60
+ });
61
+ const httpsAgent = new https.Agent({
62
+ keepAlive: true,
63
+ rejectUnauthorized: props.insecure !== "true",
64
+ });
65
+ const agentSelector = (url) => {
66
+ if (url.protocol == "http:") {
67
+ return httpAgent;
68
+ }
69
+ else {
70
+ return httpsAgent;
71
+ }
72
+ };
56
73
  if (event.RequestType === "Delete") {
57
74
  // Since we retain older Lambda handler versions on update, we also leave the registered service alone. There may
58
75
  // be unfinished invocations that require it; in the future we would want to inform Restate that we want to
@@ -67,7 +84,7 @@ const handler = async function (event) {
67
84
  // const deleteResponse = await fetch(`${props.adminUrl}/${DEPLOYMENTS_PATH}/${id}?force=true`, {
68
85
  // signal: controller.signal,
69
86
  // method: "DELETE",
70
- // agent: INSECURE ? new https.Agent({ rejectUnauthorized: false }) : undefined,
87
+ // agent: agentSelector,
71
88
  // }).finally(() => clearTimeout(deleteCallTimeout));
72
89
  //
73
90
  // console.log(`Got delete response back: ${deleteResponse.status}`);
@@ -78,13 +95,13 @@ const handler = async function (event) {
78
95
  console.warn("De-registering services is not supported currently. Previous version will remain registered.");
79
96
  return;
80
97
  }
81
- const props = event.ResourceProperties;
82
98
  const authHeader = await createAuthHeader(props);
83
99
  let attempt;
84
100
  const healthCheckUrl = `${props.adminUrl}/health`;
85
- console.log(`Performing health check against: ${healthCheckUrl}`);
86
101
  attempt = 1;
102
+ console.log(`Performing health check against: ${healthCheckUrl}`);
87
103
  while (true) {
104
+ console.log(`Making health check request #${attempt}...`);
88
105
  const controller = new AbortController();
89
106
  const healthCheckTimeout = setTimeout(() => controller.abort("timeout"), 5000);
90
107
  let healthResponse = undefined;
@@ -93,7 +110,7 @@ const handler = async function (event) {
93
110
  healthResponse = await (0, node_fetch_1.default)(healthCheckUrl, {
94
111
  signal: controller.signal,
95
112
  headers: authHeader,
96
- agent: props.insecure ? new https.Agent({ rejectUnauthorized: false }) : undefined,
113
+ agent: agentSelector,
97
114
  }).finally(() => clearTimeout(healthCheckTimeout));
98
115
  console.log(`Got health check response back: ${healthResponse.status}`);
99
116
  if (healthResponse.status >= 200 && healthResponse.status < 300) {
@@ -120,11 +137,11 @@ const handler = async function (event) {
120
137
  assume_role_arn: props.invokeRoleArn,
121
138
  });
122
139
  let failureReason;
123
- console.log(`Triggering registration at ${deploymentsUrl}: ${registrationRequest}`);
124
140
  attempt = 1;
141
+ console.log(`Triggering registration at ${deploymentsUrl}: ${registrationRequest}`);
125
142
  while (true) {
126
143
  try {
127
- console.log(`Making request #${attempt}...`);
144
+ console.log(`Making registration request #${attempt}...`);
128
145
  const controller = new AbortController();
129
146
  const registerCallTimeout = setTimeout(() => controller.abort("timeout"), 10000);
130
147
  const registerDeploymentResponse = await (0, node_fetch_1.default)(deploymentsUrl, {
@@ -135,7 +152,7 @@ const handler = async function (event) {
135
152
  "Content-Type": "application/json",
136
153
  ...authHeader,
137
154
  },
138
- agent: props.insecure ? new https.Agent({ rejectUnauthorized: false }) : undefined,
155
+ agent: agentSelector,
139
156
  }).finally(() => clearTimeout(registerCallTimeout));
140
157
  if (registerDeploymentResponse.status == 404 && attempt == 1) {
141
158
  deploymentsUrl = `${props.adminUrl}/${DEPLOYMENTS_PATH_LEGACY}`;
@@ -144,17 +161,18 @@ const handler = async function (event) {
144
161
  if (registerDeploymentResponse.status >= 200 && registerDeploymentResponse.status < 300) {
145
162
  const response = (await registerDeploymentResponse.json());
146
163
  // TODO: there may be more than one! support optional exact/partial matching
147
- if (response?.services?.[0]?.name !== props.servicePath) {
164
+ if (!response?.services?.find((s) => s.name === props.servicePath)) {
148
165
  failureReason =
149
166
  "Restate service registration failed: service name indicated by service response" +
150
167
  ` ("${response?.services?.[0]?.name})) does not match the expected value ("${props.servicePath}")!`;
151
- break; // don't throw immediately - let retry loop decide whether to abort
168
+ attempt = MAX_REGISTRATION_ATTEMPTS; // don't retry this
169
+ break;
152
170
  }
153
171
  console.log("Successful registration!");
154
172
  const isPublic = (props.private ?? "false") === "false";
155
173
  console.log(`Marking service ${props.servicePath} as ${isPublic ? "public" : "private"}...`);
156
174
  const controller = new AbortController();
157
- const privateCallTimeout = setTimeout(() => controller.abort("timeout"), 5000);
175
+ const privateCallTimeout = setTimeout(() => controller.abort("timeout"), 10000);
158
176
  const patchResponse = await (0, node_fetch_1.default)(`${props.adminUrl}/${SERVICES_PATH}/${props.servicePath}`, {
159
177
  signal: controller.signal,
160
178
  method: "PATCH",
@@ -163,7 +181,7 @@ const handler = async function (event) {
163
181
  ...authHeader,
164
182
  },
165
183
  body: JSON.stringify({ public: isPublic }),
166
- agent: props.insecure ? new https.Agent({ rejectUnauthorized: false }) : undefined,
184
+ agent: agentSelector,
167
185
  }).finally(() => clearTimeout(privateCallTimeout));
168
186
  console.log(`Got patch response back: ${patchResponse.status}`);
169
187
  if (patchResponse.status != 200) {
@@ -215,4 +233,4 @@ async function createAuthHeader(props) {
215
233
  async function sleep(millis) {
216
234
  return new Promise((resolve) => setTimeout(resolve, millis));
217
235
  }
218
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcmVzdGF0ZS1jb25zdHJ1Y3RzL3JlZ2lzdGVyLXNlcnZpY2UtaGFuZGxlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlILDREQUErQjtBQUUvQiw0RUFBOEY7QUFDOUYsbUNBQW1DO0FBQ25DLDZDQUErQjtBQXNCL0IsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQUMsQ0FBQywyRkFBMkY7QUFDaEksTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQUM7QUFFcEMseUJBQXlCO0FBRXpCLE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDO0FBQ3ZDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQztBQUNqQyxNQUFNLHVCQUF1QixHQUFHLFdBQVcsQ0FBQyxDQUFDLDRDQUE0QztBQUV6Rjs7O0dBR0c7QUFDSSxNQUFNLE9BQU8sR0FBcUQsS0FBSyxXQUFXLEtBQUs7SUFDNUYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFFdkIsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ25DLGlIQUFpSDtRQUNqSCwyR0FBMkc7UUFDM0csK0dBQStHO1FBQy9HLHVCQUF1QjtRQUV2QixvRUFBb0U7UUFDcEUsMkRBQTJEO1FBQzNELHFFQUFxRTtRQUNyRSw4Q0FBOEM7UUFDOUMsbUdBQW1HO1FBQ25HLG9GQUFvRjtRQUNwRixtR0FBbUc7UUFDbkcsaUNBQWlDO1FBQ2pDLHdCQUF3QjtRQUN4QixvRkFBb0Y7UUFDcEYsdURBQXVEO1FBQ3ZELEVBQUU7UUFDRix1RUFBdUU7UUFDdkUsd0NBQXdDO1FBQ3hDLHNIQUFzSDtRQUN0SCxNQUFNO1FBQ04sSUFBSTtRQUVKLE9BQU8sQ0FBQyxJQUFJLENBQUMsOEZBQThGLENBQUMsQ0FBQztR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QUFJLENBQzdCLElBQUksOENBQXFCLENBQUM7UUFDeEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxrQkFBa0I7S0FDbkMsQ0FBQyxDQUNILENBQUM7SUFFRixPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxRQUFRLENBQUMsSUFBSSxhQUFhLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzlGLE9BQU87UUFDTCxhQUFhLEVBQUUsVUFBVSxRQUFRLENBQUMsWUFBWSxFQUFFO0tBQ2pELENBQUM7QUFDSixDQUFDO0FBRUQsS0FBSyxVQUFVLEtBQUssQ0FBQyxNQUFjO0lBQ2pDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMyAtIFJlc3RhdGUgU29mdHdhcmUsIEluYy4sIFJlc3RhdGUgR21iSFxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBSZXN0YXRlIFNESyBmb3IgTm9kZS5qcy9UeXBlU2NyaXB0LFxuICogd2hpY2ggaXMgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuICpcbiAqIFlvdSBjYW4gZmluZCBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgaW4gZmlsZSBMSUNFTlNFIGluIHRoZSByb290XG4gKiBkaXJlY3Rvcnkgb2YgdGhpcyByZXBvc2l0b3J5IG9yIHBhY2thZ2UsIG9yIGF0XG4gKiBodHRwczovL2dpdGh1Yi5jb20vcmVzdGF0ZWRldi9zZGstdHlwZXNjcmlwdC9ibG9iL21haW4vTElDRU5TRVxuICovXG5cbmltcG9ydCB7IEhhbmRsZXIgfSBmcm9tIFwiYXdzLWxhbWJkYS9oYW5kbGVyXCI7XG5pbXBvcnQgeyBDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnQgfSBmcm9tIFwiYXdzLWxhbWJkYS90cmlnZ2VyL2Nsb3VkZm9ybWF0aW9uLWN1c3RvbS1yZXNvdXJjZVwiO1xuaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCI7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBHZXRTZWNyZXRWYWx1ZUNvbW1hbmQsIFNlY3JldHNNYW5hZ2VyQ2xpZW50IH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zZWNyZXRzLW1hbmFnZXJcIjtcbmltcG9ydCB7IHJhbmRvbUludCB9IGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCAqIGFzIGh0dHBzIGZyb20gXCJodHRwc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdHJhdGlvblByb3BlcnRpZXMge1xuICBzZXJ2aWNlUGF0aD86IHN0cmluZztcbiAgYWRtaW5Vcmw/OiBzdHJpbmc7XG4gIHNlcnZpY2VMYW1iZGFBcm4/OiBzdHJpbmc7XG4gIGludm9rZVJvbGVBcm4/OiBzdHJpbmc7XG4gIHJlbW92YWxQb2xpY3k/OiBjZGsuUmVtb3ZhbFBvbGljeTtcbiAgYXV0aFRva2VuU2VjcmV0QXJuPzogc3RyaW5nO1xuICAvKiBOb3QgdXNlZCBieSB0aGUgaGFuZGxlciwgcHVyZWx5IHVzZWQgdG8gdHJpY2sgQ2xvdWRGb3JtYXRpb24gdG8gcGVyZm9ybSBhbiB1cGRhdGUgd2hlbiBpdCBvdGhlcndpc2Ugd291bGQgbm90LiAqL1xuICBjb25maWd1cmF0aW9uVmVyc2lvbj86IHN0cmluZztcbiAgLyogV2hldGhlciB0byBtYXJrIHRoZSBzZXJ2aWNlIGFzIHByaXZhdGUsIGFuZCBtYWtlIGl0IHVuYXZhaWxhYmxlIHRvIGJlIGNhbGxlZCB2aWEgUmVzdGF0ZSBpbmdyZXNzLiAqL1xuICBwcml2YXRlPzogXCJ0cnVlXCIgfCBcImZhbHNlXCI7XG4gIC8qIFdoZXRoZXIgdG8gdHJ1c3QgYW55IGNlcnRpZmljYXRlIGZyb20gdGhlIGFkbWluIGVuZHBvaW50LiAqL1xuICBpbnNlY3VyZT86IFwidHJ1ZVwiIHwgXCJmYWxzZVwiO1xufVxuXG50eXBlIFJlZ2lzdGVyRGVwbG95bWVudFJlc3BvbnNlID0ge1xuICBpZD86IHN0cmluZztcbiAgc2VydmljZXM/OiB7IG5hbWU/OiBzdHJpbmc7IHJldmlzaW9uPzogbnVtYmVyIH1bXTtcbn07XG5cbmNvbnN0IE1BWF9IRUFMVEhfQ0hFQ0tfQVRURU1QVFMgPSA1OyAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgcXVpdGUgbG9uZyB0byBhbGxvdyBzb21lIHRpbWUgZm9yIGZpcnN0LXJ1biBFQzIgYW5kIERvY2tlciBib290IHVwXG5jb25zdCBNQVhfUkVHSVNUUkFUSU9OX0FUVEVNUFRTID0gMztcblxuLy8gY29uc3QgSU5TRUNVUkUgPSB0cnVlO1xuXG5jb25zdCBERVBMT1lNRU5UU19QQVRIID0gXCJkZXBsb3ltZW50c1wiO1xuY29uc3QgU0VSVklDRVNfUEFUSCA9IFwic2VydmljZXNcIjtcbmNvbnN0IERFUExPWU1FTlRTX1BBVEhfTEVHQUNZID0gXCJlbmRwb2ludHNcIjsgLy8gdGVtcG9yYXJpbHkgZmFsbCBiYWNrIGZvciBsZWdhY3kgY2x1c3RlcnNcblxuLyoqXG4gKiBDdXN0b20gUmVzb3VyY2UgZXZlbnQgaGFuZGxlciBmb3IgUmVzdGF0ZSBzZXJ2aWNlIHJlZ2lzdHJhdGlvbi4gVGhpcyBoYW5kbGVyIGJhY2tzIHRoZSBjdXN0b20gcmVzb3VyY2VzIGNyZWF0ZWQgYnlcbiAqIHtAbGluayBMYW1iZGFTZXJ2aWNlUmVnaXN0cnl9IHRvIGZhY2lsaXRhdGUgTGFtYmRhIHNlcnZpY2UgaGFuZGxlciBkaXNjb3ZlcnkuXG4gKi9cbmV4cG9ydCBjb25zdCBoYW5kbGVyOiBIYW5kbGVyPENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudCwgdm9pZD4gPSBhc3luYyBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgY29uc29sZS5sb2coeyBldmVudCB9KTtcblxuICBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgPT09IFwiRGVsZXRlXCIpIHtcbiAgICAvLyBTaW5jZSB3ZSByZXRhaW4gb2xkZXIgTGFtYmRhIGhhbmRsZXIgdmVyc2lvbnMgb24gdXBkYXRlLCB3ZSBhbHNvIGxlYXZlIHRoZSByZWdpc3RlcmVkIHNlcnZpY2UgYWxvbmUuIFRoZXJlIG1heVxuICAgIC8vIGJlIHVuZmluaXNoZWQgaW52b2NhdGlvbnMgdGhhdCByZXF1aXJlIGl0OyBpbiB0aGUgZnV0dXJlIHdlIHdvdWxkIHdhbnQgdG8gaW5mb3JtIFJlc3RhdGUgdGhhdCB3ZSB3YW50IHRvXG4gICAgLy8gZGUtcmVnaXN0ZXIgdGhlIHNlcnZpY2UsIGFuZCB3YWl0IGZvciBSZXN0YXRlIHRvIGxldCB1cyBrbm93IHRoYXQgaXQgaXMgc2FmZSB0byBkZWxldGUgdGhlIGRlcGxveWVkIEZ1bmN0aW9uXG4gICAgLy8gdmVyc2lvbiBmcm9tIExhbWJkYS5cblxuICAgIC8vIGNvbnN0IHByb3BzID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzIGFzIFJlZ2lzdHJhdGlvblByb3BlcnRpZXM7XG4gICAgLy8gaWYgKHByb3BzLnJlbW92YWxQb2xpY3kgPT09IGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1kpIHtcbiAgICAvLyAgIGNvbnNvbGUubG9nKGBEZS1yZWdpc3RlcmluZyBzZXJ2aWNlICR7cHJvcHMuc2VydmljZUxhbWJkYUFybn1gKTtcbiAgICAvLyAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgLy8gICBjb25zdCBpZCA9IGJ0b2EocHJvcHMuc2VydmljZUxhbWJkYUFybiEpOyAvLyBUT0RPOiB3ZSBzaG91bGQgYmUgdHJlYXRpbmcgc2VydmljZSBpZHMgYXMgb3BhcXVlXG4gICAgLy8gICBjb25zdCBkZWxldGVDYWxsVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxlci5hYm9ydChcInRpbWVvdXRcIiksIDVfMDAwKTtcbiAgICAvLyAgIGNvbnN0IGRlbGV0ZVJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7cHJvcHMuYWRtaW5Vcmx9LyR7REVQTE9ZTUVOVFNfUEFUSH0vJHtpZH0/Zm9yY2U9dHJ1ZWAsIHtcbiAgICAvLyAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAvLyAgICAgbWV0aG9kOiBcIkRFTEVURVwiLFxuICAgIC8vICAgICBhZ2VudDogSU5TRUNVUkUgPyBuZXcgaHR0cHMuQWdlbnQoeyByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlIH0pIDogdW5kZWZpbmVkLFxuICAgIC8vICAgfSkuZmluYWxseSgoKSA9PiBjbGVhclRpbWVvdXQoZGVsZXRlQ2FsbFRpbWVvdXQpKTtcbiAgICAvL1xuICAgIC8vICAgY29uc29sZS5sb2coYEdvdCBkZWxldGUgcmVzcG9uc2UgYmFjazogJHtkZWxldGVSZXNwb25zZS5zdGF0dXN9YCk7XG4gICAgLy8gICBpZiAoZGVsZXRlUmVzcG9uc2Uuc3RhdHVzICE9IDIwMikge1xuICAgIC8vICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlbW92aW5nIHNlcnZpY2UgZGVwbG95bWVudCBmYWlsZWQ6ICR7ZGVsZXRlUmVzcG9uc2Uuc3RhdHVzVGV4dH0gKCR7ZGVsZXRlUmVzcG9uc2Uuc3RhdHVzfSlgKTtcbiAgICAvLyAgIH1cbiAgICAvLyB9XG5cbiAgICBjb25zb2xlLndhcm4oXCJEZS1yZWdpc3RlcmluZyBzZXJ2aWNlcyBpcyBub3Qgc3VwcG9ydGVkIGN1cnJlbnRseS4gUHJldmlvdXMgdmVyc2lvbiB3aWxsIHJlbWFpbiByZWdpc3RlcmVkLlwiKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwcm9wcyA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcyBhcyBSZWdpc3RyYXRpb25Qcm9wZXJ0aWVzO1xuICBjb25zdCBhdXRoSGVhZGVyID0gYXdhaXQgY3JlYXRlQXV0aEhlYWRlcihwcm9wcyk7XG5cbiAgbGV0IGF0dGVtcHQ7XG5cbiAgY29uc3QgaGVhbHRoQ2hlY2tVcmwgPSBgJHtwcm9wcy5hZG1pblVybH0vaGVhbHRoYDtcblxuICBjb25zb2xlLmxvZyhgUGVyZm9ybWluZyBoZWFsdGggY2hlY2sgYWdhaW5zdDogJHtoZWFsdGhDaGVja1VybH1gKTtcbiAgYXR0ZW1wdCA9IDE7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICBjb25zdCBoZWFsdGhDaGVja1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoXCJ0aW1lb3V0XCIpLCA1XzAwMCk7XG4gICAgbGV0IGhlYWx0aFJlc3BvbnNlID0gdW5kZWZpbmVkO1xuICAgIGxldCBlcnJvck1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgIGhlYWx0aFJlc3BvbnNlID0gYXdhaXQgZmV0Y2goaGVhbHRoQ2hlY2tVcmwsIHtcbiAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgaGVhZGVyczogYXV0aEhlYWRlcixcbiAgICAgICAgYWdlbnQ6IHByb3BzLmluc2VjdXJlID8gbmV3IGh0dHBzLkFnZW50KHsgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZSB9KSA6IHVuZGVmaW5lZCxcbiAgICAgIH0pLmZpbmFsbHkoKCkgPT4gY2xlYXJUaW1lb3V0KGhlYWx0aENoZWNrVGltZW91dCkpO1xuXG4gICAgICBjb25zb2xlLmxvZyhgR290IGhlYWx0aCBjaGVjayByZXNwb25zZSBiYWNrOiAke2hlYWx0aFJlc3BvbnNlLnN0YXR1c31gKTtcbiAgICAgIGlmIChoZWFsdGhSZXNwb25zZS5zdGF0dXMgPj0gMjAwICYmIGhlYWx0aFJlc3BvbnNlLnN0YXR1cyA8IDMwMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBSZXN0YXRlIGhlYWx0aCBjaGVjayBmYWlsZWQ6ICR7aGVhbHRoUmVzcG9uc2Uuc3RhdHVzVGV4dH0gKCR7aGVhbHRoUmVzcG9uc2Uuc3RhdHVzfTsgYXR0ZW1wdCAke2F0dGVtcHR9KWAsXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGVycm9yTWVzc2FnZSA9IChlIGFzIEVycm9yKT8ubWVzc2FnZTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFJlc3RhdGUgaGVhbHRoIGNoZWNrIGZhaWxlZDogXCIke2Vycm9yTWVzc2FnZX1cIiAoYXR0ZW1wdCAke2F0dGVtcHR9KWApO1xuICAgIH1cblxuICAgIGlmIChhdHRlbXB0ID49IE1BWF9IRUFMVEhfQ0hFQ0tfQVRURU1QVFMpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEFkbWluIHNlcnZpY2UgaGVhbHRoIGNoZWNrIGZhaWxpbmcgYWZ0ZXIgJHthdHRlbXB0fSBhdHRlbXB0cy5gKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UgPz8gYCR7aGVhbHRoUmVzcG9uc2U/LnN0YXR1c1RleHR9ICgke2hlYWx0aFJlc3BvbnNlPy5zdGF0dXN9KWApO1xuICAgIH1cbiAgICBhdHRlbXB0ICs9IDE7XG5cbiAgICBjb25zdCB3YWl0VGltZU1pbGxpcyA9IHJhbmRvbUludCgyXzAwMCkgKyAyICoqIGF0dGVtcHQgKiAxXzAwMDsgLy8gM3MgLT4gNnMgLT4gMTBzIC0+IDE4cyAtPiAzNHNcbiAgICBjb25zb2xlLmxvZyhgUmV0cnlpbmcgYWZ0ZXIgJHt3YWl0VGltZU1pbGxpc30gbXMuLi5gKTtcbiAgICBhd2FpdCBzbGVlcCh3YWl0VGltZU1pbGxpcyk7XG4gIH1cblxuICBsZXQgZGVwbG95bWVudHNVcmwgPSBgJHtwcm9wcy5hZG1pblVybH0vJHtERVBMT1lNRU5UU19QQVRIfWA7XG4gIGNvbnN0IHJlZ2lzdHJhdGlvblJlcXVlc3QgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgYXJuOiBwcm9wcy5zZXJ2aWNlTGFtYmRhQXJuLFxuICAgIGFzc3VtZV9yb2xlX2FybjogcHJvcHMuaW52b2tlUm9sZUFybixcbiAgfSk7XG5cbiAgbGV0IGZhaWx1cmVSZWFzb247XG4gIGNvbnNvbGUubG9nKGBUcmlnZ2VyaW5nIHJlZ2lzdHJhdGlvbiBhdCAke2RlcGxveW1lbnRzVXJsfTogJHtyZWdpc3RyYXRpb25SZXF1ZXN0fWApO1xuICBhdHRlbXB0ID0gMTtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICB0cnkge1xuICAgICAgY29uc29sZS5sb2coYE1ha2luZyByZXF1ZXN0ICMke2F0dGVtcHR9Li4uYCk7XG4gICAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgY29uc3QgcmVnaXN0ZXJDYWxsVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxlci5hYm9ydChcInRpbWVvdXRcIiksIDEwXzAwMCk7XG4gICAgICBjb25zdCByZWdpc3RlckRlcGxveW1lbnRSZXNwb25zZSA9IGF3YWl0IGZldGNoKGRlcGxveW1lbnRzVXJsLCB7XG4gICAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgIGJvZHk6IHJlZ2lzdHJhdGlvblJlcXVlc3QsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAuLi5hdXRoSGVhZGVyLFxuICAgICAgICB9LFxuICAgICAgICBhZ2VudDogcHJvcHMuaW5zZWN1cmUgPyBuZXcgaHR0cHMuQWdlbnQoeyByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlIH0pIDogdW5kZWZpbmVkLFxuICAgICAgfSkuZmluYWxseSgoKSA9PiBjbGVhclRpbWVvdXQocmVnaXN0ZXJDYWxsVGltZW91dCkpO1xuXG4gICAgICBpZiAocmVnaXN0ZXJEZXBsb3ltZW50UmVzcG9uc2Uuc3RhdHVzID09IDQwNCAmJiBhdHRlbXB0ID09IDEpIHtcbiAgICAgICAgZGVwbG95bWVudHNVcmwgPSBgJHtwcm9wcy5hZG1pblVybH0vJHtERVBMT1lNRU5UU19QQVRIX0xFR0FDWX1gO1xuICAgICAgICBjb25zb2xlLmxvZyhgR290IDQwNCwgZmFsbGluZyBiYWNrIHRvIDwwLjcuMCBsZWdhY3kgZW5kcG9pbnQgcmVnaXN0cmF0aW9uIGF0OiAke2RlcGxveW1lbnRzVXJsfWApO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVnaXN0ZXJEZXBsb3ltZW50UmVzcG9uc2Uuc3RhdHVzID49IDIwMCAmJiByZWdpc3RlckRlcGxveW1lbnRSZXNwb25zZS5zdGF0dXMgPCAzMDApIHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSAoYXdhaXQgcmVnaXN0ZXJEZXBsb3ltZW50UmVzcG9uc2UuanNvbigpKSBhcyBSZWdpc3RlckRlcGxveW1lbnRSZXNwb25zZTtcblxuICAgICAgICAvLyBUT0RPOiB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSEgc3VwcG9ydCBvcHRpb25hbCBleGFjdC9wYXJ0aWFsIG1hdGNoaW5nXG4gICAgICAgIGlmIChyZXNwb25zZT8uc2VydmljZXM/LlswXT8ubmFtZSAhPT0gcHJvcHMuc2VydmljZVBhdGgpIHtcbiAgICAgICAgICBmYWlsdXJlUmVhc29uID1cbiAgICAgICAgICAgIFwiUmVzdGF0ZSBzZXJ2aWNlIHJlZ2lzdHJhdGlvbiBmYWlsZWQ6IHNlcnZpY2UgbmFtZSBpbmRpY2F0ZWQgYnkgc2VydmljZSByZXNwb25zZVwiICtcbiAgICAgICAgICAgIGAgKFwiJHtyZXNwb25zZT8uc2VydmljZXM/LlswXT8ubmFtZX0pKSBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgdmFsdWUgKFwiJHtwcm9wcy5zZXJ2aWNlUGF0aH1cIikhYDtcbiAgICAgICAgICBicmVhazsgLy8gZG9uJ3QgdGhyb3cgaW1tZWRpYXRlbHkgLSBsZXQgcmV0cnkgbG9vcCBkZWNpZGUgd2hldGhlciB0byBhYm9ydFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzZnVsIHJlZ2lzdHJhdGlvbiFcIik7XG5cbiAgICAgICAgY29uc3QgaXNQdWJsaWMgPSAocHJvcHMucHJpdmF0ZSA/PyBcImZhbHNlXCIpID09PSBcImZhbHNlXCI7XG4gICAgICAgIGNvbnNvbGUubG9nKGBNYXJraW5nIHNlcnZpY2UgJHtwcm9wcy5zZXJ2aWNlUGF0aH0gYXMgJHtpc1B1YmxpYyA/IFwicHVibGljXCIgOiBcInByaXZhdGVcIn0uLi5gKTtcbiAgICAgICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgICAgY29uc3QgcHJpdmF0ZUNhbGxUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiBjb250cm9sbGVyLmFib3J0KFwidGltZW91dFwiKSwgNV8wMDApO1xuICAgICAgICBjb25zdCBwYXRjaFJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7cHJvcHMuYWRtaW5Vcmx9LyR7U0VSVklDRVNfUEFUSH0vJHtwcm9wcy5zZXJ2aWNlUGF0aH1gLCB7XG4gICAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgICBtZXRob2Q6IFwiUEFUQ0hcIixcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgIC4uLmF1dGhIZWFkZXIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHB1YmxpYzogaXNQdWJsaWMgfSksXG4gICAgICAgICAgYWdlbnQ6IHByb3BzLmluc2VjdXJlID8gbmV3IGh0dHBzLkFnZW50KHsgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZSB9KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSkuZmluYWxseSgoKSA9PiBjbGVhclRpbWVvdXQocHJpdmF0ZUNhbGxUaW1lb3V0KSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coYEdvdCBwYXRjaCByZXNwb25zZSBiYWNrOiAke3BhdGNoUmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgICAgICBpZiAocGF0Y2hSZXNwb25zZS5zdGF0dXMgIT0gMjAwKSB7XG4gICAgICAgICAgZmFpbHVyZVJlYXNvbiA9IGBNYXJraW5nIHNlcnZpY2UgYXMgJHtwcm9wcy5wcml2YXRlID8gXCJwcml2YXRlXCIgOiBcInB1YmxpY1wifSBmYWlsZWQ6ICR7cGF0Y2hSZXNwb25zZS5zdGF0dXNUZXh0fSAoJHtwYXRjaFJlc3BvbnNlLnN0YXR1c30pYDtcbiAgICAgICAgICBicmVhazsgLy8gZG9uJ3QgdGhyb3cgaW1tZWRpYXRlbHkgLSBsZXQgcmV0cnkgbG9vcCBkZWNpZGUgd2hldGhlciB0byBhYm9ydCBzXG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhgU3VjY2Vzc2Z1bGx5IG1hcmtlZCBzZXJ2aWNlIGFzICR7aXNQdWJsaWMgPyBcInB1YmxpY1wiIDogXCJwcml2YXRlXCJ9LmApO1xuXG4gICAgICAgIHJldHVybjsgLy8gT3ZlcmFsbCBzdWNjZXNzIVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coe1xuICAgICAgICAgIG1lc3NhZ2U6IGBHb3QgZXJyb3IgcmVzcG9uc2UgZnJvbSBSZXN0YXRlLmAsXG4gICAgICAgICAgY29kZTogcmVnaXN0ZXJEZXBsb3ltZW50UmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgICAgIGJvZHk6IGF3YWl0IHJlZ2lzdGVyRGVwbG95bWVudFJlc3BvbnNlLnRleHQoKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihgU2VydmljZSByZWdpc3RyYXRpb24gY2FsbCBmYWlsZWQ6ICR7KGUgYXMgRXJyb3IpPy5tZXNzYWdlfSAoYXR0ZW1wdCAke2F0dGVtcHR9KWApO1xuICAgICAgZmFpbHVyZVJlYXNvbiA9IGBSZXN0YXRlIHNlcnZpY2UgcmVnaXN0cmF0aW9uIGZhaWxlZDogJHsoZSBhcyBFcnJvcik/Lm1lc3NhZ2V9YDtcbiAgICB9XG5cbiAgICBpZiAoYXR0ZW1wdCA+PSBNQVhfUkVHSVNUUkFUSU9OX0FUVEVNUFRTKSB7XG4gICAgICBmYWlsdXJlUmVhc29uID0gYFNlcnZpY2UgcmVnaXN0cmF0aW9uIGZhaWxlZCBhZnRlciAke2F0dGVtcHR9IGF0dGVtcHRzLmA7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgYXR0ZW1wdCArPSAxO1xuICAgIGNvbnN0IHdhaXRUaW1lTWlsbGlzID0gcmFuZG9tSW50KDJfMDAwKSArIDIgKiogYXR0ZW1wdCAqIDFfMDAwOyAvLyAzcyAtPiA2cyAtPiAxMHNcbiAgICBjb25zb2xlLmxvZyhgUmV0cnlpbmcgcmVnaXN0cmF0aW9uIGFmdGVyICR7d2FpdFRpbWVNaWxsaXN9IG1zLi4uYCk7XG4gICAgYXdhaXQgc2xlZXAod2FpdFRpbWVNaWxsaXMpO1xuICB9XG5cbiAgY29uc29sZS5lcnJvcihmYWlsdXJlUmVhc29uKTtcbiAgdGhyb3cgbmV3IEVycm9yKGZhaWx1cmVSZWFzb24gPz8gXCJSZXN0YXRlIHNlcnZpY2UgcmVnaXN0cmF0aW9uIGZhaWxlZC4gUGxlYXNlIHNlZSBsb2dzIGZvciBkZXRhaWxzLlwiKTtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUF1dGhIZWFkZXIocHJvcHM6IFJlZ2lzdHJhdGlvblByb3BlcnRpZXMpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgaWYgKCFwcm9wcy5hdXRoVG9rZW5TZWNyZXRBcm4pIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zb2xlLmxvZyhgVXNpbmcgYmVhcmVyIGF1dGhlbnRpY2F0aW9uIHRva2VuIGZyb20gc2VjcmV0ICR7cHJvcHMuYXV0aFRva2VuU2VjcmV0QXJufWApO1xuICBjb25zdCBzc20gPSBuZXcgU2VjcmV0c01hbmFnZXJDbGllbnQoKTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzc20uc2VuZChcbiAgICBuZXcgR2V0U2VjcmV0VmFsdWVDb21tYW5kKHtcbiAgICAgIFNlY3JldElkOiBwcm9wcy5hdXRoVG9rZW5TZWNyZXRBcm4sXG4gICAgfSksXG4gICk7XG5cbiAgY29uc29sZS5sb2coYFN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgc2VjcmV0IFwiJHtyZXNwb25zZS5OYW1lfVwiIHZlcnNpb24gJHtyZXNwb25zZS5WZXJzaW9uSWR9YCk7XG4gIHJldHVybiB7XG4gICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Jlc3BvbnNlLlNlY3JldFN0cmluZ31gLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBzbGVlcChtaWxsaXM6IG51bWJlcikge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbWlsbGlzKSk7XG59XG4iXX0=
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcmVzdGF0ZS1jb25zdHJ1Y3RzL3JlZ2lzdGVyLXNlcnZpY2UtaGFuZGxlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlILDREQUErQjtBQUUvQiw0RUFBOEY7QUFDOUYsbUNBQW1DO0FBQ25DLGtEQUFvQztBQUNwQyxnREFBa0M7QUFzQmxDLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsMkZBQTJGO0FBQ2hJLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxDQUFDO0FBRXBDLHlCQUF5QjtBQUV6QixNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQztBQUN2QyxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUM7QUFDakMsTUFBTSx1QkFBdUIsR0FBRyxXQUFXLENBQUMsQ0FBQyw0Q0FBNEM7QUFFekY7OztHQUdHO0FBQ0ksTUFBTSxPQUFPLEdBQXFELEtBQUssV0FBVyxLQUFLO0lBQzVGLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRXZCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxrQkFBNEMsQ0FBQztJQUVqRSxNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDL0IsU0FBUyxFQUFFLElBQUk7S0FDaEIsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxVQUFVLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2pDLFNBQVMsRUFBRSxJQUFJO1FBQ2Ysa0JBQWtCLEVBQUUsS0FBSyxDQUFDLFFBQVEsS0FBSyxNQUFNO0tBQzlDLENBQUMsQ0FBQztJQUNILE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBUSxFQUFFLEVBQUU7UUFDakMsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzVC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LEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzlCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsaURBQWlELEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDekYsTUFBTSxHQUFHLEdBQUcsSUFBSSw2Q0FBb0IsRUFBRSxDQUFDO0lBQ3ZDLE1BQU0sUUFBUSxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FDN0IsSUFBSSw4Q0FBcUIsQ0FBQztRQUN4QixRQUFRLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtLQUNuQyxDQUFDLENBQ0gsQ0FBQztJQUVGLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLFFBQVEsQ0FBQyxJQUFJLGFBQWEsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDOUYsT0FBTztRQUNMLGFBQWEsRUFBRSxVQUFVLFFBQVEsQ0FBQyxZQUFZLEVBQUU7S0FDakQsQ0FBQztBQUNKLENBQUM7QUFFRCxLQUFLLFVBQVUsS0FBSyxDQUFDLE1BQWM7SUFDakMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQy9ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIzIC0gUmVzdGF0ZSBTb2Z0d2FyZSwgSW5jLiwgUmVzdGF0ZSBHbWJIXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFJlc3RhdGUgU0RLIGZvciBOb2RlLmpzL1R5cGVTY3JpcHQsXG4gKiB3aGljaCBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKlxuICogWW91IGNhbiBmaW5kIGEgY29weSBvZiB0aGUgbGljZW5zZSBpbiBmaWxlIExJQ0VOU0UgaW4gdGhlIHJvb3RcbiAqIGRpcmVjdG9yeSBvZiB0aGlzIHJlcG9zaXRvcnkgb3IgcGFja2FnZSwgb3IgYXRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXN0YXRlZGV2L3Nkay10eXBlc2NyaXB0L2Jsb2IvbWFpbi9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgSGFuZGxlciB9IGZyb20gXCJhd3MtbGFtYmRhL2hhbmRsZXJcIjtcbmltcG9ydCB7IENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudCB9IGZyb20gXCJhd3MtbGFtYmRhL3RyaWdnZXIvY2xvdWRmb3JtYXRpb24tY3VzdG9tLXJlc291cmNlXCI7XG5pbXBvcnQgZmV0Y2ggZnJvbSBcIm5vZGUtZmV0Y2hcIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IEdldFNlY3JldFZhbHVlQ29tbWFuZCwgU2VjcmV0c01hbmFnZXJDbGllbnQgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXNlY3JldHMtbWFuYWdlclwiO1xuaW1wb3J0IHsgcmFuZG9tSW50IH0gZnJvbSBcImNyeXB0b1wiO1xuaW1wb3J0ICogYXMgaHR0cHMgZnJvbSBcIm5vZGU6aHR0cHNcIjtcbmltcG9ydCAqIGFzIGh0dHAgZnJvbSBcIm5vZGU6aHR0cFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdHJhdGlvblByb3BlcnRpZXMge1xuICBzZXJ2aWNlUGF0aD86IHN0cmluZztcbiAgYWRtaW5Vcmw/OiBzdHJpbmc7XG4gIHNlcnZpY2VMYW1iZGFBcm4/OiBzdHJpbmc7XG4gIGludm9rZVJvbGVBcm4/OiBzdHJpbmc7XG4gIHJlbW92YWxQb2xpY3k/OiBjZGsuUmVtb3ZhbFBvbGljeTtcbiAgYXV0aFRva2VuU2VjcmV0QXJuPzogc3RyaW5nO1xuICAvKiBOb3QgdXNlZCBieSB0aGUgaGFuZGxlciwgcHVyZWx5IHVzZWQgdG8gdHJpY2sgQ2xvdWRGb3JtYXRpb24gdG8gcGVyZm9ybSBhbiB1cGRhdGUgd2hlbiBpdCBvdGhlcndpc2Ugd291bGQgbm90LiAqL1xuICBjb25maWd1cmF0aW9uVmVyc2lvbj86IHN0cmluZztcbiAgLyogV2hldGhlciB0byBtYXJrIHRoZSBzZXJ2aWNlIGFzIHByaXZhdGUsIGFuZCBtYWtlIGl0IHVuYXZhaWxhYmxlIHRvIGJlIGNhbGxlZCB2aWEgUmVzdGF0ZSBpbmdyZXNzLiAqL1xuICBwcml2YXRlPzogXCJ0cnVlXCIgfCBcImZhbHNlXCI7XG4gIC8qIFdoZXRoZXIgdG8gdHJ1c3QgYW55IGNlcnRpZmljYXRlIGZyb20gdGhlIGFkbWluIGVuZHBvaW50LiAqL1xuICBpbnNlY3VyZT86IFwidHJ1ZVwiIHwgXCJmYWxzZVwiO1xufVxuXG50eXBlIFJlZ2lzdGVyRGVwbG95bWVudFJlc3BvbnNlID0ge1xuICBpZD86IHN0cmluZztcbiAgc2VydmljZXM/OiB7IG5hbWU/OiBzdHJpbmc7IHJldmlzaW9uPzogbnVtYmVyIH1bXTtcbn07XG5cbmNvbnN0IE1BWF9IRUFMVEhfQ0hFQ0tfQVRURU1QVFMgPSA1OyAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgcXVpdGUgbG9uZyB0byBhbGxvdyBzb21lIHRpbWUgZm9yIGZpcnN0LXJ1biBFQzIgYW5kIERvY2tlciBib290IHVwXG5jb25zdCBNQVhfUkVHSVNUUkFUSU9OX0FUVEVNUFRTID0gMztcblxuLy8gY29uc3QgSU5TRUNVUkUgPSB0cnVlO1xuXG5jb25zdCBERVBMT1lNRU5UU19QQVRIID0gXCJkZXBsb3ltZW50c1wiO1xuY29uc3QgU0VSVklDRVNfUEFUSCA9IFwic2VydmljZXNcIjtcbmNvbnN0IERFUExPWU1FTlRTX1BBVEhfTEVHQUNZID0gXCJlbmRwb2ludHNcIjsgLy8gdGVtcG9yYXJpbHkgZmFsbCBiYWNrIGZvciBsZWdhY3kgY2x1c3RlcnNcblxuLyoqXG4gKiBDdXN0b20gUmVzb3VyY2UgZXZlbnQgaGFuZGxlciBmb3IgUmVzdGF0ZSBzZXJ2aWNlIHJlZ2lzdHJhdGlvbi4gVGhpcyBoYW5kbGVyIGJhY2tzIHRoZSBjdXN0b20gcmVzb3VyY2VzIGNyZWF0ZWQgYnlcbiAqIHtAbGluayBTZXJ2aWNlRGVwbG95ZXJ9IHRvIGZhY2lsaXRhdGUgTGFtYmRhIHNlcnZpY2UgaGFuZGxlciBkaXNjb3ZlcnkuXG4gKi9cbmV4cG9ydCBjb25zdCBoYW5kbGVyOiBIYW5kbGVyPENsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudCwgdm9pZD4gPSBhc3luYyBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgY29uc29sZS5sb2coeyBldmVudCB9KTtcblxuICBjb25zdCBwcm9wcyA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcyBhcyBSZWdpc3RyYXRpb25Qcm9wZXJ0aWVzO1xuXG4gIGNvbnN0IGh0dHBBZ2VudCA9IG5ldyBodHRwLkFnZW50KHtcbiAgICBrZWVwQWxpdmU6IHRydWUsXG4gIH0pO1xuICBjb25zdCBodHRwc0FnZW50ID0gbmV3IGh0dHBzLkFnZW50KHtcbiAgICBrZWVwQWxpdmU6IHRydWUsXG4gICAgcmVqZWN0VW5hdXRob3JpemVkOiBwcm9wcy5pbnNlY3VyZSAhPT0gXCJ0cnVlXCIsXG4gIH0pO1xuICBjb25zdCBhZ2VudFNlbGVjdG9yID0gKHVybDogVVJMKSA9PiB7XG4gICAgaWYgKHVybC5wcm90b2NvbCA9PSBcImh0dHA6XCIpIHtcbiAgICAgIHJldHVybiBodHRwQWdlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBodHRwc0FnZW50O1xuICAgIH1cbiAgfTtcblxuICBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgPT09IFwiRGVsZXRlXCIpIHtcbiAgICAvLyBTaW5jZSB3ZSByZXRhaW4gb2xkZXIgTGFtYmRhIGhhbmRsZXIgdmVyc2lvbnMgb24gdXBkYXRlLCB3ZSBhbHNvIGxlYXZlIHRoZSByZWdpc3RlcmVkIHNlcnZpY2UgYWxvbmUuIFRoZXJlIG1heVxuICAgIC8vIGJlIHVuZmluaXNoZWQgaW52b2NhdGlvbnMgdGhhdCByZXF1aXJlIGl0OyBpbiB0aGUgZnV0dXJlIHdlIHdvdWxkIHdhbnQgdG8gaW5mb3JtIFJlc3RhdGUgdGhhdCB3ZSB3YW50IHRvXG4gICAgLy8gZGUtcmVnaXN0ZXIgdGhlIHNlcnZpY2UsIGFuZCB3YWl0IGZvciBSZXN0YXRlIHRvIGxldCB1cyBrbm93IHRoYXQgaXQgaXMgc2FmZSB0byBkZWxldGUgdGhlIGRlcGxveWVkIEZ1bmN0aW9uXG4gICAgLy8gdmVyc2lvbiBmcm9tIExhbWJkYS5cblxuICAgIC8vIGNvbnN0IHByb3BzID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzIGFzIFJlZ2lzdHJhdGlvblByb3BlcnRpZXM7XG4gICAgLy8gaWYgKHByb3BzLnJlbW92YWxQb2xpY3kgPT09IGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1kpIHtcbiAgICAvLyAgIGNvbnNvbGUubG9nKGBEZS1yZWdpc3RlcmluZyBzZXJ2aWNlICR7cHJvcHMuc2VydmljZUxhbWJkYUFybn1gKTtcbiAgICAvLyAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgLy8gICBjb25zdCBpZCA9IGJ0b2EocHJvcHMuc2VydmljZUxhbWJkYUFybiEpOyAvLyBUT0RPOiB3ZSBzaG91bGQgYmUgdHJlYXRpbmcgc2VydmljZSBpZHMgYXMgb3BhcXVlXG4gICAgLy8gICBjb25zdCBkZWxldGVDYWxsVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxlci5hYm9ydChcInRpbWVvdXRcIiksIDVfMDAwKTtcbiAgICAvLyAgIGNvbnN0IGRlbGV0ZVJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7cHJvcHMuYWRtaW5Vcmx9LyR7REVQTE9ZTUVOVFNfUEFUSH0vJHtpZH0/Zm9yY2U9dHJ1ZWAsIHtcbiAgICAvLyAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAvLyAgICAgbWV0aG9kOiBcIkRFTEVURVwiLFxuICAgIC8vICAgICBhZ2VudDogYWdlbnRTZWxlY3RvcixcbiAgICAvLyAgIH0pLmZpbmFsbHkoKCkgPT4gY2xlYXJUaW1lb3V0KGRlbGV0ZUNhbGxUaW1lb3V0KSk7XG4gICAgLy9cbiAgICAvLyAgIGNvbnNvbGUubG9nKGBHb3QgZGVsZXRlIHJlc3BvbnNlIGJhY2s6ICR7ZGVsZXRlUmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgIC8vICAgaWYgKGRlbGV0ZVJlc3BvbnNlLnN0YXR1cyAhPSAyMDIpIHtcbiAgICAvLyAgICAgdGhyb3cgbmV3IEVycm9yKGBSZW1vdmluZyBzZXJ2aWNlIGRlcGxveW1lbnQgZmFpbGVkOiAke2RlbGV0ZVJlc3BvbnNlLnN0YXR1c1RleHR9ICgke2RlbGV0ZVJlc3BvbnNlLnN0YXR1c30pYCk7XG4gICAgLy8gICB9XG4gICAgLy8gfVxuXG4gICAgY29uc29sZS53YXJuKFwiRGUtcmVnaXN0ZXJpbmcgc2VydmljZXMgaXMgbm90IHN1cHBvcnRlZCBjdXJyZW50bHkuIFByZXZpb3VzIHZlcnNpb24gd2lsbCByZW1haW4gcmVnaXN0ZXJlZC5cIik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYXV0aEhlYWRlciA9IGF3YWl0IGNyZWF0ZUF1dGhIZWFkZXIocHJvcHMpO1xuXG4gIGxldCBhdHRlbXB0O1xuXG4gIGNvbnN0IGhlYWx0aENoZWNrVXJsID0gYCR7cHJvcHMuYWRtaW5Vcmx9L2hlYWx0aGA7XG5cbiAgYXR0ZW1wdCA9IDE7XG4gIGNvbnNvbGUubG9nKGBQZXJmb3JtaW5nIGhlYWx0aCBjaGVjayBhZ2FpbnN0OiAke2hlYWx0aENoZWNrVXJsfWApO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnNvbGUubG9nKGBNYWtpbmcgaGVhbHRoIGNoZWNrIHJlcXVlc3QgIyR7YXR0ZW1wdH0uLi5gKTtcbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGNvbnN0IGhlYWx0aENoZWNrVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxlci5hYm9ydChcInRpbWVvdXRcIiksIDVfMDAwKTtcbiAgICBsZXQgaGVhbHRoUmVzcG9uc2UgPSB1bmRlZmluZWQ7XG4gICAgbGV0IGVycm9yTWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgaGVhbHRoUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChoZWFsdGhDaGVja1VybCwge1xuICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBoZWFkZXJzOiBhdXRoSGVhZGVyLFxuICAgICAgICBhZ2VudDogYWdlbnRTZWxlY3RvcixcbiAgICAgIH0pLmZpbmFsbHkoKCkgPT4gY2xlYXJUaW1lb3V0KGhlYWx0aENoZWNrVGltZW91dCkpO1xuXG4gICAgICBjb25zb2xlLmxvZyhgR290IGhlYWx0aCBjaGVjayByZXNwb25zZSBiYWNrOiAke2hlYWx0aFJlc3BvbnNlLnN0YXR1c31gKTtcbiAgICAgIGlmIChoZWFsdGhSZXNwb25zZS5zdGF0dXMgPj0gMjAwICYmIGhlYWx0aFJlc3BvbnNlLnN0YXR1cyA8IDMwMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBSZXN0YXRlIGhlYWx0aCBjaGVjayBmYWlsZWQ6ICR7aGVhbHRoUmVzcG9uc2Uuc3RhdHVzVGV4dH0gKCR7aGVhbHRoUmVzcG9uc2Uuc3RhdHVzfTsgYXR0ZW1wdCAke2F0dGVtcHR9KWAsXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGVycm9yTWVzc2FnZSA9IChlIGFzIEVycm9yKT8ubWVzc2FnZTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFJlc3RhdGUgaGVhbHRoIGNoZWNrIGZhaWxlZDogXCIke2Vycm9yTWVzc2FnZX1cIiAoYXR0ZW1wdCAke2F0dGVtcHR9KWApO1xuICAgIH1cblxuICAgIGlmIChhdHRlbXB0ID49IE1BWF9IRUFMVEhfQ0hFQ0tfQVRURU1QVFMpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEFkbWluIHNlcnZpY2UgaGVhbHRoIGNoZWNrIGZhaWxpbmcgYWZ0ZXIgJHthdHRlbXB0fSBhdHRlbXB0cy5gKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UgPz8gYCR7aGVhbHRoUmVzcG9uc2U/LnN0YXR1c1RleHR9ICgke2hlYWx0aFJlc3BvbnNlPy5zdGF0dXN9KWApO1xuICAgIH1cbiAgICBhdHRlbXB0ICs9IDE7XG5cbiAgICBjb25zdCB3YWl0VGltZU1pbGxpcyA9IHJhbmRvbUludCgyXzAwMCkgKyAyICoqIGF0dGVtcHQgKiAxXzAwMDsgLy8gM3MgLT4gNnMgLT4gMTBzIC0+IDE4cyAtPiAzNHNcbiAgICBjb25zb2xlLmxvZyhgUmV0cnlpbmcgYWZ0ZXIgJHt3YWl0VGltZU1pbGxpc30gbXMuLi5gKTtcbiAgICBhd2FpdCBzbGVlcCh3YWl0VGltZU1pbGxpcyk7XG4gIH1cblxuICBsZXQgZGVwbG95bWVudHNVcmwgPSBgJHtwcm9wcy5hZG1pblVybH0vJHtERVBMT1lNRU5UU19QQVRIfWA7XG4gIGNvbnN0IHJlZ2lzdHJhdGlvblJlcXVlc3QgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgYXJuOiBwcm9wcy5zZXJ2aWNlTGFtYmRhQXJuLFxuICAgIGFzc3VtZV9yb2xlX2FybjogcHJvcHMuaW52b2tlUm9sZUFybixcbiAgfSk7XG5cbiAgbGV0IGZhaWx1cmVSZWFzb247XG4gIGF0dGVtcHQgPSAxO1xuICBjb25zb2xlLmxvZyhgVHJpZ2dlcmluZyByZWdpc3RyYXRpb24gYXQgJHtkZXBsb3ltZW50c1VybH06ICR7cmVnaXN0cmF0aW9uUmVxdWVzdH1gKTtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICB0cnkge1xuICAgICAgY29uc29sZS5sb2coYE1ha2luZyByZWdpc3RyYXRpb24gcmVxdWVzdCAjJHthdHRlbXB0fS4uLmApO1xuICAgICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgIGNvbnN0IHJlZ2lzdGVyQ2FsbFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoXCJ0aW1lb3V0XCIpLCAxMF8wMDApO1xuICAgICAgY29uc3QgcmVnaXN0ZXJEZXBsb3ltZW50UmVzcG9uc2UgPSBhd2FpdCBmZXRjaChkZXBsb3ltZW50c1VybCwge1xuICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBib2R5OiByZWdpc3RyYXRpb25SZXF1ZXN0LFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgLi4uYXV0aEhlYWRlcixcbiAgICAgICAgfSxcbiAgICAgICAgYWdlbnQ6IGFnZW50U2VsZWN0b3IsXG4gICAgICB9KS5maW5hbGx5KCgpID0+IGNsZWFyVGltZW91dChyZWdpc3RlckNhbGxUaW1lb3V0KSk7XG5cbiAgICAgIGlmIChyZWdpc3RlckRlcGxveW1lbnRSZXNwb25zZS5zdGF0dXMgPT0gNDA0ICYmIGF0dGVtcHQgPT0gMSkge1xuICAgICAgICBkZXBsb3ltZW50c1VybCA9IGAke3Byb3BzLmFkbWluVXJsfS8ke0RFUExPWU1FTlRTX1BBVEhfTEVHQUNZfWA7XG4gICAgICAgIGNvbnNvbGUubG9nKGBHb3QgNDA0LCBmYWxsaW5nIGJhY2sgdG8gPDAuNy4wIGxlZ2FjeSBlbmRwb2ludCByZWdpc3RyYXRpb24gYXQ6ICR7ZGVwbG95bWVudHNVcmx9YCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWdpc3RlckRlcGxveW1lbnRSZXNwb25zZS5zdGF0dXMgPj0gMjAwICYmIHJlZ2lzdGVyRGVwbG95bWVudFJlc3BvbnNlLnN0YXR1cyA8IDMwMCkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IChhd2FpdCByZWdpc3RlckRlcGxveW1lbnRSZXNwb25zZS5qc29uKCkpIGFzIFJlZ2lzdGVyRGVwbG95bWVudFJlc3BvbnNlO1xuXG4gICAgICAgIC8vIFRPRE86IHRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lISBzdXBwb3J0IG9wdGlvbmFsIGV4YWN0L3BhcnRpYWwgbWF0Y2hpbmdcbiAgICAgICAgaWYgKCFyZXNwb25zZT8uc2VydmljZXM/LmZpbmQoKHMpID0+IHMubmFtZSA9PT0gcHJvcHMuc2VydmljZVBhdGgpKSB7XG4gICAgICAgICAgZmFpbHVyZVJlYXNvbiA9XG4gICAgICAgICAgICBcIlJlc3RhdGUgc2VydmljZSByZWdpc3RyYXRpb24gZmFpbGVkOiBzZXJ2aWNlIG5hbWUgaW5kaWNhdGVkIGJ5IHNlcnZpY2UgcmVzcG9uc2VcIiArXG4gICAgICAgICAgICBgIChcIiR7cmVzcG9uc2U/LnNlcnZpY2VzPy5bMF0/Lm5hbWV9KSkgZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIHZhbHVlIChcIiR7cHJvcHMuc2VydmljZVBhdGh9XCIpIWA7XG5cbiAgICAgICAgICBhdHRlbXB0ID0gTUFYX1JFR0lTVFJBVElPTl9BVFRFTVBUUzsgLy8gZG9uJ3QgcmV0cnkgdGhpc1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzZnVsIHJlZ2lzdHJhdGlvbiFcIik7XG5cbiAgICAgICAgY29uc3QgaXNQdWJsaWMgPSAocHJvcHMucHJpdmF0ZSA/PyBcImZhbHNlXCIpID09PSBcImZhbHNlXCI7XG4gICAgICAgIGNvbnNvbGUubG9nKGBNYXJraW5nIHNlcnZpY2UgJHtwcm9wcy5zZXJ2aWNlUGF0aH0gYXMgJHtpc1B1YmxpYyA/IFwicHVibGljXCIgOiBcInByaXZhdGVcIn0uLi5gKTtcbiAgICAgICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgICAgY29uc3QgcHJpdmF0ZUNhbGxUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiBjb250cm9sbGVyLmFib3J0KFwidGltZW91dFwiKSwgMTBfMDAwKTtcbiAgICAgICAgY29uc3QgcGF0Y2hSZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke3Byb3BzLmFkbWluVXJsfS8ke1NFUlZJQ0VTX1BBVEh9LyR7cHJvcHMuc2VydmljZVBhdGh9YCwge1xuICAgICAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgICAgICAgbWV0aG9kOiBcIlBBVENIXCIsXG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAuLi5hdXRoSGVhZGVyLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBwdWJsaWM6IGlzUHVibGljIH0pLFxuICAgICAgICAgIGFnZW50OiBhZ2VudFNlbGVjdG9yLFxuICAgICAgICB9KS5maW5hbGx5KCgpID0+IGNsZWFyVGltZW91dChwcml2YXRlQ2FsbFRpbWVvdXQpKTtcblxuICAgICAgICBjb25zb2xlLmxvZyhgR290IHBhdGNoIHJlc3BvbnNlIGJhY2s6ICR7cGF0Y2hSZXNwb25zZS5zdGF0dXN9YCk7XG4gICAgICAgIGlmIChwYXRjaFJlc3BvbnNlLnN0YXR1cyAhPSAyMDApIHtcbiAgICAgICAgICBmYWlsdXJlUmVhc29uID0gYE1hcmtpbmcgc2VydmljZSBhcyAke3Byb3BzLnByaXZhdGUgPyBcInByaXZhdGVcIiA6IFwicHVibGljXCJ9IGZhaWxlZDogJHtwYXRjaFJlc3BvbnNlLnN0YXR1c1RleHR9ICgke3BhdGNoUmVzcG9uc2Uuc3RhdHVzfSlgO1xuICAgICAgICAgIGJyZWFrOyAvLyBkb24ndCB0aHJvdyBpbW1lZGlhdGVseSAtIGxldCByZXRyeSBsb29wIGRlY2lkZSB3aGV0aGVyIHRvIGFib3J0IHNcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBTdWNjZXNzZnVsbHkgbWFya2VkIHNlcnZpY2UgYXMgJHtpc1B1YmxpYyA/IFwicHVibGljXCIgOiBcInByaXZhdGVcIn0uYCk7XG5cbiAgICAgICAgcmV0dXJuOyAvLyBPdmVyYWxsIHN1Y2Nlc3MhXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZyh7XG4gICAgICAgICAgbWVzc2FnZTogYEdvdCBlcnJvciByZXNwb25zZSBmcm9tIFJlc3RhdGUuYCxcbiAgICAgICAgICBjb2RlOiByZWdpc3RlckRlcGxveW1lbnRSZXNwb25zZS5zdGF0dXMsXG4gICAgICAgICAgYm9keTogYXdhaXQgcmVnaXN0ZXJEZXBsb3ltZW50UmVzcG9uc2UudGV4dCgpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBTZXJ2aWNlIHJlZ2lzdHJhdGlvbiBjYWxsIGZhaWxlZDogJHsoZSBhcyBFcnJvcik/Lm1lc3NhZ2V9IChhdHRlbXB0ICR7YXR0ZW1wdH0pYCk7XG4gICAgICBmYWlsdXJlUmVhc29uID0gYFJlc3RhdGUgc2VydmljZSByZWdpc3RyYXRpb24gZmFpbGVkOiAkeyhlIGFzIEVycm9yKT8ubWVzc2FnZX1gO1xuICAgIH1cblxuICAgIGlmIChhdHRlbXB0ID49IE1BWF9SRUdJU1RSQVRJT05fQVRURU1QVFMpIHtcbiAgICAgIGZhaWx1cmVSZWFzb24gPSBgU2VydmljZSByZWdpc3RyYXRpb24gZmFpbGVkIGFmdGVyICR7YXR0ZW1wdH0gYXR0ZW1wdHMuYDtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBhdHRlbXB0ICs9IDE7XG4gICAgY29uc3Qgd2FpdFRpbWVNaWxsaXMgPSByYW5kb21JbnQoMl8wMDApICsgMiAqKiBhdHRlbXB0ICogMV8wMDA7IC8vIDNzIC0+IDZzIC0+IDEwc1xuICAgIGNvbnNvbGUubG9nKGBSZXRyeWluZyByZWdpc3RyYXRpb24gYWZ0ZXIgJHt3YWl0VGltZU1pbGxpc30gbXMuLi5gKTtcbiAgICBhd2FpdCBzbGVlcCh3YWl0VGltZU1pbGxpcyk7XG4gIH1cblxuICBjb25zb2xlLmVycm9yKGZhaWx1cmVSZWFzb24pO1xuICB0aHJvdyBuZXcgRXJyb3IoZmFpbHVyZVJlYXNvbiA/PyBcIlJlc3RhdGUgc2VydmljZSByZWdpc3RyYXRpb24gZmFpbGVkLiBQbGVhc2Ugc2VlIGxvZ3MgZm9yIGRldGFpbHMuXCIpO1xufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQXV0aEhlYWRlcihwcm9wczogUmVnaXN0cmF0aW9uUHJvcGVydGllcyk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICBpZiAoIXByb3BzLmF1dGhUb2tlblNlY3JldEFybikge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnNvbGUubG9nKGBVc2luZyBiZWFyZXIgYXV0aGVudGljYXRpb24gdG9rZW4gZnJvbSBzZWNyZXQgJHtwcm9wcy5hdXRoVG9rZW5TZWNyZXRBcm59YCk7XG4gIGNvbnN0IHNzbSA9IG5ldyBTZWNyZXRzTWFuYWdlckNsaWVudCgpO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNzbS5zZW5kKFxuICAgIG5ldyBHZXRTZWNyZXRWYWx1ZUNvbW1hbmQoe1xuICAgICAgU2VjcmV0SWQ6IHByb3BzLmF1dGhUb2tlblNlY3JldEFybixcbiAgICB9KSxcbiAgKTtcblxuICBjb25zb2xlLmxvZyhgU3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCBzZWNyZXQgXCIke3Jlc3BvbnNlLk5hbWV9XCIgdmVyc2lvbiAke3Jlc3BvbnNlLlZlcnNpb25JZH1gKTtcbiAgcmV0dXJuIHtcbiAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7cmVzcG9uc2UuU2VjcmV0U3RyaW5nfWAsXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNsZWVwKG1pbGxpczogbnVtYmVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtaWxsaXMpKTtcbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import * as iam from "aws-cdk-lib/aws-iam";
2
2
  import { IRole } from "aws-cdk-lib/aws-iam";
3
- import * as ssm from "aws-cdk-lib/aws-secretsmanager";
3
+ import * as secretsmanager from "aws-cdk-lib/aws-secretsmanager";
4
4
  import { ISecret } from "aws-cdk-lib/aws-secretsmanager";
5
5
  import { FunctionOptions } from "aws-cdk-lib/aws-lambda";
6
6
  import { ServiceDeployer } from "./service-deployer";
@@ -22,7 +22,7 @@ export interface IRestateEnvironment extends Pick<FunctionOptions, "vpc" | "vpcS
22
22
  /**
23
23
  * Authentication token to include as a bearer token in requests to the admin endpoint.
24
24
  */
25
- readonly authToken?: ssm.ISecret;
25
+ readonly authToken?: secretsmanager.ISecret;
26
26
  }
27
27
  export declare class RestateEnvironment implements IRestateEnvironment {
28
28
  readonly adminUrl: string;
@@ -12,4 +12,4 @@ class RestateEnvironment {
12
12
  }
13
13
  }
14
14
  exports.RestateEnvironment = RestateEnvironment;
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdGF0ZS1lbnZpcm9ubWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9yZXN0YXRlLWNvbnN0cnVjdHMvcmVzdGF0ZS1lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE4QkEsTUFBYSxrQkFBa0I7SUFNN0IsWUFBb0IsS0FBMEI7UUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBMEI7UUFDOUMsT0FBTyxJQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQWZELGdEQWVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBJUm9sZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgKiBhcyBzc20gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlclwiO1xuaW1wb3J0IHsgSVNlY3JldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXJcIjtcbmltcG9ydCB7IEZ1bmN0aW9uT3B0aW9ucyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBTZXJ2aWNlRGVwbG95ZXIgfSBmcm9tIFwiLi9zZXJ2aWNlLWRlcGxveWVyXCI7XG5cbi8qKlxuICogQSBSZXN0YXRlIGVudmlyb25tZW50IGlzIGEgdW5pcXVlIGRlcGxveW1lbnQgb2YgdGhlIFJlc3RhdGUgc2VydmljZS4gSW1wbGVtZW50YXRpb25zIG9mIHRoaXMgaW50ZXJmYWNlIG1heSByZWZlciB0b1xuICogY2xvdWQgb3Igc2VsZi1tYW5hZ2VkIGVudmlyb25tZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUmVzdGF0ZUVudmlyb25tZW50IGV4dGVuZHMgUGljazxGdW5jdGlvbk9wdGlvbnMsIFwidnBjXCIgfCBcInZwY1N1Ym5ldHNcIiB8IFwic2VjdXJpdHlHcm91cHNcIj4ge1xuICAvKipcbiAgICogVGhlIGV4dGVybmFsIGludm9rZXIgcm9sZSB0aGF0IFJlc3RhdGUgY2FuIGFzc3VtZSB0byBleGVjdXRlIHNlcnZpY2UgaGFuZGxlcnMuIElmIGxlZnQgdW5zZXQsIGl0J3MgYXNzdW1lZCB0aGF0XG4gICAqIHRoZSBSZXN0YXRlIGRlcGxveW1lbnQgaGFzIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gaW52b2tlIHRoZSBzZXJ2aWNlIGhhbmRsZXJzIGRpcmVjdGx5LiBTZXR0aW5nIHRoaXMgcm9sZSBhbGxvd3NcbiAgICogdGhlIGNvbnN0cnVjdHMgdG8gZW5zdXJlIGFwcHJvcHJpYXRlIHBlcm1pc3Npb25zIGFyZSBncmFudGVkIHRvIGFueSBkZXBsb3llZCBzZXJ2aWNlIGhhbmRsZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgaW52b2tlclJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBhZG1pbiBlbmRwb2ludCBvZiB0aGUgUmVzdGF0ZSBlbnZpcm9ubWVudCB3aGVyZSBzZXJ2aWNlcyB3aWxsIGJlIGRlcGxveWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRtaW5Vcmw6IHN0cmluZztcblxuICAvKipcbiAgICogQXV0aGVudGljYXRpb24gdG9rZW4gdG8gaW5jbHVkZSBhcyBhIGJlYXJlciB0b2tlbiBpbiByZXF1ZXN0cyB0byB0aGUgYWRtaW4gZW5kcG9pbnQuXG4gICAqL1xuICByZWFkb25seSBhdXRoVG9rZW4/OiBzc20uSVNlY3JldDtcbn1cblxuZXhwb3J0IGNsYXNzIFJlc3RhdGVFbnZpcm9ubWVudCBpbXBsZW1lbnRzIElSZXN0YXRlRW52aXJvbm1lbnQge1xuICByZWFkb25seSBhZG1pblVybDogc3RyaW5nO1xuICByZWFkb25seSBhdXRoVG9rZW4/OiBJU2VjcmV0O1xuICByZWFkb25seSBpbnZva2VyUm9sZT86IElSb2xlO1xuICByZWFkb25seSBzZXJ2aWNlRGVwbG95ZXI6IFNlcnZpY2VEZXBsb3llcjtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByb3BzOiBJUmVzdGF0ZUVudmlyb25tZW50KSB7XG4gICAgdGhpcy5hZG1pblVybCA9IHByb3BzLmFkbWluVXJsO1xuICAgIHRoaXMuaW52b2tlclJvbGUgPSBwcm9wcy5pbnZva2VyUm9sZTtcbiAgICB0aGlzLmF1dGhUb2tlbiA9IHByb3BzLmF1dGhUb2tlbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQXR0cmlidXRlcyhwcm9wczogSVJlc3RhdGVFbnZpcm9ubWVudCk6IElSZXN0YXRlRW52aXJvbm1lbnQge1xuICAgIHJldHVybiBuZXcgUmVzdGF0ZUVudmlyb25tZW50KHByb3BzKTtcbiAgfVxufVxuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdGF0ZS1lbnZpcm9ubWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9yZXN0YXRlLWNvbnN0cnVjdHMvcmVzdGF0ZS1lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE4QkEsTUFBYSxrQkFBa0I7SUFNN0IsWUFBb0IsS0FBMEI7UUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBMEI7UUFDOUMsT0FBTyxJQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQWZELGdEQWVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBJUm9sZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgKiBhcyBzZWNyZXRzbWFuYWdlciBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBJU2VjcmV0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlclwiO1xuaW1wb3J0IHsgRnVuY3Rpb25PcHRpb25zIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IFNlcnZpY2VEZXBsb3llciB9IGZyb20gXCIuL3NlcnZpY2UtZGVwbG95ZXJcIjtcblxuLyoqXG4gKiBBIFJlc3RhdGUgZW52aXJvbm1lbnQgaXMgYSB1bmlxdWUgZGVwbG95bWVudCBvZiB0aGUgUmVzdGF0ZSBzZXJ2aWNlLiBJbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBpbnRlcmZhY2UgbWF5IHJlZmVyIHRvXG4gKiBjbG91ZCBvciBzZWxmLW1hbmFnZWQgZW52aXJvbm1lbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElSZXN0YXRlRW52aXJvbm1lbnQgZXh0ZW5kcyBQaWNrPEZ1bmN0aW9uT3B0aW9ucywgXCJ2cGNcIiB8IFwidnBjU3VibmV0c1wiIHwgXCJzZWN1cml0eUdyb3Vwc1wiPiB7XG4gIC8qKlxuICAgKiBUaGUgZXh0ZXJuYWwgaW52b2tlciByb2xlIHRoYXQgUmVzdGF0ZSBjYW4gYXNzdW1lIHRvIGV4ZWN1dGUgc2VydmljZSBoYW5kbGVycy4gSWYgbGVmdCB1bnNldCwgaXQncyBhc3N1bWVkIHRoYXRcbiAgICogdGhlIFJlc3RhdGUgZGVwbG95bWVudCBoYXMgc3VmZmljaWVudCBwZXJtaXNzaW9ucyB0byBpbnZva2UgdGhlIHNlcnZpY2UgaGFuZGxlcnMgZGlyZWN0bHkuIFNldHRpbmcgdGhpcyByb2xlIGFsbG93c1xuICAgKiB0aGUgY29uc3RydWN0cyB0byBlbnN1cmUgYXBwcm9wcmlhdGUgcGVybWlzc2lvbnMgYXJlIGdyYW50ZWQgdG8gYW55IGRlcGxveWVkIHNlcnZpY2UgaGFuZGxlcnMuXG4gICAqL1xuICByZWFkb25seSBpbnZva2VyUm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIGFkbWluIGVuZHBvaW50IG9mIHRoZSBSZXN0YXRlIGVudmlyb25tZW50IHdoZXJlIHNlcnZpY2VzIHdpbGwgYmUgZGVwbG95ZWQuXG4gICAqL1xuICByZWFkb25seSBhZG1pblVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBdXRoZW50aWNhdGlvbiB0b2tlbiB0byBpbmNsdWRlIGFzIGEgYmVhcmVyIHRva2VuIGluIHJlcXVlc3RzIHRvIHRoZSBhZG1pbiBlbmRwb2ludC5cbiAgICovXG4gIHJlYWRvbmx5IGF1dGhUb2tlbj86IHNlY3JldHNtYW5hZ2VyLklTZWNyZXQ7XG59XG5cbmV4cG9ydCBjbGFzcyBSZXN0YXRlRW52aXJvbm1lbnQgaW1wbGVtZW50cyBJUmVzdGF0ZUVudmlyb25tZW50IHtcbiAgcmVhZG9ubHkgYWRtaW5Vcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgYXV0aFRva2VuPzogSVNlY3JldDtcbiAgcmVhZG9ubHkgaW52b2tlclJvbGU/OiBJUm9sZTtcbiAgcmVhZG9ubHkgc2VydmljZURlcGxveWVyOiBTZXJ2aWNlRGVwbG95ZXI7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcm9wczogSVJlc3RhdGVFbnZpcm9ubWVudCkge1xuICAgIHRoaXMuYWRtaW5VcmwgPSBwcm9wcy5hZG1pblVybDtcbiAgICB0aGlzLmludm9rZXJSb2xlID0gcHJvcHMuaW52b2tlclJvbGU7XG4gICAgdGhpcy5hdXRoVG9rZW4gPSBwcm9wcy5hdXRoVG9rZW47XG4gIH1cblxuICBzdGF0aWMgZnJvbUF0dHJpYnV0ZXMocHJvcHM6IElSZXN0YXRlRW52aXJvbm1lbnQpOiBJUmVzdGF0ZUVudmlyb25tZW50IHtcbiAgICByZXR1cm4gbmV3IFJlc3RhdGVFbnZpcm9ubWVudChwcm9wcyk7XG4gIH1cbn1cbiJdfQ==
@@ -49,7 +49,7 @@ export declare class ServiceDeployer extends Construct {
49
49
  skipInvokeFunctionGrant?: boolean;
50
50
  /**
51
51
  * Whether to mark the service as private, and make it unavailable to be called via Restate ingress.
52
- * @see https://docs.restate.dev/services/invocation/#private-services
52
+ * @see https://docs.restate.dev/operate/registration#private-services
53
53
  */
54
54
  private?: boolean;
55
55
  /**
@@ -140,4 +140,4 @@ class ServiceDeployer extends constructs_1.Construct {
140
140
  }
141
141
  }
142
142
  exports.ServiceDeployer = ServiceDeployer;
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1kZXBsb3llci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9yZXN0YXRlLWNvbnN0cnVjdHMvc2VydmljZS1kZXBsb3llci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILDJDQUF1QztBQUV2Qyx5REFBMkM7QUFDM0MsMkVBQTZEO0FBRTdELDBEQUE2QjtBQUM3QiwrREFBaUQ7QUFDakQsaURBQW1DO0FBQ25DLGlFQUFtRDtBQUluRCxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVsRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLHNCQUFTO0lBTTVDLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVTtJQUNWOzs7T0FHRztJQUNILEtBSW9DO1FBRXBDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxZQUFZLEdBQUcsSUFBSSxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDeEUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZO1lBQ2pDLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUN6QixXQUFXLEVBQUUscUNBQXFDO1lBQ2xELEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxJQUFJLG1CQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxtQ0FBbUMsQ0FBQztZQUNoRixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNO1lBQ3hDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWE7WUFDckMsVUFBVSxFQUFFLEdBQUc7WUFDZixPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSxlQUFlO1lBQzFDLFdBQVcsRUFBRTtnQkFDWCxZQUFZLEVBQUUsc0JBQXNCO2FB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YXJlLCBJbmMuLCBSZXN0YXRlIEdtYkhcbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUmVzdGF0ZSBTREsgZm9yIE5vZGUuanMvVHlwZVNjcmlwdCxcbiAqIHdoaWNoIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqXG4gKiBZb3UgY2FuIGZpbmQgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGluIGZpbGUgTElDRU5TRSBpbiB0aGUgcm9vdFxuICogZGlyZWN0b3J5IG9mIHRoaXMgcmVwb3NpdG9yeSBvciBwYWNrYWdlLCBvciBhdFxuICogaHR0cHM6Ly9naXRodWIuY29tL3Jlc3RhdGVkZXYvc2RrLXR5cGVzY3JpcHQvYmxvYi9tYWluL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgc3NtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXJcIjtcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0ICogYXMgbGFtYmRhX25vZGUgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCI7XG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvblByb3BzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGNyIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBJUmVzdGF0ZUVudmlyb25tZW50IH0gZnJvbSBcIi4vcmVzdGF0ZS1lbnZpcm9ubWVudFwiO1xuaW1wb3J0IHsgUmVnaXN0cmF0aW9uUHJvcGVydGllcyB9IGZyb20gXCIuL3JlZ2lzdGVyLXNlcnZpY2UtaGFuZGxlclwiO1xuXG5jb25zdCBERUZBVUxUX1RJTUVPVVQgPSBjZGsuRHVyYXRpb24uc2Vjb25kcygxODApO1xuXG4vKipcbiAqIFRoaXMgY29uc3RydWN0IGltcGxlbWVudHMgYSBjdXN0b20gQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgcHJvdmlkZXIgdGhhdCBoYW5kbGVzIGRlcGxveWluZyBMYW1iZGEtYmFzZWQgc2VydmljZVxuICogaGFuZGxlcnMgd2l0aCBhIFJlc3RhdGUgZW52aXJvbm1lbnQuIEl0IGlzIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgQ2xvdWQgYW5kIHNlbGYtaG9zdGVkIFJlc3RhdGUgZW52aXJvbm1lbnRcbiAqIGNvbnN0cnVjdHMgYW5kIG5vdCBpbnRlbmRlZCBmb3IgZGlyZWN0IHVzZSBieSBlbmQgdXNlcnMgb2YgUmVzdGF0ZS5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQgYXMgYSBjdXN0b20gcmVzb3VyY2Ugc28gdGhhdCB3ZSBhcmUgbm90aWZpZWQgb2YgYW55IHVwZGF0ZXMgdG8gc2VydmljZSBoYW5kbGVyXG4gKiBmdW5jdGlvbnM6IGJ5IGNyZWF0aW5nIGEgQ2xvdWRGb3JtYXRpb24gY29tcG9uZW50LCB3ZSBjYW4gbW9kZWwgdGhlIGRlcGVuZGVuY3kgdGhhdCBhbnkgY2hhbmdlcyB0byB0aGUgaGFuZGxlcnMgbmVlZFxuICogdG8gYmUgY29tbXVuaWNhdGVkIHRvIHRoZSByZWdpc3RyYXIuIFdpdGhvdXQgdGhpcyBkZXBlbmRlbmN5LCBDbG91ZEZvcm1hdGlvbiBtaWdodCBwZXJmb3JtIGFuIHVwZGF0ZSBkZXBsb3ltZW50IHRoYXRcbiAqIHRyaWdnZXJlZCBieSBhIExhbWJkYSBoYW5kbGVyIGNvZGUgb3IgY29uZmlndXJhdGlvbiBjaGFuZ2UsIGFuZCB0aGUgUmVzdGF0ZSBlbnZpcm9ubWVudCB3b3VsZCBiZSB1bmF3YXJlIG9mIGl0LlxuICpcbiAqIFlvdSBjYW4gc2hhcmUgdGhlIHNhbWUgaW5zdGFuY2UgYWNyb3NzIG11bHRpcGxlIHNlcnZpY2UgcmVnaXN0cmllcyBwcm92aWRlZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBjb21wYXRpYmxlXG4gKiAoZS5nLiB0aGUgUmVzdGF0ZSBlbnZpcm9ubWVudHMgaXQgbmVlZHMgdG8gY29tbXVuaWNhdGUgd2l0aCBmb3IgZGVwbG95bWVudCBhcmUgYWxsIGFjY2Vzc2libGUgdmlhIHRoZSBzYW1lIFZQQyBhbmRcbiAqIFNlY3VyaXR5IEdyb3VwcykuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlRGVwbG95ZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKiogVGhlIGN1c3RvbSByZXNvdXJjZSBwcm92aWRlciBmb3IgaGFuZGxpbmcgXCJkZXBsb3ltZW50XCIgcmVzb3VyY2VzLiAqL1xuICByZWFkb25seSBkZXBsb3ltZW50UmVzb3VyY2VQcm92aWRlcjogY3IuUHJvdmlkZXI7XG5cbiAgcHJpdmF0ZSBpbnZvY2F0aW9uUG9saWN5PzogaWFtLlBvbGljeTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogQWxsb3dzIHRoZSBjdXN0b20gcmVzb3VyY2UgZXZlbnQgaGFuZGxlciBwcm9wZXJ0aWVzIHRvIGJlIG92ZXJyaWRkZW4uIFRoZSBtYWluIHVzZSBjYXNlIGZvciB0aGlzIGlzIHNwZWNpZnlpbmdcbiAgICAgKiBWUEMgYW5kIHNlY3VyaXR5IGdyb3VwIHNldHRpbmdzIGZvciBSZXN0YXRlIGVudmlyb25tZW50cyB0aGF0IHJlcXVpcmUgaXQuXG4gICAgICovXG4gICAgcHJvcHM/OiBQaWNrPFxuICAgICAgbGFtYmRhLkZ1bmN0aW9uT3B0aW9ucyxcbiAgICAgIFwiZnVuY3Rpb25OYW1lXCIgfCBcImxvZ0dyb3VwXCIgfCBcInRpbWVvdXRcIiB8IFwidnBjXCIgfCBcInZwY1N1Ym5ldHNcIiB8IFwic2VjdXJpdHlHcm91cHNcIlxuICAgID4gJlxuICAgICAgUGljazxOb2RlanNGdW5jdGlvblByb3BzLCBcImVudHJ5XCI+LFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgZXZlbnRIYW5kbGVyID0gbmV3IGxhbWJkYV9ub2RlLk5vZGVqc0Z1bmN0aW9uKHRoaXMsIFwiRXZlbnRIYW5kbGVyXCIsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogcHJvcHM/LmZ1bmN0aW9uTmFtZSxcbiAgICAgIGxvZ0dyb3VwOiBwcm9wcz8ubG9nR3JvdXAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJSZXN0YXRlIGN1c3RvbSByZWdpc3RyYXRpb24gaGFuZGxlclwiLFxuICAgICAgZW50cnk6IHByb3BzPy5lbnRyeSA/PyBwYXRoLmpvaW4oX19kaXJuYW1lLCBcInJlZ2lzdGVyLXNlcnZpY2UtaGFuZGxlci9pbmRleC5qc1wiKSxcbiAgICAgIGFyY2hpdGVjdHVyZTogbGFtYmRhLkFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfTEFURVNULFxuICAgICAgbWVtb3J5U2l6ZTogMTI4LFxuICAgICAgdGltZW91dDogcHJvcHM/LnRpbWVvdXQgPz8gREVGQVVMVF9USU1FT1VULFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgTk9ERV9PUFRJT05TOiBcIi0tZW5hYmxlLXNvdXJjZS1tYXBzXCIsXG4gICAgICB9LFxuICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgbWluaWZ5OiBmYWxzZSxcbiAgICAgICAgc291cmNlTWFwOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIC4uLihwcm9wcz8udnBjXG4gICAgICAgID8gKHtcbiAgICAgICAgICAgIHZwYzogcHJvcHM/LnZwYyxcbiAgICAgICAgICAgIHZwY1N1Ym5ldHM6IHByb3BzPy52cGNTdWJuZXRzLFxuICAgICAgICAgICAgc2VjdXJpdHlHcm91cHM6IHByb3BzPy5zZWN1cml0eUdyb3VwcyxcbiAgICAgICAgICB9IHNhdGlzZmllcyBQaWNrPGxhbWJkYS5GdW5jdGlvbk9wdGlvbnMsIFwidnBjXCIgfCBcInZwY1N1Ym5ldHNcIiB8IFwic2VjdXJpdHlHcm91cHNcIj4pXG4gICAgICAgIDoge30pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kZXBsb3ltZW50UmVzb3VyY2VQcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCBcIkN1c3RvbVJlc291cmNlUHJvdmlkZXJcIiwgeyBvbkV2ZW50SGFuZGxlcjogZXZlbnRIYW5kbGVyIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcGxveSBhIExhbWJkYS1iYWNrZWQgUmVzdGF0ZSBzZXJ2aWNlIHRvIGEgZ2l2ZW4gZW52aXJvbm1lbnQuIFRoaXMgd2lsbCByZWdpc3RlciBhIGRlcGxveW1lbnQgdGhhdCB3aWxsIHRyaWdnZXJcbiAgICogYSBSZXN0YXRlIHJlZ2lzdHJhdGlvbiB3aGVuZXZlciB0aGUgaGFuZGxlciByZXNvdXJjZSBjaGFuZ2VzLlxuICAgKlxuICAgKiBAcGFyYW0gc2VydmljZU5hbWUgdGhlIHNlcnZpY2UgbmFtZSB3aXRoaW4gUmVzdGF0ZSAtIHRoaXMgbXVzdCBtYXRjaCB0aGUgc2VydmljZSdzIHNlbGYtcmVwb3J0ZWQgbmFtZSBkdXJpbmcgZGlzY292ZXJ5XG4gICAqIEBwYXJhbSBoYW5kbGVyIHNlcnZpY2UgaGFuZGxlciAtIG11c3QgYmUgYSBzcGVjaWZpYyBmdW5jdGlvbiB2ZXJzaW9uLCB1c2UgXCJsYXRlc3RcIiBpZiB5b3UgZG9uJ3QgY2FyZSBhYm91dCBleHBsaWNpdCB2ZXJzaW9uaW5nXG4gICAqIEBwYXJhbSBlbnZpcm9ubWVudCB0YXJnZXQgUmVzdGF0ZSBlbnZpcm9ubWVudFxuICAgKiBAcGFyYW0gb3B0aW9ucyBhZGRpdGlvbmFsIG9wdGlvbnM7IHNlZSBmaWVsZCBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzXG4gICAqL1xuICBkZXBsb3lTZXJ2aWNlKFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgaGFuZGxlcjogbGFtYmRhLklWZXJzaW9uLFxuICAgIGVudmlyb25tZW50OiBJUmVzdGF0ZUVudmlyb25tZW50LFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICAvKipcbiAgICAgICAqIFNTTSBzZWNyZXQgQVJOIGZvciB0aGUgYXV0aGVudGljYXRpb24gdG9rZW4gdG8gdXNlIHdpdGggdGhlIGFkbWluIEFQSS4gVGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBlbnZpcm9ubWVudCdzXG4gICAgICAgKiB0b2tlbiwgaWYgaXQgaXMgc2V0LlxuICAgICAgICovXG4gICAgICBhdXRoVG9rZW4/OiBzc20uSVNlY3JldDtcbiAgICAgIC8qKlxuICAgICAgICogV2hldGhlciB0byBza2lwIGdyYW50aW5nIHRoZSBpbnZva2VyIHJvbGUgcGVybWlzc2lvbiB0byBpbnZva2UgdGhlIHNlcnZpY2UgaGFuZGxlci5cbiAgICAgICAqL1xuICAgICAgc2tpcEludm9rZUZ1bmN0aW9uR3JhbnQ/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBXaGV0aGVyIHRvIG1hcmsgdGhlIHNlcnZpY2UgYXMgcHJpdmF0ZSwgYW5kIG1ha2UgaXQgdW5hdmFpbGFibGUgdG8gYmUgY2FsbGVkIHZpYSBSZXN0YXRlIGluZ3Jlc3MuXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5yZXN0YXRlLmRldi9zZXJ2aWNlcy9pbnZvY2F0aW9uLyNwcml2YXRlLXNlcnZpY2VzXG4gICAgICAgKi9cbiAgICAgIHByaXZhdGU/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBBIGR1bW15IHBhcmFtZXRlciB0byBmb3JjZSBDbG91ZEZvcm1hdGlvbiB0byB1cGRhdGUgdGhlIGRlcGxveW1lbnQgd2hlbiB0aGUgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBVc2VmdWwgaWZcbiAgICAgICAqIHlvdSB3YW50IHRvIHRhcmdldCB0aGUgXCJsYXRlc3QgdmVyc2lvblwiIG9mIGEgc2VydmljZSBoYW5kbGVyIGFuZCBuZWVkIHRvIGZvcmNlIGEgZGVwbG95bWVudCBpbiBvcmRlciB0byB0cmlnZ2VyXG4gICAgICAgKiBkaXNjb3ZlcnkuXG4gICAgICAgKi9cbiAgICAgIGNvbmZpZ3VyYXRpb25WZXJzaW9uPzogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBXaGV0aGVyIHRvIGFjY2VwdCBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZXMuXG4gICAgICAgKi9cbiAgICAgIGluc2VjdXJlPzogYm9vbGVhbjtcbiAgICB9LFxuICApIHtcbiAgICBjb25zdCBhdXRoVG9rZW4gPSBvcHRpb25zPy5hdXRoVG9rZW4gPz8gZW52aXJvbm1lbnQuYXV0aFRva2VuO1xuICAgIGF1dGhUb2tlbj8uZ3JhbnRSZWFkKHRoaXMuZGVwbG95bWVudFJlc291cmNlUHJvdmlkZXIub25FdmVudEhhbmRsZXIpO1xuXG4gICAgY29uc3QgZGVwbG95bWVudCA9IG5ldyBjZGsuQ3VzdG9tUmVzb3VyY2UoaGFuZGxlciwgXCJSZXN0YXRlRGVwbG95bWVudFwiLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHRoaXMuZGVwbG95bWVudFJlc291cmNlUHJvdmlkZXIuc2VydmljZVRva2VuLFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6UmVzdGF0ZVNlcnZpY2VEZXBsb3ltZW50XCIsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHNlcnZpY2VQYXRoOiBzZXJ2aWNlTmFtZSxcbiAgICAgICAgYWRtaW5Vcmw6IGVudmlyb25tZW50LmFkbWluVXJsLFxuICAgICAgICBhdXRoVG9rZW5TZWNyZXRBcm46IGF1dGhUb2tlbj8uc2VjcmV0QXJuLFxuICAgICAgICBzZXJ2aWNlTGFtYmRhQXJuOiBoYW5kbGVyLmZ1bmN0aW9uQXJuLFxuICAgICAgICBpbnZva2VSb2xlQXJuOiBlbnZpcm9ubWVudC5pbnZva2VyUm9sZT8ucm9sZUFybixcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogY2RrLlJlbW92YWxQb2xpY3kuUkVUQUlOLFxuICAgICAgICBwcml2YXRlOiAob3B0aW9ucz8ucHJpdmF0ZSA/PyBmYWxzZSkudG9TdHJpbmcoKSBhcyBcInRydWVcIiB8IFwiZmFsc2VcIixcbiAgICAgICAgY29uZmlndXJhdGlvblZlcnNpb246IG9wdGlvbnM/LmNvbmZpZ3VyYXRpb25WZXJzaW9uLFxuICAgICAgICBpbnNlY3VyZTogKG9wdGlvbnM/Lmluc2VjdXJlID8/IGZhbHNlKS50b1N0cmluZygpIGFzIFwidHJ1ZVwiIHwgXCJmYWxzZVwiLFxuICAgICAgfSBzYXRpc2ZpZXMgUmVnaXN0cmF0aW9uUHJvcGVydGllcyxcbiAgICB9KTtcblxuICAgIGlmIChlbnZpcm9ubWVudC5pbnZva2VyUm9sZSAmJiAhb3B0aW9ucz8uc2tpcEludm9rZUZ1bmN0aW9uR3JhbnQpIHtcbiAgICAgIC8vIFdlIGNyZWF0ZSBhIHNlcGFyYXRlIHBvbGljeSB3aGljaCB3ZSdsbCBhdHRhY2ggdG8gdGhlIHByb3ZpZGVkIGludm9rZXIgcm9sZS4gVGhpcyBicmVha3MgYSBjaXJjdWxhciBjcm9zcy1zdGFja1xuICAgICAgLy8gZGVwZW5kZW5jeSB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBjcmVhdGVkIGJldHdlZW4gdGhlIHNlcnZpY2UgZGVwbG95ZXIgYW5kIHRoZSBpbnZva2VyIHJvbGUuXG4gICAgICBpZiAoIXRoaXMuaW52b2NhdGlvblBvbGljeSkge1xuICAgICAgICB0aGlzLmludm9jYXRpb25Qb2xpY3kgPSBuZXcgaWFtLlBvbGljeSh0aGlzLCBcIkludm9jYXRpb25Qb2xpY3lcIik7XG4gICAgICAgIC8vIERlc3BpdGUgdGhlIEFSTiByZWZlcmVuY2UgYWJvdmUsIENsb3VkRm9ybWF0aW9uIHNvbWV0aW1lcyB0cmllcyB0byBpbnZva2UgdGhlIGN1c3RvbSByZXNvdXJjZSBoYW5kbGVyIGJlZm9yZVxuICAgICAgICAvLyBhbGwgcGVybWlzc2lvbnMgYXJlIGFwcGxpZWQuIEFkZGluZyBhbiBleHBsaWNpdCBkZXBlbmRlbmN5IGluY2x1ZGVzIGEgZGVwZW5kZW5jeSBvbiBhbnkgcGVuZGluZyBwb2xpY3kgdXBkYXRlc1xuICAgICAgICAvLyBkZWZpbmVkIGluIHRoZSBzYW1lIHN0YWNrIGFzIHRoZSBzZXJ2aWNlIGRlcGxveWVyLCB3aGljaCBzZWVtcyB0byBoZWxwLiBTb21lIHByb3BhZ2F0aW9uIGRlbGF5IG1pZ2h0IHN0aWxsIG1lYW5cbiAgICAgICAgLy8gd2UgbGVhbiBvbiByZXRyaWVzIGluIHRoZSBkZXBsb3llciBldmVudCBoYW5kbGVyIGluIGFueSBldmVudCBidXQgdGhpcyByZWR1Y2VzIHRoZSBwcm9iYWJpbGl0eSBvZiBmYWlsdXJlLlxuICAgICAgICBkZXBsb3ltZW50Lm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLmludm9jYXRpb25Qb2xpY3kpO1xuICAgICAgICB0aGlzLmludm9jYXRpb25Qb2xpY3kuYXR0YWNoVG9Sb2xlKGVudmlyb25tZW50Lmludm9rZXJSb2xlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW52b2NhdGlvblBvbGljeS5hZGRTdGF0ZW1lbnRzKFxuICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1wibGFtYmRhOkludm9rZUZ1bmN0aW9uXCJdLFxuICAgICAgICAgIHJlc291cmNlczogaGFuZGxlci5sYW1iZGEucmVzb3VyY2VBcm5zRm9yR3JhbnRJbnZva2UsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1kZXBsb3llci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9yZXN0YXRlLWNvbnN0cnVjdHMvc2VydmljZS1kZXBsb3llci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILDJDQUF1QztBQUV2Qyx5REFBMkM7QUFDM0MsMkVBQTZEO0FBRTdELDBEQUE2QjtBQUM3QiwrREFBaUQ7QUFDakQsaURBQW1DO0FBQ25DLGlFQUFtRDtBQUluRCxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVsRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLHNCQUFTO0lBTTVDLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVTtJQUNWOzs7T0FHRztJQUNILEtBSW9DO1FBRXBDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxZQUFZLEdBQUcsSUFBSSxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDeEUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZO1lBQ2pDLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUTtZQUN6QixXQUFXLEVBQUUscUNBQXFDO1lBQ2xELEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxJQUFJLG1CQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxtQ0FBbUMsQ0FBQztZQUNoRixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNO1lBQ3hDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWE7WUFDckMsVUFBVSxFQUFFLEdBQUc7WUFDZixPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSxlQUFlO1lBQzFDLFdBQVcsRUFBRTtnQkFDWCxZQUFZLEVBQUUsc0JBQXNCO2FB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YXJlLCBJbmMuLCBSZXN0YXRlIEdtYkhcbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUmVzdGF0ZSBTREsgZm9yIE5vZGUuanMvVHlwZVNjcmlwdCxcbiAqIHdoaWNoIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqXG4gKiBZb3UgY2FuIGZpbmQgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGluIGZpbGUgTElDRU5TRSBpbiB0aGUgcm9vdFxuICogZGlyZWN0b3J5IG9mIHRoaXMgcmVwb3NpdG9yeSBvciBwYWNrYWdlLCBvciBhdFxuICogaHR0cHM6Ly9naXRodWIuY29tL3Jlc3RhdGVkZXYvc2RrLXR5cGVzY3JpcHQvYmxvYi9tYWluL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgc3NtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXJcIjtcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0ICogYXMgbGFtYmRhX25vZGUgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCI7XG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvblByb3BzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGNyIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBJUmVzdGF0ZUVudmlyb25tZW50IH0gZnJvbSBcIi4vcmVzdGF0ZS1lbnZpcm9ubWVudFwiO1xuaW1wb3J0IHsgUmVnaXN0cmF0aW9uUHJvcGVydGllcyB9IGZyb20gXCIuL3JlZ2lzdGVyLXNlcnZpY2UtaGFuZGxlclwiO1xuXG5jb25zdCBERUZBVUxUX1RJTUVPVVQgPSBjZGsuRHVyYXRpb24uc2Vjb25kcygxODApO1xuXG4vKipcbiAqIFRoaXMgY29uc3RydWN0IGltcGxlbWVudHMgYSBjdXN0b20gQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgcHJvdmlkZXIgdGhhdCBoYW5kbGVzIGRlcGxveWluZyBMYW1iZGEtYmFzZWQgc2VydmljZVxuICogaGFuZGxlcnMgd2l0aCBhIFJlc3RhdGUgZW52aXJvbm1lbnQuIEl0IGlzIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgQ2xvdWQgYW5kIHNlbGYtaG9zdGVkIFJlc3RhdGUgZW52aXJvbm1lbnRcbiAqIGNvbnN0cnVjdHMgYW5kIG5vdCBpbnRlbmRlZCBmb3IgZGlyZWN0IHVzZSBieSBlbmQgdXNlcnMgb2YgUmVzdGF0ZS5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQgYXMgYSBjdXN0b20gcmVzb3VyY2Ugc28gdGhhdCB3ZSBhcmUgbm90aWZpZWQgb2YgYW55IHVwZGF0ZXMgdG8gc2VydmljZSBoYW5kbGVyXG4gKiBmdW5jdGlvbnM6IGJ5IGNyZWF0aW5nIGEgQ2xvdWRGb3JtYXRpb24gY29tcG9uZW50LCB3ZSBjYW4gbW9kZWwgdGhlIGRlcGVuZGVuY3kgdGhhdCBhbnkgY2hhbmdlcyB0byB0aGUgaGFuZGxlcnMgbmVlZFxuICogdG8gYmUgY29tbXVuaWNhdGVkIHRvIHRoZSByZWdpc3RyYXIuIFdpdGhvdXQgdGhpcyBkZXBlbmRlbmN5LCBDbG91ZEZvcm1hdGlvbiBtaWdodCBwZXJmb3JtIGFuIHVwZGF0ZSBkZXBsb3ltZW50IHRoYXRcbiAqIHRyaWdnZXJlZCBieSBhIExhbWJkYSBoYW5kbGVyIGNvZGUgb3IgY29uZmlndXJhdGlvbiBjaGFuZ2UsIGFuZCB0aGUgUmVzdGF0ZSBlbnZpcm9ubWVudCB3b3VsZCBiZSB1bmF3YXJlIG9mIGl0LlxuICpcbiAqIFlvdSBjYW4gc2hhcmUgdGhlIHNhbWUgaW5zdGFuY2UgYWNyb3NzIG11bHRpcGxlIHNlcnZpY2UgcmVnaXN0cmllcyBwcm92aWRlZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBjb21wYXRpYmxlXG4gKiAoZS5nLiB0aGUgUmVzdGF0ZSBlbnZpcm9ubWVudHMgaXQgbmVlZHMgdG8gY29tbXVuaWNhdGUgd2l0aCBmb3IgZGVwbG95bWVudCBhcmUgYWxsIGFjY2Vzc2libGUgdmlhIHRoZSBzYW1lIFZQQyBhbmRcbiAqIFNlY3VyaXR5IEdyb3VwcykuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlRGVwbG95ZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKiogVGhlIGN1c3RvbSByZXNvdXJjZSBwcm92aWRlciBmb3IgaGFuZGxpbmcgXCJkZXBsb3ltZW50XCIgcmVzb3VyY2VzLiAqL1xuICByZWFkb25seSBkZXBsb3ltZW50UmVzb3VyY2VQcm92aWRlcjogY3IuUHJvdmlkZXI7XG5cbiAgcHJpdmF0ZSBpbnZvY2F0aW9uUG9saWN5PzogaWFtLlBvbGljeTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogQWxsb3dzIHRoZSBjdXN0b20gcmVzb3VyY2UgZXZlbnQgaGFuZGxlciBwcm9wZXJ0aWVzIHRvIGJlIG92ZXJyaWRkZW4uIFRoZSBtYWluIHVzZSBjYXNlIGZvciB0aGlzIGlzIHNwZWNpZnlpbmdcbiAgICAgKiBWUEMgYW5kIHNlY3VyaXR5IGdyb3VwIHNldHRpbmdzIGZvciBSZXN0YXRlIGVudmlyb25tZW50cyB0aGF0IHJlcXVpcmUgaXQuXG4gICAgICovXG4gICAgcHJvcHM/OiBQaWNrPFxuICAgICAgbGFtYmRhLkZ1bmN0aW9uT3B0aW9ucyxcbiAgICAgIFwiZnVuY3Rpb25OYW1lXCIgfCBcImxvZ0dyb3VwXCIgfCBcInRpbWVvdXRcIiB8IFwidnBjXCIgfCBcInZwY1N1Ym5ldHNcIiB8IFwic2VjdXJpdHlHcm91cHNcIlxuICAgID4gJlxuICAgICAgUGljazxOb2RlanNGdW5jdGlvblByb3BzLCBcImVudHJ5XCI+LFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgZXZlbnRIYW5kbGVyID0gbmV3IGxhbWJkYV9ub2RlLk5vZGVqc0Z1bmN0aW9uKHRoaXMsIFwiRXZlbnRIYW5kbGVyXCIsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogcHJvcHM/LmZ1bmN0aW9uTmFtZSxcbiAgICAgIGxvZ0dyb3VwOiBwcm9wcz8ubG9nR3JvdXAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJSZXN0YXRlIGN1c3RvbSByZWdpc3RyYXRpb24gaGFuZGxlclwiLFxuICAgICAgZW50cnk6IHByb3BzPy5lbnRyeSA/PyBwYXRoLmpvaW4oX19kaXJuYW1lLCBcInJlZ2lzdGVyLXNlcnZpY2UtaGFuZGxlci9pbmRleC5qc1wiKSxcbiAgICAgIGFyY2hpdGVjdHVyZTogbGFtYmRhLkFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfTEFURVNULFxuICAgICAgbWVtb3J5U2l6ZTogMTI4LFxuICAgICAgdGltZW91dDogcHJvcHM/LnRpbWVvdXQgPz8gREVGQVVMVF9USU1FT1VULFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgTk9ERV9PUFRJT05TOiBcIi0tZW5hYmxlLXNvdXJjZS1tYXBzXCIsXG4gICAgICB9LFxuICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgbWluaWZ5OiBmYWxzZSxcbiAgICAgICAgc291cmNlTWFwOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIC4uLihwcm9wcz8udnBjXG4gICAgICAgID8gKHtcbiAgICAgICAgICAgIHZwYzogcHJvcHM/LnZwYyxcbiAgICAgICAgICAgIHZwY1N1Ym5ldHM6IHByb3BzPy52cGNTdWJuZXRzLFxuICAgICAgICAgICAgc2VjdXJpdHlHcm91cHM6IHByb3BzPy5zZWN1cml0eUdyb3VwcyxcbiAgICAgICAgICB9IHNhdGlzZmllcyBQaWNrPGxhbWJkYS5GdW5jdGlvbk9wdGlvbnMsIFwidnBjXCIgfCBcInZwY1N1Ym5ldHNcIiB8IFwic2VjdXJpdHlHcm91cHNcIj4pXG4gICAgICAgIDoge30pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kZXBsb3ltZW50UmVzb3VyY2VQcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCBcIkN1c3RvbVJlc291cmNlUHJvdmlkZXJcIiwgeyBvbkV2ZW50SGFuZGxlcjogZXZlbnRIYW5kbGVyIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcGxveSBhIExhbWJkYS1iYWNrZWQgUmVzdGF0ZSBzZXJ2aWNlIHRvIGEgZ2l2ZW4gZW52aXJvbm1lbnQuIFRoaXMgd2lsbCByZWdpc3RlciBhIGRlcGxveW1lbnQgdGhhdCB3aWxsIHRyaWdnZXJcbiAgICogYSBSZXN0YXRlIHJlZ2lzdHJhdGlvbiB3aGVuZXZlciB0aGUgaGFuZGxlciByZXNvdXJjZSBjaGFuZ2VzLlxuICAgKlxuICAgKiBAcGFyYW0gc2VydmljZU5hbWUgdGhlIHNlcnZpY2UgbmFtZSB3aXRoaW4gUmVzdGF0ZSAtIHRoaXMgbXVzdCBtYXRjaCB0aGUgc2VydmljZSdzIHNlbGYtcmVwb3J0ZWQgbmFtZSBkdXJpbmcgZGlzY292ZXJ5XG4gICAqIEBwYXJhbSBoYW5kbGVyIHNlcnZpY2UgaGFuZGxlciAtIG11c3QgYmUgYSBzcGVjaWZpYyBmdW5jdGlvbiB2ZXJzaW9uLCB1c2UgXCJsYXRlc3RcIiBpZiB5b3UgZG9uJ3QgY2FyZSBhYm91dCBleHBsaWNpdCB2ZXJzaW9uaW5nXG4gICAqIEBwYXJhbSBlbnZpcm9ubWVudCB0YXJnZXQgUmVzdGF0ZSBlbnZpcm9ubWVudFxuICAgKiBAcGFyYW0gb3B0aW9ucyBhZGRpdGlvbmFsIG9wdGlvbnM7IHNlZSBmaWVsZCBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzXG4gICAqL1xuICBkZXBsb3lTZXJ2aWNlKFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgaGFuZGxlcjogbGFtYmRhLklWZXJzaW9uLFxuICAgIGVudmlyb25tZW50OiBJUmVzdGF0ZUVudmlyb25tZW50LFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICAvKipcbiAgICAgICAqIFNTTSBzZWNyZXQgQVJOIGZvciB0aGUgYXV0aGVudGljYXRpb24gdG9rZW4gdG8gdXNlIHdpdGggdGhlIGFkbWluIEFQSS4gVGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBlbnZpcm9ubWVudCdzXG4gICAgICAgKiB0b2tlbiwgaWYgaXQgaXMgc2V0LlxuICAgICAgICovXG4gICAgICBhdXRoVG9rZW4/OiBzc20uSVNlY3JldDtcbiAgICAgIC8qKlxuICAgICAgICogV2hldGhlciB0byBza2lwIGdyYW50aW5nIHRoZSBpbnZva2VyIHJvbGUgcGVybWlzc2lvbiB0byBpbnZva2UgdGhlIHNlcnZpY2UgaGFuZGxlci5cbiAgICAgICAqL1xuICAgICAgc2tpcEludm9rZUZ1bmN0aW9uR3JhbnQ/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBXaGV0aGVyIHRvIG1hcmsgdGhlIHNlcnZpY2UgYXMgcHJpdmF0ZSwgYW5kIG1ha2UgaXQgdW5hdmFpbGFibGUgdG8gYmUgY2FsbGVkIHZpYSBSZXN0YXRlIGluZ3Jlc3MuXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5yZXN0YXRlLmRldi9vcGVyYXRlL3JlZ2lzdHJhdGlvbiNwcml2YXRlLXNlcnZpY2VzXG4gICAgICAgKi9cbiAgICAgIHByaXZhdGU/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBBIGR1bW15IHBhcmFtZXRlciB0byBmb3JjZSBDbG91ZEZvcm1hdGlvbiB0byB1cGRhdGUgdGhlIGRlcGxveW1lbnQgd2hlbiB0aGUgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBVc2VmdWwgaWZcbiAgICAgICAqIHlvdSB3YW50IHRvIHRhcmdldCB0aGUgXCJsYXRlc3QgdmVyc2lvblwiIG9mIGEgc2VydmljZSBoYW5kbGVyIGFuZCBuZWVkIHRvIGZvcmNlIGEgZGVwbG95bWVudCBpbiBvcmRlciB0byB0cmlnZ2VyXG4gICAgICAgKiBkaXNjb3ZlcnkuXG4gICAgICAgKi9cbiAgICAgIGNvbmZpZ3VyYXRpb25WZXJzaW9uPzogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBXaGV0aGVyIHRvIGFjY2VwdCBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZXMuXG4gICAgICAgKi9cbiAgICAgIGluc2VjdXJlPzogYm9vbGVhbjtcbiAgICB9LFxuICApIHtcbiAgICBjb25zdCBhdXRoVG9rZW4gPSBvcHRpb25zPy5hdXRoVG9rZW4gPz8gZW52aXJvbm1lbnQuYXV0aFRva2VuO1xuICAgIGF1dGhUb2tlbj8uZ3JhbnRSZWFkKHRoaXMuZGVwbG95bWVudFJlc291cmNlUHJvdmlkZXIub25FdmVudEhhbmRsZXIpO1xuXG4gICAgY29uc3QgZGVwbG95bWVudCA9IG5ldyBjZGsuQ3VzdG9tUmVzb3VyY2UoaGFuZGxlciwgXCJSZXN0YXRlRGVwbG95bWVudFwiLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHRoaXMuZGVwbG95bWVudFJlc291cmNlUHJvdmlkZXIuc2VydmljZVRva2VuLFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6UmVzdGF0ZVNlcnZpY2VEZXBsb3ltZW50XCIsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHNlcnZpY2VQYXRoOiBzZXJ2aWNlTmFtZSxcbiAgICAgICAgYWRtaW5Vcmw6IGVudmlyb25tZW50LmFkbWluVXJsLFxuICAgICAgICBhdXRoVG9rZW5TZWNyZXRBcm46IGF1dGhUb2tlbj8uc2VjcmV0QXJuLFxuICAgICAgICBzZXJ2aWNlTGFtYmRhQXJuOiBoYW5kbGVyLmZ1bmN0aW9uQXJuLFxuICAgICAgICBpbnZva2VSb2xlQXJuOiBlbnZpcm9ubWVudC5pbnZva2VyUm9sZT8ucm9sZUFybixcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogY2RrLlJlbW92YWxQb2xpY3kuUkVUQUlOLFxuICAgICAgICBwcml2YXRlOiAob3B0aW9ucz8ucHJpdmF0ZSA/PyBmYWxzZSkudG9TdHJpbmcoKSBhcyBcInRydWVcIiB8IFwiZmFsc2VcIixcbiAgICAgICAgY29uZmlndXJhdGlvblZlcnNpb246IG9wdGlvbnM/LmNvbmZpZ3VyYXRpb25WZXJzaW9uLFxuICAgICAgICBpbnNlY3VyZTogKG9wdGlvbnM/Lmluc2VjdXJlID8/IGZhbHNlKS50b1N0cmluZygpIGFzIFwidHJ1ZVwiIHwgXCJmYWxzZVwiLFxuICAgICAgfSBzYXRpc2ZpZXMgUmVnaXN0cmF0aW9uUHJvcGVydGllcyxcbiAgICB9KTtcblxuICAgIGlmIChlbnZpcm9ubWVudC5pbnZva2VyUm9sZSAmJiAhb3B0aW9ucz8uc2tpcEludm9rZUZ1bmN0aW9uR3JhbnQpIHtcbiAgICAgIC8vIFdlIGNyZWF0ZSBhIHNlcGFyYXRlIHBvbGljeSB3aGljaCB3ZSdsbCBhdHRhY2ggdG8gdGhlIHByb3ZpZGVkIGludm9rZXIgcm9sZS4gVGhpcyBicmVha3MgYSBjaXJjdWxhciBjcm9zcy1zdGFja1xuICAgICAgLy8gZGVwZW5kZW5jeSB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBjcmVhdGVkIGJldHdlZW4gdGhlIHNlcnZpY2UgZGVwbG95ZXIgYW5kIHRoZSBpbnZva2VyIHJvbGUuXG4gICAgICBpZiAoIXRoaXMuaW52b2NhdGlvblBvbGljeSkge1xuICAgICAgICB0aGlzLmludm9jYXRpb25Qb2xpY3kgPSBuZXcgaWFtLlBvbGljeSh0aGlzLCBcIkludm9jYXRpb25Qb2xpY3lcIik7XG4gICAgICAgIC8vIERlc3BpdGUgdGhlIEFSTiByZWZlcmVuY2UgYWJvdmUsIENsb3VkRm9ybWF0aW9uIHNvbWV0aW1lcyB0cmllcyB0byBpbnZva2UgdGhlIGN1c3RvbSByZXNvdXJjZSBoYW5kbGVyIGJlZm9yZVxuICAgICAgICAvLyBhbGwgcGVybWlzc2lvbnMgYXJlIGFwcGxpZWQuIEFkZGluZyBhbiBleHBsaWNpdCBkZXBlbmRlbmN5IGluY2x1ZGVzIGEgZGVwZW5kZW5jeSBvbiBhbnkgcGVuZGluZyBwb2xpY3kgdXBkYXRlc1xuICAgICAgICAvLyBkZWZpbmVkIGluIHRoZSBzYW1lIHN0YWNrIGFzIHRoZSBzZXJ2aWNlIGRlcGxveWVyLCB3aGljaCBzZWVtcyB0byBoZWxwLiBTb21lIHByb3BhZ2F0aW9uIGRlbGF5IG1pZ2h0IHN0aWxsIG1lYW5cbiAgICAgICAgLy8gd2UgbGVhbiBvbiByZXRyaWVzIGluIHRoZSBkZXBsb3llciBldmVudCBoYW5kbGVyIGluIGFueSBldmVudCBidXQgdGhpcyByZWR1Y2VzIHRoZSBwcm9iYWJpbGl0eSBvZiBmYWlsdXJlLlxuICAgICAgICBkZXBsb3ltZW50Lm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLmludm9jYXRpb25Qb2xpY3kpO1xuICAgICAgICB0aGlzLmludm9jYXRpb25Qb2xpY3kuYXR0YWNoVG9Sb2xlKGVudmlyb25tZW50Lmludm9rZXJSb2xlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW52b2NhdGlvblBvbGljeS5hZGRTdGF0ZW1lbnRzKFxuICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1wibGFtYmRhOkludm9rZUZ1bmN0aW9uXCJdLFxuICAgICAgICAgIHJlc291cmNlczogaGFuZGxlci5sYW1iZGEucmVzb3VyY2VBcm5zRm9yR3JhbnRJbnZva2UsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -26,10 +26,10 @@ export interface SingleNodeRestateProps {
26
26
  removalPolicy?: cdk.RemovalPolicy;
27
27
  }
28
28
  /**
29
- * Creates a Restate service deployment backed by a single EC2 instance,
30
- * suitable for development and testing purposes. The instance will be created
31
- * in a dedicated VPC (unless one is provided). EC2 instance will be allocated
32
- * a public IP address.
29
+ * Creates a Restate service deployment backed by a single EC2 instance, and is suitable for
30
+ * development and testing purposes.
31
+ * The EC2 instance will be created in the default VPC unless otherwise specified.
32
+ * The instance will be assigned a public IP address.
33
33
  */
34
34
  export declare class SingleNodeRestateDeployment extends Construct implements IRestateEnvironment {
35
35
  readonly instance: ec2.Instance;
@@ -49,10 +49,10 @@ const RESTATE_IMAGE_DEFAULT = "docker.io/restatedev/restate";
49
49
  const RESTATE_DOCKER_DEFAULT_TAG = "latest";
50
50
  const ADOT_DOCKER_DEFAULT_TAG = "latest";
51
51
  /**
52
- * Creates a Restate service deployment backed by a single EC2 instance,
53
- * suitable for development and testing purposes. The instance will be created
54
- * in a dedicated VPC (unless one is provided). EC2 instance will be allocated
55
- * a public IP address.
52
+ * Creates a Restate service deployment backed by a single EC2 instance, and is suitable for
53
+ * development and testing purposes.
54
+ * The EC2 instance will be created in the default VPC unless otherwise specified.
55
+ * The instance will be assigned a public IP address.
56
56
  */
57
57
  class SingleNodeRestateDeployment extends constructs_1.Construct {
58
58
  constructor(scope, id, props) {
@@ -155,4 +155,4 @@ const NGINX_REVERSE_PROXY_CONFIG = [
155
155
  " }",
156
156
  "}",
157
157
  ].join("\n");
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLW5vZGUtcmVzdGF0ZS1kZXBsb3ltZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL3Jlc3RhdGUtY29uc3RydWN0cy9zaW5nbGUtbm9kZS1yZXN0YXRlLWRlcGxveW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7R0FTRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCwyQ0FBdUM7QUFDdkMsMkRBQTZDO0FBQzdDLG1EQUFxRDtBQUNyRCx5REFBMkM7QUFDM0MseURBQTJDO0FBRTNDLDZEQUFtRDtBQUVuRCw2Q0FBNEM7QUFFNUMsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFDaEMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDL0IsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7QUFDbEMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDaEMsTUFBTSxxQkFBcUIsR0FBRyw4QkFBOEIsQ0FBQztBQUM3RCxNQUFNLDBCQUEwQixHQUFHLFFBQVEsQ0FBQztBQUM1QyxNQUFNLHVCQUF1QixHQUFHLFFBQVEsQ0FBQztBQThCekM7Ozs7O0dBS0c7QUFDSCxNQUFhLDJCQUE0QixTQUFRLHNCQUFTO0lBUXhELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNkI7UUFDckUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTdFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDcEQsU0FBUyxFQUFFLElBQUksR0FBRyxDQUFDLGdCQUFnQixD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QixFQUFFO0lBQ0YsOERBQThEO0lBQzlELGtFQUFrRTtJQUNsRSxvQ0FBb0M7SUFDcEMsNEJBQTRCO0lBQzVCLCtCQUErQjtJQUMvQixpQ0FBaUM7SUFDakMsRUFBRTtJQUNGLGdCQUFnQjtJQUNoQixtQ0FBbUMsa0JBQWtCLEdBQUc7SUFDeEQsS0FBSztJQUNMLEdBQUc7Q0FDSixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjMgLSBSZXN0YXRlIFNvZnR3YXJlLCBJbmMuLCBSZXN0YXRlIEdtYkhcbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUmVzdGF0ZSBTREsgZm9yIE5vZGUuanMvVHlwZVNjcmlwdCxcbiAqIHdoaWNoIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqXG4gKiBZb3UgY2FuIGZpbmQgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGluIGZpbGUgTElDRU5TRSBpbiB0aGUgcm9vdFxuICogZGlyZWN0b3J5IG9mIHRoaXMgcmVwb3NpdG9yeSBvciBwYWNrYWdlLCBvciBhdFxuICogaHR0cHM6Ly9naXRodWIuY29tL3Jlc3RhdGVkZXYvc2RrLXR5cGVzY3JpcHQvYmxvYi9tYWluL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCB7IFJldGVudGlvbkRheXMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBJUmVzdGF0ZUVudmlyb25tZW50IH0gZnJvbSBcIi4vcmVzdGF0ZS1lbnZpcm9ubWVudFwiO1xuaW1wb3J0IHsgVHJhY2luZ01vZGUgfSBmcm9tIFwiLi9kZXBsb3ltZW50cy1jb21tb25cIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuY29uc3QgUFVCTElDX0lOR1JFU1NfUE9SVCA9IDQ0MztcbmNvbnN0IFBVQkxJQ19BRE1JTl9QT1JUID0gOTA3MztcbmNvbnN0IFJFU1RBVEVfSU5HUkVTU19QT1JUID0gODA4MDtcbmNvbnN0IFJFU1RBVEVfQURNSU5fUE9SVCA9IDkwNzA7XG5jb25zdCBSRVNUQVRFX0lNQUdFX0RFRkFVTFQgPSBcImRvY2tlci5pby9yZXN0YXRlZGV2L3Jlc3RhdGVcIjtcbmNvbnN0IFJFU1RBVEVfRE9DS0VSX0RFRkFVTFRfVEFHID0gXCJsYXRlc3RcIjtcbmNvbnN0IEFET1RfRE9DS0VSX0RFRkFVTFRfVEFHID0gXCJsYXRlc3RcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTaW5nbGVOb2RlUmVzdGF0ZVByb3BzIHtcbiAgLyoqIFRoZSBWUEMgaW4gd2hpY2ggdG8gbGF1bmNoIHRoZSBSZXN0YXRlIGhvc3QuICovXG4gIHZwYz86IGVjMi5JVnBjO1xuXG4gIC8qKiBMb2cgZ3JvdXAgZm9yIFJlc3RhdGUgc2VydmljZSBsb2dzLiAqL1xuICBsb2dHcm91cD86IGxvZ3MuTG9nR3JvdXA7XG5cbiAgLyoqIFRyYWNpbmcgbW9kZSBmb3IgUmVzdGF0ZSBzZXJ2aWNlcy4gRGVmYXVsdHMgdG8ge0BsaW5rIFRyYWNpbmdNb2RlLkRJU0FCTEVEfS4gKi9cbiAgdHJhY2luZz86IFRyYWNpbmdNb2RlO1xuXG4gIC8qKiBQcmVmaXggZm9yIHJlc291cmNlcyBjcmVhdGVkIGJ5IHRoaXMgY29uc3RydWN0IHRoYXQgcmVxdWlyZSB1bmlxdWUgbmFtZXMuICovXG4gIHByZWZpeD86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgbmFtZS4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIHJlc3RhdGVJbWFnZT86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgdGFnLiBEZWZhdWx0cyB0byBgbGF0ZXN0YC4gKi9cbiAgcmVzdGF0ZVRhZz86IHN0cmluZztcblxuICAvKiogQW1hem9uIERpc3RybyBmb3IgT3BlbiBUZWxlbWV0cnkgRG9ja2VyIGltYWdlIHRhZy4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIGFkb3RUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlbW92YWwgcG9saWN5IGZvciBsb25nLWxpdmVkIHJlc291cmNlcyAoc3RvcmFnZSwgbG9ncykuIERlZmF1bHQ6IGBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZYC5cbiAgICovXG4gIHJlbW92YWxQb2xpY3k/OiBjZGsuUmVtb3ZhbFBvbGljeTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgUmVzdGF0ZSBzZXJ2aWNlIGRlcGxveW1lbnQgYmFja2VkIGJ5IGEgc2luZ2xlIEVDMiBpbnN0YW5jZSxcbiAqIHN1aXRhYmxlIGZvciBkZXZlbG9wbWVudCBhbmQgdGVzdGluZyBwdXJwb3Nlcy4gVGhlIGluc3RhbmNlIHdpbGwgYmUgY3JlYXRlZFxuICogaW4gYSBkZWRpY2F0ZWQgVlBDICh1bmxlc3Mgb25lIGlzIHByb3ZpZGVkKS4gRUMyIGluc3RhbmNlIHdpbGwgYmUgYWxsb2NhdGVkXG4gKiBhIHB1YmxpYyBJUCBhZGRyZXNzLlxuICovXG5leHBvcnQgY2xhc3MgU2luZ2xlTm9kZVJlc3RhdGVEZXBsb3ltZW50IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVJlc3RhdGVFbnZpcm9ubWVudCB7XG4gIHJlYWRvbmx5IGluc3RhbmNlOiBlYzIuSW5zdGFuY2U7XG4gIHJlYWRvbmx5IGludm9rZXJSb2xlOiBpYW0uSVJvbGU7XG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG5cbiAgcmVhZG9ubHkgaW5ncmVzc1VybDogc3RyaW5nO1xuICByZWFkb25seSBhZG1pblVybDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTaW5nbGVOb2RlUmVzdGF0ZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMudnBjID0gcHJvcHMudnBjID8/IGVjMi5WcGMuZnJvbUxvb2t1cCh0aGlzLCBcIlZwY1wiLCB7IGlzRGVmYXVsdDogdHJ1ZSB9KTtcblxuICAgIHRoaXMuaW52b2tlclJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgXCJJbnN0YW5jZVJvbGVcIiwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoXCJlYzIuYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcIkFtYXpvblNTTU1hbmFnZWRJbnN0YW5jZUNvcmVcIildLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbG9nR3JvdXAgPVxuICAgICAgcHJvcHMubG9nR3JvdXAgPz9cbiAgICAgIG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsIFwiTG9nc1wiLCB7XG4gICAgICAgIGxvZ0dyb3VwTmFtZTogYC9yZXN0YXRlLyR7aWR9YCxcbiAgICAgICAgcmV0ZW50aW9uOiBSZXRlbnRpb25EYXlzLk9ORV9NT05USCxcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeSA/PyBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICB9KTtcbiAgICBsb2dHcm91cC5ncmFudFdyaXRlKHRoaXMuaW52b2tlclJvbGUpO1xuXG4gICAgY29uc3QgcmVzdGF0ZUltYWdlID0gcHJvcHMucmVzdGF0ZUltYWdlID8/IFJFU1RBVEVfSU1BR0VfREVGQVVMVDtcbiAgICBjb25zdCByZXN0YXRlVGFnID0gcHJvcHMucmVzdGF0ZVRhZyA/PyBSRVNUQVRFX0RPQ0tFUl9ERUZBVUxUX1RBRztcbiAgICBjb25zdCBhZG90VGFnID0gcHJvcHMuYWRvdFRhZyA/PyBBRE9UX0RPQ0tFUl9ERUZBVUxUX1RBRztcbiAgICBjb25zdCByZXN0YXRlSW5pdENvbW1hbmRzID0gZWMyLlVzZXJEYXRhLmZvckxpbnV4KCk7XG4gICAgcmVzdGF0ZUluaXRDb21tYW5kcy5hZGRDb21tYW5kcyhcbiAgICAgIFwieXVtIHVwZGF0ZSAteVwiLFxuICAgICAgXCJ5dW0gaW5zdGFsbCAteSBkb2NrZXIgbmdpbnhcIixcblxuICAgICAgXCJzeXN0ZW1jdGwgZW5hYmxlIGRvY2tlci5zZXJ2aWNlXCIsXG4gICAgICBcInN5c3RlbWN0bCBzdGFydCBkb2NrZXIuc2VydmljZVwiLFxuICAgICAgW1xuICAgICAgICBcImRvY2tlciBydW4gLS1uYW1lIGFkb3QgLS1yZXN0YXJ0IHVubGVzcy1zdG9wcGVkIC0tZGV0YWNoXCIsXG4gICAgICAgIFwiIC1wIDQzMTc6NDMxNyAtcCA1NTY4MDo1NTY4MCAtcCA4ODg5Ojg4ODhcIixcbiAgICAgICAgYCBwdWJsaWMuZWNyLmF3cy9hd3Mtb2JzZXJ2YWJpbGl0eS9hd3Mtb3RlbC1jb2xsZWN0b3I6JHthZG90VGFnfWAsXG4gICAgICBdLmpvaW4oXCJcIiksXG4gICAgICBbXG4gICAgICAgIFwiZG9ja2VyIHJ1biAtLW5hbWUgcmVzdGF0ZSAtLXJlc3RhcnQgdW5sZXNzLXN0b3BwZWQgLS1kZXRhY2hcIixcbiAgICAgICAgXCIgLS12b2x1bWUgL3Zhci9yZXN0YXRlOi90YXJnZXQgLS1uZXR3b3JrPWhvc3RcIixcbiAgICAgICAgXCIgLWUgUkVTVEFURV9PQlNFUlZBQklMSVRZX19MT0dfX0ZPUk1BVD1Kc29uIC1lIFJVU1RfTE9HPWluZm8scmVzdGF0ZV93b3JrZXI6OnBhcnRpdGlvbj13YXJuXCIsXG4gICAgICAgIFwiIC1lIFJFU1RBVEVfT0JTRVJWQUJJTElUWV9fVFJBQ0lOR19fRU5EUE9JTlQ9aHR0cDovL2xvY2FsaG9zdDo0MzE3XCIsXG4gICAgICAgIGAgLS1sb2ctZHJpdmVyPWF3c2xvZ3MgLS1sb2ctb3B0IGF3c2xvZ3MtZ3JvdXA9JHtsb2dHcm91cC5sb2dHcm91cE5hbWV9YCxcbiAgICAgICAgYCAke3Jlc3RhdGVJbWFnZX06JHtyZXN0YXRlVGFnfWAsXG4gICAgICBdLmpvaW4oXCJcIiksXG5cbiAgICAgIFwibWtkaXIgLXAgL2V0Yy9wa2kvcHJpdmF0ZVwiLFxuICAgICAgW1xuICAgICAgICBcIm9wZW5zc2wgcmVxIC1uZXcgLXg1MDkgLW5vZGVzIC1zaGEyNTYgLWRheXMgMzY1IC1leHRlbnNpb25zIHYzX2NhXCIsXG4gICAgICAgIFwiIC1zdWJqICcvQz1ERS9TVD1CZXJsaW4vTD1CZXJsaW4vTz1yZXN0YXRlLmRldi9PVT1kZW1vL0NOPXJlc3RhdGUuZXhhbXBsZS5jb20nXCIsXG4gICAgICAgIFwiIC1uZXdrZXkgcnNhOjIwNDggLWtleW91dCAvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5rZXkgLW91dCAvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5jcnRcIixcbiAgICAgIF0uam9pbihcIlwiKSxcbiAgICAgIFtcImNhdCA8PCBFT0YgPiAvZXRjL25naW54L2NvbmYuZC9yZXN0YXRlLWluZ3Jlc3MuY29uZlwiLCBOR0lOWF9SRVZFUlNFX1BST1hZX0NPTkZJRywgXCJFT0ZcIl0uam9pbihcIlxcblwiKSxcbiAgICAgIFwic3lzdGVtY3RsIGVuYWJsZSBuZ2lueFwiLFxuICAgICAgXCJzeXN0ZW1jdGwgc3RhcnQgbmdpbnhcIixcbiAgICApO1xuXG4gICAgY29uc3QgcmVzdGF0ZUluc3RhbmNlID0gbmV3IGVjMi5JbnN0YW5jZSh0aGlzLCBcIkhvc3RcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIHZwY1N1Ym5ldHM6IHsgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFVCTElDIH0sXG4gICAgICBpbnN0YW5jZVR5cGU6IG5ldyBlYzIuSW5zdGFuY2VUeXBlKFwidDRnLm1pY3JvXCIpLFxuICAgICAgbWFjaGluZUltYWdlOiBlYzIuTWFjaGluZUltYWdlLmxhdGVzdEFtYXpvbkxpbnV4MjAyMyh7XG4gICAgICAgIGNwdVR5cGU6IGVjMi5BbWF6b25MaW51eENwdVR5cGUuQVJNXzY0LFxuICAgICAgfSksXG4gICAgICByb2xlOiB0aGlzLmludm9rZXJSb2xlLFxuICAgICAgdXNlckRhdGE6IHJlc3RhdGVJbml0Q29tbWFuZHMsXG4gICAgfSk7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHJlc3RhdGVJbnN0YW5jZTtcblxuICAgIC8vIFdlIHN0YXJ0IHRoZSBBRE9UIGNvbGxlY3RvciByZWdhcmRsZXNzLCBhbmQgb25seSBjb250cm9sIHdoZXRoZXIgdGhleSB3aWxsIGJlIHB1Ymxpc2hlZCB0byBYLVJheSB2aWEgaW5zdGFuY2VcbiAgICAvLyByb2xlIHBlcm1pc3Npb25zLiBUaGlzIHdheSBoaXN0b3JpYyB0cmFjZXMgd2lsbCBiZSBidWZmZXJlZCBvbiB0aGUgaG9zdCwgZXZlbiBpZiB0cmFjaW5nIGlzIGRpc2FibGVkIGluaXRpYWxseS5cbiAgICBpZiAocHJvcHMudHJhY2luZyA9PT0gVHJhY2luZ01vZGUuQVdTX1hSQVkpIHtcbiAgICAgIHJlc3RhdGVJbnN0YW5jZS5yb2xlLmFkZE1hbmFnZWRQb2xpY3koaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFwiQVdTWHJheVdyaXRlT25seUFjY2Vzc1wiKSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdGF0ZUluc3RhbmNlU2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBcIlJlc3RhdGVTZWN1cml0eUdyb3VwXCIsIHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICBzZWN1cml0eUdyb3VwTmFtZTogXCJSZXN0YXRlU2VjdXJpdHlHcm91cFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUmVzdGF0ZSBzZXJ2aWNlIEFDTHNcIixcbiAgICB9KTtcbiAgICByZXN0YXRlSW5zdGFuY2UuYWRkU2VjdXJpdHlHcm91cChyZXN0YXRlSW5zdGFuY2VTZWN1cml0eUdyb3VwKTtcblxuICAgIHJlc3RhdGVJbnN0YW5jZVNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoXG4gICAgICBlYzIuUGVlci5hbnlJcHY0KCksXG4gICAgICBlYzIuUG9ydC50Y3AoNDQzKSxcbiAgICAgIFwiQWxsb3cgdHJhZmZpYyBmcm9tIGFueXdoZXJlIHRvIFJlc3RhdGUgaW5ncmVzcyBwb3J0XCIsXG4gICAgKTtcbiAgICByZXN0YXRlSW5zdGFuY2VTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgZWMyLlBlZXIuYW55SXB2NCgpLFxuICAgICAgZWMyLlBvcnQudGNwKDkwNzMpLFxuICAgICAgXCJBbGxvdyB0cmFmZmljIGZyb20gYW55d2hlcmUgdG8gUmVzdGF0ZSBhZG1pbiBwb3J0XCIsXG4gICAgKTtcblxuICAgIHRoaXMuaW5ncmVzc1VybCA9IGBodHRwczovLyR7cmVzdGF0ZUluc3RhbmNlLmluc3RhbmNlUHVibGljRG5zTmFtZX0ke1xuICAgICAgUFVCTElDX0lOR1JFU1NfUE9SVCA9PSA0NDMgPyBcIlwiIDogYDoke1BVQkxJQ19JTkdSRVNTX1BPUlR9YFxuICAgIH1gO1xuICAgIHRoaXMuYWRtaW5VcmwgPSBgaHR0cHM6Ly8ke3Jlc3RhdGVJbnN0YW5jZS5pbnN0YW5jZVB1YmxpY0Ruc05hbWV9OiR7UFVCTElDX0FETUlOX1BPUlR9YDtcbiAgfVxufVxuXG5jb25zdCBOR0lOWF9SRVZFUlNFX1BST1hZX0NPTkZJRyA9IFtcbiAgXCJzZXJ2ZXIge1wiLFxuICBcIiAgbGlzdGVuIDQ0MyBzc2wgaHR0cDI7XCIsXG4gIFwiICBsaXN0ZW4gWzo6XTo0NDMgc3NsIGh0dHAyO1wiLFxuICBcIiAgc2VydmVyX25hbWUgXztcIixcbiAgXCIgIHJvb3QgL3Vzci9zaGFyZS9uZ2lueC9odG1sO1wiLFxuICBcIlwiLFxuICAnICBzc2xfY2VydGlmaWNhdGUgXCIvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5jcnRcIjsnLFxuICAnICBzc2xfY2VydGlmaWNhdGVfa2V5IFwiL2V0Yy9wa2kvcHJpdmF0ZS9yZXN0YXRlLXNlbGZzaWduZWQua2V5XCI7JyxcbiAgXCIgIHNzbF9zZXNzaW9uX2NhY2hlIHNoYXJlZDpTU0w6MW07XCIsXG4gIFwiICBzc2xfc2Vzc2lvbl90aW1lb3V0IDEwbTtcIixcbiAgXCIgIHNzbF9jaXBoZXJzIFBST0ZJTEU9U1lTVEVNO1wiLFxuICBcIiAgc3NsX3ByZWZlcl9zZXJ2ZXJfY2lwaGVycyBvbjtcIixcbiAgXCJcIixcbiAgXCIgIGxvY2F0aW9uIC8ge1wiLFxuICBgICAgIHByb3h5X3Bhc3MgaHR0cDovL2xvY2FsaG9zdDoke1JFU1RBVEVfSU5HUkVTU19QT1JUfTtgLFxuICBcIiAgfVwiLFxuICBcIn1cIixcbiAgXCJcIixcbiAgXCJzZXJ2ZXIge1wiLFxuICBcIiAgbGlzdGVuIDkwNzMgc3NsIGh0dHAyO1wiLFxuICBcIiAgbGlzdGVuIFs6Ol06OTA3MyBzc2wgaHR0cDI7XCIsXG4gIFwiICBzZXJ2ZXJfbmFtZSBfO1wiLFxuICBcIiAgcm9vdCAvdXNyL3NoYXJlL25naW54L2h0bWw7XCIsXG4gIFwiXCIsXG4gICcgIHNzbF9jZXJ0aWZpY2F0ZSBcIi9ldGMvcGtpL3ByaXZhdGUvcmVzdGF0ZS1zZWxmc2lnbmVkLmNydFwiOycsXG4gICcgIHNzbF9jZXJ0aWZpY2F0ZV9rZXkgXCIvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5rZXlcIjsnLFxuICBcIiAgc3NsX3Nlc3Npb25fY2FjaGUgc2hhcmVkOlNTTDoxbTtcIixcbiAgXCIgIHNzbF9zZXNzaW9uX3RpbWVvdXQgMTBtO1wiLFxuICBcIiAgc3NsX2NpcGhlcnMgUFJPRklMRT1TWVNURU07XCIsXG4gIFwiICBzc2xfcHJlZmVyX3NlcnZlcl9jaXBoZXJzIG9uO1wiLFxuICBcIlwiLFxuICBcIiAgbG9jYXRpb24gLyB7XCIsXG4gIGAgICAgcHJveHlfcGFzcyBodHRwOi8vbG9jYWxob3N0OiR7UkVTVEFURV9BRE1JTl9QT1JUfTtgLFxuICBcIiAgfVwiLFxuICBcIn1cIixcbl0uam9pbihcIlxcblwiKTtcbiJdfQ==
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLW5vZGUtcmVzdGF0ZS1kZXBsb3ltZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL3Jlc3RhdGUtY29uc3RydWN0cy9zaW5nbGUtbm9kZS1yZXN0YXRlLWRlcGxveW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7R0FTRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCwyQ0FBdUM7QUFDdkMsMkRBQTZDO0FBQzdDLG1EQUFxRDtBQUNyRCx5REFBMkM7QUFDM0MseURBQTJDO0FBRTNDLDZEQUFtRDtBQUVuRCw2Q0FBNEM7QUFFNUMsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFDaEMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDL0IsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7QUFDbEMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDaEMsTUFBTSxxQkFBcUIsR0FBRyw4QkFBOEIsQ0FBQztBQUM3RCxNQUFNLDBCQUEwQixHQUFHLFFBQVEsQ0FBQztBQUM1QyxNQUFNLHVCQUF1QixHQUFHLFFBQVEsQ0FBQztBQThCekM7Ozs7O0dBS0c7QUFDSCxNQUFhLDJCQUE0QixTQUFRLHNCQUFTO0lBUXhELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNkI7UUFDckUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTdFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDcEQsU0FBUyxFQUFFLElBQUksR0FBRyxDQUFDLGdCQUFnQixD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QixFQUFFO0lBQ0YsOERBQThEO0lBQzlELGtFQUFrRTtJQUNsRSxvQ0FBb0M7SUFDcEMsNEJBQTRCO0lBQzVCLCtCQUErQjtJQUMvQixpQ0FBaUM7SUFDakMsRUFBRTtJQUNGLGdCQUFnQjtJQUNoQixtQ0FBbUMsa0JBQWtCLEdBQUc7SUFDeEQsS0FBSztJQUNMLEdBQUc7Q0FDSixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjMgLSBSZXN0YXRlIFNvZnR3YXJlLCBJbmMuLCBSZXN0YXRlIEdtYkhcbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUmVzdGF0ZSBTREsgZm9yIE5vZGUuanMvVHlwZVNjcmlwdCxcbiAqIHdoaWNoIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqXG4gKiBZb3UgY2FuIGZpbmQgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGluIGZpbGUgTElDRU5TRSBpbiB0aGUgcm9vdFxuICogZGlyZWN0b3J5IG9mIHRoaXMgcmVwb3NpdG9yeSBvciBwYWNrYWdlLCBvciBhdFxuICogaHR0cHM6Ly9naXRodWIuY29tL3Jlc3RhdGVkZXYvc2RrLXR5cGVzY3JpcHQvYmxvYi9tYWluL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCB7IFJldGVudGlvbkRheXMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBJUmVzdGF0ZUVudmlyb25tZW50IH0gZnJvbSBcIi4vcmVzdGF0ZS1lbnZpcm9ubWVudFwiO1xuaW1wb3J0IHsgVHJhY2luZ01vZGUgfSBmcm9tIFwiLi9kZXBsb3ltZW50cy1jb21tb25cIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuY29uc3QgUFVCTElDX0lOR1JFU1NfUE9SVCA9IDQ0MztcbmNvbnN0IFBVQkxJQ19BRE1JTl9QT1JUID0gOTA3MztcbmNvbnN0IFJFU1RBVEVfSU5HUkVTU19QT1JUID0gODA4MDtcbmNvbnN0IFJFU1RBVEVfQURNSU5fUE9SVCA9IDkwNzA7XG5jb25zdCBSRVNUQVRFX0lNQUdFX0RFRkFVTFQgPSBcImRvY2tlci5pby9yZXN0YXRlZGV2L3Jlc3RhdGVcIjtcbmNvbnN0IFJFU1RBVEVfRE9DS0VSX0RFRkFVTFRfVEFHID0gXCJsYXRlc3RcIjtcbmNvbnN0IEFET1RfRE9DS0VSX0RFRkFVTFRfVEFHID0gXCJsYXRlc3RcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTaW5nbGVOb2RlUmVzdGF0ZVByb3BzIHtcbiAgLyoqIFRoZSBWUEMgaW4gd2hpY2ggdG8gbGF1bmNoIHRoZSBSZXN0YXRlIGhvc3QuICovXG4gIHZwYz86IGVjMi5JVnBjO1xuXG4gIC8qKiBMb2cgZ3JvdXAgZm9yIFJlc3RhdGUgc2VydmljZSBsb2dzLiAqL1xuICBsb2dHcm91cD86IGxvZ3MuTG9nR3JvdXA7XG5cbiAgLyoqIFRyYWNpbmcgbW9kZSBmb3IgUmVzdGF0ZSBzZXJ2aWNlcy4gRGVmYXVsdHMgdG8ge0BsaW5rIFRyYWNpbmdNb2RlLkRJU0FCTEVEfS4gKi9cbiAgdHJhY2luZz86IFRyYWNpbmdNb2RlO1xuXG4gIC8qKiBQcmVmaXggZm9yIHJlc291cmNlcyBjcmVhdGVkIGJ5IHRoaXMgY29uc3RydWN0IHRoYXQgcmVxdWlyZSB1bmlxdWUgbmFtZXMuICovXG4gIHByZWZpeD86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgbmFtZS4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIHJlc3RhdGVJbWFnZT86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgdGFnLiBEZWZhdWx0cyB0byBgbGF0ZXN0YC4gKi9cbiAgcmVzdGF0ZVRhZz86IHN0cmluZztcblxuICAvKiogQW1hem9uIERpc3RybyBmb3IgT3BlbiBUZWxlbWV0cnkgRG9ja2VyIGltYWdlIHRhZy4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIGFkb3RUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlbW92YWwgcG9saWN5IGZvciBsb25nLWxpdmVkIHJlc291cmNlcyAoc3RvcmFnZSwgbG9ncykuIERlZmF1bHQ6IGBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZYC5cbiAgICovXG4gIHJlbW92YWxQb2xpY3k/OiBjZGsuUmVtb3ZhbFBvbGljeTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgUmVzdGF0ZSBzZXJ2aWNlIGRlcGxveW1lbnQgYmFja2VkIGJ5IGEgc2luZ2xlIEVDMiBpbnN0YW5jZSwgYW5kIGlzIHN1aXRhYmxlIGZvclxuICogZGV2ZWxvcG1lbnQgYW5kIHRlc3RpbmcgcHVycG9zZXMuXG4gKiBUaGUgRUMyIGluc3RhbmNlIHdpbGwgYmUgY3JlYXRlZCBpbiB0aGUgZGVmYXVsdCBWUEMgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuXG4gKiBUaGUgaW5zdGFuY2Ugd2lsbCBiZSBhc3NpZ25lZCBhIHB1YmxpYyBJUCBhZGRyZXNzLlxuICovXG5leHBvcnQgY2xhc3MgU2luZ2xlTm9kZVJlc3RhdGVEZXBsb3ltZW50IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVJlc3RhdGVFbnZpcm9ubWVudCB7XG4gIHJlYWRvbmx5IGluc3RhbmNlOiBlYzIuSW5zdGFuY2U7XG4gIHJlYWRvbmx5IGludm9rZXJSb2xlOiBpYW0uSVJvbGU7XG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG5cbiAgcmVhZG9ubHkgaW5ncmVzc1VybDogc3RyaW5nO1xuICByZWFkb25seSBhZG1pblVybDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTaW5nbGVOb2RlUmVzdGF0ZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMudnBjID0gcHJvcHMudnBjID8/IGVjMi5WcGMuZnJvbUxvb2t1cCh0aGlzLCBcIlZwY1wiLCB7IGlzRGVmYXVsdDogdHJ1ZSB9KTtcblxuICAgIHRoaXMuaW52b2tlclJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgXCJJbnN0YW5jZVJvbGVcIiwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoXCJlYzIuYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW2lhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcIkFtYXpvblNTTU1hbmFnZWRJbnN0YW5jZUNvcmVcIildLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbG9nR3JvdXAgPVxuICAgICAgcHJvcHMubG9nR3JvdXAgPz9cbiAgICAgIG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsIFwiTG9nc1wiLCB7XG4gICAgICAgIGxvZ0dyb3VwTmFtZTogYC9yZXN0YXRlLyR7aWR9YCxcbiAgICAgICAgcmV0ZW50aW9uOiBSZXRlbnRpb25EYXlzLk9ORV9NT05USCxcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeSA/PyBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICB9KTtcbiAgICBsb2dHcm91cC5ncmFudFdyaXRlKHRoaXMuaW52b2tlclJvbGUpO1xuXG4gICAgY29uc3QgcmVzdGF0ZUltYWdlID0gcHJvcHMucmVzdGF0ZUltYWdlID8/IFJFU1RBVEVfSU1BR0VfREVGQVVMVDtcbiAgICBjb25zdCByZXN0YXRlVGFnID0gcHJvcHMucmVzdGF0ZVRhZyA/PyBSRVNUQVRFX0RPQ0tFUl9ERUZBVUxUX1RBRztcbiAgICBjb25zdCBhZG90VGFnID0gcHJvcHMuYWRvdFRhZyA/PyBBRE9UX0RPQ0tFUl9ERUZBVUxUX1RBRztcbiAgICBjb25zdCByZXN0YXRlSW5pdENvbW1hbmRzID0gZWMyLlVzZXJEYXRhLmZvckxpbnV4KCk7XG4gICAgcmVzdGF0ZUluaXRDb21tYW5kcy5hZGRDb21tYW5kcyhcbiAgICAgIFwieXVtIHVwZGF0ZSAteVwiLFxuICAgICAgXCJ5dW0gaW5zdGFsbCAteSBkb2NrZXIgbmdpbnhcIixcblxuICAgICAgXCJzeXN0ZW1jdGwgZW5hYmxlIGRvY2tlci5zZXJ2aWNlXCIsXG4gICAgICBcInN5c3RlbWN0bCBzdGFydCBkb2NrZXIuc2VydmljZVwiLFxuICAgICAgW1xuICAgICAgICBcImRvY2tlciBydW4gLS1uYW1lIGFkb3QgLS1yZXN0YXJ0IHVubGVzcy1zdG9wcGVkIC0tZGV0YWNoXCIsXG4gICAgICAgIFwiIC1wIDQzMTc6NDMxNyAtcCA1NTY4MDo1NTY4MCAtcCA4ODg5Ojg4ODhcIixcbiAgICAgICAgYCBwdWJsaWMuZWNyLmF3cy9hd3Mtb2JzZXJ2YWJpbGl0eS9hd3Mtb3RlbC1jb2xsZWN0b3I6JHthZG90VGFnfWAsXG4gICAgICBdLmpvaW4oXCJcIiksXG4gICAgICBbXG4gICAgICAgIFwiZG9ja2VyIHJ1biAtLW5hbWUgcmVzdGF0ZSAtLXJlc3RhcnQgdW5sZXNzLXN0b3BwZWQgLS1kZXRhY2hcIixcbiAgICAgICAgXCIgLS12b2x1bWUgL3Zhci9yZXN0YXRlOi90YXJnZXQgLS1uZXR3b3JrPWhvc3RcIixcbiAgICAgICAgXCIgLWUgUkVTVEFURV9PQlNFUlZBQklMSVRZX19MT0dfX0ZPUk1BVD1Kc29uIC1lIFJVU1RfTE9HPWluZm8scmVzdGF0ZV93b3JrZXI6OnBhcnRpdGlvbj13YXJuXCIsXG4gICAgICAgIFwiIC1lIFJFU1RBVEVfT0JTRVJWQUJJTElUWV9fVFJBQ0lOR19fRU5EUE9JTlQ9aHR0cDovL2xvY2FsaG9zdDo0MzE3XCIsXG4gICAgICAgIGAgLS1sb2ctZHJpdmVyPWF3c2xvZ3MgLS1sb2ctb3B0IGF3c2xvZ3MtZ3JvdXA9JHtsb2dHcm91cC5sb2dHcm91cE5hbWV9YCxcbiAgICAgICAgYCAke3Jlc3RhdGVJbWFnZX06JHtyZXN0YXRlVGFnfWAsXG4gICAgICBdLmpvaW4oXCJcIiksXG5cbiAgICAgIFwibWtkaXIgLXAgL2V0Yy9wa2kvcHJpdmF0ZVwiLFxuICAgICAgW1xuICAgICAgICBcIm9wZW5zc2wgcmVxIC1uZXcgLXg1MDkgLW5vZGVzIC1zaGEyNTYgLWRheXMgMzY1IC1leHRlbnNpb25zIHYzX2NhXCIsXG4gICAgICAgIFwiIC1zdWJqICcvQz1ERS9TVD1CZXJsaW4vTD1CZXJsaW4vTz1yZXN0YXRlLmRldi9PVT1kZW1vL0NOPXJlc3RhdGUuZXhhbXBsZS5jb20nXCIsXG4gICAgICAgIFwiIC1uZXdrZXkgcnNhOjIwNDggLWtleW91dCAvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5rZXkgLW91dCAvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5jcnRcIixcbiAgICAgIF0uam9pbihcIlwiKSxcbiAgICAgIFtcImNhdCA8PCBFT0YgPiAvZXRjL25naW54L2NvbmYuZC9yZXN0YXRlLWluZ3Jlc3MuY29uZlwiLCBOR0lOWF9SRVZFUlNFX1BST1hZX0NPTkZJRywgXCJFT0ZcIl0uam9pbihcIlxcblwiKSxcbiAgICAgIFwic3lzdGVtY3RsIGVuYWJsZSBuZ2lueFwiLFxuICAgICAgXCJzeXN0ZW1jdGwgc3RhcnQgbmdpbnhcIixcbiAgICApO1xuXG4gICAgY29uc3QgcmVzdGF0ZUluc3RhbmNlID0gbmV3IGVjMi5JbnN0YW5jZSh0aGlzLCBcIkhvc3RcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIHZwY1N1Ym5ldHM6IHsgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFVCTElDIH0sXG4gICAgICBpbnN0YW5jZVR5cGU6IG5ldyBlYzIuSW5zdGFuY2VUeXBlKFwidDRnLm1pY3JvXCIpLFxuICAgICAgbWFjaGluZUltYWdlOiBlYzIuTWFjaGluZUltYWdlLmxhdGVzdEFtYXpvbkxpbnV4MjAyMyh7XG4gICAgICAgIGNwdVR5cGU6IGVjMi5BbWF6b25MaW51eENwdVR5cGUuQVJNXzY0LFxuICAgICAgfSksXG4gICAgICByb2xlOiB0aGlzLmludm9rZXJSb2xlLFxuICAgICAgdXNlckRhdGE6IHJlc3RhdGVJbml0Q29tbWFuZHMsXG4gICAgfSk7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHJlc3RhdGVJbnN0YW5jZTtcblxuICAgIC8vIFdlIHN0YXJ0IHRoZSBBRE9UIGNvbGxlY3RvciByZWdhcmRsZXNzLCBhbmQgb25seSBjb250cm9sIHdoZXRoZXIgdGhleSB3aWxsIGJlIHB1Ymxpc2hlZCB0byBYLVJheSB2aWEgaW5zdGFuY2VcbiAgICAvLyByb2xlIHBlcm1pc3Npb25zLiBUaGlzIHdheSBoaXN0b3JpYyB0cmFjZXMgd2lsbCBiZSBidWZmZXJlZCBvbiB0aGUgaG9zdCwgZXZlbiBpZiB0cmFjaW5nIGlzIGRpc2FibGVkIGluaXRpYWxseS5cbiAgICBpZiAocHJvcHMudHJhY2luZyA9PT0gVHJhY2luZ01vZGUuQVdTX1hSQVkpIHtcbiAgICAgIHJlc3RhdGVJbnN0YW5jZS5yb2xlLmFkZE1hbmFnZWRQb2xpY3koaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFwiQVdTWHJheVdyaXRlT25seUFjY2Vzc1wiKSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdGF0ZUluc3RhbmNlU2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBcIlJlc3RhdGVTZWN1cml0eUdyb3VwXCIsIHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICBzZWN1cml0eUdyb3VwTmFtZTogXCJSZXN0YXRlU2VjdXJpdHlHcm91cFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUmVzdGF0ZSBzZXJ2aWNlIEFDTHNcIixcbiAgICB9KTtcbiAgICByZXN0YXRlSW5zdGFuY2UuYWRkU2VjdXJpdHlHcm91cChyZXN0YXRlSW5zdGFuY2VTZWN1cml0eUdyb3VwKTtcblxuICAgIHJlc3RhdGVJbnN0YW5jZVNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoXG4gICAgICBlYzIuUGVlci5hbnlJcHY0KCksXG4gICAgICBlYzIuUG9ydC50Y3AoNDQzKSxcbiAgICAgIFwiQWxsb3cgdHJhZmZpYyBmcm9tIGFueXdoZXJlIHRvIFJlc3RhdGUgaW5ncmVzcyBwb3J0XCIsXG4gICAgKTtcbiAgICByZXN0YXRlSW5zdGFuY2VTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgZWMyLlBlZXIuYW55SXB2NCgpLFxuICAgICAgZWMyLlBvcnQudGNwKDkwNzMpLFxuICAgICAgXCJBbGxvdyB0cmFmZmljIGZyb20gYW55d2hlcmUgdG8gUmVzdGF0ZSBhZG1pbiBwb3J0XCIsXG4gICAgKTtcblxuICAgIHRoaXMuaW5ncmVzc1VybCA9IGBodHRwczovLyR7cmVzdGF0ZUluc3RhbmNlLmluc3RhbmNlUHVibGljRG5zTmFtZX0ke1xuICAgICAgUFVCTElDX0lOR1JFU1NfUE9SVCA9PSA0NDMgPyBcIlwiIDogYDoke1BVQkxJQ19JTkdSRVNTX1BPUlR9YFxuICAgIH1gO1xuICAgIHRoaXMuYWRtaW5VcmwgPSBgaHR0cHM6Ly8ke3Jlc3RhdGVJbnN0YW5jZS5pbnN0YW5jZVB1YmxpY0Ruc05hbWV9OiR7UFVCTElDX0FETUlOX1BPUlR9YDtcbiAgfVxufVxuXG5jb25zdCBOR0lOWF9SRVZFUlNFX1BST1hZX0NPTkZJRyA9IFtcbiAgXCJzZXJ2ZXIge1wiLFxuICBcIiAgbGlzdGVuIDQ0MyBzc2wgaHR0cDI7XCIsXG4gIFwiICBsaXN0ZW4gWzo6XTo0NDMgc3NsIGh0dHAyO1wiLFxuICBcIiAgc2VydmVyX25hbWUgXztcIixcbiAgXCIgIHJvb3QgL3Vzci9zaGFyZS9uZ2lueC9odG1sO1wiLFxuICBcIlwiLFxuICAnICBzc2xfY2VydGlmaWNhdGUgXCIvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5jcnRcIjsnLFxuICAnICBzc2xfY2VydGlmaWNhdGVfa2V5IFwiL2V0Yy9wa2kvcHJpdmF0ZS9yZXN0YXRlLXNlbGZzaWduZWQua2V5XCI7JyxcbiAgXCIgIHNzbF9zZXNzaW9uX2NhY2hlIHNoYXJlZDpTU0w6MW07XCIsXG4gIFwiICBzc2xfc2Vzc2lvbl90aW1lb3V0IDEwbTtcIixcbiAgXCIgIHNzbF9jaXBoZXJzIFBST0ZJTEU9U1lTVEVNO1wiLFxuICBcIiAgc3NsX3ByZWZlcl9zZXJ2ZXJfY2lwaGVycyBvbjtcIixcbiAgXCJcIixcbiAgXCIgIGxvY2F0aW9uIC8ge1wiLFxuICBgICAgIHByb3h5X3Bhc3MgaHR0cDovL2xvY2FsaG9zdDoke1JFU1RBVEVfSU5HUkVTU19QT1JUfTtgLFxuICBcIiAgfVwiLFxuICBcIn1cIixcbiAgXCJcIixcbiAgXCJzZXJ2ZXIge1wiLFxuICBcIiAgbGlzdGVuIDkwNzMgc3NsIGh0dHAyO1wiLFxuICBcIiAgbGlzdGVuIFs6Ol06OTA3MyBzc2wgaHR0cDI7XCIsXG4gIFwiICBzZXJ2ZXJfbmFtZSBfO1wiLFxuICBcIiAgcm9vdCAvdXNyL3NoYXJlL25naW54L2h0bWw7XCIsXG4gIFwiXCIsXG4gICcgIHNzbF9jZXJ0aWZpY2F0ZSBcIi9ldGMvcGtpL3ByaXZhdGUvcmVzdGF0ZS1zZWxmc2lnbmVkLmNydFwiOycsXG4gICcgIHNzbF9jZXJ0aWZpY2F0ZV9rZXkgXCIvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5rZXlcIjsnLFxuICBcIiAgc3NsX3Nlc3Npb25fY2FjaGUgc2hhcmVkOlNTTDoxbTtcIixcbiAgXCIgIHNzbF9zZXNzaW9uX3RpbWVvdXQgMTBtO1wiLFxuICBcIiAgc3NsX2NpcGhlcnMgUFJPRklMRT1TWVNURU07XCIsXG4gIFwiICBzc2xfcHJlZmVyX3NlcnZlcl9jaXBoZXJzIG9uO1wiLFxuICBcIlwiLFxuICBcIiAgbG9jYXRpb24gLyB7XCIsXG4gIGAgICAgcHJveHlfcGFzcyBodHRwOi8vbG9jYWxob3N0OiR7UkVTVEFURV9BRE1JTl9QT1JUfTtgLFxuICBcIiAgfVwiLFxuICBcIn1cIixcbl0uam9pbihcIlxcblwiKTtcbiJdfQ==
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": "0.8.0",
4
+ "version": "1.0.0",
5
5
  "author": "Restate Developers",
6
6
  "license": "MIT",
7
7
  "email": "code@restate.dev",
@@ -23,24 +23,24 @@
23
23
  "cdk": "cdk"
24
24
  },
25
25
  "devDependencies": {
26
- "@types/aws-lambda": "^8.10.133",
27
- "@types/jest": "^29.5.11",
28
- "@types/node": "^20.11.11",
26
+ "@types/aws-lambda": "^8.10.138",
27
+ "@types/jest": "^29.5.12",
28
+ "@types/node": "^20.14.2",
29
29
  "@types/source-map-support": "^0.5.10",
30
- "esbuild": "^0.20.0",
30
+ "esbuild": "^0.21.4",
31
31
  "jest": "^29.7.0",
32
- "jest-cdk-snapshot": "^2.1.1",
33
- "prettier": "^3.2.4",
32
+ "jest-cdk-snapshot": "^2.2.1",
33
+ "prettier": "^3.3.1",
34
34
  "source-map-support": "^0.5.21",
35
- "ts-jest": "^29.1.2",
35
+ "ts-jest": "^29.1.4",
36
36
  "ts-node": "^10.9.2",
37
- "typescript": "^5.3.3"
37
+ "typescript": "^5.4.5"
38
38
  },
39
39
  "peerDependencies": {
40
- "@aws-sdk/client-secrets-manager": "^3.556.0",
41
- "aws-cdk": "^2.138.0",
42
- "aws-cdk-lib": "^2.138.0",
43
- "constructs": "^10.0.0",
40
+ "@aws-sdk/client-secrets-manager": "^3.592.0",
41
+ "aws-cdk": "^2.144.0",
42
+ "aws-cdk-lib": "^2.144.0",
43
+ "constructs": "^10.3.0",
44
44
  "node-fetch": "^3.3.2"
45
45
  },
46
46
  "directories": {
@@ -831,7 +831,6 @@ exports[`Restate constructs Deploy a Lambda service handler to a remote Restate
831
831
  Environment:
832
832
  Variables:
833
833
  NODE_OPTIONS: '--enable-source-maps'
834
- AWS_NODEJS_CONNECTION_REUSE_ENABLED: '1'
835
834
  Handler: index.handler
836
835
  MemorySize: 128
837
836
  Role: