@mrgrain/cdk-esbuild 1.127.0 → 2.0.0-alpha.2
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/.gitattributes +23 -0
- package/.jsii +3670 -0
- package/.projenrc.mjs +175 -0
- package/API.md +1685 -0
- package/CHANGELOG.md +2 -2
- package/LICENSE +1 -3
- package/README.md +25 -165
- package/SECURITY.md +18 -0
- package/lib/asset.d.ts +29 -20
- package/lib/asset.js +20 -14
- package/lib/bundler.d.ts +51 -0
- package/lib/bundler.js +71 -0
- package/lib/code.d.ts +68 -17
- package/lib/code.js +49 -12
- package/lib/esbuild-types-raw.d.ts +304 -0
- package/lib/esbuild-types-raw.js +4 -0
- package/lib/esbuild-types.d.ts +464 -0
- package/lib/esbuild-types.js +4 -0
- package/lib/esbuild-wrapper.d.ts +3 -0
- package/lib/esbuild-wrapper.js +12 -0
- package/lib/formatMessages.d.ts +2 -2
- package/lib/formatMessages.js +10 -10
- package/lib/index.d.ts +6 -5
- package/lib/index.js +4 -6
- package/lib/inline-code.d.ts +14 -2
- package/lib/inline-code.js +32 -10
- package/lib/source.d.ts +51 -14
- package/lib/source.js +37 -6
- package/package.json +137 -38
- package/esbuild/Dockerfile +0 -13
- package/esbuild/esbuild-js +0 -22
- package/lib/bundlers.d.ts +0 -53
- package/lib/bundlers.js +0 -93
- package/lib/bundling.d.ts +0 -12
- package/lib/bundling.js +0 -44
package/lib/code.d.ts
CHANGED
|
@@ -1,30 +1,81 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { CfnResource, Construct } from
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import { ResourceBindOptions } from '@aws-cdk/aws-lambda';
|
|
2
|
+
import { Location } from '@aws-cdk/aws-s3';
|
|
3
|
+
import { CfnResource, Construct } from '@aws-cdk/core';
|
|
4
|
+
import { AssetBaseProps, AssetProps, JavaScriptAsset as JSAsset, TypeScriptAsset as TSAsset } from './asset';
|
|
5
|
+
import { EntryPoints } from './bundler';
|
|
6
|
+
/**
|
|
7
|
+
* @stability stable
|
|
8
|
+
*/
|
|
9
|
+
export interface CodeConfig {
|
|
10
|
+
/**
|
|
11
|
+
* @stability stable
|
|
12
|
+
*/
|
|
13
|
+
readonly s3Location: Location;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* @stability stable
|
|
17
|
+
*/
|
|
18
|
+
export interface JavaScriptCodeProps extends AssetBaseProps {
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* @stability stable
|
|
22
|
+
*/
|
|
23
|
+
export interface TypeScriptCodeProps extends AssetBaseProps {
|
|
24
|
+
}
|
|
25
|
+
declare abstract class Code<Props extends JavaScriptCodeProps | TypeScriptCodeProps, Asset extends JSAsset | TSAsset> {
|
|
26
|
+
readonly entryPoints: EntryPoints;
|
|
27
|
+
protected abstract readonly assetClass: new (scope: Construct, id: string, props: AssetProps) => Asset;
|
|
28
|
+
/**
|
|
29
|
+
* @stability stable
|
|
30
|
+
*/
|
|
31
|
+
protected props: AssetProps;
|
|
32
|
+
/**
|
|
33
|
+
* @stability stable
|
|
34
|
+
*/
|
|
11
35
|
protected asset: Asset;
|
|
12
|
-
|
|
36
|
+
/**
|
|
37
|
+
* @stability stable
|
|
38
|
+
*/
|
|
39
|
+
isInline: boolean;
|
|
13
40
|
/**
|
|
14
41
|
*
|
|
15
42
|
* @param entryPoints - Relative path to the asset code. Use `props.buildOptions.absWorkingDir` if an absolute path is required.
|
|
16
43
|
* @param props - Asset properties.
|
|
17
44
|
*/
|
|
18
|
-
constructor(entryPoints:
|
|
19
|
-
|
|
45
|
+
constructor(entryPoints: EntryPoints, props: Props);
|
|
46
|
+
/**
|
|
47
|
+
* @stability stable
|
|
48
|
+
*/
|
|
49
|
+
bind(scope: Construct): CodeConfig;
|
|
50
|
+
/**
|
|
51
|
+
* @stability stable
|
|
52
|
+
*/
|
|
20
53
|
bindToResource(resource: CfnResource, options?: ResourceBindOptions): void;
|
|
21
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* @stability stable
|
|
57
|
+
*/
|
|
22
58
|
export declare class JavaScriptCode extends Code<JavaScriptCodeProps, JSAsset> {
|
|
23
|
-
|
|
24
|
-
|
|
59
|
+
/**
|
|
60
|
+
* @stability stable
|
|
61
|
+
*/
|
|
62
|
+
assetClass: typeof JSAsset;
|
|
63
|
+
/**
|
|
64
|
+
* @stability stable
|
|
65
|
+
*/
|
|
66
|
+
constructor(entryPoints: EntryPoints, props?: JavaScriptCodeProps);
|
|
25
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* @stability stable
|
|
70
|
+
*/
|
|
26
71
|
export declare class TypeScriptCode extends Code<TypeScriptCodeProps, TSAsset> {
|
|
27
|
-
|
|
28
|
-
|
|
72
|
+
/**
|
|
73
|
+
* @stability stable
|
|
74
|
+
*/
|
|
75
|
+
assetClass: typeof TSAsset;
|
|
76
|
+
/**
|
|
77
|
+
* @stability stable
|
|
78
|
+
*/
|
|
79
|
+
constructor(entryPoints: EntryPoints, props?: TypeScriptCodeProps);
|
|
29
80
|
}
|
|
30
81
|
export {};
|
package/lib/code.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var _a, _b;
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
4
|
exports.TypeScriptCode = exports.JavaScriptCode = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
4
6
|
const core_1 = require("@aws-cdk/core");
|
|
5
7
|
const asset_1 = require("./asset");
|
|
6
8
|
function nodeMajorVersion() {
|
|
7
|
-
return parseInt(process.versions.node.split(
|
|
9
|
+
return parseInt(process.versions.node.split('.')[0], 10);
|
|
8
10
|
}
|
|
11
|
+
;
|
|
12
|
+
;
|
|
9
13
|
class Code {
|
|
10
14
|
/**
|
|
11
15
|
*
|
|
@@ -13,29 +17,37 @@ class Code {
|
|
|
13
17
|
* @param props - Asset properties.
|
|
14
18
|
*/
|
|
15
19
|
constructor(entryPoints, props) {
|
|
16
|
-
var
|
|
20
|
+
var _c, _d;
|
|
21
|
+
this.entryPoints = entryPoints;
|
|
22
|
+
/**
|
|
23
|
+
* @stability stable
|
|
24
|
+
*/
|
|
25
|
+
this.isInline = false;
|
|
17
26
|
const defaultOptions = {
|
|
18
|
-
...(!((
|
|
19
|
-
((
|
|
20
|
-
? { platform:
|
|
27
|
+
...(!((_c = props.buildOptions) === null || _c === void 0 ? void 0 : _c.platform) ||
|
|
28
|
+
((_d = props.buildOptions) === null || _d === void 0 ? void 0 : _d.platform) === 'node'
|
|
29
|
+
? { platform: 'node', target: 'node' + nodeMajorVersion() }
|
|
21
30
|
: {}),
|
|
22
31
|
};
|
|
23
32
|
this.props = {
|
|
24
|
-
entryPoints,
|
|
25
33
|
...props,
|
|
34
|
+
entryPoints,
|
|
26
35
|
buildOptions: {
|
|
27
36
|
...defaultOptions,
|
|
28
37
|
...props.buildOptions,
|
|
29
38
|
},
|
|
30
39
|
};
|
|
31
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* @stability stable
|
|
43
|
+
*/
|
|
32
44
|
bind(scope) {
|
|
33
45
|
// If the same AssetCode is used multiple times, retain only the first instantiation.
|
|
34
46
|
if (!this.asset) {
|
|
35
|
-
this.asset = new this.
|
|
47
|
+
this.asset = new this.assetClass(scope, this.constructor.name, this.props);
|
|
36
48
|
}
|
|
37
49
|
else if (core_1.Stack.of(this.asset) !== core_1.Stack.of(scope)) {
|
|
38
|
-
throw new Error(`Asset is already associated with another stack '${core_1.Stack.of(this.asset).stackName}'. ` +
|
|
50
|
+
throw new Error(`Asset is already associated with another stack '${core_1.Stack.of(this.asset).stackName}'. ` + 'Create a new Asset instance for every stack.');
|
|
39
51
|
}
|
|
40
52
|
return {
|
|
41
53
|
s3Location: {
|
|
@@ -44,27 +56,52 @@ class Code {
|
|
|
44
56
|
},
|
|
45
57
|
};
|
|
46
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* @stability stable
|
|
61
|
+
*/
|
|
47
62
|
bindToResource(resource, options) {
|
|
48
63
|
if (!this.asset) {
|
|
49
|
-
throw new Error(
|
|
64
|
+
throw new Error('bindToResource() must be called after bind()');
|
|
50
65
|
}
|
|
51
66
|
const resourceProperty = (options === null || options === void 0 ? void 0 : options.resourceProperty) || this.constructor.name;
|
|
52
67
|
// https://github.com/aws/aws-cdk/issues/1432
|
|
53
68
|
this.asset.addResourceMetadata(resource, resourceProperty);
|
|
54
69
|
}
|
|
55
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* @stability stable
|
|
73
|
+
*/
|
|
56
74
|
class JavaScriptCode extends Code {
|
|
75
|
+
/**
|
|
76
|
+
* @stability stable
|
|
77
|
+
*/
|
|
57
78
|
constructor(entryPoints, props = {}) {
|
|
58
79
|
super(entryPoints, props);
|
|
59
|
-
|
|
80
|
+
/**
|
|
81
|
+
* @stability stable
|
|
82
|
+
*/
|
|
83
|
+
this.assetClass = asset_1.JavaScriptAsset;
|
|
60
84
|
}
|
|
61
85
|
}
|
|
62
86
|
exports.JavaScriptCode = JavaScriptCode;
|
|
87
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
88
|
+
JavaScriptCode[_a] = { fqn: "@mrgrain/cdk-esbuild.JavaScriptCode", version: "2.0.0-alpha.2" };
|
|
89
|
+
/**
|
|
90
|
+
* @stability stable
|
|
91
|
+
*/
|
|
63
92
|
class TypeScriptCode extends Code {
|
|
93
|
+
/**
|
|
94
|
+
* @stability stable
|
|
95
|
+
*/
|
|
64
96
|
constructor(entryPoints, props = {}) {
|
|
65
97
|
super(entryPoints, props);
|
|
66
|
-
|
|
98
|
+
/**
|
|
99
|
+
* @stability stable
|
|
100
|
+
*/
|
|
101
|
+
this.assetClass = asset_1.TypeScriptAsset;
|
|
67
102
|
}
|
|
68
103
|
}
|
|
69
104
|
exports.TypeScriptCode = TypeScriptCode;
|
|
70
|
-
|
|
105
|
+
_b = JSII_RTTI_SYMBOL_1;
|
|
106
|
+
TypeScriptCode[_b] = { fqn: "@mrgrain/cdk-esbuild.TypeScriptCode", version: "2.0.0-alpha.2" };
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsd0NBQThEO0FBQzlELG1DQUtpQjtBQUlqQixTQUFTLGdCQUFnQjtJQUN2QixPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQU02RCxDQUFDO0FBQ0QsQ0FBQztBQUUvRCxNQUFlLElBQUk7SUFnQmpCOzs7O09BSUc7SUFDSCxZQUE0QixXQUF3QixFQUFFLEtBQVk7O1FBQXRDLGdCQUFXLEdBQVgsV0FBVyxDQUFhOzs7O1FBUDdDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFRL0IsTUFBTSxjQUFjLEdBQTBCO1lBQzVDLEdBQUcsQ0FBQyxRQUFDLEtBQUssQ0FBQyxZQUFZLDBDQUFFLFFBQVEsQ0FBQTtnQkFDakMsT0FBQSxLQUFLLENBQUMsWUFBWSwwQ0FBRSxRQUFRLE1BQUssTUFBTTtnQkFDckMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLGdCQUFnQixFQUFFLEVBQUU7Z0JBQzNELENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDUixDQUFDO1FBRUYsSUFBSSxDQUFDLEtBQUssR0FBRztZQUNYLEdBQUcsS0FBSztZQUNSLFdBQVc7WUFDWCxZQUFZLEVBQUU7Z0JBQ1osR0FBRyxjQUFjO2dCQUNqQixHQUFHLEtBQUssQ0FBQyxZQUFZO2FBQ3RCO1NBQ0YsQ0FBQztJQUNKLENBQUM7Ozs7SUFFRCxJQUFJLENBQUMsS0FBZ0I7UUFDbkIscUZBQXFGO1FBQ3JGLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQzlCLEtBQUssRUFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFDckIsSUFBSSxDQUFDLEtBQUssQ0FDWCxDQUFDO1NBQ0g7YUFBTSxJQUFJLFlBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLFlBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkQsTUFBTSxJQUFJLEtBQUssQ0FDYixtREFDRSxZQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUN2QixLQUFLLEdBQUcsOENBQThDLENBQ3ZELENBQUM7U0FDSDtRQUVELE9BQU87WUFDTCxVQUFVLEVBQUU7Z0JBQ1YsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWTtnQkFDbkMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVzthQUNsQztTQUNGLENBQUM7SUFDSixDQUFDOzs7O0lBRUQsY0FBYyxDQUFDLFFBQXFCLEVBQUUsT0FBNkI7UUFDakUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7U0FDakU7UUFDRCxNQUFNLGdCQUFnQixHQUFHLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLGdCQUFnQixLQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQzVFLDZDQUE2QztRQUM3QyxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELENBQUM7Q0FDRjs7OztBQUVELE1BQWEsY0FBZSxTQUFRLElBQWtDOzs7O0lBR3BFLFlBQ0UsV0FBd0IsRUFDeEIsUUFBNkIsRUFBRTtRQUUvQixLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDOzs7O1FBTjVCLGVBQVUsR0FBRyx1QkFBTyxDQUFDO0lBT3JCLENBQUM7O0FBUkgsd0NBU0M7Ozs7OztBQUNELE1BQWEsY0FBZSxTQUFRLElBQWtDOzs7O0lBR3BFLFlBQ0UsV0FBd0IsRUFDeEIsUUFBNkIsRUFBRTtRQUUvQixLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDOzs7O1FBTjVCLGVBQVUsR0FBRyx1QkFBTyxDQUFDO0lBT3JCLENBQUM7O0FBUkgsd0NBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNvdXJjZUJpbmRPcHRpb25zIH0gZnJvbSAnQGF3cy1jZGsvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1zMyc7XG5pbXBvcnQgeyBDZm5SZXNvdXJjZSwgQ29uc3RydWN0LCBTdGFjayB9IGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1xuaW1wb3J0IHtcbiAgQXNzZXRCYXNlUHJvcHMsXG4gIEFzc2V0UHJvcHMsXG4gIEphdmFTY3JpcHRBc3NldCBhcyBKU0Fzc2V0LFxuICBUeXBlU2NyaXB0QXNzZXQgYXMgVFNBc3NldCxcbn0gZnJvbSAnLi9hc3NldCc7XG5pbXBvcnQgeyBFbnRyeVBvaW50cyB9IGZyb20gJy4vYnVuZGxlcic7XG5pbXBvcnQgeyBCdWlsZE9wdGlvbnMgfSBmcm9tICcuL2VzYnVpbGQtdHlwZXMnO1xuXG5mdW5jdGlvbiBub2RlTWFqb3JWZXJzaW9uKCk6IG51bWJlciB7XG4gIHJldHVybiBwYXJzZUludChwcm9jZXNzLnZlcnNpb25zLm5vZGUuc3BsaXQoJy4nKVswXSwgMTApO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvZGVDb25maWcge1xuICByZWFkb25seSBzM0xvY2F0aW9uOiBMb2NhdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKYXZhU2NyaXB0Q29kZVByb3BzIGV4dGVuZHMgQXNzZXRCYXNlUHJvcHMge307XG5leHBvcnQgaW50ZXJmYWNlIFR5cGVTY3JpcHRDb2RlUHJvcHMgZXh0ZW5kcyBBc3NldEJhc2VQcm9wcyB7fTtcblxuYWJzdHJhY3QgY2xhc3MgQ29kZTxcbiAgUHJvcHMgZXh0ZW5kcyBKYXZhU2NyaXB0Q29kZVByb3BzIHwgVHlwZVNjcmlwdENvZGVQcm9wcyxcbiAgQXNzZXQgZXh0ZW5kcyBKU0Fzc2V0IHwgVFNBc3NldFxuPiB7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBhc3NldENsYXNzOiBuZXcgKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQXNzZXRQcm9wc1xuICApID0+IEFzc2V0O1xuXG4gIHByb3RlY3RlZCBwcm9wczogQXNzZXRQcm9wcztcblxuICBwcm90ZWN0ZWQgYXNzZXQhOiBBc3NldDtcblxuICBwdWJsaWMgaXNJbmxpbmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGVudHJ5UG9pbnRzIC0gUmVsYXRpdmUgcGF0aCB0byB0aGUgYXNzZXQgY29kZS4gVXNlIGBwcm9wcy5idWlsZE9wdGlvbnMuYWJzV29ya2luZ0RpcmAgaWYgYW4gYWJzb2x1dGUgcGF0aCBpcyByZXF1aXJlZC5cbiAgICogQHBhcmFtIHByb3BzIC0gQXNzZXQgcHJvcGVydGllcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBlbnRyeVBvaW50czogRW50cnlQb2ludHMsIHByb3BzOiBQcm9wcykge1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zOiBQYXJ0aWFsPEJ1aWxkT3B0aW9ucz4gPSB7XG4gICAgICAuLi4oIXByb3BzLmJ1aWxkT3B0aW9ucz8ucGxhdGZvcm0gfHxcbiAgICAgIHByb3BzLmJ1aWxkT3B0aW9ucz8ucGxhdGZvcm0gPT09ICdub2RlJ1xuICAgICAgICA/IHsgcGxhdGZvcm06ICdub2RlJywgdGFyZ2V0OiAnbm9kZScgKyBub2RlTWFqb3JWZXJzaW9uKCkgfVxuICAgICAgICA6IHt9KSxcbiAgICB9O1xuXG4gICAgdGhpcy5wcm9wcyA9IHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgZW50cnlQb2ludHMsXG4gICAgICBidWlsZE9wdGlvbnM6IHtcbiAgICAgICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgICAgIC4uLnByb3BzLmJ1aWxkT3B0aW9ucyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGJpbmQoc2NvcGU6IENvbnN0cnVjdCk6IENvZGVDb25maWcge1xuICAgIC8vIElmIHRoZSBzYW1lIEFzc2V0Q29kZSBpcyB1c2VkIG11bHRpcGxlIHRpbWVzLCByZXRhaW4gb25seSB0aGUgZmlyc3QgaW5zdGFudGlhdGlvbi5cbiAgICBpZiAoIXRoaXMuYXNzZXQpIHtcbiAgICAgIHRoaXMuYXNzZXQgPSBuZXcgdGhpcy5hc3NldENsYXNzKFxuICAgICAgICBzY29wZSxcbiAgICAgICAgdGhpcy5jb25zdHJ1Y3Rvci5uYW1lLFxuICAgICAgICB0aGlzLnByb3BzLFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKFN0YWNrLm9mKHRoaXMuYXNzZXQpICE9PSBTdGFjay5vZihzY29wZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEFzc2V0IGlzIGFscmVhZHkgYXNzb2NpYXRlZCB3aXRoIGFub3RoZXIgc3RhY2sgJyR7XG4gICAgICAgICAgU3RhY2sub2YodGhpcy5hc3NldCkuc3RhY2tOYW1lXG4gICAgICAgIH0nLiBgICsgJ0NyZWF0ZSBhIG5ldyBBc3NldCBpbnN0YW5jZSBmb3IgZXZlcnkgc3RhY2suJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHMzTG9jYXRpb246IHtcbiAgICAgICAgYnVja2V0TmFtZTogdGhpcy5hc3NldC5zM0J1Y2tldE5hbWUsXG4gICAgICAgIG9iamVjdEtleTogdGhpcy5hc3NldC5zM09iamVjdEtleSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGJpbmRUb1Jlc291cmNlKHJlc291cmNlOiBDZm5SZXNvdXJjZSwgb3B0aW9ucz86IFJlc291cmNlQmluZE9wdGlvbnMpIHtcbiAgICBpZiAoIXRoaXMuYXNzZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYmluZFRvUmVzb3VyY2UoKSBtdXN0IGJlIGNhbGxlZCBhZnRlciBiaW5kKCknKTtcbiAgICB9XG4gICAgY29uc3QgcmVzb3VyY2VQcm9wZXJ0eSA9IG9wdGlvbnM/LnJlc291cmNlUHJvcGVydHkgfHwgdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvMTQzMlxuICAgIHRoaXMuYXNzZXQuYWRkUmVzb3VyY2VNZXRhZGF0YShyZXNvdXJjZSwgcmVzb3VyY2VQcm9wZXJ0eSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEphdmFTY3JpcHRDb2RlIGV4dGVuZHMgQ29kZTxKYXZhU2NyaXB0Q29kZVByb3BzLCBKU0Fzc2V0PiB7XG4gIGFzc2V0Q2xhc3MgPSBKU0Fzc2V0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVudHJ5UG9pbnRzOiBFbnRyeVBvaW50cyxcbiAgICBwcm9wczogSmF2YVNjcmlwdENvZGVQcm9wcyA9IHt9LFxuICApIHtcbiAgICBzdXBlcihlbnRyeVBvaW50cywgcHJvcHMpO1xuICB9XG59XG5leHBvcnQgY2xhc3MgVHlwZVNjcmlwdENvZGUgZXh0ZW5kcyBDb2RlPFR5cGVTY3JpcHRDb2RlUHJvcHMsIFRTQXNzZXQ+IHtcbiAgYXNzZXRDbGFzcyA9IFRTQXNzZXQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZW50cnlQb2ludHM6IEVudHJ5UG9pbnRzLFxuICAgIHByb3BzOiBUeXBlU2NyaXB0Q29kZVByb3BzID0ge30sXG4gICkge1xuICAgIHN1cGVyKGVudHJ5UG9pbnRzLCBwcm9wcyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
export declare type Platform = 'browser' | 'node' | 'neutral';
|
|
2
|
+
export declare type Format = 'iife' | 'cjs' | 'esm';
|
|
3
|
+
export declare type Loader = 'js' | 'jsx' | 'ts' | 'tsx' | 'css' | 'json' | 'text' | 'base64' | 'file' | 'dataurl' | 'binary' | 'default';
|
|
4
|
+
export declare type LogLevel = 'verbose' | 'debug' | 'info' | 'warning' | 'error' | 'silent';
|
|
5
|
+
export declare type Charset = 'ascii' | 'utf8';
|
|
6
|
+
interface CommonOptions {
|
|
7
|
+
sourcemap?: boolean | 'inline' | 'external' | 'both';
|
|
8
|
+
legalComments?: 'none' | 'inline' | 'eof' | 'linked' | 'external';
|
|
9
|
+
sourceRoot?: string;
|
|
10
|
+
sourcesContent?: boolean;
|
|
11
|
+
format?: Format;
|
|
12
|
+
globalName?: string;
|
|
13
|
+
target?: string | string[];
|
|
14
|
+
minify?: boolean;
|
|
15
|
+
minifyWhitespace?: boolean;
|
|
16
|
+
minifyIdentifiers?: boolean;
|
|
17
|
+
minifySyntax?: boolean;
|
|
18
|
+
charset?: Charset;
|
|
19
|
+
treeShaking?: boolean;
|
|
20
|
+
ignoreAnnotations?: boolean;
|
|
21
|
+
jsx?: 'transform' | 'preserve';
|
|
22
|
+
jsxFactory?: string;
|
|
23
|
+
jsxFragment?: string;
|
|
24
|
+
define?: {
|
|
25
|
+
[key: string]: string;
|
|
26
|
+
};
|
|
27
|
+
pure?: string[];
|
|
28
|
+
keepNames?: boolean;
|
|
29
|
+
color?: boolean;
|
|
30
|
+
logLevel?: LogLevel;
|
|
31
|
+
logLimit?: number;
|
|
32
|
+
}
|
|
33
|
+
export interface BuildOptions extends CommonOptions {
|
|
34
|
+
bundle?: boolean;
|
|
35
|
+
splitting?: boolean;
|
|
36
|
+
preserveSymlinks?: boolean;
|
|
37
|
+
outfile?: string;
|
|
38
|
+
metafile?: boolean;
|
|
39
|
+
outdir?: string;
|
|
40
|
+
outbase?: string;
|
|
41
|
+
platform?: Platform;
|
|
42
|
+
external?: string[];
|
|
43
|
+
loader?: {
|
|
44
|
+
[ext: string]: Loader;
|
|
45
|
+
};
|
|
46
|
+
resolveExtensions?: string[];
|
|
47
|
+
mainFields?: string[];
|
|
48
|
+
conditions?: string[];
|
|
49
|
+
write?: boolean;
|
|
50
|
+
allowOverwrite?: boolean;
|
|
51
|
+
tsconfig?: string;
|
|
52
|
+
outExtension?: {
|
|
53
|
+
[ext: string]: string;
|
|
54
|
+
};
|
|
55
|
+
publicPath?: string;
|
|
56
|
+
entryNames?: string;
|
|
57
|
+
chunkNames?: string;
|
|
58
|
+
assetNames?: string;
|
|
59
|
+
inject?: string[];
|
|
60
|
+
banner?: {
|
|
61
|
+
[type: string]: string;
|
|
62
|
+
};
|
|
63
|
+
footer?: {
|
|
64
|
+
[type: string]: string;
|
|
65
|
+
};
|
|
66
|
+
incremental?: boolean;
|
|
67
|
+
entryPoints?: string[] | Record<string, string>;
|
|
68
|
+
stdin?: StdinOptions;
|
|
69
|
+
plugins?: Plugin[];
|
|
70
|
+
absWorkingDir?: string;
|
|
71
|
+
nodePaths?: string[];
|
|
72
|
+
watch?: boolean | WatchMode;
|
|
73
|
+
}
|
|
74
|
+
export interface WatchMode {
|
|
75
|
+
onRebuild?: (error: BuildFailure | null, result: BuildResult | null) => void;
|
|
76
|
+
}
|
|
77
|
+
export interface StdinOptions {
|
|
78
|
+
contents: string;
|
|
79
|
+
resolveDir?: string;
|
|
80
|
+
sourcefile?: string;
|
|
81
|
+
loader?: Loader;
|
|
82
|
+
}
|
|
83
|
+
export interface Message {
|
|
84
|
+
pluginName: string;
|
|
85
|
+
text: string;
|
|
86
|
+
location: Location | null;
|
|
87
|
+
notes: Note[];
|
|
88
|
+
detail: any;
|
|
89
|
+
}
|
|
90
|
+
export interface Note {
|
|
91
|
+
text: string;
|
|
92
|
+
location: Location | null;
|
|
93
|
+
}
|
|
94
|
+
export interface Location {
|
|
95
|
+
file: string;
|
|
96
|
+
namespace: string;
|
|
97
|
+
line: number;
|
|
98
|
+
column: number;
|
|
99
|
+
length: number;
|
|
100
|
+
lineText: string;
|
|
101
|
+
suggestion: string;
|
|
102
|
+
}
|
|
103
|
+
export interface OutputFile {
|
|
104
|
+
path: string;
|
|
105
|
+
contents: Uint8Array;
|
|
106
|
+
text: string;
|
|
107
|
+
}
|
|
108
|
+
export interface BuildInvalidate {
|
|
109
|
+
(): Promise<BuildIncremental>;
|
|
110
|
+
dispose(): void;
|
|
111
|
+
}
|
|
112
|
+
export interface BuildIncremental extends BuildResult {
|
|
113
|
+
rebuild: BuildInvalidate;
|
|
114
|
+
}
|
|
115
|
+
export interface BuildResult {
|
|
116
|
+
errors: Message[];
|
|
117
|
+
warnings: Message[];
|
|
118
|
+
outputFiles?: OutputFile[];
|
|
119
|
+
rebuild?: BuildInvalidate;
|
|
120
|
+
stop?: () => void;
|
|
121
|
+
metafile?: Metafile;
|
|
122
|
+
}
|
|
123
|
+
export interface BuildFailure extends Error {
|
|
124
|
+
errors: Message[];
|
|
125
|
+
warnings: Message[];
|
|
126
|
+
}
|
|
127
|
+
export interface ServeOptions {
|
|
128
|
+
port?: number;
|
|
129
|
+
host?: string;
|
|
130
|
+
servedir?: string;
|
|
131
|
+
onRequest?: (args: ServeOnRequestArgs) => void;
|
|
132
|
+
}
|
|
133
|
+
export interface ServeOnRequestArgs {
|
|
134
|
+
remoteAddress: string;
|
|
135
|
+
method: string;
|
|
136
|
+
path: string;
|
|
137
|
+
status: number;
|
|
138
|
+
timeInMS: number;
|
|
139
|
+
}
|
|
140
|
+
export interface ServeResult {
|
|
141
|
+
port: number;
|
|
142
|
+
host: string;
|
|
143
|
+
wait: Promise<void>;
|
|
144
|
+
stop: () => void;
|
|
145
|
+
}
|
|
146
|
+
export interface TransformOptions extends CommonOptions {
|
|
147
|
+
tsconfigRaw?: string | {
|
|
148
|
+
compilerOptions?: {
|
|
149
|
+
jsxFactory?: string;
|
|
150
|
+
jsxFragmentFactory?: string;
|
|
151
|
+
useDefineForClassFields?: boolean;
|
|
152
|
+
importsNotUsedAsValues?: 'remove' | 'preserve' | 'error';
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
sourcefile?: string;
|
|
156
|
+
loader?: Loader;
|
|
157
|
+
banner?: string;
|
|
158
|
+
footer?: string;
|
|
159
|
+
}
|
|
160
|
+
export interface TransformResult {
|
|
161
|
+
code: string;
|
|
162
|
+
map: string;
|
|
163
|
+
warnings: Message[];
|
|
164
|
+
}
|
|
165
|
+
export interface TransformFailure extends Error {
|
|
166
|
+
errors: Message[];
|
|
167
|
+
warnings: Message[];
|
|
168
|
+
}
|
|
169
|
+
export interface Plugin {
|
|
170
|
+
name: string;
|
|
171
|
+
setup: (build: PluginBuild) => (void | Promise<void>);
|
|
172
|
+
}
|
|
173
|
+
export interface PluginBuild {
|
|
174
|
+
initialOptions: BuildOptions;
|
|
175
|
+
onStart(callback: () => (OnStartResult | null | void | Promise<OnStartResult | null | void>)): void;
|
|
176
|
+
onEnd(callback: (result: BuildResult) => (void | Promise<void>)): void;
|
|
177
|
+
onResolve(options: OnResolveOptions, callback: (args: OnResolveArgs) => (OnResolveResult | null | undefined | Promise<OnResolveResult | null | undefined>)): void;
|
|
178
|
+
onLoad(options: OnLoadOptions, callback: (args: OnLoadArgs) => (OnLoadResult | null | undefined | Promise<OnLoadResult | null | undefined>)): void;
|
|
179
|
+
}
|
|
180
|
+
export interface OnStartResult {
|
|
181
|
+
errors?: PartialMessage[];
|
|
182
|
+
warnings?: PartialMessage[];
|
|
183
|
+
}
|
|
184
|
+
export interface OnResolveOptions {
|
|
185
|
+
filter: RegExp;
|
|
186
|
+
namespace?: string;
|
|
187
|
+
}
|
|
188
|
+
export interface OnResolveArgs {
|
|
189
|
+
path: string;
|
|
190
|
+
importer: string;
|
|
191
|
+
namespace: string;
|
|
192
|
+
resolveDir: string;
|
|
193
|
+
kind: ImportKind;
|
|
194
|
+
pluginData: any;
|
|
195
|
+
}
|
|
196
|
+
export declare type ImportKind = 'entry-point' | 'import-statement' | 'require-call' | 'dynamic-import' | 'require-resolve' | 'import-rule' | 'url-token';
|
|
197
|
+
export interface OnResolveResult {
|
|
198
|
+
pluginName?: string;
|
|
199
|
+
errors?: PartialMessage[];
|
|
200
|
+
warnings?: PartialMessage[];
|
|
201
|
+
path?: string;
|
|
202
|
+
external?: boolean;
|
|
203
|
+
sideEffects?: boolean;
|
|
204
|
+
namespace?: string;
|
|
205
|
+
pluginData?: any;
|
|
206
|
+
watchFiles?: string[];
|
|
207
|
+
watchDirs?: string[];
|
|
208
|
+
}
|
|
209
|
+
export interface OnLoadOptions {
|
|
210
|
+
filter: RegExp;
|
|
211
|
+
namespace?: string;
|
|
212
|
+
}
|
|
213
|
+
export interface OnLoadArgs {
|
|
214
|
+
path: string;
|
|
215
|
+
namespace: string;
|
|
216
|
+
pluginData: any;
|
|
217
|
+
}
|
|
218
|
+
export interface OnLoadResult {
|
|
219
|
+
pluginName?: string;
|
|
220
|
+
errors?: PartialMessage[];
|
|
221
|
+
warnings?: PartialMessage[];
|
|
222
|
+
contents?: string | Uint8Array;
|
|
223
|
+
resolveDir?: string;
|
|
224
|
+
loader?: Loader;
|
|
225
|
+
pluginData?: any;
|
|
226
|
+
watchFiles?: string[];
|
|
227
|
+
watchDirs?: string[];
|
|
228
|
+
}
|
|
229
|
+
export interface PartialMessage {
|
|
230
|
+
pluginName?: string;
|
|
231
|
+
text?: string;
|
|
232
|
+
location?: Partial<Location> | null;
|
|
233
|
+
notes?: PartialNote[];
|
|
234
|
+
detail?: any;
|
|
235
|
+
}
|
|
236
|
+
export interface PartialNote {
|
|
237
|
+
text?: string;
|
|
238
|
+
location?: Partial<Location> | null;
|
|
239
|
+
}
|
|
240
|
+
export interface Metafile {
|
|
241
|
+
inputs: {
|
|
242
|
+
[path: string]: {
|
|
243
|
+
bytes: number;
|
|
244
|
+
imports: {
|
|
245
|
+
path: string;
|
|
246
|
+
kind: ImportKind;
|
|
247
|
+
}[];
|
|
248
|
+
};
|
|
249
|
+
};
|
|
250
|
+
outputs: {
|
|
251
|
+
[path: string]: {
|
|
252
|
+
bytes: number;
|
|
253
|
+
inputs: {
|
|
254
|
+
[path: string]: {
|
|
255
|
+
bytesInOutput: number;
|
|
256
|
+
};
|
|
257
|
+
};
|
|
258
|
+
imports: {
|
|
259
|
+
path: string;
|
|
260
|
+
kind: ImportKind;
|
|
261
|
+
}[];
|
|
262
|
+
exports: string[];
|
|
263
|
+
entryPoint?: string;
|
|
264
|
+
};
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
export interface FormatMessagesOptions {
|
|
268
|
+
kind: 'error' | 'warning';
|
|
269
|
+
color?: boolean;
|
|
270
|
+
terminalWidth?: number;
|
|
271
|
+
}
|
|
272
|
+
export interface AnalyzeMetafileOptions {
|
|
273
|
+
color?: boolean;
|
|
274
|
+
verbose?: boolean;
|
|
275
|
+
}
|
|
276
|
+
export declare function build(options: BuildOptions & {
|
|
277
|
+
write: false;
|
|
278
|
+
}): Promise<BuildResult & {
|
|
279
|
+
outputFiles: OutputFile[];
|
|
280
|
+
}>;
|
|
281
|
+
export declare function build(options: BuildOptions & {
|
|
282
|
+
incremental: true;
|
|
283
|
+
}): Promise<BuildIncremental>;
|
|
284
|
+
export declare function build(options: BuildOptions): Promise<BuildResult>;
|
|
285
|
+
export declare function serve(serveOptions: ServeOptions, buildOptions: BuildOptions): Promise<ServeResult>;
|
|
286
|
+
export declare function transform(input: string, options?: TransformOptions): Promise<TransformResult>;
|
|
287
|
+
export declare function formatMessages(messages: PartialMessage[], options: FormatMessagesOptions): Promise<string[]>;
|
|
288
|
+
export declare function analyzeMetafile(metafile: Metafile | string, options?: AnalyzeMetafileOptions): Promise<string>;
|
|
289
|
+
export declare function buildSync(options: BuildOptions & {
|
|
290
|
+
write: false;
|
|
291
|
+
}): BuildResult & {
|
|
292
|
+
outputFiles: OutputFile[];
|
|
293
|
+
};
|
|
294
|
+
export declare function buildSync(options: BuildOptions): BuildResult;
|
|
295
|
+
export declare function transformSync(input: string, options?: TransformOptions): TransformResult;
|
|
296
|
+
export declare function formatMessagesSync(messages: PartialMessage[], options: FormatMessagesOptions): string[];
|
|
297
|
+
export declare function analyzeMetafileSync(metafile: Metafile | string, options?: AnalyzeMetafileOptions): string;
|
|
298
|
+
export declare function initialize(options: InitializeOptions): Promise<void>;
|
|
299
|
+
export interface InitializeOptions {
|
|
300
|
+
wasmURL?: string;
|
|
301
|
+
worker?: boolean;
|
|
302
|
+
}
|
|
303
|
+
export declare let version: string;
|
|
304
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.version = void 0;
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNidWlsZC10eXBlcy1yYXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXNidWlsZC10eXBlcy1yYXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFBsYXRmb3JtID0gJ2Jyb3dzZXInIHwgJ25vZGUnIHwgJ25ldXRyYWwnO1xuZXhwb3J0IHR5cGUgRm9ybWF0ID0gJ2lpZmUnIHwgJ2NqcycgfCAnZXNtJztcbmV4cG9ydCB0eXBlIExvYWRlciA9ICdqcycgfCAnanN4JyB8ICd0cycgfCAndHN4JyB8ICdjc3MnIHwgJ2pzb24nIHwgJ3RleHQnIHwgJ2Jhc2U2NCcgfCAnZmlsZScgfCAnZGF0YXVybCcgfCAnYmluYXJ5JyB8ICdkZWZhdWx0JztcbmV4cG9ydCB0eXBlIExvZ0xldmVsID0gJ3ZlcmJvc2UnIHwgJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuaW5nJyB8ICdlcnJvcicgfCAnc2lsZW50JztcbmV4cG9ydCB0eXBlIENoYXJzZXQgPSAnYXNjaWknIHwgJ3V0ZjgnO1xuXG5pbnRlcmZhY2UgQ29tbW9uT3B0aW9ucyB7XG4gIHNvdXJjZW1hcD86IGJvb2xlYW4gfCAnaW5saW5lJyB8ICdleHRlcm5hbCcgfCAnYm90aCc7XG4gIGxlZ2FsQ29tbWVudHM/OiAnbm9uZScgfCAnaW5saW5lJyB8ICdlb2YnIHwgJ2xpbmtlZCcgfCAnZXh0ZXJuYWwnO1xuICBzb3VyY2VSb290Pzogc3RyaW5nO1xuICBzb3VyY2VzQ29udGVudD86IGJvb2xlYW47XG5cbiAgZm9ybWF0PzogRm9ybWF0O1xuICBnbG9iYWxOYW1lPzogc3RyaW5nO1xuICB0YXJnZXQ/OiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICBtaW5pZnk/OiBib29sZWFuO1xuICBtaW5pZnlXaGl0ZXNwYWNlPzogYm9vbGVhbjtcbiAgbWluaWZ5SWRlbnRpZmllcnM/OiBib29sZWFuO1xuICBtaW5pZnlTeW50YXg/OiBib29sZWFuO1xuICBjaGFyc2V0PzogQ2hhcnNldDtcbiAgdHJlZVNoYWtpbmc/OiBib29sZWFuO1xuICBpZ25vcmVBbm5vdGF0aW9ucz86IGJvb2xlYW47XG5cbiAganN4PzogJ3RyYW5zZm9ybScgfCAncHJlc2VydmUnO1xuICBqc3hGYWN0b3J5Pzogc3RyaW5nO1xuICBqc3hGcmFnbWVudD86IHN0cmluZztcblxuICBkZWZpbmU/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICBwdXJlPzogc3RyaW5nW107XG4gIGtlZXBOYW1lcz86IGJvb2xlYW47XG5cbiAgY29sb3I/OiBib29sZWFuO1xuICBsb2dMZXZlbD86IExvZ0xldmVsO1xuICBsb2dMaW1pdD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZE9wdGlvbnMgZXh0ZW5kcyBDb21tb25PcHRpb25zIHtcbiAgYnVuZGxlPzogYm9vbGVhbjtcbiAgc3BsaXR0aW5nPzogYm9vbGVhbjtcbiAgcHJlc2VydmVTeW1saW5rcz86IGJvb2xlYW47XG4gIG91dGZpbGU/OiBzdHJpbmc7XG4gIG1ldGFmaWxlPzogYm9vbGVhbjtcbiAgb3V0ZGlyPzogc3RyaW5nO1xuICBvdXRiYXNlPzogc3RyaW5nO1xuICBwbGF0Zm9ybT86IFBsYXRmb3JtO1xuICBleHRlcm5hbD86IHN0cmluZ1tdO1xuICBsb2FkZXI/OiB7IFtleHQ6IHN0cmluZ106IExvYWRlciB9O1xuICByZXNvbHZlRXh0ZW5zaW9ucz86IHN0cmluZ1tdO1xuICBtYWluRmllbGRzPzogc3RyaW5nW107XG4gIGNvbmRpdGlvbnM/OiBzdHJpbmdbXTtcbiAgd3JpdGU/OiBib29sZWFuO1xuICBhbGxvd092ZXJ3cml0ZT86IGJvb2xlYW47XG4gIHRzY29uZmlnPzogc3RyaW5nO1xuICBvdXRFeHRlbnNpb24/OiB7IFtleHQ6IHN0cmluZ106IHN0cmluZyB9O1xuICBwdWJsaWNQYXRoPzogc3RyaW5nO1xuICBlbnRyeU5hbWVzPzogc3RyaW5nO1xuICBjaHVua05hbWVzPzogc3RyaW5nO1xuICBhc3NldE5hbWVzPzogc3RyaW5nO1xuICBpbmplY3Q/OiBzdHJpbmdbXTtcbiAgYmFubmVyPzogeyBbdHlwZTogc3RyaW5nXTogc3RyaW5nIH07XG4gIGZvb3Rlcj86IHsgW3R5cGU6IHN0cmluZ106IHN0cmluZyB9O1xuICBpbmNyZW1lbnRhbD86IGJvb2xlYW47XG4gIGVudHJ5UG9pbnRzPzogc3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBzdGRpbj86IFN0ZGluT3B0aW9ucztcbiAgcGx1Z2lucz86IFBsdWdpbltdO1xuICBhYnNXb3JraW5nRGlyPzogc3RyaW5nO1xuICBub2RlUGF0aHM/OiBzdHJpbmdbXTsgLy8gVGhlIFwiTk9ERV9QQVRIXCIgdmFyaWFibGUgZnJvbSBOb2RlLmpzXG4gIHdhdGNoPzogYm9vbGVhbiB8IFdhdGNoTW9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXYXRjaE1vZGUge1xuICBvblJlYnVpbGQ/OiAoZXJyb3I6IEJ1aWxkRmFpbHVyZSB8IG51bGwsIHJlc3VsdDogQnVpbGRSZXN1bHQgfCBudWxsKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0ZGluT3B0aW9ucyB7XG4gIGNvbnRlbnRzOiBzdHJpbmc7XG4gIHJlc29sdmVEaXI/OiBzdHJpbmc7XG4gIHNvdXJjZWZpbGU/OiBzdHJpbmc7XG4gIGxvYWRlcj86IExvYWRlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlIHtcbiAgcGx1Z2luTmFtZTogc3RyaW5nO1xuICB0ZXh0OiBzdHJpbmc7XG4gIGxvY2F0aW9uOiBMb2NhdGlvbiB8IG51bGw7XG4gIG5vdGVzOiBOb3RlW107XG5cbiAgLy8gT3B0aW9uYWwgdXNlci1zcGVjaWZpZWQgZGF0YSB0aGF0IGlzIHBhc3NlZCB0aHJvdWdoIHVubW9kaWZpZWQuIFlvdSBjYW5cbiAgLy8gdXNlIHRoaXMgdG8gc3Rhc2ggdGhlIG9yaWdpbmFsIGVycm9yLCBmb3IgZXhhbXBsZS5cbiAgZGV0YWlsOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90ZSB7XG4gIHRleHQ6IHN0cmluZztcbiAgbG9jYXRpb246IExvY2F0aW9uIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2NhdGlvbiB7XG4gIGZpbGU6IHN0cmluZztcbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIGxpbmU6IG51bWJlcjsgLy8gMS1iYXNlZFxuICBjb2x1bW46IG51bWJlcjsgLy8gMC1iYXNlZCwgaW4gYnl0ZXNcbiAgbGVuZ3RoOiBudW1iZXI7IC8vIGluIGJ5dGVzXG4gIGxpbmVUZXh0OiBzdHJpbmc7XG4gIHN1Z2dlc3Rpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXRGaWxlIHtcbiAgcGF0aDogc3RyaW5nO1xuICBjb250ZW50czogVWludDhBcnJheTsgLy8gXCJ0ZXh0XCIgYXMgYnl0ZXNcbiAgdGV4dDogc3RyaW5nOyAvLyBcImNvbnRlbnRzXCIgYXMgdGV4dFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkSW52YWxpZGF0ZSB7XG4gICgpOiBQcm9taXNlPEJ1aWxkSW5jcmVtZW50YWw+O1xuICBkaXNwb3NlKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRJbmNyZW1lbnRhbCBleHRlbmRzIEJ1aWxkUmVzdWx0IHtcbiAgcmVidWlsZDogQnVpbGRJbnZhbGlkYXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkUmVzdWx0IHtcbiAgZXJyb3JzOiBNZXNzYWdlW107XG4gIHdhcm5pbmdzOiBNZXNzYWdlW107XG4gIG91dHB1dEZpbGVzPzogT3V0cHV0RmlsZVtdOyAvLyBPbmx5IHdoZW4gXCJ3cml0ZTogZmFsc2VcIlxuICByZWJ1aWxkPzogQnVpbGRJbnZhbGlkYXRlOyAvLyBPbmx5IHdoZW4gXCJpbmNyZW1lbnRhbDogdHJ1ZVwiXG4gIHN0b3A/OiAoKSA9PiB2b2lkOyAvLyBPbmx5IHdoZW4gXCJ3YXRjaDogdHJ1ZVwiXG4gIG1ldGFmaWxlPzogTWV0YWZpbGU7IC8vIE9ubHkgd2hlbiBcIm1ldGFmaWxlOiB0cnVlXCJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZEZhaWx1cmUgZXh0ZW5kcyBFcnJvciB7XG4gIGVycm9yczogTWVzc2FnZVtdO1xuICB3YXJuaW5nczogTWVzc2FnZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlT3B0aW9ucyB7XG4gIHBvcnQ/OiBudW1iZXI7XG4gIGhvc3Q/OiBzdHJpbmc7XG4gIHNlcnZlZGlyPzogc3RyaW5nO1xuICBvblJlcXVlc3Q/OiAoYXJnczogU2VydmVPblJlcXVlc3RBcmdzKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlT25SZXF1ZXN0QXJncyB7XG4gIHJlbW90ZUFkZHJlc3M6IHN0cmluZztcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgc3RhdHVzOiBudW1iZXI7XG4gIHRpbWVJbk1TOiBudW1iZXI7IC8vIFRoZSB0aW1lIHRvIGdlbmVyYXRlIHRoZSByZXNwb25zZSwgbm90IHRvIHNlbmQgaXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZVJlc3VsdCB7XG4gIHBvcnQ6IG51bWJlcjtcbiAgaG9zdDogc3RyaW5nO1xuICB3YWl0OiBQcm9taXNlPHZvaWQ+O1xuICBzdG9wOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZm9ybU9wdGlvbnMgZXh0ZW5kcyBDb21tb25PcHRpb25zIHtcbiAgdHNjb25maWdSYXc/OiBzdHJpbmcgfCB7XG4gICAgY29tcGlsZXJPcHRpb25zPzoge1xuICAgICAganN4RmFjdG9yeT86IHN0cmluZztcbiAgICAgIGpzeEZyYWdtZW50RmFjdG9yeT86IHN0cmluZztcbiAgICAgIHVzZURlZmluZUZvckNsYXNzRmllbGRzPzogYm9vbGVhbjtcbiAgICAgIGltcG9ydHNOb3RVc2VkQXNWYWx1ZXM/OiAncmVtb3ZlJyB8ICdwcmVzZXJ2ZScgfCAnZXJyb3InO1xuICAgIH07XG4gIH07XG5cbiAgc291cmNlZmlsZT86IHN0cmluZztcbiAgbG9hZGVyPzogTG9hZGVyO1xuICBiYW5uZXI/OiBzdHJpbmc7XG4gIGZvb3Rlcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2Zvcm1SZXN1bHQge1xuICBjb2RlOiBzdHJpbmc7XG4gIG1hcDogc3RyaW5nO1xuICB3YXJuaW5nczogTWVzc2FnZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZm9ybUZhaWx1cmUgZXh0ZW5kcyBFcnJvciB7XG4gIGVycm9yczogTWVzc2FnZVtdO1xuICB3YXJuaW5nczogTWVzc2FnZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgc2V0dXA6IChidWlsZDogUGx1Z2luQnVpbGQpID0+ICh2b2lkIHwgUHJvbWlzZTx2b2lkPik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luQnVpbGQge1xuICBpbml0aWFsT3B0aW9uczogQnVpbGRPcHRpb25zO1xuICBvblN0YXJ0KGNhbGxiYWNrOiAoKSA9PlxuICAoT25TdGFydFJlc3VsdCB8IG51bGwgfCB2b2lkIHwgUHJvbWlzZTxPblN0YXJ0UmVzdWx0IHwgbnVsbCB8IHZvaWQ+KSk6IHZvaWQ7XG4gIG9uRW5kKGNhbGxiYWNrOiAocmVzdWx0OiBCdWlsZFJlc3VsdCkgPT5cbiAgKHZvaWQgfCBQcm9taXNlPHZvaWQ+KSk6IHZvaWQ7XG4gIG9uUmVzb2x2ZShvcHRpb25zOiBPblJlc29sdmVPcHRpb25zLCBjYWxsYmFjazogKGFyZ3M6IE9uUmVzb2x2ZUFyZ3MpID0+XG4gIChPblJlc29sdmVSZXN1bHQgfCBudWxsIHwgdW5kZWZpbmVkIHwgUHJvbWlzZTxPblJlc29sdmVSZXN1bHQgfCBudWxsIHwgdW5kZWZpbmVkPikpOiB2b2lkO1xuICBvbkxvYWQob3B0aW9uczogT25Mb2FkT3B0aW9ucywgY2FsbGJhY2s6IChhcmdzOiBPbkxvYWRBcmdzKSA9PlxuICAoT25Mb2FkUmVzdWx0IHwgbnVsbCB8IHVuZGVmaW5lZCB8IFByb21pc2U8T25Mb2FkUmVzdWx0IHwgbnVsbCB8IHVuZGVmaW5lZD4pKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPblN0YXJ0UmVzdWx0IHtcbiAgZXJyb3JzPzogUGFydGlhbE1lc3NhZ2VbXTtcbiAgd2FybmluZ3M/OiBQYXJ0aWFsTWVzc2FnZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9uUmVzb2x2ZU9wdGlvbnMge1xuICBmaWx0ZXI6IFJlZ0V4cDtcbiAgbmFtZXNwYWNlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9uUmVzb2x2ZUFyZ3Mge1xuICBwYXRoOiBzdHJpbmc7XG4gIGltcG9ydGVyOiBzdHJpbmc7XG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICByZXNvbHZlRGlyOiBzdHJpbmc7XG4gIGtpbmQ6IEltcG9ydEtpbmQ7XG4gIHBsdWdpbkRhdGE6IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgSW1wb3J0S2luZCA9XG4gIHwgJ2VudHJ5LXBvaW50J1xuXG4gIC8vIEpTXG4gIHwgJ2ltcG9ydC1zdGF0ZW1lbnQnXG4gIHwgJ3JlcXVpcmUtY2FsbCdcbiAgfCAnZHluYW1pYy1pbXBvcnQnXG4gIHwgJ3JlcXVpcmUtcmVzb2x2ZSdcblxuICAvLyBDU1NcbiAgfCAnaW1wb3J0LXJ1bGUnXG4gIHwgJ3VybC10b2tlbidcblxuZXhwb3J0IGludGVyZmFjZSBPblJlc29sdmVSZXN1bHQge1xuICBwbHVnaW5OYW1lPzogc3RyaW5nO1xuXG4gIGVycm9ycz86IFBhcnRpYWxNZXNzYWdlW107XG4gIHdhcm5pbmdzPzogUGFydGlhbE1lc3NhZ2VbXTtcblxuICBwYXRoPzogc3RyaW5nO1xuICBleHRlcm5hbD86IGJvb2xlYW47XG4gIHNpZGVFZmZlY3RzPzogYm9vbGVhbjtcbiAgbmFtZXNwYWNlPzogc3RyaW5nO1xuICBwbHVnaW5EYXRhPzogYW55O1xuXG4gIHdhdGNoRmlsZXM/OiBzdHJpbmdbXTtcbiAgd2F0Y2hEaXJzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25Mb2FkT3B0aW9ucyB7XG4gIGZpbHRlcjogUmVnRXhwO1xuICBuYW1lc3BhY2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25Mb2FkQXJncyB7XG4gIHBhdGg6IHN0cmluZztcbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIHBsdWdpbkRhdGE6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbkxvYWRSZXN1bHQge1xuICBwbHVnaW5OYW1lPzogc3RyaW5nO1xuXG4gIGVycm9ycz86IFBhcnRpYWxNZXNzYWdlW107XG4gIHdhcm5pbmdzPzogUGFydGlhbE1lc3NhZ2VbXTtcblxuICBjb250ZW50cz86IHN0cmluZyB8IFVpbnQ4QXJyYXk7XG4gIHJlc29sdmVEaXI/OiBzdHJpbmc7XG4gIGxvYWRlcj86IExvYWRlcjtcbiAgcGx1Z2luRGF0YT86IGFueTtcblxuICB3YXRjaEZpbGVzPzogc3RyaW5nW107XG4gIHdhdGNoRGlycz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnRpYWxNZXNzYWdlIHtcbiAgcGx1Z2luTmFtZT86IHN0cmluZztcbiAgdGV4dD86IHN0cmluZztcbiAgbG9jYXRpb24/OiBQYXJ0aWFsPExvY2F0aW9uPiB8IG51bGw7XG4gIG5vdGVzPzogUGFydGlhbE5vdGVbXTtcbiAgZGV0YWlsPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnRpYWxOb3RlIHtcbiAgdGV4dD86IHN0cmluZztcbiAgbG9jYXRpb24/OiBQYXJ0aWFsPExvY2F0aW9uPiB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWZpbGUge1xuICBpbnB1dHM6IHtcbiAgICBbcGF0aDogc3RyaW5nXToge1xuICAgICAgYnl0ZXM6IG51bWJlcjtcbiAgICAgIGltcG9ydHM6IHtcbiAgICAgICAgcGF0aDogc3RyaW5nO1xuICAgICAgICBraW5kOiBJbXBvcnRLaW5kO1xuICAgICAgfVtdO1xuICAgIH07XG4gIH07XG4gIG91dHB1dHM6IHtcbiAgICBbcGF0aDogc3RyaW5nXToge1xuICAgICAgYnl0ZXM6IG51bWJlcjtcbiAgICAgIGlucHV0czoge1xuICAgICAgICBbcGF0aDogc3RyaW5nXToge1xuICAgICAgICAgIGJ5dGVzSW5PdXRwdXQ6IG51bWJlcjtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBpbXBvcnRzOiB7XG4gICAgICAgIHBhdGg6IHN0cmluZztcbiAgICAgICAga2luZDogSW1wb3J0S2luZDtcbiAgICAgIH1bXTtcbiAgICAgIGV4cG9ydHM6IHN0cmluZ1tdO1xuICAgICAgZW50cnlQb2ludD86IHN0cmluZztcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdE1lc3NhZ2VzT3B0aW9ucyB7XG4gIGtpbmQ6ICdlcnJvcicgfCAnd2FybmluZyc7XG4gIGNvbG9yPzogYm9vbGVhbjtcbiAgdGVybWluYWxXaWR0aD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbmFseXplTWV0YWZpbGVPcHRpb25zIHtcbiAgY29sb3I/OiBib29sZWFuO1xuICB2ZXJib3NlPzogYm9vbGVhbjtcbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpbnZva2VzIHRoZSBcImVzYnVpbGRcIiBjb21tYW5kLWxpbmUgdG9vbCBmb3IgeW91LiBJdCByZXR1cm5zIGFcbi8vIHByb21pc2UgdGhhdCBlaXRoZXIgcmVzb2x2ZXMgd2l0aCBhIFwiQnVpbGRSZXN1bHRcIiBvYmplY3Qgb3IgcmVqZWN0cyB3aXRoIGFcbi8vIFwiQnVpbGRGYWlsdXJlXCIgb2JqZWN0LlxuLy9cbi8vIFdvcmtzIGluIG5vZGU6IHllc1xuLy8gV29ya3MgaW4gYnJvd3NlcjogeWVzXG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBidWlsZChvcHRpb25zOiBCdWlsZE9wdGlvbnMgJiB7IHdyaXRlOiBmYWxzZSB9KTogUHJvbWlzZTxCdWlsZFJlc3VsdCAmIHsgb3V0cHV0RmlsZXM6IE91dHB1dEZpbGVbXSB9PjtcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGJ1aWxkKG9wdGlvbnM6IEJ1aWxkT3B0aW9ucyAmIHsgaW5jcmVtZW50YWw6IHRydWUgfSk6IFByb21pc2U8QnVpbGRJbmNyZW1lbnRhbD47XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBidWlsZChvcHRpb25zOiBCdWlsZE9wdGlvbnMpOiBQcm9taXNlPEJ1aWxkUmVzdWx0PjtcblxuLy8gVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIFwiYnVpbGRcIiBidXQgaXQgc2VydmVzIHRoZSByZXN1bHRpbmcgZmlsZXMgb3ZlclxuLy8gSFRUUCBvbiBhIGxvY2FsaG9zdCBhZGRyZXNzIHdpdGggdGhlIHNwZWNpZmllZCBwb3J0LlxuLy9cbi8vIFdvcmtzIGluIG5vZGU6IHllc1xuLy8gV29ya3MgaW4gYnJvd3Nlcjogbm9cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHNlcnZlKHNlcnZlT3B0aW9uczogU2VydmVPcHRpb25zLCBidWlsZE9wdGlvbnM6IEJ1aWxkT3B0aW9ucyk6IFByb21pc2U8U2VydmVSZXN1bHQ+O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHRyYW5zZm9ybXMgYSBzaW5nbGUgSmF2YVNjcmlwdCBmaWxlLiBJdCBjYW4gYmUgdXNlZCB0byBtaW5pZnlcbi8vIEphdmFTY3JpcHQsIGNvbnZlcnQgVHlwZVNjcmlwdC9KU1ggdG8gSmF2YVNjcmlwdCwgb3IgY29udmVydCBuZXdlciBKYXZhU2NyaXB0XG4vLyB0byBvbGRlciBKYXZhU2NyaXB0LiBJdCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGlzIGVpdGhlciByZXNvbHZlZCB3aXRoIGFcbi8vIFwiVHJhbnNmb3JtUmVzdWx0XCIgb2JqZWN0IG9yIHJlamVjdGVkIHdpdGggYSBcIlRyYW5zZm9ybUZhaWx1cmVcIiBvYmplY3QuXG4vL1xuLy8gV29ya3MgaW4gbm9kZTogeWVzXG4vLyBXb3JrcyBpbiBicm93c2VyOiB5ZXNcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHRyYW5zZm9ybShpbnB1dDogc3RyaW5nLCBvcHRpb25zPzogVHJhbnNmb3JtT3B0aW9ucyk6IFByb21pc2U8VHJhbnNmb3JtUmVzdWx0PjtcblxuLy8gQ29udmVydHMgbG9nIG1lc3NhZ2VzIHRvIGZvcm1hdHRlZCBtZXNzYWdlIHN0cmluZ3Mgc3VpdGFibGUgZm9yIHByaW50aW5nIGluXG4vLyB0aGUgdGVybWluYWwuIFRoaXMgYWxsb3dzIHlvdSB0byByZXVzZSB0aGUgYnVpbHQtaW4gYmVoYXZpb3Igb2YgZXNidWlsZCdzXG4vLyBsb2cgbWVzc2FnZSBmb3JtYXR0ZXIuIFRoaXMgaXMgYSBiYXRjaC1vcmllbnRlZCBBUEkgZm9yIGVmZmljaWVuY3kuXG4vL1xuLy8gV29ya3MgaW4gbm9kZTogeWVzXG4vLyBXb3JrcyBpbiBicm93c2VyOiB5ZXNcbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGZvcm1hdE1lc3NhZ2VzKG1lc3NhZ2VzOiBQYXJ0aWFsTWVzc2FnZVtdLCBvcHRpb25zOiBGb3JtYXRNZXNzYWdlc09wdGlvbnMpOiBQcm9taXNlPHN0cmluZ1tdPjtcblxuLy8gUHJldHR5LXByaW50cyBhbiBhbmFseXNpcyBvZiB0aGUgbWV0YWZpbGUgSlNPTiB0byBhIHN0cmluZy4gVGhpcyBpcyBqdXN0IGZvclxuLy8gY29udmVuaWVuY2UgdG8gYmUgYWJsZSB0byBtYXRjaCBlc2J1aWxkJ3MgcHJldHR5LXByaW50aW5nIGV4YWN0bHkuIElmIHlvdSB3YW50XG4vLyB0byBjdXN0b21pemUgaXQsIHlvdSBjYW4ganVzdCBpbnNwZWN0IHRoZSBkYXRhIGluIHRoZSBtZXRhZmlsZSB5b3Vyc2VsZi5cbi8vXG4vLyBXb3JrcyBpbiBub2RlOiB5ZXNcbi8vIFdvcmtzIGluIGJyb3dzZXI6IHllc1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gYW5hbHl6ZU1ldGFmaWxlKG1ldGFmaWxlOiBNZXRhZmlsZSB8IHN0cmluZywgb3B0aW9ucz86IEFuYWx5emVNZXRhZmlsZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz47XG5cbi8vIEEgc3luY2hyb25vdXMgdmVyc2lvbiBvZiBcImJ1aWxkXCIuXG4vL1xuLy8gV29ya3MgaW4gbm9kZTogeWVzXG4vLyBXb3JrcyBpbiBicm93c2VyOiBub1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gYnVpbGRTeW5jKG9wdGlvbnM6IEJ1aWxkT3B0aW9ucyAmIHsgd3JpdGU6IGZhbHNlIH0pOiBCdWlsZFJlc3VsdCAmIHsgb3V0cHV0RmlsZXM6IE91dHB1dEZpbGVbXSB9O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gYnVpbGRTeW5jKG9wdGlvbnM6IEJ1aWxkT3B0aW9ucyk6IEJ1aWxkUmVzdWx0O1xuXG4vLyBBIHN5bmNocm9ub3VzIHZlcnNpb24gb2YgXCJ0cmFuc2Zvcm1cIi5cbi8vXG4vLyBXb3JrcyBpbiBub2RlOiB5ZXNcbi8vIFdvcmtzIGluIGJyb3dzZXI6IG5vXG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB0cmFuc2Zvcm1TeW5jKGlucHV0OiBzdHJpbmcsIG9wdGlvbnM/OiBUcmFuc2Zvcm1PcHRpb25zKTogVHJhbnNmb3JtUmVzdWx0O1xuXG4vLyBBIHN5bmNocm9ub3VzIHZlcnNpb24gb2YgXCJmb3JtYXRNZXNzYWdlc1wiLlxuLy9cbi8vIFdvcmtzIGluIG5vZGU6IHllc1xuLy8gV29ya3MgaW4gYnJvd3Nlcjogbm9cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGZvcm1hdE1lc3NhZ2VzU3luYyhtZXNzYWdlczogUGFydGlhbE1lc3NhZ2VbXSwgb3B0aW9uczogRm9ybWF0TWVzc2FnZXNPcHRpb25zKTogc3RyaW5nW107XG5cbi8vIEEgc3luY2hyb25vdXMgdmVyc2lvbiBvZiBcImFuYWx5emVNZXRhZmlsZVwiLlxuLy9cbi8vIFdvcmtzIGluIG5vZGU6IHllc1xuLy8gV29ya3MgaW4gYnJvd3Nlcjogbm9cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGFuYWx5emVNZXRhZmlsZVN5bmMobWV0YWZpbGU6IE1ldGFmaWxlIHwgc3RyaW5nLCBvcHRpb25zPzogQW5hbHl6ZU1ldGFmaWxlT3B0aW9ucyk6IHN0cmluZztcblxuLy8gVGhpcyBjb25maWd1cmVzIHRoZSBicm93c2VyLWJhc2VkIHZlcnNpb24gb2YgZXNidWlsZC4gSXQgaXMgbmVjZXNzYXJ5IHRvXG4vLyBjYWxsIHRoaXMgZmlyc3QgYW5kIHdhaXQgZm9yIHRoZSByZXR1cm5lZCBwcm9taXNlIHRvIGJlIHJlc29sdmVkIGJlZm9yZVxuLy8gbWFraW5nIG90aGVyIEFQSSBjYWxscyB3aGVuIHVzaW5nIGVzYnVpbGQgaW4gdGhlIGJyb3dzZXIuXG4vL1xuLy8gV29ya3MgaW4gbm9kZTogeWVzXG4vLyBXb3JrcyBpbiBicm93c2VyOiB5ZXMgKFwib3B0aW9uc1wiIGlzIHJlcXVpcmVkKVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gaW5pdGlhbGl6ZShvcHRpb25zOiBJbml0aWFsaXplT3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5pdGlhbGl6ZU9wdGlvbnMge1xuICAvLyBUaGUgVVJMIG9mIHRoZSBcImVzYnVpbGQud2FzbVwiIGZpbGUuIFRoaXMgbXVzdCBiZSBwcm92aWRlZCB3aGVuIHJ1bm5pbmdcbiAgLy8gZXNidWlsZCBpbiB0aGUgYnJvd3Nlci5cbiAgd2FzbVVSTD86IHN0cmluZztcblxuICAvLyBCeSBkZWZhdWx0IGVzYnVpbGQgcnVucyB0aGUgV2ViQXNzZW1ibHktYmFzZWQgYnJvd3NlciBBUEkgaW4gYSB3ZWIgd29ya2VyXG4gIC8vIHRvIGF2b2lkIGJsb2NraW5nIHRoZSBVSSB0aHJlYWQuIFRoaXMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgXCJ3b3JrZXJcIlxuICAvLyB0byBmYWxzZS5cbiAgd29ya2VyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGxldCB2ZXJzaW9uOiBzdHJpbmc7XG4iXX0=
|