@btc-embedded/cdk-extensions 0.22.20 → 0.22.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +2 -2
- package/AGENTS.md +252 -0
- package/CHANGELOG.md +9 -0
- package/assets/cli/catnip.js +1 -1
- package/lib/constructs/EventPipe.js +1 -1
- package/lib/constructs/ExportedService.js +1 -1
- package/lib/constructs/S3Bucket.js +1 -1
- package/lib/constructs/SecureRestApi.js +1 -1
- package/lib/constructs/SecureRestApiV2.js +1 -1
- package/lib/constructs/api-keys/ApiKeyClientAuthorization.js +1 -1
- package/lib/constructs/api-keys/ApiKeyManagement.js +1 -1
- package/lib/constructs/api-keys/ApiKeyPreTokenHandler.js +1 -1
- package/lib/constructs/api-keys/ApiKeyStore.js +1 -1
- package/lib/extensions/ApiGatewayExtension.js +1 -1
- package/lib/extensions/ApplicationContainer.js +1 -1
- package/lib/extensions/ApplicationLoadBalancerExtension.js +1 -1
- package/lib/extensions/ApplicationLoadBalancerExtensionV2.js +1 -1
- package/lib/extensions/CloudMapExtension.js +1 -1
- package/lib/extensions/DeactivatableServiceExtension.js +1 -1
- package/lib/extensions/DeploymentConfigExtension.js +1 -1
- package/lib/extensions/DocumentDbAccessExtension.js +1 -1
- package/lib/extensions/DomainEventMessagingExtension.js +1 -1
- package/lib/extensions/EfsMountExtension.js +1 -1
- package/lib/extensions/ExtraContainerExtension.js +1 -1
- package/lib/extensions/HTTPApiExtension.js +1 -1
- package/lib/extensions/LogExtension.js +1 -1
- package/lib/extensions/ModifyContainerDefinitionExtension.js +1 -1
- package/lib/extensions/ModifyTaskDefinitionExtension.js +1 -1
- package/lib/extensions/OpenIdExtension.js +1 -1
- package/lib/extensions/OpenTelemetryExtension.js +1 -1
- package/lib/extensions/PostgresDbAccessExtension.js +1 -1
- package/lib/extensions/SharedVolumeExtension.js +1 -1
- package/lib/extensions/TcpKeepAliveExtension.js +1 -1
- package/lib/platform/ApiGateway.js +1 -1
- package/lib/platform/ApiGatewayVpcLink.js +2 -2
- package/lib/platform/ApplicationLoadBalancer.js +1 -1
- package/lib/platform/ApplicationLoadBalancerV2.js +2 -2
- package/lib/platform/AuroraPostgresDB.js +3 -3
- package/lib/platform/BTCLogGroup.js +1 -1
- package/lib/platform/CognitoUserPool.js +2 -2
- package/lib/platform/DefaultUserPoolClients.js +1 -1
- package/lib/platform/DocumentDB.js +2 -2
- package/lib/platform/EcsCluster.js +1 -1
- package/lib/platform/EfsFileSystem.js +1 -1
- package/lib/platform/HostedZone.js +1 -1
- package/lib/platform/PrivateDnsNamespace.js +1 -1
- package/lib/platform/ResourceServer.js +1 -1
- package/lib/platform/Vpc.js +1 -1
- package/lib/platform/VpcV2.js +1 -1
- package/lib/stacks/ApplicationStack.js +1 -1
- package/lib/utils/BasePlatformStackResolver.js +1 -1
- package/lib/utils/StackParameter.js +1 -1
- package/package.json +1 -1
package/.jsii
CHANGED
|
@@ -20244,6 +20244,6 @@
|
|
|
20244
20244
|
"symbolId": "src/platform/VpcV2:VpcV2Props"
|
|
20245
20245
|
}
|
|
20246
20246
|
},
|
|
20247
|
-
"version": "0.22.
|
|
20248
|
-
"fingerprint": "
|
|
20247
|
+
"version": "0.22.22",
|
|
20248
|
+
"fingerprint": "MT0U+0rZvp5+IwVeklrSYg854N7WRspuhlicBlhV0Lc="
|
|
20249
20249
|
}
|
package/AGENTS.md
ADDED
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
# AGENTS.md — Developer & Agentic Coding Guide
|
|
2
|
+
|
|
3
|
+
AWS CDK construct library (`@btc-embedded/cdk-extensions`). **Projen-managed**: never edit
|
|
4
|
+
`package.json`, `.gitignore`, `.eslintrc.json`, or `tsconfig.json` directly — modify
|
|
5
|
+
`.projenrc.ts` and run `npx projen` to regenerate them.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Build / Lint / Test Commands
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
yarn build # Full pipeline: compile → bundle → test → package
|
|
13
|
+
yarn compile # jsii compilation only (produces lib/)
|
|
14
|
+
yarn typecheck # Type-check src + test without emitting (tsc --noEmit)
|
|
15
|
+
yarn test # Run all Jest tests
|
|
16
|
+
yarn test <pattern> # Run a single test file or name pattern (args forwarded to Jest)
|
|
17
|
+
yarn test:watch # Jest in watch mode
|
|
18
|
+
yarn eslint # Run ESLint interactively
|
|
19
|
+
yarn eslint:ci # Lint with CI reporter, fail on any warning
|
|
20
|
+
yarn bundle # Bundle all Lambda handlers + CLI with esbuild
|
|
21
|
+
yarn integ # Run integration test snapshots
|
|
22
|
+
yarn integ:update # Update integration test snapshots
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Running a Single Test
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# By filename pattern
|
|
29
|
+
yarn test S3Bucket
|
|
30
|
+
|
|
31
|
+
# By path
|
|
32
|
+
yarn test test/constructs/S3Bucket.test.ts
|
|
33
|
+
|
|
34
|
+
# By test name pattern
|
|
35
|
+
yarn test S3Bucket --testNamePattern "developer stack"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Type errors in tests are caught by `yarn typecheck`, not by Jest itself
|
|
39
|
+
(`diagnostics: false` in ts-jest keeps test runs fast).
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Project Structure
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
src/
|
|
47
|
+
constructs/ Higher-level CDK constructs (S3Bucket, SecureRestApi, EventPipe, …)
|
|
48
|
+
extensions/ ECS ServiceExtension subclasses
|
|
49
|
+
platform/ Base-platform constructs (VPC, ECS cluster, Aurora, Cognito, …)
|
|
50
|
+
stacks/ ApplicationStack base class
|
|
51
|
+
utils/ StackParameter, BasePlatformStackResolver, helpers
|
|
52
|
+
cli/ catnip CLI (excluded from jsii; bundled with esbuild)
|
|
53
|
+
test/ Jest tests — mirrors src/ layout
|
|
54
|
+
assets/cli/ Bundled CLI binary
|
|
55
|
+
docs/ API docs, ADRs (docs/adr/), RFCs (docs/rfc/), construct docs
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Architecture Patterns
|
|
61
|
+
|
|
62
|
+
### Platform / Application Stack Split
|
|
63
|
+
|
|
64
|
+
- **Base Platform Stack** — deployed once per environment; holds shared infra (VPC, ECS
|
|
65
|
+
cluster, Aurora, Cognito, EFS, …). Lives in `src/platform/`.
|
|
66
|
+
- **Application Stack** — per-service stacks that import from the base platform. Constructs
|
|
67
|
+
live in `src/constructs/` and `src/extensions/`.
|
|
68
|
+
|
|
69
|
+
### `fromBasePlatform()` Pattern
|
|
70
|
+
|
|
71
|
+
Every platform construct exposes a static `fromBasePlatform(scope, id, basePlatformStackName?)`
|
|
72
|
+
that reconstructs the construct from CloudFormation `Fn::ImportValue` exports.
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
static fromBasePlatform(scope: Construct, id: string, stackName?: string): IVpc {
|
|
76
|
+
class Import extends Construct implements IVpc {
|
|
77
|
+
readonly fqdn = Vpc.fqdnParameter.import(scope, stackName);
|
|
78
|
+
}
|
|
79
|
+
return new Import(scope, id);
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### `StackParameter` — Cross-Stack References
|
|
84
|
+
|
|
85
|
+
Wraps `CfnOutput` (export) and `Fn.importValue` (import) with structured naming:
|
|
86
|
+
`{stackName}:{prefix}[-v{version}]:{key}` — e.g. `platform-stack:cognito-v2:user-pool-id`.
|
|
87
|
+
Declare as `private static readonly` on the owning class; call `.export(this, value)` in the
|
|
88
|
+
constructor and `.import(scope, stackName)` in `fromBasePlatform`.
|
|
89
|
+
|
|
90
|
+
### `BasePlatformStackResolver` — Context Propagation
|
|
91
|
+
|
|
92
|
+
`ApplicationStack` stores `basePlatformStackName` in CDK context under
|
|
93
|
+
`cdk-extensions:basePlatformStackName`. `BasePlatformStackResolver.resolve(scope, propsValue?)`
|
|
94
|
+
reads it as a fallback, so child constructs can omit the prop when inside an `ApplicationStack`.
|
|
95
|
+
|
|
96
|
+
### Abstract Base Class Pattern for Platform Constructs
|
|
97
|
+
|
|
98
|
+
1. `interface IFoo` — public contract
|
|
99
|
+
2. `abstract class FooBase extends Construct implements IFoo` — shared methods
|
|
100
|
+
3. `class Foo extends FooBase` — creates resources, exports parameters
|
|
101
|
+
4. `fromBasePlatform()` returns `new class Import extends FooBase { … }()` — imports values
|
|
102
|
+
|
|
103
|
+
### ECS Service Extensions
|
|
104
|
+
|
|
105
|
+
Extensions extend `ServiceExtension`. Key lifecycle hooks:
|
|
106
|
+
|
|
107
|
+
- `prehook(parent, scope)` — resolve references before service creation
|
|
108
|
+
- `addHooks()` — register `ContainerMutatingHook` instances
|
|
109
|
+
- `modifyServiceProps(props)` — modify ECS service props
|
|
110
|
+
- `useTaskDefinition(td)` — add containers, volumes, IAM policies
|
|
111
|
+
- `useService(service)` — post-creation wiring
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## JSII Constraints
|
|
116
|
+
|
|
117
|
+
JSII enforces a strict subset of TypeScript. Violating these causes `jsii` compilation errors.
|
|
118
|
+
|
|
119
|
+
- **No** `Omit`, `Pick`, `Required`, `Partial`, complex type aliases, or property re-declaration
|
|
120
|
+
in interfaces
|
|
121
|
+
- **No** `require()` imports (use ES module `import`)
|
|
122
|
+
- Extend interfaces with `extends`; never re-declare inherited properties
|
|
123
|
+
|
|
124
|
+
**Workaround pattern:**
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
// ✅ Correct: extend without re-declaring; validate at runtime
|
|
128
|
+
export interface MyProps extends BaseProps {}
|
|
129
|
+
|
|
130
|
+
constructor(props: MyProps) {
|
|
131
|
+
if (!props.optionalField) throw new Error("MyConstruct: 'optionalField' is required");
|
|
132
|
+
super({ cpu: props.cpu }); // No ! needed after validation
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Code Style Guidelines
|
|
139
|
+
|
|
140
|
+
### Naming
|
|
141
|
+
|
|
142
|
+
| Entity | Convention | Example |
|
|
143
|
+
| -------------------------- | ------------------------------------ | ----------------------------------------- |
|
|
144
|
+
| Classes / constructs | PascalCase | `ApplicationContainer`, `BTCLogGroup` |
|
|
145
|
+
| Construct logical IDs | PascalCase | `new Certificate(this, "Certificate", …)` |
|
|
146
|
+
| Props interfaces | `<Class>Props` | `EcsClusterProps` |
|
|
147
|
+
| Abstract base classes | `<Class>Base` | `CognitoUserPoolBase` |
|
|
148
|
+
| Import interfaces | `I<Class>` | `IVpc`, `IEfsFileSystem` |
|
|
149
|
+
| Enums | PascalCase name, UPPER_CASE values | `EfsAccessMode.READ_ONLY` |
|
|
150
|
+
| Module-level constants | `UPPER_CASE_SNAKE` | `BASE_PLATFORM_STACK_NAME_CONTEXT_KEY` |
|
|
151
|
+
| Functions / methods | camelCase | `kebabCase()`, `resolveBasePlatform()` |
|
|
152
|
+
| Resource names / log paths | kebab-case via `kebabCase()` utility | `/${app}/${kebabCase(id)}` |
|
|
153
|
+
|
|
154
|
+
### Imports
|
|
155
|
+
|
|
156
|
+
Order (enforced by `import/order` lint rule): **builtin → external**, alphabetized
|
|
157
|
+
ascending, case-insensitive. Use namespace imports (`import * as ecs from "aws-cdk-lib/aws-ecs"`)
|
|
158
|
+
when many items from a module are needed.
|
|
159
|
+
|
|
160
|
+
```typescript
|
|
161
|
+
import { Construct } from "constructs";
|
|
162
|
+
import * as cdk from "aws-cdk-lib";
|
|
163
|
+
import * as ecs from "aws-cdk-lib/aws-ecs";
|
|
164
|
+
import { ServiceExtension } from "@aws-cdk-containers/ecs-service-extensions";
|
|
165
|
+
|
|
166
|
+
import { StackParameter } from "../utils";
|
|
167
|
+
import { kebabCase } from "./common";
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Types and Interfaces
|
|
171
|
+
|
|
172
|
+
- Public API props: `interface` with `readonly` properties
|
|
173
|
+
- Explicit return types on all `public` methods; infer on private helpers
|
|
174
|
+
- Prefer `??` (nullish coalescing) and ternaries over `if/else` for simple defaults
|
|
175
|
+
- No `!` non-null assertions after runtime validation (TypeScript control flow is trusted)
|
|
176
|
+
|
|
177
|
+
### Error Handling
|
|
178
|
+
|
|
179
|
+
```typescript
|
|
180
|
+
// Constructor validation format
|
|
181
|
+
if (!props.cpu) throw new Error("ApplicationContainer: 'cpu' is required");
|
|
182
|
+
if (!/^[a-z][a-z0-9-]+$/.test(prefix)) {
|
|
183
|
+
throw new Error(`prefix '${prefix}' must be kebab-case (like 'foo-bar')`);
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Member Ordering (enforced by ESLint)
|
|
188
|
+
|
|
189
|
+
`public static` fields → `public static` methods → `protected static` → `private static` →
|
|
190
|
+
instance fields → constructor → instance methods.
|
|
191
|
+
|
|
192
|
+
### Formatting (Prettier defaults via eslint-plugin-prettier)
|
|
193
|
+
|
|
194
|
+
2-space indent, double quotes, trailing commas, semicolons. Formatting errors surface as ESLint
|
|
195
|
+
errors — run `yarn eslint` to auto-fix.
|
|
196
|
+
|
|
197
|
+
### General
|
|
198
|
+
|
|
199
|
+
- `const` for immutable bindings; `let` where reassignment is needed
|
|
200
|
+
- Spread for prop merging: `{ ...props, override: value }`
|
|
201
|
+
- Minimal inline comments — only for non-obvious behaviour
|
|
202
|
+
- No `require()` calls anywhere in `src/` (enforced by `@typescript-eslint/no-require-imports`)
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Testing Philosophy
|
|
207
|
+
|
|
208
|
+
- Use `Template.fromStack(stack)` for CloudFormation resource assertions
|
|
209
|
+
- One general usage test + targeted corner cases — avoid redundant coverage
|
|
210
|
+
- Remove tests that are fully covered by a higher-level test
|
|
211
|
+
- **Workflow**: write comprehensive tests first → get approval → implement → simplify tests
|
|
212
|
+
as needed
|
|
213
|
+
|
|
214
|
+
```typescript
|
|
215
|
+
import { App, Stack } from "aws-cdk-lib";
|
|
216
|
+
import { Template } from "aws-cdk-lib/assertions";
|
|
217
|
+
|
|
218
|
+
test("creates S3 bucket with versioning", () => {
|
|
219
|
+
const app = new App();
|
|
220
|
+
const stack = new Stack(app, "TestStack");
|
|
221
|
+
new S3Bucket(stack, "Bucket", { versioned: true });
|
|
222
|
+
const template = Template.fromStack(stack);
|
|
223
|
+
template.hasResourceProperties("AWS::S3::Bucket", {
|
|
224
|
+
VersioningConfiguration: { Status: "Enabled" },
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Local Testing with yalc
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
# In cdk-extensions — publish locally
|
|
235
|
+
yarn build && npx yalc publish
|
|
236
|
+
|
|
237
|
+
# In consumer project — link
|
|
238
|
+
npx yalc add @btc-embedded/cdk-extensions && yarn install
|
|
239
|
+
|
|
240
|
+
# After further changes in cdk-extensions
|
|
241
|
+
yarn build && npx yalc push
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Commit Format
|
|
247
|
+
|
|
248
|
+
```
|
|
249
|
+
<type>: <description>
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Types: `feat`, `feat!` (breaking), `fix`, `refactor`, `chore`, `misc`, `test`
|
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
|
|
2
|
+
## [0.22.21](https://github.com/btc-embedded/cdk-extensions/compare/v0.22.20...v0.22.21) (2026-03-05)
|
|
3
|
+
|
|
4
|
+
## [0.22.20](https://github.com/btc-embedded/cdk-extensions/compare/v0.22.19...v0.22.20) (2026-03-03)
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* **ci:** fix job trigger rules and deduplicate with YAML anchors ([d9f5a87](https://github.com/btc-embedded/cdk-extensions/commit/d9f5a879405a608c3359d4db634fcfbe2ca76c47))
|
|
10
|
+
|
|
2
11
|
## [0.22.19](https://github.com/btc-embedded/cdk-extensions/compare/v0.22.18...v0.22.19) (2026-03-03)
|
|
3
12
|
|
|
4
13
|
|
package/assets/cli/catnip.js
CHANGED
|
@@ -248,7 +248,7 @@ Reference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.ht
|
|
|
248
248
|
`),Js={insert:"+ ",delete:"- ",replace:"! ",equal:" "},br=!1,cn=[],_o=new s(null,ee,Z).getGroupedOpcodes(),yr=0,En=_o.length;yr<En;yr++)if(rt=_o[yr],!br){if(br=!0,We=z?` ${z}`:"",Li=Y?` ${Y}`:"",cn.push(`*** ${G}${We}${Me}`),cn.push(`--- ${H}${Li}${Me}`),[_t,Nn]=[rt[0],rt[rt.length-1]],cn.push("***************"+Me),Ue=l(_t[1],Nn[2]),cn.push(`*** ${Ue} ****${Me}`),o((function(){var Co,os,Us;for(Us=[],os=0,Co=rt.length;os<Co;os++)[dr,ve,ve,ve,ve]=rt[os],Us.push(dr==="replace"||dr==="delete");return Us})())){for(Lr=0,Ss=rt.length;Lr<Ss;Lr++)if([dr,wt,nn,ve,ve]=rt[Lr],dr!=="insert")for(Ho=ee.slice(wt,nn),rs=0,xr=Ho.length;rs<xr;rs++)Ln=Ho[rs],cn.push(Js[dr]+Ln)}if(qe=l(_t[3],Nn[4]),cn.push(`--- ${qe} ----${Me}`),o((function(){var Co,os,Us;for(Us=[],os=0,Co=rt.length;os<Co;os++)[dr,ve,ve,ve,ve]=rt[os],Us.push(dr==="replace"||dr==="insert");return Us})())){for(Wr=0,Ni=rt.length;Wr<Ni;Wr++)if([dr,ve,ve,rn,vr]=rt[Wr],dr!=="delete")for(ss=Z.slice(rn,vr),Fs=0,sn=ss.length;Fs<sn;Fs++)Ln=ss[Fs],cn.push(Js[dr]+Ln)}}return cn},k=function(ee,Z,G,H=n){return new t(G,H).compare(ee,Z)},j=function(ee,Z){var G,H,z,Y,oe,Me,ve;if(ve={1:"- ",2:"+ "}[Z],!ve)throw new Error(`unknow delta choice (must be 1 or 2): ${Z}`);for(oe=[" ",ve],Y=[],G=0,H=ee.length;G<H;G++)z=ee[G],Me=z.slice(0,2),J.call(oe,Me)>=0&&Y.push(z.slice(2));return Y},Ra._arrayCmp=i,Ra.SequenceMatcher=s,Ra.getCloseMatches=A,Ra._countLeading=c,Ra.Differ=t,Ra.IS_LINE_JUNK=r,Ra.IS_CHARACTER_JUNK=n,Ra._formatRangeUnified=p,Ra.unifiedDiff=W,Ra._formatRangeContext=l,Ra.contextDiff=y,Ra.ndiff=k,Ra.restore=j}).call(Ra)});var X1t=F((E1s,J1t)=>{J1t.exports=Y1t()});var bPe=F((y1s,Z1t)=>{var eKr=function(t){let e=typeof t;return t==null?"null":e==="object"&&t.constructor===Array?"array":e==="object"&&t instanceof Date?"date":e},xPe=function(t,e){let n=typeof t;if(n==="array")return t.map(r=>xPe(r,e));if(n==="object"){for(let r in t)t[r]=xPe(t[r],e);return t}else return n==="number"&&Number.isFinite(t)&&!Number.isInteger(t)?+t.toFixed(e):t};Z1t.exports={extendedTypeOf:eKr,roundObj:xPe}});var rFt=F((_1s,nFt)=>{var tFt={};nFt.exports=tFt;var eFt={reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39],grey:[90,39],brightRed:[91,39],brightGreen:[92,39],brightYellow:[93,39],brightBlue:[94,39],brightMagenta:[95,39],brightCyan:[96,39],brightWhite:[97,39],bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgGray:[100,49],bgGrey:[100,49],bgBrightRed:[101,49],bgBrightGreen:[102,49],bgBrightYellow:[103,49],bgBrightBlue:[104,49],bgBrightMagenta:[105,49],bgBrightCyan:[106,49],bgBrightWhite:[107,49],blackBG:[40,49],redBG:[41,49],greenBG:[42,49],yellowBG:[43,49],blueBG:[44,49],magentaBG:[45,49],cyanBG:[46,49],whiteBG:[47,49]};Object.keys(eFt).forEach(function(t){var e=eFt[t],n=tFt[t]=[];n.open="\x1B["+e[0]+"m",n.close="\x1B["+e[1]+"m"})});var oFt=F((C1s,sFt)=>{"use strict";sFt.exports=function(t,e){e=e||process.argv;var n=e.indexOf("--"),r=/^-{1,2}/.test(t)?"":"--",s=e.indexOf(r+t);return s!==-1&&(n===-1?!0:s<n)}});var aFt=F((R1s,iFt)=>{"use strict";var tKr=require("os"),kl=oFt(),Ta=process.env,OI=void 0;kl("no-color")||kl("no-colors")||kl("color=false")?OI=!1:(kl("color")||kl("colors")||kl("color=true")||kl("color=always"))&&(OI=!0);"FORCE_COLOR"in Ta&&(OI=Ta.FORCE_COLOR.length===0||parseInt(Ta.FORCE_COLOR,10)!==0);function nKr(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function rKr(t){if(OI===!1)return 0;if(kl("color=16m")||kl("color=full")||kl("color=truecolor"))return 3;if(kl("color=256"))return 2;if(t&&!t.isTTY&&OI!==!0)return 0;var e=OI?1:0;if(process.platform==="win32"){var n=tKr.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(n[0])>=10&&Number(n[2])>=10586?Number(n[2])>=14931?3:2:1}if("CI"in Ta)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(function(s){return s in Ta})||Ta.CI_NAME==="codeship"?1:e;if("TEAMCITY_VERSION"in Ta)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Ta.TEAMCITY_VERSION)?1:0;if("TERM_PROGRAM"in Ta){var r=parseInt((Ta.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Ta.TERM_PROGRAM){case"iTerm.app":return r>=3?3:2;case"Hyper":return 3;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Ta.TERM)?2:/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(Ta.TERM)||"COLORTERM"in Ta?1:(Ta.TERM==="dumb",e)}function DPe(t){var e=rKr(t);return nKr(e)}iFt.exports={supportsColor:DPe,stdout:DPe(process.stdout),stderr:DPe(process.stderr)}});var uFt=F((T1s,cFt)=>{cFt.exports=function(e,n){var r="";e=e||"Run the trap, drop the bass",e=e.split("");var s={a:["@","\u0104","\u023A","\u0245","\u0394","\u039B","\u0414"],b:["\xDF","\u0181","\u0243","\u026E","\u03B2","\u0E3F"],c:["\xA9","\u023B","\u03FE"],d:["\xD0","\u018A","\u0500","\u0501","\u0502","\u0503"],e:["\xCB","\u0115","\u018E","\u0258","\u03A3","\u03BE","\u04BC","\u0A6C"],f:["\u04FA"],g:["\u0262"],h:["\u0126","\u0195","\u04A2","\u04BA","\u04C7","\u050A"],i:["\u0F0F"],j:["\u0134"],k:["\u0138","\u04A0","\u04C3","\u051E"],l:["\u0139"],m:["\u028D","\u04CD","\u04CE","\u0520","\u0521","\u0D69"],n:["\xD1","\u014B","\u019D","\u0376","\u03A0","\u048A"],o:["\xD8","\xF5","\xF8","\u01FE","\u0298","\u047A","\u05DD","\u06DD","\u0E4F"],p:["\u01F7","\u048E"],q:["\u09CD"],r:["\xAE","\u01A6","\u0210","\u024C","\u0280","\u042F"],s:["\xA7","\u03DE","\u03DF","\u03E8"],t:["\u0141","\u0166","\u0373"],u:["\u01B1","\u054D"],v:["\u05D8"],w:["\u0428","\u0460","\u047C","\u0D70"],x:["\u04B2","\u04FE","\u04FC","\u04FD"],y:["\xA5","\u04B0","\u04CB"],z:["\u01B5","\u0240"]};return e.forEach(function(o){o=o.toLowerCase();var i=s[o]||[" "],a=Math.floor(Math.random()*i.length);typeof s[o]<"u"?r+=s[o][a]:r+=o}),r}});var dFt=F((I1s,lFt)=>{lFt.exports=function(e,n){e=e||" he is here ";var r={up:["\u030D","\u030E","\u0304","\u0305","\u033F","\u0311","\u0306","\u0310","\u0352","\u0357","\u0351","\u0307","\u0308","\u030A","\u0342","\u0313","\u0308","\u034A","\u034B","\u034C","\u0303","\u0302","\u030C","\u0350","\u0300","\u0301","\u030B","\u030F","\u0312","\u0313","\u0314","\u033D","\u0309","\u0363","\u0364","\u0365","\u0366","\u0367","\u0368","\u0369","\u036A","\u036B","\u036C","\u036D","\u036E","\u036F","\u033E","\u035B","\u0346","\u031A"],down:["\u0316","\u0317","\u0318","\u0319","\u031C","\u031D","\u031E","\u031F","\u0320","\u0324","\u0325","\u0326","\u0329","\u032A","\u032B","\u032C","\u032D","\u032E","\u032F","\u0330","\u0331","\u0332","\u0333","\u0339","\u033A","\u033B","\u033C","\u0345","\u0347","\u0348","\u0349","\u034D","\u034E","\u0353","\u0354","\u0355","\u0356","\u0359","\u035A","\u0323"],mid:["\u0315","\u031B","\u0300","\u0301","\u0358","\u0321","\u0322","\u0327","\u0328","\u0334","\u0335","\u0336","\u035C","\u035D","\u035E","\u035F","\u0360","\u0362","\u0338","\u0337","\u0361"," \u0489"]},s=[].concat(r.up,r.down,r.mid);function o(c){var l=Math.floor(Math.random()*c);return l}function i(c){var l=!1;return s.filter(function(p){l=p===c}),l}function a(c,l){var p="",d,S;l=l||{},l.up=typeof l.up<"u"?l.up:!0,l.mid=typeof l.mid<"u"?l.mid:!0,l.down=typeof l.down<"u"?l.down:!0,l.size=typeof l.size<"u"?l.size:"maxi",c=c.split("");for(S in c)if(!i(S)){switch(p=p+c[S],d={up:0,down:0,mid:0},l.size){case"mini":d.up=o(8),d.mid=o(2),d.down=o(8);break;case"maxi":d.up=o(16)+3,d.mid=o(4)+1,d.down=o(64)+3;break;default:d.up=o(8)+1,d.mid=o(6)/2,d.down=o(8)+1;break}var y=["up","mid","down"];for(var C in y)for(var A=y[C],b=0;b<=d[A];b++)l[A]&&(p=p+r[A][o(r[A].length)])}return p}return a(e,n)}});var mFt=F((P1s,pFt)=>{pFt.exports=function(t){return function(e,n,r){if(e===" ")return e;switch(n%3){case 0:return t.red(e);case 1:return t.white(e);case 2:return t.blue(e)}}}});var gFt=F((A1s,fFt)=>{fFt.exports=function(t){return function(e,n,r){return n%2===0?e:t.inverse(e)}}});var SFt=F((v1s,hFt)=>{hFt.exports=function(t){var e=["red","yellow","green","blue","magenta"];return function(n,r,s){return n===" "?n:t[e[r++%e.length]](n)}}});var yFt=F((x1s,EFt)=>{EFt.exports=function(t){var e=["underline","inverse","grey","yellow","red","green","blue","white","cyan","magenta","brightYellow","brightRed","brightGreen","brightBlue","brightWhite","brightCyan","brightMagenta"];return function(n,r,s){return n===" "?n:t[e[Math.round(Math.random()*(e.length-2))]](n)}}});var PFt=F((D1s,IFt)=>{var Yt={};IFt.exports=Yt;Yt.themes={};var sKr=require("util"),N_=Yt.styles=rFt(),CFt=Object.defineProperties,oKr=new RegExp(/[\r\n]+/g);Yt.supportsColor=aFt().supportsColor;typeof Yt.enabled>"u"&&(Yt.enabled=Yt.supportsColor()!==!1);Yt.enable=function(){Yt.enabled=!0};Yt.disable=function(){Yt.enabled=!1};Yt.stripColors=Yt.strip=function(t){return(""+t).replace(/\x1B\[\d+m/g,"")};var b1s=Yt.stylize=function(e,n){if(!Yt.enabled)return e+"";var r=N_[n];return!r&&n in Yt?Yt[n](e):r.open+e+r.close},iKr=/[|\\{}()[\]^$+*?.]/g,aKr=function(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(iKr,"\\$&")};function RFt(t){var e=function n(){return uKr.apply(n,arguments)};return e._styles=t,e.__proto__=cKr,e}var TFt=(function(){var t={};return N_.grey=N_.gray,Object.keys(N_).forEach(function(e){N_[e].closeRe=new RegExp(aKr(N_[e].close),"g"),t[e]={get:function(){return RFt(this._styles.concat(e))}}}),t})(),cKr=CFt(function(){},TFt);function uKr(){var t=Array.prototype.slice.call(arguments),e=t.map(function(i){return i!=null&&i.constructor===String?i:sKr.inspect(i)}).join(" ");if(!Yt.enabled||!e)return e;for(var n=e.indexOf(`
|
|
249
249
|
`)!=-1,r=this._styles,s=r.length;s--;){var o=N_[r[s]];e=o.open+e.replace(o.closeRe,o.open)+o.close,n&&(e=e.replace(oKr,function(i){return o.close+i+o.open}))}return e}Yt.setTheme=function(t){if(typeof t=="string"){console.log("colors.setTheme now only accepts an object, not a string. If you are trying to set a theme from a file, it is now your (the caller's) responsibility to require the file. The old syntax looked like colors.setTheme(__dirname + '/../themes/generic-logging.js'); The new syntax looks like colors.setTheme(require(__dirname + '/../themes/generic-logging.js'));");return}for(var e in t)(function(n){Yt[n]=function(r){if(typeof t[n]=="object"){var s=r;for(var o in t[n])s=Yt[t[n][o]](s);return s}return Yt[t[n]](r)}})(e)};function lKr(){var t={};return Object.keys(TFt).forEach(function(e){t[e]={get:function(){return RFt([e])}}}),t}var dKr=function(e,n){var r=n.split("");return r=r.map(e),r.join("")};Yt.trap=uFt();Yt.zalgo=dFt();Yt.maps={};Yt.maps.america=mFt()(Yt);Yt.maps.zebra=gFt()(Yt);Yt.maps.rainbow=SFt()(Yt);Yt.maps.random=yFt()(Yt);for(_Ft in Yt.maps)(function(t){Yt[t]=function(e){return dKr(Yt.maps[t],e)}})(_Ft);var _Ft;CFt(Yt,lKr())});var vFt=F((w1s,AFt)=>{var pKr=PFt();AFt.exports=pKr});var wFt=F(($1s,DFt)=>{var xFt=vFt(),{extendedTypeOf:bFt}=bPe(),mKr={" "(t){return t},"+":xFt.green,"-":xFt.red},KS=function(t,e,n,r,s,o){let i,a=e?`${e}: `:"",c=o+" ",l=p=>{let d=t.maxElisions===void 0?1/0:t.maxElisions;if(p<d)for(let S=0;S<p;S++)r(" ",c+"...");else r(" ",c+`... (${p} entries)`)};switch(bFt(n)){case"object":if("__old"in n&&"__new"in n&&Object.keys(n).length===2)return KS(t,e,n.__old,r,"-",o),KS(t,e,n.__new,r,"+",o);r(s,`${o}${a}{`);for(let p of Object.keys(n)){let d;i=n[p],(d=p.match(/^(.*)__deleted$/))?KS(t,d[1],i,r,"-",c):(d=p.match(/^(.*)__added$/))?KS(t,d[1],i,r,"+",c):KS(t,p,i,r,s,c)}return r(s,`${o}}`);case"array":{r(s,`${o}${a}[`);let p=!0;for(let d of n)(bFt(d)!=="array"||!(d.length===2||d.length===1&&d[0]===" ")||typeof d[0]!="string"||d[0].length!==1||![" ","-","+","~"].includes(d[0]))&&(p=!1);if(p){let d,S=0;for([d,i]of n)if(d===" "&&i==null)S++;else{if(S>0&&l(S),S=0,![" ","~","+","-"].includes(d))throw new Error(`Unexpected op '${d}' in ${JSON.stringify(n,null,2)}`);d==="~"&&(d=" "),KS(t,"",i,r,d,c)}S>0&&l(S)}else for(i of n)KS(t,"",i,r,s,c);return r(s,`${o}]`)}default:if(n===0||n===null||n===!1||n===""||n)return r(s,o+a+JSON.stringify(n))}},wPe=(t,e,n)=>KS(e,"",t,n," ",""),fKr=function(t,e={}){let n=[];return wPe(t,e,(r,s)=>n.push(`${r}${s}`)),n},gKr=function(t,e={}){let n=[];return wPe(t,e,function(r,s){return e.color==null||e.color?n.push(((e.theme!=null?e.theme[r]:void 0)!=null?e.theme!=null?e.theme[r]:void 0:mKr[r])(`${r}${s}`)+`
|
|
250
250
|
`):n.push(`${r}${s}
|
|
251
|
-
`)}),n.join("")};DFt.exports={colorize:gKr,colorizeToArray:fKr,colorizeToCallback:wPe}});var kFt=F((O1s,LFt)=>{var{SequenceMatcher:hKr}=X1t(),{extendedTypeOf:g7,roundObj:$Ft}=bPe(),{colorize:OFt,colorizeToCallback:SKr}=wFt(),$Pe=class{constructor(e){e.outputKeys=e.outputKeys||[],e.excludeKeys=e.excludeKeys||[],this.options=e}isScalar(e){return typeof e!="object"||e===null}objectDiff(e,n){let r={},s=0,o=!0;for(let[i,a]of Object.entries(e))if(!this.options.outputNewOnly){let c="__deleted";!(i in n)&&!this.options.excludeKeys.includes(i)&&(r[`${i}${c}`]=a,s-=30,o=!1)}for(let[i,a]of Object.entries(n)){let c=this.options.outputNewOnly?"":"__added";!(i in e)&&!this.options.excludeKeys.includes(i)&&(r[`${i}${c}`]=a,s-=30,o=!1)}for(let[i,a]of Object.entries(e))if(i in n){if(this.options.excludeKeys.includes(i))continue;s+=20;let c=n[i],l=this.diff(a,c);l.equal?(this.options.full||this.options.outputKeys.includes(i))&&(r[i]=a):(r[i]=l.result,o=!1),s+=Math.min(20,Math.max(-10,l.score/5))}return o?(s=100*Math.max(Object.keys(e).length,.5),this.options.full||(r=void 0)):s=Math.max(0,s),{score:s,result:r,equal:o}}findMatchingObject(e,n,r){let s=null;for(let[o,{item:i,index:a}]of Object.entries(r))if(o!=="__next"){let c=Math.abs(a-n);if(g7(e)===g7(i)){let{score:l}=this.diff(e,i);(!s||l>s.score||l===s.score&&c<s.indexDistance)&&(s={score:l,key:o,indexDistance:c})}}return s}scalarize(e,n,r){let s=[];if(r){let i={};for(let a=0;a<e.length;a++){let c=e[a];if(this.isScalar(c))continue;let l=this.findMatchingObject(c,a,r);l&&(!i[l.key]||l.score>i[l.key].score)&&(i[l.key]={score:l.score,index:a})}for(let[a,c]of Object.entries(i))s[c.index]=a}let o=[];for(let i=0;i<e.length;i++){let a=e[i];if(this.isScalar(a))o.push(a);else{let c=s[i]||"__$!SCALAR"+n.__next++;n[c]={item:a,index:i},o.push(c)}}return o}isScalarized(e,n){return typeof e=="string"&&e in n}descalarize(e,n){return this.isScalarized(e,n)?n[e].item:e}arrayDiff(e,n){let r={__next:1},s=this.scalarize(e,r),o={__next:r.__next},i=this.scalarize(n,o,r);this.options.sort&&(s.sort(),i.sort());let a=new hKr(null,s,i).getOpcodes(),c=[],l=0,p=!0;for(let[d,S,y,C,A]of a){let b,$,k,j,W,J,ee,Z;switch(d==="equal"||this.options.keysOnly&&d==="replace"||(p=!1),d){case"equal":for(b=S,j=y,k=S<=j;k?b<j:b>j;k?b++:b--){let G=s[b];if(this.isScalarized(G,r)){if(!this.isScalarized(G,o))throw new Error(`internal bug: isScalarized(item, originals1) != isScalarized(item, originals2) for item ${JSON.stringify(G)}`);let H=this.descalarize(G,r),z=this.descalarize(G,o),Y=this.diff(H,z);Y.equal?this.options.full||this.options.keepUnchangedValues?c.push([" ",H]):c.push([" "]):(c.push(["~",Y.result]),p=!1)}else this.options.full||this.options.keepUnchangedValues?c.push([" ",G]):c.push([" "]);l+=10}break;case"delete":for(b=S,J=y,W=S<=J;W?b<J:b>J;W?b++:b--)c.push(["-",this.descalarize(s[b],r)]),l-=5;break;case"insert":for($=C,Z=A,ee=C<=Z;ee?$<Z:$>Z;ee?$++:$--)c.push(["+",this.descalarize(i[$],o)]),l-=5;break;case"replace":if(this.options.keysOnly){let G,H;for(b=S,H=y,G=S<=H;G?b<H:b>H;G?b++:b--){let z=this.diff(this.descalarize(s[b],r),this.descalarize(i[b-S+C],o));z.equal?c.push([" "]):(c.push(["~",z.result]),p=!1)}}else{let G,H,z,Y;for(b=S,H=y,G=S<=H;G?b<H:b>H;G?b++:b--)c.push(["-",this.descalarize(s[b],r)]),l-=5;for($=C,Y=A,z=C<=Y;z?$<Y:$>Y;z?$++:$--)c.push(["+",this.descalarize(i[$],o)]),l-=5}break}}return p||a.length===0?(this.options.full?c=e:c=void 0,l=100):l=Math.max(0,l),{score:l,result:c,equal:p}}diff(e,n){let r=g7(e),s=g7(n);if(r===s)switch(r){case"object":return this.objectDiff(e,n);case"array":return this.arrayDiff(e,n)}let o=100,i=e,a;return this.options.keysOnly?(a=!0,i=void 0):(r==="date"&&s==="date"?a=e.getTime()===n.getTime():a=e===n,a?this.options.full||(i=void 0):(o=0,this.options.outputNewOnly?i=n:i={__old:e,__new:n})),{score:o,result:i,equal:a}}};function NFt(t,e,n={}){return n.precision!==void 0&&(t=$Ft(t,n.precision),e=$Ft(e,n.precision)),new $Pe(n).diff(t,e).result}function EKr(t,e,n={}){return OFt(NFt(t,e,n),n)}LFt.exports={diff:NFt,diffString:EKr,colorize:OFt,colorizeToCallback:SKr}});var GFt=F((V1s,wKr)=>{wKr.exports={name:"@btc-embedded/cdk-extensions",description:"A collection of useful CDK extensions and common logic",repository:{type:"git",url:"https://github.com/btc-embedded/cdk-extensions.git"},bin:{catnip:"assets/cli/catnip.js"},scripts:{build:"npx projen build",bump:"npx projen bump",bundle:"npx projen bundle","bundle:cli/catnip":"npx projen bundle:cli/catnip","bundle:constructs/api-keys/lambdas/api-client-authorization.lambda":"npx projen bundle:constructs/api-keys/lambdas/api-client-authorization.lambda","bundle:constructs/api-keys/lambdas/api-client-authorization.lambda:watch":"npx projen bundle:constructs/api-keys/lambdas/api-client-authorization.lambda:watch","bundle:constructs/api-keys/lambdas/api-key-creation.lambda":"npx projen bundle:constructs/api-keys/lambdas/api-key-creation.lambda","bundle:constructs/api-keys/lambdas/api-key-creation.lambda:watch":"npx projen bundle:constructs/api-keys/lambdas/api-key-creation.lambda:watch","bundle:constructs/api-keys/lambdas/api-key-update.lambda":"npx projen bundle:constructs/api-keys/lambdas/api-key-update.lambda","bundle:constructs/api-keys/lambdas/api-key-update.lambda:watch":"npx projen bundle:constructs/api-keys/lambdas/api-key-update.lambda:watch","bundle:constructs/api-keys/lambdas/pre-token.lambda":"npx projen bundle:constructs/api-keys/lambdas/pre-token.lambda","bundle:constructs/api-keys/lambdas/pre-token.lambda:watch":"npx projen bundle:constructs/api-keys/lambdas/pre-token.lambda:watch","bundle:test/constructs/api-keys/integration/api-key-client-authorization-runner.lambda":"npx projen bundle:test/constructs/api-keys/integration/api-key-client-authorization-runner.lambda","bundle:test/constructs/api-keys/integration/api-key-client-authorization-runner.lambda:watch":"npx projen bundle:test/constructs/api-keys/integration/api-key-client-authorization-runner.lambda:watch","bundle:test/constructs/api-keys/integration/api-key-management-runner-unauthorized.lambda":"npx projen bundle:test/constructs/api-keys/integration/api-key-management-runner-unauthorized.lambda","bundle:test/constructs/api-keys/integration/api-key-management-runner-unauthorized.lambda:watch":"npx projen bundle:test/constructs/api-keys/integration/api-key-management-runner-unauthorized.lambda:watch","bundle:test/constructs/api-keys/integration/api-key-management-runner.lambda":"npx projen bundle:test/constructs/api-keys/integration/api-key-management-runner.lambda","bundle:test/constructs/api-keys/integration/api-key-management-runner.lambda:watch":"npx projen bundle:test/constructs/api-keys/integration/api-key-management-runner.lambda:watch","bundle:test/constructs/api-keys/integration/api-key-pre-token-handler-runner.lambda":"npx projen bundle:test/constructs/api-keys/integration/api-key-pre-token-handler-runner.lambda","bundle:test/constructs/api-keys/integration/api-key-pre-token-handler-runner.lambda:watch":"npx projen bundle:test/constructs/api-keys/integration/api-key-pre-token-handler-runner.lambda:watch",clobber:"npx projen clobber",compat:"npx projen compat",compile:"npx projen compile",default:"npx projen default",docgen:"npx projen docgen",eject:"npx projen eject",eslint:"npx projen eslint","eslint:ci":"npx projen eslint:ci",integ:"npx projen integ","integ:update":"npx projen integ:update",package:"npx projen package","package-all":"npx projen package-all","package:js":"npx projen package:js","post-compile":"npx projen post-compile","post-upgrade":"npx projen post-upgrade","pre-compile":"npx projen pre-compile","publish:git":"npx projen publish:git",release:"npx projen release",test:"npx projen test","test:watch":"npx projen test:watch",typecheck:"npx projen typecheck",unbump:"npx projen unbump","update-docs":"npx projen update-docs",upgrade:"npx projen upgrade",watch:"npx projen watch","yalc:watch":"npx projen yalc:watch",projen:"npx projen"},author:{name:"BTC Embedded Systems AG",url:"https://www.btc-embedded.com",organization:!0},devDependencies:{"@aws-cdk-containers/ecs-service-extensions":"2.0.1-alpha.535","@aws-cdk/integ-runner":"latest","@aws-cdk/integ-tests-alpha":"latest","@aws-sdk/client-cloudformation":"^3.993.0","@aws-sdk/client-cloudwatch-logs":"^3.993.0","@aws-sdk/client-ecs":"^3.993.0","@aws-sdk/client-ssm":"^3.999.0","@aws-sdk/credential-providers":"^3.993.0","@types/aws-api-gateway-client":"^0.3.3","@types/jest":"^30.0.0","@types/json-diff":"^1.0.3","@types/node":"^24.10.9","@types/url-template":"^3.0.0","@typescript-eslint/eslint-plugin":"^8","@typescript-eslint/parser":"^8","aws-api-gateway-client":"^0.3.7","aws-cdk-lib":"2.232.1","aws-sdk-client-mock":"^4.1.0","cdk-nag":"^2.37.55",commander:"^14.0.3","commit-and-tag-version":"^12",constructs:"10.0.5",esbuild:"^0.27.1",eslint:"^9","eslint-config-prettier":"^10.1.8","eslint-formatter-gitlab":"^7.0.1","eslint-import-resolver-typescript":"^4.4.4","eslint-plugin-import":"^2.32.0","eslint-plugin-prettier":"^5.5.5",jest:"^30.2.0","jest-junit":"^16",jsii:"~5.9.0","jsii-diff":"^1.125.0","jsii-docgen":"^10.5.0","jsii-pacmak":"^1.125.0","jsii-rosetta":"~5.9.0","json-diff":"^1.0.6",nodemon:"^3.1.11",prettier:"^3.8.0",projen:"^0.99.3","ts-jest":"^29.4.6","ts-node":"^10.9.2",typedoc:"^0.28.16","typedoc-plugin-markdown":"^4.9.0",typescript:"^5.9.3","url-template":"^3.1.1",yalc:"^1.0.0-pre.53"},peerDependencies:{"@aws-cdk-containers/ecs-service-extensions":">=2.0.1-alpha.535","aws-cdk-lib":"^2.232.1",constructs:"^10.0.5"},dependencies:{"@aws-lambda-powertools/logger":"^2.30.2","@aws-lambda-powertools/parameters":"^2.30.2","@aws-lambda-powertools/parser":"^2.30.2","@aws-sdk/client-cognito-identity-provider":"^3.965.0","@aws-sdk/client-dynamodb":"^3.948.0","@aws-sdk/client-secrets-manager":"^3.971.0","@aws-sdk/lib-dynamodb":"^3.948.0","@types/aws-lambda":"^8.10.159",yaml:"^2.8.2",zod:"~3"},bundledDependencies:["@aws-lambda-powertools/logger","@aws-lambda-powertools/parameters","@aws-lambda-powertools/parser","@aws-sdk/client-cognito-identity-provider","@aws-sdk/client-dynamodb","@aws-sdk/client-secrets-manager","@aws-sdk/lib-dynamodb","@types/aws-lambda","yaml","zod"],resolutions:{"@smithy/types":"^4.12.0"},keywords:["cdk"],main:"lib/index.js",license:"Apache-2.0",version:"0.22.20",jest:{coverageProvider:"v8",maxWorkers:4,collectCoverageFrom:["src/**/*.ts"],coveragePathIgnorePatterns:["/node_modules/","\\.generated\\.[jt]s$","<rootDir>/test/","\\.warnings\\.jsii\\.js$"],testMatch:["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],clearMocks:!0,collectCoverage:!0,coverageReporters:["json","lcov","clover","cobertura","text"],coverageDirectory:"coverage",testPathIgnorePatterns:["/node_modules/"],watchPathIgnorePatterns:["/node_modules/"],reporters:["default",["jest-junit",{outputDirectory:"test-reports"}]],transform:{"^.+\\.[t]sx?$":["ts-jest",{tsconfig:"tsconfig.dev.json",diagnostics:!1}]}},types:"lib/index.d.ts",stability:"experimental",jsii:{outdir:"dist",targets:{},tsc:{outDir:"lib",rootDir:"src"},excludeTypescript:["src/cli/**"]},"//":'~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen".'}});var WPe=P(jPe(),1),{program:BKr,createCommand:HKr,createArgument:VKr,createOption:jKr,CommanderError:WKr,InvalidArgumentError:zKr,InvalidOptionArgumentError:KKr,Command:zPe,Argument:QKr,Option:YKr,Help:JKr}=WPe.default;var UMt=P(AE()),qMt=P(S3()),GMt=P(cpe()),BMt=P(Gb()),HMt=P(LSe()),VMt=P(uPe()),jMt=P(Fre());function xI(t){return{...t.region&&{region:t.region},...t.profile&&{credentials:(0,jMt.fromIni)({profile:t.profile})}}}function HS(t){return new UMt.CloudFormationClient(xI(t))}function bI(t){return new BMt.ECSClient(xI(t))}function t7(t){return new qMt.CloudWatchLogsClient(xI(t))}function WMt(t){return new GMt.CognitoIdentityProviderClient(xI(t))}function zMt(t){return new HMt.SecretsManagerClient(xI(t))}function KMt(t){return new VMt.SSMClient(xI(t))}function lPe(t){return{cfClient:HS(t),ecsClient:bI(t),logsClient:t7(t)}}var DI=P(Gb());var EN=P(S3());async function*SN(t,e={}){let n,r=0;for(;;){if(e.maxPages!==void 0&&r>=e.maxPages)return;let s=await t(n);if(r+=1,yield{...s,page:r},!s.nextToken)return;n=s.nextToken}}async function*$i(t,e={}){for await(let n of SN(t,e))for(let r of n.items)yield r}var zzr=50,Kzr=10;async function QMt(t,e,n,r,s=Kzr){let o=[];for await(let i of SN(async a=>{let c=await t.send(new EN.DescribeLogStreamsCommand({logGroupName:e,orderBy:"LastEventTime",descending:!0,limit:zzr,nextToken:a}));return{items:c.logStreams??[],nextToken:c.nextToken}},{maxPages:s})){let a=i.items;o.push(a.map(l=>l.logStreamName).filter(l=>l!==void 0));let c=a.find(l=>r?l.logStreamName?.endsWith(`/${r}/${n}`):l.logStreamName?.includes(n));if(c?.logStreamName)return c.logStreamName}return o.flatMap(i=>i).find(i=>i.includes(n))}async function dPe(t,e,n){let r=await t.send(new EN.GetLogEventsCommand({logGroupName:e.logGroup,logStreamName:e.logStreamName,limit:n,startFromHead:!1}));return{state:{key:e.key,serviceName:e.serviceName,containerName:e.containerName,logGroup:e.logGroup,logStreamName:e.logStreamName,nextToken:r.nextForwardToken},events:r.events??[]}}async function YMt(t,e){let n=await t.send(new EN.GetLogEventsCommand({logGroupName:e.logGroup,logStreamName:e.logStreamName,nextToken:e.nextToken}));return{events:n.events??[],nextToken:n.nextForwardToken}}function JMt(t){return new Map(t.map(e=>[e.key,e]))}function Qzr(t){let e=t.split("/");return e.length>=3?e[e.length-2]:void 0}async function Yzr(t,e,n){let r=[];for await(let s of $i(async o=>{let i=await t.send(new DI.ListTasksCommand({cluster:e,serviceName:n,desiredStatus:"RUNNING",nextToken:o}));return{items:i.taskArns??[],nextToken:i.nextToken}}))r.push(s);return r}async function XMt(t,e){let n=e.split("/").pop()??e,r=Qzr(e),o=(await t.send(new DI.DescribeServicesCommand({...r&&{cluster:r},services:[e]}))).services?.[0];if(!o)return{context:void 0,warning:`[${n}] Could not retrieve service details, skipping.`};let i=o.clusterArn??r;if(!i)return{context:void 0,warning:`[${n}] Could not determine cluster, skipping.`};let a=o.taskDefinition;if(!a)return{context:void 0,warning:`[${n}] Missing task definition, skipping.`};let l=((await t.send(new DI.DescribeTaskDefinitionCommand({taskDefinition:a}))).taskDefinition?.containerDefinitions??[]).flatMap(p=>{let d=p.logConfiguration?.options?.["awslogs-group"];return!p.name||!d||p.logConfiguration?.logDriver!=="awslogs"?[]:[{containerName:p.name,logGroup:d}]});return l.length===0?{context:void 0,warning:`[${n}] No awslogs container configuration found, skipping.`}:{context:{serviceArn:e,serviceName:n,clusterArn:i,logConfigs:l},warning:void 0}}async function pPe(t,e,n){let r=await Yzr(t,n.clusterArn,n.serviceArn),s=[],o=new Set;for(let i of r){let a=i.split("/").pop()??i;for(let{containerName:c,logGroup:l}of n.logConfigs){let p=await QMt(e,l,a,c);if(!p)continue;let d=`${l}::${p}`;o.has(d)||(o.add(d),s.push({key:d,serviceName:n.serviceName,containerName:c,logGroup:l,logStreamName:p}))}}return s}var ZMt=P(AE());async function e1t(t,e){let n=[];for await(let r of $i(async s=>{let o=await t.send(new ZMt.ListStackResourcesCommand({StackName:e,NextToken:s}));return{items:o.StackResourceSummaries??[],nextToken:o.NextToken}}))r.ResourceType==="AWS::ECS::Service"&&r.PhysicalResourceId&&n.push(r.PhysicalResourceId);return n}var Jzr=2e3,Xzr=1e4;function Zzr(t,e,n){if(!e)return t;let r=t.filter(s=>s.includes(e));if(r.length===0)throw new Error(`No ECS services matching '${e}' found in stack '${n}'.`);return r}function e6r(t,e){let n=[];for(let r of t)r.warning&&e.displayServiceWarning(r.warning),r.context&&n.push(r.context);return n}function mPe(t,e,n,r){t.displayLogEvents({serviceName:e.serviceName,containerName:e.containerName,events:n,mode:r})}async function t6r(t,e,n,r,s,o){let i=new Map;for(let a of t){let c=await pPe(e.ecsClient,e.logsClient,a);if(c.length===0){n.displayNoRunningStreams(a.serviceName);continue}(await Promise.all(c.map(async p=>{try{return{key:p.key,...await dPe(e.logsClient,p,o)}}catch(d){n.displayPrimeError(p,r.toErrorMessage(d));return}}))).filter(p=>p!==void 0).forEach(p=>{mPe(n,p.state,p.events,s),i.set(p.key,p.state)})}return i}async function n6r(t,e,n,r,s,o){(await Promise.all(Array.from(t.values()).filter(()=>o()).map(async a=>{try{let c=await YMt(e.logsClient,a);return mPe(n,a,c.events,s),{key:a.key,nextToken:c.nextToken}}catch(c){n.displayPollError(a,r.toErrorMessage(c));return}}))).filter(a=>a!==void 0).forEach(a=>{let c=t.get(a.key);c&&(c.nextToken=a.nextToken)})}async function r6r(t,e,n,r,s,o,i){let a=await Promise.all(t.map(async d=>{try{return await pPe(n.ecsClient,n.logsClient,d)}catch(S){return r.displayReconcileError(d.serviceName,s.toErrorMessage(S)),[]}})),c=JMt(a.flatMap(d=>d)),l=Array.from(c.entries()).filter(([d])=>!e.has(d));(await Promise.all(l.map(async([d,S])=>{try{return{key:d,stream:S,...await dPe(n.logsClient,S,i)}}catch(y){r.displayPrimeNewStreamError(S,s.toErrorMessage(y));return}}))).filter(d=>d!==void 0).forEach(d=>{mPe(r,d.state,d.events,o),e.set(d.key,d.state),r.displayStreamStarted(d.stream)}),Array.from(e.keys()).filter(d=>!c.has(d)).forEach(d=>{let S=e.get(d);e.delete(d),S&&r.displayStreamEnded(S)})}async function t1t(t,e,n,r,s=()=>!0){n.displayCommandContext({commandName:"ecs-logs",stackName:t.stackName,region:t.region});let o=await e1t(e.cfClient,t.stackName);if(o.length===0)throw new Error(`No ECS services found in stack '${t.stackName}'.`);let i=Zzr(o,t.service,t.stackName);t.output==="raw"&&i.length>1&&n.displayInterleavingWarning();let a=await Promise.all(i.map(d=>XMt(e.ecsClient,d))),c=e6r(a,n),l=await t6r(c,e,n,r,t.output,t.tail);if(!t.follow)return;l.size===0&&n.displayNoStreamsToFollow();let p=Date.now();for(;s()&&(await r.sleep(Jzr),!!s());)await n6r(l,e,n,r,t.output,s),!(Date.now()-p<Xzr)&&(await r6r(c,l,e,n,r,t.output,t.tail),p=Date.now())}var yN="\x1B[0m",n7="\x1B[1m",s6r="\x1B[2m",o6r="\x1B[31m",i6r="\x1B[36m";function _N(){return process.env.NO_COLOR!==void 0?!1:!!process.stdout.isTTY}function wI(t){let e=` \u{1F431} catnip \u2014 ${t} `,n=Math.max(e.length+2,44),r="\u2550".repeat(n);if(!_N()){console.log(`\u2554${r}\u2557`),console.log(`\u2551${e.padEnd(n)}\u2551`),console.log(`\u255A${r}\u255D`);return}console.log(`${i6r}${n7}\u2554${r}\u2557`),console.log(`\u2551${e.padEnd(n)}\u2551`),console.log(`\u255A${r}\u255D${yN}`)}function df(t){if(!_N()){console.log(`
|
|
251
|
+
`)}),n.join("")};DFt.exports={colorize:gKr,colorizeToArray:fKr,colorizeToCallback:wPe}});var kFt=F((O1s,LFt)=>{var{SequenceMatcher:hKr}=X1t(),{extendedTypeOf:g7,roundObj:$Ft}=bPe(),{colorize:OFt,colorizeToCallback:SKr}=wFt(),$Pe=class{constructor(e){e.outputKeys=e.outputKeys||[],e.excludeKeys=e.excludeKeys||[],this.options=e}isScalar(e){return typeof e!="object"||e===null}objectDiff(e,n){let r={},s=0,o=!0;for(let[i,a]of Object.entries(e))if(!this.options.outputNewOnly){let c="__deleted";!(i in n)&&!this.options.excludeKeys.includes(i)&&(r[`${i}${c}`]=a,s-=30,o=!1)}for(let[i,a]of Object.entries(n)){let c=this.options.outputNewOnly?"":"__added";!(i in e)&&!this.options.excludeKeys.includes(i)&&(r[`${i}${c}`]=a,s-=30,o=!1)}for(let[i,a]of Object.entries(e))if(i in n){if(this.options.excludeKeys.includes(i))continue;s+=20;let c=n[i],l=this.diff(a,c);l.equal?(this.options.full||this.options.outputKeys.includes(i))&&(r[i]=a):(r[i]=l.result,o=!1),s+=Math.min(20,Math.max(-10,l.score/5))}return o?(s=100*Math.max(Object.keys(e).length,.5),this.options.full||(r=void 0)):s=Math.max(0,s),{score:s,result:r,equal:o}}findMatchingObject(e,n,r){let s=null;for(let[o,{item:i,index:a}]of Object.entries(r))if(o!=="__next"){let c=Math.abs(a-n);if(g7(e)===g7(i)){let{score:l}=this.diff(e,i);(!s||l>s.score||l===s.score&&c<s.indexDistance)&&(s={score:l,key:o,indexDistance:c})}}return s}scalarize(e,n,r){let s=[];if(r){let i={};for(let a=0;a<e.length;a++){let c=e[a];if(this.isScalar(c))continue;let l=this.findMatchingObject(c,a,r);l&&(!i[l.key]||l.score>i[l.key].score)&&(i[l.key]={score:l.score,index:a})}for(let[a,c]of Object.entries(i))s[c.index]=a}let o=[];for(let i=0;i<e.length;i++){let a=e[i];if(this.isScalar(a))o.push(a);else{let c=s[i]||"__$!SCALAR"+n.__next++;n[c]={item:a,index:i},o.push(c)}}return o}isScalarized(e,n){return typeof e=="string"&&e in n}descalarize(e,n){return this.isScalarized(e,n)?n[e].item:e}arrayDiff(e,n){let r={__next:1},s=this.scalarize(e,r),o={__next:r.__next},i=this.scalarize(n,o,r);this.options.sort&&(s.sort(),i.sort());let a=new hKr(null,s,i).getOpcodes(),c=[],l=0,p=!0;for(let[d,S,y,C,A]of a){let b,$,k,j,W,J,ee,Z;switch(d==="equal"||this.options.keysOnly&&d==="replace"||(p=!1),d){case"equal":for(b=S,j=y,k=S<=j;k?b<j:b>j;k?b++:b--){let G=s[b];if(this.isScalarized(G,r)){if(!this.isScalarized(G,o))throw new Error(`internal bug: isScalarized(item, originals1) != isScalarized(item, originals2) for item ${JSON.stringify(G)}`);let H=this.descalarize(G,r),z=this.descalarize(G,o),Y=this.diff(H,z);Y.equal?this.options.full||this.options.keepUnchangedValues?c.push([" ",H]):c.push([" "]):(c.push(["~",Y.result]),p=!1)}else this.options.full||this.options.keepUnchangedValues?c.push([" ",G]):c.push([" "]);l+=10}break;case"delete":for(b=S,J=y,W=S<=J;W?b<J:b>J;W?b++:b--)c.push(["-",this.descalarize(s[b],r)]),l-=5;break;case"insert":for($=C,Z=A,ee=C<=Z;ee?$<Z:$>Z;ee?$++:$--)c.push(["+",this.descalarize(i[$],o)]),l-=5;break;case"replace":if(this.options.keysOnly){let G,H;for(b=S,H=y,G=S<=H;G?b<H:b>H;G?b++:b--){let z=this.diff(this.descalarize(s[b],r),this.descalarize(i[b-S+C],o));z.equal?c.push([" "]):(c.push(["~",z.result]),p=!1)}}else{let G,H,z,Y;for(b=S,H=y,G=S<=H;G?b<H:b>H;G?b++:b--)c.push(["-",this.descalarize(s[b],r)]),l-=5;for($=C,Y=A,z=C<=Y;z?$<Y:$>Y;z?$++:$--)c.push(["+",this.descalarize(i[$],o)]),l-=5}break}}return p||a.length===0?(this.options.full?c=e:c=void 0,l=100):l=Math.max(0,l),{score:l,result:c,equal:p}}diff(e,n){let r=g7(e),s=g7(n);if(r===s)switch(r){case"object":return this.objectDiff(e,n);case"array":return this.arrayDiff(e,n)}let o=100,i=e,a;return this.options.keysOnly?(a=!0,i=void 0):(r==="date"&&s==="date"?a=e.getTime()===n.getTime():a=e===n,a?this.options.full||(i=void 0):(o=0,this.options.outputNewOnly?i=n:i={__old:e,__new:n})),{score:o,result:i,equal:a}}};function NFt(t,e,n={}){return n.precision!==void 0&&(t=$Ft(t,n.precision),e=$Ft(e,n.precision)),new $Pe(n).diff(t,e).result}function EKr(t,e,n={}){return OFt(NFt(t,e,n),n)}LFt.exports={diff:NFt,diffString:EKr,colorize:OFt,colorizeToCallback:SKr}});var GFt=F((V1s,wKr)=>{wKr.exports={name:"@btc-embedded/cdk-extensions",description:"A collection of useful CDK extensions and common logic",repository:{type:"git",url:"https://github.com/btc-embedded/cdk-extensions.git"},bin:{catnip:"assets/cli/catnip.js"},scripts:{build:"npx projen build",bump:"npx projen bump",bundle:"npx projen bundle","bundle:cli/catnip":"npx projen bundle:cli/catnip","bundle:constructs/api-keys/lambdas/api-client-authorization.lambda":"npx projen bundle:constructs/api-keys/lambdas/api-client-authorization.lambda","bundle:constructs/api-keys/lambdas/api-client-authorization.lambda:watch":"npx projen bundle:constructs/api-keys/lambdas/api-client-authorization.lambda:watch","bundle:constructs/api-keys/lambdas/api-key-creation.lambda":"npx projen bundle:constructs/api-keys/lambdas/api-key-creation.lambda","bundle:constructs/api-keys/lambdas/api-key-creation.lambda:watch":"npx projen bundle:constructs/api-keys/lambdas/api-key-creation.lambda:watch","bundle:constructs/api-keys/lambdas/api-key-update.lambda":"npx projen bundle:constructs/api-keys/lambdas/api-key-update.lambda","bundle:constructs/api-keys/lambdas/api-key-update.lambda:watch":"npx projen bundle:constructs/api-keys/lambdas/api-key-update.lambda:watch","bundle:constructs/api-keys/lambdas/pre-token.lambda":"npx projen bundle:constructs/api-keys/lambdas/pre-token.lambda","bundle:constructs/api-keys/lambdas/pre-token.lambda:watch":"npx projen bundle:constructs/api-keys/lambdas/pre-token.lambda:watch","bundle:test/constructs/api-keys/integration/api-key-client-authorization-runner.lambda":"npx projen bundle:test/constructs/api-keys/integration/api-key-client-authorization-runner.lambda","bundle:test/constructs/api-keys/integration/api-key-client-authorization-runner.lambda:watch":"npx projen bundle:test/constructs/api-keys/integration/api-key-client-authorization-runner.lambda:watch","bundle:test/constructs/api-keys/integration/api-key-management-runner-unauthorized.lambda":"npx projen bundle:test/constructs/api-keys/integration/api-key-management-runner-unauthorized.lambda","bundle:test/constructs/api-keys/integration/api-key-management-runner-unauthorized.lambda:watch":"npx projen bundle:test/constructs/api-keys/integration/api-key-management-runner-unauthorized.lambda:watch","bundle:test/constructs/api-keys/integration/api-key-management-runner.lambda":"npx projen bundle:test/constructs/api-keys/integration/api-key-management-runner.lambda","bundle:test/constructs/api-keys/integration/api-key-management-runner.lambda:watch":"npx projen bundle:test/constructs/api-keys/integration/api-key-management-runner.lambda:watch","bundle:test/constructs/api-keys/integration/api-key-pre-token-handler-runner.lambda":"npx projen bundle:test/constructs/api-keys/integration/api-key-pre-token-handler-runner.lambda","bundle:test/constructs/api-keys/integration/api-key-pre-token-handler-runner.lambda:watch":"npx projen bundle:test/constructs/api-keys/integration/api-key-pre-token-handler-runner.lambda:watch",clobber:"npx projen clobber",compat:"npx projen compat",compile:"npx projen compile",default:"npx projen default",docgen:"npx projen docgen",eject:"npx projen eject",eslint:"npx projen eslint","eslint:ci":"npx projen eslint:ci",integ:"npx projen integ","integ:update":"npx projen integ:update",package:"npx projen package","package-all":"npx projen package-all","package:js":"npx projen package:js","post-compile":"npx projen post-compile","post-upgrade":"npx projen post-upgrade","pre-compile":"npx projen pre-compile","publish:git":"npx projen publish:git",release:"npx projen release",test:"npx projen test","test:watch":"npx projen test:watch",typecheck:"npx projen typecheck",unbump:"npx projen unbump","update-docs":"npx projen update-docs",upgrade:"npx projen upgrade",watch:"npx projen watch","yalc:watch":"npx projen yalc:watch",projen:"npx projen"},author:{name:"BTC Embedded Systems AG",url:"https://www.btc-embedded.com",organization:!0},devDependencies:{"@aws-cdk-containers/ecs-service-extensions":"2.0.1-alpha.535","@aws-cdk/integ-runner":"latest","@aws-cdk/integ-tests-alpha":"latest","@aws-sdk/client-cloudformation":"^3.993.0","@aws-sdk/client-cloudwatch-logs":"^3.993.0","@aws-sdk/client-ecs":"^3.993.0","@aws-sdk/client-ssm":"^3.999.0","@aws-sdk/credential-providers":"^3.993.0","@types/aws-api-gateway-client":"^0.3.3","@types/jest":"^30.0.0","@types/json-diff":"^1.0.3","@types/node":"^24.10.9","@types/url-template":"^3.0.0","@typescript-eslint/eslint-plugin":"^8","@typescript-eslint/parser":"^8","aws-api-gateway-client":"^0.3.7","aws-cdk-lib":"2.232.1","aws-sdk-client-mock":"^4.1.0","cdk-nag":"^2.37.55",commander:"^14.0.3","commit-and-tag-version":"^12",constructs:"10.0.5",esbuild:"^0.27.1",eslint:"^9","eslint-config-prettier":"^10.1.8","eslint-formatter-gitlab":"^7.0.1","eslint-import-resolver-typescript":"^4.4.4","eslint-plugin-import":"^2.32.0","eslint-plugin-prettier":"^5.5.5",jest:"^30.2.0","jest-junit":"^16",jsii:"~5.9.0","jsii-diff":"^1.125.0","jsii-docgen":"^10.5.0","jsii-pacmak":"^1.125.0","jsii-rosetta":"~5.9.0","json-diff":"^1.0.6",nodemon:"^3.1.11",prettier:"^3.8.0",projen:"^0.99.3","ts-jest":"^29.4.6","ts-node":"^10.9.2",typedoc:"^0.28.16","typedoc-plugin-markdown":"^4.9.0",typescript:"^5.9.3","url-template":"^3.1.1",yalc:"^1.0.0-pre.53"},peerDependencies:{"@aws-cdk-containers/ecs-service-extensions":">=2.0.1-alpha.535","aws-cdk-lib":"^2.232.1",constructs:"^10.0.5"},dependencies:{"@aws-lambda-powertools/logger":"^2.30.2","@aws-lambda-powertools/parameters":"^2.30.2","@aws-lambda-powertools/parser":"^2.30.2","@aws-sdk/client-cognito-identity-provider":"^3.965.0","@aws-sdk/client-dynamodb":"^3.948.0","@aws-sdk/client-secrets-manager":"^3.971.0","@aws-sdk/lib-dynamodb":"^3.948.0","@types/aws-lambda":"^8.10.159",yaml:"^2.8.2",zod:"~3"},bundledDependencies:["@aws-lambda-powertools/logger","@aws-lambda-powertools/parameters","@aws-lambda-powertools/parser","@aws-sdk/client-cognito-identity-provider","@aws-sdk/client-dynamodb","@aws-sdk/client-secrets-manager","@aws-sdk/lib-dynamodb","@types/aws-lambda","yaml","zod"],resolutions:{"@smithy/types":"^4.12.0"},keywords:["cdk"],main:"lib/index.js",license:"Apache-2.0",version:"0.22.22",jest:{coverageProvider:"v8",maxWorkers:4,collectCoverageFrom:["src/**/*.ts"],coveragePathIgnorePatterns:["/node_modules/","\\.generated\\.[jt]s$","<rootDir>/test/","\\.warnings\\.jsii\\.js$"],testMatch:["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],clearMocks:!0,collectCoverage:!0,coverageReporters:["json","lcov","clover","cobertura","text"],coverageDirectory:"coverage",testPathIgnorePatterns:["/node_modules/"],watchPathIgnorePatterns:["/node_modules/"],reporters:["default",["jest-junit",{outputDirectory:"test-reports"}]],transform:{"^.+\\.[t]sx?$":["ts-jest",{tsconfig:"tsconfig.dev.json",diagnostics:!1}]}},types:"lib/index.d.ts",stability:"experimental",jsii:{outdir:"dist",targets:{},tsc:{outDir:"lib",rootDir:"src"},excludeTypescript:["src/cli/**"]},"//":'~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen".'}});var WPe=P(jPe(),1),{program:BKr,createCommand:HKr,createArgument:VKr,createOption:jKr,CommanderError:WKr,InvalidArgumentError:zKr,InvalidOptionArgumentError:KKr,Command:zPe,Argument:QKr,Option:YKr,Help:JKr}=WPe.default;var UMt=P(AE()),qMt=P(S3()),GMt=P(cpe()),BMt=P(Gb()),HMt=P(LSe()),VMt=P(uPe()),jMt=P(Fre());function xI(t){return{...t.region&&{region:t.region},...t.profile&&{credentials:(0,jMt.fromIni)({profile:t.profile})}}}function HS(t){return new UMt.CloudFormationClient(xI(t))}function bI(t){return new BMt.ECSClient(xI(t))}function t7(t){return new qMt.CloudWatchLogsClient(xI(t))}function WMt(t){return new GMt.CognitoIdentityProviderClient(xI(t))}function zMt(t){return new HMt.SecretsManagerClient(xI(t))}function KMt(t){return new VMt.SSMClient(xI(t))}function lPe(t){return{cfClient:HS(t),ecsClient:bI(t),logsClient:t7(t)}}var DI=P(Gb());var EN=P(S3());async function*SN(t,e={}){let n,r=0;for(;;){if(e.maxPages!==void 0&&r>=e.maxPages)return;let s=await t(n);if(r+=1,yield{...s,page:r},!s.nextToken)return;n=s.nextToken}}async function*$i(t,e={}){for await(let n of SN(t,e))for(let r of n.items)yield r}var zzr=50,Kzr=10;async function QMt(t,e,n,r,s=Kzr){let o=[];for await(let i of SN(async a=>{let c=await t.send(new EN.DescribeLogStreamsCommand({logGroupName:e,orderBy:"LastEventTime",descending:!0,limit:zzr,nextToken:a}));return{items:c.logStreams??[],nextToken:c.nextToken}},{maxPages:s})){let a=i.items;o.push(a.map(l=>l.logStreamName).filter(l=>l!==void 0));let c=a.find(l=>r?l.logStreamName?.endsWith(`/${r}/${n}`):l.logStreamName?.includes(n));if(c?.logStreamName)return c.logStreamName}return o.flatMap(i=>i).find(i=>i.includes(n))}async function dPe(t,e,n){let r=await t.send(new EN.GetLogEventsCommand({logGroupName:e.logGroup,logStreamName:e.logStreamName,limit:n,startFromHead:!1}));return{state:{key:e.key,serviceName:e.serviceName,containerName:e.containerName,logGroup:e.logGroup,logStreamName:e.logStreamName,nextToken:r.nextForwardToken},events:r.events??[]}}async function YMt(t,e){let n=await t.send(new EN.GetLogEventsCommand({logGroupName:e.logGroup,logStreamName:e.logStreamName,nextToken:e.nextToken}));return{events:n.events??[],nextToken:n.nextForwardToken}}function JMt(t){return new Map(t.map(e=>[e.key,e]))}function Qzr(t){let e=t.split("/");return e.length>=3?e[e.length-2]:void 0}async function Yzr(t,e,n){let r=[];for await(let s of $i(async o=>{let i=await t.send(new DI.ListTasksCommand({cluster:e,serviceName:n,desiredStatus:"RUNNING",nextToken:o}));return{items:i.taskArns??[],nextToken:i.nextToken}}))r.push(s);return r}async function XMt(t,e){let n=e.split("/").pop()??e,r=Qzr(e),o=(await t.send(new DI.DescribeServicesCommand({...r&&{cluster:r},services:[e]}))).services?.[0];if(!o)return{context:void 0,warning:`[${n}] Could not retrieve service details, skipping.`};let i=o.clusterArn??r;if(!i)return{context:void 0,warning:`[${n}] Could not determine cluster, skipping.`};let a=o.taskDefinition;if(!a)return{context:void 0,warning:`[${n}] Missing task definition, skipping.`};let l=((await t.send(new DI.DescribeTaskDefinitionCommand({taskDefinition:a}))).taskDefinition?.containerDefinitions??[]).flatMap(p=>{let d=p.logConfiguration?.options?.["awslogs-group"];return!p.name||!d||p.logConfiguration?.logDriver!=="awslogs"?[]:[{containerName:p.name,logGroup:d}]});return l.length===0?{context:void 0,warning:`[${n}] No awslogs container configuration found, skipping.`}:{context:{serviceArn:e,serviceName:n,clusterArn:i,logConfigs:l},warning:void 0}}async function pPe(t,e,n){let r=await Yzr(t,n.clusterArn,n.serviceArn),s=[],o=new Set;for(let i of r){let a=i.split("/").pop()??i;for(let{containerName:c,logGroup:l}of n.logConfigs){let p=await QMt(e,l,a,c);if(!p)continue;let d=`${l}::${p}`;o.has(d)||(o.add(d),s.push({key:d,serviceName:n.serviceName,containerName:c,logGroup:l,logStreamName:p}))}}return s}var ZMt=P(AE());async function e1t(t,e){let n=[];for await(let r of $i(async s=>{let o=await t.send(new ZMt.ListStackResourcesCommand({StackName:e,NextToken:s}));return{items:o.StackResourceSummaries??[],nextToken:o.NextToken}}))r.ResourceType==="AWS::ECS::Service"&&r.PhysicalResourceId&&n.push(r.PhysicalResourceId);return n}var Jzr=2e3,Xzr=1e4;function Zzr(t,e,n){if(!e)return t;let r=t.filter(s=>s.includes(e));if(r.length===0)throw new Error(`No ECS services matching '${e}' found in stack '${n}'.`);return r}function e6r(t,e){let n=[];for(let r of t)r.warning&&e.displayServiceWarning(r.warning),r.context&&n.push(r.context);return n}function mPe(t,e,n,r){t.displayLogEvents({serviceName:e.serviceName,containerName:e.containerName,events:n,mode:r})}async function t6r(t,e,n,r,s,o){let i=new Map;for(let a of t){let c=await pPe(e.ecsClient,e.logsClient,a);if(c.length===0){n.displayNoRunningStreams(a.serviceName);continue}(await Promise.all(c.map(async p=>{try{return{key:p.key,...await dPe(e.logsClient,p,o)}}catch(d){n.displayPrimeError(p,r.toErrorMessage(d));return}}))).filter(p=>p!==void 0).forEach(p=>{mPe(n,p.state,p.events,s),i.set(p.key,p.state)})}return i}async function n6r(t,e,n,r,s,o){(await Promise.all(Array.from(t.values()).filter(()=>o()).map(async a=>{try{let c=await YMt(e.logsClient,a);return mPe(n,a,c.events,s),{key:a.key,nextToken:c.nextToken}}catch(c){n.displayPollError(a,r.toErrorMessage(c));return}}))).filter(a=>a!==void 0).forEach(a=>{let c=t.get(a.key);c&&(c.nextToken=a.nextToken)})}async function r6r(t,e,n,r,s,o,i){let a=await Promise.all(t.map(async d=>{try{return await pPe(n.ecsClient,n.logsClient,d)}catch(S){return r.displayReconcileError(d.serviceName,s.toErrorMessage(S)),[]}})),c=JMt(a.flatMap(d=>d)),l=Array.from(c.entries()).filter(([d])=>!e.has(d));(await Promise.all(l.map(async([d,S])=>{try{return{key:d,stream:S,...await dPe(n.logsClient,S,i)}}catch(y){r.displayPrimeNewStreamError(S,s.toErrorMessage(y));return}}))).filter(d=>d!==void 0).forEach(d=>{mPe(r,d.state,d.events,o),e.set(d.key,d.state),r.displayStreamStarted(d.stream)}),Array.from(e.keys()).filter(d=>!c.has(d)).forEach(d=>{let S=e.get(d);e.delete(d),S&&r.displayStreamEnded(S)})}async function t1t(t,e,n,r,s=()=>!0){n.displayCommandContext({commandName:"ecs-logs",stackName:t.stackName,region:t.region});let o=await e1t(e.cfClient,t.stackName);if(o.length===0)throw new Error(`No ECS services found in stack '${t.stackName}'.`);let i=Zzr(o,t.service,t.stackName);t.output==="raw"&&i.length>1&&n.displayInterleavingWarning();let a=await Promise.all(i.map(d=>XMt(e.ecsClient,d))),c=e6r(a,n),l=await t6r(c,e,n,r,t.output,t.tail);if(!t.follow)return;l.size===0&&n.displayNoStreamsToFollow();let p=Date.now();for(;s()&&(await r.sleep(Jzr),!!s());)await n6r(l,e,n,r,t.output,s),!(Date.now()-p<Xzr)&&(await r6r(c,l,e,n,r,t.output,t.tail),p=Date.now())}var yN="\x1B[0m",n7="\x1B[1m",s6r="\x1B[2m",o6r="\x1B[31m",i6r="\x1B[36m";function _N(){return process.env.NO_COLOR!==void 0?!1:!!process.stdout.isTTY}function wI(t){let e=` \u{1F431} catnip \u2014 ${t} `,n=Math.max(e.length+2,44),r="\u2550".repeat(n);if(!_N()){console.log(`\u2554${r}\u2557`),console.log(`\u2551${e.padEnd(n)}\u2551`),console.log(`\u255A${r}\u255D`);return}console.log(`${i6r}${n7}\u2554${r}\u2557`),console.log(`\u2551${e.padEnd(n)}\u2551`),console.log(`\u255A${r}\u255D${yN}`)}function df(t){if(!_N()){console.log(`
|
|
252
252
|
${t}`);return}console.log(`
|
|
253
253
|
${n7}${t}${yN}`)}function VS(t){if(!_N()){process.stderr.write(`Error: ${t}
|
|
254
254
|
`);return}process.stderr.write(`${o6r}${n7}Error:${yN} ${t}
|
|
@@ -145,5 +145,5 @@ class EventPipe extends construct_1.Construct {
|
|
|
145
145
|
}
|
|
146
146
|
exports.EventPipe = EventPipe;
|
|
147
147
|
_a = JSII_RTTI_SYMBOL_1;
|
|
148
|
-
EventPipe[_a] = { fqn: "@btc-embedded/cdk-extensions.EventPipe", version: "0.22.
|
|
148
|
+
EventPipe[_a] = { fqn: "@btc-embedded/cdk-extensions.EventPipe", version: "0.22.22" };
|
|
149
149
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRQaXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0cnVjdHMvRXZlbnRQaXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQTBDO0FBQzFDLGlEQUE2RDtBQUU3RCxxREFBZ0Q7QUFHaEQsd0RBQXFEO0FBQ3JELDBDQUEwQztBQUMxQyx3RUFBdUU7QUFzQ3ZFLElBQVksUUFpQlg7QUFqQkQsV0FBWSxRQUFRO0lBQ2xCOztPQUVHO0lBQ0gsdUJBQVcsQ0FBQTtJQUNYOztPQUVHO0lBQ0gsMkJBQWUsQ0FBQTtJQUNmOztPQUVHO0lBQ0gseUJBQWEsQ0FBQTtJQUNiOztPQUVHO0lBQ0gsMkJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBakJXLFFBQVEsd0JBQVIsUUFBUSxRQWlCbkI7QUFFRDs7R0FFRztBQUNILElBQVksY0FjWDtBQWRELFdBQVksY0FBYztJQUN4Qjs7Ozs7T0FLRztJQUNILDJFQUFnQixDQUFBO0lBQ2hCOzs7O09BSUc7SUFDSCx5RUFBZSxDQUFBO0FBQ2pCLENBQUMsRUFkVyxjQUFjLDhCQUFkLGNBQWMsUUFjekI7QUEyRkQ7O0dBRUc7QUFDSCxNQUFhLFNBQVUsU0FBUSxxQkFBUztJQUd0QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXFCO1FBQzdELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxrQkFBa0IsR0FDcEIsY0FBYyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDekUsSUFBSSw0QkFBNEIsR0FDOUIsWUFBWSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFckUsSUFBSSxXQUFXLEdBQUcsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFM0UsSUFBSSxTQUFTLEdBQUcsV0FBVyxLQUFLLFNBQVMsQ0FBQztRQUUxQyxJQUFJLFNBQVMsR0FBRyxTQUFTO1lBQ3ZCLENBQUMsQ0FBQyxXQUFZLENBQUMsUUFBUTtZQUN2QixDQUFDLENBQUMsa0JBQW1CLENBQUMsZUFBZSxDQUFDO1FBRXhDLElBQUksWUFBWSxHQUFHLFNBQVMsQ0FBQztRQUM3QixJQUFJLElBQUEsNkNBQXNCLEVBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMvQix5QkFBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLDRCQUE0QixDQUFDLENBQUM7WUFDaEUsWUFBWSxHQUFHLFNBQVMsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUk7WUFDUCxLQUFLLENBQUMsSUFBSTtnQkFDVixJQUFJLGNBQUksQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO29CQUM5QixTQUFTLEVBQUUsSUFBSSwwQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDdkQsQ0FBQyxDQUFDO1FBRUwsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDLE1BQU07WUFDL0IsQ0FBQyxDQUFDO2dCQUNFLE9BQU8sRUFBRTtvQkFDUDt3QkFDRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQzs0QkFDdEIsSUFBSSxFQUFFO2dDQUNKLEdBQUcsS0FBSyxDQUFDLE1BQU07NkJBQ2hCO3lCQUNGLENBQUM7cUJBQ0g7aUJBQ0Y7YUFDRjtZQUNILENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxJQUFJLGdCQUFnQixHQUF5QyxFQUFFLENBQUM7UUFDaEUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixnQkFBZ0IsR0FBRztnQkFDakIsa0JBQWtCLEVBQUU7b0JBQ2xCLGNBQWMsRUFBRSxTQUFTO2lCQUMxQjthQUNGLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLGdCQUFnQixHQUFHO2dCQUNqQixrQ0FBa0MsRUFBRTtvQkFDbEMsY0FBYyxFQUFFLDRCQUE0QixFQUFFLGNBQWM7d0JBQzFELENBQUMsQ0FBQyxjQUFjLENBQUMsNEJBQTRCLENBQUMsY0FBYyxDQUFDO3dCQUM3RCxDQUFDLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDcEQ7Z0JBQ0QsR0FBRyxDQUFDLDRCQUE0QixFQUFFLGFBQWEsSUFBSTtvQkFDakQsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQzNCLDRCQUE0QixDQUFDLGFBQWEsQ0FDM0MsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDO2lCQUNuQyxDQUFDO2FBQ0gsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLGdCQUFnQixHQUFHO1lBQ3JCLGtCQUFrQixFQUFFO2dCQUNsQixTQUFTLEVBQUUsQ0FBQzthQUNiO1lBQ0QsR0FBRyxDQUFDLGNBQWMsSUFBSSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsQ0FBQztTQUMxRCxDQUFDO1FBRUYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7WUFDekMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVE7Z0JBQ2YsSUFBSSxzQkFBVyxDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRTtvQkFDekMsT0FBTyxFQUFFLFlBQVk7aUJBQ3RCLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO1lBQ2xELENBQUMsQ0FBQztnQkFDRSxnQkFBZ0IsRUFBRTtvQkFDaEIsNEJBQTRCLEVBQUU7d0JBQzVCLFdBQVcsRUFBRSxRQUFTLENBQUMsV0FBVztxQkFDbkM7b0JBQ0QsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRO2lCQUN0QjthQUNGO1lBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQLElBQUksbUJBQU8sQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQzdCLEdBQUcsaUJBQWlCO1lBQ3BCLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDMUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUTtZQUM3QixNQUFNLEVBQUUsU0FBUztZQUNqQixnQkFBZ0IsRUFBRSxnQkFBZ0I7WUFDbEMsZ0JBQWdCLEVBQUUsZ0JBQWdCO1lBQ2xDLFlBQVksRUFBRSxZQUFZO1NBQzNCLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELFFBQVEsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTyxjQUFjLENBQUMsS0FBcUI7UUFDMUMsT0FBTyxLQUFLLENBQUMsUUFBUSxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDekUsQ0FBQzs7QUE5R0gsOEJBK0dDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5ub3RhdGlvbnMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IFJvbGUsIFNlcnZpY2VQcmluY2lwYWwgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgSUxvZ0dyb3VwIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQgeyBDZm5QaXBlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1waXBlc1wiO1xuaW1wb3J0IHsgSVF1ZXVlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zcXNcIjtcbmltcG9ydCB7IElTdGF0ZU1hY2hpbmUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzL2xpYi9jb25zdHJ1Y3RcIjtcbmltcG9ydCB7IEJUQ0xvZ0dyb3VwIH0gZnJvbSBcIi4uL3BsYXRmb3JtXCI7XG5pbXBvcnQgeyBpc0RlYWN0aXZhdGVkQ29uc3RydWN0IH0gZnJvbSBcIi4uL3V0aWxzL2RlYWN0aXZhdGVkQ29uc3RydWN0XCI7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgcGlwZSBjb25zdHJ1Y3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRQaXBlUHJvcHMge1xuICAvKipcbiAgICogVGhlIHNvdXJjZSBTUVMgcXVldWUuIE5vIG90aGVyIHNvdXJjZSB0eXBlcyBhcmUgc3VwcG9ydGVkIGF0IHRoZSBtb21lbnQuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U6IElRdWV1ZTtcblxuICAvKipcbiAgICogVGhlIHRhcmdldCBTUVMgcXVldWUgb3IgdGFyZ2V0IHN0ZXAgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ6IFRhcmdldFF1ZXVlIHwgVGFyZ2V0U3RlcEZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSB1c2VkIGJ5IHRoZSBldmVudCBwaXBlLiBJZiBvbWl0dGVkLCBhIG5ldyByb2xlIGlzIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSByb2xlPzogUm9sZTtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgZmlsdGVyIGZvciB0aGUgcGlwZS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlcj86IFBpcGVGaWx0ZXI7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbG9nIGxldmVsIGZvciB0aGUgcGlwZS4gQ3JlYXRlcyBhIG5ldyBsb2cgZ3JvdXAsIGlmIGVuYWJsZWQuXG4gICAqIERlZmF1bHQ6IERpc2FibGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nTGV2ZWw/OiBMb2dMZXZlbDtcblxuICAvKipcbiAgICogVXNlIGFuIGV4aXN0aW5nIGxvZyBncm91cC4gSWYgbm9uZSBpcyBnaXZlbiBhbmQgbG9nZ2luZyBpcyBlbmFibGVkLCBhIG5ldyBsb2cgZ3JvdXAgd2lsbCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nR3JvdXA/OiBJTG9nR3JvdXA7XG59XG5cbmV4cG9ydCBlbnVtIExvZ0xldmVsIHtcbiAgLyoqXG4gICAqIERlYWN0aXZhdGUgbG9nZ2luZy4gTm8gbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZC5cbiAgICovXG4gIE9GRiA9IFwiT0ZGXCIsXG4gIC8qKlxuICAgKiBPbmx5IGxvZyBlcnJvcnMuXG4gICAqL1xuICBFUlJPUiA9IFwiRVJST1JcIixcbiAgLyoqXG4gICAqIExvZyBlcnJvcnMgYW5kIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMuXG4gICAqL1xuICBJTkZPID0gXCJJTkZPXCIsXG4gIC8qKlxuICAgKiBMb2cgdmVyeSB2ZXJib3NlLlxuICAgKi9cbiAgVFJBQ0UgPSBcIlRSQUNFXCIsXG59XG5cbi8qKlxuICogVGhlIGludm9jYXRpb24gdHlwZSBvZiB0aGUgc3RlcCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGVudW0gSW52b2NhdGlvblR5cGUge1xuICAvKipcbiAgICogKGRlZmF1bHQpIC0gSW52b2tlIHN5bmNocm9ub3VzbHkuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbiAgICogW1N0YXJ0U3luY0V4ZWN1dGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3N0ZXAtZnVuY3Rpb25zL2xhdGVzdC9hcGlyZWZlcmVuY2UvQVBJX1N0YXJ0U3luY0V4ZWN1dGlvbi5odG1sKVxuICAgKiBpbiB0aGUgKkFXUyBTdGVwIEZ1bmN0aW9ucyBBUEkgUmVmZXJlbmNlKi5cbiAgICogPiBgUkVRVUVTVF9SRVNQT05TRWAgaXMgbm90IHN1cHBvcnRlZCBmb3IgYFNUQU5EQVJEYCBzdGF0ZSBtYWNoaW5lIHdvcmtmbG93cy5cbiAgICovXG4gIFJFUVVFU1RfUkVTUE9OU0UsXG4gIC8qKlxuICAgKiBJbnZva2UgYXN5bmNocm9ub3VzbHkuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbiAgICogW1N0YXJ0RXhlY3V0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2FwaXJlZmVyZW5jZS9BUElfU3RhcnRFeGVjdXRpb24uaHRtbClcbiAgICogaW4gdGhlICpBV1MgU3RlcCBGdW5jdGlvbnMgQVBJIFJlZmVyZW5jZSouXG4gICAqL1xuICBGSVJFX0FORF9GT1JHRVQsXG59XG5cbi8qKlxuICogVGhlIGlucHV0IHRlbXBsYXRlLlxuICogTm90ZSB0aGF0IHNvbWUgdmFsdWVzIGluIHRoZSByZXN1bHRpbmcgY29kZSBzaG91bGQgbm90IGhhdmUgcXVvdGVzIGFyb3VuZCB0aGUgdmFsdWUsIGUuZy4gaWYgYW4gb2JqZWN0XG4gKiBzaGFsbCBiZSBhZGRlZC4gVG8gcmVmbGVjdCB0aGlzLCBhZGQgY3VybHkgYnJhY2tldHMgYXJvdW5kIHRoZSB2YWx1ZSwgZS5nLiBge3s8JC5ib2R5Pn19YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnB1dFRlbXBsYXRlIHtcbiAgLyoqXG4gICAqIEBqc2lpIGlnbm9yZVxuICAgKi9cbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNRUyBxdWV1ZSBhcyBwaXBlIHRhcmdldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXJnZXRRdWV1ZSB7XG4gIHJlYWRvbmx5IHF1ZXVlOiBJUXVldWU7XG59XG5cbi8qKlxuICogU3RlcEZ1bmN0aW9uIGFzIHBpcGUgdGFyZ2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldFN0ZXBGdW5jdGlvbiB7XG4gIHJlYWRvbmx5IHN0ZXBGdW5jdGlvbjogSVN0YXRlTWFjaGluZTtcbiAgcmVhZG9ubHkgcGFyYW1ldGVycz86IFRhcmdldFN0ZXBGdW5jdGlvblBhcmFtZXRlcnM7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgYSBzdGVwIGZ1bmN0aW9uIHRhcmdldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXJnZXRTdGVwRnVuY3Rpb25QYXJhbWV0ZXJzIHtcbiAgcmVhZG9ubHkgaW5wdXRUZW1wbGF0ZT86IElucHV0VGVtcGxhdGU7XG4gIHJlYWRvbmx5IGludm9jYXRpb25UeXBlPzogSW52b2NhdGlvblR5cGU7XG59XG5cbi8qKlxuICogQmFzZSB0eXBlIGZvciBmaWx0ZXIgcnVsZXMuIE5vdCBhbGwgYXZhaWxhYmxlIHJ1bGVzIGFyZSBjdXJyZW50bHkgaW1wbGVtZW50ZWQuXG4gKi9cbmV4cG9ydCB0eXBlIEZpbHRlclJ1bGUgPVxuICB8IFByZWZpeEZpbHRlclJ1bGVcbiAgfCBTdWZmaXhGaWx0ZXJSdWxlXG4gIHwgQW55dGhpbmdCdXRGaWx0ZXJSdWxlXG4gIHwgRmlsdGVyRXF1YWxzSWdub3JlQ2FzZTtcblxuLyoqXG4gKiBSdWxlIHRoYXQgYSBwcm9wZXJ0eSBoYXMgdG8gc3RhcnQgd2l0aCBhIHByZWZpeC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmVmaXhGaWx0ZXJSdWxlIHtcbiAgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmcgfCBGaWx0ZXJFcXVhbHNJZ25vcmVDYXNlO1xufVxuXG4vKipcbiAqIFJ1bGUgdGhhdCBhIHByb3BlcnR5IGhhcyB0byBlbmQgd2l0aCBhIHN1ZmZpeC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWZmaXhGaWx0ZXJSdWxlIHtcbiAgcmVhZG9ubHkgc3VmZml4OiBzdHJpbmcgfCBGaWx0ZXJFcXVhbHNJZ25vcmVDYXNlO1xufVxuXG4vKipcbiAqIFJ1bGUgdGhhdCBhbGxvd3MgYWxsIHZhbHVlcyBleGNlcHQgdGhlIGdpdmVuIG9uZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW55dGhpbmdCdXRGaWx0ZXJSdWxlIHtcbiAgLyoqXG4gICAqIEBqc2lpIGlnbm9yZVxuICAgKi9cbiAgcmVhZG9ubHkgXCJhbnl0aGluZy1idXRcIjogc3RyaW5nW10gfCBGaWx0ZXJSdWxlO1xufVxuXG4vKipcbiAqIFJ1bGUgdGhhdCBtYXRjaGVzIGEgc3RyaW5nLCBpZ25vcmluZyB0aGUgY2FzZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJFcXVhbHNJZ25vcmVDYXNlIHtcbiAgLyoqXG4gICAqIEBqc2lpIGlnbm9yZVxuICAgKi9cbiAgcmVhZG9ubHkgXCJlcXVhbHMtaWdub3JlLWNhc2VcIjogc3RyaW5nIHwgc3RyaW5nW107XG59XG5cbi8qKlxuICogQSBmaWx0ZXIgZm9yIG1lc3NhZ2VzIGluIHRoZSBwaXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVGaWx0ZXIge1xuICAvKipcbiAgICogVGhlIHJ1bGVzIGZvciBlYWNoIGF0dHJpYnV0ZSBvZiB0aGUgYm9keS5cbiAgICogQGpzaWkgaWdub3JlXG4gICAqL1xuICByZWFkb25seSBba2V5OiBzdHJpbmddOiBGaWx0ZXJSdWxlW107XG59XG5cbi8qKlxuICogQSB3cmFwcGVyIGZvciB0aGUgTDEgZXZlbnQgcGlwZSB3aXRoIHRoZSBhYmlsaXR5IHRvIGRlYWN0aXZhdGUgaXQgd2l0aGluIHRoZSBzdGFjay5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50UGlwZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBSb2xlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFdmVudFBpcGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBsZXQgdGFyZ2V0U3RlcEZ1bmN0aW9uID1cbiAgICAgIFwic3RlcEZ1bmN0aW9uXCIgaW4gcHJvcHMudGFyZ2V0ID8gcHJvcHMudGFyZ2V0LnN0ZXBGdW5jdGlvbiA6IHVuZGVmaW5lZDtcbiAgICBsZXQgdGFyZ2V0U3RlcEZ1bmN0aW9uUGFyYW1ldGVycyA9XG4gICAgICBcInBhcmFtZXRlcnNcIiBpbiBwcm9wcy50YXJnZXQgPyBwcm9wcy50YXJnZXQucGFyYW1ldGVycyA6IHVuZGVmaW5lZDtcblxuICAgIGxldCB0YXJnZXRRdWV1ZSA9IFwicXVldWVcIiBpbiBwcm9wcy50YXJnZXQgPyBwcm9wcy50YXJnZXQucXVldWUgOiB1bmRlZmluZWQ7XG5cbiAgICBsZXQgc3FzVGFyZ2V0ID0gdGFyZ2V0UXVldWUgIT09IHVuZGVmaW5lZDtcblxuICAgIGxldCB0YXJnZXRBcm4gPSBzcXNUYXJnZXRcbiAgICAgID8gdGFyZ2V0UXVldWUhLnF1ZXVlQXJuXG4gICAgICA6IHRhcmdldFN0ZXBGdW5jdGlvbiEuc3RhdGVNYWNoaW5lQXJuO1xuXG4gICAgbGV0IGRlc2lyZWRTdGF0ZSA9IFwiUlVOTklOR1wiO1xuICAgIGlmIChpc0RlYWN0aXZhdGVkQ29uc3RydWN0KGlkKSkge1xuICAgICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkSW5mbyhgJHtpZH0gaXMgc2V0IGRvIGJlIGRlYWN0aXZhdGVkLmApO1xuICAgICAgZGVzaXJlZFN0YXRlID0gXCJTVE9QUEVEXCI7XG4gICAgfVxuXG4gICAgdGhpcy5yb2xlID1cbiAgICAgIHByb3BzLnJvbGUgfHxcbiAgICAgIG5ldyBSb2xlKHRoaXMsIFwiRXZlbnRQaXBlUm9sZVwiLCB7XG4gICAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoXCJwaXBlcy5hbWF6b25hd3MuY29tXCIpLFxuICAgICAgfSk7XG5cbiAgICBsZXQgZmlsdGVyQ3JpdGVyaWEgPSBwcm9wcy5maWx0ZXJcbiAgICAgID8ge1xuICAgICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcGF0dGVybjogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgICAgICAgIC4uLnByb3BzLmZpbHRlcixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBsZXQgdGFyZ2V0UGFyYW1ldGVyczogQ2ZuUGlwZS5QaXBlVGFyZ2V0UGFyYW1ldGVyc1Byb3BlcnR5ID0ge307XG4gICAgaWYgKHRhcmdldFF1ZXVlKSB7XG4gICAgICB0YXJnZXRQYXJhbWV0ZXJzID0ge1xuICAgICAgICBzcXNRdWV1ZVBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBtZXNzYWdlR3JvdXBJZDogXCJkZWZhdWx0XCIsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXRQYXJhbWV0ZXJzID0ge1xuICAgICAgICBzdGVwRnVuY3Rpb25TdGF0ZU1hY2hpbmVQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgaW52b2NhdGlvblR5cGU6IHRhcmdldFN0ZXBGdW5jdGlvblBhcmFtZXRlcnM/Lmludm9jYXRpb25UeXBlXG4gICAgICAgICAgICA/IEludm9jYXRpb25UeXBlW3RhcmdldFN0ZXBGdW5jdGlvblBhcmFtZXRlcnMuaW52b2NhdGlvblR5cGVdXG4gICAgICAgICAgICA6IEludm9jYXRpb25UeXBlW0ludm9jYXRpb25UeXBlLlJFUVVFU1RfUkVTUE9OU0VdLFxuICAgICAgICB9LFxuICAgICAgICAuLi4odGFyZ2V0U3RlcEZ1bmN0aW9uUGFyYW1ldGVycz8uaW5wdXRUZW1wbGF0ZSAmJiB7XG4gICAgICAgICAgaW5wdXRUZW1wbGF0ZTogSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICB0YXJnZXRTdGVwRnVuY3Rpb25QYXJhbWV0ZXJzLmlucHV0VGVtcGxhdGUsXG4gICAgICAgICAgKS5yZXBsYWNlKC9cIlxce1xceyguKz8pXFx9XFx9XCIvLCBcIiQxXCIpLFxuICAgICAgICB9KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgbGV0IHNvdXJjZVBhcmFtZXRlcnMgPSB7XG4gICAgICBzcXNRdWV1ZVBhcmFtZXRlcnM6IHtcbiAgICAgICAgYmF0Y2hTaXplOiAxLFxuICAgICAgfSxcbiAgICAgIC4uLihmaWx0ZXJDcml0ZXJpYSAmJiB7IGZpbHRlckNyaXRlcmlhOiBmaWx0ZXJDcml0ZXJpYSB9KSxcbiAgICB9O1xuXG4gICAgY29uc3QgbG9nR3JvdXAgPSB0aGlzLmxvZ2dpbmdFbmFibGVkKHByb3BzKVxuICAgICAgPyAocHJvcHMubG9nR3JvdXAgPz9cbiAgICAgICAgbmV3IEJUQ0xvZ0dyb3VwKHRoaXMsIFwiRXZlbnRQaXBlTG9nR3JvdXBcIiwge1xuICAgICAgICAgIGxvZ1R5cGU6IFwiZXZlbnQtcGlwZVwiLFxuICAgICAgICB9KSlcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgcGlwZUNvbmZpZ3VyYXRpb24gPSB0aGlzLmxvZ2dpbmdFbmFibGVkKHByb3BzKVxuICAgICAgPyB7XG4gICAgICAgICAgbG9nQ29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgY2xvdWR3YXRjaExvZ3NMb2dEZXN0aW5hdGlvbjoge1xuICAgICAgICAgICAgICBsb2dHcm91cEFybjogbG9nR3JvdXAhLmxvZ0dyb3VwQXJuLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxldmVsOiBwcm9wcy5sb2dMZXZlbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICA6IHt9O1xuXG4gICAgbmV3IENmblBpcGUodGhpcywgXCJFdmVudFBpcGVcIiwge1xuICAgICAgLi4ucGlwZUNvbmZpZ3VyYXRpb24sXG4gICAgICByb2xlQXJuOiB0aGlzLnJvbGUucm9sZUFybixcbiAgICAgIHNvdXJjZTogcHJvcHMuc291cmNlLnF1ZXVlQXJuLFxuICAgICAgdGFyZ2V0OiB0YXJnZXRBcm4sXG4gICAgICBzb3VyY2VQYXJhbWV0ZXJzOiBzb3VyY2VQYXJhbWV0ZXJzLFxuICAgICAgdGFyZ2V0UGFyYW1ldGVyczogdGFyZ2V0UGFyYW1ldGVycyxcbiAgICAgIGRlc2lyZWRTdGF0ZTogZGVzaXJlZFN0YXRlLFxuICAgIH0pO1xuXG4gICAgcHJvcHMuc291cmNlLmdyYW50Q29uc3VtZU1lc3NhZ2VzKHRoaXMucm9sZSk7XG4gICAgdGFyZ2V0UXVldWU/LmdyYW50U2VuZE1lc3NhZ2VzKHRoaXMucm9sZSk7XG4gICAgdGFyZ2V0U3RlcEZ1bmN0aW9uPy5ncmFudFN0YXJ0RXhlY3V0aW9uKHRoaXMucm9sZSk7XG4gICAgbG9nR3JvdXA/LmdyYW50V3JpdGUodGhpcy5yb2xlKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9nZ2luZ0VuYWJsZWQocHJvcHM6IEV2ZW50UGlwZVByb3BzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHByb3BzLmxvZ0xldmVsICE9PSB1bmRlZmluZWQgJiYgcHJvcHMubG9nTGV2ZWwgIT09IExvZ0xldmVsLk9GRjtcbiAgfVxufVxuIl19
|
|
@@ -135,5 +135,5 @@ class ExportedService extends ExportedServiceBase {
|
|
|
135
135
|
}
|
|
136
136
|
exports.ExportedService = ExportedService;
|
|
137
137
|
_a = JSII_RTTI_SYMBOL_1;
|
|
138
|
-
ExportedService[_a] = { fqn: "@btc-embedded/cdk-extensions.ExportedService", version: "0.22.
|
|
138
|
+
ExportedService[_a] = { fqn: "@btc-embedded/cdk-extensions.ExportedService", version: "0.22.22" };
|
|
139
139
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwb3J0ZWRTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0cnVjdHMvRXhwb3J0ZWRTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsaURBSzZCO0FBQzdCLDJDQUF1QztBQUN2QyxvQ0FBMEM7QUFDMUMsNENBQTRDO0FBOEQ1Qzs7Ozs7R0FLRztBQUNILE1BQWUsbUJBQ2IsU0FBUSxzQkFBUztJQVFqQixZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixXQUFtQixFQUNuQixhQUFxQixFQUNyQixJQUFZLEVBQ1osYUFBNkI7UUFFN0IsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTTtRQUNYLE9BQU8sVUFBVSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO0lBQzFFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksU0FBUyxDQUNkLE9BQWdCLEVBQ2hCLGNBQXNCLG1DQUFtQztRQUV6RCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQ3RDLE9BQU8sQ0FBQyxVQUFVLEVBQ2xCLGNBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUNuQixXQUFXLENBQ1osQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxtQkFBbUI7SUFDdEQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxNQUFNLENBQUMsY0FBYyxDQUMxQixLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBbUM7UUFFbkMsTUFBTSxxQkFBcUIsR0FBRyxJQUFBLGtCQUFTLEVBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNELE1BQU0sZUFBZSxHQUFHLGVBQWUsQ0FBQyxxQkFBcUIsQ0FDM0QscUJBQXFCLENBQ3RCLENBQUM7UUFFRixNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUNuRSxLQUFLLEVBQ0wsS0FBSyxDQUFDLFNBQVMsQ0FDaEIsQ0FBQztRQUNGLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQzdELEtBQUssRUFDTCxLQUFLLENBQUMsU0FBUyxDQUNoQixDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsdUJBQWEsQ0FBQyxtQkFBbUIsQ0FDckQsS0FBSyxFQUNMLHVCQUF1QixFQUN2QixlQUFlLEVBQ2YsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FDM0IsQ0FBQztRQUVGLE1BQU0sTUFBTyxTQUFRLG1CQUFtQjtZQUN0QztnQkFDRSxLQUFLLENBQ0gsS0FBSyxFQUNMLEVBQUUsRUFDRixxQkFBcUIsRUFDckIsYUFBYSxFQUNiLEtBQUssQ0FBQyxJQUFJLEVBQ1YsYUFBYSxDQUNkLENBQUM7WUFDSixDQUFDO1NBQ0Y7UUFFRCxPQUFPLElBQUksTUFBTSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUNPLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxXQUFtQjtRQUN0RCxPQUFPO1lBQ0wsc0JBQXNCLEVBQUUsSUFBSSxzQkFBYyxDQUFDO2dCQUN6QyxNQUFNLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLENBQUM7Z0JBQ3pDLEdBQUcsRUFBRSxtQkFBbUI7Z0JBQ3hCLFdBQVcsRUFBRSwrQ0FBK0M7YUFDN0QsQ0FBQztZQUNGLGtCQUFrQixFQUFFLElBQUksc0JBQWMsQ0FBQztnQkFDckMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsV0FBVyxDQUFDO2dCQUN6QyxHQUFHLEVBQUUsV0FBVztnQkFDaEIsV0FBVyxFQUFFLGdEQUFnRDthQUM5RCxDQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUM7SUFNRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTJCO1FBQ25FLE1BQU0scUJBQXFCLEdBQUcsSUFBQSxrQkFBUyxFQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRCxLQUFLLENBQ0gsS0FBSyxFQUNMLEVBQUUsRUFDRixxQkFBcUIsRUFDckIsS0FBSyxDQUFDLGFBQWEsRUFDbkIsQ0FBQyxFQUFFLDJEQUEyRDtRQUM5RCxLQUFLLENBQUMsYUFBYSxDQUNwQixDQUFDO1FBRUYsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUMscUJBQXFCLENBQzFELHFCQUFxQixDQUN0QixDQUFDO1FBRUYsc0RBQXNEO1FBQ3RELElBQUksQ0FBQyxlQUFlLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUNoRCxJQUFJLEVBQ0osS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQ3BDLENBQUM7UUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVFLENBQUM7O0FBOUZILDBDQStGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlcnZpY2UgfSBmcm9tIFwiQGF3cy1jZGstY29udGFpbmVycy9lY3Mtc2VydmljZS1leHRlbnNpb25zXCI7XG5pbXBvcnQge1xuICBJQ29ubmVjdGFibGUsXG4gIElTZWN1cml0eUdyb3VwLFxuICBQb3J0LFxuICBTZWN1cml0eUdyb3VwLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFN0YWNrUGFyYW1ldGVyIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBrZWJhYkNhc2UgfSBmcm9tIFwiLi4vdXRpbHMvY29tbW9uXCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgaW1wb3J0aW5nIGFuIEV4cG9ydGVkU2VydmljZSBmcm9tIGFub3RoZXIgc3RhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhwb3J0ZWRTZXJ2aWNlTG9va3VwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc3RhY2sgd2hlcmUgdGhlIHNlcnZpY2Ugd2FzIGV4cG9ydGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBleHBvcnRlZCBFQ1Mgc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwb3J0IG9uIHdoaWNoIHRoZSBzZXJ2aWNlIGlzIGxpc3RlbmluZy5cbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQdWJsaWMgaW50ZXJmYWNlIGZvciBhbiBFeHBvcnRlZFNlcnZpY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUV4cG9ydGVkU2VydmljZSBleHRlbmRzIElDb25uZWN0YWJsZSB7XG4gIC8qKlxuICAgKiBUaGUgc2VjdXJpdHkgZ3JvdXAgb2YgdGhlIGV4cG9ydGVkIEVDUyBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cDogSVNlY3VyaXR5R3JvdXA7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaW50ZXJuYWwgQVBJIFVSTCBvZiB0aGUgc2VydmljZS5cbiAgICovXG4gIGFwaVVybCgpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsbG93IGFuIEVDUyBzZXJ2aWNlIHRvIGNvbm5lY3QgdG8gdGhpcyBleHBvcnRlZCBzZXJ2aWNlLlxuICAgKi9cbiAgYWxsb3dGcm9tKHNlcnZpY2U6IFNlcnZpY2UsIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogdm9pZDtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIG5ldyBFeHBvcnRlZFNlcnZpY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhwb3J0ZWRTZXJ2aWNlUHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEVDUyBzZXJ2aWNlIGJlaW5nIGV4cG9ydGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNlY3VyaXR5IGdyb3VwIG9mIHRoZSBFQ1Mgc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXA6IElTZWN1cml0eUdyb3VwO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIG5hbWUgd2hlcmUgdGhlIHNlcnZpY2UgaXMgcmVnaXN0ZXJlZCAoQ2xvdWRNYXAgbmFtZXNwYWNlKS5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWVzcGFjZU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBhbiBFQ1Mgc2VydmljZSB0aGF0IGNhbiBiZSB1c2VkIGFjcm9zcyBzdGFjayBib3VuZGFyaWVzLlxuICpcbiAqIFRoaXMgYWJzdHJhY3QgY2xhc3MgcHJvdmlkZXMgY29tbW9uIGZ1bmN0aW9uYWxpdHkgZm9yIHdvcmtpbmcgd2l0aCBleHBvcnRlZFxuICogRUNTIHNlcnZpY2VzLCBpbmNsdWRpbmcgQVBJIFVSTCBnZW5lcmF0aW9uIGFuZCBjb25uZWN0aW9uIG1hbmFnZW1lbnQuXG4gKi9cbmFic3RyYWN0IGNsYXNzIEV4cG9ydGVkU2VydmljZUJhc2VcbiAgZXh0ZW5kcyBDb25zdHJ1Y3RcbiAgaW1wbGVtZW50cyBJRXhwb3J0ZWRTZXJ2aWNlXG57XG4gIHByb3RlY3RlZCByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbmFtZXNwYWNlTmFtZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlHcm91cDogSVNlY3VyaXR5R3JvdXA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgbmFtZXNwYWNlTmFtZTogc3RyaW5nLFxuICAgIHBvcnQ6IG51bWJlcixcbiAgICBzZWN1cml0eUdyb3VwOiBJU2VjdXJpdHlHcm91cCxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLnNlcnZpY2VOYW1lID0gc2VydmljZU5hbWU7XG4gICAgdGhpcy5uYW1lc3BhY2VOYW1lID0gbmFtZXNwYWNlTmFtZTtcbiAgICB0aGlzLnBvcnQgPSBwb3J0O1xuICAgIHRoaXMuc2VjdXJpdHlHcm91cCA9IHNlY3VyaXR5R3JvdXA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBpbnRlcm5hbCBBUEkgVVJMIG9mIHRoZSBzZXJ2aWNlLlxuICAgKlxuICAgKiBUaGUgVVJMIGZvcm1hdCBpczogaHR0cDovLzxzZXJ2aWNlLW5hbWU+LjxuYW1lc3BhY2U+Ojxwb3J0Pi9cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGludGVybmFsIEFQSSBVUkxcbiAgICovXG4gIHB1YmxpYyBhcGlVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGh0dHA6Ly8ke3RoaXMuc2VydmljZU5hbWV9LiR7dGhpcy5uYW1lc3BhY2VOYW1lfToke3RoaXMucG9ydH0vYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGNvbm5lY3Rpb25zIG9iamVjdCBmb3IgdGhpcyBzZXJ2aWNlLlxuICAgKlxuICAgKiBUaGlzIGFsbG93cyB0aGUgRXhwb3J0ZWRTZXJ2aWNlIHRvIGJlIHVzZWQgd2l0aCB0aGUgc3RhbmRhcmQgQ0RLIElDb25uZWN0YWJsZVxuICAgKiBwYXR0ZXJuIGZvciBzZWN1cml0eSBncm91cCBtYW5hZ2VtZW50LlxuICAgKi9cbiAgZ2V0IGNvbm5lY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnNlY3VyaXR5R3JvdXAuY29ubmVjdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogQWxsb3cgYW4gRUNTIHNlcnZpY2UgdG8gY29ubmVjdCB0byB0aGlzIGV4cG9ydGVkIHNlcnZpY2UuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGFkZHMgYSBzZWN1cml0eSBncm91cCBpbmdyZXNzIHJ1bGUgYWxsb3dpbmcgdHJhZmZpYyBmcm9tIHRoZVxuICAgKiBnaXZlbiBzZXJ2aWNlIHRvIHRoaXMgZXhwb3J0ZWQgc2VydmljZSBvbiBpdHMgY29uZmlndXJlZCBwb3J0LlxuICAgKlxuICAgKiBAcGFyYW0gc2VydmljZSAtIFRoZSBFQ1Mgc2VydmljZSB0byBhbGxvdyBjb25uZWN0aW9ucyBmcm9tXG4gICAqIEBwYXJhbSBkZXNjcmlwdGlvbiAtIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgc2VjdXJpdHkgZ3JvdXAgcnVsZVxuICAgKi9cbiAgcHVibGljIGFsbG93RnJvbShcbiAgICBzZXJ2aWNlOiBTZXJ2aWNlLFxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcgPSBcIkFsbG93IGNvbm5lY3Rpb24gZnJvbSBFQ1Mgc2VydmljZVwiLFxuICApOiB2b2lkIHtcbiAgICB0aGlzLnNlY3VyaXR5R3JvdXAuY29ubmVjdGlvbnMuYWxsb3dGcm9tKFxuICAgICAgc2VydmljZS5lY3NTZXJ2aWNlLFxuICAgICAgUG9ydC50Y3AodGhpcy5wb3J0KSxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVDUyBzZXJ2aWNlIGV4cG9ydGVkIGZyb20gYW5vdGhlciBDREsgc3RhY2suXG4gKlxuICogVGhpcyBjb25zdHJ1Y3QgZW5hYmxlcyBjcm9zcy1zdGFjayBzZXJ2aWNlIGNvbm5lY3Rpdml0eSBieSB0cmFuc3BvcnRpbmcgc2VydmljZVxuICogbWV0YWRhdGEgKHNlY3VyaXR5IGdyb3VwIElEIGFuZCBuYW1lc3BhY2UpIGFjcm9zcyBzdGFjayBib3VuZGFyaWVzIHVzaW5nIFN0YWNrUGFyYW1ldGVyLlxuICogVGhlIHBvcnQgbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBpbXBvcnRpbmcgdGhlIHNlcnZpY2UuXG4gKlxuICogT24gdGhlIHByb3ZpZGVyIHNpZGUgKHdoZXJlIHRoZSBzZXJ2aWNlIGlzIGRlZmluZWQpLCB1c2UgRXhwb3J0ZWRTZXJ2aWNlXG4gKiB3aXRoaW4gdGhlIENsb3VkTWFwRXh0ZW5zaW9uIHRvIGV4cG9zZSB0aGUgc2VydmljZS4gT24gdGhlIGNvbnN1bWVyIHNpZGUsXG4gKiB1c2UgRXhwb3J0ZWRTZXJ2aWNlLmZyb21BdHRyaWJ1dGVzKCkgdG8gaW1wb3J0IHRoZSBzZXJ2aWNlIHdpdGggdGhlIHBvcnQuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFByb3ZpZGVyIHNpZGVcbiAqIGNvbnN0IGV4cG9ydGVkU2VydmljZSA9IG5ldyBFeHBvcnRlZFNlcnZpY2UodGhpcywgXCJFeHBvcnRlZFNlcnZpY2VcIiwge1xuICogICBzZXJ2aWNlTmFtZTogJ215LXNlcnZpY2UnLFxuICogICBzZWN1cml0eUdyb3VwOiBzZXJ2aWNlLmNvbm5lY3Rpb25zLnNlY3VyaXR5R3JvdXBzWzBdLFxuICogICBuYW1lc3BhY2VOYW1lOiAnbXktbmFtZXNwYWNlJyxcbiAqIH0pO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb25zdW1lciBzaWRlXG4gKiBjb25zdCBleHBvcnRlZFNlcnZpY2UgPSBFeHBvcnRlZFNlcnZpY2UuZnJvbUF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7XG4gKiAgIHN0YWNrTmFtZTogJ215LXNlcnZpY2Utc3RhY2snLFxuICogICBzZXJ2aWNlTmFtZTogJ215LXNlcnZpY2UnLFxuICogICBwb3J0OiA4MDgwLFxuICogfSk7XG4gKlxuICogZXhwb3J0ZWRTZXJ2aWNlLmFsbG93RnJvbShteVNlcnZpY2UpO1xuICogY29uc3QgdXJsID0gZXhwb3J0ZWRTZXJ2aWNlLmFwaVVybCgpO1xuICovXG5leHBvcnQgY2xhc3MgRXhwb3J0ZWRTZXJ2aWNlIGV4dGVuZHMgRXhwb3J0ZWRTZXJ2aWNlQmFzZSB7XG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gRXhwb3J0ZWRTZXJ2aWNlIGZyb20gYW5vdGhlciBzdGFjay5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgaW1wb3J0cyB0aGUgc2VydmljZSBtZXRhZGF0YSAoc2VjdXJpdHkgZ3JvdXAgYW5kIG5hbWVzcGFjZSlcbiAgICogdGhhdCB3YXMgZXhwb3J0ZWQgYnkgdGhlIHByb3ZpZGVyIHN0YWNrIGFuZCBjb25zdHJ1Y3RzIGFuIElFeHBvcnRlZFNlcnZpY2VcbiAgICogaW5zdGFuY2UgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZXN0YWJsaXNoaW5nIGNvbm5lY3Rpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGlkIC0gVGhlIGNvbnN0cnVjdCBJRFxuICAgKiBAcGFyYW0gYXR0cnMgLSBUaGUgZXhwb3J0ZWQgc2VydmljZSBsb29rdXAgb3B0aW9ucyAoc3RhY2tOYW1lLCBzZXJ2aWNlTmFtZSwgYW5kIHBvcnQpXG4gICAqIEByZXR1cm5zIEFuIElFeHBvcnRlZFNlcnZpY2UgaW5zdGFuY2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUF0dHJpYnV0ZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGF0dHJzOiBFeHBvcnRlZFNlcnZpY2VMb29rdXBPcHRpb25zLFxuICApOiBJRXhwb3J0ZWRTZXJ2aWNlIHtcbiAgICBjb25zdCBub3JtYWxpemVkU2VydmljZU5hbWUgPSBrZWJhYkNhc2UoYXR0cnMuc2VydmljZU5hbWUpO1xuICAgIGNvbnN0IHN0YWNrUGFyYW1ldGVycyA9IEV4cG9ydGVkU2VydmljZS5jcmVhdGVTdGFja1BhcmFtZXRlcnMoXG4gICAgICBub3JtYWxpemVkU2VydmljZU5hbWUsXG4gICAgKTtcblxuICAgIGNvbnN0IHNlY3VyaXR5R3JvdXBJZCA9IHN0YWNrUGFyYW1ldGVycy5zZWN1cml0eUdyb3VwUGFyYW1ldGVyLmltcG9ydChcbiAgICAgIHNjb3BlLFxuICAgICAgYXR0cnMuc3RhY2tOYW1lLFxuICAgICk7XG4gICAgY29uc3QgbmFtZXNwYWNlTmFtZSA9IHN0YWNrUGFyYW1ldGVycy5uYW1lc3BhY2VQYXJhbWV0ZXIuaW1wb3J0KFxuICAgICAgc2NvcGUsXG4gICAgICBhdHRycy5zdGFja05hbWUsXG4gICAgKTtcblxuICAgIGNvbnN0IHNlY3VyaXR5R3JvdXAgPSBTZWN1cml0eUdyb3VwLmZyb21TZWN1cml0eUdyb3VwSWQoXG4gICAgICBzY29wZSxcbiAgICAgIFwiSW1wb3J0ZWRTZWN1cml0eUdyb3VwXCIsXG4gICAgICBzZWN1cml0eUdyb3VwSWQsXG4gICAgICB7IGFsbG93QWxsT3V0Ym91bmQ6IHRydWUgfSxcbiAgICApO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgRXhwb3J0ZWRTZXJ2aWNlQmFzZSB7XG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgaWQsXG4gICAgICAgICAgbm9ybWFsaXplZFNlcnZpY2VOYW1lLFxuICAgICAgICAgIG5hbWVzcGFjZU5hbWUsXG4gICAgICAgICAgYXR0cnMucG9ydCxcbiAgICAgICAgICBzZWN1cml0eUdyb3VwLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KCk7XG4gIH1cbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlU3RhY2tQYXJhbWV0ZXJzKHNlcnZpY2VOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VjdXJpdHlHcm91cFBhcmFtZXRlcjogbmV3IFN0YWNrUGFyYW1ldGVyKHtcbiAgICAgICAgcHJlZml4OiBbXCJleHBvcnRlZC1zZXJ2aWNlXCIsIHNlcnZpY2VOYW1lXSxcbiAgICAgICAga2V5OiBcInNlY3VyaXR5LWdyb3VwLWlkXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlNlY3VyaXR5IEdyb3VwIElEIG9mIHRoZSBleHBvcnRlZCBFQ1Mgc2VydmljZVwiLFxuICAgICAgfSksXG4gICAgICBuYW1lc3BhY2VQYXJhbWV0ZXI6IG5ldyBTdGFja1BhcmFtZXRlcih7XG4gICAgICAgIHByZWZpeDogW1wiZXhwb3J0ZWQtc2VydmljZVwiLCBzZXJ2aWNlTmFtZV0sXG4gICAgICAgIGtleTogXCJuYW1lc3BhY2VcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiQ2xvdWRNYXAgbmFtZXNwYWNlIG9mIHRoZSBleHBvcnRlZCBFQ1Mgc2VydmljZVwiLFxuICAgICAgfSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhY2tQYXJhbWV0ZXJzOiBSZXR1cm5UeXBlPFxuICAgIHR5cGVvZiBFeHBvcnRlZFNlcnZpY2UuY3JlYXRlU3RhY2tQYXJhbWV0ZXJzXG4gID47XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEV4cG9ydGVkU2VydmljZVByb3BzKSB7XG4gICAgY29uc3Qgbm9ybWFsaXplZFNlcnZpY2VOYW1lID0ga2ViYWJDYXNlKHByb3BzLnNlcnZpY2VOYW1lKTtcbiAgICBzdXBlcihcbiAgICAgIHNjb3BlLFxuICAgICAgaWQsXG4gICAgICBub3JtYWxpemVkU2VydmljZU5hbWUsXG4gICAgICBwcm9wcy5uYW1lc3BhY2VOYW1lLFxuICAgICAgMCwgLy8gRGVmYXVsdCBwb3J0IC0gYWN0dWFsIHBvcnQgaXMgc3BlY2lmaWVkIG9uIGNvbnN1bWVyIHNpZGVcbiAgICAgIHByb3BzLnNlY3VyaXR5R3JvdXAsXG4gICAgKTtcblxuICAgIHRoaXMuc3RhY2tQYXJhbWV0ZXJzID0gRXhwb3J0ZWRTZXJ2aWNlLmNyZWF0ZVN0YWNrUGFyYW1ldGVycyhcbiAgICAgIG5vcm1hbGl6ZWRTZXJ2aWNlTmFtZSxcbiAgICApO1xuXG4gICAgLy8gRXhwb3J0IHNlcnZpY2UgbWV0YWRhdGEgZm9yIGNyb3NzLXN0YWNrIGNvbnN1bXB0aW9uXG4gICAgdGhpcy5zdGFja1BhcmFtZXRlcnMuc2VjdXJpdHlHcm91cFBhcmFtZXRlci5leHBvcnQoXG4gICAgICB0aGlzLFxuICAgICAgcHJvcHMuc2VjdXJpdHlHcm91cC5zZWN1cml0eUdyb3VwSWQsXG4gICAgKTtcbiAgICB0aGlzLnN0YWNrUGFyYW1ldGVycy5uYW1lc3BhY2VQYXJhbWV0ZXIuZXhwb3J0KHRoaXMsIHByb3BzLm5hbWVzcGFjZU5hbWUpO1xuICB9XG59XG4iXX0=
|
|
@@ -35,5 +35,5 @@ class S3Bucket extends aws_s3_1.Bucket {
|
|
|
35
35
|
}
|
|
36
36
|
exports.S3Bucket = S3Bucket;
|
|
37
37
|
_a = JSII_RTTI_SYMBOL_1;
|
|
38
|
-
S3Bucket[_a] = { fqn: "@btc-embedded/cdk-extensions.S3Bucket", version: "0.22.
|
|
38
|
+
S3Bucket[_a] = { fqn: "@btc-embedded/cdk-extensions.S3Bucket", version: "0.22.22" };
|
|
39
39
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUzNCdWNrZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RydWN0cy9TM0J1Y2tldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUFtRTtBQUNuRSwrQ0FBeUQ7QUFFekQsb0NBQTRDO0FBRTVDLFNBQVMsV0FBVyxDQUNsQixLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBbUI7SUFFbkIsSUFBSSxJQUFBLHdCQUFnQixHQUFFLEVBQUUsQ0FBQztRQUN2Qix5QkFBVyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQzNCLEdBQUcsRUFBRSx5RUFBeUUsQ0FDL0UsQ0FBQztRQUNGLE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1lBQ3BDLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsY0FBYyxFQUFFO2dCQUNkO29CQUNFLFVBQVUsRUFBRSxzQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQzVCLG1DQUFtQyxFQUFFLHNCQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDdEQ7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDdEIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFhLFFBQVMsU0FBUSxlQUFNO0lBQ2xDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBbUI7UUFDM0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDOztBQUhILDRCQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5ub3RhdGlvbnMsIER1cmF0aW9uLCBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBCdWNrZXQsIEJ1Y2tldFByb3BzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IGlzRGV2ZWxvcGVyU3RhY2sgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuZnVuY3Rpb24gYWRqdXN0UHJvcHMoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGlkOiBzdHJpbmcsXG4gIHByb3BzPzogQnVja2V0UHJvcHMsXG4pOiBCdWNrZXRQcm9wcyB7XG4gIGlmIChpc0RldmVsb3BlclN0YWNrKCkpIHtcbiAgICBBbm5vdGF0aW9ucy5vZihzY29wZSkuYWRkSW5mbyhcbiAgICAgIGAke2lkfSBpcyBkZXBsb3llZCBpbiBhIGRldmVsb3BlciB2YXJpYW50LiBGaWxlcyB3aWxsIGJlIHJldGFpbmVkIGZvciAzIGRheXMuYCxcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIGF1dG9EZWxldGVPYmplY3RzOiB0cnVlLFxuICAgICAgbGlmZWN5Y2xlUnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGV4cGlyYXRpb246IER1cmF0aW9uLmRheXMoMyksXG4gICAgICAgICAgYWJvcnRJbmNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQWZ0ZXI6IER1cmF0aW9uLmRheXMoMSksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHsgLi4ucHJvcHMgfTtcbn1cblxuLyoqXG4gKiBXcmFwcGVyIGZvciB0aGUge0BsaW5rIEJ1Y2tldH0gY29uc3RydWN0cyB0aGF0IGFkZHMgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLCBpZiBhIGRldmVsb3BlclxuICogc3RhY2sgaXMgZGV0ZWN0ZWQuIFdpbGwgY2F1c2UgZmlsZXMgdG8gZXhwaXJlIGFmdGVyIHRyZWUgZGF5cyBhbmQgYWxsb3dzIHRvIGRlbGV0ZSB0aGVcbiAqIGJ1Y2tldCBhbmQgYWxsIGl0cyBjb250ZW50cywgaWYgdGhlIHN0YWNrIGlzIGRlbGV0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBTM0J1Y2tldCBleHRlbmRzIEJ1Y2tldCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogQnVja2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIGFkanVzdFByb3BzKHNjb3BlLCBpZCwgcHJvcHMpKTtcbiAgfVxufVxuIl19
|
|
@@ -55,5 +55,5 @@ class SecureRestApi extends construct_1.Construct {
|
|
|
55
55
|
}
|
|
56
56
|
exports.SecureRestApi = SecureRestApi;
|
|
57
57
|
_a = JSII_RTTI_SYMBOL_1;
|
|
58
|
-
SecureRestApi[_a] = { fqn: "@btc-embedded/cdk-extensions.SecureRestApi", version: "0.22.
|
|
58
|
+
SecureRestApi[_a] = { fqn: "@btc-embedded/cdk-extensions.SecureRestApi", version: "0.22.22" };
|
|
59
59
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjdXJlUmVzdEFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdHJ1Y3RzL1NlY3VyZVJlc3RBcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrREFJb0M7QUFDcEMsK0VBRzRDO0FBQzVDLHlEQUFtRDtBQUNuRCx5REFBa0U7QUFDbEUsd0RBQXFEO0FBQ3JELDBDQUFrQztBQUNsQyxvQ0FBMEM7QUF1QjFDOztHQUVHO0FBQ0gsTUFBYSxhQUFjLFNBQVEscUJBQVM7SUFRMUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QjtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBRUQsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLHNCQUFjLENBQUM7WUFDcEQsTUFBTSxFQUFFLFNBQVM7WUFDakIsR0FBRyxFQUFFLGNBQWM7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxpQkFBaUIsR0FBRywwQkFBMEIsQ0FBQyxNQUFNLENBQ3pELElBQUksRUFDSixLQUFLLENBQUMscUJBQXFCLENBQzVCLENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxzQkFBUSxDQUFDLGNBQWMsQ0FDekMsSUFBSSxFQUNKLGFBQWEsRUFDYixpQkFBaUIsQ0FDbEIsQ0FBQztRQUVGLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxjQUFHLENBQUMsZ0JBQWdCLENBQ25DLElBQUksRUFDSixRQUFRLEVBQ1IsS0FBSyxDQUFDLHFCQUFxQixDQUM1QixDQUFDO1FBQ0YsTUFBTSxVQUFVLEdBQ2QsS0FBSyxDQUFDLFVBQVU7WUFDaEIsd0JBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtnQkFDeEMsVUFBVSxFQUFFLElBQUk7YUFDakIsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLEtBQUssQ0FBQyxZQUFZLElBQUksVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxvQ0FBVyxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDdEQsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFVBQVUsRUFBRSw4Q0FBcUIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1NBQ3RELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLDJDQUEwQixDQUNyRCxJQUFJLEVBQ0osbUJBQW1CLEVBQ25CO1lBQ0UsZ0JBQWdCLEVBQUUsQ0FBQyxXQUFXLENBQUM7U0FDaEMsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLHdCQUFPLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUMxQyxHQUFHLEtBQUssQ0FBQyxZQUFZO1lBQ3JCLG9CQUFvQixFQUFFO2dCQUNwQixHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsb0JBQW9CO2dCQUMxQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjthQUNuQztZQUNELFVBQVUsRUFBRTtnQkFDVixHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBVTtnQkFDaEMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7YUFDOUI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQW5FSCxzQ0FvRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb2duaXRvVXNlclBvb2xzQXV0aG9yaXplcixcbiAgUmVzdEFwaSxcbiAgUmVzdEFwaVByb3BzLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXlcIjtcbmltcG9ydCB7XG4gIENlcnRpZmljYXRlLFxuICBDZXJ0aWZpY2F0ZVZhbGlkYXRpb24sXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyXCI7XG5pbXBvcnQgeyBVc2VyUG9vbCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29nbml0b1wiO1xuaW1wb3J0IHsgSG9zdGVkWm9uZSwgSUhvc3RlZFpvbmUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzL2xpYi9jb25zdHJ1Y3RcIjtcbmltcG9ydCB7IFZwYyB9IGZyb20gXCIuLi9wbGF0Zm9ybVwiO1xuaW1wb3J0IHsgU3RhY2tQYXJhbWV0ZXIgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZWN1cmVSZXN0QXBpUHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEJhc2UgcGxhdGZvcm0gU3RhY2tcbiAgICovXG4gIHJlYWRvbmx5IGJhc2VQbGF0Zm9ybVN0YWNrTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFN1YmRvbWFpbiB0aGF0IGlzIHVzZWQgZm9yIFJFU1QgQVBJIHByb3BzXG4gICAqL1xuICByZWFkb25seSBhcGlTdWJEb21haW46IHN0cmluZztcbiAgLyoqXG4gICAqIGhvc3RlZCB6b25lIGZvciB0aGUgc3ViZG9tYWluXG4gICAqIEFuIG9wdGlvbmFsIHBhcmFtZXRlclxuICAgKiBAZGVmYXVsdCAtIGZxZG4gb3V0cHV0IG9mIGJhc2UgcGxhdGZvcm0gc3RhY2sgaXMgdXNlZCB0byBpbXBvcnQgdGhlIGhvc3RlZCB6b25lXG4gICAqL1xuICByZWFkb25seSBob3N0ZWRab25lPzogSUhvc3RlZFpvbmU7XG5cbiAgLyoqXG4gICAqIFByb3BzIGZvcndhcmRlZCB0byB0aGUgUmVzdEFwaSBjb25zdHJ1Y3QuXG4gICAqL1xuICByZWFkb25seSByZXN0QXBpUHJvcHM6IFJlc3RBcGlQcm9wcztcbn1cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBTZWN1cmVSZXN0QXBpVjJ9IGluc3RlYWRcbiAqL1xuZXhwb3J0IGNsYXNzIFNlY3VyZVJlc3RBcGkgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvL3B1YmxpYyByZXN0QXBpRG9tYWluTmFtZTogRG9tYWluTmFtZTtcbiAgcHVibGljIGRvbWFpbk5hbWU6IHN0cmluZztcbiAgcHVibGljIGRlZmF1bHRBdXRob3JpemVyOiBDb2duaXRvVXNlclBvb2xzQXV0aG9yaXplcjtcbiAgcHJpdmF0ZSBjZXJ0aWZpY2F0ZTogQ2VydGlmaWNhdGU7XG5cbiAgcHVibGljIHJlc3RBcGk6IFJlc3RBcGk7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNlY3VyZVJlc3RBcGlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgLy92YWxpZGF0ZSB0aGUgcHJvcHNcbiAgICBpZiAoIXByb3BzLmFwaVN1YkRvbWFpbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiYXBpU3ViRG9tYWluIGlzIHJlcXVpcmVkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvZ25pdG9Vc2VyUG9vbElkUGFyYW1ldGVyID0gbmV3IFN0YWNrUGFyYW1ldGVyKHtcbiAgICAgIHByZWZpeDogXCJjb2duaXRvXCIsXG4gICAgICBrZXk6IFwidXNlci1wb29sLWlkXCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb2duaXRvVXNlclBvb2xJZCA9IGNvZ25pdG9Vc2VyUG9vbElkUGFyYW1ldGVyLmltcG9ydChcbiAgICAgIHRoaXMsXG4gICAgICBwcm9wcy5iYXNlUGxhdGZvcm1TdGFja05hbWUsXG4gICAgKTtcbiAgICBjb25zdCB1c2VyUG9vbFJlZiA9IFVzZXJQb29sLmZyb21Vc2VyUG9vbElkKFxuICAgICAgdGhpcyxcbiAgICAgIFwiVXNlclBvb2xSZWZcIixcbiAgICAgIGNvZ25pdG9Vc2VyUG9vbElkLFxuICAgICk7XG5cbiAgICBjb25zdCB7IGZxZG4gfSA9IFZwYy5mcm9tQmFzZVBsYXRmb3JtKFxuICAgICAgdGhpcyxcbiAgICAgIFwiVnBjUmVmXCIsXG4gICAgICBwcm9wcy5iYXNlUGxhdGZvcm1TdGFja05hbWUsXG4gICAgKTtcbiAgICBjb25zdCBob3N0ZWRab25lID1cbiAgICAgIHByb3BzLmhvc3RlZFpvbmUgPz9cbiAgICAgIEhvc3RlZFpvbmUuZnJvbUxvb2t1cCh0aGlzLCBcIkhvc3RlZFpvbmVcIiwge1xuICAgICAgICBkb21haW5OYW1lOiBmcWRuLFxuICAgICAgfSk7XG4gICAgdGhpcy5kb21haW5OYW1lID0gYCR7cHJvcHMuYXBpU3ViRG9tYWlufS4ke2hvc3RlZFpvbmUuem9uZU5hbWV9YDtcblxuICAgIHRoaXMuY2VydGlmaWNhdGUgPSBuZXcgQ2VydGlmaWNhdGUodGhpcywgXCJDZXJ0aWZpY2F0ZVwiLCB7XG4gICAgICBkb21haW5OYW1lOiB0aGlzLmRvbWFpbk5hbWUsXG4gICAgICB2YWxpZGF0aW9uOiBDZXJ0aWZpY2F0ZVZhbGlkYXRpb24uZnJvbURucyhob3N0ZWRab25lKSxcbiAgICB9KTtcblxuICAgIHRoaXMuZGVmYXVsdEF1dGhvcml6ZXIgPSBuZXcgQ29nbml0b1VzZXJQb29sc0F1dGhvcml6ZXIoXG4gICAgICB0aGlzLFxuICAgICAgXCJkZWZhdWx0QXV0aG9yaXplclwiLFxuICAgICAge1xuICAgICAgICBjb2duaXRvVXNlclBvb2xzOiBbdXNlclBvb2xSZWZdLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy5yZXN0QXBpID0gbmV3IFJlc3RBcGkodGhpcywgXCJSZXN0QXBpXCIsIHtcbiAgICAgIC4uLnByb3BzLnJlc3RBcGlQcm9wcyxcbiAgICAgIGRlZmF1bHRNZXRob2RPcHRpb25zOiB7XG4gICAgICAgIC4uLnByb3BzLnJlc3RBcGlQcm9wcy5kZWZhdWx0TWV0aG9kT3B0aW9ucyxcbiAgICAgICAgYXV0aG9yaXplcjogdGhpcy5kZWZhdWx0QXV0aG9yaXplcixcbiAgICAgIH0sXG4gICAgICBkb21haW5OYW1lOiB7XG4gICAgICAgIC4uLnByb3BzLnJlc3RBcGlQcm9wcy5kb21haW5OYW1lLFxuICAgICAgICBkb21haW5OYW1lOiB0aGlzLmRvbWFpbk5hbWUsXG4gICAgICAgIGNlcnRpZmljYXRlOiB0aGlzLmNlcnRpZmljYXRlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -52,5 +52,5 @@ class SecureRestApiV2 extends construct_1.Construct {
|
|
|
52
52
|
}
|
|
53
53
|
exports.SecureRestApiV2 = SecureRestApiV2;
|
|
54
54
|
_a = JSII_RTTI_SYMBOL_1;
|
|
55
|
-
SecureRestApiV2[_a] = { fqn: "@btc-embedded/cdk-extensions.SecureRestApiV2", version: "0.22.
|
|
55
|
+
SecureRestApiV2[_a] = { fqn: "@btc-embedded/cdk-extensions.SecureRestApiV2", version: "0.22.22" };
|
|
56
56
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjdXJlUmVzdEFwaVYyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0cnVjdHMvU2VjdXJlUmVzdEFwaVYyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0RBTW9DO0FBQ3BDLCtFQUc0QztBQUM1Qyx5REFBa0U7QUFDbEUsd0RBQXFEO0FBQ3JELDBDQUFtRDtBQTJCbkQsTUFBYSxlQUFnQixTQUFRLHFCQUFTO0lBSzVDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMkI7UUFDbkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsSUFBSSxHQUFHLGNBQUcsQ0FBQyxnQkFBZ0IsQ0FDOUIsSUFBSSxFQUNKLFFBQVEsRUFDUixLQUFLLENBQUMscUJBQXFCLENBQzVCLENBQUMsSUFBSSxDQUFDO1FBRVAsTUFBTSxVQUFVLEdBQ2QsS0FBSyxDQUFDLFVBQVU7WUFDaEIsd0JBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtnQkFDeEMsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJO2FBQ3RCLENBQUMsQ0FBQztRQUVMLE1BQU0sVUFBVSxHQUFHLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFbEUsTUFBTSxXQUFXLEdBQUcsSUFBSSxvQ0FBVyxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDdkQsVUFBVTtZQUNWLFVBQVUsRUFBRSw4Q0FBcUIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1NBQ3RELENBQUMsQ0FBQztRQUVILE1BQU0sT0FBTyxHQUFHLDBCQUFlLENBQUMsZ0JBQWdCLENBQzlDLElBQUksRUFDSixTQUFTLEVBQ1QsS0FBSyxDQUFDLHFCQUFxQixDQUM1QixDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztRQUU3RCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksd0JBQU8sQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQzFDLEdBQUcsS0FBSyxDQUFDLFlBQVk7WUFDckIsb0JBQW9CLEVBQUU7Z0JBQ3BCLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxvQkFBb0I7Z0JBQzFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTthQUM1QjtZQUNELFVBQVUsRUFBRTtnQkFDVixHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBVTtnQkFDaEMsVUFBVTtnQkFDVixXQUFXO2FBQ1o7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sU0FBUyxDQUNkLFVBQWtCLEVBQ2xCLE1BQW9CLEVBQ3BCLE9BQXVCO1FBRXZCLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFDekUsQ0FBQyxDQUFDO2dCQUNFLGVBQWUsSUFBSSxDQUFDLElBQUksV0FBVztnQkFDbkMsZUFBZSxJQUFJLENBQUMsSUFBSSxZQUFZO2FBQ3JDO1lBQ0gsQ0FBQyxDQUFDLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSxZQUFZLENBQUMsQ0FBQztRQUUzQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFO1lBQ3JELFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixtQkFBbUI7WUFDbkIsR0FBRyxPQUFPO1NBQ1gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFsRUgsMENBbUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29nbml0b1VzZXJQb29sc0F1dGhvcml6ZXIsXG4gIEludGVncmF0aW9uLFxuICBNZXRob2RPcHRpb25zLFxuICBSZXN0QXBpLFxuICBSZXN0QXBpUHJvcHMsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheVwiO1xuaW1wb3J0IHtcbiAgQ2VydGlmaWNhdGUsXG4gIENlcnRpZmljYXRlVmFsaWRhdGlvbixcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXJcIjtcbmltcG9ydCB7IEhvc3RlZFpvbmUsIElIb3N0ZWRab25lIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0cy9saWIvY29uc3RydWN0XCI7XG5pbXBvcnQgeyBDb2duaXRvVXNlclBvb2wsIFZwYyB9IGZyb20gXCIuLi9wbGF0Zm9ybVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyZVJlc3RBcGlQcm9wc1YyIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBCYXNlIHBsYXRmb3JtIFN0YWNrXG4gICAqL1xuICByZWFkb25seSBiYXNlUGxhdGZvcm1TdGFja05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFN1YmRvbWFpbiB0aGF0IGlzIHVzZWQgZm9yIFJFU1QgQVBJIHByb3BzXG4gICAqL1xuICByZWFkb25seSBhcGlTdWJEb21haW46IHN0cmluZztcblxuICAvKipcbiAgICogaG9zdGVkIHpvbmUgZm9yIHRoZSBzdWJkb21haW4uXG4gICAqIEFuIG9wdGlvbmFsIHBhcmFtZXRlclxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZxZG4gb3V0cHV0IG9mIGJhc2UgcGxhdGZvcm0gc3RhY2sgaXMgdXNlZCB0byBpbXBvcnQgdGhlIGhvc3RlZCB6b25lXG4gICAqL1xuICByZWFkb25seSBob3N0ZWRab25lPzogSUhvc3RlZFpvbmU7XG5cbiAgLyoqXG4gICAqIFByb3BzIGZvcndhcmRlZCB0byB0aGUgUmVzdEFwaSBjb25zdHJ1Y3QuXG4gICAqL1xuICByZWFkb25seSByZXN0QXBpUHJvcHM6IFJlc3RBcGlQcm9wcztcbn1cblxuZXhwb3J0IGNsYXNzIFNlY3VyZVJlc3RBcGlWMiBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aG9yaXplcjogQ29nbml0b1VzZXJQb29sc0F1dGhvcml6ZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgZnFkbjogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc3RBcGk6IFJlc3RBcGk7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNlY3VyZVJlc3RBcGlQcm9wc1YyKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuZnFkbiA9IFZwYy5mcm9tQmFzZVBsYXRmb3JtKFxuICAgICAgdGhpcyxcbiAgICAgIFwiVnBjUmVmXCIsXG4gICAgICBwcm9wcy5iYXNlUGxhdGZvcm1TdGFja05hbWUsXG4gICAgKS5mcWRuO1xuXG4gICAgY29uc3QgaG9zdGVkWm9uZSA9XG4gICAgICBwcm9wcy5ob3N0ZWRab25lID8/XG4gICAgICBIb3N0ZWRab25lLmZyb21Mb29rdXAodGhpcywgXCJIb3N0ZWRab25lXCIsIHtcbiAgICAgICAgZG9tYWluTmFtZTogdGhpcy5mcWRuLFxuICAgICAgfSk7XG5cbiAgICBjb25zdCBkb21haW5OYW1lID0gYCR7cHJvcHMuYXBpU3ViRG9tYWlufS4ke2hvc3RlZFpvbmUuem9uZU5hbWV9YDtcblxuICAgIGNvbnN0IGNlcnRpZmljYXRlID0gbmV3IENlcnRpZmljYXRlKHRoaXMsIFwiQ2VydGlmaWNhdGVcIiwge1xuICAgICAgZG9tYWluTmFtZSxcbiAgICAgIHZhbGlkYXRpb246IENlcnRpZmljYXRlVmFsaWRhdGlvbi5mcm9tRG5zKGhvc3RlZFpvbmUpLFxuICAgIH0pO1xuXG4gICAgY29uc3QgY29nbml0byA9IENvZ25pdG9Vc2VyUG9vbC5mcm9tQmFzZVBsYXRmb3JtKFxuICAgICAgdGhpcyxcbiAgICAgIFwiQ29nbml0b1wiLFxuICAgICAgcHJvcHMuYmFzZVBsYXRmb3JtU3RhY2tOYW1lLFxuICAgICk7XG5cbiAgICB0aGlzLmF1dGhvcml6ZXIgPSBjb2duaXRvLmNyZWF0ZUNvZ25pdG9Vc2VyUG9vbHNBdXRob3JpemVyKCk7XG5cbiAgICB0aGlzLnJlc3RBcGkgPSBuZXcgUmVzdEFwaSh0aGlzLCBcIlJlc3RBcGlcIiwge1xuICAgICAgLi4ucHJvcHMucmVzdEFwaVByb3BzLFxuICAgICAgZGVmYXVsdE1ldGhvZE9wdGlvbnM6IHtcbiAgICAgICAgLi4ucHJvcHMucmVzdEFwaVByb3BzLmRlZmF1bHRNZXRob2RPcHRpb25zLFxuICAgICAgICBhdXRob3JpemVyOiB0aGlzLmF1dGhvcml6ZXIsXG4gICAgICB9LFxuICAgICAgZG9tYWluTmFtZToge1xuICAgICAgICAuLi5wcm9wcy5yZXN0QXBpUHJvcHMuZG9tYWluTmFtZSxcbiAgICAgICAgZG9tYWluTmFtZSxcbiAgICAgICAgY2VydGlmaWNhdGUsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZE1ldGhvZChcbiAgICBodHRwTWV0aG9kOiBzdHJpbmcsXG4gICAgdGFyZ2V0PzogSW50ZWdyYXRpb24sXG4gICAgb3B0aW9ucz86IE1ldGhvZE9wdGlvbnMsXG4gICkge1xuICAgIGNvbnN0IGF1dGhvcml6YXRpb25TY29wZXMgPSBbYEdFVGAsIGBIRUFEYCwgYE9QVElPTlNgXS5pbmNsdWRlcyhodHRwTWV0aG9kKVxuICAgICAgPyBbXG4gICAgICAgICAgYGh0dHBzOi8vYXBpLiR7dGhpcy5mcWRufS9yZWFkX2FwaWAsXG4gICAgICAgICAgYGh0dHBzOi8vYXBpLiR7dGhpcy5mcWRufS93cml0ZV9hcGlgLFxuICAgICAgICBdXG4gICAgICA6IFtgaHR0cHM6Ly9hcGkuJHt0aGlzLmZxZG59L3dyaXRlX2FwaWBdO1xuXG4gICAgcmV0dXJuIHRoaXMucmVzdEFwaS5yb290LmFkZE1ldGhvZChodHRwTWV0aG9kLCB0YXJnZXQsIHtcbiAgICAgIGF1dGhvcml6ZXI6IHRoaXMuYXV0aG9yaXplcixcbiAgICAgIGF1dGhvcml6YXRpb25TY29wZXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -52,5 +52,5 @@ class ApiKeyClientAuthorization extends constructs_1.Construct {
|
|
|
52
52
|
}
|
|
53
53
|
exports.ApiKeyClientAuthorization = ApiKeyClientAuthorization;
|
|
54
54
|
_a = JSII_RTTI_SYMBOL_1;
|
|
55
|
-
ApiKeyClientAuthorization[_a] = { fqn: "@btc-embedded/cdk-extensions.ApiKeyClientAuthorization", version: "0.22.
|
|
55
|
+
ApiKeyClientAuthorization[_a] = { fqn: "@btc-embedded/cdk-extensions.ApiKeyClientAuthorization", version: "0.22.22" };
|
|
56
56
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpS2V5Q2xpZW50QXV0aG9yaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb25zdHJ1Y3RzL2FwaS1rZXlzL0FwaUtleUNsaWVudEF1dGhvcml6YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBdUM7QUFDdkMsbUVBTXNDO0FBQ3RDLDZGQUFrRjtBQUVsRiwyQ0FBdUM7QUFDdkMsbUdBQTZGO0FBRTdGLE1BQU0sMEJBQTBCLEdBQUcsT0FBTyxDQUFDO0FBNkMzQzs7O0dBR0c7QUFDSCxNQUFhLHlCQUEwQixTQUFRLHNCQUFTO0lBR3REOzs7OztPQUtHO0lBQ0gsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBcUM7UUFFckMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLG1CQUFtQixHQUFHLElBQUksa0VBQThCLENBQzVELElBQUksRUFDSix1QkFBdUIsRUFDdkI7WUFDRSxPQUFPLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1NBQzlCLENBQ0YsQ0FBQztRQUVGLG1CQUFtQixDQUFDLGNBQWMsQ0FDaEMsZ0JBQWdCLEVBQ2hCLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDdkIsQ0FBQztRQUNGLG1CQUFtQixDQUFDLGNBQWMsQ0FDaEMsd0JBQXdCLEVBQ3hCLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQ3JDLENBQUM7UUFDRixtQkFBbUIsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNFLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlELEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUUxRCxNQUFNLGlCQUFpQixHQUFHLElBQUkscURBQXFCLENBQ2pELG1CQUFtQixFQUNuQixtQkFBbUIsQ0FDcEIsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSwwQkFBMEIsQ0FBQztRQUVuRSxJQUFJLDRCQUFTLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFO1lBQ3hDLE9BQU8sRUFBRSxLQUFLLENBQUMsb0JBQW9CO1lBQ25DLFdBQVcsRUFBRSxpQkFBaUI7WUFDOUIsUUFBUSxFQUFFLCtCQUFZLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsNkJBQVUsQ0FBQyxJQUFJLENBQUM7WUFDeEQsVUFBVSxFQUFFLElBQUkscUNBQWtCLEVBQUU7U0FDckMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGdCQUFnQjtZQUNuQixDQUFDLEtBQUssQ0FBQyx1QkFBdUI7Z0JBQzVCLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsU0FBUztvQkFDaEQsS0FBSyxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQzs7QUE5REgsOERBK0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIEh0dHBNZXRob2QsXG4gIEh0dHBOb25lQXV0aG9yaXplcixcbiAgSHR0cFJvdXRlLFxuICBIdHRwUm91dGVLZXksXG4gIElIdHRwQXBpLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXl2MlwiO1xuaW1wb3J0IHsgSHR0cExhbWJkYUludGVncmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5djItaW50ZWdyYXRpb25zXCI7XG5pbXBvcnQgeyBJU2VjcmV0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlclwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEFwaUNsaWVudEF1dGhvcml6YXRpb25GdW5jdGlvbiB9IGZyb20gXCIuL2xhbWJkYXMvYXBpLWNsaWVudC1hdXRob3JpemF0aW9uLWZ1bmN0aW9uXCI7XG5cbmNvbnN0IERFRkFVTFRfQVVUSE9SSVpBVElPTl9QQVRIID0gXCJ0b2tlblwiO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gaW5zdGFudGlhdGUgdGhlIHtAbGluayBBcGlLZXlDbGllbnRBdXRob3JpemF0aW9ufSBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpS2V5Q2xpZW50QXV0aG9yaXphdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIEFuIGV4aXN0aW5nIEh0dHBBcGkgdG8gYXR0YWNoIHRoZSBlbmRwb2ludCB0by4gVGhlIGRlZmF1bHQgYXV0aG9yaXplciB3aWxsIHdlIGlnbm9yZWRcbiAgICogYW5kIG5vIGF1dGhvcml6YXRpb24gd2lsbCBiZSByZXF1aXJlZCBmb3IgdGhlIGVuZHBvaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXV0aG9yaXphdGlvbkh0dHBBcGk6IElIdHRwQXBpO1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBiYXNlIFVSTCBmb3IgdGhlIHtAbGluayBJSHR0cEFwaX0gaW4gY2FzZSBpdCBjYW5ub3QgYmUgcmV0cmlldmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXV0aG9yaXphdGlvbkh0dHBBcGlVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgQVBJIGNsaWVudC4gQ3JlZGVudGlhbHMgcmVxdWlyZWQgZm9yIGF1dGhvcml6YXRpb24gd2lsbCBiZSBmZXRjaGVkIGZvclxuICAgKiB0aGlzIGNsaWVudC5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJQb29sQ2xpZW50SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNlY3JldCBjb250YWluaW5nIHRoZSB1c2VyIHBvb2wgY2xpZW50IHNlY3JldC5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJQb29sQ2xpZW50U2VjcmV0OiBJU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBUaGUgaXNzdWVyIFVSTCBmb3IgdGhlIHVzZXIgcG9vbC4gVXNlZCB0byBleHRyYWN0IHRoZSBPQXV0aCBVUkwuXG4gICAqL1xuICByZWFkb25seSBvaWRjSXNzdWVyVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzY29wZSB0byBiZSB1c2VkIGZvciByZXRyaWV2aW5nIHRoZSB0b2tlbi5cbiAgICovXG4gIHJlYWRvbmx5IHNjb3BlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhdGggKHdpdGhvdXQgcHJlY2VkaW5nIGFuZCB0cmFpbGluZyBzbGFzaCkgdG8gYmUgdXNlZCB0byByZXRyaWV2ZSB0aGUgdG9rZW4uXG4gICAqIFdpbGwgZGVmYXVsdCB0byBgdG9rZW5gIGlmIG5vdCBzZXQuXG4gICAqL1xuICByZWFkb25seSBhdXRob3JpemF0aW9uUGF0aD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgdGhhdCBwcm92aWRlcyBhIGN1c3RvbSBPQXV0aCBVUkwgZm9yIGF1dGhvcml6aW5nIGFuIEFQSSBjbGllbnQgYnkgb25seSBwYXNzaW5nIGFcbiAqIHZhbGlkIGNsaWVudCBpZC4gSXQgd2lsbCBhZGQgYSBuZXcgZW5kcG9pbnQgdG8gYW4gZXhpc3RpbmcgSHR0cEFwaSBhcyBgL2F1dGhvcml6ZS97aWR9YC5cbiAqL1xuZXhwb3J0IGNsYXNzIEFwaUtleUNsaWVudEF1dGhvcml6YXRpb24gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwcml2YXRlIGF1dGhvcml6YXRpb25Vcmw6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgdG8gYmUgdXNlZC5cbiAgICogQHBhcmFtIGlkIFRoZSBJRCB1c2VkIGZvciB0aGUgY29tcG9uZW50IGluc3RhbmNlLlxuICAgKiBAcGFyYW0gcHJvcHMgVGhlIHtAbGluayBBcGlLZXlDbGllbnRBdXRob3JpemF0aW9uUHJvcHN9IHJlcXVpcmVkIGZvciBjcmVhdGluZyB0aGUgaW5zdGFuY2UuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEFwaUtleUNsaWVudEF1dGhvcml6YXRpb25Qcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGNsaWVudEF1dGhvcml6YXRpb24gPSBuZXcgQXBpQ2xpZW50QXV0aG9yaXphdGlvbkZ1bmN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIFwiQXV0aG9yaXphdGlvbkZ1bmN0aW9uXCIsXG4gICAgICB7XG4gICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNDUpLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgY2xpZW50QXV0aG9yaXphdGlvbi5hZGRFbnZpcm9ubWVudChcbiAgICAgIFwiT0lEQ19DTElFTlRfSURcIixcbiAgICAgIHByb3BzLnVzZXJQb29sQ2xpZW50SWQsXG4gICAgKTtcbiAgICBjbGllbnRBdXRob3JpemF0aW9uLmFkZEVudmlyb25tZW50KFxuICAgICAgXCJPSURDX0NMSUVOVF9TRUNSRVRfQVJOXCIsXG4gICAgICBwcm9wcy51c2VyUG9vbENsaWVudFNlY3JldC5zZWNyZXRBcm4sXG4gICAgKTtcbiAgICBjbGllbnRBdXRob3JpemF0aW9uLmFkZEVudmlyb25tZW50KFwiT0lEQ19JU1NVRVJfVVJMXCIsIHByb3BzLm9pZGNJc3N1ZXJVcmwpO1xuICAgIGNsaWVudEF1dGhvcml6YXRpb24uYWRkRW52aXJvbm1lbnQoXCJPSURDX1NDT1BFXCIsIHByb3BzLnNjb3BlKTtcblxuICAgIHByb3BzLnVzZXJQb29sQ2xpZW50U2VjcmV0LmdyYW50UmVhZChjbGllbnRBdXRob3JpemF0aW9uKTtcblxuICAgIGNvbnN0IGFwaUtleUludGVncmF0aW9uID0gbmV3IEh0dHBMYW1iZGFJbnRlZ3JhdGlvbihcbiAgICAgIFwiQXBpS2V5SW50ZWdyYXRpb25cIixcbiAgICAgIGNsaWVudEF1dGhvcml6YXRpb24sXG4gICAgKTtcblxuICAgIGNvbnN0IHBhdGggPSBwcm9wcy5hdXRob3JpemF0aW9uUGF0aCA/PyBERUZBVUxUX0FVVEhPUklaQVRJT05fUEFUSDtcblxuICAgIG5ldyBIdHRwUm91dGUodGhpcywgXCJBdXRob3JpemF0aW9uUm91dGVcIiwge1xuICAgICAgaHR0cEFwaTogcHJvcHMuYXV0aG9yaXphdGlvbkh0dHBBcGksXG4gICAgICBpbnRlZ3JhdGlvbjogYXBpS2V5SW50ZWdyYXRpb24sXG4gICAgICByb3V0ZUtleTogSHR0cFJvdXRlS2V5LndpdGgoYC8ke3BhdGh9YCwgSHR0cE1ldGhvZC5QT1NUKSxcbiAgICAgIGF1dGhvcml6ZXI6IG5ldyBIdHRwTm9uZUF1dGhvcml6ZXIoKSxcbiAgICB9KTtcblxuICAgIHRoaXMuYXV0aG9yaXphdGlvblVybCA9XG4gICAgICAocHJvcHMuYXV0aG9yaXphdGlvbkh0dHBBcGlVcmwgPz9cbiAgICAgICAgcHJvcHMuYXV0aG9yaXphdGlvbkh0dHBBcGkuZGVmYXVsdFN0YWdlPy5kb21haW5VcmwgK1xuICAgICAgICAgIHByb3BzLmF1dGhvcml6YXRpb25IdHRwQXBpLmFwaUVuZHBvaW50KSArIGAke3BhdGh9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGF1dGhvcml6YXRpb24gVVJMIHRvIGJlIHVzZWQgdG8gcmV0cmlldmUgdGhlIHRva2VuLlxuICAgKi9cbiAgZ2V0IHRva2VuVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aG9yaXphdGlvblVybDtcbiAgfVxufVxuIl19
|